マリオ2の面データの場所指定方法の続き






マリオ2の面データ開始位置指定部分(ワールドA〜D)

原本におけるルームNo.配列敵データマップデータ
水中面地上面地下面地獄面原本におけるデータ開始位置
(ファイルNo.06)(参考)
データ開始位置の指定番地
(ファイルNo.06)
原本におけるデータ開始位置
(ファイルNo.06)(参考)
データ開始位置の指定番地
(ファイルNo.06)
   60C5D0C376C853C3A4
   61C5F5C378C8C6C3A6
   62C61CC37AC943C3A8
   63C65DC37CC9DEC3AA
 20 64C68CC37ECA6DC3AC
 21 65C6C7C380CAFCC3AE
 22 66C6D6C382CB55C3B0
 23 67C704C384CBE6C3B2
 24 68C729C386CC45C3B4
 25 69C74CC388CCBCC3B6
 26 6AC76BC38ACD17C3B8
 27 6BC78AC38CCD94C3BA
 28 6CC7AAC38ECE11C3BC
 29 6DC7CBC390CE5CC3BE
 2A 6EC7E2C392CEC7C3C0
 2B 6FC7F2C394CEEAC3C2
 2C 70C260C396C274C3C4
 2D 71C260C398C261C3C6
 2E4072C801C39ACF07C3C8
 2F4173C81BC39CCF7CC3CA
00304274C82FC39ECFDBC3CC



<表の見方>

 例えば、ワールド1〜9におけるルームNo.60のデータ開始位置指定場所は、
敵データがC398番地
マップデータがC404番地です。
ところで、原本においては

 C398番地は90
 C399番地はC7
 C404番地は14
 C405番地はCA

となっています。
これは、ルームNo.60の敵データはC790番地から、マップデータはCA14番地から始まるという意味です。

 余談ですが・・・
指定番地の下位が最初に来て、次に上位が続くという表現の仕方は、6502CPUの仕様だそうで、コンピュータが認識する分にはなんら問題は無いのでしょうが・・・しかし、解析をしている私達にとっては甚だ迷惑なものです。

説明が繰り返しになりますが、ルームNo.60が
 ワールド1〜4に使われていればファイルNo.03上でのC790番地とCA14番地を、
 ワールド5〜8に使われていればファイルNo.04上でのC790番地とCA14番地を、
 ワールド9に使われていればファイルNo.05上でのC790番地とCA14番地を、
それぞれ認識します。

なお、例えば上記の表によると原本のワールドA〜Dの水中面はルームNo.00しかありません。ではこのままではルームNo.01以降は存在しないか、と言えばそうではありません。順次下位の番地を認識してゆくので存在します。ただこれらは正式な開始位置指定領域を割り当てられていないだけです。したがって全然別の指定部分が認識されて・・・ひょっとしたらまた変わった面がお目見えするかもしれませんネ。



<3'> コマンドアドレスヘッダ


 コマンドアドレスヘッダとは・・・

 上記の表にあるように、アドレス指定の開始位置が面の種類によってまちまちですが、この"ずれ"を指定している部分。
 例えば上記の表によると原本のワールドA〜Dの水中面はルームNo.00しか使えません。しかしもっと多くの水中面を作りたい時はこのコマンドアドレスヘッダを変更すればいい訳です。 (コマンドアドレスヘッダの情報は、マリオ工作員さん達のページのマリオ解析結果報告より頂いています。)


<敵キャラコマンドアドレスヘッダ>


●ワールド1〜9    (ファイルNo.03のC394番地〜C397番地)

   ここは、原本のマップデータの場合、2C 0A 27 00 となっています。

 すなわち、これはアドレス指定位置が

  水中面は2C番目から、
  地上面は0A番目から、
  地下面は27番目から、
  地獄面は00番目から、

始まるという意味になります。

●ワールドA〜D    (ファイルNo.06のC372番地〜C375番地)
 
 ここは、原本のマップデータの場合、14 04 12 00 となっています。


 すなわち、これはアドレス指定位置が

  水中面は14番目から、
  地上面は04番目から、
  地下面は12番目から、
  地獄面は00番目から、

始まるという意味になります。



<マップコマンドアドレスヘッダ>


●ワールド1〜9    (ファイルNo.03のC400番地〜C403番地)
 
 ここは、原本のマップデータの場合、2C 0A 27 00 となっています。

 つまり<敵キャラコマンドアドレスヘッダ>と全く同じです。

●ワールドA〜D    (ファイルNo.06のC3A0番地〜C3A3番地)
 
 ここは、原本のマップデータの場合、14 04 12 00 となっています。

 つまり<敵キャラコマンドアドレスヘッダ>と全く同じです。


余談ですが・・・
 マリオ1の原本のデータ開始位置指定部分が複雑な原因のひとつに、この<敵キャラコマンドアドレスヘッダ>と<マップコマンドアドレスヘッダ> が違う事が挙げられます。マリオ2の原本の場合、この2つが共通なので、上記の表も実にシンプルに(敵データとマップデータを同じ様に扱える)作る事が出来る訳です。
 なお、トンカチマリオの場合、このコマンドアドレスヘッダは全て00になっています。しかも、データ開始位置指定箇所を64個も取っているので、この64個の部屋の面の種類を自由自在に変更できる訳です。スーパー真理ブラザーズでは、これら64個の部屋を全て使い切り、しかも同じ部屋を何回も面の種類を変えて配置しています。



参考文献
 マリオ工作員さん達のページのスーパーマリオブラザーズ解析情報 における、「カセット版、面データのアドレス指定方法」のコマンドアドレスヘッダの解説


マリオ1のデータ開始位置指定法へ戻る

戻る

ホームページへ



 本文中の会社名及び商品名は各社の商標または登録商標です。