[gemini]+ Gemini Wing
Posted: Sun Jun 09, 2024 3:55 pm
gemini.xml
geminij.xml
geminib.xml
"hidden island finder" : Hidden island called "tecmo-land" appears just before round 6 boss. 50,000 points and "found" message.
Code: Select all
<!-- Gemini Wing (World) -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<action>maincpu.mb@97DA = C9</action>
</script>
<script state="off">
<action>maincpu.mb@97DA = C0</action>
</script>
</cheat>
<cheat desc="auto fire">
<script state="on">
<action>maincpu.mb@27FA = 01</action>
</script>
<script state="off">
<action>maincpu.mb@27FA = 0C</action>
</script>
</cheat>
<cheat desc="player speed">
<parameter>
<item value="0x0080">01 (slow)</item>
<item value="0x0180">02 </item>
<item value="0x0380">03 </item>
<item value="0x0580">04 </item>
<item value="0x0780">05 (fast)</item>
</parameter>
<script state="on">
<action>maincpu.md@20AE = 00B6AFCD </action> <!-- P1 x -->
<action>maincpu.md@20DD = 00B6AFCD </action> <!-- P1 y -->
<action>maincpu.md@215F = 22B6BDCD </action> <!-- P1 balls -->
<action>maincpu.md@24C9 = 00B6D7CD </action> <!-- P2 x -->
<action>maincpu.md@24F8 = 00B6D7CD </action> <!-- P2 y -->
<action>maincpu.md@257A = 22B6E5CD </action> <!-- P2 balls -->
<action>maincpu.mq@B6A0 = AF022010E6C0673A</action>
<action>maincpu.mq@B6A8 = 47C926FEC3003AC9</action>
<action>maincpu.mq@B6B0 = D078000011B6A0CD</action>
<action>maincpu.mq@B6B8 = B6A0CDC9C0145BED</action>
<action>maincpu.mq@B6C0 = C9C0142AD0000021</action>
<action>maincpu.mq@B6C8 = AF022010E6C06A3A</action>
<action>maincpu.mq@B6D0 = 47C926FEC3403AC9</action>
<action>maincpu.mq@B6D8 = D078000011B6C8CD</action>
<action>maincpu.mq@B6E0 = B6C8CDC9C01D5BED</action>
<action>maincpu.mq@B6E8 = C9C01D2AD0000021</action>
<!--
B6A0 | 3A 67 C0 : ld a,($C067) // P1 check routine
B6A3 | E6 10 : and $10
B6A5 | 20 02 : jr nz,$B6A9
B6A7 | AF : xor a
B6A8 | C9 : ret
B6A9 | 3A 00 C3 : ld a,($C300)
B6AC | FE 26 : cp $26
B6AE | C9 : ret
B6AF | 47 : ld b,a // P1 player speed
B6B0 | CD A0 B6 : call $B6A0
B6B3 | 11 xx xx : ld de,$xxxx
B6B6 | 78 : ld a,b
B6B7 | D0 : ret nc
B6B8 | ED 5B 14 C0 : ld de,($C014)
B6BC | C9 : ret
B6BD | CD A0 B6 : call $B6A0 // P1 balls speed
B6C0 | 21 xx xx : ld hl,$xxxx
B6C3 | D0 : ret nc
B6C4 | 2A 14 C0 : ld hl,($C014)
B6C7 | C9 : ret
B6C8 | 3A 6A C0 : ld a,($C06A) // P2 check routine
B6CB | E6 10 : and $10
B6CD | 20 02 : jr nz,$B6D1
B6CF | AF : xor a
B6D0 | C9 : ret
B6D1 | 3A 40 C3 : ld a,($C340)
B6D4 | FE 26 : cp $26
B6D6 | C9 : ret
B6D7 | 47 : ld b,a // P2 player speed
B6D8 | CD C8 B6 : call $B6C8
B6DB | 11 xx xx : ld de,$xxxx
B6DE | 78 : ld a,b
B6DF | D0 : ret nc
B6E0 | ED 5B 1D C0 : ld de,($C01D)
B6E4 | C9 : ret
B6E5 | CD C8 B6 : call $B6C8 // P2 balls speed
B6E8 | 21 xx xx : ld hl,$xxxx
B6EB | D0 : ret nc
B6EC | 2A 1D C0 : ld hl,($C01D)
B6EF | C9 : ret
-->
</script>
<script state="change">
<action>maincpu.mw@B6B4 = param</action>
<action>maincpu.mw@B6C1 = param</action>
<action>maincpu.mw@B6DC = param</action>
<action>maincpu.mw@B6E9 = param</action>
</script>
<script state="off">
<action>maincpu.md@20AE = C0145BED </action>
<action>maincpu.md@20DD = C0145BED </action>
<action>maincpu.md@215F = 22C0142A </action>
<action>maincpu.md@24C9 = C01D5BED </action>
<action>maincpu.md@24F8 = C01D5BED </action>
<action>maincpu.md@257A = 22C01D2A </action>
<action>maincpu.mq@B6A0 = 0000000000000000</action>
<action>maincpu.mq@B6A8 = 0000000000000000</action>
<action>maincpu.mq@B6B0 = 0000000000000000</action>
<action>maincpu.mq@B6B8 = 0000000000000000</action>
<action>maincpu.mq@B6C0 = 0000000000000000</action>
<action>maincpu.mq@B6C8 = 0000000000000000</action>
<action>maincpu.mq@B6D0 = 0000000000000000</action>
<action>maincpu.mq@B6D8 = 0000000000000000</action>
<action>maincpu.mq@B6E0 = 0000000000000000</action>
<action>maincpu.mq@B6E8 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="bullet speed - main shot">
<parameter>
<item value="0x01">01 (slow)</item>
<item value="0x08">02 </item>
<item value="0x0c">03 </item>
<item value="0x10">04 </item>
<item value="0x14">05 (fast)</item>
</parameter>
<script state="change">
<action>maincpu.mb@2812 = param</action>
</script>
<script state="off">
<action>maincpu.mb@2812 = 07</action>
</script>
</cheat>
<cheat desc="hidden island finder">
<comment>hidden island appears just before round 6 boss</comment>
<script state="on">
<action>maincpu.mb@689A = 00</action>
<action>maincpu.mb@68AB = 00</action>
</script>
<script state="off">
<action>maincpu.mb@689A = 27</action>
<action>maincpu.mb@68AB = 16</action>
</script>
</cheat>
<cheat desc="sound test mode">
<comment>reset the game (F3) to enter sound test mode</comment>
<script state="on">
<action>maincpu.mw@0310 = D1D0 </action> <!-- replace cross-hatch with blank -->
<action>maincpu.mw@0324 = B6F0 </action>
<action>maincpu.mq@B6F0 = 0FE6CF083AC10021</action>
<action>maincpu.mq@B6F8 = 0F0F03E6CF093A4F</action>
<action>maincpu.mq@B700 = 2001FEEE2847B8B1</action>
<action>maincpu.mq@B708 = FE34012002FE3501</action>
<action>maincpu.mq@B710 = FE0618F03E042004</action>
<action>maincpu.mq@B718 = 787786103E052008</action>
<action>maincpu.mq@B720 = FE06187E032080FE</action>
<action>maincpu.mq@B728 = C318F7FF3E032040</action>
<!--
B6F0 | 21 00 C1 : ld hl,$C100 // sound code address
B6F3 | 3A 08 CF : ld a,($CF08) // read joystick
B6F6 | E6 0F : and $0F
B6F8 | 4F : ld c,a
B6F9 | 3A 09 CF : ld a,($CF09) // read buttons
B6FC | E6 03 : and $03
B6FE | 0F : rrca
B6FF | 0F : rrca
B700 | B1 : or c
B701 | B8 : cp b
B702 | 47 : ld b,a
B703 | 28 EE : jr z,$B6F3
B705 | FE 01 : cp $01
B707 | 20 01 : jr nz,$B70A
B709 | 35 : dec (hl) // decrease code -01
B70A | FE 02 : cp $02
B70C | 20 01 : jr nz,$B70F
B70E | 34 : inc (hl) // increase code +01
B70F | FE 04 : cp $04
B711 | 20 04 : jr nz,$B717
B713 | 3E F0 : ld a,$F0 // decrease code -10
B715 | 18 06 : jr $B71D
B717 | FE 08 : cp $08
B719 | 20 05 : jr nz,$B720
B71B | 3E 10 : ld a,$10 // increase code +10
B71D | 86 : add a,(hl)
B71E | 77 : ld (hl),a
B71F | 78 : ld a,b
B720 | FE 80 : cp $80
B722 | 20 03 : jr nz,$B727
B724 | 7E : ld a,(hl) // play sound
B725 | 18 06 : jr $B72D
B727 | FE 40 : cp $40
B729 | 20 03 : jr nz,$B72E
B72B | 3E FF : ld a,$FF // stop sound
B72D | F7 : rst $30 // send sound code
B72E | 18 C3 : jr $B6F3
-->
</script>
<script state="run">
<output format="----- gemini wing 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="<< sound code %02X >>" line="19" align="center" >
<argument>maincpu.pb@C100</argument>
</output>
</script>
<script state="off">
<action>maincpu.mw@0310 = 1C00 </action>
<action>maincpu.mw@0324 = 143F </action>
<action>maincpu.mq@B6F0 = 0000000000000000</action>
<action>maincpu.mq@B6F8 = 0000000000000000</action>
<action>maincpu.mq@B700 = 0000000000000000</action>
<action>maincpu.mq@B708 = 0000000000000000</action>
<action>maincpu.mq@B710 = 0000000000000000</action>
<action>maincpu.mq@B718 = 0000000000000000</action>
<action>maincpu.mq@B720 = 0000000000000000</action>
<action>maincpu.mq@B728 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="quick boot">
<script state="on">
<action>maincpu.mb@01D4 = 00</action>
<action>maincpu.mb@01D9 = 00</action>
<action>maincpu.mb@0254 = 00</action>
<action>maincpu.mb@02D5 = 00</action>
<action>maincpu.mb@033D = 00</action>
</script>
<script state="off">
<action>maincpu.mb@01D4 = E4</action>
<action>maincpu.mb@01D9 = DF</action>
<action>maincpu.mb@0254 = D9</action>
<action>maincpu.mb@02D5 = BD</action>
<action>maincpu.mb@033D = E5</action>
</script>
</cheat>
</mamecheat>
Code: Select all
<!-- Gemini Wing (Japan) -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<action>maincpu.mb@97DA = C9</action>
</script>
<script state="off">
<action>maincpu.mb@97DA = C0</action>
</script>
</cheat>
<cheat desc="auto fire">
<script state="on">
<action>maincpu.mb@27FA = 01</action>
</script>
<script state="off">
<action>maincpu.mb@27FA = 0C</action>
</script>
</cheat>
<cheat desc="player speed">
<parameter>
<item value="0x0080">01 (slow)</item>
<item value="0x0180">02 </item>
<item value="0x0380">03 </item>
<item value="0x0580">04 </item>
<item value="0x0780">05 (fast)</item>
</parameter>
<script state="on">
<action>maincpu.md@20AE = 00B6AFCD </action> <!-- P1 x -->
<action>maincpu.md@20DD = 00B6AFCD </action> <!-- P1 y -->
<action>maincpu.md@215F = 22B6BDCD </action> <!-- P1 balls -->
<action>maincpu.md@24C9 = 00B6D7CD </action> <!-- P2 x -->
<action>maincpu.md@24F8 = 00B6D7CD </action> <!-- P2 y -->
<action>maincpu.md@257A = 22B6E5CD </action> <!-- P2 balls -->
<action>maincpu.mq@B6A0 = AF022010E6C0673A</action>
<action>maincpu.mq@B6A8 = 47C926FEC3003AC9</action>
<action>maincpu.mq@B6B0 = D078000011B6A0CD</action>
<action>maincpu.mq@B6B8 = B6A0CDC9C0145BED</action>
<action>maincpu.mq@B6C0 = C9C0142AD0000021</action>
<action>maincpu.mq@B6C8 = AF022010E6C06A3A</action>
<action>maincpu.mq@B6D0 = 47C926FEC3403AC9</action>
<action>maincpu.mq@B6D8 = D078000011B6C8CD</action>
<action>maincpu.mq@B6E0 = B6C8CDC9C01D5BED</action>
<action>maincpu.mq@B6E8 = C9C01D2AD0000021</action>
<!--
B6A0 | 3A 67 C0 : ld a,($C067) // P1 check routine
B6A3 | E6 10 : and $10
B6A5 | 20 02 : jr nz,$B6A9
B6A7 | AF : xor a
B6A8 | C9 : ret
B6A9 | 3A 00 C3 : ld a,($C300)
B6AC | FE 26 : cp $26
B6AE | C9 : ret
B6AF | 47 : ld b,a // P1 player speed
B6B0 | CD A0 B6 : call $B6A0
B6B3 | 11 xx xx : ld de,$xxxx
B6B6 | 78 : ld a,b
B6B7 | D0 : ret nc
B6B8 | ED 5B 14 C0 : ld de,($C014)
B6BC | C9 : ret
B6BD | CD A0 B6 : call $B6A0 // P1 balls speed
B6C0 | 21 xx xx : ld hl,$xxxx
B6C3 | D0 : ret nc
B6C4 | 2A 14 C0 : ld hl,($C014)
B6C7 | C9 : ret
B6C8 | 3A 6A C0 : ld a,($C06A) // P2 check routine
B6CB | E6 10 : and $10
B6CD | 20 02 : jr nz,$B6D1
B6CF | AF : xor a
B6D0 | C9 : ret
B6D1 | 3A 40 C3 : ld a,($C340)
B6D4 | FE 26 : cp $26
B6D6 | C9 : ret
B6D7 | 47 : ld b,a // P2 player speed
B6D8 | CD C8 B6 : call $B6C8
B6DB | 11 xx xx : ld de,$xxxx
B6DE | 78 : ld a,b
B6DF | D0 : ret nc
B6E0 | ED 5B 1D C0 : ld de,($C01D)
B6E4 | C9 : ret
B6E5 | CD C8 B6 : call $B6C8 // P2 balls speed
B6E8 | 21 xx xx : ld hl,$xxxx
B6EB | D0 : ret nc
B6EC | 2A 1D C0 : ld hl,($C01D)
B6EF | C9 : ret
-->
</script>
<script state="change">
<action>maincpu.mw@B6B4 = param</action>
<action>maincpu.mw@B6C1 = param</action>
<action>maincpu.mw@B6DC = param</action>
<action>maincpu.mw@B6E9 = param</action>
</script>
<script state="off">
<action>maincpu.md@20AE = C0145BED </action>
<action>maincpu.md@20DD = C0145BED </action>
<action>maincpu.md@215F = 22C0142A </action>
<action>maincpu.md@24C9 = C01D5BED </action>
<action>maincpu.md@24F8 = C01D5BED </action>
<action>maincpu.md@257A = 22C01D2A </action>
<action>maincpu.mq@B6A0 = 0000000000000000</action>
<action>maincpu.mq@B6A8 = 0000000000000000</action>
<action>maincpu.mq@B6B0 = 0000000000000000</action>
<action>maincpu.mq@B6B8 = 0000000000000000</action>
<action>maincpu.mq@B6C0 = 0000000000000000</action>
<action>maincpu.mq@B6C8 = 0000000000000000</action>
<action>maincpu.mq@B6D0 = 0000000000000000</action>
<action>maincpu.mq@B6D8 = 0000000000000000</action>
<action>maincpu.mq@B6E0 = 0000000000000000</action>
<action>maincpu.mq@B6E8 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="bullet speed - main shot">
<parameter>
<item value="0x01">01 (slow)</item>
<item value="0x08">02 </item>
<item value="0x0c">03 </item>
<item value="0x10">04 </item>
<item value="0x14">05 (fast)</item>
</parameter>
<script state="change">
<action>maincpu.mb@2812 = param</action>
</script>
<script state="off">
<action>maincpu.mb@2812 = 07</action>
</script>
</cheat>
<cheat desc="hidden island finder">
<comment>hidden island appears just before round 6 boss</comment>
<script state="on">
<action>maincpu.mb@689A = 00</action>
<action>maincpu.mb@68AB = 00</action>
</script>
<script state="off">
<action>maincpu.mb@689A = 27</action>
<action>maincpu.mb@68AB = 16</action>
</script>
</cheat>
<cheat desc="sound test mode">
<comment>reset the game (F3) to enter sound test mode</comment>
<script state="on">
<action>maincpu.mw@0310 = D1D0 </action> <!-- replace cross-hatch with blank -->
<action>maincpu.mw@0324 = B6F0 </action>
<action>maincpu.mq@B6F0 = 0FE6CF083AC10021</action>
<action>maincpu.mq@B6F8 = 0F0F03E6CF093A4F</action>
<action>maincpu.mq@B700 = 2001FEEE2847B8B1</action>
<action>maincpu.mq@B708 = FE34012002FE3501</action>
<action>maincpu.mq@B710 = FE0618F03E042004</action>
<action>maincpu.mq@B718 = 787786103E052008</action>
<action>maincpu.mq@B720 = FE06187E032080FE</action>
<action>maincpu.mq@B728 = C318F7FF3E032040</action>
<!--
B6F0 | 21 00 C1 : ld hl,$C100 // sound code address
B6F3 | 3A 08 CF : ld a,($CF08) // read joystick
B6F6 | E6 0F : and $0F
B6F8 | 4F : ld c,a
B6F9 | 3A 09 CF : ld a,($CF09) // read buttons
B6FC | E6 03 : and $03
B6FE | 0F : rrca
B6FF | 0F : rrca
B700 | B1 : or c
B701 | B8 : cp b
B702 | 47 : ld b,a
B703 | 28 EE : jr z,$B6F3
B705 | FE 01 : cp $01
B707 | 20 01 : jr nz,$B70A
B709 | 35 : dec (hl) // decrease code -01
B70A | FE 02 : cp $02
B70C | 20 01 : jr nz,$B70F
B70E | 34 : inc (hl) // increase code +01
B70F | FE 04 : cp $04
B711 | 20 04 : jr nz,$B717
B713 | 3E F0 : ld a,$F0 // decrease code -10
B715 | 18 06 : jr $B71D
B717 | FE 08 : cp $08
B719 | 20 05 : jr nz,$B720
B71B | 3E 10 : ld a,$10 // increase code +10
B71D | 86 : add a,(hl)
B71E | 77 : ld (hl),a
B71F | 78 : ld a,b
B720 | FE 80 : cp $80
B722 | 20 03 : jr nz,$B727
B724 | 7E : ld a,(hl) // play sound
B725 | 18 06 : jr $B72D
B727 | FE 40 : cp $40
B729 | 20 03 : jr nz,$B72E
B72B | 3E FF : ld a,$FF // stop sound
B72D | F7 : rst $30 // send sound code
B72E | 18 C3 : jr $B6F3
-->
</script>
<script state="run">
<output format="----- gemini wing 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="<< sound code %02X >>" line="19" align="center" >
<argument>maincpu.pb@C100</argument>
</output>
</script>
<script state="off">
<action>maincpu.mw@0310 = 1C00 </action>
<action>maincpu.mw@0324 = 143F </action>
<action>maincpu.mq@B6F0 = 0000000000000000</action>
<action>maincpu.mq@B6F8 = 0000000000000000</action>
<action>maincpu.mq@B700 = 0000000000000000</action>
<action>maincpu.mq@B708 = 0000000000000000</action>
<action>maincpu.mq@B710 = 0000000000000000</action>
<action>maincpu.mq@B718 = 0000000000000000</action>
<action>maincpu.mq@B720 = 0000000000000000</action>
<action>maincpu.mq@B728 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="quick boot">
<script state="on">
<action>maincpu.mb@01D4 = 00</action>
<action>maincpu.mb@01D9 = 00</action>
<action>maincpu.mb@0254 = 00</action>
<action>maincpu.mb@02D5 = 00</action>
<action>maincpu.mb@033D = 00</action>
</script>
<script state="off">
<action>maincpu.mb@01D4 = E4</action>
<action>maincpu.mb@01D9 = DF</action>
<action>maincpu.mb@0254 = D9</action>
<action>maincpu.mb@02D5 = BD</action>
<action>maincpu.mb@033D = E5</action>
</script>
</cheat>
</mamecheat>
Code: Select all
<!-- Gemini Wing (bootleg) -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<action>maincpu.mb@97DA = C9</action>
</script>
<script state="off">
<action>maincpu.mb@97DA = C0</action>
</script>
</cheat>
<cheat desc="auto fire">
<script state="on">
<action>maincpu.mb@27FA = 01</action>
</script>
<script state="off">
<action>maincpu.mb@27FA = 0C</action>
</script>
</cheat>
<cheat desc="player speed">
<parameter>
<item value="0x0080">01 (slow)</item>
<item value="0x0180">02 </item>
<item value="0x0380">03 </item>
<item value="0x0580">04 </item>
<item value="0x0780">05 (fast)</item>
</parameter>
<script state="on">
<action>maincpu.md@20AE = 00B6AFCD </action> <!-- P1 x -->
<action>maincpu.md@20DD = 00B6AFCD </action> <!-- P1 y -->
<action>maincpu.md@215F = 22B6BDCD </action> <!-- P1 balls -->
<action>maincpu.md@24C9 = 00B6D7CD </action> <!-- P2 x -->
<action>maincpu.md@24F8 = 00B6D7CD </action> <!-- P2 y -->
<action>maincpu.md@257A = 22B6E5CD </action> <!-- P2 balls -->
<action>maincpu.mq@B6A0 = AF022010E6C0673A</action>
<action>maincpu.mq@B6A8 = 47C926FEC3003AC9</action>
<action>maincpu.mq@B6B0 = D078000011B6A0CD</action>
<action>maincpu.mq@B6B8 = B6A0CDC9C0145BED</action>
<action>maincpu.mq@B6C0 = C9C0142AD0000021</action>
<action>maincpu.mq@B6C8 = AF022010E6C06A3A</action>
<action>maincpu.mq@B6D0 = 47C926FEC3403AC9</action>
<action>maincpu.mq@B6D8 = D078000011B6C8CD</action>
<action>maincpu.mq@B6E0 = B6C8CDC9C01D5BED</action>
<action>maincpu.mq@B6E8 = C9C01D2AD0000021</action>
<!--
B6A0 | 3A 67 C0 : ld a,($C067) // P1 check routine
B6A3 | E6 10 : and $10
B6A5 | 20 02 : jr nz,$B6A9
B6A7 | AF : xor a
B6A8 | C9 : ret
B6A9 | 3A 00 C3 : ld a,($C300)
B6AC | FE 26 : cp $26
B6AE | C9 : ret
B6AF | 47 : ld b,a // P1 player speed
B6B0 | CD A0 B6 : call $B6A0
B6B3 | 11 xx xx : ld de,$xxxx
B6B6 | 78 : ld a,b
B6B7 | D0 : ret nc
B6B8 | ED 5B 14 C0 : ld de,($C014)
B6BC | C9 : ret
B6BD | CD A0 B6 : call $B6A0 // P1 balls speed
B6C0 | 21 xx xx : ld hl,$xxxx
B6C3 | D0 : ret nc
B6C4 | 2A 14 C0 : ld hl,($C014)
B6C7 | C9 : ret
B6C8 | 3A 6A C0 : ld a,($C06A) // P2 check routine
B6CB | E6 10 : and $10
B6CD | 20 02 : jr nz,$B6D1
B6CF | AF : xor a
B6D0 | C9 : ret
B6D1 | 3A 40 C3 : ld a,($C340)
B6D4 | FE 26 : cp $26
B6D6 | C9 : ret
B6D7 | 47 : ld b,a // P2 player speed
B6D8 | CD C8 B6 : call $B6C8
B6DB | 11 xx xx : ld de,$xxxx
B6DE | 78 : ld a,b
B6DF | D0 : ret nc
B6E0 | ED 5B 1D C0 : ld de,($C01D)
B6E4 | C9 : ret
B6E5 | CD C8 B6 : call $B6C8 // P2 balls speed
B6E8 | 21 xx xx : ld hl,$xxxx
B6EB | D0 : ret nc
B6EC | 2A 1D C0 : ld hl,($C01D)
B6EF | C9 : ret
-->
</script>
<script state="change">
<action>maincpu.mw@B6B4 = param</action>
<action>maincpu.mw@B6C1 = param</action>
<action>maincpu.mw@B6DC = param</action>
<action>maincpu.mw@B6E9 = param</action>
</script>
<script state="off">
<action>maincpu.md@20AE = C0145BED </action>
<action>maincpu.md@20DD = C0145BED </action>
<action>maincpu.md@215F = 22C0142A </action>
<action>maincpu.md@24C9 = C01D5BED </action>
<action>maincpu.md@24F8 = C01D5BED </action>
<action>maincpu.md@257A = 22C01D2A </action>
<action>maincpu.mq@B6A0 = 0000000000000000</action>
<action>maincpu.mq@B6A8 = 0000000000000000</action>
<action>maincpu.mq@B6B0 = 0000000000000000</action>
<action>maincpu.mq@B6B8 = 0000000000000000</action>
<action>maincpu.mq@B6C0 = 0000000000000000</action>
<action>maincpu.mq@B6C8 = 0000000000000000</action>
<action>maincpu.mq@B6D0 = 0000000000000000</action>
<action>maincpu.mq@B6D8 = 0000000000000000</action>
<action>maincpu.mq@B6E0 = 0000000000000000</action>
<action>maincpu.mq@B6E8 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="bullet speed - main shot">
<parameter>
<item value="0x01">01 (slow)</item>
<item value="0x08">02 </item>
<item value="0x0c">03 </item>
<item value="0x10">04 </item>
<item value="0x14">05 (fast)</item>
</parameter>
<script state="change">
<action>maincpu.mb@2812 = param</action>
</script>
<script state="off">
<action>maincpu.mb@2812 = 07</action>
</script>
</cheat>
<cheat desc="hidden island finder">
<comment>hidden island appears just before round 6 boss</comment>
<script state="on">
<action>maincpu.mb@689A = 00</action>
<action>maincpu.mb@68AB = 00</action>
</script>
<script state="off">
<action>maincpu.mb@689A = 27</action>
<action>maincpu.mb@68AB = 16</action>
</script>
</cheat>
<cheat desc="sound test mode">
<comment>reset the game (F3) to enter sound test mode</comment>
<script state="on">
<action>maincpu.mw@0310 = D1D0 </action> <!-- replace cross-hatch with blank -->
<action>maincpu.mw@0324 = B6F0 </action>
<action>maincpu.mq@B6F0 = 0FE6CF083AC10021</action>
<action>maincpu.mq@B6F8 = 0F0F03E6CF093A4F</action>
<action>maincpu.mq@B700 = 2001FEEE2847B8B1</action>
<action>maincpu.mq@B708 = FE34012002FE3501</action>
<action>maincpu.mq@B710 = FE0618F03E042004</action>
<action>maincpu.mq@B718 = 787786103E052008</action>
<action>maincpu.mq@B720 = FE06187E032080FE</action>
<action>maincpu.mq@B728 = C318F7FF3E032040</action>
<!--
B6F0 | 21 00 C1 : ld hl,$C100 // sound code address
B6F3 | 3A 08 CF : ld a,($CF08) // read joystick
B6F6 | E6 0F : and $0F
B6F8 | 4F : ld c,a
B6F9 | 3A 09 CF : ld a,($CF09) // read buttons
B6FC | E6 03 : and $03
B6FE | 0F : rrca
B6FF | 0F : rrca
B700 | B1 : or c
B701 | B8 : cp b
B702 | 47 : ld b,a
B703 | 28 EE : jr z,$B6F3
B705 | FE 01 : cp $01
B707 | 20 01 : jr nz,$B70A
B709 | 35 : dec (hl) // decrease code -01
B70A | FE 02 : cp $02
B70C | 20 01 : jr nz,$B70F
B70E | 34 : inc (hl) // increase code +01
B70F | FE 04 : cp $04
B711 | 20 04 : jr nz,$B717
B713 | 3E F0 : ld a,$F0 // decrease code -10
B715 | 18 06 : jr $B71D
B717 | FE 08 : cp $08
B719 | 20 05 : jr nz,$B720
B71B | 3E 10 : ld a,$10 // increase code +10
B71D | 86 : add a,(hl)
B71E | 77 : ld (hl),a
B71F | 78 : ld a,b
B720 | FE 80 : cp $80
B722 | 20 03 : jr nz,$B727
B724 | 7E : ld a,(hl) // play sound
B725 | 18 06 : jr $B72D
B727 | FE 40 : cp $40
B729 | 20 03 : jr nz,$B72E
B72B | 3E FF : ld a,$FF // stop sound
B72D | F7 : rst $30 // send sound code
B72E | 18 C3 : jr $B6F3
-->
</script>
<script state="run">
<output format="----- gemini wing 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="<< sound code %02X >>" line="19" align="center" >
<argument>maincpu.pb@C100</argument>
</output>
</script>
<script state="off">
<action>maincpu.mw@0310 = 1C00 </action>
<action>maincpu.mw@0324 = 143F </action>
<action>maincpu.mq@B6F0 = 0000000000000000</action>
<action>maincpu.mq@B6F8 = 0000000000000000</action>
<action>maincpu.mq@B700 = 0000000000000000</action>
<action>maincpu.mq@B708 = 0000000000000000</action>
<action>maincpu.mq@B710 = 0000000000000000</action>
<action>maincpu.mq@B718 = 0000000000000000</action>
<action>maincpu.mq@B720 = 0000000000000000</action>
<action>maincpu.mq@B728 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="quick boot">
<script state="on">
<action>maincpu.mb@01D4 = 00</action>
<action>maincpu.mb@01D9 = 00</action>
<action>maincpu.mb@0254 = 00</action>
<action>maincpu.mb@02D5 = 00</action>
<action>maincpu.mb@033D = 00</action>
</script>
<script state="off">
<action>maincpu.mb@01D4 = E4</action>
<action>maincpu.mb@01D9 = DF</action>
<action>maincpu.mb@0254 = D9</action>
<action>maincpu.mb@02D5 = BD</action>
<action>maincpu.mb@033D = E5</action>
</script>
</cheat>
</mamecheat>