Page 1 of 1

[oscarj2] Psycho-Nics Oscar

Posted: Sun Dec 19, 2021 1:38 pm
by jman

Code: Select all

<cheat desc="no hit">
    <script state="on">
        <action>maincpu.mw@a758 = 1216</action> <!-- enemy -->
        <action>maincpu.mb@a82d =   20</action> <!-- iron ball -->
        <action>maincpu.mb@ac05 =   20</action> <!-- bullet -->
    </script>
    <script state="off">
        <action>maincpu.mw@a758 = 1024</action>
        <action>maincpu.mb@a82d =   24</action>
        <action>maincpu.mb@ac05 =   24</action>
    </script>
</cheat>

<cheat desc="no hit - pcu">
    <script state="on">
        <action>maincpu.mb@a6ec = 20</action> <!-- enemy -->
        <action>maincpu.mb@a71f = 00</action> <!-- iron ball -->
        <action>maincpu.mb@abbb = 20</action> <!-- bullet -->
    </script>
    <script state="off">
        <action>maincpu.mb@a6ec = 24</action>
        <action>maincpu.mb@a71f = ce</action>
        <action>maincpu.mb@abbb = 24</action>
    </script>
</cheat>

<cheat desc="auto fire">
    <script state="on">
        <action>maincpu.mb@96b5 = 01</action> <!-- shot -->
        <action>maincpu.mb@96fd = 19</action> <!-- grenade/missile -->
        <action>maincpu.mb@a30b = 19</action> <!-- pcu 1 -->
        <action>maincpu.mb@a33e = 19</action> <!-- pcu 2 -->
        <action>maincpu.mb@a372 = 19</action> <!-- pcu 3 -->
    </script>
    <script state="off">
        <action>maincpu.mb@96b5 = 18</action>
        <action>maincpu.mb@96fd = 18</action>
        <action>maincpu.mb@a30b = 18</action>
        <action>maincpu.mb@a33e = 18</action>
        <action>maincpu.mb@a372 = 18</action>
    </script>
</cheat>

<cheat desc="multiple jump">
    <script state="on">
        <action>maincpu.mw@8a9f =             fd10</action>
        <action>maincpu.mq@fd10 = 961885202704bd8c</action>
        <action>maincpu.mq@fd18 = 6939bd8ec239ffff</action>
        <!--
        fd10 | 96 18    : LDA  $18
        fd12 | 85 20    : BITA #$20
        fd14 | 27 04    : BEQ  $FD1A
        fd16 | bd 8c 69 : JSR  $8C69
        fd19 | 39       : RTS
        fd1a | bd 8e c2 : JSR  $8EC2
        fd1d | 39       : RTS
        -->
    </script>
    <script state="off">
        <action>maincpu.mw@8a9f =             8ec2</action>
        <action>maincpu.mq@fd10 = ffffffffffffffff</action>
        <action>maincpu.mq@fd18 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="timer speed">
    <parameter>
        <item value="0x7f">01 (slow)</item>
        <item value="0x3f">02       </item>
        <item value="0x1f">03       </item>
        <item value="0x0f">04       </item>
        <item value="0x01">05 (fast)</item>
    </parameter>
    <script state="change">
        <action>maincpu.mb@88f1 = param</action>
    </script>
    <script state="off">
        <action>maincpu.mb@88f1 = 3f</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@808e =             fd20</action>
        <action>maincpu.mq@fd20 = d711f63c00d11127</action>
        <action>maincpu.mq@fd28 = f7c1fb26020a10c1</action>
        <action>maincpu.mq@fd30 = f726020c10c1ef26</action>
        <action>maincpu.mq@fd38 = 0496102006c1df26</action>
        <action>maincpu.mq@fd40 = 058601b73d8020d8</action>
        <!--
        fd20 | d7 11    : STB  $11
        fd22 | f6 3c 00 : LDB  $3C00 // read input
        fd25 | d1 11    : CMPB $11
        fd27 | 27 f7    : BEQ  $FD20
        fd29 | c1 fb    : CMPB #$FB
        fd2b | 26 02    : BNE  $FD2F
        fd2d | 0a 10    : DEC  $10   // decrease code
        fd2f | c1 f7    : CMPB #$F7
        fd31 | 26 02    : BNE  $FD35
        fd33 | 0c 10    : INC  $10   // increase code
        fd35 | c1 ef    : CMPB #$EF
        fd37 | 26 04    : BNE  $FD3D
        fd39 | 96 10    : LDA  $10   // play sound
        fd3b | 20 06    : BRA  $FD43
        fd3d | c1 df    : CMPB #$DF
        fd3f | 26 05    : BNE  $FD46
        fd41 | 86 01    : LDA  #$01  // stop sound
        fd43 | b7 3d 80 : STA  $3D80 // send sound code
        fd46 | 20 d8    : BRA  $FD20
        -->
    </script>
    <script state="run">
        <output format="----- psycho-nics oscar sound test mode -----" line="10" align="center" />
        <output format="left : decrease code"                          line="11" align="center" />
        <output format="right : increase code"                         line="12" align="center" />
        <output format="button 1 : play sound"                         line="13" align="center" />
        <output format="button 2 : stop sound"                         line="14" align="center" />
        <output format="----------------------------"                  line="15" align="center" />
        <output format="&lt;&lt; sound code %2.2X &gt;&gt;"            line="17" align="center">
            <argument>maincpu.pb@0010</argument>
        </output>
    </script>
    <script state="off">
        <action>maincpu.mw@808e =             f45b</action>
        <action>maincpu.mq@fd20 = ffffffffffffffff</action>
        <action>maincpu.mq@fd28 = ffffffffffffffff</action>
        <action>maincpu.mq@fd30 = ffffffffffffffff</action>
        <action>maincpu.mq@fd38 = ffffffffffffffff</action>
        <action>maincpu.mq@fd40 = ffffffffffffffff</action>
    </script>
</cheat>

<cheat desc="skip ram/rom check">
    <script state="on">
        <action>maincpu.mw@8057 = 8059</action>
        <action>    sub.mb@f937 =   39</action>
    </script>
    <script state="off">
        <action>maincpu.mw@8057 = f8f6</action>
        <action>    sub.mb@f937 =   8e</action>
    </script>
</cheat>

[oscarj2] Psycho-Nics Oscar (update)

Posted: Fri Dec 30, 2022 12:39 am
by jman

Code: Select all

<cheat desc="sound test mode">
    <comment>reset the game (F3) to enter sound test mode</comment>
    <script state="on">
        <action>maincpu.mw@808e =             fd20</action>
        <action>maincpu.mq@fd20 = 9711b63c00911127</action>
        <action>maincpu.mq@fd28 = f7d61081fb26015a</action>
        <action>maincpu.mq@fd30 = 81f726015c81fd26</action>
        <action>maincpu.mq@fd38 = 02c01081fe2602cb</action>
        <action>maincpu.mq@fd40 = 10d71081ef270681</action>
        <action>maincpu.mq@fd48 = df2605c601f73d80</action>
        <action>maincpu.mq@fd50 = 20ceffffffffffff</action>
        <!--
        fd20 | 97 11    : STA  $11
        fd22 | b6 3c 00 : LDA  $3C00 // read input
        fd25 | 91 11    : CMPA $11
        fd27 | 27 f7    : BEQ  $FD20
        fd29 | d6 10    : LDB  $10
        fd2b | 81 fb    : CMPA #$FB
        fd2d | 26 01    : BNE  $FD30
        fd2f | 5a       : DECB       // decrease code -01
        fd30 | 81 f7    : CMPA #$F7
        fd32 | 26 01    : BNE  $FD35
        fd34 | 5c       : INCB       // increase code +01
        fd35 | 81 fd    : CMPA #$FD
        fd37 | 26 02    : BNE  $FD3B
        fd39 | c0 10    : SUBB #$10  // decrease code -10
        fd3b | 81 fe    : CMPA #$FE
        fd3d | 26 02    : BNE  $FD41
        fd3f | cb 10    : ADDB #$10  // increase code +10
        fd41 | d7 10    : STB  $10
        fd43 | 81 ef    : CMPA #$EF
        fd45 | 27 06    : BEQ  $FD4D
        fd47 | 81 df    : CMPA #$DF
        fd49 | 26 05    : BNE  $FD50
        fd4b | c6 01    : LDB  #$01  // stop sound
        fd4d | f7 3d 80 : STB  $3D80 // send sound code
        fd50 | 20 ce    : BRA  $FD20
        -->
    </script>
    <script state="run">
        <output format="----- psycho-nics oscar 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@0010</argument>
        </output>
    </script>
    <script state="off">
        <action>maincpu.mw@808e =             f45b</action>
        <action>maincpu.mq@fd20 = ffffffffffffffff</action>
        <action>maincpu.mq@fd28 = ffffffffffffffff</action>
        <action>maincpu.mq@fd30 = ffffffffffffffff</action>
        <action>maincpu.mq@fd38 = ffffffffffffffff</action>
        <action>maincpu.mq@fd40 = ffffffffffffffff</action>
        <action>maincpu.mq@fd48 = ffffffffffffffff</action>
        <action>maincpu.mq@fd50 = ffffffffffffffff</action>
    </script>
</cheat>
"sound test mode" : rewrite routine. add up/down key (code ±10).

[oscar]+ Psycho-Nics Oscar

Posted: Thu Mar 07, 2024 1:21 am
by jman
oscar.xml

Code: Select all

<!-- Psycho-Nics Oscar (World revision 0) -->
<mamecheat version="1">

    <cheat desc="no hit - player">
        <script state="on">
            <action>maincpu.mw@A755 = 1216</action> <!-- enemy -->
            <action>maincpu.mw@A82A = 2054</action> <!-- iron ball -->
            <action>maincpu.mw@AC02 = 205F</action> <!-- bullet -->
        </script>
        <script state="off">
            <action>maincpu.mw@A755 = 1024</action>
            <action>maincpu.mw@A82A = 2454</action>
            <action>maincpu.mw@AC02 = 245F</action>
        </script>
    </cheat>

    <cheat desc="no hit - pcu">
        <script state="on">
            <action>maincpu.mb@A6E9 = 20</action> <!-- enemy -->
            <action>maincpu.mb@A71C = 00</action> <!-- iron ball -->
            <action>maincpu.mb@ABB8 = 20</action> <!-- bullet -->
        </script>
        <script state="off">
            <action>maincpu.mb@A6E9 = 24</action>
            <action>maincpu.mb@A71C = CE</action>
            <action>maincpu.mb@ABB8 = 24</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@96B2 = 01</action> <!-- shot -->
            <action>maincpu.mb@96FA = 19</action> <!-- grenade/missile -->
            <action>maincpu.mb@A308 = 19</action> <!-- pcu 1 -->
            <action>maincpu.mb@A33B = 19</action> <!-- pcu 2 -->
            <action>maincpu.mb@A36F = 19</action> <!-- pcu 3 -->
        </script>
        <script state="off">
            <action>maincpu.mb@96B2 = 18</action>
            <action>maincpu.mb@96FA = 18</action>
            <action>maincpu.mb@A308 = 18</action>
            <action>maincpu.mb@A33B = 18</action>
            <action>maincpu.mb@A36F = 18</action>
        </script>
    </cheat>

    <cheat desc="multiple jump">
        <script state="on">
            <action>maincpu.mw@8A9C = FD10            </action>
            <action>maincpu.mq@FD10 = 961885202704BD8C</action>
            <action>maincpu.mq@FD18 = 6639BD8EBF39FFFF</action>
            <!--
            FD10 | 96 18    : LDA    $18
            FD12 | 85 20    : BITA   #$20
            FD14 | 27 04    : BEQ    $FD1A
            FD16 | BD 8C 66 : JSR    $8C66
            FD19 | 39       : RTS
            FD1A | BD 8E BF : JSR    $8EBF
            FD1D | 39       : RTS
            -->
        </script>
        <script state="off">
            <action>maincpu.mw@8A9C = 8EBF            </action>
            <action>maincpu.mq@FD10 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD18 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0x7f">01 (slow)</item>
            <item value="0x3f">02       </item>
            <item value="0x1f">03       </item>
            <item value="0x0f">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@88EE = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@88EE = 3F</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@808E = FD20            </action>
            <action>maincpu.mq@FD20 = 9701B63C00910127</action>
            <action>maincpu.mq@FD28 = F7D60081FB26015A</action>
            <action>maincpu.mq@FD30 = 81F726015C81FD26</action>
            <action>maincpu.mq@FD38 = 02C01081FE2602CB</action>
            <action>maincpu.mq@FD40 = 10D70081EF270681</action>
            <action>maincpu.mq@FD48 = DF2605C601F73D80</action>
            <action>maincpu.mq@FD50 = 20CEFFFFFFFFFFFF</action>
            <!--
            FD20 | 97 01    : STA    $01
            FD22 | B6 3C 00 : LDA    $3C00 // read input
            FD25 | 91 01    : CMPA   $01
            FD27 | 27 F7    : BEQ    $FD20
            FD29 | D6 00    : LDB    $00
            FD2B | 81 FB    : CMPA   #$FB
            FD2D | 26 01    : BNE    $FD30
            FD2F | 5A       : DECB         // decrease code -01
            FD30 | 81 F7    : CMPA   #$F7
            FD32 | 26 01    : BNE    $FD35
            FD34 | 5C       : INCB         // increase code +01
            FD35 | 81 FD    : CMPA   #$FD
            FD37 | 26 02    : BNE    $FD3B
            FD39 | C0 10    : SUBB   #$10  // decrease code -10
            FD3B | 81 FE    : CMPA   #$FE
            FD3D | 26 02    : BNE    $FD41
            FD3F | CB 10    : ADDB   #$10  // increase code +10
            FD41 | D7 00    : STB    $00
            FD43 | 81 EF    : CMPA   #$EF
            FD45 | 27 06    : BEQ    $FD4D // play sound
            FD47 | 81 DF    : CMPA   #$DF
            FD49 | 26 05    : BNE    $FD50
            FD4B | C6 01    : LDB    #$01  // stop sound
            FD4D | F7 3D 80 : STB    $3D80 // send sound code
            FD50 | 20 CE    : BRA    $FD20
            -->
        </script>
        <script state="run">
            <output format="----- psycho-nics oscar 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 %02X &gt;&gt;"             line="19" align="center"  >
                <argument>maincpu.pb@0000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@808E = F458            </action>
            <action>maincpu.mq@FD20 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD28 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD30 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD38 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD40 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD48 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD50 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action>maincpu.mw@8057 = 8059</action>
            <action>    sub.mb@F937 = 39  </action>
        </script>
        <script state="off">
            <action>maincpu.mw@8057 = F8F3</action>
            <action>    sub.mb@F937 = 8E  </action>
        </script>
    </cheat>

</mamecheat>
oscarbl.xml

Code: Select all

<!-- Psycho-Nics Oscar (World revision 0, bootleg) -->
<mamecheat version="1">

    <cheat desc="no hit - player">
        <script state="on">
            <action>maincpu.mw@A755 = 1216</action> <!-- enemy -->
            <action>maincpu.mw@A82A = 2054</action> <!-- iron ball -->
            <action>maincpu.mw@AC02 = 205F</action> <!-- bullet -->
        </script>
        <script state="off">
            <action>maincpu.mw@A755 = 1024</action>
            <action>maincpu.mw@A82A = 2454</action>
            <action>maincpu.mw@AC02 = 245F</action>
        </script>
    </cheat>

    <cheat desc="no hit - pcu">
        <script state="on">
            <action>maincpu.mb@A6E9 = 20</action> <!-- enemy -->
            <action>maincpu.mb@A71C = 00</action> <!-- iron ball -->
            <action>maincpu.mb@ABB8 = 20</action> <!-- bullet -->
        </script>
        <script state="off">
            <action>maincpu.mb@A6E9 = 24</action>
            <action>maincpu.mb@A71C = CE</action>
            <action>maincpu.mb@ABB8 = 24</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@96B2 = 01</action> <!-- shot -->
            <action>maincpu.mb@96FA = 19</action> <!-- grenade/missile -->
            <action>maincpu.mb@A308 = 19</action> <!-- pcu 1 -->
            <action>maincpu.mb@A33B = 19</action> <!-- pcu 2 -->
            <action>maincpu.mb@A36F = 19</action> <!-- pcu 3 -->
        </script>
        <script state="off">
            <action>maincpu.mb@96B2 = 18</action>
            <action>maincpu.mb@96FA = 18</action>
            <action>maincpu.mb@A308 = 18</action>
            <action>maincpu.mb@A33B = 18</action>
            <action>maincpu.mb@A36F = 18</action>
        </script>
    </cheat>

    <cheat desc="multiple jump">
        <script state="on">
            <action>maincpu.mw@8A9C = FD10            </action>
            <action>maincpu.mq@FD10 = 961885202704BD8C</action>
            <action>maincpu.mq@FD18 = 6639BD8EBF39FFFF</action>
            <!--
            FD10 | 96 18    : LDA    $18
            FD12 | 85 20    : BITA   #$20
            FD14 | 27 04    : BEQ    $FD1A
            FD16 | BD 8C 66 : JSR    $8C66
            FD19 | 39       : RTS
            FD1A | BD 8E BF : JSR    $8EBF
            FD1D | 39       : RTS
            -->
        </script>
        <script state="off">
            <action>maincpu.mw@8A9C = 8EC2            </action>
            <action>maincpu.mq@FD10 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD18 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0x7f">01 (slow)</item>
            <item value="0x3f">02       </item>
            <item value="0x1f">03       </item>
            <item value="0x0f">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@88EE = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@88EE = 3F</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@808E = FD20            </action>
            <action>maincpu.mq@FD20 = 9701B63C00910127</action>
            <action>maincpu.mq@FD28 = F7D60081FB26015A</action>
            <action>maincpu.mq@FD30 = 81F726015C81FD26</action>
            <action>maincpu.mq@FD38 = 02C01081FE2602CB</action>
            <action>maincpu.mq@FD40 = 10D70081EF270681</action>
            <action>maincpu.mq@FD48 = DF2605C601F73D80</action>
            <action>maincpu.mq@FD50 = 20CEFFFFFFFFFFFF</action>
            <!--
            FD20 | 97 01    : STA    $01
            FD22 | B6 3C 00 : LDA    $3C00 // read input
            FD25 | 91 01    : CMPA   $01
            FD27 | 27 F7    : BEQ    $FD20
            FD29 | D6 00    : LDB    $00
            FD2B | 81 FB    : CMPA   #$FB
            FD2D | 26 01    : BNE    $FD30
            FD2F | 5A       : DECB         // decrease code -01
            FD30 | 81 F7    : CMPA   #$F7
            FD32 | 26 01    : BNE    $FD35
            FD34 | 5C       : INCB         // increase code +01
            FD35 | 81 FD    : CMPA   #$FD
            FD37 | 26 02    : BNE    $FD3B
            FD39 | C0 10    : SUBB   #$10  // decrease code -10
            FD3B | 81 FE    : CMPA   #$FE
            FD3D | 26 02    : BNE    $FD41
            FD3F | CB 10    : ADDB   #$10  // increase code +10
            FD41 | D7 00    : STB    $00
            FD43 | 81 EF    : CMPA   #$EF
            FD45 | 27 06    : BEQ    $FD4D // play sound
            FD47 | 81 DF    : CMPA   #$DF
            FD49 | 26 05    : BNE    $FD50
            FD4B | C6 01    : LDB    #$01  // stop sound
            FD4D | F7 3D 80 : STB    $3D80 // send sound code
            FD50 | 20 CE    : BRA    $FD20
            -->
        </script>
        <script state="run">
            <output format="----- psycho-nics oscar 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 %02X &gt;&gt;"             line="19" align="center"  >
                <argument>maincpu.pb@0000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@808E = F458            </action>
            <action>maincpu.mq@FD20 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD28 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD30 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD38 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD40 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD48 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD50 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action>maincpu.mw@8057 = 8059</action>
            <action>    sub.mb@F937 = 39  </action>
        </script>
        <script state="off">
            <action>maincpu.mw@8057 = F8F3</action>
            <action>    sub.mb@F937 = 8E  </action>
        </script>
    </cheat>

</mamecheat>
oscaru.xml

Code: Select all

<!-- Psycho-Nics Oscar (US) -->
<mamecheat version="1">

    <cheat desc="no hit - player">
        <script state="on">
            <action>maincpu.mw@A755 = 1216</action> <!-- enemy -->
            <action>maincpu.mw@A82A = 2054</action> <!-- iron ball -->
            <action>maincpu.mw@AC02 = 205F</action> <!-- bullet -->
        </script>
        <script state="off">
            <action>maincpu.mw@A755 = 1024</action>
            <action>maincpu.mw@A82A = 2454</action>
            <action>maincpu.mw@AC02 = 245F</action>
        </script>
    </cheat>

    <cheat desc="no hit - pcu">
        <script state="on">
            <action>maincpu.mb@A6E9 = 20</action> <!-- enemy -->
            <action>maincpu.mb@A71C = 00</action> <!-- iron ball -->
            <action>maincpu.mb@ABB8 = 20</action> <!-- bullet -->
        </script>
        <script state="off">
            <action>maincpu.mb@A6E9 = 24</action>
            <action>maincpu.mb@A71C = CE</action>
            <action>maincpu.mb@ABB8 = 24</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@96B2 = 01</action> <!-- shot -->
            <action>maincpu.mb@96FA = 19</action> <!-- grenade/missile -->
            <action>maincpu.mb@A308 = 19</action> <!-- pcu 1 -->
            <action>maincpu.mb@A33B = 19</action> <!-- pcu 2 -->
            <action>maincpu.mb@A36F = 19</action> <!-- pcu 3 -->
        </script>
        <script state="off">
            <action>maincpu.mb@96B2 = 18</action>
            <action>maincpu.mb@96FA = 18</action>
            <action>maincpu.mb@A308 = 18</action>
            <action>maincpu.mb@A33B = 18</action>
            <action>maincpu.mb@A36F = 18</action>
        </script>
    </cheat>

    <cheat desc="multiple jump">
        <script state="on">
            <action>maincpu.mw@8A9C = FD20            </action>
            <action>maincpu.mq@FD20 = 961885202704BD8C</action>
            <action>maincpu.mq@FD28 = 6639BD8EBF39FFFF</action>
            <!--
            FD20 | 96 18    : LDA    $18
            FD22 | 85 20    : BITA   #$20
            FD24 | 27 04    : BEQ    $FD2A
            FD26 | BD 8C 66 : JSR    $8C66
            FD29 | 39       : RTS
            FD2A | BD 8E BF : JSR    $8EBF
            FD2D | 39       : RTS
            -->
        </script>
        <script state="off">
            <action>maincpu.mw@8A9C = 8EBF            </action>
            <action>maincpu.mq@FD20 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD28 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0x7f">01 (slow)</item>
            <item value="0x3f">02       </item>
            <item value="0x1f">03       </item>
            <item value="0x0f">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@88EE = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@88EE = 3F</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@808E = FD30            </action>
            <action>maincpu.mq@FD30 = 9701B63C00910127</action>
            <action>maincpu.mq@FD38 = F7D60081FB26015A</action>
            <action>maincpu.mq@FD40 = 81F726015C81FD26</action>
            <action>maincpu.mq@FD48 = 02C01081FE2602CB</action>
            <action>maincpu.mq@FD50 = 10D70081EF270681</action>
            <action>maincpu.mq@FD58 = DF2605C601F73D80</action>
            <action>maincpu.mq@FD60 = 20CEFFFFFFFFFFFF</action>
            <!--
            FD30 | 97 01    : STA    $01
            FD32 | B6 3C 00 : LDA    $3C00 // read input
            FD35 | 91 01    : CMPA   $01
            FD37 | 27 F7    : BEQ    $FD30
            FD39 | D6 00    : LDB    $00
            FD3B | 81 FB    : CMPA   #$FB
            FD3D | 26 01    : BNE    $FD40
            FD3F | 5A       : DECB         // decrease code -01
            FD40 | 81 F7    : CMPA   #$F7
            FD42 | 26 01    : BNE    $FD45
            FD44 | 5C       : INCB         // increase code +01
            FD45 | 81 FD    : CMPA   #$FD
            FD47 | 26 02    : BNE    $FD4B
            FD49 | C0 10    : SUBB   #$10  // decrease code -10
            FD4B | 81 FE    : CMPA   #$FE
            FD4D | 26 02    : BNE    $FD51
            FD4F | CB 10    : ADDB   #$10  // increase code +10
            FD51 | D7 00    : STB    $00
            FD53 | 81 EF    : CMPA   #$EF
            FD55 | 27 06    : BEQ    $FD5D // play sound
            FD57 | 81 DF    : CMPA   #$DF
            FD59 | 26 05    : BNE    $FD60
            FD5B | C6 01    : LDB    #$01  // stop sound
            FD5D | F7 3D 80 : STB    $3D80 // send sound code
            FD60 | 20 CE    : BRA    $FD30
            -->
        </script>
        <script state="run">
            <output format="----- psycho-nics oscar 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 %02X &gt;&gt;"             line="19" align="center"  >
                <argument>maincpu.pb@0000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@808E = F46C            </action>
            <action>maincpu.mq@FD30 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD38 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD40 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD48 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD50 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD58 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD60 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action>maincpu.mw@8057 = 8059</action>
            <action>    sub.mb@FB15 = 39  </action>
        </script>
        <script state="off">
            <action>maincpu.mw@8057 = F902</action>
            <action>    sub.mb@FB15 = 8E  </action>
        </script>
    </cheat>

</mamecheat>
oscarj1.xml

Code: Select all

<!-- Psycho-Nics Oscar (Japan revision 1) -->
<mamecheat version="1">

    <cheat desc="no hit - player">
        <script state="on">
            <action>maincpu.mw@A755 = 1216</action> <!-- enemy -->
            <action>maincpu.mw@A825 = 2050</action> <!-- iron ball -->
            <action>maincpu.mw@ABF9 = 205B</action> <!-- bullet -->
        </script>
        <script state="off">
            <action>maincpu.mw@A755 = 1024</action>
            <action>maincpu.mw@A825 = 2450</action>
            <action>maincpu.mw@ABF9 = 245B</action>
        </script>
    </cheat>

    <cheat desc="no hit - pcu">
        <script state="on">
            <action>maincpu.mb@A6E9 = 20</action> <!-- enemy -->
            <action>maincpu.mb@A71C = 00</action> <!-- iron ball -->
            <action>maincpu.mb@ABAF = 20</action> <!-- bullet -->
        </script>
        <script state="off">
            <action>maincpu.mb@A6E9 = 24</action>
            <action>maincpu.mb@A71C = CE</action>
            <action>maincpu.mb@ABAF = 24</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@96B2 = 01</action> <!-- shot -->
            <action>maincpu.mb@96FA = 19</action> <!-- grenade/missile -->
            <action>maincpu.mb@A308 = 19</action> <!-- pcu 1 -->
            <action>maincpu.mb@A33B = 19</action> <!-- pcu 2 -->
            <action>maincpu.mb@A36F = 19</action> <!-- pcu 3 -->
        </script>
        <script state="off">
            <action>maincpu.mb@96B2 = 18</action>
            <action>maincpu.mb@96FA = 18</action>
            <action>maincpu.mb@A308 = 18</action>
            <action>maincpu.mb@A33B = 18</action>
            <action>maincpu.mb@A36F = 18</action>
        </script>
    </cheat>

    <cheat desc="multiple jump">
        <script state="on">
            <action>maincpu.mw@8A9C = FD00            </action>
            <action>maincpu.mq@FD00 = 961885202704BD8C</action>
            <action>maincpu.mq@FD08 = 6639BD8EBF39FFFF</action>
            <!--
            FD00 | 96 18    : LDA    $18
            FD02 | 85 20    : BITA   #$20
            FD04 | 27 04    : BEQ    $FD0A
            FD06 | BD 8C 66 : JSR    $8C66
            FD09 | 39       : RTS
            FD0A | BD 8E BF : JSR    $8EBF
            FD0D | 39       : RTS
            -->
        </script>
        <script state="off">
            <action>maincpu.mw@8A9C = 8EBF            </action>
            <action>maincpu.mq@FD00 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD08 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0x7f">01 (slow)</item>
            <item value="0x3f">02       </item>
            <item value="0x1f">03       </item>
            <item value="0x0f">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@88EE = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@88EE = 3F</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@808E = FD10            </action>
            <action>maincpu.mq@FD10 = 9701B63C00910127</action>
            <action>maincpu.mq@FD18 = F7D60081FB26015A</action>
            <action>maincpu.mq@FD20 = 81F726015C81FD26</action>
            <action>maincpu.mq@FD28 = 02C01081FE2602CB</action>
            <action>maincpu.mq@FD30 = 10D70081EF270681</action>
            <action>maincpu.mq@FD38 = DF2605C601F73D80</action>
            <action>maincpu.mq@FD40 = 20CEFFFFFFFFFFFF</action>
            <!--
            FD10 | 97 01    : STA    $01
            FD12 | B6 3C 00 : LDA    $3C00 // read input
            FD15 | 91 01    : CMPA   $01
            FD17 | 27 F7    : BEQ    $FD10
            FD19 | D6 00    : LDB    $00
            FD1B | 81 FB    : CMPA   #$FB
            FD1D | 26 01    : BNE    $FD20
            FD1F | 5A       : DECB         // decrease code -01
            FD20 | 81 F7    : CMPA   #$F7
            FD22 | 26 01    : BNE    $FD25
            FD24 | 5C       : INCB         // increase code +01
            FD25 | 81 FD    : CMPA   #$FD
            FD27 | 26 02    : BNE    $FD2B
            FD29 | C0 10    : SUBB   #$10  // decrease code -10
            FD2B | 81 FE    : CMPA   #$FE
            FD2D | 26 02    : BNE    $FD31
            FD2F | CB 10    : ADDB   #$10  // increase code +10
            FD31 | D7 00    : STB    $00
            FD33 | 81 EF    : CMPA   #$EF
            FD35 | 27 06    : BEQ    $FD3D // play sound
            FD37 | 81 DF    : CMPA   #$DF
            FD39 | 26 05    : BNE    $FD40
            FD3B | C6 01    : LDB    #$01  // stop sound
            FD3D | F7 3D 80 : STB    $3D80 // send sound code
            FD40 | 20 CE    : BRA    $FD10
            -->
        </script>
        <script state="run">
            <output format="----- psycho-nics oscar 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 %02X &gt;&gt;"             line="19" align="center"  >
                <argument>maincpu.pb@0000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@808E = F44B            </action>
            <action>maincpu.mq@FD10 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD18 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD20 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD28 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD30 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD38 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD40 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action>maincpu.mw@8057 = 8059</action>
            <action>    sub.mb@F937 = 39  </action>
        </script>
        <script state="off">
            <action>maincpu.mw@8057 = F8E6</action>
            <action>    sub.mb@F937 = 8E  </action>
        </script>
    </cheat>

</mamecheat>
oscarj2.xml

Code: Select all

<!-- Psycho-Nics Oscar (Japan revision 2) -->
<mamecheat version="1">

    <cheat desc="no hit - player">
        <script state="on">
            <action>maincpu.mw@A758 = 1216</action> <!-- enemy -->
            <action>maincpu.mw@A82D = 2054</action> <!-- iron ball -->
            <action>maincpu.mw@AC05 = 205F</action> <!-- bullet -->
        </script>
        <script state="off">
            <action>maincpu.mw@A758 = 1024</action>
            <action>maincpu.mw@A82D = 2454</action>
            <action>maincpu.mw@AC05 = 245F</action>
        </script>
    </cheat>

    <cheat desc="no hit - pcu">
        <script state="on">
            <action>maincpu.mb@A6EC = 20</action> <!-- enemy -->
            <action>maincpu.mb@A71F = 00</action> <!-- iron ball -->
            <action>maincpu.mb@ABBB = 20</action> <!-- bullet -->
        </script>
        <script state="off">
            <action>maincpu.mb@A6EC = 24</action>
            <action>maincpu.mb@A71F = CE</action>
            <action>maincpu.mb@ABBB = 24</action>
        </script>
    </cheat>

    <cheat desc="auto fire">
        <script state="on">
            <action>maincpu.mb@96B5 = 01</action> <!-- shot -->
            <action>maincpu.mb@96FD = 19</action> <!-- grenade/missile -->
            <action>maincpu.mb@A30B = 19</action> <!-- pcu 1 -->
            <action>maincpu.mb@A33E = 19</action> <!-- pcu 2 -->
            <action>maincpu.mb@A372 = 19</action> <!-- pcu 3 -->
        </script>
        <script state="off">
            <action>maincpu.mb@96B5 = 18</action>
            <action>maincpu.mb@96FD = 18</action>
            <action>maincpu.mb@A30B = 18</action>
            <action>maincpu.mb@A33E = 18</action>
            <action>maincpu.mb@A372 = 18</action>
        </script>
    </cheat>

    <cheat desc="multiple jump">
        <script state="on">
            <action>maincpu.mw@8A9F = FD10            </action>
            <action>maincpu.mq@FD10 = 961885202704BD8C</action>
            <action>maincpu.mq@FD18 = 6939BD8EC239FFFF</action>
            <!--
            FD10 | 96 18    : LDA    $18
            FD12 | 85 20    : BITA   #$20
            FD14 | 27 04    : BEQ    $FD1A
            FD16 | BD 8C 69 : JSR    $8C69
            FD19 | 39       : RTS
            FD1A | BD 8E C2 : JSR    $8EC2
            FD1D | 39       : RTS
            -->
        </script>
        <script state="off">
            <action>maincpu.mw@8A9F = 8EC2            </action>
            <action>maincpu.mq@FD10 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD18 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="timer speed">
        <parameter>
            <item value="0x7f">01 (slow)</item>
            <item value="0x3f">02       </item>
            <item value="0x1f">03       </item>
            <item value="0x0f">04       </item>
            <item value="0x01">05 (fast)</item>
        </parameter>
        <script state="change">
            <action>maincpu.mb@88F1 = param</action>
        </script>
        <script state="off">
            <action>maincpu.mb@88F1 = 3F</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@808E = FD20            </action>
            <action>maincpu.mq@FD20 = 9701B63C00910127</action>
            <action>maincpu.mq@FD28 = F7D60081FB26015A</action>
            <action>maincpu.mq@FD30 = 81F726015C81FD26</action>
            <action>maincpu.mq@FD38 = 02C01081FE2602CB</action>
            <action>maincpu.mq@FD40 = 10D70081EF270681</action>
            <action>maincpu.mq@FD48 = DF2605C601F73D80</action>
            <action>maincpu.mq@FD50 = 20CEFFFFFFFFFFFF</action>
            <!--
            FD20 | 97 01    : STA    $01
            FD22 | B6 3C 00 : LDA    $3C00 // read input
            FD25 | 91 01    : CMPA   $01
            FD27 | 27 F7    : BEQ    $FD20
            FD29 | D6 00    : LDB    $00
            FD2B | 81 FB    : CMPA   #$FB
            FD2D | 26 01    : BNE    $FD30
            FD2F | 5A       : DECB         // decrease code -01
            FD30 | 81 F7    : CMPA   #$F7
            FD32 | 26 01    : BNE    $FD35
            FD34 | 5C       : INCB         // increase code +01
            FD35 | 81 FD    : CMPA   #$FD
            FD37 | 26 02    : BNE    $FD3B
            FD39 | C0 10    : SUBB   #$10  // decrease code -10
            FD3B | 81 FE    : CMPA   #$FE
            FD3D | 26 02    : BNE    $FD41
            FD3F | CB 10    : ADDB   #$10  // increase code +10
            FD41 | D7 00    : STB    $00
            FD43 | 81 EF    : CMPA   #$EF
            FD45 | 27 06    : BEQ    $FD4D // play sound
            FD47 | 81 DF    : CMPA   #$DF
            FD49 | 26 05    : BNE    $FD50
            FD4B | C6 01    : LDB    #$01  // stop sound
            FD4D | F7 3D 80 : STB    $3D80 // send sound code
            FD50 | 20 CE    : BRA    $FD20
            -->
        </script>
        <script state="run">
            <output format="----- psycho-nics oscar 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 %02X &gt;&gt;"             line="19" align="center"  >
                <argument>maincpu.pb@0000</argument>
            </output>
        </script>
        <script state="off">
            <action>maincpu.mw@808E = F45B            </action>
            <action>maincpu.mq@FD20 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD28 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD30 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD38 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD40 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD48 = FFFFFFFFFFFFFFFF</action>
            <action>maincpu.mq@FD50 = FFFFFFFFFFFFFFFF</action>
        </script>
    </cheat>

    <cheat desc="skip ram/rom check">
        <script state="on">
            <action>maincpu.mw@8057 = 8059</action>
            <action>    sub.mb@F937 = 39  </action>
        </script>
        <script state="off">
            <action>maincpu.mw@8057 = F8F6</action>
            <action>    sub.mb@F937 = 8E  </action>
        </script>
    </cheat>

</mamecheat>