shithub: pokecrystal

Download patch

ref: 60dde1d03ed43de1e7ef777e4198963620c73958
parent: b417d08f2ea331cf20efd8a0b29c9a997fea1a90
author: yenatch <[email protected]>
date: Thu Sep 5 10:24:29 EDT 2013

forgot to commit engine/farcall.asm

fixes 715a19fd593d10f3cd2e13d0dbc3f7713ebea4cf

--- /dev/null
+++ b/engine/farcall.asm
@@ -1,0 +1,55 @@
+FarCall_de: ; 2d54
+; Call a:de.
+; Preserves other registers.
+
+	ld [hBuffer], a
+	ld a, [hROMBank]
+	push af
+	ld a, [hBuffer]
+	rst Bankswitch
+	call .de
+	jr ReturnFarCall
+
+.de
+	push de
+	ret
+; 2d63
+
+
+FarCall_hl: ; 2d63
+; Call a:hl.
+; Preserves other registers.
+
+	ld [hBuffer], a
+	ld a, [hROMBank]
+	push af
+	ld a, [hBuffer]
+	rst Bankswitch
+	call Function2d82
+; 2d6e
+
+ReturnFarCall: ; 2d6e
+; We want to retain the contents of f.
+; To do this, we can pop to bc instead of af.
+	
+	ld a, b
+	ld [$cfb9], a
+	ld a, c
+	ld [$cfba], a
+	
+; Restore the working bank.
+	pop bc
+	ld a, b
+	rst Bankswitch
+	
+	ld a, [$cfb9]
+	ld b, a
+	ld a, [$cfba]
+	ld c, a
+	ret
+; 2d82
+
+Function2d82: ; 2d82
+	jp [hl]
+; 2d83
+