sms/bombraid.xml
Code: Select all
<!-- Bomber Raid (World) -->
<mamecheat version="1">
<cheat desc="no hit - player">
<script state="on">
<action>slot:cart:rom.mb@4EC0 = C9</action> <!-- bullet -->
<action>slot:cart:rom.mb@4EE4 = C9</action> <!-- enemy -->
<action>slot:cart:rom.mb@5766 = C9</action> <!-- boss -->
</script>
<script state="off">
<action>slot:cart:rom.mb@4EC0 = C0</action>
<action>slot:cart:rom.mb@4EE4 = B7</action>
<action>slot:cart:rom.mb@5766 = C0</action>
</script>
</cheat>
<cheat desc="no hit - sidefighters">
<script state="on">
<action>slot:cart:rom.mb@5120 = C9</action> <!-- bullet -->
<action>slot:cart:rom.mb@5145 = C9</action> <!-- enemy -->
</script>
<script state="off">
<action>slot:cart:rom.mb@5120 = D0</action>
<action>slot:cart:rom.mb@5145 = C8</action>
</script>
</cheat>
<cheat desc="auto fire">
<script state="on">
<action>slot:cart:rom.mb@2FCA = 0D</action>
</script>
<script state="off">
<action>slot:cart:rom.mb@2FCA = 5B</action>
</script>
</cheat>
<cheat desc="player speed">
<parameter>
<item value="0x01">01 (slow)</item>
<item value="0x02">02 </item>
<item value="0x04">03 </item>
<item value="0x06">04 </item>
<item value="0x08">05 (fast)</item>
</parameter>
<script state="on">
<action>slot:cart:rom.mw@2CCB = 7600 </action>
<action>slot:cart:rom.mq@7600 = 77DD7616CD097EDD</action>
<action>slot:cart:rom.mq@7608 = DD7616CD0B7EDD09</action>
<action>slot:cart:rom.mq@7610 = C8A7C9341BCD0B77</action>
<action>slot:cart:rom.mq@7618 = FFFFC944EDF0003E</action>
<!--
7600 | DD 7E 09 : ld a,(ix+$09) // x position
7603 | CD 16 76 : call $7616
7606 | DD 77 09 : ld (ix+$09),a
7609 | DD 7E 0B : ld a,(ix+$0b) // y position
760C | CD 16 76 : call $7616
760F | DD 77 0B : ld (ix+$0b),a
7612 | CD 1B 34 : call $341B
7615 | C9 : ret
7616 | A7 : and a // common routine
7617 | C8 : ret z
7618 | 3E xx : ld a,$xx
761A | F0 : ret p
761B | ED 44 : neg
761D | C9 : ret
-->
</script>
<script state="change">
<action>slot:cart:rom.mb@7619 = param</action>
</script>
<script state="off">
<action>slot:cart:rom.mw@2CCB = 341B </action>
<action>slot:cart:rom.mq@7600 = FFFFFFFFFFFFFFFF</action>
<action>slot:cart:rom.mq@7608 = FFFFFFFFFFFFFFFF</action>
<action>slot:cart:rom.mq@7610 = FFFFFFFFFFFFFFFF</action>
<action>slot:cart:rom.mq@7618 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="bullet speed - main shot">
<parameter>
<item value="0x06">01 (slow)</item>
<item value="0x0c">02 </item>
<item value="0x12">03 </item>
<item value="0x18">04 </item>
<item value="0x1e">05 (fast)</item>
</parameter>
<script state="on">
<action>slot:cart:rom.mw@3105 = 7620 </action>
<action>slot:cart:rom.mq@7620 = C9341BCD000B36DD</action>
<!--
7620 | DD 36 0B xx : ld (ix+$0b),$xx
7624 | CD 1B 34 : call $341B
7627 | C9 : ret
-->
</script>
<script state="change">
<action>slot:cart:rom.mb@7623 = -param</action>
</script>
<script state="off">
<action>slot:cart:rom.mw@3105 = 341B </action>
<action>slot:cart:rom.mq@7620 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="sound device">
<!-- smsj and sms1krfm only -->
<comment>reset the game (F3) to switch sound device</comment>
<parameter>
<item value="0x0028">PSG</item>
<item value="0x0118">FM </item>
</parameter>
<script state="change">
<action>slot:cart:rom.mw@05AA = param</action>
</script>
<script state="off">
<action>slot:cart:rom.mw@05AA = 0128</action>
</script>
</cheat>
<cheat desc="sound test mode">
<comment>set "skip rom check error" then reset the game (F3)</comment>
<script state="on">
<action>slot:cart:rom.mw@05D0 = 7630 </action>
<action>slot:cart:rom.mq@7630 = 2847B8DCDBC20021</action>
<action>slot:cart:rom.mq@7638 = F7FE350120FBFEFA</action>
<action>slot:cart:rom.mq@7640 = 3E0420FDFE340120</action>
<action>slot:cart:rom.mq@7648 = 3E0520FEFE0618F0</action>
<action>slot:cart:rom.mq@7650 = 0520EFFE78778610</action>
<action>slot:cart:rom.mq@7658 = 20DFFE051880F67E</action>
<action>slot:cart:rom.mq@7660 = FFCC18D00332AF04</action>
<!--
7630 | 21 00 C2 : ld hl,$C200 // sound code address
7633 | DB DC : in a,($DC) // read input
7635 | B8 : cp b
7636 | 47 : ld b,a
7637 | 28 FA : jr z,$7633
7639 | FE FB : cp $FB
763B | 20 01 : jr nz,$763E
763D | 35 : dec (hl) // decrease code -01
763E | FE F7 : cp $F7
7640 | 20 01 : jr nz,$7643
7642 | 34 : inc (hl) // increase code +01
7643 | FE FD : cp $FD
7645 | 20 04 : jr nz,$764B
7647 | 3E F0 : ld a,$F0 // decrease code -10
7649 | 18 06 : jr $7651
764B | FE FE : cp $FE
764D | 20 05 : jr nz,$7654
764F | 3E 10 : ld a,$10 // increase code +10
7651 | 86 : add a,(hl)
7652 | 77 : ld (hl),a
7653 | 78 : ld a,b
7654 | FE EF : cp $EF
7656 | 20 05 : jr nz,$765D
7658 | 7E : ld a,(hl) // play sound
7659 | F6 80 : or $80
765B | 18 05 : jr $7662
765D | FE DF : cp $DF
765F | 20 04 : jr nz,$7665
7661 | AF : xor a // stop sound
7662 | 32 03 D0 : ld ($D003),a // send sound code
7665 | 18 CC : jr $7633
-->
</script>
<script state="run">
<output format="----- 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@C200</argument>
</output>
</script>
<script state="off">
<action>slot:cart:rom.mw@05D0 = 17F8 </action>
<action>slot:cart:rom.mq@7630 = FFFFFFFFFFFFFFFF</action>
<action>slot:cart:rom.mq@7638 = FFFFFFFFFFFFFFFF</action>
<action>slot:cart:rom.mq@7640 = FFFFFFFFFFFFFFFF</action>
<action>slot:cart:rom.mq@7648 = FFFFFFFFFFFFFFFF</action>
<action>slot:cart:rom.mq@7650 = FFFFFFFFFFFFFFFF</action>
<action>slot:cart:rom.mq@7658 = FFFFFFFFFFFFFFFF</action>
<action>slot:cart:rom.mq@7660 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="skip rom check error">
<script state="on">
<!-- detect bios -->
<action> temp0 = 00</action> <!-- initialize flag -->
<action condition="user1.mw@0006 == 0x7d18">temp0 = 01</action>
<action condition="user1.mw@0006 == 0x6518">temp0 = 02</action>
<action condition="user1.mw@0006 == 0x36ff">temp0 = 03</action>
<action condition="user1.mw@0006 == 0x6f18">temp0 = 04</action>
<action condition="user1.mw@0006 == 0x0000">temp0 = 05</action>
<action condition="user1.mw@0006 == 0x0406">temp0 = 06</action>
<action condition="user1.mw@0006 == 0x94cd">temp0 = 07</action>
<!-- US/European BIOS with Alex Kidd ($bef2) -->
<action condition="temp0 == 01">user1.mb@17EF2 = C3</action>
<!-- US/European BIOS v1.3 -->
<action condition="temp0 == 02">user1.mb@00128 = C3</action>
<!-- US/European BIOS v2.4 ($8142) -->
<action condition="temp0 == 03">user1.mb@1C142 = C3</action>
<!-- US/European BIOS v3.4 -->
<action condition="temp0 == 04">user1.mb@0813E = C3</action>
<!-- US/European BIOS v4.4 ($b0b9) -->
<action condition="temp0 == 05">user1.mb@170B9 = C3</action>
<!-- US Master System BIOS v1.0 -->
<action condition="temp0 == 06">user1.mb@00140 = C3</action>
<!-- European/Brazilian BIOS with Sonic -->
<action condition="temp0 == 07">user1.mb@0270E = C3</action>
</script>
<script state="off">
<action condition="temp0 == 01">user1.mb@17EF2 = CA</action>
<action condition="temp0 == 02">user1.mb@00128 = CA</action>
<action condition="temp0 == 03">user1.mb@1C142 = CA</action>
<action condition="temp0 == 04">user1.mb@0813E = CA</action>
<action condition="temp0 == 05">user1.mb@170B9 = CA</action>
<action condition="temp0 == 06">user1.mb@00140 = CA</action>
<action condition="temp0 == 07">user1.mb@0270E = CA</action>
</script>
</cheat>
</mamecheat>
sms/bombraidp.xml
Code: Select all
<!-- Battle Wings (Bomber Raid, prototype) -->
<mamecheat version="1">
<cheat desc="no hit - player">
<script state="on">
<action>slot:cart:rom.mb@3F4B = C9</action> <!-- bullet -->
<action>slot:cart:rom.mb@3F6F = C9</action> <!-- enemy -->
</script>
<script state="off">
<action>slot:cart:rom.mb@3F4B = C0</action>
<action>slot:cart:rom.mb@3F6F = B7</action>
</script>
</cheat>
<cheat desc="no hit - sidefighters">
<script state="on">
<action>slot:cart:rom.mb@417E = C9</action> <!-- bullet -->
<action>slot:cart:rom.mb@41A2 = C9</action> <!-- enemy -->
</script>
<script state="off">
<action>slot:cart:rom.mb@417E = C0</action>
<action>slot:cart:rom.mb@41A2 = C8</action>
</script>
</cheat>
<cheat desc="auto fire">
<script state="on">
<action>slot:cart:rom.mb@2095 = 0D</action>
</script>
<script state="off">
<action>slot:cart:rom.mb@2095 = 5B</action>
</script>
</cheat>
<cheat desc="player speed">
<parameter>
<item value="0x01">01 (slow)</item>
<item value="0x02">02 </item>
<item value="0x04">03 </item>
<item value="0x06">04 </item>
<item value="0x08">05 (fast)</item>
</parameter>
<script state="on">
<action>slot:cart:rom.mw@1D9A = 5C40 </action>
<action>slot:cart:rom.mq@5C40 = 77DD5C56CD097EDD</action>
<action>slot:cart:rom.mq@5C48 = DD5C56CD0B7EDD09</action>
<action>slot:cart:rom.mq@5C50 = C8A7C924E2CD0B77</action>
<action>slot:cart:rom.mq@5C58 = FFFFC944EDF0003E</action>
<!--
5C40 | DD 7E 09 : ld a,(ix+$09) // x position
5C43 | CD 56 5C : call $5C56
5C46 | DD 77 09 : ld (ix+$09),a
5C49 | DD 7E 0B : ld a,(ix+$0b) // y position
5C4C | CD 56 5C : call $5C56
5C4F | DD 77 0B : ld (ix+$0b),a
5C52 | CD E2 24 : call $24E2
5C55 | C9 : ret
5C56 | A7 : and a // common routine
5C57 | C8 : ret z
5C58 | 3E xx : ld a,$xx
5C5A | F0 : ret p
5C5B | ED 44 : neg
5C5D | C9 : ret
-->
</script>
<script state="change">
<action>slot:cart:rom.mb@5C59 = param</action>
</script>
<script state="off">
<action>slot:cart:rom.mw@1D9A = 24E2 </action>
<action>slot:cart:rom.mq@5C40 = FFFFFFFFFFFFFFFF</action>
<action>slot:cart:rom.mq@5C48 = FFFFFFFFFFFFFFFF</action>
<action>slot:cart:rom.mq@5C50 = FFFFFFFFFFFFFFFF</action>
<action>slot:cart:rom.mq@5C58 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="bullet speed - main shot">
<parameter>
<item value="0x06">01 (slow)</item>
<item value="0x0c">02 </item>
<item value="0x12">03 </item>
<item value="0x18">04 </item>
<item value="0x1e">05 (fast)</item>
</parameter>
<script state="on">
<action>slot:cart:rom.mw@21D0 = 5C60 </action>
<action>slot:cart:rom.mq@5C60 = C924E2CD000B36DD</action>
<!--
5C60 | DD 36 0B xx : ld (ix+$0b),$xx
5C64 | CD E2 24 : call $24E2
5C67 | C9 : ret
-->
</script>
<script state="change">
<action>slot:cart:rom.mb@5C63 = -param</action>
</script>
<script state="off">
<action>slot:cart:rom.mw@21D0 = 24E2 </action>
<action>slot:cart:rom.mq@5C60 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="sound device">
<!-- smsj and sms1krfm only -->
<comment>reset the game (F3) to switch sound device</comment>
<parameter>
<item value="0x0028">PSG</item>
<item value="0x0118">FM </item>
</parameter>
<script state="change">
<action>slot:cart:rom.mw@04FF = param</action>
</script>
<script state="off">
<action>slot:cart:rom.mw@04FF = 0128</action>
</script>
</cheat>
<cheat desc="sound test mode">
<comment>set "skip rom check error" then reset the game (F3)</comment>
<script state="on">
<action>slot:cart:rom.mw@0510 = 5C70 </action>
<action>slot:cart:rom.mq@5C70 = 2847B8DCDBC20021</action>
<action>slot:cart:rom.mq@5C78 = F7FE350120FBFEFA</action>
<action>slot:cart:rom.mq@5C80 = 3E0420FDFE340120</action>
<action>slot:cart:rom.mq@5C88 = 3E0520FEFE0618F0</action>
<action>slot:cart:rom.mq@5C90 = 0520EFFE78778610</action>
<action>slot:cart:rom.mq@5C98 = 20DFFE051880F67E</action>
<action>slot:cart:rom.mq@5CA0 = FFCC18D00332AF04</action>
<!--
5C70 | 21 00 C2 : ld hl,$C200 // sound code address
5C73 | DB DC : in a,($DC) // read input
5C75 | B8 : cp b
5C76 | 47 : ld b,a
5C77 | 28 FA : jr z,$5C73
5C79 | FE FB : cp $FB
5C7B | 20 01 : jr nz,$5C7E
5C7D | 35 : dec (hl) // decrease code -01
5C7E | FE F7 : cp $F7
5C80 | 20 01 : jr nz,$5C83
5C82 | 34 : inc (hl) // increase code +01
5C83 | FE FD : cp $FD
5C85 | 20 04 : jr nz,$5C8B
5C87 | 3E F0 : ld a,$F0 // decrease code -10
5C89 | 18 06 : jr $5C91
5C8B | FE FE : cp $FE
5C8D | 20 05 : jr nz,$5C94
5C8F | 3E 10 : ld a,$10 // increase code +10
5C91 | 86 : add a,(hl)
5C92 | 77 : ld (hl),a
5C93 | 78 : ld a,b
5C94 | FE EF : cp $EF
5C96 | 20 05 : jr nz,$5C9D
5C98 | 7E : ld a,(hl) // play sound
5C99 | F6 80 : or $80
5C9B | 18 05 : jr $5CA2
5C9D | FE DF : cp $DF
5C9F | 20 04 : jr nz,$5CA5
5CA1 | AF : xor a // stop sound
5CA2 | 32 03 D0 : ld ($D003),a // send sound code
5CA5 | 18 CC : jr $5C73
-->
</script>
<script state="run">
<output format="----- 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@C200</argument>
</output>
</script>
<script state="off">
<action>slot:cart:rom.mw@0510 = 0BC5 </action>
<action>slot:cart:rom.mq@5C70 = FFFFFFFFFFFFFFFF</action>
<action>slot:cart:rom.mq@5C78 = FFFFFFFFFFFFFFFF</action>
<action>slot:cart:rom.mq@5C80 = FFFFFFFFFFFFFFFF</action>
<action>slot:cart:rom.mq@5C88 = FFFFFFFFFFFFFFFF</action>
<action>slot:cart:rom.mq@5C90 = FFFFFFFFFFFFFFFF</action>
<action>slot:cart:rom.mq@5C98 = FFFFFFFFFFFFFFFF</action>
<action>slot:cart:rom.mq@5CA0 = FFFFFFFFFFFFFFFF</action>
</script>
</cheat>
<cheat desc="skip rom check error">
<script state="on">
<!-- detect bios -->
<action> temp0 = 00</action> <!-- initialize flag -->
<action condition="user1.mw@0006 == 0x7d18">temp0 = 01</action>
<action condition="user1.mw@0006 == 0x6518">temp0 = 02</action>
<action condition="user1.mw@0006 == 0x36ff">temp0 = 03</action>
<action condition="user1.mw@0006 == 0x6f18">temp0 = 04</action>
<action condition="user1.mw@0006 == 0x0000">temp0 = 05</action>
<action condition="user1.mw@0006 == 0x0406">temp0 = 06</action>
<action condition="user1.mw@0006 == 0x94cd">temp0 = 07</action>
<!-- US/European BIOS with Alex Kidd ($bef2) -->
<action condition="temp0 == 01">user1.mb@17EF2 = C3</action>
<!-- US/European BIOS v1.3 -->
<action condition="temp0 == 02">user1.mb@00128 = C3</action>
<!-- US/European BIOS v2.4 ($8142) -->
<action condition="temp0 == 03">user1.mb@1C142 = C3</action>
<!-- US/European BIOS v3.4 -->
<action condition="temp0 == 04">user1.mb@0813E = C3</action>
<!-- US/European BIOS v4.4 ($b0b9) -->
<action condition="temp0 == 05">user1.mb@170B9 = C3</action>
<!-- US Master System BIOS v1.0 -->
<action condition="temp0 == 06">user1.mb@00140 = C3</action>
<!-- European/Brazilian BIOS with Sonic -->
<action condition="temp0 == 07">user1.mb@0270E = C3</action>
</script>
<script state="off">
<action condition="temp0 == 01">user1.mb@17EF2 = CA</action>
<action condition="temp0 == 02">user1.mb@00128 = CA</action>
<action condition="temp0 == 03">user1.mb@1C142 = CA</action>
<action condition="temp0 == 04">user1.mb@0813E = CA</action>
<action condition="temp0 == 05">user1.mb@170B9 = CA</action>
<action condition="temp0 == 06">user1.mb@00140 = CA</action>
<action condition="temp0 == 07">user1.mb@0270E = CA</action>
</script>
</cheat>
</mamecheat>
"no hit" : bombraidp is stuck in the middle of level 1 so that I can't arrive at boss area. And I can't find similar "no hit" routine against boss in this set.