Code: Select all
<!-- Mr. Do's Castle (set 1) -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<action>maincpu.mb@26DC = C9</action>
</script>
<script state="off">
<action>maincpu.mb@26DC = DD</action>
</script>
</cheat>
<cheat desc="auto fire">
<script state="on">
<action>maincpu.mb@20B9 = 18</action>
</script>
<script state="off">
<action>maincpu.mb@20B9 = 28</action>
</script>
</cheat>
<cheat desc="walk speed (test)">
<comment>sometimes you can't climb up or down on ladder with fast speed</comment>
<parameter>
<item value="0x0040">01 (slow)</item>
<item value="0x0080">02 </item>
<item value="0x0100">03 </item>
<item value="0x0180">04 </item>
<item value="0x0200">05 (fast)</item>
</parameter>
<script state="change">
<action>maincpu.mw@3323 = param</action> <!-- right -->
<action>maincpu.mw@333F = param</action> <!-- up -->
<action>maincpu.mw@3352 = param</action> <!-- left -->
<action>maincpu.mw@3366 = param</action> <!-- down -->
</script>
<script state="off">
<action>maincpu.mw@3323 = 00D0</action>
<action>maincpu.mw@333F = 0080</action>
<action>maincpu.mw@3352 = 00D0</action>
<action>maincpu.mw@3366 = 0080</action>
</script>
</cheat>
<cheat desc="attack speed up">
<script state="on">
<action>maincpu.mb@287F = 06</action>
<action>maincpu.mb@2897 = 06</action>
<action>maincpu.mb@28A5 = 05</action>
<action>maincpu.mb@28B3 = 04</action>
<action>maincpu.mb@28CB = 03</action>
<action>maincpu.mb@28E3 = 02</action>
</script>
<script state="off">
<action>maincpu.mb@287F = 14</action>
<action>maincpu.mb@2897 = 14</action>
<action>maincpu.mb@28A5 = 12</action>
<action>maincpu.mb@28B3 = 10</action>
<action>maincpu.mb@28CB = 0E</action>
<action>maincpu.mb@28E3 = 0C</action>
</script>
</cheat>
<cheat desc="sound test mode">
<comment>reset the game (F3) to enter sound test mode</comment>
<script state="on">
<action>maincpu.mb@4823 = 00 </action> <!-- disable next sequence -->
<action>maincpu.md@4833 = C97DA0CD </action>
<action>maincpu.mq@7DA0 = 3E0920A77E810221</action>
<action>maincpu.mq@7DA8 = 7795E132924832FF</action>
<action>maincpu.mq@7DB0 = 0F03E62F95D53A2B</action>
<action>maincpu.mq@7DB8 = 0FE62F95D33A470F</action>
<action>maincpu.mq@7DC0 = 2004FE2BC877BEB0</action>
<action>maincpu.mq@7DC8 = FE34012001FE3501</action>
<action>maincpu.mq@7DD0 = FE0618F03E042008</action>
<action>maincpu.mq@7DD8 = C97786103E052002</action>
<action>maincpu.mq@7DE0 = FE05187E032040FE</action>
<action>maincpu.mq@7DE8 = ABCD010E803EC080</action>
<action>maincpu.mq@7DF0 = FFFFFFFFFFFFC903</action>
<!--
7DA0 | 21 02 81 : ld hl,$8102 // initialize flag address
7DA3 | 7E : ld a,(hl)
7DA4 | A7 : and a
7DA5 | 20 09 : jr nz,$7DB0
7DA7 | 3E FF : ld a,$FF // initialize parameters
7DA9 | 32 48 92 : ld ($9248),a
7DAC | 32 E1 95 : ld ($95E1),a
7DAF | 77 : ld (hl),a
7DB0 | 2B : dec hl // temporary input address ($8101)
7DB1 | 3A D5 95 : ld a,($95D5) // read buttons
7DB4 | 2F : cpl
7DB5 | E6 03 : and $03
7DB7 | 0F : rrca
7DB8 | 0F : rrca
7DB9 | 47 : ld b,a
7DBA | 3A D3 95 : ld a,($95D3) // read other inputs
7DBD | 2F : cpl
7DBE | E6 0F : and $0F
7DC0 | B0 : or b
7DC1 | BE : cp (hl)
7DC2 | 77 : ld (hl),a
7DC3 | C8 : ret z
7DC4 | 2B : dec hl // sound code address ($8100)
7DC5 | FE 04 : cp $04
7DC7 | 20 01 : jr nz,$7DCA
7DC9 | 35 : dec (hl) // decrease code -01
7DCA | FE 01 : cp $01
7DCC | 20 01 : jr nz,$7DCF
7DCE | 34 : inc (hl) // increase code +01
7DCF | FE 08 : cp $08
7DD1 | 20 04 : jr nz,$7DD7
7DD3 | 3E F0 : ld a,$F0 // decrease code -10
7DD5 | 18 06 : jr $7DDD
7DD7 | FE 02 : cp $02
7DD9 | 20 05 : jr nz,$7DE0
7DDB | 3E 10 : ld a,$10 // increase code +10
7DDD | 86 : add a,(hl)
7DDE | 77 : ld (hl),a
7DDF | C9 : ret
7DE0 | FE 40 : cp $40
7DE2 | 20 03 : jr nz,$7DE7
7DE4 | 7E : ld a,(hl) // play sound
7DE5 | 18 05 : jr $7DEC
7DE7 | FE 80 : cp $80
7DE9 | C0 : ret nz
7DEA | 3E 80 : ld a,$80 // stop sound
7DEC | 0E 01 : ld c,$01
7DEE | CD AB 03 : call $03AB // send sound code
7DF1 | C9 : ret
-->
<action>slave.md@0214 = 7E3D00CD </action>
<action>slave.mq@3D00 = 0000CA80FE80213A</action>
<action>slave.mq@3D08 = FFFFFFFFC9805021</action>
<!--
3D00 | 3A 21 80 : ld a,($8021) // read sound code
3D03 | FE 80 : cp $80
3D05 | CA 00 00 : jp z,$0000 // reset cpu when sound code is 0x80
3D08 | 21 50 80 : ld hl,$8050
3D0B | C9 : ret
-->
</script>
<script state="run">
<output format="----- mr. do's castle 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="button 2 : stop sound" line="16" align="center" />
<output format="----------------------------" line="17" align="center" />
<output format="<< sound code %02X >>" line="19" align="center" >
<argument>maincpu.pb@8100</argument>
</output>
</script>
<script state="off">
<action>maincpu.mb@4823 = 43 </action>
<action>maincpu.md@4833 = 3E4A6BCD </action>
<action>maincpu.mq@7DA0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7DA8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7DB0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7DB8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7DC0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7DC8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7DD0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7DD8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7DE0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7DE8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7DF0 = FFFFFFFFFFFFFFFF</action>
<action> slave.md@0214 = 7E805021 </action>
<action> slave.mq@3D00 = FFFFFFFFFFFFFFFF</action>
<action> slave.mq@3D08 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="skip ram/rom check">
<script state="on">
<action>maincpu.mw@0015 = 0186</action>
<action> slave.mw@0006 = 0008</action>
</script>
<script state="off">
<action>maincpu.mw@0015 = 011D</action>
<action> slave.mw@0006 = 00B8</action>
</script>
</cheat>
</mamecheat>
Code: Select all
<!-- Mr. Do's Castle (set 2) -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<action>maincpu.mb@26DC = C9</action>
</script>
<script state="off">
<action>maincpu.mb@26DC = DD</action>
</script>
</cheat>
<cheat desc="auto fire">
<script state="on">
<action>maincpu.mb@20B9 = 18</action>
</script>
<script state="off">
<action>maincpu.mb@20B9 = 28</action>
</script>
</cheat>
<cheat desc="walk speed (test)">
<comment>sometimes you can't climb up or down on ladder with fast speed</comment>
<parameter>
<item value="0x0040">01 (slow)</item>
<item value="0x0080">02 </item>
<item value="0x0100">03 </item>
<item value="0x0180">04 </item>
<item value="0x0200">05 (fast)</item>
</parameter>
<script state="change">
<action>maincpu.mw@32F0 = param</action> <!-- right -->
<action>maincpu.mw@330C = param</action> <!-- up -->
<action>maincpu.mw@331F = param</action> <!-- left -->
<action>maincpu.mw@3333 = param</action> <!-- down -->
</script>
<script state="off">
<action>maincpu.mw@32F0 = 00D0</action>
<action>maincpu.mw@330C = 0080</action>
<action>maincpu.mw@331F = 00D0</action>
<action>maincpu.mw@3333 = 0080</action>
</script>
</cheat>
<cheat desc="attack speed up">
<script state="on">
<action>maincpu.mb@287F = 06</action>
<action>maincpu.mb@2897 = 06</action>
<action>maincpu.mb@28A5 = 05</action>
<action>maincpu.mb@28B3 = 04</action>
<action>maincpu.mb@28CB = 03</action>
<action>maincpu.mb@28E3 = 02</action>
</script>
<script state="off">
<action>maincpu.mb@287F = 14</action>
<action>maincpu.mb@2897 = 14</action>
<action>maincpu.mb@28A5 = 12</action>
<action>maincpu.mb@28B3 = 10</action>
<action>maincpu.mb@28CB = 0E</action>
<action>maincpu.mb@28E3 = 0C</action>
</script>
</cheat>
<cheat desc="sound test mode">
<comment>reset the game (F3) to enter sound test mode</comment>
<script state="on">
<action>maincpu.mb@47F0 = 00 </action> <!-- disable next sequence -->
<action>maincpu.md@4800 = C97D70CD </action>
<action>maincpu.mq@7D70 = 3E0920A77E810221</action>
<action>maincpu.mq@7D78 = 7795E132924832FF</action>
<action>maincpu.mq@7D80 = 0F03E62F95D53A2B</action>
<action>maincpu.mq@7D88 = 0FE62F95D33A470F</action>
<action>maincpu.mq@7D90 = 2004FE2BC877BEB0</action>
<action>maincpu.mq@7D98 = FE34012001FE3501</action>
<action>maincpu.mq@7DA0 = FE0618F03E042008</action>
<action>maincpu.mq@7DA8 = C97786103E052002</action>
<action>maincpu.mq@7DB0 = FE05187E032040FE</action>
<action>maincpu.mq@7DB8 = ABCD010E803EC080</action>
<action>maincpu.mq@7DC0 = FFFFFFFFFFFFC903</action>
<!--
7D70 | 21 02 81 : ld hl,$8102 // initialize flag address
7D73 | 7E : ld a,(hl)
7D74 | A7 : and a
7D75 | 20 09 : jr nz,$7D80
7D77 | 3E FF : ld a,$FF // initialize parameters
7D79 | 32 48 92 : ld ($9248),a
7D7C | 32 E1 95 : ld ($95E1),a
7D7F | 77 : ld (hl),a
7D80 | 2B : dec hl // temporary input address ($8101)
7D81 | 3A D5 95 : ld a,($95D5) // read buttons
7D84 | 2F : cpl
7D85 | E6 03 : and $03
7D87 | 0F : rrca
7D88 | 0F : rrca
7D89 | 47 : ld b,a
7D8A | 3A D3 95 : ld a,($95D3) // read other inputs
7D8D | 2F : cpl
7D8E | E6 0F : and $0F
7D90 | B0 : or b
7D91 | BE : cp (hl)
7D92 | 77 : ld (hl),a
7D93 | C8 : ret z
7D94 | 2B : dec hl // sound code address ($8100)
7D95 | FE 04 : cp $04
7D97 | 20 01 : jr nz,$7D9A
7D99 | 35 : dec (hl) // decrease code -01
7D9A | FE 01 : cp $01
7D9C | 20 01 : jr nz,$7D9F
7D9E | 34 : inc (hl) // increase code +01
7D9F | FE 08 : cp $08
7DA1 | 20 04 : jr nz,$7DA7
7DA3 | 3E F0 : ld a,$F0 // decrease code -10
7DA5 | 18 06 : jr $7DAD
7DA7 | FE 02 : cp $02
7DA9 | 20 05 : jr nz,$7DB0
7DAB | 3E 10 : ld a,$10 // increase code +10
7DAD | 86 : add a,(hl)
7DAE | 77 : ld (hl),a
7DAF | C9 : ret
7DB0 | FE 40 : cp $40
7DB2 | 20 03 : jr nz,$7DB7
7DB4 | 7E : ld a,(hl) // play sound
7DB5 | 18 05 : jr $7DBC
7DB7 | FE 80 : cp $80
7DB9 | C0 : ret nz
7DBA | 3E 80 : ld a,$80 // stop sound
7DBC | 0E 01 : ld c,$01
7DBE | CD AB 03 : call $03AB // send sound code
7DC1 | C9 : ret
-->
<action>slave.md@0214 = 7E3D00CD </action>
<action>slave.mq@3D00 = 0000CA80FE80213A</action>
<action>slave.mq@3D08 = FFFFFFFFC9805021</action>
<!--
3D00 | 3A 21 80 : ld a,($8021) // read sound code
3D03 | FE 80 : cp $80
3D05 | CA 00 00 : jp z,$0000 // reset cpu when sound code is 0x80
3D08 | 21 50 80 : ld hl,$8050
3D0B | C9 : ret
-->
</script>
<script state="run">
<output format="----- mr. do's castle 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="button 2 : stop sound" line="16" align="center" />
<output format="----------------------------" line="17" align="center" />
<output format="<< sound code %02X >>" line="19" align="center" >
<argument>maincpu.pb@8100</argument>
</output>
</script>
<script state="off">
<action>maincpu.mb@47F0 = 43 </action>
<action>maincpu.md@4800 = 3E4A38CD </action>
<action>maincpu.mq@7D70 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7D78 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7D80 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7D88 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7D90 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7D98 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7DA0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7DA8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7DB0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7DB8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7DC0 = FFFFFFFFFFFFFFFF</action>
<action> slave.md@0214 = 7E805021 </action>
<action> slave.mq@3D00 = FFFFFFFFFFFFFFFF</action>
<action> slave.mq@3D08 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="skip ram/rom check">
<script state="on">
<action>maincpu.mw@0015 = 0186</action>
<action> slave.mw@0006 = 0008</action>
</script>
<script state="off">
<action>maincpu.mw@0015 = 011D</action>
<action> slave.mw@0006 = 00B8</action>
</script>
</cheat>
</mamecheat>
Code: Select all
<!-- Mr. Do's Castle (older) -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<action>maincpu.mb@2251 = C9</action>
</script>
<script state="off">
<action>maincpu.mb@2251 = DD</action>
</script>
</cheat>
<cheat desc="auto fire">
<script state="on">
<action>maincpu.mb@1C36 = 18</action>
</script>
<script state="off">
<action>maincpu.mb@1C36 = 28</action>
</script>
</cheat>
<cheat desc="walk speed (test)">
<comment>sometimes you can't climb up or down on ladder with fast speed</comment>
<parameter>
<item value="0x0040">01 (slow)</item>
<item value="0x0080">02 </item>
<item value="0x0100">03 </item>
<item value="0x0180">04 </item>
<item value="0x0200">05 (fast)</item>
</parameter>
<script state="change">
<action>maincpu.mw@2E1C = param</action> <!-- right -->
<action>maincpu.mw@2E38 = param</action> <!-- up -->
<action>maincpu.mw@2E4B = param</action> <!-- left -->
<action>maincpu.mw@2E5F = param</action> <!-- down -->
</script>
<script state="off">
<action>maincpu.mw@2E1C = 00D0</action>
<action>maincpu.mw@2E38 = 0080</action>
<action>maincpu.mw@2E4B = 00D0</action>
<action>maincpu.mw@2E5F = 0080</action>
</script>
</cheat>
<cheat desc="attack speed up">
<script state="on">
<action>maincpu.mb@23E4 = 06</action>
<action>maincpu.mb@23FC = 06</action>
<action>maincpu.mb@240A = 05</action>
<action>maincpu.mb@2418 = 04</action>
<action>maincpu.mb@2430 = 03</action>
<action>maincpu.mb@2448 = 02</action>
</script>
<script state="off">
<action>maincpu.mb@23E4 = 14</action>
<action>maincpu.mb@23FC = 14</action>
<action>maincpu.mb@240A = 12</action>
<action>maincpu.mb@2418 = 10</action>
<action>maincpu.mb@2430 = 0E</action>
<action>maincpu.mb@2448 = 0C</action>
</script>
</cheat>
<cheat desc="sound test mode">
<comment>reset the game (F3) to enter sound test mode</comment>
<script state="on">
<action>maincpu.mb@432C = 00 </action> <!-- disable next sequence -->
<action>maincpu.md@433C = C97890CD </action>
<action>maincpu.mq@7890 = 3E0920A77E810221</action>
<action>maincpu.mq@7898 = 7795E132924832FF</action>
<action>maincpu.mq@78A0 = 0F03E62F95D53A2B</action>
<action>maincpu.mq@78A8 = 0FE62F95D33A470F</action>
<action>maincpu.mq@78B0 = 2004FE2BC877BEB0</action>
<action>maincpu.mq@78B8 = FE34012001FE3501</action>
<action>maincpu.mq@78C0 = FE0618F03E042008</action>
<action>maincpu.mq@78C8 = C97786103E052002</action>
<action>maincpu.mq@78D0 = FE05187E032040FE</action>
<action>maincpu.mq@78D8 = ABCD010E803EC080</action>
<action>maincpu.mq@78E0 = FFFFFFFFFFFFC903</action>
<!--
7890 | 21 02 81 : ld hl,$8102 // initialize flag address
7893 | 7E : ld a,(hl)
7894 | A7 : and a
7895 | 20 09 : jr nz,$78A0
7897 | 3E FF : ld a,$FF // initialize parameters
7899 | 32 48 92 : ld ($9248),a
789C | 32 E1 95 : ld ($95E1),a
789F | 77 : ld (hl),a
78A0 | 2B : dec hl // temporary input address ($8101)
78A1 | 3A D5 95 : ld a,($95D5) // read buttons
78A4 | 2F : cpl
78A5 | E6 03 : and $03
78A7 | 0F : rrca
78A8 | 0F : rrca
78A9 | 47 : ld b,a
78AA | 3A D3 95 : ld a,($95D3) // read other inputs
78AD | 2F : cpl
78AE | E6 0F : and $0F
78B0 | B0 : or b
78B1 | BE : cp (hl)
78B2 | 77 : ld (hl),a
78B3 | C8 : ret z
78B4 | 2B : dec hl // sound code address ($8100)
78B5 | FE 04 : cp $04
78B7 | 20 01 : jr nz,$78BA
78B9 | 35 : dec (hl) // decrease code -01
78BA | FE 01 : cp $01
78BC | 20 01 : jr nz,$78BF
78BE | 34 : inc (hl) // increase code +01
78BF | FE 08 : cp $08
78C1 | 20 04 : jr nz,$78C7
78C3 | 3E F0 : ld a,$F0 // decrease code -10
78C5 | 18 06 : jr $78CD
78C7 | FE 02 : cp $02
78C9 | 20 05 : jr nz,$78D0
78CB | 3E 10 : ld a,$10 // increase code +10
78CD | 86 : add a,(hl)
78CE | 77 : ld (hl),a
78CF | C9 : ret
78D0 | FE 40 : cp $40
78D2 | 20 03 : jr nz,$78D7
78D4 | 7E : ld a,(hl) // play sound
78D5 | 18 05 : jr $78DC
78D7 | FE 80 : cp $80
78D9 | C0 : ret nz
78DA | 3E 80 : ld a,$80 // stop sound
78DC | 0E 01 : ld c,$01
78DE | CD AB 03 : call $03AB // send sound code
78E1 | C9 : ret
-->
<action>slave.md@0214 = 7E37A0CD </action>
<action>slave.mq@37A0 = 0000CA80FE80213A</action>
<action>slave.mq@37A8 = FFFFFFFFC9805021</action>
<!--
37A0 | 3A 21 80 : ld a,($8021) // read sound code
37A3 | FE 80 : cp $80
37A5 | CA 00 00 : jp z,$0000 // reset cpu when sound code is 0x80
37A8 | 21 50 80 : ld hl,$8050
37AB | C9 : ret
-->
</script>
<script state="run">
<output format="----- mr. do's castle 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="button 2 : stop sound" line="16" align="center" />
<output format="----------------------------" line="17" align="center" />
<output format="<< sound code %02X >>" line="19" align="center" >
<argument>maincpu.pb@8100</argument>
</output>
</script>
<script state="off">
<action>maincpu.mb@432C = 43 </action>
<action>maincpu.md@433C = 3E4577CD </action>
<action>maincpu.mq@7890 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7898 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@78A0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@78A8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@78B0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@78B8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@78C0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@78C8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@78D0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@78D8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@78E0 = FFFFFFFFFFFFFFFF</action>
<action> slave.md@0214 = 7E805021 </action>
<action> slave.mq@37A0 = FFFFFFFFFFFFFFFF</action>
<action> slave.mq@37A8 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="skip ram/rom check">
<script state="on">
<action>maincpu.mw@0015 = 0186</action>
<action> slave.mw@0006 = 0008</action>
</script>
<script state="off">
<action>maincpu.mw@0015 = 011D</action>
<action> slave.mw@0006 = 00B8</action>
</script>
</cheat>
</mamecheat>
Code: Select all
<!-- Mr. Do vs. Unicorns -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<action>maincpu.mb@2251 = C9</action>
</script>
<script state="off">
<action>maincpu.mb@2251 = DD</action>
</script>
</cheat>
<cheat desc="auto fire">
<script state="on">
<action>maincpu.mb@1C36 = 18</action>
</script>
<script state="off">
<action>maincpu.mb@1C36 = 28</action>
</script>
</cheat>
<cheat desc="walk speed (test)">
<comment>sometimes you can't climb up or down on ladder with fast speed</comment>
<parameter>
<item value="0x0040">01 (slow)</item>
<item value="0x0080">02 </item>
<item value="0x0100">03 </item>
<item value="0x0180">04 </item>
<item value="0x0200">05 (fast)</item>
</parameter>
<script state="change">
<action>maincpu.mw@2E1C = param</action> <!-- right -->
<action>maincpu.mw@2E38 = param</action> <!-- up -->
<action>maincpu.mw@2E4B = param</action> <!-- left -->
<action>maincpu.mw@2E5F = param</action> <!-- down -->
</script>
<script state="off">
<action>maincpu.mw@2E1C = 00D0</action>
<action>maincpu.mw@2E38 = 0080</action>
<action>maincpu.mw@2E4B = 00D0</action>
<action>maincpu.mw@2E5F = 0080</action>
</script>
</cheat>
<cheat desc="attack speed up">
<script state="on">
<action>maincpu.mb@23E4 = 06</action>
<action>maincpu.mb@23FC = 06</action>
<action>maincpu.mb@240A = 05</action>
<action>maincpu.mb@2418 = 04</action>
<action>maincpu.mb@2430 = 03</action>
<action>maincpu.mb@2448 = 02</action>
</script>
<script state="off">
<action>maincpu.mb@23E4 = 14</action>
<action>maincpu.mb@23FC = 14</action>
<action>maincpu.mb@240A = 12</action>
<action>maincpu.mb@2418 = 10</action>
<action>maincpu.mb@2430 = 0E</action>
<action>maincpu.mb@2448 = 0C</action>
</script>
</cheat>
<cheat desc="sound test mode">
<comment>reset the game (F3) to enter sound test mode</comment>
<script state="on">
<action>maincpu.mb@432C = 00 </action> <!-- disable next sequence -->
<action>maincpu.md@433C = C97870CD </action>
<action>maincpu.mq@7870 = 3E0920A77E810221</action>
<action>maincpu.mq@7878 = 7795E132924832FF</action>
<action>maincpu.mq@7880 = 0F03E62F95D53A2B</action>
<action>maincpu.mq@7888 = 0FE62F95D33A470F</action>
<action>maincpu.mq@7890 = 2004FE2BC877BEB0</action>
<action>maincpu.mq@7898 = FE34012001FE3501</action>
<action>maincpu.mq@78A0 = FE0618F03E042008</action>
<action>maincpu.mq@78A8 = C97786103E052002</action>
<action>maincpu.mq@78B0 = FE05187E032040FE</action>
<action>maincpu.mq@78B8 = ABCD010E803EC080</action>
<action>maincpu.mq@78C0 = FFFFFFFFFFFFC903</action>
<!--
7870 | 21 02 81 : ld hl,$8102 // initialize flag address
7873 | 7E : ld a,(hl)
7874 | A7 : and a
7875 | 20 09 : jr nz,$7880
7877 | 3E FF : ld a,$FF // initialize parameters
7879 | 32 48 92 : ld ($9248),a
787C | 32 E1 95 : ld ($95E1),a
787F | 77 : ld (hl),a
7880 | 2B : dec hl // temporary input address ($8101)
7881 | 3A D5 95 : ld a,($95D5) // read buttons
7884 | 2F : cpl
7885 | E6 03 : and $03
7887 | 0F : rrca
7888 | 0F : rrca
7889 | 47 : ld b,a
788A | 3A D3 95 : ld a,($95D3) // read other inputs
788D | 2F : cpl
788E | E6 0F : and $0F
7890 | B0 : or b
7891 | BE : cp (hl)
7892 | 77 : ld (hl),a
7893 | C8 : ret z
7894 | 2B : dec hl // sound code address ($8100)
7895 | FE 04 : cp $04
7897 | 20 01 : jr nz,$789A
7899 | 35 : dec (hl) // decrease code -01
789A | FE 01 : cp $01
789C | 20 01 : jr nz,$789F
789E | 34 : inc (hl) // increase code +01
789F | FE 08 : cp $08
78A1 | 20 04 : jr nz,$78A7
78A3 | 3E F0 : ld a,$F0 // decrease code -10
78A5 | 18 06 : jr $78AD
78A7 | FE 02 : cp $02
78A9 | 20 05 : jr nz,$78B0
78AB | 3E 10 : ld a,$10 // increase code +10
78AD | 86 : add a,(hl)
78AE | 77 : ld (hl),a
78AF | C9 : ret
78B0 | FE 40 : cp $40
78B2 | 20 03 : jr nz,$78B7
78B4 | 7E : ld a,(hl) // play sound
78B5 | 18 05 : jr $78BC
78B7 | FE 80 : cp $80
78B9 | C0 : ret nz
78BA | 3E 80 : ld a,$80 // stop sound
78BC | 0E 01 : ld c,$01
78BE | CD AB 03 : call $03AB // send sound code
78C1 | C9 : ret
-->
<action>slave.md@0214 = 7E37A0CD </action>
<action>slave.mq@37A0 = 0000CA80FE80213A</action>
<action>slave.mq@37A8 = FFFFFFFFC9805021</action>
<!--
37A0 | 3A 21 80 : ld a,($8021) // read sound code
37A3 | FE 80 : cp $80
37A5 | CA 00 00 : jp z,$0000 // reset cpu when sound code is 0x80
37A8 | 21 50 80 : ld hl,$8050
37AB | C9 : ret
-->
</script>
<script state="run">
<output format="----- mr. do vs. unicorns 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="button 2 : stop sound" line="16" align="center" />
<output format="----------------------------" line="17" align="center" />
<output format="<< sound code %02X >>" line="19" align="center" >
<argument>maincpu.pb@8100</argument>
</output>
</script>
<script state="off">
<action>maincpu.mb@432C = 43 </action>
<action>maincpu.md@433C = 3E4577CD </action>
<action>maincpu.mq@7870 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7878 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7880 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7888 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7890 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@7898 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@78A0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@78A8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@78B0 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@78B8 = FFFFFFFFFFFFFFFF</action>
<action>maincpu.mq@78C0 = FFFFFFFFFFFFFFFF</action>
<action> slave.md@0214 = 7E805021 </action>
<action> slave.mq@37A0 = FFFFFFFFFFFFFFFF</action>
<action> slave.mq@37A8 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="skip ram/rom check">
<script state="on">
<action>maincpu.mw@0015 = 0186</action>
<action> slave.mw@0006 = 0008</action>
</script>
<script state="off">
<action>maincpu.mw@0015 = 011D</action>
<action> slave.mw@0006 = 00B8</action>
</script>
</cheat>
</mamecheat>