summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle_ai.c922
-rw-r--r--src/battle_anim.c8
-rw-r--r--src/battle_setup.c398
-rw-r--r--src/berry.c791
-rw-r--r--src/berry_tag_screen.c310
-rw-r--r--src/bike.c35
-rw-r--r--src/calculate_base_damage.c2080
-rw-r--r--src/contest_painting.c518
-rw-r--r--src/credits.c2004
-rw-r--r--src/decompress.c4
-rw-r--r--src/dewford_trend.c312
-rw-r--r--src/field_control_avatar.c6
-rw-r--r--src/field_player_avatar.c4
-rw-r--r--src/heal_location.c33
-rw-r--r--src/intro.c1200
-rw-r--r--src/mail.c436
-rw-r--r--src/main_menu.c4
-rw-r--r--src/mauville_old_man.c407
-rw-r--r--src/menu.c2
-rw-r--r--src/naming_screen.c1740
-rw-r--r--src/new_game.c3
-rw-r--r--src/party_menu.c270
-rw-r--r--src/pokemon_2.c132
-rw-r--r--src/pokemon_3.c10
-rw-r--r--src/record_mixing.c282
-rw-r--r--src/rom3.c12
-rw-r--r--src/rom4.c4
-rw-r--r--src/sprite.c120
-rw-r--r--src/start_menu.c2
-rw-r--r--src/starter_choose.c302
-rw-r--r--src/title_screen.c374
-rw-r--r--src/trainer_card.c1756
-rw-r--r--src/wallclock.c689
-rw-r--r--src/wild_encounter.c2889
34 files changed, 12374 insertions, 5685 deletions
diff --git a/src/battle_ai.c b/src/battle_ai.c
index 4509ca8db..6058068f0 100644
--- a/src/battle_ai.c
+++ b/src/battle_ai.c
@@ -7,14 +7,18 @@
#include "pokemon.h"
#include "rng.h"
#include "species.h"
+#include "moves.h"
#define AIScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24)
#define AIScriptRead16(ptr) ((ptr)[0] | (ptr)[1] << 8)
#define AIScriptRead8(ptr) ((ptr)[0])
#define AIScriptReadPtr(ptr) (u8*) AIScriptRead32(ptr)
-#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)((u8 *)&battle_2000000 + 0x16800))
-#define AI_ARRAY_160CC ((&battle_2000000 + 0x160CC))
+// to do: maybe try to reduce the defines needed to match?
+#define BATTLE_STRUCT ((struct BattleStruct *)(unk_2000000))
+#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(unk_2000000 + 0x16800))
+#define UNK_2016A00_STRUCT ((struct UnknownStruct1 *)(unk_2000000 + 0x16A00))
+#define AI_ARRAY_160CC ((struct SmallItemStruct *)(unk_2000000 + 0x160CC))
extern void sub_801CAF8(u8, u8);
extern u8 sub_8109908(void);
@@ -25,6 +29,15 @@ enum
USER
};
+// AI states
+enum
+{
+ AIState_SettingUp,
+ AIState_Processing,
+ AIState_FinishedProcessing,
+ AIState_DoNotProcess
+};
+
extern void move_effectiveness_something(u16, u8, u8);
extern u16 gBattleTypeFlags;
@@ -33,8 +46,8 @@ extern u8 gUnknown_02024A60;
extern u8 gUnknown_02024A6A[][2];
extern u16 gUnknown_02024BE6;
extern int gBattleMoveDamage;
-extern u8 gUnknown_02024C07; // something player?
-extern u8 gUnknown_02024C08; // something opponent?
+extern u8 gPlayerMonIndex;
+extern u8 gEnemyMonIndex;
extern u8 gUnknown_02024C0C;
extern u8 gBattleMoveFlags;
extern u16 gUnknown_02024DEC;
@@ -65,19 +78,9 @@ AI scripts.
*/
extern u8 *gAIScriptPtr;
-struct UnknownStruct1
-{
- /*0x00*/ u16 unk0[2][8];
- /*0x20*/ u8 unk20[2];
- /*0x22*/ u8 unk22[2];
- /*0x24*/ u16 items[4];
- /*0x2C*/ u8 unk8;
-};
-
struct UnknownStruct3
{
- u8 *ptr[4]; // might be 8 pointers
- u8 filler0[0x10];
+ u8 *ptr[8];
u8 unk20;
};
@@ -96,14 +99,13 @@ struct UnknownStruct4
u8 filler17[0x4];
};
-extern struct UnknownStruct1 unk_2016A00;
extern struct UnknownStruct3 unk_2016C00;
extern struct UnknownStruct4 gUnknown_02024CA8[];
-static void BattleAICmd_if_random(void);
-static void BattleAICmd_if_not_random(void);
-static void BattleAICmd_if_random_1(void);
-static void BattleAICmd_if_not_random_1(void);
+static void BattleAICmd_if_random_less_than(void);
+static void BattleAICmd_if_random_greater_than(void);
+static void BattleAICmd_if_random_equal(void);
+static void BattleAICmd_if_random_not_equal(void);
static void BattleAICmd_score(void);
static void BattleAICmd_if_hp_less_than(void);
static void BattleAICmd_if_hp_more_than(void);
@@ -133,28 +135,28 @@ static void BattleAICmd_if_in_words(void);
static void BattleAICmd_if_not_in_words(void);
static void BattleAICmd_if_user_can_damage(void);
static void BattleAICmd_if_user_cant_damage(void);
-static void BattleAICmd_unk_21(void);
+static void BattleAICmd_get_turn_count(void);
static void BattleAICmd_get_type(void);
-static void BattleAICmd_unk_23(void);
-static void BattleAICmd_unk_24(void);
+static void BattleAICmd_get_move_power(void);
+static void BattleAICmd_is_most_powerful_move(void);
static void BattleAICmd_get_move(void);
-static void BattleAICmd_if_type(void);
-static void BattleAICmd_unk_27(void);
+static void BattleAICmd_if_arg_equal(void);
+static void BattleAICmd_if_arg_not_equal(void);
static void BattleAICmd_if_would_go_first(void);
static void BattleAICmd_if_would_not_go_first(void);
-static void BattleAICmd_unk_2A(void);
-static void BattleAICmd_unk_2B(void);
+static void BattleAICmd_nullsub_2A(void);
+static void BattleAICmd_nullsub_2B(void);
static void BattleAICmd_count_alive_pokemon(void);
-static void BattleAICmd_unk_2D(void);
-static void BattleAICmd_unk_2E(void);
+static void BattleAICmd_get_considered_move(void);
+static void BattleAICmd_get_considered_move_effect(void);
static void BattleAICmd_get_ability(void);
-static void BattleAICmd_unk_30(void);
+static void BattleAICmd_get_highest_possible_damage(void);
static void BattleAICmd_if_damage_bonus(void);
-static void BattleAICmd_unk_32(void);
-static void BattleAICmd_unk_33(void);
+static void BattleAICmd_nullsub_32(void);
+static void BattleAICmd_nullsub_33(void);
static void BattleAICmd_if_status_in_party(void);
static void BattleAICmd_if_status_not_in_party(void);
-static void BattleAICmd_unk_36(void);
+static void BattleAICmd_get_weather(void);
static void BattleAICmd_if_effect(void);
static void BattleAICmd_if_not_effect(void);
static void BattleAICmd_if_stat_level_less_than(void);
@@ -163,34 +165,34 @@ static void BattleAICmd_if_stat_level_equal(void);
static void BattleAICmd_if_stat_level_not_equal(void);
static void BattleAICmd_if_can_faint(void);
static void BattleAICmd_if_cant_faint(void);
-static void BattleAICmd_unk_3F(void);
-static void BattleAICmd_unk_40(void);
+static void BattleAICmd_if_has_move(void);
+static void BattleAICmd_if_dont_have_move(void);
static void BattleAICmd_if_move_effect(void);
static void BattleAICmd_if_not_move_effect(void);
static void BattleAICmd_if_last_move_did_damage(void);
static void BattleAICmd_if_encored(void);
-static void BattleAICmd_unk_45(void);
-static void BattleAICmd_if_random_2(void);
-static void BattleAICmd_unk_47(void);
+static void BattleAICmd_flee(void);
+static void BattleAICmd_if_random_100(void);
+static void BattleAICmd_watch(void);
static void BattleAICmd_get_hold_effect(void);
static void BattleAICmd_get_gender(void);
static void BattleAICmd_is_first_turn(void);
static void BattleAICmd_get_stockpile_count(void);
-static void BattleAICmd_unk_4C(void);
+static void BattleAICmd_is_double_battle(void);
static void BattleAICmd_get_item(void);
-static void BattleAICmd_unk_4E(void);
-static void BattleAICmd_unk_4F(void);
-static void BattleAICmd_unk_50(void);
+static void BattleAICmd_get_move_type_from_result(void);
+static void BattleAICmd_get_move_power_from_result(void);
+static void BattleAICmd_get_move_effect_from_result(void);
static void BattleAICmd_get_protect_count(void);
-static void BattleAICmd_unk_52(void);
-static void BattleAICmd_unk_53(void);
-static void BattleAICmd_unk_54(void);
-static void BattleAICmd_unk_55(void);
-static void BattleAICmd_unk_56(void);
-static void BattleAICmd_unk_57(void);
+static void BattleAICmd_nullsub_52(void);
+static void BattleAICmd_nullsub_53(void);
+static void BattleAICmd_nullsub_54(void);
+static void BattleAICmd_nullsub_55(void);
+static void BattleAICmd_nullsub_56(void);
+static void BattleAICmd_nullsub_57(void);
static void BattleAICmd_call(void);
static void BattleAICmd_jump(void);
-static void BattleAICmd_unk_5A(void);
+static void BattleAICmd_end(void);
static void BattleAICmd_if_level_cond(void);
static void BattleAICmd_if_taunted(void);
static void BattleAICmd_if_not_taunted(void);
@@ -199,10 +201,10 @@ typedef void (*BattleAICmdFunc)(void);
static const BattleAICmdFunc sBattleAICmdTable[] =
{
- BattleAICmd_if_random,
- BattleAICmd_if_not_random,
- BattleAICmd_if_random_1,
- BattleAICmd_if_not_random_1,
+ BattleAICmd_if_random_less_than,
+ BattleAICmd_if_random_greater_than,
+ BattleAICmd_if_random_equal,
+ BattleAICmd_if_random_not_equal,
BattleAICmd_score,
BattleAICmd_if_hp_less_than,
BattleAICmd_if_hp_more_than,
@@ -232,28 +234,28 @@ static const BattleAICmdFunc sBattleAICmdTable[] =
BattleAICmd_if_not_in_words,
BattleAICmd_if_user_can_damage,
BattleAICmd_if_user_cant_damage,
- BattleAICmd_unk_21,
+ BattleAICmd_get_turn_count,
BattleAICmd_get_type,
- BattleAICmd_unk_23,
- BattleAICmd_unk_24,
+ BattleAICmd_get_move_power,
+ BattleAICmd_is_most_powerful_move,
BattleAICmd_get_move,
- BattleAICmd_if_type,
- BattleAICmd_unk_27,
+ BattleAICmd_if_arg_equal,
+ BattleAICmd_if_arg_not_equal,
BattleAICmd_if_would_go_first,
BattleAICmd_if_would_not_go_first,
- BattleAICmd_unk_2A,
- BattleAICmd_unk_2B,
+ BattleAICmd_nullsub_2A,
+ BattleAICmd_nullsub_2B,
BattleAICmd_count_alive_pokemon,
- BattleAICmd_unk_2D,
- BattleAICmd_unk_2E,
+ BattleAICmd_get_considered_move,
+ BattleAICmd_get_considered_move_effect,
BattleAICmd_get_ability,
- BattleAICmd_unk_30,
+ BattleAICmd_get_highest_possible_damage,
BattleAICmd_if_damage_bonus,
- BattleAICmd_unk_32,
- BattleAICmd_unk_33,
+ BattleAICmd_nullsub_32,
+ BattleAICmd_nullsub_33,
BattleAICmd_if_status_in_party,
BattleAICmd_if_status_not_in_party,
- BattleAICmd_unk_36,
+ BattleAICmd_get_weather,
BattleAICmd_if_effect,
BattleAICmd_if_not_effect,
BattleAICmd_if_stat_level_less_than,
@@ -262,34 +264,34 @@ static const BattleAICmdFunc sBattleAICmdTable[] =
BattleAICmd_if_stat_level_not_equal,
BattleAICmd_if_can_faint,
BattleAICmd_if_cant_faint,
- BattleAICmd_unk_3F,
- BattleAICmd_unk_40,
+ BattleAICmd_if_has_move,
+ BattleAICmd_if_dont_have_move,
BattleAICmd_if_move_effect,
BattleAICmd_if_not_move_effect,
BattleAICmd_if_last_move_did_damage,
BattleAICmd_if_encored,
- BattleAICmd_unk_45,
- BattleAICmd_if_random_2,
- BattleAICmd_unk_47,
+ BattleAICmd_flee,
+ BattleAICmd_if_random_100,
+ BattleAICmd_watch,
BattleAICmd_get_hold_effect,
BattleAICmd_get_gender,
BattleAICmd_is_first_turn,
BattleAICmd_get_stockpile_count,
- BattleAICmd_unk_4C,
+ BattleAICmd_is_double_battle,
BattleAICmd_get_item,
- BattleAICmd_unk_4E,
- BattleAICmd_unk_4F,
- BattleAICmd_unk_50,
+ BattleAICmd_get_move_type_from_result,
+ BattleAICmd_get_move_power_from_result,
+ BattleAICmd_get_move_effect_from_result,
BattleAICmd_get_protect_count,
- BattleAICmd_unk_52,
- BattleAICmd_unk_53,
- BattleAICmd_unk_54,
- BattleAICmd_unk_55,
- BattleAICmd_unk_56,
- BattleAICmd_unk_57,
+ BattleAICmd_nullsub_52,
+ BattleAICmd_nullsub_53,
+ BattleAICmd_nullsub_54,
+ BattleAICmd_nullsub_55,
+ BattleAICmd_nullsub_56,
+ BattleAICmd_nullsub_57,
BattleAICmd_call,
BattleAICmd_jump,
- BattleAICmd_unk_5A,
+ BattleAICmd_end,
BattleAICmd_if_level_cond,
BattleAICmd_if_taunted,
BattleAICmd_if_not_taunted,
@@ -348,135 +350,138 @@ void BattleAI_HandleItemUseBeforeAISetup(void)
void BattleAI_SetupAIData(void)
{
s32 i;
- u8 *data = (u8 *)&gAIThinkingSpace;
+ u8 *data = (u8 *)AI_THINKING_STRUCT;
u8 r7;
- // clear AI data and set default move score to 100.
- for (i = 0; (u32)i < 28; i++)
+ // clear AI data and set default move score to 100. strange that they didn't use memset here.
+ for (i = 0; (u32)i < sizeof(struct AI_ThinkingStruct); i++)
data[i] = 0;
for (i = 0; i < 4; i++)
- gAIThinkingSpace.score[i] = 100;
+ AI_THINKING_STRUCT->score[i] = 100;
r7 = sub_8015A98(gUnknown_02024A60, 0, 0xFF);
+ // probably sets up the moves to consider and ignores non-valid moves such as NO_MOVE or glitch moves.
for (i = 0; i < 4; i++)
{
u16 rand;
if (gBitTable[i] & r7)
- gAIThinkingSpace.score[i] = 0;
+ AI_THINKING_STRUCT->score[i] = 0;
+
rand = Random();
- gAIThinkingSpace.unk18[i] = 100 - (rand & 0xF);
+ AI_THINKING_STRUCT->unk18[i] = 100 - (rand & 0xF);
}
unk_2016C00.unk20 = 0;
- gUnknown_02024C07 = gUnknown_02024A60;
+ gPlayerMonIndex = gUnknown_02024A60;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- gUnknown_02024C08 = Random() & 2;
+ gEnemyMonIndex = Random() & 2; // just pick somebody to target.
- if (gUnknown_02024C0C & gBitTable[gUnknown_02024C08])
- gUnknown_02024C08 ^= 2;
+ if (gUnknown_02024C0C & gBitTable[gEnemyMonIndex])
+ gEnemyMonIndex ^= 2;
}
else
- gUnknown_02024C08 = gUnknown_02024A60 ^ 1;
+ gEnemyMonIndex = gUnknown_02024A60 ^ 1;
// special AI flag cases.
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
- gAIThinkingSpace.aiFlags = 0x40000000;
+ AI_THINKING_STRUCT->aiFlags = 0x40000000;
else if (gBattleTypeFlags & BATTLE_TYPE_ROAMER)
- gAIThinkingSpace.aiFlags = 0x20000000;
+ AI_THINKING_STRUCT->aiFlags = 0x20000000;
else if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
- gAIThinkingSpace.aiFlags = 0x80000000;
+ AI_THINKING_STRUCT->aiFlags = 0x80000000;
else // otherwise, just set aiFlags to whatever flags the trainer has set in their data.
- gAIThinkingSpace.aiFlags = gTrainers[gTrainerBattleOpponent].aiFlags;
+ AI_THINKING_STRUCT->aiFlags = gTrainers[gTrainerBattleOpponent].aiFlags;
}
u8 BattleAI_GetAIActionToUse(void)
{
- u8 arr1[4];
- u8 arr2[4];
- u8 r5;
+ u8 currentMoveArray[4];
+ u8 consideredMoveArray[4];
+ u8 numOfBestMoves;
s32 i;
sub_810745C();
- while (gAIThinkingSpace.aiFlags != 0)
+ while (AI_THINKING_STRUCT->aiFlags != 0)
{
- if (gAIThinkingSpace.aiFlags & 1)
+ if (AI_THINKING_STRUCT->aiFlags & 1)
{
- gAIThinkingSpace.unk0 = 0;
+ AI_THINKING_STRUCT->aiState = AIState_SettingUp;
BattleAI_DoAIProcessing();
}
- gAIThinkingSpace.aiFlags >>= 1;
- gAIThinkingSpace.aiLogicId++;
- gAIThinkingSpace.moveConsidered = 0;
+ AI_THINKING_STRUCT->aiFlags >>= 1;
+ AI_THINKING_STRUCT->aiLogicId++;
+ AI_THINKING_STRUCT->movesetIndex = 0;
}
- // will KO, need to use item or switch.
- if (gAIThinkingSpace.unk10 & 2)
+ // special flee or watch cases for safari.
+ if (AI_THINKING_STRUCT->aiAction & (AI_ACTION_UNK2)) // flee
return 4;
- if (gAIThinkingSpace.unk10 & 4)
+ if (AI_THINKING_STRUCT->aiAction & (AI_ACTION_UNK3)) // watch
return 5;
- r5 = 1;
- arr1[0] = gAIThinkingSpace.score[0];
- arr2[0] = 0;
+ numOfBestMoves = 1;
+ currentMoveArray[0] = AI_THINKING_STRUCT->score[0];
+ consideredMoveArray[0] = 0;
for (i = 1; i < 4; i++)
{
- if (arr1[0] < (s8)gAIThinkingSpace.score[i])
+ if (currentMoveArray[0] < AI_THINKING_STRUCT->score[i])
{
- r5 = 1;
- arr1[0] = gAIThinkingSpace.score[i];
- arr2[0] = i;
+ numOfBestMoves = 1;
+ currentMoveArray[0] = AI_THINKING_STRUCT->score[i];
+ consideredMoveArray[0] = i;
}
- if (arr1[0] == (s8)gAIThinkingSpace.score[i])
+ if (currentMoveArray[0] == AI_THINKING_STRUCT->score[i])
{
- arr1[r5] = gAIThinkingSpace.score[i];
- arr2[r5++] = i;
+ currentMoveArray[numOfBestMoves] = AI_THINKING_STRUCT->score[i];
+ consideredMoveArray[numOfBestMoves++] = i;
}
}
- return arr2[Random() % r5];
+ return consideredMoveArray[Random() % numOfBestMoves]; // break any ties that exist.
}
void BattleAI_DoAIProcessing(void)
{
- while (gAIThinkingSpace.unk0 != 2)
+ while (AI_THINKING_STRUCT->aiState != AIState_FinishedProcessing)
{
- switch (gAIThinkingSpace.unk0)
+ switch (AI_THINKING_STRUCT->aiState)
{
- case 3: //Needed to match.
+ case AIState_DoNotProcess: //Needed to match.
break;
- case 0:
- gAIScriptPtr = BattleAIs[gAIThinkingSpace.aiLogicId];
- if (gBattleMons[gUnknown_02024C07].pp[gAIThinkingSpace.moveConsidered] == 0)
+ case AIState_SettingUp:
+ gAIScriptPtr = BattleAIs[AI_THINKING_STRUCT->aiLogicId]; // set the AI ptr.
+ if (gBattleMons[gPlayerMonIndex].pp[AI_THINKING_STRUCT->movesetIndex] == 0)
{
- gAIThinkingSpace.unk2 = 0;
+ AI_THINKING_STRUCT->moveConsidered = MOVE_NONE; // don't consider a move you have 0 PP for, idiot.
}
else
{
- gAIThinkingSpace.unk2 = gBattleMons[gUnknown_02024C07].moves[gAIThinkingSpace.moveConsidered];
+ AI_THINKING_STRUCT->moveConsidered = gBattleMons[gPlayerMonIndex].moves[AI_THINKING_STRUCT->movesetIndex];
}
- gAIThinkingSpace.unk0++;
+ AI_THINKING_STRUCT->aiState++;
break;
- case 1:
- if (gAIThinkingSpace.unk2 != 0)
+ case AIState_Processing:
+ if (AI_THINKING_STRUCT->moveConsidered != MOVE_NONE)
sBattleAICmdTable[*(u8 *)gAIScriptPtr](); // run AI command.
else
{
- gAIThinkingSpace.score[gAIThinkingSpace.moveConsidered] = 0;
- gAIThinkingSpace.unk10 |= 1;
+ AI_THINKING_STRUCT->score[AI_THINKING_STRUCT->movesetIndex] = 0; // definitely do not consider any move that has 0 PP.
+ AI_THINKING_STRUCT->aiAction |= AI_ACTION_UNK1;
}
- if (gAIThinkingSpace.unk10 & 1)
+ if (AI_THINKING_STRUCT->aiAction & AI_ACTION_UNK1)
{
- gAIThinkingSpace.moveConsidered++;
- if (gAIThinkingSpace.moveConsidered < 4 && !(gAIThinkingSpace.unk10 & 8))
- gAIThinkingSpace.unk0 = 0;
+ AI_THINKING_STRUCT->movesetIndex++;
+ if (AI_THINKING_STRUCT->movesetIndex < 4 && !(AI_THINKING_STRUCT->aiAction & AI_ACTION_UNK4))
+ AI_THINKING_STRUCT->aiState = AIState_SettingUp; // as long as their are more moves to process, keep setting this to setup state.
else
- gAIThinkingSpace.unk0++;
- gAIThinkingSpace.unk10 &= 0xFE;
+ AI_THINKING_STRUCT->aiState++; // done processing.
+ AI_THINKING_STRUCT->aiAction &= (AI_ACTION_UNK2 | AI_ACTION_UNK3 | AI_ACTION_UNK4 |
+ AI_ACTION_UNK5 | AI_ACTION_UNK6 | AI_ACTION_UNK7 | AI_ACTION_UNK8); // disable UNK1.
}
break;
}
@@ -489,10 +494,9 @@ void sub_810745C(void)
for (i = 0; i < 8; i++)
{
- // this is the same as dividing it by 2, but for some reason, >> 1 is needed to match the asm.
- if (unk_2016A00.unk0[gUnknown_02024C08 >> 1][i] == 0)
+ if (unk_2016A00.unk0[gEnemyMonIndex >> 1][i] == 0)
{
- unk_2016A00.unk0[gUnknown_02024C08 >> 1][i] = gUnknown_02024C34[gUnknown_02024C08];
+ unk_2016A00.unk0[gEnemyMonIndex >> 1][i] = gUnknown_02024C34[gEnemyMonIndex];
return;
}
}
@@ -518,41 +522,41 @@ void sub_81074F8(u8 a, u8 b)
unk_2016A00.unk22[battle_get_per_side_status(a) & 1] = b;
}
-static void BattleAICmd_if_random(void)
+static void BattleAICmd_if_random_less_than(void)
{
u16 random = Random();
- if (!(random % 256 >= gAIScriptPtr[1])) // roll a random value. is it less than the parameter of the if_random call? (96 on if_random 80 will return true)
+ if (random % 256 < gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-static void BattleAICmd_if_not_random(void)
+static void BattleAICmd_if_random_greater_than(void)
{
u16 random = Random();
- if (!(random % 256 <= gAIScriptPtr[1])) // roll a random value. is it greater than the parameter of the if_random call? (96 on if_random 80 will return true)
+ if (random % 256 > gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-static void BattleAICmd_if_random_1(void) // if RNG Value equal to
+static void BattleAICmd_if_random_equal(void) // if RNG Value equal to
{
u16 random = Random();
- if (random % 256 == gAIScriptPtr[1]) // roll a random value. is it greater than the parameter of the if_random call? (96 on if_random 80 will return true)
+ if (random % 256 == gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-static void BattleAICmd_if_not_random_1(void) // if RNG value not equal to
+static void BattleAICmd_if_random_not_equal(void) // if RNG value not equal to
{
u16 random = Random();
- if (random % 256 != gAIScriptPtr[1]) // roll a random value. is it greater than the parameter of the if_random call? (96 on if_random 80 will return true)
+ if (random % 256 != gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -560,24 +564,24 @@ static void BattleAICmd_if_not_random_1(void) // if RNG value not equal to
static void BattleAICmd_score(void)
{
- gAIThinkingSpace.score[gAIThinkingSpace.moveConsidered] += gAIScriptPtr[1]; // add the result to the array of the move consider's score.
+ AI_THINKING_STRUCT->score[AI_THINKING_STRUCT->movesetIndex] += gAIScriptPtr[1]; // add the result to the array of the move consider's score.
- if (gAIThinkingSpace.score[gAIThinkingSpace.moveConsidered] < 0) // if the score is negative, flatten it to 0.
- gAIThinkingSpace.score[gAIThinkingSpace.moveConsidered] = 0;
+ if (AI_THINKING_STRUCT->score[AI_THINKING_STRUCT->movesetIndex] < 0) // if the score is negative, flatten it to 0.
+ AI_THINKING_STRUCT->score[AI_THINKING_STRUCT->movesetIndex] = 0;
gAIScriptPtr += 2; // AI return.
}
static void BattleAICmd_if_hp_less_than(void)
{
- u16 var;
+ u16 index;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- if ((u32)(100 * gBattleMons[var].hp / gBattleMons[var].maxHP) < gAIScriptPtr[2])
+ if ((u32)(100 * gBattleMons[index].hp / gBattleMons[index].maxHP) < gAIScriptPtr[2])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
else
gAIScriptPtr += 7;
@@ -585,14 +589,14 @@ static void BattleAICmd_if_hp_less_than(void)
static void BattleAICmd_if_hp_more_than(void)
{
- u16 var;
+ u16 index;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- if ((u32)(100 * gBattleMons[var].hp / gBattleMons[var].maxHP) > gAIScriptPtr[2])
+ if ((u32)(100 * gBattleMons[index].hp / gBattleMons[index].maxHP) > gAIScriptPtr[2])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
else
gAIScriptPtr += 7;
@@ -600,14 +604,14 @@ static void BattleAICmd_if_hp_more_than(void)
static void BattleAICmd_if_hp_equal(void)
{
- u16 var;
+ u16 index;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- if ((u32)(100 * gBattleMons[var].hp / gBattleMons[var].maxHP) == gAIScriptPtr[2])
+ if ((u32)(100 * gBattleMons[index].hp / gBattleMons[index].maxHP) == gAIScriptPtr[2])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
else
gAIScriptPtr += 7;
@@ -615,14 +619,14 @@ static void BattleAICmd_if_hp_equal(void)
static void BattleAICmd_if_hp_not_equal(void)
{
- u16 var;
+ u16 index;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- if ((u32)(100 * gBattleMons[var].hp / gBattleMons[var].maxHP) != gAIScriptPtr[2])
+ if ((u32)(100 * gBattleMons[index].hp / gBattleMons[index].maxHP) != gAIScriptPtr[2])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
else
gAIScriptPtr += 7;
@@ -630,17 +634,17 @@ static void BattleAICmd_if_hp_not_equal(void)
static void BattleAICmd_if_status(void)
{
- u16 var;
- u32 temp;
+ u16 index;
+ u32 arg;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- temp = AIScriptRead32(gAIScriptPtr + 2);
+ arg = AIScriptRead32(gAIScriptPtr + 2);
- if (gBattleMons[var].status1 & temp)
+ if ((gBattleMons[index].status1 & arg) != 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
@@ -648,17 +652,17 @@ static void BattleAICmd_if_status(void)
static void BattleAICmd_if_not_status(void)
{
- u16 var;
- u32 temp;
+ u16 index;
+ u32 arg;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- temp = AIScriptRead32(gAIScriptPtr + 2);
+ arg = AIScriptRead32(gAIScriptPtr + 2);
- if (!(gBattleMons[var].status1 & temp))
+ if ((gBattleMons[index].status1 & arg) == 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
@@ -666,17 +670,17 @@ static void BattleAICmd_if_not_status(void)
static void BattleAICmd_if_status2(void)
{
- u8 var;
- u32 temp;
+ u16 index;
+ u32 arg;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- temp = AIScriptRead32(gAIScriptPtr + 2);
+ arg = AIScriptRead32(gAIScriptPtr + 2);
- if (gBattleMons[var].status2 & temp)
+ if ((gBattleMons[index].status2 & arg) != 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
@@ -684,17 +688,17 @@ static void BattleAICmd_if_status2(void)
static void BattleAICmd_if_not_status2(void)
{
- u8 var;
- u32 temp;
+ u16 index;
+ u32 arg;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- temp = AIScriptRead32(gAIScriptPtr + 2);
+ arg = AIScriptRead32(gAIScriptPtr + 2);
- if (!(gBattleMons[var].status2 & temp))
+ if ((gBattleMons[index].status2 & arg) == 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
@@ -702,17 +706,17 @@ static void BattleAICmd_if_not_status2(void)
static void BattleAICmd_if_status3(void)
{
- u8 var;
- u32 temp;
+ u16 index;
+ u32 arg;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- temp = AIScriptRead32(gAIScriptPtr + 2);
+ arg = AIScriptRead32(gAIScriptPtr + 2);
- if (gUnknown_02024C98[var] & temp)
+ if ((gUnknown_02024C98[index] & arg) != 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
@@ -720,17 +724,17 @@ static void BattleAICmd_if_status3(void)
static void BattleAICmd_if_not_status3(void)
{
- u8 var;
- u32 temp;
+ u16 index;
+ u32 arg;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- temp = AIScriptRead32(gAIScriptPtr + 2);
+ arg = AIScriptRead32(gAIScriptPtr + 2);
- if (!(gUnknown_02024C98[var] & temp))
+ if ((gUnknown_02024C98[index] & arg) == 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
@@ -738,19 +742,18 @@ static void BattleAICmd_if_not_status3(void)
static void BattleAICmd_if_status4(void)
{
- u8 var;
- u32 temp;
- u32 temp2;
+ u16 index;
+ u32 arg1, arg2;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- temp = battle_get_per_side_status(var) & 1;
- temp2 = AIScriptRead32(gAIScriptPtr + 2);
+ arg1 = battle_get_per_side_status(index) & 1;
+ arg2 = AIScriptRead32(gAIScriptPtr + 2);
- if (gUnknown_02024C7A[temp] & temp2)
+ if ((gUnknown_02024C7A[arg1] & arg2) != 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
@@ -758,19 +761,18 @@ static void BattleAICmd_if_status4(void)
static void BattleAICmd_if_not_status4(void)
{
- u8 var;
- u32 temp;
- u32 temp2;
+ u16 index;
+ u32 arg1, arg2;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- temp = battle_get_per_side_status(var) & 1;
- temp2 = AIScriptRead32(gAIScriptPtr + 2);
+ arg1 = battle_get_per_side_status(index) & 1;
+ arg2 = AIScriptRead32(gAIScriptPtr + 2);
- if (!(gUnknown_02024C7A[temp] & temp2))
+ if ((gUnknown_02024C7A[arg1] & arg2) == 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
@@ -778,7 +780,7 @@ static void BattleAICmd_if_not_status4(void)
static void BattleAICmd_if_less_than(void)
{
- if (gAIThinkingSpace.funcResult < gAIScriptPtr[1])
+ if (AI_THINKING_STRUCT->funcResult < gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -786,7 +788,7 @@ static void BattleAICmd_if_less_than(void)
static void BattleAICmd_if_more_than(void)
{
- if (gAIThinkingSpace.funcResult > gAIScriptPtr[1])
+ if (AI_THINKING_STRUCT->funcResult > gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -794,7 +796,7 @@ static void BattleAICmd_if_more_than(void)
static void BattleAICmd_if_equal(void)
{
- if (gAIThinkingSpace.funcResult == gAIScriptPtr[1])
+ if (AI_THINKING_STRUCT->funcResult == gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -802,7 +804,7 @@ static void BattleAICmd_if_equal(void)
static void BattleAICmd_if_not_equal(void)
{
- if (gAIThinkingSpace.funcResult != gAIScriptPtr[1])
+ if (AI_THINKING_STRUCT->funcResult != gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -812,7 +814,7 @@ static void BattleAICmd_if_less_than_32(void)
{
u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
- if (gAIThinkingSpace.funcResult < *temp)
+ if (AI_THINKING_STRUCT->funcResult < *temp)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
else
gAIScriptPtr += 9;
@@ -822,7 +824,7 @@ static void BattleAICmd_if_more_than_32(void)
{
u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
- if (gAIThinkingSpace.funcResult > *temp)
+ if (AI_THINKING_STRUCT->funcResult > *temp)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
else
gAIScriptPtr += 9;
@@ -832,7 +834,7 @@ static void BattleAICmd_if_equal_32(void)
{
u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
- if (gAIThinkingSpace.funcResult == *temp)
+ if (AI_THINKING_STRUCT->funcResult == *temp)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
else
gAIScriptPtr += 9;
@@ -842,7 +844,7 @@ static void BattleAICmd_if_not_equal_32(void)
{
u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
- if (gAIThinkingSpace.funcResult != *temp)
+ if (AI_THINKING_STRUCT->funcResult != *temp)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
else
gAIScriptPtr += 9;
@@ -852,7 +854,7 @@ static void BattleAICmd_if_move(void)
{
u16 move = AIScriptRead16(gAIScriptPtr + 1);
- if (gAIThinkingSpace.unk2 == move)
+ if (AI_THINKING_STRUCT->moveConsidered == move)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
else
gAIScriptPtr += 7;
@@ -862,7 +864,7 @@ static void BattleAICmd_if_not_move(void)
{
u16 move = AIScriptRead16(gAIScriptPtr + 1);
- if (gAIThinkingSpace.unk2 != move)
+ if (AI_THINKING_STRUCT->moveConsidered != move)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
else
gAIScriptPtr += 7;
@@ -874,7 +876,7 @@ static void BattleAICmd_if_in_bytes(void)
while (*ptr != 0xFF)
{
- if (gAIThinkingSpace.funcResult == *ptr)
+ if (AI_THINKING_STRUCT->funcResult == *ptr)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
return;
@@ -890,7 +892,7 @@ static void BattleAICmd_if_not_in_bytes(void)
while (*ptr != 0xFF)
{
- if (gAIThinkingSpace.funcResult == *ptr)
+ if (AI_THINKING_STRUCT->funcResult == *ptr)
{
gAIScriptPtr += 9;
return;
@@ -906,7 +908,7 @@ static void BattleAICmd_if_in_words(void)
while (*ptr != 0xFFFF)
{
- if (gAIThinkingSpace.funcResult == *ptr)
+ if (AI_THINKING_STRUCT->funcResult == *ptr)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
return;
@@ -922,7 +924,7 @@ static void BattleAICmd_if_not_in_words(void)
while (*ptr != 0xFFFF)
{
- if (gAIThinkingSpace.funcResult == *ptr)
+ if (AI_THINKING_STRUCT->funcResult == *ptr)
{
gAIScriptPtr += 9;
return;
@@ -938,8 +940,8 @@ static void BattleAICmd_if_user_can_damage(void)
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gUnknown_02024C07].moves[i] != 0
- && gBattleMoves[gBattleMons[gUnknown_02024C07].moves[i]].power != 0)
+ if (gBattleMons[gPlayerMonIndex].moves[i] != 0
+ && gBattleMoves[gBattleMons[gPlayerMonIndex].moves[i]].power != 0)
break;
}
if (i == 4)
@@ -954,8 +956,8 @@ static void BattleAICmd_if_user_cant_damage(void)
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gUnknown_02024C07].moves[i] != 0
- && gBattleMoves[gBattleMons[gUnknown_02024C07].moves[i]].power != 0)
+ if (gBattleMons[gPlayerMonIndex].moves[i] != 0
+ && gBattleMoves[gBattleMons[gPlayerMonIndex].moves[i]].power != 0)
break;
}
if (i != 4)
@@ -964,9 +966,9 @@ static void BattleAICmd_if_user_cant_damage(void)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
}
-static void BattleAICmd_unk_21(void)
+static void BattleAICmd_get_turn_count(void)
{
- gAIThinkingSpace.funcResult = gUnknown_030042E0[19];
+ AI_THINKING_STRUCT->funcResult = gUnknown_030042E0[19];
gAIScriptPtr += 1;
}
@@ -976,69 +978,68 @@ static void BattleAICmd_get_type(void)
switch (typeVar)
{
- case 1:
- gAIThinkingSpace.funcResult = gBattleMons[gUnknown_02024C07].type1;
+ case 1: // player primary type
+ AI_THINKING_STRUCT->funcResult = gBattleMons[gPlayerMonIndex].type1;
break;
- case 0:
- gAIThinkingSpace.funcResult = gBattleMons[gUnknown_02024C08].type1;
+ case 0: // enemy primary type
+ AI_THINKING_STRUCT->funcResult = gBattleMons[gEnemyMonIndex].type1;
break;
- case 3:
- gAIThinkingSpace.funcResult = gBattleMons[gUnknown_02024C07].type2;
+ case 3: // player secondary type
+ AI_THINKING_STRUCT->funcResult = gBattleMons[gPlayerMonIndex].type2;
break;
- case 2:
- gAIThinkingSpace.funcResult = gBattleMons[gUnknown_02024C08].type2;
+ case 2: // enemy secondary type
+ AI_THINKING_STRUCT->funcResult = gBattleMons[gEnemyMonIndex].type2;
break;
- case 4:
- gAIThinkingSpace.funcResult = gBattleMoves[gAIThinkingSpace.unk2].type;
+ case 4: // type of move being pointed to
+ AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].type;
break;
}
gAIScriptPtr += 2;
}
-static void BattleAICmd_unk_23(void)
+static void BattleAICmd_get_move_power(void)
{
- gAIThinkingSpace.funcResult = gBattleMoves[gAIThinkingSpace.unk2].power;
+ AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power;
gAIScriptPtr += 1;
}
#ifdef NONMATCHING
-static void BattleAICmd_unk_24(void)
+static void BattleAICmd_is_most_powerful_move(void)
{
int i, j;
- s32 damage;
s32 damages[4];
for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
- if (gBattleMoves[AI_THINKING_STRUCT->unk2].effect == sDiscouragedPowerfulMoveEffects[i])
+ if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == sDiscouragedPowerfulMoveEffects[i])
break;
- if (gBattleMoves[AI_THINKING_STRUCT->unk2].power > 1
+ if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power > 1
&& sDiscouragedPowerfulMoveEffects[i] == 0xFFFF)
{
gUnknown_02024DEC = 0;
- *((u8 *)&battle_2000000 + 0x1601C) = 0;
- *((u8 *)&battle_2000000 + 0x1601F) = 1;
+ unk_2000000[0x1601C] = 0; // why is this a manual array?
+ unk_2000000[0x1601F] = 1;
gBattleMoveFlags = 0;
gCritMultiplier = 1;
for (i = 0; i < 4; i++)
{
for (j = 0; sDiscouragedPowerfulMoveEffects[j] != 0xFFFF; j++)
- {
- if (gBattleMoves[gBattleMons[gUnknown_02024C07].moves[i]].effect == sDiscouragedPowerfulMoveEffects[j])
+ { // _08108276
+ if (gBattleMoves[gBattleMons[gPlayerMonIndex].moves[i]].effect == sDiscouragedPowerfulMoveEffects[j])
break;
}
- if (gBattleMons[gUnknown_02024C07].moves[i]
+ // _081082BA
+ if (gBattleMons[gPlayerMonIndex].moves[i]
&& sDiscouragedPowerfulMoveEffects[j] == 0xFFFF
- && gBattleMoves[gBattleMons[gUnknown_02024C07].moves[i]].power > 1)
+ && gBattleMoves[gBattleMons[gPlayerMonIndex].moves[i]].power > 1)
{
- gUnknown_02024BE6 = gBattleMons[gUnknown_02024C07].moves[i];
- sub_801CAF8(gUnknown_02024C07, gUnknown_02024C08);
- move_effectiveness_something(gUnknown_02024BE6, gUnknown_02024C07, gUnknown_02024C08);
- damage = (gBattleMoveDamage * AI_THINKING_STRUCT->unk18[i]) / 100;
- damages[i] = damage;
- if (!damage)
+ gUnknown_02024BE6 = gBattleMons[gPlayerMonIndex].moves[i];
+ sub_801CAF8(gPlayerMonIndex, gEnemyMonIndex);
+ move_effectiveness_something(gUnknown_02024BE6, gPlayerMonIndex, gEnemyMonIndex);
+ damages[i] = (gBattleMoveDamage * AI_THINKING_STRUCT->unk18[i]) / 100;
+ if (damages[i] == 0) // moves always do at least 1 damage.
damages[i] = 1;
}
else
@@ -1048,7 +1049,7 @@ static void BattleAICmd_unk_24(void)
}
for (i = 0; i < 4; i++)
- if (damages[i] > damages[AI_THINKING_STRUCT->moveConsidered])
+ if (damages[i] > damages[AI_THINKING_STRUCT->movesetIndex])
break;
if (i == 4)
@@ -1059,14 +1060,13 @@ static void BattleAICmd_unk_24(void)
else
{
AI_THINKING_STRUCT->funcResult = 0;
- gAIScriptPtr += 1;
}
gAIScriptPtr += 1;
}
#else
__attribute__((naked))
-static void BattleAICmd_unk_24(void)
+static void BattleAICmd_is_most_powerful_move(void)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
@@ -1142,7 +1142,7 @@ _08108276:\n\
movs r3, 0\n\
ldr r5, _08108348 @ =gBattleMons\n\
lsls r4, r6, 1\n\
- ldr r7, _0810834C @ =gUnknown_02024C07\n\
+ ldr r7, _0810834C @ =gPlayerMonIndex\n\
lsls r1, r6, 2\n\
mov r8, r1\n\
adds r2, r6, 0x1\n\
@@ -1203,7 +1203,7 @@ _081082BA:\n\
ldr r5, _08108350 @ =gUnknown_02024BE6\n\
strh r2, [r5]\n\
ldrb r0, [r7]\n\
- ldr r4, _08108354 @ =gUnknown_02024C08\n\
+ ldr r4, _08108354 @ =gEnemyMonIndex\n\
ldrb r1, [r4]\n\
bl sub_801CAF8\n\
ldrh r0, [r5]\n\
@@ -1237,9 +1237,9 @@ _0810833C: .4byte 0xfffff81c\n\
_08108340: .4byte gBattleMoveFlags\n\
_08108344: .4byte gCritMultiplier\n\
_08108348: .4byte gBattleMons\n\
-_0810834C: .4byte gUnknown_02024C07\n\
+_0810834C: .4byte gPlayerMonIndex\n\
_08108350: .4byte gUnknown_02024BE6\n\
-_08108354: .4byte gUnknown_02024C08\n\
+_08108354: .4byte gEnemyMonIndex\n\
_08108358: .4byte gBattleMoveDamage\n\
_0810835C:\n\
mov r1, sp\n\
@@ -1313,24 +1313,24 @@ _081083D0: .4byte gAIScriptPtr\n\
static void BattleAICmd_get_move(void)
{
if (gAIScriptPtr[1] == USER)
- gAIThinkingSpace.funcResult = gUnknown_02024C34[gUnknown_02024C07];
+ AI_THINKING_STRUCT->funcResult = gUnknown_02024C34[gPlayerMonIndex];
else
- gAIThinkingSpace.funcResult = gUnknown_02024C34[gUnknown_02024C08];
+ AI_THINKING_STRUCT->funcResult = gUnknown_02024C34[gEnemyMonIndex];
gAIScriptPtr += 2;
}
-static void BattleAICmd_if_type(void)
+static void BattleAICmd_if_arg_equal(void)
{
- if (gAIScriptPtr[1] == gAIThinkingSpace.funcResult)
+ if (gAIScriptPtr[1] == AI_THINKING_STRUCT->funcResult)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-static void BattleAICmd_unk_27(void) // if_not_type
+static void BattleAICmd_if_arg_not_equal(void)
{
- if (gAIScriptPtr[1] != gAIThinkingSpace.funcResult)
+ if (gAIScriptPtr[1] != AI_THINKING_STRUCT->funcResult)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -1338,7 +1338,7 @@ static void BattleAICmd_unk_27(void) // if_not_type
static void BattleAICmd_if_would_go_first(void)
{
- if (b_first_side(gUnknown_02024C07, gUnknown_02024C08, 1) == gAIScriptPtr[1])
+ if (b_first_side(gPlayerMonIndex, gEnemyMonIndex, 1) == gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -1346,34 +1346,33 @@ static void BattleAICmd_if_would_go_first(void)
static void BattleAICmd_if_would_not_go_first(void)
{
- if (b_first_side(gUnknown_02024C07, gUnknown_02024C08, 1) != gAIScriptPtr[1])
+ if (b_first_side(gPlayerMonIndex, gEnemyMonIndex, 1) != gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-static void BattleAICmd_unk_2A(void)
+static void BattleAICmd_nullsub_2A(void)
{
}
-static void BattleAICmd_unk_2B(void)
+static void BattleAICmd_nullsub_2B(void)
{
}
static void BattleAICmd_count_alive_pokemon(void)
{
u8 index;
+ u8 var, var2;
struct Pokemon *party;
- struct AI_ThinkingStruct *ai = &battle_2000000.ai;
int i;
- u8 var, var2;
- ai->funcResult = 0;
+ AI_THINKING_STRUCT->funcResult = 0;
if (gAIScriptPtr[1] == USER)
- index = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- index = gUnknown_02024C08;
+ index = gEnemyMonIndex;
if (battle_side_get_owner(index) == 0)
party = gPlayerParty;
@@ -1395,87 +1394,86 @@ static void BattleAICmd_count_alive_pokemon(void)
for (i = 0; i < 6; i++)
{
- struct AI_ThinkingStruct *ai2 = &battle_2000000.ai;
if (i != var && i != var2
&& GetMonData(&party[i], MON_DATA_HP) != 0
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG)
{
- ai2->funcResult++;
+ AI_THINKING_STRUCT->funcResult++;
}
}
gAIScriptPtr += 2;
}
-static void BattleAICmd_unk_2D(void)
+static void BattleAICmd_get_considered_move(void)
{
- gAIThinkingSpace.funcResult = gAIThinkingSpace.unk2;
+ AI_THINKING_STRUCT->funcResult = AI_THINKING_STRUCT->moveConsidered;
gAIScriptPtr += 1;
}
-static void BattleAICmd_unk_2E(void)
+static void BattleAICmd_get_considered_move_effect(void)
{
- gAIThinkingSpace.funcResult = gBattleMoves[gAIThinkingSpace.unk2].effect;
+ AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect;
gAIScriptPtr += 1;
}
static void BattleAICmd_get_ability(void)
{
- u8 var;
+ u8 index;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- if (battle_side_get_owner(var) == TARGET)
+ if (battle_side_get_owner(index) == TARGET)
{
- u16 unk = battle_get_per_side_status(var) & 1;
+ u16 unk = battle_get_per_side_status(index) & 1;
- if (unk_2016A00.unk20[unk] != 0)
+ if (UNK_2016A00_STRUCT->unk20[unk] != 0)
{
- ((struct AI_ThinkingStruct *)((u8 *)&unk_2016A00 - 0x200))->funcResult = unk_2016A00.unk20[unk];
+ AI_THINKING_STRUCT->funcResult = UNK_2016A00_STRUCT->unk20[unk];
gAIScriptPtr += 2;
return;
}
// abilities that prevent fleeing.
- if (gBattleMons[var].ability == ABILITY_SHADOW_TAG || gBattleMons[var].ability == ABILITY_MAGNET_PULL || gBattleMons[var].ability == ABILITY_ARENA_TRAP)
+ if (gBattleMons[index].ability == ABILITY_SHADOW_TAG || gBattleMons[index].ability == ABILITY_MAGNET_PULL || gBattleMons[index].ability == ABILITY_ARENA_TRAP)
{
- gAIThinkingSpace.funcResult = gBattleMons[var].ability;
+ AI_THINKING_STRUCT->funcResult = gBattleMons[index].ability;
gAIScriptPtr += 2;
return;
}
- if (gBaseStats[gBattleMons[var].species].ability1 != ABILITY_NONE)
+ if (gBaseStats[gBattleMons[index].species].ability1 != ABILITY_NONE)
{
- if (gBaseStats[gBattleMons[var].species].ability2 != ABILITY_NONE)
+ if (gBaseStats[gBattleMons[index].species].ability2 != ABILITY_NONE)
{
- // AI is guessing what ability?
+ // AI has no knowledge of opponent, so it guesses which ability. In Emerald, it has knowledge of the opponent's ability when it is invoked at least once.
if (Random() & 1)
{
- ((struct AI_ThinkingStruct *)((u8 *)&unk_2016A00 - 0x200))->funcResult = gBaseStats[gBattleMons[var].species].ability1;
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].ability1;
gAIScriptPtr += 2;
return;
}
else
{
- ((struct AI_ThinkingStruct *)((u8 *)&unk_2016A00 - 0x200))->funcResult = gBaseStats[gBattleMons[var].species].ability2;
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].ability2;
gAIScriptPtr += 2;
return;
}
}
else
{
- ((struct AI_ThinkingStruct *)((u8 *)&unk_2016A00 - 0x200))->funcResult = gBaseStats[gBattleMons[var].species].ability1; // it's definitely ability 1.
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].ability1; // it's definitely ability 1.
gAIScriptPtr += 2;
return;
}
}
else
{
- ((struct AI_ThinkingStruct *)((u8 *)&unk_2016A00 - 0x200))->funcResult = gBaseStats[gBattleMons[var].species].ability2; // AI cant actually reach this part since every mon has at least 1 ability.
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].ability2; // AI cant actually reach this part since every mon has at least 1 ability.
gAIScriptPtr += 2;
return;
}
@@ -1483,34 +1481,31 @@ static void BattleAICmd_get_ability(void)
else
{
// The AI knows its own ability.
- gAIThinkingSpace.funcResult = gBattleMons[var].ability;
+ AI_THINKING_STRUCT->funcResult = gBattleMons[index].ability;
gAIScriptPtr += 2;
return;
}
}
-static void BattleAICmd_unk_30(void)
+static void BattleAICmd_get_highest_possible_damage(void)
{
s32 i;
- struct AI_ThinkingStruct *ai;
- struct AI_ThinkingStruct *ai2;
gUnknown_02024DEC = 0;
- battle_2000000.unk.unk1 = 0;
- battle_2000000.unk.unk4 = 1;
+ BATTLE_STRUCT->unk.unk1 = 0;
+ BATTLE_STRUCT->unk.unk4 = 1;
gBattleMoveFlags = 0;
gCritMultiplier = 1;
- ai = &battle_2000000.ai;
- ai->funcResult = 0;
+ AI_THINKING_STRUCT->funcResult = 0;
for (i = 0; i < 4; i++)
{
gBattleMoveDamage = 40;
- gUnknown_02024BE6 = gBattleMons[gUnknown_02024C07].moves[i];
+ gUnknown_02024BE6 = gBattleMons[gPlayerMonIndex].moves[i];
if (gUnknown_02024BE6)
{
- move_effectiveness_something(gUnknown_02024BE6, gUnknown_02024C07, gUnknown_02024C08);
+ move_effectiveness_something(gUnknown_02024BE6, gPlayerMonIndex, gEnemyMonIndex);
// reduce by 1/3.
if (gBattleMoveDamage == 120)
@@ -1522,12 +1517,11 @@ static void BattleAICmd_unk_30(void)
if (gBattleMoveDamage == 15)
gBattleMoveDamage = 10;
- if (gBattleMoveFlags & 8)
+ if (gBattleMoveFlags & 8) // if it's a status move, it wont do anything.
gBattleMoveDamage = 0;
- ai2 = &battle_2000000.ai;
- if (ai2->funcResult < gBattleMoveDamage)
- ai2->funcResult = gBattleMoveDamage;
+ if (AI_THINKING_STRUCT->funcResult < gBattleMoveDamage)
+ AI_THINKING_STRUCT->funcResult = gBattleMoveDamage;
}
}
gAIScriptPtr += 1;
@@ -1535,19 +1529,18 @@ static void BattleAICmd_unk_30(void)
static void BattleAICmd_if_damage_bonus(void)
{
- struct AI_ThinkingStruct *ai;
u8 damageVar;
gUnknown_02024DEC = 0;
- battle_2000000.unk.unk1 = 0;
- battle_2000000.unk.unk4 = 1;
+ BATTLE_STRUCT->unk.unk1 = 0;
+ BATTLE_STRUCT->unk.unk4 = 1;
gBattleMoveFlags = 0;
gCritMultiplier = 1;
gBattleMoveDamage = 40;
- gUnknown_02024BE6 = (ai = &battle_2000000.ai)->unk2;
+ gUnknown_02024BE6 = AI_THINKING_STRUCT->moveConsidered;
- move_effectiveness_something(gUnknown_02024BE6, gUnknown_02024C07, gUnknown_02024C08);
+ move_effectiveness_something(gUnknown_02024BE6, gPlayerMonIndex, gEnemyMonIndex);
if (gBattleMoveDamage == 120)
gBattleMoveDamage = 80;
@@ -1561,42 +1554,39 @@ static void BattleAICmd_if_damage_bonus(void)
if (gBattleMoveFlags & 8)
gBattleMoveDamage = 0;
- // i have to store 2024BEC in a local variable before the comparison or else it will not match.
+ // store gBattleMoveDamage in a u8 variable because gAIScriptPtr[1] is a u8.
damageVar = gBattleMoveDamage;
+
if (damageVar == gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-static void BattleAICmd_unk_32(void)
+static void BattleAICmd_nullsub_32(void)
{
}
-static void BattleAICmd_unk_33(void)
+static void BattleAICmd_nullsub_33(void)
{
}
static void BattleAICmd_if_status_in_party(void)
{
struct Pokemon *party;
+ struct Pokemon *partyPtr;
int i;
u32 statusToCompareTo;
- if (gAIScriptPtr[1] == USER)
- {
- party = gEnemyParty;
- }
- else if (0)
- {
- // what is going on here?
- follow_jump:
- gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
- return;
- }
- else
+ // for whatever reason, game freak put the party pointer into 2 variables instead of 1. it's possible at some point the switch encompassed the whole function and used each respective variable creating largely duplicate code.
+ switch (gAIScriptPtr[1])
{
- party = gPlayerParty;
+ case 1:
+ party = partyPtr = gEnemyParty;
+ break;
+ default:
+ party = partyPtr = gPlayerParty;
+ break;
}
statusToCompareTo = AIScriptRead32(gAIScriptPtr + 2);
@@ -1608,29 +1598,30 @@ static void BattleAICmd_if_status_in_party(void)
u32 status = GetMonData(&party[i], MON_DATA_STATUS);
if (species != SPECIES_NONE && species != SPECIES_EGG && hp != 0 && status == statusToCompareTo)
- goto follow_jump;
+ {
+ gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6); // WHAT. why is this being merged into the above switch
+ return;
+ }
}
gAIScriptPtr += 10;
}
+// bugged, doesnt return properly. also unused
static void BattleAICmd_if_status_not_in_party(void)
{
struct Pokemon *party;
+ struct Pokemon *partyPtr;
int i;
u32 statusToCompareTo;
- u8 *partyPtr;
- // what weird code. needed to match
switch (gAIScriptPtr[1])
{
case 1:
- partyPtr = (u8 *)gEnemyParty;
- party = (struct Pokemon *)partyPtr;
+ party = partyPtr = gEnemyParty;
break;
default:
- partyPtr = (u8 *)gPlayerParty;
- party = (struct Pokemon *)partyPtr;
+ party = partyPtr = gPlayerParty;
break;
}
@@ -1642,30 +1633,30 @@ static void BattleAICmd_if_status_not_in_party(void)
u16 hp = GetMonData(&party[i], MON_DATA_HP);
u32 status = GetMonData(&party[i], MON_DATA_STATUS);
- // this jump is seemingly bugged. everytime the status is found, the AI's logic jumps further and further past its intended destination.
+ // everytime the status is found, the AI's logic jumps further and further past its intended destination. this results in a broken AI macro and is probably why it is unused.
if (species != SPECIES_NONE && species != SPECIES_EGG && hp != 0 && status == statusToCompareTo)
gAIScriptPtr += 10; // doesnt return?
}
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
}
-static void BattleAICmd_unk_36(void)
+static void BattleAICmd_get_weather(void)
{
if (gBattleWeather & 7)
- gAIThinkingSpace.funcResult = 1;
+ AI_THINKING_STRUCT->funcResult = 1;
if (gBattleWeather & 0x18)
- gAIThinkingSpace.funcResult = 2;
+ AI_THINKING_STRUCT->funcResult = 2;
if (gBattleWeather & 0x60)
- gAIThinkingSpace.funcResult = 0;
+ AI_THINKING_STRUCT->funcResult = 0;
if (gBattleWeather & 0x80)
- gAIThinkingSpace.funcResult = 3;
+ AI_THINKING_STRUCT->funcResult = 3;
gAIScriptPtr += 1;
}
static void BattleAICmd_if_effect(void)
{
- if (gBattleMoves[gAIThinkingSpace.unk2].effect == gAIScriptPtr[1])
+ if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -1673,7 +1664,7 @@ static void BattleAICmd_if_effect(void)
static void BattleAICmd_if_not_effect(void)
{
- if (gBattleMoves[gAIThinkingSpace.unk2].effect != gAIScriptPtr[1])
+ if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect != gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -1684,9 +1675,9 @@ static void BattleAICmd_if_stat_level_less_than(void)
u32 party;
if (gAIScriptPtr[1] == USER)
- party = gUnknown_02024C07;
+ party = gPlayerMonIndex;
else
- party = gUnknown_02024C08;
+ party = gEnemyMonIndex;
if (gBattleMons[party].statStages[gAIScriptPtr[2]] < gAIScriptPtr[3])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
@@ -1699,9 +1690,9 @@ static void BattleAICmd_if_stat_level_more_than(void)
u32 party;
if (gAIScriptPtr[1] == USER)
- party = gUnknown_02024C07;
+ party = gPlayerMonIndex;
else
- party = gUnknown_02024C08;
+ party = gEnemyMonIndex;
if (gBattleMons[party].statStages[gAIScriptPtr[2]] > gAIScriptPtr[3])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
@@ -1714,9 +1705,9 @@ static void BattleAICmd_if_stat_level_equal(void)
u32 party;
if (gAIScriptPtr[1] == USER)
- party = gUnknown_02024C07;
+ party = gPlayerMonIndex;
else
- party = gUnknown_02024C08;
+ party = gEnemyMonIndex;
if (gBattleMons[party].statStages[gAIScriptPtr[2]] == gAIScriptPtr[3])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
@@ -1729,9 +1720,9 @@ static void BattleAICmd_if_stat_level_not_equal(void)
u32 party;
if (gAIScriptPtr[1] == USER)
- party = gUnknown_02024C07;
+ party = gPlayerMonIndex;
else
- party = gUnknown_02024C08;
+ party = gEnemyMonIndex;
if (gBattleMons[party].statStages[gAIScriptPtr[2]] != gAIScriptPtr[3])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
@@ -1741,27 +1732,27 @@ static void BattleAICmd_if_stat_level_not_equal(void)
static void BattleAICmd_if_can_faint(void)
{
- if (gBattleMoves[gAIThinkingSpace.unk2].power < 2)
+ if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power < 2)
{
gAIScriptPtr += 5;
return;
}
gUnknown_02024DEC = 0;
- ((struct BattleStruct *)((u8 *)&gAIThinkingSpace - 0x16800))->unk.unk1 = 0;
- ((struct BattleStruct *)((u8 *)&gAIThinkingSpace - 0x16800))->unk.unk4 = 1;
+ BATTLE_STRUCT->unk.unk1 = 0;
+ BATTLE_STRUCT->unk.unk4 = 1;
gBattleMoveFlags = 0;
gCritMultiplier = 1;
- gUnknown_02024BE6 = gAIThinkingSpace.unk2;
- sub_801CAF8(gUnknown_02024C07, gUnknown_02024C08);
- move_effectiveness_something(gUnknown_02024BE6, gUnknown_02024C07, gUnknown_02024C08);
+ gUnknown_02024BE6 = AI_THINKING_STRUCT->moveConsidered;
+ sub_801CAF8(gPlayerMonIndex, gEnemyMonIndex);
+ move_effectiveness_something(gUnknown_02024BE6, gPlayerMonIndex, gEnemyMonIndex);
- gBattleMoveDamage = gBattleMoveDamage * gAIThinkingSpace.unk18[gAIThinkingSpace.moveConsidered] / 100;
+ gBattleMoveDamage = gBattleMoveDamage * AI_THINKING_STRUCT->unk18[AI_THINKING_STRUCT->movesetIndex] / 100;
// moves always do at least 1 damage.
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- if (gBattleMons[gUnknown_02024C08].hp <= gBattleMoveDamage)
+ if (gBattleMons[gEnemyMonIndex].hp <= gBattleMoveDamage)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -1769,32 +1760,32 @@ static void BattleAICmd_if_can_faint(void)
static void BattleAICmd_if_cant_faint(void)
{
- if (gBattleMoves[gAIThinkingSpace.unk2].power < 2)
+ if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power < 2)
{
gAIScriptPtr += 5;
return;
}
gUnknown_02024DEC = 0;
- ((struct BattleStruct *)((u8 *)&gAIThinkingSpace - 0x16800))->unk.unk1 = 0;
- ((struct BattleStruct *)((u8 *)&gAIThinkingSpace - 0x16800))->unk.unk4 = 1;
+ BATTLE_STRUCT->unk.unk1 = 0;
+ BATTLE_STRUCT->unk.unk4 = 1;
gBattleMoveFlags = 0;
gCritMultiplier = 1;
- gUnknown_02024BE6 = gAIThinkingSpace.unk2;
- sub_801CAF8(gUnknown_02024C07, gUnknown_02024C08);
- move_effectiveness_something(gUnknown_02024BE6, gUnknown_02024C07, gUnknown_02024C08);
+ gUnknown_02024BE6 = AI_THINKING_STRUCT->moveConsidered;
+ sub_801CAF8(gPlayerMonIndex, gEnemyMonIndex);
+ move_effectiveness_something(gUnknown_02024BE6, gPlayerMonIndex, gEnemyMonIndex);
- gBattleMoveDamage = gBattleMoveDamage * gAIThinkingSpace.unk18[gAIThinkingSpace.moveConsidered] / 100;
+ gBattleMoveDamage = gBattleMoveDamage * AI_THINKING_STRUCT->unk18[AI_THINKING_STRUCT->movesetIndex] / 100;
// this macro is missing the damage 0 = 1 assumption.
- if (gBattleMons[gUnknown_02024C08].hp > gBattleMoveDamage)
+ if (gBattleMons[gEnemyMonIndex].hp > gBattleMoveDamage)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void BattleAICmd_unk_3F(void)
+static void BattleAICmd_if_has_move(void)
{
int i;
u16 *temp_ptr = (u16 *)(gAIScriptPtr + 2);
@@ -1805,7 +1796,7 @@ static void BattleAICmd_unk_3F(void)
case 3:
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gUnknown_02024C07].moves[i] == *temp_ptr)
+ if (gBattleMons[gPlayerMonIndex].moves[i] == *temp_ptr)
break;
}
if (i == 4)
@@ -1822,7 +1813,7 @@ static void BattleAICmd_unk_3F(void)
case 2:
for (i = 0; i < 8; i++)
{
- if (unk_2016A00.unk0[gUnknown_02024C08 >> 1][i] == *temp_ptr)
+ if (unk_2016A00.unk0[gEnemyMonIndex >> 1][i] == *temp_ptr)
break;
}
if (i == 8)
@@ -1838,7 +1829,7 @@ static void BattleAICmd_unk_3F(void)
}
}
-static void BattleAICmd_unk_40(void)
+static void BattleAICmd_if_dont_have_move(void)
{
int i;
u16 *temp_ptr = (u16 *)(gAIScriptPtr + 2);
@@ -1849,7 +1840,7 @@ static void BattleAICmd_unk_40(void)
case 3:
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gUnknown_02024C07].moves[i] == *temp_ptr)
+ if (gBattleMons[gPlayerMonIndex].moves[i] == *temp_ptr)
break;
}
if (i != 4)
@@ -1866,7 +1857,7 @@ static void BattleAICmd_unk_40(void)
case 2:
for (i = 0; i < 8; i++)
{
- if (unk_2016A00.unk0[gUnknown_02024C08 >> 1][i] == *temp_ptr)
+ if (unk_2016A00.unk0[gEnemyMonIndex >> 1][i] == *temp_ptr)
break;
}
if (i != 8)
@@ -1892,7 +1883,7 @@ static void BattleAICmd_if_move_effect(void)
case 3:
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gUnknown_02024C07].moves[i] != 0 && gBattleMoves[gBattleMons[gUnknown_02024C07].moves[i]].effect == gAIScriptPtr[2])
+ if (gBattleMons[gPlayerMonIndex].moves[i] != 0 && gBattleMoves[gBattleMons[gPlayerMonIndex].moves[i]].effect == gAIScriptPtr[2])
break;
}
if (i != 4)
@@ -1904,7 +1895,7 @@ static void BattleAICmd_if_move_effect(void)
case 2:
for (i = 0; i < 8; i++)
{
- if (gBattleMons[gUnknown_02024C07].moves[i] != 0 && gBattleMoves[unk_2016A00.unk0[gUnknown_02024C08 >> 1][i]].effect == gAIScriptPtr[2])
+ if (gBattleMons[gPlayerMonIndex].moves[i] != 0 && gBattleMoves[unk_2016A00.unk0[gEnemyMonIndex >> 1][i]].effect == gAIScriptPtr[2])
break;
}
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
@@ -1921,7 +1912,7 @@ static void BattleAICmd_if_not_move_effect(void)
case 3:
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gUnknown_02024C07].moves[i] != 0 && gBattleMoves[gBattleMons[gUnknown_02024C07].moves[i]].effect == gAIScriptPtr[2])
+ if (gBattleMons[gPlayerMonIndex].moves[i] != 0 && gBattleMoves[gBattleMons[gPlayerMonIndex].moves[i]].effect == gAIScriptPtr[2])
break;
}
if (i != 4)
@@ -1933,7 +1924,7 @@ static void BattleAICmd_if_not_move_effect(void)
case 2:
for (i = 0; i < 8; i++)
{
- if (unk_2016A00.unk0[gUnknown_02024C08 >> 1][i] != 0 && gBattleMoves[unk_2016A00.unk0[gUnknown_02024C08 >> 1][i]].effect == gAIScriptPtr[2])
+ if (unk_2016A00.unk0[gEnemyMonIndex >> 1][i] != 0 && gBattleMoves[unk_2016A00.unk0[gEnemyMonIndex >> 1][i]].effect == gAIScriptPtr[2])
break;
}
gAIScriptPtr += 7;
@@ -1942,16 +1933,16 @@ static void BattleAICmd_if_not_move_effect(void)
static void BattleAICmd_if_last_move_did_damage(void)
{
- u8 var;
+ u8 index;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
if (gAIScriptPtr[2] == 0)
{
- if (gUnknown_02024CA8[var].unk4 == 0)
+ if (gUnknown_02024CA8[index].unk4 == 0)
{
gAIScriptPtr += 7;
return;
@@ -1959,12 +1950,12 @@ static void BattleAICmd_if_last_move_did_damage(void)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
return;
}
- else if (gAIScriptPtr[2] != 1)
+ else if (gAIScriptPtr[2] != 1) // ignore the macro if its not 0 or 1.
{
gAIScriptPtr += 7;
return;
}
- else if (gUnknown_02024CA8[var].unk6 != 0)
+ else if (gUnknown_02024CA8[index].unk6 != 0)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
return;
@@ -1977,7 +1968,7 @@ static void BattleAICmd_if_encored(void)
switch (gAIScriptPtr[1])
{
case 0: // _08109348
- if (gUnknown_02024CA8[gUnknown_02024A60].unk4 == gAIThinkingSpace.unk2)
+ if (gUnknown_02024CA8[gUnknown_02024A60].unk4 == AI_THINKING_STRUCT->moveConsidered)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
return;
@@ -1985,7 +1976,7 @@ static void BattleAICmd_if_encored(void)
gAIScriptPtr += 6;
return;
case 1: // _08109370
- if (gUnknown_02024CA8[gUnknown_02024A60].unk6 == gAIThinkingSpace.unk2)
+ if (gUnknown_02024CA8[gUnknown_02024A60].unk6 == AI_THINKING_STRUCT->moveConsidered)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
return;
@@ -1998,170 +1989,167 @@ static void BattleAICmd_if_encored(void)
}
}
-static void BattleAICmd_unk_45(void)
+static void BattleAICmd_flee(void)
{
- gAIThinkingSpace.unk10 |= 0xB;
+ AI_THINKING_STRUCT->aiAction |= (AI_ACTION_UNK1 | AI_ACTION_UNK2 | AI_ACTION_UNK4); // what matters is UNK2 being enabled.
}
-static void BattleAICmd_if_random_2(void)
+static void BattleAICmd_if_random_100(void)
{
- u8 var = battle_2000000.unk88 * 5;
+ u8 safariFleeRate = BATTLE_STRUCT->safariFleeRate * 5; // safari flee rate, from 0-20
- if ((u8)(Random() % 100) < var)
+ if ((u8)(Random() % 100) < safariFleeRate)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-static void BattleAICmd_unk_47(void)
+static void BattleAICmd_watch(void)
{
- gAIThinkingSpace.unk10 |= 0xD;
+ AI_THINKING_STRUCT->aiAction |= (AI_ACTION_UNK1 | AI_ACTION_UNK3 | AI_ACTION_UNK4); // what matters is UNK3 being enabled.
}
static void BattleAICmd_get_hold_effect(void)
{
- u8 var;
+ u8 index;
u16 status;
- u8 *aiPtr;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- if (battle_side_get_owner(var) == 0)
+ if (battle_side_get_owner(index) == 0)
{
- // weird pointer arithmetic is needed to match.
- status = (battle_get_per_side_status(var) & 1);
- aiPtr = (u8 *)&gAIThinkingSpace;
- gAIThinkingSpace.funcResult = ((struct UnknownStruct1 *)((u8 *)aiPtr + 0x202))->unk20[status];
+ status = (battle_get_per_side_status(index) & 1);
+ AI_THINKING_STRUCT->funcResult = UNK_2016A00_STRUCT->unk22[status];
}
else
- gAIThinkingSpace.funcResult = ItemId_GetHoldEffect(gBattleMons[var].item);
+ AI_THINKING_STRUCT->funcResult = ItemId_GetHoldEffect(gBattleMons[index].item);
gAIScriptPtr += 2;
}
static void BattleAICmd_get_gender(void)
{
- u8 var;
+ u8 index;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- gAIThinkingSpace.funcResult = GetGenderFromSpeciesAndPersonality(gBattleMons[var].species, gBattleMons[var].personality);
+ AI_THINKING_STRUCT->funcResult = GetGenderFromSpeciesAndPersonality(gBattleMons[index].species, gBattleMons[index].personality);
gAIScriptPtr += 2;
}
static void BattleAICmd_is_first_turn(void)
{
- u8 var;
+ u8 index;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- gAIThinkingSpace.funcResult = gUnknown_02024CA8[var].unk16;
+ AI_THINKING_STRUCT->funcResult = gUnknown_02024CA8[index].unk16;
gAIScriptPtr += 2;
}
static void BattleAICmd_get_stockpile_count(void)
{
- u8 var;
+ u8 index;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- gAIThinkingSpace.funcResult = gUnknown_02024CA8[var].unk9;
+ AI_THINKING_STRUCT->funcResult = gUnknown_02024CA8[index].unk9;
gAIScriptPtr += 2;
}
-static void BattleAICmd_unk_4C(void)
+static void BattleAICmd_is_double_battle(void)
{
- gAIThinkingSpace.funcResult = gBattleTypeFlags & 1;
+ AI_THINKING_STRUCT->funcResult = gBattleTypeFlags & BATTLE_TYPE_DOUBLE;
gAIScriptPtr += 1;
}
static void BattleAICmd_get_item(void)
{
- u8 var;
+ u8 index;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- // this hack and a half matches. whatever. i dont care. someone else fix this mess later.
- ((struct AI_ThinkingStruct *)(unk_2000000 + 0x16800))->funcResult = unk_2000000[0x160CC + var * 2];
+ // this hack and a half matches. whatever. i dont care. someone else fix this mess later. PS: still cant fix this.
+ AI_THINKING_STRUCT->funcResult = unk_2000000[0x160CC + (index * 2)];
gAIScriptPtr += 2;
}
-static void BattleAICmd_unk_4E(void)
+static void BattleAICmd_get_move_type_from_result(void)
{
- gAIThinkingSpace.funcResult = gBattleMoves[gAIThinkingSpace.funcResult].type;
+ AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->funcResult].type;
gAIScriptPtr += 1;
}
-static void BattleAICmd_unk_4F(void)
+static void BattleAICmd_get_move_power_from_result(void)
{
- gAIThinkingSpace.funcResult = gBattleMoves[gAIThinkingSpace.funcResult].power;
+ AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->funcResult].power;
gAIScriptPtr += 1;
}
-static void BattleAICmd_unk_50(void)
+static void BattleAICmd_get_move_effect_from_result(void)
{
- gAIThinkingSpace.funcResult = gBattleMoves[gAIThinkingSpace.funcResult].effect;
+ AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->funcResult].effect;
gAIScriptPtr += 1;
}
static void BattleAICmd_get_protect_count(void)
{
- u8 var;
+ u8 index;
if (gAIScriptPtr[1] == USER)
- var = gUnknown_02024C07;
+ index = gPlayerMonIndex;
else
- var = gUnknown_02024C08;
+ index = gEnemyMonIndex;
- gAIThinkingSpace.funcResult = gUnknown_02024CA8[var].unk8;
+ AI_THINKING_STRUCT->funcResult = gUnknown_02024CA8[index].unk8;
gAIScriptPtr += 2;
}
-static void BattleAICmd_unk_52(void)
+static void BattleAICmd_nullsub_52(void)
{
}
-static void BattleAICmd_unk_53(void)
+static void BattleAICmd_nullsub_53(void)
{
}
-static void BattleAICmd_unk_54(void)
+static void BattleAICmd_nullsub_54(void)
{
}
-static void BattleAICmd_unk_55(void)
+static void BattleAICmd_nullsub_55(void)
{
}
-static void BattleAICmd_unk_56(void)
+static void BattleAICmd_nullsub_56(void)
{
}
-static void BattleAICmd_unk_57(void)
+static void BattleAICmd_nullsub_57(void)
{
}
@@ -2176,34 +2164,34 @@ static void BattleAICmd_jump(void)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
}
-static void BattleAICmd_unk_5A(void)
+static void BattleAICmd_end(void)
{
if (sub_8109908() == 0)
- gAIThinkingSpace.unk10 |= 1;
+ AI_THINKING_STRUCT->aiAction |= AI_ACTION_UNK1;
}
static void BattleAICmd_if_level_cond(void)
{
switch (gAIScriptPtr[1])
{
- case 0:
- if (gBattleMons[gUnknown_02024C07].level > gBattleMons[gUnknown_02024C08].level)
+ case 0: // greater than
+ if (gBattleMons[gPlayerMonIndex].level > gBattleMons[gEnemyMonIndex].level)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
return;
}
gAIScriptPtr += 6;
return;
- case 1:
- if (gBattleMons[gUnknown_02024C07].level < gBattleMons[gUnknown_02024C08].level)
+ case 1: // less than
+ if (gBattleMons[gPlayerMonIndex].level < gBattleMons[gEnemyMonIndex].level)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
return;
}
gAIScriptPtr += 6;
return;
- case 2:
- if (gBattleMons[gUnknown_02024C07].level == gBattleMons[gUnknown_02024C08].level)
+ case 2: // equal
+ if (gBattleMons[gPlayerMonIndex].level == gBattleMons[gEnemyMonIndex].level)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
return;
@@ -2215,7 +2203,7 @@ static void BattleAICmd_if_level_cond(void)
static void BattleAICmd_if_taunted(void)
{
- if (gUnknown_02024CA8[gUnknown_02024C08].taunt)
+ if (gUnknown_02024CA8[gEnemyMonIndex].taunt != 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -2223,7 +2211,7 @@ static void BattleAICmd_if_taunted(void)
static void BattleAICmd_if_not_taunted(void)
{
- if (!(gUnknown_02024CA8[gUnknown_02024C08].taunt))
+ if (gUnknown_02024CA8[gEnemyMonIndex].taunt == 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
diff --git a/src/battle_anim.c b/src/battle_anim.c
index 264a1dd9e..4cc337a0c 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -59,8 +59,8 @@ struct UnknownStruct3
extern u8 unk_2000000[];
extern u16 gUnknown_02024A6A[4];
extern u8 gUnknown_02024BE0[];
-extern u8 gUnknown_02024C07;
-extern u8 gUnknown_02024C08;
+extern u8 gPlayerMonIndex;
+extern u8 gEnemyMonIndex;
EWRAM_DATA const u8 *gBattleAnimScriptPtr = NULL;
EWRAM_DATA const u8 *gBattleAnimScriptRetAddr = NULL;
EWRAM_DATA void (*gUnknown_0202F7AC)(void) = NULL;
@@ -260,8 +260,8 @@ void battle_anim_clear_some_data(void)
void move_anim_start_t1(u16 a)
{
- gUnknown_0202F7C8 = gUnknown_02024C07;
- gUnknown_0202F7C9 = gUnknown_02024C08;
+ gUnknown_0202F7C8 = gPlayerMonIndex;
+ gUnknown_0202F7C9 = gEnemyMonIndex;
move_something(gBattleAnims_Moves, a, 1);
}
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 6d3e6a215..858b6cca1 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -21,6 +21,8 @@
#include "text.h"
#include "trainer.h"
#include "weather.h"
+#include "map_constants.h"
+#include "opponent_constants.h"
#define NUM_TRAINER_EYE_TRAINERS 56
#define TRAINER_REMATCH_STEPS 255
@@ -92,14 +94,11 @@ EWRAM_DATA u8 *gTrainerCannotBattleSpeech = NULL;
EWRAM_DATA u8 *gTrainerBattleScriptReturnAddress = NULL;
EWRAM_DATA u8 *gTrainerBattleEndScript = NULL;
-extern struct TrainerEyeTrainer gTrainerEyeTrainers[];
-
extern u8 gOtherText_CancelWithTerminator[];
extern u16 gBattleTypeFlags;
extern u16 gScriptLastTalked;
extern u8 gUnknown_02024D26;
-extern u16 gBadgeFlags[];
extern struct MapObject gMapObjects[];
@@ -112,14 +111,367 @@ extern u8 gUnknown_0819F8AE[];
extern u8 gUnknown_0819F80B[];
extern u8 gUnknown_081C6C02[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_0[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_1[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_2[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_3[];
-extern struct TrainerBattleSpec gTrainerBattleSpecs_4[];
-extern u8 gBattleTransitionTable_Wild[][2];
-extern u8 gBattleTransitionTable_Trainer[][2];
+static const u8 gBattleTransitionTable_Wild[][2] =
+{
+ {8, 9},
+ {5, 10},
+ {0, 10},
+ {7, 6},
+};
+static const u8 gBattleTransitionTable_Trainer[][2] =
+{
+ {4, 11},
+ {2, 3},
+ {0, 10},
+ {1, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_0[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 2},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 5},
+ {&gTrainerBattleEndScript, 5},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_1[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 2},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 5},
+ {&gTrainerBattleEndScript, 2},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_2[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 2},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 2},
+ {&gTrainerBattleEndScript, 5},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_3[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 5},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 5},
+ {&gTrainerBattleEndScript, 5},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+static const struct TrainerBattleSpec gTrainerBattleSpecs_4[] =
+{
+ {&gTrainerBattleMode, 0},
+ {&gTrainerBattleOpponent, 1},
+ {&gTrainerMapObjectLocalId, 1},
+ {&gTrainerIntroSpeech, 2},
+ {&gTrainerDefeatSpeech, 2},
+ {&gTrainerVictorySpeech, 5},
+ {&gTrainerCannotBattleSpeech, 2},
+ {&gTrainerBattleEndScript, 2},
+ {&gTrainerBattleScriptReturnAddress, 6},
+};
+
+const struct TrainerEyeTrainer gTrainerEyeTrainers[] =
+{
+ {
+ {OPPONENT_ROSE_1, OPPONENT_ROSE_2, OPPONENT_ROSE_3, OPPONENT_ROSE_4, OPPONENT_ROSE_5},
+ MAP_GROUP_ROUTE118,
+ MAP_ID_ROUTE118,
+ },
+ {
+ {OPPONENT_DUSTY_1, OPPONENT_DUSTY_2, OPPONENT_DUSTY_3, OPPONENT_DUSTY_4, OPPONENT_DUSTY_5},
+ MAP_GROUP_ROUTE111,
+ MAP_ID_ROUTE111,
+ },
+ {
+ {OPPONENT_LOLA_1, OPPONENT_LOLA_2, OPPONENT_LOLA_3, OPPONENT_LOLA_4, OPPONENT_LOLA_5},
+ MAP_GROUP_ROUTE109,
+ MAP_ID_ROUTE109,
+ },
+ {
+ {OPPONENT_RICKY_1, OPPONENT_RICKY_2, OPPONENT_RICKY_3, OPPONENT_RICKY_4, OPPONENT_RICKY_5},
+ MAP_GROUP_ROUTE109,
+ MAP_ID_ROUTE109,
+ },
+ {
+ {OPPONENT_RITA_AND_SAM_1, OPPONENT_RITA_AND_SAM_2, OPPONENT_RITA_AND_SAM_3, OPPONENT_RITA_AND_SAM_4, OPPONENT_RITA_AND_SAM_5},
+ MAP_GROUP_ROUTE124,
+ MAP_ID_ROUTE124,
+ },
+ {
+ {OPPONENT_BROOKE_1, OPPONENT_BROOKE_2, OPPONENT_BROOKE_3, OPPONENT_BROOKE_4, OPPONENT_BROOKE_5},
+ MAP_GROUP_ROUTE111,
+ MAP_ID_ROUTE111,
+ },
+ {
+ {OPPONENT_WILTON_1, OPPONENT_WILTON_2, OPPONENT_WILTON_3, OPPONENT_WILTON_4, OPPONENT_WILTON_5},
+ MAP_GROUP_ROUTE111,
+ MAP_ID_ROUTE111,
+ },
+ {
+ {OPPONENT_VALERIE_1, OPPONENT_VALERIE_2, OPPONENT_VALERIE_3, OPPONENT_VALERIE_4, OPPONENT_VALERIE_5},
+ MAP_GROUP_MT_PYRE_6F,
+ MAP_ID_MT_PYRE_6F,
+ },
+ {
+ {OPPONENT_CINDY_1, OPPONENT_CINDY_3, OPPONENT_CINDY_4, OPPONENT_CINDY_5, OPPONENT_CINDY_6},
+ MAP_GROUP_ROUTE104,
+ MAP_ID_ROUTE104,
+ },
+ {
+ {OPPONENT_JESSICA_1, OPPONENT_JESSICA_2, OPPONENT_JESSICA_3, OPPONENT_JESSICA_4, OPPONENT_JESSICA_5},
+ MAP_GROUP_ROUTE121,
+ MAP_ID_ROUTE121,
+ },
+ {
+ {OPPONENT_WINSTON_1, OPPONENT_WINSTON_2, OPPONENT_WINSTON_3, OPPONENT_WINSTON_4, OPPONENT_WINSTON_5},
+ MAP_GROUP_ROUTE104,
+ MAP_ID_ROUTE104,
+ },
+ {
+ {OPPONENT_STEVE_1, OPPONENT_STEVE_2, OPPONENT_STEVE_3, OPPONENT_STEVE_4, OPPONENT_STEVE_5},
+ MAP_GROUP_ROUTE114,
+ MAP_ID_ROUTE114,
+ },
+ {
+ {OPPONENT_TONY_1, OPPONENT_TONY_2, OPPONENT_TONY_3, OPPONENT_TONY_4, OPPONENT_TONY_5},
+ MAP_GROUP_ROUTE107,
+ MAP_ID_ROUTE107,
+ },
+ {
+ {OPPONENT_NOB_1, OPPONENT_NOB_2, OPPONENT_NOB_3, OPPONENT_NOB_4, OPPONENT_NOB_5},
+ MAP_GROUP_ROUTE115,
+ MAP_ID_ROUTE115,
+ },
+ {
+ {OPPONENT_DALTON_1, OPPONENT_DALTON_2, OPPONENT_DALTON_3, OPPONENT_DALTON_4, OPPONENT_DALTON_5},
+ MAP_GROUP_ROUTE118,
+ MAP_ID_ROUTE118,
+ },
+ {
+ {OPPONENT_BERNIE_1, OPPONENT_BERNIE_2, OPPONENT_BERNIE_3, OPPONENT_BERNIE_4, OPPONENT_BERNIE_5},
+ MAP_GROUP_ROUTE114,
+ MAP_ID_ROUTE114,
+ },
+ {
+ {OPPONENT_ETHAN_1, OPPONENT_ETHAN_2, OPPONENT_ETHAN_3, OPPONENT_ETHAN_4, OPPONENT_ETHAN_5},
+ MAP_GROUP_JAGGED_PASS,
+ MAP_ID_JAGGED_PASS,
+ },
+ {
+ {OPPONENT_JOHN_AND_JAY_1, OPPONENT_JOHN_AND_JAY_2, OPPONENT_JOHN_AND_JAY_3, OPPONENT_JOHN_AND_JAY_4, OPPONENT_JOHN_AND_JAY_5},
+ MAP_GROUP_METEOR_FALLS_1F_2R,
+ MAP_ID_METEOR_FALLS_1F_2R,
+ },
+ {
+ {OPPONENT_BRANDON_1, OPPONENT_BRANDON_2, OPPONENT_BRANDON_3, OPPONENT_BRANDON_4, OPPONENT_BRANDON_5},
+ MAP_GROUP_ROUTE120,
+ MAP_ID_ROUTE120,
+ },
+ {
+ {OPPONENT_CAMERON_1, OPPONENT_CAMERON_2, OPPONENT_CAMERON_3, OPPONENT_CAMERON_4, OPPONENT_CAMERON_5},
+ MAP_GROUP_ROUTE123,
+ MAP_ID_ROUTE123,
+ },
+ {
+ {OPPONENT_JACKI_1, OPPONENT_JACKI_2, OPPONENT_JACKI_3, OPPONENT_JACKI_4, OPPONENT_JACKI_5},
+ MAP_GROUP_ROUTE123,
+ MAP_ID_ROUTE123,
+ },
+ {
+ {OPPONENT_WALTER_1, OPPONENT_WALTER_2, OPPONENT_WALTER_3, OPPONENT_WALTER_4, OPPONENT_WALTER_5},
+ MAP_GROUP_ROUTE121,
+ MAP_ID_ROUTE121,
+ },
+ {
+ {OPPONENT_KAREN_1, OPPONENT_KAREN_2, OPPONENT_KAREN_3, OPPONENT_KAREN_4, OPPONENT_KAREN_5},
+ MAP_GROUP_ROUTE116,
+ MAP_ID_ROUTE116,
+ },
+ {
+ {OPPONENT_JERRY_1, OPPONENT_JERRY_2, OPPONENT_JERRY_3, OPPONENT_JERRY_4, OPPONENT_JERRY_5},
+ MAP_GROUP_ROUTE116,
+ MAP_ID_ROUTE116,
+ },
+ {
+ {OPPONENT_ANNA_AND_MEG_1, OPPONENT_ANNA_AND_MEG_2, OPPONENT_ANNA_AND_MEG_3, OPPONENT_ANNA_AND_MEG_4, OPPONENT_ANNA_AND_MEG_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_ISABEL_1, OPPONENT_ISABEL_2, OPPONENT_ISABEL_3, OPPONENT_ISABEL_4, OPPONENT_ISABEL_5},
+ MAP_GROUP_ROUTE110,
+ MAP_ID_ROUTE110,
+ },
+ {
+ {OPPONENT_MIGUEL_1, OPPONENT_MIGUEL_2, OPPONENT_MIGUEL_3, OPPONENT_MIGUEL_4, OPPONENT_MIGUEL_5},
+ MAP_GROUP_ROUTE103,
+ MAP_ID_ROUTE103,
+ },
+ {
+ {OPPONENT_TIMOTHY_1, OPPONENT_TIMOTHY_2, OPPONENT_TIMOTHY_3, OPPONENT_TIMOTHY_4, OPPONENT_TIMOTHY_5},
+ MAP_GROUP_ROUTE115,
+ MAP_ID_ROUTE115,
+ },
+ {
+ {OPPONENT_SHELBY_1, OPPONENT_SHELBY_2, OPPONENT_SHELBY_3, OPPONENT_SHELBY_4, OPPONENT_SHELBY_5},
+ MAP_GROUP_MT_CHIMNEY,
+ MAP_ID_MT_CHIMNEY,
+ },
+ {
+ {OPPONENT_CALVIN_1, OPPONENT_CALVIN_2, OPPONENT_CALVIN_3, OPPONENT_CALVIN_4, OPPONENT_CALVIN_5},
+ MAP_GROUP_ROUTE102,
+ MAP_ID_ROUTE102,
+ },
+ {
+ {OPPONENT_ELLIOT_1, OPPONENT_ELLIOT_2, OPPONENT_ELLIOT_3, OPPONENT_ELLIOT_4, OPPONENT_ELLIOT_5},
+ MAP_GROUP_ROUTE106,
+ MAP_ID_ROUTE106,
+ },
+ {
+ {OPPONENT_ABIGAIL_1, OPPONENT_ABIGAIL_2, OPPONENT_ABIGAIL_3, OPPONENT_ABIGAIL_4, OPPONENT_ABIGAIL_5},
+ MAP_GROUP_ROUTE110,
+ MAP_ID_ROUTE110,
+ },
+ {
+ {OPPONENT_BENJAMIN_1, OPPONENT_BENJAMIN_2, OPPONENT_BENJAMIN_3, OPPONENT_BENJAMIN_4, OPPONENT_BENJAMIN_5},
+ MAP_GROUP_ROUTE110,
+ MAP_ID_ROUTE110,
+ },
+ {
+ {OPPONENT_ISAIAH_1, OPPONENT_ISAIAH_2, OPPONENT_ISAIAH_3, OPPONENT_ISAIAH_4, OPPONENT_ISAIAH_5},
+ MAP_GROUP_ROUTE128,
+ MAP_ID_ROUTE128,
+ },
+ {
+ {OPPONENT_KATELYN_1, OPPONENT_KATELYN_2, OPPONENT_KATELYN_3, OPPONENT_KATELYN_4, OPPONENT_KATELYN_5},
+ MAP_GROUP_ROUTE128,
+ MAP_ID_ROUTE128,
+ },
+ {
+ {OPPONENT_MARIA_1, OPPONENT_MARIA_2, OPPONENT_MARIA_3, OPPONENT_MARIA_4, OPPONENT_MARIA_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_DYLAN_1, OPPONENT_DYLAN_2, OPPONENT_DYLAN_3, OPPONENT_DYLAN_4, OPPONENT_DYLAN_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_NICOLAS_1, OPPONENT_NICOLAS_2, OPPONENT_NICOLAS_3, OPPONENT_NICOLAS_4, OPPONENT_NICOLAS_5},
+ MAP_GROUP_METEOR_FALLS_1F_2R,
+ MAP_ID_METEOR_FALLS_1F_2R,
+ },
+ {
+ {OPPONENT_ROBERT_1, OPPONENT_ROBERT_2, OPPONENT_ROBERT_3, OPPONENT_ROBERT_4, OPPONENT_ROBERT_5},
+ MAP_GROUP_ROUTE120,
+ MAP_ID_ROUTE120,
+ },
+ {
+ {OPPONENT_LAO_1, OPPONENT_LAO_2, OPPONENT_LAO_3, OPPONENT_LAO_4, OPPONENT_LAO_5},
+ MAP_GROUP_ROUTE113,
+ MAP_ID_ROUTE113,
+ },
+ {
+ {OPPONENT_CYNDY_1, OPPONENT_CYNDY_2, OPPONENT_CYNDY_3, OPPONENT_CYNDY_4, OPPONENT_CYNDY_5},
+ MAP_GROUP_ROUTE115,
+ MAP_ID_ROUTE115,
+ },
+ {
+ {OPPONENT_MADELINE_1, OPPONENT_MADELINE_2, OPPONENT_MADELINE_3, OPPONENT_MADELINE_4, OPPONENT_MADELINE_5},
+ MAP_GROUP_ROUTE113,
+ MAP_ID_ROUTE113,
+ },
+ {
+ {OPPONENT_JENNY_1, OPPONENT_JENNY_2, OPPONENT_JENNY_3, OPPONENT_JENNY_4, OPPONENT_JENNY_5},
+ MAP_GROUP_ROUTE124,
+ MAP_ID_ROUTE124,
+ },
+ {
+ {OPPONENT_DIANA_1, OPPONENT_DIANA_2, OPPONENT_DIANA_3, OPPONENT_DIANA_4, OPPONENT_DIANA_5},
+ MAP_GROUP_JAGGED_PASS,
+ MAP_ID_JAGGED_PASS,
+ },
+ {
+ {OPPONENT_AMY_AND_LIV_1, OPPONENT_AMY_AND_LIV_2, OPPONENT_AMY_AND_LIV_4, OPPONENT_AMY_AND_LIV_5, OPPONENT_AMY_AND_LIV_6},
+ MAP_GROUP_ROUTE103,
+ MAP_ID_ROUTE103,
+ },
+ {
+ {OPPONENT_ERNEST_1, OPPONENT_ERNEST_2, OPPONENT_ERNEST_3, OPPONENT_ERNEST_4, OPPONENT_ERNEST_5},
+ MAP_GROUP_ROUTE125,
+ MAP_ID_ROUTE125,
+ },
+ {
+ {OPPONENT_EDWIN_1, OPPONENT_EDWIN_2, OPPONENT_EDWIN_3, OPPONENT_EDWIN_4, OPPONENT_EDWIN_5},
+ MAP_GROUP_ROUTE110,
+ MAP_ID_ROUTE110,
+ },
+ {
+ {OPPONENT_LYDIA_1, OPPONENT_LYDIA_2, OPPONENT_LYDIA_3, OPPONENT_LYDIA_4, OPPONENT_LYDIA_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_ISAAC_1, OPPONENT_ISAAC_2, OPPONENT_ISAAC_3, OPPONENT_ISAAC_4, OPPONENT_ISAAC_5},
+ MAP_GROUP_ROUTE117,
+ MAP_ID_ROUTE117,
+ },
+ {
+ {OPPONENT_CATHERINE_1, OPPONENT_CATHERINE_2, OPPONENT_CATHERINE_3, OPPONENT_CATHERINE_4, OPPONENT_CATHERINE_5},
+ MAP_GROUP_ROUTE119,
+ MAP_ID_ROUTE119,
+ },
+ {
+ {OPPONENT_JACKSON_1, OPPONENT_JACKSON_2, OPPONENT_JACKSON_3, OPPONENT_JACKSON_4, OPPONENT_JACKSON_5},
+ MAP_GROUP_ROUTE119,
+ MAP_ID_ROUTE119,
+ },
+ {
+ {OPPONENT_HALEY_1, OPPONENT_HALEY_2, OPPONENT_HALEY_3, OPPONENT_HALEY_4, OPPONENT_HALEY_5},
+ MAP_GROUP_ROUTE104,
+ MAP_ID_ROUTE104,
+ },
+ {
+ {OPPONENT_JAMES_1, OPPONENT_JAMES_2, OPPONENT_JAMES_3, OPPONENT_JAMES_4, OPPONENT_JAMES_5},
+ MAP_GROUP_PETALBURG_WOODS,
+ MAP_ID_PETALBURG_WOODS,
+ },
+ {
+ {OPPONENT_TRENT_1, OPPONENT_TRENT_2, OPPONENT_TRENT_3, OPPONENT_TRENT_4, OPPONENT_TRENT_5},
+ MAP_GROUP_ROUTE112,
+ MAP_ID_ROUTE112,
+ },
+ {
+ {OPPONENT_LOIS_AND_HAL_1, OPPONENT_LOIS_AND_HAL_2, OPPONENT_LOIS_AND_HAL_3, OPPONENT_LOIS_AND_HAL_4, OPPONENT_LOIS_AND_HAL_5},
+ MAP_GROUP_ABANDONED_SHIP_ROOMS2_1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS2_1F,
+ },
+ {
+ {OPPONENT_WALLY_3, OPPONENT_WALLY_4, OPPONENT_WALLY_5, OPPONENT_WALLY_6, OPPONENT_NONE},
+ MAP_GROUP_VICTORY_ROAD_1F,
+ MAP_ID_VICTORY_ROAD_1F,
+ },
+};
+
+static const u16 sBadgeFlags[] = {BADGE01_GET, BADGE02_GET, BADGE03_GET, BADGE04_GET, BADGE05_GET, BADGE06_GET, BADGE07_GET, BADGE08_GET};
void task01_battle_start(u8 taskId)
{
@@ -592,7 +944,7 @@ void sub_80822BC(void)
gTrainerBattleEndScript = 0;
}
-void TrainerBattleLoadArgs(struct TrainerBattleSpec *specs, u8 *data)
+void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, u8 *data)
{
while (1)
{
@@ -902,7 +1254,7 @@ u8 *sub_8082880(void)
return SanitizeString(gTrainerCannotBattleSpeech);
}
-s32 sub_8082894(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+s32 sub_8082894(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 i;
@@ -914,7 +1266,7 @@ s32 sub_8082894(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return -1;
}
-s32 sub_80828B8(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+s32 sub_80828B8(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 i;
s32 j;
@@ -930,7 +1282,7 @@ s32 sub_80828B8(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return -1;
}
-bool32 sub_80828FC(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
+bool32 sub_80828FC(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
{
int i;
bool32 ret = FALSE;
@@ -955,7 +1307,7 @@ bool32 sub_80828FC(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
return ret;
}
-s32 sub_80829A8(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
+s32 sub_80829A8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
{
s32 i;
@@ -967,7 +1319,7 @@ s32 sub_80829A8(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
return 0;
}
-s32 sub_80829E8(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
+s32 sub_80829E8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
{
s32 i;
@@ -979,7 +1331,7 @@ s32 sub_80829E8(struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
return 0;
}
-bool8 sub_8082A18(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
@@ -989,7 +1341,7 @@ bool8 sub_8082A18(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return FALSE;
}
-bool8 sub_8082A54(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+bool8 sub_8082A54(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 trainerEyeIndex = sub_80828B8(trainers, trainerNum);
@@ -999,10 +1351,10 @@ bool8 sub_8082A54(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return FALSE;
}
-u16 sub_8082A90(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+u16 sub_8082A90(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
int i;
- struct TrainerEyeTrainer *trainer;
+ const struct TrainerEyeTrainer *trainer;
s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
if (trainerEyeIndex == -1)
@@ -1018,7 +1370,7 @@ u16 sub_8082A90(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return trainer->trainerNums[4];
}
-void sub_8082AE4(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+void sub_8082AE4(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 trainerEyeIndex = sub_80828B8(trainers, trainerNum);
@@ -1026,7 +1378,7 @@ void sub_8082AE4(struct TrainerEyeTrainer *trainers, u16 trainerNum)
gSaveBlock1.trainerRematches[trainerEyeIndex] = 0;
}
-bool8 sub_8082B10(struct TrainerEyeTrainer *trainers, u16 trainerNum)
+bool8 sub_8082B10(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
@@ -1043,7 +1395,7 @@ bool32 sub_8082B44(void)
for (i = 0; i < 8; i++)
{
- if (FlagGet(gBadgeFlags[i]) == TRUE)
+ if (FlagGet(sBadgeFlags[i]) == TRUE)
{
badgeCount++;
if (badgeCount >= 5)
diff --git a/src/berry.c b/src/berry.c
index 2a8ce8380..7932fafea 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -10,9 +10,788 @@
#define FIRST_BERRY ITEM_CHERI_BERRY
#define LAST_BERRY ITEM_ENIGMA_BERRY
-extern struct Berry gBerries[];
+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.");
+
+const struct Berry gBerries[] =
+{
+ {
+ .name = _("CHERI"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 20,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Cheri,
+ .description2 = gBerryDescriptionPart2_Cheri,
+ .stageDuration = 3,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("CHESTO"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 80,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Chesto,
+ .description2 = gBerryDescriptionPart2_Chesto,
+ .stageDuration = 3,
+ .spicy = 0,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("PECHA"),
+ .firmness = BERRY_FIRMNESS_VERY_SOFT,
+ .size = 40,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Pecha,
+ .description2 = gBerryDescriptionPart2_Pecha,
+ .stageDuration = 3,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("RAWST"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 32,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Rawst,
+ .description2 = gBerryDescriptionPart2_Rawst,
+ .stageDuration = 3,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("ASPEAR"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 50,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Aspear,
+ .description2 = gBerryDescriptionPart2_Aspear,
+ .stageDuration = 3,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 10,
+ .smoothness = 25,
+ },
+ {
+ .name = _("LEPPA"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 28,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Leppa,
+ .description2 = gBerryDescriptionPart2_Leppa,
+ .stageDuration = 4,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("ORAN"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 35,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Oran,
+ .description2 = gBerryDescriptionPart2_Oran,
+ .stageDuration = 3,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("PERSIM"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 47,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Persim,
+ .description2 = gBerryDescriptionPart2_Persim,
+ .stageDuration = 3,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("LUM"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 34,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Lum,
+ .description2 = gBerryDescriptionPart2_Lum,
+ .stageDuration = 12,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("SITRUS"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 95,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Sitrus,
+ .description2 = gBerryDescriptionPart2_Sitrus,
+ .stageDuration = 6,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("FIGY"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 100,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Figy,
+ .description2 = gBerryDescriptionPart2_Figy,
+ .stageDuration = 6,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("WIKI"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 115,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Wiki,
+ .description2 = gBerryDescriptionPart2_Wiki,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("MAGO"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 126,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Mago,
+ .description2 = gBerryDescriptionPart2_Mago,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("AGUAV"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 64,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Aguav,
+ .description2 = gBerryDescriptionPart2_Aguav,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 25,
+ },
+ {
+ .name = _("IAPAPA"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 223,
+ .maxYield = 3,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Iapapa,
+ .description2 = gBerryDescriptionPart2_Iapapa,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 10,
+ .smoothness = 25,
+ },
+ {
+ .name = _("RAZZ"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 120,
+ .maxYield = 6,
+ .minYield = 3,
+ .description1 = gBerryDescriptionPart1_Razz,
+ .description2 = gBerryDescriptionPart2_Razz,
+ .stageDuration = 1,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 20,
+ },
+ {
+ .name = _("BLUK"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 108,
+ .maxYield = 6,
+ .minYield = 3,
+ .description1 = gBerryDescriptionPart1_Bluk,
+ .description2 = gBerryDescriptionPart2_Bluk,
+ .stageDuration = 1,
+ .spicy = 0,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 20,
+ },
+ {
+ .name = _("NANAB"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 77,
+ .maxYield = 6,
+ .minYield = 3,
+ .description1 = gBerryDescriptionPart1_Nanab,
+ .description2 = gBerryDescriptionPart2_Nanab,
+ .stageDuration = 1,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 20,
+ },
+ {
+ .name = _("WEPEAR"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 74,
+ .maxYield = 6,
+ .minYield = 3,
+ .description1 = gBerryDescriptionPart1_Wepear,
+ .description2 = gBerryDescriptionPart2_Wepear,
+ .stageDuration = 1,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("PINAP"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 80,
+ .maxYield = 6,
+ .minYield = 3,
+ .description1 = gBerryDescriptionPart1_Pinap,
+ .description2 = gBerryDescriptionPart2_Pinap,
+ .stageDuration = 1,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("POMEG"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 135,
+ .maxYield = 6,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Pomeg,
+ .description2 = gBerryDescriptionPart2_Pomeg,
+ .stageDuration = 3,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 20,
+ },
+ {
+ .name = _("KELPSY"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 150,
+ .maxYield = 6,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Kelpsy,
+ .description2 = gBerryDescriptionPart2_Kelpsy,
+ .stageDuration = 3,
+ .spicy = 0,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("QUALOT"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 110,
+ .maxYield = 6,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Qualot,
+ .description2 = gBerryDescriptionPart2_Qualot,
+ .stageDuration = 3,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("HONDEW"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 162,
+ .maxYield = 6,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Hondew,
+ .description2 = gBerryDescriptionPart2_Hondew,
+ .stageDuration = 3,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 20,
+ },
+ {
+ .name = _("GREPA"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 149,
+ .maxYield = 6,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Grepa,
+ .description2 = gBerryDescriptionPart2_Grepa,
+ .stageDuration = 3,
+ .spicy = 0,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 10,
+ .smoothness = 20,
+ },
+ {
+ .name = _("TAMATO"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 200,
+ .maxYield = 4,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Tamato,
+ .description2 = gBerryDescriptionPart2_Tamato,
+ .stageDuration = 6,
+ .spicy = 20,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 30,
+ },
+ {
+ .name = _("CORNN"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 75,
+ .maxYield = 4,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Cornn,
+ .description2 = gBerryDescriptionPart2_Cornn,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 20,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 30,
+ },
+ {
+ .name = _("MAGOST"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 140,
+ .maxYield = 4,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Magost,
+ .description2 = gBerryDescriptionPart2_Magost,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 20,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 30,
+ },
+ {
+ .name = _("RABUTA"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 226,
+ .maxYield = 4,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Rabuta,
+ .description2 = gBerryDescriptionPart2_Rabuta,
+ .stageDuration = 6,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 20,
+ .sour = 10,
+ .smoothness = 30,
+ },
+ {
+ .name = _("NOMEL"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 285,
+ .maxYield = 4,
+ .minYield = 2,
+ .description1 = gBerryDescriptionPart1_Nomel,
+ .description2 = gBerryDescriptionPart2_Nomel,
+ .stageDuration = 6,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 20,
+ .smoothness = 30,
+ },
+ {
+ .name = _("SPELON"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 133,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Spelon,
+ .description2 = gBerryDescriptionPart2_Spelon,
+ .stageDuration = 18,
+ .spicy = 40,
+ .dry = 10,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 70,
+ },
+ {
+ .name = _("PAMTRE"),
+ .firmness = BERRY_FIRMNESS_VERY_SOFT,
+ .size = 244,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Pamtre,
+ .description2 = gBerryDescriptionPart2_Pamtre,
+ .stageDuration = 18,
+ .spicy = 0,
+ .dry = 40,
+ .sweet = 10,
+ .bitter = 0,
+ .sour = 0,
+ .smoothness = 70,
+ },
+ {
+ .name = _("WATMEL"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 250,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Watmel,
+ .description2 = gBerryDescriptionPart2_Watmel,
+ .stageDuration = 18,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 40,
+ .bitter = 10,
+ .sour = 0,
+ .smoothness = 70,
+ },
+ {
+ .name = _("DURIN"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 280,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Durin,
+ .description2 = gBerryDescriptionPart2_Durin,
+ .stageDuration = 18,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 40,
+ .sour = 10,
+ .smoothness = 70,
+ },
+ {
+ .name = _("BELUE"),
+ .firmness = BERRY_FIRMNESS_VERY_SOFT,
+ .size = 300,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Belue,
+ .description2 = gBerryDescriptionPart2_Belue,
+ .stageDuration = 18,
+ .spicy = 10,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 40,
+ .smoothness = 70,
+ },
+ {
+ .name = _("LIECHI"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 111,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Liechi,
+ .description2 = gBerryDescriptionPart2_Liechi,
+ .stageDuration = 24,
+ .spicy = 40,
+ .dry = 0,
+ .sweet = 40,
+ .bitter = 0,
+ .sour = 10,
+ .smoothness = 80,
+ },
+ {
+ .name = _("GANLON"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 33,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Ganlon,
+ .description2 = gBerryDescriptionPart2_Ganlon,
+ .stageDuration = 24,
+ .spicy = 0,
+ .dry = 40,
+ .sweet = 0,
+ .bitter = 40,
+ .sour = 0,
+ .smoothness = 80,
+ },
+ {
+ .name = _("SALAC"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 95,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Salac,
+ .description2 = gBerryDescriptionPart2_Salac,
+ .stageDuration = 24,
+ .spicy = 0,
+ .dry = 0,
+ .sweet = 40,
+ .bitter = 0,
+ .sour = 40,
+ .smoothness = 80,
+ },
+ {
+ .name = _("PETAYA"),
+ .firmness = BERRY_FIRMNESS_VERY_HARD,
+ .size = 237,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Petaya,
+ .description2 = gBerryDescriptionPart2_Petaya,
+ .stageDuration = 24,
+ .spicy = 40,
+ .dry = 0,
+ .sweet = 0,
+ .bitter = 40,
+ .sour = 0,
+ .smoothness = 80,
+ },
+ {
+ .name = _("APICOT"),
+ .firmness = BERRY_FIRMNESS_HARD,
+ .size = 75,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Apicot,
+ .description2 = gBerryDescriptionPart2_Apicot,
+ .stageDuration = 24,
+ .spicy = 0,
+ .dry = 40,
+ .sweet = 0,
+ .bitter = 0,
+ .sour = 40,
+ .smoothness = 80,
+ },
+ {
+ .name = _("LANSAT"),
+ .firmness = BERRY_FIRMNESS_SOFT,
+ .size = 97,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Lansat,
+ .description2 = gBerryDescriptionPart2_Lansat,
+ .stageDuration = 24,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 30,
+ },
+ {
+ .name = _("STARF"),
+ .firmness = BERRY_FIRMNESS_SUPER_HARD,
+ .size = 153,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Starf,
+ .description2 = gBerryDescriptionPart2_Starf,
+ .stageDuration = 24,
+ .spicy = 10,
+ .dry = 10,
+ .sweet = 10,
+ .bitter = 10,
+ .sour = 10,
+ .smoothness = 30,
+ },
+ {
+ .name = _("ENIGMA"),
+ .firmness = BERRY_FIRMNESS_UNKNOWN,
+ .size = 0,
+ .maxYield = 2,
+ .minYield = 1,
+ .description1 = gBerryDescriptionPart1_Enigma,
+ .description2 = gBerryDescriptionPart2_Enigma,
+ .stageDuration = 24,
+ .spicy = 40,
+ .dry = 40,
+ .sweet = 40,
+ .bitter = 40,
+ .sour = 40,
+ .smoothness = 40,
+ },
+};
+
+const struct BerryTree gBlankBerryTree = {0};
+
extern u8 BerryTreeScript;
-extern struct BerryTree gBlankBerryTree;
extern u16 gScriptItemId;
extern u16 gScriptLastTalked;
extern u16 gSpecialVar_0x8004;
@@ -39,8 +818,8 @@ void SetEnigmaBerry(u8 *src)
u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
{
- u8 *description1;
- u8 *description2;
+ const u8 *description1;
+ const u8 *description2;
u32 i;
u32 checksum;
u8 *dest;
@@ -74,7 +853,7 @@ bool32 IsEnigmaBerryValid(void)
return TRUE;
}
-struct Berry *GetBerryInfo(u8 berry)
+const struct Berry *GetBerryInfo(u8 berry)
{
if (berry == 0x2B && IsEnigmaBerryValid())
return &gSaveBlock1.enigmaBerry.berry;
@@ -319,7 +1098,7 @@ u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water)
u8 CalcBerryYield(struct BerryTree *tree)
{
- struct Berry *berry = GetBerryInfo(tree->berry);
+ const struct Berry *berry = GetBerryInfo(tree->berry);
u8 min = berry->minYield;
u8 max = berry->maxYield;
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index 040b9acd1..103f0a85e 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -265,7 +265,7 @@ static void sub_8146480(u8 taskid)
static void sub_81464E4(void)
{
- struct Berry *berryInfo;
+ const struct Berry *berryInfo;
u32 size;
s32 sizeMajor;
s32 sizeMinor;
@@ -306,7 +306,7 @@ static void sub_81464E4(void)
static void sub_8146600(u8 berry)
{
- struct Berry *berryInfo;
+ const struct Berry *berryInfo;
u16 i;
berryInfo = GetBerryInfo(berry + 1);
@@ -344,98 +344,98 @@ __attribute__((naked))
static void sub_81466E8(u8 taskId, s8 direction)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- lsls r1, 24\n\
- lsrs r2, r1, 24\n\
- lsls r0, r7, 2\n\
- adds r0, r7\n\
- lsls r0, 3\n\
- ldr r1, _08146748 @ =gTasks + 0x8\n\
- adds r6, r0, r1\n\
- ldr r4, _0814674C @ =gUnknown_03005D10\n\
- movs r0, 0xC\n\
- adds r0, r4\n\
- mov r8, r0\n\
- ldrb r1, [r0, 0x1]\n\
- ldrb r0, [r4, 0xC]\n\
- adds r1, r0\n\
- cmp r1, 0\n\
- bne _08146718\n\
- lsls r0, r2, 24\n\
- cmp r0, 0\n\
- blt _0814678C\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ lsls r1, 24\n\
+ lsrs r2, r1, 24\n\
+ lsls r0, r7, 2\n\
+ adds r0, r7\n\
+ lsls r0, 3\n\
+ ldr r1, _08146748 @ =gTasks + 0x8\n\
+ adds r6, r0, r1\n\
+ ldr r4, _0814674C @ =gUnknown_03005D10\n\
+ movs r0, 0xC\n\
+ adds r0, r4\n\
+ mov r8, r0\n\
+ ldrb r1, [r0, 0x1]\n\
+ ldrb r0, [r4, 0xC]\n\
+ adds r1, r0\n\
+ cmp r1, 0\n\
+ bne _08146718\n\
+ lsls r0, r2, 24\n\
+ cmp r0, 0\n\
+ blt _0814678C\n\
_08146718:\n\
- adds r0, r1, 0x1\n\
- lsls r5, r2, 24\n\
- mov r1, r8\n\
- ldrb r1, [r1, 0x2]\n\
- cmp r0, r1\n\
- bne _08146728\n\
- cmp r5, 0\n\
- bgt _0814678C\n\
+ adds r0, r1, 0x1\n\
+ lsls r5, r2, 24\n\
+ mov r1, r8\n\
+ ldrb r1, [r1, 0x2]\n\
+ cmp r0, r1\n\
+ bne _08146728\n\
+ cmp r5, 0\n\
+ bgt _0814678C\n\
_08146728:\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- mov r2, r8\n\
- ldrb r3, [r2, 0x1]\n\
- ldrb r4, [r4, 0xC]\n\
- mov r12, r4\n\
- adds r0, r3, r4\n\
- asrs r2, r5, 24\n\
- adds r1, r0, r2\n\
- cmp r1, 0\n\
- bge _08146750\n\
- negs r0, r0\n\
- strh r0, [r6, 0x2]\n\
- b _08146766\n\
- .align 2, 0\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ mov r2, r8\n\
+ ldrb r3, [r2, 0x1]\n\
+ ldrb r4, [r4, 0xC]\n\
+ mov r12, r4\n\
+ adds r0, r3, r4\n\
+ asrs r2, r5, 24\n\
+ adds r1, r0, r2\n\
+ cmp r1, 0\n\
+ bge _08146750\n\
+ negs r0, r0\n\
+ strh r0, [r6, 0x2]\n\
+ b _08146766\n\
+ .align 2, 0\n\
_08146748: .4byte gTasks + 0x8\n\
_0814674C: .4byte gUnknown_03005D10\n\
_08146750:\n\
- mov r4, r8\n\
- ldrb r0, [r4, 0x2]\n\
- cmp r1, r0\n\
- blt _08146764\n\
- subs r0, r3\n\
- mov r1, r12\n\
- subs r0, r1\n\
- subs r0, 0x1\n\
- strh r0, [r6, 0x2]\n\
- b _08146766\n\
+ mov r4, r8\n\
+ ldrb r0, [r4, 0x2]\n\
+ cmp r1, r0\n\
+ blt _08146764\n\
+ subs r0, r3\n\
+ mov r1, r12\n\
+ subs r0, r1\n\
+ subs r0, 0x1\n\
+ strh r0, [r6, 0x2]\n\
+ b _08146766\n\
_08146764:\n\
- strh r2, [r6, 0x2]\n\
+ strh r2, [r6, 0x2]\n\
_08146766:\n\
- ldr r0, _08146780 @ =gTasks\n\
- lsls r1, r7, 2\n\
- adds r1, r7\n\
- lsls r1, 3\n\
- adds r1, r0\n\
- ldr r0, _08146784 @ =sub_8146798\n\
- str r0, [r1]\n\
- cmp r5, 0\n\
- bge _08146788\n\
- movs r2, 0x10\n\
- negs r2, r2\n\
- adds r0, r2, 0\n\
- b _0814678A\n\
- .align 2, 0\n\
+ ldr r0, _08146780 @ =gTasks\n\
+ lsls r1, r7, 2\n\
+ adds r1, r7\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+ ldr r0, _08146784 @ =sub_8146798\n\
+ str r0, [r1]\n\
+ cmp r5, 0\n\
+ bge _08146788\n\
+ movs r2, 0x10\n\
+ negs r2, r2\n\
+ adds r0, r2, 0\n\
+ b _0814678A\n\
+ .align 2, 0\n\
_08146780: .4byte gTasks\n\
_08146784: .4byte sub_8146798\n\
_08146788:\n\
- movs r0, 0x10\n\
+ movs r0, 0x10\n\
_0814678A:\n\
- strh r0, [r6]\n\
+ strh r0, [r6]\n\
_0814678C:\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
}
void sub_8146798(u8 taskId)
@@ -461,90 +461,90 @@ __attribute__((naked))
static void sub_8146810(s8 berry)
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- adds r4, r3, 0\n\
- lsls r0, r3, 24\n\
- asrs r1, r0, 24\n\
- cmp r1, 0\n\
- ble _08146848\n\
- ldr r0, _08146840 @ =gUnknown_03005D10\n\
- adds r4, r0, 0\n\
- adds r4, 0xC\n\
- ldrb r2, [r0, 0xC]\n\
- adds r1, r2, r1\n\
- adds r6, r0, 0\n\
- cmp r1, 0x7\n\
- ble _08146844\n\
- adds r0, r3, 0\n\
- adds r0, 0xF9\n\
- adds r0, r2, r0\n\
- ldrb r1, [r4, 0x1]\n\
- adds r0, r1\n\
- strb r0, [r4, 0x1]\n\
- movs r0, 0x7\n\
- b _0814686E\n\
- .align 2, 0\n\
+ push {r4-r6,lr}\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ adds r4, r3, 0\n\
+ lsls r0, r3, 24\n\
+ asrs r1, r0, 24\n\
+ cmp r1, 0\n\
+ ble _08146848\n\
+ ldr r0, _08146840 @ =gUnknown_03005D10\n\
+ adds r4, r0, 0\n\
+ adds r4, 0xC\n\
+ ldrb r2, [r0, 0xC]\n\
+ adds r1, r2, r1\n\
+ adds r6, r0, 0\n\
+ cmp r1, 0x7\n\
+ ble _08146844\n\
+ adds r0, r3, 0\n\
+ adds r0, 0xF9\n\
+ adds r0, r2, r0\n\
+ ldrb r1, [r4, 0x1]\n\
+ adds r0, r1\n\
+ strb r0, [r4, 0x1]\n\
+ movs r0, 0x7\n\
+ b _0814686E\n\
+ .align 2, 0\n\
_08146840: .4byte gUnknown_03005D10\n\
_08146844:\n\
- adds r0, r2, r3\n\
- b _0814686E\n\
+ adds r0, r2, r3\n\
+ b _0814686E\n\
_08146848:\n\
- ldr r0, _08146868 @ =gUnknown_03005D10\n\
- adds r5, r0, 0\n\
- adds r5, 0xC\n\
- ldrb r2, [r0, 0xC]\n\
- adds r1, r2, r1\n\
- adds r6, r0, 0\n\
- cmp r1, 0\n\
- bge _0814686C\n\
- adds r0, r2, r3\n\
- ldrb r1, [r5, 0x1]\n\
- adds r0, r1\n\
- movs r1, 0\n\
- strb r0, [r5, 0x1]\n\
- strb r1, [r6, 0xC]\n\
- b _08146870\n\
- .align 2, 0\n\
+ ldr r0, _08146868 @ =gUnknown_03005D10\n\
+ adds r5, r0, 0\n\
+ adds r5, 0xC\n\
+ ldrb r2, [r0, 0xC]\n\
+ adds r1, r2, r1\n\
+ adds r6, r0, 0\n\
+ cmp r1, 0\n\
+ bge _0814686C\n\
+ adds r0, r2, r3\n\
+ ldrb r1, [r5, 0x1]\n\
+ adds r0, r1\n\
+ movs r1, 0\n\
+ strb r0, [r5, 0x1]\n\
+ strb r1, [r6, 0xC]\n\
+ b _08146870\n\
+ .align 2, 0\n\
_08146868: .4byte gUnknown_03005D10\n\
_0814686C:\n\
- adds r0, r2, r4\n\
+ adds r0, r2, r4\n\
_0814686E:\n\
- strb r0, [r6, 0xC]\n\
+ strb r0, [r6, 0xC]\n\
_08146870:\n\
- ldr r2, _081468AC @ =gScriptItemId\n\
- movs r0, 0x3\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldrb r1, [r0, 0x1]\n\
- ldrb r0, [r0]\n\
- adds r1, r0\n\
- ldr r0, _081468B0 @ =gUnknown_03005D24\n\
- ldr r0, [r0]\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrh r0, [r1]\n\
- strh r0, [r2]\n\
- ldr r0, _081468B4 @ =gUnknown_0203932C\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- ldr r1, _081468B8 @ =gSprites\n\
- adds r0, r1\n\
- bl DestroySprite\n\
- bl sub_81466A0\n\
- bl sub_80A7DD4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ ldr r2, _081468AC @ =gScriptItemId\n\
+ movs r0, 0x3\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldrb r1, [r0, 0x1]\n\
+ ldrb r0, [r0]\n\
+ adds r1, r0\n\
+ ldr r0, _081468B0 @ =gUnknown_03005D24\n\
+ ldr r0, [r0]\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrh r0, [r1]\n\
+ strh r0, [r2]\n\
+ ldr r0, _081468B4 @ =gUnknown_0203932C\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ ldr r1, _081468B8 @ =gSprites\n\
+ adds r0, r1\n\
+ bl DestroySprite\n\
+ bl sub_81466A0\n\
+ bl sub_80A7DD4\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_081468AC: .4byte gScriptItemId\n\
_081468B0: .4byte gUnknown_03005D24\n\
_081468B4: .4byte gUnknown_0203932C\n\
_081468B8: .4byte gSprites\n\
- .syntax divided\n");
+ .syntax divided\n");
}
static void sub_81468BC(void)
diff --git a/src/bike.c b/src/bike.c
index bd4c2e411..a1a3fded9 100644
--- a/src/bike.c
+++ b/src/bike.c
@@ -84,6 +84,16 @@ static void (*const gUnknown_083DB5A4[])(u8) =
sub_80593F4,
};
+// Player speeds
+enum
+{
+ SPEED_STANDING,
+ SPEED_NORMAL,
+ SPEED_FAST,
+ SPEED_FASTER,
+ SPEED_FASTEST,
+};
+
//Acro bike states
enum
{
@@ -132,7 +142,7 @@ static u8 (*const sAcroBikeInputHandlers[])(u8 *, u16, u16) =
AcroBikeHandleInputState6,
};
-const u16 gUnknown_083DB600[] = {1, 2, 4};
+const u16 gMachBikeSpeeds[] = {SPEED_NORMAL, SPEED_FAST, SPEED_FASTEST};
static const u8 Unknown_3DB606[] = {4, 0};
static const struct UnknownStruct1 gUnknown_083DB608[] =
@@ -243,7 +253,7 @@ static void MachBikeTransition_80E51C4(u8 direction)
{
gUnknown_083DB5A4[gPlayerAvatar.bikeFrameCounter](direction);
gPlayerAvatar.unkB = gPlayerAvatar.bikeFrameCounter + (gPlayerAvatar.bikeFrameCounter >> 1); // same as dividing by 2, but compiler is insistent on >> 1
- if (gPlayerAvatar.bikeFrameCounter < 2)
+ if (gPlayerAvatar.bikeFrameCounter < 2) // do not go faster than the last element in the mach bike array
gPlayerAvatar.bikeFrameCounter++;
}
}
@@ -882,7 +892,7 @@ static u8 sub_80E5DA0(struct MapObject *mapObject, s16 x, s16 y, u8 direction, u
return collision;
}
-bool8 sub_80E5DEC(u8 tile)
+bool8 IsRunningDisallowed(u8 tile)
{
if (IsRunningDisallowedByMetatile(tile) != FALSE || gMapHeader.mapType == MAP_TYPE_INDOOR)
return TRUE;
@@ -975,8 +985,8 @@ void GetOnOffBike(u8 var)
else
{
SetPlayerAvatarTransitionFlags(var);
- sav1_set_battle_music_maybe(0x193);
- sub_8053FB0(0x193);
+ sav1_set_battle_music_maybe(BGM_CYCLING);
+ sub_8053FB0(BGM_CYCLING);
}
}
@@ -1010,20 +1020,21 @@ static void sub_80E6024(void)
gPlayerAvatar.unkB = 0;
}
-s16 sub_80E6034(void)
+s16 GetPlayerSpeed(void)
{
- s16 arr[3];
+ // because the player pressed a direction, it won't ever return a speed of 0 since this function returns the player's current speed.
+ s16 machSpeeds[3];
- memcpy(arr, gUnknown_083DB600, sizeof(arr));
+ memcpy(machSpeeds, gMachBikeSpeeds, sizeof(machSpeeds));
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE)
- return arr[gPlayerAvatar.bikeFrameCounter];
+ return machSpeeds[gPlayerAvatar.bikeFrameCounter];
else if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE)
- return 3;
+ return SPEED_FASTER;
else if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_DASH))
- return 2;
+ return SPEED_FAST;
else
- return 1;
+ return SPEED_NORMAL;
}
void sub_80E6084(void)
diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c
index 8e020829a..293e2f24d 100644
--- a/src/calculate_base_damage.c
+++ b/src/calculate_base_damage.c
@@ -292,10 +292,10 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && sub_803C348(2) == 2)
damage /= 2;
- // are effects of weather negated with cloud nine or air lock?
+ // are effects of weather negated with cloud nine or air lock?
if (!sub_8018324(0xE, 0, ABILITY_CLOUD_NINE, 0, 0) && !sub_8018324(0xE, 0, ABILITY_AIR_LOCK, 0, 0))
{
- // rain?
+ // rain?
if (gBattleWeather & 1)
{
if (type == TYPE_FIRE)
@@ -330,328 +330,328 @@ __attribute__((naked))
s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 a7, u8 a8)
{
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, 0x2C\n\
- adds r7, r0, 0\n\
- str r1, [sp, 0x4]\n\
- str r2, [sp, 0x8]\n\
- ldr r0, [sp, 0x4C]\n\
- ldr r1, [sp, 0x50]\n\
- ldr r2, [sp, 0x54]\n\
- ldr r4, [sp, 0x58]\n\
- lsls r3, 16\n\
- lsrs r3, 16\n\
- str r3, [sp, 0xC]\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- lsls r1, 24\n\
- lsrs r6, r1, 24\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- str r2, [sp, 0x10]\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- movs r5, 0\n\
- cmp r3, 0\n\
- bne _0803BA80\n\
- ldr r2, _0803BA78 @ =gBattleMovePower\n\
- ldr r1, _0803BA7C @ =gBattleMoves\n\
- ldr r3, [sp, 0x8]\n\
- lsls r0, r3, 1\n\
- adds r0, r3\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x1]\n\
- strh r0, [r2]\n\
- b _0803BA84\n\
- .align 2, 0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x2C\n\
+ adds r7, r0, 0\n\
+ str r1, [sp, 0x4]\n\
+ str r2, [sp, 0x8]\n\
+ ldr r0, [sp, 0x4C]\n\
+ ldr r1, [sp, 0x50]\n\
+ ldr r2, [sp, 0x54]\n\
+ ldr r4, [sp, 0x58]\n\
+ lsls r3, 16\n\
+ lsrs r3, 16\n\
+ str r3, [sp, 0xC]\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ lsls r1, 24\n\
+ lsrs r6, r1, 24\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ str r2, [sp, 0x10]\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ movs r5, 0\n\
+ cmp r3, 0\n\
+ bne _0803BA80\n\
+ ldr r2, _0803BA78 @ =gBattleMovePower\n\
+ ldr r1, _0803BA7C @ =gBattleMoves\n\
+ ldr r3, [sp, 0x8]\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x1]\n\
+ strh r0, [r2]\n\
+ b _0803BA84\n\
+ .align 2, 0\n\
_0803BA78: .4byte gBattleMovePower\n\
_0803BA7C: .4byte gBattleMoves\n\
_0803BA80:\n\
- ldr r0, _0803BA9C @ =gBattleMovePower\n\
- strh r3, [r0]\n\
+ ldr r0, _0803BA9C @ =gBattleMovePower\n\
+ strh r3, [r0]\n\
_0803BA84:\n\
- cmp r6, 0\n\
- bne _0803BAA4\n\
- ldr r1, _0803BAA0 @ =gBattleMoves\n\
- ldr r6, [sp, 0x8]\n\
- lsls r0, r6, 1\n\
- adds r0, r6\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- mov r9, r0\n\
- b _0803BAAE\n\
- .align 2, 0\n\
+ cmp r6, 0\n\
+ bne _0803BAA4\n\
+ ldr r1, _0803BAA0 @ =gBattleMoves\n\
+ ldr r6, [sp, 0x8]\n\
+ lsls r0, r6, 1\n\
+ adds r0, r6\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x2]\n\
+ mov r9, r0\n\
+ b _0803BAAE\n\
+ .align 2, 0\n\
_0803BA9C: .4byte gBattleMovePower\n\
_0803BAA0: .4byte gBattleMoves\n\
_0803BAA4:\n\
- movs r0, 0x3F\n\
- mov r9, r0\n\
- mov r1, r9\n\
- ands r1, r6\n\
- mov r9, r1\n\
+ movs r0, 0x3F\n\
+ mov r9, r0\n\
+ mov r1, r9\n\
+ ands r1, r6\n\
+ mov r9, r1\n\
_0803BAAE:\n\
- ldrh r6, [r7, 0x2]\n\
- ldr r2, [sp, 0x4]\n\
- ldrh r2, [r2, 0x4]\n\
- str r2, [sp, 0x14]\n\
- ldrh r3, [r7, 0x8]\n\
- mov r8, r3\n\
- ldr r0, [sp, 0x4]\n\
- ldrh r0, [r0, 0xA]\n\
- str r0, [sp, 0x18]\n\
- ldrh r0, [r7, 0x2E]\n\
- cmp r0, 0xAF\n\
- bne _0803BAE0\n\
- ldr r1, _0803BADC @ =gEnigmaBerries\n\
- ldr r2, [sp, 0x10]\n\
- lsls r0, r2, 3\n\
- subs r0, r2\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r3, [r0, 0x7]\n\
- mov r10, r3\n\
- ldrb r0, [r0, 0x1A]\n\
- b _0803BAF6\n\
- .align 2, 0\n\
+ ldrh r6, [r7, 0x2]\n\
+ ldr r2, [sp, 0x4]\n\
+ ldrh r2, [r2, 0x4]\n\
+ str r2, [sp, 0x14]\n\
+ ldrh r3, [r7, 0x8]\n\
+ mov r8, r3\n\
+ ldr r0, [sp, 0x4]\n\
+ ldrh r0, [r0, 0xA]\n\
+ str r0, [sp, 0x18]\n\
+ ldrh r0, [r7, 0x2E]\n\
+ cmp r0, 0xAF\n\
+ bne _0803BAE0\n\
+ ldr r1, _0803BADC @ =gEnigmaBerries\n\
+ ldr r2, [sp, 0x10]\n\
+ lsls r0, r2, 3\n\
+ subs r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r3, [r0, 0x7]\n\
+ mov r10, r3\n\
+ ldrb r0, [r0, 0x1A]\n\
+ b _0803BAF6\n\
+ .align 2, 0\n\
_0803BADC: .4byte gEnigmaBerries\n\
_0803BAE0:\n\
- ldrh r0, [r7, 0x2E]\n\
- bl ItemId_GetHoldEffect\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- ldrh r0, [r7, 0x2E]\n\
- bl ItemId_GetHoldEffectParam\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
+ ldrh r0, [r7, 0x2E]\n\
+ bl ItemId_GetHoldEffect\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ ldrh r0, [r7, 0x2E]\n\
+ bl ItemId_GetHoldEffectParam\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
_0803BAF6:\n\
- str r0, [sp, 0x20]\n\
- ldr r1, [sp, 0x4]\n\
- ldrh r0, [r1, 0x2E]\n\
- cmp r0, 0xAF\n\
- bne _0803BB26\n\
- ldr r1, _0803BB10 @ =gEnigmaBerries\n\
- lsls r0, r4, 3\n\
- subs r0, r4\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x7]\n\
- str r0, [sp, 0x1C]\n\
- b _0803BB3C\n\
- .align 2, 0\n\
+ str r0, [sp, 0x20]\n\
+ ldr r1, [sp, 0x4]\n\
+ ldrh r0, [r1, 0x2E]\n\
+ cmp r0, 0xAF\n\
+ bne _0803BB26\n\
+ ldr r1, _0803BB10 @ =gEnigmaBerries\n\
+ lsls r0, r4, 3\n\
+ subs r0, r4\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x7]\n\
+ str r0, [sp, 0x1C]\n\
+ b _0803BB3C\n\
+ .align 2, 0\n\
_0803BB10: .4byte gEnigmaBerries\n\
_0803BB14:\n\
- ldr r0, [sp, 0x20]\n\
- adds r0, 0x64\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- b _0803BCDC\n\
+ ldr r0, [sp, 0x20]\n\
+ adds r0, 0x64\n\
+ muls r0, r6\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+ b _0803BCDC\n\
_0803BB26:\n\
- ldr r2, [sp, 0x4]\n\
- ldrh r0, [r2, 0x2E]\n\
- bl ItemId_GetHoldEffect\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x1C]\n\
- ldr r3, [sp, 0x4]\n\
- ldrh r0, [r3, 0x2E]\n\
- bl ItemId_GetHoldEffectParam\n\
+ ldr r2, [sp, 0x4]\n\
+ ldrh r0, [r2, 0x2E]\n\
+ bl ItemId_GetHoldEffect\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x1C]\n\
+ ldr r3, [sp, 0x4]\n\
+ ldrh r0, [r3, 0x2E]\n\
+ bl ItemId_GetHoldEffectParam\n\
_0803BB3C:\n\
- adds r0, r7, 0\n\
- adds r0, 0x20\n\
- ldrb r1, [r0]\n\
- str r0, [sp, 0x24]\n\
- cmp r1, 0x25\n\
- beq _0803BB4C\n\
- cmp r1, 0x4A\n\
- bne _0803BB50\n\
+ adds r0, r7, 0\n\
+ adds r0, 0x20\n\
+ ldrb r1, [r0]\n\
+ str r0, [sp, 0x24]\n\
+ cmp r1, 0x25\n\
+ beq _0803BB4C\n\
+ cmp r1, 0x4A\n\
+ bne _0803BB50\n\
_0803BB4C:\n\
- lsls r0, r6, 17\n\
- lsrs r6, r0, 16\n\
+ lsls r0, r6, 17\n\
+ lsrs r6, r0, 16\n\
_0803BB50:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BB5E\n\
- b _0803BC78\n\
+ ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0803BCBC @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803BB5E\n\
+ b _0803BC78\n\
_0803BB5E:\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BB98\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BB98\n\
- ldr r0, _0803BCC4 @ =0x00000807\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BB98\n\
- ldr r0, [sp, 0x10]\n\
- bl battle_side_get_owner\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BB98\n\
- movs r0, 0x6E\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803BB98\n\
+ ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ beq _0803BB98\n\
+ ldr r0, _0803BCC4 @ =0x00000807\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BB98\n\
+ ldr r0, [sp, 0x10]\n\
+ bl battle_side_get_owner\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0803BB98\n\
+ movs r0, 0x6E\n\
+ muls r0, r6\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
_0803BB98:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BBE2\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BBE2\n\
- ldr r0, _0803BCC8 @ =0x0000080b\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BBE2\n\
- adds r0, r4, 0\n\
- bl battle_side_get_owner\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BBE2\n\
- movs r0, 0x6E\n\
- ldr r1, [sp, 0x14]\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x14]\n\
+ ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0803BCBC @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803BC78\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803BBE2\n\
+ ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ beq _0803BBE2\n\
+ ldr r0, _0803BCC8 @ =0x0000080b\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BBE2\n\
+ adds r0, r4, 0\n\
+ bl battle_side_get_owner\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0803BBE2\n\
+ movs r0, 0x6E\n\
+ ldr r1, [sp, 0x14]\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x14]\n\
_0803BBE2:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BC2E\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BC2E\n\
- ldr r0, _0803BCCC @ =0x0000080d\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BC2E\n\
- ldr r0, [sp, 0x10]\n\
- bl battle_side_get_owner\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BC2E\n\
- movs r0, 0x6E\n\
- mov r2, r8\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
+ ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0803BCBC @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803BC78\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803BC2E\n\
+ ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ beq _0803BC2E\n\
+ ldr r0, _0803BCCC @ =0x0000080d\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BC2E\n\
+ ldr r0, [sp, 0x10]\n\
+ bl battle_side_get_owner\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0803BC2E\n\
+ movs r0, 0x6E\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
_0803BC2E:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BC78\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BC78\n\
- ldr r0, _0803BCCC @ =0x0000080d\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BC78\n\
- adds r0, r4, 0\n\
- bl battle_side_get_owner\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x6E\n\
- ldr r3, [sp, 0x18]\n\
- muls r0, r3\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x18]\n\
+ ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0803BCBC @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803BC78\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803BC78\n\
+ ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ beq _0803BC78\n\
+ ldr r0, _0803BCCC @ =0x0000080d\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BC78\n\
+ adds r0, r4, 0\n\
+ bl battle_side_get_owner\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0803BC78\n\
+ movs r0, 0x6E\n\
+ ldr r3, [sp, 0x18]\n\
+ muls r0, r3\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x18]\n\
_0803BC78:\n\
- movs r2, 0\n\
- ldr r4, _0803BCD0 @ =gHoldEffectToType\n\
- ldr r0, [sp, 0x4]\n\
- adds r0, 0x20\n\
- str r0, [sp, 0x28]\n\
- adds r3, r4, 0\n\
+ movs r2, 0\n\
+ ldr r4, _0803BCD0 @ =gHoldEffectToType\n\
+ ldr r0, [sp, 0x4]\n\
+ adds r0, 0x20\n\
+ str r0, [sp, 0x28]\n\
+ adds r3, r4, 0\n\
_0803BC84:\n\
- lsls r1, r2, 1\n\
- ldrb r0, [r3]\n\
- cmp r10, r0\n\
- bne _0803BCD4\n\
- adds r0, r4, 0x1\n\
- adds r0, r1, r0\n\
- ldrb r0, [r0]\n\
- cmp r9, r0\n\
- bne _0803BCD4\n\
- mov r1, r9\n\
- cmp r1, 0x8\n\
- bhi _0803BC9E\n\
- b _0803BB14\n\
+ lsls r1, r2, 1\n\
+ ldrb r0, [r3]\n\
+ cmp r10, r0\n\
+ bne _0803BCD4\n\
+ adds r0, r4, 0x1\n\
+ adds r0, r1, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r9, r0\n\
+ bne _0803BCD4\n\
+ mov r1, r9\n\
+ cmp r1, 0x8\n\
+ bhi _0803BC9E\n\
+ b _0803BB14\n\
_0803BC9E:\n\
- ldr r0, [sp, 0x20]\n\
- adds r0, 0x64\n\
- mov r2, r8\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
- b _0803BCDC\n\
- .align 2, 0\n\
+ ldr r0, [sp, 0x20]\n\
+ adds r0, 0x64\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
+ b _0803BCDC\n\
+ .align 2, 0\n\
_0803BCB8: .4byte gBattleTypeFlags\n\
_0803BCBC: .4byte 0x00000902\n\
_0803BCC0: .4byte gTrainerBattleOpponent\n\
@@ -660,398 +660,398 @@ _0803BCC8: .4byte 0x0000080b\n\
_0803BCCC: .4byte 0x0000080d\n\
_0803BCD0: .4byte gHoldEffectToType\n\
_0803BCD4:\n\
- adds r3, 0x2\n\
- adds r2, 0x1\n\
- cmp r2, 0x10\n\
- bls _0803BC84\n\
+ adds r3, 0x2\n\
+ adds r2, 0x1\n\
+ cmp r2, 0x10\n\
+ bls _0803BC84\n\
_0803BCDC:\n\
- mov r3, r10\n\
- cmp r3, 0x1D\n\
- bne _0803BCF0\n\
- movs r0, 0x96\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
+ mov r3, r10\n\
+ cmp r3, 0x1D\n\
+ bne _0803BCF0\n\
+ movs r0, 0x96\n\
+ muls r0, r6\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
_0803BCF0:\n\
- mov r0, r10\n\
- cmp r0, 0x22\n\
- bne _0803BD28\n\
- ldr r0, _0803BFDC @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BD28\n\
- ldr r1, _0803BFE0 @ =0xfffffe69\n\
- adds r0, r1, 0\n\
- ldrh r2, [r7]\n\
- adds r0, r2\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- bhi _0803BD28\n\
- movs r0, 0x96\n\
- mov r3, r8\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
+ mov r0, r10\n\
+ cmp r0, 0x22\n\
+ bne _0803BD28\n\
+ ldr r0, _0803BFDC @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803BD28\n\
+ ldr r1, _0803BFE0 @ =0xfffffe69\n\
+ adds r0, r1, 0\n\
+ ldrh r2, [r7]\n\
+ adds r0, r2\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _0803BD28\n\
+ movs r0, 0x96\n\
+ mov r3, r8\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
_0803BD28:\n\
- ldr r0, [sp, 0x1C]\n\
- cmp r0, 0x22\n\
- bne _0803BD60\n\
- ldr r0, _0803BFDC @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BD60\n\
- ldr r1, _0803BFE0 @ =0xfffffe69\n\
- adds r0, r1, 0\n\
- ldr r2, [sp, 0x4]\n\
- ldrh r2, [r2]\n\
- adds r0, r2\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- bhi _0803BD60\n\
- movs r0, 0x96\n\
- ldr r3, [sp, 0x18]\n\
- muls r0, r3\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x18]\n\
+ ldr r0, [sp, 0x1C]\n\
+ cmp r0, 0x22\n\
+ bne _0803BD60\n\
+ ldr r0, _0803BFDC @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803BD60\n\
+ ldr r1, _0803BFE0 @ =0xfffffe69\n\
+ adds r0, r1, 0\n\
+ ldr r2, [sp, 0x4]\n\
+ ldrh r2, [r2]\n\
+ adds r0, r2\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _0803BD60\n\
+ movs r0, 0x96\n\
+ ldr r3, [sp, 0x18]\n\
+ muls r0, r3\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x18]\n\
_0803BD60:\n\
- mov r0, r10\n\
- cmp r0, 0x23\n\
- bne _0803BD76\n\
- ldrh r1, [r7]\n\
- ldr r0, _0803BFE4 @ =0x00000175\n\
- cmp r1, r0\n\
- bne _0803BD76\n\
- mov r1, r8\n\
- lsls r0, r1, 17\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
+ mov r0, r10\n\
+ cmp r0, 0x23\n\
+ bne _0803BD76\n\
+ ldrh r1, [r7]\n\
+ ldr r0, _0803BFE4 @ =0x00000175\n\
+ cmp r1, r0\n\
+ bne _0803BD76\n\
+ mov r1, r8\n\
+ lsls r0, r1, 17\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
_0803BD76:\n\
- ldr r2, [sp, 0x1C]\n\
- cmp r2, 0x24\n\
- bne _0803BD8E\n\
- ldr r3, [sp, 0x4]\n\
- ldrh r1, [r3]\n\
- ldr r0, _0803BFE4 @ =0x00000175\n\
- cmp r1, r0\n\
- bne _0803BD8E\n\
- ldr r1, [sp, 0x18]\n\
- lsls r0, r1, 17\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x18]\n\
+ ldr r2, [sp, 0x1C]\n\
+ cmp r2, 0x24\n\
+ bne _0803BD8E\n\
+ ldr r3, [sp, 0x4]\n\
+ ldrh r1, [r3]\n\
+ ldr r0, _0803BFE4 @ =0x00000175\n\
+ cmp r1, r0\n\
+ bne _0803BD8E\n\
+ ldr r1, [sp, 0x18]\n\
+ lsls r0, r1, 17\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x18]\n\
_0803BD8E:\n\
- mov r2, r10\n\
- cmp r2, 0x2D\n\
- bne _0803BDA2\n\
- ldrh r0, [r7]\n\
- cmp r0, 0x19\n\
- bne _0803BDA2\n\
- mov r3, r8\n\
- lsls r0, r3, 17\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
+ mov r2, r10\n\
+ cmp r2, 0x2D\n\
+ bne _0803BDA2\n\
+ ldrh r0, [r7]\n\
+ cmp r0, 0x19\n\
+ bne _0803BDA2\n\
+ mov r3, r8\n\
+ lsls r0, r3, 17\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
_0803BDA2:\n\
- ldr r0, [sp, 0x1C]\n\
- cmp r0, 0x40\n\
- bne _0803BDB8\n\
- ldr r1, [sp, 0x4]\n\
- ldrh r0, [r1]\n\
- cmp r0, 0x84\n\
- bne _0803BDB8\n\
- ldr r2, [sp, 0x14]\n\
- lsls r0, r2, 17\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x14]\n\
+ ldr r0, [sp, 0x1C]\n\
+ cmp r0, 0x40\n\
+ bne _0803BDB8\n\
+ ldr r1, [sp, 0x4]\n\
+ ldrh r0, [r1]\n\
+ cmp r0, 0x84\n\
+ bne _0803BDB8\n\
+ ldr r2, [sp, 0x14]\n\
+ lsls r0, r2, 17\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x14]\n\
_0803BDB8:\n\
- mov r3, r10\n\
- cmp r3, 0x41\n\
- bne _0803BDCE\n\
- ldrh r0, [r7]\n\
- subs r0, 0x68\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- bhi _0803BDCE\n\
- lsls r0, r6, 17\n\
- lsrs r6, r0, 16\n\
+ mov r3, r10\n\
+ cmp r3, 0x41\n\
+ bne _0803BDCE\n\
+ ldrh r0, [r7]\n\
+ subs r0, 0x68\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _0803BDCE\n\
+ lsls r0, r6, 17\n\
+ lsrs r6, r0, 16\n\
_0803BDCE:\n\
- ldr r1, [sp, 0x28]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x2F\n\
- bne _0803BDE6\n\
- mov r2, r9\n\
- cmp r2, 0xA\n\
- beq _0803BDE0\n\
- cmp r2, 0xF\n\
- bne _0803BDE6\n\
+ ldr r1, [sp, 0x28]\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x2F\n\
+ bne _0803BDE6\n\
+ mov r2, r9\n\
+ cmp r2, 0xA\n\
+ beq _0803BDE0\n\
+ cmp r2, 0xF\n\
+ bne _0803BDE6\n\
_0803BDE0:\n\
- mov r3, r8\n\
- lsrs r3, 1\n\
- mov r8, r3\n\
+ mov r3, r8\n\
+ lsrs r3, 1\n\
+ mov r8, r3\n\
_0803BDE6:\n\
- ldr r0, [sp, 0x24]\n\
- ldrb r4, [r0]\n\
- cmp r4, 0x37\n\
- bne _0803BDFC\n\
- movs r0, 0x96\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
+ ldr r0, [sp, 0x24]\n\
+ ldrb r4, [r0]\n\
+ cmp r4, 0x37\n\
+ bne _0803BDFC\n\
+ movs r0, 0x96\n\
+ muls r0, r6\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
_0803BDFC:\n\
- cmp r4, 0x39\n\
- bne _0803BE2A\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0x3A\n\
- movs r3, 0\n\
- bl sub_8018324\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BE2A\n\
- movs r0, 0x96\n\
- mov r1, r8\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
+ cmp r4, 0x39\n\
+ bne _0803BE2A\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0xE\n\
+ movs r1, 0\n\
+ movs r2, 0x3A\n\
+ movs r3, 0\n\
+ bl sub_8018324\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BE2A\n\
+ movs r0, 0x96\n\
+ mov r1, r8\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
_0803BE2A:\n\
- ldr r2, [sp, 0x24]\n\
- ldrb r0, [r2]\n\
- cmp r0, 0x3A\n\
- bne _0803BE5C\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0x39\n\
- movs r3, 0\n\
- bl sub_8018324\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BE5C\n\
- movs r0, 0x96\n\
- mov r3, r8\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
+ ldr r2, [sp, 0x24]\n\
+ ldrb r0, [r2]\n\
+ cmp r0, 0x3A\n\
+ bne _0803BE5C\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0xE\n\
+ movs r1, 0\n\
+ movs r2, 0x39\n\
+ movs r3, 0\n\
+ bl sub_8018324\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BE5C\n\
+ movs r0, 0x96\n\
+ mov r3, r8\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
_0803BE5C:\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x3E\n\
- bne _0803BE78\n\
- ldr r0, [r7, 0x4C]\n\
- cmp r0, 0\n\
- beq _0803BE78\n\
- movs r0, 0x96\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
+ ldr r1, [sp, 0x24]\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x3E\n\
+ bne _0803BE78\n\
+ ldr r0, [r7, 0x4C]\n\
+ cmp r0, 0\n\
+ beq _0803BE78\n\
+ movs r0, 0x96\n\
+ muls r0, r6\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
_0803BE78:\n\
- ldr r2, [sp, 0x28]\n\
- ldrb r0, [r2]\n\
- cmp r0, 0x3F\n\
- bne _0803BE9A\n\
- ldr r3, [sp, 0x4]\n\
- ldr r0, [r3, 0x4C]\n\
- cmp r0, 0\n\
- beq _0803BE9A\n\
- movs r0, 0x96\n\
- ldr r1, [sp, 0x14]\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x14]\n\
+ ldr r2, [sp, 0x28]\n\
+ ldrb r0, [r2]\n\
+ cmp r0, 0x3F\n\
+ bne _0803BE9A\n\
+ ldr r3, [sp, 0x4]\n\
+ ldr r0, [r3, 0x4C]\n\
+ cmp r0, 0\n\
+ beq _0803BE9A\n\
+ movs r0, 0x96\n\
+ ldr r1, [sp, 0x14]\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x14]\n\
_0803BE9A:\n\
- mov r2, r9\n\
- cmp r2, 0xD\n\
- bne _0803BEBE\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0\n\
- movs r3, 0xFD\n\
- bl sub_8018324\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BEBE\n\
- ldr r1, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r0, [r1]\n\
- lsrs r0, 1\n\
- strh r0, [r1]\n\
+ mov r2, r9\n\
+ cmp r2, 0xD\n\
+ bne _0803BEBE\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0xE\n\
+ movs r1, 0\n\
+ movs r2, 0\n\
+ movs r3, 0xFD\n\
+ bl sub_8018324\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BEBE\n\
+ ldr r1, _0803BFE8 @ =gBattleMovePower\n\
+ ldrh r0, [r1]\n\
+ lsrs r0, 1\n\
+ strh r0, [r1]\n\
_0803BEBE:\n\
- mov r3, r9\n\
- cmp r3, 0xA\n\
- bne _0803BEE2\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0\n\
- movs r3, 0xFE\n\
- bl sub_8018324\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BEE2\n\
- ldr r1, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r0, [r1]\n\
- lsrs r0, 1\n\
- strh r0, [r1]\n\
+ mov r3, r9\n\
+ cmp r3, 0xA\n\
+ bne _0803BEE2\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0xE\n\
+ movs r1, 0\n\
+ movs r2, 0\n\
+ movs r3, 0xFE\n\
+ bl sub_8018324\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0803BEE2\n\
+ ldr r1, _0803BFE8 @ =gBattleMovePower\n\
+ ldrh r0, [r1]\n\
+ lsrs r0, 1\n\
+ strh r0, [r1]\n\
_0803BEE2:\n\
- mov r0, r9\n\
- cmp r0, 0xC\n\
- bne _0803BF12\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x41\n\
- bne _0803BF12\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BF12\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
+ mov r0, r9\n\
+ cmp r0, 0xC\n\
+ bne _0803BF12\n\
+ ldr r1, [sp, 0x24]\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x41\n\
+ bne _0803BF12\n\
+ ldrh r0, [r7, 0x2C]\n\
+ movs r1, 0x3\n\
+ bl __udivsi3\n\
+ ldrh r1, [r7, 0x28]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r1, r0\n\
+ bhi _0803BF12\n\
+ ldr r4, _0803BFE8 @ =gBattleMovePower\n\
+ ldrh r1, [r4]\n\
+ movs r0, 0x96\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ strh r0, [r4]\n\
_0803BF12:\n\
- mov r2, r9\n\
- cmp r2, 0xA\n\
- bne _0803BF42\n\
- ldr r3, [sp, 0x24]\n\
- ldrb r0, [r3]\n\
- cmp r0, 0x42\n\
- bne _0803BF42\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BF42\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
+ mov r2, r9\n\
+ cmp r2, 0xA\n\
+ bne _0803BF42\n\
+ ldr r3, [sp, 0x24]\n\
+ ldrb r0, [r3]\n\
+ cmp r0, 0x42\n\
+ bne _0803BF42\n\
+ ldrh r0, [r7, 0x2C]\n\
+ movs r1, 0x3\n\
+ bl __udivsi3\n\
+ ldrh r1, [r7, 0x28]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r1, r0\n\
+ bhi _0803BF42\n\
+ ldr r4, _0803BFE8 @ =gBattleMovePower\n\
+ ldrh r1, [r4]\n\
+ movs r0, 0x96\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ strh r0, [r4]\n\
_0803BF42:\n\
- mov r0, r9\n\
- cmp r0, 0xB\n\
- bne _0803BF72\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x43\n\
- bne _0803BF72\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BF72\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
+ mov r0, r9\n\
+ cmp r0, 0xB\n\
+ bne _0803BF72\n\
+ ldr r1, [sp, 0x24]\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x43\n\
+ bne _0803BF72\n\
+ ldrh r0, [r7, 0x2C]\n\
+ movs r1, 0x3\n\
+ bl __udivsi3\n\
+ ldrh r1, [r7, 0x28]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r1, r0\n\
+ bhi _0803BF72\n\
+ ldr r4, _0803BFE8 @ =gBattleMovePower\n\
+ ldrh r1, [r4]\n\
+ movs r0, 0x96\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ strh r0, [r4]\n\
_0803BF72:\n\
- mov r2, r9\n\
- cmp r2, 0x6\n\
- bne _0803BFA2\n\
- ldr r3, [sp, 0x24]\n\
- ldrb r0, [r3]\n\
- cmp r0, 0x44\n\
- bne _0803BFA2\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BFA2\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
+ mov r2, r9\n\
+ cmp r2, 0x6\n\
+ bne _0803BFA2\n\
+ ldr r3, [sp, 0x24]\n\
+ ldrb r0, [r3]\n\
+ cmp r0, 0x44\n\
+ bne _0803BFA2\n\
+ ldrh r0, [r7, 0x2C]\n\
+ movs r1, 0x3\n\
+ bl __udivsi3\n\
+ ldrh r1, [r7, 0x28]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r1, r0\n\
+ bhi _0803BFA2\n\
+ ldr r4, _0803BFE8 @ =gBattleMovePower\n\
+ ldrh r1, [r4]\n\
+ movs r0, 0x96\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ strh r0, [r4]\n\
_0803BFA2:\n\
- ldr r2, _0803BFEC @ =gBattleMoves\n\
- ldr r0, _0803BFF0 @ =gUnknown_02024BE6\n\
- ldrh r1, [r0]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x7\n\
- bne _0803BFBC\n\
- ldr r0, [sp, 0x14]\n\
- lsrs r0, 1\n\
- str r0, [sp, 0x14]\n\
+ ldr r2, _0803BFEC @ =gBattleMoves\n\
+ ldr r0, _0803BFF0 @ =gUnknown_02024BE6\n\
+ ldrh r1, [r0]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x7\n\
+ bne _0803BFBC\n\
+ ldr r0, [sp, 0x14]\n\
+ lsrs r0, 1\n\
+ str r0, [sp, 0x14]\n\
_0803BFBC:\n\
- mov r1, r9\n\
- cmp r1, 0x8\n\
- bls _0803BFC4\n\
- b _0803C122\n\
+ mov r1, r9\n\
+ cmp r1, 0x8\n\
+ bls _0803BFC4\n\
+ b _0803C122\n\
_0803BFC4:\n\
- ldr r0, _0803BFF4 @ =gCritMultiplier\n\
- ldrb r1, [r0]\n\
- adds r4, r0, 0\n\
- cmp r1, 0x2\n\
- bne _0803C000\n\
- movs r0, 0x19\n\
- ldrsb r0, [r7, r0]\n\
- cmp r0, 0x6\n\
- ble _0803BFFC\n\
- ldr r2, _0803BFF8 @ =gStatStageRatios\n\
- b _0803C006\n\
- .align 2, 0\n\
+ ldr r0, _0803BFF4 @ =gCritMultiplier\n\
+ ldrb r1, [r0]\n\
+ adds r4, r0, 0\n\
+ cmp r1, 0x2\n\
+ bne _0803C000\n\
+ movs r0, 0x19\n\
+ ldrsb r0, [r7, r0]\n\
+ cmp r0, 0x6\n\
+ ble _0803BFFC\n\
+ ldr r2, _0803BFF8 @ =gStatStageRatios\n\
+ b _0803C006\n\
+ .align 2, 0\n\
_0803BFDC: .4byte gBattleTypeFlags\n\
_0803BFE0: .4byte 0xfffffe69\n\
_0803BFE4: .4byte 0x00000175\n\
@@ -1061,427 +1061,427 @@ _0803BFF0: .4byte gUnknown_02024BE6\n\
_0803BFF4: .4byte gCritMultiplier\n\
_0803BFF8: .4byte gStatStageRatios\n\
_0803BFFC:\n\
- adds r5, r6, 0\n\
- b _0803C01E\n\
+ adds r5, r6, 0\n\
+ b _0803C01E\n\
_0803C000:\n\
- ldr r2, _0803C050 @ =gStatStageRatios\n\
- movs r0, 0x19\n\
- ldrsb r0, [r7, r0]\n\
+ ldr r2, _0803C050 @ =gStatStageRatios\n\
+ movs r0, 0x19\n\
+ ldrsb r0, [r7, r0]\n\
_0803C006:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- adds r5, r6, 0\n\
- muls r5, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r5, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
+ lsls r0, 1\n\
+ adds r1, r0, r2\n\
+ ldrb r1, [r1]\n\
+ adds r5, r6, 0\n\
+ muls r5, r1\n\
+ adds r2, 0x1\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ adds r0, r5, 0\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
_0803C01E:\n\
- ldr r0, _0803C054 @ =gBattleMovePower\n\
- ldrh r0, [r0]\n\
- muls r5, r0\n\
- adds r0, r7, 0\n\
- adds r0, 0x2A\n\
- ldrb r0, [r0]\n\
- lsls r0, 1\n\
- movs r1, 0x5\n\
- bl __divsi3\n\
- adds r0, 0x2\n\
- muls r5, r0\n\
- ldrb r0, [r4]\n\
- cmp r0, 0x2\n\
- bne _0803C05C\n\
- ldr r2, [sp, 0x4]\n\
- movs r0, 0x1A\n\
- ldrsb r0, [r2, r0]\n\
- cmp r0, 0x5\n\
- bgt _0803C058\n\
- ldr r2, _0803C050 @ =gStatStageRatios\n\
- ldr r3, [sp, 0x4]\n\
- movs r0, 0x1A\n\
- ldrsb r0, [r3, r0]\n\
- b _0803C064\n\
- .align 2, 0\n\
+ ldr r0, _0803C054 @ =gBattleMovePower\n\
+ ldrh r0, [r0]\n\
+ muls r5, r0\n\
+ adds r0, r7, 0\n\
+ adds r0, 0x2A\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 1\n\
+ movs r1, 0x5\n\
+ bl __divsi3\n\
+ adds r0, 0x2\n\
+ muls r5, r0\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0x2\n\
+ bne _0803C05C\n\
+ ldr r2, [sp, 0x4]\n\
+ movs r0, 0x1A\n\
+ ldrsb r0, [r2, r0]\n\
+ cmp r0, 0x5\n\
+ bgt _0803C058\n\
+ ldr r2, _0803C050 @ =gStatStageRatios\n\
+ ldr r3, [sp, 0x4]\n\
+ movs r0, 0x1A\n\
+ ldrsb r0, [r3, r0]\n\
+ b _0803C064\n\
+ .align 2, 0\n\
_0803C050: .4byte gStatStageRatios\n\
_0803C054: .4byte gBattleMovePower\n\
_0803C058:\n\
- ldr r3, [sp, 0x14]\n\
- b _0803C07E\n\
+ ldr r3, [sp, 0x14]\n\
+ b _0803C07E\n\
_0803C05C:\n\
- ldr r2, _0803C0DC @ =gStatStageRatios\n\
- ldr r1, [sp, 0x4]\n\
- movs r0, 0x1A\n\
- ldrsb r0, [r1, r0]\n\
+ ldr r2, _0803C0DC @ =gStatStageRatios\n\
+ ldr r1, [sp, 0x4]\n\
+ movs r0, 0x1A\n\
+ ldrsb r0, [r1, r0]\n\
_0803C064:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- ldr r6, [sp, 0x14]\n\
- adds r3, r6, 0\n\
- muls r3, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r3, 0\n\
- bl __divsi3\n\
- adds r3, r0, 0\n\
+ lsls r0, 1\n\
+ adds r1, r0, r2\n\
+ ldrb r1, [r1]\n\
+ ldr r6, [sp, 0x14]\n\
+ adds r3, r6, 0\n\
+ muls r3, r1\n\
+ adds r2, 0x1\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ adds r0, r3, 0\n\
+ bl __divsi3\n\
+ adds r3, r0, 0\n\
_0803C07E:\n\
- adds r0, r5, 0\n\
- adds r1, r3, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- movs r1, 0x32\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- ldr r0, [r7, 0x4C]\n\
- movs r1, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C0A8\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x3E\n\
- beq _0803C0A8\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ adds r0, r5, 0\n\
+ adds r1, r3, 0\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ movs r1, 0x32\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ ldr r0, [r7, 0x4C]\n\
+ movs r1, 0x10\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C0A8\n\
+ ldr r1, [sp, 0x24]\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x3E\n\
+ beq _0803C0A8\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C0A8:\n\
- movs r0, 0x1\n\
- ldr r2, [sp, 0xC]\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _0803C0EA\n\
- ldrb r1, [r4]\n\
- cmp r1, 0x1\n\
- bne _0803C0EA\n\
- ldr r0, _0803C0E0 @ =gBattleTypeFlags\n\
- ldrh r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _0803C0E4\n\
- movs r0, 0x2\n\
- bl sub_803C348\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C0E4\n\
- adds r0, r5, 0\n\
- movs r1, 0x3\n\
- bl __divsi3\n\
- lsls r5, r0, 1\n\
- b _0803C0EA\n\
- .align 2, 0\n\
+ movs r0, 0x1\n\
+ ldr r2, [sp, 0xC]\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _0803C0EA\n\
+ ldrb r1, [r4]\n\
+ cmp r1, 0x1\n\
+ bne _0803C0EA\n\
+ ldr r0, _0803C0E0 @ =gBattleTypeFlags\n\
+ ldrh r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _0803C0E4\n\
+ movs r0, 0x2\n\
+ bl sub_803C348\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x2\n\
+ bne _0803C0E4\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x3\n\
+ bl __divsi3\n\
+ lsls r5, r0, 1\n\
+ b _0803C0EA\n\
+ .align 2, 0\n\
_0803C0DC: .4byte gStatStageRatios\n\
_0803C0E0: .4byte gBattleTypeFlags\n\
_0803C0E4:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C0EA:\n\
- ldr r0, _0803C148 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C11C\n\
- ldr r0, _0803C14C @ =gBattleMoves\n\
- ldr r3, [sp, 0x8]\n\
- lsls r1, r3, 1\n\
- adds r1, r3\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x6]\n\
- cmp r0, 0x8\n\
- bne _0803C11C\n\
- movs r0, 0x2\n\
- bl sub_803C348\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C11C\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ ldr r0, _0803C148 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C11C\n\
+ ldr r0, _0803C14C @ =gBattleMoves\n\
+ ldr r3, [sp, 0x8]\n\
+ lsls r1, r3, 1\n\
+ adds r1, r3\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x6]\n\
+ cmp r0, 0x8\n\
+ bne _0803C11C\n\
+ movs r0, 0x2\n\
+ bl sub_803C348\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x2\n\
+ bne _0803C11C\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C11C:\n\
- cmp r5, 0\n\
- bne _0803C122\n\
- movs r5, 0x1\n\
+ cmp r5, 0\n\
+ bne _0803C122\n\
+ movs r5, 0x1\n\
_0803C122:\n\
- mov r6, r9\n\
- cmp r6, 0x9\n\
- bne _0803C12A\n\
- movs r5, 0\n\
+ mov r6, r9\n\
+ cmp r6, 0x9\n\
+ bne _0803C12A\n\
+ movs r5, 0\n\
_0803C12A:\n\
- mov r0, r9\n\
- cmp r0, 0x9\n\
- bhi _0803C132\n\
- b _0803C330\n\
+ mov r0, r9\n\
+ cmp r0, 0x9\n\
+ bhi _0803C132\n\
+ b _0803C330\n\
_0803C132:\n\
- ldr r0, _0803C150 @ =gCritMultiplier\n\
- ldrb r1, [r0]\n\
- adds r4, r0, 0\n\
- cmp r1, 0x2\n\
- bne _0803C15C\n\
- movs r0, 0x1C\n\
- ldrsb r0, [r7, r0]\n\
- cmp r0, 0x6\n\
- ble _0803C158\n\
- ldr r2, _0803C154 @ =gStatStageRatios\n\
- b _0803C162\n\
- .align 2, 0\n\
+ ldr r0, _0803C150 @ =gCritMultiplier\n\
+ ldrb r1, [r0]\n\
+ adds r4, r0, 0\n\
+ cmp r1, 0x2\n\
+ bne _0803C15C\n\
+ movs r0, 0x1C\n\
+ ldrsb r0, [r7, r0]\n\
+ cmp r0, 0x6\n\
+ ble _0803C158\n\
+ ldr r2, _0803C154 @ =gStatStageRatios\n\
+ b _0803C162\n\
+ .align 2, 0\n\
_0803C148: .4byte gBattleTypeFlags\n\
_0803C14C: .4byte gBattleMoves\n\
_0803C150: .4byte gCritMultiplier\n\
_0803C154: .4byte gStatStageRatios\n\
_0803C158:\n\
- mov r5, r8\n\
- b _0803C17A\n\
+ mov r5, r8\n\
+ b _0803C17A\n\
_0803C15C:\n\
- ldr r2, _0803C1A8 @ =gStatStageRatios\n\
- movs r0, 0x1C\n\
- ldrsb r0, [r7, r0]\n\
+ ldr r2, _0803C1A8 @ =gStatStageRatios\n\
+ movs r0, 0x1C\n\
+ ldrsb r0, [r7, r0]\n\
_0803C162:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- mov r5, r8\n\
- muls r5, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r5, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
+ lsls r0, 1\n\
+ adds r1, r0, r2\n\
+ ldrb r1, [r1]\n\
+ mov r5, r8\n\
+ muls r5, r1\n\
+ adds r2, 0x1\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ adds r0, r5, 0\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
_0803C17A:\n\
- ldr r0, _0803C1AC @ =gBattleMovePower\n\
- ldrh r0, [r0]\n\
- muls r5, r0\n\
- adds r0, r7, 0\n\
- adds r0, 0x2A\n\
- ldrb r0, [r0]\n\
- lsls r0, 1\n\
- movs r1, 0x5\n\
- bl __divsi3\n\
- adds r0, 0x2\n\
- muls r5, r0\n\
- ldrb r0, [r4]\n\
- cmp r0, 0x2\n\
- bne _0803C1B4\n\
- ldr r1, [sp, 0x4]\n\
- movs r0, 0x1D\n\
- ldrsb r0, [r1, r0]\n\
- cmp r0, 0x5\n\
- bgt _0803C1B0\n\
- ldr r2, _0803C1A8 @ =gStatStageRatios\n\
- b _0803C1BC\n\
- .align 2, 0\n\
+ ldr r0, _0803C1AC @ =gBattleMovePower\n\
+ ldrh r0, [r0]\n\
+ muls r5, r0\n\
+ adds r0, r7, 0\n\
+ adds r0, 0x2A\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 1\n\
+ movs r1, 0x5\n\
+ bl __divsi3\n\
+ adds r0, 0x2\n\
+ muls r5, r0\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0x2\n\
+ bne _0803C1B4\n\
+ ldr r1, [sp, 0x4]\n\
+ movs r0, 0x1D\n\
+ ldrsb r0, [r1, r0]\n\
+ cmp r0, 0x5\n\
+ bgt _0803C1B0\n\
+ ldr r2, _0803C1A8 @ =gStatStageRatios\n\
+ b _0803C1BC\n\
+ .align 2, 0\n\
_0803C1A8: .4byte gStatStageRatios\n\
_0803C1AC: .4byte gBattleMovePower\n\
_0803C1B0:\n\
- ldr r3, [sp, 0x18]\n\
- b _0803C1D6\n\
+ ldr r3, [sp, 0x18]\n\
+ b _0803C1D6\n\
_0803C1B4:\n\
- ldr r2, _0803C21C @ =gStatStageRatios\n\
- ldr r1, [sp, 0x4]\n\
- movs r0, 0x1D\n\
- ldrsb r0, [r1, r0]\n\
+ ldr r2, _0803C21C @ =gStatStageRatios\n\
+ ldr r1, [sp, 0x4]\n\
+ movs r0, 0x1D\n\
+ ldrsb r0, [r1, r0]\n\
_0803C1BC:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- ldr r6, [sp, 0x18]\n\
- adds r3, r6, 0\n\
- muls r3, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r3, 0\n\
- bl __divsi3\n\
- adds r3, r0, 0\n\
+ lsls r0, 1\n\
+ adds r1, r0, r2\n\
+ ldrb r1, [r1]\n\
+ ldr r6, [sp, 0x18]\n\
+ adds r3, r6, 0\n\
+ muls r3, r1\n\
+ adds r2, 0x1\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ adds r0, r3, 0\n\
+ bl __divsi3\n\
+ adds r3, r0, 0\n\
_0803C1D6:\n\
- adds r0, r5, 0\n\
- adds r1, r3, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- movs r1, 0x32\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- movs r0, 0x2\n\
- ldr r1, [sp, 0xC]\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C22A\n\
- ldrb r1, [r4]\n\
- cmp r1, 0x1\n\
- bne _0803C22A\n\
- ldr r0, _0803C220 @ =gBattleTypeFlags\n\
- ldrh r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _0803C224\n\
- movs r0, 0x2\n\
- bl sub_803C348\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C224\n\
- adds r0, r5, 0\n\
- movs r1, 0x3\n\
- bl __divsi3\n\
- lsls r5, r0, 1\n\
- b _0803C22A\n\
- .align 2, 0\n\
+ adds r0, r5, 0\n\
+ adds r1, r3, 0\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ movs r1, 0x32\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ movs r0, 0x2\n\
+ ldr r1, [sp, 0xC]\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C22A\n\
+ ldrb r1, [r4]\n\
+ cmp r1, 0x1\n\
+ bne _0803C22A\n\
+ ldr r0, _0803C220 @ =gBattleTypeFlags\n\
+ ldrh r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _0803C224\n\
+ movs r0, 0x2\n\
+ bl sub_803C348\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x2\n\
+ bne _0803C224\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x3\n\
+ bl __divsi3\n\
+ lsls r5, r0, 1\n\
+ b _0803C22A\n\
+ .align 2, 0\n\
_0803C21C: .4byte gStatStageRatios\n\
_0803C220: .4byte gBattleTypeFlags\n\
_0803C224:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C22A:\n\
- ldr r0, _0803C2A4 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C25C\n\
- ldr r0, _0803C2A8 @ =gBattleMoves\n\
- ldr r2, [sp, 0x8]\n\
- lsls r1, r2, 1\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x6]\n\
- cmp r0, 0x8\n\
- bne _0803C25C\n\
- movs r0, 0x2\n\
- bl sub_803C348\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C25C\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ ldr r0, _0803C2A4 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C25C\n\
+ ldr r0, _0803C2A8 @ =gBattleMoves\n\
+ ldr r2, [sp, 0x8]\n\
+ lsls r1, r2, 1\n\
+ adds r1, r2\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x6]\n\
+ cmp r0, 0x8\n\
+ bne _0803C25C\n\
+ movs r0, 0x2\n\
+ bl sub_803C348\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x2\n\
+ bne _0803C25C\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C25C:\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0xD\n\
- movs r3, 0\n\
- bl sub_8018324\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0\n\
- bne _0803C30C\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0x4D\n\
- movs r3, 0\n\
- bl sub_8018324\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803C30C\n\
- ldr r2, _0803C2AC @ =gBattleWeather\n\
- ldrh r1, [r2]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- adds r4, r2, 0\n\
- cmp r0, 0\n\
- beq _0803C2C4\n\
- mov r3, r9\n\
- cmp r3, 0xA\n\
- beq _0803C2B0\n\
- cmp r3, 0xB\n\
- beq _0803C2B8\n\
- b _0803C2C4\n\
- .align 2, 0\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0xE\n\
+ movs r1, 0\n\
+ movs r2, 0xD\n\
+ movs r3, 0\n\
+ bl sub_8018324\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0\n\
+ bne _0803C30C\n\
+ str r0, [sp]\n\
+ movs r0, 0xE\n\
+ movs r1, 0\n\
+ movs r2, 0x4D\n\
+ movs r3, 0\n\
+ bl sub_8018324\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0803C30C\n\
+ ldr r2, _0803C2AC @ =gBattleWeather\n\
+ ldrh r1, [r2]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ adds r4, r2, 0\n\
+ cmp r0, 0\n\
+ beq _0803C2C4\n\
+ mov r3, r9\n\
+ cmp r3, 0xA\n\
+ beq _0803C2B0\n\
+ cmp r3, 0xB\n\
+ beq _0803C2B8\n\
+ b _0803C2C4\n\
+ .align 2, 0\n\
_0803C2A4: .4byte gBattleTypeFlags\n\
_0803C2A8: .4byte gBattleMoves\n\
_0803C2AC: .4byte gBattleWeather\n\
_0803C2B0:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
- b _0803C2C4\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
+ b _0803C2C4\n\
_0803C2B8:\n\
- lsls r0, r5, 4\n\
- subs r0, r5\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
+ lsls r0, r5, 4\n\
+ subs r0, r5\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
_0803C2C4:\n\
- ldrh r1, [r4]\n\
- movs r0, 0x9F\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C2DC\n\
- ldr r0, _0803C2F4 @ =gUnknown_02024BE6\n\
- ldrh r0, [r0]\n\
- cmp r0, 0x4C\n\
- bne _0803C2DC\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ ldrh r1, [r4]\n\
+ movs r0, 0x9F\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C2DC\n\
+ ldr r0, _0803C2F4 @ =gUnknown_02024BE6\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0x4C\n\
+ bne _0803C2DC\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C2DC:\n\
- ldrh r1, [r4]\n\
- movs r0, 0x60\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C30C\n\
- mov r6, r9\n\
- cmp r6, 0xA\n\
- beq _0803C2F8\n\
- cmp r6, 0xB\n\
- beq _0803C306\n\
- b _0803C30C\n\
- .align 2, 0\n\
+ ldrh r1, [r4]\n\
+ movs r0, 0x60\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C30C\n\
+ mov r6, r9\n\
+ cmp r6, 0xA\n\
+ beq _0803C2F8\n\
+ cmp r6, 0xB\n\
+ beq _0803C306\n\
+ b _0803C30C\n\
+ .align 2, 0\n\
_0803C2F4: .4byte gUnknown_02024BE6\n\
_0803C2F8:\n\
- lsls r0, r5, 4\n\
- subs r0, r5\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- b _0803C30C\n\
+ lsls r0, r5, 4\n\
+ subs r0, r5\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ b _0803C30C\n\
_0803C306:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
+ lsrs r0, r5, 31\n\
+ adds r0, r5, r0\n\
+ asrs r5, r0, 1\n\
_0803C30C:\n\
- ldr r1, _0803C344 @ =0x02017100\n\
- ldr r2, [sp, 0x10]\n\
- lsls r0, r2, 2\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C330\n\
- mov r3, r9\n\
- cmp r3, 0xA\n\
- bne _0803C330\n\
- lsls r0, r5, 4\n\
- subs r0, r5\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
+ ldr r1, _0803C344 @ =0x02017100\n\
+ ldr r2, [sp, 0x10]\n\
+ lsls r0, r2, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803C330\n\
+ mov r3, r9\n\
+ cmp r3, 0xA\n\
+ bne _0803C330\n\
+ lsls r0, r5, 4\n\
+ subs r0, r5\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
_0803C330:\n\
- adds r0, r5, 0x2\n\
- add sp, 0x2C\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\
+ adds r0, r5, 0x2\n\
+ add sp, 0x2C\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\
_0803C344: .4byte 0x02017100\n\
- .syntax divided");
+ .syntax divided");
}
#endif
diff --git a/src/contest_painting.c b/src/contest_painting.c
index b77041f41..556456814 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -56,8 +56,8 @@ struct Unk3000756
struct LabelPair
{
- u8 (*prefix)[];
- u8 (*suffix)[];
+ const u8 *prefix;
+ const u8 *suffix;
};
struct Unk03005E20
@@ -97,32 +97,112 @@ extern const struct SpriteSheet gMonFrontPicTable[];
extern const struct MonCoords gMonFrontPicCoords[];
extern const struct SpriteSheet gMonBackPicTable[];
extern const struct MonCoords gMonBackPicCoords[];
-
extern void *gUnknown_081FAF4C[];
-
-extern u16 gPictureFramePalettes[];
-
-extern u8 gPictureFrameTiles_0[];
-extern u8 gPictureFrameTiles_1[];
-extern u8 gPictureFrameTiles_2[];
-extern u8 gPictureFrameTiles_3[];
-extern u8 gPictureFrameTiles_4[];
-extern u8 gPictureFrameTiles_5[];
-
-extern u8 gPictureFrameTilemap_0[];
-extern u8 gPictureFrameTilemap_1[];
-extern u8 gPictureFrameTilemap_2[];
-extern u8 gPictureFrameTilemap_3[];
-extern u8 gPictureFrameTilemap_4[];
-extern u8 gPictureFrameTilemap_5[];
-
-extern u8 *gUnknown_083F60AC[];
-extern struct LabelPair gUnknown_083F60C0[];
-extern struct OamData gOamData_83F6138;
-extern u16 gUnknown_083F6140[];
-
-extern u8 gContestText_ContestWinner[];
-extern u8 gOtherText_Unknown1[];
+extern const u8 OtherText_Cool[];
+extern const u8 OtherText_Beauty2[];
+extern const u8 OtherText_Cute[];
+extern const u8 OtherText_Smart[];
+extern const u8 OtherText_Tough[];
+extern const u8 OtherText_NonstopSuperCool[];
+extern const u8 OtherText_Terminator6[];
+extern const u8 OtherText_GoodLookingPoke[];
+extern const u8 OtherText_Terminator7[];
+extern const u8 OtherText_MarvelousGreat[];
+extern const u8 OtherText_Terminator8[];
+extern const u8 OtherText_CenturyLastVenus[];
+extern const u8 OtherText_Terminator9[];
+extern const u8 OtherText_Terminator10[];
+extern const u8 OtherText_DazzlingSlime[];
+extern const u8 OtherText_PokeCenterIdol[];
+extern const u8 OtherText_Terminator11[];
+extern const u8 OtherText_LovelyAndSweet[];
+extern const u8 OtherText_Terminator12[];
+extern const u8 OtherText_ThePretty[];
+extern const u8 OtherText_WinningPortrait[];
+extern const u8 OtherText_GiveUsWink[];
+extern const u8 OtherText_Terminator13[];
+extern const u8 OtherText_SmartnessMaestro[];
+extern const u8 OtherText_Terminator14[];
+extern const u8 OtherText_ChosenPokeAmong[];
+extern const u8 OtherText_Terminator15[];
+extern const u8 OtherText_TheExcellent[];
+extern const u8 OtherText_ItsMomentOfElegance[];
+extern const u8 OtherText_PowerfullyMuscular[];
+extern const u8 OtherText_Terminator16[];
+extern const u8 OtherText_StrongErEst[];
+extern const u8 OtherText_Terminator17[];
+extern const u8 OtherText_MightyTough[];
+extern const u8 OtherText_Exclamation[];
+extern const u8 gContestText_ContestWinner[];
+extern const u8 gOtherText_Unknown1[];
+
+static const u16 gPictureFramePalettes[][16] =
+{
+ INCBIN_U16("graphics/picture_frame/bg0.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg1.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg2.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg3.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg4.gbapal"),
+ INCBIN_U16("graphics/picture_frame/bg5.gbapal"),
+ {0},
+ {0},
+};
+const u8 emptySpace[8 * 32] = {0};
+const u8 gPictureFrameTiles_0[] = INCBIN_U8("graphics/picture_frame/frame0.4bpp.rl");
+const u8 gPictureFrameTiles_1[] = INCBIN_U8("graphics/picture_frame/frame1.4bpp.rl");
+const u8 gPictureFrameTiles_2[] = INCBIN_U8("graphics/picture_frame/frame2.4bpp.rl");
+const u8 gPictureFrameTiles_3[] = INCBIN_U8("graphics/picture_frame/frame3.4bpp.rl");
+const u8 gPictureFrameTiles_4[] = INCBIN_U8("graphics/picture_frame/frame4.4bpp.rl");
+const u8 gPictureFrameTiles_5[] = INCBIN_U8("graphics/picture_frame/frame5.4bpp.rl");
+const u8 gPictureFrameTilemap_0[] = INCBIN_U8("graphics/picture_frame/frame0_map.bin.rl");
+const u8 gPictureFrameTilemap_1[] = INCBIN_U8("graphics/picture_frame/frame1_map.bin.rl");
+const u8 gPictureFrameTilemap_2[] = INCBIN_U8("graphics/picture_frame/frame2_map.bin.rl");
+const u8 gPictureFrameTilemap_3[] = INCBIN_U8("graphics/picture_frame/frame3_map.bin.rl");
+const u8 gPictureFrameTilemap_4[] = INCBIN_U8("graphics/picture_frame/frame4_map.bin.rl");
+const u8 gPictureFrameTilemap_5[] = INCBIN_U8("graphics/picture_frame/frame5_map.bin.rl");
+const u8 *const gUnknown_083F60AC[] =
+{
+ OtherText_Cool,
+ OtherText_Beauty2,
+ OtherText_Cute,
+ OtherText_Smart,
+ OtherText_Tough,
+};
+const struct LabelPair gUnknown_083F60C0[] =
+{
+ {OtherText_NonstopSuperCool, OtherText_Terminator6},
+ {OtherText_GoodLookingPoke, OtherText_Terminator7},
+ {OtherText_MarvelousGreat, OtherText_Terminator8},
+ {OtherText_CenturyLastVenus, OtherText_Terminator9},
+ {OtherText_Terminator10, OtherText_DazzlingSlime},
+ {OtherText_PokeCenterIdol, OtherText_Terminator11},
+ {OtherText_LovelyAndSweet, OtherText_Terminator12},
+ {OtherText_ThePretty, OtherText_WinningPortrait},
+ {OtherText_GiveUsWink, OtherText_Terminator13},
+ {OtherText_SmartnessMaestro, OtherText_Terminator15},
+ {OtherText_ChosenPokeAmong, OtherText_Terminator15},
+ {OtherText_TheExcellent, OtherText_ItsMomentOfElegance},
+ {OtherText_PowerfullyMuscular, OtherText_Terminator16},
+ {OtherText_StrongErEst, OtherText_Terminator17},
+ {OtherText_MightyTough, OtherText_Exclamation},
+};
+const struct OamData gOamData_83F6138 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 1,
+ .bpp = 1,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+const u16 gUnknown_083F6140[] = {0, 0};
static void ShowContestPainting();
static void CB2_HoldContestPainting(void);
@@ -144,29 +224,29 @@ __attribute__((naked))
void sub_8106630(u32 arg0)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- ldr r2, _0810665C @ =0x02015de0\n\
- subs r4, r2, 0x2\n\
- subs r5, r2, 0x1\n\
- ldr r3, _08106660 @ =gSaveBlock1\n\
- subs r0, 0x1\n\
- lsls r1, r0, 5\n\
- adds r1, r3\n\
- ldr r3, _08106664 @ =0x00002dfc\n\
- adds r1, r3\n\
- ldm r1!, {r3,r6,r7}\n\
- stm r2!, {r3,r6,r7}\n\
- ldm r1!, {r3,r6,r7}\n\
- stm r2!, {r3,r6,r7}\n\
- ldm r1!, {r6,r7}\n\
- stm r2!, {r6,r7}\n\
- strb r0, [r4]\n\
- movs r0, 0\n\
- strb r0, [r5]\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ push {r4-r7,lr}\n\
+ ldr r2, _0810665C @ =0x02015de0\n\
+ subs r4, r2, 0x2\n\
+ subs r5, r2, 0x1\n\
+ ldr r3, _08106660 @ =gSaveBlock1\n\
+ subs r0, 0x1\n\
+ lsls r1, r0, 5\n\
+ adds r1, r3\n\
+ ldr r3, _08106664 @ =0x00002dfc\n\
+ adds r1, r3\n\
+ ldm r1!, {r3,r6,r7}\n\
+ stm r2!, {r3,r6,r7}\n\
+ ldm r1!, {r3,r6,r7}\n\
+ stm r2!, {r3,r6,r7}\n\
+ ldm r1!, {r6,r7}\n\
+ stm r2!, {r6,r7}\n\
+ strb r0, [r4]\n\
+ movs r0, 0\n\
+ strb r0, [r5]\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_0810665C: .4byte 0x02015de0\n\
_08106660: .4byte gSaveBlock1\n\
_08106664: .4byte 0x00002dfc\n\
@@ -312,9 +392,9 @@ static void ContestPaintingPrintCaption(u8 contestType, u8 arg1)
}
else
{
- ptr = StringCopy(ptr, *gUnknown_083F60C0[type].prefix);
+ ptr = StringCopy(ptr, gUnknown_083F60C0[type].prefix);
ptr = StringCopy10(ptr, gUnknown_03005E8C->pokemon_name);
- ptr = StringCopy(ptr, *gUnknown_083F60C0[type].suffix);
+ ptr = StringCopy(ptr, gUnknown_083F60C0[type].suffix);
xPos = 3;
yPos = 14;
@@ -419,53 +499,53 @@ __attribute__((naked))
static void sub_8106AC4(u16 arg0, u8 arg2)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- sub sp, 0xC\n\
- adds r4, r1, 0\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- ldr r7, _08106B28 @ =gUnknown_03005E8C\n\
- ldr r0, [r7]\n\
- ldr r1, [r0, 0x4]\n\
- ldr r2, [r0]\n\
- adds r0, r6, 0\n\
- bl species_and_otid_get_pal\n\
- ldr r1, _08106B2C @ =gUnknown_03005E90\n\
- mov r8, r1\n\
- ldr r1, [r1]\n\
- bl LZDecompressVram\n\
- cmp r4, 0\n\
- bne _08106B40\n\
- lsls r0, r6, 3\n\
- ldr r1, _08106B30 @ =gMonFrontPicTable\n\
- adds r0, r1\n\
- ldr r1, _08106B34 @ =gMonFrontPicCoords\n\
- lsls r2, r6, 2\n\
- adds r2, r1\n\
- ldrb r1, [r2]\n\
- ldrb r2, [r2, 0x1]\n\
- movs r3, 0x80\n\
- lsls r3, 18\n\
- ldr r4, _08106B38 @ =gUnknown_081FAF4C\n\
- ldr r5, [r4, 0x4]\n\
- str r5, [sp]\n\
- str r6, [sp, 0x4]\n\
- ldr r4, [r7]\n\
- ldr r4, [r4]\n\
- str r4, [sp, 0x8]\n\
- bl HandleLoadSpecialPokePic\n\
- mov r2, r8\n\
- ldr r1, [r2]\n\
- ldr r0, _08106B3C @ =gUnknown_03005E10\n\
- ldr r2, [r0]\n\
- adds r0, r5, 0\n\
- bl sub_8106B90\n\
- b _08106B74\n\
- .align 2, 0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ sub sp, 0xC\n\
+ adds r4, r1, 0\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ ldr r7, _08106B28 @ =gUnknown_03005E8C\n\
+ ldr r0, [r7]\n\
+ ldr r1, [r0, 0x4]\n\
+ ldr r2, [r0]\n\
+ adds r0, r6, 0\n\
+ bl species_and_otid_get_pal\n\
+ ldr r1, _08106B2C @ =gUnknown_03005E90\n\
+ mov r8, r1\n\
+ ldr r1, [r1]\n\
+ bl LZDecompressVram\n\
+ cmp r4, 0\n\
+ bne _08106B40\n\
+ lsls r0, r6, 3\n\
+ ldr r1, _08106B30 @ =gMonFrontPicTable\n\
+ adds r0, r1\n\
+ ldr r1, _08106B34 @ =gMonFrontPicCoords\n\
+ lsls r2, r6, 2\n\
+ adds r2, r1\n\
+ ldrb r1, [r2]\n\
+ ldrb r2, [r2, 0x1]\n\
+ movs r3, 0x80\n\
+ lsls r3, 18\n\
+ ldr r4, _08106B38 @ =gUnknown_081FAF4C\n\
+ ldr r5, [r4, 0x4]\n\
+ str r5, [sp]\n\
+ str r6, [sp, 0x4]\n\
+ ldr r4, [r7]\n\
+ ldr r4, [r4]\n\
+ str r4, [sp, 0x8]\n\
+ bl HandleLoadSpecialPokePic\n\
+ mov r2, r8\n\
+ ldr r1, [r2]\n\
+ ldr r0, _08106B3C @ =gUnknown_03005E10\n\
+ ldr r2, [r0]\n\
+ adds r0, r5, 0\n\
+ bl sub_8106B90\n\
+ b _08106B74\n\
+ .align 2, 0\n\
_08106B28: .4byte gUnknown_03005E8C\n\
_08106B2C: .4byte gUnknown_03005E90\n\
_08106B30: .4byte gMonFrontPicTable\n\
@@ -473,38 +553,38 @@ _08106B34: .4byte gMonFrontPicCoords\n\
_08106B38: .4byte gUnknown_081FAF4C\n\
_08106B3C: .4byte gUnknown_03005E10\n\
_08106B40:\n\
- lsls r0, r6, 3\n\
- ldr r1, _08106B80 @ =gMonBackPicTable\n\
- adds r0, r1\n\
- ldr r1, _08106B84 @ =gMonBackPicCoords\n\
- lsls r2, r6, 2\n\
- adds r2, r1\n\
- ldrb r1, [r2]\n\
- ldrb r2, [r2, 0x1]\n\
- movs r3, 0x80\n\
- lsls r3, 18\n\
- ldr r4, _08106B88 @ =gUnknown_081FAF4C\n\
- ldr r5, [r4]\n\
- str r5, [sp]\n\
- str r6, [sp, 0x4]\n\
- ldr r4, [r7]\n\
- ldr r4, [r4]\n\
- str r4, [sp, 0x8]\n\
- bl HandleLoadSpecialPokePic\n\
- mov r0, r8\n\
- ldr r1, [r0]\n\
- ldr r0, _08106B8C @ =gUnknown_03005E10\n\
- ldr r2, [r0]\n\
- adds r0, r5, 0\n\
- bl sub_8106B90\n\
+ lsls r0, r6, 3\n\
+ ldr r1, _08106B80 @ =gMonBackPicTable\n\
+ adds r0, r1\n\
+ ldr r1, _08106B84 @ =gMonBackPicCoords\n\
+ lsls r2, r6, 2\n\
+ adds r2, r1\n\
+ ldrb r1, [r2]\n\
+ ldrb r2, [r2, 0x1]\n\
+ movs r3, 0x80\n\
+ lsls r3, 18\n\
+ ldr r4, _08106B88 @ =gUnknown_081FAF4C\n\
+ ldr r5, [r4]\n\
+ str r5, [sp]\n\
+ str r6, [sp, 0x4]\n\
+ ldr r4, [r7]\n\
+ ldr r4, [r4]\n\
+ str r4, [sp, 0x8]\n\
+ bl HandleLoadSpecialPokePic\n\
+ mov r0, r8\n\
+ ldr r1, [r0]\n\
+ ldr r0, _08106B8C @ =gUnknown_03005E10\n\
+ ldr r2, [r0]\n\
+ adds r0, r5, 0\n\
+ bl sub_8106B90\n\
_08106B74:\n\
- add sp, 0xC\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ add sp, 0xC\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08106B80: .4byte gMonBackPicTable\n\
_08106B84: .4byte gMonBackPicCoords\n\
_08106B88: .4byte gUnknown_081FAF4C\n\
@@ -552,102 +632,102 @@ __attribute__((naked))
void sub_8106B90()
{
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, 0xC\n\
- mov r10, r0\n\
- mov r9, r1\n\
- str r2, [sp]\n\
- movs r0, 0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0xC\n\
+ mov r10, r0\n\
+ mov r9, r1\n\
+ str r2, [sp]\n\
+ movs r0, 0\n\
_08106BA4:\n\
- movs r3, 0\n\
- adds r1, r0, 0x1\n\
- str r1, [sp, 0x4]\n\
- lsls r0, 3\n\
- str r0, [sp, 0x8]\n\
+ movs r3, 0\n\
+ adds r1, r0, 0x1\n\
+ str r1, [sp, 0x4]\n\
+ lsls r0, 3\n\
+ str r0, [sp, 0x8]\n\
_08106BAE:\n\
- movs r1, 0\n\
- adds r2, r3, 0x1\n\
- mov r8, r2\n\
- ldr r7, [sp, 0x8]\n\
- adds r0, r7, r3\n\
- lsls r0, 5\n\
- mov r12, r0\n\
- lsls r4, r3, 3\n\
+ movs r1, 0\n\
+ adds r2, r3, 0x1\n\
+ mov r8, r2\n\
+ ldr r7, [sp, 0x8]\n\
+ adds r0, r7, r3\n\
+ lsls r0, 5\n\
+ mov r12, r0\n\
+ lsls r4, r3, 3\n\
_08106BBE:\n\
- movs r3, 0\n\
- lsls r0, r1, 2\n\
- adds r6, r1, 0x1\n\
- mov r2, r12\n\
- adds r5, r2, r0\n\
- ldr r7, [sp, 0x8]\n\
- adds r0, r7, r1\n\
- lsls r0, 7\n\
- ldr r1, [sp]\n\
- adds r2, r0, r1\n\
+ movs r3, 0\n\
+ lsls r0, r1, 2\n\
+ adds r6, r1, 0x1\n\
+ mov r2, r12\n\
+ adds r5, r2, r0\n\
+ ldr r7, [sp, 0x8]\n\
+ adds r0, r7, r1\n\
+ lsls r0, 7\n\
+ ldr r1, [sp]\n\
+ adds r2, r0, r1\n\
_08106BD2:\n\
- lsrs r0, r3, 1\n\
- adds r0, r5, r0\n\
- add r0, r10\n\
- ldrb r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r3\n\
- cmp r0, 0\n\
- beq _08106BE6\n\
- lsrs r1, 4\n\
- b _08106BEA\n\
+ lsrs r0, r3, 1\n\
+ adds r0, r5, r0\n\
+ add r0, r10\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r3\n\
+ cmp r0, 0\n\
+ beq _08106BE6\n\
+ lsrs r1, 4\n\
+ b _08106BEA\n\
_08106BE6:\n\
- movs r0, 0xF\n\
- ands r1, r0\n\
+ movs r0, 0xF\n\
+ ands r1, r0\n\
_08106BEA:\n\
- cmp r1, 0\n\
- bne _08106BFC\n\
- adds r0, r4, r3\n\
- lsls r0, 1\n\
- adds r0, r2\n\
- movs r7, 0x80\n\
- lsls r7, 8\n\
- adds r1, r7, 0\n\
- b _08106C08\n\
+ cmp r1, 0\n\
+ bne _08106BFC\n\
+ adds r0, r4, r3\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ movs r7, 0x80\n\
+ lsls r7, 8\n\
+ adds r1, r7, 0\n\
+ b _08106C08\n\
_08106BFC:\n\
- adds r0, r4, r3\n\
- lsls r0, 1\n\
- adds r0, r2\n\
- lsls r1, 1\n\
- add r1, r9\n\
- ldrh r1, [r1]\n\
+ adds r0, r4, r3\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ lsls r1, 1\n\
+ add r1, r9\n\
+ ldrh r1, [r1]\n\
_08106C08:\n\
- strh r1, [r0]\n\
- adds r0, r3, 0x1\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- cmp r3, 0x7\n\
- bls _08106BD2\n\
- lsls r0, r6, 16\n\
- lsrs r1, r0, 16\n\
- cmp r1, 0x7\n\
- bls _08106BBE\n\
- mov r1, r8\n\
- lsls r0, r1, 16\n\
- lsrs r3, r0, 16\n\
- cmp r3, 0x7\n\
- bls _08106BAE\n\
- ldr r2, [sp, 0x4]\n\
- lsls r0, r2, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x7\n\
- bls _08106BA4\n\
- add sp, 0xC\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
+ strh r1, [r0]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x7\n\
+ bls _08106BD2\n\
+ lsls r0, r6, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r1, 0x7\n\
+ bls _08106BBE\n\
+ mov r1, r8\n\
+ lsls r0, r1, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x7\n\
+ bls _08106BAE\n\
+ ldr r2, [sp, 0x4]\n\
+ lsls r0, r2, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x7\n\
+ bls _08106BA4\n\
+ add sp, 0xC\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
#endif
@@ -656,7 +736,7 @@ static void sub_8106C40(u8 arg0, u8 arg1)
{
u8 x, y;
- LoadPalette(gPictureFramePalettes, 0, 128 * 2);
+ LoadPalette(gPictureFramePalettes, 0, sizeof(gPictureFramePalettes));
if (arg1 == 1)
{
switch (gUnknown_03005E8C->contestType / 3)
diff --git a/src/credits.c b/src/credits.c
index eb8f45374..7685a033d 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -180,8 +180,8 @@ extern u8 gBirchHelpGfx[];
extern void *gUnknown_0840B5A0[];
// data/credits
-extern u16 gUnknown_0840B7BC[32];
-extern u16 gUnknown_0840B7FC[32];
+const u16 gUnknown_0840B7BC[] = INCBIN_U16("graphics/credits/palette_1.gbapal");
+const u8 gUnknown_0840B7FC[] = INCBIN_U8("graphics/credits/ampersand.4bpp");
extern u8 gUnknown_0840B83C[];
extern u8 gUnknown_0840B84B[];
extern u8 gUnknown_0840B85A[];
@@ -191,8 +191,8 @@ extern struct CreditsEntry *gCreditsEntryPointerTable[][5];
extern u8 gUnknown_0840CA00[][2];
extern struct SpriteSheet gUnknown_0840CAA0;
extern struct SpritePalette gUnknown_0840CAB0;
-extern union AnimCmd *gSpriteAnimTable_0840CA54[];
-extern union AnimCmd *gSpriteAnimTable_0840CA94[];
+extern const union AnimCmd *const gSpriteAnimTable_0840CA54[];
+extern const union AnimCmd *const gSpriteAnimTable_0840CA94[];
extern struct SpriteTemplate gSpriteTemplate_840CAEC;
// data/intro_credits_graphics
@@ -870,326 +870,326 @@ __attribute__((naked))
void task_c_8144664(u8 taskIdC)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- ldr r1, _0814468C @ =gTasks\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- movs r2, 0x8\n\
- ldrsh r0, [r0, r2]\n\
- adds r6, r1, 0\n\
- cmp r0, 0x32\n\
- bls _08144680\n\
- b _0814492C\n\
+ push {r4-r7,lr}\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ ldr r1, _0814468C @ =gTasks\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ movs r2, 0x8\n\
+ ldrsh r0, [r0, r2]\n\
+ adds r6, r1, 0\n\
+ cmp r0, 0x32\n\
+ bls _08144680\n\
+ b _0814492C\n\
_08144680:\n\
- lsls r0, 2\n\
- ldr r1, _08144690 @ =_08144694\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
+ lsls r0, 2\n\
+ ldr r1, _08144690 @ =_08144694\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
_0814468C: .4byte gTasks\n\
_08144690: .4byte _08144694\n\
- .align 2, 0\n\
+ .align 2, 0\n\
_08144694:\n\
- .4byte _08144760\n\
- .4byte _08144784\n\
- .4byte _081447D8\n\
- .4byte _081447F0\n\
- .4byte _0814482C\n\
- .4byte _08144850\n\
- .4byte _0814489C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _081448A8\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _081448C8\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _081448EC\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _0814492C\n\
- .4byte _08144920\n\
+ .4byte _08144760\n\
+ .4byte _08144784\n\
+ .4byte _081447D8\n\
+ .4byte _081447F0\n\
+ .4byte _0814482C\n\
+ .4byte _08144850\n\
+ .4byte _0814489C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _081448A8\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _081448C8\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _081448EC\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _0814492C\n\
+ .4byte _08144920\n\
_08144760:\n\
- lsls r4, r5, 2\n\
- adds r4, r5\n\
- lsls r4, 3\n\
- adds r4, r6\n\
- ldrh r0, [r4, 0x12]\n\
- lsls r0, 16\n\
- asrs r0, 17\n\
- movs r1, 0x7F\n\
- ands r0, r1\n\
- movs r1, 0xC\n\
- bl Sin\n\
- ldr r1, _08144780 @ =gUnknown_0203935A\n\
- strh r0, [r1]\n\
- b _081447A8\n\
- .align 2, 0\n\
+ lsls r4, r5, 2\n\
+ adds r4, r5\n\
+ lsls r4, 3\n\
+ adds r4, r6\n\
+ ldrh r0, [r4, 0x12]\n\
+ lsls r0, 16\n\
+ asrs r0, 17\n\
+ movs r1, 0x7F\n\
+ ands r0, r1\n\
+ movs r1, 0xC\n\
+ bl Sin\n\
+ ldr r1, _08144780 @ =gUnknown_0203935A\n\
+ strh r0, [r1]\n\
+ b _081447A8\n\
+ .align 2, 0\n\
_08144780: .4byte gUnknown_0203935A\n\
_08144784:\n\
- ldr r7, _081447B0 @ =gUnknown_0203935A\n\
- movs r3, 0\n\
- ldrsh r4, [r7, r3]\n\
- cmp r4, 0\n\
- beq _081447B4\n\
- lsls r4, r5, 2\n\
- adds r4, r5\n\
- lsls r4, 3\n\
- adds r4, r6\n\
- ldrh r0, [r4, 0x12]\n\
- lsls r0, 16\n\
- asrs r0, 17\n\
- movs r1, 0x7F\n\
- ands r0, r1\n\
- movs r1, 0xC\n\
- bl Sin\n\
- strh r0, [r7]\n\
+ ldr r7, _081447B0 @ =gUnknown_0203935A\n\
+ movs r3, 0\n\
+ ldrsh r4, [r7, r3]\n\
+ cmp r4, 0\n\
+ beq _081447B4\n\
+ lsls r4, r5, 2\n\
+ adds r4, r5\n\
+ lsls r4, 3\n\
+ adds r4, r6\n\
+ ldrh r0, [r4, 0x12]\n\
+ lsls r0, 16\n\
+ asrs r0, 17\n\
+ movs r1, 0x7F\n\
+ ands r0, r1\n\
+ movs r1, 0xC\n\
+ bl Sin\n\
+ strh r0, [r7]\n\
_081447A8:\n\
- ldrh r0, [r4, 0x12]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x12]\n\
- b _0814492C\n\
- .align 2, 0\n\
+ ldrh r0, [r4, 0x12]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x12]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
_081447B0: .4byte gUnknown_0203935A\n\
_081447B4:\n\
- ldr r3, _081447D4 @ =gSprites\n\
- lsls r1, r5, 2\n\
- adds r1, r5\n\
- lsls r1, 3\n\
- adds r1, r6\n\
- movs r0, 0xC\n\
- ldrsh r2, [r1, r0]\n\
- lsls r0, r2, 4\n\
- adds r0, r2\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r2, 0x2\n\
- strh r2, [r0, 0x2E]\n\
- strh r4, [r1, 0x12]\n\
- b _08144848\n\
- .align 2, 0\n\
+ ldr r3, _081447D4 @ =gSprites\n\
+ lsls r1, r5, 2\n\
+ adds r1, r5\n\
+ lsls r1, 3\n\
+ adds r1, r6\n\
+ movs r0, 0xC\n\
+ ldrsh r2, [r1, r0]\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r2, 0x2\n\
+ strh r2, [r0, 0x2E]\n\
+ strh r4, [r1, 0x12]\n\
+ b _08144848\n\
+ .align 2, 0\n\
_081447D4: .4byte gSprites\n\
_081447D8:\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r1, r0, r6\n\
- ldrh r2, [r1, 0x12]\n\
- movs r3, 0x12\n\
- ldrsh r0, [r1, r3]\n\
- cmp r0, 0x3F\n\
- bgt _08144848\n\
- adds r0, r2, 0x1\n\
- strh r0, [r1, 0x12]\n\
- b _08144866\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r1, r0, r6\n\
+ ldrh r2, [r1, 0x12]\n\
+ movs r3, 0x12\n\
+ ldrsh r0, [r1, r3]\n\
+ cmp r0, 0x3F\n\
+ bgt _08144848\n\
+ adds r0, r2, 0x1\n\
+ strh r0, [r1, 0x12]\n\
+ b _08144866\n\
_081447F0:\n\
- ldr r3, _08144828 @ =gSprites\n\
- lsls r2, r5, 2\n\
- adds r2, r5\n\
- lsls r2, 3\n\
- adds r2, r6\n\
- movs r0, 0xC\n\
- ldrsh r1, [r2, r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r1, 0x3\n\
- strh r1, [r0, 0x2E]\n\
- movs r0, 0xE\n\
- ldrsh r1, [r2, r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r1, 0x1\n\
- strh r1, [r0, 0x2E]\n\
- movs r0, 0x78\n\
- strh r0, [r2, 0x10]\n\
- ldrh r0, [r2, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r2, 0x8]\n\
- b _0814492C\n\
- .align 2, 0\n\
+ ldr r3, _08144828 @ =gSprites\n\
+ lsls r2, r5, 2\n\
+ adds r2, r5\n\
+ lsls r2, 3\n\
+ adds r2, r6\n\
+ movs r0, 0xC\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r1, 0x3\n\
+ strh r1, [r0, 0x2E]\n\
+ movs r0, 0xE\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r1, 0x1\n\
+ strh r1, [r0, 0x2E]\n\
+ movs r0, 0x78\n\
+ strh r0, [r2, 0x10]\n\
+ ldrh r0, [r2, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r2, 0x8]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
_08144828: .4byte gSprites\n\
_0814482C:\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r1, r0, r6\n\
- ldrh r2, [r1, 0x10]\n\
- movs r3, 0x10\n\
- ldrsh r0, [r1, r3]\n\
- cmp r0, 0\n\
- beq _08144844\n\
- subs r0, r2, 0x1\n\
- strh r0, [r1, 0x10]\n\
- b _0814492C\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r1, r0, r6\n\
+ ldrh r2, [r1, 0x10]\n\
+ movs r3, 0x10\n\
+ ldrsh r0, [r1, r3]\n\
+ cmp r0, 0\n\
+ beq _08144844\n\
+ subs r0, r2, 0x1\n\
+ strh r0, [r1, 0x10]\n\
+ b _0814492C\n\
_08144844:\n\
- movs r0, 0x40\n\
- strh r0, [r1, 0x12]\n\
+ movs r0, 0x40\n\
+ strh r0, [r1, 0x12]\n\
_08144848:\n\
- ldrh r0, [r1, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r1, 0x8]\n\
- b _0814492C\n\
+ ldrh r0, [r1, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1, 0x8]\n\
+ b _0814492C\n\
_08144850:\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r4, r0, r6\n\
- ldrh r1, [r4, 0x12]\n\
- movs r2, 0x12\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0\n\
- ble _0814487C\n\
- subs r0, r1, 0x1\n\
- strh r0, [r4, 0x12]\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r4, r0, r6\n\
+ ldrh r1, [r4, 0x12]\n\
+ movs r2, 0x12\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0\n\
+ ble _0814487C\n\
+ subs r0, r1, 0x1\n\
+ strh r0, [r4, 0x12]\n\
_08144866:\n\
- movs r1, 0x7F\n\
- ands r0, r1\n\
- movs r1, 0x14\n\
- bl Sin\n\
- ldr r1, _08144878 @ =gUnknown_0203935A\n\
- strh r0, [r1]\n\
- b _0814492C\n\
- .align 2, 0\n\
+ movs r1, 0x7F\n\
+ ands r0, r1\n\
+ movs r1, 0x14\n\
+ bl Sin\n\
+ ldr r1, _08144878 @ =gUnknown_0203935A\n\
+ strh r0, [r1]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
_08144878: .4byte gUnknown_0203935A\n\
_0814487C:\n\
- ldr r2, _08144898 @ =gSprites\n\
- movs r3, 0xC\n\
- ldrsh r1, [r4, r3]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- movs r1, 0x1\n\
- strh r1, [r0, 0x2E]\n\
- ldrh r0, [r4, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x8]\n\
- b _0814492C\n\
- .align 2, 0\n\
+ ldr r2, _08144898 @ =gSprites\n\
+ movs r3, 0xC\n\
+ ldrsh r1, [r4, r3]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ movs r1, 0x1\n\
+ strh r1, [r0, 0x2E]\n\
+ ldrh r0, [r4, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x8]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
_08144898: .4byte gSprites\n\
_0814489C:\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r0, r6\n\
- movs r1, 0x32\n\
- b _0814492A\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r6\n\
+ movs r1, 0x32\n\
+ b _0814492A\n\
_081448A8:\n\
- ldr r3, _081448C4 @ =gSprites\n\
- lsls r1, r5, 2\n\
- adds r1, r5\n\
- lsls r1, 3\n\
- adds r1, r6\n\
- movs r0, 0xE\n\
- ldrsh r2, [r1, r0]\n\
- lsls r0, r2, 4\n\
- adds r0, r2\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r2, 0x2\n\
- b _081448E0\n\
- .align 2, 0\n\
+ ldr r3, _081448C4 @ =gSprites\n\
+ lsls r1, r5, 2\n\
+ adds r1, r5\n\
+ lsls r1, 3\n\
+ adds r1, r6\n\
+ movs r0, 0xE\n\
+ ldrsh r2, [r1, r0]\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r2, 0x2\n\
+ b _081448E0\n\
+ .align 2, 0\n\
_081448C4: .4byte gSprites\n\
_081448C8:\n\
- ldr r3, _081448E8 @ =gSprites\n\
- lsls r1, r5, 2\n\
- adds r1, r5\n\
- lsls r1, 3\n\
- adds r1, r6\n\
- movs r0, 0xC\n\
- ldrsh r2, [r1, r0]\n\
- lsls r0, r2, 4\n\
- adds r0, r2\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r2, 0x4\n\
+ ldr r3, _081448E8 @ =gSprites\n\
+ lsls r1, r5, 2\n\
+ adds r1, r5\n\
+ lsls r1, 3\n\
+ adds r1, r6\n\
+ movs r0, 0xC\n\
+ ldrsh r2, [r1, r0]\n\
+ lsls r0, r2, 4\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r2, 0x4\n\
_081448E0:\n\
- strh r2, [r0, 0x2E]\n\
- movs r0, 0x32\n\
- strh r0, [r1, 0x8]\n\
- b _0814492C\n\
- .align 2, 0\n\
+ strh r2, [r0, 0x2E]\n\
+ movs r0, 0x32\n\
+ strh r0, [r1, 0x8]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
_081448E8: .4byte gSprites\n\
_081448EC:\n\
- ldr r3, _0814491C @ =gSprites\n\
- lsls r2, r5, 2\n\
- adds r2, r5\n\
- lsls r2, 3\n\
- adds r2, r6\n\
- movs r0, 0xC\n\
- ldrsh r1, [r2, r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r1, 0x5\n\
- strh r1, [r0, 0x2E]\n\
- movs r0, 0xE\n\
- ldrsh r1, [r2, r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- movs r1, 0x3\n\
- strh r1, [r0, 0x2E]\n\
- movs r0, 0x32\n\
- strh r0, [r2, 0x8]\n\
- b _0814492C\n\
- .align 2, 0\n\
+ ldr r3, _0814491C @ =gSprites\n\
+ lsls r2, r5, 2\n\
+ adds r2, r5\n\
+ lsls r2, 3\n\
+ adds r2, r6\n\
+ movs r0, 0xC\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r1, 0x5\n\
+ strh r1, [r0, 0x2E]\n\
+ movs r0, 0xE\n\
+ ldrsh r1, [r2, r0]\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ movs r1, 0x3\n\
+ strh r1, [r0, 0x2E]\n\
+ movs r0, 0x32\n\
+ strh r0, [r2, 0x8]\n\
+ b _0814492C\n\
+ .align 2, 0\n\
_0814491C: .4byte gSprites\n\
_08144920:\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r0, r6\n\
- movs r1, 0\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r6\n\
+ movs r1, 0\n\
_0814492A:\n\
- strh r1, [r0, 0x8]\n\
+ strh r1, [r0, 0x8]\n\
_0814492C:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
@@ -1455,107 +1455,107 @@ __attribute__((naked))
void sub_8145128(u16 arg0, u16 arg1, u16 arg2)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- adds r3, r0, 0\n\
- adds r4, r2, 0\n\
- lsls r3, 16\n\
- lsrs r3, 16\n\
- lsls r1, 16\n\
- lsrs r7, r1, 16\n\
- lsls r4, 16\n\
- lsrs r5, r4, 16\n\
- ldr r0, _081451EC @ =gCreditsCopyrightEnd_Gfx\n\
- movs r6, 0xC0\n\
- lsls r6, 19\n\
- adds r3, r6\n\
- adds r1, r3, 0\n\
- bl LZ77UnCompVram\n\
- ldr r0, _081451F0 @ =gIntroCopyright_Pal\n\
- adds r1, r5, 0\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- lsrs r4, 20\n\
- lsls r4, 28\n\
- lsrs r4, 16\n\
- movs r2, 0\n\
- adds r1, r4, 0x1\n\
- ldr r3, _081451F4 @ =0x000003ff\n\
+ push {r4-r7,lr}\n\
+ adds r3, r0, 0\n\
+ adds r4, r2, 0\n\
+ lsls r3, 16\n\
+ lsrs r3, 16\n\
+ lsls r1, 16\n\
+ lsrs r7, r1, 16\n\
+ lsls r4, 16\n\
+ lsrs r5, r4, 16\n\
+ ldr r0, _081451EC @ =gCreditsCopyrightEnd_Gfx\n\
+ movs r6, 0xC0\n\
+ lsls r6, 19\n\
+ adds r3, r6\n\
+ adds r1, r3, 0\n\
+ bl LZ77UnCompVram\n\
+ ldr r0, _081451F0 @ =gIntroCopyright_Pal\n\
+ adds r1, r5, 0\n\
+ movs r2, 0x20\n\
+ bl LoadPalette\n\
+ lsrs r4, 20\n\
+ lsls r4, 28\n\
+ lsrs r4, 16\n\
+ movs r2, 0\n\
+ adds r1, r4, 0x1\n\
+ ldr r3, _081451F4 @ =0x000003ff\n\
_0814515E:\n\
- lsls r0, r2, 1\n\
- adds r0, r7\n\
- adds r0, r6\n\
- strh r1, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, r3\n\
- bls _0814515E\n\
- movs r2, 0\n\
- adds r0, r4, 0x2\n\
- adds r6, r4, 0\n\
- adds r6, 0x17\n\
- movs r1, 0x2B\n\
- adds r1, r4\n\
- mov r12, r1\n\
- adds r4, 0x42\n\
- ldr r5, _081451F8 @ =0x060001c8\n\
- adds r3, r0, 0\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r6\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, r3\n\
+ bls _0814515E\n\
+ movs r2, 0\n\
+ adds r0, r4, 0x2\n\
+ adds r6, r4, 0\n\
+ adds r6, 0x17\n\
+ movs r1, 0x2B\n\
+ adds r1, r4\n\
+ mov r12, r1\n\
+ adds r4, 0x42\n\
+ ldr r5, _081451F8 @ =0x060001c8\n\
+ adds r3, r0, 0\n\
_08145184:\n\
- lsls r0, r2, 1\n\
- adds r0, r7\n\
- adds r0, r5\n\
- adds r1, r2, r3\n\
- strh r1, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0x14\n\
- bls _08145184\n\
- movs r2, 0\n\
- ldr r5, _081451FC @ =0x06000248\n\
- adds r3, r6, 0\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r5\n\
+ adds r1, r2, r3\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x14\n\
+ bls _08145184\n\
+ movs r2, 0\n\
+ ldr r5, _081451FC @ =0x06000248\n\
+ adds r3, r6, 0\n\
_0814519E:\n\
- lsls r0, r2, 1\n\
- adds r0, r7\n\
- adds r0, r5\n\
- adds r1, r2, r3\n\
- strh r1, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0x13\n\
- bls _0814519E\n\
- movs r2, 0\n\
- ldr r5, _08145200 @ =0x060002c8\n\
- mov r3, r12\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r5\n\
+ adds r1, r2, r3\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x13\n\
+ bls _0814519E\n\
+ movs r2, 0\n\
+ ldr r5, _08145200 @ =0x060002c8\n\
+ mov r3, r12\n\
_081451B8:\n\
- lsls r0, r2, 1\n\
- adds r0, r7\n\
- adds r0, r5\n\
- adds r1, r2, r3\n\
- strh r1, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0x16\n\
- bls _081451B8\n\
- movs r2, 0\n\
- ldr r3, _08145204 @ =0x06000348\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r5\n\
+ adds r1, r2, r3\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x16\n\
+ bls _081451B8\n\
+ movs r2, 0\n\
+ ldr r3, _08145204 @ =0x06000348\n\
_081451D0:\n\
- lsls r0, r2, 1\n\
- adds r0, r7\n\
- adds r0, r3\n\
- adds r1, r2, r4\n\
- strh r1, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0xB\n\
- bls _081451D0\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7\n\
+ adds r0, r3\n\
+ adds r1, r2, r4\n\
+ strh r1, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0xB\n\
+ bls _081451D0\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_081451EC: .4byte gCreditsCopyrightEnd_Gfx\n\
_081451F0: .4byte gIntroCopyright_Pal\n\
_081451F4: .4byte 0x000003ff\n\
@@ -1593,73 +1593,73 @@ __attribute__((naked))
void sub_814524C(void *arg0, u8 arg1, u8 arg2, u16 arg3, int arg4)
{
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, 0xC\n\
- str r0, [sp]\n\
- ldr r0, [sp, 0x2C]\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r10, r1\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- str r2, [sp, 0x4]\n\
- lsls r3, 16\n\
- lsrs r3, 16\n\
- str r3, [sp, 0x8]\n\
- lsls r0, 16\n\
- lsrs r0, 20\n\
- lsls r0, 28\n\
- lsrs r0, 16\n\
- mov r9, r0\n\
- movs r5, 0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0xC\n\
+ str r0, [sp]\n\
+ ldr r0, [sp, 0x2C]\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ mov r10, r1\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ str r2, [sp, 0x4]\n\
+ lsls r3, 16\n\
+ lsrs r3, 16\n\
+ str r3, [sp, 0x8]\n\
+ lsls r0, 16\n\
+ lsrs r0, 20\n\
+ lsls r0, 28\n\
+ lsrs r0, 16\n\
+ mov r9, r0\n\
+ movs r5, 0\n\
_0814527A:\n\
- movs r4, 0\n\
- lsls r7, r5, 1\n\
- ldr r1, [sp, 0x4]\n\
- adds r0, r1, r5\n\
- adds r2, r5, 0x1\n\
- mov r8, r2\n\
- lsls r0, 6\n\
- ldr r1, [sp, 0x8]\n\
- adds r6, r0, r1\n\
+ movs r4, 0\n\
+ lsls r7, r5, 1\n\
+ ldr r1, [sp, 0x4]\n\
+ adds r0, r1, r5\n\
+ adds r2, r5, 0x1\n\
+ mov r8, r2\n\
+ lsls r0, 6\n\
+ ldr r1, [sp, 0x8]\n\
+ adds r6, r0, r1\n\
_0814528C:\n\
- adds r0, r7, r5\n\
- adds r0, r4\n\
- ldr r2, [sp]\n\
- adds r0, r2, r0\n\
- ldrb r0, [r0]\n\
- bl sub_8145208\n\
- mov r2, r10\n\
- adds r1, r2, r4\n\
- lsls r1, 1\n\
- adds r1, r6\n\
- movs r2, 0xC0\n\
- lsls r2, 19\n\
- adds r1, r2\n\
- add r0, r9\n\
- strh r0, [r1]\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0x2\n\
- bls _0814528C\n\
- mov r1, r8\n\
- lsls r0, r1, 24\n\
- lsrs r5, r0, 24\n\
- cmp r5, 0x4\n\
- bls _0814527A\n\
- add sp, 0xC\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
+ adds r0, r7, r5\n\
+ adds r0, r4\n\
+ ldr r2, [sp]\n\
+ adds r0, r2, r0\n\
+ ldrb r0, [r0]\n\
+ bl sub_8145208\n\
+ mov r2, r10\n\
+ adds r1, r2, r4\n\
+ lsls r1, 1\n\
+ adds r1, r6\n\
+ movs r2, 0xC0\n\
+ lsls r2, 19\n\
+ adds r1, r2\n\
+ add r0, r9\n\
+ strh r0, [r1]\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x2\n\
+ bls _0814528C\n\
+ mov r1, r8\n\
+ lsls r0, r1, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x4\n\
+ bls _0814527A\n\
+ add sp, 0xC\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
@@ -1788,238 +1788,238 @@ __attribute__((naked))
void spritecb_81454E0(struct Sprite *sprite)
{
asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- sub sp, 0x4\n\
- adds r5, r0, 0\n\
- ldr r0, _081454F8 @ =gUnknown_0203935C\n\
- movs r1, 0\n\
- ldrsh r0, [r0, r1]\n\
- cmp r0, 0\n\
- beq _081454FC\n\
- adds r0, r5, 0\n\
- bl DestroySprite\n\
- b _081456A6\n\
- .align 2, 0\n\
+ push {r4,r5,lr}\n\
+ sub sp, 0x4\n\
+ adds r5, r0, 0\n\
+ ldr r0, _081454F8 @ =gUnknown_0203935C\n\
+ movs r1, 0\n\
+ ldrsh r0, [r0, r1]\n\
+ cmp r0, 0\n\
+ beq _081454FC\n\
+ adds r0, r5, 0\n\
+ bl DestroySprite\n\
+ b _081456A6\n\
+ .align 2, 0\n\
_081454F8: .4byte gUnknown_0203935C\n\
_081454FC:\n\
- ldrh r0, [r5, 0x3C]\n\
- adds r0, 0x1\n\
- strh r0, [r5, 0x3C]\n\
- movs r2, 0x2E\n\
- ldrsh r0, [r5, r2]\n\
- cmp r0, 0xA\n\
- bhi _08145544\n\
- lsls r0, 2\n\
- ldr r1, _08145514 @ =_08145518\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
+ ldrh r0, [r5, 0x3C]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x3C]\n\
+ movs r2, 0x2E\n\
+ ldrsh r0, [r5, r2]\n\
+ cmp r0, 0xA\n\
+ bhi _08145544\n\
+ lsls r0, 2\n\
+ ldr r1, _08145514 @ =_08145518\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
_08145514: .4byte _08145518\n\
- .align 2, 0\n\
+ .align 2, 0\n\
_08145518:\n\
- .4byte _08145544\n\
- .4byte _0814559E\n\
- .4byte _08145620\n\
- .4byte _08145660\n\
- .4byte _08145544\n\
- .4byte _08145544\n\
- .4byte _08145544\n\
- .4byte _08145544\n\
- .4byte _08145544\n\
- .4byte _08145544\n\
- .4byte _08145696\n\
+ .4byte _08145544\n\
+ .4byte _0814559E\n\
+ .4byte _08145620\n\
+ .4byte _08145660\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145544\n\
+ .4byte _08145696\n\
_08145544:\n\
- ldrb r1, [r5, 0x1]\n\
- movs r0, 0x4\n\
- negs r0, r0\n\
- ands r0, r1\n\
- movs r1, 0x1\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x1]\n\
- movs r0, 0x30\n\
- ldrsh r1, [r5, r0]\n\
- movs r0, 0x1F\n\
- ands r1, r0\n\
- lsls r1, 1\n\
- ldrb r2, [r5, 0x3]\n\
- movs r0, 0x3F\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x3]\n\
- movs r0, 0x10\n\
- strh r0, [r5, 0x32]\n\
- ldrh r4, [r5, 0x30]\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- movs r0, 0x80\n\
- lsls r0, 9\n\
- movs r1, 0x10\n\
- bl __divsi3\n\
- adds r1, r0, 0\n\
- str r1, [sp]\n\
- adds r0, r4, 0\n\
- movs r2, 0\n\
- movs r3, 0\n\
- bl SetOamMatrix\n\
- adds r2, r5, 0\n\
- adds r2, 0x3E\n\
- ldrb r1, [r2]\n\
- movs r0, 0x5\n\
- negs r0, r0\n\
- ands r0, r1\n\
- strb r0, [r2]\n\
- movs r0, 0x1\n\
- strh r0, [r5, 0x2E]\n\
- b _081456A6\n\
+ ldrb r1, [r5, 0x1]\n\
+ movs r0, 0x4\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ movs r1, 0x1\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x1]\n\
+ movs r0, 0x30\n\
+ ldrsh r1, [r5, r0]\n\
+ movs r0, 0x1F\n\
+ ands r1, r0\n\
+ lsls r1, 1\n\
+ ldrb r2, [r5, 0x3]\n\
+ movs r0, 0x3F\n\
+ negs r0, r0\n\
+ ands r0, r2\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x3]\n\
+ movs r0, 0x10\n\
+ strh r0, [r5, 0x32]\n\
+ ldrh r4, [r5, 0x30]\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ movs r0, 0x80\n\
+ lsls r0, 9\n\
+ movs r1, 0x10\n\
+ bl __divsi3\n\
+ adds r1, r0, 0\n\
+ str r1, [sp]\n\
+ adds r0, r4, 0\n\
+ movs r2, 0\n\
+ movs r3, 0\n\
+ bl SetOamMatrix\n\
+ adds r2, r5, 0\n\
+ adds r2, 0x3E\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x5\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ strb r0, [r2]\n\
+ movs r0, 0x1\n\
+ strh r0, [r5, 0x2E]\n\
+ b _081456A6\n\
_0814559E:\n\
- ldrh r1, [r5, 0x32]\n\
- movs r2, 0x32\n\
- ldrsh r0, [r5, r2]\n\
- cmp r0, 0xFF\n\
- bgt _081455D4\n\
- adds r0, r1, 0\n\
- adds r0, 0x8\n\
- strh r0, [r5, 0x32]\n\
- ldrh r4, [r5, 0x30]\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- movs r0, 0x32\n\
- ldrsh r1, [r5, r0]\n\
- movs r0, 0x80\n\
- lsls r0, 9\n\
- bl __divsi3\n\
- adds r1, r0, 0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- str r1, [sp]\n\
- adds r0, r4, 0\n\
- movs r2, 0\n\
- movs r3, 0\n\
- bl SetOamMatrix\n\
- b _081455DA\n\
+ ldrh r1, [r5, 0x32]\n\
+ movs r2, 0x32\n\
+ ldrsh r0, [r5, r2]\n\
+ cmp r0, 0xFF\n\
+ bgt _081455D4\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x8\n\
+ strh r0, [r5, 0x32]\n\
+ ldrh r4, [r5, 0x30]\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ movs r0, 0x32\n\
+ ldrsh r1, [r5, r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 9\n\
+ bl __divsi3\n\
+ adds r1, r0, 0\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ str r1, [sp]\n\
+ adds r0, r4, 0\n\
+ movs r2, 0\n\
+ movs r3, 0\n\
+ bl SetOamMatrix\n\
+ b _081455DA\n\
_081455D4:\n\
- ldrh r0, [r5, 0x2E]\n\
- adds r0, 0x1\n\
- strh r0, [r5, 0x2E]\n\
+ ldrh r0, [r5, 0x2E]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x2E]\n\
_081455DA:\n\
- movs r2, 0x30\n\
- ldrsh r1, [r5, r2]\n\
- cmp r1, 0x2\n\
- beq _081456A6\n\
- cmp r1, 0x2\n\
- bgt _081455EC\n\
- cmp r1, 0x1\n\
- beq _081455F2\n\
- b _081456A6\n\
+ movs r2, 0x30\n\
+ ldrsh r1, [r5, r2]\n\
+ cmp r1, 0x2\n\
+ beq _081456A6\n\
+ cmp r1, 0x2\n\
+ bgt _081455EC\n\
+ cmp r1, 0x1\n\
+ beq _081455F2\n\
+ b _081456A6\n\
_081455EC:\n\
- cmp r1, 0x3\n\
- beq _0814560A\n\
- b _081456A6\n\
+ cmp r1, 0x3\n\
+ beq _0814560A\n\
+ b _081456A6\n\
_081455F2:\n\
- ldrh r1, [r5, 0x3C]\n\
- movs r0, 0x3\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08145602\n\
- ldrh r0, [r5, 0x22]\n\
- adds r0, 0x1\n\
- strh r0, [r5, 0x22]\n\
+ ldrh r1, [r5, 0x3C]\n\
+ movs r0, 0x3\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08145602\n\
+ ldrh r0, [r5, 0x22]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x22]\n\
_08145602:\n\
- ldrh r0, [r5, 0x20]\n\
- subs r0, 0x2\n\
- strh r0, [r5, 0x20]\n\
- b _081456A6\n\
+ ldrh r0, [r5, 0x20]\n\
+ subs r0, 0x2\n\
+ strh r0, [r5, 0x20]\n\
+ b _081456A6\n\
_0814560A:\n\
- ldrh r0, [r5, 0x3C]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _08145618\n\
- ldrh r0, [r5, 0x22]\n\
- adds r0, 0x1\n\
- strh r0, [r5, 0x22]\n\
+ ldrh r0, [r5, 0x3C]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _08145618\n\
+ ldrh r0, [r5, 0x22]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x22]\n\
_08145618:\n\
- ldrh r0, [r5, 0x20]\n\
- adds r0, 0x2\n\
- strh r0, [r5, 0x20]\n\
- b _081456A6\n\
+ ldrh r0, [r5, 0x20]\n\
+ adds r0, 0x2\n\
+ strh r0, [r5, 0x20]\n\
+ b _081456A6\n\
_08145620:\n\
- ldrh r1, [r5, 0x34]\n\
- movs r2, 0x34\n\
- ldrsh r0, [r5, r2]\n\
- cmp r0, 0\n\
- beq _08145630\n\
- subs r0, r1, 0x1\n\
- strh r0, [r5, 0x34]\n\
- b _081456A6\n\
+ ldrh r1, [r5, 0x34]\n\
+ movs r2, 0x34\n\
+ ldrsh r0, [r5, r2]\n\
+ cmp r0, 0\n\
+ beq _08145630\n\
+ subs r0, r1, 0x1\n\
+ strh r0, [r5, 0x34]\n\
+ b _081456A6\n\
_08145630:\n\
- ldr r1, _0814565C @ =REG_BLDCNT\n\
- movs r2, 0xF4\n\
- lsls r2, 4\n\
- adds r0, r2, 0\n\
- strh r0, [r1]\n\
- adds r1, 0x2\n\
- movs r0, 0x10\n\
- strh r0, [r1]\n\
- ldrb r1, [r5, 0x1]\n\
- movs r0, 0xD\n\
- negs r0, r0\n\
- ands r0, r1\n\
- movs r1, 0x4\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x1]\n\
- movs r0, 0x10\n\
- strh r0, [r5, 0x34]\n\
- ldrh r0, [r5, 0x2E]\n\
- adds r0, 0x1\n\
- strh r0, [r5, 0x2E]\n\
- b _081456A6\n\
- .align 2, 0\n\
+ ldr r1, _0814565C @ =REG_BLDCNT\n\
+ movs r2, 0xF4\n\
+ lsls r2, 4\n\
+ adds r0, r2, 0\n\
+ strh r0, [r1]\n\
+ adds r1, 0x2\n\
+ movs r0, 0x10\n\
+ strh r0, [r1]\n\
+ ldrb r1, [r5, 0x1]\n\
+ movs r0, 0xD\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ strb r0, [r5, 0x1]\n\
+ movs r0, 0x10\n\
+ strh r0, [r5, 0x34]\n\
+ ldrh r0, [r5, 0x2E]\n\
+ adds r0, 0x1\n\
+ strh r0, [r5, 0x2E]\n\
+ b _081456A6\n\
+ .align 2, 0\n\
_0814565C: .4byte REG_BLDCNT\n\
_08145660:\n\
- ldrh r1, [r5, 0x34]\n\
- movs r2, 0x34\n\
- ldrsh r0, [r5, r2]\n\
- cmp r0, 0\n\
- beq _08145684\n\
- subs r1, 0x1\n\
- strh r1, [r5, 0x34]\n\
- ldr r3, _08145680 @ =REG_BLDALPHA\n\
- movs r0, 0x34\n\
- ldrsh r2, [r5, r0]\n\
- movs r0, 0x10\n\
- subs r0, r2\n\
- lsls r0, 8\n\
- adds r1, r0\n\
- strh r1, [r3]\n\
- b _081456A6\n\
- .align 2, 0\n\
+ ldrh r1, [r5, 0x34]\n\
+ movs r2, 0x34\n\
+ ldrsh r0, [r5, r2]\n\
+ cmp r0, 0\n\
+ beq _08145684\n\
+ subs r1, 0x1\n\
+ strh r1, [r5, 0x34]\n\
+ ldr r3, _08145680 @ =REG_BLDALPHA\n\
+ movs r0, 0x34\n\
+ ldrsh r2, [r5, r0]\n\
+ movs r0, 0x10\n\
+ subs r0, r2\n\
+ lsls r0, 8\n\
+ adds r1, r0\n\
+ strh r1, [r3]\n\
+ b _081456A6\n\
+ .align 2, 0\n\
_08145680: .4byte REG_BLDALPHA\n\
_08145684:\n\
- adds r2, r5, 0\n\
- adds r2, 0x3E\n\
- ldrb r0, [r2]\n\
- movs r1, 0x4\n\
- orrs r0, r1\n\
- strb r0, [r2]\n\
- movs r0, 0xA\n\
- strh r0, [r5, 0x2E]\n\
- b _081456A6\n\
+ adds r2, r5, 0\n\
+ adds r2, 0x3E\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ movs r0, 0xA\n\
+ strh r0, [r5, 0x2E]\n\
+ b _081456A6\n\
_08145696:\n\
- ldr r0, _081456B0 @ =REG_BLDCNT\n\
- movs r1, 0\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, r5, 0\n\
- bl DestroySprite\n\
+ ldr r0, _081456B0 @ =REG_BLDCNT\n\
+ movs r1, 0\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, r5, 0\n\
+ bl DestroySprite\n\
_081456A6:\n\
- add sp, 0x4\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ add sp, 0x4\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_081456B0: .4byte REG_BLDCNT\n\
.syntax divided\n");
}
@@ -2083,155 +2083,155 @@ __attribute__((naked))
u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3)
{
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, 0x14\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- mov r10, r1\n\
- lsls r2, 16\n\
- lsrs r2, 16\n\
- str r2, [sp, 0x10]\n\
- lsls r3, 16\n\
- lsrs r3, 16\n\
- mov r9, r3\n\
- adds r0, r6, 0\n\
- bl NationalPokedexNumToSpecies\n\
- adds r6, r0, 0\n\
- cmp r6, 0xC9\n\
- beq _081456F8\n\
- movs r0, 0x9A\n\
- lsls r0, 1\n\
- cmp r6, r0\n\
- beq _081456EE\n\
- movs r7, 0\n\
- b _081456FC\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x14\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ mov r10, r1\n\
+ lsls r2, 16\n\
+ lsrs r2, 16\n\
+ str r2, [sp, 0x10]\n\
+ lsls r3, 16\n\
+ lsrs r3, 16\n\
+ mov r9, r3\n\
+ adds r0, r6, 0\n\
+ bl NationalPokedexNumToSpecies\n\
+ adds r6, r0, 0\n\
+ cmp r6, 0xC9\n\
+ beq _081456F8\n\
+ movs r0, 0x9A\n\
+ lsls r0, 1\n\
+ cmp r6, r0\n\
+ beq _081456EE\n\
+ movs r7, 0\n\
+ b _081456FC\n\
_081456EE:\n\
- ldr r0, _081456F4 @ =gSaveBlock2\n\
- ldr r7, [r0, 0x20]\n\
- b _081456FC\n\
- .align 2, 0\n\
+ ldr r0, _081456F4 @ =gSaveBlock2\n\
+ ldr r7, [r0, 0x20]\n\
+ b _081456FC\n\
+ .align 2, 0\n\
_081456F4: .4byte gSaveBlock2\n\
_081456F8:\n\
- ldr r0, _081457E8 @ =gSaveBlock2\n\
- ldr r7, [r0, 0x1C]\n\
+ ldr r0, _081457E8 @ =gSaveBlock2\n\
+ ldr r7, [r0, 0x1C]\n\
_081456FC:\n\
- lsls r0, r6, 3\n\
- ldr r1, _081457EC @ =gMonFrontPicTable\n\
- adds r0, r1\n\
- ldr r1, _081457F0 @ =gMonFrontPicCoords\n\
- lsls r2, r6, 2\n\
- adds r2, r1\n\
- ldrb r1, [r2]\n\
- ldrb r2, [r2, 0x1]\n\
- movs r3, 0x80\n\
- lsls r3, 18\n\
- ldr r4, _081457F4 @ =gUnknown_0840B5A0\n\
- mov r8, r4\n\
- mov r5, r9\n\
- lsls r4, r5, 2\n\
- add r4, r8\n\
- ldr r4, [r4]\n\
- str r4, [sp]\n\
- str r6, [sp, 0x4]\n\
- str r7, [sp, 0x8]\n\
- movs r4, 0x1\n\
- str r4, [sp, 0xC]\n\
- bl LoadSpecialPokePic\n\
- ldr r2, _081457F8 @ =0x0000ffff\n\
- adds r0, r6, 0\n\
- movs r1, 0\n\
- bl species_and_otid_get_pal\n\
- lsls r5, 4\n\
- mov r8, r5\n\
- movs r1, 0x80\n\
- lsls r1, 1\n\
- add r1, r8\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- movs r2, 0x20\n\
- bl LoadCompressedPalette\n\
- mov r7, r9\n\
- lsls r6, r7, 24\n\
- lsrs r6, 24\n\
- mov r0, r9\n\
- adds r1, r6, 0\n\
- bl sub_8143648\n\
- ldr r0, _081457FC @ =gUnknown_02024E8C\n\
- mov r2, r10\n\
- lsls r1, r2, 16\n\
- asrs r1, 16\n\
- ldr r3, [sp, 0x10]\n\
- lsls r2, r3, 16\n\
- asrs r2, 16\n\
- movs r3, 0\n\
- bl CreateSprite\n\
- adds r4, r0, 0\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- ldr r5, _08145800 @ =gSprites\n\
- lsls r2, r4, 4\n\
- adds r2, r4\n\
- lsls r2, 2\n\
- adds r3, r2, r5\n\
- ldrb r1, [r3, 0x5]\n\
- movs r0, 0xF\n\
- ands r0, r1\n\
- mov r7, r8\n\
- orrs r0, r7\n\
- movs r1, 0xD\n\
- negs r1, r1\n\
- ands r0, r1\n\
- movs r1, 0x4\n\
- orrs r0, r1\n\
- strb r0, [r3, 0x5]\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- strh r0, [r3, 0x30]\n\
- movs r0, 0x3E\n\
- adds r0, r3\n\
- mov r8, r0\n\
- ldrb r0, [r0]\n\
- orrs r0, r1\n\
- mov r1, r8\n\
- strb r0, [r1]\n\
- adds r0, r5, 0\n\
- adds r0, 0x1C\n\
- adds r2, r0\n\
- ldr r0, _08145804 @ =spritecb_81454E0\n\
- str r0, [r2]\n\
- ldr r0, _08145808 @ =gSpriteTemplate_840CAEC\n\
- movs r2, 0x20\n\
- ldrsh r1, [r3, r2]\n\
- movs r7, 0x22\n\
- ldrsh r2, [r3, r7]\n\
- movs r3, 0x1\n\
- bl CreateSprite\n\
- adds r1, r0, 0\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r5\n\
- strh r4, [r0, 0x2E]\n\
- adds r1, r6, 0\n\
- bl StartSpriteAnimIfDifferent\n\
- adds r0, r4, 0\n\
- add sp, 0x14\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\
+ lsls r0, r6, 3\n\
+ ldr r1, _081457EC @ =gMonFrontPicTable\n\
+ adds r0, r1\n\
+ ldr r1, _081457F0 @ =gMonFrontPicCoords\n\
+ lsls r2, r6, 2\n\
+ adds r2, r1\n\
+ ldrb r1, [r2]\n\
+ ldrb r2, [r2, 0x1]\n\
+ movs r3, 0x80\n\
+ lsls r3, 18\n\
+ ldr r4, _081457F4 @ =gUnknown_0840B5A0\n\
+ mov r8, r4\n\
+ mov r5, r9\n\
+ lsls r4, r5, 2\n\
+ add r4, r8\n\
+ ldr r4, [r4]\n\
+ str r4, [sp]\n\
+ str r6, [sp, 0x4]\n\
+ str r7, [sp, 0x8]\n\
+ movs r4, 0x1\n\
+ str r4, [sp, 0xC]\n\
+ bl LoadSpecialPokePic\n\
+ ldr r2, _081457F8 @ =0x0000ffff\n\
+ adds r0, r6, 0\n\
+ movs r1, 0\n\
+ bl species_and_otid_get_pal\n\
+ lsls r5, 4\n\
+ mov r8, r5\n\
+ movs r1, 0x80\n\
+ lsls r1, 1\n\
+ add r1, r8\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ movs r2, 0x20\n\
+ bl LoadCompressedPalette\n\
+ mov r7, r9\n\
+ lsls r6, r7, 24\n\
+ lsrs r6, 24\n\
+ mov r0, r9\n\
+ adds r1, r6, 0\n\
+ bl sub_8143648\n\
+ ldr r0, _081457FC @ =gUnknown_02024E8C\n\
+ mov r2, r10\n\
+ lsls r1, r2, 16\n\
+ asrs r1, 16\n\
+ ldr r3, [sp, 0x10]\n\
+ lsls r2, r3, 16\n\
+ asrs r2, 16\n\
+ movs r3, 0\n\
+ bl CreateSprite\n\
+ adds r4, r0, 0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ ldr r5, _08145800 @ =gSprites\n\
+ lsls r2, r4, 4\n\
+ adds r2, r4\n\
+ lsls r2, 2\n\
+ adds r3, r2, r5\n\
+ ldrb r1, [r3, 0x5]\n\
+ movs r0, 0xF\n\
+ ands r0, r1\n\
+ mov r7, r8\n\
+ orrs r0, r7\n\
+ movs r1, 0xD\n\
+ negs r1, r1\n\
+ ands r0, r1\n\
+ movs r1, 0x4\n\
+ orrs r0, r1\n\
+ strb r0, [r3, 0x5]\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ strh r0, [r3, 0x30]\n\
+ movs r0, 0x3E\n\
+ adds r0, r3\n\
+ mov r8, r0\n\
+ ldrb r0, [r0]\n\
+ orrs r0, r1\n\
+ mov r1, r8\n\
+ strb r0, [r1]\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x1C\n\
+ adds r2, r0\n\
+ ldr r0, _08145804 @ =spritecb_81454E0\n\
+ str r0, [r2]\n\
+ ldr r0, _08145808 @ =gSpriteTemplate_840CAEC\n\
+ movs r2, 0x20\n\
+ ldrsh r1, [r3, r2]\n\
+ movs r7, 0x22\n\
+ ldrsh r2, [r3, r7]\n\
+ movs r3, 0x1\n\
+ bl CreateSprite\n\
+ adds r1, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ lsls r0, r1, 4\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r5\n\
+ strh r4, [r0, 0x2E]\n\
+ adds r1, r6, 0\n\
+ bl StartSpriteAnimIfDifferent\n\
+ adds r0, r4, 0\n\
+ add sp, 0x14\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\
_081457E8: .4byte gSaveBlock2\n\
_081457EC: .4byte gMonFrontPicTable\n\
_081457F0: .4byte gMonFrontPicCoords\n\
@@ -2265,219 +2265,219 @@ __attribute__((naked))
void sub_81458DC(void)
{
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, 0x4\n\
- ldr r7, _0814597C @ =0x0201c000\n\
- ldr r0, _08145980 @ =0x00004023\n\
- bl VarGet\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- bl GetStarterPokemon\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- bl SpeciesToNationalPokedexNum\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r10, r0\n\
- movs r4, 0x1\n\
- movs r5, 0\n\
- ldr r0, _08145984 @ =0x00000181\n\
- mov r8, r0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ ldr r7, _0814597C @ =0x0201c000\n\
+ ldr r0, _08145980 @ =0x00004023\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ bl GetStarterPokemon\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ bl SpeciesToNationalPokedexNum\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r10, r0\n\
+ movs r4, 0x1\n\
+ movs r5, 0\n\
+ ldr r0, _08145984 @ =0x00000181\n\
+ mov r8, r0\n\
_0814590E:\n\
- adds r0, r4, 0\n\
- movs r1, 0x1\n\
- bl sub_8090D90\n\
- lsls r0, 24\n\
- adds r6, r7, 0\n\
- adds r6, 0x90\n\
- cmp r0, 0\n\
- beq _0814592C\n\
- lsls r0, r5, 1\n\
- adds r0, r6, r0\n\
- strh r4, [r0]\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ bl sub_8090D90\n\
+ lsls r0, 24\n\
+ adds r6, r7, 0\n\
+ adds r6, 0x90\n\
+ cmp r0, 0\n\
+ beq _0814592C\n\
+ lsls r0, r5, 1\n\
+ adds r0, r6, r0\n\
+ strh r4, [r0]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
_0814592C:\n\
- adds r0, r4, 0x1\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- cmp r4, r8\n\
- bls _0814590E\n\
- adds r4, r5, 0\n\
- ldr r0, _08145984 @ =0x00000181\n\
- lsls r1, r4, 16\n\
- mov r9, r1\n\
- movs r2, 0x8E\n\
- adds r2, r7\n\
- mov r8, r2\n\
- adds r1, r7, 0\n\
- adds r1, 0x86\n\
- str r1, [sp]\n\
- cmp r4, r0\n\
- bhi _08145964\n\
- adds r1, r6, 0\n\
- movs r3, 0\n\
- adds r2, r0, 0\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ cmp r4, r8\n\
+ bls _0814590E\n\
+ adds r4, r5, 0\n\
+ ldr r0, _08145984 @ =0x00000181\n\
+ lsls r1, r4, 16\n\
+ mov r9, r1\n\
+ movs r2, 0x8E\n\
+ adds r2, r7\n\
+ mov r8, r2\n\
+ adds r1, r7, 0\n\
+ adds r1, 0x86\n\
+ str r1, [sp]\n\
+ cmp r4, r0\n\
+ bhi _08145964\n\
+ adds r1, r6, 0\n\
+ movs r3, 0\n\
+ adds r2, r0, 0\n\
_08145954:\n\
- lsls r0, r4, 1\n\
- adds r0, r1, r0\n\
- strh r3, [r0]\n\
- adds r0, r4, 0x1\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- cmp r4, r2\n\
- bls _08145954\n\
+ lsls r0, r4, 1\n\
+ adds r0, r1, r0\n\
+ strh r3, [r0]\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ cmp r4, r2\n\
+ bls _08145954\n\
_08145964:\n\
- movs r2, 0xE5\n\
- lsls r2, 2\n\
- adds r0, r7, r2\n\
- strh r5, [r0]\n\
- mov r1, r9\n\
- lsrs r0, r1, 16\n\
- cmp r0, 0x43\n\
- bhi _08145988\n\
- mov r2, r8\n\
- strh r5, [r2]\n\
- b _0814598E\n\
- .align 2, 0\n\
+ movs r2, 0xE5\n\
+ lsls r2, 2\n\
+ adds r0, r7, r2\n\
+ strh r5, [r0]\n\
+ mov r1, r9\n\
+ lsrs r0, r1, 16\n\
+ cmp r0, 0x43\n\
+ bhi _08145988\n\
+ mov r2, r8\n\
+ strh r5, [r2]\n\
+ b _0814598E\n\
+ .align 2, 0\n\
_0814597C: .4byte 0x0201c000\n\
_08145980: .4byte 0x00004023\n\
_08145984: .4byte 0x00000181\n\
_08145988:\n\
- movs r0, 0x44\n\
- mov r1, r8\n\
- strh r0, [r1]\n\
+ movs r0, 0x44\n\
+ mov r1, r8\n\
+ strh r0, [r1]\n\
_0814598E:\n\
- movs r5, 0\n\
- movs r2, 0xE5\n\
- lsls r2, 2\n\
- adds r4, r7, r2\n\
- mov r9, r5\n\
- b _0814599E\n\
+ movs r5, 0\n\
+ movs r2, 0xE5\n\
+ lsls r2, 2\n\
+ adds r4, r7, r2\n\
+ mov r9, r5\n\
+ b _0814599E\n\
_0814599A:\n\
- cmp r5, 0x43\n\
- bhi _081459EE\n\
+ cmp r5, 0x43\n\
+ bhi _081459EE\n\
_0814599E:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- ldrh r1, [r4]\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- lsls r1, r5, 1\n\
- adds r1, r7, r1\n\
- lsls r0, r2, 1\n\
- adds r3, r6, r0\n\
- ldrh r0, [r3]\n\
- strh r0, [r1]\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- mov r0, r9\n\
- strh r0, [r3]\n\
- ldrh r0, [r4]\n\
- subs r0, 0x1\n\
- strh r0, [r4]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r2, r0\n\
- beq _081459E8\n\
- ldrh r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r6, r0\n\
- ldrh r0, [r0]\n\
- strh r0, [r3]\n\
- ldrh r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r6, r0\n\
- mov r1, r9\n\
- strh r1, [r0]\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ ldrh r1, [r4]\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ lsls r1, r5, 1\n\
+ adds r1, r7, r1\n\
+ lsls r0, r2, 1\n\
+ adds r3, r6, r0\n\
+ ldrh r0, [r3]\n\
+ strh r0, [r1]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ mov r0, r9\n\
+ strh r0, [r3]\n\
+ ldrh r0, [r4]\n\
+ subs r0, 0x1\n\
+ strh r0, [r4]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r2, r0\n\
+ beq _081459E8\n\
+ ldrh r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r6, r0\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r3]\n\
+ ldrh r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r6, r0\n\
+ mov r1, r9\n\
+ strh r1, [r0]\n\
_081459E8:\n\
- ldrh r0, [r4]\n\
- cmp r0, 0\n\
- bne _0814599A\n\
+ ldrh r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _0814599A\n\
_081459EE:\n\
- mov r2, r8\n\
- ldrh r0, [r2]\n\
- cmp r0, 0x43\n\
- bhi _08145A26\n\
- adds r5, r0, 0\n\
- movs r2, 0\n\
- cmp r5, 0x43\n\
- bhi _08145A5C\n\
- mov r3, r8\n\
+ mov r2, r8\n\
+ ldrh r0, [r2]\n\
+ cmp r0, 0x43\n\
+ bhi _08145A26\n\
+ adds r5, r0, 0\n\
+ movs r2, 0\n\
+ cmp r5, 0x43\n\
+ bhi _08145A5C\n\
+ mov r3, r8\n\
_08145A00:\n\
- lsls r1, r5, 1\n\
- adds r1, r7, r1\n\
- lsls r0, r2, 1\n\
- adds r0, r7, r0\n\
- ldrh r0, [r0]\n\
- strh r0, [r1]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- ldrh r0, [r3]\n\
- cmp r2, r0\n\
- bne _08145A1A\n\
- movs r2, 0\n\
+ lsls r1, r5, 1\n\
+ adds r1, r7, r1\n\
+ lsls r0, r2, 1\n\
+ adds r0, r7, r0\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r1]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ ldrh r0, [r3]\n\
+ cmp r2, r0\n\
+ bne _08145A1A\n\
+ movs r2, 0\n\
_08145A1A:\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- cmp r5, 0x43\n\
- bls _08145A00\n\
- b _08145A5C\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, 0x43\n\
+ bls _08145A00\n\
+ b _08145A5C\n\
_08145A26:\n\
- movs r4, 0\n\
- ldrh r0, [r7]\n\
- cmp r0, r10\n\
- beq _08145A42\n\
+ movs r4, 0\n\
+ ldrh r0, [r7]\n\
+ cmp r0, r10\n\
+ beq _08145A42\n\
_08145A2E:\n\
- adds r0, r4, 0x1\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- lsls r0, r4, 1\n\
- adds r0, r7, r0\n\
- ldrh r0, [r0]\n\
- cmp r0, r10\n\
- beq _08145A42\n\
- cmp r4, 0x43\n\
- bls _08145A2E\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ lsls r0, r4, 1\n\
+ adds r0, r7, r0\n\
+ ldrh r0, [r0]\n\
+ cmp r0, r10\n\
+ beq _08145A42\n\
+ cmp r4, 0x43\n\
+ bls _08145A2E\n\
_08145A42:\n\
- mov r1, r8\n\
- ldrh r0, [r1]\n\
- subs r0, 0x1\n\
- cmp r4, r0\n\
- bge _08145A5C\n\
- lsls r0, r4, 1\n\
- adds r0, r7, r0\n\
- ldr r2, [sp]\n\
- ldrh r1, [r2]\n\
- strh r1, [r0]\n\
- mov r0, r10\n\
- strh r0, [r2]\n\
- b _08145A62\n\
+ mov r1, r8\n\
+ ldrh r0, [r1]\n\
+ subs r0, 0x1\n\
+ cmp r4, r0\n\
+ bge _08145A5C\n\
+ lsls r0, r4, 1\n\
+ adds r0, r7, r0\n\
+ ldr r2, [sp]\n\
+ ldrh r1, [r2]\n\
+ strh r1, [r0]\n\
+ mov r0, r10\n\
+ strh r0, [r2]\n\
+ b _08145A62\n\
_08145A5C:\n\
- mov r2, r10\n\
- ldr r1, [sp]\n\
- strh r2, [r1]\n\
+ mov r2, r10\n\
+ ldr r1, [sp]\n\
+ strh r2, [r1]\n\
_08145A62:\n\
- movs r0, 0x44\n\
- mov r1, r8\n\
- strh r0, [r1]\n\
- add sp, 0x4\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
+ movs r0, 0x44\n\
+ mov r1, r8\n\
+ strh r0, [r1]\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
diff --git a/src/decompress.c b/src/decompress.c
index 5906491c6..fb91ebd67 100644
--- a/src/decompress.c
+++ b/src/decompress.c
@@ -74,7 +74,7 @@ void HandleLoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32
{
u32 frontOrBack;
- // gUnknown_081FAF4C appears to be a list of pointers to locations to store poke pics for back and front pic here. the first and third pointers are used for back while the others are used for front.
+ // gUnknown_081FAF4C appears to be a list of pointers to locations to store poke pics for back and front pic here. the first and third pointers are used for back while the others are used for front.
if (dest == gUnknown_081FAF4C[0] || dest == gUnknown_081FAF4C[2])
frontOrBack = 0; // backPic
else
@@ -91,7 +91,7 @@ void LoadSpecialPokePic(const struct SpriteSheet *spriteSheet, u32 b, u32 c, u32
{
u16 i = (((g & 0x3000000) >> 18) | ((g & 0x30000) >> 12) | ((g & 0x300) >> 6) | (g & 3)) % 0x1C;
- // if it is Unown A, set the index to where Unown begins, otherwise add the egg index to get the correct letter to load.
+ // if it is Unown A, set the index to where Unown begins, otherwise add the egg index to get the correct letter to load.
if (i == 0)
i = SPECIES_UNOWN;
else
diff --git a/src/dewford_trend.c b/src/dewford_trend.c
index babdea45a..751d6c416 100644
--- a/src/dewford_trend.c
+++ b/src/dewford_trend.c
@@ -107,173 +107,173 @@ __attribute__((naked))
void sub_80FA220(u16 a)
{
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, 0x8\n\
- lsls r0, 16\n\
- lsrs r1, r0, 16\n\
- cmp r1, 0\n\
- bne _080FA236\n\
- b _080FA34E\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x8\n\
+ lsls r0, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r1, 0\n\
+ bne _080FA236\n\
+ b _080FA34E\n\
_080FA236:\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- str r0, [sp]\n\
- movs r0, 0\n\
- mov r10, r0\n\
- movs r1, 0x7F\n\
- mov r9, r1\n\
- movs r2, 0x80\n\
- negs r2, r2\n\
- mov r8, r2\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ mov r10, r0\n\
+ movs r1, 0x7F\n\
+ mov r9, r1\n\
+ movs r2, 0x80\n\
+ negs r2, r2\n\
+ mov r8, r2\n\
_080FA24A:\n\
- ldr r2, [sp]\n\
- mov r4, r10\n\
- lsls r0, r4, 3\n\
- ldr r1, _080FA28C @ =gSaveBlock1 + 0x2DD4\n\
- adds r5, r0, r1\n\
- ldrb r6, [r5, 0x1]\n\
- movs r0, 0x40\n\
- ands r0, r6\n\
- cmp r0, 0\n\
- bne _080FA2A0\n\
- ldrb r4, [r5]\n\
- lsls r3, r4, 25\n\
- lsrs r1, r3, 25\n\
- lsls r0, r2, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bcc _080FA290\n\
- adds r0, r1, 0\n\
- subs r0, r2\n\
- mov r2, r9\n\
- ands r0, r2\n\
- mov r1, r8\n\
- ands r1, r4\n\
- orrs r1, r0\n\
- strb r1, [r5]\n\
- movs r0, 0x7F\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _080FA336\n\
- movs r0, 0x40\n\
- orrs r0, r6\n\
- b _080FA334\n\
- .align 2, 0\n\
+ ldr r2, [sp]\n\
+ mov r4, r10\n\
+ lsls r0, r4, 3\n\
+ ldr r1, _080FA28C @ =gSaveBlock1 + 0x2DD4\n\
+ adds r5, r0, r1\n\
+ ldrb r6, [r5, 0x1]\n\
+ movs r0, 0x40\n\
+ ands r0, r6\n\
+ cmp r0, 0\n\
+ bne _080FA2A0\n\
+ ldrb r4, [r5]\n\
+ lsls r3, r4, 25\n\
+ lsrs r1, r3, 25\n\
+ lsls r0, r2, 16\n\
+ lsrs r0, 16\n\
+ cmp r1, r0\n\
+ bcc _080FA290\n\
+ adds r0, r1, 0\n\
+ subs r0, r2\n\
+ mov r2, r9\n\
+ ands r0, r2\n\
+ mov r1, r8\n\
+ ands r1, r4\n\
+ orrs r1, r0\n\
+ strb r1, [r5]\n\
+ movs r0, 0x7F\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _080FA336\n\
+ movs r0, 0x40\n\
+ orrs r0, r6\n\
+ b _080FA334\n\
+ .align 2, 0\n\
_080FA28C: .4byte gSaveBlock1 + 0x2DD4\n\
_080FA290:\n\
- lsrs r0, r3, 25\n\
- subs r2, r0\n\
- mov r0, r8\n\
- ands r0, r4\n\
- strb r0, [r5]\n\
- movs r0, 0x40\n\
- orrs r0, r6\n\
- strb r0, [r5, 0x1]\n\
+ lsrs r0, r3, 25\n\
+ subs r2, r0\n\
+ mov r0, r8\n\
+ ands r0, r4\n\
+ strb r0, [r5]\n\
+ movs r0, 0x40\n\
+ orrs r0, r6\n\
+ strb r0, [r5, 0x1]\n\
_080FA2A0:\n\
- ldrb r7, [r5]\n\
- lsls r0, r7, 25\n\
- lsrs r0, 25\n\
- adds r4, r0, r2\n\
- ldrh r0, [r5]\n\
- lsls r6, r0, 18\n\
- lsls r0, r4, 16\n\
- lsrs r0, 16\n\
- lsrs r1, r6, 25\n\
- cmp r0, r1\n\
- bls _080FA310\n\
- adds r0, r4, 0\n\
- bl __umodsi3\n\
- adds r3, r0, 0\n\
- lsrs r1, r6, 25\n\
- adds r0, r4, 0\n\
- str r3, [sp, 0x4]\n\
- bl __udivsi3\n\
- adds r4, r0, 0\n\
- movs r0, 0x1\n\
- eors r4, r0\n\
- ands r4, r0\n\
- lsls r2, r4, 6\n\
- ldrb r0, [r5, 0x1]\n\
- movs r4, 0x41\n\
- negs r4, r4\n\
- adds r1, r4, 0\n\
- ands r0, r1\n\
- orrs r0, r2\n\
- strb r0, [r5, 0x1]\n\
- movs r1, 0x40\n\
- ands r0, r1\n\
- ldr r3, [sp, 0x4]\n\
- cmp r0, 0\n\
- beq _080FA2FA\n\
- adds r1, r3, 0\n\
- mov r0, r9\n\
- ands r1, r0\n\
- mov r0, r8\n\
- ands r0, r7\n\
- orrs r0, r1\n\
- strb r0, [r5]\n\
- b _080FA336\n\
+ ldrb r7, [r5]\n\
+ lsls r0, r7, 25\n\
+ lsrs r0, 25\n\
+ adds r4, r0, r2\n\
+ ldrh r0, [r5]\n\
+ lsls r6, r0, 18\n\
+ lsls r0, r4, 16\n\
+ lsrs r0, 16\n\
+ lsrs r1, r6, 25\n\
+ cmp r0, r1\n\
+ bls _080FA310\n\
+ adds r0, r4, 0\n\
+ bl __umodsi3\n\
+ adds r3, r0, 0\n\
+ lsrs r1, r6, 25\n\
+ adds r0, r4, 0\n\
+ str r3, [sp, 0x4]\n\
+ bl __udivsi3\n\
+ adds r4, r0, 0\n\
+ movs r0, 0x1\n\
+ eors r4, r0\n\
+ ands r4, r0\n\
+ lsls r2, r4, 6\n\
+ ldrb r0, [r5, 0x1]\n\
+ movs r4, 0x41\n\
+ negs r4, r4\n\
+ adds r1, r4, 0\n\
+ ands r0, r1\n\
+ orrs r0, r2\n\
+ strb r0, [r5, 0x1]\n\
+ movs r1, 0x40\n\
+ ands r0, r1\n\
+ ldr r3, [sp, 0x4]\n\
+ cmp r0, 0\n\
+ beq _080FA2FA\n\
+ adds r1, r3, 0\n\
+ mov r0, r9\n\
+ ands r1, r0\n\
+ mov r0, r8\n\
+ ands r0, r7\n\
+ orrs r0, r1\n\
+ strb r0, [r5]\n\
+ b _080FA336\n\
_080FA2FA:\n\
- ldrh r0, [r5]\n\
- lsls r0, 18\n\
- lsrs r0, 25\n\
- subs r0, r3\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r8\n\
- ands r1, r7\n\
- orrs r1, r0\n\
- strb r1, [r5]\n\
- b _080FA336\n\
+ ldrh r0, [r5]\n\
+ lsls r0, 18\n\
+ lsrs r0, 25\n\
+ subs r0, r3\n\
+ mov r1, r9\n\
+ ands r0, r1\n\
+ mov r1, r8\n\
+ ands r1, r7\n\
+ orrs r1, r0\n\
+ strb r1, [r5]\n\
+ b _080FA336\n\
_080FA310:\n\
- mov r2, r9\n\
- ands r4, r2\n\
- mov r0, r8\n\
- ands r0, r7\n\
- orrs r0, r4\n\
- strb r0, [r5]\n\
- lsls r0, 25\n\
- ldrh r1, [r5]\n\
- lsls r1, 18\n\
- lsrs r0, 25\n\
- lsrs r1, 25\n\
- cmp r0, r1\n\
- bne _080FA336\n\
- ldrb r0, [r5, 0x1]\n\
- movs r4, 0x41\n\
- negs r4, r4\n\
- adds r1, r4, 0\n\
- ands r0, r1\n\
+ mov r2, r9\n\
+ ands r4, r2\n\
+ mov r0, r8\n\
+ ands r0, r7\n\
+ orrs r0, r4\n\
+ strb r0, [r5]\n\
+ lsls r0, 25\n\
+ ldrh r1, [r5]\n\
+ lsls r1, 18\n\
+ lsrs r0, 25\n\
+ lsrs r1, 25\n\
+ cmp r0, r1\n\
+ bne _080FA336\n\
+ ldrb r0, [r5, 0x1]\n\
+ movs r4, 0x41\n\
+ negs r4, r4\n\
+ adds r1, r4, 0\n\
+ ands r0, r1\n\
_080FA334:\n\
- strb r0, [r5, 0x1]\n\
+ strb r0, [r5, 0x1]\n\
_080FA336:\n\
- mov r0, r10\n\
- adds r0, 0x1\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r10, r0\n\
- cmp r0, 0x4\n\
- bls _080FA24A\n\
- ldr r0, _080FA360 @ =gSaveBlock1 + 0x2DD4\n\
- movs r1, 0x5\n\
- movs r2, 0\n\
- bl sub_80FA46C\n\
+ mov r0, r10\n\
+ adds r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r10, r0\n\
+ cmp r0, 0x4\n\
+ bls _080FA24A\n\
+ ldr r0, _080FA360 @ =gSaveBlock1 + 0x2DD4\n\
+ movs r1, 0x5\n\
+ movs r2, 0\n\
+ bl sub_80FA46C\n\
_080FA34E:\n\
- add sp, 0x8\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ add sp, 0x8\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080FA360: .4byte gSaveBlock1 + 0x2DD4\n\
- .syntax divided\n");
+ .syntax divided\n");
}
#endif
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index 6f36ddb0f..992e461eb 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -16,8 +16,8 @@
struct Coords32
{
- s32 x;
- s32 y;
+ s32 x;
+ s32 y;
};
extern const struct Coords32 gUnknown_0821664C[];
@@ -137,7 +137,7 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
if ((r6 == 2 && forcedMove == FALSE) || r6 == 0)
{
- if (sub_80E6034() != 4)
+ if (GetPlayerSpeed() != 4)
{
if (newKeys & START_BUTTON)
input->pressedStartButton = TRUE;
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index 4a96187c1..e4c3b78c9 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -489,7 +489,7 @@ u8 ForcedMovement_MuddySlope(void)
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (playerMapObj->placeholder18 != 2 || sub_80E6034() <= 3)
+ if (playerMapObj->placeholder18 != 2 || GetPlayerSpeed() <= 3)
{
sub_80E6010(0);
playerMapObj->mapobj_bit_9 = 1;
@@ -555,7 +555,7 @@ void sub_8058D0C(u8 direction, u16 heldKeys)
return;
}
if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_4) && (heldKeys & B_BUTTON) && FlagGet(SYS_B_DASH)
- && sub_80E5DEC(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E) == 0)
+ && IsRunningDisallowed(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E) == 0)
{
sub_805940C(direction);
gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_DASH;
diff --git a/src/heal_location.c b/src/heal_location.c
index a780ee470..42bc18567 100644
--- a/src/heal_location.c
+++ b/src/heal_location.c
@@ -1,9 +1,34 @@
#include "global.h"
#include "heal_location.h"
+#include "map_constants.h"
#define NUM_HEAL_LOCATIONS 22
-extern const struct HealLocation gHealLocations[];
+static const struct HealLocation sHealLocations[] =
+{
+ {MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, 4, 2},
+ {MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_2F, MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_2F, 4, 2},
+ {MAP_GROUP_PETALBURG_CITY, MAP_ID_PETALBURG_CITY, 20, 17},
+ {MAP_GROUP_SLATEPORT_CITY, MAP_ID_SLATEPORT_CITY, 19, 20},
+ {MAP_GROUP_MAUVILLE_CITY, MAP_ID_MAUVILLE_CITY, 22, 6},
+ {MAP_GROUP_RUSTBORO_CITY, MAP_ID_RUSTBORO_CITY, 16, 39},
+ {MAP_GROUP_FORTREE_CITY, MAP_ID_FORTREE_CITY, 5, 7},
+ {MAP_GROUP_LILYCOVE_CITY, MAP_ID_LILYCOVE_CITY, 24, 15},
+ {MAP_GROUP_MOSSDEEP_CITY, MAP_ID_MOSSDEEP_CITY, 28, 17},
+ {MAP_GROUP_SOOTOPOLIS_CITY, MAP_ID_SOOTOPOLIS_CITY, 43, 32},
+ {MAP_GROUP_EVER_GRANDE_CITY, MAP_ID_EVER_GRANDE_CITY, 27, 49},
+ {MAP_GROUP_LITTLEROOT_TOWN, MAP_ID_LITTLEROOT_TOWN, 5, 9},
+ {MAP_GROUP_LITTLEROOT_TOWN, MAP_ID_LITTLEROOT_TOWN, 14, 9},
+ {MAP_GROUP_OLDALE_TOWN, MAP_ID_OLDALE_TOWN, 6, 17},
+ {MAP_GROUP_DEWFORD_TOWN, MAP_ID_DEWFORD_TOWN, 2, 11},
+ {MAP_GROUP_LAVARIDGE_TOWN, MAP_ID_LAVARIDGE_TOWN, 9, 7},
+ {MAP_GROUP_FALLARBOR_TOWN, MAP_ID_FALLARBOR_TOWN, 14, 8},
+ {MAP_GROUP_VERDANTURF_TOWN, MAP_ID_VERDANTURF_TOWN, 16, 4},
+ {MAP_GROUP_PACIFIDLOG_TOWN, MAP_ID_PACIFIDLOG_TOWN, 8, 16},
+ {MAP_GROUP_EVER_GRANDE_CITY, MAP_ID_EVER_GRANDE_CITY, 18, 6},
+ {MAP_GROUP_BATTLE_TOWER_OUTSIDE, MAP_ID_BATTLE_TOWER_OUTSIDE, 14, 9},
+ {MAP_GROUP_SOUTHERN_ISLAND_EXTERIOR, MAP_ID_SOUTHERN_ISLAND_EXTERIOR, 15, 20},
+};
u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum)
{
@@ -11,7 +36,7 @@ u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum)
for (i = 0; i < NUM_HEAL_LOCATIONS; i++)
{
- if (gHealLocations[i].group == mapGroup && gHealLocations[i].map == mapNum)
+ if (sHealLocations[i].group == mapGroup && sHealLocations[i].map == mapNum)
return i + 1;
}
return 0;
@@ -24,7 +49,7 @@ const struct HealLocation *GetHealLocationByMap(u16 mapGroup, u16 mapNum)
if (index == 0)
return NULL;
else
- return &gHealLocations[index - 1];
+ return &sHealLocations[index - 1];
}
const struct HealLocation *GetHealLocation(u32 index)
@@ -34,5 +59,5 @@ const struct HealLocation *GetHealLocation(u32 index)
else if (index > NUM_HEAL_LOCATIONS)
return NULL;
else
- return &gHealLocations[index - 1];
+ return &sHealLocations[index - 1];
}
diff --git a/src/intro.c b/src/intro.c
index e2fcf3a1c..72478b773 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -33,7 +33,6 @@ extern u16 gUnknown_02039318;
extern u16 gUnknown_0203931A;
extern u16 gUnknown_02039358;
extern u16 gUnknown_0203935A;
-
extern u32 gIntroFrameCounter;
extern struct GcmbStruct gUnknown_03005EE0;
extern u16 gSaveFileStatus;
@@ -45,64 +44,735 @@ extern struct MonCoords gMonBackPicCoords[];
extern struct SpriteSheet gTrainerBackPicTable[];
extern struct MonCoords gTrainerBackPicCoords[];
extern struct SpritePalette gTrainerBackPicPaletteTable[];
-
-extern const u16 gIntro1BGPals[];
-extern const u8 gIntro1BG0_Tilemap[];
-extern const u8 gIntro1BG1_Tilemap[];
-extern const u8 gIntro1BG2_Tilemap[];
-extern const u8 gIntro1BG3_Tilemap[];
-extern const u8 gIntro1BGLeavesGfx[];
-extern const u8 gIntro3PokeballPal[];
-extern const u8 gIntro3Pokeball_Tilemap[];
-extern const u8 gIntro3Pokeball_Gfx[];
-extern const u16 gIntro3Streaks_Pal[];
-extern const u8 gIntro3Streaks_Gfx[];
-extern const u8 gIntro3Streaks_Tilemap[];
-extern union AnimCmd *gUnknown_0840AE80[];
-extern const struct SpriteTemplate gSpriteTemplate_840AFF0;
-extern const struct SpriteSheet gUnknown_0840B008;
-extern const struct SpriteSheet gUnknown_0840B018;
-extern const struct SpritePalette gUnknown_0840B028[];
-extern const struct SpriteTemplate gSpriteTemplate_840B1F4;
-extern const struct SpriteSheet gIntro3PokeballGfx_Table;
-extern const struct SpriteSheet gIntro3MiscGfx_Table;
-extern const struct SpritePalette gInterfacePokeballPal_Table;
-extern const struct SpritePalette gIntro3MiscPal_Table[];
+extern const u8 gInterfaceGfx_PokeBall[];
+extern const u16 gInterfacePal_PokeBall[];
extern const struct SpriteSheet gIntro2BrendanSpriteSheet;
extern const struct SpriteSheet gIntro2MaySpriteSheet;
extern const struct SpriteSheet gIntro2BicycleSpriteSheet;
extern const struct SpriteSheet gIntro2LatiosSpriteSheet;
extern const struct SpriteSheet gIntro2LatiasSpriteSheet;
extern const struct SpritePalette gIntro2SpritePalettes[];
-
-extern const struct SpriteTemplate gSpriteTemplate_840AE20;
-
extern const u8 gIntroCopyright_Gfx[];
extern const u16 gIntroCopyright_Pal[];
extern const u16 gIntroCopyright_Tilemap[];
-
extern const u16 gUnknown_08393E64[];
-extern const s16 gUnknown_0840AF50[][2];
-extern const s16 gUnknown_0840AF74[][2];
-extern const struct SpriteTemplate gSpriteTemplate_840AF94;
-extern const struct SpriteTemplate gSpriteTemplate_840AFAC;
-extern const struct SpriteTemplate gSpriteTemplate_840AFC4;
-extern union AnimCmd *gUnknown_0840B064[];
-extern const struct SpriteTemplate gSpriteTemplate_840B084;
-extern const struct SpriteTemplate gSpriteTemplate_840B0B0;
-extern const struct SpriteTemplate gSpriteTemplate_840B0DC;
-extern const struct SpriteTemplate gSpriteTemplate_840B0F4;
-extern const struct SpriteTemplate gSpriteTemplate_840B124;
-extern const struct SpriteTemplate gSpriteTemplate_840B150;
-extern const u8 gUnknown_0840B168[];
-extern const struct SpriteTemplate gSpriteTemplate_840B170;
-extern const u16 gUnknown_0840B188[];
-extern const struct SpriteTemplate gSpriteTemplate_840B1B0;
-extern const struct SpriteTemplate gSpriteTemplate_840B1C8;
-extern void *gUnknown_0840B5A0[];
-
+extern void *const gUnknown_0840B5A0[];
extern const s16 gSineTable[];
+//--------------------------------------------------
+// Graphics Data
+//--------------------------------------------------
+
+static const u16 Palette_406340[] = INCBIN_U16("graphics/intro/unknown1.gbapal");
+static const u16 Palette_406360[] = INCBIN_U16("graphics/intro/unknown2.gbapal");
+static const u8 gIntroTiles[] = INCBIN_U8("graphics/intro/intro.4bpp.lz");
+static const u16 gIntro1BGPals[][16] =
+{
+ INCBIN_U16("graphics/intro/intro1_bgpal1.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal2.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal3.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal4.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal5.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal6.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal7.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal8.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal9.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal10.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal11.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal12.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal13.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal14.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal15.gbapal"),
+ INCBIN_U16("graphics/intro/intro1_bgpal16.gbapal"),
+};
+static const u8 gIntro1BG0_Tilemap[] = INCBIN_U8("graphics/intro/intro1_bg0_map.bin.lz");
+static const u8 gIntro1BG1_Tilemap[] = INCBIN_U8("graphics/intro/intro1_bg1_map.bin.lz");
+static const u8 gIntro1BG2_Tilemap[] = INCBIN_U8("graphics/intro/intro1_bg2_map.bin.lz");
+static const u8 gIntro1BG3_Tilemap[] = INCBIN_U8("graphics/intro/intro1_bg3_map.bin.lz");
+static const u8 gIntro1BGLeavesGfx[] = INCBIN_U8("graphics/intro/introgfx.4bpp.lz");
+static const u16 gIntro3PokeballPal[] = INCBIN_U16("graphics/intro/intro3_pokeball.gbapal");
+static const u8 gIntro3Pokeball_Tilemap[] = INCBIN_U8("graphics/intro/intro3_pokeball_map.bin.lz");
+static const u8 gIntro3Pokeball_Gfx[] = INCBIN_U8("graphics/intro/intro3_pokeball.8bpp.lz");
+static const u16 gIntro3Streaks_Pal[] = INCBIN_U16("graphics/intro/intro3_streaks.gbapal");
+static const u8 gIntro3Streaks_Gfx[] = INCBIN_U8("graphics/intro/intro3_streaks.4bpp.lz");
+static const u8 gIntro3Streaks_Tilemap[] = INCBIN_U8("graphics/intro/intro3_streaks_map.bin.lz");
+static const u16 gIntro3Misc1Palette[] = INCBIN_U16("graphics/intro/intro3_misc1.gbapal");
+static const u16 gIntro3Misc2Palette[] = INCBIN_U16("graphics/intro/intro3_misc2.gbapal");
+static const u8 gIntro3MiscTiles[] = INCBIN_U8("graphics/intro/intro3_misc.4bpp.lz");
+static const u16 gIntro1EonPalette[] = INCBIN_U16("graphics/intro/intro1_eon.gbapal");
+static const u8 gIntro1EonTiles[] = INCBIN_U8("graphics/intro/intro1_eon.4bpp.lz");
+static const struct OamData gOamData_840ADE8 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840ADF0[] =
+{
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840ADF8[] =
+{
+ ANIMCMD_FRAME(24, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AE00[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AE08[] =
+{
+ ANIMCMD_FRAME(48, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840AE10[] =
+{
+ gSpriteAnim_840ADF0,
+ gSpriteAnim_840ADF8,
+ gSpriteAnim_840AE00,
+ gSpriteAnim_840AE08,
+};
+static void sub_813D208(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840AE20 =
+{
+ .tileTag = 2000,
+ .paletteTag = 2000,
+ .oam = &gOamData_840ADE8,
+ .anims = gSpriteAnimTable_840AE10,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813D208,
+};
+static const union AnimCmd Unknown_40AE38[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(64, 4),
+ ANIMCMD_FRAME(128, 4),
+ ANIMCMD_FRAME(192, 4),
+ ANIMCMD_JUMP(0),
+};
+static const union AnimCmd Unknown_40AE4C[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(64, 8),
+ ANIMCMD_FRAME(128, 8),
+ ANIMCMD_FRAME(192, 8),
+ ANIMCMD_JUMP(0),
+};
+static const union AnimCmd Unknown_40AE60[] =
+{
+ ANIMCMD_FRAME(256, 4),
+ ANIMCMD_FRAME(0x140, 4),
+ ANIMCMD_FRAME(0x180, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd Unknown_40AE70[] =
+{
+ ANIMCMD_FRAME(0x180, 16),
+ ANIMCMD_FRAME(0x140, 16),
+ ANIMCMD_FRAME(256, 16),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gUnknown_0840AE80[] =
+{
+ Unknown_40AE38,
+ Unknown_40AE4C,
+ Unknown_40AE60,
+ Unknown_40AE70,
+};
+static const struct OamData gOamData_840AE90 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const struct OamData gOamData_840AE98 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const struct OamData gOamData_840AEA0 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 2,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840AEA8[] =
+{
+ ANIMCMD_FRAME(80, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEB0[] =
+{
+ ANIMCMD_FRAME(84, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEB8[] =
+{
+ ANIMCMD_FRAME(88, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEC0[] =
+{
+ ANIMCMD_FRAME(92, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEC8[] =
+{
+ ANIMCMD_FRAME(96, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AED0[] =
+{
+ ANIMCMD_FRAME(100, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AED8[] =
+{
+ ANIMCMD_FRAME(104, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEE0[] =
+{
+ ANIMCMD_FRAME(112, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEE8[] =
+{
+ ANIMCMD_FRAME(113, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEF0[] =
+{
+ ANIMCMD_FRAME(114, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AEF8[] =
+{
+ ANIMCMD_FRAME(115, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AF00[] =
+{
+ ANIMCMD_FRAME(116, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AF08[] =
+{
+ ANIMCMD_FRAME(117, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_840AF10[] =
+{
+ ANIMCMD_FRAME(128, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840AF18[] =
+{
+ gSpriteAnim_840AEA8,
+ gSpriteAnim_840AEB0,
+ gSpriteAnim_840AEB8,
+ gSpriteAnim_840AEC0,
+ gSpriteAnim_840AEC8,
+ gSpriteAnim_840AED0,
+ gSpriteAnim_840AED8,
+};
+static const union AnimCmd *const gSpriteAnimTable_840AF34[] =
+{
+ gSpriteAnim_840AEE0,
+ gSpriteAnim_840AEE8,
+ gSpriteAnim_840AEF0,
+ gSpriteAnim_840AEF8,
+ gSpriteAnim_840AF00,
+ gSpriteAnim_840AF08,
+};
+static const union AnimCmd *const gSpriteAnimTable_840AF4C[] =
+{
+ gSpriteAnim_840AF10,
+};
+static const s16 gUnknown_0840AF50[][2] =
+{
+ {0, -72},
+ {1, -56},
+ {2, -40},
+ {3, -24},
+ {4, 8},
+ {5, 24},
+ {3, 40},
+ {1, 56},
+ {6, 72},
+};
+static const s16 gUnknown_0840AF74[][2] =
+{
+ {0, -28},
+ {1, -20},
+ {2, -12},
+ {3, -4},
+ {2, 4},
+ {4, 12},
+ {5, 20},
+ {3, 28},
+};
+static void sub_813D908(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840AF94 =
+{
+ .tileTag = 2000,
+ .paletteTag = 2001,
+ .oam = &gOamData_840AE90,
+ .anims = gSpriteAnimTable_840AF18,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813D908,
+};
+static const struct SpriteTemplate gSpriteTemplate_840AFAC =
+{
+ .tileTag = 2000,
+ .paletteTag = 2001,
+ .oam = &gOamData_840AE98,
+ .anims = gSpriteAnimTable_840AF34,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813D908,
+};
+static const struct SpriteTemplate gSpriteTemplate_840AFC4 =
+{
+ .tileTag = 2000,
+ .paletteTag = 2001,
+ .oam = &gOamData_840AEA0,
+ .anims = gSpriteAnimTable_840AF4C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813D908,
+};
+static const struct OamData gOamData_840AFDC =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840AFE4[] =
+{
+ ANIMCMD_FRAME(0, 10),
+ ANIMCMD_JUMP(0),
+};
+static const union AnimCmd *const gSpriteAnimTable_840AFEC[] =
+{
+ gSpriteAnim_840AFE4,
+};
+static void sub_813DA64(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840AFF0 =
+{
+ .tileTag = 2002,
+ .paletteTag = 2002,
+ .oam = &gOamData_840AFDC,
+ .anims = gSpriteAnimTable_840AFEC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813DA64,
+};
+const struct SpriteSheet gUnknown_0840B008[] =
+{
+ {gIntroTiles, 0x1400, 2000},
+ {NULL},
+};
+const struct SpriteSheet gUnknown_0840B018[] =
+{
+ {gIntro1EonTiles, 0x400, 2002},
+ {NULL},
+};
+const struct SpritePalette gUnknown_0840B028[] =
+{
+ {Palette_406340, 2000},
+ {Palette_406360, 2001},
+ {gIntro1EonPalette, 2002},
+ {NULL},
+};
+static const union AnimCmd gUnknown_0840B048[] =
+{
+ ANIMCMD_FRAME(3, 0),
+ ANIMCMD_END,
+};
+static const union AnimCmd gUnknown_0840B050[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd gUnknown_0840B058[] =
+{
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gUnknown_0840B064[] =
+{
+ gUnknown_0840B048,
+ gUnknown_0840B050,
+ gUnknown_0840B058,
+};
+static const struct OamData gOamData_840B070 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B078[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B080[] =
+{
+ gSpriteAnim_840B078,
+};
+static void sub_813E30C(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B084 =
+{
+ .tileTag = 2002,
+ .paletteTag = 2002,
+ .oam = &gOamData_840B070,
+ .anims = gSpriteAnimTable_840B080,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E30C,
+};
+static const struct OamData gOamData_840B09C =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B0A4[] =
+{
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B0AC[] =
+{
+ gSpriteAnim_840B0A4,
+};
+static void sub_813E4B8(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B0B0 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2003,
+ .oam = &gOamData_840B09C,
+ .anims = gSpriteAnimTable_840B0AC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E4B8,
+};
+static const struct OamData gOamData_840B0C8 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B0D0[] =
+{
+ ANIMCMD_FRAME(14, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B0D8[] =
+{
+ gSpriteAnim_840B0D0,
+};
+static void sub_813E5E0(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B0DC =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B0C8,
+ .anims = gSpriteAnimTable_840B0D8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E5E0,
+};
+static void sub_813E6C0(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B0F4 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B0C8,
+ .anims = gSpriteAnimTable_840B0D8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E6C0,
+};
+static const struct OamData gOamData_840B10C =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B114[] =
+{
+ ANIMCMD_FRAME(6, 8),
+ ANIMCMD_FRAME(6, 8, .hFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+static const union AnimCmd *const gSpriteAnimTable_840B120[] =
+{
+ gSpriteAnim_840B114,
+};
+static void sub_813E804(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B124 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B10C,
+ .anims = gSpriteAnimTable_840B120,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E804,
+};
+static const struct OamData gOamData_840B13C =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B144[] =
+{
+ ANIMCMD_FRAME(10, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B14C[] =
+{
+ gSpriteAnim_840B144,
+};
+static void sub_813E980(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B150 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B13C,
+ .anims = gSpriteAnimTable_840B14C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813E980,
+};
+static const u8 gUnknown_0840B168[] = {0xE6, 0xEB, 0xE4, 0xEA, 0xE5, 0xE9, 0xE7, 0xE8};
+static void sub_813EA60(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B170 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B13C,
+ .anims = gSpriteAnimTable_840B14C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813EA60,
+};
+static const u16 gUnknown_0840B188[] = {0x200, 0x1C0, 0x180, 0x140, 0x100, 0xE0, 0xC0, 0xA0, 0x80, 0x80};
+static const struct OamData gOamData_840B19C =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B1A4[] =
+{
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B1AC[] =
+{
+ gSpriteAnim_840B1A4,
+};
+static void sub_813EBBC(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B1B0 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B19C,
+ .anims = gSpriteAnimTable_840B1AC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813EBBC,
+};
+static void sub_813EC90(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B1C8 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2004,
+ .oam = &gOamData_840B19C,
+ .anims = gSpriteAnimTable_840B1AC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813EC90,
+};
+static const struct OamData gOamData_840B1E0 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_840B1E8[] =
+{
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_840B1F0[] =
+{
+ gSpriteAnim_840B1E8,
+};
+static void sub_813EDFC(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_840B1F4 =
+{
+ .tileTag = 2003,
+ .paletteTag = 2003,
+ .oam = &gOamData_840B1E0,
+ .anims = gSpriteAnimTable_840B1F0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_813EDFC,
+};
+const struct SpriteSheet gIntro3PokeballGfx_Table[] =
+{
+ {gInterfaceGfx_PokeBall, 0x100, 2002},
+ {NULL},
+};
+const struct SpriteSheet gIntro3MiscGfx_Table[] =
+{
+ {gIntro3MiscTiles, 0xa00, 2003},
+ {NULL},
+};
+const struct SpritePalette gInterfacePokeballPal_Table[] =
+{
+ {gInterfacePal_PokeBall, 2002},
+ {NULL},
+};
+const struct SpritePalette gIntro3MiscPal_Table[] =
+{
+ {gIntro3Misc1Palette, 2003},
+ {gIntro3Misc2Palette, 2004},
+ {NULL},
+};
+const u32 unusedData = 0x02000000;
+
static void MainCB2_EndIntro(void);
static void Task_IntroLoadPart1Graphics(u8);
static void Task_IntroFadeIn(u8);
@@ -129,18 +799,18 @@ static void sub_813CCE8(u8);
static u16 sub_813CE88(u16, s16, s16, u16, u8);
static u8 sub_813CFA8(u16, u16, u16, u16);
static void sub_813D084(u8);
-void sub_813D220(struct Sprite *);
-void sub_813D368(struct Sprite *);
-void sub_813D414(struct Sprite *);
-void SpriteCB_WaterDropFall(struct Sprite *);
+static void sub_813D220(struct Sprite *);
+static void sub_813D368(struct Sprite *);
+static void sub_813D414(struct Sprite *);
+static void SpriteCB_WaterDropFall(struct Sprite *);
static u8 CreateWaterDrop(s16, s16, u16, u16, u16, u8);
-void sub_813D788(struct Sprite *);
-void sub_813D880(struct Sprite *);
+static void sub_813D788(struct Sprite *);
+static void sub_813D880(struct Sprite *);
static u8 CreateGameFreakLogo(s16, s16, u8);
-void sub_813DB9C(struct Sprite *);
-void sub_813DE70(struct Sprite *);
-void sub_813E10C(struct Sprite *);
-void sub_813E210(struct Sprite *);
+static void sub_813DB9C(struct Sprite *);
+static void sub_813DE70(struct Sprite *);
+static void sub_813E10C(struct Sprite *);
+static void sub_813E210(struct Sprite *);
static void sub_813E580(u16, u16);
static void sub_813E7C0(u8);
static void sub_813E930(u8);
@@ -209,7 +879,11 @@ static u8 SetUpCopyrightScreen(void)
ResetSpriteData();
FreeAllSpritePalettes();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0xFFFF);
- REG_BG0CNT = 1792;
+ REG_BG0CNT = BGCNT_PRIORITY(0)
+ | BGCNT_CHARBASE(0)
+ | BGCNT_SCREENBASE(7)
+ | BGCNT_16COLOR
+ | BGCNT_TXT256x256;
ime = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
@@ -288,13 +962,13 @@ static void Task_IntroLoadPart1Graphics(u8 taskId)
DmaClear16(3, VRAM + 0xA800, 0x800);
LZ77UnCompVram(gIntro1BG3_Tilemap, (void *)(VRAM + 0xB000));
DmaClear16(3, VRAM + 0xB800, 0x800);
- LoadPalette(gIntro1BGPals, 0, 0x200);
- REG_BG3CNT = 0x9603;
- REG_BG2CNT = 0x9402;
- REG_BG1CNT = 0x9201;
- REG_BG0CNT = 0x9000;
- LoadCompressedObjectPic(&gUnknown_0840B008);
- LoadCompressedObjectPic(&gUnknown_0840B018);
+ LoadPalette(gIntro1BGPals, 0, sizeof(gIntro1BGPals));
+ REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(22) | BGCNT_16COLOR | BGCNT_TXT256x512;
+ REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(20) | BGCNT_16COLOR | BGCNT_TXT256x512;
+ REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(18) | BGCNT_16COLOR | BGCNT_TXT256x512;
+ REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(16) | BGCNT_16COLOR | BGCNT_TXT256x512;
+ LoadCompressedObjectPic(&gUnknown_0840B008[0]);
+ LoadCompressedObjectPic(&gUnknown_0840B018[0]);
LoadSpritePalettes(gUnknown_0840B028);
CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1F0, 0x20);
CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1E1, 0x1E);
@@ -509,7 +1183,7 @@ static void Task_IntroLoadPart3Graphics(u8 taskId)
ResetSpriteData();
FreeAllSpritePalettes();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0xFFFF);
- REG_BG2CNT = 0x4883;
+ REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(8) | BGCNT_256COLOR | BGCNT_AFF256x256;
REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
gTasks[taskId].func = Task_IntroSpinAndZoomPokeball;
gIntroFrameCounter = 0;
@@ -574,9 +1248,9 @@ static void Task_IntroLoadPart3Streaks(u8 taskId)
ResetSpriteData();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 8;
- LoadCompressedObjectPic(&gIntro3PokeballGfx_Table);
- LoadCompressedObjectPic(&gIntro3MiscGfx_Table);
- LoadCompressedObjectPalette(&gInterfacePokeballPal_Table);
+ LoadCompressedObjectPic(&gIntro3PokeballGfx_Table[0]);
+ LoadCompressedObjectPic(&gIntro3MiscGfx_Table[0]);
+ LoadCompressedObjectPalette(&gInterfacePokeballPal_Table[0]);
LoadSpritePalettes(gIntro3MiscPal_Table);
gTasks[taskId].func = task_intro_14;
}
@@ -587,8 +1261,16 @@ static void task_intro_14(u8 taskId)
REG_WIN0V = 0xA0;
REG_WININ = 0x1C;
REG_WINOUT = 0x1D;
- REG_BG3CNT = 0x603;
- REG_BG0CNT = 0x700;
+ REG_BG3CNT = BGCNT_PRIORITY(3)
+ | BGCNT_CHARBASE(0)
+ | BGCNT_SCREENBASE(6)
+ | BGCNT_16COLOR
+ | BGCNT_TXT256x256;
+ REG_BG0CNT = BGCNT_PRIORITY(0)
+ | BGCNT_CHARBASE(0)
+ | BGCNT_SCREENBASE(7)
+ | BGCNT_16COLOR
+ | BGCNT_TXT256x256;
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON;
gTasks[taskId].data[15] = CreateTask(task_intro_20, 0);
gTasks[gTasks[taskId].data[15]].data[0] = 0;
@@ -742,18 +1424,21 @@ static void task_intro_19(u8 taskId)
static void task_intro_20(u8 taskId)
{
+#define BG2_FLAGS (BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(14) | BGCNT_16COLOR | BGCNT_TXT256x256)
+#define DISPCNT_FLAGS (DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON)
+
gTasks[taskId].data[15]++;
switch (gTasks[taskId].data[0])
{
case 0:
- REG_DISPCNT = 0x3940;
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON;
REG_BG2CNT = 0;
gTasks[taskId].data[0] = 0xFF;
break;
case 2:
BeginNormalPaletteFade(1, 0, 0x10, 0, 0xFFFF);
- REG_BG2CNT = 0x0E07;
- REG_DISPCNT = 0x3D40;
+ REG_BG2CNT = BG2_FLAGS;
+ REG_DISPCNT = DISPCNT_FLAGS;
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = 0;
gTasks[taskId].data[0] = 20;
@@ -766,8 +1451,8 @@ static void task_intro_20(u8 taskId)
break;
case 3:
BeginNormalPaletteFade(1, 0, 0x10, 0, 0xFFFF);
- REG_BG2CNT = 0x0E07;
- REG_DISPCNT = 0x3D40;
+ REG_BG2CNT = BG2_FLAGS;
+ REG_DISPCNT = DISPCNT_FLAGS;
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = 0;
gTasks[taskId].data[0] = 0x1E;
@@ -780,8 +1465,8 @@ static void task_intro_20(u8 taskId)
break;
case 4:
BeginNormalPaletteFade(1, 5, 0, 0x10, 0x37F7);
- REG_BG2CNT = 0x0E07;
- REG_DISPCNT = 0x3D40;
+ REG_BG2CNT = BG2_FLAGS;
+ REG_DISPCNT = DISPCNT_FLAGS;
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = 0;
gTasks[taskId].data[3] = 8;
@@ -798,6 +1483,9 @@ static void task_intro_20(u8 taskId)
case 0xFF: //needed to prevent jump table optimization
break;
}
+
+#undef BG2_FLAGS
+#undef DISPCNT_FLAGS
}
static void intro_reset_and_hide_bgs(void)
@@ -1147,7 +1835,7 @@ static void sub_813D084(u8 a)
gPlttBufferFaded[241] = color;
}
-void sub_813D0CC(struct Sprite *sprite)
+static void sub_813D0CC(struct Sprite *sprite)
{
u8 r0;
@@ -1174,7 +1862,7 @@ void sub_813D0CC(struct Sprite *sprite)
}
}
-void sub_813D158(struct Sprite *sprite)
+static void sub_813D158(struct Sprite *sprite)
{
if (gSprites[sprite->data7].data7 != 0)
{
@@ -1198,13 +1886,13 @@ void sub_813D158(struct Sprite *sprite)
}
}
-void sub_813D208(struct Sprite *sprite)
+static void sub_813D208(struct Sprite *sprite)
{
if (sprite->data0 != 0)
sprite->callback = sub_813D220;
}
-void sub_813D220(struct Sprite *sprite)
+static void sub_813D220(struct Sprite *sprite)
{
if (sprite->pos1.x <= 116)
{
@@ -1253,7 +1941,7 @@ void sub_813D220(struct Sprite *sprite)
}
}
-void sub_813D368(struct Sprite *sprite)
+static void sub_813D368(struct Sprite *sprite)
{
SetOamMatrix(sprite->data1, sprite->data6 + 64, 0, 0, sprite->data6 + 64);
SetOamMatrix(sprite->data1 + 1, sprite->data6 + 64, 0, 0, sprite->data6 + 64);
@@ -1274,7 +1962,7 @@ void sub_813D368(struct Sprite *sprite)
}
}
-void sub_813D414(struct Sprite *sprite)
+static void sub_813D414(struct Sprite *sprite)
{
if (sprite->data0 != 2)
{
@@ -1291,7 +1979,7 @@ void sub_813D414(struct Sprite *sprite)
}
}
-void SpriteCB_WaterDropFall(struct Sprite *sprite)
+static void SpriteCB_WaterDropFall(struct Sprite *sprite)
{
if (sprite->pos1.y < sprite->data5)
{
@@ -1314,7 +2002,7 @@ void SpriteCB_WaterDropFall(struct Sprite *sprite)
}
//Duplicate function
-void SpriteCB_WaterDropFall_2(struct Sprite *sprite)
+static void SpriteCB_WaterDropFall_2(struct Sprite *sprite)
{
if (sprite->pos1.y < sprite->data5)
{
@@ -1383,7 +2071,7 @@ static u8 CreateWaterDrop(s16 x, s16 y, u16 c, u16 d, u16 e, u8 fallImmediately)
return oldSpriteId;
}
-void sub_813D788(struct Sprite *sprite)
+static void sub_813D788(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1435,7 +2123,7 @@ void sub_813D788(struct Sprite *sprite)
}
}
-void sub_813D880(struct Sprite *sprite)
+static void sub_813D880(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1462,7 +2150,7 @@ void sub_813D880(struct Sprite *sprite)
sprite->data1 += 4;
}
-void sub_813D908(struct Sprite *sprite)
+static void sub_813D908(struct Sprite *sprite)
{
if (gTasks[sprite->data0].data[0] == 0)
{
@@ -1502,7 +2190,7 @@ static u8 CreateGameFreakLogo(s16 a, s16 b, u8 c)
}
#ifdef NONMATCHING
-void sub_813DA64(struct Sprite *sprite)
+static void sub_813DA64(struct Sprite *sprite)
{
sprite->data7++;
@@ -1563,178 +2251,178 @@ void sub_813DA64(struct Sprite *sprite)
}
#else
__attribute__((naked))
-void sub_813DA64(struct Sprite *sprite)
+static void sub_813DA64(struct Sprite *sprite)
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0x4\n\
- adds r4, r0, 0\n\
- ldrh r0, [r4, 0x3C]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x3C]\n\
- movs r1, 0x2E\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0\n\
- beq _0813DA7C\n\
- cmp r0, 0x1\n\
- beq _0813DAC0\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x4\n\
+ adds r4, r0, 0\n\
+ ldrh r0, [r4, 0x3C]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x3C]\n\
+ movs r1, 0x2E\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r0, 0\n\
+ beq _0813DA7C\n\
+ cmp r0, 0x1\n\
+ beq _0813DAC0\n\
_0813DA7C:\n\
- ldrb r0, [r4, 0x1]\n\
- movs r1, 0x3\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x1]\n\
- ldrb r1, [r4, 0x3]\n\
- movs r0, 0x3F\n\
- negs r0, r0\n\
- ands r0, r1\n\
- movs r1, 0x2\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x3]\n\
- adds r0, r4, 0\n\
- movs r1, 0x1\n\
- movs r2, 0x3\n\
- movs r3, 0x3\n\
- bl CalcCenterToCornerVec\n\
- adds r2, r4, 0\n\
- adds r2, 0x3E\n\
- ldrb r1, [r2]\n\
- movs r0, 0x5\n\
- negs r0, r0\n\
- ands r0, r1\n\
- strb r0, [r2]\n\
- movs r0, 0x1\n\
- strh r0, [r4, 0x2E]\n\
- movs r0, 0x80\n\
- strh r0, [r4, 0x30]\n\
- ldr r0, _0813DABC @ =0x0000ffe8\n\
- strh r0, [r4, 0x32]\n\
- movs r0, 0\n\
- b _0813DB92\n\
- .align 2, 0\n\
+ ldrb r0, [r4, 0x1]\n\
+ movs r1, 0x3\n\
+ orrs r0, r1\n\
+ strb r0, [r4, 0x1]\n\
+ ldrb r1, [r4, 0x3]\n\
+ movs r0, 0x3F\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ movs r1, 0x2\n\
+ orrs r0, r1\n\
+ strb r0, [r4, 0x3]\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ movs r2, 0x3\n\
+ movs r3, 0x3\n\
+ bl CalcCenterToCornerVec\n\
+ adds r2, r4, 0\n\
+ adds r2, 0x3E\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x5\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ strb r0, [r2]\n\
+ movs r0, 0x1\n\
+ strh r0, [r4, 0x2E]\n\
+ movs r0, 0x80\n\
+ strh r0, [r4, 0x30]\n\
+ ldr r0, _0813DABC @ =0x0000ffe8\n\
+ strh r0, [r4, 0x32]\n\
+ movs r0, 0\n\
+ b _0813DB92\n\
+ .align 2, 0\n\
_0813DABC: .4byte 0x0000ffe8\n\
_0813DAC0:\n\
- ldrh r1, [r4, 0x34]\n\
- movs r2, 0x34\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0x4F\n\
- bgt _0813DAF8\n\
- lsls r0, r1, 24\n\
- lsrs r0, 24\n\
- movs r1, 0x78\n\
- bl Sin\n\
- negs r0, r0\n\
- strh r0, [r4, 0x26]\n\
- ldrh r0, [r4, 0x34]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- movs r1, 0x8C\n\
- bl Sin\n\
- negs r0, r0\n\
- strh r0, [r4, 0x24]\n\
- movs r1, 0x34\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0x40\n\
- ble _0813DAF8\n\
- ldrb r0, [r4, 0x5]\n\
- movs r1, 0xC\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x5]\n\
+ ldrh r1, [r4, 0x34]\n\
+ movs r2, 0x34\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0x4F\n\
+ bgt _0813DAF8\n\
+ lsls r0, r1, 24\n\
+ lsrs r0, 24\n\
+ movs r1, 0x78\n\
+ bl Sin\n\
+ negs r0, r0\n\
+ strh r0, [r4, 0x26]\n\
+ ldrh r0, [r4, 0x34]\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ movs r1, 0x8C\n\
+ bl Sin\n\
+ negs r0, r0\n\
+ strh r0, [r4, 0x24]\n\
+ movs r1, 0x34\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r0, 0x40\n\
+ ble _0813DAF8\n\
+ ldrb r0, [r4, 0x5]\n\
+ movs r1, 0xC\n\
+ orrs r0, r1\n\
+ strb r0, [r4, 0x5]\n\
_0813DAF8:\n\
- ldr r2, _0813DB60 @ =gSineTable\n\
- ldrh r1, [r4, 0x32]\n\
- lsls r0, r1, 24\n\
- lsrs r0, 23\n\
- adds r0, r2\n\
- ldrh r3, [r0]\n\
- adds r1, 0x40\n\
- lsls r1, 24\n\
- lsrs r1, 23\n\
- adds r1, r2\n\
- movs r2, 0\n\
- ldrsh r0, [r1, r2]\n\
- movs r1, 0x30\n\
- ldrsh r2, [r4, r1]\n\
- adds r1, r0, 0\n\
- muls r1, r2\n\
- adds r0, r1, 0\n\
- cmp r1, 0\n\
- bge _0813DB20\n\
- adds r0, 0xFF\n\
+ ldr r2, _0813DB60 @ =gSineTable\n\
+ ldrh r1, [r4, 0x32]\n\
+ lsls r0, r1, 24\n\
+ lsrs r0, 23\n\
+ adds r0, r2\n\
+ ldrh r3, [r0]\n\
+ adds r1, 0x40\n\
+ lsls r1, 24\n\
+ lsrs r1, 23\n\
+ adds r1, r2\n\
+ movs r2, 0\n\
+ ldrsh r0, [r1, r2]\n\
+ movs r1, 0x30\n\
+ ldrsh r2, [r4, r1]\n\
+ adds r1, r0, 0\n\
+ muls r1, r2\n\
+ adds r0, r1, 0\n\
+ cmp r1, 0\n\
+ bge _0813DB20\n\
+ adds r0, 0xFF\n\
_0813DB20:\n\
- lsls r0, 8\n\
- lsrs r6, r0, 16\n\
- lsls r0, r3, 16\n\
- asrs r3, r0, 16\n\
- negs r0, r3\n\
- muls r0, r2\n\
- cmp r0, 0\n\
- bge _0813DB32\n\
- adds r0, 0xFF\n\
+ lsls r0, 8\n\
+ lsrs r6, r0, 16\n\
+ lsls r0, r3, 16\n\
+ asrs r3, r0, 16\n\
+ negs r0, r3\n\
+ muls r0, r2\n\
+ cmp r0, 0\n\
+ bge _0813DB32\n\
+ adds r0, 0xFF\n\
_0813DB32:\n\
- lsls r0, 8\n\
- lsrs r5, r0, 16\n\
- adds r0, r3, 0\n\
- muls r0, r2\n\
- cmp r0, 0\n\
- bge _0813DB40\n\
- adds r0, 0xFF\n\
+ lsls r0, 8\n\
+ lsrs r5, r0, 16\n\
+ adds r0, r3, 0\n\
+ muls r0, r2\n\
+ cmp r0, 0\n\
+ bge _0813DB40\n\
+ adds r0, 0xFF\n\
_0813DB40:\n\
- lsls r0, 8\n\
- lsrs r2, r0, 16\n\
- adds r1, r6, 0\n\
- adds r3, r5, 0\n\
- str r1, [sp]\n\
- movs r0, 0x1\n\
- bl SetOamMatrix\n\
- ldrh r1, [r4, 0x30]\n\
- movs r2, 0x30\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0xFF\n\
- bgt _0813DB64\n\
- adds r0, r1, 0\n\
- adds r0, 0x8\n\
- b _0813DB68\n\
- .align 2, 0\n\
+ lsls r0, 8\n\
+ lsrs r2, r0, 16\n\
+ adds r1, r6, 0\n\
+ adds r3, r5, 0\n\
+ str r1, [sp]\n\
+ movs r0, 0x1\n\
+ bl SetOamMatrix\n\
+ ldrh r1, [r4, 0x30]\n\
+ movs r2, 0x30\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0xFF\n\
+ bgt _0813DB64\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x8\n\
+ b _0813DB68\n\
+ .align 2, 0\n\
_0813DB60: .4byte gSineTable\n\
_0813DB64:\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
_0813DB68:\n\
- strh r0, [r4, 0x30]\n\
- ldrh r1, [r4, 0x32]\n\
- movs r2, 0x32\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0x17\n\
- bgt _0813DB78\n\
- adds r0, r1, 0x1\n\
- strh r0, [r4, 0x32]\n\
+ strh r0, [r4, 0x30]\n\
+ ldrh r1, [r4, 0x32]\n\
+ movs r2, 0x32\n\
+ ldrsh r0, [r4, r2]\n\
+ cmp r0, 0x17\n\
+ bgt _0813DB78\n\
+ adds r0, r1, 0x1\n\
+ strh r0, [r4, 0x32]\n\
_0813DB78:\n\
- ldrh r2, [r4, 0x34]\n\
- movs r1, 0x34\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0x3F\n\
- bgt _0813DB86\n\
- adds r0, r2, 0x2\n\
- b _0813DB92\n\
+ ldrh r2, [r4, 0x34]\n\
+ movs r1, 0x34\n\
+ ldrsh r0, [r4, r1]\n\
+ cmp r0, 0x3F\n\
+ bgt _0813DB86\n\
+ adds r0, r2, 0x2\n\
+ b _0813DB92\n\
_0813DB86:\n\
- ldrh r1, [r4, 0x3C]\n\
- movs r0, 0x3\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0813DB94\n\
- adds r0, r2, 0x1\n\
+ ldrh r1, [r4, 0x3C]\n\
+ movs r0, 0x3\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0813DB94\n\
+ adds r0, r2, 0x1\n\
_0813DB92:\n\
- strh r0, [r4, 0x34]\n\
+ strh r0, [r4, 0x34]\n\
_0813DB94:\n\
- add sp, 0x4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
+ add sp, 0x4\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
#endif
-void sub_813DB9C(struct Sprite *sprite)
+static void sub_813DB9C(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1810,7 +2498,7 @@ void sub_813DB9C(struct Sprite *sprite)
}
}
-void sub_813DD58(struct Sprite *sprite)
+static void sub_813DD58(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1853,7 +2541,7 @@ void sub_813DD58(struct Sprite *sprite)
}
}
-void sub_813DE70(struct Sprite *sprite)
+static void sub_813DE70(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1931,7 +2619,7 @@ void sub_813DE70(struct Sprite *sprite)
}
}
-void sub_813E10C(struct Sprite *sprite)
+static void sub_813E10C(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -1999,7 +2687,7 @@ void sub_813E10C(struct Sprite *sprite)
}
}
-void sub_813E210(struct Sprite *sprite)
+static void sub_813E210(struct Sprite *sprite)
{
switch (sprite->data0)
{
@@ -2067,7 +2755,7 @@ void sub_813E210(struct Sprite *sprite)
}
}
-void sub_813E30C(struct Sprite *sprite)
+static void sub_813E30C(struct Sprite *sprite)
{
u16 r4, r1;
@@ -2122,7 +2810,7 @@ void sub_813E30C(struct Sprite *sprite)
}
}
-void sub_813E4B8(struct Sprite *sprite)
+static void sub_813E4B8(struct Sprite *sprite)
{
u16 r4;
u16 r2;
@@ -2168,7 +2856,7 @@ static void sub_813E580(u16 x, u16 y)
}
}
-void sub_813E5E0(struct Sprite *sprite)
+static void sub_813E5E0(struct Sprite *sprite)
{
if (gUnknown_0203931A != 0)
{
@@ -2190,7 +2878,7 @@ void sub_813E5E0(struct Sprite *sprite)
}
}
-void sub_813E6C0(struct Sprite *sprite)
+static void sub_813E6C0(struct Sprite *sprite)
{
u8 spriteId;
u8 i;
@@ -2246,7 +2934,7 @@ static void sub_813E7C0(u8 a)
}
}
-void sub_813E804(struct Sprite *sprite)
+static void sub_813E804(struct Sprite *sprite)
{
if (gUnknown_0203931A != 0)
{
@@ -2287,7 +2975,7 @@ static void sub_813E930(u8 a)
}
}
-void sub_813E980(struct Sprite *sprite)
+static void sub_813E980(struct Sprite *sprite)
{
if (gUnknown_0203931A != 0)
{
@@ -2313,7 +3001,7 @@ void sub_813E980(struct Sprite *sprite)
}
}
-void sub_813EA60(struct Sprite *sprite)
+static void sub_813EA60(struct Sprite *sprite)
{
bool32 r6;
s16 r1, r2;
@@ -2370,7 +3058,7 @@ static void InitIntroTorchicAttackAnim(u8 a)
}
}
-void sub_813EBBC(struct Sprite *sprite)
+static void sub_813EBBC(struct Sprite *sprite)
{
if (gUnknown_0203931A != 0)
{
@@ -2390,7 +3078,7 @@ void sub_813EBBC(struct Sprite *sprite)
}
}
-void sub_813EC90(struct Sprite *sprite)
+static void sub_813EC90(struct Sprite *sprite)
{
bool32 r6;
s16 r1, r2;
@@ -2449,7 +3137,7 @@ static void InitIntroMudkipAttackAnim(u8 a)
}
}
-void sub_813EDFC(struct Sprite *sprite)
+static void sub_813EDFC(struct Sprite *sprite)
{
u16 foo;
diff --git a/src/mail.c b/src/mail.c
index 570128095..466a64c9c 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -152,144 +152,144 @@ __attribute__((naked))
void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0x4\n\
- adds r4, r0, 0\n\
- adds r6, r1, 0\n\
- lsls r2, 24\n\
- lsrs r5, r2, 24\n\
- ldr r2, _080F8958 @ =0x02000000\n\
- adds r1, r2, 0\n\
- adds r1, 0xFF\n\
- movs r0, 0x2\n\
- strb r0, [r1]\n\
- adds r0, 0xFE\n\
- adds r1, r2, r0\n\
- movs r0, 0x1\n\
- strb r0, [r1]\n\
- movs r0, 0x82\n\
- lsls r0, 1\n\
- adds r1, r2, r0\n\
- ldr r0, _080F895C @ =sub_80EB3FC\n\
- str r0, [r1]\n\
- movs r0, 0x84\n\
- lsls r0, 1\n\
- adds r1, r2, r0\n\
- ldr r0, _080F8960 @ =ConvertEasyChatWordsToString\n\
- str r0, [r1]\n\
- ldrh r1, [r4, 0x20]\n\
- adds r0, r1, 0\n\
- subs r0, 0x79\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0xB\n\
- bhi _080F8964\n\
- subs r1, 0x79\n\
- adds r0, r2, 0\n\
- adds r0, 0xFA\n\
- strb r1, [r0]\n\
- b _080F896E\n\
- .align 2, 0\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x4\n\
+ adds r4, r0, 0\n\
+ adds r6, r1, 0\n\
+ lsls r2, 24\n\
+ lsrs r5, r2, 24\n\
+ ldr r2, _080F8958 @ =0x02000000\n\
+ adds r1, r2, 0\n\
+ adds r1, 0xFF\n\
+ movs r0, 0x2\n\
+ strb r0, [r1]\n\
+ adds r0, 0xFE\n\
+ adds r1, r2, r0\n\
+ movs r0, 0x1\n\
+ strb r0, [r1]\n\
+ movs r0, 0x82\n\
+ lsls r0, 1\n\
+ adds r1, r2, r0\n\
+ ldr r0, _080F895C @ =sub_80EB3FC\n\
+ str r0, [r1]\n\
+ movs r0, 0x84\n\
+ lsls r0, 1\n\
+ adds r1, r2, r0\n\
+ ldr r0, _080F8960 @ =ConvertEasyChatWordsToString\n\
+ str r0, [r1]\n\
+ ldrh r1, [r4, 0x20]\n\
+ adds r0, r1, 0\n\
+ subs r0, 0x79\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0xB\n\
+ bhi _080F8964\n\
+ subs r1, 0x79\n\
+ adds r0, r2, 0\n\
+ adds r0, 0xFA\n\
+ strb r1, [r0]\n\
+ b _080F896E\n\
+ .align 2, 0\n\
_080F8958: .4byte 0x02000000\n\
_080F895C: .4byte sub_80EB3FC\n\
_080F8960: .4byte ConvertEasyChatWordsToString\n\
_080F8964:\n\
- adds r1, r2, 0\n\
- adds r1, 0xFA\n\
- movs r0, 0\n\
- strb r0, [r1]\n\
- movs r5, 0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0xFA\n\
+ movs r0, 0\n\
+ strb r0, [r1]\n\
+ movs r5, 0\n\
_080F896E:\n\
- ldr r1, _080F8994 @ =0x02000000\n\
- movs r2, 0x80\n\
- lsls r2, 1\n\
- adds r0, r1, r2\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _080F8980\n\
- cmp r0, 0x1\n\
- beq _080F899C\n\
+ ldr r1, _080F8994 @ =0x02000000\n\
+ movs r2, 0x80\n\
+ lsls r2, 1\n\
+ adds r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _080F8980\n\
+ cmp r0, 0x1\n\
+ beq _080F899C\n\
_080F8980:\n\
- movs r0, 0x86\n\
- lsls r0, 1\n\
- adds r2, r1, r0\n\
- adds r0, r1, 0\n\
- adds r0, 0xFA\n\
- ldrb r0, [r0]\n\
- lsls r0, 3\n\
- ldr r1, _080F8998 @ =gUnknown_083E5730\n\
- b _080F89AC\n\
- .align 2, 0\n\
+ movs r0, 0x86\n\
+ lsls r0, 1\n\
+ adds r2, r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r0, 0xFA\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 3\n\
+ ldr r1, _080F8998 @ =gUnknown_083E5730\n\
+ b _080F89AC\n\
+ .align 2, 0\n\
_080F8994: .4byte 0x02000000\n\
_080F8998: .4byte gUnknown_083E5730\n\
_080F899C:\n\
- movs r0, 0x86\n\
- lsls r0, 1\n\
- adds r2, r1, r0\n\
- adds r0, r1, 0\n\
- adds r0, 0xFA\n\
- ldrb r0, [r0]\n\
- lsls r0, 3\n\
- ldr r1, _080F89DC @ =gUnknown_083E57A4\n\
+ movs r0, 0x86\n\
+ lsls r0, 1\n\
+ adds r2, r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r0, 0xFA\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 3\n\
+ ldr r1, _080F89DC @ =gUnknown_083E57A4\n\
_080F89AC:\n\
- adds r0, r1\n\
- str r0, [r2]\n\
- ldrh r0, [r4, 0x1E]\n\
- mov r1, sp\n\
- bl sub_80A2D64\n\
- lsls r0, 16\n\
- ldr r1, _080F89E0 @ =0xffff0000\n\
- adds r0, r1\n\
- movs r1, 0xCD\n\
- lsls r1, 17\n\
- cmp r0, r1\n\
- bhi _080F89F8\n\
- ldr r0, _080F89E4 @ =0x02000000\n\
- adds r1, r0, 0\n\
- adds r1, 0xFA\n\
- ldrb r2, [r1]\n\
- adds r1, r0, 0\n\
- cmp r2, 0x6\n\
- beq _080F89E8\n\
- cmp r2, 0x9\n\
- beq _080F89F0\n\
- b _080F89FA\n\
- .align 2, 0\n\
+ adds r0, r1\n\
+ str r0, [r2]\n\
+ ldrh r0, [r4, 0x1E]\n\
+ mov r1, sp\n\
+ bl sub_80A2D64\n\
+ lsls r0, 16\n\
+ ldr r1, _080F89E0 @ =0xffff0000\n\
+ adds r0, r1\n\
+ movs r1, 0xCD\n\
+ lsls r1, 17\n\
+ cmp r0, r1\n\
+ bhi _080F89F8\n\
+ ldr r0, _080F89E4 @ =0x02000000\n\
+ adds r1, r0, 0\n\
+ adds r1, 0xFA\n\
+ ldrb r2, [r1]\n\
+ adds r1, r0, 0\n\
+ cmp r2, 0x6\n\
+ beq _080F89E8\n\
+ cmp r2, 0x9\n\
+ beq _080F89F0\n\
+ b _080F89FA\n\
+ .align 2, 0\n\
_080F89DC: .4byte gUnknown_083E57A4\n\
_080F89E0: .4byte 0xffff0000\n\
_080F89E4: .4byte 0x02000000\n\
_080F89E8:\n\
- adds r2, r1, 0\n\
- adds r2, 0xFB\n\
- movs r0, 0x1\n\
- b _080F8A00\n\
+ adds r2, r1, 0\n\
+ adds r2, 0xFB\n\
+ movs r0, 0x1\n\
+ b _080F8A00\n\
_080F89F0:\n\
- adds r2, r1, 0\n\
- adds r2, 0xFB\n\
- movs r0, 0x2\n\
- b _080F8A00\n\
+ adds r2, r1, 0\n\
+ adds r2, 0xFB\n\
+ movs r0, 0x2\n\
+ b _080F8A00\n\
_080F89F8:\n\
- ldr r1, _080F8A20 @ =0x02000000\n\
+ ldr r1, _080F8A20 @ =0x02000000\n\
_080F89FA:\n\
- adds r2, r1, 0\n\
- adds r2, 0xFB\n\
- movs r0, 0\n\
+ adds r2, r1, 0\n\
+ adds r2, 0xFB\n\
+ movs r0, 0\n\
_080F8A00:\n\
- strb r0, [r2]\n\
- adds r0, r1, 0\n\
- adds r0, 0xF4\n\
- str r4, [r0]\n\
- subs r0, 0x8\n\
- str r6, [r0]\n\
- adds r0, 0xC\n\
- strb r5, [r0]\n\
- ldr r0, _080F8A24 @ =sub_80F8D50\n\
- bl SetMainCallback2\n\
- add sp, 0x4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ strb r0, [r2]\n\
+ adds r0, r1, 0\n\
+ adds r0, 0xF4\n\
+ str r4, [r0]\n\
+ subs r0, 0x8\n\
+ str r6, [r0]\n\
+ adds r0, 0xC\n\
+ strb r5, [r0]\n\
+ ldr r0, _080F8A24 @ =sub_80F8D50\n\
+ bl SetMainCallback2\n\
+ add sp, 0x4\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080F8A20: .4byte 0x02000000\n\
_080F8A24: .4byte sub_80F8D50\n\
.syntax divided\n");
@@ -514,111 +514,111 @@ __attribute__((naked))
static void sub_80F8DA0(void)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- movs r6, 0\n\
- movs r5, 0\n\
- ldr r2, _080F8E3C @ =0x02000000\n\
- movs r0, 0x86\n\
- lsls r0, 1\n\
- adds r1, r2, r0\n\
- ldr r0, [r1]\n\
- ldrb r0, [r0]\n\
- cmp r5, r0\n\
- bcs _080F8E04\n\
- mov r8, r2\n\
- adds r7, r1, 0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ movs r6, 0\n\
+ movs r5, 0\n\
+ ldr r2, _080F8E3C @ =0x02000000\n\
+ movs r0, 0x86\n\
+ lsls r0, 1\n\
+ adds r1, r2, r0\n\
+ ldr r0, [r1]\n\
+ ldrb r0, [r0]\n\
+ cmp r5, r0\n\
+ bcs _080F8E04\n\
+ mov r8, r2\n\
+ adds r7, r1, 0\n\
_080F8DBE:\n\
- lsls r0, r5, 3\n\
- subs r0, r5\n\
- lsls r0, 2\n\
- subs r0, r5\n\
- add r0, r8\n\
- mov r1, r8\n\
- adds r1, 0xF4\n\
- lsls r2, r6, 1\n\
- ldr r1, [r1]\n\
- adds r1, r2\n\
- ldr r2, [r7]\n\
- ldr r2, [r2, 0x4]\n\
- lsls r4, r5, 2\n\
- adds r2, r4, r2\n\
- ldr r2, [r2]\n\
- lsls r2, 28\n\
- lsrs r2, 30\n\
- movs r3, 0x1\n\
- bl ConvertEasyChatWordsToString\n\
- ldr r1, [r7]\n\
- ldr r0, [r1, 0x4]\n\
- adds r4, r0\n\
- ldr r0, [r4]\n\
- lsls r0, 28\n\
- lsrs r0, 30\n\
- adds r0, r6, r0\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- ldrb r1, [r1]\n\
- cmp r5, r1\n\
- bcc _080F8DBE\n\
+ lsls r0, r5, 3\n\
+ subs r0, r5\n\
+ lsls r0, 2\n\
+ subs r0, r5\n\
+ add r0, r8\n\
+ mov r1, r8\n\
+ adds r1, 0xF4\n\
+ lsls r2, r6, 1\n\
+ ldr r1, [r1]\n\
+ adds r1, r2\n\
+ ldr r2, [r7]\n\
+ ldr r2, [r2, 0x4]\n\
+ lsls r4, r5, 2\n\
+ adds r2, r4, r2\n\
+ ldr r2, [r2]\n\
+ lsls r2, 28\n\
+ lsrs r2, 30\n\
+ movs r3, 0x1\n\
+ bl ConvertEasyChatWordsToString\n\
+ ldr r1, [r7]\n\
+ ldr r0, [r1, 0x4]\n\
+ adds r4, r0\n\
+ ldr r0, [r4]\n\
+ lsls r0, 28\n\
+ lsrs r0, 30\n\
+ adds r0, r6, r0\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ ldrb r1, [r1]\n\
+ cmp r5, r1\n\
+ bcc _080F8DBE\n\
_080F8E04:\n\
- ldr r2, _080F8E40 @ =0x020000d8\n\
- adds r4, r2, 0\n\
- subs r4, 0xD8\n\
- adds r0, r2, 0\n\
- adds r0, 0x28\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- bne _080F8E48\n\
- ldr r1, [r2, 0x1C]\n\
- adds r1, 0x12\n\
- adds r0, r2, 0\n\
- bl sub_80F8D7C\n\
- adds r2, r0, 0\n\
- ldr r1, _080F8E44 @ =gOtherText_From\n\
- bl StringCopy\n\
- ldr r0, _080F8E40 @ =0x020000d8\n\
- bl StringLength\n\
- movs r2, 0x86\n\
- lsls r2, 1\n\
- adds r1, r4, r2\n\
- ldr r1, [r1]\n\
- ldrb r1, [r1, 0x2]\n\
- subs r1, r0\n\
- b _080F8E6A\n\
- .align 2, 0\n\
+ ldr r2, _080F8E40 @ =0x020000d8\n\
+ adds r4, r2, 0\n\
+ subs r4, 0xD8\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x28\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _080F8E48\n\
+ ldr r1, [r2, 0x1C]\n\
+ adds r1, 0x12\n\
+ adds r0, r2, 0\n\
+ bl sub_80F8D7C\n\
+ adds r2, r0, 0\n\
+ ldr r1, _080F8E44 @ =gOtherText_From\n\
+ bl StringCopy\n\
+ ldr r0, _080F8E40 @ =0x020000d8\n\
+ bl StringLength\n\
+ movs r2, 0x86\n\
+ lsls r2, 1\n\
+ adds r1, r4, r2\n\
+ ldr r1, [r1]\n\
+ ldrb r1, [r1, 0x2]\n\
+ subs r1, r0\n\
+ b _080F8E6A\n\
+ .align 2, 0\n\
_080F8E3C: .4byte 0x02000000\n\
_080F8E40: .4byte 0x020000d8\n\
_080F8E44: .4byte gOtherText_From\n\
_080F8E48:\n\
- ldr r1, _080F8E7C @ =gOtherText_From\n\
- adds r0, r2, 0\n\
- bl StringCopy\n\
- adds r2, r0, 0\n\
- adds r0, r4, 0\n\
- adds r0, 0xF4\n\
- ldr r1, [r0]\n\
- adds r1, 0x12\n\
- adds r0, r2, 0\n\
- bl sub_80F8D7C\n\
- movs r1, 0x86\n\
- lsls r1, 1\n\
- adds r0, r4, r1\n\
- ldr r0, [r0]\n\
- ldrb r1, [r0, 0x2]\n\
+ ldr r1, _080F8E7C @ =gOtherText_From\n\
+ adds r0, r2, 0\n\
+ bl StringCopy\n\
+ adds r2, r0, 0\n\
+ adds r0, r4, 0\n\
+ adds r0, 0xF4\n\
+ ldr r1, [r0]\n\
+ adds r1, 0x12\n\
+ adds r0, r2, 0\n\
+ bl sub_80F8D7C\n\
+ movs r1, 0x86\n\
+ lsls r1, 1\n\
+ adds r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r0, 0x2]\n\
_080F8E6A:\n\
- adds r0, r4, 0\n\
- adds r0, 0xF9\n\
- strb r1, [r0]\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ adds r0, r4, 0\n\
+ adds r0, 0xF9\n\
+ strb r1, [r0]\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080F8E7C: .4byte gOtherText_From\n\
.syntax divided\n");
}
diff --git a/src/main_menu.c b/src/main_menu.c
index c586e2b08..f47b3bb47 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -69,7 +69,7 @@ extern const u8 gUnknown_081E7834[];
extern const u8 gUnknown_081E796C[];
extern const u8 gSystemText_NewPara[];
-extern u8 gSpriteAffineAnimTable_81E79AC[];
+extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E79AC[];
extern u8 unk_2000000[];
@@ -1256,7 +1256,7 @@ static void Task_NewGameSpeech30(u8 taskId)
spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID];
gSprites[spriteId].oam.affineMode = 1;
- gSprites[spriteId].affineAnims = (union AffineAnimCmd **)gSpriteAffineAnimTable_81E79AC;
+ gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_81E79AC;
InitSpriteAffineAnim(&gSprites[spriteId]);
StartSpriteAffineAnim(&gSprites[spriteId], 0);
gSprites[spriteId].callback = ShrinkPlayerSprite;
diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c
new file mode 100644
index 000000000..d03042ca5
--- /dev/null
+++ b/src/mauville_old_man.c
@@ -0,0 +1,407 @@
+#include "global.h"
+#include "string_util.h"
+#include "menu.h"
+#include "script.h"
+#include "asm.h"
+#include "rng.h"
+
+extern u16 gScriptResult;
+extern u16 gSpecialVar_0x8004;
+
+extern void sub_80F83F8(void);
+extern void sub_81099CC(void);
+extern void sub_80F83D0(void);
+extern void sub_80F7F80(u8);
+extern u16 sub_80EB8EC(void);
+extern void sub_80F7DC0(void);
+extern u8 gOtherText_Is[];
+extern u8 gOtherText_DontYouAgree[];
+extern u32 gUnknown_083E5388[];
+extern u32 gUnknown_083E53A8[];
+
+extern u16 gUnknown_083E537C[];
+
+void sub_80F7A34(void)
+{
+ u16 i;
+ OldMan *oldMan = &gSaveBlock1.oldMan;
+
+ oldMan->oldMan1.unk_2D94 = 0;
+ oldMan->oldMan1.unk_2DBD = 0;
+
+ for(i = 0; i < 6; i++)
+ oldMan->oldMan1.mauvilleOldMan_ecArray[i] = gUnknown_083E537C[i];
+}
+
+void sub_80F7A6C(void)
+{
+ struct UnkMauvilleOldManStruct *bard = &gSaveBlock1.oldMan.oldMan1;
+
+ bard->unk_2D94 = 1;
+ bard->unk_2D95 = 0;
+}
+
+void sub_80F7A7C(void)
+{
+ sub_80F83F8();
+}
+
+void sub_80F7A88(void)
+{
+ OldMan *oldMan = &gSaveBlock1.oldMan;
+
+ oldMan->oldMan1.unk_2D94 = 4;
+ oldMan->oldMan1.unk_2D95 = 0;
+}
+
+void sub_80F7A98(void)
+{
+ sub_81099CC();
+}
+
+void SetMauvilleOldMan(void)
+{
+ u32 var = ((u16)((gSaveBlock2.playerTrainerId[1] << 8 | gSaveBlock2.playerTrainerId[0])) % 10) / 2;
+
+ switch(var)
+ {
+ case 0:
+ sub_80F7A34();
+ break;
+ case 1:
+ sub_80F7A6C();
+ break;
+ case 2:
+ sub_80F7A98();
+ break;
+ case 3:
+ sub_80F7A7C();
+ break;
+ case 4:
+ sub_80F7A88();
+ break;
+ }
+ sub_80F83D0();
+}
+
+u8 GetCurrentMauvilleOldMan(void)
+{
+ OldMan *oldMan = &gSaveBlock1.oldMan;
+
+ return oldMan->oldMan1.unk_2D94;
+}
+
+void sub_80F7B14(void)
+{
+ gScriptResult = GetCurrentMauvilleOldMan();
+}
+
+void sub_80F7B2C(void)
+{
+ u16 *scriptPtr = &gScriptResult; // why??
+ OldMan *oldMan = &gSaveBlock1.oldMan;
+
+ *scriptPtr = oldMan->oldMan1.unk_2DBD;
+}
+
+void sub_80F7B40(void)
+{
+ u16 i;
+ OldMan *oldMan = &gSaveBlock1.oldMan;
+ //struct UnkMauvilleOldManStruct *oldManStruct = &gSaveBlock1.oldManStruct;
+
+ StringCopy(oldMan->oldMan1.playerName, gSaveBlock2.playerName);
+
+ for(i = 0; i < 4; i++)
+ oldMan->oldMan1.playerTrainerId[i] = gSaveBlock2.playerTrainerId[i];
+
+ for(i = 0; i < 6; i++)
+ oldMan->oldMan1.mauvilleOldMan_ecArray[i] = oldMan->oldMan1.mauvilleOldMan_ecArray2[i];
+
+ oldMan->oldMan1.unk_2DBD = 1;
+}
+
+// too mathy
+__attribute__((naked))
+void sub_80F7BA0(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ ldr r1, _080F7C48 @ =gSaveBlock1 + 0x2D94\n\
+ ldr r0, _080F7C4C @ =gSpecialVar_0x8004\n\
+ ldrh r0, [r0]\n\
+ adds r5, r1, 0\n\
+ adds r5, 0xE\n\
+ cmp r0, 0\n\
+ bne _080F7BB2\n\
+ adds r5, r1, 0x2\n\
+_080F7BB2:\n\
+ ldr r2, _080F7C50 @ =gStringVar4\n\
+ adds r4, r2, 0\n\
+ movs r6, 0\n\
+_080F7BB8:\n\
+ ldrh r1, [r5]\n\
+ adds r5, 0x2\n\
+ adds r0, r2, 0\n\
+ bl sub_80EB3FC\n\
+ adds r2, r0, 0\n\
+ adds r7, r6, 0x1\n\
+ cmp r2, r4\n\
+ beq _080F7BDA\n\
+ movs r1, 0x37\n\
+_080F7BCC:\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _080F7BD4\n\
+ strb r1, [r4]\n\
+_080F7BD4:\n\
+ adds r4, 0x1\n\
+ cmp r2, r4\n\
+ bne _080F7BCC\n\
+_080F7BDA:\n\
+ adds r4, 0x1\n\
+ movs r0, 0\n\
+ strb r0, [r2]\n\
+ adds r2, 0x1\n\
+ ldrh r1, [r5]\n\
+ adds r5, 0x2\n\
+ adds r0, r2, 0\n\
+ bl sub_80EB3FC\n\
+ adds r2, r0, 0\n\
+ cmp r2, r4\n\
+ beq _080F7C02\n\
+ movs r1, 0x37\n\
+_080F7BF4:\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _080F7BFC\n\
+ strb r1, [r4]\n\
+_080F7BFC:\n\
+ adds r4, 0x1\n\
+ cmp r2, r4\n\
+ bne _080F7BF4\n\
+_080F7C02:\n\
+ adds r4, 0x1\n\
+ movs r0, 0xFE\n\
+ strb r0, [r2]\n\
+ adds r2, 0x1\n\
+ ldrh r1, [r5]\n\
+ adds r5, 0x2\n\
+ adds r0, r2, 0\n\
+ bl sub_80EB3FC\n\
+ adds r2, r0, 0\n\
+ cmp r2, r4\n\
+ beq _080F7C2A\n\
+ movs r1, 0x37\n\
+_080F7C1C:\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _080F7C24\n\
+ strb r1, [r4]\n\
+_080F7C24:\n\
+ adds r4, 0x1\n\
+ cmp r2, r4\n\
+ bne _080F7C1C\n\
+_080F7C2A:\n\
+ cmp r6, 0\n\
+ bne _080F7C3A\n\
+ movs r0, 0xFC\n\
+ strb r0, [r2]\n\
+ adds r2, 0x1\n\
+ movs r0, 0xF\n\
+ strb r0, [r2]\n\
+ adds r2, 0x1\n\
+_080F7C3A:\n\
+ lsls r0, r7, 16\n\
+ lsrs r6, r0, 16\n\
+ cmp r6, 0x1\n\
+ bls _080F7BB8\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080F7C48: .4byte gSaveBlock1 + 0x2D94\n\
+_080F7C4C: .4byte gSpecialVar_0x8004\n\
+_080F7C50: .4byte gStringVar4\n\
+ .syntax divided");
+}
+
+void sub_80F7C54(void)
+{
+ sub_80F7F80(gSpecialVar_0x8004);
+ MenuDisplayMessageBox();
+ ScriptContext1_Stop();
+}
+
+void sub_80F7C70(void)
+{
+ u16 *scriptPtr = &gScriptResult; // again??
+ OldMan *oldMan = &gSaveBlock1.oldMan;
+
+ *scriptPtr = oldMan->oldMan1.unk_2D95;
+}
+
+void sub_80F7C84(void)
+{
+ OldMan *oldMan = &gSaveBlock1.oldMan;
+
+ oldMan->oldMan1.unk_2D95 = 1;
+}
+
+void sub_80F7C90(void)
+{
+ u16 var = sub_80EB8EC();
+
+ if(var == 0xFFFF)
+ {
+ gScriptResult = FALSE;
+ }
+ else
+ {
+ sub_80EB3FC(gStringVar1, var);
+ gScriptResult = TRUE;
+ }
+}
+
+void sub_80F7CC8(void)
+{
+ OldMan *oldMan = &gSaveBlock1.oldMan;
+
+ if(oldMan->oldMan1.unk_2D95 == 10)
+ {
+ gScriptResult = FALSE;
+ oldMan->oldMan1.unk_2D95 = 0;
+ }
+ else
+ gScriptResult = TRUE;
+}
+
+// someone fix this
+#ifdef NONMATCHING
+void sub_80F7CF4(void)
+{
+ u8 *stringPtr;
+ OldMan *oldMan = &gSaveBlock1.oldMan;
+
+ if(oldMan->oldMan2.unk1 == 0)
+ sub_80F7DC0();
+
+ if(oldMan->oldMan2.mauvilleOldMan_ecArray[oldMan->oldMan2.unk1] != 0xFFFF) // is not the last element of the array?
+ {
+ int random = (u16)Random();
+ random &= 7;
+ sub_80EB3FC(gStringVar4, oldMan->oldMan2.mauvilleOldMan_ecArray[oldMan->oldMan2.unk1]);
+ stringPtr = StringCopy(gStringVar4, gOtherText_Is);
+ stringPtr = StringCopy(stringPtr, (u8 *)gUnknown_083E5388[random]);
+ StringCopy(stringPtr, gOtherText_DontYouAgree);
+ }
+ else
+ {
+ StringCopy(gStringVar4, (u8 *)gUnknown_083E53A8[oldMan->oldMan2.mauvilleOldMan_ecArray2[oldMan->oldMan2.unk2++]]);
+ }
+ if(!(Random() % 10))
+ oldMan->oldMan2.unk1 = 10;
+ else
+ oldMan->oldMan2.unk1++;
+
+ gScriptResult = TRUE;
+}
+#else
+__attribute__((naked))
+void sub_80F7CF4(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ ldr r5, _080F7D50 @ =gSaveBlock1 + 0x2D94\n\
+ ldrb r0, [r5, 0x1]\n\
+ cmp r0, 0\n\
+ bne _080F7D02\n\
+ bl sub_80F7DC0\n\
+_080F7D02:\n\
+ ldrb r0, [r5, 0x1]\n\
+ lsls r0, 1\n\
+ adds r6, r5, 0x4\n\
+ adds r0, r6\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _080F7D54 @ =0x0000ffff\n\
+ cmp r1, r0\n\
+ beq _080F7D68\n\
+ bl Random\n\
+ adds r4, r0, 0\n\
+ lsls r4, 16\n\
+ lsrs r4, 16\n\
+ movs r0, 0x7\n\
+ ands r4, r0\n\
+ ldr r0, _080F7D58 @ =gStringVar4\n\
+ ldrb r1, [r5, 0x1]\n\
+ lsls r1, 1\n\
+ adds r1, r6\n\
+ ldrh r1, [r1]\n\
+ bl sub_80EB3FC\n\
+ adds r2, r0, 0\n\
+ ldr r1, _080F7D5C @ =gOtherText_Is\n\
+ bl StringCopy\n\
+ adds r2, r0, 0\n\
+ ldr r0, _080F7D60 @ =gUnknown_083E5388\n\
+ lsls r4, 2\n\
+ adds r4, r0\n\
+ ldr r1, [r4]\n\
+ adds r0, r2, 0\n\
+ bl StringCopy\n\
+ adds r2, r0, 0\n\
+ ldr r1, _080F7D64 @ =gOtherText_DontYouAgree\n\
+ bl StringCopy\n\
+ b _080F7D88\n\
+ .align 2, 0\n\
+_080F7D50: .4byte gSaveBlock1 + 0x2D94\n\
+_080F7D54: .4byte 0x0000ffff\n\
+_080F7D58: .4byte gStringVar4\n\
+_080F7D5C: .4byte gOtherText_Is\n\
+_080F7D60: .4byte gUnknown_083E5388\n\
+_080F7D64: .4byte gOtherText_DontYouAgree\n\
+_080F7D68:\n\
+ ldr r0, _080F7DA0 @ =gStringVar4\n\
+ ldr r3, _080F7DA4 @ =gUnknown_083E53A8\n\
+ ldrb r1, [r5, 0x2]\n\
+ adds r2, r1, 0x1\n\
+ strb r2, [r5, 0x2]\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ adds r2, r5, 0\n\
+ adds r2, 0x18\n\
+ adds r1, r2\n\
+ ldrb r1, [r1]\n\
+ lsls r1, 2\n\
+ adds r1, r3\n\
+ ldr r1, [r1]\n\
+ bl StringCopy\n\
+_080F7D88:\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\
+ bne _080F7DA8\n\
+ movs r0, 0xA\n\
+ b _080F7DAC\n\
+ .align 2, 0\n\
+_080F7DA0: .4byte gStringVar4\n\
+_080F7DA4: .4byte gUnknown_083E53A8\n\
+_080F7DA8:\n\
+ ldrb r0, [r5, 0x1]\n\
+ adds r0, 0x1\n\
+_080F7DAC:\n\
+ strb r0, [r5, 0x1]\n\
+ ldr r1, _080F7DBC @ =gScriptResult\n\
+ movs r0, 0x1\n\
+ strh r0, [r1]\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080F7DBC: .4byte gScriptResult\n\
+ .syntax divided");
+}
+#endif
diff --git a/src/menu.c b/src/menu.c
index a4e5d9065..ba98ff057 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -654,7 +654,7 @@ u8 *sub_8072C44(u8 *a1, s32 a2, u8 a3, u8 a4)
return AlignInt2(gMenuWindowPtr, a1, a2, a3, a4);
}
-u8 *sub_8072C74(u8 *a1, u8 *a2, u8 a3, u8 a4)
+u8 *sub_8072C74(u8 *a1, const u8 *a2, u8 a3, u8 a4)
{
return AlignString(gMenuWindowPtr, a1, a2, a3, a4);
}
diff --git a/src/naming_screen.c b/src/naming_screen.c
index 1c718b3ca..568fdf092 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -11,10 +11,22 @@
#include "text.h"
#include "trig.h"
-struct UnknownStruct2
+extern u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8);
+extern u8 CreateMonIcon();
+extern void sub_809D51C(void);
+extern void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8);
+
+enum
+{
+ NAMING_SCREEN_TEMPLATE_PLAYER_NAME,
+ NAMING_SCREEN_TEMPLATE_BOX_NAME,
+ NAMING_SCREEN_TEMPLATE_MON_NAME,
+};
+
+struct NamingScreenTemplate
{
u8 unk0;
- u8 unk1;
+ u8 maxChars;
u8 unk2;
u8 unk3;
u8 unk4; //mode?
@@ -24,36 +36,29 @@ struct UnknownStruct2
const u8 *title;
};
-struct UnknownStruct1
+struct NamingScreenData
{
- u8 state; //state
- u8 mode;
+ u8 state;
+ u8 templateNum;
u16 unk2;
- u16 unk4;
- u16 unk6;
+ u16 bg1vOffset;
+ u16 bg2vOffset;
u16 unk8;
u16 unkA;
u8 unkC;
u8 unkD;
- u8 currentPage; //page?
- u8 cursorSpriteId; //spriteId
+ u8 currentPage;
+ u8 cursorSpriteId;
u8 unk10;
u8 textBuffer[0x10];
u8 filler21[0x13];
- /*0x34*/ const struct UnknownStruct2 *unk34;
- /*0x38*/ u8 *nameBuffer;
+ const struct NamingScreenTemplate *template;
+ u8 *destBuffer;
u16 unk3C; //savedKeyRepeatStartDelay
u16 unk3E;
u16 unk40;
u32 unk44;
- /*0x48*/ MainCallback returnCallback;
-};
-
-enum
-{
- NAMING_SCREEN_MODE_PLAYER_NAME,
- NAMING_SCREEN_MODE_BOX_NAME,
- NAMING_SCREEN_MODE_MON_NAME,
+ MainCallback returnCallback;
};
enum
@@ -67,7 +72,7 @@ extern u16 gKeyRepeatStartDelay;
extern u8 unk_2000000[];
-#define EWRAM_000000 (*(struct UnknownStruct1 *)(unk_2000000))
+#define namingScreenData (*(struct NamingScreenData *)(unk_2000000))
const u32 gSpriteImage_83CE094[] = INCBIN_U32("graphics/naming_screen/pc_icon/0.4bpp");
const u32 gSpriteImage_83CE154[] = INCBIN_U32("graphics/naming_screen/pc_icon/1.4bpp");
@@ -75,11 +80,10 @@ const u32 gSpriteImage_83CE154[] = INCBIN_U32("graphics/naming_screen/pc_icon/1.
//Some unused pointer, perhaps.
asm(".section .rodata\n\
@ XXX: what is this?\n\
- .align 2\n\
- .4byte 0x2000000\n");
+ .align 2\n\
+ .4byte 0x2000000\n");
extern u16 *const gUnknown_083CE28C[];
-extern const struct UnknownStruct2 *const gUnknown_083CE398[];
extern const struct SubspriteTable gSubspriteTables_83CE558[];
extern const struct SubspriteTable gSubspriteTables_83CE560[];
extern const struct SubspriteTable gSubspriteTables_83CE578[];
@@ -93,92 +97,129 @@ extern const struct SpriteTemplate gSpriteTemplate_83CE640;
extern const struct SpriteTemplate gSpriteTemplate_83CE658;
extern const struct SpriteTemplate gSpriteTemplate_83CE670;
extern const struct SpriteTemplate gSpriteTemplate_83CE688;
+extern const struct SpriteSheet gUnknown_083CE6A0[];
+extern const struct SpritePalette gUnknown_083CE708[];
+extern const u8 gOtherText_SentToPC[];
+extern const u8 gNamingScreenMenu_Gfx[];
+extern u16 gMenuMessageBoxContentTileOffset;
+extern const u16 gNamingScreenPalettes[];
+extern const u16 gUnknown_083CE748[];
+extern const u16 gUnknown_083CEBF8[];
+extern const u16 gUnknown_083CF0A8[];
+extern const u16 gUnknown_08E86258[];
+extern const u8 gSpeciesNames[][11];
+extern const u8 OtherText_YourName[];
+extern const u8 OtherText_BoxName[];
+extern const u8 OtherText_PokeName[];
+
+static void C2_NamingScreen(void);
+static void sub_80B5AA0(void);
+static void StoreNamingScreenParameters(u8, u8 *, u16, u16, u32, MainCallback);
+static void NamingScreen_TurnOffScreen(void);
+static void NamingScreen_Init(void);
+static void NamingScreen_ClearVram(void);
+static void NamingScreen_ClearOam(void);
+static void NamingScreen_SetUpVideoRegs(void);
+static void NamingScreen_SetUpWindow(void);
+static void NamingScreen_ResetObjects(void);
+static void sub_80B5DFC(void);
+static void sub_80B5E20(void);
+static void sub_80B5E3C(void);
+static void NamingScreen_InitDisplayMode(void);
+static void Task_DoNothing(u8);
+static void sub_80B7558(void);
+static void sub_80B753C(void);
+static void sub_80B7680(void);
+static void sub_80B75C4(void);
+static void sub_80B7794(void);
+static void sub_80B78A8(void);
+static void sub_80B7960(void);
+static void CursorInit(void);
+static void sub_80B6A80(void);
+static void sub_80B6CA8(void);
+static void sub_80B6D04(void);
+static void sub_80B6E44(void);
+static void InputInit(void);
+static void sub_80B6438(void);
+static void sub_80B5E50(void);
+static void Task_NamingScreenMain(u8);
+static void SetInputState(u8);
+static void sub_80B68D8(u8);
+static bool8 HandleKeyboardEvent(void);
+static bool8 IsCursorAnimFinished(void);
+static void MoveCursorToOKButton(void);
+static void sub_80B6B14(void);
+static void StartPageSwapAnim(void);
+static void sub_80B6888(u8);
+static void sub_80B6460(u8, u8, u8);
+static bool8 IsPageSwapAnimNotInProgress(void);
+static void sub_80B7614(void);
+static void GetCursorPos(s16 *, s16 *);
+static void SetCursorPos(s16, s16);
+static void sub_80B77F8(void);
+static void sub_80B74B0(void);
+static void DisplaySentToPCMessage(void);
+static u8 GetKeyRoleAtCursorPos(void);
+static u8 sub_80B61C8(void);
+static void DeleteTextCharacter(void);
+static void sub_80B7090(void);
+static u8 GetInputEvent(void);
+static bool8 sub_80B7004(void);
+static void sub_80B6914(void);
+static void Task_HandlePageSwapAnim(u8);
+static void sub_80B6C48(u8, struct Sprite *, struct Sprite *);
+static u8 GetTextCaretPosition(void);
+static u8 GetCharAtKeyboardPos(s16, s16);
+static bool8 sub_80B7104(void);
+static bool8 sub_80B713C(void);
+static void AddTextCharacter(u8);
+static bool8 sub_80B7198(u8);
+static bool8 sub_80B7264(u8);
+static void sub_80B7370(u8, u8);
+static void sub_80B73CC(u8, u8);
+static bool8 sub_80B71E4(u8);
+static void sub_80B7474(u8, u8);
+static void sub_80B72A4(u8, u8);
+static bool8 sub_80B720C(u8);
+static void sub_80B7568(void);
+static void sub_80B75B0(void);
+static void sub_80B7698(u16 *, const u16 *);
+static void sub_80B76E0();
+static void nullsub_20(u8, u8);
+static void PrintKeyboardCharacters(u8);
-void C2_NamingScreen(void);
-void sub_80B5AA0(void);
-//void AddNamingScreenTask();
-void AddNamingScreenTask(u8, u8 *, u16, u16, u32, MainCallback);
-void NamingScreen_TurnOffScreen(void);
-void NamingScreen_Init(void);
-void NamingScreen_ClearVram(void);
-void NamingScreen_ClearOam(void);
-void NamingScreen_SetUpVideoRegs(void);
-void sub_80B5DC8(void);
-void NamingScreen_ResetObjects(void);
-void sub_80B5DFC(void);
-void sub_80B5E20(void);
-void sub_80B5E3C(void);
-void sub_80B5C04(void);
-void NamingScreenDummyTask(u8);
-void sub_80B7558(void);
-void sub_80B753C(void);
-void sub_80B7680(void);
-void sub_80B75C4(void);
-void sub_80B7794(void);
-void sub_80B78A8(void);
-void sub_80B7960(void);
-void sub_80B6774(void);
-void sub_80B6A80(void);
-void sub_80B6CA8(void);
-void sub_80B6D04(void);
-void sub_80B6E44(void);
-void InitInput(void);
-void sub_80B6438(void);
-void sub_80B5E50(void);
-void sub_80B5E70(u8);
-void SetInputState(u8);
-void sub_80B68D8(u8);
-u8 sub_80B60B8(void);
-bool8 sub_80B6938(void);
-void sub_80B6878(void);
-void sub_80B6B14(void);
-void sub_80B65F0(void);
-void sub_80B6888(u8);
-void sub_80B6460(u8, u8, u8);
-bool8 sub_80B6610(void);
-void sub_80B7614(void);
-void get_cursor_pos(s16 *, s16 *);
-void set_cursor_pos(s16, s16);
-void sub_80B77F8(void);
-void sub_80B74B0(void);
-void sub_80B74FC(void);
-u8 sub_80B6958(void);
-u8 sub_80B61C8(void);
-void sub_80B6FBC(void);
-void sub_80B7090(void);
-u8 GetInputPressedButton(void);
-u8 sub_80B7004(void);
-void sub_80B6914(void);
-void Task_HandleInput(u8);
-void HandleDpadMovement(struct Task *);
-void sub_80B64D4(u8);
-void sub_80B65AC(u8);
-void sub_80B65D4(struct Task *, u8, u8);
-u16 sub_80B654C(u8);
-extern void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8);
-void sub_80B6630(u8);
-void sub_80B6C48(u8, struct Sprite *, struct Sprite *);
-u8 sub_80B6F44(void);
-extern u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8);
-extern u8 CreateMonIcon();
-extern void sub_809D51C(void);
-u8 sub_80B7768(s16, s16);
-u8 sub_80B7104(void);
-u8 sub_80B713C(void);
-void sub_80B7174(u8);
+enum
+{
+ MAIN_STATE_BEGIN_FADE_IN,
+ MAIN_STATE_WAIT_FADE_IN,
+ MAIN_STATE_HANDLE_INPUT,
+ MAIN_STATE_MOVE_TO_OK_BUTTON,
+ MAIN_STATE_START_PAGE_SWAP,
+ MAIN_STATE_WAIT_PAGE_SWAP,
+ MAIN_STATE_6,
+ MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE,
+ MAIN_STATE_BEGIN_FADE_OUT,
+};
-#define NAMING_SCREEN_A_BUTTON 5
-#define NAMING_SCREEN_B_BUTTON 6
-#define NAMING_SCREEN_SELECT_BUTTON 8
-#define NAMING_SCREEN_START_BUTTON 9
+enum
+{
+ INPUT_STATE_DISABLED,
+ INPUT_STATE_ENABLED,
+};
+
+#define KBEVENT_NONE 0
+#define KBEVENT_PRESSED_A 5
+#define KBEVENT_PRESSED_B 6
+#define KBEVENT_PRESSED_SELECT 8
+#define KBEVENT_PRESSED_START 9
-void DoNamingScreen(u8 mode, u8 *nameBuffer, u16 c, u16 d, u32 e, MainCallback returnCallback)
+void DoNamingScreen(u8 templateNum, u8 *destBuffer, u16 c, u16 d, u32 e, MainCallback returnCallback)
{
- AddNamingScreenTask(mode, nameBuffer, c, d, e, returnCallback);
+ StoreNamingScreenParameters(templateNum, destBuffer, c, d, e, returnCallback);
SetMainCallback2(C2_NamingScreen);
}
-void C2_NamingScreen(void)
+static void C2_NamingScreen(void)
{
switch (gMain.state)
{
@@ -200,7 +241,7 @@ void C2_NamingScreen(void)
gMain.state++;
break;
case 4:
- sub_80B5DC8();
+ NamingScreen_SetUpWindow();
gMain.state++;
break;
case 5:
@@ -214,13 +255,13 @@ void C2_NamingScreen(void)
case 7:
sub_80B5E20();
sub_80B5E3C();
- sub_80B5C04();
+ NamingScreen_InitDisplayMode();
SetMainCallback2(sub_80B5AA0);
break;
}
}
-void sub_80B5AA0(void)
+static void sub_80B5AA0(void)
{
RunTasks();
AnimateSprites();
@@ -228,65 +269,66 @@ void sub_80B5AA0(void)
UpdatePaletteFade();
}
-void sub_80B5AB8(void)
+static void VBlankCB_NamingScreen(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
- REG_BG1VOFS = EWRAM_000000.unk4;
- REG_BG2VOFS = EWRAM_000000.unk6;
+ REG_BG1VOFS = namingScreenData.bg1vOffset;
+ REG_BG2VOFS = namingScreenData.bg2vOffset;
REG_BG1CNT &= 0xFFFC;
- REG_BG1CNT |= EWRAM_000000.unk8;
+ REG_BG1CNT |= namingScreenData.unk8;
REG_BG2CNT &= 0xFFFC;
- REG_BG2CNT |= EWRAM_000000.unkA;
+ REG_BG2CNT |= namingScreenData.unkA;
}
-void AddNamingScreenTask(u8 mode, u8 *nameBuffer, u16 c, u16 d, u32 e, MainCallback returnCallback)
+static void StoreNamingScreenParameters(u8 templateNum, u8 *destBuffer, u16 c, u16 d, u32 e, MainCallback returnCallback)
{
struct Task *task;
- task = &gTasks[CreateTask(NamingScreenDummyTask, 0xFF)];
- task->data[0] = mode;
+ //Create a task that does nothing, and use it as a temporary space to store parameters
+ task = &gTasks[CreateTask(Task_DoNothing, 0xFF)];
+ task->data[0] = templateNum;
task->data[1] = c;
task->data[2] = d;
task->data[3] = e >> 16;
task->data[4] = e;
- StoreWordInTwoHalfwords(&task->data[5], (u32)nameBuffer);
+ StoreWordInTwoHalfwords(&task->data[5], (u32)destBuffer);
StoreWordInTwoHalfwords(&task->data[7], (u32)returnCallback);
}
-void GetNamingScreenParameters(void)
+static void GetNamingScreenParameters(void)
{
u8 taskId;
struct Task *task;
- taskId = FindTaskIdByFunc(NamingScreenDummyTask);
+ taskId = FindTaskIdByFunc(Task_DoNothing);
task = &gTasks[taskId];
- EWRAM_000000.mode = task->data[0];
- EWRAM_000000.unk3E = task->data[1];
- EWRAM_000000.unk40 = task->data[2];
- EWRAM_000000.unk44 = (task->data[3] << 16) | (u16)task->data[4];
- LoadWordFromTwoHalfwords(&task->data[5], (u32 *)&EWRAM_000000.nameBuffer);
- LoadWordFromTwoHalfwords(&task->data[7], (u32 *)&EWRAM_000000.returnCallback);
+ namingScreenData.templateNum = task->data[0];
+ namingScreenData.unk3E = task->data[1];
+ namingScreenData.unk40 = task->data[2];
+ namingScreenData.unk44 = (task->data[3] << 16) | (u16)task->data[4];
+ LoadWordFromTwoHalfwords(&task->data[5], (u32 *)&namingScreenData.destBuffer);
+ LoadWordFromTwoHalfwords(&task->data[7], (u32 *)&namingScreenData.returnCallback);
DestroyTask(taskId);
}
-void NamingScreenDummyTask(u8 taskId)
+static void Task_DoNothing(u8 taskId)
{
}
-void NamingScreen_TurnOffScreen(void)
+static void NamingScreen_TurnOffScreen(void)
{
SetVBlankCallback(NULL);
SetHBlankCallback(NULL);
REG_DISPCNT = 0;
}
-void sub_80B5C04(void)
+static void NamingScreen_InitDisplayMode(void)
{
u16 savedIme;
- SetVBlankCallback(sub_80B5AB8);
+ SetVBlankCallback(VBlankCB_NamingScreen);
savedIme = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
@@ -295,7 +337,7 @@ void sub_80B5C04(void)
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON;
}
-void NamingScreen_ClearVram(void)
+static void NamingScreen_ClearVram(void)
{
u8 *addr = (void *)VRAM;
u32 size = 0x10000;
@@ -313,12 +355,12 @@ void NamingScreen_ClearVram(void)
}
}
-void NamingScreen_ClearOam(void)
+static void NamingScreen_ClearOam(void)
{
DmaClear16(3, (void *)OAM, 0x400);
}
-void NamingScreen_SetUpVideoRegs(void)
+static void NamingScreen_SetUpVideoRegs(void)
{
REG_BG0CNT = 0;
REG_BG1CNT = 0;
@@ -340,33 +382,35 @@ void NamingScreen_SetUpVideoRegs(void)
REG_BLDALPHA = 0x80C;
}
-void NamingScreen_Init(void)
+static const struct NamingScreenTemplate *const sNamingScreenTemplates[]; //forward declaration
+
+static void NamingScreen_Init(void)
{
GetNamingScreenParameters();
- EWRAM_000000.state = 0;
- EWRAM_000000.unk4 = 0;
- EWRAM_000000.unk6 = 0;
- EWRAM_000000.unk8 = 1;
- EWRAM_000000.unkA = 2;
- EWRAM_000000.unkC = 0;
- EWRAM_000000.unkD = 1;
- EWRAM_000000.unk34 = gUnknown_083CE398[EWRAM_000000.mode];
- EWRAM_000000.currentPage = EWRAM_000000.unk34->unk4;
- EWRAM_000000.unk2 = 14 - EWRAM_000000.unk34->unk1 / 2;
- EWRAM_000000.unk3C = gKeyRepeatStartDelay;
- memset(EWRAM_000000.textBuffer, 0xFF, 0x10);
- if (EWRAM_000000.unk34->unk0 != 0)
- StringCopy(EWRAM_000000.textBuffer, EWRAM_000000.nameBuffer);
+ namingScreenData.state = 0;
+ namingScreenData.bg1vOffset = 0;
+ namingScreenData.bg2vOffset = 0;
+ namingScreenData.unk8 = 1;
+ namingScreenData.unkA = 2;
+ namingScreenData.unkC = 0;
+ namingScreenData.unkD = 1;
+ namingScreenData.template = sNamingScreenTemplates[namingScreenData.templateNum];
+ namingScreenData.currentPage = namingScreenData.template->unk4;
+ namingScreenData.unk2 = 14 - namingScreenData.template->maxChars / 2;
+ namingScreenData.unk3C = gKeyRepeatStartDelay;
+ memset(namingScreenData.textBuffer, 0xFF, 0x10);
+ if (namingScreenData.template->unk0 != 0)
+ StringCopy(namingScreenData.textBuffer, namingScreenData.destBuffer);
gKeyRepeatStartDelay = 16;
}
-void sub_80B5DC8(void)
+static void NamingScreen_SetUpWindow(void)
{
SetUpWindowConfig(&gWindowConfig_81E6E88);
InitMenuWindow(&gWindowConfig_81E6E88);
}
-void NamingScreen_ResetObjects(void)
+static void NamingScreen_ResetObjects(void)
{
ResetPaletteFade();
ResetSpriteData();
@@ -374,7 +418,7 @@ void NamingScreen_ResetObjects(void)
ResetTasks();
}
-void sub_80B5DFC(void)
+static void sub_80B5DFC(void)
{
sub_80B7558();
sub_80B753C();
@@ -385,257 +429,272 @@ void sub_80B5DFC(void)
sub_80B7960();
}
-void sub_80B5E20(void)
+static void sub_80B5E20(void)
{
- sub_80B6774();
+ CursorInit();
sub_80B6A80();
sub_80B6CA8();
sub_80B6D04();
sub_80B6E44();
}
-void sub_80B5E3C(void)
+static void sub_80B5E3C(void)
{
- InitInput();
+ InputInit();
sub_80B6438();
sub_80B5E50();
}
-void sub_80B5E50(void)
+//--------------------------------------------------
+// Naming screen main
+//--------------------------------------------------
+
+static bool8 MainState_BeginFadeIn(struct Task *);
+static bool8 MainState_WaitFadeIn(struct Task *);
+static bool8 MainState_HandleInput(struct Task *);
+static bool8 MainState_MoveToOKButton(struct Task *);
+static bool8 MainState_StartPageSwap(struct Task *);
+static bool8 MainState_WaitPageSwap(struct Task *);
+static bool8 MainState_6(struct Task *);
+static bool8 MainState_UpdateSentToPCMessage(struct Task *);
+static bool8 MainState_BeginFadeInOut(struct Task *);
+static bool8 MainState_WaitFadeOutAndExit(struct Task *);
+
+static bool8 (*const sMainStateFuncs[])(struct Task *) =
+{
+ MainState_BeginFadeIn,
+ MainState_WaitFadeIn,
+ MainState_HandleInput,
+ MainState_MoveToOKButton,
+ MainState_StartPageSwap,
+ MainState_WaitPageSwap,
+ MainState_6,
+ MainState_UpdateSentToPCMessage,
+ MainState_BeginFadeInOut,
+ MainState_WaitFadeOutAndExit,
+};
+
+static void sub_80B5E50(void)
{
u8 taskId;
- taskId = CreateTask(sub_80B5E70, 2);
- sub_80B5E70(taskId);
+ taskId = CreateTask(Task_NamingScreenMain, 2);
+ Task_NamingScreenMain(taskId);
}
-//
-
-u8 sub_80B5EA8(struct Task *);
-u8 sub_80B5ED0(struct Task *);
-u8 sub_80B5F00(struct Task *);
-u8 sub_80B5F10(struct Task *);
-u8 sub_80B5F38(struct Task *);
-u8 sub_80B5F70(struct Task *);
-u8 pokemon_store(struct Task *);
-u8 sub_80B604C(struct Task *);
-u8 sub_80B606C(struct Task *);
-u8 sub_80B6094(struct Task *);
-
-static u8 (*const gUnknown_083CE218[])(struct Task *) =
-{
- sub_80B5EA8,
- sub_80B5ED0,
- sub_80B5F00,
- sub_80B5F10,
- sub_80B5F38,
- sub_80B5F70,
- pokemon_store,
- sub_80B604C,
- sub_80B606C,
- sub_80B6094,
-};
-
-void sub_80B5E70(u8 taskId)
+static void Task_NamingScreenMain(u8 taskId)
{
- while (gUnknown_083CE218[EWRAM_000000.state](&gTasks[taskId]) != 0)
+ while (sMainStateFuncs[namingScreenData.state](&gTasks[taskId]) != 0)
;
}
-u8 sub_80B5EA8(struct Task *task)
+static bool8 MainState_BeginFadeIn(struct Task *task)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- EWRAM_000000.state++;
+ namingScreenData.state++;
return 0;
}
-u8 sub_80B5ED0(struct Task *task)
+static bool8 MainState_WaitFadeIn(struct Task *task)
{
if (!gPaletteFade.active)
{
- SetInputState(1);
+ SetInputState(INPUT_STATE_ENABLED);
sub_80B68D8(1);
- EWRAM_000000.state++;
+ namingScreenData.state++;
}
- return 0;
+ return FALSE;
}
-u8 sub_80B5F00(struct Task *task)
+static bool8 MainState_HandleInput(struct Task *task)
{
- return sub_80B60B8();
+ return HandleKeyboardEvent();
}
-u8 sub_80B5F10(struct Task *task)
+static bool8 MainState_MoveToOKButton(struct Task *task)
{
- if (sub_80B6938() != 0)
+ if (IsCursorAnimFinished())
{
- SetInputState(1);
- sub_80B6878();
- EWRAM_000000.state = 2;
+ SetInputState(INPUT_STATE_ENABLED);
+ MoveCursorToOKButton();
+ namingScreenData.state = MAIN_STATE_HANDLE_INPUT;
}
- return 0;
+ return FALSE;
}
-u8 sub_80B5F38(struct Task *task)
+static bool8 MainState_StartPageSwap(struct Task *task)
{
- SetInputState(0);
+ SetInputState(INPUT_STATE_DISABLED);
sub_80B6B14();
- sub_80B65F0();
+ StartPageSwapAnim();
sub_80B6888(1);
sub_80B6460(0, 0, 1);
PlaySE(SE_WIN_OPEN);
- EWRAM_000000.state = 5;
- return 0;
+ namingScreenData.state = MAIN_STATE_WAIT_PAGE_SWAP;
+ return FALSE;
}
-u8 sub_80B5F70(struct Task *task)
+static bool8 MainState_WaitPageSwap(struct Task *task)
{
s16 cursorX;
s16 cursorY;
- if (sub_80B6610())
+ if (IsPageSwapAnimNotInProgress())
{
- EWRAM_000000.state = 2;
- EWRAM_000000.currentPage++;
- EWRAM_000000.currentPage %= 3;
+ namingScreenData.state = MAIN_STATE_HANDLE_INPUT;
+ namingScreenData.currentPage++;
+ namingScreenData.currentPage %= 3;
sub_80B7614();
sub_80B77F8();
- SetInputState(1);
- get_cursor_pos(&cursorX, &cursorY);
- if (EWRAM_000000.currentPage == PAGE_OTHERS && (cursorX == 6 || cursorX == 7))
+ SetInputState(INPUT_STATE_ENABLED);
+ GetCursorPos(&cursorX, &cursorY);
+ if (namingScreenData.currentPage == PAGE_OTHERS && (cursorX == 6 || cursorX == 7))
cursorX = 5;
- set_cursor_pos(cursorX, cursorY);
+ SetCursorPos(cursorX, cursorY);
sub_80B6888(0);
}
- return 0;
+ return FALSE;
}
-u8 pokemon_store(struct Task *task)
+static bool8 MainState_6(struct Task *task)
{
sub_80B74B0();
- SetInputState(0);
+ SetInputState(INPUT_STATE_DISABLED);
sub_80B68D8(0);
sub_80B6460(3, 0, 1);
- gKeyRepeatStartDelay = EWRAM_000000.unk3C;
- if (EWRAM_000000.mode == NAMING_SCREEN_MODE_MON_NAME
- && CalculatePlayerPartyCount() > 5)
+ gKeyRepeatStartDelay = namingScreenData.unk3C;
+ if (namingScreenData.templateNum == NAMING_SCREEN_TEMPLATE_MON_NAME
+ && CalculatePlayerPartyCount() >= 6)
{
- sub_80B74FC();
- EWRAM_000000.state = 7;
- return 0;
+ DisplaySentToPCMessage();
+ namingScreenData.state = MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE;
+ return FALSE;
}
else
{
- EWRAM_000000.state = 8;
- return 1;
+ namingScreenData.state = MAIN_STATE_BEGIN_FADE_OUT;
+ return TRUE; //Exit the naming screen
}
}
-u8 sub_80B604C(struct Task *task)
+static bool8 MainState_UpdateSentToPCMessage(struct Task *task)
{
if (MenuUpdateWindowText())
- EWRAM_000000.state++;
- return 0;
+ namingScreenData.state++;
+ return FALSE;
}
-u8 sub_80B606C(struct Task *task)
+static bool8 MainState_BeginFadeInOut(struct Task *task)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- EWRAM_000000.state++;
- return 0;
+ namingScreenData.state++;
+ return FALSE;
}
-u8 sub_80B6094(struct Task *task)
+static bool8 MainState_WaitFadeOutAndExit(struct Task *task)
{
if (!gPaletteFade.active)
- SetMainCallback2(EWRAM_000000.returnCallback);
- return 0;
+ SetMainCallback2(namingScreenData.returnCallback);
+ return FALSE;
}
-u8 sub_80B6108(u8);
-u8 sub_80B6148(u8);
-u8 sub_80B6170(u8);
-u8 sub_80B6194(u8);
+//--------------------------------------------------
+// Keyboard handling
+//--------------------------------------------------
-static u8 (*const gUnknown_083CE240[])(u8) =
+enum
{
- sub_80B6108,
- sub_80B6148,
- sub_80B6170,
- sub_80B6194,
+ KEY_ROLE_CHAR,
+ KEY_ROLE_PAGE,
+ KEY_ROLE_BACKSPACE,
+ KEY_ROLE_OK,
};
-u8 sub_80B60B8(void)
+
+static bool8 KeyboardKeyHandler_Character(u8);
+static bool8 KeyboardKeyHandler_Page(u8);
+static bool8 KeyboardKeyHandler_Backspace(u8);
+static bool8 KeyboardKeyHandler_OK(u8);
+
+static bool8 (*const sKeyboardKeyHandlers[])(u8) =
{
- u8 button = GetInputPressedButton();
- u8 r0 = sub_80B6958();
+ KeyboardKeyHandler_Character,
+ KeyboardKeyHandler_Page,
+ KeyboardKeyHandler_Backspace,
+ KeyboardKeyHandler_OK,
+};
+
+static bool8 HandleKeyboardEvent(void)
+{
+ u8 event = GetInputEvent();
+ u8 keyRole = GetKeyRoleAtCursorPos();
- if (button == 8)
+ if (event == KBEVENT_PRESSED_SELECT)
return sub_80B61C8();
- else if (button == 6)
+ else if (event == KBEVENT_PRESSED_B)
{
- sub_80B6FBC();
- return 0;
+ DeleteTextCharacter();
+ return FALSE;
}
- else if (button == 7)
+ else if (event == 7)
{
sub_80B7090();
- return 0;
+ return FALSE;
}
- return gUnknown_083CE240[r0](button);
+ return sKeyboardKeyHandlers[keyRole](event);
}
-u8 sub_80B6108(u8 a)
+static bool8 KeyboardKeyHandler_Character(u8 event)
{
sub_80B6460(3, 0, 0);
- if (a == 5)
+ if (event == KBEVENT_PRESSED_A)
{
u8 var = sub_80B7004();
sub_80B6914();
- if (var != 0)
+ if (var)
{
- SetInputState(0);
- EWRAM_000000.state = 3;
+ SetInputState(INPUT_STATE_DISABLED);
+ namingScreenData.state = MAIN_STATE_MOVE_TO_OK_BUTTON;
}
}
- return 0;
+ return FALSE;
}
-u8 sub_80B6148(u8 a)
+static bool8 KeyboardKeyHandler_Page(u8 event)
{
sub_80B6460(0, 1, 0);
- if (a == 5)
+ if (event == KBEVENT_PRESSED_A)
return sub_80B61C8();
else
- return 0;
+ return FALSE;
}
-u8 sub_80B6170(u8 a)
+static bool8 KeyboardKeyHandler_Backspace(u8 event)
{
sub_80B6460(1, 1, 0);
- if (a == 5)
- sub_80B6FBC();
- return 0;
+ if (event == KBEVENT_PRESSED_A)
+ DeleteTextCharacter();
+ return FALSE;
}
-u8 sub_80B6194(u8 a)
+static bool8 KeyboardKeyHandler_OK(u8 event)
{
sub_80B6460(2, 1, 0);
- if (a == 5)
+ if (event == KBEVENT_PRESSED_A)
{
PlaySE(SE_SELECT);
- EWRAM_000000.state = 6;
- return 1;
+ namingScreenData.state = MAIN_STATE_6;
+ return TRUE;
}
else
- return 0;
+ return FALSE;
}
-u8 sub_80B61C8(void)
+static bool8 sub_80B61C8(void)
{
- EWRAM_000000.state = 4;
- return 1;
+ namingScreenData.state = MAIN_STATE_START_PAGE_SWAP;
+ return TRUE;
}
//--------------------------------------------------
@@ -650,69 +709,72 @@ enum
};
#define tState data[0]
-#define tPressedButton data[1]
+#define tKeyboardEvent data[1]
#define tKbFunctionKey data[2]
-void InitInput(void)
+static void InputState_Disabled(struct Task *);
+static void InputState_Enabled(struct Task *);
+
+static void (*const sInputStateFuncs[])(struct Task *) =
+{
+ InputState_Disabled,
+ InputState_Enabled,
+};
+
+static void Task_HandleInput(u8);
+static void HandleDpadMovement(struct Task *);
+
+static void InputInit(void)
{
CreateTask(Task_HandleInput, 1);
}
-u8 GetInputPressedButton(void)
+static u8 GetInputEvent(void)
{
u8 taskId = FindTaskIdByFunc(Task_HandleInput);
- return gTasks[taskId].tPressedButton;
+ return gTasks[taskId].tKeyboardEvent;
}
-void SetInputState(u8 state)
+static void SetInputState(u8 state)
{
u8 taskId = FindTaskIdByFunc(Task_HandleInput);
gTasks[taskId].tState = state;
}
-static void sub_80B626C(struct Task *);
-static void sub_80B6274(struct Task *);
-
-static void (*const sInputStateHandlers[])(struct Task *) =
-{
- sub_80B626C,
- sub_80B6274,
-};
-
-void Task_HandleInput(u8 taskId)
+static void Task_HandleInput(u8 taskId)
{
- sInputStateHandlers[gTasks[taskId].tState](&gTasks[taskId]);
+ sInputStateFuncs[gTasks[taskId].tState](&gTasks[taskId]);
}
-static void sub_80B626C(struct Task *task)
+static void InputState_Disabled(struct Task *task)
{
- task->tPressedButton = 0;
+ task->tKeyboardEvent = 0;
}
-static void sub_80B6274(struct Task *task)
+static void InputState_Enabled(struct Task *task)
{
- task->tPressedButton = 0;
+ task->tKeyboardEvent = 0;
if (gMain.newKeys & A_BUTTON)
{
- task->tPressedButton = 5;
+ task->tKeyboardEvent = KBEVENT_PRESSED_A;
return;
}
if (gMain.newKeys & B_BUTTON)
{
- task->tPressedButton = 6;
+ task->tKeyboardEvent = KBEVENT_PRESSED_B;
return;
}
if (gMain.newKeys & SELECT_BUTTON)
{
- task->tPressedButton = 8;
+ task->tKeyboardEvent = KBEVENT_PRESSED_SELECT;
return;
}
if (gMain.newKeys & START_BUTTON)
{
- task->tPressedButton = 9;
- sub_80B6878();
+ task->tKeyboardEvent = KBEVENT_PRESSED_START;
+ MoveCursorToOKButton();
return;
}
HandleDpadMovement(task);
@@ -739,14 +801,14 @@ static const s16 sDpadDeltaY[] =
static const s16 s4RowTo3RowTableY[] = {0, 1, 1, 2};
static const s16 gUnknown_083CE274[] = {0, 0, 3, 0};
-void HandleDpadMovement(struct Task *task)
+static void HandleDpadMovement(struct Task *task)
{
s16 cursorX;
s16 cursorY;
u16 dpadDir;
s16 prevCursorX;
- get_cursor_pos(&cursorX, &cursorY);
+ GetCursorPos(&cursorX, &cursorY);
dpadDir = 0;
if (gMain.newAndRepeatedKeys & DPAD_UP)
dpadDir = 1;
@@ -772,7 +834,7 @@ void HandleDpadMovement(struct Task *task)
if (sDpadDeltaX[dpadDir] != 0)
{
//The "others" page only has 5 columns
- if (EWRAM_000000.currentPage == PAGE_OTHERS && (cursorX == 6 || cursorX == 7))
+ if (namingScreenData.currentPage == PAGE_OTHERS && (cursorX == 6 || cursorX == 7))
{
if (sDpadDeltaX[dpadDir] > 0)
cursorX = 8;
@@ -815,28 +877,34 @@ void HandleDpadMovement(struct Task *task)
if (cursorY > 3)
cursorY = 0;
}
- set_cursor_pos(cursorX, cursorY);
+ SetCursorPos(cursorX, cursorY);
}
#undef tState
-#undef tPressedButton
+#undef tKeyboardEvent
#undef tKbFunctionKey
//--------------------------------------------------
+//
+//--------------------------------------------------
+
+static void Task_80B64D4(u8);
+static u16 sub_80B654C(u8);
+static void sub_80B65AC(u8);
+static void sub_80B65D4(struct Task *, u8, u8);
-void sub_80B6438(void)
+static void sub_80B6438(void)
{
u8 taskId;
- taskId = CreateTask(sub_80B64D4, 3);
+ taskId = CreateTask(Task_80B64D4, 3);
gTasks[taskId].data[0] = 3;
}
-void sub_80B6460(u8 a, u8 b, u8 c)
+static void sub_80B6460(u8 a, u8 b, u8 c)
{
- struct Task *task;
+ struct Task *task = &gTasks[FindTaskIdByFunc(Task_80B64D4)];
- task = &gTasks[FindTaskIdByFunc(sub_80B64D4)];
if (a == task->data[0] && c == 0)
{
task->data[1] = b;
@@ -850,7 +918,7 @@ void sub_80B6460(u8 a, u8 b, u8 c)
sub_80B65D4(task, a, b);
}
-void sub_80B64D4(u8 taskId)
+static void Task_80B64D4(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -874,7 +942,7 @@ void sub_80B64D4(u8 taskId)
}
}
-u16 sub_80B654C(u8 a)
+static u16 sub_80B654C(u8 a)
{
const u16 arr[] =
{
@@ -886,14 +954,14 @@ u16 sub_80B654C(u8 a)
return arr[a];
}
-void sub_80B65AC(u8 a)
+static void sub_80B65AC(u8 a)
{
u16 index = sub_80B654C(a);
gPlttBufferFaded[index] = gPlttBufferUnfaded[index];
}
-void sub_80B65D4(struct Task *task, u8 b, u8 c)
+static void sub_80B65D4(struct Task *task, u8 b, u8 c)
{
task->data[0] = b;
task->data[1] = c;
@@ -903,103 +971,117 @@ void sub_80B65D4(struct Task *task, u8 b, u8 c)
task->data[5] = 0;
}
-//
+//--------------------------------------------------
+// Page Swap
+//--------------------------------------------------
+
+#define tState data[0]
+#define tFrameCount data[1]
-u8 sub_80B6668(struct Task *);
-u8 sub_80B6680(struct Task *);
-u8 sub_80B66EC(struct Task *);
-u8 sub_80B6758(struct Task *);
+static bool8 PageSwapAnimState_Init(struct Task *);
+static bool8 PageSwapAnimState_1(struct Task *);
+static bool8 PageSwapAnimState_2(struct Task *);
+static bool8 PageSwapAnimState_Done(struct Task *);
-u8 (*const gUnknown_083CE27C[])(struct Task *) =
+static bool8 (*const sPageSwapAnimStateFuncs[])(struct Task *) =
{
- sub_80B6668,
- sub_80B6680,
- sub_80B66EC,
- sub_80B6758,
+ PageSwapAnimState_Init,
+ PageSwapAnimState_1,
+ PageSwapAnimState_2,
+ PageSwapAnimState_Done,
};
-void sub_80B65F0(void)
+static void StartPageSwapAnim(void)
{
u8 taskId;
- taskId = CreateTask(sub_80B6630, 0);
- sub_80B6630(taskId);
+ taskId = CreateTask(Task_HandlePageSwapAnim, 0);
+ Task_HandlePageSwapAnim(taskId);
}
-bool8 sub_80B6610(void)
+static bool8 IsPageSwapAnimNotInProgress(void)
{
- if (FindTaskIdByFunc(sub_80B6630) == 0xFF)
+ if (FindTaskIdByFunc(Task_HandlePageSwapAnim) == 0xFF)
return TRUE;
else
return FALSE;
}
-void sub_80B6630(u8 taskId)
+static void Task_HandlePageSwapAnim(u8 taskId)
{
- while (gUnknown_083CE27C[gTasks[taskId].data[0]](&gTasks[taskId]) != 0)
+ while (sPageSwapAnimStateFuncs[gTasks[taskId].tState](&gTasks[taskId]) != 0)
;
}
-u8 sub_80B6668(struct Task *task)
+static bool8 PageSwapAnimState_Init(struct Task *task)
{
- EWRAM_000000.unk4 = 0;
- EWRAM_000000.unk6 = 0;
- task->data[0]++;
+ namingScreenData.bg1vOffset = 0;
+ namingScreenData.bg2vOffset = 0;
+ task->tState++;
return 0;
}
-u8 sub_80B6680(struct Task *task)
+static bool8 PageSwapAnimState_1(struct Task *task)
{
- u16 *const arr[] = {&EWRAM_000000.unk6, &EWRAM_000000.unk4};
+ u16 *const arr[] =
+ {
+ &namingScreenData.bg2vOffset,
+ &namingScreenData.bg1vOffset
+ };
- task->data[1] += 4;
- *arr[EWRAM_000000.unkC] = Sin(task->data[1], 0x28);
- *arr[EWRAM_000000.unkD] = Sin((task->data[1] + 0x80) & 0xFF, 0x28);
- if (task->data[1] > 0x3F)
+ task->tFrameCount += 4;
+ *arr[namingScreenData.unkC] = Sin(task->tFrameCount, 40);
+ *arr[namingScreenData.unkD] = Sin((task->tFrameCount + 128) & 0xFF, 40);
+ if (task->tFrameCount >= 64)
{
- u8 temp = EWRAM_000000.unk8; //Why u8 and not u16?
+ u8 temp = namingScreenData.unk8; //Why u8 and not u16?
- EWRAM_000000.unk8 = EWRAM_000000.unkA;
- EWRAM_000000.unkA = temp;
- task->data[0]++;
+ namingScreenData.unk8 = namingScreenData.unkA;
+ namingScreenData.unkA = temp;
+ task->tState++;
}
return 0;
}
-u8 sub_80B66EC(struct Task *task)
+static bool8 PageSwapAnimState_2(struct Task *task)
{
- u16 *const arr[] = {&EWRAM_000000.unk6, &EWRAM_000000.unk4};
+ u16 *const arr[] = {&namingScreenData.bg2vOffset, &namingScreenData.bg1vOffset};
- task->data[1] += 4;
- *arr[EWRAM_000000.unkC] = Sin(task->data[1], 0x28);
- *arr[EWRAM_000000.unkD] = Sin((task->data[1] + 0x80) & 0xFF, 0x28);
- if (task->data[1] > 0x7F)
+ task->tFrameCount += 4;
+ *arr[namingScreenData.unkC] = Sin(task->tFrameCount, 40);
+ *arr[namingScreenData.unkD] = Sin((task->tFrameCount + 128) & 0xFF, 40);
+ if (task->tFrameCount >= 128)
{
- u8 temp = EWRAM_000000.unkC;
+ u8 temp = namingScreenData.unkC;
- EWRAM_000000.unkC = EWRAM_000000.unkD;
- EWRAM_000000.unkD = temp;
- task->data[0]++;
+ namingScreenData.unkC = namingScreenData.unkD;
+ namingScreenData.unkD = temp;
+ task->tState++;
}
return 0;
}
-u8 sub_80B6758(struct Task *task)
+static bool8 PageSwapAnimState_Done(struct Task *task)
{
- DestroyTask(FindTaskIdByFunc(sub_80B6630));
+ DestroyTask(FindTaskIdByFunc(Task_HandlePageSwapAnim));
return 0;
}
-//
+#undef tState
+#undef tFrameCount
+
+//--------------------------------------------------
+// Cursor
+//--------------------------------------------------
-void sub_80B6774(void)
+static void CursorInit(void)
{
- EWRAM_000000.cursorSpriteId = CreateSprite(&gSpriteTemplate_83CE640, 0, 0, 0);
- gSprites[EWRAM_000000.cursorSpriteId].oam.priority = 1;
- gSprites[EWRAM_000000.cursorSpriteId].oam.objMode = 1;
- gSprites[EWRAM_000000.cursorSpriteId].data6 = 1;
- gSprites[EWRAM_000000.cursorSpriteId].data6 = 2;
- set_cursor_pos(0, 0);
+ namingScreenData.cursorSpriteId = CreateSprite(&gSpriteTemplate_83CE640, 0, 0, 0);
+ gSprites[namingScreenData.cursorSpriteId].oam.priority = 1;
+ gSprites[namingScreenData.cursorSpriteId].oam.objMode = 1;
+ gSprites[namingScreenData.cursorSpriteId].data6 = 1;
+ gSprites[namingScreenData.cursorSpriteId].data6 = 2;
+ SetCursorPos(0, 0);
}
static const u8 sKeyboardSymbolPositions[][9] =
@@ -1009,73 +1091,72 @@ static const u8 sKeyboardSymbolPositions[][9] =
{1, 4, 7, 10, 13, 16, 16, 16, 19}, //Others page
};
-u8 sub_80B67EC(s16 x)
+static u8 CursorColToKeyboardCol(s16 x)
{
- return sKeyboardSymbolPositions[EWRAM_000000.currentPage][x];
+ return sKeyboardSymbolPositions[namingScreenData.currentPage][x];
}
-void set_cursor_pos(s16 x, s16 y)
+static void SetCursorPos(s16 x, s16 y)
{
- struct Sprite *sprite = &gSprites[EWRAM_000000.cursorSpriteId];
+ struct Sprite *cursorSprite = &gSprites[namingScreenData.cursorSpriteId];
- sprite->pos1.x = sub_80B67EC(x) * 8 + 27;
- sprite->pos1.y = y * 16 + 80;
- sprite->data2 = sprite->data0;
- sprite->data3 = sprite->data1;
- sprite->data0 = x;
- sprite->data1 = y;
+ cursorSprite->pos1.x = CursorColToKeyboardCol(x) * 8 + 27;
+ cursorSprite->pos1.y = y * 16 + 80;
+ cursorSprite->data2 = cursorSprite->data0;
+ cursorSprite->data3 = cursorSprite->data1;
+ cursorSprite->data0 = x;
+ cursorSprite->data1 = y;
}
-void get_cursor_pos(s16 *x, s16 *y)
+static void GetCursorPos(s16 *x, s16 *y)
{
- struct Sprite *sprite = &gSprites[EWRAM_000000.cursorSpriteId];
+ struct Sprite *cursorSprite = &gSprites[namingScreenData.cursorSpriteId];
- *x = sprite->data0;
- *y = sprite->data1;
+ *x = cursorSprite->data0;
+ *y = cursorSprite->data1;
}
-void sub_80B6878(void)
+static void MoveCursorToOKButton(void)
{
- set_cursor_pos(8, 2);
+ SetCursorPos(8, 2);
}
-void sub_80B6888(u8 a)
+static void sub_80B6888(u8 a)
{
- gSprites[EWRAM_000000.cursorSpriteId].data4 &= -256;
- gSprites[EWRAM_000000.cursorSpriteId].data4 |= a;
- StartSpriteAnim(&gSprites[EWRAM_000000.cursorSpriteId], 0);
+ gSprites[namingScreenData.cursorSpriteId].data4 &= -256;
+ gSprites[namingScreenData.cursorSpriteId].data4 |= a;
+ StartSpriteAnim(&gSprites[namingScreenData.cursorSpriteId], 0);
}
-void sub_80B68D8(u8 a)
+static void sub_80B68D8(u8 a)
{
- gSprites[EWRAM_000000.cursorSpriteId].data4 &= 0xFF;
- gSprites[EWRAM_000000.cursorSpriteId].data4 |= a << 8;
+ gSprites[namingScreenData.cursorSpriteId].data4 &= 0xFF;
+ gSprites[namingScreenData.cursorSpriteId].data4 |= a << 8;
}
-void sub_80B6914(void)
+static void sub_80B6914(void)
{
- StartSpriteAnim(&gSprites[EWRAM_000000.cursorSpriteId], 1);
+ StartSpriteAnim(&gSprites[namingScreenData.cursorSpriteId], 1);
}
-bool8 sub_80B6938(void)
+static bool8 IsCursorAnimFinished(void)
{
- return gSprites[EWRAM_000000.cursorSpriteId].animEnded;
+ return gSprites[namingScreenData.cursorSpriteId].animEnded;
}
-u8 sub_80B6958(void)
+static u8 GetKeyRoleAtCursorPos(void)
{
- const u8 arr[] = {1, 2, 3};
- s16 var1;
- s16 var2;
+ const u8 keyRoles[] = {KEY_ROLE_PAGE, KEY_ROLE_BACKSPACE, KEY_ROLE_OK};
+ s16 cursorX;
+ s16 cursorY;
- get_cursor_pos(&var1, &var2);
- if (var1 < 8)
- return 0;
+ GetCursorPos(&cursorX, &cursorY);
+ if (cursorX < 8)
+ return KEY_ROLE_CHAR;
else
- return arr[var2];
+ return keyRoles[cursorY];
}
-#ifdef NONMATCHING
void sub_80B6998(struct Sprite *sprite)
{
if (sprite->animEnded)
@@ -1098,156 +1179,24 @@ void sub_80B6998(struct Sprite *sprite)
sprite->data6 = -sprite->data6;
sprite->data7 = 2;
}
- //_080B6A3E
if ((sprite->data4 & 0xFF00) != 0)
{
- //Can't get this part to match
- u16 var = sprite->data5;
- s8 r5 = var;
- s16 var2 = var / 2;
- s8 r4 = var2;
+ s8 gb = sprite->data5;
+ s8 r = sprite->data5 >> 1;
u16 index = IndexOfSpritePaletteTag(5) * 16 + 0x0101;
- MultiplyInvertedPaletteRGBComponents(index, r4, r5, r5);
+ MultiplyInvertedPaletteRGBComponents(index, r, gb, gb);
}
}
-#else
-__attribute__((naked))
-void sub_80B6998(struct Sprite *sprite)
-{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- adds r4, r0, 0\n\
- adds r0, 0x3F\n\
- ldrb r1, [r0]\n\
- movs r0, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080B69B0\n\
- adds r0, r4, 0\n\
- movs r1, 0\n\
- bl StartSpriteAnim\n\
-_080B69B0:\n\
- ldrh r1, [r4, 0x36]\n\
- movs r0, 0xFF\n\
- ands r0, r1\n\
- adds r3, r4, 0\n\
- adds r3, 0x3E\n\
- movs r1, 0x1\n\
- ands r0, r1\n\
- lsls r0, 2\n\
- ldrb r1, [r3]\n\
- movs r2, 0x5\n\
- negs r2, r2\n\
- ands r2, r1\n\
- orrs r2, r0\n\
- strb r2, [r3]\n\
- movs r1, 0x2E\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0x8\n\
- bne _080B69DA\n\
- movs r0, 0x4\n\
- orrs r2, r0\n\
- strb r2, [r3]\n\
-_080B69DA:\n\
- ldrb r1, [r3]\n\
- movs r0, 0x4\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080B6A0A\n\
- movs r2, 0x36\n\
- ldrsh r0, [r4, r2]\n\
- movs r1, 0xFF\n\
- lsls r1, 8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080B6A0A\n\
- movs r0, 0x2E\n\
- ldrsh r1, [r4, r0]\n\
- movs r2, 0x32\n\
- ldrsh r0, [r4, r2]\n\
- cmp r1, r0\n\
- bne _080B6A0A\n\
- movs r0, 0x30\n\
- ldrsh r1, [r4, r0]\n\
- movs r2, 0x34\n\
- ldrsh r0, [r4, r2]\n\
- cmp r1, r0\n\
- beq _080B6A16\n\
-_080B6A0A:\n\
- movs r0, 0\n\
- strh r0, [r4, 0x38]\n\
- movs r0, 0x1\n\
- strh r0, [r4, 0x3A]\n\
- movs r0, 0x2\n\
- strh r0, [r4, 0x3C]\n\
-_080B6A16:\n\
- ldrh r0, [r4, 0x3C]\n\
- subs r0, 0x1\n\
- strh r0, [r4, 0x3C]\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- bne _080B6A3E\n\
- ldrh r1, [r4, 0x3A]\n\
- ldrh r2, [r4, 0x38]\n\
- adds r0, r1, r2\n\
- strh r0, [r4, 0x38]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x10\n\
- beq _080B6A36\n\
- cmp r0, 0\n\
- bne _080B6A3A\n\
-_080B6A36:\n\
- negs r0, r1\n\
- strh r0, [r4, 0x3A]\n\
-_080B6A3A:\n\
- movs r0, 0x2\n\
- strh r0, [r4, 0x3C]\n\
-_080B6A3E:\n\
- movs r1, 0x36\n\
- ldrsh r0, [r4, r1]\n\
- movs r1, 0xFF\n\
- lsls r1, 8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080B6A74\n\
- ldrh r4, [r4, 0x38]\n\
- lsls r5, r4, 24\n\
- lsrs r5, 24\n\
- lsls r4, 16\n\
- asrs r4, 17\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- movs r0, 0x5\n\
- bl IndexOfSpritePaletteTag\n\
- lsls r0, 24\n\
- lsrs r0, 4\n\
- ldr r2, _080B6A7C @ =0x01010000\n\
- adds r0, r2\n\
- lsrs r0, 16\n\
- adds r1, r4, 0\n\
- adds r2, r5, 0\n\
- adds r3, r5, 0\n\
- bl MultiplyInvertedPaletteRGBComponents\n\
-_080B6A74:\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080B6A7C: .4byte 0x01010000\n\
- .syntax divided\n");
-}
-#endif
-
-void sub_80B6A80(void)
+
+static void sub_80B6A80(void)
{
u8 spriteId1;
u8 spriteId2;
u8 spriteId3;
spriteId1 = CreateSprite(&gSpriteTemplate_83CE5C8, 0xCC, 0x50, 0);
- EWRAM_000000.unk10 = spriteId1;
+ namingScreenData.unk10 = spriteId1;
SetSubspriteTables(&gSprites[spriteId1], gSubspriteTables_83CE558);
spriteId2 = CreateSprite(&gSpriteTemplate_83CE5F8, 0xCC, 0x4C, 1);
@@ -1259,18 +1208,18 @@ void sub_80B6A80(void)
gSprites[spriteId1].data7 = spriteId3;
}
-void sub_80B6B14(void)
+static void sub_80B6B14(void)
{
- struct Sprite *sprite = &gSprites[EWRAM_000000.unk10];
+ struct Sprite *sprite = &gSprites[namingScreenData.unk10];
sprite->data0 = 2;
- sprite->data1 = EWRAM_000000.currentPage;
+ sprite->data1 = namingScreenData.currentPage;
}
-u8 sub_80B6B5C(struct Sprite *);
-u8 sub_80B6B98(struct Sprite *);
-u8 sub_80B6B9C(struct Sprite *);
-u8 sub_80B6C08(struct Sprite *);
+static u8 sub_80B6B5C(struct Sprite *);
+static u8 sub_80B6B98(struct Sprite *);
+static u8 sub_80B6B9C(struct Sprite *);
+static u8 sub_80B6C08(struct Sprite *);
static u8 (*const gUnknown_083CE2B4[])(struct Sprite *) =
{
@@ -1286,22 +1235,22 @@ void sub_80B6B34(struct Sprite *sprite)
;
}
-u8 sub_80B6B5C(struct Sprite *sprite)
+static u8 sub_80B6B5C(struct Sprite *sprite)
{
struct Sprite *sprite1 = &gSprites[sprite->data6];
struct Sprite *sprite2 = &gSprites[sprite->data7];
- sub_80B6C48(EWRAM_000000.currentPage, sprite1, sprite2);
+ sub_80B6C48(namingScreenData.currentPage, sprite1, sprite2);
sprite->data0++;
return 0;
}
-u8 sub_80B6B98(struct Sprite *sprite)
+static u8 sub_80B6B98(struct Sprite *sprite)
{
return 0;
}
-u8 sub_80B6B9C(struct Sprite *sprite)
+static u8 sub_80B6B9C(struct Sprite *sprite)
{
struct Sprite *r4 = &gSprites[sprite->data6];
struct Sprite *r5 = &gSprites[sprite->data7];
@@ -1317,7 +1266,7 @@ u8 sub_80B6B9C(struct Sprite *sprite)
return 0;
}
-u8 sub_80B6C08(struct Sprite *sprite)
+static u8 sub_80B6C08(struct Sprite *sprite)
{
struct Sprite *r2 = &gSprites[sprite->data6];
@@ -1334,7 +1283,7 @@ u8 sub_80B6C08(struct Sprite *sprite)
static const u16 gUnknown_083CE2C4[] = {1, 3, 2};
static const u16 gUnknown_083CE2CA[] = {4, 6, 5};
-void sub_80B6C48(u8 a, struct Sprite *b, struct Sprite *c)
+static void sub_80B6C48(u8 a, struct Sprite *b, struct Sprite *c)
{
c->oam.paletteNum = IndexOfSpritePaletteTag(gUnknown_083CE2C4[a]);
b->sheetTileStart = GetSpriteTileStartByTag(gUnknown_083CE2CA[a]);
@@ -1343,7 +1292,7 @@ void sub_80B6C48(u8 a, struct Sprite *b, struct Sprite *c)
//
-void sub_80B6CA8(void)
+static void sub_80B6CA8(void)
{
u8 spriteId;
@@ -1354,17 +1303,17 @@ void sub_80B6CA8(void)
SetSubspriteTables(&gSprites[spriteId], gSubspriteTables_83CE578);
}
-void sub_80B6D04(void)
+static void sub_80B6D04(void)
{
u8 spriteId;
s16 r1;
u8 i;
- r1 = (EWRAM_000000.unk2 - 1) * 8 + 4;
+ r1 = (namingScreenData.unk2 - 1) * 8 + 4;
spriteId = CreateSprite(&gSpriteTemplate_83CE658, r1, 0x28, 0);
gSprites[spriteId].oam.priority = 3;
- r1 = EWRAM_000000.unk2 * 8 + 4;
- for (i = 0; i < EWRAM_000000.unk34->unk1; i++, r1 += 8)
+ r1 = namingScreenData.unk2 * 8 + 4;
+ for (i = 0; i < namingScreenData.template->maxChars; i++, r1 += 8)
{
spriteId = CreateSprite(&gSpriteTemplate_83CE670, r1, 0x2C, 0);
gSprites[spriteId].oam.priority = 3;
@@ -1389,7 +1338,7 @@ void sub_80B6DE8(struct Sprite *sprite)
const s16 arr[] = {2, 3, 2, 1};
u8 var;
- var = sub_80B6F44();
+ var = GetTextCaretPosition();
if (var != (u8)sprite->data0)
{
sprite->pos2.y = 0;
@@ -1410,10 +1359,10 @@ void sub_80B6DE8(struct Sprite *sprite)
//
-void nullsub_40(void);
-void sub_80B6E68(void);
-void sub_80B6EBC(void);
-void sub_80B6EFC(void);
+static void nullsub_40(void);
+static void sub_80B6E68(void);
+static void sub_80B6EBC(void);
+static void sub_80B6EFC(void);
static void (*const gUnknown_083CE2E0[])(void) =
{
@@ -1423,27 +1372,27 @@ static void (*const gUnknown_083CE2E0[])(void) =
sub_80B6EFC,
};
-void sub_80B6E44(void)
+static void sub_80B6E44(void)
{
- gUnknown_083CE2E0[EWRAM_000000.unk34->unk2]();
+ gUnknown_083CE2E0[namingScreenData.template->unk2]();
}
-void nullsub_40(void)
+static void nullsub_40(void)
{
}
-void sub_80B6E68(void)
+static void sub_80B6E68(void)
{
u8 rivalGfxId;
u8 spriteId;
- rivalGfxId = GetRivalAvatarGraphicsIdByStateIdAndGender(0, EWRAM_000000.unk3E);
+ rivalGfxId = GetRivalAvatarGraphicsIdByStateIdAndGender(0, namingScreenData.unk3E);
spriteId = AddPseudoFieldObject(rivalGfxId, SpriteCallbackDummy, 0x38, 0x18, 0);
gSprites[spriteId].oam.priority = 3;
StartSpriteAnim(&gSprites[spriteId], 4);
}
-void sub_80B6EBC(void)
+static void sub_80B6EBC(void)
{
u8 spriteId;
@@ -1452,77 +1401,684 @@ void sub_80B6EBC(void)
gSprites[spriteId].oam.priority = 3;
}
-void sub_80B6EFC(void)
+static void sub_80B6EFC(void)
{
u8 spriteId;
sub_809D51C();
- spriteId = CreateMonIcon(EWRAM_000000.unk3E, SpriteCallbackDummy, 0x34, 0x18, 0, EWRAM_000000.unk44);
+ spriteId = CreateMonIcon(namingScreenData.unk3E, SpriteCallbackDummy, 0x34, 0x18, 0, namingScreenData.unk44);
gSprites[spriteId].oam.priority = 3;
}
-u8 sub_80B6F44(void)
+static u8 GetTextCaretPosition(void)
{
u8 i;
- for (i = 0; i < EWRAM_000000.unk34->unk1; i++)
+ for (i = 0; i < namingScreenData.template->maxChars; i++)
{
- if (EWRAM_000000.textBuffer[i] == 0xFF)
+ if (namingScreenData.textBuffer[i] == EOS)
return i;
}
- return EWRAM_000000.unk34->unk1 - 1;
+ return namingScreenData.template->maxChars - 1;
}
-u8 sub_80B6F84(void)
+static u8 GetPreviousTextCaretPosition(void)
{
s8 i;
- for (i = EWRAM_000000.unk34->unk1 - 1; i > 0; i--)
+ for (i = namingScreenData.template->maxChars - 1; i > 0; i--)
{
- if (EWRAM_000000.textBuffer[i] != 0xFF)
+ if (namingScreenData.textBuffer[i] != EOS)
return i;
}
return 0;
}
-void sub_80B6FBC(void)
+static void DeleteTextCharacter(void)
{
- u8 var;
+ u8 index;
u8 var2;
- var = sub_80B6F84();
- EWRAM_000000.textBuffer[var] = 0;
+ index = GetPreviousTextCaretPosition();
+ namingScreenData.textBuffer[index] = 0;
sub_80B7960();
- EWRAM_000000.textBuffer[var] = 0xFF;
- var2 = sub_80B6958();
+ namingScreenData.textBuffer[index] = EOS;
+ var2 = GetKeyRoleAtCursorPos();
if (var2 == 0 || var2 == 2)
sub_80B6460(1, 0, 1);
PlaySE(SE_BOWA);
}
-u8 sub_80B7004(void)
+static bool8 sub_80B7004(void)
{
s16 x;
s16 y;
- u8 var;
- u8 r4;
+ u8 ch;
+ bool8 r4;
- get_cursor_pos(&x, &y);
- x = sub_80B67EC(x);
- var = sub_80B7768(x, y);
+ GetCursorPos(&x, &y);
+ x = CursorColToKeyboardCol(x);
+ ch = GetCharAtKeyboardPos(x, y);
r4 = 1;
- if (var == 0xFF)
+ if (ch == 0xFF)
r4 = sub_80B7104();
- else if (var == 0xFE)
+ else if (ch == 0xFE)
r4 = sub_80B713C();
else
- sub_80B7174(var);
+ AddTextCharacter(ch);
sub_80B7960();
PlaySE(SE_SELECT);
- if (r4 != 0)
+ if (r4)
{
- if (sub_80B6F84() == EWRAM_000000.unk34->unk1 - 1)
- return 1;
+ if (GetPreviousTextCaretPosition() == namingScreenData.template->maxChars - 1)
+ return TRUE;
}
- return 0;
+ return FALSE;
+}
+
+static void sub_80B7090(void)
+{
+ u8 r5;
+ u8 r4;
+
+ r5 = GetPreviousTextCaretPosition();
+ r4 = namingScreenData.textBuffer[r5];
+ if (sub_80B7198(r4))
+ {
+ if (sub_80B7264(r4))
+ sub_80B7370(r4, r5);
+ else
+ sub_80B73CC(r4, r5);
+ }
+ else
+ {
+ if (sub_80B71E4(r4))
+ sub_80B7474(r4, r5);
+ else
+ sub_80B72A4(r4, r5);
+ }
+ sub_80B7960();
+ PlaySE(SE_SELECT);
+}
+
+static bool8 sub_80B7104(void)
+{
+ u8 r5;
+ u8 r4;
+
+ r5 = GetPreviousTextCaretPosition();
+ r4 = namingScreenData.textBuffer[r5];
+ if (sub_80B720C(r4))
+ {
+ sub_80B72A4(r4, r5);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 sub_80B713C(void)
+{
+ u8 r5;
+ u8 r4;
+
+ r5 = GetPreviousTextCaretPosition();
+ r4 = namingScreenData.textBuffer[r5];
+ if (sub_80B7264(r4))
+ {
+ sub_80B7370(r4, r5);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void AddTextCharacter(u8 ch)
+{
+ u8 index = GetTextCaretPosition();
+
+ namingScreenData.textBuffer[index] = ch;
}
+
+static bool8 sub_80B7198(u8 a)
+{
+ if ((a >= 55 && a <= 74)
+ || (a >= 135 && a <= 139)
+ || (a >= 140 && a <= 144)
+ || (a >= 145 && a <= 149)
+ || (a >= 150 && a <= 154))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static bool8 sub_80B71E4(u8 a)
+{
+ if ((a >= 75 && a <= 79)
+ || (a >= 155 && a <= 159))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static bool8 sub_80B720C(u8 a)
+{
+ if ((a >= 6 && a <= 20)
+ || (a >= 26 && a <= 30)
+ || (a >= 75 && a <= 79)
+ || (a >= 86 && a <= 100)
+ || (a >= 106 && a <= 110)
+ || (a >= 155 && a <= 159))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static bool8 sub_80B7264(u8 a)
+{
+ if ((a >= 26 && a <= 30)
+ || (a >= 70 && a <= 74)
+ || (a >= 106 && a <= 110)
+ || (a >= 150 && a <= 154))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void sub_80B72A4(u8 a, u8 b)
+{
+ u8 chr = a;
+
+ if (a >= 6 && a <= 10)
+ chr = a + 0x31;
+ else if (a >= 11 && a <= 15)
+ chr = a + 0x31;
+ else if (a >= 16 && a <= 20)
+ chr = a + 0x31;
+ else if (a >= 26 && a <= 30)
+ chr = a + 0x2C;
+ else if (a >= 75 && a <= 79)
+ chr = a + 0xFB;
+ else if (a >= 86 && a <= 90)
+ chr = a + 0x31;
+ else if (a >= 91 && a <= 95)
+ chr = a + 0x31;
+ else if (a >= 96 && a <= 100)
+ chr = a + 0x31;
+ else if (a >= 106 && a <= 110)
+ chr = a + 0x2C;
+ else if (a >= 155 && a <= 159)
+ chr = a + 0xFB;
+ namingScreenData.textBuffer[b] = chr;
+}
+
+static void sub_80B7370(u8 a, u8 b)
+{
+ u8 chr = a;
+
+ if (a >= 26 && a <= 30)
+ chr = a + 0x31;
+ else if (a >= 70 && a <= 74)
+ chr = a + 5;
+ else if (a >= 106 && a <= 110)
+ chr = a + 0x31;
+ else if (a >= 150 && a <= 154)
+ chr = a + 5;
+ namingScreenData.textBuffer[b] = chr;
+}
+
+static void sub_80B73CC(u8 a, u8 b)
+{
+ u8 chr = a;
+
+ if (a >= 55 && a <= 59)
+ chr = a + 0xCF;
+ else if (a >= 60 && a <= 64)
+ chr = a + 0xCF;
+ else if (a >= 65 && a <= 69)
+ chr = a + 0xCF;
+ else if (a >= 70 && a <= 74)
+ chr = a + 0xD4;
+ else if (a >= 135 && a <= 139)
+ chr = a + 0xCF;
+ else if (a >= 140 && a <= 144)
+ chr = a + 0xCF;
+ else if (a >= 145 && a <= 149)
+ chr = a + 0xCF;
+ else if (a >= 150 && a <= 154)
+ chr = a + 0xD4;
+ namingScreenData.textBuffer[b] = chr;
+}
+
+static void sub_80B7474(u8 a, u8 b)
+{
+ u8 chr = a;
+
+ if (a >= 75 && a <= 79)
+ chr = a + 0xCF;
+ else if (a >= 155 && a <= 159)
+ chr = a + 0xCF;
+ namingScreenData.textBuffer[b] = chr;
+}
+
+static void sub_80B74B0(void)
+{
+ u8 i;
+
+ for (i = 0; i < namingScreenData.template->maxChars; i++)
+ {
+ if (namingScreenData.textBuffer[i] != 0 && namingScreenData.textBuffer[i] != 0xFF)
+ {
+ StringCopyN(namingScreenData.destBuffer, namingScreenData.textBuffer, namingScreenData.template->maxChars + 1);
+ break;
+ }
+ }
+}
+
+static void DisplaySentToPCMessage(void)
+{
+ StringCopy(gStringVar1, namingScreenData.destBuffer);
+ StringExpandPlaceholders(gStringVar4, gOtherText_SentToPC);
+ BasicInitMenuWindow(&gWindowConfig_81E6E88);
+ MenuDisplayMessageBox();
+ sub_8072044(gStringVar4);
+}
+
+static void sub_80B753C(void)
+{
+ LoadSpriteSheets(gUnknown_083CE6A0);
+ LoadSpritePalettes(gUnknown_083CE708);
+}
+
+static void sub_80B7558(void)
+{
+ sub_80B7568();
+ sub_80B75B0();
+}
+
+static void sub_80B7568(void)
+{
+ const void *src;
+ void *dst;
+
+ src = gNamingScreenMenu_Gfx;
+ dst = (void *)(VRAM + gMenuMessageBoxContentTileOffset * 32);
+ DmaCopy16(3, src, dst, 0x800);
+
+ src = gNamingScreenMenu_Gfx;
+ dst = (void *)(VRAM + 0x8000 + gMenuMessageBoxContentTileOffset * 32);
+ DmaCopy16(3, src, dst, 0x800);
+}
+
+static void sub_80B75B0(void)
+{
+ LoadPalette(gNamingScreenPalettes, 0, 0x80);
+}
+
+static void sub_80B7650(u16 *);
+static void sub_80B7660(u16 *);
+static void sub_80B7670(u16 *);
+
+static void (*const gUnknown_083CE2F0[][2])(u16 *) =
+{
+ {sub_80B7660, sub_80B7650},
+ {sub_80B7650, sub_80B7670},
+ {sub_80B7670, sub_80B7660},
+};
+
+static void sub_80B75C4(void)
+{
+ u16 *const arr[] =
+ {
+ (u16 *)(VRAM + 0xE000),
+ (u16 *)(VRAM + 0xE800),
+ };
+
+ gUnknown_083CE2F0[namingScreenData.currentPage][0](arr[namingScreenData.unkC]);
+ gUnknown_083CE2F0[namingScreenData.currentPage][1](arr[namingScreenData.unkD]);
+}
+
+static void sub_80B7614(void)
+{
+ u16 *const arr[] =
+ {
+ (u16 *)(VRAM + 0xE000),
+ (u16 *)(VRAM + 0xE800),
+ };
+
+ gUnknown_083CE2F0[namingScreenData.currentPage][1](arr[namingScreenData.unkD]);
+}
+
+static void sub_80B7650(u16 *vramBuffer)
+{
+ sub_80B7698(vramBuffer, gUnknown_083CE748);
+}
+
+static void sub_80B7660(u16 *vramBuffer)
+{
+ sub_80B7698(vramBuffer, gUnknown_083CEBF8);
+}
+
+static void sub_80B7670(u16 *vramBuffer)
+{
+ sub_80B7698(vramBuffer, gUnknown_083CF0A8);
+}
+
+static void sub_80B7680(void)
+{
+ sub_80B76E0(VRAM + 0xF000, gUnknown_08E86258);
+}
+
+static void sub_80B7698(u16 *vramBuffer, const u16 *src)
+{
+ s16 i;
+ s16 j;
+
+ for (i = 0; i < 20; i++)
+ {
+ for (j = 0; j < 30; j++, src++)
+ {
+ vramBuffer[i * 32 + j] = *src + gMenuMessageBoxContentTileOffset;
+ }
+ }
+}
+
+static void sub_80B76E0(u16 *vramBuffer, const u16 *src)
+{
+ s16 i;
+ s16 j;
+
+ for (i = 0; i < 20; i++)
+ {
+ for (j = 0; j < 30; j++, src++)
+ {
+ vramBuffer[i * 32 + j] = *src + gMenuMessageBoxContentTileOffset;
+ }
+ src += 2;
+ }
+}
+
+static void sub_80B772C(void)
+{
+ nullsub_20(namingScreenData.currentPage, namingScreenData.unkC);
+}
+
+static void sub_80B7740(void)
+{
+ nullsub_20((namingScreenData.currentPage + 1) % 3, namingScreenData.unkD);
+}
+
+static void nullsub_20(u8 a, u8 b)
+{
+}
+
+static void sub_80B7838(void);
+static void sub_80B7844(void);
+static void sub_80B7850(void);
+
+static void (*const gUnknown_083CE310[][2])(void) =
+{
+ sub_80B7844,
+ sub_80B7838,
+ sub_80B7838,
+ sub_80B7850,
+ sub_80B7850,
+ sub_80B7844,
+};
+
+static const struct WindowConfig *const gUnknown_083CE328[][2][2] =
+{
+ {
+ {&gWindowConfig_81E6EDC, &gWindowConfig_81E6EF8},
+ {&gWindowConfig_81E6EA4, &gWindowConfig_81E6EC0},
+ },
+ {
+ {&gWindowConfig_81E6EA4, &gWindowConfig_81E6EC0},
+ {&gWindowConfig_81E6F14, &gWindowConfig_81E6F30},
+ },
+ {
+ {&gWindowConfig_81E6F14, &gWindowConfig_81E6F30},
+ {&gWindowConfig_81E6EDC, &gWindowConfig_81E6EF8},
+ },
+};
+
+static void nullsub_61(void);
+static void sub_80B78F8(void);
+
+static void (*const gUnknown_083CE358[])(void) =
+{
+ nullsub_61,
+ nullsub_61,
+ sub_80B78F8,
+ sub_80B78F8,
+};
+
+static void nullsub_62(void);
+static void sub_80B7924(void);
+
+static void (*const gUnknown_083CE368[])(void) =
+{
+ nullsub_62,
+ sub_80B7924,
+};
+
+static const u8 sKeyboardCharacters[][4][20]; //forward declaration
+
+static u8 GetCharAtKeyboardPos(s16 a, s16 b)
+{
+ return sKeyboardCharacters[namingScreenData.currentPage][b][a];
+}
+
+static void sub_80B7794(void)
+{
+ BasicInitMenuWindow(gUnknown_083CE328[namingScreenData.currentPage][0][namingScreenData.unkC]);
+ gUnknown_083CE310[namingScreenData.currentPage][0]();
+ BasicInitMenuWindow(gUnknown_083CE328[namingScreenData.currentPage][1][namingScreenData.unkD]);
+ gUnknown_083CE310[namingScreenData.currentPage][1]();
+ sub_80B772C();
+ sub_80B7740();
+}
+
+static void sub_80B77F8(void)
+{
+ BasicInitMenuWindow(gUnknown_083CE328[namingScreenData.currentPage][1][namingScreenData.unkD]);
+ gUnknown_083CE310[namingScreenData.currentPage][1]();
+ sub_80B7740();
+}
+
+static void sub_80B7838(void)
+{
+ PrintKeyboardCharacters(1);
+}
+
+static void sub_80B7844(void)
+{
+ PrintKeyboardCharacters(0);
+}
+
+static void sub_80B7850(void)
+{
+ PrintKeyboardCharacters(2);
+}
+
+static void PrintKeyboardCharacters(u8 page) //print letters on page
+{
+ s16 i;
+ s16 r5;
+
+ for (i = 0, r5 = 9; i < 4; i++, r5 += 2)
+ MenuPrint(sKeyboardCharacters[page][i], 3, r5);
+}
+
+static void sub_80B78A8(void)
+{
+ BasicInitMenuWindow(&gWindowConfig_81E6F4C);
+ gUnknown_083CE358[namingScreenData.templateNum]();
+ gUnknown_083CE368[namingScreenData.template->unk3]();
+ MenuPrint(namingScreenData.template->title, 9, 2);
+}
+
+static void nullsub_61(void)
+{
+}
+
+static void sub_80B78F8(void)
+{
+ StringCopy(gStringVar1, gSpeciesNames[(s16)namingScreenData.unk3E]);
+}
+
+static void nullsub_62(void)
+{
+}
+
+static void sub_80B7924(void)
+{
+ u8 genderSymbol[2] = _("♂");
+
+ if ((s16)namingScreenData.unk40 != MON_GENDERLESS)
+ {
+ if ((s16)namingScreenData.unk40 == MON_FEMALE)
+ genderSymbol[0] = 0xB6; //female symbol
+ MenuPrint(genderSymbol, 0x14, 4);
+ }
+}
+
+static void sub_80B7960(void)
+{
+ u8 *string = gStringVar1;
+
+ string[0] = 0xFC;
+ string[1] = 0x14;
+ string[2] = 8;
+ string[3] = 0xFC;
+ string[4] = 0x11;
+ string[5] = 1;
+ string += 6;
+ StringCopy(string, namingScreenData.textBuffer);
+ BasicInitMenuWindow(&gWindowConfig_81E6F4C);
+ MenuPrint(gStringVar1, namingScreenData.unk2, 4);
+}
+
+//--------------------------------------------------
+// Forward-declared variables
+//--------------------------------------------------
+
+static const struct NamingScreenTemplate playerNamingScreenTemplate =
+{
+ .unk0 = 0,
+ .maxChars = 7,
+ .unk2 = 1,
+ .unk3 = 0,
+ .unk4 = 0,
+ .unk5 = 0,
+ .unk6 = 0,
+ .unk7 = 0,
+ .title = OtherText_YourName,
+};
+
+static const struct NamingScreenTemplate pcBoxNamingTemplate =
+{
+ .unk0 = 0,
+ .maxChars = 8,
+ .unk2 = 2,
+ .unk3 = 0,
+ .unk4 = 0,
+ .unk5 = 0,
+ .unk6 = 0,
+ .unk7 = 0,
+ .title = OtherText_BoxName,
+};
+
+static const struct NamingScreenTemplate monNamingScreenTemplate =
+{
+ .unk0 = 0,
+ .maxChars = 10,
+ .unk2 = 3,
+ .unk3 = 1,
+ .unk4 = 0,
+ .unk5 = 0,
+ .unk6 = 0,
+ .unk7 = 0,
+ .title = OtherText_PokeName,
+};
+
+static const struct NamingScreenTemplate *const sNamingScreenTemplates[] =
+{
+ &playerNamingScreenTemplate,
+ &pcBoxNamingTemplate,
+ &monNamingScreenTemplate,
+ &monNamingScreenTemplate,
+};
+
+static const u8 sKeyboardCharacters[][4][20] =
+{
+ {
+ _(" A B C D E F . "),
+ _(" G H I J K L , "),
+ _(" M N O P Q R S "),
+ _(" T U V W X Y Z "),
+ },
+ {
+ _(" a b c d e f . "),
+ _(" g h i j k l , "),
+ _(" m n o p q r s "),
+ _(" t u v w x y z "),
+ },
+ {
+ _(" 0 1 2 3 4 "),
+ _(" 5 6 7 8 9 "),
+ _(" ! ? ♂ ♀ / - "),
+ _(" … “ ” ‘ ’ "),
+ },
+};
+
+const struct OamData gOamData_83CE498 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+const struct OamData gOamData_83CE4A0 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+const struct OamData gOamData_83CE4A8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+//TODO: dump sprite data
diff --git a/src/new_game.c b/src/new_game.c
index ddc9ea403..99c7839eb 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -70,6 +70,7 @@ void ClearPokedexFlags(void)
void sub_8052DA8(void)
{
s32 i;
+
sub_80B2D1C();
for (i = 0; i < 5; i++)
gSaveBlock1.sb1_2EFC_struct[i] = gUnknown_08216604;
@@ -139,7 +140,7 @@ void NewGameInitData(void)
sub_810C994();
sub_8133F80();
sub_80E6764();
- sub_80F7AA4();
+ SetMauvilleOldMan();
sub_80FA17C();
sub_810FA54();
ResetLotteryCorner();
diff --git a/src/party_menu.c b/src/party_menu.c
index 25d36bf87..d473eae6d 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -128,149 +128,149 @@ __attribute__((naked))
void sub_8070088(void)
{
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, 0x4\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldr r1, _08070120 @ =gTasks\n\
- mov r10, r1\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 3\n\
- mov r2, r10\n\
- adds r7, r1, r2\n\
- ldr r5, _08070124 @ =TaskDummy\n\
- str r5, [r7]\n\
- ldr r4, _08070128 @ =0x0201c000\n\
- ldrb r0, [r4, 0x5]\n\
- movs r1, 0x64\n\
- mov r9, r1\n\
- mov r2, r9\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- ldr r1, _0807012C @ =gPlayerParty\n\
- mov r8, r1\n\
- add r0, r8\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _08070118\n\
- adds r0, r5, 0\n\
- movs r1, 0x5\n\
- bl CreateTask\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- str r0, [sp]\n\
- mov r0, r10\n\
- adds r0, 0x8\n\
- ldr r2, [sp]\n\
- adds r6, r2, r0\n\
- ldrb r0, [r4, 0x5]\n\
- mov r1, r9\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- add r0, r8\n\
- str r0, [r4]\n\
- movs r1, 0x3A\n\
- bl GetMonData\n\
- strh r0, [r6, 0x14]\n\
- ldr r0, [r4]\n\
- movs r1, 0x39\n\
- bl GetMonData\n\
- strh r0, [r6, 0x16]\n\
- ldrb r0, [r4, 0x5]\n\
- ldrh r1, [r4, 0x6]\n\
- movs r2, 0\n\
- bl ExecuteTableBasedItemEffect__\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08070134\n\
- adds r0, r5, 0\n\
- bl DestroyTask\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldr r1, _08070120 @ =gTasks\n\
+ mov r10, r1\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 3\n\
+ mov r2, r10\n\
+ adds r7, r1, r2\n\
+ ldr r5, _08070124 @ =TaskDummy\n\
+ str r5, [r7]\n\
+ ldr r4, _08070128 @ =0x0201c000\n\
+ ldrb r0, [r4, 0x5]\n\
+ movs r1, 0x64\n\
+ mov r9, r1\n\
+ mov r2, r9\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ ldr r1, _0807012C @ =gPlayerParty\n\
+ mov r8, r1\n\
+ add r0, r8\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _08070118\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x5\n\
+ bl CreateTask\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ str r0, [sp]\n\
+ mov r0, r10\n\
+ adds r0, 0x8\n\
+ ldr r2, [sp]\n\
+ adds r6, r2, r0\n\
+ ldrb r0, [r4, 0x5]\n\
+ mov r1, r9\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ add r0, r8\n\
+ str r0, [r4]\n\
+ movs r1, 0x3A\n\
+ bl GetMonData\n\
+ strh r0, [r6, 0x14]\n\
+ ldr r0, [r4]\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ strh r0, [r6, 0x16]\n\
+ ldrb r0, [r4, 0x5]\n\
+ ldrh r1, [r4, 0x6]\n\
+ movs r2, 0\n\
+ bl ExecuteTableBasedItemEffect__\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08070134\n\
+ adds r0, r5, 0\n\
+ bl DestroyTask\n\
_08070118:\n\
- ldr r0, _08070130 @ =sub_80701DC\n\
- str r0, [r7]\n\
- b _080701B0\n\
- .align 2, 0\n\
+ ldr r0, _08070130 @ =sub_80701DC\n\
+ str r0, [r7]\n\
+ b _080701B0\n\
+ .align 2, 0\n\
_08070120: .4byte gTasks\n\
_08070124: .4byte TaskDummy\n\
_08070128: .4byte 0x0201c000\n\
_0807012C: .4byte gPlayerParty\n\
_08070130: .4byte sub_80701DC\n\
_08070134:\n\
- ldr r1, _080701C0 @ =gUnknown_0202E8F4\n\
- movs r0, 0x1\n\
- strb r0, [r1]\n\
- movs r0, 0x3\n\
- movs r1, 0xE\n\
- movs r2, 0x1A\n\
- movs r3, 0x13\n\
- bl MenuZeroFillWindowRect\n\
- movs r0, 0x1\n\
- bl PlaySE\n\
- ldr r0, [r4]\n\
- ldrb r1, [r4, 0x5]\n\
- bl PartyMenuUpdateLevelOrStatus\n\
- bl IsDoubleBattle\n\
- adds r1, r0, 0\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- ldrb r1, [r4, 0x5]\n\
- lsls r1, 1\n\
- adds r0, r1\n\
- ldr r1, _080701C4 @ =gUnknown_083769A8\n\
- adds r0, r1\n\
- movs r1, 0x9\n\
- bl task_pc_turn_off\n\
- ldr r2, _080701C8 @ =0xfffff261\n\
- adds r1, r4, r2\n\
- movs r0, 0x2\n\
- strb r0, [r1]\n\
- ldr r0, [r4]\n\
- movs r1, 0x39\n\
- bl GetMonData\n\
- ldrh r1, [r6, 0x16]\n\
- subs r0, r1\n\
- strh r0, [r6, 0x18]\n\
- movs r0, 0x1\n\
- strh r0, [r6, 0x1C]\n\
- ldr r1, _080701CC @ =0xfffff27e\n\
- adds r0, r4, r1\n\
- movs r1, 0x1\n\
- strh r1, [r0]\n\
- ldr r2, _080701D0 @ =0xfffff280\n\
- adds r0, r4, r2\n\
- strh r1, [r0]\n\
- ldrh r1, [r6, 0x16]\n\
- adds r2, 0x2\n\
- adds r0, r4, r2\n\
- strh r1, [r0]\n\
- ldr r0, _080701D4 @ =0xffff8000\n\
- str r0, [r4, 0xC]\n\
- ldr r1, [sp]\n\
- add r1, r10\n\
- ldr r0, _080701D8 @ =sub_806F8AC\n\
- str r0, [r1]\n\
+ ldr r1, _080701C0 @ =gUnknown_0202E8F4\n\
+ movs r0, 0x1\n\
+ strb r0, [r1]\n\
+ movs r0, 0x3\n\
+ movs r1, 0xE\n\
+ movs r2, 0x1A\n\
+ movs r3, 0x13\n\
+ bl MenuZeroFillWindowRect\n\
+ movs r0, 0x1\n\
+ bl PlaySE\n\
+ ldr r0, [r4]\n\
+ ldrb r1, [r4, 0x5]\n\
+ bl PartyMenuUpdateLevelOrStatus\n\
+ bl IsDoubleBattle\n\
+ adds r1, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ ldrb r1, [r4, 0x5]\n\
+ lsls r1, 1\n\
+ adds r0, r1\n\
+ ldr r1, _080701C4 @ =gUnknown_083769A8\n\
+ adds r0, r1\n\
+ movs r1, 0x9\n\
+ bl task_pc_turn_off\n\
+ ldr r2, _080701C8 @ =0xfffff261\n\
+ adds r1, r4, r2\n\
+ movs r0, 0x2\n\
+ strb r0, [r1]\n\
+ ldr r0, [r4]\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ ldrh r1, [r6, 0x16]\n\
+ subs r0, r1\n\
+ strh r0, [r6, 0x18]\n\
+ movs r0, 0x1\n\
+ strh r0, [r6, 0x1C]\n\
+ ldr r1, _080701CC @ =0xfffff27e\n\
+ adds r0, r4, r1\n\
+ movs r1, 0x1\n\
+ strh r1, [r0]\n\
+ ldr r2, _080701D0 @ =0xfffff280\n\
+ adds r0, r4, r2\n\
+ strh r1, [r0]\n\
+ ldrh r1, [r6, 0x16]\n\
+ adds r2, 0x2\n\
+ adds r0, r4, r2\n\
+ strh r1, [r0]\n\
+ ldr r0, _080701D4 @ =0xffff8000\n\
+ str r0, [r4, 0xC]\n\
+ ldr r1, [sp]\n\
+ add r1, r10\n\
+ ldr r0, _080701D8 @ =sub_806F8AC\n\
+ str r0, [r1]\n\
_080701B0:\n\
- add sp, 0x4\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080701C0: .4byte gUnknown_0202E8F4\n\
_080701C4: .4byte gUnknown_083769A8\n\
_080701C8: .4byte 0xfffff261\n\
diff --git a/src/pokemon_2.c b/src/pokemon_2.c
index 87d95e1fa..c591e893a 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -22,8 +22,8 @@ extern u8 gUnknown_02024A60;
extern struct BattlePokemon gBattleMons[4];
extern u16 gUnknown_02024BE6;
extern u8 byte_2024C06;
-extern u8 gUnknown_02024C07;
-extern u8 gUnknown_02024C08;
+extern u8 gPlayerMonIndex;
+extern u8 gEnemyMonIndex;
extern u8 gUnknown_02024C0C;
extern u8 gXXX_CritRelated;
extern u16 gBattleWeather;
@@ -39,10 +39,11 @@ extern u32 gBitTable[];
extern struct BaseStats gBaseStats[];
extern u8 gSpeciesNames[][11];
extern struct BattleMove gBattleMoves[];
-extern struct SpriteTemplate gSpriteTemplate_8208288[];
-extern union AmimCmd *gSpriteAnimTable_81E7C64[];
-extern union AnimCmd **gUnknown_081EC2A4[];
-extern union AnimCmd **gUnknown_081ECACC[];
+extern const struct SpriteTemplate gSpriteTemplate_8208288[];
+extern const union AmimCmd *const gSpriteAnimTable_81E7C64[];
+//array of pointers to arrays of pointers to union AnimCmd (We probably need to typedef this.)
+extern const union AnimCmd *const *const gUnknown_081EC2A4[];
+extern const union AnimCmd *const *const gUnknown_081ECACC[];
extern u8 gTrainerClassToPicIndex[];
extern u8 gTrainerClassToNameIndex[];
extern u8 gSecretBaseTrainerClasses[];
@@ -68,14 +69,14 @@ u8 sub_803C348(u8 a1)
case 1:
for (i = 0; i < 4; i++)
{
- if (battle_side_get_owner(i) == battle_side_get_owner(gUnknown_02024C07) && !(gUnknown_02024C0C & gBitTable[i]))
+ if (battle_side_get_owner(i) == battle_side_get_owner(gPlayerMonIndex) && !(gUnknown_02024C0C & gBitTable[i]))
retVal++;
}
break;
case 2:
for (i = 0; i < 4; i++)
{
- if (battle_side_get_owner(i) == battle_side_get_owner(gUnknown_02024C08) && !(gUnknown_02024C0C & gBitTable[i]))
+ if (battle_side_get_owner(i) == battle_side_get_owner(gEnemyMonIndex) && !(gUnknown_02024C0C & gBitTable[i]))
retVal++;
}
break;
@@ -136,70 +137,70 @@ __attribute__((naked))
u8 sub_803C434(u8 a1)
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- bl battle_get_per_side_status\n\
- movs r1, 0x1\n\
- movs r6, 0x1\n\
- adds r4, r6, 0\n\
- ands r4, r0\n\
- eors r4, r1\n\
- adds r5, r4, 0\n\
- ldr r0, _0803C45C\n\
- ldrh r1, [r0]\n\
- adds r0, r6, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803C460\n\
- adds r0, r4, 0\n\
- b _0803C4AA\n\
- .align 2, 0\n\
+ push {r4-r6,lr}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ bl battle_get_per_side_status\n\
+ movs r1, 0x1\n\
+ movs r6, 0x1\n\
+ adds r4, r6, 0\n\
+ ands r4, r0\n\
+ eors r4, r1\n\
+ adds r5, r4, 0\n\
+ ldr r0, _0803C45C\n\
+ ldrh r1, [r0]\n\
+ adds r0, r6, 0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803C460\n\
+ adds r0, r4, 0\n\
+ b _0803C4AA\n\
+ .align 2, 0\n\
_0803C45C: .4byte gBattleTypeFlags\n\
_0803C460:\n\
- movs r0, 0\n\
- bl sub_803C348\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- bls _0803C484\n\
- bl Random\n\
- adds r1, r6, 0\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _0803C480\n\
- movs r0, 0x2\n\
- eors r0, r4\n\
- b _0803C4AA\n\
+ movs r0, 0\n\
+ bl sub_803C348\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bls _0803C484\n\
+ bl Random\n\
+ adds r1, r6, 0\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _0803C480\n\
+ movs r0, 0x2\n\
+ eors r0, r4\n\
+ b _0803C4AA\n\
_0803C480:\n\
- adds r0, r4, 0\n\
- b _0803C4AA\n\
+ adds r0, r4, 0\n\
+ b _0803C4AA\n\
_0803C484:\n\
- ldr r0, _0803C49C\n\
- ldrb r1, [r0]\n\
- ldr r2, _0803C4A0\n\
- lsls r0, r4, 2\n\
- adds r0, r2\n\
- ldr r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _0803C4A4\n\
- adds r0, r4, 0\n\
- b _0803C4AA\n\
- .align 2, 0\n\
+ ldr r0, _0803C49C\n\
+ ldrb r1, [r0]\n\
+ ldr r2, _0803C4A0\n\
+ lsls r0, r4, 2\n\
+ adds r0, r2\n\
+ ldr r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _0803C4A4\n\
+ adds r0, r4, 0\n\
+ b _0803C4AA\n\
+ .align 2, 0\n\
_0803C49C: .4byte gUnknown_02024C0C\n\
_0803C4A0: .4byte gBitTable\n\
_0803C4A4:\n\
- movs r0, 0x2\n\
- eors r5, r0\n\
- adds r0, r5, 0\n\
+ movs r0, 0x2\n\
+ eors r5, r0\n\
+ adds r0, r5, 0\n\
_0803C4AA:\n\
- bl battle_get_side_with_given_state\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- pop {r4-r6}\n\
- pop {r1}\n\
- bx r1\n\
+ bl battle_get_side_with_given_state\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ pop {r4-r6}\n\
+ pop {r1}\n\
+ bx r1\n\
.syntax divided\n");
}
#endif
@@ -248,7 +249,8 @@ void GetMonSpriteTemplate_803C56C(u16 species, u8 a2)
{
gUnknown_02024E8C = gSpriteTemplate_8208288[a2];
gUnknown_02024E8C.paletteTag = species;
- gUnknown_02024E8C.anims = (union AnimCmd **)gSpriteAnimTable_81E7C64;
+ //Don't know why the compiler says this is incompatible
+ gUnknown_02024E8C.anims = (const union AnimCmd *const *)gSpriteAnimTable_81E7C64;
}
void GetMonSpriteTemplate_803C5A0(u16 species, u8 a2)
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index f313bff49..5f186292f 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -58,8 +58,8 @@ extern u16 gSpeciesIdToCryId[];
extern u8 gUnknown_030041C0[];
extern u8 gUnknown_03004290[];
extern u8 gUnknown_020238CC[];
-extern u8 gUnknown_02024C07;
-extern u8 gUnknown_02024C08;
+extern u8 gPlayerMonIndex;
+extern u8 gEnemyMonIndex;
extern u8 gUnknown_02024C0B;
extern u8 gUnknown_02024E6C;
@@ -203,7 +203,7 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
void sub_803F324(int stat)
{
- gUnknown_02024C08 = gUnknown_02024E6C;
+ gEnemyMonIndex = gUnknown_02024E6C;
StringCopy(gUnknown_030041C0, gUnknown_08400F58[gUnknown_082082F8[stat]]);
StringCopy(gUnknown_03004290, gUnknown_083FFDB3);
get_battle_strings_(gUnknown_083FFDD3);
@@ -244,7 +244,7 @@ u8 *sub_803F378(u16 itemId)
}
else
{
- gUnknown_02024C07 = gUnknown_02024E6C;
+ gPlayerMonIndex = gUnknown_02024E6C;
get_battle_strings_(gUnknown_083FEE92);
}
}
@@ -252,7 +252,7 @@ u8 *sub_803F378(u16 itemId)
if (itemEffect[3] & 0x80)
{
- gUnknown_02024C07 = gUnknown_02024E6C;
+ gPlayerMonIndex = gUnknown_02024E6C;
get_battle_strings_(gUnknown_083FEE5D);
}
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 7263bd323..b148fa644 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -80,84 +80,84 @@ void sub_80B92AC(void)
{
asm(".syntax unified\n\
push {r4-r6,lr}\n\
- bl sub_80BC300\n\
- bl sub_80C045C\n\
- ldr r6, _080B9364 @ =0x02018000\n\
- ldr r0, _080B9368 @ =recordMixingSecretBases\n\
- ldr r1, [r0]\n\
- movs r2, 0xC8\n\
- lsls r2, 4\n\
- adds r0, r6, 0\n\
- bl memcpy\n\
- movs r1, 0xC8\n\
- lsls r1, 4\n\
- adds r0, r6, r1\n\
- ldr r1, _080B936C @ =recordMixingTvShows\n\
- ldr r1, [r1]\n\
- movs r2, 0xE1\n\
- lsls r2, 2\n\
- bl memcpy\n\
- ldr r2, _080B9370 @ =0x00001004\n\
- adds r0, r6, r2\n\
- ldr r1, _080B9374 @ =gUnknown_083D0274\n\
- ldr r1, [r1]\n\
- movs r2, 0x40\n\
- bl memcpy\n\
- ldr r1, _080B9378 @ =0x00001044\n\
- adds r0, r6, r1\n\
- ldr r1, _080B937C @ =gUnknown_083D0278\n\
- ldr r1, [r1]\n\
- movs r2, 0x40\n\
- bl memcpy\n\
- ldr r2, _080B9380 @ =0x00001084\n\
- adds r0, r6, r2\n\
- ldr r1, _080B9384 @ =recordMixingEasyChatPairs\n\
- ldr r1, [r1]\n\
- movs r2, 0x28\n\
- bl memcpy\n\
- ldr r5, _080B9388 @ =gUnknown_02038738\n\
- ldr r4, _080B938C @ =gSaveBlock1\n\
- ldr r0, _080B9390 @ =0x0000303c\n\
- adds r1, r4, r0\n\
- adds r0, r5, 0\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- ldr r2, _080B9394 @ =0x00003074\n\
- adds r1, r4, r2\n\
- adds r0, r5, 0\n\
- adds r0, 0x38\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- ldr r0, _080B9398 @ =0x00002f9c\n\
- adds r4, r0\n\
- adds r0, r4, 0\n\
- adds r1, r5, 0\n\
- bl sub_8041324\n\
- ldr r1, _080B939C @ =0x000010ac\n\
- adds r0, r6, r1\n\
- ldr r1, _080B93A0 @ =gUnknown_083D0280\n\
- ldr r1, [r1]\n\
- movs r2, 0x78\n\
- bl memcpy\n\
- ldr r2, _080B93A4 @ =0x00001124\n\
- adds r0, r6, r2\n\
- ldr r1, _080B93A8 @ =gUnknown_083D0284\n\
- ldr r1, [r1]\n\
- movs r2, 0xA4\n\
- bl memcpy\n\
- bl GetMultiplayerId\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _080B935C\n\
- bl sub_8126338\n\
- ldr r2, _080B93AC @ =0x000011c8\n\
- adds r1, r6, r2\n\
- strh r0, [r1]\n\
+ bl sub_80BC300\n\
+ bl sub_80C045C\n\
+ ldr r6, _080B9364 @ =0x02018000\n\
+ ldr r0, _080B9368 @ =recordMixingSecretBases\n\
+ ldr r1, [r0]\n\
+ movs r2, 0xC8\n\
+ lsls r2, 4\n\
+ adds r0, r6, 0\n\
+ bl memcpy\n\
+ movs r1, 0xC8\n\
+ lsls r1, 4\n\
+ adds r0, r6, r1\n\
+ ldr r1, _080B936C @ =recordMixingTvShows\n\
+ ldr r1, [r1]\n\
+ movs r2, 0xE1\n\
+ lsls r2, 2\n\
+ bl memcpy\n\
+ ldr r2, _080B9370 @ =0x00001004\n\
+ adds r0, r6, r2\n\
+ ldr r1, _080B9374 @ =gUnknown_083D0274\n\
+ ldr r1, [r1]\n\
+ movs r2, 0x40\n\
+ bl memcpy\n\
+ ldr r1, _080B9378 @ =0x00001044\n\
+ adds r0, r6, r1\n\
+ ldr r1, _080B937C @ =gUnknown_083D0278\n\
+ ldr r1, [r1]\n\
+ movs r2, 0x40\n\
+ bl memcpy\n\
+ ldr r2, _080B9380 @ =0x00001084\n\
+ adds r0, r6, r2\n\
+ ldr r1, _080B9384 @ =recordMixingEasyChatPairs\n\
+ ldr r1, [r1]\n\
+ movs r2, 0x28\n\
+ bl memcpy\n\
+ ldr r5, _080B9388 @ =gUnknown_02038738\n\
+ ldr r4, _080B938C @ =gSaveBlock1\n\
+ ldr r0, _080B9390 @ =0x0000303c\n\
+ adds r1, r4, r0\n\
+ adds r0, r5, 0\n\
+ movs r2, 0x38\n\
+ bl memcpy\n\
+ ldr r2, _080B9394 @ =0x00003074\n\
+ adds r1, r4, r2\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x38\n\
+ movs r2, 0x38\n\
+ bl memcpy\n\
+ ldr r0, _080B9398 @ =0x00002f9c\n\
+ adds r4, r0\n\
+ adds r0, r4, 0\n\
+ adds r1, r5, 0\n\
+ bl sub_8041324\n\
+ ldr r1, _080B939C @ =0x000010ac\n\
+ adds r0, r6, r1\n\
+ ldr r1, _080B93A0 @ =gUnknown_083D0280\n\
+ ldr r1, [r1]\n\
+ movs r2, 0x78\n\
+ bl memcpy\n\
+ ldr r2, _080B93A4 @ =0x00001124\n\
+ adds r0, r6, r2\n\
+ ldr r1, _080B93A8 @ =gUnknown_083D0284\n\
+ ldr r1, [r1]\n\
+ movs r2, 0xA4\n\
+ bl memcpy\n\
+ bl GetMultiplayerId\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _080B935C\n\
+ bl sub_8126338\n\
+ ldr r2, _080B93AC @ =0x000011c8\n\
+ adds r1, r6, r2\n\
+ strh r0, [r1]\n\
_080B935C:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080B9364: .4byte 0x02018000\n\
_080B9368: .4byte recordMixingSecretBases\n\
_080B936C: .4byte recordMixingTvShows\n\
@@ -551,70 +551,70 @@ void sub_80B9BC4(u32 a, u32 b, u32 c, u32 d)
{
asm(".syntax unified\n\
push {r4-r6,lr}\n\
- mov r6, r10\n\
- mov r5, r9\n\
- mov r4, r8\n\
- push {r4-r6}\n\
- sub sp, 0x38\n\
- mov r8, r0\n\
- mov r10, r1\n\
- mov r9, r2\n\
- adds r4, r3, 0\n\
- ldr r5, [sp, 0x54]\n\
- lsls r4, 24\n\
- lsls r5, 24\n\
- lsrs r5, 24\n\
- lsrs r4, 23\n\
- add r4, r9\n\
- ldrb r0, [r4]\n\
- mov r6, r10\n\
- muls r6, r0\n\
- add r6, r8\n\
- ldrb r0, [r4, 0x1]\n\
- lsls r1, r0, 3\n\
- subs r1, r0\n\
- lsls r1, 3\n\
- adds r1, r6, r1\n\
- mov r0, sp\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- lsls r5, 1\n\
- add r5, r9\n\
- ldrb r0, [r5]\n\
- mov r1, r10\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- add r8, r0\n\
- ldrb r1, [r4, 0x1]\n\
- lsls r0, r1, 3\n\
- subs r0, r1\n\
- lsls r0, 3\n\
- adds r6, r0\n\
- ldrb r0, [r5, 0x1]\n\
- lsls r1, r0, 3\n\
- subs r1, r0\n\
- lsls r1, 3\n\
- add r1, r8\n\
- adds r0, r6, 0\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- ldrb r1, [r5, 0x1]\n\
- lsls r0, r1, 3\n\
- subs r0, r1\n\
- lsls r0, 3\n\
- add r8, r0\n\
- mov r0, r8\n\
- mov r1, sp\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- add sp, 0x38\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
+ mov r6, r10\n\
+ mov r5, r9\n\
+ mov r4, r8\n\
+ push {r4-r6}\n\
+ sub sp, 0x38\n\
+ mov r8, r0\n\
+ mov r10, r1\n\
+ mov r9, r2\n\
+ adds r4, r3, 0\n\
+ ldr r5, [sp, 0x54]\n\
+ lsls r4, 24\n\
+ lsls r5, 24\n\
+ lsrs r5, 24\n\
+ lsrs r4, 23\n\
+ add r4, r9\n\
+ ldrb r0, [r4]\n\
+ mov r6, r10\n\
+ muls r6, r0\n\
+ add r6, r8\n\
+ ldrb r0, [r4, 0x1]\n\
+ lsls r1, r0, 3\n\
+ subs r1, r0\n\
+ lsls r1, 3\n\
+ adds r1, r6, r1\n\
+ mov r0, sp\n\
+ movs r2, 0x38\n\
+ bl memcpy\n\
+ lsls r5, 1\n\
+ add r5, r9\n\
+ ldrb r0, [r5]\n\
+ mov r1, r10\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ add r8, r0\n\
+ ldrb r1, [r4, 0x1]\n\
+ lsls r0, r1, 3\n\
+ subs r0, r1\n\
+ lsls r0, 3\n\
+ adds r6, r0\n\
+ ldrb r0, [r5, 0x1]\n\
+ lsls r1, r0, 3\n\
+ subs r1, r0\n\
+ lsls r1, 3\n\
+ add r1, r8\n\
+ adds r0, r6, 0\n\
+ movs r2, 0x38\n\
+ bl memcpy\n\
+ ldrb r1, [r5, 0x1]\n\
+ lsls r0, r1, 3\n\
+ subs r0, r1\n\
+ lsls r0, 3\n\
+ add r8, r0\n\
+ mov r0, r8\n\
+ mov r1, sp\n\
+ movs r2, 0x38\n\
+ bl memcpy\n\
+ add sp, 0x38\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
#endif
diff --git a/src/rom3.c b/src/rom3.c
index a5227d9d9..84032c933 100644
--- a/src/rom3.c
+++ b/src/rom3.c
@@ -34,8 +34,8 @@ extern u16 gUnknown_02024BE6;
extern u16 gUnknown_02024BE8;
extern u16 gUnknown_02024C04;
extern u8 byte_2024C06;
-extern u8 gUnknown_02024C07;
-extern u8 gUnknown_02024C08;
+extern u8 gPlayerMonIndex;
+extern u8 gEnemyMonIndex;
extern u8 gUnknown_02024C0A;
extern u8 gUnknown_02024C0B;
extern u8 gUnknown_02024C0C;
@@ -422,8 +422,8 @@ void dp01_prepare_buffer_wireless_probably(u8 a, u16 b, u8 *c)
}
unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14000] = a;
unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14001] = gUnknown_02024A60;
- unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14002] = gUnknown_02024C07;
- unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14003] = gUnknown_02024C08;
+ unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14002] = gPlayerMonIndex;
+ unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14003] = gEnemyMonIndex;
unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14004] = r9;
unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14005] = (r9 & 0x0000FF00) >> 8;
unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14006] = gUnknown_02024C0C;
@@ -565,8 +565,8 @@ void sub_800C47C(u8 taskId)
sub_80155A4(r4);
if (!(gBattleTypeFlags & BATTLE_TYPE_WILD))
{
- gUnknown_02024C07 = unk_2000000[0x15000 + gTasks[taskId].data[15] + 2];
- gUnknown_02024C08 = unk_2000000[0x15000 + gTasks[taskId].data[15] + 3];
+ gPlayerMonIndex = unk_2000000[0x15000 + gTasks[taskId].data[15] + 2];
+ gEnemyMonIndex = unk_2000000[0x15000 + gTasks[taskId].data[15] + 3];
gUnknown_02024C0C = unk_2000000[0x15000 + gTasks[taskId].data[15] + 6];
gUnknown_02024C0A = unk_2000000[0x15000 + gTasks[taskId].data[15] + 7];
}
diff --git a/src/rom4.c b/src/rom4.c
index bc9af5c66..05396cfc3 100644
--- a/src/rom4.c
+++ b/src/rom4.c
@@ -2162,8 +2162,8 @@ u8 *sub_805568C(struct UnkStruct_8054FF8 *a1)
return TradeRoom_TooBusyToNotice;
if (!sub_8083BF4(linkPlayerId))
return TradeRoom_ReadTrainerCard1;
- else
- return TradeRoom_ReadTrainerCard2;
+ else
+ return TradeRoom_ReadTrainerCard2;
}
return sub_80682A8(&unkStruct, a1->field_C, a1->d);
diff --git a/src/sprite.c b/src/sprite.c
index 9e7e3c9ff..43ee5696b 100644
--- a/src/sprite.c
+++ b/src/sprite.c
@@ -36,7 +36,7 @@ struct OamMatrix
struct SpriteCopyRequest
{
- u8 *src;
+ const u8 *src;
u8 *dest;
u16 size;
};
@@ -95,7 +95,7 @@ static void ApplyAffineAnimFrame(u8 matrixNum, struct AffineAnimFrameCmd *frameC
static void ResetAffineAnimData(void);
static u8 IndexOfSpriteTileTag(u16 tag);
static void AllocSpriteTileRange(u16 tag, u16 start, u16 count);
-static void DoLoadSpritePalette(u16 *src, u16 paletteOffset);
+static void DoLoadSpritePalette(const u16 *src, u16 paletteOffset);
typedef void (*AnimFunc)(struct Sprite *);
typedef void (*AnimCmdFunc)(struct Sprite *);
@@ -171,51 +171,51 @@ static const u8 sCenterToCornerVecTable[3][4][2] =
static const struct Sprite sDummySprite =
{
- DUMMY_OAM_DATA,
- (union AnimCmd **)gDummySpriteAnimTable,
- NULL,
- (union AffineAnimCmd **)gDummySpriteAffineAnimTable,
- (struct SpriteTemplate *)&gDummySpriteTemplate,
- NULL,
- SpriteCallbackDummy,
- { 304, 160 },
- { 0, 0 },
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0xFF
+ .oam = DUMMY_OAM_DATA,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .template = &gDummySpriteTemplate,
+ .subspriteTables = NULL,
+ .callback = SpriteCallbackDummy,
+ .pos1 = { 304, 160 },
+ .pos2 = { 0, 0 },
+ .centerToCornerVecX = 0,
+ .centerToCornerVecY = 0,
+ .animNum = 0,
+ .animCmdIndex = 0,
+ .animDelayCounter = 0,
+ .animPaused = 0,
+ .affineAnimPaused = 0,
+ .animLoopCounter = 0,
+ .data0 = 0,
+ .data1 = 0,
+ .data2 = 0,
+ .data3 = 0,
+ .data4 = 0,
+ .data5 = 0,
+ .data6 = 0,
+ .data7 = 0,
+ .inUse = 0,
+ .coordOffsetEnabled = 0,
+ .invisible = 0,
+ .flags_3 = 0,
+ .flags_4 = 0,
+ .flags_5 = 0,
+ .flags_6 = 0,
+ .flags_7 = 0,
+ .hFlip = 0,
+ .vFlip = 0,
+ .animBeginning = 0,
+ .affineAnimBeginning = 0,
+ .animEnded = 0,
+ .affineAnimEnded = 0,
+ .usingSheet = 0,
+ .flags_f = 0,
+ .sheetTileStart = 0,
+ .subspriteTableNum = 0,
+ .subspriteMode = 0,
+ .subpriority = 0xFF
};
const struct OamData gDummyOamData = DUMMY_OAM_DATA;
@@ -230,13 +230,13 @@ const union AffineAnimCmd * const gDummySpriteAffineAnimTable[] = { &sDummyAffin
const struct SpriteTemplate gDummySpriteTemplate =
{
- 0,
- 0xFFFF,
- (struct OamData *)&gDummyOamData,
- (union AnimCmd **)gDummySpriteAnimTable,
- NULL,
- (union AffineAnimCmd **)gDummySpriteAffineAnimTable,
- SpriteCallbackDummy
+ .tileTag = 0,
+ .paletteTag = 0xFFFF,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
};
// TODO: Find out what these are used for.
@@ -840,7 +840,7 @@ static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, struct SpriteFra
}
}
-void RequestSpriteCopy(u8 *src, u8 *dest, u16 size)
+void RequestSpriteCopy(const u8 *src, u8 *dest, u16 size)
{
if (gSpriteCopyRequestCount < MAX_SPRITE_COPY_REQUESTS)
{
@@ -1468,7 +1468,7 @@ void SetOamMatrixRotationScaling(u8 matrixNum, s16 xScale, s16 yScale, u16 rotat
CopyOamMatrix(matrixNum, &matrix);
}
-u16 LoadSpriteSheet(struct SpriteSheet *sheet)
+u16 LoadSpriteSheet(const struct SpriteSheet *sheet)
{
s16 tileStart = AllocSpriteTiles(sheet->size / TILE_SIZE_4BPP);
@@ -1484,7 +1484,7 @@ u16 LoadSpriteSheet(struct SpriteSheet *sheet)
}
}
-void LoadSpriteSheets(struct SpriteSheet *sheets)
+void LoadSpriteSheets(const struct SpriteSheet *sheets)
{
u8 i;
for (i = 0; sheets[i].data != NULL; i++)
@@ -1515,7 +1515,7 @@ void AllocTilesForSpriteSheets(struct SpriteSheet *sheets)
void LoadTilesForSpriteSheet(const struct SpriteSheet *sheet)
{
- u8 *data = sheet->data;
+ const u8 *data = sheet->data;
u16 tileStart = GetSpriteTileStartByTag(sheet->tag);
CpuCopy16(data, (u8 *)OBJ_VRAM0 + TILE_SIZE_4BPP * tileStart, sheet->size);
}
@@ -1601,7 +1601,7 @@ static void AllocSpriteTileRange(u16 tag, u16 start, u16 count)
void RequestSpriteSheetCopy(const struct SpriteSheet *sheet)
{
- u8 *data = sheet->data;
+ const u8 *data = sheet->data;
u16 tileStart = GetSpriteTileStartByTag(sheet->tag);
RequestSpriteCopy(data, (u8 *)OBJ_VRAM0 + tileStart * TILE_SIZE_4BPP, sheet->size);
}
@@ -1659,7 +1659,7 @@ void LoadSpritePalettes(const struct SpritePalette *palettes)
break;
}
-static void DoLoadSpritePalette(u16 *src, u16 paletteOffset)
+static void DoLoadSpritePalette(const u16 *src, u16 paletteOffset)
{
LoadPalette(src, paletteOffset + 0x100, 32);
}
diff --git a/src/start_menu.c b/src/start_menu.c
index 8a56b6c33..9c10c4cae 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -283,7 +283,7 @@ void CreateStartMenuTask(void (*func)(u8))
void sub_80712B4(u8 taskId)
{
- struct Task *task = &gTasks[taskId];
+ struct Task *task = &gTasks[taskId];
switch (task->data[0])
{
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 4a6fb11eb..63d153ebd 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -8,6 +8,7 @@
#include "pokedex.h"
#include "songs.h"
#include "sound.h"
+#include "species.h"
#include "sprite.h"
#include "string_util.h"
#include "task.h"
@@ -19,32 +20,219 @@ struct MonCoords
};
extern void * const gUnknown_081FAF4C[];
-extern const u8 gStarterChoose_PokeballCoords[][2];
-extern u8 gBirchHelpGfx[];
-extern u8 gBirchBagTilemap[];
-extern u8 gBirchGrassTilemap[];
-extern struct SpriteSheet gUnknown_083F7794;
-extern struct SpriteSheet gUnknown_083F77A4;
-extern u8 gBirchBagGrassPal[];
-extern const u8 gStarterChoose_LabelCoords[][2];
-extern u16 gStarterMons[];
-extern union AffineAnimCmd *gSpriteAffineAnimTable_83F778C[];
-extern u8 gOtherText_DoYouChoosePoke[];
+extern const u8 gOtherText_DoYouChoosePoke[];
extern u16 gScriptResult;
-extern u8 gSpeciesNames[][11];
-extern u8 gOtherText_Poke[];
+extern const u8 gSpeciesNames[][11];
+extern const u8 gOtherText_Poke[];
extern const struct SpriteSheet gMonFrontPicTable[];
extern const struct MonCoords gMonFrontPicCoords[];
extern const struct SpritePalette gMonPaletteTable[];
-extern u8 gUnknown_083F76E4[][2];
-extern u8 gOtherText_BirchInTrouble[];
-
-extern struct SpriteTemplate gSpriteTemplate_83F77E4;
-extern struct SpriteTemplate gSpriteTemplate_83F77CC;
-extern struct SpritePalette gUnknown_083F77B4[];
-extern struct SpriteTemplate gSpriteTemplate_83F77FC;
+extern const u8 gOtherText_BirchInTrouble[];
extern struct SpriteTemplate gUnknown_02024E8C;
+//--------------------------------------------------
+// Graphics Data
+//--------------------------------------------------
+
+const u16 gBirchBagGrassPal[][16] =
+{
+ INCBIN_U16("graphics/misc/birch_bag.gbapal"),
+ INCBIN_U16("graphics/misc/birch_grass.gbapal"),
+};
+static const u16 gBirchBallarrow_Pal[] = INCBIN_U16("graphics/misc/birch_ballarrow.gbapal");
+static const u16 gBirchCircle_Pal[] = INCBIN_U16("graphics/misc/birch_circle.gbapal");
+const u8 gBirchBagTilemap[] = INCBIN_U8("graphics/misc/birch_bag_map.bin.lz");
+const u8 gBirchGrassTilemap[] = INCBIN_U8("graphics/misc/birch_grass_map.bin.lz");
+const u8 gBirchHelpGfx[] = INCBIN_U8("graphics/misc/birch_help.4bpp.lz");
+static const u8 gBirchBallarrow_Gfx[] = INCBIN_U8("graphics/misc/birch_ballarrow.4bpp.lz");
+static const u8 gBirchCircle_Gfx[] = INCBIN_U8("graphics/misc/birch_circle.4bpp.lz");
+static const u8 gStarterChoose_PokeballCoords[][2] =
+{
+ {60, 64},
+ {120, 88},
+ {180, 64},
+};
+static const u8 gStarterChoose_LabelCoords[][2] =
+{
+ {0, 9},
+ {16, 10},
+ {8, 4},
+};
+static const u16 sStarterMons[] = {SPECIES_TREECKO, SPECIES_TORCHIC, SPECIES_MUDKIP};
+static const struct OamData gOamData_83F76CC =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const struct OamData gOamData_83F76D4 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const struct OamData gOamData_83F76DC =
+{
+ .y = 160,
+ .affineMode = 3,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const u8 gUnknown_083F76E4[][2] =
+{
+ {60, 32},
+ {120, 56},
+ {180, 32},
+ {0, 0},
+};
+static const union AnimCmd gSpriteAnim_83F76EC[] =
+{
+ ANIMCMD_FRAME(48, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_83F76F4[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_83F76FC[] =
+{
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(32, 4),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(0, 32),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(16, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(32, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_JUMP(0),
+};
+static const union AnimCmd gSpriteAnim_83F7744[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F774C[] =
+{
+ gSpriteAnim_83F76EC,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F7750[] =
+{
+ gSpriteAnim_83F76F4,
+ gSpriteAnim_83F76FC,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F7758[] =
+{
+ gSpriteAnim_83F7744,
+};
+static const union AffineAnimCmd gSpriteAffineAnim_83F775C[] =
+{
+ AFFINEANIMCMD_FRAME(16, 16, 0, 0),
+ AFFINEANIMCMD_FRAME(16, 16, 0, 15),
+ AFFINEANIMCMD_END,
+};
+static const union AffineAnimCmd gSpriteAffineAnim_83F7774[] =
+{
+ AFFINEANIMCMD_FRAME(20, 20, 0, 0),
+ AFFINEANIMCMD_FRAME(20, 20, 0, 15),
+ AFFINEANIMCMD_END,
+};
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_83F778C[] =
+{
+ gSpriteAffineAnim_83F775C,
+};
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7790[] =
+{
+ gSpriteAffineAnim_83F7774,
+};
+static const struct SpriteSheet gUnknown_083F7794[] =
+{
+ {gBirchBallarrow_Gfx, 0x0800, 0x1000},
+ {NULL},
+};
+static const struct SpriteSheet gUnknown_083F77A4[] =
+{
+ {gBirchCircle_Gfx, 0x0800, 0x1001},
+ {NULL},
+};
+const struct SpritePalette gUnknown_083F77B4[] =
+{
+ {gBirchBallarrow_Pal, 0x1000},
+ {gBirchCircle_Pal, 0x1001},
+ {NULL},
+};
+static void sub_810A62C(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F77CC =
+{
+ .tileTag = 4096,
+ .paletteTag = 4096,
+ .oam = &gOamData_83F76CC,
+ .anims = gSpriteAnimTable_83F774C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810A62C,
+};
+static void sub_810A68C(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F77E4 =
+{
+ .tileTag = 4096,
+ .paletteTag = 4096,
+ .oam = &gOamData_83F76D4,
+ .anims = gSpriteAnimTable_83F7750,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810A68C,
+};
+static void StarterPokemonSpriteAnimCallback(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F77FC =
+{
+ .tileTag = 4097,
+ .paletteTag = 4097,
+ .oam = &gOamData_83F76DC,
+ .anims = gSpriteAnimTable_83F7758,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83F7790,
+ .callback = StarterPokemonSpriteAnimCallback,
+};
+
static void MainCallback2(void);
static void Task_StarterChoose1(u8 taskId);
static void Task_StarterChoose2(u8 taskId);
@@ -60,19 +248,12 @@ static u8 CreatePokemonFrontSprite(u16, u8, u8);
#define STARTER_PKMN_POS_X 120
#define STARTER_PKMN_POS_Y 64
-//Task data
-enum {
- TD_STARTERSELECTION,
- TD_PKMN_SPRITE_ID,
- TD_CIRCLE_SPRITE_ID,
-};
-
//Retrieves one of the available starter Pokemon
u16 GetStarterPokemon(u16 n)
{
if (n > 3)
n = 0;
- return gStarterMons[n];
+ return sStarterMons[n];
}
static void VblankCallback(void)
@@ -82,6 +263,10 @@ static void VblankCallback(void)
TransferPlttBuffer();
}
+#define tStarterSelection data[0]
+#define tPkmnSpriteId data[1]
+#define tCircleSpriteId data[2]
+
void CB2_ChooseStarter(void)
{
u16 savedIme;
@@ -116,9 +301,9 @@ void CB2_ChooseStarter(void)
ResetSpriteData();
ResetPaletteFade();
FreeAllSpritePalettes();
- LoadPalette(gBirchBagGrassPal, 0, 0x40);
- LoadCompressedObjectPic(&gUnknown_083F7794);
- LoadCompressedObjectPic(&gUnknown_083F77A4);
+ LoadPalette(gBirchBagGrassPal, 0, sizeof(gBirchBagGrassPal));
+ LoadCompressedObjectPic(&gUnknown_083F7794[0]);
+ LoadCompressedObjectPic(&gUnknown_083F77A4[0]);
LoadSpritePalettes(gUnknown_083F77B4);
SetUpWindowConfig(&gWindowConfig_81E6C3C);
InitMenuWindow(&gWindowConfig_81E6CE4);
@@ -146,7 +331,7 @@ void CB2_ChooseStarter(void)
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON;
taskId = CreateTask(Task_StarterChoose1, 0);
- gTasks[taskId].data[TD_STARTERSELECTION] = 1;
+ gTasks[taskId].tStarterSelection = 1;
//Create hand sprite
spriteId = CreateSprite(&gSpriteTemplate_83F77CC, 120, 56, 2);
@@ -180,7 +365,7 @@ static void MainCallback2(void)
static void Task_StarterChoose1(u8 taskId)
{
- CreateStarterPokemonLabel(0xFF, gTasks[taskId].data[TD_STARTERSELECTION]);
+ CreateStarterPokemonLabel(0xFF, gTasks[taskId].tStarterSelection);
MenuDrawTextWindow(2, 14, 27, 19);
MenuPrint(gOtherText_BirchInTrouble, 3, 15);
gTasks[taskId].func = Task_StarterChoose2;
@@ -188,7 +373,7 @@ static void Task_StarterChoose1(u8 taskId)
static void Task_StarterChoose2(u8 taskId)
{
- u8 selection = gTasks[taskId].data[TD_STARTERSELECTION];
+ u8 selection = gTasks[taskId].tStarterSelection;
if (gMain.newKeys & A_BUTTON)
{
@@ -209,16 +394,16 @@ static void Task_StarterChoose2(u8 taskId)
gStarterChoose_PokeballCoords[selection][0],
gStarterChoose_PokeballCoords[selection][1],
1);
- gTasks[taskId].data[TD_CIRCLE_SPRITE_ID] = spriteId;
+ gTasks[taskId].tCircleSpriteId = spriteId;
//Create Pokemon sprite
spriteId = CreatePokemonFrontSprite(
- GetStarterPokemon(gTasks[taskId].data[TD_STARTERSELECTION]),
+ GetStarterPokemon(gTasks[taskId].tStarterSelection),
gStarterChoose_PokeballCoords[selection][0],
gStarterChoose_PokeballCoords[selection][1]);
gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_83F778C;
gSprites[spriteId].callback = StarterPokemonSpriteAnimCallback;
- gTasks[taskId].data[TD_PKMN_SPRITE_ID] = spriteId;
+ gTasks[taskId].tPkmnSpriteId = spriteId;
gTasks[taskId].func = Task_StarterChoose3;
}
@@ -226,22 +411,22 @@ static void Task_StarterChoose2(u8 taskId)
{
if ((gMain.newKeys & DPAD_LEFT) && selection > 0)
{
- gTasks[taskId].data[TD_STARTERSELECTION]--;
- CreateStarterPokemonLabel(selection, gTasks[taskId].data[TD_STARTERSELECTION]);
+ gTasks[taskId].tStarterSelection--;
+ CreateStarterPokemonLabel(selection, gTasks[taskId].tStarterSelection);
}
else if ((gMain.newKeys & DPAD_RIGHT) && selection < 2)
{
- gTasks[taskId].data[TD_STARTERSELECTION]++;
- CreateStarterPokemonLabel(selection, gTasks[taskId].data[TD_STARTERSELECTION]);
+ gTasks[taskId].tStarterSelection++;
+ CreateStarterPokemonLabel(selection, gTasks[taskId].tStarterSelection);
}
}
}
static void Task_StarterChoose3(u8 taskId)
{
- if (gSprites[gTasks[taskId].data[TD_CIRCLE_SPRITE_ID]].affineAnimEnded &&
- gSprites[gTasks[taskId].data[TD_CIRCLE_SPRITE_ID]].pos1.x == STARTER_PKMN_POS_X &&
- gSprites[gTasks[taskId].data[TD_CIRCLE_SPRITE_ID]].pos1.y == STARTER_PKMN_POS_Y)
+ if (gSprites[gTasks[taskId].tCircleSpriteId].affineAnimEnded &&
+ gSprites[gTasks[taskId].tCircleSpriteId].pos1.x == STARTER_PKMN_POS_X &&
+ gSprites[gTasks[taskId].tCircleSpriteId].pos1.y == STARTER_PKMN_POS_Y)
{
gTasks[taskId].func = Task_StarterChoose4;
}
@@ -249,7 +434,7 @@ static void Task_StarterChoose3(u8 taskId)
static void Task_StarterChoose4(u8 taskId)
{
- PlayCry1(GetStarterPokemon(gTasks[taskId].data[TD_STARTERSELECTION]), 0);
+ PlayCry1(GetStarterPokemon(gTasks[taskId].tStarterSelection), 0);
MenuDrawTextWindow(2, 14, 27, 19);
//"Do you choose this POKEMON?"
MenuPrint(gOtherText_DoYouChoosePoke, 3, 15);
@@ -263,22 +448,22 @@ static void Task_StarterChoose5(u8 taskId)
switch (ProcessMenuInputNoWrap_())
{
- case 0: //YES
+ case 0: // YES
//Return the starter choice and exit.
- gScriptResult = gTasks[taskId].data[TD_STARTERSELECTION];
+ gScriptResult = gTasks[taskId].tStarterSelection;
SetMainCallback2(gMain.savedCallback);
break;
- case 1: //NO
- case -1: //B button
+ case 1: // NO
+ case -1: // B button
PlaySE(SE_SELECT);
MenuZeroFillWindowRect(21, 7, 27, 12);
- spriteId = gTasks[taskId].data[TD_PKMN_SPRITE_ID];
+ spriteId = gTasks[taskId].tPkmnSpriteId;
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum));
FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
DestroySprite(&gSprites[spriteId]);
- spriteId = gTasks[taskId].data[TD_CIRCLE_SPRITE_ID];
+ spriteId = gTasks[taskId].tCircleSpriteId;
FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
DestroySprite(&gSprites[spriteId]);
gTasks[taskId].func = Task_StarterChoose6;
@@ -372,9 +557,8 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection)
REG_WIN0V = WIN_RANGE(labelTop, labelBottom);
}
-void nullsub_72(struct Sprite *sprite)
+static void nullsub_72(struct Sprite *sprite)
{
-
}
static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y)
@@ -395,25 +579,25 @@ static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y)
}
//Sprite callback
-void sub_810A62C(struct Sprite *sprite)
+static void sub_810A62C(struct Sprite *sprite)
{
- sprite->pos1.x = gUnknown_083F76E4[gTasks[sprite->data0].data[TD_STARTERSELECTION]][0];
- sprite->pos1.y = gUnknown_083F76E4[gTasks[sprite->data0].data[TD_STARTERSELECTION]][1];
+ sprite->pos1.x = gUnknown_083F76E4[gTasks[sprite->data0].tStarterSelection][0];
+ sprite->pos1.y = gUnknown_083F76E4[gTasks[sprite->data0].tStarterSelection][1];
sprite->pos2.y = Sin(sprite->data1, 8);
sprite->data1 = (u8)sprite->data1 + 4;
}
//Sprite callback
-void sub_810A68C(struct Sprite *sprite)
+static void sub_810A68C(struct Sprite *sprite)
{
- if (gTasks[sprite->data0].data[TD_STARTERSELECTION] == sprite->data1)
+ if (gTasks[sprite->data0].tStarterSelection == sprite->data1)
StartSpriteAnimIfDifferent(sprite, 1);
else
StartSpriteAnimIfDifferent(sprite, 0);
}
//Sprite callback
-void StarterPokemonSpriteAnimCallback(struct Sprite *sprite)
+static void StarterPokemonSpriteAnimCallback(struct Sprite *sprite)
{
//Move sprite to upper center of screen
if (sprite->pos1.x > STARTER_PKMN_POS_X)
diff --git a/src/title_screen.c b/src/title_screen.c
index 35f3d049c..1565abf62 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -19,32 +19,270 @@ extern struct MusicPlayerInfo gMPlay_BGM;
extern u8 gUnknown_0202F7E4;
extern u16 gUnknown_030041B4;
extern u16 gUnknown_030042C0;
-extern u8 gUnknown_08393210[];
-extern u8 gUnknown_08393250[];
-extern u8 gUnknown_083939EC[];
-extern u8 gUnknown_08393BF8[];
-extern u16 gUnknown_08393E64[];
-extern struct SpriteTemplate gSpriteTemplate_8393ECC;
-extern struct SpriteTemplate gSpriteTemplate_8393EE4;
-extern struct SpriteSheet gUnknown_08393EFC;
-extern struct SpriteTemplate gSpriteTemplate_8393F74;
-extern struct SpriteSheet gUnknown_08393F8C;
-extern const struct SpritePalette gUnknown_08393F9C[];
-extern struct SpriteTemplate gSpriteTemplate_8393FC0;
-extern struct SpriteSheet gUnknown_08393FD8;
-extern u8 gUnknown_08E9D8CC[];
-extern u8 gUnknown_08E9F624[];
-extern u8 gUnknown_08E9F7E4[];
+extern const u8 gUnknown_08E9D8CC[];
+extern const u16 gUnknown_08E9F624[];
+extern const u8 gUnknown_08E9F7E4[];
+extern const u8 gVersionTiles[];
+extern const u8 gTitleScreenPressStart_Gfx[];
+extern const u16 gTitleScreenLogoShinePalette[];
-static void MainCB2(void);
-static void Task_TitleScreenPhase1(u8);
-static void Task_TitleScreenPhase2(u8);
-static void Task_TitleScreenPhase3(u8);
-static void CB2_GoToMainMenu(void);
-static void CB2_GoToClearSaveDataScreen(void);
-static void CB2_GoToResetRtcScreen(void);
-static void CB2_GoToCopyrightScreen(void);
-static void UpdateLegendaryMarkingColor(u8);
+#ifdef SAPPHIRE
+static const u16 sLegendaryMonPalettes[][16] =
+{
+ INCBIN_U16("graphics/title_screen/kyogre_dark.gbapal"),
+ INCBIN_U16("graphics/title_screen/kyogre_glow.gbapal"),
+};
+static const u8 sLegendaryMonPixelData[] = INCBIN_U8("graphics/title_screen/kyogre.4bpp.lz");
+static const u8 sLegendaryMonTilemap[] = INCBIN_U8("graphics/title_screen/kyogre_map.bin.lz");
+static const u8 sBackdropTilemap[] = INCBIN_U8("graphics/title_screen/water_map.bin.lz");
+#else
+static const u16 sLegendaryMonPalettes[][16] =
+{
+ INCBIN_U16("graphics/title_screen/groudon_dark.gbapal"),
+ INCBIN_U16("graphics/title_screen/groudon_glow.gbapal"),
+};
+static const u8 sLegendaryMonPixelData[] = INCBIN_U8("graphics/title_screen/groudon.4bpp.lz");
+static const u8 sLegendaryMonTilemap[] = INCBIN_U8("graphics/title_screen/groudon_map.bin.lz");
+static const u8 sBackdropTilemap[] = INCBIN_U8("graphics/title_screen/lava_map.bin.lz");
+#endif
+static const u8 sLogoShineTiles[] = INCBIN_U8("graphics/title_screen/logo_shine.4bpp.lz");
+const u16 gUnknown_08393E64[] =
+{
+ 0x10,
+ 0x110,
+ 0x210,
+ 0x310,
+ 0x410,
+ 0x510,
+ 0x610,
+ 0x710,
+ 0x810,
+ 0x910,
+ 0xA10,
+ 0xB10,
+ 0xC10,
+ 0xD10,
+ 0xE10,
+ 0xF10,
+ 0x100F,
+ 0x100E,
+ 0x100D,
+ 0x100C,
+ 0x100B,
+ 0x100A,
+ 0x1009,
+ 0x1008,
+ 0x1007,
+ 0x1006,
+ 0x1005,
+ 0x1004,
+ 0x1003,
+ 0x1002,
+ 0x1001,
+ 0x1000,
+};
+static const struct OamData sVersionBannerLeftOamData =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 1,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const struct OamData sVersionBannerRightOamData =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 1,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd sVersionBannerLeftAnimSequence[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd sVersionBannerRightAnimSequence[] =
+{
+ ANIMCMD_FRAME(64, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const sVersionBannerLeftAnimTable[] =
+{
+ sVersionBannerLeftAnimSequence,
+};
+static const union AnimCmd *const sVersionBannerRightAnimTable[] =
+{
+ sVersionBannerRightAnimSequence,
+};
+static const struct SpriteTemplate sVersionBannerLeftSpriteTemplate =
+{
+ .tileTag = 1000,
+ .paletteTag = 1000,
+ .oam = &sVersionBannerLeftOamData,
+ .anims = sVersionBannerLeftAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallback_VersionBannerLeft,
+};
+static const struct SpriteTemplate sVersionBannerRightSpriteTemplate =
+{
+ .tileTag = 1000,
+ .paletteTag = 1000,
+ .oam = &sVersionBannerRightOamData,
+ .anims = sVersionBannerRightAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallback_VersionBannerRight,
+};
+static const struct SpriteSheet gUnknown_08393EFC[] =
+{
+ {gVersionTiles, 0x1000, 1000},
+ {NULL},
+};
+static const struct OamData gOamData_8393F0C =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_8393F14[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F1C[] =
+{
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F24[] =
+{
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F2C[] =
+{
+ ANIMCMD_FRAME(12, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F34[] =
+{
+ ANIMCMD_FRAME(16, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F3C[] =
+{
+ ANIMCMD_FRAME(20, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F44[] =
+{
+ ANIMCMD_FRAME(24, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_8393F4C[] =
+{
+ ANIMCMD_FRAME(28, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const sStartCopyrightBannerAnimTable[] =
+{
+ gSpriteAnim_8393F14,
+ gSpriteAnim_8393F1C,
+ gSpriteAnim_8393F24,
+ gSpriteAnim_8393F2C,
+ gSpriteAnim_8393F34,
+ gSpriteAnim_8393F3C,
+ gSpriteAnim_8393F44,
+ gSpriteAnim_8393F4C,
+};
+static const struct SpriteTemplate sStartCopyrightBannerSpriteTemplate =
+{
+ .tileTag = 1001,
+ .paletteTag = 1001,
+ .oam = &gOamData_8393F0C,
+ .anims = sStartCopyrightBannerAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallback_PressStartCopyrightBanner,
+};
+static const struct SpriteSheet gUnknown_08393F8C[] =
+{
+ {gTitleScreenPressStart_Gfx, 0x520, 1001},
+ {NULL},
+};
+const struct SpritePalette sPokemonLogoShinePalette[] =
+{
+ {gTitleScreenLogoShinePalette, 1001},
+ {NULL},
+};
+static const struct OamData sPokemonLogoShineOamData =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd sPokemonLogoShineAnimSequence[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const sPokemonLogoShineAnimTable[] =
+{
+ sPokemonLogoShineAnimSequence,
+};
+static const struct SpriteTemplate sPokemonLogoShineSpriteTemplate =
+{
+ .tileTag = 1002,
+ .paletteTag = 1001,
+ .oam = &sPokemonLogoShineOamData,
+ .anims = sPokemonLogoShineAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallback_PokemonLogoShine,
+};
+static const struct SpriteSheet sPokemonLogoShineSpriteSheet[] =
+{
+ {sLogoShineTiles, 0x800, 1002},
+ {NULL},
+};
#define _RGB(r, g, b) ((((b) & 31) << 10) + (((g) & 31) << 5) + ((r) & 31))
@@ -66,6 +304,16 @@ static void UpdateLegendaryMarkingColor(u8);
#define RESET_RTC_BUTTON_COMBO (B_BUTTON | SELECT_BUTTON | DPAD_LEFT)
#define A_B_START_SELECT (A_BUTTON | B_BUTTON | START_BUTTON | SELECT_BUTTON)
+static void MainCB2(void);
+static void Task_TitleScreenPhase1(u8);
+static void Task_TitleScreenPhase2(u8);
+static void Task_TitleScreenPhase3(u8);
+static void CB2_GoToMainMenu(void);
+static void CB2_GoToClearSaveDataScreen(void);
+static void CB2_GoToResetRtcScreen(void);
+static void CB2_GoToCopyrightScreen(void);
+static void UpdateLegendaryMarkingColor(u8);
+
void SpriteCallback_VersionBannerLeft(struct Sprite *sprite)
{
struct Task *task = &gTasks[sprite->data1];
@@ -134,7 +382,7 @@ static void CreatePressStartBanner(s16 x, s16 y)
x -= 32;
for (i = 0; i < 3; i++, x += 32)
{
- spriteId = CreateSprite(&gSpriteTemplate_8393F74, x, y, 0);
+ spriteId = CreateSprite(&sStartCopyrightBannerSpriteTemplate, x, y, 0);
StartSpriteAnim(&gSprites[spriteId], i);
gSprites[spriteId].data0 = 1;
}
@@ -148,7 +396,7 @@ static void CreateCopyrightBanner(s16 x, s16 y)
x -= 64;
for (i = 0; i < 5; i++, x += 32)
{
- spriteId = CreateSprite(&gSpriteTemplate_8393F74, x, y, 0);
+ spriteId = CreateSprite(&sStartCopyrightBannerSpriteTemplate, x, y, 0);
StartSpriteAnim(&gSprites[spriteId], i + 3);
}
}
@@ -193,7 +441,7 @@ void SpriteCallback_PokemonLogoShine(struct Sprite *sprite)
static void StartPokemonLogoShine(bool8 flashBackground)
{
- u8 spriteId = CreateSprite(&gSpriteTemplate_8393FC0, 0, 68, 0);
+ u8 spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, 0, 68, 0);
gSprites[spriteId].oam.objMode = 2;
gSprites[spriteId].data0 = flashBackground;
@@ -208,11 +456,9 @@ static void VBlankCB(void)
REG_BG1VOFS = gUnknown_030041B4;
}
-enum
-{
- TD_COUNTER,
- TD_SKIP,
-};
+
+#define tCounter data[0]
+#define tSkipToNext data[1]
void CB2_InitTitleScreen(void)
{
@@ -245,28 +491,28 @@ void CB2_InitTitleScreen(void)
LZ77UnCompVram(gUnknown_08E9D8CC, (void *)VRAM);
LZ77UnCompVram(gUnknown_08E9F7E4, (void *)(VRAM + 0x4800));
LoadPalette(gUnknown_08E9F624, 0, 0x1C0);
- LZ77UnCompVram(gUnknown_08393250, (void *)(VRAM + 0x8000));
- LZ77UnCompVram(gUnknown_083939EC, (void *)(VRAM + 0xC000));
- LZ77UnCompVram(gUnknown_08393BF8, (void *)(VRAM + 0xC800));
- LoadPalette(gUnknown_08393210, 0xE0, 0x40);
+ LZ77UnCompVram(sLegendaryMonPixelData, (void *)(VRAM + 0x8000));
+ LZ77UnCompVram(sLegendaryMonTilemap, (void *)(VRAM + 0xC000));
+ LZ77UnCompVram(sBackdropTilemap, (void *)(VRAM + 0xC800));
+ LoadPalette(sLegendaryMonPalettes, 0xE0, sizeof(sLegendaryMonPalettes));
remove_some_task();
ResetTasks();
ResetSpriteData();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 14;
- LoadCompressedObjectPic(&gUnknown_08393EFC);
- LoadCompressedObjectPic(&gUnknown_08393F8C);
- LoadCompressedObjectPic(&gUnknown_08393FD8);
+ LoadCompressedObjectPic(&gUnknown_08393EFC[0]);
+ LoadCompressedObjectPic(&gUnknown_08393F8C[0]);
+ LoadCompressedObjectPic(&sPokemonLogoShineSpriteSheet[0]);
LoadPalette(gUnknown_08E9F624, 0x100, 0x1C0);
- LoadSpritePalette(&gUnknown_08393F9C[0]);
+ LoadSpritePalette(&sPokemonLogoShinePalette[0]);
gMain.state = 2;
break;
case 2:
{
u8 taskId = CreateTask(Task_TitleScreenPhase1, 0);
- gTasks[taskId].data[TD_COUNTER] = 0x100;
- gTasks[taskId].data[TD_SKIP] = FALSE;
+ gTasks[taskId].tCounter = 256;
+ gTasks[taskId].tSkipToNext = FALSE;
gTasks[taskId].data[2] = -16;
gTasks[taskId].data[3] = -32;
gUnknown_0202F7E4 = taskId;
@@ -294,9 +540,9 @@ void CB2_InitTitleScreen(void)
REG_BLDCNT = 0x84;
REG_BLDALPHA = 0;
REG_BLDY = 0x8;
- REG_BG0CNT = 0x180B;
- REG_BG1CNT = 0x190A;
- REG_BG2CNT = 0x4981;
+ REG_BG0CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(24) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(25) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG2CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(9) | BGCNT_256COLOR | BGCNT_AFF256x256;
savedIme = REG_IME;
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
@@ -337,17 +583,17 @@ static void Task_TitleScreenPhase1(u8 taskId)
//Skip to next phase when A, B, Start, or Select is pressed
if ((gMain.newKeys & A_B_START_SELECT) || gTasks[taskId].data[1] != 0)
{
- gTasks[taskId].data[TD_SKIP] = TRUE;
- gTasks[taskId].data[TD_COUNTER] = 0;
+ gTasks[taskId].tSkipToNext = TRUE;
+ gTasks[taskId].tCounter = 0;
}
- if (gTasks[taskId].data[TD_COUNTER] != 0)
+ if (gTasks[taskId].tCounter != 0)
{
- u16 frameNum = gTasks[taskId].data[TD_COUNTER];
+ u16 frameNum = gTasks[taskId].tCounter;
if (frameNum == 160 || frameNum == 64)
StartPokemonLogoShine(TRUE);
- gTasks[taskId].data[TD_COUNTER]--;
+ gTasks[taskId].tCounter--;
}
else
{
@@ -361,17 +607,17 @@ static void Task_TitleScreenPhase1(u8 taskId)
REG_BLDY = 0;
//Create left side of version banner
- spriteId = CreateSprite(&gSpriteTemplate_8393ECC, 0x62, 0x1A, 0);
+ spriteId = CreateSprite(&sVersionBannerLeftSpriteTemplate, 0x62, 0x1A, 0);
gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].data1 = taskId;
//Create right side of version banner
- spriteId = CreateSprite(&gSpriteTemplate_8393EE4, 0xA2, 0x1A, 0);
+ spriteId = CreateSprite(&sVersionBannerRightSpriteTemplate, 0xA2, 0x1A, 0);
gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].data1 = taskId;
gTasks[taskId].data[5] = 88;
- gTasks[taskId].data[TD_COUNTER] = 144;
+ gTasks[taskId].tCounter = 144;
gTasks[taskId].func = Task_TitleScreenPhase2;
}
}
@@ -380,17 +626,17 @@ static void Task_TitleScreenPhase1(u8 taskId)
static void Task_TitleScreenPhase2(u8 taskId)
{
//Skip to next phase when A, B, Start, or Select is pressed
- if ((gMain.newKeys & A_B_START_SELECT) || gTasks[taskId].data[TD_SKIP])
+ if ((gMain.newKeys & A_B_START_SELECT) || gTasks[taskId].tSkipToNext)
{
- gTasks[taskId].data[TD_SKIP] = TRUE;
- gTasks[taskId].data[TD_COUNTER] = 0;
+ gTasks[taskId].tSkipToNext = TRUE;
+ gTasks[taskId].tCounter = 0;
}
- if (gTasks[taskId].data[TD_COUNTER] != 0)
- gTasks[taskId].data[TD_COUNTER]--;
+ if (gTasks[taskId].tCounter != 0)
+ gTasks[taskId].tCounter--;
else
{
- gTasks[taskId].data[TD_SKIP] = TRUE;
+ gTasks[taskId].tSkipToNext = TRUE;
REG_DISPCNT = DISPCNT_MODE_1
| DISPCNT_OBJ_1D_MAP
| DISPCNT_BG0_ON
@@ -403,7 +649,7 @@ static void Task_TitleScreenPhase2(u8 taskId)
gTasks[taskId].func = Task_TitleScreenPhase3;
}
- if (!(gTasks[taskId].data[TD_COUNTER] & 1) && gTasks[taskId].data[3] != 0)
+ if (!(gTasks[taskId].tCounter & 1) && gTasks[taskId].data[3] != 0)
gTasks[taskId].data[3]++;
//Slide Pokemon logo up
@@ -437,14 +683,14 @@ static void Task_TitleScreenPhase3(u8 taskId)
else
{
REG_BG2Y = 0;
- gTasks[taskId].data[TD_COUNTER]++;
- if (gTasks[taskId].data[TD_COUNTER] & 1)
+ gTasks[taskId].tCounter++;
+ if (gTasks[taskId].tCounter & 1)
{
gTasks[taskId].data[4]++;
gUnknown_030041B4 = gTasks[taskId].data[4];
gUnknown_030042C0 = 0;
}
- UpdateLegendaryMarkingColor(gTasks[taskId].data[TD_COUNTER]);
+ UpdateLegendaryMarkingColor(gTasks[taskId].tCounter);
if ((gMPlay_BGM.status & 0xFFFF) == 0)
{
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0xFFFF);
diff --git a/src/trainer_card.c b/src/trainer_card.c
index 3b40fa6e7..5239c6c90 100644
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -432,46 +432,46 @@ __attribute__((naked))
void sub_8093598()
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- sub sp, 0x4\n\
- movs r2, 0xC0\n\
- lsls r2, 19\n\
- movs r3, 0x80\n\
- lsls r3, 9\n\
- mov r4, sp\n\
- movs r6, 0\n\
- ldr r1, _080935E4 @ =0x040000d4\n\
- movs r5, 0x80\n\
- lsls r5, 5\n\
- ldr r7, _080935E8 @ =0x81000800\n\
- movs r0, 0x81\n\
- lsls r0, 24\n\
- mov r12, r0\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x4\n\
+ movs r2, 0xC0\n\
+ lsls r2, 19\n\
+ movs r3, 0x80\n\
+ lsls r3, 9\n\
+ mov r4, sp\n\
+ movs r6, 0\n\
+ ldr r1, _080935E4 @ =0x040000d4\n\
+ movs r5, 0x80\n\
+ lsls r5, 5\n\
+ ldr r7, _080935E8 @ =0x81000800\n\
+ movs r0, 0x81\n\
+ lsls r0, 24\n\
+ mov r12, r0\n\
_080935B6:\n\
- strh r6, [r4]\n\
- mov r0, sp\n\
- str r0, [r1]\n\
- str r2, [r1, 0x4]\n\
- str r7, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- adds r2, r5\n\
- subs r3, r5\n\
- cmp r3, r5\n\
- bhi _080935B6\n\
- strh r6, [r4]\n\
- mov r0, sp\n\
- str r0, [r1]\n\
- str r2, [r1, 0x4]\n\
- lsrs r0, r3, 1\n\
- mov r2, r12\n\
- orrs r0, r2\n\
- str r0, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- add sp, 0x4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ strh r6, [r4]\n\
+ mov r0, sp\n\
+ str r0, [r1]\n\
+ str r2, [r1, 0x4]\n\
+ str r7, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ adds r2, r5\n\
+ subs r3, r5\n\
+ cmp r3, r5\n\
+ bhi _080935B6\n\
+ strh r6, [r4]\n\
+ mov r0, sp\n\
+ str r0, [r1]\n\
+ str r2, [r1, 0x4]\n\
+ lsrs r0, r3, 1\n\
+ mov r2, r12\n\
+ orrs r0, r2\n\
+ str r0, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ add sp, 0x4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080935E4: .4byte 0x040000d4\n\
_080935E8: .4byte 0x81000800\n\
.syntax divided\n");
@@ -481,21 +481,21 @@ __attribute__((naked))
void sub_80935EC()
{
asm(".syntax unified\n\
- sub sp, 0x4\n\
- movs r2, 0xE0\n\
- lsls r2, 19\n\
- mov r1, sp\n\
- movs r0, 0\n\
- strh r0, [r1]\n\
- ldr r0, _08093608 @ =0x040000d4\n\
- str r1, [r0]\n\
- str r2, [r0, 0x4]\n\
- ldr r1, _0809360C @ =0x81000200\n\
- str r1, [r0, 0x8]\n\
- ldr r0, [r0, 0x8]\n\
- add sp, 0x4\n\
- bx lr\n\
- .align 2, 0\n\
+ sub sp, 0x4\n\
+ movs r2, 0xE0\n\
+ lsls r2, 19\n\
+ mov r1, sp\n\
+ movs r0, 0\n\
+ strh r0, [r1]\n\
+ ldr r0, _08093608 @ =0x040000d4\n\
+ str r1, [r0]\n\
+ str r2, [r0, 0x4]\n\
+ ldr r1, _0809360C @ =0x81000200\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ add sp, 0x4\n\
+ bx lr\n\
+ .align 2, 0\n\
_08093608: .4byte 0x040000d4\n\
_0809360C: .4byte 0x81000200\n\
.syntax divided\n");
@@ -505,48 +505,48 @@ __attribute__((naked))
void sub_8093610()
{
asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- ldr r5, _08093664 @ =REG_BG0CNT\n\
- movs r1, 0\n\
- strh r1, [r5]\n\
- ldr r2, _08093668 @ =REG_BG1CNT\n\
- strh r1, [r2]\n\
- ldr r3, _0809366C @ =REG_BG2CNT\n\
- strh r1, [r3]\n\
- ldr r4, _08093670 @ =REG_BG3CNT\n\
- strh r1, [r4]\n\
- ldr r0, _08093674 @ =REG_BG0HOFS\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- ldr r1, _08093678 @ =0x00001e08\n\
- adds r0, r1, 0\n\
- strh r0, [r5]\n\
- ldr r1, _0809367C @ =0x00000801\n\
- adds r0, r1, 0\n\
- strh r0, [r2]\n\
- ldr r1, _08093680 @ =0x00000902\n\
- adds r0, r1, 0\n\
- strh r0, [r3]\n\
- ldr r1, _08093684 @ =0x00000a03\n\
- adds r0, r1, 0\n\
- strh r0, [r4]\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ push {r4,r5,lr}\n\
+ ldr r5, _08093664 @ =REG_BG0CNT\n\
+ movs r1, 0\n\
+ strh r1, [r5]\n\
+ ldr r2, _08093668 @ =REG_BG1CNT\n\
+ strh r1, [r2]\n\
+ ldr r3, _0809366C @ =REG_BG2CNT\n\
+ strh r1, [r3]\n\
+ ldr r4, _08093670 @ =REG_BG3CNT\n\
+ strh r1, [r4]\n\
+ ldr r0, _08093674 @ =REG_BG0HOFS\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ ldr r1, _08093678 @ =0x00001e08\n\
+ adds r0, r1, 0\n\
+ strh r0, [r5]\n\
+ ldr r1, _0809367C @ =0x00000801\n\
+ adds r0, r1, 0\n\
+ strh r0, [r2]\n\
+ ldr r1, _08093680 @ =0x00000902\n\
+ adds r0, r1, 0\n\
+ strh r0, [r3]\n\
+ ldr r1, _08093684 @ =0x00000a03\n\
+ adds r0, r1, 0\n\
+ strh r0, [r4]\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08093664: .4byte 0x4000008 @ REG_BG0CNT\n\
_08093668: .4byte 0x400000A @ REG_BG1CNT\n\
_0809366C: .4byte 0x400000C @ REG_BG2CNT\n\
@@ -589,41 +589,41 @@ __attribute__((naked))
static void sub_8093688(void)
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- bl sub_8093324\n\
- ldr r2, _080936D0 @ =0x02000000\n\
- movs r1, 0\n\
- strb r1, [r2]\n\
- strb r1, [r2, 0x3]\n\
- strb r1, [r2, 0x4]\n\
- adds r0, r2, 0\n\
- adds r0, 0x65\n\
- ldrb r0, [r0]\n\
- strb r0, [r2, 0x2]\n\
- strb r1, [r2, 0x5]\n\
- strb r1, [r2, 0x6]\n\
- movs r4, 0\n\
- adds r6, r2, 0\n\
- adds r6, 0x20\n\
- adds r5, r2, 0\n\
- adds r5, 0x8C\n\
+ push {r4-r6,lr}\n\
+ bl sub_8093324\n\
+ ldr r2, _080936D0 @ =0x02000000\n\
+ movs r1, 0\n\
+ strb r1, [r2]\n\
+ strb r1, [r2, 0x3]\n\
+ strb r1, [r2, 0x4]\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x65\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r2, 0x2]\n\
+ strb r1, [r2, 0x5]\n\
+ strb r1, [r2, 0x6]\n\
+ movs r4, 0\n\
+ adds r6, r2, 0\n\
+ adds r6, 0x20\n\
+ adds r5, r2, 0\n\
+ adds r5, 0x8C\n\
_080936AE:\n\
- lsls r0, r4, 4\n\
- adds r0, r6\n\
- lsls r1, r4, 1\n\
- adds r1, r5, r1\n\
- ldrh r1, [r1]\n\
- bl sub_80EB3FC\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0x3\n\
- bls _080936AE\n\
- bl sub_80936D4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ lsls r0, r4, 4\n\
+ adds r0, r6\n\
+ lsls r1, r4, 1\n\
+ adds r1, r5, r1\n\
+ ldrh r1, [r1]\n\
+ bl sub_80EB3FC\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x3\n\
+ bls _080936AE\n\
+ bl sub_80936D4\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080936D0: .4byte 0x02000000\n\
.syntax divided\n");
}
@@ -750,29 +750,29 @@ __attribute__((naked))
static void sub_809382C(u8 taskId)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldr r7, _08093858 @ =gUnknown_083B5EBC\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r4, r1, 3\n\
- ldr r6, _0809385C @ =0x02000000\n\
- ldr r5, _08093860 @ =gTasks\n\
+ push {r4-r7,lr}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldr r7, _08093858 @ =gUnknown_083B5EBC\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r4, r1, 3\n\
+ ldr r6, _0809385C @ =0x02000000\n\
+ ldr r5, _08093860 @ =gTasks\n\
_0809383E:\n\
- ldrb r0, [r6]\n\
- lsls r0, 2\n\
- adds r0, r7\n\
- ldr r1, [r0]\n\
- adds r0, r4, r5\n\
- bl _call_via_r1\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0809383E\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ ldrb r0, [r6]\n\
+ lsls r0, 2\n\
+ adds r0, r7\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, r5\n\
+ bl _call_via_r1\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0809383E\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08093858: .4byte gUnknown_083B5EBC\n\
_0809385C: .4byte 0x02000000\n\
_08093860: .4byte gTasks\n\
@@ -783,34 +783,34 @@ __attribute__((naked))
bool8 sub_8093864()
{
asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- sub sp, 0x4\n\
- ldr r4, _080938A0 @ =0x02000000\n\
- ldr r2, _080938A4 @ =gSaveBlock2\n\
- ldrb r1, [r2, 0x11]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- movs r5, 0\n\
- strb r0, [r4, 0x5]\n\
- ldrb r0, [r2, 0x12]\n\
- strb r0, [r4, 0x6]\n\
- bl sub_80939A4\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- str r5, [sp]\n\
- movs r1, 0\n\
- movs r2, 0x10\n\
- movs r3, 0\n\
- bl BeginNormalPaletteFade\n\
- ldrb r0, [r4]\n\
- adds r0, 0x1\n\
- strb r0, [r4]\n\
- movs r0, 0\n\
- add sp, 0x4\n\
- pop {r4,r5}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ push {r4,r5,lr}\n\
+ sub sp, 0x4\n\
+ ldr r4, _080938A0 @ =0x02000000\n\
+ ldr r2, _080938A4 @ =gSaveBlock2\n\
+ ldrb r1, [r2, 0x11]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ movs r5, 0\n\
+ strb r0, [r4, 0x5]\n\
+ ldrb r0, [r2, 0x12]\n\
+ strb r0, [r4, 0x6]\n\
+ bl sub_80939A4\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ str r5, [sp]\n\
+ movs r1, 0\n\
+ movs r2, 0x10\n\
+ movs r3, 0\n\
+ bl BeginNormalPaletteFade\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ movs r0, 0\n\
+ add sp, 0x4\n\
+ pop {r4,r5}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_080938A0: .4byte 0x02000000\n\
_080938A4: .4byte gSaveBlock2\n\
.syntax divided\n");
@@ -820,22 +820,22 @@ __attribute__((naked))
bool8 sub_80938A8()
{
asm(".syntax unified\n\
- push {lr}\n\
- ldr r0, _080938C4 @ =gPaletteFade\n\
- ldrb r1, [r0, 0x7]\n\
- movs r0, 0x80\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080938BE\n\
- ldr r1, _080938C8 @ =0x02000000\n\
- ldrb r0, [r1]\n\
- adds r0, 0x1\n\
- strb r0, [r1]\n\
+ push {lr}\n\
+ ldr r0, _080938C4 @ =gPaletteFade\n\
+ ldrb r1, [r0, 0x7]\n\
+ movs r0, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080938BE\n\
+ ldr r1, _080938C8 @ =0x02000000\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
_080938BE:\n\
- movs r0, 0\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ movs r0, 0\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_080938C4: .4byte gPaletteFade\n\
_080938C8: .4byte 0x02000000\n\
.syntax divided\n");
@@ -845,48 +845,48 @@ __attribute__((naked))
bool8 sub_80938CC()
{
asm(".syntax unified\n\
- push {lr}\n\
- ldr r0, _080938E4 @ =gMain\n\
- ldrh r1, [r0, 0x2E]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080938EC\n\
- ldr r1, _080938E8 @ =0x02000000\n\
- movs r0, 0x5\n\
- strb r0, [r1]\n\
- movs r0, 0x1\n\
- b _08093914\n\
- .align 2, 0\n\
+ push {lr}\n\
+ ldr r0, _080938E4 @ =gMain\n\
+ ldrh r1, [r0, 0x2E]\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080938EC\n\
+ ldr r1, _080938E8 @ =0x02000000\n\
+ movs r0, 0x5\n\
+ strb r0, [r1]\n\
+ movs r0, 0x1\n\
+ b _08093914\n\
+ .align 2, 0\n\
_080938E4: .4byte gMain\n\
_080938E8: .4byte 0x02000000\n\
_080938EC:\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08093912\n\
- ldr r2, _08093900 @ =0x02000000\n\
- ldrb r1, [r2, 0x3]\n\
- cmp r1, 0\n\
- beq _08093904\n\
- movs r0, 0x5\n\
- b _0809390C\n\
- .align 2, 0\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08093912\n\
+ ldr r2, _08093900 @ =0x02000000\n\
+ ldrb r1, [r2, 0x3]\n\
+ cmp r1, 0\n\
+ beq _08093904\n\
+ movs r0, 0x5\n\
+ b _0809390C\n\
+ .align 2, 0\n\
_08093900: .4byte 0x02000000\n\
_08093904:\n\
- movs r0, 0x1\n\
- eors r0, r1\n\
- strb r0, [r2, 0x3]\n\
- movs r0, 0x3\n\
+ movs r0, 0x1\n\
+ eors r0, r1\n\
+ strb r0, [r2, 0x3]\n\
+ movs r0, 0x3\n\
_0809390C:\n\
- strb r0, [r2]\n\
- movs r0, 0x1\n\
- b _08093914\n\
+ strb r0, [r2]\n\
+ movs r0, 0x1\n\
+ b _08093914\n\
_08093912:\n\
- movs r0, 0\n\
+ movs r0, 0\n\
_08093914:\n\
- pop {r1}\n\
- bx r1\n\
+ pop {r1}\n\
+ bx r1\n\
.syntax divided\n");
}
@@ -914,25 +914,25 @@ __attribute__((naked))
bool8 sub_8093954()
{
asm(".syntax unified\n\
- push {lr}\n\
- sub sp, 0x4\n\
- bl sub_80939C0\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- movs r1, 0\n\
- str r1, [sp]\n\
- movs r2, 0\n\
- movs r3, 0x10\n\
- bl BeginNormalPaletteFade\n\
- ldr r1, _0809397C @ =0x02000000\n\
- ldrb r0, [r1]\n\
- adds r0, 0x1\n\
- strb r0, [r1]\n\
- movs r0, 0\n\
- add sp, 0x4\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ push {lr}\n\
+ sub sp, 0x4\n\
+ bl sub_80939C0\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ movs r1, 0\n\
+ str r1, [sp]\n\
+ movs r2, 0\n\
+ movs r3, 0x10\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r1, _0809397C @ =0x02000000\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ movs r0, 0\n\
+ add sp, 0x4\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_0809397C: .4byte 0x02000000\n\
.syntax divided\n");
}
@@ -993,22 +993,22 @@ __attribute__((naked))
static u8 sub_8093A48()
{
asm(".syntax unified\n\
- push {lr}\n\
- ldr r0, _08093A5C @ =sub_8093A68\n\
- bl FindTaskIdByFunc\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0xFF\n\
- beq _08093A60\n\
- movs r0, 0\n\
- b _08093A62\n\
- .align 2, 0\n\
+ push {lr}\n\
+ ldr r0, _08093A5C @ =sub_8093A68\n\
+ bl FindTaskIdByFunc\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0xFF\n\
+ beq _08093A60\n\
+ movs r0, 0\n\
+ b _08093A62\n\
+ .align 2, 0\n\
_08093A5C: .4byte sub_8093A68\n\
_08093A60:\n\
- movs r0, 0x1\n\
+ movs r0, 0x1\n\
_08093A62:\n\
- pop {r1}\n\
- bx r1\n\
+ pop {r1}\n\
+ bx r1\n\
.syntax divided\n");
}
@@ -1016,30 +1016,30 @@ __attribute__((naked))
static void sub_8093A68(u8 taskId)
{
asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldr r5, _08093A98 @ =gUnknown_083B5ED8\n\
- ldr r2, _08093A9C @ =gTasks\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 3\n\
- adds r4, r1, r2\n\
+ push {r4,r5,lr}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldr r5, _08093A98 @ =gUnknown_083B5ED8\n\
+ ldr r2, _08093A9C @ =gTasks\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 3\n\
+ adds r4, r1, r2\n\
_08093A7A:\n\
- movs r1, 0x8\n\
- ldrsh r0, [r4, r1]\n\
- lsls r0, 2\n\
- adds r0, r5\n\
- ldr r1, [r0]\n\
- adds r0, r4, 0\n\
- bl _call_via_r1\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _08093A7A\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ movs r1, 0x8\n\
+ ldrsh r0, [r4, r1]\n\
+ lsls r0, 2\n\
+ adds r0, r5\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, 0\n\
+ bl _call_via_r1\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08093A7A\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08093A98: .4byte gUnknown_083B5ED8\n\
_08093A9C: .4byte gTasks\n\
.syntax divided\n");
@@ -1049,37 +1049,37 @@ __attribute__((naked))
bool8 sub_8093AA0()
{
asm(".syntax unified\n\
- push {r4,lr}\n\
- adds r4, r0, 0\n\
- ldr r0, _08093AE0 @ =0x02000000\n\
- movs r1, 0\n\
- strb r1, [r0, 0x4]\n\
- bl dp12_8087EA4\n\
- movs r1, 0\n\
- ldr r0, _08093AE4 @ =gUnknown_03004DE0\n\
- ldr r2, _08093AE8 @ =0x0000fffc\n\
- movs r3, 0xF0\n\
- lsls r3, 3\n\
- adds r0, r3\n\
+ push {r4,lr}\n\
+ adds r4, r0, 0\n\
+ ldr r0, _08093AE0 @ =0x02000000\n\
+ movs r1, 0\n\
+ strb r1, [r0, 0x4]\n\
+ bl dp12_8087EA4\n\
+ movs r1, 0\n\
+ ldr r0, _08093AE4 @ =gUnknown_03004DE0\n\
+ ldr r2, _08093AE8 @ =0x0000fffc\n\
+ movs r3, 0xF0\n\
+ lsls r3, 3\n\
+ adds r0, r3\n\
_08093ABA:\n\
- strh r2, [r0]\n\
- adds r0, 0x2\n\
- adds r1, 0x1\n\
- cmp r1, 0x9F\n\
- bls _08093ABA\n\
- ldr r0, _08093AEC @ =sub_8093D7C\n\
- bl SetHBlankCallback\n\
- ldr r1, _08093AE0 @ =0x02000000\n\
- movs r0, 0x1\n\
- strb r0, [r1, 0x4]\n\
- ldrh r0, [r4, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x8]\n\
- movs r0, 0\n\
- pop {r4}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ strh r2, [r0]\n\
+ adds r0, 0x2\n\
+ adds r1, 0x1\n\
+ cmp r1, 0x9F\n\
+ bls _08093ABA\n\
+ ldr r0, _08093AEC @ =sub_8093D7C\n\
+ bl SetHBlankCallback\n\
+ ldr r1, _08093AE0 @ =0x02000000\n\
+ movs r0, 0x1\n\
+ strb r0, [r1, 0x4]\n\
+ ldrh r0, [r4, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r4, 0x8]\n\
+ movs r0, 0\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_08093AE0: .4byte 0x02000000\n\
_08093AE4: .4byte gUnknown_03004DE0\n\
_08093AE8: .4byte 0x0000fffc\n\
@@ -1091,147 +1091,147 @@ __attribute__((naked))
bool8 sub_8093AF0()
{
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, 0x4\n\
- mov r8, r0\n\
- ldr r1, _08093BFC @ =0x02000000\n\
- movs r0, 0\n\
- strb r0, [r1, 0x4]\n\
- mov r2, r8\n\
- ldrh r0, [r2, 0xA]\n\
- adds r0, 0x3\n\
- strh r0, [r2, 0xA]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x4F\n\
- ble _08093B18\n\
- movs r0, 0x4F\n\
- strh r0, [r2, 0xA]\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ mov r8, r0\n\
+ ldr r1, _08093BFC @ =0x02000000\n\
+ movs r0, 0\n\
+ strb r0, [r1, 0x4]\n\
+ mov r2, r8\n\
+ ldrh r0, [r2, 0xA]\n\
+ adds r0, 0x3\n\
+ strh r0, [r2, 0xA]\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x4F\n\
+ ble _08093B18\n\
+ movs r0, 0x4F\n\
+ strh r0, [r2, 0xA]\n\
_08093B18:\n\
- mov r4, r8\n\
- movs r0, 0xA\n\
- ldrsh r7, [r4, r0]\n\
- movs r0, 0xA0\n\
- subs r0, r7\n\
- mov r9, r0\n\
- subs r4, r0, r7\n\
- negs r0, r7\n\
- lsls r6, r0, 16\n\
- movs r0, 0xA0\n\
- lsls r0, 16\n\
- adds r1, r4, 0\n\
- bl __udivsi3\n\
- adds r5, r0, 0\n\
- ldr r1, _08093C00 @ =0xffff0000\n\
- adds r5, r1\n\
- adds r0, r5, 0\n\
- muls r0, r4\n\
- adds r0, r6\n\
- mov r10, r0\n\
- adds r0, r5, 0\n\
- adds r1, r4, 0\n\
- bl __udivsi3\n\
- str r0, [sp]\n\
- lsls r5, 1\n\
- movs r3, 0\n\
- cmp r3, r7\n\
- bcs _08093B74\n\
- ldr r2, _08093C04 @ =gUnknown_03004DE0\n\
- mov r12, r2\n\
- ldr r0, _08093C08 @ =0x0000fffc\n\
- adds r4, r0, 0\n\
+ mov r4, r8\n\
+ movs r0, 0xA\n\
+ ldrsh r7, [r4, r0]\n\
+ movs r0, 0xA0\n\
+ subs r0, r7\n\
+ mov r9, r0\n\
+ subs r4, r0, r7\n\
+ negs r0, r7\n\
+ lsls r6, r0, 16\n\
+ movs r0, 0xA0\n\
+ lsls r0, 16\n\
+ adds r1, r4, 0\n\
+ bl __udivsi3\n\
+ adds r5, r0, 0\n\
+ ldr r1, _08093C00 @ =0xffff0000\n\
+ adds r5, r1\n\
+ adds r0, r5, 0\n\
+ muls r0, r4\n\
+ adds r0, r6\n\
+ mov r10, r0\n\
+ adds r0, r5, 0\n\
+ adds r1, r4, 0\n\
+ bl __udivsi3\n\
+ str r0, [sp]\n\
+ lsls r5, 1\n\
+ movs r3, 0\n\
+ cmp r3, r7\n\
+ bcs _08093B74\n\
+ ldr r2, _08093C04 @ =gUnknown_03004DE0\n\
+ mov r12, r2\n\
+ ldr r0, _08093C08 @ =0x0000fffc\n\
+ adds r4, r0, 0\n\
_08093B5C:\n\
- lsls r0, r3, 16\n\
- asrs r0, 16\n\
- lsls r1, r0, 1\n\
- add r1, r12\n\
- subs r2, r4, r0\n\
- strh r2, [r1]\n\
- adds r0, 0x1\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- asrs r0, 16\n\
- cmp r0, r7\n\
- bcc _08093B5C\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ lsls r1, r0, 1\n\
+ add r1, r12\n\
+ subs r2, r4, r0\n\
+ strh r2, [r1]\n\
+ adds r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, r7\n\
+ bcc _08093B5C\n\
_08093B74:\n\
- lsls r2, r3, 16\n\
- mov r1, r9\n\
- lsls r0, r1, 16\n\
- asrs r1, r0, 16\n\
- mov r4, r10\n\
- lsrs r7, r4, 16\n\
- cmp r2, r0\n\
- bge _08093BAE\n\
- ldr r0, _08093C04 @ =gUnknown_03004DE0\n\
- mov r9, r0\n\
- ldr r4, _08093C08 @ =0x0000fffc\n\
- mov r12, r4\n\
- adds r4, r1, 0\n\
+ lsls r2, r3, 16\n\
+ mov r1, r9\n\
+ lsls r0, r1, 16\n\
+ asrs r1, r0, 16\n\
+ mov r4, r10\n\
+ lsrs r7, r4, 16\n\
+ cmp r2, r0\n\
+ bge _08093BAE\n\
+ ldr r0, _08093C04 @ =gUnknown_03004DE0\n\
+ mov r9, r0\n\
+ ldr r4, _08093C08 @ =0x0000fffc\n\
+ mov r12, r4\n\
+ adds r4, r1, 0\n\
_08093B8E:\n\
- lsrs r1, r6, 16\n\
- adds r6, r5\n\
- ldr r0, [sp]\n\
- subs r5, r0\n\
- asrs r2, 16\n\
- lsls r0, r2, 1\n\
- add r0, r9\n\
- add r1, r12\n\
- strh r1, [r0]\n\
- adds r2, 0x1\n\
- lsls r2, 16\n\
- lsrs r3, r2, 16\n\
- lsls r2, r3, 16\n\
- asrs r0, r2, 16\n\
- cmp r0, r4\n\
- blt _08093B8E\n\
+ lsrs r1, r6, 16\n\
+ adds r6, r5\n\
+ ldr r0, [sp]\n\
+ subs r5, r0\n\
+ asrs r2, 16\n\
+ lsls r0, r2, 1\n\
+ add r0, r9\n\
+ add r1, r12\n\
+ strh r1, [r0]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ lsrs r3, r2, 16\n\
+ lsls r2, r3, 16\n\
+ asrs r0, r2, 16\n\
+ cmp r0, r4\n\
+ blt _08093B8E\n\
_08093BAE:\n\
- adds r1, r7, 0\n\
- lsls r0, r3, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x9F\n\
- bgt _08093BD4\n\
- ldr r4, _08093C04 @ =gUnknown_03004DE0\n\
- ldr r0, _08093C08 @ =0x0000fffc\n\
- adds r2, r1, r0\n\
+ adds r1, r7, 0\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x9F\n\
+ bgt _08093BD4\n\
+ ldr r4, _08093C04 @ =gUnknown_03004DE0\n\
+ ldr r0, _08093C08 @ =0x0000fffc\n\
+ adds r2, r1, r0\n\
_08093BBE:\n\
- lsls r1, r3, 16\n\
- asrs r1, 16\n\
- lsls r0, r1, 1\n\
- adds r0, r4\n\
- strh r2, [r0]\n\
- adds r1, 0x1\n\
- lsls r1, 16\n\
- lsrs r3, r1, 16\n\
- asrs r1, 16\n\
- cmp r1, 0x9F\n\
- ble _08093BBE\n\
+ lsls r1, r3, 16\n\
+ asrs r1, 16\n\
+ lsls r0, r1, 1\n\
+ adds r0, r4\n\
+ strh r2, [r0]\n\
+ adds r1, 0x1\n\
+ lsls r1, 16\n\
+ lsrs r3, r1, 16\n\
+ asrs r1, 16\n\
+ cmp r1, 0x9F\n\
+ ble _08093BBE\n\
_08093BD4:\n\
- movs r0, 0x1\n\
- ldr r1, _08093BFC @ =0x02000000\n\
- strb r0, [r1, 0x4]\n\
- mov r2, r8\n\
- movs r4, 0xA\n\
- ldrsh r0, [r2, r4]\n\
- cmp r0, 0x4A\n\
- ble _08093BEA\n\
- ldrh r0, [r2, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r2, 0x8]\n\
+ movs r0, 0x1\n\
+ ldr r1, _08093BFC @ =0x02000000\n\
+ strb r0, [r1, 0x4]\n\
+ mov r2, r8\n\
+ movs r4, 0xA\n\
+ ldrsh r0, [r2, r4]\n\
+ cmp r0, 0x4A\n\
+ ble _08093BEA\n\
+ ldrh r0, [r2, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r2, 0x8]\n\
_08093BEA:\n\
- movs r0, 0\n\
- add sp, 0x4\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\
+ movs r0, 0\n\
+ add sp, 0x4\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\
_08093BFC: .4byte 0x02000000\n\
_08093C00: .4byte 0xffff0000\n\
_08093C04: .4byte gUnknown_03004DE0\n\
@@ -1258,145 +1258,145 @@ __attribute__((naked))
bool8 sub_8093C38()
{
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, 0x4\n\
- mov r8, r0\n\
- ldr r1, _08093D40 @ =0x02000000\n\
- movs r2, 0\n\
- strb r2, [r1, 0x4]\n\
- ldrh r0, [r0, 0xA]\n\
- subs r0, 0x3\n\
- mov r3, r8\n\
- strh r0, [r3, 0xA]\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- bgt _08093C5C\n\
- strh r2, [r3, 0xA]\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ mov r8, r0\n\
+ ldr r1, _08093D40 @ =0x02000000\n\
+ movs r2, 0\n\
+ strb r2, [r1, 0x4]\n\
+ ldrh r0, [r0, 0xA]\n\
+ subs r0, 0x3\n\
+ mov r3, r8\n\
+ strh r0, [r3, 0xA]\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ bgt _08093C5C\n\
+ strh r2, [r3, 0xA]\n\
_08093C5C:\n\
- mov r4, r8\n\
- movs r0, 0xA\n\
- ldrsh r7, [r4, r0]\n\
- movs r0, 0xA0\n\
- subs r0, r7\n\
- mov r9, r0\n\
- subs r4, r0, r7\n\
- negs r0, r7\n\
- lsls r6, r0, 16\n\
- movs r0, 0xA0\n\
- lsls r0, 16\n\
- adds r1, r4, 0\n\
- bl __udivsi3\n\
- adds r5, r0, 0\n\
- ldr r1, _08093D44 @ =0xffff0000\n\
- adds r5, r1\n\
- adds r0, r5, 0\n\
- muls r0, r4\n\
- adds r0, r6\n\
- mov r10, r0\n\
- adds r0, r5, 0\n\
- adds r1, r4, 0\n\
- bl __udivsi3\n\
- str r0, [sp]\n\
- lsrs r5, 1\n\
- movs r3, 0\n\
- cmp r3, r7\n\
- bcs _08093CB8\n\
- ldr r2, _08093D48 @ =gUnknown_03004DE0\n\
- mov r12, r2\n\
- ldr r0, _08093D4C @ =0x0000fffc\n\
- adds r4, r0, 0\n\
+ mov r4, r8\n\
+ movs r0, 0xA\n\
+ ldrsh r7, [r4, r0]\n\
+ movs r0, 0xA0\n\
+ subs r0, r7\n\
+ mov r9, r0\n\
+ subs r4, r0, r7\n\
+ negs r0, r7\n\
+ lsls r6, r0, 16\n\
+ movs r0, 0xA0\n\
+ lsls r0, 16\n\
+ adds r1, r4, 0\n\
+ bl __udivsi3\n\
+ adds r5, r0, 0\n\
+ ldr r1, _08093D44 @ =0xffff0000\n\
+ adds r5, r1\n\
+ adds r0, r5, 0\n\
+ muls r0, r4\n\
+ adds r0, r6\n\
+ mov r10, r0\n\
+ adds r0, r5, 0\n\
+ adds r1, r4, 0\n\
+ bl __udivsi3\n\
+ str r0, [sp]\n\
+ lsrs r5, 1\n\
+ movs r3, 0\n\
+ cmp r3, r7\n\
+ bcs _08093CB8\n\
+ ldr r2, _08093D48 @ =gUnknown_03004DE0\n\
+ mov r12, r2\n\
+ ldr r0, _08093D4C @ =0x0000fffc\n\
+ adds r4, r0, 0\n\
_08093CA0:\n\
- lsls r0, r3, 16\n\
- asrs r0, 16\n\
- lsls r1, r0, 1\n\
- add r1, r12\n\
- subs r2, r4, r0\n\
- strh r2, [r1]\n\
- adds r0, 0x1\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- asrs r0, 16\n\
- cmp r0, r7\n\
- bcc _08093CA0\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ lsls r1, r0, 1\n\
+ add r1, r12\n\
+ subs r2, r4, r0\n\
+ strh r2, [r1]\n\
+ adds r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, r7\n\
+ bcc _08093CA0\n\
_08093CB8:\n\
- lsls r2, r3, 16\n\
- mov r1, r9\n\
- lsls r0, r1, 16\n\
- asrs r1, r0, 16\n\
- mov r4, r10\n\
- lsrs r7, r4, 16\n\
- cmp r2, r0\n\
- bge _08093CF2\n\
- ldr r0, _08093D48 @ =gUnknown_03004DE0\n\
- mov r9, r0\n\
- ldr r3, _08093D4C @ =0x0000fffc\n\
- mov r12, r3\n\
- adds r4, r1, 0\n\
+ lsls r2, r3, 16\n\
+ mov r1, r9\n\
+ lsls r0, r1, 16\n\
+ asrs r1, r0, 16\n\
+ mov r4, r10\n\
+ lsrs r7, r4, 16\n\
+ cmp r2, r0\n\
+ bge _08093CF2\n\
+ ldr r0, _08093D48 @ =gUnknown_03004DE0\n\
+ mov r9, r0\n\
+ ldr r3, _08093D4C @ =0x0000fffc\n\
+ mov r12, r3\n\
+ adds r4, r1, 0\n\
_08093CD2:\n\
- lsrs r1, r6, 16\n\
- adds r6, r5\n\
- ldr r0, [sp]\n\
- adds r5, r0\n\
- asrs r2, 16\n\
- lsls r0, r2, 1\n\
- add r0, r9\n\
- add r1, r12\n\
- strh r1, [r0]\n\
- adds r2, 0x1\n\
- lsls r2, 16\n\
- lsrs r3, r2, 16\n\
- lsls r2, r3, 16\n\
- asrs r0, r2, 16\n\
- cmp r0, r4\n\
- blt _08093CD2\n\
+ lsrs r1, r6, 16\n\
+ adds r6, r5\n\
+ ldr r0, [sp]\n\
+ adds r5, r0\n\
+ asrs r2, 16\n\
+ lsls r0, r2, 1\n\
+ add r0, r9\n\
+ add r1, r12\n\
+ strh r1, [r0]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ lsrs r3, r2, 16\n\
+ lsls r2, r3, 16\n\
+ asrs r0, r2, 16\n\
+ cmp r0, r4\n\
+ blt _08093CD2\n\
_08093CF2:\n\
- adds r1, r7, 0\n\
- lsls r0, r3, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x9F\n\
- bgt _08093D18\n\
- ldr r4, _08093D48 @ =gUnknown_03004DE0\n\
- ldr r0, _08093D4C @ =0x0000fffc\n\
- adds r2, r1, r0\n\
+ adds r1, r7, 0\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x9F\n\
+ bgt _08093D18\n\
+ ldr r4, _08093D48 @ =gUnknown_03004DE0\n\
+ ldr r0, _08093D4C @ =0x0000fffc\n\
+ adds r2, r1, r0\n\
_08093D02:\n\
- lsls r1, r3, 16\n\
- asrs r1, 16\n\
- lsls r0, r1, 1\n\
- adds r0, r4\n\
- strh r2, [r0]\n\
- adds r1, 0x1\n\
- lsls r1, 16\n\
- lsrs r3, r1, 16\n\
- asrs r1, 16\n\
- cmp r1, 0x9F\n\
- ble _08093D02\n\
+ lsls r1, r3, 16\n\
+ asrs r1, 16\n\
+ lsls r0, r1, 1\n\
+ adds r0, r4\n\
+ strh r2, [r0]\n\
+ adds r1, 0x1\n\
+ lsls r1, 16\n\
+ lsrs r3, r1, 16\n\
+ asrs r1, 16\n\
+ cmp r1, 0x9F\n\
+ ble _08093D02\n\
_08093D18:\n\
- movs r0, 0x1\n\
- ldr r1, _08093D40 @ =0x02000000\n\
- strb r0, [r1, 0x4]\n\
- mov r2, r8\n\
- movs r3, 0xA\n\
- ldrsh r0, [r2, r3]\n\
- cmp r0, 0\n\
- bgt _08093D2E\n\
- ldrh r0, [r2, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r2, 0x8]\n\
+ movs r0, 0x1\n\
+ ldr r1, _08093D40 @ =0x02000000\n\
+ strb r0, [r1, 0x4]\n\
+ mov r2, r8\n\
+ movs r3, 0xA\n\
+ ldrsh r0, [r2, r3]\n\
+ cmp r0, 0\n\
+ bgt _08093D2E\n\
+ ldrh r0, [r2, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r2, 0x8]\n\
_08093D2E:\n\
- movs r0, 0\n\
- add sp, 0x4\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\
+ movs r0, 0\n\
+ add sp, 0x4\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\
_08093D40: .4byte 0x02000000\n\
_08093D44: .4byte 0xffff0000\n\
_08093D48: .4byte gUnknown_03004DE0\n\
@@ -1422,25 +1422,25 @@ __attribute__((naked))
void sub_8093D7C(void)
{
asm(".syntax unified\n\
- ldr r1, _08093DA0 @ =gUnknown_03004DE0\n\
- ldr r0, _08093DA4 @ =REG_VCOUNT\n\
- ldrh r2, [r0]\n\
- movs r0, 0xFF\n\
- ands r0, r2\n\
- lsls r0, 1\n\
- movs r2, 0xF0\n\
- lsls r2, 3\n\
- adds r1, r2\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- ldr r0, _08093DA8 @ =REG_BG0VOFS\n\
- strh r1, [r0]\n\
- adds r0, 0x4\n\
- strh r1, [r0]\n\
- adds r0, 0x4\n\
- strh r1, [r0]\n\
- bx lr\n\
- .align 2, 0\n\
+ ldr r1, _08093DA0 @ =gUnknown_03004DE0\n\
+ ldr r0, _08093DA4 @ =REG_VCOUNT\n\
+ ldrh r2, [r0]\n\
+ movs r0, 0xFF\n\
+ ands r0, r2\n\
+ lsls r0, 1\n\
+ movs r2, 0xF0\n\
+ lsls r2, 3\n\
+ adds r1, r2\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _08093DA8 @ =REG_BG0VOFS\n\
+ strh r1, [r0]\n\
+ adds r0, 0x4\n\
+ strh r1, [r0]\n\
+ adds r0, 0x4\n\
+ strh r1, [r0]\n\
+ bx lr\n\
+ .align 2, 0\n\
_08093DA0: .4byte gUnknown_03004DE0\n\
_08093DA4: .4byte 0x4000006 @ REG_VCOUNT\n\
_08093DA8: .4byte 0x4000012 @ REG_BG0VOFS\n\
@@ -1482,21 +1482,21 @@ __attribute__((naked))
static void sub_8093E04()
{
asm(".syntax unified\n\
- ldr r0, _08093E20 @ =REG_BG0VOFS\n\
- ldr r2, _08093E24 @ =0x0000fffc\n\
- adds r1, r2, 0\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- movs r2, 0\n\
- strh r2, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r2, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- bx lr\n\
- .align 2, 0\n\
+ ldr r0, _08093E20 @ =REG_BG0VOFS\n\
+ ldr r2, _08093E24 @ =0x0000fffc\n\
+ adds r1, r2, 0\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ movs r2, 0\n\
+ strh r2, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ adds r0, 0x2\n\
+ strh r2, [r0]\n\
+ adds r0, 0x2\n\
+ strh r1, [r0]\n\
+ bx lr\n\
+ .align 2, 0\n\
_08093E20: .4byte 0x4000012 @ REG_BG0VOFS\n\
_08093E24: .4byte 0x0000fffc\n\
.syntax divided\n");
@@ -1506,51 +1506,51 @@ __attribute__((naked))
static void sub_8093E28(void)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- bl sub_8093EA0\n\
- ldr r0, _08093E84 @ =gUnknown_083B5F6C\n\
- movs r1, 0xE0\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- ldr r3, _08093E88 @ =gMenuTrainerCard_Gfx\n\
- movs r4, 0xC0\n\
- lsls r4, 19\n\
- movs r5, 0xA4\n\
- lsls r5, 5\n\
- ldr r1, _08093E8C @ =0x040000d4\n\
- ldr r6, _08093E90 @ =0x80000800\n\
- movs r2, 0x80\n\
- lsls r2, 5\n\
- movs r7, 0x80\n\
- lsls r7, 24\n\
+ push {r4-r7,lr}\n\
+ bl sub_8093EA0\n\
+ ldr r0, _08093E84 @ =gUnknown_083B5F6C\n\
+ movs r1, 0xE0\n\
+ movs r2, 0x20\n\
+ bl LoadPalette\n\
+ ldr r3, _08093E88 @ =gMenuTrainerCard_Gfx\n\
+ movs r4, 0xC0\n\
+ lsls r4, 19\n\
+ movs r5, 0xA4\n\
+ lsls r5, 5\n\
+ ldr r1, _08093E8C @ =0x040000d4\n\
+ ldr r6, _08093E90 @ =0x80000800\n\
+ movs r2, 0x80\n\
+ lsls r2, 5\n\
+ movs r7, 0x80\n\
+ lsls r7, 24\n\
_08093E4E:\n\
- str r3, [r1]\n\
- str r4, [r1, 0x4]\n\
- str r6, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- adds r3, r2\n\
- adds r4, r2\n\
- subs r5, r2\n\
- cmp r5, r2\n\
- bhi _08093E4E\n\
- str r3, [r1]\n\
- str r4, [r1, 0x4]\n\
- lsrs r0, r5, 1\n\
- orrs r0, r7\n\
- str r0, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- ldr r1, _08093E94 @ =gBadgesTiles\n\
- ldr r2, _08093E98 @ =0x06001480\n\
- ldr r0, _08093E8C @ =0x040000d4\n\
- str r1, [r0]\n\
- str r2, [r0, 0x4]\n\
- ldr r1, _08093E9C @ =0x80000200\n\
- str r1, [r0, 0x8]\n\
- ldr r0, [r0, 0x8]\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ str r3, [r1]\n\
+ str r4, [r1, 0x4]\n\
+ str r6, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ adds r3, r2\n\
+ adds r4, r2\n\
+ subs r5, r2\n\
+ cmp r5, r2\n\
+ bhi _08093E4E\n\
+ str r3, [r1]\n\
+ str r4, [r1, 0x4]\n\
+ lsrs r0, r5, 1\n\
+ orrs r0, r7\n\
+ str r0, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ ldr r1, _08093E94 @ =gBadgesTiles\n\
+ ldr r2, _08093E98 @ =0x06001480\n\
+ ldr r0, _08093E8C @ =0x040000d4\n\
+ str r1, [r0]\n\
+ str r2, [r0, 0x4]\n\
+ ldr r1, _08093E9C @ =0x80000200\n\
+ str r1, [r0, 0x8]\n\
+ ldr r0, [r0, 0x8]\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08093E84: .4byte gUnknown_083B5F6C\n\
_08093E88: .4byte gMenuTrainerCard_Gfx\n\
_08093E8C: .4byte 0x040000d4\n\
@@ -1582,26 +1582,26 @@ __attribute__((naked))
static void sub_8093F14(void)
{
asm(".syntax unified\n\
- push {lr}\n\
- sub sp, 0x8\n\
- ldr r0, _08093F3C @ =gUnknown_083B5EEC\n\
- ldr r1, [r0, 0x4]\n\
- ldr r0, [r0]\n\
- str r0, [sp]\n\
- str r1, [sp, 0x4]\n\
- ldr r0, _08093F40 @ =0x02000000\n\
- ldrb r0, [r0, 0x1]\n\
- lsls r0, 2\n\
- add r0, sp\n\
- ldr r0, [r0]\n\
- ldr r1, _08093F44 @ =0x06004800\n\
- movs r2, 0xA0\n\
- lsls r2, 1\n\
- bl CpuFastSet\n\
- add sp, 0x8\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ push {lr}\n\
+ sub sp, 0x8\n\
+ ldr r0, _08093F3C @ =gUnknown_083B5EEC\n\
+ ldr r1, [r0, 0x4]\n\
+ ldr r0, [r0]\n\
+ str r0, [sp]\n\
+ str r1, [sp, 0x4]\n\
+ ldr r0, _08093F40 @ =0x02000000\n\
+ ldrb r0, [r0, 0x1]\n\
+ lsls r0, 2\n\
+ add r0, sp\n\
+ ldr r0, [r0]\n\
+ ldr r1, _08093F44 @ =0x06004800\n\
+ movs r2, 0xA0\n\
+ lsls r2, 1\n\
+ bl CpuFastSet\n\
+ add sp, 0x8\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08093F3C: .4byte gUnknown_083B5EEC\n\
_08093F40: .4byte 0x02000000\n\
_08093F44: .4byte 0x06004800\n\
@@ -1622,46 +1622,46 @@ __attribute__((naked))
static void sub_8093F80(void)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- movs r5, 0xC4\n\
- ldr r7, _08093FCC @ =0x06004000\n\
- movs r1, 0x5\n\
- movs r0, 0xA0\n\
- lsls r0, 7\n\
- adds r6, r0, 0\n\
+ push {r4-r7,lr}\n\
+ movs r5, 0xC4\n\
+ ldr r7, _08093FCC @ =0x06004000\n\
+ movs r1, 0x5\n\
+ movs r0, 0xA0\n\
+ lsls r0, 7\n\
+ adds r6, r0, 0\n\
_08093F8E:\n\
- movs r0, 0x13\n\
- lsls r3, r1, 16\n\
- asrs r4, r3, 11\n\
+ movs r0, 0x13\n\
+ lsls r3, r1, 16\n\
+ asrs r4, r3, 11\n\
_08093F94:\n\
- lsls r2, r0, 16\n\
- asrs r2, 16\n\
- adds r1, r4, r2\n\
- lsls r1, 1\n\
- adds r1, r7\n\
- adds r0, r5, 0\n\
- orrs r0, r6\n\
- strh r0, [r1]\n\
- adds r2, 0x1\n\
- lsls r2, 16\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- lsrs r0, r2, 16\n\
- asrs r2, 16\n\
- cmp r2, 0x1A\n\
- ble _08093F94\n\
- movs r1, 0x80\n\
- lsls r1, 9\n\
- adds r0, r3, r1\n\
- lsrs r1, r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0xC\n\
- ble _08093F8E\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ lsls r2, r0, 16\n\
+ asrs r2, 16\n\
+ adds r1, r4, r2\n\
+ lsls r1, 1\n\
+ adds r1, r7\n\
+ adds r0, r5, 0\n\
+ orrs r0, r6\n\
+ strh r0, [r1]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ lsrs r0, r2, 16\n\
+ asrs r2, 16\n\
+ cmp r2, 0x1A\n\
+ ble _08093F94\n\
+ movs r1, 0x80\n\
+ lsls r1, 9\n\
+ adds r0, r3, r1\n\
+ lsrs r1, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0xC\n\
+ ble _08093F8E\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08093FCC: .4byte 0x06004000\n\
.syntax divided\n");
}
@@ -1670,56 +1670,56 @@ __attribute__((naked))
static void sub_8093FD0(void)
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- ldr r4, _0809402C @ =0x06004000\n\
- movs r2, 0xF\n\
- ldr r0, _08094030 @ =0x02000000\n\
- ldrb r0, [r0, 0x2]\n\
- adds r0, 0xF\n\
- cmp r2, r0\n\
- bge _08094002\n\
- movs r6, 0xC0\n\
- lsls r6, 1\n\
- ldr r1, _08094034 @ =0x0000408f\n\
- adds r5, r1, 0\n\
- adds r3, r0, 0\n\
+ push {r4-r6,lr}\n\
+ ldr r4, _0809402C @ =0x06004000\n\
+ movs r2, 0xF\n\
+ ldr r0, _08094030 @ =0x02000000\n\
+ ldrb r0, [r0, 0x2]\n\
+ adds r0, 0xF\n\
+ cmp r2, r0\n\
+ bge _08094002\n\
+ movs r6, 0xC0\n\
+ lsls r6, 1\n\
+ ldr r1, _08094034 @ =0x0000408f\n\
+ adds r5, r1, 0\n\
+ adds r3, r0, 0\n\
_08093FEA:\n\
- lsls r1, r2, 16\n\
- asrs r1, 16\n\
- lsls r0, r1, 1\n\
- adds r0, r4\n\
- adds r0, r6\n\
- strh r5, [r0]\n\
- adds r1, 0x1\n\
- lsls r1, 16\n\
- lsrs r2, r1, 16\n\
- asrs r1, 16\n\
- cmp r1, r3\n\
- blt _08093FEA\n\
+ lsls r1, r2, 16\n\
+ asrs r1, 16\n\
+ lsls r0, r1, 1\n\
+ adds r0, r4\n\
+ adds r0, r6\n\
+ strh r5, [r0]\n\
+ adds r1, 0x1\n\
+ lsls r1, 16\n\
+ lsrs r2, r1, 16\n\
+ asrs r1, 16\n\
+ cmp r1, r3\n\
+ blt _08093FEA\n\
_08094002:\n\
- lsls r1, r2, 16\n\
- asrs r0, r1, 16\n\
- cmp r0, 0x12\n\
- bgt _08094024\n\
- movs r3, 0xC0\n\
- lsls r3, 1\n\
- movs r2, 0\n\
+ lsls r1, r2, 16\n\
+ asrs r0, r1, 16\n\
+ cmp r0, 0x12\n\
+ bgt _08094024\n\
+ movs r3, 0xC0\n\
+ lsls r3, 1\n\
+ movs r2, 0\n\
_08094010:\n\
- asrs r0, r1, 16\n\
- lsls r1, r0, 1\n\
- adds r1, r4\n\
- adds r1, r3\n\
- strh r2, [r1]\n\
- adds r0, 0x1\n\
- lsls r1, r0, 16\n\
- asrs r0, r1, 16\n\
- cmp r0, 0x12\n\
- ble _08094010\n\
+ asrs r0, r1, 16\n\
+ lsls r1, r0, 1\n\
+ adds r1, r4\n\
+ adds r1, r3\n\
+ strh r2, [r1]\n\
+ adds r0, 0x1\n\
+ lsls r1, r0, 16\n\
+ asrs r0, r1, 16\n\
+ cmp r0, 0x12\n\
+ ble _08094010\n\
_08094024:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_0809402C: .4byte 0x06004000\n\
_08094030: .4byte 0x02000000\n\
_08094034: .4byte 0x0000408f\n\
@@ -1730,85 +1730,85 @@ __attribute__((naked))
static void sub_8094038(void)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- ldr r1, _080940D0 @ =0x02000000\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0\n\
- bne _080940C2\n\
- ldr r0, _080940D4 @ =0x06004000\n\
- mov r9, r0\n\
- movs r0, 0\n\
- movs r2, 0x4\n\
- adds r1, 0xE\n\
- mov r8, r1\n\
- ldr r7, _080940D8 @ =gUnknown_083B5F8C\n\
- movs r1, 0xC0\n\
- lsls r1, 6\n\
- adds r6, r1, 0\n\
- adds r1, r7, 0x6\n\
- mov r12, r1\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ ldr r1, _080940D0 @ =0x02000000\n\
+ ldrb r0, [r1, 0x1]\n\
+ cmp r0, 0\n\
+ bne _080940C2\n\
+ ldr r0, _080940D4 @ =0x06004000\n\
+ mov r9, r0\n\
+ movs r0, 0\n\
+ movs r2, 0x4\n\
+ adds r1, 0xE\n\
+ mov r8, r1\n\
+ ldr r7, _080940D8 @ =gUnknown_083B5F8C\n\
+ movs r1, 0xC0\n\
+ lsls r1, 6\n\
+ adds r6, r1, 0\n\
+ adds r1, r7, 0x6\n\
+ mov r12, r1\n\
_08094060:\n\
- lsls r0, 16\n\
- asrs r4, r0, 16\n\
- mov r1, r8\n\
- adds r0, r4, r1\n\
- ldrb r0, [r0]\n\
- lsls r5, r2, 16\n\
- cmp r0, 0\n\
- beq _080940AE\n\
- asrs r1, r5, 15\n\
- add r1, r9\n\
- movs r2, 0xF0\n\
- lsls r2, 2\n\
- adds r3, r1, r2\n\
- lsls r2, r4, 3\n\
- adds r0, r2, r7\n\
- ldrh r0, [r0]\n\
- orrs r0, r6\n\
- strh r0, [r3]\n\
- ldr r0, _080940DC @ =0x000003c2\n\
- adds r3, r1, r0\n\
- adds r0, r7, 0x2\n\
- adds r0, r2, r0\n\
- ldrh r0, [r0]\n\
- orrs r0, r6\n\
- strh r0, [r3]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- adds r3, r1, r0\n\
- adds r0, r7, 0x4\n\
- adds r0, r2, r0\n\
- ldrh r0, [r0]\n\
- orrs r0, r6\n\
- strh r0, [r3]\n\
- ldr r0, _080940E0 @ =0x00000402\n\
- adds r1, r0\n\
- add r2, r12\n\
- ldrh r0, [r2]\n\
- orrs r0, r6\n\
- strh r0, [r1]\n\
+ lsls r0, 16\n\
+ asrs r4, r0, 16\n\
+ mov r1, r8\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ lsls r5, r2, 16\n\
+ cmp r0, 0\n\
+ beq _080940AE\n\
+ asrs r1, r5, 15\n\
+ add r1, r9\n\
+ movs r2, 0xF0\n\
+ lsls r2, 2\n\
+ adds r3, r1, r2\n\
+ lsls r2, r4, 3\n\
+ adds r0, r2, r7\n\
+ ldrh r0, [r0]\n\
+ orrs r0, r6\n\
+ strh r0, [r3]\n\
+ ldr r0, _080940DC @ =0x000003c2\n\
+ adds r3, r1, r0\n\
+ adds r0, r7, 0x2\n\
+ adds r0, r2, r0\n\
+ ldrh r0, [r0]\n\
+ orrs r0, r6\n\
+ strh r0, [r3]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ adds r3, r1, r0\n\
+ adds r0, r7, 0x4\n\
+ adds r0, r2, r0\n\
+ ldrh r0, [r0]\n\
+ orrs r0, r6\n\
+ strh r0, [r3]\n\
+ ldr r0, _080940E0 @ =0x00000402\n\
+ adds r1, r0\n\
+ add r2, r12\n\
+ ldrh r0, [r2]\n\
+ orrs r0, r6\n\
+ strh r0, [r1]\n\
_080940AE:\n\
- adds r1, r4, 0x1\n\
- lsls r1, 16\n\
- movs r2, 0xC0\n\
- lsls r2, 10\n\
- adds r0, r5, r2\n\
- lsrs r2, r0, 16\n\
- lsrs r0, r1, 16\n\
- asrs r1, 16\n\
- cmp r1, 0x7\n\
- ble _08094060\n\
+ adds r1, r4, 0x1\n\
+ lsls r1, 16\n\
+ movs r2, 0xC0\n\
+ lsls r2, 10\n\
+ adds r0, r5, r2\n\
+ lsrs r2, r0, 16\n\
+ lsrs r0, r1, 16\n\
+ asrs r1, 16\n\
+ cmp r1, 0x7\n\
+ ble _08094060\n\
_080940C2:\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080940D0: .4byte 0x02000000\n\
_080940D4: .4byte 0x06004000\n\
_080940D8: .4byte gUnknown_083B5F8C\n\
@@ -1821,26 +1821,26 @@ __attribute__((naked))
static void sub_80940E4()
{
asm(".syntax unified\n\
- push {r4,lr}\n\
- movs r2, 0\n\
- ldr r1, _08094108 @ =0x06004000\n\
- movs r4, 0\n\
- ldr r3, _0809410C @ =0x000003ff\n\
+ push {r4,lr}\n\
+ movs r2, 0\n\
+ ldr r1, _08094108 @ =0x06004000\n\
+ movs r4, 0\n\
+ ldr r3, _0809410C @ =0x000003ff\n\
_080940EE:\n\
- strh r4, [r1]\n\
- lsls r0, r2, 16\n\
- movs r2, 0x80\n\
- lsls r2, 9\n\
- adds r0, r2\n\
- adds r1, 0x2\n\
- lsrs r2, r0, 16\n\
- asrs r0, 16\n\
- cmp r0, r3\n\
- ble _080940EE\n\
- pop {r4}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ strh r4, [r1]\n\
+ lsls r0, r2, 16\n\
+ movs r2, 0x80\n\
+ lsls r2, 9\n\
+ adds r0, r2\n\
+ adds r1, 0x2\n\
+ lsrs r2, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, r3\n\
+ ble _080940EE\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_08094108: .4byte 0x06004000\n\
_0809410C: .4byte 0x000003ff\n\
.syntax divided\n");
@@ -1850,30 +1850,30 @@ __attribute__((naked))
static void sub_8094110()
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- ldr r6, _0809413C @ =0x06004800\n\
- movs r2, 0x3\n\
- movs r5, 0xA0\n\
- lsls r5, 2\n\
- movs r3, 0x1\n\
- movs r4, 0xB0\n\
- lsls r4, 2\n\
+ push {r4-r6,lr}\n\
+ ldr r6, _0809413C @ =0x06004800\n\
+ movs r2, 0x3\n\
+ movs r5, 0xA0\n\
+ lsls r5, 2\n\
+ movs r3, 0x1\n\
+ movs r4, 0xB0\n\
+ lsls r4, 2\n\
_08094120:\n\
- lsls r0, r2, 1\n\
- adds r0, r6\n\
- adds r1, r0, r5\n\
- strh r3, [r1]\n\
- adds r0, r4\n\
- strh r3, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0x10\n\
- bls _08094120\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ lsls r0, r2, 1\n\
+ adds r0, r6\n\
+ adds r1, r0, r5\n\
+ strh r3, [r1]\n\
+ adds r0, r4\n\
+ strh r3, [r0]\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x10\n\
+ bls _08094120\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_0809413C: .4byte 0x06004800\n\
.syntax divided\n");
}
diff --git a/src/wallclock.c b/src/wallclock.c
index dc9d871e7..2f4d694a6 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -12,21 +12,142 @@
#include "trig.h"
extern u16 gSpecialVar_0x8004;
-extern u16 gMiscClockMale_Pal[];
-extern u16 gMiscClockFemale_Pal[];
extern u8 gMiscClock_Gfx[];
-extern struct SpriteSheet gUnknown_083F7A90;
-extern struct SpritePalette gUnknown_083F7AA0;
extern u8 gUnknown_08E95774[];
extern u8 gUnknown_08E954B0[];
extern u8 gOtherText_CorrectTimePrompt[];
extern const struct MenuAction gMenuYesNoItems[];
-extern s8 gClockHandCoords[][2];
+extern u16 gMiscClockMale_Pal[];
+extern u16 gMiscClockFemale_Pal[];
+
+//--------------------------------------------------
+// Graphics Data
+//--------------------------------------------------
-extern struct SpriteTemplate gSpriteTemplate_83F7AD8;
-extern struct SpriteTemplate gSpriteTemplate_83F7AF0;
-extern struct SpriteTemplate gSpriteTemplate_83F7B28;
-extern struct SpriteTemplate gSpriteTemplate_83F7B40;
+static const u8 ClockGfx_Misc[] = INCBIN_U8("graphics/misc/clock_misc.4bpp.lz");
+static const struct SpriteSheet gUnknown_083F7A90[] =
+{
+ {ClockGfx_Misc, 0x2000, 0x1000},
+ {NULL},
+};
+static const struct SpritePalette gUnknown_083F7AA0[] =
+{
+ {gMiscClockMale_Pal, 0x1000},
+ {gMiscClockFemale_Pal, 0x1001},
+ {NULL},
+};
+static const struct OamData gOamData_83F7AB8 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_83F7AC0[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_83F7AC8[] =
+{
+ ANIMCMD_FRAME(64, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F7AD0[] =
+{
+ gSpriteAnim_83F7AC0,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F7AD4[] =
+{
+ gSpriteAnim_83F7AC8,
+};
+static void sub_810B05C(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F7AD8 =
+{
+ .tileTag = 0x1000,
+ .paletteTag = 0x1000,
+ .oam = &gOamData_83F7AB8,
+ .anims = gSpriteAnimTable_83F7AD0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B05C,
+};
+static void sub_810B0F4(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F7AF0 =
+{
+ .tileTag = 0x1000,
+ .paletteTag = 0x1000,
+ .oam = &gOamData_83F7AB8,
+ .anims = gSpriteAnimTable_83F7AD4,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B0F4,
+};
+static const struct OamData gOamData_83F7B08 =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+static const union AnimCmd gSpriteAnim_83F7B10[] =
+{
+ ANIMCMD_FRAME(132, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd gSpriteAnim_83F7B18[] =
+{
+ ANIMCMD_FRAME(128, 30),
+ ANIMCMD_END,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F7B20[] =
+{
+ gSpriteAnim_83F7B10,
+};
+static const union AnimCmd *const gSpriteAnimTable_83F7B24[] =
+{
+ gSpriteAnim_83F7B18,
+};
+static void sub_810B18C(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F7B28 =
+{
+ .tileTag = 0x1000,
+ .paletteTag = 0x1000,
+ .oam = &gOamData_83F7B08,
+ .anims = gSpriteAnimTable_83F7B20,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B18C,
+};
+static void sub_810B230(struct Sprite *sprite);
+static const struct SpriteTemplate gSpriteTemplate_83F7B40 =
+{
+ .tileTag = 0x1000,
+ .paletteTag = 0x1000,
+ .oam = &gOamData_83F7B08,
+ .anims = gSpriteAnimTable_83F7B24,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_810B230,
+};
static void WallClockVblankCallback(void);
static void LoadWallClockGraphics(void);
@@ -48,25 +169,17 @@ static u8 AdvanceClock(u8 taskId, u8 direction);
static void UpdateClockPeriod(u8 taskId, u8 direction);
static void InitClockWithRtc(u8 taskId);
-//Task data
-enum {
- TD_MHAND_ANGLE,
- TD_HHAND_ANGLE,
- TD_HOURS,
- TD_MINUTES,
- TD_SETDIRECTION, //Movement direction when setting the clock
- TD_PERIOD, //Whether the time is AM or PM
- TD_SETSPEED, //Movement speed when setting the clock
-};
-
-enum {
- AM,
- PM
+enum
+{
+ PERIOD_AM,
+ PERIOD_PM,
};
-enum {
- BACKWARD = 1,
- FORWARD
+enum
+{
+ MVMT_NONE,
+ MVMT_BACKWARD,
+ MVMT_FORWARD,
};
static void WallClockVblankCallback(void)
@@ -122,8 +235,8 @@ static void LoadWallClockGraphics(void)
ResetSpriteData();
ResetPaletteFade();
FreeAllSpritePalettes();
- LoadCompressedObjectPic(&gUnknown_083F7A90);
- LoadSpritePalettes(&gUnknown_083F7AA0);
+ LoadCompressedObjectPic(&gUnknown_083F7A90[0]);
+ LoadSpritePalettes(gUnknown_083F7AA0);
SetUpWindowConfig(&gWindowConfig_81E6C3C);
InitMenuWindow(&gWindowConfig_81E6CE4);
}
@@ -149,6 +262,14 @@ static void WallClockInit(void)
DISPCNT_BG3_ON | DISPCNT_OBJ_ON;
}
+#define tMinuteHandAngle data[0]
+#define tHourHandAngle data[1]
+#define tHours data[2]
+#define tMinutes data[3]
+#define tMvmtDir data[4]
+#define tPeriod data[5]
+#define tMvmtSpeed data[6]
+
//Allow player to set the clock
void CB2_StartWallClock(void)
{
@@ -159,29 +280,29 @@ void CB2_StartWallClock(void)
LZ77UnCompVram(&gUnknown_08E954B0, (void *)(VRAM + 0x3800));
taskId = CreateTask(Task_SetClock1, 0);
- gTasks[taskId].data[TD_HOURS] = 10;
- gTasks[taskId].data[TD_MINUTES] = 0;
- gTasks[taskId].data[TD_SETDIRECTION] = 0;
- gTasks[taskId].data[TD_PERIOD] = AM;
- gTasks[taskId].data[TD_SETSPEED] = 0;
- gTasks[taskId].data[TD_MHAND_ANGLE] = 0;
- gTasks[taskId].data[TD_HHAND_ANGLE] = 300;
-
- spriteId = CreateSprite(&gSpriteTemplate_83F7AD8, 0x78, 0x50, 1);
+ gTasks[taskId].tHours = 10;
+ gTasks[taskId].tMinutes = 0;
+ gTasks[taskId].tMvmtDir = MVMT_NONE;
+ gTasks[taskId].tPeriod = PERIOD_AM;
+ gTasks[taskId].tMvmtSpeed = 0;
+ gTasks[taskId].tMinuteHandAngle = 0;
+ gTasks[taskId].tHourHandAngle = 300;
+
+ spriteId = CreateSprite(&gSpriteTemplate_83F7AD8, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, 1);
gSprites[spriteId].data0 = taskId;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 0;
- spriteId = CreateSprite(&gSpriteTemplate_83F7AF0, 0x78, 0x50, 0);
+ spriteId = CreateSprite(&gSpriteTemplate_83F7AF0, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, 0);
gSprites[spriteId].data0 = taskId;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 1;
- spriteId = CreateSprite(&gSpriteTemplate_83F7B28, 0x78, 0x50, 2);
+ spriteId = CreateSprite(&gSpriteTemplate_83F7B28, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, 2);
gSprites[spriteId].data0 = taskId;
gSprites[spriteId].data1 = 45;
- spriteId = CreateSprite(&gSpriteTemplate_83F7B40, 0x78, 0x50, 2);
+ spriteId = CreateSprite(&gSpriteTemplate_83F7B40, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, 2);
gSprites[spriteId].data0 = taskId;
gSprites[spriteId].data1 = 90;
@@ -201,7 +322,7 @@ void CB2_ViewWallClock(void)
taskId = CreateTask(Task_ViewClock1, 0);
InitClockWithRtc(taskId);
- if (gTasks[taskId].data[TD_PERIOD] == 0)
+ if (gTasks[taskId].tPeriod == PERIOD_AM)
{
angle1 = 45;
angle2 = 90;
@@ -250,17 +371,17 @@ static void Task_SetClock1(u8 taskId)
//Handle keypresses when setting clock
static void Task_SetClock2(u8 taskId)
{
- if (gTasks[taskId].data[TD_MHAND_ANGLE] % 6)
+ if (gTasks[taskId].tMinuteHandAngle % 6)
{
- gTasks[taskId].data[TD_MHAND_ANGLE] = CalcNewMinHandAngle(
- gTasks[taskId].data[TD_MHAND_ANGLE],
- gTasks[taskId].data[TD_SETDIRECTION],
- gTasks[taskId].data[TD_SETSPEED]);
+ gTasks[taskId].tMinuteHandAngle = CalcNewMinHandAngle(
+ gTasks[taskId].tMinuteHandAngle,
+ gTasks[taskId].tMvmtDir,
+ gTasks[taskId].tMvmtSpeed);
}
else
{
- gTasks[taskId].data[TD_MHAND_ANGLE] = gTasks[taskId].data[TD_MINUTES] * 6;
- gTasks[taskId].data[TD_HHAND_ANGLE] = (gTasks[taskId].data[TD_HOURS] % 12) * 30 + (gTasks[taskId].data[TD_MINUTES] / 10) * 5;
+ gTasks[taskId].tMinuteHandAngle = gTasks[taskId].tMinutes * 6;
+ gTasks[taskId].tHourHandAngle = (gTasks[taskId].tHours % 12) * 30 + (gTasks[taskId].tMinutes / 10) * 5;
if (gMain.newKeys & A_BUTTON)
{
gTasks[taskId].func = Task_SetClock3;
@@ -268,24 +389,24 @@ static void Task_SetClock2(u8 taskId)
}
else
{
- gTasks[taskId].data[TD_SETDIRECTION] = gMain.newKeys & A_BUTTON;
+ gTasks[taskId].tMvmtDir = gMain.newKeys & A_BUTTON;
if (gMain.heldKeys & DPAD_LEFT)
- gTasks[taskId].data[TD_SETDIRECTION] = BACKWARD;
+ gTasks[taskId].tMvmtDir = MVMT_BACKWARD;
if (gMain.heldKeys & DPAD_RIGHT)
- gTasks[taskId].data[TD_SETDIRECTION] = FORWARD;
- if (gTasks[taskId].data[TD_SETDIRECTION])
+ gTasks[taskId].tMvmtDir = MVMT_FORWARD;
+ if (gTasks[taskId].tMvmtDir)
{
- if (gTasks[taskId].data[TD_SETSPEED] <= 0xFE)
- gTasks[taskId].data[TD_SETSPEED]++;
- gTasks[taskId].data[TD_MHAND_ANGLE] = CalcNewMinHandAngle(
- gTasks[taskId].data[TD_MHAND_ANGLE],
- gTasks[taskId].data[TD_SETDIRECTION],
- gTasks[taskId].data[TD_SETSPEED]);
- AdvanceClock(taskId, gTasks[taskId].data[TD_SETDIRECTION]);
+ if (gTasks[taskId].tMvmtSpeed < 0xFF)
+ gTasks[taskId].tMvmtSpeed++;
+ gTasks[taskId].tMinuteHandAngle = CalcNewMinHandAngle(
+ gTasks[taskId].tMinuteHandAngle,
+ gTasks[taskId].tMvmtDir,
+ gTasks[taskId].tMvmtSpeed);
+ AdvanceClock(taskId, gTasks[taskId].tMvmtDir);
}
else
{
- gTasks[taskId].data[TD_SETSPEED] = 0;
+ gTasks[taskId].tMvmtSpeed = 0;
}
}
}
@@ -324,7 +445,7 @@ static void Task_SetClock4(u8 taskId)
//Set the time offset based on the wall clock's time
static void Task_SetClock5(u8 taskId)
{
- RtcInitLocalTimeOffset(gTasks[taskId].data[TD_HOURS], gTasks[taskId].data[TD_MINUTES]);
+ RtcInitLocalTimeOffset(gTasks[taskId].tHours, gTasks[taskId].tMinutes);
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
gTasks[taskId].func = Task_SetClock6;
}
@@ -373,20 +494,20 @@ static u8 CalcMinHandDelta(u16 speed)
return 1;
}
-//Calculates the new position of the minute hand when setting the clock
+//Calculates the new angle of the minute hand when setting the clock
static u16 CalcNewMinHandAngle(u16 angle, u8 direction, u8 speed)
{
u8 delta = CalcMinHandDelta(speed);
switch (direction)
{
- case BACKWARD:
+ case MVMT_BACKWARD:
if (angle)
angle = angle - delta;
else
angle = 360 - delta;
break;
- case FORWARD:
+ case MVMT_FORWARD:
if (angle < 360 - delta)
angle = angle + delta;
else
@@ -401,29 +522,29 @@ static u8 AdvanceClock(u8 taskId, u8 direction)
{
switch (direction)
{
- case BACKWARD:
- if (gTasks[taskId].data[TD_MINUTES] > 0)
- gTasks[taskId].data[TD_MINUTES]--;
+ case MVMT_BACKWARD:
+ if (gTasks[taskId].tMinutes > 0)
+ gTasks[taskId].tMinutes--;
else
{
- gTasks[taskId].data[TD_MINUTES] = 59;
- if (gTasks[taskId].data[TD_HOURS] > 0)
- gTasks[taskId].data[TD_HOURS]--;
+ gTasks[taskId].tMinutes = 59;
+ if (gTasks[taskId].tHours > 0)
+ gTasks[taskId].tHours--;
else
- gTasks[taskId].data[TD_HOURS] = 23;
+ gTasks[taskId].tHours = 23;
UpdateClockPeriod(taskId, direction);
}
break;
- case FORWARD:
- if (gTasks[taskId].data[TD_MINUTES] <= 58)
- gTasks[taskId].data[TD_MINUTES]++;
+ case MVMT_FORWARD:
+ if (gTasks[taskId].tMinutes < 59)
+ gTasks[taskId].tMinutes++;
else
{
- gTasks[taskId].data[TD_MINUTES] = 0;
- if (gTasks[taskId].data[TD_HOURS] <= 22)
- gTasks[taskId].data[TD_HOURS]++;
+ gTasks[taskId].tMinutes = 0;
+ if (gTasks[taskId].tHours < 23)
+ gTasks[taskId].tHours++;
else
- gTasks[taskId].data[TD_HOURS] = 0;
+ gTasks[taskId].tHours = 0;
UpdateClockPeriod(taskId, direction);
}
break;
@@ -434,29 +555,29 @@ static u8 AdvanceClock(u8 taskId, u8 direction)
//Updates the clock period (AM/PM) if it needs to change
static void UpdateClockPeriod(u8 taskId, u8 direction)
{
- u8 hours = gTasks[taskId].data[TD_HOURS];
+ u8 hours = gTasks[taskId].tHours;
switch (direction)
{
- case BACKWARD:
+ case MVMT_BACKWARD:
switch (hours)
{
case 11:
- gTasks[taskId].data[TD_PERIOD] = AM;
+ gTasks[taskId].tPeriod = PERIOD_AM;
break;
case 23:
- gTasks[taskId].data[TD_PERIOD] = PM;
+ gTasks[taskId].tPeriod = PERIOD_PM;
break;
}
break;
- case FORWARD:
+ case MVMT_FORWARD:
switch (hours)
{
case 0:
- gTasks[taskId].data[TD_PERIOD] = AM;
+ gTasks[taskId].tPeriod = PERIOD_AM;
break;
case 12:
- gTasks[taskId].data[TD_PERIOD] = PM;
+ gTasks[taskId].tPeriod = PERIOD_PM;
break;
}
break;
@@ -466,17 +587,381 @@ static void UpdateClockPeriod(u8 taskId, u8 direction)
static void InitClockWithRtc(u8 taskId)
{
RtcCalcLocalTime();
- gTasks[taskId].data[TD_HOURS] = gLocalTime.hours;
- gTasks[taskId].data[TD_MINUTES] = gLocalTime.minutes;
- gTasks[taskId].data[TD_MHAND_ANGLE] = gTasks[taskId].data[TD_MINUTES] * 6;
- gTasks[taskId].data[TD_HHAND_ANGLE] = (gTasks[taskId].data[TD_HOURS] % 12) * 30 + (gTasks[taskId].data[TD_MINUTES] / 10) * 5;
+ gTasks[taskId].tHours = gLocalTime.hours;
+ gTasks[taskId].tMinutes = gLocalTime.minutes;
+ gTasks[taskId].tMinuteHandAngle = gTasks[taskId].tMinutes * 6;
+ gTasks[taskId].tHourHandAngle = (gTasks[taskId].tHours % 12) * 30 + (gTasks[taskId].tMinutes / 10) * 5;
if (gLocalTime.hours <= 11)
- gTasks[taskId].data[TD_PERIOD] = AM;
+ gTasks[taskId].tPeriod = PERIOD_AM;
else
- gTasks[taskId].data[TD_PERIOD] = PM;
+ gTasks[taskId].tPeriod = PERIOD_PM;
}
-void sub_810B05C(struct Sprite *sprite)
+static const s8 gClockHandCoords[][2] =
+{
+ { 0, -24},
+ { 1, -25},
+ { 1, -25},
+ { 2, -25},
+ { 2, -25},
+ { 2, -25},
+ { 3, -24},
+ { 3, -25},
+ { 4, -25},
+ { 4, -25},
+ { 4, -25},
+ { 5, -25},
+ { 5, -25},
+ { 6, -24},
+ { 6, -24},
+ { 6, -24},
+ { 7, -24},
+ { 7, -24},
+ { 7, -24},
+ { 8, -24},
+ { 8, -24},
+ { 9, -24},
+ { 9, -24},
+ { 10, -23},
+ { 10, -23},
+ { 11, -22},
+ { 11, -22},
+ { 11, -22},
+ { 12, -22},
+ { 12, -21},
+ { 13, -21},
+ { 13, -21},
+ { 13, -21},
+ { 14, -21},
+ { 14, -21},
+ { 14, -20},
+ { 14, -20},
+ { 15, -20},
+ { 15, -19},
+ { 16, -19},
+ { 16, -19},
+ { 16, -19},
+ { 16, -18},
+ { 16, -18},
+ { 17, -18},
+ { 17, -17},
+ { 17, -17},
+ { 18, -17},
+ { 18, -17},
+ { 18, -16},
+ { 18, -16},
+ { 19, -16},
+ { 19, -15},
+ { 19, -15},
+ { 20, -15},
+ { 20, -14},
+ { 20, -14},
+ { 20, -13},
+ { 20, -13},
+ { 21, -13},
+ { 21, -13},
+ { 21, -12},
+ { 22, -12},
+ { 22, -12},
+ { 22, -11},
+ { 22, -11},
+ { 22, -10},
+ { 23, -10},
+ { 23, -9},
+ { 23, -9},
+ { 23, -9},
+ { 23, -9},
+ { 23, -8},
+ { 23, -8},
+ { 23, -7},
+ { 23, -7},
+ { 23, -6},
+ { 24, -6},
+ { 24, -6},
+ { 25, -5},
+ { 25, -5},
+ { 24, -4},
+ { 25, -4},
+ { 24, -3},
+ { 25, -3},
+ { 25, -3},
+ { 25, -2},
+ { 25, -2},
+ { 24, -1},
+ { 25, -1},
+ { 24, 0},
+ { 24, 0},
+ { 24, 0},
+ { 24, 1},
+ { 24, 1},
+ { 25, 2},
+ { 24, 2},
+ { 25, 2},
+ { 24, 3},
+ { 24, 3},
+ { 25, 4},
+ { 24, 4},
+ { 24, 5},
+ { 24, 5},
+ { 24, 5},
+ { 24, 6},
+ { 23, 6},
+ { 23, 6},
+ { 23, 7},
+ { 23, 8},
+ { 23, 8},
+ { 23, 8},
+ { 23, 9},
+ { 23, 9},
+ { 23, 10},
+ { 22, 10},
+ { 22, 10},
+ { 22, 11},
+ { 22, 11},
+ { 22, 11},
+ { 22, 12},
+ { 21, 12},
+ { 21, 12},
+ { 21, 13},
+ { 20, 13},
+ { 20, 13},
+ { 19, 13},
+ { 19, 13},
+ { 19, 14},
+ { 19, 14},
+ { 19, 15},
+ { 19, 15},
+ { 18, 15},
+ { 18, 16},
+ { 17, 16},
+ { 17, 16},
+ { 17, 17},
+ { 17, 17},
+ { 16, 17},
+ { 16, 18},
+ { 16, 18},
+ { 15, 18},
+ { 14, 18},
+ { 15, 19},
+ { 14, 19},
+ { 14, 19},
+ { 13, 19},
+ { 13, 20},
+ { 13, 20},
+ { 13, 20},
+ { 12, 20},
+ { 12, 20},
+ { 12, 21},
+ { 11, 21},
+ { 11, 21},
+ { 11, 21},
+ { 10, 21},
+ { 10, 22},
+ { 10, 22},
+ { 9, 22},
+ { 9, 22},
+ { 8, 22},
+ { 7, 22},
+ { 7, 23},
+ { 7, 23},
+ { 6, 23},
+ { 6, 23},
+ { 5, 23},
+ { 5, 23},
+ { 5, 24},
+ { 4, 24},
+ { 4, 24},
+ { 4, 24},
+ { 3, 24},
+ { 2, 24},
+ { 2, 24},
+ { 1, 24},
+ { 1, 24},
+ { 0, 24},
+ { 0, 24},
+ { -1, 23},
+ { 0, 24},
+ { 0, 24},
+ { -1, 24},
+ { -1, 24},
+ { -2, 24},
+ { -2, 24},
+ { -3, 24},
+ { -3, 24},
+ { -4, 24},
+ { -4, 24},
+ { -5, 24},
+ { -5, 23},
+ { -5, 23},
+ { -6, 23},
+ { -6, 23},
+ { -7, 23},
+ { -7, 23},
+ { -7, 23},
+ { -8, 23},
+ { -8, 22},
+ { -9, 22},
+ { -9, 22},
+ {-10, 22},
+ {-10, 22},
+ {-10, 21},
+ {-11, 21},
+ {-11, 21},
+ {-11, 21},
+ {-11, 20},
+ {-12, 20},
+ {-12, 20},
+ {-13, 20},
+ {-13, 20},
+ {-13, 19},
+ {-14, 19},
+ {-14, 19},
+ {-14, 19},
+ {-14, 18},
+ {-15, 18},
+ {-15, 18},
+ {-15, 17},
+ {-16, 17},
+ {-16, 17},
+ {-17, 17},
+ {-17, 16},
+ {-17, 16},
+ {-18, 16},
+ {-17, 15},
+ {-18, 15},
+ {-18, 15},
+ {-19, 15},
+ {-19, 14},
+ {-19, 14},
+ {-19, 13},
+ {-19, 13},
+ {-20, 13},
+ {-20, 12},
+ {-20, 12},
+ {-21, 12},
+ {-21, 12},
+ {-21, 11},
+ {-21, 11},
+ {-21, 10},
+ {-21, 10},
+ {-21, 9},
+ {-22, 9},
+ {-22, 9},
+ {-22, 8},
+ {-22, 8},
+ {-22, 7},
+ {-23, 7},
+ {-23, 7},
+ {-23, 6},
+ {-23, 6},
+ {-23, 5},
+ {-24, 5},
+ {-23, 4},
+ {-23, 4},
+ {-24, 4},
+ {-24, 4},
+ {-24, 3},
+ {-24, 3},
+ {-24, 2},
+ {-24, 2},
+ {-24, 1},
+ {-24, 1},
+ {-24, 1},
+ {-24, 0},
+ {-25, 0},
+ {-24, -1},
+ {-25, -1},
+ {-24, -1},
+ {-24, -2},
+ {-24, -2},
+ {-24, -3},
+ {-24, -3},
+ {-24, -4},
+ {-24, -4},
+ {-24, -4},
+ {-24, -5},
+ {-24, -5},
+ {-24, -6},
+ {-24, -6},
+ {-23, -6},
+ {-23, -7},
+ {-23, -7},
+ {-23, -8},
+ {-23, -8},
+ {-23, -9},
+ {-23, -9},
+ {-22, -9},
+ {-22, -9},
+ {-22, -10},
+ {-22, -10},
+ {-21, -10},
+ {-21, -11},
+ {-22, -11},
+ {-22, -12},
+ {-21, -12},
+ {-21, -13},
+ {-21, -13},
+ {-20, -13},
+ {-21, -14},
+ {-20, -14},
+ {-20, -14},
+ {-19, -14},
+ {-19, -15},
+ {-19, -15},
+ {-18, -16},
+ {-18, -16},
+ {-18, -16},
+ {-18, -17},
+ {-18, -17},
+ {-17, -17},
+ {-17, -18},
+ {-17, -18},
+ {-16, -18},
+ {-16, -18},
+ {-16, -19},
+ {-16, -19},
+ {-15, -19},
+ {-15, -19},
+ {-15, -20},
+ {-14, -20},
+ {-14, -20},
+ {-14, -21},
+ {-13, -21},
+ {-13, -21},
+ {-13, -21},
+ {-12, -21},
+ {-12, -22},
+ {-11, -22},
+ {-11, -22},
+ {-11, -22},
+ {-10, -22},
+ {-10, -22},
+ { -9, -22},
+ { -9, -23},
+ { -9, -23},
+ { -8, -23},
+ { -8, -23},
+ { -7, -23},
+ { -7, -23},
+ { -7, -24},
+ { -6, -24},
+ { -6, -24},
+ { -5, -24},
+ { -5, -24},
+ { -4, -24},
+ { -4, -24},
+ { -4, -24},
+ { -4, -25},
+ { -3, -25},
+ { -2, -25},
+ { -2, -24},
+ { -2, -24},
+ { -1, -25},
+ { -1, -25},
+ { 0, -25},
+};
+
+static void sub_810B05C(struct Sprite *sprite)
{
u16 angle;
s16 sin;
@@ -484,7 +969,7 @@ void sub_810B05C(struct Sprite *sprite)
u16 x;
u16 y;
- angle = gTasks[sprite->data0].data[TD_MHAND_ANGLE];
+ angle = gTasks[sprite->data0].tMinuteHandAngle;
sin = Sin2(angle) / 16;
cos = Cos2(angle) / 16;
SetOamMatrix(0, cos, sin, -sin, cos);
@@ -501,7 +986,7 @@ void sub_810B05C(struct Sprite *sprite)
sprite->pos2.y = y;
}
-void sub_810B0F4(struct Sprite *sprite)
+static void sub_810B0F4(struct Sprite *sprite)
{
u16 angle;
s16 sin;
@@ -509,7 +994,7 @@ void sub_810B0F4(struct Sprite *sprite)
u16 x;
u16 y;
- angle = gTasks[sprite->data0].data[TD_HHAND_ANGLE];
+ angle = gTasks[sprite->data0].tHourHandAngle;
sin = Sin2(angle) / 16;
cos = Cos2(angle) / 16;
SetOamMatrix(1, cos, sin, -sin, cos);
@@ -526,21 +1011,21 @@ void sub_810B0F4(struct Sprite *sprite)
sprite->pos2.y = y;
}
-void sub_810B18C(struct Sprite *sprite)
+static void sub_810B18C(struct Sprite *sprite)
{
s16 sin;
s16 cos;
- if (gTasks[sprite->data0].data[TD_PERIOD] != AM)
+ if (gTasks[sprite->data0].tPeriod != PERIOD_AM)
{
- if ((u16)(sprite->data1 - 60) <= 29)
+ if (sprite->data1 >= 60 && sprite->data1 < 90)
sprite->data1 += 5;
- if (sprite->data1 <= 59)
+ if (sprite->data1 < 60)
sprite->data1++;
}
else
{
- if ((u16)(sprite->data1 - 46) <= 29)
+ if (sprite->data1 > 45 && sprite->data1 <= 75)
sprite->data1 -= 5;
if (sprite->data1 > 75)
sprite->data1--;
@@ -551,12 +1036,12 @@ void sub_810B18C(struct Sprite *sprite)
sprite->pos2.y = sin * 30 / 4096;
}
-void sub_810B230(struct Sprite *sprite)
+static void sub_810B230(struct Sprite *sprite)
{
s16 sin;
s16 cos;
- if (gTasks[sprite->data0].data[TD_PERIOD] != AM)
+ if (gTasks[sprite->data0].tPeriod != PERIOD_AM)
{
if (sprite->data1 >= 105 && sprite->data1 < 135)
sprite->data1 += 5;
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index 820ff34f5..f848873bb 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -10,6 +10,7 @@
#include "rom4.h"
#include "safari_zone.h"
#include "script.h"
+#include "species.h"
struct WildPokemon
{
@@ -21,7 +22,7 @@ struct WildPokemon
struct WildPokemonInfo
{
u8 encounterRate;
- struct WildPokemon *wildPokemon;
+ const struct WildPokemon *wildPokemon;
};
struct WildPokemonHeader
@@ -34,6 +35,2890 @@ struct WildPokemonHeader
struct WildPokemonInfo *fishingMonsInfo;
};
+
+const struct WildPokemon PetalburgCity_WaterMons [] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+};
+const struct WildPokemonInfo PetalburgCity_WaterMonsInfo = {1, PetalburgCity_WaterMons};
+
+const struct WildPokemon PetalburgCity_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_CORPHISH},
+ {25, 30, SPECIES_CORPHISH},
+ {30, 35, SPECIES_CORPHISH},
+ {20, 25, SPECIES_CORPHISH},
+ {35, 40, SPECIES_CORPHISH},
+ {40, 45, SPECIES_CORPHISH},
+};
+const struct WildPokemonInfo PetalburgCity_FishingMonsInfo = {10, PetalburgCity_FishingMons};
+
+const struct WildPokemon SlateportCity_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo SlateportCity_WaterMonsInfo = {4, SlateportCity_WaterMons};
+
+const struct WildPokemon SlateportCity_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo SlateportCity_FishingMonsInfo = {10, SlateportCity_FishingMons};
+
+const struct WildPokemon LilycoveCity_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo LilycoveCity_WaterMonsInfo = {4, LilycoveCity_WaterMons};
+
+const struct WildPokemon LilycoveCity_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_STARYU},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo LilycoveCity_FishingMonsInfo = {10, LilycoveCity_FishingMons};
+
+const struct WildPokemon MossdeepCity_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo MossdeepCity_WaterMonsInfo = {4, MossdeepCity_WaterMons};
+
+const struct WildPokemon MossdeepCity_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo MossdeepCity_FishingMonsInfo = {10, MossdeepCity_FishingMons};
+
+const struct WildPokemon SootopolisCity_WaterMons [] =
+{
+ {5, 35, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {15, 25, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_MAGIKARP},
+};
+const struct WildPokemonInfo SootopolisCity_WaterMonsInfo = {1, SootopolisCity_WaterMons};
+
+const struct WildPokemon SootopolisCity_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+#ifdef SAPPHIRE
+ {5, 10, SPECIES_TENTACOOL},
+#else
+ {10, 15, SPECIES_MAGIKARP},
+#endif
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {30, 35, SPECIES_MAGIKARP},
+ {30, 35, SPECIES_MAGIKARP},
+ {35, 40, SPECIES_GYARADOS},
+ {35, 45, SPECIES_GYARADOS},
+ {5, 45, SPECIES_GYARADOS},
+};
+const struct WildPokemonInfo SootopolisCity_FishingMonsInfo = {10, SootopolisCity_FishingMons};
+
+const struct WildPokemon EverGrandeCity_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo EverGrandeCity_WaterMonsInfo = {4, EverGrandeCity_WaterMons};
+
+const struct WildPokemon EverGrandeCity_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_LUVDISC},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_LUVDISC},
+ {30, 35, SPECIES_WAILMER},
+ {30, 35, SPECIES_CORSOLA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo EverGrandeCity_FishingMonsInfo = {10, EverGrandeCity_FishingMons};
+
+const struct WildPokemon MeteorFalls_1F_1R_LandMons [] =
+{
+ {16, 16, SPECIES_ZUBAT},
+ {17, 17, SPECIES_ZUBAT},
+ {18, 18, SPECIES_ZUBAT},
+ {15, 15, SPECIES_ZUBAT},
+ {14, 14, SPECIES_ZUBAT},
+#ifdef SAPPHIRE
+ {16, 16, SPECIES_LUNATONE},
+ {18, 18, SPECIES_LUNATONE},
+ {14, 14, SPECIES_LUNATONE},
+#else
+ {16, 16, SPECIES_SOLROCK},
+ {18, 18, SPECIES_SOLROCK},
+ {14, 14, SPECIES_SOLROCK},
+#endif
+ {19, 19, SPECIES_ZUBAT},
+ {20, 20, SPECIES_ZUBAT},
+ {19, 19, SPECIES_ZUBAT},
+ {20, 20, SPECIES_ZUBAT},
+};
+const struct WildPokemonInfo MeteorFalls_1F_1R_LandMonsInfo = {10, MeteorFalls_1F_1R_LandMons};
+
+const struct WildPokemon MeteorFalls_1F_1R_WaterMons [] =
+{
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+#ifdef SAPPHIRE
+ {25, 35, SPECIES_LUNATONE},
+ {15, 25, SPECIES_LUNATONE},
+ {5, 15, SPECIES_LUNATONE},
+#else
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+#endif
+};
+const struct WildPokemonInfo MeteorFalls_1F_1R_WaterMonsInfo = {4, MeteorFalls_1F_1R_WaterMons};
+
+const struct WildPokemon MeteorFalls_1F_1R_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+const struct WildPokemonInfo MeteorFalls_1F_1R_FishingMonsInfo = {30, MeteorFalls_1F_1R_FishingMons};
+
+const struct WildPokemon MeteorFalls_1F_2R_LandMons [] =
+{
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {35, 35, SPECIES_LUNATONE},
+ {33, 33, SPECIES_LUNATONE},
+ {37, 37, SPECIES_LUNATONE},
+#else
+ {35, 35, SPECIES_SOLROCK},
+ {33, 33, SPECIES_SOLROCK},
+ {37, 37, SPECIES_SOLROCK},
+#endif
+ {35, 35, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {39, 39, SPECIES_LUNATONE},
+#else
+ {39, 39, SPECIES_SOLROCK},
+#endif
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo MeteorFalls_1F_2R_LandMonsInfo = {10, MeteorFalls_1F_2R_LandMons};
+
+const struct WildPokemon MeteorFalls_1F_2R_WaterMons [] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {25, 35, SPECIES_LUNATONE},
+ {15, 25, SPECIES_LUNATONE},
+ {5, 15, SPECIES_LUNATONE},
+#else
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+#endif
+};
+const struct WildPokemonInfo MeteorFalls_1F_2R_WaterMonsInfo = {4, MeteorFalls_1F_2R_WaterMons};
+
+const struct WildPokemon MeteorFalls_1F_2R_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+const struct WildPokemonInfo MeteorFalls_1F_2R_FishingMonsInfo = {30, MeteorFalls_1F_2R_FishingMons};
+
+const struct WildPokemon MeteorFalls_B1F_1R_LandMons [] =
+{
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {35, 35, SPECIES_LUNATONE},
+ {33, 33, SPECIES_LUNATONE},
+ {37, 37, SPECIES_LUNATONE},
+#else
+ {35, 35, SPECIES_SOLROCK},
+ {33, 33, SPECIES_SOLROCK},
+ {37, 37, SPECIES_SOLROCK},
+#endif
+ {35, 35, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {39, 39, SPECIES_LUNATONE},
+#else
+ {39, 39, SPECIES_SOLROCK},
+#endif
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo MeteorFalls_B1F_1R_LandMonsInfo = {10, MeteorFalls_B1F_1R_LandMons};
+
+const struct WildPokemon MeteorFalls_B1F_1R_WaterMons [] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {25, 35, SPECIES_LUNATONE},
+ {15, 25, SPECIES_LUNATONE},
+ {5, 15, SPECIES_LUNATONE},
+#else
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+#endif
+};
+const struct WildPokemonInfo MeteorFalls_B1F_1R_WaterMonsInfo = {4, MeteorFalls_B1F_1R_WaterMons};
+
+const struct WildPokemon MeteorFalls_B1F_1R_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+const struct WildPokemonInfo MeteorFalls_B1F_1R_FishingMonsInfo = {30, MeteorFalls_B1F_1R_FishingMons};
+
+const struct WildPokemon MeteorFalls_B1F_2R_LandMons [] =
+{
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {30, 30, SPECIES_BAGON},
+#ifdef SAPPHIRE
+ {35, 35, SPECIES_LUNATONE},
+#else
+ {35, 35, SPECIES_SOLROCK},
+#endif
+ {35, 35, SPECIES_BAGON},
+#ifdef SAPPHIRE
+ {37, 37, SPECIES_LUNATONE},
+#else
+ {37, 37, SPECIES_SOLROCK},
+#endif
+ {25, 25, SPECIES_BAGON},
+#ifdef SAPPHIRE
+ {39, 39, SPECIES_LUNATONE},
+#else
+ {39, 39, SPECIES_SOLROCK},
+#endif
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo MeteorFalls_B1F_2R_LandMonsInfo = {10, MeteorFalls_B1F_2R_LandMons};
+
+const struct WildPokemon MeteorFalls_B1F_2R_WaterMons [] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {25, 35, SPECIES_LUNATONE},
+ {15, 25, SPECIES_LUNATONE},
+ {5, 15, SPECIES_LUNATONE},
+#else
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+#endif
+};
+const struct WildPokemonInfo MeteorFalls_B1F_2R_WaterMonsInfo = {4, MeteorFalls_B1F_2R_WaterMons};
+
+const struct WildPokemon MeteorFalls_B1F_2R_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+const struct WildPokemonInfo MeteorFalls_B1F_2R_FishingMonsInfo = {30, MeteorFalls_B1F_2R_FishingMons};
+
+const struct WildPokemon RusturfTunnel_LandMons [] =
+{
+ {6, 6, SPECIES_WHISMUR},
+ {7, 7, SPECIES_WHISMUR},
+ {6, 6, SPECIES_WHISMUR},
+ {6, 6, SPECIES_WHISMUR},
+ {7, 7, SPECIES_WHISMUR},
+ {7, 7, SPECIES_WHISMUR},
+ {5, 5, SPECIES_WHISMUR},
+ {8, 8, SPECIES_WHISMUR},
+ {5, 5, SPECIES_WHISMUR},
+ {8, 8, SPECIES_WHISMUR},
+ {5, 5, SPECIES_WHISMUR},
+ {8, 8, SPECIES_WHISMUR},
+};
+const struct WildPokemonInfo RusturfTunnel_LandMonsInfo = {10, RusturfTunnel_LandMons};
+
+const struct WildPokemon GraniteCave_1F_LandMons [] =
+{
+ {7, 7, SPECIES_ZUBAT},
+ {8, 8, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ZUBAT},
+ {9, 9, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ABRA},
+ {10, 10, SPECIES_MAKUHITA},
+ {6, 6, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_GEODUDE},
+ {8, 8, SPECIES_GEODUDE},
+ {6, 6, SPECIES_GEODUDE},
+ {9, 9, SPECIES_GEODUDE},
+};
+const struct WildPokemonInfo GraniteCave_1F_LandMonsInfo = {10, GraniteCave_1F_LandMons};
+
+const struct WildPokemon GraniteCave_B1F_LandMons [] =
+{
+ {9, 9, SPECIES_ZUBAT},
+ {10, 10, SPECIES_ARON},
+ {9, 9, SPECIES_ARON},
+ {11, 11, SPECIES_ARON},
+ {10, 10, SPECIES_ZUBAT},
+ {9, 9, SPECIES_ABRA},
+ {10, 10, SPECIES_MAKUHITA},
+ {11, 11, SPECIES_MAKUHITA},
+#ifdef SAPPHIRE
+ {10, 10, SPECIES_SABLEYE},
+ {10, 10, SPECIES_SABLEYE},
+ {9, 9, SPECIES_SABLEYE},
+ {11, 11, SPECIES_SABLEYE},
+#else
+ {10, 10, SPECIES_MAWILE},
+ {10, 10, SPECIES_MAWILE},
+ {9, 9, SPECIES_MAWILE},
+ {11, 11, SPECIES_MAWILE},
+#endif
+};
+const struct WildPokemonInfo GraniteCave_B1F_LandMonsInfo = {10, GraniteCave_B1F_LandMons};
+
+const struct WildPokemon GraniteCave_B2F_LandMons [] =
+{
+ {10, 10, SPECIES_ZUBAT},
+ {11, 11, SPECIES_ARON},
+ {10, 10, SPECIES_ARON},
+ {11, 11, SPECIES_ZUBAT},
+ {12, 12, SPECIES_ARON},
+ {10, 10, SPECIES_ABRA},
+#ifdef SAPPHIRE
+ {10, 10, SPECIES_SABLEYE},
+ {11, 11, SPECIES_SABLEYE},
+ {12, 12, SPECIES_SABLEYE},
+ {10, 10, SPECIES_SABLEYE},
+ {12, 12, SPECIES_SABLEYE},
+ {10, 10, SPECIES_SABLEYE},
+#else
+ {10, 10, SPECIES_MAWILE},
+ {11, 11, SPECIES_MAWILE},
+ {12, 12, SPECIES_MAWILE},
+ {10, 10, SPECIES_MAWILE},
+ {12, 12, SPECIES_MAWILE},
+ {10, 10, SPECIES_MAWILE},
+#endif
+};
+const struct WildPokemonInfo GraniteCave_B2F_LandMonsInfo = {10, GraniteCave_B2F_LandMons};
+
+const struct WildPokemon GraniteCave_B2F_RockSmashMons [] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {10, 20, SPECIES_NOSEPASS},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+};
+const struct WildPokemonInfo GraniteCave_B2F_RockSmashMonsInfo = {20, GraniteCave_B2F_RockSmashMons};
+
+const struct WildPokemon GraniteCave_StevensRoom_LandMons [] =
+{
+ {7, 7, SPECIES_ZUBAT},
+ {8, 8, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ZUBAT},
+ {9, 9, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ABRA},
+ {10, 10, SPECIES_MAKUHITA},
+ {6, 6, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_ARON},
+ {8, 8, SPECIES_ARON},
+ {7, 7, SPECIES_ARON},
+ {8, 8, SPECIES_ARON},
+};
+const struct WildPokemonInfo GraniteCave_StevensRoom_LandMonsInfo = {10, GraniteCave_StevensRoom_LandMons};
+
+const struct WildPokemon PetalburgWoods_LandMons [] =
+{
+ {5, 5, SPECIES_ZIGZAGOON},
+ {5, 5, SPECIES_WURMPLE},
+ {5, 5, SPECIES_SHROOMISH},
+ {6, 6, SPECIES_ZIGZAGOON},
+ {5, 5, SPECIES_SILCOON},
+ {5, 5, SPECIES_CASCOON},
+ {6, 6, SPECIES_WURMPLE},
+ {6, 6, SPECIES_SHROOMISH},
+ {5, 5, SPECIES_TAILLOW},
+ {5, 5, SPECIES_SLAKOTH},
+ {6, 6, SPECIES_TAILLOW},
+ {6, 6, SPECIES_SLAKOTH},
+};
+const struct WildPokemonInfo PetalburgWoods_LandMonsInfo = {20, PetalburgWoods_LandMons};
+
+//Jagged Pass Pokemon are 2 levels higher on Sapphire
+#ifdef SAPPHIRE
+#define JAGGED_PASS_LEVEL_DIFF 2
+#else
+#define JAGGED_PASS_LEVEL_DIFF 0
+#endif
+
+const struct WildPokemon JaggedPass_LandMons [] =
+{
+ {19 + JAGGED_PASS_LEVEL_DIFF, 19 + JAGGED_PASS_LEVEL_DIFF, SPECIES_NUMEL},
+ {19 + JAGGED_PASS_LEVEL_DIFF, 19 + JAGGED_PASS_LEVEL_DIFF, SPECIES_NUMEL},
+ {19 + JAGGED_PASS_LEVEL_DIFF, 19 + JAGGED_PASS_LEVEL_DIFF, SPECIES_MACHOP},
+ {18 + JAGGED_PASS_LEVEL_DIFF, 18 + JAGGED_PASS_LEVEL_DIFF, SPECIES_NUMEL},
+ {18 + JAGGED_PASS_LEVEL_DIFF, 18 + JAGGED_PASS_LEVEL_DIFF, SPECIES_SPOINK},
+ {18 + JAGGED_PASS_LEVEL_DIFF, 18 + JAGGED_PASS_LEVEL_DIFF, SPECIES_MACHOP},
+ {19 + JAGGED_PASS_LEVEL_DIFF, 19 + JAGGED_PASS_LEVEL_DIFF, SPECIES_SPOINK},
+ {20 + JAGGED_PASS_LEVEL_DIFF, 20 + JAGGED_PASS_LEVEL_DIFF, SPECIES_MACHOP},
+ {20 + JAGGED_PASS_LEVEL_DIFF, 20 + JAGGED_PASS_LEVEL_DIFF, SPECIES_NUMEL},
+ {20 + JAGGED_PASS_LEVEL_DIFF, 20 + JAGGED_PASS_LEVEL_DIFF, SPECIES_SPOINK},
+ {20 + JAGGED_PASS_LEVEL_DIFF, 20 + JAGGED_PASS_LEVEL_DIFF, SPECIES_NUMEL},
+ {20 + JAGGED_PASS_LEVEL_DIFF, 20 + JAGGED_PASS_LEVEL_DIFF, SPECIES_SPOINK},
+};
+const struct WildPokemonInfo JaggedPass_LandMonsInfo = {20, JaggedPass_LandMons};
+
+const struct WildPokemon FieryPath_LandMons [] =
+{
+ {15, 15, SPECIES_NUMEL},
+#ifdef SAPPHIRE
+ {15, 15, SPECIES_GRIMER},
+#else
+ {15, 15, SPECIES_KOFFING},
+#endif
+ {16, 16, SPECIES_NUMEL},
+ {15, 15, SPECIES_MACHOP},
+ {15, 15, SPECIES_TORKOAL},
+ {15, 15, SPECIES_SLUGMA},
+#ifdef SAPPHIRE
+ {16, 16, SPECIES_GRIMER},
+#else
+ {16, 16, SPECIES_KOFFING},
+#endif
+ {16, 16, SPECIES_MACHOP},
+ {14, 14, SPECIES_TORKOAL},
+ {16, 16, SPECIES_TORKOAL},
+#ifdef SAPPHIRE
+ {14, 14, SPECIES_KOFFING},
+ {14, 14, SPECIES_KOFFING},
+#else
+ {14, 14, SPECIES_GRIMER},
+ {14, 14, SPECIES_GRIMER},
+#endif
+};
+const struct WildPokemonInfo FieryPath_LandMonsInfo = {10, FieryPath_LandMons};
+
+const struct WildPokemon MtPyre_1F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+#else
+ {27, 27, SPECIES_DUSKULL},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {23, 23, SPECIES_DUSKULL},
+ {22, 22, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+#endif
+};
+const struct WildPokemonInfo MtPyre_1F_LandMonsInfo = {10, MtPyre_1F_LandMons};
+
+const struct WildPokemon MtPyre_2F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+#else
+ {27, 27, SPECIES_DUSKULL},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {23, 23, SPECIES_DUSKULL},
+ {22, 22, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+#endif
+};
+const struct WildPokemonInfo MtPyre_2F_LandMonsInfo = {10, MtPyre_2F_LandMons};
+
+const struct WildPokemon MtPyre_3F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+#else
+ {27, 27, SPECIES_DUSKULL},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {23, 23, SPECIES_DUSKULL},
+ {22, 22, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+#endif
+};
+const struct WildPokemonInfo MtPyre_3F_LandMonsInfo = {10, MtPyre_3F_LandMons};
+
+const struct WildPokemon MtPyre_4F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {27, 27, SPECIES_DUSKULL},
+ {27, 27, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+#else
+ {27, 27, SPECIES_DUSKULL},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {23, 23, SPECIES_DUSKULL},
+ {22, 22, SPECIES_DUSKULL},
+ {27, 27, SPECIES_SHUPPET},
+ {27, 27, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+#endif
+};
+const struct WildPokemonInfo MtPyre_4F_LandMonsInfo = {10, MtPyre_4F_LandMons};
+
+const struct WildPokemon MtPyre_5F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {27, 27, SPECIES_DUSKULL},
+ {27, 27, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+#else
+ {27, 27, SPECIES_DUSKULL},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {23, 23, SPECIES_DUSKULL},
+ {22, 22, SPECIES_DUSKULL},
+ {27, 27, SPECIES_SHUPPET},
+ {27, 27, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+#endif
+};
+const struct WildPokemonInfo MtPyre_5F_LandMonsInfo = {10, MtPyre_5F_LandMons};
+
+const struct WildPokemon MtPyre_6F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {27, 27, SPECIES_DUSKULL},
+ {27, 27, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+#else
+ {27, 27, SPECIES_DUSKULL},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {23, 23, SPECIES_DUSKULL},
+ {22, 22, SPECIES_DUSKULL},
+ {27, 27, SPECIES_SHUPPET},
+ {27, 27, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+#endif
+};
+const struct WildPokemonInfo MtPyre_6F_LandMonsInfo = {10, MtPyre_6F_LandMons};
+
+const struct WildPokemon MtPyre_Exterior_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_SHUPPET},
+#else
+ {27, 27, SPECIES_DUSKULL},
+#endif
+ {27, 27, SPECIES_MEDITITE},
+#ifdef SAPPHIRE
+ {28, 28, SPECIES_SHUPPET},
+#else
+ {28, 28, SPECIES_DUSKULL},
+#endif
+ {29, 29, SPECIES_MEDITITE},
+#ifdef SAPPHIRE
+ {29, 29, SPECIES_SHUPPET},
+#else
+ {29, 29, SPECIES_DUSKULL},
+#endif
+ {27, 27, SPECIES_VULPIX},
+ {29, 29, SPECIES_VULPIX},
+ {25, 25, SPECIES_VULPIX},
+ {27, 27, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {28, 28, SPECIES_WINGULL},
+};
+const struct WildPokemonInfo MtPyre_Exterior_LandMonsInfo = {10, MtPyre_Exterior_LandMons};
+
+const struct WildPokemon MtPyre_Summit_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {28, 28, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {27, 27, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {30, 30, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {30, 30, SPECIES_DUSKULL},
+#else
+ {28, 28, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+ {27, 27, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {30, 30, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {24, 24, SPECIES_DUSKULL},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {30, 30, SPECIES_SHUPPET},
+#endif
+ {28, 28, SPECIES_CHIMECHO},
+ {28, 28, SPECIES_CHIMECHO},
+};
+const struct WildPokemonInfo MtPyre_Summit_LandMonsInfo = {10, MtPyre_Summit_LandMons};
+
+const struct WildPokemon SeafloorCavern_Entrance_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Entrance_WaterMonsInfo = {4, SeafloorCavern_Entrance_WaterMons};
+
+const struct WildPokemon SeafloorCavern_Entrance_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo SeafloorCavern_Entrance_FishingMonsInfo = {10, SeafloorCavern_Entrance_FishingMons};
+
+const struct WildPokemon SeafloorCavern_Room1_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room1_LandMonsInfo = {4, SeafloorCavern_Room1_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room2_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room2_LandMonsInfo = {4, SeafloorCavern_Room2_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room3_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room3_LandMonsInfo = {4, SeafloorCavern_Room3_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room4_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room4_LandMonsInfo = {4, SeafloorCavern_Room4_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room5_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room5_LandMonsInfo = {4, SeafloorCavern_Room5_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room6_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room6_LandMonsInfo = {4, SeafloorCavern_Room6_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room6_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room6_WaterMonsInfo = {4, SeafloorCavern_Room6_WaterMons};
+
+const struct WildPokemon SeafloorCavern_Room6_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo SeafloorCavern_Room6_FishingMonsInfo = {10, SeafloorCavern_Room6_FishingMons};
+
+const struct WildPokemon SeafloorCavern_Room7_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room7_LandMonsInfo = {4, SeafloorCavern_Room7_LandMons};
+
+const struct WildPokemon SeafloorCavern_Room7_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room7_WaterMonsInfo = {4, SeafloorCavern_Room7_WaterMons};
+
+const struct WildPokemon SeafloorCavern_Room7_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo SeafloorCavern_Room7_FishingMonsInfo = {10, SeafloorCavern_Room7_FishingMons};
+
+const struct WildPokemon SeafloorCavern_Room8_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo SeafloorCavern_Room8_LandMonsInfo = {4, SeafloorCavern_Room8_LandMons};
+
+const struct WildPokemon CaveOfOrigin_Entrance_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo CaveOfOrigin_Entrance_LandMonsInfo = {4, CaveOfOrigin_Entrance_LandMons};
+
+const struct WildPokemon CaveOfOrigin_1F_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+#ifdef SAPPHIRE
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+#else
+ {30, 30, SPECIES_MAWILE},
+ {32, 32, SPECIES_MAWILE},
+ {34, 34, SPECIES_MAWILE},
+#endif
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo CaveOfOrigin_1F_LandMonsInfo = {4, CaveOfOrigin_1F_LandMons};
+
+const struct WildPokemon CaveOfOrigin_B1F_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+#ifdef SAPPHIRE
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+#else
+ {30, 30, SPECIES_MAWILE},
+ {32, 32, SPECIES_MAWILE},
+ {34, 34, SPECIES_MAWILE},
+#endif
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo CaveOfOrigin_B1F_LandMonsInfo = {4, CaveOfOrigin_B1F_LandMons};
+
+const struct WildPokemon CaveOfOrigin_B2F_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+#ifdef SAPPHIRE
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+#else
+ {30, 30, SPECIES_MAWILE},
+ {32, 32, SPECIES_MAWILE},
+ {34, 34, SPECIES_MAWILE},
+#endif
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo CaveOfOrigin_B2F_LandMonsInfo = {4, CaveOfOrigin_B2F_LandMons};
+
+const struct WildPokemon CaveOfOrigin_B3F_LandMons [] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+#ifdef SAPPHIRE
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+#else
+ {30, 30, SPECIES_MAWILE},
+ {32, 32, SPECIES_MAWILE},
+ {34, 34, SPECIES_MAWILE},
+#endif
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo CaveOfOrigin_B3F_LandMonsInfo = {4, CaveOfOrigin_B3F_LandMons};
+
+const struct WildPokemon VictoryRoad_1F_LandMons [] =
+{
+ {40, 40, SPECIES_GOLBAT},
+ {40, 40, SPECIES_HARIYAMA},
+ {40, 40, SPECIES_LAIRON},
+ {40, 40, SPECIES_LOUDRED},
+ {36, 36, SPECIES_ZUBAT},
+ {36, 36, SPECIES_MAKUHITA},
+ {38, 38, SPECIES_GOLBAT},
+ {38, 38, SPECIES_HARIYAMA},
+ {36, 36, SPECIES_ARON},
+ {36, 36, SPECIES_WHISMUR},
+ {36, 36, SPECIES_ARON},
+ {36, 36, SPECIES_WHISMUR},
+};
+const struct WildPokemonInfo VictoryRoad_1F_LandMonsInfo = {10, VictoryRoad_1F_LandMons};
+
+const struct WildPokemon VictoryRoad_B1F_LandMons [] =
+{
+ {40, 40, SPECIES_GOLBAT},
+ {40, 40, SPECIES_HARIYAMA},
+ {40, 40, SPECIES_LAIRON},
+ {40, 40, SPECIES_MEDICHAM},
+ {38, 38, SPECIES_GOLBAT},
+ {38, 38, SPECIES_HARIYAMA},
+ {42, 42, SPECIES_GOLBAT},
+ {42, 42, SPECIES_HARIYAMA},
+ {42, 42, SPECIES_LAIRON},
+ {38, 38, SPECIES_MEDITITE},
+ {42, 42, SPECIES_LAIRON},
+ {38, 38, SPECIES_MEDITITE},
+};
+const struct WildPokemonInfo VictoryRoad_B1F_LandMonsInfo = {10, VictoryRoad_B1F_LandMons};
+
+const struct WildPokemon VictoryRoad_B1F_RockSmashMons [] =
+{
+ {30, 40, SPECIES_GRAVELER},
+ {30, 40, SPECIES_GEODUDE},
+ {35, 40, SPECIES_GRAVELER},
+ {35, 40, SPECIES_GRAVELER},
+ {35, 40, SPECIES_GRAVELER},
+};
+const struct WildPokemonInfo VictoryRoad_B1F_RockSmashMonsInfo = {20, VictoryRoad_B1F_RockSmashMons};
+
+const struct WildPokemon VictoryRoad_B2F_LandMons [] =
+{
+ {40, 40, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {40, 40, SPECIES_SABLEYE},
+#else
+ {40, 40, SPECIES_MAWILE},
+#endif
+ {40, 40, SPECIES_LAIRON},
+ {40, 40, SPECIES_MEDICHAM},
+ {42, 42, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {42, 42, SPECIES_SABLEYE},
+#else
+ {42, 42, SPECIES_MAWILE},
+#endif
+ {44, 44, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {44, 44, SPECIES_SABLEYE},
+#else
+ {44, 44, SPECIES_MAWILE},
+#endif
+ {42, 42, SPECIES_LAIRON},
+ {42, 42, SPECIES_MEDICHAM},
+ {44, 44, SPECIES_LAIRON},
+ {44, 44, SPECIES_MEDICHAM},
+};
+const struct WildPokemonInfo VictoryRoad_B2F_LandMonsInfo = {10, VictoryRoad_B2F_LandMons};
+
+const struct WildPokemon VictoryRoad_B2F_WaterMons [] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {25, 30, SPECIES_GOLBAT},
+ {35, 40, SPECIES_GOLBAT},
+ {35, 40, SPECIES_GOLBAT},
+ {35, 40, SPECIES_GOLBAT},
+};
+const struct WildPokemonInfo VictoryRoad_B2F_WaterMonsInfo = {4, VictoryRoad_B2F_WaterMons};
+
+const struct WildPokemon VictoryRoad_B2F_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+const struct WildPokemonInfo VictoryRoad_B2F_FishingMonsInfo = {30, VictoryRoad_B2F_FishingMons};
+
+const struct WildPokemon ShoalCave_LowTideEntranceRoom_LandMons [] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+const struct WildPokemonInfo ShoalCave_LowTideEntranceRoom_LandMonsInfo = {10, ShoalCave_LowTideEntranceRoom_LandMons};
+
+const struct WildPokemon ShoalCave_LowTideEntranceRoom_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 35, SPECIES_SPHEAL},
+};
+const struct WildPokemonInfo ShoalCave_LowTideEntranceRoom_WaterMonsInfo = {4, ShoalCave_LowTideEntranceRoom_WaterMons};
+
+const struct WildPokemon ShoalCave_LowTideEntranceRoom_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo ShoalCave_LowTideEntranceRoom_FishingMonsInfo = {10, ShoalCave_LowTideEntranceRoom_FishingMons};
+
+const struct WildPokemon ShoalCave_LowTideInnerRoom_LandMons [] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+const struct WildPokemonInfo ShoalCave_LowTideInnerRoom_LandMonsInfo = {10, ShoalCave_LowTideInnerRoom_LandMons};
+
+const struct WildPokemon ShoalCave_LowTideInnerRoom_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 35, SPECIES_SPHEAL},
+};
+const struct WildPokemonInfo ShoalCave_LowTideInnerRoom_WaterMonsInfo = {4, ShoalCave_LowTideInnerRoom_WaterMons};
+
+const struct WildPokemon ShoalCave_LowTideInnerRoom_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo ShoalCave_LowTideInnerRoom_FishingMonsInfo = {10, ShoalCave_LowTideInnerRoom_FishingMons};
+
+const struct WildPokemon ShoalCave_LowTideStairsRoom_LandMons [] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+const struct WildPokemonInfo ShoalCave_LowTideStairsRoom_LandMonsInfo = {10, ShoalCave_LowTideStairsRoom_LandMons};
+
+const struct WildPokemon ShoalCave_LowTideLowerRoom_LandMons [] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+const struct WildPokemonInfo ShoalCave_LowTideLowerRoom_LandMonsInfo = {10, ShoalCave_LowTideLowerRoom_LandMons};
+
+const struct WildPokemon ShoalCave_LowTideIceRoom_LandMons [] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {26, 26, SPECIES_SNORUNT},
+ {32, 32, SPECIES_SPHEAL},
+ {30, 30, SPECIES_GOLBAT},
+ {28, 28, SPECIES_SNORUNT},
+ {32, 32, SPECIES_GOLBAT},
+ {30, 30, SPECIES_SNORUNT},
+};
+const struct WildPokemonInfo ShoalCave_LowTideIceRoom_LandMonsInfo = {10, ShoalCave_LowTideIceRoom_LandMons};
+
+const struct WildPokemon NewMauville_Entrance_LandMons [] =
+{
+ {24, 24, SPECIES_VOLTORB},
+ {24, 24, SPECIES_MAGNEMITE},
+ {25, 25, SPECIES_VOLTORB},
+ {25, 25, SPECIES_MAGNEMITE},
+ {23, 23, SPECIES_VOLTORB},
+ {23, 23, SPECIES_MAGNEMITE},
+ {26, 26, SPECIES_VOLTORB},
+ {26, 26, SPECIES_MAGNEMITE},
+ {22, 22, SPECIES_VOLTORB},
+ {22, 22, SPECIES_MAGNEMITE},
+ {22, 22, SPECIES_VOLTORB},
+ {22, 22, SPECIES_MAGNEMITE},
+};
+const struct WildPokemonInfo NewMauville_Entrance_LandMonsInfo = {10, NewMauville_Entrance_LandMons};
+
+const struct WildPokemon NewMauville_Inside_LandMons [] =
+{
+ {24, 24, SPECIES_VOLTORB},
+ {24, 24, SPECIES_MAGNEMITE},
+ {25, 25, SPECIES_VOLTORB},
+ {25, 25, SPECIES_MAGNEMITE},
+ {23, 23, SPECIES_VOLTORB},
+ {23, 23, SPECIES_MAGNEMITE},
+ {26, 26, SPECIES_VOLTORB},
+ {26, 26, SPECIES_MAGNEMITE},
+ {22, 22, SPECIES_VOLTORB},
+ {22, 22, SPECIES_MAGNEMITE},
+ {26, 26, SPECIES_ELECTRODE},
+ {26, 26, SPECIES_MAGNETON},
+};
+const struct WildPokemonInfo NewMauville_Inside_LandMonsInfo = {10, NewMauville_Inside_LandMons};
+
+const struct WildPokemon AbandonedShip_Rooms_B1F_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+};
+const struct WildPokemonInfo AbandonedShip_Rooms_B1F_WaterMonsInfo = {4, AbandonedShip_Rooms_B1F_WaterMons};
+
+const struct WildPokemon AbandonedShip_Rooms_B1F_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_TENTACOOL},
+ {25, 30, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+ {25, 30, SPECIES_TENTACRUEL},
+ {20, 25, SPECIES_TENTACRUEL},
+};
+const struct WildPokemonInfo AbandonedShip_Rooms_B1F_FishingMonsInfo = {20, AbandonedShip_Rooms_B1F_FishingMons};
+
+const struct WildPokemon AbandonedShip_HiddenFloorCorridors_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+};
+const struct WildPokemonInfo AbandonedShip_HiddenFloorCorridors_WaterMonsInfo = {4, AbandonedShip_HiddenFloorCorridors_WaterMons};
+
+const struct WildPokemon AbandonedShip_HiddenFloorCorridors_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_TENTACOOL},
+ {25, 30, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+ {25, 30, SPECIES_TENTACRUEL},
+ {20, 25, SPECIES_TENTACRUEL},
+};
+const struct WildPokemonInfo AbandonedShip_HiddenFloorCorridors_FishingMonsInfo = {20, AbandonedShip_HiddenFloorCorridors_FishingMons};
+
+const struct WildPokemon SkyPillar_1F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {48, 48, SPECIES_SABLEYE},
+#else
+ {48, 48, SPECIES_MAWILE},
+#endif
+ {48, 48, SPECIES_GOLBAT},
+ {50, 50, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {50, 50, SPECIES_SABLEYE},
+#else
+ {50, 50, SPECIES_MAWILE},
+#endif
+ {48, 48, SPECIES_CLAYDOL},
+#ifdef SAPPHIRE
+ {48, 48, SPECIES_BANETTE},
+ {50, 50, SPECIES_BANETTE},
+#else
+ {48, 48, SPECIES_DUSCLOPS},
+ {50, 50, SPECIES_DUSCLOPS},
+#endif
+ {49, 49, SPECIES_CLAYDOL},
+ {47, 47, SPECIES_CLAYDOL},
+ {50, 50, SPECIES_CLAYDOL},
+ {47, 47, SPECIES_CLAYDOL},
+ {50, 50, SPECIES_CLAYDOL},
+};
+const struct WildPokemonInfo SkyPillar_1F_LandMonsInfo = {10, SkyPillar_1F_LandMons};
+
+const struct WildPokemon SkyPillar_3F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {51, 51, SPECIES_SABLEYE},
+#else
+ {51, 51, SPECIES_MAWILE},
+#endif
+ {51, 51, SPECIES_GOLBAT},
+ {53, 53, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {53, 53, SPECIES_SABLEYE},
+#else
+ {53, 53, SPECIES_MAWILE},
+#endif
+ {51, 51, SPECIES_CLAYDOL},
+#ifdef SAPPHIRE
+ {51, 51, SPECIES_BANETTE},
+ {53, 53, SPECIES_BANETTE},
+#else
+ {51, 51, SPECIES_DUSCLOPS},
+ {53, 53, SPECIES_DUSCLOPS},
+#endif
+ {52, 52, SPECIES_CLAYDOL},
+ {50, 50, SPECIES_CLAYDOL},
+ {53, 53, SPECIES_CLAYDOL},
+ {50, 50, SPECIES_CLAYDOL},
+ {53, 53, SPECIES_CLAYDOL},
+};
+const struct WildPokemonInfo SkyPillar_3F_LandMonsInfo = {10, SkyPillar_3F_LandMons};
+
+const struct WildPokemon SkyPillar_5F_LandMons [] =
+{
+#ifdef SAPPHIRE
+ {54, 54, SPECIES_SABLEYE},
+#else
+ {54, 54, SPECIES_MAWILE},
+#endif
+ {54, 54, SPECIES_GOLBAT},
+ {56, 56, SPECIES_GOLBAT},
+#ifdef SAPPHIRE
+ {56, 56, SPECIES_SABLEYE},
+#else
+ {56, 56, SPECIES_MAWILE},
+#endif
+ {54, 54, SPECIES_CLAYDOL},
+#ifdef SAPPHIRE
+ {54, 54, SPECIES_BANETTE},
+ {56, 56, SPECIES_BANETTE},
+#else
+ {54, 54, SPECIES_DUSCLOPS},
+ {56, 56, SPECIES_DUSCLOPS},
+#endif
+ {55, 55, SPECIES_CLAYDOL},
+ {56, 56, SPECIES_CLAYDOL},
+ {57, 57, SPECIES_ALTARIA},
+ {54, 54, SPECIES_ALTARIA},
+ {60, 60, SPECIES_ALTARIA},
+};
+const struct WildPokemonInfo SkyPillar_5F_LandMonsInfo = {10, SkyPillar_5F_LandMons};
+
+const struct WildPokemon Route101_LandMons [] =
+{
+ {2, 2, SPECIES_WURMPLE},
+ {2, 2, SPECIES_ZIGZAGOON},
+ {2, 2, SPECIES_WURMPLE},
+ {3, 3, SPECIES_WURMPLE},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_WURMPLE},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {2, 2, SPECIES_POOCHYENA},
+ {2, 2, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+};
+const struct WildPokemonInfo Route101_LandMonsInfo = {20, Route101_LandMons};
+
+const struct WildPokemon Route102_LandMons [] =
+{
+ {3, 3, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_WURMPLE},
+ {4, 4, SPECIES_ZIGZAGOON},
+ {4, 4, SPECIES_WURMPLE},
+#ifdef SAPPHIRE
+ {3, 3, SPECIES_LOTAD},
+ {4, 4, SPECIES_LOTAD},
+#else
+ {3, 3, SPECIES_SEEDOT},
+ {4, 4, SPECIES_SEEDOT},
+#endif
+ {3, 3, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+ {4, 4, SPECIES_POOCHYENA},
+ {4, 4, SPECIES_RALTS},
+ {4, 4, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route102_LandMonsInfo = {20, Route102_LandMons};
+
+const struct WildPokemon Route102_WaterMons [] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route102_WaterMonsInfo = {4, Route102_WaterMons};
+
+const struct WildPokemon Route102_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_CORPHISH},
+ {25, 30, SPECIES_CORPHISH},
+ {30, 35, SPECIES_CORPHISH},
+ {20, 25, SPECIES_CORPHISH},
+ {35, 40, SPECIES_CORPHISH},
+ {40, 45, SPECIES_CORPHISH},
+};
+const struct WildPokemonInfo Route102_FishingMonsInfo = {30, Route102_FishingMons};
+
+const struct WildPokemon Route103_LandMons [] =
+{
+ {2, 2, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {4, 4, SPECIES_ZIGZAGOON},
+ {2, 2, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+ {4, 4, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_WINGULL},
+ {3, 3, SPECIES_WINGULL},
+ {2, 2, SPECIES_WINGULL},
+ {4, 4, SPECIES_WINGULL},
+};
+const struct WildPokemonInfo Route103_LandMonsInfo = {20, Route103_LandMons};
+
+const struct WildPokemon Route103_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route103_WaterMonsInfo = {4, Route103_WaterMons};
+
+const struct WildPokemon Route103_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route103_FishingMonsInfo = {30, Route103_FishingMons};
+
+const struct WildPokemon Route104_LandMons [] =
+{
+ {4, 4, SPECIES_ZIGZAGOON},
+ {4, 4, SPECIES_WURMPLE},
+ {5, 5, SPECIES_ZIGZAGOON},
+ {5, 5, SPECIES_WURMPLE},
+ {4, 4, SPECIES_ZIGZAGOON},
+ {5, 5, SPECIES_ZIGZAGOON},
+ {4, 4, SPECIES_TAILLOW},
+ {5, 5, SPECIES_TAILLOW},
+ {4, 4, SPECIES_WINGULL},
+ {4, 4, SPECIES_WINGULL},
+ {3, 3, SPECIES_WINGULL},
+ {5, 5, SPECIES_WINGULL},
+};
+const struct WildPokemonInfo Route104_LandMonsInfo = {20, Route104_LandMons};
+
+const struct WildPokemon Route104_WaterMons [] =
+{
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route104_WaterMonsInfo = {4, Route104_WaterMons};
+
+const struct WildPokemon Route104_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_MAGIKARP},
+ {30, 35, SPECIES_MAGIKARP},
+ {20, 25, SPECIES_MAGIKARP},
+ {35, 40, SPECIES_MAGIKARP},
+ {40, 45, SPECIES_MAGIKARP},
+};
+const struct WildPokemonInfo Route104_FishingMonsInfo = {30, Route104_FishingMons};
+
+const struct WildPokemon Route105_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route105_WaterMonsInfo = {4, Route105_WaterMons};
+
+const struct WildPokemon Route105_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route105_FishingMonsInfo = {30, Route105_FishingMons};
+
+const struct WildPokemon Route106_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route106_WaterMonsInfo = {4, Route106_WaterMons};
+
+const struct WildPokemon Route106_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route106_FishingMonsInfo = {30, Route106_FishingMons};
+
+const struct WildPokemon Route107_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route107_WaterMonsInfo = {4, Route107_WaterMons};
+
+const struct WildPokemon Route107_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route107_FishingMonsInfo = {30, Route107_FishingMons};
+
+const struct WildPokemon Route108_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route108_WaterMonsInfo = {4, Route108_WaterMons};
+
+const struct WildPokemon Route108_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route108_FishingMonsInfo = {30, Route108_FishingMons};
+
+const struct WildPokemon Route109_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route109_WaterMonsInfo = {4, Route109_WaterMons};
+
+const struct WildPokemon Route109_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route109_FishingMonsInfo = {30, Route109_FishingMons};
+
+const struct WildPokemon Route110_LandMons [] =
+{
+ {12, 12, SPECIES_ZIGZAGOON},
+ {12, 12, SPECIES_ELECTRIKE},
+ {12, 12, SPECIES_GULPIN},
+ {13, 13, SPECIES_ELECTRIKE},
+#ifdef SAPPHIRE
+ {13, 13, SPECIES_PLUSLE},
+#else
+ {13, 13, SPECIES_MINUN},
+#endif
+ {13, 13, SPECIES_ODDISH},
+#ifdef SAPPHIRE
+ {13, 13, SPECIES_PLUSLE},
+#else
+ {13, 13, SPECIES_MINUN},
+#endif
+ {13, 13, SPECIES_GULPIN},
+ {12, 12, SPECIES_WINGULL},
+ {12, 12, SPECIES_WINGULL},
+#ifdef SAPPHIRE
+ {12, 12, SPECIES_MINUN},
+ {13, 13, SPECIES_MINUN},
+#else
+ {12, 12, SPECIES_PLUSLE},
+ {13, 13, SPECIES_PLUSLE},
+#endif
+};
+const struct WildPokemonInfo Route110_LandMonsInfo = {20, Route110_LandMons};
+
+const struct WildPokemon Route110_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route110_WaterMonsInfo = {4, Route110_WaterMons};
+
+const struct WildPokemon Route110_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route110_FishingMonsInfo = {30, Route110_FishingMons};
+
+const struct WildPokemon Route111_LandMons [] =
+{
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {21, 21, SPECIES_SANDSHREW},
+ {21, 21, SPECIES_TRAPINCH},
+ {19, 19, SPECIES_CACNEA},
+ {21, 21, SPECIES_CACNEA},
+ {19, 19, SPECIES_SANDSHREW},
+ {19, 19, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_BALTOY},
+ {20, 20, SPECIES_BALTOY},
+ {22, 22, SPECIES_BALTOY},
+ {22, 22, SPECIES_BALTOY},
+};
+const struct WildPokemonInfo Route111_LandMonsInfo = {10, Route111_LandMons};
+
+const struct WildPokemon Route111_WaterMons [] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route111_WaterMonsInfo = {4, Route111_WaterMons};
+
+const struct WildPokemon Route111_RockSmashMons [] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+};
+const struct WildPokemonInfo Route111_RockSmashMonsInfo = {20, Route111_RockSmashMons};
+
+const struct WildPokemon Route111_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+const struct WildPokemonInfo Route111_FishingMonsInfo = {30, Route111_FishingMons};
+
+const struct WildPokemon Route112_LandMons [] =
+{
+ {15, 15, SPECIES_NUMEL},
+ {15, 15, SPECIES_NUMEL},
+ {15, 15, SPECIES_MACHOP},
+ {14, 14, SPECIES_NUMEL},
+ {14, 14, SPECIES_NUMEL},
+ {14, 14, SPECIES_MACHOP},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_MACHOP},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_NUMEL},
+};
+const struct WildPokemonInfo Route112_LandMonsInfo = {20, Route112_LandMons};
+
+const struct WildPokemon Route113_LandMons [] =
+{
+ {15, 15, SPECIES_SPINDA},
+ {15, 15, SPECIES_SPINDA},
+ {15, 15, SPECIES_SANDSHREW},
+ {14, 14, SPECIES_SPINDA},
+ {14, 14, SPECIES_SPINDA},
+ {14, 14, SPECIES_SANDSHREW},
+ {16, 16, SPECIES_SPINDA},
+ {16, 16, SPECIES_SANDSHREW},
+ {16, 16, SPECIES_SPINDA},
+ {16, 16, SPECIES_SKARMORY},
+ {16, 16, SPECIES_SPINDA},
+ {16, 16, SPECIES_SKARMORY},
+};
+const struct WildPokemonInfo Route113_LandMonsInfo = {20, Route113_LandMons};
+
+const struct WildPokemon Route114_LandMons [] =
+{
+ {16, 16, SPECIES_SWABLU},
+#ifdef SAPPHIRE
+ {16, 16, SPECIES_LOTAD},
+#else
+ {16, 16, SPECIES_SEEDOT},
+#endif
+ {17, 17, SPECIES_SWABLU},
+ {15, 15, SPECIES_SWABLU},
+#ifdef SAPPHIRE
+ {15, 15, SPECIES_LOTAD},
+ {16, 16, SPECIES_SEVIPER},
+ {16, 16, SPECIES_LOMBRE},
+ {18, 18, SPECIES_LOMBRE},
+ {17, 17, SPECIES_SEVIPER},
+ {15, 15, SPECIES_SEVIPER},
+ {17, 17, SPECIES_SEVIPER},
+#else
+ {15, 15, SPECIES_SEEDOT},
+ {16, 16, SPECIES_ZANGOOSE},
+ {16, 16, SPECIES_NUZLEAF},
+ {18, 18, SPECIES_NUZLEAF},
+ {17, 17, SPECIES_ZANGOOSE},
+ {15, 15, SPECIES_ZANGOOSE},
+ {17, 17, SPECIES_ZANGOOSE},
+#endif
+ {15, 15, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route114_LandMonsInfo = {20, Route114_LandMons};
+
+const struct WildPokemon Route114_WaterMons [] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route114_WaterMonsInfo = {4, Route114_WaterMons};
+
+const struct WildPokemon Route114_RockSmashMons [] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+};
+const struct WildPokemonInfo Route114_RockSmashMonsInfo = {20, Route114_RockSmashMons};
+
+const struct WildPokemon Route114_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+const struct WildPokemonInfo Route114_FishingMonsInfo = {30, Route114_FishingMons};
+
+const struct WildPokemon Route115_LandMons [] =
+{
+ {23, 23, SPECIES_SWABLU},
+ {23, 23, SPECIES_TAILLOW},
+ {25, 25, SPECIES_SWABLU},
+ {24, 24, SPECIES_TAILLOW},
+ {25, 25, SPECIES_TAILLOW},
+ {25, 25, SPECIES_SWELLOW},
+ {24, 24, SPECIES_JIGGLYPUFF},
+ {25, 25, SPECIES_JIGGLYPUFF},
+ {24, 24, SPECIES_WINGULL},
+ {24, 24, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {25, 25, SPECIES_WINGULL},
+};
+const struct WildPokemonInfo Route115_LandMonsInfo = {20, Route115_LandMons};
+
+const struct WildPokemon Route115_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route115_WaterMonsInfo = {4, Route115_WaterMons};
+
+const struct WildPokemon Route115_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route115_FishingMonsInfo = {30, Route115_FishingMons};
+
+const struct WildPokemon Route116_LandMons [] =
+{
+ {6, 6, SPECIES_ZIGZAGOON},
+ {6, 6, SPECIES_WHISMUR},
+ {6, 6, SPECIES_NINCADA},
+ {7, 7, SPECIES_WHISMUR},
+ {7, 7, SPECIES_NINCADA},
+ {6, 6, SPECIES_TAILLOW},
+ {7, 7, SPECIES_TAILLOW},
+ {8, 8, SPECIES_TAILLOW},
+ {7, 7, SPECIES_ZIGZAGOON},
+ {8, 8, SPECIES_ZIGZAGOON},
+ {7, 7, SPECIES_SKITTY},
+ {8, 8, SPECIES_SKITTY},
+};
+const struct WildPokemonInfo Route116_LandMonsInfo = {20, Route116_LandMons};
+
+const struct WildPokemon Route117_LandMons [] =
+{
+ {13, 13, SPECIES_ZIGZAGOON},
+ {13, 13, SPECIES_ROSELIA},
+ {14, 14, SPECIES_ZIGZAGOON},
+ {14, 14, SPECIES_ROSELIA},
+ {13, 13, SPECIES_MARILL},
+ {13, 13, SPECIES_ODDISH},
+#ifdef SAPPHIRE
+ {13, 13, SPECIES_VOLBEAT},
+ {13, 13, SPECIES_VOLBEAT},
+ {14, 14, SPECIES_VOLBEAT},
+ {14, 14, SPECIES_VOLBEAT},
+ {13, 13, SPECIES_ILLUMISE},
+#else
+ {13, 13, SPECIES_ILLUMISE},
+ {13, 13, SPECIES_ILLUMISE},
+ {14, 14, SPECIES_ILLUMISE},
+ {14, 14, SPECIES_ILLUMISE},
+ {13, 13, SPECIES_VOLBEAT},
+#endif
+ {13, 13, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route117_LandMonsInfo = {20, Route117_LandMons};
+
+const struct WildPokemon Route117_WaterMons [] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route117_WaterMonsInfo = {4, Route117_WaterMons};
+
+const struct WildPokemon Route117_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_CORPHISH},
+ {25, 30, SPECIES_CORPHISH},
+ {30, 35, SPECIES_CORPHISH},
+ {20, 25, SPECIES_CORPHISH},
+ {35, 40, SPECIES_CORPHISH},
+ {40, 45, SPECIES_CORPHISH},
+};
+const struct WildPokemonInfo Route117_FishingMonsInfo = {30, Route117_FishingMons};
+
+const struct WildPokemon Route118_LandMons [] =
+{
+ {24, 24, SPECIES_ZIGZAGOON},
+ {24, 24, SPECIES_ELECTRIKE},
+ {26, 26, SPECIES_ZIGZAGOON},
+ {26, 26, SPECIES_ELECTRIKE},
+ {26, 26, SPECIES_LINOONE},
+ {26, 26, SPECIES_MANECTRIC},
+ {25, 25, SPECIES_WINGULL},
+ {25, 25, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {25, 25, SPECIES_KECLEON},
+};
+const struct WildPokemonInfo Route118_LandMonsInfo = {20, Route118_LandMons};
+
+const struct WildPokemon Route118_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route118_WaterMonsInfo = {4, Route118_WaterMons};
+
+const struct WildPokemon Route118_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_CARVANHA},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_CARVANHA},
+ {20, 25, SPECIES_CARVANHA},
+ {35, 40, SPECIES_CARVANHA},
+ {40, 45, SPECIES_CARVANHA},
+};
+const struct WildPokemonInfo Route118_FishingMonsInfo = {30, Route118_FishingMons};
+
+const struct WildPokemon Route119_LandMons [] =
+{
+ {25, 25, SPECIES_ZIGZAGOON},
+ {25, 25, SPECIES_LINOONE},
+ {27, 27, SPECIES_ZIGZAGOON},
+ {25, 25, SPECIES_ODDISH},
+ {27, 27, SPECIES_LINOONE},
+ {26, 26, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {24, 24, SPECIES_ODDISH},
+ {25, 25, SPECIES_TROPIUS},
+ {26, 26, SPECIES_TROPIUS},
+ {27, 27, SPECIES_TROPIUS},
+ {25, 25, SPECIES_KECLEON},
+};
+const struct WildPokemonInfo Route119_LandMonsInfo = {15, Route119_LandMons};
+
+const struct WildPokemon Route119_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route119_WaterMonsInfo = {4, Route119_WaterMons};
+
+const struct WildPokemon Route119_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_CARVANHA},
+ {25, 30, SPECIES_CARVANHA},
+ {30, 35, SPECIES_CARVANHA},
+ {20, 25, SPECIES_CARVANHA},
+ {35, 40, SPECIES_CARVANHA},
+ {40, 45, SPECIES_CARVANHA},
+};
+const struct WildPokemonInfo Route119_FishingMonsInfo = {30, Route119_FishingMons};
+
+const struct WildPokemon Route120_LandMons [] =
+{
+ {25, 25, SPECIES_ZIGZAGOON},
+ {25, 25, SPECIES_LINOONE},
+ {27, 27, SPECIES_LINOONE},
+ {25, 25, SPECIES_ODDISH},
+ {25, 25, SPECIES_MARILL},
+ {26, 26, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {27, 27, SPECIES_MARILL},
+ {25, 25, SPECIES_ABSOL},
+ {27, 27, SPECIES_ABSOL},
+ {25, 25, SPECIES_KECLEON},
+ {25, 25, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route120_LandMonsInfo = {20, Route120_LandMons};
+
+const struct WildPokemon Route120_WaterMons [] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_SURSKIT},
+};
+const struct WildPokemonInfo Route120_WaterMonsInfo = {4, Route120_WaterMons};
+
+const struct WildPokemon Route120_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+const struct WildPokemonInfo Route120_FishingMonsInfo = {30, Route120_FishingMons};
+
+const struct WildPokemon Route121_LandMons [] =
+{
+ {26, 26, SPECIES_ZIGZAGOON},
+#ifdef SAPPHIRE
+ {26, 26, SPECIES_SHUPPET},
+#else
+ {26, 26, SPECIES_DUSKULL},
+#endif
+ {26, 26, SPECIES_LINOONE},
+#ifdef SAPPHIRE
+ {28, 28, SPECIES_SHUPPET},
+#else
+ {28, 28, SPECIES_DUSKULL},
+#endif
+ {28, 28, SPECIES_LINOONE},
+ {26, 26, SPECIES_ODDISH},
+ {28, 28, SPECIES_ODDISH},
+ {28, 28, SPECIES_GLOOM},
+ {26, 26, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {28, 28, SPECIES_WINGULL},
+ {25, 25, SPECIES_KECLEON},
+};
+const struct WildPokemonInfo Route121_LandMonsInfo = {20, Route121_LandMons};
+
+const struct WildPokemon Route121_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route121_WaterMonsInfo = {4, Route121_WaterMons};
+
+const struct WildPokemon Route121_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route121_FishingMonsInfo = {30, Route121_FishingMons};
+
+const struct WildPokemon Route122_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route122_WaterMonsInfo = {4, Route122_WaterMons};
+
+const struct WildPokemon Route122_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route122_FishingMonsInfo = {30, Route122_FishingMons};
+
+const struct WildPokemon Route123_LandMons [] =
+{
+ {26, 26, SPECIES_ZIGZAGOON},
+#ifdef SAPPHIRE
+ {26, 26, SPECIES_SHUPPET},
+#else
+ {26, 26, SPECIES_DUSKULL},
+#endif
+ {26, 26, SPECIES_LINOONE},
+#ifdef SAPPHIRE
+ {28, 28, SPECIES_SHUPPET},
+#else
+ {28, 28, SPECIES_DUSKULL},
+#endif
+ {28, 28, SPECIES_LINOONE},
+ {26, 26, SPECIES_ODDISH},
+ {28, 28, SPECIES_ODDISH},
+ {28, 28, SPECIES_GLOOM},
+ {26, 26, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {28, 28, SPECIES_WINGULL},
+ {25, 25, SPECIES_KECLEON},
+};
+const struct WildPokemonInfo Route123_LandMonsInfo = {20, Route123_LandMons};
+
+const struct WildPokemon Route123_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route123_WaterMonsInfo = {4, Route123_WaterMons};
+
+const struct WildPokemon Route123_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route123_FishingMonsInfo = {30, Route123_FishingMons};
+
+const struct WildPokemon Route124_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route124_WaterMonsInfo = {4, Route124_WaterMons};
+
+const struct WildPokemon Route124_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route124_FishingMonsInfo = {30, Route124_FishingMons};
+
+const struct WildPokemon Route125_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route125_WaterMonsInfo = {4, Route125_WaterMons};
+
+const struct WildPokemon Route125_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route125_FishingMonsInfo = {30, Route125_FishingMons};
+
+const struct WildPokemon Route126_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route126_WaterMonsInfo = {4, Route126_WaterMons};
+
+const struct WildPokemon Route126_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route126_FishingMonsInfo = {30, Route126_FishingMons};
+
+const struct WildPokemon Route127_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route127_WaterMonsInfo = {4, Route127_WaterMons};
+
+const struct WildPokemon Route127_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route127_FishingMonsInfo = {30, Route127_FishingMons};
+
+const struct WildPokemon Route128_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route128_WaterMonsInfo = {4, Route128_WaterMons};
+
+const struct WildPokemon Route128_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_LUVDISC},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_LUVDISC},
+ {30, 35, SPECIES_WAILMER},
+ {30, 35, SPECIES_CORSOLA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route128_FishingMonsInfo = {30, Route128_FishingMons};
+
+const struct WildPokemon Route129_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+#ifdef SAPPHIRE
+ {25, 30, SPECIES_WAILORD},
+#else
+ {35, 40, SPECIES_WAILORD},
+#endif
+};
+const struct WildPokemonInfo Route129_WaterMonsInfo = {4, Route129_WaterMons};
+
+const struct WildPokemon Route129_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route129_FishingMonsInfo = {30, Route129_FishingMons};
+
+const struct WildPokemon Route130_LandMons [] =
+{
+ {30, 30, SPECIES_WYNAUT},
+ {35, 35, SPECIES_WYNAUT},
+ {25, 25, SPECIES_WYNAUT},
+ {40, 40, SPECIES_WYNAUT},
+ {20, 20, SPECIES_WYNAUT},
+ {45, 45, SPECIES_WYNAUT},
+ {15, 15, SPECIES_WYNAUT},
+ {50, 50, SPECIES_WYNAUT},
+ {10, 10, SPECIES_WYNAUT},
+ {5, 5, SPECIES_WYNAUT},
+ {10, 10, SPECIES_WYNAUT},
+ {5, 5, SPECIES_WYNAUT},
+};
+const struct WildPokemonInfo Route130_LandMonsInfo = {20, Route130_LandMons};
+
+const struct WildPokemon Route130_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route130_WaterMonsInfo = {4, Route130_WaterMons};
+
+const struct WildPokemon Route130_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route130_FishingMonsInfo = {30, Route130_FishingMons};
+
+const struct WildPokemon Route131_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route131_WaterMonsInfo = {4, Route131_WaterMons};
+
+const struct WildPokemon Route131_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route131_FishingMonsInfo = {30, Route131_FishingMons};
+
+const struct WildPokemon Route132_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route132_WaterMonsInfo = {4, Route132_WaterMons};
+
+const struct WildPokemon Route132_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_HORSEA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route132_FishingMonsInfo = {30, Route132_FishingMons};
+
+const struct WildPokemon Route133_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route133_WaterMonsInfo = {4, Route133_WaterMons};
+
+const struct WildPokemon Route133_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_HORSEA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route133_FishingMonsInfo = {30, Route133_FishingMons};
+
+const struct WildPokemon Route134_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo Route134_WaterMonsInfo = {4, Route134_WaterMons};
+
+const struct WildPokemon Route134_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_HORSEA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo Route134_FishingMonsInfo = {30, Route134_FishingMons};
+
+const struct WildPokemon SafariZone_Northwest_LandMons [] =
+{
+ {27, 27, SPECIES_RHYHORN},
+ {27, 27, SPECIES_ODDISH},
+ {29, 29, SPECIES_RHYHORN},
+ {29, 29, SPECIES_ODDISH},
+ {27, 27, SPECIES_DODUO},
+ {29, 29, SPECIES_GLOOM},
+ {31, 31, SPECIES_GLOOM},
+ {29, 29, SPECIES_DODUO},
+ {29, 29, SPECIES_DODRIO},
+ {27, 27, SPECIES_PINSIR},
+ {31, 31, SPECIES_DODRIO},
+ {29, 29, SPECIES_PINSIR},
+};
+const struct WildPokemonInfo SafariZone_Northwest_LandMonsInfo = {25, SafariZone_Northwest_LandMons};
+
+const struct WildPokemon SafariZone_Northwest_WaterMons [] =
+{
+ {20, 30, SPECIES_PSYDUCK},
+ {20, 30, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_GOLDUCK},
+ {25, 40, SPECIES_GOLDUCK},
+};
+const struct WildPokemonInfo SafariZone_Northwest_WaterMonsInfo = {9, SafariZone_Northwest_WaterMons};
+
+const struct WildPokemon SafariZone_Northwest_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 25, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_GOLDEEN},
+ {25, 30, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_SEAKING},
+ {35, 40, SPECIES_SEAKING},
+ {25, 30, SPECIES_SEAKING},
+};
+const struct WildPokemonInfo SafariZone_Northwest_FishingMonsInfo = {35, SafariZone_Northwest_FishingMons};
+
+const struct WildPokemon SafariZone_Northeast_LandMons [] =
+{
+ {27, 27, SPECIES_PHANPY},
+ {27, 27, SPECIES_ODDISH},
+ {29, 29, SPECIES_PHANPY},
+ {29, 29, SPECIES_ODDISH},
+ {27, 27, SPECIES_NATU},
+ {29, 29, SPECIES_GLOOM},
+ {31, 31, SPECIES_GLOOM},
+ {29, 29, SPECIES_NATU},
+ {29, 29, SPECIES_XATU},
+ {27, 27, SPECIES_HERACROSS},
+ {31, 31, SPECIES_XATU},
+ {29, 29, SPECIES_HERACROSS},
+};
+const struct WildPokemonInfo SafariZone_Northeast_LandMonsInfo = {25, SafariZone_Northeast_LandMons};
+
+const struct WildPokemon SafariZone_Northeast_RockSmashMons [] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {20, 25, SPECIES_GEODUDE},
+ {25, 30, SPECIES_GEODUDE},
+};
+const struct WildPokemonInfo SafariZone_Northeast_RockSmashMonsInfo = {25, SafariZone_Northeast_RockSmashMons};
+
+const struct WildPokemon SafariZone_Southwest_LandMons [] =
+{
+ {25, 25, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {25, 25, SPECIES_GIRAFARIG},
+ {27, 27, SPECIES_GIRAFARIG},
+ {25, 25, SPECIES_NATU},
+#ifdef SAPPHIRE
+ {27, 27, SPECIES_DODUO},
+#else
+ {25, 25, SPECIES_DODUO},
+#endif
+ {25, 25, SPECIES_GLOOM},
+ {27, 27, SPECIES_WOBBUFFET},
+ {25, 25, SPECIES_PIKACHU},
+ {27, 27, SPECIES_WOBBUFFET},
+ {27, 27, SPECIES_PIKACHU},
+ {29, 29, SPECIES_WOBBUFFET},
+};
+const struct WildPokemonInfo SafariZone_Southwest_LandMonsInfo = {25, SafariZone_Southwest_LandMons};
+
+const struct WildPokemon SafariZone_Southwest_WaterMons [] =
+{
+ {20, 30, SPECIES_PSYDUCK},
+ {20, 30, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+};
+const struct WildPokemonInfo SafariZone_Southwest_WaterMonsInfo = {9, SafariZone_Southwest_WaterMons};
+
+const struct WildPokemon SafariZone_Southwest_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 25, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_GOLDEEN},
+ {25, 30, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_SEAKING},
+ {35, 40, SPECIES_SEAKING},
+ {25, 30, SPECIES_SEAKING},
+};
+const struct WildPokemonInfo SafariZone_Southwest_FishingMonsInfo = {35, SafariZone_Southwest_FishingMons};
+
+const struct WildPokemon SafariZone_Southeast_LandMons [] =
+{
+ {25, 25, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {25, 25, SPECIES_GIRAFARIG},
+ {27, 27, SPECIES_GIRAFARIG},
+ {25, 25, SPECIES_NATU},
+ {25, 25, SPECIES_DODUO},
+ {25, 25, SPECIES_GLOOM},
+ {27, 27, SPECIES_WOBBUFFET},
+ {25, 25, SPECIES_PIKACHU},
+ {27, 27, SPECIES_WOBBUFFET},
+ {27, 27, SPECIES_PIKACHU},
+ {29, 29, SPECIES_WOBBUFFET},
+};
+const struct WildPokemonInfo SafariZone_Southeast_LandMonsInfo = {25, SafariZone_Southeast_LandMons};
+
+const struct WildPokemon DewfordTown_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo DewfordTown_WaterMonsInfo = {4, DewfordTown_WaterMons};
+
+const struct WildPokemon DewfordTown_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo DewfordTown_FishingMonsInfo = {10, DewfordTown_FishingMons};
+
+const struct WildPokemon PacifidlogTown_WaterMons [] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+const struct WildPokemonInfo PacifidlogTown_WaterMonsInfo = {4, PacifidlogTown_WaterMons};
+
+const struct WildPokemon PacifidlogTown_FishingMons [] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+const struct WildPokemonInfo PacifidlogTown_FishingMonsInfo = {10, PacifidlogTown_FishingMons};
+
+const struct WildPokemon Underwater1_WaterMons [] =
+{
+ {20, 30, SPECIES_CLAMPERL},
+ {20, 30, SPECIES_CHINCHOU},
+ {30, 35, SPECIES_CLAMPERL},
+ {30, 35, SPECIES_RELICANTH},
+ {30, 35, SPECIES_RELICANTH},
+};
+const struct WildPokemonInfo Underwater1_WaterMonsInfo = {4, Underwater1_WaterMons};
+
+const struct WildPokemon Underwater2_WaterMons [] =
+{
+ {20, 30, SPECIES_CLAMPERL},
+ {20, 30, SPECIES_CHINCHOU},
+ {30, 35, SPECIES_CLAMPERL},
+ {30, 35, SPECIES_RELICANTH},
+ {30, 35, SPECIES_RELICANTH},
+};
+const struct WildPokemonInfo Underwater2_WaterMonsInfo = {4, Underwater2_WaterMons};
+
+
extern u16 gRoute119WaterTileData[];
extern struct WildPokemonHeader gWildMonHeaders[];
extern struct Pokemon gEnemyParty[6];
@@ -234,7 +3119,7 @@ static u8 ChooseWildMonIndex_Fishing(u8 rod)
return wildMonIndex;
}
-static u8 ChooseWildMonLevel(struct WildPokemon *wildPokemon)
+static u8 ChooseWildMonLevel(const struct WildPokemon *wildPokemon)
{
u8 min;
u8 max;