私、このソフト好きなんです。
はじめに出会ったのは「コナミのゲームを10倍たのしむカートリッジ」でしたが、
このソフトを知らなければ解析の世界には入らなかったかも知れません。
私にとってはすっごく不思議で魅力的なソフトです、今でも。
新10倍にはゲーマーを支援するための様々な機能が入っていますが、その中で
「プレイヤー数・ステージ番号の変更」はとても不思議な事に思えました。
これ、どんな仕組みかわかります? 私は最近になってやっと謎が解けました。
新10倍の機能を使うためにはゲームROMより前のスロットに差して、新10倍
を先に起動します。プレイヤー数や開始ステージの変更後、ゲームが始まると設定
が変わっているというわけです。
普通にゲームを起動すると、プログラムの中のプレイヤー数・ステージ番号初期値
をワークエリアに転送しますから、それを書き替えなければステージ変更はできま
せん。
ゲーム側にプレイヤー数・ステージ変更のフラグをチェックして、ワークエリアを
書き替えるルーチンがあるのかな?
ゲームの方にはそれらしきルーチンは存在しません。ではどうやって?
コナミゲームの4010h〜には意味不明なデータが書いてありますね。
これが謎を解く鍵です。
前置きが長くなりましたが、今月の料理はこのデータの意味からはじめます。
材料
新10倍カートリッジ
似非SCC (切り離しスイッチ付きが便利)
コナミゲームのファイル (シューティングなら最高)
RAM96k以上のMSX
隠し味にこのファイルが必要
作り方
1 似非SCCにSLTEMUパッチをあてた新10倍をインストールします。
2 続いて用意したコナミゲームをKNM-INSTします。
拡張スロット番号は1にして下さい。
3 MSXをリセットして新10倍を起動します。
MODIFYを選んでプレイヤー数・ステージ番号を変更してみましょう。
終わったらゲームスタートして下さい。
4 うまく変更できていたらF1キー、ポーズキー等でゲームを止め、
似非SCCのRAMを切り離した状態でリセットします。
5 SHEM等のモニターを起動します。メモリマッパを切り替えてセグメント5を
表示させて下さい。ここはゲームのページ3に使っていました。
ゲームワークのF280hに対応するメモリを見てみましょう。
見本は沙羅曼陀ですが、ウシャス以前に発売されたゲームの場合はF280hとは限りま
せん。
F280h(4012h) 07h 58h ゲームの製品番号
F284h(4015h) 00h,E2h 実行するプログラムの順番?を保存するアドレス
(00=デモ 05=ゲーム中とか)
F206h(4021h) 02h,E2h よくわからないけど、ここのbit6が1ならプレイ
ヤーアウトみたい。
C8hをC9hにすると無敵になったり、やられ判定
のフラグ?
F288h(401Bh) 00h,E3h プレイヤー数のワークアドレス
F28Ah(4018h) 01h,E3h ステージ番号のワークアドレス
F292h(4017h) 04h E200=04の時にMODIFYで入力した数値をワークに
上書きする。04はゲームスタート直前なのでは。
F293h(401Ah) 06h MAXステージ番号。MODIFYで8と入力すると2面
になるでしょ。サラグラはここを07hに書き替えて、
いきなりベノム艦技ができます。
F298h 07h bit0=1 プレイヤー数変更可
bit1=1 ステージ数変更可
bit2=1 プレイヤー2変更可?
F299h 入力したプレイヤー数(16進数)
F29Ah 〃 (10進数)
F29Bh 入力したステージ番号(16進数)
F29Ch 〃 (10進数)
コナミゲームの意味不明なデータは新10倍のためにあったのです。
でもE200hが04hかどうかのチェックはどうやってするのでしょうね。
チェックルーチンは新10倍に入っているのです。
この続きはまたね
次回は「E200h=04hのチェックはいつするの?」をやる予定