Page 1 of 1

[donpachij] DonPachi

Posted: Sat Sep 04, 2021 8:39 am
by jman

Code: Select all

<cheat desc="no hit">
    <script state="on">
        <action>maincpu.mb@563c = 60</action> <!-- bullet -->
        <action>maincpu.mb@5742 = 60</action> <!-- enemy -->
    </script>
    <script state="off">
        <action>maincpu.mb@563c = 65</action>
        <action>maincpu.mb@5742 = 65</action>
    </script>
</cheat>

<cheat desc="button 3 auto fire">
    <script state="on">
        <action>maincpu.mq@2c09c = 4eb900076a90670e</action> <!-- player type A -->
        <action>maincpu.mq@2c14c = 4eb900076a90670e</action> <!-- player type B -->
        <action>maincpu.mq@2c1fa = 4eb900076a90670e</action> <!-- player type C -->
        <action>maincpu.mq@306be = 4eb900076aa86712</action> <!-- subunits type A -->
        <action>maincpu.mq@3070c = 4eb900076aa86708</action> <!-- subunits type B -->
        <action>maincpu.mq@30748 = 4eb900076aa86708</action> <!-- subunits type C left -->
        <action>maincpu.mq@30776 = 4eb900076aa86708</action> <!-- subunits type C right -->
        <action>maincpu.mq@76a90 = 083900000010125f</action>
        <action>maincpu.mq@76a98 = 6708082800040001</action>
        <action>maincpu.mq@76aa0 = 4e75081000064e75</action>
        <action>maincpu.mq@76aa8 = 083900000010125f</action>
        <action>maincpu.mq@76ab0 = 6708082b00040001</action>
        <action>maincpu.mq@76ab8 = 4e75081300064e75</action>
        <!--
        76a90 | 0839 0000 0010 125f : btst #$0,$10125f.l
        76a98 | 6708                : beq  $76aa2
        76a9a | 0828 0004 0001      : btst #$4,($1,A0)
        76aa0 | 4e75                : rts
        76aa2 | 0810 0006           : btst #$6,(A0)
        76aa6 | 4e75                : rts
        76aa8 | 0839 0000 0010 125f : btst #$0,$10125f.l
        76ab0 | 6708                : beq  $76aba
        76ab2 | 082b 0004 0001      : btst #$4,($1,A3)
        76ab8 | 4e75                : rts
        76aba | 0813 0006           : btst #$6,(A3)
        76abe | 4e75                : rts
        -->
    </script>
    <script state="off">
        <action>maincpu.mq@2c09c = 082800040001670e</action>
        <action>maincpu.mq@2c14c = 082800040001670e</action>
        <action>maincpu.mq@2c1fa = 082800040001670e</action>
        <action>maincpu.mq@306be = 082b000400016712</action>
        <action>maincpu.mq@3070c = 082b000400016708</action>
        <action>maincpu.mq@30748 = 082b000400016708</action>
        <action>maincpu.mq@30776 = 082b000400016708</action>
        <action>maincpu.mq@76a90 = ffffffffffffffff</action>
        <action>maincpu.mq@76a98 = ffffffffffffffff</action>
        <action>maincpu.mq@76aa0 = ffffffffffffffff</action>
        <action>maincpu.mq@76aa8 = ffffffffffffffff</action>
        <action>maincpu.mq@76ab0 = ffffffffffffffff</action>
        <action>maincpu.mq@76ab8 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="player speed">
    <parameter>
        <item value="0x0020">01 (slow)</item>
        <item value="0x0080">02       </item>
        <item value="0x0100">03       </item>
        <item value="0x0180">04       </item>
        <item value="0x0200">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.mq@073c8 = 4eb900076ac04e71</action>
        <action>maincpu.mq@76ac0 = bdfc001021586708</action>
        <action>maincpu.mq@76ac8 = bdfc00102198661c</action>
        <action>maincpu.mq@76ad0 = 303c00004a426706</action>
        <action>maincpu.mq@76ad8 = 6a0244403400303c</action>
        <action>maincpu.mq@76ae0 = 00004a4367066a02</action>
        <action>maincpu.mq@76ae8 = 44403600d56e0006</action>
        <action>maincpu.mq@76af0 = d76e00084e75ffff</action>
        <!--
        76ac0 | bdfc 0010 2158 : cmpa.l #$102158,A6
        76ac6 | 6708           : beq    $76ad0
        76ac8 | bdfc 0010 2198 : cmpa.l #$102198,A6
        76ace | 661c           : bne    $76aec
        76ad0 | 303c xxxx      : move.w #$xxxx,D0
        76ad4 | 4a42           : tst.w  D2
        76ad6 | 6706           : beq    $76ade
        76ad8 | 6a02           : bpl    $76adc
        76ada | 4440           : neg.w  D0
        76adc | 3400           : move.w D0,D2
        76ade | 303c xxxx      : move.w #$xxxx,D0
        76ae2 | 4a43           : tst.w  D3
        76ae4 | 6706           : beq    $76aec
        76ae6 | 6a02           : bpl    $76aea
        76ae8 | 4440           : neg.w  D0
        76aea | 3600           : move.w D0,D3
        76aec | d56e 0006      : add.w  D2,($6,A6)
        76af0 | d76e 0008      : add.w  D3,($8,A6)
        76af4 | 4e75           : rts
        -->
    </script>
    <script state="change">
        <action>maincpu.mw@76ad2 = param</action>
        <action>maincpu.mw@76ae0 = param</action>
    </script>
    <script state="off">
        <action>maincpu.mq@073c8 = d56e0006d76e0008</action>
        <action>maincpu.mq@76ac0 = ffffffffffffffff</action>
        <action>maincpu.mq@76ac8 = ffffffffffffffff</action>
        <action>maincpu.mq@76ad0 = ffffffffffffffff</action>
        <action>maincpu.mq@76ad8 = ffffffffffffffff</action>
        <action>maincpu.mq@76ae0 = ffffffffffffffff</action>
        <action>maincpu.mq@76ae8 = ffffffffffffffff</action>
        <action>maincpu.mq@76af0 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="bullet speed - main shot">
    <parameter>
        <item value="0x0180">01 (slow)</item>
        <item value="0x0280">02       </item>
        <item value="0x0380">03       </item>
        <item value="0x0480">04       </item>
        <item value="0x0580">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.mq@2c2dc = 4eb900076b00d040</action>
        <action>maincpu.mq@76b00 = 30fc00005449302e</action>
        <action>maincpu.mq@76b08 = 00204e75ffffffff</action>
        <!--
        76B00 | 30FC xxxx : move.w #$xxxx,(A0)+
        76B04 | 5449      : addq.w #2,A1
        76B06 | 302E 0020 : move.w ($20,A6),D0
        76B0A | 4E75      : rts
        -->
    </script>
    <script state="change">
        <action>maincpu.mw@76b02 = param</action>
    </script>
    <script state="off">
        <action>maincpu.mq@2c2dc = 30d9302e0020d040</action>
        <action>maincpu.mq@76B00 = ffffffffffffffff</action>
        <action>maincpu.mq@76b08 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="infinite combo">
    <script state="on">
        <action>maincpu.mb@66f7 = 02</action>
        <action>maincpu.mb@6e48 = 60</action>
        <action>maincpu.mb@6e5e = 60</action>
    </script>
    <script state="off">
        <action>maincpu.mb@66f7 = e2</action>
        <action>maincpu.mb@6e48 = 66</action>
        <action>maincpu.mb@6e5e = 66</action>
    </script>
</cheat>

<cheat desc="skip ram/rom check">
    <script state="on">
        <action>maincpu.md@341ca = 60000114</action>
    </script>
    <script state="off">
        <action>maincpu.md@341ca = 41f90010</action>
    </script>
</cheat>
"button 3 auto fire" is the same effect as testmode → configuration → c-button full-auto.

[donpachi]+ DonPachi

Posted: Tue Jun 25, 2024 11:56 am
by jman
donpachi.xml

Code: Select all

<!-- DonPachi (US) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@563C = 60</action> <!-- bullet -->
            <action>maincpu.mb@5742 = 60</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@563C = 65</action>
            <action>maincpu.mb@5742 = 65</action>
        </script>
    </cheat>

    <cheat desc="button 3 auto fire">
        <script state="on">
            <action>maincpu.mw@2C03E = 4E71</action> <!-- check c-button flag -->
            <action>maincpu.mw@2C04C = 6010</action> <!-- check c-button -->
        </script>
        <script state="off">
            <action>maincpu.mw@2C03E = 6724</action>
            <action>maincpu.mw@2C04C = 6616</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x0020">01 (slow)</item>
            <item value="0x0080">02       </item>
            <item value="0x0100">03       </item>
            <item value="0x0180">04       </item>
            <item value="0x0200">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@073C8 = 4EB9000769D04E71</action>
            <action>maincpu.mq@769D0 = BDFC001021586708</action>
            <action>maincpu.mq@769D8 = BDFC00102198661C</action>
            <action>maincpu.mq@769E0 = 303C00004A426706</action>
            <action>maincpu.mq@769E8 = 6A0244403400303C</action>
            <action>maincpu.mq@769F0 = 00004A4367066A02</action>
            <action>maincpu.mq@769F8 = 44403600D56E0006</action>
            <action>maincpu.mq@76A00 = D76E00084E75FFFF</action>
            <!--
            769D0 | BDFC 0010 2158 : cmpa.l  #$102158, A6 // 1P
            769D6 | 6708           : beq     $769e0
            769D8 | BDFC 0010 2198 : cmpa.l  #$102198, A6 // 2P
            769DE | 661C           : bne     $769fc
            769E0 | 303C xxxx      : move.w  #$xx, D0     // y position
            769E4 | 4A42           : tst.w   D2
            769E6 | 6706           : beq     $769ee
            769E8 | 6A02           : bpl     $769ec
            769EA | 4440           : neg.w   D0
            769EC | 3400           : move.w  D0, D2
            769EE | 303C xxxx      : move.w  #$xx, D0     // x position
            769F2 | 4A43           : tst.w   D3
            769F4 | 6706           : beq     $769fc
            769F6 | 6A02           : bpl     $769fa
            769F8 | 4440           : neg.w   D0
            769FA | 3600           : move.w  D0, D3
            769FC | D56E 0006      : add.w   D2, ($6,A6)
            76A00 | D76E 0008      : add.w   D3, ($8,A6)
            76A04 | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@769E2 = param</action>
            <action>maincpu.mw@769F0 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@073C8 = D56E0006D76E0008</action>
            <action>maincpu.mq@769D0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@769D8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@769E0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@769E8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@769F0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@769F8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A00 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="bullet speed - main shot">
        <parameter>
            <item value="0x0180">01 (slow)</item>
            <item value="0x0280">02       </item>
            <item value="0x0380">03       </item>
            <item value="0x0480">04       </item>
            <item value="0x0580">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@2C2FA = 4EB900076A10D040</action>
            <action>maincpu.mq@76A10 = 30FC00005449302E</action>
            <action>maincpu.mq@76A18 = 00204E75FFFFFFFF</action>
            <!--
            76A10 | 30FC xxxx : move.w  #$xx, (A0)+
            76A14 | 5449      : addq.w  #2, A1
            76A16 | 302E 0020 : move.w  ($20,A6), D0
            76A1A | 4E75      : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@76A12 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@2C2FA = 30D9302E0020D040</action>
            <action>maincpu.mq@76A10 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A18 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="hidden items finder">
        <script state="on">
            <action>maincpu.mb@105D1 = 0C</action>
        </script>
        <script state="off">
            <action>maincpu.mb@105D1 = 36</action>
        </script>
    </cheat>

    <cheat desc="infinite combo">
        <script state="on">
            <action>maincpu.mb@66F7 = 02</action>
            <action>maincpu.mb@6E48 = 60</action>
            <action>maincpu.mb@6E5E = 60</action>
        </script>
        <script state="off">
            <action>maincpu.mb@66F7 = E2</action>
            <action>maincpu.mb@6E48 = 66</action>
            <action>maincpu.mb@6E5E = 66</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- valid sound codes seem to be from 0x01 to 0x70 -->
        <comment>set &quot;skip ram/rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mw@37CA6 = 4E75            </action> <!-- sound code sending routine stopper -->
            <action>maincpu.md@3441C = 00076A20        </action>
            <action>maincpu.mq@76A20 = 41F9001000004DE8</action>
            <action>maincpu.mq@76A28 = 00021401123900C0</action>
            <action>maincpu.mq@76A30 = 0001B40167EA0C01</action>
            <action>maincpu.mq@76A38 = 00FB660253100C01</action>
            <action>maincpu.mq@76A40 = 00F7660252100C01</action>
            <action>maincpu.mq@76A48 = 00FD660404100010</action>
            <action>maincpu.mq@76A50 = 0C0100FE66040610</action>
            <action>maincpu.mq@76A58 = 00100C0100EF6606</action>
            <action>maincpu.mq@76A60 = 42561D5000010C01</action>
            <action>maincpu.mq@76A68 = 00DF66043CBCFFFF</action>
            <action>maincpu.mq@76A70 = 4EB900037C8060A8</action>
            <!--
            76A20 | 41F9 0010 0000 : lea     $100000.l, A0 // sound code address
            76A26 | 4DE8 0002      : lea     ($2,A0), A6   // sound latch address ($100002)
            76A2A | 1401           : move.b  D1, D2
            76A2C | 1239 00C0 0001 : move.b  $c00001.l, D1 // read input
            76A32 | B401           : cmp.b   D1, D2
            76A34 | 67EA           : beq     $76a20
            76A36 | 0C01 00FB      : cmpi.b  #-$5, D1
            76A3A | 6602           : bne     $76a3e
            76A3C | 5310           : subq.b  #1, (A0)      // decrease code -01
            76A3E | 0C01 00F7      : cmpi.b  #-$9, D1
            76A42 | 6602           : bne     $76a46
            76A44 | 5210           : addq.b  #1, (A0)      // increase code +01
            76A46 | 0C01 00FD      : cmpi.b  #-$3, D1
            76A4A | 6604           : bne     $76a50
            76A4C | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            76A50 | 0C01 00FE      : cmpi.b  #-$2, D1
            76A54 | 6604           : bne     $76a5a
            76A56 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            76A5A | 0C01 00EF      : cmpi.b  #-$11, D1
            76A5E | 6606           : bne     $76a66
            76A60 | 4256           : clr.w   (A6)          // play sound
            76A62 | 1D50 0001      : move.b  (A0), ($1,A6)
            76A66 | 0C01 00DF      : cmpi.b  #-$21, D1
            76A6A | 6604           : bne     $76a70
            76A6C | 3CBC FFFF      : move.w  #$ffff, (A6)  // stop sound
            76A70 | 4EB9 0003 7C80 : jsr     $37c80.l      // send sound code
            76A76 | 60A8           : bra     $76a20
            -->
        </script>
        <script state="run">
            <output format="----- donpachi 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 1 : play sound"                line="15" align="center" />
            <output format="button 2 : stop sound"                line="16" align="center" />
            <output format="----------------------------"         line="17" align="center" />
            <output format="&lt;&lt; sound code %02X &gt;&gt;"    line="19" align="center"  >
                <argument>maincpu.pb@100000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@37CA6 = 6100            </action>
            <action>maincpu.md@3441C = 0000CCCC        </action>
            <action>maincpu.mq@76A20 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A28 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A30 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A38 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A40 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A48 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A50 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A58 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A60 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A68 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A70 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action>maincpu.md@342E2 = 60000028</action> <!-- ram -->
            <action>maincpu.md@34334 = 6000009C</action> <!-- rom -->
        </script>
        <script state="off">
            <action>maincpu.md@342E2 = 303C3FFF</action>
            <action>maincpu.md@34334 = 41F80000</action>
        </script>
    </cheat>

</mamecheat>
donpachij.xml

Code: Select all

<!-- DonPachi (Japan) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@563C = 60</action> <!-- bullet -->
            <action>maincpu.mb@5742 = 60</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@563C = 65</action>
            <action>maincpu.mb@5742 = 65</action>
        </script>
    </cheat>

    <cheat desc="button 3 auto fire">
        <script state="on">
            <action>maincpu.mw@2C020 = 4E71</action> <!-- check c-button flag -->
            <action>maincpu.mw@2C02E = 6010</action> <!-- check c-button -->
        </script>
        <script state="off">
            <action>maincpu.mw@2C020 = 6724</action>
            <action>maincpu.mw@2C02E = 6616</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x0020">01 (slow)</item>
            <item value="0x0080">02       </item>
            <item value="0x0100">03       </item>
            <item value="0x0180">04       </item>
            <item value="0x0200">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@073C8 = 4EB900076A904E71</action>
            <action>maincpu.mq@76A90 = BDFC001021586708</action>
            <action>maincpu.mq@76A98 = BDFC00102198661C</action>
            <action>maincpu.mq@76AA0 = 303C00004A426706</action>
            <action>maincpu.mq@76AA8 = 6A0244403400303C</action>
            <action>maincpu.mq@76AB0 = 00004A4367066A02</action>
            <action>maincpu.mq@76AB8 = 44403600D56E0006</action>
            <action>maincpu.mq@76AC0 = D76E00084E75FFFF</action>
            <!--
            76A90 | BDFC 0010 2158 : cmpa.l  #$102158, A6 // 1P
            76A96 | 6708           : beq     $76aa0
            76A98 | BDFC 0010 2198 : cmpa.l  #$102198, A6 // 2P
            76A9E | 661C           : bne     $76abc
            76AA0 | 303C xxxx      : move.w  #$xx, D0     // y position
            76AA4 | 4A42           : tst.w   D2
            76AA6 | 6706           : beq     $76aae
            76AA8 | 6A02           : bpl     $76aac
            76AAA | 4440           : neg.w   D0
            76AAC | 3400           : move.w  D0, D2
            76AAE | 303C xxxx      : move.w  #$xx, D0     // x position
            76AB2 | 4A43           : tst.w   D3
            76AB4 | 6706           : beq     $76abc
            76AB6 | 6A02           : bpl     $76aba
            76AB8 | 4440           : neg.w   D0
            76ABA | 3600           : move.w  D0, D3
            76ABC | D56E 0006      : add.w   D2, ($6,A6)
            76AC0 | D76E 0008      : add.w   D3, ($8,A6)
            76AC4 | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@76AA2 = param</action>
            <action>maincpu.mw@76AB0 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@073C8 = D56E0006D76E0008</action>
            <action>maincpu.mq@76A90 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A98 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76AA0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76AA8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76AB0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76AB8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76AC0 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="bullet speed - main shot">
        <parameter>
            <item value="0x0180">01 (slow)</item>
            <item value="0x0280">02       </item>
            <item value="0x0380">03       </item>
            <item value="0x0480">04       </item>
            <item value="0x0580">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@2C2DC = 4EB900076AD0D040</action>
            <action>maincpu.mq@76AD0 = 30FC00005449302E</action>
            <action>maincpu.mq@76AD8 = 00204E75FFFFFFFF</action>
            <!--
            76AD0 | 30FC xxxx : move.w  #$xx, (A0)+
            76AD4 | 5449      : addq.w  #2, A1
            76AD6 | 302E 0020 : move.w  ($20,A6), D0
            76ADA | 4E75      : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@76AD2 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@2C2DC = 30D9302E0020D040</action>
            <action>maincpu.mq@76AD0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76AD8 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="hidden items finder">
        <script state="on">
            <action>maincpu.mb@105CB = 0C</action>
        </script>
        <script state="off">
            <action>maincpu.mb@105CB = 36</action>
        </script>
    </cheat>

    <cheat desc="infinite combo">
        <script state="on">
            <action>maincpu.mb@66F7 = 02</action>
            <action>maincpu.mb@6E48 = 60</action>
            <action>maincpu.mb@6E5E = 60</action>
        </script>
        <script state="off">
            <action>maincpu.mb@66F7 = E2</action>
            <action>maincpu.mb@6E48 = 66</action>
            <action>maincpu.mb@6E5E = 66</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- valid sound codes seem to be from 0x01 to 0x70 -->
        <comment>set &quot;skip ram/rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mw@37BCC = 4E75            </action> <!-- sound code sending routine stopper -->
            <action>maincpu.md@3432A = 00076AE0        </action>
            <action>maincpu.mq@76AE0 = 41F9001000004DE8</action>
            <action>maincpu.mq@76AE8 = 00021401123900C0</action>
            <action>maincpu.mq@76AF0 = 0001B40167EA0C01</action>
            <action>maincpu.mq@76AF8 = 00FB660253100C01</action>
            <action>maincpu.mq@76B00 = 00F7660252100C01</action>
            <action>maincpu.mq@76B08 = 00FD660404100010</action>
            <action>maincpu.mq@76B10 = 0C0100FE66040610</action>
            <action>maincpu.mq@76B18 = 00100C0100EF6606</action>
            <action>maincpu.mq@76B20 = 42561D5000010C01</action>
            <action>maincpu.mq@76B28 = 00DF66043CBCFFFF</action>
            <action>maincpu.mq@76B30 = 4EB900037BA660A8</action>
            <!--
            76AE0 | 41F9 0010 0000 : lea     $100000.l, A0 // sound code address
            76AE6 | 4DE8 0002      : lea     ($2,A0), A6   // sound latch address ($100002)
            76AEA | 1401           : move.b  D1, D2
            76AEC | 1239 00C0 0001 : move.b  $c00001.l, D1 // read input
            76AF2 | B401           : cmp.b   D1, D2
            76AF4 | 67EA           : beq     $76ae0
            76AF6 | 0C01 00FB      : cmpi.b  #-$5, D1
            76AFA | 6602           : bne     $76afe
            76AFC | 5310           : subq.b  #1, (A0)      // decrease code -01
            76AFE | 0C01 00F7      : cmpi.b  #-$9, D1
            76B02 | 6602           : bne     $76b06
            76B04 | 5210           : addq.b  #1, (A0)      // increase code +01
            76B06 | 0C01 00FD      : cmpi.b  #-$3, D1
            76B0A | 6604           : bne     $76b10
            76B0C | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            76B10 | 0C01 00FE      : cmpi.b  #-$2, D1
            76B14 | 6604           : bne     $76b1a
            76B16 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            76B1A | 0C01 00EF      : cmpi.b  #-$11, D1
            76B1E | 6606           : bne     $76b26
            76B20 | 4256           : clr.w   (A6)          // play sound
            76B22 | 1D50 0001      : move.b  (A0), ($1,A6)
            76B26 | 0C01 00DF      : cmpi.b  #-$21, D1
            76B2A | 6604           : bne     $76b30
            76B2C | 3CBC FFFF      : move.w  #$ffff, (A6)  // stop sound
            76B30 | 4EB9 0003 7BA6 : jsr     $37ba6.l      // send sound code
            76B36 | 60A8           : bra     $76ae0
            -->
        </script>
        <script state="run">
            <output format="----- donpachi 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 1 : play sound"                line="15" align="center" />
            <output format="button 2 : stop sound"                line="16" align="center" />
            <output format="----------------------------"         line="17" align="center" />
            <output format="&lt;&lt; sound code %02X &gt;&gt;"    line="19" align="center"  >
                <argument>maincpu.pb@100000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@37BCC = 6100            </action>
            <action>maincpu.md@3432A = 0000CCCC        </action>
            <action>maincpu.mq@76AE0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76AE8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76AF0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76AF8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76B00 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76B08 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76B10 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76B18 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76B20 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76B28 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76B30 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action>maincpu.md@341F0 = 60000028</action> <!-- ram -->
            <action>maincpu.md@34242 = 6000009C</action> <!-- rom -->
        </script>
        <script state="off">
            <action>maincpu.md@341F0 = 303C3FFF</action>
            <action>maincpu.md@34242 = 41F80000</action>
        </script>
    </cheat>

</mamecheat>
donpachijs.xml

Code: Select all

<!-- DonPachi (Japan, Satsuei version) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@5648 = 60</action> <!-- bullet -->
            <action>maincpu.mb@574E = 60</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@5648 = 65</action>
            <action>maincpu.mb@574E = 65</action>
        </script>
    </cheat>

    <cheat desc="button 3 auto fire">
        <script state="on">
            <action>maincpu.mw@2C02C = 4E71</action> <!-- check c-button flag -->
            <action>maincpu.mw@2C03A = 6010</action> <!-- check c-button -->
        </script>
        <script state="off">
            <action>maincpu.mw@2C02C = 6724</action>
            <action>maincpu.mw@2C03A = 6616</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x0020">01 (slow)</item>
            <item value="0x0080">02       </item>
            <item value="0x0100">03       </item>
            <item value="0x0180">04       </item>
            <item value="0x0200">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@073D4 = 4EB900076A904E71</action>
            <action>maincpu.mq@76A90 = BDFC001021586708</action>
            <action>maincpu.mq@76A98 = BDFC00102198661C</action>
            <action>maincpu.mq@76AA0 = 303C00004A426706</action>
            <action>maincpu.mq@76AA8 = 6A0244403400303C</action>
            <action>maincpu.mq@76AB0 = 00004A4367066A02</action>
            <action>maincpu.mq@76AB8 = 44403600D56E0006</action>
            <action>maincpu.mq@76AC0 = D76E00084E75FFFF</action>
            <!--
            76A90 | BDFC 0010 2158 : cmpa.l  #$102158, A6 // 1P
            76A96 | 6708           : beq     $76aa0
            76A98 | BDFC 0010 2198 : cmpa.l  #$102198, A6 // 2P
            76A9E | 661C           : bne     $76abc
            76AA0 | 303C xxxx      : move.w  #$xx, D0     // y position
            76AA4 | 4A42           : tst.w   D2
            76AA6 | 6706           : beq     $76aae
            76AA8 | 6A02           : bpl     $76aac
            76AAA | 4440           : neg.w   D0
            76AAC | 3400           : move.w  D0, D2
            76AAE | 303C xxxx      : move.w  #$xx, D0     // x position
            76AB2 | 4A43           : tst.w   D3
            76AB4 | 6706           : beq     $76abc
            76AB6 | 6A02           : bpl     $76aba
            76AB8 | 4440           : neg.w   D0
            76ABA | 3600           : move.w  D0, D3
            76ABC | D56E 0006      : add.w   D2, ($6,A6)
            76AC0 | D76E 0008      : add.w   D3, ($8,A6)
            76AC4 | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@76AA2 = param</action>
            <action>maincpu.mw@76AB0 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@073D4 = D56E0006D76E0008</action>
            <action>maincpu.mq@76A90 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A98 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76AA0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76AA8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76AB0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76AB8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76AC0 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="bullet speed - main shot">
        <parameter>
            <item value="0x0180">01 (slow)</item>
            <item value="0x0280">02       </item>
            <item value="0x0380">03       </item>
            <item value="0x0480">04       </item>
            <item value="0x0580">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@2C2E8 = 4EB900076AD0D040</action>
            <action>maincpu.mq@76AD0 = 30FC00005449302E</action>
            <action>maincpu.mq@76AD8 = 00204E75FFFFFFFF</action>
            <!--
            76AD0 | 30FC xxxx : move.w  #$xx, (A0)+
            76AD4 | 5449      : addq.w  #2, A1
            76AD6 | 302E 0020 : move.w  ($20,A6), D0
            76ADA | 4E75      : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@76AD2 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@2C2E8 = 30D9302E0020D040</action>
            <action>maincpu.mq@76AD0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76AD8 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="hidden items finder">
        <script state="on">
            <action>maincpu.mb@105D7 = 0C</action>
        </script>
        <script state="off">
            <action>maincpu.mb@105D7 = 36</action>
        </script>
    </cheat>

    <cheat desc="infinite combo">
        <script state="on">
            <action>maincpu.mb@6703 = 02</action>
            <action>maincpu.mb@6E54 = 60</action>
            <action>maincpu.mb@6E6A = 60</action>
        </script>
        <script state="off">
            <action>maincpu.mb@6703 = E2</action>
            <action>maincpu.mb@6E54 = 66</action>
            <action>maincpu.mb@6E6A = 66</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- valid sound codes seem to be from 0x01 to 0x70 -->
        <comment>set &quot;skip ram/rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mw@37BD8 = 4E75            </action> <!-- sound code sending routine stopper -->
            <action>maincpu.md@34336 = 00076AE0        </action>
            <action>maincpu.mq@76AE0 = 41F9001000004DE8</action>
            <action>maincpu.mq@76AE8 = 00021401123900C0</action>
            <action>maincpu.mq@76AF0 = 0001B40167EA0C01</action>
            <action>maincpu.mq@76AF8 = 00FB660253100C01</action>
            <action>maincpu.mq@76B00 = 00F7660252100C01</action>
            <action>maincpu.mq@76B08 = 00FD660404100010</action>
            <action>maincpu.mq@76B10 = 0C0100FE66040610</action>
            <action>maincpu.mq@76B18 = 00100C0100EF6606</action>
            <action>maincpu.mq@76B20 = 42561D5000010C01</action>
            <action>maincpu.mq@76B28 = 00DF66043CBCFFFF</action>
            <action>maincpu.mq@76B30 = 4EB900037BB260A8</action>
            <!--
            76AE0 | 41F9 0010 0000 : lea     $100000.l, A0 // sound code address
            76AE6 | 4DE8 0002      : lea     ($2,A0), A6   // sound latch address ($100002)
            76AEA | 1401           : move.b  D1, D2
            76AEC | 1239 00C0 0001 : move.b  $c00001.l, D1 // read input
            76AF2 | B401           : cmp.b   D1, D2
            76AF4 | 67EA           : beq     $76ae0
            76AF6 | 0C01 00FB      : cmpi.b  #-$5, D1
            76AFA | 6602           : bne     $76afe
            76AFC | 5310           : subq.b  #1, (A0)      // decrease code -01
            76AFE | 0C01 00F7      : cmpi.b  #-$9, D1
            76B02 | 6602           : bne     $76b06
            76B04 | 5210           : addq.b  #1, (A0)      // increase code +01
            76B06 | 0C01 00FD      : cmpi.b  #-$3, D1
            76B0A | 6604           : bne     $76b10
            76B0C | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            76B10 | 0C01 00FE      : cmpi.b  #-$2, D1
            76B14 | 6604           : bne     $76b1a
            76B16 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            76B1A | 0C01 00EF      : cmpi.b  #-$11, D1
            76B1E | 6606           : bne     $76b26
            76B20 | 4256           : clr.w   (A6)          // play sound
            76B22 | 1D50 0001      : move.b  (A0), ($1,A6)
            76B26 | 0C01 00DF      : cmpi.b  #-$21, D1
            76B2A | 6604           : bne     $76b30
            76B2C | 3CBC FFFF      : move.w  #$ffff, (A6)  // stop sound
            76B30 | 4EB9 0003 7BB2 : jsr     $37bb2.l      // send sound code
            76B36 | 60A8           : bra     $76ae0
            -->
        </script>
        <script state="run">
            <output format="----- donpachi 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 1 : play sound"                line="15" align="center" />
            <output format="button 2 : stop sound"                line="16" align="center" />
            <output format="----------------------------"         line="17" align="center" />
            <output format="&lt;&lt; sound code %02X &gt;&gt;"    line="19" align="center"  >
                <argument>maincpu.pb@100000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@37BD8 = 6100            </action>
            <action>maincpu.md@34336 = 0000CCD8        </action>
            <action>maincpu.mq@76AE0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76AE8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76AF0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76AF8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76B00 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76B08 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76B10 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76B18 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76B20 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76B28 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76B30 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action>maincpu.md@341FC = 60000028</action> <!-- ram -->
            <action>maincpu.md@3424E = 6000009C</action> <!-- rom -->
        </script>
        <script state="off">
            <action>maincpu.md@341FC = 303C3FFF</action>
            <action>maincpu.md@3424E = 41F80000</action>
        </script>
    </cheat>

</mamecheat>
donpachikr.xml

Code: Select all

<!-- DonPachi (Korea) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@563C = 60</action> <!-- bullet -->
            <action>maincpu.mb@5742 = 60</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@563C = 65</action>
            <action>maincpu.mb@5742 = 65</action>
        </script>
    </cheat>

    <cheat desc="button 3 auto fire">
        <script state="on">
            <action>maincpu.mw@2C664 = 4E71</action> <!-- check c-button flag -->
            <action>maincpu.mw@2C672 = 6010</action> <!-- check c-button -->
        </script>
        <script state="off">
            <action>maincpu.mw@2C664 = 6724</action>
            <action>maincpu.mw@2C672 = 6616</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x0020">01 (slow)</item>
            <item value="0x0080">02       </item>
            <item value="0x0100">03       </item>
            <item value="0x0180">04       </item>
            <item value="0x0200">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@073C8 = 4EB9000769D04E71</action>
            <action>maincpu.mq@769D0 = BDFC001021586708</action>
            <action>maincpu.mq@769D8 = BDFC00102198661C</action>
            <action>maincpu.mq@769E0 = 303C00004A426706</action>
            <action>maincpu.mq@769E8 = 6A0244403400303C</action>
            <action>maincpu.mq@769F0 = 00004A4367066A02</action>
            <action>maincpu.mq@769F8 = 44403600D56E0006</action>
            <action>maincpu.mq@76A00 = D76E00084E75FFFF</action>
            <!--
            769D0 | BDFC 0010 2158 : cmpa.l  #$102158, A6 // 1P
            769D6 | 6708           : beq     $769e0
            769D8 | BDFC 0010 2198 : cmpa.l  #$102198, A6 // 2P
            769DE | 661C           : bne     $769fc
            769E0 | 303C xxxx      : move.w  #$xx, D0     // y position
            769E4 | 4A42           : tst.w   D2
            769E6 | 6706           : beq     $769ee
            769E8 | 6A02           : bpl     $769ec
            769EA | 4440           : neg.w   D0
            769EC | 3400           : move.w  D0, D2
            769EE | 303C xxxx      : move.w  #$xx, D0     // x position
            769F2 | 4A43           : tst.w   D3
            769F4 | 6706           : beq     $769fc
            769F6 | 6A02           : bpl     $769fa
            769F8 | 4440           : neg.w   D0
            769FA | 3600           : move.w  D0, D3
            769FC | D56E 0006      : add.w   D2, ($6,A6)
            76A00 | D76E 0008      : add.w   D3, ($8,A6)
            76A04 | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@769E2 = param</action>
            <action>maincpu.mw@769F0 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@073C8 = D56E0006D76E0008</action>
            <action>maincpu.mq@769D0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@769D8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@769E0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@769E8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@769F0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@769F8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A00 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="bullet speed - main shot">
        <parameter>
            <item value="0x0180">01 (slow)</item>
            <item value="0x0280">02       </item>
            <item value="0x0380">03       </item>
            <item value="0x0480">04       </item>
            <item value="0x0580">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@2C920 = 4EB900076A10D040</action>
            <action>maincpu.mq@76A10 = 30FC00005449302E</action>
            <action>maincpu.mq@76A18 = 00204E75FFFFFFFF</action>
            <!--
            76A10 | 30FC xxxx : move.w  #$xx, (A0)+
            76A14 | 5449      : addq.w  #2, A1
            76A16 | 302E 0020 : move.w  ($20,A6), D0
            76A1A | 4E75      : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@76A12 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@2C920 = 30D9302E0020D040</action>
            <action>maincpu.mq@76A10 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A18 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="hidden items finder">
        <script state="on">
            <action>maincpu.mb@105D1 = 0C</action>
        </script>
        <script state="off">
            <action>maincpu.mb@105D1 = 36</action>
        </script>
    </cheat>

    <cheat desc="infinite combo">
        <script state="on">
            <action>maincpu.mb@66F7 = 02</action>
            <action>maincpu.mb@6E48 = 60</action>
            <action>maincpu.mb@6E5E = 60</action>
        </script>
        <script state="off">
            <action>maincpu.mb@66F7 = E2</action>
            <action>maincpu.mb@6E48 = 66</action>
            <action>maincpu.mb@6E5E = 66</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- valid sound codes seem to be from 0x01 to 0x70 -->
        <comment>set &quot;skip ram/rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mw@38210 = 4E75            </action> <!-- sound code sending routine stopper -->
            <action>maincpu.md@3496E = 00076A20        </action>
            <action>maincpu.mq@76A20 = 41F9001000004DE8</action>
            <action>maincpu.mq@76A28 = 00021401123900C0</action>
            <action>maincpu.mq@76A30 = 0001B40167EA0C01</action>
            <action>maincpu.mq@76A38 = 00FB660253100C01</action>
            <action>maincpu.mq@76A40 = 00F7660252100C01</action>
            <action>maincpu.mq@76A48 = 00FD660404100010</action>
            <action>maincpu.mq@76A50 = 0C0100FE66040610</action>
            <action>maincpu.mq@76A58 = 00100C0100EF6606</action>
            <action>maincpu.mq@76A60 = 42561D5000010C01</action>
            <action>maincpu.mq@76A68 = 00DF66043CBCFFFF</action>
            <action>maincpu.mq@76A70 = 4EB9000381EA60A8</action>
            <!--
            76A20 | 41F9 0010 0000 : lea     $100000.l, A0 // sound code address
            76A26 | 4DE8 0002      : lea     ($2,A0), A6   // sound latch address ($100002)
            76A2A | 1401           : move.b  D1, D2
            76A2C | 1239 00C0 0001 : move.b  $c00001.l, D1 // read input
            76A32 | B401           : cmp.b   D1, D2
            76A34 | 67EA           : beq     $76a20
            76A36 | 0C01 00FB      : cmpi.b  #-$5, D1
            76A3A | 6602           : bne     $76a3e
            76A3C | 5310           : subq.b  #1, (A0)      // decrease code -01
            76A3E | 0C01 00F7      : cmpi.b  #-$9, D1
            76A42 | 6602           : bne     $76a46
            76A44 | 5210           : addq.b  #1, (A0)      // increase code +01
            76A46 | 0C01 00FD      : cmpi.b  #-$3, D1
            76A4A | 6604           : bne     $76a50
            76A4C | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            76A50 | 0C01 00FE      : cmpi.b  #-$2, D1
            76A54 | 6604           : bne     $76a5a
            76A56 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            76A5A | 0C01 00EF      : cmpi.b  #-$11, D1
            76A5E | 6606           : bne     $76a66
            76A60 | 4256           : clr.w   (A6)          // play sound
            76A62 | 1D50 0001      : move.b  (A0), ($1,A6)
            76A66 | 0C01 00DF      : cmpi.b  #-$21, D1
            76A6A | 6604           : bne     $76a70
            76A6C | 3CBC FFFF      : move.w  #$ffff, (A6)  // stop sound
            76A70 | 4EB9 0003 81EA : jsr     $381ea.l      // send sound code
            76A76 | 60A8           : bra     $76a20
            -->
        </script>
        <script state="run">
            <output format="----- donpachi 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 1 : play sound"                line="15" align="center" />
            <output format="button 2 : stop sound"                line="16" align="center" />
            <output format="----------------------------"         line="17" align="center" />
            <output format="&lt;&lt; sound code %02X &gt;&gt;"    line="19" align="center"  >
                <argument>maincpu.pb@100000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@38210 = 6100            </action>
            <action>maincpu.md@3496E = 0000CCCC        </action>
            <action>maincpu.mq@76A20 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A28 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A30 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A38 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A40 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A48 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A50 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A58 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A60 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A68 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A70 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action>maincpu.md@34834 = 60000028</action> <!-- ram -->
            <action>maincpu.md@34886 = 6000009C</action> <!-- rom -->
        </script>
        <script state="off">
            <action>maincpu.md@34834 = 303C3FFF</action>
            <action>maincpu.md@34886 = 41F80000</action>
        </script>
    </cheat>

</mamecheat>
donpachihk.xml

Code: Select all

<!-- DonPachi (Hong Kong) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@563C = 60</action> <!-- bullet -->
            <action>maincpu.mb@5742 = 60</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@563C = 65</action>
            <action>maincpu.mb@5742 = 65</action>
        </script>
    </cheat>

    <cheat desc="button 3 auto fire">
        <script state="on">
            <action>maincpu.mw@2BF94 = 4E71</action> <!-- check c-button flag -->
            <action>maincpu.mw@2BFA2 = 6010</action> <!-- check c-button -->
        </script>
        <script state="off">
            <action>maincpu.mw@2BF94 = 6724</action>
            <action>maincpu.mw@2BFA2 = 6616</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x0020">01 (slow)</item>
            <item value="0x0080">02       </item>
            <item value="0x0100">03       </item>
            <item value="0x0180">04       </item>
            <item value="0x0200">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@073C8 = 4EB9000769D04E71</action>
            <action>maincpu.mq@769D0 = BDFC001021586708</action>
            <action>maincpu.mq@769D8 = BDFC00102198661C</action>
            <action>maincpu.mq@769E0 = 303C00004A426706</action>
            <action>maincpu.mq@769E8 = 6A0244403400303C</action>
            <action>maincpu.mq@769F0 = 00004A4367066A02</action>
            <action>maincpu.mq@769F8 = 44403600D56E0006</action>
            <action>maincpu.mq@76A00 = D76E00084E75FFFF</action>
            <!--
            769D0 | BDFC 0010 2158 : cmpa.l  #$102158, A6 // 1P
            769D6 | 6708           : beq     $769e0
            769D8 | BDFC 0010 2198 : cmpa.l  #$102198, A6 // 2P
            769DE | 661C           : bne     $769fc
            769E0 | 303C xxxx      : move.w  #$xx, D0     // y position
            769E4 | 4A42           : tst.w   D2
            769E6 | 6706           : beq     $769ee
            769E8 | 6A02           : bpl     $769ec
            769EA | 4440           : neg.w   D0
            769EC | 3400           : move.w  D0, D2
            769EE | 303C xxxx      : move.w  #$xx, D0     // x position
            769F2 | 4A43           : tst.w   D3
            769F4 | 6706           : beq     $769fc
            769F6 | 6A02           : bpl     $769fa
            769F8 | 4440           : neg.w   D0
            769FA | 3600           : move.w  D0, D3
            769FC | D56E 0006      : add.w   D2, ($6,A6)
            76A00 | D76E 0008      : add.w   D3, ($8,A6)
            76A04 | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@769E2 = param</action>
            <action>maincpu.mw@769F0 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@073C8 = D56E0006D76E0008</action>
            <action>maincpu.mq@769D0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@769D8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@769E0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@769E8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@769F0 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@769F8 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A00 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="bullet speed - main shot">
        <parameter>
            <item value="0x0180">01 (slow)</item>
            <item value="0x0280">02       </item>
            <item value="0x0380">03       </item>
            <item value="0x0480">04       </item>
            <item value="0x0580">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@2C250 = 4EB900076A10D040</action>
            <action>maincpu.mq@76A10 = 30FC00005449302E</action>
            <action>maincpu.mq@76A18 = 00204E75FFFFFFFF</action>
            <!--
            76A10 | 30FC xxxx : move.w  #$xx, (A0)+
            76A14 | 5449      : addq.w  #2, A1
            76A16 | 302E 0020 : move.w  ($20,A6), D0
            76A1A | 4E75      : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@76A12 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@2C250 = 30D9302E0020D040</action>
            <action>maincpu.mq@76A10 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A18 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="hidden items finder">
        <script state="on">
            <action>maincpu.mb@10555 = 0C</action>
        </script>
        <script state="off">
            <action>maincpu.mb@10555 = 36</action>
        </script>
    </cheat>

    <cheat desc="infinite combo">
        <script state="on">
            <action>maincpu.mb@66F7 = 02</action>
            <action>maincpu.mb@6E48 = 60</action>
            <action>maincpu.mb@6E5E = 60</action>
        </script>
        <script state="off">
            <action>maincpu.mb@66F7 = E2</action>
            <action>maincpu.mb@6E48 = 66</action>
            <action>maincpu.mb@6E5E = 66</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- valid sound codes seem to be from 0x01 to 0x70 -->
        <comment>set &quot;skip ram/rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mw@37AFA = 4E75            </action> <!-- sound code sending routine stopper -->
            <action>maincpu.md@34258 = 00076A20        </action>
            <action>maincpu.mq@76A20 = 41F9001000004DE8</action>
            <action>maincpu.mq@76A28 = 00021401123900C0</action>
            <action>maincpu.mq@76A30 = 0001B40167EA0C01</action>
            <action>maincpu.mq@76A38 = 00FB660253100C01</action>
            <action>maincpu.mq@76A40 = 00F7660252100C01</action>
            <action>maincpu.mq@76A48 = 00FD660404100010</action>
            <action>maincpu.mq@76A50 = 0C0100FE66040610</action>
            <action>maincpu.mq@76A58 = 00100C0100EF6606</action>
            <action>maincpu.mq@76A60 = 42561D5000010C01</action>
            <action>maincpu.mq@76A68 = 00DF66043CBCFFFF</action>
            <action>maincpu.mq@76A70 = 4EB900037AD460A8</action>
            <!--
            76A20 | 41F9 0010 0000 : lea     $100000.l, A0 // sound code address
            76A26 | 4DE8 0002      : lea     ($2,A0), A6   // sound latch address ($100002)
            76A2A | 1401           : move.b  D1, D2
            76A2C | 1239 00C0 0001 : move.b  $c00001.l, D1 // read input
            76A32 | B401           : cmp.b   D1, D2
            76A34 | 67EA           : beq     $76a20
            76A36 | 0C01 00FB      : cmpi.b  #-$5, D1
            76A3A | 6602           : bne     $76a3e
            76A3C | 5310           : subq.b  #1, (A0)      // decrease code -01
            76A3E | 0C01 00F7      : cmpi.b  #-$9, D1
            76A42 | 6602           : bne     $76a46
            76A44 | 5210           : addq.b  #1, (A0)      // increase code +01
            76A46 | 0C01 00FD      : cmpi.b  #-$3, D1
            76A4A | 6604           : bne     $76a50
            76A4C | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            76A50 | 0C01 00FE      : cmpi.b  #-$2, D1
            76A54 | 6604           : bne     $76a5a
            76A56 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            76A5A | 0C01 00EF      : cmpi.b  #-$11, D1
            76A5E | 6606           : bne     $76a66
            76A60 | 4256           : clr.w   (A6)          // play sound
            76A62 | 1D50 0001      : move.b  (A0), ($1,A6)
            76A66 | 0C01 00DF      : cmpi.b  #-$21, D1
            76A6A | 6604           : bne     $76a70
            76A6C | 3CBC FFFF      : move.w  #$ffff, (A6)  // stop sound
            76A70 | 4EB9 0003 7AD4 : jsr     $37ad4.l      // send sound code
            76A76 | 60A8           : bra     $76a20
            -->
        </script>
        <script state="run">
            <output format="----- donpachi 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 1 : play sound"                line="15" align="center" />
            <output format="button 2 : stop sound"                line="16" align="center" />
            <output format="----------------------------"         line="17" align="center" />
            <output format="&lt;&lt; sound code %02X &gt;&gt;"    line="19" align="center"  >
                <argument>maincpu.pb@100000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@37AFA = 6100            </action>
            <action>maincpu.md@34258 = 0000CCCE        </action>
            <action>maincpu.mq@76A20 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A28 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A30 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A38 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A40 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A48 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A50 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A58 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A60 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A68 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@76A70 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action>maincpu.md@3411E = 60000028</action> <!-- ram -->
            <action>maincpu.md@34170 = 6000009C</action> <!-- rom -->
        </script>
        <script state="off">
            <action>maincpu.md@3411E = 303C3FFF</action>
            <action>maincpu.md@34170 = 41F80000</action>
        </script>
    </cheat>

</mamecheat>
  • "button 3 auto fire" : Simplified codes.
  • "hidden items finder" and "sound test mode" : Added new.
  • "skip ram/rom check" : Fixed RAM initialization problem.