diff options
author | yenatch <yenatch@gmail.com> | 2015-11-28 20:15:35 -0500 |
---|---|---|
committer | yenatch <yenatch@gmail.com> | 2015-11-28 20:15:35 -0500 |
commit | 794410352fd92ccf06974763e4b3be0b807641ab (patch) | |
tree | 05f5dd861966762db9556082229cee82e8b5eed9 /home/map.asm | |
parent | 9c5473e965520f672640daf4ee76622640e0de15 (diff) | |
parent | 4bcd71e3227181baa536357af3d87a8d02af3890 (diff) |
Merge pull request #328 from PikalaxALT/master
Split out most of main.asm
Diffstat (limited to 'home/map.asm')
-rw-r--r-- | home/map.asm | 303 |
1 files changed, 159 insertions, 144 deletions
diff --git a/home/map.asm b/home/map.asm index 81c7988d8..e385517a1 100644 --- a/home/map.asm +++ b/home/map.asm @@ -258,10 +258,10 @@ GetDestinationWarpNumber:: ; 2252 ; 2266 .GetDestinationWarpNumber ; 2266 - ld a, [PlayerMapY] + ld a, [PlayerNextMapY] sub $4 ld e, a - ld a, [PlayerMapX] + ld a, [PlayerNextMapX] sub $4 ld d, a ld a, [wCurrMapWarpCount] @@ -570,11 +570,11 @@ ReadWarps:: ; 23da ReadCoordEvents:: ; 23f1 ld a, [hli] ld c, a - ld [wCurrentMapXYTriggerCount], a + ld [wCurrentNextMapXYTriggerCount], a ld a, l - ld [wCurrentMapXYTriggerHeaderPointer], a + ld [wCurrentNextMapXYTriggerHeaderPointer], a ld a, h - ld [wCurrentMapXYTriggerHeaderPointer + 1], a + ld [wCurrentNextMapXYTriggerHeaderPointer + 1], a ld a, c and a @@ -1091,7 +1091,7 @@ MapTextbox:: ; 269a call Function2e31 ld a, 1 ld [hOAMUpdate], a - call Function321c + call ApplyTilemap pop hl call PrintTextBoxText xor a @@ -1232,128 +1232,129 @@ UnmaskObject:: ; 271e ; 272a -Function272a:: ; 272a +ScrollMapDown:: ; 272a hlcoord 0, 0 ld de, BGMapBuffer - call Function27b7 - ld c, $28 + call BackupBGMapRow + ld c, 2 * SCREEN_WIDTH call FarCallScrollBGMapPalettes - ld a, [wd152] + ld a, [wBGMapAnchor] ld e, a - ld a, [wd153] + ld a, [wBGMapAnchor + 1] ld d, a - call Function27d3 + call UpdateBGMapRow ld a, $1 ld [hBGMapUpdate], a ret ; 2748 -Function2748:: ; 2748 - hlcoord 0, 16 +ScrollMapUp:: ; 2748 + hlcoord 0, SCREEN_HEIGHT - 2 ld de, BGMapBuffer - call Function27b7 - ld c, $28 + call BackupBGMapRow + ld c, 2 * SCREEN_WIDTH call FarCallScrollBGMapPalettes - ld a, [wd152] + ld a, [wBGMapAnchor] ld l, a - ld a, [wd153] + ld a, [wBGMapAnchor + 1] ld h, a ld bc, $0200 add hl, bc +; cap d at VBGMap1 / $100 ld a, h - and $3 - or $98 + and %00000011 + or VBGMap0 / $100 ld e, l ld d, a - call Function27d3 + call UpdateBGMapRow ld a, $1 ld [hBGMapUpdate], a ret ; 2771 -Function2771:: ; 2771 +ScrollMapLeft:: ; 2771 hlcoord 0, 0 ld de, BGMapBuffer - call Function27c0 - ld c, $24 + call BackupBGMapColumn + ld c, 2 * SCREEN_HEIGHT call FarCallScrollBGMapPalettes - ld a, [wd152] + ld a, [wBGMapAnchor] ld e, a - ld a, [wd153] + ld a, [wBGMapAnchor + 1] ld d, a - call Function27f8 + call UpdateBGMapColumn ld a, $1 ld [hBGMapUpdate], a ret ; 278f -Function278f:: ; 278f - hlcoord 18, 0 +ScrollMapRight:: ; 278f + hlcoord SCREEN_WIDTH - 2, 0 ld de, BGMapBuffer - call Function27c0 - ld c, $24 + call BackupBGMapColumn + ld c, 2 * SCREEN_HEIGHT call FarCallScrollBGMapPalettes - ld a, [wd152] + ld a, [wBGMapAnchor] ld e, a - and $e0 + and %11100000 ld b, a ld a, e - add $12 - and $1f + add SCREEN_HEIGHT + and %00011111 or b ld e, a - ld a, [wd153] + ld a, [wBGMapAnchor + 1] ld d, a - call Function27f8 + call UpdateBGMapColumn ld a, $1 ld [hBGMapUpdate], a ret ; 27b7 -Function27b7:: ; 27b7 - ld c, $28 -.asm_27b9 +BackupBGMapRow:: ; 27b7 + ld c, 2 * SCREEN_WIDTH +.loop ld a, [hli] ld [de], a inc de dec c - jr nz, .asm_27b9 + jr nz, .loop ret ; 27c0 -Function27c0:: ; 27c0 - ld c, $12 -.asm_27c2 +BackupBGMapColumn:: ; 27c0 + ld c, SCREEN_HEIGHT +.loop ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a inc de - ld a, $13 + ld a, SCREEN_WIDTH - 1 add l ld l, a - jr nc, .asm_27cf + jr nc, .skip inc h -.asm_27cf +.skip dec c - jr nz, .asm_27c2 + jr nz, .loop ret ; 27d3 -Function27d3:: ; 27d3 +UpdateBGMapRow:: ; 27d3 ld hl, BGMapBufferPtrs push de - call .asm_27df + call .iteration pop de ld a, $20 add e ld e, a -.asm_27df - ld c, $a -.asm_27e1 +.iteration + ld c, 10 +.loop ld a, e ld [hli], a ld a, d @@ -1369,16 +1370,16 @@ endr or b ld e, a dec c - jr nz, .asm_27e1 - ld a, $14 - ld [$ffdc], a + jr nz, .loop + ld a, SCREEN_WIDTH + ld [hFFDC], a ret ; 27f8 -Function27f8:: ; 27f8 +UpdateBGMapColumn:: ; 27f8 ld hl, BGMapBufferPtrs - ld c, $12 -.asm_27fd + ld c, SCREEN_HEIGHT +.loop ld a, e ld [hli], a ld a, d @@ -1386,72 +1387,81 @@ Function27f8:: ; 27f8 ld a, $20 add e ld e, a - jr nc, .asm_280e + jr nc, .skip inc d +; cap d at VBGMap1 / $100 ld a, d and $3 - or $98 + or VBGMap0 / $100 ld d, a -.asm_280e +.skip dec c - jr nz, .asm_27fd - ld a, $12 - ld [$ffdc], a + jr nz, .loop + ld a, SCREEN_HEIGHT + ld [hFFDC], a ret ; 2816 -Function2816:: ; 2816 +; unreferenced ld hl, BGMapBuffer - ld bc, $0078 + ld bc, SGBPredef - BGMapBuffer xor a call ByteFill ret ; 2821 -Function2821:: ; 2821 +LoadTileset:: ; 2821 ld hl, TilesetAddress 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, w6_d000 call FarDecompress + ld hl, w6_d000 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 $1 - jr z, .asm_286f - cp $2 - jr z, .asm_286f - cp $4 - jr z, .asm_286f - jr .asm_2875 -.asm_286f + 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 callba LoadMapGroupRoof -.asm_2875 +.skip_roof xor a ld [hTileAnimFrame], a ret @@ -1495,42 +1505,42 @@ SaveScreen:: ; 289d ld a, [MapWidth] add $6 ld [hMapObjectIndexBuffer], a - ld a, [wd151] + ld a, [wPlayerStepDirection] and a - jr z, .asm_28cb - cp $1 - jr z, .asm_28c0 - cp $2 - jr z, .asm_28d4 - cp $3 - jr z, .asm_28da + jr z, .down + cp UP + jr z, .up + cp LEFT + jr z, .left + cp RIGHT + jr z, .right ret -.asm_28c0 +.up ld de, wdcbf ld a, [hMapObjectIndexBuffer] ld c, a ld b, $0 add hl, bc - jr .asm_28ce + jr .vertical -.asm_28cb +.down ld de, XCoord + 1 -.asm_28ce +.vertical ld b, $6 ld c, $4 jr Function28f7 -.asm_28d4 +.left ld de, XCoord + 2 inc hl - jr .asm_28dd + jr .horizontal -.asm_28da +.right ld de, XCoord + 1 -.asm_28dd +.horizontal ld b, $5 ld c, $5 jr Function28f7 @@ -1543,55 +1553,57 @@ LoadNeighboringBlockData:: ; 28e3 ld l, a ld a, [MapWidth] add $6 - ld [hMapObjectIndexBuffer], a + ld [hConnectionStripLength], a ld de, XCoord + 1 ld b, $6 ld c, $5 Function28f7:: ; 28f7 -.asm_28f7 +.loop1 push bc push hl push de -.asm_28fa +.loop2 ld a, [de] inc de ld [hli], a dec b - jr nz, .asm_28fa + jr nz, .loop2 pop de ld a, e add $6 ld e, a - jr nc, .asm_2908 + jr nc, .okay inc d -.asm_2908 +.okay pop hl - ld a, [hMapObjectIndexBuffer] + ld a, [hConnectionStripLength] ld c, a ld b, $0 add hl, bc pop bc dec c - jr nz, .asm_28f7 + jr nz, .loop1 ret ; 2914 -Function2914:: ; 2914 +GetMovementPermissions:: ; 2914 xor a ld [TilePermissions], a - call Function296c - call Function294d - ld a, [PlayerMapX] + call GetLeftRightCollision + call GetUpDownCollision +; get coords of current tile + ld a, [PlayerNextMapX] ld d, a - ld a, [PlayerMapY] + ld a, [PlayerNextMapY] ld e, a - call Function2a3c - ld [PlayerStandingTile], a + call GetCoordTile + ld [PlayerNextTile], a call Function29ff ret nz - ld a, [PlayerStandingTile] + + ld a, [PlayerNextTile] and 7 ld hl, .data_2945 add l @@ -1610,37 +1622,41 @@ Function2914:: ; 2914 db 1, 2, 4, 8, 9, 10, 5, 6 ; 294d -Function294d:: ; 294d - ld a, [PlayerMapX] +GetUpDownCollision:: ; 294d + ld a, [PlayerNextMapX] ld d, a - ld a, [PlayerMapY] + ld a, [PlayerNextMapY] ld e, a + push de inc e - call Function2a3c + call GetCoordTile ld [TileDown], a call Function298b + pop de dec e - call Function2a3c + call GetCoordTile ld [TileUp], a call Function29a8 ret ; 296c -Function296c:: ; 296c - ld a, [PlayerMapX] +GetLeftRightCollision:: ; 296c + ld a, [PlayerNextMapX] ld d, a - ld a, [PlayerMapY] + ld a, [PlayerNextMapY] ld e, a + push de dec d - call Function2a3c + call GetCoordTile ld [TileLeft], a call Function29e2 + pop de inc d - call Function2a3c + call GetCoordTile ld [TileRight], a call Function29c5 ret @@ -1650,7 +1666,7 @@ Function298b:: ; 298b call Function29ff ret nz ld a, [TileDown] - and $7 + and 7 cp $2 jr z, .ok cp $6 @@ -1660,7 +1676,7 @@ Function298b:: ; 298b .ok ld a, [TilePermissions] - or $8 + or FACE_DOWN ld [TilePermissions], a ret ; 29a8 @@ -1669,7 +1685,7 @@ Function29a8:: ; 29a8 call Function29ff ret nz ld a, [TileUp] - and $7 + and 7 cp $3 jr z, .ok cp $4 @@ -1679,7 +1695,7 @@ Function29a8:: ; 29a8 .ok ld a, [TilePermissions] - or $4 + or FACE_UP ld [TilePermissions], a ret ; 29c5 @@ -1688,7 +1704,7 @@ Function29c5:: ; 29c5 call Function29ff ret nz ld a, [TileRight] - and $7 + and 7 cp $1 jr z, .ok cp $5 @@ -1698,7 +1714,7 @@ Function29c5:: ; 29c5 .ok ld a, [TilePermissions] - or $1 + or FACE_RIGHT ld [TilePermissions], a ret ; 29e2 @@ -1707,7 +1723,7 @@ Function29e2:: ; 29e2 call Function29ff ret nz ld a, [TileLeft] - and $7 + and 7 cp $0 jr z, .ok cp $4 @@ -1717,7 +1733,7 @@ Function29e2:: ; 29e2 .ok ld a, [TilePermissions] - or $2 + or FACE_LEFT ld [TilePermissions], a ret ; 29ff @@ -1756,10 +1772,10 @@ endr ld h, [hl] ld l, a - ld a, [PlayerMapX] + ld a, [PlayerNextMapX] add d ld d, a - ld a, [PlayerMapY] + ld a, [PlayerNextMapY] add e ld e, a ld a, [hl] @@ -1778,7 +1794,8 @@ endr ; 2a3c -Function2a3c:: ; 2a3c +GetCoordTile:: ; 2a3c +; Get the collision byte for tile d, e call GetBlockLocation ld a, [hl] and a @@ -1911,9 +1928,9 @@ CheckIfFacingTileCoordIsSign:: ; 2aaa ret ; 2ad4 -CheckCurrentMapXYTriggers:: ; 2ad4 +CheckCurrentNextMapXYTriggers:: ; 2ad4 ; If there are no xy triggers, we don't need to be here. - ld a, [wCurrentMapXYTriggerCount] + ld a, [wCurrentNextMapXYTriggerCount] and a ret z ; Copy the trigger count into c. @@ -1930,7 +1947,7 @@ CheckCurrentMapXYTriggers:: ; 2ad4 CheckStandingOnXYTrigger:: ; 2ae7 ; Checks to see if you are standing on an xy-trigger. If yes, copies the trigger to EngineBuffer1 and sets carry. - ld hl, wCurrentMapXYTriggerHeaderPointer + ld hl, wCurrentNextMapXYTriggerHeaderPointer ld a, [hli] ld h, [hl] ld l, a @@ -1938,10 +1955,10 @@ CheckStandingOnXYTrigger:: ; 2ae7 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, [PlayerMapX] + ld a, [PlayerNextMapX] sub 4 ld d, a - ld a, [PlayerMapY] + ld a, [PlayerNextMapY] sub 4 ld e, a @@ -1997,7 +2014,7 @@ FadeToMenu:: ; 2b29 ; 2b3c -Function2b3c:: ; 2b3c +ReturnToCallingMenu:: ; 2b3c call ClearBGPalettes call Function2bae call UpdateSprites @@ -2006,16 +2023,14 @@ Function2b3c:: ; 2b3c jr Function2b5c ; 2b4d -Function2b4d:: ; 2b4d +ExitAllMenus:: ; 2b4d call ClearBGPalettes call Call_ExitMenu call Function2bae call UpdateSprites call Functiond90 -; 2b5c - Function2b5c:: ; 2b5c - ld b, $9 + ld b, SCGB_09 call GetSGBLayout callba Function49409 call Function3200 @@ -2028,7 +2043,7 @@ Function2b5c:: ; 2b5c Function2b74:: ; 0x2b74 push af ld a, $1 - ld [wc2ce], a + ld [wSpriteUpdatesEnabled], a call ClearBGPalettes call ClearSprites call Function2bae @@ -2039,7 +2054,7 @@ Function2b74:: ; 0x2b74 set 0, [hl] call UpdateSprites call Function3200 - ld b, $9 + ld b, SCGB_09 call GetSGBLayout callba Function49409 call UpdateTimePals @@ -2065,7 +2080,7 @@ Function2bae:: ; 2bae call SwitchToAnyMapBank callba Function8c001 call OverworldTextModeSwitch - call Function2821 + call LoadTileset ld a, 9 call SkipMusic pop af |