From 405889193ed592174407599df0bfd08a2d707a1b Mon Sep 17 00:00:00 2001 From: Rangi Date: Sun, 5 Jul 2020 22:52:27 -0400 Subject: TM/HM constants named after moves --- constants/item_constants.asm | 134 +++++++++++++++++++++++++------------------ 1 file changed, 79 insertions(+), 55 deletions(-) (limited to 'constants') diff --git a/constants/item_constants.asm b/constants/item_constants.asm index a0c32d14..0bb7cdb7 100755 --- a/constants/item_constants.asm +++ b/constants/item_constants.asm @@ -102,58 +102,82 @@ SAFARI_ROCK EQU $16 ; overload const_value = $C4 - const HM_01 ; $C4 - const HM_02 ; $C5 - const HM_03 ; $C6 - const HM_04 ; $C7 - const HM_05 ; $C8 - const TM_01 ; $C9 - const TM_02 ; $CA - const TM_03 ; $CB - const TM_04 ; $CC - const TM_05 ; $CD - const TM_06 ; $CE - const TM_07 ; $CF - const TM_08 ; $D0 - const TM_09 ; $D1 - const TM_10 ; $D2 - const TM_11 ; $D3 - const TM_12 ; $D4 - const TM_13 ; $D5 - const TM_14 ; $D6 - const TM_15 ; $D7 - const TM_16 ; $D8 - const TM_17 ; $D9 - const TM_18 ; $DA - const TM_19 ; $DB - const TM_20 ; $DC - const TM_21 ; $DD - const TM_22 ; $DE - const TM_23 ; $DF - const TM_24 ; $E0 - const TM_25 ; $E1 - const TM_26 ; $E2 - const TM_27 ; $E3 - const TM_28 ; $E4 - const TM_29 ; $E5 - const TM_30 ; $E6 - const TM_31 ; $E7 - const TM_32 ; $E8 - const TM_33 ; $E9 - const TM_34 ; $EA - const TM_35 ; $EB - const TM_36 ; $EC - const TM_37 ; $ED - const TM_38 ; $EE - const TM_39 ; $EF - const TM_40 ; $F0 - const TM_41 ; $F1 - const TM_42 ; $F2 - const TM_43 ; $F3 - const TM_44 ; $F4 - const TM_45 ; $F5 - const TM_46 ; $F6 - const TM_47 ; $F7 - const TM_48 ; $F8 - const TM_49 ; $F9 - const TM_50 ; $FA +add_hm: MACRO +if !DEF(HM01) +HM01 EQU const_value + enum_start 51 ; NUM_TMS + 1 +endc + const HM_\1 + enum \1_TMNUM +ENDM + + add_hm CUT ; $C4 + add_hm FLY ; $C5 + add_hm SURF ; $C6 + add_hm STRENGTH ; $C7 + add_hm FLASH ; $C8 +NUM_HMS EQU const_value - HM01 + +add_tm: MACRO +if !DEF(TM01) +TM01 EQU const_value + enum_start 1 +endc + const TM_\1 + enum \1_TMNUM +ENDM + + add_tm MEGA_PUNCH ; $C9 + add_tm RAZOR_WIND ; $CA + add_tm SWORDS_DANCE ; $CB + add_tm WHIRLWIND ; $CC + add_tm MEGA_KICK ; $CD + add_tm TOXIC ; $CE + add_tm HORN_DRILL ; $CF + add_tm BODY_SLAM ; $D0 + add_tm TAKE_DOWN ; $D1 + add_tm DOUBLE_EDGE ; $D2 + add_tm BUBBLEBEAM ; $D3 + add_tm WATER_GUN ; $D4 + add_tm ICE_BEAM ; $D5 + add_tm BLIZZARD ; $D6 + add_tm HYPER_BEAM ; $D7 + add_tm PAY_DAY ; $D8 + add_tm SUBMISSION ; $D9 + add_tm COUNTER ; $DA + add_tm SEISMIC_TOSS ; $DB + add_tm RAGE ; $DC + add_tm MEGA_DRAIN ; $DD + add_tm SOLARBEAM ; $DE + add_tm DRAGON_RAGE ; $DF + add_tm THUNDERBOLT ; $E0 + add_tm THUNDER ; $E1 + add_tm EARTHQUAKE ; $E2 + add_tm FISSURE ; $E3 + add_tm DIG ; $E4 + add_tm PSYCHIC_M ; $E5 + add_tm TELEPORT ; $E6 + add_tm MIMIC ; $E7 + add_tm DOUBLE_TEAM ; $E8 + add_tm REFLECT ; $E9 + add_tm BIDE ; $EA + add_tm METRONOME ; $EB + add_tm SELFDESTRUCT ; $EC + add_tm EGG_BOMB ; $ED + add_tm FIRE_BLAST ; $EE + add_tm SWIFT ; $EF + add_tm SKULL_BASH ; $F0 + add_tm SOFTBOILED ; $F1 + add_tm DREAM_EATER ; $F2 + add_tm SKY_ATTACK ; $F3 + add_tm REST ; $F4 + add_tm THUNDER_WAVE ; $F5 + add_tm PSYWAVE ; $F6 + add_tm EXPLOSION ; $F7 + add_tm ROCK_SLIDE ; $F8 + add_tm TRI_ATTACK ; $F9 + add_tm SUBSTITUTE ; $FA +NUM_TMS EQU const_value - TM01 + + enum_start NUM_TMS + NUM_HMS + 1 + enum UNUSED_TMNUM -- cgit v1.3.1-sl0p From 25a3e67b940fc91c11ed9b408fa20762995e6948 Mon Sep 17 00:00:00 2001 From: Rangi Date: Mon, 6 Jul 2020 09:32:55 -0400 Subject: add_tm and add_hm define TM##_MOVE and HM##_MOVE constants, to avoid repeating the move names twice --- constants.asm | 2 +- constants/item_constants.asm | 39 +++++++++++++-- data/moves/tmhm_moves.asm | 113 ++++++++++++++++++++++--------------------- 3 files changed, 94 insertions(+), 60 deletions(-) (limited to 'constants') diff --git a/constants.asm b/constants.asm index b1395ea8..f52af60d 100644 --- a/constants.asm +++ b/constants.asm @@ -16,12 +16,12 @@ INCLUDE "constants/pokemon_constants.asm" INCLUDE "constants/pokedex_constants.asm" INCLUDE "constants/pokemon_data_constants.asm" INCLUDE "constants/trainer_constants.asm" -INCLUDE "constants/item_constants.asm" INCLUDE "constants/type_constants.asm" INCLUDE "constants/move_constants.asm" INCLUDE "constants/move_animation_constants.asm" INCLUDE "constants/move_effect_constants.asm" INCLUDE "constants/battle_constants.asm" +INCLUDE "constants/item_constants.asm" INCLUDE "constants/icon_constants.asm" INCLUDE "constants/sprite_constants.asm" INCLUDE "constants/sprite_data_constants.asm" diff --git a/constants/item_constants.asm b/constants/item_constants.asm index 0bb7cdb7..1ec70446 100755 --- a/constants/item_constants.asm +++ b/constants/item_constants.asm @@ -103,10 +103,27 @@ SAFARI_ROCK EQU $16 ; overload const_value = $C4 add_hm: MACRO -if !DEF(HM01) +; Defines three constants: +; - HM_\1: the item id, starting at $C4 +; - \1_TMNUM: the learnable TM/HM flag, starting at 51 +; - HM##_MOVE: alias for the move id, equal to the value of \1 +; The first usage also defines HM01 as the first HM item id. +; +; HMs are defined before TMs, so the value of NUM_TMS is not +; available here, and its value of 50 is hard-coded. +IF !DEF(HM01) HM01 EQU const_value enum_start 51 ; NUM_TMS + 1 -endc +ENDC +HM_VALUE EQU __enum__ - 50 ; __enum__ - NUM_TMS +IF HM_VALUE < 10 +MOVE_FOR_HM EQUS "HM0{d:HM_VALUE}_MOVE" +ELSE +MOVE_FOR_HM EQUS "HM{d:HM_VALUE}_MOVE" +ENDC +MOVE_FOR_HM = \1 +PURGE MOVE_FOR_HM +PURGE HM_VALUE const HM_\1 enum \1_TMNUM ENDM @@ -119,10 +136,22 @@ ENDM NUM_HMS EQU const_value - HM01 add_tm: MACRO -if !DEF(TM01) +; Defines three constants: +; - TM_\1: the item id, starting at $C9 +; - \1_TMNUM: the learnable TM/HM flag, starting at 1 +; - TM##_MOVE: alias for the move id, equal to the value of \1 +; The first usage also defines TM01 as the first TM item id. +IF !DEF(TM01) TM01 EQU const_value enum_start 1 -endc +ENDC +IF __enum__ < 10 +MOVE_FOR_TM EQUS "TM0{d:__enum__}_MOVE" +ELSE +MOVE_FOR_TM EQUS "TM{d:__enum__}_MOVE" +ENDC +MOVE_FOR_TM = \1 +PURGE MOVE_FOR_TM const TM_\1 enum \1_TMNUM ENDM @@ -179,5 +208,7 @@ ENDM add_tm SUBSTITUTE ; $FA NUM_TMS EQU const_value - TM01 +; 50 TMs + 5 HMs = 55 learnable TM/HM flags per Pokémon. +; These fit in 7 bytes, with one unused bit left over. enum_start NUM_TMS + NUM_HMS + 1 enum UNUSED_TMNUM diff --git a/data/moves/tmhm_moves.asm b/data/moves/tmhm_moves.asm index 23c1685e..0e722f09 100755 --- a/data/moves/tmhm_moves.asm +++ b/data/moves/tmhm_moves.asm @@ -1,56 +1,59 @@ +; The add_hm and add_tm macros in constants/item_constants.asm simultaneously +; define constants for the item IDs and for the corresponding move values. + TechnicalMachines: - db MEGA_PUNCH - db RAZOR_WIND - db SWORDS_DANCE - db WHIRLWIND - db MEGA_KICK - db TOXIC - db HORN_DRILL - db BODY_SLAM - db TAKE_DOWN - db DOUBLE_EDGE - db BUBBLEBEAM - db WATER_GUN - db ICE_BEAM - db BLIZZARD - db HYPER_BEAM - db PAY_DAY - db SUBMISSION - db COUNTER - db SEISMIC_TOSS - db RAGE - db MEGA_DRAIN - db SOLARBEAM - db DRAGON_RAGE - db THUNDERBOLT - db THUNDER - db EARTHQUAKE - db FISSURE - db DIG - db PSYCHIC_M - db TELEPORT - db MIMIC - db DOUBLE_TEAM - db REFLECT - db BIDE - db METRONOME - db SELFDESTRUCT - db EGG_BOMB - db FIRE_BLAST - db SWIFT - db SKULL_BASH - db SOFTBOILED - db DREAM_EATER - db SKY_ATTACK - db REST - db THUNDER_WAVE - db PSYWAVE - db EXPLOSION - db ROCK_SLIDE - db TRI_ATTACK - db SUBSTITUTE - db CUT - db FLY - db SURF - db STRENGTH - db FLASH + db TM01_MOVE + db TM02_MOVE + db TM03_MOVE + db TM04_MOVE + db TM05_MOVE + db TM06_MOVE + db TM07_MOVE + db TM08_MOVE + db TM09_MOVE + db TM10_MOVE + db TM11_MOVE + db TM12_MOVE + db TM13_MOVE + db TM14_MOVE + db TM15_MOVE + db TM16_MOVE + db TM17_MOVE + db TM18_MOVE + db TM19_MOVE + db TM20_MOVE + db TM21_MOVE + db TM22_MOVE + db TM23_MOVE + db TM24_MOVE + db TM25_MOVE + db TM26_MOVE + db TM27_MOVE + db TM28_MOVE + db TM29_MOVE + db TM30_MOVE + db TM31_MOVE + db TM32_MOVE + db TM33_MOVE + db TM34_MOVE + db TM35_MOVE + db TM36_MOVE + db TM37_MOVE + db TM38_MOVE + db TM39_MOVE + db TM40_MOVE + db TM41_MOVE + db TM42_MOVE + db TM43_MOVE + db TM44_MOVE + db TM45_MOVE + db TM46_MOVE + db TM47_MOVE + db TM48_MOVE + db TM49_MOVE + db TM50_MOVE + db HM01_MOVE + db HM02_MOVE + db HM03_MOVE + db HM04_MOVE + db HM05_MOVE -- cgit v1.3.1-sl0p From 43e0e40d5a4af369661fd6c7aa44d7265b9f6e59 Mon Sep 17 00:00:00 2001 From: Rangi Date: Mon, 6 Jul 2020 11:28:51 -0400 Subject: Avoid repeating the NUM_TMS value --- constants/item_constants.asm | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'constants') diff --git a/constants/item_constants.asm b/constants/item_constants.asm index 1ec70446..7904b4c1 100755 --- a/constants/item_constants.asm +++ b/constants/item_constants.asm @@ -102,20 +102,22 @@ SAFARI_ROCK EQU $16 ; overload const_value = $C4 +; HMs are defined before TMs, so the actual number of TM definitions +; is not yet available. The TM quantity is hard-coded here and must +; match the actual number below. +NUM_TMS EQU 50 + add_hm: MACRO ; Defines three constants: ; - HM_\1: the item id, starting at $C4 ; - \1_TMNUM: the learnable TM/HM flag, starting at 51 ; - HM##_MOVE: alias for the move id, equal to the value of \1 ; The first usage also defines HM01 as the first HM item id. -; -; HMs are defined before TMs, so the value of NUM_TMS is not -; available here, and its value of 50 is hard-coded. IF !DEF(HM01) HM01 EQU const_value - enum_start 51 ; NUM_TMS + 1 + enum_start NUM_TMS + 1 ENDC -HM_VALUE EQU __enum__ - 50 ; __enum__ - NUM_TMS +HM_VALUE EQU __enum__ - NUM_TMS IF HM_VALUE < 10 MOVE_FOR_HM EQUS "HM0{d:HM_VALUE}_MOVE" ELSE @@ -206,7 +208,7 @@ ENDM add_tm ROCK_SLIDE ; $F8 add_tm TRI_ATTACK ; $F9 add_tm SUBSTITUTE ; $FA -NUM_TMS EQU const_value - TM01 +assert NUM_TMS == const_value - TM01, "NUM_TMS ({d:NUM_TMS}) does not match the number of add_tm definitions" ; 50 TMs + 5 HMs = 55 learnable TM/HM flags per Pokémon. ; These fit in 7 bytes, with one unused bit left over. -- cgit v1.3.1-sl0p