ドアドアmkII(PC-6001mkII)をメガROM化してみよう
PC-6001mkII用「ドアドアmkII」のテープ版をコンバートして、メガROM版を作ってみよう、という試みです。
メガROM版とは
今回作成したメガROM版の特徴は以下の通りです。ただ ROM化するだけでは面白くないので、少しだけ改造してみました。
- 当然ですが、ロードが一瞬です。ロード中の画面は大好きなので表示させてみましたが、ロード中の音楽は鳴りません。すみません。。。
- テープ版は起動時に1~50面か51~100面のどちらかを選択しますが、せっかく大容量ROMを使えるので、メガROM版は1~100面を通してプレイできるようにしました。
- ラウンドセレクトができるようにしました。
- サウンドテストモードを追加しました。2020/8/12 update
- ジョイスティックでもラウンドセレクトができるようにしました。2020/8/14 update
動画
必要なもの
ROM版を作成するには以下のものが必要です。
- PC-6001mkII版「ドアドアmkII」のテープイメージ
- ドアドアmkII(初代機版ではなくmkII版)のテープのピーガー音を PCに取り込んで、 NandemoPiGa2 などでバイナリーファイルに変換しておいてください。
- 後期に発売された「SR対応版」はROM化できません。
- PC-6001用「戦士のカートリッジ」シリーズ
- ポート70Hで8KB単位のバンク切り替えができるメガROMカートリッジが必要です。
- 「戦士のカートリッジ」「戦士のカートリッジmkII(ベルーガカートリッジ)」「戦士のカートリッジmkIII(予定)」については実機あるいはエミュレーター(PC6001VW4)において動作確認済です。
- メガROM版作成ツール
作成方法
- MakeDoorDoorROM_P6.zip を展開し、MakeDoorDoorROM.exeと同じフォルダに、ドアドアmkIIのテープイメージを doordoor.p6 というファイル名でコピーしてください。
- MakeDoorDoorROM.exe を実行してください。
- DOORDOORm2.ROM というファイルが作成されれば成功です。
ROM焼き方法
- DOORDOORm2.ROM を、それぞれのROMカートリッジに適した方法で焼いてください。
- バンク0~バンク9 の10個のバンクを使用しているので、「戦士のカートリッジmkII」を使う場合は、必ず偶数セクタから使い始めてください(奇数セクタは先頭がROMバンク8になるため)。
実行方法
- ROMカートリッジを本体にセットして、電源を入れてください。
- PC-6001mkIISR/PC-6601SRの場合はモード選択画面になるので「モード5」を選択してください。
- エミュレータの場合は、PC6001VW4での動作を確認しています。DOORDOORm2.ROMを拡張ROMとしてセットし、ROMタイプは「戦士のカートリッジ」のどれかを選択してください。
改造したところ
トラブルシューティング
- mkII版のみに対応しているので、初代機版では動作しません。
- DOORDOORm2.ROM の先頭から8バイト目にポート番号が書かれているので、ポート70H以外でバンク切り替えをする場合はこの値を変更してください(PC6001V、PC6001VXなどでプレイする場合は 32H に変更してください)。
- その他、不具合があればぜひ twitter で @tiny_yarou まで報告していただけると助かります。
最後に
- ドアドアmkII の改造については、ezmさんの解析ページ http://kurarinet.com/ezm/?DOORmk2 を参考にさせていただきました。ありがとうございました。
- ドアドアmkIIは本当にメモリを極限まで使用しており、改造に使えるメモリも、スタック用に用意された FF20H~FFFFHの224バイトしかありませんでした。
そのため、最初はこのエリアに収まるような改造にとどめていたのですが、作っているうちに色々と欲が出てきて全然足りなくなり、結局、ゲーム中にROM内のサブルーチンを空きメモリに呼び出して実行できるようにしました。
- ラウンドデータは、もちろんすべてRAMには載らないので、1~50面と51~100面のデータを必要に応じてROMから転送してきています。
- 一番苦労したのは、ラウンド表示に「100」を作ったことです(笑)特にゲーム中の画面右上のラウンド表示は3桁分表示するスペースがなく、100面プレイ中の「100」という文字はフォントではなく強引にビットマップを描いています。
- サウンドテストモードについて、ローディング中のBGMデータは本来RAMには残っていないのですが、ゲーム中でも鳴らせるようにコンバートしたデータをROMに置いておいて、再生時にRAMに転送して鳴らしています。
戻る