aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVortyne <104168801+Vortyne@users.noreply.github.com>2024-05-05 10:56:08 -0400
committerGitHub <noreply@github.com>2024-05-05 09:56:08 -0500
commit5f7b444ae853d171cf9b223574f2dac5edbc03c5 (patch)
tree366a3c5874b3f370c2527addcb791b1281d0feab
parentFix hard-coded bank (diff)
downloadpokeyellow-5f7b444ae853d171cf9b223574f2dac5edbc03c5.tar.gz
pokeyellow-5f7b444ae853d171cf9b223574f2dac5edbc03c5.tar.xz
pokeyellow-5f7b444ae853d171cf9b223574f2dac5edbc03c5.zip
Use constant in wram for hidden item flags (#445)
Prevents defining more hidden items than the flag array has room for
-rw-r--r--constants/item_constants.asm3
-rw-r--r--data/events/hidden_coins.asm2
-rw-r--r--data/events/hidden_item_coords.asm2
-rw-r--r--macros/asserts.asm6
-rw-r--r--ram/wram.asm4
5 files changed, 15 insertions, 2 deletions
diff --git a/constants/item_constants.asm b/constants/item_constants.asm
index 6dd6cf8a..4e09da0c 100644
--- a/constants/item_constants.asm
+++ b/constants/item_constants.asm
@@ -215,3 +215,6 @@ DEF NUM_TM_HM EQU NUM_TMS + NUM_HMS
; These fit in 7 bytes, with one unused bit left over.
DEF __tmhm_value__ = NUM_TM_HM + 1
DEF UNUSED_TMNUM EQU __tmhm_value__
+
+DEF MAX_HIDDEN_ITEMS EQU 112
+DEF MAX_HIDDEN_COINS EQU 16
diff --git a/data/events/hidden_coins.asm b/data/events/hidden_coins.asm
index f2485f50..1fa5af23 100644
--- a/data/events/hidden_coins.asm
+++ b/data/events/hidden_coins.asm
@@ -3,6 +3,7 @@ MACRO hidden_coin
ENDM
HiddenCoinCoords:
+ table_width 3, HiddenCoinCoords
; map id, x, y
hidden_coin GAME_CORNER, 0, 8
hidden_coin GAME_CORNER, 1, 16
@@ -16,4 +17,5 @@ HiddenCoinCoords:
hidden_coin GAME_CORNER, 11, 7
hidden_coin GAME_CORNER, 15, 8
hidden_coin GAME_CORNER, 12, 15
+ assert_max_table_length MAX_HIDDEN_COINS
db -1 ; end
diff --git a/data/events/hidden_item_coords.asm b/data/events/hidden_item_coords.asm
index 30619d6b..04f0c2f4 100644
--- a/data/events/hidden_item_coords.asm
+++ b/data/events/hidden_item_coords.asm
@@ -3,6 +3,7 @@ MACRO hidden_item
ENDM
HiddenItemCoords:
+ table_width 3, HiddenItemCoords
; map id, x, y
hidden_item VIRIDIAN_FOREST, 1, 18
hidden_item VIRIDIAN_FOREST, 16, 42
@@ -58,4 +59,5 @@ HiddenItemCoords:
hidden_item VERMILION_CITY, 14, 11
hidden_item CERULEAN_CITY, 15, 8
hidden_item ROUTE_4, 40, 3
+ assert_max_table_length MAX_HIDDEN_ITEMS
db -1 ; end
diff --git a/macros/asserts.asm b/macros/asserts.asm
index 64e6bc7b..bc5b2582 100644
--- a/macros/asserts.asm
+++ b/macros/asserts.asm
@@ -16,6 +16,12 @@ MACRO assert_table_length
"{CURRENT_TABLE_START}: expected {d:x} entries, each {d:CURRENT_TABLE_WIDTH} bytes"
ENDM
+MACRO assert_max_table_length
+ DEF x = \1
+ ASSERT x * CURRENT_TABLE_WIDTH >= @ - {CURRENT_TABLE_START}, \
+ "{CURRENT_TABLE_START}: expected a maximum of {d:x} entries, each {d:CURRENT_TABLE_WIDTH} bytes"
+ENDM
+
MACRO list_start
DEF list_index = 0
IF _NARG == 1
diff --git a/ram/wram.asm b/ram/wram.asm
index 775a9dc8..dd7248ca 100644
--- a/ram/wram.asm
+++ b/ram/wram.asm
@@ -2042,9 +2042,9 @@ wGameProgressFlagsEnd::
ds 56
-wObtainedHiddenItemsFlags:: flag_array 112
+wObtainedHiddenItemsFlags:: flag_array MAX_HIDDEN_ITEMS
-wObtainedHiddenCoinsFlags:: flag_array 16
+wObtainedHiddenCoinsFlags:: flag_array MAX_HIDDEN_COINS
; $00 = walking
; $01 = biking