2024年02月07日
細かく修正Q
「ダウンロード」の「VOLLEY」ダウンロード先リンクが切れていましたので、リンク先修正。
「ゲーム制作」の「無人島脱出アドベンチャーゲーム」の前後回へのリンク切れがあったので修正。
それ以外は、画像の貼り直しや、記事の誤記の修正程度です。
2024年02月06日
【ゲーム制作】無人島脱出アドベンチャーゲーム 第10回
無人島脱出アドベンチャーゲーム 第10回です。
今回は、前々回に全ロジックを書き換えた「BINSET.BAS」で作成するマシン語プログラム「ADV.BIN」のデバッグ作業です。
「BINSET.BAS」で、サブルーチンコール先や、飛び先アドレスを全部書き換えているので、念入りなデバッグ作業が必要です。
アセンブラでラベル指定していれば特に必要のない作業ですが、ハンドアセンブルな私には重要な作業です。
タイトル画面は無事表示。
いよいよメッセージ表示です。
かはっ!
フリーズです。
バグ取りして起動!!
フリーズ!!
バグ取りして起動!!!
フリーズ!!!
バグ取りして…!!
…ぐはっ!!
フリーズしまくりです!
…ちょっとバグと戦いますね…。
2024年02月05日
【ゲーム制作】無人島脱出アドベンチャーゲーム 第9回
無人島脱出アドベンチャーゲーム 第9回です。
「BINSET.BAS」作成に手こずりましたが、今回は今作のディスクイメージを用意します。
前回作成した「BINSET.BAS」と、前作のイメージディスクから抽出した「3DRPG.BAS」など必要なファイルを、名前を「ADV.***」に変更し一纏めにしてイメージディスク作成。
簡単だ…。
元プログラムがあるので、非常に楽ですね。
作成したイメージディスクを「BlueMSX」で開き、メインプログラム「ADV.BAS」の大半を一旦コメントで潰して、テスト稼働に必要な部分だけにして保存。
次回、今回作成した「ADV.BAS」を使い、前回全ロジックを書き換えた「BINSET.BAS」で作成するマシン語プログラム「ADV.BIN」のデバッグを行います。
2024年02月04日
【ゲーム制作】無人島脱出アドベンチャーゲーム 第8回
無人島脱出アドベンチャーゲーム 第8回です。
さて、前回、前作の「BINSET.BAS」をExcelに抽出する方法が確立しました。
今回は、前作の3つのマシン語設定ファイル、「BINSET.BAS」、「BINSET2.BAS」、「BINSET4.BAS」をすべて1本のExcelに抽出し、必要なロジックとサブルーチン以外を削除し、且つ、点在しているバグフィックスはバグ元のロジックを修正し、綺麗でメモリの小さい今作の「BINSET.BAS」を作成します。
今作で必要なロジックとサブルーチンは、「FONTセットルーチン」、「メッセージ表示ルーチン」、「選択肢ルーチン」、「スクリプト処理ルーチン」及び命令の一部、「走査線割込みルーチン」、「BGM演奏ルーチン」、「アイテム検索ルーチン」、「アイテム表示ルーチン」くらいでとりあえずはいいかな?
それ以外は削除します。
その際、あちこちに点在しているバグフィックスを、バグフィックスのバグ元ロジックの中に収め、バグのないロジックとして組み直していきます。
これをやっとかないと、今後、そのロジックを使いまわす際、毎回バグフィックスごと移植しなければならず、かっこ悪いです。
で、いざ作業開始。
いやー、Excel本当に便利。
ジャンプ先指定や、コール命令を色分けできるし、どこへ飛ぶかの表示もできる。
更に、右側にプログラム詳細を記載も可能。
こんな感じで非常に分かり易いです!
「.BAS」化する際は、N列より右は削除してしまえばいいだけ。
プログラム中のメモやコメントも、「.prn」(テキスト(スペース区切り))形式で保存すれば問題なしです。
これで飛び先アドレスや、サブルーチンコール先、変数等を修正していきます。
一通りの修正が完了したら、以前に確立した方法でExcelファイルを「.BAS」ファイル化します。
これで、マシン語設定プログラム「BINSET.BAS」は完成です。
2024年02月03日
【ゲーム制作】無人島脱出アドベンチャーゲーム 第7回
無人島脱出アドベンチャーゲーム 第7回です。
前回、「MSX BASIC Viewer」で編集できず、いろいろ試行錯誤しました。
結果、最もオーソドックスな方法を取ります。
「MSX BASIC Viewer」、コピーは出来るので「すべて選択」してコピー。
次にExcelを開き、テキスト形式で貼り付けます。
無事貼れました。
あとは、Excel機能の「データ」の「区切り位置」を使って、「スペースによって…」で行番号の後ろでカット。
因みに行番号の桁次第では、番号の途中で区切られてしまうので注意が必要です。
行番号部分をカットできました。
これでサブルーチン集を作ったExcelファイルと同じレイアウトにする事が出来ました。
ここまで出来れば、Excelから「.BAS」形式にする方法は確立済みです。
良かった、何とかなった…。
ただ、変換の際「ひらがな」部分は文字化けしてしまいます。
幸い「カタカナ」部分は大丈夫。
「ひらがな」部分は、全部半角「カタカナ」に書き換えて対応します。
2024年02月02日
【ゲーム制作】無人島脱出アドベンチャーゲーム 第6回
無人島脱出アドベンチャーゲーム 第6回です。
「Disk Manager」と、「MSX BASIC Viewer」を活用して、今作の「BINSET.BAS」の作成に挑戦します。
いざ、3Dダンジョンロールプレイングゲームのイメージディスクを「Disk Manager」で開き、マシン語ファイル「BINSET.BAS」、「BINSET2.BAS」、「BINSET4.BAS」を抽出します。
次に、抽出したファイルを「MSX BASIC Viewer」で開きます。
このマシン語設定ファイルの必要なロジックをコピー、貼り付け…、
…ん? …コピー、貼り付け…、
?? あれ? 「コピー」は出来るけど、「貼り付け」が出来ない!?
あ、コピーのボタンは押せるけど、貼り付けボタンは押せなくなってる…。
そうか、このツール、「Viewer」だから、見るだけで編集とかはできないんだ…。
納得…。
いきなり躓いてしまいました。
ここからどうやって編集していこうか思案中…。
2024年02月01日
【ゲーム制作】無人島脱出アドベンチャーゲーム 第5回
無人島脱出アドベンチャーゲーム 第5回です。
今回はアドベンチャーゲーム用のディスクイメージを用意します。
さて、いよいよプログラミングを開始していく訳ですが、今作のアドベンチャーゲームでは、前作のメッセージルーチンやスクリプト処理ルーチン等、結構なロジックをそのまま流用します。
前作のマシン語設定プログラム「BINSET.BAS」、「BINSET2.BAS」、「BINSET4.BAS」をそのまま使うのが開発時間的には早いのですが、バグフィックスが多くロジックが汚い上に何よりメモリの無駄なので、必要なロジックのみで「BINSET.BAS」を作りたい。
しかし、ハンドアセンブルなプログラムなので、ルーチンの開始アドレスやロジックの長さが変わると、飛び先やコール先アドレスがすべて変わってしまう。
こんな時はアセンブラのラベルの有用性をヒシヒシ感じてしまう。
さて、効率よくアドレス指定先を変更するにはどうすればいいか…?
そうです、ここで「MSX BASIC Viewer」の出番です!(2023年12月29日記事参照「便利「.BAS」ファイル読込ツール!」)
「Disk-Manager」で前作の「BINSET.BAS」を抜き出し、「MSX BASIC Viewer」を使って必要なロジック分を切り貼りしてExcel等の検索・置換機能のあるツールに落とし、アドレスを一気に書き換えて今作の「BINSET.BAS」の基プログラムにしてやれば、後は新機能のみの開発で済むのではないかと考えました!
と、言う訳で次回、「Disk Manager」と「MSX BASIC Viewer」を活用して、「BINSET.BAS」の作成に挑戦します。
2024年01月31日
【ゲーム制作】無人島脱出アドベンチャーゲーム 第4回
無人島脱出アドベンチャーゲーム 第4回目です。
今回はメモリマップを作成します。
前回設計した内容に沿って必要なメモリ振りをします。
アドベンチャーゲームは、やはりメインはメッセージデータですね。
アドレス | データ名 | 備考 |
9800〜9FFF | BGMデータエリア | 2,048バイト |
A000〜AFFF | メッセージデータエリア | 4,096バイト |
B000〜B7FF | フォントキャラクタデータ | 256キャラ×縦8バイト=2,048バイト |
B800〜BFFF | フォントカラーデータ | 256キャラ×縦8バイト=2,048バイト |
C000〜CFFF | マシン語エリア | 4,096バイト |
D000〜D0FF | アイテムデータエリア | 256バイト |
E000〜E0FF | 変数エリア | 256バイト |
EF00〜EFFF | メニュー表示用ワークエリア | 256バイト |
「あれっ? こんだけっ!?」って感じですよね。
ロールプレイングゲーム以外はこんなもんです。
次回は、前作のプログラムを基にメインプログラムを用意します。
2024年01月30日
【ゲーム制作】無人島脱出アドベンチャーゲーム 第3回目
無人島脱出アドベンチャーゲーム 第3回です。
今回は、詳細設計を組んでいきます。
前回作成したシナリオに沿って設計していきます。
・場面数は「47」。
・イベント数はダブりがあるので「34」。
・イベントデータは座標など不要で、イベントa#ュ生イベントbニするので、1イベント1バイトで良い。
・BGMは「オープニング」、「海岸線」、「森」、「洞窟」、「危険」、「エンディング」の6曲。
・場面グラフィックは、256×192のフルサイズ表示。
・画像は上段分をロードしセット、次に中段、最後に下段で画面を表示し、最後FONTデータをロードしAボタンが押されるまで待機。押されたら下段にFONTを設定し、メッセージウィンドウ表示。
・選択肢は増えないので、スクリプト命令のみで実行可。
・現状のスクリプト命令では足りない機能があるので、いくつかのスクリプト命令を追加予定。(とりあえず「SC」場面表示、「SD」効果音演奏、「SV」セーブ(システムメニューがない為)、「IL」アイテム表示(〃)の4つ。)
…ん? こんなものか?
まぁ、推理モノでなければそれほど複雑な設計は不要です。
次回は、メモリマップを作成します。