summaryrefslogtreecommitdiff
path: root/home/map.asm
diff options
context:
space:
mode:
Diffstat (limited to 'home/map.asm')
-rw-r--r--home/map.asm277
1 files changed, 156 insertions, 121 deletions
diff --git a/home/map.asm b/home/map.asm
index 2e80fb3f6..81c7988d8 100644
--- a/home/map.asm
+++ b/home/map.asm
@@ -219,27 +219,29 @@ ReturnToMapFromSubmenu:: ; 222a
; 2238
CheckWarpTile:: ; 2238
- call Function2252
+ call GetDestinationWarpNumber
ret nc
+
push bc
callba Function149af
pop bc
ret nc
- call Function22a7
+
+ call CopyWarpData
scf
ret
; 224a
-Function224a:: ; 224a
- call Function2252
+WarpCheck:: ; 224a
+ call GetDestinationWarpNumber
ret nc
- call Function22a7
+ call CopyWarpData
ret
; 2252
-Function2252:: ; 2252
+GetDestinationWarpNumber:: ; 2252
callba Function1499a
ret nc
@@ -247,7 +249,7 @@ Function2252:: ; 2252
push af
call SwitchToMapScriptHeaderBank
- call Function2266
+ call .GetDestinationWarpNumber
pop de
ld a, d
@@ -255,7 +257,7 @@ Function2252:: ; 2252
ret
; 2266
-Function2266:: ; 2266
+.GetDestinationWarpNumber ; 2266
ld a, [PlayerMapY]
sub $4
ld e, a
@@ -265,48 +267,49 @@ Function2266:: ; 2266
ld a, [wCurrMapWarpCount]
and a
ret z
+
ld c, a
ld hl, wCurrMapWarpHeaderPointer
ld a, [hli]
ld h, [hl]
ld l, a
-.asm_227e
+.loop
push hl
ld a, [hli]
cp e
- jr nz, .asm_2289
+ jr nz, .next
ld a, [hli]
cp d
- jr nz, .asm_2289
- jr .asm_2296
+ jr nz, .next
+ jr .found_warp
-.asm_2289
+.next
pop hl
- ld a, $5
+ ld a, 5
add l
ld l, a
- jr nc, .asm_2291
+ jr nc, .okay
inc h
-.asm_2291
+.okay
dec c
- jr nz, .asm_227e
+ jr nz, .loop
xor a
ret
-.asm_2296
+.found_warp
pop hl
- call Function22a3
- ret nc
+ call .IncreaseHLTwice
+ ret nc ; never encountered
+
ld a, [wCurrMapWarpCount]
inc a
sub c
ld c, a
scf
ret
-; 22a3
-Function22a3:: ; 22a3
+.IncreaseHLTwice
rept 2
inc hl
endr
@@ -314,12 +317,12 @@ endr
ret
; 22a7
-Function22a7:: ; 22a7
+CopyWarpData:: ; 22a7
ld a, [hROMBank]
push af
call SwitchToMapScriptHeaderBank
- call Function22b4
+ call .CopyWarpData
pop af
rst Bankswitch
@@ -327,7 +330,7 @@ Function22a7:: ; 22a7
ret
; 22b4
-Function22b4:: ; 22b4
+.CopyWarpData ; 22b4
push bc
ld hl, wCurrMapWarpHeaderPointer
ld a, [hli]
@@ -335,29 +338,30 @@ Function22b4:: ; 22b4
ld l, a
ld a, c
dec a
- ld bc, $0005
+ ld bc, 5 ; warp size
call AddNTimes
- ld bc, $0002
+ ld bc, 2 ; warp number
add hl, bc
ld a, [hli]
cp $ff
- jr nz, .asm_22d0
- ld hl, wdcac
+ jr nz, .skip
+ ld hl, BackupWarpNumber
ld a, [hli]
-.asm_22d0
+.skip
pop bc
- ld [wd146], a
+ ld [wNextWarp], a
ld a, [hli]
- ld [wd147], a
+ ld [wNextMapGroup], a
ld a, [hli]
- ld [wd148], a
+ ld [wNextMapNumber], a
+
ld a, c
- ld [wd149], a
+ ld [wPrevWarp], a
ld a, [MapGroup]
- ld [wd14a], a
+ ld [wPrevMapGroup], a
ld a, [MapNumber]
- ld [wd14b], a
+ ld [wPrevMapNumber], a
scf
ret
; 22ee
@@ -382,40 +386,40 @@ CheckIndoorMap:: ; 22f4
ret
; 2300
-Function2300:: ; 2300
+Function2300:: ; unreferenced
cp INDOOR
ret z
cp GATE
ret z
- cp $5
+ cp PERM_5
ret
; 2309
LoadMapAttributes:: ; 2309
- call Function2326
+ call CopyMapHeaders
call SwitchToMapScriptHeaderBank
- call Function234f
+ call ReadMapScripts
xor a
call ReadMapEventHeader
ret
; 2317
-LoadMapAttributes_IgnoreHidden:: ; 2317
- call Function2326
+LoadMapAttributes_SkipPeople:: ; 2317
+ call CopyMapHeaders
call SwitchToMapScriptHeaderBank
- call Function234f
+ call ReadMapScripts
ld a, $1
call ReadMapEventHeader
ret
; 2326
-Function2326:: ; 2326
- call Function2c3d
+CopyMapHeaders:: ; 2326
+ call PartiallyCopyMapHeader
call SwitchToMapBank
call GetSecondaryMapHeaderPointer
- call Function235c
- call Function2368
+ call CopySecondMapHeader
+ call GetMapConnections
ret
; 2336
@@ -431,14 +435,16 @@ endr
call ReadWarps
call ReadCoordEvents
call ReadSignposts
+
pop af
and a
ret nz
+
call ReadObjectEvents
ret
; 234f
-Function234f:: ; 234f
+ReadMapScripts:: ; 234f
ld hl, MapScriptHeaderPointer
ld a, [hli]
ld h, [hl]
@@ -448,19 +454,19 @@ Function234f:: ; 234f
ret
; 235c
-Function235c:: ; 235c
+CopySecondMapHeader:: ; 235c
ld de, MapHeader
- ld c, $c
-.asm_2361
+ ld c, 12 ; size of the second map header
+.loop
ld a, [hli]
ld [de], a
inc de
dec c
- jr nz, .asm_2361
+ jr nz, .loop
ret
; 2368
-Function2368:: ; 2368
+GetMapConnections:: ; 2368
ld a, $ff
ld [NorthConnectedMapGroup], a
ld [SouthConnectedMapGroup], a
@@ -470,29 +476,29 @@ Function2368:: ; 2368
ld a, [MapConnections]
ld b, a
- bit 3, b
- jr z, .asm_2384
+ bit NORTH_F, b
+ jr z, .no_north
ld de, NorthMapConnection
call GetMapConnection
-.asm_2384
+.no_north
- bit 2, b
- jr z, .asm_238e
+ bit SOUTH_F, b
+ jr z, .no_south
ld de, SouthMapConnection
call GetMapConnection
-.asm_238e
+.no_south
- bit 1, b
- jr z, .asm_2398
+ bit WEST_F, b
+ jr z, .no_west
ld de, WestMapConnection
call GetMapConnection
-.asm_2398
+.no_west
- bit 0, b
- jr z, .asm_23a2
+ bit EAST_F, b
+ jr z, .no_east
ld de, EastMapConnection
call GetMapConnection
-.asm_23a2
+.no_east
ret
; 23a3
@@ -568,11 +574,13 @@ ReadCoordEvents:: ; 23f1
ld a, l
ld [wCurrentMapXYTriggerHeaderPointer], a
ld a, h
- ld [wdc00], a
+ ld [wCurrentMapXYTriggerHeaderPointer + 1], a
+
ld a, c
and a
ret z
- ld bc, $0008
+
+ ld bc, 8
call AddNTimes
ret
; 2408
@@ -582,93 +590,108 @@ ReadSignposts:: ; 2408
ld c, a
ld [wCurrentMapSignpostCount], a
ld a, l
- ld [wdc02], a
+ ld [wCurrentMapSignpostHeaderPointer], a
ld a, h
- ld [wdc03], a
+ ld [wCurrentMapSignpostHeaderPointer + 1], a
+
ld a, c
and a
ret z
- ld bc, $0005
+
+ ld bc, 5
call AddNTimes
ret
; 241f
ReadObjectEvents:: ; 241f
push hl
- call Function2471
+ call ClearObjectStructs
pop de
- ld hl, MapObjects + OBJECT_LENGTH
+ ld hl, Map1Object
ld a, [de]
inc de
- ld [wdc04], a
+ ld [wCurrentMapPersonEventCount], a
ld a, e
- ld [wdc05], a
+ ld [wCurrentMapPersonEventHeaderPointer], a
ld a, d
- ld [wdc06], a
- ld a, [wdc04]
- call Function2457
- ld a, [wdc04]
+ ld [wCurrentMapPersonEventHeaderPointer + 1], a
+
+ ld a, [wCurrentMapPersonEventCount]
+ call CopyMapObjectHeaders
+
+; get NUM_OBJECTS - [wCurrentMapPersonEventCount]
+ ld a, [wCurrentMapPersonEventCount]
ld c, a
- ld a, $10
+ ld a, NUM_OBJECTS ; - 1
sub c
- jr z, .asm_2454
- ld bc, $0001
+ jr z, .skip
+ ; jr c, .skip
+
+; stupid waste of time and space
+ ld bc, 1
add hl, bc
- ld bc, $0010
-.asm_244a
- ld [hl], $0
+; 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
inc hl
- ld [hl], $ff
+ ld [hl], -1
dec hl
add hl, bc
dec a
- jr nz, .asm_244a
+ jr nz, .loop
-.asm_2454
+.skip
ld h, d
ld l, e
ret
; 2457
-Function2457:: ; 2457
+CopyMapObjectHeaders:: ; 2457
and a
ret z
+
ld c, a
-.asm_245a
+.loop
push bc
push hl
ld a, $ff
ld [hli], a
- ld b, $d
-.asm_2461
+ ld b, MAPOBJECT_E - MAPOBJECT_SPRITE
+.loop2
ld a, [de]
inc de
ld [hli], a
dec b
- jr nz, .asm_2461
+ jr nz, .loop2
+
pop hl
- ld bc, $0010
+ ld bc, OBJECT_LENGTH
add hl, bc
pop bc
dec c
- jr nz, .asm_245a
+ jr nz, .loop
ret
; 2471
-Function2471:: ; 2471
+ClearObjectStructs:: ; 2471
ld hl, Object1Struct
ld bc, OBJECT_STRUCT_LENGTH * (NUM_OBJECT_STRUCTS - 1)
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
xor a
-.asm_2484
+.loop
ld [hl], a
add hl, de
dec c
- jr nz, .asm_2484
+ jr nz, .loop
ret
; 248a
@@ -681,34 +704,35 @@ RestoreFacingAfterWarp:: ; 248a
ld h, [hl]
ld l, a
rept 3
- inc hl
+ inc hl ; get to the warp coords
endr
ld a, [WarpNumber]
dec a
ld c, a
- ld b, $0
- ld a, $5
+ ld b, 0
+ ld a, 5
call AddNTimes
ld a, [hli]
ld [YCoord], a
ld a, [hli]
ld [XCoord], a
+ ; destination warp number
ld a, [hli]
cp $ff
- jr nz, .asm_24b3
- call Function24ba
+ jr nz, .skip
+ call .backup
-.asm_24b3
+.skip
callba GetCoordOfUpperLeftCorner
ret
; 24ba
-Function24ba:: ; 24ba
- ld a, [wd149]
- ld [wdcac], a
- ld a, [wd14a]
+.backup
+ ld a, [wPrevWarp]
+ ld [BackupWarpNumber], a
+ ld a, [wPrevMapGroup]
ld [BackupMapGroup], a
- ld a, [wd14b]
+ ld a, [wPrevMapNumber]
ld [BackupMapNumber], a
ret
; 24cd
@@ -1415,7 +1439,7 @@ Function2821:: ; 2821
ld [rVBK], a
pop af
ld [rSVBK], a
- ld a, [wd199]
+ ld a, [wTileset]
cp $1
jr z, .asm_286f
cp $2
@@ -1836,6 +1860,7 @@ CheckFacingSign:: ; 2a8b
ld a, [wCurrentMapSignpostCount]
and a
ret z
+
ld c, a
ld a, [hROMBank]
push af
@@ -1849,7 +1874,7 @@ CheckFacingSign:: ; 2a8b
CheckIfFacingTileCoordIsSign:: ; 2aaa
; Checks to see if you are facing a signpost. If so, copies it into EngineBuffer1 and sets carry.
- ld hl, wdc02
+ ld hl, wCurrentMapSignpostHeaderPointer
ld a, [hli]
ld h, [hl]
ld l, a
@@ -1954,7 +1979,7 @@ CheckStandingOnXYTrigger:: ; 2ae7
.copytrigger
pop hl
ld de, EngineBuffer1
- ld bc, $0008 ; xy-trigger size
+ ld bc, 8 ; xy-trigger size
call CopyBytes
scf
ret
@@ -2160,15 +2185,19 @@ GetAnyMapBank:: ; 2c31
ret
; 2c3d
-Function2c3d:: ; 2c3d
+PartiallyCopyMapHeader:: ; 2c3d
+; Copy second map header bank, tileset, permission, and second map header address
+; from the current map's map header.
ld a, [hROMBank]
push af
ld a, BANK(MapGroupPointers)
rst Bankswitch
+
call GetMapHeaderPointer
- ld de, wd197 + 1
- ld bc, $0005
+ ld de, wSecondMapHeaderBank
+ ld bc, MapHeader - wSecondMapHeaderBank
call CopyBytes
+
pop af
rst Bankswitch
ret
@@ -2220,7 +2249,7 @@ GetSecondaryMapHeaderPointer:: ; 0x2c7d
; returns the current map's secondary map header pointer in hl.
push bc
push de
- ld de, $0003 ; secondary map header pointer (offset within header)
+ ld de, 3 ; secondary map header pointer (offset within header)
call GetMapHeaderMember
ld l, c
ld h, b
@@ -2233,7 +2262,7 @@ GetMapPermission:: ; 2c8a
push hl
push de
push bc
- ld de, 2
+ ld de, 2 ; permission
call GetMapHeaderMember
ld a, c
pop bc
@@ -2250,7 +2279,7 @@ GetAnyMapPermission:: ; 2c99
push hl
push de
push bc
- ld de, $0002
+ ld de, 2 ; permission
call GetAnyMapHeaderMember
ld a, c
pop bc
@@ -2260,7 +2289,7 @@ GetAnyMapPermission:: ; 2c99
; 2ca7
GetAnyMapTileset:: ; 2ca7
- ld de, $0001
+ ld de, 1 ; tileset
call GetAnyMapHeaderMember
ld a, c
ret
@@ -2271,9 +2300,11 @@ GetWorldMapLocation:: ; 0x2caf
push hl
push de
push bc
- ld de, 5
+
+ ld de, 5 ; landmark
call GetAnyMapHeaderMember
ld a, c
+
pop bc
pop de
pop hl
@@ -2343,21 +2374,25 @@ GetMapHeaderPhoneServiceNybble:: ; 2d05
GetPhoneServiceTimeOfDayByte:: ; 2d0d
push hl
push bc
+
ld de, 7 ; phone service and time of day
call GetMapHeaderMember
ld a, c
+
pop bc
pop hl
ret
; 2d19
-Function2d19:: ; 2d19
+GetFishingGroup:: ; 2d19
push de
push hl
push bc
+
ld de, 8 ; fishing group
call GetMapHeaderMember
ld a, c
+
pop bc
pop hl
pop de
@@ -2370,7 +2405,7 @@ LoadTilesetHeader:: ; 2d27
ld hl, Tilesets
ld bc, Tileset01 - Tileset00
- ld a, [wd199]
+ ld a, [wTileset]
call AddNTimes
ld de, TilesetBank