[gunsmokej] Gun.Smoke

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

[gunsmokej] Gun.Smoke

Post by jman »

Code: Select all

<cheat desc="no hit">
    <script state="on">
        <action>maincpu.mb@0100b = c9</action> <!-- bullet -->
        <action>maincpu.mb@015f9 = c9</action> <!-- enemy -->
        <action>maincpu.mb@1a21e = c9</action> <!-- background -->
    </script>
    <script state="off">
        <action>maincpu.mb@0100b = 21</action>
        <action>maincpu.mb@015f9 = c0</action>
        <action>maincpu.mb@1a21e = d0</action>
    </script>
</cheat>

<cheat desc="auto fire">
    <script state="on">
        <action>maincpu.mw@1a2d3 = a2d5</action>
    </script>
    <script state="off">
        <action>maincpu.mw@1a2d3 = a399</action>
    </script>
</cheat>

<cheat desc="player speed">
    <parameter>
        <item value="0x01">01 (slow)</item>
        <item value="0x02">02       </item>
        <item value="0x04">03       </item>
        <item value="0x06">04       </item>
        <item value="0x08">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.md@1a0eb =         80a700cd</action> <!-- x position -->
        <action>maincpu.md@1a0f3 =         80a707cd</action> <!-- y position -->
        <action>maincpu.mq@1a700 = cdc9f2023aa70ecd</action>
        <action>maincpu.mq@1a708 = a77ec9f2033aa70e</action>
        <action>maincpu.mq@1a710 = eda719f2003e0728</action>
        <action>maincpu.mq@1a718 = ffffffffffc94744</action>
        <!--
        a700 | cd 0e a7 : call $A70E     // x position
        a703 | 3a 02 f2 : ld   a,($F202)
        a706 | c9       : ret
        a707 | cd 0e a7 : call $A70E     // y position
        a70a | 3a 03 f2 : ld   a,($F203)
        a70d | c9       : ret
        a70e | 7e       : ld   a,(hl)    // main routine
        a70f | a7       : and  a
        a710 | 28 07    : jr   z,$A719
        a712 | 3e xx    : ld   a,$xx
        a714 | f2 19 a7 : jp   p,$A719
        a717 | ed 44    : neg
        a719 | 47       : ld   b,a
        a71a | c9       : ret
        -->
    </script>
    <script state="change">
        <action>maincpu.mb@1a713 = param</action>
    </script>
    <script state="off">
        <action>maincpu.md@1a0eb =         86f2023a</action>
        <action>maincpu.md@1a0f3 =         86f2033a</action>
        <action>maincpu.mq@1a700 = ffffffffffffffff</action>
        <action>maincpu.mq@1a708 = ffffffffffffffff</action>
        <action>maincpu.mq@1a710 = ffffffffffffffff</action>
        <action>maincpu.mq@1a718 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="bullet speed">
    <parameter>
        <item value="0x01">01 (slow)</item>
        <item value="0x04">02       </item>
        <item value="0x08">03       </item>
        <item value="0x0c">04       </item>
        <item value="0x10">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.md@1a3b5 =         dda720cd</action> <!-- x position -->
        <action>maincpu.md@1a3c2 =         dda729cd</action> <!-- y position -->
        <action>maincpu.mq@1a720 = d9a732cd0546ddd9</action>
        <action>maincpu.mq@1a728 = a732cd0646ddd9c9</action>
        <action>maincpu.mq@1a730 = 3e0728a7784fc9d9</action>
        <action>maincpu.mq@1a738 = c98144eda73ef200</action>
        <!--
        a720 | d9       : exx             // x position
        a721 | dd 46 05 : ld   b,(ix+$05)
        a724 | cd 32 a7 : call $A732
        a727 | d9       : exx
        a728 | c9       : ret
        a729 | d9       : exx             // y position
        a72a | dd 46 06 : ld   b,(ix+$06)
        a72d | cd 32 a7 : call $A732
        a730 | d9       : exx
        a731 | c9       : ret
        a732 | 4f       : ld   c,a        // main routine
        a733 | 78       : ld   a,b
        a734 | a7       : and  a
        a735 | 28 07    : jr   z,$A73E
        a737 | 3e xx    : ld   a,$xx
        a739 | f2 3e a7 : jp   p,$A73E
        a73c | ed 44    : neg
        a73e | 81       : add  a,c
        a73f | c9       : ret
        -->
    </script>
    <script state="change">
        <action>maincpu.mb@1a738 = param</action>
    </script>
    <script state="off">
        <action>maincpu.md@1a3b5 =         dd0586dd</action>
        <action>maincpu.md@1a3c2 =         dd0686dd</action>
        <action>maincpu.mq@1a720 = ffffffffffffffff</action>
        <action>maincpu.mq@1a728 = ffffffffffffffff</action>
        <action>maincpu.mq@1a730 = ffffffffffffffff</action>
        <action>maincpu.mq@1a738 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="short hit mark">
    <script state="on">
        <action>maincpu.mb@00fa1 = 01</action>
        <action>maincpu.mb@014ff = 01</action>
        <action>maincpu.mb@1a3eb = 01</action>
    </script>
    <script state="off">
        <action>maincpu.mb@00fa1 = 10</action>
        <action>maincpu.mb@014ff = 10</action>
        <action>maincpu.mb@1a3eb = 10</action>
    </script>
</cheat>

<cheat desc="sound test mode">
    <comment>reset the game (F3) to enter sound test mode</comment>
    <script state="on">
        <action>maincpu.mw@70e9 =             7810</action>
        <action>maincpu.mq@7810 = 47b8c0013ae10021</action>
        <action>maincpu.mq@7818 = fe350120fdfef928</action>
        <action>maincpu.mq@7820 = 0420fbfe340120fe</action>
        <action>maincpu.mq@7828 = 0620f7fe0618f03e</action>
        <action>maincpu.mq@7830 = effe0f187786103e</action>
        <action>maincpu.mq@7838 = 20dffe05187e0320</action>
        <action>maincpu.mq@7840 = ffcc18c80032af04</action>
        <!--
        7810 | 21 00 e1 : ld  hl,$E100  // sound code address
        7813 | 3a 01 c0 : ld  a,($C001) // read input
        7816 | b8       : cp  b
        7817 | 47       : ld  b,a
        7818 | 28 f9    : jr  z,$7813
        781a | fe fd    : cp  $FD
        781c | 20 01    : jr  nz,$781F
        781e | 35       : dec (hl)      // decrease code -01
        781f | fe fe    : cp  $FE
        7821 | 20 01    : jr  nz,$7824
        7823 | 34       : inc (hl)      // increase code +01
        7824 | fe fb    : cp  $FB
        7826 | 20 04    : jr  nz,$782C
        7828 | 3e f0    : ld  a,$F0     // decrease code -10
        782a | 18 06    : jr  $7832
        782c | fe f7    : cp  $F7
        782e | 20 06    : jr  nz,$7836
        7830 | 3e 10    : ld  a,$10     // increase code +10
        7832 | 86       : add a,(hl)
        7833 | 77       : ld  (hl),a
        7834 | 18 0f    : jr  $7845
        7836 | fe ef    : cp  $EF
        7838 | 20 03    : jr  nz,$783D
        783a | 7e       : ld  a,(hl)    // play sound
        783b | 18 05    : jr  $7842
        783d | fe df    : cp  $DF
        783f | 20 04    : jr  nz,$7845
        7841 | af       : xor a         // stop sound
        7842 | 32 00 c8 : ld  ($C800),a // send sound code
        7845 | 18 cc    : jr  $7813
        -->
        <action>audiocpu.mb@011f = 00</action> <!-- stop sfx and music at the same time -->
    </script>
    <script state="run">
        <output format="----- gun.smoke 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@e100</argument>
        </output>
    </script>
    <script state="off">
        <action> maincpu.mw@70e9 =             04c5</action>
        <action> maincpu.mq@7810 = ffffffffffffffff</action>
        <action> maincpu.mq@7818 = ffffffffffffffff</action>
        <action> maincpu.mq@7820 = ffffffffffffffff</action>
        <action> maincpu.mq@7828 = ffffffffffffffff</action>
        <action> maincpu.mq@7830 = ffffffffffffffff</action>
        <action> maincpu.mq@7838 = ffffffffffffffff</action>
        <action> maincpu.mq@7840 = ffffffffffffffff</action>
        <action>audiocpu.mb@011f =               c9</action>
    </script>
</cheat>
"short hit mark" is unique. Bullet changes "hit mark" when it hits something. But you can't fire next bullet while "hit mark" appears. This code makes short time for "hit mark" and easy next shoot.
jman
Posts: 843
Joined: Tue Dec 01, 2020 1:24 pm

[gunsmokej] update from 0.244

Post by jman »

Some codes (based on hacking banked ROM) no longer work from 0.244 because of driver update. So I try fixing.

Code: Select all

<cheat desc="no hit">
    <script state="on">
        <action>maincpu.mb@0100b = c9</action> <!-- bullet -->
        <action>maincpu.mb@015f9 = c9</action> <!-- enemy -->
        <action>maincpu.mb@1221e = c9</action> <!-- background ($a21e) -->
    </script>
    <script state="off">
        <action>maincpu.mb@0100b = 21</action>
        <action>maincpu.mb@015f9 = c0</action>
        <action>maincpu.mb@1221e = d0</action>
    </script>
</cheat>

<cheat desc="auto fire">
    <script state="on">
        <action>maincpu.mw@122d3 = a2d5</action> <!-- ($a2d3) -->
    </script>
    <script state="off">
        <action>maincpu.mw@122d3 = a399</action>
    </script>
</cheat>

<cheat desc="player speed">
    <parameter>
        <item value="0x01">01 (slow)</item>
        <item value="0x02">02       </item>
        <item value="0x04">03       </item>
        <item value="0x06">04       </item>
        <item value="0x08">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.md@120eb =         80a700cd</action> <!-- x position ($a0eb) -->
        <action>maincpu.md@120f3 =         80a707cd</action> <!-- y position ($a0f3) -->
        <action>maincpu.mq@12700 = cdc9f2023aa70ecd</action>
        <action>maincpu.mq@12708 = a77ec9f2033aa70e</action>
        <action>maincpu.mq@12710 = eda719f2003e0728</action>
        <action>maincpu.mq@12718 = ffffffffffc94744</action>
        <!--
        a700 | cd 0e a7 : call $A70E     // x position
        a703 | 3a 02 f2 : ld   a,($F202)
        a706 | c9       : ret
        a707 | cd 0e a7 : call $A70E     // y position
        a70a | 3a 03 f2 : ld   a,($F203)
        a70d | c9       : ret
        a70e | 7e       : ld   a,(hl)    // main routine
        a70f | a7       : and  a
        a710 | 28 07    : jr   z,$A719
        a712 | 3e xx    : ld   a,$xx
        a714 | f2 19 a7 : jp   p,$A719
        a717 | ed 44    : neg
        a719 | 47       : ld   b,a
        a71a | c9       : ret
        -->
    </script>
    <script state="change">
        <action>maincpu.mb@12713 = param</action>
    </script>
    <script state="off">
        <action>maincpu.md@120eb =         86f2023a</action>
        <action>maincpu.md@120f3 =         86f2033a</action>
        <action>maincpu.mq@12700 = ffffffffffffffff</action>
        <action>maincpu.mq@12708 = ffffffffffffffff</action>
        <action>maincpu.mq@12710 = ffffffffffffffff</action>
        <action>maincpu.mq@12718 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="bullet speed">
    <parameter>
        <item value="0x01">01 (slow)</item>
        <item value="0x04">02       </item>
        <item value="0x08">03       </item>
        <item value="0x0c">04       </item>
        <item value="0x10">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.md@123b5 =         dda720cd</action> <!-- x position ($a3b5) -->
        <action>maincpu.md@123c2 =         dda729cd</action> <!-- y position ($a3c2) -->
        <action>maincpu.mq@12720 = d9a732cd0546ddd9</action>
        <action>maincpu.mq@12728 = a732cd0646ddd9c9</action>
        <action>maincpu.mq@12730 = 3e0728a7784fc9d9</action>
        <action>maincpu.mq@12738 = c98144eda73ef200</action>
        <!--
        a720 | d9       : exx             // x position
        a721 | dd 46 05 : ld   b,(ix+$05)
        a724 | cd 32 a7 : call $A732
        a727 | d9       : exx
        a728 | c9       : ret
        a729 | d9       : exx             // y position
        a72a | dd 46 06 : ld   b,(ix+$06)
        a72d | cd 32 a7 : call $A732
        a730 | d9       : exx
        a731 | c9       : ret
        a732 | 4f       : ld   c,a        // main routine
        a733 | 78       : ld   a,b
        a734 | a7       : and  a
        a735 | 28 07    : jr   z,$A73E
        a737 | 3e xx    : ld   a,$xx
        a739 | f2 3e a7 : jp   p,$A73E
        a73c | ed 44    : neg
        a73e | 81       : add  a,c
        a73f | c9       : ret
        -->
    </script>
    <script state="change">
        <action>maincpu.mb@12738 = param</action>
    </script>
    <script state="off">
        <action>maincpu.md@123b5 =         dd0586dd</action>
        <action>maincpu.md@123c2 =         dd0686dd</action>
        <action>maincpu.mq@12720 = ffffffffffffffff</action>
        <action>maincpu.mq@12728 = ffffffffffffffff</action>
        <action>maincpu.mq@12730 = ffffffffffffffff</action>
        <action>maincpu.mq@12738 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="short hit mark">
    <script state="on">
        <action>maincpu.mb@00fa1 = 01</action>
        <action>maincpu.mb@014ff = 01</action>
        <action>maincpu.mb@123eb = 01</action> <!-- ($a3eb) -->
    </script>
    <script state="off">
        <action>maincpu.mb@00fa1 = 10</action>
        <action>maincpu.mb@014ff = 10</action>
        <action>maincpu.mb@123eb = 10</action>
    </script>
</cheat>
jman
Posts: 843
Joined: Tue Dec 01, 2020 1:24 pm

[gunsmoke]+ Gun.Smoke

Post by jman »

gunsmoke.xml

Code: Select all

<!-- Gun.Smoke (World, 1985-11-15) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@0100B = C9</action> <!-- bullet -->
            <action>maincpu.mb@015F9 = C9</action> <!-- enemy -->
            <action>maincpu.mb@1221E = C9</action> <!-- background ($a21e) -->
        </script>
        <script state="off">
            <action>maincpu.mb@0100B = 21</action>
            <action>maincpu.mb@015F9 = C0</action>
            <action>maincpu.mb@1221E = D0</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mw@122D3 = A2D5</action> <!-- ($a2d3) -->
        </script>
        <script state="off">
            <action>maincpu.mw@122D3 = A399</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x02">02       </item>
            <item value="0x04">03       </item>
            <item value="0x06">04       </item>
            <item value="0x08">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@120EB = 80A700CD        </action> <!-- x position ($a0eb) -->
            <action>maincpu.md@120F3 = 80A705CD        </action> <!-- y position ($a0f3) -->
            <action>maincpu.mq@12700 = F2033A0318F2023A</action>
            <action>maincpu.mq@12708 = EDF0083EC8A77E47</action>
            <action>maincpu.mq@12710 = FFFFFFFFFFFFC944</action>
            <!--
            A700 | 3A 02 F2 : ld   a,($F202) // x position
            A703 | 18 03    : jr   $A708
            A705 | 3A 03 F2 : ld   a,($F203) // y position
            A708 | 47       : ld   b,a
            A709 | 7E       : ld   a,(hl)
            A70A | A7       : and  a
            A70B | C8       : ret  z
            A70C | 3E xx    : ld   a,$xx
            A70E | F0       : ret  p
            A70F | ED 44    : neg
            A711 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@1270D = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@120EB = 86F2023A        </action>
            <action>maincpu.md@120F3 = 86F2033A        </action>
            <action>maincpu.mq@12700 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12708 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12710 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12718 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x04">02       </item>
            <item value="0x08">03       </item>
            <item value="0x0c">04       </item>
            <item value="0x10">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@123B5 = DDA720CD        </action> <!-- x position ($a3b5) -->
            <action>maincpu.md@123C2 = DDA726CD        </action> <!-- y position ($a3c2) -->
            <action>maincpu.mq@12720 = DD4F0418057EDD4F</action>
            <action>maincpu.mq@12728 = F2083E0728A7067E</action>
            <action>maincpu.mq@12730 = FFFFC98144EDA734</action>
            <!--
            A720 | 4F       : ld   c,a        // x position
            A721 | DD 7E 05 : ld   a,(ix+$05)
            A724 | 18 04    : jr   $A72A
            A726 | 4F       : ld   c,a
            A727 | DD 7E 06 : ld   a,(ix+$06) // y position
            A72A | A7       : and  a
            A72B | 28 07    : jr   z,$A734
            A72D | 3E 0C    : ld   a,$0C
            A72F | F2 34 A7 : jp   p,$A734
            A732 | ED 44    : neg
            A734 | 81       : add  a,c
            A735 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@1272E = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@123B5 = DD0586DD        </action>
            <action>maincpu.md@123C2 = DD0686DD        </action>
            <action>maincpu.mq@12720 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12728 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12730 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="short hit mark">
        <script state="on">
            <action>maincpu.mb@00FA1 = 01</action>
            <action>maincpu.mb@014FF = 01</action>
            <action>maincpu.mb@123EB = 01</action> <!-- ($a3eb) -->
        </script>
        <script state="off">
            <action>maincpu.mb@00FA1 = 10</action>
            <action>maincpu.mb@014FF = 10</action>
            <action>maincpu.mb@123EB = 10</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mw@70E9 = 7810            </action>
            <action>maincpu.mq@7810 = 47B8C0013AE10021</action>
            <action>maincpu.mq@7818 = FE350120FDFEF928</action>
            <action>maincpu.mq@7820 = 0420FBFE340120FE</action>
            <action>maincpu.mq@7828 = 0520F7FE0618F03E</action>
            <action>maincpu.mq@7830 = 20EFFE787786103E</action>
            <action>maincpu.mq@7838 = 0420DFFE05187E03</action>
            <action>maincpu.mq@7840 = FFFFCD18C80032AF</action>
            <!--
            7810 | 21 00 E1 : ld   hl,$E100  // sound code address
            7813 | 3A 01 C0 : ld   a,($C001) // read input
            7816 | B8       : cp   b
            7817 | 47       : ld   b,a
            7818 | 28 F9    : jr   z,$7813
            781A | FE FD    : cp   $FD
            781C | 20 01    : jr   nz,$781F
            781E | 35       : dec  (hl)      // decrease code -01
            781F | FE FE    : cp   $FE
            7821 | 20 01    : jr   nz,$7824
            7823 | 34       : inc  (hl)      // increase code +01
            7824 | FE FB    : cp   $FB
            7826 | 20 04    : jr   nz,$782C
            7828 | 3E F0    : ld   a,$F0     // decrease code -10
            782A | 18 06    : jr   $7832
            782C | FE F7    : cp   $F7
            782E | 20 05    : jr   nz,$7835
            7830 | 3E 10    : ld   a,$10     // increase code +10
            7832 | 86       : add  a,(hl)
            7833 | 77       : ld   (hl),a
            7834 | 78       : ld   a,b
            7835 | FE EF    : cp   $EF
            7837 | 20 03    : jr   nz,$783C
            7839 | 7E       : ld   a,(hl)    // play sound
            783A | 18 05    : jr   $7841
            783C | FE DF    : cp   $DF
            783E | 20 04    : jr   nz,$7844
            7840 | AF       : xor  a         // stop sound
            7841 | 32 00 C8 : ld   ($C800),a // send sound code
            7844 | 18 CD    : jr   $7813
            -->
            <!-- stop sfx and music at the same time -->
            <action>audiocpu.mb@010C = 08</action>
            <action>audiocpu.mb@0119 = 08</action>
            <action>audiocpu.mb@011F = 00</action>
        </script>
        <script state="run">
            <output format="----- gun.smoke 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@E100</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mw@70E9 = 04C5            </action>
            <action> maincpu.mq@7810 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7818 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7820 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7828 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7830 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7838 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7840 = FFFFFFFFFFFFFFFF</action>
            <action>audiocpu.mb@010C = 04              </action>
            <action>audiocpu.mb@0119 = 04              </action>
            <action>audiocpu.mb@011F = C9              </action>
        </script>
    </cheat>

</mamecheat>
gunsmokeb.xml

Code: Select all

<!-- Gun.Smoke (World, 1985-11-15) (bootleg) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@0100B = C9</action> <!-- bullet -->
            <action>maincpu.mb@015F9 = C9</action> <!-- enemy -->
            <action>maincpu.mb@1221E = C9</action> <!-- background ($a21e) -->
        </script>
        <script state="off">
            <action>maincpu.mb@0100B = 21</action>
            <action>maincpu.mb@015F9 = C0</action>
            <action>maincpu.mb@1221E = D0</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mw@122D3 = A2D5</action> <!-- ($a2d3) -->
        </script>
        <script state="off">
            <action>maincpu.mw@122D3 = A399</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x02">02       </item>
            <item value="0x04">03       </item>
            <item value="0x06">04       </item>
            <item value="0x08">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@120EB = 80A700CD        </action> <!-- x position ($a0eb) -->
            <action>maincpu.md@120F3 = 80A705CD        </action> <!-- y position ($a0f3) -->
            <action>maincpu.mq@12700 = F2033A0318F2023A</action>
            <action>maincpu.mq@12708 = EDF0083EC8A77E47</action>
            <action>maincpu.mq@12710 = FFFFFFFFFFFFC944</action>
            <!--
            A700 | 3A 02 F2 : ld   a,($F202) // x position
            A703 | 18 03    : jr   $A708
            A705 | 3A 03 F2 : ld   a,($F203) // y position
            A708 | 47       : ld   b,a
            A709 | 7E       : ld   a,(hl)
            A70A | A7       : and  a
            A70B | C8       : ret  z
            A70C | 3E xx    : ld   a,$xx
            A70E | F0       : ret  p
            A70F | ED 44    : neg
            A711 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@1270D = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@120EB = 86F2023A        </action>
            <action>maincpu.md@120F3 = 86F2033A        </action>
            <action>maincpu.mq@12700 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12708 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12710 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12718 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x04">02       </item>
            <item value="0x08">03       </item>
            <item value="0x0c">04       </item>
            <item value="0x10">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@123B5 = DDA720CD        </action> <!-- x position ($a3b5) -->
            <action>maincpu.md@123C2 = DDA726CD        </action> <!-- y position ($a3c2) -->
            <action>maincpu.mq@12720 = DD4F0418057EDD4F</action>
            <action>maincpu.mq@12728 = F2083E0728A7067E</action>
            <action>maincpu.mq@12730 = FFFFC98144EDA734</action>
            <!--
            A720 | 4F       : ld   c,a        // x position
            A721 | DD 7E 05 : ld   a,(ix+$05)
            A724 | 18 04    : jr   $A72A
            A726 | 4F       : ld   c,a
            A727 | DD 7E 06 : ld   a,(ix+$06) // y position
            A72A | A7       : and  a
            A72B | 28 07    : jr   z,$A734
            A72D | 3E 0C    : ld   a,$0C
            A72F | F2 34 A7 : jp   p,$A734
            A732 | ED 44    : neg
            A734 | 81       : add  a,c
            A735 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@1272E = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@123B5 = DD0586DD        </action>
            <action>maincpu.md@123C2 = DD0686DD        </action>
            <action>maincpu.mq@12720 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12728 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12730 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="short hit mark">
        <script state="on">
            <action>maincpu.mb@00FA1 = 01</action>
            <action>maincpu.mb@014FF = 01</action>
            <action>maincpu.mb@123EB = 01</action> <!-- ($a3eb) -->
        </script>
        <script state="off">
            <action>maincpu.mb@00FA1 = 10</action>
            <action>maincpu.mb@014FF = 10</action>
            <action>maincpu.mb@123EB = 10</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mw@70E9 = 7810            </action>
            <action>maincpu.mq@7810 = 47B8C0013AE10021</action>
            <action>maincpu.mq@7818 = FE350120FDFEF928</action>
            <action>maincpu.mq@7820 = 0420FBFE340120FE</action>
            <action>maincpu.mq@7828 = 0520F7FE0618F03E</action>
            <action>maincpu.mq@7830 = 20EFFE787786103E</action>
            <action>maincpu.mq@7838 = 0420DFFE05187E03</action>
            <action>maincpu.mq@7840 = FFFFCD18C80032AF</action>
            <!--
            7810 | 21 00 E1 : ld   hl,$E100  // sound code address
            7813 | 3A 01 C0 : ld   a,($C001) // read input
            7816 | B8       : cp   b
            7817 | 47       : ld   b,a
            7818 | 28 F9    : jr   z,$7813
            781A | FE FD    : cp   $FD
            781C | 20 01    : jr   nz,$781F
            781E | 35       : dec  (hl)      // decrease code -01
            781F | FE FE    : cp   $FE
            7821 | 20 01    : jr   nz,$7824
            7823 | 34       : inc  (hl)      // increase code +01
            7824 | FE FB    : cp   $FB
            7826 | 20 04    : jr   nz,$782C
            7828 | 3E F0    : ld   a,$F0     // decrease code -10
            782A | 18 06    : jr   $7832
            782C | FE F7    : cp   $F7
            782E | 20 05    : jr   nz,$7835
            7830 | 3E 10    : ld   a,$10     // increase code +10
            7832 | 86       : add  a,(hl)
            7833 | 77       : ld   (hl),a
            7834 | 78       : ld   a,b
            7835 | FE EF    : cp   $EF
            7837 | 20 03    : jr   nz,$783C
            7839 | 7E       : ld   a,(hl)    // play sound
            783A | 18 05    : jr   $7841
            783C | FE DF    : cp   $DF
            783E | 20 04    : jr   nz,$7844
            7840 | AF       : xor  a         // stop sound
            7841 | 32 00 C8 : ld   ($C800),a // send sound code
            7844 | 18 CD    : jr   $7813
            -->
            <!-- stop sfx and music at the same time -->
            <action>audiocpu.mb@010C = 08</action>
            <action>audiocpu.mb@0119 = 08</action>
            <action>audiocpu.mb@011F = 00</action>
        </script>
        <script state="run">
            <output format="----- gun.smoke 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@E100</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mw@70E9 = 04C5            </action>
            <action> maincpu.mq@7810 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7818 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7820 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7828 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7830 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7838 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7840 = FFFFFFFFFFFFFFFF</action>
            <action>audiocpu.mb@010C = 04              </action>
            <action>audiocpu.mb@0119 = 04              </action>
            <action>audiocpu.mb@011F = C9              </action>
        </script>
    </cheat>

</mamecheat>
gunsmokej.xml

Code: Select all

<!-- Gun.Smoke (Japan, 1985-11-15) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@0100B = C9</action> <!-- bullet -->
            <action>maincpu.mb@015F9 = C9</action> <!-- enemy -->
            <action>maincpu.mb@1221E = C9</action> <!-- background ($a21e) -->
        </script>
        <script state="off">
            <action>maincpu.mb@0100B = 21</action>
            <action>maincpu.mb@015F9 = C0</action>
            <action>maincpu.mb@1221E = D0</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mw@122D3 = A2D5</action> <!-- ($a2d3) -->
        </script>
        <script state="off">
            <action>maincpu.mw@122D3 = A399</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x02">02       </item>
            <item value="0x04">03       </item>
            <item value="0x06">04       </item>
            <item value="0x08">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@120EB = 80A700CD        </action> <!-- x position ($a0eb) -->
            <action>maincpu.md@120F3 = 80A705CD        </action> <!-- y position ($a0f3) -->
            <action>maincpu.mq@12700 = F2033A0318F2023A</action>
            <action>maincpu.mq@12708 = EDF0083EC8A77E47</action>
            <action>maincpu.mq@12710 = FFFFFFFFFFFFC944</action>
            <!--
            A700 | 3A 02 F2 : ld   a,($F202) // x position
            A703 | 18 03    : jr   $A708
            A705 | 3A 03 F2 : ld   a,($F203) // y position
            A708 | 47       : ld   b,a
            A709 | 7E       : ld   a,(hl)
            A70A | A7       : and  a
            A70B | C8       : ret  z
            A70C | 3E xx    : ld   a,$xx
            A70E | F0       : ret  p
            A70F | ED 44    : neg
            A711 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@1270D = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@120EB = 86F2023A        </action>
            <action>maincpu.md@120F3 = 86F2033A        </action>
            <action>maincpu.mq@12700 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12708 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12710 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12718 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x04">02       </item>
            <item value="0x08">03       </item>
            <item value="0x0c">04       </item>
            <item value="0x10">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@123B5 = DDA720CD        </action> <!-- x position ($a3b5) -->
            <action>maincpu.md@123C2 = DDA726CD        </action> <!-- y position ($a3c2) -->
            <action>maincpu.mq@12720 = DD4F0418057EDD4F</action>
            <action>maincpu.mq@12728 = F2083E0728A7067E</action>
            <action>maincpu.mq@12730 = FFFFC98144EDA734</action>
            <!--
            A720 | 4F       : ld   c,a        // x position
            A721 | DD 7E 05 : ld   a,(ix+$05)
            A724 | 18 04    : jr   $A72A
            A726 | 4F       : ld   c,a
            A727 | DD 7E 06 : ld   a,(ix+$06) // y position
            A72A | A7       : and  a
            A72B | 28 07    : jr   z,$A734
            A72D | 3E 0C    : ld   a,$0C
            A72F | F2 34 A7 : jp   p,$A734
            A732 | ED 44    : neg
            A734 | 81       : add  a,c
            A735 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@1272E = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@123B5 = DD0586DD        </action>
            <action>maincpu.md@123C2 = DD0686DD        </action>
            <action>maincpu.mq@12720 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12728 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12730 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="short hit mark">
        <script state="on">
            <action>maincpu.mb@00FA1 = 01</action>
            <action>maincpu.mb@014FF = 01</action>
            <action>maincpu.mb@123EB = 01</action> <!-- ($a3eb) -->
        </script>
        <script state="off">
            <action>maincpu.mb@00FA1 = 10</action>
            <action>maincpu.mb@014FF = 10</action>
            <action>maincpu.mb@123EB = 10</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mw@70E9 = 7810            </action>
            <action>maincpu.mq@7810 = 47B8C0013AE10021</action>
            <action>maincpu.mq@7818 = FE350120FDFEF928</action>
            <action>maincpu.mq@7820 = 0420FBFE340120FE</action>
            <action>maincpu.mq@7828 = 0520F7FE0618F03E</action>
            <action>maincpu.mq@7830 = 20EFFE787786103E</action>
            <action>maincpu.mq@7838 = 0420DFFE05187E03</action>
            <action>maincpu.mq@7840 = FFFFCD18C80032AF</action>
            <!--
            7810 | 21 00 E1 : ld   hl,$E100  // sound code address
            7813 | 3A 01 C0 : ld   a,($C001) // read input
            7816 | B8       : cp   b
            7817 | 47       : ld   b,a
            7818 | 28 F9    : jr   z,$7813
            781A | FE FD    : cp   $FD
            781C | 20 01    : jr   nz,$781F
            781E | 35       : dec  (hl)      // decrease code -01
            781F | FE FE    : cp   $FE
            7821 | 20 01    : jr   nz,$7824
            7823 | 34       : inc  (hl)      // increase code +01
            7824 | FE FB    : cp   $FB
            7826 | 20 04    : jr   nz,$782C
            7828 | 3E F0    : ld   a,$F0     // decrease code -10
            782A | 18 06    : jr   $7832
            782C | FE F7    : cp   $F7
            782E | 20 05    : jr   nz,$7835
            7830 | 3E 10    : ld   a,$10     // increase code +10
            7832 | 86       : add  a,(hl)
            7833 | 77       : ld   (hl),a
            7834 | 78       : ld   a,b
            7835 | FE EF    : cp   $EF
            7837 | 20 03    : jr   nz,$783C
            7839 | 7E       : ld   a,(hl)    // play sound
            783A | 18 05    : jr   $7841
            783C | FE DF    : cp   $DF
            783E | 20 04    : jr   nz,$7844
            7840 | AF       : xor  a         // stop sound
            7841 | 32 00 C8 : ld   ($C800),a // send sound code
            7844 | 18 CD    : jr   $7813
            -->
            <!-- stop sfx and music at the same time -->
            <action>audiocpu.mb@010C = 08</action>
            <action>audiocpu.mb@0119 = 08</action>
            <action>audiocpu.mb@011F = 00</action>
        </script>
        <script state="run">
            <output format="----- gun.smoke 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@E100</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mw@70E9 = 04C5            </action>
            <action> maincpu.mq@7810 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7818 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7820 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7828 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7830 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7838 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7840 = FFFFFFFFFFFFFFFF</action>
            <action>audiocpu.mb@010C = 04              </action>
            <action>audiocpu.mb@0119 = 04              </action>
            <action>audiocpu.mb@011F = C9              </action>
        </script>
    </cheat>

</mamecheat>
gunsmokeu.xml

Code: Select all

<!-- Gun.Smoke (USA and Canada, 1986-04-08) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@01015 = C9</action> <!-- bullet -->
            <action>maincpu.mb@01603 = C9</action> <!-- enemy -->
            <action>maincpu.mb@1221E = C9</action> <!-- background ($a21e) -->
        </script>
        <script state="off">
            <action>maincpu.mb@01015 = 21</action>
            <action>maincpu.mb@01603 = C0</action>
            <action>maincpu.mb@1221E = D0</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mw@122D3 = A2D5</action> <!-- ($a2d3) -->
        </script>
        <script state="off">
            <action>maincpu.mw@122D3 = A399</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x02">02       </item>
            <item value="0x04">03       </item>
            <item value="0x06">04       </item>
            <item value="0x08">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@120EB = 80A700CD        </action> <!-- x position ($a0eb) -->
            <action>maincpu.md@120F3 = 80A705CD        </action> <!-- y position ($a0f3) -->
            <action>maincpu.mq@12700 = F2033A0318F2023A</action>
            <action>maincpu.mq@12708 = EDF0083EC8A77E47</action>
            <action>maincpu.mq@12710 = FFFFFFFFFFFFC944</action>
            <!--
            A700 | 3A 02 F2 : ld   a,($F202) // x position
            A703 | 18 03    : jr   $A708
            A705 | 3A 03 F2 : ld   a,($F203) // y position
            A708 | 47       : ld   b,a
            A709 | 7E       : ld   a,(hl)
            A70A | A7       : and  a
            A70B | C8       : ret  z
            A70C | 3E xx    : ld   a,$xx
            A70E | F0       : ret  p
            A70F | ED 44    : neg
            A711 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@1270D = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@120EB = 86F2023A        </action>
            <action>maincpu.md@120F3 = 86F2033A        </action>
            <action>maincpu.mq@12700 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12708 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12710 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12718 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x04">02       </item>
            <item value="0x08">03       </item>
            <item value="0x0c">04       </item>
            <item value="0x10">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@123B5 = DDA720CD        </action> <!-- x position ($a3b5) -->
            <action>maincpu.md@123C2 = DDA726CD        </action> <!-- y position ($a3c2) -->
            <action>maincpu.mq@12720 = DD4F0418057EDD4F</action>
            <action>maincpu.mq@12728 = F2083E0728A7067E</action>
            <action>maincpu.mq@12730 = FFFFC98144EDA734</action>
            <!--
            A720 | 4F       : ld   c,a        // x position
            A721 | DD 7E 05 : ld   a,(ix+$05)
            A724 | 18 04    : jr   $A72A
            A726 | 4F       : ld   c,a
            A727 | DD 7E 06 : ld   a,(ix+$06) // y position
            A72A | A7       : and  a
            A72B | 28 07    : jr   z,$A734
            A72D | 3E 0C    : ld   a,$0C
            A72F | F2 34 A7 : jp   p,$A734
            A732 | ED 44    : neg
            A734 | 81       : add  a,c
            A735 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@1272E = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@123B5 = DD0586DD        </action>
            <action>maincpu.md@123C2 = DD0686DD        </action>
            <action>maincpu.mq@12720 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12728 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12730 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="short hit mark">
        <script state="on">
            <action>maincpu.mb@00FAB = 01</action>
            <action>maincpu.mb@01509 = 01</action>
            <action>maincpu.mb@123EB = 01</action> <!-- ($a3eb) -->
        </script>
        <script state="off">
            <action>maincpu.mb@00FAB = 10</action>
            <action>maincpu.mb@01509 = 10</action>
            <action>maincpu.mb@123EB = 10</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mw@70E9 = 7800            </action>
            <action>maincpu.mq@7800 = 47B8C0013AE10021</action>
            <action>maincpu.mq@7808 = FE350120FDFEF928</action>
            <action>maincpu.mq@7810 = 0420FBFE340120FE</action>
            <action>maincpu.mq@7818 = 0520F7FE0618F03E</action>
            <action>maincpu.mq@7820 = 20EFFE787786103E</action>
            <action>maincpu.mq@7828 = 0420DFFE05187E03</action>
            <action>maincpu.mq@7830 = FFFFCD18C80032AF</action>
            <!--
            7800 | 21 00 E1 : ld   hl,$E100  // sound code address
            7803 | 3A 01 C0 : ld   a,($C001) // read input
            7806 | B8       : cp   b
            7807 | 47       : ld   b,a
            7808 | 28 F9    : jr   z,$7803
            780A | FE FD    : cp   $FD
            780C | 20 01    : jr   nz,$780F
            780E | 35       : dec  (hl)      // decrease code -01
            780F | FE FE    : cp   $FE
            7811 | 20 01    : jr   nz,$7814
            7813 | 34       : inc  (hl)      // increase code +01
            7814 | FE FB    : cp   $FB
            7816 | 20 04    : jr   nz,$781C
            7818 | 3E F0    : ld   a,$F0     // decrease code -10
            781A | 18 06    : jr   $7822
            781C | FE F7    : cp   $F7
            781E | 20 05    : jr   nz,$7825
            7820 | 3E 10    : ld   a,$10     // increase code +10
            7822 | 86       : add  a,(hl)
            7823 | 77       : ld   (hl),a
            7824 | 78       : ld   a,b
            7825 | FE EF    : cp   $EF
            7827 | 20 03    : jr   nz,$782C
            7829 | 7E       : ld   a,(hl)    // play sound
            782A | 18 05    : jr   $7831
            782C | FE DF    : cp   $DF
            782E | 20 04    : jr   nz,$7834
            7830 | AF       : xor  a         // stop sound
            7831 | 32 00 C8 : ld   ($C800),a // send sound code
            7834 | 18 CD    : jr   $7803
            -->
            <!-- stop sfx and music at the same time -->
            <action>audiocpu.mb@010C = 08</action>
            <action>audiocpu.mb@0119 = 08</action>
            <action>audiocpu.mb@011F = 00</action>
        </script>
        <script state="run">
            <output format="----- gun.smoke 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@E100</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mw@70E9 = 04C5            </action>
            <action> maincpu.mq@7800 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7808 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7810 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7818 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7820 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7828 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7830 = FFFFFFFFFFFFFFFF</action>
            <action>audiocpu.mb@010C = 04              </action>
            <action>audiocpu.mb@0119 = 04              </action>
            <action>audiocpu.mb@011F = C9              </action>
        </script>
    </cheat>

</mamecheat>
gunsmokeua.xml

Code: Select all

<!-- Gun.Smoke (USA and Canada, 1986-01-20) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@01015 = C9</action> <!-- bullet -->
            <action>maincpu.mb@01603 = C9</action> <!-- enemy -->
            <action>maincpu.mb@1221E = C9</action> <!-- background ($a21e) -->
        </script>
        <script state="off">
            <action>maincpu.mb@01015 = 21</action>
            <action>maincpu.mb@01603 = C0</action>
            <action>maincpu.mb@1221E = D0</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mw@122D3 = A2D5</action> <!-- ($a2d3) -->
        </script>
        <script state="off">
            <action>maincpu.mw@122D3 = A399</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x02">02       </item>
            <item value="0x04">03       </item>
            <item value="0x06">04       </item>
            <item value="0x08">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@120EB = 80A700CD        </action> <!-- x position ($a0eb) -->
            <action>maincpu.md@120F3 = 80A705CD        </action> <!-- y position ($a0f3) -->
            <action>maincpu.mq@12700 = F2033A0318F2023A</action>
            <action>maincpu.mq@12708 = EDF0083EC8A77E47</action>
            <action>maincpu.mq@12710 = FFFFFFFFFFFFC944</action>
            <!--
            A700 | 3A 02 F2 : ld   a,($F202) // x position
            A703 | 18 03    : jr   $A708
            A705 | 3A 03 F2 : ld   a,($F203) // y position
            A708 | 47       : ld   b,a
            A709 | 7E       : ld   a,(hl)
            A70A | A7       : and  a
            A70B | C8       : ret  z
            A70C | 3E xx    : ld   a,$xx
            A70E | F0       : ret  p
            A70F | ED 44    : neg
            A711 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@1270D = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@120EB = 86F2023A        </action>
            <action>maincpu.md@120F3 = 86F2033A        </action>
            <action>maincpu.mq@12700 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12708 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12710 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12718 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x04">02       </item>
            <item value="0x08">03       </item>
            <item value="0x0c">04       </item>
            <item value="0x10">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@123B5 = DDA720CD        </action> <!-- x position ($a3b5) -->
            <action>maincpu.md@123C2 = DDA726CD        </action> <!-- y position ($a3c2) -->
            <action>maincpu.mq@12720 = DD4F0418057EDD4F</action>
            <action>maincpu.mq@12728 = F2083E0728A7067E</action>
            <action>maincpu.mq@12730 = FFFFC98144EDA734</action>
            <!--
            A720 | 4F       : ld   c,a        // x position
            A721 | DD 7E 05 : ld   a,(ix+$05)
            A724 | 18 04    : jr   $A72A
            A726 | 4F       : ld   c,a
            A727 | DD 7E 06 : ld   a,(ix+$06) // y position
            A72A | A7       : and  a
            A72B | 28 07    : jr   z,$A734
            A72D | 3E 0C    : ld   a,$0C
            A72F | F2 34 A7 : jp   p,$A734
            A732 | ED 44    : neg
            A734 | 81       : add  a,c
            A735 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@1272E = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@123B5 = DD0586DD        </action>
            <action>maincpu.md@123C2 = DD0686DD        </action>
            <action>maincpu.mq@12720 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12728 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12730 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="short hit mark">
        <script state="on">
            <action>maincpu.mb@00FAB = 01</action>
            <action>maincpu.mb@01509 = 01</action>
            <action>maincpu.mb@123EB = 01</action> <!-- ($a3eb) -->
        </script>
        <script state="off">
            <action>maincpu.mb@00FAB = 10</action>
            <action>maincpu.mb@01509 = 10</action>
            <action>maincpu.mb@123EB = 10</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mw@70E9 = 7800            </action>
            <action>maincpu.mq@7800 = 47B8C0013AE10021</action>
            <action>maincpu.mq@7808 = FE350120FDFEF928</action>
            <action>maincpu.mq@7810 = 0420FBFE340120FE</action>
            <action>maincpu.mq@7818 = 0520F7FE0618F03E</action>
            <action>maincpu.mq@7820 = 20EFFE787786103E</action>
            <action>maincpu.mq@7828 = 0420DFFE05187E03</action>
            <action>maincpu.mq@7830 = FFFFCD18C80032AF</action>
            <!--
            7800 | 21 00 E1 : ld   hl,$E100  // sound code address
            7803 | 3A 01 C0 : ld   a,($C001) // read input
            7806 | B8       : cp   b
            7807 | 47       : ld   b,a
            7808 | 28 F9    : jr   z,$7803
            780A | FE FD    : cp   $FD
            780C | 20 01    : jr   nz,$780F
            780E | 35       : dec  (hl)      // decrease code -01
            780F | FE FE    : cp   $FE
            7811 | 20 01    : jr   nz,$7814
            7813 | 34       : inc  (hl)      // increase code +01
            7814 | FE FB    : cp   $FB
            7816 | 20 04    : jr   nz,$781C
            7818 | 3E F0    : ld   a,$F0     // decrease code -10
            781A | 18 06    : jr   $7822
            781C | FE F7    : cp   $F7
            781E | 20 05    : jr   nz,$7825
            7820 | 3E 10    : ld   a,$10     // increase code +10
            7822 | 86       : add  a,(hl)
            7823 | 77       : ld   (hl),a
            7824 | 78       : ld   a,b
            7825 | FE EF    : cp   $EF
            7827 | 20 03    : jr   nz,$782C
            7829 | 7E       : ld   a,(hl)    // play sound
            782A | 18 05    : jr   $7831
            782C | FE DF    : cp   $DF
            782E | 20 04    : jr   nz,$7834
            7830 | AF       : xor  a         // stop sound
            7831 | 32 00 C8 : ld   ($C800),a // send sound code
            7834 | 18 CD    : jr   $7803
            -->
            <!-- stop sfx and music at the same time -->
            <action>audiocpu.mb@010C = 08</action>
            <action>audiocpu.mb@0119 = 08</action>
            <action>audiocpu.mb@011F = 00</action>
        </script>
        <script state="run">
            <output format="----- gun.smoke 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@E100</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mw@70E9 = 04C5            </action>
            <action> maincpu.mq@7800 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7808 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7810 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7818 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7820 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7828 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7830 = FFFFFFFFFFFFFFFF</action>
            <action>audiocpu.mb@010C = 04              </action>
            <action>audiocpu.mb@0119 = 04              </action>
            <action>audiocpu.mb@011F = C9              </action>
        </script>
    </cheat>

</mamecheat>
gunsmokeub.xml

Code: Select all

<!-- Gun.Smoke (USA and Canada, 1985-11-15, set 1) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@0100B = C9</action> <!-- bullet -->
            <action>maincpu.mb@015F9 = C9</action> <!-- enemy -->
            <action>maincpu.mb@1221E = C9</action> <!-- background ($a21e) -->
        </script>
        <script state="off">
            <action>maincpu.mb@0100B = 21</action>
            <action>maincpu.mb@015F9 = C0</action>
            <action>maincpu.mb@1221E = D0</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mw@122D3 = A2D5</action> <!-- ($a2d3) -->
        </script>
        <script state="off">
            <action>maincpu.mw@122D3 = A399</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x02">02       </item>
            <item value="0x04">03       </item>
            <item value="0x06">04       </item>
            <item value="0x08">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@120EB = 80A700CD        </action> <!-- x position ($a0eb) -->
            <action>maincpu.md@120F3 = 80A705CD        </action> <!-- y position ($a0f3) -->
            <action>maincpu.mq@12700 = F2033A0318F2023A</action>
            <action>maincpu.mq@12708 = EDF0083EC8A77E47</action>
            <action>maincpu.mq@12710 = FFFFFFFFFFFFC944</action>
            <!--
            A700 | 3A 02 F2 : ld   a,($F202) // x position
            A703 | 18 03    : jr   $A708
            A705 | 3A 03 F2 : ld   a,($F203) // y position
            A708 | 47       : ld   b,a
            A709 | 7E       : ld   a,(hl)
            A70A | A7       : and  a
            A70B | C8       : ret  z
            A70C | 3E xx    : ld   a,$xx
            A70E | F0       : ret  p
            A70F | ED 44    : neg
            A711 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@1270D = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@120EB = 86F2023A        </action>
            <action>maincpu.md@120F3 = 86F2033A        </action>
            <action>maincpu.mq@12700 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12708 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12710 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12718 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x04">02       </item>
            <item value="0x08">03       </item>
            <item value="0x0c">04       </item>
            <item value="0x10">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@123B5 = DDA720CD        </action> <!-- x position ($a3b5) -->
            <action>maincpu.md@123C2 = DDA726CD        </action> <!-- y position ($a3c2) -->
            <action>maincpu.mq@12720 = DD4F0418057EDD4F</action>
            <action>maincpu.mq@12728 = F2083E0728A7067E</action>
            <action>maincpu.mq@12730 = FFFFC98144EDA734</action>
            <!--
            A720 | 4F       : ld   c,a        // x position
            A721 | DD 7E 05 : ld   a,(ix+$05)
            A724 | 18 04    : jr   $A72A
            A726 | 4F       : ld   c,a
            A727 | DD 7E 06 : ld   a,(ix+$06) // y position
            A72A | A7       : and  a
            A72B | 28 07    : jr   z,$A734
            A72D | 3E 0C    : ld   a,$0C
            A72F | F2 34 A7 : jp   p,$A734
            A732 | ED 44    : neg
            A734 | 81       : add  a,c
            A735 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@1272E = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@123B5 = DD0586DD        </action>
            <action>maincpu.md@123C2 = DD0686DD        </action>
            <action>maincpu.mq@12720 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12728 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12730 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="short hit mark">
        <script state="on">
            <action>maincpu.mb@00FA1 = 01</action>
            <action>maincpu.mb@014FF = 01</action>
            <action>maincpu.mb@123EB = 01</action> <!-- ($a3eb) -->
        </script>
        <script state="off">
            <action>maincpu.mb@00FA1 = 10</action>
            <action>maincpu.mb@014FF = 10</action>
            <action>maincpu.mb@123EB = 10</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mw@70E9 = 7810            </action>
            <action>maincpu.mq@7810 = 47B8C0013AE10021</action>
            <action>maincpu.mq@7818 = FE350120FDFEF928</action>
            <action>maincpu.mq@7820 = 0420FBFE340120FE</action>
            <action>maincpu.mq@7828 = 0520F7FE0618F03E</action>
            <action>maincpu.mq@7830 = 20EFFE787786103E</action>
            <action>maincpu.mq@7838 = 0420DFFE05187E03</action>
            <action>maincpu.mq@7840 = FFFFCD18C80032AF</action>
            <!--
            7810 | 21 00 E1 : ld   hl,$E100  // sound code address
            7813 | 3A 01 C0 : ld   a,($C001) // read input
            7816 | B8       : cp   b
            7817 | 47       : ld   b,a
            7818 | 28 F9    : jr   z,$7813
            781A | FE FD    : cp   $FD
            781C | 20 01    : jr   nz,$781F
            781E | 35       : dec  (hl)      // decrease code -01
            781F | FE FE    : cp   $FE
            7821 | 20 01    : jr   nz,$7824
            7823 | 34       : inc  (hl)      // increase code +01
            7824 | FE FB    : cp   $FB
            7826 | 20 04    : jr   nz,$782C
            7828 | 3E F0    : ld   a,$F0     // decrease code -10
            782A | 18 06    : jr   $7832
            782C | FE F7    : cp   $F7
            782E | 20 05    : jr   nz,$7835
            7830 | 3E 10    : ld   a,$10     // increase code +10
            7832 | 86       : add  a,(hl)
            7833 | 77       : ld   (hl),a
            7834 | 78       : ld   a,b
            7835 | FE EF    : cp   $EF
            7837 | 20 03    : jr   nz,$783C
            7839 | 7E       : ld   a,(hl)    // play sound
            783A | 18 05    : jr   $7841
            783C | FE DF    : cp   $DF
            783E | 20 04    : jr   nz,$7844
            7840 | AF       : xor  a         // stop sound
            7841 | 32 00 C8 : ld   ($C800),a // send sound code
            7844 | 18 CD    : jr   $7813
            -->
            <!-- stop sfx and music at the same time -->
            <action>audiocpu.mb@010C = 08</action>
            <action>audiocpu.mb@0119 = 08</action>
            <action>audiocpu.mb@011F = 00</action>
        </script>
        <script state="run">
            <output format="----- gun.smoke 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@E100</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mw@70E9 = 04C5            </action>
            <action> maincpu.mq@7810 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7818 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7820 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7828 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7830 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7838 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7840 = FFFFFFFFFFFFFFFF</action>
            <action>audiocpu.mb@010C = 04              </action>
            <action>audiocpu.mb@0119 = 04              </action>
            <action>audiocpu.mb@011F = C9              </action>
        </script>
    </cheat>

</mamecheat>
jman
Posts: 843
Joined: Tue Dec 01, 2020 1:24 pm

[gunsmoke]+ Gun.Smoke

Post by jman »

gunsmokeuc.xml

Code: Select all

<!-- Gun.Smoke (USA and Canada, 1985-11-15, set 2) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@0100B = C9</action> <!-- bullet -->
            <action>maincpu.mb@015F9 = C9</action> <!-- enemy -->
            <action>maincpu.mb@1221E = C9</action> <!-- background ($a21e) -->
        </script>
        <script state="off">
            <action>maincpu.mb@0100B = 21</action>
            <action>maincpu.mb@015F9 = C0</action>
            <action>maincpu.mb@1221E = D0</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mw@122D3 = A2D5</action> <!-- ($a2d3) -->
        </script>
        <script state="off">
            <action>maincpu.mw@122D3 = A399</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x02">02       </item>
            <item value="0x04">03       </item>
            <item value="0x06">04       </item>
            <item value="0x08">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@120EB = 80A700CD        </action> <!-- x position ($a0eb) -->
            <action>maincpu.md@120F3 = 80A705CD        </action> <!-- y position ($a0f3) -->
            <action>maincpu.mq@12700 = F2033A0318F2023A</action>
            <action>maincpu.mq@12708 = EDF0083EC8A77E47</action>
            <action>maincpu.mq@12710 = FFFFFFFFFFFFC944</action>
            <!--
            A700 | 3A 02 F2 : ld   a,($F202) // x position
            A703 | 18 03    : jr   $A708
            A705 | 3A 03 F2 : ld   a,($F203) // y position
            A708 | 47       : ld   b,a
            A709 | 7E       : ld   a,(hl)
            A70A | A7       : and  a
            A70B | C8       : ret  z
            A70C | 3E xx    : ld   a,$xx
            A70E | F0       : ret  p
            A70F | ED 44    : neg
            A711 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@1270D = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@120EB = 86F2023A        </action>
            <action>maincpu.md@120F3 = 86F2033A        </action>
            <action>maincpu.mq@12700 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12708 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12710 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12718 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x04">02       </item>
            <item value="0x08">03       </item>
            <item value="0x0c">04       </item>
            <item value="0x10">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@123B5 = DDA720CD        </action> <!-- x position ($a3b5) -->
            <action>maincpu.md@123C2 = DDA726CD        </action> <!-- y position ($a3c2) -->
            <action>maincpu.mq@12720 = DD4F0418057EDD4F</action>
            <action>maincpu.mq@12728 = F2083E0728A7067E</action>
            <action>maincpu.mq@12730 = FFFFC98144EDA734</action>
            <!--
            A720 | 4F       : ld   c,a        // x position
            A721 | DD 7E 05 : ld   a,(ix+$05)
            A724 | 18 04    : jr   $A72A
            A726 | 4F       : ld   c,a
            A727 | DD 7E 06 : ld   a,(ix+$06) // y position
            A72A | A7       : and  a
            A72B | 28 07    : jr   z,$A734
            A72D | 3E 0C    : ld   a,$0C
            A72F | F2 34 A7 : jp   p,$A734
            A732 | ED 44    : neg
            A734 | 81       : add  a,c
            A735 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@1272E = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@123B5 = DD0586DD        </action>
            <action>maincpu.md@123C2 = DD0686DD        </action>
            <action>maincpu.mq@12720 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12728 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12730 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="short hit mark">
        <script state="on">
            <action>maincpu.mb@00FA1 = 01</action>
            <action>maincpu.mb@014FF = 01</action>
            <action>maincpu.mb@123EB = 01</action> <!-- ($a3eb) -->
        </script>
        <script state="off">
            <action>maincpu.mb@00FA1 = 10</action>
            <action>maincpu.mb@014FF = 10</action>
            <action>maincpu.mb@123EB = 10</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mw@70E9 = 7810            </action>
            <action>maincpu.mq@7810 = 47B8C0013AE10021</action>
            <action>maincpu.mq@7818 = FE350120FDFEF928</action>
            <action>maincpu.mq@7820 = 0420FBFE340120FE</action>
            <action>maincpu.mq@7828 = 0520F7FE0618F03E</action>
            <action>maincpu.mq@7830 = 20EFFE787786103E</action>
            <action>maincpu.mq@7838 = 0420DFFE05187E03</action>
            <action>maincpu.mq@7840 = FFFFCD18C80032AF</action>
            <!--
            7810 | 21 00 E1 : ld   hl,$E100  // sound code address
            7813 | 3A 01 C0 : ld   a,($C001) // read input
            7816 | B8       : cp   b
            7817 | 47       : ld   b,a
            7818 | 28 F9    : jr   z,$7813
            781A | FE FD    : cp   $FD
            781C | 20 01    : jr   nz,$781F
            781E | 35       : dec  (hl)      // decrease code -01
            781F | FE FE    : cp   $FE
            7821 | 20 01    : jr   nz,$7824
            7823 | 34       : inc  (hl)      // increase code +01
            7824 | FE FB    : cp   $FB
            7826 | 20 04    : jr   nz,$782C
            7828 | 3E F0    : ld   a,$F0     // decrease code -10
            782A | 18 06    : jr   $7832
            782C | FE F7    : cp   $F7
            782E | 20 05    : jr   nz,$7835
            7830 | 3E 10    : ld   a,$10     // increase code +10
            7832 | 86       : add  a,(hl)
            7833 | 77       : ld   (hl),a
            7834 | 78       : ld   a,b
            7835 | FE EF    : cp   $EF
            7837 | 20 03    : jr   nz,$783C
            7839 | 7E       : ld   a,(hl)    // play sound
            783A | 18 05    : jr   $7841
            783C | FE DF    : cp   $DF
            783E | 20 04    : jr   nz,$7844
            7840 | AF       : xor  a         // stop sound
            7841 | 32 00 C8 : ld   ($C800),a // send sound code
            7844 | 18 CD    : jr   $7813
            -->
            <!-- stop sfx and music at the same time -->
            <action>audiocpu.mb@010C = 08</action>
            <action>audiocpu.mb@0119 = 08</action>
            <action>audiocpu.mb@011F = 00</action>
        </script>
        <script state="run">
            <output format="----- gun.smoke 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@E100</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mw@70E9 = 04C5            </action>
            <action> maincpu.mq@7810 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7818 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7820 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7828 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7830 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7838 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7840 = FFFFFFFFFFFFFFFF</action>
            <action>audiocpu.mb@010C = 04              </action>
            <action>audiocpu.mb@0119 = 04              </action>
            <action>audiocpu.mb@011F = C9              </action>
        </script>
    </cheat>

</mamecheat>
gunsmokeg.xml

Code: Select all

<!-- Gun.Smoke (Germany, 1985-11-15, censored) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@0100B = C9</action> <!-- bullet -->
            <action>maincpu.mb@015F9 = C9</action> <!-- enemy -->
            <action>maincpu.mb@1221E = C9</action> <!-- background ($a21e) -->
        </script>
        <script state="off">
            <action>maincpu.mb@0100B = 21</action>
            <action>maincpu.mb@015F9 = C0</action>
            <action>maincpu.mb@1221E = D0</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mw@122D3 = A2D5</action> <!-- ($a2d3) -->
        </script>
        <script state="off">
            <action>maincpu.mw@122D3 = A399</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x02">02       </item>
            <item value="0x04">03       </item>
            <item value="0x06">04       </item>
            <item value="0x08">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@120EB = 80A700CD        </action> <!-- x position ($a0eb) -->
            <action>maincpu.md@120F3 = 80A705CD        </action> <!-- y position ($a0f3) -->
            <action>maincpu.mq@12700 = F2033A0318F2023A</action>
            <action>maincpu.mq@12708 = EDF0083EC8A77E47</action>
            <action>maincpu.mq@12710 = FFFFFFFFFFFFC944</action>
            <!--
            A700 | 3A 02 F2 : ld   a,($F202) // x position
            A703 | 18 03    : jr   $A708
            A705 | 3A 03 F2 : ld   a,($F203) // y position
            A708 | 47       : ld   b,a
            A709 | 7E       : ld   a,(hl)
            A70A | A7       : and  a
            A70B | C8       : ret  z
            A70C | 3E xx    : ld   a,$xx
            A70E | F0       : ret  p
            A70F | ED 44    : neg
            A711 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@1270D = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@120EB = 86F2023A        </action>
            <action>maincpu.md@120F3 = 86F2033A        </action>
            <action>maincpu.mq@12700 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12708 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12710 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12718 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x04">02       </item>
            <item value="0x08">03       </item>
            <item value="0x0c">04       </item>
            <item value="0x10">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@123B5 = DDA720CD        </action> <!-- x position ($a3b5) -->
            <action>maincpu.md@123C2 = DDA726CD        </action> <!-- y position ($a3c2) -->
            <action>maincpu.mq@12720 = DD4F0418057EDD4F</action>
            <action>maincpu.mq@12728 = F2083E0728A7067E</action>
            <action>maincpu.mq@12730 = FFFFC98144EDA734</action>
            <!--
            A720 | 4F       : ld   c,a        // x position
            A721 | DD 7E 05 : ld   a,(ix+$05)
            A724 | 18 04    : jr   $A72A
            A726 | 4F       : ld   c,a
            A727 | DD 7E 06 : ld   a,(ix+$06) // y position
            A72A | A7       : and  a
            A72B | 28 07    : jr   z,$A734
            A72D | 3E 0C    : ld   a,$0C
            A72F | F2 34 A7 : jp   p,$A734
            A732 | ED 44    : neg
            A734 | 81       : add  a,c
            A735 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@1272E = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@123B5 = DD0586DD        </action>
            <action>maincpu.md@123C2 = DD0686DD        </action>
            <action>maincpu.mq@12720 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12728 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@12730 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="short hit mark">
        <script state="on">
            <action>maincpu.mb@00FA1 = 01</action>
            <action>maincpu.mb@014FF = 01</action>
            <action>maincpu.mb@123EB = 01</action> <!-- ($a3eb) -->
        </script>
        <script state="off">
            <action>maincpu.mb@00FA1 = 10</action>
            <action>maincpu.mb@014FF = 10</action>
            <action>maincpu.mb@123EB = 10</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mw@70E9 = 7810            </action>
            <action>maincpu.mq@7810 = 47B8C0013AE10021</action>
            <action>maincpu.mq@7818 = FE350120FDFEF928</action>
            <action>maincpu.mq@7820 = 0420FBFE340120FE</action>
            <action>maincpu.mq@7828 = 0520F7FE0618F03E</action>
            <action>maincpu.mq@7830 = 20EFFE787786103E</action>
            <action>maincpu.mq@7838 = 0420DFFE05187E03</action>
            <action>maincpu.mq@7840 = FFFFCD18C80032AF</action>
            <!--
            7810 | 21 00 E1 : ld   hl,$E100  // sound code address
            7813 | 3A 01 C0 : ld   a,($C001) // read input
            7816 | B8       : cp   b
            7817 | 47       : ld   b,a
            7818 | 28 F9    : jr   z,$7813
            781A | FE FD    : cp   $FD
            781C | 20 01    : jr   nz,$781F
            781E | 35       : dec  (hl)      // decrease code -01
            781F | FE FE    : cp   $FE
            7821 | 20 01    : jr   nz,$7824
            7823 | 34       : inc  (hl)      // increase code +01
            7824 | FE FB    : cp   $FB
            7826 | 20 04    : jr   nz,$782C
            7828 | 3E F0    : ld   a,$F0     // decrease code -10
            782A | 18 06    : jr   $7832
            782C | FE F7    : cp   $F7
            782E | 20 05    : jr   nz,$7835
            7830 | 3E 10    : ld   a,$10     // increase code +10
            7832 | 86       : add  a,(hl)
            7833 | 77       : ld   (hl),a
            7834 | 78       : ld   a,b
            7835 | FE EF    : cp   $EF
            7837 | 20 03    : jr   nz,$783C
            7839 | 7E       : ld   a,(hl)    // play sound
            783A | 18 05    : jr   $7841
            783C | FE DF    : cp   $DF
            783E | 20 04    : jr   nz,$7844
            7840 | AF       : xor  a         // stop sound
            7841 | 32 00 C8 : ld   ($C800),a // send sound code
            7844 | 18 CD    : jr   $7813
            -->
            <!-- stop sfx and music at the same time -->
            <action>audiocpu.mb@010C = 08</action>
            <action>audiocpu.mb@0119 = 08</action>
            <action>audiocpu.mb@011F = 00</action>
        </script>
        <script state="run">
            <output format="----- gun.smoke 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@E100</argument>
            </output>
        </script>
        <script state="off">
            <action> maincpu.mw@70E9 = 04C5            </action>
            <action> maincpu.mq@7810 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7818 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7820 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7828 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7830 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7838 = FFFFFFFFFFFFFFFF</action>
            <action> maincpu.mq@7840 = FFFFFFFFFFFFFFFF</action>
            <action>audiocpu.mb@010C = 04              </action>
            <action>audiocpu.mb@0119 = 04              </action>
            <action>audiocpu.mb@011F = C9              </action>
        </script>
    </cheat>

</mamecheat>
  • "player speed", "bullet speed" : Rewritten routine.
  • "sound test mode" : Fixed some sfxs are not stopped by sound stop button.
Post Reply