Code: Select all
<!-- Rescue -->
<mamecheat version="1">
<cheat desc="no hit - player">
<script state="on">
<!-- objects -->
<action>maincpu.md@160A = E65000CD </action>
<action>maincpu.mq@5000 = AF02280CE60C7EFD</action>
<action>maincpu.mq@5008 = 000000C9007EFDC9</action>
<!--
5000 | FD 7E 0C : ld a,(iy+$0c)
5003 | E6 0C : and $0C
5005 | 28 02 : jr z,$5009
5007 | AF : xor a
5008 | C9 : ret
5009 | FD 7E 00 : ld a,(iy+$00)
500C | C9 : ret
-->
<!-- water (bonus mission) -->
<action>maincpu.mq@3B66 = 023054FE063850FE</action>
<action>maincpu.mq@3B6E = 0000003A72C30818</action>
<!--
3B66 | FE 50 : cp $50
3B68 | 38 06 : jr c,$3B70
3B6A | FE 54 : cp $54
3B6C | 30 02 : jr nc,$3B70
3B6E | 18 08 : jr $3B78
3B70 | C3 72 3A : jp $3A72
3B73 | 00 : nop
3B74 | 00 : nop
3B75 | 00 : nop
-->
<!-- water -->
<action>maincpu.mq@46BE = 023054FE063850FE</action>
<action>maincpu.mq@46C6 = 00000045C1C30818</action>
<!--
46BE | FE 50 : cp $50
46C0 | 38 06 : jr c,$46C8
46C2 | FE 54 : cp $54
46C4 | 30 02 : jr nc,$46C8
46C6 | 18 08 : jr $46D0
46C8 | C3 C1 45 : jp $45C1
46CB | 00 : nop
46CC | 00 : nop
46CD | 00 : nop
-->
</script>
<script state="off">
<action>maincpu.md@160A = E6007EFD </action>
<action>maincpu.mq@5000 = 0000000000000000</action>
<action>maincpu.mq@5008 = 0000000000000000</action>
<action>maincpu.mq@3B66 = 0A2851FE0E2850FE</action>
<action>maincpu.mq@3B6E = 022853FE062852FE</action>
<action>maincpu.mq@46BE = 0A2851FE0E2850FE</action>
<action>maincpu.mq@46C6 = 022853FE062852FE</action>
</script>
</cheat>
<cheat desc="no hit - people">
<script state="on">
<action>maincpu.mb@2A33 = C9</action> <!-- objects -->
<action>maincpu.mb@2B16 = 86</action> <!-- helicopter -->
<action>maincpu.mb@2B18 = 1A</action> <!-- helicopter -->
</script>
<script state="off">
<action>maincpu.mb@2A33 = D8</action>
<action>maincpu.mb@2B16 = 46</action>
<action>maincpu.mb@2B18 = 3A</action>
</script>
</cheat>
<cheat desc="fire speed up">
<script state="on">
<action>maincpu.mb@467C = 00</action>
</script>
<script state="off">
<action>maincpu.mb@467C = 06</action>
</script>
</cheat>
<cheat desc="bullet speed">
<parameter>
<item value="0x0001">01 (slow)</item>
<item value="0x0010">02 </item>
<item value="0x0018">03 </item>
<item value="0x0020">04 </item>
<item value="0x0028">05 (fast)</item>
</parameter>
<script state="change">
<action>maincpu.mw@25BD = -param</action> <!-- up -->
<action>maincpu.mw@25DB = param</action> <!-- upper-right : right -->
<action>maincpu.mw@25DD = -param</action> <!-- upper-right : up -->
<action>maincpu.mw@25FB = param</action> <!-- right -->
<action>maincpu.mw@261B = param</action> <!-- lower-right : right -->
<action>maincpu.mw@261D = param</action> <!-- lower-right : down -->
<action>maincpu.mw@263D = param</action> <!-- down -->
<action>maincpu.mw@265B = -param</action> <!-- lower-left : left -->
<action>maincpu.mw@265D = param</action> <!-- lower-left : down -->
<action>maincpu.mw@267B = -param</action> <!-- left -->
<action>maincpu.mw@269B = -param</action> <!-- upper-left : left -->
<action>maincpu.mw@269D = -param</action> <!-- upper-left : up -->
</script>
<script state="off">
<action>maincpu.mw@25BD = FFF0</action>
<action>maincpu.mw@25DB = 000B</action>
<action>maincpu.mw@25DD = FFF5</action>
<action>maincpu.mw@25FB = 0010</action>
<action>maincpu.mw@261B = 000B</action>
<action>maincpu.mw@261D = 000B</action>
<action>maincpu.mw@263D = 0010</action>
<action>maincpu.mw@265B = FFF5</action>
<action>maincpu.mw@265D = 000B</action>
<action>maincpu.mw@267B = FFF0</action>
<action>maincpu.mw@269B = FFF5</action>
<action>maincpu.mw@269D = FFF5</action>
</script>
</cheat>
<cheat desc="bonus mission">
<parameter>
<item value="0x1C18">none </item>
<item value="0x0018">always</item>
</parameter>
<script state="change">
<action>maincpu.mw@4ABC = param</action>
</script>
<script state="off">
<action>maincpu.mw@4ABC = 1C20</action>
</script>
</cheat>
<cheat desc="bonus mission timer speed">
<parameter>
<item value="0x0F">01 (slow)</item>
<item value="0x07">02 </item>
<item value="0x03">03 </item>
<item value="0x01">04 </item>
<item value="0x00">05 (fast)</item>
</parameter>
<script state="on">
<action>maincpu.mw@4DCD = 5010 </action>
<action>maincpu.mq@5010 = 86F03AC1E10B0DCD</action>
<action>maincpu.mq@5018 = C9E5C504012800E6</action>
<!--
5010 | CD 0D 0B : call $0B0D
5013 | E1 : pop hl
5014 | C1 : pop bc
5015 | 3A F0 86 : ld a,($86F0)
5018 | E6 xx : and $xx
501A | 28 01 : jr z,$501D
501C | 04 : inc b
501D | C5 : push bc
501E | E5 : push hl
501F | C9 : ret
-->
</script>
<script state="change">
<action>maincpu.mb@5019 = param</action>
</script>
<script state="off">
<action>maincpu.mw@4DCD = 0B0D </action>
<action>maincpu.mq@5010 = 0000000000000000</action>
<action>maincpu.mq@5018 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="sound test mode">
<comment>set "skip rom check" then reset the game (F3)</comment>
<script state="on">
<action>maincpu.mw@1EE2 = 5020 </action>
<action>maincpu.mq@5020 = E62F98023A800021</action>
<action>maincpu.mq@5028 = E62F98003A4F0F01</action>
<action>maincpu.mq@5030 = 20FEED2847B8B13D</action>
<action>maincpu.mq@5038 = 34012010FE350120</action>
<action>maincpu.mq@5040 = 0618F03E042008FE</action>
<action>maincpu.mq@5048 = 7786103E052004FE</action>
<action>maincpu.mq@5050 = 05187E032001FE78</action>
<action>maincpu.mq@5058 = 0965CDAF042080FE</action>
<action>maincpu.mq@5060 = 000000000000C118</action>
<!--
5020 | 21 00 80 : ld hl,$8000 // sound code address
5023 | 3A 02 98 : ld a,($9802) // read start button
5026 | 2F : cpl
5027 | E6 01 : and $01
5029 | 0F : rrca
502A | 4F : ld c,a
502B | 3A 00 98 : ld a,($9800) // read other inputs
502E | 2F : cpl
502F | E6 3D : and $3D
5031 | B1 : or c
5032 | B8 : cp b
5033 | 47 : ld b,a
5034 | 28 ED : jr z,$5023
5036 | FE 20 : cp $20
5038 | 20 01 : jr nz,$503B
503A | 35 : dec (hl) // decrease code -01
503B | FE 10 : cp $10
503D | 20 01 : jr nz,$5040
503F | 34 : inc (hl) // increase code +01
5040 | FE 08 : cp $08
5042 | 20 04 : jr nz,$5048
5044 | 3E F0 : ld a,$F0 // decrease code -10
5046 | 18 06 : jr $504E
5048 | FE 04 : cp $04
504A | 20 05 : jr nz,$5051
504C | 3E 10 : ld a,$10 // increase code +10
504E | 86 : add a,(hl)
504F | 77 : ld (hl),a
5050 | 78 : ld a,b
5051 | FE 01 : cp $01
5053 | 20 03 : jr nz,$5058
5055 | 7E : ld a,(hl) // play sound
5056 | 18 05 : jr $505D
5058 | FE 80 : cp $80
505A | 20 04 : jr nz,$5060
505C | AF : xor a // stop sound
505D | CD 65 09 : call $0965 // send sound code
5060 | 18 C1 : jr $5023
-->
<!-- disable helicopter sound after playing sfx/music -->
<action>audiocpu.md@0659 = E91000CD </action>
<action>audiocpu.mq@1000 = FFFE030A0B6F6623</action>
<action>audiocpu.mq@1008 = 000000C9063821C0</action>
<!--
1000 | 23 : inc hl
1001 | 66 : ld h,(hl)
1002 | 6F : ld l,a
1003 | 0B : dec bc
1004 | 0A : ld a,(bc)
1005 | 03 : inc bc
1006 | FE FF : cp $FF
1008 | C0 : ret nz
1009 | 21 38 06 : ld hl,$0638
100C | C9 : ret
-->
<!-- replace helicopter sound flag -->
<action>audiocpu.mb@018F = FF</action> <!-- music (code 0x0E) -->
<action>audiocpu.mb@02D0 = FF</action> <!-- sfx (code 0x10) -->
<action>audiocpu.mb@030D = FF</action> <!-- sfx (code 0x0C, 0x0D) -->
<action>audiocpu.mb@0359 = FF</action> <!-- sfx (code 0x01) -->
<action>audiocpu.mb@03C0 = FF</action> <!-- sfx (code 0x08) -->
<action>audiocpu.mb@03F7 = FF</action> <!-- sfx (code 0x03) -->
<action>audiocpu.mb@0429 = FF</action> <!-- sfx (code 0x05) -->
<action>audiocpu.mb@045E = FF</action> <!-- sfx (code 0x0A) -->
<action>audiocpu.mb@048E = FF</action> <!-- sfx (code 0x07) -->
<action>audiocpu.mb@04D0 = FF</action> <!-- sfx (code 0x09) -->
<action>audiocpu.mb@055D = FF</action> <!-- sfx (code 0x06) -->
<action>audiocpu.mb@05A1 = FF</action> <!-- sfx (code 0x04) -->
<action>audiocpu.mb@05D8 = FF</action> <!-- sfx (code 0x0B) -->
<action>audiocpu.mb@0603 = FF</action> <!-- sfx (code 0x02) -->
</script>
<script state="run">
<output format="----- sound test mode -----" line="10" align="center" />
<output format="left : decrease code -01" line="11" align="center" />
<output format="right : increase code +01" line="12" align="center" />
<output format="down : decrease code -10" line="13" align="center" />
<output format="up : increase code +10" line="14" align="center" />
<output format="button 1 : play sound" line="15" align="center" />
<output format="start : stop sound" line="16" align="center" />
<output format="----------------------------" line="17" align="center" />
<output format="<< sound code %02X >>" line="19" align="center" >
<argument>maincpu.pb@8000</argument>
</output>
</script>
<script state="off">
<action> maincpu.mw@1EE2 = 22C5 </action>
<action> maincpu.mq@5020 = 0000000000000000</action>
<action> maincpu.mq@5028 = 0000000000000000</action>
<action> maincpu.mq@5030 = 0000000000000000</action>
<action> maincpu.mq@5038 = 0000000000000000</action>
<action> maincpu.mq@5040 = 0000000000000000</action>
<action> maincpu.mq@5048 = 0000000000000000</action>
<action> maincpu.mq@5050 = 0000000000000000</action>
<action> maincpu.mq@5058 = 0000000000000000</action>
<action> maincpu.mq@5060 = 0000000000000000</action>
<action>audiocpu.md@0659 = E96F6623 </action>
<action>audiocpu.mq@1000 = 0000000000000000</action>
<action>audiocpu.mq@1008 = 0000000000000000</action>
<action>audiocpu.mb@018F = 10 </action>
<action>audiocpu.mb@02D0 = 10 </action>
<action>audiocpu.mb@030D = 10 </action>
<action>audiocpu.mb@0359 = 10 </action>
<action>audiocpu.mb@03C0 = 10 </action>
<action>audiocpu.mb@03F7 = 10 </action>
<action>audiocpu.mb@0429 = 10 </action>
<action>audiocpu.mb@045E = 10 </action>
<action>audiocpu.mb@048E = 10 </action>
<action>audiocpu.mb@04D0 = 10 </action>
<action>audiocpu.mb@055D = 10 </action>
<action>audiocpu.mb@05A1 = 10 </action>
<action>audiocpu.mb@05D8 = 10 </action>
<action>audiocpu.mb@0603 = 10 </action>
</script>
</cheat>
<cheat desc="skip rom check">
<script state="on">
<action>maincpu.mw@0117 = E9DD</action>
</script>
<script state="off">
<action>maincpu.mw@0117 = 86AF</action>
</script>
</cheat>
</mamecheat>
Code: Select all
<!-- Tuono Blu (bootleg of Rescue) -->
<mamecheat version="1">
<cheat desc="no hit - player">
<script state="on">
<!-- objects -->
<action>maincpu.md@160A = E65000CD </action>
<action>maincpu.mq@5000 = AF02280CE60C7EFD</action>
<action>maincpu.mq@5008 = 000000C9007EFDC9</action>
<!--
5000 | FD 7E 0C : ld a,(iy+$0c)
5003 | E6 0C : and $0C
5005 | 28 02 : jr z,$5009
5007 | AF : xor a
5008 | C9 : ret
5009 | FD 7E 00 : ld a,(iy+$00)
500C | C9 : ret
-->
<!-- water (bonus mission) -->
<action>maincpu.mq@3B66 = 023054FE063850FE</action>
<action>maincpu.mq@3B6E = 0000003A72C30818</action>
<!--
3B66 | FE 50 : cp $50
3B68 | 38 06 : jr c,$3B70
3B6A | FE 54 : cp $54
3B6C | 30 02 : jr nc,$3B70
3B6E | 18 08 : jr $3B78
3B70 | C3 72 3A : jp $3A72
3B73 | 00 : nop
3B74 | 00 : nop
3B75 | 00 : nop
-->
<!-- water -->
<action>maincpu.mq@46BE = 023054FE063850FE</action>
<action>maincpu.mq@46C6 = 00000045C1C30818</action>
<!--
46BE | FE 50 : cp $50
46C0 | 38 06 : jr c,$46C8
46C2 | FE 54 : cp $54
46C4 | 30 02 : jr nc,$46C8
46C6 | 18 08 : jr $46D0
46C8 | C3 C1 45 : jp $45C1
46CB | 00 : nop
46CC | 00 : nop
46CD | 00 : nop
-->
</script>
<script state="off">
<action>maincpu.md@160A = E6007EFD </action>
<action>maincpu.mq@5000 = 0000000000000000</action>
<action>maincpu.mq@5008 = 0000000000000000</action>
<action>maincpu.mq@3B66 = 0A2851FE0E2850FE</action>
<action>maincpu.mq@3B6E = 022853FE062852FE</action>
<action>maincpu.mq@46BE = 0A2851FE0E2850FE</action>
<action>maincpu.mq@46C6 = 022853FE062852FE</action>
</script>
</cheat>
<cheat desc="no hit - people">
<script state="on">
<action>maincpu.mb@2A33 = C9</action> <!-- objects -->
<action>maincpu.mb@2B16 = 86</action> <!-- helicopter -->
<action>maincpu.mb@2B18 = 1A</action> <!-- helicopter -->
</script>
<script state="off">
<action>maincpu.mb@2A33 = D8</action>
<action>maincpu.mb@2B16 = 46</action>
<action>maincpu.mb@2B18 = 3A</action>
</script>
</cheat>
<cheat desc="fire speed up">
<script state="on">
<action>maincpu.mb@467C = 00</action>
</script>
<script state="off">
<action>maincpu.mb@467C = 06</action>
</script>
</cheat>
<cheat desc="bullet speed">
<parameter>
<item value="0x0001">01 (slow)</item>
<item value="0x0010">02 </item>
<item value="0x0018">03 </item>
<item value="0x0020">04 </item>
<item value="0x0028">05 (fast)</item>
</parameter>
<script state="change">
<action>maincpu.mw@25BD = -param</action> <!-- up -->
<action>maincpu.mw@25DB = param</action> <!-- upper-right : right -->
<action>maincpu.mw@25DD = -param</action> <!-- upper-right : up -->
<action>maincpu.mw@25FB = param</action> <!-- right -->
<action>maincpu.mw@261B = param</action> <!-- lower-right : right -->
<action>maincpu.mw@261D = param</action> <!-- lower-right : down -->
<action>maincpu.mw@263D = param</action> <!-- down -->
<action>maincpu.mw@265B = -param</action> <!-- lower-left : left -->
<action>maincpu.mw@265D = param</action> <!-- lower-left : down -->
<action>maincpu.mw@267B = -param</action> <!-- left -->
<action>maincpu.mw@269B = -param</action> <!-- upper-left : left -->
<action>maincpu.mw@269D = -param</action> <!-- upper-left : up -->
</script>
<script state="off">
<action>maincpu.mw@25BD = FFF0</action>
<action>maincpu.mw@25DB = 000B</action>
<action>maincpu.mw@25DD = FFF5</action>
<action>maincpu.mw@25FB = 0010</action>
<action>maincpu.mw@261B = 000B</action>
<action>maincpu.mw@261D = 000B</action>
<action>maincpu.mw@263D = 0010</action>
<action>maincpu.mw@265B = FFF5</action>
<action>maincpu.mw@265D = 000B</action>
<action>maincpu.mw@267B = FFF0</action>
<action>maincpu.mw@269B = FFF5</action>
<action>maincpu.mw@269D = FFF5</action>
</script>
</cheat>
<cheat desc="bonus mission">
<parameter>
<item value="0x1C18">none </item>
<item value="0x0018">always</item>
</parameter>
<script state="change">
<action>maincpu.mw@4ABC = param</action>
</script>
<script state="off">
<action>maincpu.mw@4ABC = 1C20</action>
</script>
</cheat>
<cheat desc="bonus mission timer speed">
<parameter>
<item value="0x0F">01 (slow)</item>
<item value="0x07">02 </item>
<item value="0x03">03 </item>
<item value="0x01">04 </item>
<item value="0x00">05 (fast)</item>
</parameter>
<script state="on">
<action>maincpu.mw@4DCD = 5010 </action>
<action>maincpu.mq@5010 = 86F03AC1E10B0DCD</action>
<action>maincpu.mq@5018 = C9E5C504012800E6</action>
<!--
5010 | CD 0D 0B : call $0B0D
5013 | E1 : pop hl
5014 | C1 : pop bc
5015 | 3A F0 86 : ld a,($86F0)
5018 | E6 xx : and $xx
501A | 28 01 : jr z,$501D
501C | 04 : inc b
501D | C5 : push bc
501E | E5 : push hl
501F | C9 : ret
-->
</script>
<script state="change">
<action>maincpu.mb@5019 = param</action>
</script>
<script state="off">
<action>maincpu.mw@4DCD = 0B0D </action>
<action>maincpu.mq@5010 = 0000000000000000</action>
<action>maincpu.mq@5018 = 0000000000000000</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@1EE2 = 5020 </action>
<action>maincpu.mq@5020 = E62F98023A800021</action>
<action>maincpu.mq@5028 = E62F98003A4F0F01</action>
<action>maincpu.mq@5030 = 20FEED2847B8B13D</action>
<action>maincpu.mq@5038 = 34012010FE350120</action>
<action>maincpu.mq@5040 = 0618F03E042008FE</action>
<action>maincpu.mq@5048 = 7786103E052004FE</action>
<action>maincpu.mq@5050 = 05187E032001FE78</action>
<action>maincpu.mq@5058 = 0965CDAF042080FE</action>
<action>maincpu.mq@5060 = 000000000000C118</action>
<!--
5020 | 21 00 80 : ld hl,$8000 // sound code address
5023 | 3A 02 98 : ld a,($9802) // read start button
5026 | 2F : cpl
5027 | E6 01 : and $01
5029 | 0F : rrca
502A | 4F : ld c,a
502B | 3A 00 98 : ld a,($9800) // read other inputs
502E | 2F : cpl
502F | E6 3D : and $3D
5031 | B1 : or c
5032 | B8 : cp b
5033 | 47 : ld b,a
5034 | 28 ED : jr z,$5023
5036 | FE 20 : cp $20
5038 | 20 01 : jr nz,$503B
503A | 35 : dec (hl) // decrease code -01
503B | FE 10 : cp $10
503D | 20 01 : jr nz,$5040
503F | 34 : inc (hl) // increase code +01
5040 | FE 08 : cp $08
5042 | 20 04 : jr nz,$5048
5044 | 3E F0 : ld a,$F0 // decrease code -10
5046 | 18 06 : jr $504E
5048 | FE 04 : cp $04
504A | 20 05 : jr nz,$5051
504C | 3E 10 : ld a,$10 // increase code +10
504E | 86 : add a,(hl)
504F | 77 : ld (hl),a
5050 | 78 : ld a,b
5051 | FE 01 : cp $01
5053 | 20 03 : jr nz,$5058
5055 | 7E : ld a,(hl) // play sound
5056 | 18 05 : jr $505D
5058 | FE 80 : cp $80
505A | 20 04 : jr nz,$5060
505C | AF : xor a // stop sound
505D | CD 65 09 : call $0965 // send sound code
5060 | 18 C1 : jr $5023
-->
<!-- disable helicopter sound after playing sfx/music -->
<action>audiocpu.md@0659 = E91000CD </action>
<action>audiocpu.mq@1000 = FFFE030A0B6F6623</action>
<action>audiocpu.mq@1008 = 000000C9063821C0</action>
<!--
1000 | 23 : inc hl
1001 | 66 : ld h,(hl)
1002 | 6F : ld l,a
1003 | 0B : dec bc
1004 | 0A : ld a,(bc)
1005 | 03 : inc bc
1006 | FE FF : cp $FF
1008 | C0 : ret nz
1009 | 21 38 06 : ld hl,$0638
100C | C9 : ret
-->
<!-- replace helicopter sound flag -->
<action>audiocpu.mb@018F = FF</action> <!-- music (code 0x0E) -->
<action>audiocpu.mb@02D0 = FF</action> <!-- sfx (code 0x10) -->
<action>audiocpu.mb@030D = FF</action> <!-- sfx (code 0x0C, 0x0D) -->
<action>audiocpu.mb@0359 = FF</action> <!-- sfx (code 0x01) -->
<action>audiocpu.mb@03C0 = FF</action> <!-- sfx (code 0x08) -->
<action>audiocpu.mb@03F7 = FF</action> <!-- sfx (code 0x03) -->
<action>audiocpu.mb@0429 = FF</action> <!-- sfx (code 0x05) -->
<action>audiocpu.mb@045E = FF</action> <!-- sfx (code 0x0A) -->
<action>audiocpu.mb@048E = FF</action> <!-- sfx (code 0x07) -->
<action>audiocpu.mb@04D0 = FF</action> <!-- sfx (code 0x09) -->
<action>audiocpu.mb@055D = FF</action> <!-- sfx (code 0x06) -->
<action>audiocpu.mb@05A1 = FF</action> <!-- sfx (code 0x04) -->
<action>audiocpu.mb@05D8 = FF</action> <!-- sfx (code 0x0B) -->
<action>audiocpu.mb@0603 = FF</action> <!-- sfx (code 0x02) -->
</script>
<script state="run">
<output format="----- sound test mode -----" line="10" align="center" />
<output format="left : decrease code -01" line="11" align="center" />
<output format="right : increase code +01" line="12" align="center" />
<output format="down : decrease code -10" line="13" align="center" />
<output format="up : increase code +10" line="14" align="center" />
<output format="button 1 : play sound" line="15" align="center" />
<output format="start : stop sound" line="16" align="center" />
<output format="----------------------------" line="17" align="center" />
<output format="<< sound code %02X >>" line="19" align="center" >
<argument>maincpu.pb@8000</argument>
</output>
</script>
<script state="off">
<action> maincpu.mw@1EE2 = 22C5 </action>
<action> maincpu.mq@5020 = 0000000000000000</action>
<action> maincpu.mq@5028 = 0000000000000000</action>
<action> maincpu.mq@5030 = 0000000000000000</action>
<action> maincpu.mq@5038 = 0000000000000000</action>
<action> maincpu.mq@5040 = 0000000000000000</action>
<action> maincpu.mq@5048 = 0000000000000000</action>
<action> maincpu.mq@5050 = 0000000000000000</action>
<action> maincpu.mq@5058 = 0000000000000000</action>
<action> maincpu.mq@5060 = 0000000000000000</action>
<action>audiocpu.md@0659 = E96F6623 </action>
<action>audiocpu.mq@1000 = 0000000000000000</action>
<action>audiocpu.mq@1008 = 0000000000000000</action>
<action>audiocpu.mb@018F = 10 </action>
<action>audiocpu.mb@02D0 = 10 </action>
<action>audiocpu.mb@030D = 10 </action>
<action>audiocpu.mb@0359 = 10 </action>
<action>audiocpu.mb@03C0 = 10 </action>
<action>audiocpu.mb@03F7 = 10 </action>
<action>audiocpu.mb@0429 = 10 </action>
<action>audiocpu.mb@045E = 10 </action>
<action>audiocpu.mb@048E = 10 </action>
<action>audiocpu.mb@04D0 = 10 </action>
<action>audiocpu.mb@055D = 10 </action>
<action>audiocpu.mb@05A1 = 10 </action>
<action>audiocpu.mb@05D8 = 10 </action>
<action>audiocpu.mb@0603 = 10 </action>
</script>
</cheat>
<cheat desc="skip rom check">
<script state="on">
<action>maincpu.mw@0117 = E9DD</action>
</script>
<script state="off">
<action>maincpu.mw@0117 = 86AF</action>
</script>
</cheat>
</mamecheat>
Code: Select all
<!-- Apocaljpse Now (bootleg of Rescue) -->
<mamecheat version="1">
<cheat desc="no hit - player">
<script state="on">
<!-- objects -->
<action>maincpu.md@160A = E65000CD </action>
<action>maincpu.mq@5000 = AF02280CE60C7EFD</action>
<action>maincpu.mq@5008 = 000000C9007EFDC9</action>
<!--
5000 | FD 7E 0C : ld a,(iy+$0c)
5003 | E6 0C : and $0C
5005 | 28 02 : jr z,$5009
5007 | AF : xor a
5008 | C9 : ret
5009 | FD 7E 00 : ld a,(iy+$00)
500C | C9 : ret
-->
<!-- water (bonus mission) -->
<action>maincpu.mq@3B66 = 023054FE063850FE</action>
<action>maincpu.mq@3B6E = 0000003A72C30818</action>
<!--
3B66 | FE 50 : cp $50
3B68 | 38 06 : jr c,$3B70
3B6A | FE 54 : cp $54
3B6C | 30 02 : jr nc,$3B70
3B6E | 18 08 : jr $3B78
3B70 | C3 72 3A : jp $3A72
3B73 | 00 : nop
3B74 | 00 : nop
3B75 | 00 : nop
-->
<!-- water -->
<action>maincpu.mq@46BE = 023054FE063850FE</action>
<action>maincpu.mq@46C6 = 00000045C1C30818</action>
<!--
46BE | FE 50 : cp $50
46C0 | 38 06 : jr c,$46C8
46C2 | FE 54 : cp $54
46C4 | 30 02 : jr nc,$46C8
46C6 | 18 08 : jr $46D0
46C8 | C3 C1 45 : jp $45C1
46CB | 00 : nop
46CC | 00 : nop
46CD | 00 : nop
-->
</script>
<script state="off">
<action>maincpu.md@160A = E6007EFD </action>
<action>maincpu.mq@5000 = 0000000000000000</action>
<action>maincpu.mq@5008 = 0000000000000000</action>
<action>maincpu.mq@3B66 = 0A2851FE0E2850FE</action>
<action>maincpu.mq@3B6E = 022853FE062852FE</action>
<action>maincpu.mq@46BE = 0A2851FE0E2850FE</action>
<action>maincpu.mq@46C6 = 022853FE062852FE</action>
</script>
</cheat>
<cheat desc="no hit - people">
<script state="on">
<action>maincpu.mb@2A33 = C9</action> <!-- objects -->
<action>maincpu.mb@2B16 = 86</action> <!-- helicopter -->
<action>maincpu.mb@2B18 = 1A</action> <!-- helicopter -->
</script>
<script state="off">
<action>maincpu.mb@2A33 = D8</action>
<action>maincpu.mb@2B16 = 46</action>
<action>maincpu.mb@2B18 = 3A</action>
</script>
</cheat>
<cheat desc="fire speed up">
<script state="on">
<action>maincpu.mb@467C = 00</action>
</script>
<script state="off">
<action>maincpu.mb@467C = 06</action>
</script>
</cheat>
<cheat desc="bullet speed">
<parameter>
<item value="0x0001">01 (slow)</item>
<item value="0x0010">02 </item>
<item value="0x0018">03 </item>
<item value="0x0020">04 </item>
<item value="0x0028">05 (fast)</item>
</parameter>
<script state="change">
<action>maincpu.mw@25BD = -param</action> <!-- up -->
<action>maincpu.mw@25DB = param</action> <!-- upper-right : right -->
<action>maincpu.mw@25DD = -param</action> <!-- upper-right : up -->
<action>maincpu.mw@25FB = param</action> <!-- right -->
<action>maincpu.mw@261B = param</action> <!-- lower-right : right -->
<action>maincpu.mw@261D = param</action> <!-- lower-right : down -->
<action>maincpu.mw@263D = param</action> <!-- down -->
<action>maincpu.mw@265B = -param</action> <!-- lower-left : left -->
<action>maincpu.mw@265D = param</action> <!-- lower-left : down -->
<action>maincpu.mw@267B = -param</action> <!-- left -->
<action>maincpu.mw@269B = -param</action> <!-- upper-left : left -->
<action>maincpu.mw@269D = -param</action> <!-- upper-left : up -->
</script>
<script state="off">
<action>maincpu.mw@25BD = FFF0</action>
<action>maincpu.mw@25DB = 000B</action>
<action>maincpu.mw@25DD = FFF5</action>
<action>maincpu.mw@25FB = 0010</action>
<action>maincpu.mw@261B = 000B</action>
<action>maincpu.mw@261D = 000B</action>
<action>maincpu.mw@263D = 0010</action>
<action>maincpu.mw@265B = FFF5</action>
<action>maincpu.mw@265D = 000B</action>
<action>maincpu.mw@267B = FFF0</action>
<action>maincpu.mw@269B = FFF5</action>
<action>maincpu.mw@269D = FFF5</action>
</script>
</cheat>
<cheat desc="bonus mission">
<parameter>
<item value="0x1C18">none </item>
<item value="0x0018">always</item>
</parameter>
<script state="change">
<action>maincpu.mw@4ABC = param</action>
</script>
<script state="off">
<action>maincpu.mw@4ABC = 1C20</action>
</script>
</cheat>
<cheat desc="bonus mission timer speed">
<parameter>
<item value="0x0F">01 (slow)</item>
<item value="0x07">02 </item>
<item value="0x03">03 </item>
<item value="0x01">04 </item>
<item value="0x00">05 (fast)</item>
</parameter>
<script state="on">
<action>maincpu.mw@4DCD = 5010 </action>
<action>maincpu.mq@5010 = 86F03AC1E10B0DCD</action>
<action>maincpu.mq@5018 = C9E5C504012800E6</action>
<!--
5010 | CD 0D 0B : call $0B0D
5013 | E1 : pop hl
5014 | C1 : pop bc
5015 | 3A F0 86 : ld a,($86F0)
5018 | E6 xx : and $xx
501A | 28 01 : jr z,$501D
501C | 04 : inc b
501D | C5 : push bc
501E | E5 : push hl
501F | C9 : ret
-->
</script>
<script state="change">
<action>maincpu.mb@5019 = param</action>
</script>
<script state="off">
<action>maincpu.mw@4DCD = 0B0D </action>
<action>maincpu.mq@5010 = 0000000000000000</action>
<action>maincpu.mq@5018 = 0000000000000000</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@1EE2 = 5020 </action>
<action>maincpu.mq@5020 = E62F98023A800021</action>
<action>maincpu.mq@5028 = E62F98003A4F0F01</action>
<action>maincpu.mq@5030 = 20FEED2847B8B13D</action>
<action>maincpu.mq@5038 = 34012010FE350120</action>
<action>maincpu.mq@5040 = 0618F03E042008FE</action>
<action>maincpu.mq@5048 = 7786103E052004FE</action>
<action>maincpu.mq@5050 = 05187E032001FE78</action>
<action>maincpu.mq@5058 = 0965CDAF042080FE</action>
<action>maincpu.mq@5060 = 000000000000C118</action>
<!--
5020 | 21 00 80 : ld hl,$8000 // sound code address
5023 | 3A 02 98 : ld a,($9802) // read start button
5026 | 2F : cpl
5027 | E6 01 : and $01
5029 | 0F : rrca
502A | 4F : ld c,a
502B | 3A 00 98 : ld a,($9800) // read other inputs
502E | 2F : cpl
502F | E6 3D : and $3D
5031 | B1 : or c
5032 | B8 : cp b
5033 | 47 : ld b,a
5034 | 28 ED : jr z,$5023
5036 | FE 20 : cp $20
5038 | 20 01 : jr nz,$503B
503A | 35 : dec (hl) // decrease code -01
503B | FE 10 : cp $10
503D | 20 01 : jr nz,$5040
503F | 34 : inc (hl) // increase code +01
5040 | FE 08 : cp $08
5042 | 20 04 : jr nz,$5048
5044 | 3E F0 : ld a,$F0 // decrease code -10
5046 | 18 06 : jr $504E
5048 | FE 04 : cp $04
504A | 20 05 : jr nz,$5051
504C | 3E 10 : ld a,$10 // increase code +10
504E | 86 : add a,(hl)
504F | 77 : ld (hl),a
5050 | 78 : ld a,b
5051 | FE 01 : cp $01
5053 | 20 03 : jr nz,$5058
5055 | 7E : ld a,(hl) // play sound
5056 | 18 05 : jr $505D
5058 | FE 80 : cp $80
505A | 20 04 : jr nz,$5060
505C | AF : xor a // stop sound
505D | CD 65 09 : call $0965 // send sound code
5060 | 18 C1 : jr $5023
-->
<!-- disable helicopter sound after playing sfx/music -->
<action>audiocpu.md@0659 = E91000CD </action>
<action>audiocpu.mq@1000 = FFFE030A0B6F6623</action>
<action>audiocpu.mq@1008 = 000000C9063821C0</action>
<!--
1000 | 23 : inc hl
1001 | 66 : ld h,(hl)
1002 | 6F : ld l,a
1003 | 0B : dec bc
1004 | 0A : ld a,(bc)
1005 | 03 : inc bc
1006 | FE FF : cp $FF
1008 | C0 : ret nz
1009 | 21 38 06 : ld hl,$0638
100C | C9 : ret
-->
<!-- replace helicopter sound flag -->
<action>audiocpu.mb@018F = FF</action> <!-- music (code 0x0E) -->
<action>audiocpu.mb@02D0 = FF</action> <!-- sfx (code 0x10) -->
<action>audiocpu.mb@030D = FF</action> <!-- sfx (code 0x0C, 0x0D) -->
<action>audiocpu.mb@0359 = FF</action> <!-- sfx (code 0x01) -->
<action>audiocpu.mb@03C0 = FF</action> <!-- sfx (code 0x08) -->
<action>audiocpu.mb@03F7 = FF</action> <!-- sfx (code 0x03) -->
<action>audiocpu.mb@0429 = FF</action> <!-- sfx (code 0x05) -->
<action>audiocpu.mb@045E = FF</action> <!-- sfx (code 0x0A) -->
<action>audiocpu.mb@048E = FF</action> <!-- sfx (code 0x07) -->
<action>audiocpu.mb@04D0 = FF</action> <!-- sfx (code 0x09) -->
<action>audiocpu.mb@055D = FF</action> <!-- sfx (code 0x06) -->
<action>audiocpu.mb@05A1 = FF</action> <!-- sfx (code 0x04) -->
<action>audiocpu.mb@05D8 = FF</action> <!-- sfx (code 0x0B) -->
<action>audiocpu.mb@0603 = FF</action> <!-- sfx (code 0x02) -->
</script>
<script state="run">
<output format="----- sound test mode -----" line="10" align="center" />
<output format="left : decrease code -01" line="11" align="center" />
<output format="right : increase code +01" line="12" align="center" />
<output format="down : decrease code -10" line="13" align="center" />
<output format="up : increase code +10" line="14" align="center" />
<output format="button 1 : play sound" line="15" align="center" />
<output format="start : stop sound" line="16" align="center" />
<output format="----------------------------" line="17" align="center" />
<output format="<< sound code %02X >>" line="19" align="center" >
<argument>maincpu.pb@8000</argument>
</output>
</script>
<script state="off">
<action> maincpu.mw@1EE2 = 22C5 </action>
<action> maincpu.mq@5020 = 0000000000000000</action>
<action> maincpu.mq@5028 = 0000000000000000</action>
<action> maincpu.mq@5030 = 0000000000000000</action>
<action> maincpu.mq@5038 = 0000000000000000</action>
<action> maincpu.mq@5040 = 0000000000000000</action>
<action> maincpu.mq@5048 = 0000000000000000</action>
<action> maincpu.mq@5050 = 0000000000000000</action>
<action> maincpu.mq@5058 = 0000000000000000</action>
<action> maincpu.mq@5060 = 0000000000000000</action>
<action>audiocpu.md@0659 = E96F6623 </action>
<action>audiocpu.mq@1000 = 0000000000000000</action>
<action>audiocpu.mq@1008 = 0000000000000000</action>
<action>audiocpu.mb@018F = 10 </action>
<action>audiocpu.mb@02D0 = 10 </action>
<action>audiocpu.mb@030D = 10 </action>
<action>audiocpu.mb@0359 = 10 </action>
<action>audiocpu.mb@03C0 = 10 </action>
<action>audiocpu.mb@03F7 = 10 </action>
<action>audiocpu.mb@0429 = 10 </action>
<action>audiocpu.mb@045E = 10 </action>
<action>audiocpu.mb@048E = 10 </action>
<action>audiocpu.mb@04D0 = 10 </action>
<action>audiocpu.mb@055D = 10 </action>
<action>audiocpu.mb@05A1 = 10 </action>
<action>audiocpu.mb@05D8 = 10 </action>
<action>audiocpu.mb@0603 = 10 </action>
</script>
</cheat>
<cheat desc="skip rom check">
<script state="on">
<action>maincpu.mw@0117 = E9DD</action>
</script>
<script state="off">
<action>maincpu.mw@0117 = 86AF</action>
</script>
</cheat>
</mamecheat>
Code: Select all
<!-- Rescue (Free Enterprise Games, bootleg) -->
<mamecheat version="1">
<cheat desc="no hit - player">
<script state="on">
<!-- objects -->
<action>maincpu.md@4CD9 = E6A6A0CD </action>
<action>maincpu.mq@A6A0 = AF02280CE60C7EFD</action>
<action>maincpu.mq@A6A8 = 000000C9007EFDC9</action>
<!--
A6A0 | FD 7E 0C : ld a,(iy+$0c)
A6A3 | E6 0C : and $0C
A6A5 | 28 02 : jr z,$A6A9
A6A7 | AF : xor a
A6A8 | C9 : ret
A6A9 | FD 7E 00 : ld a,(iy+$00)
A6AC | C9 : ret
-->
<!-- water -->
<action>maincpu.mb@913E = C3</action>
</script>
<script state="off">
<action>maincpu.md@4CD9 = E6007EFD </action>
<action>maincpu.mq@A6A0 = FF00FF00FF00FF00</action>
<action>maincpu.mq@A6A8 = FF00FF00FF00FF00</action>
<action>maincpu.mb@913E = CA </action>
</script>
</cheat>
<cheat desc="no hit - people">
<script state="on">
<action>maincpu.mb@5FA7 = C9</action> <!-- objects -->
<action>maincpu.mb@6088 = 86</action> <!-- helicopter -->
<action>maincpu.mb@608A = 8C</action> <!-- helicopter -->
</script>
<script state="off">
<action>maincpu.mb@5FA7 = D8</action>
<action>maincpu.mb@6088 = 46</action>
<action>maincpu.mb@608A = AA</action>
</script>
</cheat>
<cheat desc="fire speed up">
<script state="on">
<action>maincpu.mb@90E5 = 00</action>
</script>
<script state="off">
<action>maincpu.mb@90E5 = 06</action>
</script>
</cheat>
<cheat desc="bullet speed">
<parameter>
<item value="0x0001">01 (slow)</item>
<item value="0x0010">02 </item>
<item value="0x0018">03 </item>
<item value="0x0020">04 </item>
<item value="0x0028">05 (fast)</item>
</parameter>
<script state="change">
<action>maincpu.mw@5B62 = -param</action> <!-- up -->
<action>maincpu.mw@5B80 = param</action> <!-- upper-right : right -->
<action>maincpu.mw@5B82 = -param</action> <!-- upper-right : up -->
<action>maincpu.mw@5BA0 = param</action> <!-- right -->
<action>maincpu.mw@5BC0 = param</action> <!-- lower-right : right -->
<action>maincpu.mw@5BC2 = param</action> <!-- lower-right : down -->
<action>maincpu.mw@5BE2 = param</action> <!-- down -->
<action>maincpu.mw@5C00 = -param</action> <!-- lower-left : left -->
<action>maincpu.mw@5C02 = param</action> <!-- lower-left : down -->
<action>maincpu.mw@5C20 = -param</action> <!-- left -->
<action>maincpu.mw@5C40 = -param</action> <!-- upper-left : left -->
<action>maincpu.mw@5C42 = -param</action> <!-- upper-left : up -->
</script>
<script state="off">
<action>maincpu.mw@5B62 = FFF0</action>
<action>maincpu.mw@5B80 = 000B</action>
<action>maincpu.mw@5B82 = FFF5</action>
<action>maincpu.mw@5BA0 = 0010</action>
<action>maincpu.mw@5BC0 = 000B</action>
<action>maincpu.mw@5BC2 = 000B</action>
<action>maincpu.mw@5BE2 = 0010</action>
<action>maincpu.mw@5C00 = FFF5</action>
<action>maincpu.mw@5C02 = 000B</action>
<action>maincpu.mw@5C20 = FFF0</action>
<action>maincpu.mw@5C40 = FFF5</action>
<action>maincpu.mw@5C42 = FFF5</action>
</script>
</cheat>
</mamecheat>
Because I can't find corresponded routine in this set (different ROM from other sets).
And the game doesn't work so that I can't test all codes.