アフィリエイト広告を利用しています
 

2023年09月06日

【ゲーム制作】3Dダンジョンロールプレイングゲーム 第12回



3Dダンジョンロールプレイングゲーム第12回目です。
随分久しぶりになってしまいました。
Laboratoryテーマ23「コマンドを選択肢メニューを開いて、選択したい」のサンプル作りにてこずっておりまして、時間だけが過ぎていく…。
まぁ、おかげで「MSX回顧録」、だいぶ進めることが出来ましたが…。

さて、今回は3D表示のプログラミングに挑戦します。
前々々回(【ゲーム制作】3Dダンジョンロールプレイングゲーム 第9回)で考えたロジック通り、@〜Gの表示ワークへセットするプログラムを作ります。
これ、BASICの配列変数を使えれば簡単にできるんですが、マシン語にはそんな便利な機能はありません。

ただ、考え方は配列変数の考え方がそのまま使えます。
BASICですと、配列変数にマップデータを代入(MAP(21,21))し、自機のX座標、Y座標をそれぞれ変数X、Yとすると、X、Yを起点に、調べたい座標位置に加減算をします。
9_6_1.png
例えば、上向きの場合、@=MAP(X-1,Y-2)、A=MAP(X,Y-2)…と言った感じです。
簡単ですね。
それをマシン語で実現するためには、この加減算値でデータベースを作成します。(8ワーク×4方向×X/Y=64バイト)
9_6_3.png
XとYの加減算値は-2〜2の5つしかないので、容量節約のためにBレジスタ上4桁をX加減算値、下4桁をY加減算値とします。
これで、容量を半分に削れました。(8ワーク×4方向=32バイト)
先ほどの加減算値のルール通り変換しました。
9_6_2.png
データベース登録完了したら、向きにより自動でデータベースアドレスを算出し、データベースから加減算値を取得し、マップデータから地形データを読んでワークに設定するマシン語サブルーチンを作ります。
9_6_4.png
&HC370からは、Bレジスタに加減算値を代入しコールすると、マップデータ上の自分の位置+加減算値のアドレスを計算し、Aレジスタにその座標のキャラクタコードが返されるルーチンです。
&HC3B8は、向きによってデータベースアドレスを算出し、データベースを読んで8つ分ワークへ地形データを設定するルーチンです。

各向きで読み込んだキャラクタコードを表示してみました。
9_6_5.png
期待通りの動きです、問題なしですね。

では、次回は3D表示のプログラミングです。
posted by J-JSOFT at 10:30 | Comment(0) | TrackBack(0) | 開発
検索
<< 2023年09月 >>
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
広告
最新記事
ブログランキング
にほんブログ村 ゲームブログ ゲーム制作へ
プロフィール
J-JSOFTさんの画像
J-JSOFT
高校時代、あれほど熱心に取り組んだMSXに触れなくなって30年余…。 MSXエミュレータとの出会いで、MSX愛が再燃中。
プロフィール
カテゴリーアーカイブ
ファン
QRコード