Page 1 of 1
[psychic5j] Psychic 5
Posted: Mon Dec 07, 2020 10:30 am
by jman
First of all, this game has in-game rom check so that the following codes causes game crash unless you use together with "skip in-game rom error" code.
Code: Select all
<cheat desc="no hit">
<script state="on">
<action>maincpu.mb@4b2d = 18</action> <!-- enemy -->
<action>maincpu.mb@2d72 = c9</action> <!-- flame -->
<action>maincpu.mb@5992 = 18</action> <!-- fire ball -->
<action>maincpu.mb@1ec8 = 18</action> <!-- pressed foot -->
<action>maincpu.mb@1e58 = 18</action> <!-- pressed left body -->
<action>maincpu.mb@1f35 = 18</action> <!-- pressed head -->
<action>maincpu.mb@1e8D = 18</action> <!-- pressed right body -->
</script>
<script state="off">
<action>maincpu.mb@4b2d = 30</action>
<action>maincpu.mb@2d72 = c0</action>
<action>maincpu.mb@5992 = 30</action>
<action>maincpu.mb@1ec8 = 28</action>
<action>maincpu.mb@1e58 = 28</action>
<action>maincpu.mb@1f35 = 28</action>
<action>maincpu.mb@1e8D = 28</action>
</script>
</cheat>
<cheat desc="auto fire">
<script state="on">
<action>maincpu.mb@13b0 = 83</action>
<action>maincpu.mb@13b4 = 28</action>
</script>
<script state="off">
<action>maincpu.mb@13b0 = 82</action>
<action>maincpu.mb@13b4 = 20</action>
</script>
</cheat>
<cheat desc="attack speed up">
<script state="on">
<action>maincpu.mb@1402 = 00</action>
</script>
<script state="off">
<action>maincpu.mb@1402 = 30</action>
</script>
</cheat>
<cheat desc="multiple jump">
<script state="on">
<action>maincpu.md@1493 = 0f7000cd</action>
<action>maincpu.mq@7000 = 3e032867cbfc823a</action>
<action>maincpu.mq@7008 = 0000c9fa013ac901</action>
<!--
1493 | cd 00 70 : call $7000
7000 | 3a 82 fc : ld a,($fc82)
7003 | cb 67 : bit 4,a
7005 | 28 03 : jr z,$700a
7007 | 3e 01 : ld a,$01
7009 | c9 : ret
700A | 3a 01 fa : ld a,($fa01)
700D | c9 : ret
-->
</script>
<script state="off">
<action>maincpu.md@1493 = 0ffa013a</action>
<action>maincpu.mq@7000 = 0000000000000000</action>
<action>maincpu.mq@7008 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="skip in-game rom error">
<script state="on">
<action>maincpu.mw@05d8 = 05da</action>
</script>
<script state="off">
<action>maincpu.mw@05d8 = 0000</action>
</script>
</cheat>
[psychic5j] update
Posted: Sun Jun 13, 2021 1:18 pm
by jman
Update. Added "walk speed", "easy break iron wall" and "sound test mode".
Code: Select all
<cheat desc="walk speed">
<parameter min="0x01" max="0x05" step="0x01" />
<script state="on">
<action>maincpu.md@148a = 32000021</action>
</script>
<script state="change">
<action>maincpu.mb@148c = param</action>
</script>
<script state="off">
<action>maincpu.md@148a = 32190016</action>
</script>
</cheat>
<cheat desc="easy break iron wall">
<script state="on">
<action>maincpu.mb@2c95 = 00</action>
</script>
<script state="off">
<action>maincpu.mb@2c95 = c0</action>
</script>
</cheat>
<cheat desc="sound test mode">
<comment>reset the game (F3) to enter sound test mode</comment>
<script state="on">
<action>maincpu.md@042c = c16d20c3</action>
<action>maincpu.mq@6d20 = e112becde5000021</action>
<action>maincpu.mq@6d28 = fef4286fbde10022</action>
<action>maincpu.mq@6d30 = 0120fefe250120fd</action>
<action>maincpu.mq@6d38 = 06184c0320dffe24</action>
<action>maincpu.mq@6d40 = 19cd000e0520effe</action>
<action>maincpu.mq@6d48 = 0000000000d8186c</action>
<!--
6d20 | 21 00 00 : ld hl,$0000 // initialize sound and input values
6d23 | e5 : push hl
6d24 | cd be 12 : call $12be // read input
6d27 | e1 : pop hl
6d28 | 22 00 e1 : ld ($e100),hl
6d2b | bd : cp $fd
6d2c | 6f : ld l,a
6d2d | 28 f4 : jr z,$6d23
6d2f | fe fd : cp $fd
6d31 | 20 01 : jr nz,$6d34
6d33 | 25 : dec h // pressed left - code decrement
6d34 | fe fe : cp $fe
6d36 | 20 01 : jr nz,$6d39
6d38 | 24 : inc h // pressed right - code increment
6d39 | fe df : cp $df
6d3b | 20 03 : jr nz,$6d46
6d3d | 4c : ld c,h // pressed button 1 - play sound
6d3e | 18 06 : jr $6d46
6d40 | fe ef : cp $ef
6d42 | 20 05 : jr nz,$6d49
6d44 | 0e 00 : ld c,$00 // pressed button 2 - stop sound
6d46 | cd 19 6c : call $6c19 // send sound code
6d49 | 18 d8 : jr $6d23
-->
</script>
<script state="run">
<output format="----- psychic 5 sound test mode -----" line="10" align="center" />
<output format="left : code decrement" line="11" align="center" />
<output format="right : code increment" 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="<< sound code %2.2X >>" line="17" align="center">
<argument>maincpu.pb@e101</argument>
</output>
</script>
<script state="off">
<action>maincpu.md@042c = c1010b3e</action>
<action>maincpu.mq@6d20 = 0000000000000000</action>
<action>maincpu.mq@6d28 = 0000000000000000</action>
<action>maincpu.mq@6d30 = 0000000000000000</action>
<action>maincpu.mq@6d38 = 0000000000000000</action>
<action>maincpu.mq@6d40 = 0000000000000000</action>
<action>maincpu.mq@6d48 = 0000000000000000</action>
</script>
</cheat>
I don't know "sound test mode" is affected by in-game rom check.
[psychic5j] Psychic 5 (update)
Posted: Sat Oct 29, 2022 8:19 am
by jman
Code: Select all
<cheat desc="multiple jump">
<script state="on">
<action>maincpu.md@1493 = 0f6d20cd</action>
<action>maincpu.mq@6d20 = c0013e67cbfc823a</action>
<action>maincpu.mq@6d28 = 00000000c9fa013a</action>
<!--
6d20 | 3a 82 fc : ld a,($FC82)
6d23 | cb 67 : bit 4,a
6d25 | 3e 01 : ld a,$01
6d27 | c0 : ret nz
6d28 | 3a 01 fa : ld a,($FA01)
6d2b | c9 : ret
-->
</script>
<script state="off">
<action>maincpu.md@1493 = 0ffa013a</action>
<action>maincpu.mq@6d20 = 0000000000000000</action>
<action>maincpu.mq@6d28 = 0000000000000000</action>
</script>
</cheat>
"multiple jump" : rewrite routine. reallocate address.
Code: Select all
<cheat desc="sound test mode">
<comment>reset the game (F3) to enter sound test mode</comment>
<script state="on">
<action>maincpu.md@042c = c16d30c3</action>
<action>maincpu.mq@6d30 = 57bae1002112becd</action>
<action>maincpu.mq@6d38 = fe350120fdfef628</action>
<action>maincpu.mq@6d40 = 0420fbfe340120fe</action>
<action>maincpu.mq@6d48 = 0520f7fe0618f03e</action>
<action>maincpu.mq@6d50 = 20dffe7a7786103e</action>
<action>maincpu.mq@6d58 = 0520effe06184e03</action>
<action>maincpu.mq@6d60 = 00c9186c19cd000e</action>
<!--
6d30 | cd be 12 : call $12BE // read input
6d33 | 21 00 e1 : ld hl,$E100 // sound code address
6d36 | ba : cp d
6d37 | 57 : ld d,a
6d38 | 28 f6 : jr z,$6D30
6d3a | fe fd : cp $FD
6d3c | 20 01 : jr nz,$6D3F
6d3e | 35 : dec (hl) // decrease code -01
6d3f | fe fe : cp $FE
6d41 | 20 01 : jr nz,$6D44
6d43 | 34 : inc (hl) // increase code +01
6d44 | fe fb : cp $FB
6d46 | 20 04 : jr nz,$6D4C
6d48 | 3e f0 : ld a,$F0 // decrease code -10
6d4a | 18 06 : jr $6D52
6d4c | fe f7 : cp $F7
6d4e | 20 05 : jr nz,$6D55
6d50 | 3e 10 : ld a,$10 // increase code +10
6d52 | 86 : add a,(hl)
6d53 | 77 : ld (hl),a
6d54 | 7a : ld a,d
6d55 | fe df : cp $DF
6d57 | 20 03 : jr nz,$6D5C
6d59 | 4e : ld c,(hl) // play sound
6d5a | 18 06 : jr $6D62
6d5c | fe ef : cp $EF
6d5e | 20 05 : jr nz,$6D65
6d60 | 0e 00 : ld c,$00 // stop sound
6d62 | cd 19 6c : call $6C19 // send sound code
6d65 | 18 c9 : jr $6D30
-->
</script>
<script state="run">
<output format="----- psychic 5 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@e100</argument>
</output>
</script>
<script state="off">
<action>maincpu.md@042c = c1010b3e</action>
<action>maincpu.mq@6d30 = 0000000000000000</action>
<action>maincpu.mq@6d38 = 0000000000000000</action>
<action>maincpu.mq@6d40 = 0000000000000000</action>
<action>maincpu.mq@6d48 = 0000000000000000</action>
<action>maincpu.mq@6d50 = 0000000000000000</action>
<action>maincpu.mq@6d58 = 0000000000000000</action>
<action>maincpu.mq@6d60 = 0000000000000000</action>
</script>
</cheat>
"sound test mode" : rewrite routine. reallocate address. add up/down key (code ±10).
[psychic5]+ Psychic 5
Posted: Sun Feb 25, 2024 12:50 am
by jman
First of all, this game has in-game ROM check. Many ROM codes cause the game crash/freeze unless you set "skip in-game rom error".
psychic5.xml
Code: Select all
<!-- Psychic 5 (World) -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<action>maincpu.mb@2014 = 18</action> <!-- pressed left body -->
<action>maincpu.mb@2049 = 18</action> <!-- pressed right body -->
<action>maincpu.mb@2084 = 18</action> <!-- pressed foot -->
<action>maincpu.mb@20F1 = 18</action> <!-- pressed head -->
<action>maincpu.mb@2F2F = C9</action> <!-- flame -->
<action>maincpu.mb@4CE9 = 18</action> <!-- enemy -->
<action>maincpu.mb@5B4E = 18</action> <!-- fire ball -->
</script>
<script state="off">
<action>maincpu.mb@2014 = 28</action>
<action>maincpu.mb@2049 = 28</action>
<action>maincpu.mb@2084 = 28</action>
<action>maincpu.mb@20F1 = 28</action>
<action>maincpu.mb@2F2F = C0</action>
<action>maincpu.mb@4CE9 = 30</action>
<action>maincpu.mb@5B4E = 30</action>
</script>
</cheat>
<cheat desc="auto fire">
<script state="on">
<action>maincpu.mb@156C = 83</action>
<action>maincpu.mb@1570 = 28</action>
</script>
<script state="off">
<action>maincpu.mb@156C = 82</action>
<action>maincpu.mb@1570 = 20</action>
</script>
</cheat>
<cheat desc="walk speed">
<parameter min="0x01" max="0x05" step="0x01" />
<script state="on">
<action>maincpu.md@1646 = 32000021</action>
</script>
<script state="change">
<action>maincpu.mb@1648 = param</action>
</script>
<script state="off">
<action>maincpu.md@1646 = 32190016</action>
</script>
</cheat>
<cheat desc="attack speed up">
<script state="on">
<action>maincpu.mb@15BE = 00</action>
</script>
<script state="off">
<action>maincpu.mb@15BE = 30</action>
</script>
</cheat>
<cheat desc="easy break iron wall">
<script state="on">
<action>maincpu.mb@2E51 = 00</action>
</script>
<script state="off">
<action>maincpu.mb@2E51 = c0</action>
</script>
</cheat>
<cheat desc="multiple jump">
<script state="on">
<action>maincpu.md@164F = 0F6EE0CD </action>
<action>maincpu.mq@6EE0 = C0013E67CBFC823A</action>
<action>maincpu.mq@6EE8 = 00000000C9FA013A</action>
<!--
6EE0 | 3A 82 FC : ld a,($FC82)
6EE3 | CB 67 : bit 4,a
6EE5 | 3E 01 : ld a,$01
6EE7 | C0 : ret nz
6EE8 | 3A 01 FA : ld a,($FA01)
6EEB | C9 : ret
-->
</script>
<script state="off">
<action>maincpu.md@164F = 0FFA013A </action>
<action>maincpu.mq@6EE0 = 0000000000000000</action>
<action>maincpu.mq@6EE8 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="sound test mode">
<comment>reset the game (F3) to enter sound test mode</comment>
<script state="on">
<action>maincpu.md@042E = C16EF0C3 </action>
<action>maincpu.mq@6EF0 = 57BAE00021136ACD</action>
<action>maincpu.mq@6EF8 = FE350120FDFEF628</action>
<action>maincpu.mq@6F00 = 0420FBFE340120FE</action>
<action>maincpu.mq@6F08 = 0520F7FE0618F03E</action>
<action>maincpu.mq@6F10 = 20DFFE7A7786103E</action>
<action>maincpu.mq@6F18 = 0520EFFE06184E03</action>
<action>maincpu.mq@6F20 = 00C9186DD5CD000E</action>
<!--
6EF0 | CD 6A 13 : call $136A // read input
6EF3 | 21 00 E1 : ld hl,$E000 // sound code address
6EF6 | BA : cp d
6EF7 | 57 : ld d,a
6EF8 | 28 F6 : jr z,$6D30
6EFA | FE FD : cp $FD
6EFC | 20 01 : jr nz,$6D3F
6EFE | 35 : dec (hl) // decrease code -01
6EFF | FE FE : cp $FE
6F01 | 20 01 : jr nz,$6D44
6F03 | 34 : inc (hl) // increase code +01
6F04 | FE FB : cp $FB
6F06 | 20 04 : jr nz,$6D4C
6F08 | 3E F0 : ld a,$F0 // decrease code -10
6F0A | 18 06 : jr $6D52
6F0C | FE F7 : cp $F7
6F0E | 20 05 : jr nz,$6D55
6F10 | 3E 10 : ld a,$10 // increase code +10
6F12 | 86 : add a,(hl)
6F13 | 77 : ld (hl),a
6F14 | 7A : ld a,d
6F15 | FE DF : cp $DF
6F17 | 20 03 : jr nz,$6D5C
6F19 | 4E : ld c,(hl) // play sound
6F1A | 18 06 : jr $6D62
6F1C | FE EF : cp $EF
6F1E | 20 05 : jr nz,$6D65
6F20 | 0E 00 : ld c,$00 // stop sound
6F22 | CD D5 6D : call $6DD5 // send sound code
6F25 | 18 C9 : jr $6D30
-->
</script>
<script state="run">
<output format="----- psychic 5 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@E000</argument>
</output>
</script>
<script state="off">
<action>maincpu.md@042E = DF05C101 </action>
<action>maincpu.mq@6EF0 = 0000000000000000</action>
<action>maincpu.mq@6EF8 = 0000000000000000</action>
<action>maincpu.mq@6F00 = 0000000000000000</action>
<action>maincpu.mq@6F08 = 0000000000000000</action>
<action>maincpu.mq@6F10 = 0000000000000000</action>
<action>maincpu.mq@6F18 = 0000000000000000</action>
<action>maincpu.mq@6F20 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="skip in-game rom error">
<script state="on">
<action>maincpu.mw@05D8 = 05DA</action>
</script>
<script state="off">
<action>maincpu.mw@05D8 = 0000</action>
</script>
</cheat>
</mamecheat>
psychic5j.xml
Code: Select all
<!-- Psychic 5 (Japan) -->
<mamecheat version="1">
<cheat desc="no hit">
<script state="on">
<action>maincpu.mb@1E58 = 18</action> <!-- pressed left body -->
<action>maincpu.mb@1E8D = 18</action> <!-- pressed right body -->
<action>maincpu.mb@1EC8 = 18</action> <!-- pressed foot -->
<action>maincpu.mb@1F35 = 18</action> <!-- pressed head -->
<action>maincpu.mb@2D72 = C9</action> <!-- flame -->
<action>maincpu.mb@4B2D = 18</action> <!-- enemy -->
<action>maincpu.mb@5992 = 18</action> <!-- fire ball -->
</script>
<script state="off">
<action>maincpu.mb@1E58 = 28</action>
<action>maincpu.mb@1E8D = 28</action>
<action>maincpu.mb@1EC8 = 28</action>
<action>maincpu.mb@1F35 = 28</action>
<action>maincpu.mb@2D72 = C0</action>
<action>maincpu.mb@4B2D = 30</action>
<action>maincpu.mb@5992 = 30</action>
</script>
</cheat>
<cheat desc="auto fire">
<script state="on">
<action>maincpu.mb@13B0 = 83</action>
<action>maincpu.mb@13B4 = 28</action>
</script>
<script state="off">
<action>maincpu.mb@13B0 = 82</action>
<action>maincpu.mb@13B4 = 20</action>
</script>
</cheat>
<cheat desc="walk speed">
<parameter min="0x01" max="0x05" step="0x01" />
<script state="on">
<action>maincpu.md@148A = 32000021</action>
</script>
<script state="change">
<action>maincpu.mb@148C = param</action>
</script>
<script state="off">
<action>maincpu.md@148A = 32190016</action>
</script>
</cheat>
<cheat desc="attack speed up">
<script state="on">
<action>maincpu.mb@1402 = 00</action>
</script>
<script state="off">
<action>maincpu.mb@1402 = 30</action>
</script>
</cheat>
<cheat desc="easy break iron wall">
<script state="on">
<action>maincpu.mb@2C95 = 00</action>
</script>
<script state="off">
<action>maincpu.mb@2C95 = c0</action>
</script>
</cheat>
<cheat desc="multiple jump">
<script state="on">
<action>maincpu.md@1493 = 0F6D20CD </action>
<action>maincpu.mq@6D20 = C0013E67CBFC823A</action>
<action>maincpu.mq@6D28 = 00000000C9FA013A</action>
<!--
6D20 | 3A 82 FC : ld a,($FC82)
6D23 | CB 67 : bit 4,a
6D25 | 3E 01 : ld a,$01
6D27 | C0 : ret nz
6D28 | 3A 01 FA : ld a,($FA01)
6D2B | C9 : ret
-->
</script>
<script state="off">
<action>maincpu.md@1493 = 0FFA013A </action>
<action>maincpu.mq@6D20 = 0000000000000000</action>
<action>maincpu.mq@6D28 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="sound test mode">
<comment>reset the game (F3) to enter sound test mode</comment>
<script state="on">
<action>maincpu.md@042E = C16D30C3 </action>
<action>maincpu.mq@6D30 = 57BAE0002112BECD</action>
<action>maincpu.mq@6D38 = FE350120FDFEF628</action>
<action>maincpu.mq@6D40 = 0420FBFE340120FE</action>
<action>maincpu.mq@6D48 = 0520F7FE0618F03E</action>
<action>maincpu.mq@6D50 = 20DFFE7A7786103E</action>
<action>maincpu.mq@6D58 = 0520EFFE06184E03</action>
<action>maincpu.mq@6D60 = 00C9186C19CD000E</action>
<!--
6D30 | CD BE 12 : call $12BE // read input
6D33 | 21 00 E0 : ld hl,$E000 // sound code address
6D36 | BA : cp d
6D37 | 57 : ld d,a
6D38 | 28 F6 : jr z,$6D30
6D3A | FE FD : cp $FD
6D3C | 20 01 : jr nz,$6D3F
6D3E | 35 : dec (hl) // decrease code -01
6D3F | FE FE : cp $FE
6D41 | 20 01 : jr nz,$6D44
6D43 | 34 : inc (hl) // increase code +01
6D44 | FE FB : cp $FB
6D46 | 20 04 : jr nz,$6D4C
6D48 | 3E F0 : ld a,$F0 // decrease code -10
6D4A | 18 06 : jr $6D52
6D4C | FE F7 : cp $F7
6D4E | 20 05 : jr nz,$6D55
6D50 | 3E 10 : ld a,$10 // increase code +10
6D52 | 86 : add a,(hl)
6D53 | 77 : ld (hl),a
6D54 | 7A : ld a,d
6D55 | FE DF : cp $DF
6D57 | 20 03 : jr nz,$6D5C
6D59 | 4E : ld c,(hl) // play sound
6D5A | 18 06 : jr $6D62
6D5C | FE EF : cp $EF
6D5E | 20 05 : jr nz,$6D65
6D60 | 0E 00 : ld c,$00 // stop sound
6D62 | CD 19 6C : call $6C19 // send sound code
6D65 | 18 C9 : jr $6D30
-->
</script>
<script state="run">
<output format="----- psychic 5 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@E000</argument>
</output>
</script>
<script state="off">
<action>maincpu.md@042E = DF05C101 </action>
<action>maincpu.mq@6D30 = 0000000000000000</action>
<action>maincpu.mq@6D38 = 0000000000000000</action>
<action>maincpu.mq@6D40 = 0000000000000000</action>
<action>maincpu.mq@6D48 = 0000000000000000</action>
<action>maincpu.mq@6D50 = 0000000000000000</action>
<action>maincpu.mq@6D58 = 0000000000000000</action>
<action>maincpu.mq@6D60 = 0000000000000000</action>
</script>
</cheat>
<cheat desc="skip in-game rom error">
<script state="on">
<action>maincpu.mw@05D8 = 05DA</action>
</script>
<script state="off">
<action>maincpu.mw@05D8 = 0000</action>
</script>
</cheat>
</mamecheat>