Page 1 of 1

[goindol]+ Goindol

Posted: Sun Oct 08, 2023 1:26 pm
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>