[spec2k]+ Spectrum 2000/Fire Hawk

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: 874
Joined: Tue Dec 01, 2020 1:24 pm
Been thanked: 3 times

[spec2k]+ Spectrum 2000/Fire Hawk

Post by jman »

speck2k.xml

Code: Select all

<!-- Spectrum 2000 (vertical, Korea) -->
<mamecheat version="1">

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

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@61b2a =         4eb80140</action>
            <action>maincpu.mq@00140 = 1a00102a00024600</action>
            <action>maincpu.mq@00148 = 020000101c128c00</action>
            <action>maincpu.mq@00150 = 4e75000000000000</action>
            <!--
            0140 | 1a00      : move.b D0,D5
            0142 | 102a 0002 : move.b ($2,A2),D0
            0146 | 4600      : not.b  D0
            0148 | 0200 0010 : andi.b #$10,D0
            014c | 1c12      : move.b (A2),D6
            014e | 8c00      : or.b   D0,D6
            0150 | 4e75      : rts
            -->
            <action>maincpu.mw@6229a = 0002</action> <!-- fireable in charging -->
            <action>maincpu.mw@62314 = ff70</action> <!-- fireable in max charging -->
        </script>
        <script state="off">
            <action>maincpu.md@61b2a =         1a001c12</action>
            <action>maincpu.mq@00140 = 0000000000000000</action>
            <action>maincpu.mq@00148 = 0000000000000000</action>
            <action>maincpu.mq@00150 = 0000000000000000</action>
            <action>maincpu.mw@6229a =             0016</action>
            <action>maincpu.mw@62314 =             f094</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x52">01 (slow)</item>
            <item value="0x56">02       </item>
            <item value="0x5a">03       </item>
            <item value="0x5e">04       </item>
            <item value="0x50">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@62474 =     param</action> <!-- right -->
            <action>maincpu.mb@624a8 = 1 + param</action> <!-- left -->
            <action>maincpu.mb@624c0 = 1 + param</action> <!-- down -->
            <action>maincpu.mb@624da =     param</action> <!-- up -->
            <action>maincpu.mb@624f4 = 1 + param</action> <!-- down -->
            <action>maincpu.mb@6250c =     param</action> <!-- up -->
        </script>
        <script state="off">
            <action>maincpu.mb@62474 = 56</action>
            <action>maincpu.mb@624a8 = 57</action>
            <action>maincpu.mb@624c0 = 57</action>
            <action>maincpu.mb@624da = 56</action>
            <action>maincpu.mb@624f4 = 57</action>
            <action>maincpu.mb@6250c = 56</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x0001">01 (slow)</item>
            <item value="0x0008">02       </item>
            <item value="0x0010">03       </item>
            <item value="0x0018">04       </item>
            <item value="0x0020">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@628e6 =         0007a610</action>
            <action>maincpu.mq@7a610 = 4eb90005f2ca302e</action>
            <action>maincpu.mq@7a618 = 000a0c4000146718</action>
            <action>maincpu.mq@7a620 = 0c40001167120c40</action>
            <action>maincpu.mq@7a628 = 0012670c0c400017</action>
            <action>maincpu.mq@7a630 = 67060c4000186612</action>
            <action>maincpu.mq@7a638 = 303c00004a6e000e</action>
            <action>maincpu.mq@7a640 = 67086a0244403d40</action>
            <action>maincpu.mq@7a648 = 000e4e7500000000</action>
            <!--
            7a610 | 4eb9 0005 f2ca : jsr    $5f2ca.l
            7a616 | 302e 000a      : move.w ($a,A6),D0
            7a61a | 0c40 0014      : cmpi.w #$14,D0
            7a61e | 6718           : beq    $7a638
            7a620 | 0c40 0011      : cmpi.w #$11,D0
            7a624 | 6712           : beq    $7a638
            7a626 | 0c40 0012      : cmpi.w #$12,D0
            7a62a | 670c           : beq    $7a638
            7a62c | 0c40 0017      : cmpi.w #$17,D0
            7a630 | 6706           : beq    $7a638
            7a632 | 0c40 0018      : cmpi.w #$18,D0
            7a636 | 6612           : bne    $7a64a
            7a638 | 303c xxxx      : move.w #$xxxx,D0
            7a63c | 4a6e 000e      : tst.w  ($e,A6)
            7a640 | 6708           : beq    $7a64a
            7a642 | 6a02           : bpl    $7a646
            7a644 | 4440           : neg.w  D0
            7a646 | 3d40 000e      : move.w D0,($e,A6)
            7a64a | 4e75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@7a63a = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@628e6 =         0005f2ca</action>
            <action>maincpu.mq@7a610 = 0000000000000000</action>
            <action>maincpu.mq@7a618 = 0000000000000000</action>
            <action>maincpu.mq@7a620 = 0000000000000000</action>
            <action>maincpu.mq@7a628 = 0000000000000000</action>
            <action>maincpu.mq@7a630 = 0000000000000000</action>
            <action>maincpu.mq@7a638 = 0000000000000000</action>
            <action>maincpu.mq@7a640 = 0000000000000000</action>
            <action>maincpu.mq@7a648 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="short hit mark (test)">
        <script state="on">
            <action>maincpu.mb@35fa = 01</action>
            <action>maincpu.mb@375a = 01</action>
            <action>maincpu.mb@39ba = 01</action>
        </script>
        <script state="off">
            <action>maincpu.mb@35fa = 00</action>
            <action>maincpu.mb@375a = 00</action>
            <action>maincpu.mb@39ba = 00</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mq@0095e = 4ef90007a6504e71</action>
            <action>maincpu.mq@7a650 = 41f9003c100043f9</action>
            <action>maincpu.mq@7a658 = 0008001f12001029</action>
            <action>maincpu.mq@7a660 = ffe4b20067f60c00</action>
            <action>maincpu.mq@7a668 = 00fd660253100c00</action>
            <action>maincpu.mq@7a670 = 00fe660252100c00</action>
            <action>maincpu.mq@7a678 = 00fb660404100010</action>
            <action>maincpu.mq@7a680 = 0c0000f766040610</action>
            <action>maincpu.mq@7a688 = 00100c0000ef6602</action>
            <action>maincpu.mq@7a690 = 12900c0000df6604</action>
            <action>maincpu.mq@7a698 = 12bc00fe60be0000</action>
            <!--
            7a650 | 41f9 003c 1000 : lea    $3c1000.l,A0 // sound code address
            7a656 | 43f9 0008 001f : lea    $8001f.l,A1  // sound latch address
            7a65c | 1200           : move.b D0,D1
            7a65e | 1029 ffe4      : move.b (-$1c,A1),D0 // read input ($80003)
            7a662 | b200           : cmp.b  D0,D1
            7a664 | 67f6           : beq    $7a65c
            7a666 | 0c00 00fd      : cmpi.b #-$3,D0
            7a66a | 6602           : bne    $7a66e
            7a66c | 5310           : subq.b #1,(A0)      // decrease code -01
            7a66e | 0c00 00fe      : cmpi.b #-$2,D0
            7a672 | 6602           : bne    $7a676
            7a674 | 5210           : addq.b #1,(A0)      // increase code +01
            7a676 | 0c00 00fb      : cmpi.b #-$5,D0
            7a67a | 6604           : bne    $7a680
            7a67c | 0410 0010      : subi.b #$10,(A0)    // decrease code -10
            7a680 | 0c00 00f7      : cmpi.b #-$9,D0
            7a684 | 6604           : bne    $7a68a
            7a686 | 0610 0010      : addi.b #$10,(A0)    // increase code +10
            7a68a | 0c00 00ef      : cmpi.b #-$11,D0
            7a68e | 6602           : bne    $7a692
            7a690 | 1290           : move.b (A0),(A1)    // play sound
            7a692 | 0c00 00df      : cmpi.b #-$21,D0
            7a696 | 6604           : bne    $7a69c
            7a698 | 12bc 00fe      : move.b #$fe,(A1)    // stop sound
            7a69c | 60be           : bra    $7a65c
            -->
            <!-- stop sfx and music at the same time -->
            <action>audiocpu.mw@0075 =             0610</action>
            <action>audiocpu.mq@0610 = ffff01a5c30173cd</action>
            <!--
            0610 | cd 73 01 : call $0173
            0613 | c3 a5 01 : jp   $01A5
            -->
        </script>
        <script state="run">
            <output format="----- spectrum 2000 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@3c1000</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mq@0095e = 46fc20004eb80200</action>
            <action> maincpu.mq@7a650 = 0000000000000000</action>
            <action> maincpu.mq@7a658 = 0000000000000000</action>
            <action> maincpu.mq@7a660 = 0000000000000000</action>
            <action> maincpu.mq@7a668 = 0000000000000000</action>
            <action> maincpu.mq@7a670 = 0000000000000000</action>
            <action> maincpu.mq@7a678 = 0000000000000000</action>
            <action> maincpu.mq@7a680 = 0000000000000000</action>
            <action> maincpu.mq@7a688 = 0000000000000000</action>
            <action> maincpu.mq@7a690 = 0000000000000000</action>
            <action> maincpu.mq@7a698 = 0000000000000000</action>
            <action>audiocpu.mw@00075 =             01a5</action>
            <action>audiocpu.mq@00610 = ffffffffffffffff</action>
        </script>
    </cheat>

</mamecheat>
firehawk.xml

Code: Select all

<!-- Fire Hawk (World) / Huohu Chuanshuo (China) (horizontal) -->
<mamecheat version="1">

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

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@2c2e8 =         4eb80140</action>
            <action>maincpu.mq@00140 = 1a00102a00024600</action>
            <action>maincpu.mq@00148 = 020000101c128c00</action>
            <action>maincpu.mq@00150 = 4e75000000000000</action>
            <!--
            0140 | 1a00      : move.b D0,D5
            0142 | 102a 0002 : move.b ($2,A2),D0
            0146 | 4600      : not.b  D0
            0148 | 0200 0010 : andi.b #$10,D0
            014c | 1c12      : move.b (A2),D6
            014e | 8c00      : or.b   D0,D6
            0150 | 4e75      : rts
            -->
            <action>maincpu.mw@2ca44 = 0002</action> <!-- fireable in charging -->
            <action>maincpu.mw@2cabe = ff74</action> <!-- fireable in max charging -->
        </script>
        <script state="off">
            <action>maincpu.md@2c2e8 =         1a001c12</action>
            <action>maincpu.mq@00140 = 0000000000000000</action>
            <action>maincpu.mq@00148 = 0000000000000000</action>
            <action>maincpu.mq@00150 = 0000000000000000</action>
            <action>maincpu.mw@2ca44 =             0016</action>
            <action>maincpu.mw@2cabe =             efea</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x52">01 (slow)</item>
            <item value="0x56">02       </item>
            <item value="0x5a">03       </item>
            <item value="0x5e">04       </item>
            <item value="0x50">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@2cc06 =     param</action> <!-- right -->
            <action>maincpu.mb@2cc3a = 1 + param</action> <!-- left -->
            <action>maincpu.mb@2cc52 = 1 + param</action> <!-- down -->
            <action>maincpu.mb@2cc6c =     param</action> <!-- up -->
            <action>maincpu.mb@2cc86 = 1 + param</action> <!-- down -->
            <action>maincpu.mb@2cc9e =     param</action> <!-- up -->
        </script>
        <script state="off">
            <action>maincpu.mb@2cc06 = 56</action>
            <action>maincpu.mb@2cc3a = 57</action>
            <action>maincpu.mb@2cc52 = 57</action>
            <action>maincpu.mb@2cc6c = 56</action>
            <action>maincpu.mb@2cc86 = 57</action>
            <action>maincpu.mb@2cc9e = 56</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x0001">01 (slow)</item>
            <item value="0x0008">02       </item>
            <item value="0x0010">03       </item>
            <item value="0x0018">04       </item>
            <item value="0x0020">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@2d072 =         00076100</action>
            <action>maincpu.mq@76100 = 4eb90005d172302e</action>
            <action>maincpu.mq@76108 = 000a0c4000146718</action>
            <action>maincpu.mq@76110 = 0c40001167120c40</action>
            <action>maincpu.mq@76118 = 0012670c0c400017</action>
            <action>maincpu.mq@76120 = 67060c4000186612</action>
            <action>maincpu.mq@76128 = 303c00004a6e000e</action>
            <action>maincpu.mq@76130 = 67086a0244403d40</action>
            <action>maincpu.mq@76138 = 000e4e7500000000</action>
            <!--
            76100 | 4eb9 0005 d172 : jsr    $5d172.l
            76106 | 302e 000a      : move.w ($a,A6),D0
            7610a | 0c40 0014      : cmpi.w #$14,D0
            7610e | 6718           : beq    $76128
            76110 | 0c40 0011      : cmpi.w #$11,D0
            76114 | 6712           : beq    $76128
            76116 | 0c40 0012      : cmpi.w #$12,D0
            7611a | 670c           : beq    $76128
            7611c | 0c40 0017      : cmpi.w #$17,D0
            76120 | 6706           : beq    $76128
            76122 | 0c40 0018      : cmpi.w #$18,D0
            76126 | 6612           : bne    $763aa
            76128 | 303c xxxx      : move.w #$xxxx,D0
            7612c | 4a6e 000e      : tst.w  ($e,A6)
            76130 | 6708           : beq    $7613a
            76132 | 6a02           : bpl    $76136
            76134 | 4440           : neg.w  D0
            76136 | 3d40 000e      : move.w D0,($e,A6)
            7613a | 4e75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@7612a = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@2d072 =         0005d172</action>
            <action>maincpu.mq@76100 = 0000000000000000</action>
            <action>maincpu.mq@76108 = 0000000000000000</action>
            <action>maincpu.mq@76110 = 0000000000000000</action>
            <action>maincpu.mq@76118 = 0000000000000000</action>
            <action>maincpu.mq@76120 = 0000000000000000</action>
            <action>maincpu.mq@76128 = 0000000000000000</action>
            <action>maincpu.mq@76130 = 0000000000000000</action>
            <action>maincpu.mq@76138 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="short hit mark (test)">
        <script state="on">
            <action>maincpu.mb@3f806 = 01</action>
            <action>maincpu.mb@3f966 = 01</action>
            <action>maincpu.mb@3fbc6 = 01</action>
        </script>
        <script state="off">
            <action>maincpu.mb@3f806 = 00</action>
            <action>maincpu.mb@3f966 = 00</action>
            <action>maincpu.mb@3fbc6 = 00</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mq@0096c = 4ef9000761404e71</action>
            <action>maincpu.mq@76140 = 41f9003c100043f9</action>
            <action>maincpu.mq@76148 = 0028001f12001029</action>
            <action>maincpu.mq@76150 = ffe4b20067f60c00</action>
            <action>maincpu.mq@76158 = 00fd660253100c00</action>
            <action>maincpu.mq@76160 = 00fe660252100c00</action>
            <action>maincpu.mq@76168 = 00fb660404100010</action>
            <action>maincpu.mq@76170 = 0c0000f766040610</action>
            <action>maincpu.mq@76178 = 00100c0000ef6602</action>
            <action>maincpu.mq@76180 = 12900c0000df6604</action>
            <action>maincpu.mq@76188 = 12bc00fe60be0000</action>
            <!--
            76140 | 41f9 003c 1000 : lea    $3c1000.l,A0 // sound code address
            76146 | 43f9 0028 001f : lea    $28001f.l,A1 // sound latch address
            7614c | 1200           : move.b D0,D1
            7614e | 1029 ffe4      : move.b (-$1c,A1),D0 // read input ($280003)
            76152 | b200           : cmp.b  D0,D1
            76154 | 67f6           : beq    $7614c
            76156 | 0c00 00fd      : cmpi.b #-$3,D0
            7615a | 6602           : bne    $7615e
            7615c | 5310           : subq.b #1,(A0)      // decrease code -01
            7615e | 0c00 00fe      : cmpi.b #-$2,D0
            76162 | 6602           : bne    $76166
            76164 | 5210           : addq.b #1,(A0)      // increase code +01
            76166 | 0c00 00fb      : cmpi.b #-$5,D0
            7616a | 6604           : bne    $76170
            7616c | 0410 0010      : subi.b #$10,(A0)    // decrease code -10
            76170 | 0c00 00f7      : cmpi.b #-$9,D0
            76174 | 6604           : bne    $7617a
            76176 | 0610 0010      : addi.b #$10,(A0)    // increase code +10
            7617a | 0c00 00ef      : cmpi.b #-$11,D0
            7617e | 6602           : bne    $76182
            76180 | 1290           : move.b (A0),(A1)    // play sound
            76182 | 0c00 00df      : cmpi.b #-$21,D0
            76186 | 6604           : bne    $7618c
            76188 | 12bc 00fe      : move.b #$fe,(A1)    // stop sound
            7618c | 60be           : bra    $7614c
            -->
            <!-- stop sfx and music at the same time -->
            <action>audiocpu.mw@0075 =             0610</action>
            <action>audiocpu.mq@0610 = ffff01a5c30173cd</action>
            <!--
            0610 | cd 73 01 : call $0173
            0613 | c3 a5 01 : jp   $01A5
            -->
        </script>
        <script state="run">
            <output format="----- fire hawk 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@3c1000</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mq@0096c = 46fc20004eb80200</action>
            <action> maincpu.mq@76140 = 0000000000000000</action>
            <action> maincpu.mq@76148 = 0000000000000000</action>
            <action> maincpu.mq@76150 = 0000000000000000</action>
            <action> maincpu.mq@76158 = 0000000000000000</action>
            <action> maincpu.mq@76160 = 0000000000000000</action>
            <action> maincpu.mq@76168 = 0000000000000000</action>
            <action> maincpu.mq@76170 = 0000000000000000</action>
            <action> maincpu.mq@76178 = 0000000000000000</action>
            <action> maincpu.mq@76180 = 0000000000000000</action>
            <action> maincpu.mq@76188 = 0000000000000000</action>
            <action>audiocpu.mw@00075 =             01a5</action>
            <action>audiocpu.mq@00610 = ffffffffffffffff</action>
        </script>
    </cheat>

</mamecheat>
jman
Posts: 874
Joined: Tue Dec 01, 2020 1:24 pm
Been thanked: 3 times

[spec2k]+ Spectrum 2000/Fire Hawk

Post by jman »

spec2k.xml

Code: Select all

 <!-- Spectrum 2000 (vertical, Korea) -->
<mamecheat version="1">

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

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@61B2A = 4EB80140        </action>
            <action>maincpu.mq@00140 = 1A00102A00024600</action>
            <action>maincpu.mq@00148 = 020000101C128C00</action>
            <action>maincpu.mq@00150 = 4E75000000000000</action>
            <!--
            0140 | 1A00      : move.b  D0, D5
            0142 | 102A 0002 : move.b  ($2,A2), D0
            0146 | 4600      : not.b   D0
            0148 | 0200 0010 : andi.b  #$10, D0
            014C | 1C12      : move.b  (A2), D6
            014E | 8C00      : or.b    D0, D6
            0150 | 4E75      : rts
            -->
            <action>maincpu.mw@6229A = 0002</action> <!-- fireable in charging -->
            <action>maincpu.mw@62314 = FF70</action> <!-- fireable in max charging -->
        </script>
        <script state="off">
            <action>maincpu.md@61B2A = 1A001C12        </action>
            <action>maincpu.mq@00140 = 0000000000000000</action>
            <action>maincpu.mq@00148 = 0000000000000000</action>
            <action>maincpu.mq@00150 = 0000000000000000</action>
            <action>maincpu.mw@6229A = 0016            </action>
            <action>maincpu.mw@62314 = F094            </action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x52">01 (slow)</item>
            <item value="0x56">02       </item>
            <item value="0x5a">03       </item>
            <item value="0x5e">04       </item>
            <item value="0x50">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@62474 =     param</action> <!-- right -->
            <action>maincpu.mb@624A8 = 1 + param</action> <!-- left -->
            <action>maincpu.mb@624C0 = 1 + param</action> <!-- down -->
            <action>maincpu.mb@624DA =     param</action> <!-- up -->
            <action>maincpu.mb@624F4 = 1 + param</action> <!-- down -->
            <action>maincpu.mb@6250C =     param</action> <!-- up -->
        </script>
        <script state="off">
            <action>maincpu.mb@62474 = 56</action>
            <action>maincpu.mb@624A8 = 57</action>
            <action>maincpu.mb@624C0 = 57</action>
            <action>maincpu.mb@624DA = 56</action>
            <action>maincpu.mb@624F4 = 57</action>
            <action>maincpu.mb@6250C = 56</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x0001">01 (slow)</item>
            <item value="0x0008">02       </item>
            <item value="0x0010">03       </item>
            <item value="0x0018">04       </item>
            <item value="0x0020">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@628E6 = 0007A610        </action>
            <action>maincpu.mq@7A610 = 4EB90005F2CA302E</action>
            <action>maincpu.mq@7A618 = 000A0C4000146718</action>
            <action>maincpu.mq@7A620 = 0C40001167120C40</action>
            <action>maincpu.mq@7A628 = 0012670C0C400017</action>
            <action>maincpu.mq@7A630 = 67060C4000186612</action>
            <action>maincpu.mq@7A638 = 303C00004A6E000E</action>
            <action>maincpu.mq@7A640 = 67086A0244403D40</action>
            <action>maincpu.mq@7A648 = 000E4E7500000000</action>
            <!--
            7A610 | 4EB9 0005 F2CA : jsr     $5f2ca.l
            7A616 | 302E 000A      : move.w  ($a,A6), D0
            7A61A | 0C40 0014      : cmpi.w  #$14, D0
            7A61E | 6718           : beq     $7a638
            7A620 | 0C40 0011      : cmpi.w  #$11, D0
            7A624 | 6712           : beq     $7a638
            7A626 | 0C40 0012      : cmpi.w  #$12, D0
            7A62A | 670C           : beq     $7a638
            7A62C | 0C40 0017      : cmpi.w  #$17, D0
            7A630 | 6706           : beq     $7a638
            7A632 | 0C40 0018      : cmpi.w  #$18, D0
            7A636 | 6612           : bne     $7a64a
            7A638 | 303C xxxx      : move.w  #$xx, D0
            7A63C | 4A6E 000E      : tst.w   ($e,A6)
            7A640 | 6708           : beq     $7a64a
            7A642 | 6A02           : bpl     $7a646
            7A644 | 4440           : neg.w   D0
            7A646 | 3D40 000E      : move.w  D0, ($e,A6)
            7A64A | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@7A63A = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@628E6 = 0005F2CA        </action>
            <action>maincpu.mq@7A610 = 0000000000000000</action>
            <action>maincpu.mq@7A618 = 0000000000000000</action>
            <action>maincpu.mq@7A620 = 0000000000000000</action>
            <action>maincpu.mq@7A628 = 0000000000000000</action>
            <action>maincpu.mq@7A630 = 0000000000000000</action>
            <action>maincpu.mq@7A638 = 0000000000000000</action>
            <action>maincpu.mq@7A640 = 0000000000000000</action>
            <action>maincpu.mq@7A648 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="short hit mark (test)">
        <script state="on">
            <action>maincpu.mb@35FA = 01</action>
            <action>maincpu.mb@375A = 01</action>
            <action>maincpu.mb@39BA = 01</action>
        </script>
        <script state="off">
            <action>maincpu.mb@35FA = 00</action>
            <action>maincpu.mb@375A = 00</action>
            <action>maincpu.mb@39BA = 00</action>
        </script>
    </cheat>

    <cheat desc="sound test mode (test)">
        <!-- only 1 loop even if music -->
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mq@0095E = 4EF90007A6504E71</action>
            <action>maincpu.mq@7A650 = 41F9003C000043F9</action>
            <action>maincpu.mq@7A658 = 0008001F12001029</action>
            <action>maincpu.mq@7A660 = FFE4B20067F60C00</action>
            <action>maincpu.mq@7A668 = 00FD660253100C00</action>
            <action>maincpu.mq@7A670 = 00FE660252100C00</action>
            <action>maincpu.mq@7A678 = 00FB660404100010</action>
            <action>maincpu.mq@7A680 = 0C0000F766040610</action>
            <action>maincpu.mq@7A688 = 00100C0000EF6602</action>
            <action>maincpu.mq@7A690 = 12900C0000DF6604</action>
            <action>maincpu.mq@7A698 = 12BC00FE60BE0000</action>
            <!--
            7A650 | 41F9 003C 0000 : lea     $3c0000.l, A0 // sound code address
            7A656 | 43F9 0008 001F : lea     $8001f.l, A1  // sound latch address
            7A65C | 1200           : move.b  D0, D1
            7A65E | 1029 FFE4      : move.b  (-$1c,A1), D0 // read input ($80003)
            7A662 | B200           : cmp.b   D0, D1
            7A664 | 67F6           : beq     $7a65c
            7A666 | 0C00 00FD      : cmpi.b  #-$3, D0
            7A66A | 6602           : bne     $7a66e
            7A66C | 5310           : subq.b  #1, (A0)      // decrease code -01
            7A66E | 0C00 00FE      : cmpi.b  #-$2, D0
            7A672 | 6602           : bne     $7a676
            7A674 | 5210           : addq.b  #1, (A0)      // increase code +01
            7A676 | 0C00 00FB      : cmpi.b  #-$5, D0
            7A67A | 6604           : bne     $7a680
            7A67C | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            7A680 | 0C00 00F7      : cmpi.b  #-$9, D0
            7A684 | 6604           : bne     $7a68a
            7A686 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            7A68A | 0C00 00EF      : cmpi.b  #-$11, D0
            7A68E | 6602           : bne     $7a692
            7A690 | 1290           : move.b  (A0), (A1)    // play sound
            7A692 | 0C00 00DF      : cmpi.b  #-$21, D0
            7A696 | 6604           : bne     $7a69c
            7A698 | 12BC 00FE      : move.b  #$fe, (A1)    // stop sound
            7A69C | 60BE           : bra     $7a65c
            -->
            <!-- stop sfx and music at the same time -->
            <action>audiocpu.mw@0075 = 0610            </action>
            <action>audiocpu.mq@0610 = FFFF01A5C30173CD</action>
            <!--
            0610 | CD 73 01 : call $0173
            0613 | C3 A5 01 : jp   $01A5
            -->
        </script>
        <script state="run">
            <output format="----- spectrum 2000 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@3C0000</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mq@0095E = 46FC20004EB80200</action>
            <action> maincpu.mq@7A650 = 0000000000000000</action>
            <action> maincpu.mq@7A658 = 0000000000000000</action>
            <action> maincpu.mq@7A660 = 0000000000000000</action>
            <action> maincpu.mq@7A668 = 0000000000000000</action>
            <action> maincpu.mq@7A670 = 0000000000000000</action>
            <action> maincpu.mq@7A678 = 0000000000000000</action>
            <action> maincpu.mq@7A680 = 0000000000000000</action>
            <action> maincpu.mq@7A688 = 0000000000000000</action>
            <action> maincpu.mq@7A690 = 0000000000000000</action>
            <action> maincpu.mq@7A698 = 0000000000000000</action>
            <action>audiocpu.mw@00075 = 01A5            </action>
            <action>audiocpu.mq@00610 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

</mamecheat>
spec2kh.xml

Code: Select all

<!-- Spectrum 2000 (horizontal, buggy) (Europe) -->
<mamecheat version="1">

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

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@35FEA = 4EB80140        </action>
            <action>maincpu.mq@00140 = 1A00102A00024600</action>
            <action>maincpu.mq@00148 = 020000101C128C00</action>
            <action>maincpu.mq@00150 = 4E75000000000000</action>
            <!--
            0140 | 1A00      : move.b  D0, D5
            0142 | 102A 0002 : move.b  ($2,A2), D0
            0146 | 4600      : not.b   D0
            0148 | 0200 0010 : andi.b  #$10, D0
            014C | 1C12      : move.b  (A2), D6
            014E | 8C00      : or.b    D0, D6
            0150 | 4E75      : rts
            -->
            <action>maincpu.mw@36740 = 0002</action> <!-- fireable in charging -->
            <action>maincpu.mw@367BA = FF74</action> <!-- fireable in max charging -->
        </script>
        <script state="off">
            <action>maincpu.md@35FEA = 1A001C12        </action>
            <action>maincpu.mq@00140 = 0000000000000000</action>
            <action>maincpu.mq@00148 = 0000000000000000</action>
            <action>maincpu.mq@00150 = 0000000000000000</action>
            <action>maincpu.mw@36740 = 0016            </action>
            <action>maincpu.mw@367BA = EFEE            </action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x52">01 (slow)</item>
            <item value="0x56">02       </item>
            <item value="0x5a">03       </item>
            <item value="0x5e">04       </item>
            <item value="0x50">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@3691A =     param</action> <!-- right -->
            <action>maincpu.mb@3694E = 1 + param</action> <!-- left -->
            <action>maincpu.mb@36966 = 1 + param</action> <!-- down -->
            <action>maincpu.mb@36980 =     param</action> <!-- up -->
            <action>maincpu.mb@3699A = 1 + param</action> <!-- lower-left/right -->
            <action>maincpu.mb@369B2 =     param</action> <!-- upper-left/right -->
        </script>
        <script state="off">
            <action>maincpu.mb@3691A = 56</action>
            <action>maincpu.mb@3694E = 57</action>
            <action>maincpu.mb@36966 = 57</action>
            <action>maincpu.mb@36980 = 56</action>
            <action>maincpu.mb@3699A = 57</action>
            <action>maincpu.mb@369B2 = 56</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x0001">01 (slow)</item>
            <item value="0x0008">02       </item>
            <item value="0x0010">03       </item>
            <item value="0x0018">04       </item>
            <item value="0x0020">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@36D86 = 0007F3E0        </action>
            <action>maincpu.mq@7F3E0 = 4EB9000670AA302E</action>
            <action>maincpu.mq@7F3E8 = 000A0C4000146718</action>
            <action>maincpu.mq@7F3F0 = 0C40001167120C40</action>
            <action>maincpu.mq@7F3F8 = 0012670C0C400017</action>
            <action>maincpu.mq@7F400 = 67060C4000186612</action>
            <action>maincpu.mq@7F408 = 303C00004A6E000E</action>
            <action>maincpu.mq@7F410 = 67086A0244403D40</action>
            <action>maincpu.mq@7F418 = 000E4E7500000000</action>
            <!--
            7F3E0 | 4EB9 0006 70AA : jsr     $670aa.l
            7F3E6 | 302E 000A      : move.w  ($a,A6), D0
            7F3EA | 0C40 0014      : cmpi.w  #$14, D0
            7F3EE | 6718           : beq     $7a638
            7F3F0 | 0C40 0011      : cmpi.w  #$11, D0
            7F3F4 | 6712           : beq     $7a638
            7F3F6 | 0C40 0012      : cmpi.w  #$12, D0
            7F3FA | 670C           : beq     $7a638
            7F3FC | 0C40 0017      : cmpi.w  #$17, D0
            7F400 | 6706           : beq     $7a638
            7F402 | 0C40 0018      : cmpi.w  #$18, D0
            7F406 | 6612           : bne     $7a64a
            7F408 | 303C xxxx      : move.w  #$xx, D0
            7F40C | 4A6E 000E      : tst.w   ($e,A6)
            7F410 | 6708           : beq     $7a64a
            7F412 | 6A02           : bpl     $7a646
            7F414 | 4440           : neg.w   D0
            7F416 | 3D40 000E      : move.w  D0, ($e,A6)
            7F41A | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@7F40A = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@628E6 = 000670AA        </action>
            <action>maincpu.mq@7F3E0 = 0000000000000000</action>
            <action>maincpu.mq@7F3E8 = 0000000000000000</action>
            <action>maincpu.mq@7F3F0 = 0000000000000000</action>
            <action>maincpu.mq@7F3F8 = 0000000000000000</action>
            <action>maincpu.mq@7F400 = 0000000000000000</action>
            <action>maincpu.mq@7F408 = 0000000000000000</action>
            <action>maincpu.mq@7F410 = 0000000000000000</action>
            <action>maincpu.mq@7F418 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="short hit mark (test)">
        <script state="on">
            <action>maincpu.mb@48800 = 01</action>
            <action>maincpu.mb@48960 = 01</action>
            <action>maincpu.mb@48BC0 = 01</action>
        </script>
        <script state="off">
            <action>maincpu.mb@48800 = 00</action>
            <action>maincpu.mb@48960 = 00</action>
            <action>maincpu.mb@48BC0 = 00</action>
        </script>
    </cheat>

    <cheat desc="sound test mode (test)">
        <!-- only 1 loop even if music -->
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mq@0095E = 4EF90007F4204E71</action>
            <action>maincpu.mq@7F420 = 41F9003C000043F9</action>
            <action>maincpu.mq@7F428 = 0008001F12001029</action>
            <action>maincpu.mq@7F430 = FFE4B20067F60C00</action>
            <action>maincpu.mq@7F438 = 00FD660253100C00</action>
            <action>maincpu.mq@7F440 = 00FE660252100C00</action>
            <action>maincpu.mq@7F448 = 00FB660404100010</action>
            <action>maincpu.mq@7F450 = 0C0000F766040610</action>
            <action>maincpu.mq@7F458 = 00100C0000EF6602</action>
            <action>maincpu.mq@7F460 = 12900C0000DF6604</action>
            <action>maincpu.mq@7F468 = 12BC00FE60BE0000</action>
            <!--
            7F420 | 41F9 003C 0000 : lea     $3c0000.l, A0 // sound code address
            7F426 | 43F9 0008 001F : lea     $8001f.l, A1  // sound latch address
            7F42C | 1200           : move.b  D0, D1
            7F42E | 1029 FFE4      : move.b  (-$1c,A1), D0 // read input ($80003)
            7F432 | B200           : cmp.b   D0, D1
            7F434 | 67F6           : beq     $7f42c
            7F436 | 0C00 00FD      : cmpi.b  #-$3, D0
            7F43A | 6602           : bne     $7f43e
            7F43C | 5310           : subq.b  #1, (A0)      // decrease code -01
            7F43E | 0C00 00FE      : cmpi.b  #-$2, D0
            7F442 | 6602           : bne     $7f446
            7F444 | 5210           : addq.b  #1, (A0)      // increase code +01
            7F446 | 0C00 00FB      : cmpi.b  #-$5, D0
            7F44A | 6604           : bne     $7f450
            7F44C | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            7F450 | 0C00 00F7      : cmpi.b  #-$9, D0
            7F454 | 6604           : bne     $7f45a
            7F456 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            7F45A | 0C00 00EF      : cmpi.b  #-$11, D0
            7F45E | 6602           : bne     $7f462
            7F460 | 1290           : move.b  (A0), (A1)    // play sound
            7F462 | 0C00 00DF      : cmpi.b  #-$21, D0
            7F466 | 6604           : bne     $7f46c
            7F468 | 12BC 00FE      : move.b  #$fe, (A1)    // stop sound
            7F46C | 60BE           : bra     $7f42c
            -->
            <!-- stop sfx and music at the same time -->
            <action>audiocpu.mw@0075 = 0610            </action>
            <action>audiocpu.mq@0610 = FFFF01A5C30173CD</action>
            <!--
            0610 | CD 73 01 : call $0173
            0613 | C3 A5 01 : jp   $01A5
            -->
        </script>
        <script state="run">
            <output format="----- spectrum 2000 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@3C0000</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mq@0095E = 46FC20004EB80200</action>
            <action> maincpu.mq@7A650 = 0000000000000000</action>
            <action> maincpu.mq@7A658 = 0000000000000000</action>
            <action> maincpu.mq@7A660 = 0000000000000000</action>
            <action> maincpu.mq@7A668 = 0000000000000000</action>
            <action> maincpu.mq@7A670 = 0000000000000000</action>
            <action> maincpu.mq@7A678 = 0000000000000000</action>
            <action> maincpu.mq@7A680 = 0000000000000000</action>
            <action> maincpu.mq@7A688 = 0000000000000000</action>
            <action> maincpu.mq@7A690 = 0000000000000000</action>
            <action> maincpu.mq@7A698 = 0000000000000000</action>
            <action>audiocpu.mw@00075 = 01A5            </action>
            <action>audiocpu.mq@00610 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

</mamecheat>
firehawk

Code: Select all

<!-- Fire Hawk (World) / Huohu Chuanshuo (China) (horizontal) -->
<mamecheat version="1">

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

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@2C2E8 = 4EB80140        </action>
            <action>maincpu.mq@00140 = 1A00102A00024600</action>
            <action>maincpu.mq@00148 = 020000101C128C00</action>
            <action>maincpu.mq@00150 = 4E75000000000000</action>
            <!--
            0140 | 1A00      : move.b  D0, D5
            0142 | 102A 0002 : move.b  ($2,A2), D0
            0146 | 4600      : not.b   D0
            0148 | 0200 0010 : andi.b  #$10, D0
            014C | 1C12      : move.b  (A2), D6
            014E | 8C00      : or.b    D0, D6
            0150 | 4E75      : rts
            -->
            <action>maincpu.mw@2CA44 = 0002</action> <!-- fireable in charging -->
            <action>maincpu.mw@2CABE = FF74</action> <!-- fireable in max charging -->
        </script>
        <script state="off">
            <action>maincpu.md@2C2E8 = 1A001C12        </action>
            <action>maincpu.mq@00140 = 0000000000000000</action>
            <action>maincpu.mq@00148 = 0000000000000000</action>
            <action>maincpu.mq@00150 = 0000000000000000</action>
            <action>maincpu.mw@2CA44 = 0016            </action>
            <action>maincpu.mw@2CABE = EFEA            </action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x52">01 (slow)</item>
            <item value="0x56">02       </item>
            <item value="0x5a">03       </item>
            <item value="0x5e">04       </item>
            <item value="0x50">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@2CC06 =     param</action> <!-- right -->
            <action>maincpu.mb@2CC3A = 1 + param</action> <!-- left -->
            <action>maincpu.mb@2CC52 = 1 + param</action> <!-- down -->
            <action>maincpu.mb@2CC6C =     param</action> <!-- up -->
            <action>maincpu.mb@2CC86 = 1 + param</action> <!-- down -->
            <action>maincpu.mb@2CC9E =     param</action> <!-- up -->
        </script>
        <script state="off">
            <action>maincpu.mb@2CC06 = 56</action>
            <action>maincpu.mb@2CC3A = 57</action>
            <action>maincpu.mb@2CC52 = 57</action>
            <action>maincpu.mb@2CC6C = 56</action>
            <action>maincpu.mb@2CC86 = 57</action>
            <action>maincpu.mb@2CC9E = 56</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x0001">01 (slow)</item>
            <item value="0x0008">02       </item>
            <item value="0x0010">03       </item>
            <item value="0x0018">04       </item>
            <item value="0x0020">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@2D072 = 00076100        </action>
            <action>maincpu.mq@76100 = 4EB90005D172302E</action>
            <action>maincpu.mq@76108 = 000A0C4000146718</action>
            <action>maincpu.mq@76110 = 0C40001167120C40</action>
            <action>maincpu.mq@76118 = 0012670C0C400017</action>
            <action>maincpu.mq@76120 = 67060C4000186612</action>
            <action>maincpu.mq@76128 = 303C00004A6E000E</action>
            <action>maincpu.mq@76130 = 67086A0244403D40</action>
            <action>maincpu.mq@76138 = 000E4E7500000000</action>
            <!--
            76100 | 4EB9 0005 D172 : jsr     $5d172.l
            76106 | 302E 000A      : move.w  ($a,A6), D0
            7610A | 0C40 0014      : cmpi.w  #$14, D0
            7610E | 6718           : beq     $76128
            76110 | 0C40 0011      : cmpi.w  #$11, D0
            76114 | 6712           : beq     $76128
            76116 | 0C40 0012      : cmpi.w  #$12, D0
            7611A | 670C           : beq     $76128
            7611C | 0C40 0017      : cmpi.w  #$17, D0
            76120 | 6706           : beq     $76128
            76122 | 0C40 0018      : cmpi.w  #$18, D0
            76126 | 6612           : bne     $7613a
            76128 | 303C 0020      : move.w  #$20, D0
            7612C | 4A6E 000E      : tst.w   ($e,A6)
            76130 | 6708           : beq     $7613a
            76132 | 6A02           : bpl     $76136
            76134 | 4440           : neg.w   D0
            76136 | 3D40 000E      : move.w  D0, ($e,A6)
            7613A | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@7612A = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@2D072 = 0005D172        </action>
            <action>maincpu.mq@76100 = 0000000000000000</action>
            <action>maincpu.mq@76108 = 0000000000000000</action>
            <action>maincpu.mq@76110 = 0000000000000000</action>
            <action>maincpu.mq@76118 = 0000000000000000</action>
            <action>maincpu.mq@76120 = 0000000000000000</action>
            <action>maincpu.mq@76128 = 0000000000000000</action>
            <action>maincpu.mq@76130 = 0000000000000000</action>
            <action>maincpu.mq@76138 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="short hit mark (test)">
        <script state="on">
            <action>maincpu.mb@3F806 = 01</action>
            <action>maincpu.mb@3F966 = 01</action>
            <action>maincpu.mb@3FBC6 = 01</action>
        </script>
        <script state="off">
            <action>maincpu.mb@3F806 = 00</action>
            <action>maincpu.mb@3F966 = 00</action>
            <action>maincpu.mb@3FBC6 = 00</action>
        </script>
    </cheat>

    <cheat desc="sound test mode (test)">
        <!-- only 1 loop even if music -->
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mq@0096C = 4EF9000761404E71</action>
            <action>maincpu.mq@76140 = 41F9003C000043F9</action>
            <action>maincpu.mq@76148 = 0028001F12001029</action>
            <action>maincpu.mq@76150 = FFE4B20067F60C00</action>
            <action>maincpu.mq@76158 = 00FD660253100C00</action>
            <action>maincpu.mq@76160 = 00FE660252100C00</action>
            <action>maincpu.mq@76168 = 00FB660404100010</action>
            <action>maincpu.mq@76170 = 0C0000F766040610</action>
            <action>maincpu.mq@76178 = 00100C0000EF6602</action>
            <action>maincpu.mq@76180 = 12900C0000DF6604</action>
            <action>maincpu.mq@76188 = 12BC00FE60BE0000</action>
            <!--
            76140 | 41F9 003C 0000 : lea     $3c0000.l, A0 // sound code address
            76146 | 43F9 0028 001F : lea     $28001f.l, A1 // sound latch address
            7614C | 1200           : move.b  D0, D1
            7614E | 1029 FFE4      : move.b  (-$1c,A1), D0 // read input ($280003)
            76152 | B200           : cmp.b   D0, D1
            76154 | 67F6           : beq     $7614c
            76156 | 0C00 00FD      : cmpi.b  #-$3, D0
            7615A | 6602           : bne     $7615e
            7615C | 5310           : subq.b  #1, (A0)      // decrease code -01
            7615E | 0C00 00FE      : cmpi.b  #-$2, D0
            76162 | 6602           : bne     $76166
            76164 | 5210           : addq.b  #1, (A0)      // increase code +01
            76166 | 0C00 00FB      : cmpi.b  #-$5, D0
            7616A | 6604           : bne     $76170
            7616C | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            76170 | 0C00 00F7      : cmpi.b  #-$9, D0
            76174 | 6604           : bne     $7617a
            76176 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            7617A | 0C00 00EF      : cmpi.b  #-$11, D0
            7617E | 6602           : bne     $76182
            76180 | 1290           : move.b  (A0), (A1)    // play sound
            76182 | 0C00 00DF      : cmpi.b  #-$21, D0
            76186 | 6604           : bne     $7618c
            76188 | 12BC 00FE      : move.b  #$fe, (A1)    // stop sound
            7618C | 60BE           : bra     $7614c
            -->
            <!-- stop sfx and music at the same time -->
            <action>audiocpu.mw@0075 = 0610            </action>
            <action>audiocpu.mq@0610 = FFFF01A5C30173CD</action>
            <!--
            0610 | CD 73 01 : call $0173
            0613 | C3 A5 01 : jp   $01A5
            -->
        </script>
        <script state="run">
            <output format="----- fire hawk 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@3C0000</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mq@0096C = 46FC20004EB80200</action>
            <action> maincpu.mq@76140 = 0000000000000000</action>
            <action> maincpu.mq@76148 = 0000000000000000</action>
            <action> maincpu.mq@76150 = 0000000000000000</action>
            <action> maincpu.mq@76158 = 0000000000000000</action>
            <action> maincpu.mq@76160 = 0000000000000000</action>
            <action> maincpu.mq@76168 = 0000000000000000</action>
            <action> maincpu.mq@76170 = 0000000000000000</action>
            <action> maincpu.mq@76178 = 0000000000000000</action>
            <action> maincpu.mq@76180 = 0000000000000000</action>
            <action> maincpu.mq@76188 = 0000000000000000</action>
            <action>audiocpu.mw@00075 = 01A5            </action>
            <action>audiocpu.mq@00610 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

</mamecheat>
firehawkv.xml

Code: Select all

<!-- Fire Hawk (World) / Huohu Chuanshuo (China) (switchable orientation) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <!-- vertical -->
            <action>maincpu.mb@2DC60 = 60</action> <!-- enemy -->
            <action>maincpu.mb@2E00C = 60</action> <!-- bullet -->
            <!-- horizontal -->
            <action>maincpu.mb@ACF4E = 60</action> <!-- enemy -->
            <action>maincpu.mb@AD2FA = 60</action> <!-- bullet -->
        </script>
        <script state="off">
            <action>maincpu.mb@2DC60 = 66</action>
            <action>maincpu.mb@2E00C = 66</action>
            <action>maincpu.mb@ACF4E = 66</action>
            <action>maincpu.mb@AD2FA = 66</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@2C658 = 4EB80140        </action> <!-- vertical -->
            <action>maincpu.md@AB942 = 4EB80140        </action> <!-- horizontal -->
            <action>maincpu.mq@00140 = 1A00102A00024600</action>
            <action>maincpu.mq@00148 = 020000101C128C00</action>
            <action>maincpu.mq@00150 = 4E75000000000000</action>
            <!--
            0140 | 1A00      : move.b  D0, D5
            0142 | 102A 0002 : move.b  ($2,A2), D0
            0146 | 4600      : not.b   D0
            0148 | 0200 0010 : andi.b  #$10, D0
            014C | 1C12      : move.b  (A2), D6
            014E | 8C00      : or.b    D0, D6
            0150 | 4E75      : rts
            -->
            <!-- vertical -->
            <action>maincpu.mw@2CDB0 = 0002</action> <!-- fireable in charging -->
            <action>maincpu.mw@2CE2A = FF74</action> <!-- fireable in max charging -->
            <!-- horizontal -->
            <action>maincpu.mw@AC09E = 0002</action> <!-- fireable in charging -->
            <action>maincpu.mw@AC118 = FF74</action> <!-- fireable in max charging -->
        </script>
        <script state="off">
            <action>maincpu.md@2C658 = 1A001C12        </action>
            <action>maincpu.md@AB942 = 1A001C12        </action>
            <action>maincpu.mq@00140 = 0000000000000000</action>
            <action>maincpu.mq@00148 = 0000000000000000</action>
            <action>maincpu.mq@00150 = 0000000000000000</action>
            <action>maincpu.mw@2CDB0 = 0016            </action>
            <action>maincpu.mw@2CE2A = EFEC            </action>
            <action>maincpu.mw@AC09E = 0016            </action>
            <action>maincpu.mw@AC118 = EFEA            </action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x52">01 (slow)</item>
            <item value="0x56">02       </item>
            <item value="0x5a">03       </item>
            <item value="0x5e">04       </item>
            <item value="0x50">05 (fast)</item>
        </parameter>
        <script state="change">
            <!-- vertical -->
            <action>maincpu.mb@2CF72 =     param</action> <!-- right -->
            <action>maincpu.mb@2CFA6 = 1 + param</action> <!-- left -->
            <action>maincpu.mb@2CFBE = 1 + param</action> <!-- down -->
            <action>maincpu.mb@2CFD8 =     param</action> <!-- up -->
            <action>maincpu.mb@2CFF2 = 1 + param</action> <!-- down -->
            <action>maincpu.mb@2D00A =     param</action> <!-- up -->
            <!-- horizontal -->
            <action>maincpu.mb@AC260 =     param</action> <!-- right -->
            <action>maincpu.mb@AC294 = 1 + param</action> <!-- left -->
            <action>maincpu.mb@AC2AC = 1 + param</action> <!-- down -->
            <action>maincpu.mb@AC2C6 =     param</action> <!-- up -->
            <action>maincpu.mb@AC2E0 = 1 + param</action> <!-- down -->
            <action>maincpu.mb@AC2F8 =     param</action> <!-- up -->
        </script>
        <script state="off">
            <action>maincpu.mb@2CF72 = 56</action>
            <action>maincpu.mb@2CFA6 = 57</action>
            <action>maincpu.mb@2CFBE = 57</action>
            <action>maincpu.mb@2CFD8 = 56</action>
            <action>maincpu.mb@2CFF2 = 57</action>
            <action>maincpu.mb@2D00A = 56</action>
            <action>maincpu.mb@AC260 = 56</action>
            <action>maincpu.mb@AC294 = 57</action>
            <action>maincpu.mb@AC2AC = 57</action>
            <action>maincpu.mb@AC2C6 = 56</action>
            <action>maincpu.mb@AC2E0 = 57</action>
            <action>maincpu.mb@AC2F8 = 56</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x0001">01 (slow)</item>
            <item value="0x0008">02       </item>
            <item value="0x0010">03       </item>
            <item value="0x0018">04       </item>
            <item value="0x0020">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@2D3DE = 00076A30        </action>
            <action>maincpu.md@AC6CC = 00076A38        </action>
            <action>maincpu.mq@76A30 = 4EB90005DABA6006</action>
            <action>maincpu.mq@76A38 = 4EB9000DC878302E</action>
            <action>maincpu.mq@76A40 = 000A0C4000146718</action>
            <action>maincpu.mq@76A48 = 0C40001167120C40</action>
            <action>maincpu.mq@76A50 = 0012670C0C400017</action>
            <action>maincpu.mq@76A58 = 67060C4000186612</action>
            <action>maincpu.mq@76A60 = 303C00004A6E000E</action>
            <action>maincpu.mq@76A68 = 67086A0244403D40</action>
            <action>maincpu.mq@76A70 = 000E4E7500000000</action>
            <!--
            -->
        </script>
        <script state="change">
            <action>maincpu.mw@76A62 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@2D3DE = 0005DABA        </action>
            <action>maincpu.md@AC6CC = 000DC878        </action>
            <action>maincpu.mq@76A30 = 0000000000000000</action>
            <action>maincpu.mq@76A38 = 0000000000000000</action>
            <action>maincpu.mq@76A40 = 0000000000000000</action>
            <action>maincpu.mq@76A48 = 0000000000000000</action>
            <action>maincpu.mq@76A50 = 0000000000000000</action>
            <action>maincpu.mq@76A58 = 0000000000000000</action>
            <action>maincpu.mq@76A60 = 0000000000000000</action>
            <action>maincpu.mq@76A68 = 0000000000000000</action>
            <action>maincpu.mq@76A70 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="short hit mark (test)">
        <script state="on">
            <!-- vertical -->
            <action>maincpu.mb@3FCF0 = 01</action>
            <action>maincpu.mb@3FE50 = 01</action>
            <action>maincpu.mb@400B0 = 01</action>
            <!-- horizontal -->
            <action>maincpu.mb@BEE60 = 01</action>
            <action>maincpu.mb@BEFC0 = 01</action>
            <action>maincpu.mb@BF220 = 01</action>
        </script>
        <script state="off">
            <action>maincpu.mb@3FCF0 = 00</action>
            <action>maincpu.mb@3FE50 = 00</action>
            <action>maincpu.mb@400B0 = 00</action>
            <action>maincpu.mb@BEE60 = 00</action>
            <action>maincpu.mb@BEFC0 = 00</action>
            <action>maincpu.mb@BF220 = 00</action>
        </script>
    </cheat>

    <cheat desc="sound test mode (test)">
        <!-- only 1 loop even if music -->
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mq@00A92 = 4EF900076A804E71</action>
            <action>maincpu.mq@76A80 = 41F9003C000043F9</action>
            <action>maincpu.mq@76A88 = 0028001F12001029</action>
            <action>maincpu.mq@76A90 = FFE4B20067F60C00</action>
            <action>maincpu.mq@76A98 = 00FD660253100C00</action>
            <action>maincpu.mq@76AA0 = 00FE660252100C00</action>
            <action>maincpu.mq@76AA8 = 00FB660404100010</action>
            <action>maincpu.mq@76AB0 = 0C0000F766040610</action>
            <action>maincpu.mq@76AB8 = 00100C0000EF6602</action>
            <action>maincpu.mq@76AC0 = 12900C0000DF6604</action>
            <action>maincpu.mq@76AC8 = 12BC00FE60BE0000</action>
            <!--
            76A80 | 41F9 003C 0000 : lea     $3c0000.l, A0 // sound code address
            76A86 | 43F9 0028 001F : lea     $28001f.l, A1 // sound latch address
            76A8C | 1200           : move.b  D0, D1
            76A8E | 1029 FFE4      : move.b  (-$1c,A1), D0 // read input ($280003)
            76A92 | B200           : cmp.b   D0, D1
            76A94 | 67F6           : beq     $76a8c
            76A96 | 0C00 00FD      : cmpi.b  #-$3, D0
            76A9A | 6602           : bne     $76a9e
            76A9C | 5310           : subq.b  #1, (A0)      // decrease code -01
            76A9E | 0C00 00FE      : cmpi.b  #-$2, D0
            76AA2 | 6602           : bne     $76aa6
            76AA4 | 5210           : addq.b  #1, (A0)      // increase code +01
            76AA6 | 0C00 00FB      : cmpi.b  #-$5, D0
            76AAA | 6604           : bne     $76ab0
            76AAC | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            76AB0 | 0C00 00F7      : cmpi.b  #-$9, D0
            76AB4 | 6604           : bne     $76aba
            76AB6 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            76ABA | 0C00 00EF      : cmpi.b  #-$11, D0
            76ABE | 6602           : bne     $76ac2
            76AC0 | 1290           : move.b  (A0), (A1)    // play sound
            76AC2 | 0C00 00DF      : cmpi.b  #-$21, D0
            76AC6 | 6604           : bne     $76acc
            76AC8 | 12BC 00FE      : move.b  #$fe, (A1)    // stop sound
            76ACC | 60BE           : bra     $76a8c
            -->
            <!-- stop sfx and music at the same time -->
            <action>audiocpu.mw@0075 = 0610            </action>
            <action>audiocpu.mq@0610 = FFFF01A5C30173CD</action>
            <!--
            0610 | CD 73 01 : call $0173
            0613 | C3 A5 01 : jp   $01A5
            -->
        </script>
        <script state="run">
            <output format="----- fire hawk 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@3C0000</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mq@0096C = 46FC20004EB80200</action>
            <action> maincpu.mq@76140 = 0000000000000000</action>
            <action> maincpu.mq@76148 = 0000000000000000</action>
            <action> maincpu.mq@76150 = 0000000000000000</action>
            <action> maincpu.mq@76158 = 0000000000000000</action>
            <action> maincpu.mq@76160 = 0000000000000000</action>
            <action> maincpu.mq@76168 = 0000000000000000</action>
            <action> maincpu.mq@76170 = 0000000000000000</action>
            <action> maincpu.mq@76178 = 0000000000000000</action>
            <action> maincpu.mq@76180 = 0000000000000000</action>
            <action> maincpu.mq@76188 = 0000000000000000</action>
            <action>audiocpu.mw@00075 = 01A5            </action>
            <action>audiocpu.mq@00610 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

</mamecheat>
  • "auto fire" : Music stops in maximum shot power charge.
  • "sound test mode" : Only 1 loop even if music.
Post Reply