From 5943b96cf6d5eda52df2ad689af0ac251e4e0841 Mon Sep 17 00:00:00 2001 From: Rangi <35663410+Rangi42@users.noreply.github.com> Date: Wed, 12 Nov 2025 15:44:07 -0500 Subject: Use features of RGBDS 1.0.0 (#537) --- macros/asserts.asm | 44 ++++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 24 deletions(-) (limited to 'macros/asserts.asm') diff --git a/macros/asserts.asm b/macros/asserts.asm index 7b41a654..e2de1505 100644 --- a/macros/asserts.asm +++ b/macros/asserts.asm @@ -1,18 +1,14 @@ ; Macros to verify assumptions about the data or code -MACRO _redef_current_label +MACRO? _redef_current_label IF DEF(\1) PURGE \1 ENDC IF _NARG == 3 + (\3) DEF \1 EQUS "\<_NARG>" - ELIF DEF(..) - IF .. - @ == 0 - DEF \1 EQUS "{..}" - ENDC - ELIF DEF(.) - if . - @ == 0 - DEF \1 EQUS "{.}" + ELIF STRLEN(#__SCOPE__) + IF {{__SCOPE__}} - @ == 0 + DEF \1 EQUS #{__SCOPE__} ENDC ENDC if !DEF(\1) @@ -21,12 +17,12 @@ MACRO _redef_current_label ENDC ENDM -MACRO table_width +MACRO? table_width DEF CURRENT_TABLE_WIDTH = \1 _redef_current_label CURRENT_TABLE_START, "._table_width\@", 2, \# ENDM -MACRO assert_table_length +MACRO? assert_table_length DEF w = \1 DEF x = w * CURRENT_TABLE_WIDTH DEF y = @ - {CURRENT_TABLE_START} @@ -34,7 +30,7 @@ MACRO assert_table_length "bytes, for {d:x} total; but got {d:y} bytes" ENDM -MACRO assert_max_table_length +MACRO? assert_max_table_length DEF w = \1 DEF x = w * CURRENT_TABLE_WIDTH DEF y = @ - {CURRENT_TABLE_START} @@ -42,24 +38,24 @@ MACRO assert_max_table_length "{d:CURRENT_TABLE_WIDTH} bytes, for maximum {d:x} total; but got {d:y} bytes" ENDM -MACRO list_start +MACRO? list_start DEF list_index = 0 _redef_current_label CURRENT_LIST_START, "._list_start\@", 1, \# ENDM -MACRO li +MACRO? li ASSERT STRFIND(\1, "@") == -1, "String terminator \"@\" in list entry: \1" db \1, "@" DEF list_index += 1 ENDM -MACRO assert_list_length +MACRO? assert_list_length DEF x = \1 ASSERT x == list_index, \ "{CURRENT_LIST_START}: expected {d:x} entries, got {d:list_index}" ENDM -MACRO nybble_array +MACRO? nybble_array DEF CURRENT_NYBBLE_ARRAY_VALUE = 0 DEF CURRENT_NYBBLE_ARRAY_LENGTH = 0 IF _NARG == 1 @@ -70,7 +66,7 @@ MACRO nybble_array ENDC ENDM -MACRO nybble +MACRO? nybble ASSERT 0 <= (\1) && (\1) < $10, "nybbles must be 0-15" DEF CURRENT_NYBBLE_ARRAY_VALUE = (\1) | (CURRENT_NYBBLE_ARRAY_VALUE << 4) DEF CURRENT_NYBBLE_ARRAY_LENGTH += 1 @@ -80,7 +76,7 @@ MACRO nybble ENDC ENDM -MACRO end_nybble_array +MACRO? end_nybble_array IF CURRENT_NYBBLE_ARRAY_LENGTH % 2 db CURRENT_NYBBLE_ARRAY_VALUE << 4 ENDC @@ -94,7 +90,7 @@ MACRO end_nybble_array ENDC ENDM -MACRO bit_array +MACRO? bit_array DEF CURRENT_BIT_ARRAY_VALUE = 0 DEF CURRENT_BIT_ARRAY_LENGTH = 0 IF _NARG == 1 @@ -105,7 +101,7 @@ MACRO bit_array ENDC ENDM -MACRO dbit +MACRO? dbit ASSERT (\1) == 0 || (\1) == 1, "bits must be 0 or 1" DEF CURRENT_BIT_ARRAY_VALUE |= (\1) << (CURRENT_BIT_ARRAY_LENGTH % 8) DEF CURRENT_BIT_ARRAY_LENGTH += 1 @@ -115,7 +111,7 @@ MACRO dbit ENDC ENDM -MACRO end_bit_array +MACRO? end_bit_array IF CURRENT_BIT_ARRAY_LENGTH % 8 db CURRENT_BIT_ARRAY_VALUE ENDC @@ -129,7 +125,7 @@ MACRO end_bit_array ENDC ENDM -MACRO def_grass_wildmons +MACRO? def_grass_wildmons ;\1: encounter rate DEF CURRENT_GRASS_WILDMONS_RATE = \1 REDEF CURRENT_GRASS_WILDMONS_LABEL EQUS "._def_grass_wildmons_\1" @@ -137,7 +133,7 @@ MACRO def_grass_wildmons db \1 ENDM -MACRO end_grass_wildmons +MACRO? end_grass_wildmons DEF x = @ - {CURRENT_GRASS_WILDMONS_LABEL} IF CURRENT_GRASS_WILDMONS_RATE == 0 ASSERT 1 == x, \ @@ -148,7 +144,7 @@ MACRO end_grass_wildmons ENDC ENDM -MACRO def_water_wildmons +MACRO? def_water_wildmons ;\1: encounter rate DEF CURRENT_WATER_WILDMONS_RATE = \1 REDEF CURRENT_WATER_WILDMONS_LABEL EQUS "._def_water_wildmons_\1" @@ -156,7 +152,7 @@ MACRO def_water_wildmons db \1 ENDM -MACRO end_water_wildmons +MACRO? end_water_wildmons DEF x = @ - {CURRENT_WATER_WILDMONS_LABEL} IF CURRENT_WATER_WILDMONS_RATE == 0 ASSERT 1 == x, \ -- cgit v1.3.1-sl0p