mirror of
https://github.com/pret/pokered.git
synced 2026-05-07 13:53:15 -05:00
56 lines
937 B
NASM
56 lines
937 B
NASM
; Far calls to another bank
|
|
|
|
; There is no difference between `farcall` and `callfar`, except the arbitrary
|
|
; order in which they set `b` and `hl` before calling `FarCall`.
|
|
; We use the more natural name "farcall" for the more common order.
|
|
; The same goes for `farjp` and `jpfar`.
|
|
|
|
MACRO farcall
|
|
ld b, BANK(\1)
|
|
ld hl, \1
|
|
call Bankswitch
|
|
ENDM
|
|
|
|
MACRO callfar
|
|
ld hl, \1
|
|
ld b, BANK(\1)
|
|
call Bankswitch
|
|
ENDM
|
|
|
|
MACRO farjp
|
|
ld b, BANK(\1)
|
|
ld hl, \1
|
|
jp Bankswitch
|
|
ENDM
|
|
|
|
MACRO jpfar
|
|
ld hl, \1
|
|
ld b, BANK(\1)
|
|
jp Bankswitch
|
|
ENDM
|
|
|
|
MACRO homecall
|
|
ldh a, [hLoadedROMBank]
|
|
push af
|
|
ld a, BANK(\1)
|
|
ldh [hLoadedROMBank], a
|
|
ld [rROMB], a
|
|
call \1
|
|
pop af
|
|
ldh [hLoadedROMBank], a
|
|
ld [rROMB], a
|
|
ENDM
|
|
|
|
MACRO homecall_sf ; homecall but save flags by popping into bc instead of af
|
|
ldh a, [hLoadedROMBank]
|
|
push af
|
|
ld a, BANK(\1)
|
|
ldh [hLoadedROMBank], a
|
|
ld [rROMB], a
|
|
call \1
|
|
pop bc
|
|
ld a, b
|
|
ldh [hLoadedROMBank], a
|
|
ld [rROMB], a
|
|
ENDM
|