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

[pbaction] Pinball Action

Post by jman »

Code: Select all

<cheat desc="keep a ball">
    <script state="on">
        <action>maincpu.mq@40a9 = f50736dd0377dd3d</action>
        <action>maincpu.md@40b1 =         00311ac3</action>
        <!--
        40a9 | 3d          : dec a
        40aa | dd 77 03    : ld  (ix+$03),a
        40ad | dd 36 07 f5 : ld  (ix+$07),$f5
        40b1 | c3 1a 31    : jp  $311a
        -->
    </script>
    <script state="off">
        <action>maincpu.mq@40a9 = cde52bb6cbc00621</action>
        <action>maincpu.md@40b1 =         35cd1023</action>
    </script>
</cheat>
Last edited by jman on Sat Oct 23, 2021 8:58 am, edited 1 time in total.
jman
Posts: 843
Joined: Tue Dec 01, 2020 1:24 pm

[pbaction] sound test mode

Post by jman »

Code: Select all

<cheat desc="sound test mode">
    <comment>reset the game (F3) to enter sound test mode</comment>
    <script state="on">
        <action>maincpu.md@1674 =         011d00c3</action>
        <action>maincpu.mq@1d00 = 003ac10022000021</action>
        <action>maincpu.mq@1d08 = 2008fef6286fbde6</action>
        <action>maincpu.mq@1d10 = fe24012010fe2501</action>
        <action>maincpu.mq@1d18 = 04fe06187c032001</action>
        <action>maincpu.mq@1d20 = 18e80032013e0520</action>
        <action>maincpu.mq@1d28 = ffffffffffffffda</action>
        <!--
        1674 | c3 00 1d : jp  $1d00
        1d00 | 21 00 00 : ld  hl,$0000   // initialize sound and input values
        1d03 | 22 00 c1 : ld  ($c100),hl
        1d06 | 3a 00 e6 : ld  a,($e600)  // read input
        1d09 | bd       : cp  l
        1d0a | 6f       : ld  l,a
        1d0b | 28 f6    : jr  z,$1d03
        1d0d | fe 08    : cp  $08
        1d0f | 20 01    : jr  nz,$1d12
        1d11 | 25       : dec h          // pressed button1 - code decrement
        1d12 | fe 10    : cp  $10
        1d14 | 20 01    : jr  nz,$1d17
        1d16 | 24       : inc h          // pressed button2 - code increment
        1d17 | fe 01    : cp  $01
        1d19 | 20 03    : jr  nz,$1d1e
        1d1b | 7c       : ld  a,h        // pressed button3 - play sound
        1d1c | 18 06    : jr  $1d24
        1d1e | fe 04    : cp  $04
        1d20 | 20 05    : jr  nz,$1d27
        1d22 | 3e 01    : ld  a,$01      // pressed button4 - stop sound
        1d24 | 32 00 e8 : ld  ($e800),a
        1d27 | 18 da    : jr  $1d03
        -->
    </script>
    <script state="run">
        <output format="----- pinball action sound test mode -----" line="10" align="center" />
        <output format="button 1 : code decrement"                  line="11" align="center" />
        <output format="button 2 : code increment"                  line="12" align="center" />
        <output format="button 3 : play sound"                      line="13" align="center" />
        <output format="button 4 : 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@c101</argument>
        </output>
    </script>
    <script state="off">
        <action>maincpu.md@1674 =         01d04021</action>
        <action>maincpu.mq@1d00 = ffffffffffffffff</action>
        <action>maincpu.mq@1d08 = ffffffffffffffff</action>
        <action>maincpu.mq@1d10 = ffffffffffffffff</action>
        <action>maincpu.mq@1d18 = ffffffffffffffff</action>
        <action>maincpu.mq@1d20 = ffffffffffffffff</action>
        <action>maincpu.mq@1d28 = ffffffffffffffff</action>
    </script>
</cheat>
"sound test mode" works after ram rom check.
jman
Posts: 843
Joined: Tue Dec 01, 2020 1:24 pm

[pbaction] Pinball Action (update)

Post by jman »

Code: Select all

<!-- Pinball Action (set 1) -->
<mamecheat version="1">

    <cheat desc="keep a ball">
        <script state="on">
            <action>maincpu.mq@40a9 = f50736dd0377dd3d</action>
            <action>maincpu.mq@40b1 = 0000000000311ac3</action>
            <!--
            40a9 | 3d          : dec a
            40aa | dd 77 03    : ld  (ix+$03),a   // set y-position
            40ad | dd 36 07 f5 : ld  (ix+$07),$f5 // set y-speed
            40b1 | c3 1a 31    : jp  $311a
            -->
        </script>
        <script state="off">
            <action>maincpu.mq@40a9 = cde52bb6cbc00621</action>
            <action>maincpu.mq@40b1 = 4ecbe12d35cd1023</action>
        </script>
    </cheat>

    <cheat desc="ball speed (test)">
        <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@31e0 =         199cc0cd</action> <!-- y-position -->
            <action>maincpu.md@3250 =         199cc5cd</action> <!-- x-position -->
            <action>maincpu.mq@9cc0 = 0166dd03180366dd</action>
            <action>maincpu.mq@9cc8 = f00816a77ac8b37a</action>
            <action>maincpu.mq@9cd0 = 0000000000c9f816</action>
            <!--
            9cc0 | dd 66 03 : ld  h,(ix+$03) // y-position
            9cc3 | 18 03    : jr  $9CC8
            9cc5 | dd 66 01 : ld  h,(ix+$01) // x-position
            9cc8 | 7a       : ld  a,d
            9cc9 | b3       : or  e
            9cca | c8       : ret z
            9ccb | 7a       : ld  a,d
            9ccc | a7       : and a
            9ccd | 16 xx    : ld  d,$xx
            9ccf | f0       : ret p
            9cd0 | 16 xx    : ld  d,$xx
            9cd2 | c9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@9cce =  param</action>
            <action>maincpu.mb@9cd1 = -param</action>
        </script>
        <script state="off">
            <action>maincpu.md@31e0 =         190366dd</action>
            <action>maincpu.md@3250 =         190166dd</action>
            <action>maincpu.mq@9cc0 = 0000000000000000</action>
            <action>maincpu.mq@9cc8 = 0000000000000000</action>
            <action>maincpu.mq@9cd0 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="rise a ball by button 3">
        <script state="on">
            <action>maincpu.md@31b0 =         cb9ce0cd</action>
            <action>maincpu.mq@9ce0 = 5edde6003ac07021</action>
            <action>maincpu.mq@9ce8 = 20a77e0b2847cb07</action>
            <action>maincpu.mq@9cf0 = c90777ddf83e3409</action>
            <action>maincpu.md@9cf8 = 00000000c97b77af</action>
            <!--
            9ce0 | 21 70 c0 : ld  hl,$C070
            9ce3 | 3a 00 e6 : ld  a,($E600)
            9ce6 | dd 5e 07 : ld  e,(ix+$07)
            9ce9 | cb 47    : bit 0,a
            9ceb | 28 0b    : jr  z,$9CF8
            9ced | 7e       : ld  a,(hl)
            9cee | a7       : and a
            9cef | 20 09    : jr  nz,$9CFA
            9cf1 | 34       : inc (hl)
            9cf2 | 3e f8    : ld  a,$F8
            9cf4 | dd 77 07 : ld  (ix+$07),a
            9cf7 | c9       : ret
            9cf8 | af       : xor a
            9cf9 | 77       : ld  (hl),a
            9cfa | 7b       : ld  a,e
            9cfb | c9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@31b0 =         cb077edd</action>
            <action>maincpu.mq@9ce0 = 0000000000000000</action>
            <action>maincpu.mq@9ce8 = 0000000000000000</action>
            <action>maincpu.mq@9cf0 = 0000000000000000</action>
            <action>maincpu.mq@9cf8 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.md@1674 =         019d00c3</action>
            <action>maincpu.mq@9d00 = 47b8e6003ac10021</action>
            <action>maincpu.mq@9d08 = fe35012008fef928</action>
            <action>maincpu.mq@9d10 = 032001fe34012010</action>
            <action>maincpu.mq@9d18 = 3e052004fe06187e</action>
            <action>maincpu.mq@9d20 = 0000dd18e8003201</action>
            <!--
            9d00 | 21 00 c1 : ld  hl,$C100  // sound code address
            9d03 | 3a 00 e6 : ld  a,($E600) // read input
            9d06 | b8       : cp  b
            9d07 | 47       : ld  b,a
            9d08 | 28 f9    : jr  z,$9D03
            9d0a | fe 08    : cp  $08
            9d0c | 20 01    : jr  nz,$9D0F
            9d0e | 35       : dec (hl)      // decrease code -01
            9d0f | fe 10    : cp  $10
            9d11 | 20 01    : jr  nz,$9D14
            9d13 | 34       : inc (hl)      // increase code +01
            9d14 | fe 01    : cp  $01
            9d16 | 20 03    : jr  nz,$9D1B
            9d18 | 7e       : ld  a,(hl)    // play sound
            9d19 | 18 06    : jr  $9D21
            9d1b | fe 04    : cp  $04
            9d1d | 20 05    : jr  nz,$9D24
            9d1f | 3e 01    : ld  a,$01     // stop sound
            9d21 | 32 00 e8 : ld  ($E800),a // send sound code
            9d24 | 18 dd    : jr  $9D03
            -->
        </script>
        <script state="run">
            <output format="----- pinball action sound test mode -----" line="10" align="center" />
            <output format="button 1 : decrease code"                   line="11" align="center" />
            <output format="button 2 : increase code"                   line="12" align="center" />
            <output format="button 3 : play sound"                      line="13" align="center" />
            <output format="button 4 : 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@c100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.md@1674 =         01d04021</action>
            <action>maincpu.mq@9d00 = 0000000000000000</action>
            <action>maincpu.mq@9d08 = 0000000000000000</action>
            <action>maincpu.mq@9d10 = 0000000000000000</action>
            <action>maincpu.mq@9d18 = 0000000000000000</action>
            <action>maincpu.mq@9d20 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>
  • "ball speed" : add new as test code. Sometimes this causes strange ball motion.
  • "rise a ball by button 3" : add new.
  • "sound test mode" : rewrite routine.
jman
Posts: 843
Joined: Tue Dec 01, 2020 1:24 pm

[pbaction]+ Pinball Action

Post by jman »

pbaction.xml

Code: Select all

<!-- Pinball Action (set 1) -->
<mamecheat version="1">

    <cheat desc="keep a ball">
        <script state="on">
            <action>maincpu.mq@40A9 = F50736DD0377DD3D</action>
            <action>maincpu.mq@40B1 = 0000000000311AC3</action>
            <!--
            40A9 | 3D          : dec  a
            40AA | DD 77 03    : ld   (ix+$03),a   // set y position
            40AD | DD 36 07 F5 : ld   (ix+$07),$F5 // set y speed
            40B1 | C3 1A 31    : jp   $311A
            -->
        </script>
        <script state="off">
            <action>maincpu.mq@40A9 = CDE52BB6CBC00621</action>
            <action>maincpu.mq@40B1 = 4ECBE12D35CD1023</action>
        </script>
    </cheat>

    <cheat desc="ball speed (test)">
        <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@31E0 = 199CC0CD        </action> <!-- y-position -->
            <action>maincpu.md@3250 = 199CC5CD        </action> <!-- x-position -->
            <action>maincpu.mq@9CC0 = 0166DD03180366DD</action>
            <action>maincpu.mq@9CC8 = F00816A77AC8B37A</action>
            <action>maincpu.mq@9CD0 = 0000000000C9F816</action>
            <!--
            9CC0 | DD 66 03 : ld   h,(ix+$03) // y position
            9CC3 | 18 03    : jr   $9CC8
            9CC5 | DD 66 01 : ld   h,(ix+$01) // x position
            9CC8 | 7A       : ld   a,d
            9CC9 | B3       : or   e
            9CCA | C8       : ret  z
            9CCB | 7A       : ld   a,d
            9CCC | A7       : and  a
            9CCD | 16 xx    : ld   d,$xx
            9CCF | F0       : ret  p
            9CD0 | 16 xx    : ld   d,$xx
            9CD2 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@9CCE =  param</action>
            <action>maincpu.mb@9CD1 = -param</action>
        </script>
        <script state="off">
            <action>maincpu.md@31E0 = 190366DD        </action>
            <action>maincpu.md@3250 = 190166DD        </action>
            <action>maincpu.mq@9CC0 = 0000000000000000</action>
            <action>maincpu.mq@9CC8 = 0000000000000000</action>
            <action>maincpu.mq@9CD0 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="ball rise by button 3">
        <script state="on">
            <action>maincpu.md@31B0 = CB9CE0CD        </action>
            <action>maincpu.mq@9CE0 = 5EDDE6003AC07021</action>
            <action>maincpu.mq@9CE8 = 20A77E0B2847CB07</action>
            <action>maincpu.mq@9CF0 = C90777DDF83E3409</action>
            <action>maincpu.md@9CF8 = 00000000C97B77AF</action>
            <!--
            9CE0 | 21 70 C0 : ld   hl,$C070
            9CE3 | 3A 00 E6 : ld   a,($E600)
            9CE6 | DD 5E 07 : ld   e,(ix+$07)
            9CE9 | CB 47    : bit  0,a
            9CEB | 28 0B    : jr   z,$9CF8
            9CED | 7E       : ld   a,(hl)
            9CEE | A7       : and  a
            9CEF | 20 09    : jr   nz,$9CFA
            9CF1 | 34       : inc  (hl)
            9CF2 | 3E F8    : ld   a,$F8
            9CF4 | DD 77 07 : ld   (ix+$07),a
            9CF7 | C9       : ret
            9CF8 | AF       : xor  a
            9CF9 | 77       : ld   (hl),a
            9CFA | 7B       : ld   a,e
            9CFB | C9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@31B0 = CB077EDD        </action>
            <action>maincpu.mq@9CE0 = 0000000000000000</action>
            <action>maincpu.mq@9CE8 = 0000000000000000</action>
            <action>maincpu.mq@9CF0 = 0000000000000000</action>
            <action>maincpu.mq@9CF8 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.md@1674 = 019D00C3        </action>
            <action>maincpu.mq@9D00 = 47B8E6003AC10021</action>
            <action>maincpu.mq@9D08 = FE35012008FEF928</action>
            <action>maincpu.mq@9D10 = 032001FE34012010</action>
            <action>maincpu.mq@9D18 = 3E052004FE06187E</action>
            <action>maincpu.mq@9D20 = 0000DD18E8003201</action>
            <!--
            9D00 | 21 00 C1 : ld   hl,$C100  // sound code address
            9D03 | 3A 00 E6 : ld   a,($E600) // read input
            9D06 | B8       : cp   b
            9D07 | 47       : ld   b,a
            9D08 | 28 F9    : jr   z,$9D03
            9D0A | FE 08    : cp   $08
            9D0C | 20 01    : jr   nz,$9D0F
            9D0E | 35       : dec  (hl)      // decrease code -01
            9D0F | FE 10    : cp   $10
            9D11 | 20 01    : jr   nz,$9D14
            9D13 | 34       : inc  (hl)      // increase code +01
            9D14 | FE 01    : cp   $01
            9D16 | 20 03    : jr   nz,$9D1B
            9D18 | 7E       : ld   a,(hl)    // play sound
            9D19 | 18 06    : jr   $9D21
            9D1B | FE 04    : cp   $04
            9D1D | 20 05    : jr   nz,$9D24
            9D1F | 3E 01    : ld   a,$01     // stop sound
            9D21 | 32 00 E8 : ld   ($E800),a // send sound code
            9D24 | 18 DD    : jr   $9D03
            -->
        </script>
        <script state="run">
            <output format="----- pinball action sound test mode -----" line="10" align="center" />
            <output format="button 1 : decrease code"                   line="11" align="center" />
            <output format="button 2 : increase code"                   line="12" align="center" />
            <output format="button 3 : play sound"                      line="13" align="center" />
            <output format="button 4 : stop sound"                      line="14" align="center" />
            <output format="----------------------------"               line="15" align="center" />
            <output format="&lt;&lt; sound code %02X &gt;&gt;"          line="17" align="center"  >
                <argument>maincpu.pb@C100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.md@1674 = 01D04021        </action>
            <action>maincpu.mq@9D00 = 0000000000000000</action>
            <action>maincpu.mq@9D08 = 0000000000000000</action>
            <action>maincpu.mq@9D10 = 0000000000000000</action>
            <action>maincpu.mq@9D18 = 0000000000000000</action>
            <action>maincpu.mq@9D20 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>
pbaction2.xml

Code: Select all

<!-- Pinball Action (set 2, encrypted) -->
<mamecheat version="1">

    <cheat desc="keep a ball">
        <script state="on">
            <action>maincpu.oq@40A5 = FFFF36DDFF77DD3D</action>
            <action>maincpu.mq@40A5 = F507FFFF03FFFFFF</action>
            <action>maincpu.oq@40AD = 0000000000FFFFC3</action>
            <action>maincpu.mq@40AD = FFFFFFFFFF3116FF</action>
            <!--
            40A5 | 3D          : dec  a
            40A6 | DD 77 03    : ld   (ix+$03),a   // set y position
            40A9 | DD 36 07 F5 : ld   (ix+$07),$F5 // set y speed
            40AD | C3 16 31    : jp   $3116
            -->
        </script>
        <script state="off">
            <action>maincpu.oq@40A5 = CDE52BB6CBC80E21</action>
            <action>maincpu.mq@40A5 = 4D4D231E4BC00629</action>
            <action>maincpu.oq@40AD = 4ECBE12D1DCD1804</action>
            <action>maincpu.mq@40AD = 66E3C92D35C51024</action>
        </script>
    </cheat>

    <cheat desc="ball speed (test)">
        <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.od@31DC = 19FFFFCD        </action> <!-- y-position -->
            <action>maincpu.md@31DC = FF9CC0FF        </action>
            <action>maincpu.od@324C = 19FFFFCD        </action> <!-- x-position -->
            <action>maincpu.md@324C = FF9CC5FF        </action>
            <action>maincpu.mq@9CC0 = 0166DD03180366DD</action>
            <action>maincpu.mq@9CC8 = F00816A77AC8B37A</action>
            <action>maincpu.mq@9CD0 = 0000000000C9F816</action>
            <!--
            9CC0 | DD 66 03 : ld   h,(ix+$03) // y position
            9CC3 | 18 03    : jr   $9CC8
            9CC5 | DD 66 01 : ld   h,(ix+$01) // x position
            9CC8 | 7A       : ld   a,d
            9CC9 | B3       : or   e
            9CCA | C8       : ret  z
            9CCB | 7A       : ld   a,d
            9CCC | A7       : and  a
            9CCD | 16 xx    : ld   d,$xx
            9CCF | F0       : ret  p
            9CD0 | 16 xx    : ld   d,$xx
            9CD2 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@9CCE =  param</action>
            <action>maincpu.mb@9CD1 = -param</action>
        </script>
        <script state="off">
            <action>maincpu.od@31DC = 190B66DD        </action>
            <action>maincpu.md@31DC = 91034ED5        </action>
            <action>maincpu.od@324C = 192166DD        </action>
            <action>maincpu.md@324C = 3901E6FD        </action>
            <action>maincpu.mq@9CC0 = 0000000000000000</action>
            <action>maincpu.mq@9CC8 = 0000000000000000</action>
            <action>maincpu.mq@9CD0 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="ball rise by button 3">
        <script state="on">
            <action>maincpu.od@31AC = CBFFFFCD        </action>
            <action>maincpu.md@31AC = FF9CE0FF        </action>
            <action>maincpu.mq@9CE0 = 5EDDE6003AC07021</action>
            <action>maincpu.mq@9CE8 = 20A77E0B2847CB07</action>
            <action>maincpu.mq@9CF0 = C90777DDF83E3409</action>
            <action>maincpu.md@9CF8 = 00000000C97B77AF</action>
            <!--
            9CE0 | 21 70 C0 : ld   hl,$C070
            9CE3 | 3A 00 E6 : ld   a,($E600)
            9CE6 | DD 5E 07 : ld   e,(ix+$07)
            9CE9 | CB 47    : bit  0,a
            9CEB | 28 0B    : jr   z,$9CF8
            9CED | 7E       : ld   a,(hl)
            9CEE | A7       : and  a
            9CEF | 20 09    : jr   nz,$9CFA
            9CF1 | 34       : inc  (hl)
            9CF2 | 3E F8    : ld   a,$F8
            9CF4 | DD 77 07 : ld   (ix+$07),a
            9CF7 | C9       : ret
            9CF8 | AF       : xor  a
            9CF9 | 77       : ld   (hl),a
            9CFA | 7B       : ld   a,e
            9CFB | C9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.od@31AC = CB0F7EDD        </action>
            <action>maincpu.md@31AC = C307FED5        </action>
            <action>maincpu.mq@9CE0 = 0000000000000000</action>
            <action>maincpu.mq@9CE8 = 0000000000000000</action>
            <action>maincpu.mq@9CF0 = 0000000000000000</action>
            <action>maincpu.mq@9CF8 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.od@1675 = 01FFFFC3        </action>
            <action>maincpu.md@1675 = FF9D00FF        </action>
            <action>maincpu.mq@9D00 = 47B8E6003AC10021</action>
            <action>maincpu.mq@9D08 = FE35012008FEF928</action>
            <action>maincpu.mq@9D10 = 032001FE34012010</action>
            <action>maincpu.mq@9D18 = 3E052004FE06187E</action>
            <action>maincpu.mq@9D20 = 0000DD18E8003201</action>
            <!--
            9D00 | 21 00 C1 : ld   hl,$C100  // sound code address
            9D03 | 3A 00 E6 : ld   a,($E600) // read input
            9D06 | B8       : cp   b
            9D07 | 47       : ld   b,a
            9D08 | 28 F9    : jr   z,$9D03
            9D0A | FE 08    : cp   $08
            9D0C | 20 01    : jr   nz,$9D0F
            9D0E | 35       : dec  (hl)      // decrease code -01
            9D0F | FE 10    : cp   $10
            9D11 | 20 01    : jr   nz,$9D14
            9D13 | 34       : inc  (hl)      // increase code +01
            9D14 | FE 01    : cp   $01
            9D16 | 20 03    : jr   nz,$9D1B
            9D18 | 7E       : ld   a,(hl)    // play sound
            9D19 | 18 06    : jr   $9D21
            9D1B | FE 04    : cp   $04
            9D1D | 20 05    : jr   nz,$9D24
            9D1F | 3E 01    : ld   a,$01     // stop sound
            9D21 | 32 00 E8 : ld   ($E800),a // send sound code
            9D24 | 18 DD    : jr   $9D03
            -->
        </script>
        <script state="run">
            <output format="----- pinball action sound test mode -----" line="10" align="center" />
            <output format="button 1 : decrease code"                   line="11" align="center" />
            <output format="button 2 : increase code"                   line="12" align="center" />
            <output format="button 3 : play sound"                      line="13" align="center" />
            <output format="button 4 : stop sound"                      line="14" align="center" />
            <output format="----------------------------"               line="15" align="center" />
            <output format="&lt;&lt; sound code %02X &gt;&gt;"          line="17" align="center"  >
                <argument>maincpu.pb@C100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.od@1675 = 01D04021        </action>
            <action>maincpu.md@1675 = 01D04021        </action>
            <action>maincpu.mq@9D00 = 0000000000000000</action>
            <action>maincpu.mq@9D08 = 0000000000000000</action>
            <action>maincpu.mq@9D10 = 0000000000000000</action>
            <action>maincpu.mq@9D18 = 0000000000000000</action>
            <action>maincpu.mq@9D20 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>
pbaction3.xml

Code: Select all

<!-- Pinball Action (set 3, encrypted) -->
<mamecheat version="1">

    <cheat desc="keep a ball">
        <script state="on">
            <action>maincpu.oq@40A5 = FFFF36DDFF77DD3D</action>
            <action>maincpu.mq@40A5 = F507FFFF03FFFFFF</action>
            <action>maincpu.oq@40AD = 0000000000FFFFC3</action>
            <action>maincpu.mq@40AD = FFFFFFFFFF3116FF</action>
            <!--
            40A5 | 3D          : dec  a
            40A6 | DD 77 03    : ld   (ix+$03),a   // set y position
            40A9 | DD 36 07 F5 : ld   (ix+$07),$F5 // set y speed
            40AD | C3 16 31    : jp   $3116
            -->
        </script>
        <script state="off">
            <action>maincpu.oq@40A5 = CDE52BB6CBC80E21</action>
            <action>maincpu.mq@40A5 = 4D4D231E4BC00629</action>
            <action>maincpu.oq@40AD = 4ECBE12D1DCD1804</action>
            <action>maincpu.mq@40AD = 66E3C92D35C51024</action>
        </script>
    </cheat>

    <cheat desc="ball speed (test)">
        <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.od@31DC = 19FFFFCD        </action> <!-- y-position -->
            <action>maincpu.md@31DC = FF9CC0FF        </action>
            <action>maincpu.od@324C = 19FFFFCD        </action> <!-- x-position -->
            <action>maincpu.md@324C = FF9CC5FF        </action>
            <action>maincpu.mq@9CC0 = 0166DD03180366DD</action>
            <action>maincpu.mq@9CC8 = F00816A77AC8B37A</action>
            <action>maincpu.mq@9CD0 = 0000000000C9F816</action>
            <!--
            9CC0 | DD 66 03 : ld   h,(ix+$03) // y position
            9CC3 | 18 03    : jr   $9CC8
            9CC5 | DD 66 01 : ld   h,(ix+$01) // x position
            9CC8 | 7A       : ld   a,d
            9CC9 | B3       : or   e
            9CCA | C8       : ret  z
            9CCB | 7A       : ld   a,d
            9CCC | A7       : and  a
            9CCD | 16 xx    : ld   d,$xx
            9CCF | F0       : ret  p
            9CD0 | 16 xx    : ld   d,$xx
            9CD2 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@9CCE =  param</action>
            <action>maincpu.mb@9CD1 = -param</action>
        </script>
        <script state="off">
            <action>maincpu.od@31DC = 190B66DD        </action>
            <action>maincpu.md@31DC = 91034ED5        </action>
            <action>maincpu.od@324C = 192166DD        </action>
            <action>maincpu.md@324C = 3901E6FD        </action>
            <action>maincpu.mq@9CC0 = 0000000000000000</action>
            <action>maincpu.mq@9CC8 = 0000000000000000</action>
            <action>maincpu.mq@9CD0 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="ball rise by button 3">
        <script state="on">
            <action>maincpu.od@31AC = CBFFFFCD        </action>
            <action>maincpu.md@31AC = FF9CE0FF        </action>
            <action>maincpu.mq@9CE0 = 5EDDE6003AC07021</action>
            <action>maincpu.mq@9CE8 = 20A77E0B2847CB07</action>
            <action>maincpu.mq@9CF0 = C90777DDF83E3409</action>
            <action>maincpu.md@9CF8 = 00000000C97B77AF</action>
            <!--
            9CE0 | 21 70 C0 : ld   hl,$C070
            9CE3 | 3A 00 E6 : ld   a,($E600)
            9CE6 | DD 5E 07 : ld   e,(ix+$07)
            9CE9 | CB 47    : bit  0,a
            9CEB | 28 0B    : jr   z,$9CF8
            9CED | 7E       : ld   a,(hl)
            9CEE | A7       : and  a
            9CEF | 20 09    : jr   nz,$9CFA
            9CF1 | 34       : inc  (hl)
            9CF2 | 3E F8    : ld   a,$F8
            9CF4 | DD 77 07 : ld   (ix+$07),a
            9CF7 | C9       : ret
            9CF8 | AF       : xor  a
            9CF9 | 77       : ld   (hl),a
            9CFA | 7B       : ld   a,e
            9CFB | C9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.od@31AC = CB0F7EDD        </action>
            <action>maincpu.md@31AC = C307FED5        </action>
            <action>maincpu.mq@9CE0 = 0000000000000000</action>
            <action>maincpu.mq@9CE8 = 0000000000000000</action>
            <action>maincpu.mq@9CF0 = 0000000000000000</action>
            <action>maincpu.mq@9CF8 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.od@1675 = 01FFFFC3        </action>
            <action>maincpu.md@1675 = FF9D00FF        </action>
            <action>maincpu.mq@9D00 = 47B8E6003AC10021</action>
            <action>maincpu.mq@9D08 = FE35012008FEF928</action>
            <action>maincpu.mq@9D10 = 032001FE34012010</action>
            <action>maincpu.mq@9D18 = 3E052004FE06187E</action>
            <action>maincpu.mq@9D20 = 0000DD18E8003201</action>
            <!--
            9D00 | 21 00 C1 : ld   hl,$C100  // sound code address
            9D03 | 3A 00 E6 : ld   a,($E600) // read input
            9D06 | B8       : cp   b
            9D07 | 47       : ld   b,a
            9D08 | 28 F9    : jr   z,$9D03
            9D0A | FE 08    : cp   $08
            9D0C | 20 01    : jr   nz,$9D0F
            9D0E | 35       : dec  (hl)      // decrease code -01
            9D0F | FE 10    : cp   $10
            9D11 | 20 01    : jr   nz,$9D14
            9D13 | 34       : inc  (hl)      // increase code +01
            9D14 | FE 01    : cp   $01
            9D16 | 20 03    : jr   nz,$9D1B
            9D18 | 7E       : ld   a,(hl)    // play sound
            9D19 | 18 06    : jr   $9D21
            9D1B | FE 04    : cp   $04
            9D1D | 20 05    : jr   nz,$9D24
            9D1F | 3E 01    : ld   a,$01     // stop sound
            9D21 | 32 00 E8 : ld   ($E800),a // send sound code
            9D24 | 18 DD    : jr   $9D03
            -->
        </script>
        <script state="run">
            <output format="----- pinball action sound test mode -----" line="10" align="center" />
            <output format="button 1 : decrease code"                   line="11" align="center" />
            <output format="button 2 : increase code"                   line="12" align="center" />
            <output format="button 3 : play sound"                      line="13" align="center" />
            <output format="button 4 : stop sound"                      line="14" align="center" />
            <output format="----------------------------"               line="15" align="center" />
            <output format="&lt;&lt; sound code %02X &gt;&gt;"          line="17" align="center"  >
                <argument>maincpu.pb@C100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.od@1675 = 01D04021        </action>
            <action>maincpu.md@1675 = 01D04021        </action>
            <action>maincpu.mq@9D00 = 0000000000000000</action>
            <action>maincpu.mq@9D08 = 0000000000000000</action>
            <action>maincpu.mq@9D10 = 0000000000000000</action>
            <action>maincpu.mq@9D18 = 0000000000000000</action>
            <action>maincpu.mq@9D20 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>
pbaction4.xml

Code: Select all

<!-- Pinball Action (set 4, encrypted) -->
<mamecheat version="1">

    <cheat desc="keep a ball">
        <script state="on">
            <action>maincpu.oq@40A5 = FFFF36DDFF77DD3D</action>
            <action>maincpu.mq@40A5 = F507FFFF03FFFFFF</action>
            <action>maincpu.oq@40AD = 0000000000FFFFC3</action>
            <action>maincpu.mq@40AD = FFFFFFFFFF3116FF</action>
            <!--
            40A5 | 3D          : dec  a
            40A6 | DD 77 03    : ld   (ix+$03),a   // set y position
            40A9 | DD 36 07 F5 : ld   (ix+$07),$F5 // set y speed
            40AD | C3 16 31    : jp   $3116
            -->
        </script>
        <script state="off">
            <action>maincpu.oq@40A5 = CDE52BB6CBC80E21</action>
            <action>maincpu.mq@40A5 = 4D4D231E4BC00629</action>
            <action>maincpu.oq@40AD = 4ECBE12D1DCD1804</action>
            <action>maincpu.mq@40AD = 66E3C92D35C51024</action>
        </script>
    </cheat>

    <cheat desc="ball speed (test)">
        <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.od@31DC = 19FFFFCD        </action> <!-- y-position -->
            <action>maincpu.md@31DC = FF9CC0FF        </action>
            <action>maincpu.od@324C = 19FFFFCD        </action> <!-- x-position -->
            <action>maincpu.md@324C = FF9CC5FF        </action>
            <action>maincpu.mq@9CC0 = 0166DD03180366DD</action>
            <action>maincpu.mq@9CC8 = F00816A77AC8B37A</action>
            <action>maincpu.mq@9CD0 = 0000000000C9F816</action>
            <!--
            9CC0 | DD 66 03 : ld   h,(ix+$03) // y position
            9CC3 | 18 03    : jr   $9CC8
            9CC5 | DD 66 01 : ld   h,(ix+$01) // x position
            9CC8 | 7A       : ld   a,d
            9CC9 | B3       : or   e
            9CCA | C8       : ret  z
            9CCB | 7A       : ld   a,d
            9CCC | A7       : and  a
            9CCD | 16 xx    : ld   d,$xx
            9CCF | F0       : ret  p
            9CD0 | 16 xx    : ld   d,$xx
            9CD2 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@9CCE =  param</action>
            <action>maincpu.mb@9CD1 = -param</action>
        </script>
        <script state="off">
            <action>maincpu.od@31DC = 190B66DD        </action>
            <action>maincpu.md@31DC = 91034ED5        </action>
            <action>maincpu.od@324C = 192166DD        </action>
            <action>maincpu.md@324C = 3901E6FD        </action>
            <action>maincpu.mq@9CC0 = 0000000000000000</action>
            <action>maincpu.mq@9CC8 = 0000000000000000</action>
            <action>maincpu.mq@9CD0 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="ball rise by button 3">
        <script state="on">
            <action>maincpu.od@31AC = CBFFFFCD        </action>
            <action>maincpu.md@31AC = FF9CE0FF        </action>
            <action>maincpu.mq@9CE0 = 5EDDE6003AC07021</action>
            <action>maincpu.mq@9CE8 = 20A77E0B2847CB07</action>
            <action>maincpu.mq@9CF0 = C90777DDF83E3409</action>
            <action>maincpu.md@9CF8 = 00000000C97B77AF</action>
            <!--
            9CE0 | 21 70 C0 : ld   hl,$C070
            9CE3 | 3A 00 E6 : ld   a,($E600)
            9CE6 | DD 5E 07 : ld   e,(ix+$07)
            9CE9 | CB 47    : bit  0,a
            9CEB | 28 0B    : jr   z,$9CF8
            9CED | 7E       : ld   a,(hl)
            9CEE | A7       : and  a
            9CEF | 20 09    : jr   nz,$9CFA
            9CF1 | 34       : inc  (hl)
            9CF2 | 3E F8    : ld   a,$F8
            9CF4 | DD 77 07 : ld   (ix+$07),a
            9CF7 | C9       : ret
            9CF8 | AF       : xor  a
            9CF9 | 77       : ld   (hl),a
            9CFA | 7B       : ld   a,e
            9CFB | C9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.od@31AC = CB0F7EDD        </action>
            <action>maincpu.md@31AC = C307FED5        </action>
            <action>maincpu.mq@9CE0 = 0000000000000000</action>
            <action>maincpu.mq@9CE8 = 0000000000000000</action>
            <action>maincpu.mq@9CF0 = 0000000000000000</action>
            <action>maincpu.mq@9CF8 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.od@1675 = 01FFFFC3        </action>
            <action>maincpu.md@1675 = FF9D00FF        </action>
            <action>maincpu.mq@9D00 = 47B8E6003AC10021</action>
            <action>maincpu.mq@9D08 = FE35012008FEF928</action>
            <action>maincpu.mq@9D10 = 032001FE34012010</action>
            <action>maincpu.mq@9D18 = 3E052004FE06187E</action>
            <action>maincpu.mq@9D20 = 0000DD18E8003201</action>
            <!--
            9D00 | 21 00 C1 : ld   hl,$C100  // sound code address
            9D03 | 3A 00 E6 : ld   a,($E600) // read input
            9D06 | B8       : cp   b
            9D07 | 47       : ld   b,a
            9D08 | 28 F9    : jr   z,$9D03
            9D0A | FE 08    : cp   $08
            9D0C | 20 01    : jr   nz,$9D0F
            9D0E | 35       : dec  (hl)      // decrease code -01
            9D0F | FE 10    : cp   $10
            9D11 | 20 01    : jr   nz,$9D14
            9D13 | 34       : inc  (hl)      // increase code +01
            9D14 | FE 01    : cp   $01
            9D16 | 20 03    : jr   nz,$9D1B
            9D18 | 7E       : ld   a,(hl)    // play sound
            9D19 | 18 06    : jr   $9D21
            9D1B | FE 04    : cp   $04
            9D1D | 20 05    : jr   nz,$9D24
            9D1F | 3E 01    : ld   a,$01     // stop sound
            9D21 | 32 00 E8 : ld   ($E800),a // send sound code
            9D24 | 18 DD    : jr   $9D03
            -->
        </script>
        <script state="run">
            <output format="----- pinball action sound test mode -----" line="10" align="center" />
            <output format="button 1 : decrease code"                   line="11" align="center" />
            <output format="button 2 : increase code"                   line="12" align="center" />
            <output format="button 3 : play sound"                      line="13" align="center" />
            <output format="button 4 : stop sound"                      line="14" align="center" />
            <output format="----------------------------"               line="15" align="center" />
            <output format="&lt;&lt; sound code %02X &gt;&gt;"          line="17" align="center"  >
                <argument>maincpu.pb@C100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.od@1675 = 01D04021        </action>
            <action>maincpu.md@1675 = 01D04021        </action>
            <action>maincpu.mq@9D00 = 0000000000000000</action>
            <action>maincpu.mq@9D08 = 0000000000000000</action>
            <action>maincpu.mq@9D10 = 0000000000000000</action>
            <action>maincpu.mq@9D18 = 0000000000000000</action>
            <action>maincpu.mq@9D20 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>
pbactiont.xml

Code: Select all

<!-- Pinball Action (Tecfri license) -->
<mamecheat version="1">

    <cheat desc="keep a ball">
        <script state="on">
            <action>maincpu.mq@40A5 = F50736DD0377DD3D</action>
            <action>maincpu.mq@40AD = 00000000003116C3</action>
            <!--
            40A5 | 3D          : dec  a
            40A6 | DD 77 03    : ld   (ix+$03),a   // set y position
            40A9 | DD 36 07 F5 : ld   (ix+$07),$F5 // set y speed
            40AD | C3 16 31    : jp   $3116
            -->
        </script>
        <script state="off">
            <action>maincpu.mq@40A5 = CDE52BB6CBC00621</action>
            <action>maincpu.mq@40AD = 4ECBE12D35CD1024</action>
        </script>
    </cheat>

    <cheat desc="ball speed (test)">
        <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@31DC = 19A000CD        </action> <!-- y-position -->
            <action>maincpu.md@324C = 19A005CD        </action> <!-- x-position -->
            <action>maincpu.mq@A000 = 0166DD03180366DD</action>
            <action>maincpu.mq@A008 = F00816A77AC8B37A</action>
            <action>maincpu.mq@A010 = 0000000000C9F816</action>
            <!--
            A000 | DD 66 03 : ld   h,(ix+$03) // y position
            A003 | 18 03    : jr   $A008
            A005 | DD 66 01 : ld   h,(ix+$01) // x position
            A008 | 7A       : ld   a,d
            A009 | B3       : or   e
            A00A | C8       : ret  z
            A00B | 7A       : ld   a,d
            A00C | A7       : and  a
            A00D | 16 xx    : ld   d,$xx
            A00F | F0       : ret  p
            A010 | 16 xx    : ld   d,$xx
            A012 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@A00E =  param</action>
            <action>maincpu.mb@A011 = -param</action>
        </script>
        <script state="off">
            <action>maincpu.md@31DC = 190366DD        </action>
            <action>maincpu.md@324C = 190166DD        </action>
            <action>maincpu.mq@A000 = 0000000000000000</action>
            <action>maincpu.mq@A008 = 0000000000000000</action>
            <action>maincpu.mq@A010 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="ball rise by button 3">
        <script state="on">
            <action>maincpu.md@31AC = CBA020CD        </action>
            <action>maincpu.mq@A020 = 5EDDE6003AC07021</action>
            <action>maincpu.mq@A028 = 20A77E0B2847CB07</action>
            <action>maincpu.mq@A030 = C90777DDF83E3409</action>
            <action>maincpu.md@A038 = 00000000C97B77AF</action>
            <!--
            A020 | 21 70 C0 : ld   hl,$C070
            A023 | 3A 00 E6 : ld   a,($E600)
            A026 | DD 5E 07 : ld   e,(ix+$07)
            A029 | CB 47    : bit  0,a
            A02B | 28 0B    : jr   z,$A038
            A02D | 7E       : ld   a,(hl)
            A02E | A7       : and  a
            A02F | 20 09    : jr   nz,$A03A
            A031 | 34       : inc  (hl)
            A032 | 3E F8    : ld   a,$F8
            A034 | DD 77 07 : ld   (ix+$07),a
            A037 | C9       : ret
            A038 | AF       : xor  a
            A039 | 77       : ld   (hl),a
            A03A | 7B       : ld   a,e
            A03B | C9       : ret
            -->
        </script>
        <script state="off">
            <action>maincpu.md@31AC = CB077EDD        </action>
            <action>maincpu.mq@A020 = 0000000000000000</action>
            <action>maincpu.mq@A028 = 0000000000000000</action>
            <action>maincpu.mq@A030 = 0000000000000000</action>
            <action>maincpu.mq@A038 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>reset the game (F3) to enter sound test mode</comment>
        <script state="on">
            <action>maincpu.md@1675 = 01A040C3        </action>
            <action>maincpu.mq@A040 = 47B8E6003AC10021</action>
            <action>maincpu.mq@A048 = FE35012008FEF928</action>
            <action>maincpu.mq@A050 = 032001FE34012010</action>
            <action>maincpu.mq@A058 = 3E052004FE06187E</action>
            <action>maincpu.mq@A060 = 0000DD18E8003201</action>
            <!--
            A040 | 21 00 C1 : ld   hl,$C100  // sound code address
            A043 | 3A 00 E6 : ld   a,($E600) // read input
            A046 | B8       : cp   b
            A047 | 47       : ld   b,a
            A048 | 28 F9    : jr   z,$A043
            A04A | FE 08    : cp   $08
            A04C | 20 01    : jr   nz,$A04F
            A04E | 35       : dec  (hl)      // decrease code -01
            A04F | FE 10    : cp   $10
            A051 | 20 01    : jr   nz,$A054
            A053 | 34       : inc  (hl)      // increase code +01
            A054 | FE 01    : cp   $01
            A056 | 20 03    : jr   nz,$A05B
            A058 | 7E       : ld   a,(hl)    // play sound
            A059 | 18 06    : jr   $A061
            A05B | FE 04    : cp   $04
            A05D | 20 05    : jr   nz,$A064
            A05F | 3E 01    : ld   a,$01     // stop sound
            A061 | 32 00 E8 : ld   ($E800),a // send sound code
            A064 | 18 DD    : jr   $A043
            -->
        </script>
        <script state="run">
            <output format="----- pinball action sound test mode -----" line="10" align="center" />
            <output format="button 1 : decrease code"                   line="11" align="center" />
            <output format="button 2 : increase code"                   line="12" align="center" />
            <output format="button 3 : play sound"                      line="13" align="center" />
            <output format="button 4 : stop sound"                      line="14" align="center" />
            <output format="----------------------------"               line="15" align="center" />
            <output format="&lt;&lt; sound code %02X &gt;&gt;"          line="17" align="center"  >
                <argument>maincpu.pb@C100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.md@1675 = 01D04021        </action>
            <action>maincpu.mq@A040 = 0000000000000000</action>
            <action>maincpu.mq@A048 = 0000000000000000</action>
            <action>maincpu.mq@A050 = 0000000000000000</action>
            <action>maincpu.mq@A058 = 0000000000000000</action>
            <action>maincpu.mq@A060 = 0000000000000000</action>
        </script>
    </cheat>

</mamecheat>
Post Reply