diff options
author | libjet <libj3t@gmail.com> | 2020-03-15 00:17:02 +0000 |
---|---|---|
committer | libjet <libj3t@gmail.com> | 2020-03-15 00:17:02 +0000 |
commit | 76216e6ce5de8a78cfd9312eb08dbb127b4d34d0 (patch) | |
tree | daa241c9541bd7f66aea7220cd4da5efb9a8069a /home/gfx.asm | |
parent | 1ddf04da73b8784a08c679b73f576923768f97cf (diff) |
Small home/ reorganization
Diffstat (limited to 'home/gfx.asm')
-rw-r--r-- | home/gfx.asm | 238 |
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 |