Reorganize macros
This commit is contained in:
323
macros.asm
323
macros.asm
@@ -1,320 +1,25 @@
|
||||
INCLUDE "macros/enum.asm"
|
||||
INCLUDE "macros/basestats.asm"
|
||||
INCLUDE "macros/event.asm"
|
||||
INCLUDE "macros/sound.asm"
|
||||
INCLUDE "macros/text.asm"
|
||||
INCLUDE "macros/charmap.asm"
|
||||
INCLUDE "macros/move_anim.asm"
|
||||
INCLUDE "macros/movement.asm"
|
||||
INCLUDE "macros/map.asm"
|
||||
INCLUDE "macros/pic.asm"
|
||||
INCLUDE "macros/predef.asm"
|
||||
INCLUDE "macros/rst.asm"
|
||||
INCLUDE "macros/mobile.asm"
|
||||
INCLUDE "macros/trainer.asm"
|
||||
INCLUDE "macros/trade_anim.asm"
|
||||
INCLUDE "macros/data.asm"
|
||||
INCLUDE "macros/code.asm"
|
||||
INCLUDE "macros/coords.asm"
|
||||
INCLUDE "macros/color.asm"
|
||||
INCLUDE "macros/basestats.asm"
|
||||
INCLUDE "macros/tilesets.asm"
|
||||
|
||||
RGB: MACRO
|
||||
rept _NARG / 3
|
||||
dw ((\3) << 10) + ((\2) << 5) + (\1)
|
||||
shift
|
||||
shift
|
||||
shift
|
||||
endr
|
||||
ENDM
|
||||
INCLUDE "macros/scripts/audio.asm"
|
||||
INCLUDE "macros/scripts/maps.asm"
|
||||
INCLUDE "macros/scripts/event.asm"
|
||||
INCLUDE "macros/scripts/text.asm"
|
||||
INCLUDE "macros/scripts/movement.asm"
|
||||
INCLUDE "macros/scripts/move_anim.asm"
|
||||
INCLUDE "macros/scripts/trade_anim.asm"
|
||||
INCLUDE "macros/scripts/gfx_anim.asm"
|
||||
|
||||
|
||||
percent EQUS "* $ff / 100"
|
||||
|
||||
|
||||
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
|
||||
rept _NARG / 2
|
||||
db (\1) << 4 + (\2)
|
||||
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
|
||||
|
||||
lb: MACRO ; r, hi, lo
|
||||
ld \1, (\2 & $ff) << 8 + (\3 & $ff)
|
||||
ENDM
|
||||
|
||||
ln: MACRO ; r, hi, lo
|
||||
ld \1, (\2 & $f) << 4 + (\3 & $f)
|
||||
ENDM
|
||||
|
||||
bccoord equs "coord bc,"
|
||||
decoord equs "coord de,"
|
||||
hlcoord equs "coord hl,"
|
||||
|
||||
coord: MACRO
|
||||
; register, x, y[, origin]
|
||||
if _NARG < 4
|
||||
ld \1, TileMap + SCREEN_WIDTH * (\3) + (\2)
|
||||
else
|
||||
ld \1, \4 + SCREEN_WIDTH * (\3) + (\2)
|
||||
endc
|
||||
ENDM
|
||||
|
||||
dwcoord: MACRO
|
||||
rept _NARG / 2
|
||||
dw TileMap + SCREEN_WIDTH * (\2) + (\1)
|
||||
shift
|
||||
shift
|
||||
endr
|
||||
ENDM
|
||||
|
||||
ldcoord_a: MACRO
|
||||
if _NARG < 3
|
||||
ld [TileMap + SCREEN_WIDTH * (\2) + (\1)], a
|
||||
else
|
||||
ld [\3 + SCREEN_WIDTH * (\2) + (\1)], a
|
||||
endc
|
||||
ENDM
|
||||
|
||||
lda_coord: MACRO
|
||||
if _NARG < 3
|
||||
ld a, [TileMap + SCREEN_WIDTH * (\2) + (\1)]
|
||||
else
|
||||
ld a, [\3 + SCREEN_WIDTH * (\2) + (\1)]
|
||||
endc
|
||||
ENDM
|
||||
|
||||
; pic animations
|
||||
frame: MACRO
|
||||
db \1
|
||||
x = \2
|
||||
IF _NARG > 2
|
||||
rept _NARG +- 2
|
||||
x = x | (1 << (\3 + 1))
|
||||
shift
|
||||
endr
|
||||
endc
|
||||
db x
|
||||
ENDM
|
||||
setrepeat: MACRO
|
||||
db $fe
|
||||
db \1
|
||||
ENDM
|
||||
dorepeat: MACRO
|
||||
db $fd
|
||||
db \1
|
||||
ENDM
|
||||
endanim: MACRO
|
||||
db $ff
|
||||
ENDM
|
||||
|
||||
|
||||
delanim: MACRO
|
||||
db $fc
|
||||
ENDM
|
||||
dorestart: MACRO
|
||||
db $fe
|
||||
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
|
||||
|
||||
tiles EQUS "* $10"
|
||||
tile EQUS "+ $10 *"
|
||||
|
||||
partymon: MACRO
|
||||
db \1
|
||||
db \2
|
||||
db \3, \4, \5, \6
|
||||
dw \7
|
||||
dt \8
|
||||
rept 8
|
||||
shift
|
||||
endr
|
||||
rept 5
|
||||
bigdw \1
|
||||
shift
|
||||
endr
|
||||
db \1, \2
|
||||
db \3, \4, \5, \6
|
||||
rept 6
|
||||
shift
|
||||
endr
|
||||
db \1
|
||||
db \2, \3, \4
|
||||
db \5
|
||||
db \6, \7
|
||||
rept 7
|
||||
shift
|
||||
endr
|
||||
rept 7
|
||||
bigdw \1
|
||||
shift
|
||||
endr
|
||||
db \1
|
||||
ENDM
|
||||
|
||||
palettes EQUS "* 8"
|
||||
palette EQUS "+ 8 *"
|
||||
|
||||
ldpixel: MACRO
|
||||
if _NARG >= 5
|
||||
lb \1, \2 * 8 + \4, \3 * 8 + \5
|
||||
else
|
||||
lb \1, \2 * 8, \3 * 8
|
||||
endc
|
||||
endm
|
||||
|
||||
depixel EQUS "ldpixel de,"
|
||||
bcpixel EQUS "ldpixel bc,"
|
||||
|
||||
dbpixel: MACRO
|
||||
if _NARG >= 4
|
||||
db \1 * 8 + \3, \2 * 8 + \4
|
||||
else
|
||||
db \1 * 8, \2 * 8
|
||||
endc
|
||||
endm
|
||||
|
||||
bgcoord: MACRO
|
||||
IF _NARG >= 4
|
||||
ld \1, \3 * $20 + \2 + \4
|
||||
ELSE
|
||||
ld \1, \3 * $20 + \2 + VBGMap0
|
||||
ENDC
|
||||
ENDM
|
||||
|
||||
hlbgcoord EQUS "bgcoord hl,"
|
||||
debgcoord EQUS "bgcoord de,"
|
||||
bcbgcoord EQUS "bgcoord bc,"
|
||||
bgrows EQUS "* $20"
|
||||
|
||||
palred EQUS "$0001 *"
|
||||
palgreen EQUS "$0020 *"
|
||||
palblue EQUS "$0400 *"
|
||||
|
||||
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
|
||||
|
||||
jumptable: MACRO
|
||||
ld a, [\2]
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, \1
|
||||
add hl, de
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
jp hl
|
||||
endm
|
||||
|
||||
maskbits: macro
|
||||
; returns to x
|
||||
; usage in rejection sampling
|
||||
; .loop
|
||||
; call Random
|
||||
; maskbits 30
|
||||
; and x
|
||||
; cp 30
|
||||
; jr nc, .loop
|
||||
|
||||
x = 1
|
||||
rept 8
|
||||
IF \1 > x
|
||||
x = (x + 1) * 2 +- 1
|
||||
ENDC
|
||||
endr
|
||||
endm
|
||||
|
||||
homecall: MACRO
|
||||
ld a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(\1)
|
||||
rst Bankswitch
|
||||
|
||||
call \1
|
||||
|
||||
pop af
|
||||
rst Bankswitch
|
||||
ENDM
|
||||
|
||||
tile EQUS "+ $10 *"
|
||||
|
Reference in New Issue
Block a user