summaryrefslogtreecommitdiff
path: root/home/map.asm
diff options
context:
space:
mode:
Diffstat (limited to 'home/map.asm')
-rw-r--r--home/map.asm513
1 files changed, 4 insertions, 509 deletions
diff --git a/home/map.asm b/home/map.asm
index 5f34070e..d3a67c71 100644
--- a/home/map.asm
+++ b/home/map.asm
@@ -213,512 +213,7 @@ ReturnToMapFromSubmenu::
ldh [hMapEntryMethod], a
ret
-HandleNewMap::
- call ClearUnusedMapBuffer
- call ResetMapBufferEventFlags
- call ResetFlashIfOutOfCave
- call GetCurrentMapSceneID
- call ResetBikeFlags
- ld a, MAPCALLBACK_NEWMAP
- call RunMapCallback
-HandleContinueMap::
- farcall ClearCmdQueue
- ld a, MAPCALLBACK_CMDQUEUE
- call RunMapCallback
- call GetMapTimeOfDay
- ld [wMapTimeOfDay], a
- ret
-
-LoadMapTimeOfDay::
- ld a, $1
- ld [wSpriteUpdatesEnabled], a
- farcall ReplaceTimeOfDayPals
- farcall UpdateTimeOfDayPal
- call OverworldTextModeSwitch
- call .ClearBGMap
- call .PushAttrmap
- ret
-
-.ClearBGMap:
- ld a, HIGH(vBGMap0)
- ld [wBGMapAnchor + 1], a
- xor a ; LOW(vBGMap0)
- ld [wBGMapAnchor], a
- ldh [hSCY], a
- ldh [hSCX], a
- farcall ApplyBGMapAnchorToObjects
-
- ld a, "■"
- ld bc, vBGMap1 - vBGMap0
- hlbgcoord 0, 0
- call ByteFill
- ret
-
-.PushAttrmap:
- decoord 0, 0
- call .copy
- ldh a, [hCGB]
- and a
- ret z
-
- decoord 0, 0, wAttrmap
- ld a, $1
- ldh [rVBK], a
-.copy
- hlbgcoord 0, 0
- ld c, SCREEN_WIDTH
- ld b, SCREEN_HEIGHT
-.row
- push bc
-.column
- ld a, [de]
- inc de
- ld [hli], a
- dec c
- jr nz, .column
- ld bc, BG_MAP_WIDTH - SCREEN_WIDTH
- add hl, bc
- pop bc
- dec b
- jr nz, .row
- ld a, $0
- ldh [rVBK], a
- ret
-
-LoadMapGraphics::
- call LoadMapTileset
- call LoadTilesetGFX
- xor a
- ldh [hMapAnims], a
- xor a
- ldh [hTileAnimFrame], a
- farcall RefreshSprites
- call LoadFontsExtra
- ret
-
-LoadMapPalettes::
- ld b, $9
- jp GetSGBLayout
-
-RefreshMapSprites::
- call ClearSprites
- call ResetBGWindow
- call GetMovementPermissions
- farcall RefreshPlayerSprite
- farcall CheckReplaceChrisSprite
- ld hl, wPlayerSpriteSetupFlags
- bit PLAYERSPRITESETUP_SKIP_RELOAD_GFX_F, [hl]
- jr nz, .skip
- ld hl, wVramState
- set 0, [hl]
- call SafeUpdateSprites
-.skip
- xor a
- ld [wPlayerSpriteSetupFlags], a
- ret
-
-CheckMovingOffEdgeOfMap::
- ld a, [wPlayerStepDirection]
- cp STANDING
- ret z
- and a ; DOWN
- jr z, .down
- cp UP
- jr z, .up
- cp LEFT
- jr z, .left
- cp RIGHT
- jr z, .right
- and a
- ret
-
-.down
- ld a, [wPlayerStandingMapY]
- sub 4
- ld b, a
- ld a, [wMapHeight]
- add a
- cp b
- jr z, .ok
- and a
- ret
-
-.up
- ld a, [wPlayerStandingMapY]
- sub 4
- cp -1
- jr z, .ok
- and a
- ret
-
-.left
- ld a, [wPlayerStandingMapX]
- sub 4
- cp -1
- jr z, .ok
- and a
- ret
-
-.right
- ld a, [wPlayerStandingMapX]
- sub 4
- ld b, a
- ld a, [wMapWidth]
- add a
- cp b
- jr z, .ok
- and a
- ret
-
-.ok
- scf
- ret
-
-EnterMapConnection::
-; Return carry if a connection has been entered.
- ld a, [wPlayerStepDirection]
- and a ; DOWN
- jp z, .south
- cp UP
- jp z, .north
- cp LEFT
- jp z, .west
- cp RIGHT
- jp z, .east
- ret
-
-.west
- ld a, [wWestConnectedMapGroup]
- ld [wMapGroup], a
- ld a, [wWestConnectedMapNumber]
- ld [wMapNumber], a
- ld a, [wWestConnectionStripXOffset]
- ld [wXCoord], a
- ld a, [wWestConnectionStripYOffset]
- ld hl, wYCoord
- add [hl]
- ld [hl], a
- ld c, a
- ld hl, wWestConnectionWindow
- ld a, [hli]
- ld h, [hl]
- ld l, a
- srl c
- jr z, .skip_to_load
- ld a, [wWestConnectedMapWidth]
- add 6
- ld e, a
- ld d, 0
-
-.loop
- add hl, de
- dec c
- jr nz, .loop
-
-.skip_to_load
- ld a, l
- ld [wOverworldMapAnchor], a
- ld a, h
- ld [wOverworldMapAnchor + 1], a
- jp .done
-
-.east
- ld a, [wEastConnectedMapGroup]
- ld [wMapGroup], a
- ld a, [wEastConnectedMapNumber]
- ld [wMapNumber], a
- ld a, [wEastConnectionStripXOffset]
- ld [wXCoord], a
- ld a, [wEastConnectionStripYOffset]
- ld hl, wYCoord
- add [hl]
- ld [hl], a
- ld c, a
- ld hl, wEastConnectionWindow
- ld a, [hli]
- ld h, [hl]
- ld l, a
- srl c
- jr z, .skip_to_load2
- ld a, [wEastConnectedMapWidth]
- add 6
- ld e, a
- ld d, 0
-
-.loop2
- add hl, de
- dec c
- jr nz, .loop2
-
-.skip_to_load2
- ld a, l
- ld [wOverworldMapAnchor], a
- ld a, h
- ld [wOverworldMapAnchor + 1], a
- jp .done
-
-.north
- ld a, [wNorthConnectedMapGroup]
- ld [wMapGroup], a
- ld a, [wNorthConnectedMapNumber]
- ld [wMapNumber], a
- ld a, [wNorthConnectionStripYOffset]
- ld [wYCoord], a
- ld a, [wNorthConnectionStripXOffset]
- ld hl, wXCoord
- add [hl]
- ld [hl], a
- ld c, a
- ld hl, wNorthConnectionWindow
- 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 .done
-
-.south
- ld a, [wSouthConnectedMapGroup]
- ld [wMapGroup], a
- ld a, [wSouthConnectedMapNumber]
- ld [wMapNumber], a
- ld a, [wSouthConnectionStripYOffset]
- ld [wYCoord], a
- ld a, [wSouthConnectionStripXOffset]
- ld hl, wXCoord
- add [hl]
- ld [hl], a
- ld c, a
- ld hl, wSouthConnectionWindow
- 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
-.done
- scf
- ret
-
-CheckWarpTile::
- call GetDestinationWarpNumber
- ret nc
-
- push bc
- farcall CheckDirectionalWarp
- pop bc
- ret nc
-
- call CopyWarpData
- scf
- ret
-
-WarpCheck::
- call GetDestinationWarpNumber
- ret nc
- call CopyWarpData
- ret
-
-GetDestinationWarpNumber::
- farcall CheckWarpCollision
- ret nc
-
- ldh a, [hROMBank]
- push af
-
- call SwitchToMapScriptsBank
- call .GetDestinationWarpNumber
-
- pop de
- ld a, d
- rst Bankswitch
- ret
-
-.GetDestinationWarpNumber:
- ld a, [wPlayerStandingMapY]
- sub 4
- ld e, a
- ld a, [wPlayerStandingMapX]
- sub 4
- ld d, a
- ld a, [wCurMapWarpCount]
- and a
- ret z
-
- ld c, a
- ld hl, wCurMapWarpsPointer
- ld a, [hli]
- ld h, [hl]
- ld l, a
-.loop
- push hl
- ld a, [hli]
- cp e
- jr nz, .next
- ld a, [hli]
- cp d
- jr nz, .next
- jr .found_warp
-
-.next
- pop hl
- ld a, WARP_EVENT_SIZE
- add l
- ld l, a
- jr nc, .okay
- inc h
-
-.okay
- dec c
- jr nz, .loop
- xor a
- ret
-
-.found_warp
- pop hl
- call .IncreaseHLTwice
- ret nc ; never encountered
-
- ld a, [wCurMapWarpCount]
- inc a
- sub c
- ld c, a
- scf
- ret
-
-.IncreaseHLTwice:
- inc hl
- inc hl
- scf
- ret
-
-CopyWarpData::
- ldh a, [hROMBank]
- push af
-
- call SwitchToMapScriptsBank
- call .CopyWarpData
-
- pop af
- rst Bankswitch
- scf
- ret
-
-.CopyWarpData:
- push bc
- ld hl, wCurMapWarpsPointer
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, c
- dec a
- ld bc, WARP_EVENT_SIZE
- call AddNTimes
- ld bc, 2 ; warp number
- add hl, bc
- ld a, [hli]
- cp -1
- jr nz, .skip
- ld hl, wBackupWarpNumber
- ld a, [hli]
-
-.skip
- pop bc
- ld [wNextWarp], a
- ld a, [hli]
- ld [wNextMapGroup], a
- ld a, [hli]
- ld [wNextMapNumber], a
-
- ld a, c
- ld [wPrevWarp], a
- ld a, [wMapGroup]
- ld [wPrevMapGroup], a
- ld a, [wMapNumber]
- ld [wPrevMapNumber], a
- scf
- ret
-
-EnterMapWarp::
- call .SaveDigWarp
- call .SetSpawn
- ld a, [wNextWarp]
- ld [wWarpNumber], a
- ld a, [wNextMapGroup]
- ld [wMapGroup], a
- ld a, [wNextMapNumber]
- ld [wMapNumber], a
- ret
-
-.SaveDigWarp::
- call GetMapEnvironment
- call CheckOutdoorMap
- ret nz
- ld a, [wNextMapGroup]
- ld b, a
- ld a, [wNextMapNumber]
- ld c, a
- call GetAnyMapEnvironment
- call CheckIndoorMap
- ret nz
-
-; MOUNT_MOON_SQUARE and TIN_TOWER_ROOF are outdoor maps within indoor maps.
-; Dig and Escape Rope should not take you to them.
- ld a, [wPrevMapGroup]
- cp GROUP_MOUNT_MOON_SQUARE ; aka GROUP_TIN_TOWER_ROOF
- jr nz, .not_mt_moon_or_tin_tower
- ld a, [wPrevMapNumber]
- cp MAP_MOUNT_MOON_SQUARE
- ret z
- cp MAP_TIN_TOWER_ROOF
- ret z
-.not_mt_moon_or_tin_tower
-
- ld a, [wPrevWarp]
- ld [wDigWarpNumber], a
- ld a, [wPrevMapGroup]
- ld [wDigMapGroup], a
- ld a, [wPrevMapNumber]
- ld [wDigMapNumber], a
- ret
-
-.SetSpawn:
- call GetMapEnvironment
- call CheckOutdoorMap
- ret nz
- ld a, [wNextMapGroup]
- ld b, a
- ld a, [wNextMapNumber]
- ld c, a
- call GetAnyMapEnvironment
- call CheckIndoorMap
- ret nz
- ld a, [wNextMapGroup]
- ld b, a
- ld a, [wNextMapNumber]
- ld c, a
-
-; Respawn in Pokémon Centers.
- call GetAnyMapTileset
- ld a, c
- cp TILESET_POKECENTER
- ret nz
-
-.pokecenter
- ld a, [wPrevMapGroup]
- ld [wLastSpawnMapGroup], a
- ld a, [wPrevMapNumber]
- ld [wLastSpawnMapNumber], a
- ret
+INCLUDE "home/warp_connection.asm"
CheckOutdoorMap::
cp ROUTE
@@ -2277,7 +1772,7 @@ CloseSubmenu::
call ReloadTilesetAndPalettes
call UpdateSprites
call Call_ExitMenu
- call Functiond2a
+ call ReloadPalettes
jr FinishExitMenu
ExitAllMenus::
@@ -2285,7 +1780,7 @@ ExitAllMenus::
call Call_ExitMenu
call ReloadTilesetAndPalettes
call UpdateSprites
- call Functiond2a
+ call ReloadPalettes
FinishExitMenu::
ld b, SCGB_MAPPALS
call GetSGBLayout
@@ -2320,7 +1815,7 @@ ReturnToMapWithSpeechTextbox::
ReloadTilesetAndPalettes::
call DisableLCD
call ClearSprites
- farcall _ClearSprites
+ farcall _RefreshSprites
call LoadStandardFont
call LoadFontsExtra
ldh a, [hROMBank]