diff options
-rw-r--r-- | home.asm | 58 | ||||
-rw-r--r-- | home/audio.asm | 5 | ||||
-rw-r--r-- | home/farcall.asm | 42 | ||||
-rw-r--r-- | home/game_time.asm | 64 | ||||
-rw-r--r-- | home/handshake.asm | 43 | ||||
-rw-r--r-- | home/map.asm | 2220 | ||||
-rw-r--r-- | home/map_objects.asm | 4 | ||||
-rw-r--r-- | home/predef.asm | 45 | ||||
-rw-r--r-- | home/text.asm | 1 | ||||
-rw-r--r-- | home/vblank.asm | 2 | ||||
-rw-r--r-- | macros/event.asm | 14 | ||||
-rw-r--r-- | macros/text.asm | 44 | ||||
-rw-r--r-- | main.asm | 83 | ||||
-rw-r--r-- | wram.asm | 66 |
14 files changed, 1355 insertions, 1336 deletions
@@ -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) @@ -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 @@ -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 |