Page 1 of 1

[tdragon] Thunder Dragon

Posted: Sat Aug 28, 2021 12:18 pm
by jman

Code: Select all

<cheat desc="no hit">
    <script state="on">
        <action>maincpu.mb@b498 = 60</action> <!-- enemy -->
        <action>maincpu.mb@ae40 = 60</action> <!-- bullet -->
    </script>
    <script state="off">
        <action>maincpu.mb@b498 = 66</action>
        <action>maincpu.mb@ae40 = 66</action>
    </script>
</cheat>

<cheat desc="auto fire">
    <script state="on">
        <action>maincpu.mb@9e2b = 00</action>
        <action>maincpu.mb@9f85 = 00</action>
    </script>
    <script state="off">
        <action>maincpu.mb@9e2b = 20</action>
        <action>maincpu.mb@9f85 = 20</action>
    </script>
</cheat>

<cheat desc="player speed">
    <parameter min="0x01" max="0x05" step="0x01" />
    <script state="on">
        <action>maincpu.md@9816 =         4eb80210</action>
        <action>maincpu.mq@0210 = 2030000476004843</action>
        <action>maincpu.mq@0218 = 4a8167066a024483</action>
        <action>maincpu.mq@0220 = 2203760048434a80</action>
        <action>maincpu.mq@0228 = 67066a0244832003</action>
        <action>maincpu.mq@0230 = 4e75000000000000</action>
        <!--
        9816 | 4eb8 0210 : jsr    $210.w
        0210 | 2030 0004 : move.l ($4,A0,D0.w),D0
        0214 | 76xx      : moveq  #$xx,D3
        0216 | 4843      : swap   D3
        0218 | 4a81      : tst.l  D1
        021a | 6706      : beq    $222
        021c | 6a02      : bpl    $220
        021e | 4483      : neg.l  D3
        0220 | 2203      : move.l D3,D1
        0222 | 76xx      : moveq  #$xx,D3
        0224 | 4843      : swap   D3
        0226 | 4a80      : tst.l  D0
        0228 | 6706      : beq    $230
        022a | 6a02      : bpl    $22e
        022c | 4483      : neg.l  D3
        022e | 2003      : move.l D3,D0
        0230 | 4e75      : rts
        -->
    </script>
    <script state="change">
        <action>maincpu.mb@0215 = param</action>
        <action>maincpu.mb@0223 = param</action>
    </script>
    <script state="off">
        <action>maincpu.md@9816 =         20300004</action>
        <action>maincpu.mq@0210 = 0000000000000000</action>
        <action>maincpu.mq@0218 = 0000000000000000</action>
        <action>maincpu.mq@0220 = 0000000000000000</action>
        <action>maincpu.mq@0228 = 0000000000000000</action>
        <action>maincpu.mq@0230 = 0000000000000000</action>
    </script>
</cheat>

<cheat desc="bullet speed">
    <comment>mainshot, weapon 1 and 2 only</comment>
    <parameter>
        <item value="0x04">01 (slow)</item>
        <item value="0x08">02       </item>
        <item value="0x0c">03       </item>
        <item value="0x10">04       </item>
        <item value="0x14">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.md@9eae =         4eb80200</action>
        <action>maincpu.md@a02e =         4eb80200</action>
        <action>maincpu.md@a0a4 =         4eb80200</action>
        <action>maincpu.mq@0200 = 201b700048402940</action>
        <action>maincpu.mq@0208 = 00204e7500000000</action>
        <!--
        0200 | 201b      : move.l (A3)+,D0
        0202 | 70xx      : moveq  #$xx,D0
        0204 | 4840      : swap   D0
        0206 | 2940 0020 : move.l D0,($20,A4)
        020a | 4e75      : rts
        -->
    </script>
    <script state="change">
        <action>maincpu.mb@0203 = param</action>
    </script>
    <script state="off">
        <action>maincpu.md@9eae =         295b0020</action>
        <action>maincpu.md@a02e =         295b0020</action>
        <action>maincpu.md@a0a4 =         295b0020</action>
        <action>maincpu.mq@0200 = 0000000000000000</action>
        <action>maincpu.mq@0208 = 0000000000000000</action>
    </script>
</cheat>

<cheat desc="unlock test mode">
    <comment>reset the game (F3) to enter test mode</comment>
    <script state="on">
        <action>maincpu.mb@05b5 = 46</action>
    </script>
    <script state="off">
        <action>maincpu.mb@05b5 = 56</action>
    </script>
</cheat>

<cheat desc="sound test mode">
    <comment>reset the game (F3) to enter sound test mode</comment>
    <script state="on">
        <action>maincpu.mw@e1d6 =             4e75</action> <!-- sound enable routine stopper -->
        <action>maincpu.md@be92 =         4ef80240</action>
        <action>maincpu.mq@0240 = 41f9000b01001401</action>
        <action>maincpu.mq@0248 = 1239000c0003b401</action>
        <action>maincpu.mq@0250 = 67f40c0100fd6602</action>
        <action>maincpu.mq@0258 = 53100c0100fe6602</action>
        <action>maincpu.mq@0260 = 52100c0100fb6604</action>
        <action>maincpu.mq@0268 = 041000100c0100f7</action>
        <action>maincpu.mq@0270 = 6604061000100c01</action>
        <action>maincpu.mq@0278 = 00ef660810104eb9</action>
        <action>maincpu.mq@0280 = 0000e1ca0c0100df</action>
        <action>maincpu.mq@0288 = 66064eb90000dbf4</action>
        <action>maincpu.mq@0290 = 60b4000000000000</action>
        <!--
        0240 | 41f9 000b 0100 : lea    $b0100.l,A0 // sound code address
        0246 | 1401           : move.b D1,D2
        0248 | 1239 000c 0003 : move.b $c0003.l,D1 // read input
        024e | b401           : cmp.b  D1,D2
        0250 | 67f4           : beq    $246
        0252 | 0c01 00fd      : cmpi.b #-$3,D1
        0256 | 6602           : bne    $25a
        0258 | 5310           : subq.b #1,(A0)     // decrease code -01
        025a | 0c01 00fe      : cmpi.b #-$2,D1
        025e | 6602           : bne    $262
        0260 | 5210           : addq.b #1,(A0)     // increase code +01
        0262 | 0c01 00fb      : cmpi.b #-$5,D1
        0266 | 6604           : bne    $26c
        0268 | 0410 0010      : subi.b #$10,(A0)   // decrease code -10
        026c | 0c01 00f7      : cmpi.b #-$9,D1
        0270 | 6604           : bne    $276
        0272 | 0610 0010      : addi.b #$10,(A0)   // increase code +10
        0276 | 0c01 00ef      : cmpi.b #-$11 D1
        027a | 6608           : bne    $284
        027c | 1010           : move.b (A0),D0     // play sound
        027e | 4eb9 0000 e1ca : jsr    $e1ca.l
        0284 | 0c01 00df      : cmpi.b #-$21,D1
        0288 | 6606           : bne    $290
        028a | 4eb9 0000 dbf4 : jsr    $dbf4.l     // stop sound
        0290 | 60b4           : bra    $246
        -->
    </script>
    <script state="run">
        <output format="----- thunder dragon 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="up : increase code +10"                     line="13" align="center" />
        <output format="down : decrease 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 %2.2X &gt;&gt;"         line="19" align="center">
            <argument>maincpu.pb@b0100</argument>
        </output>
    </script>
    <script state="off">
        <action>maincpu.mw@e1d6 =             3c01</action>
        <action>maincpu.md@be92 =         610016b2</action>
        <action>maincpu.mq@0240 = 0000000000000000</action>
        <action>maincpu.mq@0248 = 0000000000000000</action>
        <action>maincpu.mq@0250 = 0000000000000000</action>
        <action>maincpu.mq@0258 = 0000000000000000</action>
        <action>maincpu.mq@0260 = 0000000000000000</action>
        <action>maincpu.mq@0268 = 0000000000000000</action>
        <action>maincpu.mq@0270 = 0000000000000000</action>
        <action>maincpu.mq@0278 = 0000000000000000</action>
        <action>maincpu.mq@0280 = 0000000000000000</action>
        <action>maincpu.mq@0288 = 0000000000000000</action>
        <action>maincpu.mq@0290 = 0000000000000000</action>
    </script>
</cheat>
If you set both "unlock test mode" and "sound test mode" codes, secret test mode is preferred.

[tdragon] Thunder Dragon (update)

Posted: Fri Jun 23, 2023 12:11 pm
by jman

Code: Select all

<!-- Thunder Dragon (8th Jan. 1992, unprotected) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@ae40 = 60</action> <!-- bullet -->
            <action>maincpu.mb@b498 = 60</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@ae40 = 66</action>
            <action>maincpu.mb@b498 = 66</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@9e2b = 00</action> <!-- main shot -->
            <action>maincpu.mb@9f61 = 00</action> <!-- weapon 3 -->
            <action>maincpu.mb@9f7d = 00</action> <!-- weapon 2 -->
            <action>maincpu.mb@9f85 = 00</action> <!-- weapon 1,4 -->
        </script>
        <script state="off">
            <action>maincpu.mb@9e2b = 20</action>
            <action>maincpu.mb@9f61 = 02</action>
            <action>maincpu.mb@9f7d = 04</action>
            <action>maincpu.mb@9f85 = 20</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x00018000">01 (slow)</item>
            <item value="0x00028000">02       </item>
            <item value="0x00048000">03       </item>
            <item value="0x00068000">04       </item>
            <item value="0x00088000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@9816 =         4eb800c0</action>
            <action>maincpu.mq@00c0 = 203000040c6e00a8</action>
            <action>maincpu.mq@00c8 = 002c6420263c0000</action>
            <action>maincpu.mq@00d0 = 00004a8167066a02</action>
            <action>maincpu.mq@00d8 = 44832203263c0000</action>
            <action>maincpu.mq@00e0 = 00004a8067066a02</action>
            <action>maincpu.mq@00e8 = 448320034e750000</action>
            <!--
            00c0 | 2030 0004      : move.l ($4,A0,D0.w),D0
            00c4 | 0c6e 00a8 002c : cmpi.w #$a8,($2c,A6)   // check auto moving flag
            00ca | 6420           : bcc    $ec
            00cc | 263c xxxx xxxx : move.l #$xxxx,D3       // y-position
            00d2 | 4a81           : tst.l  D1
            00d4 | 6706           : beq    $dc
            00d6 | 6a02           : bpl    $da
            00d8 | 4483           : neg.l  D3
            00da | 2203           : move.l D3,D1
            00dc | 263c xxxx xxxx : move.l #$xxxx,D3       // x-position
            00e2 | 4a80           : tst.l  D0
            00e4 | 6706           : beq    $ec
            00e6 | 6a02           : bpl    $ea
            00e8 | 4483           : neg.l  D3
            00ea | 2003           : move.l D3,D0
            00ec | 4e75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@00ce = param</action>
            <action>maincpu.md@00de = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@9816 =         20300004</action>
            <action>maincpu.mq@00c0 = 0000000000000000</action>
            <action>maincpu.mq@00c8 = 0000000000000000</action>
            <action>maincpu.mq@00d0 = 0000000000000000</action>
            <action>maincpu.mq@00d8 = 0000000000000000</action>
            <action>maincpu.mq@00e0 = 0000000000000000</action>
            <action>maincpu.mq@00e8 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <comment>mainshot, weapon 1 and 2 only</comment>
        <parameter>
            <item value="0x00048000">01 (slow)</item>
            <item value="0x00088000">02       </item>
            <item value="0x000c8000">03       </item>
            <item value="0x00108000">04       </item>
            <item value="0x00148000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@9eae =         4eb800f0</action>
            <action>maincpu.md@a02e =         4eb800f0</action>
            <action>maincpu.md@a0a4 =         4eb800f0</action>
            <action>maincpu.mq@00f0 = 584b297c00000000</action>
            <action>maincpu.mq@00f8 = 00204e7500000000</action>
            <!--
            00f0 | 584b                : addq.w #4,A3
            00f2 | 297c xxxx xxxx 0020 : move.l #$xxxx,($20,A4)
            00fa | 4e75                : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@00f4 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@9eae =         295b0020</action>
            <action>maincpu.md@a02e =         295b0020</action>
            <action>maincpu.md@a0a4 =         295b0020</action>
            <action>maincpu.mq@00f0 = 0000000000000000</action>
            <action>maincpu.mq@00f8 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="max bullets up (test)">
        <comment>mainshot, weapon 1 and 2 only</comment>
        <script state="on">
            <!-- main shot -->
            <action>maincpu.mb@9e04 = 79</action>
            <action>maincpu.mb@9e55 = 18</action>
            <action>maincpu.mb@9ee0 = 00</action>
            <!-- weapon 1 -->
            <action>maincpu.mb@16201 = 04</action> <!-- level 1 -->
            <action>maincpu.mb@1625d = 04</action> <!-- level 2 -->
            <action>maincpu.mb@162b9 = 04</action> <!-- level 3 -->
            <action>maincpu.mb@1636d = 04</action> <!-- level 4 -->
            <action>maincpu.mb@16421 = 04</action> <!-- level 5 -->
            <action>maincpu.mb@164d5 = 04</action> <!-- level 6 -->
            <action>maincpu.mb@16589 = 04</action> <!-- level 7 -->
            <action>maincpu.mb@1663d = 04</action> <!-- level 8 -->
            <!-- weapon 2 -->
            <action>maincpu.mb@16ca9 = 08</action> <!-- level 1 -->
            <action>maincpu.mb@16cd7 = 0a</action> <!-- level 2 -->
            <action>maincpu.mb@16d05 = 0c</action> <!-- level 3 -->
            <action>maincpu.mb@16d33 = 0e</action> <!-- level 4 -->
            <action>maincpu.mb@16d61 = 10</action> <!-- level 5 -->
            <action>maincpu.mb@16d8f = 12</action> <!-- level 6 -->
            <action>maincpu.mb@16dbd = 14</action> <!-- level 7 -->
            <action>maincpu.mb@16deb = 16</action> <!-- level 8 -->
        </script>
        <script state="off">
            <action>maincpu.mb@09e04 = 69</action>
            <action>maincpu.mb@09e55 = 03</action>
            <action>maincpu.mb@09ee0 = 10</action>
            <action>maincpu.mb@16201 = 02</action>
            <action>maincpu.mb@1625d = 02</action>
            <action>maincpu.mb@162b9 = 02</action>
            <action>maincpu.mb@1636d = 02</action>
            <action>maincpu.mb@16421 = 02</action>
            <action>maincpu.mb@164d5 = 02</action>
            <action>maincpu.mb@16589 = 02</action>
            <action>maincpu.mb@1663d = 02</action>
            <action>maincpu.mb@16ca9 = 04</action>
            <action>maincpu.mb@16cd7 = 05</action>
            <action>maincpu.mb@16d05 = 06</action>
            <action>maincpu.mb@16d33 = 07</action>
            <action>maincpu.mb@16d61 = 08</action>
            <action>maincpu.mb@16d8f = 09</action>
            <action>maincpu.mb@16dbd = 0a</action>
            <action>maincpu.mb@16deb =  b</action>
        </script>
    </cheat>

    <cheat desc="short hit mark (test)">
        <comment>mainshot, weapon 1 and 2 only</comment>
        <script state="on">
            <action>maincpu.mb@16c57 = 00</action>
            <action>maincpu.mb@16c83 = 00</action>
            <action>maincpu.mb@16feb = 00</action>
            <action>maincpu.mb@1700b = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@16c57 = 01</action>
            <action>maincpu.mb@16c83 = 01</action>
            <action>maincpu.mb@16feb = 01</action>
            <action>maincpu.mb@1700b = 01</action>
        </script>
    </cheat>

    <cheat desc="hidden star item finder">
        <script state="on">
            <action>maincpu.md@b758 =         4eb80100</action>
            <action>maincpu.mq@0100 = 0c6e00280004660e</action>
            <action>maincpu.mq@0108 = 0c6e02c000106e06</action>
            <action>maincpu.mq@0110 = 3d7c0010003a302e</action>
            <action>maincpu.mq@0118 = 003a4e7500000000</action>
            <!--
            0100 | 0c6e 0028 0004 : cmpi.w #$28,($4,A6)
            0106 | 660e           : bne    $116
            0108 | 0c6e 02c0 0010 : cmpi.w #$2c0,($10,A6)
            010e | 6e06           : bgt    $116
            0110 | 3d7c 0010 003a : move.w #$10,($3a,A6)
            0116 | 302e 003a      : move.w ($3a,A6),D0
            011a | 4e75           : rts
            -->
        </script>
        <script state="off">
            <action>maincpu.md@b758 =         302e003a</action>
            <action>maincpu.mq@0100 = 0000000000000000</action>
            <action>maincpu.mq@0108 = 0000000000000000</action>
            <action>maincpu.mq@0110 = 0000000000000000</action>
            <action>maincpu.mq@0118 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="unlock test mode">
        <comment>reset the game (F3) to enter test mode</comment>
        <script state="on">
            <action>maincpu.mb@05b5 = 46</action>
        </script>
        <script state="off">
            <action>maincpu.mb@05b5 = 56</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mw@e1d6 =             4e75</action> <!-- sound routine stopper -->
            <action>maincpu.md@be92 =         4ef80120</action>
            <action>maincpu.mq@0120 = 41f9000b01001401</action>
            <action>maincpu.mq@0128 = 1239000c0003b401</action>
            <action>maincpu.mq@0130 = 67f40c0100fd6602</action>
            <action>maincpu.mq@0138 = 53100c0100fe6602</action>
            <action>maincpu.mq@0140 = 52100c0100fb6604</action>
            <action>maincpu.mq@0148 = 041000100c0100f7</action>
            <action>maincpu.mq@0150 = 6604061000100c01</action>
            <action>maincpu.mq@0158 = 00ef660810104eb9</action>
            <action>maincpu.mq@0160 = 0000e1ca0c0100df</action>
            <action>maincpu.mq@0168 = 66064eb90000dbf4</action>
            <action>maincpu.mq@0170 = 60b4000000000000</action>
            <!--
            0120 | 41f9 000b 0100 : lea    $b0100.l,A0 // sound code address
            0126 | 1401           : move.b D1,D2
            0128 | 1239 000c 0003 : move.b $c0003.l,D1 // read input
            012e | b401           : cmp.b  D1,D2
            0130 | 67f4           : beq    $126
            0132 | 0c01 00fd      : cmpi.b #-$3,D1
            0136 | 6602           : bne    $13a
            0138 | 5310           : subq.b #1,(A0)     // decrease code -01
            013a | 0c01 00fe      : cmpi.b #-$2,D1
            013e | 6602           : bne    $142
            0140 | 5210           : addq.b #1,(A0)     // increase code +01
            0142 | 0c01 00fb      : cmpi.b #-$5,D1
            0146 | 6604           : bne    $14c
            0148 | 0410 0010      : subi.b #$10,(A0)   // decrease code -10
            014c | 0c01 00f7      : cmpi.b #-$9,D1
            0150 | 6604           : bne    $156
            0152 | 0610 0010      : addi.b #$10,(A0)   // increase code +10
            0156 | 0c01 00ef      : cmpi.b #-$11 D1
            015a | 6608           : bne    $164
            015c | 1010           : move.b (A0),D0     // play sound
            015e | 4eb9 0000 e1ca : jsr    $e1ca.l
            0164 | 0c01 00df      : cmpi.b #-$21,D1
            0168 | 6606           : bne    $170
            016a | 4eb9 0000 dbf4 : jsr    $dbf4.l     // stop sound
            0170 | 60b4           : bra    $126
            -->
        </script>
        <script state="run">
            <output format="----- thunder dragon 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 %2.2X &gt;&gt;"         line="19" align="center"  >
                <argument>maincpu.pb@b0100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@e1d6 =             3c01</action>
            <action>maincpu.md@be92 =         610016b2</action>
            <action>maincpu.mq@0120 = 0000000000000000</action>
            <action>maincpu.mq@0128 = 0000000000000000</action>
            <action>maincpu.mq@0130 = 0000000000000000</action>
            <action>maincpu.mq@0138 = 0000000000000000</action>
            <action>maincpu.mq@0140 = 0000000000000000</action>
            <action>maincpu.mq@0148 = 0000000000000000</action>
            <action>maincpu.mq@0150 = 0000000000000000</action>
            <action>maincpu.mq@0158 = 0000000000000000</action>
            <action>maincpu.mq@0160 = 0000000000000000</action>
            <action>maincpu.mq@0168 = 0000000000000000</action>
            <action>maincpu.mq@0170 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>
  • "auto fire" : fix weapon 2 and 3.
  • "player speed" : rewrite routine. check auto-moving flag at start. reallocate address.
  • "bullet speed" : rewrite routine. reallocate address.
  • "max bullets up", "short hit mark" : add new as test code. there need further test.
  • "hidden star item finder" : add new.
  • "sound test mode" : reallocate address.

[tdragon]+ Thunder Dragon

Posted: Fri Feb 02, 2024 9:40 am
by jman
tdragon.xml

Code: Select all

<!-- Thunder Dragon (8th Jan. 1992, unprotected) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@AE40 = 60</action> <!-- bullet -->
            <action>maincpu.mb@B498 = 60</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@AE40 = 66</action>
            <action>maincpu.mb@B498 = 66</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@9E2B = 00</action> <!-- main shot -->
            <action>maincpu.mb@9F61 = 00</action> <!-- weapon 3 -->
            <action>maincpu.mb@9F7D = 00</action> <!-- weapon 2 -->
            <action>maincpu.mb@9F85 = 00</action> <!-- weapon 1,4 -->
        </script>
        <script state="off">
            <action>maincpu.mb@9E2B = 20</action>
            <action>maincpu.mb@9F61 = 02</action>
            <action>maincpu.mb@9F7D = 04</action>
            <action>maincpu.mb@9F85 = 20</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x00018000">01 (slow)</item>
            <item value="0x00028000">02       </item>
            <item value="0x00048000">03       </item>
            <item value="0x00068000">04       </item>
            <item value="0x00088000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@9816 = 4EB800C0        </action>
            <action>maincpu.mq@00C0 = 203000040C6E00A8</action>
            <action>maincpu.mq@00C8 = 002C6420263C0000</action>
            <action>maincpu.mq@00D0 = 00004A8167066A02</action>
            <action>maincpu.mq@00D8 = 44832203263C0000</action>
            <action>maincpu.mq@00E0 = 00004A8067066A02</action>
            <action>maincpu.mq@00E8 = 448320034E750000</action>
            <!--
            00C0 | 2030 0004      : move.l  ($4,A0,D0.w), D0
            00C4 | 0C6E 00A8 002C : cmpi.w  #$a8, ($2c,A6)   // check auto move flag
            00CA | 6420           : bcc     $ec
            00CC | 263C xxxx xxxx : move.l  #$xxxx, D3       // y position
            00D2 | 4A81           : tst.l   D1
            00D4 | 6706           : beq     $dc
            00D6 | 6A02           : bpl     $da
            00D8 | 4483           : neg.l   D3
            00DA | 2203           : move.l  D3, D1
            00DC | 263C xxxx xxxx : move.l  #$xxxx, D3       // x position
            00E2 | 4A80           : tst.l   D0
            00E4 | 6706           : beq     $ec
            00E6 | 6A02           : bpl     $ea
            00E8 | 4483           : neg.l   D3
            00EA | 2003           : move.l  D3, D0
            00EC | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@00CE = param</action>
            <action>maincpu.md@00DE = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@9816 = 20300004        </action>
            <action>maincpu.mq@00C0 = 0000000000000000</action>
            <action>maincpu.mq@00C8 = 0000000000000000</action>
            <action>maincpu.mq@00D0 = 0000000000000000</action>
            <action>maincpu.mq@00D8 = 0000000000000000</action>
            <action>maincpu.mq@00E0 = 0000000000000000</action>
            <action>maincpu.mq@00E8 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <comment>mainshot, weapon 1 and 2 only</comment>
        <parameter>
            <item value="0x00048000">01 (slow)</item>
            <item value="0x00088000">02       </item>
            <item value="0x000c8000">03       </item>
            <item value="0x00108000">04       </item>
            <item value="0x00148000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@9EAE = 4EB800F0        </action>
            <action>maincpu.md@A02E = 4EB800F0        </action>
            <action>maincpu.md@A0A4 = 4EB800F0        </action>
            <action>maincpu.mq@00F0 = 584B297C00000000</action>
            <action>maincpu.mq@00F8 = 00204E7500000000</action>
            <!--
            00F0 | 584B                : addq.w  #4, A3
            00F2 | 297C xxxx xxxx 0020 : move.l  #$xxxx, ($20,A4)
            00FA | 4E75                : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@00F4 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@9EAE = 295B0020        </action>
            <action>maincpu.md@A02E = 295B0020        </action>
            <action>maincpu.md@A0A4 = 295B0020        </action>
            <action>maincpu.mq@00F0 = 0000000000000000</action>
            <action>maincpu.mq@00F8 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="max bullets up (test)">
        <comment>mainshot, weapon 1 and 2 only</comment>
        <script state="on">
            <!-- main shot -->
            <action>maincpu.mb@9E04 = 79</action>
            <action>maincpu.mb@9E55 = 18</action>
            <action>maincpu.mb@9EE0 = 00</action>
            <!-- weapon 1 -->
            <action>maincpu.mb@16201 = 04</action> <!-- level 1 -->
            <action>maincpu.mb@1625D = 04</action> <!-- level 2 -->
            <action>maincpu.mb@162B9 = 04</action> <!-- level 3 -->
            <action>maincpu.mb@1636D = 04</action> <!-- level 4 -->
            <action>maincpu.mb@16421 = 04</action> <!-- level 5 -->
            <action>maincpu.mb@164D5 = 04</action> <!-- level 6 -->
            <action>maincpu.mb@16589 = 04</action> <!-- level 7 -->
            <action>maincpu.mb@1663D = 04</action> <!-- level 8 -->
            <!-- weapon 2 -->
            <action>maincpu.mb@16CA9 = 08</action> <!-- level 1 -->
            <action>maincpu.mb@16CD7 = 0A</action> <!-- level 2 -->
            <action>maincpu.mb@16D05 = 0C</action> <!-- level 3 -->
            <action>maincpu.mb@16D33 = 0E</action> <!-- level 4 -->
            <action>maincpu.mb@16D61 = 10</action> <!-- level 5 -->
            <action>maincpu.mb@16D8F = 12</action> <!-- level 6 -->
            <action>maincpu.mb@16DBD = 14</action> <!-- level 7 -->
            <action>maincpu.mb@16DEB = 16</action> <!-- level 8 -->
        </script>
        <script state="off">
            <action>maincpu.mb@09E04 = 69</action>
            <action>maincpu.mb@09E55 = 03</action>
            <action>maincpu.mb@09EE0 = 10</action>
            <action>maincpu.mb@16201 = 02</action>
            <action>maincpu.mb@1625D = 02</action>
            <action>maincpu.mb@162B9 = 02</action>
            <action>maincpu.mb@1636D = 02</action>
            <action>maincpu.mb@16421 = 02</action>
            <action>maincpu.mb@164D5 = 02</action>
            <action>maincpu.mb@16589 = 02</action>
            <action>maincpu.mb@1663D = 02</action>
            <action>maincpu.mb@16CA9 = 04</action>
            <action>maincpu.mb@16CD7 = 05</action>
            <action>maincpu.mb@16D05 = 06</action>
            <action>maincpu.mb@16D33 = 07</action>
            <action>maincpu.mb@16D61 = 08</action>
            <action>maincpu.mb@16D8F = 09</action>
            <action>maincpu.mb@16DBD = 0A</action>
            <action>maincpu.mb@16DEB =  B</action>
        </script>
    </cheat>

    <cheat desc="short hit mark (test)">
        <comment>mainshot, weapon 1 and 2 only</comment>
        <script state="on">
            <action>maincpu.mb@16C57 = 00</action>
            <action>maincpu.mb@16C83 = 00</action>
            <action>maincpu.mb@16FEB = 00</action>
            <action>maincpu.mb@1700B = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@16C57 = 01</action>
            <action>maincpu.mb@16C83 = 01</action>
            <action>maincpu.mb@16FEB = 01</action>
            <action>maincpu.mb@1700B = 01</action>
        </script>
    </cheat>

    <cheat desc="hidden star item finder">
        <script state="on">
            <action>maincpu.md@B758 = 4EB80100        </action>
            <action>maincpu.mq@0100 = 0C6E00280004660E</action>
            <action>maincpu.mq@0108 = 0C6E02C000106E06</action>
            <action>maincpu.mq@0110 = 3D7C0010003A302E</action>
            <action>maincpu.mq@0118 = 003A4E7500000000</action>
            <!--
            0100 | 0C6E 0028 0004 : cmpi.w  #$28, ($4,A6)
            0106 | 660E           : bne     $116
            0108 | 0C6E 02C0 0010 : cmpi.w  #$2c0, ($10,A6)
            010E | 6E06           : bgt     $116
            0110 | 3D7C 0010 003A : move.w  #$10, ($3a,A6)
            0116 | 302E 003A      : move.w  ($3a,A6), D0
            011A | 4E75           : rts
            -->
        </script>
        <script state="off">
            <action>maincpu.md@B758 = 302E003A        </action>
            <action>maincpu.mq@0100 = 0000000000000000</action>
            <action>maincpu.mq@0108 = 0000000000000000</action>
            <action>maincpu.mq@0110 = 0000000000000000</action>
            <action>maincpu.mq@0118 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="unlock test mode">
        <comment>reset the game (F3) to enter test mode</comment>
        <script state="on">
            <action>maincpu.mw@053A = 6046</action>
        </script>
        <script state="off">
            <action>maincpu.mw@053A = 6600</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mw@E1D6 = 4E75            </action> <!-- sound routine stopper -->
            <action>maincpu.md@BE92 = 4EF80120        </action>
            <action>maincpu.mq@0120 = 41F9000B00001401</action>
            <action>maincpu.mq@0128 = 1239000C0003B401</action>
            <action>maincpu.mq@0130 = 67F40C0100FD6602</action>
            <action>maincpu.mq@0138 = 53100C0100FE6602</action>
            <action>maincpu.mq@0140 = 52100C0100FB6604</action>
            <action>maincpu.mq@0148 = 041000100C0100F7</action>
            <action>maincpu.mq@0150 = 6604061000100C01</action>
            <action>maincpu.mq@0158 = 00EF660810104EB9</action>
            <action>maincpu.mq@0160 = 0000E1CA0C0100DF</action>
            <action>maincpu.mq@0168 = 66064EB90000DBF4</action>
            <action>maincpu.mq@0170 = 60B4000000000000</action>
            <!--
            0120 | 41F9 000B 0000 : lea     $b0000.l, A0 // sound code address
            0126 | 1401           : move.b  D1, D2
            0128 | 1239 000C 0003 : move.b  $c0003.l, D1 // read input
            012E | B401           : cmp.b   D1, D2
            0130 | 67F4           : beq     $126
            0132 | 0C01 00FD      : cmpi.b  #-$3, D1
            0136 | 6602           : bne     $13a
            0138 | 5310           : subq.b  #1, (A0)     // decrease code -01
            013A | 0C01 00FE      : cmpi.b  #-$2, D1
            013E | 6602           : bne     $142
            0140 | 5210           : addq.b  #1, (A0)     // increase code +01
            0142 | 0C01 00FB      : cmpi.b  #-$5, D1
            0146 | 6604           : bne     $14c
            0148 | 0410 0010      : subi.b  #$10, (A0)   // decrease code -10
            014C | 0C01 00F7      : cmpi.b  #-$9, D1
            0150 | 6604           : bne     $156
            0152 | 0610 0010      : addi.b  #$10, (A0)   // increase code +10
            0156 | 0C01 00EF      : cmpi.b  #-$11, D1
            015A | 6608           : bne     $164
            015C | 1010           : move.b  (A0), D0     // play sound
            015E | 4EB9 0000 E1CA : jsr     $e1ca.l
            0164 | 0C01 00DF      : cmpi.b  #-$21, D1
            0168 | 6606           : bne     $170
            016A | 4EB9 0000 DBF4 : jsr     $dbf4.l      // stop sound
            0170 | 60B4           : bra     $126
            -->
        </script>
        <script state="run">
            <output format="----- thunder dragon 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@B0000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@E1D6 = 3C01            </action>
            <action>maincpu.md@BE92 = 610016B2        </action>
            <action>maincpu.mq@0120 = 0000000000000000</action>
            <action>maincpu.mq@0128 = 0000000000000000</action>
            <action>maincpu.mq@0130 = 0000000000000000</action>
            <action>maincpu.mq@0138 = 0000000000000000</action>
            <action>maincpu.mq@0140 = 0000000000000000</action>
            <action>maincpu.mq@0148 = 0000000000000000</action>
            <action>maincpu.mq@0150 = 0000000000000000</action>
            <action>maincpu.mq@0158 = 0000000000000000</action>
            <action>maincpu.mq@0160 = 0000000000000000</action>
            <action>maincpu.mq@0168 = 0000000000000000</action>
            <action>maincpu.mq@0170 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>
tdragon1.xml

Code: Select all

<!-- Thunder Dragon (4th Jun. 1991, protected) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@B0B6 = 60</action> <!-- bullet -->
            <action>maincpu.mb@B70E = 60</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@B0B6 = 66</action>
            <action>maincpu.mb@B70E = 66</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@A093 = 00</action> <!-- main shot -->
            <action>maincpu.mb@A1C9 = 00</action> <!-- weapon 3 -->
            <action>maincpu.mb@A1E5 = 00</action> <!-- weapon 2 -->
            <action>maincpu.mb@A1ED = 00</action> <!-- weapon 1,4 -->
        </script>
        <script state="off">
            <action>maincpu.mb@A093 = 20</action>
            <action>maincpu.mb@A1C9 = 02</action>
            <action>maincpu.mb@A1E5 = 04</action>
            <action>maincpu.mb@A1ED = 20</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x00018000">01 (slow)</item>
            <item value="0x00028000">02       </item>
            <item value="0x00048000">03       </item>
            <item value="0x00068000">04       </item>
            <item value="0x00088000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@9A80 = 4EB800C0        </action>
            <action>maincpu.mq@00C0 = 203000040C6E00A8</action>
            <action>maincpu.mq@00C8 = 002C6420263C0000</action>
            <action>maincpu.mq@00D0 = 00004A8167066A02</action>
            <action>maincpu.mq@00D8 = 44832203263C0000</action>
            <action>maincpu.mq@00E0 = 00004A8067066A02</action>
            <action>maincpu.mq@00E8 = 448320034E750000</action>
            <!--
            00C0 | 2030 0004      : move.l  ($4,A0,D0.w), D0
            00C4 | 0C6E 00A8 002C : cmpi.w  #$a8, ($2c,A6)   // check auto move flag
            00CA | 6420           : bcc     $ec
            00CC | 263C xxxx xxxx : move.l  #$xxxx, D3       // y position
            00D2 | 4A81           : tst.l   D1
            00D4 | 6706           : beq     $dc
            00D6 | 6A02           : bpl     $da
            00D8 | 4483           : neg.l   D3
            00DA | 2203           : move.l  D3, D1
            00DC | 263C xxxx xxxx : move.l  #$xxxx, D3       // x position
            00E2 | 4A80           : tst.l   D0
            00E4 | 6706           : beq     $ec
            00E6 | 6A02           : bpl     $ea
            00E8 | 4483           : neg.l   D3
            00EA | 2003           : move.l  D3, D0
            00EC | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@00CE = param</action>
            <action>maincpu.md@00DE = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@9A80 = 20300004        </action>
            <action>maincpu.mq@00C0 = 0000000000000000</action>
            <action>maincpu.mq@00C8 = 0000000000000000</action>
            <action>maincpu.mq@00D0 = 0000000000000000</action>
            <action>maincpu.mq@00D8 = 0000000000000000</action>
            <action>maincpu.mq@00E0 = 0000000000000000</action>
            <action>maincpu.mq@00E8 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <comment>mainshot, weapon 1 and 2 only</comment>
        <parameter>
            <item value="0x00048000">01 (slow)</item>
            <item value="0x00088000">02       </item>
            <item value="0x000c8000">03       </item>
            <item value="0x00108000">04       </item>
            <item value="0x00148000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@A116 = 4EB800F0        </action>
            <action>maincpu.md@A296 = 4EB800F0        </action>
            <action>maincpu.md@A30C = 4EB800F0        </action>
            <action>maincpu.mq@00F0 = 584B297C00000000</action>
            <action>maincpu.mq@00F8 = 00204E7500000000</action>
            <!--
            00F0 | 584B                : addq.w  #4, A3
            00F2 | 297C xxxx xxxx 0020 : move.l  #$xxxx, ($20,A4)
            00FA | 4E75                : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@00F4 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@9EAE = 295B0020        </action>
            <action>maincpu.md@A02E = 295B0020        </action>
            <action>maincpu.md@A0A4 = 295B0020        </action>
            <action>maincpu.mq@00F0 = 0000000000000000</action>
            <action>maincpu.mq@00F8 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="max bullets up (test)">
        <comment>mainshot, weapon 1 and 2 only</comment>
        <script state="on">
            <!-- main shot -->
            <action>maincpu.mb@A06C = 79</action>
            <action>maincpu.mb@A0BD = 18</action>
            <action>maincpu.mb@A148 = 00</action>
            <!-- weapon 1 -->
            <action>maincpu.mb@16201 = 04</action> <!-- level 1 -->
            <action>maincpu.mb@1625D = 04</action> <!-- level 2 -->
            <action>maincpu.mb@162B9 = 04</action> <!-- level 3 -->
            <action>maincpu.mb@1636D = 04</action> <!-- level 4 -->
            <action>maincpu.mb@16421 = 04</action> <!-- level 5 -->
            <action>maincpu.mb@164D5 = 04</action> <!-- level 6 -->
            <action>maincpu.mb@16589 = 04</action> <!-- level 7 -->
            <action>maincpu.mb@1663D = 04</action> <!-- level 8 -->
            <!-- weapon 2 -->
            <action>maincpu.mb@16CA9 = 08</action> <!-- level 1 -->
            <action>maincpu.mb@16CD7 = 0A</action> <!-- level 2 -->
            <action>maincpu.mb@16D05 = 0C</action> <!-- level 3 -->
            <action>maincpu.mb@16D33 = 0E</action> <!-- level 4 -->
            <action>maincpu.mb@16D61 = 10</action> <!-- level 5 -->
            <action>maincpu.mb@16D8F = 12</action> <!-- level 6 -->
            <action>maincpu.mb@16DBD = 14</action> <!-- level 7 -->
            <action>maincpu.mb@16DEB = 16</action> <!-- level 8 -->
        </script>
        <script state="off">
            <action>maincpu.mb@0A06C = 69</action>
            <action>maincpu.mb@0A0BD = 03</action>
            <action>maincpu.mb@0A148 = 10</action>
            <action>maincpu.mb@16201 = 02</action>
            <action>maincpu.mb@1625D = 02</action>
            <action>maincpu.mb@162B9 = 02</action>
            <action>maincpu.mb@1636D = 02</action>
            <action>maincpu.mb@16421 = 02</action>
            <action>maincpu.mb@164D5 = 02</action>
            <action>maincpu.mb@16589 = 02</action>
            <action>maincpu.mb@1663D = 02</action>
            <action>maincpu.mb@16CA9 = 04</action>
            <action>maincpu.mb@16CD7 = 05</action>
            <action>maincpu.mb@16D05 = 06</action>
            <action>maincpu.mb@16D33 = 07</action>
            <action>maincpu.mb@16D61 = 08</action>
            <action>maincpu.mb@16D8F = 09</action>
            <action>maincpu.mb@16DBD = 0A</action>
            <action>maincpu.mb@16DEB =  B</action>
        </script>
    </cheat>

    <cheat desc="short hit mark (test)">
        <comment>mainshot, weapon 1 and 2 only</comment>
        <script state="on">
            <action>maincpu.mb@16C57 = 00</action>
            <action>maincpu.mb@16C83 = 00</action>
            <action>maincpu.mb@16FEB = 00</action>
            <action>maincpu.mb@1700B = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@16C57 = 01</action>
            <action>maincpu.mb@16C83 = 01</action>
            <action>maincpu.mb@16FEB = 01</action>
            <action>maincpu.mb@1700B = 01</action>
        </script>
    </cheat>

    <cheat desc="hidden star item finder">
        <script state="on">
            <action>maincpu.md@B9CE = 4EB80100        </action>
            <action>maincpu.mq@0100 = 0C6E00280004660E</action>
            <action>maincpu.mq@0108 = 0C6E02C000106E06</action>
            <action>maincpu.mq@0110 = 3D7C0010003A302E</action>
            <action>maincpu.mq@0118 = 003A4E7500000000</action>
            <!--
            0100 | 0C6E 0028 0004 : cmpi.w  #$28, ($4,A6)
            0106 | 660E           : bne     $116
            0108 | 0C6E 02C0 0010 : cmpi.w  #$2c0, ($10,A6)
            010E | 6E06           : bgt     $116
            0110 | 3D7C 0010 003A : move.w  #$10, ($3a,A6)
            0116 | 302E 003A      : move.w  ($3a,A6), D0
            011A | 4E75           : rts
            -->
        </script>
        <script state="off">
            <action>maincpu.md@B9CE = 302E003A        </action>
            <action>maincpu.mq@0100 = 0000000000000000</action>
            <action>maincpu.mq@0108 = 0000000000000000</action>
            <action>maincpu.mq@0110 = 0000000000000000</action>
            <action>maincpu.mq@0118 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="unlock test mode">
        <comment>reset the game (F3) to enter test mode</comment>
        <script state="on">
            <action>maincpu.mw@053A = 6046</action>
        </script>
        <script state="off">
            <action>maincpu.mw@053A = 6600</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mw@E46C = 4E75            </action> <!-- sound routine stopper -->
            <action>maincpu.md@C110 = 4EF80120        </action>
            <action>maincpu.mq@0120 = 41F9000B00001401</action>
            <action>maincpu.mq@0128 = 1239000C0003B401</action>
            <action>maincpu.mq@0130 = 67F40C0100FD6602</action>
            <action>maincpu.mq@0138 = 53100C0100FE6602</action>
            <action>maincpu.mq@0140 = 52100C0100FB6604</action>
            <action>maincpu.mq@0148 = 041000100C0100F7</action>
            <action>maincpu.mq@0150 = 6604061000100C01</action>
            <action>maincpu.mq@0158 = 00EF660810104EB9</action>
            <action>maincpu.mq@0160 = 0000E4600C0100DF</action>
            <action>maincpu.mq@0168 = 66064EB90000DE82</action>
            <action>maincpu.mq@0170 = 60B4000000000000</action>
            <!--
            0120 | 41F9 000B 0000 : lea     $b0000.l, A0 // sound code address
            0126 | 1401           : move.b  D1, D2
            0128 | 1239 000C 0003 : move.b  $c0003.l, D1 // read input
            012E | B401           : cmp.b   D1, D2
            0130 | 67F4           : beq     $126
            0132 | 0C01 00FD      : cmpi.b  #-$3, D1
            0136 | 6602           : bne     $13a
            0138 | 5310           : subq.b  #1, (A0)     // decrease code -01
            013A | 0C01 00FE      : cmpi.b  #-$2, D1
            013E | 6602           : bne     $142
            0140 | 5210           : addq.b  #1, (A0)     // increase code +01
            0142 | 0C01 00FB      : cmpi.b  #-$5, D1
            0146 | 6604           : bne     $14c
            0148 | 0410 0010      : subi.b  #$10, (A0)   // decrease code -10
            014C | 0C01 00F7      : cmpi.b  #-$9, D1
            0150 | 6604           : bne     $156
            0152 | 0610 0010      : addi.b  #$10, (A0)   // increase code +10
            0156 | 0C01 00EF      : cmpi.b  #-$11, D1
            015A | 6608           : bne     $164
            015C | 1010           : move.b  (A0), D0     // play sound
            015E | 4EB9 0000 E460 : jsr     $e460.l
            0164 | 0C01 00DF      : cmpi.b  #-$21, D1
            0168 | 6606           : bne     $170
            016A | 4EB9 0000 DE82 : jsr     $de82.l      // stop sound
            0170 | 60B4           : bra     $126
            -->
        </script>
        <script state="run">
            <output format="----- thunder dragon 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@B0000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@E46C = 3C01            </action>
            <action>maincpu.md@C110 = 610016C2        </action>
            <action>maincpu.mq@0120 = 0000000000000000</action>
            <action>maincpu.mq@0128 = 0000000000000000</action>
            <action>maincpu.mq@0130 = 0000000000000000</action>
            <action>maincpu.mq@0138 = 0000000000000000</action>
            <action>maincpu.mq@0140 = 0000000000000000</action>
            <action>maincpu.mq@0148 = 0000000000000000</action>
            <action>maincpu.mq@0150 = 0000000000000000</action>
            <action>maincpu.mq@0158 = 0000000000000000</action>
            <action>maincpu.mq@0160 = 0000000000000000</action>
            <action>maincpu.mq@0168 = 0000000000000000</action>
            <action>maincpu.mq@0170 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>
tdragonb.xml

Code: Select all

<!-- Thunder Dragon (bootleg with Raiden sounds, encrypted) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@B0B6 = 60</action> <!-- bullet -->
            <action>maincpu.mb@B70E = 60</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@B0B6 = 66</action>
            <action>maincpu.mb@B70E = 66</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@A093 = 00</action> <!-- main shot -->
            <action>maincpu.mb@A1C9 = 00</action> <!-- weapon 3 -->
            <action>maincpu.mb@A1E5 = 00</action> <!-- weapon 2 -->
            <action>maincpu.mb@A1ED = 00</action> <!-- weapon 1,4 -->
        </script>
        <script state="off">
            <action>maincpu.mb@A093 = 20</action>
            <action>maincpu.mb@A1C9 = 02</action>
            <action>maincpu.mb@A1E5 = 04</action>
            <action>maincpu.mb@A1ED = 20</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x00018000">01 (slow)</item>
            <item value="0x00028000">02       </item>
            <item value="0x00048000">03       </item>
            <item value="0x00068000">04       </item>
            <item value="0x00088000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@9A80 = 4EB81040        </action>
            <action>maincpu.mq@1040 = 203000040C6E00A8</action>
            <action>maincpu.mq@1048 = 002C6420263C0000</action>
            <action>maincpu.mq@1050 = 00004A8167066A02</action>
            <action>maincpu.mq@1058 = 44832203263C0000</action>
            <action>maincpu.mq@1060 = 00004A8067066A02</action>
            <action>maincpu.mq@1068 = 448320034E750000</action>
            <!--
            1040 | 2030 0004      : move.l  ($4,A0,D0.w), D0
            1044 | 0C6E 00A8 002C : cmpi.w  #$a8, ($2c,A6)   // check auto move flag
            104A | 6420           : bcc     $106c
            104C | 263C xxxx xxxx : move.l  #$xxxx, D3       // y position
            1052 | 4A81           : tst.l   D1
            1054 | 6706           : beq     $105c
            1056 | 6A02           : bpl     $105a
            1058 | 4483           : neg.l   D3
            105A | 2203           : move.l  D3, D1
            105C | 263C xxxx xxxx : move.l  #$xxxx, D3       // x position
            1062 | 4A80           : tst.l   D0
            1064 | 6706           : beq     $106c
            1066 | 6A02           : bpl     $106a
            1068 | 4483           : neg.l   D3
            106A | 2003           : move.l  D3, D0
            106C | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@104E = param</action>
            <action>maincpu.md@105E = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@9A80 = 20300004        </action>
            <action>maincpu.mq@1040 = 0000000000000000</action>
            <action>maincpu.mq@1048 = 0000000000000000</action>
            <action>maincpu.mq@1050 = 0000000000000000</action>
            <action>maincpu.mq@1058 = 0000000000000000</action>
            <action>maincpu.mq@1060 = 0000000000000000</action>
            <action>maincpu.mq@1068 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <comment>mainshot, weapon 1 and 2 only</comment>
        <parameter>
            <item value="0x00048000">01 (slow)</item>
            <item value="0x00088000">02       </item>
            <item value="0x000c8000">03       </item>
            <item value="0x00108000">04       </item>
            <item value="0x00148000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@A116 = 4EB81070        </action>
            <action>maincpu.md@A296 = 4EB81070        </action>
            <action>maincpu.md@A30C = 4EB81070        </action>
            <action>maincpu.mq@1070 = 584B297C00000000</action>
            <action>maincpu.mq@1078 = 00204E7500000000</action>
            <!--
            1070 | 584B                : addq.w  #4, A3
            1072 | 297C xxxx xxxx 0020 : move.l  #$xxxx, ($20,A4)
            107A | 4E75                : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@1074 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@9EAE = 295B0020        </action>
            <action>maincpu.md@A02E = 295B0020        </action>
            <action>maincpu.md@A0A4 = 295B0020        </action>
            <action>maincpu.mq@1070 = 0000000000000000</action>
            <action>maincpu.mq@1078 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="max bullets up (test)">
        <comment>mainshot, weapon 1 and 2 only</comment>
        <script state="on">
            <!-- main shot -->
            <action>maincpu.mb@A06C = 79</action>
            <action>maincpu.mb@A0BD = 18</action>
            <action>maincpu.mb@A148 = 00</action>
            <!-- weapon 1 -->
            <action>maincpu.mb@16201 = 04</action> <!-- level 1 -->
            <action>maincpu.mb@1625D = 04</action> <!-- level 2 -->
            <action>maincpu.mb@162B9 = 04</action> <!-- level 3 -->
            <action>maincpu.mb@1636D = 04</action> <!-- level 4 -->
            <action>maincpu.mb@16421 = 04</action> <!-- level 5 -->
            <action>maincpu.mb@164D5 = 04</action> <!-- level 6 -->
            <action>maincpu.mb@16589 = 04</action> <!-- level 7 -->
            <action>maincpu.mb@1663D = 04</action> <!-- level 8 -->
            <!-- weapon 2 -->
            <action>maincpu.mb@16CA9 = 08</action> <!-- level 1 -->
            <action>maincpu.mb@16CD7 = 0A</action> <!-- level 2 -->
            <action>maincpu.mb@16D05 = 0C</action> <!-- level 3 -->
            <action>maincpu.mb@16D33 = 0E</action> <!-- level 4 -->
            <action>maincpu.mb@16D61 = 10</action> <!-- level 5 -->
            <action>maincpu.mb@16D8F = 12</action> <!-- level 6 -->
            <action>maincpu.mb@16DBD = 14</action> <!-- level 7 -->
            <action>maincpu.mb@16DEB = 16</action> <!-- level 8 -->
        </script>
        <script state="off">
            <action>maincpu.mb@0A06C = 69</action>
            <action>maincpu.mb@0A0BD = 03</action>
            <action>maincpu.mb@0A148 = 10</action>
            <action>maincpu.mb@16201 = 02</action>
            <action>maincpu.mb@1625D = 02</action>
            <action>maincpu.mb@162B9 = 02</action>
            <action>maincpu.mb@1636D = 02</action>
            <action>maincpu.mb@16421 = 02</action>
            <action>maincpu.mb@164D5 = 02</action>
            <action>maincpu.mb@16589 = 02</action>
            <action>maincpu.mb@1663D = 02</action>
            <action>maincpu.mb@16CA9 = 04</action>
            <action>maincpu.mb@16CD7 = 05</action>
            <action>maincpu.mb@16D05 = 06</action>
            <action>maincpu.mb@16D33 = 07</action>
            <action>maincpu.mb@16D61 = 08</action>
            <action>maincpu.mb@16D8F = 09</action>
            <action>maincpu.mb@16DBD = 0A</action>
            <action>maincpu.mb@16DEB =  B</action>
        </script>
    </cheat>

    <cheat desc="short hit mark (test)">
        <comment>mainshot, weapon 1 and 2 only</comment>
        <script state="on">
            <action>maincpu.mb@16C57 = 00</action>
            <action>maincpu.mb@16C83 = 00</action>
            <action>maincpu.mb@16FEB = 00</action>
            <action>maincpu.mb@1700B = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@16C57 = 01</action>
            <action>maincpu.mb@16C83 = 01</action>
            <action>maincpu.mb@16FEB = 01</action>
            <action>maincpu.mb@1700B = 01</action>
        </script>
    </cheat>

    <cheat desc="hidden star item finder">
        <script state="on">
            <action>maincpu.md@B9CE = 4EB81080        </action>
            <action>maincpu.mq@1080 = 0C6E00280004660E</action>
            <action>maincpu.mq@1088 = 0C6E02C000106E06</action>
            <action>maincpu.mq@1090 = 3D7C0010003A302E</action>
            <action>maincpu.mq@1098 = 003A4E7500000000</action>
            <!--
            1080 | 0C6E 0028 0004 : cmpi.w  #$28, ($4,A6)
            1086 | 660E           : bne     $1096
            1088 | 0C6E 02C0 0010 : cmpi.w  #$2c0, ($10,A6)
            108E | 6E06           : bgt     $1096
            1090 | 3D7C 0010 003A : move.w  #$10, ($3a,A6)
            1096 | 302E 003A      : move.w  ($3a,A6), D0
            109A | 4E75           : rts
            -->
        </script>
        <script state="off">
            <action>maincpu.md@B9CE = 302E003A        </action>
            <action>maincpu.mq@1080 = 0000000000000000</action>
            <action>maincpu.mq@1080 = 0000000000000000</action>
            <action>maincpu.mq@1090 = 0000000000000000</action>
            <action>maincpu.mq@1090 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="unlock test mode">
        <comment>reset the game (F3) to enter test mode</comment>
        <script state="on">
            <action>maincpu.mb@053D = 46</action>
        </script>
        <script state="off">
            <action>maincpu.mb@053D = 56</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.md@C110 = 4EF81090        </action>
            <action>maincpu.mq@1090 = 41F9000B000043F9</action>
            <action>maincpu.mq@1098 = 000C001E12001029</action>
            <action>maincpu.mq@10A0 = FFE5B20067F60C00</action>
            <action>maincpu.mq@10A8 = 00FD660253100C00</action>
            <action>maincpu.mq@10B0 = 00FE660252100C00</action>
            <action>maincpu.mq@10B8 = 00FB660404100010</action>
            <action>maincpu.mq@10C0 = 0C0000F766040610</action>
            <action>maincpu.mq@10C8 = 00100C0000EF6608</action>
            <action>maincpu.mq@10D0 = 343C800084103282</action>
            <action>maincpu.mq@10D8 = 0C0000DF6606343C</action>
            <action>maincpu.mq@10E0 = 82FF328260B60000</action>
            <!--
            1090 | 41F9 000B 0000 : lea     $b0000.l, A0  // sound code address
            1096 | 43F9 000C 001E : lea     $c001e.l, A1  // sound latch address
            109C | 1200           : move.b  D0, D1
            109E | 1029 FFE5      : move.b  (-$1b,A1), D0 // read input ($c0003)
            10A2 | B200           : cmp.b   D0, D1
            10A4 | 67F6           : beq     $109c
            10A6 | 0C00 00FD      : cmpi.b  #-$3, D0
            10AA | 6602           : bne     $10ae
            10AC | 5310           : subq.b  #1, (A0)      // decrease code -01
            10AE | 0C00 00FE      : cmpi.b  #-$2, D0
            10B2 | 6602           : bne     $10b6
            10B4 | 5210           : addq.b  #1, (A0)      // increase code +01
            10B6 | 0C00 00FB      : cmpi.b  #-$5, D0
            10BA | 6604           : bne     $10c0
            10BC | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            10C0 | 0C00 00F7      : cmpi.b  #-$9, D0
            10C4 | 6604           : bne     $10ca
            10C6 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            10CA | 0C00 00EF      : cmpi.b  #-$11, D0
            10CE | 6608           : bne     $10d8
            10D0 | 343C 8000      : move.w  #$8000, D2    // play sound
            10D4 | 8410           : or.b    (A0), D2
            10D6 | 3282           : move.w  D2, (A1)
            10D8 | 0C00 00DF      : cmpi.b  #-$21, D0
            10DC | 6606           : bne     $10e4
            10DE | 343C 82FF      : move.w  #$82ff, D2    // stop sound
            10E2 | 3282           : move.w  D2, (A1)
            10E4 | 60B6           : bra     $109c
            -->
        </script>
        <script state="run">
            <output format="----- thunder dragon 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@B0000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.md@C110 = 610016C2        </action>
            <action>maincpu.mq@1090 = 0000000000000000</action>
            <action>maincpu.mq@1098 = 0000000000000000</action>
            <action>maincpu.mq@10A0 = 0000000000000000</action>
            <action>maincpu.mq@10A8 = 0000000000000000</action>
            <action>maincpu.mq@10B0 = 0000000000000000</action>
            <action>maincpu.mq@10B8 = 0000000000000000</action>
            <action>maincpu.mq@10C0 = 0000000000000000</action>
            <action>maincpu.mq@10C8 = 0000000000000000</action>
            <action>maincpu.mq@10D0 = 0000000000000000</action>
            <action>maincpu.mq@10D8 = 0000000000000000</action>
            <action>maincpu.mq@10E0 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>
tdragonb3.xml

Code: Select all

<!-- Thunder Dragon (bootleg with Raiden sounds, unencrypted) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@B0B6 = 60</action> <!-- bullet -->
            <action>maincpu.mb@B70E = 60</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@B0B6 = 66</action>
            <action>maincpu.mb@B70E = 66</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@A093 = 00</action> <!-- main shot -->
            <action>maincpu.mb@A1C9 = 00</action> <!-- weapon 3 -->
            <action>maincpu.mb@A1E5 = 00</action> <!-- weapon 2 -->
            <action>maincpu.mb@A1ED = 00</action> <!-- weapon 1,4 -->
        </script>
        <script state="off">
            <action>maincpu.mb@A093 = 20</action>
            <action>maincpu.mb@A1C9 = 02</action>
            <action>maincpu.mb@A1E5 = 04</action>
            <action>maincpu.mb@A1ED = 20</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x00018000">01 (slow)</item>
            <item value="0x00028000">02       </item>
            <item value="0x00048000">03       </item>
            <item value="0x00068000">04       </item>
            <item value="0x00088000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@9A80 = 4EB81040        </action>
            <action>maincpu.mq@1040 = 203000040C6E00A8</action>
            <action>maincpu.mq@1048 = 002C6420263C0000</action>
            <action>maincpu.mq@1050 = 00004A8167066A02</action>
            <action>maincpu.mq@1058 = 44832203263C0000</action>
            <action>maincpu.mq@1060 = 00004A8067066A02</action>
            <action>maincpu.mq@1068 = 448320034E750000</action>
            <!--
            1040 | 2030 0004      : move.l  ($4,A0,D0.w), D0
            1044 | 0C6E 00A8 002C : cmpi.w  #$a8, ($2c,A6)   // check auto move flag
            104A | 6420           : bcc     $106c
            104C | 263C xxxx xxxx : move.l  #$xxxx, D3       // y position
            1052 | 4A81           : tst.l   D1
            1054 | 6706           : beq     $105c
            1056 | 6A02           : bpl     $105a
            1058 | 4483           : neg.l   D3
            105A | 2203           : move.l  D3, D1
            105C | 263C xxxx xxxx : move.l  #$xxxx, D3       // x position
            1062 | 4A80           : tst.l   D0
            1064 | 6706           : beq     $106c
            1066 | 6A02           : bpl     $106a
            1068 | 4483           : neg.l   D3
            106A | 2003           : move.l  D3, D0
            106C | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@104E = param</action>
            <action>maincpu.md@105E = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@9A80 = 20300004        </action>
            <action>maincpu.mq@1040 = 0000000000000000</action>
            <action>maincpu.mq@1048 = 0000000000000000</action>
            <action>maincpu.mq@1050 = 0000000000000000</action>
            <action>maincpu.mq@1058 = 0000000000000000</action>
            <action>maincpu.mq@1060 = 0000000000000000</action>
            <action>maincpu.mq@1068 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <comment>mainshot, weapon 1 and 2 only</comment>
        <parameter>
            <item value="0x00048000">01 (slow)</item>
            <item value="0x00088000">02       </item>
            <item value="0x000c8000">03       </item>
            <item value="0x00108000">04       </item>
            <item value="0x00148000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@A116 = 4EB81070        </action>
            <action>maincpu.md@A296 = 4EB81070        </action>
            <action>maincpu.md@A30C = 4EB81070        </action>
            <action>maincpu.mq@1070 = 584B297C00000000</action>
            <action>maincpu.mq@1078 = 00204E7500000000</action>
            <!--
            1070 | 584B                : addq.w  #4, A3
            1072 | 297C xxxx xxxx 0020 : move.l  #$xxxx, ($20,A4)
            107A | 4E75                : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@1074 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@9EAE = 295B0020        </action>
            <action>maincpu.md@A02E = 295B0020        </action>
            <action>maincpu.md@A0A4 = 295B0020        </action>
            <action>maincpu.mq@1070 = 0000000000000000</action>
            <action>maincpu.mq@1078 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="max bullets up (test)">
        <comment>mainshot, weapon 1 and 2 only</comment>
        <script state="on">
            <!-- main shot -->
            <action>maincpu.mb@A06C = 79</action>
            <action>maincpu.mb@A0BD = 18</action>
            <action>maincpu.mb@A148 = 00</action>
            <!-- weapon 1 -->
            <action>maincpu.mb@16201 = 04</action> <!-- level 1 -->
            <action>maincpu.mb@1625D = 04</action> <!-- level 2 -->
            <action>maincpu.mb@162B9 = 04</action> <!-- level 3 -->
            <action>maincpu.mb@1636D = 04</action> <!-- level 4 -->
            <action>maincpu.mb@16421 = 04</action> <!-- level 5 -->
            <action>maincpu.mb@164D5 = 04</action> <!-- level 6 -->
            <action>maincpu.mb@16589 = 04</action> <!-- level 7 -->
            <action>maincpu.mb@1663D = 04</action> <!-- level 8 -->
            <!-- weapon 2 -->
            <action>maincpu.mb@16CA9 = 08</action> <!-- level 1 -->
            <action>maincpu.mb@16CD7 = 0A</action> <!-- level 2 -->
            <action>maincpu.mb@16D05 = 0C</action> <!-- level 3 -->
            <action>maincpu.mb@16D33 = 0E</action> <!-- level 4 -->
            <action>maincpu.mb@16D61 = 10</action> <!-- level 5 -->
            <action>maincpu.mb@16D8F = 12</action> <!-- level 6 -->
            <action>maincpu.mb@16DBD = 14</action> <!-- level 7 -->
            <action>maincpu.mb@16DEB = 16</action> <!-- level 8 -->
        </script>
        <script state="off">
            <action>maincpu.mb@0A06C = 69</action>
            <action>maincpu.mb@0A0BD = 03</action>
            <action>maincpu.mb@0A148 = 10</action>
            <action>maincpu.mb@16201 = 02</action>
            <action>maincpu.mb@1625D = 02</action>
            <action>maincpu.mb@162B9 = 02</action>
            <action>maincpu.mb@1636D = 02</action>
            <action>maincpu.mb@16421 = 02</action>
            <action>maincpu.mb@164D5 = 02</action>
            <action>maincpu.mb@16589 = 02</action>
            <action>maincpu.mb@1663D = 02</action>
            <action>maincpu.mb@16CA9 = 04</action>
            <action>maincpu.mb@16CD7 = 05</action>
            <action>maincpu.mb@16D05 = 06</action>
            <action>maincpu.mb@16D33 = 07</action>
            <action>maincpu.mb@16D61 = 08</action>
            <action>maincpu.mb@16D8F = 09</action>
            <action>maincpu.mb@16DBD = 0A</action>
            <action>maincpu.mb@16DEB =  B</action>
        </script>
    </cheat>

    <cheat desc="short hit mark (test)">
        <comment>mainshot, weapon 1 and 2 only</comment>
        <script state="on">
            <action>maincpu.mb@16C57 = 00</action>
            <action>maincpu.mb@16C83 = 00</action>
            <action>maincpu.mb@16FEB = 00</action>
            <action>maincpu.mb@1700B = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@16C57 = 01</action>
            <action>maincpu.mb@16C83 = 01</action>
            <action>maincpu.mb@16FEB = 01</action>
            <action>maincpu.mb@1700B = 01</action>
        </script>
    </cheat>

    <cheat desc="hidden star item finder">
        <script state="on">
            <action>maincpu.md@B9CE = 4EB81080        </action>
            <action>maincpu.mq@1080 = 0C6E00280004660E</action>
            <action>maincpu.mq@1088 = 0C6E02C000106E06</action>
            <action>maincpu.mq@1090 = 3D7C0010003A302E</action>
            <action>maincpu.mq@1098 = 003A4E7500000000</action>
            <!--
            1080 | 0C6E 0028 0004 : cmpi.w  #$28, ($4,A6)
            1086 | 660E           : bne     $1096
            1088 | 0C6E 02C0 0010 : cmpi.w  #$2c0, ($10,A6)
            108E | 6E06           : bgt     $1096
            1090 | 3D7C 0010 003A : move.w  #$10, ($3a,A6)
            1096 | 302E 003A      : move.w  ($3a,A6), D0
            109A | 4E75           : rts
            -->
        </script>
        <script state="off">
            <action>maincpu.md@B9CE = 302E003A        </action>
            <action>maincpu.mq@1080 = 0000000000000000</action>
            <action>maincpu.mq@1080 = 0000000000000000</action>
            <action>maincpu.mq@1090 = 0000000000000000</action>
            <action>maincpu.mq@1090 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="unlock test mode">
        <comment>reset the game (F3) to enter test mode</comment>
        <script state="on">
            <action>maincpu.mw@053A = 6046</action>
        </script>
        <script state="off">
            <action>maincpu.mw@053A = 6600</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.md@C110 = 4EF81090        </action>
            <action>maincpu.mq@1090 = 41F9000B000043F9</action>
            <action>maincpu.mq@1098 = 000C001E12001029</action>
            <action>maincpu.mq@10A0 = FFE5B20067F60C00</action>
            <action>maincpu.mq@10A8 = 00FD660253100C00</action>
            <action>maincpu.mq@10B0 = 00FE660252100C00</action>
            <action>maincpu.mq@10B8 = 00FB660404100010</action>
            <action>maincpu.mq@10C0 = 0C0000F766040610</action>
            <action>maincpu.mq@10C8 = 00100C0000EF6608</action>
            <action>maincpu.mq@10D0 = 343C800084103282</action>
            <action>maincpu.mq@10D8 = 0C0000DF6606343C</action>
            <action>maincpu.mq@10E0 = 82FF328260B60000</action>
            <!--
            1090 | 41F9 000B 0000 : lea     $b0000.l, A0  // sound code address
            1096 | 43F9 000C 001E : lea     $c001e.l, A1  // sound latch address
            109C | 1200           : move.b  D0, D1
            109E | 1029 FFE5      : move.b  (-$1b,A1), D0 // read input ($c0003)
            10A2 | B200           : cmp.b   D0, D1
            10A4 | 67F6           : beq     $109c
            10A6 | 0C00 00FD      : cmpi.b  #-$3, D0
            10AA | 6602           : bne     $10ae
            10AC | 5310           : subq.b  #1, (A0)      // decrease code -01
            10AE | 0C00 00FE      : cmpi.b  #-$2, D0
            10B2 | 6602           : bne     $10b6
            10B4 | 5210           : addq.b  #1, (A0)      // increase code +01
            10B6 | 0C00 00FB      : cmpi.b  #-$5, D0
            10BA | 6604           : bne     $10c0
            10BC | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            10C0 | 0C00 00F7      : cmpi.b  #-$9, D0
            10C4 | 6604           : bne     $10ca
            10C6 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            10CA | 0C00 00EF      : cmpi.b  #-$11, D0
            10CE | 6608           : bne     $10d8
            10D0 | 343C 8000      : move.w  #$8000, D2    // play sound
            10D4 | 8410           : or.b    (A0), D2
            10D6 | 3282           : move.w  D2, (A1)
            10D8 | 0C00 00DF      : cmpi.b  #-$21, D0
            10DC | 6606           : bne     $10e4
            10DE | 343C 82FF      : move.w  #$82ff, D2    // stop sound
            10E2 | 3282           : move.w  D2, (A1)
            10E4 | 60B6           : bra     $109c
            -->
        </script>
        <script state="run">
            <output format="----- thunder dragon 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@B0000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.md@C110 = 610016C2        </action>
            <action>maincpu.mq@1090 = 0000000000000000</action>
            <action>maincpu.mq@1098 = 0000000000000000</action>
            <action>maincpu.mq@10A0 = 0000000000000000</action>
            <action>maincpu.mq@10A8 = 0000000000000000</action>
            <action>maincpu.mq@10B0 = 0000000000000000</action>
            <action>maincpu.mq@10B8 = 0000000000000000</action>
            <action>maincpu.mq@10C0 = 0000000000000000</action>
            <action>maincpu.mq@10C8 = 0000000000000000</action>
            <action>maincpu.mq@10D0 = 0000000000000000</action>
            <action>maincpu.mq@10D8 = 0000000000000000</action>
            <action>maincpu.mq@10E0 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>

[tdragon]+ Thunder Dragon

Posted: Fri Feb 02, 2024 9:50 am
by jman
tdragonb2.xml

Code: Select all

<!-- Thunder Dragon (bootleg with reduced sound system) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@B0B6 = 60</action> <!-- bullet -->
            <action>maincpu.mb@B70E = 60</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@B0B6 = 66</action>
            <action>maincpu.mb@B70E = 66</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@A093 = 00</action> <!-- main shot -->
            <action>maincpu.mb@A1C9 = 00</action> <!-- weapon 3 -->
            <action>maincpu.mb@A1E5 = 00</action> <!-- weapon 2 -->
            <action>maincpu.mb@A1ED = 00</action> <!-- weapon 1,4 -->
        </script>
        <script state="off">
            <action>maincpu.mb@A093 = 20</action>
            <action>maincpu.mb@A1C9 = 02</action>
            <action>maincpu.mb@A1E5 = 04</action>
            <action>maincpu.mb@A1ED = 20</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x00018000">01 (slow)</item>
            <item value="0x00028000">02       </item>
            <item value="0x00048000">03       </item>
            <item value="0x00068000">04       </item>
            <item value="0x00088000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@9A80 = 4EB81040        </action>
            <action>maincpu.mq@1040 = 203000040C6E00A8</action>
            <action>maincpu.mq@1048 = 002C6420263C0000</action>
            <action>maincpu.mq@1050 = 00004A8167066A02</action>
            <action>maincpu.mq@1058 = 44832203263C0000</action>
            <action>maincpu.mq@1060 = 00004A8067066A02</action>
            <action>maincpu.mq@1068 = 448320034E750000</action>
            <!--
            1040 | 2030 0004      : move.l  ($4,A0,D0.w), D0
            1044 | 0C6E 00A8 002C : cmpi.w  #$a8, ($2c,A6)   // check auto move flag
            104A | 6420           : bcc     $106c
            104C | 263C xxxx xxxx : move.l  #$xxxx, D3       // y position
            1052 | 4A81           : tst.l   D1
            1054 | 6706           : beq     $105c
            1056 | 6A02           : bpl     $105a
            1058 | 4483           : neg.l   D3
            105A | 2203           : move.l  D3, D1
            105C | 263C xxxx xxxx : move.l  #$xxxx, D3       // x position
            1062 | 4A80           : tst.l   D0
            1064 | 6706           : beq     $106c
            1066 | 6A02           : bpl     $106a
            1068 | 4483           : neg.l   D3
            106A | 2003           : move.l  D3, D0
            106C | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@104E = param</action>
            <action>maincpu.md@105E = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@9A80 = 20300004        </action>
            <action>maincpu.mq@1040 = 0000000000000000</action>
            <action>maincpu.mq@1048 = 0000000000000000</action>
            <action>maincpu.mq@1050 = 0000000000000000</action>
            <action>maincpu.mq@1058 = 0000000000000000</action>
            <action>maincpu.mq@1060 = 0000000000000000</action>
            <action>maincpu.mq@1068 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <comment>mainshot, weapon 1 and 2 only</comment>
        <parameter>
            <item value="0x00048000">01 (slow)</item>
            <item value="0x00088000">02       </item>
            <item value="0x000c8000">03       </item>
            <item value="0x00108000">04       </item>
            <item value="0x00148000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@A116 = 4EB81070        </action>
            <action>maincpu.md@A296 = 4EB81070        </action>
            <action>maincpu.md@A30C = 4EB81070        </action>
            <action>maincpu.mq@1070 = 584B297C00000000</action>
            <action>maincpu.mq@1078 = 00204E7500000000</action>
            <!--
            1070 | 584B                : addq.w  #4, A3
            1072 | 297C xxxx xxxx 0020 : move.l  #$xxxx, ($20,A4)
            107A | 4E75                : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@1074 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@9EAE = 295B0020        </action>
            <action>maincpu.md@A02E = 295B0020        </action>
            <action>maincpu.md@A0A4 = 295B0020        </action>
            <action>maincpu.mq@1070 = 0000000000000000</action>
            <action>maincpu.mq@1078 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="max bullets up (test)">
        <comment>mainshot, weapon 1 and 2 only</comment>
        <script state="on">
            <!-- main shot -->
            <action>maincpu.mb@A06C = 79</action>
            <action>maincpu.mb@A0BD = 18</action>
            <action>maincpu.mb@A148 = 00</action>
            <!-- weapon 1 -->
            <action>maincpu.mb@16201 = 04</action> <!-- level 1 -->
            <action>maincpu.mb@1625D = 04</action> <!-- level 2 -->
            <action>maincpu.mb@162B9 = 04</action> <!-- level 3 -->
            <action>maincpu.mb@1636D = 04</action> <!-- level 4 -->
            <action>maincpu.mb@16421 = 04</action> <!-- level 5 -->
            <action>maincpu.mb@164D5 = 04</action> <!-- level 6 -->
            <action>maincpu.mb@16589 = 04</action> <!-- level 7 -->
            <action>maincpu.mb@1663D = 04</action> <!-- level 8 -->
            <!-- weapon 2 -->
            <action>maincpu.mb@16CA9 = 08</action> <!-- level 1 -->
            <action>maincpu.mb@16CD7 = 0A</action> <!-- level 2 -->
            <action>maincpu.mb@16D05 = 0C</action> <!-- level 3 -->
            <action>maincpu.mb@16D33 = 0E</action> <!-- level 4 -->
            <action>maincpu.mb@16D61 = 10</action> <!-- level 5 -->
            <action>maincpu.mb@16D8F = 12</action> <!-- level 6 -->
            <action>maincpu.mb@16DBD = 14</action> <!-- level 7 -->
            <action>maincpu.mb@16DEB = 16</action> <!-- level 8 -->
        </script>
        <script state="off">
            <action>maincpu.mb@0A06C = 69</action>
            <action>maincpu.mb@0A0BD = 03</action>
            <action>maincpu.mb@0A148 = 10</action>
            <action>maincpu.mb@16201 = 02</action>
            <action>maincpu.mb@1625D = 02</action>
            <action>maincpu.mb@162B9 = 02</action>
            <action>maincpu.mb@1636D = 02</action>
            <action>maincpu.mb@16421 = 02</action>
            <action>maincpu.mb@164D5 = 02</action>
            <action>maincpu.mb@16589 = 02</action>
            <action>maincpu.mb@1663D = 02</action>
            <action>maincpu.mb@16CA9 = 04</action>
            <action>maincpu.mb@16CD7 = 05</action>
            <action>maincpu.mb@16D05 = 06</action>
            <action>maincpu.mb@16D33 = 07</action>
            <action>maincpu.mb@16D61 = 08</action>
            <action>maincpu.mb@16D8F = 09</action>
            <action>maincpu.mb@16DBD = 0A</action>
            <action>maincpu.mb@16DEB =  B</action>
        </script>
    </cheat>

    <cheat desc="short hit mark (test)">
        <comment>mainshot, weapon 1 and 2 only</comment>
        <script state="on">
            <action>maincpu.mb@16C57 = 00</action>
            <action>maincpu.mb@16C83 = 00</action>
            <action>maincpu.mb@16FEB = 00</action>
            <action>maincpu.mb@1700B = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@16C57 = 01</action>
            <action>maincpu.mb@16C83 = 01</action>
            <action>maincpu.mb@16FEB = 01</action>
            <action>maincpu.mb@1700B = 01</action>
        </script>
    </cheat>

    <cheat desc="hidden star item finder">
        <script state="on">
            <action>maincpu.md@B9CE = 4EB81080        </action>
            <action>maincpu.mq@1080 = 0C6E00280004660E</action>
            <action>maincpu.mq@1088 = 0C6E02C000106E06</action>
            <action>maincpu.mq@1090 = 3D7C0010003A302E</action>
            <action>maincpu.mq@1098 = 003A4E7500000000</action>
            <!--
            1080 | 0C6E 0028 0004 : cmpi.w  #$28, ($4,A6)
            1086 | 660E           : bne     $1096
            1088 | 0C6E 02C0 0010 : cmpi.w  #$2c0, ($10,A6)
            108E | 6E06           : bgt     $1096
            1090 | 3D7C 0010 003A : move.w  #$10, ($3a,A6)
            1096 | 302E 003A      : move.w  ($3a,A6), D0
            109A | 4E75           : rts
            -->
        </script>
        <script state="off">
            <action>maincpu.md@B9CE = 302E003A        </action>
            <action>maincpu.mq@1080 = 0000000000000000</action>
            <action>maincpu.mq@1080 = 0000000000000000</action>
            <action>maincpu.mq@1090 = 0000000000000000</action>
            <action>maincpu.mq@1090 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="unlock test mode">
        <comment>reset the game (F3) to enter test mode</comment>
        <script state="on">
            <action>maincpu.mw@053A = 6046</action>
        </script>
        <script state="off">
            <action>maincpu.mw@053A = 6600</action>
        </script>
    </cheat>

    <cheat desc="sound test mode (test)">
        <!-- no sound response when you try to play or stop -->
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.md@C110 = 4EF81090        </action>
            <action>maincpu.mq@1090 = 41F9000B000043F9</action>
            <action>maincpu.mq@1098 = 000C001F12001029</action>
            <action>maincpu.mq@10A0 = FFE4B20067F60C00</action>
            <action>maincpu.mq@10A8 = 00FD660253100C00</action>
            <action>maincpu.mq@10B0 = 00FE660252100C00</action>
            <action>maincpu.mq@10B8 = 00FB660404100010</action>
            <action>maincpu.mq@10C0 = 0C0000F766040610</action>
            <action>maincpu.mq@10C8 = 00100C0000EF6602</action>
            <action>maincpu.mq@10D0 = 12900C0000DF6606</action>
            <action>maincpu.mq@10D8 = 143C0000128260BC</action>
            <!--
            1090 | 41F9 000B 0000 : lea     $b0000.l, A0  // sound code address
            1096 | 43F9 000C 001F : lea     $c001f.l, A1  // sound latch address
            109C | 1200           : move.b  D0, D1
            109E | 1029 FFE4      : move.b  (-$1c,A1), D0 // read input ($c0003)
            10A2 | B200           : cmp.b   D0, D1
            10A4 | 67F6           : beq     $109c
            10A6 | 0C00 00FD      : cmpi.b  #-$3, D0
            10AA | 6602           : bne     $10ae
            10AC | 5310           : subq.b  #1, (A0)      // decrease code -01
            10AE | 0C00 00FE      : cmpi.b  #-$2, D0
            10B2 | 6602           : bne     $10b6
            10B4 | 5210           : addq.b  #1, (A0)      // increase code +01
            10B6 | 0C00 00FB      : cmpi.b  #-$5, D0
            10BA | 6604           : bne     $10c0
            10BC | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            10C0 | 0C00 00F7      : cmpi.b  #-$9, D0
            10C4 | 6604           : bne     $10ca
            10C6 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            10CA | 0C00 00EF      : cmpi.b  #-$11, D0
            10CE | 6602           : bne     $10d2
            10D0 | 1290           : move.b  (A0), (A1)    // play sound
            10D2 | 0C00 00DF      : cmpi.b  #-$21, D0
            10D6 | 6606           : bne     $10de
            10D8 | 143C 0000      : move.b  #$0, D2       // stop sound
            10DC | 1282           : move.b  D2, (A1)
            10DE | 60BC           : bra     $109c
            -->
        </script>
        <script state="run">
            <output format="----- thunder dragon 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@B0000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.md@C110 = 610016C2        </action>
            <action>maincpu.mq@1090 = 0000000000000000</action>
            <action>maincpu.mq@1098 = 0000000000000000</action>
            <action>maincpu.mq@10A0 = 0000000000000000</action>
            <action>maincpu.mq@10A8 = 0000000000000000</action>
            <action>maincpu.mq@10B0 = 0000000000000000</action>
            <action>maincpu.mq@10B8 = 0000000000000000</action>
            <action>maincpu.mq@10C0 = 0000000000000000</action>
            <action>maincpu.mq@10C8 = 0000000000000000</action>
            <action>maincpu.mq@10D0 = 0000000000000000</action>
            <action>maincpu.mq@10D8 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>
tdragonb2 doesn't work in 0.262. You can't control player character after the game start so that I can't verify the codes.
Also you can enter "sound test mode" after set this code then reset the game and choose sound code but sound is no response.