diff options
author | Remy Oukaour <remy.oukaour@gmail.com> | 2017-12-14 00:36:24 -0500 |
---|---|---|
committer | Remy Oukaour <remy.oukaour@gmail.com> | 2017-12-14 00:36:24 -0500 |
commit | e48a401290e794854880f06fc230a369f37e6b9b (patch) | |
tree | dcad6cd5d1a7e62a2f2a92522c5619d41dc416cf /macros/data.asm | |
parent | 8745915dbd38e9647e0b27d20cb73da0fdde353f (diff) |
Reorganize macros
Diffstat (limited to 'macros/data.asm')
-rw-r--r-- | macros/data.asm | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/macros/data.asm b/macros/data.asm new file mode 100644 index 000000000..cf4af0338 --- /dev/null +++ b/macros/data.asm @@ -0,0 +1,121 @@ +; Constant data (db, dw, dl) macros + +dwb: MACRO + dw \1 + db \2 + ENDM + +dbw: MACRO + db \1 + dw \2 + ENDM + +dbbw: MACRO + db \1, \2 + dw \3 + ENDM + +dbww: MACRO + db \1 + dw \2, \3 + ENDM + +dbwww: MACRO + db \1 + dw \2, \3, \4 + ENDM + +dn: MACRO ; nybbles + rept _NARG / 2 + db ((\1) << 4) | (\2) + shift + shift + endr + ENDM + +dc: MACRO ; "crumbs" + rept _NARG / 4 + db ((\1) << 6) | ((\2) << 4) | ((\3) << 2) | (\4) + shift + shift + shift + shift + endr + ENDM + +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 + +dba: MACRO ; dbw bank, address + rept _NARG + dbw BANK(\1), \1 + shift + endr + ENDM + +dab: MACRO ; dwb address, bank + rept _NARG + dwb \1, BANK(\1) + shift + endr + ENDM + +dba_pic: MACRO ; dbw bank, address + db BANK(\1) - PICS_FIX + dw \1 +ENDM + + +dbpixel: MACRO +if _NARG >= 4 + db \1 * 8 + \3, \2 * 8 + \4 +else + db \1 * 8, \2 * 8 +endc +endm + +dsprite: MACRO +; conditional segment is there because not every instance of +; this macro is directly OAM +if _NARG >= 7 ; y tile, y pxl, x tile, x pxl, vtile offset, flags, palette + db (\1 * 8) % $100 + \2, (\3 * 8) % $100 + \4, \5, (\6 << 3) + (\7 & 7) +else + db (\1 * 8) % $100 + \2, (\3 * 8) % $100 + \4, \5, \6 +endc +endm + + +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 |