[saturnzi] Saturn (Zilec)
Posted: Thu Oct 05, 2023 9:46 am
Code: Select all
<!-- Saturn -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<!-- upwards view -->
<action>maincpu.mb@142B = C3</action> <!-- bullet -->
<action>maincpu.mb@19DB = C3</action> <!-- enemy -->
<action>maincpu.mb@1D16 = C3</action> <!-- enemy -->
<action>maincpu.mb@2BF4 = C3</action> <!-- meteor -->
<!-- diagonal view -->
<action>maincpu.mb@0EB7 = C3</action> <!-- bullet -->
<action>maincpu.mb@2987 = C3</action> <!-- enemy -->
</script>
<script state="off">
<action>maincpu.mb@142B = D2</action>
<action>maincpu.mb@19DB = D2</action>
<action>maincpu.mb@1D16 = D2</action>
<action>maincpu.mb@2BF4 = D2</action>
<action>maincpu.mb@0EB7 = D2</action>
<action>maincpu.mb@2987 = D2</action>
</script>
</cheat>
<cheat desc="sound test mode (test)">
<!-- 0x10 : credit, 0x41 - 0x63 : sfx, 0x81 - 0x8c and 0xc1 - 0xcc : music -->
<!-- music (0xc1 - 0xcc) doesn't loop -->
<comment>reset the game (F3) to enter sound test mode</comment>
<script state="on">
<action>maincpu.md@2EE4 = 216000C3 </action>
<action>maincpu.mq@6000 = 003AE0003A800021</action>
<action>maincpu.mq@6008 = 2010FEF62847B8C0</action>
<action>maincpu.mq@6010 = FE34012020FE3501</action>
<action>maincpu.mq@6018 = FE0618F03E042080</action>
<action>maincpu.mq@6020 = 787786103E052040</action>
<action>maincpu.mq@6028 = FE05187E032008FE</action>
<action>maincpu.mq@6030 = 18D00032AF042004</action>
<action>maincpu.mq@6038 = 00000000000000CA</action>
<!--
6000 | 21 00 80 : ld hl,$8000 // sound code address
6003 | 3A 00 E0 : ld a,($E000) // watchdog
6006 | 3A 00 C0 : ld a,($C000) // read input
6009 | B8 : cp b
600A | 47 : ld b,a
600B | 28 F6 : jr z,$6003
600D | FE 10 : cp $10
600F | 20 01 : jr nz,$6012
6011 | 35 : dec (hl) // decrease code -01
6012 | FE 20 : cp $20
6014 | 20 01 : jr nz,$6017
6016 | 34 : inc (hl) // increase code +01
6017 | FE 80 : cp $80
6019 | 20 04 : jr nz,$601F
601B | 3E F0 : ld a,$F0 // decrease code -10
601D | 18 06 : jr $6025
601F | FE 40 : cp $40
6021 | 20 05 : jr nz,$6028
6023 | 3E 10 : ld a,$10 // increase code +10
6025 | 86 : add a,(hl)
6026 | 77 : ld (hl),a
6027 | 78 : ld a,b
6028 | FE 08 : cp $08
602A | 20 03 : jr nz,$602F
602C | 7E : ld a,(hl) // play sound
602D | 18 05 : jr $6034
602F | FE 04 : cp $04
6031 | 20 04 : jr nz,$6037
6033 | AF : xor a // stop sound
6034 | 32 00 D0 : ld ($D000),a // send sound code
6037 | 18 CA : jr $6003
-->
<action>audiocpu.mw@039F = 03A1</action> <!-- enable sfx -->
<action>audiocpu.mw@04CB = 0000</action> <!-- reset audiocpu -->
<action>audiocpu.mw@05FD = 05FF</action> <!-- enable music -->
</script>
<script state="run">
<output format="----- saturn 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 %2.2X >>" line="19" align="center" >
<argument>maincpu.pb@8000</argument>
</output>
</script>
<script state="off">
<action> maincpu.md@2EE4 = 21902511 </action>
<action> maincpu.mq@6000 = 0000000000000000</action>
<action> maincpu.mq@6008 = 0000000000000000</action>
<action> maincpu.mq@6010 = 0000000000000000</action>
<action> maincpu.mq@6018 = 0000000000000000</action>
<action> maincpu.mq@6020 = 0000000000000000</action>
<action> maincpu.mq@6028 = 0000000000000000</action>
<action> maincpu.mq@6030 = 0000000000000000</action>
<action> maincpu.mq@6038 = 0000000000000000</action>
<action>audiocpu.mw@039F = 00B6 </action>
<action>audiocpu.mw@04CB = 00B6 </action>
<action>audiocpu.mw@05FD = 00B6 </action>
</script>
</cheat>
<cheat desc="skip rom check">
<script state="on">
<action>maincpu.mb@2EBB = 0D</action>
</script>
<script state="off">
<action>maincpu.mb@2EBB = 17</action>
</script>
</cheat>
</mamecheat>
- "skip rom check" : This game calls rom check routine several times in title screen. So it's better to set this code at all time.
- "sound test mode" : 0x10 : credit, 0x41 - 0x63 : sfx, 0x81 - 0x8c and 0xc1 - 0xcc : music. 0x81 - 0x8c are slow tempo but loop. 0xc1 - 0xcc are normal tempo but no loop.