趣味工房 HIRO-G





< TK80BS インベーダ・ゲーム移植まとめ・その2 


 今回は、前回(BASIC No42)の移植作業について、実際のプログラムで説明します。 また、書き忘れていましたが、作業領域はBSの場合は8200番台でしたが、NDでは8500番台へ変更しています。
 1. 作業領域の変更
  BS: 82XXH
  ND: 85XXH

 RAM領域の変更は多岐に渡りますので、この場では説明しませんが、RAM番地を手がかりにすれば、判別は容易です。
 2. RAM領域の違い
  BS: 7E00H〜7FFFH(0.5K)
  ND: F000H〜F3FFH(1K)

 ゲームの起動は、ND80ZVのモニターから、A050アドレスセット、RUNで起動します。 当方の場合、以前からの作業の成り行き上、写真1のようにA050H番地からの起動となっていますが、もちろん適当に変更してもらって結構です。 写真2は、32文字X16行画面のCRTCのパラメータの設定です。


 写真3がゲーム本来のメイン・ルーチンです。 迎撃ビーム砲の発射・ルーチンを写真4のように9030H番地に変更しています。当方のビーム砲の発射はフル・キーボードの「1」です。 9032H番地のデータを変更することで、好みのキーに変更できます。 
 3. フル・キーボード入力チェックの違い
  BS: 3A FC 7D 
  ND: DB 7C

 また、オリジナルのままでは、NDのCPUが速いためゲームのスピードが速すぎるため、写真3907DH番地にスピード調整用のタイマー(TK80互換モニタのD2タイマーのサブルーチン)を挿入しました。 このタイマーを何段階かに調整できるようにすれば、ゲームの難易度が付けられます。

 写真5は、ゲームの初期化のルーチンとゲーム音おルーチンの例です。画面のクリアについては、BSではBS内のサブルーチンを使っていますので、NDでは、A030H番地に画面クリア・ルーチンを用意しました。
 4. 画面クリア(8909H番地)の違い
  BS: 8909H CD 6C FA (BS内のサブルーチン)
  ND: 8909H CD 30 A0 (新規作成)

 写真6、写真7は、ゲーム・オーバー時の「GAME OVER」文字の点滅を見易くするためのタイマーで、TK80互換モニタのD3タイマーのサブルーチンを使っています。

 写真8はゲーム・スタート時、、写真9はゲーム・オーバー時の音です。
これらは、オリジナルを変更して使用してます。 UFOの出現時も音が出るようにしようとしましたが、UFO出現時にゲームのスピードが遅くなるため中止、この件は後回しで取りあえず前に進めました。
 5. 音出しの違い
  BS: D3 02
  ND: D3 98

 写真10が、ゲーム・オーバーとなり、続いてゲームを再スタートする場合の処理です。 当方の場合はフル・キーボードの「S」としていますが、 8B44H番地のデータを変更することで、好みのキーに割り付けられます。

 以上が、移植作業でのVRAM領域、作業領域を除く主な変更作業の具体的な内容です。

 次回は全体のまとめと、移植プログラムの全ダンプ・リストを公開する予定です。



写真6 D3タイマー・サブルーチン




写真7 D3タイマー・サブルーチンの追加挿入




写真8 ゲーム・スタート音の例




写真9 ゲーム・オーバー音の例




写真10 ゲームの再スタート「S]キーチェックの例



< 今後の予定 >


@ TK80BS インベーダ・ゲーム移植まとめ・その2: 完了

A TK80BS インベーダ・ゲーム移植 最終まとめ:

B TK80BS BASICの移植?:

C  FDDコントローラの製作?:

D CP/Mシステム復元の可能性の検討?:

E グラフィック・ボードの製作?:


BASIC No43


BASICマシン復元進捗  ・TK80BS インベーダ・ゲーム移植まとめ・その2
2014年9月29日


写真1 メイン・ルーチン、 画面クリア・ルーチンの例




写真2 CRTCパラメータの設定の例




写真3 ゲーム上のメイン・ルーチン、 スピード調整用タイマー追加の例




写真4 迎撃ビーム砲発射・ルーチン




写真5 ゲームの初期化、 迎撃ビーム砲の発射音の例