Repost because of serious bug.
wh1.xml
Code: Select all
<!-- World Heroes (ALM-005) -->
<mamecheat version="1">
<cheat desc="no hit">
<!-- trap (mine) explodes when you touch though no damage -->
<parameter>
<item value="0x01">P1 </item>
<item value="0x02">P2 </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@62BD8 = 4EB900071F786600</action> <!-- direct attack -->
<action>maincpu.rq@62E0A = 4EB900071F786622</action> <!-- firearms -->
<action>maincpu.rq@1C00E = 4EB900071F844E71</action> <!-- throw -->
<action>maincpu.rq@1BEDA = 4EB900071F926700</action> <!-- throw (air) -->
<action>maincpu.rq@641BA = 4EB900071F786648</action> <!-- trap -->
<action>maincpu.rq@71F70 = 0828000000FF4E75</action>
<action>maincpu.rq@71F78 = 61F6660608280003</action>
<action>maincpu.rq@71F80 = 60D54E7561EA6608</action>
<action>maincpu.rq@71F88 = 102D60D6020000C0</action>
<action>maincpu.rq@71F90 = 4E7561DC66080828</action>
<action>maincpu.rq@71F98 = 000060D54E754200</action>
<action>maincpu.rq@71FA0 = 4E75000000000000</action>
<!--
71F70 | 0828 0000 00FF : btst #$0, ($ff,A0) // common flag check routine
71F76 | 4E75 : rts
71F78 | 61F6 : bsr $71f70 // direct attack, firearms, trap
71F7A | 6606 : bne $71f82
71F7C | 0828 0003 60D5 : btst #$3, ($60d5,A0)
71F82 | 4E75 : rts
71F84 | 61EA : bsr $71f70 // throw
71F86 | 6608 : bne $71f90
71F88 | 102D 60D6 : move.b ($60d6,A5), D0
71F8C | 0200 00C0 : andi.b #$c0, D0
71F90 | 4E75 : rts
71F92 | 61DC : bsr $71f70 // throw (air)
71F94 | 6608 : bne $71f9e
71F96 | 0828 0000 60D5 : btst #$0, ($60d5,A0)
71F9C | 4E75 : rts
71F9E | 4200 : clr.b D0
71FA0 | 4E75 : rts
-->
</script>
<script state="run">
<action condition="(param band 01) == 00">maincpu.pb@1000FF = maincpu.pb@1000FF band FE</action>
<action condition="(param band 02) == 00">maincpu.pb@1001FF = maincpu.pb@1001FF band FE</action>
<action condition="(param band 01) != 00">maincpu.pb@1000FF = maincpu.pb@1000FF bor 01</action>
<action condition="(param band 02) != 00">maincpu.pb@1001FF = maincpu.pb@1001FF bor 01</action>
</script>
<script state="off">
<action>maincpu.pb@1000FF = maincpu.pb@1000FF band FE</action>
<action>maincpu.pb@1001FF = maincpu.pb@1001FF band FE</action>
<action>maincpu.rq@062BD8 = 0828000360D56600 </action>
<action>maincpu.rq@062E0A = 0828000360D56622 </action>
<action>maincpu.rq@01C00E = 102D60D6020000C0 </action>
<action>maincpu.rq@01BEDA = 0828000060D56700 </action>
<action>maincpu.rq@0641BA = 0828000360D56622 </action>
<action>maincpu.rq@071F70 = 0000000000000000 </action>
<action>maincpu.rq@071F78 = 0000000000000000 </action>
<action>maincpu.rq@071F80 = 0000000000000000 </action>
<action>maincpu.rq@071F88 = 0000000000000000 </action>
<action>maincpu.rq@071F90 = 0000000000000000 </action>
<action>maincpu.rq@071F98 = 0000000000000000 </action>
<action>maincpu.rq@071FA0 = 0000000000000000 </action>
</script>
</cheat>
<cheat desc="auto fire">
<parameter>
<item value="0x01">P1 </item>
<item value="0x02">P2 </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@1A46A = 4EB900071FB04E71</action>
<action>maincpu.rq@71FB0 = 102D6001082D0001</action>
<action>maincpu.rq@71FB8 = 00FF6704102D6000</action>
<action>maincpu.rq@71FC0 = 080000044E750000</action>
<!--
71FB0 | 102D 6001 : move.b ($6001,A5), D0
71FB4 | 082D 0001 00FF : btst #$1, ($ff,A5)
71FBA | 6704 : beq $71fc0
71FBC | 102D 6000 : move.b ($6000,A5), D0
71FC0 | 0800 0004 : btst #$4, D0
71FC4 | 4E75 : rts
-->
</script>
<script state="run">
<action condition="(param band 01) == 00">maincpu.pb@1000FF = maincpu.pb@1000FF band FD</action>
<action condition="(param band 02) == 00">maincpu.pb@1001FF = maincpu.pb@1001FF band FD</action>
<action condition="(param band 01) != 00">maincpu.pb@1000FF = maincpu.pb@1000FF bor 02</action>
<action condition="(param band 02) != 00">maincpu.pb@1001FF = maincpu.pb@1001FF bor 02</action>
</script>
<script state="off">
<action>maincpu.pb@1000FF = maincpu.pb@1000FF band FD</action>
<action>maincpu.pb@1001FF = maincpu.pb@1001FF band FD</action>
<action>maincpu.rq@01A46A = 102D600108000004 </action>
<action>maincpu.rq@071FB0 = 0000000000000000 </action>
<action>maincpu.rq@071FB8 = 0000000000000000 </action>
<action>maincpu.rq@071FC0 = 0000000000000000 </action>
</script>
</cheat>
<cheat desc="attack speed up">
<parameter>
<item value="0x01">P1 </item>
<item value="0x02">P2 </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@794DC = 4EB900071FD04E71</action>
<action>maincpu.rq@71FD0 = 30360000082D0002</action>
<action>maincpu.rq@71FD8 = 00FF6704303CFFFF</action>
<action>maincpu.rq@71FE0 = 916D60E04E750000</action>
<!--
71FD0 | 3036 0000 : move.w (A6,D0.w), D0
71FD4 | 082D 0002 00FF : btst #$2, ($ff,A5)
71FDA | 6704 : beq $71fe0
71FDC | 303C FFFF : move.w #$ffff, D0
71FE0 | 916D 60E0 : sub.w D0, ($60e0,A5)
71FE4 | 4E75 : rts
-->
</script>
<script state="run">
<action condition="(param band 01) == 00">maincpu.pb@1000FF = maincpu.pb@1000FF band FB</action>
<action condition="(param band 02) == 00">maincpu.pb@1001FF = maincpu.pb@1001FF band FB</action>
<action condition="(param band 01) != 00">maincpu.pb@1000FF = maincpu.pb@1000FF bor 04</action>
<action condition="(param band 02) != 00">maincpu.pb@1001FF = maincpu.pb@1001FF bor 04</action>
</script>
<script state="off">
<action>maincpu.pb@1000FF = maincpu.pb@1000FF band FB</action>
<action>maincpu.pb@1001FF = maincpu.pb@1001FF band FB</action>
<action>maincpu.rq@0794DC = 30360000916D60E0 </action>
<action>maincpu.rq@071FD0 = 0000000000000000 </action>
<action>maincpu.rq@071FD8 = 0000000000000000 </action>
<action>maincpu.rq@071FE0 = 0000000000000000 </action>
</script>
</cheat>
<cheat desc="timer speed">
<parameter>
<item value="0x7f">01 (slow)</item>
<item value="0x60">02 </item>
<item value="0x40">03 </item>
<item value="0x20">04 </item>
<item value="0x00">05 (fast)</item>
</parameter>
<script state="on">
<action>maincpu.rw@1E1C4 = 1D7C</action>
</script>
<script state="change">
<action>maincpu.rw@1E1B2 = param</action>
<action>maincpu.rw@1E1BE = param</action>
<action>maincpu.rw@1E1C6 = param</action>
</script>
<script state="off">
<action>maincpu.rw@1E1B2 = 0040 </action>
<action>maincpu.rw@1E1BE = 0036 </action>
<action>maincpu.rd@1E1C4 = 1D6E30C5</action>
</script>
</cheat>
<cheat desc="bonus stage is...">
<parameter>
<item value="0x6000000c">none </item>
<item value="0x600000f4">always 1</item>
<item value="0x60000118">always 2</item>
</parameter>
<script state="change">
<action>maincpu.rd@A360 = param</action>
</script>
<script state="off">
<action>maincpu.rd@A360 = 670000EA</action>
</script>
</cheat>
<cheat desc="selectable same chracter">
<script state="on">
<action>maincpu.rb@142F7 = 04</action> <!-- decision -->
<action>maincpu.rb@14373 = 04</action> <!-- select -->
</script>
<script state="off">
<action>maincpu.rb@142F7 = 46</action>
<action>maincpu.rb@14373 = 06</action>
</script>
</cheat>
<cheat desc="sound test mode">
<!-- don't play code 0x01 because of no sound response -->
<!-- valid bank number seems to be 0x00 only? -->
<comment>reset the game (F3) to enter sound test mode</comment>
<script state="on">
<action>maincpu.rd@F00B6 = 000F09AC </action> <!-- check sound code in interrupt -->
<action>maincpu.rd@F4C32 = 00071FF0 </action>
<action>maincpu.rq@71FF0 = 41EE010043E80001</action>
<action>maincpu.rq@71FF8 = 247C000F09701401</action>
<action>maincpu.rq@72000 = 123900300000B401</action>
<action>maincpu.rq@72008 = 67F40C0100FB6602</action>
<action>maincpu.rq@72010 = 53100C0100F76602</action>
<action>maincpu.rq@72018 = 52100C0100FD6604</action>
<action>maincpu.rq@72020 = 041000100C0100FE</action>
<action>maincpu.rq@72028 = 6604061000100C01</action>
<action>maincpu.rq@72030 = 00BB660253110C01</action>
<action>maincpu.rq@72038 = 00B7660252110211</action>
<action>maincpu.rq@72040 = 000F0C0100EF660E</action>
<action>maincpu.rq@72048 = 1011670606000010</action>
<action>maincpu.rq@72050 = 4E9210104E920C01</action>
<action>maincpu.rq@72058 = 00DF660C103C0001</action>
<action>maincpu.rq@72060 = 4E92103C00034E92</action>
<action>maincpu.rq@72068 = 6094000000000000</action>
<!--
71FF0 | 41EE 0100 : lea ($100,A6), A0 // sound code addres ($108100)
71FF4 | 43E8 0001 : lea ($1,A0), A1 // bank address ($108101)
71FF8 | 247C 000F 0970 : movea.l #$f0970, A2 // sound latch routine address
71FFE | 1401 : move.b D1, D2
72000 | 1239 0030 0000 : move.b $300000.l, D1 // read input
72006 | B401 : cmp.b D1, D2
72008 | 67F4 : beq $71ffe
7200A | 0C01 00FB : cmpi.b #-$5, D1
7200E | 6602 : bne $72012
72010 | 5310 : subq.b #1, (A0) // decrease code -01
72012 | 0C01 00F7 : cmpi.b #-$9, D1
72016 | 6602 : bne $7201a
72018 | 5210 : addq.b #1, (A0) // increase code +01
7201A | 0C01 00FD : cmpi.b #-$3, D1
7201E | 6604 : bne $72024
72020 | 0410 0010 : subi.b #$10, (A0) // decrease code -10
72024 | 0C01 00FE : cmpi.b #-$2, D1
72028 | 6604 : bne $7202e
7202A | 0610 0010 : addi.b #$10, (A0) // increase code +10
7202E | 0C01 00BB : cmpi.b #-$45, D1
72032 | 6602 : bne $72036
72034 | 5311 : subq.b #1, (A1) // decrease bank -01
72036 | 0C01 00B7 : cmpi.b #-$49, D1
7203A | 6602 : bne $7203e
7203C | 5211 : addq.b #1, (A1) // increase bank +01
7203E | 0211 000F : andi.b #$f, (A1)
72042 | 0C01 00EF : cmpi.b #-$11, D1
72046 | 660E : bne $72056
72048 | 1011 : move.b (A1), D0 // play sound
7204A | 6706 : beq $72052
7204C | 0600 0010 : addi.b #$10, D0
72050 | 4E92 : jsr (A2)
72052 | 1010 : move.b (A0), D0
72054 | 4E92 : jsr (A2)
72056 | 0C01 00DF : cmpi.b #-$21, D1
7205A | 660C : bne $72068
7205C | 103C 0001 : move.b #$1, D0 // stop sound
72060 | 4E92 : jsr (A2)
72062 | 103C 0003 : move.b #$3, D0
72066 | 4E92 : jsr (A2)
72068 | 6094 : bra $71ffe
-->
</script>
<script state="run">
<output format="----- world heroes sound test mode -----" line="10" align="center" />
<output format="left : decrease code -01" line="11" align="center" />
<output format="right : increase code +01" line="12" align="center" />
<output format="down : decrease code -10" line="13" align="center" />
<output format="up : increase code +10" line="14" align="center" />
<output format="button 3 + left : decrease bank -01" line="15" align="center" />
<output format="button 3 + right : increase bank +01" line="16" align="center" />
<output format="button 1 : play sound" line="17" align="center" />
<output format="button 2 : stop sound" line="18" align="center" />
<output format="----------------------------" line="19" align="center" />
<output format="<< bank %X >>" line="21" align="center" >
<argument>maincpu.pb@108101</argument>
</output>
<output format="<< sound code %02X >>" line="23" align="center" >
<argument>maincpu.pb@108100</argument>
</output>
</script>
<script state="off">
<action>maincpu.rd@F00B6 = 00C0044A </action>
<action>maincpu.rd@F4C32 = 00009200 </action>
<action>maincpu.rq@71FF0 = 0000000000000000</action>
<action>maincpu.rq@71FF8 = 0000000000000000</action>
<action>maincpu.rq@72000 = 0000000000000000</action>
<action>maincpu.rq@72008 = 0000000000000000</action>
<action>maincpu.rq@72010 = 0000000000000000</action>
<action>maincpu.rq@72018 = 0000000000000000</action>
<action>maincpu.rq@72020 = 0000000000000000</action>
<action>maincpu.rq@72028 = 0000000000000000</action>
<action>maincpu.rq@72030 = 0000000000000000</action>
<action>maincpu.rq@72038 = 0000000000000000</action>
<action>maincpu.rq@72040 = 0000000000000000</action>
<action>maincpu.rq@72048 = 0000000000000000</action>
<action>maincpu.rq@72050 = 0000000000000000</action>
<action>maincpu.rq@72058 = 0000000000000000</action>
<action>maincpu.rq@72060 = 0000000000000000</action>
<action>maincpu.rq@72068 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="skip ram/rom check">
<script state="on">
<action condition="maincpu.rd@C11AFC == 3A3C7FFF">temp0 = C11AFC, maincpu.rd@temp0 = 60000168</action> <!-- euro, euro-s1, japan-s2, japan-s1 -->
<action condition="maincpu.rd@C10C20 == 3A3C7FFF">temp0 = C10C20, maincpu.rd@temp0 = 60000168</action> <!-- asia-mv1c, japan-mv1b -->
<action condition="maincpu.rd@C10AFC == 3A3C7FFF">temp0 = C10AFC, maincpu.rd@temp0 = 60000168</action> <!-- asia-mv1b, japan-mv1c -->
<action condition="maincpu.rd@C11AD2 == 3A3C7FFF">temp0 = C11AD2, maincpu.rd@temp0 = 60000168</action> <!-- us, us-e, us-v2, us-u4 -->
<action condition="maincpu.rd@C11ABC == 3A3C7FFF">temp0 = C11ABC, maincpu.rd@temp0 = 60000104</action> <!-- us-u3 -->
<action condition="maincpu.rd@C11C24 == 3A3C7FFF">temp0 = C11C24, maincpu.rd@temp0 = 60000168</action> <!-- japan -->
<action condition="maincpu.rd@C11AE6 == 3A3C7FFF">temp0 = C11AE6, maincpu.rd@temp0 = 60000104</action> <!-- japan-j3a -->
<action condition="maincpu.rd@C11BC6 == 3A3C7FFF">temp0 = C11BC6, maincpu.rd@temp0 = 6000017C</action> <!-- japan-hotel -->
</script>
<script state="off">
<action>maincpu.rd@temp0 = 3A3C7FFF</action>
</script>
</cheat>
</mamecheat>
wh1h.xml
Code: Select all
<!-- World Heroes (ALH-005) -->
<mamecheat version="1">
<cheat desc="no hit">
<!-- trap (mine) explodes when you touch though no damage -->
<parameter>
<item value="0x01">P1 </item>
<item value="0x02">P2 </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@62E12 = 4EB90006D6786600</action> <!-- direct attack -->
<action>maincpu.rq@63044 = 4EB90006D6786622</action> <!-- firearms -->
<action>maincpu.rq@1C160 = 4EB90006D6844E71</action> <!-- throw -->
<action>maincpu.rq@1C02C = 4EB90006D6926700</action> <!-- throw (air) -->
<action>maincpu.rq@6440E = 4EB90006D6786648</action> <!-- trap -->
<action>maincpu.rq@6D670 = 0828000000FF4E75</action>
<action>maincpu.rq@6D678 = 61F6660608280003</action>
<action>maincpu.rq@6D680 = 60D54E7561EA6608</action>
<action>maincpu.rq@6D688 = 102D60D6020000C0</action>
<action>maincpu.rq@6D690 = 4E7561DC66080828</action>
<action>maincpu.rq@6D698 = 000060D54E754200</action>
<action>maincpu.rq@6D6A0 = 4E75000000000000</action>
<!--
6D670 | 0828 0000 00FF : btst #$0, ($ff,A0) // common flag check routine
6D676 | 4E75 : rts
6D678 | 61F6 : bsr $6d670 // direct attack, firearms, trap
6D67A | 6606 : bne $6d682
6D67C | 0828 0003 60D5 : btst #$3, ($60d5,A0)
6D682 | 4E75 : rts
6D684 | 61EA : bsr $6d670 // throw
6D686 | 6608 : bne $6d690
6D688 | 102D 60D6 : move.b ($60d6,A5), D0
6D68C | 0200 00C0 : andi.b #$c0, D0
6D690 | 4E75 : rts
6D692 | 61DC : bsr $6d670 // throw (air)
6D694 | 6608 : bne $6d69e
6D696 | 0828 0000 60D5 : btst #$0, ($60d5,A0)
6D69C | 4E75 : rts
6D69E | 4200 : clr.b D0
6D6A0 | 4E75 : rts
-->
</script>
<script state="run">
<action condition="(param band 01) == 00">maincpu.pb@1000FF = maincpu.pb@1000FF band FE</action>
<action condition="(param band 02) == 00">maincpu.pb@1001FF = maincpu.pb@1001FF band FE</action>
<action condition="(param band 01) != 00">maincpu.pb@1000FF = maincpu.pb@1000FF bor 01</action>
<action condition="(param band 02) != 00">maincpu.pb@1001FF = maincpu.pb@1001FF bor 01</action>
</script>
<script state="off">
<action>maincpu.pb@1000FF = maincpu.pb@1000FF band FE</action>
<action>maincpu.pb@1001FF = maincpu.pb@1001FF band FE</action>
<action>maincpu.rq@062E12 = 0828000360D56600 </action>
<action>maincpu.rq@063044 = 0828000360D56622 </action>
<action>maincpu.rq@01C160 = 102D60D6020000C0 </action>
<action>maincpu.rq@01C02C = 0828000060D56700 </action>
<action>maincpu.rq@06440E = 0828000360D56648 </action>
<action>maincpu.rq@06D670 = 0000000000000000 </action>
<action>maincpu.rq@06D678 = 0000000000000000 </action>
<action>maincpu.rq@06D680 = 0000000000000000 </action>
<action>maincpu.rq@06D688 = 0000000000000000 </action>
<action>maincpu.rq@06D690 = 0000000000000000 </action>
<action>maincpu.rq@06D698 = 0000000000000000 </action>
<action>maincpu.rq@06D6A0 = 0000000000000000 </action>
</script>
</cheat>
<cheat desc="auto fire">
<parameter>
<item value="0x01">P1 </item>
<item value="0x02">P2 </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@1A58A = 4EB90006D6B04E71</action>
<action>maincpu.rq@6D6B0 = 102D6001082D0001</action>
<action>maincpu.rq@6D6B8 = 00FF6704102D6000</action>
<action>maincpu.rq@6D6C0 = 080000044E750000</action>
<!--
6D6B0 | 102D 6001 : move.b ($6001,A5), D0
6D6B4 | 082D 0001 00FF : btst #$1, ($ff,A5)
6D6BA | 6704 : beq $6d6c0
6D6BC | 102D 6000 : move.b ($6000,A5), D0
6D6C0 | 0800 0004 : btst #$4, D0
6D6C4 | 4E75 : rts
-->
</script>
<script state="run">
<action condition="(param band 01) == 00">maincpu.pb@1000FF = maincpu.pb@1000FF band FD</action>
<action condition="(param band 02) == 00">maincpu.pb@1001FF = maincpu.pb@1001FF band FD</action>
<action condition="(param band 01) != 00">maincpu.pb@1000FF = maincpu.pb@1000FF bor 02</action>
<action condition="(param band 02) != 00">maincpu.pb@1001FF = maincpu.pb@1001FF bor 02</action>
</script>
<script state="off">
<action>maincpu.pb@1000FF = maincpu.pb@1000FF band FD</action>
<action>maincpu.pb@1001FF = maincpu.pb@1001FF band FD</action>
<action>maincpu.rq@01A58A = 102D600108000004 </action>
<action>maincpu.rq@06D6B0 = 0000000000000000 </action>
<action>maincpu.rq@06D6B8 = 0000000000000000 </action>
<action>maincpu.rq@06D6C0 = 0000000000000000 </action>
</script>
</cheat>
<cheat desc="attack speed up">
<parameter>
<item value="0x01">P1 </item>
<item value="0x02">P2 </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@79808 = 4EB90006D6D04E71</action>
<action>maincpu.rq@6D6D0 = 30360000082D0002</action>
<action>maincpu.rq@6D6D8 = 00FF6704303CFFFF</action>
<action>maincpu.rq@6D6E0 = 916D60E04E750000</action>
<!--
6D6D0 | 3036 0000 : move.w (A6,D0.w), D0
6D6D4 | 082D 0002 00FF : btst #$2, ($ff,A5)
6D6DA | 6704 : beq $6d6e0
6D6DC | 303C FFFF : move.w #$ffff, D0
6D6E0 | 916D 60E0 : sub.w D0, ($60e0,A5)
6D6E4 | 4E75 : rts
-->
</script>
<script state="run">
<action condition="(param band 01) == 00">maincpu.pb@1000FF = maincpu.pb@1000FF band FB</action>
<action condition="(param band 02) == 00">maincpu.pb@1001FF = maincpu.pb@1001FF band FB</action>
<action condition="(param band 01) != 00">maincpu.pb@1000FF = maincpu.pb@1000FF bor 04</action>
<action condition="(param band 02) != 00">maincpu.pb@1001FF = maincpu.pb@1001FF bor 04</action>
</script>
<script state="off">
<action>maincpu.pb@1000FF = maincpu.pb@1000FF band FB</action>
<action>maincpu.pb@1001FF = maincpu.pb@1001FF band FB</action>
<action>maincpu.rq@07808C = 30360000916D60E0 </action>
<action>maincpu.rq@06D6D0 = 0000000000000000 </action>
<action>maincpu.rq@06D6D8 = 0000000000000000 </action>
<action>maincpu.rq@06D6E0 = 0000000000000000 </action>
</script>
</cheat>
<cheat desc="timer speed">
<parameter>
<item value="0x7f">01 (slow)</item>
<item value="0x60">02 </item>
<item value="0x40">03 </item>
<item value="0x20">04 </item>
<item value="0x00">05 (fast)</item>
</parameter>
<script state="on">
<action>maincpu.rw@1E356 = 1D7C</action>
</script>
<script state="change">
<action>maincpu.rw@1E344 = param</action>
<action>maincpu.rw@1E350 = param</action>
<action>maincpu.rw@1E358 = param</action>
</script>
<script state="off">
<action>maincpu.rw@1E344 = 0040 </action>
<action>maincpu.rw@1E350 = 0036 </action>
<action>maincpu.rd@1E356 = 1D6E30C5</action>
</script>
</cheat>
<cheat desc="bonus stage is...">
<parameter>
<item value="0x6000000c">none </item>
<item value="0x600000f4">always 1</item>
<item value="0x60000118">always 2</item>
</parameter>
<script state="change">
<action>maincpu.rd@A388 = param</action>
</script>
<script state="off">
<action>maincpu.rd@A388 = 670000EA</action>
</script>
</cheat>
<cheat desc="selectable same chracter">
<script state="on">
<action>maincpu.rb@143B1 = 04</action> <!-- decision -->
<action>maincpu.rb@1442D = 04</action> <!-- select -->
</script>
<script state="off">
<action>maincpu.rb@143B1 = 46</action>
<action>maincpu.rb@1442D = 06</action>
</script>
</cheat>
<cheat desc="sound test mode">
<!-- don't play code 0x01 because of no sound response -->
<!-- valid bank number seems to be 0x00 only? -->
<comment>reset the game (F3) to enter sound test mode</comment>
<script state="on">
<action>maincpu.rd@F00B6 = 000F09AC </action> <!-- check sound code in interrupt -->
<action>maincpu.rd@F4C32 = 0006D6F0 </action>
<action>maincpu.rq@6D6F0 = 41EE010043E80001</action>
<action>maincpu.rq@6D6F8 = 247C000F09701401</action>
<action>maincpu.rq@6D700 = 123900300000B401</action>
<action>maincpu.rq@6D708 = 67F40C0100FB6602</action>
<action>maincpu.rq@6D710 = 53100C0100F76602</action>
<action>maincpu.rq@6D718 = 52100C0100FD6604</action>
<action>maincpu.rq@6D720 = 041000100C0100FE</action>
<action>maincpu.rq@6D728 = 6604061000100C01</action>
<action>maincpu.rq@6D730 = 00BB660253110C01</action>
<action>maincpu.rq@6D738 = 00B7660252110211</action>
<action>maincpu.rq@6D740 = 000F0C0100EF660E</action>
<action>maincpu.rq@6D748 = 1011670606000010</action>
<action>maincpu.rq@6D750 = 4E9210104E920C01</action>
<action>maincpu.rq@6D758 = 00DF660C103C0001</action>
<action>maincpu.rq@6D760 = 4E92103C00034E92</action>
<action>maincpu.rq@6D768 = 6094000000000000</action>
<!--
6D6F0 | 41EE 0100 : lea ($100,A6), A0 // sound code addres ($108100)
6D6F4 | 43E8 0001 : lea ($1,A0), A1 // bank address ($108101)
6D6F8 | 247C 000F 0970 : movea.l #$f0970, A2 // sound latch routine address
6D6FE | 1401 : move.b D1, D2
6D700 | 1239 0030 0000 : move.b $300000.l, D1 // read input
6D706 | B401 : cmp.b D1, D2
6D708 | 67F4 : beq $6d6fe
6D70A | 0C01 00FB : cmpi.b #-$5, D1
6D70E | 6602 : bne $6d712
6D710 | 5310 : subq.b #1, (A0) // decrease code -01
6D712 | 0C01 00F7 : cmpi.b #-$9, D1
6D716 | 6602 : bne $6d71a
6D718 | 5210 : addq.b #1, (A0) // increase code +01
6D71A | 0C01 00FD : cmpi.b #-$3, D1
6D71E | 6604 : bne $6d724
6D720 | 0410 0010 : subi.b #$10, (A0) // decrease code -10
6D724 | 0C01 00FE : cmpi.b #-$2, D1
6D728 | 6604 : bne $6d72e
6D72A | 0610 0010 : addi.b #$10, (A0) // increase code +10
6D72E | 0C01 00BB : cmpi.b #-$45, D1
6D732 | 6602 : bne $6d736
6D734 | 5311 : subq.b #1, (A1) // decrease bank -01
6D736 | 0C01 00B7 : cmpi.b #-$49, D1
6D73A | 6602 : bne $6d73e
6D73C | 5211 : addq.b #1, (A1) // increase bank +01
6D73E | 0211 000F : andi.b #$f, (A1)
6D742 | 0C01 00EF : cmpi.b #-$11, D1
6D746 | 660E : bne $6d756
6D748 | 1011 : move.b (A1), D0 // play sound
6D74A | 6706 : beq $6d752
6D74C | 0600 0010 : addi.b #$10, D0
6D750 | 4E92 : jsr (A2)
6D752 | 1010 : move.b (A0), D0
6D754 | 4E92 : jsr (A2)
6D756 | 0C01 00DF : cmpi.b #-$21, D1
6D75A | 660C : bne $6d768
6D75C | 103C 0001 : move.b #$1, D0 // stop sound
6D760 | 4E92 : jsr (A2)
6D762 | 103C 0003 : move.b #$3, D0
6D766 | 4E92 : jsr (A2)
6D768 | 6094 : bra $6d6fe
-->
</script>
<script state="run">
<output format="----- world heroes sound test mode -----" line="10" align="center" />
<output format="left : decrease code -01" line="11" align="center" />
<output format="right : increase code +01" line="12" align="center" />
<output format="down : decrease code -10" line="13" align="center" />
<output format="up : increase code +10" line="14" align="center" />
<output format="button 3 + left : decrease bank -01" line="15" align="center" />
<output format="button 3 + right : increase bank +01" line="16" align="center" />
<output format="button 1 : play sound" line="17" align="center" />
<output format="button 2 : stop sound" line="18" align="center" />
<output format="----------------------------" line="19" align="center" />
<output format="<< bank %X >>" line="21" align="center" >
<argument>maincpu.pb@108101</argument>
</output>
<output format="<< sound code %02X >>" line="23" align="center" >
<argument>maincpu.pb@108100</argument>
</output>
</script>
<script state="off">
<action>maincpu.rd@F00B6 = 00C0044A </action>
<action>maincpu.rd@F4C32 = 00009200 </action>
<action>maincpu.rq@6D6F0 = 0000000000000000</action>
<action>maincpu.rq@6D6F8 = 0000000000000000</action>
<action>maincpu.rq@6D700 = 0000000000000000</action>
<action>maincpu.rq@6D708 = 0000000000000000</action>
<action>maincpu.rq@6D710 = 0000000000000000</action>
<action>maincpu.rq@6D718 = 0000000000000000</action>
<action>maincpu.rq@6D720 = 0000000000000000</action>
<action>maincpu.rq@6D728 = 0000000000000000</action>
<action>maincpu.rq@6D730 = 0000000000000000</action>
<action>maincpu.rq@6D738 = 0000000000000000</action>
<action>maincpu.rq@6D740 = 0000000000000000</action>
<action>maincpu.rq@6D748 = 0000000000000000</action>
<action>maincpu.rq@6D750 = 0000000000000000</action>
<action>maincpu.rq@6D758 = 0000000000000000</action>
<action>maincpu.rq@6D760 = 0000000000000000</action>
<action>maincpu.rq@6D768 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="skip ram/rom check">
<script state="on">
<action condition="maincpu.rd@C11AFC == 3A3C7FFF">temp0 = C11AFC, maincpu.rd@temp0 = 60000168</action> <!-- euro, euro-s1, japan-s2, japan-s1 -->
<action condition="maincpu.rd@C10C20 == 3A3C7FFF">temp0 = C10C20, maincpu.rd@temp0 = 60000168</action> <!-- asia-mv1c, japan-mv1b -->
<action condition="maincpu.rd@C10AFC == 3A3C7FFF">temp0 = C10AFC, maincpu.rd@temp0 = 60000168</action> <!-- asia-mv1b, japan-mv1c -->
<action condition="maincpu.rd@C11AD2 == 3A3C7FFF">temp0 = C11AD2, maincpu.rd@temp0 = 60000168</action> <!-- us, us-e, us-v2, us-u4 -->
<action condition="maincpu.rd@C11ABC == 3A3C7FFF">temp0 = C11ABC, maincpu.rd@temp0 = 60000104</action> <!-- us-u3 -->
<action condition="maincpu.rd@C11C24 == 3A3C7FFF">temp0 = C11C24, maincpu.rd@temp0 = 60000168</action> <!-- japan -->
<action condition="maincpu.rd@C11AE6 == 3A3C7FFF">temp0 = C11AE6, maincpu.rd@temp0 = 60000104</action> <!-- japan-j3a -->
<action condition="maincpu.rd@C11BC6 == 3A3C7FFF">temp0 = C11BC6, maincpu.rd@temp0 = 6000017C</action> <!-- japan-hotel -->
</script>
<script state="off">
<action>maincpu.rd@temp0 = 3A3C7FFF</action>
</script>
</cheat>
</mamecheat>
wh1ha.xml
Code: Select all
<!-- World Heroes (set 3) -->
<mamecheat version="1">
<cheat desc="no hit">
<!-- trap (mine) explodes when you touch though no damage -->
<parameter>
<item value="0x01">P1 </item>
<item value="0x02">P2 </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@62E06 = 4EB90006D6D06600</action> <!-- direct attack -->
<action>maincpu.rq@63038 = 4EB90006D6D06622</action> <!-- firearms -->
<action>maincpu.rq@1C1C4 = 4EB90006D6E44E71</action> <!-- throw -->
<action>maincpu.rq@1C090 = 4EB90006D6F26700</action> <!-- throw (air) -->
<action>maincpu.rq@643FC = 4EB90006D6D06648</action> <!-- trap -->
<action>maincpu.rq@6D6D0 = 0828000000FF4E75</action>
<action>maincpu.rq@6D6D8 = 61F6660608280003</action>
<action>maincpu.rq@6D6E0 = 60D54E7561EA6608</action>
<action>maincpu.rq@6D6E8 = 102D60D6020000C0</action>
<action>maincpu.rq@6D6F0 = 4E7561DC66080828</action>
<action>maincpu.rq@6D6F8 = 000060D54E754200</action>
<action>maincpu.rq@6D700 = 4E75000000000000</action>
<!--
6D6D0 | 0828 0000 00FF : btst #$0, ($ff,A0) // common flag check routine
6D6D6 | 4E75 : rts
6D6D8 | 61F6 : bsr $6d6d0 // direct attack, firearms, trap
6D6DA | 6606 : bne $6d6e2
6D6DC | 0828 0003 60D5 : btst #$3, ($60d5,A0)
6D6E2 | 4E75 : rts
6D6E4 | 61EA : bsr $6d6d0 // throw
6D6E6 | 6608 : bne $6d6f0
6D6E8 | 102D 60D6 : move.b ($60d6,A5), D0
6D6EC | 0200 00C0 : andi.b #$c0, D0
6D6F0 | 4E75 : rts
6D6F2 | 61DC : bsr $6d6d0 // throw (air)
6D6F4 | 6608 : bne $6d6fe
6D6F6 | 0828 0000 60D5 : btst #$0, ($60d5,A0)
6D6FC | 4E75 : rts
6D6FE | 4200 : clr.b D0
6D700 | 4E75 : rts
-->
</script>
<script state="run">
<action condition="(param band 01) == 00">maincpu.pb@1000FF = maincpu.pb@1000FF band FE</action>
<action condition="(param band 02) == 00">maincpu.pb@1001FF = maincpu.pb@1001FF band FE</action>
<action condition="(param band 01) != 00">maincpu.pb@1000FF = maincpu.pb@1000FF bor 01</action>
<action condition="(param band 02) != 00">maincpu.pb@1001FF = maincpu.pb@1001FF bor 01</action>
</script>
<script state="off">
<action>maincpu.pb@1000FF = maincpu.pb@1000FF band FE</action>
<action>maincpu.pb@1001FF = maincpu.pb@1001FF band FE</action>
<action>maincpu.rq@062E06 = 0828000360D56600 </action>
<action>maincpu.rq@063038 = 0828000360D56622 </action>
<action>maincpu.rq@01C1C4 = 102D60D6020000C0 </action>
<action>maincpu.rq@01C090 = 0828000060D56700 </action>
<action>maincpu.rq@0643FC = 0828000360D56622 </action>
<action>maincpu.rq@06D6D0 = 0000000000000000 </action>
<action>maincpu.rq@06D6D8 = 0000000000000000 </action>
<action>maincpu.rq@06D6E0 = 0000000000000000 </action>
<action>maincpu.rq@06D6E8 = 0000000000000000 </action>
<action>maincpu.rq@06D6F0 = 0000000000000000 </action>
<action>maincpu.rq@06D6F8 = 0000000000000000 </action>
<action>maincpu.rq@06D700 = 0000000000000000 </action>
</script>
</cheat>
<cheat desc="auto fire">
<parameter>
<item value="0x01">P1 </item>
<item value="0x02">P2 </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@1A5EE = 4EB90006D7104E71</action>
<action>maincpu.rq@6D710 = 102D6001082D0001</action>
<action>maincpu.rq@6D718 = 00FF6704102D6000</action>
<action>maincpu.rq@6D720 = 080000044E750000</action>
<!--
6D710 | 102D 6001 : move.b ($6001,A5), D0
6D714 | 082D 0001 00FF : btst #$1, ($ff,A5)
6D71A | 6704 : beq $6d720
6D71C | 102D 6000 : move.b ($6000,A5), D0
6D720 | 0800 0004 : btst #$4, D0
6D724 | 4E75 : rts
-->
</script>
<script state="run">
<action condition="(param band 01) == 00">maincpu.pb@1000FF = maincpu.pb@1000FF band FD</action>
<action condition="(param band 02) == 00">maincpu.pb@1001FF = maincpu.pb@1001FF band FD</action>
<action condition="(param band 01) != 00">maincpu.pb@1000FF = maincpu.pb@1000FF bor 02</action>
<action condition="(param band 02) != 00">maincpu.pb@1001FF = maincpu.pb@1001FF bor 02</action>
</script>
<script state="off">
<action>maincpu.pb@1000FF = maincpu.pb@1000FF band FD</action>
<action>maincpu.pb@1001FF = maincpu.pb@1001FF band FD</action>
<action>maincpu.rq@01A5EE = 102D600108000004 </action>
<action>maincpu.rq@06D710 = 0000000000000000 </action>
<action>maincpu.rq@06D718 = 0000000000000000 </action>
<action>maincpu.rq@06D720 = 0000000000000000 </action>
</script>
</cheat>
<cheat desc="attack speed up">
<parameter>
<item value="0x01">P1 </item>
<item value="0x02">P2 </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@79862 = 4EB90006D7304E71</action>
<action>maincpu.rq@6D730 = 30360000082D0002</action>
<action>maincpu.rq@6D738 = 00FF6704303CFFFF</action>
<action>maincpu.rq@6D740 = 916D60E04E750000</action>
<!--
6D730 | 3036 0000 : move.w (A6,D0.w), D0
6D734 | 082D 0002 00FF : btst #$2, ($ff,A5)
6D73A | 6704 : beq $6d740
6D73C | 303C FFFF : move.w #$ffff, D0
6D740 | 916D 60E0 : sub.w D0, ($60e0,A5)
6D744 | 4E75 : rts
-->
</script>
<script state="run">
<action condition="(param band 01) == 00">maincpu.pb@1000FF = maincpu.pb@1000FF band FB</action>
<action condition="(param band 02) == 00">maincpu.pb@1001FF = maincpu.pb@1001FF band FB</action>
<action condition="(param band 01) != 00">maincpu.pb@1000FF = maincpu.pb@1000FF bor 04</action>
<action condition="(param band 02) != 00">maincpu.pb@1001FF = maincpu.pb@1001FF bor 04</action>
</script>
<script state="off">
<action>maincpu.pb@1000FF = maincpu.pb@1000FF band FB</action>
<action>maincpu.pb@1001FF = maincpu.pb@1001FF band FB</action>
<action>maincpu.rq@079862 = 30360000916D60E0 </action>
<action>maincpu.rq@06D730 = 0000000000000000 </action>
<action>maincpu.rq@06D738 = 0000000000000000 </action>
<action>maincpu.rq@06D740 = 0000000000000000 </action>
</script>
</cheat>
<cheat desc="timer speed">
<parameter>
<item value="0x7f">01 (slow)</item>
<item value="0x60">02 </item>
<item value="0x40">03 </item>
<item value="0x20">04 </item>
<item value="0x00">05 (fast)</item>
</parameter>
<script state="on">
<action>maincpu.rw@1E326 = 1D7C</action>
</script>
<script state="change">
<action>maincpu.rw@1E314 = param</action>
<action>maincpu.rw@1E320 = param</action>
<action>maincpu.rw@1E328 = param</action>
</script>
<script state="off">
<action>maincpu.rw@1E314 = 0040 </action>
<action>maincpu.rw@1E320 = 0036 </action>
<action>maincpu.rd@1E326 = 1D6E30C5</action>
</script>
</cheat>
<cheat desc="bonus stage is...">
<parameter>
<item value="0x6000000c">none </item>
<item value="0x600000f4">always 1</item>
<item value="0x60000118">always 2</item>
</parameter>
<script state="change">
<action>maincpu.rd@A3B8 = param</action>
</script>
<script state="off">
<action>maincpu.rd@A3B8 = 670000EA</action>
</script>
</cheat>
<cheat desc="selectable same chracter">
<script state="on">
<action>maincpu.rb@143E9 = 04</action> <!-- decision -->
<action>maincpu.rb@1446D = 04</action> <!-- select -->
</script>
<script state="off">
<action>maincpu.rb@143E9 = 4E</action>
<action>maincpu.rb@1446D = 06</action>
</script>
</cheat>
<cheat desc="sound test mode">
<!-- don't play code 0x01 because of no sound response -->
<!-- valid bank number seems to be 0x00 only? -->
<comment>reset the game (F3) to enter sound test mode</comment>
<script state="on">
<action>maincpu.rd@F00B6 = 000F09AC </action> <!-- check sound code in interrupt -->
<action>maincpu.rd@F4C32 = 0006D750 </action>
<action>maincpu.rq@6D750 = 41EE010043E80001</action>
<action>maincpu.rq@6D758 = 247C000F09701401</action>
<action>maincpu.rq@6D760 = 123900300000B401</action>
<action>maincpu.rq@6D768 = 67F40C0100FB6602</action>
<action>maincpu.rq@6D770 = 53100C0100F76602</action>
<action>maincpu.rq@6D778 = 52100C0100FD6604</action>
<action>maincpu.rq@6D780 = 041000100C0100FE</action>
<action>maincpu.rq@6D788 = 6604061000100C01</action>
<action>maincpu.rq@6D790 = 00BB660253110C01</action>
<action>maincpu.rq@6D798 = 00B7660252110211</action>
<action>maincpu.rq@6D7A0 = 000F0C0100EF660E</action>
<action>maincpu.rq@6D7A8 = 1011670606000010</action>
<action>maincpu.rq@6D7B0 = 4E9210104E920C01</action>
<action>maincpu.rq@6D7B8 = 00DF660C103C0001</action>
<action>maincpu.rq@6D7C0 = 4E92103C00034E92</action>
<action>maincpu.rq@6D7C8 = 6094000000000000</action>
<!--
6D750 | 41EE 0100 : lea ($100,A6), A0 // sound code addres ($108100)
6D754 | 43E8 0001 : lea ($1,A0), A1 // bank address ($108101)
6D758 | 247C 000F 0970 : movea.l #$f0970, A2 // sound latch routine address
6D75E | 1401 : move.b D1, D2
6D760 | 1239 0030 0000 : move.b $300000.l, D1 // read input
6D766 | B401 : cmp.b D1, D2
6D768 | 67F4 : beq $6d75e
6D76A | 0C01 00FB : cmpi.b #-$5, D1
6D76E | 6602 : bne $6d772
6D770 | 5310 : subq.b #1, (A0) // decrease code -01
6D772 | 0C01 00F7 : cmpi.b #-$9, D1
6D776 | 6602 : bne $6d77a
6D778 | 5210 : addq.b #1, (A0) // increase code +01
6D77A | 0C01 00FD : cmpi.b #-$3, D1
6D77E | 6604 : bne $6d784
6D780 | 0410 0010 : subi.b #$10, (A0) // decrease code -10
6D784 | 0C01 00FE : cmpi.b #-$2, D1
6D788 | 6604 : bne $6d78e
6D78A | 0610 0010 : addi.b #$10, (A0) // increase code +10
6D78E | 0C01 00BB : cmpi.b #-$45, D1
6D792 | 6602 : bne $6d796
6D794 | 5311 : subq.b #1, (A1) // decrease bank -01
6D796 | 0C01 00B7 : cmpi.b #-$49, D1
6D79A | 6602 : bne $6d79e
6D79C | 5211 : addq.b #1, (A1) // increase bank +01
6D79E | 0211 000F : andi.b #$f, (A1)
6D7A2 | 0C01 00EF : cmpi.b #-$11, D1
6D7A6 | 660E : bne $6d7b6
6D7A8 | 1011 : move.b (A1), D0 // play sound
6D7AA | 6706 : beq $6d7b2
6D7AC | 0600 0010 : addi.b #$10, D0
6D7B0 | 4E92 : jsr (A2)
6D7B2 | 1010 : move.b (A0), D0
6D7B4 | 4E92 : jsr (A2)
6D7B6 | 0C01 00DF : cmpi.b #-$21, D1
6D7BA | 660C : bne $6d7c8
6D7BC | 103C 0001 : move.b #$1, D0 // stop sound
6D7C0 | 4E92 : jsr (A2)
6D7C2 | 103C 0003 : move.b #$3, D0
6D7C6 | 4E92 : jsr (A2)
6D7C8 | 6094 : bra $6d75e
-->
</script>
<script state="run">
<output format="----- world heroes sound test mode -----" line="10" align="center" />
<output format="left : decrease code -01" line="11" align="center" />
<output format="right : increase code +01" line="12" align="center" />
<output format="down : decrease code -10" line="13" align="center" />
<output format="up : increase code +10" line="14" align="center" />
<output format="button 3 + left : decrease bank -01" line="15" align="center" />
<output format="button 3 + right : increase bank +01" line="16" align="center" />
<output format="button 1 : play sound" line="17" align="center" />
<output format="button 2 : stop sound" line="18" align="center" />
<output format="----------------------------" line="19" align="center" />
<output format="<< bank %X >>" line="21" align="center" >
<argument>maincpu.pb@108101</argument>
</output>
<output format="<< sound code %02X >>" line="23" align="center" >
<argument>maincpu.pb@108100</argument>
</output>
</script>
<script state="off">
<action>maincpu.rd@F00B6 = 00C0044A </action>
<action>maincpu.rd@F4C32 = 00009200 </action>
<action>maincpu.rq@6D750 = 0000000000000000</action>
<action>maincpu.rq@6D758 = 0000000000000000</action>
<action>maincpu.rq@6D760 = 0000000000000000</action>
<action>maincpu.rq@6D768 = 0000000000000000</action>
<action>maincpu.rq@6D770 = 0000000000000000</action>
<action>maincpu.rq@6D778 = 0000000000000000</action>
<action>maincpu.rq@6D780 = 0000000000000000</action>
<action>maincpu.rq@6D788 = 0000000000000000</action>
<action>maincpu.rq@6D790 = 0000000000000000</action>
<action>maincpu.rq@6D798 = 0000000000000000</action>
<action>maincpu.rq@6D7A0 = 0000000000000000</action>
<action>maincpu.rq@6D7A8 = 0000000000000000</action>
<action>maincpu.rq@6D7B0 = 0000000000000000</action>
<action>maincpu.rq@6D7B8 = 0000000000000000</action>
<action>maincpu.rq@6D7C0 = 0000000000000000</action>
<action>maincpu.rq@6D7C8 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="skip ram/rom check">
<script state="on">
<action condition="maincpu.rd@C11AFC == 3A3C7FFF">temp0 = C11AFC, maincpu.rd@temp0 = 60000168</action> <!-- euro, euro-s1, japan-s2, japan-s1 -->
<action condition="maincpu.rd@C10C20 == 3A3C7FFF">temp0 = C10C20, maincpu.rd@temp0 = 60000168</action> <!-- asia-mv1c, japan-mv1b -->
<action condition="maincpu.rd@C10AFC == 3A3C7FFF">temp0 = C10AFC, maincpu.rd@temp0 = 60000168</action> <!-- asia-mv1b, japan-mv1c -->
<action condition="maincpu.rd@C11AD2 == 3A3C7FFF">temp0 = C11AD2, maincpu.rd@temp0 = 60000168</action> <!-- us, us-e, us-v2, us-u4 -->
<action condition="maincpu.rd@C11ABC == 3A3C7FFF">temp0 = C11ABC, maincpu.rd@temp0 = 60000104</action> <!-- us-u3 -->
<action condition="maincpu.rd@C11C24 == 3A3C7FFF">temp0 = C11C24, maincpu.rd@temp0 = 60000168</action> <!-- japan -->
<action condition="maincpu.rd@C11AE6 == 3A3C7FFF">temp0 = C11AE6, maincpu.rd@temp0 = 60000104</action> <!-- japan-j3a -->
<action condition="maincpu.rd@C11BC6 == 3A3C7FFF">temp0 = C11BC6, maincpu.rd@temp0 = 6000017C</action> <!-- japan-hotel -->
</script>
<script state="off">
<action>maincpu.rd@temp0 = 3A3C7FFF</action>
</script>
</cheat>
</mamecheat>
- "no hit", "auto fire" and "attack speed up" : Fixed unworked player 2 codes due to ugly copy-and-paste failure.
- "bonus stage" : Added new. "always 1" and "always 2" repeats bonus stage forever...
- "selectable same character" : Added new. Character's color doesn't change when P1 and P2 select the same character though.