pokecrystal/home/farcall.asm

50 lines
701 B
NASM
Raw Normal View History

2018-06-24 14:09:41 +00:00
FarCall_de::
; Call a:de.
; Preserves other registers.
2020-04-06 16:52:46 +00:00
ldh [hStackBank], a
ldh a, [hROMBank]
push af
2020-04-06 16:52:46 +00:00
ldh a, [hStackBank]
rst Bankswitch
call .de
jr ReturnFarCall
.de
push de
ret
2018-06-24 14:09:41 +00:00
FarCall_hl::
; Call a:hl.
; Preserves other registers.
2020-04-06 16:52:46 +00:00
ldh [hStackBank], a
ldh a, [hROMBank]
push af
2020-04-06 16:52:46 +00:00
ldh a, [hStackBank]
rst Bankswitch
2019-11-24 01:56:22 +00:00
call FarCall_JumpToHL
2018-06-24 14:09:41 +00:00
ReturnFarCall::
; We want to retain the contents of f.
; To do this, we can pop to bc instead of af.
ld a, b
2015-11-04 03:35:36 +00:00
ld [wFarCallBCBuffer], a
ld a, c
2015-11-04 03:35:36 +00:00
ld [wFarCallBCBuffer + 1], a
; Restore the working bank.
pop bc
ld a, b
rst Bankswitch
2015-11-04 03:35:36 +00:00
ld a, [wFarCallBCBuffer]
ld b, a
2015-11-04 03:35:36 +00:00
ld a, [wFarCallBCBuffer + 1]
ld c, a
ret
2019-11-24 01:56:22 +00:00
FarCall_JumpToHL::
jp hl