diff options
Diffstat (limited to 'macros/base_stats.asm')
-rw-r--r-- | macros/base_stats.asm | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/macros/base_stats.asm b/macros/base_stats.asm new file mode 100644 index 000000000..f7c841634 --- /dev/null +++ b/macros/base_stats.asm @@ -0,0 +1,67 @@ +; Used in data/pokemon/base_stats/*.asm + +define: macro +if !def(\1) +\1 equs \2 +endc +endm + +const_value = 0 + +add_tm: MACRO +if !def(TM01) +TM01 = const_value + enum_start 1 +endc + define _\@_1, "TM_\1" + const _\@_1 + enum \1_TMNUM +ENDM + +add_hm: MACRO +if !def(HM01) +HM01 = const_value +endc + define _\@_1, "HM_\1" + const _\@_1 + enum \1_TMNUM +ENDM + +add_mt: MACRO + enum \1_TMNUM +ENDM + +; N TMs/HMs need (N+7)/8 bytes for their bit flags. +; The rgbasm integers tms1, tms2, tms3 each hold 3 bytes, or 24 bits. +tmhm: MACRO +tms1 = 0 +tms2 = 0 +tms3 = 0 +rept _NARG + if def(\1_TMNUM) + if \1_TMNUM < 24 + 1 +tms1 = tms1 | (1 << ((\1_TMNUM) - 1)) + elif \1_TMNUM < 48 + 1 +tms2 = tms2 | (1 << ((\1_TMNUM) - 1 - 24)) + else +tms3 = tms3 | (1 << ((\1_TMNUM) - 1 - 48)) + endc + else + fail "\1 is not a TM, HM, or move tutor move" + endc + shift +endr + +rept 3 + db tms1 & $ff +tms1 = tms1 >> 8 +endr +rept 3 + db tms2 & $ff +tms2 = tms2 >> 8 +endr +rept 2 + db tms3 & $ff +tms3 = tms3 >> 8 +endr +ENDM |