## 面データの場所指定方法

ここで、各面のデータがどこから始まっているかを指定している部分について解説しますが、その前に用語について、定義します。
ワールド　マリオ１で言う８つの最も大きな面の単位。
エリア　　　マリオ１で言うワールドの下の４つに分かれる面の単位。
例えば最終の地獄面は、ワールド８のエリア４と呼ぶ。
ルーム　　　土管やツタなどで行き来する場所を１つのルーム（部屋）と呼ぶ。
例えばマリオ１のワールド１のエリア１には、地上面と地下面
（ボーナスステージ）の２つのルームが有る。
ページ　　　各ルームを一画面に表示出来る幅（１６キャラクター幅）で割った
単位で、ルームの始まりから０ページ目、１ページ目と呼ぶ。
例えばマリオ１のワールド１のエリア１のボーナスステージは
１ページ分で終わりである。
面データの指定方法ですが、パラメータになっており、３重指定方式です。
＜１＞各ワールドが何番目のエリアから始まるかを指定する領域
（７ＣＢＣ番地〜７ＣＣ３番地）
通常ワールドは８までしか指定出来ないが、９〜２５６ワールドの指定時は、 この領域を飛び越え、さら下位の番地が指定部分として認識される。
＜２＞各エリアがどのルームNo.から始まるかを指定する領域
（７ＣＣ４番地〜）
マリオ１では３６エリア、トンカチマリオでは６０エリア分領域を確保していますが、 論理的には２５６エリアまで認識可能です。その時はこれらの領域を飛び越え、 さら下位の番地が指定部分として認識されます。
なお、ここで面の種類（水中・地上・地下・地獄）も一緒に指定します。
水中や地下に行く時の導入面（マリオ１のワールド１のエリア２において、 面が始まる前に起こる、マリオが土管に入って行くアクション表示面）をつける時は、その導入面のルームNo.を指定してから、次に面が始まるルームNo.を指定します。
つまりひとつのエリアで２回指定する）
＜３＞各ルームのマップ及び敵データがどの番地から始まっているかを指定する領域
（７D００番地〜７DＦＦ番地−トンカチマリオの場合）
ルームはNo.００からNo.３Ｆまで、６４ルーム作成可能です。
●各指定場所の具体例
＜１＞について
ワールド１つにつき１バイト単位で指定します。
マリオ１の場合は、 00 05 0A 0E 13 17 1B 20 ....
となっています。
すなわち、ワールド１は１番目のエリアから、ワールド２は６番目のエリアから、ワールド８は３３番目のエリアから始まります。
＜２＞について
ここでは、トンカチマリオで説明します。なぜなら、マリオ１は＜３＞の指定が複雑なので、トンカチマリオをベースとして、改造した方が楽だからです。
各エリアがどのルームNo.から始まるかは、やはり１バイト単位で指定します。
各ルームNo.（００〜３Ｆまで６４個）に水中面であれば＋００、地上面であれば＋４０、地下面であれば＋８０、地獄面であれば＋Ｃ０します。例えば、この領域の１バイト目は　40　となっていますが、これは１番目のエリアの始まりは、ルームNo.００を地上面として出現させる、という事になります。
＜３＞について
ここでも、トンカチマリオで説明します。
各ルームNo.のデータが何処から始まるかの指定場所は、４箇所に区切られており、
●マップデータの始まる番地の上位の指定場所（７ＤＣ０番地〜７ＤＦＦ番地）
●マップデータの始まる番地の下位の指定場所（７Ｄ８０番地〜７ＤＢＦ番地）
●敵キャラクターデータの始まる番地の上位の指定場所（７Ｄ４０番地〜７Ｄ７Ｆ番地）
●敵キャラクターデータの始まる番地の下位の指定場所（７Ｄ００番地〜７Ｄ３Ｆ番地）
となっています。例えば、
７ＤＣ０番地＝７Ｅ
７Ｄ８０番地＝００
７Ｄ４０番地＝７Ｅ
７Ｄ００番地＝３１
となっているので、
ルームNo.００のマップデータの始まる番地は７Ｅ００番地
敵キャラクターデータの始まる番地は７Ｅ３１番地
となります。
マップコマンド及び敵キャラクターコマンドの解説へ
マリオ２の面データ場所指定方法へ
戻る
ホームページへ
本文中の会社名及び商品名は各社の商標または登録商標です。