趣味工房 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が速いためゲームのスピードが速すぎるため、写真3の907DH番地にスピード調整用のタイマー(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マシン復元進捗 ・TK80BS インベーダ・ゲーム移植まとめ・その2 |
2014年9月29日 |
写真1 メイン・ルーチン、 画面クリア・ルーチンの例
写真2 CRTCパラメータの設定の例
写真3 ゲーム上のメイン・ルーチン、 スピード調整用タイマー追加の例
写真4 迎撃ビーム砲発射・ルーチン
写真5 ゲームの初期化、 迎撃ビーム砲の発射音の例
|