[puckman] Pac-Man/Puck Man

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

[puckman] Pac-Man/Puck Man

Post by jman »

I have researched codes in offical package based on 0.221.

Code: Select all

<cheat desc="no hit">
    <script state="on">
        <action>maincpu.md@1772 =         c83ce0cd</action>
        <action>maincpu.mq@3ce0 = 00c91764cca77e19</action>
        <!--
        3ce0 | 19       : add  hl,de
        3ce1 | 7e       : ld   a,(hl)
        3ce2 | a7       : and  a
        3ce3 | cc 64 17 : call z,$1764
        3ce6 | c9       : ret
        -->
    </script>
    <script state="off">
        <action>maincpu.md@1772 =         c8a77e19</action>
        <action>maincpu.mq@3ce0 = 0000000000000000</action>
    </script>
</cheat>
"no hit" reduces size for current "invincibility" (12-bytes -> 7-bytes).

Code: Select all

<cheat desc="player speed up">
    <script state="on">
        <action>maincpu.md@1806 =         3e3cf0c3</action>
        <action>maincpu.mq@3cf0 = 03fe4e043a4d9d21</action>
        <action>maincpu.mq@3cf8 = 00001809c3183fca</action>
        <!--
        3cf0 | 21 9d 4d : ld hl,$4D9D
        3cf3 | 3a 04 4e : ld a,($4E04) // check intermission
        3cf6 | fe 03    : cp $03
        3cf8 | ca 3f 18 : jp z,$183F
        3cfb | c3 09 18 : jp $1809
        -->
    </script>
    <script state="off">
        <action>maincpu.md@1806 =         3e4d9d21</action>
        <action>maincpu.mq@3cf0 = 0000000000000000</action>
        <action>maincpu.mq@3cf8 = 0000000000000000</action>
    </script>
</cheat>
"player speed up" is rewritten code for "enable speed hack alt".

Code: Select all

<cheat desc="move manually">
    <script state="on">
        <action>maincpu.mb@18dc = c9</action>
    </script>
    <script state="off">
        <action>maincpu.mb@18dc = 2a</action>
    </script>
</cheat>
"move manually" reduces size drastically.

"enemy speed"

Code: Select all

<cheat desc="enemy speed">
    <parameter>
        <item value="0x20">01 (slow)</item>
        <item value="0x10">02       </item>
        <item value="0x08">03       </item>
        <item value="0x02">04       </item>
        <item value="0x00">05 (fast)</item>
    </parameter>
    <script state="on">
        <action>maincpu.mw@1045 =             3d00</action>
        <action>maincpu.md@1b4c =         a73d0ec3</action>
        <action>maincpu.md@1c5f =         a73d20c3</action>
        <action>maincpu.md@1d36 =         a73d32c3</action>
        <action>maincpu.md@1e0d =         a73d44c3</action>
        <action>maincpu.mq@3d00 = 347e4f00211806cd</action>
        <action>maincpu.mq@3d08 = 56cdc90036d808fe</action>
        <action>maincpu.mq@3d10 = 4fc34d993a06283d</action>
        <action>maincpu.mq@3d18 = 1bd8c3c03d5ccd1b</action>
        <action>maincpu.mq@3d20 = 4d9a3a06283d56cd</action>
        <action>maincpu.mq@3d28 = c3c03d5ccd1c62c3</action>
        <action>maincpu.mq@3d30 = 3a06283d56cd1caf</action>
        <action>maincpu.mq@3d38 = 3d5ccd1d39c34d9b</action>
        <action>maincpu.mq@3d40 = 283d56cd1d86c3c0</action>
        <action>maincpu.mq@3d48 = cd1e10c34d9c3a06</action>
        <action>maincpu.mq@3d50 = 043a1e5dc3c03d5c</action>
        <action>maincpu.mq@3d58 = a74f003ac903fe4e</action>
        <action>maincpu.mq@3d60 = 00000000000000c9</action>
        <!--
        3d00 | cd 06 18 : call $1806     // main timer routine
        3d03 | 21 00 4f : ld   hl,$4F00
        3d06 | 7e       : ld   a,(hl)
        3d07 | 34       : inc  (hl)
        3d08 | fe xx    : cp   $xx
        3d0a | d8       : ret  c
        3d0b | 36 00    : ld   (hl),$00
        3d0d | c9       : ret
        3d0e | cd 56 3d : call $3D56     // red
        3d11 | 28 06    : jr   z,$3D19
        3d13 | 3a 99 4d : ld   a,($4D99)
        3d16 | c3 4f 1b : jp   $1B4F
        3d19 | cd 5c 3d : call $3D5C
        3d1c | c0       : ret  nz
        3d1d | c3 d8 1b : jp   $1BD8
        3d20 | cd 56 3d : call $3D56     // pink
        3d23 | 28 06    : jr   z,$3D2B
        3d25 | 3a 9a 4d : ld   a,($4D9A)
        3d28 | c3 62 1c : jp   $1C62
        3d2b | cd 5c 3d : call $3D5C
        3d2e | c0       : ret  nz
        3d2f | c3 af 1c : jp   $1CAF
        3d32 | cd 56 3d : call $3D56     // blue
        3d35 | 28 06    : jr   z,$3D3D
        3d37 | 3a 9b 4d : ld   a,($4D9B)
        3d3a | c3 39 1d : jp   $1D39
        3d3d | cd 5c 3d : call $3D5C
        3d40 | c0       : ret  nz
        3d41 | c3 86 1d : jp   $1D86
        3d44 | cd 56 3d : call $3D56     // orange
        3d47 | 28 06    : jr   z,$3D4F
        3d49 | 3a 9c 4d : ld   a,($4D9C)
        3d4c | c3 10 1e : jp   $1E10
        3d4f | cd 5c 3d : call $3D5C
        3d52 | c0       : ret  nz
        3d53 | c3 5d 1e : jp   $1E5D
        3d56 | 3a 04 4e : ld   a,($4E04) // intermission check routine
        3d59 | fe 03    : cp   $03
        3d5b | c9       : ret
        3d5c | 3a 00 4f : ld   a,($4F00) // timer check routine
        3d5f | a7       : and  a
        3d60 | c9       : ret
        -->
    </script>
    <script state="change">
        <action>maincpu.mb@3d09 = param</action>
    </script>
    <script state="off">
        <action>maincpu.mw@1045 =             1806</action>
        <action>maincpu.md@1b4c =         a74d993a</action>
        <action>maincpu.md@1c5f =         a74d9a3a</action>
        <action>maincpu.md@1d36 =         a74d9b3a</action>
        <action>maincpu.md@1e0d =         a74d9c3a</action>
        <action>maincpu.mq@3d00 = 0000000000000000</action>
        <action>maincpu.mq@3d08 = 0000000000000000</action>
        <action>maincpu.mq@3d10 = 0000000000000000</action>
        <action>maincpu.mq@3d18 = 0000000000000000</action>
        <action>maincpu.mq@3d20 = 0000000000000000</action>
        <action>maincpu.mq@3d28 = 0000000000000000</action>
        <action>maincpu.mq@3d30 = 0000000000000000</action>
        <action>maincpu.mq@3d38 = 0000000000000000</action>
        <action>maincpu.mq@3d40 = 0000000000000000</action>
        <action>maincpu.mq@3d48 = 0000000000000000</action>
        <action>maincpu.mq@3d50 = 0000000000000000</action>
        <action>maincpu.mq@3d58 = 0000000000000000</action>
        <action>maincpu.mq@3d60 = 0000000000000000</action>
    </script>
</cheat>
"sound test mode"

Code: Select all

<cheat desc="sound test mode">
    <comment>set ram/rom check skip then reset the game (F3)</comment>
    <script state="on">
        <action>maincpu.md@238d =         7e3d70c3</action>
        <action>maincpu.mq@3d70 = 47b850003a4c0021</action>
        <action>maincpu.mq@3d78 = fe350120fdfef928</action>
        <action>maincpu.mq@3d80 = 0320fefe340120fb</action>
        <action>maincpu.mq@3d88 = af0420f7fe05187e</action>
        <action>maincpu.mq@3d90 = 8747d9de183d95cd</action>
        <action>maincpu.mq@3d98 = ce003e5fb4c68780</action>
        <action>maincpu.mq@3da0 = 0010014e9c21573d</action>
        <action>maincpu.mq@3da8 = 09770428fffe131a</action>
        <action>maincpu.mq@3db0 = 00000000c9d9f618</action>
        <action>maincpu.mq@3db8 = ff0101000000ff00</action>
        <action>maincpu.mq@3dc0 = 0001ff0202000000</action>
        <action>maincpu.mq@3dc8 = 00000002ff000000</action>
        <action>maincpu.mq@3dd0 = ff0000000004ff00</action>
        <action>maincpu.mq@3dd8 = 0010ff0000000008</action>
        <action>maincpu.mq@3de0 = 00000020ff000000</action>
        <action>maincpu.mq@3de8 = ff0000000040ff00</action>
        <action>maincpu.mq@3df0 = 0100ff0000000080</action>
        <action>maincpu.mq@3df8 = 00000200ff000000</action>
        <action>maincpu.mq@3e00 = ff0000000400ff00</action>
        <action>maincpu.mq@3e08 = 1000ff0000000800</action>
        <action>maincpu.mq@3e10 = 00002000ff000000</action>
        <action>maincpu.mq@3e18 = ff0000004000ff00</action>
        <action>maincpu.mq@3e20 = 0000ff0000008000</action>
        <action>maincpu.mq@3e28 = 00020000ff000001</action>
        <action>maincpu.mq@3e30 = ff0000040000ff00</action>
        <action>maincpu.mq@3e38 = 0000ff0000080000</action>
        <action>maincpu.mq@3e40 = 00200000ff000010</action>
        <action>maincpu.mq@3e48 = ff0000400000ff00</action>
        <action>maincpu.mq@3e50 = 0000ff0000800000</action>
        <!--
        3d70 | 21 00 4c : ld   hl,$4C00  // sound code address
        3d73 | 3a 00 50 : ld   a,($5000)
        3d76 | b8       : cp   b
        3d77 | 47       : ld   b,a
        3d78 | 28 f9    : jr   z,$3D73
        3d7a | fe fd    : cp   $FD
        3d7c | 20 01    : jr   nz,$3D7F
        3d7e | 35       : dec  (hl)      // decrease code
        3d7f | fe fb    : cp   $FB
        3d81 | 20 01    : jr   nz,$3D84
        3d83 | 34       : inc  (hl)      // increase code
        3d84 | fe fe    : cp   $FE
        3d86 | 20 03    : jr   nz,$3D8B
        3d88 | 7e       : ld   a,(hl)    // play sound
        3d89 | 18 05    : jr   $3D90
        3d8b | fe f7    : cp   $F7
        3d8d | 20 04    : jr   nz,$3D93
        3d8f | af       : xor  a         // stop sound
        3d90 | cd 95 3d : call $3D95     // send sound code
        3d93 | 18 de    : jr   $3D73
        3d95 | d9       : exx            // sound code/value conversion routine
        3d96 | 47       : ld   b,a
        3d97 | 87       : add  a,a
        3d98 | 80       : add  a,b
        3d99 | 87       : add  a,a
        3d9a | c6 b4    : add  a,$B4
        3d9c | 5f       : ld   e,a
        3d9d | 3e 00    : ld   a,$00
        3d9f | ce 3d    : adc  a,$3D
        3da1 | 57       : ld   d,a
        3da2 | 21 9c 4e : ld   hl,$4E9C
        3da5 | 01 10 00 : ld   bc,$0010
        3da8 | 1a       : ld   a,(de)
        3da9 | 13       : inc  de
        3daa | fe ff    : cp   $FF
        3dac | 28 04    : jr   z,$3DB2
        3dae | 77       : ld   (hl),a
        3daf | 09       : add  hl,bc
        3db0 | 18 f6    : jr   $3DA8
        3db2 | d9       : exx
        3db3 | c9       : ret
        3db4 - 3e55     : sound code/value conversion table
        -->
    </script>
    <script state="run">
        <output format="----- puckman 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="up : play sound"                      line="13" align="center" />
        <output format="down : 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@4c00</argument>
        </output>
    </script>
    <script state="off">
        <action>maincpu.md@238d =         7e4c822a</action>
        <action>maincpu.mq@3d70 = 0000000000000000</action>
        <action>maincpu.mq@3d78 = 0000000000000000</action>
        <action>maincpu.mq@3d80 = 0000000000000000</action>
        <action>maincpu.mq@3d88 = 0000000000000000</action>
        <action>maincpu.mq@3d90 = 0000000000000000</action>
        <action>maincpu.mq@3d98 = 0000000000000000</action>
        <action>maincpu.mq@3da0 = 0000000000000000</action>
        <action>maincpu.mq@3da8 = 0000000000000000</action>
        <action>maincpu.mq@3db0 = 0000000000000000</action>
        <action>maincpu.mq@3db8 = 0000000000000000</action>
        <action>maincpu.mq@3dc0 = 0000000000000000</action>
        <action>maincpu.mq@3dc8 = 0000000000000000</action>
        <action>maincpu.mq@3dd0 = 0000000000000000</action>
        <action>maincpu.mq@3dd8 = 0000000000000000</action>
        <action>maincpu.mq@3de0 = 0000000000000000</action>
        <action>maincpu.mq@3de8 = 0000000000000000</action>
        <action>maincpu.mq@3df0 = 0000000000000000</action>
        <action>maincpu.mq@3df8 = 0000000000000000</action>
        <action>maincpu.mq@3e00 = 0000000000000000</action>
        <action>maincpu.mq@3e08 = 0000000000000000</action>
        <action>maincpu.mq@3e10 = 0000000000000000</action>
        <action>maincpu.mq@3e18 = 0000000000000000</action>
        <action>maincpu.mq@3e20 = 0000000000000000</action>
        <action>maincpu.mq@3e28 = 0000000000000000</action>
        <action>maincpu.mq@3e30 = 0000000000000000</action>
        <action>maincpu.mq@3e38 = 0000000000000000</action>
        <action>maincpu.mq@3e40 = 0000000000000000</action>
        <action>maincpu.mq@3e48 = 0000000000000000</action>
        <action>maincpu.mq@3e50 = 0000000000000000</action>
    </script>
</cheat>
"skip ram/rom check"

Code: Select all

<cheat desc="skip ram/rom check">
    <script state="on">
        <action>maincpu.md@3000 = 013042c3</action> <!-- rom -->
        <action>maincpu.md@3042 = 0630b0c3</action> <!-- ram -->
    </script>
    <script state="off">
        <action>maincpu.md@3000 = 01000021</action>
        <action>maincpu.md@3042 = 06315431</action>
    </script>
</cheat>
Post Reply