苦労させられた。
外のプロセスからチートってこつをつかむまで難しい。
ここでも分かる人だけ分かる文章になりそう。
とりあえず、
CEPだとサーチが少し難しいので、MECCを使うことにした。
MECCはぐぐれば出てくるので、探して解凍。
まず、process.txtを変える。
KegaFusion3.64のMCDはすでにデフォルトで用意されているが、
メガCDの場合はCD装置側のメモリを変更したいので設定が少しまずいのです。
以下を追加。(最後に1行追加)
---ここから
Fusion 3.64 - MCDkai\Fusion.exe|@$6A52D4|$1000000|$000000||||[BigEndian]
---ここまで。
つまり開始アドレスを$000000に変える。
$FF0000が開始アドレスっていうのはメガドライブ(ROM)の場合の考え方なのよね。
ゲーム起動後にMECCも起動してFusionプロセスを捕まえる。
そのときにアプリケーションは上記で変えたやつにする。
メガCD内のメモリは01570000のリージョン内に取られて、
01620E98(ver3.64の場合)が先頭アドレスになる。つまり000000だ。
この先頭アドレスとの差が、いくつかのメガCD用のコードになる。
コード入れるけど、なぜかプロセスタブのアドレス設定ボタンを押してからじゃないと
コードタブのコード適用ボタンが押せないので注意する。
ファイナルファイトCDの体力減らないコードをサンプルとして置いておく。
体力固定
009890 00FF
00B1DA 00FF
00B1DC 00FF
注意事項としては、
メガドライブのMPU68000はビッグエンディアンなのでこちらも注意しなければならない。また、実質メガCDのコードはほとんど出回っていないのとベースアドレスずれなどの関係で一から改造コードを探す必要がありそう。
使えない例:ルナ ザ・シルバースター
主人公アレスのHPは、
ここでの方法だとコードは0000E340 270FとしたときにHP9999になるが、
他のサイトで、800BF088 0F27というのを見かけた。
最初の2文字は2バイト書き換えるという意味だから放っておくとして、BF088というアドレスがどこを指しているのか良くわからない。なぜこんな値が出てくるのか良くわからないが、使っているエミュレータやバージョンによって違うのかもしれない。
ベースアドレスを調整して、リトルとビッグのエンディアンに注意すれば使いまわしできそうだけど。。。
具体的には、
ここでのKegaFusion3.64のベースアドレスはポインタで示していて01620E98になる。
これを他のサイトのRAR形式を使うなら、ベースアドレスを01570150を直接指定する必要がある。
CEP0.2.4でベースアドレス検索を使用しても01570048が検索されるんだよなぁ。。。
惜しい気もするがずれてるから。。。
2011年6月9日追記
すいません。メガCD側のアドレスの設定が間違っていました。
メガCDのソフトでもメガドライブ本体側のメモリをワークエリアとして使っているゲーム(ここのファイナルファイトCDなど)は、上の記事のままなのですが、メガCD側のメモリを検索するには、以下の定義でした。。。
Fusion 3.64 - MCDkai2\Fusion.exe|@$6A52E8|$80000|$000000||||[BigEndian]
v3.64では、実アドレスは03180020になります。

2