Page 1 of 1

[retofinv] Return of the Invaders

Posted: Tue May 03, 2022 11:34 am
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>

[retofinv]+ Return of the Invaders

Posted: Sun Nov 12, 2023 12:49 am
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.