summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2017-08-27 14:46:46 +0200
committerDizzyEggg <jajkodizzy@wp.pl>2017-08-27 14:46:46 +0200
commit4e5e0f18ff3ee5f4bfd55e9739d7ed6733547c30 (patch)
treefcd4f80467988aab6107eb1f740e3c3f0c619292 /src
parent77ae82fc51c8c84e338b15e801f0a98dd5cbe1ef (diff)
label move learning functions and vars
Diffstat (limited to 'src')
-rw-r--r--src/battle_4.c20
-rw-r--r--src/daycare.c6
-rw-r--r--src/evolution_scene.c58
-rw-r--r--src/pokemon_1.c28
4 files changed, 59 insertions, 53 deletions
diff --git a/src/battle_4.c b/src/battle_4.c
index 6dd5d7df6..fb30b2030 100644
--- a/src/battle_4.c
+++ b/src/battle_4.c
@@ -82,7 +82,7 @@ extern void (*gBattleMainFunc)(void);
extern struct Window gUnknown_03004210;
extern const u8 gUnknown_08400D7A[];
extern u8 gPlayerPartyCount;
-extern u16 word_2024E82; //move to learn
+extern u16 gMoveToLearn; //move to learn
extern const u8 gTrainerMoney[];
extern u16 gRandomMove;
extern u8* gBattleScriptsEffectsTable[];
@@ -129,7 +129,7 @@ u16 sub_803FBFC(u8 a);
u8 GetBankByPlayerAI(u8 ID);
void sub_8012258(u8);
void sub_80157C4(u8 bank); //update sent pokes in battle
-//sub_803B7C8 teach poke a move
+//MonTryLearningNewMove teach poke a move
u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move);
void IncrementGameStat(u8 index);
u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale);
@@ -11460,9 +11460,9 @@ void atk59_learnmove_inbattle(void)
u8* loc1 = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
u8* loc2 = BSScriptReadPtr(gBattlescriptCurrInstr + 5);
- u16 ret = sub_803B7C8(&gPlayerParty[BATTLE_STRUCT->expGetterID], BSScriptRead8(gBattlescriptCurrInstr + 9));
+ u16 ret = MonTryLearningNewMove(&gPlayerParty[BATTLE_STRUCT->expGetterID], BSScriptRead8(gBattlescriptCurrInstr + 9));
while (ret == 0xFFFE)
- ret = sub_803B7C8(&gPlayerParty[BATTLE_STRUCT->expGetterID], 0);
+ ret = MonTryLearningNewMove(&gPlayerParty[BATTLE_STRUCT->expGetterID], 0);
if (ret == 0)
{
@@ -11549,7 +11549,7 @@ static void atk5A(void)
case 2:
if (!gPaletteFade.active)
{
- sub_809D9F0(gPlayerParty, BATTLE_STRUCT->expGetterID, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, word_2024E82);
+ sub_809D9F0(gPlayerParty, BATTLE_STRUCT->expGetterID, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn);
BATTLE_STRUCT->atk5A_StateTracker++;
}
break;
@@ -11584,18 +11584,18 @@ static void atk5A(void)
}
ptr[0] = 0xFF;
RemoveMonPPBonus(&gPlayerParty[BATTLE_STRUCT->expGetterID], move_pos);
- SetMonMoveSlot(&gPlayerParty[BATTLE_STRUCT->expGetterID], word_2024E82, move_pos);
+ SetMonMoveSlot(&gPlayerParty[BATTLE_STRUCT->expGetterID], gMoveToLearn, move_pos);
if (gBattlePartyID[0] == BATTLE_STRUCT->expGetterID && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED)
&& !(gDisableStructs[0].unk18_b & gBitTable[move_pos]))
{
RemoveBattleMonPPBonus(&gBattleMons[0], move_pos);
- SetBattleMonMoveSlot(&gBattleMons[0], word_2024E82, move_pos);
+ SetBattleMonMoveSlot(&gBattleMons[0], gMoveToLearn, move_pos);
}
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlePartyID[2] == BATTLE_STRUCT->expGetterID && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED)
&& !(gDisableStructs[2].unk18_b & gBitTable[move_pos]))
{
RemoveBattleMonPPBonus(&gBattleMons[2], move_pos);
- SetBattleMonMoveSlot(&gBattleMons[2], word_2024E82, move_pos);
+ SetBattleMonMoveSlot(&gBattleMons[2], gMoveToLearn, move_pos);
}
}
}
@@ -12653,8 +12653,8 @@ void sub_8024CEC(void)
{
gBattleTextBuff2[0] = 0xFD;
gBattleTextBuff2[1] = 2;
- gBattleTextBuff2[2] = (word_2024E82);
- gBattleTextBuff2[3] = uBYTE1_16(word_2024E82);
+ gBattleTextBuff2[2] = (gMoveToLearn);
+ gBattleTextBuff2[3] = uBYTE1_16(gMoveToLearn);
gBattleTextBuff2[4] = 0xFF;
}
diff --git a/src/daycare.c b/src/daycare.c
index cded18207..7f688016a 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -209,7 +209,7 @@ void sub_80414C0(struct BoxPokemon * daycare_data)
}
u8 TryIncrementMonLevel(struct Pokemon *);
-extern u16 word_2024E82;
+extern u16 gMoveToLearn;
void sub_804151C(struct Pokemon * mon)
{
@@ -221,10 +221,10 @@ void sub_804151C(struct Pokemon * mon)
if(TryIncrementMonLevel(mon) == FALSE) goto end;
r6 = 1;
- while((temp = sub_803B7C8(mon, r6)) != 0){
+ while((temp = MonTryLearningNewMove(mon, r6)) != 0){
r6 = 0;
if(temp == 0xffff){
- DeleteFirstMoveAndGiveMoveToMon(mon, word_2024E82);
+ DeleteFirstMoveAndGiveMoveToMon(mon, gMoveToLearn);
}
}
}
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index f46ed52a3..baac64c35 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -54,7 +54,7 @@ extern u16 gUnknown_030041B0;
extern u16 gUnknown_030041B8;
extern u8 gBattleTerrain;
extern u8 gReservedSpritePaletteCount;
-extern u16 word_2024E82;
+extern u16 gMoveToLearn;
extern struct SpriteTemplate gUnknown_02024E8C;
extern u8 gUnk_2009000[]; // won't match if I 'ewram' it
extern bool8 gAffineAnimsDisabled;
@@ -99,19 +99,19 @@ void CB2_BeginEvolutionScene(void)
RunTasks();
}
-#define tState data[0]
-#define tMonPtrHI data[1]
-#define tMonPtrLO data[2]
-#define tPreEvoSpecies data[3]
-#define tPostEvoSpecies data[4]
-#define tCanStop data[5] // in first fast data[5] only checks that
-#define tBits data[5] // in the second task, it works as a bitfield
-#define tData6 data[6]
-#define tLearnMoveState data[8]
-#define tData9 data[9]
-#define tData10 data[10]
-#define tEvoWasStopped data[11]
-#define tPartyID data[12]
+#define tState data[0]
+#define tMonPtrHI data[1]
+#define tMonPtrLO data[2]
+#define tPreEvoSpecies data[3]
+#define tPostEvoSpecies data[4]
+#define tCanStop data[5] // in first fast data[5] only checks that
+#define tBits data[5] // in the second task, it works as a bitfield
+#define tLearnsFirstMove data[6]
+#define tLearnMoveState data[8]
+#define tData9 data[9]
+#define tData10 data[10]
+#define tEvoWasStopped data[11]
+#define tPartyID data[12]
#define TASK_BIT_CAN_STOP 0x1
#define TASK_BIT_LEARN_MOVE 0x80
@@ -248,7 +248,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
gTasks[ID].tMonPtrHI = (u32)(mon);
gTasks[ID].tMonPtrLO = (u32)(mon) >> 0x10;
gTasks[ID].tCanStop = canStopEvo;
- gTasks[ID].tData6 = 1;
+ gTasks[ID].tLearnsFirstMove = TRUE;
gTasks[ID].tEvoWasStopped = FALSE;
gTasks[ID].tPartyID = partyID;
@@ -448,7 +448,7 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpri
gTasks[ID].tPostEvoSpecies = speciesToEvolve;
gTasks[ID].tMonPtrHI = (u32)(mon);
gTasks[ID].tMonPtrLO = (u32)(mon) >> 0x10;
- gTasks[ID].tData6 = 1;
+ gTasks[ID].tLearnsFirstMove = TRUE;
gTasks[ID].tEvoWasStopped = FALSE;
gTasks[ID].tPartyID = partyID;
@@ -638,14 +638,14 @@ void Task_EvolutionScene(u8 taskID)
case 14: // check if it wants to learn a new move
if (gUnknown_03004210.state == 0)
{
- var = sub_803B7C8(mon, gTasks[taskID].tData6);
+ var = MonTryLearningNewMove(mon, gTasks[taskID].tLearnsFirstMove);
if (var != 0 && !gTasks[taskID].tEvoWasStopped)
{
u8 text[20];
sub_8053E90();
gTasks[taskID].tBits |= TASK_BIT_LEARN_MOVE;
- gTasks[taskID].tData6 = 0;
+ gTasks[taskID].tLearnsFirstMove = FALSE;
gTasks[taskID].tLearnMoveState = 0;
GetMonData(mon, MON_DATA_NICKNAME, text);
StringCopy10(gBattleTextBuff1, text);
@@ -705,12 +705,12 @@ void Task_EvolutionScene(u8 taskID)
PlayFanfare(BGM_FANFA1);
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]);
sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
- gTasks[taskID].tData6 = 0x40;
+ gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter
gTasks[taskID].tState++;
}
break;
case 20: // wait a bit and check if can learn another move
- if (gUnknown_03004210.state == 0 && !IsSEPlaying() && --gTasks[taskID].tData6 == 0)
+ if (gUnknown_03004210.state == 0 && !IsSEPlaying() && --gTasks[taskID].tLearnsFirstMove == 0)
gTasks[taskID].tState = 14;
break;
case 21: // try to learn a new move
@@ -797,7 +797,7 @@ void Task_EvolutionScene(u8 taskID)
{
sub_809D9F0(gPlayerParty, gTasks[taskID].tPartyID,
gPlayerPartyCount - 1, CB2_EvolutionSceneLoadGraphics,
- word_2024E82);
+ gMoveToLearn);
gTasks[taskID].tLearnMoveState++;
}
break;
@@ -824,7 +824,7 @@ void Task_EvolutionScene(u8 taskID)
gBattleTextBuff2[3] = (move & 0xFF00) >> 8;
gBattleTextBuff2[4] = EOS;
RemoveMonPPBonus(mon, var);
- SetMonMoveSlot(mon, word_2024E82, var);
+ SetMonMoveSlot(mon, gMoveToLearn, var);
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]);
sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
gTasks[taskID].tLearnMoveState++;
@@ -980,13 +980,13 @@ void Task_TradeEvolutionScene(u8 taskID)
case 13:
if (gUnknown_03004828->field_4.state == 0 && IsFanfareTaskInactive() == TRUE)
{
- var = sub_803B7C8(mon, gTasks[taskID].tData6);
+ var = MonTryLearningNewMove(mon, gTasks[taskID].tLearnsFirstMove);
if (var != 0 && !gTasks[taskID].tEvoWasStopped)
{
u8 text[20];
gTasks[taskID].tBits |= TASK_BIT_LEARN_MOVE;
- gTasks[taskID].tData6 = 0;
+ gTasks[taskID].tLearnsFirstMove = FALSE;
gTasks[taskID].tLearnMoveState = 0;
GetMonData(mon, MON_DATA_NICKNAME, text);
StringCopy10(gBattleTextBuff1, text);
@@ -1019,12 +1019,12 @@ void Task_TradeEvolutionScene(u8 taskID)
PlayFanfare(BGM_FANFA1);
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]);
sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15);
- gTasks[taskID].tData6 = 0x40;
+ gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter
gTasks[taskID].tState++;
}
break;
case 16:
- if (gUnknown_03004828->field_4.state == 0 && IsFanfareTaskInactive() == TRUE && --gTasks[taskID].tData6 == 0)
+ if (gUnknown_03004828->field_4.state == 0 && IsFanfareTaskInactive() == TRUE && --gTasks[taskID].tLearnsFirstMove == 0)
gTasks[taskID].tState = 13;
break;
case 17:
@@ -1117,7 +1117,7 @@ void Task_TradeEvolutionScene(u8 taskID)
{
sub_809D9F0(gPlayerParty, gTasks[taskID].tPartyID,
gPlayerPartyCount - 1, CB2_TradeEvolutionSceneLoadGraphics,
- word_2024E82);
+ gMoveToLearn);
gTasks[taskID].tLearnMoveState++;
}
break;
@@ -1144,7 +1144,7 @@ void Task_TradeEvolutionScene(u8 taskID)
gBattleTextBuff2[3] = (move & 0xFF00) >> 8;
gBattleTextBuff2[4] = EOS;
RemoveMonPPBonus(mon, var);
- SetMonMoveSlot(mon, word_2024E82, var);
+ SetMonMoveSlot(mon, gMoveToLearn, var);
StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]);
sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15);
gTasks[taskID].tLearnMoveState++;
@@ -1188,3 +1188,5 @@ void Task_TradeEvolutionScene(u8 taskID)
break;
}
}
+
+
diff --git a/src/pokemon_1.c b/src/pokemon_1.c
index c65bfa185..9c46e54d5 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -17,9 +17,9 @@
#define LOHALF(n) ((n) & 0xFFFF)
extern u8 unk_2000000[];
-extern u16 word_2024E82;
+extern u16 gMoveToLearn;
-static EWRAM_DATA u8 byte_2024E88 = 0;
+static EWRAM_DATA u8 sLearningMoveTableID = 0;
u8 gPlayerPartyCount;
struct Pokemon gPlayerParty[6];
@@ -583,29 +583,33 @@ void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon)
}
}
-u16 sub_803B7C8(struct Pokemon *mon, u8 a2)
+u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove)
{
u32 retVal = 0;
u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
u8 level = GetMonData(mon, MON_DATA_LEVEL, NULL);
- if (a2)
+ // since you can learn more than one move per level
+ // the game needs to know whether you decided to
+ // learn it or keep the old set to avoid asking
+ // you to learn the same move over and over again
+ if (firstMove)
{
- byte_2024E88 = retVal;
+ sLearningMoveTableID = 0;
- while ((gLevelUpLearnsets[species][byte_2024E88] & 0xFE00) != (level << 9))
+ while ((gLevelUpLearnsets[species][sLearningMoveTableID] & 0xFE00) != (level << 9))
{
- byte_2024E88++;
- if (gLevelUpLearnsets[species][byte_2024E88] == (u16)-1)
+ sLearningMoveTableID++;
+ if (gLevelUpLearnsets[species][sLearningMoveTableID] == 0xFFFF)
return 0;
}
}
- if ((gLevelUpLearnsets[species][byte_2024E88] & 0xFE00) == (level << 9))
+ if ((gLevelUpLearnsets[species][sLearningMoveTableID] & 0xFE00) == (level << 9))
{
- word_2024E82 = (gLevelUpLearnsets[species][byte_2024E88] & 0x1FF);
- byte_2024E88++;
- retVal = GiveMoveToMon(mon, word_2024E82);
+ gMoveToLearn = (gLevelUpLearnsets[species][sLearningMoveTableID] & 0x1FF);
+ sLearningMoveTableID++;
+ retVal = GiveMoveToMon(mon, gMoveToLearn);
}
return retVal;