pokecrystal-board/macros/data.asm

119 lines
1.3 KiB
NASM
Raw Normal View History

2017-12-13 21:36:24 -08:00
; Constant data (db, dw, dl) macros
dwb: MACRO
dw \1
db \2
2017-12-28 13:31:16 -08:00
ENDM
2017-12-13 21:36:24 -08:00
dbw: MACRO
db \1
dw \2
2017-12-28 13:31:16 -08:00
ENDM
2017-12-13 21:36:24 -08:00
dbbw: MACRO
db \1, \2
dw \3
2017-12-28 13:31:16 -08:00
ENDM
2017-12-13 21:36:24 -08:00
dbww: MACRO
db \1
dw \2, \3
2017-12-28 13:31:16 -08:00
ENDM
2017-12-13 21:36:24 -08:00
dbwww: MACRO
db \1
dw \2, \3, \4
2017-12-28 13:31:16 -08:00
ENDM
2017-12-13 21:36:24 -08:00
dn: MACRO ; nybbles
rept _NARG / 2
db ((\1) << 4) | (\2)
shift
shift
endr
2017-12-28 13:31:16 -08:00
ENDM
2017-12-13 21:36:24 -08:00
dc: MACRO ; "crumbs"
rept _NARG / 4
db ((\1) << 6) | ((\2) << 4) | ((\3) << 2) | (\4)
shift
shift
shift
shift
endr
2017-12-28 13:31:16 -08:00
ENDM
2017-12-13 21:36:24 -08:00
dx: MACRO
x = 8 * ((\1) - 1)
rept \1
db ((\2) >> x) & $ff
x = x + -8
endr
2017-12-28 13:31:16 -08:00
ENDM
2017-12-13 21:36:24 -08:00
dt: MACRO ; three-byte (big-endian)
dx 3, \1
2017-12-28 13:31:16 -08:00
ENDM
2017-12-13 21:36:24 -08:00
dd: MACRO ; four-byte (big-endian)
dx 4, \1
2017-12-28 13:31:16 -08:00
ENDM
2017-12-13 21:36:24 -08:00
bigdw: MACRO ; big-endian word
dx 2, \1
2017-12-28 13:31:16 -08:00
ENDM
2017-12-13 21:36:24 -08:00
dba: MACRO ; dbw bank, address
rept _NARG
dbw BANK(\1), \1
shift
endr
2017-12-28 13:31:16 -08:00
ENDM
2017-12-13 21:36:24 -08:00
dab: MACRO ; dwb address, bank
rept _NARG
dwb \1, BANK(\1)
shift
endr
2017-12-28 13:31:16 -08:00
ENDM
2017-12-13 21:36:24 -08:00
dba_pic: MACRO ; dbw bank, address
db BANK(\1) - PICS_FIX
dw \1
ENDM
dbpixel: MACRO
if _NARG >= 4
2018-01-02 15:06:56 -08:00
; x tile, x pxl, y tile, y pxl
2017-12-13 21:36:24 -08:00
db \1 * 8 + \3, \2 * 8 + \4
else
2018-01-02 15:06:56 -08:00
; x, y
2017-12-13 21:36:24 -08:00
db \1 * 8, \2 * 8
endc
2017-12-28 13:31:16 -08:00
ENDM
2017-12-13 21:36:24 -08:00
dsprite: MACRO
2018-01-02 15:06:56 -08:00
; y tile, y pxl, x tile, x pxl, vtile offset, flags, attributes
2017-12-13 21:36:24 -08:00
db (\1 * 8) % $100 + \2, (\3 * 8) % $100 + \4, \5, \6
2017-12-28 13:31:16 -08:00
ENDM
2017-12-13 21:36:24 -08:00
sine_wave: MACRO
; \1: amplitude
x = 0
rept $20
; Round up.
dw (sin(x) + (sin(x) & $ff)) >> 8
x = x + (\1) * $40000
endr
ENDM
bcd: MACRO
rept _NARG
dn ((\1) % 100) / 10, (\1) % 10
shift
endr
ENDM