[elevator] Elevator Action

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: 874
Joined: Tue Dec 01, 2020 1:24 pm
Been thanked: 3 times

[elevator] Elevator Action

Post by jman »

Code: Select all

<!-- Elevator Action (BA3, 4 PCB version, 1.1) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@08c0 =   c9</action> <!-- bullet -->
            <action>maincpu.mw@368e = e000</action> <!-- pressed by elevator -->
            <action>maincpu.mw@4a37 = e008</action> <!-- pressed by elevator -->
            <!-- character check routine -->
            <action>maincpu.mq@e000 = 37e9c3c81afe7ddd</action>
            <action>maincpu.mq@e008 = 4a78c3c81afe7ddd</action>
            <!--
            e000 | dd 7d    : ld  a,ixl
            e002 | fe 1a    : cp  $1A
            e004 | c8       : ret z
            e005 | c3 e9 37 : jp  $37E9
            e008 | dd 7d    : ld  a,ixl
            e00a | fe 1a    : cp  $1A
            e00c | c8       : ret z
            e00d | c3 78 4a : jp  $4A78
            -->
        </script>
        <script state="off">
            <action>maincpu.mb@08c0 =               c0</action>
            <action>maincpu.mw@368e =             37e9</action>
            <action>maincpu.mw@4a37 =             4a78</action>
            <action>maincpu.mq@e000 = 0000000000000000</action>
            <action>maincpu.mq@e008 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@3104 =         78e010cd</action>
            <action>maincpu.mq@e010 = 2732efcb022868cb</action>
            <action>maincpu.mq@e018 = 000000000000c985</action>
            <!--
            e010 | cb 68    : bit 5,b
            e012 | 28 02    : jr  z,$E016
            e014 | cb ef    : set 5,a
            e016 | 32 27 85 : ld  ($8527),a
            e019 | c9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@3104 =         78852732</action>
            <action>maincpu.mq@e010 = 0000000000000000</action>
            <action>maincpu.mq@e018 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x02">02       </item>
            <item value="0x04">03       </item>
            <item value="0x06">04       </item>
            <item value="0x08">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@4450 =         00e020cd</action> <!-- left -->
            <action>maincpu.md@445f =         00e02ecd</action> <!-- right -->
            <action>maincpu.mq@e020 = 0220fe3e1afe7ddd</action>
            <action>maincpu.mq@e028 = 7dddc90577ddf83e</action>
            <action>maincpu.mq@e030 = 043e0220023e1afe</action>
            <action>maincpu.mq@e038 = 00000000c90577dd</action>
            <!--
            e020 | dd 7d    : ld  a,ixl      // left
            e022 | fe 1a    : cp  $1A
            e024 | 3e fe    : ld  a,$FE
            e026 | 20 02    : jr  nz,$E02A
            e028 | 3e xx    : ld  a,$xx
            e02a | dd 77 05 : ld  (ix+$05),a
            e02d | c9       : ret
            e02e | dd 7d    : ld  a,ixl      // right
            e030 | fe 1a    : cp  $1A
            e032 | 3e 02    : ld  a,$02
            e034 | 20 02    : jr  nz,$E038
            e036 | 3e xx    : ld  a,$xx
            e038 | dd 77 05 : ld  (ix+$05),a
            e03b | c9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@e029 = -param</action>
            <action>maincpu.mb@e037 =  param</action>
        </script>
        <script state="off">
            <action>maincpu.md@4450 =         fe0536dd</action>
            <action>maincpu.md@445f =         020536dd</action>
            <action>maincpu.mq@e020 = 0000000000000000</action>
            <action>maincpu.mq@e028 = 0000000000000000</action>
            <action>maincpu.mq@e030 = 0000000000000000</action>
            <action>maincpu.mq@e038 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x04">01 (slow)</item>
            <item value="0x08">02       </item>
            <item value="0x0c">03       </item>
            <item value="0x10">04       </item>
            <item value="0x14">05 (fast)</item>
        </parameter>
        <script state="change">
            <!-- stand -->
            <action>maincpu.mb@50da = -param</action> <!-- left -->
            <action>maincpu.mb@50de =  param</action> <!-- right -->
            <!-- crouch -->
            <action>maincpu.mb@50ea = -param</action> <!-- left -->
            <action>maincpu.mb@50ee =  param</action> <!-- right -->
            <!-- jump -->
            <action>maincpu.mb@5102 = -param</action> <!-- left -->
            <action>maincpu.mb@5106 =  param</action> <!-- right -->
        </script>
        <script state="off">
            <action>maincpu.mb@50da = f8</action>
            <action>maincpu.mb@50de = 08</action>
            <action>maincpu.mb@50ea = f8</action>
            <action>maincpu.mb@50ee = 08</action>
            <action>maincpu.mb@5102 = f8</action>
            <action>maincpu.mb@5106 = 08</action>
        </script>
    </cheat>

    <cheat desc="sound test mode (test)">
        <!-- music (0x81 and 0x83) stops incorrectly by sound stop button -->
        <comment>set &quot;skip rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mw@71b4 =             e040</action>
            <action>maincpu.mq@e040 = 47b8d4083a810021</action>
            <action>maincpu.mq@e048 = fe350120fefef928</action>
            <action>maincpu.mq@e050 = 0420fbfe340120fd</action>
            <action>maincpu.mq@e058 = 0520f7fe0618f03e</action>
            <action>maincpu.mq@e060 = 20effe787786103e</action>
            <action>maincpu.mq@e068 = 83fe062881fe7e1b</action>
            <action>maincpu.mq@e070 = 7ee092cd19180228</action>
            <action>maincpu.mq@e078 = 870032013e876332</action>
            <action>maincpu.mq@e080 = 0820dffe78876032</action>
            <action>maincpu.mq@e088 = d50b32c03ee092cd</action>
            <action>maincpu.mq@e090 = 6032870032afb118</action>
            <action>maincpu.mq@e098 = c987633287613287</action>
            <!--
            e040 | 21 00 81 : ld   hl,$8100  // sound code address
            e043 | 3a 08 d4 : ld   a,($D408) // read input
            e046 | b8       : cp   b
            e047 | 47       : ld   b,a
            e048 | 28 f9    : jr   z,$E043
            e04a | fe fe    : cp   $FE
            e04c | 20 01    : jr   nz,$E04F
            e04e | 35       : dec  (hl)      // decrease code -01
            e04f | fe fd    : cp   $FD
            e051 | 20 01    : jr   nz,$E054
            e053 | 34       : inc  (hl)      // increase code +01
            e054 | fe fb    : cp   $FB
            e056 | 20 04    : jr   nz,$E05C
            e058 | 3e f0    : ld   a,$F0     // decrease code -10
            e05a | 18 06    : jr   $E062
            e05c | fe f7    : cp   $F7
            e05e | 20 05    : jr   nz,$E065
            e060 | 3e 10    : ld   a,$10     // increase code +10
            e062 | 86       : add  a,(hl)
            e063 | 77       : ld   (hl),a
            e064 | 78       : ld   a,b
            e065 | fe ef    : cp   $EF
            e067 | 20 1b    : jr   nz,$E084
            e069 | 7e       : ld   a,(hl)    // play sound
            e06a | fe 81    : cp   $81
            e06c | 28 06    : jr   z,$E074
            e06e | fe 83    : cp   $83
            e070 | 28 02    : jr   z,$E074
            e072 | 18 19    : jr   $E08D
            e074 | cd 92 e0 : call $E092
            e077 | 7e       : ld   a,(hl)
            e078 | 32 63 87 : ld   ($8763),a
            e07b | 3e 01    : ld   a,$01
            e07d | 32 00 87 : ld   ($8700),a
            e080 | 32 60 87 : ld   ($8760),a
            e083 | 78       : ld   a,b
            e084 | fe df    : cp   $DF
            e086 | 20 08    : jr   nz,$E090
            e088 | cd 92 e0 : call $E092     // stop sound
            e08b | 3e c0    : ld   a,$C0
            e08d | 32 0b d5 : ld   ($D50B),a
            e090 | 18 b1    : jr   $E043
            e092 | af       : xor  a         // music stop routine
            e093 | 32 00 87 : ld   ($8700),a
            e096 | 32 60 87 : ld   ($8760),a
            e099 | 32 61 87 : ld   ($8761),a
            e09c | 32 63 87 : ld   ($8763),a
            e09f | c9       : ret
            -->
        </script>
        <script state="run">
            <output format="----- elevator action 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@71b4 =             5839</action>
            <action>maincpu.mq@e040 = 0000000000000000</action>
            <action>maincpu.mq@e048 = 0000000000000000</action>
            <action>maincpu.mq@e050 = 0000000000000000</action>
            <action>maincpu.mq@e058 = 0000000000000000</action>
            <action>maincpu.mq@e060 = 0000000000000000</action>
            <action>maincpu.mq@e068 = 0000000000000000</action>
            <action>maincpu.mq@e070 = 0000000000000000</action>
            <action>maincpu.mq@e078 = 0000000000000000</action>
            <action>maincpu.mq@e080 = 0000000000000000</action>
            <action>maincpu.mq@e088 = 0000000000000000</action>
            <action>maincpu.mq@e090 = 0000000000000000</action>
            <action>maincpu.mq@e098 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mb@33ca = 9f</action>
        </script>
        <script state="off">
            <action>maincpu.mb@33ca = ac</action>
        </script>
    </cheat>

</mamecheat>
"no hit" : falling down from high platform kills player character.
"sound test mode" : music (code 0x81 and 0x83) stops incorrectly by sound stop button.
jman
Posts: 874
Joined: Tue Dec 01, 2020 1:24 pm
Been thanked: 3 times

[elevator] Elevator Action (update)

Post by jman »

Code: Select all

<!-- Elevator Action (BA3, 4 PCB version, 1.1) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@08c0 =       c9</action> <!-- bullet -->
            <action>maincpu.mw@368e =     e000</action> <!-- pressed by elevator -->
            <action>maincpu.mw@4a37 =     e008</action> <!-- pressed by elevator -->
            <action>maincpu.md@496b = fee010cd</action> <!-- fall down in walking left -->
            <action>maincpu.md@4999 = fee010cd</action> <!-- fall down in walking right -->
            <action>maincpu.mb@4a3f =       c9</action> <!-- fall down in jumping-->
            <!-- character check routine -->
            <action>maincpu.mq@e000 = 37e9c3c81afe7ddd</action>
            <action>maincpu.mq@e008 = 4a78c3c81afe7ddd</action>
            <action>maincpu.mq@e010 = ddc8073e1afe7ddd</action>
            <action>maincpu.mq@e018 = 0000000000c9097e</action>
            <!--
            e000 | dd 7d    : ld  a,ixl      // pressed by elevator
            e002 | fe 1a    : cp  $1A
            e004 | c8       : ret z
            e005 | c3 e9 37 : jp  $37E9
            e008 | dd 7d    : ld  a,ixl      // pressed by elevator
            e00a | fe 1a    : cp  $1A
            e00c | c8       : ret z
            e00d | c3 78 4a : jp  $4A78
            e010 | DD 7D    : ld  a,ixl      // fall down in walking
            e012 | FE 1A    : cp  $1A
            e014 | 3E 07    : ld  a,$07
            e016 | C8       : ret z
            e017 | DD 7E 09 : ld  a,(ix+$09)
            e01a | C9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.mb@08c0 =               c0</action>
            <action>maincpu.mw@368e =             37e9</action>
            <action>maincpu.mw@4a37 =             4a78</action>
            <action>maincpu.mb@4a3f =               c8</action>
            <action>maincpu.mq@e000 = 0000000000000000</action>
            <action>maincpu.mq@e008 = 0000000000000000</action>
            <action>maincpu.mq@e010 = 0000000000000000</action>
            <action>maincpu.mq@e018 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@3104 =         78e020cd</action>
            <action>maincpu.mq@e020 = 2732efcb022868cb</action>
            <action>maincpu.mq@e028 = 000000000000c985</action>
            <!--
            e020 | cb 68    : bit 5,b
            e022 | 28 02    : jr  z,$E026
            e024 | cb ef    : set 5,a
            e026 | 32 27 85 : ld  ($8527),a
            e029 | c9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@3104 =         78852732</action>
            <action>maincpu.mq@e020 = 0000000000000000</action>
            <action>maincpu.mq@e028 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x02">02       </item>
            <item value="0x04">03       </item>
            <item value="0x06">04       </item>
            <item value="0x08">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@4450 =         00e030cd</action> <!-- left -->
            <action>maincpu.md@445f =         00e03ecd</action> <!-- right -->
            <action>maincpu.mq@e030 = 0220fe3e1afe7ddd</action>
            <action>maincpu.mq@e038 = 7dddc90577ddf83e</action>
            <action>maincpu.mq@e040 = 043e0220023e1afe</action>
            <action>maincpu.mq@e048 = 00000000c90577dd</action>
            <!--
            e030 | dd 7d    : ld  a,ixl      // left
            e032 | fe 1a    : cp  $1A
            e034 | 3e fe    : ld  a,$FE
            e036 | 20 02    : jr  nz,$E03A
            e038 | 3e xx    : ld  a,$xx
            e03a | dd 77 05 : ld  (ix+$05),a
            e03d | c9       : ret
            e03e | dd 7d    : ld  a,ixl      // right
            e040 | fe 1a    : cp  $1A
            e042 | 3e 02    : ld  a,$02
            e044 | 20 02    : jr  nz,$E048
            e046 | 3e xx    : ld  a,$xx
            e048 | dd 77 05 : ld  (ix+$05),a
            e04b | c9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@e039 = -param</action>
            <action>maincpu.mb@e047 =  param</action>
        </script>
        <script state="off">
            <action>maincpu.md@4450 =         fe0536dd</action>
            <action>maincpu.md@445f =         020536dd</action>
            <action>maincpu.mq@e030 = 0000000000000000</action>
            <action>maincpu.mq@e038 = 0000000000000000</action>
            <action>maincpu.mq@e040 = 0000000000000000</action>
            <action>maincpu.mq@e048 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x04">01 (slow)</item>
            <item value="0x08">02       </item>
            <item value="0x0c">03       </item>
            <item value="0x10">04       </item>
            <item value="0x14">05 (fast)</item>
        </parameter>
        <script state="change">
            <!-- stand -->
            <action>maincpu.mb@50da = -param</action> <!-- left -->
            <action>maincpu.mb@50de =  param</action> <!-- right -->
            <!-- crouch -->
            <action>maincpu.mb@50ea = -param</action> <!-- left -->
            <action>maincpu.mb@50ee =  param</action> <!-- right -->
            <!-- jump -->
            <action>maincpu.mb@5102 = -param</action> <!-- left -->
            <action>maincpu.mb@5106 =  param</action> <!-- right -->
        </script>
        <script state="off">
            <action>maincpu.mb@50da = f8</action>
            <action>maincpu.mb@50de = 08</action>
            <action>maincpu.mb@50ea = f8</action>
            <action>maincpu.mb@50ee = 08</action>
            <action>maincpu.mb@5102 = f8</action>
            <action>maincpu.mb@5106 = 08</action>
        </script>
    </cheat>

    <cheat desc="sound test mode (test)">
        <!-- music (0x81 and 0x83) stops incorrectly by sound stop button -->
        <comment>set &quot;skip rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mw@71b4 =             e050</action>
            <action>maincpu.mq@e050 = 47b8d4083a810021</action>
            <action>maincpu.mq@e058 = fe350120fefef928</action>
            <action>maincpu.mq@e060 = 0420fbfe340120fd</action>
            <action>maincpu.mq@e068 = 0520f7fe0618f03e</action>
            <action>maincpu.mq@e070 = 20effe787786103e</action>
            <action>maincpu.mq@e078 = 83fe062881fe7e1b</action>
            <action>maincpu.mq@e080 = 7ee0a2cd19180228</action>
            <action>maincpu.mq@e088 = 870032013e876332</action>
            <action>maincpu.mq@e090 = 0820dffe78876032</action>
            <action>maincpu.mq@e098 = d50b32c03ee0a2cd</action>
            <action>maincpu.mq@e0a0 = 6032870032afb118</action>
            <action>maincpu.mq@e0a8 = c987633287613287</action>
            <!--
            e050 | 21 00 81 : ld   hl,$8100  // sound code address
            e053 | 3a 08 d4 : ld   a,($D408) // read input
            e056 | b8       : cp   b
            e057 | 47       : ld   b,a
            e058 | 28 f9    : jr   z,$E053
            e05a | fe fe    : cp   $FE
            e05c | 20 01    : jr   nz,$E05F
            e05e | 35       : dec  (hl)      // decrease code -01
            e05f | fe fd    : cp   $FD
            e061 | 20 01    : jr   nz,$E064
            e063 | 34       : inc  (hl)      // increase code +01
            e064 | fe fb    : cp   $FB
            e066 | 20 04    : jr   nz,$E06C
            e068 | 3e f0    : ld   a,$F0     // decrease code -10
            e06a | 18 06    : jr   $E072
            e06c | fe f7    : cp   $F7
            e06e | 20 05    : jr   nz,$E075
            e070 | 3e 10    : ld   a,$10     // increase code +10
            e072 | 86       : add  a,(hl)
            e073 | 77       : ld   (hl),a
            e074 | 78       : ld   a,b
            e075 | fe ef    : cp   $EF
            e077 | 20 1b    : jr   nz,$E094
            e079 | 7e       : ld   a,(hl)    // play sound
            e07a | fe 81    : cp   $81
            e07c | 28 06    : jr   z,$E084
            e07e | fe 83    : cp   $83
            e080 | 28 02    : jr   z,$E084
            e082 | 18 19    : jr   $E09D
            e084 | cd 92 e0 : call $E0A2
            e087 | 7e       : ld   a,(hl)
            e088 | 32 63 87 : ld   ($8763),a
            e08b | 3e 01    : ld   a,$01
            e08d | 32 00 87 : ld   ($8700),a
            e090 | 32 60 87 : ld   ($8760),a
            e093 | 78       : ld   a,b
            e094 | fe df    : cp   $DF
            e096 | 20 08    : jr   nz,$E0A0
            e098 | cd 92 e0 : call $E0A2     // stop sound
            e09b | 3e c0    : ld   a,$C0
            e09d | 32 0b d5 : ld   ($D50B),a
            e0a0 | 18 b1    : jr   $E053
            e0a2 | af       : xor  a         // music stop routine
            e0a3 | 32 00 87 : ld   ($8700),a
            e0a6 | 32 60 87 : ld   ($8760),a
            e0a9 | 32 61 87 : ld   ($8761),a
            e0ac | 32 63 87 : ld   ($8763),a
            e0af | c9       : ret
            -->
        </script>
        <script state="run">
            <output format="----- elevator action 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@71b4 =             5839</action>
            <action>maincpu.mq@e050 = 0000000000000000</action>
            <action>maincpu.mq@e058 = 0000000000000000</action>
            <action>maincpu.mq@e060 = 0000000000000000</action>
            <action>maincpu.mq@e068 = 0000000000000000</action>
            <action>maincpu.mq@e070 = 0000000000000000</action>
            <action>maincpu.mq@e078 = 0000000000000000</action>
            <action>maincpu.mq@e080 = 0000000000000000</action>
            <action>maincpu.mq@e088 = 0000000000000000</action>
            <action>maincpu.mq@e090 = 0000000000000000</action>
            <action>maincpu.mq@e098 = 0000000000000000</action>
            <action>maincpu.mq@e0a0 = 0000000000000000</action>
            <action>maincpu.mq@e0a8 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mw@33ca = 49d5</action>
        </script>
        <script state="off">
            <action>maincpu.mw@33ca = 34ac</action>
        </script>
    </cheat>

</mamecheat>
  • "no hit" : added protector for "fall down" (thanks AmigaFan!). Of course, an enemy falls down and is crushed by elevator.
  • "skip rom check" : fixed freeze problem in playing game after softreset.
jman
Posts: 874
Joined: Tue Dec 01, 2020 1:24 pm
Been thanked: 3 times

[elevator] Elevator Action (update)

Post by jman »

===== Important notes =====
This game has in-game ROM check. The game will freeze or reset if fails in checking.
So you should set the following codes all the time in case that you use any ROM codes.

Code: Select all

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mw@33ca = 49d5</action> <!-- boot -->
            <action>maincpu.mb@0764 =   c3</action> <!-- in game -->
            <action>maincpu.mw@125e = 6531</action> <!-- in game -->
            <action>maincpu.mw@4c18 = 3018</action> <!-- in game -->
        </script>
        <script state="off">
            <action>maincpu.mw@33ca = 34ac</action>
            <action>maincpu.mb@0764 =   da</action>
            <action>maincpu.mw@125e = 6500</action>
            <action>maincpu.mw@4c18 = 1006</action>
        </script>
    </cheat>
jman
Posts: 874
Joined: Tue Dec 01, 2020 1:24 pm
Been thanked: 3 times

[elevator]+ Elevator Action

Post by jman »

As I have said over and over again, this game has in-game ROM check. So the game will freeze/reset in long play.
This is due to cheat, not emulator bug.
Set initially "skip rom check" and don't turn off.

elevator.xml

Code: Select all

<!-- Elevator Action (BA3, 4 PCB version, 1.1) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@08C0 = C9      </action> <!-- bullet -->
            <action>maincpu.mw@368E = E000    </action> <!-- pressed by elevator -->
            <action>maincpu.mw@4A37 = E008    </action> <!-- pressed by elevator -->
            <action>maincpu.md@496B = FEE010CD</action> <!-- fall down in walking to left -->
            <action>maincpu.md@4999 = FEE010CD</action> <!-- fall down in walking to right -->
            <action>maincpu.mb@4A3F = C9      </action> <!-- fall down in jumping-->
            <!-- character check routine -->
            <action>maincpu.mq@E000 = 37E9C3C81AFE7DDD</action>
            <action>maincpu.mq@E008 = 4A78C3C81AFE7DDD</action>
            <action>maincpu.mq@E010 = DDC8073E1AFE7DDD</action>
            <action>maincpu.mq@E018 = 0000000000C9097E</action>
            <!--
            E000 | DD 7D    : ld   a,ixl      // pressed by elevator
            E002 | FE 1A    : cp   $1A
            E004 | C8       : ret  z
            E005 | C3 E9 37 : jp   $37E9
            E008 | DD 7D    : ld   a,ixl      // pressed by elevator
            E00A | FE 1A    : cp   $1A
            E00C | C8       : ret  z
            E00D | C3 78 4A : jp   $4A78
            E010 | DD 7D    : ld   a,ixl      // fall down in walking
            E012 | FE 1A    : cp   $1A
            E014 | 3E 07    : ld   a,$07
            E016 | C8       : ret  z
            E017 | DD 7E 09 : ld   a,(ix+$09)
            E01A | C9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.mb@08C0 = C0              </action>
            <action>maincpu.mw@368E = 37E9            </action>
            <action>maincpu.mw@4A37 = 4A78            </action>
            <action>maincpu.mb@4A3F = C8              </action>
            <action>maincpu.mq@E000 = 0000000000000000</action>
            <action>maincpu.mq@E008 = 0000000000000000</action>
            <action>maincpu.mq@E010 = 0000000000000000</action>
            <action>maincpu.mq@E018 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@3104 = 78E020CD        </action>
            <action>maincpu.mq@E020 = 2732EFCB022868CB</action>
            <action>maincpu.mq@E028 = 000000000000C985</action>
            <!--
            E020 | CB 68    : bit  5,b
            E022 | 28 02    : jr   z,$E026
            E024 | CB EF    : set  5,a
            E026 | 32 27 85 : ld   ($8527),a
            E029 | C9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@3104 = 78852732        </action>
            <action>maincpu.mq@E020 = 0000000000000000</action>
            <action>maincpu.mq@E028 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x02">02       </item>
            <item value="0x04">03       </item>
            <item value="0x06">04       </item>
            <item value="0x08">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@4450 = 00E030CD        </action> <!-- left -->
            <action>maincpu.md@445F = 00E03ECD        </action> <!-- right -->
            <action>maincpu.mq@E030 = 0220FE3E1AFE7DDD</action>
            <action>maincpu.mq@E038 = 7DDDC90577DDF83E</action>
            <action>maincpu.mq@E040 = 043E0220023E1AFE</action>
            <action>maincpu.mq@E048 = 00000000C90577DD</action>
            <!--
            E030 | DD 7D    : ld   a,ixl      // left
            E032 | FE 1A    : cp   $1A
            E034 | 3E FE    : ld   a,$FE
            E036 | 20 02    : jr   nz,$E03A
            E038 | 3E F8    : ld   a,$F8
            E03A | DD 77 05 : ld   (ix+$05),a
            E03D | C9       : ret
            E03E | DD 7D    : ld   a,ixl      // right
            E040 | FE 1A    : cp   $1A
            E042 | 3E 02    : ld   a,$02
            E044 | 20 02    : jr   nz,$E048
            E046 | 3E 08    : ld   a,$08
            E048 | DD 77 05 : ld   (ix+$05),a
            E04B | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@E039 = -param</action>
            <action>maincpu.mb@E047 =  param</action>
        </script>
        <script state="off">
            <action>maincpu.md@4450 = FE0536DD        </action>
            <action>maincpu.md@445F = 020536DD        </action>
            <action>maincpu.mq@E030 = 0000000000000000</action>
            <action>maincpu.mq@E038 = 0000000000000000</action>
            <action>maincpu.mq@E040 = 0000000000000000</action>
            <action>maincpu.mq@E048 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x04">01 (slow)</item>
            <item value="0x08">02       </item>
            <item value="0x0c">03       </item>
            <item value="0x10">04       </item>
            <item value="0x14">05 (fast)</item>
        </parameter>
        <script state="change">
            <!-- stand -->
            <action>maincpu.mb@50DA = -param</action> <!-- left -->
            <action>maincpu.mb@50DE =  param</action> <!-- right -->
            <!-- crouch -->
            <action>maincpu.mb@50EA = -param</action> <!-- left -->
            <action>maincpu.mb@50EE =  param</action> <!-- right -->
            <!-- jump -->
            <action>maincpu.mb@5102 = -param</action> <!-- left -->
            <action>maincpu.mb@5106 =  param</action> <!-- right -->
        </script>
        <script state="off">
            <action>maincpu.mb@50DA = F8</action>
            <action>maincpu.mb@50DE = 08</action>
            <action>maincpu.mb@50EA = F8</action>
            <action>maincpu.mb@50EE = 08</action>
            <action>maincpu.mb@5102 = F8</action>
            <action>maincpu.mb@5106 = 08</action>
        </script>
    </cheat>

    <cheat desc="sound test mode (test)">
        <!-- sometimes music (0x81 and 0x83) stops incorrectly by sound stop button -->
        <comment>set &quot;skip rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mw@71B4 = E050            </action>
            <action>maincpu.mq@E050 = 47B8D4083A810021</action>
            <action>maincpu.mq@E058 = FE350120FEFEF928</action>
            <action>maincpu.mq@E060 = 0420FBFE340120FD</action>
            <action>maincpu.mq@E068 = 0520F7FE0618F03E</action>
            <action>maincpu.mq@E070 = 20EFFE787786103E</action>
            <action>maincpu.mq@E078 = 83FE062881FE7E1B</action>
            <action>maincpu.mq@E080 = 7EE0A2CD19180228</action>
            <action>maincpu.mq@E088 = 870032013E876332</action>
            <action>maincpu.mq@E090 = 0820DFFE78876032</action>
            <action>maincpu.mq@E098 = D50B32C03EE0A2CD</action>
            <action>maincpu.mq@E0A0 = 6032870032AFB118</action>
            <action>maincpu.mq@E0A8 = C987633287613287</action>
            <!--
            E050 | 21 00 81 : ld   hl,$8100  // sound code address
            E053 | 3A 08 D4 : ld   a,($D408) // read input
            E056 | B8       : cp   b
            E057 | 47       : ld   b,a
            E058 | 28 F9    : jr   z,$E053
            E05A | FE FE    : cp   $FE
            E05C | 20 01    : jr   nz,$E05F
            E05E | 35       : dec  (hl)      // decrease code -01
            E05F | FE FD    : cp   $FD
            E061 | 20 01    : jr   nz,$E064
            E063 | 34       : inc  (hl)      // increase code +01
            E064 | FE FB    : cp   $FB
            E066 | 20 04    : jr   nz,$E06C
            E068 | 3E F0    : ld   a,$F0     // decrease code -10
            E06A | 18 06    : jr   $E072
            E06C | FE F7    : cp   $F7
            E06E | 20 05    : jr   nz,$E075
            E070 | 3E 10    : ld   a,$10     // increase code +10
            E072 | 86       : add  a,(hl)
            E073 | 77       : ld   (hl),a
            E074 | 78       : ld   a,b
            E075 | FE EF    : cp   $EF
            E077 | 20 1B    : jr   nz,$E094
            E079 | 7E       : ld   a,(hl)    // play sound
            E07A | FE 81    : cp   $81
            E07C | 28 06    : jr   z,$E084
            E07E | FE 83    : cp   $83
            E080 | 28 02    : jr   z,$E084
            E082 | 18 19    : jr   $E09D
            E084 | CD A2 E0 : call $E0A2
            E087 | 7E       : ld   a,(hl)
            E088 | 32 63 87 : ld   ($8763),a
            E08B | 3E 01    : ld   a,$01
            E08D | 32 00 87 : ld   ($8700),a
            E090 | 32 60 87 : ld   ($8760),a
            E093 | 78       : ld   a,b
            E094 | FE DF    : cp   $DF
            E096 | 20 08    : jr   nz,$E0A0
            E098 | CD A2 E0 : call $E0A2     // stop sound
            E09B | 3E C0    : ld   a,$C0
            E09D | 32 0B D5 : ld   ($D50B),a
            E0A0 | 18 B1    : jr   $E053
            E0A2 | AF       : xor  a         // music stop routine
            E0A3 | 32 00 87 : ld   ($8700),a
            E0A6 | 32 60 87 : ld   ($8760),a
            E0A9 | 32 61 87 : ld   ($8761),a
            E0AC | 32 63 87 : ld   ($8763),a
            E0AF | C9       : ret
            -->
        </script>
        <script state="run">
            <output format="----- elevator action 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@8100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@71B4 = 5839            </action>
            <action>maincpu.mq@E050 = 0000000000000000</action>
            <action>maincpu.mq@E058 = 0000000000000000</action>
            <action>maincpu.mq@E060 = 0000000000000000</action>
            <action>maincpu.mq@E068 = 0000000000000000</action>
            <action>maincpu.mq@E070 = 0000000000000000</action>
            <action>maincpu.mq@E078 = 0000000000000000</action>
            <action>maincpu.mq@E080 = 0000000000000000</action>
            <action>maincpu.mq@E088 = 0000000000000000</action>
            <action>maincpu.mq@E090 = 0000000000000000</action>
            <action>maincpu.mq@E098 = 0000000000000000</action>
            <action>maincpu.mq@E0A0 = 0000000000000000</action>
            <action>maincpu.mq@E0A8 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mw@33CA = 49D5</action> <!-- boot -->
            <action>maincpu.mb@0764 = C3  </action> <!-- ingame -->
            <action>maincpu.mw@125E = 6531</action> <!-- ingame -->
            <action>maincpu.mw@4C18 = 3018</action> <!-- ingame -->
        </script>
        <script state="off">
            <action>maincpu.mw@33CA = 34AC</action>
            <action>maincpu.mb@0764 = DA  </action>
            <action>maincpu.mw@125E = 6500</action>
            <action>maincpu.mw@4C18 = 1006</action>
        </script>
    </cheat>

</mamecheat>
elevatora.xml

Code: Select all

<!-- Elevator Action (EA, 5 PCB version, 1.1) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@08C0 = C9      </action> <!-- bullet -->
            <action>maincpu.mw@368E = E000    </action> <!-- pressed by elevator -->
            <action>maincpu.mw@4A37 = E008    </action> <!-- pressed by elevator -->
            <action>maincpu.md@496B = FEE010CD</action> <!-- fall down in walking to left -->
            <action>maincpu.md@4999 = FEE010CD</action> <!-- fall down in walking to right -->
            <action>maincpu.mb@4A3F = C9      </action> <!-- fall down in jumping-->
            <!-- character check routine -->
            <action>maincpu.mq@E000 = 37E9C3C81AFE7DDD</action>
            <action>maincpu.mq@E008 = 4A78C3C81AFE7DDD</action>
            <action>maincpu.mq@E010 = DDC8073E1AFE7DDD</action>
            <action>maincpu.mq@E018 = 0000000000C9097E</action>
            <!--
            E000 | DD 7D    : ld   a,ixl      // pressed by elevator
            E002 | FE 1A    : cp   $1A
            E004 | C8       : ret  z
            E005 | C3 E9 37 : jp   $37E9
            E008 | DD 7D    : ld   a,ixl      // pressed by elevator
            E00A | FE 1A    : cp   $1A
            E00C | C8       : ret  z
            E00D | C3 78 4A : jp   $4A78
            E010 | DD 7D    : ld   a,ixl      // fall down in walking
            E012 | FE 1A    : cp   $1A
            E014 | 3E 07    : ld   a,$07
            E016 | C8       : ret  z
            E017 | DD 7E 09 : ld   a,(ix+$09)
            E01A | C9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.mb@08C0 = C0              </action>
            <action>maincpu.mw@368E = 37E9            </action>
            <action>maincpu.mw@4A37 = 4A78            </action>
            <action>maincpu.mb@4A3F = C8              </action>
            <action>maincpu.mq@E000 = 0000000000000000</action>
            <action>maincpu.mq@E008 = 0000000000000000</action>
            <action>maincpu.mq@E010 = 0000000000000000</action>
            <action>maincpu.mq@E018 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@3104 = 78E020CD        </action>
            <action>maincpu.mq@E020 = 2732EFCB022868CB</action>
            <action>maincpu.mq@E028 = 000000000000C985</action>
            <!--
            E020 | CB 68    : bit  5,b
            E022 | 28 02    : jr   z,$E026
            E024 | CB EF    : set  5,a
            E026 | 32 27 85 : ld   ($8527),a
            E029 | C9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@3104 = 78852732        </action>
            <action>maincpu.mq@E020 = 0000000000000000</action>
            <action>maincpu.mq@E028 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x02">02       </item>
            <item value="0x04">03       </item>
            <item value="0x06">04       </item>
            <item value="0x08">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@4450 = 00E030CD        </action> <!-- left -->
            <action>maincpu.md@445F = 00E03ECD        </action> <!-- right -->
            <action>maincpu.mq@E030 = 0220FE3E1AFE7DDD</action>
            <action>maincpu.mq@E038 = 7DDDC90577DDF83E</action>
            <action>maincpu.mq@E040 = 043E0220023E1AFE</action>
            <action>maincpu.mq@E048 = 00000000C90577DD</action>
            <!--
            E030 | DD 7D    : ld   a,ixl      // left
            E032 | FE 1A    : cp   $1A
            E034 | 3E FE    : ld   a,$FE
            E036 | 20 02    : jr   nz,$E03A
            E038 | 3E F8    : ld   a,$F8
            E03A | DD 77 05 : ld   (ix+$05),a
            E03D | C9       : ret
            E03E | DD 7D    : ld   a,ixl      // right
            E040 | FE 1A    : cp   $1A
            E042 | 3E 02    : ld   a,$02
            E044 | 20 02    : jr   nz,$E048
            E046 | 3E 08    : ld   a,$08
            E048 | DD 77 05 : ld   (ix+$05),a
            E04B | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@E039 = -param</action>
            <action>maincpu.mb@E047 =  param</action>
        </script>
        <script state="off">
            <action>maincpu.md@4450 = FE0536DD        </action>
            <action>maincpu.md@445F = 020536DD        </action>
            <action>maincpu.mq@E030 = 0000000000000000</action>
            <action>maincpu.mq@E038 = 0000000000000000</action>
            <action>maincpu.mq@E040 = 0000000000000000</action>
            <action>maincpu.mq@E048 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x04">01 (slow)</item>
            <item value="0x08">02       </item>
            <item value="0x0c">03       </item>
            <item value="0x10">04       </item>
            <item value="0x14">05 (fast)</item>
        </parameter>
        <script state="change">
            <!-- stand -->
            <action>maincpu.mb@50DA = -param</action> <!-- left -->
            <action>maincpu.mb@50DE =  param</action> <!-- right -->
            <!-- crouch -->
            <action>maincpu.mb@50EA = -param</action> <!-- left -->
            <action>maincpu.mb@50EE =  param</action> <!-- right -->
            <!-- jump -->
            <action>maincpu.mb@5102 = -param</action> <!-- left -->
            <action>maincpu.mb@5106 =  param</action> <!-- right -->
        </script>
        <script state="off">
            <action>maincpu.mb@50DA = F8</action>
            <action>maincpu.mb@50DE = 08</action>
            <action>maincpu.mb@50EA = F8</action>
            <action>maincpu.mb@50EE = 08</action>
            <action>maincpu.mb@5102 = F8</action>
            <action>maincpu.mb@5106 = 08</action>
        </script>
    </cheat>

    <cheat desc="sound test mode (test)">
        <!-- sometimes music (0x81 and 0x83) stops incorrectly by sound stop button -->
        <comment>set &quot;skip rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mw@71B4 = E050            </action>
            <action>maincpu.mq@E050 = 47B8D4083A810021</action>
            <action>maincpu.mq@E058 = FE350120FEFEF928</action>
            <action>maincpu.mq@E060 = 0420FBFE340120FD</action>
            <action>maincpu.mq@E068 = 0520F7FE0618F03E</action>
            <action>maincpu.mq@E070 = 20EFFE787786103E</action>
            <action>maincpu.mq@E078 = 83FE062881FE7E1B</action>
            <action>maincpu.mq@E080 = 7EE0A2CD19180228</action>
            <action>maincpu.mq@E088 = 870032013E876332</action>
            <action>maincpu.mq@E090 = 0820DFFE78876032</action>
            <action>maincpu.mq@E098 = D50B32C03EE0A2CD</action>
            <action>maincpu.mq@E0A0 = 6032870032AFB118</action>
            <action>maincpu.mq@E0A8 = C987633287613287</action>
            <!--
            E050 | 21 00 81 : ld   hl,$8100  // sound code address
            E053 | 3A 08 D4 : ld   a,($D408) // read input
            E056 | B8       : cp   b
            E057 | 47       : ld   b,a
            E058 | 28 F9    : jr   z,$E053
            E05A | FE FE    : cp   $FE
            E05C | 20 01    : jr   nz,$E05F
            E05E | 35       : dec  (hl)      // decrease code -01
            E05F | FE FD    : cp   $FD
            E061 | 20 01    : jr   nz,$E064
            E063 | 34       : inc  (hl)      // increase code +01
            E064 | FE FB    : cp   $FB
            E066 | 20 04    : jr   nz,$E06C
            E068 | 3E F0    : ld   a,$F0     // decrease code -10
            E06A | 18 06    : jr   $E072
            E06C | FE F7    : cp   $F7
            E06E | 20 05    : jr   nz,$E075
            E070 | 3E 10    : ld   a,$10     // increase code +10
            E072 | 86       : add  a,(hl)
            E073 | 77       : ld   (hl),a
            E074 | 78       : ld   a,b
            E075 | FE EF    : cp   $EF
            E077 | 20 1B    : jr   nz,$E094
            E079 | 7E       : ld   a,(hl)    // play sound
            E07A | FE 81    : cp   $81
            E07C | 28 06    : jr   z,$E084
            E07E | FE 83    : cp   $83
            E080 | 28 02    : jr   z,$E084
            E082 | 18 19    : jr   $E09D
            E084 | CD A2 E0 : call $E0A2
            E087 | 7E       : ld   a,(hl)
            E088 | 32 63 87 : ld   ($8763),a
            E08B | 3E 01    : ld   a,$01
            E08D | 32 00 87 : ld   ($8700),a
            E090 | 32 60 87 : ld   ($8760),a
            E093 | 78       : ld   a,b
            E094 | FE DF    : cp   $DF
            E096 | 20 08    : jr   nz,$E0A0
            E098 | CD A2 E0 : call $E0A2     // stop sound
            E09B | 3E C0    : ld   a,$C0
            E09D | 32 0B D5 : ld   ($D50B),a
            E0A0 | 18 B1    : jr   $E053
            E0A2 | AF       : xor  a         // music stop routine
            E0A3 | 32 00 87 : ld   ($8700),a
            E0A6 | 32 60 87 : ld   ($8760),a
            E0A9 | 32 61 87 : ld   ($8761),a
            E0AC | 32 63 87 : ld   ($8763),a
            E0AF | C9       : ret
            -->
        </script>
        <script state="run">
            <output format="----- elevator action 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@8100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@71B4 = 5839            </action>
            <action>maincpu.mq@E050 = 0000000000000000</action>
            <action>maincpu.mq@E058 = 0000000000000000</action>
            <action>maincpu.mq@E060 = 0000000000000000</action>
            <action>maincpu.mq@E068 = 0000000000000000</action>
            <action>maincpu.mq@E070 = 0000000000000000</action>
            <action>maincpu.mq@E078 = 0000000000000000</action>
            <action>maincpu.mq@E080 = 0000000000000000</action>
            <action>maincpu.mq@E088 = 0000000000000000</action>
            <action>maincpu.mq@E090 = 0000000000000000</action>
            <action>maincpu.mq@E098 = 0000000000000000</action>
            <action>maincpu.mq@E0A0 = 0000000000000000</action>
            <action>maincpu.mq@E0A8 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mw@33CA = 49D5</action> <!-- boot -->
            <action>maincpu.mb@0764 = C3  </action> <!-- ingame -->
            <action>maincpu.mw@125E = 6531</action> <!-- ingame -->
            <action>maincpu.mw@4C18 = 3018</action> <!-- ingame -->
        </script>
        <script state="off">
            <action>maincpu.mw@33CA = 34AC</action>
            <action>maincpu.mb@0764 = DA  </action>
            <action>maincpu.mw@125E = 6500</action>
            <action>maincpu.mw@4C18 = 1006</action>
        </script>
    </cheat>

</mamecheat>
elevatorb.xml

Code: Select all

<!-- Elevator Action (bootleg) -->
<mamecheat version="1">

    <cheat desc="no hit">
        <script state="on">
            <action>maincpu.mb@08C0 = C9      </action> <!-- bullet -->
            <action>maincpu.mw@368E = E000    </action> <!-- pressed by elevator -->
            <action>maincpu.mw@4A37 = E008    </action> <!-- pressed by elevator -->
            <action>maincpu.md@496B = FEE010CD</action> <!-- fall down in walking to left -->
            <action>maincpu.md@4999 = FEE010CD</action> <!-- fall down in walking to right -->
            <action>maincpu.mb@4A3F = C9      </action> <!-- fall down in jumping-->
            <!-- character check routine -->
            <action>maincpu.mq@E000 = 37E9C3C81AFE7DDD</action>
            <action>maincpu.mq@E008 = 4A78C3C81AFE7DDD</action>
            <action>maincpu.mq@E010 = DDC8073E1AFE7DDD</action>
            <action>maincpu.mq@E018 = 0000000000C9097E</action>
            <!--
            E000 | DD 7D    : ld   a,ixl      // pressed by elevator
            E002 | FE 1A    : cp   $1A
            E004 | C8       : ret  z
            E005 | C3 E9 37 : jp   $37E9
            E008 | DD 7D    : ld   a,ixl      // pressed by elevator
            E00A | FE 1A    : cp   $1A
            E00C | C8       : ret  z
            E00D | C3 78 4A : jp   $4A78
            E010 | DD 7D    : ld   a,ixl      // fall down in walking
            E012 | FE 1A    : cp   $1A
            E014 | 3E 07    : ld   a,$07
            E016 | C8       : ret  z
            E017 | DD 7E 09 : ld   a,(ix+$09)
            E01A | C9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.mb@08C0 = C0              </action>
            <action>maincpu.mw@368E = 37E9            </action>
            <action>maincpu.mw@4A37 = 4A78            </action>
            <action>maincpu.mb@4A3F = C8              </action>
            <action>maincpu.mq@E000 = 0000000000000000</action>
            <action>maincpu.mq@E008 = 0000000000000000</action>
            <action>maincpu.mq@E010 = 0000000000000000</action>
            <action>maincpu.mq@E018 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.md@3104 = 78E020CD        </action>
            <action>maincpu.mq@E020 = 2732EFCB022868CB</action>
            <action>maincpu.mq@E028 = 000000000000C985</action>
            <!--
            E020 | CB 68    : bit  5,b
            E022 | 28 02    : jr   z,$E026
            E024 | CB EF    : set  5,a
            E026 | 32 27 85 : ld   ($8527),a
            E029 | C9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@3104 = 78852732        </action>
            <action>maincpu.mq@E020 = 0000000000000000</action>
            <action>maincpu.mq@E028 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="player speed">
        <parameter>
            <item value="0x01">01 (slow)</item>
            <item value="0x02">02       </item>
            <item value="0x04">03       </item>
            <item value="0x06">04       </item>
            <item value="0x08">05 (fast)</item>
        </parameter>
        <script state="on">
            <action>maincpu.md@4450 = 00E030CD        </action> <!-- left -->
            <action>maincpu.md@445F = 00E03ECD        </action> <!-- right -->
            <action>maincpu.mq@E030 = 0220FE3E1AFE7DDD</action>
            <action>maincpu.mq@E038 = 7DDDC90577DDF83E</action>
            <action>maincpu.mq@E040 = 043E0220023E1AFE</action>
            <action>maincpu.mq@E048 = 00000000C90577DD</action>
            <!--
            E030 | DD 7D    : ld   a,ixl      // left
            E032 | FE 1A    : cp   $1A
            E034 | 3E FE    : ld   a,$FE
            E036 | 20 02    : jr   nz,$E03A
            E038 | 3E F8    : ld   a,$F8
            E03A | DD 77 05 : ld   (ix+$05),a
            E03D | C9       : ret
            E03E | DD 7D    : ld   a,ixl      // right
            E040 | FE 1A    : cp   $1A
            E042 | 3E 02    : ld   a,$02
            E044 | 20 02    : jr   nz,$E048
            E046 | 3E 08    : ld   a,$08
            E048 | DD 77 05 : ld   (ix+$05),a
            E04B | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@E039 = -param</action>
            <action>maincpu.mb@E047 =  param</action>
        </script>
        <script state="off">
            <action>maincpu.md@4450 = FE0536DD        </action>
            <action>maincpu.md@445F = 020536DD        </action>
            <action>maincpu.mq@E030 = 0000000000000000</action>
            <action>maincpu.mq@E038 = 0000000000000000</action>
            <action>maincpu.mq@E040 = 0000000000000000</action>
            <action>maincpu.mq@E048 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="bullet speed">
        <parameter>
            <item value="0x04">01 (slow)</item>
            <item value="0x08">02       </item>
            <item value="0x0c">03       </item>
            <item value="0x10">04       </item>
            <item value="0x14">05 (fast)</item>
        </parameter>
        <script state="change">
            <!-- stand -->
            <action>maincpu.mb@50DA = -param</action> <!-- left -->
            <action>maincpu.mb@50DE =  param</action> <!-- right -->
            <!-- crouch -->
            <action>maincpu.mb@50EA = -param</action> <!-- left -->
            <action>maincpu.mb@50EE =  param</action> <!-- right -->
            <!-- jump -->
            <action>maincpu.mb@5102 = -param</action> <!-- left -->
            <action>maincpu.mb@5106 =  param</action> <!-- right -->
        </script>
        <script state="off">
            <action>maincpu.mb@50DA = F8</action>
            <action>maincpu.mb@50DE = 08</action>
            <action>maincpu.mb@50EA = F8</action>
            <action>maincpu.mb@50EE = 08</action>
            <action>maincpu.mb@5102 = F8</action>
            <action>maincpu.mb@5106 = 08</action>
        </script>
    </cheat>

    <cheat desc="sound test mode (test)">
        <!-- sometimes music (0x81 and 0x83) stops incorrectly by sound stop button -->
        <comment>set &quot;skip rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mw@71B4 = E050            </action>
            <action>maincpu.mq@E050 = 083A8100211036CD</action>
            <action>maincpu.mq@E058 = 20FEFEF92847B8D4</action>
            <action>maincpu.mq@E060 = FE340120FDFE3501</action>
            <action>maincpu.mq@E068 = FE0618F03E0420FB</action>
            <action>maincpu.mq@E070 = 787786103E0520F7</action>
            <action>maincpu.mq@E078 = 2881FE7E1B20EFFE</action>
            <action>maincpu.mq@E080 = CD1918022883FE06</action>
            <action>maincpu.mq@E088 = 013E8763327EE0A5</action>
            <action>maincpu.mq@E090 = FE78876032870032</action>
            <action>maincpu.mq@E098 = C03EE0A5CD0820DF</action>
            <action>maincpu.mq@E0A0 = 0032AFB118D50B32</action>
            <action>maincpu.mq@E0A8 = 3287613287603287</action>
            <action>maincpu.mq@E0B0 = 0000000000C98763</action>
            <!--
            E050 | CD 36 10 : call $1036     // set bank
            E053 | 21 00 81 : ld   hl,$8100  // sound code address
            E056 | 3A 08 D4 : ld   a,($D408) // read input
            E059 | B8       : cp   b
            E05A | 47       : ld   b,a
            E05B | 28 F9    : jr   z,$E056
            E05D | FE FE    : cp   $FE
            E05F | 20 01    : jr   nz,$E062
            E061 | 35       : dec  (hl)      // decrease code -01
            E062 | FE FD    : cp   $FD
            E064 | 20 01    : jr   nz,$E067
            E066 | 34       : inc  (hl)      // increase code +01
            E067 | FE FB    : cp   $FB
            E069 | 20 04    : jr   nz,$E06F
            E06B | 3E F0    : ld   a,$F0     // decrease code -10
            E06D | 18 06    : jr   $E075
            E06F | FE F7    : cp   $F7
            E071 | 20 05    : jr   nz,$E078
            E073 | 3E 10    : ld   a,$10     // increase code +10
            E075 | 86       : add  a,(hl)
            E076 | 77       : ld   (hl),a
            E077 | 78       : ld   a,b
            E078 | FE EF    : cp   $EF
            E07A | 20 1B    : jr   nz,$E097
            E07C | 7E       : ld   a,(hl)    // play sound
            E07D | FE 81    : cp   $81
            E07F | 28 06    : jr   z,$E087
            E081 | FE 83    : cp   $83
            E083 | 28 02    : jr   z,$E087
            E085 | 18 19    : jr   $E0A0
            E087 | CD A5 E0 : call $E0A5
            E08A | 7E       : ld   a,(hl)
            E08B | 32 63 87 : ld   ($8763),a
            E08E | 3E 01    : ld   a,$01
            E090 | 32 00 87 : ld   ($8700),a
            E093 | 32 60 87 : ld   ($8760),a
            E096 | 78       : ld   a,b
            E097 | FE DF    : cp   $DF
            E099 | 20 08    : jr   nz,$E0A3
            E09B | CD A5 E0 : call $E0A5     // stop sound
            E09E | 3E C0    : ld   a,$C0
            E0A0 | 32 0B D5 : ld   ($D50B),a
            E0A3 | 18 B1    : jr   $E056
            E0A5 | AF       : xor  a         // music stop routine
            E0A6 | 32 00 87 : ld   ($8700),a
            E0A9 | 32 60 87 : ld   ($8760),a
            E0AC | 32 61 87 : ld   ($8761),a
            E0AF | 32 63 87 : ld   ($8763),a
            E0B2 | C9       : ret
            -->
        </script>
        <script state="run">
            <output format="----- elevator action 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@8100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@71B4 = 5839            </action>
            <action>maincpu.mq@E050 = 0000000000000000</action>
            <action>maincpu.mq@E058 = 0000000000000000</action>
            <action>maincpu.mq@E060 = 0000000000000000</action>
            <action>maincpu.mq@E068 = 0000000000000000</action>
            <action>maincpu.mq@E070 = 0000000000000000</action>
            <action>maincpu.mq@E078 = 0000000000000000</action>
            <action>maincpu.mq@E080 = 0000000000000000</action>
            <action>maincpu.mq@E088 = 0000000000000000</action>
            <action>maincpu.mq@E090 = 0000000000000000</action>
            <action>maincpu.mq@E098 = 0000000000000000</action>
            <action>maincpu.mq@E0A0 = 0000000000000000</action>
            <action>maincpu.mq@E0A8 = 0000000000000000</action>
            <action>maincpu.mq@E0B0 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mw@33CA = 49D5</action> <!-- boot -->
            <action>maincpu.mb@0764 = C3  </action> <!-- ingame -->
            <action>maincpu.mw@125E = 6531</action> <!-- ingame -->
            <action>maincpu.mw@4C18 = 3018</action> <!-- ingame -->
        </script>
        <script state="off">
            <action>maincpu.mw@33CA = 34AC</action>
            <action>maincpu.mb@0764 = DA  </action>
            <action>maincpu.mw@125E = 6500</action>
            <action>maincpu.mw@4C18 = 1006</action>
        </script>
    </cheat>

</mamecheat>
Post Reply