[retofinv] Return of the Invaders

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: 842
Joined: Tue Dec 01, 2020 1:24 pm

[retofinv] Return of the Invaders

Post by jman »

Code: Select all

<cheat desc="no hit">
    <script state="on">
        <action>maincpu.mb@3ab5 = af</action> <!-- bullet -->
        <action>maincpu.mb@3af0 = af</action> <!-- enemy -->
        <action>maincpu.mb@3b09 = af</action> <!-- reflect bullet -->
        <action>maincpu.mb@3b22 = af</action> <!-- enemy -->
    </script>
    <script state="off">
        <action>maincpu.mb@3ab5 = e7</action>
        <action>maincpu.mb@3af0 = e7</action>
        <action>maincpu.mb@3b09 = e7</action>
        <action>maincpu.mb@3b22 = e7</action>
    </script>
</cheat>

<cheat desc="auto fire">
    <script state="on">
        <action>maincpu.md@3240 =         006000cd</action>
        <action>maincpu.mq@6000 = fd042880e699a83a</action>
        <action>maincpu.mq@6008 = c9465acbfd015a36</action>
        <!--
        6000 | 3a a8 99    : ld  a,($99A8)
        6003 | e6 80       : and $80
        6005 | 28 04       : jr  z,$600B
        6007 | fd 36 5a 01 : ld  (iy+$5a),$01
        600b | fd cb 5a 46 : bit 0,(iy+$5a)
        600f | c9          : ret
        -->
    </script>
    <script state="off">
        <action>maincpu.md@3240 =         465acbfd</action>
        <action>maincpu.mq@6000 = 0000000000000000</action>
        <action>maincpu.mq@6008 = 0000000000000000</action>
    </script>
</cheat>

<cheat desc="player speed">
    <parameter>
        <item value="0x0080">01 (slow)</item>
        <item value="0x0100">02       </item>
        <item value="0x0180">03       </item>
        <item value="0x0200">04       </item>
        <item value="0x0280">05 (fast)</item>
    </parameter>
    <script state="change">
        <action>maincpu.mw@1239 =  param</action> <!-- right -->
        <action>maincpu.mw@11f9 = -param</action> <!-- left -->
    </script>
    <script state="off">
        <action>maincpu.mw@1239 = 0080</action>
        <action>maincpu.mw@11f9 = ff80</action>
    </script>
</cheat>

<cheat desc="bullet speed">
    <parameter>
        <item value="0x01">01 (slow)</item>
        <item value="0x04">02       </item>
        <item value="0x08">03       </item>
        <item value="0x0c">04       </item>
        <item value="0x10">05 (fast)</item>
    </parameter>
    <script state="change">
        <action>maincpu.mb@32f4 = param</action>
    </script>
    <script state="off">
        <action>maincpu.mb@32f4 = 04</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@016a =             6010</action>
        <action>maincpu.mq@6010 = 5bedd00032890021</action>
        <action>maincpu.mq@6018 = 207ffeff0e7ac000</action>
        <action>maincpu.mq@6020 = eb2847b8a17b0d01</action>
        <action>maincpu.mq@6028 = 20f7fe350120fdfe</action>
        <action>maincpu.mq@6030 = 187e03207ffe3401</action>
        <action>maincpu.mq@6038 = 0032af0420fefe05</action>
        <action>maincpu.mq@6040 = 0000000000d018d8</action>
        <!--
        6010 | 21 00 89    : ld  hl,$8900   // sound code address
        6013 | 32 00 d0    : ld  ($D000),a  // watchdog
        6016 | ed 5b 00 c0 : ld  de,($C000) // read input
        601a | 7a          : ld  a,d
        601b | 0e ff       : ld  c,$FF
        601d | fe 7f       : cp  $7F        // check P2 button 1
        601f | 20 01       : jr  nz,$6022
        6021 | 0d          : dec c
        6022 | 7b          : ld  a,e
        6023 | a1          : and c
        6024 | b8          : cp  b
        6025 | 47          : ld  b,a
        6026 | 28 eb       : jr  z,$6013
        6028 | fe fd       : cp  $FD
        602a | 20 01       : jr  nz,$602D
        602c | 35          : dec (hl)       // decrease code
        602d | fe f7       : cp  $F7
        602f | 20 01       : jr  nz,$6032
        6031 | 34          : inc (hl)       // increase code
        6032 | fe 7f       : cp  $7F
        6034 | 20 03       : jr  nz,$6039
        6036 | 7e          : ld  a,(hl)     // play sound
        6037 | 18 05       : jr  $603E
        6039 | fe fe       : cp  $FE
        603b | 20 04       : jr  nz,$6041
        603d | af          : xor a          // stop sound
        603e | 32 00 d8    : ld  ($D800),a  // send sound code
        6041 | 18 d0       : jr  $6013
        -->
    </script>
    <script state="run">
        <output format="----- return of the invaders sound test mode -----" line="10" align="center" />
        <output format="left : decrease code"                               line="11" align="center" />
        <output format="right : increase code"                              line="12" align="center" />
        <output format="1P button 1 : play sound"                           line="13" align="center" />
        <output format="2P button 2 : stop sound"                           line="14" align="center" />
        <output format="----------------------------"                       line="15" align="center" />
        <output format="&lt;&lt; sound code %2.2X &gt;&gt;"                 line="17" align="center">
            <argument>maincpu.pb@8900</argument>
        </output>
    </script>
    <script state="off">
        <action>maincpu.mw@016a =             4287</action>
        <action>maincpu.mq@6010 = 0000000000000000</action>
        <action>maincpu.mq@6018 = 0000000000000000</action>
        <action>maincpu.mq@6020 = 0000000000000000</action>
        <action>maincpu.mq@6028 = 0000000000000000</action>
        <action>maincpu.mq@6030 = 0000000000000000</action>
        <action>maincpu.mq@6038 = 0000000000000000</action>
        <action>maincpu.mq@6040 = 0000000000000000</action>
    </script>
</cheat>

<cheat desc="skip rom check">
    <script state="on">
        <action>maincpu.mb@4288 = 23</action>
    </script>
    <script state="off">
        <action>maincpu.mb@4288 = 24</action>
    </script>
</cheat>
jman
Posts: 842
Joined: Tue Dec 01, 2020 1:24 pm

[retofinv]+ Return of the Invaders

Post by jman »

retofinv.xml

Code: Select all

<!-- Return of the Invaders -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@3AB5 = AF</action> <!-- bullet -->
            <action>maincpu.mb@3AF0 = AF</action> <!-- enemy -->
            <action>maincpu.mb@3B09 = AF</action> <!-- reflect bullet -->
            <action>maincpu.mb@3B22 = AF</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@3AB5 = E7</action>
            <action>maincpu.mb@3AF0 = E7</action>
            <action>maincpu.mb@3B09 = E7</action>
            <action>maincpu.mb@3B22 = E7</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@3240 = 006000CD        </action>
            <action>maincpu.mq@6000 = FD042880E699A83A</action>
            <action>maincpu.mq@6008 = C9465ACBFDC65ACB</action>
            <!--
            6000 | 3A A8 99    : ld   a,($99A8)
            6003 | E6 80       : and  $80
            6005 | 28 04       : jr   z,$600B
            6007 | FD CB 5A C6 : set  0,(iy+$5a)
            600B | FD CB 5A 46 : bit  0,(iy+$5a)
            600F | C9          : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@3240 = 465ACBFD        </action>
            <action>maincpu.mq@6000 = 0000000000000000</action>
            <action>maincpu.mq@6008 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x0020">01 (slow)</item>
            <item value="0x0080">02       </item>
            <item value="0x0180">03       </item>
            <item value="0x0280">04       </item>
            <item value="0x0380">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mw@11F9 = -param</action> <!-- left -->
            <action>maincpu.mw@1239 =  param</action> <!-- right -->
        </script>
        <script state="off">
            <action>maincpu.mw@11F9 = FF80</action>
            <action>maincpu.mw@1239 = 0080</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x04">02       </item>
            <item value="0x08">03       </item>
            <item value="0x0c">04       </item>
            <item value="0x10">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@32F4 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@32F4 = 04</action>
        </script>
    </cheat>

    <cheat desc="invader speed (test)">
        <comment>works in &quot;normal&quot; invader pattern (e.g. stage 2)</comment>
        <parameter>
            <item value="0x0008">01 (slow)</item>
            <item value="0x0020">02       </item>
            <item value="0x0080">03       </item>
            <item value="0x0100">04       </item>
            <item value="0x0200">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@3CFC = 00000011</action>
            <action>maincpu.md@3D23 = 00000011</action>
        </script>
        <script state="change">
            <action>maincpu.mw@3CFD = param</action>
            <action>maincpu.mw@3D24 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@3CFC = 9A255BED</action>
            <action>maincpu.md@3D23 = 9A255BED</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@016A = 6010            </action>
            <action>maincpu.mq@6010 = 043AD00032880021</action>
            <action>maincpu.mq@6018 = C0003A4F01E62FC0</action>
            <action>maincpu.mq@6020 = 02FEED2847B8B12F</action>
            <action>maincpu.mq@6028 = 34012008FE350120</action>
            <action>maincpu.mq@6030 = FE05187E032080FE</action>
            <action>maincpu.mq@6038 = 18D80032AF042001</action>
            <action>maincpu.mq@6040 = 00000000000000D2</action>
            <!--
            6010 | 21 00 88 : ld   hl,$8800  // sound code address
            6013 | 32 00 D0 : ld   ($D000),a // watchdog
            6016 | 3A 04 C0 : ld   a,($C004) // read start button
            6019 | 2F       : cpl
            601A | E6 01    : and  $01
            601C | 4F       : ld   c,a
            601D | 3A 00 C0 : ld   a,($C000) // reat other inputs
            6020 | 2F       : cpl
            6021 | B1       : or   c
            6022 | B8       : cp   b
            6023 | 47       : ld   b,a
            6024 | 28 ED    : jr   z,$6013
            6026 | FE 02    : cp   $02
            6028 | 20 01    : jr   nz,$602B
            602A | 35       : dec  (hl)      // decrease code -01
            602B | FE 08    : cp   $08
            602D | 20 01    : jr   nz,$6030
            602F | 34       : inc  (hl)      // increase code +01
            6030 | FE 80    : cp   $80
            6032 | 20 03    : jr   nz,$6037
            6034 | 7E       : ld   a,(hl)    // play sound
            6035 | 18 05    : jr   $603C
            6037 | FE 01    : cp   $01
            6039 | 20 04    : jr   nz,$603F
            603B | AF       : xor  a         // stop sound
            603C | 32 00 D8 : ld   ($D800),a
            603F | 18 D2    : jr   $6013
            -->
        </script>
        <script state="run">
            <output format="----- return of the invaders sound test mode -----" line="10" align="center" />
            <output format="left : decrease code"                               line="11" align="center" />
            <output format="right : increase code"                              line="12" align="center" />
            <output format="button 1 : play sound"                              line="13" align="center" />
            <output format="start 1 : stop sound"                               line="14" align="center" />
            <output format="----------------------------"                       line="15" align="center" />
            <output format="&lt;&lt; sound code %2.2X &gt;&gt;"                 line="17" align="center"  >
                <argument>maincpu.pb@8800</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@016A = 4287            </action>
            <action>maincpu.mq@6010 = 0000000000000000</action>
            <action>maincpu.mq@6018 = 0000000000000000</action>
            <action>maincpu.mq@6020 = 0000000000000000</action>
            <action>maincpu.mq@6028 = 0000000000000000</action>
            <action>maincpu.mq@6030 = 0000000000000000</action>
            <action>maincpu.mq@6038 = 0000000000000000</action>
            <action>maincpu.mq@6040 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mb@4288 = 23</action>
        </script>
        <script state="off">
            <action>maincpu.mb@4288 = 24</action>
        </script>
    </cheat>

</mamecheat>
retofinvb.xml

Code: Select all

<!-- Return of the Invaders (bootleg w/MCU) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@3AB5 = AF</action> <!-- bullet -->
            <action>maincpu.mb@3AF0 = AF</action> <!-- enemy -->
            <action>maincpu.mb@3B09 = AF</action> <!-- reflect bullet -->
            <action>maincpu.mb@3B22 = AF</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@3AB5 = E7</action>
            <action>maincpu.mb@3AF0 = E7</action>
            <action>maincpu.mb@3B09 = E7</action>
            <action>maincpu.mb@3B22 = E7</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@3240 = 006000CD        </action>
            <action>maincpu.mq@6000 = FD042880E699A83A</action>
            <action>maincpu.mq@6008 = C9465ACBFDC65ACB</action>
            <!--
            6000 | 3A A8 99    : ld   a,($99A8)
            6003 | E6 80       : and  $80
            6005 | 28 04       : jr   z,$600B
            6007 | FD CB 5A C6 : set  0,(iy+$5a)
            600B | FD CB 5A 46 : bit  0,(iy+$5a)
            600F | C9          : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@3240 = 465ACBFD        </action>
            <action>maincpu.mq@6000 = 0000000000000000</action>
            <action>maincpu.mq@6008 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x0020">01 (slow)</item>
            <item value="0x0080">02       </item>
            <item value="0x0180">03       </item>
            <item value="0x0280">04       </item>
            <item value="0x0380">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mw@11F9 = -param</action> <!-- left -->
            <action>maincpu.mw@1239 =  param</action> <!-- right -->
        </script>
        <script state="off">
            <action>maincpu.mw@11F9 = FF80</action>
            <action>maincpu.mw@1239 = 0080</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x04">02       </item>
            <item value="0x08">03       </item>
            <item value="0x0c">04       </item>
            <item value="0x10">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@32F4 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@32F4 = 04</action>
        </script>
    </cheat>

    <cheat desc="invader speed (test)">
        <comment>works in &quot;normal&quot; invader pattern (e.g. stage 2)</comment>
        <parameter>
            <item value="0x0008">01 (slow)</item>
            <item value="0x0020">02       </item>
            <item value="0x0080">03       </item>
            <item value="0x0100">04       </item>
            <item value="0x0200">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@3CFC = 00000011</action>
            <action>maincpu.md@3D23 = 00000011</action>
        </script>
        <script state="change">
            <action>maincpu.mw@3CFD = param</action>
            <action>maincpu.mw@3D24 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@3CFC = 9A255BED</action>
            <action>maincpu.md@3D23 = 9A255BED</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@016A = 6010            </action>
            <action>maincpu.mq@6010 = 043AD00032880021</action>
            <action>maincpu.mq@6018 = C0003A4F01E62FC0</action>
            <action>maincpu.mq@6020 = 02FEED2847B8B12F</action>
            <action>maincpu.mq@6028 = 34012008FE350120</action>
            <action>maincpu.mq@6030 = FE05187E032080FE</action>
            <action>maincpu.mq@6038 = 18D80032AF042001</action>
            <action>maincpu.mq@6040 = 00000000000000D2</action>
            <!--
            6010 | 21 00 88 : ld   hl,$8800  // sound code address
            6013 | 32 00 D0 : ld   ($D000),a // watchdog
            6016 | 3A 04 C0 : ld   a,($C004) // read start button
            6019 | 2F       : cpl
            601A | E6 01    : and  $01
            601C | 4F       : ld   c,a
            601D | 3A 00 C0 : ld   a,($C000) // reat other inputs
            6020 | 2F       : cpl
            6021 | B1       : or   c
            6022 | B8       : cp   b
            6023 | 47       : ld   b,a
            6024 | 28 ED    : jr   z,$6013
            6026 | FE 02    : cp   $02
            6028 | 20 01    : jr   nz,$602B
            602A | 35       : dec  (hl)      // decrease code -01
            602B | FE 08    : cp   $08
            602D | 20 01    : jr   nz,$6030
            602F | 34       : inc  (hl)      // increase code +01
            6030 | FE 80    : cp   $80
            6032 | 20 03    : jr   nz,$6037
            6034 | 7E       : ld   a,(hl)    // play sound
            6035 | 18 05    : jr   $603C
            6037 | FE 01    : cp   $01
            6039 | 20 04    : jr   nz,$603F
            603B | AF       : xor  a         // stop sound
            603C | 32 00 D8 : ld   ($D800),a
            603F | 18 D2    : jr   $6013
            -->
        </script>
        <script state="run">
            <output format="----- return of the invaders sound test mode -----" line="10" align="center" />
            <output format="left : decrease code"                               line="11" align="center" />
            <output format="right : increase code"                              line="12" align="center" />
            <output format="button 1 : play sound"                              line="13" align="center" />
            <output format="start 1 : stop sound"                               line="14" align="center" />
            <output format="----------------------------"                       line="15" align="center" />
            <output format="&lt;&lt; sound code %2.2X &gt;&gt;"                 line="17" align="center"  >
                <argument>maincpu.pb@8800</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@016A = 4287            </action>
            <action>maincpu.mq@6010 = 0000000000000000</action>
            <action>maincpu.mq@6018 = 0000000000000000</action>
            <action>maincpu.mq@6020 = 0000000000000000</action>
            <action>maincpu.mq@6028 = 0000000000000000</action>
            <action>maincpu.mq@6030 = 0000000000000000</action>
            <action>maincpu.mq@6038 = 0000000000000000</action>
            <action>maincpu.mq@6040 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mb@4288 = 23</action>
        </script>
        <script state="off">
            <action>maincpu.mb@4288 = 24</action>
        </script>
    </cheat>

</mamecheat>
retofinvb1.xml

Code: Select all

<!-- Return of the Invaders (bootleg no MCU set 1) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@3AB5 = AF</action> <!-- bullet -->
            <action>maincpu.mb@3AF0 = AF</action> <!-- enemy -->
            <action>maincpu.mb@3B09 = AF</action> <!-- reflect bullet -->
            <action>maincpu.mb@3B22 = AF</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@3AB5 = E7</action>
            <action>maincpu.mb@3AF0 = E7</action>
            <action>maincpu.mb@3B09 = E7</action>
            <action>maincpu.mb@3B22 = E7</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@3240 = 006000CD        </action>
            <action>maincpu.mq@6000 = FD042880E699A83A</action>
            <action>maincpu.mq@6008 = C9465ACBFDC65ACB</action>
            <!--
            6000 | 3A A8 99    : ld   a,($99A8)
            6003 | E6 80       : and  $80
            6005 | 28 04       : jr   z,$600B
            6007 | FD CB 5A C6 : set  0,(iy+$5a)
            600B | FD CB 5A 46 : bit  0,(iy+$5a)
            600F | C9          : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@3240 = 465ACBFD        </action>
            <action>maincpu.mq@6000 = 0000000000000000</action>
            <action>maincpu.mq@6008 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x0020">01 (slow)</item>
            <item value="0x0080">02       </item>
            <item value="0x0180">03       </item>
            <item value="0x0280">04       </item>
            <item value="0x0380">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mw@11F9 = -param</action> <!-- left -->
            <action>maincpu.mw@1239 =  param</action> <!-- right -->
        </script>
        <script state="off">
            <action>maincpu.mw@11F9 = FF80</action>
            <action>maincpu.mw@1239 = 0080</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x04">02       </item>
            <item value="0x08">03       </item>
            <item value="0x0c">04       </item>
            <item value="0x10">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@32F4 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@32F4 = 04</action>
        </script>
    </cheat>

    <cheat desc="invader speed (test)">
        <comment>works in &quot;normal&quot; invader pattern (e.g. stage 2)</comment>
        <parameter>
            <item value="0x0008">01 (slow)</item>
            <item value="0x0020">02       </item>
            <item value="0x0080">03       </item>
            <item value="0x0100">04       </item>
            <item value="0x0200">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@3CFC = 00000011</action>
            <action>maincpu.md@3D23 = 00000011</action>
        </script>
        <script state="change">
            <action>maincpu.mw@3CFD = param</action>
            <action>maincpu.mw@3D24 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@3CFC = 9A255BED</action>
            <action>maincpu.md@3D23 = 9A255BED</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@016A = 6010            </action>
            <action>maincpu.mq@6010 = 043AD00032880021</action>
            <action>maincpu.mq@6018 = C0003A4F01E62FC0</action>
            <action>maincpu.mq@6020 = 02FEED2847B8B12F</action>
            <action>maincpu.mq@6028 = 34012008FE350120</action>
            <action>maincpu.mq@6030 = FE05187E032080FE</action>
            <action>maincpu.mq@6038 = 18D80032AF042001</action>
            <action>maincpu.mq@6040 = 00000000000000D2</action>
            <!--
            6010 | 21 00 88 : ld   hl,$8800  // sound code address
            6013 | 32 00 D0 : ld   ($D000),a // watchdog
            6016 | 3A 04 C0 : ld   a,($C004) // read start button
            6019 | 2F       : cpl
            601A | E6 01    : and  $01
            601C | 4F       : ld   c,a
            601D | 3A 00 C0 : ld   a,($C000) // reat other inputs
            6020 | 2F       : cpl
            6021 | B1       : or   c
            6022 | B8       : cp   b
            6023 | 47       : ld   b,a
            6024 | 28 ED    : jr   z,$6013
            6026 | FE 02    : cp   $02
            6028 | 20 01    : jr   nz,$602B
            602A | 35       : dec  (hl)      // decrease code -01
            602B | FE 08    : cp   $08
            602D | 20 01    : jr   nz,$6030
            602F | 34       : inc  (hl)      // increase code +01
            6030 | FE 80    : cp   $80
            6032 | 20 03    : jr   nz,$6037
            6034 | 7E       : ld   a,(hl)    // play sound
            6035 | 18 05    : jr   $603C
            6037 | FE 01    : cp   $01
            6039 | 20 04    : jr   nz,$603F
            603B | AF       : xor  a         // stop sound
            603C | 32 00 D8 : ld   ($D800),a
            603F | 18 D2    : jr   $6013
            -->
        </script>
        <script state="run">
            <output format="----- return of the invaders sound test mode -----" line="10" align="center" />
            <output format="left : decrease code"                               line="11" align="center" />
            <output format="right : increase code"                              line="12" align="center" />
            <output format="button 1 : play sound"                              line="13" align="center" />
            <output format="start 1 : stop sound"                               line="14" align="center" />
            <output format="----------------------------"                       line="15" align="center" />
            <output format="&lt;&lt; sound code %2.2X &gt;&gt;"                 line="17" align="center"  >
                <argument>maincpu.pb@8800</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@016A = 4287            </action>
            <action>maincpu.mq@6010 = 0000000000000000</action>
            <action>maincpu.mq@6018 = 0000000000000000</action>
            <action>maincpu.mq@6020 = 0000000000000000</action>
            <action>maincpu.mq@6028 = 0000000000000000</action>
            <action>maincpu.mq@6030 = 0000000000000000</action>
            <action>maincpu.mq@6038 = 0000000000000000</action>
            <action>maincpu.mq@6040 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mb@4288 = 23</action>
        </script>
        <script state="off">
            <action>maincpu.mb@4288 = 24</action>
        </script>
    </cheat>

</mamecheat>
retofinvb2.xml

Code: Select all

<!-- Return of the Invaders (bootleg no MCU set 2) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@3AB5 = AF</action> <!-- bullet -->
            <action>maincpu.mb@3AF0 = AF</action> <!-- enemy -->
            <action>maincpu.mb@3B09 = AF</action> <!-- reflect bullet -->
            <action>maincpu.mb@3B22 = AF</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@3AB5 = E7</action>
            <action>maincpu.mb@3AF0 = E7</action>
            <action>maincpu.mb@3B09 = E7</action>
            <action>maincpu.mb@3B22 = E7</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@3240 = 006000CD        </action>
            <action>maincpu.mq@6000 = FD042880E699A83A</action>
            <action>maincpu.mq@6008 = C9465ACBFDC65ACB</action>
            <!--
            6000 | 3A A8 99    : ld   a,($99A8)
            6003 | E6 80       : and  $80
            6005 | 28 04       : jr   z,$600B
            6007 | FD CB 5A C6 : set  0,(iy+$5a)
            600B | FD CB 5A 46 : bit  0,(iy+$5a)
            600F | C9          : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@3240 = 465ACBFD        </action>
            <action>maincpu.mq@6000 = 0000000000000000</action>
            <action>maincpu.mq@6008 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x0020">01 (slow)</item>
            <item value="0x0080">02       </item>
            <item value="0x0180">03       </item>
            <item value="0x0280">04       </item>
            <item value="0x0380">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mw@11F9 = -param</action> <!-- left -->
            <action>maincpu.mw@1239 =  param</action> <!-- right -->
        </script>
        <script state="off">
            <action>maincpu.mw@11F9 = FF80</action>
            <action>maincpu.mw@1239 = 0080</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x04">02       </item>
            <item value="0x08">03       </item>
            <item value="0x0c">04       </item>
            <item value="0x10">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@32F4 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@32F4 = 04</action>
        </script>
    </cheat>

    <cheat desc="invader speed (test)">
        <comment>works in &quot;normal&quot; invader pattern (e.g. stage 2)</comment>
        <parameter>
            <item value="0x0008">01 (slow)</item>
            <item value="0x0020">02       </item>
            <item value="0x0080">03       </item>
            <item value="0x0100">04       </item>
            <item value="0x0200">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@3CFC = 00000011</action>
            <action>maincpu.md@3D23 = 00000011</action>
        </script>
        <script state="change">
            <action>maincpu.mw@3CFD = param</action>
            <action>maincpu.mw@3D24 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@3CFC = 9A255BED</action>
            <action>maincpu.md@3D23 = 9A255BED</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@016A = 6010            </action>
            <action>maincpu.mq@6010 = 043AD00032880021</action>
            <action>maincpu.mq@6018 = C0003A4F01E62FC0</action>
            <action>maincpu.mq@6020 = 02FEED2847B8B12F</action>
            <action>maincpu.mq@6028 = 34012008FE350120</action>
            <action>maincpu.mq@6030 = FE05187E032080FE</action>
            <action>maincpu.mq@6038 = 18D80032AF042001</action>
            <action>maincpu.mq@6040 = 00000000000000D2</action>
            <!--
            6010 | 21 00 88 : ld   hl,$8800  // sound code address
            6013 | 32 00 D0 : ld   ($D000),a // watchdog
            6016 | 3A 04 C0 : ld   a,($C004) // read start button
            6019 | 2F       : cpl
            601A | E6 01    : and  $01
            601C | 4F       : ld   c,a
            601D | 3A 00 C0 : ld   a,($C000) // reat other inputs
            6020 | 2F       : cpl
            6021 | B1       : or   c
            6022 | B8       : cp   b
            6023 | 47       : ld   b,a
            6024 | 28 ED    : jr   z,$6013
            6026 | FE 02    : cp   $02
            6028 | 20 01    : jr   nz,$602B
            602A | 35       : dec  (hl)      // decrease code -01
            602B | FE 08    : cp   $08
            602D | 20 01    : jr   nz,$6030
            602F | 34       : inc  (hl)      // increase code +01
            6030 | FE 80    : cp   $80
            6032 | 20 03    : jr   nz,$6037
            6034 | 7E       : ld   a,(hl)    // play sound
            6035 | 18 05    : jr   $603C
            6037 | FE 01    : cp   $01
            6039 | 20 04    : jr   nz,$603F
            603B | AF       : xor  a         // stop sound
            603C | 32 00 D8 : ld   ($D800),a
            603F | 18 D2    : jr   $6013
            -->
        </script>
        <script state="run">
            <output format="----- return of the invaders sound test mode -----" line="10" align="center" />
            <output format="left : decrease code"                               line="11" align="center" />
            <output format="right : increase code"                              line="12" align="center" />
            <output format="button 1 : play sound"                              line="13" align="center" />
            <output format="start 1 : stop sound"                               line="14" align="center" />
            <output format="----------------------------"                       line="15" align="center" />
            <output format="&lt;&lt; sound code %2.2X &gt;&gt;"                 line="17" align="center"  >
                <argument>maincpu.pb@8800</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@016A = 4287            </action>
            <action>maincpu.mq@6010 = 0000000000000000</action>
            <action>maincpu.mq@6018 = 0000000000000000</action>
            <action>maincpu.mq@6020 = 0000000000000000</action>
            <action>maincpu.mq@6028 = 0000000000000000</action>
            <action>maincpu.mq@6030 = 0000000000000000</action>
            <action>maincpu.mq@6038 = 0000000000000000</action>
            <action>maincpu.mq@6040 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mb@4288 = 23</action>
        </script>
        <script state="off">
            <action>maincpu.mb@4288 = 24</action>
        </script>
    </cheat>

</mamecheat>
retofinvb3.xml

Code: Select all

<!-- Return of the Invaders (bootleg no MCU set 3) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@3AB5 = AF</action> <!-- bullet -->
            <action>maincpu.mb@3AF0 = AF</action> <!-- enemy -->
            <action>maincpu.mb@3B09 = AF</action> <!-- reflect bullet -->
            <action>maincpu.mb@3B22 = AF</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@3AB5 = E7</action>
            <action>maincpu.mb@3AF0 = E7</action>
            <action>maincpu.mb@3B09 = E7</action>
            <action>maincpu.mb@3B22 = E7</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@3240 = 006000CD        </action>
            <action>maincpu.mq@6000 = FD042880E699A83A</action>
            <action>maincpu.mq@6008 = C9465ACBFDC65ACB</action>
            <!--
            6000 | 3A A8 99    : ld   a,($99A8)
            6003 | E6 80       : and  $80
            6005 | 28 04       : jr   z,$600B
            6007 | FD CB 5A C6 : set  0,(iy+$5a)
            600B | FD CB 5A 46 : bit  0,(iy+$5a)
            600F | C9          : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@3240 = 465ACBFD        </action>
            <action>maincpu.mq@6000 = 0000000000000000</action>
            <action>maincpu.mq@6008 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x0020">01 (slow)</item>
            <item value="0x0080">02       </item>
            <item value="0x0180">03       </item>
            <item value="0x0280">04       </item>
            <item value="0x0380">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mw@11F9 = -param</action> <!-- left -->
            <action>maincpu.mw@1239 =  param</action> <!-- right -->
        </script>
        <script state="off">
            <action>maincpu.mw@11F9 = FF80</action>
            <action>maincpu.mw@1239 = 0080</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x04">02       </item>
            <item value="0x08">03       </item>
            <item value="0x0c">04       </item>
            <item value="0x10">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@32F4 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@32F4 = 04</action>
        </script>
    </cheat>

    <cheat desc="invader speed (test)">
        <comment>works in &quot;normal&quot; invader pattern (e.g. stage 2)</comment>
        <parameter>
            <item value="0x0008">01 (slow)</item>
            <item value="0x0020">02       </item>
            <item value="0x0080">03       </item>
            <item value="0x0100">04       </item>
            <item value="0x0200">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@3CFC = 00000011</action>
            <action>maincpu.md@3D23 = 00000011</action>
        </script>
        <script state="change">
            <action>maincpu.mw@3CFD = param</action>
            <action>maincpu.mw@3D24 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@3CFC = 9A255BED</action>
            <action>maincpu.md@3D23 = 9A255BED</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@016A = 6010            </action>
            <action>maincpu.mq@6010 = 043AD00032880021</action>
            <action>maincpu.mq@6018 = C0003A4F01E62FC0</action>
            <action>maincpu.mq@6020 = 02FEED2847B8B12F</action>
            <action>maincpu.mq@6028 = 34012008FE350120</action>
            <action>maincpu.mq@6030 = FE05187E032080FE</action>
            <action>maincpu.mq@6038 = 18D80032AF042001</action>
            <action>maincpu.mq@6040 = 00000000000000D2</action>
            <!--
            6010 | 21 00 88 : ld   hl,$8800  // sound code address
            6013 | 32 00 D0 : ld   ($D000),a // watchdog
            6016 | 3A 04 C0 : ld   a,($C004) // read start button
            6019 | 2F       : cpl
            601A | E6 01    : and  $01
            601C | 4F       : ld   c,a
            601D | 3A 00 C0 : ld   a,($C000) // reat other inputs
            6020 | 2F       : cpl
            6021 | B1       : or   c
            6022 | B8       : cp   b
            6023 | 47       : ld   b,a
            6024 | 28 ED    : jr   z,$6013
            6026 | FE 02    : cp   $02
            6028 | 20 01    : jr   nz,$602B
            602A | 35       : dec  (hl)      // decrease code -01
            602B | FE 08    : cp   $08
            602D | 20 01    : jr   nz,$6030
            602F | 34       : inc  (hl)      // increase code +01
            6030 | FE 80    : cp   $80
            6032 | 20 03    : jr   nz,$6037
            6034 | 7E       : ld   a,(hl)    // play sound
            6035 | 18 05    : jr   $603C
            6037 | FE 01    : cp   $01
            6039 | 20 04    : jr   nz,$603F
            603B | AF       : xor  a         // stop sound
            603C | 32 00 D8 : ld   ($D800),a
            603F | 18 D2    : jr   $6013
            -->
        </script>
        <script state="run">
            <output format="----- return of the invaders sound test mode -----" line="10" align="center" />
            <output format="left : decrease code"                               line="11" align="center" />
            <output format="right : increase code"                              line="12" align="center" />
            <output format="button 1 : play sound"                              line="13" align="center" />
            <output format="start 1 : stop sound"                               line="14" align="center" />
            <output format="----------------------------"                       line="15" align="center" />
            <output format="&lt;&lt; sound code %2.2X &gt;&gt;"                 line="17" align="center"  >
                <argument>maincpu.pb@8800</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@016A = 4287            </action>
            <action>maincpu.mq@6010 = 0000000000000000</action>
            <action>maincpu.mq@6018 = 0000000000000000</action>
            <action>maincpu.mq@6020 = 0000000000000000</action>
            <action>maincpu.mq@6028 = 0000000000000000</action>
            <action>maincpu.mq@6030 = 0000000000000000</action>
            <action>maincpu.mq@6038 = 0000000000000000</action>
            <action>maincpu.mq@6040 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>
"invader speed" : Added new as test code.
Post Reply