コナミの新10倍カートリッジ解析その(2)
  その(1)  その(3)
前月のあらすじ
 1.コナミゲームの4010h〜には意味不明なデータが書いてあるが、それは新10倍が
   使うらしい。
 2.4015hにはプログラムを分岐される番号を保存するアドレスが書いてあるようだ。
 3.4017hのデータの意味は、MODIFYで入力した数値をゲームのワークに上書きする時
   の分岐番号だと思う。
 4.沙羅曼陀の例ではE200h=04hのときにMODIFYで入力した数値をワークに書いている
   ようだ。
   E200h=04hのチェックはゲーム起動中に新10倍が行うようだが、どのように?
今月は「E200h=04のチェックはいつするの」です。
 新10倍対応のゲームって、どれもこんな感じになってますよね。
    LD A,C3h
    LD (FD9Ah),A
    LD HL,ADDRESS
    LD (FD9Bh),HL
    LD SP,F0F0h
 新10倍からゲームを起動すると、そのゲームに使う割り込みのフックを新10倍が
 乗っ取るのです。LD HL,ADDRESS と LD SP,F0F0h の間に細工をして乗っ取るので、
 このように同じ組み方にする必要があるのです。
 といっても、ROMを書き替えることは出来ないので、ゲームのスタートアドレスから
 このあたりまでをRAMに転送して書き替えます。
 ゲームはRAMに転送した部分からスタートし、ROMの LD  SP,F0F0hへジャンプします。
 これで乗っ取り完了、ゲームに新10倍の機能が付加されます。
 STOPキーを押すとゲームが止まり、CTRLキーを押すと画面の下部にメニューが表示さ
 れます。E200h=04hの判定も、拡張された割り込みルーチンの中でやっています。
 わかってしまえば、「そんなことか」なんですけどね。 割り込み乗っ取りの方法を
 詳しく知りたい方は、是非解析して下さい。
 ソリッドスネークでは割り込みのアドレスセットがダブっていますが、新10倍から
 起動したときに割り込みを乗っ取られるので、それを乗っ取り返すためだと思います。
  
    LD  HL,C200h
LD  (FD9Bh),HL   ;ここは新10倍に乗っ取られるので
LD  HL,C200h    ;ここでもう一度乗っ取り
LD  (FD9Bh),HL
  
 この割り込み乗っ取り技を使えば、NSLOADのように市販ゲームにセーブ・ロード機能を
 付けることもできます。 新10倍は乗っ取りの手口があまりにも巧妙で、解析しながら
 感動の連続でしたが、 皆さんから見れば当たり前のテクニックなのかも知れませんね。
 私にとって新10倍はまだまだ不思議なソフトです。
新10倍解析の続き
トップページに戻る