[mslug] Metal Slug

This forum is for posting M.A.M.E. Work In Progress "Arcade"cheats that are not quite ready for the prime time. If the cheats are buggy or the cheat descriptions are non-standard then please post them here. Help maybe given but there are no guarantees and they will only be added to the cheat file when the cheat file maintainer is happy with them.
Post Reply
jman
Posts: 850
Joined: Tue Dec 01, 2020 1:24 pm

[mslug] Metal Slug

Post by jman »

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="&lt;&lt; bank %02X &gt;&gt;"            line="21" align="center"  >
                <argument>maincpu.pb@108001</argument>
            </output>
            <output format="&lt;&lt; sound code %02X &gt;&gt;"      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>
"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). For example, "Heavy Machine-gun" (voice) is code 0x2d with bank 0x02.
Post Reply