Page 1 of 1

[saturnzi] Saturn (Zilec)

Posted: Thu Oct 05, 2023 9:46 am
by jman

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="&lt;&lt; sound code %2.2X &gt;&gt;" 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.