pokecrystal-board/home/farcall.asm

49 lines
742 B
NASM
Raw Normal View History

2018-06-24 07:09:41 -07:00
FarCall_de::
; Call a:de.
; Preserves other registers.
2020-04-06 10:02:23 -07:00
ldh [hTempBank], a
ldh a, [hROMBank]
push af
2020-04-06 10:02:23 -07:00
ldh a, [hTempBank]
rst Bankswitch
2020-06-29 16:35:47 -07:00
call FarCall_JumpToDE
jr ReturnFarCall
2020-06-29 16:35:47 -07:00
FarCall_JumpToDE:
push de
ret
2018-06-24 07:09:41 -07:00
FarCall_hl::
; Call a:hl.
; Preserves other registers.
2020-04-06 10:02:23 -07:00
ldh [hTempBank], a
ldh a, [hROMBank]
push af
2020-04-06 10:02:23 -07:00
ldh a, [hTempBank]
rst Bankswitch
2019-11-23 17:56:22 -08:00
call FarCall_JumpToHL
; fallthrough
2018-06-24 07:09:41 -07:00
ReturnFarCall::
; We want to retain the contents of f.
; To do this, we can pop to bc instead of af.
ld a, b
ld [wFarCallBC], a
ld a, c
ld [wFarCallBC + 1], a
; Restore the working bank.
pop bc
ld a, b
rst Bankswitch
2020-06-29 16:35:47 -07:00
; Restore the contents of bc.
ld a, [wFarCallBC]
ld b, a
ld a, [wFarCallBC + 1]
ld c, a
ret
2019-11-23 17:56:22 -08:00
FarCall_JumpToHL::
jp hl