[goindol]+ Goindol

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

[goindol]+ Goindol

Post by jman »

goindol.xml

Code: Select all

<!-- Goindol (World) -->
<mamecheat version="1">

    <cheat desc="keep a ball">
        <script state="on">
            <action>maincpu.mq@255D = 42C3272BCDC12321</action>
            <action>maincpu.mq@2565 = 2131F6CD1C3E0026</action>
            <!--
            255D | 21 23 C1 : ld   hl,$C123
            2560 | CD 2B 27 : call $272B
            2563 | C3 42 26 : jp   $2642
            2566 | 00       : nop
            -->
        </script>
        <script state="off">
            <action>maincpu.mq@255D = 32013EC11432023E</action>
            <action>maincpu.mq@2565 = 2131F6CD1C3EC168</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@33BF = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@33BF = 2F</action>
        </script>
    </cheat>

    <cheat desc="ball 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@02549 = DD8EF0CD        </action> <!-- x position -->
            <action>maincpu.md@02552 = DD8EF9CD        </action> <!-- y position -->
            <action>maincpu.mq@14EF0 = 808F02CD047EDD47</action>
            <action>maincpu.mq@14EF8 = 8F02CD037EDD47C9</action>
            <action>maincpu.mq@14F00 = EDF0003EC8A7C980</action>
            <action>maincpu.mq@14F08 = 000000000000C944</action>
            <!--
            8EF0 | 47       : ld   b,a        // x-position
            8EF1 | DD 7E 04 : ld   a,(ix+$04)
            8EF4 | CD 02 8F : call $8F02
            8EF7 | 80       : add  a,b
            8EF8 | C9       : ret
            8EF9 | 47       : ld   b,a        // y-position
            8EFA | DD 7E 03 : ld   a,(ix+$03)
            8EFD | CD 02 8F : call $8F02
            8F00 | 80       : add  a,b
            8F01 | C9       : ret
            8F02 | A7       : and  a
            8F03 | C8       : ret  z
            8F04 | 3E xx    : ld   a,$xx
            8F06 | F0       : ret  p
            8F07 | ED 44    : neg
            8F09 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@14F05 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@02549 = DD0486DD        </action>
            <action>maincpu.md@02552 = DD0386DD        </action>
            <action>maincpu.mq@14EF0 = 0000000000000000</action>
            <action>maincpu.mq@14EF8 = 0000000000000000</action>
            <action>maincpu.mq@14F00 = 0000000000000000</action>
            <action>maincpu.mq@14F08 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="ball power-up">
        <script state="on">
            <action>maincpu.mb@2C41 = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@2C41 = 13</action>
        </script>
    </cheat>

    <cheat desc="shot">
        <script state="on">
            <action>maincpu.mb@33AF = B7</action>
        </script>
        <script state="off">
            <action>maincpu.mb@33AF = EF</action>
        </script>
    </cheat>

    <cheat desc="timer speed in bonus stage">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@0B9F = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@0B9F = 3F</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>set &quot;skip rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@01670 = B720C3C81032033E</action>
            <action>maincpu.mq@1F720 = 47B8C8303AC10021</action>
            <action>maincpu.mq@1F728 = FE350120FBFEF928</action>
            <action>maincpu.mq@1F730 = 0420FDFE340120F7</action>
            <action>maincpu.mq@1F738 = 0520FEFE0618F03E</action>
            <action>maincpu.mq@1F740 = 20EFFE787786103E</action>
            <action>maincpu.mq@1F748 = 0520DFFE06187E03</action>
            <action>maincpu.mq@1F750 = 00CC18C800320F3E</action>
            <!--
            1670 | 3E 03    : ld  a,$03
            1672 | 32 10 C8 : ld  ($C810),a // set bank
            1675 | C3 20 B7 : jp  $B720
            ===============================
            B720 | 21 00 C1 : ld  hl,$C100  // sound code address
            B723 | 3A 30 C8 : ld  a,($C830) // read input
            B726 | B8       : cp  b
            B727 | 47       : ld  b,a
            B728 | 28 F9    : jr  z,$B723
            B72A | FE FB    : cp  $FB
            B72C | 20 01    : jr  nz,$B72F
            B72E | 35       : dec (hl)      // decrease code -01
            B72F | FE F7    : cp  $F7
            B731 | 20 01    : jr  nz,$B734
            B733 | 34       : inc (hl)      // increase code +01
            B734 | FE FD    : cp  $FD
            B736 | 20 04    : jr  nz,$B73C
            B738 | 3E F0    : ld  a,$F0     // decrease code -10
            B73A | 18 06    : jr  $B742
            B73C | FE FE    : cp  $FE
            B73E | 20 05    : jr  nz,$B745
            B740 | 3E 10    : ld  a,$10     // increase coee +10
            B742 | 86       : add a,(hl)
            B743 | 77       : ld  (hl),a
            B744 | 78       : ld  a,b
            B745 | FE EF    : cp  $EF
            B747 | 20 03    : jr  nz,$B74C
            B749 | 7E       : ld  a,(hl)    // play sound
            B74A | 18 06    : jr  $B752
            B74C | FE DF    : cp  $DF
            B74E | 20 05    : jr  nz,$B755
            B750 | 3E 0F    : ld  a,$0F     // stop sound
            B752 | 32 00 C8 : ld  ($C800),a // send sound code
            B755 | 18 CC    : jr  $B723
            -->
        </script>
        <script state="run">
            <output format="----- goindol 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@C100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@01670 = 1EC3D805FEC16C3A</action>
            <action>maincpu.mq@1F720 = 0000000000000000</action>
            <action>maincpu.mq@1F728 = 0000000000000000</action>
            <action>maincpu.mq@1F730 = 0000000000000000</action>
            <action>maincpu.mq@1F738 = 0000000000000000</action>
            <action>maincpu.mq@1F740 = 0000000000000000</action>
            <action>maincpu.mq@1F748 = 0000000000000000</action>
            <action>maincpu.mq@1F750 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mb@218D = D3</action>
        </script>
        <script state="off">
            <action>maincpu.mb@218D = D4</action>
        </script>
    </cheat>

</mamecheat>
goindolu.xml

Code: Select all

<!-- Goindol (US) -->
<mamecheat version="1">

    <cheat desc="keep a ball">
        <script state="on">
            <action>maincpu.mq@255D = 42C3272BCDC12321</action>
            <action>maincpu.mq@2565 = 2131F6CD1C3E0026</action>
            <!--
            255D | 21 23 C1 : ld   hl,$C123
            2560 | CD 2B 27 : call $272B
            2563 | C3 42 26 : jp   $2642
            2566 | 00       : nop
            -->
        </script>
        <script state="off">
            <action>maincpu.mq@255D = 32013EC11432023E</action>
            <action>maincpu.mq@2565 = 2131F6CD1C3EC168</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@33BF = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@33BF = 2F</action>
        </script>
    </cheat>

    <cheat desc="ball 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@02549 = DD8EF0CD        </action> <!-- x position -->
            <action>maincpu.md@02552 = DD8EF9CD        </action> <!-- y position -->
            <action>maincpu.mq@14EF0 = 808F02CD047EDD47</action>
            <action>maincpu.mq@14EF8 = 8F02CD037EDD47C9</action>
            <action>maincpu.mq@14F00 = EDF0003EC8A7C980</action>
            <action>maincpu.mq@14F08 = 000000000000C944</action>
            <!--
            8EF0 | 47       : ld   b,a        // x-position
            8EF1 | DD 7E 04 : ld   a,(ix+$04)
            8EF4 | CD 02 8F : call $8F02
            8EF7 | 80       : add  a,b
            8EF8 | C9       : ret
            8EF9 | 47       : ld   b,a        // y-position
            8EFA | DD 7E 03 : ld   a,(ix+$03)
            8EFD | CD 02 8F : call $8F02
            8F00 | 80       : add  a,b
            8F01 | C9       : ret
            8F02 | A7       : and  a
            8F03 | C8       : ret  z
            8F04 | 3E xx    : ld   a,$xx
            8F06 | F0       : ret  p
            8F07 | ED 44    : neg
            8F09 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@14F05 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@02549 = DD0486DD        </action>
            <action>maincpu.md@02552 = DD0386DD        </action>
            <action>maincpu.mq@14EF0 = 0000000000000000</action>
            <action>maincpu.mq@14EF8 = 0000000000000000</action>
            <action>maincpu.mq@14F00 = 0000000000000000</action>
            <action>maincpu.mq@14F08 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="ball power-up">
        <script state="on">
            <action>maincpu.mb@2C41 = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@2C41 = 13</action>
        </script>
    </cheat>

    <cheat desc="shot">
        <script state="on">
            <action>maincpu.mb@33AF = B7</action>
        </script>
        <script state="off">
            <action>maincpu.mb@33AF = EF</action>
        </script>
    </cheat>

    <cheat desc="timer speed in bonus stage">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@0B9F = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@0B9F = 3F</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>set &quot;skip rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@01670 = b720c3c81032033e</action>
            <action>maincpu.mq@1f720 = 47b8c8303ac10021</action>
            <action>maincpu.mq@1f728 = fe350120fbfef928</action>
            <action>maincpu.mq@1f730 = 0420fdfe340120f7</action>
            <action>maincpu.mq@1f738 = 0520fefe0618f03e</action>
            <action>maincpu.mq@1f740 = 20effe787786103e</action>
            <action>maincpu.mq@1f748 = 0520dffe06187e03</action>
            <action>maincpu.mq@1f750 = 00cc18c800320f3e</action>
            <!--
            1670 | 3E 03    : ld  a,$03
            1672 | 32 10 C8 : ld  ($C810),a // set bank
            1675 | C3 20 B7 : jp  $B720
            ===============================
            B720 | 21 00 C1 : ld  hl,$C100  // sound code address
            B723 | 3A 30 C8 : ld  a,($C830) // read input
            B726 | B8       : cp  b
            B727 | 47       : ld  b,a
            B728 | 28 F9    : jr  z,$B723
            B72A | FE FB    : cp  $FB
            B72C | 20 01    : jr  nz,$B72F
            B72E | 35       : dec (hl)      // decrease code -01
            B72F | FE F7    : cp  $F7
            B731 | 20 01    : jr  nz,$B734
            B733 | 34       : inc (hl)      // increase code +01
            B734 | FE FD    : cp  $FD
            B736 | 20 04    : jr  nz,$B73C
            B738 | 3E F0    : ld  a,$F0     // decrease code -10
            B73A | 18 06    : jr  $B742
            B73C | FE FE    : cp  $FE
            B73E | 20 05    : jr  nz,$B745
            B740 | 3E 10    : ld  a,$10     // increase coee +10
            B742 | 86       : add a,(hl)
            B743 | 77       : ld  (hl),a
            B744 | 78       : ld  a,b
            B745 | FE EF    : cp  $EF
            B747 | 20 03    : jr  nz,$B74C
            B749 | 7E       : ld  a,(hl)    // play sound
            B74A | 18 06    : jr  $B752
            B74C | FE DF    : cp  $DF
            B74E | 20 05    : jr  nz,$B755
            B750 | 3E 0F    : ld  a,$0F     // stop sound
            B752 | 32 00 C8 : ld  ($C800),a // send sound code
            B755 | 18 CC    : jr  $B723
            -->
        </script>
        <script state="run">
            <output format="----- goindol 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@C100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@01670 = 1EC3D805FEC16C3A</action>
            <action>maincpu.mq@1F720 = 0000000000000000</action>
            <action>maincpu.mq@1F728 = 0000000000000000</action>
            <action>maincpu.mq@1F730 = 0000000000000000</action>
            <action>maincpu.mq@1F738 = 0000000000000000</action>
            <action>maincpu.mq@1F740 = 0000000000000000</action>
            <action>maincpu.mq@1F748 = 0000000000000000</action>
            <action>maincpu.mq@1F750 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mb@218D = D3</action>
        </script>
        <script state="off">
            <action>maincpu.mb@218D = D4</action>
        </script>
    </cheat>

</mamecheat>
goindolj.xml

Code: Select all

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

    <cheat desc="keep a ball">
        <script state="on">
            <action>maincpu.mq@255D = 42C3272BCDC12321</action>
            <action>maincpu.mq@2565 = 2131F6CD1C3E0026</action>
            <!--
            255D | 21 23 C1 : ld   hl,$C123
            2560 | CD 2B 27 : call $272B
            2563 | C3 42 26 : jp   $2642
            2566 | 00       : nop
            -->
        </script>
        <script state="off">
            <action>maincpu.mq@255D = 32013EC11432023E</action>
            <action>maincpu.mq@2565 = 2131F6CD1C3EC168</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@33BF = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@33BF = 2F</action>
        </script>
    </cheat>

    <cheat desc="ball 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@02549 = DD8EF0CD        </action> <!-- x position -->
            <action>maincpu.md@02552 = DD8EF9CD        </action> <!-- y position -->
            <action>maincpu.mq@14EF0 = 808F02CD047EDD47</action>
            <action>maincpu.mq@14EF8 = 8F02CD037EDD47C9</action>
            <action>maincpu.mq@14F00 = EDF0003EC8A7C980</action>
            <action>maincpu.mq@14F08 = 000000000000C944</action>
            <!--
            8EF0 | 47       : ld   b,a        // x-position
            8EF1 | DD 7E 04 : ld   a,(ix+$04)
            8EF4 | CD 02 8F : call $8F02
            8EF7 | 80       : add  a,b
            8EF8 | C9       : ret
            8EF9 | 47       : ld   b,a        // y-position
            8EFA | DD 7E 03 : ld   a,(ix+$03)
            8EFD | CD 02 8F : call $8F02
            8F00 | 80       : add  a,b
            8F01 | C9       : ret
            8F02 | A7       : and  a
            8F03 | C8       : ret  z
            8F04 | 3E xx    : ld   a,$xx
            8F06 | F0       : ret  p
            8F07 | ED 44    : neg
            8F09 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@14F05 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@02549 = DD0486DD        </action>
            <action>maincpu.md@02552 = DD0386DD        </action>
            <action>maincpu.mq@14EF0 = 0000000000000000</action>
            <action>maincpu.mq@14EF8 = 0000000000000000</action>
            <action>maincpu.mq@14F00 = 0000000000000000</action>
            <action>maincpu.mq@14F08 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="ball power-up">
        <script state="on">
            <action>maincpu.mb@2C41 = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@2C41 = 13</action>
        </script>
    </cheat>

    <cheat desc="shot">
        <script state="on">
            <action>maincpu.mb@33AF = B7</action>
        </script>
        <script state="off">
            <action>maincpu.mb@33AF = EF</action>
        </script>
    </cheat>

    <cheat desc="timer speed in bonus stage">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@0B9F = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@0B9F = 3F</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>set &quot;skip rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@01670 = B720C3C81032033E</action>
            <action>maincpu.mq@1F720 = 47B8C8303AC10021</action>
            <action>maincpu.mq@1F728 = FE350120FBFEF928</action>
            <action>maincpu.mq@1F730 = 0420FDFE340120F7</action>
            <action>maincpu.mq@1F738 = 0520FEFE0618F03E</action>
            <action>maincpu.mq@1F740 = 20EFFE787786103E</action>
            <action>maincpu.mq@1F748 = 0520DFFE06187E03</action>
            <action>maincpu.mq@1F750 = 00CC18C800320F3E</action>
            <!--
            1670 | 3E 03    : ld  a,$03
            1672 | 32 10 C8 : ld  ($C810),a // set bank
            1675 | C3 20 B7 : jp  $B720
            ===============================
            B720 | 21 00 C1 : ld  hl,$C100  // sound code address
            B723 | 3A 30 C8 : ld  a,($C830) // read input
            B726 | B8       : cp  b
            B727 | 47       : ld  b,a
            B728 | 28 F9    : jr  z,$B723
            B72A | FE FB    : cp  $FB
            B72C | 20 01    : jr  nz,$B72F
            B72E | 35       : dec (hl)      // decrease code -01
            B72F | FE F7    : cp  $F7
            B731 | 20 01    : jr  nz,$B734
            B733 | 34       : inc (hl)      // increase code +01
            B734 | FE FD    : cp  $FD
            B736 | 20 04    : jr  nz,$B73C
            B738 | 3E F0    : ld  a,$F0     // decrease code -10
            B73A | 18 06    : jr  $B742
            B73C | FE FE    : cp  $FE
            B73E | 20 05    : jr  nz,$B745
            B740 | 3E 10    : ld  a,$10     // increase coee +10
            B742 | 86       : add a,(hl)
            B743 | 77       : ld  (hl),a
            B744 | 78       : ld  a,b
            B745 | FE EF    : cp  $EF
            B747 | 20 03    : jr  nz,$B74C
            B749 | 7E       : ld  a,(hl)    // play sound
            B74A | 18 06    : jr  $B752
            B74C | FE DF    : cp  $DF
            B74E | 20 05    : jr  nz,$B755
            B750 | 3E 0F    : ld  a,$0F     // stop sound
            B752 | 32 00 C8 : ld  ($C800),a // send sound code
            B755 | 18 CC    : jr  $B723
            -->
        </script>
        <script state="run">
            <output format="----- goindol 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@C100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@01670 = 1EC3D805FEC16C3A</action>
            <action>maincpu.mq@1F720 = 0000000000000000</action>
            <action>maincpu.mq@1F728 = 0000000000000000</action>
            <action>maincpu.mq@1F730 = 0000000000000000</action>
            <action>maincpu.mq@1F738 = 0000000000000000</action>
            <action>maincpu.mq@1F740 = 0000000000000000</action>
            <action>maincpu.mq@1F748 = 0000000000000000</action>
            <action>maincpu.mq@1F750 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mb@218D = D3</action>
        </script>
        <script state="off">
            <action>maincpu.mb@218D = D4</action>
        </script>
    </cheat>

</mamecheat>
homo.xml

Code: Select all

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

    <cheat desc="keep a ball">
        <script state="on">
            <action>maincpu.mq@255D = 42C3272BCDC12321</action>
            <action>maincpu.mq@2565 = 2131F6CD1C3E0026</action>
            <!--
            255D | 21 23 C1 : ld   hl,$C123
            2560 | CD 2B 27 : call $272B
            2563 | C3 42 26 : jp   $2642
            2566 | 00       : nop
            -->
        </script>
        <script state="off">
            <action>maincpu.mq@255D = 32013EC11432023E</action>
            <action>maincpu.mq@2565 = 2131F6CD1C3EC168</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@33BF = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@33BF = 2F</action>
        </script>
    </cheat>

    <cheat desc="ball 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@02549 = DD8EF0CD        </action> <!-- x position -->
            <action>maincpu.md@02552 = DD8EF9CD        </action> <!-- y position -->
            <action>maincpu.mq@14EF0 = 808F02CD047EDD47</action>
            <action>maincpu.mq@14EF8 = 8F02CD037EDD47C9</action>
            <action>maincpu.mq@14F00 = EDF0003EC8A7C980</action>
            <action>maincpu.mq@14F08 = 000000000000C944</action>
            <!--
            8EF0 | 47       : ld   b,a        // x-position
            8EF1 | DD 7E 04 : ld   a,(ix+$04)
            8EF4 | CD 02 8F : call $8F02
            8EF7 | 80       : add  a,b
            8EF8 | C9       : ret
            8EF9 | 47       : ld   b,a        // y-position
            8EFA | DD 7E 03 : ld   a,(ix+$03)
            8EFD | CD 02 8F : call $8F02
            8F00 | 80       : add  a,b
            8F01 | C9       : ret
            8F02 | A7       : and  a
            8F03 | C8       : ret  z
            8F04 | 3E xx    : ld   a,$xx
            8F06 | F0       : ret  p
            8F07 | ED 44    : neg
            8F09 | C9       : ret
            -->
        </script>
        <script state="change">
            <action>maincpu.mb@14F05 = param</action>
        </script>
        <script state="off">
            <action>maincpu.md@02549 = DD0486DD        </action>
            <action>maincpu.md@02552 = DD0386DD        </action>
            <action>maincpu.mq@14EF0 = 0000000000000000</action>
            <action>maincpu.mq@14EF8 = 0000000000000000</action>
            <action>maincpu.mq@14F00 = 0000000000000000</action>
            <action>maincpu.mq@14F08 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="ball power-up">
        <script state="on">
            <action>maincpu.mb@2C41 = 00</action>
        </script>
        <script state="off">
            <action>maincpu.mb@2C41 = 13</action>
        </script>
    </cheat>

    <cheat desc="shot">
        <script state="on">
            <action>maincpu.mb@33AF = B7</action>
        </script>
        <script state="off">
            <action>maincpu.mb@33AF = EF</action>
        </script>
    </cheat>

    <cheat desc="timer speed in bonus stage">
        <parameter>
            <item value="0xff">01 (slow)</item>
            <item value="0x80">02       </item>
            <item value="0x40">03       </item>
            <item value="0x20">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@0B9F = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@0B9F = 3F</action>
        </script>
    </cheat>

    <cheat desc="sound test mode">
        <comment>set &quot;skip rom check&quot; then reset the game (F3)</comment>
        <script state="on">
            <action>maincpu.mq@01670 = B720C3C81032033E</action>
            <action>maincpu.mq@1F720 = 47B8C8303AC10021</action>
            <action>maincpu.mq@1F728 = FE350120FBFEF928</action>
            <action>maincpu.mq@1F730 = 0420FDFE340120F7</action>
            <action>maincpu.mq@1F738 = 0520FEFE0618F03E</action>
            <action>maincpu.mq@1F740 = 20EFFE787786103E</action>
            <action>maincpu.mq@1F748 = 0520DFFE06187E03</action>
            <action>maincpu.mq@1F750 = 00CC18C800320F3E</action>
            <!--
            1670 | 3E 03    : ld  a,$03
            1672 | 32 10 C8 : ld  ($C810),a // set bank
            1675 | C3 20 B7 : jp  $B720
            ===============================
            B720 | 21 00 C1 : ld  hl,$C100  // sound code address
            B723 | 3A 30 C8 : ld  a,($C830) // read input
            B726 | B8       : cp  b
            B727 | 47       : ld  b,a
            B728 | 28 F9    : jr  z,$B723
            B72A | FE FB    : cp  $FB
            B72C | 20 01    : jr  nz,$B72F
            B72E | 35       : dec (hl)      // decrease code -01
            B72F | FE F7    : cp  $F7
            B731 | 20 01    : jr  nz,$B734
            B733 | 34       : inc (hl)      // increase code +01
            B734 | FE FD    : cp  $FD
            B736 | 20 04    : jr  nz,$B73C
            B738 | 3E F0    : ld  a,$F0     // decrease code -10
            B73A | 18 06    : jr  $B742
            B73C | FE FE    : cp  $FE
            B73E | 20 05    : jr  nz,$B745
            B740 | 3E 10    : ld  a,$10     // increase coee +10
            B742 | 86       : add a,(hl)
            B743 | 77       : ld  (hl),a
            B744 | 78       : ld  a,b
            B745 | FE EF    : cp  $EF
            B747 | 20 03    : jr  nz,$B74C
            B749 | 7E       : ld  a,(hl)    // play sound
            B74A | 18 06    : jr  $B752
            B74C | FE DF    : cp  $DF
            B74E | 20 05    : jr  nz,$B755
            B750 | 3E 0F    : ld  a,$0F     // stop sound
            B752 | 32 00 C8 : ld  ($C800),a // send sound code
            B755 | 18 CC    : jr  $B723
            -->
        </script>
        <script state="run">
            <output format="----- homo 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@C100</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mq@01670 = 1EC3D805FEC16C3A</action>
            <action>maincpu.mq@1F720 = 0000000000000000</action>
            <action>maincpu.mq@1F728 = 0000000000000000</action>
            <action>maincpu.mq@1F730 = 0000000000000000</action>
            <action>maincpu.mq@1F738 = 0000000000000000</action>
            <action>maincpu.mq@1F740 = 0000000000000000</action>
            <action>maincpu.mq@1F748 = 0000000000000000</action>
            <action>maincpu.mq@1F750 = 0000000000000000</action>
        </script>
    </cheat>

    <cheat desc="skip rom check">
        <script state="on">
            <action>maincpu.mb@218D = D3</action>
        </script>
        <script state="off">
            <action>maincpu.mb@218D = D4</action>
        </script>
    </cheat>

</mamecheat>
Post Reply