kep-hack/macros/data.asm
Rangi 66ebe56adc Port pokecrystal's base data and tmhm structure
To do: TM/HM constants named after moves
2020-07-05 21:59:32 -04:00

77 lines
1.1 KiB
NASM
Executable file

; Value macros
percent EQUS "* $ff / 100"
bcd2: MACRO
dn ((\1) / 1000) % 10, ((\1) / 100) % 10
dn ((\1) / 10) % 10, (\1) % 10
ENDM
bcd3: MACRO
dn ((\1) / 100000) % 10, ((\1) / 10000) % 10
dn ((\1) / 1000) % 10, ((\1) / 100) % 10
dn ((\1) / 10) % 10, (\1) % 10
ENDM
coins equs "bcd2"
money equs "bcd3"
tmhm: MACRO
; used in data/pokemon/base_stats/*.asm
_tms1 = 0 ; TM01-TM24 (24)
_tms2 = 0 ; TM25-TM48 (24)
_tms3 = 0 ; TM49-TM50 + HM01-HM05 (7/24)
rept _NARG
if (\1) < 24 + 1
_tms1 = _tms1 | (1 << ((\1) - 1))
elif (\1) < 48 + 1
_tms2 = _tms2 | (1 << ((\1) - 1 - 24))
else
_tms3 = _tms3 | (1 << ((\1) - 1 - 48))
endc
shift
endr
rept 3 ; TM01-TM24 (24/24)
db _tms1 & $ff
_tms1 = _tms1 >> 8
endr
rept 3 ; TM25-TM48 (24/24)
db _tms2 & $ff
_tms2 = _tms2 >> 8
endr
rept 1 ; TM49-TM50 + HM01-HM05 (7/8)
db _tms3 & $ff
_tms3 = _tms3 >> 8
endr
ENDM
; Constant data (db, dw, dl) macros
dn: MACRO ; nybbles
db (\1 << 4 | \2)
ENDM
dbw: MACRO
db \1
dw \2
ENDM
dba: MACRO
dbw BANK(\1), \1
ENDM
dwb: MACRO
dw \1
db \2
ENDM
dab: MACRO
dwb \1, BANK(\1)
ENDM
dbbw: MACRO
db \1, \2
dw \3
ENDM