[dondokodj] Don Doko Don

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: 865
Joined: Tue Dec 01, 2020 1:24 pm

[dondokodj] Don Doko Don

Post by jman »

Code: Select all

<cheat desc="no hit">
    <script state="on">
        <action>maincpu.mq@07fb4 = 47ed052c3e3c0017</action> <!-- ice block -->
        <action>maincpu.mb@08de6 =               60</action> <!-- enemy / firearms -->
        <action>maincpu.mb@0c440 =               60</action> <!-- cook -->
        <action>maincpu.mb@0a5c8 =               60</action> <!-- pie -->
        <action>maincpu.mb@0a77e =               60</action> <!-- ice magic -->
        <action>maincpu.mb@0c9be =               60</action> <!-- knight -->
        <action>maincpu.mq@0e860 = 47ed052c3e3c0017</action> <!-- worm -->
        <action>maincpu.mb@170f8 =               60</action> <!-- dragon fire -->
    </script>
    <script state="off">
        <action>maincpu.mb@07fb4 = 47ed04b03e3c0019</action>
        <action>maincpu.mb@08de6 =               6a</action>
        <action>maincpu.mb@0c440 =               67</action>
        <action>maincpu.mb@0a5c8 =               67</action>
        <action>maincpu.mb@0a77e =               67</action>
        <action>maincpu.mb@0c9be =               67</action>
        <action>maincpu.mq@0e860 = 47ed04b03e3c0019</action>
        <action>maincpu.mb@170f8 =               67</action>
    </script>
</cheat>

<cheat desc="auto fire">
    <script state="on">
        <action>maincpu.mw@7644 = 6000</action> <!-- stand -->
        <action>maincpu.mw@7720 = 6000</action> <!-- stand on ice floor -->
        <action>maincpu.mw@7cce = 4e71</action> <!-- jump -->
    </script>
    <script state="off">
        <action>maincpu.mw@7644 = 6600</action>
        <action>maincpu.mw@7720 = 6600</action>
        <action>maincpu.mw@7cce = 67ee</action>
    </script>
</cheat>

<cheat desc="player speed">
    <parameter>
        <item value="0x00002000">01 (slow)</item>
        <item value="0x00004000">02       </item>
        <item value="0x00008000">03       </item>
        <item value="0x00010000">04       </item>
        <item value="0x00020000">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.mq@05d54 = 4eb900020ff0e587</action> <!-- left -->
        <action>maincpu.mq@05d82 = 4eb900020ff0e587</action> <!-- right -->
        <action>maincpu.mq@20ff0 = 3e2a001ab5fc0010</action>
        <action>maincpu.mq@20ff8 = 84ee6e062e3c0000</action>
        <action>maincpu.mq@21000 = 000048424e75ffff</action>
        <!--
        20ff0 | 3e2a 001a      : move.w ($1a,A2),D7
        20ff4 | b5fc 0010 84ee : cmpa.l #$1084ee,A2
        20ffa | 6e06           : bgt    $21002
        20ffc | 2e3c xxxx xxxx : move.l #$xxxx,D7
        21002 | 4842           : swap   D2
        21004 | 4e75           : rts
        -->
    </script>
    <script state="change">
        <action>maincpu.md@20ffe = param</action>
    </script>
    <script state="off">
        <action>maincpu.mq@05d54 = 3e2a001a4842e587</action>
        <action>maincpu.mq@05d82 = 3e2a001a4842e587</action>
        <action>maincpu.mq@20ff0 = ffffffffffffffff</action>
        <action>maincpu.mq@20ff8 = ffffffffffffffff</action>
        <action>maincpu.mq@21000 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="unlock secret key">
    <script state="on">
        <action>maincpu.mb@feaa = 60</action>
    </script>
    <script state="off">
        <action>maincpu.mb@feaa = 67</action>
    </script>
</cheat>

<cheat desc="unlock round select mode">
    <comment>set &quot;skip rom check&quot; then reset the game (F3)</comment>
    <script state="on">
        <action>maincpu.mw@16602 = 4e71</action>
        <action>maincpu.mw@16660 = 0004</action>
    </script>
    <script state="off">
        <action>maincpu.mw@16602 = 66f4</action>
        <action>maincpu.mw@16660 = ffe4</action>
    </script>
</cheat>

<cheat desc="sound test mode">
    <comment>set &quot;skip rom check&quot; then reset the game (F3)</comment>
    <script state="on">
        <action>maincpu.mq@00206 = 4ef900021030548f</action>
        <action>maincpu.mq@21030 = 428241ed01001200</action>
        <action>maincpu.mq@21038 = 103900300005b200</action>
        <action>maincpu.mq@21040 = 67f40c0000fb6602</action>
        <action>maincpu.mq@21048 = 53100c0000f76602</action>
        <action>maincpu.mq@21050 = 52100c0000fd6604</action>
        <action>maincpu.mq@21058 = 041000100c0000fe</action>
        <action>maincpu.mq@21060 = 6604061000100c00</action>
        <action>maincpu.mq@21068 = 00ef660614103f02</action>
        <action>maincpu.mq@21070 = 60080c0000df6606</action>
        <action>maincpu.mq@21078 = 42674e4d548f60b6</action>
        <!--
        21030 | 4282           : clr.l  D2
        21032 | 41ed 0100      : lea    ($100,A5),A0 // sound code address
        21036 | 1200           : move.b D0,D1
        21038 | 1039 0030 0005 : move.b $300005.l,D0 // read input
        2103e | b200           : cmp.b  D0,D1
        21040 | 67f4           : beq    $21036
        21042 | 0c00 00fb      : cmpi.b #-$5,D0
        21046 | 6602           : bne    $2104a
        21048 | 5310           : subq.b #1,(A0)      // decrease code -01
        2104a | 0c00 00f7      : cmpi.b #-$9,D0
        2104e | 6602           : bne    $21052
        21050 | 5210           : addq.b #1,(A0)      // increase code +01
        21052 | 0c00 00fd      : cmpi.b #-$3,D0
        21056 | 6604           : bne    $2105c
        21058 | 0410 0010      : subi.b #$10,(A0)    // decrease code -10
        2105c | 0c00 00fe      : cmpi.b #-$2,D0
        21060 | 6604           : bne    $21066
        21062 | 0610 0010      : addi.b #$10,(A0)    // increase code +10
        21066 | 0c00 00ef      : cmpi.b #-$11,D0
        2106a | 6606           : bne    $21072
        2106c | 1410           : move.b (A0),D2      // play sound
        2106e | 3f02           : move.w D2,-(A7)
        21070 | 6008           : bra    $2107a
        21072 | 0c00 00df      : cmpi.b #-$21,D0
        21076 | 6606           : bne    $2107e
        21078 | 4267           : clr.w  -(A7)        // stop sound
        2107a | 4e4d           : trap   #$d
        2107c | 548f           : addq.l #2,A7
        2107e | 60b6           : bra    $21036
        -->
    </script>
    <script state="run">
        <output format="----- don doko don 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 %2.2X &gt;&gt;"       line="19" align="center"  >
            <argument>maincpu.pb@108100</argument>
        </output>
    </script>
    <script state="off">
        <action>maincpu.mq@00206 = 3f3c00004e48548f</action>
        <action>maincpu.mq@21030 = ffffffffffffffff</action>
        <action>maincpu.mq@21038 = ffffffffffffffff</action>
        <action>maincpu.mq@21040 = ffffffffffffffff</action>
        <action>maincpu.mq@21048 = ffffffffffffffff</action>
        <action>maincpu.mq@21050 = ffffffffffffffff</action>
        <action>maincpu.mq@21058 = ffffffffffffffff</action>
        <action>maincpu.mq@21060 = ffffffffffffffff</action>
        <action>maincpu.mq@21068 = ffffffffffffffff</action>
        <action>maincpu.mq@21070 = ffffffffffffffff</action>
        <action>maincpu.mq@21078 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="skip rom check">
    <script state="on">
        <action>maincpu.mb@01f9 = 28</action>
    </script>
    <script state="off">
        <action>maincpu.mb@01f9 = 06</action>
    </script>
</cheat>
The following code is test because sometimes doesn't work.

Code: Select all

<cheat desc="multiple jump (test)">
    <script state="on">
        <action>maincpu.mq@07a86 = 4eb9000210104e71</action>
        <action>maincpu.mq@21010 = 3e2a001008070005</action>
        <action>maincpu.mq@21018 = 66060807000d660a</action>
        <action>maincpu.mq@21020 = 362a00080c110080</action>
        <action>maincpu.mq@21028 = 4e754ef879ecffff</action>
        <!--
        21010 | 3e2a 0010 : move.w ($10,A2),D7
        21014 | 0807 0005 : btst   #$5,D7
        21018 | 6606      : bne    $21020
        2101a | 0807 000d : btst   #$d,D7
        2101e | 660a      : bne    $2102a
        21020 | 362a 0008 : move.w ($8,A2),D3
        21024 | 0c11 0080 : cmpi.b #-$80,(A1)
        21028 | 4e75      : rts
        2102a | 4ef8 79ec : jmp    $79ec.w
        -->
    </script>
    <script state="off">
        <action>maincpu.mq@07a86 = 362a00080c110080</action>
        <action>maincpu.mq@21010 = ffffffffffffffff</action>
        <action>maincpu.mq@21018 = ffffffffffffffff</action>
        <action>maincpu.mq@21020 = ffffffffffffffff</action>
        <action>maincpu.mq@21028 = ffffffffffffffff</action>
    </script>
</cheat>
Current "invincibility" doesn't work against some firearms (cup, cake, pie etc).
"no hit" disables these firearms but you can't push the stone after round 50.
And "invincibility" separates into "on" and "off" codes but current cheat engine allows you to merge these states.

Code: Select all

<cheat desc="P1 invincibility">
  <script state="run">
    <action>maincpu.pb@1084b0 = 08 | (maincpu.pb@1084b0 band ~08)</action>
  </script>
  <script state="off">
    <action>maincpu.pb@1084b0 = 00 | (maincpu.pb@1084b0 band ~08)</action>
  </script>
</cheat>

<cheat desc="P2 invincibility">
  <script state="run">
    <action>maincpu.pb@1084ee = 08 | (maincpu.pb@1084ee band ~08)</action>
  </script>
  <script state="off">
    <action>maincpu.pb@1084ee = 00 | (maincpu.pb@1084ee band ~08)</action>
  </script>
</cheat>
I find "infinite time". If you set this value as 0x0001, devil will appear soon.

Code: Select all

<cheat desc="infinite time">
    <script state="run">
        <action>maincpu.pw@106fc0 = 0020</action>
    </script>
</cheat>
This game has two worlds, normal (round 1-50) and another (round 51-101) and you can see true ending after round 101.
Unfortunately, you can't select another world via current "select starting round" because the count of round is the same (eg, round 2 and round 52 use the same value 0x01)
Current world is maintained by another flag and I find it. It's better to set the follwing code before start the game (eg, after inserted credit).

Code: Select all

<cheat desc="another world">
    <script state="run">
        <action>maincpu.pb@105b3f = 01</action>
    </script>
    <script state="off">
        <action>maincpu.pb@105b3f = 00</action>
    </script>
</cheat>
How to go to another world is as follows. "unlock secret key" I posted will be easy key find.
Image
Tap orange target several time in round 1 then get secret key and enter the gate to go to secret room.
Image
Tap orange target several time in secret room then get secret key and enter the gate to go to password room.
Image
Enter password as in the above picture.
Post Reply