[gunball] Nitro Ball/Gun Ball

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: 850
Joined: Tue Dec 01, 2020 1:24 pm

[gunball] Nitro Ball/Gun Ball

Post by jman »

Code: Select all

<cheat desc="no hit">
    <script state="on">
        <action>maincpu.mq@01a3e6 = 4eb9001000006512</action>
        <action>maincpu.mq@100000 = b1fc00fec6e06e10</action>
        <action>maincpu.mq@100008 = 0c29001000066508</action>
        <action>maincpu.mq@100010 = 0c68000c00206f08</action>
        <action>maincpu.mq@100018 = 4eb90001a47e4e75</action>
        <action>maincpu.mq@100020 = 027cfffe4e750000</action>
        <!--
        100000 | b1fc 00fe c6e0 : cmpa.l #$fec6e0,A0  // check player or bullet
        100006 | 6e10           : bgt    $100018
        100008 | 0c29 0010 0006 : cmpi.b #$10,($6,A1) // check target is enemy or gate
        10000e | 6508           : bcs    $100018
        100010 | 0c68 000c 0020 : cmpi.w #$c,($20,A0) // check current status is ball
        100016 | 6f08           : ble    $100020
        100018 | 4eb9 0001 a47e : jsr    $1a47e.l     // call collision check
        10001e | 4e75           : rts
        100020 | 027c fffe      : andi   #$fffe,SR    // no hit
        100024 | 4e75           : rts
        -->
    </script>
    <script state="off">
        <action>maincpu.mq@01a3e6 = 4eba00964e716512</action>
        <action>maincpu.mq@100000 = 0000000000000000</action>
        <action>maincpu.mq@100008 = 0000000000000000</action>
        <action>maincpu.mq@100010 = 0000000000000000</action>
        <action>maincpu.mq@100018 = 0000000000000000</action>
        <action>maincpu.mq@100020 = 0000000000000000</action>
    </script>
</cheat>

<cheat desc="auto fire">
    <script state="on">
        <action>maincpu.mb@c90d = 30</action> <!-- normal shot -->
        <action>maincpu.mb@c9cb = 30</action> <!-- missile launcher -->
        <action>maincpu.mb@ca4f = 30</action> <!-- ring laser -->
        <action>maincpu.mb@cb29 = 30</action> <!-- flame thrower -->
        <action>maincpu.mb@cba9 = 30</action> <!-- rail blaster -->
    </script>
    <script state="off">
        <action>maincpu.mb@c90d = 31</action>
        <action>maincpu.mb@c9cb = 31</action>
        <action>maincpu.mb@ca4f = 31</action>
        <action>maincpu.mb@cb29 = 31</action>
        <action>maincpu.mb@cba9 = 31</action>
    </script>
</cheat>

<cheat desc="walk through wall">
    <script state="on">
        <action>maincpu.mw@7efe = 4e71</action> <!-- x position -->
        <action>maincpu.mw@7f3a = 4e71</action> <!-- y position -->
    </script>
    <script state="off">
        <action>maincpu.mw@7efe = 660a</action>
        <action>maincpu.mw@7f3a = 660a</action>
    </script>
</cheat>

<cheat desc="player speed">
    <parameter>
        <item value="0x00008000">01 (slow)</item>
        <item value="0x00018000">02       </item>
        <item value="0x00028000">03       </item>
        <item value="0x00038000">04       </item>
        <item value="0x00048000">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.mq@007f00 = 4eb9001000304e71</action> <!-- x position -->
        <action>maincpu.mq@007f3c = 4eb9001000484e71</action> <!-- y position -->
        <action>maincpu.mq@100030 = 223c000000002028</action>
        <action>maincpu.mq@100038 = 002867066a024481</action>
        <action>maincpu.mq@100040 = 2001d1a800084e75</action>
        <action>maincpu.mq@100048 = 223c000000002028</action>
        <action>maincpu.mq@100050 = 002c67066a024481</action>
        <action>maincpu.mq@100058 = 2001d1a8000c4e75</action>
        <!--
        100030 | 223c xxxx xxxx : move.l #$xxxx,D1   // x position
        100036 | 2028 0028      : move.l ($28,A0),D0
        10003a | 6706           : beq    $100042
        10003c | 6a02           : bpl    $100040
        10003e | 4481           : neg.l  D1
        100040 | 2001           : move.l D1,D0
        100042 | d1a8 0008      : add.l  D0,($8,A0)
        100046 | 4e75           : rts
        100048 | 223c xxxx xxxx : move.l #$xxxx,D1   // y position
        10004e | 2028 002c      : move.l ($2c,A0),D0
        100052 | 6706           : beq    $10005a
        100054 | 6a02           : bpl    $100058
        100056 | 4481           : neg.l  D1
        100058 | 2001           : move.l D1,D0
        10005a | d1a8 000c      : add.l  D0,($c,A0)
        10005e | 4e75           : rts
        -->
    </script>
    <script state="change">
        <action>maincpu.md@100032 = param</action>
        <action>maincpu.md@10004a = param</action>
    </script>
    <script state="off">
        <action>maincpu.mq@007f00 = 20280028d1a80008</action>
        <action>maincpu.mq@007f3c = 2028002cd1a8000c</action>
        <action>maincpu.mq@100030 = 0000000000000000</action>
        <action>maincpu.mq@100038 = 0000000000000000</action>
        <action>maincpu.mq@100040 = 0000000000000000</action>
        <action>maincpu.mq@100048 = 0000000000000000</action>
        <action>maincpu.mq@100050 = 0000000000000000</action>
        <action>maincpu.mq@100058 = 0000000000000000</action>
    </script>
</cheat>

<cheat desc="timer speed">
    <parameter>
        <item value="0x0100">01 (slow)</item>
        <item value="0x0080">02       </item>
        <item value="0x003c">03       </item>
        <item value="0x0010">04       </item>
        <item value="0x0000">05 (fast)</item>
    </parameter>
    <script state="change">
        <action>maincpu.mw@08cb2 = param</action> <!-- main timer -->
        <action>maincpu.mw@1bf9e = param</action> <!-- event timer (level 2) -->
        <action>maincpu.mw@1c412 = param</action> <!-- event timer (level 1) -->
        <action>maincpu.mw@1c6a4 = param</action> <!-- event timer (level 4) -->
        <action>maincpu.mw@1c958 = param</action> <!-- event timer (level 3-2) -->
        <action>maincpu.mw@1cb02 = param</action> <!-- event timer (level 5) -->
        <action>maincpu.mw@2f7a6 = param</action> <!-- event timer (level 2) initialize -->
        <action>maincpu.mw@3045c = param</action> <!-- event timer (level 1) initialize -->
        <action>maincpu.mw@310da = param</action> <!-- event timer (level 4) initialize -->
        <action>maincpu.mw@31d86 = param</action> <!-- event timer (level 3-2) initialize -->
        <action>maincpu.mw@32a34 = param</action> <!-- event timer (level 5) initialize -->
        <action>maincpu.mw@660ec = param</action> <!-- event timer (level 3-1) initialize -->
        <action>maincpu.mw@6611c = param</action> <!-- event timer (level 3-1) -->
    </script>
    <script state="off">
        <action>maincpu.mw@08cb2 = 003c</action>
        <action>maincpu.mw@1bf9e = 003a</action>
        <action>maincpu.mw@1c412 = 003a</action>
        <action>maincpu.mw@1c6a4 = 003a</action>
        <action>maincpu.mw@1c958 = 003a</action>
        <action>maincpu.mw@1cb02 = 003a</action>
        <action>maincpu.mw@2f7a6 = 003a</action>
        <action>maincpu.mw@3045c = 003a</action>
        <action>maincpu.mw@310da = 003a</action>
        <action>maincpu.mw@31d86 = 003a</action>
        <action>maincpu.mw@32a34 = 003a</action>
        <action>maincpu.mw@660ec = 003a</action>
        <action>maincpu.mw@6611c = 003a</action>
    </script>
</cheat>

<cheat desc="weapon timer speed">
    <parameter>
        <item value="0x0100">01 (slow)</item>
        <item value="0x0080">02       </item>
        <item value="0x003c">03       </item>
        <item value="0x0010">04       </item>
        <item value="0x0000">05 (fast)</item>
    </parameter>
    <script state="change">
        <action>maincpu.mw@0a616 = param</action> <!-- main -->
        <action>maincpu.mw@1ba98 = param</action> <!-- initialize -->
    </script>
    <script state="off">
        <action>maincpu.mw@0a616 = 003a</action>
        <action>maincpu.mw@1ba98 = 003a</action>
    </script>
</cheat>

<cheat desc="sound test mode (test)">
    <comment>reset the game (F3) to enter sound test mode</comment>
    <script state="on">
        <action>maincpu.mq@07bed4 = 4ef9001000004e71</action>
        <action>maincpu.mq@100060 = 41f900fec01043f9</action>
        <action>maincpu.mq@100068 = 00ff426112001029</action>
        <action>maincpu.mq@100070 = 0322b20067f60c00</action>
        <action>maincpu.mq@100078 = 00fb660253100c00</action>
        <action>maincpu.mq@100080 = 00f7660252100c00</action>
        <action>maincpu.mq@100088 = 00fd660404100010</action>
        <action>maincpu.mq@100090 = 0c0000fe66040610</action>
        <action>maincpu.mq@100098 = 00100c0000ef6602</action>
        <action>maincpu.mq@1000a0 = 12900c0000df6602</action>
        <action>maincpu.mq@1000a8 = 421160c000000000</action>
        <!--
        100060 | 41f9 00fe c010 : lea    $fec010.l,A0 // sound code address
        100066 | 43f9 00ff 4261 : lea    $ff4261.l,A1 // sound latch address
        10006c | 1200           : move.b D0,D1
        10006e | 1029 0322      : move.b ($322,A1),D0 // read input
        100072 | b200           : cmp.b  D0,D1
        100074 | 67f6           : beq    $10006c
        100076 | 0c00 00fb      : cmpi.b #-$5,D0
        10007a | 6602           : bne    $10007e
        10007c | 5310           : subq.b #1,(A0)      // decrease code -01
        10007e | 0c00 00f7      : cmpi.b #-$9,D0
        100082 | 6602           : bne    $100086
        100084 | 5210           : addq.b #1,(A0)      // increase code +01
        100086 | 0c00 00fd      : cmpi.b #-$3,D0
        10008a | 6604           : bne    $100090
        10008c | 0410 0010      : subi.b #$10,(A0)    // decrease code -10
        100090 | 0c00 00fe      : cmpi.b #-$2,D0
        100094 | 6604           : bne    $10009a
        100096 | 0610 0010      : addi.b #$10,(A0)    // increase code +10
        10009a | 0c00 00ef      : cmpi.b #-$11,D0
        10009e | 6602           : bne    $1000a2
        1000a0 | 1290           : move.b (A0),(A1)    // play sound
        1000a2 | 0c00 00df      : cmpi.b #-$21,D0
        1000a6 | 6602           : bne    $1000aa
        1000a8 | 4211           : clr.b  (A1)         // stop sound
        1000aa | 60c0           : bra    $10006c
        -->
    </script>
    <script state="run">
        <output format="----- gun ball 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@fec010</argument>
        </output>
    </script>
    <script state="off">
        <action>maincpu.mq@07bed4 = 33fcd02000ff2d58</action>
        <action>maincpu.mq@100060 = 0000000000000000</action>
        <action>maincpu.mq@100068 = 0000000000000000</action>
        <action>maincpu.mq@100070 = 0000000000000000</action>
        <action>maincpu.mq@100078 = 0000000000000000</action>
        <action>maincpu.mq@100080 = 0000000000000000</action>
        <action>maincpu.mq@100088 = 0000000000000000</action>
        <action>maincpu.mq@100090 = 0000000000000000</action>
        <action>maincpu.mq@100098 = 0000000000000000</action>
        <action>maincpu.mq@1000a0 = 0000000000000000</action>
        <action>maincpu.mq@1000a8 = 0000000000000000</action>
    </script>
</cheat>
"sound test mode" is test code because noisy sound is played when you try to stop music by "sound stop" button.
jman
Posts: 850
Joined: Tue Dec 01, 2020 1:24 pm

[nitrobal]+ Nitro Ball/Gun Ball

Post by jman »

nitrobal.xml

Code: Select all

<!-- Nitro Ball (World, set 1) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mq@01A370 = 4EB9001000006512</action>
            <action>maincpu.mq@100000 = B1FC00FEC6E06E10</action>
            <action>maincpu.mq@100008 = 0C29001000066508</action>
            <action>maincpu.mq@100010 = 0C68000C00206F08</action>
            <action>maincpu.mq@100018 = 4EB90001A4084E75</action>
            <action>maincpu.mq@100020 = 027CFFFE4E750000</action>
            <!--
            100000 | B1FC 00FE C6E0 : cmpa.l  #$fec6e0, A0  // player or bullet?
            100006 | 6E10           : bgt     $100018
            100008 | 0C29 0010 0006 : cmpi.b  #$10, ($6,A1) // is target enemy or gate?
            10000E | 6508           : bcs     $100018
            100010 | 0C68 000C 0020 : cmpi.w  #$c, ($20,A0) // is current status ball?
            100016 | 6F08           : ble     $100020
            100018 | 4EB9 0001 A408 : jsr     $1a408.l      // call collision check
            10001E | 4E75           : rts
            100020 | 027C FFFE      : andi    #$fffe, SR    // no hit
            100024 | 4E75           : rts
            -->
        </script>
        <script state="off">
            <action>maincpu.mq@01A370 = 4EBA00964E716512</action>
            <action>maincpu.mq@100000 = 0000000000000000</action>
            <action>maincpu.mq@100008 = 0000000000000000</action>
            <action>maincpu.mq@100010 = 0000000000000000</action>
            <action>maincpu.mq@100018 = 0000000000000000</action>
            <action>maincpu.mq@100020 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@C8C7 = 30</action> <!-- normal shot -->
            <action>maincpu.mb@C985 = 30</action> <!-- missile launcher -->
            <action>maincpu.mb@CA09 = 30</action> <!-- ring laser -->
            <action>maincpu.mb@CAE3 = 30</action> <!-- flame thrower -->
            <action>maincpu.mb@CB63 = 30</action> <!-- rail blaster -->
        </script>
        <script state="off">
            <action>maincpu.mb@C8C7 = 31</action>
            <action>maincpu.mb@C985 = 31</action>
            <action>maincpu.mb@CA09 = 31</action>
            <action>maincpu.mb@CAE3 = 31</action>
            <action>maincpu.mb@CB63 = 31</action>
        </script>
    </cheat>

    <cheat desc="walk through wall">
        <script state="on">
            <action>maincpu.mw@7EB8 = 4E71</action> <!-- x position -->
            <action>maincpu.mw@7EF4 = 4E71</action> <!-- y position -->
        </script>
        <script state="off">
            <action>maincpu.mw@7EB8 = 660A</action>
            <action>maincpu.mw@7EF4 = 660A</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x00008000">01 (slow)</item>
            <item value="0x00018000">02       </item>
            <item value="0x00028000">03       </item>
            <item value="0x00038000">04       </item>
            <item value="0x00048000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@007EBA = 4EB9001000304E71</action> <!-- x position -->
            <action>maincpu.mq@007EF6 = 4EB9001000484E71</action> <!-- y position -->
            <action>maincpu.mq@100030 = 223C000000002028</action>
            <action>maincpu.mq@100038 = 002867066A024481</action>
            <action>maincpu.mq@100040 = 2001D1A800084E75</action>
            <action>maincpu.mq@100048 = 223C000000002028</action>
            <action>maincpu.mq@100050 = 002C67066A024481</action>
            <action>maincpu.mq@100058 = 2001D1A8000C4E75</action>
            <!--
            100030 | 223C xxxx xxxx : move.l  #$xxxx, D1   // x position
            100036 | 2028 0028      : move.l  ($28,A0), D0
            10003A | 6706           : beq     $100042
            10003C | 6A02           : bpl     $100040
            10003E | 4481           : neg.l   D1
            100040 | 2001           : move.l  D1, D0
            100042 | D1A8 0008      : add.l   D0, ($8,A0)
            100046 | 4E75           : rts
            100048 | 223C xxxx xxxx : move.l  #$xxxx, D1   // y position
            10004E | 2028 002C      : move.l  ($2c,A0), D0
            100052 | 6706           : beq     $10005a
            100054 | 6A02           : bpl     $100058
            100056 | 4481           : neg.l   D1
            100058 | 2001           : move.l  D1, D0
            10005A | D1A8 000C      : add.l   D0, ($c,A0)
            10005E | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@100032 = param</action>
            <action>maincpu.md@10004A = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@007EBA = 20280028D1A80008</action>
            <action>maincpu.mq@007EF6 = 2028002CD1A8000C</action>
            <action>maincpu.mq@100030 = 0000000000000000</action>
            <action>maincpu.mq@100038 = 0000000000000000</action>
            <action>maincpu.mq@100040 = 0000000000000000</action>
            <action>maincpu.mq@100048 = 0000000000000000</action>
            <action>maincpu.mq@100050 = 0000000000000000</action>
            <action>maincpu.mq@100058 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0x0100">01 (slow)</item>
            <item value="0x0080">02       </item>
            <item value="0x003c">03       </item>
            <item value="0x0010">04       </item>
            <item value="0x0000">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mw@08C6C = param</action> <!-- main timer -->
            <action>maincpu.mw@1BF5A = param</action> <!-- event timer (level 1) -->
            <action>maincpu.mw@1C3CE = param</action> <!-- event timer (level 2) -->
            <action>maincpu.mw@1C660 = param</action> <!-- event timer (level 4) -->
            <action>maincpu.mw@1C914 = param</action> <!-- event timer (level 3-2) -->
            <action>maincpu.mw@1CABE = param</action> <!-- event timer (level 5) -->
            <action>maincpu.mw@2F864 = param</action> <!-- event timer (level 1) initialize -->
            <action>maincpu.mw@30610 = param</action> <!-- event timer (level 2) initialize -->
            <action>maincpu.mw@31384 = param</action> <!-- event timer (level 4) initialize -->
            <action>maincpu.mw@32126 = param</action> <!-- event timer (level 3-2) initialize -->
            <action>maincpu.mw@32ECA = param</action> <!-- event timer (level 5) initialize -->
            <action>maincpu.mw@65B92 = param</action> <!-- event timer (level 3-1) initialize -->
            <action>maincpu.mw@65BC2 = param</action> <!-- event timer (level 3-1) -->
        </script>
        <script state="off">
            <action>maincpu.mw@08C6C = 003C</action>
            <action>maincpu.mw@1BF5A = 003A</action>
            <action>maincpu.mw@1C3CE = 003A</action>
            <action>maincpu.mw@1C660 = 003A</action>
            <action>maincpu.mw@1C914 = 003A</action>
            <action>maincpu.mw@1CABE = 003A</action>
            <action>maincpu.mw@2F864 = 003A</action>
            <action>maincpu.mw@30610 = 003A</action>
            <action>maincpu.mw@31384 = 003A</action>
            <action>maincpu.mw@32126 = 003A</action>
            <action>maincpu.mw@32ECA = 003A</action>
            <action>maincpu.mw@65B92 = 003A</action>
            <action>maincpu.mw@65BC2 = 003A</action>
        </script>
    </cheat>

    <cheat desc="weapon timer speed">
        <parameter>
            <item value="0x0100">01 (slow)</item>
            <item value="0x0080">02       </item>
            <item value="0x003c">03       </item>
            <item value="0x0010">04       </item>
            <item value="0x0000">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mw@0A5D0 = param</action> <!-- main -->
            <action>maincpu.mw@1BA28 = param</action> <!-- initialize -->
        </script>
        <script state="off">
            <action>maincpu.mw@0A5D0 = 003A</action>
            <action>maincpu.mw@1BA28 = 003A</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@000A58 = 4EF9001000604E71</action>
            <action>maincpu.mq@100060 = 41F900FEC00043F9</action>
            <action>maincpu.mq@100068 = 00FF426112001029</action>
            <action>maincpu.mq@100070 = 0322B20067F60C00</action>
            <action>maincpu.mq@100078 = 00FB660253100C00</action>
            <action>maincpu.mq@100080 = 00F7660252100C00</action>
            <action>maincpu.mq@100088 = 00FD660404100010</action>
            <action>maincpu.mq@100090 = 0C0000FE66040610</action>
            <action>maincpu.mq@100098 = 00100C0000EF6602</action>
            <action>maincpu.mq@1000A0 = 12900C0000DF6602</action>
            <action>maincpu.mq@1000A8 = 421160C000000000</action>
            <!--
            100060 | 41F9 00FE C000 : lea     $fec000.l, A0 // sound code address
            100066 | 43F9 00FF 4261 : lea     $ff4261.l, A1 // sound latch address
            10006C | 1200           : move.b  D0, D1
            10006E | 1029 0322      : move.b  ($322,A1), D0 // read input ($ff4583)
            100072 | B200           : cmp.b   D0, D1
            100074 | 67F6           : beq     $10006c
            100076 | 0C00 00FB      : cmpi.b  #-$5, D0
            10007A | 6602           : bne     $10007e
            10007C | 5310           : subq.b  #1, (A0)      // decrease code -01
            10007E | 0C00 00F7      : cmpi.b  #-$9, D0
            100082 | 6602           : bne     $100086
            100084 | 5210           : addq.b  #1, (A0)      // increase code +01
            100086 | 0C00 00FD      : cmpi.b  #-$3, D0
            10008A | 6604           : bne     $100090
            10008C | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            100090 | 0C00 00FE      : cmpi.b  #-$2, D0
            100094 | 6604           : bne     $10009a
            100096 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            10009A | 0C00 00EF      : cmpi.b  #-$11, D0
            10009E | 6602           : bne     $1000a2
            1000A0 | 1290           : move.b  (A0), (A1)    // play sound
            1000A2 | 0C00 00DF      : cmpi.b  #-$21, D0
            1000A6 | 6602           : bne     $1000aa
            1000A8 | 4211           : clr.b   (A1)          // stop sound
            1000AA | 60C0           : bra     $10006c
            -->
        </script>
        <script state="run">
            <output format="----- nitro ball 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@FEC000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@000A58 = 33FCFFFF00FEC020</action>
            <action>maincpu.mq@100060 = 0000000000000000</action>
            <action>maincpu.mq@100068 = 0000000000000000</action>
            <action>maincpu.mq@100070 = 0000000000000000</action>
            <action>maincpu.mq@100078 = 0000000000000000</action>
            <action>maincpu.mq@100080 = 0000000000000000</action>
            <action>maincpu.mq@100088 = 0000000000000000</action>
            <action>maincpu.mq@100090 = 0000000000000000</action>
            <action>maincpu.mq@100098 = 0000000000000000</action>
            <action>maincpu.mq@1000A0 = 0000000000000000</action>
            <action>maincpu.mq@1000A8 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>
nitrobala.xml

Code: Select all

<!-- Nitro Ball (World, set 2) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mq@01A320 = 4EB9001000006512</action>
            <action>maincpu.mq@100000 = B1FC00FEC6E06E10</action>
            <action>maincpu.mq@100008 = 0C29001000066508</action>
            <action>maincpu.mq@100010 = 0C68000C00206F08</action>
            <action>maincpu.mq@100018 = 4EB90001A3B84E75</action>
            <action>maincpu.mq@100020 = 027CFFFE4E750000</action>
            <!--
            100000 | B1FC 00FE C6E0 : cmpa.l  #$fec6e0, A0  // player or bullet?
            100006 | 6E10           : bgt     $100018
            100008 | 0C29 0010 0006 : cmpi.b  #$10, ($6,A1) // is target enemy or gate?
            10000E | 6508           : bcs     $100018
            100010 | 0C68 000C 0020 : cmpi.w  #$c, ($20,A0) // is current status ball?
            100016 | 6F08           : ble     $100020
            100018 | 4EB9 0001 A3B8 : jsr     $1a3b8.l      // call collision check
            10001E | 4E75           : rts
            100020 | 027C FFFE      : andi    #$fffe, SR    // no hit
            100024 | 4E75           : rts
            -->
        </script>
        <script state="off">
            <action>maincpu.mq@01A320 = 4EBA00964E716512</action>
            <action>maincpu.mq@100000 = 0000000000000000</action>
            <action>maincpu.mq@100008 = 0000000000000000</action>
            <action>maincpu.mq@100010 = 0000000000000000</action>
            <action>maincpu.mq@100018 = 0000000000000000</action>
            <action>maincpu.mq@100020 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@C8A7 = 30</action> <!-- normal shot -->
            <action>maincpu.mb@C965 = 30</action> <!-- missile launcher -->
            <action>maincpu.mb@C9E9 = 30</action> <!-- ring laser -->
            <action>maincpu.mb@CAC3 = 30</action> <!-- flame thrower -->
            <action>maincpu.mb@CB43 = 30</action> <!-- rail blaster -->
        </script>
        <script state="off">
            <action>maincpu.mb@C8A7 = 31</action>
            <action>maincpu.mb@C965 = 31</action>
            <action>maincpu.mb@C9E9 = 31</action>
            <action>maincpu.mb@CAC3 = 31</action>
            <action>maincpu.mb@CB43 = 31</action>
        </script>
    </cheat>

    <cheat desc="walk through wall">
        <script state="on">
            <action>maincpu.mw@7E78 = 4E71</action> <!-- x position -->
            <action>maincpu.mw@7EB4 = 4E71</action> <!-- y position -->
        </script>
        <script state="off">
            <action>maincpu.mw@7E78 = 660A</action>
            <action>maincpu.mw@7EB4 = 660A</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x00008000">01 (slow)</item>
            <item value="0x00018000">02       </item>
            <item value="0x00028000">03       </item>
            <item value="0x00038000">04       </item>
            <item value="0x00048000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@007E7A = 4EB9001000304E71</action> <!-- x position -->
            <action>maincpu.mq@007EB6 = 4EB9001000484E71</action> <!-- y position -->
            <action>maincpu.mq@100030 = 223C000000002028</action>
            <action>maincpu.mq@100038 = 002867066A024481</action>
            <action>maincpu.mq@100040 = 2001D1A800084E75</action>
            <action>maincpu.mq@100048 = 223C000000002028</action>
            <action>maincpu.mq@100050 = 002C67066A024481</action>
            <action>maincpu.mq@100058 = 2001D1A8000C4E75</action>
            <!--
            100030 | 223C xxxx xxxx : move.l  #$xxxx, D1   // x position
            100036 | 2028 0028      : move.l  ($28,A0), D0
            10003A | 6706           : beq     $100042
            10003C | 6A02           : bpl     $100040
            10003E | 4481           : neg.l   D1
            100040 | 2001           : move.l  D1, D0
            100042 | D1A8 0008      : add.l   D0, ($8,A0)
            100046 | 4E75           : rts
            100048 | 223C xxxx xxxx : move.l  #$xxxx, D1   // y position
            10004E | 2028 002C      : move.l  ($2c,A0), D0
            100052 | 6706           : beq     $10005a
            100054 | 6A02           : bpl     $100058
            100056 | 4481           : neg.l   D1
            100058 | 2001           : move.l  D1, D0
            10005A | D1A8 000C      : add.l   D0, ($c,A0)
            10005E | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@100032 = param</action>
            <action>maincpu.md@10004A = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@007E7A = 20280028D1A80008</action>
            <action>maincpu.mq@007EB6 = 2028002CD1A8000C</action>
            <action>maincpu.mq@100030 = 0000000000000000</action>
            <action>maincpu.mq@100038 = 0000000000000000</action>
            <action>maincpu.mq@100040 = 0000000000000000</action>
            <action>maincpu.mq@100048 = 0000000000000000</action>
            <action>maincpu.mq@100050 = 0000000000000000</action>
            <action>maincpu.mq@100058 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0x0100">01 (slow)</item>
            <item value="0x0080">02       </item>
            <item value="0x003c">03       </item>
            <item value="0x0010">04       </item>
            <item value="0x0000">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mw@08BEC = param</action> <!-- main timer -->
            <action>maincpu.mw@1BF0A = param</action> <!-- event timer (level 2) -->
            <action>maincpu.mw@1C37E = param</action> <!-- event timer (level 1) -->
            <action>maincpu.mw@1C610 = param</action> <!-- event timer (level 4) -->
            <action>maincpu.mw@1C8C4 = param</action> <!-- event timer (level 3-2) -->
            <action>maincpu.mw@1CA6E = param</action> <!-- event timer (level 5) -->
            <action>maincpu.mw@2F868 = param</action> <!-- event timer (level 2) initialize -->
            <action>maincpu.mw@30614 = param</action> <!-- event timer (level 1) initialize -->
            <action>maincpu.mw@31388 = param</action> <!-- event timer (level 4) initialize -->
            <action>maincpu.mw@3212A = param</action> <!-- event timer (level 3-2) initialize -->
            <action>maincpu.mw@32ECE = param</action> <!-- event timer (level 5) initialize -->
            <action>maincpu.mw@65B8C = param</action> <!-- event timer (level 3-1) initialize -->
            <action>maincpu.mw@65BBC = param</action> <!-- event timer (level 3-1) -->
        </script>
        <script state="off">
            <action>maincpu.mw@08BEC = 003C</action>
            <action>maincpu.mw@1BF0A = 003A</action>
            <action>maincpu.mw@1C37E = 003A</action>
            <action>maincpu.mw@1C610 = 003A</action>
            <action>maincpu.mw@1C8C4 = 003A</action>
            <action>maincpu.mw@1CA6E = 003A</action>
            <action>maincpu.mw@2F868 = 003A</action>
            <action>maincpu.mw@30614 = 003A</action>
            <action>maincpu.mw@31388 = 003A</action>
            <action>maincpu.mw@3212A = 003A</action>
            <action>maincpu.mw@32ECE = 003A</action>
            <action>maincpu.mw@65B8C = 003A</action>
            <action>maincpu.mw@65BBC = 003A</action>
        </script>
    </cheat>

    <cheat desc="weapon timer speed">
        <parameter>
            <item value="0x0100">01 (slow)</item>
            <item value="0x0080">02       </item>
            <item value="0x003c">03       </item>
            <item value="0x0010">04       </item>
            <item value="0x0000">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mw@0A550 = param</action> <!-- main -->
            <action>maincpu.mw@1B9D8 = param</action> <!-- initialize -->
        </script>
        <script state="off">
            <action>maincpu.mw@0A550 = 003A</action>
            <action>maincpu.mw@1B9D8 = 003A</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@000A58 = 4EF9001000604E71</action>
            <action>maincpu.mq@100060 = 41F900FEC00043F9</action>
            <action>maincpu.mq@100068 = 00FF426112001029</action>
            <action>maincpu.mq@100070 = 0322B20067F60C00</action>
            <action>maincpu.mq@100078 = 00FB660253100C00</action>
            <action>maincpu.mq@100080 = 00F7660252100C00</action>
            <action>maincpu.mq@100088 = 00FD660404100010</action>
            <action>maincpu.mq@100090 = 0C0000FE66040610</action>
            <action>maincpu.mq@100098 = 00100C0000EF6602</action>
            <action>maincpu.mq@1000A0 = 12900C0000DF6602</action>
            <action>maincpu.mq@1000A8 = 421160C000000000</action>
            <!--
            100060 | 41F9 00FE C000 : lea     $fec000.l, A0 // sound code address
            100066 | 43F9 00FF 4261 : lea     $ff4261.l, A1 // sound latch address
            10006C | 1200           : move.b  D0, D1
            10006E | 1029 0322      : move.b  ($322,A1), D0 // read input ($ff4583)
            100072 | B200           : cmp.b   D0, D1
            100074 | 67F6           : beq     $10006c
            100076 | 0C00 00FB      : cmpi.b  #-$5, D0
            10007A | 6602           : bne     $10007e
            10007C | 5310           : subq.b  #1, (A0)      // decrease code -01
            10007E | 0C00 00F7      : cmpi.b  #-$9, D0
            100082 | 6602           : bne     $100086
            100084 | 5210           : addq.b  #1, (A0)      // increase code +01
            100086 | 0C00 00FD      : cmpi.b  #-$3, D0
            10008A | 6604           : bne     $100090
            10008C | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            100090 | 0C00 00FE      : cmpi.b  #-$2, D0
            100094 | 6604           : bne     $10009a
            100096 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            10009A | 0C00 00EF      : cmpi.b  #-$11, D0
            10009E | 6602           : bne     $1000a2
            1000A0 | 1290           : move.b  (A0), (A1)    // play sound
            1000A2 | 0C00 00DF      : cmpi.b  #-$21, D0
            1000A6 | 6602           : bne     $1000aa
            1000A8 | 4211           : clr.b   (A1)          // stop sound
            1000AA | 60C0           : bra     $10006c
            -->
        </script>
        <script state="run">
            <output format="----- nitro ball 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@FEC000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@000A58 = 33FCFFFF00FEC020</action>
            <action>maincpu.mq@100060 = 0000000000000000</action>
            <action>maincpu.mq@100068 = 0000000000000000</action>
            <action>maincpu.mq@100070 = 0000000000000000</action>
            <action>maincpu.mq@100078 = 0000000000000000</action>
            <action>maincpu.mq@100080 = 0000000000000000</action>
            <action>maincpu.mq@100088 = 0000000000000000</action>
            <action>maincpu.mq@100090 = 0000000000000000</action>
            <action>maincpu.mq@100098 = 0000000000000000</action>
            <action>maincpu.mq@1000A0 = 0000000000000000</action>
            <action>maincpu.mq@1000A8 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>
nitrobalb.xml

Code: Select all

<!-- Nitro Ball (World, set 3) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mq@01A380 = 4EB9001000006512</action>
            <action>maincpu.mq@100000 = B1FC00FEC6E06E10</action>
            <action>maincpu.mq@100008 = 0C29001000066508</action>
            <action>maincpu.mq@100010 = 0C68000C00206F08</action>
            <action>maincpu.mq@100018 = 4EB90001A4184E75</action>
            <action>maincpu.mq@100020 = 027CFFFE4E750000</action>
            <!--
            100000 | B1FC 00FE C6E0 : cmpa.l  #$fec6e0, A0  // player or bullet?
            100006 | 6E10           : bgt     $100018
            100008 | 0C29 0010 0006 : cmpi.b  #$10, ($6,A1) // is target enemy or gate?
            10000E | 6508           : bcs     $100018
            100010 | 0C68 000C 0020 : cmpi.w  #$c, ($20,A0) // is current status ball?
            100016 | 6F08           : ble     $100020
            100018 | 4EB9 0001 A418 : jsr     $1a418.l      // call collision check
            10001E | 4E75           : rts
            100020 | 027C FFFE      : andi    #$fffe, SR    // no hit
            100024 | 4E75           : rts
            -->
        </script>
        <script state="off">
            <action>maincpu.mq@01A380 = 4EBA00964E716512</action>
            <action>maincpu.mq@100000 = 0000000000000000</action>
            <action>maincpu.mq@100008 = 0000000000000000</action>
            <action>maincpu.mq@100010 = 0000000000000000</action>
            <action>maincpu.mq@100018 = 0000000000000000</action>
            <action>maincpu.mq@100020 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@C8C7 = 30</action> <!-- normal shot -->
            <action>maincpu.mb@C985 = 30</action> <!-- missile launcher -->
            <action>maincpu.mb@CA09 = 30</action> <!-- ring laser -->
            <action>maincpu.mb@CAE3 = 30</action> <!-- flame thrower -->
            <action>maincpu.mb@CB63 = 30</action> <!-- rail blaster -->
        </script>
        <script state="off">
            <action>maincpu.mb@C8C7 = 31</action>
            <action>maincpu.mb@C985 = 31</action>
            <action>maincpu.mb@CA09 = 31</action>
            <action>maincpu.mb@CAE3 = 31</action>
            <action>maincpu.mb@CB63 = 31</action>
        </script>
    </cheat>

    <cheat desc="walk through wall">
        <script state="on">
            <action>maincpu.mw@7EB8 = 4E71</action> <!-- x position -->
            <action>maincpu.mw@7EF4 = 4E71</action> <!-- y position -->
        </script>
        <script state="off">
            <action>maincpu.mw@7EB8 = 660A</action>
            <action>maincpu.mw@7EF4 = 660A</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x00008000">01 (slow)</item>
            <item value="0x00018000">02       </item>
            <item value="0x00028000">03       </item>
            <item value="0x00038000">04       </item>
            <item value="0x00048000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@007EBA = 4EB9001000304E71</action> <!-- x position -->
            <action>maincpu.mq@007EF6 = 4EB9001000484E71</action> <!-- y position -->
            <action>maincpu.mq@100030 = 223C000000002028</action>
            <action>maincpu.mq@100038 = 002867066A024481</action>
            <action>maincpu.mq@100040 = 2001D1A800084E75</action>
            <action>maincpu.mq@100048 = 223C000000002028</action>
            <action>maincpu.mq@100050 = 002C67066A024481</action>
            <action>maincpu.mq@100058 = 2001D1A8000C4E75</action>
            <!--
            100030 | 223C xxxx xxxx : move.l  #$xxxx, D1   // x position
            100036 | 2028 0028      : move.l  ($28,A0), D0
            10003A | 6706           : beq     $100042
            10003C | 6A02           : bpl     $100040
            10003E | 4481           : neg.l   D1
            100040 | 2001           : move.l  D1, D0
            100042 | D1A8 0008      : add.l   D0, ($8,A0)
            100046 | 4E75           : rts
            100048 | 223C xxxx xxxx : move.l  #$xxxx, D1   // y position
            10004E | 2028 002C      : move.l  ($2c,A0), D0
            100052 | 6706           : beq     $10005a
            100054 | 6A02           : bpl     $100058
            100056 | 4481           : neg.l   D1
            100058 | 2001           : move.l  D1, D0
            10005A | D1A8 000C      : add.l   D0, ($c,A0)
            10005E | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@100032 = param</action>
            <action>maincpu.md@10004A = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@007EBA = 20280028D1A80008</action>
            <action>maincpu.mq@007EF6 = 2028002CD1A8000C</action>
            <action>maincpu.mq@100030 = 0000000000000000</action>
            <action>maincpu.mq@100038 = 0000000000000000</action>
            <action>maincpu.mq@100040 = 0000000000000000</action>
            <action>maincpu.mq@100048 = 0000000000000000</action>
            <action>maincpu.mq@100050 = 0000000000000000</action>
            <action>maincpu.mq@100058 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0x0100">01 (slow)</item>
            <item value="0x0080">02       </item>
            <item value="0x003c">03       </item>
            <item value="0x0010">04       </item>
            <item value="0x0000">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mw@08C6C = param</action> <!-- main timer -->
            <action>maincpu.mw@1BF6A = param</action> <!-- event timer (level 2) -->
            <action>maincpu.mw@1C3DE = param</action> <!-- event timer (level 1) -->
            <action>maincpu.mw@1C670 = param</action> <!-- event timer (level 4) -->
            <action>maincpu.mw@1C924 = param</action> <!-- event timer (level 3-2) -->
            <action>maincpu.mw@1CACE = param</action> <!-- event timer (level 5) -->
            <action>maincpu.mw@2F874 = param</action> <!-- event timer (level 2) initialize -->
            <action>maincpu.mw@30620 = param</action> <!-- event timer (level 1) initialize -->
            <action>maincpu.mw@31394 = param</action> <!-- event timer (level 4) initialize -->
            <action>maincpu.mw@32136 = param</action> <!-- event timer (level 3-2) initialize -->
            <action>maincpu.mw@32EDA = param</action> <!-- event timer (level 5) initialize -->
            <action>maincpu.mw@65B92 = param</action> <!-- event timer (level 3-1) initialize -->
            <action>maincpu.mw@65BC2 = param</action> <!-- event timer (level 3-1) -->
        </script>
        <script state="off">
            <action>maincpu.mw@08C6C = 003C</action>
            <action>maincpu.mw@1BF6A = 003A</action>
            <action>maincpu.mw@1C3DE = 003A</action>
            <action>maincpu.mw@1C670 = 003A</action>
            <action>maincpu.mw@1C924 = 003A</action>
            <action>maincpu.mw@1CACE = 003A</action>
            <action>maincpu.mw@2F874 = 003A</action>
            <action>maincpu.mw@30620 = 003A</action>
            <action>maincpu.mw@31394 = 003A</action>
            <action>maincpu.mw@32136 = 003A</action>
            <action>maincpu.mw@32EDA = 003A</action>
            <action>maincpu.mw@65B92 = 003A</action>
            <action>maincpu.mw@65BC2 = 003A</action>
        </script>
    </cheat>

    <cheat desc="weapon timer speed">
        <parameter>
            <item value="0x0100">01 (slow)</item>
            <item value="0x0080">02       </item>
            <item value="0x003c">03       </item>
            <item value="0x0010">04       </item>
            <item value="0x0000">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mw@0A5D0 = param</action> <!-- main -->
            <action>maincpu.mw@1BA38 = param</action> <!-- initialize -->
        </script>
        <script state="off">
            <action>maincpu.mw@0A5D0 = 003A</action>
            <action>maincpu.mw@1BA38 = 003A</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@000A58 = 4EF9001000604E71</action>
            <action>maincpu.mq@100060 = 41F900FEC00043F9</action>
            <action>maincpu.mq@100068 = 00FF426112001029</action>
            <action>maincpu.mq@100070 = 0322B20067F60C00</action>
            <action>maincpu.mq@100078 = 00FB660253100C00</action>
            <action>maincpu.mq@100080 = 00F7660252100C00</action>
            <action>maincpu.mq@100088 = 00FD660404100010</action>
            <action>maincpu.mq@100090 = 0C0000FE66040610</action>
            <action>maincpu.mq@100098 = 00100C0000EF6602</action>
            <action>maincpu.mq@1000A0 = 12900C0000DF6602</action>
            <action>maincpu.mq@1000A8 = 421160C000000000</action>
            <!--
            100060 | 41F9 00FE C000 : lea     $fec000.l, A0 // sound code address
            100066 | 43F9 00FF 4261 : lea     $ff4261.l, A1 // sound latch address
            10006C | 1200           : move.b  D0, D1
            10006E | 1029 0322      : move.b  ($322,A1), D0 // read input ($ff4583)
            100072 | B200           : cmp.b   D0, D1
            100074 | 67F6           : beq     $10006c
            100076 | 0C00 00FB      : cmpi.b  #-$5, D0
            10007A | 6602           : bne     $10007e
            10007C | 5310           : subq.b  #1, (A0)      // decrease code -01
            10007E | 0C00 00F7      : cmpi.b  #-$9, D0
            100082 | 6602           : bne     $100086
            100084 | 5210           : addq.b  #1, (A0)      // increase code +01
            100086 | 0C00 00FD      : cmpi.b  #-$3, D0
            10008A | 6604           : bne     $100090
            10008C | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            100090 | 0C00 00FE      : cmpi.b  #-$2, D0
            100094 | 6604           : bne     $10009a
            100096 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            10009A | 0C00 00EF      : cmpi.b  #-$11, D0
            10009E | 6602           : bne     $1000a2
            1000A0 | 1290           : move.b  (A0), (A1)    // play sound
            1000A2 | 0C00 00DF      : cmpi.b  #-$21, D0
            1000A6 | 6602           : bne     $1000aa
            1000A8 | 4211           : clr.b   (A1)          // stop sound
            1000AA | 60C0           : bra     $10006c
            -->
        </script>
        <script state="run">
            <output format="----- nitro ball 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@FEC000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@000A58 = 33FCFFFF00FEC020</action>
            <action>maincpu.mq@100060 = 0000000000000000</action>
            <action>maincpu.mq@100068 = 0000000000000000</action>
            <action>maincpu.mq@100070 = 0000000000000000</action>
            <action>maincpu.mq@100078 = 0000000000000000</action>
            <action>maincpu.mq@100080 = 0000000000000000</action>
            <action>maincpu.mq@100088 = 0000000000000000</action>
            <action>maincpu.mq@100090 = 0000000000000000</action>
            <action>maincpu.mq@100098 = 0000000000000000</action>
            <action>maincpu.mq@1000A0 = 0000000000000000</action>
            <action>maincpu.mq@1000A8 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>
gunball.xml

Code: Select all

<!-- Gun Ball (Japan) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mq@01A3E6 = 4EB9001000006512</action>
            <action>maincpu.mq@100000 = B1FC00FEC6E06E10</action>
            <action>maincpu.mq@100008 = 0C29001000066508</action>
            <action>maincpu.mq@100010 = 0C68000C00206F08</action>
            <action>maincpu.mq@100018 = 4EB90001A47E4E75</action>
            <action>maincpu.mq@100020 = 027CFFFE4E750000</action>
            <!--
            100000 | B1FC 00FE C6E0 : cmpa.l  #$fec6e0, A0  // player or bullet?
            100006 | 6E10           : bgt     $100018
            100008 | 0C29 0010 0006 : cmpi.b  #$10, ($6,A1) // is target enemy or gate?
            10000E | 6508           : bcs     $100018
            100010 | 0C68 000C 0020 : cmpi.w  #$c, ($20,A0) // is current status ball?
            100016 | 6F08           : ble     $100020
            100018 | 4EB9 0001 A47E : jsr     $1a47e.l      // call collision check
            10001E | 4E75           : rts
            100020 | 027C FFFE      : andi    #$fffe, SR    // no hit
            100024 | 4E75           : rts
            -->
        </script>
        <script state="off">
            <action>maincpu.mq@01A3E6 = 4EBA00964E716512</action>
            <action>maincpu.mq@100000 = 0000000000000000</action>
            <action>maincpu.mq@100008 = 0000000000000000</action>
            <action>maincpu.mq@100010 = 0000000000000000</action>
            <action>maincpu.mq@100018 = 0000000000000000</action>
            <action>maincpu.mq@100020 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@C90D = 30</action> <!-- normal shot -->
            <action>maincpu.mb@C9CB = 30</action> <!-- missile launcher -->
            <action>maincpu.mb@CA4F = 30</action> <!-- ring laser -->
            <action>maincpu.mb@CB29 = 30</action> <!-- flame thrower -->
            <action>maincpu.mb@CBA9 = 30</action> <!-- rail blaster -->
        </script>
        <script state="off">
            <action>maincpu.mb@C90D = 31</action>
            <action>maincpu.mb@C9CB = 31</action>
            <action>maincpu.mb@CA4F = 31</action>
            <action>maincpu.mb@CB29 = 31</action>
            <action>maincpu.mb@CBA9 = 31</action>
        </script>
    </cheat>

    <cheat desc="walk through wall">
        <script state="on">
            <action>maincpu.mw@7EFE = 4E71</action> <!-- x position -->
            <action>maincpu.mw@7F3A = 4E71</action> <!-- y position -->
        </script>
        <script state="off">
            <action>maincpu.mw@7EFE = 660A</action>
            <action>maincpu.mw@7F3A = 660A</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x00008000">01 (slow)</item>
            <item value="0x00018000">02       </item>
            <item value="0x00028000">03       </item>
            <item value="0x00038000">04       </item>
            <item value="0x00048000">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mq@007F00 = 4EB9001000304E71</action> <!-- x position -->
            <action>maincpu.mq@007F3C = 4EB9001000484E71</action> <!-- y position -->
            <action>maincpu.mq@100030 = 223C000000002028</action>
            <action>maincpu.mq@100038 = 002867066A024481</action>
            <action>maincpu.mq@100040 = 2001D1A800084E75</action>
            <action>maincpu.mq@100048 = 223C000000002028</action>
            <action>maincpu.mq@100050 = 002C67066A024481</action>
            <action>maincpu.mq@100058 = 2001D1A8000C4E75</action>
            <!--
            100030 | 223C xxxx xxxx : move.l  #$xxxx, D1   // x position
            100036 | 2028 0028      : move.l  ($28,A0), D0
            10003A | 6706           : beq     $100042
            10003C | 6A02           : bpl     $100040
            10003E | 4481           : neg.l   D1
            100040 | 2001           : move.l  D1, D0
            100042 | D1A8 0008      : add.l   D0, ($8,A0)
            100046 | 4E75           : rts
            100048 | 223C xxxx xxxx : move.l  #$xxxx, D1   // y position
            10004E | 2028 002C      : move.l  ($2c,A0), D0
            100052 | 6706           : beq     $10005a
            100054 | 6A02           : bpl     $100058
            100056 | 4481           : neg.l   D1
            100058 | 2001           : move.l  D1, D0
            10005A | D1A8 000C      : add.l   D0, ($c,A0)
            10005E | 4E75           : rts
            -->
        </script>
        <script state="change">
            <action>maincpu.md@100032 = param</action>
            <action>maincpu.md@10004A = param</action>
        </script>
        <script state="off">
            <action>maincpu.mq@007F00 = 20280028D1A80008</action>
            <action>maincpu.mq@007F3C = 2028002CD1A8000C</action>
            <action>maincpu.mq@100030 = 0000000000000000</action>
            <action>maincpu.mq@100038 = 0000000000000000</action>
            <action>maincpu.mq@100040 = 0000000000000000</action>
            <action>maincpu.mq@100048 = 0000000000000000</action>
            <action>maincpu.mq@100050 = 0000000000000000</action>
            <action>maincpu.mq@100058 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0x0100">01 (slow)</item>
            <item value="0x0080">02       </item>
            <item value="0x003c">03       </item>
            <item value="0x0010">04       </item>
            <item value="0x0000">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mw@08CB2 = param</action> <!-- main timer -->
            <action>maincpu.mw@1BF9E = param</action> <!-- event timer (level 2) -->
            <action>maincpu.mw@1C412 = param</action> <!-- event timer (level 1) -->
            <action>maincpu.mw@1C6A4 = param</action> <!-- event timer (level 4) -->
            <action>maincpu.mw@1C958 = param</action> <!-- event timer (level 3-2) -->
            <action>maincpu.mw@1CB02 = param</action> <!-- event timer (level 5) -->
            <action>maincpu.mw@2F7A6 = param</action> <!-- event timer (level 2) initialize -->
            <action>maincpu.mw@3045C = param</action> <!-- event timer (level 1) initialize -->
            <action>maincpu.mw@310DA = param</action> <!-- event timer (level 4) initialize -->
            <action>maincpu.mw@31D86 = param</action> <!-- event timer (level 3-2) initialize -->
            <action>maincpu.mw@32A34 = param</action> <!-- event timer (level 5) initialize -->
            <action>maincpu.mw@660EC = param</action> <!-- event timer (level 3-1) initialize -->
            <action>maincpu.mw@6611C = param</action> <!-- event timer (level 3-1) -->
        </script>
        <script state="off">
            <action>maincpu.mw@08CB2 = 003C</action>
            <action>maincpu.mw@1BF9E = 003A</action>
            <action>maincpu.mw@1C412 = 003A</action>
            <action>maincpu.mw@1C6A4 = 003A</action>
            <action>maincpu.mw@1C958 = 003A</action>
            <action>maincpu.mw@1CB02 = 003A</action>
            <action>maincpu.mw@2F7A6 = 003A</action>
            <action>maincpu.mw@3045C = 003A</action>
            <action>maincpu.mw@310DA = 003A</action>
            <action>maincpu.mw@31D86 = 003A</action>
            <action>maincpu.mw@32A34 = 003A</action>
            <action>maincpu.mw@660EC = 003A</action>
            <action>maincpu.mw@6611C = 003A</action>
        </script>
    </cheat>

    <cheat desc="weapon timer speed">
        <parameter>
            <item value="0x0100">01 (slow)</item>
            <item value="0x0080">02       </item>
            <item value="0x003c">03       </item>
            <item value="0x0010">04       </item>
            <item value="0x0000">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mw@0A616 = param</action> <!-- main -->
            <action>maincpu.mw@1BA98 = param</action> <!-- initialize -->
        </script>
        <script state="off">
            <action>maincpu.mw@0A616 = 003A</action>
            <action>maincpu.mw@1BA98 = 003A</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@07BED4 = 4EF9001000604E71</action>
            <action>maincpu.mq@100060 = 41F900FEC00043F9</action>
            <action>maincpu.mq@100068 = 00FF426112001029</action>
            <action>maincpu.mq@100070 = 0322B20067F60C00</action>
            <action>maincpu.mq@100078 = 00FB660253100C00</action>
            <action>maincpu.mq@100080 = 00F7660252100C00</action>
            <action>maincpu.mq@100088 = 00FD660404100010</action>
            <action>maincpu.mq@100090 = 0C0000FE66040610</action>
            <action>maincpu.mq@100098 = 00100C0000EF6602</action>
            <action>maincpu.mq@1000A0 = 12900C0000DF6602</action>
            <action>maincpu.mq@1000A8 = 421160C000000000</action>
            <!--
            100060 | 41F9 00FE C000 : lea     $fec000.l, A0 // sound code address
            100066 | 43F9 00FF 4261 : lea     $ff4261.l, A1 // sound latch address
            10006C | 1200           : move.b  D0, D1
            10006E | 1029 0322      : move.b  ($322,A1), D0 // read input ($ff4583)
            100072 | B200           : cmp.b   D0, D1
            100074 | 67F6           : beq     $10006c
            100076 | 0C00 00FB      : cmpi.b  #-$5, D0
            10007A | 6602           : bne     $10007e
            10007C | 5310           : subq.b  #1, (A0)      // decrease code -01
            10007E | 0C00 00F7      : cmpi.b  #-$9, D0
            100082 | 6602           : bne     $100086
            100084 | 5210           : addq.b  #1, (A0)      // increase code +01
            100086 | 0C00 00FD      : cmpi.b  #-$3, D0
            10008A | 6604           : bne     $100090
            10008C | 0410 0010      : subi.b  #$10, (A0)    // decrease code -10
            100090 | 0C00 00FE      : cmpi.b  #-$2, D0
            100094 | 6604           : bne     $10009a
            100096 | 0610 0010      : addi.b  #$10, (A0)    // increase code +10
            10009A | 0C00 00EF      : cmpi.b  #-$11, D0
            10009E | 6602           : bne     $1000a2
            1000A0 | 1290           : move.b  (A0), (A1)    // play sound
            1000A2 | 0C00 00DF      : cmpi.b  #-$21, D0
            1000A6 | 6602           : bne     $1000aa
            1000A8 | 4211           : clr.b   (A1)          // stop sound
            1000AA | 60C0           : bra     $10006c
            -->
        </script>
        <script state="run">
            <output format="----- gun ball 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@FEC000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@07BED4 = 33FCD02000FF2D58</action>
            <action>maincpu.mq@100060 = 0000000000000000</action>
            <action>maincpu.mq@100068 = 0000000000000000</action>
            <action>maincpu.mq@100070 = 0000000000000000</action>
            <action>maincpu.mq@100078 = 0000000000000000</action>
            <action>maincpu.mq@100080 = 0000000000000000</action>
            <action>maincpu.mq@100088 = 0000000000000000</action>
            <action>maincpu.mq@100090 = 0000000000000000</action>
            <action>maincpu.mq@100098 = 0000000000000000</action>
            <action>maincpu.mq@1000A0 = 0000000000000000</action>
            <action>maincpu.mq@1000A8 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>
Post Reply