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="<< sound code %02X >>" 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.