summaryrefslogtreecommitdiff
path: root/macros/data.asm
diff options
context:
space:
mode:
Diffstat (limited to 'macros/data.asm')
-rw-r--r--macros/data.asm50
1 files changed, 25 insertions, 25 deletions
diff --git a/macros/data.asm b/macros/data.asm
index 16742d53..7ea7af2c 100644
--- a/macros/data.asm
+++ b/macros/data.asm
@@ -16,36 +16,36 @@ 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)
+tmhm: MACRO
+; initialize bytes to 0
+n = 0
+REPT (NUM_TM_HM + 7) / 8
+_TM_BYTE EQUS "_tm{d:n}"
+_TM_BYTE = 0
+PURGE _TM_BYTE
+n = n + 1
+ENDR
+; set bits of bytes
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 or HM move"
+ IF DEF(\1_TMNUM)
+n = (\1_TMNUM - 1) / 8
+i = (\1_TMNUM - 1) % 8
+_TM_BYTE EQUS "_tm{d:n}"
+_TM_BYTE = _TM_BYTE | (1 << i)
+PURGE _TM_BYTE
+ ELSE
+ FAIL "\1 is not a TM or HM move"
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
+; output bytes
+n = 0
+REPT (NUM_TM_HM + 7) / 8
+_TM_BYTE EQUS "_tm{d:n}"
+ db _TM_BYTE
+PURGE _TM_BYTE
+n = n + 1
ENDR
ENDM