summaryrefslogtreecommitdiff
path: root/home.asm
diff options
context:
space:
mode:
Diffstat (limited to 'home.asm')
-rw-r--r--home.asm512
1 files changed, 16 insertions, 496 deletions
diff --git a/home.asm b/home.asm
index 817de2d..1f1e6fa 100644
--- a/home.asm
+++ b/home.asm
@@ -720,32 +720,6 @@ WaitForLCD: ; 0x60f
jr nz, .delay40Cycles
ret
-Func_61b: ; 0x61b
- ld a, [rLY] ; LY register (LCDC Y-Coordinate)
- cp $40
- jr c, .asm_625
- cp $80
- jr c, .asm_63d
-.asm_625
- ld a, [rLY] ; LY register (LCDC Y-Coordinate)
- cp $40
- jr c, .asm_625
- cp $80
- jr nc, .asm_625
-.asm_62f
- ld a, [rSTAT]
- and $3
- jr nz, .asm_62f ; wait for lcd controller to finish transferring data
- ld a, $15
-.wait
- dec a
- jr nz, .wait
- nop
- nop
- nop
-.asm_63d
- ret
-
INCLUDE "home/copy.asm"
ClearOAMBuffer: ; 0x916
@@ -809,472 +783,7 @@ SGBWait1750: ; 0x948
INCLUDE "home/random.asm"
INCLUDE "home/joypad.asm"
-
-Func_b66: ; 0xb66
- ld a, [hGameBoyColorFlag]
- and a
- jr nz, .asm_b73
- xor a
- ld [hBGP], a
- ld [hOBP0], a
- ld [hOBP1], a
- ret
-
-.asm_b73
- ld de, rBGPI
- ld hl, wPaletteData
- ld b, $0
- ld c, $20
-.asm_b7d
- ld a, b
- ld [rBGPI], a
- inc b
- ld a, [rBGPD]
- ld [hli], a
- ld a, b
- ld [rBGPI], a
- inc b
- ld a, [rBGPD]
- ld [hli], a
- dec c
- jr nz, .asm_b7d
- ld b, $0
- ld c, $20
-.asm_b92
- ld a, b
- ld [rOBPI], a
- inc b
- ld a, [rOBPD]
- ld [hli], a
- ld a, b
- ld [rOBPI], a
- inc b
- ld a, [rOBPD]
- ld [hli], a
- dec c
- jr nz, .asm_b92
- ld de, rBGPI
- ld b, $2
-.asm_ba8
- ld a, $80
- ld [de], a
- inc de
- ld c, $20
-.asm_bae
- ld a, $ff
- ld [de], a
- ld [hli], a
- ld a, $7f
- ld [de], a
- ld [hli], a
- dec c
- jr nz, .asm_bae
- inc de
- dec b
- jr nz, .asm_ba8
- ret
-
-FadeIn: ; 0xbbe
-; Fades palettes in from white screen.
- ld a, [hGameBoyColorFlag]
- and a
- jp nz, FadeIn_GameboyColor
- ; Regular Gameboy
- ld hl, hBGP
- ld de, wBGP
- ld b, $3
-.loop
- ld a, [de]
- and $55
- ld c, a
- ld a, [de]
- and $aa
- srl a
- and c
- ld [hli], a
- inc de
- dec b
- jr nz, .loop
- ld bc, $0002
- call AdvanceFrames
- ld hl, hBGP
- ld de, wBGP
- ld b, $3
-.loop2
- ld a, [de]
- and $aa
- srl a
- add [hl]
- ld [hli], a
- inc de
- dec b
- jr nz, .loop2
- ld bc, $0002
- call AdvanceFrames
- ld hl, hBGP
- ld de, wBGP
- ld b, $3
-.loop3
- ld a, [de]
- and $55
- ld c, a
- ld a, [de]
- and $aa
- srl a
- or c
- add [hl]
- ld [hli], a
- inc de
- dec b
- jr nz, .loop3
- ld bc, $0002
- call AdvanceFrames
- ret
-
-FadeIn_GameboyColor: ; 0xc19
-; Fades in to the target palette data in wPaletteData from wFadeBGPaletteData and wFadeOBJPaletteData
-; Fade is completed after 16 frames of incrementally updating the palettes.
- ld b, 16 ; fade takes 16 frames to complete
-.loop
- push bc
- ld de, wPaletteData
- ld hl, wFadeBGPaletteData
- call FadeInStep
- call SetFadedPalettes
- pop bc
- dec b
- jr nz, .loop
- ret
-
-FadeInStep: ; 0xc2d
-; de = base palette data
-; hl = faded palette data
- ld a, b
- cp $1
- jr z, .lastStep
- ld c, $40 ; total number of colors in BG and OBJ palettes
-.loop
- push bc
- ld a, [hli]
- sub $42
- ld c, a
- ld a, [hld]
- sbc $8
- ld b, a ; subtracted 2 from each RGB value of the color
- call GetNextFadedPalette
- ld a, c
- ld [hli], a
- ld a, b
- ld [hli], a
- pop bc
- dec c
- jr nz, .loop
- ret
-
-.lastStep
- ld c, $40 ; total number of colors in BG and OBJ palettes
-.loop2
- push bc
- ld a, [hli]
- sub $21
- ld c, a
- ld a, [hld]
- sbc $4
- ld b, a
- call GetNextFadedPalette
- ld a, c
- ld [hli], a
- ld a, b
- ld [hli], a
- pop bc
- dec c
- jr nz, .loop2
- ret
-
-GetNextFadedPalette: ; 0xc60
-; de = source palette data
-; bc = target palette RGB - 2
-; Places the resulting palette RGB into bc
- push hl
- ld a, [de]
- and %00011111 ; Target RGB Blue value
- ld l, a
- ld a, c
- and %00011111 ; Current faded RBG Blue value - 2
- cp l
- jr nc, .brighter
- ; set the current faded Blue value to the target blue value.
- ld a, c
- and %11100000
- or l
- ld c, a
-.brighter
- ld a, [de]
- and %11100000
- ld l, a
- inc de
- ld a, [de]
- srl a
- rr l
- srl a
- rr l
- ld a, c
- and %11100000
- ld h, a
- ld a, b
- srl a
- rr h
- srl a
- rr h
- ld a, h
- cp l
- jr nc, .asm_ca3
- ld h, $0
- sla l
- rl h
- sla l
- rl h
- ld a, c
- and $1f
- or l
- ld c, a
- ld a, b
- and $7c
- or h
- ld b, a
-.asm_ca3
- ld a, [de]
- and $7c
- ld l, a
- ld a, b
- and $7c
- cp l
- jr nc, .asm_cb2
- ld a, b
- and $3
- or l
- ld b, a
-.asm_cb2
- inc de
- pop hl
- ret
-
-FadeOut: ; 0xcb5
-; Fades palettes out to a white screen.
- ld a, [hGameBoyColorFlag]
- and a
- jp nz, FadeOut_GameboyColor
- ; Regular Gameboy
- ld hl, hBGP
- ld b, $3
-.loop
- push bc
- push hl
- ld b, $3
-.loop2
- ld a, [hl]
- and $55
- ld c, a
- ld a, [hl]
- and $aa
- srl a
- or c
- cpl
- inc a
- add [hl]
- ld [hli], a
- dec b
- jr nz, .loop2
- ld bc, $0002
- call AdvanceFrames
- pop hl
- pop bc
- dec b
- jr nz, .loop
- xor a
- ld hl, hBGP
- ld [hli], a
- ld [hli], a
- ld [hl], a
- ld bc, $0002
- call AdvanceFrames
- ret
-
-FadeOut_GameboyColor: ; 0xcee
-; Fades out to white RGB colors from the currently-loaded palettes.
-; Fade is completed after 16 frames of incrementally updating the palettes.
- ld hl, wFadeBGPaletteData
- ld de, rBGPI
- call LoadCurrentPalettesIntoFadePalettes
- ld hl, wFadeOBJPaletteData
- ld de, rOBPI
- call LoadCurrentPalettesIntoFadePalettes
- ld b, 16 ; fade takes 16 frames to complete
-.loop
- push bc
- ld hl, wFadeBGPaletteData
- call FadeOutStep
- call SetFadedPalettes
- pop bc
- dec b
- jr nz, .loop
- ret
-
-FadeOutStep: ; 0xd11
-; hl = faded palette data
- ld b, $40
-.asm_d13
- ld a, [hl]
- and $1f
- add $2
- ld e, a
- cp $1f
- jr c, .asm_d1f
- ld e, $1f
-.asm_d1f
- ld a, [hl]
- and $e0
- or e
- ld [hl], a
- ld a, [hli]
- and $e0
- ld e, [hl]
- dec hl
- srl e
- rr a
- srl e
- rr a
- add $10
- ld e, a
- jr nc, .asm_d38
- ld e, $f8
-.asm_d38
- ld d, $0
- sla e
- rl d
- sla e
- rl d
- ld a, [hl]
- and $1f
- or e
- ld [hli], a
- ld a, [hl]
- and $7c
- or d
- ld [hl], a
- ld a, [hl]
- and $7c
- add $8
- ld e, a
- cp $7c
- jr c, .asm_d58
- ld e, $7c
-.asm_d58
- ld a, [hl]
- and $3
- or e
- ld [hli], a
- dec b
- jr nz, .asm_d13
- ret
-
-SetFadedPalettes: ; 0d61
-; Sets the current palette data to the faded palettes.
- ld a, [rIE]
- res 0, a
- ld [rIE], a
- ld hl, wFadeBGPaletteData
- ld de, rBGPI
- ld a, $80
- ld [de], a
- inc de
-.waitForVBlank
- ld a, [rLY]
- cp $90
- jr c, .waitForVBlank
- ld b, $10
-.loadBGColorsLoop
- ld a, [hli]
- ld [de], a
- ld a, [hli]
- ld [de], a
- ld a, [hli]
- ld [de], a
- ld a, [hli]
- ld [de], a
- dec b
- jr nz, .loadBGColorsLoop
- inc de
- ld a, $80
- ld [de], a
- inc de
- ld b, $10
-.loadOBJColorsLoop
- ld a, [hli]
- ld [de], a
- ld a, [hli]
- ld [de], a
- ld a, [hli]
- ld [de], a
- ld a, [hli]
- ld [de], a
- dec b
- jr nz, .loadOBJColorsLoop
- ld a, [rIE]
- set 0, a
- ld [rIE], a
- ret
-
-LoadCurrentPalettesIntoFadePalettes: ; 0xd9d
-; hl = destination for palette data
-; de = source of palettes (rBGPI or rOBPI)
- ld b, $0
- ld c, e
- inc c
- call WaitForLCD
-.asm_da4
- call Func_61b
-.asm_da7
- ld a, [rSTAT]
- and $3
- jr nz, .asm_da7 ; wait for lcd controller to finish transferring data
- ld a, b
- ld [de], a
- ld a, [$ff00+c]
- ld [hli], a
- inc b
- ld a, b
- ld [de], a
- ld a, [$ff00+c]
- ld [hli], a
- inc b
- ld a, b
- ld [de], a
- ld a, [$ff00+c]
- ld [hli], a
- inc b
- ld a, b
- ld [de], a
- ld a, [$ff00+c]
- ld [hli], a
- inc b
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- ld a, b
- cp $40
- jr nz, .asm_da4
- ret
+INCLUDE "home/palettes.asm"
Func_dd4: ; 0xdd4
; Return a * l to hl
@@ -1664,10 +1173,16 @@ Func_10a4: ; 0x10a4
Func_10a7: ; 0x10a7
jp Func_3ff
-Func_10aa: ; 0x10aa
+QueueGraphicsToLoad: ; 0x10aa
+; Queues graphics data to be loaded into VRAM at the next available time.
+; See the data/queued_tiledata/ directory to view the data that is loaded by this function.
+; Input: hl = pointer to async tile data header
+; byte 1 = number of chunks to load
+; 2*(byte 1) = list of pointers to chunks
+; a = bank of async tile data
ld c, a
ld a, [hli]
- ld b, a ;bc = [hl]a
+ ld b, a
.loop
push bc
ld a, c
@@ -1684,14 +1199,19 @@ Func_10aa: ; 0x10aa
inc bc
pop af
push hl
- call Func_10c5
+ call QueueGraphicsToLoadWithFunc
pop hl
pop bc
dec b
jr nz, .loop
ret
-Func_10c5: ; 0x10c5
+QueueGraphicsToLoadWithFunc: ; 0x10c5
+; Queues graphics data to be loaded into VRAM with the given function at the next available time.
+; See the data/queued_tiledata/ directory to view the data that is loaded by this function.
+; Input: de: function that is responsible for loading the chunk of VRAM data
+; hl: pointer to data
+; a: bank of data
push af
ld a, [rLCDC]
bit 7, a