[chaknpop] Chack'n Pop
Posted: Wed Aug 23, 2023 10:26 am
This game has in-game rom check so that the game will crash unless you set "skip rom check" code.
"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).
"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.
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 "skip rom check" 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="<< sound code %2.2X >>" 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>
"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.