[docastle]+ Mr. Do's Castle/Mr. Do vs. Unicorns

This forum is for posting M.A.M.E. Work In Progress "Arcade"cheats that are not quite ready for the prime time. If the cheats are buggy or the cheat descriptions are non-standard then please post them here. Help maybe given but there are no guarantees and they will only be added to the cheat file when the cheat file maintainer is happy with them.
Post Reply
jman
Posts: 850
Joined: Tue Dec 01, 2020 1:24 pm

[docastle]+ Mr. Do's Castle/Mr. Do vs. Unicorns

Post by jman »

docastle.xml

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="&lt;&lt; sound code %02X &gt;&gt;"           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>
docastle2.xml

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="&lt;&lt; sound code %02X &gt;&gt;"           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>
docastleo.xml

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="&lt;&lt; sound code %02X &gt;&gt;"           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>
douni.xml

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="&lt;&lt; sound code %02X &gt;&gt;"               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>
"walk speed" : sometimes you can't climb up or down on ladder with fast speed (code 0x04 or 0x05).
Post Reply