[wh1] World Heroes

This forum is for posting M.A.M.E. Work In Progress "Arcade"cheats that are not quite ready for the prime time. If the cheats are buggy or the cheat descriptions are non-standard then please post them here. Help maybe given but there are no guarantees and they will only be added to the cheat file when the cheat file maintainer is happy with them.
Post Reply
jman
Posts: 1001
Joined: Tue Dec 01, 2020 1:24 pm
Been thanked: 4 times

[wh1] World Heroes

Post by jman »

Code: Select all

<cheat desc="no hit (test)">
    <!-- disable for trap in death match mode -->
    <parameter>
        <item value="0x01">P1          </item>
        <item value="0x02">P2          </item>
        <item value="0x03">both players</item>
    </parameter>
    <script state="on">
        <action>maincpu.rd@62bc2 =         00071f80</action> <!-- direct attack -->
        <action>maincpu.rd@62dc8 =         00071f80</action> <!-- firearms -->
        <action>maincpu.rq@1c00e = 4eb900071f8e4e71</action> <!-- throw -->
        <action>maincpu.rq@1beda = 4eb900071fa06700</action> <!-- throw (air) -->
        <action>maincpu.rq@71f70 = b1fc001000006706</action>
        <action>maincpu.rq@71f78 = b1fc001001004e75</action>
        <action>maincpu.rq@71f80 = 4eb9000f409e61e8</action>
        <action>maincpu.rq@71f88 = 67024a464e7561e0</action>
        <action>maincpu.rq@71f90 = 660470014e75102d</action>
        <action>maincpu.rq@71f98 = 60d6020000c04e75</action>
        <action>maincpu.rq@71fa0 = 61ce670608280000</action>
        <action>maincpu.rq@71fa8 = 60d54e7500000000</action>
        <!--
        71f70 | b1fc 0010 0000 : cmpa.l #$100000,A0    // player check routine
        71f76 | 6706           : beq    $71f7e
        71f78 | b1fc 0010 0100 : cmpa.l #$100100,A0
        71f7e | 4e75           : rts
        71f80 | 4eb9 000f 409e : jsr    $f409e.l       // direct attack, firearms
        71f86 | 61e8           : bsr    $71f70
        71f88 | 6702           : beq    $71f8c
        71f8a | 4a46           : tst.w  D6
        71f8c | 4e75           : rts
        71f8e | 61e0           : bsr    $71f70         // throw
        71f90 | 6604           : bne    $71f96
        71f92 | 7001           : moveq  #$1,D0
        71f94 | 4e75           : rts
        71f96 | 102d 60d6      : move.b ($60d6,A5),D0
        71f9a | 0200 00c0      : andi.b #$c0,D0
        71f9e | 4e75           : rts
        71fa0 | 61ce           : bsr    $71f70         // throw (air)
        71fa2 | 6706           : beq    $71faa
        71fa4 | 0828 0000 60d5 : btst   #$0,($60d5,A0)
        71faa | 4e75           : rts
        -->
    </script>
    <script state="change">
        <action                                  >maincpu.rd@71f72 = 00000000</action>
        <action                                  >maincpu.rd@71f7a = 00000000</action>
        <action condition="(param band 01) != 00">maincpu.rd@71f72 = 00100000</action>
        <action condition="(param band 02) != 00">maincpu.rd@71f7a = 00100100</action>
    </script>
    <script state="off">
        <action>maincpu.rd@62bc2 =         000f409e</action>
        <action>maincpu.rd@62dc8 =         000f409e</action>
        <action>maincpu.rq@1c00e = 102d60d6020000c0</action>
        <action>maincpu.rq@1beda = 0828000060d56700</action>
        <action>maincpu.rq@71f70 = 0000000000000000</action>
        <action>maincpu.rq@71f78 = 0000000000000000</action>
        <action>maincpu.rq@71f80 = 0000000000000000</action>
        <action>maincpu.rq@71f88 = 0000000000000000</action>
        <action>maincpu.rq@71f90 = 0000000000000000</action>
        <action>maincpu.rq@71f98 = 0000000000000000</action>
        <action>maincpu.rq@71fa0 = 0000000000000000</action>
        <action>maincpu.rq@71fa8 = 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 = 4eb900071fc04e71</action>
        <action>maincpu.rq@71fb0 = 102d6001bbfc0010</action>
        <action>maincpu.rq@71fb8 = 00006708bbfc0010</action>
        <action>maincpu.rq@71fc0 = 01006604102d6000</action>
        <action>maincpu.rq@71fc8 = 080000044e750000</action>
        <!--
        71fb0 | 102d 6001      : move.b ($6001,A5),D0
        71fb4 | bbfc 0010 0000 : cmpa.l #$100000,A5
        71fba | 6708           : beq    $71fc4
        71fbc | bbfc 0010 0100 : cmpa.l #$100100,A5
        71fc2 | 6604           : bne    $71fc8
        71fc4 | 102d 6000      : move.b ($6000,A5),D0
        71fc8 | 0800 0004      : btst   #$4, D0
        71fcc | 4e75           : rts
        -->
    </script>
    <script state="change">
        <action                                  >maincpu.rd@71fb6 = 00000000</action>
        <action                                  >maincpu.rd@71fbe = 00000000</action>
        <action condition="(param band 01) != 00">maincpu.rd@71fb6 = 00100000</action>
        <action condition="(param band 02) != 00">maincpu.rd@71fbe = 00100100</action>
    </script>
    <script state="off">
        <action>maincpu.rq@1a46a = 102d600108000004</action>
        <action>maincpu.rq@71fb0 = 0000000000000000</action>
        <action>maincpu.rq@71fb8 = 0000000000000000</action>
        <action>maincpu.rq@71fc0 = 0000000000000000</action>
        <action>maincpu.rq@71fc8 = 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 = 30360000bbfc0010</action>
        <action>maincpu.rq@71fd8 = 00006708bbfc0010</action>
        <action>maincpu.rq@71fe0 = 01006606003c0001</action>
        <action>maincpu.rq@71fe8 = 4e75916d60e04e75</action>
        <!--
        71fd0 | 3036 0000      : move.w (A6,D0.w),D0
        71fd4 | bbfc 0010 0000 : cmpa.l #$100000,A5
        71fda | 6708           : beq    $71fe4
        71fdc | bbfc 0010 0100 : cmpa.l #$100100,A5
        71fe2 | 6606           : bne    $71fea
        71fe4 | 003c 0001      : ori    #$1,CCR
        71fe8 | 4e75           : rts
        71fea | 916d 60e0      : sub.w  D0,($60e0,A5)
        71fee | 4e75           : rts
        -->
    </script>
    <script state="change">
        <action                                  >maincpu.rd@71fd6 = 00000000</action>
        <action                                  >maincpu.rd@71fde = 00000000</action>
        <action condition="(param band 01) != 00">maincpu.rd@71fd6 = 00100000</action>
        <action condition="(param band 02) != 00">maincpu.rd@71fde = 00100100</action>
    </script>
    <script state="off">
        <action>maincpu.rq@794dc = 30360000916d60e0</action>
        <action>maincpu.rq@71fd0 = 0000000000000000</action>
        <action>maincpu.rq@71fd8 = 0000000000000000</action>
        <action>maincpu.rq@71fe0 = 0000000000000000</action>
        <action>maincpu.rq@71fe8 = 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="0x1e">04       </item>
        <item value="0x00">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.rq@1e1c4 = 1d7c000030094eb9</action>
    </script>
    <script state="change">
        <action>maincpu.rw@1e1c6 = param</action>
    </script>
    <script state="off">
        <action>maincpu.rq@1e1c4 = 1d6e30c530094eb9</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? -->
    <script state="on">
        <action>maincpu.rd@f00b6 =         000f09ac</action> <!-- enable sound code check 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 = 10116706060000f0</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 // $108100 : sound code address
        71ff4 | 43e8 0001      : lea     ($1,A0),A1   // $108101 : bank number address
        71ff8 | 247c 000f 0970 : movea.l #$f0970,A2
        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 00f0      : 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="&lt;&lt; bank %2.2X &gt;&gt;"             line="21" align="center"  >
            <argument>maincpu.pb@108101</argument>
        </output>
        <output format="&lt;&lt; sound code %2.2X &gt;&gt;"       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>
  • "no hit" : this is test code because doesn't work for the traps in death match mode.
  • "sound test mode" : this game seems to use bank code 0x00 only...? So "bank" in this code is temporary.
jman

my wip cheat database back-up (2024/09/06 ver.)
https://u11.getuploader.com/uploader/download/1589
jman
Posts: 1001
Joined: Tue Dec 01, 2020 1:24 pm
Been thanked: 4 times

[wh1]+ World Heroes

Post by jman »

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@1000FF 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@1000FF 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@1000FF 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="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="&lt;&lt; bank %X &gt;&gt;"                line="21" align="center"  >
                <argument>maincpu.pb@108101</argument>
            </output>
            <output format="&lt;&lt; sound code %02X &gt;&gt;"        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@1000FF 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@1000FF 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@1000FF 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="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="&lt;&lt; bank %X &gt;&gt;"                line="21" align="center"  >
                <argument>maincpu.pb@108101</argument>
            </output>
            <output format="&lt;&lt; sound code %02X &gt;&gt;"        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@1000FF 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@1000FF 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@1000FF 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="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="&lt;&lt; bank %X &gt;&gt;"                line="21" align="center"  >
                <argument>maincpu.pb@108101</argument>
            </output>
            <output format="&lt;&lt; sound code %02X &gt;&gt;"        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" : Rewritten routines. Side-effect is that these codes don't pass RAM check so that you need to set "skip ram/rom check" before reset the game (F3).
  • "no hit" : Added code for trap. New code is effective against traps though a mine explodes when you touch (but no damage).
  • "timer speed" : Added codes for bonus stage.
jman

my wip cheat database back-up (2024/09/06 ver.)
https://u11.getuploader.com/uploader/download/1589
jman
Posts: 1001
Joined: Tue Dec 01, 2020 1:24 pm
Been thanked: 4 times

[wh1]+ World Heroes (repost)

Post by jman »

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="&lt;&lt; bank %X &gt;&gt;"                line="21" align="center"  >
                <argument>maincpu.pb@108101</argument>
            </output>
            <output format="&lt;&lt; sound code %02X &gt;&gt;"        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="&lt;&lt; bank %X &gt;&gt;"                line="21" align="center"  >
                <argument>maincpu.pb@108101</argument>
            </output>
            <output format="&lt;&lt; sound code %02X &gt;&gt;"        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="&lt;&lt; bank %X &gt;&gt;"                line="21" align="center"  >
                <argument>maincpu.pb@108101</argument>
            </output>
            <output format="&lt;&lt; sound code %02X &gt;&gt;"        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.
jman

my wip cheat database back-up (2024/09/06 ver.)
https://u11.getuploader.com/uploader/download/1589
Post Reply