diff options
| author | ISSOtm <eldredhabert0@gmail.com> | 2018-05-27 11:18:14 +0200 |
|---|---|---|
| committer | ISSOtm <eldredhabert0@gmail.com> | 2018-05-27 11:18:14 +0200 |
| commit | 6bd6e25eef4a57d1898d7aae0b3b09e6dc5f2695 (patch) | |
| tree | 214d4e433770231e3067e069426beb449af74dd1 /macros/data.asm | |
| parent | 83afa8a12dfe450c378ca11743a2291501ec19a8 (diff) | |
Import more macros from pokecrystal
Diffstat (limited to 'macros/data.asm')
| -rw-r--r-- | macros/data.asm | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/macros/data.asm b/macros/data.asm new file mode 100644 index 0000000..241e52a --- /dev/null +++ b/macros/data.asm @@ -0,0 +1,129 @@ +; Value macros + +percent EQUS "* $ff / 100" + + +; 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 LOW((\2) >> x) +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 +; x tile, x pxl, y tile, y pxl + db \1 * 8 + \3, \2 * 8 + \4 +else +; x, y + db \1 * 8, \2 * 8 +endc +ENDM + +dsprite: MACRO +; y tile, y pxl, x tile, x pxl, vtile offset, flags, attributes + db LOW(\1 * 8) + \2, LOW(\3 * 8) + \4, \5, \6 +ENDM + + +menu_coords: MACRO +; x1, y1, x2, y2 + db \2, \1 ; start coords + db \4, \3 ; end coords +ENDM + + +bcd: MACRO +rept _NARG + dn LOW(\1) / 10, (\1) % 10 + shift +endr +ENDM + + +sine_table: MACRO +; \1 samples of sin(x) from x=0 to x<32768 (pi radians) +x = 0 +rept \1 + dw HIGH(sin(x) + LOW(sin(x))) ; round up +x = x + DIV(32768, \1) ; a circle has 65536 "degrees" +endr +ENDM |
