summaryrefslogtreecommitdiff
path: root/home/gfx.asm
diff options
context:
space:
mode:
authorlibjet <libj3t@gmail.com>2020-03-15 00:17:02 +0000
committerlibjet <libj3t@gmail.com>2020-03-15 00:17:02 +0000
commit76216e6ce5de8a78cfd9312eb08dbb127b4d34d0 (patch)
treedaa241c9541bd7f66aea7220cd4da5efb9a8069a /home/gfx.asm
parent1ddf04da73b8784a08c679b73f576923768f97cf (diff)
Small home/ reorganization
Diffstat (limited to 'home/gfx.asm')
-rw-r--r--home/gfx.asm238
1 files changed, 238 insertions, 0 deletions
diff --git a/home/gfx.asm b/home/gfx.asm
new file mode 100644
index 00000000..0067c85f
--- /dev/null
+++ b/home/gfx.asm
@@ -0,0 +1,238 @@
+Functiond70:: ; d70 (0:0d70)
+ ld b, a
+ ldh a, [hROMBank]
+ push af
+ ld a, b
+ rst Bankswitch
+
+ ld a, BANK(sDecompressBuffer)
+ call OpenSRAM
+ ld hl, sDecompressBuffer
+ ld bc, 7 * 7 * $10
+ xor a
+ call ByteFill
+
+ ld hl, wcf3c
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, sDecompressBuffer
+ call Decompress
+
+ call CloseSRAM
+ pop af
+ rst Bankswitch
+ ret
+
+ReplacePlayerSprite::
+ farcall Function1413c
+ ret
+
+Functiond9e::
+ farcall Functionf8000
+ ret
+
+Functionda5::
+ farcall Functionf8032
+ ret
+
+LoadFontsExtra::
+ farcall Functionf800c
+ ret
+
+DecompressRequest2bpp::
+ push de
+ ld a, BANK(sScratch)
+ call OpenSRAM
+ push bc
+
+ ld de, sScratch
+ ld a, b
+ call FarDecompress
+
+ pop bc
+ pop hl
+
+ ld de, sScratch
+ call Request2bpp
+ call CloseSRAM
+ ret
+
+FarCopyBytes:: ; dcd (0:0dcd)
+ ld [wBuffer], a
+ ldh a, [hROMBank]
+ push af
+ ld a, [wBuffer]
+ rst Bankswitch
+ call CopyBytes
+ pop af
+ rst Bankswitch
+ ret
+
+FarCopyBytesDouble:: ; ddd (0:0ddd)
+ ld [wBuffer], a
+ ldh a, [hROMBank]
+ push af
+ ld a, [wBuffer]
+ rst Bankswitch
+ ld a, h
+ ld h, d
+ ld d, a
+ ld a, l
+ ld l, e
+ ld e, a
+ inc b
+ inc c
+ jr .enter_loop
+
+.copy
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld [hli], a
+.enter_loop
+ dec c
+ jr nz, .copy
+ dec b
+ jr nz, .copy
+ pop af
+ rst Bankswitch
+ ret
+
+Request2bpp:: ; dfe (0:0dfe)
+ ldh a, [hBGMapMode]
+ push af
+ xor a
+ ldh [hBGMapMode], a
+ ldh a, [hROMBank]
+ push af
+ ld a, b
+ rst Bankswitch
+ ld a, e
+ ld [wRequested2bppSource], a
+ ld a, d
+ ld [wRequested2bppSource + 1], a
+ ld a, l
+ ld [wRequested2bppDest], a
+ ld a, h
+ ld [wRequested2bppDest + 1], a
+.check
+ ld a, c
+ cp $8 ; TilesPerCycle
+ jr nc, .cycle
+ ld [wRequested2bpp], a
+ call DelayFrame
+ pop af
+ rst Bankswitch
+ pop af
+ ldh [hBGMapMode], a
+ ret
+
+.cycle
+ ld a, $8 ; TilesPerCycle
+ ld [wRequested2bpp], a
+ call DelayFrame
+ ld a, c
+ sub $8 ; TilesPerCycle
+ ld c, a
+ jr .check
+
+Request1bpp:: ; e38 (0:0e38)
+ ldh a, [hBGMapMode]
+ push af
+ xor a
+ ldh [hBGMapMode], a
+ ldh a, [hROMBank]
+ push af
+ ld a, b
+ rst Bankswitch
+ ld a, e
+ ld [wRequested1bppSource], a
+ ld a, d
+ ld [wRequested1bppSource + 1], a
+ ld a, l
+ ld [wRequested1bppDest], a
+ ld a, h
+ ld [wRequested1bppDest + 1], a
+.check
+ ld a, c
+ cp $8 ; TilesPerCycle
+ jr nc, .cycle
+ ld [wRequested1bpp], a
+ call DelayFrame
+ pop af
+ rst Bankswitch
+ pop af
+ ldh [hBGMapMode], a
+ ret
+
+.cycle
+ ld a, $8 ; TilesPerCycle
+ ld [wRequested1bpp], a
+ call DelayFrame
+ ld a, c
+ sub $8 ; TilesPerCycle
+ ld c, a
+ jr .check
+
+Get2bpp::
+ ldh a, [rLCDC]
+ bit 7, a
+ jp nz, Request2bpp
+Copy2bpp::
+ push hl
+ ld h, d
+ ld l, e
+ pop de
+ ld a, b
+ push af
+ swap c
+ ld a, $f
+ and c
+ ld b, a
+ ld a, $f0
+ and c
+ ld c, a
+ pop af
+ jp FarCopyBytes
+
+Get1bpp::
+ ldh a, [rLCDC]
+ bit 7, a
+ jp nz, Request1bpp
+Copy1bpp::
+ push de
+ ld d, h
+ ld e, l
+ ld a, b
+ push af
+ ld h, $0
+ ld l, c
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ ld b, h
+ ld c, l
+ pop af
+ pop hl
+ jp FarCopyBytesDouble
+
+Functionea6::
+ ldh a, [rLCDC]
+ add a
+ jp c, Request2bpp
+Functioneac::
+ push de
+ push hl
+ ld a, b
+ ld h, $0
+ ld l, c
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ ld b, h
+ ld c, l
+ pop de
+ pop hl
+ jp FarCopyBytes