この「MAP16 EDITOR」で作成したデータは、保存すると各データ下記アドレスに保管されBSAVEされます。
メモリアドレス | データ種別 | 詳細 |
&H9C00〜&H9FFF | キャラクタデータ | 256キャラクタ×4バイト=1,024バイト |
&HA000〜&HBFFF | マップデータ | 最大&H2000=8,192バイト |
そのデータを表示してゲームに使えるようにするサンプルプログラムを用意しました。
起動すると、下画面が表示されます。
俗に言う、MSX1のSCREEN1.5を使用しています。
昔に「MAP16 EDITOR」で作成したマップデータを使って作ったゲーム(製作途中も含め)を探したのですが見付からず、「MAP16 EDITOR」自身のマップ表示ルーチンは速度度外視(遅い)のため、一からロジック組み直しました。
そのため時間がなく、今回は1キャラクタスクロール(16ドット)の全画面表示です。(昔は市販ゲームでも結構ありましたね…。)
1FONTスクロール(8ドット)をするための仕組みは組み入れてありますので、表示範囲指定可能な1FONTスクロール版は後日公開します。(ロジック的には、メモリ内で一旦1列分のキャラクタを展開(2FONT×2FONT×マップ表示横幅)し、1FONTスクロール2回をセットにして表示します。)
「MP16SMPL.BAS」【ダウンロード】
自作プログラムに組み込むには、下記の部分が必要です。
行番号 | 内容 | 説明 |
70 | MAP16PRT.BIN | キャラクタ単位マップ表示マシン語プログラム |
150〜180 | マップ表示値指定 | マップ全体の縦横幅と、表示する左上の座標を指定 |
220 | マップ表示サブルーチン | マップ表示値を指定し、220行のサブルーチンをコールするとマップを表示するサブルーチン |
このプログラムでは、最も時間のかかるであろうマップ表示部分をマシン語で組んでいます。
「MAP8PRT.BIN」と異なり、アドレス計算もマシン語内で行っているため、描画速度も向上しています。
「MAP16PRT.BIN」(70行)
下記機能を提供します。
実行アドレス | 機能 | 詳細 |
&HC0D0 | マップ表示 | 指定されたマップ表示値から表示される先頭アドレスを算出しマップを表示する 最大16キャラクタ×12キャラクタ |
マシン語アドレスを変えたい人用に、MAP16PRT.BIN作成用のBASICプログラムを用意しました。
起動すると、MAP16PRT.BINを作成します。
「MAP16PRT.BAS」【ダウンロード】
250行〜280行:マップ表示させたい左上座標の、マップデータ上のアドレスを算出。
290行〜380行:マップデータから1キャラクタデータを読み取り、横1列分のマップをメモリ上に展開。
390行〜470行:メモリ上に展開した1列分のデータをVRAMに上から転送。それを縦列数分繰り返す。