[sandscrp] Sand Scorpion

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

[sandscrp] Sand Scorpion

Post by jman »

Code: Select all

<cheat desc="P1 no hit">
    <script state="on">
        <action>maincpu.mb@b0a9 = e2</action> <!-- enemy -->
        <action>maincpu.mb@b40f = 7c</action> <!-- bullet -->
        <action>maincpu.mb@b5f7 = 94</action> <!-- laser -->
    </script>
    <script state="off">
        <action>maincpu.mb@b0a9 = 6c</action>
        <action>maincpu.mb@b40f = 06</action>
        <action>maincpu.mb@b5f7 = 1e</action>
    </script>
</cheat>

<cheat desc="P2 no hit">
    <script state="on">
        <action>maincpu.mw@b0e6 = 00a4</action> <!-- enemy -->
        <action>maincpu.mw@b446 = fd44</action> <!-- bullet -->
        <action>maincpu.mw@b630 = fb5a</action> <!-- laser -->
    </script>
    <script state="off">
        <action>maincpu.mw@b0e6 = 002e</action>
        <action>maincpu.mw@b446 = fcce</action>
        <action>maincpu.mw@b630 = fae4</action>
    </script>
</cheat>

<cheat desc="auto fire">
    <script state="on">
        <action>maincpu.mb@e831 = 02</action>
    </script>
    <script state="off">
        <action>maincpu.mb@e831 = 40</action>
    </script>
</cheat>

<cheat desc="player speed">
    <parameter min="0x01" max="0x05" step="0x01" />
    <script state="change">
        <action>maincpu.mb@9b0d = param</action> <!-- P1 right -->
        <action>maincpu.mb@9b3d = param</action> <!-- P1 left -->
        <action>maincpu.mb@9b79 = param</action> <!-- P2 right -->
        <action>maincpu.mb@9ba7 = param</action> <!-- P2 left -->
        <action>maincpu.mb@dc3f = param</action> <!-- up -->
        <action>maincpu.mb@dc79 = param</action> <!-- down -->
    </script>
    <script state="off">
        <action>maincpu.mb@9b0d = 02</action>
        <action>maincpu.mb@9b3d = 02</action>
        <action>maincpu.mb@9b79 = 02</action>
        <action>maincpu.mb@9ba7 = 02</action>
        <action>maincpu.mb@dc3f = 02</action>
        <action>maincpu.mb@dc79 = 02</action>
    </script>
</cheat>

<cheat desc="bullet speed - blue">
    <parameter>
        <item value="0x0004">01 (slow)</item>
        <item value="0x0008">02       </item>
        <item value="0x000c">03       </item>
        <item value="0x0010">04       </item>
        <item value="0x0014">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.mq@0f106 = 4eb9000400003218</action>
        <action>maincpu.mq@40000 = 321867066a04323c</action>
        <action>maincpu.mq@40008 = 0000194100184e75</action>
        <!--
        40000 | 3218           : move.w (A0)+,D1
        40002 | 6706           : beq    $4000a
        40004 | 6a04           : bpl    $4000a
        40006 | 323c xxxx      : move.w #$xxxx,D1
        4000a | 1941 0018      : move.b D1,($18,A4)
        4000e | 4e75           : rts
        -->
    </script>
    <script state="change">
        <action>maincpu.mw@40008 = -param</action>
    </script>
    <script state="off">
        <action>maincpu.mq@0f106 = 3218194100183218</action>
        <action>maincpu.mq@40000 = ffffffffffffffff</action>
        <action>maincpu.mq@40008 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="bullet speed - green">
    <parameter>
        <item value="0x04">01 (slow)</item>
        <item value="0x08">02       </item>
        <item value="0x0c">03       </item>
        <item value="0x10">04       </item>
        <item value="0x14">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.md@e9b6 = 103c0000</action>
    </script>
    <script state="change">
        <action>maincpu.mb@e9b9 = -param</action>
    </script>
    <script state="off">
        <action>maincpu.md@e9b6 = 102e0018</action>
    </script>
</cheat>

<cheat desc="max bullets up">
    <script state="on">
        <action>maincpu.mb@f01a = 60</action> <!-- blue -->
        <action>maincpu.mb@f410 = 60</action> <!-- green -->
        <action>maincpu.mb@fea0 = 60</action> <!-- red -->
    </script>
    <script state="off">
        <action>maincpu.mb@f01a = 67</action>
        <action>maincpu.mb@f410 = 67</action>
        <action>maincpu.mb@fea0 = 67</action>
    </script>
</cheat>

<cheat desc="max missiles up">
    <script state="on">
        <action>maincpu.mb@fbe8 = 60</action> <!-- M -->
        <action>maincpu.mb@f7bc = 60</action> <!-- H -->
    </script>
    <script state="off">
        <action>maincpu.mb@fbe8 = 67</action>
        <action>maincpu.mb@f7bc = 67</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@00a14 = 4ef9000400104298</action>
        <action>maincpu.mq@40010 = 46fc200043e80100</action>
        <action>maincpu.mq@40018 = 12bc008014011228</action>
        <action>maincpu.mq@40020 = 0009b40167f60c01</action>
        <action>maincpu.mq@40028 = 00fb660253110c01</action>
        <action>maincpu.mq@40030 = 00f7660252110c01</action>
        <action>maincpu.mq@40038 = 00fd660404110010</action>
        <action>maincpu.mq@40040 = 0c0100fe66040611</action>
        <action>maincpu.mq@40048 = 00100c0100ef6604</action>
        <action>maincpu.mq@40050 = 1011600a0c0100df</action>
        <action>maincpu.mq@40058 = 660a103c008013c0</action>
        <action>maincpu.mq@40060 = 00e0000160b6ffff</action>
        <!--
        40010 | 46fc 2000      : move   #$2000,SR    // enable interrupt
        40014 | 43e8 0100      : lea    ($100,A0),A1 // sound code address
        40018 | 12bc 0080      : move.b #$80,(A1)
        4001c | 1401           : move.b D1,D2
        4001e | 1228 0009      : move.b ($9,A0),D1   // read input
        40022 | b401           : cmp.b  D1,D2
        40024 | 67f6           : beq    $4001c
        40026 | 0c01 00fb      : cmpi.b #-$5,D1
        4002a | 6602           : bne    $4002e
        4002c | 5311           : subq.b #1,(A1)      // decrease code -01
        4002e | 0c01 00f7      : cmpi.b #-$9,D1
        40032 | 6602           : bne    $40036
        40034 | 5211           : addq.b #1,(A1)      // increase code +01
        40036 | 0c01 00fd      : cmpi.b #-$3,D1
        4003a | 6604           : bne    $40040
        4003c | 0411 0010      : subi.b #$10,(A1)    // decrease code -10
        40040 | 0c01 00fe      : cmpi.b #-$2,D1
        40044 | 6604           : bne    $4004a
        40046 | 0611 0010      : addi.b #$10,(A1)    // increase code +10
        4004a | 0c01 00ef      : cmpi.b #-$11,D1
        4004e | 6604           : bne    $40054
        40050 | 1011           : move.b (A1),D0      // play sound
        40052 | 600a           : bra    $4005e
        40054 | 0c01 00df      : cmpi.b #-$21,D1
        40058 | 660a           : bne    $40064
        4005a | 103c 0080      : move.b #$80,D0      // stop sound
        4005e | 13c0 00e0 0001 : move.b D0,$e00001.l // send sound code
        40064 | 60b6           : bra    $4001c
        -->
    </script>
    <script state="run">
        <output format="----- sand scorpion sound test mode -----" line="10" align="center" />
        <output format="left : decrease code -01"                  line="11" align="center" />
        <output format="right : increase code +01"                 line="12" align="center" />
        <output format="up : increase code +10"                    line="13" align="center" />
        <output format="down : decrease code -10"                  line="14" align="center" />
        <output format="button 1 : play sound"                     line="15" align="center" />
        <output format="button 2 : stop sound"                     line="16" align="center" />
        <output format="----------------------------"              line="17" align="center" />
        <output format="&lt;&lt; sound code %2.2X &gt;&gt;"        line="19" align="center">
            <argument>maincpu.pb@700100</argument>
        </output>
    </script>
    <script state="off">
        <action>maincpu.mq@00a14 = 323c0ff042984298</action>
        <action>maincpu.mq@40010 = ffffffffffffffff</action>
        <action>maincpu.mq@40018 = ffffffffffffffff</action>
        <action>maincpu.mq@40020 = ffffffffffffffff</action>
        <action>maincpu.mq@40028 = ffffffffffffffff</action>
        <action>maincpu.mq@40030 = ffffffffffffffff</action>
        <action>maincpu.mq@40038 = ffffffffffffffff</action>
        <action>maincpu.mq@40040 = ffffffffffffffff</action>
        <action>maincpu.mq@40048 = ffffffffffffffff</action>
        <action>maincpu.mq@40050 = ffffffffffffffff</action>
        <action>maincpu.mq@40058 = ffffffffffffffff</action>
        <action>maincpu.mq@40060 = ffffffffffffffff</action>
    </script>
</cheat>
jman
Posts: 843
Joined: Tue Dec 01, 2020 1:24 pm

[sandscrp]+ Sand Scorpion

Post by jman »

sandscrp.xml

Code: Select all

<!-- Sand Scorpion -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mw@B0A8 = 00E2</action> <!-- P1 enemy -->
            <action>maincpu.mw@B0E6 = 00A4</action> <!-- P2 enemy -->
            <action>maincpu.mw@B40E = FD7C</action> <!-- P1 bullet -->
            <action>maincpu.mw@B446 = FD44</action> <!-- P2 bullet -->
            <action>maincpu.mw@B5F6 = FB94</action> <!-- P1 laser -->
            <action>maincpu.mw@B630 = FB5A</action> <!-- P2 laser -->
        </script>
        <script state="off">
            <action>maincpu.mw@B0A8 = 006C</action>
            <action>maincpu.mw@B0E6 = 002E</action>
            <action>maincpu.mw@B40E = FD06</action>
            <action>maincpu.mw@B446 = FCCE</action>
            <action>maincpu.mw@B5F6 = FB1E</action>
            <action>maincpu.mw@B630 = FAE4</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@E831 = 01</action>
        </script>
        <script state="off">
            <action>maincpu.mb@E831 = 40</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x0001">01 (slow)</item>
            <item value="0x0002">02       </item>
            <item value="0x0006">03       </item>
            <item value="0x000a">04       </item>
            <item value="0x000e">05 (slow)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mw@9B0A = 303C</action> <!-- P1 right -->
            <action>maincpu.mw@9B3A = 303C</action> <!-- P1 left -->
            <action>maincpu.mw@9B76 = 303C</action> <!-- P2 right -->
            <action>maincpu.mw@9BA4 = 303C</action> <!-- P2 left -->
            <action>maincpu.mw@DC3C = 303C</action> <!-- up -->
            <action>maincpu.mw@DC76 = 303C</action> <!-- down -->
        </script>
        <script state="change">
            <action>maincpu.mw@9B0C = param</action>
            <action>maincpu.mw@9B3C = param</action>
            <action>maincpu.mw@9B78 = param</action>
            <action>maincpu.mw@9BA6 = param</action>
            <action>maincpu.mw@DC3E = param</action>
            <action>maincpu.mw@DC78 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@9B0A = 06400002</action>
            <action>maincpu.md@9B3A = 06400002</action>
            <action>maincpu.md@9B76 = 06400002</action>
            <action>maincpu.md@9BA4 = 06400002</action>
            <action>maincpu.md@DC3C = 06400002</action>
            <action>maincpu.md@DC76 = 06400002</action>
        </script>
    </cheat>

    <cheat desc="bullet speed (test)">
        <parameter min="0x01" max="0x05" step="0x01" />
        <script state="on">
            <action>maincpu.md@0D784 = 00040000        </action> <!-- P1 -->
            <action>maincpu.md@0D7B8 = 00040000        </action> <!-- P2 -->
            <action>maincpu.mq@40000 = 700048E782024EB9</action>
            <action>maincpu.mq@40008 = 0000E8864CDF4041</action>
            <action>maincpu.mq@40010 = 51C8FFF04E75FFFF</action>
            <!--
            40000 | 70xx           : moveq   #$xx, D0
            40002 | 48E7 8202      : movem.l D0/D6/A6, -(A7)
            40006 | 4EB9 0000 E886 : jsr     $e886.l
            4000C | 4CDF 4041      : movem.l (A7)+, D0/D6/A6
            40010 | 51C8 FFF0      : dbra    D0, $40002
            40014 | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@40001 = param - 1</action>
        </script>
        <script state="off">
            <action>maincpu.md@0D784 = 0000E886        </action>
            <action>maincpu.md@0D7B8 = 0000E886        </action>
            <action>maincpu.mq@40000 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40008 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40010 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="max bullets up">
        <script state="on">
            <action>maincpu.mb@F01A = 60</action> <!-- blue -->
            <action>maincpu.mb@F410 = 60</action> <!-- green -->
            <action>maincpu.mb@FEA0 = 60</action> <!-- red -->
        </script>
        <script state="off">
            <action>maincpu.mb@F01A = 67</action>
            <action>maincpu.mb@F410 = 67</action>
            <action>maincpu.mb@FEA0 = 67</action>
        </script>
    </cheat>

    <cheat desc="max missiles up">
        <script state="on">
            <action>maincpu.mb@F7BC = 60</action> <!-- "H" -->
            <action>maincpu.mb@FBE8 = 60</action> <!-- "M" -->
        </script>
        <script state="off">
            <action>maincpu.mb@F7BC = 67</action>
            <action>maincpu.mb@FBE8 = 67</action>
        </script>
    </cheat>

    <cheat desc="hidden character finder">
        <script state="on">
            <action>maincpu.mb@20517 = 0A</action>
        </script>
        <script state="off">
            <action>maincpu.mb@20517 = 96</action>
        </script>
    </cheat>

    <cheat desc="short hit mark">
        <script state="on">
            <!-- shot -->
            <action>maincpu.mb@F391 = 01</action>
            <action>maincpu.mb@F3B6 = 60</action>
            <!-- missile -->
            <action>maincpu.mb@FDEB = 01</action>
            <action>maincpu.mb@FE10 = 60</action>
        </script>
        <script state="off">
            <action>maincpu.mb@F391 = 03</action>
            <action>maincpu.mb@F3B6 = 67</action>
            <action>maincpu.mb@FDEB = 03</action>
            <action>maincpu.mb@FE10 = 67</action>
        </script>
    </cheat>

    <cheat desc="1 hit kill (test)">
        <script state="on">
            <action>maincpu.mb@B023 = 7F</action> <!-- P1 air -->
            <action>maincpu.mb@B069 = 7F</action> <!-- P2 air -->
            <action>maincpu.mb@B2C9 = 7F</action> <!-- P1 ground -->
            <action>maincpu.mb@B30F = 7F</action> <!-- P2 ground -->
        </script>
        <script state="off">
            <action>maincpu.mb@B023 = 01</action>
            <action>maincpu.mb@B069 = 01</action>
            <action>maincpu.mb@B2C9 = 01</action>
            <action>maincpu.mb@B30F = 01</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@00A14 = 4EF9000400204298</action>
            <action>maincpu.mq@40020 = 46FC200043E80100</action>
            <action>maincpu.mq@40028 = 45F900E000011401</action>
            <action>maincpu.mq@40030 = 12280009B40167F6</action>
            <action>maincpu.mq@40038 = 0C0100FB66025311</action>
            <action>maincpu.mq@40040 = 0C0100F766025211</action>
            <action>maincpu.mq@40048 = 0C0100FD66040411</action>
            <action>maincpu.mq@40050 = 00100C0100FE6604</action>
            <action>maincpu.mq@40058 = 061100100C0100EF</action>
            <action>maincpu.mq@40060 = 6608101100000080</action>
            <action>maincpu.mq@40068 = 14800C0100DF6604</action>
            <action>maincpu.mq@40070 = 14BC008060B8FFFF</action>
            <!--
            40020 | 46FC 2000      : move   #$2000,SR    // enable interrupt
            40024 | 43E8 0100      : lea    ($100,A0),A1 // sound code address ($700100)
            40028 | 45F9 00E0 0001 : lea    $e00001.l,A2 // sound latch address
            4002E | 1401           : move.b D1,D2
            40030 | 1228 0009      : move.b ($9,A0),D1   // read input
            40034 | B401           : cmp.b  D1,D2
            40036 | 67F6           : beq    $4002e
            40038 | 0C01 00FB      : cmpi.b #-$5,D1
            4003C | 6602           : bne    $40040
            4003E | 5311           : subq.b #1,(A1)      // decrease code -01
            40040 | 0C01 00F7      : cmpi.b #-$9,D1
            40044 | 6602           : bne    $40048
            40046 | 5211           : addq.b #1,(A1)      // increase code +01
            40048 | 0C01 00FD      : cmpi.b #-$3,D1
            4004C | 6604           : bne    $40052
            4004E | 0411 0010      : subi.b #$10,(A1)    // decrease code -10
            40052 | 0C01 00FE      : cmpi.b #-$2,D1
            40056 | 6604           : bne    $4005c
            40058 | 0611 0010      : addi.b #$10,(A1)    // increase code +10
            4005C | 0C01 00EF      : cmpi.b #-$11,D1
            40060 | 6608           : bne    $4006a
            40062 | 1011           : move.b (A1),D0      // play sound
            40064 | 0000 0080      : ori.b  #$80,D0
            40068 | 1480           : move.b D0,(A2)
            4006A | 0C01 00DF      : cmpi.b #-$21,D1
            4006E | 6604           : bne    $40074
            40070 | 14BC 0080      : move.b #$80,(A2)    // stop sound
            40074 | 60B8           : bra    $4002e
            -->
        </script>
        <script state="run">
            <output format="----- sand scorpion 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@700100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@00A14 = 323C0FF042984298</action>
            <action>maincpu.mq@40020 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40028 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40030 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40038 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40040 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40048 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40050 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40058 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40060 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40068 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40070 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

</mamecheat>
sandscrpa.xml

Code: Select all

<!-- Sand Scorpion (Earlier) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mw@B038 = 00E2</action> <!-- P1 enemy -->
            <action>maincpu.mw@B076 = 00A4</action> <!-- P2 enemy -->
            <action>maincpu.mw@B39E = FD7C</action> <!-- P1 bullet -->
            <action>maincpu.mw@B3D6 = FD44</action> <!-- P2 bullet -->
            <action>maincpu.mw@B586 = FB94</action> <!-- P1 laser -->
            <action>maincpu.mw@B5C0 = FB5A</action> <!-- P2 laser -->
        </script>
        <script state="off">
            <action>maincpu.mw@B038 = 006C</action>
            <action>maincpu.mw@B076 = 002E</action>
            <action>maincpu.mw@B39E = FD06</action>
            <action>maincpu.mw@B3D6 = FCCE</action>
            <action>maincpu.mw@B586 = FB1E</action>
            <action>maincpu.mw@B5C0 = FAE4</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@E7C9 = 01</action>
        </script>
        <script state="off">
            <action>maincpu.mb@E7C9 = 40</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x0001">01 (slow)</item>
            <item value="0x0002">02       </item>
            <item value="0x0006">03       </item>
            <item value="0x000a">04       </item>
            <item value="0x000e">05 (slow)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mw@9AEE = 303C</action> <!-- P1 right -->
            <action>maincpu.mw@9B1E = 303C</action> <!-- P1 left -->
            <action>maincpu.mw@9B5A = 303C</action> <!-- P2 right -->
            <action>maincpu.mw@9B88 = 303C</action> <!-- P2 left -->
            <action>maincpu.mw@DBD4 = 303C</action> <!-- up -->
            <action>maincpu.mw@DC0E = 303C</action> <!-- down -->
        </script>
        <script state="change">
            <action>maincpu.mw@9AF0 = param</action>
            <action>maincpu.mw@9B20 = param</action>
            <action>maincpu.mw@9B5C = param</action>
            <action>maincpu.mw@9B8A = param</action>
            <action>maincpu.mw@DBD6 = param</action>
            <action>maincpu.mw@DC10 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@9AEE = 06400002</action>
            <action>maincpu.md@9B1E = 06400002</action>
            <action>maincpu.md@9B5A = 06400002</action>
            <action>maincpu.md@9B88 = 06400002</action>
            <action>maincpu.md@DBD4 = 06400002</action>
            <action>maincpu.md@DC0E = 06400002</action>
        </script>
    </cheat>

    <cheat desc="bullet speed (test)">
        <parameter min="0x01" max="0x05" step="0x01" />
        <script state="on">
            <action>maincpu.md@0D71C = 00040000        </action> <!-- P1 -->
            <action>maincpu.md@0D750 = 00040000        </action> <!-- P2 -->
            <action>maincpu.mq@40000 = 700048E782024EB9</action>
            <action>maincpu.mq@40008 = 0000E81E4CDF4041</action>
            <action>maincpu.mq@40010 = 51C8FFF04E75FFFF</action>
            <!--
            40000 | 70xx           : moveq   #$xx, D0
            40002 | 48E7 8202      : movem.l D0/D6/A6, -(A7)
            40006 | 4EB9 0000 E81E : jsr     $e81e.l
            4000C | 4CDF 4041      : movem.l (A7)+, D0/D6/A6
            40010 | 51C8 FFF0      : dbra    D0, $40002
            40014 | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@40001 = param - 1</action>
        </script>
        <script state="off">
            <action>maincpu.md@0D71C = 0000E81E        </action>
            <action>maincpu.md@0D750 = 0000E81E        </action>
            <action>maincpu.mq@40000 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40008 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40010 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="max bullets up">
        <script state="on">
            <action>maincpu.mb@EFB2 = 60</action> <!-- blue -->
            <action>maincpu.mb@F3A8 = 60</action> <!-- green -->
            <action>maincpu.mb@FE38 = 60</action> <!-- red -->
        </script>
        <script state="off">
            <action>maincpu.mb@EFB2 = 67</action>
            <action>maincpu.mb@F3A8 = 67</action>
            <action>maincpu.mb@FE38 = 67</action>
        </script>
    </cheat>

    <cheat desc="max missiles up">
        <script state="on">
            <action>maincpu.mb@F754 = 60</action> <!-- "H" -->
            <action>maincpu.mb@FB80 = 60</action> <!-- "M" -->
        </script>
        <script state="off">
            <action>maincpu.mb@F754 = 67</action>
            <action>maincpu.mb@FB80 = 67</action>
        </script>
    </cheat>

    <cheat desc="hidden character finder">
        <script state="on">
            <action>maincpu.mb@204AF = 0A</action>
        </script>
        <script state="off">
            <action>maincpu.mb@204AF = 96</action>
        </script>
    </cheat>

    <cheat desc="short hit mark">
        <script state="on">
            <!-- shot -->
            <action>maincpu.mb@F329 = 01</action>
            <action>maincpu.mb@F34E = 60</action>
            <!-- missile -->
            <action>maincpu.mb@FD83 = 01</action>
            <action>maincpu.mb@FDA8 = 60</action>
        </script>
        <script state="off">
            <action>maincpu.mb@F329 = 03</action>
            <action>maincpu.mb@F34E = 67</action>
            <action>maincpu.mb@FD83 = 03</action>
            <action>maincpu.mb@FDA8 = 67</action>
        </script>
    </cheat>

    <cheat desc="1 hit kill (test)">
        <script state="on">
            <action>maincpu.mb@AFB3 = 7F</action> <!-- P1 air -->
            <action>maincpu.mb@AFF9 = 7F</action> <!-- P2 air -->
            <action>maincpu.mb@B259 = 7F</action> <!-- P1 ground -->
            <action>maincpu.mb@B29F = 7F</action> <!-- P2 ground -->
        </script>
        <script state="off">
            <action>maincpu.mb@AFB3 = 01</action>
            <action>maincpu.mb@AFF9 = 01</action>
            <action>maincpu.mb@B259 = 01</action>
            <action>maincpu.mb@B29F = 01</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@00A14 = 4EF9000400204298</action>
            <action>maincpu.mq@40020 = 46FC200043E80100</action>
            <action>maincpu.mq@40028 = 45F900E000011401</action>
            <action>maincpu.mq@40030 = 12280009B40167F6</action>
            <action>maincpu.mq@40038 = 0C0100FB66025311</action>
            <action>maincpu.mq@40040 = 0C0100F766025211</action>
            <action>maincpu.mq@40048 = 0C0100FD66040411</action>
            <action>maincpu.mq@40050 = 00100C0100FE6604</action>
            <action>maincpu.mq@40058 = 061100100C0100EF</action>
            <action>maincpu.mq@40060 = 6608101100000080</action>
            <action>maincpu.mq@40068 = 14800C0100DF6604</action>
            <action>maincpu.mq@40070 = 14BC008060B8FFFF</action>
            <!--
            40020 | 46FC 2000      : move   #$2000,SR    // enable interrupt
            40024 | 43E8 0100      : lea    ($100,A0),A1 // sound code address ($700100)
            40028 | 45F9 00E0 0001 : lea    $e00001.l,A2 // sound latch address
            4002E | 1401           : move.b D1,D2
            40030 | 1228 0009      : move.b ($9,A0),D1   // read input
            40034 | B401           : cmp.b  D1,D2
            40036 | 67F6           : beq    $4002e
            40038 | 0C01 00FB      : cmpi.b #-$5,D1
            4003C | 6602           : bne    $40040
            4003E | 5311           : subq.b #1,(A1)      // decrease code -01
            40040 | 0C01 00F7      : cmpi.b #-$9,D1
            40044 | 6602           : bne    $40048
            40046 | 5211           : addq.b #1,(A1)      // increase code +01
            40048 | 0C01 00FD      : cmpi.b #-$3,D1
            4004C | 6604           : bne    $40052
            4004E | 0411 0010      : subi.b #$10,(A1)    // decrease code -10
            40052 | 0C01 00FE      : cmpi.b #-$2,D1
            40056 | 6604           : bne    $4005c
            40058 | 0611 0010      : addi.b #$10,(A1)    // increase code +10
            4005C | 0C01 00EF      : cmpi.b #-$11,D1
            40060 | 6608           : bne    $4006a
            40062 | 1011           : move.b (A1),D0      // play sound
            40064 | 0000 0080      : ori.b  #$80,D0
            40068 | 1480           : move.b D0,(A2)
            4006A | 0C01 00DF      : cmpi.b #-$21,D1
            4006E | 6604           : bne    $40074
            40070 | 14BC 0080      : move.b #$80,(A2)    // stop sound
            40074 | 60B8           : bra    $4002e
            -->
        </script>
        <script state="run">
            <output format="----- sand scorpion 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@700100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@00A14 = 323C0FF042984298</action>
            <action>maincpu.mq@40020 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40028 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40030 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40038 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40040 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40048 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40050 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40058 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40060 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40068 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40070 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

</mamecheat>
sandscrpb.xml

Code: Select all

<!-- Kuai Da Shizi Huangdi (China?, Revised Hardware) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mw@B0B4 = 00E2</action> <!-- P1 enemy -->
            <action>maincpu.mw@B0F2 = 00A4</action> <!-- P2 enemy -->
            <action>maincpu.mw@B41A = FD7C</action> <!-- P1 bullet -->
            <action>maincpu.mw@B452 = FD44</action> <!-- P2 bullet -->
            <action>maincpu.mw@B602 = FB94</action> <!-- P1 laser -->
            <action>maincpu.mw@B63C = FB5A</action> <!-- P2 laser -->
        </script>
        <script state="off">
            <action>maincpu.mw@B0B4 = 006C</action>
            <action>maincpu.mw@B0F2 = 002E</action>
            <action>maincpu.mw@B41A = FD06</action>
            <action>maincpu.mw@B452 = FCCE</action>
            <action>maincpu.mw@B602 = FB1E</action>
            <action>maincpu.mw@B63C = FAE4</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@E83D = 01</action>
        </script>
        <script state="off">
            <action>maincpu.mb@E83D = 40</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x0001">01 (slow)</item>
            <item value="0x0002">02       </item>
            <item value="0x0006">03       </item>
            <item value="0x000a">04       </item>
            <item value="0x000e">05 (slow)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mw@9B16 = 303C</action> <!-- P1 right -->
            <action>maincpu.mw@9B46 = 303C</action> <!-- P1 left -->
            <action>maincpu.mw@9B82 = 303C</action> <!-- P2 right -->
            <action>maincpu.mw@9BB0 = 303C</action> <!-- P2 left -->
            <action>maincpu.mw@DC48 = 303C</action> <!-- up -->
            <action>maincpu.mw@DC82 = 303C</action> <!-- down -->
        </script>
        <script state="change">
            <action>maincpu.mw@9B18 = param</action>
            <action>maincpu.mw@9B48 = param</action>
            <action>maincpu.mw@9B84 = param</action>
            <action>maincpu.mw@9BB2 = param</action>
            <action>maincpu.mw@DC4A = param</action>
            <action>maincpu.mw@DC84 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@9B16 = 06400002</action>
            <action>maincpu.md@9B46 = 06400002</action>
            <action>maincpu.md@9B82 = 06400002</action>
            <action>maincpu.md@9BB0 = 06400002</action>
            <action>maincpu.md@DC48 = 06400002</action>
            <action>maincpu.md@DC82 = 06400002</action>
        </script>
    </cheat>

    <cheat desc="bullet speed (test)">
        <parameter min="0x01" max="0x05" step="0x01" />
        <script state="on">
            <action>maincpu.md@0D790 = 00040000        </action> <!-- P1 -->
            <action>maincpu.md@0D7C4 = 00040000        </action> <!-- P2 -->
            <action>maincpu.mq@40000 = 700048E782024EB9</action>
            <action>maincpu.mq@40008 = 0000E8924CDF4041</action>
            <action>maincpu.mq@40010 = 51C8FFF04E75FFFF</action>
            <!--
            40000 | 70xx           : moveq   #$xx, D0
            40002 | 48E7 8202      : movem.l D0/D6/A6, -(A7)
            40006 | 4EB9 0000 E892 : jsr     $e892.l
            4000C | 4CDF 4041      : movem.l (A7)+, D0/D6/A6
            40010 | 51C8 FFF0      : dbra    D0, $40002
            40014 | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@40001 = param - 1</action>
        </script>
        <script state="off">
            <action>maincpu.md@0D790 = 0000E892        </action>
            <action>maincpu.md@0D7C4 = 0000E892        </action>
            <action>maincpu.mq@40000 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40008 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40010 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="max bullets up">
        <script state="on">
            <action>maincpu.mb@F026 = 60</action> <!-- blue -->
            <action>maincpu.mb@F41C = 60</action> <!-- green -->
            <action>maincpu.mb@FEAC = 60</action> <!-- red -->
        </script>
        <script state="off">
            <action>maincpu.mb@F026 = 67</action>
            <action>maincpu.mb@F41C = 67</action>
            <action>maincpu.mb@FEAC = 67</action>
        </script>
    </cheat>

    <cheat desc="max missiles up">
        <script state="on">
            <action>maincpu.mb@F7C8 = 60</action> <!-- "H" -->
            <action>maincpu.mb@FBF4 = 60</action> <!-- "M" -->
        </script>
        <script state="off">
            <action>maincpu.mb@F7C8 = 67</action>
            <action>maincpu.mb@FBF4 = 67</action>
        </script>
    </cheat>

    <cheat desc="hidden character finder">
        <script state="on">
            <action>maincpu.mb@20523 = 0A</action>
        </script>
        <script state="off">
            <action>maincpu.mb@20523 = 96</action>
        </script>
    </cheat>

    <cheat desc="short hit mark">
        <script state="on">
            <!-- shot -->
            <action>maincpu.mb@F39D = 01</action>
            <action>maincpu.mb@F3C2 = 60</action>
            <!-- missile -->
            <action>maincpu.mb@FDF7 = 01</action>
            <action>maincpu.mb@FE1C = 60</action>
        </script>
        <script state="off">
            <action>maincpu.mb@F39D = 03</action>
            <action>maincpu.mb@F3C2 = 67</action>
            <action>maincpu.mb@FDF7 = 03</action>
            <action>maincpu.mb@FE1C = 67</action>
        </script>
    </cheat>

    <cheat desc="1 hit kill (test)">
        <script state="on">
            <action>maincpu.mb@B02F = 7F</action> <!-- P1 air -->
            <action>maincpu.mb@B075 = 7F</action> <!-- P2 air -->
            <action>maincpu.mb@B2D5 = 7F</action> <!-- P1 ground -->
            <action>maincpu.mb@B31B = 7F</action> <!-- P2 ground -->
        </script>
        <script state="off">
            <action>maincpu.mb@B02F = 01</action>
            <action>maincpu.mb@B075 = 01</action>
            <action>maincpu.mb@B2D5 = 01</action>
            <action>maincpu.mb@B31B = 01</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@00A14 = 4EF9000400204298</action>
            <action>maincpu.mq@40020 = 46FC200043E80100</action>
            <action>maincpu.mq@40028 = 45F900E000011401</action>
            <action>maincpu.mq@40030 = 12280009B40167F6</action>
            <action>maincpu.mq@40038 = 0C0100FB66025311</action>
            <action>maincpu.mq@40040 = 0C0100F766025211</action>
            <action>maincpu.mq@40048 = 0C0100FD66040411</action>
            <action>maincpu.mq@40050 = 00100C0100FE6604</action>
            <action>maincpu.mq@40058 = 061100100C0100EF</action>
            <action>maincpu.mq@40060 = 6608101100000080</action>
            <action>maincpu.mq@40068 = 14800C0100DF6604</action>
            <action>maincpu.mq@40070 = 14BC008060B8FFFF</action>
            <!--
            40020 | 46FC 2000      : move   #$2000,SR    // enable interrupt
            40024 | 43E8 0100      : lea    ($100,A0),A1 // sound code address ($700100)
            40028 | 45F9 00E0 0001 : lea    $e00001.l,A2 // sound latch address
            4002E | 1401           : move.b D1,D2
            40030 | 1228 0009      : move.b ($9,A0),D1   // read input
            40034 | B401           : cmp.b  D1,D2
            40036 | 67F6           : beq    $4002e
            40038 | 0C01 00FB      : cmpi.b #-$5,D1
            4003C | 6602           : bne    $40040
            4003E | 5311           : subq.b #1,(A1)      // decrease code -01
            40040 | 0C01 00F7      : cmpi.b #-$9,D1
            40044 | 6602           : bne    $40048
            40046 | 5211           : addq.b #1,(A1)      // increase code +01
            40048 | 0C01 00FD      : cmpi.b #-$3,D1
            4004C | 6604           : bne    $40052
            4004E | 0411 0010      : subi.b #$10,(A1)    // decrease code -10
            40052 | 0C01 00FE      : cmpi.b #-$2,D1
            40056 | 6604           : bne    $4005c
            40058 | 0611 0010      : addi.b #$10,(A1)    // increase code +10
            4005C | 0C01 00EF      : cmpi.b #-$11,D1
            40060 | 6608           : bne    $4006a
            40062 | 1011           : move.b (A1),D0      // play sound
            40064 | 0000 0080      : ori.b  #$80,D0
            40068 | 1480           : move.b D0,(A2)
            4006A | 0C01 00DF      : cmpi.b #-$21,D1
            4006E | 6604           : bne    $40074
            40070 | 14BC 0080      : move.b #$80,(A2)    // stop sound
            40074 | 60B8           : bra    $4002e
            -->
        </script>
        <script state="run">
            <output format="----- kuai da shizi huangdi 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@700100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@00A14 = 323C0FF042984298</action>
            <action>maincpu.mq@40020 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40028 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40030 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40038 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40040 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40048 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40050 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40058 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40060 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40068 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@40070 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

</mamecheat>
  • "no hit" : Merge two codes into one.
  • "bullet speed" : Rewrite routine though test code. Now "red" weapon and missiles get speed up.
  • "hidden character finder", "short hit mark" : Add new.
  • "1 hit kill" : Add new as test code.
  • "sound test mode" : Rewrite routine.
Post Reply