Users browsing this thread: 1 Guest(s)
asm hacking: "faking" short jumps from your code (in a new bank) to old code

#3
Posts: 3,971
Threads: 279
Thanks Received: 237
Thanks Given: 58
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
The following code allowed me to call a $C2 routine while being in bank $EE. Not the best example but it proves it works. Just enter the battle and set breakpoint at $C20CB0. I'm including the debugger console log. I never touched "step over" or "step out" except one "step over" at $C20D42.

xkas code:
Code:
hirom

;what is needed for fake jump
org $C26469
RTS
RTL

;hook up
org $C20CB0
JSL newCode
BRA continue

;ending point where code continue normally
org $C20CBA
continue:

org $EEAF01
;$C24B5A function
newCode:
PHX
INC $BE
LDX $BE
LDA $C0FD00,X
PLX
;$C20CB3 code
ORA #$E0
STA $E8    
;Fake Jump replacing JSR $0D3D
PHK
PER $0009
PEA $6469        ; return after execution of $C20D3D
PEA $0D3C        ; 0D3Dh - 1
JMP $C26469
;Your custom code could continue here :D
RTL

Log:
Code:
c20cb0 jsl $eeaf01   [eeaf01] A:00ff X:000c Y:0004 S:15d6 D:0000 DB:7e NvMXdIzc V:158 H: 268 F:27
eeaf01 phx                    A:00ff X:000c Y:0004 S:15d3 D:0000 DB:7e NvMXdIzc V:158 H: 322 F:27
eeaf02 inc $be       [0000be] A:00ff X:000c Y:0004 S:15d2 D:0000 DB:7e NvMXdIzc V:158 H: 342 F:27
eeaf04 ldx $be       [0000be] A:00ff X:000c Y:0004 S:15d2 D:0000 DB:7e nvMXdIzc V:158 H: 376 F:27
eeaf06 lda $c0fd00,x [c0fd47] A:00ff X:0047 Y:0004 S:15d2 D:0000 DB:7e nvMXdIzc V:158 H: 396 F:27
eeaf0a plx                    A:0078 X:0047 Y:0004 S:15d2 D:0000 DB:7e nvMXdIzc V:158 H: 426 F:27
eeaf0b ora #$e0               A:0078 X:000c Y:0004 S:15d3 D:0000 DB:7e nvMXdIzc V:158 H: 452 F:27
eeaf0d sta $e8       [0000e8] A:00f8 X:000c Y:0004 S:15d3 D:0000 DB:7e NvMXdIzc V:158 H: 464 F:27
eeaf0f phk                    A:00f8 X:000c Y:0004 S:15d3 D:0000 DB:7e NvMXdIzc V:158 H: 484 F:27
eeaf10 per $0009     [7e0009] A:00f8 X:000c Y:0004 S:15d2 D:0000 DB:7e NvMXdIzc V:158 H: 504 F:27
eeaf13 pea $6469     [7e6469] A:00f8 X:000c Y:0004 S:15d0 D:0000 DB:7e NvMXdIzc V:158 H: 584 F:27
eeaf16 pea $0d3c     [7e0d3c] A:00f8 X:000c Y:0004 S:15ce D:0000 DB:7e NvMXdIzc V:158 H: 618 F:27
eeaf19 jml $c26469   [c26469] A:00f8 X:000c Y:0004 S:15cc D:0000 DB:7e NvMXdIzc V:158 H: 652 F:27
c26469 rts                    A:00f8 X:000c Y:0004 S:15cc D:0000 DB:7e NvMXdIzc V:158 H: 676 F:27
c20d3d php                    A:00f8 X:000c Y:0004 S:15ce D:0000 DB:7e NvMXdIzc V:158 H: 716 F:27
c20d3e rep #$20               A:00f8 X:000c Y:0004 S:15cd D:0000 DB:7e NvMXdIzc V:158 H: 736 F:27
c20d40 lda $f0       [0000f0] A:00f8 X:000c Y:0004 S:15cd D:0000 DB:7e NvmXdIzc V:158 H: 754 F:27
c20d42 jsr $47b7     [c247b7] A:001e X:000c Y:0004 S:15cd D:0000 DB:7e nvmXdIzc V:158 H: 782 F:27
c20d45 inc                    A:001d X:000c Y:0004 S:15cd D:0000 DB:7e nvmXdIzc V:159 H: 622 F:27
c20d46 sta $f0       [0000f0] A:001e X:000c Y:0004 S:15cd D:0000 DB:7e nvmXdIzc V:159 H: 634 F:27
c20d48 plp                    A:001e X:000c Y:0004 S:15cd D:0000 DB:7e nvmXdIzc V:159 H: 662 F:27
c20d49 rts                    A:001e X:000c Y:0004 S:15ce D:0000 DB:7e NvMXdIzc V:159 H: 688 F:27
c2646a rtl                    A:001e X:000c Y:0004 S:15d0 D:0000 DB:7e NvMXdIzc V:159 H: 728 F:27
eeaf1d rtl                    A:001e X:000c Y:0004 S:15d3 D:0000 DB:7e NvMXdIzc V:159 H: 770 F:27
c20cb4 bra $0cba     [c20cba] A:001e X:000c Y:0004 S:15d6 D:0000 DB:7e NvMXdIzc V:159 H: 812 F:27
c20cba clc                    A:001e X:000c Y:0004 S:15d6 D:0000 DB:7e NvMXdIzc V:159 H: 830 F:27
  Find
Quote  



Messages In This Thread
RE: asm hacking: "faking" short jumps from your code (in a new bank) to old code - by madsiur - 04-16-2016, 07:18 PM

Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite