mirror of
https://github.com/thornAvery/kep-hack.git
synced 2026-02-06 15:45:24 +13:00
Use macros for bit arrays
This commit is contained in:
parent
715496bf35
commit
346ce9454a
4 changed files with 124 additions and 107 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue