面データの場所指定方法



 ここで、各面のデータがどこから始まっているかを指定している部分について解説しますが、その前に用語について、定義します。

 ワールド マリオ1で言う8つの最も大きな面の単位。

 エリア   マリオ1で言うワールドの下の4つに分かれる面の単位。
       例えば最終の地獄面は、ワールド8のエリア4と呼ぶ。

 ルーム   土管やツタなどで行き来する場所を1つのルーム(部屋)と呼ぶ。
       例えばマリオ1のワールド1のエリア1には、地上面と地下面
       (ボーナスステージ)の2つのルームが有る。

 ページ   各ルームを一画面に表示出来る幅(16キャラクター幅)で割った
       単位で、ルームの始まりから0ページ目、1ページ目と呼ぶ。
       例えばマリオ1のワールド1のエリア1のボーナスステージは
       1ページ分で終わりである。

 面データの指定方法ですが、パラメータになっており、3重指定方式です。

 <1>各ワールドが何番目のエリアから始まるかを指定する領域
    (7CBC番地〜7CC3番地)

通常ワールドは8までしか指定出来ないが、9〜256ワールドの指定時は、 この領域を飛び越え、さら下位の番地が指定部分として認識される。

 <2>各エリアがどのルームNo.から始まるかを指定する領域
    (7CC4番地〜)

 マリオ1では36エリア、トンカチマリオでは60エリア分領域を確保していますが、 論理的には256エリアまで認識可能です。その時はこれらの領域を飛び越え、 さら下位の番地が指定部分として認識されます。
 なお、ここで面の種類(水中・地上・地下・地獄)も一緒に指定します。
 水中や地下に行く時の導入面(マリオ1のワールド1のエリア2において、 面が始まる前に起こる、マリオが土管に入って行くアクション表示面)をつける時は、その導入面のルームNo.を指定してから、次に面が始まるルームNo.を指定します。
つまりひとつのエリアで2回指定する)

 <3>各ルームのマップ及び敵データがどの番地から始まっているかを指定する領域
    (7D00番地〜7DFF番地−トンカチマリオの場合)

ルームはNo.00からNo.3Fまで、64ルーム作成可能です。


●各指定場所の具体例

   <1>について

 ワールド1つにつき1バイト単位で指定します。

マリオ1の場合は、 00 05 0A 0E 13 17 1B 20 ....

となっています。

 すなわち、ワールド1は1番目のエリアから、ワールド2は6番目のエリアから、ワールド8は33番目のエリアから始まります。

   <2>について

 ここでは、トンカチマリオで説明します。なぜなら、マリオ1は<3>の指定が複雑なので、トンカチマリオをベースとして、改造した方が楽だからです。
 各エリアがどのルームNo.から始まるかは、やはり1バイト単位で指定します。
 各ルームNo.(00〜3Fまで64個)に水中面であれば+00、地上面であれば+40、地下面であれば+80、地獄面であれば+C0します。例えば、この領域の1バイト目は 40 となっていますが、これは1番目のエリアの始まりは、ルームNo.00を地上面として出現させる、という事になります。

   <3>について

 ここでも、トンカチマリオで説明します。

各ルームNo.のデータが何処から始まるかの指定場所は、4箇所に区切られており、

●マップデータの始まる番地の上位の指定場所(7DC0番地〜7DFF番地)

●マップデータの始まる番地の下位の指定場所(7D80番地〜7DBF番地)

●敵キャラクターデータの始まる番地の上位の指定場所(7D40番地〜7D7F番地)

●敵キャラクターデータの始まる番地の下位の指定場所(7D00番地〜7D3F番地)

となっています。例えば、
            7DC0番地=7E
            7D80番地=00
            7D40番地=7E
            7D00番地=31

となっているので、

 ルームNo.00のマップデータの始まる番地は7E00番地
 敵キャラクターデータの始まる番地は7E31番地

となります。

マップコマンド及び敵キャラクターコマンドの解説へ

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

戻る

ホームページへ



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