HIKITSUGI2
8.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
1998/10/27
ソースツリーにおける各ディレクトリの管理分担
任天堂株式会社 開発3部 橋田貴之
1. ソースツリーのそれぞれのディレクトリの意味
admin: ソースツリー管理用のツールやドキュメントが入っています。
apps: リリースしていないものも含んだ、サンプルプログラム
apps.released: apps のうち、リリースしているサンプル
as: グラフィックデータを C で表現したもの(を途中までコンパ
イルした中間ファイル?)
assets: サウンド波形データ(リリースしているもの、および 64DD
の DDROM に入っているもの)や 64DD のフォントなど
build: メジャーリリース作成時に使用する
debugger: デバッガに関連するもの(開発ボード時代のもの)
diags: 開発ボードの検査プログラム
doc: 種々のドキュメント
gdb: N64 用の gdb
html: man page の html バージョン(現在は業務部内で管理してい
るため、使用していない)。
include: リリースしているヘッダファイルが格納されているディレク
トリ
kern: 開発ボードの Indy 用デバドラ等
lib: Indy 側のライブラリ、IPL 等
libleo: 64DD のライブラリ
libnaudio: n_audio のライブラリ
libultra: libultra
man: マンページおよび、メジャーリリースのリリースノート等。
このディレクトリの内、現在使用しているのは下記のファイ
ルのみ。
README.release(/usr/src/PR/ 下のディレクトリの説明)
relnotes_jp(ultra のリリースノート)
relnotes_jp.64dd(64dd のリリースノート)
relnotes_jp.naudio(naudio のリリースノート)
rdpsim: RDP のシミュレータ
rdpsim2: 同上
ritest: 何かのテスト用ベリログソース
rspasm: RSP のアセンブラ
rspasm1201: RSP のアセンブラ
rspcode: マイクロコードのソース
rspsim: RSP のシミュレータ
tools: ツール関係(makerom や n64mdisk 等)
下記のディレクトリは、パッチブランチにのみ存在する(「パッチブランチ」
については、このドキュメントの最後に記載されている「用語説明」を参照)
patch: パッチ作成用のツール(SGI, PC 共)、リリースしたパッチ等
2. include/ と libultra/ 以外の各ディレクトリの管理分担
招布が変更してよいもの:
as/
assets/
build/
debugger/
diags/
doc/
gdb/
html/
kern/
lib/ (ただし、IPL4 のソースを除く)
libnaudio/
man/
patch/
ritest/
tools/ (ただし、64DD関連のasccode, byte2lba, calcncc, leowrite, n64mdisk,
ramstart を除く)
開発3部が変更してよいもの:
admin/
lib/BringupBoot/IPL4
libleo/
tools/asccode, byte2lba, calcncc, leowrite, n64mdisk, ramstart
apps.released/voice, reboot, ddspgame
業務部の管轄下にあるもの:
(これらは、業務部の管轄において、変更等を行なう)
rdpsim/
rdpsim2/
rspasm/
rspasm1201/
rspcode/
rspsim/
注意を要するもの:
apps/
apps.released/
(apps.released はマスターソースの中で、apps のシンボリックリンクになっ
ているため、apps の方を通常変更する。apps.released は apps を変更する
と自動的に変更される。)
このディレクトリ下のサンプルの内、
voice/, reboot/, ddspgame/ は3部の管理。
それ以外は招布の管理。
新しいサンプルの追加は自由。追加したあと連絡をする。
3. libultra/ の管理分担
libultra/monegi 招布が変更する
libultra/nintendo 3部が変更する
libultra/shared 変更の際は相談した上で、monegi か nintendo の
ディレクトリに移してから変更する
○現在の monegi, nintendo, shared ディレクトリの構成:
monegi--------------------------------------------------------
ai/ AI の関数(ai の status register を読む等)
audio/ オーディオライブラリ
cache/ キャッシュ操作関係
cont/ コントローラ関係
convert/ 仮想アドレス←→物理アドレス変換
debug/ assert, profile 等
gio/ gio バスをアクセスする関数
gt/ ターボグラフィックスユーティリティ
gu/ グラフィックスユーティリティ
host/ hostio 関連
libc/ ストリング関数、printf 等
log/ ロギング関数
message/ メッセージ関連関数
rdp/ rdp の io 関連関数(status register を読む等)
reg/ CPU のレジスター入出力関数
rg/ リージョン関数
rmon/ rmon
rsp/ rsp の io 関連関数(status register を読む等)
sched/ スケジューラ
si/ si
sprite/ スプライトライブラリ
thread/ スレッド操作関数
time/ time, timer
tlb/ TLB 関連関数
vi/ vi
nintendo-----------------------------------------------------
eeprom/ EEPROM アクセス関数
error/ エラーやフォルトに対応する関数
exception/ 例外ハンドラ等
pi/ pi, epi
voice/ 音声認識
shared--------------------------------------------------------
gbpak/ 64GB パック
motor/ 振動パック
pfs/ コントローラパック
system/ 64OS のイニシャライズ、preNMI 関連等
4. include/ の管理分担
include の下のディレクトリは、旧 os.h が分割され、上記の
monegi, nintendo, shared 下のディレクトリに対応して、
os_ai.h, os_audio.h, ...
といったように細分化されている(新 os.h はこれら細分化されたヘッ
ダファイルを全てインクルードしている)。したがって、ヘッダファ
イルがどの会社の担当かどうかは、対応するディレクトリがどうであ
るかによる。
例えば、現時点であれば、os_ai.h は招布、os_voice.h は3部、と
いった具合いになる。
旧 os_internal.h も細分化されているが、こちらは全部のディレク
トリに対応したヘッダファイルがあるわけではない。必要になった時
点で、責任者同士で相談の上、追加していく。
その他のファイルに関しては、rcp.h のみ3部、その他は招布とする。
ただし、os.h, os_internal.h は要相談とする。
まとめると、
3部が変更してよいもの:
rcp.h
相談した上で変更するもの:
os.h, os_internal.h
ディレクトリの担当に応じて担当が違うもの:
os_***.h, os_internal_***.h
招布が変更して良いもの:
その他全部
5. PC 版について
PC 版の作成と動作確認は、原則として、SGI 版で変更を行った者が行う。
PC 版には、SGI で作成したファイルそのものを使用できる部分と、SGI 版か
ら移植する必要のある部分がある。
○SGI 版と同じファイルを使用するもの
以下のものは SGI で作成したものと同じファイルを用いる。ただし、
PC 版での動作確認は必要となる。
assets/
include/
lib/BringupBoot/IPL4
libleo/
rspcode/
○SGI 版から変更する必要があるもの
以下のものは SGI 版で作成したものから変更する必要がある。しか
し、その変更を最小限に押さえるため、SGI 版作成時から PC 版のこ
とを考慮に入れ、できるだけ共通で使用できるようにするのが望まし
い。
apps/
apps.released/
SGI 版 とは異なる。ただし、ソースは共通なものがほとんど。違い
は、各種コンバータが PC に移植されていないため、コンバートされ
た後の形式でデータを持つようにしていること。Makefile も異なる。
現在、各サンプルのディレクトリで 'make -f PCmake' を実行すると、
apps.pc/ に PC 版サンプルが作成されるようなシステムになってい
る。ただし、reboot のみ未対応。
lib/libultrahost/
PARTNER-PC 用 HostIO ソース。
PC 側のライブラリは、現在京都マイコンで管理。今後は?
libultra/
ソース自体は SGI 版と同じ。Makefile のみ異なる。
tools/
asccode, byte2lba, calcncc, n64mdisk, ramstart のみが対象。こ
れ以外は PC では出していない(makerom, makedisk は mild として
出しているが、mild のソースはソースツリーに入っていない)。
ソース自体は SGI 版と同じ。Makefile のみ異なる。
PC 版(386用) gcc でコンパイルする必要がある。
man/relnotes_jp, relnotes_jp.64dd, relnotes_jp.naudio
メジャーリリース時のリリースノート
man/README.release
/usr/src/PR/ 下のディレクトリ説明のためのドキュメント
○その他(移植が必要なもの)
以下のもの(libnaudio/は除く)は、マイクロコードの開発環境であり、
一般にリリースしているものではないため、PC 版は存在しなくても構わ
ない。PC 版の移植を進めるかどうかは、業務部の管轄。
libnaudio/
rdpsim/
rdpsim2/
rspasm/
rspasm1201/
rspsim/
*注(用語説明)
ブランチについて:
CVS には、「枝分かれ」を管理する機能がある。例えば、リビジョン
1.5 のファイルをリリース後、内部的に 1.7 までバージョンが上がっ
ていたとする(つまり、リリース物の最新は 1.5 だが、内部的には機
能拡張などで、すでに 1.7 になっているとする)。ここで、1.5 と
1.7 共通のバグが発見された場合を考える。1.7 の方にはバグをあて、
これを 1.8 としてツリーに組み入れればよい。では、1.5 にバグを
あてたものはどう管理していくか?という問題が生じる。これを解決
するのが「枝分かれ」の機能。このファイルのリビジョンは 1.5 で
「枝分かれ」をしていると考える。1.5 をバグ修正したものを「枝」
として 1.5.2.1 として管理し、以降、このファイルを修正すると、
リビジョン番号は 1.5.2.2, 1.5.2.3,... と進んでいく。つまり、こ
の時点で、このファイルは 1.8 という「幹」上のリビジョンと、
1.5.2.1 という 1.5 から派生した「枝(ブランチ)」上のリビジョン
の二つが、最新として存在することになる。
パッチブランチ:
ソースツリーには 2.0I から派生した、大きな「ブランチ」が存在す
る。日常のソースツリーの変更は「幹」に対して行なうが、パッチを
リリースする際は、「幹」に加えた変更からリリースするものだけを
取出し、改めて「ブランチ」に組み込んだ上でリリースする。こうす
ることによって、開発者がパッチをあてたあとの環境をソースツリー
上で作り出すことができる。(「幹」上では、リリースしていない変
更を加えたりしているため、ソースツリーの環境と開発者のパッチを
あてたあとの環境は異なってしまう。)
この 2.0I から派生した「ブランチ」を「パッチブランチ」という。