diff options
Diffstat (limited to 'macros/data.asm')
-rw-r--r-- | macros/data.asm | 50 |
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 |