Page 1 of 1

[stdragon] Saint Dragon

Posted: Sun May 22, 2022 2:12 pm
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.

[stdragon]+ Saint Dragon

Posted: Thu Nov 16, 2023 9:52 am
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>