Code: Select all
<!-- Task Force Harrier -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<action>maincpu.mb@0BA0 = 60</action>
</script>
<script state="off">
<action>maincpu.mb@0BA0 = 66</action>
</script>
</cheat>
<cheat desc="rapid fire">
<script state="on">
<action>maincpu.mb@146F = 01</action> <!-- sidefighters (v-shot) -->
<action>maincpu.mb@1565 = 01</action> <!-- sidefighters (missile) -->
<action>maincpu.mb@16AF = 01</action> <!-- sidefighters (homing) -->
<action>maincpu.mb@1941 = 01</action> <!-- player (shot) -->
<action>maincpu.mb@1AB5 = 01</action> <!-- player (bomb I) -->
<action>maincpu.mb@1B89 = 01</action> <!-- player (bomb II) -->
<action>maincpu.mb@1C57 = 01</action> <!-- plaery (bomb III) -->
<action>maincpu.mb@1DC5 = 01</action> <!-- player (bomb I) -->
<action>maincpu.mb@1E99 = 01</action> <!-- player (bomb II) -->
<action>maincpu.mb@1F67 = 01</action> <!-- player (bomb III) -->
</script>
<script state="off">
<action>maincpu.mb@146F = 08</action>
<action>maincpu.mb@1565 = 0A</action>
<action>maincpu.mb@16AF = 06</action>
<action>maincpu.mb@1941 = 06</action>
<action>maincpu.mb@1AB5 = B</action>
<action>maincpu.mb@1B89 = 20</action>
<action>maincpu.mb@1C57 = B</action>
<action>maincpu.mb@1DC5 = B</action>
<action>maincpu.mb@1E99 = 20</action>
<action>maincpu.mb@1F67 = B</action>
</script>
</cheat>
<cheat desc="player speed">
<parameter>
<item value="0x00008000">01 (slow)</item>
<item value="0x00028000">02 </item>
<item value="0x00048000">03 </item>
<item value="0x00068000">04 </item>
<item value="0x00088000">05 (fast)</item>
</parameter>
<script state="on">
<action>maincpu.mq@00D2E = 4EB900023E604E71</action>
<action>maincpu.mq@23E60 = 223008000C6E00A2</action>
<action>maincpu.mq@23E68 = 00486410263C0000</action>
<action>maincpu.mq@23E70 = 00004A8167066A02</action>
<action>maincpu.mq@23E78 = 4483220320300804</action>
<action>maincpu.mq@23E80 = 0C6E00A200486410</action>
<action>maincpu.mq@23E88 = 263C000000004A80</action>
<action>maincpu.mq@23E90 = 67066A0244832003</action>
<action>maincpu.mq@23E98 = 4E75000000000000</action>
<!--
23E60 | 2230 0800 : move.l (A0,D0.l), D1 // y position
23E64 | 0C6E 00A2 0048 : cmpi.w #$a2, ($48,A6) // check auto move flag
23E6A | 6410 : bcc $23e7c
23E6C | 263C xxxx xxxx : move.l #$xxxx, D3
23E72 | 4A81 : tst.l D1
23E74 | 6706 : beq $23e7c
23E76 | 6A02 : bpl $23e7a
23E78 | 4483 : neg.l D3
23E7A | 2203 : move.l D3, D1
23E7C | 2030 0804 : move.l ($4,A0,D0.l), D0 // x position
23E80 | 0C6E 00A2 0048 : cmpi.w #$a2, ($48,A6) // check auto move flag
23E86 | 6410 : bcc $23e98
23E88 | 263C xxxx xxxx : move.l #$xxxx, D3
23E8E | 4A80 : tst.l D0
23E90 | 6706 : beq $23e98
23E92 | 6A02 : bpl $23e96
23E94 | 4483 : neg.l D3
23E96 | 2003 : move.l D3, D0
23E98 | 4E75 : rts
-->
</script>
<script state="change">
<action>maincpu.md@23E6E = param</action>
<action>maincpu.md@23E8A = param</action>
</script>
<script state="off">
<action>maincpu.mq@00D2E = 2230080020300804</action>
<action>maincpu.mq@23E60 = 0000000000000000</action>
<action>maincpu.mq@23E68 = 0000000000000000</action>
<action>maincpu.mq@23E70 = 0000000000000000</action>
<action>maincpu.mq@23E78 = 0000000000000000</action>
<action>maincpu.mq@23E80 = 0000000000000000</action>
<action>maincpu.mq@23E88 = 0000000000000000</action>
<action>maincpu.mq@23E90 = 0000000000000000</action>
<action>maincpu.mq@23E98 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="bullet speed">
<parameter min="01" max="05" step="01" />
<script state="on">
<action>maincpu.mw@09D8 = F828 </action>
<action>maincpu.mw@523C = AFC4 </action>
<action>maincpu.mq@0200 = 7E002F074EB80EE6</action>
<action>maincpu.mq@0208 = 2E1F51CFFFF64E75</action>
<!--
0200 | 7Exx : moveq #$xx, D7
0202 | 2F07 : move.l D7, -(A7)
0204 | 4EB8 0EE6 : jsr $ee6.w
0208 | 2E1F : move.l (A7)+, D7
020A | 51CF FFF6 : dbra D7, $202
020E | 4E75 : rts
-->
</script>
<script state="change">
<action>maincpu.mb@0201 = param - 1</action>
</script>
<script state="off">
<action>maincpu.mw@09D8 = 050E </action>
<action>maincpu.mw@523C = BCAA </action>
<action>maincpu.mq@0200 = 0000000000000000</action>
<action>maincpu.mq@0208 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="short hit mark">
<script state="on">
<action>maincpu.mb@0F12 = 60</action>
</script>
<script state="off">
<action>maincpu.mb@0F12 = 67</action>
</script>
</cheat>
<cheat desc="shot breaks ground enemy (test)">
<script state="on">
<action>maincpu.mw@3C24 = 0002</action>
</script>
<script state="off">
<action>maincpu.mw@3C24 = 0102</action>
</script>
</cheat>
<cheat desc="auto damage">
<script state="on">
<action>maincpu.mq@03B8C = 4EB900023EF04E71</action>
<action>maincpu.mq@03C40 = 4EB900023EF04E71</action>
<action>maincpu.mq@23EF0 = 302E00100C4002E8</action>
<action>maincpu.mq@23EF8 = 62240C400200631E</action>
<action>maincpu.mq@23F00 = 302E00140C4002E0</action>
<action>maincpu.mq@23F08 = 62140C4001F8630E</action>
<action>maincpu.mq@23F10 = 3D7C0008000C586E</action>
<action>maincpu.mq@23F18 = 002A08D600073A2E</action>
<action>maincpu.mq@23F20 = 0040382E00424E75</action>
<!--
23EF0 | 302E 0010 : move.w ($10,A6), D0 // check y position
23EF4 | 0C40 02E8 : cmpi.w #$2e8, D0
23EF8 | 6224 : bhi $23f1e
23EFA | 0C40 0200 : cmpi.w #$200, D0
23EFE | 631E : bls $23f1e
23F00 | 302E 0014 : move.w ($14,A6), D0 // check x position
23F04 | 0C40 02E0 : cmpi.w #$2e0, D0
23F08 | 6214 : bhi $23f1e
23F0A | 0C40 01F8 : cmpi.w #$1f8, D0
23F0E | 630E : bls $23f1e
23F10 | 3D7C 0008 000C : move.w #$8, ($c,A6) // set flags
23F16 | 586E 002A : addq.w #4, ($2a,A6)
23F1A | 08D6 0007 : bset #$7, (A6)
23F1E | 3A2E 0040 : move.w ($40,A6), D5
23F22 | 382E 0042 : move.w ($42,A6), D4
23F26 | 4E75 : rts
-->
</script>
<script state="off">
<action>maincpu.mq@03B8C = 3A2E0040382E0042</action>
<action>maincpu.mq@03C40 = 3A2E0040382E0042</action>
<action>maincpu.mq@23EF0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@23EF8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@23F00 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@23F08 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@23F10 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@23F18 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@23F20 = 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.mb@00422 = 60 </action> <!-- disable "stop" opcode after soft reset -->
<action>maincpu.mq@04CB4 = 4EF900023EA06100</action>
<action>maincpu.mq@23EA0 = 41F9000F000043F9</action>
<action>maincpu.mq@23EA8 = 0008001F12001029</action>
<action>maincpu.mq@23EB0 = 01E4B20067F60C00</action>
<action>maincpu.mq@23EB8 = 0010660253100C00</action>
<action>maincpu.mq@23EC0 = 0008660252100C00</action>
<action>maincpu.mq@23EC8 = 0020660404100010</action>
<action>maincpu.mq@23ED0 = 0C00004066040610</action>
<action>maincpu.mq@23ED8 = 00100C0000026602</action>
<action>maincpu.mq@23EE0 = 12900C0000046602</action>
<action>maincpu.mq@23EE8 = 421160C000000000</action>
<!--
23EA0 | 41F9 000F 0000 : lea $f0000.l, A0 // sound code address
23EA6 | 43F9 0008 001F : lea $8001f.l, A1 // sound latch address
23EAC | 1200 : move.b D0, D1
23EAE | 1029 01E4 : move.b ($1e4,A1), D0 // read input ($80203)
23EB2 | B200 : cmp.b D0, D1
23EB4 | 67F6 : beq $23eac
23EB6 | 0C00 0010 : cmpi.b #$10, D0
23EBA | 6602 : bne $23ebe
23EBC | 5310 : subq.b #1, (A0) // decrease code -01
23EBE | 0C00 0008 : cmpi.b #$8, D0
23EC2 | 6602 : bne $23ec6
23EC4 | 5210 : addq.b #1, (A0) // increase code +01
23EC6 | 0C00 0020 : cmpi.b #$20, D0
23ECA | 6604 : bne $23ed0
23ECC | 0410 0010 : subi.b #$10, (A0) // decrease code -10
23ED0 | 0C00 0040 : cmpi.b #$40, D0
23ED4 | 6604 : bne $23eda
23ED6 | 0610 0010 : addi.b #$10, (A0) // increase code +10
23EDA | 0C00 0002 : cmpi.b #$2, D0
23EDE | 6602 : bne $23ee2
23EE0 | 1290 : move.b (A0), (A1) // play sound
23EE2 | 0C00 0004 : cmpi.b #$4, D0
23EE6 | 6602 : bne $23eea
23EE8 | 4211 : clr.b (A1) // stop sound
23EEA | 60C0 : bra $23eac
-->
<!-- stop music and sfx at the same time -->
<action>audiocpu.md@0109 = 000E10CD </action>
<action>audiocpu.mq@0E10 = E03EC0A721AE21DD</action>
<action>audiocpu.mq@0E18 = FFC9AFC10D01CDC5</action>
<!--
0E10 | DD 21 AE 21 : ld ix,$21AE
0E14 | A7 : and a
0E15 | C0 : ret nz
0E16 | 3E E0 : ld a,$E0
0E18 | C5 : push bc
0E19 | CD 01 0D : call $0D01
0E1C | C1 : pop bc
0E1D | AF : xor a
0E1E | C9 : ret
-->
</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@F0000</argument>
</output>
</script>
<script state="off">
<action> maincpu.mb@00422 = 67 </action>
<action> maincpu.mq@04CB4 = 007C070070136100</action>
<action> maincpu.mq@23EA0 = 0000000000000000</action>
<action> maincpu.mq@23EA8 = 0000000000000000</action>
<action> maincpu.mq@23EB0 = 0000000000000000</action>
<action> maincpu.mq@23EB8 = 0000000000000000</action>
<action> maincpu.mq@23EC0 = 0000000000000000</action>
<action> maincpu.mq@23EC8 = 0000000000000000</action>
<action> maincpu.mq@23ED0 = 0000000000000000</action>
<action> maincpu.mq@23ED8 = 0000000000000000</action>
<action> maincpu.mq@23EE0 = 0000000000000000</action>
<action> maincpu.mq@23EE8 = 0000000000000000</action>
<action>audiocpu.md@00109 = 21AE21DD </action>
<action>audiocpu.mq@00E10 = FFFFFFFFFFFFFFFF</action>
<action>audiocpu.mq@00E18 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="skip rom check">
<script state="on">
<action>maincpu.mw@4CAE = 2052</action>
</script>
<script state="off">
<action>maincpu.mw@4CAE = 2054</action>
</script>
</cheat>
</mamecheat>
Code: Select all
<!-- Task Force Harrier (US) -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<action>maincpu.mb@0BB4 = 60</action>
</script>
<script state="off">
<action>maincpu.mb@0BB4 = 66</action>
</script>
</cheat>
<cheat desc="rapid fire">
<script state="on">
<action>maincpu.mb@1483 = 01</action> <!-- sidefighters (v-shot) -->
<action>maincpu.mb@1579 = 01</action> <!-- sidefighters (missile) -->
<action>maincpu.mb@16C3 = 01</action> <!-- sidefighters (homing) -->
<action>maincpu.mb@1955 = 01</action> <!-- player (shot) -->
<action>maincpu.mb@1AC9 = 01</action> <!-- player (bomb I) -->
<action>maincpu.mb@1B9D = 01</action> <!-- player (bomb II) -->
<action>maincpu.mb@1C6B = 01</action> <!-- plaery (bomb III) -->
<action>maincpu.mb@1DD9 = 01</action> <!-- player (bomb I) -->
<action>maincpu.mb@1EAD = 01</action> <!-- player (bomb II) -->
<action>maincpu.mb@1F7B = 01</action> <!-- player (bomb III) -->
</script>
<script state="off">
<action>maincpu.mb@1483 = 08</action>
<action>maincpu.mb@1579 = 0A</action>
<action>maincpu.mb@16C3 = 06</action>
<action>maincpu.mb@1955 = 06</action>
<action>maincpu.mb@1AC9 = B</action>
<action>maincpu.mb@1B9D = 20</action>
<action>maincpu.mb@1C6B = B</action>
<action>maincpu.mb@1DD9 = B</action>
<action>maincpu.mb@1EAE = 20</action>
<action>maincpu.mb@1F7B = B</action>
</script>
</cheat>
<cheat desc="player speed">
<parameter>
<item value="0x00008000">01 (slow)</item>
<item value="0x00028000">02 </item>
<item value="0x00048000">03 </item>
<item value="0x00068000">04 </item>
<item value="0x00088000">05 (fast)</item>
</parameter>
<script state="on">
<action>maincpu.mq@00D42 = 4EB900023E604E71</action>
<action>maincpu.mq@23E60 = 223008000C6E00A2</action>
<action>maincpu.mq@23E68 = 00486410263C0000</action>
<action>maincpu.mq@23E70 = 00004A8167066A02</action>
<action>maincpu.mq@23E78 = 4483220320300804</action>
<action>maincpu.mq@23E80 = 0C6E00A200486410</action>
<action>maincpu.mq@23E88 = 263C000000004A80</action>
<action>maincpu.mq@23E90 = 67066A0244832003</action>
<action>maincpu.mq@23E98 = 4E75000000000000</action>
<!--
23E60 | 2230 0800 : move.l (A0,D0.l), D1 // y position
23E64 | 0C6E 00A2 0048 : cmpi.w #$a2, ($48,A6) // check auto move flag
23E6A | 6410 : bcc $23e7c
23E6C | 263C xxxx xxxx : move.l #$xxxx, D3
23E72 | 4A81 : tst.l D1
23E74 | 6706 : beq $23e7c
23E76 | 6A02 : bpl $23e7a
23E78 | 4483 : neg.l D3
23E7A | 2203 : move.l D3, D1
23E7C | 2030 0804 : move.l ($4,A0,D0.l), D0 // x position
23E80 | 0C6E 00A2 0048 : cmpi.w #$a2, ($48,A6) // check auto move flag
23E86 | 6410 : bcc $23e98
23E88 | 263C xxxx xxxx : move.l #$xxxx, D3
23E8E | 4A80 : tst.l D0
23E90 | 6706 : beq $23e98
23E92 | 6A02 : bpl $23e96
23E94 | 4483 : neg.l D3
23E96 | 2003 : move.l D3, D0
23E98 | 4E75 : rts
-->
</script>
<script state="change">
<action>maincpu.md@23E6E = param</action>
<action>maincpu.md@23E8A = param</action>
</script>
<script state="off">
<action>maincpu.mq@00D42 = 2230080020300804</action>
<action>maincpu.mq@23E60 = 0000000000000000</action>
<action>maincpu.mq@23E68 = 0000000000000000</action>
<action>maincpu.mq@23E70 = 0000000000000000</action>
<action>maincpu.mq@23E78 = 0000000000000000</action>
<action>maincpu.mq@23E80 = 0000000000000000</action>
<action>maincpu.mq@23E88 = 0000000000000000</action>
<action>maincpu.mq@23E90 = 0000000000000000</action>
<action>maincpu.mq@23E98 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="bullet speed">
<parameter min="01" max="05" step="01" />
<script state="on">
<action>maincpu.mw@09D8 = F828 </action>
<action>maincpu.mw@526A = AF94 </action>
<action>maincpu.mq@0200 = 7E002F074EB80EFA</action>
<action>maincpu.mq@0208 = 2E1F51CFFFF64E75</action>
<!--
0200 | 7Exx : moveq #$xx, D7
0202 | 2F07 : move.l D7, -(A7)
0204 | 4EB8 0EFA : jsr $efa.w
0208 | 2E1F : move.l (A7)+, D7
020A | 51CF FFF6 : dbra D7, $202
020E | 4E75 : rts
-->
</script>
<script state="change">
<action>maincpu.mb@0201 = param - 1</action>
</script>
<script state="off">
<action>maincpu.mw@09D8 = 0522 </action>
<action>maincpu.mw@526A = BC90 </action>
<action>maincpu.mq@0200 = 0000000000000000</action>
<action>maincpu.mq@0208 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="short hit mark">
<script state="on">
<action>maincpu.mb@0F26 = 60</action>
</script>
<script state="off">
<action>maincpu.mb@0F26 = 67</action>
</script>
</cheat>
<cheat desc="shot breaks ground enemy (test)">
<script state="on">
<action>maincpu.mw@3C38 = 0002</action>
</script>
<script state="off">
<action>maincpu.mw@3C38 = 0102</action>
</script>
</cheat>
<cheat desc="auto damage">
<script state="on">
<action>maincpu.mq@03BA0 = 4EB900023EF04E71</action>
<action>maincpu.mq@03C54 = 4EB900023EF04E71</action>
<action>maincpu.mq@23EF0 = 302E00100C4002E8</action>
<action>maincpu.mq@23EF8 = 62240C400200631E</action>
<action>maincpu.mq@23F00 = 302E00140C4002E0</action>
<action>maincpu.mq@23F08 = 62140C4001F8630E</action>
<action>maincpu.mq@23F10 = 3D7C0008000C586E</action>
<action>maincpu.mq@23F18 = 002A08D600073A2E</action>
<action>maincpu.mq@23F20 = 0040382E00424E75</action>
<!--
23EF0 | 302E 0010 : move.w ($10,A6), D0 // check y position
23EF4 | 0C40 02E8 : cmpi.w #$2e8, D0
23EF8 | 6224 : bhi $23f1e
23EFA | 0C40 0200 : cmpi.w #$200, D0
23EFE | 631E : bls $23f1e
23F00 | 302E 0014 : move.w ($14,A6), D0 // check x position
23F04 | 0C40 02E0 : cmpi.w #$2e0, D0
23F08 | 6214 : bhi $23f1e
23F0A | 0C40 01F8 : cmpi.w #$1f8, D0
23F0E | 630E : bls $23f1e
23F10 | 3D7C 0008 000C : move.w #$8, ($c,A6) // set flags
23F16 | 586E 002A : addq.w #4, ($2a,A6)
23F1A | 08D6 0007 : bset #$7, (A6)
23F1E | 3A2E 0040 : move.w ($40,A6), D5
23F22 | 382E 0042 : move.w ($42,A6), D4
23F26 | 4E75 : rts
-->
</script>
<script state="off">
<action>maincpu.mq@03BA0 = 3A2E0040382E0042</action>
<action>maincpu.mq@03C54 = 3A2E0040382E0042</action>
<action>maincpu.mq@23EF0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@23EF8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@23F00 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@23F08 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@23F10 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@23F18 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@23F20 = 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.mb@00422 = 60 </action> <!-- disable "stop" opcode after soft reset -->
<action>maincpu.mq@04CD4 = 4EF900023EA06100</action>
<action>maincpu.mq@23EA0 = 41F9000F000043F9</action>
<action>maincpu.mq@23EA8 = 0008001F12001029</action>
<action>maincpu.mq@23EB0 = 01E4B20067F60C00</action>
<action>maincpu.mq@23EB8 = 0010660253100C00</action>
<action>maincpu.mq@23EC0 = 0008660252100C00</action>
<action>maincpu.mq@23EC8 = 0020660404100010</action>
<action>maincpu.mq@23ED0 = 0C00004066040610</action>
<action>maincpu.mq@23ED8 = 00100C0000026602</action>
<action>maincpu.mq@23EE0 = 12900C0000046602</action>
<action>maincpu.mq@23EE8 = 421160C000000000</action>
<!--
23EA0 | 41F9 000F 0000 : lea $f0000.l, A0 // sound code address
23EA6 | 43F9 0008 001F : lea $8001f.l, A1 // sound latch address
23EAC | 1200 : move.b D0, D1
23EAE | 1029 01E4 : move.b ($1e4,A1), D0 // read input ($80203)
23EB2 | B200 : cmp.b D0, D1
23EB4 | 67F6 : beq $23eac
23EB6 | 0C00 0010 : cmpi.b #$10, D0
23EBA | 6602 : bne $23ebe
23EBC | 5310 : subq.b #1, (A0) // decrease code -01
23EBE | 0C00 0008 : cmpi.b #$8, D0
23EC2 | 6602 : bne $23ec6
23EC4 | 5210 : addq.b #1, (A0) // increase code +01
23EC6 | 0C00 0020 : cmpi.b #$20, D0
23ECA | 6604 : bne $23ed0
23ECC | 0410 0010 : subi.b #$10, (A0) // decrease code -10
23ED0 | 0C00 0040 : cmpi.b #$40, D0
23ED4 | 6604 : bne $23eda
23ED6 | 0610 0010 : addi.b #$10, (A0) // increase code +10
23EDA | 0C00 0002 : cmpi.b #$2, D0
23EDE | 6602 : bne $23ee2
23EE0 | 1290 : move.b (A0), (A1) // play sound
23EE2 | 0C00 0004 : cmpi.b #$4, D0
23EE6 | 6602 : bne $23eea
23EE8 | 4211 : clr.b (A1) // stop sound
23EEA | 60C0 : bra $23eac
-->
<!-- stop music and sfx at the same time -->
<action>audiocpu.md@0109 = 000E10CD </action>
<action>audiocpu.mq@0E10 = E03EC0A721AE21DD</action>
<action>audiocpu.mq@0E18 = FFC9AFC10D01CDC5</action>
<!--
0E10 | DD 21 AE 21 : ld ix,$21AE
0E14 | A7 : and a
0E15 | C0 : ret nz
0E16 | 3E E0 : ld a,$E0
0E18 | C5 : push bc
0E19 | CD 01 0D : call $0D01
0E1C | C1 : pop bc
0E1D | AF : xor a
0E1E | C9 : ret
-->
</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@F0000</argument>
</output>
</script>
<script state="off">
<action> maincpu.mb@00422 = 67 </action>
<action> maincpu.mq@04CD4 = 007C070070136100</action>
<action> maincpu.mq@23EA0 = 0000000000000000</action>
<action> maincpu.mq@23EA8 = 0000000000000000</action>
<action> maincpu.mq@23EB0 = 0000000000000000</action>
<action> maincpu.mq@23EB8 = 0000000000000000</action>
<action> maincpu.mq@23EC0 = 0000000000000000</action>
<action> maincpu.mq@23EC8 = 0000000000000000</action>
<action> maincpu.mq@23ED0 = 0000000000000000</action>
<action> maincpu.mq@23ED8 = 0000000000000000</action>
<action> maincpu.mq@23EE0 = 0000000000000000</action>
<action> maincpu.mq@23EE8 = 0000000000000000</action>
<action>audiocpu.md@00109 = 21AE21DD </action>
<action>audiocpu.mq@00E10 = FFFFFFFFFFFFFFFF</action>
<action>audiocpu.mq@00E18 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="skip rom check">
<script state="on">
<action>maincpu.mw@4CCE = 208A</action>
</script>
<script state="off">
<action>maincpu.mw@4CCE = 208C</action>
</script>
</cheat>
</mamecheat>
Code: Select all
<!-- Task Force Harrier (Lettering bootleg) -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<action>maincpu.mb@0BA0 = 60</action>
</script>
<script state="off">
<action>maincpu.mb@0BA0 = 66</action>
</script>
</cheat>
<cheat desc="rapid fire">
<script state="on">
<action>maincpu.mb@146F = 01</action> <!-- sidefighters (v-shot) -->
<action>maincpu.mb@1565 = 01</action> <!-- sidefighters (missile) -->
<action>maincpu.mb@16AF = 01</action> <!-- sidefighters (homing) -->
<action>maincpu.mb@1941 = 01</action> <!-- player (shot) -->
<action>maincpu.mb@1AB5 = 01</action> <!-- player (bomb I) -->
<action>maincpu.mb@1B89 = 01</action> <!-- player (bomb II) -->
<action>maincpu.mb@1C57 = 01</action> <!-- plaery (bomb III) -->
<action>maincpu.mb@1DC5 = 01</action> <!-- player (bomb I) -->
<action>maincpu.mb@1E99 = 01</action> <!-- player (bomb II) -->
<action>maincpu.mb@1F67 = 01</action> <!-- player (bomb III) -->
</script>
<script state="off">
<action>maincpu.mb@146F = 08</action>
<action>maincpu.mb@1565 = 0A</action>
<action>maincpu.mb@16AF = 06</action>
<action>maincpu.mb@1941 = 06</action>
<action>maincpu.mb@1AB5 = B</action>
<action>maincpu.mb@1B89 = 20</action>
<action>maincpu.mb@1C57 = B</action>
<action>maincpu.mb@1DC5 = B</action>
<action>maincpu.mb@1E99 = 20</action>
<action>maincpu.mb@1F67 = B</action>
</script>
</cheat>
<cheat desc="player speed">
<parameter>
<item value="0x00008000">01 (slow)</item>
<item value="0x00028000">02 </item>
<item value="0x00048000">03 </item>
<item value="0x00068000">04 </item>
<item value="0x00088000">05 (fast)</item>
</parameter>
<script state="on">
<action>maincpu.mq@00D2E = 4EB900023E604E71</action>
<action>maincpu.mq@23E60 = 223008000C6E00A2</action>
<action>maincpu.mq@23E68 = 00486410263C0000</action>
<action>maincpu.mq@23E70 = 00004A8167066A02</action>
<action>maincpu.mq@23E78 = 4483220320300804</action>
<action>maincpu.mq@23E80 = 0C6E00A200486410</action>
<action>maincpu.mq@23E88 = 263C000000004A80</action>
<action>maincpu.mq@23E90 = 67066A0244832003</action>
<action>maincpu.mq@23E98 = 4E75000000000000</action>
<!--
23E60 | 2230 0800 : move.l (A0,D0.l), D1 // y position
23E64 | 0C6E 00A2 0048 : cmpi.w #$a2, ($48,A6) // check auto move flag
23E6A | 6410 : bcc $23e7c
23E6C | 263C xxxx xxxx : move.l #$xxxx, D3
23E72 | 4A81 : tst.l D1
23E74 | 6706 : beq $23e7c
23E76 | 6A02 : bpl $23e7a
23E78 | 4483 : neg.l D3
23E7A | 2203 : move.l D3, D1
23E7C | 2030 0804 : move.l ($4,A0,D0.l), D0 // x position
23E80 | 0C6E 00A2 0048 : cmpi.w #$a2, ($48,A6) // check auto move flag
23E86 | 6410 : bcc $23e98
23E88 | 263C xxxx xxxx : move.l #$xxxx, D3
23E8E | 4A80 : tst.l D0
23E90 | 6706 : beq $23e98
23E92 | 6A02 : bpl $23e96
23E94 | 4483 : neg.l D3
23E96 | 2003 : move.l D3, D0
23E98 | 4E75 : rts
-->
</script>
<script state="change">
<action>maincpu.md@23E6E = param</action>
<action>maincpu.md@23E8A = param</action>
</script>
<script state="off">
<action>maincpu.mq@00D2E = 2230080020300804</action>
<action>maincpu.mq@23E60 = 0000000000000000</action>
<action>maincpu.mq@23E68 = 0000000000000000</action>
<action>maincpu.mq@23E70 = 0000000000000000</action>
<action>maincpu.mq@23E78 = 0000000000000000</action>
<action>maincpu.mq@23E80 = 0000000000000000</action>
<action>maincpu.mq@23E88 = 0000000000000000</action>
<action>maincpu.mq@23E90 = 0000000000000000</action>
<action>maincpu.mq@23E98 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="bullet speed">
<parameter min="01" max="05" step="01" />
<script state="on">
<action>maincpu.mw@09D8 = F828 </action>
<action>maincpu.mw@523C = AFC4 </action>
<action>maincpu.mq@0200 = 7E002F074EB80EE6</action>
<action>maincpu.mq@0208 = 2E1F51CFFFF64E75</action>
<!--
0200 | 7Exx : moveq #$xx, D7
0202 | 2F07 : move.l D7, -(A7)
0204 | 4EB8 0EE6 : jsr $ee6.w
0208 | 2E1F : move.l (A7)+, D7
020A | 51CF FFF6 : dbra D7, $202
020E | 4E75 : rts
-->
</script>
<script state="change">
<action>maincpu.mb@0201 = param - 1</action>
</script>
<script state="off">
<action>maincpu.mw@09D8 = 050E </action>
<action>maincpu.mw@523C = BCAA </action>
<action>maincpu.mq@0200 = 0000000000000000</action>
<action>maincpu.mq@0208 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="short hit mark">
<script state="on">
<action>maincpu.mb@0F12 = 60</action>
</script>
<script state="off">
<action>maincpu.mb@0F12 = 67</action>
</script>
</cheat>
<cheat desc="shot breaks ground enemy (test)">
<script state="on">
<action>maincpu.mw@3C24 = 0002</action>
</script>
<script state="off">
<action>maincpu.mw@3C24 = 0102</action>
</script>
</cheat>
<cheat desc="auto damage">
<script state="on">
<action>maincpu.mq@03B8C = 4EB900023EF04E71</action>
<action>maincpu.mq@03C40 = 4EB900023EF04E71</action>
<action>maincpu.mq@23EF0 = 302E00100C4002E8</action>
<action>maincpu.mq@23EF8 = 62240C400200631E</action>
<action>maincpu.mq@23F00 = 302E00140C4002E0</action>
<action>maincpu.mq@23F08 = 62140C4001F8630E</action>
<action>maincpu.mq@23F10 = 3D7C0008000C586E</action>
<action>maincpu.mq@23F18 = 002A08D600073A2E</action>
<action>maincpu.mq@23F20 = 0040382E00424E75</action>
<!--
23EF0 | 302E 0010 : move.w ($10,A6), D0 // check y position
23EF4 | 0C40 02E8 : cmpi.w #$2e8, D0
23EF8 | 6224 : bhi $23f1e
23EFA | 0C40 0200 : cmpi.w #$200, D0
23EFE | 631E : bls $23f1e
23F00 | 302E 0014 : move.w ($14,A6), D0 // check x position
23F04 | 0C40 02E0 : cmpi.w #$2e0, D0
23F08 | 6214 : bhi $23f1e
23F0A | 0C40 01F8 : cmpi.w #$1f8, D0
23F0E | 630E : bls $23f1e
23F10 | 3D7C 0008 000C : move.w #$8, ($c,A6) // set flags
23F16 | 586E 002A : addq.w #4, ($2a,A6)
23F1A | 08D6 0007 : bset #$7, (A6)
23F1E | 3A2E 0040 : move.w ($40,A6), D5
23F22 | 382E 0042 : move.w ($42,A6), D4
23F26 | 4E75 : rts
-->
</script>
<script state="off">
<action>maincpu.mq@03B8C = 3A2E0040382E0042</action>
<action>maincpu.mq@03C40 = 3A2E0040382E0042</action>
<action>maincpu.mq@23EF0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@23EF8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@23F00 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@23F08 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@23F10 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@23F18 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@23F20 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="unlock test mode">
<comment>reset the game (F3) to enter test mode</comment>
<script state="on">
<action>maincpu.mw@4CAE = 279C</action>
</script>
<script state="off">
<action>maincpu.mw@4CAE = 2054</action>
</script>
</cheat>
<cheat desc="sound test mode">
<comment>reset the game (F3) to enter sound test mode</comment>
<script state="on">
<action>maincpu.mb@00422 = 60 </action> <!-- disable "stop" opcode after soft reset -->
<action>maincpu.mq@04CB4 = 4EF900023EA06100</action>
<action>maincpu.mq@23EA0 = 41F9000F000043F9</action>
<action>maincpu.mq@23EA8 = 0008001F12001029</action>
<action>maincpu.mq@23EB0 = 01E4B20067F60C00</action>
<action>maincpu.mq@23EB8 = 0010660253100C00</action>
<action>maincpu.mq@23EC0 = 0008660252100C00</action>
<action>maincpu.mq@23EC8 = 0020660404100010</action>
<action>maincpu.mq@23ED0 = 0C00004066040610</action>
<action>maincpu.mq@23ED8 = 00100C0000026602</action>
<action>maincpu.mq@23EE0 = 12900C0000046602</action>
<action>maincpu.mq@23EE8 = 421160C000000000</action>
<!--
23EA0 | 41F9 000F 0000 : lea $f0000.l, A0 // sound code address
23EA6 | 43F9 0008 001F : lea $8001f.l, A1 // sound latch address
23EAC | 1200 : move.b D0, D1
23EAE | 1029 01E4 : move.b ($1e4,A1), D0 // read input ($80203)
23EB2 | B200 : cmp.b D0, D1
23EB4 | 67F6 : beq $23eac
23EB6 | 0C00 0010 : cmpi.b #$10, D0
23EBA | 6602 : bne $23ebe
23EBC | 5310 : subq.b #1, (A0) // decrease code -01
23EBE | 0C00 0008 : cmpi.b #$8, D0
23EC2 | 6602 : bne $23ec6
23EC4 | 5210 : addq.b #1, (A0) // increase code +01
23EC6 | 0C00 0020 : cmpi.b #$20, D0
23ECA | 6604 : bne $23ed0
23ECC | 0410 0010 : subi.b #$10, (A0) // decrease code -10
23ED0 | 0C00 0040 : cmpi.b #$40, D0
23ED4 | 6604 : bne $23eda
23ED6 | 0610 0010 : addi.b #$10, (A0) // increase code +10
23EDA | 0C00 0002 : cmpi.b #$2, D0
23EDE | 6602 : bne $23ee2
23EE0 | 1290 : move.b (A0), (A1) // play sound
23EE2 | 0C00 0004 : cmpi.b #$4, D0
23EE6 | 6602 : bne $23eea
23EE8 | 4211 : clr.b (A1) // stop sound
23EEA | 60C0 : bra $23eac
-->
<!-- stop music and sfx at the same time -->
<action>audiocpu.md@0109 = 000E10CD </action>
<action>audiocpu.mq@0E10 = E03EC0A721AE21DD</action>
<action>audiocpu.mq@0E18 = FFC9AFC10D01CDC5</action>
<!--
0E10 | DD 21 AE 21 : ld ix,$21AE
0E14 | A7 : and a
0E15 | C0 : ret nz
0E16 | 3E E0 : ld a,$E0
0E18 | C5 : push bc
0E19 | CD 01 0D : call $0D01
0E1C | C1 : pop bc
0E1D | AF : xor a
0E1E | C9 : ret
-->
</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@F0000</argument>
</output>
</script>
<script state="off">
<action> maincpu.mb@00422 = 67 </action>
<action> maincpu.mq@04CB4 = 007C070070136100</action>
<action> maincpu.mq@23EA0 = 0000000000000000</action>
<action> maincpu.mq@23EA8 = 0000000000000000</action>
<action> maincpu.mq@23EB0 = 0000000000000000</action>
<action> maincpu.mq@23EB8 = 0000000000000000</action>
<action> maincpu.mq@23EC0 = 0000000000000000</action>
<action> maincpu.mq@23EC8 = 0000000000000000</action>
<action> maincpu.mq@23ED0 = 0000000000000000</action>
<action> maincpu.mq@23ED8 = 0000000000000000</action>
<action> maincpu.mq@23EE0 = 0000000000000000</action>
<action> maincpu.mq@23EE8 = 0000000000000000</action>
<action>audiocpu.md@00109 = 21AE21DD </action>
<action>audiocpu.mq@00E10 = FFFFFFFFFFFFFFFF</action>
<action>audiocpu.mq@00E18 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="skip rom check">
<script state="on">
<action>maincpu.mw@4CAE = 2052</action>
</script>
<script state="off">
<action>maincpu.mw@4CAE = 2054</action>
</script>
</cheat>
</mamecheat>
- "shot breaks ground enemy" : Some objects (tree in level 3 etc) are "unbreakable" and cut off player's bullet.
- "auto damage" : You damage/kill an enemy automatically without bullet hit but point is always added to player 1.
- "unlock test mode" : tharrierb only. No response in other sets.
- "skip rom check" : ROM check for this game is unique. The checker searches "0x4E71" (NOP) value in ROM insted of checksum. Unfortunately, "player speed" and "auto damage" codes use "NOP".