diff options
Diffstat (limited to 'macros/asserts.asm')
-rw-r--r-- | macros/asserts.asm | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/macros/asserts.asm b/macros/asserts.asm index a07bc553..33021b45 100644 --- a/macros/asserts.asm +++ b/macros/asserts.asm @@ -38,6 +38,41 @@ x = \1 "{CURRENT_LIST_START}: expected {d:x} entries, got {d:list_index}" ENDM +nybble_array: MACRO +CURRENT_NYBBLE_ARRAY_VALUE = 0 +CURRENT_NYBBLE_ARRAY_LENGTH = 0 +IF _NARG == 1 +REDEF CURRENT_NYBBLE_ARRAY_START EQUS "\1" +ELSE +REDEF CURRENT_NYBBLE_ARRAY_START EQUS "._nybble_array\@" +{CURRENT_NYBBLE_ARRAY_START}: +ENDC +ENDM + +nybble: MACRO + ASSERT 0 <= (\1) && (\1) < $10, "nybbles must be 0-15" +CURRENT_NYBBLE_ARRAY_VALUE = (\1) | (CURRENT_NYBBLE_ARRAY_VALUE << 4) +CURRENT_NYBBLE_ARRAY_LENGTH = CURRENT_NYBBLE_ARRAY_LENGTH + 1 +IF CURRENT_NYBBLE_ARRAY_LENGTH % 2 == 0 + db CURRENT_NYBBLE_ARRAY_VALUE +CURRENT_NYBBLE_ARRAY_VALUE = 0 +ENDC +ENDM + +end_nybble_array: MACRO +IF CURRENT_NYBBLE_ARRAY_LENGTH % 2 + db CURRENT_NYBBLE_ARRAY_VALUE +ENDC +IF _NARG == 1 +x = \1 + ASSERT x == CURRENT_NYBBLE_ARRAY_LENGTH, \ + "{CURRENT_NYBBLE_ARRAY_START}: expected {d:x} nybbles, got {d:CURRENT_NYBBLE_ARRAY_LENGTH}" +x = (x + 1) / 2 + ASSERT x == @ - {CURRENT_NYBBLE_ARRAY_START}, \ + "{CURRENT_NYBBLE_ARRAY_START}: expected {d:x} bytes" +ENDC +ENDM + def_grass_wildmons: MACRO ;\1: encounter rate CURRENT_GRASS_WILDMONS_RATE = \1 |