Code: Select all
<!-- Formation Z -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<action>maincpu.mw@B204 = B2B1</action> <!-- objects -->
<action>maincpu.mw@B23D = B2B1</action> <!-- objects -->
<action>maincpu.mw@B276 = B2B1</action> <!-- objects -->
<action>maincpu.mw@B2AF = B2B1</action> <!-- objects -->
<action>maincpu.mw@CD98 = 1216</action> <!-- ground (fighter) -->
</script>
<script state="off">
<action>maincpu.mw@B204 = B2F8</action>
<action>maincpu.mw@B23D = B2F8</action>
<action>maincpu.mw@B276 = B2F8</action>
<action>maincpu.mw@B2AF = B2F8</action>
<action>maincpu.mw@CD98 = 1026</action>
</script>
</cheat>
<cheat desc="rapid fire">
<!-- buggy shot sound -->
<comment>you can't shoot power-up shot unless use "power up shot"</comment>
<script state="on">
<action>maincpu.mb@D10E = 20</action>
</script>
<script state="off">
<action>maincpu.mb@D10E = 27</action>
</script>
</cheat>
<cheat desc="energy speed">
<parameter>
<item value="0xFF">01 (slow)</item>
<item value="0x80">02 </item>
<item value="0x40">03 </item>
<item value="0x20">04 </item>
<item value="0x01">05 (fast)</item>
</parameter>
<script state="change">
<action>maincpu.pb@01D2 = param</action>
<action>maincpu.mb@E314 = param</action>
</script>
<script state="off">
<action>maincpu.pb@01D2 = 30</action>
<action>maincpu.mb@E314 = 30</action>
</script>
</cheat>
<cheat desc="power up shot">
<script state="on">
<!-- 1st bullet -->
<action>maincpu.md@D16E = BD6FA012</action>
<action>maincpu.mb@D175 = 02 </action>
<action>maincpu.mb@D179 = 03 </action>
<!-- 2nd bullet -->
<action>maincpu.md@D193 = BD6FA612</action>
<action>maincpu.mb@D19A = 02 </action>
<action>maincpu.mb@D19E = 03 </action>
<!-- 3rd bullet -->
<action>maincpu.md@D1BA = BD6FAC12</action>
<action>maincpu.mb@D1C1 = 02 </action>
<action>maincpu.mb@D1C5 = 03 </action>
<!-- common routine -->
<action>maincpu.mq@6FA0 = F602AFD77E39F602</action>
<action>maincpu.mq@6FA8 = AFD78339F602AFD7</action>
<action>maincpu.mq@6FB0 = 8839FFFFFFFFFFFF</action>
<!--
6FA0 | F6 02 AF : LDB $02AF // 1st bullet
6FA3 | D7 7E : STB $7E
6FA5 | 39 : RTS
6FA6 | F6 02 AF : LDB $02AF // 2nd bullet
6FA9 | D7 83 : STB $83
6FAB | 39 : RTS
6FAC | F6 02 AF : LDB $02AF // 3rd bullet
6FAF | D7 88 : STB $88
6FB1 | 39 : RTS
-->
</script>
<script state="off">
<action>maincpu.md@D16E = D67AD77E </action>
<action>maincpu.mb@D175 = 01 </action>
<action>maincpu.mb@D179 = 02 </action>
<action>maincpu.md@D193 = D67AD783 </action>
<action>maincpu.mb@D19A = 01 </action>
<action>maincpu.mb@D19E = 02 </action>
<action>maincpu.md@D1BA = D67AD788 </action>
<action>maincpu.mb@D1C1 = 01 </action>
<action>maincpu.mb@D1C5 = 02 </action>
<action>maincpu.mq@6FA0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@6FA8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@6FB0 = FFFFFFFFFFFFFFFF</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@8B01 = 6F00 </action>
<action>maincpu.mq@6F00 = 8E00006F808C3000</action>
<action>maincpu.mq@6F08 = 26F9CE3000C6FFD7</action>
<action>maincpu.mq@6F10 = 0B1CEFD60B26FC1A</action>
<action>maincpu.mq@6F18 = 50C6FFE741E74297</action>
<action>maincpu.mq@6F20 = 81A6C4918127E6D6</action>
<action>maincpu.mq@6F28 = 8081F726015A81FB</action>
<action>maincpu.mq@6F30 = 26015C81FD2602C0</action>
<action>maincpu.mq@6F38 = 1081FE2602CB10D7</action>
<action>maincpu.mq@6F40 = 8081BF2606D682C8</action>
<action>maincpu.mq@6F48 = 01D78281DF261034</action>
<action>maincpu.mq@6F50 = 04D68226063504E7</action>
<action>maincpu.mq@6F58 = 4120043504E74281</action>
<action>maincpu.mq@6F60 = EF26055FE741E742</action>
<action>maincpu.mq@6F68 = 20A3000000000000</action>
<!--
6F00 | 8E 00 00 : LDX #$0000 // clear graphics
6F03 | 6F 80 : CLR ,X+
6F05 | 8C 30 00 : CMPX #$3000
6F08 | 26 F9 : BNE $6F03
6F0A | CE 30 00 : LDU #$3000 // input address
6F0D | C6 FF : LDB #$FF
6F0F | D7 0B : STB $0B
6F11 | 1C EF : ANDCC #$EF // enable interrupt
6F13 | D6 0B : LDB $0B // wait interrput
6F15 | 26 FC : BNE $6F13
6F17 | 1A 50 : ORCC #$50 // disable interrupt
6F19 | C6 FF : LDB #$FF
6F1B | E7 41 : STB $1,U
6F1D | E7 42 : STB $2,U
6F1F | 97 81 : STA $81
6F21 | A6 C4 : LDA ,U // read input
6F23 | 91 81 : CMPA $81
6F25 | 27 E6 : BEQ $6F0D
6F27 | D6 80 : LDB $80
6F29 | 81 F7 : CMPA #$F7
6F2B | 26 01 : BNE $6F2E
6F2D | 5A : DECB // decrease code -01
6F2E | 81 FB : CMPA #$FB
6F30 | 26 01 : BNE $6F33
6F32 | 5C : INCB // increase code +01
6F33 | 81 FD : CMPA #$FD
6F35 | 26 02 : BNE $6F39
6F37 | C0 10 : SUBB #$10 // decrease code -10
6F39 | 81 FE : CMPA #$FE
6F3B | 26 02 : BNE $6F3F
6F3D | CB 10 : ADDB #$10 // increase code +10
6F3F | D7 80 : STB $80
6F41 | 81 BF : CMPA #$BF
6F43 | 26 06 : BNE $6F4B
6F45 | D6 82 : LDB $82 // switch sound latch
6F47 | C8 01 : EORB #$01
6F49 | D7 82 : STB $82
6F4B | 81 DF : CMPA #$DF
6F4D | 26 10 : BNE $6F5F
6F4F | 34 04 : PSHS B // play sound
6F51 | D6 82 : LDB $82
6F53 | 26 06 : BNE $6F5B
6F55 | 35 04 : PULS B
6F57 | E7 41 : STB $1,U // sound latch 1
6F59 | 20 04 : BRA $6F5F
6F5B | 35 04 : PULS B
6F5D | E7 42 : STB $2,U // sound latch 2
6F5F | 81 EF : CMPA #$EF
6F61 | 26 05 : BNE $6F68
6F63 | 5F : CLRB // stop sound
6F64 | E7 41 : STB $1,U
6F66 | E7 42 : STB $2,U
6F68 | 20 A3 : BRA $6F0D
-->
<!-- reset audio cpu to stop sound -->
<action>audiocpu.mw@F08B = F720 </action>
<action>audiocpu.mq@F720 = BDF081810026037E</action>
<action>audiocpu.mq@F728 = F00039FFFFFFFFFF</action>
<!--
F720 | BD F0 81 : JSR $F081
F723 | 81 00 : CMPA #$00
F725 | 26 03 : BNE $F72A
F727 | 7E F0 00 : JMP $F000
F72A | 39 : RTS
-->
</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="start : switch sound latch" line="17" align="center" />
<output format="----------------------------" line="18" align="center" />
<output format="<< sound latch %01X >>" line="20" align="center" >
<argument>maincpu.pb@0082</argument>
</output>
<output format="<< sound code %02X >>" line="22" align="center" >
<argument>maincpu.pb@0080</argument>
</output>
</script>
<script state="off">
<action> maincpu.mw@8B01 = A972 </action>
<action> maincpu.mq@6F00 = 0000000000000000</action>
<action> maincpu.mq@6F08 = 0000000000000000</action>
<action> maincpu.mq@6F10 = 0000000000000000</action>
<action> maincpu.mq@6F18 = 0000000000000000</action>
<action> maincpu.mq@6F20 = 0000000000000000</action>
<action> maincpu.mq@6F28 = 0000000000000000</action>
<action> maincpu.mq@6F30 = 0000000000000000</action>
<action> maincpu.mq@6F38 = 0000000000000000</action>
<action> maincpu.mq@6F40 = 0000000000000000</action>
<action> maincpu.mq@6F48 = 0000000000000000</action>
<action> maincpu.mq@6F50 = 0000000000000000</action>
<action> maincpu.mq@6F58 = 0000000000000000</action>
<action> maincpu.mq@6F60 = 0000000000000000</action>
<action> maincpu.mq@6F68 = 0000000000000000</action>
<action>audiocpu.mw@F08B = F081 </action>
<action>audiocpu.mq@F720 = FFFFFFFFFFFFFFFF</action>
<action>audiocpu.mq@F728 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
</mamecheat>
Code: Select all
<!-- Aeroboto -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<action>maincpu.mw@B204 = B2B1</action> <!-- objects -->
<action>maincpu.mw@B23D = B2B1</action> <!-- objects -->
<action>maincpu.mw@B276 = B2B1</action> <!-- objects -->
<action>maincpu.mw@B2AF = B2B1</action> <!-- objects -->
<action>maincpu.mw@CD98 = 1216</action> <!-- ground (fighter) -->
</script>
<script state="off">
<action>maincpu.mw@B204 = B2F8</action>
<action>maincpu.mw@B23D = B2F8</action>
<action>maincpu.mw@B276 = B2F8</action>
<action>maincpu.mw@B2AF = B2F8</action>
<action>maincpu.mw@CD98 = 1026</action>
</script>
</cheat>
<cheat desc="rapid fire">
<!-- buggy shot sound -->
<comment>you can't shoot power-up shot unless use "power up shot"</comment>
<script state="on">
<action>maincpu.mb@D10E = 20</action>
</script>
<script state="off">
<action>maincpu.mb@D10E = 27</action>
</script>
</cheat>
<cheat desc="energy speed">
<parameter>
<item value="0xFF">01 (slow)</item>
<item value="0x80">02 </item>
<item value="0x40">03 </item>
<item value="0x20">04 </item>
<item value="0x01">05 (fast)</item>
</parameter>
<script state="change">
<action>maincpu.pb@01D2 = param</action>
<action>maincpu.mb@E314 = param</action>
</script>
<script state="off">
<action>maincpu.pb@01D2 = 30</action>
<action>maincpu.mb@E314 = 30</action>
</script>
</cheat>
<cheat desc="power up shot">
<script state="on">
<!-- 1st bullet -->
<action>maincpu.md@D16E = BD6FA012</action>
<action>maincpu.mb@D175 = 02 </action>
<action>maincpu.mb@D179 = 03 </action>
<!-- 2nd bullet -->
<action>maincpu.md@D193 = BD6FA612</action>
<action>maincpu.mb@D19A = 02 </action>
<action>maincpu.mb@D19E = 03 </action>
<!-- 3rd bullet -->
<action>maincpu.md@D1BA = BD6FAC12</action>
<action>maincpu.mb@D1C1 = 02 </action>
<action>maincpu.mb@D1C5 = 03 </action>
<!-- common routine -->
<action>maincpu.mq@6FA0 = F602AFD77E39F602</action>
<action>maincpu.mq@6FA8 = AFD78339F602AFD7</action>
<action>maincpu.mq@6FB0 = 8839FFFFFFFFFFFF</action>
<!--
6FA0 | F6 02 AF : LDB $02AF // 1st bullet
6FA3 | D7 7E : STB $7E
6FA5 | 39 : RTS
6FA6 | F6 02 AF : LDB $02AF // 2nd bullet
6FA9 | D7 83 : STB $83
6FAB | 39 : RTS
6FAC | F6 02 AF : LDB $02AF // 3rd bullet
6FAF | D7 88 : STB $88
6FB1 | 39 : RTS
-->
</script>
<script state="off">
<action>maincpu.md@D16E = D67AD77E </action>
<action>maincpu.mb@D175 = 01 </action>
<action>maincpu.mb@D179 = 02 </action>
<action>maincpu.md@D193 = D67AD783 </action>
<action>maincpu.mb@D19A = 01 </action>
<action>maincpu.mb@D19E = 02 </action>
<action>maincpu.md@D1BA = D67AD788 </action>
<action>maincpu.mb@D1C1 = 01 </action>
<action>maincpu.mb@D1C5 = 02 </action>
<action>maincpu.mq@6FA0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@6FA8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@6FB0 = FFFFFFFFFFFFFFFF</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@8B01 = 6F00 </action>
<action>maincpu.mq@6F00 = 8E00006F808C3000</action>
<action>maincpu.mq@6F08 = 26F9CE3000C6FFD7</action>
<action>maincpu.mq@6F10 = 0B1CEFD60B26FC1A</action>
<action>maincpu.mq@6F18 = 50C6FFE741E74297</action>
<action>maincpu.mq@6F20 = 81A6C4918127E6D6</action>
<action>maincpu.mq@6F28 = 8081F726015A81FB</action>
<action>maincpu.mq@6F30 = 26015C81FD2602C0</action>
<action>maincpu.mq@6F38 = 1081FE2602CB10D7</action>
<action>maincpu.mq@6F40 = 8081BF2606D682C8</action>
<action>maincpu.mq@6F48 = 01D78281DF261034</action>
<action>maincpu.mq@6F50 = 04D68226063504E7</action>
<action>maincpu.mq@6F58 = 4120043504E74281</action>
<action>maincpu.mq@6F60 = EF26055FE741E742</action>
<action>maincpu.mq@6F68 = 20A3000000000000</action>
<!--
6F00 | 8E 00 00 : LDX #$0000 // clear graphics
6F03 | 6F 80 : CLR ,X+
6F05 | 8C 30 00 : CMPX #$3000
6F08 | 26 F9 : BNE $6F03
6F0A | CE 30 00 : LDU #$3000 // input address
6F0D | C6 FF : LDB #$FF
6F0F | D7 0B : STB $0B
6F11 | 1C EF : ANDCC #$EF // enable interrupt
6F13 | D6 0B : LDB $0B // wait interrput
6F15 | 26 FC : BNE $6F13
6F17 | 1A 50 : ORCC #$50 // disable interrupt
6F19 | C6 FF : LDB #$FF
6F1B | E7 41 : STB $1,U
6F1D | E7 42 : STB $2,U
6F1F | 97 81 : STA $81
6F21 | A6 C4 : LDA ,U // read input
6F23 | 91 81 : CMPA $81
6F25 | 27 E6 : BEQ $6F0D
6F27 | D6 80 : LDB $80
6F29 | 81 F7 : CMPA #$F7
6F2B | 26 01 : BNE $6F2E
6F2D | 5A : DECB // decrease code -01
6F2E | 81 FB : CMPA #$FB
6F30 | 26 01 : BNE $6F33
6F32 | 5C : INCB // increase code +01
6F33 | 81 FD : CMPA #$FD
6F35 | 26 02 : BNE $6F39
6F37 | C0 10 : SUBB #$10 // decrease code -10
6F39 | 81 FE : CMPA #$FE
6F3B | 26 02 : BNE $6F3F
6F3D | CB 10 : ADDB #$10 // increase code +10
6F3F | D7 80 : STB $80
6F41 | 81 BF : CMPA #$BF
6F43 | 26 06 : BNE $6F4B
6F45 | D6 82 : LDB $82 // switch sound latch
6F47 | C8 01 : EORB #$01
6F49 | D7 82 : STB $82
6F4B | 81 DF : CMPA #$DF
6F4D | 26 10 : BNE $6F5F
6F4F | 34 04 : PSHS B // play sound
6F51 | D6 82 : LDB $82
6F53 | 26 06 : BNE $6F5B
6F55 | 35 04 : PULS B
6F57 | E7 41 : STB $1,U // sound latch 1
6F59 | 20 04 : BRA $6F5F
6F5B | 35 04 : PULS B
6F5D | E7 42 : STB $2,U // sound latch 2
6F5F | 81 EF : CMPA #$EF
6F61 | 26 05 : BNE $6F68
6F63 | 5F : CLRB // stop sound
6F64 | E7 41 : STB $1,U
6F66 | E7 42 : STB $2,U
6F68 | 20 A3 : BRA $6F0D
-->
<!-- reset audio cpu to stop sound -->
<action>audiocpu.mw@F08B = F720 </action>
<action>audiocpu.mq@F720 = BDF081810026037E</action>
<action>audiocpu.mq@F728 = F00039FFFFFFFFFF</action>
<!--
F720 | BD F0 81 : JSR $F081
F723 | 81 00 : CMPA #$00
F725 | 26 03 : BNE $F72A
F727 | 7E F0 00 : JMP $F000
F72A | 39 : RTS
-->
</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="start : switch sound latch" line="17" align="center" />
<output format="----------------------------" line="18" align="center" />
<output format="<< sound latch %01X >>" line="20" align="center" >
<argument>maincpu.pb@0082</argument>
</output>
<output format="<< sound code %02X >>" line="22" align="center" >
<argument>maincpu.pb@0080</argument>
</output>
</script>
<script state="off">
<action> maincpu.mw@8B01 = A972 </action>
<action> maincpu.mq@6F00 = 0000000000000000</action>
<action> maincpu.mq@6F08 = 0000000000000000</action>
<action> maincpu.mq@6F10 = 0000000000000000</action>
<action> maincpu.mq@6F18 = 0000000000000000</action>
<action> maincpu.mq@6F20 = 0000000000000000</action>
<action> maincpu.mq@6F28 = 0000000000000000</action>
<action> maincpu.mq@6F30 = 0000000000000000</action>
<action> maincpu.mq@6F38 = 0000000000000000</action>
<action> maincpu.mq@6F40 = 0000000000000000</action>
<action> maincpu.mq@6F48 = 0000000000000000</action>
<action> maincpu.mq@6F50 = 0000000000000000</action>
<action> maincpu.mq@6F58 = 0000000000000000</action>
<action> maincpu.mq@6F60 = 0000000000000000</action>
<action> maincpu.mq@6F68 = 0000000000000000</action>
<action>audiocpu.mw@F08B = F081 </action>
<action>audiocpu.mq@F720 = FFFFFFFFFFFFFFFF</action>
<action>audiocpu.mq@F728 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
</mamecheat>
- "no hit" : You die when you fall into sea in robot mode. Also you die when you crash into coast in fighter mode.
- "rapid fire" : Buggy shot sound is played during holding fire button.
- "power up shot" : This code replaces normal shot with super shot. So you can use "rapid fire" at the same time.
- "sound test mode" : Different sound is played when you switch sound latch. But I don't grasp that what sound code is what sound.