summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--constants/misc_constants.asm4
-rw-r--r--home/map.asm6
-rw-r--r--home/overworld.asm135
-rw-r--r--home/tileset.asm6
4 files changed, 143 insertions, 8 deletions
diff --git a/constants/misc_constants.asm b/constants/misc_constants.asm
index 39f2769..b536ecf 100644
--- a/constants/misc_constants.asm
+++ b/constants/misc_constants.asm
@@ -26,3 +26,7 @@ D_PAD EQU D_RIGHT | D_LEFT | D_UP | D_DOWN
; Boolean values
FALSE EQU 0
TRUE EQU 1
+
+; RedrawRowOrColumn functions
+REDRAW_COL EQU 1
+REDRAW_ROW EQU 2
diff --git a/home/map.asm b/home/map.asm
index d17cae3..aac770c 100644
--- a/home/map.asm
+++ b/home/map.asm
@@ -1688,14 +1688,14 @@ Function2b87::
Function2ba8:: ; 00:2ba8
ldh a, [hROMBank]
push af
- ld a, $1
+ ld a, BANK(Function50b9)
call Bankswitch
call Function50b9
call Function18a0
- ld a, $3
+ ld a, BANK(Functiond6e4)
call Bankswitch
call Functiond6e4
- ld a, $1
+ ld a, BANK(_UpdateSprites)
call Bankswitch
call _UpdateSprites
call DelayFrame
diff --git a/home/overworld.asm b/home/overworld.asm
index 8ea66ca..bd0cc4c 100644
--- a/home/overworld.asm
+++ b/home/overworld.asm
@@ -42,8 +42,139 @@ CheckStartmenuSelectHook:
dec a
ret
-Function2c4a::
-; TODO
+Function2c4a: ; 2c4a (0:2c4a)
+; copy of Function2ba8
+.loop
+ call Function2c5a
+ and a
+ ld a, [$cb6e]
+ bit 5, a
+ ret z
+ bit 6, a
+ jr z, .loop
+ scf
+ ret
+
+Function2c5a: ; 2c5a (0:2c5a)
+ ldh a, [hROMBank]
+ push af
+ ld a, BANK(Function50b9)
+ call Bankswitch
+ call Function50b9
+ call Function_18a0
+ ld a, BANK(Functiond6e4)
+ call Bankswitch
+ call Functiond6e4
+ ld a, BANK(_UpdateSprites)
+ call Bankswitch
+ call _UpdateSprites
+ call DelayFrame
+ call UpdateToolgear
+ ld hl, wToolgearFlags
+ set 2, [hl]
+ call DelayFrame
+ pop af
+ call Bankswitch
+ ret
+
+UpdateAndTransferToolgear: ; 2c8b (0:2c8b)
+ call DelayFrame
+ call UpdateToolgear
+ ld hl, wToolgearFlags
+ set 2, [hl] ; ; transfer toolgear to window
+ call DelayFrame
+ ret
+
+ScheduleNorthRowRedraw: ; 2c9a (0:2c9a)
+ coord hl, 0, 0
+ call CopyToRedrawRowOrColumnSrcTiles
+ ld a, [wBGMapAnchor]
+ ldh [hRedrawRowOrColumnDest], a
+ ld a, [wBGMapAnchor + 1]
+ ldh [hRedrawRowOrColumnDest + 1], a
+ ld a, REDRAW_ROW
+ ldh [hRedrawRowOrColumnMode], a
+ ret
+
+ScheduleSouthRowRedraw: ; 2caf (0:2caf)
+ coord hl, 0, SCREEN_HEIGHT - 2
+ call CopyToRedrawRowOrColumnSrcTiles
+ ld a, [wBGMapAnchor]
+ ld l, a
+ ld a, [wBGMapAnchor + 1]
+ ld h, a
+ ld bc, BG_MAP_WIDTH * (SCREEN_HEIGHT - 2)
+ add hl, bc
+ ; the following 4 lines wrap us from bottom to top if necessary
+ ld a, h
+ and HIGH(vBGMap1 - vBGMap0 - $01)
+ or HIGH(vBGMap0)
+ ldh [hRedrawRowOrColumnDest + 1], a
+ ld a, l
+ ldh [hRedrawRowOrColumnDest], a
+ ld a, REDRAW_ROW
+ ldh [hRedrawRowOrColumnMode], a
+ ret
+
+ScheduleEastColumnRedraw: ; 2cd0 (0:2cd0)
+ coord hl, SCREEN_WIDTH - 2, 0
+ call ScheduleColumnRedrawHelper
+ ld a, [wBGMapAnchor]
+ ld c, a
+ and ($FF ^ (BG_MAP_WIDTH - 1)) ; mask upper address bits
+ ld b, a
+ ld a, c
+ add SCREEN_WIDTH
+ and BG_MAP_WIDTH - 1 ; mask lower address bits
+ or b
+ ldh [hRedrawRowOrColumnDest], a
+ ld a, [wBGMapAnchor + 1]
+ ldh [hRedrawRowOrColumnDest + 1], a
+ ld a, REDRAW_COL
+ ldh [hRedrawRowOrColumnMode], a
+ ret
+
+ScheduleWestColumnRedraw: ; 2cef (0:2cef)
+ coord hl, 0, 0
+ call ScheduleColumnRedrawHelper
+ ld a, [wBGMapAnchor]
+ ldh [hRedrawRowOrColumnDest], a
+ ld a, [wBGMapAnchor + 1]
+ ldh [hRedrawRowOrColumnDest + 1], a
+ ld a, REDRAW_COL
+ ldh [hRedrawRowOrColumnMode], a
+ ret
+
+CopyToRedrawRowOrColumnSrcTiles: ; 2d04 (0:2d04)
+ ld de, wRedrawRowOrColumnSrcTiles
+ ld c, 2 * SCREEN_WIDTH
+.loop
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .loop
+ ret
+
+ScheduleColumnRedrawHelper: ; 2d10 (0:2d10)
+ ld de, wRedrawRowOrColumnSrcTiles
+ ld c, SCREEN_HEIGHT
+.loop
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ inc de
+ ld a, SCREEN_WIDTH - 1
+ add l
+ ld l, a
+ jr nc, .noCarry
+ inc h
+.noCarry
+ dec c
+ jr nz, .loop
+ ret
if DEBUG
SECTION "Install StartMenu Hook Function", ROM0[$35EC]
diff --git a/home/tileset.asm b/home/tileset.asm
index e3093c9..30ac0e2 100644
--- a/home/tileset.asm
+++ b/home/tileset.asm
@@ -5,12 +5,12 @@ SECTION "LoadTilesetGFX", ROM0[$2D26]
LoadTilesetGFX:: ; 2d26
call GetMapEnvironment
- cp 1 ; TODO: constantify this
+ cp TOWN
jr z, .exterior
- cp 2 ; TODO: constantify this
+ cp ROUTE
jr z, .exterior
ld a, [wMapTileset]
- cp $1B ; TODO: constantify this
+ cp TILESET_SS_ANNE_DOCK
jr z, .exterior
ld a, [wTilesetTilesAddress]