上に戻る
jsr $0000;前書き
概要
 このコンテンツは、「ロックマンX3」を改造するための調査を、思いつきで、行き当たりばったりに、雑にまとめたものです。内容は全て疑ってかかってください。
 私の腕前では、このソフトをまともに改造できるとは思っていないと、あらかじめ申し上げておきます。
条件
 対象となるROMイメージは、ヘッダの無いものを利用します。
 2,097,152バイトであれば問題ありません。
 また、CRC32がE476912Bであるものを利用します。

 実のところこれが正しいのかどうかは知りません。吸った結果こうなったというだけなので。
 ROM中のチェックサムと一致していますし、あっていると思うのですが。
アドレスについて
 このコンテンツにおいて、「あまり標準的ではないかもしれないアドレスの書き方」を行います。
 書式は以下の通りです;
 BBAAAA
  BB:バンク
  AAAA:実際に読み込まれるときのアドレス

 例えば、"1289AB"であれば、バンク12の、アドレス89ABにて読まれるアドレスを指します。
 ロックマンX3はloROMですので、バンク毎のサイズは8000h、**8000-**FFFFにマップされます。よって、以下の方法で、ROM上のアドレスと変換可能です。
 ROMAddr = BB * 8000h + ( AAAA & 0x7FFFh )
 "1289AB"であれば、ROM上の(12*8000h+09AB)=909ABhバイト目を表します。

 逆にROM上のアドレスを、このコンテンツの表記にするには、
 Addr = ( ( ROMAddr / 8000h ) << 16 ) | 8000h | ( ROMAddr % 8000h )
 と計算します。
 実は、中央の8000hはあっても無くても良いです。
 このコンテンツの表記は、一意にROM上のアドレスを指しますが、ROM上のアドレスは、このコンテンツの表記を一意に指しません。(スーファミだと、常に8000hを入れた形にすることで、1:1といっても良いと思いますが)

 「なんでそんなわかりづらいことをするんだ」と思われるかもしれませんが、慣れるとすごーく便利な表記方法だと分かるかと思います。(実はスーファミだとあまり恩恵が無いかも……)

 一例をいくつか……
 ROM上000000 → このコンテンツの表記 008000
 ROM上007FFF → このコンテンツの表記 00FFFF
 ROM上008000 → このコンテンツの表記 018000

 このコンテンツの表記028000 → ROM上 010000
 このコンテンツの表記02FFFF → ROM上 017FFF
 このコンテンツの表記038000 → ROM上 018000
 このコンテンツの表記030000 → ROM上 018000(←一つ上と同じ/一意でない)
※計算上そうなるというだけで、実際SNES上で030000に読み込みをかけても、
※ROMの018000から読めませんし、あまり適切ではないかも。
※**0000-**7FFFはこのコンテンツで使うことはありません。
(189)2011年10月8日 プレさ兵衛
inserted by FC2 system