kof95.xml
Code: Select all
<!-- The King of Fighters '95 (NGM-084) -->
<mamecheat version="1">
<cheat desc="no hit">
<parameter>
<item value="0x01">1P </item>
<item value="0x02">2P </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@0023BE = 4EB9002D48004E71</action> <!-- direct attack / firearms -->
<action>maincpu.rq@00A60E = 4EB9002D48166700</action> <!-- catch / throw -->
<action>maincpu.rq@00E838 = 4EB9002D482A6600</action> <!-- storm bringer (heidern) -->
<action>maincpu.rq@01014E = 4EB9002D482A6600</action> <!-- super argentine back breaker (ralf) -->
<action>maincpu.rq@0115B2 = 4EB9002D482A6600</action> <!-- super argentine back breaker (clark) -->
<action>maincpu.rq@01197A = 4EB9002D482A6666</action> <!-- super arabian burglary back breaker (clark) -->
<action>maincpu.rq@01211C = 4EB9002D482A6600</action> <!-- ultra argentine back breaker (clark) -->
<action>maincpu.rq@01AD2E = 4EB9002D483A6620</action> <!-- jiraishin (daimon) -->
<action>maincpu.rq@01AE86 = 4EB9002D482A6600</action> <!-- chou-oosotogari (daimon) -->
<action>maincpu.rq@01BB6C = 4EB9002D482A6600</action> <!-- tenchi gaeshi (daimon) -->
<action>maincpu.rq@01CC0A = 4EB9002D482A6600</action> <!-- jigoku gokuraku otoshi (daimon) -->
<action>maincpu.rq@02E78C = 4EB9002D482A6600</action> <!-- syouran kyaku - weak (takuma) -->
<action>maincpu.rq@02EB90 = 4EB9002D482A6640</action> <!-- syouran kyaku - strong (takuma) -->
<action>maincpu.rq@0304F6 = 4EB9002D482A6600</action> <!-- hyakuretsu binta - weak (yuri) -->
<action>maincpu.rq@030890 = 4EB9002D482A6640</action> <!-- hyakuretsu binta - strong (yuri) -->
<action>maincpu.rq@2D4800 = 2C6D27A0082E0000</action>
<action>maincpu.rq@2D4808 = 01FF6606052E007C</action>
<action>maincpu.rq@2D4810 = 4E7542024E754841</action>
<action>maincpu.rq@2D4818 = 1210082B000001FF</action>
<action>maincpu.rq@2D4820 = 6604C2074E754200</action>
<action>maincpu.rq@2D4828 = 4E75082B000001FF</action>
<action>maincpu.rq@2D4830 = 6606082B000000E1</action>
<action>maincpu.rq@2D4838 = 4E75082B000001FF</action>
<action>maincpu.rq@2D4840 = 6606082B000500E3</action>
<action>maincpu.rq@2D4848 = 4E75000000000000</action>
<!--
2D4800 | 2C6D 27A0 : movea.l ($27a0,A5), A6 // direct attack / firearms
2D4804 | 082E 0000 01FF : btst #$0, ($1ff,A6)
2D480A | 6606 : bne $80162
2D480C | 052E 007C : btst D2, ($7c,A6)
2D4810 | 4E75 : rts
2D4812 | 4202 : clr.b D2
2D4814 | 4E75 : rts
2D4816 | 4841 : swap D1 // catch / throw
2D4818 | 1210 : move.b (A0), D1
2D481A | 082B 0000 01FF : btst #$0, ($1ff,A3)
2D4820 | 6604 : bne $80176
2D4822 | C207 : and.b D7, D1
2D4824 | 4E75 : rts
2D4826 | 4200 : clr.b D0
2D4828 | 4E75 : rts
2D482A | 082B 0000 01FF : btst #$0, ($1ff,A3) // moves
2D4830 | 6606 : bne $80188
2D4832 | 082B 0000 00E1 : btst #$0, ($e1,A3)
2D4838 | 4E75 : rts
2D483A | 082B 0000 01FF : btst #$0, ($1ff,A3) // jiraishin (daimon)
2D4840 | 6606 : bne $80198
2D4842 | 082B 0005 00E3 : btst #$5, ($e3,A3)
2D4848 | 4E75 : rts
-->
</script>
<script state="run">
<action condition="(param band 01) == 00">maincpu.pb@1082FF &= ~01</action>
<action condition="(param band 02) == 00">maincpu.pb@1084FF &= ~01</action>
<action condition="(param band 01) != 00">maincpu.pb@1082FF |= 01 </action>
<action condition="(param band 02) != 00">maincpu.pb@1084FF |= 01 </action>
</script>
<script state="off">
<action>maincpu.rq@0023BE = 2C6D27A0052E007C</action>
<action>maincpu.rq@00A60E = 48411210C2076700</action>
<action>maincpu.rq@00E838 = 082B000000E16600</action>
<action>maincpu.rq@01014E = 082B000000E16600</action>
<action>maincpu.rq@0115B2 = 082B000000E16600</action>
<action>maincpu.rq@01197A = 082B000000E16666</action>
<action>maincpu.rq@01211C = 082B000000E16600</action>
<action>maincpu.rq@01AD2E = 082B000500E36620</action>
<action>maincpu.rq@01AE86 = 082B000000E16600</action>
<action>maincpu.rq@01BB6C = 082B000000E16600</action>
<action>maincpu.rq@01CC0A = 082B000000E16600</action>
<action>maincpu.rq@02E78C = 082B000000E16600</action>
<action>maincpu.rq@02EB90 = 082B000000E16640</action>
<action>maincpu.rq@0304F6 = 082B000000E16600</action>
<action>maincpu.rq@030890 = 082B000000E16640</action>
<action>maincpu.rq@2D4800 = 0000000000000000</action>
<action>maincpu.rq@2D4808 = 0000000000000000</action>
<action>maincpu.rq@2D4810 = 0000000000000000</action>
<action>maincpu.rq@2D4818 = 0000000000000000</action>
<action>maincpu.rq@2D4820 = 0000000000000000</action>
<action>maincpu.rq@2D4828 = 0000000000000000</action>
<action>maincpu.rq@2D4830 = 0000000000000000</action>
<action>maincpu.rq@2D4838 = 0000000000000000</action>
<action>maincpu.rq@2D4840 = 0000000000000000</action>
<action>maincpu.rq@2D4848 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="rapid fire">
<parameter>
<item value="0x01">1P </item>
<item value="0x02">2P </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@00A5AC = 4EB9002D48504E71</action>
<action>maincpu.rq@2D4850 = 1E2E0001082C0001</action>
<action>maincpu.rq@2D4858 = 01FF67021E160247</action>
<action>maincpu.rq@2D4860 = 00F04E7500000000</action>
<!--
2D4850 | 1E2E 0001 : move.b ($1,A6), D7
2D4854 | 082C 0001 01FF : btst #$1, ($1ff,A4)
2D485A | 6702 : beq $2d485e
2D485C | 1E16 : move.b (A6), D7
2D485E | 0247 00F0 : andi.w #$f0, D7
2D4862 | 4E75 : rts
-->
</script>
<script state="run">
<action condition="(param band 01) == 00">maincpu.pb@1082FF &= ~02</action>
<action condition="(param band 02) == 00">maincpu.pb@1084FF &= ~02</action>
<action condition="(param band 01) != 00">maincpu.pb@1082FF |= 02 </action>
<action condition="(param band 02) != 00">maincpu.pb@1084FF |= 02 </action>
</script>
<script state="off">
<action>maincpu.rq@00A5AC = 1E2E0001024700F0</action>
<action>maincpu.rq@2D4850 = 0000000000000000</action>
<action>maincpu.rq@2D4858 = 0000000000000000</action>
<action>maincpu.rq@2D4860 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="action speed up">
<parameter>
<item value="0x01">1P </item>
<item value="0x02">2P </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@003D04 = 4EB9002D48704E71</action>
<action>maincpu.rq@2D4870 = 082C000201FF6704</action>
<action>maincpu.rq@2D4878 = 103C00011940007A</action>
<action>maincpu.rq@2D4880 = 102C007F4E750000</action>
<!--
2D4870 | 082C 0002 01FF : btst #$2, ($1ff,A4)
2D4876 | 6704 : beq $2d487c
2D4878 | 103C 0001 : move.b #$1, D0
2D487C | 1940 007A : move.b D0, ($7a,A4)
2D4880 | 102C 007F : move.b ($7f,A4), D0
2D4884 | 4E75 : rts
-->
</script>
<script state="run">
<action condition="(param band 01) == 00">maincpu.pb@1082FF &= ~04</action>
<action condition="(param band 02) == 00">maincpu.pb@1084FF &= ~04</action>
<action condition="(param band 01) != 00">maincpu.pb@1082FF |= 04 </action>
<action condition="(param band 02) != 00">maincpu.pb@1084FF |= 04 </action>
</script>
<script state="off">
<action>maincpu.rq@003D04 = 1940007A102C007F</action>
<action>maincpu.rq@2D4870 = 0000000000000000</action>
<action>maincpu.rq@2D4878 = 0000000000000000</action>
<action>maincpu.rq@2D4880 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="special move">
<parameter>
<item value="0x01">1P </item>
<item value="0x02">2P </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@004918 = 4EB9002D48906614</action>
<action>maincpu.rq@00B592 = 4EB9002D48906614</action>
<action>maincpu.rq@00B5B6 = 4EB9002D4890661C</action>
<action>maincpu.rq@00B602 = 4EB9002D48906614</action>
<action>maincpu.rq@2D4890 = 082C000301FF6606</action>
<action>maincpu.rq@2D4898 = 082D000380004E75</action>
<!--
2D4890 | 082C 0003 01FF : btst #$3, ($1ff,A4)
2D4896 | 6606 : bne $2d489e
2D4898 | 082D 0003 8000 : btst #$3, (-$8000,A5)
2D489E | 4E75 : rts
-->
</script>
<script state="run">
<action condition="(param band 01) == 00">maincpu.pb@1082FF &= ~08</action>
<action condition="(param band 02) == 00">maincpu.pb@1084FF &= ~08</action>
<action condition="(param band 01) != 00">maincpu.pb@1082FF |= 08 </action>
<action condition="(param band 02) != 00">maincpu.pb@1084FF |= 08 </action>
</script>
<script state="off">
<action>maincpu.rq@004918 = 082D000380006614</action>
<action>maincpu.rq@00B592 = 082D000380006614</action>
<action>maincpu.rq@00B5B6 = 082D00038000661C</action>
<action>maincpu.rq@00B602 = 082D000380006614</action>
<action>maincpu.rq@2D4890 = 0000000000000000</action>
<action>maincpu.rq@2D4898 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="timer speed">
<parameter>
<item value="0x1B7C00FF">01 (slow)</item>
<item value="0x1B7C00C0">02 </item>
<item value="0x1B7C0080">03 </item>
<item value="0x1B7C0040">04 </item>
<item value="0x1B7C0001">05 (fast)</item>
</parameter>
<script state="change">
<action>maincpu.rd@39D42 = param</action>
<action>maincpu.rd@3B2A0 = param</action>
<action>maincpu.rd@3B7DE = param</action>
</script>
<script state="off">
<action>maincpu.rd@39D42 = 1B6D2838</action>
<action>maincpu.rd@3B2A0 = 1B6D2838</action>
<action>maincpu.rd@3B7DE = 1B6D2838</action>
</script>
</cheat>
<cheat desc="unlock secret characters">
<script state="on">
<action>maincpu.rw@3E3FC = 4E71</action>
</script>
<script state="off">
<action>maincpu.rw@3E3FC = 6706</action>
</script>
</cheat>
<cheat desc="sound test mode">
<!-- don't play code 0x01, 0x03 and 0x10 because of no sound response -->
<!-- valid bank number seems to be 0x00, 0x08, 0x0A and 0x0E -->
<script state="on">
<action>maincpu.rq@038D98 = 4EF9002D48A04E71</action>
<action>maincpu.rq@2D48A0 = 43ED000145ED56B2</action>
<action>maincpu.rq@2D48A8 = 47F8635000390080</action>
<action>maincpu.rq@2D48B0 = 0010FD8014011239</action>
<action>maincpu.rq@2D48B8 = 00300000B40167F4</action>
<action>maincpu.rq@2D48C0 = 0C0100FB66025315</action>
<action>maincpu.rq@2D48C8 = 0C0100F766025215</action>
<action>maincpu.rq@2D48D0 = 0C0100FD66040415</action>
<action>maincpu.rq@2D48D8 = 00100C0100FE6604</action>
<action>maincpu.rq@2D48E0 = 061500100C0100BB</action>
<action>maincpu.rq@2D48E8 = 660253110C0100B7</action>
<action>maincpu.rq@2D48F0 = 660252110211000F</action>
<action>maincpu.rq@2D48F8 = 0C0100EF66124243</action>
<action>maincpu.rq@2D4900 = 1611670400030010</action>
<action>maincpu.rq@2D4908 = E14B861534834E93</action>
<action>maincpu.rq@2D4910 = 0C0100DF660634BC</action>
<action>maincpu.rq@2D4918 = 03074E9360960000</action>
<!--
2D48A0 | 43ED 0001 : lea ($1,A5), A1 // bank address ($108001)
2D48A4 | 45ED 56B2 : lea ($56b2,A5), A2 // sound latch address ($10D6B2)
2D48A8 | 47F8 6350 : lea $6350.w, A3 // sound latch routine address
2D48AC | 0039 0080 0010 FD80 : ori.b #$80, $10fd80.l // set flag for interrupt
2D48B4 | 1401 : move.b D1, D2
2D48B6 | 1239 0030 0000 : move.b $300000.l, D1 // read input
2D48BC | B401 : cmp.b D1, D2
2D48BE | 67F4 : beq $2d48b4
2D48C0 | 0C01 00FB : cmpi.b #-$5, D1
2D48C4 | 6602 : bne $2d48c8
2D48C6 | 5315 : subq.b #1, (A5) // decrease code -01
2D48C8 | 0C01 00F7 : cmpi.b #-$9, D1
2D48CC | 6602 : bne $2d48d0
2D48CE | 5215 : addq.b #1, (A5) // increase code +01
2D48D0 | 0C01 00FD : cmpi.b #-$3, D1
2D48D4 | 6604 : bne $2d48da
2D48D6 | 0415 0010 : subi.b #$10, (A5) // decrease code -10
2D48DA | 0C01 00FE : cmpi.b #-$2, D1
2D48DE | 6604 : bne $2d48e4
2D48E0 | 0615 0010 : addi.b #$10, (A5) // increase code +10
2D48E4 | 0C01 00BB : cmpi.b #-$45, D1
2D48E8 | 6602 : bne $2d48ec
2D48EA | 5311 : subq.b #1, (A1) // decrease bank -01
2D48EC | 0C01 00B7 : cmpi.b #-$49, D1
2D48F0 | 6602 : bne $2d48f4
2D48F2 | 5211 : addq.b #1, (A1) // increase bank +01
2D48F4 | 0211 000F : andi.b #$f, (A1) // mask bank
2D48F8 | 0C01 00EF : cmpi.b #-$11, D1
2D48FC | 6612 : bne $2d4910
2D48FE | 4243 : clr.w D3 // play sound
2D4900 | 1611 : move.b (A1), D3
2D4902 | 6704 : beq $2d4908
2D4904 | 0003 0010 : ori.b #$10, D3
2D4908 | E14B : lsl.w #8, D3
2D490A | 8615 : or.b (A5), D3
2D490C | 3483 : move.w D3, (A2)
2D490E | 4E93 : jsr (A3)
2D4910 | 0C01 00DF : cmpi.b #-$21, D1
2D4914 | 6606 : bne $2d491c
2D4916 | 34BC 0307 : move.w #$307, (A2) // stop sound
2D491A | 4E93 : jsr (A3)
2D491C | 6096 : bra $2d48b4
-->
</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 3 + left : decrease bank -01" line="15" align="center" />
<output format="button 3 + right : increase bank +01" line="16" align="center" />
<output format="button 1 : play sound" line="17" align="center" />
<output format="button 2 : stop sound" line="18" align="center" />
<output format="----------------------------" line="19" align="center" />
<output format="<< bank %X >>" line="21" align="center" >
<argument>maincpu.pb@108001</argument>
</output>
<output format="<< sound code %02X >>" line="23" align="center" >
<argument>maincpu.pb@108000</argument>
</output>
</script>
<script state="off">
<action>maincpu.rq@038D98 = 003900800010FD80</action>
<action>maincpu.rq@2D48A0 = 0000000000000000</action>
<action>maincpu.rq@2D48A8 = 0000000000000000</action>
<action>maincpu.rq@2D48B0 = 0000000000000000</action>
<action>maincpu.rq@2D48B8 = 0000000000000000</action>
<action>maincpu.rq@2D48C0 = 0000000000000000</action>
<action>maincpu.rq@2D48C8 = 0000000000000000</action>
<action>maincpu.rq@2D48D0 = 0000000000000000</action>
<action>maincpu.rq@2D48D8 = 0000000000000000</action>
<action>maincpu.rq@2D48E0 = 0000000000000000</action>
<action>maincpu.rq@2D48E8 = 0000000000000000</action>
<action>maincpu.rq@2D48F0 = 0000000000000000</action>
<action>maincpu.rq@2D48F8 = 0000000000000000</action>
<action>maincpu.rq@2D4900 = 0000000000000000</action>
<action>maincpu.rq@2D4908 = 0000000000000000</action>
<action>maincpu.rq@2D4910 = 0000000000000000</action>
<action>maincpu.rq@2D4918 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="skip ram/rom check">
<script state="on">
<action condition="maincpu.rd@C11AFC == 3A3C7FFF">temp0 = C11AFC, maincpu.rd@temp0 = 60000168</action> <!-- euro, euro-s1, japan-s2, japan-s1 -->
<action condition="maincpu.rd@C10C20 == 3A3C7FFF">temp0 = C10C20, maincpu.rd@temp0 = 60000168</action> <!-- asia-mv1c, japan-mv1b -->
<action condition="maincpu.rd@C10AFC == 3A3C7FFF">temp0 = C10AFC, maincpu.rd@temp0 = 60000168</action> <!-- asia-mv1b, japan-mv1c -->
<action condition="maincpu.rd@C11AD2 == 3A3C7FFF">temp0 = C11AD2, maincpu.rd@temp0 = 60000168</action> <!-- us, us-e, us-v2, us-u4 -->
<action condition="maincpu.rd@C11ABC == 3A3C7FFF">temp0 = C11ABC, maincpu.rd@temp0 = 60000104</action> <!-- us-u3 -->
<action condition="maincpu.rd@C11C24 == 3A3C7FFF">temp0 = C11C24, maincpu.rd@temp0 = 60000168</action> <!-- japan -->
<action condition="maincpu.rd@C11AE6 == 3A3C7FFF">temp0 = C11AE6, maincpu.rd@temp0 = 60000104</action> <!-- japan-j3a -->
<action condition="maincpu.rd@C11BC6 == 3A3C7FFF">temp0 = C11BC6, maincpu.rd@temp0 = 6000017C</action> <!-- japan-hotel -->
</script>
<script state="off">
<action>maincpu.rd@temp0 = 3A3C7FFF</action>
</script>
</cheat>
</mamecheat>
kof95a.xml
Code: Select all
<!-- The King of Fighters '95 (NGM-084, alt board) -->
<mamecheat version="1">
<cheat desc="no hit">
<parameter>
<item value="0x01">1P </item>
<item value="0x02">2P </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@00265E = 4EB9002D48004E71</action> <!-- direct attack / firearms -->
<action>maincpu.rq@00A8AE = 4EB9002D48166700</action> <!-- catch / throw -->
<action>maincpu.rq@00EAD8 = 4EB9002D482A6600</action> <!-- storm bringer (heidern) -->
<action>maincpu.rq@0103EE = 4EB9002D482A6600</action> <!-- super argentine back breaker (ralf) -->
<action>maincpu.rq@011852 = 4EB9002D482A6600</action> <!-- super argentine back breaker (clark) -->
<action>maincpu.rq@011C1A = 4EB9002D482A6666</action> <!-- super arabian burglary back breaker (clark) -->
<action>maincpu.rq@0123BC = 4EB9002D482A6600</action> <!-- ultra argentine back breaker (clark) -->
<action>maincpu.rq@01AFCE = 4EB9002D483A6620</action> <!-- jiraishin (daimon) -->
<action>maincpu.rq@01B126 = 4EB9002D482A6600</action> <!-- chou-oosotogari (daimon) -->
<action>maincpu.rq@01BE0C = 4EB9002D482A6600</action> <!-- tenchi gaeshi (daimon) -->
<action>maincpu.rq@01CEAA = 4EB9002D482A6600</action> <!-- jigoku gokuraku otoshi (daimon) -->
<action>maincpu.rq@02EA2C = 4EB9002D482A6600</action> <!-- syouran kyaku - weak (takuma) -->
<action>maincpu.rq@02EE30 = 4EB9002D482A6640</action> <!-- syouran kyaku - strong (takuma) -->
<action>maincpu.rq@030796 = 4EB9002D482A6600</action> <!-- hyakuretsu binta - weak (yuri) -->
<action>maincpu.rq@030B30 = 4EB9002D482A6640</action> <!-- hyakuretsu binta - strong (yuri) -->
<action>maincpu.rq@2D4800 = 2C6D27A0082E0000</action>
<action>maincpu.rq@2D4808 = 01FF6606052E007C</action>
<action>maincpu.rq@2D4810 = 4E7542024E754841</action>
<action>maincpu.rq@2D4818 = 1210082B000001FF</action>
<action>maincpu.rq@2D4820 = 6604C2074E754200</action>
<action>maincpu.rq@2D4828 = 4E75082B000001FF</action>
<action>maincpu.rq@2D4830 = 6606082B000000E1</action>
<action>maincpu.rq@2D4838 = 4E75082B000001FF</action>
<action>maincpu.rq@2D4840 = 6606082B000500E3</action>
<action>maincpu.rq@2D4848 = 4E75000000000000</action>
<!--
2D4800 | 2C6D 27A0 : movea.l ($27a0,A5), A6 // direct attack / firearms
2D4804 | 082E 0000 01FF : btst #$0, ($1ff,A6)
2D480A | 6606 : bne $80162
2D480C | 052E 007C : btst D2, ($7c,A6)
2D4810 | 4E75 : rts
2D4812 | 4202 : clr.b D2
2D4814 | 4E75 : rts
2D4816 | 4841 : swap D1 // catch / throw
2D4818 | 1210 : move.b (A0), D1
2D481A | 082B 0000 01FF : btst #$0, ($1ff,A3)
2D4820 | 6604 : bne $80176
2D4822 | C207 : and.b D7, D1
2D4824 | 4E75 : rts
2D4826 | 4200 : clr.b D0
2D4828 | 4E75 : rts
2D482A | 082B 0000 01FF : btst #$0, ($1ff,A3) // moves
2D4830 | 6606 : bne $80188
2D4832 | 082B 0000 00E1 : btst #$0, ($e1,A3)
2D4838 | 4E75 : rts
2D483A | 082B 0000 01FF : btst #$0, ($1ff,A3) // jiraishin (daimon)
2D4840 | 6606 : bne $80198
2D4842 | 082B 0005 00E3 : btst #$5, ($e3,A3)
2D4848 | 4E75 : rts
-->
</script>
<script state="run">
<action condition="(param band 01) == 00">maincpu.pb@1082FF &= ~01</action>
<action condition="(param band 02) == 00">maincpu.pb@1084FF &= ~01</action>
<action condition="(param band 01) != 00">maincpu.pb@1082FF |= 01 </action>
<action condition="(param band 02) != 00">maincpu.pb@1084FF |= 01 </action>
</script>
<script state="off">
<action>maincpu.rq@00265E = 2C6D27A0052E007C</action>
<action>maincpu.rq@00A8AE = 48411210C2076700</action>
<action>maincpu.rq@00EAD8 = 082B000000E16600</action>
<action>maincpu.rq@0103EE = 082B000000E16600</action>
<action>maincpu.rq@011852 = 082B000000E16600</action>
<action>maincpu.rq@011C1A = 082B000000E16666</action>
<action>maincpu.rq@0123BC = 082B000000E16600</action>
<action>maincpu.rq@01AFCE = 082B000500E36620</action>
<action>maincpu.rq@01B126 = 082B000000E16600</action>
<action>maincpu.rq@01BE0C = 082B000000E16600</action>
<action>maincpu.rq@01CEAA = 082B000000E16600</action>
<action>maincpu.rq@02EA2C = 082B000000E16600</action>
<action>maincpu.rq@02EE30 = 082B000000E16640</action>
<action>maincpu.rq@030796 = 082B000000E16600</action>
<action>maincpu.rq@030B30 = 082B000000E16640</action>
<action>maincpu.rq@2D4800 = 0000000000000000</action>
<action>maincpu.rq@2D4808 = 0000000000000000</action>
<action>maincpu.rq@2D4810 = 0000000000000000</action>
<action>maincpu.rq@2D4818 = 0000000000000000</action>
<action>maincpu.rq@2D4820 = 0000000000000000</action>
<action>maincpu.rq@2D4828 = 0000000000000000</action>
<action>maincpu.rq@2D4830 = 0000000000000000</action>
<action>maincpu.rq@2D4838 = 0000000000000000</action>
<action>maincpu.rq@2D4840 = 0000000000000000</action>
<action>maincpu.rq@2D4848 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="rapid fire">
<parameter>
<item value="0x01">1P </item>
<item value="0x02">2P </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@00A84C = 4EB9002D48504E71</action>
<action>maincpu.rq@2D4850 = 1E2E0001082C0001</action>
<action>maincpu.rq@2D4858 = 01FF67021E160247</action>
<action>maincpu.rq@2D4860 = 00F04E7500000000</action>
<!--
2D4850 | 1E2E 0001 : move.b ($1,A6), D7
2D4854 | 082C 0001 01FF : btst #$1, ($1ff,A4)
2D485A | 6702 : beq $2d485e
2D485C | 1E16 : move.b (A6), D7
2D485E | 0247 00F0 : andi.w #$f0, D7
2D4862 | 4E75 : rts
-->
</script>
<script state="run">
<action condition="(param band 01) == 00">maincpu.pb@1082FF &= ~02</action>
<action condition="(param band 02) == 00">maincpu.pb@1084FF &= ~02</action>
<action condition="(param band 01) != 00">maincpu.pb@1082FF |= 02 </action>
<action condition="(param band 02) != 00">maincpu.pb@1084FF |= 02 </action>
</script>
<script state="off">
<action>maincpu.rq@00A84C = 1E2E0001024700F0</action>
<action>maincpu.rq@2D4850 = 0000000000000000</action>
<action>maincpu.rq@2D4858 = 0000000000000000</action>
<action>maincpu.rq@2D4860 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="action speed up">
<parameter>
<item value="0x01">1P </item>
<item value="0x02">2P </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@003FA4 = 4EB9002D48704E71</action>
<action>maincpu.rq@2D4870 = 082C000201FF6704</action>
<action>maincpu.rq@2D4878 = 103C00011940007A</action>
<action>maincpu.rq@2D4880 = 102C007F4E750000</action>
<!--
2D4870 | 082C 0002 01FF : btst #$2, ($1ff,A4)
2D4876 | 6704 : beq $2d487c
2D4878 | 103C 0001 : move.b #$1, D0
2D487C | 1940 007A : move.b D0, ($7a,A4)
2D4880 | 102C 007F : move.b ($7f,A4), D0
2D4884 | 4E75 : rts
-->
</script>
<script state="run">
<action condition="(param band 01) == 00">maincpu.pb@1082FF &= ~04</action>
<action condition="(param band 02) == 00">maincpu.pb@1084FF &= ~04</action>
<action condition="(param band 01) != 00">maincpu.pb@1082FF |= 04 </action>
<action condition="(param band 02) != 00">maincpu.pb@1084FF |= 04 </action>
</script>
<script state="off">
<action>maincpu.rq@003FA4 = 1940007A102C007F</action>
<action>maincpu.rq@2D4870 = 0000000000000000</action>
<action>maincpu.rq@2D4878 = 0000000000000000</action>
<action>maincpu.rq@2D4880 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="special move">
<parameter>
<item value="0x01">1P </item>
<item value="0x02">2P </item>
<item value="0x03">both players</item>
</parameter>
<script state="on">
<action>maincpu.rq@004BB8 = 4EB9002D48906614</action>
<action>maincpu.rq@00B832 = 4EB9002D48906614</action>
<action>maincpu.rq@00B856 = 4EB9002D4890661C</action>
<action>maincpu.rq@00B8A2 = 4EB9002D48906614</action>
<action>maincpu.rq@2D4890 = 082C000301FF6606</action>
<action>maincpu.rq@2D4898 = 082D000380004E75</action>
<!--
2D4890 | 082C 0003 01FF : btst #$3, ($1ff,A4)
2D4896 | 6606 : bne $2d489e
2D4898 | 082D 0003 8000 : btst #$3, (-$8000,A5)
2D489E | 4E75 : rts
-->
</script>
<script state="run">
<action condition="(param band 01) == 00">maincpu.pb@1082FF &= ~08</action>
<action condition="(param band 02) == 00">maincpu.pb@1084FF &= ~08</action>
<action condition="(param band 01) != 00">maincpu.pb@1082FF |= 08 </action>
<action condition="(param band 02) != 00">maincpu.pb@1084FF |= 08 </action>
</script>
<script state="off">
<action>maincpu.rq@004BB8 = 082D000380006614</action>
<action>maincpu.rq@00B832 = 082D000380006614</action>
<action>maincpu.rq@00B856 = 082D00038000661C</action>
<action>maincpu.rq@00B8A2 = 082D000380006614</action>
<action>maincpu.rq@2D4890 = 0000000000000000</action>
<action>maincpu.rq@2D4898 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="timer speed">
<parameter>
<item value="0x1B7C00FF">01 (slow)</item>
<item value="0x1B7C00C0">02 </item>
<item value="0x1B7C0080">03 </item>
<item value="0x1B7C0040">04 </item>
<item value="0x1B7C0001">05 (fast)</item>
</parameter>
<script state="change">
<action>maincpu.rd@39FD4 = param</action>
<action>maincpu.rd@3B532 = param</action>
<action>maincpu.rd@3BA70 = param</action>
</script>
<script state="off">
<action>maincpu.rd@39FD4 = 1B6D2838</action>
<action>maincpu.rd@3B532 = 1B6D2838</action>
<action>maincpu.rd@3BA70 = 1B6D2838</action>
</script>
</cheat>
<cheat desc="unlock secret characters">
<script state="on">
<action>maincpu.rw@3E68E = 4E71</action>
</script>
<script state="off">
<action>maincpu.rw@3E68E = 6706</action>
</script>
</cheat>
<cheat desc="sound test mode">
<!-- don't play code 0x01, 0x03 and 0x10 because of no sound response -->
<!-- valid bank number seems to be 0x00, 0x08, 0x0A and 0x0E -->
<script state="on">
<action>maincpu.rq@039048 = 4EF9002D48A04E71</action>
<action>maincpu.rq@2D48A0 = 43ED000145ED56B2</action>
<action>maincpu.rq@2D48A8 = 47F865F000390080</action>
<action>maincpu.rq@2D48B0 = 0010FD8014011239</action>
<action>maincpu.rq@2D48B8 = 00300000B40167F4</action>
<action>maincpu.rq@2D48C0 = 0C0100FB66025315</action>
<action>maincpu.rq@2D48C8 = 0C0100F766025215</action>
<action>maincpu.rq@2D48D0 = 0C0100FD66040415</action>
<action>maincpu.rq@2D48D8 = 00100C0100FE6604</action>
<action>maincpu.rq@2D48E0 = 061500100C0100BB</action>
<action>maincpu.rq@2D48E8 = 660253110C0100B7</action>
<action>maincpu.rq@2D48F0 = 660252110211000F</action>
<action>maincpu.rq@2D48F8 = 0C0100EF66124243</action>
<action>maincpu.rq@2D4900 = 1611670400030010</action>
<action>maincpu.rq@2D4908 = E14B861534834E93</action>
<action>maincpu.rq@2D4910 = 0C0100DF660634BC</action>
<action>maincpu.rq@2D4918 = 03074E9360960000</action>
<!--
2D48A0 | 43ED 0001 : lea ($1,A5), A1 // bank address ($108001)
2D48A4 | 45ED 56B2 : lea ($56b2,A5), A2 // sound latch address ($10D6B2)
2D48A8 | 47F8 65F0 : lea $65f0.w, A3 // sound latch routine address
2D48AC | 0039 0080 0010 FD80 : ori.b #$80, $10fd80.l // set flag for interrupt
2D48B4 | 1401 : move.b D1, D2
2D48B6 | 1239 0030 0000 : move.b $300000.l, D1 // read input
2D48BC | B401 : cmp.b D1, D2
2D48BE | 67F4 : beq $2d48b4
2D48C0 | 0C01 00FB : cmpi.b #-$5, D1
2D48C4 | 6602 : bne $2d48c8
2D48C6 | 5315 : subq.b #1, (A5) // decrease code -01
2D48C8 | 0C01 00F7 : cmpi.b #-$9, D1
2D48CC | 6602 : bne $2d48d0
2D48CE | 5215 : addq.b #1, (A5) // increase code +01
2D48D0 | 0C01 00FD : cmpi.b #-$3, D1
2D48D4 | 6604 : bne $2d48da
2D48D6 | 0415 0010 : subi.b #$10, (A5) // decrease code -10
2D48DA | 0C01 00FE : cmpi.b #-$2, D1
2D48DE | 6604 : bne $2d48e4
2D48E0 | 0615 0010 : addi.b #$10, (A5) // increase code +10
2D48E4 | 0C01 00BB : cmpi.b #-$45, D1
2D48E8 | 6602 : bne $2d48ec
2D48EA | 5311 : subq.b #1, (A1) // decrease bank -01
2D48EC | 0C01 00B7 : cmpi.b #-$49, D1
2D48F0 | 6602 : bne $2d48f4
2D48F2 | 5211 : addq.b #1, (A1) // increase bank +01
2D48F4 | 0211 000F : andi.b #$f, (A1) // mask bank
2D48F8 | 0C01 00EF : cmpi.b #-$11, D1
2D48FC | 6612 : bne $2d4910
2D48FE | 4243 : clr.w D3 // play sound
2D4900 | 1611 : move.b (A1), D3
2D4902 | 6704 : beq $2d4908
2D4904 | 0003 0010 : ori.b #$10, D3
2D4908 | E14B : lsl.w #8, D3
2D490A | 8615 : or.b (A5), D3
2D490C | 3483 : move.w D3, (A2)
2D490E | 4E93 : jsr (A3)
2D4910 | 0C01 00DF : cmpi.b #-$21, D1
2D4914 | 6606 : bne $2d491c
2D4916 | 34BC 0307 : move.w #$307, (A2) // stop sound
2D491A | 4E93 : jsr (A3)
2D491C | 6096 : bra $2d48b4
-->
</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 3 + left : decrease bank -01" line="15" align="center" />
<output format="button 3 + right : increase bank +01" line="16" align="center" />
<output format="button 1 : play sound" line="17" align="center" />
<output format="button 2 : stop sound" line="18" align="center" />
<output format="----------------------------" line="19" align="center" />
<output format="<< bank %X >>" line="21" align="center" >
<argument>maincpu.pb@108001</argument>
</output>
<output format="<< sound code %02X >>" line="23" align="center" >
<argument>maincpu.pb@108000</argument>
</output>
</script>
<script state="off">
<action>maincpu.rq@039048 = 003900800010FD80</action>
<action>maincpu.rq@2D48A0 = 0000000000000000</action>
<action>maincpu.rq@2D48A8 = 0000000000000000</action>
<action>maincpu.rq@2D48B0 = 0000000000000000</action>
<action>maincpu.rq@2D48B8 = 0000000000000000</action>
<action>maincpu.rq@2D48C0 = 0000000000000000</action>
<action>maincpu.rq@2D48C8 = 0000000000000000</action>
<action>maincpu.rq@2D48D0 = 0000000000000000</action>
<action>maincpu.rq@2D48D8 = 0000000000000000</action>
<action>maincpu.rq@2D48E0 = 0000000000000000</action>
<action>maincpu.rq@2D48E8 = 0000000000000000</action>
<action>maincpu.rq@2D48F0 = 0000000000000000</action>
<action>maincpu.rq@2D48F8 = 0000000000000000</action>
<action>maincpu.rq@2D4900 = 0000000000000000</action>
<action>maincpu.rq@2D4908 = 0000000000000000</action>
<action>maincpu.rq@2D4910 = 0000000000000000</action>
<action>maincpu.rq@2D4918 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="skip ram/rom check">
<script state="on">
<action condition="maincpu.rd@C11AFC == 3A3C7FFF">temp0 = C11AFC, maincpu.rd@temp0 = 60000168</action> <!-- euro, euro-s1, japan-s2, japan-s1 -->
<action condition="maincpu.rd@C10C20 == 3A3C7FFF">temp0 = C10C20, maincpu.rd@temp0 = 60000168</action> <!-- asia-mv1c, japan-mv1b -->
<action condition="maincpu.rd@C10AFC == 3A3C7FFF">temp0 = C10AFC, maincpu.rd@temp0 = 60000168</action> <!-- asia-mv1b, japan-mv1c -->
<action condition="maincpu.rd@C11AD2 == 3A3C7FFF">temp0 = C11AD2, maincpu.rd@temp0 = 60000168</action> <!-- us, us-e, us-v2, us-u4 -->
<action condition="maincpu.rd@C11ABC == 3A3C7FFF">temp0 = C11ABC, maincpu.rd@temp0 = 60000104</action> <!-- us-u3 -->
<action condition="maincpu.rd@C11C24 == 3A3C7FFF">temp0 = C11C24, maincpu.rd@temp0 = 60000168</action> <!-- japan -->
<action condition="maincpu.rd@C11AE6 == 3A3C7FFF">temp0 = C11AE6, maincpu.rd@temp0 = 60000104</action> <!-- japan-j3a -->
<action condition="maincpu.rd@C11BC6 == 3A3C7FFF">temp0 = C11BC6, maincpu.rd@temp0 = 6000017C</action> <!-- japan-hotel -->
</script>
<script state="off">
<action>maincpu.rd@temp0 = 3A3C7FFF</action>
</script>
</cheat>
</mamecheat>