aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEngezerstorung <154867622+Engezerstorung@users.noreply.github.com>2025-01-28 18:08:12 +0100
committerGitHub <noreply@github.com>2025-01-28 12:08:12 -0500
commit96fc617c69bca4fe717bd590e03bdd1fae1349e4 (patch)
tree3f93427841648bc5ae1dd35f523548409abdf46f
parentUse `EFFECT_1E` (diff)
downloadpokeyellow-96fc617c69bca4fe717bd590e03bdd1fae1349e4.tar.gz
pokeyellow-96fc617c69bca4fe717bd590e03bdd1fae1349e4.tar.xz
pokeyellow-96fc617c69bca4fe717bd590e03bdd1fae1349e4.zip
Correct wTileMapBackup declared space (#487)
-rw-r--r--constants/gfx_constants.asm7
-rw-r--r--engine/items/town_map.asm24
-rw-r--r--home/overworld.asm32
-rw-r--r--ram/wram.asm15
4 files changed, 46 insertions, 32 deletions
diff --git a/constants/gfx_constants.asm b/constants/gfx_constants.asm
index 79d9647f..08cf8dc7 100644
--- a/constants/gfx_constants.asm
+++ b/constants/gfx_constants.asm
@@ -10,6 +10,13 @@ DEF SCREEN_HEIGHT_PX EQU SCREEN_HEIGHT * TILE_WIDTH ; pixels
DEF BG_MAP_WIDTH EQU 32 ; tiles
DEF BG_MAP_HEIGHT EQU 32 ; tiles
+DEF BLOCK_WIDTH EQU 4 ; tiles
+DEF BLOCK_HEIGHT EQU BLOCK_WIDTH ; tiles
+DEF SCREEN_BLOCK_WIDTH EQU 6 ; blocks
+DEF SCREEN_BLOCK_HEIGHT EQU 5 ; blocks
+DEF SURROUNDING_WIDTH EQU SCREEN_BLOCK_WIDTH * BLOCK_WIDTH ; tiles
+DEF SURROUNDING_HEIGHT EQU SCREEN_BLOCK_HEIGHT * BLOCK_HEIGHT ; tiles
+
DEF SPRITEBUFFERSIZE EQU 7 * 7 * LEN_1BPP_TILE
; HP bar
diff --git a/engine/items/town_map.asm b/engine/items/town_map.asm
index 9c8aea39..cac6f2dd 100644
--- a/engine/items/town_map.asm
+++ b/engine/items/town_map.asm
@@ -18,9 +18,9 @@ DisplayTownMap:
hlcoord 1, 0
ld de, wNameBuffer
call PlaceString
- ld hl, wShadowOAM
- ld de, wTileMapBackup
- ld bc, $10
+ ld hl, wShadowOAMSprite00
+ ld de, wShadowOAMBackupSprite00
+ ld bc, 4 * 4
call CopyData
ld hl, vSprites tile BIRD_BASE_TILE
ld de, TownMapCursor
@@ -63,8 +63,8 @@ DisplayTownMap:
ld de, wNameBuffer
call PlaceString
ld hl, wShadowOAMSprite04
- ld de, wTileMapBackup + 16
- ld bc, $10
+ ld de, wShadowOAMBackupSprite04
+ ld bc, 4 * 4
call CopyData
.inputLoop
call TownMapSpriteBlinkingAnimation
@@ -366,8 +366,8 @@ DrawPlayerOrBirdSprite:
cp "@"
jr nz, .loop
ld hl, wShadowOAM
- ld de, wTileMapBackup
- ld bc, $a0
+ ld de, wShadowOAMBackup
+ ld bc, NUM_SPRITE_OAM_STRUCTS * 4
jp CopyData
DisplayWildLocations:
@@ -414,8 +414,8 @@ DisplayWildLocations:
call DrawPlayerOrBirdSprite
.done
ld hl, wShadowOAM
- ld de, wTileMapBackup
- ld bc, $a0
+ ld de, wShadowOAMBackup
+ ld bc, NUM_SPRITE_OAM_STRUCTS * 4
jp CopyData
AreaUnknownText:
@@ -602,15 +602,15 @@ TownMapSpriteBlinkingAnimation::
cp 50
jr nz, .done
; show sprites when the counter reaches 50
- ld hl, wTileMapBackup
+ ld hl, wShadowOAMBackup
ld de, wShadowOAM
- ld bc, $90
+ ld bc, (NUM_SPRITE_OAM_STRUCTS - 4) * 4
call CopyData
xor a
jr .done
.hideSprites
ld hl, wShadowOAM
- ld b, $24
+ ld b, NUM_SPRITE_OAM_STRUCTS - 4
ld de, $4
.hideSpritesLoop
ld [hl], $a0
diff --git a/home/overworld.asm b/home/overworld.asm
index 80638815..9ca60c48 100644
--- a/home/overworld.asm
+++ b/home/overworld.asm
@@ -1357,12 +1357,12 @@ LoadCurrentMapView::
ld e, a
ld a, [wCurrentTileBlockMapViewPointer + 1]
ld d, a
- ld hl, wTileMapBackup
- ld b, $05
+ ld hl, wSurroundingTiles
+ ld b, SCREEN_BLOCK_HEIGHT
.rowLoop ; each loop iteration fills in one row of tile blocks
push hl
push de
- ld c, $06
+ ld c, SCREEN_BLOCK_WIDTH
.rowInnerLoop ; loop to draw each tile block of the current row
push bc
push de
@@ -1391,7 +1391,7 @@ LoadCurrentMapView::
.noCarry
; update tile map pointer to next row's address
pop hl
- ld a, $60
+ ld a, SURROUNDING_WIDTH * BLOCK_HEIGHT
add l
ld l, a
jr nc, .noCarry2
@@ -1399,19 +1399,19 @@ LoadCurrentMapView::
.noCarry2
dec b
jr nz, .rowLoop
- ld hl, wTileMapBackup
- ld bc, $0
+ ld hl, wSurroundingTiles
+ ld bc, 0
.adjustForYCoordWithinTileBlock
ld a, [wYBlockCoord]
and a
jr z, .adjustForXCoordWithinTileBlock
- ld bc, $30
+ ld bc, SURROUNDING_WIDTH * 2
add hl, bc
.adjustForXCoordWithinTileBlock
ld a, [wXBlockCoord]
and a
jr z, .copyToVisibleAreaBuffer
- ld bc, $2
+ ld bc, BLOCK_WIDTH / 2
add hl, bc
.copyToVisibleAreaBuffer
decoord 0, 0 ; base address for the tiles that are directly transferred to VRAM during V-blank
@@ -1424,7 +1424,7 @@ LoadCurrentMapView::
inc de
dec c
jr nz, .rowInnerLoop2
- ld a, $04
+ ld a, SURROUNDING_WIDTH - SCREEN_WIDTH
add l
ld l, a
jr nc, .noCarry3
@@ -1755,7 +1755,7 @@ ScheduleColumnRedrawHelper::
ld a, [hl]
ld [de], a
inc de
- ld a, 19
+ ld a, SCREEN_WIDTH - 1
add l
ld l, a
jr nc, .noCarry
@@ -1796,22 +1796,18 @@ DrawTileBlock::
ld d, h
ld e, l ; de = address of the tile block's tiles
pop hl
- ld c, $04 ; 4 loop iterations
+ ld c, BLOCK_HEIGHT ; 4 loop iterations
.loop ; each loop iteration, write 4 tile numbers
push bc
+REPT BLOCK_WIDTH - 1
ld a, [de]
ld [hli], a
inc de
- ld a, [de]
- ld [hli], a
- inc de
- ld a, [de]
- ld [hli], a
- inc de
+ENDR
ld a, [de]
ld [hl], a
inc de
- ld bc, $15
+ ld bc, SURROUNDING_WIDTH - (BLOCK_WIDTH - 1)
add hl, bc
pop bc
dec c
diff --git a/ram/wram.asm b/ram/wram.asm
index 66a2d332..06568710 100644
--- a/ram/wram.asm
+++ b/ram/wram.asm
@@ -162,6 +162,19 @@ UNION
wTileMapBackup:: ds SCREEN_WIDTH * SCREEN_HEIGHT
NEXTU
+; buffer for the blocks surrounding the player (6 columns by 5 rows of 4x4-tile blocks)
+wSurroundingTiles:: ds SURROUNDING_WIDTH * SURROUNDING_HEIGHT
+
+NEXTU
+; buffer for temporarily saving and restoring shadow OAM
+wShadowOAMBackup::
+; wShadowOAMBackupSprite00 - wShadowOAMBackupSprite39
+FOR n, NUM_SPRITE_OAM_STRUCTS
+wShadowOAMBackupSprite{02d:n}:: sprite_oam_struct wShadowOAMBackupSprite{02d:n}
+ENDR
+wShadowOAMBackupEnd::
+
+NEXTU
; list of indexes to patch with SERIAL_NO_DATA_BYTE after transfer
wSerialPartyMonsPatchList:: ds 200
@@ -169,8 +182,6 @@ wSerialPartyMonsPatchList:: ds 200
wSerialEnemyMonsPatchList:: ds 200
ENDU
- ds 80
-
SECTION "Overworld Map", WRAM0