[chaknpop] Chack'n Pop

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

[chaknpop] Chack'n Pop

Post by jman »

This game has in-game rom check so that the game will crash unless you set "skip rom check" code.

Code: Select all

<!-- Chack'n Pop -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@1b4f = c9</action> <!-- objects -->
            <action>maincpu.mb@2a42 = c9</action> <!-- pressed by moving block -->
        </script>
        <script state="off">
            <action>maincpu.mb@1b4f = c0</action>
            <action>maincpu.mb@2a42 = c8</action>
        </script>
    </cheat>

    <cheat desc="unlimited jump">
        <script state="on">
            <action>maincpu.mw@15d7 = 8780</action>
            <action>maincpu.mw@1352 = 8780</action>
        </script>
        <script state="run">
            <action>maincpu.pq@8780 = 0b3a0820a7838b3a</action>
            <action>maincpu.pq@8788 = 87c3108dc247cb80</action>
            <action>maincpu.pq@8790 = 0000000000000010</action>
            <!--
            8780 | 3a 8b 83 : ld  a,($838B) // check stage clear flag
            8783 | a7       : and a
            8784 | 20 08    : jr  nz,$878E
            8786 | 3a 0b 80 : ld  a,($800B) // check input
            8789 | cb 47    : bit 0,a
            878b | c2 8d 10 : jp  nz,$108D
            878e | c3 87 10 : jp  $1087
            -->
        </script>
        <script state="off">
            <action>maincpu.mw@15d7 =             1087</action>
            <action>maincpu.mw@1352 =             1087</action>
            <action>maincpu.pq@8780 = 0000000000000000</action>
            <action>maincpu.pq@8788 = 0000000000000000</action>
            <action>maincpu.pq@8790 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="bomb explosion speed">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x18">02       </item>
            <item value="0x10">03       </item>
            <item value="0x08">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.mb@233e = 01</action> <!-- sub timer -->
            <action>maincpu.mb@2519 = 01</action> <!-- sub timer -->
        </script>
        <script state="change">
            <action>maincpu.mb@2336 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@2336 = 18</action>
            <action>maincpu.mb@233e = 04</action>
            <action>maincpu.mb@2519 = 04</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0x4000">01 (slow)</item>
            <item value="0x1000">02       </item>
            <item value="0x0800">03       </item>
            <item value="0x0300">04       </item>
            <item value="0x0001">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@3a84 = 22000021</action>
        </script>
        <script state="change">
            <action>maincpu.mw@3a85 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@3a84 = 2280b72a</action>
        </script>
    </cheat>

    <cheat desc="special bonus">
        <comment>doesn't work in maze 1</comment>
        <script state="on">
            <action>maincpu.mb@33a4 = c3</action> <!-- monsta -->
            <action>maincpu.mb@3954 = c3</action> <!-- egg -->
        </script>
        <script state="off">
            <action>maincpu.mb@33a4 = ca</action>
            <action>maincpu.mb@3954 = ca</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.mb@00b7 =               c3</action> <!-- disable credit display -->
            <action>maincpu.mb@0829 =               c3</action> <!-- skip sound code check -->
            <action>maincpu.mb@a1bb =               14</action> <!-- disable music after sfxs (code 0x02-0x12) -->
            <action>maincpu.mq@076a = b888093a810021fb</action>
            <action>maincpu.mq@0772 = 350120fefef92847</action>
            <action>maincpu.mq@077a = 20fbfe340120fdfe</action>
            <action>maincpu.mq@0782 = 20f7fe0618f03e04</action>
            <action>maincpu.mq@078a = effe787786103e05</action>
            <action>maincpu.mq@0792 = 20dffe06187e0320</action>
            <action>maincpu.mq@079a = 0000ce18e7503e03</action>
            <!--
            076a | fb       : ei            // enable interrupt
            076b | 21 00 81 : ld  hl,$8100  // sound code address
            076e | 3a 09 88 : ld  a,($8809) // read input
            0771 | b8       : cp  b
            0772 | 47       : ld  b,a
            0773 | 28 f9    : jr  z,$076E
            0775 | fe fe    : cp  $FE
            0777 | 20 01    : jr  nz,$077A
            0779 | 35       : dec (hl)      // decrease code -01
            077a | fe fd    : cp  $FD
            077c | 20 01    : jr  nz,$077F
            077e | 34       : inc (hl)      // increase code +01
            077f | fe fb    : cp  $FB
            0781 | 20 04    : jr  nz,$0787
            0783 | 3e f0    : ld  a,$F0     // decrease code -10
            0785 | 18 06    : jr  $078D
            0787 | fe f7    : cp  $F7
            0789 | 20 05    : jr  nz,$0790
            078b | 3e 10    : ld  a,$10     // increase code +10
            078d | 86       : add a,(hl)
            078e | 77       : ld  (hl),a
            078f | 78       : ld  a,b
            0790 | fe ef    : cp  $EF
            0792 | 20 03    : jr  nz,$0797
            0794 | 7e       : ld  a,(hl)    // play sound
            0795 | 18 06    : jr  $079D
            0797 | fe df    : cp  $DF
            0799 | 20 03    : jr  nz,$079E
            079b | 3e 50    : ld  a,$50     // stop sound
            079d | e7       : rst $20       // send sound code
            079e | 18 ce    : jr  $076E
            -->
        </script>
        <script state="run">
            <output format="----- chack'n pop 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@8100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mb@00b7 =               9d</action>
            <action>maincpu.mb@0829 =               d2</action>
            <action>maincpu.mb@a1bb =               2a</action>
            <action>maincpu.mq@076a = 0006fb840032033e</action>
            <action>maincpu.mq@0772 = 06022877cb84253a</action>
            <action>maincpu.mq@077a = 02300f0f84273a03</action>
            <action>maincpu.mq@0782 = 0c3284023278d8cb</action>
            <action>maincpu.mq@078a = 5377cdcf500dcd88</action>
            <action>maincpu.mq@0792 = 00cdcf2f2acdcfcf</action>
            <action>maincpu.mq@079a = c8c3840032033e0d</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mw@06ca = 3418</action> <!-- boot -->
            <action>maincpu.mw@14ec = 55d1</action> <!-- ingame -->
        </script>
        <script state="off">
            <action>maincpu.mw@06ca = 0006</action>
            <action>maincpu.mw@14ec = 55d2</action>
        </script>
    </cheat>

</mamecheat>
"special bonus" (aka "no kill bonus") is unique. You can get 20,000 points and extra character after finish the maze. But it doesn't work in maze 1 (training stage).
Image

"unlimited jump" uses a part of RAM because I can't find "unused" ROM area. it will cause wrong behavior if other game routines write or read this area.
Please tell me in this case.
Post Reply