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 "normal" 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="<< sound code %2.2X >>" 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 "normal" 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="<< sound code %2.2X >>" 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 "normal" 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="<< sound code %2.2X >>" 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 "normal" 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="<< sound code %2.2X >>" 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 "normal" 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="<< sound code %2.2X >>" 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.