summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
Diffstat (limited to 'macros')
-rw-r--r--macros/asserts.asm78
-rw-r--r--macros/data.asm8
-rw-r--r--macros/wram.asm51
3 files changed, 103 insertions, 34 deletions
diff --git a/macros/asserts.asm b/macros/asserts.asm
index a07bc553..946add28 100644
--- a/macros/asserts.asm
+++ b/macros/asserts.asm
@@ -38,6 +38,76 @@ 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 << 4
+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
+
+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
@@ -48,10 +118,10 @@ ENDM
end_grass_wildmons: MACRO
IF CURRENT_GRASS_WILDMONS_RATE == 0
- assert 1 == @ - {CURRENT_GRASS_WILDMONS_LABEL}, \
+ ASSERT 1 == @ - {CURRENT_GRASS_WILDMONS_LABEL}, \
"def_grass_wildmons {d:CURRENT_GRASS_WILDMONS_RATE}: expected 1 byte"
ELSE
- assert WILDDATA_LENGTH == @ - {CURRENT_GRASS_WILDMONS_LABEL}, \
+ ASSERT WILDDATA_LENGTH == @ - {CURRENT_GRASS_WILDMONS_LABEL}, \
"def_grass_wildmons {d:CURRENT_GRASS_WILDMONS_RATE}: expected {d:WILDDATA_LENGTH} bytes"
ENDC
ENDM
@@ -66,10 +136,10 @@ ENDM
end_water_wildmons: MACRO
IF CURRENT_WATER_WILDMONS_RATE == 0
- assert 1 == @ - {CURRENT_WATER_WILDMONS_LABEL}, \
+ ASSERT 1 == @ - {CURRENT_WATER_WILDMONS_LABEL}, \
"def_water_wildmons {d:CURRENT_WATER_WILDMONS_RATE}: expected 1 byte"
ELSE
- assert WILDDATA_LENGTH == @ - {CURRENT_WATER_WILDMONS_LABEL}, \
+ ASSERT WILDDATA_LENGTH == @ - {CURRENT_WATER_WILDMONS_LABEL}, \
"def_water_wildmons {d:CURRENT_WATER_WILDMONS_RATE}: expected {d:WILDDATA_LENGTH} bytes"
ENDC
ENDM
diff --git a/macros/data.asm b/macros/data.asm
index fb8ea844..eb5b5564 100644
--- a/macros/data.asm
+++ b/macros/data.asm
@@ -13,9 +13,6 @@ bcd3: MACRO
dn ((\1) / 10) % 10, (\1) % 10
ENDM
-coins EQUS "bcd2"
-money EQUS "bcd3"
-
; used in data/pokemon/base_stats/*.asm
tmhm: MACRO
; initialize bytes to 0
@@ -63,8 +60,3 @@ ENDM
dab: MACRO
dwb \1, BANK(\1)
ENDM
-
-dbbw: MACRO
- db \1, \2
- dw \3
-ENDM
diff --git a/macros/wram.asm b/macros/wram.asm
index 41fd1dad..9d412f2d 100644
--- a/macros/wram.asm
+++ b/macros/wram.asm
@@ -61,19 +61,19 @@ battle_struct: MACRO
ENDM
spritestatedata1: MACRO
-\1PictureID:: db
-\1MovementStatus:: db
-\1ImageIndex:: db
-\1YStepVector:: db
-\1YPixels:: db
-\1XStepVector:: db
-\1XPixels:: db
+\1PictureID:: db
+\1MovementStatus:: db
+\1ImageIndex:: db
+\1YStepVector:: db
+\1YPixels:: db
+\1XStepVector:: db
+\1XPixels:: db
\1IntraAnimFrameCounter:: db
-\1AnimFrameCounter:: db
-\1FacingDirection:: db
-\1YAdjusted:: db
-\1XAdjusted:: db
-\1CollisionData:: db
+\1AnimFrameCounter:: db
+\1FacingDirection:: db
+\1YAdjusted:: db
+\1XAdjusted:: db
+\1CollisionData:: db
ds 3
\1End::
ENDM
@@ -81,17 +81,24 @@ ENDM
spritestatedata2: MACRO
\1WalkAnimationCounter:: db
ds 1
-\1YDisplacement:: db
-\1XDisplacement:: db
-\1MapY:: db
-\1MapX:: db
-\1MovementByte1:: db
-\1GrassPriority:: db
-\1MovementDelay:: db
-\1OrigFacingDirection:: db
+\1YDisplacement:: db
+\1XDisplacement:: db
+\1MapY:: db
+\1MapX:: db
+\1MovementByte1:: db
+\1GrassPriority:: db
+\1MovementDelay:: db
+\1OrigFacingDirection:: db
ds 3
-\1PictureID:: db
-\1ImageBaseOffset:: db
+\1PictureID:: db
+\1ImageBaseOffset:: db
ds 1
\1End::
ENDM
+
+sprite_oam_struct: MACRO
+\1YCoord:: db
+\1XCoord:: db
+\1TileID:: db
+\1Attributes:: db
+ENDM