検索
<< 2024年12月 >>
1
2 3 4 5 6 7
8
9 10 11 12 13 14
22
23 24 25 26 27 28
29
30 31
広告
駿河屋レトロゲーム
最新記事
ブログランキング
にほんブログ村 ゲームブログ ゲーム制作へ
プロフィール
J-JSOFTさんの画像
J-JSOFT
高校時代、あれほど熱心に取り組んだMSXに触れなくなって30年余…。 MSXエミュレータとの出会いで、MSX愛が再燃中。
カテゴリーアーカイブ
ファン
QRコード

2023年10月15日

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



3Dダンジョンロールプレイングゲーム 第26.5回目です。


今回は私のハンドアセンブルのやり方、BASICのDATA文をPOKEでマシン語に書き込んでいくやり方の上限にぶつかりました。
どういうことか?
この説明をするには、MSXのメモリマップの説明が必要になります。
MSXのメモリマップを図にします。(64kb)

10_15_1.png



エリア名

説明


BASICインタプリタ

主にBASIC言語のプログラムを翻訳しながら実行するためのプログラムが入っているエリア。


テキストエリア

BASIC言語のプログラムが入るエリア。プログラムが大きくなればなるほど、矢印方向に広がっていく。


変数エリア

使用された変数の値などの情報が入るエリア。プログラムが実行され新しい変数が使用されるたびに、矢印方向に広がっていく。


フリーエリア

空きエリア。BASIC言語のプログラムが大きくなったり、変数をたくさん使ったり、CLEAR文で文字列エリアを大きく取ったりして、このエリアがなくなると「Out Of Memory」エラーとなる。


文字列エリア

文字変数の内容である文字列が入るエリア。CLEAR文で文字列エリアの大きさが決められ、大きく取れば取るほど、矢印方向に広がっていく。


マシン語エリア(ユーザーエリア)

主にマシン語のプログラムを入れるのに使うエリア。CLEAR文で大きさを決められる。


ワークエリア

BASICがプログラムを実行中に色々なことに使うエリア。



今作は、&HC000からマシン語のプログラムに使うので、テキストエリア〜文字列エリアが&H8000~&HBFFFまでしか使えません。
しかし、私のハンドアセンブル方法では、BASIC言語のプログラムが長くなり、テキストエリア〜文字列エリアの部分が&HC000に達してしまい、マシン語エリアを侵食し暴走してしまいました。
10_15_2.png
追加でプログラムを組み込んで、テスト実行した際暴走するので、ただのプログラムミスだと思い込み、ありもしないプログラミングミスをしばらく探していました。
今回はMSXプログラミングが久しぶりだったので、この上限に達した状態だと気付くのに時間が掛かりました。
昔ならすぐに察する事が出来たと思います。(大体&HCD00くらいが一旦の上限。)

解決法は簡単。
マシン語プログラムを2本に分ければ解決します。
10_15_3.png
1本目は&HC000~&HCCFFまでの「.BIN」ファイル作成。
2本目は&HCD00~&HCFFFまでの「.BI2」ファイル作成。
とすれば、解決です。

あとは、本当の上限&HCFFFに達した時にどうするか?ですが、まだ悩んでます。
posted by J-JSOFT at 15:00 | Comment(0) | TrackBack(0) | 開発
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/12260074
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: