マシン語処理が完成して一気に進みつつある、PC-88版アシュラの塔のリメイク作業。
現在は各フロアのマップイベントを順にチェックし、問題なく最後まで行くことができるかどうかをチェックしているところです。
今回はそこに至るまでに行ったことなどを簡単に紹介してみたいと思いま~す。
マップ描画のマシン語処理作成
BASIC のスピードの遅さを解決させるために挑戦した、PC-88 のマシン語プログラム。
昔は全然訳が分からなかった内容も、じっくり何度も試していくうちに自然と理解できるようになってました。解説本を残しておいてよかった~😅
でも PC-88 上でマシン語プログラムを作るのはちょっと大変なので、Windows で動作するフリーの海外製マクロアセンブラをダウンロード。
普通にテキストエディタでプログラムを書き、アセンブラでバイナリ化します。
今回作ったマシン語処理部分には、メインのマップ表示処理に加え、BASIC だと処理スピードが低下する文字列の処理、メモリ消去の処理なども用意しました。
最終的に出来上がったバイナリを BASIC で読み込ませて使用するという流れです。
開発は、20年近く前に実機 PC-8801MC2 から作成したエミュレータ環境で行っていま~す😅
バイナリファイルを加工するツールを作成
出来上がったマシン語バイナリファイルは、BASIC からだとそのまま使うことはできません。
何故かというと、バイナリファイルの頭に4バイトのヘッダを用意する必要があるから。
こういうちょっとした事をさせるツールを作るなら HSP が手軽で便利!
ということで簡単なプログラムを HSP で作成し、出来上がったバイナリファイルに 4バイトのヘッダを追加することに成功しました♪
この他、マップデータのバイナリファイル作成も HSP を使って作成。
自分専用ツールを手軽に作る事ができる HSP は本当に便利ですね😄
イベントスクリプトの処理
次は N88-BASIC でゲームのメインプログラムを開発開始!
リメイク版のベースは現在公開中の HSP版アシュラの塔なので、それに使用したイベントスクリプトをそのまま PC-88 でも使うことに。
HSP のプログラムは BASIC に近いので、移植自体はそれほど難しくありません。そもそも HSP版は PC-88 からの移植でしたからね♪
でも逆移植することになるとは考えてもいなかったですが~😅
実際に使っているゲーム内スクリプトのデータはこんな感じ。
1行に1イベントで、先頭からイベント番号・座標X&Y・パーツ番号と続き、@ から行末までの文字列がスクリプトになります。
このデータファイルをマップデータと共に BASIC で読み込み、所定のエリアにセッティング。
あとはマップを移動する度にイベントチェックし、必要ならスクリプトを実行するという感じ。
このイベント関連情報を BASIC の変数や配列で管理すると、すぐメモリ不足になって話にならなかったので、機械語エリアとして確保しているメモリを直接利用。
マシン語を勉強した後だったのでこういったやり方もすぐ浮かびましたが、やっていなかったらリメイク版は多分完成しなかったでしょうねぇ💦
コマンドモードも使いやすく
初期版アシュラの塔はテンキー以外のキーを使う機会が多すぎでした。
例えば最初の名前入力に至っては INPUT 文で直接入力するようなスタイル。
今回は一般的なゲームと同じように、ほぼテンキーのみで操作できるようにしました。
ESC キーだけが離れていますが、近く使いやすいキーに追加割り当てする予定です。
調べる・話す・扉コマンドは、向いている方向の1歩先に対して行われ、イベントが存在すれば先ほど紹介したスクリプトを実行。
フラグが立つとイベントが消去され、マップ上には表示されなくなるという仕組みです。
出来たてホヤホヤのセーブ&ロード処理。
この機能が動くようになったことで、ゲームのテストプレイがとても捗るようになりました。
チェックしたい場所からすぐに再開できますからね~♪
まずはスタートからラスボスまで、全てのイベントを問題なく処理することができるようになるまで、細かくチェックしていくことになります。
それが終わったら次はバトルシーンの作成かな~。モンスターのグラフィック表示、どんな感じで処理しようか考えているところです😅
現時点での動画はこちら!
最後に 2021/7/31 現在のメインプログラムを動かした動画から。
まだ一部のイベントに関する処理が出来上がっていませんが、中ボスとのバトル以外はほぼ問題なく動作しています。
といったところで本日の開発日記はおしまい!
イベント処理さえ出来上がってしまえば、メインプログラムは半分以上完成したようなもの。
ここから少し開発ペースを上げていきますので、続報もお楽しみに~♪
この先また進展があれば、ツイッター で近況をつぶやくほか、今回のように開発日記としてもアップするのでどうぞお楽しみに。
それではまた明日、別の記事でお会いしましょう☆
ポチッと応援してもらえたら嬉しいな♪
コメント