[4dwarrio] 4-D Warriors

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

[4dwarrio] 4-D Warriors

Post by jman »

4dwarrio.xml

Code: Select all

<!-- 4-D Warriors (315-5162) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@1FC9 = E3</action> <!-- enemy -->
            <action>maincpu.mb@1FD1 = E3</action> <!-- enemy -->
            <action>maincpu.mb@2015 = A9</action> <!-- enemy -->
            <action>maincpu.ob@23A4 = C9</action> <!-- enemy -->
            <action>maincpu.ob@6B68 = C9</action> <!-- most objects -->
            <action>maincpu.mb@78F6 = ED</action> <!-- enemy -->
            <action>maincpu.mb@78FE = ED</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@1FC9 = E4</action>
            <action>maincpu.mb@1FD1 = F9</action>
            <action>maincpu.mb@2015 = A5</action>
            <action>maincpu.ob@23A4 = D8</action>
            <action>maincpu.ob@6B68 = C0</action>
            <action>maincpu.mb@78F6 = DB</action>
            <action>maincpu.mb@78FE = DB</action>
        </script>
    </cheat>

    <cheat desc="rapid fire">
        <script state="on">
            <action>maincpu.mb@1FA4 = A0</action>
        </script>
        <script state="off">
            <action>maincpu.mb@1FA4 = 20</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x03">02       </item>
            <item value="0x05">03       </item>
            <item value="0x07">04       </item>
            <item value="0x09">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.od@1F6F = 23FFFFCD        </action> <!-- x position -->
            <action>maincpu.md@1F6F = FFB880FF        </action>
            <action>maincpu.od@1F74 = 11FFFFCD        </action> <!-- y position -->
            <action>maincpu.md@1F74 = FFB887FF        </action>
            <action>maincpu.mq@B880 = CDC90F77DDB88ECD</action>
            <action>maincpu.mq@B888 = C8A7C91177DDB88E</action>
            <action>maincpu.mq@B890 = C944EDC8003E7FCB</action>
            <!--
            B880 | CD 8E B8 : call $B88E      // x position
            B883 | DD 77 0F : ld   (ix+$0f),a
            B886 | C9       : ret
            B887 | CD 8E B8 : call $B88E      // y position
            B88A | DD 77 11 : ld   (ix+$11),a
            B88D | C9       : ret
            B88E | A7       : and  a          // common routine
            B88F | C8       : ret  z
            B890 | CB 7F    : bit  7,a
            B892 | 3E xx    : ld   a,$xx
            B894 | C8       : ret  z
            B895 | ED 44    : neg
            B897 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@B893 = param</action>
        </script>
        <script state="off">
            <action>maincpu.od@1F6F = 235B77DD        </action>
            <action>maincpu.md@1F6F = 730F2788        </action>
            <action>maincpu.od@1F74 = 114177DD        </action>
            <action>maincpu.md@1F74 = 4511238D        </action>
            <action>maincpu.mq@B880 = FFFF0000FFFF0000</action>
            <action>maincpu.mq@B888 = FFFF0000FFFF0000</action>
            <action>maincpu.mq@B890 = FFFF0000FFFF0000</action>
        </script>
    </cheat>

    <cheat desc="bullet speed - main shot">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x0C">02       </item>
            <item value="0x12">03       </item>
            <item value="0x18">04       </item>
            <item value="0x1E">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@6FC9 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@6FC9 = 0C</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <!-- some sfxs (eg code 0x10) don't stop by sound stop button -->
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.mw@196B = B898            </action>
            <action>maincpu.mq@B898 = 2847B800DBC00021</action>
            <action>maincpu.mq@B8A0 = BFFE3501207FFEFA</action>
            <action>maincpu.mq@B8A8 = 3E0420EFFE340120</action>
            <action>maincpu.mq@B8B0 = 3E0520DFFE0618F0</action>
            <action>maincpu.mq@B8B8 = 0520FBFE78778610</action>
            <action>maincpu.mq@B8C0 = 20FDFE051880F67E</action>
            <action>maincpu.mq@B8C8 = FFFFCD1818D3AF03</action>
            <!--
            B898 | 21 00 C0 : ld   hl,$C000 // sound code address
            B89B | DB 00    : in   a,($00)  // read input
            B89D | B8       : cp   b
            B89E | 47       : ld   b,a
            B89F | 28 FA    : jr   z,$B89B
            B8A1 | FE 7F    : cp   $7F
            B8A3 | 20 01    : jr   nz,$B8A6
            B8A5 | 35       : dec  (hl)     // decrease code -01
            B8A6 | FE BF    : cp   $BF
            B8A8 | 20 01    : jr   nz,$B8AB
            B8AA | 34       : inc  (hl)     // increase code +01
            B8AB | FE EF    : cp   $EF
            B8AD | 20 04    : jr   nz,$B8B3
            B8AF | 3E F0    : ld   a,$F0    // decrease code -10
            B8B1 | 18 06    : jr   $B8B9
            B8B3 | FE DF    : cp   $DF
            B8B5 | 20 05    : jr   nz,$B8BC
            B8B7 | 3E 10    : ld   a,$10    // increase code +10
            B8B9 | 86       : add  a,(hl)
            B8BA | 77       : ld   (hl),a
            B8BB | 78       : ld   a,b
            B8BC | FE FB    : cp   $FB
            B8BE | 20 05    : jr   nz,$B8C5
            B8C0 | 7E       : ld   a,(hl)   // play sound
            B8C1 | F6 80    : or   $80
            B8C3 | 18 05    : jr   $B8CA
            B8C5 | FE FD    : cp   $FD
            B8C7 | 20 03    : jr   nz,$B8CC
            B8C9 | AF       : xor  a        // stop sound
            B8CA | D3 18    : out  ($18),a  // send sound code
            B8CC | 18 CD    : jr   $B89B
            -->
        </script>
        <script state="run">
            <output format="----- 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@C000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@196B = 1976            </action>
            <action>maincpu.mq@B898 = FFFF2A00FFFF0000</action>
            <action>maincpu.mq@B8A0 = FFFF0000FFFF0000</action>
            <action>maincpu.mq@B8A8 = FFFF0000FFFF0000</action>
            <action>maincpu.mq@B8B0 = FFFF0000FFFF0000</action>
            <action>maincpu.mq@B8B8 = AAFF2A00FFFF0000</action>
            <action>maincpu.mq@B8C0 = FFFF0000FFFF0000</action>
            <action>maincpu.mq@B8C8 = FFFF0000FFFF0000</action>
        </script>
    </cheat>

</mamecheat>
  • "no hit" : No effect for some enemies in rare case.
  • "sound test mode" : Some sfxs (for example, code 0x10) don't stop by sound stop button.
jman

my wip cheat database back-up (06/01/2025 ver.)
https://u3.getuploader.com/...../download/58
downloadpass : jman2020
Post Reply