「Neko project II (np2) でチート」
ゲーム
meccでPC98のゲームをチートしてみます。
最新のmeccだと、WindowsXPで使いにくいので4150というバージョンを使用しています。
新しいものでもできるんですけどね。画面が頻繁にチラチラしてしまうのでわざと古いやつ使ってます。
さて、今回のソフトは昔から好きだったシュバルツシルト(最初の)です。
メインメモリのベースアドレスを調べるために、
I286SAVE=trueをiniファイルに追記して、
Debug Utilityのウインドウを出して、Modeをメインメモリダンプにしてみます。

メインメモリの最初の並びは50 01 E4 00ですね。これをmeccで検索します。
80x86系ですからリトルエンディアンですね。逆に並べて検索。
1箇所見つかり、最初のアドレスをベースアドレスにします。
あとメモリサイズは1MB(640KB)でいいでしょう。それ以上大きいところのチートはあきらめます。
結果
ベースアドレス:$004A1E70
メモリサイズ:$00100000
これでアドレス設定ボタンでチート準備完了。

開始直後の第一艦隊の規模、継戦能力、艦隊士気、戦闘経験をいじってみましょう。
継戦能力と艦隊士気は続けて1000がありそうです。1000は16進数でE803hだから。
メインメモリの中から4バイトで03E803E8で検索。
3つ目にありました。前後に艦隊規模9と戦闘経験100も続いていたんですね。全部2バイトずつですけど。

ここを9999である270Fhを逆にして2バイト上書きしてあげると。。。できました。

1ターンも経ってないのに乗組員は超ベテラン(笑)
チートコードとして登録してもよし、単発で書き換えるもよし。ご自由に。
PC98のDOSゲームでHDDにインストールして遊ぶものの場合は、
デバイスドライバの組み込み状況によって、
メインメモリ内のチートコードをあてるアドレスがずれてしまいますから、
環境を固定しないと毎回アドレスを探す必要があります。
セットアップメニューでドライブ数を変えたりしてもずれるかもしれません。(未確認)
あとnp2のバージョンによってアドレスが異なるのでベースアドレスの一部を記載します。
np21 0.83公式版 ベースアドレス:$006A4D40
np2 0.83公式版 ベースアドレス:$004A06C8
2chで拾ったnp21のfmmod_kai8_vc版:$006BC400
2chで拾ったnp21のfmmod_kai8_icc版:$007A9580
ついでにAnex86 v2.78:$01562000
ではまた。

1