[stdragon] Saint 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: 842
Joined: Tue Dec 01, 2020 1:24 pm

[stdragon] Saint Dragon

Post by jman »

Code: Select all

<cheat desc="no hit">
    <script state="on">
        <action>maincpu.mb@2fc6 =   60</action> <!-- bullet -->
        <action>maincpu.mb@4b26 =   60</action> <!-- enemy -->
        <action>maincpu.mw@4cb0 = 4e75</action> <!-- background -->
    </script>
    <script state="off">
        <action>maincpu.mb@2fc6 =   66</action>
        <action>maincpu.mb@4b26 =   66</action>
        <action>maincpu.mw@4cb0 = 204e</action>
    </script>
</cheat>

<cheat desc="auto fire">
    <script state="on">
        <action>maincpu.mb@1891 = 01</action> <!-- normal shot -->
        <action>maincpu.mb@1947 = 01</action> <!-- fire -->
        <action>maincpu.mb@1a27 = 01</action> <!-- laser -->
        <action>maincpu.mb@1b11 = 01</action> <!-- turret -->
        <action>maincpu.mb@1c11 = 01</action> <!-- bound -->
    </script>
    <script state="off">
        <action>maincpu.mb@1891 = 28</action>
        <action>maincpu.mb@1947 = 32</action>
        <action>maincpu.mb@1a27 = 32</action>
        <action>maincpu.mb@1b11 = 14</action>
        <action>maincpu.mb@1c11 = 14</action>
    </script>
</cheat>

<cheat desc="player speed">
    <parameter>
        <item value="0x00008000">01 (slow)</item>
        <item value="0x00020000">02       </item>
        <item value="0x00038000">03       </item>
        <item value="0x00040000">04       </item>
        <item value="0x00058000">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.mq@0fd8 = 4eb90000cb704e71</action> <!-- x position -->
        <action>maincpu.mq@1004 = 4eb90000cb7c4e71</action> <!-- y position -->
        <action>maincpu.mq@cb70 = 6116dfa800103e28</action>
        <action>maincpu.mq@cb78 = 00104e75610adfa8</action>
        <action>maincpu.mq@cb80 = 00143e2800144e75</action>
        <action>maincpu.mq@cb88 = 4a39000f1a026710</action>
        <action>maincpu.mq@cb90 = 203c000000004a87</action>
        <action>maincpu.mq@cb98 = 67066a0244802e00</action>
        <action>maincpu.mq@cba0 = 4e75000000000000</action>
        <!--
        cb70 | 6116           : bsr    $cb88       // x position
        cb72 | dfa8 0010      : add.l  D7,($10,A0)
        cb76 | 3e28 0010      : move.w ($10,A0),D7
        cb7a | 4e75           : rts
        cb7c | 610a           : bsr    $cb88       // y position
        cb7e | dfa8 0014      : add.l  D7,($14,A0)
        cb82 | 3e28 0014      : move.w ($14,A0),D7
        cb86 | 4e75           : rts
        cb88 | 4a39 000f 1a02 : tst.b  $f1a02.l    // is auto-moving?
        cb8e | 6710           : beq    $cba0
        cb90 | 203c xxxx xxxx : move.l #$xxxx,D0
        cb96 | 4a87           : tst.l  D7
        cb98 | 6706           : beq    $cba0
        cb9a | 6a02           : bpl    $cb9e
        cb9c | 4480           : neg.l  D0
        cb9e | 2e00           : move.l D0,D7
        cba0 | 4e75           : rts
        -->
    </script>
    <script state="change">
        <action>maincpu.md@cb92 = param</action>
    </script>
    <script state="off">
        <action>maincpu.mq@0fd8 = 4eb90000cb704e71</action>
        <action>maincpu.mq@1004 = 4eb90000cb7c4e71</action>
        <action>maincpu.mq@cb70 = 0000000000000000</action>
        <action>maincpu.mq@cb78 = 0000000000000000</action>
        <action>maincpu.mq@cb80 = 0000000000000000</action>
        <action>maincpu.mq@cb88 = 0000000000000000</action>
        <action>maincpu.mq@cb90 = 0000000000000000</action>
        <action>maincpu.mq@cb98 = 0000000000000000</action>
        <action>maincpu.mq@cba0 = 0000000000000000</action>
    </script>
</cheat>

<cheat desc="bullet speed - main shot">
    <parameter>
        <item value="0x00040000">01 (slow)</item>
        <item value="0x00080000">02       </item>
        <item value="0x000c0000">03       </item>
        <item value="0x00100000">04       </item>
        <item value="0x00140000">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.mq@18f6 = 4eb90000cbb04e71</action>
        <action>maincpu.mq@cbb0 = 584b297c00000000</action>
        <action>maincpu.mq@cbb8 = 0020295b00244e75</action>
        <!--
        cbb0 | 584b                : addq.w #4,A3
        cbb2 | 297c xxxx xxxx 0020 : move.l #$xxxx,($20,A4)
        cbba | 295b 0024           : move.l (A3)+,($24,A4)
        cbbe | 4e75                : rts
        -->
    </script>
    <script state="change">
        <action>maincpu.md@cbb4 = param</action>
    </script>
    <script state="off">
        <action>maincpu.mq@18f6 = 295b0020295b0024</action>
        <action>maincpu.mq@cbb0 = 0000000000000000</action>
        <action>maincpu.mq@cbb8 = 0000000000000000</action>
    </script>
</cheat>

<cheat desc="penetration bullet - main shot">
    <script state="on">
        <action>maincpu.mw@4aec = 6004</action>
    </script>
    <script state="off">
        <action>maincpu.mw@4aec = 4255</action>
    </script>
</cheat>

<cheat desc="skip rom check">
    <script state="on">
        <action>maincpu.mw@043a = 6024</action>
    </script>
    <script state="off">
        <action>maincpu.mw@043a = 7004</action>
    </script>
</cheat>
BTW, "select starting round" in officail package based on 0.221 doesn't work.

Code: Select all

  <cheat desc="Select starting round"> <comment>You should enable this cheat on the 'Push Start' screen, ie. after credits have been inserted! The Round display wont be correct</comment>
    <parameter min="1" max="6" step="1"/>
    <script state="on">
      <action>maincpu.pb@F1AED=FF</action>
    </script>
    <script state="change">
      <action>maincpu.pb@F1AED=(param-1)</action>
    </script>
  </cheat>
I try fixing this code but...

Code: Select all

    <cheat desc="select start round">
        <parameter min="0x01" max="0x06" step="0x01" />
        <script state="run">
            <action condition="maincpu.pb@f1aed == 00">maincpu.pb@f1aed = param - 1</action>
        </script>
    </cheat>
Background is not changed (always round 1 with different color) until you die or clear this round.
jman
Posts: 842
Joined: Tue Dec 01, 2020 1:24 pm

[stdragon]+ Saint Dragon

Post by jman »

stdragon.xml

Code: Select all

<!-- Saint Dragon (set 1) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mw@2FC6 = 6004</action> <!-- bullet -->
            <action>maincpu.mw@4B26 = 6008</action> <!-- enemy -->
            <action>maincpu.mw@4CB0 = 4E75</action> <!-- background -->
        </script>
        <script state="off">
            <action>maincpu.mw@2FC6 = 6604</action>
            <action>maincpu.mw@4B26 = 6608</action>
            <action>maincpu.mw@4CB0 = 204E</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@1891 = 01</action> <!-- normal shot -->
            <action>maincpu.mb@1947 = 01</action> <!-- fire -->
            <action>maincpu.mb@1A27 = 01</action> <!-- laser -->
            <action>maincpu.mb@1B11 = 01</action> <!-- turret -->
            <action>maincpu.mb@1C11 = 01</action> <!-- bound -->
        </script>
        <script state="off">
            <action>maincpu.mb@1891 = 28</action>
            <action>maincpu.mb@1947 = 32</action>
            <action>maincpu.mb@1A27 = 32</action>
            <action>maincpu.mb@1B11 = 14</action>
            <action>maincpu.mb@1C11 = 14</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x00008000">01 (slow)</item>
            <item value="0x00020000">02       </item>
            <item value="0x00038000">03       </item>
            <item value="0x00040000">04       </item>
            <item value="0x00058000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@0FD8 = 4EB90000CB704E71</action> <!-- x position -->
            <action>maincpu.mq@1004 = 4EB90000CB7C4E71</action> <!-- y position -->
            <action>maincpu.mq@CB70 = 6116DFA800103E28</action>
            <action>maincpu.mq@CB78 = 00104E75610ADFA8</action>
            <action>maincpu.mq@CB80 = 00143E2800144E75</action>
            <action>maincpu.mq@CB88 = 4A39000F1A026710</action>
            <action>maincpu.mq@CB90 = 203C000000004A87</action>
            <action>maincpu.mq@CB98 = 67066A0244802E00</action>
            <action>maincpu.mq@CBA0 = 4E75000000000000</action>
            <!--
            CB70 | 6116           : bsr     $cb88        // x position
            CB72 | DFA8 0010      : add.l   D7, ($10,A0)
            CB76 | 3E28 0010      : move.w  ($10,A0), D7
            CB7A | 4E75           : rts
            CB7C | 610A           : bsr     $cb88        // y position
            CB7E | DFA8 0014      : add.l   D7, ($14,A0)
            CB82 | 3E28 0014      : move.w  ($14,A0), D7
            CB86 | 4E75           : rts
            CB88 | 4A39 000F 1A02 : tst.b   $f1a02.l     // check auto moving flag
            CB8E | 6710           : beq     $cba0
            CB90 | 203C xxxx xxxx : move.l  #$xxxx, D0
            CB96 | 4A87           : tst.l   D7
            CB98 | 6706           : beq     $cba0
            CB9A | 6A02           : bpl     $cb9e
            CB9C | 4480           : neg.l   D0
            CB9E | 2E00           : move.l  D0, D7
            CBA0 | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@CB92 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@0FD8 = DFA800103E280010</action>
            <action>maincpu.mq@1004 = DFA800143E280014</action>
            <action>maincpu.mq@CB70 = 0000000000000000</action>
            <action>maincpu.mq@CB78 = 0000000000000000</action>
            <action>maincpu.mq@CB80 = 0000000000000000</action>
            <action>maincpu.mq@CB88 = 0000000000000000</action>
            <action>maincpu.mq@CB90 = 0000000000000000</action>
            <action>maincpu.mq@CB98 = 0000000000000000</action>
            <action>maincpu.mq@CBA0 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="bullet speed - main shot">
        <parameter>
            <item value="0x00040000">01 (slow)</item>
            <item value="0x00080000">02       </item>
            <item value="0x000c0000">03       </item>
            <item value="0x00100000">04       </item>
            <item value="0x00140000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@18F6 = 4EB90000CBB04E71</action>
            <action>maincpu.mq@CBB0 = 584B297C00000000</action>
            <action>maincpu.mq@CBB8 = 0020295B00244E75</action>
            <!--
            CBB0 | 584B                : addq.w  #4, A3
            CBB2 | 297C xxxx xxxx 0020 : move.l  #$xxxx, ($20,A4)
            CBBA | 295B 0024           : move.l  (A3)+, ($24,A4)
            CBBE | 4E75                : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@CBB4 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@18F6 = 295B0020295B0024</action>
            <action>maincpu.mq@CBB0 = 0000000000000000</action>
            <action>maincpu.mq@CBB8 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="penetration bullet - main shot">
        <script state="on">
            <action>maincpu.mw@4AEC = 6004</action>
        </script>
        <script state="off">
            <action>maincpu.mw@4AEC = 4255</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- you can't stop some sfxs (code 0x10 or later) by sound stop button -->
        <comment>set &quot;skip rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@6976 = 4EF90000CBC07E01</action>
            <action>maincpu.mq@CBC0 = 41F9000F00004EB8</action>
            <action>maincpu.mq@CBC8 = 23CC140112390008</action>
            <action>maincpu.mq@CBD0 = 0003B40167F00C01</action>
            <action>maincpu.mq@CBD8 = 00FD660253100C01</action>
            <action>maincpu.mq@CBE0 = 00FE660252100C01</action>
            <action>maincpu.mq@CBE8 = 00FB660404100010</action>
            <action>maincpu.mq@CBF0 = 0C0100F766040610</action>
            <action>maincpu.mq@CBF8 = 00100C0100EF660A</action>
            <action>maincpu.mq@CC00 = 203C00FF00008010</action>
            <action>maincpu.mq@CC08 = 60080C0100DF6606</action>
            <action>maincpu.mq@CC10 = 42804EB8237860AE</action>
            <!--
            CBC0 | 41F9 000F 0000 : lea     $f0000.l, A0 // sound code address
            CBC6 | 4EB8 23CC      : jsr     $23cc.w      // check sound code
            CBCA | 1401           : move.b  D1, D2
            CBCC | 1239 0008 0003 : move.b  $80003.l, D1 // read input
            CBD2 | B401           : cmp.b   D1, D2
            CBD4 | 67F0           : beq     $cbc6
            CBD6 | 0C01 00FD      : cmpi.b  #-$3, D1
            CBDA | 6602           : bne     $cbde
            CBDC | 5310           : subq.b  #1, (A0)     // decrease code -01
            CBDE | 0C01 00FE      : cmpi.b  #-$2, D1
            CBE2 | 6602           : bne     $cbe6
            CBE4 | 5210           : addq.b  #1, (A0)     // increase code +01
            CBE6 | 0C01 00FB      : cmpi.b  #-$5, D1
            CBEA | 6604           : bne     $cbf0
            CBEC | 0410 0010      : subi.b  #$10, (A0)   // decrease code -10
            CBF0 | 0C01 00F7      : cmpi.b  #-$9, D1
            CBF4 | 6604           : bne     $cbfa
            CBF6 | 0610 0010      : addi.b  #$10, (A0)   // increase code +10
            CBFA | 0C01 00EF      : cmpi.b  #-$11, D1
            CBFE | 660A           : bne     $cc0a
            CC00 | 203C 00FF 0000 : move.l  #$ff0000, D0 // play sound
            CC06 | 8010           : or.b    (A0), D0
            CC08 | 6008           : bra     $cc12
            CC0A | 0C01 00DF      : cmpi.b  #-$21, D1
            CC0E | 6606           : bne     $cc16
            CC10 | 4280           : clr.l   D0           // stop sound
            CC12 | 4EB8 2378      : jsr     $2378.w
            CC16 | 60AE           : bra     $cbc6
            -->
        </script>
        <script state="run">
            <output format="----- saint 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@F0000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@6976 = 2C3C0000505E7E01</action>
            <action>maincpu.mq@CBC0 = 0000000000000000</action>
            <action>maincpu.mq@CBC8 = 0000000000000000</action>
            <action>maincpu.mq@CBD0 = 0000000000000000</action>
            <action>maincpu.mq@CBD8 = 0000000000000000</action>
            <action>maincpu.mq@CBE0 = 0000000000000000</action>
            <action>maincpu.mq@CBE8 = 0000000000000000</action>
            <action>maincpu.mq@CBF0 = 0000000000000000</action>
            <action>maincpu.mq@CBF8 = 0000000000000000</action>
            <action>maincpu.mq@CC00 = 0000000000000000</action>
            <action>maincpu.mq@CC08 = 0000000000000000</action>
            <action>maincpu.mq@CC10 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mw@043A = 6024</action> <!-- skip rom check -->
            <action>maincpu.mw@6892 = 0001</action> <!-- skip dip switch display -->
        </script>
        <script state="off">
            <action>maincpu.mw@043A = 7004</action>
            <action>maincpu.mw@6892 = 0230</action>
        </script>
    </cheat>

</mamecheat>
stdragona.xml

Code: Select all

<!-- Saint Dragon (set 2) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mw@2FC0 = 6004</action> <!-- bullet -->
            <action>maincpu.mw@4B20 = 6008</action> <!-- enemy -->
            <action>maincpu.mw@4CAA = 4E75</action> <!-- background -->
        </script>
        <script state="off">
            <action>maincpu.mw@2FC0 = 6604</action>
            <action>maincpu.mw@4B20 = 6608</action>
            <action>maincpu.mw@4CAA = 204E</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@188B = 01</action> <!-- normal shot -->
            <action>maincpu.mb@1941 = 01</action> <!-- fire -->
            <action>maincpu.mb@1A21 = 01</action> <!-- laser -->
            <action>maincpu.mb@1B0B = 01</action> <!-- turret -->
            <action>maincpu.mb@1C0B = 01</action> <!-- bound -->
        </script>
        <script state="off">
            <action>maincpu.mb@188B = 28</action>
            <action>maincpu.mb@1941 = 32</action>
            <action>maincpu.mb@1A21 = 32</action>
            <action>maincpu.mb@1B0B = 14</action>
            <action>maincpu.mb@1C0B = 14</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x00008000">01 (slow)</item>
            <item value="0x00020000">02       </item>
            <item value="0x00038000">03       </item>
            <item value="0x00040000">04       </item>
            <item value="0x00058000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@0FD2 = 4EB90000CB704E71</action> <!-- x position -->
            <action>maincpu.mq@0FFE = 4EB90000CB7C4E71</action> <!-- y position -->
            <action>maincpu.mq@CB70 = 6116DFA800103E28</action>
            <action>maincpu.mq@CB78 = 00104E75610ADFA8</action>
            <action>maincpu.mq@CB80 = 00143E2800144E75</action>
            <action>maincpu.mq@CB88 = 4A39000F1A026710</action>
            <action>maincpu.mq@CB90 = 203C000000004A87</action>
            <action>maincpu.mq@CB98 = 67066A0244802E00</action>
            <action>maincpu.mq@CBA0 = 4E75000000000000</action>
            <!--
            CB70 | 6116           : bsr     $cb88        // x position
            CB72 | DFA8 0010      : add.l   D7, ($10,A0)
            CB76 | 3E28 0010      : move.w  ($10,A0), D7
            CB7A | 4E75           : rts
            CB7C | 610A           : bsr     $cb88        // y position
            CB7E | DFA8 0014      : add.l   D7, ($14,A0)
            CB82 | 3E28 0014      : move.w  ($14,A0), D7
            CB86 | 4E75           : rts
            CB88 | 4A39 000F 1A02 : tst.b   $f1a02.l     // check auto moving flag
            CB8E | 6710           : beq     $cba0
            CB90 | 203C xxxx xxxx : move.l  #$xxxx, D0
            CB96 | 4A87           : tst.l   D7
            CB98 | 6706           : beq     $cba0
            CB9A | 6A02           : bpl     $cb9e
            CB9C | 4480           : neg.l   D0
            CB9E | 2E00           : move.l  D0, D7
            CBA0 | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@CB92 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@0FD2 = DFA800103E280010</action>
            <action>maincpu.mq@0FFE = DFA800143E280014</action>
            <action>maincpu.mq@CB70 = 0000000000000000</action>
            <action>maincpu.mq@CB78 = 0000000000000000</action>
            <action>maincpu.mq@CB80 = 0000000000000000</action>
            <action>maincpu.mq@CB88 = 0000000000000000</action>
            <action>maincpu.mq@CB90 = 0000000000000000</action>
            <action>maincpu.mq@CB98 = 0000000000000000</action>
            <action>maincpu.mq@CBA0 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="bullet speed - main shot">
        <parameter>
            <item value="0x00040000">01 (slow)</item>
            <item value="0x00080000">02       </item>
            <item value="0x000c0000">03       </item>
            <item value="0x00100000">04       </item>
            <item value="0x00140000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@18F0 = 4EB90000CBB04E71</action>
            <action>maincpu.mq@CBB0 = 584B297C00000000</action>
            <action>maincpu.mq@CBB8 = 0020295B00244E75</action>
            <!--
            CBB0 | 584B                : addq.w  #4, A3
            CBB2 | 297C xxxx xxxx 0020 : move.l  #$xxxx, ($20,A4)
            CBBA | 295B 0024           : move.l  (A3)+, ($24,A4)
            CBBE | 4E75                : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@CBB4 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@18F0 = 295B0020295B0024</action>
            <action>maincpu.mq@CBB0 = 0000000000000000</action>
            <action>maincpu.mq@CBB8 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="penetration bullet - main shot">
        <script state="on">
            <action>maincpu.mw@4AE6 = 6004</action>
        </script>
        <script state="off">
            <action>maincpu.mw@4AE6 = 4255</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- you can't stop some sfxs (code 0x10 or later) by sound stop button -->
        <comment>set &quot;skip rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@6970 = 4EF90000CBC07E01</action>
            <action>maincpu.mq@CBC0 = 41F9000F00004EB8</action>
            <action>maincpu.mq@CBC8 = 23C6140112390008</action>
            <action>maincpu.mq@CBD0 = 0003B40167F00C01</action>
            <action>maincpu.mq@CBD8 = 00FD660253100C01</action>
            <action>maincpu.mq@CBE0 = 00FE660252100C01</action>
            <action>maincpu.mq@CBE8 = 00FB660404100010</action>
            <action>maincpu.mq@CBF0 = 0C0100F766040610</action>
            <action>maincpu.mq@CBF8 = 00100C0100EF660A</action>
            <action>maincpu.mq@CC00 = 203C00FF00008010</action>
            <action>maincpu.mq@CC08 = 60080C0100DF6606</action>
            <action>maincpu.mq@CC10 = 42804EB8237260AE</action>
            <!--
            CBC0 | 41F9 000F 0000 : lea     $f0000.l, A0 // sound code address
            CBC6 | 4EB8 23C6      : jsr     $23c6.w      // check sound code
            CBCA | 1401           : move.b  D1, D2
            CBCC | 1239 0008 0003 : move.b  $80003.l, D1 // read input
            CBD2 | B401           : cmp.b   D1, D2
            CBD4 | 67F0           : beq     $cbc6
            CBD6 | 0C01 00FD      : cmpi.b  #-$3, D1
            CBDA | 6602           : bne     $cbde
            CBDC | 5310           : subq.b  #1, (A0)     // decrease code -01
            CBDE | 0C01 00FE      : cmpi.b  #-$2, D1
            CBE2 | 6602           : bne     $cbe6
            CBE4 | 5210           : addq.b  #1, (A0)     // increase code +01
            CBE6 | 0C01 00FB      : cmpi.b  #-$5, D1
            CBEA | 6604           : bne     $cbf0
            CBEC | 0410 0010      : subi.b  #$10, (A0)   // decrease code -10
            CBF0 | 0C01 00F7      : cmpi.b  #-$9, D1
            CBF4 | 6604           : bne     $cbfa
            CBF6 | 0610 0010      : addi.b  #$10, (A0)   // increase code +10
            CBFA | 0C01 00EF      : cmpi.b  #-$11, D1
            CBFE | 660A           : bne     $cc0a
            CC00 | 203C 00FF 0000 : move.l  #$ff0000, D0 // play sound
            CC06 | 8010           : or.b    (A0), D0
            CC08 | 6008           : bra     $cc12
            CC0A | 0C01 00DF      : cmpi.b  #-$21, D1
            CC0E | 6606           : bne     $cc16
            CC10 | 4280           : clr.l   D0           // stop sound
            CC12 | 4EB8 2372      : jsr     $2372.w
            CC16 | 60AE           : bra     $cbc6
            -->
        </script>
        <script state="run">
            <output format="----- saint 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@F0000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@6970 = 2C3C000050587E01</action>
            <action>maincpu.mq@CBC0 = 0000000000000000</action>
            <action>maincpu.mq@CBC8 = 0000000000000000</action>
            <action>maincpu.mq@CBD0 = 0000000000000000</action>
            <action>maincpu.mq@CBD8 = 0000000000000000</action>
            <action>maincpu.mq@CBE0 = 0000000000000000</action>
            <action>maincpu.mq@CBE8 = 0000000000000000</action>
            <action>maincpu.mq@CBF0 = 0000000000000000</action>
            <action>maincpu.mq@CBF8 = 0000000000000000</action>
            <action>maincpu.mq@CC00 = 0000000000000000</action>
            <action>maincpu.mq@CC08 = 0000000000000000</action>
            <action>maincpu.mq@CC10 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mw@043A = 601E</action> <!-- skip rom check -->
            <action>maincpu.mw@688C = 0001</action> <!-- skip dip switch display -->
        </script>
        <script state="off">
            <action>maincpu.mw@043A = 7004</action>
            <action>maincpu.mw@688C = 0230</action>
        </script>
    </cheat>

</mamecheat>
stdragonb.xml

Code: Select all

<!-- Saint Dragon (bootleg) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mw@2FC0 = 6004</action> <!-- bullet -->
            <action>maincpu.mw@4B20 = 6008</action> <!-- enemy -->
            <action>maincpu.mw@4CAA = 4E75</action> <!-- background -->
        </script>
        <script state="off">
            <action>maincpu.mw@2FC0 = 6604</action>
            <action>maincpu.mw@4B20 = 6608</action>
            <action>maincpu.mw@4CAA = 204E</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@188B = 01</action> <!-- normal shot -->
            <action>maincpu.mb@1941 = 01</action> <!-- fire -->
            <action>maincpu.mb@1A21 = 01</action> <!-- laser -->
            <action>maincpu.mb@1B0B = 01</action> <!-- turret -->
            <action>maincpu.mb@1C0B = 01</action> <!-- bound -->
        </script>
        <script state="off">
            <action>maincpu.mb@188B = 28</action>
            <action>maincpu.mb@1941 = 32</action>
            <action>maincpu.mb@1A21 = 32</action>
            <action>maincpu.mb@1B0B = 14</action>
            <action>maincpu.mb@1C0B = 14</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x00008000">01 (slow)</item>
            <item value="0x00020000">02       </item>
            <item value="0x00038000">03       </item>
            <item value="0x00040000">04       </item>
            <item value="0x00058000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@0FD2 = 4EB90000CB704E71</action> <!-- x position -->
            <action>maincpu.mq@0FFE = 4EB90000CB7C4E71</action> <!-- y position -->
            <action>maincpu.mq@CB70 = 6116DFA800103E28</action>
            <action>maincpu.mq@CB78 = 00104E75610ADFA8</action>
            <action>maincpu.mq@CB80 = 00143E2800144E75</action>
            <action>maincpu.mq@CB88 = 4A39000F1A026710</action>
            <action>maincpu.mq@CB90 = 203C000000004A87</action>
            <action>maincpu.mq@CB98 = 67066A0244802E00</action>
            <action>maincpu.mq@CBA0 = 4E75000000000000</action>
            <!--
            CB70 | 6116           : bsr     $cb88        // x position
            CB72 | DFA8 0010      : add.l   D7, ($10,A0)
            CB76 | 3E28 0010      : move.w  ($10,A0), D7
            CB7A | 4E75           : rts
            CB7C | 610A           : bsr     $cb88        // y position
            CB7E | DFA8 0014      : add.l   D7, ($14,A0)
            CB82 | 3E28 0014      : move.w  ($14,A0), D7
            CB86 | 4E75           : rts
            CB88 | 4A39 000F 1A02 : tst.b   $f1a02.l     // check auto moving flag
            CB8E | 6710           : beq     $cba0
            CB90 | 203C xxxx xxxx : move.l  #$xxxx, D0
            CB96 | 4A87           : tst.l   D7
            CB98 | 6706           : beq     $cba0
            CB9A | 6A02           : bpl     $cb9e
            CB9C | 4480           : neg.l   D0
            CB9E | 2E00           : move.l  D0, D7
            CBA0 | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@CB92 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@0FD2 = DFA800103E280010</action>
            <action>maincpu.mq@0FFE = DFA800143E280014</action>
            <action>maincpu.mq@CB70 = 0000000000000000</action>
            <action>maincpu.mq@CB78 = 0000000000000000</action>
            <action>maincpu.mq@CB80 = 0000000000000000</action>
            <action>maincpu.mq@CB88 = 0000000000000000</action>
            <action>maincpu.mq@CB90 = 0000000000000000</action>
            <action>maincpu.mq@CB98 = 0000000000000000</action>
            <action>maincpu.mq@CBA0 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="bullet speed - main shot">
        <parameter>
            <item value="0x00040000">01 (slow)</item>
            <item value="0x00080000">02       </item>
            <item value="0x000c0000">03       </item>
            <item value="0x00100000">04       </item>
            <item value="0x00140000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@18F0 = 4EB90000CBB04E71</action>
            <action>maincpu.mq@CBB0 = 584B297C00000000</action>
            <action>maincpu.mq@CBB8 = 0020295B00244E75</action>
            <!--
            CBB0 | 584B                : addq.w  #4, A3
            CBB2 | 297C xxxx xxxx 0020 : move.l  #$xxxx, ($20,A4)
            CBBA | 295B 0024           : move.l  (A3)+, ($24,A4)
            CBBE | 4E75                : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@CBB4 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@18F0 = 295B0020295B0024</action>
            <action>maincpu.mq@CBB0 = 0000000000000000</action>
            <action>maincpu.mq@CBB8 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="penetration bullet - main shot">
        <script state="on">
            <action>maincpu.mw@4AE6 = 6004</action>
        </script>
        <script state="off">
            <action>maincpu.mw@4AE6 = 4255</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- you can't stop some sfxs (code 0x10 or later) by sound stop button -->
        <comment>set &quot;skip rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@6970 = 4EF90000CBC07E01</action>
            <action>maincpu.mq@CBC0 = 41F9000F00004EB8</action>
            <action>maincpu.mq@CBC8 = 23C6140112390008</action>
            <action>maincpu.mq@CBD0 = 0003B40167F00C01</action>
            <action>maincpu.mq@CBD8 = 00FD660253100C01</action>
            <action>maincpu.mq@CBE0 = 00FE660252100C01</action>
            <action>maincpu.mq@CBE8 = 00FB660404100010</action>
            <action>maincpu.mq@CBF0 = 0C0100F766040610</action>
            <action>maincpu.mq@CBF8 = 00100C0100EF660A</action>
            <action>maincpu.mq@CC00 = 203C00FF00008010</action>
            <action>maincpu.mq@CC08 = 60080C0100DF6606</action>
            <action>maincpu.mq@CC10 = 42804EB8237260AE</action>
            <!--
            CBC0 | 41F9 000F 0000 : lea     $f0000.l, A0 // sound code address
            CBC6 | 4EB8 23C6      : jsr     $23c6.w      // check sound code
            CBCA | 1401           : move.b  D1, D2
            CBCC | 1239 0008 0003 : move.b  $80003.l, D1 // read input
            CBD2 | B401           : cmp.b   D1, D2
            CBD4 | 67F0           : beq     $cbc6
            CBD6 | 0C01 00FD      : cmpi.b  #-$3, D1
            CBDA | 6602           : bne     $cbde
            CBDC | 5310           : subq.b  #1, (A0)     // decrease code -01
            CBDE | 0C01 00FE      : cmpi.b  #-$2, D1
            CBE2 | 6602           : bne     $cbe6
            CBE4 | 5210           : addq.b  #1, (A0)     // increase code +01
            CBE6 | 0C01 00FB      : cmpi.b  #-$5, D1
            CBEA | 6604           : bne     $cbf0
            CBEC | 0410 0010      : subi.b  #$10, (A0)   // decrease code -10
            CBF0 | 0C01 00F7      : cmpi.b  #-$9, D1
            CBF4 | 6604           : bne     $cbfa
            CBF6 | 0610 0010      : addi.b  #$10, (A0)   // increase code +10
            CBFA | 0C01 00EF      : cmpi.b  #-$11, D1
            CBFE | 660A           : bne     $cc0a
            CC00 | 203C 00FF 0000 : move.l  #$ff0000, D0 // play sound
            CC06 | 8010           : or.b    (A0), D0
            CC08 | 6008           : bra     $cc12
            CC0A | 0C01 00DF      : cmpi.b  #-$21, D1
            CC0E | 6606           : bne     $cc16
            CC10 | 4280           : clr.l   D0           // stop sound
            CC12 | 4EB8 2372      : jsr     $2372.w
            CC16 | 60AE           : bra     $cbc6
            -->
        </script>
        <script state="run">
            <output format="----- saint 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@F0000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@6970 = 2C3C000050587E01</action>
            <action>maincpu.mq@CBC0 = 0000000000000000</action>
            <action>maincpu.mq@CBC8 = 0000000000000000</action>
            <action>maincpu.mq@CBD0 = 0000000000000000</action>
            <action>maincpu.mq@CBD8 = 0000000000000000</action>
            <action>maincpu.mq@CBE0 = 0000000000000000</action>
            <action>maincpu.mq@CBE8 = 0000000000000000</action>
            <action>maincpu.mq@CBF0 = 0000000000000000</action>
            <action>maincpu.mq@CBF8 = 0000000000000000</action>
            <action>maincpu.mq@CC00 = 0000000000000000</action>
            <action>maincpu.mq@CC08 = 0000000000000000</action>
            <action>maincpu.mq@CC10 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mw@043A = 601E</action> <!-- skip rom check -->
            <action>maincpu.mw@688C = 0001</action> <!-- skip dip switch display -->
        </script>
        <script state="off">
            <action>maincpu.mw@043A = 7004</action>
            <action>maincpu.mw@688C = 0230</action>
        </script>
    </cheat>

</mamecheat>
Post Reply