SDスナッチャー解析  1. 2. 3.


  またSDスナッチャー解析です。RuMSXで正常に動作しません。
  敵を倒してもゴールドが0だったり、敵の攻撃がなかったり、どうなっているの
  でしょう。SDスナッチャーも奥が深いです。


  敵を倒したときに加算されるステータスは、ワークエリアにこのように入ります。
    CEF0-1h  GOLD
    CEF2-3h  RANK
    CEF4-5h  STR 
    CEF6-7h  DEF
    CEF8-9h  SPD

  プレイヤーのステータスはどこに入っているか、知ってますよね。
    CE80h  レベル
    CE81h   LIFE
    CE82-3h  LIFE(EXP)
    CE84h   STR
    CE85-6h  STR(EXP)
    CE87h   DEF
    CE88-9h  DEF(EXP)
    CE8Ah   SPD
    CE8B-Ch  SPD(EXP)
    CE8D-Eh GOLD

  ゴールドが増えない原因は、CEF0-1hに00,00が入るためです。
  そこまでは簡単にわかりますが、これからが大変。CEF0-9hの値はどこから得る?

  RANKはC2BD-Ehの値から求めています。SPDはC2BF-C0h、DEFはC2C1-2h、
  STRはC2C3-4h、GOLDはC2CD-Ehです。RuMSXはC2BDh〜の値が異常なのです。
  更にこの値はどこから得る?

  ディスク1、67セクター +1E9(87E9h)のルーチンを実行すると、C2BFh〜に数値
  がセットされます。87E9hルーチンは難しくて解析できません。
  ここでストップしてます。  

  敵のステータス表?があって、そこから転送するのかなとか、いろいろ想像して
  いますがゲームプログラムは難しい。ディスクゲームは大きいし、DOS解析の方が
  楽かも知れません。

  戦闘シーンのメモリマップです。
	0200-3FFFh	481-511セクター
	4000-7FFFh	 32-63セクター
	8000-ADFFh	 64-86セクター


  87E9hルーチン実行後にC2BFh〜をRuMSXの時と同じ値に書き替えると、実機でも
  ゴールド0になります。このルーチンを解析するしかないですね。

(つづく)

  SDスナッチャー解析の続きです。   87E9hルーチンを更に解析、89D2h〜のルーチンで敵のダメージを求めていることが   わかりました。   89D2hルーチンの途中にRAM,VRAMセーバーを挟んで、RuMSXとfMSXFANでの動作の違   いを調べていますが、原始的な方法のため作業がはかどりません。   fMSXFANでは正常に動作します。   それにしても異常動作の原因がさっぱりわかりません。   エミュレータなのでVRAM絡みかなと思いますが、敵ダメージ計算ではVRAMから   データ転送しているところが見つかりません。ダメージ計算のプログラム自身が   VRAMから転送された物なのですが、どう見ても正常です。   でもセーブしたRAMを見ると、RuとFANでは違うところが多いし。   謎ですね。森博司のミステリーより深い謎。 (つづく)
スナッチャー解析 トップページに戻る