Code: Select all
<!-- Metal Slug - Super Vehicle-001 -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<action>maincpu.rb@28590 = 60</action>
</script>
<script state="off">
<action>maincpu.rb@28590 = 66</action>
</script>
</cheat>
<cheat desc="auto fire">
<script state="on">
<action>maincpu.rb@45983 = 02</action> <!-- shot (metal slug) -->
<action>maincpu.rb@5CDAF = 02</action> <!-- shot -->
<action>maincpu.rb@5CDC7 = 02</action> <!-- bomb/cannon -->
<action>maincpu.rb@9A4AB = 02</action> <!-- battery (last mission) -->
</script>
<script state="off">
<action>maincpu.rb@45983 = 03</action>
<action>maincpu.rb@5CDAF = 03</action>
<action>maincpu.rb@5CDC7 = 03</action>
<action>maincpu.rb@9A4AB = 03</action>
</script>
</cheat>
<cheat desc="multiple jump">
<script state="on">
<action>maincpu.rq@36A50 = 4EB90009C6100C2E</action> <!-- jump -->
<action>maincpu.rq@36DC4 = 4EB90009C6184EB9</action> <!-- fall down -->
<action>maincpu.rq@2CA70 = 4EB90009C6204EBA</action> <!-- jump (metal slug) -->
<action>maincpu.rq@2D216 = 4EB90009C628082E</action> <!-- fall down (metal slug) -->
<action>maincpu.rq@9C610 = 43F90009C6326016</action>
<action>maincpu.rq@9C618 = 43F90009C640600E</action>
<action>maincpu.rq@9C620 = 43F90009C6546006</action>
<action>maincpu.rq@9C628 = 43F90009C6622C89</action>
<action>maincpu.rq@9C630 = 4E754EB90005CDB4</action>
<action>maincpu.rq@9C638 = 650E4EF900036A70</action>
<action>maincpu.rq@9C640 = 4EB90005CDB46406</action>
<action>maincpu.rq@9C648 = 4EF9000369144EF9</action>
<action>maincpu.rq@9C650 = 00036DCA4EB90005</action>
<action>maincpu.rq@9C658 = CDB4650E4EF90002</action>
<action>maincpu.rq@9C660 = CA8A4EB90005CDB4</action>
<action>maincpu.rq@9C668 = 64064EF90002C9C4</action>
<action>maincpu.rq@9C670 = 4EF90002D26E0000</action>
<!--
9C610 | 43F9 0009 C632 : lea $9c632.l, A1 // jump
9C616 | 6016 : bra $9c62e
9C618 | 43F9 0009 C640 : lea $9c640.l, A1 // fall down
9C61E | 600E : bra $9c62e
9C620 | 43F9 0009 C654 : lea $9c654.l, A1 // jump (metal slug)
9C626 | 6006 : bra $9c62e
9C628 | 43F9 0009 C662 : lea $9c662.l, A1 // fall down (metal slug)
9C62E | 2C89 : move.l A1, (A6)
9C630 | 4E75 : rts
9C632 | 4EB9 0005 CDB4 : jsr $5cdb4.l // jump
9C638 | 650E : bcs $9c648
9C63A | 4EF9 0003 6A70 : jmp $36a70.l
9C640 | 4EB9 0005 CDB4 : jsr $5cdb4.l // fall down
9C646 | 6406 : bcc $9c64e
9C648 | 4EF9 0003 6914 : jmp $36914.l
9C64E | 4EF9 0003 6DCA : jmp $36dca.l
9C654 | 4EB9 0005 CDB4 : jsr $5cdb4.l // jump (metal slug)
9C65A | 650E : bcs $9c66a
9C65C | 4EF9 0002 CA8A : jmp $2ca8a.l
9C662 | 4EB9 0005 CDB4 : jsr $5cdb4.l // fall down (metal slug)
9C668 | 6406 : bcc $9c670
9C66A | 4EF9 0002 C9C4 : jmp $2c9c4.l
9C670 | 4EF9 0002 D26E : jmp $2d26e.l
-->
</script>
<script state="off">
<action>maincpu.rq@36A50 = 43FA001E2C890C2E</action>
<action>maincpu.rq@36DC4 = 43FA00042C894EB9</action>
<action>maincpu.rq@2CA70 = 43FA00182C894EBA</action>
<action>maincpu.rq@2D216 = 43FA00562C89082E</action>
<action>maincpu.rq@9C610 = 0000000000000000</action>
<action>maincpu.rq@9C618 = 0000000000000000</action>
<action>maincpu.rq@9C620 = 0000000000000000</action>
<action>maincpu.rq@9C628 = 0000000000000000</action>
<action>maincpu.rq@9C630 = 0000000000000000</action>
<action>maincpu.rq@9C638 = 0000000000000000</action>
<action>maincpu.rq@9C640 = 0000000000000000</action>
<action>maincpu.rq@9C648 = 0000000000000000</action>
<action>maincpu.rq@9C650 = 0000000000000000</action>
<action>maincpu.rq@9C658 = 0000000000000000</action>
<action>maincpu.rq@9C660 = 0000000000000000</action>
<action>maincpu.rq@9C668 = 0000000000000000</action>
<action>maincpu.rq@9C670 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="timer speed">
<parameter>
<item value="0xff">01 (slow)</item>
<item value="0x7f">02 </item>
<item value="0x3f">03 </item>
<item value="0x1f">04 </item>
<item value="0x00">05 (fast)</item>
</parameter>
<script state="change">
<action>maincpu.rb@1BF7 = param</action>
</script>
<script state="off">
<action>maincpu.rb@1BF7 = 7F</action>
</script>
</cheat>
<cheat desc="sound test mode">
<!-- don't play code 0x01 because of no sound response -->
<!-- valid bank number seems to be 0x00 (music), 0x01 (sfx) and 0x02 (voice) -->
<comment>reset the game (F3) to enter sound test mode</comment>
<script state="on">
<action>maincpu.rb@01E77 = 02 </action> <!-- watchdog -->
<action>maincpu.rq@01FDC = 4EF90009C6805279</action>
<action>maincpu.rq@9C680 = 41F90010800043E8</action>
<action>maincpu.rq@9C688 = 000145F822141602</action>
<action>maincpu.rq@9C690 = 143900300000B602</action>
<action>maincpu.rq@9C698 = 67E60C0200FB6602</action>
<action>maincpu.rq@9C6A0 = 53100C0200F76602</action>
<action>maincpu.rq@9C6A8 = 52100C0200FD6604</action>
<action>maincpu.rq@9C6B0 = 041000100C0200FE</action>
<action>maincpu.rq@9C6B8 = 6604061000100C02</action>
<action>maincpu.rq@9C6C0 = 00BB660253110C02</action>
<action>maincpu.rq@9C6C8 = 00B7660252110211</action>
<action>maincpu.rq@9C6D0 = 000F0C0200EF6610</action>
<action>maincpu.rq@9C6D8 = 4240101167060600</action>
<action>maincpu.rq@9C6E0 = 000FE14880104E92</action>
<action>maincpu.rq@9C6E8 = 0C0200DF6612303C</action>
<action>maincpu.rq@9C6F0 = 00014E92303C0003</action>
<action>maincpu.rq@9C6F8 = 4E92303C00074E92</action>
<action>maincpu.rq@9C700 = 6000FF7E00000000</action>
<!--
9C680 | 41F9 0010 8000 : lea $108000.l, A0 // sound code address
9C686 | 43E8 0001 : lea ($1,A0), A1 // bank number address ($108001)
9C68A | 45F8 2214 : lea $2214.w, A2 // sound latch routine
9C68E | 1602 : move.b D2, D3
9C690 | 1439 0030 0000 : move.b $300000.l, D2 // read input
9C696 | B602 : cmp.b D2, D3
9C698 | 67E6 : beq $9c680
9C69A | 0C02 00FB : cmpi.b #-$5, D2
9C69E | 6602 : bne $9c6a2
9C6A0 | 5310 : subq.b #1, (A0) // decrease code -01
9C6A2 | 0C02 00F7 : cmpi.b #-$9, D2
9C6A6 | 6602 : bne $9c6aa
9C6A8 | 5210 : addq.b #1, (A0) // increase code +01
9C6AA | 0C02 00FD : cmpi.b #-$3, D2
9C6AE | 6604 : bne $9c6b4
9C6B0 | 0410 0010 : subi.b #$10, (A0) // decrease code -10
9C6B4 | 0C02 00FE : cmpi.b #-$2, D2
9C6B8 | 6604 : bne $9c6be
9C6BA | 0610 0010 : addi.b #$10, (A0) // increase code +10
9C6BE | 0C02 00BB : cmpi.b #-$45, D2
9C6C2 | 6602 : bne $9c6c6
9C6C4 | 5311 : subq.b #1, (A1) // decrease bank -01
9C6C6 | 0C02 00B7 : cmpi.b #-$49, D2
9C6CA | 6602 : bne $9c6ce
9C6CC | 5211 : addq.b #1, (A1) // increase bank +01
9C6CE | 0211 000F : andi.b #$f, (A1) // mask bank number (0x00-0x0f)
9C6D2 | 0C02 00EF : cmpi.b #-$11, D2
9C6D6 | 6610 : bne $9c6e8
9C6D8 | 4240 : clr.w D0 // play sound
9C6DA | 1011 : move.b (A1), D0
9C6DC | 6706 : beq $9c6e4
9C6DE | 0600 000F : addi.b #$f, D0
9C6E2 | E148 : lsl.w #8, D0
9C6E4 | 8010 : or.b (A0), D0
9C6E6 | 4E92 : jsr (A2)
9C6E8 | 0C02 00DF : cmpi.b #-$21, D2
9C6EC | 6612 : bne $9c700
9C6EE | 303C 0001 : move.w #$1, D0 // stop sound
9C6F2 | 4E92 : jsr (A2)
9C6F4 | 303C 0003 : move.w #$3, D0
9C6F8 | 4E92 : jsr (A2)
9C6FA | 303C 0007 : move.w #$7, D0
9C6FE | 4E92 : jsr (A2)
9C700 | 6000 FF7E : bra $9c680
-->
</script>
<script state="run">
<output format="----- metal slug 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 %02X >>" 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.rb@01E77 = 08 </action>
<action>maincpu.rq@01FDC = 43FA00042C895279</action>
<action>maincpu.rq@9C680 = 0000000000000000</action>
<action>maincpu.rq@9C688 = 0000000000000000</action>
<action>maincpu.rq@9C690 = 0000000000000000</action>
<action>maincpu.rq@9C698 = 0000000000000000</action>
<action>maincpu.rq@9C6A0 = 0000000000000000</action>
<action>maincpu.rq@9C6A8 = 0000000000000000</action>
<action>maincpu.rq@9C6B0 = 0000000000000000</action>
<action>maincpu.rq@9C6B8 = 0000000000000000</action>
<action>maincpu.rq@9C6C0 = 0000000000000000</action>
<action>maincpu.rq@9C6C8 = 0000000000000000</action>
<action>maincpu.rq@9C6D0 = 0000000000000000</action>
<action>maincpu.rq@9C6D8 = 0000000000000000</action>
<action>maincpu.rq@9C6E0 = 0000000000000000</action>
<action>maincpu.rq@9C6E8 = 0000000000000000</action>
<action>maincpu.rq@9C6F0 = 0000000000000000</action>
<action>maincpu.rq@9C6F8 = 0000000000000000</action>
<action>maincpu.rq@9C700 = 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>