summaryrefslogtreecommitdiff
path: root/src/macros/data.asm
diff options
context:
space:
mode:
Diffstat (limited to 'src/macros/data.asm')
-rw-r--r--src/macros/data.asm85
1 files changed, 53 insertions, 32 deletions
diff --git a/src/macros/data.asm b/src/macros/data.asm
index 1c73ac3..4f66742 100644
--- a/src/macros/data.asm
+++ b/src/macros/data.asm
@@ -1,42 +1,63 @@
-energy: MACRO
-fg = 0
-lw = 0
-fp = 0
-c_ = 0
+dn: MACRO
+ db \1 << 4 | \2
+ENDM
- if _NARG > 1
+dbw: MACRO
+ db \1
+ dw \2
+ENDM
- rept _NARG / 2
+dwb: MACRO
+ dw \1
+ db \2
+ENDM
- if \1 == FIRE
-fg = fg + \2 * $10
- endc
- if \1 == GRASS
-fg = fg + \2
- endc
- if \1 == LIGHTNING
-lw = lw + \2 * $10
- endc
- if \1 == WATER
-lw = lw + \2
- endc
- if \1 == FIGHTING
-fp = fp + \2 * $10
- endc
- if \1 == PSYCHIC
-fp = fp + \2
- endc
- if \1 == COLORLESS
-c_ = c_ + \2 * $10
- endc
+dx: MACRO
+x = 8 * ((\1) - 1)
+ rept \1
+ db ((\2) >> x) & $ff
+x = x + -8
+ endr
+ ENDM
+
+dt: MACRO ; three-byte (big-endian)
+ dx 3, \1
+ ENDM
+
+dd: MACRO ; four-byte (big-endian)
+ dx 4, \1
+ ENDM
+bigdw: MACRO ; big-endian word
+ dx 2, \1
+ ENDM
+
+sgb: MACRO
+ db \1 * 8 + \2 ; sgb_command * 8 + length
+ENDM
+
+rgb: MACRO
+ dw (\3 << 10 | \2 << 5 | \1)
+ENDM
+
+; macros used in data/cards.asm, but might be useful elsewhere eventually
+
+energy: MACRO
+en = 0
+if _NARG > 1
+ rept _NARG / 2
+x = 4 - 8 * (\1 % 2)
+en = en + \2 << ((\1 * 4) + x)
shift
shift
-
endr
-
- endc
- db fg, lw, fp, c_
+ rept NUM_TYPES / 2
+ db LOW(en)
+en = en >> 8
+ endr
+else
+ db 0, 0, 0, 0
+endc
ENDM
gfx: MACRO