古めの iNES のドキュメントがかなりカオス(その2)

昨日の続き。

1年2か月の間に再現性があがり、開発に協力できる人たちが中古屋の隅に転がっていたカートリッジを使用して ROM データが作者の元に大量に届けられたと思われる。

iNES 0.7 (1997年8月)

iNES.doc から抜粋:

                         * CARTRIDGE FILE FORMAT *

  The iNES distribution includes a single cartridge image with a program
allowing to test the emulator. There is also a source code of this program
included. Following is the format of ROM-image files used by iNES (.NES
extension): 

Byte     Contents
                                                                                                                                                        • -
0-3 String "NES^Z" 4 Number of 16kB ROM banks 5 Number of 8kB VROM banks 6 bit 0 1 for vertical mirroring, 0 for horizontal mirroring bit 1 1 for battery-backed RAM at $6000-$7FFF bit 2 1 for a 512-byte trainer at $7000-$71FF bit 3 1 for a four-screen VRAM layout This is only available with certain types of mappers, for example type #1 (BoulderDash) and type #5 (Castlevania3). bit 4-7 Four lower bits of ROM Mapper Type 7 bit 0-3 Reserved, must be zeroes! bit 4-7 Four higher bits of ROM Mapper Type 8-15 Reserved, must be zeroes! 16-... ROM banks, in ascending order. If a trainer is present, its 512 bytes precede the ROM bank contents. ...-EOF VROM banks, in ascending order.
                                                                                                                                                        • -

mapper type が 4bit から 8bit に拡張され、256通りの値を持つことが出来るようになった。reserved と記載された部分は 0 で埋めるように明言された。一般的に流通している NES ファイルの仕様は1996年6月から1997年8月の間に策定されたようだ。

明言されなかった期間は reserved 領域に通信欄として文字列をいれる遊び(?)が横行したようだ。拡張するときに新しく新設する領域に不定な値が入っていてはちゃんと動かすことが出来ない。

8bit に拡張された mapper type は日本からの情報提供があったのか、ほとんどが日本だけのものを追加していたようだ。

Mapper#  Name                  Examples
                                                                                                                                                        • -
0 No mapper All 32kB ROM + 8kB VROM games 1 Nintendo MMC1 Megaman2, Bomberman2, etc. 2 Simple ROM switch Castlevania, LifeForce, many games hacked for use with FFE copier 3 Simple VROM switch QBert, PipeDream, Cybernoid, many Japanese games 4 Nintendo MMC3 SilverSurfer, SuperContra, Immortal, etc. 5 Nintendo MMC5 Castlevania3 6 FFE F4xxx F4xxx games off FFE CDROM 7 32kB ROM switch WizardsAndWarriors, Solstice, etc. 8 FFE F3xxx F3xxx games off FFE CDROM 9 - Nintendo MMC2 Punchout 10 Nintendo MMC4 Punchout2 11 ColorDreams chip CrystalMines, TaginDragon, etc. 12 - FFE F6xxx F6xxx games off FFE CDROM 15 100-in-1 switch 100-in-1 cartridge 16 Bandai chip Japanese DragonBallZ series, etc. 17 FFE F8xxx F8xxx games off FFE CDROM 18 Jaleco SS8806 chip Japanese Baseball3, etc. 19 Namcot 106 chip Japanese GhostHouse2, Baseball90, etc. 20 Nintendo DiskSystem Reserved. Don't use this mapper! 21 Konami VRC4 Japanese WaiWaiWorld2, etc. 22 Konami VRC2 (a) Japanese TwinBee3 23 Konami VRC2 (b) Japanese WaiWaiWorld, MoonWindLegend, etc. 24 - Konami VRC6 ??? 32 Irem G-101 chip Japanese ImageFight, etc. 33 Taito TC0190/TC0350 Japanese PowerBlazer 34 32kB ROM switch ImpossibleMission2 and DeadlyTowers
                                                                                                                                                        • -

mapper 2 に "hacked for use with FFE copier" というのがあって、ファイナルファンタジーII の mapper hack data がそれらしい。trainer 付きで、Work RAM 電池付きがあるとからしい。本物の UNROM では無理だが、 UNROM と書いてないのでこの説明では許容している。

mapper 16 から 34 の大半は分解して書いてあるカスタム IC の名前から採番したものと思われる。それ以外の 74161 などの汎用 IC で構成してあるものは mapper hack でなんとかなるからカスタムICは重要度が高いから設定したとか、そういうことではないだろうか。

謎の技術用語, 106


その中に mapper 19 に Namcot 106 chip がでてきた。これが初出かは不明だが、少なくとも1997年には 106 という謎の名称が存在している。

2000年頃には市販のゲームソフトの大半が PC で動くようになり、 NES にはなかったカートリッジからの音声出力も動くようになった。nsf が規定され音だけを抽出することが可能に、mck などで作曲ができるようになった。

音源以外の機能にも混乱は続き、今に至るわけだが、これらは下記が原因となっている。

  • 製造メーカーは一切協力せず、一般ユーザーが勝手に解析した情報を元にしている (こういうことは企業では機密情報です)
  • 分解したところで専用ICがバブルスライム化していて区別できない *1
  • 音源関連でいつの間にか変な信仰ができてしまい、布教が続いている

残りのピースを埋めるのはどうでも良いかもしれない

1996年以前の再現度が 0% から 19% だと仮定する。この期間は資料も揃わず、よくわからない解析をしながら、動かないプログラムをもくもくと書き続ける期間で、開発者にとってはあまり楽しくない期間であると言ってよい。

1996年から1997年なんてものは再現度が 20% から 60% にあがるぐらいの急激なもので、日に日に再現度はあがり、1000以上もあるソフトは次々と動き出す。ユーザーのフィードバックも頻繁になり、開発者はこの時期が一番楽しい。

問題はこれ以降で、開発者によっては満足して終わることがある。仕事では別として、趣味でやるようなプログラミングはそうかもしれない。米国人にとって昔遊んだ NES のゲームが一通り動けば満足で、なじみもなくて文字も読めない日本語のゲームを動かしたいだろうか。日本仕様のゲームを抜いたら再現度は60%ではなく90%と解釈してもよいかもしれない。

そういう心境があったかは別にして、 iNES の開発は停滞化した。

この後、別の開発者たちがエミュレータを作り直したり、未知の仕様には mapper 番号をどんどん新設・採番し、2000年までに再現度は60%から95%にあがった。
残り5%は市販品ではないとか、ものすごく希少とか、動かなくてもどーでもよいいうもので手間がかかるし、動いてもやりがいを感じられないという状態なんだと思う。

*1:以前基板部品実装メーカーの紹介を見てたら正式名称がxxx加工だったけど忘れた