summaryrefslogtreecommitdiff
path: root/macros/asserts.asm
diff options
context:
space:
mode:
Diffstat (limited to 'macros/asserts.asm')
-rw-r--r--macros/asserts.asm35
1 files changed, 35 insertions, 0 deletions
diff --git a/macros/asserts.asm b/macros/asserts.asm
index 3082b26c..3e0a7a8b 100644
--- a/macros/asserts.asm
+++ b/macros/asserts.asm
@@ -73,6 +73,41 @@ x = (x + 1) / 2
ENDC
ENDM
+bit_array: MACRO
+CURRENT_BIT_ARRAY_VALUE = 0
+CURRENT_BIT_ARRAY_LENGTH = 0
+IF _NARG == 1
+REDEF CURRENT_BIT_ARRAY_START EQUS "\1"
+ELSE
+REDEF CURRENT_BIT_ARRAY_START EQUS "._bit_array\@"
+{CURRENT_BIT_ARRAY_START}:
+ENDC
+ENDM
+
+dbit: MACRO
+ ASSERT (\1) == 0 || (\1) == 1, "bits must be 0 or 1"
+CURRENT_BIT_ARRAY_VALUE = CURRENT_BIT_ARRAY_VALUE | ((\1) << (CURRENT_BIT_ARRAY_LENGTH % 8))
+CURRENT_BIT_ARRAY_LENGTH = CURRENT_BIT_ARRAY_LENGTH + 1
+IF CURRENT_BIT_ARRAY_LENGTH % 8 == 0
+ db CURRENT_BIT_ARRAY_VALUE
+CURRENT_BIT_ARRAY_VALUE = 0
+ENDC
+ENDM
+
+end_bit_array: MACRO
+IF CURRENT_BIT_ARRAY_LENGTH % 8
+ db CURRENT_BIT_ARRAY_VALUE
+ENDC
+IF _NARG == 1
+x = \1
+ ASSERT x == CURRENT_BIT_ARRAY_LENGTH, \
+ "{CURRENT_BIT_ARRAY_START}: expected {d:x} bits, got {d:CURRENT_BIT_ARRAY_LENGTH}"
+x = (x + 7) / 8
+ ASSERT x == @ - {CURRENT_BIT_ARRAY_START}, \
+ "{CURRENT_BIT_ARRAY_START}: expected {d:x} bytes"
+ENDC
+ENDM
+
def_grass_wildmons: MACRO
;\1: encounter rate
CURRENT_GRASS_WILDMONS_RATE = \1