Code: Select all
<cheat desc="no hit">
<parameter>
<item value="0x01">P1 </item>
<item value="0x02">P2 </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@0322a = 4eb900062e526700</action> <!-- direct attack / firearms -->
<action>maincpu.rq@03684 = 4eb900062e5e6600</action> <!-- catch / throw -->
<action>maincpu.rq@1a904 = 4eb900062e786600</action> <!-- jiraishin (daimon) -->
<action>maincpu.rq@62e30 = 48e780007001b9fc</action>
<action>maincpu.rq@62e38 = 0010810066027000</action>
<action>maincpu.rq@62e40 = b9fc001083006602</action>
<action>maincpu.rq@62e48 = 70004a804cdf0001</action>
<action>maincpu.rq@62e50 = 4e7561dc67069647</action>
<action>maincpu.rq@62e58 = 072c007c4e7548e7</action>
<action>maincpu.rq@62e60 = 0008284861ca4cdf</action>
<action>maincpu.rq@62e68 = 1000670808280005</action>
<action>maincpu.rq@62e70 = 00e34e7570014e75</action>
<action>maincpu.rq@62e78 = 48e70008284861b0</action>
<action>maincpu.rq@62e80 = 4cdf100067080828</action>
<action>maincpu.rq@62e88 = 000100e04e757001</action>
<action>maincpu.rq@62e90 = 4e75ffffffffffff</action>
<!--
62e30 | 48e7 8000 : movem.l D0,-(A7) // player check routine
62e34 | 7001 : moveq #$1,D0
62e36 | b9fc 0010 8100 : cmpa.l #$108100,A4
62e3c | 6602 : bne $62e40
62e3e | 7000 : moveq #$0,D0
62e40 | b9fc 0010 8300 : cmpa.l #$108300,A4
62e46 | 6602 : bne $62e4a
62e48 | 7000 : moveq #$0,D0
62e4a | 4a80 : tst.l D0
62e4c | 4cdf 0001 : movem.l (A7)+,D0
62e50 | 4e75 : rts
62e52 | 61dc : bsr $62e30 // direct attack / firearms
62e54 | 6706 : beq $62e5c
62e56 | 9647 : sub.w D7,D3
62e58 | 072c 007c : btst D3,($7c,A4)
62e5c | 4e75 : rts
62e5e | 48e7 0008 : movem.l A4,-(A7) // catch / throw
62e62 | 2848 : movea.l A0,A4
62e64 | 61ca : bsr $62e30
62e66 | 4cdf 1000 : movem.l (A7)+,A4
62e6a | 6708 : beq $62e74
62e6c | 0828 0005 00e3 : btst #$5,($e3,A0)
62e72 | 4e75 : rts
62e74 | 7001 : moveq #$1,D0
62e76 | 4e75 : rts
62e78 | 48e7 0008 : movem.l A4,-(A7) // jiraishin (daimon)
62e7c | 2848 : movea.l A0,A4
62e7e | 61b0 : bsr $62e30
62e80 | 4cdf 1000 : movem.l (A7)+,A4
62e84 | 6708 : beq $62e8e
62e86 | 0828 0001 00e0 : btst #$1,($e0,A0)
62e8c | 4e75 : rts
62e8e | 7001 : movq #$1,D0
62e90 | 4e75 : rts
-->
</script>
<script state="change">
<action >maincpu.rb@62e3c = 60</action>
<action >maincpu.rb@62e46 = 60</action>
<action condition="(param band 01) != 00">maincpu.rb@62e3c = 66</action>
<action condition="(param band 02) != 00">maincpu.rb@62e46 = 66</action>
</script>
<script state="off">
<action>maincpu.rq@0322a = 9647072c007c6700</action>
<action>maincpu.rq@03684 = 0828000500e36600</action>
<action>maincpu.rq@1a904 = 0828000100e06600</action>
<action>maincpu.rq@62e30 = ffffffffffffffff</action>
<action>maincpu.rq@62e38 = ffffffffffffffff</action>
<action>maincpu.rq@62e40 = ffffffffffffffff</action>
<action>maincpu.rq@62e48 = ffffffffffffffff</action>
<action>maincpu.rq@62e50 = ffffffffffffffff</action>
<action>maincpu.rq@62e58 = ffffffffffffffff</action>
<action>maincpu.rq@62e60 = ffffffffffffffff</action>
<action>maincpu.rq@62e68 = ffffffffffffffff</action>
<action>maincpu.rq@62e70 = ffffffffffffffff</action>
<action>maincpu.rq@62e78 = ffffffffffffffff</action>
<action>maincpu.rq@62e80 = ffffffffffffffff</action>
<action>maincpu.rq@62e88 = ffffffffffffffff</action>
<action>maincpu.rq@62e90 = ffffffffffffffff</action>
</script>
</cheat>
<cheat desc="enable max special move">
<parameter>
<item value="0x01">P1 </item>
<item value="0x02">P2 </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@1ab76 = 4ef900062eba6600</action>
<action>maincpu.rq@62ea0 = 7001b9fc00108100</action>
<action>maincpu.rq@62ea8 = 66027000b9fc0010</action>
<action>maincpu.rq@62eb0 = 8300660270004a80</action>
<action>maincpu.rq@62eb8 = 4e7561e4670c082d</action>
<action>maincpu.rq@62ec0 = 000580004ef90001</action>
<action>maincpu.rq@62ec8 = ab7c4ef90001abd6</action>
<!--
62ea0 | 7001 : moveq #$1, D0 // player check routine
62ea2 | b9fc 0010 8100 : cmpa.l #$108100, A4
62ea8 | 6602 : bne $62eac
62eaa | 7000 : moveq #$0, D0
62eac | b9fc 0010 8300 : cmpa.l #$108300, A4
62eb2 | 6602 : bne $62eb6
62eb4 | 7000 : moveq #$0, D0
62eb6 | 4a80 : tst.l D0
62eb8 | 4e75 : rts
62eba | 61e4 : bsr $62ea0 // main routine
62ebc | 670c : beq $62eca
62ebe | 082d 0005 8000 : btst #$5, (-$8000,A5)
62ec4 | 4ef9 0001 ab7c : jmp $1ab7c.l
62eca | 4ef9 0001 abd6 : jmp $1abd6.l
-->
</script>
<script state="change">
<action >maincpu.rb@62ea8 = 60</action>
<action >maincpu.rb@62eb2 = 60</action>
<action condition="(param band 01) != 00">maincpu.rb@62ea8 = 66</action>
<action condition="(param band 02) != 00">maincpu.rb@62eb2 = 66</action>
</script>
<script state="off">
<action>maincpu.rq@1ab76 = 082d000580006600</action>
<action>maincpu.rq@62ea0 = ffffffffffffffff</action>
<action>maincpu.rq@62ea8 = ffffffffffffffff</action>
<action>maincpu.rq@62eb0 = ffffffffffffffff</action>
<action>maincpu.rq@62eb8 = ffffffffffffffff</action>
<action>maincpu.rq@62ec0 = ffffffffffffffff</action>
<action>maincpu.rq@62ec8 = ffffffffffffffff</action>
</script>
</cheat>
<cheat desc="timer speed">
<parameter>
<item value="0x00ff">01 (slow)</item>
<item value="0x0064">02 </item>
<item value="0x0032">03 </item>
<item value="0x0016">04 </item>
<item value="0x0001">05 (fast)</item>
</parameter>
<script state="on">
<action>maincpu.rd@200bc = 1b7c0000</action>
</script>
<script state="change">
<action>maincpu.rw@200be = param</action>
</script>
<script state="off">
<action>maincpu.rd@200bc = 1b6d2838</action>
</script>
</cheat>
"enable max special move" is only for "max" special move (energy bar is flashing AND power gauge is maximum), not "normal" (energy bar is flashing OR power gauge is maximum).
For example, you can't do "power geyser" but "triple power geyser" in case of Terry.
I'm struggling with "easy move" code to test "no hit" though it's hard. kof96 compares "input history" with move command table in ROM directly and doesn't save any temporary flag for input like kof94 and 95.