summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--home.asm58
-rw-r--r--home/audio.asm5
-rw-r--r--home/farcall.asm42
-rw-r--r--home/game_time.asm64
-rw-r--r--home/handshake.asm43
-rw-r--r--home/map.asm2220
-rw-r--r--home/map_objects.asm4
-rw-r--r--home/predef.asm45
-rw-r--r--home/text.asm1
-rw-r--r--home/vblank.asm2
-rw-r--r--macros/event.asm14
-rw-r--r--macros/text.asm44
-rw-r--r--main.asm83
-rw-r--r--wram.asm66
14 files changed, 1355 insertions, 1336 deletions
diff --git a/home.asm b/home.asm
index 33a4ca52..543edcb5 100644
--- a/home.asm
+++ b/home.asm
@@ -29,30 +29,41 @@ INCLUDE "home/sine.asm"
INCLUDE "home/movement.asm"
INCLUDE "home/tilemap.asm"
INCLUDE "home/menu.asm"
+INCLUDE "home/handshake.asm"
+INCLUDE "home/game_time.asm"
+INCLUDE "home/map.asm"
+
+Function2e16:: ; 2e16
+; Inexplicably blank
+; Seen in predef pointers
+rept 16
+ nop
+endr
+ ret
-PrinterReceive::
- dr $1eb3, $1ebf
+INCLUDE "home/farcall.asm"
+INCLUDE "home/predef.asm"
-AskSerial::
- dr $1ebf, $1efa
+Function2e80:: ; 2e6c (0:2e6c)
+ dr $2e80, $2ef1
-Function1efa::
- dr $1efa, $2835
+Function2ef1::
+ dr $2ef1, $2f10
-Function2835::
- dr $2835, $2841
+Function2f10::
+ dr $2f10, $2f16
-Function2841::
- dr $2841, $2e27
+Function2f16::
+ dr $2f16, $2f1d
-FarCall_hl::
- dr $2e27, $2e49
+Function2f1d::
+ dr $2f1d, $2f93
-Predef::
- dr $2e49, $2ef1
+Function2f93::
+ dr $2f93, $2fa4
-Function2ef1::
- dr $2ef1, $30e1
+Function2fa4::
+ dr $2fa4, $30e1
OpenSRAM::
dr $30e1, $30f1
@@ -105,16 +116,25 @@ Function31e2::
dr $31e2, $323d
PrintNum::
- dr $323d, $344c
+ dr $323d, $3449
+
+Function3449::
+ dr $3449, $344c
WaitBGMap::
- dr $344c, $3472
+ dr $344c, $3456
+
+Function3456::
+ dr $3456, $3472
ApplyTilemap::
dr $3472, $3564
Function3564::
- dr $3564, $35b9
+ dr $3564, $3583
+
+Function3583::
+ dr $3583, $35b9
GetWeekday::
dr $35b9, $3654
diff --git a/home/audio.asm b/home/audio.asm
index 7144914d..8acbc14b 100644
--- a/home/audio.asm
+++ b/home/audio.asm
@@ -5,4 +5,7 @@ PlaySFX::
dr $3e24, $3e56
WaitSFX::
- dr $3e56, $3fee
+ dr $3e56, $3e92
+
+Function3e92::
+ dr $3e92, $3fee
diff --git a/home/farcall.asm b/home/farcall.asm
index 7c9fe105..cff96439 100644
--- a/home/farcall.asm
+++ b/home/farcall.asm
@@ -1,54 +1,22 @@
-FarCall_de:: ; 2d54
-; Call a:de.
-; Preserves other registers.
-
- ld [hBuffer], a
- ld a, [hROMBank]
- push af
- ld a, [hBuffer]
- rst Bankswitch
- call .de
- jr ReturnFarCall
-
-.de
- push de
- ret
-; 2d63
-
-
-FarCall_hl:: ; 2d63
-; Call a:hl.
-; Preserves other registers.
-
- ld [hBuffer], a
+FarCall_hl:: ; 2e27 (0:2e27)
+ ld [wBuffer], a
ld a, [hROMBank]
push af
- ld a, [hBuffer]
+ ld a, [wBuffer]
rst Bankswitch
- call FarJump_hl
-; 2d6e
-
-ReturnFarCall:: ; 2d6e
-; We want to retain the contents of f.
-; To do this, we can pop to bc instead of af.
-
+ call ._hl_
ld a, b
ld [wFarCallBCBuffer], a
ld a, c
ld [wFarCallBCBuffer + 1], a
-
-; Restore the working bank.
pop bc
ld a, b
rst Bankswitch
-
ld a, [wFarCallBCBuffer]
ld b, a
ld a, [wFarCallBCBuffer + 1]
ld c, a
ret
-; 2d82
-FarJump_hl:: ; 2d82
+._hl_
jp [hl]
-; 2d83
diff --git a/home/game_time.asm b/home/game_time.asm
index 54cad89c..bb511e04 100644
--- a/home/game_time.asm
+++ b/home/game_time.asm
@@ -1,4 +1,4 @@
-ResetGameTime:: ; 208a
+ResetGameTime:: ; 1ee6 (0:1ee6)
xor a
ld [GameTimeCap], a
ld [GameTimeHours], a
@@ -7,125 +7,75 @@ ResetGameTime:: ; 208a
ld [GameTimeSeconds], a
ld [GameTimeFrames], a
ret
-; 209e
-
-
-GameTimer:: ; 209e
+GameTimer:: ; 1efa (0:1efa)
nop
-
- ld a, [rSVBK]
- push af
- ld a, 1
- ld [rSVBK], a
-
- call UpdateGameTimer
-
- pop af
- ld [rSVBK], a
- ret
-; 20ad
-
-
-UpdateGameTimer:: ; 20ad
-; Increment the game timer by one frame.
-; The game timer is capped at 999:59:59.00.
-
-
-; Don't update if game logic is paused.
- ld a, [wc2cd]
+ ld a, [wGameLogicPaused]
and a
ret nz
-; Is the timer paused?
ld hl, GameTimerPause
bit 0, [hl]
ret z
-; Is the timer already capped?
ld hl, GameTimeCap
bit 0, [hl]
ret nz
-
-; +1 frame
ld hl, GameTimeFrames
ld a, [hl]
inc a
-
- cp 60 ; frames/second
+ cp 60
jr nc, .second
-
ld [hl], a
ret
-
.second
xor a
ld [hl], a
-
-; +1 second
ld hl, GameTimeSeconds
ld a, [hl]
inc a
-
- cp 60 ; seconds/minute
+ cp 60
jr nc, .minute
-
ld [hl], a
ret
-
.minute
xor a
ld [hl], a
-
-; +1 minute
ld hl, GameTimeMinutes
ld a, [hl]
inc a
-
- cp 60 ; minutes/hour
+ cp 60
jr nc, .hour
-
ld [hl], a
ret
-
.hour
xor a
ld [hl], a
-
-; +1 hour
ld a, [GameTimeHours]
ld h, a
ld a, [GameTimeHours + 1]
ld l, a
inc hl
-
-
-; Cap the timer after 1000 hours.
ld a, h
cp 1000 / $100
jr c, .ok
-
ld a, l
cp 1000 % $100
jr c, .ok
-
ld hl, GameTimeCap
set 0, [hl]
-
- ld a, 59 ; 999:59:59.00
+ ld a, 59
ld [GameTimeMinutes], a
ld [GameTimeSeconds], a
ret
-
.ok
ld a, h
ld [GameTimeHours], a
ld a, l
ld [GameTimeHours + 1], a
ret
-; 210f
diff --git a/home/handshake.asm b/home/handshake.asm
index e53e78a5..c49bca22 100644
--- a/home/handshake.asm
+++ b/home/handshake.asm
@@ -1,50 +1,41 @@
-PrinterReceive:: ; 2057
- ld a, [hROMBank]
- push af
- ld a, BANK(_PrinterReceive)
- rst Bankswitch
-
- call _PrinterReceive
- pop af
- rst Bankswitch
-
+PrinterReceive:: ; 1eb3 (0:1eb3)
+ homecall PrinterReceive_
ret
-; 2063
-AskSerial:: ; 2063
+AskSerial:: ; 1ebf (0:1ebf)
; send out a handshake while serial int is off
- ld a, [wc2d4]
+ ld a, [wPrinterConnectionOpen]
bit 0, a
ret z
-
- ld a, [wc2d5]
+
+; if we're still interpreting data, don't try to receive
+ ld a, [wPrinterOpcode]
and a
ret nz
-
+
; once every 6 frames
- ld hl, wca8a
+ ld hl, wHandshakeFrameDelay
inc [hl]
ld a, [hl]
cp 6
ret c
-
+
xor a
ld [hl], a
-
- ld a, $c
- ld [wc2d5], a
-
+
+ ld a, 12
+ ld [wPrinterOpcode], a
+
; handshake
ld a, $88
ld [rSB], a
-
+
; switch to internal clock
ld a, %00000001
ld [rSC], a
-
+
; start transfer
ld a, %10000001
ld [rSC], a
-
+
ret
-; 208a
diff --git a/home/map.asm b/home/map.asm
index b5b0d8c8..8dee046f 100644
--- a/home/map.asm
+++ b/home/map.asm
@@ -1,15 +1,11 @@
-; Functions dealing with rendering and interacting with maps.
-
-Clearwc7e8:: ; 210f
- ld hl, wc7e8
- ld bc, 24
+Clear_wc6e8:: ; 1f5d (0:1f5d)
+ ld hl, wc6e8
+ ld bc, $18
ld a, $0
call ByteFill
ret
-; 211b
-CheckTriggers:: ; 211b
-; Checks wCurrentMapTriggerPointer. If it's empty, returns -1 in a. Otherwise, returns the active trigger ID in a.
+CheckTriggers:: ; 1f69 (0:1f69)
push hl
ld hl, wCurrentMapTriggerPointer
ld a, [hli]
@@ -17,113 +13,93 @@ CheckTriggers:: ; 211b
ld l, a
or h
ld a, [hl]
- jr nz, .triggerexists
- ld a, -1
-
-.triggerexists
+ jr nz, .asm_1f76
+ ld a, $ff
+.asm_1f76
pop hl
ret
-; 212a
-GetCurrentMapTrigger:: ; 212a
-; Grabs the wram map trigger pointer for the current map and loads it into wCurrentMapTriggerPointer.
-; If there are no triggers, both bytes of wCurrentMapTriggerPointer are wiped clean.
-; Copy the current map group and number into bc. This is needed for GetMapTrigger.
- ld a, [MapGroup]
+GetCurrentMapTrigger:: ; 1f78 (0:1f78)
+ ld a, [wMapGroup]
ld b, a
- ld a, [MapNumber]
+ ld a, [wMapNumber]
ld c, a
-; Blank out wCurrentMapTriggerPointer; this is the default scenario.
xor a
ld [wCurrentMapTriggerPointer], a
ld [wCurrentMapTriggerPointer + 1], a
call GetMapTrigger
- ret c ; The map is not in the trigger table
-; Load the trigger table pointer from de into wCurrentMapTriggerPointer
+ ret c
ld a, e
ld [wCurrentMapTriggerPointer], a
ld a, d
ld [wCurrentMapTriggerPointer + 1], a
xor a
ret
-; 2147
-GetMapTrigger:: ; 2147
-; Searches the trigger table for the map group and number loaded in bc, and returns the wram pointer in de.
-; If the map is not in the trigger table, returns carry.
+GetMapTrigger:: ; 1f95 (0:1f95)
push bc
ld a, [hROMBank]
push af
ld a, BANK(MapTriggers)
rst Bankswitch
-
ld hl, MapTriggers
-.loop
+.asm_1f9f
push hl
- ld a, [hli] ; map group, or terminator
- cp -1
- jr z, .end ; the current map is not in the trigger table
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_1fb5
cp b
- jr nz, .next ; map group did not match
- ld a, [hli] ; map number
+ jr nz, .asm_1fae
+ ld a, [hli]
cp c
- jr nz, .next ; map number did not match
- jr .found ; we found our map
+ jr nz, .asm_1fae
+ jr .asm_1fb8
-.next
+.asm_1fae
pop hl
- ld de, 4 ; size of an entry in the trigger table
+ ld de, $4
add hl, de
- jr .loop
+ jr .asm_1f9f
-.end
+.asm_1fb5
scf
- jr .done
+ jr .asm_1fbb
-.found
+.asm_1fb8
ld e, [hl]
inc hl
ld d, [hl]
-
-.done
+.asm_1fbb
pop hl
pop bc
ld a, b
rst Bankswitch
-
pop bc
ret
-; 2173
-OverworldTextModeSwitch:: ; 2173
+OverworldTextModeSwitch:: ; 1fc1 (0:1fc1)
call LoadMapPart
call FarCallSwapTextboxPalettes
ret
-; 217a
-LoadMapPart:: ; 217a
+LoadMapPart:: ; 1fc8 (0:1fc8)
ld a, [hROMBank]
push af
-
- ld a, [TilesetBlocksBank]
+ ld a, [wTilesetBlocksBank]
rst Bankswitch
-
call LoadMetatiles
ld a, $60
- hlcoord 0, 0
- ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ ld hl, wTileMap
+ ld bc, $168
call ByteFill
-
- ld a, BANK(_LoadMapPart)
+ ld a, $5
rst Bankswitch
- call _LoadMapPart
-
+ call $538d
pop af
rst Bankswitch
ret
-; 2198
-LoadMetatiles:: ; 2198
+LoadMetatiles:: ; 1fe6 (0:1fe6)
; de <- wOverworldMapAnchor
ld a, [wOverworldMapAnchor]
ld e, a
@@ -145,7 +121,7 @@ LoadMetatiles:: ; 2198
ld a, [de]
and a
jr nz, .ok
- ld a, [MapBorderBlock]
+ ld a, [wMapBorderBlock]
.ok
; Load the current wMisc address into de.
@@ -155,13 +131,13 @@ LoadMetatiles:: ; 2198
add a
ld l, a
ld h, 0
-rept 3
add hl, hl
-endr
- ld a, [TilesetBlocksAddress]
+ add hl, hl
+ add hl, hl
+ ld a, [wTilesetBlocksAddress]
add l
ld l, a
- ld a, [TilesetBlocksAddress + 1]
+ ld a, [wTilesetBlocksAddress + 1]
adc h
ld h, a
@@ -197,7 +173,7 @@ endr
ld de, WMISC_WIDTH * 4
add hl, de
pop de
- ld a, [MapWidth]
+ ld a, [wMapWidth]
add 6
add e
ld e, a
@@ -207,170 +183,501 @@ endr
dec b
jp nz, .row
ret
-; 222a
-ReturnToMapFromSubmenu:: ; 222a
- ld a, MAPSETUP_SUBMENU
+ReturnToMapFromSubmenu::
+ ld a, $fa
ld [hMapEntryMethod], a
callba RunMapSetupScript
xor a
ld [hMapEntryMethod], a
ret
-; 2238
-CheckWarpTile:: ; 2238
- call GetDestinationWarpNumber
- ret nc
+Function2086::
+ call Clear_wc6e8
+ call Function2f10
+ call Function2f1d
+ call GetCurrentMapTrigger
+ call Function2f16
+ ld a, $5
+ call RunMapCallback
+ callba Function97c2a
+ ld a, $3
+ call RunMapCallback
+ call GetMapHeaderTimeOfDayNybble
+ ld [wMapTimeOfDay], a
+ ret
+
+Function20ac::
+ ld a, $1
+ ld [wRTCEnabled], a
+ callba Function8c3e9
+ callba UpdateTimeOfDayPal
+ call OverworldTextModeSwitch
+ call Function20c7
+ call Function20e6
+ ret
+Function20c7:: ; 20c7 (0:20c7)
+ ld a, $98
+ ld [wd05c], a
+ xor a
+ ld [wd05b], a
+ ld [hSCY], a
+ ld [hSCX], a
+ callba Function58c5
+ ld a, $60
+ ld bc, $400
+ ld hl, $9800
+ call ByteFill
+ ret
+
+Function20e6:: ; 20e6 (0:20e6)
+ decoord 0, 0
+ call Function20f7
+ ld a, [hCGB]
+ and a
+ ret z
+ decoord 0, 0, wAttrMap
+ ld a, $1
+ ld [rVBK], a
+Function20f7:: ; 20f7 (0:20f7)
+ ld hl, $9800
+ ld c, $14
+ ld b, $12
+.asm_20fe
push bc
- callba CheckDirectionalWarp
+.asm_20ff
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec c
+ jr nz, .asm_20ff
+ ld bc, $c
+ add hl, bc
pop bc
- ret nc
+ dec b
+ jr nz, .asm_20fe
+ ld a, $0
+ ld [rVBK], a
+ ret
- call CopyWarpData
+Function2112::
+ call LoadTilesetHeader
+ call LoadTileset
+ xor a
+ ld [hMapAnims], a
+ xor a
+ ld [hTileAnimFrame], a
+ callba Function1416d
+ call Functiondac
+ ret
+
+Function2128::
+ ld b, $9
+ jp Function3583
+
+Function212d::
+ call Function30ff
+ call ResetBGWindow
+ call GetMovementPermissions
+ callba Function5730
+ callba Function15612
+ ld hl, wd182
+ bit 6, [hl]
+ jr nz, .asm_2151
+ ld hl, wVramState
+ set 0, [hl]
+ call Function2ef1
+.asm_2151
+ xor a
+ ld [wd182], a
+ ret
+
+Function2156::
+ ld a, [wce86]
+ cp $ff
+ ret z
+ and a
+ jr z, .asm_216d
+ cp $1
+ jr z, .asm_217c
+ cp $2
+ jr z, .asm_2187
+ cp $3
+ jr z, .asm_2192
+ and a
+ ret
+
+.asm_216d
+ ld a, [wPlayerStandingMapY]
+ sub $4
+ ld b, a
+ ld a, [wd087]
+ add a
+ cp b
+ jr z, .asm_21a1
+ and a
+ ret
+
+.asm_217c
+ ld a, [wPlayerStandingMapY]
+ sub $4
+ cp $ff
+ jr z, .asm_21a1
+ and a
+ ret
+
+.asm_2187
+ ld a, [wPlayerStandingMapX]
+ sub $4
+ cp $ff
+ jr z, .asm_21a1
+ and a
+ ret
+
+.asm_2192
+ ld a, [wPlayerStandingMapX]
+ sub $4
+ ld b, a
+ ld a, [wMapWidth]
+ add a
+ cp b
+ jr z, .asm_21a1
+ and a
+ ret
+
+.asm_21a1
scf
ret
-; 224a
-WarpCheck:: ; 224a
- call GetDestinationWarpNumber
+Function21a3::
+ ld a, [wce86]
+ and a
+ jp z, Function2263
+ cp $1
+ jp z, Function2232
+ cp $2
+ jp z, Function21ba
+ cp $3
+ jp z, Function21f6
+ ret
+
+Function21ba:: ; 21ba (0:21ba)
+ ld a, [wd0aa]
+ ld [wMapGroup], a
+ ld a, [wd0ab]
+ ld [wMapNumber], a
+ ld a, [wd0b3]
+ ld [wda03], a
+ ld a, [wd0b2]
+ ld hl, wda02
+ add [hl]
+ ld [hl], a
+ ld c, a
+ ld hl, wd0b4
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ srl c
+ jr z, .asm_21eb
+ ld a, [wd0b1]
+ add $6
+ ld e, a
+ ld d, $0
+.asm_21e7
+ add hl, de
+ dec c
+ jr nz, .asm_21e7
+.asm_21eb
+ ld a, l
+ ld [wOverworldMapAnchor], a
+ ld a, h
+ ld [wOverworldMapAnchor + 1], a
+ jp Function2291
+
+Function21f6:: ; 21f6 (0:21f6)
+ ld a, [wd0b6]
+ ld [wMapGroup], a
+ ld a, [wd0b7]
+ ld [wMapNumber], a
+ ld a, [wd0bf]
+ ld [wda03], a
+ ld a, [wd0be]
+ ld hl, wda02
+ add [hl]
+ ld [hl], a
+ ld c, a
+ ld hl, wd0c0
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ srl c
+ jr z, .asm_2227
+ ld a, [wd0bd]
+ add $6
+ ld e, a
+ ld d, $0
+.asm_2223
+ add hl, de
+ dec c
+ jr nz, .asm_2223
+.asm_2227
+ ld a, l
+ ld [wOverworldMapAnchor], a
+ ld a, h
+ ld [wOverworldMapAnchor + 1], a
+ jp Function2291
+
+Function2232:: ; 2232 (0:2232)
+ ld a, [wd092]
+ ld [wMapGroup], a
+ ld a, [wd093]
+ ld [wMapNumber], a
+ ld a, [wd09a]
+ ld [wda02], a
+ ld a, [wd09b]
+ ld hl, wda03
+ add [hl]
+ ld [hl], a
+ ld c, a
+ ld hl, wd09c
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld b, $0
+ srl c
+ add hl, bc
+ ld a, l
+ ld [wOverworldMapAnchor], a
+ ld a, h
+ ld [wOverworldMapAnchor + 1], a
+ jp Function2291
+
+Function2263:: ; 2263 (0:2263)
+ ld a, [wd09e]
+ ld [wMapGroup], a
+ ld a, [wd09f]
+ ld [wMapNumber], a
+ ld a, [wd0a6]
+ ld [wda02], a
+ ld a, [wd0a7]
+ ld hl, wda03
+ add [hl]
+ ld [hl], a
+ ld c, a
+ ld hl, wd0a8
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld b, $0
+ srl c
+ add hl, bc
+ ld a, l
+ ld [wOverworldMapAnchor], a
+ ld a, h
+ ld [wOverworldMapAnchor + 1], a
+Function2291:: ; 2291 (0:2291)
+ scf
+ ret
+
+Function2293::
+ call Function22ad
ret nc
- call CopyWarpData
+ push bc
+ callba Function14a2d
+ pop bc
+ ret nc
+ call Function2302
+ scf
ret
-; 2252
-GetDestinationWarpNumber:: ; 2252
- callba CheckWarpCollision
+Function22a5::
+ call Function22ad
ret nc
+ call Function2302
+ ret
+Function22ad:: ; 22ad (0:22ad)
+ callba Function14a18
+ ret nc
ld a, [hROMBank]
push af
-
call SwitchToMapScriptHeaderBank
- call .GetDestinationWarpNumber
-
+ call Function22c1
pop de
ld a, d
rst Bankswitch
ret
-; 2266
-.GetDestinationWarpNumber ; 2266
- ld a, [PlayerStandingMapY]
+Function22c1:: ; 22c1 (0:22c1)
+ ld a, [wPlayerStandingMapY]
sub $4
ld e, a
- ld a, [PlayerStandingMapX]
+ ld a, [wPlayerStandingMapX]
sub $4
ld d, a
- ld a, [wCurrMapWarpCount]
+ ld a, [wd945]
and a
ret z
-
ld c, a
- ld hl, wCurrMapWarpHeaderPointer
+ ld hl, wd946
ld a, [hli]
ld h, [hl]
ld l, a
-.loop
+.asm_22d9
push hl
ld a, [hli]
cp e
- jr nz, .next
+ jr nz, .asm_22e4
ld a, [hli]
cp d
- jr nz, .next
- jr .found_warp
+ jr nz, .asm_22e4
+ jr .asm_22f1
-.next
+.asm_22e4
pop hl
- ld a, 5
+ ld a, $5
add l
ld l, a
- jr nc, .okay
+ jr nc, .asm_22ec
inc h
-
-.okay
+.asm_22ec
dec c
- jr nz, .loop
+ jr nz, .asm_22d9
xor a
ret
-.found_warp
+.asm_22f1
pop hl
- call .IncreaseHLTwice
- ret nc ; never encountered
-
- ld a, [wCurrMapWarpCount]
+ call Function22fe
+ ret nc
+ ld a, [wd945]
inc a
sub c
ld c, a
scf
ret
-.IncreaseHLTwice
+Function22fe:: ; 22fe (0:22fe)
inc hl
inc hl
scf
ret
-; 22a7
-CopyWarpData:: ; 22a7
+Function2302:: ; 2302 (0:2302)
ld a, [hROMBank]
push af
-
call SwitchToMapScriptHeaderBank
- call .CopyWarpData
-
+ call Function230f
pop af
rst Bankswitch
scf
ret
-; 22b4
-.CopyWarpData ; 22b4
+Function230f:: ; 230f (0:230f)
push bc
- ld hl, wCurrMapWarpHeaderPointer
+ ld hl, wd946
ld a, [hli]
ld h, [hl]
ld l, a
ld a, c
dec a
- ld bc, 5 ; warp size
- call AddNTimes
- ld bc, 2 ; warp number
+ ld bc, $5
+ call Function31a3
+ ld bc, $2
add hl, bc
ld a, [hli]
cp $ff
- jr nz, .skip
- ld hl, BackupWarpNumber
+ jr nz, .asm_232b
+ ld hl, wd9f5
ld a, [hli]
-
-.skip
+.asm_232b
pop bc
- ld [wNextWarp], a
+ ld [wd043], a
ld a, [hli]
- ld [wNextMapGroup], a
+ ld [wd044], a
ld a, [hli]
- ld [wNextMapNumber], a
-
+ ld [wd045], a
ld a, c
- ld [wPrevWarp], a
- ld a, [MapGroup]
- ld [wPrevMapGroup], a
- ld a, [MapNumber]
- ld [wPrevMapNumber], a
+ ld [wd046], a
+ ld a, [wMapGroup]
+ ld [wd047], a
+ ld a, [wMapNumber]
+ ld [wd048], a
scf
ret
-; 22ee
-CheckOutdoorMap:: ; 22ee
+Function2349::
+ call Function2362
+ call Function239b
+ ld a, [wd043]
+ ld [wd9ff], a
+ ld a, [wd044]
+ ld [wMapGroup], a
+ ld a, [wd045]
+ ld [wMapNumber], a
+ ret
+
+Function2362:: ; 2362 (0:2362)
+ call GetMapPermission
+ call CheckOutdoorMap
+ ret nz
+ ld a, [wd044]
+ ld b, a
+ ld a, [wd045]
+ ld c, a
+ call GetAnyMapPermission
+ call CheckIndoorMap
+ ret nz
+ ld a, [wd047]
+ cp $f
+ jr nz, .asm_2388
+ ld a, [wd048]
+ cp $a
+ ret z
+ cp $c
+ ret z
+.asm_2388
+ ld a, [wd046]
+ ld [wd9f2], a
+ ld a, [wd047]
+ ld [wd9f3], a
+ ld a, [wd048]
+ ld [wd9f4], a
+ ret
+
+Function239b:: ; 239b (0:239b)
+ call GetMapPermission
+ call CheckOutdoorMap
+ ret nz
+ ld a, [wd044]
+ ld b, a
+ ld a, [wd045]
+ ld c, a
+ call GetAnyMapPermission
+ call CheckIndoorMap
+ ret nz
+ ld a, [wd044]
+ ld b, a
+ ld a, [wd045]
+ ld c, a
+ call GetAnyMapTileset
+ ld a, c
+ cp $6
+ ret nz
+ ld a, [wd047]
+ ld [wd9fb], a
+ ld a, [wd048]
+ ld [wd9fc], a
+ ret
+
+CheckOutdoorMap:: ; 23cd (0:23cd)
cp ROUTE
ret z
cp TOWN
ret
-; 22f4
-CheckIndoorMap:: ; 22f4
+CheckIndoorMap:: ; 23d3 (0:23d3)
cp INDOOR
ret z
cp CAVE
@@ -379,47 +686,42 @@ CheckIndoorMap:: ; 22f4
ret z
cp GATE
ret
-; 2300
-; XXX
+CheckDungeonMap::
cp INDOOR
ret z
cp GATE
ret z
cp PERM_5
ret
-; 2309
-LoadMapAttributes:: ; 2309
+LoadMapAttributes::
call CopyMapHeaders
call SwitchToMapScriptHeaderBank
call ReadMapScripts
xor a
call ReadMapEventHeader
ret
-; 2317
-LoadMapAttributes_SkipPeople:: ; 2317
+LoadMapAttributes_SkipPeople::
call CopyMapHeaders
call SwitchToMapScriptHeaderBank
call ReadMapScripts
ld a, $1
call ReadMapEventHeader
ret
-; 2326
-CopyMapHeaders:: ; 2326
+CopyMapHeaders:: ; 2405 (0:2405)
call PartiallyCopyMapHeader
call SwitchToMapBank
call GetSecondaryMapHeaderPointer
call CopySecondMapHeader
call GetMapConnections
ret
-; 2336
-ReadMapEventHeader:: ; 2336
+ReadMapEventHeader:: ; 2415 (0:2415)
push af
- ld hl, MapEventHeaderPointer
+ ld hl, wd08f
ld a, [hli]
ld h, [hl]
ld l, a
@@ -428,512 +730,484 @@ ReadMapEventHeader:: ; 2336
call ReadWarps
call ReadCoordEvents
call ReadSignposts
-
pop af
and a
ret nz
-
call ReadObjectEvents
ret
-; 234f
-ReadMapScripts:: ; 234f
- ld hl, MapScriptHeaderPointer
+ReadMapScripts:: ; 242e (0:242e)
+ ld hl, wd08d
ld a, [hli]
ld h, [hl]
ld l, a
call ReadMapTriggers
call ReadMapCallbacks
ret
-; 235c
-CopySecondMapHeader:: ; 235c
- ld de, MapHeader
- ld c, 12 ; size of the second map header
-.loop
+CopySecondMapHeader:: ; 243b (0:243b)
+ ld de, wMapBorderBlock
+ ld c, $c
+.asm_2440
ld a, [hli]
ld [de], a
inc de
dec c
- jr nz, .loop
+ jr nz, .asm_2440
ret
-; 2368
-GetMapConnections:: ; 2368
+GetMapConnections:: ; 2447 (0:2447)
ld a, $ff
- ld [NorthConnectedMapGroup], a
- ld [SouthConnectedMapGroup], a
- ld [WestConnectedMapGroup], a
- ld [EastConnectedMapGroup], a
-
- ld a, [MapConnections]
+ ld [wd092], a
+ ld [wd09e], a
+ ld [wd0aa], a
+ ld [wd0b6], a
+ ld a, [wd091]
ld b, a
-
- bit NORTH_F, b
- jr z, .no_north
- ld de, NorthMapConnection
+ bit 3, b
+ jr z, .asm_2463
+ ld de, wd092
call GetMapConnection
-.no_north
-
- bit SOUTH_F, b
- jr z, .no_south
- ld de, SouthMapConnection
+.asm_2463
+ bit 2, b
+ jr z, .asm_246d
+ ld de, wd09e
call GetMapConnection
-.no_south
-
- bit WEST_F, b
- jr z, .no_west
- ld de, WestMapConnection
+.asm_246d
+ bit 1, b
+ jr z, .asm_2477
+ ld de, wd0aa
call GetMapConnection
-.no_west
-
- bit EAST_F, b
- jr z, .no_east
- ld de, EastMapConnection
+.asm_2477
+ bit 0, b
+ jr z, .asm_2481
+ ld de, wd0b6
call GetMapConnection
-.no_east
-
+.asm_2481
ret
-; 23a3
-GetMapConnection:: ; 23a3
-; Load map connection struct at hl into de.
- ld c, SouthMapConnection - NorthMapConnection
-.loop
+GetMapConnection:: ; 2482 (0:2482)
+ ld c, $c
+.asm_2484
ld a, [hli]
ld [de], a
inc de
dec c
- jr nz, .loop
+ jr nz, .asm_2484
ret
-; 23ac
-ReadMapTriggers:: ; 23ac
- ld a, [hli] ; trigger count
+ReadMapTriggers:: ; 248b (0:248b)
+ ld a, [hli]
ld c, a
- ld [wCurrMapTriggerCount], a ; current map trigger count
+ ld [wd951], a
ld a, l
- ld [wCurrMapTriggerHeaderPointer], a ; map trigger pointer
+ ld [wd952], a
ld a, h
- ld [wCurrMapTriggerHeaderPointer + 1], a
+ ld [wd953], a
ld a, c
and a
ret z
-
- ld bc, 4 ; size of a map trigger header entry
- call AddNTimes
+ ld bc, $4
+ call Function31a3
ret
-; 23c3
-ReadMapCallbacks:: ; 23c3
+ReadMapCallbacks:: ; 24a2 (0:24a2)
ld a, [hli]
ld c, a
- ld [wCurrMapCallbackCount], a
+ ld [wd954], a
ld a, l
- ld [wCurrMapCallbackHeaderPointer], a
+ ld [wd955], a
ld a, h
- ld [wCurrMapCallbackHeaderPointer + 1], a
+ ld [wd956], a
ld a, c
and a
ret z
-
- ld bc, 3
- call AddNTimes
+ ld bc, $3
+ call Function31a3
ret
-; 23da
-ReadWarps:: ; 23da
+ReadWarps:: ; 24b9 (0:24b9)
ld a, [hli]
ld c, a
- ld [wCurrMapWarpCount], a
+ ld [wd945], a
ld a, l
- ld [wCurrMapWarpHeaderPointer], a
+ ld [wd946], a
ld a, h
- ld [wCurrMapWarpHeaderPointer + 1], a
+ ld [wd947], a
ld a, c
and a
ret z
- ld bc, 5
- call AddNTimes
+ ld bc, $5
+ call Function31a3
ret
-; 23f1
-ReadCoordEvents:: ; 23f1
+ReadCoordEvents:: ; 24d0 (0:24d0)
ld a, [hli]
ld c, a
- ld [wCurrentMapXYTriggerCount], a
+ ld [wd948], a
ld a, l
- ld [wCurrentMapXYTriggerHeaderPointer], a
+ ld [wd949], a
ld a, h
- ld [wCurrentMapXYTriggerHeaderPointer + 1], a
-
+ ld [wd94a], a
ld a, c
and a
ret z
-
- ld bc, 8
- call AddNTimes
+ ld bc, $8
+ call Function31a3
ret
-; 2408
-ReadSignposts:: ; 2408
+ReadSignposts:: ; 24e7 (0:24e7)
ld a, [hli]
ld c, a
- ld [wCurrentMapSignpostCount], a
+ ld [wd94b], a
ld a, l
- ld [wCurrentMapSignpostHeaderPointer], a
+ ld [wd94c], a
ld a, h
- ld [wCurrentMapSignpostHeaderPointer + 1], a
-
+ ld [wd94d], a
ld a, c
and a
ret z
-
- ld bc, 5
- call AddNTimes
+ ld bc, $5
+ call Function31a3
ret
-; 241f
-ReadObjectEvents:: ; 241f
+ReadObjectEvents:: ; 24fe (0:24fe)
push hl
call ClearObjectStructs
pop de
- ld hl, Map1Object
+ ld hl, wMap2Object
ld a, [de]
inc de
- ld [wCurrentMapPersonEventCount], a
+ ld [wd94e], a
ld a, e
- ld [wCurrentMapPersonEventHeaderPointer], a
+ ld [wd94f], a
ld a, d
- ld [wCurrentMapPersonEventHeaderPointer + 1], a
-
- ld a, [wCurrentMapPersonEventCount]
+ ld [wd950], a
+ ld a, [wd94e]
call CopyMapObjectHeaders
-
-; get NUM_OBJECTS - [wCurrentMapPersonEventCount]
- ld a, [wCurrentMapPersonEventCount]
+ ld a, [wd94e]
ld c, a
- ld a, NUM_OBJECTS ; - 1
+ ld a, $10
sub c
- jr z, .skip
- ; jr c, .skip
-
-; stupid waste of time and space
- ld bc, 1
+ jr z, .asm_2533
+ ld bc, $1
add hl, bc
-; Fill the remaining sprite IDs and y coords with 0 and -1, respectively.
-; Bleeds into wObjectMasks due to a bug. Uncomment the above subtraction
-; to fix.
- ld bc, OBJECT_LENGTH
-.loop
- ld [hl], 0
+ ld bc, $10
+.asm_2529
+ ld [hl], $0
inc hl
- ld [hl], -1
+ ld [hl], $ff
dec hl
add hl, bc
dec a
- jr nz, .loop
-
-.skip
+ jr nz, .asm_2529
+.asm_2533
ld h, d
ld l, e
ret
-; 2457
-CopyMapObjectHeaders:: ; 2457
+CopyMapObjectHeaders:: ; 2536 (0:2536)
and a
ret z
-
ld c, a
-.loop
+.asm_2539
push bc
push hl
ld a, $ff
ld [hli], a
- ld b, MAPOBJECT_E - MAPOBJECT_SPRITE
-.loop2
+ ld b, $d
+.asm_2540
ld a, [de]
inc de
ld [hli], a
dec b
- jr nz, .loop2
-
+ jr nz, .asm_2540
pop hl
- ld bc, OBJECT_LENGTH
+ ld bc, $10
add hl, bc
pop bc
dec c
- jr nz, .loop
+ jr nz, .asm_2539
ret
-; 2471
-ClearObjectStructs:: ; 2471
- ld hl, Object1Struct
- ld bc, OBJECT_STRUCT_LENGTH * (NUM_OBJECT_STRUCTS - 1)
+ClearObjectStructs:: ; 2550 (0:2550)
+ ld hl, wObject1Struct
+ ld bc, $1e0
xor a
call ByteFill
-
-; Just to make sure (this is rather pointless)
- ld hl, Object1Struct
- ld de, OBJECT_STRUCT_LENGTH
- ld c, NUM_OBJECT_STRUCTS - 1
+ ld hl, wObject1Struct
+ ld de, $28
+ ld c, $c
xor a
-.loop
+.asm_2563
ld [hl], a
add hl, de
dec c
- jr nz, .loop
+ jr nz, .asm_2563
ret
-; 248a
-RestoreFacingAfterWarp:: ; 248a
+RestoreFacingAfterWarp::
call GetMapScriptHeaderBank
rst Bankswitch
-
- ld hl, MapEventHeaderPointer
+ ld hl, wd08f
ld a, [hli]
ld h, [hl]
ld l, a
-rept 3
- inc hl ; get to the warp coords
-endr
- ld a, [WarpNumber]
+ inc hl
+ inc hl
+ inc hl
+ ld a, [wd9ff]
dec a
ld c, a
- ld b, 0
- ld a, 5
- call AddNTimes
+ ld b, $0
+ ld a, $5
+ call Function31a3
ld a, [hli]
- ld [YCoord], a
+ ld [wda02], a
ld a, [hli]
- ld [XCoord], a
- ; destination warp number
+ ld [wda03], a
ld a, [hli]
cp $ff
- jr nz, .skip
- call .backup
-
-.skip
- callba GetCoordOfUpperLeftCorner
+ jr nz, .asm_2592
+ call BackUpWarp
+.asm_2592
+ call GetCoordOfUpperLeftCorner
ret
-; 24ba
-.backup
- ld a, [wPrevWarp]
- ld [BackupWarpNumber], a
- ld a, [wPrevMapGroup]
- ld [BackupMapGroup], a
- ld a, [wPrevMapNumber]
- ld [BackupMapNumber], a
+BackUpWarp:: ; 2596 (0:2596)
+ ld a, [wd046]
+ ld [wd9f5], a
+ ld a, [wd047]
+ ld [wd9f6], a
+ ld a, [wd048]
+ ld [wd9f7], a
ret
-; 24cd
-LoadBlockData:: ; 24cd
- ld hl, OverworldMap
- ld bc, OverworldMapEnd - OverworldMap
- ld a, 0
+GetCoordOfUpperLeftCorner:: ; 25a9 (0:25a9)
+ ld hl, wc700
+ ld a, [wda03]
+ bit 0, a
+ jr nz, .asm_25b9
+ srl a
+ add $1
+ jr .asm_25bd
+
+.asm_25b9
+ add $1
+ srl a
+.asm_25bd
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [wMapWidth]
+ add $6
+ ld c, a
+ ld b, $0
+ ld a, [wda02]
+ bit 0, a
+ jr nz, .asm_25d6
+ srl a
+ add $1
+ jr .asm_25da
+
+.asm_25d6
+ add $1
+ srl a
+.asm_25da
+ call Function31a3
+ ld a, l
+ ld [wOverworldMapAnchor], a
+ ld a, h
+ ld [wOverworldMapAnchor + 1], a
+ ld a, [wda02]
+ and $1
+ ld [wd07f], a
+ ld a, [wda03]
+ and $1
+ ld [wd080], a
+ ret
+
+LoadBlockData::
+ ld hl, wOverworldMap
+ ld bc, wOverworldMapEnd - wOverworldMap
+ ld a, $0
call ByteFill
call ChangeMap
call FillMapConnections
- ld a, MAPCALLBACK_TILES
+ ld a, $1
call RunMapCallback
ret
-; 24e4
-ChangeMap:: ; 24e4
+ChangeMap:: ; 260d (0:260d)
ld a, [hROMBank]
push af
-
- ld hl, OverworldMap
- ld a, [MapWidth]
- ld [hConnectedMapWidth], a
+ ld hl, wc700
+ ld a, [wMapWidth]
+ ld [hObjectStructIndexBuffer], a
add $6
ld [hConnectionStripLength], a
ld c, a
- ld b, 0
-rept 3
+ ld b, $0
add hl, bc
-endr
- ld c, 3
add hl, bc
- ld a, [MapBlockDataBank]
+ add hl, bc
+ ld c, $3
+ add hl, bc
+ ld a, [wd089]
rst Bankswitch
-
- ld a, [MapBlockDataPointer]
+ ld a, [wd08a]
ld e, a
- ld a, [MapBlockDataPointer+1]
+ ld a, [wd08b]
ld d, a
- ld a, [MapHeight]
+ ld a, [wd087]
ld b, a
-.row
+.asm_2635
push hl
- ld a, [hConnectedMapWidth]
+ ld a, [hObjectStructIndexBuffer]
ld c, a
-.col
+.asm_2639
ld a, [de]
inc de
ld [hli], a
dec c
- jr nz, .col
+ jr nz, .asm_2639
pop hl
- ld a, [hConnectionStripLength]
+ ld a, [hMapObjectIndexBuffer]
add l
ld l, a
- jr nc, .okay
+ jr nc, .asm_2647
inc h
-.okay
+.asm_2647
dec b
- jr nz, .row
-
+ jr nz, .asm_2635
pop af
rst Bankswitch
ret
-; 2524
-
-FillMapConnections:: ; 2524
-; North
- ld a, [NorthConnectedMapGroup]
+FillMapConnections:: ; 264d (0:264d)
+ ld a, [wd092]
cp $ff
- jr z, .South
+ jr z, .asm_2679
ld b, a
- ld a, [NorthConnectedMapNumber]
+ ld a, [wd093]
ld c, a
call GetAnyMapBlockdataBank
-
- ld a, [NorthConnectionStripPointer]
+ ld a, [wd094]
ld l, a
- ld a, [NorthConnectionStripPointer + 1]
+ ld a, [wd095]
ld h, a
- ld a, [NorthConnectionStripLocation]
+ ld a, [wd096]
ld e, a
- ld a, [NorthConnectionStripLocation + 1]
+ ld a, [wd097]
ld d, a
- ld a, [NorthConnectionStripLength]
+ ld a, [wd098]
ld [hConnectionStripLength], a
- ld a, [NorthConnectedMapWidth]
- ld [hConnectedMapWidth], a
+ ld a, [wd099]
+ ld [hObjectStructIndexBuffer], a
call FillNorthConnectionStrip
-
-.South
- ld a, [SouthConnectedMapGroup]
+.asm_2679
+ ld a, [wd09e]
cp $ff
- jr z, .West
+ jr z, .asm_26a5
ld b, a
- ld a, [SouthConnectedMapNumber]
+ ld a, [wd09f]
ld c, a
call GetAnyMapBlockdataBank
-
- ld a, [SouthConnectionStripPointer]
+ ld a, [wd0a0]
ld l, a
- ld a, [SouthConnectionStripPointer + 1]
+ ld a, [wd0a1]
ld h, a
- ld a, [SouthConnectionStripLocation]
+ ld a, [wd0a2]
ld e, a
- ld a, [SouthConnectionStripLocation + 1]
+ ld a, [wd0a3]
ld d, a
- ld a, [SouthConnectionStripLength]
+ ld a, [wd0a4]
ld [hConnectionStripLength], a
- ld a, [SouthConnectedMapWidth]
- ld [hConnectedMapWidth], a
+ ld a, [wd0a5]
+ ld [hObjectStructIndexBuffer], a
call FillSouthConnectionStrip
-
-.West
- ld a, [WestConnectedMapGroup]
+.asm_26a5
+ ld a, [wd0aa]
cp $ff
- jr z, .East
+ jr z, .asm_26d0
ld b, a
- ld a, [WestConnectedMapNumber]
+ ld a, [wd0ab]
ld c, a
call GetAnyMapBlockdataBank
-
- ld a, [WestConnectionStripPointer]
+ ld a, [wd0ac]
ld l, a
- ld a, [WestConnectionStripPointer + 1]
+ ld a, [wd0ad]
ld h, a
- ld a, [WestConnectionStripLocation]
+ ld a, [wd0ae]
ld e, a
- ld a, [WestConnectionStripLocation + 1]
+ ld a, [wd0af]
ld d, a
- ld a, [WestConnectionStripLength]
+ ld a, [wd0b0]
ld b, a
- ld a, [WestConnectedMapWidth]
+ ld a, [wd0b1]
ld [hConnectionStripLength], a
call FillWestConnectionStrip
-
-.East
- ld a, [EastConnectedMapGroup]
+.asm_26d0
+ ld a, [wd0b6]
cp $ff
- jr z, .Done
+ jr z, .asm_26fb
ld b, a
- ld a, [EastConnectedMapNumber]
+ ld a, [wd0b7]
ld c, a
call GetAnyMapBlockdataBank
-
- ld a, [EastConnectionStripPointer]
+ ld a, [wd0b8]
ld l, a
- ld a, [EastConnectionStripPointer + 1]
+ ld a, [wd0b9]
ld h, a
- ld a, [EastConnectionStripLocation]
+ ld a, [wd0ba]
ld e, a
- ld a, [EastConnectionStripLocation + 1]
+ ld a, [wd0bb]
ld d, a
- ld a, [EastConnectionStripLength]
+ ld a, [wd0bc]
ld b, a
- ld a, [EastConnectedMapWidth]
+ ld a, [wd0bd]
ld [hConnectionStripLength], a
call FillEastConnectionStrip
-
-.Done
+.asm_26fb
ret
-; 25d3
-
-FillNorthConnectionStrip::
-FillSouthConnectionStrip:: ; 25d3
- ld c, 3
-.y
+FillNorthConnectionStrip:: ; 26fc (0:26fc)
+FillSouthConnectionStrip:: ; 26fc (0:26fc)
+ ld c, $3
+.asm_26fe
push de
-
push hl
- ld a, [hConnectionStripLength]
+ ld a, [hMapObjectIndexBuffer]
ld b, a
-.x
+.asm_2703
ld a, [hli]
ld [de], a
inc de
dec b
- jr nz, .x
+ jr nz, .asm_2703
pop hl
-
- ld a, [hConnectedMapWidth]
+ ld a, [hObjectStructIndexBuffer]
ld e, a
- ld d, 0
+ ld d, $0
add hl, de
pop de
-
- ld a, [MapWidth]
- add 6
+ ld a, [wMapWidth]
+ add $6
add e
ld e, a
- jr nc, .okay
+ jr nc, .asm_271b
inc d
-.okay
+.asm_271b
dec c
- jr nz, .y
+ jr nz, .asm_26fe
ret
-; 25f6
-
-FillWestConnectionStrip::
-FillEastConnectionStrip:: ; 25f6
-.loop
- ld a, [MapWidth]
- add 6
+FillWestConnectionStrip:: ; 271f (0:271f)
+FillEastConnectionStrip:: ; 271f (0:271f)
+ ld a, [wMapWidth]
+ add $6
ld [hConnectedMapWidth], a
-
push de
-
push hl
ld a, [hli]
ld [de], a
@@ -945,158 +1219,128 @@ FillEastConnectionStrip:: ; 25f6
ld [de], a
inc de
pop hl
-
- ld a, [hConnectionStripLength]
+ ld a, [hMapObjectIndexBuffer]
ld e, a
- ld d, 0
+ ld d, $0
add hl, de
pop de
-
ld a, [hConnectedMapWidth]
add e
ld e, a
- jr nc, .okay
+ jr nc, .asm_2740
inc d
-.okay
+.asm_2740
dec b
- jr nz, .loop
+ jr nz, FillWestConnectionStrip
ret
-; 261b
-LoadMapStatus:: ; 261b
- ld [MapStatus], a
+LoadMapStatus::
+ ld [wd159], a
ret
-; 261f
-
-CallScript:: ; 261f
-; Call a script at a:hl.
- ld [ScriptBank], a
+CallScript::
+ ld [wd160], a
ld a, l
- ld [ScriptPos], a
+ ld [wd161], a
ld a, h
- ld [ScriptPos + 1], a
-
- ld a, PLAYEREVENT_MAPSCRIPT
- ld [ScriptRunning], a
-
+ ld [wd162], a
+ ld a, $ff
+ ld [wd15f], a
scf
ret
-; 2631
-CallMapScript:: ; 2631
-; Call a script at hl in the current bank if there isn't already a script running
- ld a, [ScriptRunning]
+CallMapScript::
+ ld a, [wd15f]
and a
ret nz
call GetMapScriptHeaderBank
jr CallScript
-; 263b
-RunMapCallback:: ; 263b
-; Will run the first callback found in the map header with execution index equal to a.
+RunMapCallback:: ; 2764 (0:2764)
ld b, a
ld a, [hROMBank]
push af
call SwitchToMapScriptHeaderBank
- call .FindCallback
- jr nc, .done
-
+ call FindCallback
+ jr nc, .asm_2779
call GetMapScriptHeaderBank
ld b, a
ld d, h
ld e, l
call ExecuteCallbackScript
-
-.done
+.asm_2779
pop af
rst Bankswitch
ret
-; 2653
-.FindCallback: ; 2653
- ld a, [wCurrMapCallbackCount]
+FindCallback:: ; 277c (0:277c)
+ ld a, [wd954]
ld c, a
and a
ret z
- ld hl, wCurrMapCallbackHeaderPointer
+ ld hl, wd955
ld a, [hli]
ld h, [hl]
ld l, a
or h
ret z
- ld de, 3
-.loop
+ ld de, $3
+.asm_278d
ld a, [hl]
cp b
- jr z, .found
+ jr z, .asm_2797
add hl, de
dec c
- jr nz, .loop
+ jr nz, .asm_278d
xor a
ret
-.found
+.asm_2797
inc hl
ld a, [hli]
ld h, [hl]
ld l, a
scf
ret
-; 2674
-ExecuteCallbackScript:: ; 2674
-; Do map callback de and return to script bank b.
+ExecuteCallbackScript:: ; 279d (0:279d)
callba CallCallback
- ld a, [ScriptMode]
+ ld a, [wd15e]
push af
- ld hl, ScriptFlags
+ ld hl, wd15b
ld a, [hl]
push af
set 1, [hl]
callba EnableScriptMode
callba ScriptEvents
pop af
- ld [ScriptFlags], a
+ ld [wd15b], a
pop af
- ld [ScriptMode], a
+ ld [wd15e], a
ret
-; 269a
-MapTextbox:: ; 269a
+MapTextbox::
ld a, [hROMBank]
push af
-
ld a, b
rst Bankswitch
-
- push hl
- call SpeechTextBox
- call Function2e31
- ld a, 1
+ call SetUpTextBox
+ ld a, $1
ld [hOAMUpdate], a
- call ApplyTilemap
- pop hl
call PrintTextBoxText
xor a
ld [hOAMUpdate], a
-
pop af
rst Bankswitch
ret
-; 26b7
-
-Call_a_de:: ; 26b7
-; Call a:de.
- ld [hBuffer], a
+Call_a_de::
+ ld [wBuffer], a
ld a, [hROMBank]
push af
- ld a, [hBuffer]
+ ld a, [wBuffer]
rst Bankswitch
-
call .de
-
pop af
rst Bankswitch
ret
@@ -1104,46 +1348,35 @@ Call_a_de:: ; 26b7
.de
push de
ret
-; 26c7
-GetMovementData:: ; 26c7
-; Initialize the movement data for person c at b:hl
+GetMovementData::
ld a, [hROMBank]
push af
ld a, b
rst Bankswitch
-
ld a, c
call LoadMovementDataPointer
-
pop hl
ld a, h
rst Bankswitch
ret
-; 26d4
-
-GetScriptByte:: ; 0x26d4
-; Return byte at ScriptBank:ScriptPos in a.
+GetScriptByte::
push hl
push bc
ld a, [hROMBank]
push af
- ld a, [ScriptBank]
+ ld a, [wd160]
rst Bankswitch
-
- ld hl, ScriptPos
+ ld hl, wd161
ld c, [hl]
inc hl
ld b, [hl]
-
ld a, [bc]
-
inc bc
ld [hl], b
dec hl
ld [hl], c
-
ld b, a
pop af
rst Bankswitch
@@ -1151,188 +1384,172 @@ GetScriptByte:: ; 0x26d4
pop bc
pop hl
ret
-; 0x26ef
-ObjectEvent:: ; 0x26ef
+ObjectEvent::
jumptextfaceplayer ObjectEventText
-; 0x26f2
ObjectEventText::
- text_jump _ObjectEventText
+ text_jump ObjectEventText_
db "@"
-; 0x26f7
-BGEvent:: ; 26f7
+BGEvent::
jumptext BGEventText
-; 26fa
-BGEventText:: ; 26fa
- text_jump UnknownText_0x1c46fc
+BGEventText::
+ text_jump BGEventText_
db "@"
-; 26ff
-CoordinatesEvent:: ; 26ff
+CoordinatesEvent::
jumptext CoordinatesEventText
-; 2702
-CoordinatesEventText:: ; 2702
- text_jump UnknownText_0x1c4706
+CoordinatesEventText::
+ text_jump CoordinatesEventText_
db "@"
-; 2707
-CheckObjectMask:: ; 2707
+CheckObjectMask::
ld a, [hMapObjectIndexBuffer]
+.asm_282c
ld e, a
ld d, $0
- ld hl, wObjectMasks
+ ld hl, MapObjectsEnd
add hl, de
ld a, [hl]
+.asm_2834
ret
-; 2712
-MaskObject:: ; 2712
- ld a, [hMapObjectIndexBuffer]
+MaskObject:: ; 2835 (0:2835)
+ ld a, [hConnectionStripLength]
ld e, a
ld d, $0
- ld hl, wObjectMasks
+ ld hl, wd545
+.asm_283c
add hl, de
- ld [hl], -1 ; , masked
+ ld [hl], $ff
ret
-; 271e
-UnmaskObject:: ; 271e
+UnmaskObject:: ; 2841 (0:2841)
ld a, [hMapObjectIndexBuffer]
ld e, a
ld d, $0
- ld hl, wObjectMasks
+ ld hl, MapObjectsEnd
add hl, de
- ld [hl], 0 ; unmasked
+ ld [hl], $0
ret
-; 272a
-ScrollMapDown:: ; 272a
+ScrollMapDown::
hlcoord 0, 0
- ld de, BGMapBuffer
+ ld de, wBGMapBuffer
call BackupBGMapRow
- ld c, 2 * SCREEN_WIDTH
+ ld c, $28
call FarCallScrollBGMapPalettes
- ld a, [wBGMapAnchor]
+ ld a, [wd05b]
ld e, a
- ld a, [wBGMapAnchor + 1]
+ ld a, [wd05c]
ld d, a
call UpdateBGMapRow
ld a, $1
ld [hBGMapUpdate], a
ret
-; 2748
-ScrollMapUp:: ; 2748
- hlcoord 0, SCREEN_HEIGHT - 2
- ld de, BGMapBuffer
+ScrollMapUp::
+ hlcoord 0, 16
+ ld de, wBGMapBuffer
call BackupBGMapRow
- ld c, 2 * SCREEN_WIDTH
+ ld c, $28
call FarCallScrollBGMapPalettes
- ld a, [wBGMapAnchor]
+ ld a, [wd05b]
ld l, a
- ld a, [wBGMapAnchor + 1]
+ ld a, [wd05c]
ld h, a
- ld bc, $0200
+ ld bc, $200
add hl, bc
-; cap d at VBGMap1 / $100
ld a, h
- and %00000011
- or VBGMap0 / $100
+ and $3
+ or $98
ld e, l
ld d, a
call UpdateBGMapRow
ld a, $1
ld [hBGMapUpdate], a
ret
-; 2771
-ScrollMapRight:: ; 2771
- hlcoord 0, 0
- ld de, BGMapBuffer
+ScrollMapRight::
+ ld hl, wTileMap
+ ld de, wBGMapBuffer
call BackupBGMapColumn
- ld c, 2 * SCREEN_HEIGHT
+ ld c, $24
call FarCallScrollBGMapPalettes
- ld a, [wBGMapAnchor]
+ ld a, [wd05b]
ld e, a
- ld a, [wBGMapAnchor + 1]
+ ld a, [wd05c]
ld d, a
call UpdateBGMapColumn
ld a, $1
ld [hBGMapUpdate], a
ret
-; 278f
-ScrollMapLeft:: ; 278f
- hlcoord SCREEN_WIDTH - 2, 0
- ld de, BGMapBuffer
+ScrollMapLeft::
+ hlcoord 18, 0
+ ld de, wBGMapBuffer
call BackupBGMapColumn
- ld c, 2 * SCREEN_HEIGHT
+ ld c, $24
call FarCallScrollBGMapPalettes
- ld a, [wBGMapAnchor]
+ ld a, [wd05b]
ld e, a
- and %11100000
+ and $e0
ld b, a
ld a, e
- add SCREEN_HEIGHT
- and %00011111
+ add $12
+ and $1f
or b
ld e, a
- ld a, [wBGMapAnchor + 1]
+ ld a, [wd05c]
ld d, a
call UpdateBGMapColumn
ld a, $1
ld [hBGMapUpdate], a
ret
-; 27b7
-BackupBGMapRow:: ; 27b7
- ld c, 2 * SCREEN_WIDTH
-.loop
+BackupBGMapRow:: ; 28da (0:28da)
+ ld c, $28
+.asm_28dc
ld a, [hli]
ld [de], a
inc de
dec c
- jr nz, .loop
+ jr nz, .asm_28dc
ret
-; 27c0
-BackupBGMapColumn:: ; 27c0
- ld c, SCREEN_HEIGHT
-.loop
+BackupBGMapColumn:: ; 28e3 (0:28e3)
+ ld c, $12
+.asm_28e5
ld a, [hli]
ld [de], a
inc de
ld a, [hl]
ld [de], a
inc de
- ld a, SCREEN_WIDTH - 1
+ ld a, $13
add l
ld l, a
- jr nc, .skip
+ jr nc, .asm_28f2
inc h
-
-.skip
+.asm_28f2
dec c
- jr nz, .loop
+ jr nz, .asm_28e5
ret
-; 27d3
-UpdateBGMapRow:: ; 27d3
- ld hl, BGMapBufferPtrs
+UpdateBGMapRow:: ; 28f6 (0:28f6)
+ ld hl, wBGMapBufferPtrs
push de
call .iteration
pop de
ld a, $20
add e
ld e, a
-
.iteration
- ld c, 10
-.loop
+ ld c, $a
+.asm_2904
ld a, e
ld [hli], a
ld a, d
@@ -1347,16 +1564,15 @@ UpdateBGMapRow:: ; 27d3
or b
ld e, a
dec c
- jr nz, .loop
- ld a, SCREEN_WIDTH
+ jr nz, .asm_2904
+ ld a, $14
ld [hFFDE], a
ret
-; 27f8
-UpdateBGMapColumn:: ; 27f8
- ld hl, BGMapBufferPtrs
- ld c, SCREEN_HEIGHT
-.loop
+UpdateBGMapColumn:: ; 291b (0:291b)
+ ld hl, wBGMapBufferPtrs
+ ld c, $12
+.asm_2920
ld a, e
ld [hli], a
ld a, d
@@ -1364,225 +1580,180 @@ UpdateBGMapColumn:: ; 27f8
ld a, $20
add e
ld e, a
- jr nc, .skip
+ jr nc, .asm_2931
inc d
-; cap d at VBGMap1 / $100
ld a, d
and $3
- or VBGMap0 / $100
+ or $98
ld d, a
-
-.skip
+.asm_2931
dec c
- jr nz, .loop
- ld a, SCREEN_HEIGHT
+ jr nz, .asm_2920
+ ld a, $12
ld [hFFDE], a
ret
-; 2816
-; unreferenced
- ld hl, BGMapBuffer
- ld bc, SGBPredef - BGMapBuffer
+Function2939::
+ ld hl, wBGMapBuffer
+ ld bc, $78
xor a
call ByteFill
ret
-; 2821
-LoadTileset:: ; 2821
- ld hl, TilesetAddress
+LoadTileset:: ; 2944 (0:2944)
+ ld hl, wd0c3
ld a, [hli]
ld h, [hl]
ld l, a
- ld a, [TilesetBank]
- ld e, a
-
- ld a, [rSVBK]
- push af
- ld a, $6
- ld [rSVBK], a
-
- ld a, e
- ld de, wDecompressScratch
+ ld de, $9000
+ ld a, [wd0c2]
call FarDecompress
+ ld a, [wd082]
+ cp $1
+ jr z, .asm_2960
+ cp $2
+ jr z, .asm_2960
+ jr .asm_2966
- ld hl, wDecompressScratch
- ld de, VTiles2
- ld bc, $60 tiles
- call CopyBytes
-
- ld a, [rVBK]
- push af
- ld a, $1
- ld [rVBK], a
-
- ld hl, w6_d600
- ld de, VTiles2
- ld bc, $60 tiles
- call CopyBytes
-
- pop af
- ld [rVBK], a
-
- pop af
- ld [rSVBK], a
-
- ld a, [wTileset]
- cp TILESET_JOHTO_1
- jr z, .load_roof
- cp TILESET_JOHTO_2
- jr z, .load_roof
- cp TILESET_BATTLE_TOWER_OUTSIDE
- jr z, .load_roof
- jr .skip_roof
-
-.load_roof
+.asm_2960
callba LoadMapGroupRoof
-
-.skip_roof
+.asm_2966
xor a
ld [hTileAnimFrame], a
ret
-; 2879
-BufferScreen:: ; 2879
+BufferScreen::
ld hl, wOverworldMapAnchor
ld a, [hli]
ld h, [hl]
ld l, a
- ld de, wScreenSave
+ ld de, wda04
ld c, $5
ld b, $6
-.row
+.asm_2977
push bc
push hl
-.col
+.asm_2979
ld a, [hli]
ld [de], a
inc de
dec b
- jr nz, .col
+ jr nz, .asm_2979
pop hl
- ld a, [MapWidth]
+ ld a, [wMapWidth]
add $6
ld c, a
ld b, $0
add hl, bc
pop bc
dec c
- jr nz, .row
+ jr nz, .asm_2977
ret
-; 289d
-SaveScreen:: ; 289d
+SaveScreen::
ld hl, wOverworldMapAnchor
ld a, [hli]
ld h, [hl]
ld l, a
- ld de, wScreenSave
- ld a, [MapWidth]
- add 6
- ld [hMapObjectIndexBuffer], a
- ld a, [wPlayerStepDirection]
+ ld de, wda04
+ ld a, [wMapWidth]
+ add $6
+ ld [hConnectionStripLength], a
+ ld a, [wce86]
and a
- jr z, .down
- cp UP
- jr z, .up
- cp LEFT
- jr z, .left
- cp RIGHT
- jr z, .right
+ jr z, .asm_29bc
+ cp $1
+ jr z, .asm_29b1
+ cp $2
+ jr z, .asm_29c5
+ cp $3
+ jr z, .asm_29cb
ret
-.up
- ld de, wScreenSave + 6
- ld a, [hMapObjectIndexBuffer]
+.asm_29b1
+ ld de, wda0a
+ ld a, [hConnectionStripLength]
ld c, a
ld b, $0
add hl, bc
- jr .vertical
+ jr .asm_29bf
-.down
- ld de, wScreenSave
-.vertical
- ld b, 6
- ld c, 4
+.asm_29bc
+ ld de, wda04
+.asm_29bf
+ ld b, $6
+ ld c, $4
jr SaveScreen_LoadNeighbor
-.left
- ld de, wScreenSave + 1
+.asm_29c5
+ ld de, wda05
inc hl
- jr .horizontal
+ jr .asm_29ce
-.right
- ld de, wScreenSave
-.horizontal
- ld b, 5
- ld c, 5
+.asm_29cb
+ ld de, wda04
+.asm_29ce
+ ld b, $5
+ ld c, $5
jr SaveScreen_LoadNeighbor
-LoadNeighboringBlockData:: ; 28e3
+LoadNeighboringBlockData::
ld hl, wOverworldMapAnchor
ld a, [hli]
ld h, [hl]
ld l, a
- ld a, [MapWidth]
- add 6
- ld [hConnectionStripLength], a
- ld de, wScreenSave
- ld b, 6
- ld c, 5
-
-SaveScreen_LoadNeighbor:: ; 28f7
-.row
+ ld a, [wMapWidth]
+ add $6
+ ld [hMapObjectIndexBuffer], a
+ ld de, wda04
+ ld b, $6
+ ld c, $5
+SaveScreen_LoadNeighbor::
push bc
push hl
push de
-.col
+.asm_29eb
ld a, [de]
inc de
ld [hli], a
dec b
- jr nz, .col
+ jr nz, .asm_29eb
pop de
ld a, e
- add 6
+ add $6
ld e, a
- jr nc, .okay
+ jr nc, .asm_29f9
inc d
-
-.okay
+.asm_29f9
pop hl
ld a, [hConnectionStripLength]
ld c, a
- ld b, 0
+ ld b, $0
add hl, bc
pop bc
dec c
- jr nz, .row
+ jr nz, SaveScreen_LoadNeighbor
ret
-; 2914
-GetMovementPermissions:: ; 2914
+GetMovementPermissions:: ; 2a05 (0:2a05)
xor a
ld [TilePermissions], a
call .LeftRight
call .UpDown
-; get coords of current tile
- ld a, [PlayerStandingMapX]
+ ld a, [wPlayerStandingMapX]
ld d, a
- ld a, [PlayerStandingMapY]
+ ld a, [wPlayerStandingMapY]
ld e, a
call GetCoordTile
- ld [PlayerStandingTile], a
+ ld [wPlayerStandingTile], a
call .CheckHiNybble
ret nz
-
- ld a, [PlayerStandingTile]
- and 7
+ ld a, [wPlayerStandingTile]
+ and $7
ld hl, .MovementPermissionsData
add l
ld l, a
- ld a, 0
+ ld a, $0
adc h
ld h, a
ld a, [hl]
@@ -1590,262 +1761,229 @@ GetMovementPermissions:: ; 2914
or [hl]
ld [hl], a
ret
-; 2945
-.MovementPermissionsData ; 2945
- db 1, 2, 4, 8, 9, 10, 5, 6
-; 294d
+.MovementPermissionsData:
+ db 1 << DOWN
+ db 1 << UP
+ db 1 << LEFT
+ db 1 << RIGHT
+ db (1 << DOWN) | (1 << RIGHT)
+ db (1 << UP) | (1 << RIGHT)
+ db (1 << DOWN) | (1 << LEFT)
+ db (1 << UP) | (1 << LEFT)
-.UpDown
- ld a, [PlayerStandingMapX]
+.UpDown:
+ ld a, [wPlayerStandingMapX]
ld d, a
- ld a, [PlayerStandingMapY]
+ ld a, [wPlayerStandingMapY]
ld e, a
-
push de
inc e
call GetCoordTile
- ld [TileDown], a
+ ld [wTileDown], a
call .Down
-
pop de
dec e
call GetCoordTile
- ld [TileUp], a
+ ld [wTileUp], a
call .Up
ret
-; 296c
-.LeftRight
- ld a, [PlayerStandingMapX]
+.LeftRight:
+ ld a, [wPlayerStandingMapX]
ld d, a
- ld a, [PlayerStandingMapY]
+ ld a, [wPlayerStandingMapY]
ld e, a
-
push de
dec d
call GetCoordTile
- ld [TileLeft], a
+ ld [wTileLeft], a
call .Left
-
pop de
inc d
call GetCoordTile
- ld [TileRight], a
+ ld [wTileRight], a
call .Right
ret
-; 298b
-.Down
+.Down:
call .CheckHiNybble
ret nz
- ld a, [TileDown]
- and 7
+ ld a, [wTileDown]
+ and $7
cp $2
- jr z, .ok_down
+ jr z, .asm_2a90
cp $6
- jr z, .ok_down
+ jr z, .asm_2a90
cp $7
ret nz
-
-.ok_down
- ld a, [TilePermissions]
- or FACE_DOWN
- ld [TilePermissions], a
+.asm_2a90
+ ld hl, TilePermissions
+ set 3, [hl]
ret
-; 29a8
-.Up
+.Up:
call .CheckHiNybble
ret nz
- ld a, [TileUp]
- and 7
+ ld a, [wTileUp]
+ and $7
cp $3
- jr z, .ok_up
+ jr z, .asm_2aaa
cp $4
- jr z, .ok_up
+ jr z, .asm_2aaa
cp $5
ret nz
-
-.ok_up
- ld a, [TilePermissions]
- or FACE_UP
- ld [TilePermissions], a
+.asm_2aaa
+ ld hl, TilePermissions
+ set 3, [hl]
ret
-; 29c5
-.Right
+.Right:
call .CheckHiNybble
ret nz
- ld a, [TileRight]
- and 7
+ ld a, [wTileRight]
+ and $7
cp $1
- jr z, .ok_right
+ jr z, .asm_2ac4
cp $5
- jr z, .ok_right
+ jr z, .asm_2ac4
cp $7
ret nz
-
-.ok_right
- ld a, [TilePermissions]
- or FACE_RIGHT
- ld [TilePermissions], a
+.asm_2ac4
+ ld hl, TilePermissions
+ set 3, [hl]
ret
-; 29e2
-.Left
+.Left:
call .CheckHiNybble
ret nz
- ld a, [TileLeft]
- and 7
+ ld a, [wTileLeft]
+ and $7
cp $0
- jr z, .ok_left
+ jr z, .asm_2ade
cp $4
- jr z, .ok_left
+ jr z, .asm_2ade
cp $6
ret nz
-
-.ok_left
- ld a, [TilePermissions]
- or FACE_LEFT
- ld [TilePermissions], a
+.asm_2ade
+ ld hl, TilePermissions
+ set 3, [hl]
ret
-; 29ff
-.CheckHiNybble
+.CheckHiNybble:
and $f0
cp $b0
ret z
cp $c0
ret
-; 2a07
-
-GetFacingTileCoord:: ; 2a07
-; Return map coordinates in (d, e) and tile id in a
-; of the tile the player is facing.
- ld a, [PlayerDirection]
- and %1100
+GetFacingTileCoord:: ; 2aec (0:2aec)
+ ld a, [wPlayerDirection]
+ and $c
srl a
srl a
ld l, a
- ld h, 0
+ ld h, $0
add hl, hl
add hl, hl
ld de, .Directions
add hl, de
-
ld d, [hl]
inc hl
ld e, [hl]
inc hl
-
ld a, [hli]
ld h, [hl]
ld l, a
-
- ld a, [PlayerStandingMapX]
+ ld a, [wPlayerStandingMapX]
add d
ld d, a
- ld a, [PlayerStandingMapY]
+ ld a, [wPlayerStandingMapY]
add e
ld e, a
ld a, [hl]
ret
-.Directions
- ; x, y
+.Directions:
db 0, 1
- dw TileDown
+ dw wTileDown
db 0, -1
- dw TileUp
+ dw wTileUp
db -1, 0
- dw TileLeft
+ dw wTileLeft
db 1, 0
- dw TileRight
-; 2a3c
+ dw wTileRight
-GetCoordTile:: ; 2a3c
-; Get the collision byte for tile d, e
+GetCoordTile:: ; 2b21 (0:2b21)
call GetBlockLocation
ld a, [hl]
and a
- jr z, .nope
+ jr z, .asm_2b48
ld l, a
ld h, $0
add hl, hl
add hl, hl
- ld a, [TilesetCollisionAddress]
+ ld a, [wd0c9]
ld c, a
- ld a, [TilesetCollisionAddress + 1]
+ ld a, [wd0ca]
ld b, a
add hl, bc
rr d
- jr nc, .nocarry
+ jr nc, .asm_2b3b
inc hl
-
-.nocarry
+.asm_2b3b
rr e
- jr nc, .nocarry2
+ jr nc, .asm_2b41
inc hl
inc hl
-
-.nocarry2
- ld a, [TilesetCollisionBank]
- call GetFarByte
+.asm_2b41
+ ld a, [wd0c8]
+ call Function3128
ret
-.nope
- ld a, -1
+.asm_2b48
+ ld a, $ff
ret
-; 2a66
-GetBlockLocation:: ; 2a66
- ld a, [MapWidth]
- add 6
+GetBlockLocation::
+ ld a, [wMapWidth]
+ add $6
ld c, a
- ld b, 0
- ld hl, wc801
+ ld b, $0
+ ld hl, wc701
add hl, bc
ld a, e
srl a
- jr z, .nope
+ jr z, .asm_2b69
and a
-.loop
+.asm_2b5d
srl a
- jr nc, .ok
+ jr nc, .asm_2b62
add hl, bc
-
-.ok
+.asm_2b62
sla c
rl b
and a
- jr nz, .loop
-
-.nope
+ jr nz, .asm_2b5d
+.asm_2b69
ld c, d
srl c
- ld b, 0
+ ld b, $0
add hl, bc
ret
-; 2a8b
-CheckFacingSign:: ; 2a8b
+CheckFacingSign::
call GetFacingTileCoord
-; Load facing into b.
ld b, a
-; Convert the coordinates at de to within-boundaries coordinates.
ld a, d
- sub 4
+ sub $4
ld d, a
ld a, e
- sub 4
+ sub $4
ld e, a
-; If there are no signposts, we don't need to be here.
- ld a, [wCurrentMapSignpostCount]
+ ld a, [wd94b]
and a
ret z
-
ld c, a
ld a, [hROMBank]
push af
@@ -1855,53 +1993,47 @@ CheckFacingSign:: ; 2a8b
ld a, h
rst Bankswitch
ret
-; 2aaa
-CheckIfFacingTileCoordIsSign:: ; 2aaa
-; Checks to see if you are facing a signpost. If so, copies it into EngineBuffer1 and sets carry.
- ld hl, wCurrentMapSignpostHeaderPointer
+CheckIfFacingTileCoordIsSign:: ; 2b8f (0:2b8f)
+ ld hl, wd94c
ld a, [hli]
ld h, [hl]
ld l, a
-.loop
+.asm_2b95
push hl
ld a, [hli]
cp e
- jr nz, .next
+ jr nz, .asm_2ba0
ld a, [hli]
cp d
- jr nz, .next
- jr .copysign
+ jr nz, .asm_2ba0
+ jr .asm_2bad
-.next
+.asm_2ba0
pop hl
- ld a, 5 ; signpost event length
+ ld a, $5
add l
ld l, a
- jr nc, .nocarry
+ jr nc, .asm_2ba8
inc h
-
-.nocarry
+.asm_2ba8
dec c
- jr nz, .loop
+ jr nz, .asm_2b95
xor a
ret
-.copysign
+.asm_2bad
pop hl
- ld de, wCurSignpostYCoord
- ld bc, 5 ; signpost event length
+ ld de, wcf29
+ ld bc, $5
call CopyBytes
scf
ret
-; 2ad4
-CheckCurrentMapXYTriggers:: ; 2ad4
-; If there are no xy triggers, we don't need to be here.
- ld a, [wCurrentMapXYTriggerCount]
+CheckCurrentMapXYTriggers::
+ ld a, [wd948]
and a
ret z
-; Copy the trigger count into c.
ld c, a
ld a, [hROMBank]
push af
@@ -1912,236 +2044,191 @@ CheckCurrentMapXYTriggers:: ; 2ad4
rst Bankswitch
ret
-.TriggerCheck
-; Checks to see if you are standing on an xy-trigger. If yes, copies the trigger to EngineBuffer1 and sets carry.
- ld hl, wCurrentMapXYTriggerHeaderPointer
+.TriggerCheck:
+ ld hl, wd949
ld a, [hli]
ld h, [hl]
ld l, a
-; Load the active trigger ID into b
call CheckTriggers
ld b, a
-; Load your current coordinates into de. This will be used to check if your position is in the xy-trigger table for the current map.
- ld a, [PlayerStandingMapX]
- sub 4
+ ld a, [wPlayerStandingMapX]
+ sub $4
ld d, a
- ld a, [PlayerStandingMapY]
- sub 4
+ ld a, [wPlayerStandingMapY]
+ sub $4
ld e, a
-
-.loop
+.asm_2be2
push hl
ld a, [hli]
cp b
- jr z, .got_id
- cp -1
- jr nz, .next
-
-.got_id
+ jr z, .asm_2beb
+ cp $ff
+ jr nz, .asm_2bf5
+.asm_2beb
ld a, [hli]
cp e
- jr nz, .next
+ jr nz, .asm_2bf5
ld a, [hli]
cp d
- jr nz, .next
- jr .copytrigger
+ jr nz, .asm_2bf5
+ jr .asm_2c02
-.next
+.asm_2bf5
pop hl
- ld a, $8 ; xy-trigger size
+ ld a, $8
add l
ld l, a
- jr nc, .nocarry
+ jr nc, .asm_2bfd
inc h
-
-.nocarry
+.asm_2bfd
dec c
- jr nz, .loop
+ jr nz, .asm_2be2
xor a
ret
-.copytrigger
+.asm_2c02
pop hl
- ld de, wCurCoordEventTriggerID
- ld bc, 8 ; xy-trigger size
+ ld de, wcf29
+ ld bc, $8
call CopyBytes
scf
ret
-; 2b29
-FadeToMenu:: ; 2b29
+FadeToMenu::
xor a
ld [hBGMapMode], a
call LoadStandardMenuDataHeader
- callba FadeOutPalettes
- call ClearSprites
- call DisableSpriteUpdates
+ callba Function8c3ab
+ call Function30ff
+ call Function2f93
ret
-; 2b3c
-CloseSubmenu:: ; 2b3c
- call ClearBGPalettes
+CloseSubmenu::
+ call Function3449
call ReloadTilesetAndPalettes
call UpdateSprites
call Call_ExitMenu
- call ret_d90
+ call Functiond2a
jr FinishExitMenu
-; 2b4d
-ExitAllMenus:: ; 2b4d
- call ClearBGPalettes
+ExitAllMenus::
+ call Function3449
call Call_ExitMenu
call ReloadTilesetAndPalettes
call UpdateSprites
- call ret_d90
-FinishExitMenu:: ; 2b5c
- ld b, SCGB_MAPPALS
- call GetSGBLayout
- callba LoadOW_BGPal7
- call WaitBGMap2
+ call Functiond2a
+FinishExitMenu::
+ ld b, $9
+ call Function3583
+ call Function3456
callba FadeInPalettes
- call EnableSpriteUpdates
+ call Function2fa4
ret
-; 2b74
-ReturnToMapWithSpeechTextbox:: ; 0x2b74
+ReturnToMapWithSpeechTextbox::
push af
ld a, $1
- ld [wSpriteUpdatesEnabled], a
- call ClearBGPalettes
- call ClearSprites
+ ld [wRTCEnabled], a
+ call Function3449
+ call Function30ff
call ReloadTilesetAndPalettes
hlcoord 0, 12
lb bc, 4, 18
call TextBox
- ld hl, VramState
+ ld hl, wVramState
set 0, [hl]
call UpdateSprites
- call WaitBGMap2
- ld b, SCGB_MAPPALS
- call GetSGBLayout
- callba LoadOW_BGPal7
+ call Function3456
+ ld b, $9
+ call Function3583
call UpdateTimePals
call DelayFrame
ld a, $1
ld [hMapAnims], a
pop af
ret
-; 0x2bae
-ReloadTilesetAndPalettes:: ; 2bae
+ReloadTilesetAndPalettes:: ; 2c87 (0:2c87)
call DisableLCD
- call ClearSprites
+ call Function30ff
callba RefreshSprites
- call LoadStandardFont
- call LoadFontsExtra
+ call Functiond9e
+ call Functiondac
ld a, [hROMBank]
push af
- ld a, [MapGroup]
+ ld a, [wMapGroup]
ld b, a
- ld a, [MapNumber]
+ ld a, [wMapNumber]
ld c, a
call SwitchToAnyMapBank
callba UpdateTimeOfDayPal
call OverworldTextModeSwitch
call LoadTileset
- ld a, 9
- call SkipMusic
+ ld a, $8
+ call Function3e92
pop af
rst Bankswitch
-
call EnableLCD
ret
-; 2be5
-GetMapHeaderPointer:: ; 2be5
- ld a, [MapGroup]
+GetMapHeaderPointer:: ; 2cbe (0:2cbe)
+ ld a, [wMapGroup]
ld b, a
- ld a, [MapNumber]
+ ld a, [wMapNumber]
ld c, a
-GetAnyMapHeaderPointer:: ; 0x2bed
-; Prior to calling this function, you must have switched banks so that
-; MapGroupPointers is visible.
-
-; inputs:
-; b = map group, c = map number
-; XXX de = ???
-
-; outputs:
-; hl points to the map header
- push bc ; save map number for later
-
- ; get pointer to map group
+GetAnyMapHeaderPointer:: ; 2cc6 (0:2cc6)
+ push bc
dec b
ld c, b
- ld b, 0
- ld hl, MapGroupPointers
+ ld b, $0
+ ld hl, MapGroupPointers ; 25:40ed
add hl, bc
add hl, bc
-
ld a, [hli]
ld h, [hl]
ld l, a
- pop bc ; restore map number
-
- ; find the cth map header
+ pop bc
dec c
- ld b, 0
- ld a, 9
- call AddNTimes
+ ld b, $0
+ ld a, $9
+ call Function31a3
ret
-; 0x2c04
-
-GetMapHeaderMember:: ; 0x2c04
-; Extract data from the current map's header.
-
-; inputs:
-; de = offset of desired data within the mapheader
-
-; outputs:
-; bc = data from the current map's header
-; (e.g., de = $0003 would return a pointer to the secondary map header)
- ld a, [MapGroup]
+GetMapHeaderMember:: ; 2cdd (0:2cdd)
+ ld a, [wMapGroup]
ld b, a
- ld a, [MapNumber]
+ ld a, [wMapNumber]
ld c, a
-GetAnyMapHeaderMember:: ; 0x2c0c
- ; bankswitch
+GetAnyMapHeaderMember:: ; 2ce5 (0:2ce5)
ld a, [hROMBank]
push af
ld a, BANK(MapGroupPointers)
rst Bankswitch
-
call GetAnyMapHeaderPointer
add hl, de
ld c, [hl]
inc hl
ld b, [hl]
-
- ; bankswitch back
pop af
rst Bankswitch
ret
-; 0x2c1c
-SwitchToMapBank:: ; 2c1c
- ld a, [MapGroup]
+SwitchToMapBank:: ; 2cf5 (0:2cf5)
+ ld a, [wMapGroup]
ld b, a
- ld a, [MapNumber]
+ ld a, [wMapNumber]
ld c, a
-SwitchToAnyMapBank:: ; 2c24
+SwitchToAnyMapBank:: ; 2cfd (0:2cfd)
call GetAnyMapBank
rst Bankswitch
ret
-; 2c29
-GetMapBank:: ; 2c29
- ld a, [MapGroup]
+GetMapBank::
+ ld a, [wMapGroup]
ld b, a
- ld a, [MapNumber]
+ ld a, [wMapNumber]
ld c, a
-GetAnyMapBank:: ; 2c31
+GetAnyMapBank:: ; 2d0a (0:2d0a)
push hl
push de
ld de, 0
@@ -2150,236 +2237,195 @@ GetAnyMapBank:: ; 2c31
pop de
pop hl
ret
-; 2c3d
-PartiallyCopyMapHeader:: ; 2c3d
-; Copy second map header bank, tileset, permission, and second map header address
-; from the current map's map header.
+PartiallyCopyMapHeader:: ; 2d16 (0:2d16)
ld a, [hROMBank]
push af
ld a, BANK(MapGroupPointers)
rst Bankswitch
-
call GetMapHeaderPointer
- ld de, wSecondMapHeaderBank
- ld bc, MapHeader - wSecondMapHeaderBank
+ ld de, wd081
+ ld bc, $5
call CopyBytes
-
pop af
rst Bankswitch
ret
-; 2c52
-SwitchToMapScriptHeaderBank:: ; 2c52
- ld a, [MapScriptHeaderBank]
+SwitchToMapScriptHeaderBank:: ; 2d2b (0:2d2b)
+ ld a, [wd08c]
rst Bankswitch
ret
-; 2c57
-GetMapScriptHeaderBank:: ; 2c57
- ld a, [MapScriptHeaderBank]
+GetMapScriptHeaderBank:: ; 2d30 (0:2d30)
+ ld a, [wd08c]
ret
-; 2c5b
-GetAnyMapBlockdataBank:: ; 2c5b
-; Return the blockdata bank for group b map c.
+GetAnyMapBlockdataBank:: ; 2d34 (0:2d34)
push hl
push de
push bc
-
push bc
- ld de, 3 ; second map header pointer
+ ld de, $3
call GetAnyMapHeaderMember
ld l, c
ld h, b
pop bc
-
push hl
- ld de, 0 ; second map header bank
+ ld de, MBC3SRamEnable
call GetAnyMapHeaderMember
pop hl
-
- ld de, 3 ; blockdata bank
+ ld de, $3
add hl, de
ld a, c
- call GetFarByte
+ call Function3128
rst Bankswitch
-
pop bc
pop de
pop hl
ret
-; 2c7d
-GetSecondaryMapHeaderPointer:: ; 0x2c7d
-; returns the current map's secondary map header pointer in hl.
+GetSecondaryMapHeaderPointer:: ; 2d56 (0:2d56)
push bc
push de
- ld de, 3 ; secondary map header pointer (offset within header)
+ ld de, $3
call GetMapHeaderMember
ld l, c
ld h, b
pop de
pop bc
ret
-; 2c8a
-GetMapPermission:: ; 2c8a
+GetMapPermission:: ; 2d63 (0:2d63)
push hl
push de
push bc
- ld de, 2 ; permission
+ ld de, $2
call GetMapHeaderMember
ld a, c
pop bc
pop de
pop hl
ret
-; 2c98
- ret ; XXX
-; 2c99
+Function2d71:: ; XXX
+ ret
-GetAnyMapPermission:: ; 2c99
+GetAnyMapPermission:: ; 2d72 (0:2d72)
push hl
push de
push bc
- ld de, 2 ; permission
+ ld de, $2
call GetAnyMapHeaderMember
ld a, c
pop bc
pop de
pop hl
ret
-; 2ca7
-GetAnyMapTileset:: ; 2ca7
- ld de, 1 ; tileset
+GetAnyMapTileset:: ; 2d80 (0:2d80)
+ ld de, $1
call GetAnyMapHeaderMember
ld a, c
ret
-; 2caf
-GetWorldMapLocation:: ; 0x2caf
-; given a map group/id in bc, return its location on the Pokégear map.
+GetWorldMapLocation::
push hl
push de
push bc
-
- ld de, 5 ; landmark
+ ld de, $5
call GetAnyMapHeaderMember
ld a, c
-
pop bc
pop de
pop hl
ret
-; 0x2cbd
-
-GetMapHeaderMusic:: ; 2cbd
-RADIO_TOWER_MUSIC EQU 7
+GetMapHeaderMusic::
push hl
push bc
- ld de, 6 ; music
+ ld de, $6
call GetMapHeaderMember
ld a, c
- cp MUSIC_MAHOGANY_MART
- jr z, .mahoganymart
- bit RADIO_TOWER_MUSIC, c
- jr nz, .radiotower
- callba Function8b342
+ cp $64
+ jr z, .asm_2dc1
+ bit 7, c
+ jr nz, .asm_2dad
ld e, c
- ld d, 0
-.done
+ ld d, $0
+.asm_2daa
pop bc
pop hl
ret
-.radiotower
- ld a, [StatusFlags2]
+.asm_2dad
+ ld a, [wd572]
bit 0, a
- jr z, .clearedradiotower
- ld de, MUSIC_ROCKET_OVERTURE
- jr .done
+ jr z, .asm_2db9
+ ld de, $56
+ jr .asm_2daa
-.clearedradiotower
- ; the rest of the byte
+.asm_2db9
ld a, c
- and 1 << RADIO_TOWER_MUSIC - 1
+ and $7f
ld e, a
- ld d, 0
- jr .done
+ ld d, $0
+ jr .asm_2daa
-.mahoganymart
- ld a, [StatusFlags2]
+.asm_2dc1
+ ld a, [wd572]
bit 7, a
- jr z, .clearedmahogany
- ld de, MUSIC_ROCKET_HIDEOUT
- jr .done
+ jr z, .asm_2dcd
+ ld de, $48
+ jr .asm_2daa
-.clearedmahogany
- ld de, MUSIC_CHERRYGROVE_CITY
- jr .done
-; 2cff
+.asm_2dcd
+ ld de, $26
+ jr .asm_2daa
-GetMapHeaderTimeOfDayNybble:: ; 2cff
+GetMapHeaderTimeOfDayNybble:: ; 2dd2 (0:2dd2)
call GetPhoneServiceTimeOfDayByte
and $f
ret
-; 2d05
-GetMapHeaderPhoneServiceNybble:: ; 2d05
+GetMapHeaderPhoneServiceNybble::
call GetPhoneServiceTimeOfDayByte
and $f0
swap a
ret
-; 2d0d
-GetPhoneServiceTimeOfDayByte:: ; 2d0d
+GetPhoneServiceTimeOfDayByte:: ; 2de0 (0:2de0)
push hl
push bc
-
- ld de, 7 ; phone service and time of day
+ ld de, $7
call GetMapHeaderMember
ld a, c
-
pop bc
pop hl
ret
-; 2d19
-GetFishingGroup:: ; 2d19
+GetFishingGroup::
push de
push hl
push bc
-
- ld de, 8 ; fishing group
+ ld de, $8
call GetMapHeaderMember
ld a, c
-
pop bc
pop hl
pop de
ret
-; 2d27
-LoadTilesetHeader:: ; 2d27
+LoadTilesetHeader:: ; 2dfa (0:2dfa)
push hl
push bc
-
- ld hl, Tilesets
- ld bc, Tileset01 - Tileset00
- ld a, [wTileset]
- call AddNTimes
-
- ld de, TilesetBank
- ld bc, Tileset01 - Tileset00
-
- ld a, BANK(Tilesets)
+ ld hl, $56be
+ ld bc, $f
+ ld a, [wd082]
+ call Function31a3
+ ld de, wd0c2
+ ld bc, $f
+ ld a, $5
call FarCopyBytes
-
pop bc
pop hl
ret
-; 2d43
diff --git a/home/map_objects.asm b/home/map_objects.asm
index 49f3c0f4..6197ec54 100644
--- a/home/map_objects.asm
+++ b/home/map_objects.asm
@@ -289,7 +289,7 @@ Function17ea::
CopyObjectStruct::
ld [hMapObjectIndexBuffer], a
- call Function2841
+ call UnmaskObject
ld a, [hConnectionStripLength]
call GetMapObject
callba CopyObjectStruct_
@@ -327,7 +327,7 @@ DeleteOject_CheckStopFollow:: ; 1822 (0:1822)
DeleteObjectStruct::
call ApplyDeletionToMapObject
- call Function2835
+ call MaskObject
ret
CopyPlayerObjectTemplate::
diff --git a/home/predef.asm b/home/predef.asm
index 03f74146..6b478b56 100644
--- a/home/predef.asm
+++ b/home/predef.asm
@@ -1,53 +1,34 @@
-Predef:: ; 2d83
-; Call predefined function a.
-; Preserves bc, de, hl and f.
-
- ld [PredefID], a
+Predef:: ; 2e49 (0:2e49)
+ ld [wPredefID], a
ld a, [hROMBank]
push af
-
ld a, BANK(GetPredefPointer)
rst Bankswitch
- call GetPredefPointer ; stores hl in PredefTemp
-
-; Switch to the new function's bank
+ call GetPredefPointer
rst Bankswitch
-
-; Instead of directly calling stuff,
-; push it to the stack in reverse.
-
- ld hl, .Return
+ ld hl, .return
push hl
-
-; Call the Predef function
- ld a, [PredefAddress]
+ ld a, [wPredefPointerBuffer]
ld h, a
- ld a, [PredefAddress + 1]
+ ld a, [wPredefPointerBuffer + 1]
ld l, a
push hl
-
-; Get hl back
- ld a, [PredefTemp]
+ ld a, [wPredefHLBuffer]
ld h, a
- ld a, [PredefTemp + 1]
+ ld a, [wPredefHLBuffer + 1]
ld l, a
ret
-.Return
-; Clean up after the Predef call
-
+.return
ld a, h
- ld [PredefTemp], a
+ ld [wPredefHLBuffer], a
ld a, l
- ld [PredefTemp+1], a
-
+ ld [wPredefHLBuffer + 1], a
pop hl
ld a, h
rst Bankswitch
-
- ld a, [PredefTemp]
+ ld a, [wPredefHLBuffer]
ld h, a
- ld a, [PredefTemp + 1]
+ ld a, [wPredefHLBuffer + 1]
ld l, a
ret
-; 2dba
diff --git a/home/text.asm b/home/text.asm
index 6ed9f4ab..4ea9b6db 100644
--- a/home/text.asm
+++ b/home/text.asm
@@ -137,6 +137,7 @@ RadioTerminator:: ; 1052
PrintText::
call SetUpTextBox
+PrintTextBoxText::
bccoord TEXTBOX_INNERX, TEXTBOX_INNERY
call PlaceHLTextAtBC
ret
diff --git a/home/vblank.asm b/home/vblank.asm
index c0216ac2..8a41cb44 100644
--- a/home/vblank.asm
+++ b/home/vblank.asm
@@ -17,7 +17,7 @@ VBlank::
push de
jp [hl]
.return
- call Function1efa
+ call GameTimer
pop hl
pop de
pop bc
diff --git a/macros/event.asm b/macros/event.asm
index 35a2bf80..a5f72b9d 100644
--- a/macros/event.asm
+++ b/macros/event.asm
@@ -496,6 +496,12 @@ loadbytec2cf: macro
db \1 ; byte
endm
+ enum farwritetext_command
+farwritetext: macro
+ db farwritetext_command
+ dba \1
+ endm
+
enum writetext_command
writetext: macro
db writetext_command
@@ -531,14 +537,6 @@ jumptextfaceplayer: macro
dw \1 ; text_pointer
endm
-; IF _CRYSTAL
- enum farjumptext_command
-farjumptext: macro
- db farjumptext_command
- dba \1
- endm
-; ENDC
-
enum jumptext_command
jumptext: macro
db jumptext_command
diff --git a/macros/text.asm b/macros/text.asm
index cc7f609b..bce2fdd2 100644
--- a/macros/text.asm
+++ b/macros/text.asm
@@ -15,122 +15,122 @@ dex EQUS "db $e8, $50" ; End a Pokedex entry.
; TX_FAR EQU $16
enum_start 1
enum TX_RAM
-text_from_ram: MACRO
+text_from_ram: MACRO ; 01
db TX_RAM
dw \1
ENDM
enum TX_BCD
-text_bcd: macro
+text_bcd: macro ; 02
db TX_BCD
dw \1
db \2
ENDM
enum TX_MOVE
-text_move: macro
+text_move: macro ; 03
db TX_MOVE
dw \1
ENDM
enum TX_BOX
-text_box: macro
+text_box: macro ; 04
db TX_BOX
dw \1
db \2, \3
ENDM
enum TX_LOW
-text_low: macro
+text_low: macro ; 05
db TX_LOW
endm
enum WAIT_BUTTON
-text_waitbutton: macro
+text_waitbutton: macro ; 06
db WAIT_BUTTON
endm
enum TX_SCROLL
-text_scroll: macro
+text_scroll: macro ; 07
db TX_SCROLL
endm
enum START_ASM
-start_asm: macro
+start_asm: macro ; 08
db START_ASM
endm
enum TX_NUM
-deciram: macro
+deciram: macro ; 09
db TX_NUM
dw \1 ; address
dn \2, \3 ; bytes, digits
endm
enum TX_EXIT
-interpret_data: macro
+interpret_data: macro ; 0a
db TX_EXIT
endm
enum TX_SOUND_0B
-sound_dex_fanfare_50_79: macro
+sound_dex_fanfare_50_79: macro ; 0b
db TX_SOUND_0B
endm
enum TX_DOTS
-limited_interpret_data: macro
+limited_interpret_data: macro ; 0c
db TX_DOTS
db \1
endm
enum TX_LINK_WAIT_BUTTON
-link_wait_button: macro
+link_wait_button: macro ; 0d
db TX_LINK_WAIT_BUTTON
endm
enum TX_SOUND_0E
-sound_dex_fanfare_20_49: macro
+sound_dex_fanfare_20_49: macro ; 0e
db TX_SOUND_0E
endm
enum TX_SOUND_0F
-sound_item: macro
+sound_item: macro ; 0f
db TX_SOUND_0F
endm
enum TX_SOUND_10
-sound_caught_mon: macro
+sound_caught_mon: macro ; 10
db TX_SOUND_10
endm
enum TX_SOUND_11
-sound_dex_fanfare_80_109: macro
+sound_dex_fanfare_80_109: macro ; 11
db TX_SOUND_11
endm
enum TX_SOUND_12
-sound_fanfare: macro
+sound_fanfare: macro ; 12
db TX_SOUND_12
endm
enum TX_SOUND_13
-sound_slot_machine_start: macro
+sound_slot_machine_start: macro ; 13
db TX_SOUND_13
endm
enum TX_STRINGBUFFER
-text_buffer: macro
+text_buffer: macro ; 14
db TX_STRINGBUFFER
db \1
endm
enum TX_DAY
-current_day: macro
+current_day: macro ; 15
db TX_DAY
endm
enum TX_FAR
-text_jump: MACRO
+text_jump: MACRO ; 16
db TX_FAR
dw \1
db BANK(\1)
diff --git a/main.asm b/main.asm
index 77251e5d..fd92ad16 100644
--- a/main.asm
+++ b/main.asm
@@ -10,18 +10,22 @@ SpriteMovementData::
DeleteMapObject::
dr $4358, $557f
Function557f::
- dr $557f, $5795
+ dr $557f, $5730
+Function5730::
+ dr $5730, $5795
StopFollow::
dr $5795, $5896
UpdateSprites_::
+ dr $5896, $58c5
+Function58c5::
IF DEF(GOLD)
- dr $5896, $6545
+ dr $58c5, $6545
GameInit::
dr $6545, $8000
ENDC
IF DEF(SILVER)
- dr $5896, $650b
+ dr $58c5, $650b
GameInit::
dr $650b, $8000
ENDC
@@ -34,7 +38,9 @@ ScrollBGMapPalettes::
CopyObjectStruct_::
dr $86d7, $8ac9
Sine_e::
- dr $8ac9, $9cfd
+ dr $8ac9, $8b3b
+GetPredefPointer::
+ dr $8b3b, $9cfd
InitCGBPals:: ; 9cfd
dr $9cfd, $c000
@@ -52,17 +58,30 @@ StartClock:: ; 14089
dr $14089, $140ff
Function140ff:: ; 140ff
dr $140ff, $1413c
-Function1413c:: ; 413c
- dr $1413c, $14317
+Function1413c:: ; 1413c
+ dr $1413c, $1414b
+RefreshSprites:: ; 1414b
+ dr $1414b, $1416d
+Function1416d:: ; 1416d
+ dr $1416d, $14317
DoesSpriteHaveFacings_:: ; 14317
dr $14317, $14334
GetSpritePalette_:: ; 14334
- dr $14334, $18000
+ dr $14334, $14a18
+Function14a18:: ; 14a18
+ dr $14a18, $14a2d
+Function14a2d:: ; 14a2d
+ dr $14a2d, $15484
+RunMapSetupScript::
+ dr $15484, $15612
+Function15612:: ; 15612
+ dr $15612, $18000
SECTION "bank6", DATA, BANK[$6]
dr $18000, $1c000
SECTION "bank7", DATA, BANK[$7]
+LoadMapGroupRoof::
dr $1c000, $20000
SECTION "bank8", DATA, BANK[$8]
@@ -157,25 +176,56 @@ SECTION "bank20", DATA, BANK[$20]
dr $80000, $84000
SECTION "bank21", DATA, BANK[$21]
- dr $84000, $88000
+ dr $84000, $842db
+
+PrinterReceive_:: ; 842db
+ dr $842db, $88000
SECTION "bank22", DATA, BANK[$22]
dr $88000, $8c000
SECTION "bank23", DATA, BANK[$23]
- dr $8c000, $8c366
+ dr $8c000, $8c356
+
+UpdateTimeOfDayPal:: ; 8c356
+ dr $8c356, $8c366
_TimeOfDayPals:: ; 8c366
dr $8c366, $8c397
_UpdateTimePals:: ; 8c397
- dr $8c397, $90000
+ dr $8c397, $8c3a0
+
+FadeInPalettes:: ; 8c3a0
+ dr $8c3a0, $8c3ab
+
+Function8c3ab:: ; 8c3ab
+ dr $8c3ab, $8c3e9
+
+Function8c3e9:: ; 8c3e9
+ dr $8c3e9, $90000
SECTION "bank24", DATA, BANK[$24]
dr $90000, $94000
SECTION "bank25", DATA, BANK[$25]
- dr $94000, $98000
+MapTriggers:: ; 94000
+ dr $94000, $940ed
+
+MapGroupPointers::
+ dr $940ed, $96b89
+
+EnableScriptMode:: ; 96b89
+ dr $96b89, $96b91
+
+ScriptEvents:: ; 96b91
+ dr $96b91, $97365
+
+CallCallback:: ; 97365
+ dr $97365, $97c2a
+
+Function97c2a:: ; 97c2a
+ dr $97c2a, $98000
SECTION "bank26", DATA, BANK[$26]
dr $98000, $9c000
@@ -378,7 +428,16 @@ SECTION "bank64", DATA, BANK[$64]
dr $190000, $194000
SECTION "bank65", DATA, BANK[$65]
- dr $194000, $198000
+ dr $194000, $195b84
+
+ObjectEventText_:: ; 195b84
+ dr $195b84, $195b93
+
+BGEventText_:: ; 195b93
+ dr $195b93, $195b9d
+
+CoordinatesEventText_:: ; 195b9d
+ dr $195b9d, $198000
SECTION "bank66", DATA, BANK[$66]
dr $198000, $19c000
diff --git a/wram.asm b/wram.asm
index 24af4ace..7e38cf8e 100644
--- a/wram.asm
+++ b/wram.asm
@@ -142,7 +142,7 @@ wc1ce:: ds 1 ; c1ce
wMapTimeOfDay:: ds 1 ; c1cf
ds 3
wPrinterConnectionOpen:: ds 1
-wc1d4:: ds 1 ; c1d4
+wPrinterOpcode:: ds 1 ; c1d4
wc1d5:: ds 1 ; c1d5
wc1d6:: ds 1 ; c1d6
wc1d7:: ds 1 ; c1d7
@@ -203,6 +203,7 @@ wTileMap:: ; c3a0
wTileMapEnd:: ; c508
SECTION "Animated Objects", WRAM0
+wMisc:: ; c508
wTileMapBackup:: ; c508
; ds SCREEN_HEIGHT * SCREEN_WIDTH
wAnimatedObjectDynamicVTileOffsets:: ds 10 * 2 ; c508
@@ -553,6 +554,7 @@ wc6fd:: ds 1 ; c6fd
wc6fe:: ds 1 ; c6fe
wc6ff:: ds 1 ; c6ff
+wOverworldMap::
wLYOverrides::
wc700:: ds 1 ; c700
wc701:: ds 1 ; c701
@@ -1204,7 +1206,7 @@ wc986:: ds 1 ; c986
wc987:: ds 1 ; c987
wc988:: ds 1 ; c988
wc989:: ds 1 ; c989
-wc98a:: ds 1 ; c98a
+wHandshakeFrameDelay:: ds 1 ; c98a
wc98b:: ds 1 ; c98b
wc98c:: ds 1 ; c98c
wc98d:: ds 1 ; c98d
@@ -1828,6 +1830,8 @@ wcc10:: ds 1 ; cc10
wcc11:: ds 1 ; cc11
wcc12:: ds 1 ; cc12
wcc13:: ds 1 ; cc13
+wOverworldMapEnd::
+
wcc14:: ds 1 ; cc14
wcc15:: ds 1 ; cc15
wcc16:: ds 1 ; cc16
@@ -2126,11 +2130,12 @@ wce9f:: ds 1 ; ce9f
wcea0:: ds 1 ; cea0
wcea1:: ds 1 ; cea1
wcea2:: ds 1 ; cea2
-wcea3:: ds 1 ; cea3
-wcea4:: ds 1 ; cea4
-wcea5:: ds 1 ; cea5
-wcea6:: ds 1 ; cea6
-wcea7:: ds 1 ; cea7
+
+wTileDown:: ds 1 ; cea3
+wTileUp:: ds 1 ; cea4
+wTileLeft:: ds 1 ; cea5
+wTileRight:: ds 1 ; cea6
+TilePermissions:: ds 1 ; cea7
wWindowData::
wWindowStackPointer:: dw ; cea8
@@ -2369,13 +2374,10 @@ wcfd7:: ds 1 ; cfd7
wcfd8:: ds 1 ; cfd8
wcfd9:: ds 1 ; cfd9
wcfda:: ds 1 ; cfda
-wcfdb:: ds 1 ; cfdb
-wcfdc:: ds 1 ; cfdc
-wcfdd:: ds 1 ; cfdd
-wcfde:: ds 1 ; cfde
-wcfdf:: ds 1 ; cfdf
-wcfe0:: ds 1 ; cfe0
-wcfe1:: ds 1 ; cfe1
+wPredefID:: ds 1 ; cfdb
+wPredefHLBuffer:: dw ; cfdc
+wPredefPointerBuffer:: dw ; cfde
+wFarCallBCBuffer:: dw ; cfe0
wcfe2:: ds 1 ; cfe2
wcfe3:: ds 1 ; cfe3
wcfe4:: ds 1 ; cfe4
@@ -2508,8 +2510,8 @@ wd05c:: ds 1 ; d05c
wUsedSprites:: ds SPRITE_GFX_LIST_CAPACITY ; d05d
-wd07d:: ds 1 ; d07d
-wd07e:: ds 1 ; d07e
+wOverworldMapAnchor:: dw ; d07d
+
wd07f:: ds 1 ; d07f
wd080:: ds 1 ; d080
wd081:: ds 1 ; d081
@@ -2517,9 +2519,9 @@ wd082:: ds 1 ; d082
wd083:: ds 1 ; d083
wd084:: ds 1 ; d084
wd085:: ds 1 ; d085
-wd086:: ds 1 ; d086
+wMapBorderBlock:: ds 1 ; d086
wd087:: ds 1 ; d087
-wd088:: ds 1 ; d088
+wMapWidth:: ds 1 ; d088
wd089:: ds 1 ; d089
wd08a:: ds 1 ; d08a
wd08b:: ds 1 ; d08b
@@ -2580,9 +2582,8 @@ wd0c1:: ds 1 ; d0c1
wd0c2:: ds 1 ; d0c2
wd0c3:: ds 1 ; d0c3
wd0c4:: ds 1 ; d0c4
-wd0c5:: ds 1 ; d0c5
-wd0c6:: ds 1 ; d0c6
-wd0c7:: ds 1 ; d0c7
+wTilesetBlocksBank:: ds 1 ; d0c5
+wTilesetBlocksAddress:: dw ; d0c6
wd0c8:: ds 1 ; d0c8
wd0c9:: ds 1 ; d0c9
wd0ca:: ds 1 ; d0ca
@@ -2825,12 +2826,13 @@ wd1e6:: ds 1 ; d1e6
wd1e7:: ds 1 ; d1e7
wd1e8:: ds 1 ; d1e8
wd1e9:: ds 1 ; d1e9
-wd1ea:: ds 1 ; d1ea
-wd1eb:: ds 1 ; d1eb
-wd1ec:: ds 1 ; d1ec
-wd1ed:: ds 1 ; d1ed
-wd1ee:: ds 1 ; d1ee
-wd1ef:: ds 1 ; d1ef
+
+GameTimeCap:: ds 1 ; d1ea
+GameTimeHours:: ds 2 ; d1eb
+GameTimeMinutes:: ds 1 ; d1ed
+GameTimeSeconds:: ds 1 ; d1ee
+GameTimeFrames:: ds 1 ; d1ef
+
wd1f0:: ds 1 ; d1f0
wd1f1:: ds 1 ; d1f1
wd1f2:: ds 1 ; d1f2
@@ -3825,7 +3827,7 @@ wd8b4:: ds 1 ; d8b4
wd8b5:: ds 1 ; d8b5
wd8b6:: ds 1 ; d8b6
wd8b7:: ds 1 ; d8b7
-wd8b8:: ds 1 ; d8b8
+GameTimerPause:: ds 1 ; d8b8
wd8b9:: ds 1 ; d8b9
wd8ba:: ds 1 ; d8ba
wd8bb:: ds 1 ; d8bb
@@ -3962,8 +3964,7 @@ wd93d:: ds 1 ; d93d
wd93e:: ds 1 ; d93e
wd93f:: ds 1 ; d93f
wd940:: ds 1 ; d940
-wd941:: ds 1 ; d941
-wd942:: ds 1 ; d942
+wCurrentMapTriggerPointer:: dw ; d941
wd943:: ds 1 ; d943
wd944:: ds 1 ; d944
wd945:: ds 1 ; d945
@@ -4153,8 +4154,9 @@ wd9fc:: ds 1 ; d9fc
wd9fd:: ds 1 ; d9fd
wd9fe:: ds 1 ; d9fe
wd9ff:: ds 1 ; d9ff
-wda00:: ds 1 ; da00
-wda01:: ds 1 ; da01
+
+wMapGroup:: ds 1 ; da00
+wMapNumber:: ds 1 ; da01
wda02:: ds 1 ; da02
wda03:: ds 1 ; da03
wda04:: ds 1 ; da04