[tdragon] Thunder Dragon

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

[tdragon] Thunder Dragon

Post 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.
jman
Posts: 843
Joined: Tue Dec 01, 2020 1:24 pm

[tdragon] Thunder Dragon (update)

Post 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.
jman
Posts: 843
Joined: Tue Dec 01, 2020 1:24 pm

[tdragon]+ Thunder Dragon

Post 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>
Last edited by jman on Fri Feb 02, 2024 9:51 am, edited 1 time in total.
jman
Posts: 843
Joined: Tue Dec 01, 2020 1:24 pm

[tdragon]+ Thunder Dragon

Post 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.
Post Reply