summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpikalaxalt <PikalaxALT@gmail.com>2016-06-16 23:04:56 -0400
committerpikalaxalt <PikalaxALT@gmail.com>2016-06-16 23:04:56 -0400
commitccdc79e109ce073be9d340a7ae58243b4c164513 (patch)
treec322b1e2e784a765cfd68a5b2185459a8ef01b48
parent08fdc6d07ccbc8d1d36a02e45eecf435e84e8654 (diff)
home/video.asm
-rw-r--r--home.asm16
-rw-r--r--home/text.asm32
-rw-r--r--home/vblank.asm10
-rw-r--r--home/video.asm258
-rw-r--r--wram.asm8
5 files changed, 77 insertions, 247 deletions
diff --git a/home.asm b/home.asm
index cd159b6e..06cf2ee0 100644
--- a/home.asm
+++ b/home.asm
@@ -23,21 +23,7 @@ INCLUDE "home/decompress.asm"
INCLUDE "home/palettes.asm"
INCLUDE "home/copy.asm"
INCLUDE "home/text.asm"
-
-UpdateBGMapBuffer::
- dr $1458, $14bb
-
-UpdateBGMap::
- dr $14bb, $1579
-
-Function1579::
- dr $1579, $15d0
-
-Serve2bppRequest::
- dr $15d0, $162b
-
-Function162b::
- dr $162b, $1642
+INCLUDE "home/video.asm"
Function1642::
dr $1642, $196f
diff --git a/home/text.asm b/home/text.asm
index 8be33fd9..6ed9f4ab 100644
--- a/home/text.asm
+++ b/home/text.asm
@@ -11,7 +11,7 @@ TEXTBOX_INNERY EQU TEXTBOX_Y + 2
TEXTBOX_PAL EQU 7
ClearBox:: ; ebd (0:0ebd)
- ld a, $7f
+ ld a, " "
FillBoxWithByte::
ld de, SCREEN_WIDTH
.row
@@ -30,7 +30,7 @@ FillBoxWithByte::
ClearTileMap::
ld hl, wTileMap
- ld a, $7f
+ ld a, " "
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
call ByteFill
ld a, [rLCDC]
@@ -39,7 +39,7 @@ ClearTileMap::
jp WaitBGMap
FillScreenWithTextboxPal::
- ld a, $7
+ ld a, TEXTBOX_PAL
hlcoord 0, 0, wAttrMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
call ByteFill
@@ -120,9 +120,9 @@ TextBoxPalette
ret
SpeechTextBox:: ; f45 (0:0f45)
- hlcoord 0, 12
- ld b, $4
- ld c, $12
+ hlcoord TEXTBOX_X, TEXTBOX_Y
+ ld b, TEXTBOX_INNERH
+ ld c, TEXTBOX_INNERW
jp TextBox
TestText::
@@ -137,7 +137,7 @@ RadioTerminator:: ; 1052
PrintText::
call SetUpTextBox
- bccoord 1, 14
+ bccoord TEXTBOX_INNERX, TEXTBOX_INNERY
call PlaceHLTextAtBC
ret
@@ -399,7 +399,7 @@ HalfLineChar:: ; 1176 (0:1176)
LineChar:: ; 117f (0:117f)
pop hl
- hlcoord 1, 16
+ hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY + 2
push hl
jp NextChar
@@ -412,13 +412,13 @@ Paragraph:: ; 1187 (0:1187)
.asm_1192
call Text_WaitBGMap
call ButtonSound
- hlcoord 1, 14
- lb bc, 3, 18
+ hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY
+ lb bc, TEXTBOX_INNERH - 1, TEXTBOX_INNERW
call ClearBox
call UnloadBlinkingCursor
ld c, 20
call DelayFrames
- hlcoord 1, 14
+ hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY
pop de
jp NextChar
@@ -439,7 +439,7 @@ Char4C:: ; 11c8 (0:11c8)
push de
call TextScroll
call TextScroll
- hlcoord 1, 16
+ hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY + 2
pop de
jp NextChar
@@ -497,13 +497,13 @@ NullChar:: ; 120c (0:120c)
done
TextScroll:: ; 121d (0:121d)
- hlcoord 0, 14
- decoord 0, 13
+ hlcoord TEXTBOX_X, TEXTBOX_INNERY
+ decoord TEXTBOX_X, TEXTBOX_INNERY - 1
ld bc, 3 * SCREEN_WIDTH
call CopyBytes
- hlcoord 1, 16
+ hlcoord TEXTBOX_INNERX, TEXTBOX_INNERY + 2
ld a, " "
- ld bc, 18
+ ld bc, TEXTBOX_INNERW
call ByteFill
ld c, 5
call DelayFrames
diff --git a/home/vblank.asm b/home/vblank.asm
index 9cf36f9a..c0216ac2 100644
--- a/home/vblank.asm
+++ b/home/vblank.asm
@@ -86,12 +86,12 @@ VBlank0:: ; 180
call UpdatePalsIfCGB
jr c, .done
call UpdateBGMap
- call Serve2bppRequest
; These have their own timing checks.
- call Function1579
- call Function162b
+ call Serve2bppRequest
+ call Serve1bppRequest
+ call AnimateTileset
call Function1642
.done
@@ -346,8 +346,8 @@ VBlank3:: ; 2c4
call Serve2bppRequest
- call Function1579
- call Function162b
+ call Serve1bppRequest
+ call AnimateTileset
call hPushOAM
diff --git a/home/video.asm b/home/video.asm
index 85de6a1e..201ae7fc 100644
--- a/home/video.asm
+++ b/home/video.asm
@@ -1,71 +1,29 @@
-; Functions dealing with VRAM.
-
-DMATransfer:: ; 15d8
-; Return carry if the transfer is completed.
-
- ld a, [hDMATransfer]
- and a
- ret z
-
-; Start transfer
- ld [rHDMA5], a
-
-; Execution is halted until the transfer is complete.
-
- xor a
- ld [hDMATransfer], a
- scf
- ret
-; 15e3
-
-
-UpdateBGMapBuffer:: ; 15e3
-; Copy [hFFDE] 16x8 tiles from BGMapBuffer
-; to bg map addresses in BGMapBufferPtrs.
-
-; [hFFDE] must be even since this is done in pairs.
-
-; Return carry on success.
-
+UpdateBGMapBuffer:: ; 1458 (0:1458)
ld a, [hBGMapUpdate]
and a
ret z
- ld a, [rVBK]
- push af
ld [hSPBuffer], sp
- ld hl, BGMapBufferPtrs
+ ld hl, wBGMapBufferPtrs
ld sp, hl
-; We can now pop the addresses of affected spots on the BG Map
-
- ld hl, BGMapPalBuffer
- ld de, BGMapBuffer
-
+ ld hl, wBGMapPalBuffer
+ ld de, wBGMapBuffer
.next
-; Copy a pair of 16x8 blocks (one 16x16 block)
-
rept 2
-; Get our BG Map address
pop bc
-
-; Palettes
- ld a, 1
+ ld a, $1
ld [rVBK], a
-
ld a, [hli]
ld [bc], a
inc c
ld a, [hli]
ld [bc], a
dec c
-
-; Tiles
- ld a, 0
+ ld a, $0
ld [rVBK], a
-
ld a, [de]
inc de
ld [bc], a
@@ -75,7 +33,6 @@ rept 2
ld [bc], a
endr
-; We've done 2 16x8 blocks
ld a, [hFFDE]
dec a
dec a
@@ -83,34 +40,24 @@ endr
jr nz, .next
-
ld a, [hSPBuffer]
ld l, a
ld a, [hSPBuffer + 1]
ld h, a
ld sp, hl
- pop af
- ld [rVBK], a
-
xor a
ld [hBGMapUpdate], a
scf
ret
-; 163a
-
-
-WaitTop:: ; 163a
-; Wait until the top third of the BG Map is being updated.
+WaitTop::
ld a, [hBGMapMode]
and a
ret z
-
ld a, [hBGMapThird]
and a
jr z, .done
-
call DelayFrame
jr WaitTop
@@ -118,23 +65,17 @@ WaitTop:: ; 163a
xor a
ld [hBGMapMode], a
ret
-; 164c
-
-
-UpdateBGMap:: ; 164c
-; Update the BG Map, in thirds, from TileMap and AttrMap.
+UpdateBGMap:: ; 14bb (0:14bb)
ld a, [hBGMapMode]
and a
ret z
-; BG Map 0
- dec a ; 1
+ dec a
jr z, .Tiles
- dec a ; 2
+ dec a
jr z, .Attr
-; BG Map 1
dec a
ld a, [hBGMapAddress]
@@ -145,15 +86,15 @@ UpdateBGMap:: ; 164c
xor a
ld [hBGMapAddress], a
- ld a, VBGMap1 >> 8
+ ld a, $9c
ld [hBGMapAddress + 1], a
ld a, [hBGMapMode]
push af
- cp 3
+ cp $3
call z, .Tiles
pop af
- cp 4
+ cp $4
call z, .Attr
pop hl
@@ -163,39 +104,28 @@ UpdateBGMap:: ; 164c
ld [hBGMapAddress + 1], a
ret
-
.Attr
- ld a, 1
+ ld a, $1
ld [rVBK], a
- hlcoord 0, 0, AttrMap
+ hlcoord 0, 0, wAttrMap
call .update
-
- ld a, 0
+ ld a, $0
ld [rVBK], a
ret
-
.Tiles
hlcoord 0, 0
-
-
.update
ld [hSPBuffer], sp
-
-; Which third?
+
ld a, [hBGMapThird]
- and a ; 0
+ and a
jr z, .top
- dec a ; 1
+ dec a
jr z, .middle
- ; 2
-
THIRD_HEIGHT EQU SCREEN_HEIGHT / 3
-
-
-.bottom
ld de, 2 * THIRD_HEIGHT * SCREEN_WIDTH
add hl, de
ld sp, hl
@@ -203,16 +133,14 @@ THIRD_HEIGHT EQU SCREEN_HEIGHT / 3
ld a, [hBGMapAddress + 1]
ld h, a
ld a, [hBGMapAddress]
- ld l, a
+ ld l, a
ld de, 2 * THIRD_HEIGHT * BG_MAP_WIDTH
add hl, de
-; Next time: top third
xor a
jr .start
-
.middle
ld de, THIRD_HEIGHT * SCREEN_WIDTH
add hl, de
@@ -226,11 +154,9 @@ THIRD_HEIGHT EQU SCREEN_HEIGHT / 3
ld de, THIRD_HEIGHT * BG_MAP_WIDTH
add hl, de
-; Next time: bottom third
- ld a, 2
+ ld a, $2
jr .start
-
.top
ld sp, hl
@@ -239,23 +165,16 @@ THIRD_HEIGHT EQU SCREEN_HEIGHT / 3
ld a, [hBGMapAddress]
ld l, a
-; Next time: middle third
- ld a, 1
-
+ ld a, $1
.start
-; Which third to update next time
ld [hBGMapThird], a
-
-; Rows of tiles in a third
ld a, SCREEN_HEIGHT / 3
; Discrepancy between TileMap and BGMap
ld bc, BG_MAP_WIDTH - (SCREEN_WIDTH - 1)
-
-
+
.row
-; Copy a row of 20 tiles
rept SCREEN_WIDTH / 2 - 1
pop de
ld [hl], e
@@ -272,56 +191,38 @@ endr
dec a
jr nz, .row
-
ld a, [hSPBuffer]
ld l, a
ld a, [hSPBuffer + 1]
ld h, a
ld sp, hl
ret
-; 170a
-
-Serve1bppRequest:: ; 170a
-; Only call during the first fifth of VBlank
-
- ld a, [Requested1bpp]
+Serve1bppRequest:: ; 1579 (0:1579)
+ ld a, [wRequested1bpp]
and a
ret z
-; Back out if we're too far into VBlank
- ld a, [rLY]
- cp 144
- ret c
- cp 146
- ret nc
-
-; Copy [Requested1bpp] 1bpp tiles from [Requested1bppSource] to [Requested1bppDest]
-
ld [hSPBuffer], sp
-; Source
- ld hl, Requested1bppSource
+ ld hl, wRequested1bppSource
ld a, [hli]
ld h, [hl]
ld l, a
ld sp, hl
-
-; Destination
- ld hl, Requested1bppDest
+
+ ld hl, wRequested1bppDest
ld a, [hli]
ld h, [hl]
ld l, a
-
-; # tiles to copy
- ld a, [Requested1bpp]
+
+ ld a, [wRequested1bpp]
ld b, a
xor a
- ld [Requested1bpp], a
+ ld [wRequested1bpp], a
.next
-
rept 3
pop de
ld [hl], e
@@ -346,13 +247,12 @@ endr
dec b
jr nz, .next
-
ld a, l
- ld [Requested1bppDest], a
+ ld [wRequested1bppDest], a
ld a, h
- ld [Requested1bppDest + 1], a
+ ld [wRequested1bppDest + 1], a
- ld [Requested1bppSource], sp
+ ld [wRequested1bppSource], sp
ld a, [hSPBuffer]
ld l, a
@@ -360,58 +260,26 @@ endr
ld h, a
ld sp, hl
ret
-; 1769
-
-
-Serve2bppRequest:: ; 1769
-; Only call during the first fifth of VBlank
-
- ld a, [Requested2bpp]
- and a
- ret z
-
-; Back out if we're too far into VBlank
- ld a, [rLY]
- cp 144
- ret c
- cp 146
- ret nc
- jr _Serve2bppRequest
-
-
-Serve2bppRequest@VBlank:: ; 1778
- ld a, [Requested2bpp]
+Serve2bppRequest:: ; 15d0 (0:15d0)
+ ld a, [wRequested2bpp]
and a
ret z
-
-_Serve2bppRequest:: ; 177d
-; Copy [Requested2bpp] 2bpp tiles from [Requested2bppSource] to [Requested2bppDest]
-
ld [hSPBuffer], sp
-
-; Source
- ld hl, Requested2bppSource
+ ld hl, wRequested2bppSource
ld a, [hli]
ld h, [hl]
ld l, a
ld sp, hl
-
-; Destination
- ld hl, Requested2bppDest
+ ld hl, wRequested2bppDest
ld a, [hli]
ld h, [hl]
ld l, a
-
-; # tiles to copy
- ld a, [Requested2bpp]
+ ld a, [wRequested2bpp]
ld b, a
-
xor a
- ld [Requested2bpp], a
-
+ ld [wRequested2bpp], a
.next
-
rept 7
pop de
ld [hl], e
@@ -428,13 +296,12 @@ endr
dec b
jr nz, .next
-
ld a, l
- ld [Requested2bppDest], a
+ ld [wRequested2bppDest], a
ld a, h
- ld [Requested2bppDest + 1], a
+ ld [wRequested2bppDest + 1], a
- ld [Requested2bppSource], sp
+ ld [wRequested2bppSource], sp
ld a, [hSPBuffer]
ld l, a
@@ -442,45 +309,20 @@ endr
ld h, a
ld sp, hl
ret
-; 17d3
-
-
-AnimateTileset:: ; 17d3
-; Only call during the first fifth of VBlank
+AnimateTileset:: ; 162b (0:162b)
ld a, [hMapAnims]
and a
ret z
-
-; Back out if we're too far into VBlank
- ld a, [rLY]
- cp 144
- ret c
- cp 151
- ret nc
-
ld a, [hROMBank]
push af
- ld a, BANK(_AnimateTileset)
+ ld a, $3f
rst Bankswitch
-
- ld a, [rSVBK]
- push af
- ld a, 1
- ld [rSVBK], a
-
- ld a, [rVBK]
- push af
- ld a, 0
- ld [rVBK], a
-
- call _AnimateTileset
-
- pop af
- ld [rVBK], a
- pop af
- ld [rSVBK], a
+ call $4003
pop af
rst Bankswitch
ret
-; 17ff
+ ret
+ ld hl, rLCDC
+ set 1, [hl]
+ ret
diff --git a/wram.asm b/wram.asm
index 35cd76b5..b8482505 100644
--- a/wram.asm
+++ b/wram.asm
@@ -1839,7 +1839,9 @@ wcc1c:: ds 1 ; cc1c
wcc1d:: ds 1 ; cc1d
wcc1e:: ds 1 ; cc1e
wcc1f:: ds 1 ; cc1f
-wcc20:: ds 1 ; cc20
+
+SECTION "Video", WRAM0
+wBGMapBuffer:: ds 1 ; cc20
wcc21:: ds 1 ; cc21
wcc22:: ds 1 ; cc22
wcc23:: ds 1 ; cc23
@@ -1879,7 +1881,7 @@ wcc44:: ds 1 ; cc44
wcc45:: ds 1 ; cc45
wcc46:: ds 1 ; cc46
wcc47:: ds 1 ; cc47
-wcc48:: ds 1 ; cc48
+wBGMapPalBuffer:: ds 1 ; cc48
wcc49:: ds 1 ; cc49
wcc4a:: ds 1 ; cc4a
wcc4b:: ds 1 ; cc4b
@@ -1919,7 +1921,7 @@ wcc6c:: ds 1 ; cc6c
wcc6d:: ds 1 ; cc6d
wcc6e:: ds 1 ; cc6e
wcc6f:: ds 1 ; cc6f
-wcc70:: ds 1 ; cc70
+wBGMapBufferPtrs:: ds 1 ; cc70
wcc71:: ds 1 ; cc71
wcc72:: ds 1 ; cc72
wcc73:: ds 1 ; cc73