From b4f9d6d92ea3bf2ce0227324e85311aaa0f828f0 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 23 Oct 2017 19:09:35 -0400 Subject: document berry.c. --- data/scripts/berry_tree.inc | 2 +- data/specials.inc | 2 +- include/berry.h | 29 +-- include/field_control_avatar.h | 2 +- include/field_map_obj.h | 2 +- include/global.berry.h | 71 +++--- src/engine/clock.c | 17 +- src/field/berry.c | 499 +++++++++++++++++++++------------------ src/field/field_control_avatar.c | 3 +- src/field/field_map_obj.c | 13 +- src/field/field_special_scene.c | 3 +- src/field/item_use.c | 2 +- 12 files changed, 342 insertions(+), 303 deletions(-) diff --git a/data/scripts/berry_tree.inc b/data/scripts/berry_tree.inc index 9e219a339..be1cafbdd 100644 --- a/data/scripts/berry_tree.inc +++ b/data/scripts/berry_tree.inc @@ -41,7 +41,7 @@ Route102_EventScript_1A1558:: @ 81A1558 Route102_EventScript_1A1577:: @ 81A1577 fadescreen 1 closemessage - special sub_80B4EE4 + special Berry_FadeAndGoToBerryBagMenu waitstate compare ITEM_ID, 0 goto_if_eq Route102_EventScript_1A1593 diff --git a/data/specials.inc b/data/specials.inc index 6ce9b5b1e..c11cedf00 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -51,7 +51,7 @@ gSpecials:: def_special sub_80C5568 def_special sub_8083BDC def_special FieldObjectInteractionGetBerryTreeData - def_special sub_80B4EE4 + def_special Berry_FadeAndGoToBerryBagMenu def_special FieldObjectInteractionPlantBerryTree def_special FieldObjectInteractionPickBerryTree def_special FieldObjectInteractionRemoveBerryTree diff --git a/include/berry.h b/include/berry.h index f0acbe0ad..a7ac5ba94 100644 --- a/include/berry.h +++ b/include/berry.h @@ -11,38 +11,39 @@ enum BERRY_FIRMNESS_SUPER_HARD, }; -void ClearEnigmaBerries(void); +// berry stages +enum +{ + BERRY_STAGE_NO_BERRY, // there is no tree planted and the soil is completely flat. + BERRY_STAGE_PLANTED, + BERRY_STAGE_SPROUTED, + BERRY_STAGE_TALLER, + BERRY_STAGE_FLOWERING, + BERRY_STAGE_BERRIES, + BERRY_STAGE_SPARKLING = 0xFF, +}; + void SetEnigmaBerry(u8 *src); -u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry); bool32 IsEnigmaBerryValid(void); const struct Berry *GetBerryInfo(u8 berry); -struct BerryTree *GetBerryTreeInfo(u8 id); bool32 FieldObjectInteractionWaterBerryTree(void); -bool8 IsPlayerFacingPlantedBerryTree(void); +bool8 IsPlayerFacingUnplantedSoil(void); bool8 TryToWaterBerryTree(void); void ClearBerryTrees(void); -bool32 BerryTreeGrow(struct BerryTree *tree); void BerryTreeTimeUpdate(s32 minutes); void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 sparkle); void RemoveBerryTree(u8 id); u8 GetBerryTypeByBerryTreeId(u8 id); u8 GetStageByBerryTreeId(u8); u8 ItemIdToBerryType(u16 item); -u16 BerryTypeToItemId(u16 berry); void GetBerryNameByBerryType(u8 berry, u8 *string); void ResetBerryTreeSparkleFlag(u8 id); -u8 BerryTreeGetNumStagesWatered(struct BerryTree *tree); -u8 GetNumStagesWateredByBerryTreeId(u8 id); -u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water); -u8 CalcBerryYield(struct BerryTree *tree); -u8 GetBerryCountByBerryTreeId(u8 id); -u16 GetStageDurationByBerryType(u8); void FieldObjectInteractionGetBerryTreeData(void); -void sub_80B4EE4(void); +void Berry_FadeAndGoToBerryBagMenu(void); void FieldObjectInteractionPlantBerryTree(void); void FieldObjectInteractionPickBerryTree(void); void FieldObjectInteractionRemoveBerryTree(void); -u8 PlayerHasBerries(void); +bool8 PlayerHasBerries(void); void ResetBerryTreeSparkleFlags(void); #endif // GUARD_BERRY_H diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h index a85e02132..2d5693e40 100644 --- a/include/field_control_avatar.h +++ b/include/field_control_avatar.h @@ -30,7 +30,7 @@ u8 *sub_80682A8(struct MapPosition *, u8, u8); void overworld_poison_timer_set(void); void prev_quest_postbuffer_cursor_backup_reset(void); u8 *sub_8068E24(struct MapPosition *); -u8 *GetFieldObjectScriptPointerForComparison(); +u8 *GetFieldObjectScriptPointerPlayerFacing(void); bool8 mapheader_trigger_activate_at__run_now(struct MapPosition *); bool8 sub_8068870(u16 a); bool8 sub_8068894(void); diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 641a28ed3..19482e71f 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -381,7 +381,7 @@ void npc_set_running_behaviour_etc(struct MapObject *, u8); u8 npc_running_behaviour_by_direction(u8); u8 npc_block_way(struct MapObject *, s16, s16, u32); u8 sub_8060024(struct MapObject *, s16, s16, u8); -u8 sub_8060234(u8, u8, u8); +bool8 IsBerryTreeSparkling(u8, u8, u8); void sub_8060288(u8, u8, u8); void sub_8060388(s16, s16, s16 *, s16 *); void sub_80603CC(s16 x, s16 y, s16 *pInt, s16 *pInt1); diff --git a/include/global.berry.h b/include/global.berry.h index 096d8b1d8..21a0dd500 100644 --- a/include/global.berry.h +++ b/include/global.berry.h @@ -3,33 +3,33 @@ struct Berry { - /*0x00*/const u8 name[7]; - /*0x07*/u8 firmness; - /*0x08*/u16 size; - /*0x0A*/u8 maxYield; - /*0x0B*/u8 minYield; - /*0x0C*/const u8 *description1; - /*0x10*/const u8 *description2; - /*0x14*/u8 stageDuration; - /*0x15*/u8 spicy; - /*0x16*/u8 dry; - /*0x17*/u8 sweet; - /*0x18*/u8 bitter; - /*0x19*/u8 sour; - /*0x1A*/u8 smoothness; + /*0x00*/ const u8 name[7]; + /*0x07*/ u8 firmness; + /*0x08*/ u16 size; + /*0x0A*/ u8 maxYield; + /*0x0B*/ u8 minYield; + /*0x0C*/ const u8 *description1; + /*0x10*/ const u8 *description2; + /*0x14*/ u8 stageDuration; + /*0x15*/ u8 spicy; + /*0x16*/ u8 dry; + /*0x17*/ u8 sweet; + /*0x18*/ u8 bitter; + /*0x19*/ u8 sour; + /*0x1A*/ u8 smoothness; }; struct EnigmaBerry { - /*0x000*/struct Berry berry; - /*0x01B*/u8 pic[(6 * 6) * TILE_SIZE_4BPP]; - /*0x49C*/u16 palette[16]; - /*0x4BC*/u8 description1[45]; - /*0x4E9*/u8 description2[45]; - /*0x516*/u8 itemEffect[18]; - /*0x528*/u8 holdEffect; - /*0x529*/u8 holdEffectParam; - /*0x52C*/u32 checksum; + /*0x000*/ struct Berry berry; + /*0x01B*/ u8 pic[(6 * 6) * TILE_SIZE_4BPP]; + /*0x49C*/ u16 palette[16]; + /*0x4BC*/ u8 description1[45]; + /*0x4E9*/ u8 description2[45]; + /*0x516*/ u8 itemEffect[18]; + /*0x528*/ u8 holdEffect; + /*0x529*/ u8 holdEffectParam; + /*0x52C*/ u32 checksum; }; struct BattleEnigmaBerry @@ -42,16 +42,21 @@ struct BattleEnigmaBerry struct BerryTree { - u8 berry; - u8 stage:7; - u8 growthSparkle:1; - u16 minutesUntilNextStage; - u8 berryYield; - u8 regrowthCount:4; - u8 watered1:1; - u8 watered2:1; - u8 watered3:1; - u8 watered4:1; + /*0x00*/ u8 berry; + /*0x01*/ u8 stage:7; + /* + A berry sparkle is a state that a berry tree + can be in after growing within the player's + viewport. + */ + /*0x01*/ bool8 growthSparkle:1; + /*0x02*/ u16 minutesUntilNextStage; + /*0x04*/ u8 berryYield; + /*0x05*/ u8 regrowthCount:4; + /*0x05*/ u8 watered1:1; + /*0x05*/ u8 watered2:1; + /*0x05*/ u8 watered3:1; + /*0x05*/ u8 watered4:1; }; #endif // GUARD_GLOBAL_BERRY_H diff --git a/src/engine/clock.c b/src/engine/clock.c index 9635514d2..12b82018d 100644 --- a/src/engine/clock.c +++ b/src/engine/clock.c @@ -61,19 +61,18 @@ static void UpdatePerDay(struct Time *time) static void UpdatePerMinute(struct Time *time) { struct Time newTime; - s32 minutes; + s32 totalMinutes; CalcTimeDifference(&newTime, &gSaveBlock2.lastBerryTreeUpdate, time); - minutes = 1440 * newTime.days + 60 * newTime.hours + newTime.minutes; + totalMinutes = 1440 * newTime.days + 60 * newTime.hours + newTime.minutes; - // there's no way to get the correct assembly other than with this nested if check. so dumb. - if (minutes != 0) + if (totalMinutes == 0) // do not do the update for the first minute. + return; + + if (totalMinutes > -1) // do not perform an update on invalid totalMinutes. { - if (minutes >= 0) - { - BerryTreeTimeUpdate(minutes); - gSaveBlock2.lastBerryTreeUpdate = *time; - } + BerryTreeTimeUpdate(totalMinutes); + gSaveBlock2.lastBerryTreeUpdate = *time; } } diff --git a/src/field/berry.c b/src/field/berry.c index d82eab2a6..5127a3a4f 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -12,10 +12,16 @@ #include "text.h" #define BERRY_NAME_LENGTH 6 +#define BERRY_REGROW_LIMIT 10 +#define MAX_BERRY_TREES 128 +#define BERRY_NONE 0 #define FIRST_BERRY ITEM_CHERI_BERRY #define LAST_BERRY ITEM_ENIGMA_BERRY +#define GETBERRYID(berry) ((berry - FIRST_BERRY) + 1) +#define GETITEMID(berry) ((berry + FIRST_BERRY) - 1) + #ifdef ENGLISH #define NAME_CHERI_BERRY _("CHERI") #define NAME_CHESTO_BERRY _("CHESTO") @@ -61,92 +67,92 @@ #define NAME_STARF_BERRY _("STARF") #define NAME_ENIGMA_BERRY _("ENIGMA") -const u8 gBerryDescriptionPart1_Cheri[] = _("Blooms with delicate pretty flowers."); -const u8 gBerryDescriptionPart2_Cheri[] = _("The bright red BERRY is very spicy."); -const u8 gBerryDescriptionPart1_Chesto[] = _("The BERRY’s thick skin and fruit are"); -const u8 gBerryDescriptionPart2_Chesto[] = _("very tough. It is dry-tasting all over."); -const u8 gBerryDescriptionPart1_Pecha[] = _("Very sweet and delicious."); -const u8 gBerryDescriptionPart2_Pecha[] = _("Also very tender - handle with care."); -const u8 gBerryDescriptionPart1_Rawst[] = _("If the leaves grow long and curly,"); -const u8 gBerryDescriptionPart2_Rawst[] = _("the BERRY seems to grow very bitter."); -const u8 gBerryDescriptionPart1_Aspear[] = _("The hard BERRY is dense with a rich"); -const u8 gBerryDescriptionPart2_Aspear[] = _("juice. It is quite sour."); -const u8 gBerryDescriptionPart1_Leppa[] = _("Grows slower than CHERI and others."); -const u8 gBerryDescriptionPart2_Leppa[] = _("The smaller the BERRY, the tastier."); -const u8 gBerryDescriptionPart1_Oran[] = _("A peculiar BERRY with a mix of flavors."); -const u8 gBerryDescriptionPart2_Oran[] = _("BERRIES grow in half a day."); -const u8 gBerryDescriptionPart1_Persim[] = _("Loves sunlight. The BERRY’s color"); -const u8 gBerryDescriptionPart2_Persim[] = _("grows vivid when exposed to the sun."); -const u8 gBerryDescriptionPart1_Lum[] = _("Slow to grow. If raised with loving"); -const u8 gBerryDescriptionPart2_Lum[] = _("care, it may grow two BERRIES."); -const u8 gBerryDescriptionPart1_Sitrus[] = _("Closely related to ORAN. The large"); -const u8 gBerryDescriptionPart2_Sitrus[] = _("BERRY has a well-rounded flavor."); -const u8 gBerryDescriptionPart1_Figy[] = _("The BERRY, which looks chewed up,"); -const u8 gBerryDescriptionPart2_Figy[] = _("brims with spicy substances."); -const u8 gBerryDescriptionPart1_Wiki[] = _("The BERRY is said to have grown lumpy"); -const u8 gBerryDescriptionPart2_Wiki[] = _("to help POKéMON grip it."); -const u8 gBerryDescriptionPart1_Mago[] = _("The BERRY turns curvy as it grows."); -const u8 gBerryDescriptionPart2_Mago[] = _("The curvier, the sweeter and tastier."); -const u8 gBerryDescriptionPart1_Aguav[] = _("The flower is dainty. It is rare in its"); -const u8 gBerryDescriptionPart2_Aguav[] = _("ability to grow without light."); -const u8 gBerryDescriptionPart1_Iapapa[] = _("The BERRY is very big and sour."); -const u8 gBerryDescriptionPart2_Iapapa[] = _("It takes at least a day to grow."); -const u8 gBerryDescriptionPart1_Razz[] = _("The red BERRY tastes slightly spicy."); -const u8 gBerryDescriptionPart2_Razz[] = _("It grows quickly in just four hours."); -const u8 gBerryDescriptionPart1_Bluk[] = _("The BERRY is blue on the outside, but"); -const u8 gBerryDescriptionPart2_Bluk[] = _("it blackens the mouth when eaten."); -const u8 gBerryDescriptionPart1_Nanab[] = _("This BERRY was the seventh"); -const u8 gBerryDescriptionPart2_Nanab[] = _("discovered in the world. It is sweet."); -const u8 gBerryDescriptionPart1_Wepear[] = _("The flower is small and white. It has a"); -const u8 gBerryDescriptionPart2_Wepear[] = _("delicate balance of bitter and sour."); -const u8 gBerryDescriptionPart1_Pinap[] = _("Weak against wind and cold."); -const u8 gBerryDescriptionPart2_Pinap[] = _("The fruit is spicy and the skin, sour."); -const u8 gBerryDescriptionPart1_Pomeg[] = _("However much it is watered,"); -const u8 gBerryDescriptionPart2_Pomeg[] = _("it only grows up to six BERRIES."); -const u8 gBerryDescriptionPart1_Kelpsy[] = _("A rare variety shaped like a root."); -const u8 gBerryDescriptionPart2_Kelpsy[] = _("Grows a very large flower."); -const u8 gBerryDescriptionPart1_Qualot[] = _("Loves water. Grows strong even in"); -const u8 gBerryDescriptionPart2_Qualot[] = _("locations with constant rainfall."); -const u8 gBerryDescriptionPart1_Hondew[] = _("A BERRY that is very valuable and"); -const u8 gBerryDescriptionPart2_Hondew[] = _("rarely seen. It is very delicious."); -const u8 gBerryDescriptionPart1_Grepa[] = _("Despite its tenderness and round"); -const u8 gBerryDescriptionPart2_Grepa[] = _("shape, the BERRY is unimaginably sour."); -const u8 gBerryDescriptionPart1_Tamato[] = _("The BERRY is lip-bendingly spicy."); -const u8 gBerryDescriptionPart2_Tamato[] = _("It takes time to grow."); -const u8 gBerryDescriptionPart1_Cornn[] = _("A BERRY from an ancient era. May not"); -const u8 gBerryDescriptionPart2_Cornn[] = _("grow unless planted in quantity."); -const u8 gBerryDescriptionPart1_Magost[] = _("A BERRY that is widely said to have"); -const u8 gBerryDescriptionPart2_Magost[] = _("a finely balanced flavor."); -const u8 gBerryDescriptionPart1_Rabuta[] = _("A rare variety that is overgrown with"); -const u8 gBerryDescriptionPart2_Rabuta[] = _("hair. It is quite bitter."); -const u8 gBerryDescriptionPart1_Nomel[] = _("Quite sour. Just one bite makes it"); -const u8 gBerryDescriptionPart2_Nomel[] = _("impossible to taste for three days."); -const u8 gBerryDescriptionPart1_Spelon[] = _("The vividly red BERRY is very spicy."); -const u8 gBerryDescriptionPart2_Spelon[] = _("Its warts secrete a spicy substance."); -const u8 gBerryDescriptionPart1_Pamtre[] = _("Drifts on the sea from somewhere."); -const u8 gBerryDescriptionPart2_Pamtre[] = _("It is thought to grow elsewhere."); -const u8 gBerryDescriptionPart1_Watmel[] = _("A huge BERRY, with some over 20"); -const u8 gBerryDescriptionPart2_Watmel[] = _("inches discovered. Exceedingly sweet."); -const u8 gBerryDescriptionPart1_Durin[] = _("Bitter to even look at. It is so"); -const u8 gBerryDescriptionPart2_Durin[] = _("bitter, no one has ever eaten it as is."); -const u8 gBerryDescriptionPart1_Belue[] = _("It is glossy and looks delicious, but"); -const u8 gBerryDescriptionPart2_Belue[] = _("it is awfully sour. Takes time to grow."); -const u8 gBerryDescriptionPart1_Liechi[] = _("A mysterious BERRY. It is rumored to"); -const u8 gBerryDescriptionPart2_Liechi[] = _("contain the power of the sea."); -const u8 gBerryDescriptionPart1_Ganlon[] = _("A mysterious BERRY. It is rumored to"); -const u8 gBerryDescriptionPart2_Ganlon[] = _("contain the power of the land."); -const u8 gBerryDescriptionPart1_Salac[] = _("A mysterious BERRY. It is rumored to"); -const u8 gBerryDescriptionPart2_Salac[] = _("contain the power of the sky."); -const u8 gBerryDescriptionPart1_Petaya[] = _("A mysterious BERRY. It is rumored to"); -const u8 gBerryDescriptionPart2_Petaya[] = _("contain the power of all living things."); -const u8 gBerryDescriptionPart1_Apicot[] = _("A very mystifying BERRY. No telling"); -const u8 gBerryDescriptionPart2_Apicot[] = _("what may happen or how it can be used."); -const u8 gBerryDescriptionPart1_Lansat[] = _("Said to be a legendary BERRY."); -const u8 gBerryDescriptionPart2_Lansat[] = _("Holding it supposedly brings joy."); -const u8 gBerryDescriptionPart1_Starf[] = _("So strong, it was abandoned at the"); -const u8 gBerryDescriptionPart2_Starf[] = _("world’s edge. Considered a mirage."); -const u8 gBerryDescriptionPart1_Enigma[] = _("A completely enigmatic BERRY."); -const u8 gBerryDescriptionPart2_Enigma[] = _("Appears to have the power of stars."); +static const u8 gBerryDescriptionPart1_Cheri[] = _("Blooms with delicate pretty flowers."); +static const u8 gBerryDescriptionPart2_Cheri[] = _("The bright red BERRY is very spicy."); +static const u8 gBerryDescriptionPart1_Chesto[] = _("The BERRY’s thick skin and fruit are"); +static const u8 gBerryDescriptionPart2_Chesto[] = _("very tough. It is dry-tasting all over."); +static const u8 gBerryDescriptionPart1_Pecha[] = _("Very sweet and delicious."); +static const u8 gBerryDescriptionPart2_Pecha[] = _("Also very tender - handle with care."); +static const u8 gBerryDescriptionPart1_Rawst[] = _("If the leaves grow long and curly,"); +static const u8 gBerryDescriptionPart2_Rawst[] = _("the BERRY seems to grow very bitter."); +static const u8 gBerryDescriptionPart1_Aspear[] = _("The hard BERRY is dense with a rich"); +static const u8 gBerryDescriptionPart2_Aspear[] = _("juice. It is quite sour."); +static const u8 gBerryDescriptionPart1_Leppa[] = _("Grows slower than CHERI and others."); +static const u8 gBerryDescriptionPart2_Leppa[] = _("The smaller the BERRY, the tastier."); +static const u8 gBerryDescriptionPart1_Oran[] = _("A peculiar BERRY with a mix of flavors."); +static const u8 gBerryDescriptionPart2_Oran[] = _("BERRIES grow in half a day."); +static const u8 gBerryDescriptionPart1_Persim[] = _("Loves sunlight. The BERRY’s color"); +static const u8 gBerryDescriptionPart2_Persim[] = _("grows vivid when exposed to the sun."); +static const u8 gBerryDescriptionPart1_Lum[] = _("Slow to grow. If raised with loving"); +static const u8 gBerryDescriptionPart2_Lum[] = _("care, it may grow two BERRIES."); +static const u8 gBerryDescriptionPart1_Sitrus[] = _("Closely related to ORAN. The large"); +static const u8 gBerryDescriptionPart2_Sitrus[] = _("BERRY has a well-rounded flavor."); +static const u8 gBerryDescriptionPart1_Figy[] = _("The BERRY, which looks chewed up,"); +static const u8 gBerryDescriptionPart2_Figy[] = _("brims with spicy substances."); +static const u8 gBerryDescriptionPart1_Wiki[] = _("The BERRY is said to have grown lumpy"); +static const u8 gBerryDescriptionPart2_Wiki[] = _("to help POKéMON grip it."); +static const u8 gBerryDescriptionPart1_Mago[] = _("The BERRY turns curvy as it grows."); +static const u8 gBerryDescriptionPart2_Mago[] = _("The curvier, the sweeter and tastier."); +static const u8 gBerryDescriptionPart1_Aguav[] = _("The flower is dainty. It is rare in its"); +static const u8 gBerryDescriptionPart2_Aguav[] = _("ability to grow without light."); +static const u8 gBerryDescriptionPart1_Iapapa[] = _("The BERRY is very big and sour."); +static const u8 gBerryDescriptionPart2_Iapapa[] = _("It takes at least a day to grow."); +static const u8 gBerryDescriptionPart1_Razz[] = _("The red BERRY tastes slightly spicy."); +static const u8 gBerryDescriptionPart2_Razz[] = _("It grows quickly in just four hours."); +static const u8 gBerryDescriptionPart1_Bluk[] = _("The BERRY is blue on the outside, but"); +static const u8 gBerryDescriptionPart2_Bluk[] = _("it blackens the mouth when eaten."); +static const u8 gBerryDescriptionPart1_Nanab[] = _("This BERRY was the seventh"); +static const u8 gBerryDescriptionPart2_Nanab[] = _("discovered in the world. It is sweet."); +static const u8 gBerryDescriptionPart1_Wepear[] = _("The flower is small and white. It has a"); +static const u8 gBerryDescriptionPart2_Wepear[] = _("delicate balance of bitter and sour."); +static const u8 gBerryDescriptionPart1_Pinap[] = _("Weak against wind and cold."); +static const u8 gBerryDescriptionPart2_Pinap[] = _("The fruit is spicy and the skin, sour."); +static const u8 gBerryDescriptionPart1_Pomeg[] = _("However much it is watered,"); +static const u8 gBerryDescriptionPart2_Pomeg[] = _("it only grows up to six BERRIES."); +static const u8 gBerryDescriptionPart1_Kelpsy[] = _("A rare variety shaped like a root."); +static const u8 gBerryDescriptionPart2_Kelpsy[] = _("Grows a very large flower."); +static const u8 gBerryDescriptionPart1_Qualot[] = _("Loves water. Grows strong even in"); +static const u8 gBerryDescriptionPart2_Qualot[] = _("locations with constant rainfall."); +static const u8 gBerryDescriptionPart1_Hondew[] = _("A BERRY that is very valuable and"); +static const u8 gBerryDescriptionPart2_Hondew[] = _("rarely seen. It is very delicious."); +static const u8 gBerryDescriptionPart1_Grepa[] = _("Despite its tenderness and round"); +static const u8 gBerryDescriptionPart2_Grepa[] = _("shape, the BERRY is unimaginably sour."); +static const u8 gBerryDescriptionPart1_Tamato[] = _("The BERRY is lip-bendingly spicy."); +static const u8 gBerryDescriptionPart2_Tamato[] = _("It takes time to grow."); +static const u8 gBerryDescriptionPart1_Cornn[] = _("A BERRY from an ancient era. May not"); +static const u8 gBerryDescriptionPart2_Cornn[] = _("grow unless planted in quantity."); +static const u8 gBerryDescriptionPart1_Magost[] = _("A BERRY that is widely said to have"); +static const u8 gBerryDescriptionPart2_Magost[] = _("a finely balanced flavor."); +static const u8 gBerryDescriptionPart1_Rabuta[] = _("A rare variety that is overgrown with"); +static const u8 gBerryDescriptionPart2_Rabuta[] = _("hair. It is quite bitter."); +static const u8 gBerryDescriptionPart1_Nomel[] = _("Quite sour. Just one bite makes it"); +static const u8 gBerryDescriptionPart2_Nomel[] = _("impossible to taste for three days."); +static const u8 gBerryDescriptionPart1_Spelon[] = _("The vividly red BERRY is very spicy."); +static const u8 gBerryDescriptionPart2_Spelon[] = _("Its warts secrete a spicy substance."); +static const u8 gBerryDescriptionPart1_Pamtre[] = _("Drifts on the sea from somewhere."); +static const u8 gBerryDescriptionPart2_Pamtre[] = _("It is thought to grow elsewhere."); +static const u8 gBerryDescriptionPart1_Watmel[] = _("A huge BERRY, with some over 20"); +static const u8 gBerryDescriptionPart2_Watmel[] = _("inches discovered. Exceedingly sweet."); +static const u8 gBerryDescriptionPart1_Durin[] = _("Bitter to even look at. It is so"); +static const u8 gBerryDescriptionPart2_Durin[] = _("bitter, no one has ever eaten it as is."); +static const u8 gBerryDescriptionPart1_Belue[] = _("It is glossy and looks delicious, but"); +static const u8 gBerryDescriptionPart2_Belue[] = _("it is awfully sour. Takes time to grow."); +static const u8 gBerryDescriptionPart1_Liechi[] = _("A mysterious BERRY. It is rumored to"); +static const u8 gBerryDescriptionPart2_Liechi[] = _("contain the power of the sea."); +static const u8 gBerryDescriptionPart1_Ganlon[] = _("A mysterious BERRY. It is rumored to"); +static const u8 gBerryDescriptionPart2_Ganlon[] = _("contain the power of the land."); +static const u8 gBerryDescriptionPart1_Salac[] = _("A mysterious BERRY. It is rumored to"); +static const u8 gBerryDescriptionPart2_Salac[] = _("contain the power of the sky."); +static const u8 gBerryDescriptionPart1_Petaya[] = _("A mysterious BERRY. It is rumored to"); +static const u8 gBerryDescriptionPart2_Petaya[] = _("contain the power of all living things."); +static const u8 gBerryDescriptionPart1_Apicot[] = _("A very mystifying BERRY. No telling"); +static const u8 gBerryDescriptionPart2_Apicot[] = _("what may happen or how it can be used."); +static const u8 gBerryDescriptionPart1_Lansat[] = _("Said to be a legendary BERRY."); +static const u8 gBerryDescriptionPart2_Lansat[] = _("Holding it supposedly brings joy."); +static const u8 gBerryDescriptionPart1_Starf[] = _("So strong, it was abandoned at the"); +static const u8 gBerryDescriptionPart2_Starf[] = _("world’s edge. Considered a mirage."); +static const u8 gBerryDescriptionPart1_Enigma[] = _("A completely enigmatic BERRY."); +static const u8 gBerryDescriptionPart2_Enigma[] = _("Appears to have the power of stars."); #elif defined(GERMAN) #define NAME_CHERI_BERRY _("AMRENA") #define NAME_CHESTO_BERRY _("MARON") @@ -192,92 +198,92 @@ const u8 gBerryDescriptionPart2_Enigma[] = _("Appears to have the power of stars #define NAME_STARF_BERRY _("KRAMBO") #define NAME_ENIGMA_BERRY _("ENIGMA") -const u8 gBerryDescriptionPart1_Cheri[] = _("Erblüht mit hübschen, zarten Blumen."); -const u8 gBerryDescriptionPart2_Cheri[] = _("Diese knallrote BEERE ist sehr scharf."); -const u8 gBerryDescriptionPart1_Chesto[] = _("Diese BEERE hat eine dicke Haut und"); -const u8 gBerryDescriptionPart2_Chesto[] = _("hartes Fruchtfleisch. Trocken!"); -const u8 gBerryDescriptionPart1_Pecha[] = _("Sehr süß und delikat."); -const u8 gBerryDescriptionPart2_Pecha[] = _("Sehr zart. Vorsichtig anfassen!"); -const u8 gBerryDescriptionPart1_Rawst[] = _("Wenn die Blätter lang und wellig sind,"); -const u8 gBerryDescriptionPart2_Rawst[] = _("wird die BEERE sehr bitter."); -const u8 gBerryDescriptionPart1_Aspear[] = _("Diese harte BEERE ist sehr"); -const u8 gBerryDescriptionPart2_Aspear[] = _("saftig und sauer im Geschmack!"); -const u8 gBerryDescriptionPart1_Leppa[] = _("Wächst langsamer als AMRENA und"); -const u8 gBerryDescriptionPart2_Leppa[] = _("andere. Je kleiner, desto delikater."); -const u8 gBerryDescriptionPart1_Oran[] = _("Eine BEERE unterschiedlichsten Ge-"); -const u8 gBerryDescriptionPart2_Oran[] = _("schmacks. Wächst an einem halben Tag."); -const u8 gBerryDescriptionPart1_Persim[] = _("Liebt Sonnenlicht. Die BEERE"); -const u8 gBerryDescriptionPart2_Persim[] = _("wächst im Sonnenlicht sehr schnell."); -const u8 gBerryDescriptionPart1_Lum[] = _("Langsamer Wuchs. Wird sie liebevoll ge-"); -const u8 gBerryDescriptionPart2_Lum[] = _("pflegt, kann sie 2 BEEREN tragen."); -const u8 gBerryDescriptionPart1_Sitrus[] = _("Eng verwandt mit SINEL. Diese große"); -const u8 gBerryDescriptionPart2_Sitrus[] = _("BEERE ist von rundem Geschmack."); -const u8 gBerryDescriptionPart1_Figy[] = _("Die BEERE sieht angekaut aus. Sie ist"); -const u8 gBerryDescriptionPart2_Figy[] = _("voller scharfer Substanzen."); -const u8 gBerryDescriptionPart1_Wiki[] = _("Die BEERE wächst unförmig,"); -const u8 gBerryDescriptionPart2_Wiki[] = _("damit PKMN sie besser greifen können."); -const u8 gBerryDescriptionPart1_Mago[] = _("Die BEERE hat Ausbeulungen. Je mehr"); -const u8 gBerryDescriptionPart2_Mago[] = _("Beulen, desto schmackhafter ist sie."); -const u8 gBerryDescriptionPart1_Aguav[] = _("Die Blume ist zart. Sie ist fähig,"); -const u8 gBerryDescriptionPart2_Aguav[] = _("ohne Licht wachsen zu können."); -const u8 gBerryDescriptionPart1_Iapapa[] = _("Die BEERE ist groß und sauer."); -const u8 gBerryDescriptionPart2_Iapapa[] = _("Sie braucht einen Tag zum Wachsen."); -const u8 gBerryDescriptionPart1_Razz[] = _("Diese rote BEERE schmeckt etwas"); -const u8 gBerryDescriptionPart2_Razz[] = _("scharf. Sie wächst in nur 4 Stunden."); -const u8 gBerryDescriptionPart1_Bluk[] = _("Die BEERE ist außen blau, verfärbt"); -const u8 gBerryDescriptionPart2_Bluk[] = _("sich im Mund aber schwarz."); -const u8 gBerryDescriptionPart1_Nanab[] = _("Diese BEERE war die 7., die auf der"); -const u8 gBerryDescriptionPart2_Nanab[] = _("Welt entdeckt wurde. Sie ist süß."); -const u8 gBerryDescriptionPart1_Wepear[] = _("Die Blume ist klein und weiß. Angenehm"); -const u8 gBerryDescriptionPart2_Wepear[] = _("bitter und sauer zugleich."); -const u8 gBerryDescriptionPart1_Pinap[] = _("Wind und Kälte verträgt sie nicht."); -const u8 gBerryDescriptionPart2_Pinap[] = _("Fruchtfleisch: Scharf. Haut: Sauer."); -const u8 gBerryDescriptionPart1_Pomeg[] = _("Egal wie viel Wasser sie bekommt, sie"); -const u8 gBerryDescriptionPart2_Pomeg[] = _("trägt immer bis zu 6 BEEREN."); -const u8 gBerryDescriptionPart1_Kelpsy[] = _("Eine Seltenheit. Geformt wie eine"); -const u8 gBerryDescriptionPart2_Kelpsy[] = _("Wurzel. Hat eine große Blume."); -const u8 gBerryDescriptionPart1_Qualot[] = _("Liebt das Wasser. Wächst besonders"); -const u8 gBerryDescriptionPart2_Qualot[] = _("gut in regenreichen Gegenden."); -const u8 gBerryDescriptionPart1_Hondew[] = _("Eine wertvolle und seltene BEERE."); -const u8 gBerryDescriptionPart2_Hondew[] = _("Sie ist sehr schmackhaft."); -const u8 gBerryDescriptionPart1_Grepa[] = _("Die BEERE ist zart und von runder"); -const u8 gBerryDescriptionPart2_Grepa[] = _("Form. Aber sie ist unglaublich sauer!"); -const u8 gBerryDescriptionPart1_Tamato[] = _("Die Schärfe der BEERE verbrennt die"); -const u8 gBerryDescriptionPart2_Tamato[] = _("Lippen. Sie braucht Zeit zum Wachsen."); -const u8 gBerryDescriptionPart1_Cornn[] = _("Eine BEERE aus alten Zeiten. Wächst"); -const u8 gBerryDescriptionPart2_Cornn[] = _("nur, wenn in großen Mengen gepflanzt."); -const u8 gBerryDescriptionPart1_Magost[] = _("Eine BEERE, die für ihren feinen, aus-"); -const u8 gBerryDescriptionPart2_Magost[] = _("gewogenen Geschmack bekannt ist."); -const u8 gBerryDescriptionPart1_Rabuta[] = _("Eine Seltenheit, die über und über mit"); -const u8 gBerryDescriptionPart2_Rabuta[] = _("Haaren bewachsen ist. Sehr bitter!"); -const u8 gBerryDescriptionPart1_Nomel[] = _("Sehr sauer. Ein Biss betäubt die"); -const u8 gBerryDescriptionPart2_Nomel[] = _("Geschmacksnerven für 3 Tage!"); -const u8 gBerryDescriptionPart1_Spelon[] = _("Die leuchtend rote BEERE ist sehr"); -const u8 gBerryDescriptionPart2_Spelon[] = _("scharf. Gibt scharfe Substanzen ab!"); -const u8 gBerryDescriptionPart1_Pamtre[] = _("Wird vom Meer angespült. Sie wächst"); -const u8 gBerryDescriptionPart2_Pamtre[] = _("an einem anderen Ort."); -const u8 gBerryDescriptionPart1_Watmel[] = _("Eine große BEERE, 25 cm groß."); -const u8 gBerryDescriptionPart2_Watmel[] = _("Außergewöhnlich süß."); -const u8 gBerryDescriptionPart1_Durin[] = _("Bitter schon ihr Anblick! Sie ist so"); -const u8 gBerryDescriptionPart2_Durin[] = _("bitter, dass niemand sie pur isst."); -const u8 gBerryDescriptionPart1_Belue[] = _("Sie glänzt, sieht zart aus, ist extrem"); -const u8 gBerryDescriptionPart2_Belue[] = _("sauer und braucht Zeit zum Wachsen."); -const u8 gBerryDescriptionPart1_Liechi[] = _("Eine geheimnisvolle BEERE. Man sagt,"); -const u8 gBerryDescriptionPart2_Liechi[] = _("sie enthalte die Kraft des Meeres."); -const u8 gBerryDescriptionPart1_Ganlon[] = _("Eine geheimnisvolle BEERE. Man sagt,"); -const u8 gBerryDescriptionPart2_Ganlon[] = _("sie enthalte die Kraft des Landes."); -const u8 gBerryDescriptionPart1_Salac[] = _("Eine geheimnisvolle BEERE. Man sagt,"); -const u8 gBerryDescriptionPart2_Salac[] = _("sie enthalte die Kraft des Himmels."); -const u8 gBerryDescriptionPart1_Petaya[] = _("Eine geheimnisvolle BEERE. Man sagt,"); -const u8 gBerryDescriptionPart2_Petaya[] = _("sie enthalte die Kraft allen Lebens."); -const u8 gBerryDescriptionPart1_Apicot[] = _("Eine rätselhafte BEERE. Man kann"); -const u8 gBerryDescriptionPart2_Apicot[] = _("nicht sagen, wie und was sie ist."); -const u8 gBerryDescriptionPart1_Lansat[] = _("Eine legendäre BEERE. Sie zu"); -const u8 gBerryDescriptionPart2_Lansat[] = _("tragen bringt Freude."); -const u8 gBerryDescriptionPart1_Starf[] = _("So stark, dass sie an den Rand der"); -const u8 gBerryDescriptionPart2_Starf[] = _("Welt verbannt wurde. Ein Märchen?"); -const u8 gBerryDescriptionPart1_Enigma[] = _("Eine enigmatische BEERE. Sie scheint"); -const u8 gBerryDescriptionPart2_Enigma[] = _("die Macht der Sterne zu besitzen."); +static const u8 gBerryDescriptionPart1_Cheri[] = _("Erblüht mit hübschen, zarten Blumen."); +static const u8 gBerryDescriptionPart2_Cheri[] = _("Diese knallrote BEERE ist sehr scharf."); +static const u8 gBerryDescriptionPart1_Chesto[] = _("Diese BEERE hat eine dicke Haut und"); +static const u8 gBerryDescriptionPart2_Chesto[] = _("hartes Fruchtfleisch. Trocken!"); +static const u8 gBerryDescriptionPart1_Pecha[] = _("Sehr süß und delikat."); +static const u8 gBerryDescriptionPart2_Pecha[] = _("Sehr zart. Vorsichtig anfassen!"); +static const u8 gBerryDescriptionPart1_Rawst[] = _("Wenn die Blätter lang und wellig sind,"); +static const u8 gBerryDescriptionPart2_Rawst[] = _("wird die BEERE sehr bitter."); +static const u8 gBerryDescriptionPart1_Aspear[] = _("Diese harte BEERE ist sehr"); +static const u8 gBerryDescriptionPart2_Aspear[] = _("saftig und sauer im Geschmack!"); +static const u8 gBerryDescriptionPart1_Leppa[] = _("Wächst langsamer als AMRENA und"); +static const u8 gBerryDescriptionPart2_Leppa[] = _("andere. Je kleiner, desto delikater."); +static const u8 gBerryDescriptionPart1_Oran[] = _("Eine BEERE unterschiedlichsten Ge-"); +static const u8 gBerryDescriptionPart2_Oran[] = _("schmacks. Wächst an einem halben Tag."); +static const u8 gBerryDescriptionPart1_Persim[] = _("Liebt Sonnenlicht. Die BEERE"); +static const u8 gBerryDescriptionPart2_Persim[] = _("wächst im Sonnenlicht sehr schnell."); +static const u8 gBerryDescriptionPart1_Lum[] = _("Langsamer Wuchs. Wird sie liebevoll ge-"); +static const u8 gBerryDescriptionPart2_Lum[] = _("pflegt, kann sie 2 BEEREN tragen."); +static const u8 gBerryDescriptionPart1_Sitrus[] = _("Eng verwandt mit SINEL. Diese große"); +static const u8 gBerryDescriptionPart2_Sitrus[] = _("BEERE ist von rundem Geschmack."); +static const u8 gBerryDescriptionPart1_Figy[] = _("Die BEERE sieht angekaut aus. Sie ist"); +static const u8 gBerryDescriptionPart2_Figy[] = _("voller scharfer Substanzen."); +static const u8 gBerryDescriptionPart1_Wiki[] = _("Die BEERE wächst unförmig,"); +static const u8 gBerryDescriptionPart2_Wiki[] = _("damit PKMN sie besser greifen können."); +static const u8 gBerryDescriptionPart1_Mago[] = _("Die BEERE hat Ausbeulungen. Je mehr"); +static const u8 gBerryDescriptionPart2_Mago[] = _("Beulen, desto schmackhafter ist sie."); +static const u8 gBerryDescriptionPart1_Aguav[] = _("Die Blume ist zart. Sie ist fähig,"); +static const u8 gBerryDescriptionPart2_Aguav[] = _("ohne Licht wachsen zu können."); +static const u8 gBerryDescriptionPart1_Iapapa[] = _("Die BEERE ist groß und sauer."); +static const u8 gBerryDescriptionPart2_Iapapa[] = _("Sie braucht einen Tag zum Wachsen."); +static const u8 gBerryDescriptionPart1_Razz[] = _("Diese rote BEERE schmeckt etwas"); +static const u8 gBerryDescriptionPart2_Razz[] = _("scharf. Sie wächst in nur 4 Stunden."); +static const u8 gBerryDescriptionPart1_Bluk[] = _("Die BEERE ist außen blau, verfärbt"); +static const u8 gBerryDescriptionPart2_Bluk[] = _("sich im Mund aber schwarz."); +static const u8 gBerryDescriptionPart1_Nanab[] = _("Diese BEERE war die 7., die auf der"); +static const u8 gBerryDescriptionPart2_Nanab[] = _("Welt entdeckt wurde. Sie ist süß."); +static const u8 gBerryDescriptionPart1_Wepear[] = _("Die Blume ist klein und weiß. Angenehm"); +static const u8 gBerryDescriptionPart2_Wepear[] = _("bitter und sauer zugleich."); +static const u8 gBerryDescriptionPart1_Pinap[] = _("Wind und Kälte verträgt sie nicht."); +static const u8 gBerryDescriptionPart2_Pinap[] = _("Fruchtfleisch: Scharf. Haut: Sauer."); +static const u8 gBerryDescriptionPart1_Pomeg[] = _("Egal wie viel Wasser sie bekommt, sie"); +static const u8 gBerryDescriptionPart2_Pomeg[] = _("trägt immer bis zu 6 BEEREN."); +static const u8 gBerryDescriptionPart1_Kelpsy[] = _("Eine Seltenheit. Geformt wie eine"); +static const u8 gBerryDescriptionPart2_Kelpsy[] = _("Wurzel. Hat eine große Blume."); +static const u8 gBerryDescriptionPart1_Qualot[] = _("Liebt das Wasser. Wächst besonders"); +static const u8 gBerryDescriptionPart2_Qualot[] = _("gut in regenreichen Gegenden."); +static const u8 gBerryDescriptionPart1_Hondew[] = _("Eine wertvolle und seltene BEERE."); +static const u8 gBerryDescriptionPart2_Hondew[] = _("Sie ist sehr schmackhaft."); +static const u8 gBerryDescriptionPart1_Grepa[] = _("Die BEERE ist zart und von runder"); +static const u8 gBerryDescriptionPart2_Grepa[] = _("Form. Aber sie ist unglaublich sauer!"); +static const u8 gBerryDescriptionPart1_Tamato[] = _("Die Schärfe der BEERE verbrennt die"); +static const u8 gBerryDescriptionPart2_Tamato[] = _("Lippen. Sie braucht Zeit zum Wachsen."); +static const u8 gBerryDescriptionPart1_Cornn[] = _("Eine BEERE aus alten Zeiten. Wächst"); +static const u8 gBerryDescriptionPart2_Cornn[] = _("nur, wenn in großen Mengen gepflanzt."); +static const u8 gBerryDescriptionPart1_Magost[] = _("Eine BEERE, die für ihren feinen, aus-"); +static const u8 gBerryDescriptionPart2_Magost[] = _("gewogenen Geschmack bekannt ist."); +static const u8 gBerryDescriptionPart1_Rabuta[] = _("Eine Seltenheit, die über und über mit"); +static const u8 gBerryDescriptionPart2_Rabuta[] = _("Haaren bewachsen ist. Sehr bitter!"); +static const u8 gBerryDescriptionPart1_Nomel[] = _("Sehr sauer. Ein Biss betäubt die"); +static const u8 gBerryDescriptionPart2_Nomel[] = _("Geschmacksnerven für 3 Tage!"); +static const u8 gBerryDescriptionPart1_Spelon[] = _("Die leuchtend rote BEERE ist sehr"); +static const u8 gBerryDescriptionPart2_Spelon[] = _("scharf. Gibt scharfe Substanzen ab!"); +static const u8 gBerryDescriptionPart1_Pamtre[] = _("Wird vom Meer angespült. Sie wächst"); +static const u8 gBerryDescriptionPart2_Pamtre[] = _("an einem anderen Ort."); +static const u8 gBerryDescriptionPart1_Watmel[] = _("Eine große BEERE, 25 cm groß."); +static const u8 gBerryDescriptionPart2_Watmel[] = _("Außergewöhnlich süß."); +static const u8 gBerryDescriptionPart1_Durin[] = _("Bitter schon ihr Anblick! Sie ist so"); +static const u8 gBerryDescriptionPart2_Durin[] = _("bitter, dass niemand sie pur isst."); +static const u8 gBerryDescriptionPart1_Belue[] = _("Sie glänzt, sieht zart aus, ist extrem"); +static const u8 gBerryDescriptionPart2_Belue[] = _("sauer und braucht Zeit zum Wachsen."); +static const u8 gBerryDescriptionPart1_Liechi[] = _("Eine geheimnisvolle BEERE. Man sagt,"); +static const u8 gBerryDescriptionPart2_Liechi[] = _("sie enthalte die Kraft des Meeres."); +static const u8 gBerryDescriptionPart1_Ganlon[] = _("Eine geheimnisvolle BEERE. Man sagt,"); +static const u8 gBerryDescriptionPart2_Ganlon[] = _("sie enthalte die Kraft des Landes."); +static const u8 gBerryDescriptionPart1_Salac[] = _("Eine geheimnisvolle BEERE. Man sagt,"); +static const u8 gBerryDescriptionPart2_Salac[] = _("sie enthalte die Kraft des Himmels."); +static const u8 gBerryDescriptionPart1_Petaya[] = _("Eine geheimnisvolle BEERE. Man sagt,"); +static const u8 gBerryDescriptionPart2_Petaya[] = _("sie enthalte die Kraft allen Lebens."); +static const u8 gBerryDescriptionPart1_Apicot[] = _("Eine rätselhafte BEERE. Man kann"); +static const u8 gBerryDescriptionPart2_Apicot[] = _("nicht sagen, wie und was sie ist."); +static const u8 gBerryDescriptionPart1_Lansat[] = _("Eine legendäre BEERE. Sie zu"); +static const u8 gBerryDescriptionPart2_Lansat[] = _("tragen bringt Freude."); +static const u8 gBerryDescriptionPart1_Starf[] = _("So stark, dass sie an den Rand der"); +static const u8 gBerryDescriptionPart2_Starf[] = _("Welt verbannt wurde. Ein Märchen?"); +static const u8 gBerryDescriptionPart1_Enigma[] = _("Eine enigmatische BEERE. Sie scheint"); +static const u8 gBerryDescriptionPart2_Enigma[] = _("die Macht der Sterne zu besitzen."); #endif const struct Berry gBerries[] = @@ -972,7 +978,7 @@ const struct Berry gBerries[] = }, }; -const struct BerryTree gBlankBerryTree = {0}; +static const struct BerryTree gBlankBerryTree = {0}; extern u8 S_BerryTree[]; extern u16 gScriptLastTalked; @@ -980,7 +986,18 @@ extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u16 gSpecialVar_0x8006; +/* + An enigma berry is a type of berry which functions + as though it is a custom berry. Because it behaves + like its a custom berry, it doesn't hold an identity + represented in its icons or descriptions, leaving its + information to be decided by the e-reader cards + which were intended to deliver these custom + berries. +*/ + // unused +// this could be static, but making it so causes a compile-time warning. void ClearEnigmaBerries(void) { CpuFill16(0, &gSaveBlock1.enigmaBerry, sizeof(gSaveBlock1.enigmaBerry)); @@ -988,17 +1005,19 @@ void ClearEnigmaBerries(void) void SetEnigmaBerry(u8 *src) { + // initialize the enigma berry by copying the data from the script. u32 i; u8 *dest = (u8*)&gSaveBlock1.enigmaBerry; for (i = 0; i < sizeof(gSaveBlock1.enigmaBerry); i++) dest[i] = src[i]; + // at this point, the description pointer is not yet initialized. we need to initialize it since we dont know where in memory this is going to be. set the berry desc pointers to the EnigmaBerry struct's description arrays since these are where the descriptions are stored. gSaveBlock1.enigmaBerry.berry.description1 = gSaveBlock1.enigmaBerry.description1; gSaveBlock1.enigmaBerry.berry.description2 = gSaveBlock1.enigmaBerry.description2; } -u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) +static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) { const u8 *description1; const u8 *description2; @@ -1006,10 +1025,11 @@ u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) u32 checksum; u8 *dest; + // the description pointers could be pointing to anywhere in memory. we do not want these pointers to factor into the checksum as it will produce a different result every time: so back the pointers up and set them to null so the checksum is safe to calculate. description1 = gSaveBlock1.enigmaBerry.berry.description1; description2 = gSaveBlock1.enigmaBerry.berry.description2; - gSaveBlock1.enigmaBerry.berry.description1 = 0; - gSaveBlock1.enigmaBerry.berry.description2 = 0; + gSaveBlock1.enigmaBerry.berry.description1 = NULL; + gSaveBlock1.enigmaBerry.berry.description2 = NULL; dest = (u8*)enigmaBerry; checksum = 0; @@ -1018,17 +1038,19 @@ u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) checksum += dest[i]; } + // the checksum is calculated: the descriptions are safe to restore now. gSaveBlock1.enigmaBerry.berry.description1 = description1; gSaveBlock1.enigmaBerry.berry.description2 = description2; return checksum; } +// due to e-reader scans being particularly volatile to failure, it is a requirement to check for their integrity here due to scans possibly failing to produce the correct result. bool32 IsEnigmaBerryValid(void) { - if (!gSaveBlock1.enigmaBerry.berry.stageDuration) + if (gSaveBlock1.enigmaBerry.berry.stageDuration == 0) return FALSE; - if (!gSaveBlock1.enigmaBerry.berry.maxYield) + if (gSaveBlock1.enigmaBerry.berry.maxYield == 0) return FALSE; if (GetEnigmaBerryChecksum(&gSaveBlock1.enigmaBerry) != gSaveBlock1.enigmaBerry.checksum) return FALSE; @@ -1037,37 +1059,42 @@ bool32 IsEnigmaBerryValid(void) const struct Berry *GetBerryInfo(u8 berry) { - if (berry == 0x2B && IsEnigmaBerryValid()) + // when getting the pointer to the berry info, enigma berries are handled differently. if your berry is an Enigma Berry and its checksum is valid, fetch the pointer to its information in the save block. + if (berry == GETBERRYID(ITEM_ENIGMA_BERRY) && IsEnigmaBerryValid()) return &gSaveBlock1.enigmaBerry.berry; else { - if (berry == 0 || berry > 0x2B) - berry = 1; + // invalid berries will be flattened into a cheri berry. Interestingly, if your berry was an enigma berry whos checksum failed, the game will use the Enigma Berry information for this: meaning if you see the Enigma Berry information, its actually because the checksum failed. + if (berry == BERRY_NONE || berry > GETBERRYID(LAST_BERRY)) + berry = GETBERRYID(FIRST_BERRY); return &gBerries[berry - 1]; } } -struct BerryTree *GetBerryTreeInfo(u8 id) +// the save file can handle up to a number of 128 berry trees as indicated by its definition in global.h. Interestingly, this function does not check that limit of 128. +static struct BerryTree *GetBerryTreeInfo(u8 id) { return &gSaveBlock1.berryTrees[id]; } +// this was called because the berry script was successful: meaning the player chose to water the tree. We need to check for the current tree stage and set the appropriate water flag to true. bool32 FieldObjectInteractionWaterBerryTree(void) { + // GetBerryTreeInfo does not sanitize the tree retrieved, but there are no known instances where this can cause problems. struct BerryTree *tree = GetBerryTreeInfo(FieldObjectGetBerryTreeId(gSelectedMapObject)); switch (tree->stage) { - case 1: + case BERRY_STAGE_PLANTED: tree->watered1 = TRUE; break; - case 2: + case BERRY_STAGE_SPROUTED: tree->watered2 = TRUE; break; - case 3: + case BERRY_STAGE_TALLER: tree->watered3 = TRUE; break; - case 4: + case BERRY_STAGE_FLOWERING: tree->watered4 = TRUE; break; default: @@ -1076,10 +1103,10 @@ bool32 FieldObjectInteractionWaterBerryTree(void) return TRUE; } -bool8 IsPlayerFacingPlantedBerryTree(void) +bool8 IsPlayerFacingUnplantedSoil(void) { - if (GetFieldObjectScriptPointerForComparison() == S_BerryTree - && GetStageByBerryTreeId(FieldObjectGetBerryTreeId(gSelectedMapObject)) == 0) + if (GetFieldObjectScriptPointerPlayerFacing() == S_BerryTree + && GetStageByBerryTreeId(FieldObjectGetBerryTreeId(gSelectedMapObject)) == BERRY_STAGE_NO_BERRY) return TRUE; else return FALSE; @@ -1087,7 +1114,7 @@ bool8 IsPlayerFacingPlantedBerryTree(void) bool8 TryToWaterBerryTree(void) { - if (GetFieldObjectScriptPointerForComparison() != S_BerryTree) + if (GetFieldObjectScriptPointerPlayerFacing() != S_BerryTree) return FALSE; else return FieldObjectInteractionWaterBerryTree(); @@ -1099,70 +1126,75 @@ void ClearBerryTrees(void) struct SaveBlock1 *saveBlock1 = &gSaveBlock1; struct BerryTree berryTree = gBlankBerryTree; - for (i = 0; i < (u8)ARRAY_COUNT(saveBlock1->berryTrees); i++) // casting to u8 fixes a mismatched signed compare. what + for (i = 0; i < MAX_BERRY_TREES; i++) saveBlock1->berryTrees[i] = berryTree; } -bool32 BerryTreeGrow(struct BerryTree *tree) +// when the player does not interact with the tree for a period of time, this is called to advance the grow state. +static bool32 BerryTreeGrow(struct BerryTree *tree) { - if (tree->growthSparkle) + if (tree->growthSparkle != FALSE) return FALSE; switch (tree->stage) { - case 0: + case BERRY_STAGE_NO_BERRY: return FALSE; - case 4: + case BERRY_STAGE_FLOWERING: tree->berryYield = CalcBerryYield(tree); - case 1: - case 2: - case 3: + case BERRY_STAGE_PLANTED: + case BERRY_STAGE_SPROUTED: + case BERRY_STAGE_TALLER: tree->stage++; break; - case 5: + case BERRY_STAGE_BERRIES: tree->watered1 = 0; tree->watered2 = 0; tree->watered3 = 0; tree->watered4 = 0; tree->berryYield = 0; - tree->stage = 2; - if (++tree->regrowthCount == 10) + tree->stage = BERRY_STAGE_SPROUTED; + if (++tree->regrowthCount == BERRY_REGROW_LIMIT) *tree = gBlankBerryTree; break; } return TRUE; } -void BerryTreeTimeUpdate(s32 minutes) +// totalMinutes is how long its been since the last berry tree update. +void BerryTreeTimeUpdate(s32 totalMinutes) { int i; struct BerryTree *tree; - for (i = 0; i < (u8)ARRAY_COUNT(gSaveBlock1.berryTrees); i++) + for (i = 0; i < MAX_BERRY_TREES; i++) { tree = &gSaveBlock1.berryTrees[i]; - if (tree->berry && tree->stage && !tree->growthSparkle) + if (tree->berry != BERRY_NONE && tree->stage != BERRY_STAGE_NO_BERRY && tree->growthSparkle == FALSE) { - if (minutes >= GetStageDurationByBerryType(tree->berry) * 71) + // the player has waited too long to water the berry. Reset the tree. This is because if the berry state is not in the unwatered state, the tree will grow anyway despite this check, which means BerryTreeGrow will handle the regrow process for this, removing the need for this check. This only handles the unwatered soil state. + if (totalMinutes >= GetStageDurationByBerryType(tree->berry) * 71) { *tree = gBlankBerryTree; } else { - s32 time = minutes; + // not sure why Game Freak thought a temporary variable was necessary. because time is altered below, perhaps they thought it was unsafe to change it, even though that is not how passed arguments behave. + s32 time = totalMinutes; while (time != 0) { if (tree->minutesUntilNextStage > time) { - tree->minutesUntilNextStage -= time; + tree->minutesUntilNextStage -= time; // its been X minutes since the last berry update, so update minutesUntilNextStage appropriately to match the time offset that has passed since the update. break; } + // perform the subtraction the other way around to get the number of minutes since the inferred stage update that occured, since minutesUntilNextStage is <= time. we may need this variable to simulate multiple berry cycles in the while loop. time -= tree->minutesUntilNextStage; - tree->minutesUntilNextStage = GetStageDurationByBerryType(tree->berry); - if (!BerryTreeGrow(tree)) + tree->minutesUntilNextStage = GetStageDurationByBerryType(tree->berry); // since the tree was inferred to update, set the new minutesUntilNextStage. + if (BerryTreeGrow(tree) == FALSE) break; - if (tree->stage == 5) + if (tree->stage == BERRY_STAGE_BERRIES) tree->minutesUntilNextStage *= 4; } } @@ -1170,7 +1202,7 @@ void BerryTreeTimeUpdate(s32 minutes) } } -void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 sparkle) +void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 noSparkle) { struct BerryTree *tree = GetBerryTreeInfo(id); @@ -1178,12 +1210,12 @@ void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 sparkle) tree->berry = berry; tree->minutesUntilNextStage = GetStageDurationByBerryType(berry); tree->stage = stage; - if (stage == 5) + if (stage == BERRY_STAGE_BERRIES) { tree->berryYield = CalcBerryYield(tree); tree->minutesUntilNextStage *= 4; } - if (!sparkle) + if (noSparkle == FALSE) { tree->growthSparkle = TRUE; } @@ -1209,19 +1241,19 @@ u8 ItemIdToBerryType(u16 item) u16 berry = item - FIRST_BERRY; if (berry > LAST_BERRY - FIRST_BERRY) - return 1; + return GETBERRYID(FIRST_BERRY); else - return item - FIRST_BERRY + 1; + return GETBERRYID(item); } -u16 BerryTypeToItemId(u16 berry) +static u16 BerryTypeToItemId(u16 berry) { u16 item = berry - 1; if (item > LAST_BERRY - FIRST_BERRY) return FIRST_BERRY; else - return berry + FIRST_BERRY - 1; + return GETITEMID(berry); } void GetBerryNameByBerryType(u8 berry, u8 *string) @@ -1232,10 +1264,10 @@ void GetBerryNameByBerryType(u8 berry, u8 *string) void ResetBerryTreeSparkleFlag(u8 id) { - GetBerryTreeInfo(id)->growthSparkle = 0; + GetBerryTreeInfo(id)->growthSparkle = FALSE; } -u8 BerryTreeGetNumStagesWatered(struct BerryTree *tree) +static u8 BerryTreeGetNumStagesWatered(struct BerryTree *tree) { u8 count = 0; @@ -1250,18 +1282,20 @@ u8 BerryTreeGetNumStagesWatered(struct BerryTree *tree) return count; } -u8 GetNumStagesWateredByBerryTreeId(u8 id) +static u8 GetNumStagesWateredByBerryTreeId(u8 id) { return BerryTreeGetNumStagesWatered(GetBerryTreeInfo(id)); } -u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water) +static u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water) { u32 randMin; u32 randMax; u32 rand; u32 extraYield; + // depending on if the player gave the tree plenty of water, berry yield will be affected proportionally. + if (water == 0) return min; else @@ -1270,7 +1304,7 @@ u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water) randMax = (max - min) * (water); rand = randMin + Random() % (randMax - randMin + 1); - if ((rand & 3) > 1) + if ((rand % 4) > 1) extraYield = rand / 4 + 1; else extraYield = rand / 4; @@ -1278,7 +1312,7 @@ u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water) } } -u8 CalcBerryYield(struct BerryTree *tree) +static u8 CalcBerryYield(struct BerryTree *tree) { const struct Berry *berry = GetBerryInfo(tree->berry); u8 min = berry->minYield; @@ -1287,12 +1321,12 @@ u8 CalcBerryYield(struct BerryTree *tree) return CalcBerryYieldInternal(max, min, BerryTreeGetNumStagesWatered(tree)); } -u8 GetBerryCountByBerryTreeId(u8 id) +static u8 GetBerryCountByBerryTreeId(u8 id) { return gSaveBlock1.berryTrees[id].berryYield; } -u16 GetStageDurationByBerryType(u8 berry) +static u16 GetStageDurationByBerryType(u8 berry) { return GetBerryInfo(berry)->stageDuration * 60; } @@ -1301,18 +1335,18 @@ void FieldObjectInteractionGetBerryTreeData(void) { u8 id; u8 berry; - u8 unk; + u8 localId; u8 group; u8 num; id = FieldObjectGetBerryTreeId(gSelectedMapObject); berry = GetBerryTypeByBerryTreeId(id); ResetBerryTreeSparkleFlag(id); - unk = gScriptLastTalked; + localId = gScriptLastTalked; num = gSaveBlock1.location.mapNum; group = gSaveBlock1.location.mapGroup; - if (sub_8060234(unk, num, group)) - gSpecialVar_0x8004 = 0xFF; + if (IsBerryTreeSparkling(localId, num, group)) + gSpecialVar_0x8004 = BERRY_STAGE_SPARKLING; // we cannot allow the player to grow/interact with the tree while the tree is undergoing the sparkling effect, so set the special var to the sparkling state and let the event script process the flag. else gSpecialVar_0x8004 = GetStageByBerryTreeId(id); gSpecialVar_0x8005 = GetNumStagesWateredByBerryTreeId(id); @@ -1320,7 +1354,7 @@ void FieldObjectInteractionGetBerryTreeData(void) GetBerryNameByBerryType(berry, gStringVar1); } -void sub_80B4EE4(void) +void Berry_FadeAndGoToBerryBagMenu(void) { SetMainCallback2(sub_80A68CC); } @@ -1347,11 +1381,12 @@ void FieldObjectInteractionRemoveBerryTree(void) sub_8060288(gScriptLastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); } -u8 PlayerHasBerries(void) +bool8 PlayerHasBerries(void) { return IsBagPocketNonEmpty(BAG_BERRIES); } +// whenever the player is not within view of the berry tree during its sparkle state, the sparkle state will be reset. void ResetBerryTreeSparkleFlags(void) { s16 cam_left; @@ -1369,7 +1404,7 @@ void ResetBerryTreeSparkleFlags(void) bottom = top + 8; for (i = 0; i < (u8)ARRAY_COUNT(gSaveBlock1.mapObjects); i++) { - if (gMapObjects[i].active && gMapObjects[i].animPattern == 12) + if (gMapObjects[i].active && gMapObjects[i].animPattern == 12) // is the object an active berry tree? { cam_left = gMapObjects[i].coords2.x; cam_top = gMapObjects[i].coords2.y; diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index 65357ac83..397523b07 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -856,7 +856,8 @@ u8 sub_8068F18(void) return 0; } -u8 *GetFieldObjectScriptPointerForComparison(void) +// GetFieldObjectScriptPointerPlayerFacing +u8 *GetFieldObjectScriptPointerPlayerFacing(void) { u8 r4; struct MapPosition position; diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index 9d37d90ad..0e1ce2a31 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -5549,17 +5549,16 @@ static bool8 DoesObjectCollideWithObjectAt(struct MapObject *mapObject, s16 x, s return 0; } -bool8 sub_8060234(u8 localId, u8 mapNum, u8 mapGroup) +// this function is only used in berry.c, but its unknown whether its intended context is the berry tree check or if its checking for the flickering. +bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup) { u8 mapObjectId; + if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId)) - { if (gSprites[gMapObjects[mapObjectId].spriteId].data7 & 2) - { - return 1; - } - } - return 0; + return TRUE; + + return FALSE; } void sub_8060288(u8 localId, u8 mapNum, u8 mapGroup) diff --git a/src/field/field_special_scene.c b/src/field/field_special_scene.c index 255b1d42b..5758929b6 100644 --- a/src/field/field_special_scene.c +++ b/src/field/field_special_scene.c @@ -94,8 +94,7 @@ s16 GetTruckBoxMovement(int a1) // for the box movement? void Task_Truck1(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 cameraYpan; - s16 cameraXpan = 0; + s16 cameraYpan, cameraXpan = 0; s16 box1, box2, box3; box1 = GetTruckBoxMovement(data[0] + 30) * 4; // top box. diff --git a/src/field/item_use.c b/src/field/item_use.c index 68da27fdb..14b13ca3b 100644 --- a/src/field/item_use.c +++ b/src/field/item_use.c @@ -780,7 +780,7 @@ void ItemUseOutOfBattle_SSTicket(u8 taskId) void sub_80C9C7C(u8 taskId) { - if (IsPlayerFacingPlantedBerryTree() == TRUE) + if (IsPlayerFacingUnplantedSoil() == TRUE) { gFieldItemUseCallback = sub_80C9D00; gFieldCallback = ExecuteItemUseFromBlackPalette; -- cgit v1.2.3 From e509322468b8b780fbfb81ed871de065ec3df8aa Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 23 Oct 2017 19:48:17 -0400 Subject: fixes --- src/field/berry.c | 3 +++ src/field/field_control_avatar.c | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/field/berry.c b/src/field/berry.c index 5127a3a4f..7482c3f4d 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -996,6 +996,9 @@ extern u16 gSpecialVar_0x8006; berries. */ +static u8 CalcBerryYield(struct BerryTree *tree); +static u16 GetStageDurationByBerryType(u8 berry); + // unused // this could be static, but making it so causes a compile-time warning. void ClearEnigmaBerries(void) diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index 397523b07..e9dd0e9a6 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -856,7 +856,6 @@ u8 sub_8068F18(void) return 0; } -// GetFieldObjectScriptPointerPlayerFacing u8 *GetFieldObjectScriptPointerPlayerFacing(void) { u8 r4; -- cgit v1.2.3 From 4f575c8dc4779d1756486322fc1e7bcf0875506e Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 23 Oct 2017 19:48:59 -0400 Subject: oops --- src/field/berry.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/field/berry.c b/src/field/berry.c index 7482c3f4d..64e2905a8 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -1136,7 +1136,7 @@ void ClearBerryTrees(void) // when the player does not interact with the tree for a period of time, this is called to advance the grow state. static bool32 BerryTreeGrow(struct BerryTree *tree) { - if (tree->growthSparkle != FALSE) + if (tree->growthSparkle) return FALSE; switch (tree->stage) { -- cgit v1.2.3 From cc7ee35fe3cb3cd4135c1c2fbd4e275018cff27a Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 23 Oct 2017 20:03:34 -0400 Subject: edit temp var comment. --- src/field/berry.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/field/berry.c b/src/field/berry.c index 64e2905a8..16a4d2762 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -1182,7 +1182,7 @@ void BerryTreeTimeUpdate(s32 totalMinutes) } else { - // not sure why Game Freak thought a temporary variable was necessary. because time is altered below, perhaps they thought it was unsafe to change it, even though that is not how passed arguments behave. + // because time is altered below, perhaps they thought it was unsafe to change it, even though that is not how passed arguments behave. s32 time = totalMinutes; while (time != 0) -- cgit v1.2.3 From e28049651fb7f9f5aa6cbb70961d18e54f9e1721 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 23 Oct 2017 20:13:31 -0400 Subject: fix bad label --- src/engine/clock.c | 10 +++++----- src/field/berry.c | 7 +++---- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/engine/clock.c b/src/engine/clock.c index 12b82018d..cb8af64a8 100644 --- a/src/engine/clock.c +++ b/src/engine/clock.c @@ -61,17 +61,17 @@ static void UpdatePerDay(struct Time *time) static void UpdatePerMinute(struct Time *time) { struct Time newTime; - s32 totalMinutes; + s32 minutesPassed; CalcTimeDifference(&newTime, &gSaveBlock2.lastBerryTreeUpdate, time); - totalMinutes = 1440 * newTime.days + 60 * newTime.hours + newTime.minutes; + minutesPassed = 1440 * newTime.days + 60 * newTime.hours + newTime.minutes; - if (totalMinutes == 0) // do not do the update for the first minute. + if (minutesPassed == 0) // do not do the update for the first minute. return; - if (totalMinutes > -1) // do not perform an update on invalid totalMinutes. + if (minutesPassed > -1) // do not perform an update on invalid minutesPassed. { - BerryTreeTimeUpdate(totalMinutes); + BerryTreeTimeUpdate(minutesPassed); gSaveBlock2.lastBerryTreeUpdate = *time; } } diff --git a/src/field/berry.c b/src/field/berry.c index 16a4d2762..bbb643b10 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -1163,8 +1163,7 @@ static bool32 BerryTreeGrow(struct BerryTree *tree) return TRUE; } -// totalMinutes is how long its been since the last berry tree update. -void BerryTreeTimeUpdate(s32 totalMinutes) +void BerryTreeTimeUpdate(s32 minutesPassed) { int i; struct BerryTree *tree; @@ -1176,14 +1175,14 @@ void BerryTreeTimeUpdate(s32 totalMinutes) if (tree->berry != BERRY_NONE && tree->stage != BERRY_STAGE_NO_BERRY && tree->growthSparkle == FALSE) { // the player has waited too long to water the berry. Reset the tree. This is because if the berry state is not in the unwatered state, the tree will grow anyway despite this check, which means BerryTreeGrow will handle the regrow process for this, removing the need for this check. This only handles the unwatered soil state. - if (totalMinutes >= GetStageDurationByBerryType(tree->berry) * 71) + if (minutesPassed >= GetStageDurationByBerryType(tree->berry) * 71) { *tree = gBlankBerryTree; } else { // because time is altered below, perhaps they thought it was unsafe to change it, even though that is not how passed arguments behave. - s32 time = totalMinutes; + s32 time = minutesPassed; while (time != 0) { -- cgit v1.2.3 From c5241d9e80582b746d050ac4424393ccc1636d4b Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 23 Oct 2017 20:25:57 -0400 Subject: format comments --- src/field/berry.c | 60 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 15 deletions(-) diff --git a/src/field/berry.c b/src/field/berry.c index bbb643b10..cd1fc5c94 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -1015,7 +1015,9 @@ void SetEnigmaBerry(u8 *src) for (i = 0; i < sizeof(gSaveBlock1.enigmaBerry); i++) dest[i] = src[i]; - // at this point, the description pointer is not yet initialized. we need to initialize it since we dont know where in memory this is going to be. set the berry desc pointers to the EnigmaBerry struct's description arrays since these are where the descriptions are stored. + // at this point, the description pointer is not yet initialized. we need to initialize it since + // we dont know where in memory this is going to be. set the berry desc pointers to the + // EnigmaBerry struct's description arrays since these are where the descriptions are stored. gSaveBlock1.enigmaBerry.berry.description1 = gSaveBlock1.enigmaBerry.description1; gSaveBlock1.enigmaBerry.berry.description2 = gSaveBlock1.enigmaBerry.description2; } @@ -1028,7 +1030,9 @@ static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) u32 checksum; u8 *dest; - // the description pointers could be pointing to anywhere in memory. we do not want these pointers to factor into the checksum as it will produce a different result every time: so back the pointers up and set them to null so the checksum is safe to calculate. + // the description pointers could be pointing to anywhere in memory. we do not want these + // pointers to factor into the checksum as it will produce a different result every time: so + // back the pointers up and set them to null so the checksum is safe to calculate. description1 = gSaveBlock1.enigmaBerry.berry.description1; description2 = gSaveBlock1.enigmaBerry.berry.description2; gSaveBlock1.enigmaBerry.berry.description1 = NULL; @@ -1048,7 +1052,8 @@ static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) return checksum; } -// due to e-reader scans being particularly volatile to failure, it is a requirement to check for their integrity here due to scans possibly failing to produce the correct result. +// due to e-reader scans being particularly volatile to failure, it is a requirement to check for +// their integrity here due to scans possibly failing to produce the correct result. bool32 IsEnigmaBerryValid(void) { if (gSaveBlock1.enigmaBerry.berry.stageDuration == 0) @@ -1062,28 +1067,37 @@ bool32 IsEnigmaBerryValid(void) const struct Berry *GetBerryInfo(u8 berry) { - // when getting the pointer to the berry info, enigma berries are handled differently. if your berry is an Enigma Berry and its checksum is valid, fetch the pointer to its information in the save block. + // when getting the pointer to the berry info, enigma berries are handled differently. if your + // berry is an Enigma Berry and its checksum is valid, fetch the pointer to its information in + // the save block. if (berry == GETBERRYID(ITEM_ENIGMA_BERRY) && IsEnigmaBerryValid()) return &gSaveBlock1.enigmaBerry.berry; else { - // invalid berries will be flattened into a cheri berry. Interestingly, if your berry was an enigma berry whos checksum failed, the game will use the Enigma Berry information for this: meaning if you see the Enigma Berry information, its actually because the checksum failed. + // invalid berries will be flattened into a cheri berry. Interestingly, if your berry was + // an enigma berry whos checksum failed, the game will use the Enigma Berry information + // for this: meaning if you see the Enigma Berry information, its actually because the + // checksum failed. if (berry == BERRY_NONE || berry > GETBERRYID(LAST_BERRY)) berry = GETBERRYID(FIRST_BERRY); return &gBerries[berry - 1]; } } -// the save file can handle up to a number of 128 berry trees as indicated by its definition in global.h. Interestingly, this function does not check that limit of 128. +// the save file can handle up to a number of 128 berry trees as indicated by its definition +// in global.h. Interestingly, this function does not check that limit of 128. static struct BerryTree *GetBerryTreeInfo(u8 id) { return &gSaveBlock1.berryTrees[id]; } -// this was called because the berry script was successful: meaning the player chose to water the tree. We need to check for the current tree stage and set the appropriate water flag to true. +// this was called because the berry script was successful: meaning the player chose to +// water the tree. We need to check for the current tree stage and set the appropriate +// water flag to true. bool32 FieldObjectInteractionWaterBerryTree(void) { - // GetBerryTreeInfo does not sanitize the tree retrieved, but there are no known instances where this can cause problems. + // GetBerryTreeInfo does not sanitize the tree retrieved, but there are no known + // instances where this can cause problems. struct BerryTree *tree = GetBerryTreeInfo(FieldObjectGetBerryTreeId(gSelectedMapObject)); switch (tree->stage) @@ -1133,7 +1147,8 @@ void ClearBerryTrees(void) saveBlock1->berryTrees[i] = berryTree; } -// when the player does not interact with the tree for a period of time, this is called to advance the grow state. +// when the player does not interact with the tree for a period of time, this is called +// to advance the grow state. static bool32 BerryTreeGrow(struct BerryTree *tree) { if (tree->growthSparkle) @@ -1174,24 +1189,33 @@ void BerryTreeTimeUpdate(s32 minutesPassed) if (tree->berry != BERRY_NONE && tree->stage != BERRY_STAGE_NO_BERRY && tree->growthSparkle == FALSE) { - // the player has waited too long to water the berry. Reset the tree. This is because if the berry state is not in the unwatered state, the tree will grow anyway despite this check, which means BerryTreeGrow will handle the regrow process for this, removing the need for this check. This only handles the unwatered soil state. + // the player has waited too long to water the berry. Reset the tree. This is because + // if the berry state is not in the unwatered state, the tree will grow anyway despite this + // check, which means BerryTreeGrow will handle the regrow process for this, removing the + // need for this check. This only handles the unwatered soil state. if (minutesPassed >= GetStageDurationByBerryType(tree->berry) * 71) { *tree = gBlankBerryTree; } else { - // because time is altered below, perhaps they thought it was unsafe to change it, even though that is not how passed arguments behave. + // because time is altered below, perhaps they thought it was unsafe to change it, even + // though that is not how passed arguments behave. s32 time = minutesPassed; while (time != 0) { if (tree->minutesUntilNextStage > time) { - tree->minutesUntilNextStage -= time; // its been X minutes since the last berry update, so update minutesUntilNextStage appropriately to match the time offset that has passed since the update. + // its been X minutes since the last berry update, so update + // minutesUntilNextStage appropriately to match the time offset + // that has passed since the update. + tree->minutesUntilNextStage -= time; break; } - // perform the subtraction the other way around to get the number of minutes since the inferred stage update that occured, since minutesUntilNextStage is <= time. we may need this variable to simulate multiple berry cycles in the while loop. + // perform the subtraction the other way around to get the number of minutes since + // the inferred stage update that occured, since minutesUntilNextStage is <= time. + // we may need this variable to simulate multiple berry cycles in the while loop. time -= tree->minutesUntilNextStage; tree->minutesUntilNextStage = GetStageDurationByBerryType(tree->berry); // since the tree was inferred to update, set the new minutesUntilNextStage. if (BerryTreeGrow(tree) == FALSE) @@ -1348,7 +1372,12 @@ void FieldObjectInteractionGetBerryTreeData(void) num = gSaveBlock1.location.mapNum; group = gSaveBlock1.location.mapGroup; if (IsBerryTreeSparkling(localId, num, group)) - gSpecialVar_0x8004 = BERRY_STAGE_SPARKLING; // we cannot allow the player to grow/interact with the tree while the tree is undergoing the sparkling effect, so set the special var to the sparkling state and let the event script process the flag. + { + // we cannot allow the player to grow/interact with the tree while the tree + // is undergoing the sparkling effect, so set the special var to the sparkling + // state and let the event script process the flag. + gSpecialVar_0x8004 = BERRY_STAGE_SPARKLING; + } else gSpecialVar_0x8004 = GetStageByBerryTreeId(id); gSpecialVar_0x8005 = GetNumStagesWateredByBerryTreeId(id); @@ -1388,7 +1417,8 @@ bool8 PlayerHasBerries(void) return IsBagPocketNonEmpty(BAG_BERRIES); } -// whenever the player is not within view of the berry tree during its sparkle state, the sparkle state will be reset. +// whenever the player is not within view of the berry tree during its sparkle state, the +// sparkle state will be reset. void ResetBerryTreeSparkleFlags(void) { s16 cam_left; -- cgit v1.2.3 From c06b20715674f05c90c4c1579ee90c692998fc85 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 23 Oct 2017 20:21:58 -0500 Subject: port matching AbilityBattleEffects from Emerald --- src/battle/battle_3.c | 3430 +------------------------------------------------ 1 file changed, 36 insertions(+), 3394 deletions(-) diff --git a/src/battle/battle_3.c b/src/battle/battle_3.c index b59757f00..346ca6d79 100644 --- a/src/battle/battle_3.c +++ b/src/battle/battle_3.c @@ -1434,8 +1434,6 @@ u8 CastformDataTypeChange(u8 bank) return formChange; } -#ifdef NONMATCHING - struct Struct2017100 { u32 arr[4]; @@ -1475,13 +1473,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) // why isn't that check done at the beginning? { - //_08018436 - int i; // r4 + u8 moveType; + s32 i; u16 move; - // Hmm... - #define moveType moveArg - //u16 moveType; u8 side; + u8 target1; if (special) gLastUsedAbility = special; @@ -1607,17 +1603,14 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) case ABILITY_AIR_LOCK: //_080187DC { - u8 i; - - for (i = 0; i < gNoOfAllBanks; i++) + // that's a weird choice for a variable, why not use i or bank? + for (target1 = 0; target1 < gNoOfAllBanks; target1++) { - // TODO: i should be in r6 here - //asm("":::"r4","r5"); - effect = CastformDataTypeChange(i); + effect = CastformDataTypeChange(target1); if (effect != 0) { b_push_move_exec(BattleScript_CastformChange); - BATTLE_STRUCT->scriptingActive = i; + BATTLE_STRUCT->scriptingActive = target1; BATTLE_STRUCT->castformToChangeInto = effect - 1; break; } @@ -1637,7 +1630,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_RAIN_ANY) && gBattleMons[bank].maxHP > gBattleMons[bank].hp) { - gLastUsedAbility = ABILITY_RAIN_DISH; //why + gLastUsedAbility = ABILITY_RAIN_DISH; // why b_push_move_exec(BattleScript_RainDishActivates); gBattleMoveDamage = gBattleMons[bank].maxHP / 16; if (gBattleMoveDamage == 0) @@ -1660,7 +1653,8 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (gBattleMons[bank].status1 & STATUS_FREEZE) StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); gBattleMons[bank].status1 = 0; - //gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); fixed in Emerald + // BUG: The nightmare status does not get cleared here. This was fixed in Emerald. + //gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); BATTLE_STRUCT->scriptingActive = gActiveBank = bank; b_push_move_exec(BattleScript_ShedSkinActivates); EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1); @@ -1759,9 +1753,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (gBattleMons[bank].maxHP == gBattleMons[bank].hp) { if ((gProtectStructs[gBankAttacker].notFirstStrike)) - gBattlescriptCurrInstr = BattleScript_MoveHPDrain; + gBattlescriptCurrInstr = BattleScript_MoveHPDrain_FullHP; else - gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; + gBattlescriptCurrInstr = BattleScript_MoveHPDrain_FullHP_PPLoss; } else { @@ -1910,27 +1904,26 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) case ABILITYEFFECT_IMMUNITY: // 5 //_08019448 { - #define i bank - for (i = 0; i < gNoOfAllBanks; i++) + for (bank = 0; bank < gNoOfAllBanks; bank++) { - switch (gBattleMons[i].ability) + switch (gBattleMons[bank].ability) { case ABILITY_IMMUNITY: - if (gBattleMons[i].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | 0xF00)) // TODO: what is 0xF00? + if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | 0xF00)) // TODO: what is 0xF00? { StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); effect = 1; } break; case ABILITY_OWN_TEMPO: - if (gBattleMons[i].status2 & STATUS2_CONFUSION) + if (gBattleMons[bank].status2 & STATUS2_CONFUSION) { StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); effect = 2; } break; case ABILITY_LIMBER: - if (gBattleMons[i].status1 & STATUS_PARALYSIS) + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) { StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); effect = 1; @@ -1938,29 +1931,29 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) break; case ABILITY_INSOMNIA: case ABILITY_VITAL_SPIRIT: - if (gBattleMons[i].status1 & STATUS_SLEEP) + if (gBattleMons[bank].status1 & STATUS_SLEEP) { - gBattleMons[i].status2 &= ~(STATUS2_NIGHTMARE); + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); effect = 1; } break; case ABILITY_WATER_VEIL: - if (gBattleMons[i].status1 & STATUS_BURN) + if (gBattleMons[bank].status1 & STATUS_BURN) { StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); effect = 1; } break; case ABILITY_MAGMA_ARMOR: - if (gBattleMons[i].status1 & STATUS_FREEZE) + if (gBattleMons[bank].status1 & STATUS_FREEZE) { StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); effect = 1; } break; case ABILITY_OBLIVIOUS: - if (gBattleMons[i].status2 & STATUS2_INFATUATION) + if (gBattleMons[bank].status2 & STATUS2_INFATUATION) { StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); effect = 3; @@ -1972,46 +1965,43 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) switch (effect) { case 1: // status cleared - gBattleMons[i].status1 = 0; + gBattleMons[bank].status1 = 0; break; case 2: // get rid of confusion - gBattleMons[i].status2 &= ~(STATUS2_CONFUSION); + gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); break; case 3: // get rid of infatuation - gBattleMons[i].status2 &= ~(STATUS2_INFATUATION); + gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION); break; } b_movescr_stack_push_cursor(); gBattlescriptCurrInstr = gUnknown_081D9956; - BATTLE_STRUCT->scriptingActive = i; - gActiveBank = i; + BATTLE_STRUCT->scriptingActive = bank; + gActiveBank = bank; EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); return effect; } } - #undef i } break; case ABILITYEFFECT_FORECAST: // 6 //_080197B4 { - #define i bank - for (i = 0; i < gNoOfAllBanks; i++) + for (bank = 0; bank < gNoOfAllBanks; bank++) { - if (gBattleMons[i].ability == ABILITY_FORECAST) + if (gBattleMons[bank].ability == ABILITY_FORECAST) { - effect = CastformDataTypeChange(i); + effect = CastformDataTypeChange(bank); if (effect) { b_push_move_exec(BattleScript_CastformChange); - BATTLE_STRUCT->scriptingActive = i; + BATTLE_STRUCT->scriptingActive = bank; BATTLE_STRUCT->castformToChangeInto = effect - 1; return effect; } } } - #undef i } break; case ABILITYEFFECT_SYNCHRONIZE: // 7 @@ -2067,16 +2057,17 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE)) { - u8 opposite = (GetBankIdentity(i) ^ 1) & 1; - u8 target1 = GetBankByPlayerAI(opposite); - u8 target2 = GetBankByPlayerAI(opposite + 2); + u8 target2; + side = (GetBankIdentity(i) ^ 1) & 1; + target1 = GetBankByPlayerAI(side); + target2 = GetBankByPlayerAI(side + 2); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0 && gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0) { //_080199AE - gActiveBank = GetBankByPlayerAI(((Random() & 1) * 2) | opposite); + gActiveBank = GetBankByPlayerAI(((Random() & 1) * 2) | side); gBattleMons[i].ability = gBattleMons[gActiveBank].ability; gLastUsedAbility = gBattleMons[gActiveBank].ability; effect++; @@ -2266,3355 +2257,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) return effect; } -#else -__attribute__((naked)) -u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x28\n\ - ldr r4, [sp, 0x48]\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - str r0, [sp, 0x4]\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - mov r10, r1\n\ - lsls r2, 24\n\ - lsrs r6, r2, 24\n\ - lsls r3, 24\n\ - lsrs r3, 24\n\ - mov r8, r3\n\ - lsls r4, 16\n\ - lsrs r4, 16\n\ - movs r0, 0\n\ - mov r9, r0\n\ - ldr r5, _08018380 @ =gBankAttacker\n\ - ldr r1, _08018384 @ =gNoOfAllBanks\n\ - ldrb r0, [r5]\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bcc _08018360\n\ - mov r1, r10\n\ - strb r1, [r5]\n\ -_08018360:\n\ - ldrb r0, [r5]\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _08018390\n\ - ldr r1, _08018388 @ =gBattlePartyID\n\ - ldrb r0, [r5]\n\ - lsls r0, 1\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - movs r0, 0x64\n\ - muls r1, r0\n\ - ldr r0, _0801838C @ =gPlayerParty\n\ - b _080183A0\n\ - .align 2, 0\n\ -_08018380: .4byte gBankAttacker\n\ -_08018384: .4byte gNoOfAllBanks\n\ -_08018388: .4byte gBattlePartyID\n\ -_0801838C: .4byte gPlayerParty\n\ -_08018390:\n\ - ldr r1, _080183D0 @ =gBattlePartyID\n\ - ldrb r0, [r5]\n\ - lsls r0, 1\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - movs r0, 0x64\n\ - muls r1, r0\n\ - ldr r0, _080183D4 @ =gEnemyParty\n\ -_080183A0:\n\ - adds r7, r1, r0\n\ - ldr r5, _080183D8 @ =gBankTarget\n\ - ldr r1, _080183DC @ =gNoOfAllBanks\n\ - ldrb r0, [r5]\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bcc _080183B2\n\ - mov r2, r10\n\ - strb r2, [r5]\n\ -_080183B2:\n\ - ldrb r0, [r5]\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080183E4\n\ - ldr r1, _080183D0 @ =gBattlePartyID\n\ - ldrb r0, [r5]\n\ - lsls r0, 1\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - movs r0, 0x64\n\ - muls r1, r0\n\ - ldr r0, _080183E0 @ =gPlayerParty\n\ - b _080183F4\n\ - .align 2, 0\n\ -_080183D0: .4byte gBattlePartyID\n\ -_080183D4: .4byte gEnemyParty\n\ -_080183D8: .4byte gBankTarget\n\ -_080183DC: .4byte gNoOfAllBanks\n\ -_080183E0: .4byte gPlayerParty\n\ -_080183E4:\n\ - ldr r1, _08018444 @ =gBattlePartyID\n\ - ldrb r0, [r5]\n\ - lsls r0, 1\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - movs r0, 0x64\n\ - muls r1, r0\n\ - ldr r0, _08018448 @ =gEnemyParty\n\ -_080183F4:\n\ - adds r5, r1, r0\n\ - adds r0, r7, 0\n\ - movs r1, 0xB\n\ - bl GetMonData\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0x8]\n\ - adds r0, r7, 0\n\ - movs r1, 0\n\ - bl GetMonData\n\ - str r0, [sp, 0x10]\n\ - adds r0, r5, 0\n\ - movs r1, 0xB\n\ - bl GetMonData\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - str r0, [sp, 0xC]\n\ - adds r0, r5, 0\n\ - movs r1, 0\n\ - bl GetMonData\n\ - str r0, [sp, 0x14]\n\ - ldr r0, _0801844C @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08018436\n\ - bl _08019F92\n\ -_08018436:\n\ - mov r3, r8\n\ - cmp r3, 0\n\ - beq _08018454\n\ - ldr r0, _08018450 @ =gLastUsedAbility\n\ - strb r3, [r0]\n\ - mov r8, r0\n\ - b _0801846A\n\ - .align 2, 0\n\ -_08018444: .4byte gBattlePartyID\n\ -_08018448: .4byte gEnemyParty\n\ -_0801844C: .4byte gBattleTypeFlags\n\ -_08018450: .4byte gLastUsedAbility\n\ -_08018454:\n\ - ldr r2, _08018474 @ =gLastUsedAbility\n\ - ldr r1, _08018478 @ =gBattleMons\n\ - movs r0, 0x58\n\ - mov r5, r10\n\ - muls r5, r0\n\ - adds r0, r5, 0\n\ - adds r0, r1\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - strb r0, [r2]\n\ - mov r8, r2\n\ -_0801846A:\n\ - cmp r4, 0\n\ - beq _0801847C\n\ - adds r3, r4, 0\n\ - b _08018480\n\ - .align 2, 0\n\ -_08018474: .4byte gLastUsedAbility\n\ -_08018478: .4byte gBattleMons\n\ -_0801847C:\n\ - ldr r0, _08018494 @ =gCurrentMove\n\ - ldrh r3, [r0]\n\ -_08018480:\n\ - ldr r1, _08018498 @ =0x02000000\n\ - ldr r2, _0801849C @ =0x0001601c\n\ - adds r0, r1, r2\n\ - ldrb r0, [r0]\n\ - adds r7, r1, 0\n\ - cmp r0, 0\n\ - beq _080184A0\n\ - movs r4, 0x3F\n\ - ands r4, r0\n\ - b _080184AC\n\ - .align 2, 0\n\ -_08018494: .4byte gCurrentMove\n\ -_08018498: .4byte 0x02000000\n\ -_0801849C: .4byte 0x0001601c\n\ -_080184A0:\n\ - ldr r1, _080184C0 @ =gBattleMoves\n\ - lsls r0, r3, 1\n\ - adds r0, r3\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r4, [r0, 0x2]\n\ -_080184AC:\n\ - ldr r5, [sp, 0x4]\n\ - cmp r5, 0x13\n\ - bls _080184B6\n\ - bl _08019F76\n\ -_080184B6:\n\ - lsls r0, r5, 2\n\ - ldr r1, _080184C4 @ =_080184C8\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_080184C0: .4byte gBattleMoves\n\ -_080184C4: .4byte _080184C8\n\ - .align 2, 0\n\ -_080184C8:\n\ - .4byte _08018518\n\ - .4byte _08018814\n\ - .4byte _08018A40\n\ - .4byte _08018AD8\n\ - .4byte _08018CF0\n\ - .4byte _08019448\n\ - .4byte _080197B4\n\ - .4byte _08019804\n\ - .4byte _08019880\n\ - .4byte _080198FC\n\ - .4byte _08019B1C\n\ - .4byte _08019940\n\ - .4byte _08019B60\n\ - .4byte _08019BBC\n\ - .4byte _08019C18\n\ - .4byte _08019D18\n\ - .4byte _08019D5C\n\ - .4byte _08019DB8\n\ - .4byte _08019F44\n\ - .4byte _08019CD4\n\ -_08018518:\n\ - ldr r2, _0801854C @ =gBankAttacker\n\ - ldr r0, _08018550 @ =gNoOfAllBanks\n\ - ldrb r1, [r2]\n\ - adds r5, r0, 0\n\ - ldrb r0, [r5]\n\ - cmp r1, r0\n\ - bcc _0801852A\n\ - mov r1, r10\n\ - strb r1, [r2]\n\ -_0801852A:\n\ - mov r2, r8\n\ - ldrb r0, [r2]\n\ - cmp r0, 0x2D\n\ - bne _08018534\n\ - b _080186B8\n\ -_08018534:\n\ - cmp r0, 0x2D\n\ - bgt _08018564\n\ - cmp r0, 0xD\n\ - bne _0801853E\n\ - b _080187DC\n\ -_0801853E:\n\ - cmp r0, 0xD\n\ - bgt _08018554\n\ - cmp r0, 0x2\n\ - bne _08018548\n\ - b _08018680\n\ -_08018548:\n\ - bl _08019F76\n\ - .align 2, 0\n\ -_0801854C: .4byte gBankAttacker\n\ -_08018550: .4byte gNoOfAllBanks\n\ -_08018554:\n\ - cmp r0, 0x16\n\ - bne _0801855A\n\ - b _08018728\n\ -_0801855A:\n\ - cmp r0, 0x24\n\ - bne _08018560\n\ - b _080187A0\n\ -_08018560:\n\ - bl _08019F76\n\ -_08018564:\n\ - cmp r0, 0x46\n\ - bne _0801856A\n\ - b _080186F0\n\ -_0801856A:\n\ - cmp r0, 0x46\n\ - bgt _08018578\n\ - cmp r0, 0x3B\n\ - bne _08018574\n\ - b _0801875C\n\ -_08018574:\n\ - bl _08019F76\n\ -_08018578:\n\ - cmp r0, 0x4D\n\ - bne _0801857E\n\ - b _080187DC\n\ -_0801857E:\n\ - cmp r0, 0xFF\n\ - beq _08018586\n\ - bl _08019F76\n\ -_08018586:\n\ - bl weather_get_current\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - subs r0, 0x3\n\ - cmp r0, 0xA\n\ - bhi _0801864C\n\ - lsls r0, 2\n\ - ldr r1, _080185A0 @ =_080185A4\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_080185A0: .4byte _080185A4\n\ - .align 2, 0\n\ -_080185A4:\n\ - .4byte _080185D0\n\ - .4byte _0801864C\n\ - .4byte _080185D0\n\ - .4byte _0801864C\n\ - .4byte _0801864C\n\ - .4byte _080185F8\n\ - .4byte _0801864C\n\ - .4byte _0801864C\n\ - .4byte _0801864C\n\ - .4byte _08018620\n\ - .4byte _080185D0\n\ -_080185D0:\n\ - ldr r2, _080185EC @ =gBattleWeather\n\ - ldrh r1, [r2]\n\ - movs r0, 0x7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0801864C\n\ - movs r0, 0x5\n\ - strh r0, [r2]\n\ - ldr r0, _080185F0 @ =0x02000000\n\ - ldr r3, _080185F4 @ =0x000160a4\n\ - adds r2, r0, r3\n\ - movs r1, 0xA\n\ - b _08018638\n\ - .align 2, 0\n\ -_080185EC: .4byte gBattleWeather\n\ -_080185F0: .4byte 0x02000000\n\ -_080185F4: .4byte 0x000160a4\n\ -_080185F8:\n\ - ldr r3, _08018614 @ =gBattleWeather\n\ - ldrh r1, [r3]\n\ - movs r2, 0x18\n\ - adds r0, r2, 0\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0801864C\n\ - strh r2, [r3]\n\ - ldr r0, _08018618 @ =0x02000000\n\ - ldr r3, _0801861C @ =0x000160a4\n\ - adds r2, r0, r3\n\ - movs r1, 0xC\n\ - b _08018638\n\ - .align 2, 0\n\ -_08018614: .4byte gBattleWeather\n\ -_08018618: .4byte 0x02000000\n\ -_0801861C: .4byte 0x000160a4\n\ -_08018620:\n\ - ldr r3, _08018668 @ =gBattleWeather\n\ - ldrh r1, [r3]\n\ - movs r2, 0x60\n\ - adds r0, r2, 0\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0801864C\n\ - strh r2, [r3]\n\ - ldr r0, _0801866C @ =0x02000000\n\ - ldr r3, _08018670 @ =0x000160a4\n\ - adds r2, r0, r3\n\ - movs r1, 0xB\n\ -_08018638:\n\ - strb r1, [r2]\n\ - ldr r5, _08018674 @ =0x00016003\n\ - adds r0, r5\n\ - mov r1, r10\n\ - strb r1, [r0]\n\ - mov r0, r9\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_0801864C:\n\ - mov r2, r9\n\ - cmp r2, 0\n\ - bne _08018656\n\ - bl _08019F92\n\ -_08018656:\n\ - bl weather_get_current\n\ - ldr r1, _08018678 @ =gBattleCommunication\n\ - strb r0, [r1, 0x5]\n\ - ldr r0, _0801867C @ =gUnknown_081D901D\n\ - bl b_push_move_exec\n\ - bl _08019F76\n\ - .align 2, 0\n\ -_08018668: .4byte gBattleWeather\n\ -_0801866C: .4byte 0x02000000\n\ -_08018670: .4byte 0x000160a4\n\ -_08018674: .4byte 0x00016003\n\ -_08018678: .4byte gBattleCommunication\n\ -_0801867C: .4byte gUnknown_081D901D\n\ -_08018680:\n\ - ldr r2, _080186A8 @ =gBattleWeather\n\ - ldrh r1, [r2]\n\ - movs r0, 0x4\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08018690\n\ - bl _08019F76\n\ -_08018690:\n\ - movs r0, 0x5\n\ - strh r0, [r2]\n\ - ldr r0, _080186AC @ =BattleScript_DrizzleActivates\n\ - bl b_push_move_exec\n\ - ldr r0, _080186B0 @ =0x02000000\n\ - ldr r3, _080186B4 @ =0x00016003\n\ - adds r0, r3\n\ - mov r5, r10\n\ - strb r5, [r0]\n\ - bl _08019F22\n\ - .align 2, 0\n\ -_080186A8: .4byte gBattleWeather\n\ -_080186AC: .4byte BattleScript_DrizzleActivates\n\ -_080186B0: .4byte 0x02000000\n\ -_080186B4: .4byte 0x00016003\n\ -_080186B8:\n\ - ldr r2, _080186E0 @ =gBattleWeather\n\ - ldrh r1, [r2]\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080186C8\n\ - bl _08019F76\n\ -_080186C8:\n\ - movs r0, 0x18\n\ - strh r0, [r2]\n\ - ldr r0, _080186E4 @ =BattleScript_SandstreamActivates\n\ - bl b_push_move_exec\n\ - ldr r0, _080186E8 @ =0x02000000\n\ - ldr r1, _080186EC @ =0x00016003\n\ - adds r0, r1\n\ - mov r2, r10\n\ - strb r2, [r0]\n\ - bl _08019F22\n\ - .align 2, 0\n\ -_080186E0: .4byte gBattleWeather\n\ -_080186E4: .4byte BattleScript_SandstreamActivates\n\ -_080186E8: .4byte 0x02000000\n\ -_080186EC: .4byte 0x00016003\n\ -_080186F0:\n\ - ldr r2, _08018718 @ =gBattleWeather\n\ - ldrh r1, [r2]\n\ - movs r0, 0x40\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08018700\n\ - bl _08019F76\n\ -_08018700:\n\ - movs r0, 0x60\n\ - strh r0, [r2]\n\ - ldr r0, _0801871C @ =BattleScript_DroughtActivates\n\ - bl b_push_move_exec\n\ - ldr r0, _08018720 @ =0x02000000\n\ - ldr r3, _08018724 @ =0x00016003\n\ - adds r0, r3\n\ - mov r5, r10\n\ - strb r5, [r0]\n\ - bl _08019F22\n\ - .align 2, 0\n\ -_08018718: .4byte gBattleWeather\n\ -_0801871C: .4byte BattleScript_DroughtActivates\n\ -_08018720: .4byte 0x02000000\n\ -_08018724: .4byte 0x00016003\n\ -_08018728:\n\ - ldr r0, _08018754 @ =gSpecialStatuses\n\ - mov r1, r10\n\ - lsls r2, r1, 2\n\ - adds r1, r2, r1\n\ - lsls r1, 2\n\ - adds r3, r1, r0\n\ - ldrb r0, [r3]\n\ - lsls r0, 28\n\ - cmp r0, 0\n\ - bge _08018740\n\ - bl _08019F76\n\ -_08018740:\n\ - ldr r1, _08018758 @ =gStatuses3\n\ - adds r1, r2, r1\n\ - ldr r0, [r1]\n\ - movs r2, 0x80\n\ - lsls r2, 12\n\ - orrs r0, r2\n\ - str r0, [r1]\n\ - ldrb r0, [r3]\n\ - movs r1, 0x8\n\ - b _080187CA\n\ - .align 2, 0\n\ -_08018754: .4byte gSpecialStatuses\n\ -_08018758: .4byte gStatuses3\n\ -_0801875C:\n\ - mov r0, r10\n\ - bl CastformDataTypeChange\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ - cmp r0, 0\n\ - bne _08018770\n\ - bl _08019F92\n\ -_08018770:\n\ - ldr r0, _08018790 @ =BattleScript_CastformChange\n\ - bl b_push_move_exec\n\ - ldr r0, _08018794 @ =0x02000000\n\ - ldr r2, _08018798 @ =0x00016003\n\ - adds r1, r0, r2\n\ - mov r3, r10\n\ - strb r3, [r1]\n\ - mov r1, r9\n\ - subs r1, 0x1\n\ - ldr r5, _0801879C @ =0x0001609b\n\ - adds r0, r5\n\ - strb r1, [r0]\n\ - bl _08019F76\n\ - .align 2, 0\n\ -_08018790: .4byte BattleScript_CastformChange\n\ -_08018794: .4byte 0x02000000\n\ -_08018798: .4byte 0x00016003\n\ -_0801879C: .4byte 0x0001609b\n\ -_080187A0:\n\ - ldr r0, _080187D4 @ =gSpecialStatuses\n\ - mov r1, r10\n\ - lsls r2, r1, 2\n\ - adds r1, r2, r1\n\ - lsls r1, 2\n\ - adds r3, r1, r0\n\ - ldrb r0, [r3]\n\ - lsls r0, 27\n\ - cmp r0, 0\n\ - bge _080187B8\n\ - bl _08019F76\n\ -_080187B8:\n\ - ldr r1, _080187D8 @ =gStatuses3\n\ - adds r1, r2, r1\n\ - ldr r0, [r1]\n\ - movs r2, 0x80\n\ - lsls r2, 13\n\ - orrs r0, r2\n\ - str r0, [r1]\n\ - ldrb r0, [r3]\n\ - movs r1, 0x10\n\ -_080187CA:\n\ - orrs r0, r1\n\ - strb r0, [r3]\n\ - bl _08019F76\n\ - .align 2, 0\n\ -_080187D4: .4byte gSpecialStatuses\n\ -_080187D8: .4byte gStatuses3\n\ -_080187DC:\n\ - movs r6, 0\n\ - ldrb r5, [r5]\n\ - cmp r6, r5\n\ - bcc _080187E8\n\ - bl _08019F76\n\ -_080187E8:\n\ - adds r0, r6, 0\n\ - bl CastformDataTypeChange\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ - cmp r0, 0\n\ - beq _080187FC\n\ - bl _08019E14\n\ -_080187FC:\n\ - adds r0, r6, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - ldr r0, _08018810 @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r6, r0\n\ - bcc _080187E8\n\ - bl _08019F76\n\ - .align 2, 0\n\ -_08018810: .4byte gNoOfAllBanks\n\ -_08018814:\n\ - ldr r2, _08018844 @ =gBattleMons\n\ - movs r0, 0x58\n\ - mov r1, r10\n\ - muls r1, r0\n\ - adds r4, r1, r2\n\ - ldrh r0, [r4, 0x28]\n\ - cmp r0, 0\n\ - bne _08018828\n\ - bl _08019F76\n\ -_08018828:\n\ - ldr r0, _08018848 @ =gBankAttacker\n\ - mov r3, r10\n\ - strb r3, [r0]\n\ - mov r3, r8\n\ - ldrb r5, [r3]\n\ - cmp r5, 0x2C\n\ - beq _0801885A\n\ - cmp r5, 0x2C\n\ - bgt _0801884C\n\ - cmp r5, 0x3\n\ - bne _08018840\n\ - b _080189B8\n\ -_08018840:\n\ - bl _08019F76\n\ - .align 2, 0\n\ -_08018844: .4byte gBattleMons\n\ -_08018848: .4byte gBankAttacker\n\ -_0801884C:\n\ - cmp r5, 0x36\n\ - bne _08018852\n\ - b _08018A18\n\ -_08018852:\n\ - cmp r5, 0x3D\n\ - beq _080188DC\n\ - bl _08019F76\n\ -_0801885A:\n\ - movs r0, 0\n\ - str r0, [sp]\n\ - movs r0, 0x13\n\ - movs r1, 0\n\ - movs r2, 0xD\n\ - movs r3, 0\n\ - bl AbilityBattleEffects\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0\n\ - beq _08018876\n\ - bl _08019F76\n\ -_08018876:\n\ - str r0, [sp]\n\ - movs r0, 0x13\n\ - movs r1, 0\n\ - movs r2, 0x4D\n\ - movs r3, 0\n\ - bl AbilityBattleEffects\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0801888E\n\ - bl _08019F76\n\ -_0801888E:\n\ - ldr r0, _080188D0 @ =gBattleWeather\n\ - ldrh r1, [r0]\n\ - movs r0, 0x7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0801889E\n\ - bl _08019F76\n\ -_0801889E:\n\ - ldrh r0, [r4, 0x2C]\n\ - ldrh r1, [r4, 0x28]\n\ - cmp r0, r1\n\ - bhi _080188AA\n\ - bl _08019F76\n\ -_080188AA:\n\ - mov r2, r8\n\ - strb r5, [r2]\n\ - ldr r0, _080188D4 @ =BattleScript_RainDishActivates\n\ - bl b_push_move_exec\n\ - ldr r1, _080188D8 @ =gBattleMoveDamage\n\ - ldrh r0, [r4, 0x2C]\n\ - lsrs r0, 4\n\ - str r0, [r1]\n\ - cmp r0, 0\n\ - bne _080188C4\n\ - movs r0, 0x1\n\ - str r0, [r1]\n\ -_080188C4:\n\ - ldr r0, [r1]\n\ - negs r0, r0\n\ - str r0, [r1]\n\ - bl _08019F22\n\ - .align 2, 0\n\ -_080188D0: .4byte gBattleWeather\n\ -_080188D4: .4byte BattleScript_RainDishActivates\n\ -_080188D8: .4byte gBattleMoveDamage\n\ -_080188DC:\n\ - adds r0, r2, 0\n\ - adds r0, 0x4C\n\ - adds r5, r1, r0\n\ - ldrb r0, [r5]\n\ - cmp r0, 0\n\ - bne _080188EC\n\ - bl _08019F76\n\ -_080188EC:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x3\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - cmp r4, 0\n\ - beq _08018906\n\ - bl _08019F76\n\ -_08018906:\n\ - ldr r0, [r5]\n\ - movs r1, 0x88\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08018918\n\ - ldr r0, _08018990 @ =gBattleTextBuff1\n\ - ldr r1, _08018994 @ =gStatusConditionString_PoisonJpn\n\ - bl StringCopy\n\ -_08018918:\n\ - ldr r0, [r5]\n\ - movs r1, 0x7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0801892A\n\ - ldr r0, _08018990 @ =gBattleTextBuff1\n\ - ldr r1, _08018998 @ =gStatusConditionString_SleepJpn\n\ - bl StringCopy\n\ -_0801892A:\n\ - ldr r0, [r5]\n\ - movs r1, 0x40\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0801893C\n\ - ldr r0, _08018990 @ =gBattleTextBuff1\n\ - ldr r1, _0801899C @ =gStatusConditionString_ParalysisJpn\n\ - bl StringCopy\n\ -_0801893C:\n\ - ldr r0, [r5]\n\ - movs r1, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0801894E\n\ - ldr r0, _08018990 @ =gBattleTextBuff1\n\ - ldr r1, _080189A0 @ =gStatusConditionString_BurnJpn\n\ - bl StringCopy\n\ -_0801894E:\n\ - ldr r0, [r5]\n\ - movs r1, 0x20\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08018960\n\ - ldr r0, _08018990 @ =gBattleTextBuff1\n\ - ldr r1, _080189A4 @ =gStatusConditionString_IceJpn\n\ - bl StringCopy\n\ -_08018960:\n\ - str r4, [r5]\n\ - ldr r0, _080189A8 @ =0x02000000\n\ - ldr r4, _080189AC @ =gActiveBank\n\ - mov r3, r10\n\ - strb r3, [r4]\n\ - ldr r1, _080189B0 @ =0x00016003\n\ - adds r0, r1\n\ - strb r3, [r0]\n\ - ldr r0, _080189B4 @ =BattleScript_ShedSkinActivates\n\ - bl b_push_move_exec\n\ - str r5, [sp]\n\ - movs r0, 0\n\ - movs r1, 0x28\n\ - movs r2, 0\n\ - movs r3, 0x4\n\ - bl EmitSetAttributes\n\ - ldrb r0, [r4]\n\ - bl MarkBufferBankForExecution\n\ - bl _08019F22\n\ - .align 2, 0\n\ -_08018990: .4byte gBattleTextBuff1\n\ -_08018994: .4byte gStatusConditionString_PoisonJpn\n\ -_08018998: .4byte gStatusConditionString_SleepJpn\n\ -_0801899C: .4byte gStatusConditionString_ParalysisJpn\n\ -_080189A0: .4byte gStatusConditionString_BurnJpn\n\ -_080189A4: .4byte gStatusConditionString_IceJpn\n\ -_080189A8: .4byte 0x02000000\n\ -_080189AC: .4byte gActiveBank\n\ -_080189B0: .4byte 0x00016003\n\ -_080189B4: .4byte BattleScript_ShedSkinActivates\n\ -_080189B8:\n\ - ldrb r2, [r4, 0x1B]\n\ - movs r0, 0x1B\n\ - ldrsb r0, [r4, r0]\n\ - cmp r0, 0xB\n\ - ble _080189C6\n\ - bl _08019F76\n\ -_080189C6:\n\ - ldr r0, _08018A04 @ =gDisableStructs\n\ - mov r3, r10\n\ - lsls r1, r3, 3\n\ - subs r1, r3\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x16]\n\ - cmp r0, 0x2\n\ - bne _080189DC\n\ - bl _08019F76\n\ -_080189DC:\n\ - adds r0, r2, 0x1\n\ - movs r2, 0\n\ - strb r0, [r4, 0x1B]\n\ - ldr r5, _08018A08 @ =0x000160a4\n\ - adds r1, r7, r5\n\ - movs r0, 0x11\n\ - strb r0, [r1]\n\ - ldr r1, _08018A0C @ =0x000160a5\n\ - adds r0, r7, r1\n\ - strb r2, [r0]\n\ - ldr r0, _08018A10 @ =BattleScript_SpeedBoostActivates\n\ - bl b_push_move_exec\n\ - ldr r2, _08018A14 @ =0x00016003\n\ - adds r0, r7, r2\n\ - mov r3, r10\n\ - strb r3, [r0]\n\ - bl _08019F22\n\ - .align 2, 0\n\ -_08018A04: .4byte gDisableStructs\n\ -_08018A08: .4byte 0x000160a4\n\ -_08018A0C: .4byte 0x000160a5\n\ -_08018A10: .4byte BattleScript_SpeedBoostActivates\n\ -_08018A14: .4byte 0x00016003\n\ -_08018A18:\n\ - ldr r2, _08018A3C @ =gDisableStructs\n\ - ldrb r0, [r0]\n\ - lsls r1, r0, 3\n\ - subs r1, r0\n\ - lsls r1, 2\n\ - adds r1, r2\n\ - ldrb r3, [r1, 0x18]\n\ - lsls r0, r3, 31\n\ - lsrs r0, 31\n\ - movs r2, 0x1\n\ - eors r2, r0\n\ - movs r0, 0x2\n\ - negs r0, r0\n\ - ands r0, r3\n\ - orrs r0, r2\n\ - strb r0, [r1, 0x18]\n\ - bl _08019F76\n\ - .align 2, 0\n\ -_08018A3C: .4byte gDisableStructs\n\ -_08018A40:\n\ - mov r5, r8\n\ - ldrb r0, [r5]\n\ - cmp r0, 0x2B\n\ - beq _08018A4C\n\ - bl _08019F76\n\ -_08018A4C:\n\ - movs r4, 0\n\ - ldr r0, _08018ABC @ =gSoundMovesTable\n\ - ldrh r2, [r0]\n\ - ldr r5, _08018AC0 @ =0x0000ffff\n\ - adds r1, r0, 0\n\ - cmp r2, r5\n\ - bne _08018A5E\n\ - bl _08019F76\n\ -_08018A5E:\n\ - cmp r2, r3\n\ - beq _08018A76\n\ - adds r2, r1, 0\n\ -_08018A64:\n\ - adds r2, 0x2\n\ - adds r4, 0x1\n\ - ldrh r0, [r2]\n\ - cmp r0, r5\n\ - bne _08018A72\n\ - bl _08019F76\n\ -_08018A72:\n\ - cmp r0, r3\n\ - bne _08018A64\n\ -_08018A76:\n\ - lsls r0, r4, 1\n\ - adds r0, r1\n\ - ldrh r1, [r0]\n\ - ldr r0, _08018AC0 @ =0x0000ffff\n\ - cmp r1, r0\n\ - bne _08018A86\n\ - bl _08019F76\n\ -_08018A86:\n\ - ldr r1, _08018AC4 @ =gBattleMons\n\ - ldr r0, _08018AC8 @ =gBankAttacker\n\ - ldrb r2, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r2\n\ - adds r1, 0x50\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x80\n\ - lsls r1, 5\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08018AAC\n\ - ldr r0, _08018ACC @ =gHitMarker\n\ - ldr r1, [r0]\n\ - movs r2, 0x80\n\ - lsls r2, 4\n\ - orrs r1, r2\n\ - str r1, [r0]\n\ -_08018AAC:\n\ - ldr r1, _08018AD0 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018AD4 @ =BattleScript_SoundproofProtected\n\ - str r0, [r1]\n\ - movs r0, 0x1\n\ - mov r9, r0\n\ - bl _08019F7C\n\ - .align 2, 0\n\ -_08018ABC: .4byte gSoundMovesTable\n\ -_08018AC0: .4byte 0x0000ffff\n\ -_08018AC4: .4byte gBattleMons\n\ -_08018AC8: .4byte gBankAttacker\n\ -_08018ACC: .4byte gHitMarker\n\ -_08018AD0: .4byte gBattlescriptCurrInstr\n\ -_08018AD4: .4byte BattleScript_SoundproofProtected\n\ -_08018AD8:\n\ - cmp r3, 0\n\ - bne _08018AE0\n\ - bl _08019F76\n\ -_08018AE0:\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - cmp r0, 0xB\n\ - beq _08018B50\n\ - cmp r0, 0xB\n\ - bgt _08018AF2\n\ - cmp r0, 0xA\n\ - beq _08018AF8\n\ - b _08018C6A\n\ -_08018AF2:\n\ - cmp r0, 0x12\n\ - beq _08018BA8\n\ - b _08018C6A\n\ -_08018AF8:\n\ - cmp r4, 0xD\n\ - beq _08018AFE\n\ - b _08018C6A\n\ -_08018AFE:\n\ - ldr r0, _08018B28 @ =gBattleMoves\n\ - lsls r1, r3, 1\n\ - adds r1, r3\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - cmp r0, 0\n\ - bne _08018B10\n\ - b _08018C6A\n\ -_08018B10:\n\ - ldr r1, _08018B2C @ =gProtectStructs\n\ - ldr r0, _08018B30 @ =gBankAttacker\n\ - ldrb r0, [r0]\n\ - lsls r0, 4\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x2]\n\ - lsls r0, 28\n\ - cmp r0, 0\n\ - bge _08018B3C\n\ - ldr r1, _08018B34 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018B38 @ =BattleScript_MoveHPDrain\n\ - b _08018B40\n\ - .align 2, 0\n\ -_08018B28: .4byte gBattleMoves\n\ -_08018B2C: .4byte gProtectStructs\n\ -_08018B30: .4byte gBankAttacker\n\ -_08018B34: .4byte gBattlescriptCurrInstr\n\ -_08018B38: .4byte BattleScript_MoveHPDrain\n\ -_08018B3C:\n\ - ldr r1, _08018B48 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018B4C @ =BattleScript_MoveHPDrain_PPLoss\n\ -_08018B40:\n\ - str r0, [r1]\n\ - movs r2, 0x1\n\ - b _08018C68\n\ - .align 2, 0\n\ -_08018B48: .4byte gBattlescriptCurrInstr\n\ -_08018B4C: .4byte BattleScript_MoveHPDrain_PPLoss\n\ -_08018B50:\n\ - cmp r4, 0xB\n\ - beq _08018B56\n\ - b _08018C6A\n\ -_08018B56:\n\ - ldr r0, _08018B80 @ =gBattleMoves\n\ - lsls r1, r3, 1\n\ - adds r1, r3\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - cmp r0, 0\n\ - bne _08018B68\n\ - b _08018C6A\n\ -_08018B68:\n\ - ldr r1, _08018B84 @ =gProtectStructs\n\ - ldr r0, _08018B88 @ =gBankAttacker\n\ - ldrb r0, [r0]\n\ - lsls r0, 4\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x2]\n\ - lsls r0, 28\n\ - cmp r0, 0\n\ - bge _08018B94\n\ - ldr r1, _08018B8C @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018B90 @ =BattleScript_MoveHPDrain\n\ - b _08018B98\n\ - .align 2, 0\n\ -_08018B80: .4byte gBattleMoves\n\ -_08018B84: .4byte gProtectStructs\n\ -_08018B88: .4byte gBankAttacker\n\ -_08018B8C: .4byte gBattlescriptCurrInstr\n\ -_08018B90: .4byte BattleScript_MoveHPDrain\n\ -_08018B94:\n\ - ldr r1, _08018BA0 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018BA4 @ =BattleScript_MoveHPDrain_PPLoss\n\ -_08018B98:\n\ - str r0, [r1]\n\ - movs r3, 0x1\n\ - mov r9, r3\n\ - b _08018C6A\n\ - .align 2, 0\n\ -_08018BA0: .4byte gBattlescriptCurrInstr\n\ -_08018BA4: .4byte BattleScript_MoveHPDrain_PPLoss\n\ -_08018BA8:\n\ - cmp r4, 0xA\n\ - bne _08018C6A\n\ - ldr r1, _08018BF4 @ =gBattleMons\n\ - movs r0, 0x58\n\ - mov r5, r10\n\ - muls r5, r0\n\ - adds r0, r5, 0\n\ - adds r1, 0x4C\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x20\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08018C6A\n\ - ldr r2, _08018BF8 @ =0x02017100\n\ - mov r0, r10\n\ - lsls r1, r0, 2\n\ - adds r0, r1, r2\n\ - ldr r3, [r0]\n\ - movs r4, 0x1\n\ - ands r3, r4\n\ - adds r5, r1, 0\n\ - cmp r3, 0\n\ - bne _08018C30\n\ - ldr r0, _08018BFC @ =gBattleCommunication\n\ - strb r3, [r0, 0x5]\n\ - ldr r1, _08018C00 @ =gProtectStructs\n\ - ldr r0, _08018C04 @ =gBankAttacker\n\ - ldrb r0, [r0]\n\ - lsls r0, 4\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x2]\n\ - lsls r0, 28\n\ - cmp r0, 0\n\ - bge _08018C10\n\ - ldr r1, _08018C08 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018C0C @ =BattleScript_FlashFireBoost\n\ - b _08018C14\n\ - .align 2, 0\n\ -_08018BF4: .4byte gBattleMons\n\ -_08018BF8: .4byte 0x02017100\n\ -_08018BFC: .4byte gBattleCommunication\n\ -_08018C00: .4byte gProtectStructs\n\ -_08018C04: .4byte gBankAttacker\n\ -_08018C08: .4byte gBattlescriptCurrInstr\n\ -_08018C0C: .4byte BattleScript_FlashFireBoost\n\ -_08018C10:\n\ - ldr r1, _08018C28 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018C2C @ =BattleScript_FlashFireBoost_PPLoss\n\ -_08018C14:\n\ - str r0, [r1]\n\ - adds r0, r5, r2\n\ - ldr r1, [r0]\n\ - movs r2, 0x1\n\ - orrs r1, r2\n\ - str r1, [r0]\n\ - movs r1, 0x2\n\ - mov r9, r1\n\ - b _08018C6A\n\ - .align 2, 0\n\ -_08018C28: .4byte gBattlescriptCurrInstr\n\ -_08018C2C: .4byte BattleScript_FlashFireBoost_PPLoss\n\ -_08018C30:\n\ - ldr r0, _08018C4C @ =gBattleCommunication\n\ - strb r4, [r0, 0x5]\n\ - ldr r1, _08018C50 @ =gProtectStructs\n\ - ldr r0, _08018C54 @ =gBankAttacker\n\ - ldrb r0, [r0]\n\ - lsls r0, 4\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x2]\n\ - lsls r0, 28\n\ - cmp r0, 0\n\ - bge _08018C60\n\ - ldr r1, _08018C58 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018C5C @ =BattleScript_FlashFireBoost\n\ - b _08018C64\n\ - .align 2, 0\n\ -_08018C4C: .4byte gBattleCommunication\n\ -_08018C50: .4byte gProtectStructs\n\ -_08018C54: .4byte gBankAttacker\n\ -_08018C58: .4byte gBattlescriptCurrInstr\n\ -_08018C5C: .4byte BattleScript_FlashFireBoost\n\ -_08018C60:\n\ - ldr r1, _08018CA4 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018CA8 @ =BattleScript_FlashFireBoost_PPLoss\n\ -_08018C64:\n\ - str r0, [r1]\n\ - movs r2, 0x2\n\ -_08018C68:\n\ - mov r9, r2\n\ -_08018C6A:\n\ - mov r3, r9\n\ - cmp r3, 0x1\n\ - beq _08018C74\n\ - bl _08019F76\n\ -_08018C74:\n\ - ldr r1, _08018CAC @ =gBattleMons\n\ - movs r0, 0x58\n\ - mov r5, r10\n\ - muls r5, r0\n\ - adds r0, r5, 0\n\ - adds r1, r0, r1\n\ - ldrh r0, [r1, 0x2C]\n\ - ldrh r2, [r1, 0x28]\n\ - cmp r0, r2\n\ - bne _08018CD0\n\ - ldr r1, _08018CB0 @ =gProtectStructs\n\ - ldr r0, _08018CB4 @ =gBankAttacker\n\ - ldrb r0, [r0]\n\ - lsls r0, 4\n\ - adds r0, r1\n\ - ldrb r0, [r0, 0x2]\n\ - lsls r0, 28\n\ - cmp r0, 0\n\ - bge _08018CBC\n\ - ldr r1, _08018CA4 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018CB8 @ =BattleScript_MoveHPDrain_FullHP\n\ - str r0, [r1]\n\ - bl _08019F76\n\ - .align 2, 0\n\ -_08018CA4: .4byte gBattlescriptCurrInstr\n\ -_08018CA8: .4byte BattleScript_FlashFireBoost_PPLoss\n\ -_08018CAC: .4byte gBattleMons\n\ -_08018CB0: .4byte gProtectStructs\n\ -_08018CB4: .4byte gBankAttacker\n\ -_08018CB8: .4byte BattleScript_MoveHPDrain_FullHP\n\ -_08018CBC:\n\ - ldr r1, _08018CC8 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018CCC @ =BattleScript_MoveHPDrain_FullHP_PPLoss\n\ - str r0, [r1]\n\ - bl _08019F76\n\ - .align 2, 0\n\ -_08018CC8: .4byte gBattlescriptCurrInstr\n\ -_08018CCC: .4byte BattleScript_MoveHPDrain_FullHP_PPLoss\n\ -_08018CD0:\n\ - ldr r2, _08018CEC @ =gBattleMoveDamage\n\ - ldrh r0, [r1, 0x2C]\n\ - lsrs r0, 2\n\ - str r0, [r2]\n\ - cmp r0, 0\n\ - bne _08018CE0\n\ - mov r3, r9\n\ - str r3, [r2]\n\ -_08018CE0:\n\ - ldr r0, [r2]\n\ - negs r0, r0\n\ - str r0, [r2]\n\ - bl _08019F76\n\ - .align 2, 0\n\ -_08018CEC: .4byte gBattleMoveDamage\n\ -_08018CF0:\n\ - mov r5, r8\n\ - ldrb r0, [r5]\n\ - subs r0, 0x9\n\ - cmp r0, 0x2F\n\ - bls _08018CFE\n\ - bl _08019F76\n\ -_08018CFE:\n\ - lsls r0, 2\n\ - ldr r1, _08018D08 @ =_08018D0C\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_08018D08: .4byte _08018D0C\n\ - .align 2, 0\n\ -_08018D0C:\n\ - .4byte _08019128\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08018DCC\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08018E94\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08018F54\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _0801904C\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019204\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _08019F76\n\ - .4byte _080192E0\n\ -_08018DCC:\n\ - ldr r0, _08018E74 @ =gBattleMoveFlags\n\ - ldrb r1, [r0]\n\ - movs r0, 0x29\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08018DDC\n\ - bl _08019F76\n\ -_08018DDC:\n\ - cmp r3, 0xA5\n\ - bne _08018DE4\n\ - bl _08019F76\n\ -_08018DE4:\n\ - ldr r0, _08018E78 @ =gBattleMoves\n\ - lsls r1, r3, 1\n\ - adds r1, r3\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - cmp r0, 0\n\ - bne _08018DF8\n\ - bl _08019F76\n\ -_08018DF8:\n\ - ldr r2, _08018E7C @ =gSpecialStatuses\n\ - ldr r0, _08018E80 @ =gBankTarget\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r1, r0, 2\n\ - adds r0, r2, 0\n\ - adds r0, 0x8\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08018E20\n\ - adds r0, r2, 0\n\ - adds r0, 0xC\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08018E20\n\ - bl _08019F76\n\ -_08018E20:\n\ - ldr r1, _08018E84 @ =gBattleMons\n\ - movs r0, 0x58\n\ - mov r2, r10\n\ - muls r2, r0\n\ - adds r0, r2, 0\n\ - adds r1, r0, r1\n\ - adds r3, r1, 0\n\ - adds r3, 0x21\n\ - ldrb r0, [r3]\n\ - cmp r0, r4\n\ - bne _08018E3A\n\ - bl _08019F76\n\ -_08018E3A:\n\ - adds r2, r1, 0\n\ - adds r2, 0x22\n\ - ldrb r0, [r2]\n\ - cmp r0, r4\n\ - bne _08018E48\n\ - bl _08019F76\n\ -_08018E48:\n\ - ldrh r0, [r1, 0x28]\n\ - cmp r0, 0\n\ - bne _08018E52\n\ - bl _08019F76\n\ -_08018E52:\n\ - strb r4, [r3]\n\ - strb r4, [r2]\n\ - ldr r1, _08018E88 @ =gBattleTextBuff1\n\ - movs r0, 0xFD\n\ - strb r0, [r1]\n\ - movs r0, 0x3\n\ - strb r0, [r1, 0x1]\n\ - strb r4, [r1, 0x2]\n\ - movs r0, 0xFF\n\ - strb r0, [r1, 0x3]\n\ - bl b_movescr_stack_push_cursor\n\ - ldr r1, _08018E8C @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018E90 @ =BattleScript_ColorChangeActivates\n\ - str r0, [r1]\n\ - bl _08019F22\n\ - .align 2, 0\n\ -_08018E74: .4byte gBattleMoveFlags\n\ -_08018E78: .4byte gBattleMoves\n\ -_08018E7C: .4byte gSpecialStatuses\n\ -_08018E80: .4byte gBankTarget\n\ -_08018E84: .4byte gBattleMons\n\ -_08018E88: .4byte gBattleTextBuff1\n\ -_08018E8C: .4byte gBattlescriptCurrInstr\n\ -_08018E90: .4byte BattleScript_ColorChangeActivates\n\ -_08018E94:\n\ - ldr r0, _08018F2C @ =gBattleMoveFlags\n\ - ldrb r1, [r0]\n\ - movs r0, 0x29\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08018EA4\n\ - bl _08019F76\n\ -_08018EA4:\n\ - ldr r1, _08018F30 @ =gBattleMons\n\ - ldr r0, _08018F34 @ =gBankAttacker\n\ - ldrb r2, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r2\n\ - adds r4, r0, r1\n\ - ldrh r0, [r4, 0x28]\n\ - cmp r0, 0\n\ - bne _08018EBA\n\ - bl _08019F76\n\ -_08018EBA:\n\ - ldr r0, _08018F38 @ =gProtectStructs\n\ - lsls r1, r2, 4\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - lsls r0, 31\n\ - cmp r0, 0\n\ - beq _08018ECC\n\ - bl _08019F76\n\ -_08018ECC:\n\ - ldr r2, _08018F3C @ =gSpecialStatuses\n\ - ldr r0, _08018F40 @ =gBankTarget\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r1, r0, 2\n\ - adds r0, r2, 0\n\ - adds r0, 0x8\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08018EF4\n\ - adds r0, r2, 0\n\ - adds r0, 0xC\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08018EF4\n\ - bl _08019F76\n\ -_08018EF4:\n\ - ldr r1, _08018F44 @ =gBattleMoves\n\ - lsls r0, r3, 1\n\ - adds r0, r3\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x8]\n\ - movs r2, 0x1\n\ - adds r0, r2, 0\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08018F0E\n\ - bl _08019F76\n\ -_08018F0E:\n\ - ldr r1, _08018F48 @ =gBattleMoveDamage\n\ - ldrh r0, [r4, 0x2C]\n\ - lsrs r0, 4\n\ - str r0, [r1]\n\ - cmp r0, 0\n\ - bne _08018F1C\n\ - str r2, [r1]\n\ -_08018F1C:\n\ - bl b_movescr_stack_push_cursor\n\ - ldr r1, _08018F4C @ =gBattlescriptCurrInstr\n\ - ldr r0, _08018F50 @ =BattleScript_RoughSkinActivates\n\ - str r0, [r1]\n\ - bl _08019F22\n\ - .align 2, 0\n\ -_08018F2C: .4byte gBattleMoveFlags\n\ -_08018F30: .4byte gBattleMons\n\ -_08018F34: .4byte gBankAttacker\n\ -_08018F38: .4byte gProtectStructs\n\ -_08018F3C: .4byte gSpecialStatuses\n\ -_08018F40: .4byte gBankTarget\n\ -_08018F44: .4byte gBattleMoves\n\ -_08018F48: .4byte gBattleMoveDamage\n\ -_08018F4C: .4byte gBattlescriptCurrInstr\n\ -_08018F50: .4byte BattleScript_RoughSkinActivates\n\ -_08018F54:\n\ - ldr r0, _08019020 @ =gBattleMoveFlags\n\ - ldrb r1, [r0]\n\ - movs r0, 0x29\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08018F64\n\ - bl _08019F76\n\ -_08018F64:\n\ - ldr r1, _08019024 @ =gBattleMons\n\ - ldr r0, _08019028 @ =gBankAttacker\n\ - ldrb r2, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r2\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - bne _08018F7A\n\ - bl _08019F76\n\ -_08018F7A:\n\ - ldr r0, _0801902C @ =gProtectStructs\n\ - lsls r1, r2, 4\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - lsls r0, 31\n\ - cmp r0, 0\n\ - beq _08018F8C\n\ - bl _08019F76\n\ -_08018F8C:\n\ - ldr r2, _08019030 @ =gSpecialStatuses\n\ - ldr r0, _08019034 @ =gBankTarget\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r1, r0, 2\n\ - adds r0, r2, 0\n\ - adds r0, 0x8\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08018FB4\n\ - adds r0, r2, 0\n\ - adds r0, 0xC\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08018FB4\n\ - bl _08019F76\n\ -_08018FB4:\n\ - ldr r1, _08019038 @ =gBattleMoves\n\ - lsls r0, r3, 1\n\ - adds r0, r3\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x8]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08018FCC\n\ - bl _08019F76\n\ -_08018FCC:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0xA\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - beq _08018FE4\n\ - bl _08019F76\n\ -_08018FE4:\n\ - ldr r5, _0801903C @ =gBattleCommunication\n\ - movs r4, 0x3\n\ -_08018FE8:\n\ - bl Random\n\ - ands r0, r4\n\ - strb r0, [r5, 0x3]\n\ - cmp r0, 0\n\ - beq _08018FE8\n\ - ldr r1, _0801903C @ =gBattleCommunication\n\ - ldrb r0, [r1, 0x3]\n\ - cmp r0, 0x3\n\ - bne _08019000\n\ - adds r0, 0x2\n\ - strb r0, [r1, 0x3]\n\ -_08019000:\n\ - ldrb r0, [r1, 0x3]\n\ - adds r0, 0x40\n\ - strb r0, [r1, 0x3]\n\ - bl b_movescr_stack_push_cursor\n\ - ldr r1, _08019040 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08019044 @ =BattleScript_ApplySecondaryEffect\n\ - str r0, [r1]\n\ - ldr r2, _08019048 @ =gHitMarker\n\ - ldr r0, [r2]\n\ - movs r1, 0x80\n\ - lsls r1, 6\n\ - orrs r0, r1\n\ - str r0, [r2]\n\ - bl _08019F22\n\ - .align 2, 0\n\ -_08019020: .4byte gBattleMoveFlags\n\ -_08019024: .4byte gBattleMons\n\ -_08019028: .4byte gBankAttacker\n\ -_0801902C: .4byte gProtectStructs\n\ -_08019030: .4byte gSpecialStatuses\n\ -_08019034: .4byte gBankTarget\n\ -_08019038: .4byte gBattleMoves\n\ -_0801903C: .4byte gBattleCommunication\n\ -_08019040: .4byte gBattlescriptCurrInstr\n\ -_08019044: .4byte BattleScript_ApplySecondaryEffect\n\ -_08019048: .4byte gHitMarker\n\ -_0801904C:\n\ - ldr r0, _080190FC @ =gBattleMoveFlags\n\ - ldrb r1, [r0]\n\ - movs r0, 0x29\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0801905C\n\ - bl _08019F76\n\ -_0801905C:\n\ - ldr r1, _08019100 @ =gBattleMons\n\ - ldr r0, _08019104 @ =gBankAttacker\n\ - ldrb r2, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r2\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - bne _08019072\n\ - bl _08019F76\n\ -_08019072:\n\ - ldr r0, _08019108 @ =gProtectStructs\n\ - lsls r1, r2, 4\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - lsls r0, 31\n\ - cmp r0, 0\n\ - beq _08019084\n\ - bl _08019F76\n\ -_08019084:\n\ - ldr r2, _0801910C @ =gSpecialStatuses\n\ - ldr r0, _08019110 @ =gBankTarget\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r1, r0, 2\n\ - adds r0, r2, 0\n\ - adds r0, 0x8\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _080190AC\n\ - adds r0, r2, 0\n\ - adds r0, 0xC\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _080190AC\n\ - bl _08019F76\n\ -_080190AC:\n\ - ldr r1, _08019114 @ =gBattleMoves\n\ - lsls r0, r3, 1\n\ - adds r0, r3\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x8]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080190C4\n\ - bl _08019F76\n\ -_080190C4:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x3\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - beq _080190DC\n\ - bl _08019F76\n\ -_080190DC:\n\ - ldr r1, _08019118 @ =gBattleCommunication\n\ - movs r0, 0x42\n\ - strb r0, [r1, 0x3]\n\ - bl b_movescr_stack_push_cursor\n\ - ldr r1, _0801911C @ =gBattlescriptCurrInstr\n\ - ldr r0, _08019120 @ =BattleScript_ApplySecondaryEffect\n\ - str r0, [r1]\n\ - ldr r2, _08019124 @ =gHitMarker\n\ - ldr r0, [r2]\n\ - movs r1, 0x80\n\ - lsls r1, 6\n\ - orrs r0, r1\n\ - str r0, [r2]\n\ - bl _08019F22\n\ - .align 2, 0\n\ -_080190FC: .4byte gBattleMoveFlags\n\ -_08019100: .4byte gBattleMons\n\ -_08019104: .4byte gBankAttacker\n\ -_08019108: .4byte gProtectStructs\n\ -_0801910C: .4byte gSpecialStatuses\n\ -_08019110: .4byte gBankTarget\n\ -_08019114: .4byte gBattleMoves\n\ -_08019118: .4byte gBattleCommunication\n\ -_0801911C: .4byte gBattlescriptCurrInstr\n\ -_08019120: .4byte BattleScript_ApplySecondaryEffect\n\ -_08019124: .4byte gHitMarker\n\ -_08019128:\n\ - ldr r0, _080191D8 @ =gBattleMoveFlags\n\ - ldrb r1, [r0]\n\ - movs r0, 0x29\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08019138\n\ - bl _08019F76\n\ -_08019138:\n\ - ldr r1, _080191DC @ =gBattleMons\n\ - ldr r0, _080191E0 @ =gBankAttacker\n\ - ldrb r2, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r2\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - bne _0801914E\n\ - bl _08019F76\n\ -_0801914E:\n\ - ldr r0, _080191E4 @ =gProtectStructs\n\ - lsls r1, r2, 4\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - lsls r0, 31\n\ - cmp r0, 0\n\ - beq _08019160\n\ - bl _08019F76\n\ -_08019160:\n\ - ldr r2, _080191E8 @ =gSpecialStatuses\n\ - ldr r0, _080191EC @ =gBankTarget\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r1, r0, 2\n\ - adds r0, r2, 0\n\ - adds r0, 0x8\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08019188\n\ - adds r0, r2, 0\n\ - adds r0, 0xC\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _08019188\n\ - bl _08019F76\n\ -_08019188:\n\ - ldr r1, _080191F0 @ =gBattleMoves\n\ - lsls r0, r3, 1\n\ - adds r0, r3\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x8]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080191A0\n\ - bl _08019F76\n\ -_080191A0:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x3\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - beq _080191B8\n\ - bl _08019F76\n\ -_080191B8:\n\ - ldr r1, _080191F4 @ =gBattleCommunication\n\ - movs r0, 0x45\n\ - strb r0, [r1, 0x3]\n\ - bl b_movescr_stack_push_cursor\n\ - ldr r1, _080191F8 @ =gBattlescriptCurrInstr\n\ - ldr r0, _080191FC @ =BattleScript_ApplySecondaryEffect\n\ - str r0, [r1]\n\ - ldr r2, _08019200 @ =gHitMarker\n\ - ldr r0, [r2]\n\ - movs r1, 0x80\n\ - lsls r1, 6\n\ - orrs r0, r1\n\ - str r0, [r2]\n\ - bl _08019F22\n\ - .align 2, 0\n\ -_080191D8: .4byte gBattleMoveFlags\n\ -_080191DC: .4byte gBattleMons\n\ -_080191E0: .4byte gBankAttacker\n\ -_080191E4: .4byte gProtectStructs\n\ -_080191E8: .4byte gSpecialStatuses\n\ -_080191EC: .4byte gBankTarget\n\ -_080191F0: .4byte gBattleMoves\n\ -_080191F4: .4byte gBattleCommunication\n\ -_080191F8: .4byte gBattlescriptCurrInstr\n\ -_080191FC: .4byte BattleScript_ApplySecondaryEffect\n\ -_08019200: .4byte gHitMarker\n\ -_08019204:\n\ - ldr r0, _080192B4 @ =gBattleMoveFlags\n\ - ldrb r1, [r0]\n\ - movs r0, 0x29\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _08019214\n\ - bl _08019F76\n\ -_08019214:\n\ - ldr r1, _080192B8 @ =gBattleMons\n\ - ldr r0, _080192BC @ =gBankAttacker\n\ - ldrb r2, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r2\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - bne _0801922A\n\ - bl _08019F76\n\ -_0801922A:\n\ - ldr r0, _080192C0 @ =gProtectStructs\n\ - lsls r1, r2, 4\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - lsls r0, 31\n\ - cmp r0, 0\n\ - beq _0801923C\n\ - bl _08019F76\n\ -_0801923C:\n\ - ldr r1, _080192C4 @ =gBattleMoves\n\ - lsls r0, r3, 1\n\ - adds r0, r3\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x8]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08019254\n\ - bl _08019F76\n\ -_08019254:\n\ - ldr r2, _080192C8 @ =gSpecialStatuses\n\ - ldr r0, _080192CC @ =gBankTarget\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r1, r0, 2\n\ - adds r0, r2, 0\n\ - adds r0, 0x8\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _0801927C\n\ - adds r0, r2, 0\n\ - adds r0, 0xC\n\ - adds r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _0801927C\n\ - bl _08019F76\n\ -_0801927C:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x3\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - beq _08019294\n\ - bl _08019F76\n\ -_08019294:\n\ - ldr r1, _080192D0 @ =gBattleCommunication\n\ - movs r0, 0x43\n\ - strb r0, [r1, 0x3]\n\ - bl b_movescr_stack_push_cursor\n\ - ldr r1, _080192D4 @ =gBattlescriptCurrInstr\n\ - ldr r0, _080192D8 @ =BattleScript_ApplySecondaryEffect\n\ - str r0, [r1]\n\ - ldr r2, _080192DC @ =gHitMarker\n\ - ldr r0, [r2]\n\ - movs r1, 0x80\n\ - lsls r1, 6\n\ - orrs r0, r1\n\ - str r0, [r2]\n\ - bl _08019F22\n\ - .align 2, 0\n\ -_080192B4: .4byte gBattleMoveFlags\n\ -_080192B8: .4byte gBattleMons\n\ -_080192BC: .4byte gBankAttacker\n\ -_080192C0: .4byte gProtectStructs\n\ -_080192C4: .4byte gBattleMoves\n\ -_080192C8: .4byte gSpecialStatuses\n\ -_080192CC: .4byte gBankTarget\n\ -_080192D0: .4byte gBattleCommunication\n\ -_080192D4: .4byte gBattlescriptCurrInstr\n\ -_080192D8: .4byte BattleScript_ApplySecondaryEffect\n\ -_080192DC: .4byte gHitMarker\n\ -_080192E0:\n\ - ldr r0, _08019420 @ =gBattleMoveFlags\n\ - ldrb r1, [r0]\n\ - movs r0, 0x29\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080192F0\n\ - bl _08019F76\n\ -_080192F0:\n\ - ldr r5, _08019424 @ =gBattleMons\n\ - ldr r7, _08019428 @ =gBankAttacker\n\ - ldrb r1, [r7]\n\ - movs r6, 0x58\n\ - adds r0, r1, 0\n\ - muls r0, r6\n\ - adds r0, r5\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - bne _08019308\n\ - bl _08019F76\n\ -_08019308:\n\ - ldr r0, _0801942C @ =gProtectStructs\n\ - lsls r1, 4\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x1]\n\ - lsls r0, 31\n\ - cmp r0, 0\n\ - beq _0801931A\n\ - bl _08019F76\n\ -_0801931A:\n\ - ldr r1, _08019430 @ =gBattleMoves\n\ - lsls r0, r3, 1\n\ - adds r0, r3\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldrb r1, [r0, 0x8]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08019332\n\ - bl _08019F76\n\ -_08019332:\n\ - ldr r3, _08019434 @ =gSpecialStatuses\n\ - ldr r0, _08019438 @ =gBankTarget\n\ - mov r8, r0\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r2, r0, 2\n\ - adds r0, r3, 0\n\ - adds r0, 0x8\n\ - adds r0, r2, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _0801935C\n\ - adds r0, r3, 0\n\ - adds r0, 0xC\n\ - adds r0, r2, r0\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - bne _0801935C\n\ - bl _08019F76\n\ -_0801935C:\n\ - adds r0, r1, 0\n\ - muls r0, r6\n\ - adds r0, r5\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - bne _0801936C\n\ - bl _08019F76\n\ -_0801936C:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x3\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - beq _08019384\n\ - bl _08019F76\n\ -_08019384:\n\ - ldrb r0, [r7]\n\ - muls r0, r6\n\ - adds r0, r5\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0xC\n\ - bne _08019396\n\ - bl _08019F76\n\ -_08019396:\n\ - ldr r0, [sp, 0x8]\n\ - ldr r1, [sp, 0x10]\n\ - bl GetGenderFromSpeciesAndPersonality\n\ - adds r4, r0, 0\n\ - ldr r0, [sp, 0xC]\n\ - ldr r1, [sp, 0x14]\n\ - bl GetGenderFromSpeciesAndPersonality\n\ - lsls r4, 24\n\ - lsls r0, 24\n\ - cmp r4, r0\n\ - bne _080193B4\n\ - bl _08019F76\n\ -_080193B4:\n\ - ldrb r0, [r7]\n\ - muls r0, r6\n\ - adds r4, r5, 0\n\ - adds r4, 0x50\n\ - adds r0, r4\n\ - ldr r0, [r0]\n\ - movs r1, 0xF0\n\ - lsls r1, 12\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080193CE\n\ - bl _08019F76\n\ -_080193CE:\n\ - ldr r0, [sp, 0x8]\n\ - ldr r1, [sp, 0x10]\n\ - bl GetGenderFromSpeciesAndPersonality\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0xFF\n\ - bne _080193E2\n\ - bl _08019F76\n\ -_080193E2:\n\ - ldr r0, [sp, 0xC]\n\ - ldr r1, [sp, 0x14]\n\ - bl GetGenderFromSpeciesAndPersonality\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0xFF\n\ - bne _080193F6\n\ - bl _08019F76\n\ -_080193F6:\n\ - ldrb r0, [r7]\n\ - adds r2, r0, 0\n\ - muls r2, r6\n\ - adds r2, r4\n\ - ldr r1, _0801943C @ =gBitTable\n\ - mov r3, r8\n\ - ldrb r0, [r3]\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldr r1, [r0]\n\ - lsls r1, 16\n\ - ldr r0, [r2]\n\ - orrs r0, r1\n\ - str r0, [r2]\n\ - bl b_movescr_stack_push_cursor\n\ - ldr r1, _08019440 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08019444 @ =BattleScript_CuteCharmActivates\n\ - str r0, [r1]\n\ - bl _08019F22\n\ - .align 2, 0\n\ -_08019420: .4byte gBattleMoveFlags\n\ -_08019424: .4byte gBattleMons\n\ -_08019428: .4byte gBankAttacker\n\ -_0801942C: .4byte gProtectStructs\n\ -_08019430: .4byte gBattleMoves\n\ -_08019434: .4byte gSpecialStatuses\n\ -_08019438: .4byte gBankTarget\n\ -_0801943C: .4byte gBitTable\n\ -_08019440: .4byte gBattlescriptCurrInstr\n\ -_08019444: .4byte BattleScript_CuteCharmActivates\n\ -_08019448:\n\ - movs r5, 0\n\ - mov r10, r5\n\ - ldr r0, _0801947C @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r10, r0\n\ - bcc _08019458\n\ - bl _08019F76\n\ -_08019458:\n\ - ldr r1, _08019480 @ =gBattleMons\n\ - movs r0, 0x58\n\ - mov r2, r10\n\ - muls r2, r0\n\ - adds r0, r2, 0\n\ - adds r0, r1\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - subs r0, 0x7\n\ - adds r2, r1, 0\n\ - cmp r0, 0x41\n\ - bls _08019472\n\ - b _080196D6\n\ -_08019472:\n\ - lsls r0, 2\n\ - ldr r1, _08019484 @ =_08019488\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_0801947C: .4byte gNoOfAllBanks\n\ -_08019480: .4byte gBattleMons\n\ -_08019484: .4byte _08019488\n\ - .align 2, 0\n\ -_08019488:\n\ - .4byte _080195EC\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196B0\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _08019614\n\ - .4byte _080196D6\n\ - .4byte _08019590\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080195BC\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _08019680\n\ - .4byte _08019650\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _080196D6\n\ - .4byte _08019614\n\ -_08019590:\n\ - movs r0, 0x58\n\ - mov r3, r10\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - adds r1, r2, 0\n\ - adds r1, 0x4C\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - ldr r1, _080195B0 @ =0x00000f88\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080195AA\n\ - b _080196D6\n\ -_080195AA:\n\ - ldr r0, _080195B4 @ =gBattleTextBuff1\n\ - ldr r1, _080195B8 @ =gStatusConditionString_PoisonJpn\n\ - b _0801969C\n\ - .align 2, 0\n\ -_080195B0: .4byte 0x00000f88\n\ -_080195B4: .4byte gBattleTextBuff1\n\ -_080195B8: .4byte gStatusConditionString_PoisonJpn\n\ -_080195BC:\n\ - movs r0, 0x58\n\ - mov r1, r10\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - adds r1, r2, 0\n\ - adds r1, 0x50\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080195D6\n\ - b _080196D6\n\ -_080195D6:\n\ - ldr r0, _080195E4 @ =gBattleTextBuff1\n\ - ldr r1, _080195E8 @ =gStatusConditionString_ConfusionJpn\n\ - bl StringCopy\n\ - movs r2, 0x2\n\ - mov r9, r2\n\ - b _080196DC\n\ - .align 2, 0\n\ -_080195E4: .4byte gBattleTextBuff1\n\ -_080195E8: .4byte gStatusConditionString_ConfusionJpn\n\ -_080195EC:\n\ - movs r0, 0x58\n\ - mov r3, r10\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - adds r1, r2, 0\n\ - adds r1, 0x4C\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x40\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080196D6\n\ - ldr r0, _0801960C @ =gBattleTextBuff1\n\ - ldr r1, _08019610 @ =gStatusConditionString_ParalysisJpn\n\ - b _0801969C\n\ - .align 2, 0\n\ -_0801960C: .4byte gBattleTextBuff1\n\ -_08019610: .4byte gStatusConditionString_ParalysisJpn\n\ -_08019614:\n\ - movs r0, 0x58\n\ - mov r3, r10\n\ - muls r3, r0\n\ - adds r0, r2, 0\n\ - adds r0, 0x4C\n\ - adds r0, r3, r0\n\ - ldr r0, [r0]\n\ - movs r1, 0x7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080196D6\n\ - adds r2, 0x50\n\ - adds r2, r3, r2\n\ - ldr r0, [r2]\n\ - ldr r1, _08019644 @ =0xf7ffffff\n\ - ands r0, r1\n\ - str r0, [r2]\n\ - ldr r0, _08019648 @ =gBattleTextBuff1\n\ - ldr r1, _0801964C @ =gStatusConditionString_SleepJpn\n\ - bl StringCopy\n\ - movs r0, 0x1\n\ - mov r9, r0\n\ - b _080196DC\n\ - .align 2, 0\n\ -_08019644: .4byte 0xf7ffffff\n\ -_08019648: .4byte gBattleTextBuff1\n\ -_0801964C: .4byte gStatusConditionString_SleepJpn\n\ -_08019650:\n\ - movs r0, 0x58\n\ - mov r1, r10\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - adds r1, r2, 0\n\ - adds r1, 0x4C\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080196D6\n\ - ldr r0, _08019678 @ =gBattleTextBuff1\n\ - ldr r1, _0801967C @ =gStatusConditionString_BurnJpn\n\ - bl StringCopy\n\ - movs r2, 0x1\n\ - mov r9, r2\n\ - b _080196DC\n\ - .align 2, 0\n\ -_08019678: .4byte gBattleTextBuff1\n\ -_0801967C: .4byte gStatusConditionString_BurnJpn\n\ -_08019680:\n\ - movs r0, 0x58\n\ - mov r3, r10\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - adds r1, r2, 0\n\ - adds r1, 0x4C\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x20\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080196D6\n\ - ldr r0, _080196A8 @ =gBattleTextBuff1\n\ - ldr r1, _080196AC @ =gStatusConditionString_IceJpn\n\ -_0801969C:\n\ - bl StringCopy\n\ - movs r5, 0x1\n\ - mov r9, r5\n\ - b _080196DC\n\ - .align 2, 0\n\ -_080196A8: .4byte gBattleTextBuff1\n\ -_080196AC: .4byte gStatusConditionString_IceJpn\n\ -_080196B0:\n\ - movs r0, 0x58\n\ - mov r1, r10\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - adds r1, r2, 0\n\ - adds r1, 0x50\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0xF0\n\ - lsls r1, 12\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080196D6\n\ - ldr r0, _080196EC @ =gBattleTextBuff1\n\ - ldr r1, _080196F0 @ =gStatusConditionString_LoveJpn\n\ - bl StringCopy\n\ - movs r2, 0x3\n\ - mov r9, r2\n\ -_080196D6:\n\ - mov r3, r9\n\ - cmp r3, 0\n\ - beq _08019798\n\ -_080196DC:\n\ - mov r5, r9\n\ - cmp r5, 0x2\n\ - beq _08019710\n\ - cmp r5, 0x2\n\ - bgt _080196F4\n\ - cmp r5, 0x1\n\ - beq _080196FC\n\ - b _0801973C\n\ - .align 2, 0\n\ -_080196EC: .4byte gBattleTextBuff1\n\ -_080196F0: .4byte gStatusConditionString_LoveJpn\n\ -_080196F4:\n\ - mov r0, r9\n\ - cmp r0, 0x3\n\ - beq _08019728\n\ - b _0801973C\n\ -_080196FC:\n\ - ldr r1, _0801970C @ =gBattleMons\n\ - movs r0, 0x58\n\ - mov r2, r10\n\ - muls r2, r0\n\ - adds r1, 0x4C\n\ - adds r2, r1\n\ - movs r0, 0\n\ - b _0801973A\n\ - .align 2, 0\n\ -_0801970C: .4byte gBattleMons\n\ -_08019710:\n\ - ldr r1, _08019724 @ =gBattleMons\n\ - movs r0, 0x58\n\ - mov r2, r10\n\ - muls r2, r0\n\ - adds r1, 0x50\n\ - adds r2, r1\n\ - ldr r0, [r2]\n\ - movs r1, 0x8\n\ - negs r1, r1\n\ - b _08019738\n\ - .align 2, 0\n\ -_08019724: .4byte gBattleMons\n\ -_08019728:\n\ - ldr r1, _08019778 @ =gBattleMons\n\ - movs r0, 0x58\n\ - mov r2, r10\n\ - muls r2, r0\n\ - adds r1, 0x50\n\ - adds r2, r1\n\ - ldr r0, [r2]\n\ - ldr r1, _0801977C @ =0xfff0ffff\n\ -_08019738:\n\ - ands r0, r1\n\ -_0801973A:\n\ - str r0, [r2]\n\ -_0801973C:\n\ - bl b_movescr_stack_push_cursor\n\ - ldr r1, _08019780 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08019784 @ =gUnknown_081D9956\n\ - str r0, [r1]\n\ - ldr r0, _08019788 @ =0x02000000\n\ - ldr r1, _0801978C @ =0x00016003\n\ - adds r0, r1\n\ - mov r2, r10\n\ - strb r2, [r0]\n\ - ldr r4, _08019790 @ =gActiveBank\n\ - strb r2, [r4]\n\ - ldrb r1, [r4]\n\ - movs r0, 0x58\n\ - muls r0, r1\n\ - ldr r1, _08019794 @ =gUnknown_02024ACC\n\ - adds r0, r1\n\ - str r0, [sp]\n\ - movs r0, 0\n\ - movs r1, 0x28\n\ - movs r2, 0\n\ - movs r3, 0x4\n\ - bl EmitSetAttributes\n\ - ldrb r0, [r4]\n\ - bl MarkBufferBankForExecution\n\ - bl _08019F92\n\ - .align 2, 0\n\ -_08019778: .4byte gBattleMons\n\ -_0801977C: .4byte 0xfff0ffff\n\ -_08019780: .4byte gBattlescriptCurrInstr\n\ -_08019784: .4byte gUnknown_081D9956\n\ -_08019788: .4byte 0x02000000\n\ -_0801978C: .4byte 0x00016003\n\ -_08019790: .4byte gActiveBank\n\ -_08019794: .4byte gUnknown_02024ACC\n\ -_08019798:\n\ - mov r0, r10\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ - ldr r0, _080197B0 @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r10, r0\n\ - bcs _080197AC\n\ - b _08019458\n\ -_080197AC:\n\ - bl _08019F76\n\ - .align 2, 0\n\ -_080197B0: .4byte gNoOfAllBanks\n\ -_080197B4:\n\ - movs r3, 0\n\ - mov r10, r3\n\ - ldr r0, _080197FC @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r10, r0\n\ - bcc _080197C2\n\ - b _08019F76\n\ -_080197C2:\n\ - ldr r4, _08019800 @ =gBattleMons\n\ -_080197C4:\n\ - movs r0, 0x58\n\ - mov r5, r10\n\ - muls r5, r0\n\ - adds r0, r5, 0\n\ - adds r0, r4\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x3B\n\ - bne _080197E8\n\ - mov r0, r10\n\ - bl CastformDataTypeChange\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ - cmp r0, 0\n\ - beq _080197E8\n\ - b _08019E40\n\ -_080197E8:\n\ - mov r0, r10\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ - ldr r0, _080197FC @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r10, r0\n\ - bcc _080197C4\n\ - b _08019F76\n\ - .align 2, 0\n\ -_080197FC: .4byte gNoOfAllBanks\n\ -_08019800: .4byte gBattleMons\n\ -_08019804:\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x1C\n\ - beq _0801980E\n\ - b _08019F76\n\ -_0801980E:\n\ - ldr r4, _08019860 @ =gHitMarker\n\ - ldr r1, [r4]\n\ - movs r0, 0x80\n\ - lsls r0, 7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0801981E\n\ - b _08019F76\n\ -_0801981E:\n\ - ldr r0, _08019864 @ =0xffffbfff\n\ - ands r1, r0\n\ - str r1, [r4]\n\ - ldr r3, _08019868 @ =0x000160ca\n\ - adds r2, r7, r3\n\ - ldrb r1, [r2]\n\ - movs r0, 0x3F\n\ - ands r0, r1\n\ - strb r0, [r2]\n\ - cmp r0, 0x6\n\ - bne _08019838\n\ - movs r0, 0x2\n\ - strb r0, [r2]\n\ -_08019838:\n\ - ldr r1, _0801986C @ =gBattleCommunication\n\ - ldrb r0, [r2]\n\ - adds r0, 0x40\n\ - strb r0, [r1, 0x3]\n\ - ldr r0, _08019870 @ =gBankTarget\n\ - ldrb r1, [r0]\n\ - ldr r5, _08019874 @ =0x00016003\n\ - adds r0, r7, r5\n\ - strb r1, [r0]\n\ - bl b_movescr_stack_push_cursor\n\ - ldr r1, _08019878 @ =gBattlescriptCurrInstr\n\ - ldr r0, _0801987C @ =BattleScript_SynchronizeActivates\n\ - str r0, [r1]\n\ - ldr r0, [r4]\n\ - movs r1, 0x80\n\ - lsls r1, 6\n\ - orrs r0, r1\n\ - str r0, [r4]\n\ - b _08019F22\n\ - .align 2, 0\n\ -_08019860: .4byte gHitMarker\n\ -_08019864: .4byte 0xffffbfff\n\ -_08019868: .4byte 0x000160ca\n\ -_0801986C: .4byte gBattleCommunication\n\ -_08019870: .4byte gBankTarget\n\ -_08019874: .4byte 0x00016003\n\ -_08019878: .4byte gBattlescriptCurrInstr\n\ -_0801987C: .4byte BattleScript_SynchronizeActivates\n\ -_08019880:\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x1C\n\ - beq _0801988A\n\ - b _08019F76\n\ -_0801988A:\n\ - ldr r4, _080198DC @ =gHitMarker\n\ - ldr r1, [r4]\n\ - movs r0, 0x80\n\ - lsls r0, 7\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0801989A\n\ - b _08019F76\n\ -_0801989A:\n\ - ldr r0, _080198E0 @ =0xffffbfff\n\ - ands r1, r0\n\ - str r1, [r4]\n\ - ldr r3, _080198E4 @ =0x000160ca\n\ - adds r2, r7, r3\n\ - ldrb r1, [r2]\n\ - movs r0, 0x3F\n\ - ands r0, r1\n\ - strb r0, [r2]\n\ - cmp r0, 0x6\n\ - bne _080198B4\n\ - movs r0, 0x2\n\ - strb r0, [r2]\n\ -_080198B4:\n\ - ldr r1, _080198E8 @ =gBattleCommunication\n\ - ldrb r0, [r2]\n\ - strb r0, [r1, 0x3]\n\ - ldr r0, _080198EC @ =gBankAttacker\n\ - ldrb r1, [r0]\n\ - ldr r5, _080198F0 @ =0x00016003\n\ - adds r0, r7, r5\n\ - strb r1, [r0]\n\ - bl b_movescr_stack_push_cursor\n\ - ldr r1, _080198F4 @ =gBattlescriptCurrInstr\n\ - ldr r0, _080198F8 @ =BattleScript_SynchronizeActivates\n\ - str r0, [r1]\n\ - ldr r0, [r4]\n\ - movs r1, 0x80\n\ - lsls r1, 6\n\ - orrs r0, r1\n\ - str r0, [r4]\n\ - b _08019F22\n\ - .align 2, 0\n\ -_080198DC: .4byte gHitMarker\n\ -_080198E0: .4byte 0xffffbfff\n\ -_080198E4: .4byte 0x000160ca\n\ -_080198E8: .4byte gBattleCommunication\n\ -_080198EC: .4byte gBankAttacker\n\ -_080198F0: .4byte 0x00016003\n\ -_080198F4: .4byte gBattlescriptCurrInstr\n\ -_080198F8: .4byte BattleScript_SynchronizeActivates\n\ -_080198FC:\n\ - movs r4, 0\n\ - ldr r0, _08019934 @ =gNoOfAllBanks\n\ - ldrb r1, [r0]\n\ - cmp r4, r1\n\ - blt _08019908\n\ - b _08019F76\n\ -_08019908:\n\ - ldr r0, _08019938 @ =gBattleMons\n\ - adds r5, r1, 0\n\ - ldr r2, _0801993C @ =gStatuses3\n\ - adds r3, r0, 0\n\ - adds r3, 0x20\n\ - movs r6, 0x80\n\ - lsls r6, 12\n\ -_08019916:\n\ - ldrb r1, [r3]\n\ - cmp r1, 0x16\n\ - bne _08019926\n\ - ldr r0, [r2]\n\ - ands r0, r6\n\ - cmp r0, 0\n\ - beq _08019926\n\ - b _08019E6C\n\ -_08019926:\n\ - adds r2, 0x4\n\ - adds r3, 0x58\n\ - adds r4, 0x1\n\ - cmp r4, r5\n\ - blt _08019916\n\ - b _08019F76\n\ - .align 2, 0\n\ -_08019934: .4byte gNoOfAllBanks\n\ -_08019938: .4byte gBattleMons\n\ -_0801993C: .4byte gStatuses3\n\ -_08019940:\n\ - movs r4, 0\n\ - ldr r0, _08019A1C @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _0801994C\n\ - b _08019F76\n\ -_0801994C:\n\ - ldr r0, _08019A20 @ =gActiveBank\n\ - mov r8, r0\n\ - ldr r1, _08019A24 @ =gBattleMons\n\ - adds r1, 0x20\n\ - str r1, [sp, 0x1C]\n\ - movs r2, 0\n\ - str r2, [sp, 0x20]\n\ -_0801995A:\n\ - ldr r3, [sp, 0x1C]\n\ - ldrb r0, [r3]\n\ - cmp r0, 0x24\n\ - beq _08019964\n\ - b _08019AF6\n\ -_08019964:\n\ - ldr r0, _08019A28 @ =gStatuses3\n\ - ldr r5, [sp, 0x20]\n\ - adds r0, r5, r0\n\ - ldr r1, [r0]\n\ - movs r0, 0x80\n\ - lsls r0, 13\n\ - ands r1, r0\n\ - str r5, [sp, 0x18]\n\ - cmp r1, 0\n\ - bne _0801997A\n\ - b _08019AF6\n\ -_0801997A:\n\ - lsls r0, r4, 24\n\ - lsrs r0, 24\n\ - bl GetBankIdentity\n\ - movs r1, 0x1\n\ - adds r5, r0, 0\n\ - eors r5, r1\n\ - ands r5, r1\n\ - adds r0, r5, 0\n\ - bl GetBankByPlayerAI\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - adds r0, r5, 0x2\n\ - bl GetBankByPlayerAI\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - ldr r0, _08019A2C @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - movs r2, 0x1\n\ - adds r0, r2, 0\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080199AE\n\ - b _08019ABC\n\ -_080199AE:\n\ - movs r1, 0x58\n\ - adds r0, r6, 0\n\ - muls r0, r1\n\ - ldr r3, _08019A24 @ =gBattleMons\n\ - adds r1, r0, r3\n\ - adds r0, r1, 0\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _08019A78\n\ - ldrh r0, [r1, 0x28]\n\ - cmp r0, 0\n\ - beq _08019A34\n\ - movs r1, 0x58\n\ - adds r0, r7, 0\n\ - muls r0, r1\n\ - adds r1, r0, r3\n\ - adds r0, r1, 0\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _08019A34\n\ - ldrh r0, [r1, 0x28]\n\ - cmp r0, 0\n\ - beq _08019A34\n\ - str r2, [sp, 0x24]\n\ - bl Random\n\ - ldr r2, [sp, 0x24]\n\ - adds r1, r2, 0\n\ - ands r1, r0\n\ - lsls r1, 1\n\ - orrs r5, r1\n\ - adds r0, r5, 0\n\ - bl GetBankByPlayerAI\n\ - mov r2, r8\n\ - strb r0, [r2]\n\ - ldrb r0, [r2]\n\ - movs r3, 0x58\n\ - muls r0, r3\n\ - ldr r5, _08019A24 @ =gBattleMons\n\ - adds r0, r5\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - ldr r1, [sp, 0x1C]\n\ - strb r0, [r1]\n\ - ldrb r0, [r2]\n\ - muls r0, r3\n\ - adds r0, r5\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - ldr r2, _08019A30 @ =gLastUsedAbility\n\ - strb r0, [r2]\n\ - b _08019AE4\n\ - .align 2, 0\n\ -_08019A1C: .4byte gNoOfAllBanks\n\ -_08019A20: .4byte gActiveBank\n\ -_08019A24: .4byte gBattleMons\n\ -_08019A28: .4byte gStatuses3\n\ -_08019A2C: .4byte gBattleTypeFlags\n\ -_08019A30: .4byte gLastUsedAbility\n\ -_08019A34:\n\ - ldr r3, _08019A74 @ =gBattleMons\n\ - movs r2, 0x58\n\ - adds r0, r6, 0\n\ - muls r0, r2\n\ - adds r1, r0, r3\n\ - adds r0, r1, 0\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _08019A78\n\ - ldrh r0, [r1, 0x28]\n\ - cmp r0, 0\n\ - beq _08019A78\n\ - mov r5, r8\n\ - strb r6, [r5]\n\ - adds r1, r4, 0\n\ - muls r1, r2\n\ - adds r1, r3\n\ - ldrb r0, [r5]\n\ - muls r0, r2\n\ - adds r0, r3\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - adds r1, 0x20\n\ - strb r0, [r1]\n\ - ldrb r0, [r5]\n\ - muls r0, r2\n\ - adds r0, r3\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - b _08019AE0\n\ - .align 2, 0\n\ -_08019A74: .4byte gBattleMons\n\ -_08019A78:\n\ - ldr r3, _08019AB8 @ =gBattleMons\n\ - movs r2, 0x58\n\ - adds r0, r7, 0\n\ - muls r0, r2\n\ - adds r1, r0, r3\n\ - adds r0, r1, 0\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _08019AEE\n\ - ldrh r0, [r1, 0x28]\n\ - cmp r0, 0\n\ - beq _08019AEE\n\ - mov r5, r8\n\ - strb r7, [r5]\n\ - adds r1, r4, 0\n\ - muls r1, r2\n\ - adds r1, r3\n\ - ldrb r0, [r5]\n\ - muls r0, r2\n\ - adds r0, r3\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - adds r1, 0x20\n\ - strb r0, [r1]\n\ - ldrb r0, [r5]\n\ - muls r0, r2\n\ - adds r0, r3\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - b _08019AE0\n\ - .align 2, 0\n\ -_08019AB8: .4byte gBattleMons\n\ -_08019ABC:\n\ - mov r2, r8\n\ - strb r6, [r2]\n\ - movs r3, 0x58\n\ - adds r0, r6, 0\n\ - muls r0, r3\n\ - ldr r5, _08019B10 @ =gBattleMons\n\ - adds r0, r5\n\ - adds r2, r0, 0\n\ - adds r2, 0x20\n\ - ldrb r1, [r2]\n\ - cmp r1, 0\n\ - beq _08019AEE\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - beq _08019AEE\n\ - ldr r0, [sp, 0x1C]\n\ - strb r1, [r0]\n\ - ldrb r0, [r2]\n\ -_08019AE0:\n\ - ldr r1, _08019B14 @ =gLastUsedAbility\n\ - strb r0, [r1]\n\ -_08019AE4:\n\ - mov r0, r9\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_08019AEE:\n\ - mov r2, r9\n\ - cmp r2, 0\n\ - beq _08019AF6\n\ - b _08019E88\n\ -_08019AF6:\n\ - ldr r3, [sp, 0x1C]\n\ - adds r3, 0x58\n\ - str r3, [sp, 0x1C]\n\ - ldr r5, [sp, 0x20]\n\ - adds r5, 0x4\n\ - str r5, [sp, 0x20]\n\ - adds r4, 0x1\n\ - ldr r0, _08019B18 @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - bge _08019B0E\n\ - b _0801995A\n\ -_08019B0E:\n\ - b _08019F76\n\ - .align 2, 0\n\ -_08019B10: .4byte gBattleMons\n\ -_08019B14: .4byte gLastUsedAbility\n\ -_08019B18: .4byte gNoOfAllBanks\n\ -_08019B1C:\n\ - movs r4, 0\n\ - ldr r0, _08019B54 @ =gNoOfAllBanks\n\ - ldrb r1, [r0]\n\ - cmp r4, r1\n\ - blt _08019B28\n\ - b _08019F76\n\ -_08019B28:\n\ - ldr r0, _08019B58 @ =gBattleMons\n\ - adds r5, r1, 0\n\ - ldr r2, _08019B5C @ =gStatuses3\n\ - adds r3, r0, 0\n\ - adds r3, 0x20\n\ - movs r6, 0x80\n\ - lsls r6, 12\n\ -_08019B36:\n\ - ldrb r1, [r3]\n\ - cmp r1, 0x16\n\ - bne _08019B46\n\ - ldr r0, [r2]\n\ - ands r0, r6\n\ - cmp r0, 0\n\ - beq _08019B46\n\ - b _08019F04\n\ -_08019B46:\n\ - adds r2, 0x4\n\ - adds r3, 0x58\n\ - adds r4, 0x1\n\ - cmp r4, r5\n\ - blt _08019B36\n\ - b _08019F76\n\ - .align 2, 0\n\ -_08019B54: .4byte gNoOfAllBanks\n\ -_08019B58: .4byte gBattleMons\n\ -_08019B5C: .4byte gStatuses3\n\ -_08019B60:\n\ - mov r0, r10\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - movs r4, 0\n\ - ldr r0, _08019BB0 @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08019B76\n\ - b _08019F76\n\ -_08019B76:\n\ - ldr r7, _08019BB4 @ =gBattleMons\n\ -_08019B78:\n\ - lsls r0, r4, 24\n\ - lsrs r0, 24\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - adds r3, r4, 0x1\n\ - cmp r0, r5\n\ - beq _08019BA2\n\ - movs r0, 0x58\n\ - muls r0, r4\n\ - adds r0, r7\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, r6\n\ - bne _08019BA2\n\ - ldr r0, _08019BB8 @ =gLastUsedAbility\n\ - strb r6, [r0]\n\ - lsls r0, r3, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_08019BA2:\n\ - adds r4, r3, 0\n\ - ldr r0, _08019BB0 @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08019B78\n\ - b _08019F76\n\ - .align 2, 0\n\ -_08019BB0: .4byte gNoOfAllBanks\n\ -_08019BB4: .4byte gBattleMons\n\ -_08019BB8: .4byte gLastUsedAbility\n\ -_08019BBC:\n\ - mov r0, r10\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - movs r4, 0\n\ - ldr r0, _08019C0C @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08019BD2\n\ - b _08019F76\n\ -_08019BD2:\n\ - ldr r7, _08019C10 @ =gBattleMons\n\ -_08019BD4:\n\ - lsls r0, r4, 24\n\ - lsrs r0, 24\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - adds r3, r4, 0x1\n\ - cmp r0, r5\n\ - bne _08019BFE\n\ - movs r0, 0x58\n\ - muls r0, r4\n\ - adds r0, r7\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, r6\n\ - bne _08019BFE\n\ - ldr r0, _08019C14 @ =gLastUsedAbility\n\ - strb r6, [r0]\n\ - lsls r0, r3, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_08019BFE:\n\ - adds r4, r3, 0\n\ - ldr r0, _08019C0C @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08019BD4\n\ - b _08019F76\n\ - .align 2, 0\n\ -_08019C0C: .4byte gNoOfAllBanks\n\ -_08019C10: .4byte gBattleMons\n\ -_08019C14: .4byte gLastUsedAbility\n\ -_08019C18:\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - cmp r0, 0xFD\n\ - beq _08019C40\n\ - cmp r0, 0xFE\n\ - beq _08019C78\n\ - movs r4, 0\n\ - ldr r0, _08019C38 @ =gNoOfAllBanks\n\ - adds r5, r0, 0\n\ - ldrb r2, [r5]\n\ - cmp r4, r2\n\ - blt _08019C32\n\ - b _08019F76\n\ -_08019C32:\n\ - ldr r2, _08019C3C @ =gBattleMons\n\ - b _08019CB0\n\ - .align 2, 0\n\ -_08019C38: .4byte gNoOfAllBanks\n\ -_08019C3C: .4byte gBattleMons\n\ -_08019C40:\n\ - movs r4, 0\n\ - ldr r0, _08019C70 @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08019C4C\n\ - b _08019F76\n\ -_08019C4C:\n\ - ldr r5, _08019C74 @ =gStatuses3\n\ - movs r2, 0x80\n\ - lsls r2, 9\n\ - adds r1, r0, 0\n\ -_08019C54:\n\ - lsls r0, r4, 2\n\ - adds r0, r5\n\ - ldr r0, [r0]\n\ - ands r0, r2\n\ - adds r3, r4, 0x1\n\ - cmp r0, 0\n\ - beq _08019C68\n\ - lsls r0, r3, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_08019C68:\n\ - adds r4, r3, 0\n\ - cmp r4, r1\n\ - blt _08019C54\n\ - b _08019F76\n\ - .align 2, 0\n\ -_08019C70: .4byte gNoOfAllBanks\n\ -_08019C74: .4byte gStatuses3\n\ -_08019C78:\n\ - movs r4, 0\n\ - ldr r0, _08019CA8 @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08019C84\n\ - b _08019F76\n\ -_08019C84:\n\ - ldr r5, _08019CAC @ =gStatuses3\n\ - movs r2, 0x80\n\ - lsls r2, 10\n\ - adds r1, r0, 0\n\ -_08019C8C:\n\ - lsls r0, r4, 2\n\ - adds r0, r5\n\ - ldr r0, [r0]\n\ - ands r0, r2\n\ - adds r3, r4, 0x1\n\ - cmp r0, 0\n\ - beq _08019CA0\n\ - lsls r0, r3, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_08019CA0:\n\ - adds r4, r3, 0\n\ - cmp r4, r1\n\ - blt _08019C8C\n\ - b _08019F76\n\ - .align 2, 0\n\ -_08019CA8: .4byte gNoOfAllBanks\n\ -_08019CAC: .4byte gStatuses3\n\ -_08019CB0:\n\ - movs r0, 0x58\n\ - muls r0, r4\n\ - adds r0, r2\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - adds r3, r4, 0x1\n\ - cmp r0, r6\n\ - bne _08019CCA\n\ - mov r0, r8\n\ - strb r6, [r0]\n\ - lsls r0, r3, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_08019CCA:\n\ - adds r4, r3, 0\n\ - ldrb r1, [r5]\n\ - cmp r4, r1\n\ - blt _08019CB0\n\ - b _08019F76\n\ -_08019CD4:\n\ - movs r4, 0\n\ - ldr r0, _08019D10 @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08019CE0\n\ - b _08019F76\n\ -_08019CE0:\n\ - ldr r7, _08019D14 @ =gBattleMons\n\ - adds r2, r0, 0\n\ - movs r5, 0x58\n\ -_08019CE6:\n\ - adds r0, r4, 0\n\ - muls r0, r5\n\ - adds r1, r0, r7\n\ - adds r0, r1, 0\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - adds r3, r4, 0x1\n\ - cmp r0, r6\n\ - bne _08019D08\n\ - ldrh r0, [r1, 0x28]\n\ - cmp r0, 0\n\ - beq _08019D08\n\ - mov r0, r8\n\ - strb r6, [r0]\n\ - lsls r0, r3, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_08019D08:\n\ - adds r4, r3, 0\n\ - cmp r4, r2\n\ - blt _08019CE6\n\ - b _08019F76\n\ - .align 2, 0\n\ -_08019D10: .4byte gNoOfAllBanks\n\ -_08019D14: .4byte gBattleMons\n\ -_08019D18:\n\ - movs r4, 0\n\ - ldr r0, _08019D50 @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08019D24\n\ - b _08019F76\n\ -_08019D24:\n\ - ldr r7, _08019D54 @ =gBattleMons\n\ - adds r1, r0, 0\n\ - movs r5, 0x58\n\ - ldr r2, _08019D58 @ =gLastUsedAbility\n\ -_08019D2C:\n\ - adds r0, r4, 0\n\ - muls r0, r5\n\ - adds r0, r7\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - adds r3, r4, 0x1\n\ - cmp r0, r6\n\ - bne _08019D48\n\ - cmp r4, r10\n\ - beq _08019D48\n\ - strb r6, [r2]\n\ - lsls r0, r3, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_08019D48:\n\ - adds r4, r3, 0\n\ - cmp r4, r1\n\ - blt _08019D2C\n\ - b _08019F76\n\ - .align 2, 0\n\ -_08019D50: .4byte gNoOfAllBanks\n\ -_08019D54: .4byte gBattleMons\n\ -_08019D58: .4byte gLastUsedAbility\n\ -_08019D5C:\n\ - mov r0, r10\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - movs r4, 0\n\ - ldr r0, _08019DAC @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08019D72\n\ - b _08019F76\n\ -_08019D72:\n\ - ldr r7, _08019DB0 @ =gBattleMons\n\ -_08019D74:\n\ - lsls r0, r4, 24\n\ - lsrs r0, 24\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, r5\n\ - beq _08019DA0\n\ - movs r0, 0x58\n\ - muls r0, r4\n\ - adds r0, r7\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, r6\n\ - bne _08019DA0\n\ - ldr r0, _08019DB4 @ =gLastUsedAbility\n\ - strb r6, [r0]\n\ - mov r0, r9\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_08019DA0:\n\ - adds r4, 0x1\n\ - ldr r0, _08019DAC @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08019D74\n\ - b _08019F76\n\ - .align 2, 0\n\ -_08019DAC: .4byte gNoOfAllBanks\n\ -_08019DB0: .4byte gBattleMons\n\ -_08019DB4: .4byte gLastUsedAbility\n\ -_08019DB8:\n\ - mov r0, r10\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - movs r4, 0\n\ - ldr r0, _08019E08 @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08019DCE\n\ - b _08019F76\n\ -_08019DCE:\n\ - ldr r7, _08019E0C @ =gBattleMons\n\ -_08019DD0:\n\ - lsls r0, r4, 24\n\ - lsrs r0, 24\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, r5\n\ - bne _08019DFC\n\ - movs r0, 0x58\n\ - muls r0, r4\n\ - adds r0, r7\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, r6\n\ - bne _08019DFC\n\ - ldr r0, _08019E10 @ =gLastUsedAbility\n\ - strb r6, [r0]\n\ - mov r0, r9\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_08019DFC:\n\ - adds r4, 0x1\n\ - ldr r0, _08019E08 @ =gNoOfAllBanks\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt _08019DD0\n\ - b _08019F76\n\ - .align 2, 0\n\ -_08019E08: .4byte gNoOfAllBanks\n\ -_08019E0C: .4byte gBattleMons\n\ -_08019E10: .4byte gLastUsedAbility\n\ -_08019E14:\n\ - ldr r0, _08019E30 @ =BattleScript_CastformChange\n\ - bl b_push_move_exec\n\ - ldr r0, _08019E34 @ =0x02000000\n\ - ldr r2, _08019E38 @ =0x00016003\n\ - adds r1, r0, r2\n\ - strb r6, [r1]\n\ - mov r1, r9\n\ - subs r1, 0x1\n\ - ldr r3, _08019E3C @ =0x0001609b\n\ - adds r0, r3\n\ - strb r1, [r0]\n\ - b _08019F76\n\ - .align 2, 0\n\ -_08019E30: .4byte BattleScript_CastformChange\n\ -_08019E34: .4byte 0x02000000\n\ -_08019E38: .4byte 0x00016003\n\ -_08019E3C: .4byte 0x0001609b\n\ -_08019E40:\n\ - ldr r0, _08019E5C @ =BattleScript_CastformChange\n\ - bl b_push_move_exec\n\ - ldr r0, _08019E60 @ =0x02000000\n\ - ldr r5, _08019E64 @ =0x00016003\n\ - adds r1, r0, r5\n\ - mov r2, r10\n\ - strb r2, [r1]\n\ - mov r1, r9\n\ - subs r1, 0x1\n\ - ldr r3, _08019E68 @ =0x0001609b\n\ - adds r0, r3\n\ - strb r1, [r0]\n\ - b _08019F92\n\ - .align 2, 0\n\ -_08019E5C: .4byte BattleScript_CastformChange\n\ -_08019E60: .4byte 0x02000000\n\ -_08019E64: .4byte 0x00016003\n\ -_08019E68: .4byte 0x0001609b\n\ -_08019E6C:\n\ - mov r5, r8\n\ - strb r1, [r5]\n\ - ldr r0, [r2]\n\ - ldr r1, _08019E80 @ =0xfff7ffff\n\ - ands r0, r1\n\ - str r0, [r2]\n\ - ldr r0, _08019E84 @ =gUnknown_081D978C\n\ - bl b_push_move_exec\n\ - b _08019F1A\n\ - .align 2, 0\n\ -_08019E80: .4byte 0xfff7ffff\n\ -_08019E84: .4byte gUnknown_081D978C\n\ -_08019E88:\n\ - ldr r0, _08019EDC @ =BattleScript_TraceActivates\n\ - bl b_push_move_exec\n\ - ldr r1, _08019EE0 @ =gStatuses3\n\ - ldr r2, [sp, 0x18]\n\ - adds r1, r2, r1\n\ - ldr r0, [r1]\n\ - ldr r2, _08019EE4 @ =0xffefffff\n\ - ands r0, r2\n\ - str r0, [r1]\n\ - ldr r0, _08019EE8 @ =0x02000000\n\ - ldr r3, _08019EEC @ =0x00016003\n\ - adds r0, r3\n\ - strb r4, [r0]\n\ - ldr r1, _08019EF0 @ =gBattleTextBuff1\n\ - movs r4, 0xFD\n\ - strb r4, [r1]\n\ - movs r0, 0x4\n\ - strb r0, [r1, 0x1]\n\ - ldr r2, _08019EF4 @ =gActiveBank\n\ - ldrb r0, [r2]\n\ - strb r0, [r1, 0x2]\n\ - ldr r3, _08019EF8 @ =gBattlePartyID\n\ - ldrb r0, [r2]\n\ - lsls r0, 1\n\ - adds r0, r3\n\ - ldrh r0, [r0]\n\ - strb r0, [r1, 0x3]\n\ - movs r0, 0xFF\n\ - strb r0, [r1, 0x4]\n\ - ldr r1, _08019EFC @ =gBattleTextBuff2\n\ - strb r4, [r1]\n\ - movs r0, 0x9\n\ - strb r0, [r1, 0x1]\n\ - ldr r0, _08019F00 @ =gLastUsedAbility\n\ - ldrb r0, [r0]\n\ - strb r0, [r1, 0x2]\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - strb r0, [r1, 0x3]\n\ - b _08019F76\n\ - .align 2, 0\n\ -_08019EDC: .4byte BattleScript_TraceActivates\n\ -_08019EE0: .4byte gStatuses3\n\ -_08019EE4: .4byte 0xffefffff\n\ -_08019EE8: .4byte 0x02000000\n\ -_08019EEC: .4byte 0x00016003\n\ -_08019EF0: .4byte gBattleTextBuff1\n\ -_08019EF4: .4byte gActiveBank\n\ -_08019EF8: .4byte gBattlePartyID\n\ -_08019EFC: .4byte gBattleTextBuff2\n\ -_08019F00: .4byte gLastUsedAbility\n\ -_08019F04:\n\ - mov r5, r8\n\ - strb r1, [r5]\n\ - ldr r0, [r2]\n\ - ldr r1, _08019F30 @ =0xfff7ffff\n\ - ands r0, r1\n\ - str r0, [r2]\n\ - bl b_movescr_stack_push_cursor\n\ - ldr r1, _08019F34 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08019F38 @ =gUnknown_081D9795\n\ - str r0, [r1]\n\ -_08019F1A:\n\ - ldr r0, _08019F3C @ =0x02000000\n\ - ldr r1, _08019F40 @ =0x000160dd\n\ - adds r0, r1\n\ - strb r4, [r0]\n\ -_08019F22:\n\ - mov r0, r9\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ - b _08019F76\n\ - .align 2, 0\n\ -_08019F30: .4byte 0xfff7ffff\n\ -_08019F34: .4byte gBattlescriptCurrInstr\n\ -_08019F38: .4byte gUnknown_081D9795\n\ -_08019F3C: .4byte 0x02000000\n\ -_08019F40: .4byte 0x000160dd\n\ -_08019F44:\n\ - movs r4, 0\n\ - ldr r0, _08019FA4 @ =gNoOfAllBanks\n\ - ldrb r1, [r0]\n\ - cmp r4, r1\n\ - bge _08019F76\n\ - ldr r0, _08019FA8 @ =gBattleMons\n\ - adds r2, r1, 0\n\ - adds r1, r0, 0\n\ - adds r1, 0x20\n\ - ldr r3, _08019FAC @ =gLastUsedAbility\n\ -_08019F58:\n\ - ldrb r0, [r1]\n\ - cmp r0, r6\n\ - bne _08019F6E\n\ - cmp r4, r10\n\ - beq _08019F6E\n\ - strb r6, [r3]\n\ - mov r0, r9\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_08019F6E:\n\ - adds r1, 0x58\n\ - adds r4, 0x1\n\ - cmp r4, r2\n\ - blt _08019F58\n\ -_08019F76:\n\ - mov r2, r9\n\ - cmp r2, 0\n\ - beq _08019F92\n\ -_08019F7C:\n\ - ldr r3, [sp, 0x4]\n\ - cmp r3, 0xB\n\ - bhi _08019F92\n\ - ldr r1, _08019FAC @ =gLastUsedAbility\n\ - ldrb r0, [r1]\n\ - cmp r0, 0xFF\n\ - beq _08019F92\n\ - adds r1, r0, 0\n\ - mov r0, r10\n\ - bl RecordAbilityBattle\n\ -_08019F92:\n\ - mov r0, r9\n\ - add sp, 0x28\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_08019FA4: .4byte gNoOfAllBanks\n\ -_08019FA8: .4byte gBattleMons\n\ -_08019FAC: .4byte gLastUsedAbility\n\ - .syntax divided"); -} - -#endif // NONMATCHING - void b_call_bc_move_exec(u8* BS_ptr) { gBattlescriptCurrInstr = BS_ptr; -- cgit v1.2.3 From fd69fc936729c288720a7e5251314efa121e9ac3 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 23 Oct 2017 20:34:28 -0500 Subject: use SPEED instead of SPD in mon data constants --- include/pokemon.h | 4 ++-- src/battle/battle_4.c | 10 +++++----- src/battle/battle_controller_linkopponent.c | 20 ++++++++++---------- src/battle/battle_controller_linkpartner.c | 20 ++++++++++---------- src/battle/battle_controller_opponent.c | 20 ++++++++++---------- src/battle/battle_controller_player.c | 20 ++++++++++---------- src/battle/battle_controller_wally.c | 20 ++++++++++---------- src/engine/trade.c | 2 +- src/field/daycare.c | 4 ++-- src/field/party_menu.c | 2 +- src/pokemon/pokemon_1.c | 16 ++++++++-------- src/pokemon/pokemon_2.c | 12 ++++++------ src/pokemon/pokemon_size_record.c | 2 +- 13 files changed, 76 insertions(+), 76 deletions(-) diff --git a/include/pokemon.h b/include/pokemon.h index 4c3e27609..dabdff626 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -45,7 +45,7 @@ #define MON_DATA_HP_IV 39 #define MON_DATA_ATK_IV 40 #define MON_DATA_DEF_IV 41 -#define MON_DATA_SPD_IV 42 +#define MON_DATA_SPEED_IV 42 #define MON_DATA_SPATK_IV 43 #define MON_DATA_SPDEF_IV 44 #define MON_DATA_IS_EGG 45 @@ -64,7 +64,7 @@ #define MON_DATA_MAX_HP 58 #define MON_DATA_ATK 59 #define MON_DATA_DEF 60 -#define MON_DATA_SPD 61 +#define MON_DATA_SPEED 61 #define MON_DATA_SPATK 62 #define MON_DATA_SPDEF 63 #define MON_DATA_MAIL 64 diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index e4a4895b5..a3b7ac41f 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -929,7 +929,7 @@ u8* const gMoveEffectBS_Ptrs[] = const u8 sUnreferencedBitMask1[] = {0, 1, 3, 7, 0xF, 0x1F, 0x3F}; -const u8 gLevelUpStatBoxStats[] = {MON_DATA_MAX_HP, MON_DATA_SPATK, MON_DATA_ATK, MON_DATA_SPDEF, MON_DATA_DEF, MON_DATA_SPD}; +const u8 gLevelUpStatBoxStats[] = {MON_DATA_MAX_HP, MON_DATA_SPATK, MON_DATA_ATK, MON_DATA_SPDEF, MON_DATA_DEF, MON_DATA_SPEED}; static const u16 sProtectSuccessRates[] = {0xFFFF, 0x7FFF, 0x3FFF, 0x1FFF}; @@ -5447,7 +5447,7 @@ static void atk23_getexp(void) BATTLE_STRUCT->beforeLvlUp[0] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP); BATTLE_STRUCT->beforeLvlUp[1] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK); BATTLE_STRUCT->beforeLvlUp[2] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF); - BATTLE_STRUCT->beforeLvlUp[3] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD); + BATTLE_STRUCT->beforeLvlUp[3] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPEED); BATTLE_STRUCT->beforeLvlUp[4] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK); BATTLE_STRUCT->beforeLvlUp[5] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPDEF); @@ -5496,7 +5496,7 @@ static void atk23_getexp(void) gBattleMons[0].maxHP = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP); gBattleMons[0].attack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK); gBattleMons[0].defense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF); - gBattleMons[0].speed = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD); + gBattleMons[0].speed = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPEED); gBattleMons[0].spAttack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK); gBattleMons[0].spDefense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPDEF); } @@ -5509,8 +5509,8 @@ static void atk23_getexp(void) gBattleMons[2].attack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK); gBattleMons[2].defense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF); //There are no words...GF can't even copy&paste code properly - gBattleMons[2].speed = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD); - gBattleMons[2].spAttack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD /*RIP*/); + gBattleMons[2].speed = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPEED); + gBattleMons[2].spAttack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPEED /*RIP*/); gBattleMons[2].spDefense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK); } BATTLE_STRUCT->atk23StateTracker = 5; diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c index 0b6c3b6a1..83b690719 100644 --- a/src/battle/battle_controller_linkopponent.c +++ b/src/battle/battle_controller_linkopponent.c @@ -618,7 +618,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer) battlePokemon.hpIV = GetMonData(&gEnemyParty[a], MON_DATA_HP_IV); battlePokemon.attackIV = GetMonData(&gEnemyParty[a], MON_DATA_ATK_IV); battlePokemon.defenseIV = GetMonData(&gEnemyParty[a], MON_DATA_DEF_IV); - battlePokemon.speedIV = GetMonData(&gEnemyParty[a], MON_DATA_SPD_IV); + battlePokemon.speedIV = GetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV); battlePokemon.spAttackIV = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV); battlePokemon.spDefenseIV = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV); battlePokemon.personality = GetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY); @@ -628,7 +628,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer) battlePokemon.maxHP = GetMonData(&gEnemyParty[a], MON_DATA_MAX_HP); battlePokemon.attack = GetMonData(&gEnemyParty[a], MON_DATA_ATK); battlePokemon.defense = GetMonData(&gEnemyParty[a], MON_DATA_DEF); - battlePokemon.speed = GetMonData(&gEnemyParty[a], MON_DATA_SPD); + battlePokemon.speed = GetMonData(&gEnemyParty[a], MON_DATA_SPEED); battlePokemon.spAttack = GetMonData(&gEnemyParty[a], MON_DATA_SPATK); battlePokemon.spDefense = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF); battlePokemon.isEgg = GetMonData(&gEnemyParty[a], MON_DATA_IS_EGG); @@ -752,7 +752,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer) buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_HP_IV); buffer[1] = GetMonData(&gEnemyParty[a], MON_DATA_ATK_IV); buffer[2] = GetMonData(&gEnemyParty[a], MON_DATA_DEF_IV); - buffer[3] = GetMonData(&gEnemyParty[a], MON_DATA_SPD_IV); + buffer[3] = GetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV); buffer[4] = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV); buffer[5] = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV); size = 6; @@ -770,7 +770,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer) size = 1; break; case 35: - buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPD_IV); + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV); size = 1; break; case 36: @@ -832,7 +832,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer) size = 2; break; case 46: - data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPD); + data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPEED); buffer[0] = data16; buffer[1] = data16 >> 8; size = 2; @@ -953,7 +953,7 @@ void sub_8038900(u8 a) iv = battlePokemon->defenseIV; SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, (u8 *)&iv); iv = battlePokemon->speedIV; - SetMonData(&gEnemyParty[a], MON_DATA_SPD_IV, (u8 *)&iv); + SetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV, (u8 *)&iv); iv = battlePokemon->spAttackIV; SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, (u8 *)&iv); iv = battlePokemon->spDefenseIV; @@ -965,7 +965,7 @@ void sub_8038900(u8 a) SetMonData(&gEnemyParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP); SetMonData(&gEnemyParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack); SetMonData(&gEnemyParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense); - SetMonData(&gEnemyParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed); + SetMonData(&gEnemyParty[a], MON_DATA_SPEED, (u8 *)&battlePokemon->speed); SetMonData(&gEnemyParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack); SetMonData(&gEnemyParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense); } @@ -1049,7 +1049,7 @@ void sub_8038900(u8 a) SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]); SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]); SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]); - SetMonData(&gEnemyParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]); + SetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][6]); SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]); SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]); break; @@ -1063,7 +1063,7 @@ void sub_8038900(u8 a) SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]); break; case 35: - SetMonData(&gEnemyParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]); + SetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][3]); break; case 36: SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]); @@ -1096,7 +1096,7 @@ void sub_8038900(u8 a) SetMonData(&gEnemyParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]); break; case 46: - SetMonData(&gEnemyParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]); + SetMonData(&gEnemyParty[a], MON_DATA_SPEED, &gBattleBufferA[gActiveBank][3]); break; case 47: SetMonData(&gEnemyParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]); diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c index 3e34b2e25..ca20f6262 100644 --- a/src/battle/battle_controller_linkpartner.c +++ b/src/battle/battle_controller_linkpartner.c @@ -574,7 +574,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer) battlePokemon.hpIV = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV); battlePokemon.attackIV = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV); battlePokemon.defenseIV = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV); - battlePokemon.speedIV = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); + battlePokemon.speedIV = GetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV); battlePokemon.spAttackIV = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV); battlePokemon.spDefenseIV = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV); battlePokemon.personality = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY); @@ -584,7 +584,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer) battlePokemon.maxHP = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP); battlePokemon.attack = GetMonData(&gPlayerParty[a], MON_DATA_ATK); battlePokemon.defense = GetMonData(&gPlayerParty[a], MON_DATA_DEF); - battlePokemon.speed = GetMonData(&gPlayerParty[a], MON_DATA_SPD); + battlePokemon.speed = GetMonData(&gPlayerParty[a], MON_DATA_SPEED); battlePokemon.spAttack = GetMonData(&gPlayerParty[a], MON_DATA_SPATK); battlePokemon.spDefense = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF); battlePokemon.isEgg = GetMonData(&gPlayerParty[a], MON_DATA_IS_EGG); @@ -708,7 +708,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer) buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV); buffer[1] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV); buffer[2] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV); - buffer[3] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); + buffer[3] = GetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV); buffer[4] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV); buffer[5] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV); size = 6; @@ -726,7 +726,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer) size = 1; break; case 35: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV); size = 1; break; case 36: @@ -788,7 +788,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer) size = 2; break; case 46: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPD); + data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPEED); buffer[0] = data16; buffer[1] = data16 >> 8; size = 2; @@ -910,7 +910,7 @@ void sub_811EC68(u8 a) iv = battlePokemon->defenseIV; SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, (u8 *)&iv); iv = battlePokemon->speedIV; - SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, (u8 *)&iv); + SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, (u8 *)&iv); iv = battlePokemon->spAttackIV; SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, (u8 *)&iv); iv = battlePokemon->spDefenseIV; @@ -922,7 +922,7 @@ void sub_811EC68(u8 a) SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP); SetMonData(&gPlayerParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack); SetMonData(&gPlayerParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense); - SetMonData(&gPlayerParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed); + SetMonData(&gPlayerParty[a], MON_DATA_SPEED, (u8 *)&battlePokemon->speed); SetMonData(&gPlayerParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack); SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense); } @@ -1006,7 +1006,7 @@ void sub_811EC68(u8 a) SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]); SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]); SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]); - SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]); + SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][6]); SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]); SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]); break; @@ -1020,7 +1020,7 @@ void sub_811EC68(u8 a) SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]); break; case 35: - SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]); + SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][3]); break; case 36: SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]); @@ -1053,7 +1053,7 @@ void sub_811EC68(u8 a) SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]); break; case 46: - SetMonData(&gPlayerParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]); + SetMonData(&gPlayerParty[a], MON_DATA_SPEED, &gBattleBufferA[gActiveBank][3]); break; case 47: SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]); diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index 72b56b962..cf90d5817 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -582,7 +582,7 @@ u32 sub_8033598(u8 a, u8 *buffer) battlePokemon.hpIV = GetMonData(&gEnemyParty[a], MON_DATA_HP_IV); battlePokemon.attackIV = GetMonData(&gEnemyParty[a], MON_DATA_ATK_IV); battlePokemon.defenseIV = GetMonData(&gEnemyParty[a], MON_DATA_DEF_IV); - battlePokemon.speedIV = GetMonData(&gEnemyParty[a], MON_DATA_SPD_IV); + battlePokemon.speedIV = GetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV); battlePokemon.spAttackIV = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV); battlePokemon.spDefenseIV = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV); battlePokemon.personality = GetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY); @@ -592,7 +592,7 @@ u32 sub_8033598(u8 a, u8 *buffer) battlePokemon.maxHP = GetMonData(&gEnemyParty[a], MON_DATA_MAX_HP); battlePokemon.attack = GetMonData(&gEnemyParty[a], MON_DATA_ATK); battlePokemon.defense = GetMonData(&gEnemyParty[a], MON_DATA_DEF); - battlePokemon.speed = GetMonData(&gEnemyParty[a], MON_DATA_SPD); + battlePokemon.speed = GetMonData(&gEnemyParty[a], MON_DATA_SPEED); battlePokemon.spAttack = GetMonData(&gEnemyParty[a], MON_DATA_SPATK); battlePokemon.spDefense = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF); battlePokemon.isEgg = GetMonData(&gEnemyParty[a], MON_DATA_IS_EGG); @@ -716,7 +716,7 @@ u32 sub_8033598(u8 a, u8 *buffer) buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_HP_IV); buffer[1] = GetMonData(&gEnemyParty[a], MON_DATA_ATK_IV); buffer[2] = GetMonData(&gEnemyParty[a], MON_DATA_DEF_IV); - buffer[3] = GetMonData(&gEnemyParty[a], MON_DATA_SPD_IV); + buffer[3] = GetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV); buffer[4] = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV); buffer[5] = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV); size = 6; @@ -734,7 +734,7 @@ u32 sub_8033598(u8 a, u8 *buffer) size = 1; break; case 35: - buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPD_IV); + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV); size = 1; break; case 36: @@ -796,7 +796,7 @@ u32 sub_8033598(u8 a, u8 *buffer) size = 2; break; case 46: - data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPD); + data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPEED); buffer[0] = data16; buffer[1] = data16 >> 8; size = 2; @@ -925,7 +925,7 @@ void sub_8033E24(u8 a) iv = battlePokemon->defenseIV; SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, (u8 *)&iv); iv = battlePokemon->speedIV; - SetMonData(&gEnemyParty[a], MON_DATA_SPD_IV, (u8 *)&iv); + SetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV, (u8 *)&iv); iv = battlePokemon->spAttackIV; SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, (u8 *)&iv); iv = battlePokemon->spDefenseIV; @@ -937,7 +937,7 @@ void sub_8033E24(u8 a) SetMonData(&gEnemyParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP); SetMonData(&gEnemyParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack); SetMonData(&gEnemyParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense); - SetMonData(&gEnemyParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed); + SetMonData(&gEnemyParty[a], MON_DATA_SPEED, (u8 *)&battlePokemon->speed); SetMonData(&gEnemyParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack); SetMonData(&gEnemyParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense); } @@ -1021,7 +1021,7 @@ void sub_8033E24(u8 a) SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]); SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]); SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]); - SetMonData(&gEnemyParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]); + SetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][6]); SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]); SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]); break; @@ -1035,7 +1035,7 @@ void sub_8033E24(u8 a) SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]); break; case 35: - SetMonData(&gEnemyParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]); + SetMonData(&gEnemyParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][3]); break; case 36: SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]); @@ -1068,7 +1068,7 @@ void sub_8033E24(u8 a) SetMonData(&gEnemyParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]); break; case 46: - SetMonData(&gEnemyParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]); + SetMonData(&gEnemyParty[a], MON_DATA_SPEED, &gBattleBufferA[gActiveBank][3]); break; case 47: SetMonData(&gEnemyParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]); diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 53b596c5e..dd94b2f4b 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -1754,7 +1754,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer) battlePokemon.hpIV = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV); battlePokemon.attackIV = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV); battlePokemon.defenseIV = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV); - battlePokemon.speedIV = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); + battlePokemon.speedIV = GetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV); battlePokemon.spAttackIV = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV); battlePokemon.spDefenseIV = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV); battlePokemon.personality = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY); @@ -1764,7 +1764,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer) battlePokemon.maxHP = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP); battlePokemon.attack = GetMonData(&gPlayerParty[a], MON_DATA_ATK); battlePokemon.defense = GetMonData(&gPlayerParty[a], MON_DATA_DEF); - battlePokemon.speed = GetMonData(&gPlayerParty[a], MON_DATA_SPD); + battlePokemon.speed = GetMonData(&gPlayerParty[a], MON_DATA_SPEED); battlePokemon.spAttack = GetMonData(&gPlayerParty[a], MON_DATA_SPATK); battlePokemon.spDefense = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF); battlePokemon.isEgg = GetMonData(&gPlayerParty[a], MON_DATA_IS_EGG); @@ -1888,7 +1888,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer) buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV); buffer[1] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV); buffer[2] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV); - buffer[3] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); + buffer[3] = GetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV); buffer[4] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV); buffer[5] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV); size = 6; @@ -1906,7 +1906,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer) size = 1; break; case 35: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV); size = 1; break; case 36: @@ -1968,7 +1968,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer) size = 2; break; case 46: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPD); + data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPEED); buffer[0] = data16; buffer[1] = data16 >> 8; size = 2; @@ -2098,7 +2098,7 @@ void dp01_setattr_by_ch1_for_player_pokemon(u8 a) iv = battlePokemon->defenseIV; SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, (u8 *)&iv); iv = battlePokemon->speedIV; - SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, (u8 *)&iv); + SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, (u8 *)&iv); iv = battlePokemon->spAttackIV; SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, (u8 *)&iv); iv = battlePokemon->spDefenseIV; @@ -2110,7 +2110,7 @@ void dp01_setattr_by_ch1_for_player_pokemon(u8 a) SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP); SetMonData(&gPlayerParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack); SetMonData(&gPlayerParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense); - SetMonData(&gPlayerParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed); + SetMonData(&gPlayerParty[a], MON_DATA_SPEED, (u8 *)&battlePokemon->speed); SetMonData(&gPlayerParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack); SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense); } @@ -2194,7 +2194,7 @@ void dp01_setattr_by_ch1_for_player_pokemon(u8 a) SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]); SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]); SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]); - SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]); + SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][6]); SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]); SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]); break; @@ -2208,7 +2208,7 @@ void dp01_setattr_by_ch1_for_player_pokemon(u8 a) SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]); break; case 35: - SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]); + SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][3]); break; case 36: SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]); @@ -2241,7 +2241,7 @@ void dp01_setattr_by_ch1_for_player_pokemon(u8 a) SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]); break; case 46: - SetMonData(&gPlayerParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]); + SetMonData(&gPlayerParty[a], MON_DATA_SPEED, &gBattleBufferA[gActiveBank][3]); break; case 47: SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]); diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index bf6ef0892..97c78ecd8 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -550,7 +550,7 @@ u32 sub_8137A84(u8 a, u8 *buffer) battlePokemon.hpIV = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV); battlePokemon.attackIV = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV); battlePokemon.defenseIV = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV); - battlePokemon.speedIV = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); + battlePokemon.speedIV = GetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV); battlePokemon.spAttackIV = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV); battlePokemon.spDefenseIV = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV); battlePokemon.personality = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY); @@ -560,7 +560,7 @@ u32 sub_8137A84(u8 a, u8 *buffer) battlePokemon.maxHP = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP); battlePokemon.attack = GetMonData(&gPlayerParty[a], MON_DATA_ATK); battlePokemon.defense = GetMonData(&gPlayerParty[a], MON_DATA_DEF); - battlePokemon.speed = GetMonData(&gPlayerParty[a], MON_DATA_SPD); + battlePokemon.speed = GetMonData(&gPlayerParty[a], MON_DATA_SPEED); battlePokemon.spAttack = GetMonData(&gPlayerParty[a], MON_DATA_SPATK); battlePokemon.spDefense = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF); battlePokemon.isEgg = GetMonData(&gPlayerParty[a], MON_DATA_IS_EGG); @@ -684,7 +684,7 @@ u32 sub_8137A84(u8 a, u8 *buffer) buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV); buffer[1] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV); buffer[2] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV); - buffer[3] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); + buffer[3] = GetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV); buffer[4] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV); buffer[5] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV); size = 6; @@ -702,7 +702,7 @@ u32 sub_8137A84(u8 a, u8 *buffer) size = 1; break; case 35: - buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV); + buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV); size = 1; break; case 36: @@ -764,7 +764,7 @@ u32 sub_8137A84(u8 a, u8 *buffer) size = 2; break; case 46: - data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPD); + data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPEED); buffer[0] = data16; buffer[1] = data16 >> 8; size = 2; @@ -885,7 +885,7 @@ void sub_8138294(u8 a) iv = battlePokemon->defenseIV; SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, (u8 *)&iv); iv = battlePokemon->speedIV; - SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, (u8 *)&iv); + SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, (u8 *)&iv); iv = battlePokemon->spAttackIV; SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, (u8 *)&iv); iv = battlePokemon->spDefenseIV; @@ -897,7 +897,7 @@ void sub_8138294(u8 a) SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP); SetMonData(&gPlayerParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack); SetMonData(&gPlayerParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense); - SetMonData(&gPlayerParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed); + SetMonData(&gPlayerParty[a], MON_DATA_SPEED, (u8 *)&battlePokemon->speed); SetMonData(&gPlayerParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack); SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense); } @@ -981,7 +981,7 @@ void sub_8138294(u8 a) SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]); SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]); SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]); - SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]); + SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][6]); SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]); SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]); break; @@ -995,7 +995,7 @@ void sub_8138294(u8 a) SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]); break; case 35: - SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]); + SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][3]); break; case 36: SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]); @@ -1028,7 +1028,7 @@ void sub_8138294(u8 a) SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]); break; case 46: - SetMonData(&gPlayerParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]); + SetMonData(&gPlayerParty[a], MON_DATA_SPEED, &gBattleBufferA[gActiveBank][3]); break; case 47: SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]); diff --git a/src/engine/trade.c b/src/engine/trade.c index 6e78ba3ce..905e9ff0c 100644 --- a/src/engine/trade.c +++ b/src/engine/trade.c @@ -5424,7 +5424,7 @@ static void sub_804D948(u8 whichPlayerMon, u8 whichInGameTrade) SetMonData(pokemon, MON_DATA_HP_IV, &inGameTrade->ivs[0]); SetMonData(pokemon, MON_DATA_ATK_IV, &inGameTrade->ivs[1]); SetMonData(pokemon, MON_DATA_DEF_IV, &inGameTrade->ivs[2]); - SetMonData(pokemon, MON_DATA_SPD_IV, &inGameTrade->ivs[3]); + SetMonData(pokemon, MON_DATA_SPEED_IV, &inGameTrade->ivs[3]); SetMonData(pokemon, MON_DATA_SPATK_IV, &inGameTrade->ivs[4]); SetMonData(pokemon, MON_DATA_SPDEF_IV, &inGameTrade->ivs[5]); SetMonData(pokemon, MON_DATA_NICKNAME, inGameTrade->name); diff --git a/src/field/daycare.c b/src/field/daycare.c index 60cc61e40..9c5808a0e 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -388,8 +388,8 @@ static void InheritIVs(struct Pokemon *egg, struct DayCareData *dayCareData) SetMonData(egg, MON_DATA_DEF_IV, &iv); break; case 3: - iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPD_IV); - SetMonData(egg, MON_DATA_SPD_IV, &iv); + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPEED_IV); + SetMonData(egg, MON_DATA_SPEED_IV, &iv); break; case 4: iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPATK_IV); diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 86ad9ecc9..a4c66d891 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -460,7 +460,7 @@ static const u8 StatDataTypes[] = { MON_DATA_DEF, MON_DATA_SPATK, MON_DATA_SPDEF, - MON_DATA_SPD, + MON_DATA_SPEED, }; struct Unk201C000 diff --git a/src/pokemon/pokemon_1.c b/src/pokemon/pokemon_1.c index 1d597cb17..345a9668b 100644 --- a/src/pokemon/pokemon_1.c +++ b/src/pokemon/pokemon_1.c @@ -45,7 +45,7 @@ void ZeroMonData(struct Pokemon *mon) SetMonData(mon, MON_DATA_MAX_HP, (u8 *)&arg); SetMonData(mon, MON_DATA_ATK, (u8 *)&arg); SetMonData(mon, MON_DATA_DEF, (u8 *)&arg); - SetMonData(mon, MON_DATA_SPD, (u8 *)&arg); + SetMonData(mon, MON_DATA_SPEED, (u8 *)&arg); SetMonData(mon, MON_DATA_SPATK, (u8 *)&arg); SetMonData(mon, MON_DATA_SPDEF, (u8 *)&arg); arg = 255; @@ -141,7 +141,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, SetBoxMonData(boxMon, MON_DATA_HP_IV, &fixedIV); SetBoxMonData(boxMon, MON_DATA_ATK_IV, &fixedIV); SetBoxMonData(boxMon, MON_DATA_DEF_IV, &fixedIV); - SetBoxMonData(boxMon, MON_DATA_SPD_IV, &fixedIV); + SetBoxMonData(boxMon, MON_DATA_SPEED_IV, &fixedIV); SetBoxMonData(boxMon, MON_DATA_SPATK_IV, &fixedIV); SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &fixedIV); } @@ -160,7 +160,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, value = Random(); iv = value & 0x1F; - SetBoxMonData(boxMon, MON_DATA_SPD_IV, (u8 *)&iv); + SetBoxMonData(boxMon, MON_DATA_SPEED_IV, (u8 *)&iv); iv = (value & 0x3E0) >> 5; SetBoxMonData(boxMon, MON_DATA_SPATK_IV, (u8 *)&iv); iv = (value & 0x7C00) >> 10; @@ -247,7 +247,7 @@ void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u SetMonData(mon, MON_DATA_HP_IV, &ivs[0]); SetMonData(mon, MON_DATA_ATK_IV, &ivs[1]); SetMonData(mon, MON_DATA_DEF_IV, &ivs[2]); - SetMonData(mon, MON_DATA_SPD_IV, &ivs[3]); + SetMonData(mon, MON_DATA_SPEED_IV, &ivs[3]); SetMonData(mon, MON_DATA_SPATK_IV, &ivs[4]); SetMonData(mon, MON_DATA_SPDEF_IV, &ivs[5]); CalculateMonStats(mon); @@ -326,7 +326,7 @@ void sub_803ADE8(struct Pokemon *mon, struct UnknownPokemonStruct *src) value = src->defenseIV; SetMonData(mon, MON_DATA_DEF_IV, &value); value = src->speedIV; - SetMonData(mon, MON_DATA_SPD_IV, &value); + SetMonData(mon, MON_DATA_SPEED_IV, &value); value = src->spAttackIV; SetMonData(mon, MON_DATA_SPATK_IV, &value); value = src->spDefenseIV; @@ -363,7 +363,7 @@ void sub_803AF78(struct Pokemon *mon, struct UnknownPokemonStruct *dest) dest->hpIV = GetMonData(mon, MON_DATA_HP_IV, NULL); dest->attackIV = GetMonData(mon, MON_DATA_ATK_IV, NULL); dest->defenseIV = GetMonData(mon, MON_DATA_DEF_IV, NULL); - dest->speedIV = GetMonData(mon, MON_DATA_SPD_IV, NULL); + dest->speedIV = GetMonData(mon, MON_DATA_SPEED_IV, NULL); dest->spAttackIV = GetMonData(mon, MON_DATA_SPATK_IV, NULL); dest->spDefenseIV = GetMonData(mon, MON_DATA_SPDEF_IV, NULL); dest->altAbility = GetMonData(mon, MON_DATA_ALT_ABILITY, NULL); @@ -414,7 +414,7 @@ void CalculateMonStats(struct Pokemon *mon) s32 attackEV = GetMonData(mon, MON_DATA_ATK_EV, NULL); s32 defenseIV = GetMonData(mon, MON_DATA_DEF_IV, NULL); s32 defenseEV = GetMonData(mon, MON_DATA_DEF_EV, NULL); - s32 speedIV = GetMonData(mon, MON_DATA_SPD_IV, NULL); + s32 speedIV = GetMonData(mon, MON_DATA_SPEED_IV, NULL); s32 speedEV = GetMonData(mon, MON_DATA_SPD_EV, NULL); s32 spAttackIV = GetMonData(mon, MON_DATA_SPATK_IV, NULL); s32 spAttackEV = GetMonData(mon, MON_DATA_SPATK_EV, NULL); @@ -444,7 +444,7 @@ void CalculateMonStats(struct Pokemon *mon) CALC_STAT(baseAttack, attackIV, attackEV, 1, MON_DATA_ATK) CALC_STAT(baseDefense, defenseIV, defenseEV, 2, MON_DATA_DEF) - CALC_STAT(baseSpeed, speedIV, speedEV, 3, MON_DATA_SPD) + CALC_STAT(baseSpeed, speedIV, speedEV, 3, MON_DATA_SPEED) CALC_STAT(baseSpAttack, spAttackIV, spAttackEV, 4, MON_DATA_SPATK) CALC_STAT(baseSpDefense, spDefenseIV, spDefenseEV, 5, MON_DATA_SPDEF) diff --git a/src/pokemon/pokemon_2.c b/src/pokemon/pokemon_2.c index f02ce6170..eaa0b86b8 100644 --- a/src/pokemon/pokemon_2.c +++ b/src/pokemon/pokemon_2.c @@ -278,7 +278,7 @@ u32 GetMonData(struct Pokemon *mon, s32 field, u8 *data) return mon->attack; case MON_DATA_DEF: return mon->defense; - case MON_DATA_SPD: + case MON_DATA_SPEED: return mon->speed; case MON_DATA_SPATK: return mon->spAttack; @@ -476,7 +476,7 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data) case MON_DATA_DEF_IV: retVal = substruct3->defenseIV; break; - case MON_DATA_SPD_IV: + case MON_DATA_SPEED_IV: retVal = substruct3->speedIV; break; case MON_DATA_SPATK_IV: @@ -653,7 +653,7 @@ void SetMonData(struct Pokemon *mon, s32 field, const u8 *data) case MON_DATA_DEF: SET16(mon->defense); break; - case MON_DATA_SPD: + case MON_DATA_SPEED: SET16(mon->speed); break; case MON_DATA_SPATK: @@ -844,7 +844,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const u8 *data) case MON_DATA_DEF_IV: SET8(substruct3->defenseIV); break; - case MON_DATA_SPD_IV: + case MON_DATA_SPEED_IV: SET8(substruct3->speedIV); break; case MON_DATA_SPATK_IV: @@ -1185,7 +1185,7 @@ void CopyPlayerPartyMonToBattleData(u8 battleIndex, u8 partyIndex) gBattleMons[battleIndex].hpIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_HP_IV, NULL); gBattleMons[battleIndex].attackIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_ATK_IV, NULL); gBattleMons[battleIndex].defenseIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_DEF_IV, NULL); - gBattleMons[battleIndex].speedIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPD_IV, NULL); + gBattleMons[battleIndex].speedIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPEED_IV, NULL); gBattleMons[battleIndex].spAttackIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPATK_IV, NULL); gBattleMons[battleIndex].spDefenseIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPDEF_IV, NULL); gBattleMons[battleIndex].personality = GetMonData(&gPlayerParty[partyIndex], MON_DATA_PERSONALITY, NULL); @@ -1195,7 +1195,7 @@ void CopyPlayerPartyMonToBattleData(u8 battleIndex, u8 partyIndex) gBattleMons[battleIndex].maxHP = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MAX_HP, NULL); gBattleMons[battleIndex].attack = GetMonData(&gPlayerParty[partyIndex], MON_DATA_ATK, NULL); gBattleMons[battleIndex].defense = GetMonData(&gPlayerParty[partyIndex], MON_DATA_DEF, NULL); - gBattleMons[battleIndex].speed = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPD, NULL); + gBattleMons[battleIndex].speed = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPEED, NULL); gBattleMons[battleIndex].spAttack = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPATK, NULL); gBattleMons[battleIndex].spDefense = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPDEF, NULL); gBattleMons[battleIndex].isEgg = GetMonData(&gPlayerParty[partyIndex], MON_DATA_IS_EGG, NULL); diff --git a/src/pokemon/pokemon_size_record.c b/src/pokemon/pokemon_size_record.c index f2222bd3b..a71e6f1fd 100644 --- a/src/pokemon/pokemon_size_record.c +++ b/src/pokemon/pokemon_size_record.c @@ -46,7 +46,7 @@ static u32 GetMonSizeHash(struct Pokemon *pkmn) u16 hpIV = GetMonData(pkmn, MON_DATA_HP_IV) & 0xF; u16 attackIV = GetMonData(pkmn, MON_DATA_ATK_IV) & 0xF; u16 defenseIV = GetMonData(pkmn, MON_DATA_DEF_IV) & 0xF; - u16 speedIV = GetMonData(pkmn, MON_DATA_SPD_IV) & 0xF; + u16 speedIV = GetMonData(pkmn, MON_DATA_SPEED_IV) & 0xF; u16 spAtkIV = GetMonData(pkmn, MON_DATA_SPATK_IV) & 0xF; u16 spDefIV = GetMonData(pkmn, MON_DATA_SPDEF_IV) & 0xF; u32 hibyte = ((attackIV ^ defenseIV) * hpIV) ^ (personality & 0xFF); -- cgit v1.2.3