[spelunkrj] Spelunker

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

[spelunkrj] Spelunker

Post by jman »

Code: Select all

<cheat desc="no hit">
    <script state="on">
        <action>maincpu.mb@4cf5 = 18</action> <!-- enemy -->
        <action>maincpu.mb@41a7 = 18</action> <!-- bomb -->
        <action>maincpu.mb@3db6 = c9</action> <!-- water -->
    </script>
    <script state="off">
        <action>maincpu.mb@4cf5 = 20</action>
        <action>maincpu.mb@41a7 = 30</action>
        <action>maincpu.mb@3db6 = d0</action>
    </script>
</cheat>

<cheat desc="multiple jump">
    <script state="on">
        <action>maincpu.md@1a93 =         117d90cd</action>
        <action>maincpu.mq@7d90 = 1b3825fe57007edd</action>
        <action>maincpu.mq@7d98 = 7ce1022a17302cfe</action>
        <action>maincpu.mq@7da0 = 0f06380f7d103007</action>
        <action>maincpu.mq@7da8 = c9213ec9203e0638</action>
        <action>maincpu.mq@7db0 = ffffffc97ac9223e</action>
        <!--
        7d90 | dd 7e 00 : ld   a,(ix+$00)
        7d93 | 57       : ld   d,a
        7d94 | fe 25    : cp   $25
        7d96 | 38 1b    : jr   c,$7db3
        7d98 | fe 2c    : cp   $2c
        7d9a | 30 17    : jr   nc,$7db3
        7d9c | 2a 02 e1 : ld   hl,($e102)
        7d9f | 7c       : ld   a,h
        7da0 | 07       : rlca
        7da1 | 30 10    : jr   nc,$7db3
        7da3 | 7d       : ld   a,l
        7da4 | 0f       : rrca
        7da5 | 38 06    : jr   c,$7dad
        7da7 | 0f       : rrca
        7da8 | 38 06    : jr   c,$7db0
        7daa | 3e 20    : ld   a,$20
        7dac | c9       : ret
        7dad | 3e 21    : ld   a,$21
        7daf | c9       : ret
        7db0 | 3e 22    : ld   a,$22
        7db2 | c9       : ret
        7db3 | 7a       : ld   a,d
        7db4 | c9       : ret
        -->
    </script>
    <script state="off">
        <action>maincpu.md@1a93 =         11007edd</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>
    </script>
</cheat>

<cheat desc="energy speed">
    <parameter>
        <item value="0xff">01 (slow)</item>
        <item value="0x80">02       </item>
        <item value="0x40">03       </item>
        <item value="0x20">04       </item>
        <item value="0x00">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.md@1228 = 003e0028</action> <!-- player start -->
        <action>maincpu.md@12d2 = 003e0028</action> <!-- common -->
    </script>
    <script state="change">
        <action>maincpu.mb@122b = param</action>
        <action>maincpu.mb@12d5 = param</action>
    </script>
    <script state="off">
        <action>maincpu.md@1228 = 7e2c0128</action>
        <action>maincpu.md@12d2 = 7e2c0128</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@0f3a =               00</action> <!-- enable input check -->
        <action>maincpu.mw@04a2 =             7dc0</action>
        <action>maincpu.mq@7dc0 = 22d57dc311000021</action>
        <action>maincpu.mq@7dc8 = c86fbde1023ae200</action>
        <action>maincpu.mq@7dd0 = 2001fe25012002fe</action>
        <action>maincpu.mq@7dd8 = 187c032020fe2401</action>
        <action>maincpu.mq@7de0 = 6fd0cdafc080fe04</action>
        <action>maincpu.mq@7de8 = ffffffffffffffc9</action>
        <!--
        7DC0 | 21 00 00 : ld   hl,$0000   // initialize sound and input values
        7DC3 | 11 C3 7D : ld   de,$7DC3
        7DC6 | D5       : push de
        7DC7 | 22 00 E2 : ld   ($E200),hl
        7DCA | 3A 02 E1 : ld   a,($E102)  // read input
        7DCD | BD       : cp   l
        7DCE | 6F       : ld   l,a
        7DCF | C8       : ret  z
        7DD0 | FE 02    : cp   $02
        7DD2 | 20 01    : jr   nz,$7DD5
        7DD4 | 25       : dec  h          // decrease code
        7DD5 | FE 01    : cp   $01
        7DD7 | 20 01    : jr   nz,$7DDA
        7DD9 | 24       : inc  h          // increase code
        7DDA | FE 20    : cp   $20
        7DDC | 20 03    : jr   nz,$7DE1
        7DDE | 7C       : ld   a,h        // play sound
        7DDF | 18 04    : jr   $7DE5
        7DE1 | FE 80    : cp   $80
        7DE3 | C0       : ret  nz
        7DE4 | AF       : xor  a          // stop sound
        7DE5 | CD D0 6F : call $6FD0
        7DE8 | C9       : ret
        -->
    </script>
    <script state="run">
        <output format="----- spelunker sound test mode -----" line="10" align="center" />
        <output format="left : decrease code"                  line="11" align="center" />
        <output format="right : increase code"                 line="12" align="center" />
        <output format="button 1 : play sound"                 line="13" align="center" />
        <output format="button 2 : stop sound"                 line="14" align="center" />
        <output format="----------------------------"          line="15" align="center" />
        <output format="&lt;&lt; sound code %2.2X &gt;&gt;"    line="17" align="center">
            <argument>maincpu.pb@e201</argument>
        </output>
    </script>
    <script state="off">
        <action>maincpu.mb@0f3a =               c8</action>
        <action>maincpu.mw@04a2 =             5c32</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>
    </script>
</cheat>
The following code is test and difficult to explain. "knock back" occurs in landing from high platform or jumping to a side wall. You can't control temporarily in the middle of "knock back".

Code: Select all

<cheat desc="disable knock back">
    <script state="on">
        <action>maincpu.mb@21bd = 20</action> <!-- fall down -->
        <action>maincpu.mb@2358 = 25</action> <!-- hit a wall -->
    </script>
    <script state="off">
        <action>maincpu.mb@21bd = 27</action>
        <action>maincpu.mb@2358 = 2c</action>
    </script>
</cheat>
jman
Posts: 843
Joined: Tue Dec 01, 2020 1:24 pm

[spelunkrj] Spelunker (update)

Post by jman »

Code: Select all

<cheat desc="multiple jump">
    <script state="on">
        <action>maincpu.md@1a93 =         117d90cd</action>
        <action>maincpu.mq@7d90 = 2cfed825fe007edd</action>
        <action>maincpu.mq@7d98 = 7a077ce1022a57d0</action>
        <action>maincpu.mq@7da0 = 7dd8213e6f0f7dd0</action>
        <action>maincpu.mq@7da8 = ffc9203ed8223e0f</action>
        <!--
        7d90 | dd 7e 00 : ld   a,(ix+$00)
        7d93 | fe 25    : cp   $25
        7d95 | d8       : ret  c
        7d96 | fe 2c    : cp   $2C
        7d98 | d0       : ret  nc
        7d99 | 57       : ld   d,a
        7d9a | 2a 02 e1 : ld   hl,($E102)
        7d9d | 7c       : ld   a,h
        7d9e | 07       : rlca
        7d9f | 7a       : ld   a,d
        7da0 | d0       : ret  nc
        7da1 | 7d       : ld   a,l
        7da2 | 0f       : rrca
        7da3 | 6f       : ld   l,a
        7da4 | 3e 21    : ld   a,$21
        7da6 | d8       : ret  c
        7da7 | 7d       : ld   a,l
        7da8 | 0f       : rrca
        7da9 | 3e 22    : ld   a,$22
        7dab | d8       : ret  c
        7dac | 3e 20    : ld   a,$20
        7dae | c9       : ret
        -->
    </script>
    <script state="off">
        <action>maincpu.md@1a93 =         11007edd</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>
    </script>
</cheat>
"multiple jump" : rewrite routine.

Code: Select all

<cheat desc="short hit mark">
    <script state="on">
        <action>maincpu.mb@3f65 = 01</action>
    </script>
    <script state="off">
        <action>maincpu.mb@3f65 = 20</action>
    </script>
</cheat>
"short hit mark" : add new.

Code: Select all

<cheat desc="sound test mode">
    <comment>reset the game (F3) to enter sound test mode</comment>
    <script state="on">
        <action>maincpu.mb@0f3a =               00</action> <!-- enable input check -->
        <action>maincpu.mw@04a2 =             7db0</action>
        <action>maincpu.mq@7db0 = 47b8e1023ae20021</action>
        <action>maincpu.mq@7db8 = fe35012002fef928</action>
        <action>maincpu.mq@7dc0 = 042004fe34012001</action>
        <action>maincpu.mq@7dc8 = 052008fe0618f03e</action>
        <action>maincpu.mq@7dd0 = 2020fe787786103e</action>
        <action>maincpu.mq@7dd8 = 042080fe05187e03</action>
        <action>maincpu.mq@7de0 = ffffcd186fd0cdaf</action>
        <!--
        7db0 | 21 00 e2 : ld   hl,$E200  // sound code address
        7db3 | 3a 02 e1 : ld   a,($E102) // read input
        7db6 | b8       : cp   b
        7db7 | 47       : ld   b,a
        7db8 | 28 f9    : jr   z,$7DB3
        7dba | fe 02    : cp   $02
        7dbc | 20 01    : jr   nz,$7DBF
        7dbe | 35       : dec  (hl)      // decrease code -01
        7dbf | fe 01    : cp   $01
        7dc1 | 20 01    : jr   nz,$7DC4
        7dc3 | 34       : inc  (hl)      // increase code +01
        7dc4 | fe 04    : cp   $04
        7dc6 | 20 04    : jr   nz,$7DCC
        7dc8 | 3e f0    : ld   a,$F0     // decrease code -10
        7dca | 18 06    : jr   $7DD2
        7dcc | fe 08    : cp   $08
        7dce | 20 05    : jr   nz,$7DD5
        7dd0 | 3e 10    : ld   a,$10     // increase code +10
        7dd2 | 86       : add  a,(hl)
        7dd3 | 77       : ld   (hl),a
        7dd4 | 78       : ld   a,b
        7dd5 | fe 20    : cp   $20
        7dd7 | 20 03    : jr   nz,$7DDC
        7dd9 | 7e       : ld   a,(hl)    // play sound
        7dda | 18 05    : jr   $7DE1
        7ddc | fe 80    : cp   $80
        7dde | 20 04    : jr   nz,$7DE4
        7de0 | af       : xor  a         // stop sound
        7de1 | cd d0 6f : call $6FD0     // send sound code
        7de4 | 18 cd    : jr   $7DB3
        -->
    </script>
    <script state="run">
        <output format="----- spelunker 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@e200</argument>
        </output>
    </script>
    <script state="off">
        <action>maincpu.mb@0f3a =               c8</action>
        <action>maincpu.mw@04a2 =             5c32</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>
    </script>
</cheat>
"sound test mode" : rewrite routine. reallocate address. add up/down key (code ±10).
jman
Posts: 843
Joined: Tue Dec 01, 2020 1:24 pm

[spelunkr]+ Spelunker

Post by jman »

spelunkr.xml

Code: Select all

<!-- Spelunker -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@3DA9 = C9</action> <!-- water -->
            <action>maincpu.mb@419A = 18</action> <!-- bomb -->
            <action>maincpu.mb@4CE8 = 18</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@3DA9 = D0</action>
            <action>maincpu.mb@419A = 30</action>
            <action>maincpu.mb@4CE8 = 20</action>
        </script>
    </cheat>

    <cheat desc="multiple jump">
        <script state="on">
            <action>maincpu.md@1A90 = 117D80CD        </action>
            <action>maincpu.mq@7D80 = 2CFED825FE007EDD</action>
            <action>maincpu.mq@7D88 = 7A077CE1022A57D0</action>
            <action>maincpu.mq@7D90 = 7DD8213E6F0F7DD0</action>
            <action>maincpu.mq@7D98 = FFC9203ED8223E0F</action>
            <!--
            7D80 | DD 7E 00 : ld   a,(ix+$00)
            7D83 | FE 25    : cp   $25
            7D85 | D8       : ret  c
            7D86 | FE 2C    : cp   $2C
            7D88 | D0       : ret  nc
            7D89 | 57       : ld   d,a
            7D8A | 2A 02 E1 : ld   hl,($E102)
            7D8D | 7C       : ld   a,h
            7D8E | 07       : rlca
            7D8F | 7A       : ld   a,d
            7D90 | D0       : ret  nc
            7D91 | 7D       : ld   a,l
            7D92 | 0F       : rrca
            7D93 | 6F       : ld   l,a
            7D94 | 3E 21    : ld   a,$21
            7D96 | D8       : ret  c
            7D97 | 7D       : ld   a,l
            7D98 | 0F       : rrca
            7D99 | 3E 22    : ld   a,$22
            7D9B | D8       : ret  c
            7D9C | 3E 20    : ld   a,$20
            7D9E | C9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@1A90 = 11007EDD        </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>
        </script>
    </cheat>

    <cheat desc="energy speed">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x00">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@1228 = 003E0028</action> <!-- initialize -->
            <action>maincpu.md@12D2 = 003E0028</action> <!-- common -->
        </script>
        <script state="change">
            <action>maincpu.mb@122B = param</action>
            <action>maincpu.mb@12D5 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@1228 = 7E2C0128</action>
            <action>maincpu.md@12D2 = 7E2C0128</action>
        </script>
    </cheat>

    <cheat desc="short hit mark">
        <script state="on">
            <action>maincpu.mb@3F58 = 01</action>
        </script>
        <script state="off">
            <action>maincpu.mb@3F58 = 20</action>
        </script>
    </cheat>

    <cheat desc="disable knock back (test)">
        <!-- unverified -->
        <script state="on">
            <action>maincpu.mb@21BA = 20</action> <!-- fall down -->
            <action>maincpu.mb@2355 = 25</action> <!-- hit a wall -->
        </script>
        <script state="off">
            <action>maincpu.mb@21BA = 27</action>
            <action>maincpu.mb@2355 = 2C</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@0F3A = 00              </action> <!-- enable input check -->
            <action>maincpu.mw@04A2 = 7DA0            </action>
            <action>maincpu.mq@7DA0 = 47B8E1023AE10021</action>
            <action>maincpu.mq@7DA8 = FE35012002FEF928</action>
            <action>maincpu.mq@7DB0 = 042004FE34012001</action>
            <action>maincpu.mq@7DB8 = 052008FE0618F03E</action>
            <action>maincpu.mq@7DC0 = 2020FE787786103E</action>
            <action>maincpu.mq@7DC8 = 042080FE05187E03</action>
            <action>maincpu.mq@7DD0 = FFFFCD186FC3CDAF</action>
            <!--
            7DA0 | 21 00 E1 : ld   hl,$E100  // sound code address
            7DA3 | 3A 02 E1 : ld   a,($E102) // read input
            7DA6 | B8       : cp   b
            7DA7 | 47       : ld   b,a
            7DA8 | 28 F9    : jr   z,$7DA3
            7DAA | FE 02    : cp   $02
            7DAC | 20 01    : jr   nz,$7DAF
            7DAE | 35       : dec  (hl)      // decrease code -01
            7DAF | FE 01    : cp   $01
            7DB1 | 20 01    : jr   nz,$7DB4
            7DB3 | 34       : inc  (hl)      // increase code +01
            7DB4 | FE 04    : cp   $04
            7DB6 | 20 04    : jr   nz,$7DBC
            7DB8 | 3E F0    : ld   a,$F0     // decrease code -10
            7DBA | 18 06    : jr   $7DC2
            7DBC | FE 08    : cp   $08
            7DBE | 20 05    : jr   nz,$7DC5
            7DC0 | 3E 10    : ld   a,$10     // increase code +10
            7DC2 | 86       : add  a,(hl)
            7DC3 | 77       : ld   (hl),a
            7DC4 | 78       : ld   a,b
            7DC5 | FE 20    : cp   $20
            7DC7 | 20 03    : jr   nz,$7DCC
            7DC9 | 7E       : ld   a,(hl)    // play sound
            7DCA | 18 05    : jr   $7DE1
            7DCC | FE 80    : cp   $80
            7DCE | 20 04    : jr   nz,$7DD4
            7DD0 | AF       : xor  a         // stop sound
            7DD1 | CD C3 6F : call $6FC3     // send sound code
            7DD4 | 18 CD    : jr   $7DA3
            -->
        </script>
        <script state="run">
            <output format="----- spelunker 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@E100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mb@0F3A = C8              </action>
            <action>maincpu.mw@04A2 = 5C25            </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>
        </script>
    </cheat>

</mamecheat>
spelunkrj.xml

Code: Select all

<!-- Spelunker (Japan) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@3DB6 = C9</action> <!-- water -->
            <action>maincpu.mb@41A7 = 18</action> <!-- bomb -->
            <action>maincpu.mb@4CF5 = 18</action> <!-- enemy -->
        </script>
        <script state="off">
            <action>maincpu.mb@3DB6 = D0</action>
            <action>maincpu.mb@41A7 = 30</action>
            <action>maincpu.mb@4CF5 = 20</action>
        </script>
    </cheat>

    <cheat desc="multiple jump">
        <script state="on">
            <action>maincpu.md@1A93 = 117D90CD        </action>
            <action>maincpu.mq@7D90 = 2CFED825FE007EDD</action>
            <action>maincpu.mq@7D98 = 7A077CE1022A57D0</action>
            <action>maincpu.mq@7DA0 = 7DD8213E6F0F7DD0</action>
            <action>maincpu.mq@7DA8 = FFC9203ED8223E0F</action>
            <!--
            7D90 | DD 7E 00 : ld   a,(ix+$00)
            7D93 | FE 25    : cp   $25
            7D95 | D8       : ret  c
            7D96 | FE 2C    : cp   $2C
            7D98 | D0       : ret  nc
            7D99 | 57       : ld   d,a
            7D9A | 2A 02 E1 : ld   hl,($E102)
            7D9D | 7C       : ld   a,h
            7D9E | 07       : rlca
            7D9F | 7A       : ld   a,d
            7DA0 | D0       : ret  nc
            7DA1 | 7D       : ld   a,l
            7DA2 | 0F       : rrca
            7DA3 | 6F       : ld   l,a
            7DA4 | 3E 21    : ld   a,$21
            7DA6 | D8       : ret  c
            7DA7 | 7D       : ld   a,l
            7DA8 | 0F       : rrca
            7DA9 | 3E 22    : ld   a,$22
            7DAB | D8       : ret  c
            7DAC | 3E 20    : ld   a,$20
            7DAE | C9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@1A93 = 11007EDD        </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>
        </script>
    </cheat>

    <cheat desc="energy speed">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x00">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@1228 = 003E0028</action> <!-- initialize -->
            <action>maincpu.md@12D2 = 003E0028</action> <!-- common -->
        </script>
        <script state="change">
            <action>maincpu.mb@122B = param</action>
            <action>maincpu.mb@12D5 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@1228 = 7E2C0128</action>
            <action>maincpu.md@12D2 = 7E2C0128</action>
        </script>
    </cheat>

    <cheat desc="short hit mark">
        <script state="on">
            <action>maincpu.mb@3F65 = 01</action>
        </script>
        <script state="off">
            <action>maincpu.mb@3F65 = 20</action>
        </script>
    </cheat>

    <cheat desc="disable knock back (test)">
        <!-- unverified -->
        <script state="on">
            <action>maincpu.mb@21BD = 20</action> <!-- fall down -->
            <action>maincpu.mb@2358 = 25</action> <!-- hit a wall -->
        </script>
        <script state="off">
            <action>maincpu.mb@21BD = 27</action>
            <action>maincpu.mb@2358 = 2C</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@0F3A = 00              </action> <!-- enable input check -->
            <action>maincpu.mw@04A2 = 7DB0            </action>
            <action>maincpu.mq@7DB0 = 47B8E1023AE10021</action>
            <action>maincpu.mq@7DB8 = FE35012002FEF928</action>
            <action>maincpu.mq@7DC0 = 042004FE34012001</action>
            <action>maincpu.mq@7DC8 = 052008FE0618F03E</action>
            <action>maincpu.mq@7DD0 = 2020FE787786103E</action>
            <action>maincpu.mq@7DD8 = 042080FE05187E03</action>
            <action>maincpu.mq@7DE0 = FFFFCD186FD0CDAF</action>
            <!--
            7DB0 | 21 00 E1 : ld   hl,$E100  // sound code address
            7DB3 | 3A 02 E1 : ld   a,($E102) // read input
            7DB6 | B8       : cp   b
            7DB7 | 47       : ld   b,a
            7DB8 | 28 F9    : jr   z,$7DB3
            7DBA | FE 02    : cp   $02
            7DBC | 20 01    : jr   nz,$7DBF
            7DBE | 35       : dec  (hl)      // decrease code -01
            7DBF | FE 01    : cp   $01
            7DC1 | 20 01    : jr   nz,$7DC4
            7DC3 | 34       : inc  (hl)      // increase code +01
            7DC4 | FE 04    : cp   $04
            7DC6 | 20 04    : jr   nz,$7DCC
            7DC8 | 3E F0    : ld   a,$F0     // decrease code -10
            7DCA | 18 06    : jr   $7DD2
            7DCC | FE 08    : cp   $08
            7DCE | 20 05    : jr   nz,$7DD5
            7DD0 | 3E 10    : ld   a,$10     // increase code +10
            7DD2 | 86       : add  a,(hl)
            7DD3 | 77       : ld   (hl),a
            7DD4 | 78       : ld   a,b
            7DD5 | FE 20    : cp   $20
            7DD7 | 20 03    : jr   nz,$7DDC
            7DD9 | 7E       : ld   a,(hl)    // play sound
            7DDA | 18 05    : jr   $7DE1
            7DDC | FE 80    : cp   $80
            7DDE | 20 04    : jr   nz,$7DE4
            7DE0 | AF       : xor  a         // stop sound
            7DE1 | CD D0 6F : call $6FD0     // send sound code
            7DE4 | 18 CD    : jr   $7DB3
            -->
        </script>
        <script state="run">
            <output format="----- spelunker 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@E100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mb@0F3A = C8              </action>
            <action>maincpu.mw@04A2 = 5C32            </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>
        </script>
    </cheat>

</mamecheat>
Post Reply