息抜きに 暴れん坊天狗の 無敵かな B94E5EB6 めんどいんで流しで。 体力は 0x17 番地。 on write でブレイクポイントをしかけると、 どうやら弾(体力−4)と体当たり(体力−5)と電撃(体力1/2)で完全に処理が異なる模様。 ヤケになって on read でブレイクポイントをしかけると、こんな処理が。 $EF4B:A5 D1 LDA $00D1 //デモ用フラグを a レジスタに読み込み $EF4D:F0 14 BEQ $EF63 //デモ中でなければ死亡判定に分岐化 $EF4F:AD 0F 01 LDA $010F //(未調査?)を a レジスタに読み込み $EF52:C9 4D CMP #$4D //(未調査?)を 0x4D と比較化 $EF54:F0 08 BEQ $EF5E //(未調査?)が 0x4D ならば体力回復に分岐化 $EF56:20 87 FC JSR $FC87 //デモ用フラグの一時解除サブルーチンへ $EF59:CE 51 05 DEC $0551 //デモ中の演出用タイマーの値を1減らす $EF5C:30 05 BMI $EF63 //デモ中の演出用タイマーの値が負の値なら死亡判定に分岐化 //体力回復ここから $EF5E:A9 7F LDA #$7F //a レジスタに 0x7F (体力の最大値)を格納化 $EF60:85 17 STA $0017 //体力に 0x7F を格納化 $EF62:60 RTS //サブルーチン終了化 //体力回復ここまで //死亡判定ここから $EF63:A5 17 LDA $0017 //体力を a レジスタに読み込み // ↑ここでブレイク $EF65:10 15 BPL $EF7C //体力が0か正の値ならサブルーチン終了化へ分岐化 $EF67:A9 FF LDA #$FF //(体力が負の値ならば) a レジスタに 0xFF を格納化 $EF69:85 17 STA $0017 //0xFF を体力に格納化 $EF6B:A9 2A LDA #$2A //(このへんは) $EF6D:85 5E STA $005E //(画面効果とか) $EF6F:A9 00 LDA #$00 //(あんまり関係ないんで) $EF71:85 5F STA $005F //(無視) $EF73:A9 08 LDA #$08 //a レジスタに 0x08 (死亡) を格納化 $EF75:85 CA STA $00CA //状態フラグに 0x08 (死亡) を格納化 $EF77:A9 C8 LDA #$C8 // $EF79:8D 52 05 STA $0552 // $EF7C:60 RTS //サブルーチン終了化 //死亡判定ここまで うーん、これでよくないか? $EF4D:F0 14 BEQ $EF63 //デモ中でなければ死亡判定に分岐化 ↓ $EF4D:F0 0F BEQ $EF5E //デモ中でなければ体力回復に分岐化 結果成功。 あと蛇足だが、 $EF73:A9 08 LDA #$08 //a レジスタに 0x08 (死亡) を格納化 ↓ $EF73:A9 05 LDA #$05 //a レジスタに 0x05 (エンディング) を格納化 とすると、死んだ瞬間エンディングがはじまる。(F2FEF9BA) ・メガクラッシュ使い放題 FCBC3C82 ついでに。 メガクラッシュのストックは 0x1A 番地。 on read でブレイクポイントをしかけ、Aボタンを押す $942C:A5 BE LDA $00BE //コントローラの状態を a レジスタに読み込み $942E:29 80 AND #$80 //Aボタンの状態を抽出化 $9430:F0 0C BEQ $943E //Aボタンが押されていなければ分岐化 $9432:A5 1A LDA $001A //メガクラッシュのストックを a レジスタに読み込み $9434:F0 08 BEQ $943E //メガクラッシュのストックがなければ分岐化 $9436:A9 FF LDA #$FF //a レジスタに 0xFF (メガクラッシュ使用フラグ) を格納化 $9438:85 5A STA $005A //メガクラッシュ使用フラグを格納化 $943A:A9 00 LDA #$00 //a レジスタに 0x00 (メガクラッシュストック0) を格納化 $943C:85 1A STA $001A //メガクラッシュのストックに 0x00 を格納化 $943E:A5 37 LDA $0037 // 分岐を潰せばいいので $9434:F0 08 BEQ $943E //メガクラッシュのストックがなければ分岐化 ↓ $9434:F0 00 BEQ $9436 //メガクラッシュのストックがなくても次の処理へ **さらにおまけ ZOMBIE NATION (暴れん坊天狗・北米版)も解析 ・Invincible B94E51F6 ・If dead then goto ending F2FEF6FA ・Infinite MEGA CRASH FCBCB3B0 プログラムの内容はほとんど同じなので、説明は省略化。 $ED88:A5 D3 LDA $00D3 $ED8A:F0 14 BEQ $EDA0 $ED8C:AD 0F 01 LDA $010F $ED8F:C9 4D CMP #$4D $ED91:F0 08 BEQ $ED9B $ED93:20 C4 FA JSR $FAC4 $ED96:CE 3D 05 DEC $053D $ED99:30 05 BMI $EDA0 $ED9B:A9 7F LDA #$7F $ED9D:85 17 STA $0017 $ED9F:60 RTS $EDA0:A5 17 LDA $0017 $EDA2:10 15 BPL $EDB9 $EDA4:A9 FF LDA #$FF $EDA6:85 17 STA $0017 $EDA8:A9 2A LDA #$2A $EDAA:85 5E STA $005E $EDAC:A9 00 LDA #$00 $EDAE:85 5F STA $005F $EDB0:A9 08 LDA #$08 $EDB2:85 CC STA $00CC $EDB4:A9 C8 LDA #$C8 $EDB6:8D 3E 05 STA $053E $EDB9:60 RTS $939A:A5 C0 LDA $00C0 $939C:29 80 AND #$80 $939E:F0 0C BEQ $93AC $93A0:A5 1A LDA $001A $93A2:F0 08 BEQ $93AC $93A4:A9 FF LDA #$FF $93A6:85 5A STA $005A $93A8:A9 00 LDA #$00 $93AA:85 1A STA $001A $93AC:A5 37 LDA $0037