diff options
Diffstat (limited to 'src/macros/data.asm')
-rw-r--r-- | src/macros/data.asm | 85 |
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 |