summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2021-07-31 13:30:40 -0400
committerGitHub <noreply@github.com>2021-07-31 13:30:40 -0400
commit3e60a7840653e50845abf10bb02cd1b519dcd80f (patch)
treecb4a0d227a238ebdeb3b6cb9fdb92781bcc4f5e7 /src
parent602855ea99d8015ef5b7709f6fb1e9fd167239e2 (diff)
parentd391486247cc9f29d85787d6711f7cb993cf6585 (diff)
Merge branch 'master' into doc-frontierpass2
Diffstat (limited to 'src')
-rw-r--r--src/apprentice.c69
-rw-r--r--src/battle_ai_script_commands.c58
-rw-r--r--src/battle_ai_switch_items.c31
-rw-r--r--src/battle_anim.c16
-rw-r--r--src/battle_anim_bug.c46
-rw-r--r--src/battle_anim_dark.c106
-rw-r--r--src/battle_anim_dragon.c56
-rw-r--r--src/battle_anim_effects_1.c856
-rwxr-xr-xsrc/battle_anim_effects_2.c505
-rwxr-xr-xsrc/battle_anim_effects_3.c600
-rw-r--r--src/battle_anim_electric.c144
-rw-r--r--src/battle_anim_fight.c128
-rw-r--r--src/battle_anim_fire.c188
-rw-r--r--src/battle_anim_flying.c181
-rw-r--r--src/battle_anim_ghost.c130
-rw-r--r--src/battle_anim_ground.c66
-rw-r--r--src/battle_anim_ice.c214
-rw-r--r--src/battle_anim_mon_movement.c154
-rw-r--r--src/battle_anim_mons.c208
-rw-r--r--src/battle_anim_normal.c40
-rw-r--r--src/battle_anim_poison.c28
-rw-r--r--src/battle_anim_psychic.c74
-rw-r--r--src/battle_anim_rock.c98
-rw-r--r--src/battle_anim_sound_tasks.c8
-rw-r--r--src/battle_anim_status_effects.c118
-rwxr-xr-xsrc/battle_anim_throw.c123
-rw-r--r--src/battle_anim_utility_funcs.c4
-rw-r--r--src/battle_anim_water.c126
-rw-r--r--src/battle_bg.c10
-rw-r--r--src/battle_controller_link_opponent.c20
-rw-r--r--src/battle_controller_link_partner.c18
-rw-r--r--src/battle_controller_opponent.c20
-rw-r--r--src/battle_controller_player.c28
-rw-r--r--src/battle_controller_player_partner.c22
-rw-r--r--src/battle_controller_recorded_opponent.c16
-rw-r--r--src/battle_controller_recorded_player.c22
-rw-r--r--src/battle_controller_safari.c10
-rw-r--r--src/battle_controller_wally.c28
-rw-r--r--src/battle_controllers.c10
-rw-r--r--src/battle_dome.c207
-rw-r--r--src/battle_factory.c2
-rw-r--r--src/battle_factory_screen.c113
-rw-r--r--src/battle_gfx_sfx_util.c36
-rw-r--r--src/battle_interface.c147
-rw-r--r--src/battle_intro.c4
-rw-r--r--src/battle_main.c117
-rw-r--r--src/battle_message.c279
-rw-r--r--src/battle_pike.c2
-rw-r--r--src/battle_pyramid.c8
-rw-r--r--src/battle_pyramid_bag.c1002
-rw-r--r--src/battle_script_commands.c339
-rw-r--r--src/battle_tower.c1
-rw-r--r--src/battle_transition.c149
-rw-r--r--src/battle_transition_frontier.c10
-rw-r--r--src/battle_tv.c12
-rw-r--r--src/battle_util.c151
-rw-r--r--src/battle_util2.c7
-rw-r--r--src/berry_blender.c36
-rwxr-xr-xsrc/berry_crush.c96
-rw-r--r--src/berry_tag_screen.c4
-rw-r--r--src/bike.c29
-rw-r--r--src/cable_car.c82
-rw-r--r--src/cable_club.c16
-rw-r--r--src/confetti_util.c4
-rw-r--r--src/contest.c171
-rw-r--r--src/contest_painting.c255
-rw-r--r--src/contest_util.c380
-rw-r--r--src/credits.c1990
-rw-r--r--src/data.c313
-rw-r--r--src/data/contest_opponents.h16
-rw-r--r--src/data/credits.h787
-rwxr-xr-xsrc/data/field_effects/field_effect_objects.h12
-rw-r--r--src/data/graphics/intro_scene.h73
-rwxr-xr-xsrc/data/object_events/berry_tree_graphics_tables.h146
-rwxr-xr-xsrc/data/object_events/movement_action_func_tables.h16
-rwxr-xr-xsrc/data/object_events/object_event_anims.h816
-rwxr-xr-xsrc/data/object_events/object_event_graphics_info.h490
-rwxr-xr-xsrc/data/object_events/object_event_graphics_info_pointers.h32
-rwxr-xr-xsrc/data/object_events/object_event_pic_tables.h438
-rwxr-xr-xsrc/data/object_events/object_event_subsprites.h166
-rw-r--r--src/data/party_menu.h6
-rw-r--r--src/data/pokemon_graphics/unknown_table.h444
-rw-r--r--src/data/trade.h512
-rw-r--r--src/data/wallpapers.h393
-rw-r--r--src/daycare.c18
-rw-r--r--src/decompress.c2
-rw-r--r--src/decoration.c38
-rw-r--r--src/dewford_trend.c458
-rw-r--r--src/diploma.c36
-rw-r--r--src/dodrio_berry_picking.c36
-rw-r--r--src/easy_chat.c123
-rw-r--r--src/egg_hatch.c27
-rwxr-xr-xsrc/ereader_helpers.c510
-rwxr-xr-xsrc/ereader_screen.c10
-rw-r--r--src/event_object_lock.c8
-rw-r--r--src/event_object_movement.c2063
-rw-r--r--src/evolution_graphics.c30
-rw-r--r--src/evolution_scene.c14
-rwxr-xr-xsrc/faraway_island.c2
-rw-r--r--src/field_camera.c14
-rw-r--r--src/field_effect.c188
-rwxr-xr-xsrc/field_effect_helpers.c599
-rw-r--r--src/field_player_avatar.c58
-rw-r--r--src/field_screen_effect.c12
-rw-r--r--src/field_special_scene.c30
-rw-r--r--src/field_specials.c45
-rw-r--r--src/field_weather.c104
-rw-r--r--src/field_weather_effect.c372
-rw-r--r--src/fieldmap.c327
-rw-r--r--src/fldeff_cut.c6
-rw-r--r--src/fldeff_misc.c7
-rw-r--r--src/fldeff_sweetscent.c6
-rw-r--r--src/frontier_pass.c50
-rw-r--r--src/frontier_util.c26
-rw-r--r--src/graphics.c66
-rw-r--r--src/hall_of_fame.c71
-rw-r--r--src/image_processing_effects.c4
-rw-r--r--src/international_string_util.c2
-rw-r--r--src/intro.c2867
-rw-r--r--src/intro_credits_graphics.c793
-rw-r--r--src/item.c21
-rwxr-xr-xsrc/item_menu.c33
-rw-r--r--src/item_menu_icons.c26
-rwxr-xr-xsrc/item_use.c20
-rw-r--r--src/librfu_intr.c16
-rw-r--r--src/librfu_rfu.c14
-rw-r--r--src/librfu_sio32id.c29
-rw-r--r--src/lilycove_lady.c21
-rw-r--r--src/link.c7
-rw-r--r--src/link_rfu_3.c4
-rw-r--r--src/list_menu.c20
-rw-r--r--src/load_save.c2
-rw-r--r--src/m4a.c28
-rw-r--r--src/m4a_1.s8
-rw-r--r--src/mail.c2
-rw-r--r--src/main.c4
-rw-r--r--src/main_menu.c71
-rw-r--r--src/map_name_popup.c52
-rw-r--r--src/match_call.c1343
-rw-r--r--src/mauville_old_man.c48
-rw-r--r--src/menu.c35
-rw-r--r--src/menu_helpers.c70
-rw-r--r--src/menu_specialized.c16
-rw-r--r--src/mevent_801BAAC.c12
-rw-r--r--src/minigame_countdown.c24
-rw-r--r--src/mirage_tower.c392
-rw-r--r--src/mon_markings.c8
-rw-r--r--src/mystery_gift.c32
-rw-r--r--src/naming_screen.c34
-rw-r--r--src/new_game.c10
-rw-r--r--src/option_menu.c8
-rw-r--r--src/overworld.c407
-rwxr-xr-xsrc/party_menu.c82
-rw-r--r--src/player_pc.c43
-rw-r--r--src/pokeball.c208
-rw-r--r--src/pokeblock.c518
-rw-r--r--src/pokeblock_feed.c875
-rw-r--r--src/pokedex.c98
-rw-r--r--src/pokedex_cry_screen.c6
-rw-r--r--src/pokemon.c929
-rw-r--r--src/pokemon_animation.c4257
-rwxr-xr-xsrc/pokemon_jump.c34
-rw-r--r--src/pokemon_size_record.c2
-rw-r--r--src/pokemon_storage_system.c8535
-rw-r--r--src/pokemon_summary_screen.c111
-rw-r--r--src/pokenav.c2
-rw-r--r--src/pokenav_conditions_1.c4
-rw-r--r--src/pokenav_conditions_2.c8
-rw-r--r--src/pokenav_conditions_3.c4
-rw-r--r--src/pokenav_main_menu.c32
-rwxr-xr-xsrc/pokenav_match_call_2.c28
-rw-r--r--src/pokenav_match_call_ui.c8
-rw-r--r--src/pokenav_menu_handler_2.c32
-rwxr-xr-xsrc/pokenav_region_map.c6
-rw-r--r--src/pokenav_ribbons_1.c4
-rw-r--r--src/pokenav_ribbons_2.c20
-rw-r--r--src/post_battle_event_funcs.c1
-rw-r--r--src/rayquaza_scene.c342
-rw-r--r--src/record_mixing.c126
-rw-r--r--src/region_map.c64
-rw-r--r--src/reset_rtc_screen.c36
-rw-r--r--src/rotating_gate.c9
-rw-r--r--src/roulette.c108
-rw-r--r--src/safari_zone.c2
-rw-r--r--src/save.c2
-rw-r--r--src/save_failed_screen.c4
-rw-r--r--src/scrcmd.c26
-rw-r--r--src/script_menu.c2
-rwxr-xr-xsrc/script_pokemon_util.c1
-rw-r--r--src/secret_base.c1
-rwxr-xr-xsrc/shop.c19
-rw-r--r--src/siirtc.c29
-rw-r--r--src/slot_machine.c108
-rw-r--r--src/start_menu.c6
-rw-r--r--src/starter_choose.c34
-rw-r--r--src/strings.c37
-rw-r--r--src/title_screen.c52
-rw-r--r--src/trade.c1290
-rwxr-xr-xsrc/trainer_card.c12
-rw-r--r--src/trainer_hill.c13
-rw-r--r--src/trainer_pokemon_sprites.c2
-rw-r--r--src/trainer_see.c8
-rw-r--r--src/tv.c6264
-rw-r--r--src/union_room.c36
-rw-r--r--src/union_room_battle.c2
-rwxr-xr-xsrc/union_room_chat.c20
-rw-r--r--src/union_room_player_avatar.c33
-rw-r--r--src/use_pokeblock.c22
-rw-r--r--src/wallclock.c20
-rw-r--r--src/wild_encounter.c6
-rw-r--r--src/wireless_communication_status_screen.c12
211 files changed, 26461 insertions, 24861 deletions
diff --git a/src/apprentice.c b/src/apprentice.c
index 7053a8b63..00157dc1a 100644
--- a/src/apprentice.c
+++ b/src/apprentice.c
@@ -30,7 +30,7 @@
#include "constants/trainers.h"
#include "constants/moves.h"
-/* Summary of Apprentice, because (as of writing at least) its not very well documented online
+/* Summary of Apprentice, because (as of writing at least) it's not very well documented online
*
* ## Basic info
* In the Battle Tower lobby there is an NPC which asks to be taught by the player
@@ -322,17 +322,12 @@ static void SetRandomQuestionData(void)
FREE_AND_SET_NULL(gApprenticePartyMovesData);
}
-// No idea why a do-while loop is needed, but it will not match without it.
+#define APPRENTICE_SPECIES_ID(monId) \
+ ((monId < MULTI_PARTY_SIZE) ? (PLAYER_APPRENTICE.speciesIds[monId] >> (((PLAYER_APPRENTICE.party >> monId) & 1) << 2) & 0xF) : 0)
-#define APPRENTICE_SPECIES_ID(speciesArrId, monId) speciesArrId = (PLAYER_APPRENTICE.speciesIds[monId] >> \
- (((PLAYER_APPRENTICE.party >> monId) & 1) << 2)) & 0xF; \
- do {} while (0)
-
-// Why the need to have two macros do the exact thing differently?
-#define APPRENTICE_SPECIES_ID_2(speciesArrId, monId) { u8 a0 = ((PLAYER_APPRENTICE.party >> monId) & 1);\
- speciesArrId = PLAYER_APPRENTICE.speciesIds[monId]; \
- speciesArrId = ((speciesArrId) >> (a0 << 2)) & 0xF; \
- }
+#define APPRENTICE_SPECIES_ID_NO_COND(monId, count) \
+ monId = ((PLAYER_APPRENTICE.party >> count) & 1); \
+ monId = ((PLAYER_APPRENTICE.speciesIds[count]) >> (monId << 2)) & 0xF; \
// Get the second move choice for the "Which move" question
// Unlike the first move choice, this can be either a level up move or a TM/HM move
@@ -348,15 +343,7 @@ static u16 GetRandomAlternateMove(u8 monId)
bool32 shouldUseMove;
u8 level;
- if (monId < MULTI_PARTY_SIZE)
- {
- APPRENTICE_SPECIES_ID(id, monId);
- }
- else
- {
- id = 0;
- }
-
+ id = APPRENTICE_SPECIES_ID(monId);
species = gApprentices[PLAYER_APPRENTICE.id].species[id];
learnset = gLevelUpLearnsets[species];
j = 0;
@@ -551,7 +538,7 @@ static void SaveApprenticeParty(u8 numQuestions)
// Save party species
for (i = 0; i < MULTI_PARTY_SIZE; i++)
{
- APPRENTICE_SPECIES_ID(speciesTableId, i);
+ speciesTableId = APPRENTICE_SPECIES_ID(i);
apprenticeMons[i]->species = gApprentices[PLAYER_APPRENTICE.id].species[speciesTableId];
GetLatestLearnedMoves(apprenticeMons[i]->species, apprenticeMons[i]->moves);
}
@@ -605,7 +592,7 @@ static void CreateApprenticeMenu(u8 menu)
u16 species;
u32 speciesTableId;
- APPRENTICE_SPECIES_ID(speciesTableId, i);
+ speciesTableId = APPRENTICE_SPECIES_ID(i);
species = gApprentices[PLAYER_APPRENTICE.id].species[speciesTableId];
strings[i] = gSpeciesNames[species];
}
@@ -1016,7 +1003,7 @@ static void InitQuestionData(void)
{
// count re-used as monId
count = PLAYER_APPRENTICE.questions[CURRENT_QUESTION_NUM].monId;
- APPRENTICE_SPECIES_ID_2(id1, count);
+ APPRENTICE_SPECIES_ID_NO_COND(id1, count);
gApprenticeQuestionData->speciesId = gApprentices[PLAYER_APPRENTICE.id].species[id1];
gApprenticeQuestionData->moveId1 = GetDefaultMove(count, id1, PLAYER_APPRENTICE.questions[CURRENT_QUESTION_NUM].moveSlot);
gApprenticeQuestionData->moveId2 = PLAYER_APPRENTICE.questions[CURRENT_QUESTION_NUM].data;
@@ -1030,7 +1017,7 @@ static void InitQuestionData(void)
{
// count re-used as monId
count = PLAYER_APPRENTICE.questions[CURRENT_QUESTION_NUM].monId;
- APPRENTICE_SPECIES_ID_2(id2, count);
+ APPRENTICE_SPECIES_ID_NO_COND(id2, count);
gApprenticeQuestionData->speciesId = gApprentices[PLAYER_APPRENTICE.id].species[id2];
}
}
@@ -1097,14 +1084,7 @@ static void ApprenticeBufferString(void)
StringCopy(stringDst, gStringVar4);
break;
case APPRENTICE_BUFF_LEAD_MON_SPECIES:
- if (PLAYER_APPRENTICE.leadMonId < MULTI_PARTY_SIZE)
- {
- APPRENTICE_SPECIES_ID(speciesArrayId, PLAYER_APPRENTICE.leadMonId);
- }
- else
- {
- speciesArrayId = 0;
- }
+ speciesArrayId = APPRENTICE_SPECIES_ID(PLAYER_APPRENTICE.leadMonId);
StringCopy(stringDst, gSpeciesNames[gApprentices[PLAYER_APPRENTICE.id].species[speciesArrayId]]);
break;
}
@@ -1127,17 +1107,24 @@ static void TrySetApprenticeHeldItem(void)
if (PLAYER_APPRENTICE.questionsAnswered < NUM_WHICH_MON_QUESTIONS)
return;
+
+ count = 0;
+ for (j = 0; j < APPRENTICE_MAX_QUESTIONS; j++)
+ {
+ if (PLAYER_APPRENTICE.questions[j].questionId == QUESTION_ID_WIN_SPEECH)
+ break;
+ count++;
+ }
- for (count = 0, j = 0; j < APPRENTICE_MAX_QUESTIONS && PLAYER_APPRENTICE.questions[j].questionId != QUESTION_ID_WIN_SPEECH; count++, j++)
- ;
-
- // Make sure the item hasnt already been suggested in previous questions
- for (i = 0; i < count && i < CURRENT_QUESTION_NUM; i++)
+ // Make sure the item hasn't already been suggested in previous questions
+ for (i = 0; i < count; i++)
{
- do {} while(0);
- if (PLAYER_APPRENTICE.questions[i].questionId == QUESTION_ID_WHAT_ITEM
- && PLAYER_APPRENTICE.questions[i].suggestedChange
- && PLAYER_APPRENTICE.questions[i].data == gSpecialVar_0x8005)
+ if (i >= CURRENT_QUESTION_NUM)
+ break;
+ if (PLAYER_APPRENTICE.questions[i].questionId != QUESTION_ID_WHAT_ITEM ||
+ PLAYER_APPRENTICE.questions[i].suggestedChange == 0)
+ continue;
+ if (PLAYER_APPRENTICE.questions[i].data == gSpecialVar_0x8005)
{
PLAYER_APPRENTICE.questions[CURRENT_QUESTION_NUM].suggestedChange = FALSE;
PLAYER_APPRENTICE.questions[CURRENT_QUESTION_NUM].data = gSpecialVar_0x8005;
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index 9fdd4d0c3..bb615e497 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -263,7 +263,10 @@ static const BattleAICmdFunc sBattleAICmdTable[] =
Cmd_if_holds_item, // 0x62
};
-static const u16 sDiscouragedPowerfulMoveEffects[] =
+// For the purposes of determining the most powerful move in a moveset, these
+// moves are treated the same as having a power of 0 or 1
+#define IGNORED_MOVES_END 0xFFFF
+static const u16 sIgnoredPowerfulMoveEffects[] =
{
EFFECT_EXPLOSION,
EFFECT_DREAM_EATER,
@@ -277,7 +280,7 @@ static const u16 sDiscouragedPowerfulMoveEffects[] =
EFFECT_SUPERPOWER,
EFFECT_ERUPTION,
EFFECT_OVERHEAT,
- 0xFFFF
+ IGNORED_MOVES_END
};
// code
@@ -1177,14 +1180,14 @@ static void Cmd_get_how_powerful_move_is(void)
s32 i, checkedMove;
s32 moveDmgs[MAX_MON_MOVES];
- for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
+ for (i = 0; sIgnoredPowerfulMoveEffects[i] != IGNORED_MOVES_END; i++)
{
- if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == sDiscouragedPowerfulMoveEffects[i])
+ if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == sIgnoredPowerfulMoveEffects[i])
break;
}
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power > 1
- && sDiscouragedPowerfulMoveEffects[i] == 0xFFFF)
+ && sIgnoredPowerfulMoveEffects[i] == IGNORED_MOVES_END)
{
gDynamicBasePower = 0;
*(&gBattleStruct->dynamicMoveType) = 0;
@@ -1192,16 +1195,18 @@ static void Cmd_get_how_powerful_move_is(void)
gMoveResultFlags = 0;
gCritMultiplier = 1;
+ // Considered move has power and is not in sIgnoredPowerfulMoveEffects
+ // Check all other moves and calculate their power
for (checkedMove = 0; checkedMove < MAX_MON_MOVES; checkedMove++)
{
- for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
+ for (i = 0; sIgnoredPowerfulMoveEffects[i] != IGNORED_MOVES_END; i++)
{
- if (gBattleMoves[gBattleMons[sBattler_AI].moves[checkedMove]].effect == sDiscouragedPowerfulMoveEffects[i])
+ if (gBattleMoves[gBattleMons[sBattler_AI].moves[checkedMove]].effect == sIgnoredPowerfulMoveEffects[i])
break;
}
if (gBattleMons[sBattler_AI].moves[checkedMove] != MOVE_NONE
- && sDiscouragedPowerfulMoveEffects[i] == 0xFFFF
+ && sIgnoredPowerfulMoveEffects[i] == IGNORED_MOVES_END
&& gBattleMoves[gBattleMons[sBattler_AI].moves[checkedMove]].power > 1)
{
gCurrentMove = gBattleMons[sBattler_AI].moves[checkedMove];
@@ -1217,6 +1222,7 @@ static void Cmd_get_how_powerful_move_is(void)
}
}
+ // Is the considered move the most powerful move available?
for (checkedMove = 0; checkedMove < MAX_MON_MOVES; checkedMove++)
{
if (moveDmgs[checkedMove] > moveDmgs[AI_THINKING_STRUCT->movesetIndex])
@@ -1224,13 +1230,14 @@ static void Cmd_get_how_powerful_move_is(void)
}
if (checkedMove == MAX_MON_MOVES)
- AI_THINKING_STRUCT->funcResult = MOVE_MOST_POWERFUL; // Is the most powerful.
+ AI_THINKING_STRUCT->funcResult = MOVE_MOST_POWERFUL;
else
- AI_THINKING_STRUCT->funcResult = MOVE_NOT_MOST_POWERFUL; // Not the most powerful.
+ AI_THINKING_STRUCT->funcResult = MOVE_NOT_MOST_POWERFUL;
}
else
{
- AI_THINKING_STRUCT->funcResult = MOVE_POWER_DISCOURAGED; // Highly discouraged in terms of power.
+ // Move has a power of 0/1, or is in the group sIgnoredPowerfulMoveEffects
+ AI_THINKING_STRUCT->funcResult = MOVE_POWER_OTHER;
}
gAIScriptPtr++;
@@ -1761,7 +1768,11 @@ static void Cmd_if_cant_faint(void)
gBattleMoveDamage = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[AI_THINKING_STRUCT->movesetIndex] / 100;
- // This macro is missing the damage 0 = 1 assumption.
+#ifdef BUGFIX
+ // Moves always do at least 1 damage.
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+#endif
if (gBattleMons[gBattlerTarget].hp > gBattleMoveDamage)
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1);
@@ -1877,9 +1888,14 @@ static void Cmd_if_has_move_with_effect(void)
case AI_TARGET_PARTNER:
for (i = 0; i < MAX_MON_MOVES; i++)
{
- // UB: checks sBattler_AI instead of gBattlerTarget.
+ // BUG: checks sBattler_AI instead of gBattlerTarget.
+ #ifndef BUGFIX
if (gBattleMons[sBattler_AI].moves[i] != 0 && gBattleMoves[BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i]].effect == gAIScriptPtr[2])
break;
+ #else
+ if (gBattleMons[gBattlerTarget].moves[i] != 0 && gBattleMoves[BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i]].effect == gAIScriptPtr[2])
+ break;
+ #endif
}
if (i == MAX_MON_MOVES)
gAIScriptPtr += 7;
@@ -2014,18 +2030,24 @@ static void Cmd_if_holds_item(void)
{
u8 battlerId = BattleAI_GetWantedBattler(gAIScriptPtr[1]);
u16 item;
- u8 var1, var2;
+ u8 itemLo, itemHi;
if ((battlerId & BIT_SIDE) == (sBattler_AI & BIT_SIDE))
item = gBattleMons[battlerId].item;
else
item = BATTLE_HISTORY->itemEffects[battlerId];
- // UB: doesn't properly read an unaligned u16
- var2 = gAIScriptPtr[2];
- var1 = gAIScriptPtr[3];
+ itemHi = gAIScriptPtr[2];
+ itemLo = gAIScriptPtr[3];
- if ((var1 | var2) == item)
+#ifdef BUGFIX
+ // This bug doesn't affect the vanilla game because this script command
+ // is only used to check ITEM_PERSIM_BERRY, whose high byte happens to
+ // be 0.
+ if (((itemHi << 8) | itemLo) == item)
+#else
+ if ((itemLo | itemHi) == item)
+#endif
gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4);
else
gAIScriptPtr += 8;
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
index 263c1e7cc..04122b17d 100644
--- a/src/battle_ai_switch_items.c
+++ b/src/battle_ai_switch_items.c
@@ -789,7 +789,7 @@ static u8 GetAI_ItemType(u8 itemId, const u8 *itemEffect) // NOTE: should take u
else if (itemEffect[0] & (ITEM0_DIRE_HIT | ITEM0_X_ATTACK) || itemEffect[1] != 0 || itemEffect[2] != 0)
return AI_ITEM_X_STAT;
else if (itemEffect[3] & ITEM3_GUARD_SPEC)
- return AI_ITEM_GUARD_SPECS;
+ return AI_ITEM_GUARD_SPEC;
else
return AI_ITEM_NOT_RECOGNIZABLE;
}
@@ -863,32 +863,33 @@ static bool8 ShouldUseItem(void)
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) = 0;
if (itemEffects[3] & ITEM3_SLEEP && gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP)
{
- *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x20;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_HEAL_SLEEP);
shouldUse = TRUE;
}
- if (itemEffects[3] & ITEM3_POISON && (gBattleMons[gActiveBattler].status1 & STATUS1_POISON || gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_POISON))
+ if (itemEffects[3] & ITEM3_POISON && (gBattleMons[gActiveBattler].status1 & STATUS1_POISON
+ || gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_POISON))
{
- *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x10;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_HEAL_POISON);
shouldUse = TRUE;
}
if (itemEffects[3] & ITEM3_BURN && gBattleMons[gActiveBattler].status1 & STATUS1_BURN)
{
- *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x8;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_HEAL_BURN);
shouldUse = TRUE;
}
if (itemEffects[3] & ITEM3_FREEZE && gBattleMons[gActiveBattler].status1 & STATUS1_FREEZE)
{
- *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x4;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_HEAL_FREEZE);
shouldUse = TRUE;
}
if (itemEffects[3] & ITEM3_PARALYSIS && gBattleMons[gActiveBattler].status1 & STATUS1_PARALYSIS)
{
- *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x2;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_HEAL_PARALYSIS);
shouldUse = TRUE;
}
if (itemEffects[3] & ITEM3_CONFUSION && gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION)
{
- *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x1;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_HEAL_CONFUSION);
shouldUse = TRUE;
}
break;
@@ -897,20 +898,20 @@ static bool8 ShouldUseItem(void)
if (gDisableStructs[gActiveBattler].isFirstTurn == 0)
break;
if (itemEffects[0] & ITEM0_X_ATTACK)
- *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x1;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_X_ATTACK);
if (itemEffects[1] & ITEM1_X_DEFEND)
- *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x2;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_X_DEFEND);
if (itemEffects[1] & ITEM1_X_SPEED)
- *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x4;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_X_SPEED);
if (itemEffects[2] & ITEM2_X_SPATK)
- *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x8;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_X_SPATK);
if (itemEffects[2] & ITEM2_X_ACCURACY)
- *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x20;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_X_ACCURACY);
if (itemEffects[0] & ITEM0_DIRE_HIT)
- *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x80;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= (1 << AI_DIRE_HIT);
shouldUse = TRUE;
break;
- case AI_ITEM_GUARD_SPECS:
+ case AI_ITEM_GUARD_SPEC:
battlerSide = GetBattlerSide(gActiveBattler);
if (gDisableStructs[gActiveBattler].isFirstTurn != 0 && gSideTimers[battlerSide].mistTimer == 0)
shouldUse = TRUE;
diff --git a/src/battle_anim.c b/src/battle_anim.c
index a10b20b55..80d511f4c 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -2185,8 +2185,8 @@ static void sub_80A40F4(u8 taskId)
newTaskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
gTasks[newTaskId].data[t2_BATTLER_SPRITE_ID] = battlerSpriteId;
- gTasks[newTaskId].data[1] = gSprites[battlerSpriteId].pos1.x + gSprites[battlerSpriteId].pos2.x;
- gTasks[newTaskId].data[2] = gSprites[battlerSpriteId].pos1.y + gSprites[battlerSpriteId].pos2.y;
+ gTasks[newTaskId].data[1] = gSprites[battlerSpriteId].x + gSprites[battlerSpriteId].x2;
+ gTasks[newTaskId].data[2] = gSprites[battlerSpriteId].y + gSprites[battlerSpriteId].y2;
if (!selfData[t1_MON_IN_BG2])
{
@@ -2310,11 +2310,11 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
battlerSpriteId = gBattlerSpriteIds[battlerId];
- gBattle_BG1_X = -(gSprites[battlerSpriteId].pos1.x + gSprites[battlerSpriteId].pos2.x) + 0x20;
+ gBattle_BG1_X = -(gSprites[battlerSpriteId].x + gSprites[battlerSpriteId].x2) + 0x20;
if (IsContest() && IsSpeciesNotUnown(gContestResources->moveAnim->species))
gBattle_BG1_X--;
- gBattle_BG1_Y = -(gSprites[battlerSpriteId].pos1.y + gSprites[battlerSpriteId].pos2.y) + 0x20;
+ gBattle_BG1_Y = -(gSprites[battlerSpriteId].y + gSprites[battlerSpriteId].y2) + 0x20;
if (setSpriteInvisible)
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
@@ -2347,8 +2347,8 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
battlerSpriteId = gBattlerSpriteIds[battlerId];
- gBattle_BG2_X = -(gSprites[battlerSpriteId].pos1.x + gSprites[battlerSpriteId].pos2.x) + 0x20;
- gBattle_BG2_Y = -(gSprites[battlerSpriteId].pos1.y + gSprites[battlerSpriteId].pos2.y) + 0x20;
+ gBattle_BG2_X = -(gSprites[battlerSpriteId].x + gSprites[battlerSpriteId].x2) + 0x20;
+ gBattle_BG2_Y = -(gSprites[battlerSpriteId].y + gSprites[battlerSpriteId].y2) + 0x20;
if (setSpriteInvisible)
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
@@ -2436,8 +2436,8 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId)
spriteId = gTasks[taskId].data[0];
palIndex = gTasks[taskId].data[6];
GetBattleAnimBg1Data(&animBg);
- x = gTasks[taskId].data[1] - (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x);
- y = gTasks[taskId].data[2] - (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y);
+ x = gTasks[taskId].data[1] - (gSprites[spriteId].x + gSprites[spriteId].x2);
+ y = gTasks[taskId].data[2] - (gSprites[spriteId].y + gSprites[spriteId].y2);
if (gTasks[taskId].data[5] == 0)
{
diff --git a/src/battle_anim_bug.c b/src/battle_anim_bug.c
index 9d9952979..105cc611e 100644
--- a/src/battle_anim_bug.c
+++ b/src/battle_anim_bug.c
@@ -212,8 +212,8 @@ static void AnimMegahornHorn(struct Sprite *sprite)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
}
- sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
@@ -236,8 +236,8 @@ static void AnimLeechLifeNeedle(struct Sprite *sprite)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
}
- sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
@@ -261,8 +261,8 @@ static void AnimTranslateWebThread(struct Sprite *sprite)
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
if (!gBattleAnimArgs[4])
{
@@ -287,22 +287,22 @@ static void AnimTranslateWebThread_Step(struct Sprite *sprite)
return;
}
- sprite->pos2.x += Sin(sprite->data[6], sprite->data[5]);
+ sprite->x2 += Sin(sprite->data[6], sprite->data[5]);
sprite->data[6] = (sprite->data[6] + 13) & 0xFF;
}
// Second stage of String Shot
static void AnimStringWrap(struct Sprite *sprite)
{
- SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->x, &sprite->y);
if (GetBattlerSide(gBattleAnimAttacker))
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
else
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
if (!GetBattlerSide(gBattleAnimTarget))
- sprite->pos1.y += 8;
+ sprite->y += 8;
sprite->callback = AnimStringWrap_Step;
}
@@ -396,7 +396,7 @@ static void AnimTranslateStinger(struct Sprite *sprite)
lVarX = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
- rot = ArcTan2Neg(lVarX - sprite->pos1.x, lVarY - sprite->pos1.y);
+ rot = ArcTan2Neg(lVarX - sprite->x, lVarY - sprite->y);
rot += 0xC000;
TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rot);
@@ -444,10 +444,10 @@ static void AnimMissileArc_Step(struct Sprite *sprite)
{
s16 tempData[8];
u16 *data = sprite->data;
- u16 x1 = sprite->pos1.x;
- s16 x2 = sprite->pos2.x;
- u16 y1 = sprite->pos1.y;
- s16 y2 = sprite->pos2.y;
+ u16 x1 = sprite->x;
+ s16 x2 = sprite->x2;
+ u16 y1 = sprite->y;
+ s16 y2 = sprite->y2;
int i;
for (i = 0; i < 8; i++)
@@ -458,8 +458,8 @@ static void AnimMissileArc_Step(struct Sprite *sprite)
if (!TranslateAnimHorizontalArc(sprite))
{
- u16 rotation = ArcTan2Neg(sprite->pos1.x + sprite->pos2.x - x2,
- sprite->pos1.y + sprite->pos2.y - y2);
+ u16 rotation = ArcTan2Neg(sprite->x + sprite->x2 - x2,
+ sprite->y + sprite->y2 - y2);
rotation += 0xC000;
TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rotation);
@@ -473,13 +473,13 @@ static void AnimTailGlowOrb(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 18;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 18;
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18;
}
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
diff --git a/src/battle_anim_dark.c b/src/battle_anim_dark.c
index 19e8c9523..fdde34769 100644
--- a/src/battle_anim_dark.c
+++ b/src/battle_anim_dark.c
@@ -9,24 +9,24 @@
#include "util.h"
#include "constants/rgb.h"
-static void sub_81138D4(struct Sprite *);
+static void AnimUnusedBagSteal(struct Sprite *);
+static void AnimUnusedBagSteal_Step(struct Sprite *);
static void AnimBite(struct Sprite *);
static void AnimTearDrop(struct Sprite *);
static void AnimClawSlash(struct Sprite *);
static void AnimTask_AttackerFadeToInvisible_Step(u8);
static void AnimTask_AttackerFadeFromInvisible_Step(u8);
-static void sub_8113950(struct Sprite *);
static void AnimBite_Step1(struct Sprite *);
static void AnimBite_Step2(struct Sprite *);
static void AnimTearDrop_Step(struct Sprite *);
static void AnimTask_MoveAttackerMementoShadow_Step(u8);
static void AnimTask_MoveTargetMementoShadow_Step(u8);
-static void sub_8114244(struct Task *);
-static void sub_8114374(u8);
+static void DoMementoShadowEffect(struct Task *);
+static void SetAllBattlersSpritePriority(u8);
static void AnimTask_MetallicShine_Step(u8);
// Unused
-const struct SpriteTemplate gUnknown_08596FC8 =
+static const struct SpriteTemplate sUnusedBagStealSpriteTemplate =
{
.tileTag = ANIM_TAG_TIED_BAG,
.paletteTag = ANIM_TAG_TIED_BAG,
@@ -34,7 +34,7 @@ const struct SpriteTemplate gUnknown_08596FC8 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81138D4,
+ .callback = AnimUnusedBagSteal,
};
static const union AffineAnimCmd sAffineAnim_Bite_0[] =
@@ -268,7 +268,7 @@ void AnimTask_InitAttackerFadeFromInvisible(u8 taskId)
DestroyAnimVisualTask(taskId);
}
-static void sub_81138D4(struct Sprite *sprite)
+static void AnimUnusedBagSteal(struct Sprite *sprite)
{
sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
@@ -279,26 +279,26 @@ static void sub_81138D4(struct Sprite *sprite)
sprite->data[3] = -sprite->data[1];
sprite->data[4] = -sprite->data[2];
sprite->data[6] = 0xFFD8;
- sprite->callback = sub_8113950;
+ sprite->callback = AnimUnusedBagSteal_Step;
sprite->callback(sprite);
}
-static void sub_8113950(struct Sprite *sprite)
+static void AnimUnusedBagSteal_Step(struct Sprite *sprite)
{
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite->pos2.x = sprite->data[3] >> 8;
- sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->x2 = sprite->data[3] >> 8;
+ sprite->y2 = sprite->data[4] >> 8;
if (sprite->data[7] == 0)
{
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite->pos2.x = sprite->data[3] >> 8;
- sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->x2 = sprite->data[3] >> 8;
+ sprite->y2 = sprite->data[4] >> 8;
sprite->data[0]--;
}
- sprite->pos2.y += Sin(sprite->data[5], sprite->data[6]);
+ sprite->y2 += Sin(sprite->data[5], sprite->data[6]);
sprite->data[5] = (sprite->data[5] + 3) & 0xFF;
if (sprite->data[5] > 0x7F)
{
@@ -314,8 +314,8 @@ static void sub_8113950(struct Sprite *sprite)
// Move sprite inward for Bite/Crunch and Clamp
static void AnimBite(struct Sprite *sprite)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]);
sprite->data[0] = gBattleAnimArgs[3];
sprite->data[1] = gBattleAnimArgs[4];
@@ -327,8 +327,8 @@ static void AnimBite_Step1(struct Sprite *sprite)
{
sprite->data[4] += sprite->data[0];
sprite->data[5] += sprite->data[1];
- sprite->pos2.x = sprite->data[4] >> 8;
- sprite->pos2.y = sprite->data[5] >> 8;
+ sprite->x2 = sprite->data[4] >> 8;
+ sprite->y2 = sprite->data[5] >> 8;
if (++sprite->data[3] == sprite->data[2])
sprite->callback = AnimBite_Step2;
}
@@ -337,8 +337,8 @@ static void AnimBite_Step2(struct Sprite *sprite)
{
sprite->data[4] -= sprite->data[0];
sprite->data[5] -= sprite->data[1];
- sprite->pos2.x = sprite->data[4] >> 8;
- sprite->pos2.y = sprite->data[5] >> 8;
+ sprite->x2 = sprite->data[4] >> 8;
+ sprite->y2 = sprite->data[5] >> 8;
if (--sprite->data[3] == 0)
DestroySpriteAndMatrix(sprite);
}
@@ -360,30 +360,30 @@ static void AnimTearDrop(struct Sprite *sprite)
switch (gBattleAnimArgs[1])
{
case 0:
- sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) - 8;
- sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 8;
+ sprite->x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) - 8;
+ sprite->y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 8;
break;
case 1:
- sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) - 14;
- sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 16;
+ sprite->x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) - 14;
+ sprite->y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 16;
break;
case 2:
- sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) + 8;
- sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 8;
+ sprite->x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) + 8;
+ sprite->y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 8;
StartSpriteAffineAnim(sprite, 1);
xOffset = -20;
break;
case 3:
- sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) + 14;
- sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 16;
+ sprite->x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) + 14;
+ sprite->y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP) + 16;
StartSpriteAffineAnim(sprite, 1);
xOffset = -20;
break;
}
sprite->data[0] = 32;
- sprite->data[2] = sprite->pos1.x + xOffset;
- sprite->data[4] = sprite->pos1.y + 12;
+ sprite->data[2] = sprite->x + xOffset;
+ sprite->data[4] = sprite->y + 12;
sprite->data[5] = -12;
InitAnimArcTranslation(sprite);
@@ -430,7 +430,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId)
scanlineParams.dmaDest = &REG_BG1VOFS;
var0 = WINOUT_WIN01_BG1;
if (!IsContest())
- gBattle_BG2_X += 240;
+ gBattle_BG2_X += DISPLAY_WIDTH;
}
else
{
@@ -440,7 +440,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId)
scanlineParams.dmaDest = &REG_BG2VOFS;
var0 = WINOUT_WIN01_BG2;
if (!IsContest())
- gBattle_BG1_X += 240;
+ gBattle_BG1_X += DISPLAY_WIDTH;
}
scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
@@ -451,7 +451,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId)
task->data[0] = 0;
task->data[1] = 0;
task->data[2] = 0;
- sub_8114374(3);
+ SetAllBattlersSpritePriority(3);
for (i = 0; i < 112; i++)
{
gScanlineEffectRegBuffers[0][i] = task->data[10];
@@ -462,7 +462,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId)
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | (var0 ^ (WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR)));
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
gBattle_WIN0H = (task->data[14] << 8) | task->data[15];
- gBattle_WIN0V = 160;
+ gBattle_WIN0V = DISPLAY_HEIGHT;
task->func = AnimTask_MoveAttackerMementoShadow_Step;
}
@@ -496,14 +496,14 @@ static void AnimTask_MoveAttackerMementoShadow_Step(u8 taskId)
break;
case 1:
task->data[4] -= 8;
- sub_8114244(task);
+ DoMementoShadowEffect(task);
if (task->data[4] < task->data[8])
task->data[0]++;
break;
case 2:
task->data[4] -= 8;
- sub_8114244(task);
+ DoMementoShadowEffect(task);
task->data[14] += 4;
task->data[15] -= 4;
@@ -550,12 +550,12 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId)
if (task->data[3] == 1)
{
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1);
- gBattle_BG2_X += 240;
+ gBattle_BG2_X += DISPLAY_WIDTH;
}
else
{
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG2);
- gBattle_BG1_X += 240;
+ gBattle_BG1_X += DISPLAY_WIDTH;
}
task->data[0]++;
@@ -574,7 +574,7 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId)
FillPalette(0, 9 * 16, 32);
}
- sub_8114374(3);
+ SetAllBattlersSpritePriority(3);
task->data[0]++;
break;
case 2:
@@ -622,7 +622,7 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId)
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
gBattle_WIN0H = (task->data[14] << 8) | task->data[15];
- gBattle_WIN0V = 160;
+ gBattle_WIN0V = DISPLAY_HEIGHT;
task->data[0] = 0;
task->data[1] = 0;
@@ -644,7 +644,7 @@ static void AnimTask_MoveTargetMementoShadow_Step(u8 taskId)
if (task->data[5] >= task->data[7])
task->data[5] = task->data[7];
- sub_8114244(task);
+ DoMementoShadowEffect(task);
if (task->data[5] == task->data[7])
task->data[0]++;
break;
@@ -664,7 +664,7 @@ static void AnimTask_MoveTargetMementoShadow_Step(u8 taskId)
if (task->data[4] >= task->data[6])
task->data[4] = task->data[6];
- sub_8114244(task);
+ DoMementoShadowEffect(task);
if (task->data[4] == task->data[6] && task->data[1])
{
task->data[1] = 0;
@@ -706,7 +706,7 @@ static void AnimTask_MoveTargetMementoShadow_Step(u8 taskId)
}
}
-static void sub_8114244(struct Task *task)
+static void DoMementoShadowEffect(struct Task *task)
{
int var0, var1;
s16 var2;
@@ -757,7 +757,7 @@ static void sub_8114244(struct Task *task)
}
}
-static void sub_8114374(u8 priority)
+static void SetAllBattlersSpritePriority(u8 priority)
{
u16 i;
@@ -798,8 +798,8 @@ void sub_8114470(u8 taskId)
// Animates a deep slash from a claw. Used by Metal Claw, Dragon Claw, and Crush Claw
static void AnimClawSlash(struct Sprite *sprite)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
sprite->callback = RunStoredCallbackWhenAnimEnds;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
@@ -865,12 +865,12 @@ void AnimTask_MetallicShine(u8 taskId)
AnimLoadCompressedBgGfx(animBg.bgId, gMetalShineGfx, animBg.tilesOffset);
LoadCompressedPalette(gMetalShinePalette, animBg.paletteId * 16, 32);
- gBattle_BG1_X = -gSprites[spriteId].pos1.x + 96;
- gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32;
+ gBattle_BG1_X = -gSprites[spriteId].x + 96;
+ gBattle_BG1_Y = -gSprites[spriteId].y + 32;
paletteNum = 16 + gSprites[spriteId].oam.paletteNum;
if (gBattleAnimArgs[1] == 0)
- SetGreyscaleOrOriginalPalette(paletteNum, FALSE);
+ SetGrayscaleOrOriginalPalette(paletteNum, FALSE);
else
BlendPalette(paletteNum * 16, 16, 11, gBattleAnimArgs[2]);
@@ -900,7 +900,7 @@ static void AnimTask_MetallicShine_Step(u8 taskId)
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
paletteNum = 16 + gSprites[spriteId].oam.paletteNum;
if (gTasks[taskId].data[1] == 0)
- SetGreyscaleOrOriginalPalette(paletteNum, TRUE);
+ SetGrayscaleOrOriginalPalette(paletteNum, TRUE);
DestroySprite(&gSprites[gTasks[taskId].data[0]]);
GetBattleAnimBg1Data(&animBg);
@@ -925,10 +925,10 @@ static void AnimTask_MetallicShine_Step(u8 taskId)
}
}
-// Changes battler's palette to either greyscale or original.
+// Changes battler's palette to either grayscale or original.
// arg0: which battler
// arg1: FALSE grayscale, TRUE original
-void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId)
+void AnimTask_SetGrayscaleOrOriginalPal(u8 taskId)
{
u8 spriteId;
u8 battler;
@@ -974,7 +974,7 @@ void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId)
}
if (spriteId != SPRITE_NONE)
- SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, gBattleAnimArgs[1]);
+ SetGrayscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, gBattleAnimArgs[1]);
DestroyAnimVisualTask(taskId);
}
diff --git a/src/battle_anim_dragon.c b/src/battle_anim_dragon.c
index caafdf3b8..1bc0f569b 100644
--- a/src/battle_anim_dragon.c
+++ b/src/battle_anim_dragon.c
@@ -189,20 +189,20 @@ const struct SpriteTemplate gOverheatFlameSpriteTemplate =
static void AnimOutrageFlame(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
gBattleAnimArgs[4] = -gBattleAnimArgs[4];
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
}
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[3] = gBattleAnimArgs[4];
@@ -219,15 +219,15 @@ static void StartDragonFireTranslation(struct Sprite *sprite)
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
- sprite->pos1.x -= gBattleAnimArgs[1];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x -= gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[2] -= gBattleAnimArgs[2];
sprite->data[4] += gBattleAnimArgs[3];
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[2] += gBattleAnimArgs[2];
sprite->data[4] += gBattleAnimArgs[3];
StartSpriteAnim(sprite, 1);
@@ -242,17 +242,17 @@ static void AnimDragonRageFirePlume(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
}
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[1]);
- sprite->pos1.y += gBattleAnimArgs[2];
+ sprite->y += gBattleAnimArgs[2];
sprite->callback = RunStoredCallbackWhenAnimEnds;
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
}
@@ -270,8 +270,8 @@ static void AnimDragonDanceOrb(struct Sprite *sprite)
{
u16 r5;
u16 r0;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->data[4] = 0;
sprite->data[5] = 1;
sprite->data[6] = gBattleAnimArgs[0];
@@ -281,8 +281,8 @@ static void AnimDragonDanceOrb(struct Sprite *sprite)
sprite->data[7] = r5 / 2;
else
sprite->data[7] = r0 / 2;
- sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
- sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
+ sprite->x2 = Cos(sprite->data[6], sprite->data[7]);
+ sprite->y2 = Sin(sprite->data[6], sprite->data[7]);
sprite->callback = AnimDragonDanceOrb_Step;
}
@@ -292,8 +292,8 @@ static void AnimDragonDanceOrb_Step(struct Sprite *sprite)
{
case 0:
sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF;
- sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
- sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
+ sprite->x2 = Cos(sprite->data[6], sprite->data[7]);
+ sprite->y2 = Sin(sprite->data[6], sprite->data[7]);
if (++sprite->data[4] > 5)
{
sprite->data[4] = 0;
@@ -310,8 +310,8 @@ static void AnimDragonDanceOrb_Step(struct Sprite *sprite)
sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF;
if (sprite->data[7] <= 0x95 && (sprite->data[7] += 8) > 0x95)
sprite->data[7] = 0x96;
- sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
- sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
+ sprite->x2 = Cos(sprite->data[6], sprite->data[7]);
+ sprite->y2 = Sin(sprite->data[6], sprite->data[7]);
if (++sprite->data[4] > 5)
{
sprite->data[4] = 0;
@@ -417,12 +417,12 @@ static void AnimOverheatFlame(struct Sprite *sprite)
{
int i;
int yAmplitude = (gBattleAnimArgs[2] * 3) / 5;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[4];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[4];
sprite->data[1] = Cos(gBattleAnimArgs[1], gBattleAnimArgs[2]);
sprite->data[2] = Sin(gBattleAnimArgs[1], yAmplitude);
- sprite->pos1.x += sprite->data[1] * gBattleAnimArgs[0];
- sprite->pos1.y += sprite->data[2] * gBattleAnimArgs[0];
+ sprite->x += sprite->data[1] * gBattleAnimArgs[0];
+ sprite->y += sprite->data[2] * gBattleAnimArgs[0];
sprite->data[3] = gBattleAnimArgs[3];
sprite->callback = AnimOverheatFlame_Step;
for (i = 0; i < 7; i++)
@@ -433,8 +433,8 @@ static void AnimOverheatFlame_Step(struct Sprite *sprite)
{
sprite->data[4] += sprite->data[1];
sprite->data[5] += sprite->data[2];
- sprite->pos2.x = sprite->data[4] / 10;
- sprite->pos2.y = sprite->data[5] / 10;
+ sprite->x2 = sprite->data[4] / 10;
+ sprite->y2 = sprite->data[5] / 10;
if (++sprite->data[0] > sprite->data[3])
DestroyAnimSprite(sprite);
}
diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c
index 03dc75daf..ebdb471bf 100644
--- a/src/battle_anim_effects_1.c
+++ b/src/battle_anim_effects_1.c
@@ -16,7 +16,12 @@
#include "constants/rgb.h"
#include "constants/songs.h"
-EWRAM_DATA s16 gUnknown_0203A0F8[4] = {0};
+struct {
+ s16 startX;
+ s16 startY;
+ s16 targetX;
+ s16 targetY;
+} static EWRAM_DATA sFrenzyPlantRootData = {0}; // Debug? Written to but never read.
static void AnimMovePowderParticle(struct Sprite *);
static void AnimMovePowderParticle_Step(struct Sprite *);
@@ -65,14 +70,14 @@ static void AnimFlyingParticle(struct Sprite *);
static void AnimFlyingParticle_Step(struct Sprite *);
static void AnimNeedleArmSpike(struct Sprite *);
static void AnimNeedleArmSpike_Step(struct Sprite *);
-static void sub_81009F8(struct Sprite *);
+static void AnimSlidingHit(struct Sprite *);
static void AnimWhipHit(struct Sprite *);
-static void sub_8100A94(struct Sprite *);
+static void AnimFlickeringPunch(struct Sprite *);
static void AnimCuttingSlice(struct Sprite *);
static void AnimAirCutterSlice(struct Sprite *);
static void AnimSlice_Step(struct Sprite *);
-static void sub_8100E1C(struct Sprite *);
-static void sub_8100E80(struct Sprite *);
+static void AnimCirclingMusicNote(struct Sprite *);
+static void AnimCirclingMusicNote_Step(struct Sprite *);
static void AnimProtect(struct Sprite *);
static void AnimProtect_Step(struct Sprite *);
static void AnimMilkBottle(struct Sprite *);
@@ -80,8 +85,8 @@ static void AnimMilkBottle_Step1(struct Sprite *);
static void AnimMilkBottle_Step2(struct Sprite *, int, int);
static void AnimGrantingStars(struct Sprite *);
static void AnimSparkingStars(struct Sprite *);
-static void sub_8101440(struct Sprite *);
-static void sub_81014A0(struct Sprite *);
+static void AnimBubbleBurst(struct Sprite *);
+static void AnimBubbleBurst_Step(struct Sprite *);
static void AnimSleepLetterZ(struct Sprite *);
static void AnimSleepLetterZ_Step(struct Sprite *);
static void AnimLockOnTarget(struct Sprite *);
@@ -99,8 +104,8 @@ static void AnimBowMon_Step2(struct Sprite *);
static void AnimBowMon_Step3(struct Sprite *);
static void AnimBowMon_Step4(struct Sprite *);
static void AnimBowMon_Step3_Callback(struct Sprite *);
-static void sub_8101B90(struct Sprite *);
-static void sub_8101BA0(struct Sprite *);
+static void AnimTipMon(struct Sprite *);
+static void AnimTipMon_Step(struct Sprite *);
static void AnimSlashSlice(struct Sprite *);
static void AnimFalseSwipeSlice(struct Sprite *);
static void AnimFalseSwipeSlice_Step1(struct Sprite *);
@@ -571,7 +576,7 @@ const struct SpriteTemplate gSwiftStarSpriteTemplate =
.callback = AnimTranslateLinearSingleSineWave,
};
-const union AnimCmd gConstrictBindingAnimCmds1[] =
+static const union AnimCmd sAnim_ConstrictBinding[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(32, 4),
@@ -580,7 +585,7 @@ const union AnimCmd gConstrictBindingAnimCmds1[] =
ANIMCMD_END,
};
-const union AnimCmd gConstrictBindingAnimCmds2[] =
+static const union AnimCmd sAnim_ConstrictBinding_Flipped[] =
{
ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
ANIMCMD_FRAME(32, 4, .hFlip = TRUE),
@@ -589,29 +594,29 @@ const union AnimCmd gConstrictBindingAnimCmds2[] =
ANIMCMD_END,
};
-const union AnimCmd *const gConstrictBindingAnimTable[] =
+static const union AnimCmd *const sAnims_ConstrictBinding[] =
{
- gConstrictBindingAnimCmds1,
- gConstrictBindingAnimCmds2,
+ sAnim_ConstrictBinding,
+ sAnim_ConstrictBinding_Flipped,
};
-const union AffineAnimCmd gConstrictBindingAffineAnimCmds1[] = {
+static const union AffineAnimCmd sAffineAnim_ConstrictBinding[] = {
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(-11, 0, 0, 6),
AFFINEANIMCMD_FRAME(11, 0, 0, 6),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gConstrictBindingAffineAnimCmds2[] = {
+static const union AffineAnimCmd sAffineAnim_ConstrictBinding_Flipped[] = {
AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(11, 0, 0, 6),
AFFINEANIMCMD_FRAME(-11, 0, 0, 6),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd *const gConstrictBindingAffineAnimTable[] = {
- gConstrictBindingAffineAnimCmds1,
- gConstrictBindingAffineAnimCmds2,
+static const union AffineAnimCmd *const sAffineAnims_ConstrictBinding[] = {
+ sAffineAnim_ConstrictBinding,
+ sAffineAnim_ConstrictBinding_Flipped,
};
const struct SpriteTemplate gConstrictBindingSpriteTemplate =
@@ -619,9 +624,9 @@ const struct SpriteTemplate gConstrictBindingSpriteTemplate =
.tileTag = ANIM_TAG_TENDRILS,
.paletteTag = ANIM_TAG_TENDRILS,
.oam = &gOamData_AffineNormal_ObjNormal_64x32,
- .anims = gConstrictBindingAnimTable,
+ .anims = sAnims_ConstrictBinding,
.images = NULL,
- .affineAnims = gConstrictBindingAffineAnimTable,
+ .affineAnims = sAffineAnims_ConstrictBinding,
.callback = AnimConstrictBinding,
};
@@ -1060,7 +1065,7 @@ const struct SpriteTemplate gNeedleArmSpikeSpriteTemplate =
.callback = AnimNeedleArmSpike,
};
-const union AnimCmd gWhipAnimCmds1[] =
+static const union AnimCmd sAnim_Whip[] =
{
ANIMCMD_FRAME(64, 3),
ANIMCMD_FRAME(80, 3),
@@ -1069,7 +1074,7 @@ const union AnimCmd gWhipAnimCmds1[] =
ANIMCMD_END,
};
-const union AnimCmd gWhipAnimCmds2[] =
+static const union AnimCmd sAnim_Whip_Flipped[] =
{
ANIMCMD_FRAME(64, 3, .hFlip = TRUE),
ANIMCMD_FRAME(80, 3, .hFlip = TRUE),
@@ -1078,10 +1083,10 @@ const union AnimCmd gWhipAnimCmds2[] =
ANIMCMD_END,
};
-const union AnimCmd *const gWhipAnimTable[] =
+static const union AnimCmd *const sAnims_Whip[] =
{
- gWhipAnimCmds1,
- gWhipAnimCmds2,
+ sAnim_Whip,
+ sAnim_Whip_Flipped,
};
const struct SpriteTemplate gSlamHitSpriteTemplate =
@@ -1089,7 +1094,7 @@ const struct SpriteTemplate gSlamHitSpriteTemplate =
.tileTag = ANIM_TAG_SLAM_HIT,
.paletteTag = ANIM_TAG_SLAM_HIT,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
- .anims = gWhipAnimTable,
+ .anims = sAnims_Whip,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimWhipHit,
@@ -1100,13 +1105,13 @@ const struct SpriteTemplate gVineWhipSpriteTemplate =
.tileTag = ANIM_TAG_WHIP_HIT,
.paletteTag = ANIM_TAG_WHIP_HIT,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
- .anims = gWhipAnimTable,
+ .anims = sAnims_Whip,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimWhipHit,
};
-const union AnimCmd gUnknown_08592900[] =
+static const union AnimCmd sAnim_SlidingHit[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(16, 4),
@@ -1116,96 +1121,96 @@ const union AnimCmd gUnknown_08592900[] =
ANIMCMD_END,
};
-const union AnimCmd *const gUnknown_08592918[] =
+static const union AnimCmd *const sAnims_SlidingHit[] =
{
- gUnknown_08592900,
+ sAnim_SlidingHit,
};
// Unused
-const struct SpriteTemplate gUnknown_0859291C =
+static const struct SpriteTemplate sSlidingHit1SpriteTemplate =
{
.tileTag = ANIM_TAG_HIT,
.paletteTag = ANIM_TAG_HIT,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
- .anims = gUnknown_08592918,
+ .anims = sAnims_SlidingHit,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81009F8,
+ .callback = AnimSlidingHit,
};
// Unused
-const struct SpriteTemplate gUnknown_08592934 =
+static const struct SpriteTemplate sSlidingHit2SpriteTemplate =
{
.tileTag = ANIM_TAG_HIT_2,
.paletteTag = ANIM_TAG_HIT_2,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
- .anims = gUnknown_08592918,
+ .anims = sAnims_SlidingHit,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81009F8,
+ .callback = AnimSlidingHit,
};
-const union AffineAnimCmd gUnknown_0859294C[] = {
+static const union AffineAnimCmd sAffineAnim_FlickeringPunch_Normal[] = {
AFFINEANIMCMD_FRAME(256, 256, 0, 0),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_0859295C[] = {
+static const union AffineAnimCmd sAffineAnim_FlickeringPunch_TurnedTopLeft[] = {
AFFINEANIMCMD_FRAME(256, 256, 32, 0),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_0859296C[] = {
+static const union AffineAnimCmd sAffineAnim_FlickeringPunch_TurnedLeft[] = {
AFFINEANIMCMD_FRAME(256, 256, 64, 0),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_0859297C[] = {
+static const union AffineAnimCmd sAffineAnim_FlickeringPunch_TurnedBottomLeft[] = {
AFFINEANIMCMD_FRAME(256, 256, 96, 0),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_0859298C[] = {
+static const union AffineAnimCmd sAffineAnim_FlickeringPunch_UpsideDown[] = {
AFFINEANIMCMD_FRAME(256, 256, -128, 0),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_0859299C[] = {
+static const union AffineAnimCmd sAffineAnim_FlickeringPunch_TurnedBottomRight[] = {
AFFINEANIMCMD_FRAME(256, 256, -96, 0),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_085929AC[] = {
+static const union AffineAnimCmd sAffineAnim_FlickeringPunch_TurnedRight[] = {
AFFINEANIMCMD_FRAME(256, 256, -64, 0),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gUnknown_085929BC[] = {
+static const union AffineAnimCmd sAffineAnim_FlickeringPunch_TurnedTopRight[] = {
AFFINEANIMCMD_FRAME(256, 256, -32, 0),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd *const gUnknown_085929CC[] = {
- gUnknown_0859294C,
- gUnknown_0859295C,
- gUnknown_0859296C,
- gUnknown_0859297C,
- gUnknown_0859298C,
- gUnknown_0859299C,
- gUnknown_085929AC,
- gUnknown_085929BC,
+static const union AffineAnimCmd *const sAffineAnims_FlickeringPunch[] = {
+ sAffineAnim_FlickeringPunch_Normal,
+ sAffineAnim_FlickeringPunch_TurnedTopLeft,
+ sAffineAnim_FlickeringPunch_TurnedLeft,
+ sAffineAnim_FlickeringPunch_TurnedBottomLeft,
+ sAffineAnim_FlickeringPunch_UpsideDown,
+ sAffineAnim_FlickeringPunch_TurnedBottomRight,
+ sAffineAnim_FlickeringPunch_TurnedRight,
+ sAffineAnim_FlickeringPunch_TurnedTopRight,
};
// Unused
-const struct SpriteTemplate gUnknown_085929EC =
+static const struct SpriteTemplate sFlickeringPunchSpriteTemplate =
{
.tileTag = ANIM_TAG_HANDS_AND_FEET,
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
.oam = &gOamData_AffineNormal_ObjNormal_32x32,
.anims = gDummySpriteAnimTable,
.images = NULL,
- .affineAnims = gUnknown_085929CC,
- .callback = sub_8100A94,
+ .affineAnims = sAffineAnims_FlickeringPunch,
+ .callback = AnimFlickeringPunch,
};
const union AnimCmd gCuttingSliceAnimCmds[] =
@@ -1244,90 +1249,90 @@ const struct SpriteTemplate gAirCutterSliceSpriteTemplate =
.callback = AnimAirCutterSlice,
};
-const union AnimCmd gUnknown_08592A4C[] =
+static const union AnimCmd sAnim_CirclingMusicNote_Eighth[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_08592A54[] =
+static const union AnimCmd sAnim_CirclingMusicNote_BeamedEighth[] =
{
ANIMCMD_FRAME(4, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_08592A5C[] =
+static const union AnimCmd sAnim_CirclingMusicNote_SlantedBeamedEighth[] =
{
ANIMCMD_FRAME(8, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_08592A64[] =
+static const union AnimCmd sAnim_CirclingMusicNote_Quarter[] =
{
ANIMCMD_FRAME(12, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_08592A6C[] =
+static const union AnimCmd sAnim_CirclingMusicNote_QuarterRest[] =
{
ANIMCMD_FRAME(16, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_08592A74[] =
+static const union AnimCmd sAnim_CirclingMusicNote_EighthRest[] =
{
ANIMCMD_FRAME(20, 1),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_08592A7C[] =
+static const union AnimCmd sAnim_CirclingMusicNote_Eighth_Flipped[] =
{
ANIMCMD_FRAME(0, 1, .vFlip = TRUE),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_08592A84[] =
+static const union AnimCmd sAnim_CirclingMusicNote_BeamedEighth_Flipped[] =
{
ANIMCMD_FRAME(4, 1, .vFlip = TRUE),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_08592A8C[] =
+static const union AnimCmd sAnim_CirclingMusicNote_SlantedBeamedEighth_Flipped[] =
{
ANIMCMD_FRAME(8, 1, .vFlip = TRUE),
ANIMCMD_END,
};
-const union AnimCmd gUnknown_08592A94[] =
+static const union AnimCmd sAnim_CirclingMusicNote_Quarter_Flipped[] =
{
ANIMCMD_FRAME(12, 1, .vFlip = TRUE),
ANIMCMD_END,
};
-const union AnimCmd *const gUnknown_08592A9C[] =
+static const union AnimCmd *const sAnims_CirclingMusicNote[] =
{
- gUnknown_08592A4C,
- gUnknown_08592A54,
- gUnknown_08592A5C,
- gUnknown_08592A64,
- gUnknown_08592A6C,
- gUnknown_08592A74,
- gUnknown_08592A7C,
- gUnknown_08592A84,
- gUnknown_08592A8C,
- gUnknown_08592A94,
+ sAnim_CirclingMusicNote_Eighth,
+ sAnim_CirclingMusicNote_BeamedEighth,
+ sAnim_CirclingMusicNote_SlantedBeamedEighth,
+ sAnim_CirclingMusicNote_Quarter,
+ sAnim_CirclingMusicNote_QuarterRest,
+ sAnim_CirclingMusicNote_EighthRest,
+ sAnim_CirclingMusicNote_Eighth_Flipped,
+ sAnim_CirclingMusicNote_BeamedEighth_Flipped,
+ sAnim_CirclingMusicNote_SlantedBeamedEighth_Flipped,
+ sAnim_CirclingMusicNote_Quarter_Flipped,
};
// Unused
-const struct SpriteTemplate gUnknown_08592AC4 =
+static const struct SpriteTemplate sCirclingMusicNoteSpriteTemplate =
{
.tileTag = ANIM_TAG_MUSIC_NOTES,
.paletteTag = ANIM_TAG_MUSIC_NOTES,
.oam = &gOamData_AffineOff_ObjNormal_16x16,
- .anims = gUnknown_08592A9C,
+ .anims = sAnims_CirclingMusicNote,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8100E1C,
+ .callback = AnimCirclingMusicNote,
};
const struct SpriteTemplate gProtectSpriteTemplate =
@@ -1414,7 +1419,7 @@ const struct SpriteTemplate gSparklingStarsSpriteTemplate =
.callback = AnimSparkingStars,
};
-const union AnimCmd gUnknown_08592BAC[] =
+static const union AnimCmd sAnim_BubbleBurst[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(4, 10),
@@ -1427,7 +1432,7 @@ const union AnimCmd gUnknown_08592BAC[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_08592BD0[] =
+static const union AnimCmd sAnim_BubbleBurst_Flipped[] =
{
ANIMCMD_FRAME(0, 10, .hFlip = TRUE),
ANIMCMD_FRAME(4, 10, .hFlip = TRUE),
@@ -1440,22 +1445,22 @@ const union AnimCmd gUnknown_08592BD0[] =
ANIMCMD_END,
};
-const union AnimCmd *const gUnknown_08592BF4[] =
+static const union AnimCmd *const sAnims_BubbleBurst[] =
{
- gUnknown_08592BAC,
- gUnknown_08592BD0,
+ sAnim_BubbleBurst,
+ sAnim_BubbleBurst_Flipped,
};
// Unused
-const struct SpriteTemplate gUnknown_08592BFC =
+static const struct SpriteTemplate sBubbleBurstSpriteTemplate =
{
.tileTag = ANIM_TAG_BUBBLE_BURST,
.paletteTag = ANIM_TAG_BUBBLE_BURST,
.oam = &gOamData_AffineOff_ObjNormal_16x16,
- .anims = gUnknown_08592BF4,
+ .anims = sAnims_BubbleBurst,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8101440,
+ .callback = AnimBubbleBurst,
};
const union AnimCmd gSleepLetterZAnimCmds[] =
@@ -1556,7 +1561,8 @@ const struct SpriteTemplate gBowMonSpriteTemplate =
};
// Unused
-const struct SpriteTemplate gUnknown_08592CF0 =
+// Same as BowMon above but without backing up
+static const struct SpriteTemplate sTipMonSpriteTemplate =
{
.tileTag = 0,
.paletteTag = 0,
@@ -1564,7 +1570,7 @@ const struct SpriteTemplate gUnknown_08592CF0 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8101B90,
+ .callback = AnimTipMon,
};
const union AnimCmd gSlashSliceAnimCmds1[] =
@@ -2193,8 +2199,8 @@ const struct SpriteTemplate gTauntFingerSpriteTemplate =
// arg 5: wave speed
static void AnimMovePowderParticle(struct Sprite* sprite)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
@@ -2216,9 +2222,9 @@ static void AnimMovePowderParticle_Step(struct Sprite* sprite)
if (sprite->data[0] > 0)
{
sprite->data[0]--;
- sprite->pos2.y = sprite->data[2] >> 8;
+ sprite->y2 = sprite->data[2] >> 8;
sprite->data[2] += sprite->data[1];
- sprite->pos2.x = Sin(sprite->data[5], sprite->data[3]);
+ sprite->x2 = Sin(sprite->data[5], sprite->data[3]);
sprite->data[5] = (sprite->data[5] + sprite->data[4]) & 0xFF;
}
else
@@ -2267,9 +2273,9 @@ static void AnimSolarbeamSmallOrb(struct Sprite* sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
InitAnimLinearTranslation(sprite);
sprite->data[5] = gBattleAnimArgs[3];
@@ -2290,8 +2296,8 @@ static void AnimSolarbeamSmallOrb_Step(struct Sprite* sprite)
else
sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) + 6;
- sprite->pos2.x += Sin(sprite->data[5], 5);
- sprite->pos2.y += Cos(sprite->data[5], 14);
+ sprite->x2 += Sin(sprite->data[5], 5);
+ sprite->y2 += Cos(sprite->data[5], 14);
sprite->data[5] = (sprite->data[5] + 15) & 0xFF;
}
}
@@ -2346,18 +2352,18 @@ static void AnimHyperBeamOrb(struct Sprite* sprite)
u16 animNum = Random2();
StartSpriteAnim(sprite, animNum % 8);
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos1.x -= 20;
+ sprite->x -= 20;
else
- sprite->pos1.x += 20;
+ sprite->x += 20;
speed = Random2();
sprite->data[0] = (speed & 31) + 64;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
InitAnimFastLinearTranslationWithSpeed(sprite);
sprite->data[5] = Random2() & 0xFF;
@@ -2374,7 +2380,7 @@ static void AnimHyperBeamOrb_Step(struct Sprite* sprite)
}
else
{
- sprite->pos2.y += Cos(sprite->data[5], 12);
+ sprite->y2 += Cos(sprite->data[5], 12);
if (sprite->data[5] < 0x7F)
sprite->subpriority = sprite->data[6];
else
@@ -2450,8 +2456,8 @@ static void AnimSporeParticle(struct Sprite* sprite)
static void AnimSporeParticle_Step(struct Sprite* sprite)
{
- sprite->pos2.x = Sin(sprite->data[1], 32);
- sprite->pos2.y = Cos(sprite->data[1], -3) + ((sprite->data[2] += 24) >> 8);
+ sprite->x2 = Sin(sprite->data[1], 32);
+ sprite->y2 = Cos(sprite->data[1], -3) + ((sprite->data[2] += 24) >> 8);
if ((u16)(sprite->data[1] - 0x40) < 0x80)
{
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
@@ -2501,9 +2507,9 @@ static void AnimPetalDanceBigFlower(struct Sprite* sprite)
{
InitSpritePosToAnimAttacker(sprite, FALSE);
sprite->data[0] = gBattleAnimArgs[3];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[2] = sprite->x;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2];
InitAnimLinearTranslation(sprite);
sprite->data[5] = 0x40;
@@ -2515,8 +2521,8 @@ static void AnimPetalDanceBigFlower_Step(struct Sprite* sprite)
{
if (!AnimTranslateLinear(sprite))
{
- sprite->pos2.x += Sin(sprite->data[5], 32);
- sprite->pos2.y += Cos(sprite->data[5], -5);
+ sprite->x2 += Sin(sprite->data[5], 32);
+ sprite->y2 += Cos(sprite->data[5], -5);
if ((u16)(sprite->data[5] - 0x40) < 0x80)
sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1;
else
@@ -2539,9 +2545,9 @@ static void AnimPetalDanceSmallFlower(struct Sprite* sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[3];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[2] = sprite->x;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
InitAnimLinearTranslation(sprite);
sprite->data[5] = 0x40;
@@ -2553,7 +2559,7 @@ static void AnimPetalDanceSmallFlower_Step(struct Sprite* sprite)
{
if (!AnimTranslateLinear(sprite))
{
- sprite->pos2.x += Sin(sprite->data[5], 8);
+ sprite->x2 += Sin(sprite->data[5], 8);
if ((u16)(sprite->data[5] - 59) < 5 || (u16)(sprite->data[5] - 187) < 5)
sprite->oam.matrixNum ^= ST_OAM_HFLIP;
@@ -2572,8 +2578,8 @@ static void AnimPetalDanceSmallFlower_Step(struct Sprite* sprite)
// arg 2: upward duration
static void AnimRazorLeafParticle(struct Sprite* sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
sprite->data[0] = gBattleAnimArgs[0];
sprite->data[1] = gBattleAnimArgs[1];
sprite->data[2] = gBattleAnimArgs[2];
@@ -2601,23 +2607,23 @@ static void AnimRazorLeafParticle_Step1(struct Sprite* sprite)
else
{
sprite->data[2]--;
- sprite->pos1.x += sprite->data[0];
- sprite->pos1.y += sprite->data[1];
+ sprite->x += sprite->data[0];
+ sprite->y += sprite->data[1];
}
}
static void AnimRazorLeafParticle_Step2(struct Sprite* sprite)
{
if (GetBattlerSide(gBattleAnimAttacker))
- sprite->pos2.x = -Sin(sprite->data[0], 25);
+ sprite->x2 = -Sin(sprite->data[0], 25);
else
- sprite->pos2.x = Sin(sprite->data[0], 25);
+ sprite->x2 = Sin(sprite->data[0], 25);
sprite->data[0] += 2;
sprite->data[0] &= 0xFF;
sprite->data[1]++;
if (!(sprite->data[1] & 1))
- sprite->pos2.y++;
+ sprite->y2++;
if (sprite->data[1] > 80)
DestroyAnimSprite(sprite);
@@ -2684,10 +2690,10 @@ static void AnimTranslateLinearSingleSineWave_Step(struct Sprite* sprite)
destroy = TRUE;
}
- if (sprite->pos1.x + sprite->pos2.x > 256
- || sprite->pos1.x + sprite->pos2.x < -16
- || sprite->pos1.y + sprite->pos2.y > 160
- || sprite->pos1.y + sprite->pos2.y < -16)
+ if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16
+ || sprite->x + sprite->x2 < -16
+ || sprite->y + sprite->y2 > DISPLAY_HEIGHT
+ || sprite->y + sprite->y2 < -16)
destroy = TRUE;
if (destroy)
@@ -2703,9 +2709,9 @@ static void AnimTranslateLinearSingleSineWave_Step(struct Sprite* sprite)
void AnimMoveTwisterParticle(struct Sprite* sprite)
{
if (IsDoubleBattle() == TRUE)
- SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->x, &sprite->y);
- sprite->pos1.y += 32;
+ sprite->y += 32;
sprite->data[0] = gBattleAnimArgs[0];
sprite->data[1] = gBattleAnimArgs[1];
sprite->data[2] = gBattleAnimArgs[2];
@@ -2718,11 +2724,11 @@ static void AnimMoveTwisterParticle_Step(struct Sprite* sprite)
{
if (sprite->data[1] == 0xFF)
{
- sprite->pos1.y -= 2;
+ sprite->y -= 2;
}
else if (sprite->data[1] > 0)
{
- sprite->pos1.y -= 2;
+ sprite->y -= 2;
sprite->data[1] -= 2;
}
@@ -2731,8 +2737,8 @@ static void AnimMoveTwisterParticle_Step(struct Sprite* sprite)
sprite->data[5] += sprite->data[2];
sprite->data[5] &= 0xFF;
- sprite->pos2.x = Cos(sprite->data[5], sprite->data[3]);
- sprite->pos2.y = Sin(sprite->data[5], 5);
+ sprite->x2 = Cos(sprite->data[5], sprite->data[3]);
+ sprite->y2 = Sin(sprite->data[5], 5);
if (sprite->data[5] < 0x80)
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget) - 1;
else
@@ -2819,9 +2825,9 @@ static void AnimTask_DuplicateAndShrinkToPos_Step1(u8 taskId)
{
u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
gTasks[taskId].data[10] += gTasks[taskId].data[0];
- gSprites[spriteId].pos2.x = gTasks[taskId].data[10] >> 8;
+ gSprites[spriteId].x2 = gTasks[taskId].data[10] >> 8;
if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER)
- gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
+ gSprites[spriteId].x2 = -gSprites[spriteId].x2;
gTasks[taskId].data[11] += 16;
SetSpriteRotScale(spriteId, gTasks[taskId].data[11], gTasks[taskId].data[11], 0);
@@ -2841,8 +2847,8 @@ static void AnimTask_DuplicateAndShrinkToPos_Step2(u8 taskId)
{
u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
ResetSpriteRotScale(spriteId);
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].x2 = 0;
+ gSprites[spriteId].y2 = 0;
gSprites[spriteId].oam.priority = gTasks[taskId].data[14];
spriteId = GetAnimBattlerSpriteId(ANIM_DEF_PARTNER);
gSprites[spriteId].oam.priority = gTasks[taskId].data[15];
@@ -2872,8 +2878,8 @@ static void AnimMimicOrb(struct Sprite* sprite)
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
gBattleAnimArgs[0] *= -1;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[1];
sprite->invisible = TRUE;
sprite->data[0]++;
break;
@@ -2902,16 +2908,16 @@ static void AnimIngrainRoot(struct Sprite* sprite)
{
if (!sprite->data[0])
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
- sprite->pos2.x = gBattleAnimArgs[0];
- sprite->pos2.y = gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
+ sprite->x2 = gBattleAnimArgs[0];
+ sprite->y2 = gBattleAnimArgs[1];
sprite->subpriority = gBattleAnimArgs[2] + 30;
StartSpriteAnim(sprite, gBattleAnimArgs[3]);
sprite->data[2] = gBattleAnimArgs[4];
sprite->data[0]++;
- if (sprite->pos1.y + sprite->pos2.y > 120)
- sprite->pos1.y += sprite->pos2.y + sprite->pos1.y - 120;
+ if (sprite->y + sprite->y2 > 120)
+ sprite->y += sprite->y2 + sprite->y - 120;
}
sprite->callback = AnimRootFlickerOut;
}
@@ -2932,18 +2938,18 @@ static void AnimFrenzyPlantRoot(struct Sprite *sprite)
targetX -= attackerX;
targetY -= attackerY;
- sprite->pos1.x = attackerX + targetX * gBattleAnimArgs[0] / 100;
- sprite->pos1.y = attackerY + targetY * gBattleAnimArgs[0] / 100;
- sprite->pos2.x = gBattleAnimArgs[1];
- sprite->pos2.y = gBattleAnimArgs[2];
+ sprite->x = attackerX + targetX * gBattleAnimArgs[0] / 100;
+ sprite->y = attackerY + targetY * gBattleAnimArgs[0] / 100;
+ sprite->x2 = gBattleAnimArgs[1];
+ sprite->y2 = gBattleAnimArgs[2];
sprite->subpriority = gBattleAnimArgs[3] + 30;
StartSpriteAnim(sprite, gBattleAnimArgs[4]);
sprite->data[2] = gBattleAnimArgs[5];
sprite->callback = AnimRootFlickerOut;
- gUnknown_0203A0F8[0] = sprite->pos1.x;
- gUnknown_0203A0F8[1] = sprite->pos1.y;
- gUnknown_0203A0F8[2] = targetX;
- gUnknown_0203A0F8[3] = targetY;
+ sFrenzyPlantRootData.startX = sprite->x;
+ sFrenzyPlantRootData.startY = sprite->y;
+ sFrenzyPlantRootData.targetX = targetX;
+ sFrenzyPlantRootData.targetY = targetY;
}
static void AnimRootFlickerOut(struct Sprite* sprite)
@@ -2965,23 +2971,23 @@ static void AnimIngrainOrb(struct Sprite* sprite)
{
if (!sprite->data[0])
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
sprite->data[1] = gBattleAnimArgs[2];
sprite->data[2] = gBattleAnimArgs[3];
sprite->data[3] = gBattleAnimArgs[4];
}
sprite->data[0]++;
- sprite->pos2.x = sprite->data[1] * sprite->data[0];
- sprite->pos2.y = Sin((sprite->data[0] * 20) & 0xFF, sprite->data[2]);
+ sprite->x2 = sprite->data[1] * sprite->data[0];
+ sprite->y2 = Sin((sprite->data[0] * 20) & 0xFF, sprite->data[2]);
if (sprite->data[0] > sprite->data[3])
DestroyAnimSprite(sprite);
}
-static void sub_80FF9B8(struct Sprite* sprite, s16 c)
+static void InitItemBagData(struct Sprite* sprite, s16 c)
{
- int a = (sprite->pos1.x << 8) | sprite->pos1.y;
+ int a = (sprite->x << 8) | sprite->y;
int b = (sprite->data[6] << 8) | sprite->data[7];
c <<= 8;
sprite->data[5] = a;
@@ -3005,14 +3011,14 @@ bool8 moveAlongLinearPath(struct Sprite* sprite)
if (xEndPos == 0)
xEndPos = -32;
else if (xEndPos == 255)
- xEndPos = 272;
+ xEndPos = DISPLAY_WIDTH + 32;
yEndPos_2 = yEndPos - yStartPos;
r0 = xEndPos - xStartPos;
var1 = r0 * currentTime / totalTime;
vaxEndPos = yEndPos_2 * currentTime / totalTime;
- sprite->pos1.x = var1 + xStartPos;
- sprite->pos1.y = vaxEndPos + yStartPos;
+ sprite->x = var1 + xStartPos;
+ sprite->y = vaxEndPos + yStartPos;
if (++currentTime == totalTime)
return TRUE;
@@ -3039,10 +3045,10 @@ static void AnimItemSteal_Step1(struct Sprite* sprite)
sprite->data[0] = 0;
}
- sprite->pos2.y = Sin(sprite->data[0] + 128, 30 - sprite->data[1] * 8);
+ sprite->y2 = Sin(sprite->data[0] + 128, 30 - sprite->data[1] * 8);
if (moveAlongLinearPath(sprite))
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sprite->data[0] = 0;
sprite->callback = AnimItemSteal_Step2;
}
@@ -3059,14 +3065,14 @@ static void AnimPresent(struct Sprite* sprite)
{
sprite->data[6] = targetX;
sprite->data[7] = targetY + 10;
- sub_80FF9B8(sprite, 60);
+ InitItemBagData(sprite, 60);
sprite->data[3] = 1;
}
else
{
sprite->data[6] = targetX;
sprite->data[7] = targetY + 10;
- sub_80FF9B8(sprite, 60);
+ InitItemBagData(sprite, 60);
sprite->data[3] = 3;
}
@@ -3085,10 +3091,10 @@ static void AnimKnockOffOpponentsItem(struct Sprite* sprite)
sprite->data[0] = zero;
}
- sprite->pos2.y = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8);
+ sprite->y2 = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8);
if (moveAlongLinearPath(sprite))
{
- sprite->pos2.y = zero;
+ sprite->y2 = zero;
sprite->data[0] = zero;
DestroyAnimSprite(sprite);
}
@@ -3101,7 +3107,7 @@ static void AnimKnockOffItem(struct Sprite* sprite)
{
sprite->data[6] = 0;
sprite->data[7] = targetY + 10;
- sub_80FF9B8(sprite, 40);
+ InitItemBagData(sprite, 40);
sprite->data[3] = 3;
sprite->data[4] = 60;
sprite->callback = AnimItemSteal_Step1;
@@ -3113,7 +3119,7 @@ static void AnimKnockOffItem(struct Sprite* sprite)
if (IsContest())
sprite->data[6] = 0;
- sub_80FF9B8(sprite, 40);
+ InitItemBagData(sprite, 40);
sprite->data[3] = 3;
sprite->data[4] = 60;
sprite->callback = AnimKnockOffOpponentsItem;
@@ -3134,7 +3140,7 @@ static void AnimPresentHealParticle(struct Sprite* sprite)
}
sprite->data[0]++;
- sprite->pos2.y = sprite->data[1] * sprite->data[0];
+ sprite->y2 = sprite->data[1] * sprite->data[0];
if (sprite->animEnded)
DestroyAnimSprite(sprite);
}
@@ -3150,14 +3156,14 @@ static void AnimItemSteal(struct Sprite* sprite)
{
sprite->data[6] = attackerX;
sprite->data[7] = attackerY + 10;
- sub_80FF9B8(sprite, 60);
+ InitItemBagData(sprite, 60);
sprite->data[3] = 1;
}
else
{
sprite->data[6] = attackerX;
sprite->data[7] = attackerY + 10;
- sub_80FF9B8(sprite, 60);
+ InitItemBagData(sprite, 60);
sprite->data[3] = 3;
}
@@ -3176,13 +3182,13 @@ static void AnimItemSteal_Step3(struct Sprite* sprite)
sprite->data[0] = zero;
}
- sprite->pos2.y = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8);
- if (sprite->pos2.y == 0)
+ sprite->y2 = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8);
+ if (sprite->y2 == 0)
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(63));
if (moveAlongLinearPath(sprite))
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sprite->data[0] = 0;
sprite->callback = AnimItemSteal_Step2;
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(-64));
@@ -3202,7 +3208,7 @@ static void AnimTrickBag(struct Sprite* sprite)
if (!IsContest())
{
sprite->data[1] = gBattleAnimArgs[1];
- sprite->pos1.x = 120;
+ sprite->x = 120;
}
else
{
@@ -3213,14 +3219,14 @@ static void AnimTrickBag(struct Sprite* sprite)
b = a;
sprite->data[1] = a - ((b >> 8) << 8);
- sprite->pos1.x = 70;
+ sprite->x = 70;
}
- sprite->pos1.y = gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[0];
sprite->data[2] = gBattleAnimArgs[0];
sprite->data[4] = 20;
- sprite->pos2.x = Cos(sprite->data[1], 60);
- sprite->pos2.y = Sin(sprite->data[1], 20);
+ sprite->x2 = Cos(sprite->data[1], 60);
+ sprite->y2 = Sin(sprite->data[1], 20);
sprite->callback = AnimTrickBag_Step1;
if (sprite->data[1] > 0 && sprite->data[1] < 192)
sprite->subpriority = 31;
@@ -3244,7 +3250,7 @@ static void AnimTrickBag_Step1(struct Sprite* sprite)
{
sprite->data[2] += sprite->data[4] / 10;
sprite->data[4] += 3;
- sprite->pos1.y = sprite->data[2];
+ sprite->y = sprite->data[2];
break;
}
break;
@@ -3284,8 +3290,8 @@ static void AnimTrickBag_Step2(struct Sprite* sprite)
sprite->subpriority = 29;
}
- sprite->pos2.x = Cos(sprite->data[1], 60);
- sprite->pos2.y = Sin(sprite->data[1], 20);
+ sprite->x2 = Cos(sprite->data[1], 60);
+ sprite->y2 = Sin(sprite->data[1], 20);
}
}
@@ -3356,14 +3362,14 @@ static void AnimTask_LeafBlade_Step(u8 taskId)
}
break;
case 1:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0] = 10;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = task->data[6];
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = task->data[7];
sprite->data[5] = LeafBladeGetPosFactor(sprite);
task->data[4] += 2;
@@ -3382,14 +3388,14 @@ static void AnimTask_LeafBlade_Step(u8 taskId)
}
break;
case 3:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0] = 10;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5];
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = task->data[7] - ((task->data[11] / 2) + 10) * task->data[5];
sprite->data[5] = LeafBladeGetPosFactor(sprite);
task->data[3] = 2;
@@ -3399,14 +3405,14 @@ static void AnimTask_LeafBlade_Step(u8 taskId)
task->data[0]++;
break;
case 5:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0] = 10;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = task->data[6] + ((task->data[10] / 2) + 10) * task->data[5];
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5];
sprite->data[5] = LeafBladeGetPosFactor(sprite);
task->data[4] -= 2;
@@ -3425,14 +3431,14 @@ static void AnimTask_LeafBlade_Step(u8 taskId)
}
break;
case 7:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0] = 10;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = task->data[6];
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = task->data[7];
sprite->data[5] = LeafBladeGetPosFactor(sprite);
task->data[4] += 2;
@@ -3443,14 +3449,14 @@ static void AnimTask_LeafBlade_Step(u8 taskId)
task->data[0]++;
break;
case 9:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0] = 10;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5];
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5];
sprite->data[5] = LeafBladeGetPosFactor(sprite);
task->data[3] = 5;
@@ -3469,14 +3475,14 @@ static void AnimTask_LeafBlade_Step(u8 taskId)
break;
case 11:
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0] = 10;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = task->data[8];
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = task->data[9];
sprite->data[5] = LeafBladeGetPosFactor(sprite);
task->data[4] -= 2;
@@ -3512,7 +3518,7 @@ static void AnimTask_LeafBlade_Step(u8 taskId)
static s16 LeafBladeGetPosFactor(struct Sprite* sprite)
{
s16 var = 8;
- if (sprite->data[4] < sprite->pos1.y)
+ if (sprite->data[4] < sprite->y)
var = -var;
return var;
@@ -3527,8 +3533,8 @@ static void AnimTask_LeafBlade_Step2(struct Task* task, u8 taskId)
s16 spriteX;
s16 spriteY;
task->data[14] = 0;
- spriteX = gSprites[task->data[2]].pos1.x + gSprites[task->data[2]].pos2.x;
- spriteY = gSprites[task->data[2]].pos1.y + gSprites[task->data[2]].pos2.y;
+ spriteX = gSprites[task->data[2]].x + gSprites[task->data[2]].x2;
+ spriteY = gSprites[task->data[2]].y + gSprites[task->data[2]].y2;
spriteId = CreateSprite(&gLeafBladeSpriteTemplate, spriteX, spriteY, task->data[4]);
if (spriteId != MAX_SPRITES)
{
@@ -3572,13 +3578,13 @@ static void AnimFlyingParticle(struct Sprite* sprite)
{
sprite->data[4] = 0;
sprite->data[2] = gBattleAnimArgs[3];
- sprite->pos1.x = 0xFFF0;
+ sprite->x = 0xFFF0;
}
else
{
sprite->data[4] = 1;
sprite->data[2] = -gBattleAnimArgs[3];
- sprite->pos1.x = 0x100;
+ sprite->x = 0x100;
}
sprite->data[1] = gBattleAnimArgs[1];
@@ -3587,19 +3593,19 @@ static void AnimFlyingParticle(struct Sprite* sprite)
switch (gBattleAnimArgs[5])
{
case 0:
- sprite->pos1.y = gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[0];
sprite->oam.priority = GetBattlerSpriteBGPriority(battler);
break;
case 1:
- sprite->pos1.y = gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[0];
sprite->oam.priority = GetBattlerSpriteBGPriority(battler) + 1;
break;
case 2:
- sprite->pos1.y = GetBattlerSpriteCoord(battler, 3) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(battler, 3) + gBattleAnimArgs[0];
sprite->oam.priority = GetBattlerSpriteBGPriority(battler);
break;
case 3:
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[0];
GetAnimBattlerSpriteId(ANIM_TARGET);
sprite->oam.priority = GetBattlerSpriteBGPriority(battler) + 1;
break;
@@ -3612,17 +3618,17 @@ static void AnimFlyingParticle_Step(struct Sprite* sprite)
{
int a = sprite->data[7];
sprite->data[7]++;
- sprite->pos2.y = (sprite->data[1] * gSineTable[sprite->data[0]]) >> 8;
- sprite->pos2.x = sprite->data[2] * a;
+ sprite->y2 = (sprite->data[1] * gSineTable[sprite->data[0]]) >> 8;
+ sprite->x2 = sprite->data[2] * a;
sprite->data[0] = (sprite->data[3] * a) & 0xFF;
if (!sprite->data[4])
{
- if (sprite->pos2.x + sprite->pos1.x <= 0xF7)
+ if (sprite->x2 + sprite->x <= 0xF7)
return;
}
else
{
- if (sprite->pos2.x + sprite->pos1.x > -16)
+ if (sprite->x2 + sprite->x > -16)
return;
}
@@ -3687,25 +3693,25 @@ static void AnimNeedleArmSpike(struct Sprite* sprite)
sprite->data[0] = gBattleAnimArgs[4];
if (gBattleAnimArgs[1] == 0)
{
- sprite->pos1.x = gBattleAnimArgs[2] + a;
- sprite->pos1.y = gBattleAnimArgs[3] + b;
+ sprite->x = gBattleAnimArgs[2] + a;
+ sprite->y = gBattleAnimArgs[3] + b;
sprite->data[5] = a;
sprite->data[6] = b;
}
else
{
- sprite->pos1.x = a;
- sprite->pos1.y = b;
+ sprite->x = a;
+ sprite->y = b;
sprite->data[5] = gBattleAnimArgs[2] + a;
sprite->data[6] = gBattleAnimArgs[3] + b;
}
- x = sprite->pos1.x;
+ x = sprite->x;
sprite->data[1] = x * 16;
- y = sprite->pos1.y;
+ y = sprite->y;
sprite->data[2] = y * 16;
- sprite->data[3] = (sprite->data[5] - sprite->pos1.x) * 16 / gBattleAnimArgs[4];
- sprite->data[4] = (sprite->data[6] - sprite->pos1.y) * 16 / gBattleAnimArgs[4];
+ sprite->data[3] = (sprite->data[5] - sprite->x) * 16 / gBattleAnimArgs[4];
+ sprite->data[4] = (sprite->data[6] - sprite->y) * 16 / gBattleAnimArgs[4];
c = ArcTan2Neg(sprite->data[5] - x, sprite->data[6] - y);
if (IsContest())
c -= 0x8000;
@@ -3721,8 +3727,8 @@ static void AnimNeedleArmSpike_Step(struct Sprite* sprite)
{
sprite->data[1] += sprite->data[3];
sprite->data[2] += sprite->data[4];
- sprite->pos1.x = sprite->data[1] >> 4 ;
- sprite->pos1.y = sprite->data[2] >> 4 ;
+ sprite->x = sprite->data[1] >> 4 ;
+ sprite->y = sprite->data[2] >> 4 ;
sprite->data[0]--;
}
else
@@ -3737,17 +3743,17 @@ static void AnimWhipHit_WaitEnd(struct Sprite* sprite)
DestroyAnimSprite(sprite);
}
-static void sub_81009F8(struct Sprite* sprite)
+static void AnimSlidingHit(struct Sprite* sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
- sprite->pos1.x -= gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x -= gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
}
sprite->callback = RunStoredCallbackWhenAnimEnds;
@@ -3761,13 +3767,13 @@ static void AnimWhipHit(struct Sprite* sprite)
sprite->callback = AnimWhipHit_WaitEnd;
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
}
-static void sub_8100A94(struct Sprite* sprite)
+static void AnimFlickeringPunch(struct Sprite* sprite)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[3] = gBattleAnimArgs[4];
@@ -3784,23 +3790,23 @@ static void sub_8100A94(struct Sprite* sprite)
// arg 2: slice direction; 0 = right-to-left, 1 = left-to-right
static void AnimCuttingSlice(struct Sprite* sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
- sprite->pos1.y += 8;
+ sprite->y += 8;
sprite->callback = AnimSlice_Step;
if (gBattleAnimArgs[2] == 0)
{
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
}
else
{
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
sprite->hFlip = 1;
}
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[1] -= 0x400;
sprite->data[2] += 0x400;
sprite->data[5] = gBattleAnimArgs[2];
@@ -3834,23 +3840,23 @@ static void AnimAirCutterSlice(struct Sprite* sprite)
break;
}
- sprite->pos1.x = a;
- sprite->pos1.y = b;
+ sprite->x = a;
+ sprite->y = b;
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
- sprite->pos1.y += 8;
+ sprite->y += 8;
sprite->callback = AnimSlice_Step;
if (gBattleAnimArgs[2] == 0)
{
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
}
else
{
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
sprite->hFlip = 1;
}
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[1] -= 0x400;
sprite->data[2] += 0x400;
sprite->data[5] = gBattleAnimArgs[2];
@@ -3868,8 +3874,8 @@ static void AnimSlice_Step(struct Sprite* sprite)
sprite->data[1] -= 0x18;
sprite->data[2] -= 0x18;
- sprite->pos2.x = sprite->data[3] >> 8;
- sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->x2 = sprite->data[3] >> 8;
+ sprite->y2 = sprite->data[4] >> 8;
sprite->data[0]++;
if (sprite->data[0] == 20)
{
@@ -3879,7 +3885,7 @@ static void AnimSlice_Step(struct Sprite* sprite)
}
}
-void unref_sub_8100D38(struct Sprite* sprite)
+static void UnusedFlickerAnim(struct Sprite* sprite)
{
if (sprite->data[2] > 1)
{
@@ -3912,34 +3918,34 @@ void unref_sub_8100D38(struct Sprite* sprite)
}
}
-static void sub_8100E1C(struct Sprite* sprite)
+static void AnimCirclingMusicNote(struct Sprite* sprite)
{
sprite->data[0] = gBattleAnimArgs[2];
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
else
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
StartSpriteAnim(sprite, gBattleAnimArgs[5]);
sprite->data[1] = -gBattleAnimArgs[3];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[3] = gBattleAnimArgs[4];
- sprite->callback = sub_8100E80;
+ sprite->callback = AnimCirclingMusicNote_Step;
sprite->callback(sprite);
}
-static void sub_8100E80(struct Sprite* sprite)
+static void AnimCirclingMusicNote_Step(struct Sprite* sprite)
{
- sprite->pos2.x = Cos(sprite->data[0], 100);
- sprite->pos2.y = Sin(sprite->data[0], 20);
+ sprite->x2 = Cos(sprite->data[0], 100);
+ sprite->y2 = Sin(sprite->data[0], 20);
if (sprite->data[0] < 128)
sprite->subpriority = 0;
else
sprite->subpriority = 14;
sprite->data[0] = (sprite->data[0] + sprite->data[1]) & 0xFF;
- sprite->data[5] += 0x82;
- sprite->pos2.y += sprite->data[5] >> 8;
+ sprite->data[5] += 130;
+ sprite->y2 += sprite->data[5] >> 8;
sprite->data[2]++;
if (sprite->data[2] == sprite->data[3])
DestroyAnimSprite(sprite);
@@ -3950,8 +3956,8 @@ static void AnimProtect(struct Sprite* sprite)
if (IsContest())
gBattleAnimArgs[1] += 8;
- sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, 0) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord2(gBattleAnimAttacker, 0) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord2(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER || IsContest())
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker) + 1;
else
@@ -3969,7 +3975,7 @@ static void AnimProtect_Step(struct Sprite *sprite)
{
int i, id, savedPal;
sprite->data[5] += 96;
- sprite->pos2.x = -(sprite->data[5] >> 8);
+ sprite->x2 = -(sprite->data[5] >> 8);
if (++sprite->data[1] > 1)
{
sprite->data[1] = 0;
@@ -4010,8 +4016,8 @@ static void AnimProtect_Step(struct Sprite *sprite)
static void AnimMilkBottle(struct Sprite* sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 0xFFE8;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 0xFFE8;
sprite->data[0] = 0;
sprite->data[1] = 0;
sprite->data[2] = 0;
@@ -4061,7 +4067,7 @@ static void AnimMilkBottle_Step1(struct Sprite* sprite)
if (++sprite->data[1] > 2)
{
sprite->data[1] = 0;
- sprite->pos1.y++;
+ sprite->y++;
}
if (++sprite->data[2] <= 29)
@@ -4108,10 +4114,10 @@ static void AnimMilkBottle_Step2(struct Sprite* sprite, int unk1, int unk2)
if ((sprite->data[3]) > 0x2F)
sprite->data[4] += 2;
- sprite->pos2.x = sprite->data[4] / 9;
- sprite->pos2.y = sprite->data[4] / 14;
- if (sprite->pos2.y < 0)
- sprite->pos2.y *= -1;
+ sprite->x2 = sprite->data[4] / 9;
+ sprite->y2 = sprite->data[4] / 14;
+ if (sprite->y2 < 0)
+ sprite->y2 *= -1;
sprite->data[3]++;
if (sprite->data[3] > 0x3B)
@@ -4124,7 +4130,7 @@ static void AnimGrantingStars(struct Sprite* sprite)
SetSpriteCoordsToAnimAttackerCoords(sprite);
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[5];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[2] = gBattleAnimArgs[4];
@@ -4142,21 +4148,21 @@ static void AnimSparkingStars(struct Sprite* sprite)
if (IsDoubleBattle() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler)))
{
- SetAverageBattlerPositions(battler, gBattleAnimArgs[6], &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(battler, gBattleAnimArgs[6], &sprite->x, &sprite->y);
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
}
else
{
if (!gBattleAnimArgs[6])
{
- sprite->pos1.x = GetBattlerSpriteCoord(battler, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(battler, 1) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(battler, 0);
+ sprite->y = GetBattlerSpriteCoord(battler, 1) + gBattleAnimArgs[1];
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(battler, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(battler, 3) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(battler, 2);
+ sprite->y = GetBattlerSpriteCoord(battler, 3) + gBattleAnimArgs[1];
}
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
@@ -4169,30 +4175,30 @@ static void AnimSparkingStars(struct Sprite* sprite)
sprite->callback = TranslateSpriteLinearFixedPoint;
}
-static void sub_8101440(struct Sprite* sprite)
+static void AnimBubbleBurst(struct Sprite* sprite)
{
SetSpriteCoordsToAnimAttackerCoords(sprite);
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
}
else
{
- sprite->pos1.x -= gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x -= gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
StartSpriteAnim(sprite, 1);
}
- sprite->callback = sub_81014A0;
+ sprite->callback = AnimBubbleBurst_Step;
}
-static void sub_81014A0(struct Sprite* sprite)
+static void AnimBubbleBurst_Step(struct Sprite* sprite)
{
if (++sprite->data[0] > 30)
{
- sprite->pos2.y = (30 - sprite->data[0]) / 3;
- sprite->pos2.x = Sin(sprite->data[1] * 4, 3);
+ sprite->y2 = (30 - sprite->data[0]) / 3;
+ sprite->x2 = Sin(sprite->data[1] * 4, 3);
sprite->data[1]++;
}
@@ -4205,14 +4211,14 @@ static void AnimSleepLetterZ(struct Sprite* sprite)
SetSpriteCoordsToAnimAttackerCoords(sprite);
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[3] = 1;
}
else
{
- sprite->pos1.x -= gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x -= gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[3] = 0xFFFF;
StartSpriteAffineAnim(sprite, 1);
}
@@ -4222,8 +4228,8 @@ static void AnimSleepLetterZ(struct Sprite* sprite)
static void AnimSleepLetterZ_Step(struct Sprite* sprite)
{
- sprite->pos2.y = -(sprite->data[0] / 0x28);
- sprite->pos2.x = sprite->data[4] / 10;
+ sprite->y2 = -(sprite->data[0] / 0x28);
+ sprite->x2 = sprite->data[4] / 10;
sprite->data[4] += sprite->data[3] * 2;
sprite->data[0] += sprite->data[1];
if (++sprite->data[1] > 60)
@@ -4232,8 +4238,8 @@ static void AnimSleepLetterZ_Step(struct Sprite* sprite)
static void AnimLockOnTarget(struct Sprite* sprite)
{
- sprite->pos1.x -= 32;
- sprite->pos1.y -= 32;
+ sprite->x -= 32;
+ sprite->y -= 32;
sprite->data[0] = 20;
sprite->callback = WaitAnimForDuration;
StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step1);
@@ -4249,13 +4255,13 @@ static void AnimLockOnTarget_Step1(struct Sprite* sprite)
StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step1);
break;
case 1:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[0] = 8;
- sprite->data[2] = sprite->pos1.x + gInclineMonCoordTable[sprite->data[5] >> 8][0];
- sprite->data[4] = sprite->pos1.y + gInclineMonCoordTable[sprite->data[5] >> 8][1];
+ sprite->data[2] = sprite->x + gInclineMonCoordTable[sprite->data[5] >> 8][0];
+ sprite->data[4] = sprite->y + gInclineMonCoordTable[sprite->data[5] >> 8][1];
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step2);
sprite->data[5] += 0x100;
@@ -4314,10 +4320,10 @@ static void AnimLockOnTarget_Step3(struct Sprite* sprite)
break;
}
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[0] = 6;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + a;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + b;
@@ -4381,25 +4387,25 @@ static void AnimLockOnMoveTarget(struct Sprite* sprite)
sprite->oam.affineParam = gBattleAnimArgs[0];
if ((s16)sprite->oam.affineParam == 1)
{
- sprite->pos1.x -= 0x18;
- sprite->pos1.y -= 0x18;
+ sprite->x -= 0x18;
+ sprite->y -= 0x18;
}
else if ((s16)sprite->oam.affineParam == 2)
{
- sprite->pos1.x -= 0x18;
- sprite->pos1.y += 0x18;
+ sprite->x -= 0x18;
+ sprite->y += 0x18;
sprite->oam.matrixNum = ST_OAM_VFLIP;
}
else if ((s16)sprite->oam.affineParam == 3)
{
- sprite->pos1.x += 0x18;
- sprite->pos1.y -= 0x18;
+ sprite->x += 0x18;
+ sprite->y -= 0x18;
sprite->oam.matrixNum = ST_OAM_HFLIP;
}
else
{
- sprite->pos1.x += 0x18;
- sprite->pos1.y += 0x18;
+ sprite->x += 0x18;
+ sprite->y += 0x18;
sprite->oam.matrixNum = ST_OAM_HFLIP | ST_OAM_VFLIP;
}
@@ -4511,13 +4517,13 @@ static void AnimBowMon_Step4(struct Sprite* sprite)
DestroyAnimSprite(sprite);
}
-static void sub_8101B90(struct Sprite *sprite)
+static void AnimTipMon(struct Sprite *sprite)
{
sprite->data[0] = 0;
- sprite->callback = sub_8101BA0;
+ sprite->callback = AnimTipMon_Step;
}
-static void sub_8101BA0(struct Sprite *sprite)
+static void AnimTipMon_Step(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -4601,7 +4607,7 @@ static void AnimTask_SkullBashPositionSet(u8 taskId)
if (task->data[3])
{
task->data[4] += task->data[5];
- gSprites[task->data[0]].pos2.x = task->data[4];
+ gSprites[task->data[0]].x2 = task->data[4];
task->data[3]--;
}
else
@@ -4624,7 +4630,7 @@ static void AnimTask_SkullBashPositionSet(u8 taskId)
else
{
task->data[3] = 8;
- task->data[4] = gSprites[task->data[0]].pos2.x;
+ task->data[4] = gSprites[task->data[0]].x2;
task->data[5] = (task->data[1] == 0) ? 0x2 : -0x2;
task->data[6] = 1;
task->data[2]++;
@@ -4640,9 +4646,9 @@ static void AnimTask_SkullBashPositionSet(u8 taskId)
else
{
if (task->data[3] & 1)
- gSprites[task->data[0]].pos2.x = task->data[4] + task->data[5];
+ gSprites[task->data[0]].x2 = task->data[4] + task->data[5];
else
- gSprites[task->data[0]].pos2.x = task->data[4] - task->data[5];
+ gSprites[task->data[0]].x2 = task->data[4] - task->data[5];
task->data[6] = 1;
task->data[3]--;
@@ -4650,7 +4656,7 @@ static void AnimTask_SkullBashPositionSet(u8 taskId)
}
else
{
- gSprites[task->data[0]].pos2.x = task->data[4];
+ gSprites[task->data[0]].x2 = task->data[4];
task->data[3] = 12;
task->data[2]++;
}
@@ -4663,7 +4669,7 @@ static void AnimTask_SkullBashPositionSet(u8 taskId)
else
{
task->data[3] = 3;
- task->data[4] = gSprites[task->data[0]].pos2.x;
+ task->data[4] = gSprites[task->data[0]].x2;
task->data[5] = (task->data[1] == 0) ? 8 : -8;
task->data[2]++;
}
@@ -4672,7 +4678,7 @@ static void AnimTask_SkullBashPositionSet(u8 taskId)
if (task->data[3])
{
task->data[4] += task->data[5];
- gSprites[task->data[0]].pos2.x = task->data[4];
+ gSprites[task->data[0]].x2 = task->data[4];
task->data[3]--;
}
else
@@ -4704,13 +4710,13 @@ static void AnimSlashSlice(struct Sprite* sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[2];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[2];
}
sprite->data[0] = 0;
@@ -4721,16 +4727,16 @@ static void AnimSlashSlice(struct Sprite* sprite)
static void AnimFalseSwipeSlice(struct Sprite* sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + 0xFFD0;
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + 0xFFD0;
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
StoreSpriteCallbackInData6(sprite, AnimFalseSwipeSlice_Step1);
sprite->callback = RunStoredCallbackWhenAnimEnds;
}
static void AnimFalseSwipePositionedSlice(struct Sprite* sprite)
{
- sprite->pos1.x = sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + 0xFFD0 + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->x = sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + 0xFFD0 + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
StartSpriteAnim(sprite, 1);
sprite->data[0] = 0;
sprite->data[1] = 0;
@@ -4771,13 +4777,13 @@ static void AnimEndureEnergy(struct Sprite* sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[2];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[2];
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[2];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[2];
}
sprite->data[0] = 0;
@@ -4790,18 +4796,18 @@ static void AnimEndureEnergy_Step(struct Sprite* sprite)
if (++sprite->data[0] > sprite->data[1])
{
sprite->data[0] = 0;
- sprite->pos1.y--;
+ sprite->y--;
}
- sprite->pos1.y -= sprite->data[0];
+ sprite->y -= sprite->data[0];
if (sprite->animEnded)
DestroyAnimSprite(sprite);
}
static void AnimSharpenSphere(struct Sprite* sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) - 12;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) - 12;
sprite->data[0] = 0;
sprite->data[1] = 2;
sprite->data[2] = 0;
@@ -4839,10 +4845,10 @@ static void AnimConversion(struct Sprite* sprite)
{
if (sprite->data[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
if (IsContest())
- sprite->pos1.y += 10;
+ sprite->y += 10;
sprite->data[0]++;
}
@@ -4912,22 +4918,24 @@ void AnimTask_Conversion2AlphaBlend(u8 taskId)
}
}
-void unref_sub_8102434(u8 taskId)
+// Unused
+static void AnimTask_HideBattlersHealthbox(u8 taskId)
{
u8 i;
for (i = 0; i < gBattlersCount; i++)
{
- if (gBattleAnimArgs[0] == 1 && GetBattlerSide(i) == B_SIDE_PLAYER)
+ if (gBattleAnimArgs[0] == TRUE && GetBattlerSide(i) == B_SIDE_PLAYER)
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[i]);
- if (gBattleAnimArgs[1] == 1 && GetBattlerSide(i) == B_SIDE_OPPONENT)
+ if (gBattleAnimArgs[1] == TRUE && GetBattlerSide(i) == B_SIDE_OPPONENT)
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[i]);
}
DestroyAnimVisualTask(taskId);
}
-void unref_sub_81024A8(u8 taskId)
+// Unused
+static void AnimTask_ShowBattlersHealthbox(u8 taskId)
{
u8 i;
for (i = 0; i < gBattlersCount; i++)
@@ -4940,13 +4948,13 @@ static void AnimMoon(struct Sprite* sprite)
{
if (IsContest())
{
- sprite->pos1.x = 48;
- sprite->pos1.y = 40;
+ sprite->x = 48;
+ sprite->y = 40;
}
else
{
- sprite->pos1.x = gBattleAnimArgs[0];
- sprite->pos1.y = gBattleAnimArgs[1];
+ sprite->x = gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[1];
}
sprite->oam.shape = SPRITE_SHAPE(64x64);
@@ -4963,8 +4971,8 @@ static void AnimMoon_Step(struct Sprite* sprite)
static void AnimMoonlightSparkle(struct Sprite* sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0];
- sprite->pos1.y = gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[1];
sprite->data[0] = 0;
sprite->data[1] = 0;
sprite->data[2] = 0;
@@ -4980,7 +4988,7 @@ static void AnimMoonlightSparkle_Step(struct Sprite* sprite)
sprite->data[1] = 0;
if (sprite->data[2] < 120)
{
- sprite->pos1.y++;
+ sprite->y++;
sprite->data[2]++;
}
}
@@ -5104,36 +5112,36 @@ static void AnimHornHit(struct Sprite* sprite)
sprite->data[0] = 0;
sprite->data[1] = gBattleAnimArgs[2];
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
- sprite->data[6] = sprite->pos1.x;
- sprite->data[7] = sprite->pos1.y;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
+ sprite->data[6] = sprite->x;
+ sprite->data[7] = sprite->y;
if (IsContest())
{
sprite->oam.matrixNum = ST_OAM_HFLIP;
- sprite->pos1.x += 40;
- sprite->pos1.y += 20;
- sprite->data[2] = sprite->pos1.x << 7;
+ sprite->x += 40;
+ sprite->y += 20;
+ sprite->data[2] = sprite->x << 7;
sprite->data[3] = -0x1400 / sprite->data[1];
- sprite->data[4] = sprite->pos1.y << 7;
+ sprite->data[4] = sprite->y << 7;
sprite->data[5] = -0xA00 / sprite->data[1];
}
else if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
- sprite->pos1.x -= 40;
- sprite->pos1.y += 20;
- sprite->data[2] = sprite->pos1.x << 7;
+ sprite->x -= 40;
+ sprite->y += 20;
+ sprite->data[2] = sprite->x << 7;
sprite->data[3] = 0x1400 / sprite->data[1];
- sprite->data[4] = sprite->pos1.y << 7;
+ sprite->data[4] = sprite->y << 7;
sprite->data[5] = -0xA00 / sprite->data[1];
}
else
{
- sprite->pos1.x += 40;
- sprite->pos1.y -= 20;
- sprite->data[2] = sprite->pos1.x << 7;
+ sprite->x += 40;
+ sprite->y -= 20;
+ sprite->data[2] = sprite->x << 7;
sprite->data[3] = -0x1400 / sprite->data[1];
- sprite->data[4] = sprite->pos1.y << 7;
+ sprite->data[4] = sprite->y << 7;
sprite->data[5] = 0xA00 / sprite->data[1];
sprite->oam.matrixNum = (ST_OAM_HFLIP | ST_OAM_VFLIP);
}
@@ -5145,12 +5153,12 @@ static void AnimHornHit_Step(struct Sprite* sprite)
{
sprite->data[2] += sprite->data[3];
sprite->data[4] += sprite->data[5];
- sprite->pos1.x = sprite->data[2] >> 7;
- sprite->pos1.y = sprite->data[4] >> 7;
+ sprite->x = sprite->data[2] >> 7;
+ sprite->y = sprite->data[4] >> 7;
if (--sprite->data[1] == 1)
{
- sprite->pos1.x = sprite->data[6];
- sprite->pos1.y = sprite->data[7];
+ sprite->x = sprite->data[6];
+ sprite->y = sprite->data[7];
}
if (sprite->data[1] == 0)
@@ -5225,7 +5233,7 @@ static void AnimDoubleTeam(struct Sprite* sprite)
sprite->data[4] = gSineTable[sprite->data[0]] / 6;
sprite->data[5] = gSineTable[sprite->data[0]] / 13;
sprite->data[1] = (sprite->data[1] + sprite->data[5]) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[1], sprite->data[4]);
+ sprite->x2 = Sin(sprite->data[1], sprite->data[4]);
}
}
@@ -5296,9 +5304,9 @@ static void AnimWavyMusicNotes(struct Sprite* sprite)
b = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
}
- sprite->data[4] = sprite->pos1.x << 4;
- sprite->data[5] = sprite->pos1.y << 4;
- AnimWavyMusicNotesGetNextPos(a - sprite->pos1.x, b - sprite->pos1.y, &sprite->data[6], &sprite->data[7], 40);
+ sprite->data[4] = sprite->x << 4;
+ sprite->data[5] = sprite->y << 4;
+ AnimWavyMusicNotesGetNextPos(a - sprite->x, b - sprite->y, &sprite->data[6], &sprite->data[7], 40);
sprite->callback = AnimWavyMusicNotes_Step;
}
@@ -5327,12 +5335,12 @@ static void AnimWavyMusicNotes_Step(struct Sprite* sprite)
yDelta = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8);
sprite->data[4] += sprite->data[6];
sprite->data[5] += sprite->data[7];
- sprite->pos1.x = sprite->data[4] >> 4;
- sprite->pos1.y = sprite->data[5] >> 4;
- sprite->pos2.y = Sin(yDelta, 15);
+ sprite->x = sprite->data[4] >> 4;
+ sprite->y = sprite->data[5] >> 4;
+ sprite->y2 = Sin(yDelta, 15);
- y = sprite->pos1.y;
- if (sprite->pos1.x < -16 || sprite->pos1.x > 256 || y < -16 || y > 128)
+ y = sprite->y;
+ if (sprite->x < -16 || sprite->x > 256 || y < -16 || y > 128)
{
DestroySpriteAndMatrix(sprite);
}
@@ -5356,13 +5364,13 @@ static void AnimFlyingMusicNotes(struct Sprite* sprite)
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
gBattleAnimArgs[1] *= -1;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
StartSpriteAnim(sprite, gBattleAnimArgs[0]);
sprite->data[2] = 0;
sprite->data[3] = 0;
- sprite->data[4] = sprite->pos1.x << 4;
- sprite->data[5] = sprite->pos1.y << 4;
+ sprite->data[4] = sprite->x << 4;
+ sprite->data[5] = sprite->y << 4;
sprite->data[6] = (gBattleAnimArgs[1] << 4) / 5;
sprite->data[7] = (gBattleAnimArgs[2] << 7) / 5;
sprite->callback = AnimFlyingMusicNotes_Step;
@@ -5372,13 +5380,13 @@ static void AnimFlyingMusicNotes_Step(struct Sprite* sprite)
{
sprite->data[4] += sprite->data[6];
sprite->data[5] += sprite->data[7];
- sprite->pos1.x = sprite->data[4] >> 4;
- sprite->pos1.y = sprite->data[5] >> 4;
+ sprite->x = sprite->data[4] >> 4;
+ sprite->y = sprite->data[5] >> 4;
if (sprite->data[0] > 5 && sprite->data[3] == 0)
{
sprite->data[2] = (sprite->data[2] + 16) & 0xFF;
- sprite->pos2.x = Cos(sprite->data[2], 18);
- sprite->pos2.y = Sin(sprite->data[2], 18);
+ sprite->x2 = Cos(sprite->data[2], 18);
+ sprite->y2 = Sin(sprite->data[2], 18);
if (sprite->data[2] == 0)
sprite->data[3] = 1;
}
@@ -5400,8 +5408,8 @@ static void AnimBellyDrumHand(struct Sprite* sprite)
a = -16;
}
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + a;
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 8;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + a;
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 8;
sprite->data[0] = 8;
sprite->callback = WaitAnimForDuration;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
@@ -5412,7 +5420,7 @@ void AnimSlowFlyingMusicNotes(struct Sprite* sprite)
s16 xDiff;
u8 index;
SetSpriteCoordsToAnimAttackerCoords(sprite);
- sprite->pos1.y += 8;
+ sprite->y += 8;
StartSpriteAnim(sprite, gBattleAnimArgs[1]);
index = IndexOfSpritePaletteTag(gParticlesColorBlendTable[gBattleAnimArgs[2]][0]);
if (index != 0xFF)
@@ -5420,9 +5428,9 @@ void AnimSlowFlyingMusicNotes(struct Sprite* sprite)
xDiff = (gBattleAnimArgs[0] == 0) ? -32 : 32;
sprite->data[0] = 40;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = xDiff + sprite->data[1];
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = sprite->data[3] - 40;
InitAnimLinearTranslation(sprite);
sprite->data[5] = gBattleAnimArgs[3];
@@ -5435,11 +5443,11 @@ static void AnimSlowFlyingMusicNotes_Step(struct Sprite* sprite)
{
s16 xDiff;
xDiff = Sin(sprite->data[5], 8);
- if (sprite->pos2.x < 0)
+ if (sprite->x2 < 0)
xDiff = -xDiff;
- sprite->pos2.x += xDiff;
- sprite->pos2.y += Sin(sprite->data[5], 4);
+ sprite->x2 += xDiff;
+ sprite->y2 += Sin(sprite->data[5], 4);
sprite->data[5] = (sprite->data[5] + 8) & 0xFF;
}
else
@@ -5451,11 +5459,11 @@ static void AnimSlowFlyingMusicNotes_Step(struct Sprite* sprite)
void SetSpriteNextToMonHead(u8 battler, struct Sprite* sprite)
{
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
- sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) + 8;
+ sprite->x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) + 8;
else
- sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) - 8;
+ sprite->x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) - 8;
- sprite->pos1.y = GetBattlerSpriteCoord(battler, 3) - (s16)GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 4;
+ sprite->y = GetBattlerSpriteCoord(battler, 3) - (s16)GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 4;
}
static void AnimThoughtBubble(struct Sprite* sprite)
@@ -5518,10 +5526,10 @@ static void AnimFollowMeFinger(struct Sprite* sprite)
else
battler = gBattleAnimTarget;
- sprite->pos1.x = GetBattlerSpriteCoord(battler, 0);
- sprite->pos1.y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP);
- if (sprite->pos1.y <= 9)
- sprite->pos1.y = 10;
+ sprite->x = GetBattlerSpriteCoord(battler, 0);
+ sprite->y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_TOP);
+ if (sprite->y <= 9)
+ sprite->y = 10;
sprite->data[0] = 1;
sprite->data[1] = 0;
@@ -5547,7 +5555,7 @@ static void AnimFollowMeFinger_Step2(struct Sprite* sprite)
{
if (--sprite->data[0] == 0)
{
- sprite->pos2.x = 0;
+ sprite->x2 = 0;
sprite->callback = AnimMetronomeFinger_Step;
return;
}
@@ -5565,7 +5573,7 @@ static void AnimFollowMeFinger_Step2(struct Sprite* sprite)
x1 = gSineTable[sprite->data[1]];
x2 = x1 >> 3;
- sprite->pos2.x = (x1 >> 3) + (x2 >> 1);
+ sprite->x2 = (x1 >> 3) + (x2 >> 1);
}
static void AnimTauntFinger(struct Sprite* sprite)
diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c
index 8142624a2..315d61089 100755
--- a/src/battle_anim_effects_2.c
+++ b/src/battle_anim_effects_2.c
@@ -16,13 +16,13 @@
#include "constants/rgb.h"
#include "constants/songs.h"
-static void sub_8103448(struct Sprite *);
-static void sub_8103498(struct Sprite *);
-static void sub_81034D8(struct Sprite *);
-static void sub_810358C(struct Sprite *);
-static void sub_8103620(struct Sprite *);
-static void sub_8103658(struct Sprite *);
-static void sub_8103680(struct Sprite *);
+static void AnimCirclingFinger(struct Sprite *);
+static void AnimBouncingMusicNote(struct Sprite *);
+static void AnimBouncingMusicNote_Step(struct Sprite *);
+static void AnimVibrateBattlerBack(struct Sprite *);
+static void AnimMovingClamp(struct Sprite *);
+static void AnimMovingClamp_Step(struct Sprite *);
+static void AnimMovingClamp_End(struct Sprite *);
static void AnimKinesisZapEnergy(struct Sprite *);
static void AnimSwordsDanceBlade(struct Sprite *);
static void AnimSwordsDanceBlade_Step(struct Sprite *);
@@ -30,8 +30,8 @@ static void AnimSonicBoomProjectile(struct Sprite *);
static void AnimAirWaveProjectile(struct Sprite *);
static void AnimAirWaveProjectile_Step1(struct Sprite *sprite);
static void AnimAirWaveProjectile_Step2(struct Sprite *sprite);
-static void sub_8103FE8(struct Sprite *);
-static void sub_8104018(struct Sprite *);
+static void AnimVoidLines(struct Sprite *);
+static void AnimVoidLines_Step(struct Sprite *);
static void AnimCoinThrow(struct Sprite *);
static void AnimFallingCoin(struct Sprite *);
static void AnimFallingCoin_Step(struct Sprite *);
@@ -89,7 +89,7 @@ static void AnimPerishSongMusicNote_Step1(struct Sprite *);
static void AnimPerishSongMusicNote_Step2(struct Sprite *);
static void AnimGuardRing(struct Sprite *);
static void AnimTask_Withdraw_Step(u8);
-static void AnimTask_GrowAndGreyscale_Step(u8);
+static void AnimTask_GrowAndGrayscale_Step(u8);
static void AnimTask_Minimize_Step(u8);
static void CreateMinimizeSprite(struct Task *, u8);
static void ClonedMinizeSprite_Step(struct Sprite *);
@@ -109,7 +109,7 @@ static void AnimTask_ScaryFace_Step(u8);
static void AnimTask_UproarDistortion_Step(u8);
// Unused
-const struct SpriteTemplate gUnknown_08593264 =
+static const struct SpriteTemplate sCirclingFingerSpriteTemplate =
{
.tileTag = ANIM_TAG_FINGER,
.paletteTag = ANIM_TAG_FINGER,
@@ -117,23 +117,23 @@ const struct SpriteTemplate gUnknown_08593264 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8103448,
+ .callback = AnimCirclingFinger,
};
-const union AnimCmd gUnknown_0859327C[] =
+static const union AnimCmd sAnim_BouncingMusicNote[] =
{
ANIMCMD_FRAME(4, 1),
ANIMCMD_END,
};
-// Unused
-const union AnimCmd *const gUnknown_08593284[] =
+// Unused (association assumed)
+static const union AnimCmd *const sAnims_BouncingMusicNote[] =
{
- gUnknown_0859327C,
+ sAnim_BouncingMusicNote,
};
// Unused
-const struct SpriteTemplate gUnknown_08593288 =
+static const struct SpriteTemplate sBouncingMusicNoteSpriteTemplate =
{
.tileTag = ANIM_TAG_MUSIC_NOTES,
.paletteTag = ANIM_TAG_MUSIC_NOTES,
@@ -141,11 +141,11 @@ const struct SpriteTemplate gUnknown_08593288 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8103498,
+ .callback = AnimBouncingMusicNote,
};
// Unused
-const struct SpriteTemplate gUnknown_085932A0 =
+static const struct SpriteTemplate sVibrateBattlerBackSpriteTemplate =
{
.tileTag = 0,
.paletteTag = 0,
@@ -153,11 +153,11 @@ const struct SpriteTemplate gUnknown_085932A0 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_810358C,
+ .callback = AnimVibrateBattlerBack,
};
// Unused
-const struct SpriteTemplate gUnknown_085932B8 =
+static const struct SpriteTemplate sMovingClampSpriteTemplate =
{
.tileTag = ANIM_TAG_CLAMP,
.paletteTag = ANIM_TAG_CLAMP,
@@ -165,10 +165,10 @@ const struct SpriteTemplate gUnknown_085932B8 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gAffineAnims_Bite,
- .callback = sub_8103620,
+ .callback = AnimMovingClamp,
};
-const union AnimCmd gUnknown_085932D0[] =
+static const union AnimCmd sAnim_SmallExplosion[] =
{
ANIMCMD_FRAME(0, 9),
ANIMCMD_FRAME(16, 3),
@@ -177,32 +177,32 @@ const union AnimCmd gUnknown_085932D0[] =
ANIMCMD_END,
};
-const union AnimCmd *const gUnknown_085932E4[] =
+static const union AnimCmd *const sAnims_SmallExplosion[] =
{
- gUnknown_085932D0,
+ sAnim_SmallExplosion,
};
-const union AffineAnimCmd gUnknown_085932E8[] =
+static const union AffineAnimCmd sAffineAnim_SmallExplosion[] =
{
AFFINEANIMCMD_FRAME(0x50, 0x50, 0, 0),
AFFINEANIMCMD_FRAME(0x9, 0x9, 0, 18),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd *const gUnknown_08593300[] =
+static const union AffineAnimCmd *const sAffineAnims_SmallExplosion[] =
{
- gUnknown_085932E8,
+ sAffineAnim_SmallExplosion,
};
// Unused
-const struct SpriteTemplate gUnknown_08593304 =
+static const struct SpriteTemplate sSmallExplosionSpriteTemplate =
{
.tileTag = ANIM_TAG_EXPLOSION_6,
.paletteTag = ANIM_TAG_EXPLOSION_6,
.oam = &gOamData_AffineNormal_ObjNormal_32x32,
- .anims = gUnknown_085932E4,
+ .anims = sAnims_SmallExplosion,
.images = NULL,
- .affineAnims = gUnknown_08593300,
+ .affineAnims = sAffineAnims_SmallExplosion,
.callback = AnimSpriteOnMonPos,
};
@@ -366,7 +366,7 @@ const struct SpriteTemplate gEggThrowSpriteTemplate =
};
// Unused
-const struct SpriteTemplate gUnknown_085934A0 =
+static const struct SpriteTemplate sVoidLinesSpriteTemplate =
{
.tileTag = ANIM_TAG_VOID_LINES,
.paletteTag = ANIM_TAG_VOID_LINES,
@@ -374,7 +374,7 @@ const struct SpriteTemplate gUnknown_085934A0 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8103FE8,
+ .callback = AnimVoidLines,
};
const union AnimCmd gCoinAnimCmds[] =
@@ -1096,7 +1096,7 @@ const struct SpriteTemplate gDevilSpriteTemplate =
.callback = AnimDevil,
};
-const union AnimCmd gUnknown_08593B08[] =
+static const union AnimCmd sAnim_FurySwipes[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(16, 4),
@@ -1105,7 +1105,7 @@ const union AnimCmd gUnknown_08593B08[] =
ANIMCMD_END,
};
-const union AnimCmd gUnknown_08593B1C[] =
+static const union AnimCmd sAnim_FurySwipes_Flipped[] =
{
ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
ANIMCMD_FRAME(16, 4, .hFlip = TRUE),
@@ -1114,10 +1114,10 @@ const union AnimCmd gUnknown_08593B1C[] =
ANIMCMD_END,
};
-const union AnimCmd *const gFurySwipesAnimTable[] =
+static const union AnimCmd *const sAnims_FurySwipes[] =
{
- gUnknown_08593B08,
- gUnknown_08593B1C,
+ sAnim_FurySwipes,
+ sAnim_FurySwipes_Flipped,
};
const struct SpriteTemplate gFurySwipesSpriteTemplate =
@@ -1125,7 +1125,7 @@ const struct SpriteTemplate gFurySwipesSpriteTemplate =
.tileTag = ANIM_TAG_SWIPE,
.paletteTag = ANIM_TAG_SWIPE,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
- .anims = gFurySwipesAnimTable,
+ .anims = sAnims_FurySwipes,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimFurySwipes,
@@ -1262,11 +1262,11 @@ const struct SpriteTemplate gGuardRingSpriteTemplate =
.callback = AnimGuardRing,
};
-static void sub_8103448(struct Sprite *sprite)
+static void AnimCirclingFinger(struct Sprite *sprite)
{
SetSpriteCoordsToAnimAttackerCoords(sprite);
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[1] = gBattleAnimArgs[2];
sprite->data[2] = gBattleAnimArgs[4];
sprite->data[3] = gBattleAnimArgs[5];
@@ -1276,7 +1276,7 @@ static void sub_8103448(struct Sprite *sprite)
sprite->callback(sprite);
}
-static void sub_8103498(struct Sprite *sprite)
+static void AnimBouncingMusicNote(struct Sprite *sprite)
{
u8 battler;
if (gBattleAnimArgs[0] == 0)
@@ -1287,20 +1287,20 @@ static void sub_8103498(struct Sprite *sprite)
SetSpriteNextToMonHead(battler, sprite);
sprite->data[0] = 0;
sprite->data[1] = 0;
- sprite->callback = sub_81034D8;
+ sprite->callback = AnimBouncingMusicNote_Step;
}
-static void sub_81034D8(struct Sprite *sprite)
+static void AnimBouncingMusicNote_Step(struct Sprite *sprite)
{
switch (sprite->data[0])
{
case 0:
- sprite->pos2.y -= 3;
+ sprite->y2 -= 3;
if (++sprite->data[1] == 6)
sprite->data[0]++;
break;
case 1:
- sprite->pos2.y += 3;
+ sprite->y2 += 3;
if (--sprite->data[1] == 0)
sprite->data[0]++;
break;
@@ -1311,60 +1311,60 @@ static void sub_81034D8(struct Sprite *sprite)
}
}
-static void sub_810353C(struct Sprite *sprite)
+static void AnimVibrateBattlerBack_Step(struct Sprite *sprite)
{
s16 temp;
- gSprites[sprite->data[2]].pos2.x += sprite->data[1];
+ gSprites[sprite->data[2]].x2 += sprite->data[1];
temp = sprite->data[1];
sprite->data[1] = -temp;
if (sprite->data[0] == 0)
{
- gSprites[sprite->data[2]].pos2.x = 0;
+ gSprites[sprite->data[2]].x2 = 0;
DestroySpriteAndMatrix(sprite);
}
sprite->data[0]--;
}
-static void sub_810358C(struct Sprite *sprite)
+static void AnimVibrateBattlerBack(struct Sprite *sprite)
{
u8 spriteId;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
spriteId = gBattlerSpriteIds[gBattleAnimTarget];
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
else
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[2] = spriteId;
- sprite->callback = sub_810353C;
+ sprite->callback = AnimVibrateBattlerBack_Step;
sprite->invisible = TRUE;
}
-static void sub_8103620(struct Sprite *sprite)
+static void AnimMovingClamp(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[4];
sprite->callback = WaitAnimForDuration;
- StoreSpriteCallbackInData6(sprite, sub_8103658);
+ StoreSpriteCallbackInData6(sprite, AnimMovingClamp_Step);
}
-static void sub_8103658(struct Sprite *sprite)
+static void AnimMovingClamp_Step(struct Sprite *sprite)
{
sprite->data[0] = sprite->data[1];
- sprite->data[2] = sprite->pos1.x;
- sprite->data[4] = sprite->pos1.y + 15;
+ sprite->data[2] = sprite->x;
+ sprite->data[4] = sprite->y + 15;
sprite->callback = StartAnimLinearTranslation;
- StoreSpriteCallbackInData6(sprite, sub_8103680);
+ StoreSpriteCallbackInData6(sprite, AnimMovingClamp_End);
}
-static void sub_8103680(struct Sprite *sprite)
+static void AnimMovingClamp_End(struct Sprite *sprite)
{
if (sprite->data[5] == 0)
DestroyAnimSprite(sprite);
@@ -1394,7 +1394,7 @@ static void AnimTask_Withdraw_Step(u8 taskId)
{
gTasks[taskId].data[0] += 0xB0;
// this y position update gets overwritten by SetBattlerSpriteYOffsetFromRotation()
- gSprites[spriteId].pos2.y++;
+ gSprites[spriteId].y2++;
}
else if (gTasks[taskId].data[1] == 1)
{
@@ -1407,7 +1407,7 @@ static void AnimTask_Withdraw_Step(u8 taskId)
{
gTasks[taskId].data[0] -= 0xB0;
// this y position update gets overwritten by SetBattlerSpriteYOffsetFromRotation()
- gSprites[spriteId].pos2.y--;
+ gSprites[spriteId].y2--;
}
SetBattlerSpriteYOffsetFromRotation(spriteId);
@@ -1433,11 +1433,11 @@ static void AnimKinesisZapEnergy(struct Sprite *sprite)
{
SetSpriteCoordsToAnimAttackerCoords(sprite);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
else
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
sprite->hFlip = 1;
@@ -1467,8 +1467,8 @@ static void AnimSwordsDanceBlade(struct Sprite *sprite)
static void AnimSwordsDanceBlade_Step(struct Sprite *sprite)
{
sprite->data[0] = 6;
- sprite->data[2] = sprite->pos1.x;
- sprite->data[4] = sprite->pos1.y - 32;
+ sprite->data[2] = sprite->x;
+ sprite->data[4] = sprite->y - 32;
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
@@ -1500,7 +1500,7 @@ static void AnimSonicBoomProjectile(struct Sprite *sprite)
InitSpritePosToAnimAttacker(sprite, TRUE);
targetXPos = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
targetYPos = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
- rotation = ArcTan2Neg(targetXPos - sprite->pos1.x, targetYPos - sprite->pos1.y);
+ rotation = ArcTan2Neg(targetXPos - sprite->x, targetYPos - sprite->y);
rotation += 0xF000;
if (IsContest())
rotation -= 0x6000;
@@ -1539,14 +1539,14 @@ static void AnimAirWaveProjectile_Step1(struct Sprite *sprite)
sprite->data[1] += sprite->data[5];
sprite->data[2] += sprite->data[6];
if (1 & task->data[7])
- sprite->pos2.x = ((u16)sprite->data[1] >> 8) * -1;
+ sprite->x2 = ((u16)sprite->data[1] >> 8) * -1;
else
- sprite->pos2.x = (u16)sprite->data[1] >> 8;
+ sprite->x2 = (u16)sprite->data[1] >> 8;
if (1 & task->data[8])
- sprite->pos2.y = ((u16)sprite->data[2] / 256u) * -1;
+ sprite->y2 = ((u16)sprite->data[2] / 256u) * -1;
else
- sprite->pos2.y = (u16)sprite->data[2] / 256u;
+ sprite->y2 = (u16)sprite->data[2] / 256u;
if (sprite->data[0]-- <= 0)
{
@@ -1565,33 +1565,33 @@ static void AnimAirWaveProjectile(struct Sprite *sprite)
sprite->data[1] += (-2 & task->data[7]);
sprite->data[2] += (-2 & task->data[8]);
if (1 & task->data[7])
- sprite->pos2.x = ((u16)sprite->data[1] >> 8) * -1;
+ sprite->x2 = ((u16)sprite->data[1] >> 8) * -1;
else
- sprite->pos2.x = (u16)sprite->data[1] >> 8;
+ sprite->x2 = (u16)sprite->data[1] >> 8;
if (1 & task->data[8])
- sprite->pos2.y = ((u16)sprite->data[2] / 256u) * -1;
+ sprite->y2 = ((u16)sprite->data[2] / 256u) * -1;
else
- sprite->pos2.y = (u16)sprite->data[2] / 256u;
+ sprite->y2 = (u16)sprite->data[2] / 256u;
if (sprite->data[0]-- <= 0)
{
sprite->data[0] = 8;
task->data[5] = 4;
a = MathUtil_Inv16(Q_8_8(16));
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
- if (task->data[11] >= sprite->pos1.x)
- b = (task->data[11] - sprite->pos1.x) << 8;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
+ if (task->data[11] >= sprite->x)
+ b = (task->data[11] - sprite->x) << 8;
else
- b = (sprite->pos1.x - task->data[11]) << 8;
+ b = (sprite->x - task->data[11]) << 8;
- if (task->data[12] >= sprite->pos1.y)
- c = (task->data[12] - sprite->pos1.y) << 8;
+ if (task->data[12] >= sprite->y)
+ c = (task->data[12] - sprite->y) << 8;
else
- c = (sprite->pos1.y - task->data[12]) << 8;
+ c = (sprite->y - task->data[12]) << 8;
sprite->data[2] = 0;
sprite->data[1] = 0;
@@ -1738,14 +1738,14 @@ void AnimTask_AirCutterProjectile(u8 taskId)
gTasks[taskId].func = AirCutterProjectileStep1;
}
-static void sub_8103FE8(struct Sprite *sprite)
+static void AnimVoidLines(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, FALSE);
- sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(gUnknown_085934A0.paletteTag) << 4);
- sprite->callback = sub_8104018;
+ sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(sVoidLinesSpriteTemplate.paletteTag) << 4);
+ sprite->callback = AnimVoidLines_Step;
}
-static void sub_8104018(struct Sprite *sprite)
+static void AnimVoidLines_Step(struct Sprite *sprite)
{
u16 id, val;
int i;
@@ -1778,7 +1778,7 @@ static void AnimCoinThrow(struct Sprite *sprite)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
r6 += gBattleAnimArgs[2];
- var = ArcTan2Neg(r6 - sprite->pos1.x, r7 - sprite->pos1.y);
+ var = ArcTan2Neg(r6 - sprite->x, r7 - sprite->y);
var += 0xC000;
TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, var);
sprite->data[0] = gBattleAnimArgs[4];
@@ -1791,18 +1791,18 @@ static void AnimCoinThrow(struct Sprite *sprite)
static void AnimFallingCoin(struct Sprite *sprite)
{
sprite->data[2] = -16;
- sprite->pos1.y += 8;
+ sprite->y += 8;
sprite->callback = AnimFallingCoin_Step;
}
static void AnimFallingCoin_Step(struct Sprite *sprite)
{
sprite->data[0] += 0x80;
- sprite->pos2.x = sprite->data[0] >> 8;
+ sprite->x2 = sprite->data[0] >> 8;
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- sprite->pos2.x = -sprite->pos2.x;
+ sprite->x2 = -sprite->x2;
- sprite->pos2.y = Sin(sprite->data[1], sprite->data[2]);
+ sprite->y2 = Sin(sprite->data[1], sprite->data[2]);
sprite->data[1] += 5;
if (sprite->data[1] > 126)
{
@@ -1830,10 +1830,10 @@ static void AnimBulletSeed_Step1(struct Sprite *sprite)
u16 rand;
s16* ptr;
PlaySE12WithPanning(SE_M_HORN_ATTACK, BattleAnimAdjustPanning(63));
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
ptr = &sprite->data[7];
for (i = 0; i < 8; i++)
ptr[i - 7] = 0;
@@ -1849,11 +1849,11 @@ static void AnimBulletSeed_Step1(struct Sprite *sprite)
static void AnimBulletSeed_Step2(struct Sprite *sprite)
{
sprite->data[0] += sprite->data[7];
- sprite->pos2.x = sprite->data[0] >> 8;
+ sprite->x2 = sprite->data[0] >> 8;
if (sprite->data[7] & 1)
- sprite->pos2.x = -sprite->pos2.x;
+ sprite->x2 = -sprite->x2;
- sprite->pos2.y = Sin(sprite->data[1], sprite->data[6]);
+ sprite->y2 = Sin(sprite->data[1], sprite->data[6]);
sprite->data[1] += 8;
if (sprite->data[1] > 126)
{
@@ -1876,7 +1876,7 @@ static void AnimRazorWindTornado(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, FALSE);
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- sprite->pos1.y += 16;
+ sprite->y += 16;
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[1] = gBattleAnimArgs[2];
@@ -1905,8 +1905,8 @@ static void AnimViceGripPincer(struct Sprite *sprite)
StartSpriteAnim(sprite, 1);
}
- sprite->pos1.x += startXOffset;
- sprite->pos1.y += startYOffset;
+ sprite->x += startXOffset;
+ sprite->y += startYOffset;
sprite->data[0] = 6;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + endXOffset;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + endYOffset;
@@ -1937,12 +1937,12 @@ static void AnimGuillotinePincer(struct Sprite *sprite)
StartSpriteAnim(sprite, gBattleAnimArgs[0]);
}
- sprite->pos1.x += startXOffset;
- sprite->pos1.y += startYOffset;
+ sprite->x += startXOffset;
+ sprite->y += startYOffset;
sprite->data[0] = 6;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + endXOffset;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + endYOffset;
InitAnimLinearTranslation(sprite);
sprite->data[5] = gBattleAnimArgs[0];
@@ -1956,10 +1956,10 @@ static void AnimGuillotinePincer_Step1(struct Sprite *sprite)
{
SeekSpriteAnim(sprite, 0);
sprite->animPaused = 1;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 2;
- sprite->pos2.y = -2;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 2;
+ sprite->y2 = -2;
sprite->data[0] = sprite->data[6];
sprite->data[1] ^= 1;
sprite->data[2] ^= 1;
@@ -1973,15 +1973,15 @@ static void AnimGuillotinePincer_Step2(struct Sprite *sprite)
{
if (sprite->data[3])
{
- sprite->pos2.x = -sprite->pos2.x;
- sprite->pos2.y = -sprite->pos2.y;
+ sprite->x2 = -sprite->x2;
+ sprite->y2 = -sprite->y2;
}
sprite->data[3] ^= 1;
if (++sprite->data[4] == 51)
{
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[4] = 0;
sprite->data[3] = 0;
sprite->animPaused = 0;
@@ -1996,26 +1996,26 @@ static void AnimGuillotinePincer_Step3(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
-// Scales up the target mon sprite, and sets the palette to greyscale.
+// Scales up the target mon sprite, and sets the palette to grayscale.
// Used in MOVE_DISABLE.
// No args.
-void AnimTask_GrowAndGreyscale(u8 taskId)
+void AnimTask_GrowAndGrayscale(u8 taskId)
{
u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_BLEND);
SetSpriteRotScale(spriteId, 0xD0, 0xD0, 0);
- SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, FALSE);
+ SetGrayscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, FALSE);
gTasks[taskId].data[0] = 80;
- gTasks[taskId].func = AnimTask_GrowAndGreyscale_Step;
+ gTasks[taskId].func = AnimTask_GrowAndGrayscale_Step;
}
-static void AnimTask_GrowAndGreyscale_Step(u8 taskId)
+static void AnimTask_GrowAndGrayscale_Step(u8 taskId)
{
if (--gTasks[taskId].data[0] == -1)
{
u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
ResetSpriteRotScale(spriteId);
- SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, TRUE);
+ SetGrayscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, TRUE);
DestroyAnimVisualTask(taskId);
}
}
@@ -2099,7 +2099,7 @@ static void AnimTask_Minimize_Step(u8 taskId)
break;
case 5:
ResetSpriteRotScale(task->data[0]);
- gSprites[task->data[15]].pos2.y = 0;
+ gSprites[task->data[15]].y2 = 0;
DestroyAnimVisualTask(taskId);
break;
}
@@ -2176,7 +2176,7 @@ static void AnimTask_Splash_Step(u8 taskId)
case 0:
RunAffineAnimFromTaskData(task);
task->data[4] += 3;
- gSprites[task->data[0]].pos2.y += task->data[4];
+ gSprites[task->data[0]].y2 += task->data[4];
if (++task->data[3] > 7)
{
task->data[3] = 0;
@@ -2185,7 +2185,7 @@ static void AnimTask_Splash_Step(u8 taskId)
break;
case 1:
RunAffineAnimFromTaskData(task);
- gSprites[task->data[0]].pos2.y += task->data[4];
+ gSprites[task->data[0]].y2 += task->data[4];
if (++task->data[3] > 7)
{
task->data[3] = 0;
@@ -2195,7 +2195,7 @@ static void AnimTask_Splash_Step(u8 taskId)
case 2:
if (task->data[4] != 0)
{
- gSprites[task->data[0]].pos2.y -= 2;
+ gSprites[task->data[0]].y2 -= 2;
task->data[4] -= 2;
}
else
@@ -2206,7 +2206,7 @@ static void AnimTask_Splash_Step(u8 taskId)
{
if (--task->data[2] == 0)
{
- gSprites[task->data[0]].pos2.y = 0;
+ gSprites[task->data[0]].y2 = 0;
DestroyAnimVisualTask(taskId);
}
else
@@ -2245,17 +2245,17 @@ static void AnimBreathPuff(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
StartSpriteAnim(sprite, 0);
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + 32;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + 32;
sprite->data[1] = 64;
}
else
{
StartSpriteAnim(sprite, 1);
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - 32;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - 32;
sprite->data[1] = -64;
}
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
sprite->data[0] = 52;
sprite->data[2] = 0;
sprite->data[3] = 0;
@@ -2279,10 +2279,10 @@ static void AnimAngerMark(struct Sprite *sprite)
if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
gBattleAnimArgs[1] *= -1;
- sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2];
- if (sprite->pos1.y < 8)
- sprite->pos1.y = 8;
+ sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2];
+ if (sprite->y < 8)
+ sprite->y = 8;
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
@@ -2315,8 +2315,8 @@ void AnimTask_ThrashMoveMonVertical(u8 taskId)
task->data[2] = 4;
task->data[3] = 7;
task->data[4] = 3;
- task->data[5] = gSprites[task->data[0]].pos1.x;
- task->data[6] = gSprites[task->data[0]].pos1.y;
+ task->data[5] = gSprites[task->data[0]].x;
+ task->data[6] = gSprites[task->data[0]].y;
task->data[7] = 0;
task->data[8] = 0;
task->data[9] = 2;
@@ -2334,14 +2334,14 @@ static void AnimTask_ThrashMoveMonVertical_Step(u8 taskId)
task->data[7] = 0;
task->data[8]++;
if (task->data[8] & 1)
- gSprites[task->data[0]].pos1.y += task->data[9];
+ gSprites[task->data[0]].y += task->data[9];
else
- gSprites[task->data[0]].pos1.y -= task->data[9];
+ gSprites[task->data[0]].y -= task->data[9];
}
switch (task->data[1])
{
case 0:
- gSprites[task->data[0]].pos1.x += task->data[2];
+ gSprites[task->data[0]].x += task->data[2];
if (--task->data[3] == 0)
{
task->data[3] = 14;
@@ -2349,7 +2349,7 @@ static void AnimTask_ThrashMoveMonVertical_Step(u8 taskId)
}
break;
case 1:
- gSprites[task->data[0]].pos1.x -= task->data[2];
+ gSprites[task->data[0]].x -= task->data[2];
if (--task->data[3] == 0)
{
task->data[3] = 7;
@@ -2357,7 +2357,7 @@ static void AnimTask_ThrashMoveMonVertical_Step(u8 taskId)
}
break;
case 2:
- gSprites[task->data[0]].pos1.x += task->data[2];
+ gSprites[task->data[0]].x += task->data[2];
if (--task->data[3] == 0)
{
if (--task->data[4] != 0)
@@ -2368,7 +2368,7 @@ static void AnimTask_ThrashMoveMonVertical_Step(u8 taskId)
else
{
if ((task->data[8] & 1) != 0)
- gSprites[task->data[0]].pos1.y -= task->data[9];
+ gSprites[task->data[0]].y -= task->data[9];
DestroyAnimVisualTask(taskId);
}
@@ -2467,8 +2467,8 @@ static void AnimTask_SketchDrawMon_Step(u8 taskId)
static void AnimPencil(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) - 16;
- sprite->pos1.y = GetBattlerYCoordWithElevation(gBattleAnimTarget) + 16;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) - 16;
+ sprite->y = GetBattlerYCoordWithElevation(gBattleAnimTarget) + 16;
sprite->data[0] = 0;
sprite->data[1] = 0;
sprite->data[2] = 0;
@@ -2499,7 +2499,7 @@ static void AnimPencil_Step(struct Sprite *sprite)
if (++sprite->data[1] > 3 && sprite->data[2] < sprite->data[5])
{
sprite->data[1] = 0;
- sprite->pos1.y -= 1;
+ sprite->y -= 1;
sprite->data[2]++;
if (sprite->data[2] % 10 == 0)
PlaySE12WithPanning(SE_M_SKETCH, sprite->data[6]);
@@ -2515,7 +2515,7 @@ static void AnimPencil_Step(struct Sprite *sprite)
sprite->data[4] = -0x40 - sprite->data[4];
sprite->data[3] *= -1;
}
- sprite->pos2.x = sprite->data[4];
+ sprite->x2 = sprite->data[4];
if (sprite->data[5] == sprite->data[2])
{
sprite->data[1] = 0;
@@ -2624,7 +2624,7 @@ static void AnimHyperVoiceRing(struct Sprite *sprite)
r9 = GetBattlerSpriteCoord(battler1, r10) - gBattleAnimArgs[0];
if (!IsContest() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler1)))
{
- if (gSprites[gBattlerSpriteIds[battler1]].pos1.x < gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler1)]].pos1.x)
+ if (gSprites[gBattlerSpriteIds[battler1]].x < gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler1)]].x)
sprite->subpriority = gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler1)]].subpriority + 1;
else
sprite->subpriority = gSprites[gBattlerSpriteIds[battler1]].subpriority - 1;
@@ -2653,8 +2653,8 @@ static void AnimHyperVoiceRing(struct Sprite *sprite)
sp0 -= gBattleAnimArgs[3];
sp1 += gBattleAnimArgs[4];
- sprite->pos1.x = sprite->data[1] = r9;
- sprite->pos1.y = sprite->data[3] = r6;
+ sprite->x = sprite->data[1] = r9;
+ sprite->y = sprite->data[3] = r6;
sprite->data[2] = sp0;
sprite->data[4] = sp1;
sprite->data[0] = gBattleAnimArgs[0];
@@ -2690,17 +2690,17 @@ static void AnimSoftBoiledEgg(struct Sprite *sprite)
static void AnimSoftBoiledEgg_Step1(struct Sprite *sprite)
{
s16 add;
- sprite->pos2.y -= (sprite->data[0] >> 8);
- sprite->pos2.x = sprite->data[1] >> 8;
+ sprite->y2 -= (sprite->data[0] >> 8);
+ sprite->x2 = sprite->data[1] >> 8;
sprite->data[0] -= 32;
add = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? -160 : 160;
sprite->data[1] += add;
- if (sprite->pos2.y > 0)
+ if (sprite->y2 > 0)
{
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->y += sprite->y2;
+ sprite->x += sprite->x2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[0] = 0;
StartSpriteAffineAnim(sprite, 1);
sprite->callback = AnimSoftBoiledEgg_Step2;
@@ -2737,7 +2737,7 @@ static void AnimSoftBoiledEgg_Step3(struct Sprite *sprite)
static void AnimSoftBoiledEgg_Step3_Callback1(struct Sprite *sprite)
{
- sprite->pos2.y -= 2;
+ sprite->y2 -= 2;
if (++sprite->data[0] == 9)
{
sprite->data[0] = 16;
@@ -2793,7 +2793,7 @@ static void AnimTask_AttackerStretchAndDisappear_Step(u8 taskId)
struct Task* task = &gTasks[taskId];
if (!RunAffineAnimFromTaskData(task))
{
- gSprites[task->data[0]].pos2.y = 0;
+ gSprites[task->data[0]].y2 = 0;
gSprites[task->data[0]].invisible = TRUE;
DestroyAnimVisualTask(taskId);
}
@@ -2829,7 +2829,7 @@ static void AnimTask_ExtremeSpeedImpact_Step(u8 taskId)
switch (task->data[0])
{
case 0:
- gSprites[task->data[15]].pos2.x += task->data[14];
+ gSprites[task->data[15]].x2 += task->data[14];
task->data[1] = 0;
task->data[2] = 0;
task->data[3] = 0;
@@ -2841,14 +2841,14 @@ static void AnimTask_ExtremeSpeedImpact_Step(u8 taskId)
task->data[1] = 0;
task->data[2]++;
if (task->data[2] & 1)
- gSprites[task->data[15]].pos2.x += 6;
+ gSprites[task->data[15]].x2 += 6;
else
- gSprites[task->data[15]].pos2.x -= 6;
+ gSprites[task->data[15]].x2 -= 6;
if (++task->data[3] > 4)
{
if (task->data[2] & 1)
- gSprites[task->data[15]].pos2.x -= 6;
+ gSprites[task->data[15]].x2 -= 6;
task->data[0]++;
}
@@ -2861,8 +2861,8 @@ static void AnimTask_ExtremeSpeedImpact_Step(u8 taskId)
task->data[0]++;
break;
case 3:
- gSprites[task->data[15]].pos2.x += task->data[13];
- if (gSprites[task->data[15]].pos2.x == 0)
+ gSprites[task->data[15]].x2 += task->data[13];
+ if (gSprites[task->data[15]].x2 == 0)
DestroyAnimVisualTask(taskId);
break;
}
@@ -2975,8 +2975,8 @@ static void AnimTask_SpeedDust_Step(u8 taskId)
{
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].data[1] = 13;
- gSprites[spriteId].pos2.x = gSpeedDustPosTable[task->data[2]][0];
- gSprites[spriteId].pos2.y = gSpeedDustPosTable[task->data[2]][1];
+ gSprites[spriteId].x2 = gSpeedDustPosTable[task->data[2]][0];
+ gSprites[spriteId].y2 = gSpeedDustPosTable[task->data[2]][1];
task->data[13]++;
if (++task->data[2] > 3)
{
@@ -3059,8 +3059,8 @@ static void AnimMagentaHeart(struct Sprite *sprite)
if (++sprite->data[0] == 1)
InitSpritePosToAnimAttacker(sprite, FALSE);
- sprite->pos2.x = Sin(sprite->data[1], 8);
- sprite->pos2.y = sprite->data[2] >> 8;
+ sprite->x2 = Sin(sprite->data[1], 8);
+ sprite->y2 = sprite->data[2] >> 8;
sprite->data[1] = (sprite->data[1] + 7) & 0xFF;
sprite->data[2] -= 0x80;
if (sprite->data[0] == 60)
@@ -3069,17 +3069,17 @@ static void AnimMagentaHeart(struct Sprite *sprite)
void AnimTask_FakeOut(u8 taskId)
{
- u16 win0h = IsContest() ? 0x98 : 0xF0;
+ u16 win0h = IsContest() ? 152 : DISPLAY_WIDTH;
u16 win0v = 0;
gBattle_WIN0H = win0h;
- gBattle_WIN0V = 0xA0;
+ gBattle_WIN0V = DISPLAY_HEIGHT;
SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H);
SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V);
- SetGpuReg(REG_OFFSET_WININ, 0x3F1F);
- SetGpuReg(REG_OFFSET_WINOUT, 0x3F3F);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN1_ALL);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_ALL | WINOUT_WINOBJ_ALL);
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_DARKEN);
- SetGpuReg(REG_OFFSET_BLDY, 0x10);
+ SetGpuReg(REG_OFFSET_BLDY, 16);
gTasks[taskId].data[0] = win0v;
gTasks[taskId].data[1] = win0h;
gTasks[taskId].func = AnimTask_FakeOut_Step1;
@@ -3096,7 +3096,7 @@ static void AnimTask_FakeOut_Step1(u8 taskId)
}
else
{
- gBattle_WIN0H = gTasks[taskId].data[1] | (gTasks[taskId].data[0] << 8);
+ gBattle_WIN0H = WIN_RANGE(gTasks[taskId].data[0], gTasks[taskId].data[1]);
}
}
@@ -3126,15 +3126,15 @@ void AnimTask_StretchTargetUp(u8 taskId)
if (++gTasks[taskId].data[0] == 1)
{
PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_TARGET), sAffineAnims_StretchBattlerUp);
- gSprites[spriteId].pos2.x = 4;
+ gSprites[spriteId].x2 = 4;
}
else
{
- gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
+ gSprites[spriteId].x2 = -gSprites[spriteId].x2;
if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
{
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].x2 = 0;
+ gSprites[spriteId].y2 = 0;
DestroyAnimVisualTask(taskId);
}
}
@@ -3146,15 +3146,15 @@ void AnimTask_StretchAttackerUp(u8 taskId)
if (++gTasks[taskId].data[0] == 1)
{
PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), sAffineAnims_StretchBattlerUp);
- gSprites[spriteId].pos2.x = 4;
+ gSprites[spriteId].x2 = 4;
}
else
{
- gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
+ gSprites[spriteId].x2 = -gSprites[spriteId].x2;
if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
{
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].x2 = 0;
+ gSprites[spriteId].y2 = 0;
DestroyAnimVisualTask(taskId);
}
}
@@ -3164,9 +3164,9 @@ static void AnimRedHeartProjectile(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = 95;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
InitAnimLinearTranslation(sprite);
sprite->callback = AnimRedHeartProjectile_Step;
@@ -3176,7 +3176,7 @@ static void AnimRedHeartProjectile_Step(struct Sprite *sprite)
{
if (!AnimTranslateLinear(sprite))
{
- sprite->pos2.y += Sin(sprite->data[5], 14);
+ sprite->y2 += Sin(sprite->data[5], 14);
sprite->data[5] = (sprite->data[5] + 4) & 0xFF;
}
else
@@ -3196,8 +3196,8 @@ void AnimParticleBurst(struct Sprite *sprite)
else
{
sprite->data[4] += sprite->data[1];
- sprite->pos2.x = sprite->data[4] >> 8;
- sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]);
+ sprite->x2 = sprite->data[4] >> 8;
+ sprite->y2 = Sin(sprite->data[3], sprite->data[2]);
sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
if (sprite->data[3] > 100)
sprite->invisible = sprite->data[3] % 2;
@@ -3209,8 +3209,8 @@ void AnimParticleBurst(struct Sprite *sprite)
static void AnimRedHeartRising(struct Sprite *sprite)
{
- sprite->pos1.x = gBattleAnimArgs[0];
- sprite->pos1.y = 160;
+ sprite->x = gBattleAnimArgs[0];
+ sprite->y = DISPLAY_HEIGHT;
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[1];
sprite->callback = WaitAnimForDuration;
@@ -3221,10 +3221,10 @@ static void AnimRedHeartRising_Step(struct Sprite *sprite)
{
s16 y;
sprite->data[2] += sprite->data[1];
- sprite->pos2.y = -((u16)sprite->data[2] >> 8);
- sprite->pos2.x = Sin(sprite->data[3], 4);
+ sprite->y2 = -((u16)sprite->data[2] >> 8);
+ sprite->x2 = Sin(sprite->data[3], 4);
sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
- y = sprite->pos1.y + sprite->pos2.y;
+ y = sprite->y + sprite->y2;
if (y <= 72)
{
sprite->invisible = sprite->data[3] % 2;
@@ -3402,8 +3402,8 @@ static void AnimTask_ScaryFace_Step(u8 taskId)
// arg 1: initial wave offset
static void AnimOrbitFast(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->affineAnimPaused = 1;
sprite->data[0] = gBattleAnimArgs[0];
sprite->data[1] = gBattleAnimArgs[1];
@@ -3419,8 +3419,8 @@ static void AnimOrbitFast_Step(struct Sprite *sprite)
else
sprite->subpriority = sprite->data[7] - 1;
- sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8);
- sprite->pos2.y = Cos(sprite->data[1], sprite->data[3] >> 8);
+ sprite->x2 = Sin(sprite->data[1], sprite->data[2] >> 8);
+ sprite->y2 = Cos(sprite->data[1], sprite->data[3] >> 8);
sprite->data[1] = (sprite->data[1] + 9) & 0xFF;
switch (sprite->data[5])
{
@@ -3453,8 +3453,8 @@ static void AnimOrbitFast_Step(struct Sprite *sprite)
// arg 0: initial wave offset
static void AnimOrbitScatter(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->data[0] = Sin(gBattleAnimArgs[0], 10);
sprite->data[1] = Cos(gBattleAnimArgs[0], 7);
sprite->callback = AnimOrbitScatter_Step;
@@ -3462,24 +3462,25 @@ static void AnimOrbitScatter(struct Sprite *sprite)
static void AnimOrbitScatter_Step(struct Sprite *sprite)
{
- sprite->pos2.x += sprite->data[0];
- sprite->pos2.y += sprite->data[1];
- if (sprite->pos1.x + sprite->pos2.x + 16 > 272u || sprite->pos1.y + sprite->pos2.y > 160 || sprite->pos1.y + sprite->pos2.y < -16)
+ sprite->x2 += sprite->data[0];
+ sprite->y2 += sprite->data[1];
+ if (sprite->x + sprite->x2 + 16 > ((u32)DISPLAY_WIDTH + 32)
+ || sprite->y + sprite->y2 > DISPLAY_HEIGHT || sprite->y + sprite->y2 < -16)
DestroyAnimSprite(sprite);
}
static void AnimSpitUpOrb_Step(struct Sprite *sprite)
{
- sprite->pos2.x += sprite->data[0];
- sprite->pos2.y += sprite->data[1];
+ sprite->x2 += sprite->data[0];
+ sprite->y2 += sprite->data[1];
if (sprite->data[3]++ >= sprite->data[2])
DestroyAnimSprite(sprite);
}
static void AnimSpitUpOrb(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->data[0] = Sin(gBattleAnimArgs[0], 10);
sprite->data[1] = Cos(gBattleAnimArgs[0], 7);
sprite->data[2] = gBattleAnimArgs[1];
@@ -3503,20 +3504,20 @@ static void AnimAngel(struct Sprite *sprite)
s16 var0;
if (!sprite->data[0])
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
}
sprite->data[0]++;
var0 = (sprite->data[0] * 10) & 0xFF;
- sprite->pos2.x = Sin(var0, 80) >> 8;
+ sprite->x2 = Sin(var0, 80) >> 8;
if (sprite->data[0] < 80)
- sprite->pos2.y = (sprite->data[0] / 2) + (Cos(var0, 80) >> 8);
+ sprite->y2 = (sprite->data[0] / 2) + (Cos(var0, 80) >> 8);
if (sprite->data[0] > 90)
{
sprite->data[2]++;
- sprite->pos2.x -= sprite->data[2] / 2;
+ sprite->x2 -= sprite->data[2] / 2;
}
if (sprite->data[0] > 100)
@@ -3526,8 +3527,8 @@ static void AnimAngel(struct Sprite *sprite)
static void AnimPinkHeart_Step(struct Sprite *sprite)
{
sprite->data[5]++;
- sprite->pos2.x = Sin(sprite->data[3], 5);
- sprite->pos2.y = sprite->data[5] / 2;
+ sprite->x2 = Sin(sprite->data[3], 5);
+ sprite->y2 = sprite->data[5] / 2;
sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
if (sprite->data[5] > 20)
sprite->invisible = sprite->data[5] % 2;
@@ -3547,16 +3548,16 @@ static void AnimPinkHeart(struct Sprite *sprite)
else
{
sprite->data[4] += sprite->data[1];
- sprite->pos2.x = sprite->data[4] >> 8;
- sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]);
+ sprite->x2 = sprite->data[4] >> 8;
+ sprite->y2 = Sin(sprite->data[3], sprite->data[2]);
sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
if (sprite->data[3] > 70)
{
sprite->callback = AnimPinkHeart_Step;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[3] = Random2() % 180;
}
}
@@ -3566,8 +3567,8 @@ static void AnimDevil(struct Sprite *sprite)
{
if (sprite->data[3] == 0)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
StartSpriteAnim(sprite, 0);
sprite->subpriority = GetBattlerSpriteSubpriority(gBattleAnimTarget) - 1;
sprite->data[2] = 1;
@@ -3576,8 +3577,8 @@ static void AnimDevil(struct Sprite *sprite)
sprite->data[1] = (sprite->data[0] * 4) % 256;
if (sprite->data[1] < 0)
sprite->data[1] = 0;
- sprite->pos2.x = Cos(sprite->data[1], 30 - sprite->data[0] / 4);
- sprite->pos2.y = Sin(sprite->data[1], 10 - sprite->data[0] / 8);
+ sprite->x2 = Cos(sprite->data[1], 30 - sprite->data[0] / 4);
+ sprite->y2 = Sin(sprite->data[1], 10 - sprite->data[0] / 8);
if (sprite->data[1] > 128 && sprite->data[2] > 0)
sprite->data[2] = -1;
if (sprite->data[1] == 0 && sprite->data[2] < 0)
@@ -3595,8 +3596,8 @@ static void AnimFurySwipes(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
sprite->data[0]++;
}
@@ -3616,19 +3617,19 @@ static void AnimMovementWaves(struct Sprite *sprite)
{
if (!gBattleAnimArgs[0])
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
}
if (!gBattleAnimArgs[1])
- sprite->pos1.x += 32;
+ sprite->x += 32;
else
- sprite->pos1.x -= 32;
+ sprite->x -= 32;
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[1];
@@ -3670,11 +3671,11 @@ static void AnimJaggedMusicNote(struct Sprite *sprite)
if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
gBattleAnimArgs[1] *= -1;
- sprite->pos1.x = GetBattlerSpriteCoord(battler, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(battler, 3) + gBattleAnimArgs[2];
+ sprite->x = GetBattlerSpriteCoord(battler, 2) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(battler, 3) + gBattleAnimArgs[2];
sprite->data[0] = 0;
- sprite->data[1] = (u16)sprite->pos1.x << 3;
- sprite->data[2] = (u16)sprite->pos1.y << 3;
+ sprite->data[1] = (u16)sprite->x << 3;
+ sprite->data[2] = (u16)sprite->y << 3;
var1 = gBattleAnimArgs[1] << 3;
if (var1 < 0)
@@ -3694,8 +3695,8 @@ static void AnimJaggedMusicNote_Step(struct Sprite *sprite)
{
sprite->data[1] += sprite->data[3];
sprite->data[2] += sprite->data[4];
- sprite->pos1.x = sprite->data[1] >> 3;
- sprite->pos1.y = sprite->data[2] >> 3;
+ sprite->x = sprite->data[1] >> 3;
+ sprite->y = sprite->data[2] >> 3;
if (++sprite->data[0] > 16)
DestroyAnimSprite(sprite);
}
@@ -3709,7 +3710,7 @@ static void AnimPerishSongMusicNote2(struct Sprite *sprite)
}
if (++sprite->data[0] == sprite->data[1])
- SetGreyscaleOrOriginalPalette(sprite->oam.paletteNum + 16, 0);
+ SetGrayscaleOrOriginalPalette(sprite->oam.paletteNum + 16, 0);
if (sprite->data[0] == sprite->data[1] + 80)
DestroyAnimSprite(sprite);
@@ -3722,8 +3723,8 @@ static void AnimPerishSongMusicNote(struct Sprite *sprite)
if (!sprite->data[0])
{
- sprite->pos1.x = 120;
- sprite->pos1.y = (gBattleAnimArgs[0] + (((u16)gBattleAnimArgs[0]) >> 31)) / 2 - 15;
+ sprite->x = 120;
+ sprite->y = (gBattleAnimArgs[0] + (((u16)gBattleAnimArgs[0]) >> 31)) / 2 - 15;
StartSpriteAnim(sprite, gBattleAnimArgs[1]);
@@ -3739,9 +3740,9 @@ static void AnimPerishSongMusicNote(struct Sprite *sprite)
sprite->data[6] = (sprite->data[6] + 10) & 0xFF;
index &= var2;
- sprite->pos2.x = Cos(index, 100);
+ sprite->x2 = Cos(index, 100);
- sprite->pos2.y = sprite->data[1] + Sin(index, 10) + Cos(sprite->data[6], 4);
+ sprite->y2 = sprite->data[1] + Sin(index, 10) + Cos(sprite->data[6], 4);
if (sprite->data[0] > sprite->data[5])
{
@@ -3769,7 +3770,7 @@ static void AnimPerishSongMusicNote_Step1(struct Sprite *sprite)
static void AnimPerishSongMusicNote_Step2(struct Sprite *sprite)
{
sprite->data[3] += sprite->data[2];
- sprite->pos2.y = sprite->data[3];
+ sprite->y2 = sprite->data[3];
sprite->data[2]++;
@@ -3796,20 +3797,20 @@ static void AnimGuardRing(struct Sprite *sprite)
{
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker)))
{
- SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->pos1.x, &sprite->pos1.y);
- sprite->pos1.y += 40;
+ SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->x, &sprite->y);
+ sprite->y += 40;
StartSpriteAffineAnim(sprite, 1);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 40;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 40;
}
sprite->data[0] = 13;
- sprite->data[2] = sprite->pos1.x;
- sprite->data[4] = sprite->pos1.y - 72;
+ sprite->data[2] = sprite->x;
+ sprite->data[4] = sprite->y - 72;
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c
index 81ba475f9..f5c2c7ee6 100755
--- a/src/battle_anim_effects_3.c
+++ b/src/battle_anim_effects_3.c
@@ -91,7 +91,7 @@ static void AnimMeteorMashStar(struct Sprite *);
static void AnimMeteorMashStar_Step(struct Sprite *sprite);
static void AnimBlockX(struct Sprite *);
static void AnimBlockX_Step(struct Sprite *);
-static void sub_815FE80(struct Sprite *);
+static void AnimUnusedItemBagSteal(struct Sprite *);
static void AnimKnockOffStrike(struct Sprite *);
static void AnimKnockOffStrike_Step(struct Sprite *sprite);
static void AnimRecycle(struct Sprite *);
@@ -432,7 +432,7 @@ const struct SpriteTemplate gRapidSpinSpriteTemplate =
.callback = AnimRapidSpin,
};
-const union AffineAnimCmd gUnknown_085CE2A0[] =
+static const union AffineAnimCmd sAffineAnims_Torment[] =
{
AFFINEANIMCMD_FRAME(-12, 8, 0, 4),
AFFINEANIMCMD_FRAME(20, -20, 0, 4),
@@ -718,7 +718,7 @@ const struct SpriteTemplate gSweetScentPetalSpriteTemplate =
.callback = AnimSweetScentPetal,
};
-const u16 gUnknown_085CE55C[] = INCBIN_U16("graphics/unknown/unknown_85CE55C.gbapal");
+static const u16 sUnusedPalette[] = INCBIN_U16("graphics/battle_anims/unused.gbapal");
const union AnimCmd gPainSplitAnimCmds[] =
{
@@ -1071,7 +1071,7 @@ const struct SpriteTemplate gMeteorMashStarSpriteTemplate =
.callback = AnimMeteorMashStar,
};
-const struct SpriteTemplate gUnknown_085CE8F4 =
+static const struct SpriteTemplate sUnusedStarBurstSpriteTemplate =
{
.tileTag = ANIM_TAG_GOLD_STARS,
.paletteTag = ANIM_TAG_GOLD_STARS,
@@ -1093,7 +1093,7 @@ const struct SpriteTemplate gBlockXSpriteTemplate =
.callback = AnimBlockX,
};
-const struct SpriteTemplate gUnknown_085CE924 =
+static const struct SpriteTemplate sUnusedItemBagStealSpriteTemplate =
{
.tileTag = ANIM_TAG_ITEM_BAG,
.paletteTag = ANIM_TAG_ITEM_BAG,
@@ -1101,7 +1101,7 @@ const struct SpriteTemplate gUnknown_085CE924 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_815FE80,
+ .callback = AnimUnusedItemBagSteal,
};
const union AnimCmd gKnockOffStrikeAnimCmds[] =
@@ -1181,8 +1181,8 @@ const union AffineAnimCmd gSlackOffSquishAffineAnimCmds[] =
static void AnimBlackSmoke(struct Sprite *sprite)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
if (!gBattleAnimArgs[3])
sprite->data[0] = gBattleAnimArgs[2];
@@ -1197,7 +1197,7 @@ static void AnimBlackSmoke_Step(struct Sprite *sprite)
{
if (sprite->data[1] > 0)
{
- sprite->pos2.x = sprite->data[2] >> 8;
+ sprite->x2 = sprite->data[2] >> 8;
sprite->data[2] += sprite->data[0];
sprite->invisible ^= 1;
sprite->data[1]--;
@@ -1252,7 +1252,7 @@ static void AnimTealAlert(struct Sprite *sprite)
InitSpritePosToAnimTarget(sprite, TRUE);
- rotation = ArcTan2Neg(sprite->pos1.x - x, sprite->pos1.y - y);
+ rotation = ArcTan2Neg(sprite->x - x, sprite->y - y);
rotation += 0x6000;
if (IsContest())
rotation += 0x4000;
@@ -1315,23 +1315,23 @@ static void AnimMeanLookEye_Step3(struct Sprite *sprite)
{
case 0:
case 1:
- sprite->pos2.x = 1;
- sprite->pos2.y = 0;
+ sprite->x2 = 1;
+ sprite->y2 = 0;
break;
case 2:
case 3:
- sprite->pos2.x = -1;
- sprite->pos2.y = 0;
+ sprite->x2 = -1;
+ sprite->y2 = 0;
break;
case 4:
case 5:
- sprite->pos2.x = 0;
- sprite->pos2.y = 1;
+ sprite->x2 = 0;
+ sprite->y2 = 1;
break;
case 6:
default:
- sprite->pos2.x = 0;
- sprite->pos2.y = -1;
+ sprite->x2 = 0;
+ sprite->y2 = -1;
break;
}
@@ -1470,7 +1470,7 @@ static void AnimLeer(struct Sprite *sprite)
{
SetSpriteCoordsToAnimAttackerCoords(sprite);
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->callback = RunStoredCallbackWhenAnimEnds;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
@@ -1506,10 +1506,10 @@ static void AnimLetterZ(struct Sprite *sprite)
var0 = (sprite->data[0] * 20) & 0xFF;
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite->pos2.x = sprite->data[3] / 2;
- sprite->pos2.y = Sin(var0 & 0xFF, 5) + (sprite->data[4] / 2);
+ sprite->x2 = sprite->data[3] / 2;
+ sprite->y2 = Sin(var0 & 0xFF, 5) + (sprite->data[4] / 2);
- if ((u16)(sprite->pos1.x + sprite->pos2.x) > 240)
+ if ((u16)(sprite->x + sprite->x2) > DISPLAY_WIDTH)
DestroyAnimSprite(sprite);
}
@@ -1567,7 +1567,7 @@ static void AnimSpotlight_Step1(struct Sprite *sprite)
case 1:
case 3:
sprite->data[1] += 117;
- sprite->pos2.x = sprite->data[1] >> 8;
+ sprite->x2 = sprite->data[1] >> 8;
if (++sprite->data[2] == 21)
{
sprite->data[2] = 0;
@@ -1576,7 +1576,7 @@ static void AnimSpotlight_Step1(struct Sprite *sprite)
break;
case 2:
sprite->data[1] -= 117;
- sprite->pos2.x = sprite->data[1] >> 8;
+ sprite->x2 = sprite->data[1] >> 8;
if (++sprite->data[2] == 41)
{
sprite->data[2] = 0;
@@ -1608,23 +1608,23 @@ static void AnimClappingHand(struct Sprite *sprite)
{
if (gBattleAnimArgs[3] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
}
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->oam.tileNum += 16;
if (gBattleAnimArgs[2] == 0)
{
sprite->oam.matrixNum = ST_OAM_HFLIP;
- sprite->pos2.x = -12;
+ sprite->x2 = -12;
sprite->data[1] = 2;
}
else
{
- sprite->pos2.x = 12;
+ sprite->x2 = 12;
sprite->data[1] = -2;
}
@@ -1640,8 +1640,8 @@ static void AnimClappingHand_Step(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
- sprite->pos2.x += sprite->data[1];
- if (sprite->pos2.x == 0)
+ sprite->x2 += sprite->data[1];
+ if (sprite->x2 == 0)
{
sprite->data[2]++;
if (sprite->data[3] == 0)
@@ -1652,8 +1652,8 @@ static void AnimClappingHand_Step(struct Sprite *sprite)
}
else
{
- sprite->pos2.x -= sprite->data[1];
- if (abs(sprite->pos2.x) == 12)
+ sprite->x2 -= sprite->data[1];
+ if (abs(sprite->x2) == 12)
{
sprite->data[0]--;
sprite->data[2]--;
@@ -1676,18 +1676,18 @@ void AnimTask_CreateSpotlight(u8 taskId)
{
if (IsContest())
{
- SetGpuReg(REG_OFFSET_WININ, 0x1F3F);
- gBattle_WIN1H = 0x98F0;
- gBattle_WIN1V = 0x00A0;
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ);
+ gBattle_WIN1H = WIN_RANGE(152, DISPLAY_WIDTH);
+ gBattle_WIN1V = WIN_RANGE(0, DISPLAY_HEIGHT);
SetGpuReg(REG_OFFSET_WIN1H, gBattle_WIN0H);
SetGpuReg(REG_OFFSET_WIN1V, gBattle_WIN0V);
}
else
{
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ);
- gBattle_WIN1H = 0x00F0;
- gBattle_WIN1V = 0x78A0;
- SetGpuReg(REG_OFFSET_WIN1H, 0x00F0);
+ gBattle_WIN1H = WIN_RANGE(0, DISPLAY_WIDTH);
+ gBattle_WIN1V = WIN_RANGE(120, DISPLAY_HEIGHT);
+ SetGpuReg(REG_OFFSET_WIN1H, gBattle_WIN1H);
SetGpuReg(REG_OFFSET_WIN1V, gBattle_WIN1V);
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON);
}
@@ -1710,18 +1710,18 @@ static void AnimRapidSpin(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
}
- sprite->pos2.y = gBattleAnimArgs[2];
+ sprite->y2 = gBattleAnimArgs[2];
- sprite->data[0] = (sprite->pos2.y > gBattleAnimArgs[3]);
+ sprite->data[0] = (sprite->y2 > gBattleAnimArgs[3]);
sprite->data[1] = 0;
sprite->data[2] = gBattleAnimArgs[4];
sprite->data[3] = gBattleAnimArgs[5];
@@ -1732,17 +1732,17 @@ static void AnimRapidSpin(struct Sprite *sprite)
static void AnimRapidSpin_Step(struct Sprite *sprite)
{
sprite->data[1] = (sprite->data[1] + sprite->data[2]) & 0xFF;
- sprite->pos2.x = gSineTable[sprite->data[1]] >> 4;
- sprite->pos2.y += sprite->data[3];
+ sprite->x2 = gSineTable[sprite->data[1]] >> 4;
+ sprite->y2 += sprite->data[3];
if (sprite->data[0])
{
- if (sprite->pos2.y < sprite->data[4])
+ if (sprite->y2 < sprite->data[4])
DestroyAnimSprite(sprite);
}
else
{
- if (sprite->pos2.y > sprite->data[4])
+ if (sprite->y2 > sprite->data[4])
DestroyAnimSprite(sprite);
}
}
@@ -1785,13 +1785,13 @@ void AnimTask_RapinSpinMonElevation(u8 taskId)
{
var3 = gBattle_BG1_X;
task->data[8] = var3;
- var4 = var3 + 240;
+ var4 = var3 + DISPLAY_WIDTH;
}
else
{
var3 = gBattle_BG2_X;
task->data[8] = var3;
- var4 = var3 + 240;
+ var4 = var3 + DISPLAY_WIDTH;
}
task->data[9] = var4;
@@ -1944,7 +1944,7 @@ static void TormentAttacker_Step(u8 taskId)
task->data[5] -= 6;
}
- PrepareAffineAnimInTaskData(task, task->data[15], gUnknown_085CE2A0);
+ PrepareAffineAnimInTaskData(task, task->data[15], sAffineAnims_Torment);
task->data[1]++;
task->data[0] = 1;
break;
@@ -2033,10 +2033,10 @@ static void AnimTriAttackTriangle(struct Sprite *sprite)
if (sprite->data[0] == 61)
{
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0] = 20;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
@@ -2066,8 +2066,8 @@ static void AnimBatonPassPokeball(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
sprite->data[1] = 256;
sprite->data[2] = 256;
@@ -2095,8 +2095,8 @@ static void AnimBatonPassPokeball(struct Sprite *sprite)
}
break;
case 3:
- sprite->pos2.y -= 6;
- if (sprite->pos1.y + sprite->pos2.y < -32)
+ sprite->y2 -= 6;
+ if (sprite->y + sprite->y2 < -32)
DestroyAnimSprite(sprite);
break;
}
@@ -2105,11 +2105,11 @@ static void AnimBatonPassPokeball(struct Sprite *sprite)
static void AnimWishStar(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos1.x = -16;
+ sprite->x = -16;
else
- sprite->pos1.x = 256;
+ sprite->x = 256;
- sprite->pos1.y = 0;
+ sprite->y = 0;
sprite->callback = AnimWishStar_Step;
}
@@ -2119,23 +2119,23 @@ static void AnimWishStar_Step(struct Sprite *sprite)
sprite->data[0] += 72;
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos2.x = sprite->data[0] >> 4;
+ sprite->x2 = sprite->data[0] >> 4;
else
- sprite->pos2.x = -(sprite->data[0] >> 4);
+ sprite->x2 = -(sprite->data[0] >> 4);
sprite->data[1] += 16;
- sprite->pos2.y += sprite->data[1] >> 8;
+ sprite->y2 += sprite->data[1] >> 8;
if (++sprite->data[2] % 3 == 0)
{
CreateSpriteAndAnimate(
&gMiniTwinklingStarSpriteTemplate,
- sprite->pos1.x + sprite->pos2.x,
- sprite->pos1.y + sprite->pos2.y,
+ sprite->x + sprite->x2,
+ sprite->y + sprite->y2,
sprite->subpriority + 1);
}
- newX = sprite->pos1.x + sprite->pos2.x + 32;
+ newX = sprite->x + sprite->x2 + 32;
if (newX > 304)
DestroyAnimSprite(sprite);
}
@@ -2155,7 +2155,7 @@ static void AnimMiniTwinklingStar(struct Sprite *sprite)
if (y > 3)
y = -y;
- sprite->pos2.y = y;
+ sprite->y2 = y;
sprite->callback = AnimMiniTwinklingStar_Step;
}
@@ -2226,9 +2226,9 @@ static void AnimSwallowBlueOrb(struct Sprite *sprite)
sprite->data[0]++;
break;
case 1:
- sprite->pos2.y -= sprite->data[1] >> 8;
+ sprite->y2 -= sprite->data[1] >> 8;
sprite->data[1] -= 96;
- if (sprite->pos1.y + sprite->pos2.y > sprite->data[2])
+ if (sprite->y + sprite->y2 > sprite->data[2])
DestroyAnimSprite(sprite);
break;
}
@@ -2292,7 +2292,7 @@ void AnimTask_TransformMon(u8 taskId)
src = gMonSpritesGfxPtr->sprites.ptr[position] + (gBattleMonForms[gBattleAnimAttacker] << 11);
dest = animBg.bgTiles;
- CpuCopy32(src, dest, 0x800);
+ CpuCopy32(src, dest, MON_PIC_SIZE);
LoadBgTiles(1, animBg.bgTiles, 0x800, animBg.tilesOffset);
if (IsContest())
{
@@ -2319,11 +2319,11 @@ void AnimTask_TransformMon(u8 taskId)
}
if (IsSpeciesNotUnown(gContestResources->moveAnim->targetSpecies))
- gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gUnknown_082FF6C0;
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gAffineAnims_BattleSpriteContest;
else
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gAffineAnims_BattleSpriteOpponentSide;
- StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], 0);
+ StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], BATTLER_AFFINE_NORMAL);
}
gTasks[taskId].data[0]++;
@@ -2476,13 +2476,13 @@ static void AnimGreenStar(struct Sprite *sprite)
if (xOffset > 31)
xOffset = 32 - xOffset;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + xOffset;
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + xOffset;
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32;
sprite->data[1] = gBattleAnimArgs[0];
sprite->data[2] = gBattleAnimArgs[1];
- spriteId1 = CreateSprite(&gGreenStarSpriteTemplate, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1);
- spriteId2 = CreateSprite(&gGreenStarSpriteTemplate, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1);
+ spriteId1 = CreateSprite(&gGreenStarSpriteTemplate, sprite->x, sprite->y, sprite->subpriority + 1);
+ spriteId2 = CreateSprite(&gGreenStarSpriteTemplate, sprite->x, sprite->y, sprite->subpriority + 1);
StartSpriteAnim(&gSprites[spriteId1], 1);
StartSpriteAnim(&gSprites[spriteId2], 2);
@@ -2505,16 +2505,16 @@ static void AnimGreenStar(struct Sprite *sprite)
static void AnimGreenStar_Step1(struct Sprite *sprite)
{
s16 delta = sprite->data[3] + sprite->data[2];
- sprite->pos2.y -= delta >> 8;
+ sprite->y2 -= delta >> 8;
sprite->data[3] += sprite->data[2];
sprite->data[3] &= 0xFF;
- if (sprite->data[4] == 0 && sprite->pos2.y < -8)
+ if (sprite->data[4] == 0 && sprite->y2 < -8)
{
gSprites[sprite->data[6]].invisible = FALSE;
sprite->data[4]++;
}
- if (sprite->data[4] == 1 && sprite->pos2.y < -16)
+ if (sprite->data[4] == 1 && sprite->y2 < -16)
{
gSprites[sprite->data[7]].invisible = FALSE;
sprite->data[4]++;
@@ -2543,7 +2543,7 @@ static void AnimGreenStar_Callback(struct Sprite *sprite)
if (!sprite->invisible)
{
s16 delta = sprite->data[3] + sprite->data[2];
- sprite->pos2.y -= delta >> 8;
+ sprite->y2 -= delta >> 8;
sprite->data[3] += sprite->data[2];
sprite->data[3] &= 0xFF;
if (--sprite->data[1] == -1)
@@ -2686,12 +2686,12 @@ static void AnimWeakFrustrationAngerMark(struct Sprite *sprite)
sprite->data[2] += 128;
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos2.x = -(sprite->data[1] >> 8);
+ sprite->x2 = -(sprite->data[1] >> 8);
else
- sprite->pos2.x = sprite->data[1] >> 8;
+ sprite->x2 = sprite->data[1] >> 8;
- sprite->pos2.y += sprite->data[2] >> 8;
- if (sprite->pos2.y > 64)
+ sprite->y2 += sprite->data[2] >> 8;
+ if (sprite->y2 > 64)
DestroyAnimSprite(sprite);
}
}
@@ -2747,7 +2747,7 @@ static void AnimTask_RockMonBackAndForth_Step(u8 taskId)
switch (task->data[0])
{
case 0:
- gSprites[task->data[15]].pos2.x += task->data[5];
+ gSprites[task->data[15]].x2 += task->data[5];
task->data[2] -= task->data[4];
SetSpriteRotScale(task->data[15], 0x100, 0x100, task->data[2]);
SetBattlerSpriteYOffsetFromRotation(task->data[15]);
@@ -2758,7 +2758,7 @@ static void AnimTask_RockMonBackAndForth_Step(u8 taskId)
}
break;
case 1:
- gSprites[task->data[15]].pos2.x -= task->data[5];
+ gSprites[task->data[15]].x2 -= task->data[5];
task->data[2] += task->data[4];
SetSpriteRotScale(task->data[15], 0x100, 0x100, task->data[2]);
SetBattlerSpriteYOffsetFromRotation(task->data[15]);
@@ -2769,7 +2769,7 @@ static void AnimTask_RockMonBackAndForth_Step(u8 taskId)
}
break;
case 2:
- gSprites[task->data[15]].pos2.x += task->data[5];
+ gSprites[task->data[15]].x2 += task->data[5];
task->data[2] -= task->data[4];
SetSpriteRotScale(task->data[15], 0x100, 0x100, task->data[2]);
SetBattlerSpriteYOffsetFromRotation(task->data[15]);
@@ -2802,13 +2802,13 @@ static void AnimSweetScentPetal(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
- sprite->pos1.x = 0;
- sprite->pos1.y = gBattleAnimArgs[0];
+ sprite->x = 0;
+ sprite->y = gBattleAnimArgs[0];
}
else
{
- sprite->pos1.x = 240;
- sprite->pos1.y = gBattleAnimArgs[0] - 30;
+ sprite->x = DISPLAY_WIDTH;
+ sprite->y = gBattleAnimArgs[0] - 30;
}
sprite->data[2] = gBattleAnimArgs[2];
@@ -2821,23 +2821,23 @@ static void AnimSweetScentPetal_Step(struct Sprite *sprite)
sprite->data[0] += 3;
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
- sprite->pos1.x += 5;
- sprite->pos1.y -= 1;
+ sprite->x += 5;
+ sprite->y -= 1;
- if (sprite->pos1.x > 240)
+ if (sprite->x > DISPLAY_WIDTH)
DestroyAnimSprite(sprite);
- sprite->pos2.y = Sin(sprite->data[0] & 0xFF, 16);
+ sprite->y2 = Sin(sprite->data[0] & 0xFF, 16);
}
else
{
- sprite->pos1.x -= 5;
- sprite->pos1.y += 1;
+ sprite->x -= 5;
+ sprite->y += 1;
- if (sprite->pos1.x < 0)
+ if (sprite->x < 0)
DestroyAnimSprite(sprite);
- sprite->pos2.y = Cos(sprite->data[0] & 0xFF, 16);
+ sprite->y2 = Cos(sprite->data[0] & 0xFF, 16);
}
}
@@ -2913,7 +2913,7 @@ static void AnimTask_FlailMovement_Step(u8 taskId)
SetSpriteRotScale(task->data[15], 0x100, 0x100, task->data[2]);
SetBattlerSpriteYOffsetFromRotation(task->data[15]);
- gSprites[task->data[15]].pos2.x = -(((temp = task->data[2]) >= 0 ? task->data[2] : temp + 63) >> 6);
+ gSprites[task->data[15]].x2 = -(((temp = task->data[2]) >= 0 ? task->data[2] : temp + 63) >> 6);
if (++task->data[1] > 8)
{
@@ -2941,12 +2941,12 @@ static void AnimPainSplitProjectile(struct Sprite *sprite)
{
if (gBattleAnimArgs[2] == ANIM_ATTACKER)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
}
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[1] = 0x80;
sprite->data[2] = 0x300;
sprite->data[3] = gBattleAnimArgs[1];
@@ -2954,9 +2954,9 @@ static void AnimPainSplitProjectile(struct Sprite *sprite)
}
else
{
- sprite->pos2.x = sprite->data[1] >> 8;
- sprite->pos2.y += sprite->data[2] >> 8;
- if (sprite->data[4] == 0 && sprite->pos2.y > -sprite->data[3])
+ sprite->x2 = sprite->data[1] >> 8;
+ sprite->y2 += sprite->data[2] >> 8;
+ if (sprite->data[4] == 0 && sprite->y2 > -sprite->data[3])
{
sprite->data[4] = 1;
sprite->data[2] = (-sprite->data[2] / 3) * 2;
@@ -2997,17 +2997,17 @@ void AnimTask_PainSplitMovement(u8 taskId)
SetSpriteRotScale(spriteId, 0xD0, 0x130, 0xF00);
SetBattlerSpriteYOffsetFromYScale(spriteId);
if (IsContest() || GetBattlerSide(gTasks[taskId].data[11]) == B_SIDE_PLAYER)
- gSprites[spriteId].pos2.y += 16;
+ gSprites[spriteId].y2 += 16;
break;
case 2:
SetSpriteRotScale(spriteId, 0xD0, 0x130, 0xF100);
SetBattlerSpriteYOffsetFromYScale(spriteId);
if (IsContest() || GetBattlerSide(gTasks[taskId].data[11]) == B_SIDE_PLAYER)
- gSprites[spriteId].pos2.y += 16;
+ gSprites[spriteId].y2 += 16;
break;
}
- gSprites[spriteId].pos2.x = 2;
+ gSprites[spriteId].x2 = 2;
gTasks[taskId].data[0]++;
}
else
@@ -3016,14 +3016,14 @@ void AnimTask_PainSplitMovement(u8 taskId)
if (++gTasks[taskId].data[2] == 3)
{
gTasks[taskId].data[2] = 0;
- gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
+ gSprites[spriteId].x2 = -gSprites[spriteId].x2;
}
if (++gTasks[taskId].data[1] == 13)
{
ResetSpriteRotScale(spriteId);
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].x2 = 0;
+ gSprites[spriteId].y2 = 0;
DestroyAnimVisualTask(taskId);
}
}
@@ -3054,11 +3054,11 @@ static void AnimFlatterConfetti(struct Sprite *sprite)
sprite->data[2] = gBattleAnimArgs[0];
if (sprite->data[2] == ANIM_ATTACKER)
- sprite->pos1.x = -8;
+ sprite->x = -8;
else
- sprite->pos1.x = 248;
+ sprite->x = 248;
- sprite->pos1.y = 104;
+ sprite->y = 104;
sprite->callback = AnimFlatterConfetti_Step;
}
@@ -3066,13 +3066,13 @@ static void AnimFlatterConfetti_Step(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
- sprite->pos2.x += sprite->data[0] >> 8;
- sprite->pos2.y -= sprite->data[1] >> 8;
+ sprite->x2 += sprite->data[0] >> 8;
+ sprite->y2 -= sprite->data[1] >> 8;
}
else
{
- sprite->pos2.x -= sprite->data[0] >> 8;
- sprite->pos2.y -= sprite->data[1] >> 8;
+ sprite->x2 -= sprite->data[0] >> 8;
+ sprite->y2 -= sprite->data[1] >> 8;
}
sprite->data[0] -= 22;
@@ -3140,8 +3140,8 @@ static void AnimFlatterSpotlight_Step(struct Sprite *sprite)
// arg 1: initial wave offset
static void AnimReversalOrb(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
sprite->data[0] = gBattleAnimArgs[0];
sprite->data[1] = gBattleAnimArgs[1];
sprite->callback = AnimReversalOrb_Step;
@@ -3150,8 +3150,8 @@ static void AnimReversalOrb(struct Sprite *sprite)
static void AnimReversalOrb_Step(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8);
- sprite->pos2.y = Cos(sprite->data[1], sprite->data[3] >> 8);
+ sprite->x2 = Sin(sprite->data[1], sprite->data[2] >> 8);
+ sprite->y2 = Cos(sprite->data[1], sprite->data[3] >> 8);
sprite->data[1] = (sprite->data[1] + 9) & 0xFF;
if ((u16)sprite->data[1] < 64 || sprite->data[1] > 195)
@@ -3496,14 +3496,14 @@ static void AnimTask_DeepInhale_Step(u8 taskId)
task->data[1] = 0;
task->data[2]++;
if (task->data[2] & 1)
- gSprites[task->data[15]].pos2.x = 1;
+ gSprites[task->data[15]].x2 = 1;
else
- gSprites[task->data[15]].pos2.x = -1;
+ gSprites[task->data[15]].x2 = -1;
}
}
else
{
- gSprites[task->data[15]].pos2.x = 0;
+ gSprites[task->data[15]].x2 = 0;
}
if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
@@ -3512,8 +3512,8 @@ static void AnimTask_DeepInhale_Step(u8 taskId)
static void InitYawnCloudPosition(struct Sprite *sprite, s16 startX, s16 startY, s16 destX, s16 destY, u16 duration)
{
- sprite->pos1.x = startX;
- sprite->pos1.y = startY;
+ sprite->x = startX;
+ sprite->y = startY;
sprite->data[4] = startX << 4;
sprite->data[5] = startY << 4;
sprite->data[6] = ((destX - startX) << 4) / duration;
@@ -3524,20 +3524,20 @@ static void UpdateYawnCloudPosition(struct Sprite *sprite)
{
sprite->data[4] += sprite->data[6];
sprite->data[5] += sprite->data[7];
- sprite->pos1.x = sprite->data[4] >> 4;
- sprite->pos1.y = sprite->data[5] >> 4;
+ sprite->x = sprite->data[4] >> 4;
+ sprite->y = sprite->data[5] >> 4;
}
// Drifts a cloud in a wavy path towards the target mon.
// arg 0: which affine anim
static void AnimYawnCloud(struct Sprite *sprite)
{
- s16 destX = sprite->pos1.x;
- s16 destY = sprite->pos1.y;
+ s16 destX = sprite->x;
+ s16 destY = sprite->y;
SetSpriteCoordsToAnimAttackerCoords(sprite);
StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]);
- InitYawnCloudPosition(sprite, sprite->pos1.x, sprite->pos1.y, destX, destY, 64);
+ InitYawnCloudPosition(sprite, sprite->x, sprite->y, destX, destY, 64);
sprite->data[0] = 0;
sprite->callback = AnimYawnCloud_Step;
}
@@ -3549,7 +3549,7 @@ static void AnimYawnCloud_Step(struct Sprite *sprite)
sprite->data[0]++;
index = (sprite->data[0] * 8) & 0xFF;
UpdateYawnCloudPosition(sprite);
- sprite->pos2.y = Sin(index, 8);
+ sprite->y2 = Sin(index, 8);
if (sprite->data[0] > 58)
{
if (++sprite->data[1] > 1)
@@ -3575,12 +3575,12 @@ static void AnimSmokeBallEscapeCloud(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER)
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2];
sprite->callback = DestroyAnimSpriteAfterTimer;
}
-static void sub_815D8D8(u8 taskId)
+static void AnimTask_SlideMonForFocusBand_Step2(u8 taskId)
{
u16 var0 = 0;
u16 var1 = 0;
@@ -3614,14 +3614,14 @@ static void sub_815D8D8(u8 taskId)
var0 = gTasks[taskId].data[7];
var1 = gTasks[taskId].data[8];
if (gTasks[taskId].data[2] & 0x8000)
- gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] - (var0 >> 8);
+ gSprites[gTasks[taskId].data[15]].x2 = gTasks[taskId].data[9] - (var0 >> 8);
else
- gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] + (var0 >> 8);
+ gSprites[gTasks[taskId].data[15]].x2 = gTasks[taskId].data[9] + (var0 >> 8);
if (gTasks[taskId].data[3] & 0x8000)
- gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] - (var1 >> 8);
+ gSprites[gTasks[taskId].data[15]].y2 = gTasks[taskId].data[10] - (var1 >> 8);
else
- gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] + (var1 >> 8);
+ gSprites[gTasks[taskId].data[15]].y2 = gTasks[taskId].data[10] + (var1 >> 8);
if (gTasks[taskId].data[0] < 1)
{
@@ -3630,7 +3630,7 @@ static void sub_815D8D8(u8 taskId)
}
}
-static void sub_815DA20(u8 taskId)
+static void AnimTask_SlideMonForFocusBand_Step1(u8 taskId)
{
u16 var0 = 0;
u16 var1 = 0;
@@ -3664,14 +3664,14 @@ static void sub_815DA20(u8 taskId)
var0 = (gTasks[taskId].data[2] & 0x7FFF) + gTasks[taskId].data[7];
var1 = (gTasks[taskId].data[3] & 0x7FFF) + gTasks[taskId].data[8];
if (gTasks[taskId].data[2] & 0x8000)
- gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] - (var0 >> 8);
+ gSprites[gTasks[taskId].data[15]].x2 = gTasks[taskId].data[9] - (var0 >> 8);
else
- gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] + (var0 >> 8);
+ gSprites[gTasks[taskId].data[15]].x2 = gTasks[taskId].data[9] + (var0 >> 8);
if (gTasks[taskId].data[3] & 0x8000)
- gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] - (var1 >> 8);
+ gSprites[gTasks[taskId].data[15]].y2 = gTasks[taskId].data[10] - (var1 >> 8);
else
- gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] + (var1 >> 8);
+ gSprites[gTasks[taskId].data[15]].y2 = gTasks[taskId].data[10] + (var1 >> 8);
gTasks[taskId].data[7] = var0;
gTasks[taskId].data[8] = var1;
@@ -3679,7 +3679,7 @@ static void sub_815DA20(u8 taskId)
{
gTasks[taskId].data[0] = 30;
gTasks[taskId].data[13] = 0;
- gTasks[taskId].func = sub_815D8D8;
+ gTasks[taskId].func = AnimTask_SlideMonForFocusBand_Step2;
}
}
@@ -3714,7 +3714,7 @@ void AnimTask_SlideMonForFocusBand(u8 taskId)
gTasks[taskId].data[7] = 0;
gTasks[taskId].data[4] = gBattleAnimArgs[4];
gTasks[taskId].data[5] = gBattleAnimArgs[5];
- gTasks[taskId].func = sub_815DA20;
+ gTasks[taskId].func = AnimTask_SlideMonForFocusBand_Step1;
}
// Squishes the mon vertically and emits sweat droplets a few times.
@@ -3823,8 +3823,8 @@ static void CreateSweatDroplets(u8 taskId, bool8 arg1)
static void AnimFacadeSweatDrop(struct Sprite *sprite)
{
- sprite->pos1.x += sprite->data[1];
- sprite->pos1.y += sprite->data[2];
+ sprite->x += sprite->data[1];
+ sprite->y += sprite->data[2];
if (++sprite->data[0] > 6)
{
gTasks[sprite->data[3]].data[sprite->data[4]]--;
@@ -3889,8 +3889,8 @@ static void AnimRoarNoiseLine(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[1];
if (gBattleAnimArgs[2] == 0)
{
sprite->data[0] = 0x280;
@@ -3921,8 +3921,8 @@ static void AnimRoarNoiseLine_Step(struct Sprite *sprite)
{
sprite->data[6] += sprite->data[0];
sprite->data[7] += sprite->data[1];
- sprite->pos2.x = sprite->data[6] >> 8;
- sprite->pos2.y = sprite->data[7] >> 8;
+ sprite->x2 = sprite->data[6] >> 8;
+ sprite->y2 = sprite->data[7] >> 8;
if (++sprite->data[5] == 14)
DestroyAnimSprite(sprite);
}
@@ -3987,21 +3987,21 @@ static void AnimTask_GlareEyeDots_Step(u8 taskId)
if (task->data[7] == 0)
{
if (i == 0)
- gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = -task->data[6];
+ gSprites[spriteId].x2 = gSprites[spriteId].y2 = -task->data[6];
else
- gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = task->data[6];
+ gSprites[spriteId].x2 = gSprites[spriteId].y2 = task->data[6];
}
else
{
if (i == 0)
{
- gSprites[spriteId].pos2.x = -task->data[6];
- gSprites[spriteId].pos2.y = task->data[6];
+ gSprites[spriteId].x2 = -task->data[6];
+ gSprites[spriteId].y2 = task->data[6];
}
else
{
- gSprites[spriteId].pos2.x = task->data[6];
- gSprites[spriteId].pos2.y = -task->data[6];
+ gSprites[spriteId].x2 = task->data[6];
+ gSprites[spriteId].y2 = -task->data[6];
}
}
@@ -4068,8 +4068,8 @@ static void AnimGlareEyeDot(struct Sprite *sprite)
// arg 4: duration
static void AnimAssistPawprint(struct Sprite *sprite)
{
- sprite->pos1.x = gBattleAnimArgs[0];
- sprite->pos1.y = gBattleAnimArgs[1];
+ sprite->x = gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[1];
sprite->data[2] = gBattleAnimArgs[2];
sprite->data[4] = gBattleAnimArgs[3];
sprite->data[0] = gBattleAnimArgs[4];
@@ -4165,15 +4165,15 @@ static void AnimSmellingSaltsHand(struct Sprite *sprite)
sprite->oam.tileNum += 16;
sprite->data[6] = gBattleAnimArgs[2];
sprite->data[7] = gBattleAnimArgs[1] == 0 ? -1 : 1;
- sprite->pos1.y = GetBattlerSpriteCoord(battler, 3);
+ sprite->y = GetBattlerSpriteCoord(battler, 3);
if (gBattleAnimArgs[1] == 0)
{
sprite->oam.matrixNum |= ST_OAM_HFLIP;
- sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) - 8;
+ sprite->x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_LEFT) - 8;
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) + 8;
+ sprite->x = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_RIGHT) + 8;
}
sprite->callback = AnimSmellingSaltsHand_Step;
@@ -4187,7 +4187,7 @@ static void AnimSmellingSaltsHand_Step(struct Sprite *sprite)
if (++sprite->data[1] > 1)
{
sprite->data[1] = 0;
- sprite->pos2.x += sprite->data[7];
+ sprite->x2 += sprite->data[7];
if (++sprite->data[2] == 12)
sprite->data[0]++;
}
@@ -4200,7 +4200,7 @@ static void AnimSmellingSaltsHand_Step(struct Sprite *sprite)
}
break;
case 2:
- sprite->pos2.x -= sprite->data[7] * 4;
+ sprite->x2 -= sprite->data[7] * 4;
if (++sprite->data[1] == 6)
{
sprite->data[1] = 0;
@@ -4208,7 +4208,7 @@ static void AnimSmellingSaltsHand_Step(struct Sprite *sprite)
}
break;
case 3:
- sprite->pos2.x += sprite->data[7] * 3;
+ sprite->x2 += sprite->data[7] * 3;
if (++sprite->data[1] == 8)
{
if (--sprite->data[6])
@@ -4251,14 +4251,14 @@ static void AnimTask_SmellingSaltsSquish_Step(u8 taskId)
{
task->data[1] = 0;
if (!(task->data[2] & 1))
- gSprites[task->data[15]].pos2.x = 2;
+ gSprites[task->data[15]].x2 = 2;
else
- gSprites[task->data[15]].pos2.x = -2;
+ gSprites[task->data[15]].x2 = -2;
}
if (!RunAffineAnimFromTaskData(task))
{
- gSprites[task->data[15]].pos2.x = 0;
+ gSprites[task->data[15]].x2 = 0;
if (--task->data[0])
{
PrepareAffineAnimInTaskData(&gTasks[taskId], gTasks[taskId].data[15], gSmellingSaltsSquishAffineAnimCmds);
@@ -4280,17 +4280,17 @@ static void AnimSmellingSaltExclamation(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_TOP);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->y = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_TOP);
}
- if (sprite->pos1.y < 8)
- sprite->pos1.y = 8;
+ if (sprite->y < 8)
+ sprite->y = 8;
sprite->data[0] = 0;
sprite->data[1] = gBattleAnimArgs[1];
@@ -4319,16 +4319,16 @@ static void AnimHelpingHandClap(struct Sprite *sprite)
if (gBattleAnimArgs[0] == 0)
{
sprite->oam.matrixNum |= ST_OAM_HFLIP;
- sprite->pos1.x = 100;
+ sprite->x = 100;
sprite->data[7] = 1;
}
else
{
- sprite->pos1.x = 140;
+ sprite->x = 140;
sprite->data[7] = -1;
}
- sprite->pos1.y = 56;
+ sprite->y = 56;
sprite->callback = AnimHelpingHandClap_Step;
}
@@ -4337,9 +4337,9 @@ static void AnimHelpingHandClap_Step(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos1.y -= sprite->data[7] * 2;
+ sprite->y -= sprite->data[7] * 2;
if (sprite->data[1] & 1)
- sprite->pos1.x -= sprite->data[7] * 2;
+ sprite->x -= sprite->data[7] * 2;
if (++sprite->data[1] == 9)
{
@@ -4356,8 +4356,8 @@ static void AnimHelpingHandClap_Step(struct Sprite *sprite)
break;
case 2:
sprite->data[1]++;
- sprite->pos1.y += sprite->data[7] * 3;
- sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
+ sprite->y += sprite->data[7] * 3;
+ sprite->x2 = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
if (sprite->data[1] == 12)
{
sprite->data[1] = 0;
@@ -4373,15 +4373,15 @@ static void AnimHelpingHandClap_Step(struct Sprite *sprite)
break;
case 4:
sprite->data[1]++;
- sprite->pos1.y -= sprite->data[7] * 3;
- sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
+ sprite->y -= sprite->data[7] * 3;
+ sprite->x2 = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
if (sprite->data[1] == 12)
sprite->data[0]++;
break;
case 5:
sprite->data[1]++;
- sprite->pos1.y += sprite->data[7] * 3;
- sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
+ sprite->y += sprite->data[7] * 3;
+ sprite->x2 = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
if (sprite->data[1] == 15)
sprite->oam.tileNum += 16;
@@ -4392,7 +4392,7 @@ static void AnimHelpingHandClap_Step(struct Sprite *sprite)
}
break;
case 6:
- sprite->pos1.x += sprite->data[7] * 6;
+ sprite->x += sprite->data[7] * 6;
if (++sprite->data[1] == 9)
{
sprite->data[1] = 0;
@@ -4400,7 +4400,7 @@ static void AnimHelpingHandClap_Step(struct Sprite *sprite)
}
break;
case 7:
- sprite->pos1.x += sprite->data[7] * 2;
+ sprite->x += sprite->data[7] * 2;
if (++sprite->data[1] == 1)
{
sprite->data[1] = 0;
@@ -4408,7 +4408,7 @@ static void AnimHelpingHandClap_Step(struct Sprite *sprite)
}
break;
case 8:
- sprite->pos1.x -= sprite->data[7] * 3;
+ sprite->x -= sprite->data[7] * 3;
if (++sprite->data[1] == 5)
DestroyAnimSprite(sprite);
break;
@@ -4463,7 +4463,7 @@ static void AnimTask_HelpingHandAttackerMovement_Step(u8 taskId)
}
break;
case 1:
- gSprites[task->data[15]].pos2.x -= task->data[14] * 3;
+ gSprites[task->data[15]].x2 -= task->data[14] * 3;
if (++task->data[1] == 6)
{
task->data[1] = 0;
@@ -4471,7 +4471,7 @@ static void AnimTask_HelpingHandAttackerMovement_Step(u8 taskId)
}
break;
case 2:
- gSprites[task->data[15]].pos2.x += task->data[14] * 3;
+ gSprites[task->data[15]].x2 += task->data[14] * 3;
if (++task->data[1] == 6)
{
task->data[1] = 0;
@@ -4494,7 +4494,7 @@ static void AnimTask_HelpingHandAttackerMovement_Step(u8 taskId)
}
break;
case 4:
- gSprites[task->data[15]].pos2.x += task->data[14];
+ gSprites[task->data[15]].x2 += task->data[14];
if (++task->data[1] == 3)
{
task->data[1] = 0;
@@ -4509,7 +4509,7 @@ static void AnimTask_HelpingHandAttackerMovement_Step(u8 taskId)
}
break;
case 6:
- gSprites[task->data[15]].pos2.x -= task->data[14] * 4;
+ gSprites[task->data[15]].x2 -= task->data[14] * 4;
if (++task->data[1] == 5)
{
task->data[1] = 0;
@@ -4517,7 +4517,7 @@ static void AnimTask_HelpingHandAttackerMovement_Step(u8 taskId)
}
break;
case 7:
- gSprites[task->data[15]].pos2.x += task->data[14] * 4;
+ gSprites[task->data[15]].x2 += task->data[14] * 4;
if (++task->data[1] == 5)
{
task->data[1] = 0;
@@ -4525,7 +4525,7 @@ static void AnimTask_HelpingHandAttackerMovement_Step(u8 taskId)
}
break;
case 8:
- gSprites[task->data[15]].pos2.x = 0;
+ gSprites[task->data[15]].x2 = 0;
DestroyAnimVisualTask(taskId);
break;
}
@@ -4594,9 +4594,9 @@ static void AnimForesightMagnifyingGlass_Step(struct Sprite *sprite)
else
sprite->data[0] = 12;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = y;
InitAnimLinearTranslation(sprite);
sprite->data[5]++;
@@ -4607,19 +4607,19 @@ static void AnimForesightMagnifyingGlass_Step(struct Sprite *sprite)
switch (sprite->data[6])
{
default:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[0] = 0;
sprite->data[5]++;
sprite->data[6]++;
break;
case 4:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[5] = 0;
sprite->data[6]++;
break;
@@ -4657,14 +4657,14 @@ static void AnimForesightMagnifyingGlass_Step(struct Sprite *sprite)
static void AnimMeteorMashStar_Step(struct Sprite *sprite)
{
- sprite->pos2.x = ((sprite->data[2] - sprite->data[0]) * sprite->data[5]) / sprite->data[4];
- sprite->pos2.y = ((sprite->data[3] - sprite->data[1]) * sprite->data[5]) / sprite->data[4];
+ sprite->x2 = ((sprite->data[2] - sprite->data[0]) * sprite->data[5]) / sprite->data[4];
+ sprite->y2 = ((sprite->data[3] - sprite->data[1]) * sprite->data[5]) / sprite->data[4];
if (!(sprite->data[5] & 1))
{
CreateSprite(
&gMiniTwinklingStarSpriteTemplate,
- sprite->pos1.x + sprite->pos2.x,
- sprite->pos1.y + sprite->pos2.y, 5);
+ sprite->x + sprite->x2,
+ sprite->y + sprite->y2, 5);
}
if (sprite->data[5] == sprite->data[4])
@@ -4686,20 +4686,20 @@ static void AnimMeteorMashStar(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER || IsContest())
{
- sprite->data[0] = sprite->pos1.x - gBattleAnimArgs[0];
- sprite->data[2] = sprite->pos1.x - gBattleAnimArgs[2];
+ sprite->data[0] = sprite->x - gBattleAnimArgs[0];
+ sprite->data[2] = sprite->x - gBattleAnimArgs[2];
}
else
{
- sprite->data[0] = sprite->pos1.x + gBattleAnimArgs[0];
- sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
+ sprite->data[0] = sprite->x + gBattleAnimArgs[0];
+ sprite->data[2] = sprite->x + gBattleAnimArgs[2];
}
- sprite->data[1] = sprite->pos1.y + gBattleAnimArgs[1];
- sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[3];
+ sprite->data[1] = sprite->y + gBattleAnimArgs[1];
+ sprite->data[3] = sprite->y + gBattleAnimArgs[3];
sprite->data[4] = gBattleAnimArgs[4];
- sprite->pos1.x = sprite->data[0];
- sprite->pos1.y = sprite->data[1];
+ sprite->x = sprite->data[0];
+ sprite->y = sprite->data[1];
sprite->callback = AnimMeteorMashStar_Step;
}
@@ -4733,11 +4733,11 @@ void AnimTask_MonToSubstitute(u8 taskId)
LoadBattleMonGfxAndAnimate(gBattleAnimAttacker, 0, spriteId);
if (IsContest())
{
- gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gUnknown_082FF6C0;
- StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], 0);
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gAffineAnims_BattleSpriteContest;
+ StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], BATTLER_AFFINE_NORMAL);
}
- for (i = 0; i < 16; i++)
+ for (i = 0; i < NUM_TASK_DATA; i++)
gTasks[taskId].data[i] = 0;
gTasks[taskId].func = AnimTask_MonToSubstituteDoll;
@@ -4751,22 +4751,22 @@ static void AnimTask_MonToSubstituteDoll(u8 taskId)
switch (gTasks[taskId].data[0])
{
case 0:
- gSprites[spriteId].pos2.y = -200;
- gSprites[spriteId].pos2.x = 200;
+ gSprites[spriteId].y2 = -200;
+ gSprites[spriteId].x2 = 200;
gSprites[spriteId].invisible = FALSE;
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0]++;
break;
case 1:
gTasks[taskId].data[10] += 112;
- gSprites[spriteId].pos2.y += gTasks[taskId].data[10] >> 8;
- if (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y >= -32)
- gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].y2 += gTasks[taskId].data[10] >> 8;
+ if (gSprites[spriteId].y + gSprites[spriteId].y2 >= -32)
+ gSprites[spriteId].x2 = 0;
- if (gSprites[spriteId].pos2.y > 0)
- gSprites[spriteId].pos2.y = 0;
+ if (gSprites[spriteId].y2 > 0)
+ gSprites[spriteId].y2 = 0;
- if (gSprites[spriteId].pos2.y == 0)
+ if (gSprites[spriteId].y2 == 0)
{
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(-64));
gTasks[taskId].data[10] -= 0x800;
@@ -4778,17 +4778,17 @@ static void AnimTask_MonToSubstituteDoll(u8 taskId)
if (gTasks[taskId].data[10] < 0)
gTasks[taskId].data[10] = 0;
- gSprites[spriteId].pos2.y -= gTasks[taskId].data[10] >> 8;
+ gSprites[spriteId].y2 -= gTasks[taskId].data[10] >> 8;
if (gTasks[taskId].data[10] == 0)
gTasks[taskId].data[0]++;
break;
case 3:
gTasks[taskId].data[10] += 112;
- gSprites[spriteId].pos2.y += gTasks[taskId].data[10] >> 8;
- if (gSprites[spriteId].pos2.y > 0)
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].y2 += gTasks[taskId].data[10] >> 8;
+ if (gSprites[spriteId].y2 > 0)
+ gSprites[spriteId].y2 = 0;
- if (gSprites[spriteId].pos2.y == 0)
+ if (gSprites[spriteId].y2 == 0)
{
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(-64));
DestroyAnimVisualTask(taskId);
@@ -4814,8 +4814,8 @@ static void AnimBlockX(struct Sprite *sprite)
y = -96;
}
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
- sprite->pos2.y = y;
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->y2 = y;
sprite->callback = AnimBlockX_Step;
}
@@ -4824,32 +4824,32 @@ static void AnimBlockX_Step(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos2.y += 10;
- if (sprite->pos2.y >= 0)
+ sprite->y2 += 10;
+ if (sprite->y2 >= 0)
{
PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(63));
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sprite->data[0]++;
}
break;
case 1:
sprite->data[1] += 4;
- sprite->pos2.y = -(gSineTable[sprite->data[1]] >> 3);
+ sprite->y2 = -(gSineTable[sprite->data[1]] >> 3);
if (sprite->data[1] > 0x7F)
{
PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(63));
sprite->data[1] = 0;
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sprite->data[0]++;
}
break;
case 2:
sprite->data[1] += 6;
- sprite->pos2.y = -(gSineTable[sprite->data[1]] >> 4);
+ sprite->y2 = -(gSineTable[sprite->data[1]] >> 4);
if (sprite->data[1] > 0x7F)
{
sprite->data[1] = 0;
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sprite->data[0]++;
}
break;
@@ -4901,8 +4901,8 @@ void AnimTask_OdorSleuthMovement(u8 taskId)
return;
}
- gSprites[spriteId2].pos2.x += 24;
- gSprites[spriteId1].pos2.x -= 24;
+ gSprites[spriteId2].x2 += 24;
+ gSprites[spriteId1].x2 -= 24;
gSprites[spriteId2].data[0] = 0;
gSprites[spriteId1].data[0] = 0;
gSprites[spriteId2].data[1] = 0;
@@ -4956,7 +4956,7 @@ static void MoveOdorSleuthClone(struct Sprite *sprite)
sprite->data[4] = sprite->data[4] + sprite->data[3];
sprite->data[4] &= 0xFF;
- sprite->pos2.x = Cos(sprite->data[4], sprite->data[5]);
+ sprite->x2 = Cos(sprite->data[4], sprite->data[5]);
switch (sprite->data[0])
{
case 0:
@@ -5014,12 +5014,12 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
gTasks[taskId].data[1] += 0x800;
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- gSprites[spriteId].pos2.x += (gTasks[taskId].data[1] >> 8);
+ gSprites[spriteId].x2 += (gTasks[taskId].data[1] >> 8);
else
- gSprites[spriteId].pos2.x -= (gTasks[taskId].data[1] >> 8);
+ gSprites[spriteId].x2 -= (gTasks[taskId].data[1] >> 8);
gTasks[taskId].data[1] &= 0xFF;
- x = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
+ x = gSprites[spriteId].x + gSprites[spriteId].x2;
if ((u16)(x + 32) > 304)
{
gTasks[taskId].data[1] = 0;
@@ -5049,7 +5049,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1;
isBackPic = FALSE;
- x = 272;
+ x = DISPLAY_WIDTH + 32;
}
else
{
@@ -5077,12 +5077,12 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
spriteId2 = gTasks[taskId].data[15];
gTasks[taskId].data[1] += 0x800;
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- gSprites[spriteId2].pos2.x -= (gTasks[taskId].data[1] >> 8);
+ gSprites[spriteId2].x2 -= (gTasks[taskId].data[1] >> 8);
else
- gSprites[spriteId2].pos2.x += (gTasks[taskId].data[1] >> 8);
+ gSprites[spriteId2].x2 += (gTasks[taskId].data[1] >> 8);
gTasks[taskId].data[1] &= 0xFF;
- x = gSprites[spriteId2].pos1.x + gSprites[spriteId2].pos2.x;
+ x = gSprites[spriteId2].x + gSprites[spriteId2].x2;
if (gTasks[taskId].data[14] == 0)
{
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
@@ -5114,9 +5114,9 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
spriteId2 = gTasks[taskId].data[15];
DestroySpriteAndFreeResources_(&gSprites[spriteId2]);
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- gSprites[spriteId].pos2.x = -gSprites[spriteId].pos1.x - 32;
+ gSprites[spriteId].x2 = -gSprites[spriteId].x - 32;
else
- gSprites[spriteId].pos2.x = 272 - gSprites[spriteId].pos1.x;
+ gSprites[spriteId].x2 = DISPLAY_WIDTH + 32 - gSprites[spriteId].x;
gTasks[taskId].data[0]++;
break;
@@ -5125,25 +5125,25 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
gTasks[taskId].data[1] += 0x800;
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
- gSprites[spriteId].pos2.x += (gTasks[taskId].data[1] >> 8);
- if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x >= GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X))
- gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].x2 += (gTasks[taskId].data[1] >> 8);
+ if (gSprites[spriteId].x2 + gSprites[spriteId].x >= GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X))
+ gSprites[spriteId].x2 = 0;
}
else
{
- gSprites[spriteId].pos2.x -= (gTasks[taskId].data[1] >> 8);
- if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x <= GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X))
- gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].x2 -= (gTasks[taskId].data[1] >> 8);
+ if (gSprites[spriteId].x2 + gSprites[spriteId].x <= GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X))
+ gSprites[spriteId].x2 = 0;
}
gTasks[taskId].data[1] &= 0xFF;
- if (gSprites[spriteId].pos2.x == 0)
+ if (gSprites[spriteId].x2 == 0)
DestroyAnimVisualTask(taskId);
break;
}
}
-static void sub_815FE80(struct Sprite *sprite)
+static void AnimUnusedItemBagSteal(struct Sprite *sprite)
{
switch (sprite->data[7])
{
@@ -5151,7 +5151,7 @@ static void sub_815FE80(struct Sprite *sprite)
if (gBattleAnimArgs[7] == -1)
{
PlaySE12WithPanning(SE_M_VITAL_THROW, BattleAnimAdjustPanning(63));
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 16;
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 16;
sprite->data[0] = -32;
sprite->data[7]++;
sprite->invisible = FALSE;
@@ -5164,7 +5164,7 @@ static void sub_815FE80(struct Sprite *sprite)
}
break;
case 1:
- sprite->pos2.y = Sin(sprite->data[1], sprite->data[0]);
+ sprite->y2 = Sin(sprite->data[1], sprite->data[0]);
sprite->data[1] += 5;
if (sprite->data[1] > 0x7F)
{
@@ -5175,9 +5175,9 @@ static void sub_815FE80(struct Sprite *sprite)
sprite->data[2] += 0x100;
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- sprite->pos2.x -= (sprite->data[2] >> 8);
+ sprite->x2 -= (sprite->data[2] >> 8);
else
- sprite->pos2.x += (sprite->data[2] >> 8);
+ sprite->x2 += (sprite->data[2] >> 8);
sprite->data[2] &= 0xFF;
if (sprite->data[3] == 2)
@@ -5208,15 +5208,15 @@ void AnimTask_SnatchPartnerMove(u8 taskId)
break;
case 1:
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
- gSprites[spriteId].pos2.x += gTasks[taskId].data[0];
+ gSprites[spriteId].x2 += gTasks[taskId].data[0];
if (gTasks[taskId].data[0] > 0)
{
- if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x >= gTasks[taskId].data[2])
+ if (gSprites[spriteId].x + gSprites[spriteId].x2 >= gTasks[taskId].data[2])
gTasks[taskId].data[15]++;
}
else
{
- if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x <= gTasks[taskId].data[2])
+ if (gSprites[spriteId].x + gSprites[spriteId].x2 <= gTasks[taskId].data[2])
gTasks[taskId].data[15]++;
}
break;
@@ -5226,22 +5226,22 @@ void AnimTask_SnatchPartnerMove(u8 taskId)
break;
case 3:
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
- gSprites[spriteId].pos2.x += gTasks[taskId].data[0];
+ gSprites[spriteId].x2 += gTasks[taskId].data[0];
if (gTasks[taskId].data[0] < 0)
{
- if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x <= gTasks[taskId].data[1])
+ if (gSprites[spriteId].x + gSprites[spriteId].x2 <= gTasks[taskId].data[1])
gTasks[taskId].data[15]++;
}
else
{
- if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x >= gTasks[taskId].data[1])
+ if (gSprites[spriteId].x + gSprites[spriteId].x2 >= gTasks[taskId].data[1])
gTasks[taskId].data[15]++;
}
break;
case 4:
default:
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
- gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].x2 = 0;
DestroyAnimVisualTask(taskId);
break;
}
@@ -5254,8 +5254,8 @@ void AnimTask_TeeterDanceMovement(u8 taskId)
struct Task *task = &gTasks[taskId];
task->data[3] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
task->data[4] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : -1;
- task->data[6] = gSprites[task->data[3]].pos1.y;
- task->data[5] = gSprites[task->data[3]].pos1.x;
+ task->data[6] = gSprites[task->data[3]].y;
+ task->data[5] = gSprites[task->data[3]].x;
task->data[9] = 0;
task->data[11] = 0;
task->data[10] = 1;
@@ -5271,23 +5271,23 @@ static void AnimTask_TeeterDanceMovement_Step(u8 taskId)
case 0:
task->data[11] += 8;
task->data[11] &= 0xFF;
- gSprites[task->data[3]].pos2.x = gSineTable[task->data[11]] >> 5;
+ gSprites[task->data[3]].x2 = gSineTable[task->data[11]] >> 5;
task->data[9] += 2;
task->data[9] &= 0xFF;
- gSprites[task->data[3]].pos1.x = (gSineTable[task->data[9]] >> 3) * task->data[4] + task->data[5];
+ gSprites[task->data[3]].x = (gSineTable[task->data[9]] >> 3) * task->data[4] + task->data[5];
if (task->data[9] == 0)
{
- gSprites[task->data[3]].pos1.x = task->data[5];
+ gSprites[task->data[3]].x = task->data[5];
task->data[0]++;
}
break;
case 1:
task->data[11] += 8;
task->data[11] &= 0xFF;
- gSprites[task->data[3]].pos2.x = gSineTable[task->data[11]] >> 5;
+ gSprites[task->data[3]].x2 = gSineTable[task->data[11]] >> 5;
if (task->data[11] == 0)
{
- gSprites[task->data[3]].pos2.x = 0;
+ gSprites[task->data[3]].x2 = 0;
task->data[0]++;
}
break;
@@ -5311,8 +5311,8 @@ static void AnimKnockOffStrike_Step(struct Sprite *sprite)
sprite->data[1] &= 0xFF;
}
- sprite->pos2.x = Cos(sprite->data[1], 20);
- sprite->pos2.y = Sin(sprite->data[1], 20);
+ sprite->x2 = Cos(sprite->data[1], 20);
+ sprite->y2 = Sin(sprite->data[1], 20);
if (sprite->animEnded)
DestroyAnimSprite(sprite);
@@ -5326,8 +5326,8 @@ static void AnimKnockOffStrike(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
{
- sprite->pos1.x -= gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x -= gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = -11;
sprite->data[1] = 192;
StartSpriteAffineAnim(sprite, 1);
@@ -5336,8 +5336,8 @@ static void AnimKnockOffStrike(struct Sprite *sprite)
{
sprite->data[0] = 11;
sprite->data[1] = 192;
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
}
sprite->callback = AnimKnockOffStrike_Step;
@@ -5347,10 +5347,10 @@ static void AnimKnockOffStrike(struct Sprite *sprite)
// No args.
static void AnimRecycle(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP);
- if (sprite->pos1.y < 16)
- sprite->pos1.y = 16;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP);
+ if (sprite->y < 16)
+ sprite->y = 16;
sprite->data[6] = 0;
sprite->data[7] = 16;
@@ -5456,14 +5456,14 @@ static void AnimTask_SlackOffSquish_Step(u8 taskId)
task->data[1] = 0;
task->data[2]++;
if (!(task->data[2] & 1))
- gSprites[task->data[15]].pos2.x = -1;
+ gSprites[task->data[15]].x2 = -1;
else
- gSprites[task->data[15]].pos2.x = 1;
+ gSprites[task->data[15]].x2 = 1;
}
}
else
{
- gSprites[task->data[15]].pos2.x = 0;
+ gSprites[task->data[15]].x2 = 0;
}
if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
diff --git a/src/battle_anim_electric.c b/src/battle_anim_electric.c
index 1e24f8a16..8a2469d09 100644
--- a/src/battle_anim_electric.c
+++ b/src/battle_anim_electric.c
@@ -7,9 +7,9 @@
static void AnimLightning(struct Sprite *);
static void AnimLightning_Step(struct Sprite *);
-static void AnimUnused_0810A214(struct Sprite *);
-static void AnimUnused_0810A214_Step(struct Sprite *);
-static void AnimUnused_0810A274(struct Sprite *);
+static void AnimUnusedSpinningFist(struct Sprite *);
+static void AnimUnusedSpinningFist_Step(struct Sprite *);
+static void AnimUnusedCirclingShock(struct Sprite *);
static void AnimSparkElectricity(struct Sprite *);
static void AnimZapCannonSpark(struct Sprite *);
static void AnimZapCannonSpark_Step(struct Sprite *);
@@ -63,7 +63,7 @@ const struct SpriteTemplate gLightningSpriteTemplate =
.callback = AnimLightning,
};
-static const union AffineAnimCmd sAnim_Unused_085956D8[] =
+static const union AffineAnimCmd sAffineAnim_UnusedSpinningFist[] =
{
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 20),
@@ -71,24 +71,24 @@ static const union AffineAnimCmd sAnim_Unused_085956D8[] =
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd *const sAnims_Unused_085956F8[] =
+static const union AffineAnimCmd *const sAffineAnims_UnusedSpinningFist[] =
{
- sAnim_Unused_085956D8,
+ sAffineAnim_UnusedSpinningFist,
};
// Unused
-const struct SpriteTemplate gUnusedSpriteTemplate_085956FC =
+static const struct SpriteTemplate sUnusedSpinningFistSpriteTemplate =
{
.tileTag = ANIM_TAG_HANDS_AND_FEET,
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
.oam = &gOamData_AffineNormal_ObjNormal_32x32,
.anims = gDummySpriteAnimTable,
.images = NULL,
- .affineAnims = sAnims_Unused_085956F8,
- .callback = AnimUnused_0810A214,
+ .affineAnims = sAffineAnims_UnusedSpinningFist,
+ .callback = AnimUnusedSpinningFist,
};
-static const union AnimCmd sAnim_Unused_08595714[] =
+static const union AnimCmd sAnim_UnusedCirclingShock[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(16, 5),
@@ -99,21 +99,21 @@ static const union AnimCmd sAnim_Unused_08595714[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sAnims_Unused_08595730[] =
+static const union AnimCmd *const sAnims_UnusedCirclingShock[] =
{
- sAnim_Unused_08595714,
+ sAnim_UnusedCirclingShock,
};
// Unused
-const struct SpriteTemplate gUnusedSpriteTemplate_08595734 =
+static const struct SpriteTemplate sUnusedCirclingShockSpriteTemplate =
{
.tileTag = ANIM_TAG_SHOCK,
.paletteTag = ANIM_TAG_SHOCK,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
- .anims = sAnims_Unused_08595730,
+ .anims = sAnims_UnusedCirclingShock,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = AnimUnused_0810A274,
+ .callback = AnimUnusedCirclingShock,
};
const struct SpriteTemplate gSparkElectricitySpriteTemplate =
@@ -459,11 +459,11 @@ const struct SpriteTemplate gShockWaveProgressingBoltSpriteTemplate =
static void AnimLightning(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
else
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->callback = AnimLightning_Step;
}
@@ -473,36 +473,36 @@ static void AnimLightning_Step(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
-static void AnimUnused_0810A214(struct Sprite *sprite)
+static void AnimUnusedSpinningFist(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
else
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
- sprite->callback = AnimUnused_0810A214_Step;
+ sprite->callback = AnimUnusedSpinningFist_Step;
}
-static void AnimUnused_0810A214_Step(struct Sprite *sprite)
+static void AnimUnusedSpinningFist_Step(struct Sprite *sprite)
{
if (sprite->affineAnimEnded)
DestroySpriteAndMatrix(sprite);
}
-static void AnimUnused_0810A274(struct Sprite *sprite)
+static void AnimUnusedCirclingShock(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
- sprite->pos1.x -= gBattleAnimArgs[0];
- sprite->pos1.y -= gBattleAnimArgs[1];
+ sprite->x -= gBattleAnimArgs[0];
+ sprite->y -= gBattleAnimArgs[1];
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
}
sprite->data[0] = 0;
sprite->data[1] = gBattleAnimArgs[2];
@@ -543,17 +543,17 @@ static void AnimSparkElectricity(struct Sprite *sprite)
if (gBattleAnimArgs[5] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X);
- sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y);
+ sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X);
+ sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET);
}
- sprite->pos2.x = (gSineTable[gBattleAnimArgs[0]] * gBattleAnimArgs[1]) >> 8;
- sprite->pos2.y = (gSineTable[gBattleAnimArgs[0] + 64] * gBattleAnimArgs[1]) >> 8;
+ sprite->x2 = (gSineTable[gBattleAnimArgs[0]] * gBattleAnimArgs[1]) >> 8;
+ sprite->y2 = (gSineTable[gBattleAnimArgs[0] + 64] * gBattleAnimArgs[1]) >> 8;
if (gBattleAnimArgs[6] & 1)
sprite->oam.priority = GetBattlerSpriteBGPriority(battler) + 1;
@@ -573,9 +573,9 @@ static void AnimZapCannonSpark(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, 1);
sprite->data[0] = gBattleAnimArgs[3];
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
InitAnimLinearTranslation(sprite);
sprite->data[5] = gBattleAnimArgs[2];
@@ -590,8 +590,8 @@ static void AnimZapCannonSpark_Step(struct Sprite *sprite)
{
if (!AnimTranslateLinear(sprite))
{
- sprite->pos2.x += Sin(sprite->data[7], sprite->data[5]);
- sprite->pos2.y += Cos(sprite->data[7], sprite->data[5]);
+ sprite->x2 += Sin(sprite->data[7], sprite->data[5]);
+ sprite->y2 += Cos(sprite->data[7], sprite->data[5]);
sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
if(!(sprite->data[7] % 3))
sprite->invisible ^= 1;
@@ -616,8 +616,8 @@ static void AnimThunderboltOrb(struct Sprite *sprite)
if (IsContest() || GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2];
sprite->data[3] = gBattleAnimArgs[0];
sprite->data[4] = gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[3];
@@ -637,8 +637,8 @@ static void AnimSparkElectricityFlashing(struct Sprite *sprite)
if (IsContest() || GetBattlerSide(battler) == B_SIDE_PLAYER)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1];
sprite->data[4] = gBattleAnimArgs[7] & 0x7FFF;
sprite->data[5] = gBattleAnimArgs[2];
@@ -652,8 +652,8 @@ static void AnimSparkElectricityFlashing(struct Sprite *sprite)
static void AnimSparkElectricityFlashing_Step(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[7], sprite->data[5]);
- sprite->pos2.y = Cos(sprite->data[7], sprite->data[5]);
+ sprite->x2 = Sin(sprite->data[7], sprite->data[5]);
+ sprite->y2 = Cos(sprite->data[7], sprite->data[5]);
sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
if (sprite->data[7] % sprite->data[4] == 0)
@@ -778,9 +778,9 @@ static void AnimThunderWave(struct Sprite *sprite)
{
u8 spriteId;
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
- spriteId = CreateSprite(&gThunderWaveSpriteTemplate, sprite->pos1.x + 32, sprite->pos1.y, sprite->subpriority);
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
+ spriteId = CreateSprite(&gThunderWaveSpriteTemplate, sprite->x + 32, sprite->y, sprite->subpriority);
gSprites[spriteId].oam.tileNum += 8;
gAnimVisualTaskCount++;
gSprites[spriteId].callback = AnimThunderWave_Step;
@@ -840,13 +840,13 @@ static void AnimTask_ElectricChargingParticles_Step(u8 taskId)
if (spriteId != MAX_SPRITES)
{
struct Sprite *sprite = &gSprites[spriteId];
- sprite->pos1.x += sElectricChargingParticleCoordOffsets[task->data[9]][0];
- sprite->pos1.y += sElectricChargingParticleCoordOffsets[task->data[9]][1];
+ sprite->x += sElectricChargingParticleCoordOffsets[task->data[9]][0];
+ sprite->y += sElectricChargingParticleCoordOffsets[task->data[9]][1];
sprite->data[0] = 40 - task->data[8] * 5;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = task->data[14];
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = task->data[15];
sprite->data[5] = taskId;
@@ -892,13 +892,13 @@ static void AnimGrowingChargeOrb(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
}
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
@@ -910,17 +910,17 @@ static void AnimElectricPuff(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
}
- sprite->pos2.x = gBattleAnimArgs[1];
- sprite->pos2.y = gBattleAnimArgs[2];
+ sprite->x2 = gBattleAnimArgs[1];
+ sprite->y2 = gBattleAnimArgs[2];
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
sprite->callback = RunStoredCallbackWhenAnimEnds;
}
@@ -929,8 +929,8 @@ static void AnimElectricPuff(struct Sprite *sprite)
static void AnimVoltTackleOrbSlide(struct Sprite *sprite)
{
StartSpriteAffineAnim(sprite, 1);
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
sprite->data[6] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
sprite->data[7] = 16;
@@ -949,9 +949,9 @@ static void AnimVoltTackleOrbSlide_Step(struct Sprite *sprite)
sprite->data[0]++;
break;
case 1:
- sprite->pos1.x += sprite->data[7];
- gSprites[sprite->data[6]].pos2.x += sprite->data[7];
- if ((u16)(sprite->pos1.x + 80) > 400)
+ sprite->x += sprite->data[7];
+ gSprites[sprite->data[6]].x2 += sprite->data[7];
+ if ((u16)(sprite->x + 80) > 400)
DestroySpriteAndMatrix(sprite);
}
}
@@ -976,7 +976,7 @@ void AnimTask_VoltTackleAttackerReappear(u8 taskId)
task->data[13] = -2;
}
- gSprites[task->data[15]].pos2.x = task->data[14];
+ gSprites[task->data[15]].x2 = task->data[14];
task->data[0]++;
break;
case 1:
@@ -988,7 +988,7 @@ void AnimTask_VoltTackleAttackerReappear(u8 taskId)
if (task->data[14])
{
task->data[14] += task->data[13];
- gSprites[task->data[15]].pos2.x = task->data[14];
+ gSprites[task->data[15]].x2 = task->data[14];
}
else
task->data[0]++;
@@ -1131,8 +1131,8 @@ static void AnimGrowingShockWaveOrb(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
StartSpriteAffineAnim(sprite, 2);
sprite->data[0]++;
break;
diff --git a/src/battle_anim_fight.c b/src/battle_anim_fight.c
index 328f178ae..47bb9312f 100644
--- a/src/battle_anim_fight.c
+++ b/src/battle_anim_fight.c
@@ -6,7 +6,7 @@
#include "trig.h"
#include "constants/rgb.h"
-static void AnimUnused_080B08A0(struct Sprite *);
+static void AnimUnusedHumanoidFoot(struct Sprite *);
static void AnimSlideHandOrFootToTarget(struct Sprite *);
static void AnimJumpKick(struct Sprite *);
static void AnimBasicFistOrFoot(struct Sprite *);
@@ -40,7 +40,7 @@ static void AnimSpinningKickOrPunchFinish(struct Sprite *);
extern struct SpriteTemplate gBasicHitSplatSpriteTemplate;
// Unused
-const struct SpriteTemplate gUnusedSpriteTemplate_08595E14 =
+static const struct SpriteTemplate sUnusedHumanoidFootSpriteTemplate =
{
.tileTag = ANIM_TAG_HUMANOID_FOOT,
.paletteTag = ANIM_TAG_HUMANOID_FOOT,
@@ -48,7 +48,7 @@ const struct SpriteTemplate gUnusedSpriteTemplate_08595E14 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = AnimUnused_080B08A0,
+ .callback = AnimUnusedHumanoidFoot,
};
static const union AnimCmd sAnim_Fist[] =
@@ -409,10 +409,10 @@ const struct SpriteTemplate gFocusPunchFistSpriteTemplate =
.callback = AnimFocusPunchFist,
};
-static void AnimUnused_080B08A0(struct Sprite *sprite)
+static void AnimUnusedHumanoidFoot(struct Sprite *sprite)
{
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = 15;
sprite->callback = WaitAnimForDuration;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
@@ -478,8 +478,8 @@ static void AnimFistOrFootRandomPos(struct Sprite *sprite)
gBattleAnimArgs[2] = Random2() % 5;
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
- sprite->pos1.x = GetBattlerSpriteCoord(battler, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(battler, 3);
+ sprite->x = GetBattlerSpriteCoord(battler, 2);
+ sprite->y = GetBattlerSpriteCoord(battler, 3);
xMod = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_WIDTH) / 2;
yMod = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 4;
@@ -495,11 +495,11 @@ static void AnimFistOrFootRandomPos(struct Sprite *sprite)
if ((gBattlerPositions[battler] & BIT_SIDE) == B_SIDE_PLAYER)
y += 0xFFF0;
- sprite->pos1.x += x;
- sprite->pos1.y += y;
+ sprite->x += x;
+ sprite->y += y;
sprite->data[0] = gBattleAnimArgs[1];
- sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1);
+ sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->x, sprite->y, sprite->subpriority + 1);
if (sprite->data[7] != 64)
{
StartSpriteAffineAnim(&gSprites[sprite->data[7]], 0);
@@ -534,15 +534,15 @@ static void AnimCrossChopHand(struct Sprite *sprite)
if (gBattleAnimArgs[2] == 0)
{
- sprite->data[2] = sprite->pos1.x - 20;
+ sprite->data[2] = sprite->x - 20;
}
else
{
- sprite->data[2] = sprite->pos1.x + 20;
+ sprite->data[2] = sprite->x + 20;
sprite->hFlip = 1;
}
- sprite->data[4] = sprite->pos1.y - 20;
+ sprite->data[4] = sprite->y - 20;
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, AnimCrossChopHand_Step);
}
@@ -551,13 +551,13 @@ static void AnimCrossChopHand_Step(struct Sprite *sprite)
{
if (++sprite->data[5] == 11)
{
- sprite->data[2] = sprite->pos1.x - sprite->pos2.x;
- sprite->data[4] = sprite->pos1.y - sprite->pos2.y;
+ sprite->data[2] = sprite->x - sprite->x2;
+ sprite->data[4] = sprite->y - sprite->y2;
sprite->data[0] = 8;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
@@ -576,10 +576,10 @@ static void AnimSlidingKick(struct Sprite *sprite)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[3];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
- sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[2] = sprite->x + gBattleAnimArgs[2];
+ sprite->data[3] = sprite->y;
+ sprite->data[4] = sprite->y;
InitAnimLinearTranslation(sprite);
@@ -594,7 +594,7 @@ static void AnimSlidingKick_Step(struct Sprite *sprite)
{
if (!AnimTranslateLinear(sprite))
{
- sprite->pos2.y += Sin(sprite->data[7] >> 8, sprite->data[5]);
+ sprite->y2 += Sin(sprite->data[7] >> 8, sprite->data[5]);
sprite->data[7] += sprite->data[6];
}
else
@@ -674,8 +674,8 @@ static void AnimDizzyPunchDuck(struct Sprite *sprite)
else
{
sprite->data[4] += sprite->data[1];
- sprite->pos2.x = sprite->data[4] >> 8;
- sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]);
+ sprite->x2 = sprite->data[4] >> 8;
+ sprite->y2 = Sin(sprite->data[3], sprite->data[2]);
sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
if (sprite->data[3] > 100)
@@ -691,17 +691,17 @@ static void AnimBrickBreakWall(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
}
- sprite->pos1.x += gBattleAnimArgs[1];
- sprite->pos1.y += gBattleAnimArgs[2];
+ sprite->x += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[2];
sprite->data[0] = 0;
sprite->data[1] = gBattleAnimArgs[3];
@@ -729,9 +729,9 @@ static void AnimBrickBreakWall_Step(struct Sprite *sprite)
sprite->data[1] = 0;
sprite->data[3]++;
if (sprite->data[3] & 1)
- sprite->pos2.x = 2;
+ sprite->x2 = 2;
else
- sprite->pos2.x = -2;
+ sprite->x2 = -2;
}
if (--sprite->data[2] == 0)
@@ -745,13 +745,13 @@ static void AnimBrickBreakWallShard(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[2];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[3];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[2];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[3];
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[2];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[3];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[2];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[3];
}
sprite->oam.tileNum += gBattleAnimArgs[1] * 16;
@@ -785,8 +785,8 @@ static void AnimBrickBreakWallShard(struct Sprite *sprite)
static void AnimBrickBreakWallShard_Step(struct Sprite *sprite)
{
- sprite->pos1.x += sprite->data[6];
- sprite->pos1.y += sprite->data[7];
+ sprite->x += sprite->data[6];
+ sprite->y += sprite->data[7];
if (++sprite->data[0] > 40)
DestroyAnimSprite(sprite);
@@ -796,8 +796,8 @@ static void AnimSuperpowerOrb(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
sprite->data[7] = gBattleAnimTarget;
}
@@ -820,9 +820,9 @@ static void AnimSuperpowerOrb_Step(struct Sprite *sprite)
SetGpuReg(REG_OFFSET_BLDCNT, 0);
sprite->data[0] = 16;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(sprite->data[7], 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], 3);
InitAnimLinearTranslation(sprite);
@@ -834,11 +834,11 @@ static void AnimSuperpowerOrb_Step(struct Sprite *sprite)
// Floating rock that flies off to hit the target. Used by Superpower
static void AnimSuperpowerRock(struct Sprite *sprite)
{
- sprite->pos1.x = gBattleAnimArgs[0];
- sprite->pos1.y = 120;
+ sprite->x = gBattleAnimArgs[0];
+ sprite->y = 120;
sprite->data[0] = gBattleAnimArgs[3];
- StorePointerInVars(&sprite->data[4], &sprite->data[5], (void *)(sprite->pos1.y << 8));
+ StorePointerInVars(&sprite->data[4], &sprite->data[5], (void *)(sprite->y << 8));
sprite->data[6] = gBattleAnimArgs[1];
sprite->oam.tileNum += gBattleAnimArgs[2] * 4;
@@ -857,8 +857,8 @@ static void AnimSuperpowerRock_Step1(struct Sprite *sprite)
StorePointerInVars(&sprite->data[4], &sprite->data[5], var0);
var0 = (void *)(((intptr_t)var0) >> 8);
- sprite->pos1.y = (intptr_t)var0;
- if (sprite->pos1.y < -8)
+ sprite->y = (intptr_t)var0;
+ if (sprite->y < -8)
DestroyAnimSprite(sprite);
else
sprite->data[0]--;
@@ -872,8 +872,8 @@ static void AnimSuperpowerRock_Step1(struct Sprite *sprite)
sprite->data[0] = pos2 - pos0;
sprite->data[1] = pos3 - pos1;
- sprite->data[2] = sprite->pos1.x << 4;
- sprite->data[3] = sprite->pos1.y << 4;
+ sprite->data[2] = sprite->x << 4;
+ sprite->data[3] = sprite->y << 4;
sprite->callback = AnimSuperpowerRock_Step2;
}
@@ -885,11 +885,11 @@ static void AnimSuperpowerRock_Step2(struct Sprite *sprite)
sprite->data[2] += sprite->data[0];
sprite->data[3] += sprite->data[1];
- sprite->pos1.x = sprite->data[2] >> 4;
- sprite->pos1.y = sprite->data[3] >> 4;
+ sprite->x = sprite->data[2] >> 4;
+ sprite->y = sprite->data[3] >> 4;
- edgeX = sprite->pos1.x + 8;
- if (edgeX > 256 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
+ edgeX = sprite->x + 8;
+ if (edgeX > 256 || sprite->y < -8 || sprite->y > 120)
DestroyAnimSprite(sprite);
}
@@ -899,8 +899,8 @@ static void AnimSuperpowerFireball(struct Sprite *sprite)
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
battler = gBattleAnimTarget;
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
}
@@ -916,9 +916,9 @@ static void AnimSuperpowerFireball(struct Sprite *sprite)
sprite->oam.matrixNum |= (ST_OAM_HFLIP | ST_OAM_VFLIP);
sprite->data[0] = 16;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(battler, 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(battler, 3);
InitAnimLinearTranslation(sprite);
@@ -938,8 +938,8 @@ static void AnimArmThrustHit(struct Sprite *sprite)
{
u8 turn;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[2] = gBattleAnimArgs[0];
sprite->data[3] = gBattleAnimArgs[1];
@@ -956,8 +956,8 @@ static void AnimArmThrustHit(struct Sprite *sprite)
}
StartSpriteAnim(sprite, sprite->data[1]);
- sprite->pos2.x = sprite->data[2];
- sprite->pos2.y = sprite->data[3];
+ sprite->x2 = sprite->data[2];
+ sprite->y2 = sprite->data[3];
sprite->callback = AnimArmThrustHit_Step;
}
@@ -987,7 +987,7 @@ static void AnimFocusPunchFist(struct Sprite *sprite)
if (sprite->affineAnimEnded)
{
sprite->data[1] = (sprite->data[1] + 40) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[1], 2);
+ sprite->x2 = Sin(sprite->data[1], 2);
if (++sprite->data[0] > 40)
DestroyAnimSprite(sprite);
}
diff --git a/src/battle_anim_fire.c b/src/battle_anim_fire.c
index 5b43f4276..e70f31449 100644
--- a/src/battle_anim_fire.c
+++ b/src/battle_anim_fire.c
@@ -12,8 +12,8 @@ static void AnimFireSpread(struct Sprite *);
static void AnimFirePlume(struct Sprite *);
static void AnimLargeFlame(struct Sprite *);
static void AnimLargeFlame_Step(struct Sprite *);
-static void AnimUnused_8109064(struct Sprite *);
-static void AnimUnused_8109064_Step(struct Sprite *);
+static void AnimUnusedSmallEmber(struct Sprite *);
+static void AnimUnusedSmallEmber_Step(struct Sprite *);
static void AnimSunlight(struct Sprite *);
static void AnimEmberFlare(struct Sprite *);
static void AnimBurnFlame(struct Sprite *);
@@ -162,7 +162,7 @@ const struct SpriteTemplate gFirePlumeSpriteTemplate =
};
// Unused
-const struct SpriteTemplate gUnusedSpriteTemplate_08595440 =
+static const struct SpriteTemplate sUnusedEmberFirePlumeSpriteTemplate =
{
.tileTag = ANIM_TAG_SMALL_EMBER,
.paletteTag = ANIM_TAG_SMALL_EMBER,
@@ -173,7 +173,7 @@ const struct SpriteTemplate gUnusedSpriteTemplate_08595440 =
.callback = AnimFirePlume,
};
-static const union AnimCmd sAnim_Unused_08595458[] =
+static const union AnimCmd sAnim_UnusedSmallEmber[] =
{
ANIMCMD_FRAME(16, 6),
ANIMCMD_FRAME(32, 6),
@@ -181,21 +181,21 @@ static const union AnimCmd sAnim_Unused_08595458[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sAnims_Unused_08595468[] =
+static const union AnimCmd *const sAnims_UnusedSmallEmber[] =
{
- sAnim_Unused_08595458,
+ sAnim_UnusedSmallEmber,
};
// Unused
-const struct SpriteTemplate gUnusedSpriteTemplate_0859546C =
+static const struct SpriteTemplate sUnusedSmallEmberSpriteTemplate =
{
.tileTag = ANIM_TAG_SMALL_EMBER,
.paletteTag = ANIM_TAG_SMALL_EMBER,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
- .anims = sAnims_Unused_08595468,
+ .anims = sAnims_UnusedSmallEmber,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = AnimUnused_8109064,
+ .callback = AnimUnusedSmallEmber,
};
static const union AffineAnimCmd sAffineAnim_SunlightRay[] =
@@ -292,23 +292,23 @@ static const union AnimCmd *const sAnims_FireBlastCross[] =
sAnim_FireBlastCross,
};
-static const union AffineAnimCmd sAnim_Unused_08595544[] =
+static const union AffineAnimCmd sAffineAnim_Unused_0[] =
{
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sAnim_Unused_08595554[] =
+static const union AffineAnimCmd sAffineAnim_Unused_1[] =
{
AFFINEANIMCMD_FRAME(0xA0, 0xA0, 0, 0),
AFFINEANIMCMD_END,
};
// Unused
-static const union AffineAnimCmd *const sAnims_Unused_08595564[] =
+static const union AffineAnimCmd *const sAffineAnims_Unused[] =
{
- sAnim_Unused_08595544,
- sAnim_Unused_08595554,
+ sAffineAnim_Unused_0,
+ sAffineAnim_Unused_1,
};
const struct SpriteTemplate gFireBlastCrossSpriteTemplate =
@@ -481,7 +481,7 @@ static void AnimFireSpread(struct Sprite *sprite)
{
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[1] = gBattleAnimArgs[2];
sprite->data[2] = gBattleAnimArgs[3];
@@ -496,14 +496,14 @@ static void AnimFirePlume(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimAttacker))
{
- sprite->pos1.x -= gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x -= gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[2] = -gBattleAnimArgs[4];
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[2] = gBattleAnimArgs[4];
}
@@ -518,14 +518,14 @@ static void AnimLargeFlame(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker))
{
- sprite->pos1.x -= gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x -= gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[2] = gBattleAnimArgs[4];
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[2] = -gBattleAnimArgs[4];
}
@@ -540,29 +540,29 @@ static void AnimLargeFlame_Step(struct Sprite *sprite)
{
if (++sprite->data[0] < sprite->data[4])
{
- sprite->pos2.x += sprite->data[2];
- sprite->pos2.y += sprite->data[3];
+ sprite->x2 += sprite->data[2];
+ sprite->y2 += sprite->data[3];
}
if (sprite->data[0] == sprite->data[1])
DestroySpriteAndMatrix(sprite);
}
-static void AnimUnused_8109064(struct Sprite *sprite)
+static void AnimUnusedSmallEmber(struct Sprite *sprite)
{
SetSpriteCoordsToAnimAttackerCoords(sprite);
if (GetBattlerSide(gBattleAnimAttacker))
{
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
sprite->subpriority = 8;
}
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[2] = gBattleAnimArgs[4];
@@ -570,18 +570,18 @@ static void AnimUnused_8109064(struct Sprite *sprite)
sprite->data[4] = gBattleAnimArgs[6];
sprite->data[5] = 0;
- sprite->callback = AnimUnused_8109064_Step;
+ sprite->callback = AnimUnusedSmallEmber_Step;
}
-static void AnimUnused_8109064_Step(struct Sprite *sprite)
+static void AnimUnusedSmallEmber_Step(struct Sprite *sprite)
{
if (sprite->data[3])
{
if(sprite->data[5] > 10000)
sprite->subpriority = 1;
- sprite->pos2.x = Sin(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8));
- sprite->pos2.y = Cos(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8));
+ sprite->x2 = Sin(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8));
+ sprite->y2 = Cos(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8));
sprite->data[0] += sprite->data[2];
sprite->data[5] += sprite->data[4];
@@ -602,8 +602,8 @@ static void AnimUnused_8109064_Step(struct Sprite *sprite)
// Sunlight from Sunny Day / sunny weather
static void AnimSunlight(struct Sprite *sprite)
{
- sprite->pos1.x = 0;
- sprite->pos1.y = 0;
+ sprite->x = 0;
+ sprite->y = 0;
sprite->data[0] = 60;
sprite->data[2] = 140;
sprite->data[4] = 80;
@@ -664,9 +664,9 @@ static void AnimFireRing_Step1(struct Sprite *sprite)
if (++sprite->data[0] == 0x12)
{
sprite->data[0] = 0x19;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
InitAnimLinearTranslation(sprite);
@@ -681,18 +681,18 @@ static void AnimFireRing_Step2(struct Sprite *sprite)
{
sprite->data[0] = 0;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->callback = AnimFireRing_Step3;
sprite->callback(sprite);
}
else
{
- sprite->pos2.x += Sin(sprite->data[7], 28);
- sprite->pos2.y += Cos(sprite->data[7], 28);
+ sprite->x2 += Sin(sprite->data[7], 28);
+ sprite->y2 += Cos(sprite->data[7], 28);
sprite->data[7] = (sprite->data[7] + 20) & 0xFF;
}
@@ -708,8 +708,8 @@ static void AnimFireRing_Step3(struct Sprite *sprite)
static void UpdateFireRingCircleOffset(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[7], 28);
- sprite->pos2.y = Cos(sprite->data[7], 28);
+ sprite->x2 = Sin(sprite->data[7], 28);
+ sprite->y2 = Cos(sprite->data[7], 28);
sprite->data[7] = (sprite->data[7] + 20) & 0xFF;
}
@@ -722,8 +722,8 @@ static void UpdateFireRingCircleOffset(struct Sprite *sprite)
// AnimFireCross(struct Sprite *sprite)
static void AnimFireCross(struct Sprite *sprite)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
@@ -760,8 +760,8 @@ static void AnimFireSpiralOutward_Step1(struct Sprite *sprite)
static void AnimFireSpiralOutward_Step2(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8);
- sprite->pos2.y = Cos(sprite->data[1], sprite->data[2] >> 8);
+ sprite->x2 = Sin(sprite->data[1], sprite->data[2] >> 8);
+ sprite->y2 = Cos(sprite->data[1], sprite->data[2] >> 8);
sprite->data[1] = (sprite->data[1] + 10) & 0xFF;
sprite->data[2] += 0xD0;
@@ -781,7 +781,7 @@ void AnimTask_EruptionLaunchRocks(u8 taskId)
task->data[1] = 0;
task->data[2] = 0;
task->data[3] = 0;
- task->data[4] = gSprites[task->data[15]].pos1.y;
+ task->data[4] = gSprites[task->data[15]].y;
task->data[5] = GetBattlerSide(gBattleAnimAttacker);
task->data[6] = 0;
@@ -805,9 +805,9 @@ static void AnimTask_EruptionLaunchRocks_Step(u8 taskId)
task->data[1] = 0;
if (++task->data[2] & 0x1)
- gSprites[task->data[15]].pos2.x = 3;
+ gSprites[task->data[15]].x2 = 3;
else
- gSprites[task->data[15]].pos2.x = -3;
+ gSprites[task->data[15]].x2 = -3;
}
if (task->data[5] != B_SIDE_PLAYER)
@@ -815,14 +815,14 @@ static void AnimTask_EruptionLaunchRocks_Step(u8 taskId)
if (++task->data[3] > 4)
{
task->data[3] = 0;
- gSprites[task->data[15]].pos1.y++;
+ gSprites[task->data[15]].y++;
}
}
if(!UpdateEruptAnimTask(task))
{
SetBattlerSpriteYOffsetFromYScale(task->data[15]);
- gSprites[task->data[15]].pos2.x = 0;
+ gSprites[task->data[15]].x2 = 0;
task->data[1] = 0;
task->data[2] = 0;
@@ -855,9 +855,9 @@ static void AnimTask_EruptionLaunchRocks_Step(u8 taskId)
task->data[1] = 0;
if (++task->data[2] & 1)
- gSprites[task->data[15]].pos2.y += 3;
+ gSprites[task->data[15]].y2 += 3;
else
- gSprites[task->data[15]].pos2.y -= 3;
+ gSprites[task->data[15]].y2 -= 3;
}
if (++task->data[3] > 0x18)
@@ -868,7 +868,7 @@ static void AnimTask_EruptionLaunchRocks_Step(u8 taskId)
PrepareEruptAnimTaskData(task, task->data[15], 0x180, 0xC0, 0x100, 0x100, 8);
if (task->data[2] & 1)
- gSprites[task->data[15]].pos2.y -= 3;
+ gSprites[task->data[15]].y2 -= 3;
task->data[1] = 0;
task->data[2] = 0;
@@ -878,11 +878,11 @@ static void AnimTask_EruptionLaunchRocks_Step(u8 taskId)
break;
case 5:
if (task->data[5] != B_SIDE_PLAYER)
- gSprites[task->data[15]].pos1.y--;
+ gSprites[task->data[15]].y--;
if (!UpdateEruptAnimTask(task))
{
- gSprites[task->data[15]].pos1.y = task->data[4];
+ gSprites[task->data[15]].y = task->data[4];
ResetSpriteRotScale(task->data[15]);
task->data[2] = 0;
task->data[0]++;
@@ -903,7 +903,7 @@ static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 a3)
s8 sign;
u16 y = GetEruptionLaunchRockInitialYPos(spriteId);
- u16 x = gSprites[spriteId].pos1.x;
+ u16 x = gSprites[spriteId].x;
if(!GetBattlerSide(gBattleAnimAttacker))
{
@@ -949,7 +949,7 @@ static void AnimEruptionLaunchRock(struct Sprite *sprite)
static u16 GetEruptionLaunchRockInitialYPos(u8 spriteId)
{
- s16 y = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y + gSprites[spriteId].centerToCornerVecY;
+ s16 y = gSprites[spriteId].y + gSprites[spriteId].y2 + gSprites[spriteId].centerToCornerVecY;
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
y += 74;
@@ -963,8 +963,8 @@ static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 x, s16 y)
{
sprite->data[0] = 0;
sprite->data[1] = 0;
- sprite->data[2] = (u16)sprite->pos1.x * 8;
- sprite->data[3] = (u16)sprite->pos1.y * 8;
+ sprite->data[2] = (u16)sprite->x * 8;
+ sprite->data[3] = (u16)sprite->y * 8;
sprite->data[4] = x * 8;
sprite->data[5] = y * 8;
}
@@ -981,18 +981,18 @@ static void UpdateEruptionLaunchRockPos(struct Sprite *sprite)
}
sprite->data[2] += sprite->data[4];
- sprite->pos1.x = sprite->data[2] >> 3;
+ sprite->x = sprite->data[2] >> 3;
sprite->data[3] += sprite->data[5];
- sprite->pos1.y = sprite->data[3] >> 3;
+ sprite->y = sprite->data[3] >> 3;
- if (sprite->pos1.x < -8 || sprite->pos1.x > 0xf8 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
+ if (sprite->x < -8 || sprite->x > 0xf8 || sprite->y < -8 || sprite->y > 120)
sprite->invisible = TRUE;
}
static void AnimEruptionFallingRock(struct Sprite *sprite)
{
- sprite->pos1.x = gBattleAnimArgs[0];
- sprite->pos1.y = gBattleAnimArgs[1];
+ sprite->x = gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[1];
sprite->data[0] = 0;
sprite->data[1] = 0;
@@ -1018,10 +1018,10 @@ static void AnimEruptionFallingRock_Step(struct Sprite *sprite)
sprite->data[0]++;
// fall through
case 1:
- sprite->pos1.y += 8;
- if (sprite->pos1.y >= sprite->data[7])
+ sprite->y += 8;
+ if (sprite->y >= sprite->data[7])
{
- sprite->pos1.y = sprite->data[7];
+ sprite->y = sprite->data[7];
sprite->data[0]++;
}
break;
@@ -1031,11 +1031,11 @@ static void AnimEruptionFallingRock_Step(struct Sprite *sprite)
sprite->data[1] = 0;
if ((++sprite->data[2] & 1) != 0)
{
- sprite->pos2.y = -3;
+ sprite->y2 = -3;
}
else
{
- sprite->pos2.y = 3;
+ sprite->y2 = 3;
}
}
@@ -1072,14 +1072,14 @@ static void AnimWillOWispOrb(struct Sprite *sprite)
sprite->data[1] += 192;
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
- sprite->pos2.y = -(sprite->data[1] >> 8);
+ sprite->y2 = -(sprite->data[1] >> 8);
}
else
{
- sprite->pos2.y = sprite->data[1] >> 8;
+ sprite->y2 = sprite->data[1] >> 8;
}
- sprite->pos2.x = Sin(sprite->data[2], sprite->data[4]);
+ sprite->x2 = Sin(sprite->data[2], sprite->data[4]);
sprite->data[2] = (sprite->data[2] + 4) & 0xFF;
if (++sprite->data[3] == 1)
@@ -1089,20 +1089,20 @@ static void AnimWillOWispOrb(struct Sprite *sprite)
}
break;
case 2:
- sprite->pos2.x = Sin(sprite->data[2], sprite->data[4]);
+ sprite->x2 = Sin(sprite->data[2], sprite->data[4]);
sprite->data[2] = (sprite->data[2] + 4) & 0xFF;
if (++sprite->data[3] == 31)
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[0] = 256;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
InitAnimLinearTranslationWithSpeed(sprite);
@@ -1119,7 +1119,7 @@ static void AnimWillOWispOrb_Step(struct Sprite *sprite)
if (!AnimTranslateLinear(sprite))
{
- sprite->pos2.x += Sin(sprite->data[5], 16);
+ sprite->x2 += Sin(sprite->data[5], 16);
initialData5 = sprite->data[5];
sprite->data[5] = (sprite->data[5] + 4) & 0xFF;
newData5 = sprite->data[5];
@@ -1146,8 +1146,8 @@ static void AnimWillOWispFire(struct Sprite *sprite)
sprite->data[3] += 0xC0 * 2;
sprite->data[4] += 0xA0;
- sprite->pos2.x = Sin(sprite->data[1], sprite->data[3] >> 8);
- sprite->pos2.y = Cos(sprite->data[1], sprite->data[4] >> 8);
+ sprite->x2 = Sin(sprite->data[1], sprite->data[3] >> 8);
+ sprite->y2 = Cos(sprite->data[1], sprite->data[4] >> 8);
sprite->data[1] = (sprite->data[1] + 7) & 0xFF;
@@ -1205,7 +1205,7 @@ static void AnimTask_MoveHeatWaveTargets_Step(u8 taskId)
for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
{
- gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11];
+ gSprites[task->data[task->data[3] + 14]].x2 = task->data[10] + task->data[11];
}
if (++task->data[9] == 16)
@@ -1228,7 +1228,7 @@ static void AnimTask_MoveHeatWaveTargets_Step(u8 taskId)
for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
{
- gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11];
+ gSprites[task->data[task->data[3] + 14]].x2 = task->data[10] + task->data[11];
}
if (++task->data[9] == 96)
@@ -1253,7 +1253,7 @@ static void AnimTask_MoveHeatWaveTargets_Step(u8 taskId)
for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
{
- gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11];
+ gSprites[task->data[task->data[3] + 14]].x2 = task->data[10] + task->data[11];
}
if (++task->data[9] == 16)
@@ -1264,7 +1264,7 @@ static void AnimTask_MoveHeatWaveTargets_Step(u8 taskId)
case 3:
for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
{
- gSprites[task->data[task->data[3] + 14]].pos2.x = 0;
+ gSprites[task->data[task->data[3] + 14]].x2 = 0;
}
DestroyAnimVisualTask(taskId);
@@ -1312,14 +1312,14 @@ void AnimTask_ShakeTargetInPattern(u8 taskId)
dir = sShakeDirsPattern1[gTasks[taskId].tShakeNum % 10];
if (gTasks[taskId].tVertical == TRUE)
- gSprites[spriteId].pos2.y = gBattleAnimArgs[1] * dir < 0 ? -(gBattleAnimArgs[1] * dir) : gBattleAnimArgs[1] * dir;
+ gSprites[spriteId].y2 = gBattleAnimArgs[1] * dir < 0 ? -(gBattleAnimArgs[1] * dir) : gBattleAnimArgs[1] * dir;
else
- gSprites[spriteId].pos2.x = gBattleAnimArgs[1] * dir;
+ gSprites[spriteId].x2 = gBattleAnimArgs[1] * dir;
if (gTasks[taskId].tShakeNum == gTasks[taskId].tMaxShakes)
{
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].x2 = 0;
+ gSprites[spriteId].y2 = 0;
DestroyAnimVisualTask(taskId);
}
}
diff --git a/src/battle_anim_flying.c b/src/battle_anim_flying.c
index 060149a9e..1e9b3b56f 100644
--- a/src/battle_anim_flying.c
+++ b/src/battle_anim_flying.c
@@ -20,7 +20,7 @@ static void AnimFlyBallAttack_Step(struct Sprite *);
static void AnimFallingFeather(struct Sprite *);
static void AnimFallingFeather_Step(struct Sprite *);
static void AnimWhirlwindLine_Step(struct Sprite *);
-static void AnimUnused_810EA4C(struct Sprite *);
+static void AnimUnusedBubbleThrow(struct Sprite *);
static void AnimWhirlwindLine(struct Sprite *);
static void AnimBounceBallShrink(struct Sprite *);
static void AnimBounceBallLand(struct Sprite *);
@@ -30,8 +30,8 @@ static void AnimDiveBall_Step2(struct Sprite *);
static void AnimDiveWaterSplash(struct Sprite *);
static void AnimSprayWaterDroplet(struct Sprite *);
static void AnimSprayWaterDroplet_Step(struct Sprite *);
-static void AnimUnused_810F004(struct Sprite *);
-static void AnimUnused_810F004_Step(struct Sprite *);
+static void AnimUnusedFlashingLight(struct Sprite *);
+static void AnimUnusedFlashingLight_Step(struct Sprite *);
static void AnimSkyAttackBird(struct Sprite *);
static void AnimSkyAttackBird_Step(struct Sprite *);
static void AnimTask_AnimateGustTornadoPalette_Step(u8);
@@ -180,7 +180,7 @@ const struct SpriteTemplate gFallingFeatherSpriteTemplate =
};
// Unused
-const struct SpriteTemplate gUnusedSpriteTemplate_085963A0 =
+static const struct SpriteTemplate sUnusedBubbleThrowSpriteTemplate =
{
.tileTag = ANIM_TAG_SMALL_BUBBLES,
.paletteTag = ANIM_TAG_SMALL_BUBBLES,
@@ -188,7 +188,7 @@ const struct SpriteTemplate gUnusedSpriteTemplate_085963A0 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = AnimUnused_810EA4C,
+ .callback = AnimUnusedBubbleThrow,
};
static const union AnimCmd sAnim_WhirlwindLines[] =
@@ -290,7 +290,7 @@ const struct SpriteTemplate gDiveBallSpriteTemplate =
.callback = AnimDiveBall,
};
-static const union AffineAnimCmd sAnim_Unused_085964A8[] =
+static const union AffineAnimCmd sAnim_Unused[] =
{
AFFINEANIMCMD_FRAME(0x100, 0x0, 0, 0),
AFFINEANIMCMD_FRAME(0x0, 0x20, 0, 12),
@@ -299,9 +299,9 @@ static const union AffineAnimCmd sAnim_Unused_085964A8[] =
};
// Unused
-static const union AffineAnimCmd *const sAnims_Unused_085964C8[] =
+static const union AffineAnimCmd *const sAnims_Unused[] =
{
- sAnim_Unused_085964A8,
+ sAnim_Unused,
};
const struct SpriteTemplate gDiveWaterSplashSpriteTemplate =
@@ -327,7 +327,7 @@ const struct SpriteTemplate gSprayWaterDropletSpriteTemplate =
};
// Unused
-const struct SpriteTemplate gUnusedSpriteTemplate_085964FC =
+static const struct SpriteTemplate sUnusedFlashingLightSpriteTemplate =
{
.tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
.paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT,
@@ -335,7 +335,7 @@ const struct SpriteTemplate gUnusedSpriteTemplate_085964FC =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = AnimUnused_810F004,
+ .callback = AnimUnusedFlashingLight,
};
const struct SpriteTemplate gSkyAttackBirdSpriteTemplate =
@@ -353,7 +353,7 @@ const struct SpriteTemplate gSkyAttackBirdSpriteTemplate =
static void AnimEllipticalGust(struct Sprite *sprite)
{
InitSpritePosToAnimTarget(sprite, FALSE);
- sprite->pos1.y += 20;
+ sprite->y += 20;
sprite->data[1] = 191;
sprite->callback = AnimEllipticalGust_Step;
sprite->callback(sprite);
@@ -361,8 +361,8 @@ static void AnimEllipticalGust(struct Sprite *sprite)
static void AnimEllipticalGust_Step(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[1], 32);
- sprite->pos2.y = Cos(sprite->data[1], 8);
+ sprite->x2 = Sin(sprite->data[1], 32);
+ sprite->y2 = Cos(sprite->data[1], 8);
sprite->data[1] += 5;
sprite->data[1] &= 0xFF;
if (++sprite->data[0] == 71)
@@ -412,9 +412,9 @@ static void AnimGustToTarget(struct Sprite *sprite)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3];
InitAnimLinearTranslation(sprite);
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
@@ -443,10 +443,10 @@ static void AnimAirWaveCrescent(struct Sprite *sprite)
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
}
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[4];
if (gBattleAnimArgs[6] == 0)
@@ -485,10 +485,10 @@ static void AnimFlyBallUp_Step(struct Sprite *sprite)
else
{
sprite->data[2] += sprite->data[1];
- sprite->pos2.y -= (sprite->data[2] >> 8);
+ sprite->y2 -= (sprite->data[2] >> 8);
}
- if (sprite->pos1.y + sprite->pos2.y < -32)
+ if (sprite->y + sprite->y2 < -32)
DestroyAnimSprite(sprite);
}
@@ -496,20 +496,20 @@ static void AnimFlyBallAttack(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
- sprite->pos1.x = 272;
- sprite->pos1.y = -32;
+ sprite->x = DISPLAY_WIDTH + 32;
+ sprite->y = -32;
StartSpriteAffineAnim(sprite, 1);
}
else
{
- sprite->pos1.x = -32;
- sprite->pos1.y = -32;
+ sprite->x = -32;
+ sprite->y = -32;
}
sprite->data[0] = gBattleAnimArgs[0];
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
InitAnimLinearTranslation(sprite);
@@ -522,14 +522,14 @@ static void AnimFlyBallAttack_Step(struct Sprite *sprite)
AnimTranslateLinear(sprite);
if (((u16)sprite->data[3] >> 8) > 200)
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->x2 = 0;
sprite->data[3] &= 0xFF;
}
- if (sprite->pos1.x + sprite->pos2.x < -32
- || sprite->pos1.x + sprite->pos2.x > 272
- || sprite->pos1.y + sprite->pos2.y > 160)
+ if (sprite->x + sprite->x2 < -32
+ || sprite->x + sprite->x2 > DISPLAY_WIDTH + 32
+ || sprite->y + sprite->y2 > DISPLAY_HEIGHT)
{
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = FALSE;
DestroyAnimSprite(sprite);
@@ -584,11 +584,11 @@ static void AnimFallingFeather(struct Sprite *sprite)
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_HEIGHT) + gBattleAnimArgs[0];
+ sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_HEIGHT) + gBattleAnimArgs[0];
spriteCoord = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_WIDTH);
- sprite->pos1.y = spriteCoord + gBattleAnimArgs[1];
+ sprite->y = spriteCoord + gBattleAnimArgs[1];
- data->unk8 = sprite->pos1.y << 8;
+ data->unk8 = sprite->y << 8;
data->unkE_1 = spriteCoord + gBattleAnimArgs[6];
data->unk0_0c = 1;
data->unk2 = gBattleAnimArgs[2] & 0xFF;
@@ -631,10 +631,10 @@ static void AnimFallingFeather(struct Sprite *sprite)
}
data->unk0_1 = data->unk2 >> 6;
- sprite->pos2.x = (gSineTable[data->unk2] * data->unkC[0]) >> 8;
+ sprite->x2 = (gSineTable[data->unk2] * data->unkC[0]) >> 8;
matrixNum = sprite->oam.matrixNum;
- sinIndex = (-sprite->pos2.x >> 1) + data->unkA;
+ sinIndex = (-sprite->x2 >> 1) + data->unkA;
spriteCoord = gSineTable[sinIndex];
gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
@@ -867,10 +867,10 @@ static void AnimFallingFeather_Step(struct Sprite *sprite)
break;
}
- sprite->pos2.x = ((s32)data->unkC[data->unk0_0b] * gSineTable[data->unk2]) >> 8;
+ sprite->x2 = ((s32)data->unkC[data->unk0_0b] * gSineTable[data->unk2]) >> 8;
matrixNum = sprite->oam.matrixNum;
- sinIndex = (-sprite->pos2.x >> 1) + data->unkA;
+ sinIndex = (-sprite->x2 >> 1) + data->unkA;
sinVal = gSineTable[sinIndex];
gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
@@ -878,13 +878,13 @@ static void AnimFallingFeather_Step(struct Sprite *sprite)
gOamMatrices[matrixNum].c = -sinVal;
data->unk8 += data->unk6;
- sprite->pos1.y = data->unk8 >> 8;
+ sprite->y = data->unk8 >> 8;
if (data->unk4 & 0x8000)
data->unk2 = (data->unk2 - (data->unk4 & 0x7FFF)) & 0xFF;
else
data->unk2 = (data->unk2 + (data->unk4 & 0x7FFF)) & 0xFF;
- if (sprite->pos1.y + sprite->pos2.y >= data->unkE_1)
+ if (sprite->y + sprite->y2 >= data->unkE_1)
{
sprite->data[0] = 0;
sprite->callback = DestroyAnimSpriteAfterTimer;
@@ -892,11 +892,11 @@ static void AnimFallingFeather_Step(struct Sprite *sprite)
}
}
-static void AnimUnused_810EA4C(struct Sprite *sprite)
+static void AnimUnusedBubbleThrow(struct Sprite *sprite)
{
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
}
@@ -913,16 +913,16 @@ static void AnimWhirlwindLine(struct Sprite * sprite)
if ((gBattleAnimArgs[2] == ANIM_ATTACKER && !GetBattlerSide(gBattleAnimAttacker))
|| (gBattleAnimArgs[2] == ANIM_TARGET && !GetBattlerSide(gBattleAnimTarget)))
{
- sprite->pos1.x += 8;
+ sprite->x += 8;
}
SeekSpriteAnim(sprite, gBattleAnimArgs[4]);
- sprite->pos1.x -= 32;
+ sprite->x -= 32;
sprite->data[1] = 0x0ccc;
offset = gBattleAnimArgs[4];
mult = 12;
- sprite->pos2.x += mult * offset;
+ sprite->x2 += mult * offset;
sprite->data[0] = offset;
sprite->data[7] = gBattleAnimArgs[3];
sprite->callback = AnimWhirlwindLine_Step;
@@ -930,12 +930,12 @@ static void AnimWhirlwindLine(struct Sprite * sprite)
static void AnimWhirlwindLine_Step(struct Sprite *sprite)
{
- sprite->pos2.x += sprite->data[1] >> 8;
+ sprite->x2 += sprite->data[1] >> 8;
if (++sprite->data[0] == 6)
{
sprite->data[0] = 0;
- sprite->pos2.x = 0;
+ sprite->x2 = 0;
StartSpriteAnim(sprite, 0);
}
@@ -987,18 +987,18 @@ static void AnimBounceBallLand(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
- sprite->pos2.y = -sprite->pos1.y - 32;
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->y2 = -sprite->y - 32;
sprite->data[0]++;
break;
case 1:
- sprite->pos2.y += 10;
- if (sprite->pos2.y >= 0)
+ sprite->y2 += 10;
+ if (sprite->y2 >= 0)
++sprite->data[0];
break;
case 2:
- sprite->pos2.y -= 10;
- if (sprite->pos1.y + sprite->pos2.y < -32)
+ sprite->y2 -= 10;
+ if (sprite->y + sprite->y2 < -32)
{
gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = FALSE;
DestroyAnimSprite(sprite);
@@ -1022,10 +1022,10 @@ void AnimDiveBall_Step1(struct Sprite *sprite)
{
sprite->data[0]--;
}
- else if (sprite->pos1.y + sprite->pos2.y > -32)
+ else if (sprite->y + sprite->y2 > -32)
{
sprite->data[2] += sprite->data[1];
- sprite->pos2.y -= (sprite->data[2] >> 8);
+ sprite->y2 -= (sprite->data[2] >> 8);
}
else
{
@@ -1037,12 +1037,12 @@ void AnimDiveBall_Step1(struct Sprite *sprite)
static void AnimDiveBall_Step2(struct Sprite *sprite)
{
- sprite->pos2.y += sprite->data[2] >> 8;
+ sprite->y2 += sprite->data[2] >> 8;
- if (sprite->pos1.y + sprite->pos2.y > -32)
+ if (sprite->y + sprite->y2 > -32)
sprite->invisible = FALSE;
- if (sprite->pos2.y > 0)
+ if (sprite->y2 > 0)
DestroyAnimSprite(sprite);
}
@@ -1056,13 +1056,13 @@ static void AnimDiveWaterSplash(struct Sprite *sprite)
case 0:
if (!gBattleAnimArgs[0])
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
}
sprite->data[1] = 0x200;
@@ -1089,7 +1089,7 @@ static void AnimDiveWaterSplash(struct Sprite *sprite)
t2 = 128;
t2 = (64 - t2) / 2;
- sprite->pos2.y = t2;
+ sprite->y2 = t2;
if (sprite->data[2] == 24)
{
@@ -1123,13 +1123,13 @@ static void AnimSprayWaterDroplet(struct Sprite *sprite)
if (gBattleAnimArgs[1] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32;
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 32;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 32;
}
sprite->callback = AnimSprayWaterDroplet_Step;
@@ -1139,13 +1139,13 @@ static void AnimSprayWaterDroplet_Step(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
- sprite->pos2.x += sprite->data[0] >> 8;
- sprite->pos2.y -= sprite->data[1] >> 8;
+ sprite->x2 += sprite->data[0] >> 8;
+ sprite->y2 -= sprite->data[1] >> 8;
}
else
{
- sprite->pos2.x -= sprite->data[0] >> 8;
- sprite->pos2.y -= sprite->data[1] >> 8;
+ sprite->x2 -= sprite->data[0] >> 8;
+ sprite->y2 -= sprite->data[1] >> 8;
}
sprite->data[0] = sprite->data[0];
@@ -1158,14 +1158,14 @@ static void AnimSprayWaterDroplet_Step(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
-static void AnimUnused_810F004(struct Sprite *sprite)
+static void AnimUnusedFlashingLight(struct Sprite *sprite)
{
sprite->data[6] = 0;
sprite->data[7] = 64;
- sprite->callback = AnimUnused_810F004_Step;
+ sprite->callback = AnimUnusedFlashingLight_Step;
}
-static void AnimUnused_810F004_Step(struct Sprite *sprite)
+static void AnimUnusedFlashingLight_Step(struct Sprite *sprite)
{
switch (sprite->data[0])
{
@@ -1187,19 +1187,19 @@ static void AnimUnused_810F004_Step(struct Sprite *sprite)
static void AnimSkyAttackBird(struct Sprite *sprite)
{
u16 rotation;
- s16 posx = sprite->pos1.x;
- s16 posy = sprite->pos1.y;
+ s16 posx = sprite->x;
+ s16 posy = sprite->y;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
- sprite->data[4] = sprite->pos1.x << 4;
- sprite->data[5] = sprite->pos1.y << 4;
+ sprite->data[4] = sprite->x << 4;
+ sprite->data[5] = sprite->y << 4;
- sprite->data[6] = ((posx - sprite->pos1.x) << 4) / 12;
- sprite->data[7] = ((posy - sprite->pos1.y) << 4) / 12;
+ sprite->data[6] = ((posx - sprite->x) << 4) / 12;
+ sprite->data[7] = ((posy - sprite->y) << 4) / 12;
- rotation = ArcTan2Neg(posx - sprite->pos1.x, posy - sprite->pos1.y);
+ rotation = ArcTan2Neg(posx - sprite->x, posy - sprite->y);
rotation -= 16384;
TrySetSpriteRotScale(sprite, 1, 0x100, 0x100, rotation);
@@ -1212,15 +1212,16 @@ void AnimSkyAttackBird_Step(struct Sprite *sprite)
sprite->data[4] += sprite->data[6];
sprite->data[5] += sprite->data[7];
- sprite->pos1.x = sprite->data[4] >> 4;
- sprite->pos1.y = sprite->data[5] >> 4;
+ sprite->x = sprite->data[4] >> 4;
+ sprite->y = sprite->data[5] >> 4;
- if (sprite->pos1.x > 285 || sprite->pos1.x < -45
- || sprite->pos1.y > 157 || sprite->pos1.y < -45)
+ if (sprite->x > 285 || sprite->x < -45
+ || sprite->y > 157 || sprite->y < -45)
DestroySpriteAndMatrix(sprite);
}
-void AnimTask_Unused_810F184(u8 taskId)
+// Unused
+static void AnimTask_SetAttackerVisibility(u8 taskId)
{
if (gBattleAnimArgs[0] == 0)
{
diff --git a/src/battle_anim_ghost.c b/src/battle_anim_ghost.c
index 2e4a2318d..03a003c60 100644
--- a/src/battle_anim_ghost.c
+++ b/src/battle_anim_ghost.c
@@ -39,8 +39,8 @@ static void AnimGhostStatusSprite(struct Sprite *);
static void AnimGhostStatusSprite_Step(struct Sprite *);
static void AnimTask_GrudgeFlames_Step(u8 taskId);
static void AnimGrudgeFlame(struct Sprite *);
-static void AnimUnused_8112F60(struct Sprite *);
-static void AnimUnused_8112F60_Step(struct Sprite *);
+static void AnimMonMoveCircular(struct Sprite *);
+static void AnimMonMoveCircular_Step(struct Sprite *);
static const union AffineAnimCmd sAffineAnim_ConfuseRayBallBounce[] =
{
@@ -124,16 +124,16 @@ const struct SpriteTemplate gLickSpriteTemplate =
.callback = AnimLick,
};
-static const union AffineAnimCmd sAnim_Unused_08596DA4[] =
+static const union AffineAnimCmd sAffineAnim_Unused[] =
{
AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
AFFINEANIMCMD_END,
};
// Unused
-static const union AffineAnimCmd *const gAnims_Unused_08596DB4[] =
+static const union AffineAnimCmd *const sAffineAnims_Unused[] =
{
- sAnim_Unused_08596DA4,
+ sAffineAnim_Unused,
};
const struct SpriteTemplate gDestinyBondWhiteShadowSpriteTemplate =
@@ -206,7 +206,7 @@ const struct SpriteTemplate gGrudgeFlameSpriteTemplate =
};
// Unused
-const struct SpriteTemplate gUnusedSpriteTemplate_08596E48 =
+static const struct SpriteTemplate sMonMoveCircularSpriteTemplate =
{
.tileTag = 0,
.paletteTag = 0,
@@ -214,16 +214,16 @@ const struct SpriteTemplate gUnusedSpriteTemplate_08596E48 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = AnimUnused_8112F60,
+ .callback = AnimMonMoveCircular,
};
static void AnimConfuseRayBallBounce(struct Sprite *sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
InitAnimLinearTranslationWithSpeed(sprite);
sprite->callback = AnimConfuseRayBallBounce_Step1;
@@ -243,8 +243,8 @@ static void AnimConfuseRayBallBounce_Step1(struct Sprite *sprite)
return;
}
- sprite->pos2.x += Sin(sprite->data[5], 10);
- sprite->pos2.y += Cos(sprite->data[5], 15);
+ sprite->x2 += Sin(sprite->data[5], 10);
+ sprite->y2 += Cos(sprite->data[5], 15);
r2 = sprite->data[5];
sprite->data[5] = (sprite->data[5] + 5) & 0xFF;
r0 = sprite->data[5];
@@ -261,8 +261,8 @@ static void AnimConfuseRayBallBounce_Step2(struct Sprite *sprite)
s16 r0;
sprite->data[0] = 1;
AnimTranslateLinear(sprite);
- sprite->pos2.x += Sin(sprite->data[5], 10);
- sprite->pos2.y += Cos(sprite->data[5], 15);
+ sprite->x2 += Sin(sprite->data[5], 10);
+ sprite->y2 += Cos(sprite->data[5], 15);
r2 = sprite->data[5];
sprite->data[5] = (sprite->data[5] + 5) & 0xFF;
@@ -318,8 +318,8 @@ static void AnimConfuseRayBallSpiral(struct Sprite *sprite)
static void AnimConfuseRayBallSpiral_Step(struct Sprite *sprite)
{
u16 temp1;
- sprite->pos2.x = Sin(sprite->data[0], 32);
- sprite->pos2.y = Cos(sprite->data[0], 8);
+ sprite->x2 = Sin(sprite->data[0], 32);
+ sprite->y2 = Cos(sprite->data[0], 8);
temp1 = sprite->data[0] - 65;
if (temp1 <= 130)
sprite->oam.priority = 2;
@@ -327,7 +327,7 @@ static void AnimConfuseRayBallSpiral_Step(struct Sprite *sprite)
sprite->oam.priority = 1;
sprite->data[0] = (sprite->data[0] + 19) & 0xFF;
sprite->data[2] += 80;
- sprite->pos2.y += sprite->data[2] >> 8;
+ sprite->y2 += sprite->data[2] >> 8;
sprite->data[7] += 1;
if (sprite->data[7] == 61)
DestroyAnimSprite(sprite);
@@ -397,19 +397,19 @@ static void AnimTask_NightShadeClone_Step2(u8 taskId)
// arg 2: duration step 3 (center -> target)
static void AnimShadowBall(struct Sprite *sprite)
{
- s16 oldPosX = sprite->pos1.x;
- s16 oldPosY = sprite->pos1.y;
+ s16 oldPosX = sprite->x;
+ s16 oldPosY = sprite->y;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->data[0] = 0;
sprite->data[1] = gBattleAnimArgs[0];
sprite->data[2] = gBattleAnimArgs[1];
sprite->data[3] = gBattleAnimArgs[2];
- sprite->data[4] = sprite->pos1.x << 4;
- sprite->data[5] = sprite->pos1.y << 4;
- sprite->data[6] = ((oldPosX - sprite->pos1.x) << 4) / (gBattleAnimArgs[0] << 1);
- sprite->data[7] = ((oldPosY - sprite->pos1.y) << 4) / (gBattleAnimArgs[0] << 1);
+ sprite->data[4] = sprite->x << 4;
+ sprite->data[5] = sprite->y << 4;
+ sprite->data[6] = ((oldPosX - sprite->x) << 4) / (gBattleAnimArgs[0] << 1);
+ sprite->data[7] = ((oldPosY - sprite->y) << 4) / (gBattleAnimArgs[0] << 1);
sprite->callback = AnimShadowBall_Step;
}
@@ -420,8 +420,8 @@ static void AnimShadowBall_Step(struct Sprite *sprite)
case 0:
sprite->data[4] += sprite->data[6];
sprite->data[5] += sprite->data[7];
- sprite->pos1.x = sprite->data[4] >> 4;
- sprite->pos1.y = sprite->data[5] >> 4;
+ sprite->x = sprite->data[4] >> 4;
+ sprite->y = sprite->data[5] >> 4;
sprite->data[1] -= 1;
if (sprite->data[1] > 0)
break;
@@ -433,22 +433,22 @@ static void AnimShadowBall_Step(struct Sprite *sprite)
break;
sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
- sprite->data[4] = sprite->pos1.x << 4;
- sprite->data[5] = sprite->pos1.y << 4;
- sprite->data[6] = ((sprite->data[1] - sprite->pos1.x) << 4) / sprite->data[3];
- sprite->data[7] = ((sprite->data[2] - sprite->pos1.y) << 4) / sprite->data[3];
+ sprite->data[4] = sprite->x << 4;
+ sprite->data[5] = sprite->y << 4;
+ sprite->data[6] = ((sprite->data[1] - sprite->x) << 4) / sprite->data[3];
+ sprite->data[7] = ((sprite->data[2] - sprite->y) << 4) / sprite->data[3];
sprite->data[0] += 1;
break;
case 2:
sprite->data[4] += sprite->data[6];
sprite->data[5] += sprite->data[7];
- sprite->pos1.x = sprite->data[4] >> 4;
- sprite->pos1.y = sprite->data[5] >> 4;
+ sprite->x = sprite->data[4] >> 4;
+ sprite->y = sprite->data[5] >> 4;
sprite->data[3] -= 1;
if (sprite->data[3] > 0)
break;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
sprite->data[0] += 1;
break;
case 3:
@@ -648,7 +648,7 @@ static void AnimTask_SpiteTargetShadow_Step1(u8 taskId)
task->data[15]++;
break;
case 2:
- startLine = gSprites[task->data[13]].pos1.y + gSprites[task->data[13]].pos2.y - 32;
+ startLine = gSprites[task->data[13]].y + gSprites[task->data[13]].y2 - 32;
if (startLine < 0)
startLine = 0;
@@ -770,8 +770,8 @@ static void AnimDestinyBondWhiteShadow(struct Sprite *sprite)
sprite->data[6] = battler2Y;
sprite->data[7] = sprite->data[4] / 2;
sprite->oam.priority = 2;
- sprite->pos1.x = battler1X;
- sprite->pos1.y = battler1Y;
+ sprite->x = battler1X;
+ sprite->y = battler1Y;
sprite->callback = AnimDestinyBondWhiteShadow_Step;
sprite->invisible = TRUE;
}
@@ -782,8 +782,8 @@ static void AnimDestinyBondWhiteShadow_Step(struct Sprite *sprite)
{
sprite->data[0] += sprite->data[2];
sprite->data[1] += sprite->data[3];
- sprite->pos1.x = sprite->data[0] >> 4;
- sprite->pos1.y = sprite->data[1] >> 4;
+ sprite->x = sprite->data[0] >> 4;
+ sprite->y = sprite->data[1] >> 4;
if (--sprite->data[4] == 0)
sprite->data[0] = 0;
}
@@ -950,19 +950,19 @@ void AnimTask_CurseStretchingBlackBg(u8 taskId)
SetGpuReg(REG_OFFSET_WINOUT, ((WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ) |
(WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR)));
SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_DARKEN));
- SetGpuReg(REG_OFFSET_BLDY, 0x10);
+ SetGpuReg(REG_OFFSET_BLDY, 16);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER || IsContest())
startX = 40;
else
startX = 200;
- gBattle_WIN0H = (startX << 8) | startX;
+ gBattle_WIN0H = WIN_RANGE(startX, startX);
startY = 40;
- gBattle_WIN0V = (startY << 8) | startY;
+ gBattle_WIN0V = WIN_RANGE(startY, startY);
leftDistance = startX;
- rightDistance = 240 - startX;
+ rightDistance = DISPLAY_WIDTH - startX;
topDistance = startY;
bottomDistance = 72;
gTasks[taskId].data[1] = leftDistance;
@@ -1001,7 +1001,7 @@ static void AnimTask_CurseStretchingBlackBg_Step1(u8 taskId)
else
{
left = 0;
- right = 240;
+ right = DISPLAY_WIDTH;
top = 0;
bottom = 112;
selectedPalettes = GetBattleBgPalettesMask(1, 0, 0, 0, 0, 0, 0);
@@ -1009,8 +1009,8 @@ static void AnimTask_CurseStretchingBlackBg_Step1(u8 taskId)
gTasks[taskId].func = AnimTask_CurseStretchingBlackBg_Step2;
}
- gBattle_WIN0H = (left << 8) | right;
- gBattle_WIN0V = (top << 8) | bottom;
+ gBattle_WIN0H = WIN_RANGE(left, right);
+ gBattle_WIN0V = WIN_RANGE(top, bottom);
}
static void AnimTask_CurseStretchingBlackBg_Step2(u8 taskId)
@@ -1047,7 +1047,7 @@ static void AnimCurseNail(struct Sprite *sprite)
xDelta2 = 2;
}
- sprite->pos1.x += xDelta;
+ sprite->x += xDelta;
sprite->data[1] = xDelta2;
sprite->data[0] = 60;
sprite->callback = AnimCurseNail_Step1;
@@ -1063,12 +1063,12 @@ static void AnimCurseNail_Step1(struct Sprite *sprite)
}
else
{
- sprite->pos2.x += sprite->data[1];
- var0 = sprite->pos2.x + 7;
+ sprite->x2 += sprite->data[1];
+ var0 = sprite->x2 + 7;
if (var0 > 14)
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->x2 = 0;
sprite->oam.tileNum += 8;
if (++sprite->data[2] == 3)
{
@@ -1125,13 +1125,13 @@ static void AnimGhostStatusSprite(struct Sprite *sprite)
u16 coeffB;
u16 coeffA;
- sprite->pos2.x = Sin(sprite->data[0], 12);
+ sprite->x2 = Sin(sprite->data[0], 12);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos2.x = -sprite->pos2.x;
+ sprite->x2 = -sprite->x2;
sprite->data[0] = (sprite->data[0] + 6) & 0xFF;
sprite->data[1] += 0x100;
- sprite->pos2.y = -(sprite->data[1] >> 8);
+ sprite->y2 = -(sprite->data[1] >> 8);
sprite->data[7]++;
if (sprite->data[7] == 1)
@@ -1284,7 +1284,7 @@ static void AnimGrudgeFlame(struct Sprite *sprite)
sprite->data[2] -= 2;
sprite->data[2] &= 0xFF;
- sprite->pos2.x = Sin(sprite->data[2], sprite->data[3]);
+ sprite->x2 = Sin(sprite->data[2], sprite->data[3]);
index = sprite->data[2] - 65;
if (index < 127)
@@ -1294,7 +1294,7 @@ static void AnimGrudgeFlame(struct Sprite *sprite)
sprite->data[5]++;
sprite->data[6] = (sprite->data[5] * 8) & 0xFF;
- sprite->pos2.y = Sin(sprite->data[6], 7);
+ sprite->y2 = Sin(sprite->data[6], 7);
if (gTasks[sprite->data[0]].data[8])
{
gTasks[sprite->data[0]].data[7]--;
@@ -1302,7 +1302,7 @@ static void AnimGrudgeFlame(struct Sprite *sprite)
}
}
-static void AnimUnused_8112F60(struct Sprite *sprite)
+static void AnimMonMoveCircular(struct Sprite *sprite)
{
sprite->invisible = TRUE;
sprite->data[5] = gBattlerSpriteIds[gBattleAnimAttacker];
@@ -1310,27 +1310,27 @@ static void AnimUnused_8112F60(struct Sprite *sprite)
sprite->data[1] = 10;
sprite->data[2] = gBattleAnimArgs[0];
sprite->data[3] = gBattleAnimArgs[1];
- sprite->callback = AnimUnused_8112F60_Step;
+ sprite->callback = AnimMonMoveCircular_Step;
- gSprites[sprite->data[5]].pos1.y += 8;
+ gSprites[sprite->data[5]].y += 8;
}
-static void AnimUnused_8112F60_Step(struct Sprite *sprite)
+static void AnimMonMoveCircular_Step(struct Sprite *sprite)
{
if (sprite->data[3])
{
sprite->data[3]--;
- gSprites[sprite->data[5]].pos2.x = Sin(sprite->data[0], sprite->data[1]);
- gSprites[sprite->data[5]].pos2.y = Cos(sprite->data[0], sprite->data[1]);
+ gSprites[sprite->data[5]].x2 = Sin(sprite->data[0], sprite->data[1]);
+ gSprites[sprite->data[5]].y2 = Cos(sprite->data[0], sprite->data[1]);
sprite->data[0] += sprite->data[2];
if (sprite->data[0] > 255)
sprite->data[0] -= 256;
}
else
{
- gSprites[sprite->data[5]].pos2.x = 0;
- gSprites[sprite->data[5]].pos2.y = 0;
- gSprites[sprite->data[5]].pos1.y -= 8;
+ gSprites[sprite->data[5]].x2 = 0;
+ gSprites[sprite->data[5]].y2 = 0;
+ gSprites[sprite->data[5]].y -= 8;
sprite->callback = DestroySpriteAndMatrix;
}
}
diff --git a/src/battle_anim_ground.c b/src/battle_anim_ground.c
index 6dc9c5815..2cd135147 100644
--- a/src/battle_anim_ground.c
+++ b/src/battle_anim_ground.c
@@ -141,8 +141,8 @@ const struct SpriteTemplate gDirtMoundSpriteTemplate =
// a boomerang. After hitting the target mon, it comes back to the user.
static void AnimBonemerangProjectile(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->data[0] = 20;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
@@ -155,10 +155,10 @@ static void AnimBonemerangProjectile_Step(struct Sprite *sprite)
{
if (TranslateAnimHorizontalArc(sprite))
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[0] = 20;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
@@ -234,16 +234,16 @@ static void AnimMudSportDirt(struct Sprite *sprite)
sprite->oam.tileNum++;
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[1] > 0 ? 1 : -1;
sprite->callback = AnimMudSportDirtRising;
}
else
{
- sprite->pos1.x = gBattleAnimArgs[1];
- sprite->pos1.y = gBattleAnimArgs[2];
- sprite->pos2.y = -gBattleAnimArgs[2];
+ sprite->x = gBattleAnimArgs[1];
+ sprite->y = gBattleAnimArgs[2];
+ sprite->y2 = -gBattleAnimArgs[2];
sprite->callback = AnimMudSportDirtFalling;
}
}
@@ -253,11 +253,11 @@ static void AnimMudSportDirtRising(struct Sprite *sprite)
if (++sprite->data[1] > 1)
{
sprite->data[1] = 0;
- sprite->pos1.x += sprite->data[0];
+ sprite->x += sprite->data[0];
}
- sprite->pos1.y -= 4;
- if (sprite->pos1.y < -4)
+ sprite->y -= 4;
+ if (sprite->y < -4)
DestroyAnimSprite(sprite);
}
@@ -266,10 +266,10 @@ static void AnimMudSportDirtFalling(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos2.y += 4;
- if (sprite->pos2.y >= 0)
+ sprite->y2 += 4;
+ if (sprite->y2 >= 0)
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sprite->data[0]++;
}
break;
@@ -353,7 +353,7 @@ static void AnimTask_DigBounceMovement(u8 taskId)
else
gBattle_BG2_Y = task->data[13] - task->data[5];
- gSprites[task->data[10]].pos2.x = 272 - gSprites[task->data[10]].pos1.x;
+ gSprites[task->data[10]].x2 = DISPLAY_WIDTH + 32 - gSprites[task->data[10]].x;
task->data[0]++;
}
break;
@@ -372,8 +372,8 @@ static void AnimTask_DigEndBounceMovementSetInvisible(u8 taskId)
{
u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
gSprites[spriteId].invisible = TRUE;
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].x2 = 0;
+ gSprites[spriteId].y2 = 0;
if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1)
gBattle_BG1_Y = 0;
@@ -404,8 +404,8 @@ static void AnimTask_DigSetVisibleUnderground(u8 taskId)
case 0:
task->data[10] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
gSprites[task->data[10]].invisible = FALSE;
- gSprites[task->data[10]].pos2.x = 0;
- gSprites[task->data[10]].pos2.y = 160 - gSprites[task->data[10]].pos1.y;
+ gSprites[task->data[10]].x2 = 0;
+ gSprites[task->data[10]].y2 = DISPLAY_HEIGHT - gSprites[task->data[10]].y;
task->data[0]++;
break;
case 1:
@@ -438,12 +438,12 @@ static void AnimTask_DigRiseUpFromHole(u8 taskId)
task->data[0]++;
break;
case 2:
- gSprites[task->data[10]].pos2.y = 96;
+ gSprites[task->data[10]].y2 = 96;
task->data[0]++;
break;
case 3:
- gSprites[task->data[10]].pos2.y -= 8;
- if (gSprites[task->data[10]].pos2.y == 0)
+ gSprites[task->data[10]].y2 -= 8;
+ if (gSprites[task->data[10]].y2 == 0)
{
gScanlineEffect.state = 3;
task->data[0]++;
@@ -518,11 +518,11 @@ void AnimDirtPlumeParticle(struct Sprite *sprite)
gBattleAnimArgs[2] *= -1;
}
- sprite->pos1.x = GetBattlerSpriteCoord(battler, 2) + xOffset;
- sprite->pos1.y = GetBattlerYCoordWithElevation(battler) + 30;
+ sprite->x = GetBattlerSpriteCoord(battler, 2) + xOffset;
+ sprite->y = GetBattlerYCoordWithElevation(battler) + 30;
sprite->data[0] = gBattleAnimArgs[5];
- sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
- sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3];
+ sprite->data[2] = sprite->x + gBattleAnimArgs[2];
+ sprite->data[4] = sprite->y + gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[4];
InitAnimArcTranslation(sprite);
sprite->callback = AnimDirtPlumeParticle_Step;
@@ -549,8 +549,8 @@ static void AnimDigDirtMound(struct Sprite *sprite)
else
battler = gBattleAnimTarget;
- sprite->pos1.x = GetBattlerSpriteCoord(battler, 0) - 16 + (gBattleAnimArgs[1] * 32);
- sprite->pos1.y = GetBattlerYCoordWithElevation(battler) + 32;
+ sprite->x = GetBattlerSpriteCoord(battler, 0) - 16 + (gBattleAnimArgs[1] * 32);
+ sprite->y = GetBattlerYCoordWithElevation(battler) + 32;
sprite->oam.tileNum += gBattleAnimArgs[1] * 8;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
sprite->data[0] = gBattleAnimArgs[2];
@@ -698,7 +698,7 @@ static void AnimTask_ShakeBattlers(u8 taskId)
break;
case 2:
for (i = 0; i < task->tNumBattlers; i++)
- gSprites[task->tbattlerSpriteIds(i)].pos2.x = 0;
+ gSprites[task->tbattlerSpriteIds(i)].x2 = 0;
DestroyAnimVisualTask(taskId);
break;
@@ -717,7 +717,7 @@ static void SetBattlersXOffsetForShake(struct Task *task)
for (i = 0; i < task->tNumBattlers; i++)
{
- gSprites[task->tbattlerSpriteIds(i)].pos2.x = xOffset;
+ gSprites[task->tbattlerSpriteIds(i)].x2 = xOffset;
}
}
diff --git a/src/battle_anim_ice.c b/src/battle_anim_ice.c
index 53aa14cff..a0608cfd1 100644
--- a/src/battle_anim_ice.c
+++ b/src/battle_anim_ice.c
@@ -20,8 +20,8 @@ struct HailStruct {
s32 unk3:4;
};
-static void AnimUnused_810B6C4(struct Sprite *);
-static void AnimUnused_810B6C4_Step(struct Sprite *);
+static void AnimUnusedIceCrystalThrow(struct Sprite *);
+static void AnimUnusedIceCrystalThrow_Step(struct Sprite *);
static void AnimIcePunchSwirlingParticle(struct Sprite *);
static void AnimIceBeamParticle(struct Sprite *);
static void AnimIceEffectParticle(struct Sprite *);
@@ -49,20 +49,20 @@ static void AnimTask_LoadMistTiles_Step(u8);
static void AnimTask_Hail2(u8);
static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c);
-static const union AnimCmd sAnim_Unused_08595A48[] =
+static const union AnimCmd sAnim_Unused[] =
{
ANIMCMD_FRAME(0, 5, .hFlip = TRUE),
ANIMCMD_FRAME(1, 5, .hFlip = TRUE),
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sAnims_Unused_08595A54[] =
+static const union AnimCmd *const sAnims_Unused[] =
{
- sAnim_Unused_08595A48,
+ sAnim_Unused,
};
// Unused
-const struct SpriteTemplate gUnusedSpriteTemplate_08595A58 =
+static const struct SpriteTemplate sUnusedIceCrystalThrowSpriteTemplate =
{
.tileTag = ANIM_TAG_ICE_CRYSTALS,
.paletteTag = ANIM_TAG_ICE_CRYSTALS,
@@ -70,10 +70,10 @@ const struct SpriteTemplate gUnusedSpriteTemplate_08595A58 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = AnimUnused_810B6C4,
+ .callback = AnimUnusedIceCrystalThrow,
};
-static const union AnimCmd sAnim_Unused_08595A70[] =
+static const union AnimCmd sAnim_IceCrystalLargeChunk[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
@@ -110,10 +110,10 @@ static const union AnimCmd sAnim_SmallBubblePair[] =
ANIMCMD_JUMP(0),
};
-// Unused
-static const union AnimCmd *const sAnims_Unused_08595AA4[] =
+// Unused, contains just the top left corner of the large ice crystal
+static const union AnimCmd *const sAnims_IceCrystalLargeChunk[] =
{
- sAnim_Unused_08595A70,
+ sAnim_IceCrystalLargeChunk,
};
static const union AnimCmd *const sAnims_IceCrystalLarge[] =
@@ -524,7 +524,7 @@ const struct SpriteTemplate gIceBallImpactShardSpriteTemplate =
};
// Unused
-static void AnimUnused_810B6C4(struct Sprite *sprite)
+static void AnimUnusedIceCrystalThrow(struct Sprite *sprite)
{
s16 targetX, targetY, attackerX, attackerY;
@@ -540,18 +540,18 @@ static void AnimUnused_810B6C4(struct Sprite *sprite)
sprite->data[4] = gBattleAnimArgs[3] + targetY;
sub_80A64EC(sprite);
- for (;(targetX >= -32 && targetX <= 272) && (targetY >= -32 && targetY <= 192);
+ for (;(targetX >= -32 && targetX <= DISPLAY_WIDTH + 32) && (targetY >= -32 && targetY <= DISPLAY_HEIGHT + 32);
targetX += sprite->data[1], targetY += sprite->data[2])
;
sprite->data[1] = -sprite->data[1];
sprite->data[2] = -sprite->data[2];
- for (;(attackerX >= -32 && attackerX <= 272) && (attackerY >= -32 && attackerY <= 192);
+ for (;(attackerX >= -32 && attackerX <= DISPLAY_WIDTH + 32) && (attackerY >= -32 && attackerY <= DISPLAY_HEIGHT + 32);
attackerX += sprite->data[1], attackerY += sprite->data[2])
;
- sprite->pos1.x = attackerX;
- sprite->pos1.y = attackerY;
+ sprite->x = attackerX;
+ sprite->y = attackerY;
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[1] = attackerX;
sprite->data[2] = targetX;
@@ -560,19 +560,19 @@ static void AnimUnused_810B6C4(struct Sprite *sprite)
sub_80A64EC(sprite);
sprite->data[3] = gBattleAnimArgs[5];
sprite->data[4] = gBattleAnimArgs[6];
- sprite->callback = AnimUnused_810B6C4_Step;
+ sprite->callback = AnimUnusedIceCrystalThrow_Step;
}
-static void AnimUnused_810B6C4_Step(struct Sprite *sprite)
+static void AnimUnusedIceCrystalThrow_Step(struct Sprite *sprite)
{
if (sprite->data[0] != 0)
{
sprite->data[5] += sprite->data[1];
sprite->data[6] += sprite->data[2];
- sprite->pos2.x = sprite->data[5];
- sprite->pos2.y = sprite->data[6];
- sprite->pos2.x += Sin(sprite->data[7], sprite->data[3]);
- sprite->pos2.y += Sin(sprite->data[7], sprite->data[3]);
+ sprite->x2 = sprite->data[5];
+ sprite->y2 = sprite->data[6];
+ sprite->x2 += Sin(sprite->data[7], sprite->data[3]);
+ sprite->y2 += Sin(sprite->data[7], sprite->data[3]);
sprite->data[7] = (sprite->data[7] + sprite->data[4]) & 0xFF;
sprite->data[0]--;
}
@@ -631,12 +631,12 @@ static void AnimIceEffectParticle(struct Sprite *sprite)
}
else
{
- SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->x, &sprite->y);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
}
StoreSpriteCallbackInData6(sprite, AnimFlickerIceEffectParticle);
@@ -666,8 +666,8 @@ static void AnimSwirlingSnowball(struct Sprite *sprite)
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
if (!gBattleAnimArgs[5])
{
@@ -696,16 +696,16 @@ static void AnimSwirlingSnowball(struct Sprite *sprite)
sprite->data[0] = 1;
AnimFastTranslateLinear(sprite);
- if ((u32)(sprite->pos1.x + sprite->pos2.x + 16) > 272
- || sprite->pos1.y + sprite->pos2.y > 160
- || sprite->pos1.y + sprite->pos2.y < -16)
+ if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32
+ || sprite->y + sprite->y2 > DISPLAY_HEIGHT
+ || sprite->y + sprite->y2 < -16)
break;
}
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
for (i = 0; i < 8; i++)
sprite->data[i] = tempDataHolder[i];
@@ -718,10 +718,10 @@ static void AnimSwirlingSnowball_Step1(struct Sprite *sprite)
{
s16 tempVar;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[0] = 128;
tempVar = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 20 : -20;
@@ -740,17 +740,17 @@ static void AnimSwirlingSnowball_Step2(struct Sprite *sprite)
if (sprite->data[5] <= 31)
{
- sprite->pos2.x = Sin(sprite->data[0], tempVar) - sprite->data[3];
- sprite->pos2.y = Cos(sprite->data[0], 15) - sprite->data[4];
+ sprite->x2 = Sin(sprite->data[0], tempVar) - sprite->data[3];
+ sprite->y2 = Cos(sprite->data[0], 15) - sprite->data[4];
sprite->data[0] = (sprite->data[0] + 16) & 0xFF;
sprite->data[5] += 1;
}
else
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[4] = 0;
sprite->data[3] = 0;
sprite->callback = AnimSwirlingSnowball_End;
@@ -762,9 +762,9 @@ static void AnimSwirlingSnowball_End(struct Sprite *sprite)
sprite->data[0] = 1;
AnimFastTranslateLinear(sprite);
- if ((u32)(sprite->pos1.x + sprite->pos2.x + 16) > 272
- || sprite->pos1.y + sprite->pos2.y > 256
- || sprite->pos1.y + sprite->pos2.y < -16)
+ if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32
+ || sprite->y + sprite->y2 > 256
+ || sprite->y + sprite->y2 < -16)
DestroyAnimSprite(sprite);
}
@@ -786,8 +786,8 @@ static void AnimMoveParticleBeyondTarget(struct Sprite *sprite)
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
if (!gBattleAnimArgs[7])
{
@@ -816,16 +816,16 @@ static void AnimMoveParticleBeyondTarget(struct Sprite *sprite)
{
sprite->data[0] = 1;
AnimFastTranslateLinear(sprite);
- if ((u32)(sprite->pos1.x + sprite->pos2.x + 16) > 272
- || sprite->pos1.y + sprite->pos2.y > 160
- || sprite->pos1.y + sprite->pos2.y < -16)
+ if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32
+ || sprite->y + sprite->y2 > DISPLAY_HEIGHT
+ || sprite->y + sprite->y2 < -16)
break;
}
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
for (i = 0; i < 8; i++)
sprite->data[i] = tempDataHolder[i];
@@ -842,13 +842,13 @@ static void AnimWiggleParticleTowardsTarget(struct Sprite *sprite)
if (sprite->data[0] == 0)
sprite->data[0] = 1;
- sprite->pos2.y += Sin(sprite->data[7], sprite->data[5]);
+ sprite->y2 += Sin(sprite->data[7], sprite->data[5]);
sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
if (sprite->data[0] == 1)
{
- if ((u32)(sprite->pos1.x + sprite->pos2.x + 16) > 272
- || sprite->pos1.y + sprite->pos2.y > 160
- || sprite->pos1.y + sprite->pos2.y < -16)
+ if ((u32)(sprite->x + sprite->x2 + 16) > DISPLAY_WIDTH + 32
+ || sprite->y + sprite->y2 > DISPLAY_HEIGHT
+ || sprite->y + sprite->y2 < -16)
DestroyAnimSprite(sprite);
}
}
@@ -867,13 +867,13 @@ static void AnimWaveFromCenterOfTarget(struct Sprite *sprite)
}
else
{
- SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->x, &sprite->y);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
}
sprite->data[0]++;
@@ -905,13 +905,13 @@ static void InitSwirlingFogAnim(struct Sprite *sprite)
}
else
{
- SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->x, &sprite->y);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
else
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
}
battler = gBattleAnimAttacker;
@@ -924,13 +924,13 @@ static void InitSwirlingFogAnim(struct Sprite *sprite)
}
else
{
- SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->x, &sprite->y);
if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER)
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
else
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
}
battler = gBattleAnimTarget;
@@ -944,13 +944,13 @@ static void InitSwirlingFogAnim(struct Sprite *sprite)
sprite->data[6] = tempVar;
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
- sprite->pos1.y += 8;
+ sprite->y += 8;
sprite->data[0] = gBattleAnimArgs[3];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[2];
+ sprite->data[1] = sprite->x;
+ sprite->data[2] = sprite->x;
+ sprite->data[3] = sprite->y;
+ sprite->data[4] = sprite->y + gBattleAnimArgs[2];
InitAnimLinearTranslation(sprite);
@@ -964,8 +964,8 @@ static void AnimSwirlingFogAnim(struct Sprite *sprite)
{
if (!AnimTranslateLinear(sprite))
{
- sprite->pos2.x += Sin(sprite->data[5], sprite->data[6]);
- sprite->pos2.y += Cos(sprite->data[5], -6);
+ sprite->x2 += Sin(sprite->data[5], sprite->data[6]);
+ sprite->y2 += Cos(sprite->data[5], -6);
if ((u16)(sprite->data[5] - 64) <= 0x7F)
sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]);
@@ -1080,8 +1080,8 @@ static void AnimTask_HazeScrollingFog_Step(u8 taskId)
// arg 5: ??? unknown (seems to vibrate target mon somehow)
static void AnimThrowMistBall(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
}
@@ -1200,21 +1200,21 @@ static void InitPoisonGasCloudAnim(struct Sprite *sprite)
sprite->data[6] = 1;
}
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
if (gBattleAnimArgs[7])
{
- sprite->data[1] = sprite->pos1.x + gBattleAnimArgs[1];
+ sprite->data[1] = sprite->x + gBattleAnimArgs[1];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[3];
- sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2];
+ sprite->data[3] = sprite->y + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[4];
sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8;
}
else
{
- sprite->data[1] = sprite->pos1.x + gBattleAnimArgs[1];
+ sprite->data[1] = sprite->x + gBattleAnimArgs[1];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[3];
- sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2];
+ sprite->data[3] = sprite->y + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[4];
sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8;
}
@@ -1238,7 +1238,7 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
case 0:
AnimTranslateLinear(sprite);
value = gSineTable[sprite->data[5]];
- sprite->pos2.x += value >> 4;
+ sprite->x2 += value >> 4;
if (sprite->data[6])
sprite->data[5] = (sprite->data[5] - 8) & 0xFF;
else
@@ -1247,12 +1247,12 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
if (sprite->data[0] <= 0)
{
sprite->data[0] = 80;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
- sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = sprite->pos1.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = sprite->pos1.y + 29;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
+ sprite->data[1] = sprite->x;
+ sprite->data[2] = sprite->x;
+ sprite->y += sprite->y2;
+ sprite->data[3] = sprite->y;
+ sprite->data[4] = sprite->y + 29;
sprite->data[7]++;
if (IsContest())
sprite->data[5] = 80;
@@ -1261,9 +1261,9 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
else
sprite->data[5] = 80;
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
value = gSineTable[sprite->data[5]];
- sprite->pos2.x = value >> 3;
+ sprite->x2 = value >> 3;
sprite->data[5] = (sprite->data[5] + 2) & 0xFF;
InitAnimLinearTranslation(sprite);
}
@@ -1271,8 +1271,8 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
case 1:
AnimTranslateLinear(sprite);
value = gSineTable[sprite->data[5]];
- sprite->pos2.x += value >> 3;
- sprite->pos2.y += (gSineTable[sprite->data[5] + 0x40] * -3) >> 8;
+ sprite->x2 += value >> 3;
+ sprite->y2 += (gSineTable[sprite->data[5] + 0x40] * -3) >> 8;
if (!IsContest())
{
u16 var0 = sprite->data[5] - 0x40;
@@ -1297,9 +1297,9 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
if (sprite->data[0] <= 0)
{
sprite->data[0] = 0x300;
- sprite->data[1] = sprite->pos1.x += sprite->pos2.x;
- sprite->data[3] = sprite->pos1.y += sprite->pos2.y;
- sprite->data[4] = sprite->pos1.y + 4;
+ sprite->data[1] = sprite->x += sprite->x2;
+ sprite->data[3] = sprite->y += sprite->y2;
+ sprite->data[4] = sprite->y + 4;
if (IsContest())
sprite->data[2] = -0x10;
else if (GET_BATTLER_SIDE2(gBattleAnimTarget) != B_SIDE_PLAYER)
@@ -1308,7 +1308,7 @@ static void MovePoisonGasCloud(struct Sprite *sprite)
sprite->data[2] = -0x10;
sprite->data[7]++;
- sprite->pos2.x = sprite->pos2.y = 0;
+ sprite->x2 = sprite->y2 = 0;
InitAnimLinearTranslationWithSpeed(sprite);
}
break;
@@ -1442,10 +1442,10 @@ static void AnimHailBegin(struct Sprite *sprite)
{
u8 spriteId;
- sprite->pos1.x += 4;
- sprite->pos1.y += 8;
+ sprite->x += 4;
+ sprite->y += 8;
- if (sprite->pos1.x < sprite->data[3] && sprite->pos1.y < sprite->data[4])
+ if (sprite->x < sprite->data[3] && sprite->y < sprite->data[4])
return;
if (sprite->data[0] == 1 && sprite->data[5] == 0)
@@ -1550,11 +1550,11 @@ static void AnimIceBallParticle(struct Sprite *sprite)
sprite->data[4] += sprite->data[2];
if (sprite->data[1] & 1)
- sprite->pos2.x = -(sprite->data[3] >> 8);
+ sprite->x2 = -(sprite->data[3] >> 8);
else
- sprite->pos2.x = sprite->data[3] >> 8;
+ sprite->x2 = sprite->data[3] >> 8;
- sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->y2 = sprite->data[4] >> 8;
if (++sprite->data[0] == 21)
DestroyAnimSprite(sprite);
diff --git a/src/battle_anim_mon_movement.c b/src/battle_anim_mon_movement.c
index b9c4c7b30..31857c4dc 100644
--- a/src/battle_anim_mon_movement.c
+++ b/src/battle_anim_mon_movement.c
@@ -99,8 +99,8 @@ void AnimTask_ShakeMon(u8 taskId)
DestroyAnimVisualTask(taskId);
return;
}
- gSprites[spriteId].pos2.x = gBattleAnimArgs[1];
- gSprites[spriteId].pos2.y = gBattleAnimArgs[2];
+ gSprites[spriteId].x2 = gBattleAnimArgs[1];
+ gSprites[spriteId].y2 = gBattleAnimArgs[2];
gTasks[taskId].data[0] = spriteId;
gTasks[taskId].data[1] = gBattleAnimArgs[3];
gTasks[taskId].data[2] = gBattleAnimArgs[4];
@@ -115,27 +115,27 @@ static void AnimTask_ShakeMon_Step(u8 taskId)
{
if (gTasks[taskId].data[3] == 0)
{
- if (gSprites[gTasks[taskId].data[0]].pos2.x == 0)
+ if (gSprites[gTasks[taskId].data[0]].x2 == 0)
{
- gSprites[gTasks[taskId].data[0]].pos2.x = gTasks[taskId].data[4];
+ gSprites[gTasks[taskId].data[0]].x2 = gTasks[taskId].data[4];
}
else
{
- gSprites[gTasks[taskId].data[0]].pos2.x = 0;
+ gSprites[gTasks[taskId].data[0]].x2 = 0;
}
- if (gSprites[gTasks[taskId].data[0]].pos2.y == 0)
+ if (gSprites[gTasks[taskId].data[0]].y2 == 0)
{
- gSprites[gTasks[taskId].data[0]].pos2.y = gTasks[taskId].data[5];
+ gSprites[gTasks[taskId].data[0]].y2 = gTasks[taskId].data[5];
}
else
{
- gSprites[gTasks[taskId].data[0]].pos2.y = 0;
+ gSprites[gTasks[taskId].data[0]].y2 = 0;
}
gTasks[taskId].data[3] = gTasks[taskId].data[2];
if (--gTasks[taskId].data[1] == 0)
{
- gSprites[gTasks[taskId].data[0]].pos2.x = 0;
- gSprites[gTasks[taskId].data[0]].pos2.y = 0;
+ gSprites[gTasks[taskId].data[0]].x2 = 0;
+ gSprites[gTasks[taskId].data[0]].y2 = 0;
DestroyAnimVisualTask(taskId);
return;
}
@@ -203,8 +203,8 @@ void AnimTask_ShakeMon2(u8 taskId)
return;
}
- gSprites[spriteId].pos2.x = gBattleAnimArgs[1];
- gSprites[spriteId].pos2.y = gBattleAnimArgs[2];
+ gSprites[spriteId].x2 = gBattleAnimArgs[1];
+ gSprites[spriteId].y2 = gBattleAnimArgs[2];
gTasks[taskId].data[0] = spriteId;
gTasks[taskId].data[1] = gBattleAnimArgs[3];
gTasks[taskId].data[2] = gBattleAnimArgs[4];
@@ -219,21 +219,21 @@ static void AnimTask_ShakeMon2_Step(u8 taskId)
{
if (gTasks[taskId].data[3] == 0)
{
- if (gSprites[gTasks[taskId].data[0]].pos2.x == gTasks[taskId].data[4])
- gSprites[gTasks[taskId].data[0]].pos2.x = -gTasks[taskId].data[4];
+ if (gSprites[gTasks[taskId].data[0]].x2 == gTasks[taskId].data[4])
+ gSprites[gTasks[taskId].data[0]].x2 = -gTasks[taskId].data[4];
else
- gSprites[gTasks[taskId].data[0]].pos2.x = gTasks[taskId].data[4];
+ gSprites[gTasks[taskId].data[0]].x2 = gTasks[taskId].data[4];
- if (gSprites[gTasks[taskId].data[0]].pos2.y == gTasks[taskId].data[5])
- gSprites[gTasks[taskId].data[0]].pos2.y = -gTasks[taskId].data[5];
+ if (gSprites[gTasks[taskId].data[0]].y2 == gTasks[taskId].data[5])
+ gSprites[gTasks[taskId].data[0]].y2 = -gTasks[taskId].data[5];
else
- gSprites[gTasks[taskId].data[0]].pos2.y = gTasks[taskId].data[5];
+ gSprites[gTasks[taskId].data[0]].y2 = gTasks[taskId].data[5];
gTasks[taskId].data[3] = gTasks[taskId].data[2];
if (--gTasks[taskId].data[1] == 0)
{
- gSprites[gTasks[taskId].data[0]].pos2.x = 0;
- gSprites[gTasks[taskId].data[0]].pos2.y = 0;
+ gSprites[gTasks[taskId].data[0]].x2 = 0;
+ gSprites[gTasks[taskId].data[0]].y2 = 0;
DestroyAnimVisualTask(taskId);
return;
}
@@ -261,8 +261,8 @@ void AnimTask_ShakeMonInPlace(u8 taskId)
return;
}
- gSprites[spriteId].pos2.x += gBattleAnimArgs[1];
- gSprites[spriteId].pos2.y += gBattleAnimArgs[2];
+ gSprites[spriteId].x2 += gBattleAnimArgs[1];
+ gSprites[spriteId].y2 += gBattleAnimArgs[2];
gTasks[taskId].data[0] = spriteId;
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = gBattleAnimArgs[3];
@@ -280,26 +280,26 @@ static void AnimTask_ShakeMonInPlace_Step(u8 taskId)
{
if (gTasks[taskId].data[1] & 1)
{
- gSprites[gTasks[taskId].data[0]].pos2.x += gTasks[taskId].data[5];
- gSprites[gTasks[taskId].data[0]].pos2.y += gTasks[taskId].data[6];
+ gSprites[gTasks[taskId].data[0]].x2 += gTasks[taskId].data[5];
+ gSprites[gTasks[taskId].data[0]].y2 += gTasks[taskId].data[6];
}
else
{
- gSprites[gTasks[taskId].data[0]].pos2.x -= gTasks[taskId].data[5];
- gSprites[gTasks[taskId].data[0]].pos2.y -= gTasks[taskId].data[6];
+ gSprites[gTasks[taskId].data[0]].x2 -= gTasks[taskId].data[5];
+ gSprites[gTasks[taskId].data[0]].y2 -= gTasks[taskId].data[6];
}
gTasks[taskId].data[3] = gTasks[taskId].data[4];
if (++gTasks[taskId].data[1] >= gTasks[taskId].data[2])
{
if (gTasks[taskId].data[1] & 1)
{
- gSprites[gTasks[taskId].data[0]].pos2.x += gTasks[taskId].data[5] / 2;
- gSprites[gTasks[taskId].data[0]].pos2.y += gTasks[taskId].data[6] / 2;
+ gSprites[gTasks[taskId].data[0]].x2 += gTasks[taskId].data[5] / 2;
+ gSprites[gTasks[taskId].data[0]].y2 += gTasks[taskId].data[6] / 2;
}
else
{
- gSprites[gTasks[taskId].data[0]].pos2.x -= gTasks[taskId].data[5] / 2;
- gSprites[gTasks[taskId].data[0]].pos2.y -= gTasks[taskId].data[6] / 2;
+ gSprites[gTasks[taskId].data[0]].x2 -= gTasks[taskId].data[5] / 2;
+ gSprites[gTasks[taskId].data[0]].y2 -= gTasks[taskId].data[6] / 2;
}
DestroyAnimVisualTask(taskId);
return;
@@ -320,7 +320,7 @@ static void AnimTask_ShakeMonInPlace_Step(u8 taskId)
void AnimTask_ShakeAndSinkMon(u8 taskId)
{
u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
- gSprites[spriteId].pos2.x = gBattleAnimArgs[1];
+ gSprites[spriteId].x2 = gBattleAnimArgs[1];
gTasks[taskId].data[0] = spriteId;
gTasks[taskId].data[1] = gBattleAnimArgs[1];
gTasks[taskId].data[2] = gBattleAnimArgs[2];
@@ -339,15 +339,15 @@ static void AnimTask_ShakeAndSinkMon_Step(u8 taskId)
if (gTasks[taskId].data[2] == gTasks[taskId].data[8]++)
{
gTasks[taskId].data[8] = 0;
- if (gSprites[spriteId].pos2.x == x)
+ if (gSprites[spriteId].x2 == x)
x = -x;
- gSprites[spriteId].pos2.x += x;
+ gSprites[spriteId].x2 += x;
}
gTasks[taskId].data[1] = x;
gTasks[taskId].data[9] += gTasks[taskId].data[3];
- gSprites[spriteId].pos2.y = gTasks[taskId].data[9] >> 8;
+ gSprites[spriteId].y2 = gTasks[taskId].data[9] >> 8;
if (--gTasks[taskId].data[4] == 0)
{
DestroyAnimVisualTask(taskId);
@@ -390,9 +390,9 @@ void AnimTask_TranslateMonElliptical(u8 taskId)
static void AnimTask_TranslateMonElliptical_Step(u8 taskId)
{
u8 spriteId = gTasks[taskId].data[0];
- gSprites[spriteId].pos2.x = Sin(gTasks[taskId].data[5], gTasks[taskId].data[1]);
- gSprites[spriteId].pos2.y = -Cos(gTasks[taskId].data[5], gTasks[taskId].data[2]);
- gSprites[spriteId].pos2.y += gTasks[taskId].data[2];
+ gSprites[spriteId].x2 = Sin(gTasks[taskId].data[5], gTasks[taskId].data[1]);
+ gSprites[spriteId].y2 = -Cos(gTasks[taskId].data[5], gTasks[taskId].data[2]);
+ gSprites[spriteId].y2 += gTasks[taskId].data[2];
gTasks[taskId].data[5] += gTasks[taskId].data[4];
gTasks[taskId].data[5] &= 0xff;
@@ -401,8 +401,8 @@ static void AnimTask_TranslateMonElliptical_Step(u8 taskId)
if (gTasks[taskId].data[3] == 0)
{
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].x2 = 0;
+ gSprites[spriteId].y2 = 0;
DestroyAnimVisualTask(taskId);
return;
}
@@ -493,15 +493,15 @@ static void SlideMonToOriginalPos(struct Sprite *sprite)
monSpriteId = gBattlerSpriteIds[gBattleAnimTarget];
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[1] = gSprites[monSpriteId].pos1.x + gSprites[monSpriteId].pos2.x;
- sprite->data[2] = gSprites[monSpriteId].pos1.x;
- sprite->data[3] = gSprites[monSpriteId].pos1.y + gSprites[monSpriteId].pos2.y;
- sprite->data[4] = gSprites[monSpriteId].pos1.y;
+ sprite->data[1] = gSprites[monSpriteId].x + gSprites[monSpriteId].x2;
+ sprite->data[2] = gSprites[monSpriteId].x;
+ sprite->data[3] = gSprites[monSpriteId].y + gSprites[monSpriteId].y2;
+ sprite->data[4] = gSprites[monSpriteId].y;
InitSpriteDataForLinearTranslation(sprite);
sprite->data[3] = 0;
sprite->data[4] = 0;
- sprite->data[5] = gSprites[monSpriteId].pos2.x;
- sprite->data[6] = gSprites[monSpriteId].pos2.y;
+ sprite->data[5] = gSprites[monSpriteId].x2;
+ sprite->data[6] = gSprites[monSpriteId].y2;
sprite->invisible = TRUE;
if (gBattleAnimArgs[1] == 1)
@@ -526,10 +526,10 @@ static void SlideMonToOriginalPos_Step(struct Sprite *sprite)
if (sprite->data[0] == 0)
{
if (lo < 2)
- monSprite->pos2.x = 0;
+ monSprite->x2 = 0;
if (lo == 2 || lo == 0)
- monSprite->pos2.y = 0;
+ monSprite->y2 = 0;
DestroyAnimSprite(sprite);
}
@@ -538,8 +538,8 @@ static void SlideMonToOriginalPos_Step(struct Sprite *sprite)
sprite->data[0]--;
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- monSprite->pos2.x = (s8)(sprite->data[3] >> 8) + sprite->data[5];
- monSprite->pos2.y = (s8)(sprite->data[4] >> 8) + sprite->data[6];
+ monSprite->x2 = (s8)(sprite->data[3] >> 8) + sprite->data[5];
+ monSprite->y2 = (s8)(sprite->data[4] >> 8) + sprite->data[6];
}
}
@@ -571,10 +571,10 @@ static void SlideMonToOffset(struct Sprite *sprite)
}
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[1] = gSprites[monSpriteId].pos1.x;
- sprite->data[2] = gSprites[monSpriteId].pos1.x + gBattleAnimArgs[1];
- sprite->data[3] = gSprites[monSpriteId].pos1.y;
- sprite->data[4] = gSprites[monSpriteId].pos1.y + gBattleAnimArgs[2];
+ sprite->data[1] = gSprites[monSpriteId].x;
+ sprite->data[2] = gSprites[monSpriteId].x + gBattleAnimArgs[1];
+ sprite->data[3] = gSprites[monSpriteId].y;
+ sprite->data[4] = gSprites[monSpriteId].y + gBattleAnimArgs[2];
InitSpriteDataForLinearTranslation(sprite);
sprite->data[3] = 0;
sprite->data[4] = 0;
@@ -605,13 +605,13 @@ static void SlideMonToOffsetAndBack(struct Sprite *sprite)
}
}
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
+ sprite->data[1] = gSprites[spriteId].x + gSprites[spriteId].x2;
sprite->data[2] = sprite->data[1] + gBattleAnimArgs[1];
- sprite->data[3] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
+ sprite->data[3] = gSprites[spriteId].y + gSprites[spriteId].y2;
sprite->data[4] = sprite->data[3] + gBattleAnimArgs[2];
InitSpriteDataForLinearTranslation(sprite);
- sprite->data[3] = gSprites[spriteId].pos2.x << 8;
- sprite->data[4] = gSprites[spriteId].pos2.y << 8;
+ sprite->data[3] = gSprites[spriteId].x2 << 8;
+ sprite->data[4] = gSprites[spriteId].y2 << 8;
sprite->data[5] = spriteId;
sprite->data[6] = gBattleAnimArgs[5];
if (!gBattleAnimArgs[5])
@@ -628,8 +628,8 @@ static void SlideMonToOffsetAndBack(struct Sprite *sprite)
static void SlideMonToOffsetAndBack_End(struct Sprite *sprite)
{
- gSprites[sprite->data[5]].pos2.x = 0;
- gSprites[sprite->data[5]].pos2.y = 0;
+ gSprites[sprite->data[5]].x2 = 0;
+ gSprites[sprite->data[5]].y2 = 0;
DestroyAnimSprite(sprite);
}
@@ -667,8 +667,8 @@ static void AnimTask_WindUpLunge_Step1(u8 taskId)
u8 spriteId;
spriteId = gTasks[taskId].data[0];
gTasks[taskId].data[11] += gTasks[taskId].data[1];
- gSprites[spriteId].pos2.x = gTasks[taskId].data[11] >> 8;
- gSprites[spriteId].pos2.y = Sin((u8)(gTasks[taskId].data[10] >> 8), gTasks[taskId].data[2]);
+ gSprites[spriteId].x2 = gTasks[taskId].data[11] >> 8;
+ gSprites[spriteId].y2 = Sin((u8)(gTasks[taskId].data[10] >> 8), gTasks[taskId].data[2]);
gTasks[taskId].data[10] += gTasks[taskId].data[7];
if (--gTasks[taskId].data[3] == 0)
{
@@ -687,7 +687,7 @@ static void AnimTask_WindUpLunge_Step2(u8 taskId)
{
spriteId = gTasks[taskId].data[0];
gTasks[taskId].data[12] += gTasks[taskId].data[5];
- gSprites[spriteId].pos2.x = (gTasks[taskId].data[12] >> 8) + (gTasks[taskId].data[11] >> 8);
+ gSprites[spriteId].x2 = (gTasks[taskId].data[12] >> 8) + (gTasks[taskId].data[11] >> 8);
if (--gTasks[taskId].data[6] == 0)
{
DestroyAnimVisualTask(taskId);
@@ -741,8 +741,8 @@ void AnimTask_SlideOffScreen(u8 taskId)
static void AnimTask_SlideOffScreen_Step(u8 taskId)
{
u8 spriteId = gTasks[taskId].data[0];
- gSprites[spriteId].pos2.x += gTasks[taskId].data[1];
- if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x + 0x20 > 0x130u)
+ gSprites[spriteId].x2 += gTasks[taskId].data[1];
+ if (gSprites[spriteId].x2 + gSprites[spriteId].x + 0x20 > 0x130u)
{
DestroyAnimVisualTask(taskId);
return;
@@ -794,17 +794,17 @@ static void AnimTask_SwayMonStep(u8 taskId)
if (gTasks[taskId].data[0] == 0)
{
- gSprites[spriteId].pos2.x = sineValue;
+ gSprites[spriteId].x2 = sineValue;
}
else
{
if (GetBattlerSide(gTasks[taskId].data[5]) == B_SIDE_PLAYER)
{
- gSprites[spriteId].pos2.y = (sineValue >= 0) ? sineValue : -sineValue;
+ gSprites[spriteId].y2 = (sineValue >= 0) ? sineValue : -sineValue;
}
else
{
- gSprites[spriteId].pos2.y = (sineValue >= 0) ? -sineValue : sineValue;
+ gSprites[spriteId].y2 = (sineValue >= 0) ? -sineValue : sineValue;
}
}
@@ -815,8 +815,8 @@ static void AnimTask_SwayMonStep(u8 taskId)
gTasks[taskId].data[12] ^= 1;
if (--gTasks[taskId].data[3] == 0)
{
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].x2 = 0;
+ gSprites[spriteId].y2 = 0;
DestroyAnimVisualTask(taskId);
return;
}
@@ -1011,8 +1011,8 @@ void AnimTask_ShakeTargetBasedOnMovePowerOrDmg(u8 taskId)
gTasks[taskId].data[10] = gBattleAnimArgs[3];
gTasks[taskId].data[11] = gBattleAnimArgs[4];
gTasks[taskId].data[7] = GetAnimBattlerSpriteId(ANIM_TARGET);
- gTasks[taskId].data[8] = gSprites[gTasks[taskId].data[7]].pos2.x;
- gTasks[taskId].data[9] = gSprites[gTasks[taskId].data[7]].pos2.y;
+ gTasks[taskId].data[8] = gSprites[gTasks[taskId].data[7]].x2;
+ gTasks[taskId].data[9] = gSprites[gTasks[taskId].data[7]].y2;
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = gBattleAnimArgs[1];
gTasks[taskId].data[2] = gBattleAnimArgs[2];
@@ -1030,28 +1030,28 @@ static void AnimTask_ShakeTargetBasedOnMovePowerOrDmg_Step(u8 taskId)
{
if (task->data[12])
{
- gSprites[task->data[7]].pos2.x = task->data[8] + task->data[13];
+ gSprites[task->data[7]].x2 = task->data[8] + task->data[13];
}
else
{
- gSprites[task->data[7]].pos2.x = task->data[8] - task->data[14];
+ gSprites[task->data[7]].x2 = task->data[8] - task->data[14];
}
}
if (task->data[11])
{
if (task->data[12])
{
- gSprites[task->data[7]].pos2.y = task->data[15];
+ gSprites[task->data[7]].y2 = task->data[15];
}
else
{
- gSprites[task->data[7]].pos2.y = 0;
+ gSprites[task->data[7]].y2 = 0;
}
}
if (!--task->data[2])
{
- gSprites[task->data[7]].pos2.x = 0;
- gSprites[task->data[7]].pos2.y = 0;
+ gSprites[task->data[7]].x2 = 0;
+ gSprites[task->data[7]].y2 = 0;
DestroyAnimVisualTask(taskId);
return;
}
diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c
index 688009519..be409f366 100644
--- a/src/battle_anim_mons.c
+++ b/src/battle_anim_mons.c
@@ -107,8 +107,8 @@ static const struct SpriteTemplate sSpriteTemplate_MoveEffectMons[] =
static const struct SpriteSheet sSpriteSheet_MoveEffectMons[] =
{
- { gMiscBlank_Gfx, 0x800, TAG_MOVE_EFFECT_MON_1, },
- { gMiscBlank_Gfx, 0x800, TAG_MOVE_EFFECT_MON_2, },
+ { gMiscBlank_Gfx, MON_PIC_SIZE, TAG_MOVE_EFFECT_MON_1, },
+ { gMiscBlank_Gfx, MON_PIC_SIZE, TAG_MOVE_EFFECT_MON_2, },
};
u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType)
@@ -432,8 +432,8 @@ void TranslateSpriteInCircleOverDuration(struct Sprite *sprite)
{
if (sprite->data[3])
{
- sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
- sprite->pos2.y = Cos(sprite->data[0], sprite->data[1]);
+ sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
+ sprite->y2 = Cos(sprite->data[0], sprite->data[1]);
sprite->data[0] += sprite->data[2];
if (sprite->data[0] >= 0x100)
sprite->data[0] -= 0x100;
@@ -451,8 +451,8 @@ void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite)
{
if (sprite->data[3])
{
- sprite->pos2.x = Sin(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]);
- sprite->pos2.y = Cos(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]);
+ sprite->x2 = Sin(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]);
+ sprite->y2 = Cos(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]);
sprite->data[0] += sprite->data[2];
sprite->data[5] += sprite->data[4];
if (sprite->data[0] >= 0x100)
@@ -471,8 +471,8 @@ void sub_80A63C8(struct Sprite *sprite)
{
if (sprite->data[3])
{
- sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
- sprite->pos2.y = Cos(sprite->data[4], sprite->data[1]);
+ sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
+ sprite->y2 = Cos(sprite->data[4], sprite->data[1]);
sprite->data[0] += sprite->data[2];
sprite->data[4] += sprite->data[5];
if (sprite->data[0] >= 0x100)
@@ -495,8 +495,8 @@ void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite)
{
if (sprite->data[3])
{
- sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
- sprite->pos2.y = Cos(sprite->data[0], sprite->data[4]);
+ sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
+ sprite->y2 = Cos(sprite->data[0], sprite->data[4]);
sprite->data[0] += sprite->data[2];
if (sprite->data[0] >= 0x100)
sprite->data[0] -= 0x100;
@@ -547,8 +547,8 @@ void TranslateSpriteLinear(struct Sprite *sprite)
if (sprite->data[0] > 0)
{
sprite->data[0]--;
- sprite->pos2.x += sprite->data[1];
- sprite->pos2.y += sprite->data[2];
+ sprite->x2 += sprite->data[1];
+ sprite->y2 += sprite->data[2];
}
else
{
@@ -563,8 +563,8 @@ void TranslateSpriteLinearFixedPoint(struct Sprite *sprite)
sprite->data[0]--;
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite->pos2.x = sprite->data[3] >> 8;
- sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->x2 = sprite->data[3] >> 8;
+ sprite->y2 = sprite->data[4] >> 8;
}
else
{
@@ -579,8 +579,8 @@ static void TranslateSpriteLinearFixedPointIconFrame(struct Sprite *sprite)
sprite->data[0]--;
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite->pos2.x = sprite->data[3] >> 8;
- sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->x2 = sprite->data[3] >> 8;
+ sprite->y2 = sprite->data[4] >> 8;
}
else
{
@@ -592,8 +592,8 @@ static void TranslateSpriteLinearFixedPointIconFrame(struct Sprite *sprite)
void sub_80A65EC(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x + sprite->pos2.x;
- sprite->data[3] = sprite->pos1.y + sprite->pos2.y;
+ sprite->data[1] = sprite->x + sprite->x2;
+ sprite->data[3] = sprite->y + sprite->y2;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
sprite->callback = sub_80A64D0;
@@ -604,8 +604,8 @@ void TranslateMonSpriteLinear(struct Sprite *sprite)
if (sprite->data[0] > 0)
{
sprite->data[0]--;
- gSprites[sprite->data[3]].pos2.x += sprite->data[1];
- gSprites[sprite->data[3]].pos2.y += sprite->data[2];
+ gSprites[sprite->data[3]].x2 += sprite->data[1];
+ gSprites[sprite->data[3]].y2 += sprite->data[2];
}
else
{
@@ -620,8 +620,8 @@ void TranslateMonSpriteLinearFixedPoint(struct Sprite *sprite)
sprite->data[0]--;
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- gSprites[sprite->data[5]].pos2.x = sprite->data[3] >> 8;
- gSprites[sprite->data[5]].pos2.y = sprite->data[4] >> 8;
+ gSprites[sprite->data[5]].x2 = sprite->data[3] >> 8;
+ gSprites[sprite->data[5]].y2 = sprite->data[4] >> 8;
}
else
{
@@ -634,9 +634,9 @@ void TranslateSpriteLinearAndFlicker(struct Sprite *sprite)
if (sprite->data[0] > 0)
{
sprite->data[0]--;
- sprite->pos2.x = sprite->data[2] >> 8;
+ sprite->x2 = sprite->data[2] >> 8;
sprite->data[2] += sprite->data[1];
- sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->y2 = sprite->data[4] >> 8;
sprite->data[4] += sprite->data[3];
if (sprite->data[0] % sprite->data[5] == 0)
{
@@ -658,8 +658,8 @@ void DestroySpriteAndMatrix(struct Sprite *sprite)
void sub_80A6760(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x + sprite->pos2.x;
- sprite->data[3] = sprite->pos1.y + sprite->pos2.y;
+ sprite->data[1] = sprite->x + sprite->x2;
+ sprite->data[3] = sprite->y + sprite->y2;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
sprite->callback = sub_80A64D0;
@@ -699,8 +699,8 @@ void DestroyAnimVisualTaskAndDisableBlend(u8 taskId)
void SetSpriteCoordsToAnimAttackerCoords(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
}
// Sets the initial x offset of the anim sprite depending on the horizontal orientation
@@ -712,25 +712,25 @@ void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 xOffset)
if (attackerX > targetX)
{
- sprite->pos1.x -= xOffset;
+ sprite->x -= xOffset;
}
else if (attackerX < targetX)
{
- sprite->pos1.x += xOffset;
+ sprite->x += xOffset;
}
else
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos1.x -= xOffset;
+ sprite->x -= xOffset;
else
- sprite->pos1.x += xOffset;
+ sprite->x += xOffset;
}
}
void InitAnimArcTranslation(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
InitAnimLinearTranslation(sprite);
sprite->data[6] = 0x8000 / sprite->data[0];
sprite->data[7] = 0;
@@ -741,7 +741,7 @@ bool8 TranslateAnimHorizontalArc(struct Sprite *sprite)
if (AnimTranslateLinear(sprite))
return TRUE;
sprite->data[7] += sprite->data[6];
- sprite->pos2.y += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]);
+ sprite->y2 += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]);
return FALSE;
}
@@ -750,16 +750,16 @@ bool8 TranslateAnimVerticalArc(struct Sprite *sprite)
if (AnimTranslateLinear(sprite))
return TRUE;
sprite->data[7] += sprite->data[6];
- sprite->pos2.x += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]);
+ sprite->x2 += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]);
return FALSE;
}
void SetSpritePrimaryCoordsFromSecondaryCoords(struct Sprite *sprite)
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
}
void InitSpritePosToAnimTarget(struct Sprite *sprite, bool8 respectMonPicOffsets)
@@ -768,27 +768,27 @@ void InitSpritePosToAnimTarget(struct Sprite *sprite, bool8 respectMonPicOffsets
// is why there is no else clause for the "respectMonPicOffsets" check.
if (!respectMonPicOffsets)
{
- sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X);
- sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y);
+ sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X);
+ sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y);
}
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
}
void InitSpritePosToAnimAttacker(struct Sprite *sprite, bool8 respectMonPicOffsets)
{
if (!respectMonPicOffsets)
{
- sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X);
- sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y);
+ sprite->x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X);
+ sprite->y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord2(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
}
SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
}
u8 GetBattlerSide(u8 battlerId)
@@ -986,8 +986,8 @@ void UpdateAnimBg3ScreenSize(bool8 largeScreenSize)
void TradeMenuBouncePartySprites(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
InitSpriteDataForLinearTranslation(sprite);
sprite->callback = TranslateSpriteLinearFixedPointIconFrame;
sprite->callback(sprite);
@@ -1033,8 +1033,8 @@ void InitAnimLinearTranslation(struct Sprite *sprite)
void StartAnimLinearTranslation(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
InitAnimLinearTranslation(sprite);
sprite->callback = AnimTranslateLinear_WaitEnd;
sprite->callback(sprite);
@@ -1042,8 +1042,8 @@ void StartAnimLinearTranslation(struct Sprite *sprite)
void sub_80A6F14(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
InitAnimLinearTranslation(sprite);
sprite->callback = sub_80A6FB4;
sprite->callback(sprite);
@@ -1064,14 +1064,14 @@ bool8 AnimTranslateLinear(struct Sprite *sprite)
y += v2;
if (v1 & 1)
- sprite->pos2.x = -(x >> 8);
+ sprite->x2 = -(x >> 8);
else
- sprite->pos2.x = x >> 8;
+ sprite->x2 = x >> 8;
if (v2 & 1)
- sprite->pos2.y = -(y >> 8);
+ sprite->y2 = -(y >> 8);
else
- sprite->pos2.y = y >> 8;
+ sprite->y2 = y >> 8;
sprite->data[3] = x;
sprite->data[4] = y;
@@ -1101,8 +1101,8 @@ void InitAnimLinearTranslationWithSpeed(struct Sprite *sprite)
void InitAnimLinearTranslationWithSpeedAndPos(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
InitAnimLinearTranslationWithSpeed(sprite);
sprite->callback = AnimTranslateLinear_WaitEnd;
sprite->callback(sprite);
@@ -1138,8 +1138,8 @@ static void InitAnimFastLinearTranslation(struct Sprite *sprite)
void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
InitAnimFastLinearTranslation(sprite);
sprite->callback = AnimFastTranslateLinearWaitEnd;
sprite->callback(sprite);
@@ -1160,14 +1160,14 @@ bool8 AnimFastTranslateLinear(struct Sprite *sprite)
y += v2;
if (v1 & 1)
- sprite->pos2.x = -(x >> 4);
+ sprite->x2 = -(x >> 4);
else
- sprite->pos2.x = x >> 4;
+ sprite->x2 = x >> 4;
if (v2 & 1)
- sprite->pos2.y = -(y >> 4);
+ sprite->y2 = -(y >> 4);
else
- sprite->pos2.y = y >> 4;
+ sprite->y2 = y >> 4;
sprite->data[3] = x;
sprite->data[4] = y;
@@ -1190,8 +1190,8 @@ void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite)
void InitAnimFastLinearTranslationWithSpeedAndPos(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
InitAnimFastLinearTranslationWithSpeed(sprite);
sprite->callback = AnimFastTranslateLinearWaitEnd;
sprite->callback(sprite);
@@ -1264,7 +1264,7 @@ void SetBattlerSpriteYOffsetFromRotation(u8 spriteId)
if (c < 0)
c = -c;
- gSprites[spriteId].pos2.y = c >> 3;
+ gSprites[spriteId].y2 = c >> 3;
}
void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 xScale, s16 yScale, u16 rotation)
@@ -1310,7 +1310,7 @@ u16 ArcTan2Neg(s16 a, s16 b)
return -var;
}
-void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor)
+void SetGrayscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor)
{
int i;
struct PlttData *originalColor;
@@ -1801,7 +1801,7 @@ bool8 RunAffineAnimFromTaskData(struct Task *task)
task->data[7]++;
break;
case AFFINEANIMCMDTYPE_END:
- gSprites[task->data[15]].pos2.y = 0;
+ gSprites[task->data[15]].y2 = 0;
ResetSpriteRotScale(task->data[15]);
return FALSE;
}
@@ -1819,7 +1819,7 @@ void SetBattlerSpriteYOffsetFromYScale(u8 spriteId)
if (var2 > 128)
var2 = 128;
- gSprites[spriteId].pos2.y = (var - var2) / 2;
+ gSprites[spriteId].y2 = (var - var2) / 2;
}
// Sets the sprite's y offset equal to the y displacement caused by another sprite
@@ -1832,7 +1832,7 @@ void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId)
if (var2 > 128)
var2 = 128;
- gSprites[spriteId].pos2.y = (var - var2) / 2;
+ gSprites[spriteId].y2 = (var - var2) / 2;
}
static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId)
@@ -1927,7 +1927,7 @@ u8 UpdateEruptAnimTask(struct Task *task)
if (task->data[8])
SetBattlerSpriteYOffsetFromYScale(task->data[15]);
else
- gSprites[task->data[15]].pos2.y = 0;
+ gSprites[task->data[15]].y2 = 0;
return task->data[8];
}
@@ -2068,7 +2068,7 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16
FALSE);
}
- RequestDma3Copy(gMonSpritesGfxPtr->buffer, (void *)(OBJ_VRAM0 + (sheet * 0x20)), 0x800, 1);
+ RequestDma3Copy(gMonSpritesGfxPtr->buffer, (void *)(OBJ_VRAM0 + (sheet * 0x20)), MON_PIC_SIZE, 1);
FREE_AND_SET_NULL(gMonSpritesGfxPtr->buffer);
if (!isBackpic)
@@ -2078,8 +2078,8 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16
if (IsContest())
{
- gSprites[spriteId].affineAnims = gUnknown_082FF6C0;
- StartSpriteAffineAnim(&gSprites[spriteId], 0);
+ gSprites[spriteId].affineAnims = gAffineAnims_BattleSpriteContest;
+ StartSpriteAffineAnim(&gSprites[spriteId], BATTLER_AFFINE_NORMAL);
}
return spriteId;
}
@@ -2273,20 +2273,20 @@ u8 CreateInvisibleSpriteCopy(int battlerId, u8 spriteId, int species)
return newSpriteId;
}
-void AnimUnused_80A8A6C(struct Sprite *sprite)
+void AnimTranslateLinearAndFlicker_Flipped(struct Sprite *sprite)
{
SetSpriteCoordsToAnimAttackerCoords(sprite);
if (GetBattlerSide(gBattleAnimAttacker))
{
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
sprite->hFlip = TRUE;
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
}
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[3] = gBattleAnimArgs[4];
@@ -2296,18 +2296,18 @@ void AnimUnused_80A8A6C(struct Sprite *sprite)
}
// Used by three different unused battle anim sprite templates.
-void AnimUnused_80A8AEC(struct Sprite *sprite)
+void AnimTranslateLinearAndFlicker(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
gBattleAnimArgs[3] *= -1;
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
}
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[3] = gBattleAnimArgs[4];
@@ -2322,10 +2322,10 @@ void AnimSpinningSparkle(struct Sprite *sprite)
{
SetSpriteCoordsToAnimAttackerCoords(sprite);
if (GetBattlerSide(gBattleAnimAttacker))
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
else
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->callback = RunStoredCallbackWhenAnimEnds;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
@@ -2343,7 +2343,7 @@ void AnimTask_AttackerPunchWithTrace(u8 taskId)
task->data[1] = ((GetBattlerSide(gBattleAnimAttacker)) != B_SIDE_PLAYER) ? -8 : 8;
task->data[2] = 0;
task->data[3] = 0;
- gSprites[task->data[0]].pos2.x -= task->data[0];
+ gSprites[task->data[0]].x2 -= task->data[0];
task->data[4] = AllocSpritePalette(ANIM_TAG_BENT_SPOON);
task->data[5] = 0;
@@ -2366,7 +2366,7 @@ static void AnimTask_AttackerPunchWithTrace_Step(u8 taskId)
{
case 0:
sub_80A8D78(task, taskId);
- gSprites[task->data[0]].pos2.x += task->data[1];
+ gSprites[task->data[0]].x2 += task->data[1];
if (++task->data[3] == 5)
{
task->data[3]--;
@@ -2375,10 +2375,10 @@ static void AnimTask_AttackerPunchWithTrace_Step(u8 taskId)
break;
case 1:
sub_80A8D78(task, taskId);
- gSprites[task->data[0]].pos2.x -= task->data[1];
+ gSprites[task->data[0]].x2 -= task->data[1];
if (--task->data[3] == 0)
{
- gSprites[task->data[0]].pos2.x = 0;
+ gSprites[task->data[0]].x2 = 0;
task->data[2]++;
}
break;
@@ -2402,7 +2402,7 @@ static void sub_80A8D78(struct Task *task, u8 taskId)
gSprites[spriteId].data[0] = 8;
gSprites[spriteId].data[1] = taskId;
gSprites[spriteId].data[2] = spriteId;
- gSprites[spriteId].pos2.x = gSprites[task->data[0]].pos2.x;
+ gSprites[spriteId].x2 = gSprites[task->data[0]].x2;
gSprites[spriteId].callback = sub_80A8DFC;
task->data[5]++;
}
@@ -2419,8 +2419,8 @@ static void sub_80A8DFC(struct Sprite *sprite)
void AnimWeatherBallUp(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
if (!GetBattlerSide(gBattleAnimAttacker))
sprite->data[0] = 5;
else
@@ -2433,11 +2433,11 @@ static void AnimWeatherBallUp_Step(struct Sprite *sprite)
{
sprite->data[2] += sprite->data[0];
sprite->data[3] += sprite->data[1];
- sprite->pos2.x = sprite->data[2] / 10;
- sprite->pos2.y = sprite->data[3] / 10;
+ sprite->x2 = sprite->data[2] / 10;
+ sprite->y2 = sprite->data[3] / 10;
if (sprite->data[1] < -20)
sprite->data[1]++;
- if (sprite->pos1.y + sprite->pos2.y < -32)
+ if (sprite->y + sprite->y2 < -32)
DestroyAnimSprite(sprite);
}
@@ -2445,19 +2445,19 @@ void AnimWeatherBallDown(struct Sprite *sprite)
{
int x;
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[4];
- sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[5];
+ sprite->data[2] = sprite->x + gBattleAnimArgs[4];
+ sprite->data[4] = sprite->y + gBattleAnimArgs[5];
if (!GetBattlerSide(gBattleAnimTarget))
{
x = (u16)gBattleAnimArgs[4] + 30;
- sprite->pos1.x += x;
- sprite->pos1.y = gBattleAnimArgs[5] - 20;
+ sprite->x += x;
+ sprite->y = gBattleAnimArgs[5] - 20;
}
else
{
x = (u16)gBattleAnimArgs[4] - 30;
- sprite->pos1.x += x;
- sprite->pos1.y = gBattleAnimArgs[5] - 80;
+ sprite->x += x;
+ sprite->y = gBattleAnimArgs[5] - 80;
}
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
diff --git a/src/battle_anim_normal.c b/src/battle_anim_normal.c
index 60ec5b083..abd5d5478 100644
--- a/src/battle_anim_normal.c
+++ b/src/battle_anim_normal.c
@@ -12,7 +12,7 @@ static void AnimSimplePaletteBlend_Step(struct Sprite *);
static void AnimComplexPaletteBlend(struct Sprite *);
static void AnimComplexPaletteBlend_Step1(struct Sprite *);
static void AnimComplexPaletteBlend_Step2(struct Sprite *);
-static void AnimUnused_81159B4(struct Sprite *);
+static void AnimCirclingSparkle(struct Sprite *);
static void AnimShakeMonOrBattleTerrain(struct Sprite *);
static void AnimShakeMonOrBattleTerrain_Step(struct Sprite *);
static void AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(void);
@@ -92,7 +92,7 @@ const struct SpriteTemplate gComplexPaletteBlendSpriteTemplate =
.callback = AnimComplexPaletteBlend,
};
-static const union AnimCmd sAnim_Unused_085972A4[] =
+static const union AnimCmd sAnim_CirclingSparkle[] =
{
ANIMCMD_FRAME(0, 3),
ANIMCMD_FRAME(16, 3),
@@ -102,21 +102,21 @@ static const union AnimCmd sAnim_Unused_085972A4[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sAnims_Unused_085972BC[] =
+static const union AnimCmd *const sAnims_CirclingSparkle[] =
{
- sAnim_Unused_085972A4,
+ sAnim_CirclingSparkle,
};
// Unused
-const struct SpriteTemplate gUnusedSpriteTemplate_085972C0 =
+static const struct SpriteTemplate sCirclingSparkleSpriteTemplate =
{
.tileTag = ANIM_TAG_SPARKLE_4,
.paletteTag = ANIM_TAG_SPARKLE_4,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
- .anims = sAnims_Unused_085972BC,
+ .anims = sAnims_CirclingSparkle,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = AnimUnused_81159B4,
+ .callback = AnimCirclingSparkle,
};
const struct SpriteTemplate gShakeMonOrTerrainSpriteTemplate =
@@ -261,8 +261,8 @@ const struct SpriteTemplate gPersistHitSplatSpriteTemplate =
// arg 4: duration
static void AnimConfusionDuck(struct Sprite *sprite)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
@@ -283,8 +283,8 @@ static void AnimConfusionDuck(struct Sprite *sprite)
static void AnimConfusionDuck_Step(struct Sprite *sprite)
{
- sprite->pos2.x = Cos(sprite->data[0], 30);
- sprite->pos2.y = Sin(sprite->data[0], 10);
+ sprite->x2 = Cos(sprite->data[0], 30);
+ sprite->y2 = Sin(sprite->data[0], 10);
if ((u16)sprite->data[0] < 128)
sprite->oam.priority = 1;
@@ -398,10 +398,10 @@ static void AnimComplexPaletteBlend_Step2(struct Sprite *sprite)
}
}
-static void AnimUnused_81159B4(struct Sprite *sprite)
+static void AnimCirclingSparkle(struct Sprite *sprite)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = 0;
sprite->data[1] = 10;
sprite->data[2] = 8;
@@ -971,8 +971,8 @@ static void AnimHitSplatRandom(struct Sprite *sprite)
else
InitSpritePosToAnimTarget(sprite, FALSE);
- sprite->pos2.x += (Random2() % 48) - 24;
- sprite->pos2.y += (Random2() % 24) - 12;
+ sprite->x2 += (Random2() % 48) - 24;
+ sprite->y2 += (Random2() % 24) - 12;
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
@@ -981,10 +981,10 @@ static void AnimHitSplatRandom(struct Sprite *sprite)
static void AnimHitSplatOnMonEdge(struct Sprite *sprite)
{
sprite->data[0] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
- sprite->pos1.x = gSprites[sprite->data[0]].pos1.x + gSprites[sprite->data[0]].pos2.x;
- sprite->pos1.y = gSprites[sprite->data[0]].pos1.y + gSprites[sprite->data[0]].pos2.y;
- sprite->pos2.x = gBattleAnimArgs[1];
- sprite->pos2.y = gBattleAnimArgs[2];
+ sprite->x = gSprites[sprite->data[0]].x + gSprites[sprite->data[0]].x2;
+ sprite->y = gSprites[sprite->data[0]].y + gSprites[sprite->data[0]].y2;
+ sprite->x2 = gBattleAnimArgs[1];
+ sprite->y2 = gBattleAnimArgs[2];
StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix);
sprite->callback = RunStoredCallbackWhenAffineAnimEnds;
diff --git a/src/battle_anim_poison.c b/src/battle_anim_poison.c
index bc5624249..6dedbd955 100644
--- a/src/battle_anim_poison.c
+++ b/src/battle_anim_poison.c
@@ -239,10 +239,10 @@ static void AnimAcidPoisonBubble_Step(struct Sprite *sprite)
static void AnimSludgeBombHitParticle(struct Sprite *sprite)
{
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[0];
- sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1];
+ sprite->data[1] = sprite->x;
+ sprite->data[2] = sprite->x + gBattleAnimArgs[0];
+ sprite->data[3] = sprite->y;
+ sprite->data[4] = sprite->y + gBattleAnimArgs[1];
InitSpriteDataForLinearTranslation(sprite);
@@ -265,17 +265,17 @@ static void AnimSludgeBombHitParticle_Step(struct Sprite *sprite)
static void AnimAcidPoisonDroplet(struct Sprite *sprite)
{
- SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->x, &sprite->y);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
- sprite->data[4] = sprite->pos1.y + sprite->data[0];
+ sprite->data[2] = sprite->x + gBattleAnimArgs[2];
+ sprite->data[4] = sprite->y + sprite->data[0];
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
@@ -295,13 +295,13 @@ static void AnimBubbleEffect(struct Sprite *sprite)
}
else
{
- SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->x, &sprite->y);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
}
sprite->callback = AnimBubbleEffect_Step;
@@ -310,9 +310,9 @@ static void AnimBubbleEffect(struct Sprite *sprite)
static void AnimBubbleEffect_Step(struct Sprite *sprite)
{
sprite->data[0] = (sprite->data[0] + 0xB) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[0], 4);
+ sprite->x2 = Sin(sprite->data[0], 4);
sprite->data[1] += 0x30;
- sprite->pos2.y = -(sprite->data[1] >> 8);
+ sprite->y2 = -(sprite->data[1] >> 8);
if (sprite->affineAnimEnded)
DestroyAnimSprite(sprite);
diff --git a/src/battle_anim_psychic.c b/src/battle_anim_psychic.c
index 2e7844f76..6c81467dc 100644
--- a/src/battle_anim_psychic.c
+++ b/src/battle_anim_psychic.c
@@ -450,13 +450,13 @@ static void AnimDefensiveWall(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
- sprite->pos1.x = 72;
- sprite->pos1.y = 80;
+ sprite->x = 72;
+ sprite->y = 80;
}
else
{
- sprite->pos1.x = 176;
- sprite->pos1.y = 40;
+ sprite->x = 176;
+ sprite->y = 40;
}
}
else
@@ -464,15 +464,15 @@ static void AnimDefensiveWall(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[1];
}
sprite->data[0] = 256 + IndexOfSpritePaletteTag(gBattleAnimArgs[2]) * 16;
if (isContest)
{
- sprite->pos1.y += 9;
+ sprite->y += 9;
sprite->callback = AnimDefensiveWall_Step2;
sprite->callback(sprite);
}
@@ -592,13 +592,13 @@ static void AnimWallSparkle(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
- sprite->pos1.x = 72 - gBattleAnimArgs[0];
- sprite->pos1.y = gBattleAnimArgs[1] + 80;
+ sprite->x = 72 - gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[1] + 80;
}
else
{
- sprite->pos1.x = gBattleAnimArgs[0] + 176;
- sprite->pos1.y = gBattleAnimArgs[1] + 40;
+ sprite->x = gBattleAnimArgs[0] + 176;
+ sprite->y = gBattleAnimArgs[1] + 40;
}
}
else
@@ -620,20 +620,20 @@ static void AnimWallSparkle(struct Sprite *sprite)
static void AnimBentSpoon(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
StartSpriteAnim(sprite, 1);
- sprite->pos1.x -= 40;
- sprite->pos1.y += 10;
+ sprite->x -= 40;
+ sprite->y += 10;
sprite->data[1] = -1;
}
else
{
- sprite->pos1.x += 40;
- sprite->pos1.y -= 10;
+ sprite->x += 40;
+ sprite->y -= 10;
sprite->data[1] = 1;
}
@@ -650,11 +650,11 @@ static void AnimQuestionMark(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
x = -x;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + x;
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + y;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + x;
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + y;
- if (sprite->pos1.y < 16)
- sprite->pos1.y = 16;
+ if (sprite->y < 16)
+ sprite->y = 16;
StoreSpriteCallbackInData6(sprite, AnimQuestionMark_Step1);
sprite->callback = RunStoredCallbackWhenAnimEnds;
@@ -731,13 +731,13 @@ static void AnimTask_Teleport_Step(u8 taskId)
case 1:
if (task->data[3] != 0)
{
- gSprites[task->data[0]].pos2.y -= 8;
+ gSprites[task->data[0]].y2 -= 8;
task->data[3]--;
}
else
{
gSprites[task->data[0]].invisible = TRUE;
- gSprites[task->data[0]].pos1.x = 272;
+ gSprites[task->data[0]].x = DISPLAY_WIDTH + 32;
ResetSpriteRotScale(task->data[0]);
DestroyAnimVisualTask(taskId);
}
@@ -785,20 +785,20 @@ static void AnimTask_ImprisonOrbs_Step(u8 taskId)
switch (task->data[2])
{
case 0:
- gSprites[spriteId].pos2.x = task->data[12];
- gSprites[spriteId].pos2.y = -task->data[12];
+ gSprites[spriteId].x2 = task->data[12];
+ gSprites[spriteId].y2 = -task->data[12];
break;
case 1:
- gSprites[spriteId].pos2.x = -task->data[12];
- gSprites[spriteId].pos2.y = task->data[12];
+ gSprites[spriteId].x2 = -task->data[12];
+ gSprites[spriteId].y2 = task->data[12];
break;
case 2:
- gSprites[spriteId].pos2.x = task->data[12];
- gSprites[spriteId].pos2.y = task->data[12];
+ gSprites[spriteId].x2 = task->data[12];
+ gSprites[spriteId].y2 = task->data[12];
break;
case 3:
- gSprites[spriteId].pos2.x = -task->data[12];
- gSprites[spriteId].pos2.y = -task->data[12];
+ gSprites[spriteId].x2 = -task->data[12];
+ gSprites[spriteId].y2 = -task->data[12];
break;
}
}
@@ -851,8 +851,8 @@ static void AnimRedX(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET);
}
sprite->data[0] = gBattleAnimArgs[1];
@@ -1123,11 +1123,11 @@ static void AnimPsychoBoost(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y);
if (IsContest())
- sprite->pos1.y += 12;
+ sprite->y += 12;
sprite->data[1] = 8;
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
@@ -1156,7 +1156,7 @@ static void AnimPsychoBoost(struct Sprite *sprite)
}
sprite->data[3] += 0x380;
- sprite->pos2.y -= sprite->data[3] >> 8;
+ sprite->y2 -= sprite->data[3] >> 8;
sprite->data[3] &= 0xFF;
break;
case 3:
diff --git a/src/battle_anim_rock.c b/src/battle_anim_rock.c
index 245fb43a2..7f292d596 100644
--- a/src/battle_anim_rock.c
+++ b/src/battle_anim_rock.c
@@ -142,37 +142,37 @@ static const struct SubspriteTable sFlyingSandSubspriteTable[] =
{ARRAY_COUNT(sFlyingSandSubsprites), sFlyingSandSubsprites},
};
-static const union AnimCmd sAnim_BasicRock_0[] =
+static const union AnimCmd sAnim_Rock_Biggest[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-static const union AnimCmd sAnim_BasicRock_1[] =
+static const union AnimCmd sAnim_Rock_Bigger[] =
{
ANIMCMD_FRAME(16, 1),
ANIMCMD_END,
};
-static const union AnimCmd sAnim_WeatherBallRockDown_0[] =
+static const union AnimCmd sAnim_Rock_Big[] =
{
ANIMCMD_FRAME(32, 1),
ANIMCMD_END,
};
-static const union AnimCmd sAnim_WeatherBallRockDown_1[] =
+static const union AnimCmd sAnim_Rock_Small[] =
{
ANIMCMD_FRAME(48, 1),
ANIMCMD_END,
};
-static const union AnimCmd sAnim_TwisterRock_0[] =
+static const union AnimCmd sAnim_Rock_Smaller[] =
{
ANIMCMD_FRAME(64, 1),
ANIMCMD_END,
};
-static const union AnimCmd sAnim_TwisterRock_1[] =
+static const union AnimCmd sAnim_Rock_Smallest[] =
{
ANIMCMD_FRAME(80, 1),
ANIMCMD_END,
@@ -180,16 +180,12 @@ static const union AnimCmd sAnim_TwisterRock_1[] =
static const union AnimCmd *const sAnims_BasicRock[] =
{
- sAnim_BasicRock_0,
- sAnim_BasicRock_1,
- sAnim_WeatherBallRockDown_0,
- sAnim_WeatherBallRockDown_1,
-};
-
-static const union AnimCmd *const sAnims_TwisterRock[] =
-{
- sAnim_TwisterRock_0,
- sAnim_TwisterRock_1,
+ sAnim_Rock_Biggest,
+ sAnim_Rock_Bigger,
+ sAnim_Rock_Big,
+ sAnim_Rock_Small,
+ sAnim_Rock_Smaller,
+ sAnim_Rock_Smallest,
};
const struct SpriteTemplate gAncientPowerRockSpriteTemplate =
@@ -281,7 +277,7 @@ const struct SpriteTemplate gTwisterRockSpriteTemplate =
.tileTag = ANIM_TAG_ROCKS,
.paletteTag = ANIM_TAG_ROCKS,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
- .anims = sAnims_TwisterRock,
+ .anims = &sAnims_BasicRock[4],
.images = NULL,
.affineAnims = sAffineAnims_BasicRock,
.callback = AnimMoveTwisterParticle,
@@ -301,10 +297,10 @@ const struct SpriteTemplate gWeatherBallRockDownSpriteTemplate =
static void AnimFallingRock(struct Sprite *sprite)
{
if (gBattleAnimArgs[3] != 0)
- SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->x, &sprite->y);
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += 14;
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += 14;
StartSpriteAnim(sprite, gBattleAnimArgs[1]);
AnimateSprite(sprite);
@@ -323,7 +319,7 @@ static void AnimFallingRock(struct Sprite *sprite)
static void AnimFallingRock_Step(struct Sprite *sprite)
{
- sprite->pos1.x += sprite->data[5];
+ sprite->x += sprite->data[5];
sprite->data[0] = 192;
sprite->data[1] = sprite->data[5];
@@ -343,17 +339,17 @@ static void AnimRockFragment(struct Sprite *sprite)
AnimateSprite(sprite);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
else
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
- sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3];
+ sprite->data[1] = sprite->x;
+ sprite->data[2] = sprite->x + gBattleAnimArgs[2];
+ sprite->data[3] = sprite->y;
+ sprite->data[4] = sprite->y + gBattleAnimArgs[3];
InitSpriteDataForLinearTranslation(sprite);
sprite->data[3] = 0;
@@ -382,8 +378,8 @@ static void AnimParticleInVortex(struct Sprite *sprite)
static void AnimParticleInVortex_Step(struct Sprite *sprite)
{
sprite->data[4] += sprite->data[1];
- sprite->pos2.y = -(sprite->data[4] >> 8);
- sprite->pos2.x = Sin(sprite->data[5], sprite->data[3]);
+ sprite->y2 = -(sprite->data[4] >> 8);
+ sprite->x2 = Sin(sprite->data[5], sprite->data[3]);
sprite->data[5] = (sprite->data[5] + sprite->data[2]) & 0xFF;
if (--sprite->data[0] == -1)
@@ -500,17 +496,17 @@ static void AnimFlyingSandCrescent(struct Sprite *sprite)
{
if (gBattleAnimArgs[3] != 0 && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
- sprite->pos1.x = 304;
+ sprite->x = DISPLAY_WIDTH + 64;
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
sprite->data[5] = 1;
sprite->oam.matrixNum = ST_OAM_HFLIP;
}
else
{
- sprite->pos1.x = -64;
+ sprite->x = -64;
}
- sprite->pos1.y = gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[0];
SetSubspriteTables(sprite, sFlyingSandSubspriteTable);
sprite->data[1] = gBattleAnimArgs[1];
sprite->data[2] = gBattleAnimArgs[2];
@@ -520,19 +516,19 @@ static void AnimFlyingSandCrescent(struct Sprite *sprite)
{
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite->pos2.x += (sprite->data[3] >> 8);
- sprite->pos2.y += (sprite->data[4] >> 8);
+ sprite->x2 += (sprite->data[3] >> 8);
+ sprite->y2 += (sprite->data[4] >> 8);
sprite->data[3] &= 0xFF;
sprite->data[4] &= 0xFF;
if (sprite->data[5] == 0)
{
- if (sprite->pos1.x + sprite->pos2.x > 272)
+ if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 32)
{
sprite->callback = DestroyAnimSprite;
}
}
- else if (sprite->pos1.x + sprite->pos2.x < -32)
+ else if (sprite->x + sprite->x2 < -32)
{
sprite->callback = DestroyAnimSprite;
}
@@ -551,8 +547,8 @@ static void AnimRaiseSprite(struct Sprite *sprite)
InitSpritePosToAnimAttacker(sprite, 0);
sprite->data[0] = gBattleAnimArgs[3];
- sprite->data[2] = sprite->pos1.x;
- sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[2];
+ sprite->data[2] = sprite->x;
+ sprite->data[4] = sprite->y + gBattleAnimArgs[2];
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
@@ -622,8 +618,8 @@ static void AnimTask_Rollout_Step(u8 taskId)
case 0:
task->data[6] -= task->data[4];
task->data[7] -= task->data[5];
- gSprites[task->data[15]].pos2.x = task->data[6] >> 3;
- gSprites[task->data[15]].pos2.y = task->data[7] >> 3;
+ gSprites[task->data[15]].x2 = task->data[6] >> 3;
+ gSprites[task->data[15]].y2 = task->data[7] >> 3;
if (++task->data[9] == 10)
{
@@ -650,8 +646,8 @@ static void AnimTask_Rollout_Step(u8 taskId)
task->data[0]++;
}
- gSprites[task->data[15]].pos2.x = task->data[6] >> 3;
- gSprites[task->data[15]].pos2.y = task->data[7] >> 3;
+ gSprites[task->data[15]].x2 = task->data[6] >> 3;
+ gSprites[task->data[15]].y2 = task->data[7] >> 3;
break;
case 3:
task->data[2] += task->data[4];
@@ -752,7 +748,7 @@ static void AnimRockTomb(struct Sprite *sprite)
{
StartSpriteAnim(sprite, gBattleAnimArgs[4]);
- sprite->pos2.x = gBattleAnimArgs[0];
+ sprite->x2 = gBattleAnimArgs[0];
sprite->data[2] = gBattleAnimArgs[1];
sprite->data[3] -= gBattleAnimArgs[2];
sprite->data[0] = 3;
@@ -766,7 +762,7 @@ static void AnimRockTomb_Step(struct Sprite *sprite)
sprite->invisible = FALSE;
if (sprite->data[3] != 0)
{
- sprite->pos2.y = sprite->data[2] + sprite->data[3];
+ sprite->y2 = sprite->data[2] + sprite->data[3];
sprite->data[3] += sprite->data[0];
sprite->data[0]++;
if (sprite->data[3] > 0)
@@ -791,10 +787,10 @@ static void AnimRockBlastRock(struct Sprite *sprite)
static void AnimRockScatter(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[1] = gBattleAnimArgs[0];
sprite->data[2] = gBattleAnimArgs[1];
@@ -810,8 +806,8 @@ static void AnimRockScatter_Step(struct Sprite *sprite)
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite->pos2.x += sprite->data[3] / 40;
- sprite->pos2.y -= Sin(sprite->data[0], sprite->data[5]);
+ sprite->x2 += sprite->data[3] / 40;
+ sprite->y2 -= Sin(sprite->data[0], sprite->data[5]);
if (sprite->data[0] > 140)
DestroyAnimSprite(sprite);
diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c
index 8fc93c3aa..39d6729e8 100644
--- a/src/battle_anim_sound_tasks.c
+++ b/src/battle_anim_sound_tasks.c
@@ -135,8 +135,10 @@ void SoundTask_PlayCryHighPitch(u8 taskId)
{
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
species = gContestResources->moveAnim->species;
+ #ifndef UBFIX
else
- DestroyAnimVisualTask(taskId); // UB: function should return upon destroying task.
+ DestroyAnimVisualTask(taskId); // UB: task gets destroyed twice.
+ #endif
}
else
{
@@ -179,8 +181,10 @@ void SoundTask_PlayDoubleCry(u8 taskId)
{
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
species = gContestResources->moveAnim->species;
+ #ifndef UBFIX
else
- DestroyAnimVisualTask(taskId); // UB: function should return upon destroying task.
+ DestroyAnimVisualTask(taskId); // UB: task gets destroyed twice.
+ #endif
}
else
{
diff --git a/src/battle_anim_status_effects.c b/src/battle_anim_status_effects.c
index 9221116ba..4893abd58 100644
--- a/src/battle_anim_status_effects.c
+++ b/src/battle_anim_status_effects.c
@@ -17,16 +17,16 @@ extern const u8 *const gBattleAnims_StatusConditions[];
extern const struct OamData gOamData_AffineOff_ObjNormal_8x8;
extern const struct OamData gOamData_AffineOff_ObjBlend_64x64;
-static void UnusedTask_80A9DB4(u8 taskId);
+static void Task_UpdateFlashingCircleImpacts(u8 taskId);
static void AnimTask_FrozenIceCube_Step1(u8 taskId);
static void AnimTask_FrozenIceCube_Step2(u8 taskId);
static void AnimTask_FrozenIceCube_Step3(u8 taskId);
static void AnimTask_FrozenIceCube_Step4(u8 taskId);
static void Task_DoStatusAnimation(u8 taskId);
-static void AnimUnused_80A9E44(struct Sprite *sprite);
-static void AnimUnused_80A9E44_Step(struct Sprite *sprite);
+static void AnimFlashingCircleImpact(struct Sprite *sprite);
+static void AnimFlashingCircleImpact_Step(struct Sprite *sprite);
-static const union AnimCmd sAnim_Unused_853EDE4[] =
+static const union AnimCmd sAnim_FlickeringOrb[] =
{
ANIMCMD_FRAME(0, 3),
ANIMCMD_FRAME(4, 3),
@@ -35,33 +35,33 @@ static const union AnimCmd sAnim_Unused_853EDE4[] =
ANIMCMD_JUMP(0)
};
-static const union AnimCmd *const sAnims_Unused_853EDF8[] =
+static const union AnimCmd *const sAnims_FlickeringOrb[] =
{
- sAnim_Unused_853EDE4
+ sAnim_FlickeringOrb
};
// Unused
-const struct SpriteTemplate gUnusedSpriteTemplate_0853EDFC =
+static const struct SpriteTemplate sFlickeringOrbSpriteTemplate =
{
.tileTag = ANIM_TAG_ORB,
.paletteTag = ANIM_TAG_ORB,
.oam = &gOamData_AffineOff_ObjNormal_16x16,
- .anims = sAnims_Unused_853EDF8,
+ .anims = sAnims_FlickeringOrb,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = AnimUnused_80A8AEC,
+ .callback = AnimTranslateLinearAndFlicker,
};
// Unused
-const struct SpriteTemplate gUnusedSpriteTemplate_0853EE14 =
+static const struct SpriteTemplate sFlickeringOrbFlippedSpriteTemplate =
{
.tileTag = ANIM_TAG_ORB,
.paletteTag = ANIM_TAG_ORB,
.oam = &gOamData_AffineOff_ObjNormal_16x16,
- .anims = sAnims_Unused_853EDF8,
+ .anims = sAnims_FlickeringOrb,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = AnimUnused_80A8A6C,
+ .callback = AnimTranslateLinearAndFlicker_Flipped,
};
static const union AnimCmd sAnim_WeatherBallNormal[] =
@@ -124,7 +124,7 @@ const struct SpriteTemplate gSpinningSparkleSpriteTemplate =
};
// Unused
-const struct SpriteTemplate gUnusedSpriteTemplate_0853EE9C =
+static const struct SpriteTemplate sFlickeringFootSpriteTemplate =
{
.tileTag = ANIM_TAG_MONSTER_FOOT,
.paletteTag = ANIM_TAG_MONSTER_FOOT,
@@ -132,79 +132,79 @@ const struct SpriteTemplate gUnusedSpriteTemplate_0853EE9C =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = AnimUnused_80A8AEC,
+ .callback = AnimTranslateLinearAndFlicker,
};
-static const union AnimCmd sAnim_Unused_853EEB4[] =
+static const union AnimCmd sAnim_FlickeringImpact_0[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd sAnim_Unused_853EEBC[] =
+static const union AnimCmd sAnim_FlickeringImpact_1[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd sAnim_Unused_853EEC4[] =
+static const union AnimCmd sAnim_FlickeringImpact_2[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd *const sAnims_Unused_853EECC[] =
+static const union AnimCmd *const sAnims_FlickeringImpact[] =
{
- sAnim_Unused_853EEB4,
- sAnim_Unused_853EEBC,
- sAnim_Unused_853EEC4,
+ sAnim_FlickeringImpact_0,
+ sAnim_FlickeringImpact_1,
+ sAnim_FlickeringImpact_2,
};
// Unused
-const struct SpriteTemplate gUnusedSpriteTemplate_0853EED8 =
+static const struct SpriteTemplate sFlickeringImpactSpriteTemplate =
{
.tileTag = ANIM_TAG_IMPACT,
.paletteTag = ANIM_TAG_IMPACT,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
- .anims = sAnims_Unused_853EECC,
+ .anims = sAnims_FlickeringImpact,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = AnimUnused_80A8AEC,
+ .callback = AnimTranslateLinearAndFlicker,
};
-static const union AnimCmd sAnim_Unused_853EEF0[] =
+static const union AnimCmd sAnim_FlickeringShrinkOrb[] =
{
ANIMCMD_FRAME(0, 15),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd *const sAnims_Unused_853EEF8[] =
+static const union AnimCmd *const sAnims_FlickeringShrinkOrb[] =
{
- sAnim_Unused_853EEF0
+ sAnim_FlickeringShrinkOrb
};
-static const union AffineAnimCmd sAffineAnim_Unused_853EEFC[] =
+static const union AffineAnimCmd sAffineAnim_FlickeringShrinkOrb[] =
{
AFFINEANIMCMD_FRAME(96, 96, 0, 0),
AFFINEANIMCMD_FRAME(2, 2, 0, 1),
AFFINEANIMCMD_JUMP(1)
};
-static const union AffineAnimCmd *const sAffineAnims_Unused_853EEF8[] =
+static const union AffineAnimCmd *const sAffineAnims_FlickeringShrinkOrb[] =
{
- sAffineAnim_Unused_853EEFC
+ sAffineAnim_FlickeringShrinkOrb
};
// Unused
-const struct SpriteTemplate gUnusedSpriteTemplate_0853EF18 =
+static const struct SpriteTemplate sFlickeringShrinkOrbSpriteTemplate =
{
.tileTag = ANIM_TAG_ORB,
.paletteTag = ANIM_TAG_ORB,
.oam = &gOamData_AffineDouble_ObjNormal_16x16,
- .anims = sAnims_Unused_853EEF8,
+ .anims = sAnims_FlickeringShrinkOrb,
.images = NULL,
- .affineAnims = sAffineAnims_Unused_853EEF8,
- .callback = AnimUnused_80A8A6C,
+ .affineAnims = sAffineAnims_FlickeringShrinkOrb,
+ .callback = AnimTranslateLinearAndFlicker_Flipped,
};
static const struct Subsprite sFrozenIceCubeSubsprites[] =
@@ -259,7 +259,7 @@ static const struct SpriteTemplate gFrozenIceCubeSpriteTemplate =
.callback = SpriteCallbackDummy,
};
-static const struct SpriteTemplate gUnusedSpriteTemplate_0853EF60 =
+static const struct SpriteTemplate sFlashingCircleImpactSpriteTemplate =
{
.tileTag = ANIM_TAG_CIRCLE_IMPACT,
.paletteTag = ANIM_TAG_CIRCLE_IMPACT,
@@ -267,31 +267,31 @@ static const struct SpriteTemplate gUnusedSpriteTemplate_0853EF60 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = AnimUnused_80A9E44,
+ .callback = AnimFlashingCircleImpact,
};
// Unused
-u8 Unused_80A9C70(u8 battlerId, bool8 b)
+static u8 Task_FlashingCircleImpacts(u8 battlerId, bool8 red)
{
u8 battlerSpriteId = gBattlerSpriteIds[battlerId];
- u8 taskId = CreateTask(UnusedTask_80A9DB4, 10);
- u8 spriteId2;
+ u8 taskId = CreateTask(Task_UpdateFlashingCircleImpacts, 10);
+ u8 spriteId;
u8 i;
LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_CIRCLE_IMPACT)]);
LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_CIRCLE_IMPACT)]);
gTasks[taskId].data[0] = battlerId;
- if (b)
+ if (red)
{
gTasks[taskId].data[1] = RGB_RED;
for (i = 0; i < 10; i++)
{
- spriteId2 = CreateSprite(&gUnusedSpriteTemplate_0853EF60, gSprites[battlerSpriteId].pos1.x, gSprites[battlerSpriteId].pos1.y + 32, 0);
- gSprites[spriteId2].data[0] = i * 51;
- gSprites[spriteId2].data[1] = -256;
- gSprites[spriteId2].invisible = TRUE;
+ spriteId = CreateSprite(&sFlashingCircleImpactSpriteTemplate, gSprites[battlerSpriteId].x, gSprites[battlerSpriteId].y + 32, 0);
+ gSprites[spriteId].data[0] = i * 51;
+ gSprites[spriteId].data[1] = -256;
+ gSprites[spriteId].invisible = TRUE;
if (i > 4)
- gSprites[spriteId2].data[6] = 21;
+ gSprites[spriteId].data[6] = 21;
}
}
else
@@ -299,19 +299,19 @@ u8 Unused_80A9C70(u8 battlerId, bool8 b)
gTasks[taskId].data[1] = RGB_BLUE;
for (i = 0; i < 10; i++)
{
- spriteId2 = CreateSprite(&gUnusedSpriteTemplate_0853EF60, gSprites[battlerSpriteId].pos1.x, gSprites[battlerSpriteId].pos1.y - 32, 0);
- gSprites[spriteId2].data[0] = i * 51;
- gSprites[spriteId2].data[1] = 256;
- gSprites[spriteId2].invisible = TRUE;
+ spriteId = CreateSprite(&sFlashingCircleImpactSpriteTemplate, gSprites[battlerSpriteId].x, gSprites[battlerSpriteId].y - 32, 0);
+ gSprites[spriteId].data[0] = i * 51;
+ gSprites[spriteId].data[1] = 256;
+ gSprites[spriteId].invisible = TRUE;
if (i > 4)
- gSprites[spriteId2].data[6] = 21;
+ gSprites[spriteId].data[6] = 21;
}
}
- gSprites[spriteId2].data[7] = 1;
+ gSprites[spriteId].data[7] = 1;
return taskId;
}
-static void UnusedTask_80A9DB4(u8 taskId)
+static void Task_UpdateFlashingCircleImpacts(u8 taskId)
{
if (gTasks[taskId].data[2] == 2)
{
@@ -344,13 +344,13 @@ static void UnusedTask_80A9DB4(u8 taskId)
}
}
-static void AnimUnused_80A9E44(struct Sprite *sprite)
+static void AnimFlashingCircleImpact(struct Sprite *sprite)
{
if (sprite->data[6] == 0)
{
sprite->invisible = FALSE;
- sprite->callback = AnimUnused_80A9E44_Step;
- AnimUnused_80A9E44_Step(sprite);
+ sprite->callback = AnimFlashingCircleImpact_Step;
+ AnimFlashingCircleImpact_Step(sprite);
}
else
{
@@ -358,17 +358,17 @@ static void AnimUnused_80A9E44(struct Sprite *sprite)
}
}
-static void AnimUnused_80A9E44_Step(struct Sprite *sprite)
+static void AnimFlashingCircleImpact_Step(struct Sprite *sprite)
{
- sprite->pos2.x = Cos(sprite->data[0], 32);
- sprite->pos2.y = Sin(sprite->data[0], 8);
+ sprite->x2 = Cos(sprite->data[0], 32);
+ sprite->y2 = Sin(sprite->data[0], 8);
if (sprite->data[0] < 128)
sprite->subpriority = 29;
else
sprite->subpriority = 31;
sprite->data[0] = (sprite->data[0] + 8) & 0xFF;
sprite->data[5] += sprite->data[1];
- sprite->pos2.y += sprite->data[5] >> 8;
+ sprite->y2 += sprite->data[5] >> 8;
sprite->data[2]++;
if (sprite->data[2] == 52)
{
diff --git a/src/battle_anim_throw.c b/src/battle_anim_throw.c
index 5b355c4bd..23e031b64 100755
--- a/src/battle_anim_throw.c
+++ b/src/battle_anim_throw.c
@@ -16,6 +16,7 @@
#include "task.h"
#include "trig.h"
#include "util.h"
+#include "data.h"
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/songs.h"
@@ -472,8 +473,8 @@ void AnimTask_UnusedLevelUpHealthBox(u8 taskId)
AnimLoadCompressedBgGfx(animBgData.bgId, UnusedLevelupAnimationGfx, animBgData.tilesOffset);
LoadCompressedPalette(gCureBubblesPal, animBgData.paletteId << 4, 32);
- gBattle_BG1_X = -gSprites[spriteId3].pos1.x + 32;
- gBattle_BG1_Y = -gSprites[spriteId3].pos1.y - 32;
+ gBattle_BG1_X = -gSprites[spriteId3].x + 32;
+ gBattle_BG1_Y = -gSprites[spriteId3].y - 32;
gTasks[taskId].data[1] = 640;
gTasks[taskId].data[0] = spriteId3;
gTasks[taskId].data[2] = spriteId4;
@@ -856,9 +857,9 @@ static void SpriteCB_Ball_Throw(struct Sprite *sprite)
u16 targetX = sprite->sTargetXArg;
u16 targetY = sprite->sTargetYArg;
- sprite->sOffsetX = sprite->pos1.x;
+ sprite->sOffsetX = sprite->x;
sprite->sTargetX = targetX;
- sprite->sOffsetY = sprite->pos1.y;
+ sprite->sOffsetY = sprite->y;
sprite->sTargetY = targetY;
sprite->sAmplitude = -40;
InitAnimArcTranslation(sprite);
@@ -890,10 +891,10 @@ static void SpriteCB_Ball_Arc(struct Sprite *sprite)
else
{
StartSpriteAnim(sprite, 1);
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
for (i = 0; i < 8; i++)
sprite->data[i] = 0;
@@ -905,7 +906,7 @@ static void SpriteCB_Ball_Arc(struct Sprite *sprite)
switch (ballId)
{
case 0 ... POKEBALL_COUNT - 1:
- AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId);
+ AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 28, ballId);
LaunchBallFadeMonTask(FALSE, gBattleAnimTarget, 14, ballId);
break;
}
@@ -947,7 +948,7 @@ static void SpriteCB_Ball_MonShrink_Step(struct Sprite *sprite)
PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL);
gTasks[taskId].data[10] = 256;
gMonShrinkDuration = 28;
- gMonShrinkDistance = (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) - (sprite->pos1.y + sprite->pos2.y);
+ gMonShrinkDistance = (gSprites[spriteId].y + gSprites[spriteId].y2) - (sprite->y + sprite->y2);
gMonShrinkDelta = (u32)(gMonShrinkDistance * 256) / gMonShrinkDuration;
gTasks[taskId].data[2] = gMonShrinkDelta;
gTasks[taskId].tState++; // MON_SHRINK_STEP
@@ -956,7 +957,7 @@ static void SpriteCB_Ball_MonShrink_Step(struct Sprite *sprite)
gTasks[taskId].data[10] += 32;
SetSpriteRotScale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[10], 0);
gTasks[taskId].data[3] += gTasks[taskId].data[2];
- gSprites[spriteId].pos2.y = -gTasks[taskId].data[3] >> 8;
+ gSprites[spriteId].y2 = -gTasks[taskId].data[3] >> 8;
if (gTasks[taskId].data[10] >= 1152)
gTasks[taskId].tState++; // MON_SHRINK_INVISIBLE
break;
@@ -996,8 +997,8 @@ static void SpriteCB_Ball_Bounce(struct Sprite *sprite)
sprite->sAmplitude = 40;
sprite->sPhase = 0;
phase = 0;
- sprite->pos1.y += Cos(phase, 40);
- sprite->pos2.y = -Cos(phase, sprite->sAmplitude);
+ sprite->y += Cos(phase, 40);
+ sprite->y2 = -Cos(phase, sprite->sAmplitude);
sprite->callback = SpriteCB_Ball_Bounce_Step;
}
}
@@ -1031,7 +1032,7 @@ static void SpriteCB_Ball_Bounce_Step(struct Sprite *sprite)
switch (DIRECTION(sprite->sState))
{
case BALL_FALLING:
- sprite->pos2.y = -Cos(sprite->sPhase, sprite->sAmplitude);
+ sprite->y2 = -Cos(sprite->sPhase, sprite->sAmplitude);
sprite->sPhase += PHASE_DELTA(sprite->sState) + 4;
// Once the ball touches the ground
if (sprite->sPhase >= 64)
@@ -1061,7 +1062,7 @@ static void SpriteCB_Ball_Bounce_Step(struct Sprite *sprite)
}
break;
case BALL_RISING:
- sprite->pos2.y = -Cos(sprite->sPhase, sprite->sAmplitude);
+ sprite->y2 = -Cos(sprite->sPhase, sprite->sAmplitude);
sprite->sPhase -= PHASE_DELTA(sprite->sState) + 4;
// Once ball reaches max height
if (sprite->sPhase <= 0)
@@ -1076,8 +1077,8 @@ static void SpriteCB_Ball_Bounce_Step(struct Sprite *sprite)
if (lastBounce)
{
sprite->sState = 0;
- sprite->pos1.y += Cos(64, 40);
- sprite->pos2.y = 0;
+ sprite->y += Cos(64, 40);
+ sprite->y2 = 0;
if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_NO_SHAKES)
{
sprite->sTimer = 0;
@@ -1142,7 +1143,7 @@ static void SpriteCB_Ball_Wobble_Step(struct Sprite *sprite)
// Rolling effect: every frame in the rotation, the sprite shifts 176/256 of a pixel.
if (gBattleSpritesDataPtr->animationData->ballSubpx > 255)
{
- sprite->pos2.x += sprite->sDirection;
+ sprite->x2 += sprite->sDirection;
gBattleSpritesDataPtr->animationData->ballSubpx &= 0xFF;
}
else
@@ -1176,7 +1177,7 @@ static void SpriteCB_Ball_Wobble_Step(struct Sprite *sprite)
case BALL_ROLL_2:
if (gBattleSpritesDataPtr->animationData->ballSubpx > 255)
{
- sprite->pos2.x += sprite->sDirection;
+ sprite->x2 += sprite->sDirection;
gBattleSpritesDataPtr->animationData->ballSubpx &= 0xFF;
}
else
@@ -1211,7 +1212,7 @@ static void SpriteCB_Ball_Wobble_Step(struct Sprite *sprite)
case BALL_ROLL_3:
if (gBattleSpritesDataPtr->animationData->ballSubpx > 0xFF)
{
- sprite->pos2.x += sprite->sDirection;
+ sprite->x2 += sprite->sDirection;
gBattleSpritesDataPtr->animationData->ballSubpx &= 0xFF;
}
else
@@ -1419,12 +1420,12 @@ static void MakeCaptureStars(struct Sprite *sprite)
LoadBallParticleGfx(BALL_MASTER);
for (i = 0; i < ARRAY_COUNT(sCaptureStars); i++)
{
- u8 spriteId = CreateSprite(&sBallParticleSpriteTemplates[4], sprite->pos1.x, sprite->pos1.y, subpriority);
+ u8 spriteId = CreateSprite(&sBallParticleSpriteTemplates[BALL_MASTER], sprite->x, sprite->y, subpriority);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].sDuration = 24;
- gSprites[spriteId].sTargetX = sprite->pos1.x + sCaptureStars[i].xOffset;
- gSprites[spriteId].sTargetY = sprite->pos1.y + sCaptureStars[i].yOffset;
+ gSprites[spriteId].sTargetX = sprite->x + sCaptureStars[i].xOffset;
+ gSprites[spriteId].sTargetY = sprite->y + sCaptureStars[i].yOffset;
gSprites[spriteId].sAmplitude = sCaptureStars[i].amplitude;
InitAnimArcTranslation(&gSprites[spriteId]);
gSprites[spriteId].callback = SpriteCB_CaptureStar_Flicker;
@@ -1464,14 +1465,14 @@ static void SpriteCB_Ball_Release_Step(struct Sprite *sprite)
switch (ballId)
{
case 0 ... POKEBALL_COUNT - 1:
- AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId);
+ AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 28, ballId);
LaunchBallFadeMonTask(TRUE, gBattleAnimTarget, 14, ballId);
break;
}
// Animate Pokémon emerging from Poké Ball
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = FALSE;
- StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 1);
+ StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], BATTLER_AFFINE_EMERGE);
AnimateSprite(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]]);
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].sOffsetY = 4096;
}
@@ -1485,18 +1486,18 @@ static void SpriteCB_Ball_Release_Wait(struct Sprite *sprite)
if (gSprites[gBattlerSpriteIds[gBattleAnimTarget]].affineAnimEnded)
{
- StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 0);
+ StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], BATTLER_AFFINE_NORMAL);
released = TRUE;
}
else
{
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].sOffsetY -= 288;
- gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].sOffsetY >> 8;
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].y2 = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].sOffsetY >> 8;
}
if (sprite->animEnded && released)
{
- gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = 0;
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].y2 = 0;
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = gBattleSpritesDataPtr->animationData->wildMonInvisible;
sprite->sFrame = 0;
sprite->callback = DestroySpriteAfterOneFrame;
@@ -1512,10 +1513,10 @@ static void SpriteCB_Ball_Block(struct Sprite *sprite)
{
s32 i;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
for (i = 0; i < 6; i++)
sprite->data[i] = 0;
@@ -1532,13 +1533,13 @@ static void SpriteCB_Ball_Block_Step(struct Sprite *sprite)
{
s16 dy = sprite->sDy + 0x800;
s16 dx = sprite->sDx + 0x680;
- sprite->pos2.x -= dx >> 8;
- sprite->pos2.y += dy >> 8;
+ sprite->x2 -= dx >> 8;
+ sprite->y2 += dy >> 8;
sprite->sDy = (sprite->sDy + 0x800) & 0xFF;
sprite->sDx = (sprite->sDx + 0x680) & 0xFF;
- if (sprite->pos1.y + sprite->pos2.y > 160
- || sprite->pos1.x + sprite->pos2.x < -8)
+ if (sprite->y + sprite->y2 > DISPLAY_HEIGHT
+ || sprite->x + sprite->x2 < -8)
{
sprite->sFrame = 0;
sprite->callback = DestroySpriteAfterOneFrame;
@@ -1637,8 +1638,8 @@ static void PokeBallOpenParticleAnimation_Step1(struct Sprite *sprite)
static void PokeBallOpenParticleAnimation_Step2(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
- sprite->pos2.y = Cos(sprite->data[0], sprite->data[1]);
+ sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
+ sprite->y2 = Cos(sprite->data[0], sprite->data[1]);
sprite->data[1] += 2;
if (sprite->data[1] == 50)
DestroyBallOpenAnimationParticle(sprite);
@@ -1830,8 +1831,8 @@ static void GreatBallOpenParticleAnimation(u8 taskId)
static void FanOutBallOpenParticles_Step1(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
- sprite->pos2.y = Cos(sprite->data[0], sprite->data[2]);
+ sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
+ sprite->y2 = Cos(sprite->data[0], sprite->data[2]);
sprite->data[0] = (sprite->data[0] + sprite->data[4]) & 0xFF;
sprite->data[1] += sprite->data[5];
sprite->data[2] += sprite->data[6];
@@ -1872,8 +1873,8 @@ static void RepeatBallOpenParticleAnimation(u8 taskId)
static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
- sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0], sprite->data[2]));
+ sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
+ sprite->y2 = Cos(sprite->data[0], Sin(sprite->data[0], sprite->data[2]));
sprite->data[0] = (sprite->data[0] + 6) & 0xFF;
sprite->data[1]++;
sprite->data[2]++;
@@ -1960,8 +1961,8 @@ static void PremierBallOpenParticleAnimation(u8 taskId)
static void PremierBallOpenParticleAnimation_Step1(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
- sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0] & 0x3F, sprite->data[2]));
+ sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
+ sprite->y2 = Cos(sprite->data[0], Sin(sprite->data[0] & 0x3F, sprite->data[2]));
sprite->data[0] = (sprite->data[0] + 10) & 0xFF;
sprite->data[1]++;
sprite->data[2]++;
@@ -2110,12 +2111,12 @@ void AnimTask_SwapMonSpriteToFromSubstitute(u8 taskId)
gTasks[taskId].data[11] = gBattleAnimArgs[0];
gTasks[taskId].data[0] += 0x500;
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- gSprites[spriteId].pos2.x += gTasks[taskId].data[0] >> 8;
+ gSprites[spriteId].x2 += gTasks[taskId].data[0] >> 8;
else
- gSprites[spriteId].pos2.x -= gTasks[taskId].data[0] >> 8;
+ gSprites[spriteId].x2 -= gTasks[taskId].data[0] >> 8;
gTasks[taskId].data[0] &= 0xFF;
- x = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x + 32;
+ x = gSprites[spriteId].x + gSprites[spriteId].x2 + 32;
if (x > 304)
gTasks[taskId].data[10]++;
break;
@@ -2126,24 +2127,24 @@ void AnimTask_SwapMonSpriteToFromSubstitute(u8 taskId)
case 2:
gTasks[taskId].data[0] += 0x500;
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- gSprites[spriteId].pos2.x -= gTasks[taskId].data[0] >> 8;
+ gSprites[spriteId].x2 -= gTasks[taskId].data[0] >> 8;
else
- gSprites[spriteId].pos2.x += gTasks[taskId].data[0] >> 8;
+ gSprites[spriteId].x2 += gTasks[taskId].data[0] >> 8;
gTasks[taskId].data[0] &= 0xFF;
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
- if (gSprites[spriteId].pos2.x <= 0)
+ if (gSprites[spriteId].x2 <= 0)
{
- gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].x2 = 0;
done = TRUE;
}
}
else
{
- if (gSprites[spriteId].pos2.x >= 0)
+ if (gSprites[spriteId].x2 >= 0)
{
- gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].x2 = 0;
done = TRUE;
}
}
@@ -2182,7 +2183,7 @@ void AnimTask_SubstituteFadeToInvisible(u8 taskId)
break;
case 2:
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
- RequestDma3Fill(0, (void *)OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * TILE_SIZE_4BPP, 0x800, 1);
+ RequestDma3Fill(0, (void *)OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * TILE_SIZE_4BPP, MON_PIC_SIZE, 1);
ClearBehindSubstituteBit(gBattleAnimAttacker);
DestroyAnimVisualTask(taskId);
break;
@@ -2301,8 +2302,8 @@ static void Task_ShinyStars(u8 taskId)
else
{
gSprites[spriteId].callback = SpriteCB_ShinyStars_Diagonal;
- gSprites[spriteId].pos2.x = -32;
- gSprites[spriteId].pos2.y = 32;
+ gSprites[spriteId].x2 = -32;
+ gSprites[spriteId].y2 = 32;
gSprites[spriteId].invisible = TRUE;
if (gTasks[taskId].tStarIdx == 0)
{
@@ -2342,8 +2343,8 @@ static void Task_ShinyStars_Wait(u8 taskId)
static void SpriteCB_ShinyStars_Encircle(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->sPhase, 24);
- sprite->pos2.y = Cos(sprite->sPhase, 24);
+ sprite->x2 = Sin(sprite->sPhase, 24);
+ sprite->y2 = Cos(sprite->sPhase, 24);
sprite->sPhase += 12;
if (sprite->sPhase > 255)
{
@@ -2361,9 +2362,9 @@ static void SpriteCB_ShinyStars_Diagonal(struct Sprite *sprite)
else
{
sprite->invisible = FALSE;
- sprite->pos2.x += 5;
- sprite->pos2.y -= 5;
- if (sprite->pos2.x > 32)
+ sprite->x2 += 5;
+ sprite->y2 -= 5;
+ if (sprite->x2 > 32)
{
gTasks[sprite->sTaskId].tNumStars--;
FreeSpriteOamMatrix(sprite);
diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c
index 9b2b2e03c..c20fbc9e2 100644
--- a/src/battle_anim_utility_funcs.c
+++ b/src/battle_anim_utility_funcs.c
@@ -335,8 +335,8 @@ void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId)
AnimLoadCompressedBgGfx(animBgData.bgId, gBattleAnimMaskImage_Curse, animBgData.tilesOffset);
LoadPalette(sCurseLinesPalette, animBgData.paletteId * 16 + 1, 2);
- gBattle_BG1_X = -gSprites[spriteId].pos1.x + 32;
- gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32;
+ gBattle_BG1_X = -gSprites[spriteId].x + 32;
+ gBattle_BG1_Y = -gSprites[spriteId].y + 32;
gTasks[taskId].data[0] = newSpriteId;
gTasks[taskId].data[6] = var0;
gTasks[taskId].func = AnimTask_DrawFallingWhiteLinesOnAttacker_Step;
diff --git a/src/battle_anim_water.c b/src/battle_anim_water.c
index 43849645e..e0a78acf5 100644
--- a/src/battle_anim_water.c
+++ b/src/battle_anim_water.c
@@ -487,8 +487,8 @@ void AnimTask_CreateRaindrops(u8 taskId)
gTasks[taskId].data[0]++;
if (gTasks[taskId].data[0] % gTasks[taskId].data[2] == 1)
{
- x = Random2() % 240;
- y = Random2() % 80;
+ x = Random2() % DISPLAY_WIDTH;
+ y = Random2() % (DISPLAY_HEIGHT / 2);
CreateSprite(&gRainDropSpriteTemplate, x, y, 4);
}
if (gTasks[taskId].data[0] == gTasks[taskId].data[3])
@@ -504,8 +504,8 @@ static void AnimRainDrop_Step(struct Sprite *sprite)
{
if (++sprite->data[0] <= 13)
{
- sprite->pos2.x++;
- sprite->pos2.y += 4;
+ sprite->x2++;
+ sprite->y2 += 4;
}
if (sprite->animEnded)
DestroySprite(sprite);
@@ -518,28 +518,28 @@ static void AnimWaterBubbleProjectile(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1];
sprite->animPaused = TRUE;
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1];
sprite->animPaused = TRUE;
}
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[6];
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
InitAnimLinearTranslation(sprite);
spriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
sprite->data[5] = spriteId;
- sprite->pos1.x -= Sin((u8)gBattleAnimArgs[4], gBattleAnimArgs[2]);
- sprite->pos1.y -= Cos((u8)gBattleAnimArgs[4], gBattleAnimArgs[3]);
+ sprite->x -= Sin((u8)gBattleAnimArgs[4], gBattleAnimArgs[2]);
+ sprite->y -= Cos((u8)gBattleAnimArgs[4], gBattleAnimArgs[3]);
gSprites[spriteId].data[0] = gBattleAnimArgs[2];
gSprites[spriteId].data[1] = gBattleAnimArgs[3];
gSprites[spriteId].data[2] = gBattleAnimArgs[5];
@@ -557,8 +557,8 @@ static void AnimWaterBubbleProjectile_Step1(struct Sprite *sprite)
sprite->data[0] = 1;
AnimTranslateLinear(sprite);
- sprite->pos2.x += Sin(trigIndex >> 8, gSprites[otherSpriteId].data[0]);
- sprite->pos2.y += Cos(trigIndex >> 8, gSprites[otherSpriteId].data[1]);
+ sprite->x2 += Sin(trigIndex >> 8, gSprites[otherSpriteId].data[0]);
+ sprite->y2 += Cos(trigIndex >> 8, gSprites[otherSpriteId].data[1]);
gSprites[otherSpriteId].data[3] = trigIndex + gSprites[otherSpriteId].data[2];
if (--timer != 0)
{
@@ -595,9 +595,9 @@ static void AnimAuroraBeamRings(struct Sprite *sprite)
else
unkArg = gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + unkArg;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
InitAnimLinearTranslation(sprite);
sprite->callback = AnimAuroraBeamRings_Step;
@@ -650,9 +650,9 @@ static void AnimToTargetInSinWave(struct Sprite *sprite)
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = 30;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
InitAnimLinearTranslation(sprite);
sprite->data[5] = 0xD200 / sprite->data[0];
@@ -675,7 +675,7 @@ static void AnimToTargetInSinWave_Step(struct Sprite *sprite)
{
if (AnimTranslateLinear(sprite))
DestroyAnimSprite(sprite);
- sprite->pos2.y += Sin(sprite->data[6] >> 8, sprite->data[7]);
+ sprite->y2 += Sin(sprite->data[6] >> 8, sprite->data[7]);
if ((sprite->data[6] + sprite->data[5]) >> 8 > 127)
{
sprite->data[6] = 0;
@@ -706,26 +706,26 @@ static void AnimHydroCannonCharge(struct Sprite *sprite)
{
u8 priority;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
- sprite->pos2.y = -10;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ sprite->y2 = -10;
priority = GetBattlerSpriteSubpriority(gBattleAnimAttacker);
if (!IsContest())
{
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
- sprite->pos2.x = 10;
+ sprite->x2 = 10;
sprite->subpriority = priority + 2;
}
else
{
- sprite->pos2.x = -10;
+ sprite->x2 = -10;
sprite->subpriority = priority - 2;
}
}
else
{
- sprite->pos2.x = -10;
+ sprite->x2 = -10;
sprite->subpriority = priority + 2;
}
sprite->callback = AnimHydroCannonCharge_Step;
@@ -771,8 +771,8 @@ static void AnimWaterGunDroplet(struct Sprite *sprite)
{
InitSpritePosToAnimTarget(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
- sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[4];
+ sprite->data[2] = sprite->x + gBattleAnimArgs[2];
+ sprite->data[4] = sprite->y + gBattleAnimArgs[4];
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
}
@@ -790,9 +790,9 @@ static void AnimSmallBubblePair(struct Sprite *sprite)
static void AnimSmallBubblePair_Step(struct Sprite *sprite)
{
sprite->data[0] = (sprite->data[0] + 11) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[0], 4);
+ sprite->x2 = Sin(sprite->data[0], 4);
sprite->data[1] += 48;
- sprite->pos2.y = -(sprite->data[1] >> 8);
+ sprite->y2 = -(sprite->data[1] >> 8);
if (--sprite->data[7] == -1)
DestroyAnimSprite(sprite);
}
@@ -1027,10 +1027,10 @@ static void AnimSmallDriftingBubbles_Step(struct Sprite *sprite)
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
if (sprite->data[1] & 1)
- sprite->pos2.x = -(sprite->data[3] >> 8);
+ sprite->x2 = -(sprite->data[3] >> 8);
else
- sprite->pos2.x = sprite->data[3] >> 8;
- sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->x2 = sprite->data[3] >> 8;
+ sprite->y2 = sprite->data[4] >> 8;
if (++sprite->data[0] == 21)
DestroyAnimSprite(sprite);
}
@@ -1040,7 +1040,7 @@ void AnimTask_WaterSpoutLaunch(u8 taskId)
struct Task *task = &gTasks[taskId];
task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER);
- task->data[5] = gSprites[task->data[15]].pos1.y;
+ task->data[5] = gSprites[task->data[15]].y;
task->data[1] = GetWaterSpoutPowerForAnim();
PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL);
task->func = AnimTask_WaterSpoutLaunch_Step;
@@ -1061,18 +1061,18 @@ static void AnimTask_WaterSpoutLaunch_Step(u8 taskId)
task->data[3] = 0;
if (++task->data[4] & 1)
{
- gSprites[task->data[15]].pos2.x = 3;
- gSprites[task->data[15]].pos1.y++;
+ gSprites[task->data[15]].x2 = 3;
+ gSprites[task->data[15]].y++;
}
else
{
- gSprites[task->data[15]].pos2.x = -3;
+ gSprites[task->data[15]].x2 = -3;
}
}
if (UpdateEruptAnimTask(task) == 0)
{
SetBattlerSpriteYOffsetFromYScale(task->data[15]);
- gSprites[task->data[15]].pos2.x = 0;
+ gSprites[task->data[15]].x2 = 0;
task->data[3] = 0;
task->data[4] = 0;
task->data[0]++;
@@ -1102,9 +1102,9 @@ static void AnimTask_WaterSpoutLaunch_Step(u8 taskId)
{
task->data[3] = 0;
if (++task->data[4] & 1)
- gSprites[task->data[15]].pos2.y += 2;
+ gSprites[task->data[15]].y2 += 2;
else
- gSprites[task->data[15]].pos2.y -= 2;
+ gSprites[task->data[15]].y2 -= 2;
if (task->data[4] == 10)
{
PrepareEruptAnimTaskData(task, task->data[15], 0x180, 0xE0, 0x100, 0x100, 8);
@@ -1115,11 +1115,11 @@ static void AnimTask_WaterSpoutLaunch_Step(u8 taskId)
}
break;
case 6:
- gSprites[task->data[15]].pos1.y--;
+ gSprites[task->data[15]].y--;
if (UpdateEruptAnimTask(task) == 0)
{
ResetSpriteRotScale(task->data[15]);
- gSprites[task->data[15]].pos1.y = task->data[5];
+ gSprites[task->data[15]].y = task->data[5];
task->data[4] = 0;
task->data[0]++;
}
@@ -1209,9 +1209,9 @@ static void AnimSmallWaterOrb(struct Sprite *sprite)
case 1:
sprite->data[2] += sprite->data[4];
sprite->data[3] += sprite->data[5];
- sprite->pos1.x = sprite->data[2] >> 4;
- sprite->pos1.y = sprite->data[3] >> 4;
- if (sprite->pos1.x < -8 || sprite->pos1.x > 248 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
+ sprite->x = sprite->data[2] >> 4;
+ sprite->y = sprite->data[3] >> 4;
+ if (sprite->x < -8 || sprite->x > 248 || sprite->y < -8 || sprite->y > 120)
{
gTasks[sprite->data[6]].data[sprite->data[7]]--;
DestroySprite(sprite);
@@ -1306,11 +1306,11 @@ static void AnimWaterSpoutRain(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
- sprite->pos1.y += 8;
- if (sprite->pos1.y >= sprite->data[5])
+ sprite->y += 8;
+ if (sprite->y >= sprite->data[5])
{
gTasks[sprite->data[6]].data[10] = 1;
- sprite->data[1] = CreateSprite(&gWaterHitSplatSpriteTemplate, sprite->pos1.x, sprite->pos1.y, 1);
+ sprite->data[1] = CreateSprite(&gWaterHitSplatSpriteTemplate, sprite->x, sprite->y, 1);
if (sprite->data[1] != MAX_SPRITES)
{
StartSpriteAffineAnim(&gSprites[sprite->data[1]], 3);
@@ -1449,11 +1449,11 @@ static void AnimWaterSportDroplet(struct Sprite *sprite)
{
if (TranslateAnimHorizontalArc(sprite))
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
sprite->data[0] = 6;
- sprite->data[2] = (Random2() & 0x1F) - 16 + sprite->pos1.x;
- sprite->data[4] = (Random2() & 0x1F) - 16 + sprite->pos1.y;
+ sprite->data[2] = (Random2() & 0x1F) - 16 + sprite->x;
+ sprite->data[4] = (Random2() & 0x1F) - 16 + sprite->y;
sprite->data[5] = ~(Random2() & 7);
InitAnimArcTranslation(sprite);
sprite->callback = AnimWaterSportDroplet_Step;
@@ -1480,8 +1480,8 @@ static void AnimWaterSportDroplet_Step(struct Sprite *sprite)
static void AnimWaterPulseBubble(struct Sprite *sprite)
{
- sprite->pos1.x = gBattleAnimArgs[0];
- sprite->pos1.y = gBattleAnimArgs[1];
+ sprite->x = gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[2] = gBattleAnimArgs[4];
@@ -1492,9 +1492,9 @@ static void AnimWaterPulseBubble(struct Sprite *sprite)
static void AnimWaterPulseBubble_Step(struct Sprite *sprite)
{
sprite->data[4] -= sprite->data[0];
- sprite->pos2.y = sprite->data[4] / 10;
+ sprite->y2 = sprite->data[4] / 10;
sprite->data[5] = (sprite->data[5] + sprite->data[1]) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[5], sprite->data[2]);
+ sprite->x2 = Sin(sprite->data[5], sprite->data[2]);
if (--sprite->data[3] == 0)
DestroyAnimSprite(sprite);
}
@@ -1503,8 +1503,8 @@ static void AnimWaterPulseRingBubble(struct Sprite *sprite)
{
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite->pos2.x = sprite->data[3] >> 7;
- sprite->pos2.y = sprite->data[4] >> 7;
+ sprite->x2 = sprite->data[3] >> 7;
+ sprite->y2 = sprite->data[4] >> 7;
if (--sprite->data[0] == 0)
{
FreeSpriteOamMatrix(sprite);
@@ -1524,11 +1524,11 @@ void AnimWaterPulseRing(struct Sprite *sprite)
static void AnimWaterPulseRing_Step(struct Sprite *sprite)
{
- int xDiff = sprite->data[1] - sprite->pos1.x;
- int yDiff = sprite->data[2] - sprite->pos1.y;
+ int xDiff = sprite->data[1] - sprite->x;
+ int yDiff = sprite->data[2] - sprite->y;
- sprite->pos2.x = (sprite->data[0] * xDiff) / sprite->data[3];
- sprite->pos2.y = (sprite->data[0] * yDiff) / sprite->data[3];
+ sprite->x2 = (sprite->data[0] * xDiff) / sprite->data[3];
+ sprite->y2 = (sprite->data[0] * yDiff) / sprite->data[3];
if (++sprite->data[5] == sprite->data[4])
{
sprite->data[5] = 0;
@@ -1551,8 +1551,8 @@ static void CreateWaterPulseRingBubbles(struct Sprite *sprite, int xDiff, int yD
u8 spriteId;
something = sprite->data[0] / 2;
- combinedX = sprite->pos1.x + sprite->pos2.x;
- combinedY = sprite->pos1.y + sprite->pos2.y;
+ combinedX = sprite->x + sprite->x2;
+ combinedY = sprite->y + sprite->y2;
if (yDiff < 0)
unusedVar *= -1; //Needed to match
randomSomethingY = yDiff + (Random2() % 10) - 5;
diff --git a/src/battle_bg.c b/src/battle_bg.c
index af0e374e2..0ad126509 100644
--- a/src/battle_bg.c
+++ b/src/battle_bg.c
@@ -1112,8 +1112,8 @@ void InitLinkBattleVsScreen(u8 taskId)
gSprites[gBattleStruct->linkBattleVsSpriteId_S].oam.tileNum += 0x40;
gSprites[gBattleStruct->linkBattleVsSpriteId_V].data[0] = 0;
gSprites[gBattleStruct->linkBattleVsSpriteId_S].data[0] = 1;
- gSprites[gBattleStruct->linkBattleVsSpriteId_V].data[1] = gSprites[gBattleStruct->linkBattleVsSpriteId_V].pos1.x;
- gSprites[gBattleStruct->linkBattleVsSpriteId_S].data[1] = gSprites[gBattleStruct->linkBattleVsSpriteId_S].pos1.x;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].data[1] = gSprites[gBattleStruct->linkBattleVsSpriteId_V].x;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].data[1] = gSprites[gBattleStruct->linkBattleVsSpriteId_S].x;
gSprites[gBattleStruct->linkBattleVsSpriteId_V].data[2] = 0;
gSprites[gBattleStruct->linkBattleVsSpriteId_S].data[2] = 0;
}
@@ -1126,7 +1126,7 @@ void DrawBattleEntryBackground(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
LZDecompressVram(gUnknown_08D778F0, (void*)(BG_CHAR_ADDR(1)));
- LZDecompressVram(gVsLettersGfx, (void*)(VRAM + 0x10000));
+ LZDecompressVram(gVsLettersGfx, (void*)OBJ_VRAM0);
LoadCompressedPalette(gUnknown_08D77AE4, 0x60, 0x20);
SetBgAttribute(1, BG_ATTR_SCREENSIZE, 1);
SetGpuReg(REG_OFFSET_BG1CNT, 0x5C04);
@@ -1134,8 +1134,8 @@ void DrawBattleEntryBackground(void)
CopyToBgTilemapBuffer(2, gUnknown_08D779D8, 0, 0);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(2);
- SetGpuReg(REG_OFFSET_WININ, 0x36);
- SetGpuReg(REG_OFFSET_WINOUT, 0x36);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
gBattle_BG1_Y = 0xFF5C;
gBattle_BG2_Y = 0xFF5C;
LoadCompressedSpriteSheetUsingHeap(&sVsLettersSpriteSheet);
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index dd44bc91b..dc8b2bfd1 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -74,7 +74,7 @@ static void LinkOpponentHandleSetUnkVar(void);
static void LinkOpponentHandleClearUnkFlag(void);
static void LinkOpponentHandleToggleUnkFlag(void);
static void LinkOpponentHandleHitAnimation(void);
-static void LinkOpponentHandleCmd42(void);
+static void LinkOpponentHandleCantSwitch(void);
static void LinkOpponentHandlePlaySE(void);
static void LinkOpponentHandlePlayFanfareOrBGM(void);
static void LinkOpponentHandleFaintingCry(void);
@@ -146,7 +146,7 @@ static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_CLEARUNKFLAG] = LinkOpponentHandleClearUnkFlag,
[CONTROLLER_TOGGLEUNKFLAG] = LinkOpponentHandleToggleUnkFlag,
[CONTROLLER_HITANIMATION] = LinkOpponentHandleHitAnimation,
- [CONTROLLER_42] = LinkOpponentHandleCmd42,
+ [CONTROLLER_CANTSWITCH] = LinkOpponentHandleCantSwitch,
[CONTROLLER_PLAYSE] = LinkOpponentHandlePlaySE,
[CONTROLLER_PLAYFANFAREORBGM] = LinkOpponentHandlePlayFanfareOrBGM,
[CONTROLLER_FAINTINGCRY] = LinkOpponentHandleFaintingCry,
@@ -365,7 +365,7 @@ static void Intro_TryShinyAnimShowHealthbox(void)
static void TryShinyAnimAfterMonAnim(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
- && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
{
@@ -1134,7 +1134,7 @@ static void LinkOpponentHandleLoadMonSprite(void)
GetBattlerSpriteDefault_Y(gActiveBattler),
GetBattlerSpriteSubpriority(gActiveBattler));
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
@@ -1302,7 +1302,7 @@ static void LinkOpponentHandleDrawTrainerPic(void)
(8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40,
GetBattlerSpriteSubpriority(gActiveBattler));
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = 2;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
@@ -1324,8 +1324,8 @@ static void LinkOpponentHandleTrainerSlide(void)
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, 176, (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40, 0x1E);
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 96;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.x += 32;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 96;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x += 32;
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
@@ -1342,7 +1342,7 @@ static void LinkOpponentHandleTrainerSlideBack(void)
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
@@ -1647,7 +1647,7 @@ static void LinkOpponentHandleHitAnimation(void)
}
}
-static void LinkOpponentHandleCmd42(void)
+static void LinkOpponentHandleCantSwitch(void)
{
LinkOpponentBufferExecCompleted();
}
@@ -1703,7 +1703,7 @@ static void LinkOpponentHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreeOpponentSprite);
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index 3d6cd7c3b..07101c682 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -72,7 +72,7 @@ static void LinkPartnerHandleSetUnkVar(void);
static void LinkPartnerHandleClearUnkFlag(void);
static void LinkPartnerHandleToggleUnkFlag(void);
static void LinkPartnerHandleHitAnimation(void);
-static void LinkPartnerHandleCmd42(void);
+static void LinkPartnerHandleCantSwitch(void);
static void LinkPartnerHandlePlaySE(void);
static void LinkPartnerHandlePlayFanfareOrBGM(void);
static void LinkPartnerHandleFaintingCry(void);
@@ -143,7 +143,7 @@ static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_CLEARUNKFLAG] = LinkPartnerHandleClearUnkFlag,
[CONTROLLER_TOGGLEUNKFLAG] = LinkPartnerHandleToggleUnkFlag,
[CONTROLLER_HITANIMATION] = LinkPartnerHandleHitAnimation,
- [CONTROLLER_42] = LinkPartnerHandleCmd42,
+ [CONTROLLER_CANTSWITCH] = LinkPartnerHandleCantSwitch,
[CONTROLLER_PLAYSE] = LinkPartnerHandlePlaySE,
[CONTROLLER_PLAYFANFAREORBGM] = LinkPartnerHandlePlayFanfareOrBGM,
[CONTROLLER_FAINTINGCRY] = LinkPartnerHandleFaintingCry,
@@ -265,7 +265,7 @@ static void Intro_ShowHealthbox(void)
static void WaitForMonAnimAfterLoad(void)
{
- if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
LinkPartnerBufferExecCompleted();
}
@@ -288,7 +288,7 @@ static void CompleteOnHealthbarDone(void)
static void FreeMonSpriteAfterFaintAnim(void)
{
- if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].y + gSprites[gBattlerSpriteIds[gActiveBattler]].y2 > DISPLAY_HEIGHT)
{
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
@@ -1021,7 +1021,7 @@ static void LinkPartnerHandleLoadMonSprite(void)
GetBattlerSpriteCoord(gActiveBattler, 2),
GetBattlerSpriteDefault_Y(gActiveBattler),
GetBattlerSpriteSubpriority(gActiveBattler));
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
@@ -1144,7 +1144,7 @@ static void LinkPartnerHandleDrawTrainerPic(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80, GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
@@ -1163,7 +1163,7 @@ static void LinkPartnerHandleTrainerSlideBack(void)
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
@@ -1477,7 +1477,7 @@ static void LinkPartnerHandleHitAnimation(void)
}
}
-static void LinkPartnerHandleCmd42(void)
+static void LinkPartnerHandleCantSwitch(void)
{
LinkPartnerBufferExecCompleted();
}
@@ -1535,7 +1535,7 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index 69f729ee0..68f4907f0 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -79,7 +79,7 @@ static void OpponentHandleSetUnkVar(void);
static void OpponentHandleClearUnkFlag(void);
static void OpponentHandleToggleUnkFlag(void);
static void OpponentHandleHitAnimation(void);
-static void OpponentHandleCmd42(void);
+static void OpponentHandleCantSwitch(void);
static void OpponentHandlePlaySE(void);
static void OpponentHandlePlayFanfareOrBGM(void);
static void OpponentHandleFaintingCry(void);
@@ -151,7 +151,7 @@ static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_CLEARUNKFLAG] = OpponentHandleClearUnkFlag,
[CONTROLLER_TOGGLEUNKFLAG] = OpponentHandleToggleUnkFlag,
[CONTROLLER_HITANIMATION] = OpponentHandleHitAnimation,
- [CONTROLLER_42] = OpponentHandleCmd42,
+ [CONTROLLER_CANTSWITCH] = OpponentHandleCantSwitch,
[CONTROLLER_PLAYSE] = OpponentHandlePlaySE,
[CONTROLLER_PLAYFANFAREORBGM] = OpponentHandlePlayFanfareOrBGM,
[CONTROLLER_FAINTINGCRY] = OpponentHandleFaintingCry,
@@ -379,7 +379,7 @@ static void Intro_TryShinyAnimShowHealthbox(void)
static void TryShinyAnimAfterMonAnim(void)
{
- if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
@@ -1143,7 +1143,7 @@ static void OpponentHandleLoadMonSprite(void)
GetBattlerSpriteDefault_Y(gActiveBattler),
GetBattlerSpriteSubpriority(gActiveBattler));
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = species;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
@@ -1310,7 +1310,7 @@ static void OpponentHandleDrawTrainerPic(void)
(8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40,
GetBattlerSpriteSubpriority(gActiveBattler));
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = 2;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
@@ -1379,8 +1379,8 @@ static void OpponentHandleTrainerSlide(void)
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, 176, (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40, 0x1E);
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 96;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.x += 32;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 96;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x += 32;
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
@@ -1396,7 +1396,7 @@ static void OpponentHandleTrainerSlideBack(void)
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
@@ -1813,7 +1813,7 @@ static void OpponentHandleHitAnimation(void)
}
}
-static void OpponentHandleCmd42(void)
+static void OpponentHandleCantSwitch(void)
{
OpponentBufferExecCompleted();
}
@@ -1869,7 +1869,7 @@ static void OpponentHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreeOpponentSprite);
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 7b5e55adb..a85283745 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -80,7 +80,7 @@ static void PlayerHandleSetUnkVar(void);
static void PlayerHandleClearUnkFlag(void);
static void PlayerHandleToggleUnkFlag(void);
static void PlayerHandleHitAnimation(void);
-static void PlayerHandleCmd42(void);
+static void PlayerHandleCantSwitch(void);
static void PlayerHandlePlaySE(void);
static void PlayerHandlePlayFanfareOrBGM(void);
static void PlayerHandleFaintingCry(void);
@@ -167,7 +167,7 @@ static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_CLEARUNKFLAG] = PlayerHandleClearUnkFlag,
[CONTROLLER_TOGGLEUNKFLAG] = PlayerHandleToggleUnkFlag,
[CONTROLLER_HITANIMATION] = PlayerHandleHitAnimation,
- [CONTROLLER_42] = PlayerHandleCmd42,
+ [CONTROLLER_CANTSWITCH] = PlayerHandleCantSwitch,
[CONTROLLER_PLAYSE] = PlayerHandlePlaySE,
[CONTROLLER_PLAYFANFAREORBGM] = PlayerHandlePlayFanfareOrBGM,
[CONTROLLER_FAINTINGCRY] = PlayerHandleFaintingCry,
@@ -229,7 +229,7 @@ static void PlayerBufferRunCommand(void)
static void CompleteOnBankSpritePosX_0(void)
{
- if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
PlayerBufferExecCompleted();
}
@@ -630,7 +630,7 @@ static u32 HandleMoveInputUnused(void)
{
PlaySE(SE_SELECT);
gBattle_BG0_X = 0;
- gBattle_BG0_Y = 0x140;
+ gBattle_BG0_Y = DISPLAY_HEIGHT * 2;
var = 0xFF;
}
if (JOY_NEW(DPAD_LEFT) && gMoveSelectionCursor[gActiveBattler] & 1)
@@ -1316,7 +1316,7 @@ static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId)
static void FreeMonSpriteAfterFaintAnim(void)
{
- if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].y + gSprites[gBattlerSpriteIds[gActiveBattler]].y2 > DISPLAY_HEIGHT)
{
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
@@ -2328,8 +2328,8 @@ static void PlayerHandleDrawTrainerPic(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y = 48;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].y2 = 48;
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineMode = ST_OAM_AFFINE_OFF;
@@ -2343,7 +2343,7 @@ static void PlayerHandleDrawTrainerPic(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
}
@@ -2382,7 +2382,7 @@ static void PlayerHandleTrainerSlide(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, 80, (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80, 30);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -96;
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = 2;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
@@ -2396,7 +2396,7 @@ static void PlayerHandleTrainerSlideBack(void)
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
@@ -2568,7 +2568,7 @@ static void HandleChooseActionAfterDma3(void)
if (!IsDma3ManagerBusyWithBgCopy())
{
gBattle_BG0_X = 0;
- gBattle_BG0_Y = 160;
+ gBattle_BG0_Y = DISPLAY_HEIGHT;
gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseAction;
}
}
@@ -2610,7 +2610,7 @@ static void HandleChooseMoveAfterDma3(void)
if (!IsDma3ManagerBusyWithBgCopy())
{
gBattle_BG0_X = 0;
- gBattle_BG0_Y = 320;
+ gBattle_BG0_Y = DISPLAY_HEIGHT * 2;
gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseMove;
}
}
@@ -2890,7 +2890,7 @@ static void PlayerHandleHitAnimation(void)
}
}
-static void PlayerHandleCmd42(void)
+static void PlayerHandleCantSwitch(void)
{
PlayerBufferExecCompleted();
}
@@ -2953,7 +2953,7 @@ static void PlayerHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBattlerSpriteIds[gActiveBattler]].sBattlerId = gActiveBattler;
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c
index 251542a48..d1d23099a 100644
--- a/src/battle_controller_player_partner.c
+++ b/src/battle_controller_player_partner.c
@@ -70,7 +70,7 @@ static void PlayerPartnerHandleSetUnkVar(void);
static void PlayerPartnerHandleClearUnkFlag(void);
static void PlayerPartnerHandleToggleUnkFlag(void);
static void PlayerPartnerHandleHitAnimation(void);
-static void PlayerPartnerHandleCmd42(void);
+static void PlayerPartnerHandleCantSwitch(void);
static void PlayerPartnerHandlePlaySE(void);
static void PlayerPartnerHandlePlayFanfareOrBGM(void);
static void PlayerPartnerHandleFaintingCry(void);
@@ -146,7 +146,7 @@ static void (*const sPlayerPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_CLEARUNKFLAG] = PlayerPartnerHandleClearUnkFlag,
[CONTROLLER_TOGGLEUNKFLAG] = PlayerPartnerHandleToggleUnkFlag,
[CONTROLLER_HITANIMATION] = PlayerPartnerHandleHitAnimation,
- [CONTROLLER_42] = PlayerPartnerHandleCmd42,
+ [CONTROLLER_CANTSWITCH] = PlayerPartnerHandleCantSwitch,
[CONTROLLER_PLAYSE] = PlayerPartnerHandlePlaySE,
[CONTROLLER_PLAYFANFAREORBGM] = PlayerPartnerHandlePlayFanfareOrBGM,
[CONTROLLER_FAINTINGCRY] = PlayerPartnerHandleFaintingCry,
@@ -277,7 +277,7 @@ static void Intro_ShowHealthbox(void)
static void WaitForMonAnimAfterLoad(void)
{
- if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
PlayerPartnerBufferExecCompleted();
}
@@ -472,7 +472,7 @@ static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId)
static void FreeMonSpriteAfterFaintAnim(void)
{
- if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].y + gSprites[gBattlerSpriteIds[gActiveBattler]].y2 > DISPLAY_HEIGHT)
{
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
@@ -1205,7 +1205,7 @@ static void PlayerPartnerHandleLoadMonSprite(void)
GetBattlerSpriteCoord(gActiveBattler, 2),
GetBattlerSpriteDefault_Y(gActiveBattler),
GetBattlerSpriteSubpriority(gActiveBattler));
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
@@ -1320,7 +1320,7 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
}
@@ -1331,8 +1331,8 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y = 48;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].y2 = 48;
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineMode = ST_OAM_AFFINE_OFF;
@@ -1354,7 +1354,7 @@ static void PlayerPartnerHandleTrainerSlideBack(void)
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
@@ -1727,7 +1727,7 @@ static void PlayerPartnerHandleHitAnimation(void)
}
}
-static void PlayerPartnerHandleCmd42(void)
+static void PlayerPartnerHandleCantSwitch(void)
{
PlayerPartnerBufferExecCompleted();
}
@@ -1784,7 +1784,7 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
index 26d93ad28..c84f9a0de 100644
--- a/src/battle_controller_recorded_opponent.c
+++ b/src/battle_controller_recorded_opponent.c
@@ -74,7 +74,7 @@ static void RecordedOpponentHandleSetUnkVar(void);
static void RecordedOpponentHandleClearUnkFlag(void);
static void RecordedOpponentHandleToggleUnkFlag(void);
static void RecordedOpponentHandleHitAnimation(void);
-static void RecordedOpponentHandleCmd42(void);
+static void RecordedOpponentHandleCantSwitch(void);
static void RecordedOpponentHandlePlaySE(void);
static void RecordedOpponentHandlePlayFanfareOrBGM(void);
static void RecordedOpponentHandleFaintingCry(void);
@@ -146,7 +146,7 @@ static void (*const sRecordedOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void
[CONTROLLER_CLEARUNKFLAG] = RecordedOpponentHandleClearUnkFlag,
[CONTROLLER_TOGGLEUNKFLAG] = RecordedOpponentHandleToggleUnkFlag,
[CONTROLLER_HITANIMATION] = RecordedOpponentHandleHitAnimation,
- [CONTROLLER_42] = RecordedOpponentHandleCmd42,
+ [CONTROLLER_CANTSWITCH] = RecordedOpponentHandleCantSwitch,
[CONTROLLER_PLAYSE] = RecordedOpponentHandlePlaySE,
[CONTROLLER_PLAYFANFAREORBGM] = RecordedOpponentHandlePlayFanfareOrBGM,
[CONTROLLER_FAINTINGCRY] = RecordedOpponentHandleFaintingCry,
@@ -349,7 +349,7 @@ static void Intro_TryShinyAnimShowHealthbox(void)
static void TryShinyAnimAfterMonAnim(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
- && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
{
@@ -1117,7 +1117,7 @@ static void RecordedOpponentHandleLoadMonSprite(void)
GetBattlerSpriteDefault_Y(gActiveBattler),
GetBattlerSpriteSubpriority(gActiveBattler));
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
@@ -1249,7 +1249,7 @@ static void RecordedOpponentHandleDrawTrainerPic(void)
(8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40,
GetBattlerSpriteSubpriority(gActiveBattler));
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = 2;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
@@ -1270,7 +1270,7 @@ static void RecordedOpponentHandleTrainerSlideBack(void)
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
@@ -1587,7 +1587,7 @@ static void RecordedOpponentHandleHitAnimation(void)
}
}
-static void RecordedOpponentHandleCmd42(void)
+static void RecordedOpponentHandleCantSwitch(void)
{
RecordedOpponentBufferExecCompleted();
}
@@ -1643,7 +1643,7 @@ static void RecordedOpponentHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreeOpponentSprite);
diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c
index 63a04ac40..bff81948b 100644
--- a/src/battle_controller_recorded_player.c
+++ b/src/battle_controller_recorded_player.c
@@ -70,7 +70,7 @@ static void RecordedPlayerHandleSetUnkVar(void);
static void RecordedPlayerHandleClearUnkFlag(void);
static void RecordedPlayerHandleToggleUnkFlag(void);
static void RecordedPlayerHandleHitAnimation(void);
-static void RecordedPlayerHandleCmd42(void);
+static void RecordedPlayerHandleCantSwitch(void);
static void RecordedPlayerHandlePlaySE(void);
static void RecordedPlayerHandlePlayFanfareOrBGM(void);
static void RecordedPlayerHandleFaintingCry(void);
@@ -141,7 +141,7 @@ static void (*const sRecordedPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void)
[CONTROLLER_CLEARUNKFLAG] = RecordedPlayerHandleClearUnkFlag,
[CONTROLLER_TOGGLEUNKFLAG] = RecordedPlayerHandleToggleUnkFlag,
[CONTROLLER_HITANIMATION] = RecordedPlayerHandleHitAnimation,
- [CONTROLLER_42] = RecordedPlayerHandleCmd42,
+ [CONTROLLER_CANTSWITCH] = RecordedPlayerHandleCantSwitch,
[CONTROLLER_PLAYSE] = RecordedPlayerHandlePlaySE,
[CONTROLLER_PLAYFANFAREORBGM] = RecordedPlayerHandlePlayFanfareOrBGM,
[CONTROLLER_FAINTINGCRY] = RecordedPlayerHandleFaintingCry,
@@ -342,7 +342,7 @@ static void Intro_TryShinyAnimShowHealthbox(void)
static void WaitForMonAnimAfterLoad(void)
{
- if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
RecordedPlayerBufferExecCompleted();
}
@@ -365,7 +365,7 @@ static void CompleteOnHealthbarDone(void)
static void FreeMonSpriteAfterFaintAnim(void)
{
- if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].y + gSprites[gBattlerSpriteIds[gActiveBattler]].y2 > DISPLAY_HEIGHT)
{
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
@@ -1098,7 +1098,7 @@ static void RecordedPlayerHandleLoadMonSprite(void)
GetBattlerSpriteCoord(gActiveBattler, 2),
GetBattlerSpriteDefault_Y(gActiveBattler),
GetBattlerSpriteSubpriority(gActiveBattler));
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -DISPLAY_WIDTH;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
@@ -1233,8 +1233,8 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y = 48;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].y2 = 48;
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineMode = ST_OAM_AFFINE_OFF;
@@ -1247,7 +1247,7 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
}
@@ -1267,7 +1267,7 @@ static void RecordedPlayerHandleTrainerSlideBack(void)
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
@@ -1610,7 +1610,7 @@ static void RecordedPlayerHandleHitAnimation(void)
}
}
-static void RecordedPlayerHandleCmd42(void)
+static void RecordedPlayerHandleCantSwitch(void)
{
RecordedPlayerBufferExecCompleted();
}
@@ -1668,7 +1668,7 @@ static void RecordedPlayerHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index 22c01586d..a82538741 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -67,7 +67,7 @@ static void SafariHandleSetUnkVar(void);
static void SafariHandleClearUnkFlag(void);
static void SafariHandleToggleUnkFlag(void);
static void SafariHandleHitAnimation(void);
-static void SafariHandleCmd42(void);
+static void SafariHandleCantSwitch(void);
static void SafariHandlePlaySE(void);
static void SafariHandlePlayFanfareOrBGM(void);
static void SafariHandleFaintingCry(void);
@@ -131,7 +131,7 @@ static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_CLEARUNKFLAG] = SafariHandleClearUnkFlag,
[CONTROLLER_TOGGLEUNKFLAG] = SafariHandleToggleUnkFlag,
[CONTROLLER_HITANIMATION] = SafariHandleHitAnimation,
- [CONTROLLER_42] = SafariHandleCmd42,
+ [CONTROLLER_CANTSWITCH] = SafariHandleCantSwitch,
[CONTROLLER_PLAYSE] = SafariHandlePlaySE,
[CONTROLLER_PLAYFANFAREORBGM] = SafariHandlePlayFanfareOrBGM,
[CONTROLLER_FAINTINGCRY] = SafariHandleFaintingCry,
@@ -361,7 +361,7 @@ static void SafariHandleDrawTrainerPic(void)
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80,
30);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
@@ -442,7 +442,7 @@ static void HandleChooseActionAfterDma3(void)
if (!IsDma3ManagerBusyWithBgCopy())
{
gBattle_BG0_X = 0;
- gBattle_BG0_Y = 160;
+ gBattle_BG0_Y = DISPLAY_HEIGHT;
gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseAction;
}
}
@@ -580,7 +580,7 @@ static void SafariHandleHitAnimation(void)
SafariBufferExecCompleted();
}
-static void SafariHandleCmd42(void)
+static void SafariHandleCantSwitch(void)
{
SafariBufferExecCompleted();
}
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index 8b3863c85..cbf739ae3 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -75,7 +75,7 @@ static void WallyHandleSetUnkVar(void);
static void WallyHandleClearUnkFlag(void);
static void WallyHandleToggleUnkFlag(void);
static void WallyHandleHitAnimation(void);
-static void WallyHandleCmd42(void);
+static void WallyHandleCantSwitch(void);
static void WallyHandlePlaySE(void);
static void WallyHandlePlayFanfareOrBGM(void);
static void WallyHandleFaintingCry(void);
@@ -144,7 +144,7 @@ static void (*const sWallyBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_CLEARUNKFLAG] = WallyHandleClearUnkFlag,
[CONTROLLER_TOGGLEUNKFLAG] = WallyHandleToggleUnkFlag,
[CONTROLLER_HITANIMATION] = WallyHandleHitAnimation,
- [CONTROLLER_42] = WallyHandleCmd42,
+ [CONTROLLER_CANTSWITCH] = WallyHandleCantSwitch,
[CONTROLLER_PLAYSE] = WallyHandlePlaySE,
[CONTROLLER_PLAYFANFAREORBGM] = WallyHandlePlayFanfareOrBGM,
[CONTROLLER_FAINTINGCRY] = WallyHandleFaintingCry,
@@ -190,7 +190,7 @@ static void WallyHandleActions(void)
switch (gBattleStruct->wallyBattleState)
{
case 0:
- gBattleStruct->wallyWaitFrames = 64;
+ gBattleStruct->wallyWaitFrames = B_WAIT_TIME_LONG;
gBattleStruct->wallyBattleState++;
case 1:
if (--gBattleStruct->wallyWaitFrames == 0)
@@ -200,7 +200,7 @@ static void WallyHandleActions(void)
WallyBufferExecCompleted();
gBattleStruct->wallyBattleState++;
gBattleStruct->wallyMovesState = 0;
- gBattleStruct->wallyWaitFrames = 64;
+ gBattleStruct->wallyWaitFrames = B_WAIT_TIME_LONG;
}
break;
case 2:
@@ -211,17 +211,17 @@ static void WallyHandleActions(void)
WallyBufferExecCompleted();
gBattleStruct->wallyBattleState++;
gBattleStruct->wallyMovesState = 0;
- gBattleStruct->wallyWaitFrames = 64;
+ gBattleStruct->wallyWaitFrames = B_WAIT_TIME_LONG;
}
break;
case 3:
if (--gBattleStruct->wallyWaitFrames == 0)
{
- BtlController_EmitTwoReturnValues(1, 9, 0);
+ BtlController_EmitTwoReturnValues(1, B_ACTION_WALLY_THROW, 0);
WallyBufferExecCompleted();
gBattleStruct->wallyBattleState++;
gBattleStruct->wallyMovesState = 0;
- gBattleStruct->wallyWaitFrames = 64;
+ gBattleStruct->wallyWaitFrames = B_WAIT_TIME_LONG;
}
break;
case 4:
@@ -230,7 +230,7 @@ static void WallyHandleActions(void)
PlaySE(SE_SELECT);
ActionSelectionDestroyCursorAt(0);
ActionSelectionCreateCursorAt(1, 0);
- gBattleStruct->wallyWaitFrames = 64;
+ gBattleStruct->wallyWaitFrames = B_WAIT_TIME_LONG;
gBattleStruct->wallyBattleState++;
}
break;
@@ -1041,7 +1041,7 @@ static void WallyHandleDrawTrainerPic(void)
80 + 4 * (8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].size),
30);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = DISPLAY_WIDTH;
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
@@ -1056,7 +1056,7 @@ static void WallyHandleTrainerSlide(void)
80 + 4 * (8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].size),
30);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -96;
gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = 2;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy2;
@@ -1195,7 +1195,7 @@ static void HandleChooseActionAfterDma3(void)
if (!IsDma3ManagerBusyWithBgCopy())
{
gBattle_BG0_X = 0;
- gBattle_BG0_Y = 160;
+ gBattle_BG0_Y = DISPLAY_HEIGHT;
gBattlerControllerFuncs[gActiveBattler] = WallyHandleActions;
}
}
@@ -1233,7 +1233,7 @@ static void WallyHandleChooseMove(void)
if (!IsDma3ManagerBusyWithBgCopy())
{
gBattle_BG0_X = 0;
- gBattle_BG0_Y = 0x140;
+ gBattle_BG0_Y = DISPLAY_HEIGHT * 2;
gBattleStruct->wallyMovesState++;
}
break;
@@ -1385,7 +1385,7 @@ static void WallyHandleHitAnimation(void)
}
}
-static void WallyHandleCmd42(void)
+static void WallyHandleCantSwitch(void)
{
WallyBufferExecCompleted();
}
@@ -1435,7 +1435,7 @@ static void WallyHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index a9f3ab610..0f3234579 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -1385,12 +1385,12 @@ void BtlController_EmitHitAnimation(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void BtlController_EmitCmd42(u8 bufferId)
+void BtlController_EmitCantSwitch(u8 bufferId)
{
- sBattleBuffersTransferData[0] = CONTROLLER_42;
- sBattleBuffersTransferData[1] = CONTROLLER_42;
- sBattleBuffersTransferData[2] = CONTROLLER_42;
- sBattleBuffersTransferData[3] = CONTROLLER_42;
+ sBattleBuffersTransferData[0] = CONTROLLER_CANTSWITCH;
+ sBattleBuffersTransferData[1] = CONTROLLER_CANTSWITCH;
+ sBattleBuffersTransferData[2] = CONTROLLER_CANTSWITCH;
+ sBattleBuffersTransferData[3] = CONTROLLER_CANTSWITCH;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
diff --git a/src/battle_dome.c b/src/battle_dome.c
index 3b22e2926..edd7bf950 100644
--- a/src/battle_dome.c
+++ b/src/battle_dome.c
@@ -1211,8 +1211,8 @@ static const u8 gUnknown_0860D1A0[DOME_TOURNAMENT_TRAINERS_COUNT / 2][DOME_ROUND
static const u8 gUnknown_0860D1C0[DOME_TOURNAMENT_TRAINERS_COUNT] = {0, 15, 8, 7, 3, 12, 11, 4, 1, 14, 9, 6, 2, 13, 10, 5};
-// Each tourney trainer has a text describing their potential to win, depending on their seed ranking for the current tourney
-// Dome Ace Tucker has their own separate potential text
+// The first line of text on a trainers info card. It describes their potential to win, based on their seed in the tournament tree.
+// Dome Ace Tucker has their own separate potential text.
static const u8 *const sBattleDomePotentialTexts[DOME_TOURNAMENT_TRAINERS_COUNT + 1] =
{
BattleDome_Text_Potential1, // Highest potential
@@ -1234,7 +1234,7 @@ static const u8 *const sBattleDomePotentialTexts[DOME_TOURNAMENT_TRAINERS_COUNT
BattleDome_Text_PotentialDomeAceTucker,
};
-// The first line of text on a trainers info card that gives information about their battle style (dependent on their party's moves)
+// The second line of text on a trainers info card. It gives information about their battle style (dependent on their party's moves).
static const u8 *const sBattleDomeOpponentStyleTexts[NUM_BATTLE_STYLES] =
{
[DOME_BATTLE_STYLE_RISKY] = BattleDome_Text_StyleRiskDisaster,
@@ -1271,7 +1271,7 @@ static const u8 *const sBattleDomeOpponentStyleTexts[NUM_BATTLE_STYLES] =
[DOME_BATTLE_STYLE_UNUSED4] = BattleDome_Text_StyleSampleMessage4,
};
-// The second line of text on a trainers info card that gives information about their party's stat spread
+// The third line of text on a trainers info card. It that gives information about their party's stat spread (based on their Pokémon's effort values and Nature).
static const u8 *const sBattleDomeOpponentStatsTexts[] =
{
BattleDome_Text_EmphasizesHPAndAtk, // DOME_TEXT_TWO_GOOD_STATS and DOME_TEXT_HP start here
@@ -2766,13 +2766,22 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2)
}
if (TYPE_EFFECT_ATK_TYPE(i) == moveType)
{
- // BUG: TYPE_x2 is not necessary and makes the condition always false if the ability is wonder guard.
+ // BUG: the value of TYPE_x2 does not exist in gTypeEffectiveness, so if defAbility is ABILITY_WONDER_GUARD, the conditional always fails
+ #ifndef BUGFIX
if (TYPE_EFFECT_DEF_TYPE(i) == defType1)
if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_x2) || defAbility != ABILITY_WONDER_GUARD)
typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10;
if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2)
if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_x2) || defAbility != ABILITY_WONDER_GUARD)
typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10;
+ #else
+ if (TYPE_EFFECT_DEF_TYPE(i) == defType1)
+ if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE) || defAbility != ABILITY_WONDER_GUARD)
+ typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10;
+ if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2)
+ if ((defAbility == ABILITY_WONDER_GUARD && TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE) || defAbility != ABILITY_WONDER_GUARD)
+ typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10;
+ #endif
}
i += 3;
}
@@ -2998,7 +3007,7 @@ static void Task_ShowTourneyInfoCard(u8 taskId)
if (mode == INFOCARD_MATCH)
gBattle_BG2_X = 0, gBattle_BG2_Y = 0;
else
- gBattle_BG2_X = 0, gBattle_BG2_Y = 160;
+ gBattle_BG2_X = 0, gBattle_BG2_Y = DISPLAY_HEIGHT;
gTasks[taskId].tState++;
break;
@@ -3093,17 +3102,17 @@ static void Task_ShowTourneyInfoCard(u8 taskId)
// That means that the sprite needs to move with the moving card in the opposite scrolling direction.
static void SpriteCb_TrainerIconCardScrollUp(struct Sprite *sprite)
{
- sprite->pos1.y += 4;
+ sprite->y += 4;
if (sprite->data[0] != 0)
{
- if (sprite->pos1.y >= -32)
+ if (sprite->y >= -32)
sprite->invisible = FALSE;
if (++sprite->data[1] == 40)
sprite->callback = SpriteCallbackDummy;
}
else
{
- if (sprite->pos1.y >= 192)
+ if (sprite->y >= 192)
{
sInfoCard->spriteIds[sprite->data[2]] = SPRITE_NONE;
FreeAndDestroyTrainerPicSprite(sprite->data[3]);
@@ -3113,17 +3122,17 @@ static void SpriteCb_TrainerIconCardScrollUp(struct Sprite *sprite)
static void SpriteCb_TrainerIconCardScrollDown(struct Sprite *sprite)
{
- sprite->pos1.y -= 4;
+ sprite->y -= 4;
if (sprite->data[0] != 0)
{
- if (sprite->pos1.y <= 192)
+ if (sprite->y <= 192)
sprite->invisible = FALSE;
if (++sprite->data[1] == 40)
sprite->callback = SpriteCallbackDummy;
}
else
{
- if (sprite->pos1.y <= -32)
+ if (sprite->y <= -32)
{
sInfoCard->spriteIds[sprite->data[2]] = SPRITE_NONE;
FreeAndDestroyTrainerPicSprite(sprite->data[3]);
@@ -3133,17 +3142,17 @@ static void SpriteCb_TrainerIconCardScrollDown(struct Sprite *sprite)
static void SpriteCb_TrainerIconCardScrollLeft(struct Sprite *sprite)
{
- sprite->pos1.x += 4;
+ sprite->x += 4;
if (sprite->data[0] != 0)
{
- if (sprite->pos1.x >= -32)
+ if (sprite->x >= -32)
sprite->invisible = FALSE;
if (++sprite->data[1] == 64)
sprite->callback = SpriteCallbackDummy;
}
else
{
- if (sprite->pos1.x >= 272)
+ if (sprite->x >= DISPLAY_WIDTH + 32)
{
sInfoCard->spriteIds[sprite->data[2]] = SPRITE_NONE;
FreeAndDestroyTrainerPicSprite(sprite->data[3]);
@@ -3153,17 +3162,17 @@ static void SpriteCb_TrainerIconCardScrollLeft(struct Sprite *sprite)
static void SpriteCb_TrainerIconCardScrollRight(struct Sprite *sprite)
{
- sprite->pos1.x -= 4;
+ sprite->x -= 4;
if (sprite->data[0] != 0)
{
- if (sprite->pos1.x <= 272)
+ if (sprite->x <= DISPLAY_WIDTH + 32)
sprite->invisible = FALSE;
if (++sprite->data[1] == 64)
sprite->callback = SpriteCallbackDummy;
}
else
{
- if (sprite->pos1.x <= -32)
+ if (sprite->x <= -32)
{
sInfoCard->spriteIds[sprite->data[2]] = SPRITE_NONE;
FreeAndDestroyTrainerPicSprite(sprite->data[3]);
@@ -3183,17 +3192,17 @@ static void SpriteCb_MonIconCardScrollUp(struct Sprite *sprite)
{
if (!sprite->sMonIconStill)
UpdateMonIconFrame(sprite);
- sprite->pos1.y += 4;
+ sprite->y += 4;
if (sprite->data[0] != 0)
{
- if (sprite->pos1.y >= -16)
+ if (sprite->y >= -16)
sprite->invisible = FALSE;
if (++sprite->data[1] == 40)
sprite->callback = SpriteCb_MonIcon;
}
else
{
- if (sprite->pos1.y >= 176)
+ if (sprite->y >= 176)
{
sInfoCard->spriteIds[sprite->data[2]] = SPRITE_NONE;
FreeAndDestroyMonIconSprite(sprite);
@@ -3205,17 +3214,17 @@ static void SpriteCb_MonIconCardScrollDown(struct Sprite *sprite)
{
if (!sprite->sMonIconStill)
UpdateMonIconFrame(sprite);
- sprite->pos1.y -= 4;
+ sprite->y -= 4;
if (sprite->data[0] != 0)
{
- if (sprite->pos1.y <= 176)
+ if (sprite->y <= 176)
sprite->invisible = FALSE;
if (++sprite->data[1] == 40)
sprite->callback = SpriteCb_MonIcon;
}
else
{
- if (sprite->pos1.y <= -16)
+ if (sprite->y <= -16)
{
sInfoCard->spriteIds[sprite->data[2]] = SPRITE_NONE;
FreeAndDestroyMonIconSprite(sprite);
@@ -3227,17 +3236,17 @@ static void SpriteCb_MonIconCardScrollLeft(struct Sprite *sprite)
{
if (!sprite->sMonIconStill)
UpdateMonIconFrame(sprite);
- sprite->pos1.x += 4;
+ sprite->x += 4;
if (sprite->data[0] != 0)
{
- if (sprite->pos1.x >= -16)
+ if (sprite->x >= -16)
sprite->invisible = FALSE;
if (++sprite->data[1] == 64)
sprite->callback = SpriteCb_MonIcon;
}
else
{
- if (sprite->pos1.x >= 256)
+ if (sprite->x >= DISPLAY_WIDTH + 16)
{
sInfoCard->spriteIds[sprite->data[2]] = SPRITE_NONE;
FreeAndDestroyMonIconSprite(sprite);
@@ -3249,17 +3258,17 @@ static void SpriteCb_MonIconCardScrollRight(struct Sprite *sprite)
{
if (!sprite->sMonIconStill)
UpdateMonIconFrame(sprite);
- sprite->pos1.x -= 4;
+ sprite->x -= 4;
if (sprite->data[0] != 0)
{
- if (sprite->pos1.x <= 256)
+ if (sprite->x <= DISPLAY_WIDTH + 16)
sprite->invisible = FALSE;
if (++sprite->data[1] == 64)
sprite->callback = SpriteCb_MonIcon;
}
else
{
- if (sprite->pos1.x <= -16)
+ if (sprite->x <= -16)
{
sInfoCard->spriteIds[sprite->data[2]] = SPRITE_NONE;
FreeAndDestroyMonIconSprite(sprite);
@@ -3439,12 +3448,12 @@ static void Task_HandleInfoCardInput(u8 taskId)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
gBattle_BG1_X = 0;
- gBattle_BG1_Y = 160;
+ gBattle_BG1_Y = DISPLAY_HEIGHT;
}
else
{
gBattle_BG0_X = 0;
- gBattle_BG0_Y = 160;
+ gBattle_BG0_Y = DISPLAY_HEIGHT;
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
}
@@ -3454,13 +3463,13 @@ static void Task_HandleInfoCardInput(u8 taskId)
if (sInfoCard->pos == 0)
{
gBattle_BG2_X = 0;
- gBattle_BG2_Y = 320;
+ gBattle_BG2_Y = DISPLAY_HEIGHT * 2;
trainerTourneyId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]];
DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_UP, trainerTourneyId);
}
else
{
- gBattle_BG2_X = 256;
+ gBattle_BG2_X = DISPLAY_WIDTH + 16;
gBattle_BG2_Y = 0;
trainerTourneyId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]];
DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_UP, trainerTourneyId);
@@ -3474,7 +3483,7 @@ static void Task_HandleInfoCardInput(u8 taskId)
matchNo = gTasks[taskId2].data[1] - 16;
BufferDomeWinString(matchNo, sInfoCard->tournamentIds);
gBattle_BG2_X = 0;
- gBattle_BG2_Y = 320;
+ gBattle_BG2_Y = DISPLAY_HEIGHT * 2;
trainerTourneyId = sInfoCard->tournamentIds[0];
DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_UP, trainerTourneyId);
}
@@ -3483,14 +3492,14 @@ static void Task_HandleInfoCardInput(u8 taskId)
matchNo = gTasks[taskId2].data[1] - 16;
BufferDomeWinString(matchNo, sInfoCard->tournamentIds);
gBattle_BG2_X = 0;
- gBattle_BG2_Y = 320;
+ gBattle_BG2_Y = DISPLAY_HEIGHT * 2;
trainerTourneyId = sInfoCard->tournamentIds[1];
DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_UP, trainerTourneyId);
}
else
{
- gBattle_BG2_X = 256;
- gBattle_BG2_Y = 160;
+ gBattle_BG2_X = DISPLAY_WIDTH + 16;
+ gBattle_BG2_Y = DISPLAY_HEIGHT;
matchNo = gTasks[taskId2].data[1] - 16;
DisplayMatchInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_UP, matchNo);
}
@@ -3555,12 +3564,12 @@ static void Task_HandleInfoCardInput(u8 taskId)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
gBattle_BG1_X = 0;
- gBattle_BG1_Y = -160;
+ gBattle_BG1_Y = -DISPLAY_HEIGHT;
}
else
{
gBattle_BG0_X = 0;
- gBattle_BG0_Y = -160;
+ gBattle_BG0_Y = -DISPLAY_HEIGHT;
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
}
@@ -3570,7 +3579,7 @@ static void Task_HandleInfoCardInput(u8 taskId)
if (sInfoCard->pos == 0)
{
gBattle_BG2_X = 0;
- gBattle_BG2_Y = 160;
+ gBattle_BG2_Y = DISPLAY_HEIGHT;
trainerTourneyId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]];
DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_DOWN, trainerTourneyId);
}
@@ -3590,7 +3599,7 @@ static void Task_HandleInfoCardInput(u8 taskId)
matchNo = gTasks[taskId2].data[1] - 16;
BufferDomeWinString(matchNo, sInfoCard->tournamentIds);
gBattle_BG2_X = 0;
- gBattle_BG2_Y = 160;
+ gBattle_BG2_Y = DISPLAY_HEIGHT;
trainerTourneyId = sInfoCard->tournamentIds[0];
DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_DOWN, trainerTourneyId);
}
@@ -3599,13 +3608,13 @@ static void Task_HandleInfoCardInput(u8 taskId)
matchNo = gTasks[taskId2].data[1] - 16;
BufferDomeWinString(matchNo, sInfoCard->tournamentIds);
gBattle_BG2_X = 0;
- gBattle_BG2_Y = 160;
+ gBattle_BG2_Y = DISPLAY_HEIGHT;
trainerTourneyId = sInfoCard->tournamentIds[1];
DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_DOWN, trainerTourneyId);
}
else
{
- gBattle_BG2_X = 256;
+ gBattle_BG2_X = DISPLAY_WIDTH + 16;
gBattle_BG2_Y = 0;
matchNo = gTasks[taskId2].data[1] - 16;
DisplayMatchInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_DOWN, matchNo);
@@ -3669,12 +3678,12 @@ static void Task_HandleInfoCardInput(u8 taskId)
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- gBattle_BG1_X = 256;
+ gBattle_BG1_X = DISPLAY_WIDTH + 16;
gBattle_BG1_Y = 0;
}
else
{
- gBattle_BG0_X = 256;
+ gBattle_BG0_X = DISPLAY_WIDTH + 16;
gBattle_BG0_Y = 0;
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
@@ -3682,14 +3691,14 @@ static void Task_HandleInfoCardInput(u8 taskId)
if (sInfoCard->pos == 0)
{
- gBattle_BG2_X = 256;
- gBattle_BG2_Y = 160;
+ gBattle_BG2_X = DISPLAY_WIDTH + 16;
+ gBattle_BG2_Y = DISPLAY_HEIGHT;
trainerTourneyId = sTourneyTreeTrainerIds[gTasks[taskId2].data[1]];
DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_LEFT, trainerTourneyId);
}
else
{
- gBattle_BG2_X = 256;
+ gBattle_BG2_X = DISPLAY_WIDTH + 16;
gBattle_BG2_Y = 0;
matchNo = sIdToMatchNumber[gTasks[taskId2].data[1]][sInfoCard->pos - 1];
DisplayMatchInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_LEFT, matchNo);
@@ -3752,12 +3761,12 @@ static void Task_HandleInfoCardInput(u8 taskId)
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- gBattle_BG1_X = 256;
+ gBattle_BG1_X = DISPLAY_WIDTH + 16;
gBattle_BG1_Y = 0;
}
else
{
- gBattle_BG0_X = 256;
+ gBattle_BG0_X = DISPLAY_WIDTH + 16;
gBattle_BG0_Y = 0;
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
@@ -3765,15 +3774,15 @@ static void Task_HandleInfoCardInput(u8 taskId)
if (sInfoCard->pos == 0)
{
- gBattle_BG2_X = 256;
- gBattle_BG2_Y = 160;
+ gBattle_BG2_X = DISPLAY_WIDTH + 16;
+ gBattle_BG2_Y = DISPLAY_HEIGHT;
trainerTourneyId = sInfoCard->tournamentIds[0];
DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_LEFT, trainerTourneyId);
}
else
{
gBattle_BG2_X = 0;
- gBattle_BG2_Y = 160;
+ gBattle_BG2_Y = DISPLAY_HEIGHT;
matchNo = gTasks[taskId2].data[1] - 16;
DisplayMatchInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_LEFT, matchNo);
}
@@ -3835,12 +3844,12 @@ static void Task_HandleInfoCardInput(u8 taskId)
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- gBattle_BG1_X = -256;
+ gBattle_BG1_X = -(DISPLAY_WIDTH + 16);
gBattle_BG1_Y = 0;
}
else
{
- gBattle_BG0_X = -256;
+ gBattle_BG0_X = -(DISPLAY_WIDTH + 16);
gBattle_BG0_Y = 0;
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
@@ -3849,7 +3858,7 @@ static void Task_HandleInfoCardInput(u8 taskId)
if (sInfoCard->pos == 1)
{
gBattle_BG2_X = 0;
- gBattle_BG2_Y = 160;
+ gBattle_BG2_Y = DISPLAY_HEIGHT;
}
else
{
@@ -3916,12 +3925,12 @@ static void Task_HandleInfoCardInput(u8 taskId)
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- gBattle_BG1_X = -256;
+ gBattle_BG1_X = -(DISPLAY_WIDTH + 16);
gBattle_BG1_Y = 0;
}
else
{
- gBattle_BG0_X = -256;
+ gBattle_BG0_X = -(DISPLAY_WIDTH + 16);
gBattle_BG0_Y = 0;
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
@@ -3929,15 +3938,15 @@ static void Task_HandleInfoCardInput(u8 taskId)
if (sInfoCard->pos == 2)
{
- gBattle_BG2_X = 256;
- gBattle_BG2_Y = 160;
+ gBattle_BG2_X = DISPLAY_WIDTH + 16;
+ gBattle_BG2_Y = DISPLAY_HEIGHT;
trainerTourneyId = sInfoCard->tournamentIds[1];
DisplayTrainerInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_RIGHT, trainerTourneyId);
}
else
{
gBattle_BG2_X = 0;
- gBattle_BG2_Y = 160;
+ gBattle_BG2_Y = DISPLAY_HEIGHT;
matchNo = gTasks[taskId2].data[1] - 16;
DisplayMatchInfoOnCard(gTasks[taskId].tUsingAlternateSlot | MOVE_CARD_RIGHT, matchNo);
}
@@ -4248,13 +4257,13 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId)
if (flags & CARD_ALTERNATE_SLOT)
arrId = 2 * (FRONTIER_PARTY_SIZE + 1), windowId = 9, palSlot = 2;
if (flags & MOVE_CARD_RIGHT)
- x = 256;
+ x = DISPLAY_WIDTH + 16;
if (flags & MOVE_CARD_DOWN)
- y = 160;
+ y = DISPLAY_HEIGHT;
if (flags & MOVE_CARD_LEFT)
- x = -256;
+ x = -(DISPLAY_WIDTH + 16);
if (flags & MOVE_CARD_UP)
- y = -160;
+ y = -DISPLAY_HEIGHT;
// Create trainer pic sprite
if (trainerId == TRAINER_PLAYER)
@@ -4709,13 +4718,13 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo)
if (flags & CARD_ALTERNATE_SLOT)
arrId = 2 * (FRONTIER_PARTY_SIZE + 1), windowId = 9, palSlot = 2;
if (flags & MOVE_CARD_RIGHT)
- x = 256;
+ x = DISPLAY_WIDTH + 16;
if (flags & MOVE_CARD_DOWN)
- y = 160;
+ y = DISPLAY_HEIGHT;
if (flags & MOVE_CARD_LEFT)
- x = -256;
+ x = -(DISPLAY_WIDTH + 16);
if (flags & MOVE_CARD_UP)
- y = -160;
+ y = -DISPLAY_HEIGHT;
// Copy trainers information to handy arrays.
winStringId = BufferDomeWinString(matchNo, sInfoCard->tournamentIds);
@@ -5211,40 +5220,38 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun
}
j = bestId;
- goto LABEL;
- while (j != 0)
+ do
{
- for (j = 0, k = 0; k < MAX_MON_MOVES * FRONTIER_PARTY_SIZE; k++)
+ for (i = 0; i < roundId - 1; i++)
{
- if (bestScore < moveScores[k])
- {
- j = k;
- bestScore = moveScores[k];
- }
- else if (bestScore == moveScores[k] && moveIds[j] < moveIds[k])
- {
- j = k;
- }
+ if (gSaveBlock2Ptr->frontier.domeWinningMoves[sub_81953E8(winnerTournamentId, i)] == moveIds[j])
+ break;
}
- if (i == roundId - 1)
- break;
- LABEL:
+ if (i != roundId - 1)
{
- for (i = 0; i < roundId - 1; i++)
- {
- if (gSaveBlock2Ptr->frontier.domeWinningMoves[sub_81953E8(winnerTournamentId, i)] == moveIds[j])
- break;
- }
- if (i == roundId - 1)
- break;
-
moveScores[j] = 0;
bestScore = 0;
j = 0;
for (k = 0; k < MAX_MON_MOVES * FRONTIER_PARTY_SIZE; k++)
j += moveScores[k];
+ if (j == 0)
+ break;
+ j = 0;
+ for (k = 0; k < MAX_MON_MOVES * FRONTIER_PARTY_SIZE; k++)
+ {
+ if (bestScore < moveScores[k])
+ {
+ j = k;
+ bestScore = moveScores[k];
+ }
+ else if (bestScore == moveScores[k] && moveIds[j] < moveIds[k]) // Yes, these conditions are redundant
+ {
+ j = k;
+ bestScore = moveScores[k];
+ }
+ }
}
- }
+ } while (i != roundId - 1);
if (moveScores[j] == 0)
j = bestId;
@@ -5285,10 +5292,10 @@ static void Task_ShowTourneyTree(u8 taskId)
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
SetGpuReg(REG_OFFSET_BLDY, 0);
SetGpuReg(REG_OFFSET_MOSAIC, 0);
- SetGpuReg(REG_OFFSET_WIN0H, 0x5860);
- SetGpuReg(REG_OFFSET_WIN0V, 0x9F);
- SetGpuReg(REG_OFFSET_WIN1H, 0x9098);
- SetGpuReg(REG_OFFSET_WIN1V, 0x9F);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(88, 96));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, DISPLAY_HEIGHT - 1));
+ SetGpuReg(REG_OFFSET_WIN1H, WIN_RANGE(144, 152));
+ SetGpuReg(REG_OFFSET_WIN1V, WIN_RANGE(0, DISPLAY_HEIGHT - 1));
SetGpuReg(REG_OFFSET_WININ, 0);
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
ResetPaletteFade();
@@ -5397,7 +5404,7 @@ static void Task_ShowTourneyTree(u8 taskId)
{
if (DOME_TRAINERS[i].trainerId == TRAINER_PLAYER)
{
- textPrinter.fgColor = TEXT_COLOR_LIGHT_GREY;
+ textPrinter.fgColor = TEXT_COLOR_LIGHT_GRAY;
textPrinter.shadowColor = TEXT_COLOR_RED;
}
else
@@ -5410,7 +5417,7 @@ static void Task_ShowTourneyTree(u8 taskId)
{
if (DOME_TRAINERS[i].trainerId == TRAINER_PLAYER)
{
- textPrinter.fgColor = TEXT_COLOR_LIGHT_GREY;
+ textPrinter.fgColor = TEXT_COLOR_LIGHT_GRAY;
textPrinter.shadowColor = TEXT_COLOR_RED;
}
else
diff --git a/src/battle_factory.c b/src/battle_factory.c
index 72772929a..e0bfdfdd0 100644
--- a/src/battle_factory.c
+++ b/src/battle_factory.c
@@ -38,7 +38,7 @@ static void GenerateInitialRentalMons(void);
static void GetOpponentMostCommonMonType(void);
static void GetOpponentBattleStyle(void);
static void RestorePlayerPartyHeldItems(void);
-static u16 GetFactoryMonId(u8 lvlMode, u8 challengeNum, bool8 arg2);
+static u16 GetFactoryMonId(u8 lvlMode, u8 challengeNum, bool8 useBetterRange);
static u8 GetMoveBattleStyle(u16 move);
// Number of moves needed on the team to be considered using a certain battle style
diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c
index 7b0af774a..3fb65d498 100644
--- a/src/battle_factory_screen.c
+++ b/src/battle_factory_screen.c
@@ -402,7 +402,7 @@ static const struct WindowTemplate sSelect_WindowTemplates[] =
};
static const u16 sSelectText_Pal[] = INCBIN_U16("graphics/battle_frontier/factory_screen/text.gbapal");
-static const u8 sMenuOptionTextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_TRANSPARENT};
+static const u8 sMenuOptionTextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_TRANSPARENT};
static const u8 sSpeciesNameTextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_RED, TEXT_COLOR_TRANSPARENT};
static const struct OamData sOam_Select_Pokeball =
@@ -1024,7 +1024,7 @@ static const struct WindowTemplate sSwap_WindowTemplates[] =
};
static const u16 sSwapText_Pal[] = INCBIN_U16("graphics/battle_frontier/factory_screen/text.gbapal"); // Identical to sSelectText_Pal
-static const u8 sSwapMenuOptionsTextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_TRANSPARENT};
+static const u8 sSwapMenuOptionsTextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_TRANSPARENT};
static const u8 sSwapSpeciesNameTextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_RED, TEXT_COLOR_TRANSPARENT};
#define SWAPACTION_MON 1
@@ -1307,7 +1307,7 @@ static void Select_InitAllSprites(void)
Select_SetBallSpritePaletteNum(i);
}
cursorPos = sFactorySelectScreen->cursorPos;
- x = gSprites[sFactorySelectScreen->mons[cursorPos].ballSpriteId].pos1.x;
+ x = gSprites[sFactorySelectScreen->mons[cursorPos].ballSpriteId].x;
sFactorySelectScreen->cursorSpriteId = CreateSprite(&sSpriteTemplate_Select_Arrow, x, 88, 0);
sFactorySelectScreen->menuCursor1SpriteId = CreateSprite(&sSpriteTemplate_Select_MenuHighlightLeft, 176, 112, 0);
sFactorySelectScreen->menuCursor2SpriteId = CreateSprite(&sSpriteTemplate_Select_MenuHighlightRight, 176, 144, 0);
@@ -1352,7 +1352,7 @@ static void Select_UpdateBallCursorPosition(s8 direction)
}
cursorPos = sFactorySelectScreen->cursorPos;
- gSprites[sFactorySelectScreen->cursorSpriteId].pos1.x = gSprites[sFactorySelectScreen->mons[cursorPos].ballSpriteId].pos1.x;
+ gSprites[sFactorySelectScreen->cursorSpriteId].x = gSprites[sFactorySelectScreen->mons[cursorPos].ballSpriteId].x;
}
static void Select_UpdateMenuCursorPosition(s8 direction)
@@ -1372,8 +1372,8 @@ static void Select_UpdateMenuCursorPosition(s8 direction)
sFactorySelectScreen->menuCursorPos = ARRAY_COUNT(sSelect_MenuOptionFuncs) - 1;
}
- gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
- gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
+ gSprites[sFactorySelectScreen->menuCursor1SpriteId].y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
+ gSprites[sFactorySelectScreen->menuCursor2SpriteId].y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
}
static void Select_UpdateYesNoCursorPosition(s8 direction)
@@ -1393,8 +1393,8 @@ static void Select_UpdateYesNoCursorPosition(s8 direction)
sFactorySelectScreen->yesNoCursorPos = 1;
}
- gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.y = (sFactorySelectScreen->yesNoCursorPos * 16) + 112;
- gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.y = (sFactorySelectScreen->yesNoCursorPos * 16) + 112;
+ gSprites[sFactorySelectScreen->menuCursor1SpriteId].y = (sFactorySelectScreen->yesNoCursorPos * 16) + 112;
+ gSprites[sFactorySelectScreen->menuCursor2SpriteId].y = (sFactorySelectScreen->yesNoCursorPos * 16) + 112;
}
static void Select_HandleMonSelectionChange(void)
@@ -1476,7 +1476,7 @@ static void Select_Task_OpenSummaryScreen(u8 taskId)
sFactorySelectMons = AllocZeroed(sizeof(struct Pokemon) * SELECTABLE_MONS_COUNT);
for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
sFactorySelectMons[i] = sFactorySelectScreen->mons[i].monData;
- ShowPokemonSummaryScreen(PSS_MODE_LOCK_MOVES, sFactorySelectMons, currMonId, SELECTABLE_MONS_COUNT - 1, CB2_InitSelectScreen);
+ ShowPokemonSummaryScreen(SUMMARY_MODE_LOCK_MOVES, sFactorySelectMons, currMonId, SELECTABLE_MONS_COUNT - 1, CB2_InitSelectScreen);
break;
}
}
@@ -1823,10 +1823,10 @@ static void Select_ShowMenuOptions(void)
if (!sFactorySelectScreen->fromSummaryScreen)
sFactorySelectScreen->menuCursorPos = 0;
- gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.x = 176;
- gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
- gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.x = 208;
- gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
+ gSprites[sFactorySelectScreen->menuCursor1SpriteId].x = 176;
+ gSprites[sFactorySelectScreen->menuCursor1SpriteId].y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
+ gSprites[sFactorySelectScreen->menuCursor2SpriteId].x = 208;
+ gSprites[sFactorySelectScreen->menuCursor2SpriteId].y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
gSprites[sFactorySelectScreen->menuCursor1SpriteId].invisible = FALSE;
gSprites[sFactorySelectScreen->menuCursor2SpriteId].invisible = FALSE;
@@ -1838,10 +1838,10 @@ static void Select_ShowYesNoOptions(void)
{
sFactorySelectScreen->yesNoCursorPos = 0;
- gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.x = 176;
- gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.y = 112;
- gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.x = 208;
- gSprites[sFactorySelectScreen->menuCursor2SpriteId].pos1.y = 112;
+ gSprites[sFactorySelectScreen->menuCursor1SpriteId].x = 176;
+ gSprites[sFactorySelectScreen->menuCursor1SpriteId].y = 112;
+ gSprites[sFactorySelectScreen->menuCursor2SpriteId].x = 208;
+ gSprites[sFactorySelectScreen->menuCursor2SpriteId].y = 112;
gSprites[sFactorySelectScreen->menuCursor1SpriteId].invisible = FALSE;
gSprites[sFactorySelectScreen->menuCursor2SpriteId].invisible = FALSE;
@@ -2390,7 +2390,7 @@ static void Swap_Task_OpenSummaryScreen(u8 taskId)
DestroyTask(taskId);
sFactorySwapScreen->fromSummaryScreen = TRUE;
sFactorySwapScreen->speciesNameColorBackup = gPlttBufferUnfaded[244];
- ShowPokemonSummaryScreen(PSS_MODE_NORMAL, gPlayerParty, sFactorySwapScreen->cursorPos, FRONTIER_PARTY_SIZE - 1, CB2_InitSwapScreen);
+ ShowPokemonSummaryScreen(SUMMARY_MODE_NORMAL, gPlayerParty, sFactorySwapScreen->cursorPos, FRONTIER_PARTY_SIZE - 1, CB2_InitSwapScreen);
break;
}
}
@@ -2793,33 +2793,33 @@ static void Swap_Task_SlideCycleBalls(u8 taskId)
{
if (i != FRONTIER_PARTY_SIZE - 1)
{
- u8 posX = lastX - gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
+ u8 posX = lastX - gSprites[sFactorySwapScreen->ballSpriteIds[i]].x;
if (posX == 16 || gTasks[taskId].tBallCycled(i + 1) == TRUE)
{
- lastX = gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
- gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x += 10;
+ lastX = gSprites[sFactorySwapScreen->ballSpriteIds[i]].x;
+ gSprites[sFactorySwapScreen->ballSpriteIds[i]].x += 10;
}
else if (posX > 16)
{
- gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x = gSprites[sFactorySwapScreen->ballSpriteIds[i + 1]].pos1.x - 48;
+ gSprites[sFactorySwapScreen->ballSpriteIds[i]].x = gSprites[sFactorySwapScreen->ballSpriteIds[i + 1]].x - 48;
}
}
else
{
- lastX = gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
- gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x += 10;
+ lastX = gSprites[sFactorySwapScreen->ballSpriteIds[i]].x;
+ gSprites[sFactorySwapScreen->ballSpriteIds[i]].x += 10;
}
if (gTasks[taskId].tBallCycled(i) == TRUE)
{
// New ball coming in from left, check if it has reached dest
- if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x > (i * 48) + 72)
+ if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].x > (i * 48) + 72)
{
// Overshot dest, set x and finish
- gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x = (i * 48) + 72;
+ gSprites[sFactorySwapScreen->ballSpriteIds[i]].x = (i * 48) + 72;
finished = TRUE;
}
- else if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x == (i * 48) + 72)
+ else if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].x == (i * 48) + 72)
{
finished = TRUE;
}
@@ -2833,11 +2833,11 @@ static void Swap_Task_SlideCycleBalls(u8 taskId)
finished = FALSE;
}
- if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x - 16 > DISPLAY_WIDTH)
+ if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].x - 16 > DISPLAY_WIDTH)
{
// Ball is offscreen right, cycle its palette and move to left side of screen
- lastX = gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
- gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x = -16;
+ lastX = gSprites[sFactorySwapScreen->ballSpriteIds[i]].x;
+ gSprites[sFactorySwapScreen->ballSpriteIds[i]].x = -16;
if (sFactorySwapScreen->inEnemyScreen == TRUE)
gSprites[sFactorySwapScreen->ballSpriteIds[i]].oam.paletteNum = IndexOfSpritePaletteTag(PALTAG_BALL_SELECTED);
else
@@ -2881,7 +2881,7 @@ static void Swap_Task_SlideButtonOnOffScreen(u8 taskId)
switch (gTasks[taskId].tState)
{
case SLIDE_BUTTON_PKMN:
- currPosX = gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0][0]].pos1.x;
+ currPosX = gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0][0]].x;
if (!gTasks[taskId].tSlidingOn)
{
// Sliding "Pkmn for Swap" offscreen
@@ -2915,7 +2915,7 @@ static void Swap_Task_SlideButtonOnOffScreen(u8 taskId)
for (i = 0; i < ARRAY_COUNT(sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0]); i++)
{
for (j = 0; j < ARRAY_COUNT(sFactorySwapScreen->pkmnForSwapButtonSpriteIds); j++)
- gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][i]].pos1.x += deltaX;
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][i]].x += deltaX;
}
}
else
@@ -2923,9 +2923,9 @@ static void Swap_Task_SlideButtonOnOffScreen(u8 taskId)
// Set final position
for (j = 0; j < ARRAY_COUNT(sFactorySwapScreen->pkmnForSwapButtonSpriteIds); j++)
{
- gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][0]].pos1.x = posX;
- gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][1]].pos1.x = posX + 16;
- gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][2]].pos1.x = posX + 48;
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][0]].x = posX;
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][1]].x = posX + 16;
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][2]].x = posX + 48;
}
prevTaskId = gTasks[taskId].tTaskId;
gTasks[prevTaskId].tSlideFinishedPkmn = TRUE;
@@ -2933,7 +2933,7 @@ static void Swap_Task_SlideButtonOnOffScreen(u8 taskId)
}
break;
case SLIDE_BUTTON_CANCEL:
- currPosX = gSprites[sFactorySwapScreen->cancelButtonSpriteIds[0][0]].pos1.x;
+ currPosX = gSprites[sFactorySwapScreen->cancelButtonSpriteIds[0][0]].x;
if (!gTasks[taskId].tSlidingOn)
{
// Sliding "Cancel" offscreen
@@ -2967,7 +2967,7 @@ static void Swap_Task_SlideButtonOnOffScreen(u8 taskId)
for (i = 0; i < ARRAY_COUNT(sFactorySwapScreen->cancelButtonSpriteIds); i++)
{
for (j = 0; j < ARRAY_COUNT(sFactorySwapScreen->cancelButtonSpriteIds[0]); j++)
- gSprites[sFactorySwapScreen->cancelButtonSpriteIds[j][i]].pos1.x += deltaX;
+ gSprites[sFactorySwapScreen->cancelButtonSpriteIds[j][i]].x += deltaX;
}
}
else
@@ -2975,8 +2975,8 @@ static void Swap_Task_SlideButtonOnOffScreen(u8 taskId)
// Set final position
for (j = 0; j < ARRAY_COUNT(sFactorySwapScreen->cancelButtonSpriteIds); j++)
{
- gSprites[sFactorySwapScreen->cancelButtonSpriteIds[j][0]].pos1.x = posX;
- gSprites[sFactorySwapScreen->cancelButtonSpriteIds[j][1]].pos1.x = posX + 16;
+ gSprites[sFactorySwapScreen->cancelButtonSpriteIds[j][0]].x = posX;
+ gSprites[sFactorySwapScreen->cancelButtonSpriteIds[j][1]].x = posX + 16;
}
prevTaskId = gTasks[taskId].tTaskId;
gTasks[prevTaskId].tSlideFinishedCancel = TRUE;
@@ -3221,7 +3221,7 @@ static void Swap_Task_SwitchPartyScreen(u8 taskId)
for (i = 0; i < ARRAY_COUNT(sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0]); i++)
gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[1][i]].invisible = TRUE;
}
- gSprites[sFactorySwapScreen->cursorSpriteId].pos1.x = gSprites[sFactorySwapScreen->ballSpriteIds[sFactorySwapScreen->cursorPos]].pos1.x;
+ gSprites[sFactorySwapScreen->cursorSpriteId].x = gSprites[sFactorySwapScreen->ballSpriteIds[sFactorySwapScreen->cursorPos]].x;
gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].func = Swap_Task_FadeSpeciesName;
sFactorySwapScreen->fadeSpeciesNameCoeffDelay = 0;
sFactorySwapScreen->fadeSpeciesNameCoeff = 6;
@@ -3433,7 +3433,7 @@ static void Swap_InitAllSprites(void)
sFactorySwapScreen->ballSpriteIds[i] = CreateSprite(&spriteTemplate, (48 * i) + 72, 64, 1);
gSprites[sFactorySwapScreen->ballSpriteIds[i]].data[0] = 0;
}
- sFactorySwapScreen->cursorSpriteId = CreateSprite(&sSpriteTemplate_Swap_Arrow, gSprites[sFactorySwapScreen->ballSpriteIds[sFactorySwapScreen->cursorPos]].pos1.x, 88, 0);
+ sFactorySwapScreen->cursorSpriteId = CreateSprite(&sSpriteTemplate_Swap_Arrow, gSprites[sFactorySwapScreen->ballSpriteIds[sFactorySwapScreen->cursorPos]].x, 88, 0);
sFactorySwapScreen->menuCursor1SpriteId = CreateSprite(&sSpriteTemplate_Swap_MenuHighlightLeft, 176, 112, 0);
sFactorySwapScreen->menuCursor2SpriteId = CreateSprite(&sSpriteTemplate_Swap_MenuHighlightRight, 176, 144, 0);
gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = TRUE;
@@ -3541,7 +3541,7 @@ static void Swap_HandleActionCursorChange(u8 cursorId)
// Cursor is on one of the pokemon
gSprites[sFactorySwapScreen->cursorSpriteId].invisible = FALSE;
Swap_HideActionButtonHighlights();
- gSprites[sFactorySwapScreen->cursorSpriteId].pos1.x = gSprites[sFactorySwapScreen->ballSpriteIds[cursorId]].pos1.x;
+ gSprites[sFactorySwapScreen->cursorSpriteId].x = gSprites[sFactorySwapScreen->ballSpriteIds[cursorId]].x;
}
else
{
@@ -3618,8 +3618,8 @@ static void Swap_UpdateYesNoCursorPosition(s8 direction)
sFactorySwapScreen->yesNoCursorPos = 1;
}
- gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.y = (sFactorySwapScreen->yesNoCursorPos * 16) + 112;
- gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.y = (sFactorySwapScreen->yesNoCursorPos * 16) + 112;
+ gSprites[sFactorySwapScreen->menuCursor1SpriteId].y = (sFactorySwapScreen->yesNoCursorPos * 16) + 112;
+ gSprites[sFactorySwapScreen->menuCursor2SpriteId].y = (sFactorySwapScreen->yesNoCursorPos * 16) + 112;
}
static void Swap_UpdateMenuCursorPosition(s8 direction)
@@ -3640,8 +3640,8 @@ static void Swap_UpdateMenuCursorPosition(s8 direction)
sFactorySwapScreen->menuCursorPos = ARRAY_COUNT(sSwap_MenuOptionFuncs) - 1;
}
- gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
- gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
+ gSprites[sFactorySwapScreen->menuCursor1SpriteId].y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
+ gSprites[sFactorySwapScreen->menuCursor2SpriteId].y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
}
static void Swap_HighlightActionButton(u8 actionId)
@@ -3693,10 +3693,10 @@ static void Swap_ShowMenuOptions(void)
else
sFactorySwapScreen->menuCursorPos = 0;
- gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.x = 176;
- gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
- gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.x = 208;
- gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
+ gSprites[sFactorySwapScreen->menuCursor1SpriteId].x = 176;
+ gSprites[sFactorySwapScreen->menuCursor1SpriteId].y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
+ gSprites[sFactorySwapScreen->menuCursor2SpriteId].x = 208;
+ gSprites[sFactorySwapScreen->menuCursor2SpriteId].y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = FALSE;
gSprites[sFactorySwapScreen->menuCursor2SpriteId].invisible = FALSE;
@@ -3708,10 +3708,10 @@ static void Swap_ShowYesNoOptions(void)
{
sFactorySwapScreen->yesNoCursorPos = 0;
- gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.x = 176;
- gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.y = 112;
- gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.x = 208;
- gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.y = 112;
+ gSprites[sFactorySwapScreen->menuCursor1SpriteId].x = 176;
+ gSprites[sFactorySwapScreen->menuCursor1SpriteId].y = 112;
+ gSprites[sFactorySwapScreen->menuCursor2SpriteId].x = 208;
+ gSprites[sFactorySwapScreen->menuCursor2SpriteId].y = 112;
gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = FALSE;
gSprites[sFactorySwapScreen->menuCursor2SpriteId].invisible = FALSE;
@@ -4221,12 +4221,17 @@ static void Task_OpenMonPic(u8 taskId)
return;
break;
default:
+ #ifndef UBFIX
DestroyTask(taskId);
+ #endif
// UB: Should not use the task after it has been deleted.
if (gTasks[taskId].tIsSwapScreen == TRUE)
Swap_CreateMonSprite();
else
Select_CreateMonSprite();
+ #ifdef UBFIX
+ DestroyTask(taskId);
+ #endif
return;
}
task->tState++;
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index d9e1cdc2f..41e34bf33 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -40,7 +40,7 @@ extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow;
static u8 GetBattlePalaceMoveGroup(u16 move);
static u16 GetBattlePalaceTarget(void);
static void SpriteCB_TrainerSlideVertical(struct Sprite *sprite);
-static bool8 ShouldAnimBeDoneRegardlessOfSubsitute(u8 animId);
+static bool8 ShouldAnimBeDoneRegardlessOfSubstitute(u8 animId);
static void Task_ClearBitWhenBattleTableAnimDone(u8 taskId);
static void Task_ClearBitWhenSpecialAnimDone(u8 taskId);
static void ClearSpritesBattlerHealthboxAnimData(void);
@@ -376,10 +376,10 @@ void SpriteCB_TrainerSlideIn(struct Sprite *sprite)
{
if (!(gIntroSlideFlags & 1))
{
- sprite->pos2.x += sprite->sSpeedX;
- if (sprite->pos2.x == 0)
+ sprite->x2 += sprite->sSpeedX;
+ if (sprite->x2 == 0)
{
- if (sprite->pos2.y != 0)
+ if (sprite->y2 != 0)
sprite->callback = SpriteCB_TrainerSlideVertical;
else
sprite->callback = SpriteCallbackDummy;
@@ -390,8 +390,8 @@ void SpriteCB_TrainerSlideIn(struct Sprite *sprite)
// Slide up to 0 if necessary (used by multi battle intro)
static void SpriteCB_TrainerSlideVertical(struct Sprite *sprite)
{
- sprite->pos2.y -= 2;
- if (sprite->pos2.y == 0)
+ sprite->y2 -= 2;
+ if (sprite->y2 == 0)
sprite->callback = SpriteCallbackDummy;
}
@@ -444,7 +444,7 @@ bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattler, u8 atkBattler, u8 de
return TRUE;
}
if (gBattleSpritesDataPtr->battlerData[activeBattler].behindSubstitute
- && !ShouldAnimBeDoneRegardlessOfSubsitute(tableId))
+ && !ShouldAnimBeDoneRegardlessOfSubstitute(tableId))
{
return TRUE;
}
@@ -480,7 +480,7 @@ static void Task_ClearBitWhenBattleTableAnimDone(u8 taskId)
#undef tBattlerId
-static bool8 ShouldAnimBeDoneRegardlessOfSubsitute(u8 animId)
+static bool8 ShouldAnimBeDoneRegardlessOfSubstitute(u8 animId)
{
switch (animId)
{
@@ -914,7 +914,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
- gSprites[gBattlerSpriteIds[battlerAtk]].pos1.y = GetBattlerSpriteDefault_Y(battlerAtk);
+ gSprites[gBattlerSpriteIds[battlerAtk]].y = GetBattlerSpriteDefault_Y(battlerAtk);
}
else
{
@@ -967,7 +967,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
src = gMonSpritesGfxPtr->sprites.ptr[position];
dst = (void *)(OBJ_VRAM0 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32);
- DmaCopy32(3, src, dst, 0x800);
+ DmaCopy32(3, src, dst, MON_PIC_SIZE);
paletteOffset = 0x100 + battlerAtk * 16;
lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(targetSpecies, otId, personalityValue);
LZDecompressWram(lzPaletteData, gDecompressionBuffer);
@@ -989,7 +989,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
gBattleMonForms[battlerAtk] = gBattleMonForms[battlerDef];
}
- gSprites[gBattlerSpriteIds[battlerAtk]].pos1.y = GetBattlerSpriteDefault_Y(battlerAtk);
+ gSprites[gBattlerSpriteIds[battlerAtk]].y = GetBattlerSpriteDefault_Y(battlerAtk);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], gBattleMonForms[battlerAtk]);
}
}
@@ -1014,7 +1014,7 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite)
for (i = 1; i < 4; i++)
{
- Dma3CopyLarge32_(gMonSpritesGfxPtr->sprites.ptr[position], &gMonSpritesGfxPtr->sprites.byte[position][0x800 * i], 0x800);
+ Dma3CopyLarge32_(gMonSpritesGfxPtr->sprites.ptr[position], &gMonSpritesGfxPtr->sprites.byte[position][MON_PIC_SIZE * i], MON_PIC_SIZE);
}
palOffset = (battlerId * 16) + 0x100;
@@ -1038,9 +1038,9 @@ void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId)
StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[battlerId]);
if (!loadMonSprite)
- gSprites[spriteId].pos1.y = GetSubstituteSpriteDefault_Y(battlerId);
+ gSprites[spriteId].y = GetSubstituteSpriteDefault_Y(battlerId);
else
- gSprites[spriteId].pos1.y = GetBattlerSpriteDefault_Y(battlerId);
+ gSprites[spriteId].y = GetBattlerSpriteDefault_Y(battlerId);
}
void TrySetBehindSubstituteSpriteBit(u8 battlerId, u16 move)
@@ -1181,8 +1181,8 @@ void SpriteCB_EnemyShadow(struct Sprite *shadowSprite)
if (gBattleSpritesDataPtr->battlerData[battlerId].behindSubstitute)
invisible = TRUE;
- shadowSprite->pos1.x = battlerSprite->pos1.x;
- shadowSprite->pos2.x = battlerSprite->pos2.x;
+ shadowSprite->x = battlerSprite->x;
+ shadowSprite->x2 = battlerSprite->x2;
shadowSprite->invisible = invisible;
}
@@ -1259,8 +1259,8 @@ void AllocateMonSpritesGfx(void)
for (j = 0; j < 4; j++)
{
- gMonSpritesGfxPtr->field_74[i][j].data = gMonSpritesGfxPtr->sprites.ptr[i] + (j * 0x800);
- gMonSpritesGfxPtr->field_74[i][j].size = 0x800;
+ gMonSpritesGfxPtr->field_74[i][j].data = gMonSpritesGfxPtr->sprites.ptr[i] + (j * MON_PIC_SIZE);
+ gMonSpritesGfxPtr->field_74[i][j].size = MON_PIC_SIZE;
}
gMonSpritesGfxPtr->templates[i].images = gMonSpritesGfxPtr->field_74[i];
diff --git a/src/battle_interface.c b/src/battle_interface.c
index df123630c..83bdf0cb7 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -159,7 +159,7 @@ enum
// strings
extern const u8 gText_Slash[];
-extern const u8 gText_HighlightDarkGrey[];
+extern const u8 gText_HighlightDarkGray[];
extern const u8 gText_DynColor2[];
extern const u8 gText_DynColor2Male[];
extern const u8 gText_DynColor1Female[];
@@ -330,7 +330,7 @@ static const struct SpriteTemplate sHealthbarSpriteTemplates[MAX_BATTLERS_COUNT]
static const struct Subsprite sUnknown_0832C220[] =
{
{
- .x = 240,
+ .x = DISPLAY_WIDTH,
.y = 0,
.shape = SPRITE_SHAPE(64x32),
.size = SPRITE_SIZE(64x32),
@@ -346,7 +346,7 @@ static const struct Subsprite sUnknown_0832C220[] =
.priority = 1
},
{
- .x = 240,
+ .x = DISPLAY_WIDTH,
.y = 32,
.shape = SPRITE_SHAPE(32x8),
.size = SPRITE_SIZE(32x8),
@@ -374,7 +374,7 @@ static const struct Subsprite sUnknown_0832C220[] =
static const struct Subsprite sUnknown_0832C234[] =
{
{
- .x = 240,
+ .x = DISPLAY_WIDTH,
.y = 0,
.shape = SPRITE_SHAPE(64x32),
.size = SPRITE_SIZE(64x32),
@@ -390,7 +390,7 @@ static const struct Subsprite sUnknown_0832C234[] =
.priority = 1
},
{
- .x = 240,
+ .x = DISPLAY_WIDTH,
.y = 32,
.shape = SPRITE_SHAPE(32x8),
.size = SPRITE_SIZE(32x8),
@@ -418,7 +418,7 @@ static const struct Subsprite sUnknown_0832C234[] =
static const struct Subsprite sUnknown_0832C248[] =
{
{
- .x = 240,
+ .x = DISPLAY_WIDTH,
.y = 0,
.shape = SPRITE_SHAPE(64x32),
.size = SPRITE_SIZE(64x32),
@@ -438,7 +438,7 @@ static const struct Subsprite sUnknown_0832C248[] =
static const struct Subsprite sUnknown_0832C250[] =
{
{
- .x = 240,
+ .x = DISPLAY_WIDTH,
.y = 0,
.shape = SPRITE_SHAPE(64x32),
.size = SPRITE_SIZE(64x32),
@@ -458,7 +458,7 @@ static const struct Subsprite sUnknown_0832C250[] =
static const struct Subsprite sUnknown_0832C258[] =
{
{
- .x = 240,
+ .x = DISPLAY_WIDTH,
.y = 0,
.shape = SPRITE_SHAPE(32x8),
.size = SPRITE_SIZE(32x8),
@@ -478,7 +478,7 @@ static const struct Subsprite sUnknown_0832C258[] =
static const struct Subsprite sUnknown_0832C260[] =
{
{
- .x = 240,
+ .x = DISPLAY_WIDTH,
.y = 0,
.shape = SPRITE_SHAPE(32x8),
.size = SPRITE_SIZE(32x8),
@@ -494,7 +494,7 @@ static const struct Subsprite sUnknown_0832C260[] =
.priority = 1
},
{
- .x = 224,
+ .x = DISPLAY_WIDTH - 16,
.y = 0,
.shape = SPRITE_SHAPE(8x8),
.size = SPRITE_SIZE(8x8),
@@ -869,8 +869,8 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId)
{
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
{
- healthboxLeftSpriteId = CreateSprite(&sHealthboxPlayerSpriteTemplates[0], 240, 160, 1);
- healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[0], 240, 160, 1);
+ healthboxLeftSpriteId = CreateSprite(&sHealthboxPlayerSpriteTemplates[0], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
+ healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[0], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
gSprites[healthboxLeftSpriteId].oam.shape = ST_OAM_SQUARE;
@@ -879,8 +879,8 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId)
}
else
{
- healthboxLeftSpriteId = CreateSprite(&sHealthboxOpponentSpriteTemplates[0], 240, 160, 1);
- healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxOpponentSpriteTemplates[0], 240, 160, 1);
+ healthboxLeftSpriteId = CreateSprite(&sHealthboxOpponentSpriteTemplates[0], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
+ healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxOpponentSpriteTemplates[0], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
gSprites[healthboxRightSpriteId].oam.tileNum += 32;
@@ -895,8 +895,8 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId)
{
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
{
- healthboxLeftSpriteId = CreateSprite(&sHealthboxPlayerSpriteTemplates[GetBattlerPosition(battlerId) / 2], 240, 160, 1);
- healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[GetBattlerPosition(battlerId) / 2], 240, 160, 1);
+ healthboxLeftSpriteId = CreateSprite(&sHealthboxPlayerSpriteTemplates[GetBattlerPosition(battlerId) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
+ healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[GetBattlerPosition(battlerId) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
gSprites[healthboxLeftSpriteId].oam.affineParam = healthboxRightSpriteId;
@@ -908,8 +908,8 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId)
}
else
{
- healthboxLeftSpriteId = CreateSprite(&sHealthboxOpponentSpriteTemplates[GetBattlerPosition(battlerId) / 2], 240, 160, 1);
- healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxOpponentSpriteTemplates[GetBattlerPosition(battlerId) / 2], 240, 160, 1);
+ healthboxLeftSpriteId = CreateSprite(&sHealthboxOpponentSpriteTemplates[GetBattlerPosition(battlerId) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
+ healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxOpponentSpriteTemplates[GetBattlerPosition(battlerId) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
gSprites[healthboxLeftSpriteId].oam.affineParam = healthboxRightSpriteId;
@@ -946,8 +946,8 @@ u8 CreateSafariPlayerHealthboxSprites(void)
{
u8 healthboxLeftSpriteId, healthboxRightSpriteId;
- healthboxLeftSpriteId = CreateSprite(&sHealthboxSafariSpriteTemplate, 240, 160, 1);
- healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxSafariSpriteTemplate, 240, 160, 1);
+ healthboxLeftSpriteId = CreateSprite(&sHealthboxSafariSpriteTemplate, DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
+ healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxSafariSpriteTemplate, DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
gSprites[healthboxLeftSpriteId].oam.shape = ST_OAM_SQUARE;
gSprites[healthboxRightSpriteId].oam.shape = ST_OAM_SQUARE;
@@ -975,33 +975,33 @@ static void SpriteCB_HealthBar(struct Sprite *sprite)
switch (sprite->hBar_Data6)
{
case 0:
- sprite->pos1.x = gSprites[healthboxSpriteId].pos1.x + 16;
- sprite->pos1.y = gSprites[healthboxSpriteId].pos1.y;
+ sprite->x = gSprites[healthboxSpriteId].x + 16;
+ sprite->y = gSprites[healthboxSpriteId].y;
break;
case 1:
- sprite->pos1.x = gSprites[healthboxSpriteId].pos1.x + 16;
- sprite->pos1.y = gSprites[healthboxSpriteId].pos1.y;
+ sprite->x = gSprites[healthboxSpriteId].x + 16;
+ sprite->y = gSprites[healthboxSpriteId].y;
break;
case 2:
default:
- sprite->pos1.x = gSprites[healthboxSpriteId].pos1.x + 8;
- sprite->pos1.y = gSprites[healthboxSpriteId].pos1.y;
+ sprite->x = gSprites[healthboxSpriteId].x + 8;
+ sprite->y = gSprites[healthboxSpriteId].y;
break;
}
- sprite->pos2.x = gSprites[healthboxSpriteId].pos2.x;
- sprite->pos2.y = gSprites[healthboxSpriteId].pos2.y;
+ sprite->x2 = gSprites[healthboxSpriteId].x2;
+ sprite->y2 = gSprites[healthboxSpriteId].y2;
}
static void SpriteCB_HealthBoxOther(struct Sprite *sprite)
{
u8 healthboxMainSpriteId = sprite->hOther_HealthBoxSpriteId;
- sprite->pos1.x = gSprites[healthboxMainSpriteId].pos1.x + 64;
- sprite->pos1.y = gSprites[healthboxMainSpriteId].pos1.y;
+ sprite->x = gSprites[healthboxMainSpriteId].x + 64;
+ sprite->y = gSprites[healthboxMainSpriteId].y;
- sprite->pos2.x = gSprites[healthboxMainSpriteId].pos2.x;
- sprite->pos2.y = gSprites[healthboxMainSpriteId].pos2.y;
+ sprite->x2 = gSprites[healthboxMainSpriteId].x2;
+ sprite->y2 = gSprites[healthboxMainSpriteId].y2;
}
void SetBattleBarStruct(u8 battlerId, u8 healthboxSpriteId, s32 maxVal, s32 oldVal, s32 receivedValue)
@@ -1029,8 +1029,8 @@ void SetHealthboxSpriteVisible(u8 healthboxSpriteId)
static void UpdateSpritePos(u8 spriteId, s16 x, s16 y)
{
- gSprites[spriteId].pos1.x = x;
- gSprites[spriteId].pos1.y = y;
+ gSprites[spriteId].x = x;
+ gSprites[spriteId].y = y;
}
void DestoryHealthboxSprite(u8 healthboxSpriteId)
@@ -1099,21 +1099,14 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl)
u32 windowId, spriteTileNum;
u8 *windowTileData;
u8 text[16];
- u32 xPos, var1;
- void *objVram;
-
- text[0] = 0xF9;
- text[1] = 5;
+ u32 xPos;
+ u8 *objVram;
+
+ text[0] = CHAR_EXTRA_SYMBOL;
+ text[1] = CHAR_LV_2;
- xPos = (u32) ConvertIntToDecimalStringN(text + 2, lvl, STR_CONV_MODE_LEFT_ALIGN, 3);
- // Alright, that part was unmatchable. It's basically doing:
- // xPos = 5 * (3 - (u32)(&text[2]));
- xPos--;
- xPos--;
- xPos -= ((u32)(text));
- var1 = (3 - xPos);
- xPos = 4 * var1;
- xPos += var1;
+ objVram = ConvertIntToDecimalStringN(text + 2, lvl, STR_CONV_MODE_LEFT_ALIGN, 3);
+ xPos = 5 * (3 - (objVram - (text + 2)));
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, xPos, 3, 2, &windowId);
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP;
@@ -1492,17 +1485,17 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
summaryBarSpriteId = CreateSprite(&sStatusSummaryBarSpriteTemplates[isOpponent], bar_X, bar_Y, 10);
SetSubspriteTables(&gSprites[summaryBarSpriteId], sStatusSummaryBar_SubspriteTable);
- gSprites[summaryBarSpriteId].pos2.x = bar_pos2_X;
+ gSprites[summaryBarSpriteId].x2 = bar_pos2_X;
gSprites[summaryBarSpriteId].data[0] = bar_data0;
if (isOpponent)
{
- gSprites[summaryBarSpriteId].pos1.x -= 96;
+ gSprites[summaryBarSpriteId].x -= 96;
gSprites[summaryBarSpriteId].oam.matrixNum = ST_OAM_HFLIP;
}
else
{
- gSprites[summaryBarSpriteId].pos1.x += 96;
+ gSprites[summaryBarSpriteId].x += 96;
}
for (i = 0; i < PARTY_SIZE; i++)
@@ -1514,23 +1507,23 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
if (!isOpponent)
{
- gSprites[ballIconSpritesIds[i]].pos2.x = 0;
- gSprites[ballIconSpritesIds[i]].pos2.y = 0;
+ gSprites[ballIconSpritesIds[i]].x2 = 0;
+ gSprites[ballIconSpritesIds[i]].y2 = 0;
}
gSprites[ballIconSpritesIds[i]].data[0] = summaryBarSpriteId;
if (!isOpponent)
{
- gSprites[ballIconSpritesIds[i]].pos1.x += 10 * i + 24;
+ gSprites[ballIconSpritesIds[i]].x += 10 * i + 24;
gSprites[ballIconSpritesIds[i]].data[1] = i * 7 + 10;
- gSprites[ballIconSpritesIds[i]].pos2.x = 120;
+ gSprites[ballIconSpritesIds[i]].x2 = 120;
}
else
{
- gSprites[ballIconSpritesIds[i]].pos1.x -= 10 * (5 - i) + 24;
+ gSprites[ballIconSpritesIds[i]].x -= 10 * (5 - i) + 24;
gSprites[ballIconSpritesIds[i]].data[1] = (6 - i) * 7 + 10;
- gSprites[ballIconSpritesIds[i]].pos2.x = -120;
+ gSprites[ballIconSpritesIds[i]].x2 = -120;
}
gSprites[ballIconSpritesIds[i]].data[2] = isOpponent;
@@ -1800,17 +1793,17 @@ static void sub_8073F98(u8 taskId)
static void SpriteCB_StatusSummaryBar(struct Sprite *sprite)
{
- if (sprite->pos2.x != 0)
- sprite->pos2.x += sprite->data[0];
+ if (sprite->x2 != 0)
+ sprite->x2 += sprite->data[0];
}
static void sub_8074090(struct Sprite *sprite)
{
sprite->data[1] += 32;
if (sprite->data[0] > 0)
- sprite->pos2.x += sprite->data[1] >> 4;
+ sprite->x2 += sprite->data[1] >> 4;
else
- sprite->pos2.x -= sprite->data[1] >> 4;
+ sprite->x2 -= sprite->data[1] >> 4;
sprite->data[1] &= 0xF;
}
@@ -1833,18 +1826,18 @@ static void SpriteCB_StatusSummaryBallsOnBattleStart(struct Sprite *sprite)
if (var1 != 0)
{
- sprite->pos2.x += var2 >> 4;
- if (sprite->pos2.x > 0)
- sprite->pos2.x = 0;
+ sprite->x2 += var2 >> 4;
+ if (sprite->x2 > 0)
+ sprite->x2 = 0;
}
else
{
- sprite->pos2.x -= var2 >> 4;
- if (sprite->pos2.x < 0)
- sprite->pos2.x = 0;
+ sprite->x2 -= var2 >> 4;
+ if (sprite->x2 < 0)
+ sprite->x2 = 0;
}
- if (sprite->pos2.x == 0)
+ if (sprite->x2 == 0)
{
pan = SOUND_PAN_TARGET;
if (var1 != 0)
@@ -1874,11 +1867,11 @@ static void sub_8074158(struct Sprite *sprite)
var2 += 56;
sprite->data[3] = var2 & 0xFFF0;
if (var1 != 0)
- sprite->pos2.x += var2 >> 4;
+ sprite->x2 += var2 >> 4;
else
- sprite->pos2.x -= var2 >> 4;
- if (sprite->pos2.x + sprite->pos1.x > 248
- || sprite->pos2.x + sprite->pos1.x < -8)
+ sprite->x2 -= var2 >> 4;
+ if (sprite->x2 + sprite->x > 248
+ || sprite->x2 + sprite->x < -8)
{
sprite->invisible = TRUE;
sprite->callback = SpriteCallbackDummy;
@@ -1889,8 +1882,8 @@ static void SpriteCB_StatusSummaryBallsOnSwitchout(struct Sprite *sprite)
{
u8 barSpriteId = sprite->data[0];
- sprite->pos2.x = gSprites[barSpriteId].pos2.x;
- sprite->pos2.y = gSprites[barSpriteId].pos2.y;
+ sprite->x2 = gSprites[barSpriteId].x2;
+ sprite->y2 = gSprites[barSpriteId].y2;
}
static void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon)
@@ -1902,7 +1895,7 @@ static void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon)
u16 species;
u8 gender;
- StringCopy(gDisplayedStringBattle, gText_HighlightDarkGrey);
+ StringCopy(gDisplayedStringBattle, gText_HighlightDarkGray);
GetMonData(mon, MON_DATA_NICKNAME, nickname);
StringGetEnd10(nickname);
ptr = StringAppend(gDisplayedStringBattle, nickname);
@@ -1935,7 +1928,7 @@ static void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon)
if (GetBattlerSide(gSprites[healthboxSpriteId].data[6]) == B_SIDE_PLAYER)
{
- TextIntoHealthboxObject((void*)(VRAM + 0x10040 + spriteTileNum), windowTileData, 6);
+ TextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0x40 + spriteTileNum), windowTileData, 6);
ptr = (void*)(OBJ_VRAM0);
if (!IsDoubleBattle())
ptr += spriteTileNum + 0x800;
@@ -1945,7 +1938,7 @@ static void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon)
}
else
{
- TextIntoHealthboxObject((void*)(VRAM + 0x10020 + spriteTileNum), windowTileData, 7);
+ TextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0x20 + spriteTileNum), windowTileData, 7);
}
RemoveWindowOnHealthbox(windowId);
diff --git a/src/battle_intro.c b/src/battle_intro.c
index c76e5bc31..0ea65dab1 100644
--- a/src/battle_intro.c
+++ b/src/battle_intro.c
@@ -532,8 +532,8 @@ static void BattleIntroSlidePartner(u8 taskId)
SetGpuReg(REG_OFFSET_WININ, WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR);
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR);
gBattle_BG0_Y = -48;
- gBattle_BG1_X = 240;
- gBattle_BG2_X = -240;
+ gBattle_BG1_X = DISPLAY_WIDTH;
+ gBattle_BG2_X = -DISPLAY_WIDTH;
}
break;
case 2:
diff --git a/src/battle_main.c b/src/battle_main.c
index 3507ff765..37ab6109c 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -434,24 +434,24 @@ const u8 gTypeEffectiveness[336] =
const u8 gTypeNames[NUMBER_OF_MON_TYPES][TYPE_NAME_LENGTH + 1] =
{
- _("NORMAL"),
- _("FIGHT"),
- _("FLYING"),
- _("POISON"),
- _("GROUND"),
- _("ROCK"),
- _("BUG"),
- _("GHOST"),
- _("STEEL"),
- _("???"),
- _("FIRE"),
- _("WATER"),
- _("GRASS"),
- _("ELECTR"),
- _("PSYCHC"),
- _("ICE"),
- _("DRAGON"),
- _("DARK"),
+ [TYPE_NORMAL] = _("NORMAL"),
+ [TYPE_FIGHTING] = _("FIGHT"),
+ [TYPE_FLYING] = _("FLYING"),
+ [TYPE_POISON] = _("POISON"),
+ [TYPE_GROUND] = _("GROUND"),
+ [TYPE_ROCK] = _("ROCK"),
+ [TYPE_BUG] = _("BUG"),
+ [TYPE_GHOST] = _("GHOST"),
+ [TYPE_STEEL] = _("STEEL"),
+ [TYPE_MYSTERY] = _("???"),
+ [TYPE_FIRE] = _("FIRE"),
+ [TYPE_WATER] = _("WATER"),
+ [TYPE_GRASS] = _("GRASS"),
+ [TYPE_ELECTRIC] = _("ELECTR"),
+ [TYPE_PSYCHIC] = _("PSYCHC"),
+ [TYPE_ICE] = _("ICE"),
+ [TYPE_DRAGON] = _("DRAGON"),
+ [TYPE_DARK] = _("DARK"),
};
// This is a factor in how much money you get for beating a trainer.
@@ -611,22 +611,22 @@ static void CB2_InitBattleInternal(void)
CpuFill32(0, (void*)(VRAM), VRAM_SIZE);
SetGpuReg(REG_OFFSET_MOSAIC, 0);
- SetGpuReg(REG_OFFSET_WIN0H, 240);
- SetGpuReg(REG_OFFSET_WIN0V, 0x5051);
+ SetGpuReg(REG_OFFSET_WIN0H, DISPLAY_WIDTH);
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(DISPLAY_HEIGHT / 2, DISPLAY_HEIGHT / 2 + 1));
SetGpuReg(REG_OFFSET_WININ, 0);
SetGpuReg(REG_OFFSET_WINOUT, 0);
- gBattle_WIN0H = 240;
+ gBattle_WIN0H = DISPLAY_WIDTH;
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gPartnerTrainerId != TRAINER_STEVEN_PARTNER)
{
- gBattle_WIN0V = 159;
- gBattle_WIN1H = 240;
+ gBattle_WIN0V = DISPLAY_HEIGHT - 1;
+ gBattle_WIN1H = DISPLAY_WIDTH;
gBattle_WIN1V = 32;
}
else
{
- gBattle_WIN0V = 0x5051;
+ gBattle_WIN0V = WIN_RANGE(DISPLAY_HEIGHT / 2, DISPLAY_HEIGHT / 2 + 1);
ScanlineEffect_Clear();
i = 0;
@@ -1961,10 +1961,10 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
if (gTrainers[trainerNum].doubleBattle == TRUE)
personalityValue = 0x80;
- else if (gTrainers[trainerNum].encounterMusic_gender & 0x80)
- personalityValue = 0x78;
+ else if (gTrainers[trainerNum].encounterMusic_gender & F_TRAINER_FEMALE)
+ personalityValue = 0x78; // Use personality more likely to result in a female Pokémon
else
- personalityValue = 0x88;
+ personalityValue = 0x88; // Use personality more likely to result in a male Pokémon
for (j = 0; gTrainers[trainerNum].trainerName[j] != EOS; j++)
nameHash += gTrainers[trainerNum].trainerName[j];
@@ -2047,7 +2047,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
void sub_8038A04(void) // unused
{
if (REG_VCOUNT < 0xA0 && REG_VCOUNT >= 0x6F)
- SetGpuReg(REG_OFFSET_BG0CNT, 0x9800);
+ SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_SCREENBASE(24) | BGCNT_TXT256x512);
}
void VBlankCB_Battle(void)
@@ -2082,9 +2082,9 @@ void SpriteCB_VsLetterDummy(struct Sprite *sprite)
static void SpriteCB_VsLetter(struct Sprite *sprite)
{
if (sprite->data[0] != 0)
- sprite->pos1.x = sprite->data[1] + ((sprite->data[2] & 0xFF00) >> 8);
+ sprite->x = sprite->data[1] + ((sprite->data[2] & 0xFF00) >> 8);
else
- sprite->pos1.x = sprite->data[1] - ((sprite->data[2] & 0xFF00) >> 8);
+ sprite->x = sprite->data[1] - ((sprite->data[2] & 0xFF00) >> 8);
sprite->data[2] += 0x180;
@@ -2618,8 +2618,8 @@ static void SpriteCb_MoveWildMonToRight(struct Sprite *sprite)
{
if ((gIntroSlideFlags & 1) == 0)
{
- sprite->pos2.x += 2;
- if (sprite->pos2.x == 0)
+ sprite->x2 += 2;
+ if (sprite->x2 == 0)
{
sprite->callback = SpriteCb_WildMonShowHealthbox;
}
@@ -2730,7 +2730,7 @@ static void SpriteCB_AnimFaintOpponent(struct Sprite *sprite)
if (--sprite->data[4] == 0)
{
sprite->data[4] = 2;
- sprite->pos2.y += 8; // Move the sprite down.
+ sprite->y2 += 8; // Move the sprite down.
if (--sprite->data[3] < 0)
{
FreeSpriteOamMatrix(sprite);
@@ -2795,8 +2795,8 @@ static void SpriteCB_BattleSpriteSlideLeft(struct Sprite *sprite)
{
if (!(gIntroSlideFlags & 1))
{
- sprite->pos2.x -= 2;
- if (sprite->pos2.x == 0)
+ sprite->x2 -= 2;
+ if (sprite->x2 == 0)
{
sprite->callback = SpriteCallbackDummy_3;
sprite->data[1] = 0;
@@ -2821,8 +2821,8 @@ void SpriteCB_FaintSlideAnim(struct Sprite *sprite)
{
if (!(gIntroSlideFlags & 1))
{
- sprite->pos2.x += sprite->sSpeedX;
- sprite->pos2.y += sprite->sSpeedY;
+ sprite->x2 += sprite->sSpeedX;
+ sprite->y2 += sprite->sSpeedY;
}
}
@@ -2872,8 +2872,8 @@ void DoBounceEffect(u8 battler, u8 which, s8 delta, s8 amplitude)
gSprites[invisibleSpriteId].sAmplitude = amplitude;
gSprites[invisibleSpriteId].sBouncerSpriteId = bouncerSpriteId;
gSprites[invisibleSpriteId].sWhich = which;
- gSprites[bouncerSpriteId].pos2.x = 0;
- gSprites[bouncerSpriteId].pos2.y = 0;
+ gSprites[bouncerSpriteId].x2 = 0;
+ gSprites[bouncerSpriteId].y2 = 0;
}
void EndBounceEffect(u8 battler, u8 which)
@@ -2899,8 +2899,8 @@ void EndBounceEffect(u8 battler, u8 which)
gBattleSpritesDataPtr->healthBoxesData[battler].battlerIsBouncing = 0;
}
- gSprites[bouncerSpriteId].pos2.x = 0;
- gSprites[bouncerSpriteId].pos2.y = 0;
+ gSprites[bouncerSpriteId].x2 = 0;
+ gSprites[bouncerSpriteId].y2 = 0;
}
static void SpriteCB_BounceEffect(struct Sprite *sprite)
@@ -2913,7 +2913,7 @@ static void SpriteCB_BounceEffect(struct Sprite *sprite)
else
index = sprite->sSinIndex;
- gSprites[bouncerSpriteId].pos2.y = Sin(index, sprite->sAmplitude) + sprite->sAmplitude;
+ gSprites[bouncerSpriteId].y2 = Sin(index, sprite->sAmplitude) + sprite->sAmplitude;
sprite->sSinIndex = (sprite->sSinIndex + sprite->sDelta) & 0xFF;
}
@@ -3959,7 +3959,7 @@ u8 IsRunningFromBattleImpossible(void)
{
gBattleScripting.battler = i;
gLastUsedAbility = gBattleMons[i].ability;
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PREVENTS_ESCAPE;
return 2;
}
if (side != GetBattlerSide(i)
@@ -3969,7 +3969,7 @@ u8 IsRunningFromBattleImpossible(void)
{
gBattleScripting.battler = i;
gLastUsedAbility = gBattleMons[i].ability;
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PREVENTS_ESCAPE;
return 2;
}
}
@@ -3978,18 +3978,18 @@ u8 IsRunningFromBattleImpossible(void)
{
gBattleScripting.battler = i - 1;
gLastUsedAbility = gBattleMons[i - 1].ability;
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PREVENTS_ESCAPE;
return 2;
}
if ((gBattleMons[gActiveBattler].status2 & (STATUS2_ESCAPE_PREVENTION | STATUS2_WRAPPED))
|| (gStatuses3[gActiveBattler] & STATUS3_ROOTED))
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CANT_ESCAPE;
return 1;
}
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DONT_LEAVE_BIRCH;
return 1;
}
return 0;
@@ -4087,7 +4087,7 @@ static void HandleTurnActionSelectionState(void)
}
break;
case STATE_WAIT_ACTION_CHOSEN: // Try to perform an action.
- if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC))))
+ if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF << 28) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 12))))
{
RecordedBattle_SetBattlerAction(gActiveBattler, gBattleBufferB[gActiveBattler][1]);
gChosenActionByBattler[gActiveBattler] = gBattleBufferB[gActiveBattler][1];
@@ -4266,7 +4266,7 @@ static void HandleTurnActionSelectionState(void)
}
break;
case STATE_WAIT_ACTION_CASE_CHOSEN:
- if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC))))
+ if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF << 28) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 12))))
{
switch (gChosenActionByBattler[gActiveBattler])
{
@@ -4375,7 +4375,7 @@ static void HandleTurnActionSelectionState(void)
break;
case STATE_WAIT_ACTION_CONFIRMED_STANDBY:
if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler])
- | (0xF0000000)
+ | (0xF << 28)
| (gBitTable[gActiveBattler] << 4)
| (gBitTable[gActiveBattler] << 8)
| (gBitTable[gActiveBattler] << 12))))
@@ -4400,7 +4400,7 @@ static void HandleTurnActionSelectionState(void)
}
break;
case STATE_WAIT_ACTION_CONFIRMED:
- if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC))))
+ if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF << 28) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 12))))
{
gBattleCommunication[ACTIONS_CONFIRMED_COUNT]++;
}
@@ -4414,7 +4414,7 @@ static void HandleTurnActionSelectionState(void)
{
gBattlerAttacker = gActiveBattler;
gBattlescriptCurrInstr = gSelectionBattleScripts[gActiveBattler];
- if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC))))
+ if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF << 28) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 12))))
{
gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
}
@@ -4422,7 +4422,7 @@ static void HandleTurnActionSelectionState(void)
}
break;
case STATE_WAIT_SET_BEFORE_ACTION:
- if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC))))
+ if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF << 28) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 12))))
{
gBattleCommunication[gActiveBattler] = STATE_BEFORE_ACTION_CHOSEN;
}
@@ -4446,7 +4446,7 @@ static void HandleTurnActionSelectionState(void)
{
gBattlerAttacker = gActiveBattler;
gBattlescriptCurrInstr = gSelectionBattleScripts[gActiveBattler];
- if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC))))
+ if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF << 28) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 12))))
{
gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
}
@@ -5039,7 +5039,7 @@ static void HandleEndTurn_FinishBattle(void)
}
}
}
- PutPokemonTodayCaughtOnAir();
+ TryPutPokemonTodayOnAir();
}
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK
@@ -5052,7 +5052,7 @@ static void HandleEndTurn_FinishBattle(void)
| BATTLE_TYPE_WALLY_TUTORIAL))
&& gBattleResults.shinyWildMon)
{
- sub_80EE184();
+ TryPutBreakingNewsOnAir();
}
sub_8186444();
@@ -5148,7 +5148,12 @@ static void ReturnFromBattleToOverworld(void)
if (gBattleTypeFlags & BATTLE_TYPE_ROAMER)
{
UpdateRoamerHPStatus(&gEnemyParty[0]);
+
+#ifndef BUGFIX
if ((gBattleOutcome & B_OUTCOME_WON) || gBattleOutcome == B_OUTCOME_CAUGHT)
+#else
+ if ((gBattleOutcome == B_OUTCOME_WON) || gBattleOutcome == B_OUTCOME_CAUGHT) // Bug: When Roar is used by roamer, gBattleOutcome is B_OUTCOME_PLAYER_TELEPORTED (5).
+#endif // & with B_OUTCOME_WON (1) will return TRUE and deactivates the roamer.
SetRoamerInactive();
}
diff --git a/src/battle_message.c b/src/battle_message.c
index 46444a8fa..ae30a2a62 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -305,11 +305,11 @@ static const u8 sText_StatSharply[] = _("sharply ");
const u8 gText_StatRose[] = _("rose!");
static const u8 sText_StatHarshly[] = _("harshly ");
static const u8 sText_StatFell[] = _("fell!");
-static const u8 sText_PkmnsStatChanged[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}");
-const u8 gText_PkmnsStatChanged2[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}");
-static const u8 sText_UsingXTheYOfZN[] = _("Using {B_LAST_ITEM}, the {B_BUFF1}\nof {B_SCR_ACTIVE_NAME_WITH_PREFIX} {B_BUFF2}");
-static const u8 sText_PkmnsStatChanged3[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}");
-static const u8 sText_PkmnsStatChanged4[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}");
+static const u8 sText_AttackersStatRose[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}");
+const u8 gText_DefendersStatRose[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}");
+static const u8 sText_UsingItemTheStatOfPkmnRose[] = _("Using {B_LAST_ITEM}, the {B_BUFF1}\nof {B_SCR_ACTIVE_NAME_WITH_PREFIX} {B_BUFF2}");
+static const u8 sText_AttackersStatFell[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}");
+static const u8 sText_DefendersStatFell[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\n{B_BUFF2}");
static const u8 sText_StatsWontIncrease2[] = _("{B_ATK_NAME_WITH_PREFIX}'s stats won't\ngo any higher!");
static const u8 sText_StatsWontDecrease2[] = _("{B_DEF_NAME_WITH_PREFIX}'s stats won't\ngo any lower!");
static const u8 sText_CriticalHit[] = _("A critical hit!");
@@ -383,7 +383,7 @@ static const u8 sText_ThrewPokeblockAtPkmn[] = _("{B_PLAYER_NAME} threw a {POKEB
static const u8 sText_OutOfSafariBalls[] = _("{PLAY_SE SE_DING_DONG}ANNOUNCER: You're out of\nSAFARI BALLS! Game over!\p");
static const u8 sText_OpponentMon1Appeared[] = _("{B_OPPONENT_MON1_NAME} appeared!\p");
static const u8 sText_WildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p");
-static const u8 sText_WildPkmnAppeared2[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p");
+static const u8 sText_LegendaryPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p");
static const u8 sText_WildPkmnAppearedPause[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!{PAUSE 127}");
static const u8 sText_TwoWildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME} appeared!\p");
static const u8 sText_Trainer1WantsToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwould like to battle!\p");
@@ -721,10 +721,10 @@ const u8 * const gBattleStringsTable[BATTLESTRINGS_COUNT] =
[STRINGID_STATROSE - 12] = gText_StatRose,
[STRINGID_STATHARSHLY - 12] = sText_StatHarshly,
[STRINGID_STATFELL - 12] = sText_StatFell,
- [STRINGID_PKMNSSTATCHANGED - 12] = sText_PkmnsStatChanged,
- [STRINGID_PKMNSSTATCHANGED2 - 12] = gText_PkmnsStatChanged2,
- [STRINGID_PKMNSSTATCHANGED3 - 12] = sText_PkmnsStatChanged3,
- [STRINGID_PKMNSSTATCHANGED4 - 12] = sText_PkmnsStatChanged4,
+ [STRINGID_ATTACKERSSTATROSE - 12] = sText_AttackersStatRose,
+ [STRINGID_DEFENDERSSTATROSE - 12] = gText_DefendersStatRose,
+ [STRINGID_ATTACKERSSTATFELL - 12] = sText_AttackersStatFell,
+ [STRINGID_DEFENDERSSTATFELL - 12] = sText_DefendersStatFell,
[STRINGID_CRITICALHIT - 12] = sText_CriticalHit,
[STRINGID_ONEHITKO - 12] = sText_OneHitKO,
[STRINGID_123POOF - 12] = sText_123Poof,
@@ -833,7 +833,7 @@ const u8 * const gBattleStringsTable[BATTLESTRINGS_COUNT] =
[STRINGID_SOOTHINGAROMA - 12] = sText_SoothingAroma,
[STRINGID_ITEMSCANTBEUSEDNOW - 12] = sText_ItemsCantBeUsedNow,
[STRINGID_FORXCOMMAYZ - 12] = sText_ForXCommaYZ,
- [STRINGID_USINGXTHEYOFZN - 12] = sText_UsingXTheYOfZN,
+ [STRINGID_USINGITEMSTATOFPKMNROSE - 12] = sText_UsingItemTheStatOfPkmnRose,
[STRINGID_PKMNUSEDXTOGETPUMPED - 12] = sText_PkmnUsedXToGetPumped,
[STRINGID_PKMNSXMADEYUSELESS - 12] = sText_PkmnsXMadeYUseless,
[STRINGID_PKMNTRAPPEDBYSANDTOMB - 12] = sText_PkmnTrappedBySandTomb,
@@ -893,112 +893,149 @@ const u8 * const gBattleStringsTable[BATTLESTRINGS_COUNT] =
const u16 gMissStringIds[] =
{
- STRINGID_ATTACKMISSED, STRINGID_PKMNPROTECTEDITSELF,
- STRINGID_PKMNAVOIDEDATTACK, STRINGID_AVOIDEDDAMAGE,
- STRINGID_PKMNMAKESGROUNDMISS
+ [B_MSG_MISSED] = STRINGID_ATTACKMISSED,
+ [B_MSG_PROTECTED] = STRINGID_PKMNPROTECTEDITSELF,
+ [B_MSG_AVOIDED_ATK] = STRINGID_PKMNAVOIDEDATTACK,
+ [B_MSG_AVOIDED_DMG] = STRINGID_AVOIDEDDAMAGE,
+ [B_MSG_GROUND_MISS] = STRINGID_PKMNMAKESGROUNDMISS
};
const u16 gNoEscapeStringIds[] =
{
- STRINGID_CANTESCAPE, STRINGID_DONTLEAVEBIRCH, STRINGID_PREVENTSESCAPE,
- STRINGID_CANTESCAPE2, STRINGID_ATTACKERCANTESCAPE
+ [B_MSG_CANT_ESCAPE] = STRINGID_CANTESCAPE,
+ [B_MSG_DONT_LEAVE_BIRCH] = STRINGID_DONTLEAVEBIRCH,
+ [B_MSG_PREVENTS_ESCAPE] = STRINGID_PREVENTSESCAPE,
+ [B_MSG_CANT_ESCAPE_2] = STRINGID_CANTESCAPE2,
+ [B_MSG_ATTACKER_CANT_ESCAPE] = STRINGID_ATTACKERCANTESCAPE
};
const u16 gMoveWeatherChangeStringIds[] =
{
- STRINGID_STARTEDTORAIN, STRINGID_DOWNPOURSTARTED, STRINGID_BUTITFAILED,
- STRINGID_SANDSTORMBREWED, STRINGID_SUNLIGHTGOTBRIGHT, STRINGID_STARTEDHAIL
+ [B_MSG_STARTED_RAIN] = STRINGID_STARTEDTORAIN,
+ [B_MSG_STARTED_DOWNPOUR] = STRINGID_DOWNPOURSTARTED, // Unused
+ [B_MSG_WEATHER_FAILED] = STRINGID_BUTITFAILED,
+ [B_MSG_STARTED_SANDSTORM] = STRINGID_SANDSTORMBREWED,
+ [B_MSG_STARTED_SUNLIGHT] = STRINGID_SUNLIGHTGOTBRIGHT,
+ [B_MSG_STARTED_HAIL] = STRINGID_STARTEDHAIL,
};
const u16 gSandStormHailContinuesStringIds[] =
{
- STRINGID_SANDSTORMRAGES, STRINGID_HAILCONTINUES
+ [B_MSG_SANDSTORM] = STRINGID_SANDSTORMRAGES,
+ [B_MSG_HAIL] = STRINGID_HAILCONTINUES
};
const u16 gSandStormHailDmgStringIds[] =
{
- STRINGID_PKMNBUFFETEDBYSANDSTORM, STRINGID_PKMNPELTEDBYHAIL
+ [B_MSG_SANDSTORM] = STRINGID_PKMNBUFFETEDBYSANDSTORM,
+ [B_MSG_HAIL] = STRINGID_PKMNPELTEDBYHAIL
};
const u16 gSandStormHailEndStringIds[] =
{
- STRINGID_SANDSTORMSUBSIDED, STRINGID_HAILSTOPPED
+ [B_MSG_SANDSTORM] = STRINGID_SANDSTORMSUBSIDED,
+ [B_MSG_HAIL] = STRINGID_HAILSTOPPED
};
const u16 gRainContinuesStringIds[] =
{
- STRINGID_RAINCONTINUES, STRINGID_DOWNPOURCONTINUES, STRINGID_RAINSTOPPED
+ [B_MSG_RAIN_CONTINUES] = STRINGID_RAINCONTINUES,
+ [B_MSG_DOWNPOUR_CONTINUES] = STRINGID_DOWNPOURCONTINUES,
+ [B_MSG_RAIN_STOPPED] = STRINGID_RAINSTOPPED
};
const u16 gProtectLikeUsedStringIds[] =
{
- STRINGID_PKMNPROTECTEDITSELF2, STRINGID_PKMNBRACEDITSELF, STRINGID_BUTITFAILED
+ [B_MSG_PROTECTED_ITSELF] = STRINGID_PKMNPROTECTEDITSELF2,
+ [B_MSG_BRACED_ITSELF] = STRINGID_PKMNBRACEDITSELF,
+ [B_MSG_PROTECT_FAILED] = STRINGID_BUTITFAILED,
};
const u16 gReflectLightScreenSafeguardStringIds[] =
{
- STRINGID_BUTITFAILED, STRINGID_PKMNRAISEDDEF, STRINGID_PKMNRAISEDDEFALITTLE,
- STRINGID_PKMNRAISEDSPDEF, STRINGID_PKMNRAISEDSPDEFALITTLE, STRINGID_PKMNCOVEREDBYVEIL
+ [B_MSG_SIDE_STATUS_FAILED] = STRINGID_BUTITFAILED,
+ [B_MSG_SET_REFLECT_SINGLE] = STRINGID_PKMNRAISEDDEF,
+ [B_MSG_SET_REFLECT_DOUBLE] = STRINGID_PKMNRAISEDDEFALITTLE,
+ [B_MSG_SET_LIGHTSCREEN_SINGLE] = STRINGID_PKMNRAISEDSPDEF,
+ [B_MSG_SET_LIGHTSCREEN_DOUBLE] = STRINGID_PKMNRAISEDSPDEFALITTLE,
+ [B_MSG_SET_SAFEGUARD] = STRINGID_PKMNCOVEREDBYVEIL,
};
const u16 gLeechSeedStringIds[] =
{
- STRINGID_PKMNSEEDED, STRINGID_PKMNEVADEDATTACK,
- STRINGID_ITDOESNTAFFECT, STRINGID_PKMNSAPPEDBYLEECHSEED, STRINGID_ITSUCKEDLIQUIDOOZE,
+ [B_MSG_LEECH_SEED_SET] = STRINGID_PKMNSEEDED,
+ [B_MSG_LEECH_SEED_MISS] = STRINGID_PKMNEVADEDATTACK,
+ [B_MSG_LEECH_SEED_FAIL] = STRINGID_ITDOESNTAFFECT,
+ [B_MSG_LEECH_SEED_DRAIN] = STRINGID_PKMNSAPPEDBYLEECHSEED,
+ [B_MSG_LEECH_SEED_OOZE] = STRINGID_ITSUCKEDLIQUIDOOZE,
};
const u16 gRestUsedStringIds[] =
{
- STRINGID_PKMNWENTTOSLEEP, STRINGID_PKMNSLEPTHEALTHY
+ [B_MSG_REST] = STRINGID_PKMNWENTTOSLEEP,
+ [B_MSG_REST_STATUSED] = STRINGID_PKMNSLEPTHEALTHY
};
const u16 gUproarOverTurnStringIds[] =
{
- STRINGID_PKMNMAKINGUPROAR, STRINGID_PKMNCALMEDDOWN
+ [B_MSG_UPROAR_CONTINUES] = STRINGID_PKMNMAKINGUPROAR,
+ [B_MSG_UPROAR_ENDS] = STRINGID_PKMNCALMEDDOWN
};
const u16 gStockpileUsedStringIds[] =
{
- STRINGID_PKMNSTOCKPILED, STRINGID_PKMNCANTSTOCKPILE,
+ [B_MSG_STOCKPILED] = STRINGID_PKMNSTOCKPILED,
+ [B_MSG_CANT_STOCKPILE] = STRINGID_PKMNCANTSTOCKPILE,
};
const u16 gWokeUpStringIds[] =
{
- STRINGID_PKMNWOKEUP, STRINGID_PKMNWOKEUPINUPROAR
+ [B_MSG_WOKE_UP] = STRINGID_PKMNWOKEUP,
+ [B_MSG_WOKE_UP_UPROAR] = STRINGID_PKMNWOKEUPINUPROAR
};
const u16 gSwallowFailStringIds[] =
{
- STRINGID_FAILEDTOSWALLOW, STRINGID_PKMNHPFULL
+ [B_MSG_SWALLOW_FAILED] = STRINGID_FAILEDTOSWALLOW,
+ [B_MSG_SWALLOW_FULL_HP] = STRINGID_PKMNHPFULL
};
const u16 gUproarAwakeStringIds[] =
{
- STRINGID_PKMNCANTSLEEPINUPROAR2, STRINGID_UPROARKEPTPKMNAWAKE, STRINGID_PKMNSTAYEDAWAKEUSING
+ [B_MSG_CANT_SLEEP_UPROAR] = STRINGID_PKMNCANTSLEEPINUPROAR2,
+ [B_MSG_UPROAR_KEPT_AWAKE] = STRINGID_UPROARKEPTPKMNAWAKE,
+ [B_MSG_STAYED_AWAKE_USING] = STRINGID_PKMNSTAYEDAWAKEUSING,
};
const u16 gStatUpStringIds[] =
{
- STRINGID_PKMNSSTATCHANGED, STRINGID_PKMNSSTATCHANGED2, STRINGID_STATSWONTINCREASE,
- STRINGID_EMPTYSTRING3, STRINGID_USINGXTHEYOFZN, STRINGID_PKMNUSEDXTOGETPUMPED
+ [B_MSG_ATTACKER_STAT_ROSE] = STRINGID_ATTACKERSSTATROSE,
+ [B_MSG_DEFENDER_STAT_ROSE] = STRINGID_DEFENDERSSTATROSE,
+ [B_MSG_STAT_WONT_INCREASE] = STRINGID_STATSWONTINCREASE,
+ [B_MSG_STAT_ROSE_EMPTY] = STRINGID_EMPTYSTRING3,
+ [B_MSG_STAT_ROSE_ITEM] = STRINGID_USINGITEMSTATOFPKMNROSE,
+ [B_MSG_USED_DIRE_HIT] = STRINGID_PKMNUSEDXTOGETPUMPED,
};
const u16 gStatDownStringIds[] =
{
- STRINGID_PKMNSSTATCHANGED3, STRINGID_PKMNSSTATCHANGED4, STRINGID_STATSWONTDECREASE, STRINGID_EMPTYSTRING3
+ [B_MSG_ATTACKER_STAT_FELL] = STRINGID_ATTACKERSSTATFELL,
+ [B_MSG_DEFENDER_STAT_FELL] = STRINGID_DEFENDERSSTATFELL,
+ [B_MSG_STAT_WONT_DECREASE] = STRINGID_STATSWONTDECREASE,
+ [B_MSG_STAT_FELL_EMPTY] = STRINGID_EMPTYSTRING3,
};
// Index read from sTWOTURN_STRINGID
const u16 gFirstTurnOfTwoStringIds[] =
{
- STRINGID_PKMNWHIPPEDWHIRLWIND, // MOVE_RAZOR_WIND
- STRINGID_PKMNTOOKSUNLIGHT, // MOVE_SOLAR_BEAM
- STRINGID_PKMNLOWEREDHEAD, // MOVE_SKULL_BASH
- STRINGID_PKMNISGLOWING, // MOVE_SKY_ATTACK
- STRINGID_PKMNFLEWHIGH, // MOVE_FLY
- STRINGID_PKMNDUGHOLE, // MOVE_DIG
- STRINGID_PKMNHIDUNDERWATER, // MOVE_DIVE
- STRINGID_PKMNSPRANGUP // MOVE_BOUNCE
+ [B_MSG_TURN1_RAZOR_WIND] = STRINGID_PKMNWHIPPEDWHIRLWIND,
+ [B_MSG_TURN1_SOLAR_BEAM] = STRINGID_PKMNTOOKSUNLIGHT,
+ [B_MSG_TURN1_SKULL_BASH] = STRINGID_PKMNLOWEREDHEAD,
+ [B_MSG_TURN1_SKY_ATTACK] = STRINGID_PKMNISGLOWING,
+ [B_MSG_TURN1_FLY] = STRINGID_PKMNFLEWHIGH,
+ [B_MSG_TURN1_DIG] = STRINGID_PKMNDUGHOLE,
+ [B_MSG_TURN1_DIVE] = STRINGID_PKMNHIDUNDERWATER,
+ [B_MSG_TURN1_BOUNCE] = STRINGID_PKMNSPRANGUP,
};
// Index copied from move's index in gTrappingMoves
@@ -1014,89 +1051,109 @@ const u16 gWrappedStringIds[] =
const u16 gMistUsedStringIds[] =
{
- STRINGID_PKMNSHROUDEDINMIST, STRINGID_BUTITFAILED
+ [B_MSG_SET_MIST] = STRINGID_PKMNSHROUDEDINMIST,
+ [B_MSG_MIST_FAILED] = STRINGID_BUTITFAILED
};
const u16 gFocusEnergyUsedStringIds[] =
{
- STRINGID_PKMNGETTINGPUMPED, STRINGID_BUTITFAILED
+ [B_MSG_GETTING_PUMPED] = STRINGID_PKMNGETTINGPUMPED,
+ [B_MSG_FOCUS_ENERGY_FAILED] = STRINGID_BUTITFAILED
};
const u16 gTransformUsedStringIds[] =
{
- STRINGID_PKMNTRANSFORMEDINTO, STRINGID_BUTITFAILED
+ [B_MSG_TRANSFORMED] = STRINGID_PKMNTRANSFORMEDINTO,
+ [B_MSG_TRANSFORM_FAILED] = STRINGID_BUTITFAILED
};
-const u16 gSubsituteUsedStringIds[] =
+const u16 gSubstituteUsedStringIds[] =
{
- STRINGID_PKMNMADESUBSTITUTE, STRINGID_TOOWEAKFORSUBSTITUTE
+ [B_MSG_SET_SUBSTITUTE] = STRINGID_PKMNMADESUBSTITUTE,
+ [B_MSG_SUBSTITUTE_FAILED] = STRINGID_TOOWEAKFORSUBSTITUTE
};
const u16 gGotPoisonedStringIds[] =
{
- STRINGID_PKMNWASPOISONED, STRINGID_PKMNPOISONEDBY
+ [B_MSG_STATUSED] = STRINGID_PKMNWASPOISONED,
+ [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNPOISONEDBY
};
const u16 gGotParalyzedStringIds[] =
{
- STRINGID_PKMNWASPARALYZED, STRINGID_PKMNWASPARALYZEDBY
+ [B_MSG_STATUSED] = STRINGID_PKMNWASPARALYZED,
+ [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNWASPARALYZEDBY
};
const u16 gFellAsleepStringIds[] =
{
- STRINGID_PKMNFELLASLEEP, STRINGID_PKMNMADESLEEP,
+ [B_MSG_STATUSED] = STRINGID_PKMNFELLASLEEP,
+ [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNMADESLEEP,
};
const u16 gGotBurnedStringIds[] =
{
- STRINGID_PKMNWASBURNED, STRINGID_PKMNBURNEDBY
+ [B_MSG_STATUSED] = STRINGID_PKMNWASBURNED,
+ [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNBURNEDBY
};
const u16 gGotFrozenStringIds[] =
{
- STRINGID_PKMNWASFROZEN, STRINGID_PKMNFROZENBY
+ [B_MSG_STATUSED] = STRINGID_PKMNWASFROZEN,
+ [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNFROZENBY
};
const u16 gGotDefrostedStringIds[] =
{
- STRINGID_PKMNWASDEFROSTED2, STRINGID_PKMNWASDEFROSTEDBY
+ [B_MSG_DEFROSTED] = STRINGID_PKMNWASDEFROSTED2,
+ [B_MSG_DEFROSTED_BY_MOVE] = STRINGID_PKMNWASDEFROSTEDBY
};
const u16 gKOFailedStringIds[] =
{
- STRINGID_ATTACKMISSED, STRINGID_PKMNUNAFFECTED
+ [B_MSG_KO_MISS] = STRINGID_ATTACKMISSED,
+ [B_MSG_KO_UNAFFECTED] = STRINGID_PKMNUNAFFECTED
};
const u16 gAttractUsedStringIds[] =
{
- STRINGID_PKMNFELLINLOVE, STRINGID_PKMNSXINFATUATEDY
+ [B_MSG_STATUSED] = STRINGID_PKMNFELLINLOVE,
+ [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNSXINFATUATEDY
};
-const u16 gLeechSeedDrainStringIds[] =
+const u16 gAbsorbDrainStringIds[] =
{
- STRINGID_PKMNENERGYDRAINED, STRINGID_ITSUCKEDLIQUIDOOZE
+ [B_MSG_ABSORB] = STRINGID_PKMNENERGYDRAINED,
+ [B_MSG_ABSORB_OOZE] = STRINGID_ITSUCKEDLIQUIDOOZE
};
const u16 gSportsUsedStringIds[] =
{
- STRINGID_ELECTRICITYWEAKENED, STRINGID_FIREWEAKENED
+ [B_MSG_WEAKEN_ELECTRIC] = STRINGID_ELECTRICITYWEAKENED,
+ [B_MSG_WEAKEN_FIRE] = STRINGID_FIREWEAKENED
};
const u16 gPartyStatusHealStringIds[] =
{
- STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, STRINGID_BELLCHIMED,
- // interesting how there are four instances of the same string
- STRINGID_SOOTHINGAROMA
+ [B_MSG_BELL] = STRINGID_BELLCHIMED,
+ [B_MSG_BELL_SOUNDPROOF_ATTACKER] = STRINGID_BELLCHIMED,
+ [B_MSG_BELL_SOUNDPROOF_PARTNER] = STRINGID_BELLCHIMED,
+ [B_MSG_BELL_BOTH_SOUNDPROOF] = STRINGID_BELLCHIMED,
+ [B_MSG_SOOTHING_AROMA] = STRINGID_SOOTHINGAROMA
};
const u16 gFutureMoveUsedStringIds[] =
{
- STRINGID_PKMNFORESAWATTACK, STRINGID_PKMNCHOSEXASDESTINY
+ [B_MSG_FUTURE_SIGHT] = STRINGID_PKMNFORESAWATTACK,
+ [B_MSG_DOOM_DESIRE] = STRINGID_PKMNCHOSEXASDESTINY
};
const u16 gBallEscapeStringIds[] =
{
- STRINGID_PKMNBROKEFREE, STRINGID_ITAPPEAREDCAUGHT, STRINGID_AARGHALMOSTHADIT, STRINGID_SHOOTSOCLOSE
+ [BALL_NO_SHAKES] = STRINGID_PKMNBROKEFREE,
+ [BALL_1_SHAKE] = STRINGID_ITAPPEAREDCAUGHT,
+ [BALL_2_SHAKES] = STRINGID_AARGHALMOSTHADIT,
+ [BALL_3_SHAKES_FAIL] = STRINGID_SHOOTSOCLOSE
};
// Overworld weathers that don't have an associated battle weather default to "It is raining."
@@ -1122,59 +1179,82 @@ const u16 gWeatherStartsStringIds[] =
const u16 gInobedientStringIds[] =
{
- STRINGID_PKMNLOAFING, STRINGID_PKMNWONTOBEY, STRINGID_PKMNTURNEDAWAY,
- STRINGID_PKMNPRETENDNOTNOTICE, STRINGID_PKMNINCAPABLEOFPOWER
+ [B_MSG_LOAFING] = STRINGID_PKMNLOAFING,
+ [B_MSG_WONT_OBEY] = STRINGID_PKMNWONTOBEY,
+ [B_MSG_TURNED_AWAY] = STRINGID_PKMNTURNEDAWAY,
+ [B_MSG_PRETEND_NOT_NOTICE] = STRINGID_PKMNPRETENDNOTNOTICE,
+ [B_MSG_INCAPABLE_OF_POWER] = STRINGID_PKMNINCAPABLEOFPOWER
};
const u16 gSafariGetNearStringIds[] =
{
- STRINGID_CREPTCLOSER, STRINGID_CANTGETCLOSER
+ [B_MSG_CREPT_CLOSER] = STRINGID_CREPTCLOSER,
+ [B_MSG_CANT_GET_CLOSER] = STRINGID_CANTGETCLOSER
};
const u16 gSafariPokeblockResultStringIds[] =
{
- STRINGID_PKMNCURIOUSABOUTX, STRINGID_PKMNENTHRALLEDBYX, STRINGID_PKMNIGNOREDX
+ [B_MSG_MON_CURIOUS] = STRINGID_PKMNCURIOUSABOUTX,
+ [B_MSG_MON_ENTHRALLED] = STRINGID_PKMNENTHRALLEDBYX,
+ [B_MSG_MON_IGNORED] = STRINGID_PKMNIGNOREDX
};
const u16 gTrainerItemCuredStatusStringIds[] =
{
- STRINGID_PKMNSITEMSNAPPEDOUT, STRINGID_PKMNSITEMCUREDPARALYSIS, STRINGID_PKMNSITEMDEFROSTEDIT,
- STRINGID_PKMNSITEMHEALEDBURN, STRINGID_PKMNSITEMCUREDPOISON, STRINGID_PKMNSITEMWOKEIT
+ [AI_HEAL_CONFUSION] = STRINGID_PKMNSITEMSNAPPEDOUT,
+ [AI_HEAL_PARALYSIS] = STRINGID_PKMNSITEMCUREDPARALYSIS,
+ [AI_HEAL_FREEZE] = STRINGID_PKMNSITEMDEFROSTEDIT,
+ [AI_HEAL_BURN] = STRINGID_PKMNSITEMHEALEDBURN,
+ [AI_HEAL_POISON] = STRINGID_PKMNSITEMCUREDPOISON,
+ [AI_HEAL_SLEEP] = STRINGID_PKMNSITEMWOKEIT
};
const u16 gBerryEffectStringIds[] =
{
- STRINGID_PKMNSITEMCUREDPROBLEM, STRINGID_PKMNSITEMNORMALIZEDSTATUS
+ [B_MSG_CURED_PROBLEM] = STRINGID_PKMNSITEMCUREDPROBLEM,
+ [B_MSG_NORMALIZED_STATUS] = STRINGID_PKMNSITEMNORMALIZEDSTATUS
};
const u16 gBRNPreventionStringIds[] =
{
- STRINGID_PKMNSXPREVENTSBURNS, STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY
+ [B_MSG_ABILITY_PREVENTS_MOVE_STATUS] = STRINGID_PKMNSXPREVENTSBURNS,
+ [B_MSG_ABILITY_PREVENTS_ABILITY_STATUS] = STRINGID_PKMNSXPREVENTSYSZ,
+ [B_MSG_STATUS_HAD_NO_EFFECT] = STRINGID_PKMNSXHADNOEFFECTONY
};
const u16 gPRLZPreventionStringIds[] =
{
- STRINGID_PKMNPREVENTSPARALYSISWITH, STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY
+ [B_MSG_ABILITY_PREVENTS_MOVE_STATUS] = STRINGID_PKMNPREVENTSPARALYSISWITH,
+ [B_MSG_ABILITY_PREVENTS_ABILITY_STATUS] = STRINGID_PKMNSXPREVENTSYSZ,
+ [B_MSG_STATUS_HAD_NO_EFFECT] = STRINGID_PKMNSXHADNOEFFECTONY
};
const u16 gPSNPreventionStringIds[] =
{
- STRINGID_PKMNPREVENTSPOISONINGWITH, STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY
+ [B_MSG_ABILITY_PREVENTS_MOVE_STATUS] = STRINGID_PKMNPREVENTSPOISONINGWITH,
+ [B_MSG_ABILITY_PREVENTS_ABILITY_STATUS] = STRINGID_PKMNSXPREVENTSYSZ,
+ [B_MSG_STATUS_HAD_NO_EFFECT] = STRINGID_PKMNSXHADNOEFFECTONY
};
const u16 gItemSwapStringIds[] =
{
- STRINGID_PKMNOBTAINEDX, STRINGID_PKMNOBTAINEDX2, STRINGID_PKMNOBTAINEDXYOBTAINEDZ
+ [B_MSG_ITEM_SWAP_TAKEN] = STRINGID_PKMNOBTAINEDX,
+ [B_MSG_ITEM_SWAP_GIVEN] = STRINGID_PKMNOBTAINEDX2,
+ [B_MSG_ITEM_SWAP_BOTH] = STRINGID_PKMNOBTAINEDXYOBTAINEDZ
};
const u16 gFlashFireStringIds[] =
{
- STRINGID_PKMNRAISEDFIREPOWERWITH, STRINGID_PKMNSXMADEYINEFFECTIVE
+ [B_MSG_FLASH_FIRE_BOOST] = STRINGID_PKMNRAISEDFIREPOWERWITH,
+ [B_MSG_FLASH_FIRE_NO_BOOST] = STRINGID_PKMNSXMADEYINEFFECTIVE
};
const u16 gCaughtMonStringIds[] =
{
- STRINGID_PKMNTRANSFERREDSOMEONESPC, STRINGID_PKMNTRANSFERREDLANETTESPC, STRINGID_PKMNBOXSOMEONESPCFULL, STRINGID_PKMNBOXLANETTESPCFULL,
+ [B_MSG_SENT_SOMEONES_PC] = STRINGID_PKMNTRANSFERREDSOMEONESPC,
+ [B_MSG_SENT_LANETTES_PC] = STRINGID_PKMNTRANSFERREDLANETTESPC,
+ [B_MSG_SOMEONES_BOX_FULL] = STRINGID_PKMNBOXSOMEONESPCFULL,
+ [B_MSG_LANETTES_BOX_FULL] = STRINGID_PKMNBOXLANETTESPCFULL,
};
const u16 gTrappingMoves[] =
@@ -1216,14 +1296,15 @@ static const u8 sText_Defense[] = _("DEFENSE");
static const u8 sText_SpAtk[] = _("SP. ATK");
static const u8 sText_SpDef[] = _("SP. DEF");
-const u8 * const gStatNamesTable2[] =
+// Unused
+static const u8 * const sStatNamesTable2[] =
{
sText_HP, sText_SpAtk, sText_Attack,
sText_SpDef, sText_Defense, sText_Speed
};
-const u8 gText_SafariBalls[] = _("{HIGHLIGHT DARK_GREY}SAFARI BALLS");
-const u8 gText_SafariBallLeft[] = _("{HIGHLIGHT DARK_GREY}Left: $" "{HIGHLIGHT DARK_GREY}");
+const u8 gText_SafariBalls[] = _("{HIGHLIGHT DARK_GRAY}SAFARI BALLS");
+const u8 gText_SafariBallLeft[] = _("{HIGHLIGHT DARK_GRAY}Left: $" "{HIGHLIGHT DARK_GRAY}");
const u8 gText_Sleep[] = _("sleep");
const u8 gText_Poison[] = _("poison");
const u8 gText_Burn[] = _("burn");
@@ -1247,7 +1328,7 @@ static const u8 sText_SpaceIs[] = _(" is");
static const u8 sText_ApostropheS[] = _("'s");
// For displaying names of invalid moves
-static const u8 sATypeMove_Table[][NUMBER_OF_MON_TYPES - 1] =
+static const u8 sATypeMove_Table[NUMBER_OF_MON_TYPES][17] =
{
[TYPE_NORMAL] = _("a NORMAL move"),
[TYPE_FIGHTING] = _("a FIGHTING move"),
@@ -1309,10 +1390,10 @@ static const u8 sText_PkmnEagerForMore[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is
const u16 gBattlePalaceFlavorTextTable[] =
{
- STRINGID_GLINTAPPEARSINEYE,
- STRINGID_PKMNGETTINGINTOPOSITION,
- STRINGID_PKMNBEGANGROWLINGDEEPLY,
- STRINGID_PKMNEAGERFORMORE
+ [B_MSG_GLINT_IN_EYE] = STRINGID_GLINTAPPEARSINEYE,
+ [B_MSG_GETTING_IN_POS] = STRINGID_PKMNGETTINGINTOPOSITION,
+ [B_MSG_GROWL_DEEPLY] = STRINGID_PKMNBEGANGROWLINGDEEPLY,
+ [B_MSG_EAGER_FOR_MORE] = STRINGID_PKMNEAGERFORMORE,
};
static const u8 sText_RefIfNothingIsDecided[] = _("REFEREE: If nothing is decided in\n3 turns, we will go to judging!");
@@ -1320,9 +1401,9 @@ static const u8 sText_RefThatsIt[] = _("REFEREE: That's it! We will now go to\nj
static const u8 sText_RefJudgeMind[] = _("REFEREE: Judging category 1, Mind!\nThe POKéMON showing the most guts!\p");
static const u8 sText_RefJudgeSkill[] = _("REFEREE: Judging category 2, Skill!\nThe POKéMON using moves the best!\p");
static const u8 sText_RefJudgeBody[] = _("REFEREE: Judging category 3, Body!\nThe POKéMON with the most vitality!\p");
-static const u8 sText_RefJudgement1[] = _("REFEREE: Judgment: {B_BUFF1} to {B_BUFF2}!\nThe winner is {B_PLAYER_NAME}'s {B_PLAYER_MON1_NAME}!\p");
-static const u8 sText_RefJudgement2[] = _("REFEREE: Judgment: {B_BUFF1} to {B_BUFF2}!\nThe winner is {B_TRAINER1_NAME}'s {B_OPPONENT_MON1_NAME}!\p");
-static const u8 sText_RefJudgement3[] = _("REFEREE: Judgment: 3 to 3!\nWe have a draw!\p");
+static const u8 sText_RefPlayerWon[] = _("REFEREE: Judgment: {B_BUFF1} to {B_BUFF2}!\nThe winner is {B_PLAYER_NAME}'s {B_PLAYER_MON1_NAME}!\p");
+static const u8 sText_RefOpponentWon[] = _("REFEREE: Judgment: {B_BUFF1} to {B_BUFF2}!\nThe winner is {B_TRAINER1_NAME}'s {B_OPPONENT_MON1_NAME}!\p");
+static const u8 sText_RefDraw[] = _("REFEREE: Judgment: 3 to 3!\nWe have a draw!\p");
static const u8 sText_DefeatedOpponentByReferee[] = _("{B_PLAYER_MON1_NAME} defeated the opponent\n{B_OPPONENT_MON1_NAME} in a REFEREE's decision!");
static const u8 sText_LostToOpponentByReferee[] = _("{B_PLAYER_MON1_NAME} lost to the opponent\n{B_OPPONENT_MON1_NAME} in a REFEREE's decision!");
static const u8 sText_TiedOpponentByReferee[] = _("{B_PLAYER_MON1_NAME} tied the opponent\n{B_OPPONENT_MON1_NAME} in a REFEREE's decision!");
@@ -1330,15 +1411,15 @@ static const u8 sText_RefCommenceBattle[] = _("REFEREE: {B_PLAYER_MON1_NAME} VS
const u8 * const gRefereeStringsTable[] =
{
- sText_RefIfNothingIsDecided,
- sText_RefThatsIt,
- sText_RefJudgeMind,
- sText_RefJudgeSkill,
- sText_RefJudgeBody,
- sText_RefJudgement1,
- sText_RefJudgement2,
- sText_RefJudgement3,
- sText_RefCommenceBattle,
+ [B_MSG_REF_NOTHING_IS_DECIDED] = sText_RefIfNothingIsDecided,
+ [B_MSG_REF_THATS_IT] = sText_RefThatsIt,
+ [B_MSG_REF_JUDGE_MIND] = sText_RefJudgeMind,
+ [B_MSG_REF_JUDGE_SKILL] = sText_RefJudgeSkill,
+ [B_MSG_REF_JUDGE_BODY] = sText_RefJudgeBody,
+ [B_MSG_REF_PLAYER_WON] = sText_RefPlayerWon,
+ [B_MSG_REF_OPPONENT_WON] = sText_RefOpponentWon,
+ [B_MSG_REF_DRAW] = sText_RefDraw,
+ [B_MSG_REF_COMMENCE_BATTLE] = sText_RefCommenceBattle,
};
static const u8 sText_QuestionForfeitMatch[] = _("Would you like to forfeit the match\nand quit now?");
@@ -2044,7 +2125,7 @@ void BufferStringBattle(u16 stringID)
else
{
if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY)
- stringPtr = sText_WildPkmnAppeared2;
+ stringPtr = sText_LegendaryPkmnAppeared;
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) // interesting, looks like they had something planned for wild double battles
stringPtr = sText_TwoWildPkmnAppeared;
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
diff --git a/src/battle_pike.c b/src/battle_pike.c
index ed89f5ed9..d889d7cdd 100644
--- a/src/battle_pike.c
+++ b/src/battle_pike.c
@@ -711,7 +711,7 @@ static void SavePikeChallenge(void)
gSaveBlock2Ptr->frontier.challengeStatus = gSpecialVar_0x8005;
VarSet(VAR_TEMP_0, 0);
gSaveBlock2Ptr->frontier.challengePaused = TRUE;
- save_serialize_map();
+ SaveMapView();
TrySavingData(SAVE_LINK);
}
diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c
index ac6d95338..50efeecb4 100644
--- a/src/battle_pyramid.c
+++ b/src/battle_pyramid.c
@@ -933,7 +933,7 @@ static void SavePyramidChallenge(void)
gSaveBlock2Ptr->frontier.challengeStatus = gSpecialVar_0x8005;
VarSet(VAR_TEMP_0, 0);
gSaveBlock2Ptr->frontier.challengePaused = TRUE;
- save_serialize_map();
+ SaveMapView();
TrySavingData(SAVE_LINK);
}
@@ -1399,8 +1399,12 @@ void GenerateBattlePyramidWildMon(void)
for (i = 0; i < MAX_MON_MOVES; i++)
SetMonMoveSlot(&gEnemyParty[0], wildMons[id].moves[i], i);
- // BUG: Reading outside the array as lvl was used for mon level instead of frontier lvl mode.
+ // UB: Reading outside the array as lvl was used for mon level instead of frontier lvl mode.
+ #ifndef UBFIX
if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvl] >= 140)
+ #else
+ if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[gSaveBlock2Ptr->frontier.lvlMode] >= 140)
+ #endif
{
id = (Random() % 17) + 15;
for (i = 0; i < NUM_STATS; i++)
diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c
index f39bbf522..266b85415 100644
--- a/src/battle_pyramid_bag.c
+++ b/src/battle_pyramid_bag.c
@@ -34,71 +34,83 @@
#include "constants/rgb.h"
#include "constants/songs.h"
-EWRAM_DATA struct PyramidBagResources *gPyramidBagResources = NULL;
-EWRAM_DATA struct PyramidBagCursorData gPyramidBagCursorData = {0};
-
-// This file's functions.
-static void Task_HandlePyramidBagInput(u8 taskId);
-static void Task_ChooseItemsToTossFromPyramidBag(u8 taskId);
-static void sub_81C5B4C(u8 taskId);
-static void Task_BeginItemSwap(u8 taskId);
-static void sub_81C5D20(u8 taskId);
-static void sub_81C674C(u8 taskId);
-static void HandleMenuActionInput(u8 taskId);
-static void HandleFewMenuActionsInput(u8 taskId);
-static void sub_81C66EC(u8 taskId);
-static void SetTaskToMainPyramidBagInputHandler(u8 taskId);
-static void sub_81C6350(u8 taskId);
-static void sub_81C64B4(u8 taskId);
-static void sub_81C65CC(u8 taskId);
-static void sub_81C66AC(u8 taskId);
-static void PerformItemSwap(u8 taskId);
-static void Task_ItemSwapHandleInput(u8 taskId);
-static void sub_81C6A14(u8 taskId);
+#define TAG_SCROLL_ARROW 2910
+#define TAG_PYRAMID_BAG 4132
+#define TAG_ITEM_ICON 4133
+#define TAG_ITEM_ICON_ALT 4134
+
+#define POS_NONE ((u8)-1)
+
+enum {
+ WIN_LIST,
+ WIN_INFO,
+ WIN_MSG,
+ WIN_TOSS_NUM,
+};
+
+EWRAM_DATA struct PyramidBagMenu *gPyramidBagMenu = NULL;
+EWRAM_DATA struct PyramidBagMenuState gPyramidBagMenuState = {0};
+
+static void Task_HandlePyramidBagInput(u8);
+static void Task_ChooseItemsToTossFromPyramidBag(u8);
+static void Task_ClosePyramidBag(u8);
+static void Task_BeginItemSwap(u8);
+static void OpenContextMenu(u8);
+static void TryCloseBagToGiveItem(u8);
+static void HandleMenuActionInput_2x2(u8);
+static void HandleMenuActionInput_SingleRow(u8);
+static void Task_WaitCloseErrorMessage(u8);
+static void SetTaskToMainPyramidBagInputHandler(u8);
+static void AskConfirmToss(u8);
+static void Task_ChooseHowManyToToss(u8);
+static void Task_TossItem(u8);
+static void ShowCantHoldMessage(u8);
+static void PerformItemSwap(u8);
+static void Task_ItemSwapHandleInput(u8);
+static void CancelItemSwap(u8);
static void SetBagItemsListTemplate(void);
-static void sub_81C504C(void);
-static void sub_81C51DC(void);
-static void AddScrollArrow(void);
-static void sub_81C56F8(void);
-static void sub_81C5A20(void);
-static void sub_81C6BD8(void);
-static void sub_81C6EF4(void);
-static void sub_81C700C(void);
-static void sub_81C6E98(void);
-static void sub_81C6F20(void);
-static void sub_81C6404(void);
+static void CB2_LoadPyramidBagMenu(void);
+static void InitPyramidBagBgs(void);
+static void AddScrollArrows(void);
+static void CreatePyramidBagInputTask(void);
+static void InitPyramidBagScroll(void);
+static void InitPyramidBagWindows(void);
+static void CreatePyramidBagSprite(void);
+static void CreateSwapLine(void);
+static void LoadPyramidBagPalette(void);
+static void ShakePyramidBag(void);
+static void ShowNumToToss(void);
static void CloseBattlePyramidBagTextWindow(void);
-static bool8 sub_81C5238(void);
-static bool8 sub_81C5078(void);
-static void ShowItemImage(u16 itemId, u8 itemSpriteArrayId);
-static void PyramidBag_CopyItemName(u8 *dst, u16 itemId);
-static void sub_81C6FF8(u8 arg0);
-static void PrintItemDescription(s32 listMenuId);
-static void sub_81C5AB8(u8 y, u8 arg1);
-static void PrintOnWindow_Font1(u8 windowId, const u8 *src, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorTableId);
-static void PrintOnWindow_Font7(u8 windowId, const u8 *src, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorTableId);
-static u8 sub_81C6D24(u8 windowArrayId);
-static void sub_81C6D6C(u8 windowArrayId);
-static void sub_81C5EAC(u8 windowId);
-static void sub_81C5F08(u8 windowId, u8 horizontalCount, u8 verticalCount);
-static bool8 IsValidMenuAction(s8 arg0);
-static void sub_81C6DAC(u8 taskId, const struct YesNoFuncTable *yesNoTable);
-static void sub_81C6CEC(u8 windowId);
-static void sub_81C704C(u8 y);
-static void sub_81C7028(bool8 invisible);
-static void sub_81C6F68(struct Sprite *sprite);
-static void BagAction_UseOnField(u8 taskId);
-static void BagAction_Toss(u8 taskId);
-static void BagAction_Give(u8 taskId);
-static void BagAction_Cancel(u8 taskId);
-static void BagAction_UseInBattle(u8 taskId);
-static void PyramidBagMoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list);
-static void PrintItemQuantity(u8 windowId, s32 itemIndex, u8 y);
-static void TossItem(u8 taskId);
-static void DontTossItem(u8 taskId);
-
-// Const rom data.
-static const struct BgTemplate gUnknown_0861F2B4[] =
+static bool8 LoadPyramidBagGfx(void);
+static bool8 LoadPyramidBagMenu(void);
+static void ShowItemIcon(u16, u8);
+static void CopyBagItemName(u8 *, u16);
+static void FreeItemIconSpriteByAltId(u8);
+static void PrintItemDescription(s32);
+static void PrintSelectorArrowAtPos(u8, u8);
+static void PrintOnWindow_Font1(u8, const u8 *, u8, u8, u8, u8, u8, u8);
+static void PrintOnWindow_Font7(u8, const u8 *, u8, u8, u8, u8, u8, u8);
+static u8 OpenMenuActionWindowById(u8);
+static void CloseMenuActionWindowById(u8);
+static void PrintMenuActionText_SingleRow(u8);
+static void PrintMenuActionText_MultiRow(u8, u8, u8);
+static bool8 IsValidMenuAction(s8);
+static void CreatePyramidBagYesNo(u8, const struct YesNoFuncTable *);
+static void DrawTossNumberWindow(u8);
+static void UpdateSwapLinePos(u8);
+static void SetSwapLineInvisibility(bool8);
+static void SpriteCB_BagWaitForShake(struct Sprite *);
+static void BagAction_UseOnField(u8);
+static void BagAction_Toss(u8);
+static void BagAction_Give(u8);
+static void BagAction_Cancel(u8);
+static void BagAction_UseInBattle(u8);
+static void BagCursorMoved(s32, bool8, struct ListMenu *);
+static void PrintItemQuantity(u8 windowId, u32 itemId, u8 y);
+static void TossItem(u8);
+static void DontTossItem(u8);
+
+static const struct BgTemplate sBgTemplates[] =
{
{
.bg = 0,
@@ -129,14 +141,14 @@ static const struct BgTemplate gUnknown_0861F2B4[] =
},
};
-static const struct ListMenuTemplate gUnknown_0861F2C0 =
+static const struct ListMenuTemplate sListMenuTemplate =
{
.items = NULL,
- .moveCursorFunc = PyramidBagMoveCursorFunc,
+ .moveCursorFunc = BagCursorMoved,
.itemPrintFunc = PrintItemQuantity,
.totalItems = 0,
.maxShowed = 0,
- .windowId = 0,
+ .windowId = WIN_LIST,
.header_X = 0,
.item_X = 8,
.cursor_X = 0,
@@ -151,12 +163,14 @@ static const struct ListMenuTemplate gUnknown_0861F2C0 =
.cursorKind = 0
};
-#define ACTION_USE_FIELD 0
-#define ACTION_TOSS 1
-#define ACTION_GIVE 2
-#define ACTION_CANCEL 3
-#define ACTION_USE_BATTLE 4
-#define ACTION_DUMMY 5
+enum {
+ ACTION_USE_FIELD,
+ ACTION_TOSS,
+ ACTION_GIVE,
+ ACTION_CANCEL,
+ ACTION_USE_BATTLE,
+ ACTION_DUMMY,
+};
static const struct MenuAction sMenuActions[] =
{
@@ -168,26 +182,33 @@ static const struct MenuAction sMenuActions[] =
[ACTION_DUMMY] = { gText_EmptyString2, NULL },
};
-static const u8 sFieldMenuActionIds[] = {ACTION_USE_FIELD, ACTION_GIVE, ACTION_TOSS, ACTION_CANCEL};
-static const u8 gUnknown_0861F30C[] = {ACTION_TOSS, ACTION_CANCEL};
-static const u8 sBattleMenuActionIds[] = {ACTION_USE_BATTLE, ACTION_CANCEL};
-static const u8 gUnknown_0861F310[] = {ACTION_CANCEL};
+static const u8 sMenuActionIds_Field[] = {ACTION_USE_FIELD, ACTION_GIVE, ACTION_TOSS, ACTION_CANCEL};
+static const u8 sMenuActionIds_ChooseToss[] = {ACTION_TOSS, ACTION_CANCEL};
+static const u8 sMenuActionIds_Battle[] = {ACTION_USE_BATTLE, ACTION_CANCEL};
+static const u8 sMenuActionIds_BattleCannotUse[] = {ACTION_CANCEL};
static const struct YesNoFuncTable sYesNoTossFuncions =
{
TossItem, DontTossItem
};
-static const u8 sColorTable[][3] =
+enum {
+ COLORID_DARK_GRAY,
+ COLORID_LIGHT_GRAY,
+ COLORID_WHITE_BG,
+ COLORID_NONE = 0xFF
+};
+
+static const u8 sTextColors[][3] =
{
- {0, 2, 3},
- {0, 3, 1},
- {1, 2, 3},
+ [COLORID_DARK_GRAY] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY},
+ [COLORID_LIGHT_GRAY] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_GRAY, TEXT_COLOR_WHITE},
+ [COLORID_WHITE_BG] = {TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY}, // Unused
};
-static const struct WindowTemplate gUnknown_0861F328[] =
+static const struct WindowTemplate sWindowTemplates[] =
{
- {
+ [WIN_LIST] = {
.bg = 0,
.tilemapLeft = 14,
.tilemapTop = 2,
@@ -196,7 +217,7 @@ static const struct WindowTemplate gUnknown_0861F328[] =
.paletteNum = 15,
.baseBlock = 30
},
- {
+ [WIN_INFO] = {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 13,
@@ -205,7 +226,7 @@ static const struct WindowTemplate gUnknown_0861F328[] =
.paletteNum = 15,
.baseBlock = 270
},
- {
+ [WIN_MSG] = {
.bg = 1,
.tilemapLeft = 2,
.tilemapTop = 15,
@@ -214,7 +235,7 @@ static const struct WindowTemplate gUnknown_0861F328[] =
.paletteNum = 15,
.baseBlock = 354
},
- {
+ [WIN_TOSS_NUM] = {
.bg = 1,
.tilemapLeft = 24,
.tilemapTop = 17,
@@ -226,9 +247,17 @@ static const struct WindowTemplate gUnknown_0861F328[] =
DUMMY_WIN_TEMPLATE,
};
-static const struct WindowTemplate gUnknown_0861F350[] =
+enum {
+ MENU_WIN_1x1,
+ MENU_WIN_1x2,
+ MENU_WIN_2x2,
+ MENU_WIN_2x3,
+ MENU_WIN_YESNO,
+};
+
+static const struct WindowTemplate sWindowTemplates_MenuActions[] =
{
- {
+ [MENU_WIN_1x1] = {
.bg = 1,
.tilemapLeft = 22,
.tilemapTop = 17,
@@ -237,7 +266,7 @@ static const struct WindowTemplate gUnknown_0861F350[] =
.paletteNum = 15,
.baseBlock = 472
},
- {
+ [MENU_WIN_1x2] = {
.bg = 1,
.tilemapLeft = 22,
.tilemapTop = 15,
@@ -246,7 +275,7 @@ static const struct WindowTemplate gUnknown_0861F350[] =
.paletteNum = 15,
.baseBlock = 472
},
- {
+ [MENU_WIN_2x2] = {
.bg = 1,
.tilemapLeft = 15,
.tilemapTop = 15,
@@ -255,7 +284,7 @@ static const struct WindowTemplate gUnknown_0861F350[] =
.paletteNum = 15,
.baseBlock = 472
},
- {
+ [MENU_WIN_2x3] = { // Unused
.bg = 1,
.tilemapLeft = 15,
.tilemapTop = 13,
@@ -264,7 +293,7 @@ static const struct WindowTemplate gUnknown_0861F350[] =
.paletteNum = 15,
.baseBlock = 472
},
- {
+ [MENU_WIN_YESNO] = {
.bg = 1,
.tilemapLeft = 24,
.tilemapTop = 15,
@@ -275,7 +304,7 @@ static const struct WindowTemplate gUnknown_0861F350[] =
},
};
-static const struct OamData gOamData_861F378 =
+static const struct OamData sOamData_PyramidBag =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_NORMAL,
@@ -292,24 +321,24 @@ static const struct OamData gOamData_861F378 =
.affineParam = 0,
};
-static const union AnimCmd gSpriteAnim_861F380[] =
+static const union AnimCmd sAnim_PyramidBag[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_END,
};
-static const union AnimCmd * const gSpriteAnimTable_861F388[] =
+static const union AnimCmd * const sAnims_PyramidBag[] =
{
- gSpriteAnim_861F380,
+ sAnim_PyramidBag,
};
-static const union AffineAnimCmd gSpriteAffineAnim_861F38C[] =
+static const union AffineAnimCmd sAffineAnim_PyramidBag_Still[] =
{
AFFINEANIMCMD_FRAME(256, 256, 0, 0),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd gSpriteAffineAnim_861F39C[] =
+static const union AffineAnimCmd sAffineAnim_PyramidBag_Shake[] =
{
AFFINEANIMCMD_FRAME(0, 0, 254, 2),
AFFINEANIMCMD_FRAME(0, 0, 2, 4),
@@ -318,42 +347,50 @@ static const union AffineAnimCmd gSpriteAffineAnim_861F39C[] =
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd * const gSpriteAffineAnimTable_861F3C4[] =
+enum {
+ ANIM_BAG_STILL,
+ ANIM_BAG_SHAKE,
+};
+
+static const union AffineAnimCmd * const sAffineAnims_PyramidBag[] =
{
- gSpriteAffineAnim_861F38C,
- gSpriteAffineAnim_861F39C,
+ [ANIM_BAG_STILL] = sAffineAnim_PyramidBag_Still,
+ [ANIM_BAG_SHAKE] = sAffineAnim_PyramidBag_Shake,
};
-static const struct CompressedSpriteSheet gPyramidBagSpriteSheet = {gBattleFrontierGfx_PyramidBag, 0x0800, 0x1024};
+static const struct CompressedSpriteSheet sSpriteSheet_PyramidBag = {gBattleFrontierGfx_PyramidBag, 0x0800, TAG_PYRAMID_BAG};
-static const struct SpriteTemplate gUnknown_0861F3D4 =
+static const struct SpriteTemplate sSpriteTemplate_PyramidBag =
{
- .tileTag = 0x1024,
- .paletteTag = 0x1024,
- .oam = &gOamData_861F378,
- .anims = gSpriteAnimTable_861F388,
+ .tileTag = TAG_PYRAMID_BAG,
+ .paletteTag = TAG_PYRAMID_BAG,
+ .oam = &sOamData_PyramidBag,
+ .anims = sAnims_PyramidBag,
.images = NULL,
- .affineAnims = gSpriteAffineAnimTable_861F3C4,
+ .affineAnims = sAffineAnims_PyramidBag,
.callback = SpriteCallbackDummy
};
-// code
void InitBattlePyramidBagCursorPosition(void)
{
- gPyramidBagCursorData.cursorPosition = 0;
- gPyramidBagCursorData.scrollPosition = 0;
+ gPyramidBagMenuState.cursorPosition = 0;
+ gPyramidBagMenuState.scrollPosition = 0;
}
void CB2_PyramidBagMenuFromStartMenu(void)
{
- GoToBattlePyramidBagMenu(0, CB2_ReturnToFieldWithOpenMenu);
+ GoToBattlePyramidBagMenu(PYRAMIDBAG_LOC_FIELD, CB2_ReturnToFieldWithOpenMenu);
}
-static void sub_81C4F10(void)
+// Unused, CB2_BagMenuFromBattle is used instead
+static void OpenBattlePyramidBagInBattle(void)
{
- GoToBattlePyramidBagMenu(1, CB2_SetUpReshowBattleScreenAfterMenu2);
+ GoToBattlePyramidBagMenu(PYRAMIDBAG_LOC_BATTLE, CB2_SetUpReshowBattleScreenAfterMenu2);
}
+// If the player finishes a round at the Battle Pyramid with insufficient space in their
+// Pyramid Bag to store the party's held items, they may choose items to toss in order to
+// make room.
void ChooseItemsToTossFromPyramidBag(void)
{
ScriptContext2_Enable();
@@ -367,37 +404,37 @@ static void Task_ChooseItemsToTossFromPyramidBag(u8 taskId)
{
CleanupOverworldWindowsAndTilemaps();
gFieldCallback2 = CB2_FadeFromPartyMenu;
- GoToBattlePyramidBagMenu(3, CB2_ReturnToField);
+ GoToBattlePyramidBagMenu(PYRAMIDBAG_LOC_CHOOSE_TOSS, CB2_ReturnToField);
DestroyTask(taskId);
}
}
void CB2_ReturnToPyramidBagMenu(void)
{
- GoToBattlePyramidBagMenu(4, gPyramidBagCursorData.callback);
+ GoToBattlePyramidBagMenu(PYRAMIDBAG_LOC_PREV, gPyramidBagMenuState.callback);
}
-void GoToBattlePyramidBagMenu(u8 a0, void (*callback)(void))
+void GoToBattlePyramidBagMenu(u8 location, void (*callback)(void))
{
- gPyramidBagResources = AllocZeroed(sizeof(*gPyramidBagResources));
+ gPyramidBagMenu = AllocZeroed(sizeof(*gPyramidBagMenu));
- if (a0 != 4)
- gPyramidBagCursorData.unk4 = a0;
+ if (location != PYRAMIDBAG_LOC_PREV)
+ gPyramidBagMenuState.location = location;
if (callback != NULL)
- gPyramidBagCursorData.callback = callback;
+ gPyramidBagMenuState.callback = callback;
- gPyramidBagResources->callback2 = NULL;
- gPyramidBagResources->unk814 = 0xFF;
- gPyramidBagResources->scrollIndicatorsTaskId = TASK_NONE;
+ gPyramidBagMenu->exitCallback = NULL;
+ gPyramidBagMenu->toSwapPos = POS_NONE;
+ gPyramidBagMenu->scrollIndicatorsTaskId = TASK_NONE;
- memset(gPyramidBagResources->itemsSpriteIds, 0xFF, sizeof(gPyramidBagResources->itemsSpriteIds));
- memset(gPyramidBagResources->windowIds, WINDOW_NONE, sizeof(gPyramidBagResources->windowIds));
+ memset(gPyramidBagMenu->spriteIds, SPRITE_NONE, sizeof(gPyramidBagMenu->spriteIds));
+ memset(gPyramidBagMenu->windowIds, WINDOW_NONE, sizeof(gPyramidBagMenu->windowIds));
- SetMainCallback2(sub_81C504C);
+ SetMainCallback2(CB2_LoadPyramidBagMenu);
}
-static void sub_81C501C(void)
+static void CB2_PyramidBag(void)
{
RunTasks();
AnimateSprites();
@@ -406,19 +443,21 @@ static void sub_81C501C(void)
UpdatePaletteFade();
}
-static void sub_81C5038(void)
+static void VBlankCB_PyramidBag(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
-static void sub_81C504C(void)
+static void CB2_LoadPyramidBagMenu(void)
{
- while (MenuHelpers_CallLinkSomething() != TRUE && sub_81C5078() != TRUE && MenuHelpers_LinkSomething() != TRUE);
+ while (MenuHelpers_CallLinkSomething() != TRUE
+ && LoadPyramidBagMenu() != TRUE
+ && MenuHelpers_LinkSomething() != TRUE);
}
-static bool8 sub_81C5078(void)
+static bool8 LoadPyramidBagMenu(void)
{
switch (gMain.state)
{
@@ -446,30 +485,26 @@ static bool8 sub_81C5078(void)
break;
case 5:
if (!MenuHelpers_LinkSomething())
- {
ResetTasks();
- }
gMain.state++;
break;
case 6:
- sub_81C51DC();
- gPyramidBagResources->state = 0;
+ InitPyramidBagBgs();
+ gPyramidBagMenu->state = 0;
gMain.state++;
break;
case 7:
- if (sub_81C5238())
- {
+ if (LoadPyramidBagGfx())
gMain.state++;
- }
break;
case 8:
- sub_81C6BD8();
+ InitPyramidBagWindows();
gMain.state++;
break;
case 9:
- sub_81C5924();
- sub_81C59BC();
- sub_81C5A20();
+ UpdatePyramidBagList();
+ UpdatePyramidBagCursorPos();
+ InitPyramidBagScroll();
gMain.state++;
break;
case 10:
@@ -477,44 +512,44 @@ static bool8 sub_81C5078(void)
gMain.state++;
break;
case 11:
- sub_81C56F8();
+ CreatePyramidBagInputTask();
gMain.state++;
break;
case 12:
- sub_81C6EF4();
+ CreatePyramidBagSprite();
gMain.state++;
break;
case 13:
- AddScrollArrow();
+ AddScrollArrows();
gMain.state++;
break;
case 14:
- sub_81C700C();
+ CreateSwapLine();
gMain.state++;
break;
case 15:
- BlendPalettes(PALETTES_ALL, 0x10, 0);
+ BlendPalettes(PALETTES_ALL, 16, 0);
gMain.state++;
break;
case 16:
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK);
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK);
gPaletteFade.bufferTransferDisabled = FALSE;
gMain.state++;
break;
default:
- SetVBlankCallback(sub_81C5038);
- SetMainCallback2(sub_81C501C);
+ SetVBlankCallback(VBlankCB_PyramidBag);
+ SetMainCallback2(CB2_PyramidBag);
return TRUE;
}
return FALSE;
}
-static void sub_81C51DC(void)
+static void InitPyramidBagBgs(void)
{
ResetVramOamAndBgCntRegs();
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_0861F2B4, ARRAY_COUNT(gUnknown_0861F2B4));
- SetBgTilemapBuffer(2, gPyramidBagResources->tilemapBuffer);
+ InitBgsFromTemplates(0, sBgTemplates, ARRAY_COUNT(sBgTemplates));
+ SetBgTilemapBuffer(2, gPyramidBagMenu->tilemapBuffer);
ResetAllBgsCoordinates();
ScheduleBgCopyTilemapToVram(2);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 |
@@ -526,37 +561,37 @@ static void sub_81C51DC(void)
SetGpuReg(REG_OFFSET_BLDCNT, 0);
}
-static bool8 sub_81C5238(void)
+static bool8 LoadPyramidBagGfx(void)
{
- switch (gPyramidBagResources->state)
+ switch (gPyramidBagMenu->state)
{
case 0:
ResetTempTileDataBuffers();
DecompressAndCopyTileDataToVram(2, gBagScreen_Gfx, 0, 0, 0);
- gPyramidBagResources->state++;
+ gPyramidBagMenu->state++;
break;
case 1:
if (FreeTempTileDataBuffersIfPossible() != TRUE)
{
- LZDecompressWram(gBattleFrontierGfx_PyramidBagTileMap, gPyramidBagResources->tilemapBuffer);
- gPyramidBagResources->state++;
+ LZDecompressWram(gBattleFrontierGfx_PyramidBagTileMap, gPyramidBagMenu->tilemapBuffer);
+ gPyramidBagMenu->state++;
}
break;
case 2:
- LoadCompressedPalette(gUnknown_08D9AF44, 0, 0x20);
- gPyramidBagResources->state++;
+ LoadCompressedPalette(gUnknown_08D9AF44, 0, 32);
+ gPyramidBagMenu->state++;
break;
case 3:
- LoadCompressedSpriteSheet(&gPyramidBagSpriteSheet);
- gPyramidBagResources->state++;
+ LoadCompressedSpriteSheet(&sSpriteSheet_PyramidBag);
+ gPyramidBagMenu->state++;
break;
case 4:
- sub_81C6E98();
- gPyramidBagResources->state++;
+ LoadPyramidBagPalette();
+ gPyramidBagMenu->state++;
break;
default:
- LoadListMenuArrowsGfx();
- gPyramidBagResources->state = 0;
+ LoadListMenuSwapLineGfx();
+ gPyramidBagMenu->state = 0;
return TRUE;
}
@@ -566,24 +601,24 @@ static bool8 sub_81C5238(void)
static void SetBagItemsListTemplate(void)
{
u16 i;
- u16 *pyramidItems = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode];
+ u16 *itemIds = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode];
- for (i = 0; i < gPyramidBagResources->listMenuCount - 1; i++)
+ for (i = 0; i < gPyramidBagMenu->listMenuCount - 1; i++)
{
- PyramidBag_CopyItemName(gPyramidBagResources->itemStrings[i], pyramidItems[i]);
- gPyramidBagResources->bagListItems[i].name = gPyramidBagResources->itemStrings[i];
- gPyramidBagResources->bagListItems[i].id = i;
+ CopyBagItemName(gPyramidBagMenu->itemStrings[i], itemIds[i]);
+ gPyramidBagMenu->bagListItems[i].name = gPyramidBagMenu->itemStrings[i];
+ gPyramidBagMenu->bagListItems[i].id = i;
}
- StringCopy(gPyramidBagResources->itemStrings[i], gText_CloseBag);
- gPyramidBagResources->bagListItems[i].name = gPyramidBagResources->itemStrings[i];
- gPyramidBagResources->bagListItems[i].id = LIST_CANCEL;
- gMultiuseListMenuTemplate = gUnknown_0861F2C0;
- gMultiuseListMenuTemplate.totalItems = gPyramidBagResources->listMenuCount;
- gMultiuseListMenuTemplate.items = gPyramidBagResources->bagListItems;
- gMultiuseListMenuTemplate.maxShowed = gPyramidBagResources->listMenuMaxShown;
+ StringCopy(gPyramidBagMenu->itemStrings[i], gText_CloseBag);
+ gPyramidBagMenu->bagListItems[i].name = gPyramidBagMenu->itemStrings[i];
+ gPyramidBagMenu->bagListItems[i].id = LIST_CANCEL;
+ gMultiuseListMenuTemplate = sListMenuTemplate;
+ gMultiuseListMenuTemplate.totalItems = gPyramidBagMenu->listMenuCount;
+ gMultiuseListMenuTemplate.items = gPyramidBagMenu->bagListItems;
+ gMultiuseListMenuTemplate.maxShowed = gPyramidBagMenu->listMenuMaxShown;
}
-static void PyramidBag_CopyItemName(u8 *dst, u16 itemId)
+static void CopyBagItemName(u8 *dst, u16 itemId)
{
if (ItemId_GetPocket(itemId) == POCKET_BERRIES)
{
@@ -597,45 +632,48 @@ static void PyramidBag_CopyItemName(u8 *dst, u16 itemId)
}
}
-static void PyramidBagMoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list)
+static void BagCursorMoved(s32 itemIndex, bool8 onInit, struct ListMenu *list)
{
if (onInit != TRUE)
{
PlaySE(SE_SELECT);
- sub_81C6F20();
+ ShakePyramidBag();
}
- if (gPyramidBagResources->unk814 == 0xFF)
+ if (gPyramidBagMenu->toSwapPos == POS_NONE)
{
- sub_81C6FF8(gPyramidBagResources->unk815 ^ 1);
+ FreeItemIconSpriteByAltId(gPyramidBagMenu->isAltIcon ^ 1);
if (itemIndex != LIST_CANCEL)
- ShowItemImage(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][itemIndex], gPyramidBagResources->unk815);
+ ShowItemIcon(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][itemIndex], gPyramidBagMenu->isAltIcon);
else
- ShowItemImage(0xFFFF, gPyramidBagResources->unk815);
- gPyramidBagResources->unk815 ^= 1;
+ ShowItemIcon(0xFFFF, gPyramidBagMenu->isAltIcon); // Show exit arrow if on Cancel
+ gPyramidBagMenu->isAltIcon ^= 1;
PrintItemDescription(itemIndex);
}
}
-static void PrintItemQuantity(u8 windowId, s32 itemIndex, u8 y)
+static void PrintItemQuantity(u8 windowId, u32 itemIndex, u8 y)
{
s32 xAlign;
if (itemIndex == LIST_CANCEL)
return;
- if (gPyramidBagResources->unk814 != 0xFF)
+ if (gPyramidBagMenu->toSwapPos != POS_NONE)
{
- if (gPyramidBagResources->unk814 == (u8)(itemIndex))
- sub_81C5AB8(y, 1);
+ // Performing a swap. Keep a gray selector arrow on the position to swap to
+ // and erase the selector arrow anywhere else
+ if (gPyramidBagMenu->toSwapPos == (u8)(itemIndex))
+ PrintSelectorArrowAtPos(y, COLORID_LIGHT_GRAY);
else
- sub_81C5AB8(y, 0xFF);
+ PrintSelectorArrowAtPos(y, COLORID_NONE);
}
+
ConvertIntToDecimalStringN(gStringVar1,
gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode][itemIndex],
STR_CONV_MODE_RIGHT_ALIGN,
2);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
- xAlign = GetStringRightAlignXOffset(7, gStringVar4, 0x77);
- PrintOnWindow_Font7(windowId, gStringVar4, xAlign, y, 0, 0, TEXT_SPEED_FF, 0);
+ xAlign = GetStringRightAlignXOffset(7, gStringVar4, 119);
+ PrintOnWindow_Font7(windowId, gStringVar4, xAlign, y, 0, 0, TEXT_SPEED_FF, COLORID_DARK_GRAY);
}
static void PrintItemDescription(s32 listMenuId)
@@ -647,34 +685,42 @@ static void PrintItemDescription(s32 listMenuId)
}
else
{
- StringCopy(gStringVar1, gReturnToXStringsTable2[gPyramidBagCursorData.unk4]);
+ StringCopy(gStringVar1, gPyramidBagMenu_ReturnToStrings[gPyramidBagMenuState.location]);
StringExpandPlaceholders(gStringVar4, gText_ReturnToVar1);
desc = gStringVar4;
}
- FillWindowPixelBuffer(1, PIXEL_FILL(0));
- PrintOnWindow_Font1(1, desc, 3, 0, 0, 1, 0, 0);
+ FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0));
+ PrintOnWindow_Font1(WIN_INFO, desc, 3, 0, 0, 1, 0, COLORID_DARK_GRAY);
}
-static void AddScrollArrow(void)
+static void AddScrollArrows(void)
{
- if (gPyramidBagResources->scrollIndicatorsTaskId == TASK_NONE)
- gPyramidBagResources->scrollIndicatorsTaskId = AddScrollIndicatorArrowPairParameterized(2, 172, 12, 148, gPyramidBagResources->listMenuCount - gPyramidBagResources->listMenuMaxShown, 0xB5E, 0xB5E, &gPyramidBagCursorData.scrollPosition);
+ if (gPyramidBagMenu->scrollIndicatorsTaskId == TASK_NONE)
+ gPyramidBagMenu->scrollIndicatorsTaskId = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 172, 12, 148,
+ gPyramidBagMenu->listMenuCount - gPyramidBagMenu->listMenuMaxShown,
+ TAG_SCROLL_ARROW, TAG_SCROLL_ARROW,
+ &gPyramidBagMenuState.scrollPosition);
}
static void RemoveScrollArrow(void)
{
- if (gPyramidBagResources->scrollIndicatorsTaskId != TASK_NONE)
+ if (gPyramidBagMenu->scrollIndicatorsTaskId != TASK_NONE)
{
- RemoveScrollIndicatorArrowPair(gPyramidBagResources->scrollIndicatorsTaskId);
- gPyramidBagResources->scrollIndicatorsTaskId = TASK_NONE;
+ RemoveScrollIndicatorArrowPair(gPyramidBagMenu->scrollIndicatorsTaskId);
+ gPyramidBagMenu->scrollIndicatorsTaskId = TASK_NONE;
}
}
-static void sub_81C56F8(void)
+#define tListTaskId data[0]
+#define tListPos data[1]
+#define tQuantity data[2]
+#define tNumToToss data[8]
+
+static void CreatePyramidBagInputTask(void)
{
u8 taskId = CreateTask(Task_HandlePyramidBagInput, 0);
s16 *data = gTasks[taskId].data;
- data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gPyramidBagCursorData.scrollPosition, gPyramidBagCursorData.cursorPosition);
+ tListTaskId = ListMenuInit(&gMultiuseListMenuTemplate, gPyramidBagMenuState.scrollPosition, gPyramidBagMenuState.cursorPosition);
}
static void SwapItems(u8 id1, u8 id2)
@@ -728,9 +774,9 @@ static void CompactItems(void)
for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++)
{
- if (itemIds[i] == 0 || quantities[i] == 0)
+ if (itemIds[i] == ITEM_NONE || quantities[i] == 0)
{
- itemIds[i] = 0;
+ itemIds[i] = ITEM_NONE;
quantities[i] = 0;
}
}
@@ -738,98 +784,97 @@ static void CompactItems(void)
{
for (j = i + 1; j < PYRAMID_BAG_ITEMS_COUNT; j++)
{
- if (itemIds[i] == 0 || quantities[i] == 0)
+ if (itemIds[i] == ITEM_NONE || quantities[i] == 0)
SwapItems(i, j);
}
}
}
-void sub_81C5924(void)
+void UpdatePyramidBagList(void)
{
u16 i;
u16 *itemIds = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode];
CompactItems();
- gPyramidBagResources->listMenuCount = 0;
+ gPyramidBagMenu->listMenuCount = 0;
for (i = 0; i < PYRAMID_BAG_ITEMS_COUNT; i++)
{
- if (itemIds[i] != 0)
- gPyramidBagResources->listMenuCount++;
+ if (itemIds[i] != ITEM_NONE)
+ gPyramidBagMenu->listMenuCount++;
}
- gPyramidBagResources->listMenuCount++;
- if (gPyramidBagResources->listMenuCount > 8)
- gPyramidBagResources->listMenuMaxShown = 8;
+ gPyramidBagMenu->listMenuCount++;
+ if (gPyramidBagMenu->listMenuCount > 8)
+ gPyramidBagMenu->listMenuMaxShown = 8;
else
- gPyramidBagResources->listMenuMaxShown = gPyramidBagResources->listMenuCount;
+ gPyramidBagMenu->listMenuMaxShown = gPyramidBagMenu->listMenuCount;
}
-void sub_81C59BC(void)
+void UpdatePyramidBagCursorPos(void)
{
- if (gPyramidBagCursorData.scrollPosition != 0 && gPyramidBagCursorData.scrollPosition + gPyramidBagResources->listMenuMaxShown > gPyramidBagResources->listMenuCount)
- gPyramidBagCursorData.scrollPosition = gPyramidBagResources->listMenuCount - gPyramidBagResources->listMenuMaxShown;
- if (gPyramidBagCursorData.scrollPosition + gPyramidBagCursorData.cursorPosition >= gPyramidBagResources->listMenuCount)
+ if (gPyramidBagMenuState.scrollPosition != 0 && gPyramidBagMenuState.scrollPosition + gPyramidBagMenu->listMenuMaxShown > gPyramidBagMenu->listMenuCount)
+ gPyramidBagMenuState.scrollPosition = gPyramidBagMenu->listMenuCount - gPyramidBagMenu->listMenuMaxShown;
+
+ if (gPyramidBagMenuState.scrollPosition + gPyramidBagMenuState.cursorPosition >= gPyramidBagMenu->listMenuCount)
{
- if (gPyramidBagResources->listMenuCount == 0)
- gPyramidBagCursorData.cursorPosition = 0;
+ if (gPyramidBagMenu->listMenuCount == 0)
+ gPyramidBagMenuState.cursorPosition = 0;
else
- gPyramidBagCursorData.cursorPosition = gPyramidBagResources->listMenuCount - 1;
+ gPyramidBagMenuState.cursorPosition = gPyramidBagMenu->listMenuCount - 1;
}
}
-static void sub_81C5A20(void)
+static void InitPyramidBagScroll(void)
{
u8 i;
- if (gPyramidBagCursorData.cursorPosition > 4)
+ if (gPyramidBagMenuState.cursorPosition > 4)
{
- for (i = 0; i <= gPyramidBagCursorData.cursorPosition - 4; i++)
+ for (i = 0; i <= gPyramidBagMenuState.cursorPosition - 4; i++)
{
- if (gPyramidBagCursorData.scrollPosition + gPyramidBagResources->listMenuMaxShown == gPyramidBagResources->listMenuCount)
- {
- // daycare.c sends its regards.
+ if (gPyramidBagMenuState.scrollPosition + gPyramidBagMenu->listMenuMaxShown == gPyramidBagMenu->listMenuCount)
break;
- }
- gPyramidBagCursorData.cursorPosition--;
- gPyramidBagCursorData.scrollPosition++;
+
+ gPyramidBagMenuState.cursorPosition--;
+ gPyramidBagMenuState.scrollPosition++;
}
}
}
-static void sub_81C5A98(u8 listMenuTaskId, u8 arg1)
+static void PrintSelectorArrow(u8 listMenuTaskId, u8 colorId)
{
u8 y = ListMenuGetYCoordForPrintingArrowCursor(listMenuTaskId);
- sub_81C5AB8(y, arg1);
+ PrintSelectorArrowAtPos(y, colorId);
}
-static void sub_81C5AB8(u8 y, u8 arg1)
+static void PrintSelectorArrowAtPos(u8 y, u8 colorId)
{
- if (arg1 == 0xFF)
- FillWindowPixelRect(0, PIXEL_FILL(0), 0, y, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1));
+ if (colorId == COLORID_NONE) // If 'no color', erase arrow
+ FillWindowPixelRect(WIN_LIST, PIXEL_FILL(0), 0, y, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1));
else
- PrintOnWindow_Font1(0, gText_SelectorArrow2, 0, y, 0, 0, 0, arg1);
+ PrintOnWindow_Font1(WIN_LIST, gText_SelectorArrow2, 0, y, 0, 0, 0, colorId);
}
-void CloseBattlePyramidBagAndSetCallback(u8 taskId)
+void CloseBattlePyramidBag(u8 taskId)
{
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK);
- gTasks[taskId].func = sub_81C5B4C;
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
+ gTasks[taskId].func = Task_ClosePyramidBag;
}
-static void sub_81C5B4C(u8 taskId)
+static void Task_ClosePyramidBag(u8 taskId)
{
s16 *data = gTasks[taskId].data;
if (!gPaletteFade.active)
{
- DestroyListMenuTask(data[0], &gPyramidBagCursorData.scrollPosition, &gPyramidBagCursorData.cursorPosition);
- if (gPyramidBagResources->callback2 != NULL)
- SetMainCallback2(gPyramidBagResources->callback2);
+ DestroyListMenuTask(tListTaskId, &gPyramidBagMenuState.scrollPosition, &gPyramidBagMenuState.cursorPosition);
+ if (gPyramidBagMenu->exitCallback != NULL)
+ SetMainCallback2(gPyramidBagMenu->exitCallback);
else
- SetMainCallback2(gPyramidBagCursorData.callback);
+ SetMainCallback2(gPyramidBagMenuState.callback);
RemoveScrollArrow();
ResetSpriteData();
FreeAllSpritePalettes();
FreeAllWindowBuffers();
- Free(gPyramidBagResources);
+ Free(gPyramidBagMenu);
DestroyTask(taskId);
}
}
@@ -837,108 +882,110 @@ static void sub_81C5B4C(u8 taskId)
static void Task_HandlePyramidBagInput(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if (MenuHelpers_CallLinkSomething() != TRUE && !gPaletteFade.active)
+ if (MenuHelpers_CallLinkSomething() == TRUE || gPaletteFade.active)
+ return;
+
+ if (JOY_NEW(SELECT_BUTTON))
{
- if (JOY_NEW(SELECT_BUTTON))
+ if (gPyramidBagMenuState.location != PYRAMIDBAG_LOC_PARTY)
{
- if (gPyramidBagCursorData.unk4 != 2)
+ ListMenuGetScrollAndRow(tListTaskId, &gPyramidBagMenuState.scrollPosition, &gPyramidBagMenuState.cursorPosition);
+ if (gPyramidBagMenuState.scrollPosition + gPyramidBagMenuState.cursorPosition != gPyramidBagMenu->listMenuCount - 1)
{
- ListMenuGetScrollAndRow(data[0], &gPyramidBagCursorData.scrollPosition, &gPyramidBagCursorData.cursorPosition);
- if (gPyramidBagCursorData.scrollPosition + gPyramidBagCursorData.cursorPosition != gPyramidBagResources->listMenuCount - 1)
- {
- PlaySE(SE_SELECT);
- Task_BeginItemSwap(taskId);
- }
+ PlaySE(SE_SELECT);
+ Task_BeginItemSwap(taskId);
}
}
- else
+ }
+ else
+ {
+ s32 listId = ListMenu_ProcessInput(tListTaskId);
+ ListMenuGetScrollAndRow(tListTaskId, &gPyramidBagMenuState.scrollPosition, &gPyramidBagMenuState.cursorPosition);
+ switch (listId)
{
- s32 listId = ListMenu_ProcessInput(data[0]);
- ListMenuGetScrollAndRow(data[0], &gPyramidBagCursorData.scrollPosition, &gPyramidBagCursorData.cursorPosition);
- switch (listId)
- {
- case LIST_NOTHING_CHOSEN:
- break;
- case LIST_CANCEL:
- PlaySE(SE_SELECT);
- gSpecialVar_ItemId = 0;
- CloseBattlePyramidBagAndSetCallback(taskId);
- break;
- default:
- PlaySE(SE_SELECT);
- gSpecialVar_ItemId = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][listId];
- data[1] = listId;
- data[2] = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode][listId];
- if (gPyramidBagCursorData.unk4 == 2)
- sub_81C674C(taskId);
- else
- sub_81C5D20(taskId);
- break;
- }
+ case LIST_NOTHING_CHOSEN:
+ break;
+ case LIST_CANCEL:
+ PlaySE(SE_SELECT);
+ gSpecialVar_ItemId = ITEM_NONE;
+ CloseBattlePyramidBag(taskId);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ gSpecialVar_ItemId = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][listId];
+ tListPos = listId;
+ tQuantity = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode][listId];
+ if (gPyramidBagMenuState.location == PYRAMIDBAG_LOC_PARTY)
+ TryCloseBagToGiveItem(taskId);
+ else
+ OpenContextMenu(taskId);
+ break;
}
}
}
-static void sub_81C5D20(u8 taskId)
+static void OpenContextMenu(u8 taskId)
{
s16 *data = gTasks[taskId].data;
RemoveScrollArrow();
- sub_81C5A98(data[0], 1);
- switch (gPyramidBagCursorData.unk4)
+ PrintSelectorArrow(tListTaskId, COLORID_LIGHT_GRAY);
+ switch (gPyramidBagMenuState.location)
{
default:
- gPyramidBagResources->menuActionIds = sFieldMenuActionIds;
- gPyramidBagResources->menuActionsCount = ARRAY_COUNT(sFieldMenuActionIds);
+// case PYRAMIDBAG_LOC_FIELD:
+// case PYRAMIDBAG_LOC_PARTY:
+ gPyramidBagMenu->menuActionIds = sMenuActionIds_Field;
+ gPyramidBagMenu->menuActionsCount = ARRAY_COUNT(sMenuActionIds_Field);
break;
- case 1:
+ case PYRAMIDBAG_LOC_BATTLE:
if (ItemId_GetBattleUsage(gSpecialVar_ItemId))
{
- gPyramidBagResources->menuActionIds = sBattleMenuActionIds;
- gPyramidBagResources->menuActionsCount = ARRAY_COUNT(sBattleMenuActionIds);
+ gPyramidBagMenu->menuActionIds = sMenuActionIds_Battle;
+ gPyramidBagMenu->menuActionsCount = ARRAY_COUNT(sMenuActionIds_Battle);
}
else
{
- gPyramidBagResources->menuActionIds = gUnknown_0861F310;
- gPyramidBagResources->menuActionsCount = ARRAY_COUNT(gUnknown_0861F310);
+ gPyramidBagMenu->menuActionIds = sMenuActionIds_BattleCannotUse;
+ gPyramidBagMenu->menuActionsCount = ARRAY_COUNT(sMenuActionIds_BattleCannotUse);
}
break;
- case 3:
- gPyramidBagResources->menuActionIds = gUnknown_0861F30C;
- gPyramidBagResources->menuActionsCount = ARRAY_COUNT(gUnknown_0861F30C);
+ case PYRAMIDBAG_LOC_CHOOSE_TOSS:
+ gPyramidBagMenu->menuActionIds = sMenuActionIds_ChooseToss;
+ gPyramidBagMenu->menuActionsCount = ARRAY_COUNT(sMenuActionIds_ChooseToss);
break;
}
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_Var1IsSelected);
- FillWindowPixelBuffer(1, PIXEL_FILL(0));
- PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0);
- if (gPyramidBagResources->menuActionsCount == 1)
- sub_81C5EAC(sub_81C6D24(0));
- else if (gPyramidBagResources->menuActionsCount == 2)
- sub_81C5EAC(sub_81C6D24(1));
+ FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0));
+ PrintOnWindow_Font1(WIN_INFO, gStringVar4, 3, 0, 0, 1, 0, COLORID_DARK_GRAY);
+ if (gPyramidBagMenu->menuActionsCount == 1)
+ PrintMenuActionText_SingleRow(OpenMenuActionWindowById(MENU_WIN_1x1));
+ else if (gPyramidBagMenu->menuActionsCount == 2)
+ PrintMenuActionText_SingleRow(OpenMenuActionWindowById(MENU_WIN_1x2));
else
- sub_81C5F08(sub_81C6D24(2), 2, 2);
+ PrintMenuActionText_MultiRow(OpenMenuActionWindowById(MENU_WIN_2x2), 2, 2);
- if (gPyramidBagResources->menuActionsCount == 4)
- gTasks[taskId].func = HandleMenuActionInput;
+ if (gPyramidBagMenu->menuActionsCount == 2 * 2) // Assumes any non 2x2 menu is single-row
+ gTasks[taskId].func = HandleMenuActionInput_2x2;
else
- gTasks[taskId].func = HandleFewMenuActionsInput;
+ gTasks[taskId].func = HandleMenuActionInput_SingleRow;
}
-static void sub_81C5EAC(u8 windowId)
+static void PrintMenuActionText_SingleRow(u8 windowId)
{
- AddItemMenuActionTextPrinters(windowId, 7, 8, 1, 0, 0x10, gPyramidBagResources->menuActionsCount, sMenuActions, gPyramidBagResources->menuActionIds);
- InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, gPyramidBagResources->menuActionsCount, 0);
+ AddItemMenuActionTextPrinters(windowId, 7, 8, 1, 0, 0x10, gPyramidBagMenu->menuActionsCount, sMenuActions, gPyramidBagMenu->menuActionIds);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, gPyramidBagMenu->menuActionsCount, 0);
}
-static void sub_81C5F08(u8 windowId, u8 horizontalCount, u8 verticalCount)
+static void PrintMenuActionText_MultiRow(u8 windowId, u8 horizontalCount, u8 verticalCount)
{
- sub_8198DBC(windowId, 7, 8, 1, 0x38, horizontalCount, verticalCount, sMenuActions, gPyramidBagResources->menuActionIds);
- sub_8199944(windowId, 0x38, horizontalCount, verticalCount, 0);
+ PrintMenuActionGrid(windowId, 7, 8, 1, 56, horizontalCount, verticalCount, sMenuActions, gPyramidBagMenu->menuActionIds);
+ InitMenuActionGrid(windowId, 56, horizontalCount, verticalCount, 0);
}
-static void HandleFewMenuActionsInput(u8 taskId)
+static void HandleMenuActionInput_SingleRow(u8 taskId)
{
if (MenuHelpers_CallLinkSomething() != TRUE)
{
@@ -953,14 +1000,14 @@ static void HandleFewMenuActionsInput(u8 taskId)
break;
default:
PlaySE(SE_SELECT);
- if (sMenuActions[gPyramidBagResources->menuActionIds[id]].func.void_u8 != NULL)
- sMenuActions[gPyramidBagResources->menuActionIds[id]].func.void_u8(taskId);
+ if (sMenuActions[gPyramidBagMenu->menuActionIds[id]].func.void_u8 != NULL)
+ sMenuActions[gPyramidBagMenu->menuActionIds[id]].func.void_u8(taskId);
break;
}
}
}
-static void HandleMenuActionInput(u8 taskId)
+static void HandleMenuActionInput_2x2(u8 taskId)
{
if (MenuHelpers_CallLinkSomething() != TRUE)
{
@@ -975,7 +1022,7 @@ static void HandleMenuActionInput(u8 taskId)
}
else if (JOY_NEW(DPAD_DOWN))
{
- if (id < gPyramidBagResources->menuActionsCount - 2 && IsValidMenuAction(id + 2))
+ if (id < gPyramidBagMenu->menuActionsCount - 2 && IsValidMenuAction(id + 2))
{
PlaySE(SE_SELECT);
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_DOWN);
@@ -1000,8 +1047,8 @@ static void HandleMenuActionInput(u8 taskId)
else if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
- if (sMenuActions[gPyramidBagResources->menuActionIds[id]].func.void_u8 != NULL)
- sMenuActions[gPyramidBagResources->menuActionIds[id]].func.void_u8(taskId);
+ if (sMenuActions[gPyramidBagMenu->menuActionIds[id]].func.void_u8 != NULL)
+ sMenuActions[gPyramidBagMenu->menuActionIds[id]].func.void_u8(taskId);
}
else if (JOY_NEW(B_BUTTON))
{
@@ -1015,22 +1062,22 @@ static bool8 IsValidMenuAction(s8 actionTableId)
{
if (actionTableId < 0)
return FALSE;
- else if (actionTableId > gPyramidBagResources->menuActionsCount)
+ else if (actionTableId > gPyramidBagMenu->menuActionsCount)
return FALSE;
- else if (gPyramidBagResources->menuActionIds[actionTableId] == ACTION_DUMMY)
+ else if (gPyramidBagMenu->menuActionIds[actionTableId] == ACTION_DUMMY)
return FALSE;
else
return TRUE;
}
-static void sub_81C61A8(void)
+static void CloseMenuActionWindow(void)
{
- if (gPyramidBagResources->menuActionsCount == 1)
- sub_81C6D6C(0);
- else if (gPyramidBagResources->menuActionsCount == 2)
- sub_81C6D6C(1);
+ if (gPyramidBagMenu->menuActionsCount == 1)
+ CloseMenuActionWindowById(MENU_WIN_1x1);
+ else if (gPyramidBagMenu->menuActionsCount == 2)
+ CloseMenuActionWindowById(MENU_WIN_1x2);
else
- sub_81C6D6C(2);
+ CloseMenuActionWindowById(MENU_WIN_2x2);
}
static void BagAction_UseOnField(u8 taskId)
@@ -1042,13 +1089,13 @@ static void BagAction_UseOnField(u8 taskId)
|| pocketId == POCKET_TM_HM
|| ItemIsMail(gSpecialVar_ItemId) == TRUE)
{
- sub_81C61A8();
+ CloseMenuActionWindow();
DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, Task_CloseBattlePyramidBagMessage);
}
else if (ItemId_GetFieldFunc(gSpecialVar_ItemId) != NULL)
{
- sub_81C61A8();
- FillWindowPixelBuffer(1, PIXEL_FILL(0));
+ CloseMenuActionWindow();
+ FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0));
ScheduleBgCopyTilemapToVram(0);
ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId);
}
@@ -1058,17 +1105,17 @@ static void BagAction_Cancel(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_81C61A8();
- PrintItemDescription(data[1]);
+ CloseMenuActionWindow();
+ PrintItemDescription(tListPos);
ScheduleBgCopyTilemapToVram(0);
ScheduleBgCopyTilemapToVram(1);
- sub_81C5A98(data[0], 0);
+ PrintSelectorArrow(tListTaskId, COLORID_DARK_GRAY);
SetTaskToMainPyramidBagInputHandler(taskId);
}
static void SetTaskToMainPyramidBagInputHandler(u8 taskId)
{
- AddScrollArrow();
+ AddScrollArrows();
gTasks[taskId].func = Task_HandlePyramidBagInput;
}
@@ -1076,86 +1123,86 @@ static void BagAction_Toss(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_81C61A8();
- data[8] = 1;
- if (data[2] == 1)
+ CloseMenuActionWindow();
+ tNumToToss = 1;
+ if (tQuantity == 1)
{
- sub_81C6350(taskId);
+ AskConfirmToss(taskId);
}
else
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_TossHowManyVar1s);
- FillWindowPixelBuffer(1, PIXEL_FILL(0));
- PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0);
- sub_81C6404();
- gTasks[taskId].func = sub_81C64B4;
+ FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0));
+ PrintOnWindow_Font1(WIN_INFO, gStringVar4, 3, 0, 0, 1, 0, COLORID_DARK_GRAY);
+ ShowNumToToss();
+ gTasks[taskId].func = Task_ChooseHowManyToToss;
}
}
-static void sub_81C6350(u8 taskId)
+static void AskConfirmToss(u8 taskId)
{
s16 *data = gTasks[taskId].data;
CopyItemName(gSpecialVar_ItemId, gStringVar1);
- ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 2);
+ ConvertIntToDecimalStringN(gStringVar2, tNumToToss, STR_CONV_MODE_LEFT_ALIGN, 2);
StringExpandPlaceholders(gStringVar4, gText_ConfirmTossItems);
- FillWindowPixelBuffer(1, PIXEL_FILL(0));
- PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0);
- sub_81C6DAC(taskId, &sYesNoTossFuncions);
+ FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0));
+ PrintOnWindow_Font1(WIN_INFO, gStringVar4, 3, 0, 0, 1, 0, COLORID_DARK_GRAY);
+ CreatePyramidBagYesNo(taskId, &sYesNoTossFuncions);
}
static void DontTossItem(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- PrintItemDescription(data[1]);
- sub_81C5A98(data[0], 0);
+ PrintItemDescription(tListPos);
+ PrintSelectorArrow(tListTaskId, COLORID_DARK_GRAY);
SetTaskToMainPyramidBagInputHandler(taskId);
}
-static void sub_81C6404(void)
+static void ShowNumToToss(void)
{
s32 x;
-
ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 2);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
- sub_81C6CEC(3);
+ DrawTossNumberWindow(WIN_TOSS_NUM);
x = GetStringCenterAlignXOffset(1, gStringVar4, 0x28);
- AddTextPrinterParameterized(3, 1, gStringVar4, x, 2, 0, NULL);
+ AddTextPrinterParameterized(WIN_TOSS_NUM, 1, gStringVar4, x, 2, 0, NULL);
}
-static void sub_81C645C(s16 value)
+static void UpdateNumToToss(s16 num)
{
s32 x;
-
- ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEADING_ZEROS, 2);
+ ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_LEADING_ZEROS, 2);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
x = GetStringCenterAlignXOffset(1, gStringVar4, 0x28);
- AddTextPrinterParameterized(3, 1, gStringVar4, x, 2, 0, NULL);
+ AddTextPrinterParameterized(WIN_TOSS_NUM, 1, gStringVar4, x, 2, 0, NULL);
}
-static void sub_81C64B4(u8 taskId)
+static void Task_ChooseHowManyToToss(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE)
+ if (AdjustQuantityAccordingToDPadInput(&tNumToToss, tQuantity) == TRUE)
{
- sub_81C645C(data[8]);
+ UpdateNumToToss(tNumToToss);
}
else if (JOY_NEW(A_BUTTON))
{
+ // Toss
PlaySE(SE_SELECT);
- ClearStdWindowAndFrameToTransparent(3, 0);
- ClearWindowTilemap(3);
+ ClearStdWindowAndFrameToTransparent(WIN_TOSS_NUM, 0);
+ ClearWindowTilemap(WIN_TOSS_NUM);
ScheduleBgCopyTilemapToVram(1);
- sub_81C6350(taskId);
+ AskConfirmToss(taskId);
}
else if (JOY_NEW(B_BUTTON))
{
+ // Cancel tossing
PlaySE(SE_SELECT);
- ClearStdWindowAndFrameToTransparent(3, 0);
- ClearWindowTilemap(3);
+ ClearStdWindowAndFrameToTransparent(WIN_TOSS_NUM, 0);
+ ClearWindowTilemap(WIN_TOSS_NUM);
ScheduleBgCopyTilemapToVram(1);
DontTossItem(taskId);
}
@@ -1166,28 +1213,28 @@ static void TossItem(u8 taskId)
s16 *data = gTasks[taskId].data;
CopyItemName(gSpecialVar_ItemId, gStringVar1);
- ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 2);
+ ConvertIntToDecimalStringN(gStringVar2, tNumToToss, STR_CONV_MODE_LEFT_ALIGN, 2);
StringExpandPlaceholders(gStringVar4, gText_ThrewAwayVar2Var1s);
- FillWindowPixelBuffer(1, PIXEL_FILL(0));
- PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0);
- gTasks[taskId].func = sub_81C65CC;
+ FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0));
+ PrintOnWindow_Font1(WIN_INFO, gStringVar4, 3, 0, 0, 1, 0, COLORID_DARK_GRAY);
+ gTasks[taskId].func = Task_TossItem;
}
-static void sub_81C65CC(u8 taskId)
+static void Task_TossItem(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- u16 *scrollOffset = &gPyramidBagCursorData.scrollPosition;
- u16 *selectedRow = &gPyramidBagCursorData.cursorPosition;
+ u16 *scrollOffset = &gPyramidBagMenuState.scrollPosition;
+ u16 *selectedRow = &gPyramidBagMenuState.cursorPosition;
if (JOY_NEW(A_BUTTON | B_BUTTON))
{
PlaySE(SE_SELECT);
- RemovePyramidBagItem(gSpecialVar_ItemId, data[8]);
- DestroyListMenuTask(data[0], scrollOffset, selectedRow);
- sub_81C5924();
- sub_81C59BC();
+ RemovePyramidBagItem(gSpecialVar_ItemId, tNumToToss);
+ DestroyListMenuTask(tListTaskId, scrollOffset, selectedRow);
+ UpdatePyramidBagList();
+ UpdatePyramidBagCursorPos();
SetBagItemsListTemplate();
- data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollOffset, *selectedRow);
+ tListTaskId = ListMenuInit(&gMultiuseListMenuTemplate, *scrollOffset, *selectedRow);
ScheduleBgCopyTilemapToVram(0);
SetTaskToMainPyramidBagInputHandler(taskId);
}
@@ -1195,30 +1242,30 @@ static void sub_81C65CC(u8 taskId)
static void BagAction_Give(u8 taskId)
{
- sub_81C61A8();
+ CloseMenuActionWindow();
if (ItemIsMail(gSpecialVar_ItemId) == TRUE)
{
- DisplayItemMessageInBattlePyramid(taskId, gText_CantWriteMail, sub_81C66EC);
+ DisplayItemMessageInBattlePyramid(taskId, gText_CantWriteMail, Task_WaitCloseErrorMessage);
}
else if (!ItemId_GetImportance(gSpecialVar_ItemId))
{
- gPyramidBagResources->callback2 = CB2_ChooseMonToGiveItem;
- CloseBattlePyramidBagAndSetCallback(taskId);
+ gPyramidBagMenu->exitCallback = CB2_ChooseMonToGiveItem;
+ CloseBattlePyramidBag(taskId);
}
else
{
- sub_81C66AC(taskId);
+ ShowCantHoldMessage(taskId);
}
}
-static void sub_81C66AC(u8 taskId)
+static void ShowCantHoldMessage(u8 taskId)
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_Var1CantBeHeld);
- DisplayItemMessageInBattlePyramid(taskId, gStringVar4, sub_81C66EC);
+ DisplayItemMessageInBattlePyramid(taskId, gStringVar4, Task_WaitCloseErrorMessage);
}
-static void sub_81C66EC(u8 taskId)
+static void Task_WaitCloseErrorMessage(u8 taskId)
{
if (JOY_NEW(A_BUTTON))
{
@@ -1232,26 +1279,26 @@ void Task_CloseBattlePyramidBagMessage(u8 taskId)
s16 *data = gTasks[taskId].data;
CloseBattlePyramidBagTextWindow();
- PrintItemDescription(data[1]);
- sub_81C5A98(data[0], 0);
+ PrintItemDescription(tListPos);
+ PrintSelectorArrow(tListTaskId, COLORID_DARK_GRAY);
SetTaskToMainPyramidBagInputHandler(taskId);
}
-static void sub_81C674C(u8 taskId)
+static void TryCloseBagToGiveItem(u8 taskId)
{
- if (!itemid_80BF6D8_mail_related(gSpecialVar_ItemId))
- DisplayItemMessageInBattlePyramid(taskId, gText_CantWriteMail, sub_81C66EC);
+ if (!IsWritingMailAllowed(gSpecialVar_ItemId))
+ DisplayItemMessageInBattlePyramid(taskId, gText_CantWriteMail, Task_WaitCloseErrorMessage);
else if (!ItemId_GetImportance(gSpecialVar_ItemId))
- CloseBattlePyramidBagAndSetCallback(taskId);
+ CloseBattlePyramidBag(taskId);
else
- sub_81C66AC(taskId);
+ ShowCantHoldMessage(taskId);
}
static void BagAction_UseInBattle(u8 taskId)
{
if (ItemId_GetBattleFunc(gSpecialVar_ItemId) != NULL)
{
- sub_81C61A8();
+ CloseMenuActionWindow();
ItemId_GetBattleFunc(gSpecialVar_ItemId)(taskId);
}
}
@@ -1260,15 +1307,15 @@ static void Task_BeginItemSwap(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- data[1] = gPyramidBagCursorData.scrollPosition + gPyramidBagCursorData.cursorPosition;
- gPyramidBagResources->unk814 = data[1];
- ListMenuSetUnkIndicatorsStructField(data[0], 0x10, 1);
- CopyItemName(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][data[1]], gStringVar1);
+ tListPos = gPyramidBagMenuState.scrollPosition + gPyramidBagMenuState.cursorPosition;
+ gPyramidBagMenu->toSwapPos = tListPos;
+ ListMenuSetUnkIndicatorsStructField(tListTaskId, 0x10, 1);
+ CopyItemName(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][tListPos], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_MoveVar1Where);
- FillWindowPixelBuffer(1, PIXEL_FILL(0));
- PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0);
- sub_81C5A98(data[0], 1);
- sub_81C704C(data[1]);
+ FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0));
+ PrintOnWindow_Font1(WIN_INFO, gStringVar4, 3, 0, 0, 1, 0, COLORID_DARK_GRAY);
+ PrintSelectorArrow(tListTaskId, COLORID_LIGHT_GRAY);
+ UpdateSwapLinePos(tListPos);
gTasks[taskId].func = Task_ItemSwapHandleInput;
}
@@ -1280,15 +1327,15 @@ static void Task_ItemSwapHandleInput(u8 taskId)
if (JOY_NEW(SELECT_BUTTON))
{
PlaySE(SE_SELECT);
- ListMenuGetScrollAndRow(data[0], &gPyramidBagCursorData.scrollPosition, &gPyramidBagCursorData.cursorPosition);
+ ListMenuGetScrollAndRow(tListTaskId, &gPyramidBagMenuState.scrollPosition, &gPyramidBagMenuState.cursorPosition);
PerformItemSwap(taskId);
}
else
{
- s32 id = ListMenu_ProcessInput(data[0]);
- ListMenuGetScrollAndRow(data[0], &gPyramidBagCursorData.scrollPosition, &gPyramidBagCursorData.cursorPosition);
- sub_81C7028(FALSE);
- sub_81C704C(gPyramidBagCursorData.cursorPosition);
+ s32 id = ListMenu_ProcessInput(tListTaskId);
+ ListMenuGetScrollAndRow(tListTaskId, &gPyramidBagMenuState.scrollPosition, &gPyramidBagMenuState.cursorPosition);
+ SetSwapLineInvisibility(FALSE);
+ UpdateSwapLinePos(gPyramidBagMenuState.cursorPosition);
switch (id)
{
case LIST_NOTHING_CHOSEN:
@@ -1298,7 +1345,7 @@ static void Task_ItemSwapHandleInput(u8 taskId)
if (JOY_NEW(A_BUTTON))
PerformItemSwap(taskId);
else
- sub_81C6A14(taskId);
+ CancelItemSwap(taskId);
break;
default:
PlaySE(SE_SELECT);
@@ -1312,41 +1359,41 @@ static void Task_ItemSwapHandleInput(u8 taskId)
static void PerformItemSwap(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- u16 *scrollOffset = &gPyramidBagCursorData.scrollPosition;
- u16 *selectedRow = &gPyramidBagCursorData.cursorPosition;
- u16 var = *scrollOffset + *selectedRow;
+ u16 *scrollOffset = &gPyramidBagMenuState.scrollPosition;
+ u16 *selectedRow = &gPyramidBagMenuState.cursorPosition;
+ u16 swapPos = *scrollOffset + *selectedRow;
- if (data[1] == var || data[1] == var - 1)
+ if (tListPos == swapPos || tListPos == swapPos - 1)
{
- sub_81C6A14(taskId);
+ CancelItemSwap(taskId);
}
else
{
- MovePyramidBagItemSlotInList(data[1], var);
- gPyramidBagResources->unk814 = 0xFF;
- sub_81C7028(TRUE);
- DestroyListMenuTask(data[0], scrollOffset, selectedRow);
- if (data[1] < var)
- gPyramidBagCursorData.cursorPosition--;
+ MovePyramidBagItemSlotInList(tListPos, swapPos);
+ gPyramidBagMenu->toSwapPos = POS_NONE;
+ SetSwapLineInvisibility(TRUE);
+ DestroyListMenuTask(tListTaskId, scrollOffset, selectedRow);
+ if (tListPos < swapPos)
+ gPyramidBagMenuState.cursorPosition--;
SetBagItemsListTemplate();
- data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollOffset, *selectedRow);
+ tListTaskId = ListMenuInit(&gMultiuseListMenuTemplate, *scrollOffset, *selectedRow);
SetTaskToMainPyramidBagInputHandler(taskId);
}
}
-static void sub_81C6A14(u8 taskId)
+static void CancelItemSwap(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- u16 *scrollOffset = &gPyramidBagCursorData.scrollPosition;
- u16 *selectedRow = &gPyramidBagCursorData.cursorPosition;
-
- gPyramidBagResources->unk814 = 0xFF;
- sub_81C7028(TRUE);
- DestroyListMenuTask(data[0], scrollOffset, selectedRow);
- if (data[1] < *scrollOffset + *selectedRow)
- gPyramidBagCursorData.cursorPosition--;
+ u16 *scrollOffset = &gPyramidBagMenuState.scrollPosition;
+ u16 *selectedRow = &gPyramidBagMenuState.cursorPosition;
+
+ gPyramidBagMenu->toSwapPos = POS_NONE;
+ SetSwapLineInvisibility(TRUE);
+ DestroyListMenuTask(tListTaskId, scrollOffset, selectedRow);
+ if (tListPos < *scrollOffset + *selectedRow)
+ gPyramidBagMenuState.cursorPosition--;
SetBagItemsListTemplate();
- data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollOffset, *selectedRow);
+ tListTaskId = ListMenuInit(&gMultiuseListMenuTemplate, *scrollOffset, *selectedRow);
SetTaskToMainPyramidBagInputHandler(taskId);
}
@@ -1385,61 +1432,62 @@ void TryStoreHeldItemsInPyramidBag(void)
Free(newQuantities);
}
-static void sub_81C6BD8(void)
+static void InitPyramidBagWindows(void)
{
u8 i;
- InitWindows(gUnknown_0861F328);
+ InitWindows(sWindowTemplates);
DeactivateAllTextPrinters();
LoadUserWindowBorderGfx(0, 0x1, 0xE0);
LoadMessageBoxGfx(0, 0xA, 0xD0);
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
- for (i = 0; i < 5; i++)
+ for (i = 0; i < ARRAY_COUNT(sWindowTemplates); i++)
FillWindowPixelBuffer(i, PIXEL_FILL(0));
- PutWindowTilemap(0);
- PutWindowTilemap(1);
+ PutWindowTilemap(WIN_LIST);
+ PutWindowTilemap(WIN_INFO);
ScheduleBgCopyTilemapToVram(0);
ScheduleBgCopyTilemapToVram(1);
}
static void PrintOnWindow_Font1(u8 windowId, const u8 *src, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorTableId)
{
- AddTextPrinterParameterized4(windowId, 1, x, y, letterSpacing, lineSpacing, sColorTable[colorTableId], speed, src);
+ AddTextPrinterParameterized4(windowId, 1, x, y, letterSpacing, lineSpacing, sTextColors[colorTableId], speed, src);
}
static void PrintOnWindow_Font7(u8 windowId, const u8 *src, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorTableId)
{
- AddTextPrinterParameterized4(windowId, 7, x, y, letterSpacing, lineSpacing, sColorTable[colorTableId], speed, src);
+ AddTextPrinterParameterized4(windowId, 7, x, y, letterSpacing, lineSpacing, sTextColors[colorTableId], speed, src);
}
-static void sub_81C6CEC(u8 windowId)
+static void DrawTossNumberWindow(u8 windowId)
{
DrawStdFrameWithCustomTileAndPalette(windowId, 0, 1, 0xE);
ScheduleBgCopyTilemapToVram(1);
}
-static u8 sub_81C6D08(u8 windowArrayId)
+// Unused
+static u8 GetMenuActionWindowId(u8 windowArrayId)
{
- return gPyramidBagResources->windowIds[windowArrayId];
+ return gPyramidBagMenu->windowIds[windowArrayId];
}
-static u8 sub_81C6D24(u8 windowArrayId)
+static u8 OpenMenuActionWindowById(u8 windowArrayId)
{
- u8 *windowId = &gPyramidBagResources->windowIds[windowArrayId];
+ u8 *windowId = &gPyramidBagMenu->windowIds[windowArrayId];
if (*windowId == WINDOW_NONE)
{
- *windowId = AddWindow(&gUnknown_0861F350[windowArrayId]);
+ *windowId = AddWindow(&sWindowTemplates_MenuActions[windowArrayId]);
DrawStdFrameWithCustomTileAndPalette(*windowId, FALSE, 1, 0xE);
ScheduleBgCopyTilemapToVram(1);
}
return *windowId;
}
-static void sub_81C6D6C(u8 windowArrayId)
+static void CloseMenuActionWindowById(u8 windowArrayId)
{
- u8 *windowId = &gPyramidBagResources->windowIds[windowArrayId];
+ u8 *windowId = &gPyramidBagMenu->windowIds[windowArrayId];
if (*windowId != WINDOW_NONE)
{
ClearStdWindowAndFrameToTransparent(*windowId, FALSE);
@@ -1450,112 +1498,112 @@ static void sub_81C6D6C(u8 windowArrayId)
}
}
-static void sub_81C6DAC(u8 taskId, const struct YesNoFuncTable *yesNoTable)
+static void CreatePyramidBagYesNo(u8 taskId, const struct YesNoFuncTable *yesNoTable)
{
- CreateYesNoMenuWithCallbacks(taskId, &gUnknown_0861F350[4], 1, 0, 2, 1, 0xE, yesNoTable);
+ CreateYesNoMenuWithCallbacks(taskId, &sWindowTemplates_MenuActions[MENU_WIN_YESNO], 1, 0, 2, 1, 0xE, yesNoTable);
}
void DisplayItemMessageInBattlePyramid(u8 taskId, const u8 *str, void (*callback)(u8 taskId))
{
- FillWindowPixelBuffer(2, PIXEL_FILL(1));
- DisplayMessageAndContinueTask(taskId, 2, 0xA, 0xD, 1, GetPlayerTextSpeedDelay(), str, callback);
+ FillWindowPixelBuffer(WIN_MSG, PIXEL_FILL(1));
+ DisplayMessageAndContinueTask(taskId, WIN_MSG, 0xA, 0xD, 1, GetPlayerTextSpeedDelay(), str, callback);
ScheduleBgCopyTilemapToVram(1);
}
static void CloseBattlePyramidBagTextWindow(void)
{
- ClearDialogWindowAndFrameToTransparent(2, FALSE);
+ ClearDialogWindowAndFrameToTransparent(WIN_MSG, FALSE);
// This ClearWindowTilemap call is redundant, since ClearDialogWindowAndFrameToTransparent already calls it.
- ClearWindowTilemap(2);
+ ClearWindowTilemap(WIN_MSG);
ScheduleBgCopyTilemapToVram(1);
}
-#define ITEM_IMAGE_TAG 0x1024
-
-static void sub_81C6E38(u8 itemSpriteArrayId)
+static void FreeItemIconSprite(u8 spriteArrId)
{
- u8 *spriteId = &gPyramidBagResources->itemsSpriteIds[itemSpriteArrayId];
+ u8 *spriteId = &gPyramidBagMenu->spriteIds[spriteArrId];
if (*spriteId != SPRITE_NONE)
{
- FreeSpriteTilesByTag(ITEM_IMAGE_TAG + itemSpriteArrayId);
- FreeSpritePaletteByTag(ITEM_IMAGE_TAG + itemSpriteArrayId);
+ // spriteArrId is PBAG_SPRITE_ITEM_ICON / PBAG_SPRITE_ITEM_ICON_ALT here (1-2)
+ // so tag will be TAG_ITEM_ICON / TAG_ITEM_ICON_ALT
+ FreeSpriteTilesByTag(TAG_ITEM_ICON - 1 + spriteArrId);
+ FreeSpritePaletteByTag(TAG_ITEM_ICON - 1 + spriteArrId);
FreeSpriteOamMatrix(&gSprites[*spriteId]);
DestroySprite(&gSprites[*spriteId]);
*spriteId = SPRITE_NONE;
}
}
-static void sub_81C6E98(void)
+static void LoadPyramidBagPalette(void)
{
struct SpritePalette spritePalette;
u16 *palPtr = Alloc(0x40);
LZDecompressWram(gBattleFrontierGfx_PyramidBag_Pal, palPtr);
spritePalette.data = palPtr + (gSaveBlock2Ptr->frontier.lvlMode * 16);
- spritePalette.tag = ITEM_IMAGE_TAG;
+ spritePalette.tag = TAG_PYRAMID_BAG;
LoadSpritePalette(&spritePalette);
Free(palPtr);
}
-static void sub_81C6EF4(void)
+static void CreatePyramidBagSprite(void)
{
- u8 *spriteId = &gPyramidBagResources->itemsSpriteIds[0];
- *spriteId = CreateSprite(&gUnknown_0861F3D4, 0x44, 0x38, 0);
+ u8 *spriteId = &gPyramidBagMenu->spriteIds[PBAG_SPRITE_BAG];
+ *spriteId = CreateSprite(&sSpriteTemplate_PyramidBag, 68, 56, 0);
}
-static void sub_81C6F20(void)
+static void ShakePyramidBag(void)
{
- struct Sprite *sprite = &gSprites[gPyramidBagResources->itemsSpriteIds[0]];
+ struct Sprite *sprite = &gSprites[gPyramidBagMenu->spriteIds[PBAG_SPRITE_BAG]];
if (sprite->affineAnimEnded)
{
- StartSpriteAffineAnim(sprite, 1);
- sprite->callback = sub_81C6F68;
+ StartSpriteAffineAnim(sprite, ANIM_BAG_SHAKE);
+ sprite->callback = SpriteCB_BagWaitForShake;
}
}
-static void sub_81C6F68(struct Sprite *sprite)
+static void SpriteCB_BagWaitForShake(struct Sprite *sprite)
{
if (sprite->affineAnimEnded)
{
- StartSpriteAffineAnim(sprite, 0);
+ StartSpriteAffineAnim(sprite, ANIM_BAG_STILL);
sprite->callback = SpriteCallbackDummy;
}
}
-static void ShowItemImage(u16 itemId, u8 itemSpriteArrayId)
+static void ShowItemIcon(u16 itemId, bool8 isAlt)
{
u8 itemSpriteId;
- u8 *spriteId = &gPyramidBagResources->itemsSpriteIds[itemSpriteArrayId + 1];
+ u8 *spriteId = &gPyramidBagMenu->spriteIds[isAlt + PBAG_SPRITE_ITEM_ICON];
if (*spriteId == SPRITE_NONE)
{
- FreeSpriteTilesByTag(ITEM_IMAGE_TAG + 1 + itemSpriteArrayId);
- FreeSpritePaletteByTag(ITEM_IMAGE_TAG + 1 + itemSpriteArrayId);
- itemSpriteId = AddItemIconSprite(ITEM_IMAGE_TAG + 1 + itemSpriteArrayId, ITEM_IMAGE_TAG + 1 + itemSpriteArrayId, itemId);
+ FreeSpriteTilesByTag(TAG_ITEM_ICON + isAlt);
+ FreeSpritePaletteByTag(TAG_ITEM_ICON + isAlt);
+ itemSpriteId = AddItemIconSprite(TAG_ITEM_ICON + isAlt, TAG_ITEM_ICON + isAlt, itemId);
if (itemSpriteId != MAX_SPRITES)
{
*spriteId = itemSpriteId;
- gSprites[itemSpriteId].pos2.x = 24;
- gSprites[itemSpriteId].pos2.y = 88;
+ gSprites[itemSpriteId].x2 = 24;
+ gSprites[itemSpriteId].y2 = 88;
}
}
}
-static void sub_81C6FF8(u8 itemSpriteArrayId)
+static void FreeItemIconSpriteByAltId(bool8 isAlt)
{
- sub_81C6E38(itemSpriteArrayId + 1);
+ FreeItemIconSprite(isAlt + PBAG_SPRITE_ITEM_ICON);
}
-static void sub_81C700C(void)
+static void CreateSwapLine(void)
{
- sub_8122344(&gPyramidBagResources->itemsSpriteIds[3], 8);
+ CreateSwapLineSprites(&gPyramidBagMenu->spriteIds[PBAG_SPRITE_SWAP_LINE_START], NUM_SWAP_LINE_SPRITES);
}
-static void sub_81C7028(bool8 invisible)
+static void SetSwapLineInvisibility(bool8 invisible)
{
- sub_81223FC(&gPyramidBagResources->itemsSpriteIds[3], 8, invisible);
+ SetSwapLineSpritesInvisibility(&gPyramidBagMenu->spriteIds[PBAG_SPRITE_SWAP_LINE_START], NUM_SWAP_LINE_SPRITES, invisible);
}
-static void sub_81C704C(u8 y)
+static void UpdateSwapLinePos(u8 y)
{
- sub_8122448(&gPyramidBagResources->itemsSpriteIds[3], 8 | 0x80, 120, (y + 1) * 16);
+ UpdateSwapLineSpritesPos(&gPyramidBagMenu->spriteIds[PBAG_SPRITE_SWAP_LINE_START], NUM_SWAP_LINE_SPRITES | 0x80, 120, (y + 1) * 16);
}
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 96c849cbc..cea30bb21 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -876,34 +876,33 @@ const ALIGNED(4) u8 gBattlePalaceNatureToMoveGroupLikelihood[NUM_NATURES][4] =
[NATURE_QUIRKY] = PALACE_STYLE(56, 22, 56, 22) // 22%, 22%
};
-// Indices into gBattlePalaceFlavorTextTable
static const u8 sBattlePalaceNatureToFlavorTextId[NUM_NATURES] =
{
- [NATURE_HARDY] = 3,
- [NATURE_LONELY] = 0,
- [NATURE_BRAVE] = 1,
- [NATURE_ADAMANT] = 0,
- [NATURE_NAUGHTY] = 0,
- [NATURE_BOLD] = 1,
- [NATURE_DOCILE] = 3,
- [NATURE_RELAXED] = 0,
- [NATURE_IMPISH] = 1,
- [NATURE_LAX] = 2,
- [NATURE_TIMID] = 2,
- [NATURE_HASTY] = 0,
- [NATURE_SERIOUS] = 3,
- [NATURE_JOLLY] = 1,
- [NATURE_NAIVE] = 3,
- [NATURE_MODEST] = 1,
- [NATURE_MILD] = 2,
- [NATURE_QUIET] = 3,
- [NATURE_BASHFUL] = 3,
- [NATURE_RASH] = 2,
- [NATURE_CALM] = 1,
- [NATURE_GENTLE] = 0,
- [NATURE_SASSY] = 2,
- [NATURE_CAREFUL] = 2,
- [NATURE_QUIRKY] = 3,
+ [NATURE_HARDY] = B_MSG_EAGER_FOR_MORE,
+ [NATURE_LONELY] = B_MSG_GLINT_IN_EYE,
+ [NATURE_BRAVE] = B_MSG_GETTING_IN_POS,
+ [NATURE_ADAMANT] = B_MSG_GLINT_IN_EYE,
+ [NATURE_NAUGHTY] = B_MSG_GLINT_IN_EYE,
+ [NATURE_BOLD] = B_MSG_GETTING_IN_POS,
+ [NATURE_DOCILE] = B_MSG_EAGER_FOR_MORE,
+ [NATURE_RELAXED] = B_MSG_GLINT_IN_EYE,
+ [NATURE_IMPISH] = B_MSG_GETTING_IN_POS,
+ [NATURE_LAX] = B_MSG_GROWL_DEEPLY,
+ [NATURE_TIMID] = B_MSG_GROWL_DEEPLY,
+ [NATURE_HASTY] = B_MSG_GLINT_IN_EYE,
+ [NATURE_SERIOUS] = B_MSG_EAGER_FOR_MORE,
+ [NATURE_JOLLY] = B_MSG_GETTING_IN_POS,
+ [NATURE_NAIVE] = B_MSG_EAGER_FOR_MORE,
+ [NATURE_MODEST] = B_MSG_GETTING_IN_POS,
+ [NATURE_MILD] = B_MSG_GROWL_DEEPLY,
+ [NATURE_QUIET] = B_MSG_EAGER_FOR_MORE,
+ [NATURE_BASHFUL] = B_MSG_EAGER_FOR_MORE,
+ [NATURE_RASH] = B_MSG_GROWL_DEEPLY,
+ [NATURE_CALM] = B_MSG_GETTING_IN_POS,
+ [NATURE_GENTLE] = B_MSG_GLINT_IN_EYE,
+ [NATURE_SASSY] = B_MSG_GROWL_DEEPLY,
+ [NATURE_CAREFUL] = B_MSG_GROWL_DEEPLY,
+ [NATURE_QUIRKY] = B_MSG_EAGER_FOR_MORE,
};
static void Cmd_attackcanceler(void)
@@ -991,7 +990,7 @@ static void Cmd_attackcanceler(void)
gMoveResultFlags |= MOVE_RESULT_MISSED;
gLastLandedMoves[gBattlerTarget] = 0;
gLastHitByType[gBattlerTarget] = 0;
- gBattleCommunication[6] = 1;
+ gBattleCommunication[MISS_TYPE] = B_MSG_PROTECTED;
gBattlescriptCurrInstr++;
}
else
@@ -1024,7 +1023,7 @@ static void Cmd_jumpifaffectedbyprotect(void)
{
gMoveResultFlags |= MOVE_RESULT_MISSED;
JumpIfMoveFailed(5, 0);
- gBattleCommunication[6] = 1;
+ gBattleCommunication[MISS_TYPE] = B_MSG_PROTECTED;
}
else
{
@@ -1039,7 +1038,7 @@ bool8 JumpIfMoveAffectedByProtect(u16 move)
{
gMoveResultFlags |= MOVE_RESULT_MISSED;
JumpIfMoveFailed(7, move);
- gBattleCommunication[6] = 1;
+ gBattleCommunication[MISS_TYPE] = B_MSG_PROTECTED;
affected = TRUE;
}
return affected;
@@ -1172,9 +1171,9 @@ static void Cmd_accuracycheck(void)
gMoveResultFlags |= MOVE_RESULT_MISSED;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE &&
(gBattleMoves[move].target == MOVE_TARGET_BOTH || gBattleMoves[move].target == MOVE_TARGET_FOES_AND_ALLY))
- gBattleCommunication[6] = 2;
+ gBattleCommunication[MISS_TYPE] = B_MSG_AVOIDED_ATK;
else
- gBattleCommunication[6] = 0;
+ gBattleCommunication[MISS_TYPE] = B_MSG_MISSED;
CheckWonderGuardAndLevitate();
}
@@ -1370,7 +1369,7 @@ static void Cmd_typecalc(void)
gMoveResultFlags |= (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE);
gLastLandedMoves[gBattlerTarget] = 0;
gLastHitByType[gBattlerTarget] = 0;
- gBattleCommunication[6] = moveType;
+ gBattleCommunication[MISS_TYPE] = B_MSG_GROUND_MISS;
RecordAbilityBattle(gBattlerTarget, gLastUsedAbility);
}
else
@@ -1406,7 +1405,7 @@ static void Cmd_typecalc(void)
gMoveResultFlags |= MOVE_RESULT_MISSED;
gLastLandedMoves[gBattlerTarget] = 0;
gLastHitByType[gBattlerTarget] = 0;
- gBattleCommunication[6] = 3;
+ gBattleCommunication[MISS_TYPE] = B_MSG_AVOIDED_DMG;
RecordAbilityBattle(gBattlerTarget, gLastUsedAbility);
}
if (gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE)
@@ -1429,7 +1428,7 @@ static void CheckWonderGuardAndLevitate(void)
if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND)
{
gLastUsedAbility = ABILITY_LEVITATE;
- gBattleCommunication[6] = moveType;
+ gBattleCommunication[MISS_TYPE] = B_MSG_GROUND_MISS;
RecordAbilityBattle(gBattlerTarget, ABILITY_LEVITATE);
return;
}
@@ -1484,7 +1483,7 @@ static void CheckWonderGuardAndLevitate(void)
if (((flags & 2) || !(flags & 1)) && gBattleMoves[gCurrentMove].power)
{
gLastUsedAbility = ABILITY_WONDER_GUARD;
- gBattleCommunication[6] = 3;
+ gBattleCommunication[MISS_TYPE] = B_MSG_AVOIDED_DMG;
RecordAbilityBattle(gBattlerTarget, ABILITY_WONDER_GUARD);
}
}
@@ -2019,9 +2018,9 @@ static void Cmd_resultmessage(void)
if (gBattleControllerExecFlags)
return;
- if (gMoveResultFlags & MOVE_RESULT_MISSED && (!(gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE) || gBattleCommunication[6] > 2))
+ if (gMoveResultFlags & MOVE_RESULT_MISSED && (!(gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE) || gBattleCommunication[MISS_TYPE] > B_MSG_AVOIDED_ATK))
{
- stringId = gMissStringIds[gBattleCommunication[6]];
+ stringId = gMissStringIds[gBattleCommunication[MISS_TYPE]];
gBattleCommunication[MSG_DISPLAY] = 1;
}
else
@@ -2273,12 +2272,12 @@ void SetMoveEffect(bool8 primary, u8 certain)
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS;
gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
}
else
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_MOVE_STATUS;
}
RESET_RETURN
}
@@ -2289,7 +2288,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_PSNPrevention;
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUS_HAD_NO_EFFECT;
RESET_RETURN
}
if (IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_POISON))
@@ -2314,12 +2313,12 @@ void SetMoveEffect(bool8 primary, u8 certain)
gBattlescriptCurrInstr = BattleScript_BRNPrevention;
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS;
gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
}
else
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_MOVE_STATUS;
}
RESET_RETURN
}
@@ -2330,7 +2329,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_BRNPrevention;
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUS_HAD_NO_EFFECT;
RESET_RETURN
}
if (IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_FIRE))
@@ -2370,12 +2369,12 @@ void SetMoveEffect(bool8 primary, u8 certain)
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS;
gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
}
else
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_MOVE_STATUS;
}
RESET_RETURN
}
@@ -2398,12 +2397,12 @@ void SetMoveEffect(bool8 primary, u8 certain)
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS;
gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
}
else
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_MOVE_STATUS;
}
RESET_RETURN
}
@@ -2414,7 +2413,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_PSNPrevention;
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUS_HAD_NO_EFFECT;
RESET_RETURN
}
if (gBattleMons[gEffectBattler].status1)
@@ -2453,12 +2452,12 @@ void SetMoveEffect(bool8 primary, u8 certain)
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUSED_BY_ABILITY;
gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
}
else
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUSED;
}
// for synchronize
@@ -3270,7 +3269,7 @@ static void Cmd_getexp(void)
if (viaExpShare) // at least one mon is getting exp via exp share
{
- *exp = calculatedExp / 2 / viaSentIn;
+ *exp = SAFE_DIV(calculatedExp / 2, viaSentIn);
if (*exp == 0)
*exp = 1;
@@ -3280,7 +3279,7 @@ static void Cmd_getexp(void)
}
else
{
- *exp = calculatedExp / viaSentIn;
+ *exp = SAFE_DIV(calculatedExp, viaSentIn);
if (*exp == 0)
*exp = 1;
gExpShareExp = 0;
@@ -3358,7 +3357,7 @@ static void Cmd_getexp(void)
// get exp getter battlerId
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- if (!(gBattlerPartyIndexes[2] != gBattleStruct->expGetterMonId) && !(gAbsentBattlerFlags & gBitTable[2]))
+ if (gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId && !(gAbsentBattlerFlags & gBitTable[2]))
gBattleStruct->expGetterBattlerId = 2;
else
{
@@ -3432,14 +3431,13 @@ static void Cmd_getexp(void)
gBattleMons[0].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP);
gBattleMons[0].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK);
gBattleMons[0].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF);
- // Why is this duplicated?
+ // Speed is duplicated, likely due to a copy-paste error.
gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
-
gBattleMons[0].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK);
gBattleMons[0].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF);
}
- // What is else if?
+
if (gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
gBattleMons[2].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL);
@@ -3447,10 +3445,13 @@ static void Cmd_getexp(void)
gBattleMons[2].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP);
gBattleMons[2].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK);
gBattleMons[2].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF);
- // Duplicated again, but this time there's no Sp Defense
gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
+ // Speed is duplicated again, but Special Defense is missing.
+#ifdef BUGFIX
+ gBattleMons[2].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF);
+#else
gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
-
+#endif
gBattleMons[2].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK);
}
gBattleScripting.getexpState = 5;
@@ -3579,7 +3580,7 @@ static void MoveValuesCleanUp(void)
gBattleScripting.dmgMultiplier = 1;
gCritMultiplier = 1;
gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
- gBattleCommunication[6] = 0;
+ gBattleCommunication[MISS_TYPE] = 0;
gHitMarker &= ~(HITMARKER_DESTINYBOND);
gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
}
@@ -4459,7 +4460,7 @@ static void Cmd_typecalc2(void)
gLastUsedAbility = gBattleMons[gBattlerTarget].ability;
gMoveResultFlags |= (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE);
gLastLandedMoves[gBattlerTarget] = 0;
- gBattleCommunication[6] = moveType;
+ gBattleCommunication[MISS_TYPE] = B_MSG_GROUND_MISS;
RecordAbilityBattle(gBattlerTarget, gLastUsedAbility);
}
else
@@ -4534,7 +4535,7 @@ static void Cmd_typecalc2(void)
gLastUsedAbility = ABILITY_WONDER_GUARD;
gMoveResultFlags |= MOVE_RESULT_MISSED;
gLastLandedMoves[gBattlerTarget] = 0;
- gBattleCommunication[6] = 3;
+ gBattleCommunication[MISS_TYPE] = B_MSG_AVOIDED_DMG;
RecordAbilityBattle(gBattlerTarget, gLastUsedAbility);
}
if (gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE)
@@ -4802,7 +4803,9 @@ static void Cmd_jumpifcantswitch(void)
}
}
-static void sub_804CF10(u8 slotId)
+// Opens the party screen to choose a new Pokémon to send out
+// slotId is the Pokémon to replace
+static void ChooseMonToSendOut(u8 slotId)
{
*(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
@@ -4823,7 +4826,7 @@ static void Cmd_openpartyscreen(void)
flags = 0;
jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
- if (gBattlescriptCurrInstr[1] == 5)
+ if (gBattlescriptCurrInstr[1] == BS_UNK_5)
{
if ((gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE)
{
@@ -4831,7 +4834,7 @@ static void Cmd_openpartyscreen(void)
{
if (gHitMarker & HITMARKER_FAINTED(gActiveBattler))
{
- if (HasNoMonsToSwitch(gActiveBattler, 6, 6))
+ if (HasNoMonsToSwitch(gActiveBattler, PARTY_SIZE, PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
@@ -4840,7 +4843,7 @@ static void Cmd_openpartyscreen(void)
}
else if (!gSpecialStatuses[gActiveBattler].flag40)
{
- sub_804CF10(PARTY_SIZE);
+ ChooseMonToSendOut(PARTY_SIZE);
gSpecialStatuses[gActiveBattler].flag40 = 1;
}
}
@@ -4855,21 +4858,21 @@ static void Cmd_openpartyscreen(void)
{
u8 flag40_0, flag40_1, flag40_2, flag40_3;
- hitmarkerFaintBits = gHitMarker >> 0x1C;
+ hitmarkerFaintBits = gHitMarker >> 28;
if (gBitTable[0] & hitmarkerFaintBits)
{
gActiveBattler = 0;
- if (HasNoMonsToSwitch(0, 6, 6))
+ if (HasNoMonsToSwitch(0, PARTY_SIZE, PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
- BtlController_EmitCmd42(0);
+ BtlController_EmitCantSwitch(0);
MarkBattlerForControllerExec(gActiveBattler);
}
else if (!gSpecialStatuses[gActiveBattler].flag40)
{
- sub_804CF10(gBattleStruct->monToSwitchIntoId[2]);
+ ChooseMonToSendOut(gBattleStruct->monToSwitchIntoId[2]);
gSpecialStatuses[gActiveBattler].flag40 = 1;
}
else
@@ -4882,16 +4885,16 @@ static void Cmd_openpartyscreen(void)
if (gBitTable[2] & hitmarkerFaintBits && !(gBitTable[0] & hitmarkerFaintBits))
{
gActiveBattler = 2;
- if (HasNoMonsToSwitch(2, 6, 6))
+ if (HasNoMonsToSwitch(2, PARTY_SIZE, PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
- BtlController_EmitCmd42(0);
+ BtlController_EmitCantSwitch(0);
MarkBattlerForControllerExec(gActiveBattler);
}
else if (!gSpecialStatuses[gActiveBattler].flag40)
{
- sub_804CF10(gBattleStruct->monToSwitchIntoId[0]);
+ ChooseMonToSendOut(gBattleStruct->monToSwitchIntoId[0]);
gSpecialStatuses[gActiveBattler].flag40 = 1;
}
else if (!(flags & 1))
@@ -4903,16 +4906,16 @@ static void Cmd_openpartyscreen(void)
if (gBitTable[1] & hitmarkerFaintBits)
{
gActiveBattler = 1;
- if (HasNoMonsToSwitch(1, 6, 6))
+ if (HasNoMonsToSwitch(1, PARTY_SIZE, PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
- BtlController_EmitCmd42(0);
+ BtlController_EmitCantSwitch(0);
MarkBattlerForControllerExec(gActiveBattler);
}
else if (!gSpecialStatuses[gActiveBattler].flag40)
{
- sub_804CF10(gBattleStruct->monToSwitchIntoId[3]);
+ ChooseMonToSendOut(gBattleStruct->monToSwitchIntoId[3]);
gSpecialStatuses[gActiveBattler].flag40 = 1;
}
else
@@ -4925,16 +4928,16 @@ static void Cmd_openpartyscreen(void)
if (gBitTable[3] & hitmarkerFaintBits && !(gBitTable[1] & hitmarkerFaintBits))
{
gActiveBattler = 3;
- if (HasNoMonsToSwitch(3, 6, 6))
+ if (HasNoMonsToSwitch(3, PARTY_SIZE, PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
- BtlController_EmitCmd42(0);
+ BtlController_EmitCantSwitch(0);
MarkBattlerForControllerExec(gActiveBattler);
}
else if (!gSpecialStatuses[gActiveBattler].flag40)
{
- sub_804CF10(gBattleStruct->monToSwitchIntoId[1]);
+ ChooseMonToSendOut(gBattleStruct->monToSwitchIntoId[1]);
gSpecialStatuses[gActiveBattler].flag40 = 1;
}
else if (!(flags & 2))
@@ -4978,42 +4981,42 @@ static void Cmd_openpartyscreen(void)
}
gBattlescriptCurrInstr += 6;
}
- else if (gBattlescriptCurrInstr[1] == 6)
+ else if (gBattlescriptCurrInstr[1] == BS_UNK_6)
{
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- hitmarkerFaintBits = gHitMarker >> 0x1C;
+ hitmarkerFaintBits = gHitMarker >> 28;
if (gBitTable[2] & hitmarkerFaintBits && gBitTable[0] & hitmarkerFaintBits)
{
gActiveBattler = 2;
- if (HasNoMonsToSwitch(2, gBattleBufferB[0][1], 6))
+ if (HasNoMonsToSwitch(2, gBattleBufferB[0][1], PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
- BtlController_EmitCmd42(0);
+ BtlController_EmitCantSwitch(0);
MarkBattlerForControllerExec(gActiveBattler);
}
else if (!gSpecialStatuses[gActiveBattler].flag40)
{
- sub_804CF10(gBattleStruct->monToSwitchIntoId[0]);
+ ChooseMonToSendOut(gBattleStruct->monToSwitchIntoId[0]);
gSpecialStatuses[gActiveBattler].flag40 = 1;
}
}
if (gBitTable[3] & hitmarkerFaintBits && hitmarkerFaintBits & gBitTable[1])
{
gActiveBattler = 3;
- if (HasNoMonsToSwitch(3, gBattleBufferB[1][1], 6))
+ if (HasNoMonsToSwitch(3, gBattleBufferB[1][1], PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
- BtlController_EmitCmd42(0);
+ BtlController_EmitCantSwitch(0);
MarkBattlerForControllerExec(gActiveBattler);
}
else if (!gSpecialStatuses[gActiveBattler].flag40)
{
- sub_804CF10(gBattleStruct->monToSwitchIntoId[1]);
+ ChooseMonToSendOut(gBattleStruct->monToSwitchIntoId[1]);
gSpecialStatuses[gActiveBattler].flag40 = 1;
}
}
@@ -5029,7 +5032,7 @@ static void Cmd_openpartyscreen(void)
gBattlescriptCurrInstr += 6;
}
- hitmarkerFaintBits = gHitMarker >> 0x1C;
+ hitmarkerFaintBits = gHitMarker >> 28;
gBattlerFainted = 0;
while (!(gBitTable[gBattlerFainted] & hitmarkerFaintBits)
@@ -5041,17 +5044,17 @@ static void Cmd_openpartyscreen(void)
}
else
{
- if (gBattlescriptCurrInstr[1] & 0x80)
+ if (gBattlescriptCurrInstr[1] & PARTY_SCREEN_OPTIONAL)
hitmarkerFaintBits = PARTY_ACTION_CHOOSE_MON; // Used here as the caseId for the EmitChoose function.
else
hitmarkerFaintBits = PARTY_ACTION_SEND_OUT;
- battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~(0x80));
+ battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~(PARTY_SCREEN_OPTIONAL));
if (gSpecialStatuses[battlerId].flag40)
{
gBattlescriptCurrInstr += 6;
}
- else if (HasNoMonsToSwitch(battlerId, 6, 6))
+ else if (HasNoMonsToSwitch(battlerId, PARTY_SIZE, PARTY_SIZE))
{
gActiveBattler = battlerId;
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
@@ -5229,7 +5232,7 @@ static void Cmd_switchineffects(void)
if (gBattlescriptCurrInstr[1] == 5)
{
- u32 hitmarkerFaintBits = gHitMarker >> 0x1C;
+ u32 hitmarkerFaintBits = gHitMarker >> 28;
gBattlerFainted++;
while (1)
@@ -6033,7 +6036,7 @@ static void PutLevelAndGenderOnLvlUpBox(void)
printerTemplate.unk = 0;
printerTemplate.fgColor = TEXT_COLOR_WHITE;
printerTemplate.bgColor = TEXT_COLOR_TRANSPARENT;
- printerTemplate.shadowColor = TEXT_COLOR_DARK_GREY;
+ printerTemplate.shadowColor = TEXT_COLOR_DARK_GRAY;
AddTextPrinter(&printerTemplate, 0xFF, NULL);
@@ -6044,7 +6047,7 @@ static void PutLevelAndGenderOnLvlUpBox(void)
var = (u32)(txtPtr);
txtPtr = ConvertIntToDecimalStringN(txtPtr, monLevel, STR_CONV_MODE_LEFT_ALIGN, 3);
var = (u32)(txtPtr) - var;
- txtPtr = StringFill(txtPtr, CHAR_UNK_SPACER, 4 - var);
+ txtPtr = StringFill(txtPtr, CHAR_GENDERLESS, 4 - var);
if (monGender != MON_GENDERLESS)
{
@@ -6115,9 +6118,9 @@ static void PutMonIconOnLvlUpBox(void)
static void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite)
{
- sprite->pos2.x = sprite->sSavedLvlUpBoxXPosition - gBattle_BG2_X;
+ sprite->x2 = sprite->sSavedLvlUpBoxXPosition - gBattle_BG2_X;
- if (sprite->pos2.x != 0)
+ if (sprite->x2 != 0)
{
sprite->sDestroy = TRUE;
}
@@ -6167,7 +6170,13 @@ static void Cmd_recordlastability(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
RecordAbilityBattle(gActiveBattler, gLastUsedAbility);
- gBattlescriptCurrInstr += 1; // UB: Should be + 2, one byte for command and one byte for battlerId argument.
+
+#ifdef BUGFIX
+ // This command occupies two bytes (one for the command id, and one for the battler id parameter).
+ gBattlescriptCurrInstr += 2;
+#else
+ gBattlescriptCurrInstr += 1;
+#endif
}
void BufferMoveToLearnIntoBattleTextBuff2(void)
@@ -6373,10 +6382,10 @@ static void Cmd_various(void)
break;
case VARIOUS_ARENA_JUDGMENT_STRING:
BattleStringExpandPlaceholdersToDisplayedString(gRefereeStringsTable[gBattlescriptCurrInstr[1]]);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0x16);
+ BattlePutTextOnWindow(gDisplayedStringBattle, 22);
break;
case VARIOUS_ARENA_WAIT_STRING:
- if (IsTextPrinterActive(0x16))
+ if (IsTextPrinterActive(22))
return;
break;
case VARIOUS_WAIT_CRY:
@@ -6446,19 +6455,19 @@ static void Cmd_setprotectlike(void) // protect and endure
if (gBattleMoves[gCurrentMove].effect == EFFECT_PROTECT)
{
gProtectStructs[gBattlerAttacker].protected = 1;
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF;
}
if (gBattleMoves[gCurrentMove].effect == EFFECT_ENDURE)
{
gProtectStructs[gBattlerAttacker].endured = 1;
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_BRACED_ITSELF;
}
gDisableStructs[gBattlerAttacker].protectUses++;
}
else
{
gDisableStructs[gBattlerAttacker].protectUses = 0;
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECT_FAILED;
gMoveResultFlags |= MOVE_RESULT_MISSED;
}
@@ -6611,12 +6620,12 @@ static void Cmd_setrain(void)
if (gBattleWeather & WEATHER_RAIN_ANY)
{
gMoveResultFlags |= MOVE_RESULT_MISSED;
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_FAILED;
}
else
{
gBattleWeather = WEATHER_RAIN_TEMPORARY;
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_RAIN;
gWishFutureKnock.weatherDuration = 5;
}
gBattlescriptCurrInstr++;
@@ -6627,7 +6636,7 @@ static void Cmd_setreflect(void)
if (gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] & SIDE_STATUS_REFLECT)
{
gMoveResultFlags |= MOVE_RESULT_MISSED;
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SIDE_STATUS_FAILED;
}
else
{
@@ -6636,9 +6645,9 @@ static void Cmd_setreflect(void)
gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].reflectBattlerId = gBattlerAttacker;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMonsInBattle(BATTLE_ALIVE_ATK_SIDE) == 2)
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_REFLECT_DOUBLE;
else
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_REFLECT_SINGLE;
}
gBattlescriptCurrInstr++;
}
@@ -6648,18 +6657,18 @@ static void Cmd_setseeded(void)
if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT || gStatuses3[gBattlerTarget] & STATUS3_LEECHSEED)
{
gMoveResultFlags |= MOVE_RESULT_MISSED;
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_LEECH_SEED_MISS;
}
else if (IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_GRASS))
{
gMoveResultFlags |= MOVE_RESULT_MISSED;
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_LEECH_SEED_FAIL;
}
else
{
gStatuses3[gBattlerTarget] |= gBattlerAttacker;
gStatuses3[gBattlerTarget] |= STATUS3_LEECHSEED;
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_LEECH_SEED_SET;
}
gBattlescriptCurrInstr++;
@@ -6700,11 +6709,11 @@ static void Cmd_trysetrest(void)
else
{
if (gBattleMons[gBattlerTarget].status1 & ((u8)(~STATUS1_SLEEP)))
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_REST_STATUSED;
else
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_REST;
- gBattleMons[gBattlerTarget].status1 = 3;
+ gBattleMons[gBattlerTarget].status1 = STATUS1_SLEEP_TURN(3);
BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 5;
@@ -6740,9 +6749,9 @@ bool8 UproarWakeUpCheck(u8 battlerId)
if (gBattlerTarget == 0xFF)
gBattlerTarget = i;
else if (gBattlerTarget == i)
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CANT_SLEEP_UPROAR;
else
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_KEPT_AWAKE;
break;
}
@@ -6765,7 +6774,7 @@ static void Cmd_jumpifcantmakeasleep(void)
|| gBattleMons[gBattlerTarget].ability == ABILITY_VITAL_SPIRIT)
{
gLastUsedAbility = gBattleMons[gBattlerTarget].ability;
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STAYED_AWAKE_USING;
gBattlescriptCurrInstr = jumpPtr;
RecordAbilityBattle(gBattlerTarget, gLastUsedAbility);
}
@@ -6780,7 +6789,7 @@ static void Cmd_stockpile(void)
if (gDisableStructs[gBattlerAttacker].stockpileCounter == 3)
{
gMoveResultFlags |= MOVE_RESULT_MISSED;
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CANT_STOCKPILE;
}
else
{
@@ -6788,7 +6797,7 @@ static void Cmd_stockpile(void)
PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 1, gDisableStructs[gBattlerAttacker].stockpileCounter)
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STOCKPILED;
}
gBattlescriptCurrInstr++;
}
@@ -6802,7 +6811,7 @@ static void Cmd_stockpiletobasedamage(void)
}
else
{
- if (gBattleCommunication[6] != 1)
+ if (gBattleCommunication[MISS_TYPE] != B_MSG_PROTECTED)
{
gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerTarget], gCurrentMove,
gSideStatuses[GET_BATTLER_SIDE(gBattlerTarget)], 0,
@@ -6826,14 +6835,14 @@ static void Cmd_stockpiletohpheal(void)
if (gDisableStructs[gBattlerAttacker].stockpileCounter == 0)
{
gBattlescriptCurrInstr = jumpPtr;
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SWALLOW_FAILED;
}
else if (gBattleMons[gBattlerAttacker].maxHP == gBattleMons[gBattlerAttacker].hp)
{
gDisableStructs[gBattlerAttacker].stockpileCounter = 0;
gBattlescriptCurrInstr = jumpPtr;
gBattlerTarget = gBattlerAttacker;
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SWALLOW_FULL_HP;
}
else
{
@@ -6985,9 +6994,9 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
gBattleTextBuff2[index] = B_BUFF_EOS;
if (gBattleMons[gActiveBattler].statStages[statId] == MIN_STAT_STAGE)
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STAT_WONT_DECREASE;
else
- gBattleCommunication[MULTISTRING_CHOOSER] = (gBattlerTarget == gActiveBattler);
+ gBattleCommunication[MULTISTRING_CHOOSER] = (gBattlerTarget == gActiveBattler); // B_MSG_ATTACKER_STAT_FELL or B_MSG_DEFENDER_STAT_FELL
}
}
@@ -7012,9 +7021,9 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
gBattleTextBuff2[index] = B_BUFF_EOS;
if (gBattleMons[gActiveBattler].statStages[statId] == MAX_STAT_STAGE)
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STAT_WONT_INCREASE;
else
- gBattleCommunication[MULTISTRING_CHOOSER] = (gBattlerTarget == gActiveBattler);
+ gBattleCommunication[MULTISTRING_CHOOSER] = (gBattlerTarget == gActiveBattler); // B_MSG_ATTACKER_STAT_ROSE or B_MSG_DEFENDER_STAT_ROSE
}
gBattleMons[gActiveBattler].statStages[statId] += statValue;
@@ -7023,10 +7032,10 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
if (gBattleMons[gActiveBattler].statStages[statId] > MAX_STAT_STAGE)
gBattleMons[gActiveBattler].statStages[statId] = MAX_STAT_STAGE;
- if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && flags & STAT_BUFF_ALLOW_PTR)
+ if (gBattleCommunication[MULTISTRING_CHOOSER] == B_MSG_STAT_WONT_INCREASE && flags & STAT_BUFF_ALLOW_PTR)
gMoveResultFlags |= MOVE_RESULT_MISSED;
- if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && !(flags & STAT_BUFF_ALLOW_PTR))
+ if (gBattleCommunication[MULTISTRING_CHOOSER] == B_MSG_STAT_WONT_INCREASE && !(flags & STAT_BUFF_ALLOW_PTR))
return STAT_BUFF_DIDNT_WORK;
return STAT_BUFF_WORKED;
@@ -7314,7 +7323,7 @@ static void Cmd_tryconversiontypechange(void) // randomly changes user's type to
do
{
- while ((moveChecked = Random() & 3) >= validMoves);
+ while ((moveChecked = Random() & (MAX_MON_MOVES - 1)) >= validMoves);
moveType = gBattleMoves[gBattleMons[gBattlerAttacker].moves[moveChecked]].type;
@@ -7358,7 +7367,7 @@ static void Cmd_setlightscreen(void)
if (gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] & SIDE_STATUS_LIGHTSCREEN)
{
gMoveResultFlags |= MOVE_RESULT_MISSED;
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SIDE_STATUS_FAILED;
}
else
{
@@ -7367,9 +7376,9 @@ static void Cmd_setlightscreen(void)
gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].lightscreenBattlerId = gBattlerAttacker;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMonsInBattle(BATTLE_ALIVE_ATK_SIDE) == 2)
- gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_LIGHTSCREEN_DOUBLE;
else
- gBattleCommunication[MULTISTRING_CHOOSER] = 3;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_LIGHTSCREEN_SINGLE;
}
gBattlescriptCurrInstr++;
@@ -7453,9 +7462,9 @@ static void Cmd_tryKO(void)
{
gMoveResultFlags |= MOVE_RESULT_MISSED;
if (gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level)
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_KO_MISS;
else
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_KO_UNAFFECTED;
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
}
}
@@ -7475,12 +7484,12 @@ static void Cmd_setsandstorm(void)
if (gBattleWeather & WEATHER_SANDSTORM_ANY)
{
gMoveResultFlags |= MOVE_RESULT_MISSED;
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_FAILED;
}
else
{
gBattleWeather = WEATHER_SANDSTORM_TEMPORARY;
- gBattleCommunication[MULTISTRING_CHOOSER] = 3;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_SANDSTORM;
gWishFutureKnock.weatherDuration = 5;
}
gBattlescriptCurrInstr++;
@@ -7621,14 +7630,14 @@ static void Cmd_setmist(void)
if (gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].mistTimer)
{
gMoveResultFlags |= MOVE_RESULT_FAILED;
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MIST_FAILED;
}
else
{
gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].mistTimer = 5;
gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].mistBattlerId = gBattlerAttacker;
gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] |= SIDE_STATUS_MIST;
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_MIST;
}
gBattlescriptCurrInstr++;
}
@@ -7638,12 +7647,12 @@ static void Cmd_setfocusenergy(void)
if (gBattleMons[gBattlerAttacker].status2 & STATUS2_FOCUS_ENERGY)
{
gMoveResultFlags |= MOVE_RESULT_FAILED;
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FOCUS_ENERGY_FAILED;
}
else
{
gBattleMons[gBattlerAttacker].status2 |= STATUS2_FOCUS_ENERGY;
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_GETTING_PUMPED;
}
gBattlescriptCurrInstr++;
}
@@ -7656,7 +7665,7 @@ static void Cmd_transformdataexecution(void)
|| gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE)
{
gMoveResultFlags |= MOVE_RESULT_FAILED;
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TRANSFORM_FAILED;
}
else
{
@@ -7688,7 +7697,7 @@ static void Cmd_transformdataexecution(void)
gActiveBattler = gBattlerAttacker;
BtlController_EmitResetActionMoveSelection(0, RESET_MOVE_SELECTION);
MarkBattlerForControllerExec(gActiveBattler);
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TRANSFORMED;
}
}
@@ -7701,7 +7710,7 @@ static void Cmd_setsubstitute(void)
if (gBattleMons[gBattlerAttacker].hp <= hp)
{
gBattleMoveDamage = 0;
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SUBSTITUTE_FAILED;
}
else
{
@@ -7712,7 +7721,7 @@ static void Cmd_setsubstitute(void)
gBattleMons[gBattlerAttacker].status2 |= STATUS2_SUBSTITUTE;
gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_WRAPPED);
gDisableStructs[gBattlerAttacker].substituteHP = gBattleMoveDamage;
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_SUBSTITUTE;
gHitMarker |= HITMARKER_IGNORE_SUBSTITUTE;
}
@@ -8139,7 +8148,7 @@ static void Cmd_trychoosesleeptalkmove(void)
do
{
- movePosition = Random() & 3;
+ movePosition = Random() & (MAX_MON_MOVES - 1);
} while ((gBitTable[movePosition] & unusableMovesBits));
gCalledMove = gBattleMons[gBattlerAttacker].moves[movePosition];
@@ -8250,7 +8259,7 @@ static void Cmd_healpartystatus(void)
struct Pokemon *party;
s32 i;
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_BELL;
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
party = gPlayerParty;
@@ -8265,7 +8274,7 @@ static void Cmd_healpartystatus(void)
else
{
RecordAbilityBattle(gBattlerAttacker, gBattleMons[gBattlerAttacker].ability);
- gBattleCommunication[MULTISTRING_CHOOSER] |= 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] |= B_MSG_BELL_SOUNDPROOF_ATTACKER;
}
gActiveBattler = gBattleScripting.battler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK);
@@ -8281,10 +8290,12 @@ static void Cmd_healpartystatus(void)
else
{
RecordAbilityBattle(gActiveBattler, gBattleMons[gActiveBattler].ability);
- gBattleCommunication[MULTISTRING_CHOOSER] |= 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] |= B_MSG_BELL_SOUNDPROOF_PARTNER;
}
}
+ // Because the above MULTISTRING_CHOOSER are ORd, if both are set then it will be B_MSG_BELL_BOTH_SOUNDPROOF
+
for (i = 0; i < PARTY_SIZE; i++)
{
u16 species = GetMonData(&party[i], MON_DATA_SPECIES2);
@@ -8310,7 +8321,7 @@ static void Cmd_healpartystatus(void)
}
else // Aromatherapy
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SOOTHING_AROMA;
toHeal = 0x3F;
gBattleMons[gBattlerAttacker].status1 = 0;
@@ -8514,14 +8525,14 @@ static void Cmd_setsafeguard(void)
if (gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] & SIDE_STATUS_SAFEGUARD)
{
gMoveResultFlags |= MOVE_RESULT_MISSED;
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SIDE_STATUS_FAILED;
}
else
{
gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] |= SIDE_STATUS_SAFEGUARD;
gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].safeguardTimer = 5;
gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].safeguardBattlerId = gBattlerAttacker;
- gBattleCommunication[MULTISTRING_CHOOSER] = 5;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_SAFEGUARD;
}
gBattlescriptCurrInstr++;
@@ -8630,12 +8641,12 @@ static void Cmd_setsunny(void)
if (gBattleWeather & WEATHER_SUN_ANY)
{
gMoveResultFlags |= MOVE_RESULT_MISSED;
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_FAILED;
}
else
{
gBattleWeather = WEATHER_SUN_TEMPORARY;
- gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_SUNLIGHT;
gWishFutureKnock.weatherDuration = 5;
}
@@ -8806,9 +8817,9 @@ static void Cmd_trysetfutureattack(void)
gWishFutureKnock.futureSightDmg[gBattlerTarget] = gWishFutureKnock.futureSightDmg[gBattlerTarget] * 15 / 10;
if (gCurrentMove == MOVE_DOOM_DESIRE)
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DOOM_DESIRE;
else
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FUTURE_SIGHT;
gBattlescriptCurrInstr += 5;
}
@@ -8912,12 +8923,12 @@ static void Cmd_sethail(void)
if (gBattleWeather & WEATHER_HAIL_ANY)
{
gMoveResultFlags |= MOVE_RESULT_MISSED;
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEATHER_FAILED;
}
else
{
gBattleWeather = WEATHER_HAIL;
- gBattleCommunication[MULTISTRING_CHOOSER] = 5;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STARTED_HAIL;
gWishFutureKnock.weatherDuration = 5;
}
@@ -8928,7 +8939,7 @@ static void Cmd_jumpifattackandspecialattackcannotfall(void) // memento
{
if (gBattleMons[gBattlerTarget].statStages[STAT_ATK] == MIN_STAT_STAGE
&& gBattleMons[gBattlerTarget].statStages[STAT_SPATK] == MIN_STAT_STAGE
- && gBattleCommunication[6] != 1)
+ && gBattleCommunication[MISS_TYPE] != B_MSG_PROTECTED)
{
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
}
@@ -9113,11 +9124,11 @@ static void Cmd_tryswapitems(void) // trick
PREPARE_ITEM_BUFFER(gBattleTextBuff2, oldItemAtk)
if (oldItemAtk != 0 && *newItemAtk != 0)
- gBattleCommunication[MULTISTRING_CHOOSER] = 2; // attacker's item -> <- target's item
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ITEM_SWAP_BOTH; // attacker's item -> <- target's item
else if (oldItemAtk == 0 && *newItemAtk != 0)
- gBattleCommunication[MULTISTRING_CHOOSER] = 0; // nothing -> <- target's item
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ITEM_SWAP_TAKEN; // nothing -> <- target's item
else
- gBattleCommunication[MULTISTRING_CHOOSER] = 1; // attacker's item -> <- nothing
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ITEM_SWAP_GIVEN; // attacker's item -> <- nothing
}
}
}
@@ -9605,7 +9616,7 @@ static void Cmd_settypebasedhalvers(void) // water and mud sport
if (!(gStatuses3[gBattlerAttacker] & STATUS3_MUDSPORT))
{
gStatuses3[gBattlerAttacker] |= STATUS3_MUDSPORT;
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEAKEN_ELECTRIC;
worked = TRUE;
}
}
@@ -9614,7 +9625,7 @@ static void Cmd_settypebasedhalvers(void) // water and mud sport
if (!(gStatuses3[gBattlerAttacker] & STATUS3_WATERSPORT))
{
gStatuses3[gBattlerAttacker] |= STATUS3_WATERSPORT;
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WEAKEN_FIRE;
worked = TRUE;
}
}
@@ -9883,7 +9894,6 @@ static void Cmd_handleballthrow(void)
else // not caught
{
gBattleCommunication[MULTISTRING_CHOOSER] = shakes;
- // Maybe inject SpriteCB_TestBallThrow here
gBattlescriptCurrInstr = BattleScript_ShakeBallThrow;
}
}
@@ -9896,7 +9906,7 @@ static void Cmd_givecaughtmon(void)
{
if (!ShouldShowBoxWasFullMessage())
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SENT_SOMEONES_PC;
StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON)));
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2);
}
@@ -9905,9 +9915,10 @@ static void Cmd_givecaughtmon(void)
StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON))); // box the mon was sent to
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2);
StringCopy(gStringVar3, GetBoxNamePtr(GetPCBoxToSendMon())); //box the mon was going to be sent to
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SOMEONES_BOX_FULL;
}
+ // Change to B_MSG_SENT_LANETTES_PC or B_MSG_LANETTES_BOX_FULL
if (FlagGet(FLAG_SYS_PC_LANETTE))
gBattleCommunication[MULTISTRING_CHOOSER]++;
}
diff --git a/src/battle_tower.c b/src/battle_tower.c
index b1e5d7817..082ea6822 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -36,7 +36,6 @@
#include "constants/event_objects.h"
#include "constants/moves.h"
#include "constants/easy_chat.h"
-#include "constants/tv.h"
extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_MaxieTrainer[];
extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_TabithaTrainer[];
diff --git a/src/battle_transition.c b/src/battle_transition.c
index 66a4395b9..4d446b3df 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -1250,12 +1250,12 @@ static void sub_814669C(struct Task *task)
task->tData2 = 0;
task->tData4 = 0;
task->tData5 = 0x4000;
- sTransitionStructPtr->WININ = 63;
+ sTransitionStructPtr->WININ = WININ_WIN0_ALL;
sTransitionStructPtr->WINOUT = 0;
- sTransitionStructPtr->WIN0H = 240;
- sTransitionStructPtr->WIN0V = 160;
- sTransitionStructPtr->BLDCNT = 0x3F41;
- sTransitionStructPtr->BLDALPHA = (task->tData1 << 8) | (task->tData2);
+ sTransitionStructPtr->WIN0H = DISPLAY_WIDTH;
+ sTransitionStructPtr->WIN0V = DISPLAY_HEIGHT;
+ sTransitionStructPtr->BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL;
+ sTransitionStructPtr->BLDALPHA = BLDALPHA_BLEND(task->tData2, task->tData1);
for (i = 0; i < 160; i++)
{
@@ -1323,6 +1323,12 @@ static bool8 Phase2_BigPokeball_Func1(struct Task *task)
return FALSE;
}
+#define SOME_VRAM_STORE(ptr, posY, posX, toStore) \
+{ \
+ u32 index = (posY) * 32 + posX; \
+ ptr[index] = toStore; \
+}
+
static bool8 Phase2_BigPokeball_Func2(struct Task *task)
{
s16 i, j;
@@ -1335,7 +1341,7 @@ static bool8 Phase2_BigPokeball_Func2(struct Task *task)
{
for (j = 0; j < 30; j++, BigPokeballMap++)
{
- tilemap[i * 32 + j] = *BigPokeballMap | 0xF000;
+ SOME_VRAM_STORE(tilemap, i, j, *BigPokeballMap | 0xF000);
}
}
sub_8149F98(gScanlineEffectRegBuffers[0], 0, task->tData4, 132, task->tData5, 160);
@@ -1480,7 +1486,7 @@ static bool8 Phase2_BigPokeball_Func3(struct Task *task)
task->tData2++;
task->tData3 = 2;
}
- sTransitionStructPtr->BLDALPHA = (task->tData1 << 8) | task->tData2;
+ sTransitionStructPtr->BLDALPHA = BLDALPHA_BLEND(task->tData2, task->tData1);
if (task->tData2 > 15)
task->tState++;
task->tData4 += 8;
@@ -1500,7 +1506,7 @@ static bool8 Phase2_BigPokeball_Func4(struct Task *task)
task->tData1--;
task->tData3 = 2;
}
- sTransitionStructPtr->BLDALPHA = (task->tData1 << 8) | task->tData2;
+ sTransitionStructPtr->BLDALPHA = BLDALPHA_BLEND(task->tData2, task->tData1);
if (task->tData1 == 0)
task->tState++;
task->tData4 += 8;
@@ -1675,12 +1681,6 @@ bool8 FldEff_Pokeball(void)
return FALSE;
}
-#define SOME_VRAM_STORE(ptr, posY, posX, toStore) \
-{ \
- u32 index = (posY) * 32 + posX; \
- ptr[index] = toStore; \
-}
-
static void sub_814713C(struct Sprite *sprite)
{
s16 arr0[ARRAY_COUNT(sUnknown_085C8B96)];
@@ -1692,10 +1692,10 @@ static void sub_814713C(struct Sprite *sprite)
}
else
{
- if (sprite->pos1.x >= 0 && sprite->pos1.x <= 240)
+ if (sprite->x >= 0 && sprite->x <= DISPLAY_WIDTH)
{
- s16 posX = sprite->pos1.x >> 3;
- s16 posY = sprite->pos1.y >> 3;
+ s16 posX = sprite->x >> 3;
+ s16 posY = sprite->y >> 3;
if (posX != sprite->data[2])
{
@@ -1712,8 +1712,8 @@ static void sub_814713C(struct Sprite *sprite)
SOME_VRAM_STORE(ptr, posY + 1, posX, 0xF001);
}
}
- sprite->pos1.x += arr0[sprite->data[0]];
- if (sprite->pos1.x < -15 || sprite->pos1.x > 255)
+ sprite->x += arr0[sprite->data[0]];
+ if (sprite->x < -15 || sprite->x > 255)
FieldEffectStop(sprite, FLDEFF_POKEBALL);
}
}
@@ -1731,9 +1731,9 @@ static bool8 Phase2_Clockwise_BlackFade_Func1(struct Task *task)
ScanlineEffect_Clear();
sTransitionStructPtr->WININ = 0;
- sTransitionStructPtr->WINOUT = 63;
+ sTransitionStructPtr->WINOUT = WINOUT_WIN01_ALL;
sTransitionStructPtr->WIN0H = -3855;
- sTransitionStructPtr->WIN0V = 160;
+ sTransitionStructPtr->WIN0V = DISPLAY_HEIGHT;
for (i = 0; i < 160; i++)
{
@@ -1999,10 +1999,10 @@ static bool8 Phase2_Wave_Func1(struct Task *task)
InitTransitionStructVars();
ScanlineEffect_Clear();
- sTransitionStructPtr->WININ = 63;
+ sTransitionStructPtr->WININ = WININ_WIN0_ALL;
sTransitionStructPtr->WINOUT = 0;
- sTransitionStructPtr->WIN0H = 240;
- sTransitionStructPtr->WIN0V = 160;
+ sTransitionStructPtr->WIN0H = DISPLAY_WIDTH;
+ sTransitionStructPtr->WIN0V = DISPLAY_HEIGHT;
for (i = 0; i < 160; i++)
{
@@ -2111,9 +2111,9 @@ static bool8 Phase2_Mugshot_Func1(struct Task *task)
task->tData1 = 0;
task->tData2 = 1;
task->tData3 = 239;
- sTransitionStructPtr->WININ = 63;
- sTransitionStructPtr->WINOUT = 62;
- sTransitionStructPtr->WIN0V = 160;
+ sTransitionStructPtr->WININ = WININ_WIN0_ALL;
+ sTransitionStructPtr->WINOUT = WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR;
+ sTransitionStructPtr->WIN0V = DISPLAY_HEIGHT;
for (i = 0; i < 160; i++)
{
@@ -2142,7 +2142,7 @@ static bool8 Phase2_Mugshot_Func2(struct Task *task)
{
for (j = 0; j < 32; j++, mugshotsMap++)
{
- tilemap[i * 32 + j] = *mugshotsMap | 0xF000;
+ SOME_VRAM_STORE(tilemap, i, j, *mugshotsMap | 0xF000);
}
}
@@ -2253,12 +2253,12 @@ static bool8 Phase2_Mugshot_Func6(struct Task *task)
DmaStop(0);
memset(gScanlineEffectRegBuffers[0], 0, 0x140);
memset(gScanlineEffectRegBuffers[1], 0, 0x140);
- SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
+ SetGpuReg(REG_OFFSET_WIN0H, DISPLAY_WIDTH);
SetGpuReg(REG_OFFSET_BLDY, 0);
task->tState++;
task->tData3 = 0;
task->tData4 = 0;
- sTransitionStructPtr->BLDCNT = 0xBF;
+ sTransitionStructPtr->BLDCNT = BLDCNT_TGT1_ALL | BLDCNT_EFFECT_LIGHTEN;
SetVBlankCallback(VBlankCB1_Phase2_Mugshots);
}
return FALSE;
@@ -2384,7 +2384,7 @@ static void Mugshots_CreateOpponentPlayerSprites(struct Task *task)
sMugshotsOpponentCoords[mugshotId][0] - 32,
sMugshotsOpponentCoords[mugshotId][1] + 42,
0, gDecompressionBuffer);
- task->tPlayerSpriteId = CreateTrainerSprite(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender), 272, 106, 0, gDecompressionBuffer);
+ task->tPlayerSpriteId = CreateTrainerSprite(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender), DISPLAY_WIDTH + 32, 106, 0, gDecompressionBuffer);
opponentSprite = &gSprites[task->tOpponentSpriteId];
playerSprite = &gSprites[task->tPlayerSpriteId];
@@ -2438,10 +2438,10 @@ static bool8 TrainerPicCb_SetSlideOffsets(struct Sprite *sprite)
// fast slide to around middle screen
static bool8 TrainerPicCb_Slide1(struct Sprite *sprite)
{
- sprite->pos1.x += sprite->sOffsetX;
- if (sprite->sSlideTableId && sprite->pos1.x < 133)
+ sprite->x += sprite->sOffsetX;
+ if (sprite->sSlideTableId && sprite->x < 133)
sprite->sState++;
- else if (!sprite->sSlideTableId && sprite->pos1.x > 103)
+ else if (!sprite->sSlideTableId && sprite->x > 103)
sprite->sState++;
return FALSE;
}
@@ -2450,7 +2450,7 @@ static bool8 TrainerPicCb_Slide1(struct Sprite *sprite)
static bool8 TrainerPicCb_Slide2(struct Sprite *sprite)
{
sprite->sOffsetX += sprite->sOffsetX2;
- sprite->pos1.x += sprite->sOffsetX;
+ sprite->x += sprite->sOffsetX;
if (sprite->sOffsetX == 0)
{
sprite->sState++;
@@ -2464,8 +2464,8 @@ static bool8 TrainerPicCb_Slide2(struct Sprite *sprite)
static bool8 TrainerPicCb_Slide3(struct Sprite *sprite)
{
sprite->sOffsetX += sprite->sOffsetX2;
- sprite->pos1.x += sprite->sOffsetX;
- if (sprite->pos1.x < -31 || sprite->pos1.x > 271)
+ sprite->x += sprite->sOffsetX;
+ if (sprite->x < -31 || sprite->x > 271)
sprite->sState++;
return FALSE;
}
@@ -2505,9 +2505,9 @@ static bool8 Phase2_Slice_Func1(struct Task *task)
task->tData2 = 256;
task->tData3 = 1;
- sTransitionStructPtr->WININ = 63;
+ sTransitionStructPtr->WININ = WININ_WIN0_ALL;
sTransitionStructPtr->WINOUT = 0;
- sTransitionStructPtr->WIN0V = 160;
+ sTransitionStructPtr->WIN0V = DISPLAY_HEIGHT;
sTransitionStructPtr->VBlank_DMA = FALSE;
for (i = 0; i < 160; i++)
@@ -2606,9 +2606,9 @@ static bool8 Phase2_ShredSplit_Func1(struct Task *task)
InitTransitionStructVars();
ScanlineEffect_Clear();
- sTransitionStructPtr->WININ = 63;
+ sTransitionStructPtr->WININ = WININ_WIN0_ALL;
sTransitionStructPtr->WINOUT = 0;
- sTransitionStructPtr->WIN0V = 160;
+ sTransitionStructPtr->WIN0V = DISPLAY_HEIGHT;
for (i = 0; i < 0xA0; i++)
{
@@ -2779,9 +2779,9 @@ static bool8 Phase2_Blackhole_Func1(struct Task *task)
ScanlineEffect_Clear();
sTransitionStructPtr->WININ = 0;
- sTransitionStructPtr->WINOUT = 63;
- sTransitionStructPtr->WIN0H = 240;
- sTransitionStructPtr->WIN0V = 160;
+ sTransitionStructPtr->WINOUT = WINOUT_WIN01_ALL;
+ sTransitionStructPtr->WIN0H = DISPLAY_WIDTH;
+ sTransitionStructPtr->WIN0V = DISPLAY_HEIGHT;
for (i = 0; i < 0xA0; i++)
{
@@ -2960,17 +2960,15 @@ static bool8 Phase2_RectangularSpiral_Func2(struct Task *task)
if (sub_8149048(gUnknown_085C8D38[j / 2], &sRectangularSpiralTransition[j]))
{
- u32 one;
done = FALSE;
var = sRectangularSpiralTransition[j].field_2;
- one = 1;
- if ((j & 1) == one)
+ if ((j % 2) == 1)
var = 0x27D - var;
var2 = var % 32;
- var3 = var / 32 * 32;
+ var3 = var / 32;
- tilemap[var3 + var2] = 0xF002;
+ SOME_VRAM_STORE(tilemap, var3, var2, 0xF002);
}
}
}
@@ -3116,7 +3114,7 @@ static bool8 Phase2_Rayquaza_Func3(struct Task *task)
InitTransitionStructVars();
ScanlineEffect_Clear();
- SetGpuReg(REG_OFFSET_BG0CNT, 0x9A08);
+ SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(26) | BGCNT_TXT256x512);
GetBg0TilesDst(&tilemap, &tileset);
CpuFill16(0, tilemap, 0x800);
CpuCopy16(sRayquaza_Tileset, tileset, 0x2000);
@@ -3207,9 +3205,9 @@ static bool8 Phase2_Rayquaza_Func9(struct Task *task)
u16 i;
sTransitionStructPtr->WININ = 0;
- sTransitionStructPtr->WINOUT = 63;
- sTransitionStructPtr->WIN0H = 240;
- sTransitionStructPtr->WIN0V = 160;
+ sTransitionStructPtr->WINOUT = WINOUT_WIN01_ALL;
+ sTransitionStructPtr->WIN0H = DISPLAY_WIDTH;
+ sTransitionStructPtr->WIN0V = DISPLAY_HEIGHT;
for (i = 0; i < 160; i++)
{
@@ -3255,11 +3253,11 @@ static bool8 Phase2_WhiteFade_Func1(struct Task *task)
InitTransitionStructVars();
ScanlineEffect_Clear();
- sTransitionStructPtr->BLDCNT = 0xBF;
+ sTransitionStructPtr->BLDCNT = BLDCNT_TGT1_ALL | BLDCNT_EFFECT_LIGHTEN;
sTransitionStructPtr->BLDY = 0;
- sTransitionStructPtr->WININ = 0x1E;
- sTransitionStructPtr->WINOUT = 0x3F;
- sTransitionStructPtr->WIN0V = 0xA0;
+ sTransitionStructPtr->WININ = WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ;
+ sTransitionStructPtr->WINOUT = WINOUT_WIN01_ALL;
+ sTransitionStructPtr->WIN0V = DISPLAY_HEIGHT;
for (i = 0; i < 160; i++)
{
@@ -3285,8 +3283,8 @@ static bool8 Phase2_WhiteFade_Func2(struct Task *task)
for (i = 0, posY = 0; i < 8; i++, posY += 0x14)
{
sprite = &gSprites[CreateInvisibleSprite(sub_8149864)];
- sprite->pos1.x = 0xF0;
- sprite->pos1.y = posY;
+ sprite->x = 0xF0;
+ sprite->y = posY;
sprite->data[5] = arr1[i];
}
sprite->data[6]++;
@@ -3314,10 +3312,10 @@ static bool8 Phase2_WhiteFade_Func4(struct Task *task)
SetVBlankCallback(0);
SetHBlankCallback(0);
- sTransitionStructPtr->WIN0H = 0xF0;
+ sTransitionStructPtr->WIN0H = DISPLAY_WIDTH;
sTransitionStructPtr->BLDY = 0;
sTransitionStructPtr->BLDCNT = 0xFF;
- sTransitionStructPtr->WININ = 0x3F;
+ sTransitionStructPtr->WININ = WININ_WIN0_ALL;
SetVBlankCallback(VBlankCB1_Phase2_WhiteFade);
@@ -3375,21 +3373,21 @@ static void sub_8149864(struct Sprite *sprite)
else
{
u16 i;
- u16* ptr1 = &gScanlineEffectRegBuffers[0][sprite->pos1.y];
- u16* ptr2 = &gScanlineEffectRegBuffers[0][sprite->pos1.y + 160];
+ u16* ptr1 = &gScanlineEffectRegBuffers[0][sprite->y];
+ u16* ptr2 = &gScanlineEffectRegBuffers[0][sprite->y + 160];
for (i = 0; i < 20; i++)
{
ptr1[i] = sprite->data[0] >> 8;
- ptr2[i] = (u8)(sprite->pos1.x);
+ ptr2[i] = (u8)(sprite->x);
}
- if (sprite->pos1.x == 0 && sprite->data[0] == 0x1000)
+ if (sprite->x == 0 && sprite->data[0] == 0x1000)
sprite->data[1] = 1;
- sprite->pos1.x -= 16;
+ sprite->x -= 16;
sprite->data[0] += 0x80;
- if (sprite->pos1.x < 0)
- sprite->pos1.x = 0;
+ if (sprite->x < 0)
+ sprite->x = 0;
if (sprite->data[0] > 0x1000)
sprite->data[0] = 0x1000;
@@ -3468,9 +3466,9 @@ static bool8 Phase2_Shards_Func1(struct Task *task)
InitTransitionStructVars();
ScanlineEffect_Clear();
- sTransitionStructPtr->WININ = 0x3F;
+ sTransitionStructPtr->WININ = WININ_WIN0_ALL;
sTransitionStructPtr->WINOUT = 0;
- sTransitionStructPtr->WIN0V = 0xA0;
+ sTransitionStructPtr->WIN0V = DISPLAY_HEIGHT;
for (i = 0; i < 160; i++)
{
@@ -3675,7 +3673,7 @@ static bool8 Phase1_TransitionAll_Func2(struct Task *task)
static void InitTransitionStructVars(void)
{
memset(sTransitionStructPtr, 0, sizeof(*sTransitionStructPtr));
- sub_8089C08(&sTransitionStructPtr->field_14, &sTransitionStructPtr->field_16);
+ GetCameraOffsetWithPan(&sTransitionStructPtr->field_14, &sTransitionStructPtr->field_16);
}
static void VBlankCB_BattleTransition(void)
@@ -3895,8 +3893,8 @@ static bool8 Phase2_FrontierLogoWave_Func1(struct Task *task)
task->tData5 = 0;
task->tData6 = 16;
task->tData7 = 2560;
- sTransitionStructPtr->BLDCNT = 0x3F41;
- sTransitionStructPtr->BLDALPHA = (task->tData6 << 8) | (task->tData5);
+ sTransitionStructPtr->BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL;
+ sTransitionStructPtr->BLDALPHA = BLDALPHA_BLEND(task->tData5, task->tData6);
REG_BLDCNT = sTransitionStructPtr->BLDCNT;
REG_BLDALPHA = sTransitionStructPtr->BLDALPHA;
GetBg0TilesDst(&tilemap, &tileset);
@@ -3965,7 +3963,7 @@ static bool8 Phase2_FrontierLogoWave_Func4(struct Task *task)
else if (task->tData6 > 0)
task->tData6--;
- sTransitionStructPtr->BLDALPHA = (task->tData6 << 8) | (task->tData5);
+ sTransitionStructPtr->BLDALPHA = BLDALPHA_BLEND(task->tData5, task->tData6);
}
for (i = 0; i < 160; i++, var6 += var8)
@@ -4328,7 +4326,10 @@ static bool8 Phase2_FrontierSquaresScroll_Func5(struct Task *task)
BlendPalettes(PALETTES_ALL, 0x10, 0);
DestroyTask(FindTaskIdByFunc(task->func));
+
+#ifndef UBFIX
task->tState++; // UB: changing value of a destroyed task
+#endif
return FALSE;
}
diff --git a/src/battle_transition_frontier.c b/src/battle_transition_frontier.c
index cb3519c4e..2d34c9f86 100644
--- a/src/battle_transition_frontier.c
+++ b/src/battle_transition_frontier.c
@@ -243,7 +243,7 @@ static void SpriteCB_LogoCircleSlide(struct Sprite *sprite)
{
s16 *data = sprite->data;
- if (sprite->pos1.x == data[0] && sprite->pos1.y == data[1])
+ if (sprite->x == data[0] && sprite->y == data[1])
{
sprite->callback = SpriteCallbackDummy;
}
@@ -251,7 +251,7 @@ static void SpriteCB_LogoCircleSlide(struct Sprite *sprite)
{
if (data[4] == data[6])
{
- sprite->pos1.x += data[2];
+ sprite->x += data[2];
data[4] = 0;
}
else
@@ -261,7 +261,7 @@ static void SpriteCB_LogoCircleSlide(struct Sprite *sprite)
if (data[5] == data[7])
{
- sprite->pos1.y += data[3];
+ sprite->y += data[3];
data[5] = 0;
}
else
@@ -305,8 +305,8 @@ static u8 CreateSpiralingLogoCircleSprite(s16 x, s16 y, s16 arg2, s16 arg3, s16
static void SpriteCB_LogoCircleSpiral(struct Sprite *sprite)
{
- sprite->pos2.x = (Sin2(sprite->data[2]) * sprite->data[4]) >> 12; // div by 4096
- sprite->pos2.y = (Cos2(sprite->data[2]) * sprite->data[4]) >> 12; // div by 4096
+ sprite->x2 = (Sin2(sprite->data[2]) * sprite->data[4]) >> 12; // div by 4096
+ sprite->y2 = (Cos2(sprite->data[2]) * sprite->data[4]) >> 12; // div by 4096
sprite->data[2] = (sprite->data[2] + sprite->data[3]) % 360;
diff --git a/src/battle_tv.c b/src/battle_tv.c
index 8c8ea90ab..8c1f8044a 100644
--- a/src/battle_tv.c
+++ b/src/battle_tv.c
@@ -666,7 +666,7 @@ void BattleTv_SetDataBasedOnString(u16 stringId)
case STRINGID_CRITICALHIT:
AddMovePoints(PTS_CRITICAL_HIT, moveSlot, 0, 0);
break;
- case STRINGID_PKMNSSTATCHANGED:
+ case STRINGID_ATTACKERSSTATROSE:
if (gBattleTextBuff1[2] != 0)
{
if (*statStringId == STRINGID_STATSHARPLY)
@@ -675,7 +675,7 @@ void BattleTv_SetDataBasedOnString(u16 stringId)
AddMovePoints(PTS_STAT_INCREASE_1, moveSlot, gBattleTextBuff1[2] - 1, 0);
}
break;
- case STRINGID_PKMNSSTATCHANGED2:
+ case STRINGID_DEFENDERSSTATROSE:
if (gBattleTextBuff1[2] != 0)
{
if (gBattlerAttacker == gBattlerTarget)
@@ -691,11 +691,11 @@ void BattleTv_SetDataBasedOnString(u16 stringId)
}
}
break;
- case STRINGID_PKMNSSTATCHANGED3:
+ case STRINGID_ATTACKERSSTATFELL:
if (gBattleTextBuff1[2] != 0)
AddMovePoints(PTS_STAT_DECREASE_SELF, moveSlot, gBattleTextBuff1[2] - 1, 0);
break;
- case STRINGID_PKMNSSTATCHANGED4:
+ case STRINGID_DEFENDERSSTATFELL:
if (gBattleTextBuff1[2] != 0)
{
if (*statStringId == STRINGID_STATHARSHLY)
@@ -1246,7 +1246,7 @@ static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3)
break;
case PTS_REFLECT:
// If hit Reflect with damaging physical move
- if (type < TYPE_MYSTERY && power != 0 && tvPtr->side[defSide].reflectMonId != 0)
+ if (IS_TYPE_PHYSICAL(type) && power != 0 && tvPtr->side[defSide].reflectMonId != 0)
{
u32 id = (tvPtr->side[defSide].reflectMonId - 1) * 4;
movePoints->points[defSide][id + tvPtr->side[defSide].reflectMoveSlot] += sPointsArray[caseId][0];
@@ -1254,7 +1254,7 @@ static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3)
break;
case PTS_LIGHT_SCREEN:
// If hit Light Screen with damaging special move
- if (type >= TYPE_MYSTERY && power != 0 && tvPtr->side[defSide].lightScreenMonId != 0)
+ if (!IS_TYPE_PHYSICAL(type) && power != 0 && tvPtr->side[defSide].lightScreenMonId != 0)
{
u32 id = (tvPtr->side[defSide].lightScreenMonId - 1) * 4;
movePoints->points[defSide][id + tvPtr->side[defSide].lightScreenMoveSlot] += sPointsArray[caseId][0];
diff --git a/src/battle_util.c b/src/battle_util.c
index 6e1202bd1..cbcd445b7 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -49,7 +49,29 @@ extern const u8 *const gBattlescriptsForRunningByItem[];
extern const u8 *const gBattlescriptsForUsingItem[];
extern const u8 *const gBattlescriptsForSafariActions[];
-static const u8 sPkblToEscapeFactor[][3] = {{0, 0, 0}, {3, 5, 0}, {2, 3, 0}, {1, 2, 0}, {1, 1, 0}};
+static const u8 sPkblToEscapeFactor[][3] = {
+ {
+ [B_MSG_MON_CURIOUS] = 0,
+ [B_MSG_MON_ENTHRALLED] = 0,
+ [B_MSG_MON_IGNORED] = 0
+ },{
+ [B_MSG_MON_CURIOUS] = 3,
+ [B_MSG_MON_ENTHRALLED] = 5,
+ [B_MSG_MON_IGNORED] = 0
+ },{
+ [B_MSG_MON_CURIOUS] = 2,
+ [B_MSG_MON_ENTHRALLED] = 3,
+ [B_MSG_MON_IGNORED] = 0
+ },{
+ [B_MSG_MON_CURIOUS] = 1,
+ [B_MSG_MON_ENTHRALLED] = 2,
+ [B_MSG_MON_IGNORED] = 0
+ },{
+ [B_MSG_MON_CURIOUS] = 1,
+ [B_MSG_MON_ENTHRALLED] = 1,
+ [B_MSG_MON_IGNORED] = 0
+ }
+};
static const u8 sGoNearCounterToCatchFactor[] = {4, 3, 2, 1};
static const u8 sGoNearCounterToEscapeFactor[] = {4, 4, 4, 4};
@@ -238,10 +260,9 @@ void HandleAction_UseMove(void)
}
}
- // choose battlescript
- if (gBattleTypeFlags & BATTLE_TYPE_PALACE
- && gProtectStructs[gBattlerAttacker].palaceUnableToUseMove)
+ if (gBattleTypeFlags & BATTLE_TYPE_PALACE && gProtectStructs[gBattlerAttacker].palaceUnableToUseMove)
{
+ // Battle Palace, select battle script for failure to use move
if (gBattleMons[gBattlerAttacker].hp == 0)
{
gCurrentActionFuncId = B_ACTION_FINISHED;
@@ -249,13 +270,13 @@ void HandleAction_UseMove(void)
}
else if (gPalaceSelectionBattleScripts[gBattlerAttacker] != NULL)
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_INCAPABLE_OF_POWER;
gBattlescriptCurrInstr = gPalaceSelectionBattleScripts[gBattlerAttacker];
gPalaceSelectionBattleScripts[gBattlerAttacker] = NULL;
}
else
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_INCAPABLE_OF_POWER;
gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround;
}
}
@@ -318,26 +339,29 @@ void HandleAction_UseItem(void)
case AI_ITEM_HEAL_HP:
break;
case AI_ITEM_CURE_CONDITION:
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- if (*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & 1)
+ gBattleCommunication[MULTISTRING_CHOOSER] = AI_HEAL_CONFUSION;
+ if (*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & (1 << AI_HEAL_CONFUSION))
{
if (*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & 0x3E)
- gBattleCommunication[MULTISTRING_CHOOSER] = 5;
+ gBattleCommunication[MULTISTRING_CHOOSER] = AI_HEAL_SLEEP;
}
else
{
+ // Check for other statuses, stopping at first (shouldn't be more than one)
while (!(*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & 1))
{
*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) >>= 1;
gBattleCommunication[MULTISTRING_CHOOSER]++;
+ // MULTISTRING_CHOOSER will be either AI_HEAL_PARALYSIS, AI_HEAL_FREEZE,
+ // AI_HEAL_BURN, AI_HEAL_POISON, or AI_HEAL_SLEEP
}
}
break;
case AI_ITEM_X_STAT:
- gBattleCommunication[MULTISTRING_CHOOSER] = 4;
- if (*(gBattleStruct->AI_itemFlags + (gBattlerAttacker >> 1)) & 0x80)
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STAT_ROSE_ITEM;
+ if (*(gBattleStruct->AI_itemFlags + (gBattlerAttacker >> 1)) & (1 << AI_DIRE_HIT))
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 5;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_USED_DIRE_HIT;
}
else
{
@@ -354,11 +378,20 @@ void HandleAction_UseItem(void)
gBattleScripting.animArg2 = 0;
}
break;
- case AI_ITEM_GUARD_SPECS:
+ case AI_ITEM_GUARD_SPEC:
+ // It seems probable that at some point there was a special message for
+ // an AI trainer using Guard Spec in a double battle.
+ // There isn't now however, and the assignment to 2 below goes out of
+ // bounds for gMistUsedStringIds and instead prints "{mon} is getting pumped"
+ // from the next table, gFocusEnergyUsedStringIds.
+ // In any case this isn't an issue in the retail version, as no trainers
+ // are ever given any Guard Spec to use.
+#ifndef UBFIX
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
else
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+#endif
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_MIST;
break;
}
@@ -479,7 +512,7 @@ void HandleAction_Run(void)
if (!TryRunFromBattle(gBattlerAttacker)) // failed to run away
{
ClearFuryCutterDestinyBondGrudge(gBattlerAttacker);
- gBattleCommunication[MULTISTRING_CHOOSER] = 3;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CANT_ESCAPE_2;
gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString;
gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
}
@@ -488,7 +521,7 @@ void HandleAction_Run(void)
{
if (gBattleMons[gBattlerAttacker].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ATTACKER_CANT_ESCAPE;
gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString;
gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
}
@@ -567,11 +600,11 @@ void HandleAction_GoNear(void)
if (gBattleStruct->safariGoNearCounter < 3)
{
gBattleStruct->safariGoNearCounter++;
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CREPT_CLOSER;
}
else
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 1; // Can't get closer.
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CANT_GET_CLOSER;
}
gBattlescriptCurrInstr = gBattlescriptsForSafariActions[1];
gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
@@ -801,7 +834,7 @@ void MarkAllBattlersForControllerExec(void) // unused
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
for (i = 0; i < gBattlersCount; i++)
- gBattleControllerExecFlags |= gBitTable[i] << 0x1C;
+ gBattleControllerExecFlags |= gBitTable[i] << (32 - MAX_BATTLERS_COUNT);
}
else
{
@@ -813,7 +846,7 @@ void MarkAllBattlersForControllerExec(void) // unused
void MarkBattlerForControllerExec(u8 battlerId)
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
- gBattleControllerExecFlags |= gBitTable[battlerId] << 0x1C;
+ gBattleControllerExecFlags |= gBitTable[battlerId] << (32 - MAX_BATTLERS_COUNT);
else
gBattleControllerExecFlags |= gBitTable[battlerId];
}
@@ -1295,20 +1328,20 @@ u8 DoFieldEndTurnEffects(void)
{
gBattleWeather &= ~WEATHER_RAIN_TEMPORARY;
gBattleWeather &= ~WEATHER_RAIN_DOWNPOUR;
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_RAIN_STOPPED;
}
else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR)
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DOWNPOUR_CONTINUES;
else
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_RAIN_CONTINUES;
}
else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR)
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DOWNPOUR_CONTINUES;
}
else
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_RAIN_CONTINUES;
}
BattleScriptExecute(BattleScript_RainContinuesOrEnds);
@@ -1330,7 +1363,7 @@ u8 DoFieldEndTurnEffects(void)
}
gBattleScripting.animArg1 = B_ANIM_SANDSTORM_CONTINUES;
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SANDSTORM;
BattleScriptExecute(gBattlescriptCurrInstr);
effect++;
}
@@ -1368,7 +1401,7 @@ u8 DoFieldEndTurnEffects(void)
}
gBattleScripting.animArg1 = B_ANIM_HAIL_CONTINUES;
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_HAIL;
BattleScriptExecute(gBattlescriptCurrInstr);
effect++;
}
@@ -1597,16 +1630,16 @@ u8 DoBattlerEndTurnEffects(void)
if (WasUnableToUseMove(gActiveBattler))
{
CancelMultiTurnMoves(gActiveBattler);
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_ENDS;
}
else if (gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR)
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_CONTINUES;
gBattleMons[gActiveBattler].status2 |= STATUS2_MULTIPLETURNS;
}
else
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_ENDS;
CancelMultiTurnMoves(gActiveBattler);
}
BattleScriptExecute(BattleScript_PrintUproarOverTurns);
@@ -1749,9 +1782,9 @@ bool8 HandleWishPerishSongOnTurnEnd(void)
&& gBattleMons[gActiveBattler].hp != 0)
{
if (gWishFutureKnock.futureSightMove[gActiveBattler] == MOVE_FUTURE_SIGHT)
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FUTURE_SIGHT;
else
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DOOM_DESIRE;
PREPARE_MOVE_BUFFER(gBattleTextBuff1, gWishFutureKnock.futureSightMove[gActiveBattler]);
@@ -1850,7 +1883,7 @@ bool8 HandleFaintedMonActions(void)
gBattleStruct->faintedActionsState++;
for (i = 0; i < gBattlersCount; i++)
{
- if (gAbsentBattlerFlags & gBitTable[i] && !HasNoMonsToSwitch(i, 6, 6))
+ if (gAbsentBattlerFlags & gBitTable[i] && !HasNoMonsToSwitch(i, PARTY_SIZE, PARTY_SIZE))
gAbsentBattlerFlags &= ~(gBitTable[i]);
}
// fall through
@@ -1962,7 +1995,7 @@ u8 AtkCanceller_UnableToUseMove(void)
gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP);
gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE);
BattleScriptPushCursor();
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WOKE_UP_UPROAR;
gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp;
effect = 2;
}
@@ -1990,7 +2023,7 @@ u8 AtkCanceller_UnableToUseMove(void)
{
gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE);
BattleScriptPushCursor();
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WOKE_UP;
gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp;
effect = 2;
}
@@ -2019,7 +2052,7 @@ u8 AtkCanceller_UnableToUseMove(void)
gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_FREEZE);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze;
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DEFROSTED;
}
effect = 2;
}
@@ -2030,7 +2063,7 @@ u8 AtkCanceller_UnableToUseMove(void)
{
CancelMultiTurnMoves(gBattlerAttacker);
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_LOAFING;
gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround;
gMoveResultFlags |= MOVE_RESULT_MISSED;
effect = 1;
@@ -2103,12 +2136,14 @@ u8 AtkCanceller_UnableToUseMove(void)
{
if (Random() & 1)
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ // The MULTISTRING_CHOOSER is used here as a bool to signal
+ // to BattleScript_MoveUsedIsConfused whether or not damage was taken
+ gBattleCommunication[MULTISTRING_CHOOSER] = FALSE;
BattleScriptPushCursor();
}
else // confusion dmg
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = TRUE;
gBattlerTarget = gBattlerAttacker;
gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerAttacker], MOVE_POUND, 0, 40, 0, gBattlerAttacker, gBattlerAttacker);
gProtectStructs[gBattlerAttacker].confusionSelfDmg = 1;
@@ -2195,7 +2230,7 @@ u8 AtkCanceller_UnableToUseMove(void)
gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_FREEZE);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze;
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DEFROSTED_BY_MOVE;
}
effect = 2;
}
@@ -2593,7 +2628,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
if (gBattleMons[battler].statStages[STAT_SPEED] < MAX_STAT_STAGE && gDisableStructs[battler].isFirstTurn != 2)
{
gBattleMons[battler].statStages[STAT_SPEED]++;
- gBattleScripting.animArg1 = 0x11;
+ gBattleScripting.animArg1 = 14 + STAT_SPEED;
gBattleScripting.animArg2 = 0;
BattleScriptPushCursorAndCallback(BattleScript_SpeedBoostActivates);
gBattleScripting.battler = battler;
@@ -2655,7 +2690,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
{
if (!(gBattleResources->flags->flags[battler] & RESOURCE_FLAG_FLASH_FIRE))
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FLASH_FIRE_BOOST;
if (gProtectStructs[gBattlerAttacker].notFirstStrike)
gBattlescriptCurrInstr = BattleScript_FlashFireBoost;
else
@@ -2666,7 +2701,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
}
else
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FLASH_FIRE_NO_BOOST;
if (gProtectStructs[gBattlerAttacker].notFirstStrike)
gBattlescriptCurrInstr = BattleScript_FlashFireBoost;
else
@@ -3431,7 +3466,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
gEffectBattler = battlerId;
SET_STATCHANGER(STAT_ATK, 1, FALSE);
- gBattleScripting.animArg1 = 0xE + STAT_ATK;
+ gBattleScripting.animArg1 = 14 + STAT_ATK;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
@@ -3445,7 +3480,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
gEffectBattler = battlerId;
SET_STATCHANGER(STAT_DEF, 1, FALSE);
- gBattleScripting.animArg1 = 0xE + STAT_DEF;
+ gBattleScripting.animArg1 = 14 + STAT_DEF;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
@@ -3459,7 +3494,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
gEffectBattler = battlerId;
SET_STATCHANGER(STAT_SPEED, 1, FALSE);
- gBattleScripting.animArg1 = 0xE + STAT_SPEED;
+ gBattleScripting.animArg1 = 14 + STAT_SPEED;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
@@ -3473,7 +3508,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
gEffectBattler = battlerId;
SET_STATCHANGER(STAT_SPATK, 1, FALSE);
- gBattleScripting.animArg1 = 0xE + STAT_SPATK;
+ gBattleScripting.animArg1 = 14 + STAT_SPATK;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
@@ -3487,7 +3522,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
gEffectBattler = battlerId;
SET_STATCHANGER(STAT_SPDEF, 1, FALSE);
- gBattleScripting.animArg1 = 0xE + STAT_SPDEF;
+ gBattleScripting.animArg1 = 14 + STAT_SPDEF;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
@@ -3622,9 +3657,9 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
i++;
}
if (!(i > 1))
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CURED_PROBLEM;
else
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_NORMALIZED_STATUS;
gBattleMons[battlerId].status1 = 0;
gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION);
BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2);
@@ -3637,7 +3672,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
gBattleMons[battlerId].status2 &= ~(STATUS2_INFATUATION);
StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn);
BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2);
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CURED_PROBLEM;
effect = ITEM_EFFECT_OTHER;
}
break;
@@ -3740,7 +3775,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
gBattleMons[battlerId].status2 &= ~(STATUS2_INFATUATION);
StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn);
BattleScriptPushCursor();
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CURED_PROBLEM;
gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet;
effect = ITEM_EFFECT_OTHER;
}
@@ -3776,7 +3811,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
gBattleMons[battlerId].status1 = 0;
gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION);
BattleScriptPushCursor();
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CURED_PROBLEM;
gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet;
effect = ITEM_STATUS_CHANGE;
}
@@ -4016,7 +4051,9 @@ u8 IsMonDisobedient(void)
calc = CheckMoveLimitations(gBattlerAttacker, gBitTable[gCurrMovePos], 0xFF);
if (calc == 0xF) // all moves cannot be used
{
- gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3;
+ // Randomly select, then print a disobedient string
+ // B_MSG_LOAFING, B_MSG_WONT_OBEY, B_MSG_TURNED_AWAY, or B_MSG_PRETEND_NOT_NOTICE
+ gBattleCommunication[MULTISTRING_CHOOSER] = Random() & (NUM_LOAF_STRINGS - 1);
gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround;
return 1;
}
@@ -4024,7 +4061,7 @@ u8 IsMonDisobedient(void)
{
do
{
- gCurrMovePos = gChosenMovePos = Random() & 3;
+ gCurrMovePos = gChosenMovePos = Random() & (MAX_MON_MOVES - 1);
} while (gBitTable[gCurrMovePos] & calc);
gCalledMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
@@ -4065,7 +4102,9 @@ u8 IsMonDisobedient(void)
}
else
{
- gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3;
+ // Randomly select, then print a disobedient string
+ // B_MSG_LOAFING, B_MSG_WONT_OBEY, B_MSG_TURNED_AWAY, or B_MSG_PRETEND_NOT_NOTICE
+ gBattleCommunication[MULTISTRING_CHOOSER] = Random() & (NUM_LOAF_STRINGS - 1);
gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround;
return 1;
}
diff --git a/src/battle_util2.c b/src/battle_util2.c
index 6d51f51e7..def7302d3 100644
--- a/src/battle_util2.c
+++ b/src/battle_util2.c
@@ -10,6 +10,7 @@
#include "constants/abilities.h"
#include "random.h"
#include "battle_scripts.h"
+#include "constants/battle_string_ids.h"
void AllocateBattleResources(void)
{
@@ -136,7 +137,7 @@ u32 sub_805725C(u8 battlerId)
gBattleMons[battlerId].status1 &= ~(STATUS1_SLEEP);
gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE);
BattleScriptPushCursor();
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WOKE_UP_UPROAR;
gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp;
effect = 2;
}
@@ -163,7 +164,7 @@ u32 sub_805725C(u8 battlerId)
{
gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE);
BattleScriptPushCursor();
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WOKE_UP;
gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp;
effect = 2;
}
@@ -183,7 +184,7 @@ u32 sub_805725C(u8 battlerId)
gBattleMons[battlerId].status1 &= ~(STATUS1_FREEZE);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze;
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DEFROSTED;
}
effect = 2;
}
diff --git a/src/berry_blender.c b/src/berry_blender.c
index ede1f6e99..8e8d392db 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -1162,8 +1162,8 @@ static void SpriteCB_Berry(struct Sprite* sprite)
else
PlaySE(SE_BALL_TRAY_EXIT);
}
- sprite->pos1.x = sprite->sX;
- sprite->pos1.y = sprite->sY;
+ sprite->x = sprite->sX;
+ sprite->y = sprite->sY;
}
static void SetBerrySpriteData(struct Sprite* sprite, s16 x, s16 y, s16 bounceSpeed, s16 xSpeed, s16 ySpeed)
@@ -1426,7 +1426,7 @@ static void CB2_StartBlenderLink(void)
sBerryBlender->centerScale += 4;
if (sBerryBlender->centerScale > 255)
{
- SetGpuRegBits(REG_OFFSET_BG2CNT, 2);
+ SetGpuRegBits(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2));
sBerryBlender->mainState++;
sBerryBlender->centerScale = 256;
sBerryBlender->arrowPos = sArrowStartPos[sArrowStartPosIds[sBerryBlender->numPlayers - 2]];
@@ -1726,7 +1726,7 @@ static void CB2_StartBlenderLocal(void)
sBerryBlender->mainState++;
sBerryBlender->centerScale = 256;
sBerryBlender->arrowPos = sArrowStartPos[sArrowStartPosIds[sBerryBlender->numPlayers - 2]];
- SetGpuRegBits(REG_OFFSET_BG2CNT, 2);
+ SetGpuRegBits(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2));
sBerryBlender->framesToWait = 0;
PlaySE(SE_TRUCK_DOOR);
PrintPlayerNames();
@@ -3163,8 +3163,8 @@ static void SpriteCB_Particle(struct Sprite* sprite)
{
sprite->data[2] += sprite->data[0];
sprite->data[3] += sprite->data[1];
- sprite->pos2.x = sprite->data[2] / 8;
- sprite->pos2.y = sprite->data[3] / 8;
+ sprite->x2 = sprite->data[2] / 8;
+ sprite->y2 = sprite->data[3] / 8;
if (sprite->animEnded)
DestroySprite(sprite);
@@ -3197,7 +3197,7 @@ static void CreateParticleSprites(void)
static void SpriteCB_ScoreSymbol(struct Sprite* sprite)
{
sprite->data[0]++;
- sprite->pos2.y = -(sprite->data[0] / 3);
+ sprite->y2 = -(sprite->data[0] / 3);
if (sprite->animEnded)
DestroySprite(sprite);
@@ -3206,10 +3206,10 @@ static void SpriteCB_ScoreSymbol(struct Sprite* sprite)
static void SpriteCB_ScoreSymbolBest(struct Sprite* sprite)
{
sprite->data[0]++;
- sprite->pos2.y = -(sprite->data[0] * 2);
+ sprite->y2 = -(sprite->data[0] * 2);
- if (sprite->pos2.y < -12)
- sprite->pos2.y = -12;
+ if (sprite->y2 < -12)
+ sprite->y2 = -12;
if (sprite->animEnded)
DestroySprite(sprite);
}
@@ -3264,7 +3264,7 @@ static void SpriteCB_CountdownNumber(struct Sprite* sprite)
break;
}
- sprite->pos2.y = sprite->sYPos;
+ sprite->y2 = sprite->sYPos;
}
#undef sState
@@ -3300,7 +3300,7 @@ static void SpriteCB_Start(struct Sprite* sprite)
break;
}
- sprite->pos2.y = sprite->data[1];
+ sprite->y2 = sprite->data[1];
}
static void TryUpdateProgressBar(u16 current, u16 limit)
@@ -3445,8 +3445,8 @@ static bool8 UpdateBlenderLandScreenShake(void)
static void SpriteCB_PlayerArrow(struct Sprite* sprite)
{
- sprite->pos2.x = -(sBerryBlender->bg_X);
- sprite->pos2.y = -(sBerryBlender->bg_Y);
+ sprite->x2 = -(sBerryBlender->bg_X);
+ sprite->y2 = -(sBerryBlender->bg_Y);
}
static void TryUpdateBerryBlenderRecord(void)
@@ -3859,13 +3859,13 @@ static void Blender_AddTextPrinter(u8 windowId, const u8 *string, u8 x, u8 y, s3
case 0:
case 3:
txtColor[0] = TEXT_COLOR_WHITE;
- txtColor[1] = TEXT_COLOR_DARK_GREY;
- txtColor[2] = TEXT_COLOR_LIGHT_GREY;
+ txtColor[1] = TEXT_COLOR_DARK_GRAY;
+ txtColor[2] = TEXT_COLOR_LIGHT_GRAY;
break;
case 1:
txtColor[0] = TEXT_COLOR_TRANSPARENT;
- txtColor[1] = TEXT_COLOR_DARK_GREY;
- txtColor[2] = TEXT_COLOR_LIGHT_GREY;
+ txtColor[1] = TEXT_COLOR_DARK_GRAY;
+ txtColor[2] = TEXT_COLOR_LIGHT_GRAY;
break;
case 2:
txtColor[0] = TEXT_COLOR_TRANSPARENT;
diff --git a/src/berry_crush.c b/src/berry_crush.c
index e63eb9f82..5504d05d6 100755
--- a/src/berry_crush.c
+++ b/src/berry_crush.c
@@ -152,9 +152,9 @@ enum {
#define PLAY_AGAIN_NO_BERRIES 3
enum {
- COLORID_GREY,
+ COLORID_GRAY,
COLORID_BLACK,
- COLORID_LIGHT_GREY,
+ COLORID_LIGHT_GRAY,
COLORID_BLUE,
COLORID_GREEN,
COLORID_RED,
@@ -457,9 +457,9 @@ static const struct BgTemplate sBgTemplates[4] =
static const u8 sTextColorTable[][3] =
{
- [COLORID_GREY] = {TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY},
- [COLORID_BLACK] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY},
- [COLORID_LIGHT_GREY] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_GREY, TEXT_COLOR_RED},
+ [COLORID_GRAY] = {TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY},
+ [COLORID_BLACK] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY},
+ [COLORID_LIGHT_GRAY] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_GRAY, TEXT_COLOR_RED},
[COLORID_BLUE] = {TEXT_COLOR_WHITE, TEXT_COLOR_BLUE, TEXT_COLOR_LIGHT_BLUE},
[COLORID_GREEN] = {TEXT_COLOR_WHITE, TEXT_COLOR_GREEN, TEXT_COLOR_LIGHT_GREEN},
[COLORID_RED] = {TEXT_COLOR_WHITE, TEXT_COLOR_RED, TEXT_COLOR_LIGHT_RED},
@@ -1387,8 +1387,8 @@ static void CreateBerrySprites(struct BerryCrushGame *game, struct BerryCrushGam
gfx->berrySprites[i] = &gSprites[spriteId];
gfx->berrySprites[i]->oam.priority = 3;
gfx->berrySprites[i]->affineAnimPaused = TRUE;
- gfx->berrySprites[i]->pos1.x = gfx->playerCoords[i]->berryXOffset + 120;
- gfx->berrySprites[i]->pos1.y = -16;
+ gfx->berrySprites[i]->x = gfx->playerCoords[i]->berryXOffset + 120;
+ gfx->berrySprites[i]->y = -16;
data = gfx->berrySprites[i]->data;
speed = 512;
sYSpeed = speed;
@@ -1404,7 +1404,7 @@ static void CreateBerrySprites(struct BerryCrushGame *game, struct BerryCrushGam
var2 = speed + 32;
var2 = var2 / 2;
var1 = MathUtil_Div16Shift(7, Q_8_8(63.5), var2);
- sX = (u16)gfx->berrySprites[i]->pos1.x * 128;
+ sX = (u16)gfx->berrySprites[i]->x * 128;
sXSpeed = MathUtil_Div16Shift(7, distance, var1);
var1 = MathUtil_Mul16Shift(7, var1, 85);
sSinIdx = 0;
@@ -1420,21 +1420,21 @@ static void SpriteCB_DropBerryIntoCrusher(struct Sprite *sprite)
s16 *data = sprite->data;
sYSpeed += sYAccel;
- sprite->pos2.y += sYSpeed >> 8;
+ sprite->y2 += sYSpeed >> 8;
if (sBitfield & F_MOVE_HORIZ)
{
sprite->sX += sXSpeed;
sSinIdx += sSinSpeed;
- sprite->pos2.x = Sin(sSinIdx >> 7, sAmplitude);
+ sprite->x2 = Sin(sSinIdx >> 7, sAmplitude);
if ((sBitfield & F_MOVE_HORIZ) && (sSinIdx >> 7) > 126)
{
- sprite->pos2.x = 0;
+ sprite->x2 = 0;
sBitfield &= MASK_TARGET_Y;
}
}
- sprite->pos1.x = sX >> 7;
- if (sprite->pos1.y + sprite->pos2.y >= (sBitfield & MASK_TARGET_Y))
+ sprite->x = sX >> 7;
+ if (sprite->y + sprite->y2 >= (sBitfield & MASK_TARGET_Y))
{
sprite->callback = SpriteCallbackDummy;
FreeSpriteOamMatrix(sprite);
@@ -1490,8 +1490,8 @@ static void UpdateInputEffects(struct BerryCrushGame *game, struct BerryCrushGam
gfx->impactSprites[i]->invisible = FALSE;
gfx->impactSprites[i]->animPaused = FALSE;
- gfx->impactSprites[i]->pos2.x = sImpactCoords[(flags % (ARRAY_COUNT(sImpactCoords) + 1)) - 1][0];
- gfx->impactSprites[i]->pos2.y = sImpactCoords[(flags % (ARRAY_COUNT(sImpactCoords) + 1)) - 1][1];
+ gfx->impactSprites[i]->x2 = sImpactCoords[(flags % (ARRAY_COUNT(sImpactCoords) + 1)) - 1][0];
+ gfx->impactSprites[i]->y2 = sImpactCoords[(flags % (ARRAY_COUNT(sImpactCoords) + 1)) - 1][1];
}
#undef flags
@@ -1513,10 +1513,10 @@ static void UpdateInputEffects(struct BerryCrushGame *game, struct BerryCrushGam
if (gfx->sparkleSprites[i]->invisible)
{
gfx->sparkleSprites[i]->callback = SpriteCB_Sparkle_Init;
- gfx->sparkleSprites[i]->pos1.x = sSparkleCoords[i][0] + 120;
- gfx->sparkleSprites[i]->pos1.y = sSparkleCoords[i][1] + 136 - (yModifier * 4);
- gfx->sparkleSprites[i]->pos2.x = sSparkleCoords[i][0] + (sSparkleCoords[i][0] / (xModifier * 4));
- gfx->sparkleSprites[i]->pos2.y = sSparkleCoords[i][1];
+ gfx->sparkleSprites[i]->x = sSparkleCoords[i][0] + 120;
+ gfx->sparkleSprites[i]->y = sSparkleCoords[i][1] + 136 - (yModifier * 4);
+ gfx->sparkleSprites[i]->x2 = sSparkleCoords[i][0] + (sSparkleCoords[i][0] / (xModifier * 4));
+ gfx->sparkleSprites[i]->y2 = sSparkleCoords[i][1];
if (linkState->bigSparkle)
StartSpriteAnim(gfx->sparkleSprites[i], 1);
else
@@ -1653,7 +1653,7 @@ static void PrintResultsText(struct BerryCrushGame * game, u8 page, u8 sp14, u8
break;
}
x = GetStringRightAlignXOffset(2, gStringVar4, sp14 - 4);
- AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_GREY], 0, gStringVar4);
+ AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_GRAY], 0, gStringVar4);
if (playerId == game->localId)
StringCopy(gStringVar3, gText_1DotBlueF700);
else
@@ -1661,7 +1661,7 @@ static void PrintResultsText(struct BerryCrushGame * game, u8 page, u8 sp14, u8
gStringVar3[0] = ranking + CHAR_1;
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, game->players[playerId].name);
DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gStringVar3);
- AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, 4, y, sTextColorTable[COLORID_GREY], 0, gStringVar4);
+ AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, 4, y, sTextColorTable[COLORID_GRAY], 0, gStringVar4);
}
}
@@ -1676,34 +1676,34 @@ static void PrintCrushingResults(struct BerryCrushGame *game)
FramesToMinSec(&game->gfx, results->time);
// Print time text
- AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_GREY], 0, gText_TimeColon);
+ AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_GRAY], 0, gText_TimeColon);
// Print seconds text
x = 176 - (u8)GetStringWidth(2, gText_SpaceSec, -1);
- AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_GREY], 0, gText_SpaceSec);
+ AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_GRAY], 0, gText_SpaceSec);
// Print seconds value
ConvertIntToDecimalStringN(gStringVar1, game->gfx.secondsInt, STR_CONV_MODE_LEADING_ZEROS, 2);
ConvertIntToDecimalStringN(gStringVar2, game->gfx.secondsFrac, STR_CONV_MODE_LEADING_ZEROS, 2);
StringExpandPlaceholders(gStringVar4, gText_XDotY2);
x -= GetStringWidth(2, gStringVar4, -1);
- AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_GREY], 0, gStringVar4);
+ AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_GRAY], 0, gStringVar4);
// Print minutes text
x -= GetStringWidth(2, gText_SpaceMin, -1);
- AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_GREY], 0, gText_SpaceMin);
+ AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_GRAY], 0, gText_SpaceMin);
// Print minutes value
ConvertIntToDecimalStringN(gStringVar1, game->gfx.minutes, STR_CONV_MODE_LEADING_ZEROS, 1);
StringExpandPlaceholders(gStringVar4, gText_StrVar1);
x -= GetStringWidth(2, gStringVar4, -1);
- AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_GREY], 0, gStringVar4);
+ AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_GRAY], 0, gStringVar4);
// Print pressing speed text
y += 14;
- AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, 0, y, sTextColorTable[COLORID_GREY], 0, gText_PressingSpeed);
+ AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, 0, y, sTextColorTable[COLORID_GRAY], 0, gText_PressingSpeed);
x = 176 - (u8)GetStringWidth(2, gText_TimesPerSec, -1);
- AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_GREY], 0, gText_TimesPerSec);
+ AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_GRAY], 0, gText_TimesPerSec);
// Print pressing speed value
for (i = 0; i < 8; i++)
@@ -1716,17 +1716,17 @@ static void PrintCrushingResults(struct BerryCrushGame *game)
if (game->newRecord)
AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_RED], 0, gStringVar4);
else
- AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_GREY], 0, gStringVar4);
+ AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_GRAY], 0, gStringVar4);
// Print silkiness text
y += 14;
- AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, 0, y, sTextColorTable[COLORID_GREY], 0, gText_Silkiness);
+ AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, 0, y, sTextColorTable[COLORID_GRAY], 0, gText_Silkiness);
// Print silkiness value
ConvertIntToDecimalStringN(gStringVar1, results->silkiness, STR_CONV_MODE_RIGHT_ALIGN, 3);
StringExpandPlaceholders(gStringVar4, gText_Var1Percent);
x = 176 - (u8)GetStringWidth(2, gStringVar4, -1);
- AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_GREY], 0, gStringVar4);
+ AddTextPrinterParameterized3(game->gfx.resultsWindowId, 2, x, y, sTextColorTable[COLORID_GRAY], 0, gStringVar4);
}
static bool32 OpenResultsWindow(struct BerryCrushGame *game, struct BerryCrushGame_Gfx *gfx)
@@ -1825,9 +1825,9 @@ static void Task_ShowRankings(u8 taskId)
{
ConvertIntToDecimalStringN(gStringVar1, i + 2, STR_CONV_MODE_LEFT_ALIGN, 1);
StringExpandPlaceholders(gStringVar4, gText_Var1Players);
- AddTextPrinterParameterized3(tWindowId, 1, 0, yPos, sTextColorTable[COLORID_GREY], 0, gStringVar4);
+ AddTextPrinterParameterized3(tWindowId, 1, 0, yPos, sTextColorTable[COLORID_GRAY], 0, gStringVar4);
xPos = 192 - (u8)GetStringWidth(1, gText_TimesPerSec, -1);
- AddTextPrinterParameterized3(tWindowId, 1, xPos, yPos, sTextColorTable[COLORID_GREY], 0, gText_TimesPerSec);
+ AddTextPrinterParameterized3(tWindowId, 1, xPos, yPos, sTextColorTable[COLORID_GRAY], 0, gText_TimesPerSec);
for (j = 0; j < 8; j++)
{
if (((tPressingSpeeds(i) & 0xFF) >> (7 - j)) & 1)
@@ -1837,7 +1837,7 @@ static void Task_ShowRankings(u8 taskId)
ConvertIntToDecimalStringN(gStringVar2, score / 1000000, STR_CONV_MODE_LEADING_ZEROS, 2);
StringExpandPlaceholders(gStringVar4, gText_XDotY3);
xPos -= GetStringWidth(1, gStringVar4, -1);
- AddTextPrinterParameterized3(tWindowId, 1, xPos, yPos, sTextColorTable[COLORID_GREY], 0, gStringVar4);
+ AddTextPrinterParameterized3(tWindowId, 1, xPos, yPos, sTextColorTable[COLORID_GRAY], 0, gStringVar4);
yPos += 16;
score = 0;
}
@@ -1933,7 +1933,7 @@ static void DrawPlayerNameWindows(struct BerryCrushGame *game)
1,
0,
0,
- sTextColorTable[COLORID_LIGHT_GREY],
+ sTextColorTable[COLORID_LIGHT_GRAY],
0,
game->players[i].name
);
@@ -2071,8 +2071,8 @@ static void SpriteCB_Sparkle_End(struct Sprite *sprite)
u8 i;
for (i = 0; i < ARRAY_COUNT(sprite->data); i++)
sprite->data[i] = 0;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->invisible = TRUE;
sprite->animPaused = TRUE;
sprite->callback = SpriteCallbackDummy;
@@ -2097,20 +2097,20 @@ static void SpriteCB_Sparkle(struct Sprite *sprite)
s16 *data = sprite->data;
sYSpeed += sYAccel;
- sprite->pos2.y += sYSpeed >> 8;
+ sprite->y2 += sYSpeed >> 8;
if (sBitfield & F_MOVE_HORIZ)
{
sprite->sX += sXSpeed;
sSinIdx += sSinSpeed;
- sprite->pos2.x = Sin(sSinIdx >> 7, sAmplitude);
+ sprite->x2 = Sin(sSinIdx >> 7, sAmplitude);
if (sBitfield & F_MOVE_HORIZ && sSinIdx >> 7 > 126)
{
- sprite->pos2.x = 0;
+ sprite->x2 = 0;
sBitfield &= MASK_TARGET_Y;
}
}
- sprite->pos1.x = sX >> 7;
- if (sprite->pos1.y + sprite->pos2.y > (sBitfield & MASK_TARGET_Y))
+ sprite->x = sX >> 7;
+ if (sprite->y + sprite->y2 > (sBitfield & MASK_TARGET_Y))
sprite->callback = SpriteCB_Sparkle_End;
}
@@ -2125,17 +2125,17 @@ static void SpriteCB_Sparkle_Init(struct Sprite *sprite)
sYSpeed = var;
sYAccel = 32;
sBitfield = 168; // Setting bits in MASK_TARGET_Y
- xMult = sprite->pos2.x * 128;
- xDiv = MathUtil_Div16Shift(7, (168 - sprite->pos1.y) << 7, (var + 32) >> 1);
- sprite->sX = sprite->pos1.x << 7;
+ xMult = sprite->x2 * 128;
+ xDiv = MathUtil_Div16Shift(7, (168 - sprite->y) << 7, (var + 32) >> 1);
+ sprite->sX = sprite->x << 7;
sXSpeed = MathUtil_Div16Shift(7, xMult, xDiv);
var = MathUtil_Mul16Shift(7, xDiv, 85);
sSinIdx = zero;
sSinSpeed = MathUtil_Div16Shift(7, Q_8_8(63.5), var);
- sAmplitude = sprite->pos2.x / 4;
+ sAmplitude = sprite->x2 / 4;
sBitfield |= F_MOVE_HORIZ;
- sprite->pos2.y = zero;
- sprite->pos2.x = zero;
+ sprite->y2 = zero;
+ sprite->x2 = zero;
sprite->callback = SpriteCB_Sparkle;
sprite->animPaused = FALSE;
sprite->invisible = FALSE;
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index 27efb7e7a..4632f6dc0 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -674,9 +674,9 @@ static void Task_DisplayAnotherBerry(u8 taskId)
else
posY = data[0];
- gSprites[sBerryTag->berrySpriteId].pos2.y = posY;
+ gSprites[sBerryTag->berrySpriteId].y2 = posY;
for (i = 0; i < FLAVOR_COUNT; i++)
- gSprites[sBerryTag->flavorCircleIds[i]].pos2.y = posY;
+ gSprites[sBerryTag->flavorCircleIds[i]].y2 = posY;
ChangeBgY(1, 0x1000, data[1]);
ChangeBgY(2, 0x1000, data[1]);
diff --git a/src/bike.c b/src/bike.c
index bbcda989c..e97a5e04e 100644
--- a/src/bike.c
+++ b/src/bike.c
@@ -614,27 +614,24 @@ static void AcroBikeTransition_WheelieHoppingMoving(u8 direction)
return;
}
collision = GetBikeCollision(direction);
- // TODO: Try to get rid of this goto
- if (collision == 0 || collision == COLLISION_WHEELIE_HOP)
+ if (collision && collision != COLLISION_WHEELIE_HOP)
{
- goto derp;
- }
- else if (collision == COLLISION_LEDGE_JUMP)
- {
- PlayerLedgeHoppingWheelie(direction);
- }
- else if (collision < COLLISION_STOP_SURFING || collision > COLLISION_ROTATING_GATE)
- {
- if (collision < COLLISION_VERTICAL_RAIL)
+ if (collision == COLLISION_LEDGE_JUMP)
{
- AcroBikeTransition_WheelieHoppingStanding(direction);
+ PlayerLedgeHoppingWheelie(direction);
+ return;
}
- else
+ if (collision >= COLLISION_STOP_SURFING && collision <= COLLISION_ROTATING_GATE)
+ {
+ return;
+ }
+ if (collision < COLLISION_VERTICAL_RAIL)
{
- derp:
- PlayerMovingHoppingWheelie(direction);
+ AcroBikeTransition_WheelieHoppingStanding(direction);
+ return;
}
}
+ PlayerMovingHoppingWheelie(direction);
}
static void AcroBikeTransition_SideJump(u8 direction)
@@ -1056,7 +1053,7 @@ void Bike_HandleBumpySlopeJump(void)
bool32 IsRunningDisallowed(u8 metatile)
{
- if (!(gMapHeader.flags & MAP_ALLOW_RUNNING) || IsRunningDisallowedByMetatile(metatile) == TRUE)
+ if (!gMapHeader.allowRunning || IsRunningDisallowedByMetatile(metatile) == TRUE)
return TRUE;
else
return FALSE;
diff --git a/src/cable_car.c b/src/cable_car.c
index 56118161b..32d432535 100644
--- a/src/cable_car.c
+++ b/src/cable_car.c
@@ -596,13 +596,13 @@ static void SpriteCB_CableCar(struct Sprite *sprite)
{
if (!GOING_DOWN)
{
- sprite->pos1.x = sprite->sXPos - (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
- sprite->pos1.y = sprite->sYPos - (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->x = sprite->sXPos - (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->y = sprite->sYPos - (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
}
else
{
- sprite->pos1.x = sprite->sXPos + (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
- sprite->pos1.y = sprite->sYPos + (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->x = sprite->sXPos + (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->y = sprite->sYPos + (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
}
}
}
@@ -617,20 +617,20 @@ static void SpriteCB_Player(struct Sprite *sprite)
// Move along with cable car
if (!GOING_DOWN)
{
- sprite->pos1.x = sprite->sXPos - (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
- sprite->pos1.y = sprite->sYPos - (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->x = sprite->sXPos - (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->y = sprite->sYPos - (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
}
else
{
- sprite->pos1.x = sprite->sXPos + (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
- sprite->pos1.y = sprite->sYPos + (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->x = sprite->sXPos + (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->y = sprite->sYPos + (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
}
// Bounce up and down
switch (sprite->sState)
{
case 0:
- sprite->pos2.y = 17;
+ sprite->y2 = 17;
if (sprite->sTimer++ > 9)
{
sprite->sTimer = 0;
@@ -638,7 +638,7 @@ static void SpriteCB_Player(struct Sprite *sprite)
}
break;
default:
- sprite->pos2.y = 16;
+ sprite->y2 = 16;
if (sprite->sTimer++ > 9)
{
sprite->sTimer = 0;
@@ -660,8 +660,8 @@ static void SpriteCB_HikerGoingUp(struct Sprite *sprite)
{
if (sprite->sTimer == 0)
{
- sprite->pos1.x += 2 * sprite->centerToCornerVecX;
- sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ sprite->x += 2 * sprite->centerToCornerVecX;
+ sprite->y += 16 + sprite->centerToCornerVecY;
}
if (++sprite->sTimer >= sprite->sDelay)
@@ -669,22 +669,22 @@ static void SpriteCB_HikerGoingUp(struct Sprite *sprite)
switch (sprite->sSameDir)
{
case FALSE:
- sprite->pos1.x++;
+ sprite->x++;
if ((sprite->sTimer % 4) == 0)
- sprite->pos1.y++;
+ sprite->y++;
break;
case TRUE:
// Hiker moves slower if travelling with the Cable Car
if ((sprite->sTimer % 2) != 0)
{
- sprite->pos1.x++;
- if ((sprite->pos1.x % 4) == 0)
- sprite->pos1.y++;
+ sprite->x++;
+ if ((sprite->x % 4) == 0)
+ sprite->y++;
}
break;
}
- if (sprite->pos1.y > 160)
+ if (sprite->y > DISPLAY_HEIGHT)
DestroySprite(sprite);
}
}
@@ -692,29 +692,29 @@ static void SpriteCB_HikerGoingUp(struct Sprite *sprite)
static void SpriteCB_HikerGoingDown(struct Sprite *sprite)
{
if (sprite->sTimer == 0)
- sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ sprite->y += 16 + sprite->centerToCornerVecY;
if (++sprite->sTimer >= sprite->sDelay)
{
switch (sprite->sSameDir)
{
case FALSE:
- sprite->pos1.x--;
+ sprite->x--;
if ((sprite->sTimer % 4) == 0)
- sprite->pos1.y--;
+ sprite->y--;
break;
case TRUE:
// Hiker moves slower if travelling with the Cable Car
if ((sprite->sTimer % 2) != 0)
{
- sprite->pos1.x--;
- if ((sprite->pos1.x % 4) == 0)
- sprite->pos1.y--;
+ sprite->x--;
+ if ((sprite->x % 4) == 0)
+ sprite->y--;
}
break;
}
- if (sprite->pos1.y < 80)
+ if (sprite->y < 80)
DestroySprite(sprite);
}
}
@@ -829,20 +829,20 @@ static void CreateCableCarSprites(void)
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].oam.priority = 2;
- gSprites[spriteId].pos2.x = 8;
- gSprites[spriteId].pos2.y = 16;
+ gSprites[spriteId].x2 = 8;
+ gSprites[spriteId].y2 = 16;
gSprites[spriteId].sXPos = 200;
gSprites[spriteId].sYPos = 73;
}
// Create car sprite
spriteId = CreateSprite(&sSpriteTemplate_CableCar[0], 176, 43, 0x67);
- gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = 32;
+ gSprites[spriteId].x2 = gSprites[spriteId].y2 = 32;
gSprites[spriteId].sXPos = 176;
gSprites[spriteId].sYPos = 43;
// Create door sprite
spriteId = CreateSprite(&sSpriteTemplate_CableCar[1], 200, 99, 0x65);
- gSprites[spriteId].pos2.x = 8;
- gSprites[spriteId].pos2.y = 4;
+ gSprites[spriteId].x2 = 8;
+ gSprites[spriteId].y2 = 4;
gSprites[spriteId].sXPos = 200;
gSprites[spriteId].sYPos = 99;
// Init weather
@@ -857,20 +857,20 @@ static void CreateCableCarSprites(void)
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].oam.priority = 2;
- gSprites[spriteId].pos2.x = 8;
- gSprites[spriteId].pos2.y = 16;
+ gSprites[spriteId].x2 = 8;
+ gSprites[spriteId].y2 = 16;
gSprites[spriteId].sXPos = 128;
gSprites[spriteId].sYPos = 39;
}
// Create car sprite
spriteId = CreateSprite(&sSpriteTemplate_CableCar[0], 104, 9, 0x67);
- gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = 32;
+ gSprites[spriteId].x2 = gSprites[spriteId].y2 = 32;
gSprites[spriteId].sXPos = 104;
gSprites[spriteId].sYPos = 9;
// Create door sprite
spriteId = CreateSprite(&sSpriteTemplate_CableCar[1], 128, 65, 0x65);
- gSprites[spriteId].pos2.x = 8;
- gSprites[spriteId].pos2.y = 4;
+ gSprites[spriteId].x2 = 8;
+ gSprites[spriteId].y2 = 4;
gSprites[spriteId].sXPos = 128;
gSprites[spriteId].sYPos = 65;
// Init weather
@@ -882,8 +882,8 @@ static void CreateCableCarSprites(void)
for (i = 0; i < 9; i++)
{
spriteId = CreateSprite(&sSpriteTemplate_Cable, 16 * i + 96, 8 * i - 8, 0x68);
- gSprites[spriteId].pos2.x = 8;
- gSprites[spriteId].pos2.y = 8;
+ gSprites[spriteId].x2 = 8;
+ gSprites[spriteId].y2 = 8;
}
// 1/64 chance for an NPC to appear hiking on the ground below the Cable Car
@@ -894,8 +894,8 @@ static void CreateCableCarSprites(void)
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].oam.priority = 2;
- gSprites[spriteId].pos2.x = -gSprites[spriteId].centerToCornerVecX;
- gSprites[spriteId].pos2.y = -gSprites[spriteId].centerToCornerVecY;
+ gSprites[spriteId].x2 = -gSprites[spriteId].centerToCornerVecX;
+ gSprites[spriteId].y2 = -gSprites[spriteId].centerToCornerVecY;
// Randomly choose which direction the NPC is going
if (!GOING_DOWN)
@@ -905,7 +905,7 @@ static void CreateCableCarSprites(void)
// Do walking west anim
StartSpriteAnim(&gSprites[spriteId], 6);
gSprites[spriteId].sSameDir = TRUE;
- gSprites[spriteId].pos1.y += 2;
+ gSprites[spriteId].y += 2;
}
else
{
@@ -921,7 +921,7 @@ static void CreateCableCarSprites(void)
// Do walking east anim
StartSpriteAnim(&gSprites[spriteId], 7);
gSprites[spriteId].sSameDir = TRUE;
- gSprites[spriteId].pos1.y += 2;
+ gSprites[spriteId].y += 2;
}
else
{
diff --git a/src/cable_club.c b/src/cable_club.c
index 1d8c6e53d..abe1d5d4d 100644
--- a/src/cable_club.c
+++ b/src/cable_club.c
@@ -1053,29 +1053,31 @@ static void Task_EnterCableClubSeat(u8 taskId)
case 1:
if (IsFieldMessageBoxHidden())
{
- sub_8087288();
+ SetInCableClubSeat();
SetLocalLinkPlayerId(gSpecialVar_0x8005);
task->tState = 2;
}
break;
case 2:
- switch (sub_8087214())
+ switch (GetCableClubPartnersReady())
{
- case 0:
+ case CABLE_SEAT_WAITING:
break;
- case 1:
+ case CABLE_SEAT_SUCCESS:
+ // Partners linked and ready, switch to relevant link function
HideFieldMessageBox();
task->tState = 0;
- sub_80872C4();
+ SetStartedCableClubActivity();
SwitchTaskToFollowupFunc(taskId);
break;
- case 2:
+ case CABLE_SEAT_FAILED:
task->tState = 3;
break;
}
break;
case 3:
- sub_808729C();
+ // Exit, failure
+ SetLinkWaitingForScript();
sub_8197AE8(TRUE);
DestroyTask(taskId);
EnableBothScriptContexts();
diff --git a/src/confetti_util.c b/src/confetti_util.c
index 3bda3ab53..bcf19f705 100644
--- a/src/confetti_util.c
+++ b/src/confetti_util.c
@@ -210,8 +210,8 @@ u8 ConfettiUtil_Remove(u8 id)
return 0xFF;
memset(&sWork->array[id], 0, sizeof(struct ConfettiUtil));
- sWork->array[id].oam.y = 160;
- sWork->array[id].oam.x = 240;
+ sWork->array[id].oam.y = DISPLAY_HEIGHT;
+ sWork->array[id].oam.x = DISPLAY_WIDTH;
sWork->array[id].dummied = TRUE;
memcpy(&gMain.oamBuffer[id + 64], &gDummyOamData, sizeof(struct OamData));
return id;
diff --git a/src/contest.c b/src/contest.c
index f5326663f..46fa0efed 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -42,7 +42,6 @@
#include "constants/moves.h"
#include "constants/rgb.h"
#include "constants/songs.h"
-#include "constants/tv.h"
// This file's functions.
static void LoadContestPalettes(void);
@@ -259,6 +258,11 @@ enum {
#define TAG_BLINK_EFFECT_CONTESTANT2 0x80EA
#define TAG_BLINK_EFFECT_CONTESTANT3 0x80EB
+#define TILE_FILLED_APPEAL_HEART 0x5012
+#define TILE_FILLED_JAM_HEART 0x5014
+#define TILE_EMPTY_APPEAL_HEART 0x5035
+#define TILE_EMPTY_JAM_HEART 0x5036
+
enum {
SLIDER_HEART_ANIM_NORMAL,
SLIDER_HEART_ANIM_DISAPPEAR,
@@ -350,8 +354,8 @@ EWRAM_DATA u8 gHighestRibbonRank = 0;
EWRAM_DATA struct ContestResources *gContestResources = NULL;
EWRAM_DATA u8 sContestBgCopyFlags = 0;
EWRAM_DATA struct ContestWinner gCurContestWinner = {0};
-EWRAM_DATA bool8 gUnknown_02039F5C = 0;
-EWRAM_DATA u8 gUnknown_02039F5D = 0;
+EWRAM_DATA bool8 gCurContestWinnerIsForArtist = 0;
+EWRAM_DATA u8 gCurContestWinnerSaveIdx = 0;
// IWRAM common vars.
u32 gContestRngValue;
@@ -1034,7 +1038,7 @@ void LoadContestBgAfterMoveAnim(void)
{
u32 contestantWindowId = 5 + i;
- LoadPalette(eUnknownHeap1A004.cachedWindowPalettes[contestantWindowId], 16 * (5 + gContestantTurnOrder[i]), sizeof((eUnknownHeap1A004.cachedWindowPalettes[contestantWindowId])));
+ LoadPalette(eContestTempSave.cachedWindowPalettes[contestantWindowId], 16 * (5 + gContestantTurnOrder[i]), sizeof((eContestTempSave.cachedWindowPalettes[contestantWindowId])));
}
}
@@ -1320,7 +1324,7 @@ static bool8 SetupContestGraphics(u8 *stateVar)
CopyToBgTilemapBuffer(2, gUnknown_08C17170, 0, 0);
CopyBgTilemapBufferToVram(2);
// This is a bug, and copies random junk. savedJunk is never read.
- DmaCopy32Defvars(3, gContestResources->contestBgTilemaps[2], eUnknownHeap1A004.savedJunk, sizeof(eUnknownHeap1A004.savedJunk));
+ DmaCopy32Defvars(3, gContestResources->contestBgTilemaps[2], eContestTempSave.savedJunk, sizeof(eContestTempSave.savedJunk));
break;
case 5:
LoadCompressedPalette(gOldContestPalette, 0, 0x200);
@@ -1328,7 +1332,7 @@ static bool8 SetupContestGraphics(u8 *stateVar)
CpuCopy32(gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, tempPalette2, 16 * sizeof(u16));
CpuCopy32(tempPalette2, gPlttBufferUnfaded + 128, 16 * sizeof(u16));
CpuCopy32(tempPalette1, gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, 16 * sizeof(u16));
- DmaCopy32Defvars(3, gPlttBufferUnfaded, eUnknownHeap1A004.cachedWindowPalettes, sizeof(eUnknownHeap1A004.cachedWindowPalettes));
+ DmaCopy32Defvars(3, gPlttBufferUnfaded, eContestTempSave.cachedWindowPalettes, sizeof(eContestTempSave.cachedWindowPalettes));
LoadContestPalettes();
break;
case 6:
@@ -1393,7 +1397,7 @@ static void Task_RaiseCurtainAtStart(u8 taskId)
break;
case 1:
*(s16*)&gBattle_BG1_Y += 7;
- if ((s16)gBattle_BG1_Y <= 160)
+ if ((s16)gBattle_BG1_Y <= DISPLAY_HEIGHT)
break;
gTasks[taskId].data[0]++;
break;
@@ -1468,7 +1472,7 @@ static void Task_DisplayAppealNumberText(u8 taskId)
gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
ContestDebugDoPrint();
- DmaCopy32Defvars(3, gPlttBufferUnfaded, eUnknownHeap1A004.unk18204, PLTT_BUFFER_SIZE * 2);
+ DmaCopy32Defvars(3, gPlttBufferUnfaded, eContestTempSave.cachedPlttBufferUnfaded, PLTT_BUFFER_SIZE * 2);
ConvertIntToDecimalStringN(gStringVar1, eContest.appealNumber + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex))
StringCopy(gDisplayedStringBattle, gText_AppealNumWhichMoveWillBePlayed);
@@ -1513,8 +1517,8 @@ static void Task_ShowMoveSelectScreen(u8 taskId)
u8 i;
u8 moveName[32];
- gBattle_BG0_Y = 160;
- gBattle_BG2_Y = 160;
+ gBattle_BG0_Y = DISPLAY_HEIGHT;
+ gBattle_BG2_Y = DISPLAY_HEIGHT;
for (i = 0; i < MAX_MON_MOVES; i++)
{
@@ -1527,7 +1531,7 @@ static void Task_ShowMoveSelectScreen(u8 taskId)
&& eContestantStatus[gContestPlayerMonIndex].hasJudgesAttention)
{
// Highlight the text because it's a combo move
- moveNameBuffer = StringCopy(moveName, gText_ColorLightShadowDarkGrey);
+ moveNameBuffer = StringCopy(moveName, gText_ColorLightShadowDarkGray);
}
else if (move != MOVE_NONE
&& eContestantStatus[gContestPlayerMonIndex].prevMove == move
@@ -1667,8 +1671,8 @@ static void Task_HideMoveSelectScreen(u8 taskId)
}
Contest_SetBgCopyFlags(0);
// This seems to be a bug; it should have just copied PLTT_BUFFER_SIZE.
- DmaCopy32Defvars(3, gPlttBufferFaded, eUnknownHeap1A004.unk18604, PLTT_BUFFER_SIZE * 2);
- LoadPalette(eUnknownHeap1A004.unk18204, 0, PLTT_BUFFER_SIZE * 2);
+ DmaCopy32Defvars(3, gPlttBufferFaded, eContestTempSave.cachedPlttBufferFaded, PLTT_BUFFER_SIZE * 2);
+ LoadPalette(eContestTempSave.cachedPlttBufferUnfaded, 0, PLTT_BUFFER_SIZE * 2);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
gTasks[taskId].func = Task_HideApplauseMeterForAppealStart;
@@ -1780,7 +1784,7 @@ static void Task_DoAppeals(u8 taskId)
gContestMons[eContest.currentContestant].otId,
gContestMons[eContest.currentContestant].personality,
eContest.currentContestant);
- gSprites[spriteId].pos2.x = 120;
+ gSprites[spriteId].x2 = 120;
gSprites[spriteId].callback = SpriteCB_MonSlideIn;
gTasks[taskId].tMonSpriteId = spriteId;
gBattlerSpriteIds[gBattlerAttacker] = spriteId;
@@ -2445,9 +2449,9 @@ static void Task_EndWaitForLink(u8 taskId)
static void SpriteCB_MonSlideIn(struct Sprite *sprite)
{
- if (sprite->pos2.x != 0)
+ if (sprite->x2 != 0)
{
- sprite->pos2.x -= 2;
+ sprite->x2 -= 2;
}
else
{
@@ -2461,8 +2465,8 @@ static void SpriteCB_MonSlideIn(struct Sprite *sprite)
static void SpriteCB_MonSlideOut(struct Sprite *sprite)
{
- sprite->pos2.x -= 6;
- if (sprite->pos1.x + sprite->pos2.x < -32)
+ sprite->x2 -= 6;
+ if (sprite->x + sprite->x2 < -32)
{
sprite->callback = SpriteCallbackDummy;
sprite->invisible = TRUE;
@@ -2554,7 +2558,7 @@ static void Task_WaitForHeartSliders(u8 taskId)
static void sub_80DA348(u8 taskId)
{
- DmaCopy32Defvars(3, eUnknownHeap1A004.unk18204, gPlttBufferUnfaded, PLTT_BUFFER_SIZE * 2);
+ DmaCopy32Defvars(3, eContestTempSave.cachedPlttBufferUnfaded, gPlttBufferUnfaded, PLTT_BUFFER_SIZE * 2);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 2;
gTasks[taskId].func = Task_WaitPrintRoundResult;
@@ -2681,7 +2685,7 @@ static void Task_WaitForOutOfTimeMsg(u8 taskId)
{
SetBgForCurtainDrop();
gBattle_BG1_X = 0;
- gBattle_BG1_Y = 160;
+ gBattle_BG1_Y = DISPLAY_HEIGHT;
PlaySE12WithPanning(SE_CONTEST_CURTAIN_FALL, 0);
gTasks[taskId].data[0] = 0;
gTasks[taskId].func = Task_DropCurtainAtAppealsEnd;
@@ -3133,10 +3137,10 @@ static u8 CreateContestantSprite(u16 species, u32 otId, u32 personality, u32 ind
gSprites[spriteId].data[0] = gSprites[spriteId].oam.paletteNum;
gSprites[spriteId].data[2] = species;
if (IsSpeciesNotUnown(species))
- gSprites[spriteId].affineAnims = gUnknown_082FF6C0;
+ gSprites[spriteId].affineAnims = gAffineAnims_BattleSpriteContest;
else
gSprites[spriteId].affineAnims = gAffineAnims_BattleSpriteOpponentSide;
- StartSpriteAffineAnim(gSprites + spriteId, 0);
+ StartSpriteAffineAnim(&gSprites[spriteId], BATTLER_AFFINE_NORMAL);
return spriteId;
}
@@ -3204,27 +3208,25 @@ static void PrintContestMoveDescription(u16 a)
ContestBG_FillBoxWithIncrementingTile(0, categoryTile, 0x0b, 0x1f, 0x05, 0x01, 0x11, 0x01);
ContestBG_FillBoxWithIncrementingTile(0, categoryTile + 0x10, 0x0b, 0x20, 0x05, 0x01, 0x11, 0x01);
+ // Appeal hearts
if (gContestEffects[gContestMoves[a].effect].appeal == 0xFF)
numHearts = 0;
else
numHearts = gContestEffects[gContestMoves[a].effect].appeal / 10;
- if (numHearts > 8)
- numHearts = 8;
- // Filled-in hearts
- ContestBG_FillBoxWithTile(0, 0x5035, 0x15, 0x1f, 0x08, 0x01, 0x11);
- // Empty hearts
- ContestBG_FillBoxWithTile(0, 0x5012, 0x15, 0x1f, numHearts, 0x01, 0x11);
+ if (numHearts > MAX_CONTEST_MOVE_HEARTS)
+ numHearts = MAX_CONTEST_MOVE_HEARTS;
+ ContestBG_FillBoxWithTile(0, TILE_EMPTY_APPEAL_HEART, 0x15, 0x1f, MAX_CONTEST_MOVE_HEARTS, 0x01, 0x11);
+ ContestBG_FillBoxWithTile(0, TILE_FILLED_APPEAL_HEART, 0x15, 0x1f, numHearts, 0x01, 0x11);
+ // Jam hearts
if (gContestEffects[gContestMoves[a].effect].jam == 0xFF)
numHearts = 0;
else
numHearts = gContestEffects[gContestMoves[a].effect].jam / 10;
- if (numHearts > 8)
- numHearts = 8;
- // Filled-in hearts
- ContestBG_FillBoxWithTile(0, 0x5036, 0x15, 0x20, 0x08, 0x01, 0x11);
- // Empty hearts
- ContestBG_FillBoxWithTile(0, 0x5014, 0x15, 0x20, numHearts, 0x01, 0x11);
+ if (numHearts > MAX_CONTEST_MOVE_HEARTS)
+ numHearts = MAX_CONTEST_MOVE_HEARTS;
+ ContestBG_FillBoxWithTile(0, TILE_EMPTY_JAM_HEART, 0x15, 0x20, MAX_CONTEST_MOVE_HEARTS, 0x01, 0x11);
+ ContestBG_FillBoxWithTile(0, TILE_FILLED_JAM_HEART, 0x15, 0x20, numHearts, 0x01, 0x11);
FillWindowPixelBuffer(WIN_MOVE_DESCRIPTION, PIXEL_FILL(0));
Contest_PrintTextToBg0WindowStd(WIN_MOVE_DESCRIPTION, gContestEffectDescriptionPointers[gContestMoves[a].effect]);
@@ -3862,7 +3864,7 @@ static void UpdateHeartSlider(u8 contestant)
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].sContestant = contestant;
gSprites[spriteId].sTargetX = slideTarget;
- if (gSprites[spriteId].sTargetX > gSprites[spriteId].pos2.x)
+ if (gSprites[spriteId].sTargetX > gSprites[spriteId].x2)
gSprites[spriteId].sMoveX = 1;
else
gSprites[spriteId].sMoveX = -1;
@@ -3894,14 +3896,14 @@ static bool8 SlidersDoneUpdating(void)
static void SpriteCB_UpdateHeartSlider(struct Sprite *sprite)
{
- if (sprite->pos2.x == sprite->sTargetX)
+ if (sprite->x2 == sprite->sTargetX)
{
eContestGfxState[sprite->sContestant].sliderUpdating = FALSE;
sprite->callback = SpriteCallbackDummy;
}
else
{
- sprite->pos2.x += sprite->sMoveX;
+ sprite->x2 += sprite->sMoveX;
}
}
@@ -3915,7 +3917,7 @@ static void UpdateSliderHeartSpriteYPositions(void)
s32 i;
for (i = 0; i < CONTESTANT_COUNT; i++)
- gSprites[eContestGfxState[i].sliderHeartSpriteId].pos1.y = sSliderHeartYPositions[gContestantTurnOrder[i]];
+ gSprites[eContestGfxState[i].sliderHeartSpriteId].y = sSliderHeartYPositions[gContestantTurnOrder[i]];
}
// Used to hide (or subsequently reshow) the bottom two slider hearts that get hidden by text windows by moving them offscreen
@@ -3929,9 +3931,9 @@ static void SetBottomSliderHeartsInvisibility(bool8 invisible)
if (gContestantTurnOrder[i] > 1)
{
if (!invisible)
- gSprites[eContestGfxState[i].sliderHeartSpriteId].pos1.x = 180;
+ gSprites[eContestGfxState[i].sliderHeartSpriteId].x = 180;
else
- gSprites[eContestGfxState[i].sliderHeartSpriteId].pos1.x = 256;
+ gSprites[eContestGfxState[i].sliderHeartSpriteId].x = 256;
}
}
}
@@ -4412,7 +4414,7 @@ static void DrawContestantWindows(void)
for (i = 0; i < CONTESTANT_COUNT; i++)
{
s32 windowId = i + 5;
- LoadPalette(eUnknownHeap1A004.cachedWindowPalettes[windowId], (gContestantTurnOrder[i] + 5) * 16, sizeof(eUnknownHeap1A004.cachedWindowPalettes[0]));
+ LoadPalette(eContestTempSave.cachedWindowPalettes[windowId], (gContestantTurnOrder[i] + 5) * 16, sizeof(eContestTempSave.cachedWindowPalettes[0]));
}
DrawContestantWindowText();
}
@@ -4787,7 +4789,7 @@ static void Task_ApplauseOverflowAnimation(u8 taskId)
static void SlideApplauseMeterIn(void)
{
CreateTask(Task_SlideApplauseMeterIn, 10);
- gSprites[eContest.applauseMeterSpriteId].pos2.x = -70;
+ gSprites[eContest.applauseMeterSpriteId].x2 = -70;
gSprites[eContest.applauseMeterSpriteId].invisible = FALSE;
eContest.applauseMeterIsMoving = TRUE;
}
@@ -4797,11 +4799,11 @@ static void Task_SlideApplauseMeterIn(u8 taskId)
struct Sprite *sprite = &gSprites[eContest.applauseMeterSpriteId];
gTasks[taskId].data[10] += 1664;
- sprite->pos2.x += gTasks[taskId].data[10] >> 8;
+ sprite->x2 += gTasks[taskId].data[10] >> 8;
gTasks[taskId].data[10] = gTasks[taskId].data[10] & 0xFF;
- if (sprite->pos2.x > 0)
- sprite->pos2.x = 0;
- if (sprite->pos2.x == 0)
+ if (sprite->x2 > 0)
+ sprite->x2 = 0;
+ if (sprite->x2 == 0)
{
eContest.applauseMeterIsMoving = FALSE;
DestroyTask(taskId);
@@ -4817,7 +4819,7 @@ static void SlideApplauseMeterOut(void)
else
{
CreateTask(Task_SlideApplauseMeterOut, 10);
- gSprites[eContest.applauseMeterSpriteId].pos2.x = 0;
+ gSprites[eContest.applauseMeterSpriteId].x2 = 0;
eContest.applauseMeterIsMoving = TRUE;
}
}
@@ -4827,11 +4829,11 @@ static void Task_SlideApplauseMeterOut(u8 taskId)
struct Sprite *sprite = &gSprites[eContest.applauseMeterSpriteId];
gTasks[taskId].data[10] += 1664;
- sprite->pos2.x -= gTasks[taskId].data[10] >> 8;
+ sprite->x2 -= gTasks[taskId].data[10] >> 8;
gTasks[taskId].data[10] = gTasks[taskId].data[10] & 0xFF;
- if (sprite->pos2.x < -70)
- sprite->pos2.x = -70;
- if (sprite->pos2.x == -70)
+ if (sprite->x2 < -70)
+ sprite->x2 = -70;
+ if (sprite->x2 == -70)
{
sprite->invisible = TRUE;
eContest.applauseMeterIsMoving = FALSE;
@@ -4876,7 +4878,7 @@ static void Task_ShowAndUpdateApplauseMeter(u8 taskId)
// Unused.
static void HideApplauseMeterNoAnim(void)
{
- gSprites[eContest.applauseMeterSpriteId].pos2.x = 0;
+ gSprites[eContest.applauseMeterSpriteId].x2 = 0;
gSprites[eContest.applauseMeterSpriteId].invisible = FALSE;
}
@@ -5015,7 +5017,7 @@ static void ShowHideNextTurnGfx(bool8 show)
if (eContestantStatus[i].turnOrderMod != 0 && show)
{
CpuCopy32(GetTurnOrderNumberGfx(i), (void *)(OBJ_VRAM0 + (gSprites[eContestGfxState[i].nextTurnSpriteId].oam.tileNum + 6) * 32), 32);
- gSprites[eContestGfxState[i].nextTurnSpriteId].pos1.y = sNextTurnSpriteYPositions[gContestantTurnOrder[i]];
+ gSprites[eContestGfxState[i].nextTurnSpriteId].y = sNextTurnSpriteYPositions[gContestantTurnOrder[i]];
gSprites[eContestGfxState[i].nextTurnSpriteId].invisible = FALSE;
}
else
@@ -5377,10 +5379,10 @@ static void SetBattleTargetSpritePosition(void)
{
struct Sprite *sprite = &gSprites[gBattlerSpriteIds[B_POSITION_OPPONENT_RIGHT]];
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
- sprite->pos1.x = GetBattlerSpriteCoord(B_POSITION_OPPONENT_RIGHT, BATTLER_COORD_X);
- sprite->pos1.y = GetBattlerSpriteCoord(B_POSITION_OPPONENT_RIGHT, BATTLER_COORD_Y);
+ sprite->x2 = 0;
+ sprite->y2 = 0;
+ sprite->x = GetBattlerSpriteCoord(B_POSITION_OPPONENT_RIGHT, BATTLER_COORD_X);
+ sprite->y = GetBattlerSpriteCoord(B_POSITION_OPPONENT_RIGHT, BATTLER_COORD_Y);
sprite->invisible = TRUE;
}
@@ -5516,40 +5518,46 @@ void ResetContestLinkResults(void)
gSaveBlock2Ptr->contestLinkResults[i][j] = 0;
}
-bool8 sub_80DEDA8(u8 rank)
+bool8 SaveContestWinner(u8 rank)
{
s32 i;
- u8 r7 = Random() % 3;
+ u8 captionId = Random() % NUM_PAINTING_CAPTIONS;
+ // Get the index of the winner among the contestants
for (i = 0; i < CONTESTANT_COUNT - 1; i++)
- {
if (gContestFinalStandings[i] == 0)
break;
- }
- if (rank == 0xFF && i != gContestPlayerMonIndex)
+
+ // Exit if attempting to save a Pokémon other than the player's to the museum
+ if (rank == CONTEST_SAVE_FOR_MUSEUM && i != gContestPlayerMonIndex)
return FALSE;
+
+ // Adjust the random painting caption depending on the category
switch (gSpecialVar_ContestCategory)
{
case CONTEST_CATEGORY_COOL:
- r7 += 0;
+ captionId += NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_COOL;
break;
case CONTEST_CATEGORY_BEAUTY:
- r7 += 3;
+ captionId += NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_BEAUTY;
break;
case CONTEST_CATEGORY_CUTE:
- r7 += 6;
+ captionId += NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_CUTE;
break;
case CONTEST_CATEGORY_SMART:
- r7 += 9;
+ captionId += NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_SMART;
break;
case CONTEST_CATEGORY_TOUGH:
- r7 += 12;
+ captionId += NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_TOUGH;
break;
}
- if (rank != 0xFE)
- {
- u8 id = sub_80DEFA8(rank, 1);
+ if (rank != CONTEST_SAVE_FOR_ARTIST)
+ {
+ // Save winner in the saveblock
+ // Used to save any winner for the Contest Hall or the Museum
+ // but excludes the temporary save used by the artist
+ u8 id = GetContestWinnerSaveIdx(rank, TRUE);
gSaveBlock1Ptr->contestWinners[id].personality = gContestMons[i].personality;
gSaveBlock1Ptr->contestWinners[id].species = gContestMons[i].species;
gSaveBlock1Ptr->contestWinners[id].trainerId = gContestMons[i].otId;
@@ -5560,24 +5568,29 @@ bool8 sub_80DEDA8(u8 rank)
else
gSaveBlock1Ptr->contestWinners[id].contestRank = gSpecialVar_ContestRank;
- if (rank != 0xFF)
+ if (rank != CONTEST_SAVE_FOR_MUSEUM)
gSaveBlock1Ptr->contestWinners[id].contestCategory = gSpecialVar_ContestCategory;
else
- gSaveBlock1Ptr->contestWinners[id].contestCategory = r7;
+ gSaveBlock1Ptr->contestWinners[id].contestCategory = captionId;
}
else
{
+ // Set the most recent winner so the artist can show the player their painting
gCurContestWinner.personality = gContestMons[i].personality;
gCurContestWinner.trainerId = gContestMons[i].otId;
gCurContestWinner.species = gContestMons[i].species;
StringCopy(gCurContestWinner.monName, gContestMons[i].nickname);
StringCopy(gCurContestWinner.trainerName, gContestMons[i].trainerName);
- gCurContestWinner.contestCategory = r7;
+ gCurContestWinner.contestCategory = captionId;
}
return TRUE;
}
-u8 sub_80DEFA8(u8 rank, u8 b)
+// Rank is either a regular contest rank (for saving winners to show in the Contest Hall)
+// Or one of two special IDs listed below (for saving winners to show in Museum, or from the artist)
+// If just retrieving the index where the winner *would* go, shift is FALSE
+// If actually preparing to insert the winner into the saveblock, shift is TRUE
+u8 GetContestWinnerSaveIdx(u8 rank, bool8 shift)
{
s32 i;
@@ -5587,13 +5600,15 @@ u8 sub_80DEFA8(u8 rank, u8 b)
case CONTEST_RANK_SUPER:
case CONTEST_RANK_HYPER:
case CONTEST_RANK_MASTER:
- if (b != 0)
+ if (shift)
{
- for (i = NUM_CONTEST_HALL_WINNERS - 1; i >= 1; i--)
+ for (i = NUM_CONTEST_HALL_WINNERS - 1; i > 0; i--)
memcpy(&gSaveBlock1Ptr->contestWinners[i], &gSaveBlock1Ptr->contestWinners[i - 1], sizeof(struct ContestWinner));
}
- return 0;
+ return CONTEST_WINNER_HALL_1 - 1;
default:
+// case CONTEST_SAVE_FOR_MUSEUM:
+// case CONTEST_SAVE_FOR_ARTIST:
switch (gSpecialVar_ContestCategory)
{
case CONTEST_CATEGORY_COOL:
@@ -5615,7 +5630,7 @@ void ClearContestWinnerPicsInContestHall(void)
{
s32 i;
- for (i = 0; i < 8; i++)
+ for (i = 0; i < MUSEUM_CONTEST_WINNERS_START; i++)
gSaveBlock1Ptr->contestWinners[i] = gDefaultContestWinners[i];
}
diff --git a/src/contest_painting.c b/src/contest_painting.c
index 4f0bf9245..d4bc8ca04 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -21,18 +21,16 @@
#include "window.h"
#include "constants/rgb.h"
-// IWRAM common
u16 (*gContestMonPixels)[][32];
struct ImageProcessingContext gImageProcessingContext;
struct ContestWinner *gContestPaintingWinner;
u16 *gContestPaintingMonPalette;
-// IWRAM bss
-static u8 gContestPaintingState;
-static u16 gContestPaintingMosaicVal;
-static u16 gContestPaintingFadeCounter;
-static bool8 gUnknown_030011F6;
-static u8 gContestPaintingWindowId;
+static u8 sHoldState;
+static u16 sMosaicVal;
+static u16 sFadeCounter;
+static bool8 sVarsInitialized;
+static u8 sWindowId;
static void ShowContestPainting(void);
static void HoldContestPainting(void);
@@ -44,7 +42,7 @@ static void PrintContestPaintingCaption(u8, u8);
static void VBlankCB_ContestPainting(void);
static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)[64][64]);
-extern const u8 gContestPaintingCaption[];
+extern const u8 gContestHallPaintingCaption[];
extern const u8 gContestCoolness[];
extern const u8 gContestBeauty[];
extern const u8 gContestCuteness[];
@@ -71,39 +69,39 @@ extern const u8 gContestPaintingTough1[];
extern const u8 gContestPaintingTough2[];
extern const u8 gContestPaintingTough3[];
-const u16 gPictureFramePalettes[] = INCBIN_U16("graphics/picture_frame/bg.gbapal");
-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");
+static const u16 sPictureFramePalettes[] = INCBIN_U16("graphics/picture_frame/bg.gbapal");
+static const u8 sPictureFrameTiles_Cool[] = INCBIN_U8("graphics/picture_frame/cool.4bpp.rl");
+static const u8 sPictureFrameTiles_Beauty[] = INCBIN_U8("graphics/picture_frame/beauty.4bpp.rl");
+static const u8 sPictureFrameTiles_Cute[] = INCBIN_U8("graphics/picture_frame/cute.4bpp.rl");
+static const u8 sPictureFrameTiles_Smart[] = INCBIN_U8("graphics/picture_frame/smart.4bpp.rl");
+static const u8 sPictureFrameTiles_Tough[] = INCBIN_U8("graphics/picture_frame/tough.4bpp.rl");
+static const u8 sPictureFrameTiles_HallLobby[] = INCBIN_U8("graphics/picture_frame/lobby.4bpp.rl");
+static const u8 sPictureFrameTilemap_Cool[] = INCBIN_U8("graphics/picture_frame/cool_map.bin.rl");
+static const u8 sPictureFrameTilemap_Beauty[] = INCBIN_U8("graphics/picture_frame/beauty_map.bin.rl");
+static const u8 sPictureFrameTilemap_Cute[] = INCBIN_U8("graphics/picture_frame/cute_map.bin.rl");
+static const u8 sPictureFrameTilemap_Smart[] = INCBIN_U8("graphics/picture_frame/smart_map.bin.rl");
+static const u8 sPictureFrameTilemap_Tough[] = INCBIN_U8("graphics/picture_frame/tough_map.bin.rl");
+static const u8 sPictureFrameTilemap_HallLobby[] = INCBIN_U8("graphics/picture_frame/lobby_map.bin.rl");
static const u8 *const sContestCategoryNames_Unused[] =
{
- gContestCoolness,
- gContestBeauty,
- gContestCuteness,
- gContestSmartness,
- gContestToughness,
+ [CONTEST_CATEGORY_COOL] = gContestCoolness,
+ [CONTEST_CATEGORY_BEAUTY] = gContestBeauty,
+ [CONTEST_CATEGORY_CUTE] = gContestCuteness,
+ [CONTEST_CATEGORY_SMART] = gContestSmartness,
+ [CONTEST_CATEGORY_TOUGH] = gContestToughness,
};
static const u8 *const sContestRankNames[] =
{
- gContestRankNormal,
- gContestRankSuper,
- gContestRankHyper,
- gContestRankMaster,
- gContestLink,
+ [CONTEST_RANK_NORMAL] = gContestRankNormal,
+ [CONTEST_RANK_SUPER] = gContestRankSuper,
+ [CONTEST_RANK_HYPER] = gContestRankHyper,
+ [CONTEST_RANK_MASTER] = gContestRankMaster,
+ [CONTEST_RANK_LINK] = gContestLink,
};
-static const struct BgTemplate sContestPaintingBgTemplates[] =
+static const struct BgTemplate sBgTemplates[] =
{
{
.bg = 1,
@@ -116,7 +114,7 @@ static const struct BgTemplate sContestPaintingBgTemplates[] =
},
};
-static const struct WindowTemplate sContestPaintingWindowTemplate =
+static const struct WindowTemplate sWindowTemplate =
{
.bg = 1,
.tilemapLeft = 2,
@@ -127,23 +125,23 @@ static const struct WindowTemplate sContestPaintingWindowTemplate =
.baseBlock = 1,
};
-static const u8 *const sContestPaintingDescriptionPointers[] =
+static const u8 *const sMuseumCaptions[NUM_PAINTING_CAPTIONS * CONTEST_CATEGORIES_COUNT] =
{
- gContestPaintingCool1,
- gContestPaintingCool2,
- gContestPaintingCool3,
- gContestPaintingBeauty1,
- gContestPaintingBeauty2,
- gContestPaintingBeauty3,
- gContestPaintingCute1,
- gContestPaintingCute2,
- gContestPaintingCute3,
- gContestPaintingSmart1,
- gContestPaintingSmart2,
- gContestPaintingSmart3,
- gContestPaintingTough1,
- gContestPaintingTough2,
- gContestPaintingTough3,
+ [0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_COOL] = gContestPaintingCool1,
+ [1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_COOL] = gContestPaintingCool2,
+ [2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_COOL] = gContestPaintingCool3,
+ [0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_BEAUTY] = gContestPaintingBeauty1,
+ [1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_BEAUTY] = gContestPaintingBeauty2,
+ [2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_BEAUTY] = gContestPaintingBeauty3,
+ [0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_CUTE] = gContestPaintingCute1,
+ [1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_CUTE] = gContestPaintingCute2,
+ [2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_CUTE] = gContestPaintingCute3,
+ [0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_SMART] = gContestPaintingSmart1,
+ [1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_SMART] = gContestPaintingSmart2,
+ [2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_SMART] = gContestPaintingSmart3,
+ [0 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_TOUGH] = gContestPaintingTough1,
+ [1 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_TOUGH] = gContestPaintingTough2,
+ [2 + NUM_PAINTING_CAPTIONS * CONTEST_CATEGORY_TOUGH] = gContestPaintingTough3,
};
static const struct OamData sContestPaintingMonOamData =
@@ -161,15 +159,15 @@ static const struct OamData sContestPaintingMonOamData =
.paletteNum = 0,
};
-const u16 gUnknown_085B0838[] = {RGB(0, 0, 0), RGB(0, 0, 0)};
+static const u16 sBgPalette[] = {RGB_BLACK, RGB_BLACK};
void SetContestWinnerForPainting(int contestWinnerId)
{
- u8 *ptr1 = &gUnknown_02039F5D;
- u8 *ptr2 = &gUnknown_02039F5C;
+ u8 *saveIdx = &gCurContestWinnerSaveIdx;
+ u8 *isForArtist = &gCurContestWinnerIsForArtist;
gCurContestWinner = gSaveBlock1Ptr->contestWinners[contestWinnerId - 1];
- *ptr1 = contestWinnerId - 1;
- *ptr2 = FALSE;
+ *saveIdx = contestWinnerId - 1;
+ *isForArtist = FALSE;
}
void CB2_ContestPainting(void)
@@ -189,7 +187,7 @@ static void CB2_QuitContestPainting(void)
SetMainCallback2(gMain.savedCallback);
FREE_AND_SET_NULL(gContestPaintingMonPalette);
FREE_AND_SET_NULL(gContestMonPixels);
- RemoveWindow(gContestPaintingWindowId);
+ RemoveWindow(sWindowId);
Free(GetBgTilemapBuffer(1));
FreeMonSpritesGfx();
}
@@ -203,13 +201,13 @@ static void ShowContestPainting(void)
SetVBlankCallback(NULL);
AllocateMonSpritesGfx();
gContestPaintingWinner = &gCurContestWinner;
- InitContestPaintingVars(1);
+ InitContestPaintingVars(TRUE);
InitContestPaintingBg();
gMain.state++;
break;
case 1:
ResetPaletteFade();
- DmaFillLarge32(3, 0, (void *)BG_VRAM, 0x18000, 0x1000);
+ DmaFillLarge32(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000);
ResetSpriteData();
gMain.state++;
break;
@@ -220,16 +218,16 @@ static void ShowContestPainting(void)
gMain.state++;
break;
case 3:
- CreateContestPaintingPicture(gUnknown_02039F5D, gUnknown_02039F5C);
+ CreateContestPaintingPicture(gCurContestWinnerSaveIdx, gCurContestWinnerIsForArtist);
gMain.state++;
break;
case 4:
- PrintContestPaintingCaption(gUnknown_02039F5D, gUnknown_02039F5C);
- LoadPalette(gUnknown_085B0838, 0, 1 * 2);
+ PrintContestPaintingCaption(gCurContestWinnerSaveIdx, gCurContestWinnerIsForArtist);
+ LoadPalette(sBgPalette, 0, 1 * 2);
DmaClear32(3, PLTT, PLTT_SIZE);
BeginFastPaletteFade(2);
SetVBlankCallback(VBlankCB_ContestPainting);
- gContestPaintingState = 0;
+ sHoldState = 0;
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON);
SetMainCallback2(CB2_HoldContestPainting);
break;
@@ -238,29 +236,29 @@ static void ShowContestPainting(void)
static void HoldContestPainting(void)
{
- switch (gContestPaintingState)
+ switch (sHoldState)
{
case 0:
if (!gPaletteFade.active)
- gContestPaintingState = 1;
- if (gUnknown_030011F6 && gContestPaintingFadeCounter)
- gContestPaintingFadeCounter--;
+ sHoldState = 1;
+ if (sVarsInitialized && sFadeCounter)
+ sFadeCounter--;
break;
case 1:
if ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))
{
- gContestPaintingState++;
+ sHoldState++;
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB(0, 0, 0));
}
- if (gUnknown_030011F6)
- gContestPaintingFadeCounter = 0;
+ if (sVarsInitialized)
+ sFadeCounter = 0;
break;
case 2:
if (!gPaletteFade.active)
SetMainCallback2(CB2_QuitContestPainting);
- if (gUnknown_030011F6 && gContestPaintingFadeCounter < 30)
- gContestPaintingFadeCounter++;
+ if (sVarsInitialized && sFadeCounter < 30)
+ sFadeCounter++;
break;
}
}
@@ -268,45 +266,48 @@ static void HoldContestPainting(void)
static void InitContestPaintingWindow(void)
{
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, sContestPaintingBgTemplates, ARRAY_COUNT(sContestPaintingBgTemplates));
+ InitBgsFromTemplates(0, sBgTemplates, ARRAY_COUNT(sBgTemplates));
ChangeBgX(1, 0, 0);
ChangeBgY(1, 0, 0);
SetBgTilemapBuffer(1, AllocZeroed(BG_SCREEN_SIZE));
- gContestPaintingWindowId = AddWindow(&sContestPaintingWindowTemplate);
+ sWindowId = AddWindow(&sWindowTemplate);
DeactivateAllTextPrinters();
- FillWindowPixelBuffer(gContestPaintingWindowId, PIXEL_FILL(0));
- PutWindowTilemap(gContestPaintingWindowId);
- CopyWindowToVram(gContestPaintingWindowId, 3);
+ FillWindowPixelBuffer(sWindowId, PIXEL_FILL(0));
+ PutWindowTilemap(sWindowId);
+ CopyWindowToVram(sWindowId, 3);
ShowBg(1);
}
-static void PrintContestPaintingCaption(u8 contestType, bool8 arg1)
+static void PrintContestPaintingCaption(u8 contestType, bool8 isForArtist)
{
int x;
u8 category;
- if (arg1 == TRUE)
+ // Artist's painting has no caption
+ if (isForArtist == TRUE)
return;
category = gContestPaintingWinner->contestCategory;
- if (contestType < 8)
+ if (contestType < MUSEUM_CONTEST_WINNERS_START)
{
+ // Contest Hall caption
BufferContestName(gStringVar1, category);
StringAppend(gStringVar1, gText_Space);
StringAppend(gStringVar1, sContestRankNames[gContestPaintingWinner->contestRank]);
StringCopy(gStringVar2, gContestPaintingWinner->trainerName);
- sub_81DB5AC(gStringVar2);
+ ConvertInternationalContestantName(gStringVar2);
StringCopy(gStringVar3, gContestPaintingWinner->monName);
- StringExpandPlaceholders(gStringVar4, gContestPaintingCaption);
+ StringExpandPlaceholders(gStringVar4, gContestHallPaintingCaption);
}
else
{
+ // Museum caption
StringCopy(gStringVar1, gContestPaintingWinner->monName);
- StringExpandPlaceholders(gStringVar4, sContestPaintingDescriptionPointers[category]);
+ StringExpandPlaceholders(gStringVar4, sMuseumCaptions[category]);
}
x = GetStringCenterAlignXOffset(1, gStringVar4, 208);
- AddTextPrinterParameterized(gContestPaintingWindowId, 1, gStringVar4, x, 1, 0, 0);
+ AddTextPrinterParameterized(sWindowId, 1, gStringVar4, x, 1, 0, 0);
CopyBgTilemapBufferToVram(1);
}
@@ -321,33 +322,34 @@ static void InitContestPaintingBg(void)
SetGpuReg(REG_OFFSET_BLDY, 0);
}
-static void InitContestPaintingVars(bool8 arg0)
+static void InitContestPaintingVars(bool8 reset)
{
- if (arg0 == FALSE)
+ if (reset == FALSE)
{
- gUnknown_030011F6 = FALSE;
- gContestPaintingMosaicVal = 0;
- gContestPaintingFadeCounter = 0;
+ // Never reached
+ sVarsInitialized = FALSE;
+ sMosaicVal = 0;
+ sFadeCounter = 0;
}
else
{
- gUnknown_030011F6 = TRUE;
- gContestPaintingMosaicVal = 15;
- gContestPaintingFadeCounter = 30;
+ sVarsInitialized = TRUE;
+ sMosaicVal = 15;
+ sFadeCounter = 30;
}
}
static void UpdateContestPaintingMosaicEffect(void)
{
- if (!gUnknown_030011F6)
+ if (!sVarsInitialized)
{
SetGpuReg(REG_OFFSET_MOSAIC, 0);
}
else
{
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(10) | BGCNT_MOSAIC | BGCNT_16COLOR | BGCNT_TXT256x256);
- gContestPaintingMosaicVal = gContestPaintingFadeCounter / 2;
- SetGpuReg(REG_OFFSET_MOSAIC, (gContestPaintingMosaicVal << 12) | (gContestPaintingMosaicVal << 8) | (gContestPaintingMosaicVal << 4) | (gContestPaintingMosaicVal << 0));
+ sMosaicVal = sFadeCounter / 2;
+ SetGpuReg(REG_OFFSET_MOSAIC, (sMosaicVal << 12) | (sMosaicVal << 8) | (sMosaicVal << 4) | (sMosaicVal << 0));
}
}
@@ -414,34 +416,35 @@ static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)
#define VRAM_PICTURE_DATA(x, y) (((u16 *)(BG_SCREEN_ADDR(12)))[(y) * 32 + (x)])
-static void LoadContestPaintingFrame(u8 contestWinnerId, bool8 arg1)
+static void LoadContestPaintingFrame(u8 contestWinnerId, bool8 isForArtist)
{
u8 x, y;
- LoadPalette(gPictureFramePalettes, 0, 0x100);
- if (arg1 == TRUE)
+ LoadPalette(sPictureFramePalettes, 0, 0x100);
+ if (isForArtist == TRUE)
{
- switch (gContestPaintingWinner->contestCategory / 3)
+ // Load Artist's frame
+ switch (gContestPaintingWinner->contestCategory / NUM_PAINTING_CAPTIONS)
{
case CONTEST_CATEGORY_COOL:
- RLUnCompVram(gPictureFrameTiles_0, (void *)VRAM);
- RLUnCompWram(gPictureFrameTilemap_0, gContestMonPixels);
+ RLUnCompVram(sPictureFrameTiles_Cool, (void *)VRAM);
+ RLUnCompWram(sPictureFrameTilemap_Cool, gContestMonPixels);
break;
case CONTEST_CATEGORY_BEAUTY:
- RLUnCompVram(gPictureFrameTiles_1, (void *)VRAM);
- RLUnCompWram(gPictureFrameTilemap_1, gContestMonPixels);
+ RLUnCompVram(sPictureFrameTiles_Beauty, (void *)VRAM);
+ RLUnCompWram(sPictureFrameTilemap_Beauty, gContestMonPixels);
break;
case CONTEST_CATEGORY_CUTE:
- RLUnCompVram(gPictureFrameTiles_2, (void *)VRAM);
- RLUnCompWram(gPictureFrameTilemap_2, gContestMonPixels);
+ RLUnCompVram(sPictureFrameTiles_Cute, (void *)VRAM);
+ RLUnCompWram(sPictureFrameTilemap_Cute, gContestMonPixels);
break;
case CONTEST_CATEGORY_SMART:
- RLUnCompVram(gPictureFrameTiles_3, (void *)VRAM);
- RLUnCompWram(gPictureFrameTilemap_3, gContestMonPixels);
+ RLUnCompVram(sPictureFrameTiles_Smart, (void *)VRAM);
+ RLUnCompWram(sPictureFrameTilemap_Smart, gContestMonPixels);
break;
case CONTEST_CATEGORY_TOUGH:
- RLUnCompVram(gPictureFrameTiles_4, (void *)VRAM);
- RLUnCompWram(gPictureFrameTilemap_4, gContestMonPixels);
+ RLUnCompVram(sPictureFrameTiles_Tough, (void *)VRAM);
+ RLUnCompWram(sPictureFrameTilemap_Tough, gContestMonPixels);
break;
}
@@ -463,34 +466,36 @@ static void LoadContestPaintingFrame(u8 contestWinnerId, bool8 arg1)
for (x = 0; x < 16; x++)
VRAM_PICTURE_DATA(x + 7, 2) = (*gContestMonPixels)[2][7];
}
- else if (contestWinnerId < 8)
+ else if (contestWinnerId < MUSEUM_CONTEST_WINNERS_START)
{
- RLUnCompVram(gPictureFrameTiles_5, (void *)VRAM);
- RLUnCompVram(gPictureFrameTilemap_5, (void *)(BG_SCREEN_ADDR(12)));
+ // Load Contest Hall lobby frame
+ RLUnCompVram(sPictureFrameTiles_HallLobby, (void *)VRAM);
+ RLUnCompVram(sPictureFrameTilemap_HallLobby, (void *)(BG_SCREEN_ADDR(12)));
}
else
{
- switch (gContestPaintingWinner->contestCategory / 3)
+ // Load Museum frame
+ switch (gContestPaintingWinner->contestCategory / NUM_PAINTING_CAPTIONS)
{
case CONTEST_CATEGORY_COOL:
- RLUnCompVram(gPictureFrameTiles_0, (void *)VRAM);
- RLUnCompVram(gPictureFrameTilemap_0, (void *)(BG_SCREEN_ADDR(12)));
+ RLUnCompVram(sPictureFrameTiles_Cool, (void *)VRAM);
+ RLUnCompVram(sPictureFrameTilemap_Cool, (void *)(BG_SCREEN_ADDR(12)));
break;
case CONTEST_CATEGORY_BEAUTY:
- RLUnCompVram(gPictureFrameTiles_1, (void *)VRAM);
- RLUnCompVram(gPictureFrameTilemap_1, (void *)(BG_SCREEN_ADDR(12)));
+ RLUnCompVram(sPictureFrameTiles_Beauty, (void *)VRAM);
+ RLUnCompVram(sPictureFrameTilemap_Beauty, (void *)(BG_SCREEN_ADDR(12)));
break;
case CONTEST_CATEGORY_CUTE:
- RLUnCompVram(gPictureFrameTiles_2, (void *)VRAM);
- RLUnCompVram(gPictureFrameTilemap_2, (void *)(BG_SCREEN_ADDR(12)));
+ RLUnCompVram(sPictureFrameTiles_Cute, (void *)VRAM);
+ RLUnCompVram(sPictureFrameTilemap_Cute, (void *)(BG_SCREEN_ADDR(12)));
break;
case CONTEST_CATEGORY_SMART:
- RLUnCompVram(gPictureFrameTiles_3, (void *)VRAM);
- RLUnCompVram(gPictureFrameTilemap_3, (void *)(BG_SCREEN_ADDR(12)));
+ RLUnCompVram(sPictureFrameTiles_Smart, (void *)VRAM);
+ RLUnCompVram(sPictureFrameTilemap_Smart, (void *)(BG_SCREEN_ADDR(12)));
break;
case CONTEST_CATEGORY_TOUGH:
- RLUnCompVram(gPictureFrameTiles_4, (void *)VRAM);
- RLUnCompVram(gPictureFrameTilemap_4, (void *)(BG_SCREEN_ADDR(12)));
+ RLUnCompVram(sPictureFrameTiles_Tough, (void *)VRAM);
+ RLUnCompVram(sPictureFrameTilemap_Tough, (void *)(BG_SCREEN_ADDR(12)));
break;
}
}
@@ -519,10 +524,10 @@ static u8 GetImageEffectForContestWinner(u8 contestWinnerId)
{
u8 contestCategory;
- if (contestWinnerId < 8)
+ if (contestWinnerId < MUSEUM_CONTEST_WINNERS_START)
contestCategory = gContestPaintingWinner->contestCategory;
else
- contestCategory = gContestPaintingWinner->contestCategory / 3;
+ contestCategory = gContestPaintingWinner->contestCategory / NUM_PAINTING_CAPTIONS;
switch (contestCategory)
{
@@ -584,12 +589,12 @@ static void DoContestPaintingImageProcessing(u8 imageEffect)
LoadPalette(gContestPaintingMonPalette, 0x100, 0x200);
}
-static void CreateContestPaintingPicture(u8 contestWinnerId, bool8 arg1)
+static void CreateContestPaintingPicture(u8 contestWinnerId, bool8 isForArtist)
{
AllocPaintingResources();
InitContestMonPixels(gContestPaintingWinner->species, 0);
DoContestPaintingImageProcessing(GetImageEffectForContestWinner(contestWinnerId));
InitPaintingMonOamData(contestWinnerId);
- LoadContestPaintingFrame(contestWinnerId, arg1);
+ LoadContestPaintingFrame(contestWinnerId, isForArtist);
}
diff --git a/src/contest_util.c b/src/contest_util.c
index e5fd51db1..aae05d531 100644
--- a/src/contest_util.c
+++ b/src/contest_util.c
@@ -44,7 +44,6 @@
#include "constants/game_stat.h"
#include "constants/rgb.h"
#include "constants/songs.h"
-#include "constants/tv.h"
#include "contest.h"
enum {
@@ -61,10 +60,29 @@ enum {
#define GET_CONTEST_WINNER_ID(i) { for ((i) = 0; (i) < CONTESTANT_COUNT && gContestFinalStandings[(i)] != 0; (i)++); }
+// Gfx/pal tags for the text window sprites on the contest results screen.
+// Both types of text windows are made up of 4 individual sprites
+// These tags are used by the spritesheets, and implicitly in the loop in CreateResultsTextWindowSprites
+#define TAG_TEXT_WINDOW_BASE 3009
+enum {
+ TAG_RESULTS_TEXT_WINDOW_LEFT = TAG_TEXT_WINDOW_BASE,
+ TAG_RESULTS_TEXT_WINDOW_MIDLEFT,
+ TAG_RESULTS_TEXT_WINDOW_MIDRIGHT,
+ TAG_RESULTS_TEXT_WINDOW_RIGHT,
+ TAG_LINK_TEXT_WINDOW_LEFT,
+ TAG_LINK_TEXT_WINDOW_MIDLEFT,
+ TAG_LINK_TEXT_WINDOW_MIDRIGHT,
+ TAG_LINK_TEXT_WINDOW_RIGHT, // 3016
+};
#define TAG_CONFETTI 3017
+#define TAG_WIRELESS_INDICATOR_WINDOW 22222
#define MAX_BAR_LENGTH 87
+// Starting x/y for the sliding results screen text box
+#define TEXT_BOX_X (DISPLAY_WIDTH + 32)
+#define TEXT_BOX_Y (DISPLAY_HEIGHT - 16)
+
struct ContestResultsInternal
{
u8 slidingTextBoxSpriteId;
@@ -105,14 +123,14 @@ struct ContestResults
static EWRAM_DATA struct ContestResults *sContestResults = NULL;
static void LoadAllContestMonIconPalettes(void);
-static void LoadContestResultsTilemaps(void);
+static void LoadContestResultsTitleBarTilemaps(void);
static u8 GetNumPreliminaryPoints(u8, bool8);
static s8 GetNumRound2Points(u8, bool8);
static void AddContestTextPrinter(int, u8 *, int);
static void AllocContestResults(void);
static void FreeContestResults(void);
static void LoadAllContestMonIcons(u8, u8);
-static void LoadContestResultSprites(void);
+static void CreateResultsTextWindowSprites(void);
static void TryCreateWirelessSprites(void);
static void Task_StartShowContestResults(u8 taskId);
static void CB2_StartShowContestResults(void);
@@ -166,11 +184,11 @@ static void SpriteCB_Confetti(struct Sprite *sprite);
static void Task_ShowContestEntryMonPic(u8 taskId);
static void Task_LinkContestWaitForConnection(u8 taskId);
-static const u16 sUnknown_0858D6B0[] = INCBIN_U16("graphics/unknown/unknown_58D6B0.gbapal");
-static const u8 sUnknown_0858D6D0[] = INCBIN_U8("graphics/unknown/unknown_58D6D0.4bpp");
+static const u16 sResultsTextWindow_Pal[] = INCBIN_U16("graphics/contest/results_screen/text_window.gbapal");
+static const u8 sResultsTextWindow_Gfx[] = INCBIN_U8("graphics/contest/results_screen/text_window.4bpp");
static const u16 sMiscBlank_Pal[] = INCBIN_U16("graphics/interface/blank.gbapal");
-static const struct OamData sOamData_858D7F0 =
+static const struct OamData sOamData_ResultsTextWindow =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -187,33 +205,33 @@ static const struct OamData sOamData_858D7F0 =
.affineParam = 0,
};
-static const struct SpriteTemplate sSpriteTemplate_858D7F8 =
+static const struct SpriteTemplate sSpriteTemplate_ResultsTextWindow =
{
- .tileTag = 3009,
- .paletteTag = 3009,
- .oam = &sOamData_858D7F0,
+ .tileTag = TAG_TEXT_WINDOW_BASE,
+ .paletteTag = TAG_TEXT_WINDOW_BASE,
+ .oam = &sOamData_ResultsTextWindow,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteSheet sUnknown_0858D810[] =
+static const struct SpriteSheet sSpriteSheets_ResultsTextWindow[] =
{
- { .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3009 },
- { .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3010 },
- { .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3011 },
- { .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3012 },
- { .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3013 },
- { .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3014 },
- { .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3015 },
- { .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3016 },
+ { .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_RESULTS_TEXT_WINDOW_LEFT },
+ { .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_RESULTS_TEXT_WINDOW_MIDLEFT },
+ { .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_RESULTS_TEXT_WINDOW_MIDRIGHT },
+ { .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_RESULTS_TEXT_WINDOW_RIGHT },
+ { .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_LINK_TEXT_WINDOW_LEFT },
+ { .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_LINK_TEXT_WINDOW_MIDLEFT },
+ { .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_LINK_TEXT_WINDOW_MIDRIGHT },
+ { .data = gMiscBlank_Gfx, .size = 0x400, .tag = TAG_LINK_TEXT_WINDOW_RIGHT },
};
-static const struct SpritePalette sUnknown_0858D850 =
+static const struct SpritePalette sSpritePalette_ResultsTextWindow =
{
.data = sMiscBlank_Pal,
- .tag = 3009,
+ .tag = TAG_TEXT_WINDOW_BASE,
};
static const struct OamData sOamData_Confetti =
@@ -339,7 +357,7 @@ static const struct WindowTemplate sWindowTemplates[] =
DUMMY_WIN_TEMPLATE,
};
-static const struct OamData sUnknown_0858D8C0 =
+static const struct OamData sOamData_WirelessIndicatorWindow =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -357,22 +375,22 @@ static const struct OamData sUnknown_0858D8C0 =
};
-static const struct SpriteTemplate sSpriteTemplate_858D8C8 =
+static const struct SpriteTemplate sSpriteTemplate_WirelessIndicatorWindow =
{
- .tileTag = 22222,
+ .tileTag = TAG_WIRELESS_INDICATOR_WINDOW,
.paletteTag = 0,
- .oam = &sUnknown_0858D8C0,
+ .oam = &sOamData_WirelessIndicatorWindow,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteSheet sUnknown_0858D8E0 =
+static const struct SpriteSheet sSpriteSheet_WirelessIndicatorWindow =
{
.data = gMiscBlank_Gfx,
.size = 0x200,
- .tag = 22222
+ .tag = TAG_WIRELESS_INDICATOR_WINDOW
};
static const u8 sContestLinkTextColors[4] = {TEXT_COLOR_WHITE, TEXT_DYNAMIC_COLOR_6, TEXT_DYNAMIC_COLOR_5};
@@ -430,12 +448,12 @@ static void LoadContestResultsBgGfx(void)
u16 tile1, tile2;
LZDecompressVram(gContestResults_Gfx, (void *)BG_CHAR_ADDR(0));
- CopyToBgTilemapBuffer(3, gUnknown_08C1A12C, 0, 0);
- CopyToBgTilemapBuffer(2, gUnknown_08C1A000, 0, 0);
- CopyToBgTilemapBuffer(0, gUnknown_08C19EEC, 0, 0);
- LoadContestResultsTilemaps();
+ CopyToBgTilemapBuffer(3, gContestResults_Bg_Tilemap, 0, 0);
+ CopyToBgTilemapBuffer(2, gContestResults_Interface_Tilemap, 0, 0);
+ CopyToBgTilemapBuffer(0, gContestResults_WinnerBanner_Tilemap, 0, 0);
+ LoadContestResultsTitleBarTilemaps();
LoadCompressedPalette(gContestResults_Pal, 0, 0x200);
- LoadPalette(sUnknown_0858D6B0, 0xF0, 0x20);
+ LoadPalette(sResultsTextWindow_Pal, 0xF0, sizeof(sResultsTextWindow_Pal));
for (i = 0; i < CONTESTANT_COUNT; i++)
{
@@ -479,7 +497,7 @@ static void LoadContestMonName(u8 monIndex)
struct ContestPokemon *mon = &gContestMons[monIndex];
u8 *str = gDisplayedStringBattle;
if (monIndex == gContestPlayerMonIndex)
- str = StringCopy(gDisplayedStringBattle, gText_ColorDarkGrey);
+ str = StringCopy(gDisplayedStringBattle, gText_ColorDarkGray);
StringCopy(str, mon->nickname);
AddContestTextPrinter(monIndex, gDisplayedStringBattle, 0);
@@ -515,14 +533,14 @@ static void CB2_StartShowContestResults(void)
LoadAllContestMonNames();
memset(sContestResults->data, 0, sizeof(*sContestResults->data));
memset(sContestResults->monResults, 0, sizeof(*sContestResults->monResults));
- LoadContestResultSprites();
+ CreateResultsTextWindowSprites();
TryCreateWirelessSprites();
BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK);
gPaletteFade.bufferTransferDisabled = FALSE;
sContestResults->data->showResultsTaskId = CreateTask(Task_ShowContestResults, 5);
SetMainCallback2(CB2_ShowContestResults);
- gBattle_WIN1H = 0x00F0;
- gBattle_WIN1V = 0x80A0;
+ gBattle_WIN1H = WIN_RANGE(0, DISPLAY_WIDTH);
+ gBattle_WIN1V = WIN_RANGE(DISPLAY_HEIGHT - 32, DISPLAY_HEIGHT);
CreateTask(Task_SlideContestResultsBg, 20);
CalculateContestantsResultData();
if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS)
@@ -587,10 +605,10 @@ static void Task_ShowContestResults(u8 taskId)
}
TryGainNewFanFromCounter(FANCOUNTER_FINISHED_CONTEST);
- sub_80DEDA8(gSpecialVar_ContestRank);
- sub_80DEDA8(0xFE);
- gUnknown_02039F5C = TRUE;
- gUnknown_02039F5D = sub_80DEFA8(0xFE, 0);
+ SaveContestWinner(gSpecialVar_ContestRank); // Save for lobby painting
+ SaveContestWinner(CONTEST_SAVE_FOR_ARTIST);
+ gCurContestWinnerIsForArtist = TRUE;
+ gCurContestWinnerSaveIdx = GetContestWinnerSaveIdx(CONTEST_SAVE_FOR_ARTIST, FALSE);
var = VarGet(VAR_CONTEST_HALL_STATE);
VarSet(VAR_CONTEST_HALL_STATE, 0);
SetContinueGameWarpStatusToDynamicWarp();
@@ -637,10 +655,10 @@ static void Task_ShowContestResults(u8 taskId)
if (gContestFinalStandings[gContestPlayerMonIndex] == 0)
IncrementGameStat(GAME_STAT_WON_CONTEST);
- sub_80DEDA8(gSpecialVar_ContestRank);
- sub_80DEDA8(0xFE);
- gUnknown_02039F5C = TRUE;
- gUnknown_02039F5D = sub_80DEFA8(0xFE, 0);
+ SaveContestWinner(gSpecialVar_ContestRank); // Save for lobby painting
+ SaveContestWinner(CONTEST_SAVE_FOR_ARTIST);
+ gCurContestWinnerIsForArtist = TRUE;
+ gCurContestWinnerSaveIdx = GetContestWinnerSaveIdx(CONTEST_SAVE_FOR_ARTIST, FALSE);
TryGainNewFanFromCounter(FANCOUNTER_FINISHED_CONTEST);
gTasks[taskId].func = Task_AnnouncePreliminaryResults;
}
@@ -679,7 +697,7 @@ static void Task_AnnouncePreliminaryResults(u8 taskId)
{
CreateTask(Task_FlashStarsAndHearts, 20);
x = DrawResultsTextWindow(gText_AnnouncingResults, sContestResults->data->slidingTextBoxSpriteId);
- StartTextBoxSlideIn(x, 144, 120, 1088);
+ StartTextBoxSlideIn(x, TEXT_BOX_Y, 120, 1088);
gTasks[taskId].tState++;
}
else if (gTasks[taskId].tState == 1)
@@ -702,7 +720,7 @@ static void Task_AnnouncePreliminaryResults(u8 taskId)
else if (gTasks[taskId].tState == 3)
{
x = DrawResultsTextWindow(gText_PreliminaryResults, sContestResults->data->slidingTextBoxSpriteId);
- StartTextBoxSlideIn(x, 144, -1, 1088);
+ StartTextBoxSlideIn(x, TEXT_BOX_Y, -1, 1088);
gTasks[taskId].tState++;
}
else if (gTasks[taskId].tState == 4)
@@ -752,7 +770,7 @@ static void Task_AnnounceRound2Results(u8 taskId)
{
gTasks[taskId].tTimer = 0;
x = DrawResultsTextWindow(gText_Round2Results, sContestResults->data->slidingTextBoxSpriteId);
- StartTextBoxSlideIn(x, 144, -1, 1088);
+ StartTextBoxSlideIn(x, TEXT_BOX_Y, -1, 1088);
}
}
else if (sContestResults->data->slidingTextBoxState == SLIDING_TEXT_ARRIVED)
@@ -837,11 +855,11 @@ static void Task_AnnounceWinner(u8 taskId)
gTasks[taskId].tTimer = 0;
GET_CONTEST_WINNER_ID(i);
StringCopy(gStringVar1, gContestMons[i].trainerName);
- sub_81DB5AC(gStringVar1);
+ ConvertInternationalContestantName(gStringVar1);
StringCopy(gStringVar2, gContestMons[i].nickname);
StringExpandPlaceholders(winnerTextBuffer, gText_ContestantsMonWon);
x = DrawResultsTextWindow(winnerTextBuffer, sContestResults->data->slidingTextBoxSpriteId);
- StartTextBoxSlideIn(x, 144, -1, 1088);
+ StartTextBoxSlideIn(x, TEXT_BOX_Y, -1, 1088);
gTasks[taskId].tState++;
}
break;
@@ -864,8 +882,8 @@ static void Task_ShowWinnerMonBanner(u8 taskId)
switch (gTasks[taskId].tState)
{
case 0:
- gBattle_WIN0H = 0x00F0;
- gBattle_WIN0V = 0x5050;
+ gBattle_WIN0H = WIN_RANGE(0, DISPLAY_WIDTH);
+ gBattle_WIN0V = WIN_RANGE(DISPLAY_HEIGHT / 2, DISPLAY_HEIGHT / 2);
GET_CONTEST_WINNER_ID(i);
species = gContestMons[i].species;
@@ -892,7 +910,7 @@ static void Task_ShowWinnerMonBanner(u8 taskId)
LoadCompressedSpritePalette(pokePal);
SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_OPPONENT_LEFT);
gMultiuseSpriteTemplate.paletteTag = pokePal->tag;
- spriteId = CreateSprite(&gMultiuseSpriteTemplate, 272, 80, 10);
+ spriteId = CreateSprite(&gMultiuseSpriteTemplate, DISPLAY_WIDTH + 32, DISPLAY_HEIGHT / 2, 10);
gSprites[spriteId].data[1] = species;
gSprites[spriteId].oam.priority = 0;
gSprites[spriteId].callback = SpriteCB_WinnerMonSlideIn;
@@ -912,7 +930,7 @@ static void Task_ShowWinnerMonBanner(u8 taskId)
gTasks[taskId].tCounter = 32;
counter = gTasks[taskId].tCounter;
- gBattle_WIN0V = ((80 - counter) << 8) | (80 + counter);
+ gBattle_WIN0V = WIN_RANGE(DISPLAY_HEIGHT / 2 - counter, DISPLAY_HEIGHT / 2 + counter);
if (counter == 32)
gTasks[taskId].tState++;
}
@@ -934,11 +952,11 @@ static void Task_ShowWinnerMonBanner(u8 taskId)
{
u8 top = (gBattle_WIN0V >> 8);
top += 2;
- if (top > 80)
- top = 80;
+ if (top > DISPLAY_HEIGHT / 2)
+ top = DISPLAY_HEIGHT / 2;
- gBattle_WIN0V = (top << 8) | (160 - top);
- if (top == 80)
+ gBattle_WIN0V = WIN_RANGE(top, DISPLAY_HEIGHT - top);
+ if (top == DISPLAY_HEIGHT / 2)
gTasks[taskId].tState++;
}
break;
@@ -1136,9 +1154,9 @@ static void TryCreateWirelessSprites(void)
LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(8, 8);
gSprites[gWirelessStatusIndicatorSpriteId].subpriority = 1;
- sheet = LoadSpriteSheet(&sUnknown_0858D8E0);
+ sheet = LoadSpriteSheet(&sSpriteSheet_WirelessIndicatorWindow);
RequestDma3Fill(0xFFFFFFFF, (void *)BG_CHAR_ADDR(4) + sheet * 0x20, 0x80, 1);
- spriteId = CreateSprite(&sSpriteTemplate_858D8C8, 8, 8, 0);
+ spriteId = CreateSprite(&sSpriteTemplate_WirelessIndicatorWindow, 8, 8, 0);
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_WINDOW;
}
}
@@ -1150,14 +1168,13 @@ static s32 DrawResultsTextWindow(const u8 *text, u8 spriteId)
int strWidth;
u8 *spriteTilePtrs[4];
u8 *dst;
- {
- struct WindowTemplate windowTemplate;
- memset(&windowTemplate, 0, sizeof(windowTemplate));
- windowTemplate.width = 30;
- windowTemplate.height = 2;
- windowId = AddWindow(&windowTemplate);
- FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
- }
+
+ struct WindowTemplate windowTemplate;
+ memset(&windowTemplate, 0, sizeof(windowTemplate));
+ windowTemplate.width = 30;
+ windowTemplate.height = 2;
+ windowId = AddWindow(&windowTemplate);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
origWidth = GetStringWidth(1, text, 0);
strWidth = (origWidth + 9) / 8;
@@ -1169,16 +1186,16 @@ static s32 DrawResultsTextWindow(const u8 *text, u8 spriteId)
s32 i;
struct Sprite *sprite;
const u8 *src, *windowTilesPtr;
- windowTilesPtr = (u8 *)(GetWindowAttribute(windowId, WINDOW_TILE_DATA));
- src = (u8 *)(sUnknown_0858D6D0);
+ windowTilesPtr = (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA);
+ src = (u8 *)sResultsTextWindow_Gfx;
sprite = &gSprites[spriteId];
spriteTilePtrs[0] = (u8 *)(sprite->oam.tileNum * 32 + OBJ_VRAM0);
- for (i = 1; i < 4; i++)
+ for (i = 1; i < (int)ARRAY_COUNT(spriteTilePtrs); i++)
spriteTilePtrs[i] = (void*)(gSprites[sprite->data[i - 1]].oam.tileNum * 32 + OBJ_VRAM0);
- for (i = 0; i < 4; i++)
+ for (i = 0; i < (int)ARRAY_COUNT(spriteTilePtrs); i++)
CpuFill32(0, spriteTilePtrs[i], 0x400);
dst = spriteTilePtrs[0];
@@ -1205,30 +1222,34 @@ static s32 DrawResultsTextWindow(const u8 *text, u8 spriteId)
}
RemoveWindow(windowId);
- return (240 - (strWidth + 2) * 8) / 2;
+ return (DISPLAY_WIDTH - (strWidth + 2) * 8) / 2;
}
-static void LoadContestResultSprites(void)
+static void CreateResultsTextWindowSprites(void)
{
int i;
struct SpriteTemplate template;
- u8 spriteIds[ARRAY_COUNT(sUnknown_0858D810)];
+ u8 spriteIds[ARRAY_COUNT(sSpriteSheets_ResultsTextWindow)];
- template = sSpriteTemplate_858D7F8;
- for (i = 0; i < (int)ARRAY_COUNT(sUnknown_0858D810); i++)
- LoadSpriteSheet(&sUnknown_0858D810[i]);
+ template = sSpriteTemplate_ResultsTextWindow;
+ for (i = 0; i < (int)ARRAY_COUNT(sSpriteSheets_ResultsTextWindow); i++)
+ LoadSpriteSheet(&sSpriteSheets_ResultsTextWindow[i]);
- LoadSpritePalette(&sUnknown_0858D850);
- for (i = 0; i < (int)ARRAY_COUNT(sUnknown_0858D810); i++)
+ LoadSpritePalette(&sSpritePalette_ResultsTextWindow);
+
+ // Create sprites for the two window types, each made up of 4 sprites
+ for (i = 0; i < (int)ARRAY_COUNT(sSpriteSheets_ResultsTextWindow); i++)
{
- spriteIds[i] = CreateSprite(&template, 272, 144, 10);
+ spriteIds[i] = CreateSprite(&template, TEXT_BOX_X, TEXT_BOX_Y, 10);
template.tileTag++;
}
+ // Save sprite ids of the sliding text box onto its leftmost sprite
gSprites[spriteIds[0]].data[0] = spriteIds[1];
gSprites[spriteIds[0]].data[1] = spriteIds[2];
gSprites[spriteIds[0]].data[2] = spriteIds[3];
+ // Save sprite ids of the link text box onto its leftmost sprite
gSprites[spriteIds[4]].data[0] = spriteIds[5];
gSprites[spriteIds[4]].data[1] = spriteIds[6];
gSprites[spriteIds[4]].data[2] = spriteIds[7];
@@ -1248,10 +1269,10 @@ static void LoadContestResultSprites(void)
static void StartTextBoxSlideIn(s16 x, u16 y, u16 slideOutTimer, u16 slideIncrement)
{
struct Sprite *sprite = &gSprites[sContestResults->data->slidingTextBoxSpriteId];
- sprite->pos1.x = 272;
- sprite->pos1.y = y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x = TEXT_BOX_X;
+ sprite->y = y;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->sTargetX = x + 32;
sprite->sSlideOutTimer = slideOutTimer;
sprite->sSlideIncrement = slideIncrement;
@@ -1263,10 +1284,10 @@ static void StartTextBoxSlideIn(s16 x, u16 y, u16 slideOutTimer, u16 slideIncrem
static void StartTextBoxSlideOut(u16 slideIncrement)
{
struct Sprite *sprite = &gSprites[sContestResults->data->slidingTextBoxSpriteId];
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->sSlideIncrement = slideIncrement;
sprite->sDistance = 0;
sprite->callback = SpriteCB_TextBoxSlideOut;
@@ -1275,10 +1296,10 @@ static void StartTextBoxSlideOut(u16 slideIncrement)
static void EndTextBoxSlideOut(struct Sprite *sprite)
{
- sprite->pos1.x = 272;
- sprite->pos1.y = 144;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x = TEXT_BOX_X;
+ sprite->y = TEXT_BOX_Y;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->callback = SpriteCallbackDummy;
sContestResults->data->slidingTextBoxState = SLIDING_TEXT_OFFSCREEN;
}
@@ -1288,21 +1309,21 @@ static void SpriteCB_TextBoxSlideIn(struct Sprite *sprite)
int i;
s16 delta = sprite->sDistance + sprite->sSlideIncrement;
- sprite->pos1.x -= delta >> 8;
+ sprite->x -= delta >> 8;
sprite->sDistance += sprite->sSlideIncrement;
sprite->sDistance &= 0xFF;
// Prevent overshooting target
- if (sprite->pos1.x < sprite->sTargetX)
- sprite->pos1.x = sprite->sTargetX;
+ if (sprite->x < sprite->sTargetX)
+ sprite->x = sprite->sTargetX;
for (i = 0; i < 3; i++)
{
struct Sprite *sprite2 = &gSprites[sprite->data[i]];
- sprite2->pos1.x = sprite->pos1.x + sprite->pos2.x + (i + 1) * 64;
+ sprite2->x = sprite->x + sprite->x2 + (i + 1) * 64;
}
- if (sprite->pos1.x == sprite->sTargetX)
+ if (sprite->x == sprite->sTargetX)
sprite->callback = SpriteCB_EndTextBoxSlideIn;
}
@@ -1322,16 +1343,16 @@ static void SpriteCB_TextBoxSlideOut(struct Sprite *sprite)
s16 delta;
delta = sprite->sDistance + sprite->sSlideIncrement;
- sprite->pos1.x -= delta >> 8;
+ sprite->x -= delta >> 8;
sprite->sDistance += sprite->sSlideIncrement;
sprite->sDistance &= 0xFF;
for (i = 0; i < 3; i++)
{
struct Sprite *sprite2 = &gSprites[sprite->data[i]];
- sprite2->pos1.x = sprite->pos1.x + sprite->pos2.x + (i + 1) * 64;
+ sprite2->x = sprite->x + sprite->x2 + (i + 1) * 64;
}
- if (sprite->pos1.x + sprite->pos2.x < -224)
+ if (sprite->x + sprite->x2 < -224)
EndTextBoxSlideOut(sprite);
}
@@ -1343,18 +1364,18 @@ static void ShowLinkResultsTextBox(const u8 *text)
x = DrawResultsTextWindow(text, sContestResults->data->linkTextBoxSpriteId);
sprite = &gSprites[sContestResults->data->linkTextBoxSpriteId];
- sprite->pos1.x = x + 32;
- sprite->pos1.y = 80;
+ sprite->x = x + 32;
+ sprite->y = 80;
sprite->invisible = FALSE;
for (i = 0; i < 3; i++)
{
- gSprites[sprite->data[i]].pos1.x = sprite->pos1.x + sprite->pos2.x + (i + 1) * 64;
- gSprites[sprite->data[i]].pos1.y = sprite->pos1.y;
+ gSprites[sprite->data[i]].x = sprite->x + sprite->x2 + (i + 1) * 64;
+ gSprites[sprite->data[i]].y = sprite->y;
gSprites[sprite->data[i]].invisible = FALSE;
}
- gBattle_WIN0H = 0x00F0;
- gBattle_WIN0V = ((sprite->pos1.y - 16) << 8) | (sprite->pos1.y + 16);
+ gBattle_WIN0H = WIN_RANGE(0, DISPLAY_WIDTH);
+ gBattle_WIN0V = WIN_RANGE(sprite->y - 16, sprite->y + 16);
SetGpuReg(REG_OFFSET_WININ, WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR
| WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR);
}
@@ -1377,7 +1398,7 @@ static void HideLinkResultsTextBox(void)
| WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
}
-static void LoadContestResultsTilemaps(void)
+static void LoadContestResultsTitleBarTilemaps(void)
{
u8 palette;
int x, y;
@@ -1386,58 +1407,58 @@ static void LoadContestResultsTilemaps(void)
y = 1;
if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
{
- CopyToBgTilemapBufferRect(2, gLinkContestResults_Tilemap, 5, 1, 5, 2);
+ CopyToBgTilemapBufferRect(2, gContestResultsTitle_Link_Tilemap, 5, 1, 5, 2);
x = 10;
}
else if (gSpecialVar_ContestRank == CONTEST_RANK_NORMAL)
{
- CopyToBgTilemapBufferRect(2, gNormalContestResults_Tilemap, 5, 1, 10, 2);
+ CopyToBgTilemapBufferRect(2, gContestResultsTitle_Normal_Tilemap, 5, 1, 10, 2);
x = 15;
}
else if (gSpecialVar_ContestRank == CONTEST_RANK_SUPER)
{
- CopyToBgTilemapBufferRect(2, gSuperContestResults_Tilemap, 5, 1, 10, 2);
+ CopyToBgTilemapBufferRect(2, gContestResultsTitle_Super_Tilemap, 5, 1, 10, 2);
x = 15;
}
else if (gSpecialVar_ContestRank == CONTEST_RANK_HYPER)
{
- CopyToBgTilemapBufferRect(2, gHyperContestResults_Tilemap, 5, 1, 10, 2);
+ CopyToBgTilemapBufferRect(2, gContestResultsTitle_Hyper_Tilemap, 5, 1, 10, 2);
x = 15;
}
else // CONTEST_RANK_MASTER
{
- CopyToBgTilemapBufferRect(2, gMasterContestResults_Tilemap, 5, 1, 10, 2);
+ CopyToBgTilemapBufferRect(2, gContestResultsTitle_Master_Tilemap, 5, 1, 10, 2);
x = 15;
}
if (gSpecialVar_ContestCategory == CONTEST_CATEGORY_COOL)
{
palette = 0;
- CopyToBgTilemapBufferRect(2, gCoolContestResults_Tilemap, x, y, 5, 2);
+ CopyToBgTilemapBufferRect(2, gContestResultsTitle_Cool_Tilemap, x, y, 5, 2);
}
else if (gSpecialVar_ContestCategory == CONTEST_CATEGORY_BEAUTY)
{
palette = 1;
- CopyToBgTilemapBufferRect(2, gBeautyContestResults_Tilemap, x, y, 5, 2);
+ CopyToBgTilemapBufferRect(2, gContestResultsTitle_Beauty_Tilemap, x, y, 5, 2);
}
else if (gSpecialVar_ContestCategory == CONTEST_CATEGORY_CUTE)
{
palette = 2;
- CopyToBgTilemapBufferRect(2, gCuteContestResults_Tilemap, x, y, 5, 2);
+ CopyToBgTilemapBufferRect(2, gContestResultsTitle_Cute_Tilemap, x, y, 5, 2);
}
else if (gSpecialVar_ContestCategory == CONTEST_CATEGORY_SMART)
{
palette = 3;
- CopyToBgTilemapBufferRect(2, gSmartContestResults_Tilemap, x, y, 5, 2);
+ CopyToBgTilemapBufferRect(2, gContestResultsTitle_Smart_Tilemap, x, y, 5, 2);
}
else // CONTEST_CATEGORY_TOUGH
{
palette = 4;
- CopyToBgTilemapBufferRect(2, gToughContestResults_Tilemap, x, y, 5, 2);
+ CopyToBgTilemapBufferRect(2, gContestResultsTitle_Tough_Tilemap, x, y, 5, 2);
}
x += 5;
- CopyToBgTilemapBufferRect(2, gContestResults_Tilemap, x, y, 6, 2);
+ CopyToBgTilemapBufferRect(2, gContestResultsTitle_Tilemap, x, y, 6, 2);
CopyToBgTilemapBufferRect_ChangePalette(2, sContestResults->tilemapBuffers[2], 0, 0, 32, 4, palette);
}
@@ -1564,13 +1585,13 @@ static void SpriteCB_WinnerMonSlideIn(struct Sprite *sprite)
else
{
s16 delta = sprite->data[1] + 0x600;
- sprite->pos1.x -= delta >> 8;
+ sprite->x -= delta >> 8;
sprite->data[1] += 0x600;
sprite->data[1] &= 0xFF;
- if (sprite->pos1.x < 120)
- sprite->pos1.x = 120;
+ if (sprite->x < DISPLAY_WIDTH / 2)
+ sprite->x = DISPLAY_WIDTH / 2;
- if (sprite->pos1.x == 120)
+ if (sprite->x == DISPLAY_WIDTH / 2)
{
sprite->callback = SpriteCallbackDummy;
sprite->data[1] = 0;
@@ -1582,10 +1603,10 @@ static void SpriteCB_WinnerMonSlideIn(struct Sprite *sprite)
static void SpriteCB_WinnerMonSlideOut(struct Sprite *sprite)
{
s16 delta = sprite->data[1] + 0x600;
- sprite->pos1.x -= delta >> 8;
+ sprite->x -= delta >> 8;
sprite->data[1] += + 0x600;
sprite->data[1] &= 0xFF;
- if (sprite->pos1.x < -32)
+ if (sprite->x < -32)
{
sprite->callback = SpriteCallbackDummy;
sprite->invisible = TRUE;
@@ -1600,7 +1621,7 @@ static void Task_CreateConfetti(u8 taskId)
gTasks[taskId].data[0] = 0;
if (sContestResults->data->confettiCount < 40)
{
- u8 spriteId = CreateSprite(&sSpriteTemplate_Confetti, (Random() % 240) - 20, 44, 5);
+ u8 spriteId = CreateSprite(&sSpriteTemplate_Confetti, (Random() % DISPLAY_WIDTH) - 20, 44, 5);
gSprites[spriteId].data[0] = Random() % 512;
gSprites[spriteId].data[1] = (Random() % 24) + 16;
gSprites[spriteId].data[2] = (Random() % 256) + 48;
@@ -1618,17 +1639,17 @@ static void SpriteCB_Confetti(struct Sprite *sprite)
s16 delta;
sprite->data[3] += sprite->data[0];
- sprite->pos2.x = Sin(sprite->data[3] >> 8, sprite->data[1]);
+ sprite->x2 = Sin(sprite->data[3] >> 8, sprite->data[1]);
delta = sprite->data[4] + sprite->data[2];
- sprite->pos1.x += delta >> 8;
+ sprite->x += delta >> 8;
sprite->data[4] += sprite->data[2];
sprite->data[4] &= 0xff;
- sprite->pos1.y++;
+ sprite->y++;
if (sContestResults->data->destroyConfetti)
sprite->invisible = TRUE;
- if (sprite->pos1.x > 248 || sprite->pos1.y > 116)
+ if (sprite->x > DISPLAY_WIDTH + 8 || sprite->y > 116)
{
DestroySprite(sprite);
sContestResults->data->confettiCount--;
@@ -2035,7 +2056,7 @@ void GiveMonContestRibbon(void)
void BufferContestantTrainerName(void)
{
StringCopy(gStringVar1, gContestMons[gSpecialVar_0x8006].trainerName);
- sub_81DB5AC(gStringVar1);
+ ConvertInternationalContestantName(gStringVar1);
}
void BufferContestantMonNickname(void)
@@ -2074,7 +2095,7 @@ void BufferContestWinnerTrainerName(void)
u8 i;
GET_CONTEST_WINNER_ID(i);
StringCopy(gStringVar3, gContestMons[i].trainerName);
- sub_81DB5AC(gStringVar3);
+ ConvertInternationalContestantName(gStringVar3);
}
void BufferContestWinnerMonName(void)
@@ -2257,6 +2278,10 @@ static void Task_LinkContest_WaitDisconnect(u8 taskId)
}
}
+/*
+ A section of contest script functions starts here
+*/
+
void SetContestTrainerGfxIds(void)
{
gSaveBlock1Ptr->vars[VAR_OBJ_GFX_ID_0 - VARS_START] = gContestMons[0].trainerGfxId;
@@ -2265,27 +2290,27 @@ void SetContestTrainerGfxIds(void)
}
// Unused
-void sub_80F8814(void)
+void GetNpcContestantLocalId(void)
{
- u16 var1;
- u8 var0 = gSpecialVar_0x8005;
- switch (var0)
+ u16 localId;
+ u8 contestant = gSpecialVar_0x8005;
+ switch (contestant)
{
case 0:
- var1 = 3;
+ localId = 3;
break;
case 1:
- var1 = 4;
+ localId = 4;
break;
case 2:
- var1 = 5;
+ localId = 5;
break;
- default:
- var1 = 100;
+ default: // Invalid
+ localId = 100;
break;
}
- gSpecialVar_0x8004 = var1;
+ gSpecialVar_0x8004 = localId;
}
void BufferContestTrainerAndMonNames(void)
@@ -2296,26 +2321,26 @@ void BufferContestTrainerAndMonNames(void)
}
// Unused
-void DoesContestCategoryHaveWinner(void)
+void DoesContestCategoryHaveMuseumPainting(void)
{
int contestWinner;
switch (gSpecialVar_ContestCategory)
{
case CONTEST_CATEGORY_COOL:
- contestWinner = 8;
+ contestWinner = CONTEST_WINNER_MUSEUM_COOL - 1;
break;
case CONTEST_CATEGORY_BEAUTY:
- contestWinner = 9;
+ contestWinner = CONTEST_WINNER_MUSEUM_BEAUTY - 1;
break;
case CONTEST_CATEGORY_CUTE:
- contestWinner = 10;
+ contestWinner = CONTEST_WINNER_MUSEUM_CUTE - 1;
break;
case CONTEST_CATEGORY_SMART:
- contestWinner = 11;
+ contestWinner = CONTEST_WINNER_MUSEUM_SMART - 1;
break;
case CONTEST_CATEGORY_TOUGH:
default:
- contestWinner = 12;
+ contestWinner = CONTEST_WINNER_MUSEUM_TOUGH - 1;
break;
}
@@ -2327,7 +2352,7 @@ void DoesContestCategoryHaveWinner(void)
void SaveMuseumContestPainting(void)
{
- sub_80DEDA8(0xFF);
+ SaveContestWinner(CONTEST_SAVE_FOR_MUSEUM);
}
void ShouldReadyContestArtist(void)
@@ -2344,14 +2369,14 @@ void ShouldReadyContestArtist(void)
}
}
-u8 CountPlayerContestPaintings(void)
+u8 CountPlayerMuseumPaintings(void)
{
int i;
u8 count = 0;
- for (i = 0; i < 5; i++)
+ for (i = 0; i < NUM_CONTEST_WINNERS - MUSEUM_CONTEST_WINNERS_START; i++)
{
- if (gSaveBlock1Ptr->contestWinners[8 + i].species)
+ if (gSaveBlock1Ptr->contestWinners[MUSEUM_CONTEST_WINNERS_START + i].species)
count++;
}
@@ -2359,19 +2384,21 @@ u8 CountPlayerContestPaintings(void)
}
// Unused
-void sub_80F8970(void)
+void GetContestantNamesAtRank(void)
{
s16 conditions[CONTESTANT_COUNT];
int i, j;
s16 condition;
- s8 var0;
- u8 var2;
- u8 r8;
- u8 r7;
+ s8 numAtCondition;
+ u8 contestantOffset;
+ u8 tieRank;
+ u8 rank;
+ // Get round 1 points
for (i = 0; i < CONTESTANT_COUNT; i++)
conditions[i] = gContestMonRound1Points[i];
+ // Sort round 1 points
for (i = 0; i < CONTESTANT_COUNT - 1; i++)
{
for (j = CONTESTANT_COUNT - 1; j > i; j--)
@@ -2384,58 +2411,65 @@ void sub_80F8970(void)
}
}
+ // Get round 1 points at specified rank
condition = conditions[gSpecialVar_0x8006];
- var0 = 0;
- r8 = 0;
+
+ // Count number of contestants with the same number of points
+ numAtCondition = 0;
+ tieRank = 0;
for (i = 0; i < CONTESTANT_COUNT; i++)
{
if (conditions[i] == condition)
{
- var0++;
+ numAtCondition++;
if (i == gSpecialVar_0x8006)
- r8 = var0;
+ tieRank = numAtCondition;
}
}
+ // Get rank of first contestant with the same number of points
for (i = 0; i < CONTESTANT_COUNT; i++)
{
if (conditions[i] == condition)
break;
}
+ rank = i;
- r7 = i;
- var2 = r8;
+ // Get contestant id of player at rank (taking ties into account)
+ contestantOffset = tieRank;
for (i = 0; i < CONTESTANT_COUNT; i++)
{
if (condition == gContestMonRound1Points[i])
{
- if (var2 == 1)
+ if (contestantOffset == 1)
break;
- var2--;
+ contestantOffset--;
}
}
+ // Use contestant id to get names
StringCopy(gStringVar1, gContestMons[i].nickname);
StringCopy(gStringVar2, gContestMons[i].trainerName);
- sub_81DB5AC(gStringVar2);
+ ConvertInternationalContestantName(gStringVar2);
- if (var0 == 1)
- gSpecialVar_0x8006 = r7;
- else if (r8 == var0)
- gSpecialVar_0x8006 = r7;
+ // Return adjusted rank
+ if (numAtCondition == 1)
+ gSpecialVar_0x8006 = rank;
+ else if (tieRank == numAtCondition)
+ gSpecialVar_0x8006 = rank;
else
- gSpecialVar_0x8006 = r7 + 4;
+ gSpecialVar_0x8006 = rank + CONTESTANT_COUNT;
}
-static void ExitContestWinnerPainting(void)
+static void ExitContestPainting(void)
{
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
}
-void ShowContestWinnerPainting(void)
+void ShowContestPainting(void)
{
SetMainCallback2(CB2_ContestPainting);
- gMain.savedCallback = ExitContestWinnerPainting;
+ gMain.savedCallback = ExitContestPainting;
}
void SetLinkContestPlayerGfx(void)
diff --git a/src/credits.c b/src/credits.c
index 84b802005..3ea51f743 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -23,111 +23,44 @@
#include "event_data.h"
#include "random.h"
-enum
-{
- PAGE_TITLE,
- PAGE_DIRECTOR,
- PAGE_ART_DIRECTOR,
- PAGE_WORLD_DIRECTOR,
- PAGE_LEAD_PROGRAMMER,
- PAGE_PROGRAMMERS_1,
- PAGE_PROGRAMMERS_2,
- PAGE_PROGRAMMERS_3,
- PAGE_PROGRAMMERS_4,
- PAGE_GRAPHIC_DESIGNERS_1,
- PAGE_GRAPHIC_DESIGNERS_2,
- PAGE_GRAPHIC_DESIGNERS_3,
- PAGE_MUSIC_COMPOSITION,
- PAGE_SOUND_EFFECTS,
- PAGE_GAME_DESIGNERS_1,
- PAGE_GAME_DESIGNERS_2,
- PAGE_GAME_DESIGNERS_3,
- PAGE_SCENARIO_PLOT,
- PAGE_SCENARIO,
- PAGE_SCRIPT_DESIGNERS,
- PAGE_MAP_DESIGNERS,
- PAGE_BATTLE_FRONTIER_DATA,
- PAGE_PARAMETRIC_DESIGNERS,
- PAGE_POKEDEX_TEXT,
- PAGE_ENVIRONMENT_AND_TOOL_PROGRAMS_1,
- PAGE_PKMN_DESIGNERS_1,
- PAGE_PKMN_DESIGNERS_2,
- PAGE_PKMN_DESIGNERS_3,
- PAGE_PKMN_DESIGNERS_4,
- PAGE_SUPPORT_PROGRAMMERS,
- PAGE_NCL_PRODUCT_TESTING,
- PAGE_PACKAGE_AND_MANUAL,
- PAGE_SPECIAL_THANKS_1,
- PAGE_SPECIAL_THANKS_2,
- PAGE_SPECIAL_THANKS_3,
- PAGE_SPECIAL_THANKS_4,
- PAGE_INFORMATION_SUPERVISORS,
- PAGE_ARTWORK_1,
- PAGE_ARTWORK_2,
- PAGE_ARTWORK_3,
- PAGE_COORDINATORS,
- PAGE_ENGLISH_VERSION,
- PAGE_TRANSLATOR,
- PAGE_TEXT_EDITOR,
- PAGE_NCL_COORDINATOR,
- PAGE_PROGRAMMERS_5,
- PAGE_GRAPHIC_DESIGNER,
- PAGE_ENVIRONMENT_AND_TOOL_PROGRAMS_2,
- PAGE_NOA_TESTING,
- PAGE_BRAILLE_CODE_CHECK_1,
- PAGE_BRAILLE_CODE_CHECK_2,
- PAGE_SPECIAL_THANKS_5,
- PAGE_TASK_MANAGERS,
- PAGE_PRODUCERS,
- PAGE_EXECUTIVE_DIRECTOR,
- PAGE_EXECUTIVE_PRODUCERS_1,
- PAGE_EXECUTIVE_PRODUCERS_2,
- PAGE_COUNT
-};
-
#define COLOR_DARK_GREEN RGB(7, 11, 6)
#define COLOR_LIGHT_GREEN RGB(13, 20, 12)
-enum
-{
- TDA_0 = 0,
- TDA_TASK_C_ID = 1,
- TDA_TASK_E_ID = 2,
- TDA_TASK_D_ID = 3,
- TDA_4 = 4,
- TDA_PLAYER_CYCLIST = 5,
- TDA_RIVAL_CYCLIST = 6,
- TDA_7 = 7, // Has something to do with the bike scene
- TDA_11 = 11, // Gets set depending on whether the bike or the grass scene should be shown
- TDA_12 = 12,
- TDA_13 = 13,
- TDA_14 = 14,
- TDA_TASK_B_ID = 15,
-
- // Appears to be responsible for text
- TDB_0 = 0,
- TDB_TASK_A_ID = 1,
- TDB_CURRENT_PAGE = 2,
- TDB_3 = 3,
-
- TDC_0 = 0,
- TDC_1 = 1,
- TDC_2 = 2,
- TDC_3 = 3,
- TDC_4 = 4,
- TDC_5 = 5,
-
- TDD_STATE = 0,
- TDD_TASK_A_ID = 1,
- TDD_2 = 2,
- TDD_3 = 3,
-
- TDE_0 = 0,
- TDE_1 = 1,
- TDE_TASK_A_ID = 2,
+#define TAG_MON_BG 1001
+
+// Positions for the Pokémon images
+enum {
+ POS_LEFT,
+ POS_CENTER,
+ POS_RIGHT,
};
+enum {
+ MODE_NONE,
+ MODE_BIKE_SCENE,
+ MODE_SHOW_MONS,
+};
+
+#define tState data[0]
+
+// Task data for the main Credits tasks
+#define tTaskId_BgScenery data[0] // ID for Task_BicycleBgAnimation (created by CreateBicycleBgAnimationTask)
+#define tTaskId_BikeScene data[1] // ID for Task_BikeScene
+#define tTaskId_SceneryPal data[2] // ID for Task_CycleSceneryPalette
+#define tTaskId_ShowMons data[3] // ID for Task_ShowMons
+#define tEndCredits data[4]
+#define tPlayerSpriteId data[5]
+#define tRivalSpriteId data[6]
+#define tSceneNum data[7]
+// data[8]-[10] are unused
+#define tNextMode data[11]
+#define tTheEndDelay data[12]
+#define tCurrentMode data[13]
+#define tPrintedPage data[14]
+#define tTaskId_UpdatePage data[15]
+
#define NUM_MON_SLIDES 71
+
struct CreditsData
{
u16 monToShow[NUM_MON_SLIDES]; // List of Pokemon species ids that will show during the credits
@@ -137,35 +70,55 @@ struct CreditsData
u16 numMonToShow; //number of pokemon to show, always NUM_MON_SLIDES after determine function
u16 caughtMonIds[NATIONAL_DEX_COUNT]; //temporary location to hold a condensed array of all caught pokemon
u16 numCaughtMon; //count of filled spaces in caughtMonIds
- u16 unk39C[7]; // unused padding?
+ u16 unused[7];
};
struct CreditsEntry
{
- u8 var_0;
+ u8 unk; // Never read
bool8 isTitle;
const u8 *text;
};
-static EWRAM_DATA s16 gUnknown_0203BCE0 = 0;
-static EWRAM_DATA u16 gUnknown_0203BCE2 = 0; // TASK A
+static EWRAM_DATA s16 sUnkVar = 0; // Never read, only set to 0
+static EWRAM_DATA u16 sSavedTaskId = 0;
EWRAM_DATA bool8 gHasHallOfFameRecords = 0;
-static EWRAM_DATA u8 gUnknown_0203BCE5 = 0;
+static EWRAM_DATA bool8 sUsedSpeedUp = 0; // Never read
static EWRAM_DATA struct CreditsData *sCreditsData = {0};
-static const u16 gUnknown_085E56F0[][16] =
-{
- INCBIN_U16("graphics/credits/credits_1.gbapal"),
- INCBIN_U16("graphics/credits/credits_2.gbapal"),
- INCBIN_U16("graphics/credits/credits_3.gbapal"),
- INCBIN_U16("graphics/credits/credits_4.gbapal"),
-};
-
-static const u32 gCreditsCopyrightEnd_Gfx[] = INCBIN_U32("graphics/credits/the_end_copyright.4bpp.lz");
-
-static void sub_81772B8(struct Sprite *sprite);
+static const u16 sCredits_Pal[] = INCBIN_U16("graphics/credits/credits.gbapal");
+static const u32 sCreditsCopyrightEnd_Gfx[] = INCBIN_U32("graphics/credits/the_end_copyright.4bpp.lz");
+
+static void SpriteCB_CreditsMonBg(struct Sprite *);
+static void Task_WaitPaletteFade(u8);
+static void Task_CreditsMain(u8);
+static void Task_ReadyBikeScene(u8);
+static void Task_SetBikeScene(u8);
+static void Task_LoadShowMons(u8);
+static void Task_ReadyShowMons(u8);
+static void Task_CreditsTheEnd1(u8);
+static void Task_CreditsTheEnd2(u8);
+static void Task_CreditsTheEnd3(u8);
+static void Task_CreditsTheEnd4(u8);
+static void Task_CreditsTheEnd5(u8);
+static void Task_CreditsTheEnd6(u8);
+static void Task_CreditsSoftReset(u8);
+static void ResetGpuAndVram(void);
+static void Task_UpdatePage(u8);
+static u8 CheckChangeScene(u8, u8);
+static void Task_ShowMons(u8);
+static void Task_CycleSceneryPalette(u8);
+static void Task_BikeScene(u8);
+static bool8 LoadBikeScene(u8 data, u8);
+static void ResetCreditsTasks(u8);
+static void LoadTheEndScreen(u16, u16, u16);
+static void DrawTheEnd(u16, u16);
+static void SpriteCB_Player(struct Sprite *);
+static void SpriteCB_Rival(struct Sprite *);
+static u8 CreateCreditsMonSprite(u16, s16, s16, u16);
+static void DeterminePokemonToShow(void);
-static const u8 sTheEnd_LetterTMap[] =
+static const u8 sTheEnd_LetterMap_T[] =
{
0, 1, 0,
0xFF, 1, 0xFF,
@@ -174,7 +127,7 @@ static const u8 sTheEnd_LetterTMap[] =
0xFF, 1, 0xFF,
};
-static const u8 sTheEnd_LetterHMap[] =
+static const u8 sTheEnd_LetterMap_H[] =
{
1, 0xFF, 1,
1, 0xFF, 1,
@@ -183,7 +136,7 @@ static const u8 sTheEnd_LetterHMap[] =
1, 0xFF, 1,
};
-static const u8 sTheEnd_LetterEMap[] =
+static const u8 sTheEnd_LetterMap_E[] =
{
1, 0, 0,
1, 0xFF, 0xFF,
@@ -192,7 +145,7 @@ static const u8 sTheEnd_LetterEMap[] =
1, 0x80, 0x80,
};
-static const u8 sTheEnd_LetterNMap[] =
+static const u8 sTheEnd_LetterMap_N[] =
{
1, 3, 1,
1, 4, 1,
@@ -201,7 +154,7 @@ static const u8 sTheEnd_LetterNMap[] =
1, 0xC3, 1,
};
-static const u8 sTheEnd_LetterDMap[] =
+static const u8 sTheEnd_LetterMap_D[] =
{
1, 6, 7,
1, 8, 9,
@@ -210,729 +163,7 @@ static const u8 sTheEnd_LetterDMap[] =
1, 0x86, 0x87,
};
-static const u8 gCreditsText_EmptyString[] = _("");
-static const u8 gCreditsText_PkmnEmeraldVersion[] = _("POKéMON EMERALD VERSION");
-static const u8 gCreditsText_Credits[] = _("Credits");
-static const u8 gCreditsText_ExecutiveDirector[] = _("Executive Director");
-static const u8 gCreditsText_Director[] = _("Director");
-static const u8 gCreditsText_ArtDirector[] = _("Art Director");
-static const u8 gCreditsText_BattleDirector[] = _("Battle Director");
-static const u8 gCreditsText_MainProgrammer[] = _("Main Programmer");
-static const u8 gCreditsText_BattleSystemPgrms[] = _("Battle System Programmers");
-static const u8 gCreditsText_FieldSystemPgrms[] = _("Field System Programmer");
-static const u8 gCreditsText_Programmers[] = _("Programmers");
-static const u8 gCreditsText_MainGraphicDesigner[] = _("Main Graphic Designer");
-static const u8 gCreditsText_GraphicDesigners[] = _("Graphic Designers");
-static const u8 gCreditsText_PkmnDesigners[] = _("POKéMON Designers");
-static const u8 gCreditsText_MusicComposition[] = _("Music Composition");
-static const u8 gCreditsText_SoundEffectsAndPkmnVoices[] = _("Sound Effects & POKéMON Voices");
-static const u8 gCreditsText_GameDesigners[] = _("Game Designers");
-static const u8 gCreditsText_ScenarioPlot[] = _("Scenario Plot");
-static const u8 gCreditsText_Scenario[] = _("Scenario");
-static const u8 gCreditsText_ScriptDesigners[] = _("Script Designers");
-static const u8 gCreditsText_MapDesigners[] = _("Map Designers");
-static const u8 gCreditsText_MapDataDesigners[] = _("Map Data Designers");
-static const u8 gCreditsText_ParametricDesigners[] = _("Parametric Designers");
-static const u8 gCreditsText_PokedexText[] = _("POKéDEX Text");
-static const u8 gCreditsText_EnvAndToolPgrms[] = _("Environment & Tool Programmers");
-static const u8 gCreditsText_NCLProductTesting[] = _("NCL Product Testing");
-static const u8 gCreditsText_SpecialThanks[] = _("Special Thanks");
-static const u8 gCreditsText_Coordinators[] = _("Coordinators");
-static const u8 gCreditsText_Producers[] = _("Producers");
-static const u8 gCreditsText_ExecProducers[] = _("Executive Producers");
-static const u8 gCreditsText_InfoSupervisors[] = _("Information Supervisors");
-static const u8 gCreditsText_TaskManagers[] = _("Task Managers");
-static const u8 gCreditsText_BrailleCodeCheck[] = _("Braille Code Check");
-static const u8 gCreditsText_WorldDirector[] = _("World Director");
-static const u8 gCreditsText_BattleFrontierData[] = _("Battle Frontier Data");
-static const u8 gCreditsText_SupportProgrammers[] = _("Support Programmers");
-static const u8 gCreditsText_Artwork[] = _("Artwork");
-static const u8 gCreditsText_LeadProgrammer[] = _("Lead Programmer");
-static const u8 gCreditsText_LeadGraphicArtist[] = _("Lead Graphic Artist");
-static const u8 gCreditsText_SatoshiTajiri[] = _("Satoshi Tajiri");
-static const u8 gCreditsText_JunichiMasuda[] = _("Junichi Masuda");
-static const u8 gCreditsText_KenSugimori[] = _("Ken Sugimori");
-static const u8 gCreditsText_ShigekiMorimoto[] = _("Shigeki Morimoto");
-static const u8 gCreditsText_TetsuyaWatanabe[] = _("Tetsuya Watanabe");
-static const u8 gCreditsText_HisashiSogabe[] = _("Hisashi Sogabe");
-static const u8 gCreditsText_SosukeTamada[] = _("Sosuke Tamada");
-static const u8 gCreditsText_AkitoMori[] = _("Akito Mori");
-static const u8 gCreditsText_KeitaKagaya[] = _("Keita Kagaya");
-static const u8 gCreditsText_YoshinoriMatsuda[] = _("Yoshinori Matsuda");
-static const u8 gCreditsText_HiroyukiNakamura[] = _("Hiroyuki Nakamura");
-static const u8 gCreditsText_MasaoTaya[] = _("Masao Taya");
-static const u8 gCreditsText_SatoshiNohara[] = _("Satoshi Nohara");
-static const u8 gCreditsText_TomomichiOhta[] = _("Tomomichi Ohta");
-static const u8 gCreditsText_MiyukiIwasawa[] = _("Miyuki Iwasawa");
-static const u8 gCreditsText_TakenoriOhta[] = _("Takenori Ohta");
-static const u8 gCreditsText_HironobuYoshida[] = _("Hironobu Yoshida");
-static const u8 gCreditsText_MotofumiFujiwara[] = _("Motofumi Fujiwara");
-static const u8 gCreditsText_SatoshiOhta[] = _("Satoshi Ohta");
-static const u8 gCreditsText_AsukaIwashita[] = _("Asuka Iwashita");
-static const u8 gCreditsText_AimiTomita[] = _("Aimi Tomita");
-static const u8 gCreditsText_TakaoUnno[] = _("Takao Unno");
-static const u8 gCreditsText_KanakoEo[] = _("Kanako Eo");
-static const u8 gCreditsText_JunOkutani[] = _("Jun Okutani");
-static const u8 gCreditsText_AtsukoNishida[] = _("Atsuko Nishida");
-static const u8 gCreditsText_MuneoSaito[] = _("Muneo Saito");
-static const u8 gCreditsText_RenaYoshikawa[] = _("Rena Yoshikawa");
-static const u8 gCreditsText_GoIchinose[] = _("Go Ichinose");
-static const u8 gCreditsText_MorikazuAoki[] = _("Morikazu Aoki");
-static const u8 gCreditsText_KojiNishino[] = _("Koji Nishino");
-static const u8 gCreditsText_KenjiMatsushima[] = _("Kenji Matsushima");
-static const u8 gCreditsText_TetsujiOhta[] = _("Tetsuji Ohta");
-static const u8 gCreditsText_HitomiSato[] = _("Hitomi Sato");
-static const u8 gCreditsText_TakeshiKawachimaru[] = _("Takeshi Kawachimaru");
-static const u8 gCreditsText_TeruyukiShimoyamada[] = _("Teruyuki Shimoyamada");
-static const u8 gCreditsText_ShigeruOhmori[] = _("Shigeru Ohmori");
-static const u8 gCreditsText_TadashiTakahashi[] = _("Tadashi Takahashi");
-static const u8 gCreditsText_ToshinobuMatsumiya[] = _("Toshinobu Matsumiya");
-static const u8 gCreditsText_AkihitoTomisawa[] = _("Akihito Tomisawa");
-static const u8 gCreditsText_HirokiEnomoto[] = _("Hiroki Enomoto");
-static const u8 gCreditsText_KazuyukiTerada[] = _("Kazuyuki Terada");
-static const u8 gCreditsText_YuriSakurai[] = _("Yuri Sakurai");
-static const u8 gCreditsText_HiromiSagawa[] = _("Hiromi Sagawa");
-static const u8 gCreditsText_KenjiTominaga[] = _("Kenji Tominaga");
-static const u8 gCreditsText_YoshioTajiri[] = _("Yoshio Tajiri");
-static const u8 gCreditsText_TeikoSasaki[] = _("Teiko Sasaki");
-static const u8 gCreditsText_SachikoHamano[] = _("Sachiko Hamano");
-static const u8 gCreditsText_ChieMatsumiya[] = _("Chie Matsumiya");
-static const u8 gCreditsText_AkikoShinozaki[] = _("Akiko Shinozaki");
-static const u8 gCreditsText_AstukoFujii[] = _("Astuko Fujii");
-static const u8 gCreditsText_NozomuSaito[] = _("Nozomu Saito");
-static const u8 gCreditsText_KenkichiToyama[] = _("Kenkichi Toyama");
-static const u8 gCreditsText_SuguruNakatsui[] = _("Suguru Nakatsui");
-static const u8 gCreditsText_YumiFunasaka[] = _("Yumi Funasaka");
-static const u8 gCreditsText_NaokoYanase[] = _("Naoko Yanase");
-static const u8 gCreditsText_NCLSuperMarioClub[] = _("NCL Super Mario Club");
-static const u8 gCreditsText_AtsushiTada[] = _("Atsushi Tada");
-static const u8 gCreditsText_TakahiroOhnishi[] = _("Takahiro Ohnishi");
-static const u8 gCreditsText_NorihideOkamura[] = _("Norihide Okamura");
-static const u8 gCreditsText_HiroNakamura[] = _("Hiro Nakamura");
-static const u8 gCreditsText_HiroyukiUesugi[] = _("Hiroyuki Uesugi");
-static const u8 gCreditsText_TerukiMurakawa[] = _("Teruki Murakawa");
-static const u8 gCreditsText_AkiraKinashi[] = _("Akira Kinashi");
-static const u8 gCreditsText_MichikoTakizawa[] = _("Michiko Takizawa");
-static const u8 gCreditsText_MakikoTakada[] = _("Makiko Takada");
-static const u8 gCreditsText_TakanaoKondo[] = _("Takanao Kondo");
-static const u8 gCreditsText_AiMashima[] = _("Ai Mashima");
-static const u8 gCreditsText_GakujiNomoto[] = _("Gakuji Nomoto");
-static const u8 gCreditsText_TakehiroIzushi[] = _("Takehiro Izushi");
-static const u8 gCreditsText_HitoshiYamagami[] = _("Hitoshi Yamagami");
-static const u8 gCreditsText_KyokoWatanabe[] = _("Kyoko Watanabe");
-static const u8 gCreditsText_TakaoNakano[] = _("Takao Nakano");
-static const u8 gCreditsText_HiroyukiJinnai[] = _("Hiroyuki Jinnai");
-static const u8 gCreditsText_HiroakiTsuru[] = _("Hiroaki Tsuru");
-static const u8 gCreditsText_TsunekazIshihara[] = _("Tsunekaz Ishihara");
-static const u8 gCreditsText_SatoruIwata[] = _("Satoru Iwata");
-static const u8 gCreditsText_KazuyaSuyama[] = _("Kazuya Suyama");
-static const u8 gCreditsText_SatoshiMitsuhara[] = _("Satoshi Mitsuhara");
-static const u8 gCreditsText_JapanBrailleLibrary[] = _("Japan Braille Library");
-static const u8 gCreditsText_TomotakaKomura[] = _("Tomotaka Komura");
-static const u8 gCreditsText_MikikoOhhashi[] = _("Mikiko Ohhashi");
-static const u8 gCreditsText_DaisukeHoshino[] = _("Daisuke Hoshino");
-static const u8 gCreditsText_KenjiroIto[] = _("Kenjiro Ito");
-static const u8 gCreditsText_RuiKawaguchi[] = _("Rui Kawaguchi");
-static const u8 gCreditsText_ShunsukeKohori[] = _("Shunsuke Kohori");
-static const u8 gCreditsText_SachikoNakamichi[] = _("Sachiko Nakamichi");
-static const u8 gCreditsText_FujikoNomura[] = _("Fujiko Nomura");
-static const u8 gCreditsText_KazukiYoshihara[] = _("Kazuki Yoshihara");
-static const u8 gCreditsText_RetsujiNomoto[] = _("Retsuji Nomoto");
-static const u8 gCreditsText_AzusaTajima[] = _("Azusa Tajima");
-static const u8 gCreditsText_ShusakuEgami[] = _("Shusaku Egami");
-static const u8 gCreditsText_PackageAndManual[] = _("Package & Manual Illustration");
-static const u8 gCreditsText_EnglishVersion[] = _("English Version Coordinators");
-static const u8 gCreditsText_Translator[] = _("Translator");
-static const u8 gCreditsText_TextEditor[] = _("Text Editor");
-static const u8 gCreditsText_NCLCoordinator[] = _("NCL Coordinator");
-static const u8 gCreditsText_GraphicDesigner[] = _("Graphic Designer");
-static const u8 gCreditsText_NOAProductTesting[] = _("NOA Product Testing");
-static const u8 gCreditsText_HideyukiNakajima[] = _("Hideyuki Nakajima");
-static const u8 gCreditsText_HidenoriSaeki[] = _("Hidenori Saeki");
-static const u8 gCreditsText_YokoWatanabe[] = _("Yoko Watanabe");
-static const u8 gCreditsText_SakaeKimura[] = _("Sakae Kimura");
-static const u8 gCreditsText_ChiakiShinkai[] = _("Chiaki Shinkai");
-static const u8 gCreditsText_SethMcMahill[] = _("Seth McMahill");
-static const u8 gCreditsText_NobOgasawara[] = _("Nob Ogasawara");
-static const u8 gCreditsText_TeresaLillygren[] = _("Teresa Lillygren");
-static const u8 gCreditsText_KimikoNakamichi[] = _("Kimiko Nakamichi");
-static const u8 gCreditsText_SouichiYamamoto[] = _("Souichi Yamamoto");
-static const u8 gCreditsText_YuichiroIto[] = _("Yuichiro Ito");
-static const u8 gCreditsText_ThomasHertzog[] = _("Thomas Hertzog");
-static const u8 gCreditsText_MikaKurosawa[] = _("Mika Kurosawa");
-static const u8 gCreditsText_NationalFederationBlind[] = _("National Federation of the Blind");
-static const u8 gCreditsText_PatriciaAMaurer[] = _("Patricia A. Maurer");
-static const u8 gCreditsText_EuropeanBlindUnion[] = _("European Blind Union");
-static const u8 gCreditsText_AustralianBrailleAuthority[] = _("Australian Braille Authority");
-static const u8 gCreditsText_RoyalNewZealandFederationBlind[] = _("Royal New Zealand Federation for the Blind");
-static const u8 gCreditsText_MotoyasuTojima[] = _("Motoyasu Tojima");
-static const u8 gCreditsText_NicolaPrattBarlow[] = _("Nicola Pratt-Barlow");
-static const u8 gCreditsText_ShellieDow[] = _("Shellie Dow");
-static const u8 gCreditsText_ErikJohnson[] = _("Erik Johnson");
-static const struct CreditsEntry gCreditsEntry_EmptyString[] = {0, FALSE, gCreditsText_EmptyString};
-static const struct CreditsEntry gCreditsEntry_PkmnEmeraldVersion[] = {7, TRUE, gCreditsText_PkmnEmeraldVersion};
-static const struct CreditsEntry gCreditsEntry_Credits[] = {11, TRUE, gCreditsText_Credits};
-static const struct CreditsEntry gCreditsEntry_ExecutiveDirector[] = {8, TRUE, gCreditsText_ExecutiveDirector};
-static const struct CreditsEntry gCreditsEntry_Director[] = {12, TRUE, gCreditsText_Director};
-static const struct CreditsEntry gCreditsEntry_ArtDirector[] = {10, TRUE, gCreditsText_ArtDirector};
-static const struct CreditsEntry gCreditsEntry_BattleDirector[] = {10, TRUE, gCreditsText_BattleDirector};
-static const struct CreditsEntry gCreditsEntry_MainProgrammer[] = {10, TRUE, gCreditsText_MainProgrammer};
-static const struct CreditsEntry gCreditsEntry_BattleSystemPgrms[] = {8, TRUE, gCreditsText_BattleSystemPgrms};
-static const struct CreditsEntry gCreditsEntry_FieldSystemPgrms[] = {7, TRUE, gCreditsText_FieldSystemPgrms};
-static const struct CreditsEntry gCreditsEntry_Programmers[] = {12, TRUE, gCreditsText_Programmers};
-static const struct CreditsEntry gCreditsEntry_MainGraphicDesigner[] = {7, TRUE, gCreditsText_MainGraphicDesigner};
-static const struct CreditsEntry gCreditsEntry_GraphicDesigners[] = {9, TRUE, gCreditsText_GraphicDesigners};
-static const struct CreditsEntry gCreditsEntry_PkmnDesigners[] = {10, TRUE, gCreditsText_PkmnDesigners};
-static const struct CreditsEntry gCreditsEntry_MusicComposition[] = {13, TRUE, gCreditsText_MusicComposition};
-static const struct CreditsEntry gCreditsEntry_SoundEffectsAndPkmnVoices[] = {4, TRUE, gCreditsText_SoundEffectsAndPkmnVoices};
-static const struct CreditsEntry gCreditsEntry_GameDesigners[] = {11, TRUE, gCreditsText_GameDesigners};
-static const struct CreditsEntry gCreditsEntry_ScenarioPlot[] = {11, TRUE, gCreditsText_ScenarioPlot};
-static const struct CreditsEntry gCreditsEntry_Scenario[] = {13, TRUE, gCreditsText_Scenario};
-static const struct CreditsEntry gCreditsEntry_ScriptDesigners[] = {10, TRUE, gCreditsText_ScriptDesigners};
-static const struct CreditsEntry gCreditsEntry_MapDesigners[] = {11, TRUE, gCreditsText_MapDesigners};
-static const struct CreditsEntry gCreditsEntry_MapDataDesigners[] = {9, TRUE, gCreditsText_MapDataDesigners};
-static const struct CreditsEntry gCreditsEntry_ParametricDesigners[] = {9, TRUE, gCreditsText_ParametricDesigners};
-static const struct CreditsEntry gCreditsEntry_PokedexText[] = {11, TRUE, gCreditsText_PokedexText};
-static const struct CreditsEntry gCreditsEntry_EnvAndToolPgrms[] = {6, TRUE, gCreditsText_EnvAndToolPgrms};
-static const struct CreditsEntry gCreditsEntry_NCLProductTesting[] = {11, TRUE, gCreditsText_NCLProductTesting};
-static const struct CreditsEntry gCreditsEntry_SpecialThanks[] = {10, TRUE, gCreditsText_SpecialThanks};
-static const struct CreditsEntry gCreditsEntry_Coordinators[] = {11, TRUE, gCreditsText_Coordinators};
-static const struct CreditsEntry gCreditsEntry_Producers[] = {11, TRUE, gCreditsText_Producers};
-static const struct CreditsEntry gCreditsEntry_ExecProducers[] = {7, TRUE, gCreditsText_ExecProducers};
-static const struct CreditsEntry gCreditsEntry_InfoSupervisors[] = {10, TRUE, gCreditsText_InfoSupervisors};
-static const struct CreditsEntry gCreditsEntry_TaskManagers[] = {8, TRUE, gCreditsText_TaskManagers};
-static const struct CreditsEntry gCreditsEntry_BrailleCodeCheck[] = {10, TRUE, gCreditsText_BrailleCodeCheck};
-static const struct CreditsEntry gCreditsEntry_WorldDirector[] = {10, TRUE, gCreditsText_WorldDirector};
-static const struct CreditsEntry gCreditsEntry_BattleFrontierData[] = {8, TRUE, gCreditsText_BattleFrontierData};
-static const struct CreditsEntry gCreditsEntry_SupportProgrammers[] = {10, TRUE, gCreditsText_SupportProgrammers};
-static const struct CreditsEntry gCreditsEntry_Artwork[] = {12, TRUE, gCreditsText_Artwork};
-static const struct CreditsEntry gCreditsEntry_LeadProgrammer[] = {10, TRUE, gCreditsText_LeadProgrammer};
-static const struct CreditsEntry gCreditsEntry_LeadGraphicArtist[] = {9, TRUE, gCreditsText_LeadGraphicArtist};
-static const struct CreditsEntry gCreditsEntry_SatoshiTajiri[] = {11, FALSE, gCreditsText_SatoshiTajiri};
-static const struct CreditsEntry gCreditsEntry_JunichiMasuda[] = {11, FALSE, gCreditsText_JunichiMasuda};
-static const struct CreditsEntry gCreditsEntry_KenSugimori[] = {11, FALSE, gCreditsText_KenSugimori};
-static const struct CreditsEntry gCreditsEntry_ShigekiMorimoto[] = {11, FALSE, gCreditsText_ShigekiMorimoto};
-static const struct CreditsEntry gCreditsEntry_TetsuyaWatanabe[] = {11, FALSE, gCreditsText_TetsuyaWatanabe};
-static const struct CreditsEntry gCreditsEntry_HisashiSogabe[] = {11, FALSE, gCreditsText_HisashiSogabe};
-static const struct CreditsEntry gCreditsEntry_SosukeTamada[] = {11, FALSE, gCreditsText_SosukeTamada};
-static const struct CreditsEntry gCreditsEntry_AkitoMori[] = {11, FALSE, gCreditsText_AkitoMori};
-static const struct CreditsEntry gCreditsEntry_KeitaKagaya[] = {11, FALSE, gCreditsText_KeitaKagaya};
-static const struct CreditsEntry gCreditsEntry_YoshinoriMatsuda[] = {11, FALSE, gCreditsText_YoshinoriMatsuda};
-static const struct CreditsEntry gCreditsEntry_HiroyukiNakamura[] = {11, FALSE, gCreditsText_HiroyukiNakamura};
-static const struct CreditsEntry gCreditsEntry_MasaoTaya[] = {11, FALSE, gCreditsText_MasaoTaya};
-static const struct CreditsEntry gCreditsEntry_SatoshiNohara[] = {11, FALSE, gCreditsText_SatoshiNohara};
-static const struct CreditsEntry gCreditsEntry_TomomichiOhta[] = {11, FALSE, gCreditsText_TomomichiOhta};
-static const struct CreditsEntry gCreditsEntry_MiyukiIwasawa[] = {11, FALSE, gCreditsText_MiyukiIwasawa};
-static const struct CreditsEntry gCreditsEntry_TakenoriOhta[] = {11, FALSE, gCreditsText_TakenoriOhta};
-static const struct CreditsEntry gCreditsEntry_HironobuYoshida[] = {11, FALSE, gCreditsText_HironobuYoshida};
-static const struct CreditsEntry gCreditsEntry_MotofumiFujiwara[] = {11, FALSE, gCreditsText_MotofumiFujiwara};
-static const struct CreditsEntry gCreditsEntry_SatoshiOhta[] = {11, FALSE, gCreditsText_SatoshiOhta};
-static const struct CreditsEntry gCreditsEntry_AsukaIwashita[] = {11, FALSE, gCreditsText_AsukaIwashita};
-static const struct CreditsEntry gCreditsEntry_AimiTomita[] = {11, FALSE, gCreditsText_AimiTomita};
-static const struct CreditsEntry gCreditsEntry_TakaoUnno[] = {11, FALSE, gCreditsText_TakaoUnno};
-static const struct CreditsEntry gCreditsEntry_KanakoEo[] = {11, FALSE, gCreditsText_KanakoEo};
-static const struct CreditsEntry gCreditsEntry_JunOkutani[] = {11, FALSE, gCreditsText_JunOkutani};
-static const struct CreditsEntry gCreditsEntry_AtsukoNishida[] = {11, FALSE, gCreditsText_AtsukoNishida};
-static const struct CreditsEntry gCreditsEntry_MuneoSaito[] = {11, FALSE, gCreditsText_MuneoSaito};
-static const struct CreditsEntry gCreditsEntry_RenaYoshikawa[] = {11, FALSE, gCreditsText_RenaYoshikawa};
-static const struct CreditsEntry gCreditsEntry_GoIchinose[] = {11, FALSE, gCreditsText_GoIchinose};
-static const struct CreditsEntry gCreditsEntry_MorikazuAoki[] = {11, FALSE, gCreditsText_MorikazuAoki};
-static const struct CreditsEntry gCreditsEntry_KojiNishino[] = {11, FALSE, gCreditsText_KojiNishino};
-static const struct CreditsEntry gCreditsEntry_KenjiMatsushima[] = {11, FALSE, gCreditsText_KenjiMatsushima};
-static const struct CreditsEntry gCreditsEntry_TetsujiOhta[] = {11, FALSE, gCreditsText_TetsujiOhta};
-static const struct CreditsEntry gCreditsEntry_HitomiSato[] = {11, FALSE, gCreditsText_HitomiSato};
-static const struct CreditsEntry gCreditsEntry_TakeshiKawachimaru[] = {11, FALSE, gCreditsText_TakeshiKawachimaru};
-static const struct CreditsEntry gCreditsEntry_TeruyukiShimoyamada[] = {11, FALSE, gCreditsText_TeruyukiShimoyamada};
-static const struct CreditsEntry gCreditsEntry_ShigeruOhmori[] = {11, FALSE, gCreditsText_ShigeruOhmori};
-static const struct CreditsEntry gCreditsEntry_TadashiTakahashi[] = {11, FALSE, gCreditsText_TadashiTakahashi};
-static const struct CreditsEntry gCreditsEntry_ToshinobuMatsumiya[] = {11, FALSE, gCreditsText_ToshinobuMatsumiya};
-static const struct CreditsEntry gCreditsEntry_AkihitoTomisawa[] = {11, FALSE, gCreditsText_AkihitoTomisawa};
-static const struct CreditsEntry gCreditsEntry_HirokiEnomoto[] = {11, FALSE, gCreditsText_HirokiEnomoto};
-static const struct CreditsEntry gCreditsEntry_KazuyukiTerada[] = {11, FALSE, gCreditsText_KazuyukiTerada};
-static const struct CreditsEntry gCreditsEntry_YuriSakurai[] = {11, FALSE, gCreditsText_YuriSakurai};
-static const struct CreditsEntry gCreditsEntry_HiromiSagawa[] = {11, FALSE, gCreditsText_HiromiSagawa};
-static const struct CreditsEntry gCreditsEntry_KenjiTominaga[] = {11, FALSE, gCreditsText_KenjiTominaga};
-static const struct CreditsEntry gCreditsEntry_YoshioTajiri[] = {11, FALSE, gCreditsText_YoshioTajiri};
-static const struct CreditsEntry gCreditsEntry_TeikoSasaki[] = {11, FALSE, gCreditsText_TeikoSasaki};
-static const struct CreditsEntry gCreditsEntry_SachikoHamano[] = {11, FALSE, gCreditsText_SachikoHamano};
-static const struct CreditsEntry gCreditsEntry_ChieMatsumiya[] = {11, FALSE, gCreditsText_ChieMatsumiya};
-static const struct CreditsEntry gCreditsEntry_AkikoShinozaki[] = {11, FALSE, gCreditsText_AkikoShinozaki};
-static const struct CreditsEntry gCreditsEntry_AstukoFujii[] = {11, FALSE, gCreditsText_AstukoFujii};
-static const struct CreditsEntry gCreditsEntry_NozomuSaito[] = {11, FALSE, gCreditsText_NozomuSaito};
-static const struct CreditsEntry gCreditsEntry_KenkichiToyama[] = {11, FALSE, gCreditsText_KenkichiToyama};
-static const struct CreditsEntry gCreditsEntry_SuguruNakatsui[] = {11, FALSE, gCreditsText_SuguruNakatsui};
-static const struct CreditsEntry gCreditsEntry_YumiFunasaka[] = {11, FALSE, gCreditsText_YumiFunasaka};
-static const struct CreditsEntry gCreditsEntry_NaokoYanase[] = {11, FALSE, gCreditsText_NaokoYanase};
-static const struct CreditsEntry gCreditsEntry_NCLSuperMarioClub[] = {11, FALSE, gCreditsText_NCLSuperMarioClub};
-static const struct CreditsEntry gCreditsEntry_AtsushiTada[] = {11, FALSE, gCreditsText_AtsushiTada};
-static const struct CreditsEntry gCreditsEntry_TakahiroOhnishi[] = {11, FALSE, gCreditsText_TakahiroOhnishi};
-static const struct CreditsEntry gCreditsEntry_NorihideOkamura[] = {11, FALSE, gCreditsText_NorihideOkamura};
-static const struct CreditsEntry gCreditsEntry_HiroNakamura[] = {11, FALSE, gCreditsText_HiroNakamura};
-static const struct CreditsEntry gCreditsEntry_HiroyukiUesugi[] = {11, FALSE, gCreditsText_HiroyukiUesugi};
-static const struct CreditsEntry gCreditsEntry_TerukiMurakawa[] = {11, FALSE, gCreditsText_TerukiMurakawa};
-static const struct CreditsEntry gCreditsEntry_AkiraKinashi[] = {11, FALSE, gCreditsText_AkiraKinashi};
-static const struct CreditsEntry gCreditsEntry_MichikoTakizawa[] = {11, FALSE, gCreditsText_MichikoTakizawa};
-static const struct CreditsEntry gCreditsEntry_MakikoTakada[] = {11, FALSE, gCreditsText_MakikoTakada};
-static const struct CreditsEntry gCreditsEntry_TakanaoKondo[] = {11, FALSE, gCreditsText_TakanaoKondo};
-static const struct CreditsEntry gCreditsEntry_AiMashima[] = {11, FALSE, gCreditsText_AiMashima};
-static const struct CreditsEntry gCreditsEntry_GakujiNomoto[] = {11, FALSE, gCreditsText_GakujiNomoto};
-static const struct CreditsEntry gCreditsEntry_TakehiroIzushi[] = {11, FALSE, gCreditsText_TakehiroIzushi};
-static const struct CreditsEntry gCreditsEntry_HitoshiYamagami[] = {11, FALSE, gCreditsText_HitoshiYamagami};
-static const struct CreditsEntry gCreditsEntry_KyokoWatanabe[] = {11, FALSE, gCreditsText_KyokoWatanabe};
-static const struct CreditsEntry gCreditsEntry_TakaoNakano[] = {11, FALSE, gCreditsText_TakaoNakano};
-static const struct CreditsEntry gCreditsEntry_HiroyukiJinnai[] = {11, FALSE, gCreditsText_HiroyukiJinnai};
-static const struct CreditsEntry gCreditsEntry_HiroakiTsuru[] = {11, FALSE, gCreditsText_HiroakiTsuru};
-static const struct CreditsEntry gCreditsEntry_TsunekazIshihara[] = {11, FALSE, gCreditsText_TsunekazIshihara};
-static const struct CreditsEntry gCreditsEntry_SatoruIwata[] = {11, FALSE, gCreditsText_SatoruIwata};
-static const struct CreditsEntry gCreditsEntry_KazuyaSuyama[] = {11, FALSE, gCreditsText_KazuyaSuyama};
-static const struct CreditsEntry gCreditsEntry_SatoshiMitsuhara[] = {11, FALSE, gCreditsText_SatoshiMitsuhara};
-static const struct CreditsEntry gCreditsEntry_JapanBrailleLibrary[] = {9, FALSE, gCreditsText_JapanBrailleLibrary};
-static const struct CreditsEntry gCreditsEntry_TomotakaKomura[] = {11, FALSE, gCreditsText_TomotakaKomura};
-static const struct CreditsEntry gCreditsEntry_MikikoOhhashi[] = {11, FALSE, gCreditsText_MikikoOhhashi};
-static const struct CreditsEntry gCreditsEntry_DaisukeHoshino[] = {11, FALSE, gCreditsText_DaisukeHoshino};
-static const struct CreditsEntry gCreditsEntry_KenjiroIto[] = {11, FALSE, gCreditsText_KenjiroIto};
-static const struct CreditsEntry gCreditsEntry_RuiKawaguchi[] = {11, FALSE, gCreditsText_RuiKawaguchi};
-static const struct CreditsEntry gCreditsEntry_ShunsukeKohori[] = {11, FALSE, gCreditsText_ShunsukeKohori};
-static const struct CreditsEntry gCreditsEntry_SachikoNakamichi[] = {11, FALSE, gCreditsText_SachikoNakamichi};
-static const struct CreditsEntry gCreditsEntry_FujikoNomura[] = {11, FALSE, gCreditsText_FujikoNomura};
-static const struct CreditsEntry gCreditsEntry_KazukiYoshihara[] = {11, FALSE, gCreditsText_KazukiYoshihara};
-static const struct CreditsEntry gCreditsEntry_RetsujiNomoto[] = {11, FALSE, gCreditsText_RetsujiNomoto};
-static const struct CreditsEntry gCreditsEntry_AzusaTajima[] = {11, FALSE, gCreditsText_AzusaTajima};
-static const struct CreditsEntry gCreditsEntry_ShusakuEgami[] = {11, FALSE, gCreditsText_ShusakuEgami};
-static const struct CreditsEntry gCreditsEntry_PackageAndManual[] = {0, TRUE, gCreditsText_PackageAndManual};
-static const struct CreditsEntry gCreditsEntry_EnglishVersion[] = {0, TRUE, gCreditsText_EnglishVersion};
-static const struct CreditsEntry gCreditsEntry_Translator[] = {0, TRUE, gCreditsText_Translator};
-static const struct CreditsEntry gCreditsEntry_TextEditor[] = {0, TRUE, gCreditsText_TextEditor};
-static const struct CreditsEntry gCreditsEntry_NCLCoordinator[] = {0, TRUE, gCreditsText_NCLCoordinator};
-static const struct CreditsEntry gCreditsEntry_GraphicDesigner[] = {0, TRUE, gCreditsText_GraphicDesigner};
-static const struct CreditsEntry gCreditsEntry_NOAProductTesting[] = {0, TRUE, gCreditsText_NOAProductTesting};
-static const struct CreditsEntry gCreditsEntry_HideyukiNakajima[] = {0, FALSE, gCreditsText_HideyukiNakajima};
-static const struct CreditsEntry gCreditsEntry_HidenoriSaeki[] = {0, FALSE, gCreditsText_HidenoriSaeki};
-static const struct CreditsEntry gCreditsEntry_YokoWatanabe[] = {0, FALSE, gCreditsText_YokoWatanabe};
-static const struct CreditsEntry gCreditsEntry_SakaeKimura[] = {0, FALSE, gCreditsText_SakaeKimura};
-static const struct CreditsEntry gCreditsEntry_ChiakiShinkai[] = {0, FALSE, gCreditsText_ChiakiShinkai};
-static const struct CreditsEntry gCreditsEntry_SethMcMahill[] = {0, FALSE, gCreditsText_SethMcMahill};
-static const struct CreditsEntry gCreditsEntry_NobOgasawara[] = {0, FALSE, gCreditsText_NobOgasawara};
-static const struct CreditsEntry gCreditsEntry_TeresaLillygren[] = {0, FALSE, gCreditsText_TeresaLillygren};
-static const struct CreditsEntry gCreditsEntry_KimikoNakamichi[] = {0, FALSE, gCreditsText_KimikoNakamichi};
-static const struct CreditsEntry gCreditsEntry_SouichiYamamoto[] = {0, FALSE, gCreditsText_SouichiYamamoto};
-static const struct CreditsEntry gCreditsEntry_YuichiroIto[] = {0, FALSE, gCreditsText_YuichiroIto};
-static const struct CreditsEntry gCreditsEntry_ThomasHertzog[] = {0, FALSE, gCreditsText_ThomasHertzog};
-static const struct CreditsEntry gCreditsEntry_MikaKurosawa[] = {0, FALSE, gCreditsText_MikaKurosawa};
-static const struct CreditsEntry gCreditsEntry_NationalFederationBlind[] = {0, FALSE, gCreditsText_NationalFederationBlind};
-static const struct CreditsEntry gCreditsEntry_PatriciaAMaurer[] = {0, FALSE, gCreditsText_PatriciaAMaurer};
-static const struct CreditsEntry gCreditsEntry_EuropeanBlindUnion[] = {0, FALSE, gCreditsText_EuropeanBlindUnion};
-static const struct CreditsEntry gCreditsEntry_AustralianBrailleAuthority[] = {0, FALSE, gCreditsText_AustralianBrailleAuthority};
-static const struct CreditsEntry gCreditsEntry_RoyalNewZealandFederationBlind[] = {0, FALSE, gCreditsText_RoyalNewZealandFederationBlind};
-static const struct CreditsEntry gCreditsEntry_MotoyasuTojima[] = {0, FALSE, gCreditsText_MotoyasuTojima};
-static const struct CreditsEntry gCreditsEntry_NicolaPrattBarlow[] = {0, FALSE, gCreditsText_NicolaPrattBarlow};
-static const struct CreditsEntry gCreditsEntry_ShellieDow[] = {0, FALSE, gCreditsText_ShellieDow};
-static const struct CreditsEntry gCreditsEntry_ErikJohnson[] = {0, FALSE, gCreditsText_ErikJohnson};
-
-#define _ gCreditsEntry_EmptyString
-static const struct CreditsEntry *const gCreditsEntryPointerTable[][5] =
-{
- {
- _,
- gCreditsEntry_PkmnEmeraldVersion,
- gCreditsEntry_Credits,
- _,
- _
- },
- {
- _,
- gCreditsEntry_Director,
- gCreditsEntry_ShigekiMorimoto,
- _,
- _,
- },
- {
- _,
- gCreditsEntry_ArtDirector,
- gCreditsEntry_KenSugimori,
- _,
- _,
- },
- {
- _,
- gCreditsEntry_WorldDirector,
- gCreditsEntry_JunichiMasuda,
- _,
- _,
- },
- {
- gCreditsEntry_LeadProgrammer,
- gCreditsEntry_HisashiSogabe,
- gCreditsEntry_LeadGraphicArtist,
- gCreditsEntry_MotofumiFujiwara,
- _,
- },
- {
- gCreditsEntry_Programmers,
- gCreditsEntry_HisashiSogabe,
- gCreditsEntry_TomomichiOhta,
- gCreditsEntry_NozomuSaito,
- gCreditsEntry_EmptyString,
- },
- {
- gCreditsEntry_Programmers,
- gCreditsEntry_AkitoMori,
- gCreditsEntry_HiroyukiNakamura,
- gCreditsEntry_MasaoTaya,
- _,
- },
- {
- gCreditsEntry_Programmers,
- gCreditsEntry_SatoshiNohara,
- gCreditsEntry_MiyukiIwasawa,
- gCreditsEntry_YoshinoriMatsuda,
- gCreditsEntry_KeitaKagaya,
- },
- {
- gCreditsEntry_Programmers,
- gCreditsEntry_TetsuyaWatanabe,
- gCreditsEntry_SosukeTamada,
- gCreditsEntry_TakenoriOhta,
- _,
- },
- {
- _,
- gCreditsEntry_GraphicDesigners,
- gCreditsEntry_MotofumiFujiwara,
- gCreditsEntry_SatoshiOhta,
- _,
- },
- {
- gCreditsEntry_GraphicDesigners,
- gCreditsEntry_KenkichiToyama,
- gCreditsEntry_AsukaIwashita,
- gCreditsEntry_TakaoUnno,
- _,
- },
- {
- gCreditsEntry_GraphicDesigners,
- gCreditsEntry_KenSugimori,
- gCreditsEntry_HironobuYoshida,
- gCreditsEntry_AimiTomita,
- gCreditsEntry_KanakoEo,
- },
- {
- gCreditsEntry_MusicComposition,
- gCreditsEntry_GoIchinose,
- gCreditsEntry_JunichiMasuda,
- gCreditsEntry_MorikazuAoki,
- gCreditsEntry_HitomiSato,
- },
- {
- _,
- gCreditsEntry_SoundEffectsAndPkmnVoices,
- gCreditsEntry_GoIchinose,
- gCreditsEntry_MorikazuAoki,
- _,
- },
- {
- gCreditsEntry_GameDesigners,
- gCreditsEntry_ShigekiMorimoto,
- gCreditsEntry_TeruyukiShimoyamada,
- gCreditsEntry_TakeshiKawachimaru,
- gCreditsEntry_AkihitoTomisawa,
- },
- {
- gCreditsEntry_GameDesigners,
- gCreditsEntry_SuguruNakatsui,
- gCreditsEntry_TetsujiOhta,
- gCreditsEntry_HitomiSato,
- gCreditsEntry_KenjiMatsushima,
- },
- {
- gCreditsEntry_GameDesigners,
- gCreditsEntry_JunichiMasuda,
- gCreditsEntry_KojiNishino,
- gCreditsEntry_ShigeruOhmori,
- gCreditsEntry_TadashiTakahashi,
- },
- {
- gCreditsEntry_ScenarioPlot,
- gCreditsEntry_AkihitoTomisawa,
- gCreditsEntry_JunichiMasuda,
- gCreditsEntry_KojiNishino,
- _,
- },
- {
- gCreditsEntry_Scenario,
- gCreditsEntry_AkihitoTomisawa,
- gCreditsEntry_HitomiSato,
- gCreditsEntry_ToshinobuMatsumiya,
- _,
- },
- {
- gCreditsEntry_ScriptDesigners,
- gCreditsEntry_TomomichiOhta,
- gCreditsEntry_SatoshiNohara,
- _,
- _,
- },
- {
- gCreditsEntry_MapDesigners,
- gCreditsEntry_SuguruNakatsui,
- gCreditsEntry_TeruyukiShimoyamada,
- gCreditsEntry_ShigeruOhmori,
- gCreditsEntry_TetsujiOhta,
- },
- {
- _,
- gCreditsEntry_BattleFrontierData,
- gCreditsEntry_TetsujiOhta,
- _,
- _,
- },
- {
- gCreditsEntry_ParametricDesigners,
- gCreditsEntry_TeruyukiShimoyamada,
- gCreditsEntry_ShigekiMorimoto,
- gCreditsEntry_TetsujiOhta,
- gCreditsEntry_KojiNishino,
- },
- {
- _,
- gCreditsEntry_PokedexText,
- gCreditsEntry_KenjiMatsushima,
- _,
- _,
- },
- {
- gCreditsEntry_EnvAndToolPgrms,
- gCreditsEntry_HisashiSogabe,
- gCreditsEntry_SosukeTamada,
- gCreditsEntry_HiroyukiNakamura,
- gCreditsEntry_AkitoMori,
- },
- {
- gCreditsEntry_PkmnDesigners,
- gCreditsEntry_KenSugimori,
- gCreditsEntry_MotofumiFujiwara,
- gCreditsEntry_ShigekiMorimoto,
- _,
- },
- {
- gCreditsEntry_PkmnDesigners,
- gCreditsEntry_HironobuYoshida,
- gCreditsEntry_SatoshiOhta,
- gCreditsEntry_AsukaIwashita,
- _,
- },
- {
- gCreditsEntry_PkmnDesigners,
- gCreditsEntry_TakaoUnno,
- gCreditsEntry_KanakoEo,
- gCreditsEntry_AimiTomita,
- _,
- },
- {
- gCreditsEntry_PkmnDesigners,
- gCreditsEntry_AtsukoNishida,
- gCreditsEntry_MuneoSaito,
- gCreditsEntry_RenaYoshikawa,
- gCreditsEntry_JunOkutani,
- },
- {
- _,
- gCreditsEntry_SupportProgrammers,
- gCreditsEntry_SatoshiMitsuhara,
- gCreditsEntry_DaisukeHoshino,
- _,
- },
- {
- _,
- gCreditsEntry_NCLProductTesting,
- gCreditsEntry_NCLSuperMarioClub,
- _,
- _,
- },
- {
- _,
- gCreditsEntry_PackageAndManual,
- gCreditsEntry_KenSugimori,
- _,
- _,
- },
- {
- _,
- gCreditsEntry_SpecialThanks,
- gCreditsEntry_KenjiTominaga,
- gCreditsEntry_HirokiEnomoto,
- _,
- },
- {
- gCreditsEntry_SpecialThanks,
- gCreditsEntry_KazuyaSuyama,
- gCreditsEntry_KenjiroIto,
- gCreditsEntry_MichikoTakizawa,
- gCreditsEntry_MakikoTakada,
- },
- {
- gCreditsEntry_SpecialThanks,
- gCreditsEntry_MikikoOhhashi,
- gCreditsEntry_TakanaoKondo,
- gCreditsEntry_RuiKawaguchi,
- _,
- },
- {
- gCreditsEntry_SpecialThanks,
- gCreditsEntry_TakahiroOhnishi,
- gCreditsEntry_NorihideOkamura,
- gCreditsEntry_ShunsukeKohori,
- _,
- },
- {
- gCreditsEntry_InfoSupervisors,
- gCreditsEntry_KazuyukiTerada,
- gCreditsEntry_YuriSakurai,
- gCreditsEntry_YumiFunasaka,
- gCreditsEntry_NaokoYanase,
- },
- {
- _,
- gCreditsEntry_Artwork,
- gCreditsEntry_SachikoNakamichi,
- gCreditsEntry_FujikoNomura,
- _,
- },
- {
- _,
- gCreditsEntry_Artwork,
- gCreditsEntry_HideyukiNakajima,
- gCreditsEntry_HidenoriSaeki,
- _,
- },
- {
- gCreditsEntry_Artwork,
- gCreditsEntry_YokoWatanabe,
- gCreditsEntry_SakaeKimura,
- gCreditsEntry_ChiakiShinkai,
- _,
- },
- {
- gCreditsEntry_Coordinators,
- gCreditsEntry_KazukiYoshihara,
- gCreditsEntry_AkiraKinashi,
- gCreditsEntry_RetsujiNomoto,
- _,
- },
- {
- _,
- gCreditsEntry_EnglishVersion,
- gCreditsEntry_HiroNakamura,
- gCreditsEntry_SethMcMahill,
- _,
- },
- {
- _,
- gCreditsEntry_Translator,
- gCreditsEntry_NobOgasawara,
- _,
- _,
- },
- {
- _,
- gCreditsEntry_TextEditor,
- gCreditsEntry_TeresaLillygren,
- _,
- _,
- },
- {
- _,
- gCreditsEntry_NCLCoordinator,
- gCreditsEntry_KimikoNakamichi,
- _,
- _,
- },
- {
- gCreditsEntry_Programmers,
- gCreditsEntry_TerukiMurakawa,
- gCreditsEntry_SouichiYamamoto,
- gCreditsEntry_YuichiroIto,
- gCreditsEntry_AkiraKinashi,
- },
- {
- _,
- gCreditsEntry_GraphicDesigner,
- gCreditsEntry_AkiraKinashi,
- _,
- _,
- },
- {
- gCreditsEntry_EnvAndToolPgrms,
- gCreditsEntry_TerukiMurakawa,
- gCreditsEntry_SouichiYamamoto,
- gCreditsEntry_KimikoNakamichi,
- _,
- },
- {
- gCreditsEntry_NOAProductTesting,
- gCreditsEntry_ThomasHertzog,
- gCreditsEntry_ErikJohnson,
- gCreditsEntry_MikaKurosawa,
- _,
- },
- {
- gCreditsEntry_BrailleCodeCheck,
- gCreditsEntry_NationalFederationBlind,
- gCreditsEntry_PatriciaAMaurer,
- gCreditsEntry_JapanBrailleLibrary,
- gCreditsEntry_EuropeanBlindUnion,
- },
- {
- _,
- gCreditsEntry_BrailleCodeCheck,
- gCreditsEntry_AustralianBrailleAuthority,
- gCreditsEntry_RoyalNewZealandFederationBlind,
- _,
- },
- {
- gCreditsEntry_SpecialThanks,
- gCreditsEntry_HiroyukiUesugi,
- gCreditsEntry_MotoyasuTojima,
- gCreditsEntry_NicolaPrattBarlow,
- gCreditsEntry_ShellieDow,
- },
- {
- _,
- gCreditsEntry_TaskManagers,
- gCreditsEntry_AzusaTajima,
- gCreditsEntry_ShusakuEgami,
- _,
- },
- {
- gCreditsEntry_Producers,
- gCreditsEntry_HiroyukiJinnai,
- gCreditsEntry_HitoshiYamagami,
- gCreditsEntry_GakujiNomoto,
- gCreditsEntry_HiroakiTsuru,
- },
- {
- _,
- gCreditsEntry_ExecutiveDirector,
- gCreditsEntry_SatoshiTajiri,
- _,
- _,
- },
- {
- _,
- gCreditsEntry_ExecProducers,
- gCreditsEntry_SatoruIwata,
- _,
- _,
- },
- {
- _,
- gCreditsEntry_ExecProducers,
- gCreditsEntry_TsunekazIshihara,
- _,
- _,
- },
-};
-#undef _
+#include "data/credits.h"
static const struct BgTemplate sBackgroundTemplates[] =
{
@@ -966,7 +197,7 @@ static const u8 sMonSpritePos[][2] =
{136, 36},
};
-static const union AnimCmd gUnknown_085E6F84[] =
+static const union AnimCmd sAnim_Player_Slow[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(64, 8),
@@ -975,7 +206,7 @@ static const union AnimCmd gUnknown_085E6F84[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd gUnknown_085E6F98[] =
+static const union AnimCmd sAnim_Player_Fast[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(64, 4),
@@ -984,7 +215,7 @@ static const union AnimCmd gUnknown_085E6F98[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd gUnknown_085E6FAC[] =
+static const union AnimCmd sAnim_Player_LookBack[] =
{
ANIMCMD_FRAME(256, 4),
ANIMCMD_FRAME(320, 4),
@@ -992,7 +223,7 @@ static const union AnimCmd gUnknown_085E6FAC[] =
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E6FBC[] =
+static const union AnimCmd sAnim_Player_LookForward[] =
{
ANIMCMD_FRAME(384, 30),
ANIMCMD_FRAME(320, 30),
@@ -1001,15 +232,15 @@ static const union AnimCmd gUnknown_085E6FBC[] =
ANIMCMD_END,
};
-static const union AnimCmd *const gUnknown_085E6FD0[] =
+static const union AnimCmd *const sAnims_Player[] =
{
- gUnknown_085E6F84,
- gUnknown_085E6F98,
- gUnknown_085E6FAC,
- gUnknown_085E6FBC,
+ sAnim_Player_Slow,
+ sAnim_Player_Fast,
+ sAnim_Player_LookBack,
+ sAnim_Player_LookForward,
};
-static const union AnimCmd gUnknown_085E6FE0[] =
+static const union AnimCmd sAnim_Rival_Slow[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(64, 8),
@@ -1018,7 +249,7 @@ static const union AnimCmd gUnknown_085E6FE0[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd gUnknown_085E6FF4[] =
+static const union AnimCmd sAnim_Rival_Fast[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(64, 4),
@@ -1027,31 +258,32 @@ static const union AnimCmd gUnknown_085E6FF4[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd gUnknown_085E7008[] =
+static const union AnimCmd sAnim_Rival_Still[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_END,
};
-static const union AnimCmd *const gUnknown_085E7010[] =
+static const union AnimCmd *const sAnims_Rival[] =
{
- gUnknown_085E6FE0,
- gUnknown_085E6FF4,
- gUnknown_085E7008,
+ sAnim_Rival_Slow,
+ sAnim_Rival_Fast,
+ sAnim_Rival_Still,
};
-static const struct SpriteSheet gUnknown_085E701C[] = {
- { gDecompressionBuffer, 6144, 1001 },
- { NULL },
+#define MONBG_OFFSET (MON_PIC_SIZE * 3)
+static const struct SpriteSheet sSpriteSheet_MonBg[] = {
+ { gDecompressionBuffer, MONBG_OFFSET, TAG_MON_BG },
+ {},
};
-static const struct SpritePalette gUnknown_085E702C[] = {
- { (const u16 *)(gDecompressionBuffer + 0x1800), 1001 },
- { NULL },
+static const struct SpritePalette sSpritePalette_MonBg[] = {
+ { (const u16 *)&gDecompressionBuffer[MONBG_OFFSET], TAG_MON_BG },
+ {},
};
-static const struct OamData gUnknown_085E703C =
+static const struct OamData sOamData_MonBg =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -1066,101 +298,74 @@ static const struct OamData gUnknown_085E703C =
.affineParam = 0,
};
-static const union AnimCmd gUnknown_085E7044[] =
+static const union AnimCmd sAnim_MonBg_Yellow[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E704C[] =
+static const union AnimCmd sAnim_MonBg_Red[] =
{
ANIMCMD_FRAME(64, 8),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E7054[] =
+static const union AnimCmd sAnim_MonBg_Blue[] =
{
ANIMCMD_FRAME(128, 8),
ANIMCMD_END,
};
-static const union AnimCmd *const gUnknown_085E705C[] =
+static const union AnimCmd *const sAnims_MonBg[] =
{
- gUnknown_085E7044,
- gUnknown_085E704C,
- gUnknown_085E7054,
+ [POS_LEFT] = sAnim_MonBg_Yellow,
+ [POS_CENTER] = sAnim_MonBg_Red,
+ [POS_RIGHT] = sAnim_MonBg_Blue,
};
-static const struct SpriteTemplate gUnknown_085E7068 =
+static const struct SpriteTemplate sSpriteTemplate_CreditsMonBg =
{
- .tileTag = 1001,
- .paletteTag = 1001,
- .oam = &gUnknown_085E703C,
- .anims = gUnknown_085E705C,
+ .tileTag = TAG_MON_BG,
+ .paletteTag = TAG_MON_BG,
+ .oam = &sOamData_MonBg,
+ .anims = sAnims_MonBg,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81772B8,
+ .callback = SpriteCB_CreditsMonBg,
};
-static void Task_WaitPaletteFade(u8 taskIdA);
-static void Task_ProgressCreditTasks(u8 taskIdA);
-static void sub_8175808(u8 taskIdA);
-static void c2_080C9BFC(u8 taskIdA);
-static void Task_CreditsLoadGrassScene(u8 taskIdA);
-static void sub_81758A4(u8 taskIdA);
-static void Task_CreditsTheEnd1(u8 taskIdA);
-static void Task_CreditsTheEnd2(u8 taskIdA);
-static void Task_CreditsTheEnd3(u8 taskIdA);
-static void Task_CreditsTheEnd4(u8 taskIdA);
-static void Task_CreditsTheEnd5(u8 taskIdA);
-static void Task_CreditsTheEnd6(u8 taskIdA);
-static void Task_CreditsSoftReset(u8 taskIdA);
-static void ResetGpuAndVram(void);
-static void sub_8175DA0(u8 taskIdB);
-static u8 CheckChangeScene(u8 page, u8 taskIdA);
-static void sub_81760FC(u8 taskIdA);
-static void sub_817651C(u8 taskIdA);
-static void sub_817624C(u8 taskIdA);
-static bool8 sub_8176AB0(u8 data, u8 taskIdA);
-static void ResetCreditsTasks(u8 taskIdA);
-static void LoadTheEndScreen(u16, u16, u16);
-static void sub_8176E40(u16 arg0, u16 palette);
-static void sub_8176EE8(struct Sprite *sprite);
-static void sub_8176F90(struct Sprite *sprite);
-static u8 MakeMonSprite(u16 species, s16 x, s16 y, u16 position);
-static void DeterminePokemonToShow(void);
-
-static void CreditsVBlankCallback(void)
+static void VBlankCB_Credits(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
-static void CB2_RunCreditsSequence(void)
+static void CB2_Credits(void)
{
RunTasks();
AnimateSprites();
if ((JOY_HELD(B_BUTTON))
- && gHasHallOfFameRecords != 0
- && gTasks[gUnknown_0203BCE2].func == Task_ProgressCreditTasks)
+ && gHasHallOfFameRecords
+ && gTasks[sSavedTaskId].func == Task_CreditsMain)
{
- CreditsVBlankCallback();
+ // Speed up credits
+ VBlankCB_Credits();
RunTasks();
AnimateSprites();
- gUnknown_0203BCE5 = 1;
+ sUsedSpeedUp = TRUE;
}
BuildOamBuffer();
UpdatePaletteFade();
}
-static void sub_8175548(void)
+static void InitCreditsBgsAndWindows(void)
{
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sBackgroundTemplates, ARRAY_COUNT(sBackgroundTemplates));
SetBgTilemapBuffer(0, AllocZeroed(BG_SCREEN_SIZE));
- LoadPalette(gUnknown_085E56F0, 0x80, 0x40);
+ LoadPalette(sCredits_Pal, 0x80, 64);
InitWindows(sWindowTemplates);
DeactivateAllTextPrinters();
PutWindowTilemap(0);
@@ -1168,7 +373,7 @@ static void sub_8175548(void)
ShowBg(0);
}
-static void sub_81755A4(void)
+static void FreeCreditsBgsAndWindows(void)
{
void *ptr;
FreeAllWindowBuffers();
@@ -1182,151 +387,153 @@ static void PrintCreditsText(const u8 *string, u8 y, bool8 isTitle)
u8 x;
u8 color[3];
- color[0] = 0;
+ color[0] = TEXT_COLOR_TRANSPARENT;
if (isTitle == TRUE)
{
- color[1] = 3;
- color[2] = 4;
+ color[1] = TEXT_COLOR_LIGHT_GRAY;
+ color[2] = TEXT_COLOR_RED;
}
else
{
- color[1] = 1;
- color[2] = 2;
+ color[1] = TEXT_COLOR_WHITE;
+ color[2] = TEXT_COLOR_DARK_GRAY;
}
- x = GetStringCenterAlignXOffsetWithLetterSpacing(1, string, 0xF0, 1);
+ x = GetStringCenterAlignXOffsetWithLetterSpacing(1, string, DISPLAY_WIDTH, 1);
AddTextPrinterParameterized4(0, 1, x, y, 1, 0, color, -1, string);
}
+#define tMainTaskId data[1]
+
void CB2_StartCreditsSequence(void)
{
- u8 taskIdA;
- s16 taskIdC;
- u8 taskIdB;
+ u8 taskId;
+ s16 bikeTaskId;
+ u8 pageTaskId;
ResetGpuAndVram();
SetVBlankCallback(NULL);
InitHeap(gHeap, HEAP_SIZE);
ResetPaletteFade();
ResetTasks();
- sub_8175548();
+ InitCreditsBgsAndWindows();
- taskIdA = CreateTask(Task_WaitPaletteFade, 0);
+ taskId = CreateTask(Task_WaitPaletteFade, 0);
- gTasks[taskIdA].data[TDA_4] = 0;
- gTasks[taskIdA].data[TDA_7] = 0;
- gTasks[taskIdA].data[TDA_11] = 0;
- gTasks[taskIdA].data[TDA_13] = 1;
+ gTasks[taskId].tEndCredits = FALSE;
+ gTasks[taskId].tSceneNum = SCENE_OCEAN_MORNING;
+ gTasks[taskId].tNextMode = MODE_NONE;
+ gTasks[taskId].tCurrentMode = MODE_BIKE_SCENE;
while (TRUE)
{
- if (sub_8176AB0(0, taskIdA))
+ if (LoadBikeScene(SCENE_OCEAN_MORNING, taskId))
break;
}
- taskIdC = gTasks[taskIdA].data[TDA_TASK_C_ID];
- gTasks[taskIdC].data[TDC_0] = 40;
+ bikeTaskId = gTasks[taskId].tTaskId_BikeScene;
+ gTasks[bikeTaskId].tState = 40;
SetGpuReg(REG_OFFSET_BG0VOFS, 0xFFFC);
- taskIdB = CreateTask(sub_8175DA0, 0);
+ pageTaskId = CreateTask(Task_UpdatePage, 0);
- gTasks[taskIdB].data[TDB_TASK_A_ID] = taskIdA;
- gTasks[taskIdA].data[TDA_TASK_B_ID] = taskIdB;
+ gTasks[pageTaskId].tMainTaskId = taskId;
+ gTasks[taskId].tTaskId_UpdatePage = pageTaskId;
BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK);
EnableInterrupts(INTR_FLAG_VBLANK);
- SetVBlankCallback(CreditsVBlankCallback);
+ SetVBlankCallback(VBlankCB_Credits);
m4aSongNumStart(MUS_CREDITS);
- SetMainCallback2(CB2_RunCreditsSequence);
- gUnknown_0203BCE5 = 0;
+ SetMainCallback2(CB2_Credits);
+ sUsedSpeedUp = FALSE;
sCreditsData = AllocZeroed(sizeof(struct CreditsData));
DeterminePokemonToShow();
sCreditsData->imgCounter = 0;
- sCreditsData->nextImgPos = 0;
+ sCreditsData->nextImgPos = POS_LEFT;
sCreditsData->currShownMon = 0;
- gUnknown_0203BCE2 = taskIdA;
+ sSavedTaskId = taskId;
}
-static void Task_WaitPaletteFade(u8 taskIdA)
+static void Task_WaitPaletteFade(u8 taskId)
{
if (!gPaletteFade.active)
- gTasks[taskIdA].func = Task_ProgressCreditTasks;
+ gTasks[taskId].func = Task_CreditsMain;
}
-static void Task_ProgressCreditTasks(u8 taskIdA)
+static void Task_CreditsMain(u8 taskId)
{
- u16 data1;
+ u16 mode;
- if (gTasks[taskIdA].data[TDA_4])
+ if (gTasks[taskId].tEndCredits)
{
- s16 taskIdC;
+ s16 bikeTaskId = gTasks[taskId].tTaskId_BikeScene;
+ gTasks[bikeTaskId].tState = 30;
- taskIdC = gTasks[taskIdA].data[TDA_TASK_C_ID];
- gTasks[taskIdC].data[TDC_0] = 30;
-
- gTasks[taskIdA].data[TDA_12] = 0x100;
- gTasks[taskIdA].func = Task_CreditsTheEnd1;
+ gTasks[taskId].tTheEndDelay = 256;
+ gTasks[taskId].func = Task_CreditsTheEnd1;
return;
}
- gUnknown_0203BCE0 = 0;
- data1 = gTasks[taskIdA].data[TDA_11];
+ sUnkVar = 0;
+ mode = gTasks[taskId].tNextMode;
- if (gTasks[taskIdA].data[TDA_11] == 1)
+ if (gTasks[taskId].tNextMode == MODE_BIKE_SCENE)
{
- gTasks[taskIdA].data[TDA_13] = data1;
- gTasks[taskIdA].data[TDA_11] = 0;
+ // Start a bike cutscene
+ gTasks[taskId].tCurrentMode = mode;
+ gTasks[taskId].tNextMode = MODE_NONE;
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
- gTasks[taskIdA].func = sub_8175808;
+ gTasks[taskId].func = Task_ReadyBikeScene;
}
- else if (gTasks[taskIdA].data[TDA_11] == 2)
+ else if (gTasks[taskId].tNextMode == MODE_SHOW_MONS)
{
- gTasks[taskIdA].data[TDA_13] = data1;
- gTasks[taskIdA].data[TDA_11] = 0;
+ // Start a Pokémon interlude
+ gTasks[taskId].tCurrentMode = mode;
+ gTasks[taskId].tNextMode = MODE_NONE;
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
- gTasks[taskIdA].func = sub_81758A4;
+ gTasks[taskId].func = Task_ReadyShowMons;
}
}
-static void sub_8175808(u8 taskIdA)
+static void Task_ReadyBikeScene(u8 taskId)
{
if (!gPaletteFade.active)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
- ResetCreditsTasks(taskIdA);
- gTasks[taskIdA].func = c2_080C9BFC;
+ ResetCreditsTasks(taskId);
+ gTasks[taskId].func = Task_SetBikeScene;
}
}
-static void c2_080C9BFC(u8 taskIdA)
+static void Task_SetBikeScene(u8 taskId)
{
SetVBlankCallback(NULL);
- if (sub_8176AB0(gTasks[taskIdA].data[TDA_7], taskIdA))
+ if (LoadBikeScene(gTasks[taskId].tSceneNum, taskId))
{
BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK);
EnableInterrupts(INTR_FLAG_VBLANK);
- SetVBlankCallback(CreditsVBlankCallback);
- gTasks[taskIdA].func = Task_WaitPaletteFade;
+ SetVBlankCallback(VBlankCB_Credits);
+ gTasks[taskId].func = Task_WaitPaletteFade;
}
}
-static void sub_81758A4(u8 taskIdA)
+static void Task_ReadyShowMons(u8 taskId)
{
if (!gPaletteFade.active)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
- ResetCreditsTasks(taskIdA);
- gTasks[taskIdA].func = Task_CreditsLoadGrassScene;
+ ResetCreditsTasks(taskId);
+ gTasks[taskId].func = Task_LoadShowMons;
}
}
-static void Task_CreditsLoadGrassScene(u8 taskIdA)
+static void Task_LoadShowMons(u8 taskId)
{
switch (gMain.state)
{
@@ -1344,30 +551,30 @@ static void Task_CreditsLoadGrassScene(u8 taskIdA)
LZ77UnCompVram(gBirchGrassTilemap, (void *)(BG_SCREEN_ADDR(7)));
LoadPalette(gBirchBagGrassPal[0] + 1, 1, 31 * 2);
- for (i = 0; i < 0x800; i++)
+ for (i = 0; i < MON_PIC_SIZE; i++)
gDecompressionBuffer[i] = 0x11;
- for (i = 0; i < 0x800; i++)
- (gDecompressionBuffer + 0x800)[i] = 0x22;
- for (i = 0; i < 0x800; i++)
- (gDecompressionBuffer + 0x1000)[i] = 0x33;
+ for (i = 0; i < MON_PIC_SIZE; i++)
+ (gDecompressionBuffer + MON_PIC_SIZE)[i] = 0x22;
+ for (i = 0; i < MON_PIC_SIZE; i++)
+ (gDecompressionBuffer + MON_PIC_SIZE * 2)[i] = 0x33;
- temp = (u16 *)(&gDecompressionBuffer[0x1800]);
+ temp = (u16 *)(&gDecompressionBuffer[MONBG_OFFSET]);
temp[0] = RGB_BLACK;
temp[1] = RGB(31, 31, 20); // light yellow
temp[2] = RGB(31, 20, 20); // light red
temp[3] = RGB(20, 20, 31); // light blue
- LoadSpriteSheet(gUnknown_085E701C);
- LoadSpritePalette(gUnknown_085E702C);
+ LoadSpriteSheet(sSpriteSheet_MonBg);
+ LoadSpritePalette(sSpritePalette_MonBg);
- gMain.state += 1;
+ gMain.state++;
break;
}
case 1:
- gTasks[taskIdA].data[TDA_TASK_D_ID] = CreateTask(sub_81760FC, 0);
- gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_STATE] = 1;
- gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_TASK_A_ID] = taskIdA;
- gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_2] = gTasks[taskIdA].data[TDA_7];
+ gTasks[taskId].tTaskId_ShowMons = CreateTask(Task_ShowMons, 0);
+ gTasks[gTasks[taskId].tTaskId_ShowMons].tState = 1;
+ gTasks[gTasks[taskId].tTaskId_ShowMons].tMainTaskId = taskId;
+ gTasks[gTasks[taskId].tTaskId_ShowMons].data[2] = gTasks[taskId].tSceneNum; // data[2] never read
BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK);
SetGpuReg(REG_OFFSET_BG3HOFS, 0);
@@ -1384,34 +591,36 @@ static void Task_CreditsLoadGrassScene(u8 taskIdA)
| DISPCNT_OBJ_ON);
gMain.state = 0;
- gUnknown_0203BD28 = 0;
- gTasks[taskIdA].func = Task_WaitPaletteFade;
+ gIntroCredits_MovingSceneryState = INTROCRED_SCENERY_NORMAL;
+ gTasks[taskId].func = Task_WaitPaletteFade;
break;
}
}
-static void Task_CreditsTheEnd1(u8 taskIdA)
+static void Task_CreditsTheEnd1(u8 taskId)
{
- if (gTasks[taskIdA].data[TDA_12])
+ if (gTasks[taskId].tTheEndDelay)
{
- gTasks[taskIdA].data[TDA_12] -= 1;
+ gTasks[taskId].tTheEndDelay--;
return;
}
BeginNormalPaletteFade(PALETTES_ALL, 12, 0, 16, RGB_BLACK);
- gTasks[taskIdA].func = Task_CreditsTheEnd2;
+ gTasks[taskId].func = Task_CreditsTheEnd2;
}
-static void Task_CreditsTheEnd2(u8 taskIdA)
+static void Task_CreditsTheEnd2(u8 taskId)
{
if (!gPaletteFade.active)
{
- ResetCreditsTasks(taskIdA);
- gTasks[taskIdA].func = Task_CreditsTheEnd3;
+ ResetCreditsTasks(taskId);
+ gTasks[taskId].func = Task_CreditsTheEnd3;
}
}
-static void Task_CreditsTheEnd3(u8 taskIdA)
+#define tDelay data[0]
+
+static void Task_CreditsTheEnd3(u8 taskId)
{
ResetGpuAndVram();
ResetPaletteFade();
@@ -1430,60 +639,62 @@ static void Task_CreditsTheEnd3(u8 taskIdA)
| DISPCNT_OBJ_1D_MAP
| DISPCNT_BG0_ON);
- gTasks[taskIdA].data[TDA_0] = 235; //set this to 215 to actually show "THE END" in time to the last song beat
- gTasks[taskIdA].func = Task_CreditsTheEnd4;
+ gTasks[taskId].tDelay = 235; //set this to 215 to actually show "THE END" in time to the last song beat
+ gTasks[taskId].func = Task_CreditsTheEnd4;
}
-static void Task_CreditsTheEnd4(u8 taskIdA)
+static void Task_CreditsTheEnd4(u8 taskId)
{
- if (gTasks[taskIdA].data[TDA_0])
+ if (gTasks[taskId].tDelay)
{
- gTasks[taskIdA].data[TDA_0] -= 1;
+ gTasks[taskId].tDelay--;
return;
}
BeginNormalPaletteFade(PALETTES_ALL, 6, 0, 16, RGB_BLACK);
- gTasks[taskIdA].func = Task_CreditsTheEnd5;
+ gTasks[taskId].func = Task_CreditsTheEnd5;
}
-static void Task_CreditsTheEnd5(u8 taskIdA)
+static void Task_CreditsTheEnd5(u8 taskId)
{
if (!gPaletteFade.active)
{
- sub_8176E40(0x3800, 0);
+ DrawTheEnd(0x3800, 0);
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0, RGB_BLACK);
- gTasks[taskIdA].data[TDA_0] = 7200;
- gTasks[taskIdA].func = Task_CreditsTheEnd6;
+ gTasks[taskId].tDelay = 7200;
+ gTasks[taskId].func = Task_CreditsTheEnd6;
}
}
-static void Task_CreditsTheEnd6(u8 taskIdA)
+static void Task_CreditsTheEnd6(u8 taskId)
{
if (!gPaletteFade.active)
{
- if (gTasks[taskIdA].data[TDA_0] == 0 || gMain.newKeys)
+ if (gTasks[taskId].tDelay == 0 || gMain.newKeys)
{
FadeOutBGM(4);
BeginNormalPaletteFade(PALETTES_ALL, 8, 0, 16, RGB_WHITEALPHA);
- gTasks[taskIdA].func = Task_CreditsSoftReset;
+ gTasks[taskId].func = Task_CreditsSoftReset;
return;
}
- if (gTasks[taskIdA].data[TDA_0] == 7144)
+ if (gTasks[taskId].tDelay == 7144)
FadeOutBGM(8);
- if (gTasks[taskIdA].data[TDA_0] == 6840)
+ if (gTasks[taskId].tDelay == 6840)
m4aSongNumStart(MUS_END);
- gTasks[taskIdA].data[TDA_0] -= 1;
+ gTasks[taskId].tDelay--;
}
}
-static void Task_CreditsSoftReset(u8 taskIdA)
+#undef tDelay
+
+static void Task_CreditsSoftReset(u8 taskId)
{
if (!gPaletteFade.active)
- SoftReset(0xFF);
+ SoftReset(RESET_ALL);
}
static void ResetGpuAndVram(void)
@@ -1508,11 +719,14 @@ static void ResetGpuAndVram(void)
DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
}
-static void sub_8175DA0(u8 taskIdB)
+#define tCurrentPage data[2]
+#define tDelay data[3]
+
+static void Task_UpdatePage(u8 taskId)
{
int i;
- switch (gTasks[taskIdB].data[TDB_0])
+ switch (gTasks[taskId].tState)
{
case 0:
case 6:
@@ -1522,419 +736,450 @@ static void sub_8175DA0(u8 taskIdB)
default:
if (!gPaletteFade.active)
{
- gTasks[taskIdB].data[TDB_0] = 1;
- gTasks[taskIdB].data[TDB_3] = 0x48;
- gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 0;
- gUnknown_0203BCE0 = 0;
+ gTasks[taskId].tState = 1;
+ gTasks[taskId].tDelay = 72;
+ gTasks[gTasks[taskId].tMainTaskId].tPrintedPage = FALSE;
+ sUnkVar = 0;
}
return;
case 1:
- if (gTasks[taskIdB].data[TDB_3] != 0)
+ if (gTasks[taskId].tDelay != 0)
{
- gTasks[taskIdB].data[TDB_3] -= 1;
+ gTasks[taskId].tDelay--;
return;
}
- gTasks[taskIdB].data[TDB_0] += 1;
+ gTasks[taskId].tState++;
return;
case 2:
- if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].func == Task_ProgressCreditTasks)
+ if (gTasks[gTasks[taskId].tMainTaskId].func == Task_CreditsMain)
{
- if (gTasks[taskIdB].data[TDB_CURRENT_PAGE] < PAGE_COUNT)
+ if (gTasks[taskId].tCurrentPage < PAGE_COUNT)
{
- for (i = 0; i < 5; i++)
+ // Print text for this Credits page
+ for (i = 0; i < ENTRIES_PER_PAGE; i++)
PrintCreditsText(
- gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text,
+ sCreditsEntryPointerTable[gTasks[taskId].tCurrentPage][i]->text,
5 + i * 16,
- gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->isTitle);
-
+ sCreditsEntryPointerTable[gTasks[taskId].tCurrentPage][i]->isTitle);
CopyWindowToVram(0, 2);
- gTasks[taskIdB].data[TDB_CURRENT_PAGE] += 1;
- gTasks[taskIdB].data[TDB_0] += 1;
+ gTasks[taskId].tCurrentPage++;
+ gTasks[taskId].tState++;
- gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 1;
+ gTasks[gTasks[taskId].tMainTaskId].tPrintedPage = TRUE;
- if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_13] == 1)
- BeginNormalPaletteFade(0x00000300, 0, 16, 0, COLOR_LIGHT_GREEN);
- else
- BeginNormalPaletteFade(0x00000300, 0, 16, 0, COLOR_DARK_GREEN);
+ if (gTasks[gTasks[taskId].tMainTaskId].tCurrentMode == MODE_BIKE_SCENE)
+ BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_LIGHT_GREEN);
+ else // MODE_SHOW_MONS
+ BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_DARK_GREEN);
return;
}
- gTasks[taskIdB].data[TDB_0] = 10;
+
+ // Reached final page of Credits, end task
+ gTasks[taskId].tState = 10;
return;
}
- gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 0;
+ gTasks[gTasks[taskId].tMainTaskId].tPrintedPage = FALSE;
return;
case 3:
if (!gPaletteFade.active)
{
- gTasks[taskIdB].data[TDB_3] = 0x73;
- gTasks[taskIdB].data[TDB_0] += 1;
+ gTasks[taskId].tDelay = 115;
+ gTasks[taskId].tState++;
}
return;
case 4:
- if (gTasks[taskIdB].data[TDB_3] != 0)
+ if (gTasks[taskId].tDelay != 0)
{
- gTasks[taskIdB].data[TDB_3] -= 1;
+ gTasks[taskId].tDelay--;
return;
}
- if (CheckChangeScene((u8)gTasks[taskIdB].data[TDB_CURRENT_PAGE], (u8)gTasks[taskIdB].data[TDB_TASK_A_ID]))
+ if (CheckChangeScene((u8)gTasks[taskId].tCurrentPage, (u8)gTasks[taskId].tMainTaskId))
{
- gTasks[taskIdB].data[TDB_0] += 1;
+ gTasks[taskId].tState++;
return;
}
- gTasks[taskIdB].data[TDB_0] += 1;
- if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_13] == 1)
- BeginNormalPaletteFade(0x00000300, 0, 0, 16, COLOR_LIGHT_GREEN);
- else
- BeginNormalPaletteFade(0x00000300, 0, 0, 16, COLOR_DARK_GREEN);
+ gTasks[taskId].tState++;
+ if (gTasks[gTasks[taskId].tMainTaskId].tCurrentMode == MODE_BIKE_SCENE)
+ BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_LIGHT_GREEN);
+ else // MODE_SHOW_MONS
+ BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_DARK_GREEN);
return;
case 5:
if (!gPaletteFade.active)
{
+ // Still more Credits pages to show, return to state 2 to print
FillWindowPixelBuffer(0, PIXEL_FILL(0));
CopyWindowToVram(0, 2);
- gTasks[taskIdB].data[TDB_0] = 2;
+ gTasks[taskId].tState = 2;
}
return;
case 10:
- gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_4] = 1;
- DestroyTask(taskIdB);
- sub_81755A4();
+ gTasks[gTasks[taskId].tMainTaskId].tEndCredits = TRUE;
+ DestroyTask(taskId);
+ FreeCreditsBgsAndWindows();
FREE_AND_SET_NULL(sCreditsData);
return;
}
}
-static u8 CheckChangeScene(u8 page, u8 taskIdA)
+#undef tDelay
+
+#define PAGE_INTERVAL (PAGE_COUNT / 9) // 9 scenes (5 bike scenes, 4 Pokémon interludes)
+
+static u8 CheckChangeScene(u8 page, u8 taskId)
{
- // Starts with bike + ocean + morning
+ // Starts with bike + ocean + morning (SCENE_OCEAN_MORNING)
- if (page == 6)
+ if (page == PAGE_INTERVAL * 1)
{
- // Grass patch
- gTasks[taskIdA].data[TDA_11] = 2;
+ // Pokémon interlude
+ gTasks[taskId].tNextMode = MODE_SHOW_MONS;
}
- if (page == 12)
+ if (page == PAGE_INTERVAL * 2)
{
// Bike + ocean + sunset
- gTasks[taskIdA].data[TDA_7] = 1;
- gTasks[taskIdA].data[TDA_11] = 1;
+ gTasks[taskId].tSceneNum = SCENE_OCEAN_SUNSET;
+ gTasks[taskId].tNextMode = MODE_BIKE_SCENE;
}
- if (page == 18)
+ if (page == PAGE_INTERVAL * 3)
{
- // Grass patch
- gTasks[taskIdA].data[TDA_11] = 2;
+ // Pokémon interlude
+ gTasks[taskId].tNextMode = MODE_SHOW_MONS;
}
- if (page == 24)
+ if (page == PAGE_INTERVAL * 4)
{
// Bike + forest + sunset
- gTasks[taskIdA].data[TDA_7] = 2;
- gTasks[taskIdA].data[TDA_11] = 1;
+ gTasks[taskId].tSceneNum = SCENE_FOREST_RIVAL_ARRIVE;
+ gTasks[taskId].tNextMode = MODE_BIKE_SCENE;
}
- if (page == 30)
+ if (page == PAGE_INTERVAL * 5)
{
- // Grass patch
- gTasks[taskIdA].data[TDA_11] = 2;
+ // Pokémon interlude
+ gTasks[taskId].tNextMode = MODE_SHOW_MONS;
}
- if (page == 36)
+ if (page == PAGE_INTERVAL * 6)
{
// Bike + forest + sunset
- gTasks[taskIdA].data[TDA_7] = 3;
- gTasks[taskIdA].data[TDA_11] = 1;
+ gTasks[taskId].tSceneNum = SCENE_FOREST_CATCH_RIVAL;
+ gTasks[taskId].tNextMode = MODE_BIKE_SCENE;
}
- if (page == 42)
+ if (page == PAGE_INTERVAL * 7)
{
- // Grass patch
- gTasks[taskIdA].data[TDA_11] = 2;
+ // Pokémon interlude
+ gTasks[taskId].tNextMode = MODE_SHOW_MONS;
}
- if (page == 48)
+ if (page == PAGE_INTERVAL * 8)
{
// Bike + town + night
- gTasks[taskIdA].data[TDA_7] = 4;
- gTasks[taskIdA].data[TDA_11] = 1;
+ gTasks[taskId].tSceneNum = SCENE_CITY_NIGHT;
+ gTasks[taskId].tNextMode = MODE_BIKE_SCENE;
}
- if (gTasks[taskIdA].data[TDA_11] != 0)
+ if (gTasks[taskId].tNextMode != MODE_NONE)
{
- // Returns true if changed?
+ // Returns true if changed
return TRUE;
}
return FALSE;
}
-static void sub_81760FC(u8 taskIdD)
+#define tDelay data[3]
+
+static void Task_ShowMons(u8 taskId)
{
- u8 r2;
+ u8 spriteId;
- switch (gTasks[taskIdD].data[TDD_STATE])
+ switch (gTasks[taskId].tState)
{
case 0:
break;
case 1:
- if (sCreditsData->nextImgPos == 0 && gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] == 0)
+ if (sCreditsData->nextImgPos == POS_LEFT && gTasks[gTasks[taskId].tMainTaskId].tPrintedPage == FALSE)
break;
- gTasks[taskIdD].data[TDD_STATE]++;
+ gTasks[taskId].tState++;
break;
case 2:
- if (sCreditsData->imgCounter == NUM_MON_SLIDES || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != Task_ProgressCreditTasks)
+ if (sCreditsData->imgCounter == NUM_MON_SLIDES || gTasks[gTasks[taskId].tMainTaskId].func != Task_CreditsMain)
break;
- r2 = MakeMonSprite(sCreditsData->monToShow[sCreditsData->currShownMon], sMonSpritePos[sCreditsData->nextImgPos][0], sMonSpritePos[sCreditsData->nextImgPos][1], sCreditsData->nextImgPos);
+ spriteId = CreateCreditsMonSprite(sCreditsData->monToShow[sCreditsData->currShownMon],
+ sMonSpritePos[sCreditsData->nextImgPos][0],
+ sMonSpritePos[sCreditsData->nextImgPos][1],
+ sCreditsData->nextImgPos);
if (sCreditsData->currShownMon < sCreditsData->numMonToShow - 1)
{
sCreditsData->currShownMon++;
- gSprites[r2].data[3] = 50;
+ gSprites[spriteId].data[3] = 50;
}
else
{
sCreditsData->currShownMon = 0;
- gSprites[r2].data[3] = 512;
+ gSprites[spriteId].data[3] = 512;
}
sCreditsData->imgCounter++;
- if (sCreditsData->nextImgPos == 2)
- sCreditsData->nextImgPos = 0;
+
+ if (sCreditsData->nextImgPos == POS_RIGHT)
+ sCreditsData->nextImgPos = POS_LEFT;
else
sCreditsData->nextImgPos++;
- gTasks[taskIdD].data[TDD_3] = 50;
- gTasks[taskIdD].data[TDD_STATE]++;
+
+ gTasks[taskId].tDelay = 50;
+ gTasks[taskId].tState++;
break;
case 3:
- if (gTasks[taskIdD].data[TDD_3] != 0)
- gTasks[taskIdD].data[TDD_3]--;
+ if (gTasks[taskId].tDelay != 0)
+ gTasks[taskId].tDelay--;
else
- gTasks[taskIdD].data[TDD_STATE] = 1;
+ gTasks[taskId].tState = 1;
break;
}
}
-static void sub_817624C(u8 taskIdC)
+#undef tMainTaskId
+#undef tDelay
+
+#define tPlayer data[2]
+#define tRival data[3]
+#define tDelay data[4]
+#define tSinIdx data[5]
+
+static void Task_BikeScene(u8 taskId)
{
- switch (gTasks[taskIdC].data[TDC_0])
+ switch (gTasks[taskId].tState)
{
case 0:
- gUnknown_0203BD26 = Sin((gTasks[taskIdC].data[TDC_5] >> 1) & 0x7F, 12);
- gTasks[taskIdC].data[TDC_5]++;
+ gIntroCredits_MovingSceneryVOffset = Sin((gTasks[taskId].tSinIdx >> 1) & 0x7F, 12);
+ gTasks[taskId].tSinIdx++;
break;
case 1:
- if (gUnknown_0203BD26 != 0)
+ if (gIntroCredits_MovingSceneryVOffset != 0)
{
- gUnknown_0203BD26 = Sin((gTasks[taskIdC].data[TDC_5] >> 1) & 0x7F, 12);
- gTasks[taskIdC].data[TDC_5]++;
+ gIntroCredits_MovingSceneryVOffset = Sin((gTasks[taskId].tSinIdx >> 1) & 0x7F, 12);
+ gTasks[taskId].tSinIdx++;
}
else
{
- gSprites[gTasks[taskIdC].data[TDC_2]].data[0] = 2;
- gTasks[taskIdC].data[TDC_5] = 0;
- gTasks[taskIdC].data[TDC_0]++;
+ gSprites[gTasks[taskId].tPlayer].data[0] = 2;
+ gTasks[taskId].tSinIdx = 0;
+ gTasks[taskId].tState++;
}
break;
case 2:
- if (gTasks[taskIdC].data[TDC_5] < 64)
+ if (gTasks[taskId].tSinIdx < 64)
{
- gTasks[taskIdC].data[TDC_5]++;
- gUnknown_0203BD26 = Sin(gTasks[taskIdC].data[TDC_5] & 0x7F, 20);
+ gTasks[taskId].tSinIdx++;
+ gIntroCredits_MovingSceneryVOffset = Sin(gTasks[taskId].tSinIdx & 0x7F, 20);
}
else
{
- gTasks[taskIdC].data[TDC_0]++;
+ gTasks[taskId].tState++;
}
break;
case 3:
- gSprites[gTasks[taskIdC].data[TDC_2]].data[0] = 3;
- gSprites[gTasks[taskIdC].data[TDC_3]].data[0] = 1;
- gTasks[taskIdC].data[TDC_4] = 120;
- gTasks[taskIdC].data[TDC_0]++;
+ gSprites[gTasks[taskId].tPlayer].data[0] = 3;
+ gSprites[gTasks[taskId].tRival].data[0] = 1;
+ gTasks[taskId].tDelay = 120;
+ gTasks[taskId].tState++;
break;
case 4:
- if (gTasks[taskIdC].data[TDC_4] != 0)
+ if (gTasks[taskId].tDelay != 0)
{
- gTasks[taskIdC].data[TDC_4]--;
+ gTasks[taskId].tDelay--;
}
else
{
- gTasks[taskIdC].data[TDC_5] = 64;
- gTasks[taskIdC].data[TDC_0]++;
+ gTasks[taskId].tSinIdx = 64;
+ gTasks[taskId].tState++;
}
break;
case 5:
- if (gTasks[taskIdC].data[TDC_5] > 0)
+ if (gTasks[taskId].tSinIdx > 0)
{
- gTasks[taskIdC].data[TDC_5]--;
- gUnknown_0203BD26 = Sin(gTasks[taskIdC].data[TDC_5] & 0x7F, 20);
+ gTasks[taskId].tSinIdx--;
+ gIntroCredits_MovingSceneryVOffset = Sin(gTasks[taskId].tSinIdx & 0x7F, 20);
}
else
{
- gSprites[gTasks[taskIdC].data[TDC_2]].data[0] = 1;
- gTasks[taskIdC].data[TDC_0]++;
+ gSprites[gTasks[taskId].tPlayer].data[0] = 1;
+ gTasks[taskId].tState++;
}
break;
case 6:
- gTasks[taskIdC].data[TDC_0] = 50;
+ gTasks[taskId].tState = 50;
break;
case 10:
- gSprites[gTasks[taskIdC].data[TDC_3]].data[0] = 2;
- gTasks[taskIdC].data[TDC_0] = 50;
+ gSprites[gTasks[taskId].tRival].data[0] = 2;
+ gTasks[taskId].tState = 50;
break;
case 20:
- gSprites[gTasks[taskIdC].data[TDC_2]].data[0] = 4;
- gTasks[taskIdC].data[TDC_0] = 50;
+ gSprites[gTasks[taskId].tPlayer].data[0] = 4;
+ gTasks[taskId].tState = 50;
break;
case 30:
- gSprites[gTasks[taskIdC].data[TDC_2]].data[0] = 5;
- gSprites[gTasks[taskIdC].data[TDC_3]].data[0] = 3;
- gTasks[taskIdC].data[TDC_0] = 50;
+ gSprites[gTasks[taskId].tPlayer].data[0] = 5;
+ gSprites[gTasks[taskId].tRival].data[0] = 3;
+ gTasks[taskId].tState = 50;
break;
case 50:
- gTasks[taskIdC].data[TDC_0] = 0;
+ gTasks[taskId].tState = 0;
break;
}
}
-static void sub_817651C(u8 taskIdE)
+#define TIMER_STOP 0x7FFF
+#define tTimer data[1]
+#define tMainTaskId data[2]
+
+static void Task_CycleSceneryPalette(u8 taskId)
{
- s16 taskIdC;
+ s16 bikeTaskId;
- switch (gTasks[taskIdE].data[TDE_0])
+ switch (gTasks[taskId].tState)
{
default:
- case 0:
- if (gTasks[taskIdE].data[TDE_1] != 0x7FFF)
+ case SCENE_OCEAN_MORNING:
+ if (gTasks[taskId].tTimer != TIMER_STOP)
{
-
- if (gTasks[gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_B_ID]].data[TDB_CURRENT_PAGE] == 2)
+ if (gTasks[gTasks[gTasks[taskId].tMainTaskId].tTaskId_UpdatePage].tCurrentPage == 2)
{
- gTasks[gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID]].data[TDC_0] = 20;
- gTasks[taskIdE].data[TDE_1] = 0x7FFF;
+ gTasks[gTasks[gTasks[taskId].tMainTaskId].tTaskId_BikeScene].tState = 20;
+ gTasks[taskId].tTimer = TIMER_STOP;
}
}
- sub_817B540(0);
+ CycleSceneryPalette(0);
break;
- case 1:
- sub_817B540(0);
+ case SCENE_OCEAN_SUNSET:
+ CycleSceneryPalette(0);
break;
- case 2:
- if (gTasks[taskIdE].data[TDE_1] != 0x7FFF)
+ case SCENE_FOREST_RIVAL_ARRIVE:
+ if (gTasks[taskId].tTimer != TIMER_STOP)
{
- taskIdC = gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID];
+ bikeTaskId = gTasks[gTasks[taskId].tMainTaskId].tTaskId_BikeScene;
// Floor to multiple of 128
- if ((gTasks[taskIdC].data[TDC_5] & -128) == 640)
+ if ((gTasks[bikeTaskId].tSinIdx & -128) == 640)
{
- gTasks[taskIdC].data[TDC_0] = 1;
- gTasks[taskIdE].data[TDE_1] = 0x7FFF;
+ gTasks[bikeTaskId].tState = 1;
+ gTasks[taskId].tTimer = TIMER_STOP;
}
}
- sub_817B540(1);
+ CycleSceneryPalette(1);
break;
- case 3:
- if (gTasks[taskIdE].data[TDE_1] != 0x7FFF)
+ case SCENE_FOREST_CATCH_RIVAL:
+ if (gTasks[taskId].tTimer != TIMER_STOP)
{
- if (gTasks[taskIdE].data[TDE_1] == 0x248)
+ if (gTasks[taskId].tTimer == 584)
{
- gTasks[gTasks[gTasks[taskIdE].data[TDE_TASK_A_ID]].data[TDA_TASK_C_ID]].data[TDC_0] = 10;
- gTasks[taskIdE].data[TDE_1] = 0x7FFF;
+ gTasks[gTasks[gTasks[taskId].tMainTaskId].tTaskId_BikeScene].tState = 10;
+ gTasks[taskId].tTimer = TIMER_STOP;
}
else
{
- gTasks[taskIdE].data[TDE_1] += 1;
+ gTasks[taskId].tTimer++;
}
}
- sub_817B540(1);
+ CycleSceneryPalette(1);
break;
- case 4:
- sub_817B540(2);
+ case SCENE_CITY_NIGHT:
+ CycleSceneryPalette(2);
break;
}
}
-static void sub_817664C(u8 data, u8 taskIdA)
+static void SetBikeScene(u8 scene, u8 taskId)
{
- switch (data)
+ switch (scene)
{
- case 0:
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 272;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0;
- gTasks[taskIdA].data[TDA_0] = CreateBicycleAnimationTask(0, 0x2000, 0x20, 8);
+ case SCENE_OCEAN_MORNING:
+ gSprites[gTasks[taskId].tPlayerSpriteId].invisible = FALSE;
+ gSprites[gTasks[taskId].tRivalSpriteId].invisible = FALSE;
+ gSprites[gTasks[taskId].tPlayerSpriteId].x = DISPLAY_WIDTH + 32;
+ gSprites[gTasks[taskId].tRivalSpriteId].x = DISPLAY_WIDTH + 32;
+ gSprites[gTasks[taskId].tPlayerSpriteId].y = 46;
+ gSprites[gTasks[taskId].tRivalSpriteId].y = 46;
+ gSprites[gTasks[taskId].tPlayerSpriteId].data[0] = 0;
+ gSprites[gTasks[taskId].tRivalSpriteId].data[0] = 0;
+ gTasks[taskId].tTaskId_BgScenery = CreateBicycleBgAnimationTask(0, 0x2000, 0x20, 8);
break;
- case 1:
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0;
- gTasks[taskIdA].data[TDA_0] = CreateBicycleAnimationTask(0, 0x2000, 0x20, 8);
+ case SCENE_OCEAN_SUNSET:
+ gSprites[gTasks[taskId].tPlayerSpriteId].invisible = FALSE;
+ gSprites[gTasks[taskId].tRivalSpriteId].invisible = FALSE;
+ gSprites[gTasks[taskId].tPlayerSpriteId].x = 120;
+ gSprites[gTasks[taskId].tRivalSpriteId].x = DISPLAY_WIDTH + 32;
+ gSprites[gTasks[taskId].tPlayerSpriteId].y = 46;
+ gSprites[gTasks[taskId].tRivalSpriteId].y = 46;
+ gSprites[gTasks[taskId].tPlayerSpriteId].data[0] = 0;
+ gSprites[gTasks[taskId].tRivalSpriteId].data[0] = 0;
+ gTasks[taskId].tTaskId_BgScenery = CreateBicycleBgAnimationTask(0, 0x2000, 0x20, 8);
break;
- case 2:
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0;
- gTasks[taskIdA].data[TDA_0] = CreateBicycleAnimationTask(1, 0x2000, 0x200, 8);
+ case SCENE_FOREST_RIVAL_ARRIVE:
+ gSprites[gTasks[taskId].tPlayerSpriteId].invisible = FALSE;
+ gSprites[gTasks[taskId].tRivalSpriteId].invisible = FALSE;
+ gSprites[gTasks[taskId].tPlayerSpriteId].x = 120;
+ gSprites[gTasks[taskId].tRivalSpriteId].x = DISPLAY_WIDTH + 32;
+ gSprites[gTasks[taskId].tPlayerSpriteId].y = 46;
+ gSprites[gTasks[taskId].tRivalSpriteId].y = 46;
+ gSprites[gTasks[taskId].tPlayerSpriteId].data[0] = 0;
+ gSprites[gTasks[taskId].tRivalSpriteId].data[0] = 0;
+ gTasks[taskId].tTaskId_BgScenery = CreateBicycleBgAnimationTask(1, 0x2000, 0x200, 8);
break;
- case 3:
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = -32;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0;
- gTasks[taskIdA].data[TDA_0] = CreateBicycleAnimationTask(1, 0x2000, 0x200, 8);
+ case SCENE_FOREST_CATCH_RIVAL:
+ gSprites[gTasks[taskId].tPlayerSpriteId].invisible = FALSE;
+ gSprites[gTasks[taskId].tRivalSpriteId].invisible = FALSE;
+ gSprites[gTasks[taskId].tPlayerSpriteId].x = 120;
+ gSprites[gTasks[taskId].tRivalSpriteId].x = -32;
+ gSprites[gTasks[taskId].tPlayerSpriteId].y = 46;
+ gSprites[gTasks[taskId].tRivalSpriteId].y = 46;
+ gSprites[gTasks[taskId].tPlayerSpriteId].data[0] = 0;
+ gSprites[gTasks[taskId].tRivalSpriteId].data[0] = 0;
+ gTasks[taskId].tTaskId_BgScenery = CreateBicycleBgAnimationTask(1, 0x2000, 0x200, 8);
break;
- case 4:
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 88;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 152;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0;
- gTasks[taskIdA].data[TDA_0] = CreateBicycleAnimationTask(2, 0x2000, 0x200, 8);
+ case SCENE_CITY_NIGHT:
+ gSprites[gTasks[taskId].tPlayerSpriteId].invisible = FALSE;
+ gSprites[gTasks[taskId].tRivalSpriteId].invisible = FALSE;
+ gSprites[gTasks[taskId].tPlayerSpriteId].x = 88;
+ gSprites[gTasks[taskId].tRivalSpriteId].x = 152;
+ gSprites[gTasks[taskId].tPlayerSpriteId].y = 46;
+ gSprites[gTasks[taskId].tRivalSpriteId].y = 46;
+ gSprites[gTasks[taskId].tPlayerSpriteId].data[0] = 0;
+ gSprites[gTasks[taskId].tRivalSpriteId].data[0] = 0;
+ gTasks[taskId].tTaskId_BgScenery = CreateBicycleBgAnimationTask(2, 0x2000, 0x200, 8);
break;
}
- gTasks[taskIdA].data[TDA_TASK_E_ID] = CreateTask(sub_817651C, 0);
- gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_0] = data;
- gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_1] = 0;
- gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_TASK_A_ID] = taskIdA;
+ gTasks[taskId].tTaskId_SceneryPal = CreateTask(Task_CycleSceneryPalette, 0);
+ gTasks[gTasks[taskId].tTaskId_SceneryPal].tState = scene;
+ gTasks[gTasks[taskId].tTaskId_SceneryPal].tTimer = 0;
+ gTasks[gTasks[taskId].tTaskId_SceneryPal].tMainTaskId = taskId;
- gTasks[taskIdA].data[TDA_TASK_C_ID] = CreateTask(sub_817624C, 0);
- gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_0] = 0;
- gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_1] = taskIdA;
- gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_2] = gTasks[taskIdA].data[TDA_PLAYER_CYCLIST];
- gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_3] = gTasks[taskIdA].data[TDA_RIVAL_CYCLIST];
- gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_4] = 0;
+ gTasks[taskId].tTaskId_BikeScene = CreateTask(Task_BikeScene, 0);
+ gTasks[gTasks[taskId].tTaskId_BikeScene].tState = 0;
+ gTasks[gTasks[taskId].tTaskId_BikeScene].data[1] = taskId; // data[1] is never read
+ gTasks[gTasks[taskId].tTaskId_BikeScene].tPlayer = gTasks[taskId].tPlayerSpriteId;
+ gTasks[gTasks[taskId].tTaskId_BikeScene].tRival = gTasks[taskId].tRivalSpriteId;
+ gTasks[gTasks[taskId].tTaskId_BikeScene].tDelay = 0;
- if (data == 2)
- gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_5] = 0x45;
+ if (scene == SCENE_FOREST_RIVAL_ARRIVE)
+ gTasks[gTasks[taskId].tTaskId_BikeScene].tSinIdx = 69;
}
-static bool8 sub_8176AB0(u8 data, u8 taskIdA)
+#undef tTimer
+#undef tDelay
+#undef tSinIdx
+#undef tRival
+#undef tPlayer
+
+static bool8 LoadBikeScene(u8 scene, u8 taskId)
{
u8 spriteId;
@@ -1956,116 +1201,120 @@ static bool8 sub_8176AB0(u8 data, u8 taskIdA)
gMain.state = 1;
break;
case 1:
- gUnknown_0203BD24 = 34;
- gUnknown_0203BD26 = 0;
- sub_817B1C8(data);
- gMain.state += 1;
+ gIntroCredits_MovingSceneryVBase = 34;
+ gIntroCredits_MovingSceneryVOffset = 0;
+ LoadCreditsSceneGraphics(scene);
+ gMain.state++;
break;
case 2:
if (gSaveBlock2Ptr->playerGender == MALE)
{
- LoadCompressedSpriteSheet(gUnknown_085F5334);
- LoadCompressedSpriteSheet(gUnknown_085F53BC);
- LoadCompressedSpriteSheet(gUnknown_085F5354);
- LoadSpritePalettes(gUnknown_085F5384);
-
- spriteId = intro_create_brendan_sprite(120, 46);
- gTasks[taskIdA].data[TDA_PLAYER_CYCLIST] = spriteId;
- gSprites[spriteId].callback = sub_8176EE8;
- gSprites[spriteId].anims = gUnknown_085E6FD0;
-
- spriteId = intro_create_may_sprite(272, 46);
- gTasks[taskIdA].data[TDA_RIVAL_CYCLIST] = spriteId;
- gSprites[spriteId].callback = sub_8176F90;
- gSprites[spriteId].anims = gUnknown_085E7010;
+ LoadCompressedSpriteSheet(gSpriteSheet_CreditsBrendan);
+ LoadCompressedSpriteSheet(gSpriteSheet_CreditsRivalMay);
+ LoadCompressedSpriteSheet(gSpriteSheet_CreditsBicycle);
+ LoadSpritePalettes(gSpritePalettes_Credits);
+
+ spriteId = CreateIntroBrendanSprite(120, 46);
+ gTasks[taskId].tPlayerSpriteId = spriteId;
+ gSprites[spriteId].callback = SpriteCB_Player;
+ gSprites[spriteId].anims = sAnims_Player;
+
+ spriteId = CreateIntroMaySprite(DISPLAY_WIDTH + 32, 46);
+ gTasks[taskId].tRivalSpriteId = spriteId;
+ gSprites[spriteId].callback = SpriteCB_Rival;
+ gSprites[spriteId].anims = sAnims_Rival;
}
else
{
- LoadCompressedSpriteSheet(gUnknown_085F5344);
- LoadCompressedSpriteSheet(gUnknown_085F53AC);
- LoadCompressedSpriteSheet(gUnknown_085F5354);
- LoadSpritePalettes(gUnknown_085F5384);
-
- spriteId = intro_create_may_sprite(120, 46);
- gTasks[taskIdA].data[TDA_PLAYER_CYCLIST] = spriteId;
- gSprites[spriteId].callback = sub_8176EE8;
- gSprites[spriteId].anims = gUnknown_085E6FD0;
-
- spriteId = intro_create_brendan_sprite(272, 46);
- gTasks[taskIdA].data[TDA_RIVAL_CYCLIST] = spriteId;
- gSprites[spriteId].callback = sub_8176F90;
- gSprites[spriteId].anims = gUnknown_085E7010;
+ LoadCompressedSpriteSheet(gSpriteSheet_CreditsMay);
+ LoadCompressedSpriteSheet(gSpriteSheet_CreditsRivalBrendan);
+ LoadCompressedSpriteSheet(gSpriteSheet_CreditsBicycle);
+ LoadSpritePalettes(gSpritePalettes_Credits);
+
+ spriteId = CreateIntroMaySprite(120, 46);
+ gTasks[taskId].tPlayerSpriteId = spriteId;
+ gSprites[spriteId].callback = SpriteCB_Player;
+ gSprites[spriteId].anims = sAnims_Player;
+
+ spriteId = CreateIntroBrendanSprite(DISPLAY_WIDTH + 32, 46);
+ gTasks[taskId].tRivalSpriteId = spriteId;
+ gSprites[spriteId].callback = SpriteCB_Rival;
+ gSprites[spriteId].anims = sAnims_Rival;
};
- gMain.state += 1;
+ gMain.state++;
break;
case 3:
- sub_817664C(data, taskIdA);
- sub_817B3A8(data);
+ SetBikeScene(scene, taskId);
+ SetCreditsSceneBgCnt(scene);
gMain.state = 0;
return TRUE;
}
return FALSE;
}
-static void ResetCreditsTasks(u8 taskIdA)
+static void ResetCreditsTasks(u8 taskId)
{
- if (gTasks[taskIdA].data[TDA_0] != 0)
+ // Destroy Task_BicycleBgAnimation, if running
+ if (gTasks[taskId].tTaskId_BgScenery != 0)
{
- DestroyTask(gTasks[taskIdA].data[TDA_0]);
- gTasks[taskIdA].data[TDA_0] = 0;
+ DestroyTask(gTasks[taskId].tTaskId_BgScenery);
+ gTasks[taskId].tTaskId_BgScenery = 0;
}
- if (gTasks[taskIdA].data[TDA_TASK_C_ID] != 0)
+ // Destroy Task_BikeScene, if running
+ if (gTasks[taskId].tTaskId_BikeScene != 0)
{
- DestroyTask(gTasks[taskIdA].data[TDA_TASK_C_ID]);
- gTasks[taskIdA].data[TDA_TASK_C_ID] = 0;
+ DestroyTask(gTasks[taskId].tTaskId_BikeScene);
+ gTasks[taskId].tTaskId_BikeScene = 0;
}
- if (gTasks[taskIdA].data[TDA_TASK_E_ID] != 0)
+ // Destroy Task_CycleSceneryPalette, if running
+ if (gTasks[taskId].tTaskId_SceneryPal != 0)
{
- DestroyTask(gTasks[taskIdA].data[TDA_TASK_E_ID]);
- gTasks[taskIdA].data[TDA_TASK_E_ID] = 0;
+ DestroyTask(gTasks[taskId].tTaskId_SceneryPal);
+ gTasks[taskId].tTaskId_SceneryPal = 0;
}
- if (gTasks[taskIdA].data[TDA_TASK_D_ID] != 0)
+ // Destroy Task_ShowMons, if running
+ if (gTasks[taskId].tTaskId_ShowMons != 0)
{
- DestroyTask(gTasks[taskIdA].data[TDA_TASK_D_ID]);
- gTasks[taskIdA].data[TDA_TASK_D_ID] = 0;
+ DestroyTask(gTasks[taskId].tTaskId_ShowMons);
+ gTasks[taskId].tTaskId_ShowMons = 0;
}
- gUnknown_0203BD28 = 1;
+ gIntroCredits_MovingSceneryState = INTROCRED_SCENERY_DESTROY;
}
-static void LoadTheEndScreen(u16 arg0, u16 arg1, u16 arg2)
+static void LoadTheEndScreen(u16 arg0, u16 arg1, u16 palOffset)
{
u16 baseTile;
u16 i;
- LZ77UnCompVram(gCreditsCopyrightEnd_Gfx, (void *)(VRAM + arg0));
- LoadPalette(gIntroCopyright_Pal, arg2, sizeof(gIntroCopyright_Pal));
+ LZ77UnCompVram(sCreditsCopyrightEnd_Gfx, (void *)(VRAM + arg0));
+ LoadPalette(gIntroCopyright_Pal, palOffset, sizeof(gIntroCopyright_Pal));
- baseTile = (arg2 / 16) << 12;
+ baseTile = (palOffset / 16) << 12;
for (i = 0; i < 32 * 32; i++)
((u16 *) (VRAM + arg1))[i] = baseTile + 1;
}
-static u16 sub_8176D78(u8 arg0)
+static u16 GetLetterMapTile(u8 baseTiles)
{
- u16 out = (arg0 & 0x3F) + 80;
+ u16 out = (baseTiles & 0x3F) + 80;
- if (arg0 == 0xFF)
+ if (baseTiles == 0xFF)
return 1;
- if (arg0 & (1 << 7))
+ if (baseTiles & (1 << 7))
out |= 1 << 11;
- if (arg0 & (1 << 6))
+ if (baseTiles & (1 << 6))
out |= 1 << 10;
return out;
}
-static void sub_8176DBC(const u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palette)
+static void DrawLetterMapTiles(const u8 baseTiles[], u8 baseX, u8 baseY, u16 offset, u16 palette)
{
u8 y, x;
const u16 tileOffset = (palette / 16) << 12;
@@ -2073,43 +1322,45 @@ static void sub_8176DBC(const u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palet
for (y = 0; y < 5; y++)
{
for (x = 0; x < 3; x++)
- ((u16 *) (VRAM + arg3 + (baseY + y) * 64))[baseX + x] = tileOffset + sub_8176D78(arg0[y * 3 + x]);
+ ((u16 *) (VRAM + offset + (baseY + y) * 64))[baseX + x] = tileOffset + GetLetterMapTile(baseTiles[y * 3 + x]);
}
}
-static void sub_8176E40(u16 arg0, u16 palette)
+static void DrawTheEnd(u16 offset, u16 palette)
{
u16 pos;
u16 baseTile = (palette / 16) << 12;
for (pos = 0; pos < 32 * 32; pos++)
- ((u16 *) (VRAM + arg0))[pos] = baseTile + 1;
-
- sub_8176DBC(sTheEnd_LetterTMap, 3, 7, arg0, palette);
- sub_8176DBC(sTheEnd_LetterHMap, 7, 7, arg0, palette);
- sub_8176DBC(sTheEnd_LetterEMap, 11, 7, arg0, palette);
- sub_8176DBC(sTheEnd_LetterEMap, 16, 7, arg0, palette);
- sub_8176DBC(sTheEnd_LetterNMap, 20, 7, arg0, palette);
- sub_8176DBC(sTheEnd_LetterDMap, 24, 7, arg0, palette);
+ ((u16 *) (VRAM + offset))[pos] = baseTile + 1;
+
+ DrawLetterMapTiles(sTheEnd_LetterMap_T, 3, 7, offset, palette);
+ DrawLetterMapTiles(sTheEnd_LetterMap_H, 7, 7, offset, palette);
+ DrawLetterMapTiles(sTheEnd_LetterMap_E, 11, 7, offset, palette);
+ DrawLetterMapTiles(sTheEnd_LetterMap_E, 16, 7, offset, palette);
+ DrawLetterMapTiles(sTheEnd_LetterMap_N, 20, 7, offset, palette);
+ DrawLetterMapTiles(sTheEnd_LetterMap_D, 24, 7, offset, palette);
}
-static void sub_8176EE8(struct Sprite *sprite)
+#define sState data[0]
+
+static void SpriteCB_Player(struct Sprite *sprite)
{
- if (gUnknown_0203BD28 != 0)
+ if (gIntroCredits_MovingSceneryState != INTROCRED_SCENERY_NORMAL)
{
DestroySprite(sprite);
return;
}
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
StartSpriteAnimIfDifferent(sprite, 0);
break;
case 1:
StartSpriteAnimIfDifferent(sprite, 1);
- if (sprite->pos1.x > -32)
- sprite->pos1.x -= 1;
+ if (sprite->x > -32)
+ sprite->x--;
break;
case 2:
StartSpriteAnimIfDifferent(sprite, 2);
@@ -2119,104 +1370,107 @@ static void sub_8176EE8(struct Sprite *sprite)
break;
case 4:
StartSpriteAnimIfDifferent(sprite, 0);
- if (sprite->pos1.x > 120)
- sprite->pos1.x -= 1;
+ if (sprite->x > 120)
+ sprite->x--;
break;
case 5:
StartSpriteAnimIfDifferent(sprite, 0);
- if (sprite->pos1.x > -32)
- sprite->pos1.x -= 1;
+ if (sprite->x > -32)
+ sprite->x--;
break;
}
}
-static void sub_8176F90(struct Sprite *sprite)
+static void SpriteCB_Rival(struct Sprite *sprite)
{
- if (gUnknown_0203BD28 != 0)
+ if (gIntroCredits_MovingSceneryState != INTROCRED_SCENERY_NORMAL)
{
DestroySprite(sprite);
return;
}
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
StartSpriteAnimIfDifferent(sprite, 0);
break;
case 1:
- if (sprite->pos1.x > 200)
+ if (sprite->x > 200)
StartSpriteAnimIfDifferent(sprite, 1);
else
StartSpriteAnimIfDifferent(sprite, 2);
- if (sprite->pos1.x > -32)
- sprite->pos1.x -= 2;
- sprite->pos2.y = -gUnknown_0203BD26;
+ if (sprite->x > -32)
+ sprite->x -= 2;
+ sprite->y2 = -gIntroCredits_MovingSceneryVOffset;
break;
case 2:
- sprite->data[7] += 1;
+ sprite->data[7]++;
StartSpriteAnimIfDifferent(sprite, 0);
if ((sprite->data[7] & 3) == 0)
- sprite->pos1.x += 1;
+ sprite->x++;
break;
case 3:
StartSpriteAnimIfDifferent(sprite, 0);
- if (sprite->pos1.x > -32)
- sprite->pos1.x -= 1;
+ if (sprite->x > -32)
+ sprite->x--;
break;
}
}
-static void sub_8177050(struct Sprite *sprite)
+#define sPosition data[1]
+#define sSpriteId data[6]
+
+static void SpriteCB_CreditsMon(struct Sprite *sprite)
{
- if (gUnknown_0203BD28)
+ if (gIntroCredits_MovingSceneryState != INTROCRED_SCENERY_NORMAL)
{
- FreeAndDestroyMonPicSprite(sprite->data[6]);
+ FreeAndDestroyMonPicSprite(sprite->sSpriteId);
return;
}
- sprite->data[7] += 1;
- switch (sprite->data[0])
+ sprite->data[7]++;
+ switch (sprite->sState)
{
case 0:
default:
sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL;
- sprite->oam.matrixNum = sprite->data[1];
+ sprite->oam.matrixNum = sprite->sPosition;
sprite->data[2] = 16;
- SetOamMatrix(sprite->data[1], 0x10000 / sprite->data[2], 0, 0, 0x10000 / sprite->data[2]);
+ SetOamMatrix(sprite->sPosition, 0x10000 / sprite->data[2], 0, 0, 0x10000 / sprite->data[2]);
sprite->invisible = FALSE;
- sprite->data[0] = 1;
+ sprite->sState = 1;
break;
case 1:
if (sprite->data[2] < 256)
{
sprite->data[2] += 8;
- SetOamMatrix(sprite->data[1], 0x10000 / sprite->data[2], 0, 0, 0x10000 / sprite->data[2]);
+ SetOamMatrix(sprite->sPosition, 0x10000 / sprite->data[2], 0, 0, 0x10000 / sprite->data[2]);
}
else
{
- sprite->data[0] += 1;
+ sprite->sState++;
}
- switch (sprite->data[1])
+ switch (sprite->sPosition)
{
- case 1:
+ case POS_LEFT + 1:
if ((sprite->data[7] & 3) == 0)
- sprite->pos1.y += 1;
- sprite->pos1.x -= 2;
+ sprite->y++;
+ sprite->x -= 2;
break;
- case 2:
+ case POS_CENTER + 1:
break;
- case 3:
+ case POS_RIGHT + 1:
if ((sprite->data[7] & 3) == 0)
- sprite->pos1.y += 1;
- sprite->pos1.x += 2;
+ sprite->y++;
+ sprite->x += 2;
break;
}
break;
case 2:
if (sprite->data[3] != 0)
{
- sprite->data[3] -= 1;
+ sprite->data[3]--;
}
else
{
@@ -2224,7 +1478,7 @@ static void sub_8177050(struct Sprite *sprite)
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
sprite->oam.objMode = ST_OAM_OBJ_BLEND;
sprite->data[3] = 16;
- sprite->data[0] += 1;
+ sprite->sState++;
}
break;
case 3:
@@ -2232,7 +1486,7 @@ static void sub_8177050(struct Sprite *sprite)
{
int data3;
- sprite->data[3] -= 1;
+ sprite->data[3]--;
data3 = 16 - sprite->data[3];
SetGpuReg(REG_OFFSET_BLDALPHA, (data3 << 8) + sprite->data[3]);
@@ -2240,11 +1494,11 @@ static void sub_8177050(struct Sprite *sprite)
else
{
sprite->invisible = TRUE;
- sprite->data[0] = 9;
+ sprite->sState = 9;
}
break;
case 9:
- sprite->data[0] += 1;
+ sprite->sState++;
break;
case 10:
SetGpuReg(REG_OFFSET_BLDCNT, 0);
@@ -2254,40 +1508,44 @@ static void sub_8177050(struct Sprite *sprite)
}
}
-static u8 MakeMonSprite(u16 nationalDexNum, s16 x, s16 y, u16 position)
+#define sMonSpriteId data[0]
+
+static u8 CreateCreditsMonSprite(u16 nationalDexNum, s16 x, s16 y, u16 position)
{
- u8 spriteId;
- u8 spriteId2;
+ u8 monSpriteId;
+ u8 bgSpriteId;
- spriteId = CreateMonSpriteFromNationalDexNumber(nationalDexNum, x, y, position);
- gSprites[spriteId].oam.priority = 1;
- gSprites[spriteId].data[1] = position + 1;
- gSprites[spriteId].invisible = TRUE;
- gSprites[spriteId].callback = sub_8177050;
- gSprites[spriteId].data[6] = spriteId;
+ monSpriteId = CreateMonSpriteFromNationalDexNumber(nationalDexNum, x, y, position);
+ gSprites[monSpriteId].oam.priority = 1;
+ gSprites[monSpriteId].sPosition = position + 1;
+ gSprites[monSpriteId].invisible = TRUE;
+ gSprites[monSpriteId].callback = SpriteCB_CreditsMon;
+ gSprites[monSpriteId].sSpriteId = monSpriteId;
- spriteId2 = CreateSprite(&gUnknown_085E7068, gSprites[spriteId].pos1.x, gSprites[spriteId].pos1.y, 1);
- gSprites[spriteId2].data[0] = spriteId;
+ bgSpriteId = CreateSprite(&sSpriteTemplate_CreditsMonBg, gSprites[monSpriteId].x, gSprites[monSpriteId].y, 1);
+ gSprites[bgSpriteId].sMonSpriteId = monSpriteId;
- StartSpriteAnimIfDifferent(&gSprites[spriteId2], position);
+ StartSpriteAnimIfDifferent(&gSprites[bgSpriteId], position);
- return spriteId;
+ return monSpriteId;
}
-static void sub_81772B8(struct Sprite *sprite)
+static void SpriteCB_CreditsMonBg(struct Sprite *sprite)
{
- if (gSprites[sprite->data[0]].data[0] == 10 || gUnknown_0203BD28)
+ if (gSprites[sprite->sMonSpriteId].data[0] == 10
+ || gIntroCredits_MovingSceneryState != INTROCRED_SCENERY_NORMAL)
{
DestroySprite(sprite);
return;
}
- sprite->invisible = gSprites[sprite->data[0]].invisible;
- sprite->oam.objMode = gSprites[sprite->data[0]].oam.objMode;
- sprite->oam.affineMode = gSprites[sprite->data[0]].oam.affineMode;
- sprite->oam.matrixNum = gSprites[sprite->data[0]].oam.matrixNum;
- sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
- sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
+ // Copy sprite data from the associated Pokémon
+ sprite->invisible = gSprites[sprite->sMonSpriteId].invisible;
+ sprite->oam.objMode = gSprites[sprite->sMonSpriteId].oam.objMode;
+ sprite->oam.affineMode = gSprites[sprite->sMonSpriteId].oam.affineMode;
+ sprite->oam.matrixNum = gSprites[sprite->sMonSpriteId].oam.matrixNum;
+ sprite->x = gSprites[sprite->sMonSpriteId].x;
+ sprite->y = gSprites[sprite->sMonSpriteId].y;
}
static void DeterminePokemonToShow(void)
@@ -2310,7 +1568,7 @@ static void DeterminePokemonToShow(void)
// Fill the rest of the array with zeroes
for (dexNum = j; dexNum < NATIONAL_DEX_COUNT; dexNum++)
- sCreditsData->caughtMonIds[dexNum] = 0;
+ sCreditsData->caughtMonIds[dexNum] = NATIONAL_DEX_NONE;
// Cap the number of pokemon we care about to NUM_MON_SLIDES, the max we show in the credits scene (-1 for the starter)
sCreditsData->numCaughtMon = j;
@@ -2352,7 +1610,7 @@ static void DeterminePokemonToShow(void)
page = 0;
}
// Ensure the last pokemon is our starter
- sCreditsData->monToShow[NUM_MON_SLIDES-1] = starter;
+ sCreditsData->monToShow[NUM_MON_SLIDES - 1] = starter;
}
else
{
@@ -2363,12 +1621,12 @@ static void DeterminePokemonToShow(void)
if (dexNum < sCreditsData->numMonToShow - 1)
{
sCreditsData->monToShow[dexNum] = sCreditsData->monToShow[NUM_MON_SLIDES-1];
- sCreditsData->monToShow[NUM_MON_SLIDES-1] = starter;
+ sCreditsData->monToShow[NUM_MON_SLIDES - 1] = starter;
}
else
{
// Ensure the last pokemon is our starter
- sCreditsData->monToShow[NUM_MON_SLIDES-1] = starter;
+ sCreditsData->monToShow[NUM_MON_SLIDES - 1] = starter;
}
}
sCreditsData->numMonToShow = NUM_MON_SLIDES;
diff --git a/src/data.c b/src/data.c
index 6a4295440..5856d17b8 100644
--- a/src/data.c
+++ b/src/data.c
@@ -12,36 +12,38 @@ const u16 gMinigameDigits_Pal[] = INCBIN_U16("graphics/link/minigame_digits.gbap
const u32 gMinigameDigits_Gfx[] = INCBIN_U32("graphics/link/minigame_digits.4bpp.lz");
static const u32 sMinigameDigitsThin_Gfx[] = INCBIN_U32("graphics/link/minigame_digits2.4bpp.lz"); // Unused
+#define BATTLER_OFFSET(i) (gHeap + 0x8000 + MON_PIC_SIZE * (i))
+
const struct SpriteFrameImage gBattlerPicTable_PlayerLeft[] =
{
- gHeap + 0x8000, 0x800,
- gHeap + 0x8800, 0x800,
- gHeap + 0x9000, 0x800,
- gHeap + 0x9800, 0x800,
+ BATTLER_OFFSET(0), MON_PIC_SIZE,
+ BATTLER_OFFSET(1), MON_PIC_SIZE,
+ BATTLER_OFFSET(2), MON_PIC_SIZE,
+ BATTLER_OFFSET(3), MON_PIC_SIZE,
};
const struct SpriteFrameImage gBattlerPicTable_OpponentLeft[] =
{
- gHeap + 0xA000, 0x800,
- gHeap + 0xA800, 0x800,
- gHeap + 0xB000, 0x800,
- gHeap + 0xB800, 0x800,
+ BATTLER_OFFSET(4), MON_PIC_SIZE,
+ BATTLER_OFFSET(5), MON_PIC_SIZE,
+ BATTLER_OFFSET(6), MON_PIC_SIZE,
+ BATTLER_OFFSET(7), MON_PIC_SIZE,
};
const struct SpriteFrameImage gBattlerPicTable_PlayerRight[] =
{
- gHeap + 0xC000, 0x800,
- gHeap + 0xC800, 0x800,
- gHeap + 0xD000, 0x800,
- gHeap + 0xD800, 0x800,
+ BATTLER_OFFSET(8), MON_PIC_SIZE,
+ BATTLER_OFFSET(9), MON_PIC_SIZE,
+ BATTLER_OFFSET(10), MON_PIC_SIZE,
+ BATTLER_OFFSET(11), MON_PIC_SIZE,
};
const struct SpriteFrameImage gBattlerPicTable_OpponentRight[] =
{
- gHeap + 0xE000, 0x800,
- gHeap + 0xE800, 0x800,
- gHeap + 0xF000, 0x800,
- gHeap + 0xF800, 0x800,
+ BATTLER_OFFSET(12), MON_PIC_SIZE,
+ BATTLER_OFFSET(13), MON_PIC_SIZE,
+ BATTLER_OFFSET(14), MON_PIC_SIZE,
+ BATTLER_OFFSET(15), MON_PIC_SIZE,
};
const struct SpriteFrameImage gTrainerBackPicTable_Brendan[] =
@@ -122,175 +124,181 @@ static const union AnimCmd sAnim_GeneralFrame3[] =
ANIMCMD_END,
};
-static const union AffineAnimCmd gUnknown_082FF548[] =
+// Many of these affine anims seem to go unused, and
+// instead SetSpriteRotScale is used to manipulate
+// the battler sprites directly (for instance, in AnimTask_SwitchOutShrinkMon).
+// Those with explicit indexes are referenced elsewhere.
+
+static const union AffineAnimCmd sAffineAnim_Battler_Normal[] =
{
- AFFINEANIMCMD_FRAME(0x0100, 0x0100, 0x00, 0x00),
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd gUnknown_082FF558[] =
+static const union AffineAnimCmd sAffineAnim_Battler_Flipped[] =
{
- AFFINEANIMCMD_FRAME(0xff00, 0x0100, 0x00, 0x00),
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd gUnknown_082FF568[] =
+static const union AffineAnimCmd sAffineAnim_Battler_Emerge[] =
{
- AFFINEANIMCMD_FRAME(0x0028, 0x0028, 0x00, 0x00),
- AFFINEANIMCMD_FRAME(0x0012, 0x0012, 0x00, 0x0c),
+ AFFINEANIMCMD_FRAME(0x28, 0x28, 0, 0),
+ AFFINEANIMCMD_FRAME(0x12, 0x12, 0, 12),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd gUnknown_082FF580[] =
+static const union AffineAnimCmd sAffineAnim_Battler_Return[] =
{
- AFFINEANIMCMD_FRAME(0xfffe, 0xfffe, 0x00, 0x12),
- AFFINEANIMCMD_FRAME(0xfff0, 0xfff0, 0x00, 0x0f),
+ AFFINEANIMCMD_FRAME( -0x2, -0x2, 0, 18),
+ AFFINEANIMCMD_FRAME(-0x10, -0x10, 0, 15),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd gUnknown_082FF598[] =
+static const union AffineAnimCmd sAffineAnim_Battler_HorizontalSquishLoop[] =
{
- AFFINEANIMCMD_FRAME(0x00a0, 0x0100, 0x00, 0x00),
- AFFINEANIMCMD_FRAME(0x0004, 0x0000, 0x00, 0x08),
- AFFINEANIMCMD_FRAME(0xfffc, 0x0000, 0x00, 0x08),
+ AFFINEANIMCMD_FRAME(0xA0, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME( 0x4, 0x0, 0, 8),
+ AFFINEANIMCMD_FRAME(-0x4, 0x0, 0, 8),
AFFINEANIMCMD_JUMP(1),
};
-static const union AffineAnimCmd gUnknown_082FF5B8[] =
+static const union AffineAnimCmd sAffineAnim_Battler_Grow[] =
{
- AFFINEANIMCMD_FRAME(0x0002, 0x0002, 0x00, 0x14),
+ AFFINEANIMCMD_FRAME(0x2, 0x2, 0, 20),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd gUnknown_082FF5C8[] =
+static const union AffineAnimCmd sAffineAnim_Battler_Shrink[] =
{
- AFFINEANIMCMD_FRAME(0xfffe, 0xfffe, 0x00, 0x14),
+ AFFINEANIMCMD_FRAME(-0x2, -0x2, 0, 20),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd gUnknown_082FF5D8[] =
+static const union AffineAnimCmd sAffineAnim_Battler_BigToSmall[] =
{
- AFFINEANIMCMD_FRAME(0x0100, 0x0100, 0x00, 0000),
- AFFINEANIMCMD_FRAME(0xfff0, 0xfff0, 0x00, 0x09),
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(-0x10, -0x10, 0, 9),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd gUnknown_082FF5F0[] =
+static const union AffineAnimCmd sAffineAnim_Battler_GrowLarge[] =
{
- AFFINEANIMCMD_FRAME(0x0004, 0x0004, 0x00, 0x3f),
+ AFFINEANIMCMD_FRAME(0x4, 0x4, 0, 63),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd gUnknown_082FF600[] =
+static const union AffineAnimCmd sAffineAnim_Battler_TipRight[] =
{
- AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0xfd, 0x05),
- AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0x03, 0x05),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -3, 5),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 3, 5),
AFFINEANIMCMD_END,
};
const union AffineAnimCmd *const gAffineAnims_BattleSpritePlayerSide[] =
{
- gUnknown_082FF548,
- gUnknown_082FF568,
- gUnknown_082FF580,
- gUnknown_082FF598,
- gUnknown_082FF5B8,
- gUnknown_082FF5C8,
- gUnknown_082FF5F0,
- gUnknown_082FF600,
- gUnknown_082FF5D8,
+ [BATTLER_AFFINE_NORMAL] = sAffineAnim_Battler_Normal,
+ [BATTLER_AFFINE_EMERGE] = sAffineAnim_Battler_Emerge,
+ [BATTLER_AFFINE_RETURN] = sAffineAnim_Battler_Return,
+ sAffineAnim_Battler_HorizontalSquishLoop,
+ sAffineAnim_Battler_Grow,
+ sAffineAnim_Battler_Shrink,
+ sAffineAnim_Battler_GrowLarge,
+ sAffineAnim_Battler_TipRight,
+ sAffineAnim_Battler_BigToSmall,
};
-static const union AffineAnimCmd gUnknown_082FF63C[] =
+static const union AffineAnimCmd sAffineAnim_Battler_SpinShrink[] =
{
- AFFINEANIMCMD_FRAME(0xfffc, 0xfffc, 0x04, 0x3f),
+ AFFINEANIMCMD_FRAME(-0x4, -0x4, 4, 63),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd gUnknown_082FF64C[] =
+static const union AffineAnimCmd sAffineAnim_Battler_TipLeft[] =
{
- AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0x03, 0x05),
- AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0xfd, 0x05),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 3, 5),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -3, 5),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd gUnknown_082FF664[] =
+static const union AffineAnimCmd sAffineAnim_Battler_RotateUpAndBack[] =
{
- AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0xfb, 0x14),
- AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0x00, 0x14),
- AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0x05, 0x14),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -5, 20),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 20),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 5, 20),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd gUnknown_082FF684[] =
+static const union AffineAnimCmd sAffineAnim_Battler_Spin[] =
{
- AFFINEANIMCMD_FRAME(0x0000, 0x0000, 0x09, 0x6e),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 9, 110),
AFFINEANIMCMD_END,
};
const union AffineAnimCmd *const gAffineAnims_BattleSpriteOpponentSide[] =
{
- gUnknown_082FF548,
- gUnknown_082FF568,
- gUnknown_082FF580,
- gUnknown_082FF598,
- gUnknown_082FF5B8,
- gUnknown_082FF5C8,
- gUnknown_082FF63C,
- gUnknown_082FF64C,
- gUnknown_082FF664,
- gUnknown_082FF5D8,
- gUnknown_082FF684,
+ [BATTLER_AFFINE_NORMAL] = sAffineAnim_Battler_Normal,
+ [BATTLER_AFFINE_EMERGE] = sAffineAnim_Battler_Emerge,
+ [BATTLER_AFFINE_RETURN] = sAffineAnim_Battler_Return,
+ sAffineAnim_Battler_HorizontalSquishLoop,
+ sAffineAnim_Battler_Grow,
+ sAffineAnim_Battler_Shrink,
+ sAffineAnim_Battler_SpinShrink,
+ sAffineAnim_Battler_TipLeft,
+ sAffineAnim_Battler_RotateUpAndBack,
+ sAffineAnim_Battler_BigToSmall,
+ sAffineAnim_Battler_Spin,
};
-const union AffineAnimCmd *const gUnknown_082FF6C0[] =
+const union AffineAnimCmd *const gAffineAnims_BattleSpriteContest[] =
{
- gUnknown_082FF558,
- gUnknown_082FF568,
- gUnknown_082FF580,
- gUnknown_082FF598,
- gUnknown_082FF5B8,
- gUnknown_082FF5C8,
- gUnknown_082FF63C,
- gUnknown_082FF64C,
- gUnknown_082FF664,
- gUnknown_082FF5D8,
- gUnknown_082FF684,
+ [BATTLER_AFFINE_NORMAL] = sAffineAnim_Battler_Flipped,
+ [BATTLER_AFFINE_EMERGE] = sAffineAnim_Battler_Emerge,
+ [BATTLER_AFFINE_RETURN] = sAffineAnim_Battler_Return,
+ sAffineAnim_Battler_HorizontalSquishLoop,
+ sAffineAnim_Battler_Grow,
+ sAffineAnim_Battler_Shrink,
+ sAffineAnim_Battler_SpinShrink,
+ sAffineAnim_Battler_TipLeft,
+ sAffineAnim_Battler_RotateUpAndBack,
+ sAffineAnim_Battler_BigToSmall,
+ sAffineAnim_Battler_Spin,
};
-static const union AnimCmd gUnknown_082FF6EC[] =
+
+static const union AnimCmd sAnim_MonPic_0[] =
{
ANIMCMD_FRAME(0, 0),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_082FF6F4[] =
+static const union AnimCmd sAnim_MonPic_1[] =
{
ANIMCMD_FRAME(1, 0),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_082FF6FC[] =
+static const union AnimCmd sAnim_MonPic_2[] =
{
ANIMCMD_FRAME(2, 0),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_082FF704[] =
+static const union AnimCmd sAnim_MonPic_3[] =
{
ANIMCMD_FRAME(3, 0),
ANIMCMD_END,
};
-const union AnimCmd *const gUnknown_082FF70C[] =
+const union AnimCmd *const gAnims_MonPic[] =
{
- gUnknown_082FF6EC,
- gUnknown_082FF6F4,
- gUnknown_082FF6FC,
- gUnknown_082FF704,
+ sAnim_MonPic_0,
+ sAnim_MonPic_1,
+ sAnim_MonPic_2,
+ sAnim_MonPic_3,
};
-#define SPECIES_SPRITE(species, sprite) [SPECIES_##species] = {sprite, 0x800, SPECIES_##species}
+#define SPECIES_SPRITE(species, sprite) [SPECIES_##species] = {sprite, MON_PIC_SIZE, SPECIES_##species}
#define SPECIES_PAL(species, pal) [SPECIES_##species] = {pal, SPECIES_##species}
#define SPECIES_SHINY_PAL(species, pal) [SPECIES_##species] = {pal, SPECIES_##species + SPECIES_SHINY_TAG}
@@ -311,120 +319,7 @@ const union AnimCmd *const gUnknown_082FF70C[] =
#include "data/pokemon_graphics/enemy_mon_elevation.h"
#include "data/pokemon_graphics/front_pic_anims.h"
#include "data/pokemon_graphics/front_pic_table.h"
-
-static const u32 sUnused[] =
-{
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000088, 0x00000888, 0x00000888, 0x00000886,
- 0x00000888, 0x00000886, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000886, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000886, 0x00000886,
- 0x00000888, 0x00000088, 0x00000088, 0x00000088,
- 0x00000088, 0x00000888, 0x00000886, 0x00000888,
- 0x00000888, 0x00000888, 0x00000886, 0x00000886,
- 0x00000888, 0x00000088, 0x00000088, 0x00000088,
- 0x00000088, 0x00000886, 0x00000886, 0x00000088,
- 0x00000886, 0x00000886, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000886, 0x00000888, 0x00000088, 0x00000088,
- 0x00000888, 0x00000888, 0x00000888, 0x00000886,
- 0x00000888, 0x00000888, 0x00000888, 0x00000886,
- 0x00000886, 0x00000886, 0x00000886, 0x00000886,
- 0x00000886, 0x00000886, 0x00000888, 0x00000888,
- 0x00000886, 0x00000886, 0x00000886, 0x00000886,
- 0x00000886, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000886, 0x00000886, 0x00000888,
- 0x00000886, 0x00000886, 0x00000888, 0x00000888,
- 0x00000088, 0x00000088, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000886, 0x00000886, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000088, 0x00000886,
- 0x00000888, 0x00000088, 0x00000088, 0x00000088,
- 0x00000088, 0x00000888, 0x00000886, 0x00000888,
- 0x00000088, 0x00000088, 0x00000886, 0x00000886,
- 0x00000088, 0x00000088, 0x00000888, 0x00000886,
- 0x00000886, 0x00000888, 0x00000888, 0x00000088,
- 0x00000888, 0x00000886, 0x00000886, 0x00000888,
- 0x00000886, 0x00000888, 0x00000888, 0x00000886,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000088, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000088, 0x00000888, 0x00000888, 0x00000886,
- 0x00000886, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000886,
- 0x00000888, 0x00000886, 0x00000088, 0x00000088,
- 0x00000088, 0x00000888, 0x00000088, 0x00000888,
- 0x00000888, 0x00000088, 0x00000088, 0x00000888,
- 0x00000886, 0x00000888, 0x00000886, 0x00000886,
- 0x00000886, 0x00000888, 0x00000888, 0x00000888,
- 0x00000088, 0x00000888, 0x00000888, 0x00000888,
- 0x00000088, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000088, 0x00000088,
- 0x00000886, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000088, 0x00000888,
- 0x00000886, 0x00000888, 0x00000088, 0x00000088,
- 0x00000888, 0x00000888, 0x00000088, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000088,
- 0x00000888, 0x00000888, 0x00000088, 0x00000088,
- 0x00000088, 0x00000888, 0x00000088, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000886, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000886, 0x00000886, 0x00000886,
- 0x00000088, 0x00000088, 0x00000088, 0x00000886,
- 0x00000088, 0x00000886, 0x00000886, 0x00000886,
- 0x00000088, 0x00000886, 0x00000088, 0x00000088,
- 0x00000088, 0x00000088, 0x00000088, 0x00000886,
- 0x00000886, 0x00000886, 0x00000888, 0x00000888,
- 0x00000886, 0x00000886, 0x00000886, 0x00000886,
- 0x00000088, 0x00000088, 0x00000886, 0x00000886,
- 0x00001882, 0x00000088, 0x00000088, 0x00000088,
- 0x00000088, 0x00000886, 0x00000886, 0x00000886,
- 0x00000088, 0x00000088, 0x00000088, 0x00000088,
- 0x00000886, 0x00000088, 0x00000886, 0x00000088,
- 0x00000088, 0x00000088, 0x00000088, 0x00000088,
- 0x00000088, 0x00000088, 0x00000886, 0x00000886,
- 0x00000088, 0x00000088, 0x00000088, 0x00000886,
- 0x00000886, 0x00000088, 0x00000088, 0x00000088,
- 0x00000088, 0x00000088, 0x00000088, 0x00000088,
- 0x00000088, 0x00000088, 0x00000088, 0x00000088,
- 0x00000088, 0x00000088, 0x00000886, 0x00000088,
- 0x00000088, 0x00000886, 0x00000886, 0x00000886,
- 0x00000886, 0x00000886, 0x00000088, 0x00000088,
- 0x00000088, 0x00000088, 0x00000088, 0x00000886,
- 0x00000886, 0x00000886, 0x00000886, 0x00000088,
- 0x00000886, 0x00000088, 0x00000886, 0x00000886,
- 0x00000886, 0x00000088, 0x00000088, 0x00000088,
- 0x00000088, 0x00000088, 0x00000088, 0x00000088,
- 0x00000088, 0x00000088, 0x00000886, 0x00000886,
- 0x00000886, 0x00000888, 0x00000886, 0x00000886,
- 0x00000088, 0x00000088, 0x00000088, 0x00000088,
- 0x00000886, 0x00000886, 0x00000088, 0x00000088,
- 0x00000088, 0x00000088, 0x00000088, 0x00000088,
- 0x00000088, 0x00000088, 0x00000088, 0x00000088,
- 0x00000088, 0x00000088, 0x00000088, 0x00000088,
- 0x00000088, 0x00000088, 0x00000088, 0x00000088,
- 0x00000088, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
- 0x00000888, 0x00000888, 0x00000888, 0x00000888,
-};
+#include "data/pokemon_graphics/unknown_table.h"
#include "data/trainer_parties.h"
#include "data/text/trainer_class_names.h"
diff --git a/src/data/contest_opponents.h b/src/data/contest_opponents.h
index 127457bbe..b5466904b 100644
--- a/src/data/contest_opponents.h
+++ b/src/data/contest_opponents.h
@@ -138,7 +138,7 @@
const struct ContestWinner gDefaultContestWinners[] =
{
- {
+ [CONTEST_WINNER_HALL_1 - 1] = {
.personality = 0,
.trainerId = 0xFFFF,
.species = SPECIES_ELECTRIKE,
@@ -147,7 +147,7 @@ const struct ContestWinner gDefaultContestWinners[] =
.trainerName = _("EZRA"),
.contestRank = CONTEST_RANK_NORMAL
},
- {
+ [CONTEST_WINNER_HALL_2 - 1] = {
.personality = 0,
.trainerId = 0xFFFF,
.species = SPECIES_TROPIUS,
@@ -156,7 +156,7 @@ const struct ContestWinner gDefaultContestWinners[] =
.trainerName = _("ALLAN"),
.contestRank = CONTEST_RANK_HYPER
},
- {
+ [CONTEST_WINNER_HALL_3 - 1] = {
.personality = 0,
.trainerId = 0xFFFF,
.species = SPECIES_XATU,
@@ -165,7 +165,7 @@ const struct ContestWinner gDefaultContestWinners[] =
.trainerName = _("JULIET"),
.contestRank = CONTEST_RANK_NORMAL
},
- {
+ [CONTEST_WINNER_HALL_4 - 1] = {
.personality = 0,
.trainerId = 0xFFFF,
.species = SPECIES_PLUSLE,
@@ -174,7 +174,7 @@ const struct ContestWinner gDefaultContestWinners[] =
.trainerName = _("BAILY"),
.contestRank = CONTEST_RANK_MASTER
},
- {
+ [CONTEST_WINNER_HALL_5 - 1] = {
.personality = 0,
.trainerId = 0xFFFF,
.species = SPECIES_SHUPPET,
@@ -183,7 +183,7 @@ const struct ContestWinner gDefaultContestWinners[] =
.trainerName = _("MELANY"),
.contestRank = CONTEST_RANK_SUPER
},
- {
+ [CONTEST_WINNER_HALL_6 - 1] = {
.personality = 0,
.trainerId = 0xFFFF,
.species = SPECIES_ZANGOOSE,
@@ -192,7 +192,7 @@ const struct ContestWinner gDefaultContestWinners[] =
.trainerName = _("HANA"),
.contestRank = CONTEST_RANK_HYPER
},
- {
+ [CONTEST_WINNER_HALL_UNUSED_1 - 1] = {
.personality = 0,
.trainerId = 0xFFFF,
.species = SPECIES_LOUDRED,
@@ -201,7 +201,7 @@ const struct ContestWinner gDefaultContestWinners[] =
.trainerName = _("BRYANT"),
.contestRank = CONTEST_RANK_HYPER
},
- {
+ [CONTEST_WINNER_HALL_UNUSED_2 - 1] = {
.personality = 0,
.trainerId = 0xFFFF,
.species = SPECIES_DELCATTY,
diff --git a/src/data/credits.h b/src/data/credits.h
new file mode 100644
index 000000000..3ae2b1d3b
--- /dev/null
+++ b/src/data/credits.h
@@ -0,0 +1,787 @@
+enum
+{
+ PAGE_TITLE,
+ PAGE_DIRECTOR,
+ PAGE_ART_DIRECTOR,
+ PAGE_WORLD_DIRECTOR,
+ PAGE_LEAD_PROGRAMMER,
+ PAGE_PROGRAMMERS_1,
+ PAGE_PROGRAMMERS_2,
+ PAGE_PROGRAMMERS_3,
+ PAGE_PROGRAMMERS_4,
+ PAGE_GRAPHIC_DESIGNERS_1,
+ PAGE_GRAPHIC_DESIGNERS_2,
+ PAGE_GRAPHIC_DESIGNERS_3,
+ PAGE_MUSIC_COMPOSITION,
+ PAGE_SOUND_EFFECTS,
+ PAGE_GAME_DESIGNERS_1,
+ PAGE_GAME_DESIGNERS_2,
+ PAGE_GAME_DESIGNERS_3,
+ PAGE_SCENARIO_PLOT,
+ PAGE_SCENARIO,
+ PAGE_SCRIPT_DESIGNERS,
+ PAGE_MAP_DESIGNERS,
+ PAGE_BATTLE_FRONTIER_DATA,
+ PAGE_PARAMETRIC_DESIGNERS,
+ PAGE_POKEDEX_TEXT,
+ PAGE_ENVIRONMENT_AND_TOOL_PROGRAMS_1,
+ PAGE_PKMN_DESIGNERS_1,
+ PAGE_PKMN_DESIGNERS_2,
+ PAGE_PKMN_DESIGNERS_3,
+ PAGE_PKMN_DESIGNERS_4,
+ PAGE_SUPPORT_PROGRAMMERS,
+ PAGE_NCL_PRODUCT_TESTING,
+ PAGE_PACKAGE_AND_MANUAL,
+ PAGE_SPECIAL_THANKS_1,
+ PAGE_SPECIAL_THANKS_2,
+ PAGE_SPECIAL_THANKS_3,
+ PAGE_SPECIAL_THANKS_4,
+ PAGE_INFORMATION_SUPERVISORS,
+ PAGE_ARTWORK_1,
+ PAGE_ARTWORK_2,
+ PAGE_ARTWORK_3,
+ PAGE_COORDINATORS,
+ PAGE_ENGLISH_VERSION,
+ PAGE_TRANSLATOR,
+ PAGE_TEXT_EDITOR,
+ PAGE_NCL_COORDINATOR,
+ PAGE_PROGRAMMERS_5,
+ PAGE_GRAPHIC_DESIGNER,
+ PAGE_ENVIRONMENT_AND_TOOL_PROGRAMS_2,
+ PAGE_NOA_TESTING,
+ PAGE_BRAILLE_CODE_CHECK_1,
+ PAGE_BRAILLE_CODE_CHECK_2,
+ PAGE_SPECIAL_THANKS_5,
+ PAGE_TASK_MANAGERS,
+ PAGE_PRODUCERS,
+ PAGE_EXECUTIVE_DIRECTOR,
+ PAGE_EXECUTIVE_PRODUCERS_1,
+ PAGE_EXECUTIVE_PRODUCERS_2,
+ PAGE_COUNT
+};
+
+#define ENTRIES_PER_PAGE 5
+
+static const u8 sCreditsText_EmptyString[] = _("");
+static const u8 sCreditsText_PkmnEmeraldVersion[] = _("POKéMON EMERALD VERSION");
+static const u8 sCreditsText_Credits[] = _("Credits");
+static const u8 sCreditsText_ExecutiveDirector[] = _("Executive Director");
+static const u8 sCreditsText_Director[] = _("Director");
+static const u8 sCreditsText_ArtDirector[] = _("Art Director");
+static const u8 sCreditsText_BattleDirector[] = _("Battle Director");
+static const u8 sCreditsText_MainProgrammer[] = _("Main Programmer");
+static const u8 sCreditsText_BattleSystemPgrms[] = _("Battle System Programmers");
+static const u8 sCreditsText_FieldSystemPgrms[] = _("Field System Programmer");
+static const u8 sCreditsText_Programmers[] = _("Programmers");
+static const u8 sCreditsText_MainGraphicDesigner[] = _("Main Graphic Designer");
+static const u8 sCreditsText_GraphicDesigners[] = _("Graphic Designers");
+static const u8 sCreditsText_PkmnDesigners[] = _("POKéMON Designers");
+static const u8 sCreditsText_MusicComposition[] = _("Music Composition");
+static const u8 sCreditsText_SoundEffectsAndPkmnVoices[] = _("Sound Effects & POKéMON Voices");
+static const u8 sCreditsText_GameDesigners[] = _("Game Designers");
+static const u8 sCreditsText_ScenarioPlot[] = _("Scenario Plot");
+static const u8 sCreditsText_Scenario[] = _("Scenario");
+static const u8 sCreditsText_ScriptDesigners[] = _("Script Designers");
+static const u8 sCreditsText_MapDesigners[] = _("Map Designers");
+static const u8 sCreditsText_MapDataDesigners[] = _("Map Data Designers");
+static const u8 sCreditsText_ParametricDesigners[] = _("Parametric Designers");
+static const u8 sCreditsText_PokedexText[] = _("POKéDEX Text");
+static const u8 sCreditsText_EnvAndToolPgrms[] = _("Environment & Tool Programmers");
+static const u8 sCreditsText_NCLProductTesting[] = _("NCL Product Testing");
+static const u8 sCreditsText_SpecialThanks[] = _("Special Thanks");
+static const u8 sCreditsText_Coordinators[] = _("Coordinators");
+static const u8 sCreditsText_Producers[] = _("Producers");
+static const u8 sCreditsText_ExecProducers[] = _("Executive Producers");
+static const u8 sCreditsText_InfoSupervisors[] = _("Information Supervisors");
+static const u8 sCreditsText_TaskManagers[] = _("Task Managers");
+static const u8 sCreditsText_BrailleCodeCheck[] = _("Braille Code Check");
+static const u8 sCreditsText_WorldDirector[] = _("World Director");
+static const u8 sCreditsText_BattleFrontierData[] = _("Battle Frontier Data");
+static const u8 sCreditsText_SupportProgrammers[] = _("Support Programmers");
+static const u8 sCreditsText_Artwork[] = _("Artwork");
+static const u8 sCreditsText_LeadProgrammer[] = _("Lead Programmer");
+static const u8 sCreditsText_LeadGraphicArtist[] = _("Lead Graphic Artist");
+static const u8 sCreditsText_SatoshiTajiri[] = _("Satoshi Tajiri");
+static const u8 sCreditsText_JunichiMasuda[] = _("Junichi Masuda");
+static const u8 sCreditsText_KenSugimori[] = _("Ken Sugimori");
+static const u8 sCreditsText_ShigekiMorimoto[] = _("Shigeki Morimoto");
+static const u8 sCreditsText_TetsuyaWatanabe[] = _("Tetsuya Watanabe");
+static const u8 sCreditsText_HisashiSogabe[] = _("Hisashi Sogabe");
+static const u8 sCreditsText_SosukeTamada[] = _("Sosuke Tamada");
+static const u8 sCreditsText_AkitoMori[] = _("Akito Mori");
+static const u8 sCreditsText_KeitaKagaya[] = _("Keita Kagaya");
+static const u8 sCreditsText_YoshinoriMatsuda[] = _("Yoshinori Matsuda");
+static const u8 sCreditsText_HiroyukiNakamura[] = _("Hiroyuki Nakamura");
+static const u8 sCreditsText_MasaoTaya[] = _("Masao Taya");
+static const u8 sCreditsText_SatoshiNohara[] = _("Satoshi Nohara");
+static const u8 sCreditsText_TomomichiOhta[] = _("Tomomichi Ohta");
+static const u8 sCreditsText_MiyukiIwasawa[] = _("Miyuki Iwasawa");
+static const u8 sCreditsText_TakenoriOhta[] = _("Takenori Ohta");
+static const u8 sCreditsText_HironobuYoshida[] = _("Hironobu Yoshida");
+static const u8 sCreditsText_MotofumiFujiwara[] = _("Motofumi Fujiwara");
+static const u8 sCreditsText_SatoshiOhta[] = _("Satoshi Ohta");
+static const u8 sCreditsText_AsukaIwashita[] = _("Asuka Iwashita");
+static const u8 sCreditsText_AimiTomita[] = _("Aimi Tomita");
+static const u8 sCreditsText_TakaoUnno[] = _("Takao Unno");
+static const u8 sCreditsText_KanakoEo[] = _("Kanako Eo");
+static const u8 sCreditsText_JunOkutani[] = _("Jun Okutani");
+static const u8 sCreditsText_AtsukoNishida[] = _("Atsuko Nishida");
+static const u8 sCreditsText_MuneoSaito[] = _("Muneo Saito");
+static const u8 sCreditsText_RenaYoshikawa[] = _("Rena Yoshikawa");
+static const u8 sCreditsText_GoIchinose[] = _("Go Ichinose");
+static const u8 sCreditsText_MorikazuAoki[] = _("Morikazu Aoki");
+static const u8 sCreditsText_KojiNishino[] = _("Koji Nishino");
+static const u8 sCreditsText_KenjiMatsushima[] = _("Kenji Matsushima");
+static const u8 sCreditsText_TetsujiOhta[] = _("Tetsuji Ohta");
+static const u8 sCreditsText_HitomiSato[] = _("Hitomi Sato");
+static const u8 sCreditsText_TakeshiKawachimaru[] = _("Takeshi Kawachimaru");
+static const u8 sCreditsText_TeruyukiShimoyamada[] = _("Teruyuki Shimoyamada");
+static const u8 sCreditsText_ShigeruOhmori[] = _("Shigeru Ohmori");
+static const u8 sCreditsText_TadashiTakahashi[] = _("Tadashi Takahashi");
+static const u8 sCreditsText_ToshinobuMatsumiya[] = _("Toshinobu Matsumiya");
+static const u8 sCreditsText_AkihitoTomisawa[] = _("Akihito Tomisawa");
+static const u8 sCreditsText_HirokiEnomoto[] = _("Hiroki Enomoto");
+static const u8 sCreditsText_KazuyukiTerada[] = _("Kazuyuki Terada");
+static const u8 sCreditsText_YuriSakurai[] = _("Yuri Sakurai");
+static const u8 sCreditsText_HiromiSagawa[] = _("Hiromi Sagawa");
+static const u8 sCreditsText_KenjiTominaga[] = _("Kenji Tominaga");
+static const u8 sCreditsText_YoshioTajiri[] = _("Yoshio Tajiri");
+static const u8 sCreditsText_TeikoSasaki[] = _("Teiko Sasaki");
+static const u8 sCreditsText_SachikoHamano[] = _("Sachiko Hamano");
+static const u8 sCreditsText_ChieMatsumiya[] = _("Chie Matsumiya");
+static const u8 sCreditsText_AkikoShinozaki[] = _("Akiko Shinozaki");
+static const u8 sCreditsText_AstukoFujii[] = _("Astuko Fujii");
+static const u8 sCreditsText_NozomuSaito[] = _("Nozomu Saito");
+static const u8 sCreditsText_KenkichiToyama[] = _("Kenkichi Toyama");
+static const u8 sCreditsText_SuguruNakatsui[] = _("Suguru Nakatsui");
+static const u8 sCreditsText_YumiFunasaka[] = _("Yumi Funasaka");
+static const u8 sCreditsText_NaokoYanase[] = _("Naoko Yanase");
+static const u8 sCreditsText_NCLSuperMarioClub[] = _("NCL Super Mario Club");
+static const u8 sCreditsText_AtsushiTada[] = _("Atsushi Tada");
+static const u8 sCreditsText_TakahiroOhnishi[] = _("Takahiro Ohnishi");
+static const u8 sCreditsText_NorihideOkamura[] = _("Norihide Okamura");
+static const u8 sCreditsText_HiroNakamura[] = _("Hiro Nakamura");
+static const u8 sCreditsText_HiroyukiUesugi[] = _("Hiroyuki Uesugi");
+static const u8 sCreditsText_TerukiMurakawa[] = _("Teruki Murakawa");
+static const u8 sCreditsText_AkiraKinashi[] = _("Akira Kinashi");
+static const u8 sCreditsText_MichikoTakizawa[] = _("Michiko Takizawa");
+static const u8 sCreditsText_MakikoTakada[] = _("Makiko Takada");
+static const u8 sCreditsText_TakanaoKondo[] = _("Takanao Kondo");
+static const u8 sCreditsText_AiMashima[] = _("Ai Mashima");
+static const u8 sCreditsText_GakujiNomoto[] = _("Gakuji Nomoto");
+static const u8 sCreditsText_TakehiroIzushi[] = _("Takehiro Izushi");
+static const u8 sCreditsText_HitoshiYamagami[] = _("Hitoshi Yamagami");
+static const u8 sCreditsText_KyokoWatanabe[] = _("Kyoko Watanabe");
+static const u8 sCreditsText_TakaoNakano[] = _("Takao Nakano");
+static const u8 sCreditsText_HiroyukiJinnai[] = _("Hiroyuki Jinnai");
+static const u8 sCreditsText_HiroakiTsuru[] = _("Hiroaki Tsuru");
+static const u8 sCreditsText_TsunekazIshihara[] = _("Tsunekaz Ishihara");
+static const u8 sCreditsText_SatoruIwata[] = _("Satoru Iwata");
+static const u8 sCreditsText_KazuyaSuyama[] = _("Kazuya Suyama");
+static const u8 sCreditsText_SatoshiMitsuhara[] = _("Satoshi Mitsuhara");
+static const u8 sCreditsText_JapanBrailleLibrary[] = _("Japan Braille Library");
+static const u8 sCreditsText_TomotakaKomura[] = _("Tomotaka Komura");
+static const u8 sCreditsText_MikikoOhhashi[] = _("Mikiko Ohhashi");
+static const u8 sCreditsText_DaisukeHoshino[] = _("Daisuke Hoshino");
+static const u8 sCreditsText_KenjiroIto[] = _("Kenjiro Ito");
+static const u8 sCreditsText_RuiKawaguchi[] = _("Rui Kawaguchi");
+static const u8 sCreditsText_ShunsukeKohori[] = _("Shunsuke Kohori");
+static const u8 sCreditsText_SachikoNakamichi[] = _("Sachiko Nakamichi");
+static const u8 sCreditsText_FujikoNomura[] = _("Fujiko Nomura");
+static const u8 sCreditsText_KazukiYoshihara[] = _("Kazuki Yoshihara");
+static const u8 sCreditsText_RetsujiNomoto[] = _("Retsuji Nomoto");
+static const u8 sCreditsText_AzusaTajima[] = _("Azusa Tajima");
+static const u8 sCreditsText_ShusakuEgami[] = _("Shusaku Egami");
+static const u8 sCreditsText_PackageAndManual[] = _("Package & Manual Illustration");
+static const u8 sCreditsText_EnglishVersion[] = _("English Version Coordinators");
+static const u8 sCreditsText_Translator[] = _("Translator");
+static const u8 sCreditsText_TextEditor[] = _("Text Editor");
+static const u8 sCreditsText_NCLCoordinator[] = _("NCL Coordinator");
+static const u8 sCreditsText_GraphicDesigner[] = _("Graphic Designer");
+static const u8 sCreditsText_NOAProductTesting[] = _("NOA Product Testing");
+static const u8 sCreditsText_HideyukiNakajima[] = _("Hideyuki Nakajima");
+static const u8 sCreditsText_HidenoriSaeki[] = _("Hidenori Saeki");
+static const u8 sCreditsText_YokoWatanabe[] = _("Yoko Watanabe");
+static const u8 sCreditsText_SakaeKimura[] = _("Sakae Kimura");
+static const u8 sCreditsText_ChiakiShinkai[] = _("Chiaki Shinkai");
+static const u8 sCreditsText_SethMcMahill[] = _("Seth McMahill");
+static const u8 sCreditsText_NobOgasawara[] = _("Nob Ogasawara");
+static const u8 sCreditsText_TeresaLillygren[] = _("Teresa Lillygren");
+static const u8 sCreditsText_KimikoNakamichi[] = _("Kimiko Nakamichi");
+static const u8 sCreditsText_SouichiYamamoto[] = _("Souichi Yamamoto");
+static const u8 sCreditsText_YuichiroIto[] = _("Yuichiro Ito");
+static const u8 sCreditsText_ThomasHertzog[] = _("Thomas Hertzog");
+static const u8 sCreditsText_MikaKurosawa[] = _("Mika Kurosawa");
+static const u8 sCreditsText_NationalFederationBlind[] = _("National Federation of the Blind");
+static const u8 sCreditsText_PatriciaAMaurer[] = _("Patricia A. Maurer");
+static const u8 sCreditsText_EuropeanBlindUnion[] = _("European Blind Union");
+static const u8 sCreditsText_AustralianBrailleAuthority[] = _("Australian Braille Authority");
+static const u8 sCreditsText_RoyalNewZealandFederationBlind[] = _("Royal New Zealand Federation for the Blind");
+static const u8 sCreditsText_MotoyasuTojima[] = _("Motoyasu Tojima");
+static const u8 sCreditsText_NicolaPrattBarlow[] = _("Nicola Pratt-Barlow");
+static const u8 sCreditsText_ShellieDow[] = _("Shellie Dow");
+static const u8 sCreditsText_ErikJohnson[] = _("Erik Johnson");
+static const struct CreditsEntry sCreditsEntry_EmptyString[] = { 0, FALSE, sCreditsText_EmptyString};
+static const struct CreditsEntry sCreditsEntry_PkmnEmeraldVersion[] = { 7, TRUE, sCreditsText_PkmnEmeraldVersion};
+static const struct CreditsEntry sCreditsEntry_Credits[] = {11, TRUE, sCreditsText_Credits};
+static const struct CreditsEntry sCreditsEntry_ExecutiveDirector[] = { 8, TRUE, sCreditsText_ExecutiveDirector};
+static const struct CreditsEntry sCreditsEntry_Director[] = {12, TRUE, sCreditsText_Director};
+static const struct CreditsEntry sCreditsEntry_ArtDirector[] = {10, TRUE, sCreditsText_ArtDirector};
+static const struct CreditsEntry sCreditsEntry_BattleDirector[] = {10, TRUE, sCreditsText_BattleDirector};
+static const struct CreditsEntry sCreditsEntry_MainProgrammer[] = {10, TRUE, sCreditsText_MainProgrammer};
+static const struct CreditsEntry sCreditsEntry_BattleSystemPgrms[] = { 8, TRUE, sCreditsText_BattleSystemPgrms};
+static const struct CreditsEntry sCreditsEntry_FieldSystemPgrms[] = { 7, TRUE, sCreditsText_FieldSystemPgrms};
+static const struct CreditsEntry sCreditsEntry_Programmers[] = {12, TRUE, sCreditsText_Programmers};
+static const struct CreditsEntry sCreditsEntry_MainGraphicDesigner[] = { 7, TRUE, sCreditsText_MainGraphicDesigner};
+static const struct CreditsEntry sCreditsEntry_GraphicDesigners[] = { 9, TRUE, sCreditsText_GraphicDesigners};
+static const struct CreditsEntry sCreditsEntry_PkmnDesigners[] = {10, TRUE, sCreditsText_PkmnDesigners};
+static const struct CreditsEntry sCreditsEntry_MusicComposition[] = {13, TRUE, sCreditsText_MusicComposition};
+static const struct CreditsEntry sCreditsEntry_SoundEffectsAndPkmnVoices[] = { 4, TRUE, sCreditsText_SoundEffectsAndPkmnVoices};
+static const struct CreditsEntry sCreditsEntry_GameDesigners[] = {11, TRUE, sCreditsText_GameDesigners};
+static const struct CreditsEntry sCreditsEntry_ScenarioPlot[] = {11, TRUE, sCreditsText_ScenarioPlot};
+static const struct CreditsEntry sCreditsEntry_Scenario[] = {13, TRUE, sCreditsText_Scenario};
+static const struct CreditsEntry sCreditsEntry_ScriptDesigners[] = {10, TRUE, sCreditsText_ScriptDesigners};
+static const struct CreditsEntry sCreditsEntry_MapDesigners[] = {11, TRUE, sCreditsText_MapDesigners};
+static const struct CreditsEntry sCreditsEntry_MapDataDesigners[] = { 9, TRUE, sCreditsText_MapDataDesigners};
+static const struct CreditsEntry sCreditsEntry_ParametricDesigners[] = { 9, TRUE, sCreditsText_ParametricDesigners};
+static const struct CreditsEntry sCreditsEntry_PokedexText[] = {11, TRUE, sCreditsText_PokedexText};
+static const struct CreditsEntry sCreditsEntry_EnvAndToolPgrms[] = { 6, TRUE, sCreditsText_EnvAndToolPgrms};
+static const struct CreditsEntry sCreditsEntry_NCLProductTesting[] = {11, TRUE, sCreditsText_NCLProductTesting};
+static const struct CreditsEntry sCreditsEntry_SpecialThanks[] = {10, TRUE, sCreditsText_SpecialThanks};
+static const struct CreditsEntry sCreditsEntry_Coordinators[] = {11, TRUE, sCreditsText_Coordinators};
+static const struct CreditsEntry sCreditsEntry_Producers[] = {11, TRUE, sCreditsText_Producers};
+static const struct CreditsEntry sCreditsEntry_ExecProducers[] = { 7, TRUE, sCreditsText_ExecProducers};
+static const struct CreditsEntry sCreditsEntry_InfoSupervisors[] = {10, TRUE, sCreditsText_InfoSupervisors};
+static const struct CreditsEntry sCreditsEntry_TaskManagers[] = { 8, TRUE, sCreditsText_TaskManagers};
+static const struct CreditsEntry sCreditsEntry_BrailleCodeCheck[] = {10, TRUE, sCreditsText_BrailleCodeCheck};
+static const struct CreditsEntry sCreditsEntry_WorldDirector[] = {10, TRUE, sCreditsText_WorldDirector};
+static const struct CreditsEntry sCreditsEntry_BattleFrontierData[] = { 8, TRUE, sCreditsText_BattleFrontierData};
+static const struct CreditsEntry sCreditsEntry_SupportProgrammers[] = {10, TRUE, sCreditsText_SupportProgrammers};
+static const struct CreditsEntry sCreditsEntry_Artwork[] = {12, TRUE, sCreditsText_Artwork};
+static const struct CreditsEntry sCreditsEntry_LeadProgrammer[] = {10, TRUE, sCreditsText_LeadProgrammer};
+static const struct CreditsEntry sCreditsEntry_LeadGraphicArtist[] = { 9, TRUE, sCreditsText_LeadGraphicArtist};
+static const struct CreditsEntry sCreditsEntry_SatoshiTajiri[] = {11, FALSE, sCreditsText_SatoshiTajiri};
+static const struct CreditsEntry sCreditsEntry_JunichiMasuda[] = {11, FALSE, sCreditsText_JunichiMasuda};
+static const struct CreditsEntry sCreditsEntry_KenSugimori[] = {11, FALSE, sCreditsText_KenSugimori};
+static const struct CreditsEntry sCreditsEntry_ShigekiMorimoto[] = {11, FALSE, sCreditsText_ShigekiMorimoto};
+static const struct CreditsEntry sCreditsEntry_TetsuyaWatanabe[] = {11, FALSE, sCreditsText_TetsuyaWatanabe};
+static const struct CreditsEntry sCreditsEntry_HisashiSogabe[] = {11, FALSE, sCreditsText_HisashiSogabe};
+static const struct CreditsEntry sCreditsEntry_SosukeTamada[] = {11, FALSE, sCreditsText_SosukeTamada};
+static const struct CreditsEntry sCreditsEntry_AkitoMori[] = {11, FALSE, sCreditsText_AkitoMori};
+static const struct CreditsEntry sCreditsEntry_KeitaKagaya[] = {11, FALSE, sCreditsText_KeitaKagaya};
+static const struct CreditsEntry sCreditsEntry_YoshinoriMatsuda[] = {11, FALSE, sCreditsText_YoshinoriMatsuda};
+static const struct CreditsEntry sCreditsEntry_HiroyukiNakamura[] = {11, FALSE, sCreditsText_HiroyukiNakamura};
+static const struct CreditsEntry sCreditsEntry_MasaoTaya[] = {11, FALSE, sCreditsText_MasaoTaya};
+static const struct CreditsEntry sCreditsEntry_SatoshiNohara[] = {11, FALSE, sCreditsText_SatoshiNohara};
+static const struct CreditsEntry sCreditsEntry_TomomichiOhta[] = {11, FALSE, sCreditsText_TomomichiOhta};
+static const struct CreditsEntry sCreditsEntry_MiyukiIwasawa[] = {11, FALSE, sCreditsText_MiyukiIwasawa};
+static const struct CreditsEntry sCreditsEntry_TakenoriOhta[] = {11, FALSE, sCreditsText_TakenoriOhta};
+static const struct CreditsEntry sCreditsEntry_HironobuYoshida[] = {11, FALSE, sCreditsText_HironobuYoshida};
+static const struct CreditsEntry sCreditsEntry_MotofumiFujiwara[] = {11, FALSE, sCreditsText_MotofumiFujiwara};
+static const struct CreditsEntry sCreditsEntry_SatoshiOhta[] = {11, FALSE, sCreditsText_SatoshiOhta};
+static const struct CreditsEntry sCreditsEntry_AsukaIwashita[] = {11, FALSE, sCreditsText_AsukaIwashita};
+static const struct CreditsEntry sCreditsEntry_AimiTomita[] = {11, FALSE, sCreditsText_AimiTomita};
+static const struct CreditsEntry sCreditsEntry_TakaoUnno[] = {11, FALSE, sCreditsText_TakaoUnno};
+static const struct CreditsEntry sCreditsEntry_KanakoEo[] = {11, FALSE, sCreditsText_KanakoEo};
+static const struct CreditsEntry sCreditsEntry_JunOkutani[] = {11, FALSE, sCreditsText_JunOkutani};
+static const struct CreditsEntry sCreditsEntry_AtsukoNishida[] = {11, FALSE, sCreditsText_AtsukoNishida};
+static const struct CreditsEntry sCreditsEntry_MuneoSaito[] = {11, FALSE, sCreditsText_MuneoSaito};
+static const struct CreditsEntry sCreditsEntry_RenaYoshikawa[] = {11, FALSE, sCreditsText_RenaYoshikawa};
+static const struct CreditsEntry sCreditsEntry_GoIchinose[] = {11, FALSE, sCreditsText_GoIchinose};
+static const struct CreditsEntry sCreditsEntry_MorikazuAoki[] = {11, FALSE, sCreditsText_MorikazuAoki};
+static const struct CreditsEntry sCreditsEntry_KojiNishino[] = {11, FALSE, sCreditsText_KojiNishino};
+static const struct CreditsEntry sCreditsEntry_KenjiMatsushima[] = {11, FALSE, sCreditsText_KenjiMatsushima};
+static const struct CreditsEntry sCreditsEntry_TetsujiOhta[] = {11, FALSE, sCreditsText_TetsujiOhta};
+static const struct CreditsEntry sCreditsEntry_HitomiSato[] = {11, FALSE, sCreditsText_HitomiSato};
+static const struct CreditsEntry sCreditsEntry_TakeshiKawachimaru[] = {11, FALSE, sCreditsText_TakeshiKawachimaru};
+static const struct CreditsEntry sCreditsEntry_TeruyukiShimoyamada[] = {11, FALSE, sCreditsText_TeruyukiShimoyamada};
+static const struct CreditsEntry sCreditsEntry_ShigeruOhmori[] = {11, FALSE, sCreditsText_ShigeruOhmori};
+static const struct CreditsEntry sCreditsEntry_TadashiTakahashi[] = {11, FALSE, sCreditsText_TadashiTakahashi};
+static const struct CreditsEntry sCreditsEntry_ToshinobuMatsumiya[] = {11, FALSE, sCreditsText_ToshinobuMatsumiya};
+static const struct CreditsEntry sCreditsEntry_AkihitoTomisawa[] = {11, FALSE, sCreditsText_AkihitoTomisawa};
+static const struct CreditsEntry sCreditsEntry_HirokiEnomoto[] = {11, FALSE, sCreditsText_HirokiEnomoto};
+static const struct CreditsEntry sCreditsEntry_KazuyukiTerada[] = {11, FALSE, sCreditsText_KazuyukiTerada};
+static const struct CreditsEntry sCreditsEntry_YuriSakurai[] = {11, FALSE, sCreditsText_YuriSakurai};
+static const struct CreditsEntry sCreditsEntry_HiromiSagawa[] = {11, FALSE, sCreditsText_HiromiSagawa};
+static const struct CreditsEntry sCreditsEntry_KenjiTominaga[] = {11, FALSE, sCreditsText_KenjiTominaga};
+static const struct CreditsEntry sCreditsEntry_YoshioTajiri[] = {11, FALSE, sCreditsText_YoshioTajiri};
+static const struct CreditsEntry sCreditsEntry_TeikoSasaki[] = {11, FALSE, sCreditsText_TeikoSasaki};
+static const struct CreditsEntry sCreditsEntry_SachikoHamano[] = {11, FALSE, sCreditsText_SachikoHamano};
+static const struct CreditsEntry sCreditsEntry_ChieMatsumiya[] = {11, FALSE, sCreditsText_ChieMatsumiya};
+static const struct CreditsEntry sCreditsEntry_AkikoShinozaki[] = {11, FALSE, sCreditsText_AkikoShinozaki};
+static const struct CreditsEntry sCreditsEntry_AstukoFujii[] = {11, FALSE, sCreditsText_AstukoFujii};
+static const struct CreditsEntry sCreditsEntry_NozomuSaito[] = {11, FALSE, sCreditsText_NozomuSaito};
+static const struct CreditsEntry sCreditsEntry_KenkichiToyama[] = {11, FALSE, sCreditsText_KenkichiToyama};
+static const struct CreditsEntry sCreditsEntry_SuguruNakatsui[] = {11, FALSE, sCreditsText_SuguruNakatsui};
+static const struct CreditsEntry sCreditsEntry_YumiFunasaka[] = {11, FALSE, sCreditsText_YumiFunasaka};
+static const struct CreditsEntry sCreditsEntry_NaokoYanase[] = {11, FALSE, sCreditsText_NaokoYanase};
+static const struct CreditsEntry sCreditsEntry_NCLSuperMarioClub[] = {11, FALSE, sCreditsText_NCLSuperMarioClub};
+static const struct CreditsEntry sCreditsEntry_AtsushiTada[] = {11, FALSE, sCreditsText_AtsushiTada};
+static const struct CreditsEntry sCreditsEntry_TakahiroOhnishi[] = {11, FALSE, sCreditsText_TakahiroOhnishi};
+static const struct CreditsEntry sCreditsEntry_NorihideOkamura[] = {11, FALSE, sCreditsText_NorihideOkamura};
+static const struct CreditsEntry sCreditsEntry_HiroNakamura[] = {11, FALSE, sCreditsText_HiroNakamura};
+static const struct CreditsEntry sCreditsEntry_HiroyukiUesugi[] = {11, FALSE, sCreditsText_HiroyukiUesugi};
+static const struct CreditsEntry sCreditsEntry_TerukiMurakawa[] = {11, FALSE, sCreditsText_TerukiMurakawa};
+static const struct CreditsEntry sCreditsEntry_AkiraKinashi[] = {11, FALSE, sCreditsText_AkiraKinashi};
+static const struct CreditsEntry sCreditsEntry_MichikoTakizawa[] = {11, FALSE, sCreditsText_MichikoTakizawa};
+static const struct CreditsEntry sCreditsEntry_MakikoTakada[] = {11, FALSE, sCreditsText_MakikoTakada};
+static const struct CreditsEntry sCreditsEntry_TakanaoKondo[] = {11, FALSE, sCreditsText_TakanaoKondo};
+static const struct CreditsEntry sCreditsEntry_AiMashima[] = {11, FALSE, sCreditsText_AiMashima};
+static const struct CreditsEntry sCreditsEntry_GakujiNomoto[] = {11, FALSE, sCreditsText_GakujiNomoto};
+static const struct CreditsEntry sCreditsEntry_TakehiroIzushi[] = {11, FALSE, sCreditsText_TakehiroIzushi};
+static const struct CreditsEntry sCreditsEntry_HitoshiYamagami[] = {11, FALSE, sCreditsText_HitoshiYamagami};
+static const struct CreditsEntry sCreditsEntry_KyokoWatanabe[] = {11, FALSE, sCreditsText_KyokoWatanabe};
+static const struct CreditsEntry sCreditsEntry_TakaoNakano[] = {11, FALSE, sCreditsText_TakaoNakano};
+static const struct CreditsEntry sCreditsEntry_HiroyukiJinnai[] = {11, FALSE, sCreditsText_HiroyukiJinnai};
+static const struct CreditsEntry sCreditsEntry_HiroakiTsuru[] = {11, FALSE, sCreditsText_HiroakiTsuru};
+static const struct CreditsEntry sCreditsEntry_TsunekazIshihara[] = {11, FALSE, sCreditsText_TsunekazIshihara};
+static const struct CreditsEntry sCreditsEntry_SatoruIwata[] = {11, FALSE, sCreditsText_SatoruIwata};
+static const struct CreditsEntry sCreditsEntry_KazuyaSuyama[] = {11, FALSE, sCreditsText_KazuyaSuyama};
+static const struct CreditsEntry sCreditsEntry_SatoshiMitsuhara[] = {11, FALSE, sCreditsText_SatoshiMitsuhara};
+static const struct CreditsEntry sCreditsEntry_JapanBrailleLibrary[] = { 9, FALSE, sCreditsText_JapanBrailleLibrary};
+static const struct CreditsEntry sCreditsEntry_TomotakaKomura[] = {11, FALSE, sCreditsText_TomotakaKomura};
+static const struct CreditsEntry sCreditsEntry_MikikoOhhashi[] = {11, FALSE, sCreditsText_MikikoOhhashi};
+static const struct CreditsEntry sCreditsEntry_DaisukeHoshino[] = {11, FALSE, sCreditsText_DaisukeHoshino};
+static const struct CreditsEntry sCreditsEntry_KenjiroIto[] = {11, FALSE, sCreditsText_KenjiroIto};
+static const struct CreditsEntry sCreditsEntry_RuiKawaguchi[] = {11, FALSE, sCreditsText_RuiKawaguchi};
+static const struct CreditsEntry sCreditsEntry_ShunsukeKohori[] = {11, FALSE, sCreditsText_ShunsukeKohori};
+static const struct CreditsEntry sCreditsEntry_SachikoNakamichi[] = {11, FALSE, sCreditsText_SachikoNakamichi};
+static const struct CreditsEntry sCreditsEntry_FujikoNomura[] = {11, FALSE, sCreditsText_FujikoNomura};
+static const struct CreditsEntry sCreditsEntry_KazukiYoshihara[] = {11, FALSE, sCreditsText_KazukiYoshihara};
+static const struct CreditsEntry sCreditsEntry_RetsujiNomoto[] = {11, FALSE, sCreditsText_RetsujiNomoto};
+static const struct CreditsEntry sCreditsEntry_AzusaTajima[] = {11, FALSE, sCreditsText_AzusaTajima};
+static const struct CreditsEntry sCreditsEntry_ShusakuEgami[] = {11, FALSE, sCreditsText_ShusakuEgami};
+static const struct CreditsEntry sCreditsEntry_PackageAndManual[] = { 0, TRUE, sCreditsText_PackageAndManual};
+static const struct CreditsEntry sCreditsEntry_EnglishVersion[] = { 0, TRUE, sCreditsText_EnglishVersion};
+static const struct CreditsEntry sCreditsEntry_Translator[] = { 0, TRUE, sCreditsText_Translator};
+static const struct CreditsEntry sCreditsEntry_TextEditor[] = { 0, TRUE, sCreditsText_TextEditor};
+static const struct CreditsEntry sCreditsEntry_NCLCoordinator[] = { 0, TRUE, sCreditsText_NCLCoordinator};
+static const struct CreditsEntry sCreditsEntry_GraphicDesigner[] = { 0, TRUE, sCreditsText_GraphicDesigner};
+static const struct CreditsEntry sCreditsEntry_NOAProductTesting[] = { 0, TRUE, sCreditsText_NOAProductTesting};
+static const struct CreditsEntry sCreditsEntry_HideyukiNakajima[] = { 0, FALSE, sCreditsText_HideyukiNakajima};
+static const struct CreditsEntry sCreditsEntry_HidenoriSaeki[] = { 0, FALSE, sCreditsText_HidenoriSaeki};
+static const struct CreditsEntry sCreditsEntry_YokoWatanabe[] = { 0, FALSE, sCreditsText_YokoWatanabe};
+static const struct CreditsEntry sCreditsEntry_SakaeKimura[] = { 0, FALSE, sCreditsText_SakaeKimura};
+static const struct CreditsEntry sCreditsEntry_ChiakiShinkai[] = { 0, FALSE, sCreditsText_ChiakiShinkai};
+static const struct CreditsEntry sCreditsEntry_SethMcMahill[] = { 0, FALSE, sCreditsText_SethMcMahill};
+static const struct CreditsEntry sCreditsEntry_NobOgasawara[] = { 0, FALSE, sCreditsText_NobOgasawara};
+static const struct CreditsEntry sCreditsEntry_TeresaLillygren[] = { 0, FALSE, sCreditsText_TeresaLillygren};
+static const struct CreditsEntry sCreditsEntry_KimikoNakamichi[] = { 0, FALSE, sCreditsText_KimikoNakamichi};
+static const struct CreditsEntry sCreditsEntry_SouichiYamamoto[] = { 0, FALSE, sCreditsText_SouichiYamamoto};
+static const struct CreditsEntry sCreditsEntry_YuichiroIto[] = { 0, FALSE, sCreditsText_YuichiroIto};
+static const struct CreditsEntry sCreditsEntry_ThomasHertzog[] = { 0, FALSE, sCreditsText_ThomasHertzog};
+static const struct CreditsEntry sCreditsEntry_MikaKurosawa[] = { 0, FALSE, sCreditsText_MikaKurosawa};
+static const struct CreditsEntry sCreditsEntry_NationalFederationBlind[] = { 0, FALSE, sCreditsText_NationalFederationBlind};
+static const struct CreditsEntry sCreditsEntry_PatriciaAMaurer[] = { 0, FALSE, sCreditsText_PatriciaAMaurer};
+static const struct CreditsEntry sCreditsEntry_EuropeanBlindUnion[] = { 0, FALSE, sCreditsText_EuropeanBlindUnion};
+static const struct CreditsEntry sCreditsEntry_AustralianBrailleAuthority[] = { 0, FALSE, sCreditsText_AustralianBrailleAuthority};
+static const struct CreditsEntry sCreditsEntry_RoyalNewZealandFederationBlind[] = { 0, FALSE, sCreditsText_RoyalNewZealandFederationBlind};
+static const struct CreditsEntry sCreditsEntry_MotoyasuTojima[] = { 0, FALSE, sCreditsText_MotoyasuTojima};
+static const struct CreditsEntry sCreditsEntry_NicolaPrattBarlow[] = { 0, FALSE, sCreditsText_NicolaPrattBarlow};
+static const struct CreditsEntry sCreditsEntry_ShellieDow[] = { 0, FALSE, sCreditsText_ShellieDow};
+static const struct CreditsEntry sCreditsEntry_ErikJohnson[] = { 0, FALSE, sCreditsText_ErikJohnson};
+
+#define _ sCreditsEntry_EmptyString
+static const struct CreditsEntry *const sCreditsEntryPointerTable[PAGE_COUNT][ENTRIES_PER_PAGE] =
+{
+ [PAGE_TITLE] = {
+ _,
+ sCreditsEntry_PkmnEmeraldVersion,
+ sCreditsEntry_Credits,
+ _,
+ _
+ },
+ [PAGE_DIRECTOR] = {
+ _,
+ sCreditsEntry_Director,
+ sCreditsEntry_ShigekiMorimoto,
+ _,
+ _,
+ },
+ [PAGE_ART_DIRECTOR] = {
+ _,
+ sCreditsEntry_ArtDirector,
+ sCreditsEntry_KenSugimori,
+ _,
+ _,
+ },
+ [PAGE_WORLD_DIRECTOR] = {
+ _,
+ sCreditsEntry_WorldDirector,
+ sCreditsEntry_JunichiMasuda,
+ _,
+ _,
+ },
+ [PAGE_LEAD_PROGRAMMER] = {
+ sCreditsEntry_LeadProgrammer,
+ sCreditsEntry_HisashiSogabe,
+ sCreditsEntry_LeadGraphicArtist,
+ sCreditsEntry_MotofumiFujiwara,
+ _,
+ },
+ [PAGE_PROGRAMMERS_1] = {
+ sCreditsEntry_Programmers,
+ sCreditsEntry_HisashiSogabe,
+ sCreditsEntry_TomomichiOhta,
+ sCreditsEntry_NozomuSaito,
+ sCreditsEntry_EmptyString,
+ },
+ [PAGE_PROGRAMMERS_2] = {
+ sCreditsEntry_Programmers,
+ sCreditsEntry_AkitoMori,
+ sCreditsEntry_HiroyukiNakamura,
+ sCreditsEntry_MasaoTaya,
+ _,
+ },
+ [PAGE_PROGRAMMERS_3] = {
+ sCreditsEntry_Programmers,
+ sCreditsEntry_SatoshiNohara,
+ sCreditsEntry_MiyukiIwasawa,
+ sCreditsEntry_YoshinoriMatsuda,
+ sCreditsEntry_KeitaKagaya,
+ },
+ [PAGE_PROGRAMMERS_4] = {
+ sCreditsEntry_Programmers,
+ sCreditsEntry_TetsuyaWatanabe,
+ sCreditsEntry_SosukeTamada,
+ sCreditsEntry_TakenoriOhta,
+ _,
+ },
+ [PAGE_GRAPHIC_DESIGNERS_1] = {
+ _,
+ sCreditsEntry_GraphicDesigners,
+ sCreditsEntry_MotofumiFujiwara,
+ sCreditsEntry_SatoshiOhta,
+ _,
+ },
+ [PAGE_GRAPHIC_DESIGNERS_2] = {
+ sCreditsEntry_GraphicDesigners,
+ sCreditsEntry_KenkichiToyama,
+ sCreditsEntry_AsukaIwashita,
+ sCreditsEntry_TakaoUnno,
+ _,
+ },
+ [PAGE_GRAPHIC_DESIGNERS_3] = {
+ sCreditsEntry_GraphicDesigners,
+ sCreditsEntry_KenSugimori,
+ sCreditsEntry_HironobuYoshida,
+ sCreditsEntry_AimiTomita,
+ sCreditsEntry_KanakoEo,
+ },
+ [PAGE_MUSIC_COMPOSITION] = {
+ sCreditsEntry_MusicComposition,
+ sCreditsEntry_GoIchinose,
+ sCreditsEntry_JunichiMasuda,
+ sCreditsEntry_MorikazuAoki,
+ sCreditsEntry_HitomiSato,
+ },
+ [PAGE_SOUND_EFFECTS] = {
+ _,
+ sCreditsEntry_SoundEffectsAndPkmnVoices,
+ sCreditsEntry_GoIchinose,
+ sCreditsEntry_MorikazuAoki,
+ _,
+ },
+ [PAGE_GAME_DESIGNERS_1] = {
+ sCreditsEntry_GameDesigners,
+ sCreditsEntry_ShigekiMorimoto,
+ sCreditsEntry_TeruyukiShimoyamada,
+ sCreditsEntry_TakeshiKawachimaru,
+ sCreditsEntry_AkihitoTomisawa,
+ },
+ [PAGE_GAME_DESIGNERS_2] = {
+ sCreditsEntry_GameDesigners,
+ sCreditsEntry_SuguruNakatsui,
+ sCreditsEntry_TetsujiOhta,
+ sCreditsEntry_HitomiSato,
+ sCreditsEntry_KenjiMatsushima,
+ },
+ [PAGE_GAME_DESIGNERS_3] = {
+ sCreditsEntry_GameDesigners,
+ sCreditsEntry_JunichiMasuda,
+ sCreditsEntry_KojiNishino,
+ sCreditsEntry_ShigeruOhmori,
+ sCreditsEntry_TadashiTakahashi,
+ },
+ [PAGE_SCENARIO_PLOT] = {
+ sCreditsEntry_ScenarioPlot,
+ sCreditsEntry_AkihitoTomisawa,
+ sCreditsEntry_JunichiMasuda,
+ sCreditsEntry_KojiNishino,
+ _,
+ },
+ [PAGE_SCENARIO] = {
+ sCreditsEntry_Scenario,
+ sCreditsEntry_AkihitoTomisawa,
+ sCreditsEntry_HitomiSato,
+ sCreditsEntry_ToshinobuMatsumiya,
+ _,
+ },
+ [PAGE_SCRIPT_DESIGNERS] = {
+ sCreditsEntry_ScriptDesigners,
+ sCreditsEntry_TomomichiOhta,
+ sCreditsEntry_SatoshiNohara,
+ _,
+ _,
+ },
+ [PAGE_MAP_DESIGNERS] = {
+ sCreditsEntry_MapDesigners,
+ sCreditsEntry_SuguruNakatsui,
+ sCreditsEntry_TeruyukiShimoyamada,
+ sCreditsEntry_ShigeruOhmori,
+ sCreditsEntry_TetsujiOhta,
+ },
+ [PAGE_BATTLE_FRONTIER_DATA] = {
+ _,
+ sCreditsEntry_BattleFrontierData,
+ sCreditsEntry_TetsujiOhta,
+ _,
+ _,
+ },
+ [PAGE_PARAMETRIC_DESIGNERS] = {
+ sCreditsEntry_ParametricDesigners,
+ sCreditsEntry_TeruyukiShimoyamada,
+ sCreditsEntry_ShigekiMorimoto,
+ sCreditsEntry_TetsujiOhta,
+ sCreditsEntry_KojiNishino,
+ },
+ [PAGE_POKEDEX_TEXT] = {
+ _,
+ sCreditsEntry_PokedexText,
+ sCreditsEntry_KenjiMatsushima,
+ _,
+ _,
+ },
+ [PAGE_ENVIRONMENT_AND_TOOL_PROGRAMS_1] = {
+ sCreditsEntry_EnvAndToolPgrms,
+ sCreditsEntry_HisashiSogabe,
+ sCreditsEntry_SosukeTamada,
+ sCreditsEntry_HiroyukiNakamura,
+ sCreditsEntry_AkitoMori,
+ },
+ [PAGE_PKMN_DESIGNERS_1] = {
+ sCreditsEntry_PkmnDesigners,
+ sCreditsEntry_KenSugimori,
+ sCreditsEntry_MotofumiFujiwara,
+ sCreditsEntry_ShigekiMorimoto,
+ _,
+ },
+ [PAGE_PKMN_DESIGNERS_2] = {
+ sCreditsEntry_PkmnDesigners,
+ sCreditsEntry_HironobuYoshida,
+ sCreditsEntry_SatoshiOhta,
+ sCreditsEntry_AsukaIwashita,
+ _,
+ },
+ [PAGE_PKMN_DESIGNERS_3] = {
+ sCreditsEntry_PkmnDesigners,
+ sCreditsEntry_TakaoUnno,
+ sCreditsEntry_KanakoEo,
+ sCreditsEntry_AimiTomita,
+ _,
+ },
+ [PAGE_PKMN_DESIGNERS_4] = {
+ sCreditsEntry_PkmnDesigners,
+ sCreditsEntry_AtsukoNishida,
+ sCreditsEntry_MuneoSaito,
+ sCreditsEntry_RenaYoshikawa,
+ sCreditsEntry_JunOkutani,
+ },
+ [PAGE_SUPPORT_PROGRAMMERS] = {
+ _,
+ sCreditsEntry_SupportProgrammers,
+ sCreditsEntry_SatoshiMitsuhara,
+ sCreditsEntry_DaisukeHoshino,
+ _,
+ },
+ [PAGE_NCL_PRODUCT_TESTING] = {
+ _,
+ sCreditsEntry_NCLProductTesting,
+ sCreditsEntry_NCLSuperMarioClub,
+ _,
+ _,
+ },
+ [PAGE_PACKAGE_AND_MANUAL] = {
+ _,
+ sCreditsEntry_PackageAndManual,
+ sCreditsEntry_KenSugimori,
+ _,
+ _,
+ },
+ [PAGE_SPECIAL_THANKS_1] = {
+ _,
+ sCreditsEntry_SpecialThanks,
+ sCreditsEntry_KenjiTominaga,
+ sCreditsEntry_HirokiEnomoto,
+ _,
+ },
+ [PAGE_SPECIAL_THANKS_2] = {
+ sCreditsEntry_SpecialThanks,
+ sCreditsEntry_KazuyaSuyama,
+ sCreditsEntry_KenjiroIto,
+ sCreditsEntry_MichikoTakizawa,
+ sCreditsEntry_MakikoTakada,
+ },
+ [PAGE_SPECIAL_THANKS_3] = {
+ sCreditsEntry_SpecialThanks,
+ sCreditsEntry_MikikoOhhashi,
+ sCreditsEntry_TakanaoKondo,
+ sCreditsEntry_RuiKawaguchi,
+ _,
+ },
+ [PAGE_SPECIAL_THANKS_4] = {
+ sCreditsEntry_SpecialThanks,
+ sCreditsEntry_TakahiroOhnishi,
+ sCreditsEntry_NorihideOkamura,
+ sCreditsEntry_ShunsukeKohori,
+ _,
+ },
+ [PAGE_INFORMATION_SUPERVISORS] = {
+ sCreditsEntry_InfoSupervisors,
+ sCreditsEntry_KazuyukiTerada,
+ sCreditsEntry_YuriSakurai,
+ sCreditsEntry_YumiFunasaka,
+ sCreditsEntry_NaokoYanase,
+ },
+ [PAGE_ARTWORK_1] = {
+ _,
+ sCreditsEntry_Artwork,
+ sCreditsEntry_SachikoNakamichi,
+ sCreditsEntry_FujikoNomura,
+ _,
+ },
+ [PAGE_ARTWORK_2] = {
+ _,
+ sCreditsEntry_Artwork,
+ sCreditsEntry_HideyukiNakajima,
+ sCreditsEntry_HidenoriSaeki,
+ _,
+ },
+ [PAGE_ARTWORK_3] = {
+ sCreditsEntry_Artwork,
+ sCreditsEntry_YokoWatanabe,
+ sCreditsEntry_SakaeKimura,
+ sCreditsEntry_ChiakiShinkai,
+ _,
+ },
+ [PAGE_COORDINATORS] = {
+ sCreditsEntry_Coordinators,
+ sCreditsEntry_KazukiYoshihara,
+ sCreditsEntry_AkiraKinashi,
+ sCreditsEntry_RetsujiNomoto,
+ _,
+ },
+ [PAGE_ENGLISH_VERSION] = {
+ _,
+ sCreditsEntry_EnglishVersion,
+ sCreditsEntry_HiroNakamura,
+ sCreditsEntry_SethMcMahill,
+ _,
+ },
+ [PAGE_TRANSLATOR] = {
+ _,
+ sCreditsEntry_Translator,
+ sCreditsEntry_NobOgasawara,
+ _,
+ _,
+ },
+ [PAGE_TEXT_EDITOR] = {
+ _,
+ sCreditsEntry_TextEditor,
+ sCreditsEntry_TeresaLillygren,
+ _,
+ _,
+ },
+ [PAGE_NCL_COORDINATOR] = {
+ _,
+ sCreditsEntry_NCLCoordinator,
+ sCreditsEntry_KimikoNakamichi,
+ _,
+ _,
+ },
+ [PAGE_PROGRAMMERS_5] = {
+ sCreditsEntry_Programmers,
+ sCreditsEntry_TerukiMurakawa,
+ sCreditsEntry_SouichiYamamoto,
+ sCreditsEntry_YuichiroIto,
+ sCreditsEntry_AkiraKinashi,
+ },
+ [PAGE_GRAPHIC_DESIGNER] = {
+ _,
+ sCreditsEntry_GraphicDesigner,
+ sCreditsEntry_AkiraKinashi,
+ _,
+ _,
+ },
+ [PAGE_ENVIRONMENT_AND_TOOL_PROGRAMS_2] = {
+ sCreditsEntry_EnvAndToolPgrms,
+ sCreditsEntry_TerukiMurakawa,
+ sCreditsEntry_SouichiYamamoto,
+ sCreditsEntry_KimikoNakamichi,
+ _,
+ },
+ [PAGE_NOA_TESTING] = {
+ sCreditsEntry_NOAProductTesting,
+ sCreditsEntry_ThomasHertzog,
+ sCreditsEntry_ErikJohnson,
+ sCreditsEntry_MikaKurosawa,
+ _,
+ },
+ [PAGE_BRAILLE_CODE_CHECK_1] = {
+ sCreditsEntry_BrailleCodeCheck,
+ sCreditsEntry_NationalFederationBlind,
+ sCreditsEntry_PatriciaAMaurer,
+ sCreditsEntry_JapanBrailleLibrary,
+ sCreditsEntry_EuropeanBlindUnion,
+ },
+ [PAGE_BRAILLE_CODE_CHECK_2] = {
+ _,
+ sCreditsEntry_BrailleCodeCheck,
+ sCreditsEntry_AustralianBrailleAuthority,
+ sCreditsEntry_RoyalNewZealandFederationBlind,
+ _,
+ },
+ [PAGE_SPECIAL_THANKS_5] = {
+ sCreditsEntry_SpecialThanks,
+ sCreditsEntry_HiroyukiUesugi,
+ sCreditsEntry_MotoyasuTojima,
+ sCreditsEntry_NicolaPrattBarlow,
+ sCreditsEntry_ShellieDow,
+ },
+ [PAGE_TASK_MANAGERS] = {
+ _,
+ sCreditsEntry_TaskManagers,
+ sCreditsEntry_AzusaTajima,
+ sCreditsEntry_ShusakuEgami,
+ _,
+ },
+ [PAGE_PRODUCERS] = {
+ sCreditsEntry_Producers,
+ sCreditsEntry_HiroyukiJinnai,
+ sCreditsEntry_HitoshiYamagami,
+ sCreditsEntry_GakujiNomoto,
+ sCreditsEntry_HiroakiTsuru,
+ },
+ [PAGE_EXECUTIVE_DIRECTOR] = {
+ _,
+ sCreditsEntry_ExecutiveDirector,
+ sCreditsEntry_SatoshiTajiri,
+ _,
+ _,
+ },
+ [PAGE_EXECUTIVE_PRODUCERS_1] = {
+ _,
+ sCreditsEntry_ExecProducers,
+ sCreditsEntry_SatoruIwata,
+ _,
+ _,
+ },
+ [PAGE_EXECUTIVE_PRODUCERS_2] = {
+ _,
+ sCreditsEntry_ExecProducers,
+ sCreditsEntry_TsunekazIshihara,
+ _,
+ _,
+ },
+};
+#undef _
diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h
index 4fc3ecff6..54145efbc 100755
--- a/src/data/field_effects/field_effect_objects.h
+++ b/src/data/field_effects/field_effect_objects.h
@@ -1263,16 +1263,16 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_SmallSparkle = {
const struct SpritePalette gSpritePalette_SmallSparkle = {gFieldEffectPal_SmallSparkle, FLDEFF_PAL_TAG_SMALL_SPARKLE};
-static const union AnimCmd sAnim_Rayquaza[] = {
+static const union AnimCmd sAnim_RayquazaSpotlightEffect[] = {
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-static const union AnimCmd *const sAnimTable_Rayquaza[] = {
- sAnim_Rayquaza,
+static const union AnimCmd *const sAnimTable_RayquazaSpotlightEffect[] = {
+ sAnim_RayquazaSpotlightEffect,
};
-const struct SpriteFrameImage sPicTable_Rayquaza[] = {
+const struct SpriteFrameImage sPicTable_RayquazaSpotlightEffect[] = {
overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 0),
};
@@ -1280,8 +1280,8 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza = {
.tileTag = 0xFFFF,
.paletteTag = 0xFFFF,
.oam = &gObjectEventBaseOam_32x32,
- .anims = sAnimTable_Rayquaza,
- .images = sPicTable_Rayquaza,
+ .anims = sAnimTable_RayquazaSpotlightEffect,
+ .images = sPicTable_RayquazaSpotlightEffect,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = UpdateRayquazaSpotlightEffect,
};
diff --git a/src/data/graphics/intro_scene.h b/src/data/graphics/intro_scene.h
index ea67c7b0d..cb7706c9a 100644
--- a/src/data/graphics/intro_scene.h
+++ b/src/data/graphics/intro_scene.h
@@ -1,48 +1,47 @@
-const u16 gIntro1GameFreakTextFadePal[] = INCBIN_U16("graphics/intro/intro1_text.gbapal"); // game freak text blue fade
-const u16 gIntro2BrendanNoTurnPal[] = INCBIN_U16("graphics/intro/intro2_brendan_noturn.gbapal");
-const u16 gIntro3BgPal[] = INCBIN_U16("graphics/intro/intro3.gbapal");
-const u16 gIntro2VolbeatPal[] = INCBIN_U16("graphics/intro/intro2_volbeat.gbapal");
-const u16 gIntro2TorchicPal[] = INCBIN_U16("graphics/intro/intro2_torchic.gbapal");
-const u16 gIntro2ManectricPal[] = INCBIN_U16("graphics/intro/intro2_manectric.gbapal");
-const u16 gIntro2FlygonPal[] = INCBIN_U16("graphics/intro/intro2_flygon.gbapal");
+const u16 gIntroGameFreakTextFade_Pal[] = INCBIN_U16("graphics/intro/scene_1/text.gbapal"); // game freak text blue fade
+const u16 gIntroPlayer_Pal[] = INCBIN_U16("graphics/intro/scene_2/player.gbapal");
+const u16 gIntro3Bg_Pal[] = INCBIN_U16("graphics/intro/scene_3/bg.gbapal");
+const u16 gIntroVolbeat_Pal[] = INCBIN_U16("graphics/intro/scene_2/volbeat.gbapal");
+const u16 gIntroTorchic_Pal[] = INCBIN_U16("graphics/intro/scene_2/torchic.gbapal");
+const u16 gIntroManectric_Pal[] = INCBIN_U16("graphics/intro/scene_2/manectric.gbapal");
+const u16 gIntroFlygon_Pal[] = INCBIN_U16("graphics/intro/scene_2/flygon.gbapal");
-const u32 gIntro2VolbeatGfx[] = INCBIN_U32("graphics/intro/intro2_volbeat.4bpp.lz");
-const u32 gIntro2TorchicGfx[] = INCBIN_U32("graphics/intro/intro2_torchic.4bpp.lz");
-const u32 gIntro2ManectricGfx[] = INCBIN_U32("graphics/intro/intro2_manectric.4bpp.lz");
-const u32 gIntro2FlygonGfx[] = INCBIN_U32("graphics/intro/intro2_flygon.4bpp.lz");
-const u32 gIntro2BrendanNoTurnGfx[] = INCBIN_U32("graphics/intro/intro2_brendan_noturn.4bpp.lz");
-const u32 gIntro2MayNoTurnGfx[] = INCBIN_U32("graphics/intro/intro2_may_noturn.4bpp.lz");
+const u32 gIntroVolbeat_Gfx[] = INCBIN_U32("graphics/intro/scene_2/volbeat.4bpp.lz");
+const u32 gIntroTorchic_Gfx[] = INCBIN_U32("graphics/intro/scene_2/torchic.4bpp.lz");
+const u32 gIntroManectric_Gfx[] = INCBIN_U32("graphics/intro/scene_2/manectric.4bpp.lz");
+const u32 gIntroFlygon_Gfx[] = INCBIN_U32("graphics/intro/scene_2/flygon.4bpp.lz");
+const u32 gIntroBrendan_Gfx[] = INCBIN_U32("graphics/intro/scene_2/brendan.4bpp.lz");
+const u32 gIntroMay_Gfx[] = INCBIN_U32("graphics/intro/scene_2/may.4bpp.lz");
-const u32 gIntro3GroudonGfx[] = INCBIN_U32("graphics/intro/intro3_groudon.8bpp.lz");
-const u32 gIntro3GroudonTilemap[] = INCBIN_U32("graphics/intro/intro3_groudon.bin.lz");
+const u32 gIntroGroudon_Gfx[] = INCBIN_U32("graphics/intro/scene_3/groudon.8bpp.lz");
+const u32 gIntroGroudon_Tilemap[] = INCBIN_U32("graphics/intro/scene_3/groudon.bin.lz");
-const u32 gIntro3KyogreGfx[] = INCBIN_U32("graphics/intro/intro3_kyogre.8bpp.lz");
-const u32 gIntro3KyogreTilemap[] = INCBIN_U32("graphics/intro/intro3_kyogre.bin.lz");
+const u32 gIntroKyogre_Gfx[] = INCBIN_U32("graphics/intro/scene_3/kyogre.8bpp.lz");
+const u32 gIntroKyogre_Tilemap[] = INCBIN_U32("graphics/intro/scene_3/kyogre.bin.lz");
-const u32 gIntro3LegendBgGfx[] = INCBIN_U32("graphics/intro/legend_bg.4bpp.lz"); // groudon/kyogre/bg
+const u32 gIntroLegendBg_Gfx[] = INCBIN_U32("graphics/intro/scene_3/legend_bg.4bpp.lz"); // groudon/kyogre bg
+const u32 gIntroGroudonBg_Tilemap[] = INCBIN_U32("graphics/intro/scene_3/groudon_bg.bin.lz");
+const u32 gIntroKyogreBg_Tilemap[] = INCBIN_U32("graphics/intro/scene_3/kyogre_bg.bin.lz");
-const u32 gIntro3GroudonBgTilemap[] = INCBIN_U32("graphics/intro/legend_bg1.bin.lz");
-const u32 gIntro3KyogreBgTilemap[] = INCBIN_U32("graphics/intro/legend_bg2.bin.lz");
+const u32 gIntroClouds_Gfx[] = INCBIN_U32("graphics/intro/scene_3/clouds.4bpp.lz");
+const u32 gIntroCloudsLeft_Tilemap[] = INCBIN_U32("graphics/intro/scene_3/clouds_left.bin.lz");
+const u32 gIntroCloudsRight_Tilemap[] = INCBIN_U32("graphics/intro/scene_3/clouds_right.bin.lz");
+const u32 gIntroCloudsSun_Tilemap[] = INCBIN_U32("graphics/intro/scene_3/clouds_sun.bin.lz");
-const u32 gIntro3CloudsGfx[] = INCBIN_U32("graphics/intro/intro3_clouds.4bpp.lz");
-const u32 gIntro3Clouds1Tilemap[] = INCBIN_U32("graphics/intro/intro3_clouds1.bin.lz");
-const u32 gIntro3Clouds2Tilemap[] = INCBIN_U32("graphics/intro/intro3_clouds2.bin.lz");
-const u32 gIntro3Clouds3Tilemap[] = INCBIN_U32("graphics/intro/intro3_clouds3.bin.lz");
+const u32 gIntroLightning_Gfx[] = INCBIN_U32("graphics/intro/scene_3/lightning.4bpp.lz");
+const u16 gIntroLightning_Pal[] = INCBIN_U16("graphics/intro/scene_3/lightning.gbapal");
-const u32 gIntro3LightningGfx[] = INCBIN_U32("graphics/intro/intro3_lightning.4bpp.lz");
-const u16 gIntro3LightningPal[] = INCBIN_U16("graphics/intro/intro3_lightning.gbapal");
+const u32 gIntroRayquaza_Gfx[] = INCBIN_U32("graphics/intro/scene_3/rayquaza.4bpp.lz");
+const u32 gIntroRayquaza_Tilemap[] = INCBIN_U32("graphics/intro/scene_3/rayquaza.bin.lz");
-const u32 gIntro3RayquazaGfx[] = INCBIN_U32("graphics/intro/intro3_rayquaza.4bpp.lz");
-const u32 gIntro3RayquazaTilemap[] = INCBIN_U32("graphics/intro/intro3_rayquaza.bin.lz");
+const u32 gIntroUnused1_Tilemap[] = INCBIN_U32("graphics/intro/scene_3/unused_1.bin.lz");
+const u32 gIntroUnused2_Tilemap[] = INCBIN_U32("graphics/intro/scene_3/unused_2.bin.lz");
-const u32 gUnknown_D8C374[] = INCBIN_U32("graphics/unknown/unknown_D8C374.bin.lz");
-const u32 gUnknown_D8C5C4[] = INCBIN_U32("graphics/unknown/unknown_D8C5C4.bin.lz");
+const u32 gIntroRayquazaClouds_Gfx[] = INCBIN_U32("graphics/intro/scene_3/rayquaza_clouds.4bpp.lz");
+const u32 gIntroRayquazaClouds_Tilemap[] = INCBIN_U32("graphics/intro/scene_3/rayquaza_clouds.bin.lz");
-const u32 gIntro3Clouds2Gfx[] = INCBIN_U32("graphics/intro/intro3_clouds2.4bpp.lz"); //clouds 2, during the rayquaza flash
-const u32 gIntro3Clouds4Tilemap[] = INCBIN_U32("graphics/intro/intro3_clouds4.bin.lz");
+const u32 gIntroBubbles_Gfx[] = INCBIN_U32("graphics/intro/scene_3/bubbles.4bpp.lz");
+const u16 gIntroBubbles_Pal[] = INCBIN_U16("graphics/intro/scene_3/bubbles.gbapal");
-const u32 gIntro2BubblesGfx[] = INCBIN_U32("graphics/intro/intro2_bubbles.4bpp.lz");
-const u16 gIntro2BubblesPal[] = INCBIN_U16("graphics/intro/intro2_bubbles.gbapal");
-
-const u32 gIntro1FlygonGfx[] = INCBIN_U32("graphics/intro/intro1_flygon.4bpp.lz");
-const u32 gIntro1SparkleGfx[] = INCBIN_U32("graphics/intro/intro1_sparkle.4bpp.lz");
+const u32 gIntroFlygonSilhouette_Gfx[] = INCBIN_U32("graphics/intro/scene_1/flygon.4bpp.lz");
+const u32 gIntroSparkle_Gfx[] = INCBIN_U32("graphics/intro/scene_1/sparkle.4bpp.lz");
diff --git a/src/data/object_events/berry_tree_graphics_tables.h b/src/data/object_events/berry_tree_graphics_tables.h
index d558b583f..390c82f95 100755
--- a/src/data/object_events/berry_tree_graphics_tables.h
+++ b/src/data/object_events/berry_tree_graphics_tables.h
@@ -1,4 +1,4 @@
-const struct SpriteFrameImage gObjectEventPicTable_PechaBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_PechaBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -12,7 +12,7 @@ const struct SpriteFrameImage gObjectEventPicTable_PechaBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Pecha[] = {3, 4, 4, 4, 4};
-const struct SpriteFrameImage gObjectEventPicTable_KelpsyBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_KelpsyBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -26,7 +26,7 @@ const struct SpriteFrameImage gObjectEventPicTable_KelpsyBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Kelpsy[] = {3, 4, 2, 2, 2};
-const struct SpriteFrameImage gObjectEventPicTable_WepearBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_WepearBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -40,7 +40,7 @@ const struct SpriteFrameImage gObjectEventPicTable_WepearBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Wepear[] = {3, 4, 2, 2, 2};
-const struct SpriteFrameImage gObjectEventPicTable_IapapaBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_IapapaBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -54,7 +54,7 @@ const struct SpriteFrameImage gObjectEventPicTable_IapapaBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Iapapa[] = {3, 4, 3, 3, 3};
-const struct SpriteFrameImage gObjectEventPicTable_CheriBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_CheriBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -68,7 +68,7 @@ const struct SpriteFrameImage gObjectEventPicTable_CheriBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Cheri[] = {3, 4, 4, 4, 4};
-const struct SpriteFrameImage gObjectEventPicTable_FigyBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_FigyBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -82,7 +82,7 @@ const struct SpriteFrameImage gObjectEventPicTable_FigyBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Figy[] = {3, 4, 3, 3, 3};
-const struct SpriteFrameImage gObjectEventPicTable_MagoBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_MagoBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -96,7 +96,7 @@ const struct SpriteFrameImage gObjectEventPicTable_MagoBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Mago[] = {3, 4, 3, 3, 3};
-const struct SpriteFrameImage gObjectEventPicTable_LumBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_LumBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -110,7 +110,7 @@ const struct SpriteFrameImage gObjectEventPicTable_LumBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Lum[] = {3, 4, 4, 4, 4};
-const struct SpriteFrameImage gObjectEventPicTable_RazzBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_RazzBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -124,7 +124,7 @@ const struct SpriteFrameImage gObjectEventPicTable_RazzBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Razz[] = {3, 4, 4, 4, 4};
-const struct SpriteFrameImage gObjectEventPicTable_GrepaBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_GrepaBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -138,7 +138,7 @@ const struct SpriteFrameImage gObjectEventPicTable_GrepaBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Grepa[] = {3, 4, 3, 3, 3};
-const struct SpriteFrameImage gObjectEventPicTable_RabutaBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_RabutaBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -152,7 +152,7 @@ const struct SpriteFrameImage gObjectEventPicTable_RabutaBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Rabuta[] = {3, 4, 4, 4, 4};
-const struct SpriteFrameImage gObjectEventPicTable_NomelBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_NomelBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -166,7 +166,7 @@ const struct SpriteFrameImage gObjectEventPicTable_NomelBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Nomel[] = {3, 4, 3, 3, 3};
-const struct SpriteFrameImage gObjectEventPicTable_LeppaBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_LeppaBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -180,7 +180,7 @@ const struct SpriteFrameImage gObjectEventPicTable_LeppaBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Leppa[] = {3, 4, 3, 3, 3};
-const struct SpriteFrameImage gObjectEventPicTable_LiechiBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_LiechiBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -194,7 +194,7 @@ const struct SpriteFrameImage gObjectEventPicTable_LiechiBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Liechi[] = {3, 4, 4, 4, 4};
-const struct SpriteFrameImage gObjectEventPicTable_HondewBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_HondewBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -208,7 +208,7 @@ const struct SpriteFrameImage gObjectEventPicTable_HondewBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Hondew[] = {3, 4, 5, 5, 5};
-const struct SpriteFrameImage gObjectEventPicTable_AguavBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_AguavBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -222,7 +222,7 @@ const struct SpriteFrameImage gObjectEventPicTable_AguavBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Aguav[] = {3, 4, 4, 4, 4};
-const struct SpriteFrameImage gObjectEventPicTable_WikiBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_WikiBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -236,7 +236,7 @@ const struct SpriteFrameImage gObjectEventPicTable_WikiBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Wiki[] = {3, 4, 3, 3, 3};
-const struct SpriteFrameImage gObjectEventPicTable_PomegBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_PomegBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -250,7 +250,7 @@ const struct SpriteFrameImage gObjectEventPicTable_PomegBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Pomeg[] = {3, 4, 3, 3, 3};
-const struct SpriteFrameImage gObjectEventPicTable_RawstBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_RawstBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -264,7 +264,7 @@ const struct SpriteFrameImage gObjectEventPicTable_RawstBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Rawst[] = {3, 4, 4, 4, 4};
-const struct SpriteFrameImage gObjectEventPicTable_SpelonBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_SpelonBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -278,7 +278,7 @@ const struct SpriteFrameImage gObjectEventPicTable_SpelonBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Spelon[] = {3, 4, 3, 3, 3};
-const struct SpriteFrameImage gObjectEventPicTable_ChestoBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_ChestoBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -292,7 +292,7 @@ const struct SpriteFrameImage gObjectEventPicTable_ChestoBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Chesto[] = {3, 4, 2, 2, 2};
-const struct SpriteFrameImage gObjectEventPicTable_OranBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_OranBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -306,7 +306,7 @@ const struct SpriteFrameImage gObjectEventPicTable_OranBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Oran[] = {3, 4, 2, 2, 2};
-const struct SpriteFrameImage gObjectEventPicTable_PersimBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_PersimBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -320,7 +320,7 @@ const struct SpriteFrameImage gObjectEventPicTable_PersimBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Persim[] = {3, 4, 2, 2, 2};
-const struct SpriteFrameImage gObjectEventPicTable_SitrusBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_SitrusBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -334,7 +334,7 @@ const struct SpriteFrameImage gObjectEventPicTable_SitrusBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Sitrus[] = {3, 4, 4, 4, 4};
-const struct SpriteFrameImage gObjectEventPicTable_AspearBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_AspearBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -348,7 +348,7 @@ const struct SpriteFrameImage gObjectEventPicTable_AspearBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Aspear[] = {3, 4, 3, 3, 3};
-const struct SpriteFrameImage gObjectEventPicTable_PamtreBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_PamtreBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -362,7 +362,7 @@ const struct SpriteFrameImage gObjectEventPicTable_PamtreBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Pamtre[] = {3, 4, 2, 2, 2};
-const struct SpriteFrameImage gObjectEventPicTable_CornnBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_CornnBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -376,7 +376,7 @@ const struct SpriteFrameImage gObjectEventPicTable_CornnBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Cornn[] = {3, 4, 2, 2, 2};
-const struct SpriteFrameImage gObjectEventPicTable_LansatBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_LansatBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -390,7 +390,7 @@ const struct SpriteFrameImage gObjectEventPicTable_LansatBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Lansat[] = {3, 4, 2, 2, 2};
-const struct SpriteFrameImage gObjectEventPicTable_DurinBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_DurinBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -404,7 +404,7 @@ const struct SpriteFrameImage gObjectEventPicTable_DurinBerryTree[] = {
const u8 gBerryTreePaletteSlotTable_Durin[] = {3, 4, 4, 4, 4};
-const struct SpriteFrameImage gObjectEventPicTable_TamatoBerryTree[] = {
+static const struct SpriteFrameImage sPicTable_TamatoBerryTree[] = {
overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 0),
overworld_frame(gObjectEventPic_BerryTreeSprout, 2, 2, 1),
@@ -423,49 +423,49 @@ const u8 gDeadBerryTreeObjectEventGraphicsIdTable[] = {OBJ_EVENT_GFX_BERRY_TREE_
const u8 gBerryTreeObjectEventGraphicsIdTable[] = {OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES};
const struct SpriteFrameImage *const gBerryTreePicTablePointers[] = {
- [ITEM_CHERI_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_CheriBerryTree,
- [ITEM_CHESTO_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_ChestoBerryTree,
- [ITEM_PECHA_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_PechaBerryTree,
- [ITEM_RAWST_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_RawstBerryTree,
- [ITEM_ASPEAR_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_AspearBerryTree,
- [ITEM_LEPPA_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_LeppaBerryTree,
- [ITEM_ORAN_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_OranBerryTree,
- [ITEM_PERSIM_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_PersimBerryTree,
- [ITEM_LUM_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_LumBerryTree,
- [ITEM_SITRUS_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_SitrusBerryTree,
- [ITEM_FIGY_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_FigyBerryTree,
- [ITEM_WIKI_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_WikiBerryTree,
- [ITEM_MAGO_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_MagoBerryTree,
- [ITEM_AGUAV_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_AguavBerryTree,
- [ITEM_IAPAPA_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_IapapaBerryTree,
- [ITEM_RAZZ_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_RazzBerryTree,
- [ITEM_BLUK_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_RazzBerryTree,
- [ITEM_NANAB_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_MagoBerryTree,
- [ITEM_WEPEAR_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_WepearBerryTree,
- [ITEM_PINAP_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_IapapaBerryTree,
- [ITEM_POMEG_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_PomegBerryTree,
- [ITEM_KELPSY_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_KelpsyBerryTree,
- [ITEM_QUALOT_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_WepearBerryTree,
- [ITEM_HONDEW_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_HondewBerryTree,
- [ITEM_GREPA_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_GrepaBerryTree,
- [ITEM_TAMATO_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_TamatoBerryTree,
- [ITEM_CORNN_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_CornnBerryTree,
- [ITEM_MAGOST_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_PomegBerryTree,
- [ITEM_RABUTA_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_RabutaBerryTree,
- [ITEM_NOMEL_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_NomelBerryTree,
- [ITEM_SPELON_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_SpelonBerryTree,
- [ITEM_PAMTRE_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_PamtreBerryTree,
- [ITEM_WATMEL_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_RabutaBerryTree,
- [ITEM_DURIN_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_DurinBerryTree,
- [ITEM_BELUE_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_HondewBerryTree,
- [ITEM_LIECHI_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_LiechiBerryTree,
- [ITEM_GANLON_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_HondewBerryTree,
- [ITEM_SALAC_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_AguavBerryTree,
- [ITEM_PETAYA_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_PomegBerryTree,
- [ITEM_APICOT_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_GrepaBerryTree,
- [ITEM_LANSAT_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_LansatBerryTree,
- [ITEM_STARF_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_CornnBerryTree,
- [ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX] = gObjectEventPicTable_DurinBerryTree,
+ [ITEM_CHERI_BERRY - FIRST_BERRY_INDEX] = sPicTable_CheriBerryTree,
+ [ITEM_CHESTO_BERRY - FIRST_BERRY_INDEX] = sPicTable_ChestoBerryTree,
+ [ITEM_PECHA_BERRY - FIRST_BERRY_INDEX] = sPicTable_PechaBerryTree,
+ [ITEM_RAWST_BERRY - FIRST_BERRY_INDEX] = sPicTable_RawstBerryTree,
+ [ITEM_ASPEAR_BERRY - FIRST_BERRY_INDEX] = sPicTable_AspearBerryTree,
+ [ITEM_LEPPA_BERRY - FIRST_BERRY_INDEX] = sPicTable_LeppaBerryTree,
+ [ITEM_ORAN_BERRY - FIRST_BERRY_INDEX] = sPicTable_OranBerryTree,
+ [ITEM_PERSIM_BERRY - FIRST_BERRY_INDEX] = sPicTable_PersimBerryTree,
+ [ITEM_LUM_BERRY - FIRST_BERRY_INDEX] = sPicTable_LumBerryTree,
+ [ITEM_SITRUS_BERRY - FIRST_BERRY_INDEX] = sPicTable_SitrusBerryTree,
+ [ITEM_FIGY_BERRY - FIRST_BERRY_INDEX] = sPicTable_FigyBerryTree,
+ [ITEM_WIKI_BERRY - FIRST_BERRY_INDEX] = sPicTable_WikiBerryTree,
+ [ITEM_MAGO_BERRY - FIRST_BERRY_INDEX] = sPicTable_MagoBerryTree,
+ [ITEM_AGUAV_BERRY - FIRST_BERRY_INDEX] = sPicTable_AguavBerryTree,
+ [ITEM_IAPAPA_BERRY - FIRST_BERRY_INDEX] = sPicTable_IapapaBerryTree,
+ [ITEM_RAZZ_BERRY - FIRST_BERRY_INDEX] = sPicTable_RazzBerryTree,
+ [ITEM_BLUK_BERRY - FIRST_BERRY_INDEX] = sPicTable_RazzBerryTree,
+ [ITEM_NANAB_BERRY - FIRST_BERRY_INDEX] = sPicTable_MagoBerryTree,
+ [ITEM_WEPEAR_BERRY - FIRST_BERRY_INDEX] = sPicTable_WepearBerryTree,
+ [ITEM_PINAP_BERRY - FIRST_BERRY_INDEX] = sPicTable_IapapaBerryTree,
+ [ITEM_POMEG_BERRY - FIRST_BERRY_INDEX] = sPicTable_PomegBerryTree,
+ [ITEM_KELPSY_BERRY - FIRST_BERRY_INDEX] = sPicTable_KelpsyBerryTree,
+ [ITEM_QUALOT_BERRY - FIRST_BERRY_INDEX] = sPicTable_WepearBerryTree,
+ [ITEM_HONDEW_BERRY - FIRST_BERRY_INDEX] = sPicTable_HondewBerryTree,
+ [ITEM_GREPA_BERRY - FIRST_BERRY_INDEX] = sPicTable_GrepaBerryTree,
+ [ITEM_TAMATO_BERRY - FIRST_BERRY_INDEX] = sPicTable_TamatoBerryTree,
+ [ITEM_CORNN_BERRY - FIRST_BERRY_INDEX] = sPicTable_CornnBerryTree,
+ [ITEM_MAGOST_BERRY - FIRST_BERRY_INDEX] = sPicTable_PomegBerryTree,
+ [ITEM_RABUTA_BERRY - FIRST_BERRY_INDEX] = sPicTable_RabutaBerryTree,
+ [ITEM_NOMEL_BERRY - FIRST_BERRY_INDEX] = sPicTable_NomelBerryTree,
+ [ITEM_SPELON_BERRY - FIRST_BERRY_INDEX] = sPicTable_SpelonBerryTree,
+ [ITEM_PAMTRE_BERRY - FIRST_BERRY_INDEX] = sPicTable_PamtreBerryTree,
+ [ITEM_WATMEL_BERRY - FIRST_BERRY_INDEX] = sPicTable_RabutaBerryTree,
+ [ITEM_DURIN_BERRY - FIRST_BERRY_INDEX] = sPicTable_DurinBerryTree,
+ [ITEM_BELUE_BERRY - FIRST_BERRY_INDEX] = sPicTable_HondewBerryTree,
+ [ITEM_LIECHI_BERRY - FIRST_BERRY_INDEX] = sPicTable_LiechiBerryTree,
+ [ITEM_GANLON_BERRY - FIRST_BERRY_INDEX] = sPicTable_HondewBerryTree,
+ [ITEM_SALAC_BERRY - FIRST_BERRY_INDEX] = sPicTable_AguavBerryTree,
+ [ITEM_PETAYA_BERRY - FIRST_BERRY_INDEX] = sPicTable_PomegBerryTree,
+ [ITEM_APICOT_BERRY - FIRST_BERRY_INDEX] = sPicTable_GrepaBerryTree,
+ [ITEM_LANSAT_BERRY - FIRST_BERRY_INDEX] = sPicTable_LansatBerryTree,
+ [ITEM_STARF_BERRY - FIRST_BERRY_INDEX] = sPicTable_CornnBerryTree,
+ [ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX] = sPicTable_DurinBerryTree,
};
const u8 *const gBerryTreePaletteSlotTablePointers[] = {
diff --git a/src/data/object_events/movement_action_func_tables.h b/src/data/object_events/movement_action_func_tables.h
index 8cf7d1699..4df07be0d 100755
--- a/src/data/object_events/movement_action_func_tables.h
+++ b/src/data/object_events/movement_action_func_tables.h
@@ -252,7 +252,7 @@ u8 MovementAction_AcroEndWheelieMoveRight_Step0(struct ObjectEvent *, struct Spr
u8 MovementAction_AcroEndWheelieMoveRight_Step1(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_Levitate_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_StopLevitate_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementAction_DestroyExtraTaskIfAtTop_Step0(struct ObjectEvent *, struct Sprite *);
+u8 MovementAction_StopLevitateAtTop_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_Finish(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_FreeAndUnlockAnim_Step0(struct ObjectEvent *, struct Sprite *);
@@ -416,7 +416,7 @@ u8 (*const gMovementActionFuncs_WalkLeftAffine[])(struct ObjectEvent *, struct S
u8 (*const gMovementActionFuncs_WalkRightAffine[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_Levitate[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_StopLevitate[])(struct ObjectEvent *, struct Sprite *);
-u8 (*const gMovementActionFuncs_DestroyExtraTaskIfAtTop[])(struct ObjectEvent *, struct Sprite *);
+u8 (*const gMovementActionFuncs_StopLevitateAtTop[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_Figure8[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_FlyUp[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_FlyDown[])(struct ObjectEvent *, struct Sprite *);
@@ -576,7 +576,7 @@ u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *)
[MOVEMENT_ACTION_WALK_RIGHT_AFFINE] = gMovementActionFuncs_WalkRightAffine,
[MOVEMENT_ACTION_LEVITATE] = gMovementActionFuncs_Levitate,
[MOVEMENT_ACTION_STOP_LEVITATE] = gMovementActionFuncs_StopLevitate,
- [MOVEMENT_ACTION_DESTROY_EXTRA_TASK_IF_AT_TOP] = gMovementActionFuncs_DestroyExtraTaskIfAtTop,
+ [MOVEMENT_ACTION_STOP_LEVITATE_AT_TOP] = gMovementActionFuncs_StopLevitateAtTop,
[MOVEMENT_ACTION_FIGURE_8] = gMovementActionFuncs_Figure8,
[MOVEMENT_ACTION_FLY_UP] = gMovementActionFuncs_FlyUp,
[MOVEMENT_ACTION_FLY_DOWN] = gMovementActionFuncs_FlyDown,
@@ -602,7 +602,7 @@ u8 (*const gMovementActionFuncs_FaceRight[])(struct ObjectEvent *, struct Sprite
MovementAction_PauseSpriteAnim,
};
-u8 (*const gUnknown_0850DEE8[])(u8) = {
+static u8 (*const sDirectionAnimFuncsBySpeed[])(u8) = {
GetMoveDirectionAnimNum,
GetMoveDirectionFastAnimNum,
GetMoveDirectionFastAnimNum,
@@ -706,8 +706,8 @@ u8 (*const gMovementActionFuncs_WalkNormalRight[])(struct ObjectEvent *, struct
MovementAction_PauseSpriteAnim,
};
-const s16 gUnknown_0850DFBC[] = {0, 1, 1};
-const s16 gUnknown_0850DFC2[] = {0, 0, 1};
+static const s16 sJumpInitDisplacements[] = {0, 1, 1};
+static const s16 sJumpDisplacements[] = {0, 0, 1};
u8 (*const gMovementActionFuncs_Jump2Down[])(struct ObjectEvent *, struct Sprite *) = {
MovementAction_Jump2Down_Step0,
@@ -1507,7 +1507,7 @@ u8 (*const gMovementActionFuncs_StopLevitate[])(struct ObjectEvent *, struct Spr
MovementAction_Finish,
};
-u8 (*const gMovementActionFuncs_DestroyExtraTaskIfAtTop[])(struct ObjectEvent *, struct Sprite *) = {
- MovementAction_DestroyExtraTaskIfAtTop_Step0,
+u8 (*const gMovementActionFuncs_StopLevitateAtTop[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementAction_StopLevitateAtTop_Step0,
MovementAction_Finish,
};
diff --git a/src/data/object_events/object_event_anims.h b/src/data/object_events/object_event_anims.h
index b319c2845..93f402258 100755
--- a/src/data/object_events/object_event_anims.h
+++ b/src/data/object_events/object_event_anims.h
@@ -1,4 +1,4 @@
-const union AnimCmd gObjectEventImageAnim_StayStill[] =
+static const union AnimCmd sAnim_StayStill[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(0, 8),
@@ -7,31 +7,31 @@ const union AnimCmd gObjectEventImageAnim_StayStill[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpFaceSouth[] =
+static const union AnimCmd sAnim_QuintyPlumpFaceSouth[] =
{
ANIMCMD_FRAME(0, 16),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpFaceNorth[] =
+static const union AnimCmd sAnim_QuintyPlumpFaceNorth[] =
{
ANIMCMD_FRAME(1, 16),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpFaceWest[] =
+static const union AnimCmd sAnim_QuintyPlumpFaceWest[] =
{
ANIMCMD_FRAME(2, 16),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpFaceEast[] =
+static const union AnimCmd sAnim_QuintyPlumpFaceEast[] =
{
ANIMCMD_FRAME(2, 16, .hFlip = TRUE),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoSouth[] =
+static const union AnimCmd sAnim_QuintyPlumpGoSouth[] =
{
ANIMCMD_FRAME(3, 8),
ANIMCMD_FRAME(0, 8),
@@ -40,7 +40,7 @@ const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoSouth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoNorth[] =
+static const union AnimCmd sAnim_QuintyPlumpGoNorth[] =
{
ANIMCMD_FRAME(4, 8),
ANIMCMD_FRAME(1, 8),
@@ -49,7 +49,7 @@ const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoNorth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoWest[] =
+static const union AnimCmd sAnim_QuintyPlumpGoWest[] =
{
ANIMCMD_FRAME(5, 8),
ANIMCMD_FRAME(2, 8),
@@ -58,7 +58,7 @@ const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoWest[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoEast[] =
+static const union AnimCmd sAnim_QuintyPlumpGoEast[] =
{
ANIMCMD_FRAME(5, 8, .hFlip = TRUE),
ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
@@ -67,7 +67,7 @@ const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoEast[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFastSouth[] =
+static const union AnimCmd sAnim_QuintyPlumpGoFastSouth[] =
{
ANIMCMD_FRAME(3, 4),
ANIMCMD_FRAME(0, 4),
@@ -76,7 +76,7 @@ const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFastSouth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFastNorth[] =
+static const union AnimCmd sAnim_QuintyPlumpGoFastNorth[] =
{
ANIMCMD_FRAME(4, 4),
ANIMCMD_FRAME(1, 4),
@@ -85,7 +85,7 @@ const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFastNorth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFastWest[] =
+static const union AnimCmd sAnim_QuintyPlumpGoFastWest[] =
{
ANIMCMD_FRAME(5, 4),
ANIMCMD_FRAME(2, 4),
@@ -94,7 +94,7 @@ const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFastWest[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFastEast[] =
+static const union AnimCmd sAnim_QuintyPlumpGoFastEast[] =
{
ANIMCMD_FRAME(5, 4, .hFlip = TRUE),
ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
@@ -103,7 +103,7 @@ const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFastEast[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFasterSouth[] =
+static const union AnimCmd sAnim_QuintyPlumpGoFasterSouth[] =
{
ANIMCMD_FRAME(3, 2),
ANIMCMD_FRAME(0, 2),
@@ -112,7 +112,7 @@ const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFasterSouth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFasterNorth[] =
+static const union AnimCmd sAnim_QuintyPlumpGoFasterNorth[] =
{
ANIMCMD_FRAME(4, 2),
ANIMCMD_FRAME(1, 2),
@@ -121,7 +121,7 @@ const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFasterNorth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFasterWest[] =
+static const union AnimCmd sAnim_QuintyPlumpGoFasterWest[] =
{
ANIMCMD_FRAME(5, 2),
ANIMCMD_FRAME(2, 2),
@@ -130,7 +130,7 @@ const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFasterWest[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFasterEast[] =
+static const union AnimCmd sAnim_QuintyPlumpGoFasterEast[] =
{
ANIMCMD_FRAME(5, 2, .hFlip = TRUE),
ANIMCMD_FRAME(2, 2, .hFlip = TRUE),
@@ -139,7 +139,7 @@ const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFasterEast[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFastestSouth[] =
+static const union AnimCmd sAnim_QuintyPlumpGoFastestSouth[] =
{
ANIMCMD_FRAME(3, 1),
ANIMCMD_FRAME(0, 1),
@@ -148,7 +148,7 @@ const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFastestSouth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFastestNorth[] =
+static const union AnimCmd sAnim_QuintyPlumpGoFastestNorth[] =
{
ANIMCMD_FRAME(4, 1),
ANIMCMD_FRAME(1, 1),
@@ -157,7 +157,7 @@ const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFastestNorth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFastestWest[] =
+static const union AnimCmd sAnim_QuintyPlumpGoFastestWest[] =
{
ANIMCMD_FRAME(5, 1),
ANIMCMD_FRAME(2, 1),
@@ -166,7 +166,7 @@ const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFastestWest[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFastestEast[] =
+static const union AnimCmd sAnim_QuintyPlumpGoFastestEast[] =
{
ANIMCMD_FRAME(5, 1, .hFlip = TRUE),
ANIMCMD_FRAME(2, 1, .hFlip = TRUE),
@@ -175,31 +175,31 @@ const union AnimCmd gObjectEventImageAnim_QuintyPlumpGoFastestEast[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_FaceSouth[] =
+static const union AnimCmd sAnim_FaceSouth[] =
{
ANIMCMD_FRAME(0, 16),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_FaceNorth[] =
+static const union AnimCmd sAnim_FaceNorth[] =
{
ANIMCMD_FRAME(1, 16),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_FaceWest[] =
+static const union AnimCmd sAnim_FaceWest[] =
{
ANIMCMD_FRAME(2, 16),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_FaceEast[] =
+static const union AnimCmd sAnim_FaceEast[] =
{
ANIMCMD_FRAME(2, 16, .hFlip = TRUE),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GoSouth[] =
+static const union AnimCmd sAnim_GoSouth[] =
{
ANIMCMD_FRAME(3, 8),
ANIMCMD_FRAME(0, 8),
@@ -208,7 +208,7 @@ const union AnimCmd gObjectEventImageAnim_GoSouth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GoNorth[] =
+static const union AnimCmd sAnim_GoNorth[] =
{
ANIMCMD_FRAME(5, 8),
ANIMCMD_FRAME(1, 8),
@@ -217,7 +217,7 @@ const union AnimCmd gObjectEventImageAnim_GoNorth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GoWest[] =
+static const union AnimCmd sAnim_GoWest[] =
{
ANIMCMD_FRAME(7, 8),
ANIMCMD_FRAME(2, 8),
@@ -226,7 +226,7 @@ const union AnimCmd gObjectEventImageAnim_GoWest[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GoEast[] =
+static const union AnimCmd sAnim_GoEast[] =
{
ANIMCMD_FRAME(7, 8, .hFlip = TRUE),
ANIMCMD_FRAME(2, 8, .hFlip = TRUE),
@@ -235,7 +235,7 @@ const union AnimCmd gObjectEventImageAnim_GoEast[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GoFastSouth[] =
+static const union AnimCmd sAnim_GoFastSouth[] =
{
ANIMCMD_FRAME(3, 4),
ANIMCMD_FRAME(0, 4),
@@ -244,7 +244,7 @@ const union AnimCmd gObjectEventImageAnim_GoFastSouth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GoFastNorth[] =
+static const union AnimCmd sAnim_GoFastNorth[] =
{
ANIMCMD_FRAME(5, 4),
ANIMCMD_FRAME(1, 4),
@@ -253,7 +253,7 @@ const union AnimCmd gObjectEventImageAnim_GoFastNorth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GoFastWest[] =
+static const union AnimCmd sAnim_GoFastWest[] =
{
ANIMCMD_FRAME(7, 4),
ANIMCMD_FRAME(2, 4),
@@ -262,7 +262,7 @@ const union AnimCmd gObjectEventImageAnim_GoFastWest[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GoFastEast[] =
+static const union AnimCmd sAnim_GoFastEast[] =
{
ANIMCMD_FRAME(7, 4, .hFlip = TRUE),
ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
@@ -271,7 +271,7 @@ const union AnimCmd gObjectEventImageAnim_GoFastEast[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GoFasterSouth[] =
+static const union AnimCmd sAnim_GoFasterSouth[] =
{
ANIMCMD_FRAME(3, 2),
ANIMCMD_FRAME(0, 2),
@@ -280,7 +280,7 @@ const union AnimCmd gObjectEventImageAnim_GoFasterSouth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GoFasterNorth[] =
+static const union AnimCmd sAnim_GoFasterNorth[] =
{
ANIMCMD_FRAME(5, 2),
ANIMCMD_FRAME(1, 2),
@@ -289,7 +289,7 @@ const union AnimCmd gObjectEventImageAnim_GoFasterNorth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GoFasterWest[] =
+static const union AnimCmd sAnim_GoFasterWest[] =
{
ANIMCMD_FRAME(7, 2),
ANIMCMD_FRAME(2, 2),
@@ -298,7 +298,7 @@ const union AnimCmd gObjectEventImageAnim_GoFasterWest[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GoFasterEast[] =
+static const union AnimCmd sAnim_GoFasterEast[] =
{
ANIMCMD_FRAME(7, 2, .hFlip = TRUE),
ANIMCMD_FRAME(2, 2, .hFlip = TRUE),
@@ -307,7 +307,7 @@ const union AnimCmd gObjectEventImageAnim_GoFasterEast[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GoFastestSouth[] =
+static const union AnimCmd sAnim_GoFastestSouth[] =
{
ANIMCMD_FRAME(3, 1),
ANIMCMD_FRAME(0, 1),
@@ -316,7 +316,7 @@ const union AnimCmd gObjectEventImageAnim_GoFastestSouth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GoFastestNorth[] =
+static const union AnimCmd sAnim_GoFastestNorth[] =
{
ANIMCMD_FRAME(5, 1),
ANIMCMD_FRAME(1, 1),
@@ -325,7 +325,7 @@ const union AnimCmd gObjectEventImageAnim_GoFastestNorth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GoFastestWest[] =
+static const union AnimCmd sAnim_GoFastestWest[] =
{
ANIMCMD_FRAME(7, 1),
ANIMCMD_FRAME(2, 1),
@@ -334,7 +334,7 @@ const union AnimCmd gObjectEventImageAnim_GoFastestWest[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GoFastestEast[] =
+static const union AnimCmd sAnim_GoFastestEast[] =
{
ANIMCMD_FRAME(7, 1, .hFlip = TRUE),
ANIMCMD_FRAME(2, 1, .hFlip = TRUE),
@@ -343,7 +343,7 @@ const union AnimCmd gObjectEventImageAnim_GoFastestEast[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_RunSouth[] =
+static const union AnimCmd sAnim_RunSouth[] =
{
ANIMCMD_FRAME(12, 5),
ANIMCMD_FRAME(9, 3),
@@ -352,7 +352,7 @@ const union AnimCmd gObjectEventImageAnim_RunSouth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_RunNorth[] =
+static const union AnimCmd sAnim_RunNorth[] =
{
ANIMCMD_FRAME(14, 5),
ANIMCMD_FRAME(10, 3),
@@ -361,7 +361,7 @@ const union AnimCmd gObjectEventImageAnim_RunNorth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_RunWest[] =
+static const union AnimCmd sAnim_RunWest[] =
{
ANIMCMD_FRAME(16, 5),
ANIMCMD_FRAME(11, 3),
@@ -370,7 +370,7 @@ const union AnimCmd gObjectEventImageAnim_RunWest[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_RunEast[] =
+static const union AnimCmd sAnim_RunEast[] =
{
ANIMCMD_FRAME(16, 5, .hFlip = TRUE),
ANIMCMD_FRAME(11, 3, .hFlip = TRUE),
@@ -379,7 +379,7 @@ const union AnimCmd gObjectEventImageAnim_RunEast[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_FieldMove[] =
+static const union AnimCmd sAnim_FieldMove[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(1, 4),
@@ -389,143 +389,143 @@ const union AnimCmd gObjectEventImageAnim_FieldMove[] =
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_GetOnOffSurfBlobSouth[] =
+static const union AnimCmd sAnim_GetOnOffSurfBlobSouth[] =
{
ANIMCMD_FRAME(9, 32),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GetOnOffSurfBlobNorth[] =
+static const union AnimCmd sAnim_GetOnOffSurfBlobNorth[] =
{
ANIMCMD_FRAME(10, 32),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GetOnOffSurfBlobWest[] =
+static const union AnimCmd sAnim_GetOnOffSurfBlobWest[] =
{
ANIMCMD_FRAME(11, 32),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_GetOnOffSurfBlobEast[] =
+static const union AnimCmd sAnim_GetOnOffSurfBlobEast[] =
{
ANIMCMD_FRAME(11, 32, .hFlip = TRUE),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_BunnyHoppyBackWheelSouth[] =
+static const union AnimCmd sAnim_BunnyHoppyBackWheelSouth[] =
{
ANIMCMD_FRAME(9, 4),
ANIMCMD_FRAME(10, 4),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_BunnyHoppyBackWheelNorth[] =
+static const union AnimCmd sAnim_BunnyHoppyBackWheelNorth[] =
{
ANIMCMD_FRAME(13, 4),
ANIMCMD_FRAME(14, 4),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_BunnyHoppyBackWheelWest[] =
+static const union AnimCmd sAnim_BunnyHoppyBackWheelWest[] =
{
ANIMCMD_FRAME(17, 4),
ANIMCMD_FRAME(18, 4),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_BunnyHoppyBackWheelEast[] =
+static const union AnimCmd sAnim_BunnyHoppyBackWheelEast[] =
{
ANIMCMD_FRAME(17, 4, .hFlip = TRUE),
ANIMCMD_FRAME(18, 4, .hFlip = TRUE),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_BunnyHoppyFrontWheelSouth[] =
+static const union AnimCmd sAnim_BunnyHoppyFrontWheelSouth[] =
{
ANIMCMD_FRAME(11, 4),
ANIMCMD_FRAME(12, 4),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_BunnyHoppyFrontWheelNorth[] =
+static const union AnimCmd sAnim_BunnyHoppyFrontWheelNorth[] =
{
ANIMCMD_FRAME(15, 4),
ANIMCMD_FRAME(16, 4),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_BunnyHoppyFrontWheelWest[] =
+static const union AnimCmd sAnim_BunnyHoppyFrontWheelWest[] =
{
ANIMCMD_FRAME(19, 4),
ANIMCMD_FRAME(20, 4),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_BunnyHoppyFrontWheelEast[] =
+static const union AnimCmd sAnim_BunnyHoppyFrontWheelEast[] =
{
ANIMCMD_FRAME(19, 4, .hFlip = TRUE),
ANIMCMD_FRAME(20, 4, .hFlip = TRUE),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_StandingWheelieBackWheelSouth[] =
+static const union AnimCmd sAnim_StandingWheelieBackWheelSouth[] =
{
ANIMCMD_FRAME(9, 4),
ANIMCMD_FRAME(0, 4),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_StandingWheelieBackWheelNorth[] =
+static const union AnimCmd sAnim_StandingWheelieBackWheelNorth[] =
{
ANIMCMD_FRAME(13, 4),
ANIMCMD_FRAME(1, 4),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_StandingWheelieBackWheelWest[] =
+static const union AnimCmd sAnim_StandingWheelieBackWheelWest[] =
{
ANIMCMD_FRAME(17, 4),
ANIMCMD_FRAME(2, 4),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_StandingWheelieBackWheelEast[] =
+static const union AnimCmd sAnim_StandingWheelieBackWheelEast[] =
{
ANIMCMD_FRAME(17, 4, .hFlip = TRUE),
ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_StandingWheelieFrontWheelSouth[] =
+static const union AnimCmd sAnim_StandingWheelieFrontWheelSouth[] =
{
ANIMCMD_FRAME(11, 4),
ANIMCMD_FRAME(0, 4),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_StandingWheelieFrontWheelNorth[] =
+static const union AnimCmd sAnim_StandingWheelieFrontWheelNorth[] =
{
ANIMCMD_FRAME(15, 4),
ANIMCMD_FRAME(1, 4),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_StandingWheelieFrontWheelWest[] =
+static const union AnimCmd sAnim_StandingWheelieFrontWheelWest[] =
{
ANIMCMD_FRAME(19, 4),
ANIMCMD_FRAME(2, 4),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_StandingWheelieFrontWheelEast[] =
+static const union AnimCmd sAnim_StandingWheelieFrontWheelEast[] =
{
ANIMCMD_FRAME(19, 4, .hFlip = TRUE),
ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_MovingWheelieSouth[] =
+static const union AnimCmd sAnim_MovingWheelieSouth[] =
{
ANIMCMD_FRAME(21, 4),
ANIMCMD_FRAME(10, 4),
@@ -534,7 +534,7 @@ const union AnimCmd gObjectEventImageAnim_MovingWheelieSouth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_MovingWheelieNorth[] =
+static const union AnimCmd sAnim_MovingWheelieNorth[] =
{
ANIMCMD_FRAME(23, 4),
ANIMCMD_FRAME(14, 4),
@@ -543,7 +543,7 @@ const union AnimCmd gObjectEventImageAnim_MovingWheelieNorth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_MovingWheelieWest[] =
+static const union AnimCmd sAnim_MovingWheelieWest[] =
{
ANIMCMD_FRAME(25, 4),
ANIMCMD_FRAME(18, 4),
@@ -552,7 +552,7 @@ const union AnimCmd gObjectEventImageAnim_MovingWheelieWest[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_MovingWheelieEast[] =
+static const union AnimCmd sAnim_MovingWheelieEast[] =
{
ANIMCMD_FRAME(25, 4, .hFlip = TRUE),
ANIMCMD_FRAME(18, 4, .hFlip = TRUE),
@@ -561,27 +561,27 @@ const union AnimCmd gObjectEventImageAnim_MovingWheelieEast[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_BerryTreeStage0[] =
+static const union AnimCmd sAnim_BerryTreeStage0[] =
{
ANIMCMD_FRAME(0, 32),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_BerryTreeStage1[] =
+static const union AnimCmd sAnim_BerryTreeStage1[] =
{
ANIMCMD_FRAME(1, 32),
ANIMCMD_FRAME(2, 32),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_BerryTreeStage2[] =
+static const union AnimCmd sAnim_BerryTreeStage2[] =
{
ANIMCMD_FRAME(3, 48),
ANIMCMD_FRAME(4, 48),
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_BerryTreeStage3[] =
+static const union AnimCmd sAnim_BerryTreeStage3[] =
{
ANIMCMD_FRAME(5, 32),
ANIMCMD_FRAME(5, 32),
@@ -590,7 +590,7 @@ const union AnimCmd gObjectEventImageAnim_BerryTreeStage3[] =
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_BerryTreeStage4[] =
+static const union AnimCmd sAnim_BerryTreeStage4[] =
{
ANIMCMD_FRAME(7, 48),
ANIMCMD_FRAME(7, 48),
@@ -599,7 +599,7 @@ const union AnimCmd gObjectEventImageAnim_BerryTreeStage4[] =
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_NurseBow[] =
+static const union AnimCmd sAnim_NurseBow[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(9, 32),
@@ -607,7 +607,7 @@ const union AnimCmd gObjectEventImageAnim_NurseBow[] =
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_RockBreak[] =
+static const union AnimCmd sAnim_RockBreak[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 8),
@@ -616,7 +616,7 @@ const union AnimCmd gObjectEventImageAnim_RockBreak[] =
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_TreeCut[] =
+static const union AnimCmd sAnim_TreeCut[] =
{
ANIMCMD_FRAME(0, 6),
ANIMCMD_FRAME(1, 6),
@@ -625,7 +625,7 @@ const union AnimCmd gObjectEventImageAnim_TreeCut[] =
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_TakeOutRodSouth[] =
+static const union AnimCmd sAnim_TakeOutRodSouth[] =
{
ANIMCMD_FRAME(8, 4),
ANIMCMD_FRAME(9, 4),
@@ -634,7 +634,7 @@ const union AnimCmd gObjectEventImageAnim_TakeOutRodSouth[] =
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_TakeOutRodNorth[] =
+static const union AnimCmd sAnim_TakeOutRodNorth[] =
{
ANIMCMD_FRAME(4, 4),
ANIMCMD_FRAME(5, 4),
@@ -643,7 +643,7 @@ const union AnimCmd gObjectEventImageAnim_TakeOutRodNorth[] =
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_TakeOutRodWest[] =
+static const union AnimCmd sAnim_TakeOutRodWest[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(1, 4),
@@ -652,7 +652,7 @@ const union AnimCmd gObjectEventImageAnim_TakeOutRodWest[] =
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_TakeOutRodEast[] =
+static const union AnimCmd sAnim_TakeOutRodEast[] =
{
ANIMCMD_FRAME(0, 4, .hFlip = TRUE),
ANIMCMD_FRAME(1, 4, .hFlip = TRUE),
@@ -661,7 +661,7 @@ const union AnimCmd gObjectEventImageAnim_TakeOutRodEast[] =
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_PutAwayRodSouth[] =
+static const union AnimCmd sAnim_PutAwayRodSouth[] =
{
ANIMCMD_FRAME(11, 4),
ANIMCMD_FRAME(10, 6),
@@ -670,7 +670,7 @@ const union AnimCmd gObjectEventImageAnim_PutAwayRodSouth[] =
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_PutAwayRodNorth[] =
+static const union AnimCmd sAnim_PutAwayRodNorth[] =
{
ANIMCMD_FRAME(7, 4),
ANIMCMD_FRAME(6, 6),
@@ -679,7 +679,7 @@ const union AnimCmd gObjectEventImageAnim_PutAwayRodNorth[] =
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_PutAwayRodWest[] =
+static const union AnimCmd sAnim_PutAwayRodWest[] =
{
ANIMCMD_FRAME(3, 4),
ANIMCMD_FRAME(2, 4),
@@ -688,7 +688,7 @@ const union AnimCmd gObjectEventImageAnim_PutAwayRodWest[] =
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_PutAwayRodEast[] =
+static const union AnimCmd sAnim_PutAwayRodEast[] =
{
ANIMCMD_FRAME(3, 4, .hFlip = TRUE),
ANIMCMD_FRAME(2, 4, .hFlip = TRUE),
@@ -697,7 +697,7 @@ const union AnimCmd gObjectEventImageAnim_PutAwayRodEast[] =
ANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_HookedPokemonSouth[] =
+static const union AnimCmd sAnim_HookedPokemonSouth[] =
{
ANIMCMD_FRAME(10, 6),
ANIMCMD_FRAME(11, 6),
@@ -706,7 +706,7 @@ const union AnimCmd gObjectEventImageAnim_HookedPokemonSouth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_HookedPokemonNorth[] =
+static const union AnimCmd sAnim_HookedPokemonNorth[] =
{
ANIMCMD_FRAME(6, 6),
ANIMCMD_FRAME(7, 6),
@@ -715,7 +715,7 @@ const union AnimCmd gObjectEventImageAnim_HookedPokemonNorth[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_HookedPokemonWest[] =
+static const union AnimCmd sAnim_HookedPokemonWest[] =
{
ANIMCMD_FRAME(2, 6),
ANIMCMD_FRAME(3, 6),
@@ -724,7 +724,7 @@ const union AnimCmd gObjectEventImageAnim_HookedPokemonWest[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_HookedPokemonEast[] =
+static const union AnimCmd sAnim_HookedPokemonEast[] =
{
ANIMCMD_FRAME(2, 6, .hFlip = TRUE),
ANIMCMD_FRAME(3, 6, .hFlip = TRUE),
@@ -733,7 +733,7 @@ const union AnimCmd gObjectEventImageAnim_HookedPokemonEast[] =
ANIMCMD_JUMP(0),
};
-const union AffineAnimCmd gObjectEventRotScalAnim_8508FD8[] =
+static const union AffineAnimCmd sAffineAnim_KyogreGroudon_GoSouthStart[] =
{
AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 1),
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
@@ -743,7 +743,7 @@ const union AffineAnimCmd gObjectEventRotScalAnim_8508FD8[] =
AFFINEANIMCMD_JUMP(0),
};
-const union AffineAnimCmd gObjectEventRotScalAnim_8509008[] =
+static const union AffineAnimCmd sAffineAnim_KyogreGroudon_GoSouth[] =
{
AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 1),
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1),
@@ -754,33 +754,33 @@ const union AffineAnimCmd gObjectEventRotScalAnim_8509008[] =
AFFINEANIMCMD_JUMP(0),
};
-const union AffineAnimCmd gObjectEventRotScalAnim_8509040[] =
+static const union AffineAnimCmd sAffineAnim_KyogreGroudon_AttackEast[] =
{
AFFINEANIMCMD_FRAME(0x100, 0x100, 10, 0),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gObjectEventRotScalAnim_8509050[] =
+static const union AffineAnimCmd sAffineAnim_KyogreGroudon_AttackWest[] =
{
AFFINEANIMCMD_FRAME(0x100, 0x100, 10, 0),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gObjectEventRotScalAnim_8509060[] =
+static const union AffineAnimCmd sAffineAnim_KyogreGroudon_DipEast[] =
{
AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 1),
AFFINEANIMCMD_LOOP(8),
AFFINEANIMCMD_END,
};
-const union AffineAnimCmd gObjectEventRotScalAnim_8509078[] =
+static const union AffineAnimCmd sAffineAnim_KyogreGroudon_DipWest[] =
{
AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 1),
AFFINEANIMCMD_LOOP(8),
AFFINEANIMCMD_END,
};
-const union AnimCmd gObjectEventImageAnim_HoOhFlapWings[] =
+static const union AnimCmd sAnim_HoOhFlapWings[] =
{
ANIMCMD_FRAME(3, 8),
ANIMCMD_FRAME(4, 8),
@@ -789,383 +789,389 @@ const union AnimCmd gObjectEventImageAnim_HoOhFlapWings[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_HoOhStayStill[] =
+static const union AnimCmd sAnim_HoOhStayStill[] =
{
ANIMCMD_FRAME(3, 16),
ANIMCMD_JUMP(0),
};
-const union AnimCmd *const gObjectEventImageAnimTable_Inanimate[] = {
- gObjectEventImageAnim_StayStill,
-};
-
-const union AnimCmd *const gObjectEventImageAnimTable_QuintyPlump[] = {
- gObjectEventImageAnim_QuintyPlumpFaceSouth,
- gObjectEventImageAnim_QuintyPlumpFaceNorth,
- gObjectEventImageAnim_QuintyPlumpFaceWest,
- gObjectEventImageAnim_QuintyPlumpFaceEast,
- gObjectEventImageAnim_QuintyPlumpGoSouth,
- gObjectEventImageAnim_QuintyPlumpGoNorth,
- gObjectEventImageAnim_QuintyPlumpGoWest,
- gObjectEventImageAnim_QuintyPlumpGoEast,
- gObjectEventImageAnim_QuintyPlumpGoFastSouth,
- gObjectEventImageAnim_QuintyPlumpGoFastNorth,
- gObjectEventImageAnim_QuintyPlumpGoFastWest,
- gObjectEventImageAnim_QuintyPlumpGoFastEast,
- gObjectEventImageAnim_QuintyPlumpGoFasterSouth,
- gObjectEventImageAnim_QuintyPlumpGoFasterNorth,
- gObjectEventImageAnim_QuintyPlumpGoFasterWest,
- gObjectEventImageAnim_QuintyPlumpGoFasterEast,
- gObjectEventImageAnim_QuintyPlumpGoFastestSouth,
- gObjectEventImageAnim_QuintyPlumpGoFastestNorth,
- gObjectEventImageAnim_QuintyPlumpGoFastestWest,
- gObjectEventImageAnim_QuintyPlumpGoFastestEast,
-};
-
-const union AnimCmd *const gObjectEventImageAnimTable_Standard[] = {
- gObjectEventImageAnim_FaceSouth,
- gObjectEventImageAnim_FaceNorth,
- gObjectEventImageAnim_FaceWest,
- gObjectEventImageAnim_FaceEast,
- gObjectEventImageAnim_GoSouth,
- gObjectEventImageAnim_GoNorth,
- gObjectEventImageAnim_GoWest,
- gObjectEventImageAnim_GoEast,
- gObjectEventImageAnim_GoFastSouth,
- gObjectEventImageAnim_GoFastNorth,
- gObjectEventImageAnim_GoFastWest,
- gObjectEventImageAnim_GoFastEast,
- gObjectEventImageAnim_GoFasterSouth,
- gObjectEventImageAnim_GoFasterNorth,
- gObjectEventImageAnim_GoFasterWest,
- gObjectEventImageAnim_GoFasterEast,
- gObjectEventImageAnim_GoFastestSouth,
- gObjectEventImageAnim_GoFastestNorth,
- gObjectEventImageAnim_GoFastestWest,
- gObjectEventImageAnim_GoFastestEast,
-};
-
-const union AnimCmd *const gObjectEventImageAnimTable_HoOh[] = {
- gObjectEventImageAnim_FaceSouth,
- gObjectEventImageAnim_FaceNorth,
- gObjectEventImageAnim_FaceWest,
- gObjectEventImageAnim_FaceEast,
- gObjectEventImageAnim_HoOhFlapWings,
- gObjectEventImageAnim_HoOhStayStill,
- gObjectEventImageAnim_GoWest,
- gObjectEventImageAnim_GoEast,
- gObjectEventImageAnim_GoFastSouth,
- gObjectEventImageAnim_GoFastNorth,
- gObjectEventImageAnim_GoFastWest,
- gObjectEventImageAnim_GoFastEast,
- gObjectEventImageAnim_GoFasterSouth,
- gObjectEventImageAnim_GoFasterNorth,
- gObjectEventImageAnim_GoFasterWest,
- gObjectEventImageAnim_GoFasterEast,
- gObjectEventImageAnim_GoFastestSouth,
- gObjectEventImageAnim_GoFastestNorth,
- gObjectEventImageAnim_GoFastestWest,
- gObjectEventImageAnim_GoFastestEast,
-};
-
-const union AnimCmd *const gObjectEventImageAnimTable_Groudon3[] = {
- gObjectEventImageAnim_FaceSouth,
- gObjectEventImageAnim_FaceNorth,
- gObjectEventImageAnim_FaceWest,
- gObjectEventImageAnim_FaceEast,
- gObjectEventImageAnim_GoSouth,
- gObjectEventImageAnim_GoEast,
- gObjectEventImageAnim_GoWest,
- gObjectEventImageAnim_GoEast,
- gObjectEventImageAnim_GoFastSouth,
- gObjectEventImageAnim_GoFastEast,
- gObjectEventImageAnim_GoFastWest,
- gObjectEventImageAnim_GoFastEast,
- gObjectEventImageAnim_GoFasterSouth,
- gObjectEventImageAnim_GoFasterEast,
- gObjectEventImageAnim_GoFasterWest,
- gObjectEventImageAnim_GoFasterEast,
- gObjectEventImageAnim_GoFastestSouth,
- gObjectEventImageAnim_GoFastestEast,
- gObjectEventImageAnim_GoFastestWest,
- gObjectEventImageAnim_GoFastestEast,
-};
-
-const union AnimCmd gObjectEventImageAnim_85091F0[] =
+static const union AnimCmd *const sAnimTable_Inanimate[] = {
+ sAnim_StayStill,
+};
+
+static const union AnimCmd *const sAnimTable_QuintyPlump[] = {
+ sAnim_QuintyPlumpFaceSouth,
+ sAnim_QuintyPlumpFaceNorth,
+ sAnim_QuintyPlumpFaceWest,
+ sAnim_QuintyPlumpFaceEast,
+ sAnim_QuintyPlumpGoSouth,
+ sAnim_QuintyPlumpGoNorth,
+ sAnim_QuintyPlumpGoWest,
+ sAnim_QuintyPlumpGoEast,
+ sAnim_QuintyPlumpGoFastSouth,
+ sAnim_QuintyPlumpGoFastNorth,
+ sAnim_QuintyPlumpGoFastWest,
+ sAnim_QuintyPlumpGoFastEast,
+ sAnim_QuintyPlumpGoFasterSouth,
+ sAnim_QuintyPlumpGoFasterNorth,
+ sAnim_QuintyPlumpGoFasterWest,
+ sAnim_QuintyPlumpGoFasterEast,
+ sAnim_QuintyPlumpGoFastestSouth,
+ sAnim_QuintyPlumpGoFastestNorth,
+ sAnim_QuintyPlumpGoFastestWest,
+ sAnim_QuintyPlumpGoFastestEast,
+};
+
+static const union AnimCmd *const sAnimTable_Standard[] = {
+ sAnim_FaceSouth,
+ sAnim_FaceNorth,
+ sAnim_FaceWest,
+ sAnim_FaceEast,
+ sAnim_GoSouth,
+ sAnim_GoNorth,
+ sAnim_GoWest,
+ sAnim_GoEast,
+ sAnim_GoFastSouth,
+ sAnim_GoFastNorth,
+ sAnim_GoFastWest,
+ sAnim_GoFastEast,
+ sAnim_GoFasterSouth,
+ sAnim_GoFasterNorth,
+ sAnim_GoFasterWest,
+ sAnim_GoFasterEast,
+ sAnim_GoFastestSouth,
+ sAnim_GoFastestNorth,
+ sAnim_GoFastestWest,
+ sAnim_GoFastestEast,
+};
+
+static const union AnimCmd *const sAnimTable_HoOh[] = {
+ sAnim_FaceSouth,
+ sAnim_FaceNorth,
+ sAnim_FaceWest,
+ sAnim_FaceEast,
+ sAnim_HoOhFlapWings,
+ sAnim_HoOhStayStill,
+ sAnim_GoWest,
+ sAnim_GoEast,
+ sAnim_GoFastSouth,
+ sAnim_GoFastNorth,
+ sAnim_GoFastWest,
+ sAnim_GoFastEast,
+ sAnim_GoFasterSouth,
+ sAnim_GoFasterNorth,
+ sAnim_GoFasterWest,
+ sAnim_GoFasterEast,
+ sAnim_GoFastestSouth,
+ sAnim_GoFastestNorth,
+ sAnim_GoFastestWest,
+ sAnim_GoFastestEast,
+};
+
+static const union AnimCmd *const sAnimTable_GroudonSide[] = {
+ sAnim_FaceSouth,
+ sAnim_FaceNorth,
+ sAnim_FaceWest,
+ sAnim_FaceEast,
+ sAnim_GoSouth,
+ sAnim_GoEast,
+ sAnim_GoWest,
+ sAnim_GoEast,
+ sAnim_GoFastSouth,
+ sAnim_GoFastEast,
+ sAnim_GoFastWest,
+ sAnim_GoFastEast,
+ sAnim_GoFasterSouth,
+ sAnim_GoFasterEast,
+ sAnim_GoFasterWest,
+ sAnim_GoFasterEast,
+ sAnim_GoFastestSouth,
+ sAnim_GoFastestEast,
+ sAnim_GoFastestWest,
+ sAnim_GoFastestEast,
+};
+
+static const union AnimCmd sAnim_RayquazaCoiledAwake[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_85091F8[] =
+static const union AnimCmd sAnim_RayquazaFlyUp[] =
{
ANIMCMD_FRAME(4, 1),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_8509200[] =
+static const union AnimCmd sAnim_RayquazaCoiledAsleep[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_8509208[] =
+static const union AnimCmd sAnim_RayquazaCoiledMouthOpen[] =
{
ANIMCMD_FRAME(2, 1),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_8509210[] =
+static const union AnimCmd sAnim_RayquazaNormal[] =
{
ANIMCMD_FRAME(3, 1),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_8509218[] =
+// Identical to sAnim_RayquazaCoiledAsleep
+static const union AnimCmd sAnim_RayquazaFaceSouth[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_8509220[] =
+// Identical to sAnim_RayquazaCoiledAsleep
+static const union AnimCmd sAnim_RayquazaFaceNorth[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_8509228[] =
+// Identical to sAnim_RayquazaCoiledAsleep
+static const union AnimCmd sAnim_RayquazaFaceWest[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gObjectEventImageAnim_8509230[] =
+// Identical to sAnim_RayquazaNormal
+static const union AnimCmd sAnim_RayquazaFaceEast[] =
{
ANIMCMD_FRAME(3, 1),
ANIMCMD_JUMP(0),
};
-const union AnimCmd *const gObjectEventImageAnimTable_Rayquaza2[] = {
- gObjectEventImageAnim_8509218,
- gObjectEventImageAnim_8509220,
- gObjectEventImageAnim_8509228,
- gObjectEventImageAnim_8509230,
- gObjectEventImageAnim_8509200,
- gObjectEventImageAnim_85091F8,
- gObjectEventImageAnim_8509208,
- gObjectEventImageAnim_8509210,
- gObjectEventImageAnim_8509200,
- gObjectEventImageAnim_85091F8,
- gObjectEventImageAnim_85091F0,
- gObjectEventImageAnim_8509210,
- gObjectEventImageAnim_8509200,
- gObjectEventImageAnim_85091F8,
- gObjectEventImageAnim_8509208,
- gObjectEventImageAnim_8509210,
- gObjectEventImageAnim_8509200,
- gObjectEventImageAnim_85091F8,
- gObjectEventImageAnim_8509208,
- gObjectEventImageAnim_8509210,
-};
-
-const union AnimCmd *const gObjectEventImageAnimTable_BrendanMayNormal[] = {
- gObjectEventImageAnim_FaceSouth,
- gObjectEventImageAnim_FaceNorth,
- gObjectEventImageAnim_FaceWest,
- gObjectEventImageAnim_FaceEast,
- gObjectEventImageAnim_GoSouth,
- gObjectEventImageAnim_GoNorth,
- gObjectEventImageAnim_GoWest,
- gObjectEventImageAnim_GoEast,
- gObjectEventImageAnim_GoFastSouth,
- gObjectEventImageAnim_GoFastNorth,
- gObjectEventImageAnim_GoFastWest,
- gObjectEventImageAnim_GoFastEast,
- gObjectEventImageAnim_GoFasterSouth,
- gObjectEventImageAnim_GoFasterNorth,
- gObjectEventImageAnim_GoFasterWest,
- gObjectEventImageAnim_GoFasterEast,
- gObjectEventImageAnim_GoFastestSouth,
- gObjectEventImageAnim_GoFastestNorth,
- gObjectEventImageAnim_GoFastestWest,
- gObjectEventImageAnim_GoFastestEast,
- gObjectEventImageAnim_RunSouth,
- gObjectEventImageAnim_RunNorth,
- gObjectEventImageAnim_RunWest,
- gObjectEventImageAnim_RunEast,
-};
-
-const union AnimCmd *const gObjectEventImageAnimTable_AcroBike[] = {
- gObjectEventImageAnim_FaceSouth,
- gObjectEventImageAnim_FaceNorth,
- gObjectEventImageAnim_FaceWest,
- gObjectEventImageAnim_FaceEast,
- gObjectEventImageAnim_GoSouth,
- gObjectEventImageAnim_GoNorth,
- gObjectEventImageAnim_GoWest,
- gObjectEventImageAnim_GoEast,
- gObjectEventImageAnim_GoFastSouth,
- gObjectEventImageAnim_GoFastNorth,
- gObjectEventImageAnim_GoFastWest,
- gObjectEventImageAnim_GoFastEast,
- gObjectEventImageAnim_GoFasterSouth,
- gObjectEventImageAnim_GoFasterNorth,
- gObjectEventImageAnim_GoFasterWest,
- gObjectEventImageAnim_GoFasterEast,
- gObjectEventImageAnim_GoFastestSouth,
- gObjectEventImageAnim_GoFastestNorth,
- gObjectEventImageAnim_GoFastestWest,
- gObjectEventImageAnim_GoFastestEast,
- gObjectEventImageAnim_BunnyHoppyBackWheelSouth,
- gObjectEventImageAnim_BunnyHoppyBackWheelNorth,
- gObjectEventImageAnim_BunnyHoppyBackWheelWest,
- gObjectEventImageAnim_BunnyHoppyBackWheelEast,
- gObjectEventImageAnim_BunnyHoppyFrontWheelSouth,
- gObjectEventImageAnim_BunnyHoppyFrontWheelNorth,
- gObjectEventImageAnim_BunnyHoppyFrontWheelWest,
- gObjectEventImageAnim_BunnyHoppyFrontWheelEast,
- gObjectEventImageAnim_StandingWheelieBackWheelSouth,
- gObjectEventImageAnim_StandingWheelieBackWheelNorth,
- gObjectEventImageAnim_StandingWheelieBackWheelWest,
- gObjectEventImageAnim_StandingWheelieBackWheelEast,
- gObjectEventImageAnim_StandingWheelieFrontWheelSouth,
- gObjectEventImageAnim_StandingWheelieFrontWheelNorth,
- gObjectEventImageAnim_StandingWheelieFrontWheelWest,
- gObjectEventImageAnim_StandingWheelieFrontWheelEast,
- gObjectEventImageAnim_MovingWheelieSouth,
- gObjectEventImageAnim_MovingWheelieNorth,
- gObjectEventImageAnim_MovingWheelieWest,
- gObjectEventImageAnim_MovingWheelieEast,
-};
-
-const union AnimCmd *const gObjectEventImageAnimTable_Surfing[] = {
- gObjectEventImageAnim_FaceSouth,
- gObjectEventImageAnim_FaceNorth,
- gObjectEventImageAnim_FaceWest,
- gObjectEventImageAnim_FaceEast,
- gObjectEventImageAnim_GoSouth,
- gObjectEventImageAnim_GoNorth,
- gObjectEventImageAnim_GoWest,
- gObjectEventImageAnim_GoEast,
- gObjectEventImageAnim_GoFastSouth,
- gObjectEventImageAnim_GoFastNorth,
- gObjectEventImageAnim_GoFastWest,
- gObjectEventImageAnim_GoFastEast,
- gObjectEventImageAnim_GoFasterSouth,
- gObjectEventImageAnim_GoFasterNorth,
- gObjectEventImageAnim_GoFasterWest,
- gObjectEventImageAnim_GoFasterEast,
- gObjectEventImageAnim_GoFastestSouth,
- gObjectEventImageAnim_GoFastestNorth,
- gObjectEventImageAnim_GoFastestWest,
- gObjectEventImageAnim_GoFastestEast,
- gObjectEventImageAnim_GetOnOffSurfBlobSouth,
- gObjectEventImageAnim_GetOnOffSurfBlobNorth,
- gObjectEventImageAnim_GetOnOffSurfBlobWest,
- gObjectEventImageAnim_GetOnOffSurfBlobEast,
-};
-
-const union AnimCmd *const gObjectEventImageAnimTable_Nurse[] = {
- gObjectEventImageAnim_FaceSouth,
- gObjectEventImageAnim_FaceNorth,
- gObjectEventImageAnim_FaceWest,
- gObjectEventImageAnim_FaceEast,
- gObjectEventImageAnim_GoSouth,
- gObjectEventImageAnim_GoNorth,
- gObjectEventImageAnim_GoWest,
- gObjectEventImageAnim_GoEast,
- gObjectEventImageAnim_GoFastSouth,
- gObjectEventImageAnim_GoFastNorth,
- gObjectEventImageAnim_GoFastWest,
- gObjectEventImageAnim_GoFastEast,
- gObjectEventImageAnim_GoFasterSouth,
- gObjectEventImageAnim_GoFasterNorth,
- gObjectEventImageAnim_GoFasterWest,
- gObjectEventImageAnim_GoFasterEast,
- gObjectEventImageAnim_GoFastestSouth,
- gObjectEventImageAnim_GoFastestNorth,
- gObjectEventImageAnim_GoFastestWest,
- gObjectEventImageAnim_GoFastestEast,
- gObjectEventImageAnim_NurseBow,
-};
-
-const union AnimCmd *const gObjectEventImageAnimTable_FieldMove[] = {
- gObjectEventImageAnim_FieldMove,
-};
-
-const union AnimCmd *const gObjectEventImageAnimTable_BerryTree[] = {
- gObjectEventImageAnim_BerryTreeStage0,
- gObjectEventImageAnim_BerryTreeStage1,
- gObjectEventImageAnim_BerryTreeStage2,
- gObjectEventImageAnim_BerryTreeStage3,
- gObjectEventImageAnim_BerryTreeStage4,
-};
-
-const union AnimCmd *const gObjectEventImageAnimTable_BreakableRock[] = {
- gObjectEventImageAnim_StayStill,
- gObjectEventImageAnim_RockBreak,
-};
-
-const union AnimCmd *const gObjectEventImageAnimTable_CuttableTree[] = {
- gObjectEventImageAnim_StayStill,
- gObjectEventImageAnim_TreeCut,
-};
-
-const union AnimCmd *const gObjectEventImageAnimTable_Fishing[] = {
- gObjectEventImageAnim_TakeOutRodSouth,
- gObjectEventImageAnim_TakeOutRodNorth,
- gObjectEventImageAnim_TakeOutRodWest,
- gObjectEventImageAnim_TakeOutRodEast,
- gObjectEventImageAnim_PutAwayRodSouth,
- gObjectEventImageAnim_PutAwayRodNorth,
- gObjectEventImageAnim_PutAwayRodWest,
- gObjectEventImageAnim_PutAwayRodEast,
- gObjectEventImageAnim_HookedPokemonSouth,
- gObjectEventImageAnim_HookedPokemonNorth,
- gObjectEventImageAnim_HookedPokemonWest,
- gObjectEventImageAnim_HookedPokemonEast,
-};
-
-const union AffineAnimCmd *const gObjectEventRotScalAnimTable_KyogreGroudon[] = {
- gObjectEventRotScalAnim_8508FD8,
- gObjectEventRotScalAnim_8509008,
- gObjectEventRotScalAnim_8509050,
- gObjectEventRotScalAnim_8509040,
- gObjectEventRotScalAnim_8509078,
- gObjectEventRotScalAnim_8509060,
-};
-
-const struct UnkStruct_085094AC gUnknown_085094AC[] = {
+// Though they correspond to facing/walking movements, Rayquaza doesn't have
+// equivalent images aside from flying up. Its other frames aside from the 'normal'
+// frame are for the sequence where it awakens on Sky Pillar.
+// The corresponding facing/walking movements are commented alongside
+static const union AnimCmd *const sAnimTable_Rayquaza[] = {
+ sAnim_RayquazaFaceSouth, // Face South
+ sAnim_RayquazaFaceNorth, // Face North
+ sAnim_RayquazaFaceWest, // Face West
+ sAnim_RayquazaFaceEast, // Face East
+ sAnim_RayquazaCoiledAsleep, // Go South
+ sAnim_RayquazaFlyUp, // Go North
+ sAnim_RayquazaCoiledMouthOpen, // Go West
+ sAnim_RayquazaNormal, // Go East
+ sAnim_RayquazaCoiledAsleep, // Go fast South
+ sAnim_RayquazaFlyUp, // Go fast North
+ sAnim_RayquazaCoiledAwake, // Go fast West
+ sAnim_RayquazaNormal, // Go fast East
+ sAnim_RayquazaCoiledAsleep, // Go faster South
+ sAnim_RayquazaFlyUp, // Go faster North
+ sAnim_RayquazaCoiledMouthOpen, // Go faster West
+ sAnim_RayquazaNormal, // Go faster East
+ sAnim_RayquazaCoiledAsleep, // Go fastest South
+ sAnim_RayquazaFlyUp, // Go fastest North
+ sAnim_RayquazaCoiledMouthOpen, // Go fastest West
+ sAnim_RayquazaNormal, // Go fastest East
+};
+
+static const union AnimCmd *const sAnimTable_BrendanMayNormal[] = {
+ sAnim_FaceSouth,
+ sAnim_FaceNorth,
+ sAnim_FaceWest,
+ sAnim_FaceEast,
+ sAnim_GoSouth,
+ sAnim_GoNorth,
+ sAnim_GoWest,
+ sAnim_GoEast,
+ sAnim_GoFastSouth,
+ sAnim_GoFastNorth,
+ sAnim_GoFastWest,
+ sAnim_GoFastEast,
+ sAnim_GoFasterSouth,
+ sAnim_GoFasterNorth,
+ sAnim_GoFasterWest,
+ sAnim_GoFasterEast,
+ sAnim_GoFastestSouth,
+ sAnim_GoFastestNorth,
+ sAnim_GoFastestWest,
+ sAnim_GoFastestEast,
+ sAnim_RunSouth,
+ sAnim_RunNorth,
+ sAnim_RunWest,
+ sAnim_RunEast,
+};
+
+static const union AnimCmd *const sAnimTable_AcroBike[] = {
+ sAnim_FaceSouth,
+ sAnim_FaceNorth,
+ sAnim_FaceWest,
+ sAnim_FaceEast,
+ sAnim_GoSouth,
+ sAnim_GoNorth,
+ sAnim_GoWest,
+ sAnim_GoEast,
+ sAnim_GoFastSouth,
+ sAnim_GoFastNorth,
+ sAnim_GoFastWest,
+ sAnim_GoFastEast,
+ sAnim_GoFasterSouth,
+ sAnim_GoFasterNorth,
+ sAnim_GoFasterWest,
+ sAnim_GoFasterEast,
+ sAnim_GoFastestSouth,
+ sAnim_GoFastestNorth,
+ sAnim_GoFastestWest,
+ sAnim_GoFastestEast,
+ sAnim_BunnyHoppyBackWheelSouth,
+ sAnim_BunnyHoppyBackWheelNorth,
+ sAnim_BunnyHoppyBackWheelWest,
+ sAnim_BunnyHoppyBackWheelEast,
+ sAnim_BunnyHoppyFrontWheelSouth,
+ sAnim_BunnyHoppyFrontWheelNorth,
+ sAnim_BunnyHoppyFrontWheelWest,
+ sAnim_BunnyHoppyFrontWheelEast,
+ sAnim_StandingWheelieBackWheelSouth,
+ sAnim_StandingWheelieBackWheelNorth,
+ sAnim_StandingWheelieBackWheelWest,
+ sAnim_StandingWheelieBackWheelEast,
+ sAnim_StandingWheelieFrontWheelSouth,
+ sAnim_StandingWheelieFrontWheelNorth,
+ sAnim_StandingWheelieFrontWheelWest,
+ sAnim_StandingWheelieFrontWheelEast,
+ sAnim_MovingWheelieSouth,
+ sAnim_MovingWheelieNorth,
+ sAnim_MovingWheelieWest,
+ sAnim_MovingWheelieEast,
+};
+
+static const union AnimCmd *const sAnimTable_Surfing[] = {
+ sAnim_FaceSouth,
+ sAnim_FaceNorth,
+ sAnim_FaceWest,
+ sAnim_FaceEast,
+ sAnim_GoSouth,
+ sAnim_GoNorth,
+ sAnim_GoWest,
+ sAnim_GoEast,
+ sAnim_GoFastSouth,
+ sAnim_GoFastNorth,
+ sAnim_GoFastWest,
+ sAnim_GoFastEast,
+ sAnim_GoFasterSouth,
+ sAnim_GoFasterNorth,
+ sAnim_GoFasterWest,
+ sAnim_GoFasterEast,
+ sAnim_GoFastestSouth,
+ sAnim_GoFastestNorth,
+ sAnim_GoFastestWest,
+ sAnim_GoFastestEast,
+ sAnim_GetOnOffSurfBlobSouth,
+ sAnim_GetOnOffSurfBlobNorth,
+ sAnim_GetOnOffSurfBlobWest,
+ sAnim_GetOnOffSurfBlobEast,
+};
+
+static const union AnimCmd *const sAnimTable_Nurse[] = {
+ sAnim_FaceSouth,
+ sAnim_FaceNorth,
+ sAnim_FaceWest,
+ sAnim_FaceEast,
+ sAnim_GoSouth,
+ sAnim_GoNorth,
+ sAnim_GoWest,
+ sAnim_GoEast,
+ sAnim_GoFastSouth,
+ sAnim_GoFastNorth,
+ sAnim_GoFastWest,
+ sAnim_GoFastEast,
+ sAnim_GoFasterSouth,
+ sAnim_GoFasterNorth,
+ sAnim_GoFasterWest,
+ sAnim_GoFasterEast,
+ sAnim_GoFastestSouth,
+ sAnim_GoFastestNorth,
+ sAnim_GoFastestWest,
+ sAnim_GoFastestEast,
+ sAnim_NurseBow,
+};
+
+static const union AnimCmd *const sAnimTable_FieldMove[] = {
+ sAnim_FieldMove,
+};
+
+static const union AnimCmd *const sAnimTable_BerryTree[] = {
+ sAnim_BerryTreeStage0,
+ sAnim_BerryTreeStage1,
+ sAnim_BerryTreeStage2,
+ sAnim_BerryTreeStage3,
+ sAnim_BerryTreeStage4,
+};
+
+static const union AnimCmd *const sAnimTable_BreakableRock[] = {
+ sAnim_StayStill,
+ sAnim_RockBreak,
+};
+
+static const union AnimCmd *const sAnimTable_CuttableTree[] = {
+ sAnim_StayStill,
+ sAnim_TreeCut,
+};
+
+static const union AnimCmd *const sAnimTable_Fishing[] = {
+ sAnim_TakeOutRodSouth,
+ sAnim_TakeOutRodNorth,
+ sAnim_TakeOutRodWest,
+ sAnim_TakeOutRodEast,
+ sAnim_PutAwayRodSouth,
+ sAnim_PutAwayRodNorth,
+ sAnim_PutAwayRodWest,
+ sAnim_PutAwayRodEast,
+ sAnim_HookedPokemonSouth,
+ sAnim_HookedPokemonNorth,
+ sAnim_HookedPokemonWest,
+ sAnim_HookedPokemonEast,
+};
+
+static const union AffineAnimCmd *const sAffineAnimTable_KyogreGroudon[] = {
+ sAffineAnim_KyogreGroudon_GoSouthStart, // Used by Kyogre/Groudon when awakened
+ sAffineAnim_KyogreGroudon_GoSouth, // Used by Kyogre/Groudon when awakened
+ sAffineAnim_KyogreGroudon_AttackWest, // Used by Kyogre during Sootopolis fight
+ sAffineAnim_KyogreGroudon_AttackEast, // Unused
+ sAffineAnim_KyogreGroudon_DipWest, // Unused
+ sAffineAnim_KyogreGroudon_DipEast, // Unused
+};
+
+// For animations with alternating steps
+static const struct StepAnimTable sStepAnimTables[] = {
{
- .anims = gObjectEventImageAnimTable_QuintyPlump,
+ .anims = sAnimTable_QuintyPlump,
.animPos = {1, 3, 0, 2},
},
{
- .anims = gObjectEventImageAnimTable_Standard,
+ .anims = sAnimTable_Standard,
.animPos = {1, 3, 0, 2},
},
{
- .anims = gObjectEventImageAnimTable_BrendanMayNormal,
+ .anims = sAnimTable_BrendanMayNormal,
.animPos = {1, 3, 0, 2},
},
{
- .anims = gObjectEventImageAnimTable_AcroBike,
+ .anims = sAnimTable_AcroBike,
.animPos = {1, 3, 0, 2},
},
{
- .anims = gObjectEventImageAnimTable_Surfing,
+ .anims = sAnimTable_Surfing,
.animPos = {1, 3, 0, 2},
},
{
- .anims = gObjectEventImageAnimTable_Nurse,
+ .anims = sAnimTable_Nurse,
.animPos = {1, 3, 0, 2},
},
{
- .anims = gObjectEventImageAnimTable_Fishing,
+ .anims = sAnimTable_Fishing,
.animPos = {1, 3, 0, 2},
},
- {
- NULL,
- {0, 0, 0, 0},
- },
+ {},
};
diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h
index c6c78dca9..ddc6a1cad 100755
--- a/src/data/object_events/object_event_graphics_info.h
+++ b/src/data/object_events/object_event_graphics_info.h
@@ -1,245 +1,245 @@
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanMachBike, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanSurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_BrendanSurfing, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_QuintyPlump = {0xFFFF, OBJ_EVENT_PAL_TAG_QUINTY_PLUMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_QuintyPlump, gObjectEventPicTable_QuintyPlump, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NinjaBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_NinjaBoy, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Twin = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Twin, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Boy1, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Girl1, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Boy2, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Girl2, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LittleBoy, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleGirl = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LittleGirl, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Boy3, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Girl3, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RichBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RichBoy, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman1, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FatMan = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_FatMan, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_PokefanF, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man1, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman2, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ExpertM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ExpertF, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man2, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman3, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_PokefanM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman4 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman4, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cook = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Cook, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkReceptionist = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LinkReceptionist, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldMan = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_OldMan, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_OldWoman, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Camper = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Camper, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Picnicker = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Picnicker, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man3, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman5 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman5, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Youngster = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Youngster, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BugCatcher = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BugCatcher, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PsychicM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_PsychicM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SchoolKidM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SchoolKidM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maniac = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Maniac, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HexManiac = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_HexManiac, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RayquazaStill, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SwimmerM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SwimmerF, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BlackBelt = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BlackBelt, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beauty = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Beauty, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Scientist1, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lass = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lass, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gentleman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Gentleman, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sailor = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Sailor, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fisherman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Fisherman, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RunningTriathleteM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RunningTriathleteF, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_TuberF, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_TuberM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hiker = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Hiker, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_CyclingTriathleteM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_CyclingTriathleteF, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nurse = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Nurse, gObjectEventPicTable_Nurse, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ItemBall = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ItemBall, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, NULL, gObjectEventImageAnimTable_BerryTree, gObjectEventPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_BerryTree, gObjectEventPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeLateStages = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BerryTree, gObjectEventPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ProfBirch = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ProfBirch, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man4 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man4, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man5 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man5, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ReporterM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ReporterF, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hipster = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trader = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Storyteller = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giddy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedNatuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedNatuDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMagnemiteDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedMagnemiteDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedSquirtleDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedSquirtleDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedWooperDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedWooperDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPikachuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedPikachuDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPorygon2Doll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedPorygon2Doll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CuttableTree = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_CuttableTree, gObjectEventPicTable_CuttableTree, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MartEmployee = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MartEmployee, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RooftopSaleWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RooftopSaleWoman, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teala = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Teala, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BreakableRock = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_BreakableRock, gObjectEventPicTable_BreakableRock, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PushableBoulder = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PushableBoulder, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MrBrineysBoat = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MrBrineysBoat, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayMachBike, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_MayAcroBike, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MaySurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_MaySurfing, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_MayFieldMove, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Truck = {0xFFFF, OBJ_EVENT_PAL_TAG_TRUCK, OBJ_EVENT_PAL_TAG_NONE, 1152, 48, 48, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_48x48, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_Truck, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothCarryingBox = {0xFFFF, OBJ_EVENT_PAL_TAG_VIGOROTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_VigorothCarryingBox, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothFacingAway = {0xFFFF, OBJ_EVENT_PAL_TAG_VIGOROTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_VigorothFacingAway, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirchsBag = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BirchsBag, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_EnemyZigzagoon = {0xFFFF, OBJ_EVENT_PAL_TAG_ZIGZAGOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_EnemyZigzagoon, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena = {0xFFFF, OBJ_EVENT_PAL_TAG_POOCHYENA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Poochyena, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Artist = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Artist, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanMachBike, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanSurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_BrendanSurfing, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayMachBike, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_MayAcroBike, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMaySurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_MaySurfing, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_MayFieldMove, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cameraman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Cameraman, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanUnderwater = {0xFFFF, OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanUnderwater, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayUnderwater = {0xFFFF, OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayUnderwater, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MovingBox = {0xFFFF, OBJ_EVENT_PAL_TAG_MOVING_BOX, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 10, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MovingBox, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CableCar = {0xFFFF, OBJ_EVENT_PAL_TAG_CABLE_CAR, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_CableCar, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Scientist2, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DevonEmployee = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_DevonEmployee, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_AquaMemberM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_AquaMemberF, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MagmaMemberM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MagmaMemberF, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sidney = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Sidney, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phoebe = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Phoebe, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glacia = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Glacia, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drake = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Drake, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Roxanne = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Roxanne, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brawly = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Brawly, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wattson = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wattson, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flannery = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Flannery, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Norman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Norman, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Winona = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Winona, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Liza = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Liza, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tate = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Tate, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wallace = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wallace, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steven = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Steven, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wally = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wally, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireLittleBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireLittleBoy, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFishing = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Fishing, gObjectEventPicTable_BrendanFishing, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFishing = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Fishing, gObjectEventPicTable_MayFishing, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HotSpringsOldWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_HotSpringsOldWoman, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SSTidal = {0xFFFF, OBJ_EVENT_PAL_TAG_SSTIDAL, OBJ_EVENT_PAL_TAG_NONE, 1920, 96, 40, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, gObjectEventSpriteOamTables_96x40, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SSTidal, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SubmarineShadow = {0xFFFF, OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, OBJ_EVENT_PAL_TAG_NONE, 1408, 88, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, gObjectEventSpriteOamTables_88x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SubmarineShadow, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PichuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PichuDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikachuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PikachuDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MarillDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MarillDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TogepiDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TogepiDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyndaquilDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_CyndaquilDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ChikoritaDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ChikoritaDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TotodileDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TotodileDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_JigglypuffDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_JigglypuffDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MeowthDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MeowthDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ClefairyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ClefairyDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DittoDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_DittoDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SmoochumDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SmoochumDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TreeckoDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TreeckoDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TorchicDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TorchicDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MudkipDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MudkipDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DuskullDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_DuskullDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WynautDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_WynautDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BaltoyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BaltoyDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_KecleonDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AzurillDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_AzurillDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SkittyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SkittyDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwabluDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SwabluDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GulpinDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_GulpinDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LotadDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_LotadDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SeedotDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SeedotDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikaCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PikaCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RoundCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_RoundCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KissCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_KissCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ZigzagCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ZigzagCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SpinCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SpinCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DiamondCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_DiamondCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BallCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BallCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GrassCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_GrassCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FireCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_FireCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WaterCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_WaterCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigSnorlaxDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigSnorlaxDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRhydonDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRhydonDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigLaprasDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigLaprasDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigVenusaurDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigVenusaurDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigCharizardDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigCharizardDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigBlastoiseDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigBlastoiseDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigWailmerDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigWailmerDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegirockDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRegirockDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegiceDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRegiceDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegisteelDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRegisteelDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latias = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LatiasLatios, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latios = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LatiasLatios, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GameboyKid = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_GameboyKid, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ContestJudge = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ContestJudge, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanWatering = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanWatering, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayWatering = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayWatering, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanDecorating = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BrendanDecorating, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayDecorating = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MayDecorating, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Archie = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Archie, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maxie = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Maxie, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KyogreFront, gObjectEventRotScalAnimTable_KyogreGroudon};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_GroudonFront, gObjectEventRotScalAnimTable_KyogreGroudon};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KyogreSide, gObjectEventRotScalAnimTable_KyogreGroudon};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Groudon3, gObjectEventPicTable_GroudonSide, gObjectEventRotScalAnimTable_KyogreGroudon};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fossil = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_Fossil, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Skitty, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kecleon, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre2 = {0xFFFF, OBJ_EVENT_PAL_TAG_KYOGRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KyogreFront, gObjectEventRotScalAnimTable_KyogreGroudon};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon2 = {0xFFFF, OBJ_EVENT_PAL_TAG_GROUDON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_GroudonFront, gObjectEventRotScalAnimTable_KyogreGroudon};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Rayquaza2, gObjectEventPicTable_Rayquaza, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Zigzagoon, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Pikachu, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Azumarill, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wingull, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonBridgeShadow = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 128, 16, 16, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kecleon, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberMSwimming = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_TuberMSwimming, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Azurill, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mom = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Mom, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkBrendan = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkMay = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Juan = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Juan, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scott = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Scott, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MysteryEventDeliveryman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MysteryEventDeliveryman, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Statue = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_Statue, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_S, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kirlia, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Dusclops, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnionRoomAttendant = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_UnionRoomAttendant, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Red = {0xFFFF, OBJ_EVENT_PAL_TAG_RED_LEAF, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Red, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Leaf = {0xFFFF, OBJ_EVENT_PAL_TAG_RED_LEAF, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Leaf, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Sudowoodo, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Mew, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Deoxys, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirthIslandStone = {0xFFFF, OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BirthIslandStone, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Anabel = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Anabel, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tucker = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Tucker, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Greta = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Greta, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spenser = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Spenser, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Noland = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Noland, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lucy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lucy, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brandon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Brandon, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrendan = {0xFFFF, OBJ_EVENT_PAL_TAG_RS_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireBrendan, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = {0xFFFF, OBJ_EVENT_PAL_TAG_RS_MAY, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireMay, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lugia, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_HoOh, gObjectEventPicTable_HoOh, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_BrendanMayNormal, sPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_BrendanMachBike, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_AcroBike, sPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanSurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Surfing, sPicTable_BrendanSurfing, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_FieldMove, sPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_QuintyPlump = {0xFFFF, OBJ_EVENT_PAL_TAG_QUINTY_PLUMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_QuintyPlump, sPicTable_QuintyPlump, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NinjaBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_NinjaBoy, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Twin = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Twin, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Boy1, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Girl1, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Boy2, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Girl2, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_LittleBoy, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleGirl = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_LittleGirl, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Boy3, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Girl3, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RichBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_RichBoy, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Woman1, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FatMan = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_FatMan, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_PokefanF, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Man1, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Woman2, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_ExpertM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_ExpertF, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Man2, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Woman3, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_PokefanM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman4 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Woman4, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cook = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Cook, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkReceptionist = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_LinkReceptionist, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldMan = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_OldMan, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_OldWoman, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Camper = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Camper, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Picnicker = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Picnicker, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Man3, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman5 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Woman5, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Youngster = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Youngster, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BugCatcher = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_BugCatcher, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PsychicM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_PsychicM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SchoolKidM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_SchoolKidM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maniac = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Maniac, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HexManiac = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_HexManiac, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RayquazaStill = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, sAnimTable_Standard, sPicTable_RayquazaStill, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_SwimmerM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_SwimmerF, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BlackBelt = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_BlackBelt, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beauty = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Beauty, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Scientist1, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lass = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Lass, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gentleman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Gentleman, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sailor = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Sailor, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fisherman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Fisherman, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_RunningTriathleteM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_RunningTriathleteF, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_TuberF, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_TuberM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hiker = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Hiker, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_AcroBike, sPicTable_CyclingTriathleteM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_AcroBike, sPicTable_CyclingTriathleteF, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nurse = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Nurse, sPicTable_Nurse, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ItemBall = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_ItemBall, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, NULL, sAnimTable_BerryTree, sPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_BerryTree, sPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeLateStages = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_BerryTree, sPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ProfBirch = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_ProfBirch, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man4 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Man4, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man5 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Man5, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_ReporterM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_ReporterF, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hipster = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trader = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Storyteller = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giddy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedNatuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_UnusedNatuDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMagnemiteDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_UnusedMagnemiteDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedSquirtleDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_UnusedSquirtleDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedWooperDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_UnusedWooperDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPikachuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_UnusedPikachuDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPorygon2Doll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_UnusedPorygon2Doll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CuttableTree = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_CuttableTree, sPicTable_CuttableTree, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MartEmployee = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MartEmployee, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RooftopSaleWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_RooftopSaleWoman, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teala = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Teala, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BreakableRock = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_BreakableRock, sPicTable_BreakableRock, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PushableBoulder = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_PushableBoulder, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MrBrineysBoat = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_MrBrineysBoat, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_BrendanMayNormal, sPicTable_MayNormal, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_MayMachBike, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_AcroBike, sPicTable_MayAcroBike, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MaySurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Surfing, sPicTable_MaySurfing, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_FieldMove, sPicTable_MayFieldMove, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Truck = {0xFFFF, OBJ_EVENT_PAL_TAG_TRUCK, OBJ_EVENT_PAL_TAG_NONE, 1152, 48, 48, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_48x48, sAnimTable_Inanimate, sPicTable_Truck, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothCarryingBox = {0xFFFF, OBJ_EVENT_PAL_TAG_VIGOROTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_VigorothCarryingBox, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothFacingAway = {0xFFFF, OBJ_EVENT_PAL_TAG_VIGOROTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_VigorothFacingAway, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirchsBag = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_BirchsBag, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_EnemyZigzagoon = {0xFFFF, OBJ_EVENT_PAL_TAG_ZIGZAGOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_EnemyZigzagoon, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena = {0xFFFF, OBJ_EVENT_PAL_TAG_POOCHYENA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_Poochyena, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Artist = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Artist, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_BrendanMayNormal, sPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_BrendanMachBike, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_AcroBike, sPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanSurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Surfing, sPicTable_BrendanSurfing, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_FieldMove, sPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_BrendanMayNormal, sPicTable_MayNormal, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_MayMachBike, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_AcroBike, sPicTable_MayAcroBike, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMaySurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Surfing, sPicTable_MaySurfing, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_FieldMove, sPicTable_MayFieldMove, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cameraman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Cameraman, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanUnderwater = {0xFFFF, OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_BrendanUnderwater, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayUnderwater = {0xFFFF, OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_MayUnderwater, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MovingBox = {0xFFFF, OBJ_EVENT_PAL_TAG_MOVING_BOX, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 10, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_MovingBox, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CableCar = {0xFFFF, OBJ_EVENT_PAL_TAG_CABLE_CAR, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, sOamTables_64x64, sAnimTable_Inanimate, sPicTable_CableCar, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Scientist2, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DevonEmployee = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_DevonEmployee, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_AquaMemberM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_AquaMemberF, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MagmaMemberM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MagmaMemberF, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sidney = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Sidney, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phoebe = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Phoebe, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glacia = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Glacia, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drake = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Drake, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Roxanne = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Roxanne, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brawly = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Brawly, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wattson = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Wattson, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flannery = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Flannery, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Norman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Norman, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Winona = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Winona, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Liza = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Liza, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tate = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Tate, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wallace = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Wallace, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steven = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Steven, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wally = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Wally, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireLittleBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_RubySapphireLittleBoy, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFishing = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Fishing, sPicTable_BrendanFishing, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFishing = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Fishing, sPicTable_MayFishing, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HotSpringsOldWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_HotSpringsOldWoman, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SSTidal = {0xFFFF, OBJ_EVENT_PAL_TAG_SSTIDAL, OBJ_EVENT_PAL_TAG_NONE, 1920, 96, 40, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, sOamTables_96x40, sAnimTable_Standard, sPicTable_SSTidal, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SubmarineShadow = {0xFFFF, OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, OBJ_EVENT_PAL_TAG_NONE, 1408, 88, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, sOamTables_88x32, sAnimTable_Standard, sPicTable_SubmarineShadow, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PichuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_PichuDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikachuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_PikachuDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MarillDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_MarillDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TogepiDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_TogepiDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyndaquilDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_CyndaquilDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ChikoritaDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_ChikoritaDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TotodileDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_TotodileDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_JigglypuffDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_JigglypuffDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MeowthDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_MeowthDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ClefairyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_ClefairyDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DittoDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_DittoDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SmoochumDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_SmoochumDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TreeckoDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_TreeckoDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TorchicDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_TorchicDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MudkipDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_MudkipDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DuskullDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_DuskullDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WynautDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_WynautDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BaltoyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_BaltoyDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_KecleonDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AzurillDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_AzurillDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SkittyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_SkittyDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwabluDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_SwabluDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GulpinDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_GulpinDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LotadDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_LotadDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SeedotDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_SeedotDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikaCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_PikaCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RoundCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_RoundCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KissCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_KissCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ZigzagCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_ZigzagCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SpinCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_SpinCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DiamondCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_DiamondCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BallCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_BallCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GrassCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_GrassCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FireCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_FireCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WaterCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_WaterCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigSnorlaxDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigSnorlaxDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRhydonDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigRhydonDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigLaprasDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigLaprasDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigVenusaurDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigVenusaurDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigCharizardDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigCharizardDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigBlastoiseDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigBlastoiseDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigWailmerDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigWailmerDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegirockDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigRegirockDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegiceDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigRegiceDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegisteelDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BigRegisteelDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latias = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_LatiasLatios, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latios = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_LatiasLatios, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GameboyKid = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_GameboyKid, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ContestJudge = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_ContestJudge, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanWatering = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_BrendanWatering, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayWatering = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_MayWatering, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanDecorating = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Inanimate, sPicTable_BrendanDecorating, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayDecorating = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Inanimate, sPicTable_MayDecorating, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Archie = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Archie, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maxie = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Maxie, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreFront = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_KyogreFront, sAffineAnimTable_KyogreGroudon};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonFront = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_GroudonFront, sAffineAnimTable_KyogreGroudon};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreSide = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_KyogreSide, sAffineAnimTable_KyogreGroudon};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonSide = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_GroudonSide, sPicTable_GroudonSide, sAffineAnimTable_KyogreGroudon};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fossil = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Inanimate, sPicTable_Fossil, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_Regi, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_Regi, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_Regi, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_Skitty, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_Kecleon, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreAsleep = {0xFFFF, OBJ_EVENT_PAL_TAG_KYOGRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_KyogreFront, sAffineAnimTable_KyogreGroudon};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonAsleep = {0xFFFF, OBJ_EVENT_PAL_TAG_GROUDON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_GroudonFront, sAffineAnimTable_KyogreGroudon};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, sOamTables_64x64, sAnimTable_Rayquaza, sPicTable_Rayquaza, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_Zigzagoon, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_Pikachu, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_Azumarill, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_Wingull, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonBridgeShadow = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 128, 16, 16, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_Kecleon, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberMSwimming = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_TuberMSwimming, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, sOamTables_16x16, sAnimTable_Standard, sPicTable_Azurill, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mom = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Mom, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkBrendan = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_BrendanMayNormal, sPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkMay = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_BrendanMayNormal, sPicTable_MayNormal, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Juan = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Juan, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scott = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Scott, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MysteryEventDeliveryman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_MysteryEventDeliveryman, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Statue = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Inanimate, sPicTable_Statue, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_S, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Kirlia, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Dusclops, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnionRoomAttendant = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_UnionRoomAttendant, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Red = {0xFFFF, OBJ_EVENT_PAL_TAG_RED_LEAF, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Red, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Leaf = {0xFFFF, OBJ_EVENT_PAL_TAG_RED_LEAF, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Leaf, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Sudowoodo, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Mew, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_Deoxys, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirthIslandStone = {0xFFFF, OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Inanimate, sPicTable_BirthIslandStone, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Anabel = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Anabel, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tucker = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Tucker, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Greta = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Greta, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spenser = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Spenser, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Noland = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Noland, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lucy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Lucy, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brandon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_Brandon, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrendan = {0xFFFF, OBJ_EVENT_PAL_TAG_RS_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_RubySapphireBrendan, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = {0xFFFF, OBJ_EVENT_PAL_TAG_RS_MAY, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, sOamTables_16x32, sAnimTable_Standard, sPicTable_RubySapphireMay, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_Standard, sPicTable_Lugia, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, sOamTables_32x32, sAnimTable_HoOh, sPicTable_HoOh, gDummySpriteAffineAnimTable};
diff --git a/src/data/object_events/object_event_graphics_info_pointers.h b/src/data/object_events/object_event_graphics_info_pointers.h
index 0ca70fa33..1c94919a7 100755
--- a/src/data/object_events/object_event_graphics_info_pointers.h
+++ b/src/data/object_events/object_event_graphics_info_pointers.h
@@ -39,7 +39,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PsychicM;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SchoolKidM;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maniac;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HexManiac;
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza1;
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RayquazaStill;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerM;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerF;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BlackBelt;
@@ -195,17 +195,17 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanDecorating;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayDecorating;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Archie;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maxie;
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre1;
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon1;
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreFront;
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonFront;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fossil;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon;
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre2;
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon2;
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza2;
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreAsleep;
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonAsleep;
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill;
@@ -219,8 +219,8 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkMay;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Juan;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scott;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena;
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre3;
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon3;
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KyogreSide;
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GroudonSide;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MysteryEventDeliveryman;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Statue;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia;
@@ -288,7 +288,7 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM
[OBJ_EVENT_GFX_SCHOOL_KID_M] = &gObjectEventGraphicsInfo_SchoolKidM,
[OBJ_EVENT_GFX_MANIAC] = &gObjectEventGraphicsInfo_Maniac,
[OBJ_EVENT_GFX_HEX_MANIAC] = &gObjectEventGraphicsInfo_HexManiac,
- [OBJ_EVENT_GFX_RAYQUAZA_1] = &gObjectEventGraphicsInfo_Rayquaza1,
+ [OBJ_EVENT_GFX_RAYQUAZA_STILL] = &gObjectEventGraphicsInfo_RayquazaStill,
[OBJ_EVENT_GFX_SWIMMER_M] = &gObjectEventGraphicsInfo_SwimmerM,
[OBJ_EVENT_GFX_SWIMMER_F] = &gObjectEventGraphicsInfo_SwimmerF,
[OBJ_EVENT_GFX_BLACK_BELT] = &gObjectEventGraphicsInfo_BlackBelt,
@@ -444,17 +444,17 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM
[OBJ_EVENT_GFX_MAY_DECORATING] = &gObjectEventGraphicsInfo_MayDecorating,
[OBJ_EVENT_GFX_ARCHIE] = &gObjectEventGraphicsInfo_Archie,
[OBJ_EVENT_GFX_MAXIE] = &gObjectEventGraphicsInfo_Maxie,
- [OBJ_EVENT_GFX_KYOGRE_1] = &gObjectEventGraphicsInfo_Kyogre1,
- [OBJ_EVENT_GFX_GROUDON_1] = &gObjectEventGraphicsInfo_Groudon1,
+ [OBJ_EVENT_GFX_KYOGRE_FRONT] = &gObjectEventGraphicsInfo_KyogreFront,
+ [OBJ_EVENT_GFX_GROUDON_FRONT] = &gObjectEventGraphicsInfo_GroudonFront,
[OBJ_EVENT_GFX_FOSSIL] = &gObjectEventGraphicsInfo_Fossil,
[OBJ_EVENT_GFX_REGIROCK] = &gObjectEventGraphicsInfo_Regirock,
[OBJ_EVENT_GFX_REGICE] = &gObjectEventGraphicsInfo_Regice,
[OBJ_EVENT_GFX_REGISTEEL] = &gObjectEventGraphicsInfo_Registeel,
[OBJ_EVENT_GFX_SKITTY] = &gObjectEventGraphicsInfo_Skitty,
[OBJ_EVENT_GFX_KECLEON] = &gObjectEventGraphicsInfo_Kecleon,
- [OBJ_EVENT_GFX_KYOGRE_2] = &gObjectEventGraphicsInfo_Kyogre2,
- [OBJ_EVENT_GFX_GROUDON_2] = &gObjectEventGraphicsInfo_Groudon2,
- [OBJ_EVENT_GFX_RAYQUAZA_2] = &gObjectEventGraphicsInfo_Rayquaza2,
+ [OBJ_EVENT_GFX_KYOGRE_ASLEEP] = &gObjectEventGraphicsInfo_KyogreAsleep,
+ [OBJ_EVENT_GFX_GROUDON_ASLEEP] = &gObjectEventGraphicsInfo_GroudonAsleep,
+ [OBJ_EVENT_GFX_RAYQUAZA] = &gObjectEventGraphicsInfo_Rayquaza,
[OBJ_EVENT_GFX_ZIGZAGOON_2] = &gObjectEventGraphicsInfo_Zigzagoon,
[OBJ_EVENT_GFX_PIKACHU] = &gObjectEventGraphicsInfo_Pikachu,
[OBJ_EVENT_GFX_AZUMARILL] = &gObjectEventGraphicsInfo_Azumarill,
@@ -468,8 +468,8 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM
[OBJ_EVENT_GFX_JUAN] = &gObjectEventGraphicsInfo_Juan,
[OBJ_EVENT_GFX_SCOTT] = &gObjectEventGraphicsInfo_Scott,
[OBJ_EVENT_GFX_POOCHYENA] = &gObjectEventGraphicsInfo_Poochyena,
- [OBJ_EVENT_GFX_KYOGRE_3] = &gObjectEventGraphicsInfo_Kyogre3,
- [OBJ_EVENT_GFX_GROUDON_3] = &gObjectEventGraphicsInfo_Groudon3,
+ [OBJ_EVENT_GFX_KYOGRE_SIDE] = &gObjectEventGraphicsInfo_KyogreSide,
+ [OBJ_EVENT_GFX_GROUDON_SIDE] = &gObjectEventGraphicsInfo_GroudonSide,
[OBJ_EVENT_GFX_MYSTERY_GIFT_MAN] = &gObjectEventGraphicsInfo_MysteryEventDeliveryman,
[OBJ_EVENT_GFX_TRICK_HOUSE_STATUE] = &gObjectEventGraphicsInfo_Statue,
[OBJ_EVENT_GFX_KIRLIA] = &gObjectEventGraphicsInfo_Kirlia,
diff --git a/src/data/object_events/object_event_pic_tables.h b/src/data/object_events/object_event_pic_tables.h
index 9cfdca7c1..1b8c9c727 100755
--- a/src/data/object_events/object_event_pic_tables.h
+++ b/src/data/object_events/object_event_pic_tables.h
@@ -1,4 +1,4 @@
-const struct SpriteFrameImage gObjectEventPicTable_BrendanNormal[] = {
+static const struct SpriteFrameImage sPicTable_BrendanNormal[] = {
overworld_frame(gObjectEventPic_BrendanNormal, 2, 4, 0),
overworld_frame(gObjectEventPic_BrendanNormal, 2, 4, 1),
overworld_frame(gObjectEventPic_BrendanNormal, 2, 4, 2),
@@ -19,7 +19,7 @@ const struct SpriteFrameImage gObjectEventPicTable_BrendanNormal[] = {
overworld_frame(gObjectEventPic_BrendanRunning, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_BrendanMachBike[] = {
+static const struct SpriteFrameImage sPicTable_BrendanMachBike[] = {
overworld_frame(gObjectEventPic_BrendanMachBike, 4, 4, 0),
overworld_frame(gObjectEventPic_BrendanMachBike, 4, 4, 1),
overworld_frame(gObjectEventPic_BrendanMachBike, 4, 4, 2),
@@ -31,7 +31,7 @@ const struct SpriteFrameImage gObjectEventPicTable_BrendanMachBike[] = {
overworld_frame(gObjectEventPic_BrendanMachBike, 4, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_BrendanAcroBike[] = {
+static const struct SpriteFrameImage sPicTable_BrendanAcroBike[] = {
overworld_frame(gObjectEventPic_BrendanAcroBike, 4, 4, 0),
overworld_frame(gObjectEventPic_BrendanAcroBike, 4, 4, 1),
overworld_frame(gObjectEventPic_BrendanAcroBike, 4, 4, 2),
@@ -61,7 +61,7 @@ const struct SpriteFrameImage gObjectEventPicTable_BrendanAcroBike[] = {
overworld_frame(gObjectEventPic_BrendanAcroBike, 4, 4, 26),
};
-const struct SpriteFrameImage gObjectEventPicTable_BrendanSurfing[] = {
+static const struct SpriteFrameImage sPicTable_BrendanSurfing[] = {
overworld_frame(gObjectEventPic_BrendanSurfing, 4, 4, 0),
overworld_frame(gObjectEventPic_BrendanSurfing, 4, 4, 2),
overworld_frame(gObjectEventPic_BrendanSurfing, 4, 4, 4),
@@ -76,7 +76,7 @@ const struct SpriteFrameImage gObjectEventPicTable_BrendanSurfing[] = {
overworld_frame(gObjectEventPic_BrendanSurfing, 4, 4, 5),
};
-const struct SpriteFrameImage gObjectEventPicTable_BrendanUnderwater[] = {
+static const struct SpriteFrameImage sPicTable_BrendanUnderwater[] = {
overworld_frame(gObjectEventPic_BrendanUnderwater, 4, 4, 0),
overworld_frame(gObjectEventPic_BrendanUnderwater, 4, 4, 1),
overworld_frame(gObjectEventPic_BrendanUnderwater, 4, 4, 2),
@@ -88,7 +88,7 @@ const struct SpriteFrameImage gObjectEventPicTable_BrendanUnderwater[] = {
overworld_frame(gObjectEventPic_BrendanUnderwater, 4, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_BrendanFieldMove[] = {
+static const struct SpriteFrameImage sPicTable_BrendanFieldMove[] = {
overworld_frame(gObjectEventPic_BrendanFieldMove, 4, 4, 0),
overworld_frame(gObjectEventPic_BrendanFieldMove, 4, 4, 1),
overworld_frame(gObjectEventPic_BrendanFieldMove, 4, 4, 2),
@@ -96,7 +96,7 @@ const struct SpriteFrameImage gObjectEventPicTable_BrendanFieldMove[] = {
overworld_frame(gObjectEventPic_BrendanFieldMove, 4, 4, 4),
};
-const struct SpriteFrameImage gObjectEventPicTable_QuintyPlump[] = {
+static const struct SpriteFrameImage sPicTable_QuintyPlump[] = {
overworld_frame(gObjectEventPic_QuintyPlump, 4, 4, 0),
overworld_frame(gObjectEventPic_QuintyPlump, 4, 4, 1),
overworld_frame(gObjectEventPic_QuintyPlump, 4, 4, 2),
@@ -106,7 +106,7 @@ const struct SpriteFrameImage gObjectEventPicTable_QuintyPlump[] = {
overworld_frame(gObjectEventPic_QuintyPlump, 4, 4, 6),
};
-const struct SpriteFrameImage gObjectEventPicTable_NinjaBoy[] = {
+static const struct SpriteFrameImage sPicTable_NinjaBoy[] = {
overworld_frame(gObjectEventPic_NinjaBoy, 2, 2, 0),
overworld_frame(gObjectEventPic_NinjaBoy, 2, 2, 1),
overworld_frame(gObjectEventPic_NinjaBoy, 2, 2, 2),
@@ -118,7 +118,7 @@ const struct SpriteFrameImage gObjectEventPicTable_NinjaBoy[] = {
overworld_frame(gObjectEventPic_NinjaBoy, 2, 2, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Twin[] = {
+static const struct SpriteFrameImage sPicTable_Twin[] = {
overworld_frame(gObjectEventPic_Twin, 2, 4, 0),
overworld_frame(gObjectEventPic_Twin, 2, 4, 1),
overworld_frame(gObjectEventPic_Twin, 2, 4, 2),
@@ -130,7 +130,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Twin[] = {
overworld_frame(gObjectEventPic_Twin, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Boy1[] = {
+static const struct SpriteFrameImage sPicTable_Boy1[] = {
overworld_frame(gObjectEventPic_Boy1, 2, 4, 0),
overworld_frame(gObjectEventPic_Boy1, 2, 4, 1),
overworld_frame(gObjectEventPic_Boy1, 2, 4, 2),
@@ -142,7 +142,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Boy1[] = {
overworld_frame(gObjectEventPic_Boy1, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Girl1[] = {
+static const struct SpriteFrameImage sPicTable_Girl1[] = {
overworld_frame(gObjectEventPic_Girl1, 2, 4, 0),
overworld_frame(gObjectEventPic_Girl1, 2, 4, 1),
overworld_frame(gObjectEventPic_Girl1, 2, 4, 2),
@@ -154,7 +154,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Girl1[] = {
overworld_frame(gObjectEventPic_Girl1, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Boy2[] = {
+static const struct SpriteFrameImage sPicTable_Boy2[] = {
overworld_frame(gObjectEventPic_Boy2, 2, 4, 0),
overworld_frame(gObjectEventPic_Boy2, 2, 4, 1),
overworld_frame(gObjectEventPic_Boy2, 2, 4, 2),
@@ -166,7 +166,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Boy2[] = {
overworld_frame(gObjectEventPic_Boy2, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Girl2[] = {
+static const struct SpriteFrameImage sPicTable_Girl2[] = {
overworld_frame(gObjectEventPic_Girl2, 2, 4, 0),
overworld_frame(gObjectEventPic_Girl2, 2, 4, 1),
overworld_frame(gObjectEventPic_Girl2, 2, 4, 2),
@@ -178,7 +178,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Girl2[] = {
overworld_frame(gObjectEventPic_Girl2, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_LittleBoy[] = {
+static const struct SpriteFrameImage sPicTable_LittleBoy[] = {
overworld_frame(gObjectEventPic_LittleBoy, 2, 2, 0),
overworld_frame(gObjectEventPic_LittleBoy, 2, 2, 1),
overworld_frame(gObjectEventPic_LittleBoy, 2, 2, 2),
@@ -190,7 +190,7 @@ const struct SpriteFrameImage gObjectEventPicTable_LittleBoy[] = {
overworld_frame(gObjectEventPic_LittleBoy, 2, 2, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_LittleGirl[] = {
+static const struct SpriteFrameImage sPicTable_LittleGirl[] = {
overworld_frame(gObjectEventPic_LittleGirl, 2, 2, 0),
overworld_frame(gObjectEventPic_LittleGirl, 2, 2, 1),
overworld_frame(gObjectEventPic_LittleGirl, 2, 2, 2),
@@ -202,7 +202,7 @@ const struct SpriteFrameImage gObjectEventPicTable_LittleGirl[] = {
overworld_frame(gObjectEventPic_LittleGirl, 2, 2, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Boy3[] = {
+static const struct SpriteFrameImage sPicTable_Boy3[] = {
overworld_frame(gObjectEventPic_Boy3, 2, 4, 0),
overworld_frame(gObjectEventPic_Boy3, 2, 4, 1),
overworld_frame(gObjectEventPic_Boy3, 2, 4, 2),
@@ -214,7 +214,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Boy3[] = {
overworld_frame(gObjectEventPic_Boy3, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Girl3[] = {
+static const struct SpriteFrameImage sPicTable_Girl3[] = {
overworld_frame(gObjectEventPic_Girl3, 2, 4, 0),
overworld_frame(gObjectEventPic_Girl3, 2, 4, 1),
overworld_frame(gObjectEventPic_Girl3, 2, 4, 2),
@@ -226,7 +226,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Girl3[] = {
overworld_frame(gObjectEventPic_Girl3, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_RichBoy[] = {
+static const struct SpriteFrameImage sPicTable_RichBoy[] = {
overworld_frame(gObjectEventPic_RichBoy, 2, 4, 0),
overworld_frame(gObjectEventPic_RichBoy, 2, 4, 1),
overworld_frame(gObjectEventPic_RichBoy, 2, 4, 2),
@@ -238,7 +238,7 @@ const struct SpriteFrameImage gObjectEventPicTable_RichBoy[] = {
overworld_frame(gObjectEventPic_RichBoy, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Woman1[] = {
+static const struct SpriteFrameImage sPicTable_Woman1[] = {
overworld_frame(gObjectEventPic_Woman1, 2, 4, 0),
overworld_frame(gObjectEventPic_Woman1, 2, 4, 1),
overworld_frame(gObjectEventPic_Woman1, 2, 4, 2),
@@ -250,7 +250,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Woman1[] = {
overworld_frame(gObjectEventPic_Woman1, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_FatMan[] = {
+static const struct SpriteFrameImage sPicTable_FatMan[] = {
overworld_frame(gObjectEventPic_FatMan, 2, 4, 0),
overworld_frame(gObjectEventPic_FatMan, 2, 4, 1),
overworld_frame(gObjectEventPic_FatMan, 2, 4, 2),
@@ -262,7 +262,7 @@ const struct SpriteFrameImage gObjectEventPicTable_FatMan[] = {
overworld_frame(gObjectEventPic_FatMan, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_PokefanF[] = {
+static const struct SpriteFrameImage sPicTable_PokefanF[] = {
overworld_frame(gObjectEventPic_PokefanF, 2, 4, 0),
overworld_frame(gObjectEventPic_PokefanF, 2, 4, 1),
overworld_frame(gObjectEventPic_PokefanF, 2, 4, 2),
@@ -274,7 +274,7 @@ const struct SpriteFrameImage gObjectEventPicTable_PokefanF[] = {
overworld_frame(gObjectEventPic_PokefanF, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Man1[] = {
+static const struct SpriteFrameImage sPicTable_Man1[] = {
overworld_frame(gObjectEventPic_Man1, 2, 4, 0),
overworld_frame(gObjectEventPic_Man1, 2, 4, 1),
overworld_frame(gObjectEventPic_Man1, 2, 4, 2),
@@ -286,7 +286,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Man1[] = {
overworld_frame(gObjectEventPic_Man1, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Woman2[] = {
+static const struct SpriteFrameImage sPicTable_Woman2[] = {
overworld_frame(gObjectEventPic_Woman2, 2, 4, 0),
overworld_frame(gObjectEventPic_Woman2, 2, 4, 1),
overworld_frame(gObjectEventPic_Woman2, 2, 4, 2),
@@ -298,7 +298,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Woman2[] = {
overworld_frame(gObjectEventPic_Woman2, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_ExpertM[] = {
+static const struct SpriteFrameImage sPicTable_ExpertM[] = {
overworld_frame(gObjectEventPic_ExpertM, 2, 4, 0),
overworld_frame(gObjectEventPic_ExpertM, 2, 4, 1),
overworld_frame(gObjectEventPic_ExpertM, 2, 4, 2),
@@ -310,7 +310,7 @@ const struct SpriteFrameImage gObjectEventPicTable_ExpertM[] = {
overworld_frame(gObjectEventPic_ExpertM, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_ExpertF[] = {
+static const struct SpriteFrameImage sPicTable_ExpertF[] = {
overworld_frame(gObjectEventPic_ExpertF, 2, 4, 0),
overworld_frame(gObjectEventPic_ExpertF, 2, 4, 1),
overworld_frame(gObjectEventPic_ExpertF, 2, 4, 2),
@@ -322,7 +322,7 @@ const struct SpriteFrameImage gObjectEventPicTable_ExpertF[] = {
overworld_frame(gObjectEventPic_ExpertF, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Man2[] = {
+static const struct SpriteFrameImage sPicTable_Man2[] = {
overworld_frame(gObjectEventPic_Man2, 2, 4, 0),
overworld_frame(gObjectEventPic_Man2, 2, 4, 1),
overworld_frame(gObjectEventPic_Man2, 2, 4, 2),
@@ -334,7 +334,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Man2[] = {
overworld_frame(gObjectEventPic_Man2, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Woman3[] = {
+static const struct SpriteFrameImage sPicTable_Woman3[] = {
overworld_frame(gObjectEventPic_Woman3, 2, 4, 0),
overworld_frame(gObjectEventPic_Woman3, 2, 4, 1),
overworld_frame(gObjectEventPic_Woman3, 2, 4, 2),
@@ -346,7 +346,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Woman3[] = {
overworld_frame(gObjectEventPic_Woman3, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_PokefanM[] = {
+static const struct SpriteFrameImage sPicTable_PokefanM[] = {
overworld_frame(gObjectEventPic_PokefanM, 2, 4, 0),
overworld_frame(gObjectEventPic_PokefanM, 2, 4, 1),
overworld_frame(gObjectEventPic_PokefanM, 2, 4, 2),
@@ -358,7 +358,7 @@ const struct SpriteFrameImage gObjectEventPicTable_PokefanM[] = {
overworld_frame(gObjectEventPic_PokefanM, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Woman4[] = {
+static const struct SpriteFrameImage sPicTable_Woman4[] = {
overworld_frame(gObjectEventPic_Woman4, 2, 4, 0),
overworld_frame(gObjectEventPic_Woman4, 2, 4, 1),
overworld_frame(gObjectEventPic_Woman4, 2, 4, 2),
@@ -370,7 +370,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Woman4[] = {
overworld_frame(gObjectEventPic_Woman4, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Cook[] = {
+static const struct SpriteFrameImage sPicTable_Cook[] = {
overworld_frame(gObjectEventPic_Cook, 2, 4, 0),
overworld_frame(gObjectEventPic_Cook, 2, 4, 1),
overworld_frame(gObjectEventPic_Cook, 2, 4, 2),
@@ -382,7 +382,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Cook[] = {
overworld_frame(gObjectEventPic_Cook, 2, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_LinkReceptionist[] = {
+static const struct SpriteFrameImage sPicTable_LinkReceptionist[] = {
overworld_frame(gObjectEventPic_LinkReceptionist, 2, 4, 0),
overworld_frame(gObjectEventPic_LinkReceptionist, 2, 4, 1),
overworld_frame(gObjectEventPic_LinkReceptionist, 2, 4, 2),
@@ -394,7 +394,7 @@ const struct SpriteFrameImage gObjectEventPicTable_LinkReceptionist[] = {
overworld_frame(gObjectEventPic_LinkReceptionist, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_OldMan[] = {
+static const struct SpriteFrameImage sPicTable_OldMan[] = {
overworld_frame(gObjectEventPic_OldMan, 2, 4, 0),
overworld_frame(gObjectEventPic_OldMan, 2, 4, 1),
overworld_frame(gObjectEventPic_OldMan, 2, 4, 2),
@@ -406,7 +406,7 @@ const struct SpriteFrameImage gObjectEventPicTable_OldMan[] = {
overworld_frame(gObjectEventPic_OldMan, 2, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_OldWoman[] = {
+static const struct SpriteFrameImage sPicTable_OldWoman[] = {
overworld_frame(gObjectEventPic_OldWoman, 2, 4, 0),
overworld_frame(gObjectEventPic_OldWoman, 2, 4, 1),
overworld_frame(gObjectEventPic_OldWoman, 2, 4, 2),
@@ -418,7 +418,7 @@ const struct SpriteFrameImage gObjectEventPicTable_OldWoman[] = {
overworld_frame(gObjectEventPic_OldWoman, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Camper[] = {
+static const struct SpriteFrameImage sPicTable_Camper[] = {
overworld_frame(gObjectEventPic_Camper, 2, 4, 0),
overworld_frame(gObjectEventPic_Camper, 2, 4, 1),
overworld_frame(gObjectEventPic_Camper, 2, 4, 2),
@@ -430,7 +430,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Camper[] = {
overworld_frame(gObjectEventPic_Camper, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Picnicker[] = {
+static const struct SpriteFrameImage sPicTable_Picnicker[] = {
overworld_frame(gObjectEventPic_Picnicker, 2, 4, 0),
overworld_frame(gObjectEventPic_Picnicker, 2, 4, 1),
overworld_frame(gObjectEventPic_Picnicker, 2, 4, 2),
@@ -442,7 +442,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Picnicker[] = {
overworld_frame(gObjectEventPic_Picnicker, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Man3[] = {
+static const struct SpriteFrameImage sPicTable_Man3[] = {
overworld_frame(gObjectEventPic_Man3, 2, 4, 0),
overworld_frame(gObjectEventPic_Man3, 2, 4, 1),
overworld_frame(gObjectEventPic_Man3, 2, 4, 2),
@@ -454,7 +454,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Man3[] = {
overworld_frame(gObjectEventPic_Man3, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Woman5[] = {
+static const struct SpriteFrameImage sPicTable_Woman5[] = {
overworld_frame(gObjectEventPic_Woman5, 2, 4, 0),
overworld_frame(gObjectEventPic_Woman5, 2, 4, 1),
overworld_frame(gObjectEventPic_Woman5, 2, 4, 2),
@@ -466,7 +466,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Woman5[] = {
overworld_frame(gObjectEventPic_Woman5, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Youngster[] = {
+static const struct SpriteFrameImage sPicTable_Youngster[] = {
overworld_frame(gObjectEventPic_Youngster, 2, 4, 0),
overworld_frame(gObjectEventPic_Youngster, 2, 4, 1),
overworld_frame(gObjectEventPic_Youngster, 2, 4, 2),
@@ -478,7 +478,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Youngster[] = {
overworld_frame(gObjectEventPic_Youngster, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_BugCatcher[] = {
+static const struct SpriteFrameImage sPicTable_BugCatcher[] = {
overworld_frame(gObjectEventPic_BugCatcher, 2, 4, 0),
overworld_frame(gObjectEventPic_BugCatcher, 2, 4, 1),
overworld_frame(gObjectEventPic_BugCatcher, 2, 4, 2),
@@ -490,7 +490,7 @@ const struct SpriteFrameImage gObjectEventPicTable_BugCatcher[] = {
overworld_frame(gObjectEventPic_BugCatcher, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_PsychicM[] = {
+static const struct SpriteFrameImage sPicTable_PsychicM[] = {
overworld_frame(gObjectEventPic_PsychicM, 2, 4, 0),
overworld_frame(gObjectEventPic_PsychicM, 2, 4, 1),
overworld_frame(gObjectEventPic_PsychicM, 2, 4, 2),
@@ -502,7 +502,7 @@ const struct SpriteFrameImage gObjectEventPicTable_PsychicM[] = {
overworld_frame(gObjectEventPic_PsychicM, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_SchoolKidM[] = {
+static const struct SpriteFrameImage sPicTable_SchoolKidM[] = {
overworld_frame(gObjectEventPic_SchoolKidM, 2, 4, 0),
overworld_frame(gObjectEventPic_SchoolKidM, 2, 4, 1),
overworld_frame(gObjectEventPic_SchoolKidM, 2, 4, 2),
@@ -514,7 +514,7 @@ const struct SpriteFrameImage gObjectEventPicTable_SchoolKidM[] = {
overworld_frame(gObjectEventPic_SchoolKidM, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Maniac[] = {
+static const struct SpriteFrameImage sPicTable_Maniac[] = {
overworld_frame(gObjectEventPic_Maniac, 2, 4, 0),
overworld_frame(gObjectEventPic_Maniac, 2, 4, 1),
overworld_frame(gObjectEventPic_Maniac, 2, 4, 2),
@@ -526,7 +526,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Maniac[] = {
overworld_frame(gObjectEventPic_Maniac, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_HexManiac[] = {
+static const struct SpriteFrameImage sPicTable_HexManiac[] = {
overworld_frame(gObjectEventPic_HexManiac, 2, 4, 0),
overworld_frame(gObjectEventPic_HexManiac, 2, 4, 1),
overworld_frame(gObjectEventPic_HexManiac, 2, 4, 2),
@@ -538,7 +538,7 @@ const struct SpriteFrameImage gObjectEventPicTable_HexManiac[] = {
overworld_frame(gObjectEventPic_HexManiac, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_SwimmerM[] = {
+static const struct SpriteFrameImage sPicTable_SwimmerM[] = {
overworld_frame(gObjectEventPic_SwimmerM, 2, 4, 0),
overworld_frame(gObjectEventPic_SwimmerM, 2, 4, 1),
overworld_frame(gObjectEventPic_SwimmerM, 2, 4, 2),
@@ -550,7 +550,7 @@ const struct SpriteFrameImage gObjectEventPicTable_SwimmerM[] = {
overworld_frame(gObjectEventPic_SwimmerM, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_SwimmerF[] = {
+static const struct SpriteFrameImage sPicTable_SwimmerF[] = {
overworld_frame(gObjectEventPic_SwimmerF, 2, 4, 0),
overworld_frame(gObjectEventPic_SwimmerF, 2, 4, 1),
overworld_frame(gObjectEventPic_SwimmerF, 2, 4, 2),
@@ -562,7 +562,7 @@ const struct SpriteFrameImage gObjectEventPicTable_SwimmerF[] = {
overworld_frame(gObjectEventPic_SwimmerF, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_BlackBelt[] = {
+static const struct SpriteFrameImage sPicTable_BlackBelt[] = {
overworld_frame(gObjectEventPic_BlackBelt, 2, 4, 0),
overworld_frame(gObjectEventPic_BlackBelt, 2, 4, 1),
overworld_frame(gObjectEventPic_BlackBelt, 2, 4, 2),
@@ -574,7 +574,7 @@ const struct SpriteFrameImage gObjectEventPicTable_BlackBelt[] = {
overworld_frame(gObjectEventPic_BlackBelt, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Beauty[] = {
+static const struct SpriteFrameImage sPicTable_Beauty[] = {
overworld_frame(gObjectEventPic_Beauty, 2, 4, 0),
overworld_frame(gObjectEventPic_Beauty, 2, 4, 1),
overworld_frame(gObjectEventPic_Beauty, 2, 4, 2),
@@ -586,7 +586,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Beauty[] = {
overworld_frame(gObjectEventPic_Beauty, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Scientist1[] = {
+static const struct SpriteFrameImage sPicTable_Scientist1[] = {
overworld_frame(gObjectEventPic_Scientist1, 2, 4, 0),
overworld_frame(gObjectEventPic_Scientist1, 2, 4, 1),
overworld_frame(gObjectEventPic_Scientist1, 2, 4, 2),
@@ -598,7 +598,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Scientist1[] = {
overworld_frame(gObjectEventPic_Scientist1, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Lass[] = {
+static const struct SpriteFrameImage sPicTable_Lass[] = {
overworld_frame(gObjectEventPic_Lass, 2, 4, 0),
overworld_frame(gObjectEventPic_Lass, 2, 4, 1),
overworld_frame(gObjectEventPic_Lass, 2, 4, 2),
@@ -610,7 +610,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Lass[] = {
overworld_frame(gObjectEventPic_Lass, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Gentleman[] = {
+static const struct SpriteFrameImage sPicTable_Gentleman[] = {
overworld_frame(gObjectEventPic_Gentleman, 2, 4, 0),
overworld_frame(gObjectEventPic_Gentleman, 2, 4, 1),
overworld_frame(gObjectEventPic_Gentleman, 2, 4, 2),
@@ -622,7 +622,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Gentleman[] = {
overworld_frame(gObjectEventPic_Gentleman, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Sailor[] = {
+static const struct SpriteFrameImage sPicTable_Sailor[] = {
overworld_frame(gObjectEventPic_Sailor, 2, 4, 0),
overworld_frame(gObjectEventPic_Sailor, 2, 4, 1),
overworld_frame(gObjectEventPic_Sailor, 2, 4, 2),
@@ -634,7 +634,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Sailor[] = {
overworld_frame(gObjectEventPic_Sailor, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Fisherman[] = {
+static const struct SpriteFrameImage sPicTable_Fisherman[] = {
overworld_frame(gObjectEventPic_Fisherman, 2, 4, 0),
overworld_frame(gObjectEventPic_Fisherman, 2, 4, 1),
overworld_frame(gObjectEventPic_Fisherman, 2, 4, 2),
@@ -646,7 +646,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Fisherman[] = {
overworld_frame(gObjectEventPic_Fisherman, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_RunningTriathleteM[] = {
+static const struct SpriteFrameImage sPicTable_RunningTriathleteM[] = {
overworld_frame(gObjectEventPic_RunningTriathleteM, 2, 4, 0),
overworld_frame(gObjectEventPic_RunningTriathleteM, 2, 4, 1),
overworld_frame(gObjectEventPic_RunningTriathleteM, 2, 4, 2),
@@ -658,7 +658,7 @@ const struct SpriteFrameImage gObjectEventPicTable_RunningTriathleteM[] = {
overworld_frame(gObjectEventPic_RunningTriathleteM, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_RunningTriathleteF[] = {
+static const struct SpriteFrameImage sPicTable_RunningTriathleteF[] = {
overworld_frame(gObjectEventPic_RunningTriathleteF, 2, 4, 0),
overworld_frame(gObjectEventPic_RunningTriathleteF, 2, 4, 1),
overworld_frame(gObjectEventPic_RunningTriathleteF, 2, 4, 2),
@@ -670,7 +670,7 @@ const struct SpriteFrameImage gObjectEventPicTable_RunningTriathleteF[] = {
overworld_frame(gObjectEventPic_RunningTriathleteF, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_TuberF[] = {
+static const struct SpriteFrameImage sPicTable_TuberF[] = {
overworld_frame(gObjectEventPic_TuberF, 2, 2, 0),
overworld_frame(gObjectEventPic_TuberF, 2, 2, 1),
overworld_frame(gObjectEventPic_TuberF, 2, 2, 2),
@@ -682,7 +682,7 @@ const struct SpriteFrameImage gObjectEventPicTable_TuberF[] = {
overworld_frame(gObjectEventPic_TuberF, 2, 2, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_TuberM[] = {
+static const struct SpriteFrameImage sPicTable_TuberM[] = {
overworld_frame(gObjectEventPic_TuberM, 2, 2, 0),
overworld_frame(gObjectEventPic_TuberM, 2, 2, 1),
overworld_frame(gObjectEventPic_TuberM, 2, 2, 2),
@@ -694,7 +694,7 @@ const struct SpriteFrameImage gObjectEventPicTable_TuberM[] = {
overworld_frame(gObjectEventPic_TuberM, 2, 2, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Hiker[] = {
+static const struct SpriteFrameImage sPicTable_Hiker[] = {
overworld_frame(gObjectEventPic_Hiker, 2, 4, 0),
overworld_frame(gObjectEventPic_Hiker, 2, 4, 1),
overworld_frame(gObjectEventPic_Hiker, 2, 4, 2),
@@ -706,7 +706,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Hiker[] = {
overworld_frame(gObjectEventPic_Hiker, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_CyclingTriathleteM[] = {
+static const struct SpriteFrameImage sPicTable_CyclingTriathleteM[] = {
overworld_frame(gObjectEventPic_CyclingTriathleteM, 4, 4, 0),
overworld_frame(gObjectEventPic_CyclingTriathleteM, 4, 4, 1),
overworld_frame(gObjectEventPic_CyclingTriathleteM, 4, 4, 2),
@@ -718,7 +718,7 @@ const struct SpriteFrameImage gObjectEventPicTable_CyclingTriathleteM[] = {
overworld_frame(gObjectEventPic_CyclingTriathleteM, 4, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_CyclingTriathleteF[] = {
+static const struct SpriteFrameImage sPicTable_CyclingTriathleteF[] = {
overworld_frame(gObjectEventPic_CyclingTriathleteF, 4, 4, 0),
overworld_frame(gObjectEventPic_CyclingTriathleteF, 4, 4, 1),
overworld_frame(gObjectEventPic_CyclingTriathleteF, 4, 4, 2),
@@ -730,7 +730,7 @@ const struct SpriteFrameImage gObjectEventPicTable_CyclingTriathleteF[] = {
overworld_frame(gObjectEventPic_CyclingTriathleteF, 4, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Nurse[] = {
+static const struct SpriteFrameImage sPicTable_Nurse[] = {
overworld_frame(gObjectEventPic_Nurse, 2, 4, 0),
overworld_frame(gObjectEventPic_Nurse, 2, 4, 1),
overworld_frame(gObjectEventPic_Nurse, 2, 4, 2),
@@ -743,11 +743,11 @@ const struct SpriteFrameImage gObjectEventPicTable_Nurse[] = {
overworld_frame(gObjectEventPic_Nurse, 2, 4, 3),
};
-const struct SpriteFrameImage gObjectEventPicTable_ItemBall[] = {
+static const struct SpriteFrameImage sPicTable_ItemBall[] = {
obj_frame_tiles(gObjectEventPic_ItemBall),
};
-const struct SpriteFrameImage gObjectEventPicTable_ProfBirch[] = {
+static const struct SpriteFrameImage sPicTable_ProfBirch[] = {
overworld_frame(gObjectEventPic_ProfBirch, 2, 4, 0),
overworld_frame(gObjectEventPic_ProfBirch, 2, 4, 1),
overworld_frame(gObjectEventPic_ProfBirch, 2, 4, 2),
@@ -759,7 +759,7 @@ const struct SpriteFrameImage gObjectEventPicTable_ProfBirch[] = {
overworld_frame(gObjectEventPic_ProfBirch, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Man4[] = {
+static const struct SpriteFrameImage sPicTable_Man4[] = {
overworld_frame(gObjectEventPic_Man4, 2, 4, 0),
overworld_frame(gObjectEventPic_Man4, 2, 4, 1),
overworld_frame(gObjectEventPic_Man4, 2, 4, 2),
@@ -771,7 +771,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Man4[] = {
overworld_frame(gObjectEventPic_Man4, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Man5[] = {
+static const struct SpriteFrameImage sPicTable_Man5[] = {
overworld_frame(gObjectEventPic_Man5, 2, 4, 0),
overworld_frame(gObjectEventPic_Man5, 2, 4, 1),
overworld_frame(gObjectEventPic_Man5, 2, 4, 2),
@@ -783,7 +783,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Man5[] = {
overworld_frame(gObjectEventPic_Man5, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_ReporterM[] = {
+static const struct SpriteFrameImage sPicTable_ReporterM[] = {
overworld_frame(gObjectEventPic_ReporterM, 2, 4, 0),
overworld_frame(gObjectEventPic_ReporterM, 2, 4, 1),
overworld_frame(gObjectEventPic_ReporterM, 2, 4, 2),
@@ -795,7 +795,7 @@ const struct SpriteFrameImage gObjectEventPicTable_ReporterM[] = {
overworld_frame(gObjectEventPic_ReporterM, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_ReporterF[] = {
+static const struct SpriteFrameImage sPicTable_ReporterF[] = {
overworld_frame(gObjectEventPic_ReporterF, 2, 4, 0),
overworld_frame(gObjectEventPic_ReporterF, 2, 4, 1),
overworld_frame(gObjectEventPic_ReporterF, 2, 4, 2),
@@ -807,7 +807,7 @@ const struct SpriteFrameImage gObjectEventPicTable_ReporterF[] = {
overworld_frame(gObjectEventPic_ReporterF, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_MauvilleOldMan1[] = {
+static const struct SpriteFrameImage sPicTable_MauvilleOldMan1[] = {
overworld_frame(gObjectEventPic_MauvilleOldMan1, 2, 4, 0),
overworld_frame(gObjectEventPic_MauvilleOldMan1, 2, 4, 1),
overworld_frame(gObjectEventPic_MauvilleOldMan1, 2, 4, 2),
@@ -819,7 +819,7 @@ const struct SpriteFrameImage gObjectEventPicTable_MauvilleOldMan1[] = {
overworld_frame(gObjectEventPic_MauvilleOldMan1, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_MauvilleOldMan2[] = {
+static const struct SpriteFrameImage sPicTable_MauvilleOldMan2[] = {
overworld_frame(gObjectEventPic_MauvilleOldMan2, 2, 4, 0),
overworld_frame(gObjectEventPic_MauvilleOldMan2, 2, 4, 1),
overworld_frame(gObjectEventPic_MauvilleOldMan2, 2, 4, 2),
@@ -831,38 +831,38 @@ const struct SpriteFrameImage gObjectEventPicTable_MauvilleOldMan2[] = {
overworld_frame(gObjectEventPic_MauvilleOldMan2, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_UnusedNatuDoll[] = {
+static const struct SpriteFrameImage sPicTable_UnusedNatuDoll[] = {
obj_frame_tiles(gObjectEventPic_UnusedNatuDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_UnusedMagnemiteDoll[] = {
+static const struct SpriteFrameImage sPicTable_UnusedMagnemiteDoll[] = {
obj_frame_tiles(gObjectEventPic_UnusedMagnemiteDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_UnusedSquirtleDoll[] = {
+static const struct SpriteFrameImage sPicTable_UnusedSquirtleDoll[] = {
obj_frame_tiles(gObjectEventPic_UnusedSquirtleDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_UnusedWooperDoll[] = {
+static const struct SpriteFrameImage sPicTable_UnusedWooperDoll[] = {
obj_frame_tiles(gObjectEventPic_UnusedWooperDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_UnusedPikachuDoll[] = {
+static const struct SpriteFrameImage sPicTable_UnusedPikachuDoll[] = {
obj_frame_tiles(gObjectEventPic_UnusedPikachuDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_UnusedPorygon2Doll[] = {
+static const struct SpriteFrameImage sPicTable_UnusedPorygon2Doll[] = {
obj_frame_tiles(gObjectEventPic_UnusedPorygon2Doll),
};
-const struct SpriteFrameImage gObjectEventPicTable_CuttableTree[] = {
+static const struct SpriteFrameImage sPicTable_CuttableTree[] = {
overworld_frame(gObjectEventPic_CuttableTree, 2, 2, 0),
overworld_frame(gObjectEventPic_CuttableTree, 2, 2, 1),
overworld_frame(gObjectEventPic_CuttableTree, 2, 2, 2),
overworld_frame(gObjectEventPic_CuttableTree, 2, 2, 3),
};
-const struct SpriteFrameImage gObjectEventPicTable_MartEmployee[] = {
+static const struct SpriteFrameImage sPicTable_MartEmployee[] = {
overworld_frame(gObjectEventPic_MartEmployee, 2, 4, 0),
overworld_frame(gObjectEventPic_MartEmployee, 2, 4, 1),
overworld_frame(gObjectEventPic_MartEmployee, 2, 4, 2),
@@ -874,7 +874,7 @@ const struct SpriteFrameImage gObjectEventPicTable_MartEmployee[] = {
overworld_frame(gObjectEventPic_MartEmployee, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_RooftopSaleWoman[] = {
+static const struct SpriteFrameImage sPicTable_RooftopSaleWoman[] = {
overworld_frame(gObjectEventPic_RooftopSaleWoman, 2, 4, 0),
overworld_frame(gObjectEventPic_RooftopSaleWoman, 2, 4, 1),
overworld_frame(gObjectEventPic_RooftopSaleWoman, 2, 4, 2),
@@ -886,7 +886,7 @@ const struct SpriteFrameImage gObjectEventPicTable_RooftopSaleWoman[] = {
overworld_frame(gObjectEventPic_RooftopSaleWoman, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Teala[] = {
+static const struct SpriteFrameImage sPicTable_Teala[] = {
overworld_frame(gObjectEventPic_Teala, 2, 4, 0),
overworld_frame(gObjectEventPic_Teala, 2, 4, 1),
overworld_frame(gObjectEventPic_Teala, 2, 4, 2),
@@ -898,18 +898,18 @@ const struct SpriteFrameImage gObjectEventPicTable_Teala[] = {
overworld_frame(gObjectEventPic_Teala, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_BreakableRock[] = {
+static const struct SpriteFrameImage sPicTable_BreakableRock[] = {
overworld_frame(gObjectEventPic_BreakableRock, 2, 2, 0),
overworld_frame(gObjectEventPic_BreakableRock, 2, 2, 1),
overworld_frame(gObjectEventPic_BreakableRock, 2, 2, 2),
overworld_frame(gObjectEventPic_BreakableRock, 2, 2, 3),
};
-const struct SpriteFrameImage gObjectEventPicTable_PushableBoulder[] = {
+static const struct SpriteFrameImage sPicTable_PushableBoulder[] = {
obj_frame_tiles(gObjectEventPic_PushableBoulder),
};
-const struct SpriteFrameImage gObjectEventPicTable_MrBrineysBoat[] = {
+static const struct SpriteFrameImage sPicTable_MrBrineysBoat[] = {
overworld_frame(gObjectEventPic_MrBrineysBoat, 4, 4, 0),
overworld_frame(gObjectEventPic_MrBrineysBoat, 4, 4, 1),
overworld_frame(gObjectEventPic_MrBrineysBoat, 4, 4, 2),
@@ -921,11 +921,11 @@ const struct SpriteFrameImage gObjectEventPicTable_MrBrineysBoat[] = {
overworld_frame(gObjectEventPic_MrBrineysBoat, 4, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Truck[] = {
+static const struct SpriteFrameImage sPicTable_Truck[] = {
obj_frame_tiles(gObjectEventPic_Truck),
};
-const struct SpriteFrameImage gObjectEventPicTable_VigorothCarryingBox[] = {
+static const struct SpriteFrameImage sPicTable_VigorothCarryingBox[] = {
overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 0),
overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 0),
overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 0),
@@ -937,7 +937,7 @@ const struct SpriteFrameImage gObjectEventPicTable_VigorothCarryingBox[] = {
overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_VigorothFacingAway[] = {
+static const struct SpriteFrameImage sPicTable_VigorothFacingAway[] = {
overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 3),
overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 3),
overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 3),
@@ -949,11 +949,11 @@ const struct SpriteFrameImage gObjectEventPicTable_VigorothFacingAway[] = {
overworld_frame(gObjectEventPic_Vigoroth, 4, 4, 4),
};
-const struct SpriteFrameImage gObjectEventPicTable_BirchsBag[] = {
+static const struct SpriteFrameImage sPicTable_BirchsBag[] = {
obj_frame_tiles(gObjectEventPic_BirchsBag),
};
-const struct SpriteFrameImage gObjectEventPicTable_EnemyZigzagoon[] = {
+static const struct SpriteFrameImage sPicTable_EnemyZigzagoon[] = {
overworld_frame(gObjectEventPic_EnemyZigzagoon, 4, 4, 0),
overworld_frame(gObjectEventPic_EnemyZigzagoon, 4, 4, 1),
overworld_frame(gObjectEventPic_EnemyZigzagoon, 4, 4, 2),
@@ -965,7 +965,7 @@ const struct SpriteFrameImage gObjectEventPicTable_EnemyZigzagoon[] = {
overworld_frame(gObjectEventPic_EnemyZigzagoon, 4, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Poochyena[] = {
+static const struct SpriteFrameImage sPicTable_Poochyena[] = {
overworld_frame(gObjectEventPic_Poochyena, 4, 4, 0),
overworld_frame(gObjectEventPic_Poochyena, 4, 4, 1),
overworld_frame(gObjectEventPic_Poochyena, 4, 4, 2),
@@ -977,7 +977,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Poochyena[] = {
overworld_frame(gObjectEventPic_Poochyena, 4, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Artist[] = {
+static const struct SpriteFrameImage sPicTable_Artist[] = {
overworld_frame(gObjectEventPic_Artist, 2, 4, 0),
overworld_frame(gObjectEventPic_Artist, 2, 4, 1),
overworld_frame(gObjectEventPic_Artist, 2, 4, 2),
@@ -989,7 +989,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Artist[] = {
overworld_frame(gObjectEventPic_Artist, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_MayNormal[] = {
+static const struct SpriteFrameImage sPicTable_MayNormal[] = {
overworld_frame(gObjectEventPic_MayNormal, 2, 4, 0),
overworld_frame(gObjectEventPic_MayNormal, 2, 4, 1),
overworld_frame(gObjectEventPic_MayNormal, 2, 4, 2),
@@ -1010,7 +1010,7 @@ const struct SpriteFrameImage gObjectEventPicTable_MayNormal[] = {
overworld_frame(gObjectEventPic_MayRunning, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_MayMachBike[] = {
+static const struct SpriteFrameImage sPicTable_MayMachBike[] = {
overworld_frame(gObjectEventPic_MayMachBike, 4, 4, 0),
overworld_frame(gObjectEventPic_MayMachBike, 4, 4, 1),
overworld_frame(gObjectEventPic_MayMachBike, 4, 4, 2),
@@ -1022,7 +1022,7 @@ const struct SpriteFrameImage gObjectEventPicTable_MayMachBike[] = {
overworld_frame(gObjectEventPic_MayMachBike, 4, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_MayAcroBike[] = {
+static const struct SpriteFrameImage sPicTable_MayAcroBike[] = {
overworld_frame(gObjectEventPic_MayAcroBike, 4, 4, 0),
overworld_frame(gObjectEventPic_MayAcroBike, 4, 4, 1),
overworld_frame(gObjectEventPic_MayAcroBike, 4, 4, 2),
@@ -1052,7 +1052,7 @@ const struct SpriteFrameImage gObjectEventPicTable_MayAcroBike[] = {
overworld_frame(gObjectEventPic_MayAcroBike, 4, 4, 26),
};
-const struct SpriteFrameImage gObjectEventPicTable_MaySurfing[] = {
+static const struct SpriteFrameImage sPicTable_MaySurfing[] = {
overworld_frame(gObjectEventPic_MaySurfing, 4, 4, 0),
overworld_frame(gObjectEventPic_MaySurfing, 4, 4, 2),
overworld_frame(gObjectEventPic_MaySurfing, 4, 4, 4),
@@ -1067,7 +1067,7 @@ const struct SpriteFrameImage gObjectEventPicTable_MaySurfing[] = {
overworld_frame(gObjectEventPic_MaySurfing, 4, 4, 5),
};
-const struct SpriteFrameImage gObjectEventPicTable_MayUnderwater[] = {
+static const struct SpriteFrameImage sPicTable_MayUnderwater[] = {
overworld_frame(gObjectEventPic_MayUnderwater, 4, 4, 0),
overworld_frame(gObjectEventPic_MayUnderwater, 4, 4, 1),
overworld_frame(gObjectEventPic_MayUnderwater, 4, 4, 2),
@@ -1079,7 +1079,7 @@ const struct SpriteFrameImage gObjectEventPicTable_MayUnderwater[] = {
overworld_frame(gObjectEventPic_MayUnderwater, 4, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_MayFieldMove[] = {
+static const struct SpriteFrameImage sPicTable_MayFieldMove[] = {
overworld_frame(gObjectEventPic_MayFieldMove, 4, 4, 0),
overworld_frame(gObjectEventPic_MayFieldMove, 4, 4, 1),
overworld_frame(gObjectEventPic_MayFieldMove, 4, 4, 2),
@@ -1087,7 +1087,7 @@ const struct SpriteFrameImage gObjectEventPicTable_MayFieldMove[] = {
overworld_frame(gObjectEventPic_MayFieldMove, 4, 4, 4),
};
-const struct SpriteFrameImage gObjectEventPicTable_Cameraman[] = {
+static const struct SpriteFrameImage sPicTable_Cameraman[] = {
overworld_frame(gObjectEventPic_Cameraman, 2, 4, 0),
overworld_frame(gObjectEventPic_Cameraman, 2, 4, 1),
overworld_frame(gObjectEventPic_Cameraman, 2, 4, 2),
@@ -1099,15 +1099,15 @@ const struct SpriteFrameImage gObjectEventPicTable_Cameraman[] = {
overworld_frame(gObjectEventPic_Cameraman, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_MovingBox[] = {
+static const struct SpriteFrameImage sPicTable_MovingBox[] = {
obj_frame_tiles(gObjectEventPic_MovingBox),
};
-const struct SpriteFrameImage gObjectEventPicTable_CableCar[] = {
+static const struct SpriteFrameImage sPicTable_CableCar[] = {
obj_frame_tiles(gObjectEventPic_CableCar),
};
-const struct SpriteFrameImage gObjectEventPicTable_Scientist2[] = {
+static const struct SpriteFrameImage sPicTable_Scientist2[] = {
overworld_frame(gObjectEventPic_Scientist2, 2, 4, 0),
overworld_frame(gObjectEventPic_Scientist2, 2, 4, 1),
overworld_frame(gObjectEventPic_Scientist2, 2, 4, 2),
@@ -1119,7 +1119,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Scientist2[] = {
overworld_frame(gObjectEventPic_Scientist2, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_DevonEmployee[] = {
+static const struct SpriteFrameImage sPicTable_DevonEmployee[] = {
overworld_frame(gObjectEventPic_DevonEmployee, 2, 4, 0),
overworld_frame(gObjectEventPic_DevonEmployee, 2, 4, 1),
overworld_frame(gObjectEventPic_DevonEmployee, 2, 4, 2),
@@ -1131,7 +1131,7 @@ const struct SpriteFrameImage gObjectEventPicTable_DevonEmployee[] = {
overworld_frame(gObjectEventPic_DevonEmployee, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_AquaMemberM[] = {
+static const struct SpriteFrameImage sPicTable_AquaMemberM[] = {
overworld_frame(gObjectEventPic_AquaMemberM, 2, 4, 0),
overworld_frame(gObjectEventPic_AquaMemberM, 2, 4, 1),
overworld_frame(gObjectEventPic_AquaMemberM, 2, 4, 2),
@@ -1143,7 +1143,7 @@ const struct SpriteFrameImage gObjectEventPicTable_AquaMemberM[] = {
overworld_frame(gObjectEventPic_AquaMemberM, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_AquaMemberF[] = {
+static const struct SpriteFrameImage sPicTable_AquaMemberF[] = {
overworld_frame(gObjectEventPic_AquaMemberF, 2, 4, 0),
overworld_frame(gObjectEventPic_AquaMemberF, 2, 4, 1),
overworld_frame(gObjectEventPic_AquaMemberF, 2, 4, 2),
@@ -1155,7 +1155,7 @@ const struct SpriteFrameImage gObjectEventPicTable_AquaMemberF[] = {
overworld_frame(gObjectEventPic_AquaMemberF, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_MagmaMemberM[] = {
+static const struct SpriteFrameImage sPicTable_MagmaMemberM[] = {
overworld_frame(gObjectEventPic_MagmaMemberM, 2, 4, 0),
overworld_frame(gObjectEventPic_MagmaMemberM, 2, 4, 1),
overworld_frame(gObjectEventPic_MagmaMemberM, 2, 4, 2),
@@ -1167,7 +1167,7 @@ const struct SpriteFrameImage gObjectEventPicTable_MagmaMemberM[] = {
overworld_frame(gObjectEventPic_MagmaMemberM, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_MagmaMemberF[] = {
+static const struct SpriteFrameImage sPicTable_MagmaMemberF[] = {
overworld_frame(gObjectEventPic_MagmaMemberF, 2, 4, 0),
overworld_frame(gObjectEventPic_MagmaMemberF, 2, 4, 1),
overworld_frame(gObjectEventPic_MagmaMemberF, 2, 4, 2),
@@ -1179,7 +1179,7 @@ const struct SpriteFrameImage gObjectEventPicTable_MagmaMemberF[] = {
overworld_frame(gObjectEventPic_MagmaMemberF, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Sidney[] = {
+static const struct SpriteFrameImage sPicTable_Sidney[] = {
overworld_frame(gObjectEventPic_Sidney, 2, 4, 0),
overworld_frame(gObjectEventPic_Sidney, 2, 4, 1),
overworld_frame(gObjectEventPic_Sidney, 2, 4, 2),
@@ -1191,7 +1191,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Sidney[] = {
overworld_frame(gObjectEventPic_Sidney, 2, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Phoebe[] = {
+static const struct SpriteFrameImage sPicTable_Phoebe[] = {
overworld_frame(gObjectEventPic_Phoebe, 2, 4, 0),
overworld_frame(gObjectEventPic_Phoebe, 2, 4, 1),
overworld_frame(gObjectEventPic_Phoebe, 2, 4, 2),
@@ -1203,7 +1203,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Phoebe[] = {
overworld_frame(gObjectEventPic_Phoebe, 2, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Glacia[] = {
+static const struct SpriteFrameImage sPicTable_Glacia[] = {
overworld_frame(gObjectEventPic_Glacia, 2, 4, 0),
overworld_frame(gObjectEventPic_Glacia, 2, 4, 1),
overworld_frame(gObjectEventPic_Glacia, 2, 4, 2),
@@ -1215,7 +1215,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Glacia[] = {
overworld_frame(gObjectEventPic_Glacia, 2, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Drake[] = {
+static const struct SpriteFrameImage sPicTable_Drake[] = {
overworld_frame(gObjectEventPic_Drake, 2, 4, 0),
overworld_frame(gObjectEventPic_Drake, 2, 4, 1),
overworld_frame(gObjectEventPic_Drake, 2, 4, 2),
@@ -1227,7 +1227,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Drake[] = {
overworld_frame(gObjectEventPic_Drake, 2, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Roxanne[] = {
+static const struct SpriteFrameImage sPicTable_Roxanne[] = {
overworld_frame(gObjectEventPic_Roxanne, 2, 4, 0),
overworld_frame(gObjectEventPic_Roxanne, 2, 4, 1),
overworld_frame(gObjectEventPic_Roxanne, 2, 4, 2),
@@ -1239,7 +1239,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Roxanne[] = {
overworld_frame(gObjectEventPic_Roxanne, 2, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Brawly[] = {
+static const struct SpriteFrameImage sPicTable_Brawly[] = {
overworld_frame(gObjectEventPic_Brawly, 2, 4, 0),
overworld_frame(gObjectEventPic_Brawly, 2, 4, 1),
overworld_frame(gObjectEventPic_Brawly, 2, 4, 2),
@@ -1251,7 +1251,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Brawly[] = {
overworld_frame(gObjectEventPic_Brawly, 2, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Wattson[] = {
+static const struct SpriteFrameImage sPicTable_Wattson[] = {
overworld_frame(gObjectEventPic_Wattson, 2, 4, 0),
overworld_frame(gObjectEventPic_Wattson, 2, 4, 1),
overworld_frame(gObjectEventPic_Wattson, 2, 4, 2),
@@ -1263,7 +1263,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Wattson[] = {
overworld_frame(gObjectEventPic_Wattson, 2, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Flannery[] = {
+static const struct SpriteFrameImage sPicTable_Flannery[] = {
overworld_frame(gObjectEventPic_Flannery, 2, 4, 0),
overworld_frame(gObjectEventPic_Flannery, 2, 4, 1),
overworld_frame(gObjectEventPic_Flannery, 2, 4, 2),
@@ -1275,7 +1275,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Flannery[] = {
overworld_frame(gObjectEventPic_Flannery, 2, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Norman[] = {
+static const struct SpriteFrameImage sPicTable_Norman[] = {
overworld_frame(gObjectEventPic_Norman, 2, 4, 0),
overworld_frame(gObjectEventPic_Norman, 2, 4, 1),
overworld_frame(gObjectEventPic_Norman, 2, 4, 2),
@@ -1287,7 +1287,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Norman[] = {
overworld_frame(gObjectEventPic_Norman, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Winona[] = {
+static const struct SpriteFrameImage sPicTable_Winona[] = {
overworld_frame(gObjectEventPic_Winona, 2, 4, 0),
overworld_frame(gObjectEventPic_Winona, 2, 4, 1),
overworld_frame(gObjectEventPic_Winona, 2, 4, 2),
@@ -1299,7 +1299,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Winona[] = {
overworld_frame(gObjectEventPic_Winona, 2, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Liza[] = {
+static const struct SpriteFrameImage sPicTable_Liza[] = {
overworld_frame(gObjectEventPic_Liza, 2, 4, 0),
overworld_frame(gObjectEventPic_Liza, 2, 4, 1),
overworld_frame(gObjectEventPic_Liza, 2, 4, 2),
@@ -1311,7 +1311,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Liza[] = {
overworld_frame(gObjectEventPic_Liza, 2, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Tate[] = {
+static const struct SpriteFrameImage sPicTable_Tate[] = {
overworld_frame(gObjectEventPic_Tate, 2, 4, 0),
overworld_frame(gObjectEventPic_Tate, 2, 4, 1),
overworld_frame(gObjectEventPic_Tate, 2, 4, 2),
@@ -1323,7 +1323,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Tate[] = {
overworld_frame(gObjectEventPic_Tate, 2, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Wallace[] = {
+static const struct SpriteFrameImage sPicTable_Wallace[] = {
overworld_frame(gObjectEventPic_Wallace, 2, 4, 0),
overworld_frame(gObjectEventPic_Wallace, 2, 4, 1),
overworld_frame(gObjectEventPic_Wallace, 2, 4, 2),
@@ -1335,7 +1335,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Wallace[] = {
overworld_frame(gObjectEventPic_Wallace, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Steven[] = {
+static const struct SpriteFrameImage sPicTable_Steven[] = {
overworld_frame(gObjectEventPic_Steven, 2, 4, 0),
overworld_frame(gObjectEventPic_Steven, 2, 4, 1),
overworld_frame(gObjectEventPic_Steven, 2, 4, 2),
@@ -1347,7 +1347,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Steven[] = {
overworld_frame(gObjectEventPic_Steven, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Wally[] = {
+static const struct SpriteFrameImage sPicTable_Wally[] = {
overworld_frame(gObjectEventPic_Wally, 2, 4, 0),
overworld_frame(gObjectEventPic_Wally, 2, 4, 1),
overworld_frame(gObjectEventPic_Wally, 2, 4, 2),
@@ -1359,7 +1359,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Wally[] = {
overworld_frame(gObjectEventPic_Wally, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_RubySapphireLittleBoy[] = {
+static const struct SpriteFrameImage sPicTable_RubySapphireLittleBoy[] = {
overworld_frame(gObjectEventPic_RubySapphireLittleBoy, 2, 2, 0),
overworld_frame(gObjectEventPic_RubySapphireLittleBoy, 2, 2, 1),
overworld_frame(gObjectEventPic_RubySapphireLittleBoy, 2, 2, 2),
@@ -1371,7 +1371,7 @@ const struct SpriteFrameImage gObjectEventPicTable_RubySapphireLittleBoy[] = {
overworld_frame(gObjectEventPic_RubySapphireLittleBoy, 2, 2, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_BrendanFishing[] = {
+static const struct SpriteFrameImage sPicTable_BrendanFishing[] = {
overworld_frame(gObjectEventPic_BrendanFishing, 4, 4, 0),
overworld_frame(gObjectEventPic_BrendanFishing, 4, 4, 1),
overworld_frame(gObjectEventPic_BrendanFishing, 4, 4, 2),
@@ -1386,7 +1386,7 @@ const struct SpriteFrameImage gObjectEventPicTable_BrendanFishing[] = {
overworld_frame(gObjectEventPic_BrendanFishing, 4, 4, 11),
};
-const struct SpriteFrameImage gObjectEventPicTable_MayFishing[] = {
+static const struct SpriteFrameImage sPicTable_MayFishing[] = {
overworld_frame(gObjectEventPic_MayFishing, 4, 4, 0),
overworld_frame(gObjectEventPic_MayFishing, 4, 4, 1),
overworld_frame(gObjectEventPic_MayFishing, 4, 4, 2),
@@ -1401,7 +1401,7 @@ const struct SpriteFrameImage gObjectEventPicTable_MayFishing[] = {
overworld_frame(gObjectEventPic_MayFishing, 4, 4, 11),
};
-const struct SpriteFrameImage gObjectEventPicTable_HotSpringsOldWoman[] = {
+static const struct SpriteFrameImage sPicTable_HotSpringsOldWoman[] = {
overworld_frame(gObjectEventPic_HotSpringsOldWoman, 2, 4, 0),
overworld_frame(gObjectEventPic_HotSpringsOldWoman, 2, 4, 1),
overworld_frame(gObjectEventPic_HotSpringsOldWoman, 2, 4, 2),
@@ -1413,7 +1413,7 @@ const struct SpriteFrameImage gObjectEventPicTable_HotSpringsOldWoman[] = {
overworld_frame(gObjectEventPic_HotSpringsOldWoman, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_SSTidal[] = {
+static const struct SpriteFrameImage sPicTable_SSTidal[] = {
obj_frame_tiles(gObjectEventPic_SSTidal),
obj_frame_tiles(gObjectEventPic_SSTidal),
obj_frame_tiles(gObjectEventPic_SSTidal),
@@ -1425,7 +1425,7 @@ const struct SpriteFrameImage gObjectEventPicTable_SSTidal[] = {
obj_frame_tiles(gObjectEventPic_SSTidal),
};
-const struct SpriteFrameImage gObjectEventPicTable_SubmarineShadow[] = {
+static const struct SpriteFrameImage sPicTable_SubmarineShadow[] = {
obj_frame_tiles(gObjectEventPic_SubmarineShadow),
obj_frame_tiles(gObjectEventPic_SubmarineShadow),
obj_frame_tiles(gObjectEventPic_SubmarineShadow),
@@ -1437,187 +1437,187 @@ const struct SpriteFrameImage gObjectEventPicTable_SubmarineShadow[] = {
obj_frame_tiles(gObjectEventPic_SubmarineShadow),
};
-const struct SpriteFrameImage gObjectEventPicTable_PichuDoll[] = {
+static const struct SpriteFrameImage sPicTable_PichuDoll[] = {
obj_frame_tiles(gObjectEventPic_PichuDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_PikachuDoll[] = {
+static const struct SpriteFrameImage sPicTable_PikachuDoll[] = {
obj_frame_tiles(gObjectEventPic_PikachuDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_MarillDoll[] = {
+static const struct SpriteFrameImage sPicTable_MarillDoll[] = {
obj_frame_tiles(gObjectEventPic_MarillDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_TogepiDoll[] = {
+static const struct SpriteFrameImage sPicTable_TogepiDoll[] = {
obj_frame_tiles(gObjectEventPic_TogepiDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_CyndaquilDoll[] = {
+static const struct SpriteFrameImage sPicTable_CyndaquilDoll[] = {
obj_frame_tiles(gObjectEventPic_CyndaquilDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_ChikoritaDoll[] = {
+static const struct SpriteFrameImage sPicTable_ChikoritaDoll[] = {
obj_frame_tiles(gObjectEventPic_ChikoritaDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_TotodileDoll[] = {
+static const struct SpriteFrameImage sPicTable_TotodileDoll[] = {
obj_frame_tiles(gObjectEventPic_TotodileDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_JigglypuffDoll[] = {
+static const struct SpriteFrameImage sPicTable_JigglypuffDoll[] = {
obj_frame_tiles(gObjectEventPic_JigglypuffDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_MeowthDoll[] = {
+static const struct SpriteFrameImage sPicTable_MeowthDoll[] = {
obj_frame_tiles(gObjectEventPic_MeowthDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_ClefairyDoll[] = {
+static const struct SpriteFrameImage sPicTable_ClefairyDoll[] = {
obj_frame_tiles(gObjectEventPic_ClefairyDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_DittoDoll[] = {
+static const struct SpriteFrameImage sPicTable_DittoDoll[] = {
obj_frame_tiles(gObjectEventPic_DittoDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_SmoochumDoll[] = {
+static const struct SpriteFrameImage sPicTable_SmoochumDoll[] = {
obj_frame_tiles(gObjectEventPic_SmoochumDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_TreeckoDoll[] = {
+static const struct SpriteFrameImage sPicTable_TreeckoDoll[] = {
obj_frame_tiles(gObjectEventPic_TreeckoDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_TorchicDoll[] = {
+static const struct SpriteFrameImage sPicTable_TorchicDoll[] = {
obj_frame_tiles(gObjectEventPic_TorchicDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_MudkipDoll[] = {
+static const struct SpriteFrameImage sPicTable_MudkipDoll[] = {
obj_frame_tiles(gObjectEventPic_MudkipDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_DuskullDoll[] = {
+static const struct SpriteFrameImage sPicTable_DuskullDoll[] = {
obj_frame_tiles(gObjectEventPic_DuskullDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_WynautDoll[] = {
+static const struct SpriteFrameImage sPicTable_WynautDoll[] = {
obj_frame_tiles(gObjectEventPic_WynautDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_BaltoyDoll[] = {
+static const struct SpriteFrameImage sPicTable_BaltoyDoll[] = {
obj_frame_tiles(gObjectEventPic_BaltoyDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_KecleonDoll[] = {
+static const struct SpriteFrameImage sPicTable_KecleonDoll[] = {
obj_frame_tiles(gObjectEventPic_KecleonDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_AzurillDoll[] = {
+static const struct SpriteFrameImage sPicTable_AzurillDoll[] = {
obj_frame_tiles(gObjectEventPic_AzurillDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_SkittyDoll[] = {
+static const struct SpriteFrameImage sPicTable_SkittyDoll[] = {
obj_frame_tiles(gObjectEventPic_SkittyDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_SwabluDoll[] = {
+static const struct SpriteFrameImage sPicTable_SwabluDoll[] = {
obj_frame_tiles(gObjectEventPic_SwabluDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_GulpinDoll[] = {
+static const struct SpriteFrameImage sPicTable_GulpinDoll[] = {
obj_frame_tiles(gObjectEventPic_GulpinDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_LotadDoll[] = {
+static const struct SpriteFrameImage sPicTable_LotadDoll[] = {
obj_frame_tiles(gObjectEventPic_LotadDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_SeedotDoll[] = {
+static const struct SpriteFrameImage sPicTable_SeedotDoll[] = {
obj_frame_tiles(gObjectEventPic_SeedotDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_PikaCushion[] = {
+static const struct SpriteFrameImage sPicTable_PikaCushion[] = {
obj_frame_tiles(gObjectEventPic_PikaCushion),
};
-const struct SpriteFrameImage gObjectEventPicTable_RoundCushion[] = {
+static const struct SpriteFrameImage sPicTable_RoundCushion[] = {
obj_frame_tiles(gObjectEventPic_RoundCushion),
};
-const struct SpriteFrameImage gObjectEventPicTable_KissCushion[] = {
+static const struct SpriteFrameImage sPicTable_KissCushion[] = {
obj_frame_tiles(gObjectEventPic_KissCushion),
};
-const struct SpriteFrameImage gObjectEventPicTable_ZigzagCushion[] = {
+static const struct SpriteFrameImage sPicTable_ZigzagCushion[] = {
obj_frame_tiles(gObjectEventPic_ZigzagCushion),
};
-const struct SpriteFrameImage gObjectEventPicTable_SpinCushion[] = {
+static const struct SpriteFrameImage sPicTable_SpinCushion[] = {
obj_frame_tiles(gObjectEventPic_SpinCushion),
};
-const struct SpriteFrameImage gObjectEventPicTable_DiamondCushion[] = {
+static const struct SpriteFrameImage sPicTable_DiamondCushion[] = {
obj_frame_tiles(gObjectEventPic_DiamondCushion),
};
-const struct SpriteFrameImage gObjectEventPicTable_BallCushion[] = {
+static const struct SpriteFrameImage sPicTable_BallCushion[] = {
obj_frame_tiles(gObjectEventPic_BallCushion),
};
-const struct SpriteFrameImage gObjectEventPicTable_GrassCushion[] = {
+static const struct SpriteFrameImage sPicTable_GrassCushion[] = {
obj_frame_tiles(gObjectEventPic_GrassCushion),
};
-const struct SpriteFrameImage gObjectEventPicTable_FireCushion[] = {
+static const struct SpriteFrameImage sPicTable_FireCushion[] = {
obj_frame_tiles(gObjectEventPic_FireCushion),
};
-const struct SpriteFrameImage gObjectEventPicTable_WaterCushion[] = {
+static const struct SpriteFrameImage sPicTable_WaterCushion[] = {
obj_frame_tiles(gObjectEventPic_WaterCushion),
};
-const struct SpriteFrameImage gObjectEventPicTable_BigSnorlaxDoll[] = {
+static const struct SpriteFrameImage sPicTable_BigSnorlaxDoll[] = {
obj_frame_tiles(gObjectEventPic_BigSnorlaxDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_BigRhydonDoll[] = {
+static const struct SpriteFrameImage sPicTable_BigRhydonDoll[] = {
obj_frame_tiles(gObjectEventPic_BigRhydonDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_BigLaprasDoll[] = {
+static const struct SpriteFrameImage sPicTable_BigLaprasDoll[] = {
obj_frame_tiles(gObjectEventPic_BigLaprasDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_BigVenusaurDoll[] = {
+static const struct SpriteFrameImage sPicTable_BigVenusaurDoll[] = {
obj_frame_tiles(gObjectEventPic_BigVenusaurDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_BigCharizardDoll[] = {
+static const struct SpriteFrameImage sPicTable_BigCharizardDoll[] = {
obj_frame_tiles(gObjectEventPic_BigCharizardDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_BigBlastoiseDoll[] = {
+static const struct SpriteFrameImage sPicTable_BigBlastoiseDoll[] = {
obj_frame_tiles(gObjectEventPic_BigBlastoiseDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_BigWailmerDoll[] = {
+static const struct SpriteFrameImage sPicTable_BigWailmerDoll[] = {
obj_frame_tiles(gObjectEventPic_BigWailmerDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_BigRegirockDoll[] = {
+static const struct SpriteFrameImage sPicTable_BigRegirockDoll[] = {
obj_frame_tiles(gObjectEventPic_BigRegirockDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_BigRegiceDoll[] = {
+static const struct SpriteFrameImage sPicTable_BigRegiceDoll[] = {
obj_frame_tiles(gObjectEventPic_BigRegiceDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_BigRegisteelDoll[] = {
+static const struct SpriteFrameImage sPicTable_BigRegisteelDoll[] = {
obj_frame_tiles(gObjectEventPic_BigRegisteelDoll),
};
-const struct SpriteFrameImage gObjectEventPicTable_LatiasLatios[] = {
+static const struct SpriteFrameImage sPicTable_LatiasLatios[] = {
overworld_frame(gObjectEventPic_LatiasLatios, 4, 4, 0),
overworld_frame(gObjectEventPic_LatiasLatios, 4, 4, 0),
overworld_frame(gObjectEventPic_LatiasLatios, 4, 4, 0),
@@ -1629,7 +1629,7 @@ const struct SpriteFrameImage gObjectEventPicTable_LatiasLatios[] = {
overworld_frame(gObjectEventPic_LatiasLatios, 4, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_GameboyKid[] = {
+static const struct SpriteFrameImage sPicTable_GameboyKid[] = {
overworld_frame(gObjectEventPic_GameboyKid, 2, 4, 0),
overworld_frame(gObjectEventPic_GameboyKid, 2, 4, 1),
overworld_frame(gObjectEventPic_GameboyKid, 2, 4, 2),
@@ -1641,7 +1641,7 @@ const struct SpriteFrameImage gObjectEventPicTable_GameboyKid[] = {
overworld_frame(gObjectEventPic_GameboyKid, 2, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_ContestJudge[] = {
+static const struct SpriteFrameImage sPicTable_ContestJudge[] = {
overworld_frame(gObjectEventPic_ContestJudge, 2, 4, 0),
overworld_frame(gObjectEventPic_ContestJudge, 2, 4, 1),
overworld_frame(gObjectEventPic_ContestJudge, 2, 4, 2),
@@ -1653,7 +1653,7 @@ const struct SpriteFrameImage gObjectEventPicTable_ContestJudge[] = {
overworld_frame(gObjectEventPic_ContestJudge, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_BrendanWatering[] = {
+static const struct SpriteFrameImage sPicTable_BrendanWatering[] = {
overworld_frame(gObjectEventPic_BrendanWatering, 4, 4, 0),
overworld_frame(gObjectEventPic_BrendanWatering, 4, 4, 2),
overworld_frame(gObjectEventPic_BrendanWatering, 4, 4, 4),
@@ -1665,7 +1665,7 @@ const struct SpriteFrameImage gObjectEventPicTable_BrendanWatering[] = {
overworld_frame(gObjectEventPic_BrendanWatering, 4, 4, 5),
};
-const struct SpriteFrameImage gObjectEventPicTable_MayWatering[] = {
+static const struct SpriteFrameImage sPicTable_MayWatering[] = {
overworld_frame(gObjectEventPic_MayWatering, 4, 4, 0),
overworld_frame(gObjectEventPic_MayWatering, 4, 4, 2),
overworld_frame(gObjectEventPic_MayWatering, 4, 4, 4),
@@ -1677,15 +1677,15 @@ const struct SpriteFrameImage gObjectEventPicTable_MayWatering[] = {
overworld_frame(gObjectEventPic_MayWatering, 4, 4, 5),
};
-const struct SpriteFrameImage gObjectEventPicTable_BrendanDecorating[] = {
+static const struct SpriteFrameImage sPicTable_BrendanDecorating[] = {
obj_frame_tiles(gObjectEventPic_BrendanDecorating),
};
-const struct SpriteFrameImage gObjectEventPicTable_MayDecorating[] = {
+static const struct SpriteFrameImage sPicTable_MayDecorating[] = {
obj_frame_tiles(gObjectEventPic_MayDecorating),
};
-const struct SpriteFrameImage gObjectEventPicTable_Archie[] = {
+static const struct SpriteFrameImage sPicTable_Archie[] = {
overworld_frame(gObjectEventPic_Archie, 2, 4, 0),
overworld_frame(gObjectEventPic_Archie, 2, 4, 1),
overworld_frame(gObjectEventPic_Archie, 2, 4, 2),
@@ -1697,7 +1697,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Archie[] = {
overworld_frame(gObjectEventPic_Archie, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Maxie[] = {
+static const struct SpriteFrameImage sPicTable_Maxie[] = {
overworld_frame(gObjectEventPic_Maxie, 2, 4, 0),
overworld_frame(gObjectEventPic_Maxie, 2, 4, 1),
overworld_frame(gObjectEventPic_Maxie, 2, 4, 2),
@@ -1709,7 +1709,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Maxie[] = {
overworld_frame(gObjectEventPic_Maxie, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_KyogreFront[] = {
+static const struct SpriteFrameImage sPicTable_KyogreFront[] = {
overworld_frame(gObjectEventPic_Kyogre, 4, 4, 0),
overworld_frame(gObjectEventPic_Kyogre, 4, 4, 0),
overworld_frame(gObjectEventPic_Kyogre, 4, 4, 0),
@@ -1721,7 +1721,7 @@ const struct SpriteFrameImage gObjectEventPicTable_KyogreFront[] = {
overworld_frame(gObjectEventPic_Kyogre, 4, 4, 1),
};
-const struct SpriteFrameImage gObjectEventPicTable_GroudonFront[] = {
+static const struct SpriteFrameImage sPicTable_GroudonFront[] = {
overworld_frame(gObjectEventPic_Groudon, 4, 4, 0),
overworld_frame(gObjectEventPic_Groudon, 4, 4, 0),
overworld_frame(gObjectEventPic_Groudon, 4, 4, 0),
@@ -1733,7 +1733,7 @@ const struct SpriteFrameImage gObjectEventPicTable_GroudonFront[] = {
overworld_frame(gObjectEventPic_Groudon, 4, 4, 1),
};
-const struct SpriteFrameImage gObjectEventPicTable_KyogreSide[] = {
+static const struct SpriteFrameImage sPicTable_KyogreSide[] = {
overworld_frame(gObjectEventPic_Kyogre, 4, 4, 2),
overworld_frame(gObjectEventPic_Kyogre, 4, 4, 2),
overworld_frame(gObjectEventPic_Kyogre, 4, 4, 2),
@@ -1745,7 +1745,7 @@ const struct SpriteFrameImage gObjectEventPicTable_KyogreSide[] = {
overworld_frame(gObjectEventPic_Kyogre, 4, 4, 3),
};
-const struct SpriteFrameImage gObjectEventPicTable_GroudonSide[] = {
+static const struct SpriteFrameImage sPicTable_GroudonSide[] = {
overworld_frame(gObjectEventPic_Groudon, 4, 4, 2),
overworld_frame(gObjectEventPic_Groudon, 4, 4, 2),
overworld_frame(gObjectEventPic_Groudon, 4, 4, 2),
@@ -1757,11 +1757,11 @@ const struct SpriteFrameImage gObjectEventPicTable_GroudonSide[] = {
overworld_frame(gObjectEventPic_Groudon, 4, 4, 3),
};
-const struct SpriteFrameImage gObjectEventPicTable_Fossil[] = {
+static const struct SpriteFrameImage sPicTable_Fossil[] = {
obj_frame_tiles(gObjectEventPic_Fossil),
};
-const struct SpriteFrameImage gObjectEventPicTable_Regi[] = {
+static const struct SpriteFrameImage sPicTable_Regi[] = {
obj_frame_tiles(gObjectEventPic_Regi),
obj_frame_tiles(gObjectEventPic_Regi),
obj_frame_tiles(gObjectEventPic_Regi),
@@ -1773,7 +1773,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Regi[] = {
obj_frame_tiles(gObjectEventPic_Regi),
};
-const struct SpriteFrameImage gObjectEventPicTable_Skitty[] = {
+static const struct SpriteFrameImage sPicTable_Skitty[] = {
overworld_frame(gObjectEventPic_Skitty, 2, 2, 0),
overworld_frame(gObjectEventPic_Skitty, 2, 2, 1),
overworld_frame(gObjectEventPic_Skitty, 2, 2, 2),
@@ -1785,7 +1785,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Skitty[] = {
overworld_frame(gObjectEventPic_Skitty, 2, 2, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Kecleon[] = {
+static const struct SpriteFrameImage sPicTable_Kecleon[] = {
overworld_frame(gObjectEventPic_Kecleon, 2, 2, 0),
overworld_frame(gObjectEventPic_Kecleon, 2, 2, 1),
overworld_frame(gObjectEventPic_Kecleon, 2, 2, 2),
@@ -1797,7 +1797,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Kecleon[] = {
overworld_frame(gObjectEventPic_Kecleon, 2, 2, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Rayquaza[] = {
+static const struct SpriteFrameImage sPicTable_Rayquaza[] = {
overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 0),
overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 1),
overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 2),
@@ -1805,7 +1805,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Rayquaza[] = {
overworld_frame(gObjectEventPic_Rayquaza, 8, 8, 4),
};
-const struct SpriteFrameImage gObjectEventPicTable_RayquazaStill[] = {
+static const struct SpriteFrameImage sPicTable_RayquazaStill[] = {
obj_frame_tiles(gObjectEventPic_RayquazaStill),
obj_frame_tiles(gObjectEventPic_RayquazaStill),
obj_frame_tiles(gObjectEventPic_RayquazaStill),
@@ -1817,7 +1817,7 @@ const struct SpriteFrameImage gObjectEventPicTable_RayquazaStill[] = {
obj_frame_tiles(gObjectEventPic_RayquazaStill),
};
-const struct SpriteFrameImage gObjectEventPicTable_Zigzagoon[] = {
+static const struct SpriteFrameImage sPicTable_Zigzagoon[] = {
overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 0),
overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 1),
overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 2),
@@ -1829,7 +1829,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Zigzagoon[] = {
overworld_frame(gObjectEventPic_Zigzagoon, 2, 2, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Pikachu[] = {
+static const struct SpriteFrameImage sPicTable_Pikachu[] = {
overworld_frame(gObjectEventPic_Pikachu, 2, 2, 0),
overworld_frame(gObjectEventPic_Pikachu, 2, 2, 1),
overworld_frame(gObjectEventPic_Pikachu, 2, 2, 2),
@@ -1841,7 +1841,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Pikachu[] = {
overworld_frame(gObjectEventPic_Pikachu, 2, 2, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Azumarill[] = {
+static const struct SpriteFrameImage sPicTable_Azumarill[] = {
overworld_frame(gObjectEventPic_Azumarill, 2, 2, 0),
overworld_frame(gObjectEventPic_Azumarill, 2, 2, 1),
overworld_frame(gObjectEventPic_Azumarill, 2, 2, 2),
@@ -1853,7 +1853,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Azumarill[] = {
overworld_frame(gObjectEventPic_Azumarill, 2, 2, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Wingull[] = {
+static const struct SpriteFrameImage sPicTable_Wingull[] = {
overworld_frame(gObjectEventPic_Wingull, 2, 2, 0),
overworld_frame(gObjectEventPic_Wingull, 2, 2, 2),
overworld_frame(gObjectEventPic_Wingull, 2, 2, 4),
@@ -1865,7 +1865,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Wingull[] = {
overworld_frame(gObjectEventPic_Wingull, 2, 2, 5),
};
-const struct SpriteFrameImage gObjectEventPicTable_TuberMSwimming[] = {
+static const struct SpriteFrameImage sPicTable_TuberMSwimming[] = {
overworld_frame(gObjectEventPic_TuberMSwimming, 2, 2, 0),
overworld_frame(gObjectEventPic_TuberMSwimming, 2, 2, 1),
overworld_frame(gObjectEventPic_TuberMSwimming, 2, 2, 2),
@@ -1877,7 +1877,7 @@ const struct SpriteFrameImage gObjectEventPicTable_TuberMSwimming[] = {
overworld_frame(gObjectEventPic_TuberMSwimming, 2, 2, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Azurill[] = {
+static const struct SpriteFrameImage sPicTable_Azurill[] = {
overworld_frame(gObjectEventPic_Azurill, 2, 2, 0),
overworld_frame(gObjectEventPic_Azurill, 2, 2, 1),
overworld_frame(gObjectEventPic_Azurill, 2, 2, 2),
@@ -1889,7 +1889,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Azurill[] = {
overworld_frame(gObjectEventPic_Azurill, 2, 2, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Mom[] = {
+static const struct SpriteFrameImage sPicTable_Mom[] = {
overworld_frame(gObjectEventPic_Mom, 2, 4, 0),
overworld_frame(gObjectEventPic_Mom, 2, 4, 1),
overworld_frame(gObjectEventPic_Mom, 2, 4, 2),
@@ -1901,7 +1901,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Mom[] = {
overworld_frame(gObjectEventPic_Mom, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Scott[] = {
+static const struct SpriteFrameImage sPicTable_Scott[] = {
overworld_frame(gObjectEventPic_Scott, 2, 4, 0),
overworld_frame(gObjectEventPic_Scott, 2, 4, 1),
overworld_frame(gObjectEventPic_Scott, 2, 4, 2),
@@ -1913,7 +1913,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Scott[] = {
overworld_frame(gObjectEventPic_Scott, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Juan[] = {
+static const struct SpriteFrameImage sPicTable_Juan[] = {
overworld_frame(gObjectEventPic_Juan, 2, 4, 0),
overworld_frame(gObjectEventPic_Juan, 2, 4, 1),
overworld_frame(gObjectEventPic_Juan, 2, 4, 2),
@@ -1925,7 +1925,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Juan[] = {
overworld_frame(gObjectEventPic_Juan, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_MysteryEventDeliveryman[] = {
+static const struct SpriteFrameImage sPicTable_MysteryEventDeliveryman[] = {
overworld_frame(gObjectEventPic_MysteryEventDeliveryman, 2, 4, 0),
overworld_frame(gObjectEventPic_MysteryEventDeliveryman, 2, 4, 1),
overworld_frame(gObjectEventPic_MysteryEventDeliveryman, 2, 4, 2),
@@ -1937,11 +1937,11 @@ const struct SpriteFrameImage gObjectEventPicTable_MysteryEventDeliveryman[] = {
overworld_frame(gObjectEventPic_MysteryEventDeliveryman, 2, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Statue[] = {
+static const struct SpriteFrameImage sPicTable_Statue[] = {
obj_frame_tiles(gObjectEventPic_Statue),
};
-const struct SpriteFrameImage gObjectEventPicTable_Dusclops[] = {
+static const struct SpriteFrameImage sPicTable_Dusclops[] = {
overworld_frame(gObjectEventPic_Dusclops, 2, 4, 0),
overworld_frame(gObjectEventPic_Dusclops, 2, 4, 1),
overworld_frame(gObjectEventPic_Dusclops, 2, 4, 2),
@@ -1953,7 +1953,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Dusclops[] = {
overworld_frame(gObjectEventPic_Dusclops, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Kirlia[] = {
+static const struct SpriteFrameImage sPicTable_Kirlia[] = {
overworld_frame(gObjectEventPic_Kirlia, 2, 4, 0),
overworld_frame(gObjectEventPic_Kirlia, 2, 4, 1),
overworld_frame(gObjectEventPic_Kirlia, 2, 4, 2),
@@ -1965,7 +1965,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Kirlia[] = {
overworld_frame(gObjectEventPic_Kirlia, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_UnionRoomAttendant[] = {
+static const struct SpriteFrameImage sPicTable_UnionRoomAttendant[] = {
overworld_frame(gObjectEventPic_UnionRoomAttendant, 2, 4, 0),
overworld_frame(gObjectEventPic_UnionRoomAttendant, 2, 4, 1),
overworld_frame(gObjectEventPic_UnionRoomAttendant, 2, 4, 2),
@@ -1977,7 +1977,7 @@ const struct SpriteFrameImage gObjectEventPicTable_UnionRoomAttendant[] = {
overworld_frame(gObjectEventPic_UnionRoomAttendant, 2, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Sudowoodo[] = {
+static const struct SpriteFrameImage sPicTable_Sudowoodo[] = {
overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 0),
overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 0),
overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 1),
@@ -1989,7 +1989,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Sudowoodo[] = {
overworld_frame(gObjectEventPic_Sudowoodo, 2, 4, 2),
};
-const struct SpriteFrameImage gObjectEventPicTable_Mew[] = {
+static const struct SpriteFrameImage sPicTable_Mew[] = {
overworld_frame(gObjectEventPic_Mew, 2, 4, 0),
overworld_frame(gObjectEventPic_Mew, 2, 4, 1),
overworld_frame(gObjectEventPic_Mew, 2, 4, 2),
@@ -2001,7 +2001,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Mew[] = {
overworld_frame(gObjectEventPic_Mew, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Red[] = {
+static const struct SpriteFrameImage sPicTable_Red[] = {
overworld_frame(gObjectEventPic_Red, 2, 4, 0),
overworld_frame(gObjectEventPic_Red, 2, 4, 1),
overworld_frame(gObjectEventPic_Red, 2, 4, 2),
@@ -2013,7 +2013,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Red[] = {
overworld_frame(gObjectEventPic_Red, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Leaf[] = {
+static const struct SpriteFrameImage sPicTable_Leaf[] = {
overworld_frame(gObjectEventPic_Leaf, 2, 4, 0),
overworld_frame(gObjectEventPic_Leaf, 2, 4, 1),
overworld_frame(gObjectEventPic_Leaf, 2, 4, 2),
@@ -2025,7 +2025,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Leaf[] = {
overworld_frame(gObjectEventPic_Leaf, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Deoxys[] = {
+static const struct SpriteFrameImage sPicTable_Deoxys[] = {
overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0),
overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0),
overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0),
@@ -2037,11 +2037,11 @@ const struct SpriteFrameImage gObjectEventPicTable_Deoxys[] = {
overworld_frame(gObjectEventPic_Deoxys, 4, 4, 0),
};
-const struct SpriteFrameImage gObjectEventPicTable_BirthIslandStone[] = {
+static const struct SpriteFrameImage sPicTable_BirthIslandStone[] = {
obj_frame_tiles(gObjectEventPic_BirthIslandStone),
};
-const struct SpriteFrameImage gObjectEventPicTable_Anabel[] = {
+static const struct SpriteFrameImage sPicTable_Anabel[] = {
overworld_frame(gObjectEventPic_Anabel, 2, 4, 0),
overworld_frame(gObjectEventPic_Anabel, 2, 4, 1),
overworld_frame(gObjectEventPic_Anabel, 2, 4, 2),
@@ -2053,7 +2053,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Anabel[] = {
overworld_frame(gObjectEventPic_Anabel, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Tucker[] = {
+static const struct SpriteFrameImage sPicTable_Tucker[] = {
overworld_frame(gObjectEventPic_Tucker, 2, 4, 0),
overworld_frame(gObjectEventPic_Tucker, 2, 4, 1),
overworld_frame(gObjectEventPic_Tucker, 2, 4, 2),
@@ -2065,7 +2065,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Tucker[] = {
overworld_frame(gObjectEventPic_Tucker, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Spenser[] = {
+static const struct SpriteFrameImage sPicTable_Spenser[] = {
overworld_frame(gObjectEventPic_Spenser, 2, 4, 0),
overworld_frame(gObjectEventPic_Spenser, 2, 4, 1),
overworld_frame(gObjectEventPic_Spenser, 2, 4, 2),
@@ -2077,7 +2077,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Spenser[] = {
overworld_frame(gObjectEventPic_Spenser, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Greta[] = {
+static const struct SpriteFrameImage sPicTable_Greta[] = {
overworld_frame(gObjectEventPic_Greta, 2, 4, 0),
overworld_frame(gObjectEventPic_Greta, 2, 4, 1),
overworld_frame(gObjectEventPic_Greta, 2, 4, 2),
@@ -2089,7 +2089,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Greta[] = {
overworld_frame(gObjectEventPic_Greta, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Noland[] = {
+static const struct SpriteFrameImage sPicTable_Noland[] = {
overworld_frame(gObjectEventPic_Noland, 2, 4, 0),
overworld_frame(gObjectEventPic_Noland, 2, 4, 1),
overworld_frame(gObjectEventPic_Noland, 2, 4, 2),
@@ -2101,7 +2101,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Noland[] = {
overworld_frame(gObjectEventPic_Noland, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Lucy[] = {
+static const struct SpriteFrameImage sPicTable_Lucy[] = {
overworld_frame(gObjectEventPic_Lucy, 2, 4, 0),
overworld_frame(gObjectEventPic_Lucy, 2, 4, 1),
overworld_frame(gObjectEventPic_Lucy, 2, 4, 2),
@@ -2113,7 +2113,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Lucy[] = {
overworld_frame(gObjectEventPic_Lucy, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Brandon[] = {
+static const struct SpriteFrameImage sPicTable_Brandon[] = {
overworld_frame(gObjectEventPic_Brandon, 2, 4, 0),
overworld_frame(gObjectEventPic_Brandon, 2, 4, 1),
overworld_frame(gObjectEventPic_Brandon, 2, 4, 2),
@@ -2125,7 +2125,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Brandon[] = {
overworld_frame(gObjectEventPic_Brandon, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_Lugia[] = {
+static const struct SpriteFrameImage sPicTable_Lugia[] = {
overworld_frame(gObjectEventPic_Lugia, 4, 4, 0),
overworld_frame(gObjectEventPic_Lugia, 4, 4, 0),
overworld_frame(gObjectEventPic_Lugia, 4, 4, 0),
@@ -2137,7 +2137,7 @@ const struct SpriteFrameImage gObjectEventPicTable_Lugia[] = {
overworld_frame(gObjectEventPic_Lugia, 4, 4, 1),
};
-const struct SpriteFrameImage gObjectEventPicTable_HoOh[] = {
+static const struct SpriteFrameImage sPicTable_HoOh[] = {
overworld_frame(gObjectEventPic_HoOh, 4, 4, 0),
overworld_frame(gObjectEventPic_HoOh, 4, 4, 0),
overworld_frame(gObjectEventPic_HoOh, 4, 4, 0),
@@ -2149,7 +2149,7 @@ const struct SpriteFrameImage gObjectEventPicTable_HoOh[] = {
overworld_frame(gObjectEventPic_HoOh, 4, 4, 1),
};
-const struct SpriteFrameImage gObjectEventPicTable_RubySapphireBrendan[] = {
+static const struct SpriteFrameImage sPicTable_RubySapphireBrendan[] = {
overworld_frame(gObjectEventPic_RubySapphireBrendanNormal, 2, 4, 0),
overworld_frame(gObjectEventPic_RubySapphireBrendanNormal, 2, 4, 1),
overworld_frame(gObjectEventPic_RubySapphireBrendanNormal, 2, 4, 2),
@@ -2161,7 +2161,7 @@ const struct SpriteFrameImage gObjectEventPicTable_RubySapphireBrendan[] = {
overworld_frame(gObjectEventPic_RubySapphireBrendanNormal, 2, 4, 8),
};
-const struct SpriteFrameImage gObjectEventPicTable_RubySapphireMay[] = {
+static const struct SpriteFrameImage sPicTable_RubySapphireMay[] = {
overworld_frame(gObjectEventPic_RubySapphireMayNormal, 2, 4, 0),
overworld_frame(gObjectEventPic_RubySapphireMayNormal, 2, 4, 1),
overworld_frame(gObjectEventPic_RubySapphireMayNormal, 2, 4, 2),
diff --git a/src/data/object_events/object_event_subsprites.h b/src/data/object_events/object_event_subsprites.h
index 63df1f777..0d55c2df2 100755
--- a/src/data/object_events/object_event_subsprites.h
+++ b/src/data/object_events/object_event_subsprites.h
@@ -1,4 +1,4 @@
-const struct Subsprite gObjectEventSpriteOamTable_16x16_0[] = {
+static const struct Subsprite sOamTable_16x16_0[] = {
{
.x = -8,
.y = -8,
@@ -9,7 +9,7 @@ const struct Subsprite gObjectEventSpriteOamTable_16x16_0[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_16x16_1[] = {
+static const struct Subsprite sOamTable_16x16_1[] = {
{
.x = -8,
.y = -8,
@@ -20,7 +20,7 @@ const struct Subsprite gObjectEventSpriteOamTable_16x16_1[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_16x16_2[] = {
+static const struct Subsprite sOamTable_16x16_2[] = {
{
.x = -8,
.y = -8,
@@ -39,7 +39,7 @@ const struct Subsprite gObjectEventSpriteOamTable_16x16_2[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_16x16_3[] = {
+static const struct Subsprite sOamTable_16x16_3[] = {
{
.x = -8,
.y = -8,
@@ -58,7 +58,7 @@ const struct Subsprite gObjectEventSpriteOamTable_16x16_3[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_16x16_4[] = {
+static const struct Subsprite sOamTable_16x16_4[] = {
{
.x = -8,
.y = -8,
@@ -77,16 +77,16 @@ const struct Subsprite gObjectEventSpriteOamTable_16x16_4[] = {
}
};
-const struct SubspriteTable gObjectEventSpriteOamTables_16x16[] = {
+static const struct SubspriteTable sOamTables_16x16[] = {
{0, NULL},
- {1, gObjectEventSpriteOamTable_16x16_0},
- {1, gObjectEventSpriteOamTable_16x16_1},
- {2, gObjectEventSpriteOamTable_16x16_2},
- {2, gObjectEventSpriteOamTable_16x16_3},
- {2, gObjectEventSpriteOamTable_16x16_4}
+ {1, sOamTable_16x16_0},
+ {1, sOamTable_16x16_1},
+ {2, sOamTable_16x16_2},
+ {2, sOamTable_16x16_3},
+ {2, sOamTable_16x16_4}
};
-const struct Subsprite gObjectEventSpriteOamTable_16x32_0[] = {
+static const struct Subsprite sOamTable_16x32_0[] = {
{
.x = -8,
.y = -16,
@@ -97,7 +97,7 @@ const struct Subsprite gObjectEventSpriteOamTable_16x32_0[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_16x32_1[] = {
+static const struct Subsprite sOamTable_16x32_1[] = {
{
.x = -8,
.y = -16,
@@ -108,7 +108,7 @@ const struct Subsprite gObjectEventSpriteOamTable_16x32_1[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_16x32_2[] = {
+static const struct Subsprite sOamTable_16x32_2[] = {
{
.x = -8,
.y = -16,
@@ -135,7 +135,7 @@ const struct Subsprite gObjectEventSpriteOamTable_16x32_2[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_16x32_3[] = {
+static const struct Subsprite sOamTable_16x32_3[] = {
{
.x = -8,
.y = -16,
@@ -154,7 +154,7 @@ const struct Subsprite gObjectEventSpriteOamTable_16x32_3[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_16x32_4[] = {
+static const struct Subsprite sOamTable_16x32_4[] = {
{
.x = -8,
.y = -16,
@@ -173,16 +173,16 @@ const struct Subsprite gObjectEventSpriteOamTable_16x32_4[] = {
}
};
-const struct SubspriteTable gObjectEventSpriteOamTables_16x32[] = {
+static const struct SubspriteTable sOamTables_16x32[] = {
{0, NULL},
- {1, gObjectEventSpriteOamTable_16x32_0},
- {1, gObjectEventSpriteOamTable_16x32_1},
- {3, gObjectEventSpriteOamTable_16x32_2},
- {2, gObjectEventSpriteOamTable_16x32_3},
- {2, gObjectEventSpriteOamTable_16x32_4}
+ {1, sOamTable_16x32_0},
+ {1, sOamTable_16x32_1},
+ {3, sOamTable_16x32_2},
+ {2, sOamTable_16x32_3},
+ {2, sOamTable_16x32_4}
};
-const struct Subsprite gObjectEventSpriteOamTable_32x32_0[] = {
+static const struct Subsprite sOamTable_32x32_0[] = {
{
.x = -16,
.y = -16,
@@ -193,7 +193,7 @@ const struct Subsprite gObjectEventSpriteOamTable_32x32_0[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_32x32_1[] = {
+static const struct Subsprite sOamTable_32x32_1[] = {
{
.x = -16,
.y = -16,
@@ -204,7 +204,7 @@ const struct Subsprite gObjectEventSpriteOamTable_32x32_1[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_32x32_2[] = {
+static const struct Subsprite sOamTable_32x32_2[] = {
{
.x = -16,
.y = -16,
@@ -231,7 +231,7 @@ const struct Subsprite gObjectEventSpriteOamTable_32x32_2[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_32x32_3[] = {
+static const struct Subsprite sOamTable_32x32_3[] = {
{
.x = -16,
.y = -16,
@@ -250,7 +250,7 @@ const struct Subsprite gObjectEventSpriteOamTable_32x32_3[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_32x32_4[] = {
+static const struct Subsprite sOamTable_32x32_4[] = {
{
.x = -16,
.y = -16,
@@ -269,16 +269,16 @@ const struct Subsprite gObjectEventSpriteOamTable_32x32_4[] = {
}
};
-const struct SubspriteTable gObjectEventSpriteOamTables_32x32[] = {
+static const struct SubspriteTable sOamTables_32x32[] = {
{0, NULL},
- {1, gObjectEventSpriteOamTable_32x32_0},
- {1, gObjectEventSpriteOamTable_32x32_1},
- {3, gObjectEventSpriteOamTable_32x32_2},
- {2, gObjectEventSpriteOamTable_32x32_3},
- {2, gObjectEventSpriteOamTable_32x32_4}
+ {1, sOamTable_32x32_0},
+ {1, sOamTable_32x32_1},
+ {3, sOamTable_32x32_2},
+ {2, sOamTable_32x32_3},
+ {2, sOamTable_32x32_4}
};
-const struct Subsprite gObjectEventSpriteOamTable_48x48[] = {
+static const struct Subsprite sOamTable_48x48[] = {
{
.x = -24,
.y = -24,
@@ -377,16 +377,16 @@ const struct Subsprite gObjectEventSpriteOamTable_48x48[] = {
}
};
-const struct SubspriteTable gObjectEventSpriteOamTables_48x48[] = {
- {12, gObjectEventSpriteOamTable_48x48},
- {12, gObjectEventSpriteOamTable_48x48},
- {12, gObjectEventSpriteOamTable_48x48},
- {12, gObjectEventSpriteOamTable_48x48},
- {12, gObjectEventSpriteOamTable_48x48},
- {12, gObjectEventSpriteOamTable_48x48}
+static const struct SubspriteTable sOamTables_48x48[] = {
+ {12, sOamTable_48x48},
+ {12, sOamTable_48x48},
+ {12, sOamTable_48x48},
+ {12, sOamTable_48x48},
+ {12, sOamTable_48x48},
+ {12, sOamTable_48x48}
};
-const struct Subsprite gObjectEventSpriteOamTable_64x32_0[] = {
+static const struct Subsprite sOamTable_64x32_0[] = {
{
.x = -32,
.y = -16,
@@ -397,7 +397,7 @@ const struct Subsprite gObjectEventSpriteOamTable_64x32_0[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_64x32_1[] = {
+static const struct Subsprite sOamTable_64x32_1[] = {
{
.x = -32,
.y = -16,
@@ -408,7 +408,7 @@ const struct Subsprite gObjectEventSpriteOamTable_64x32_1[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_64x32_2[] = {
+static const struct Subsprite sOamTable_64x32_2[] = {
{
.x = -32,
.y = -16,
@@ -419,7 +419,7 @@ const struct Subsprite gObjectEventSpriteOamTable_64x32_2[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_64x32_3[] = {
+static const struct Subsprite sOamTable_64x32_3[] = {
{
.x = -32,
.y = -16,
@@ -431,16 +431,16 @@ const struct Subsprite gObjectEventSpriteOamTable_64x32_3[] = {
};
// Unused
-const struct SubspriteTable gObjectEventSpriteOamTables_64x32[] = {
+static const struct SubspriteTable sOamTables_64x32[] = {
{0, NULL},
- {1, gObjectEventSpriteOamTable_64x32_0},
- {1, gObjectEventSpriteOamTable_64x32_1},
- {1, gObjectEventSpriteOamTable_64x32_2},
- {1, gObjectEventSpriteOamTable_64x32_3},
- {1, gObjectEventSpriteOamTable_64x32_3}
+ {1, sOamTable_64x32_0},
+ {1, sOamTable_64x32_1},
+ {1, sOamTable_64x32_2},
+ {1, sOamTable_64x32_3},
+ {1, sOamTable_64x32_3}
};
-const struct Subsprite gObjectEventSpriteOamTable_64x64_0[] = {
+static const struct Subsprite sOamTable_64x64_0[] = {
{
.x = -32,
.y = -32,
@@ -451,7 +451,7 @@ const struct Subsprite gObjectEventSpriteOamTable_64x64_0[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_64x64_1[] = {
+static const struct Subsprite sOamTable_64x64_1[] = {
{
.x = -32,
.y = -32,
@@ -462,7 +462,7 @@ const struct Subsprite gObjectEventSpriteOamTable_64x64_1[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_64x64_2[] = {
+static const struct Subsprite sOamTable_64x64_2[] = {
{
.x = -32,
.y = -32,
@@ -473,7 +473,7 @@ const struct Subsprite gObjectEventSpriteOamTable_64x64_2[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_64x64_3[] = {
+static const struct Subsprite sOamTable_64x64_3[] = {
{
.x = -32,
.y = -32,
@@ -484,16 +484,16 @@ const struct Subsprite gObjectEventSpriteOamTable_64x64_3[] = {
}
};
-const struct SubspriteTable gObjectEventSpriteOamTables_64x64[] = {
+static const struct SubspriteTable sOamTables_64x64[] = {
{0, NULL},
- {1, gObjectEventSpriteOamTable_64x64_0},
- {1, gObjectEventSpriteOamTable_64x64_1},
- {1, gObjectEventSpriteOamTable_64x64_2},
- {1, gObjectEventSpriteOamTable_64x64_3},
- {1, gObjectEventSpriteOamTable_64x64_3}
+ {1, sOamTable_64x64_0},
+ {1, sOamTable_64x64_1},
+ {1, sOamTable_64x64_2},
+ {1, sOamTable_64x64_3},
+ {1, sOamTable_64x64_3}
};
-const struct Subsprite gObjectEventSpriteOamTable_96x40_0[] = {
+static const struct Subsprite sOamTable_96x40_0[] = {
{
.x = -48,
.y = -20,
@@ -616,7 +616,7 @@ const struct Subsprite gObjectEventSpriteOamTable_96x40_0[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_96x40_1[] = {
+static const struct Subsprite sOamTable_96x40_1[] = {
{
.x = -48,
.y = -20,
@@ -739,7 +739,7 @@ const struct Subsprite gObjectEventSpriteOamTable_96x40_1[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_96x40_2[] = {
+static const struct Subsprite sOamTable_96x40_2[] = {
{
.x = -48,
.y = -20,
@@ -862,7 +862,7 @@ const struct Subsprite gObjectEventSpriteOamTable_96x40_2[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_96x40_3[] = {
+static const struct Subsprite sOamTable_96x40_3[] = {
{
.x = -48,
.y = -20,
@@ -986,16 +986,16 @@ const struct Subsprite gObjectEventSpriteOamTable_96x40_3[] = {
};
// Used by SS Tidal
-const struct SubspriteTable gObjectEventSpriteOamTables_96x40[] = {
- {15, gObjectEventSpriteOamTable_96x40_0},
- {15, gObjectEventSpriteOamTable_96x40_0},
- {15, gObjectEventSpriteOamTable_96x40_1},
- {15, gObjectEventSpriteOamTable_96x40_2},
- {15, gObjectEventSpriteOamTable_96x40_3},
- {15, gObjectEventSpriteOamTable_96x40_3}
+static const struct SubspriteTable sOamTables_96x40[] = {
+ {15, sOamTable_96x40_0},
+ {15, sOamTable_96x40_0},
+ {15, sOamTable_96x40_1},
+ {15, sOamTable_96x40_2},
+ {15, sOamTable_96x40_3},
+ {15, sOamTable_96x40_3}
};
-const struct Subsprite gObjectEventSpriteOamTable_88x32_0[] = {
+static const struct Subsprite sOamTable_88x32_0[] = {
{
.x = -48,
.y = -20,
@@ -1126,7 +1126,7 @@ const struct Subsprite gObjectEventSpriteOamTable_88x32_0[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_88x32_1[] = {
+static const struct Subsprite sOamTable_88x32_1[] = {
{
.x = -48,
.y = -20,
@@ -1257,7 +1257,7 @@ const struct Subsprite gObjectEventSpriteOamTable_88x32_1[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_88x32_2[] = {
+static const struct Subsprite sOamTable_88x32_2[] = {
{
.x = -48,
.y = -20,
@@ -1388,7 +1388,7 @@ const struct Subsprite gObjectEventSpriteOamTable_88x32_2[] = {
}
};
-const struct Subsprite gObjectEventSpriteOamTable_88x32_3[] = {
+static const struct Subsprite sOamTable_88x32_3[] = {
{
.x = -48,
.y = -20,
@@ -1520,11 +1520,11 @@ const struct Subsprite gObjectEventSpriteOamTable_88x32_3[] = {
};
// Used by Submarine Shadow
-const struct SubspriteTable gObjectEventSpriteOamTables_88x32[] = {
- {16, gObjectEventSpriteOamTable_88x32_0},
- {16, gObjectEventSpriteOamTable_88x32_0},
- {16, gObjectEventSpriteOamTable_88x32_1},
- {16, gObjectEventSpriteOamTable_88x32_2},
- {16, gObjectEventSpriteOamTable_88x32_3},
- {16, gObjectEventSpriteOamTable_88x32_3}
+static const struct SubspriteTable sOamTables_88x32[] = {
+ {16, sOamTable_88x32_0},
+ {16, sOamTable_88x32_0},
+ {16, sOamTable_88x32_1},
+ {16, sOamTable_88x32_2},
+ {16, sOamTable_88x32_3},
+ {16, sOamTable_88x32_3}
};
diff --git a/src/data/party_menu.h b/src/data/party_menu.h
index a4a030e3f..570ef738e 100644
--- a/src/data/party_menu.h
+++ b/src/data/party_menu.h
@@ -118,12 +118,12 @@ static const u32 sCancelButton_Tilemap[] = INCBIN_U32("graphics/interface/party_
// Text colors for BG, FG, and Shadow in that order
static const u8 sFontColorTable[][3] =
{
- {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_GREY, TEXT_COLOR_DARK_GREY}, // Default
+ {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_GRAY, TEXT_COLOR_DARK_GRAY}, // Default
{TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_GREEN}, // Unused
{TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_2, TEXT_DYNAMIC_COLOR_3}, // Gender symbol
- {TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY}, // Selection actions
+ {TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY}, // Selection actions
{TEXT_COLOR_WHITE, TEXT_COLOR_BLUE, TEXT_COLOR_LIGHT_BLUE}, // Field moves
- {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}, // Unused
+ {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY}, // Unused
};
static const struct WindowTemplate sSinglePartyMenuWindowTemplate[] =
diff --git a/src/data/pokemon_graphics/unknown_table.h b/src/data/pokemon_graphics/unknown_table.h
new file mode 100644
index 000000000..737b79c1b
--- /dev/null
+++ b/src/data/pokemon_graphics/unknown_table.h
@@ -0,0 +1,444 @@
+// Unknown and unused
+static const u32 sUnused[] =
+{
+ [SPECIES_NONE] = 0x888,
+ [SPECIES_BULBASAUR] = 0x888,
+ [SPECIES_IVYSAUR] = 0x888,
+ [SPECIES_VENUSAUR] = 0x888,
+ [SPECIES_CHARMANDER] = 0x88,
+ [SPECIES_CHARMELEON] = 0x888,
+ [SPECIES_CHARIZARD] = 0x888,
+ [SPECIES_SQUIRTLE] = 0x886,
+ [SPECIES_WARTORTLE] = 0x888,
+ [SPECIES_BLASTOISE] = 0x886,
+ [SPECIES_CATERPIE] = 0x888,
+ [SPECIES_METAPOD] = 0x888,
+ [SPECIES_BUTTERFREE] = 0x888,
+ [SPECIES_WEEDLE] = 0x888,
+ [SPECIES_KAKUNA] = 0x888,
+ [SPECIES_BEEDRILL] = 0x888,
+ [SPECIES_PIDGEY] = 0x886,
+ [SPECIES_PIDGEOTTO] = 0x888,
+ [SPECIES_PIDGEOT] = 0x888,
+ [SPECIES_RATTATA] = 0x888,
+ [SPECIES_RATICATE] = 0x888,
+ [SPECIES_SPEAROW] = 0x888,
+ [SPECIES_FEAROW] = 0x886,
+ [SPECIES_EKANS] = 0x886,
+ [SPECIES_ARBOK] = 0x888,
+ [SPECIES_PIKACHU] = 0x88,
+ [SPECIES_RAICHU] = 0x88,
+ [SPECIES_SANDSHREW] = 0x88,
+ [SPECIES_SANDSLASH] = 0x88,
+ [SPECIES_NIDORAN_F] = 0x888,
+ [SPECIES_NIDORINA] = 0x886,
+ [SPECIES_NIDOQUEEN] = 0x888,
+ [SPECIES_NIDORAN_M] = 0x888,
+ [SPECIES_NIDORINO] = 0x888,
+ [SPECIES_NIDOKING] = 0x886,
+ [SPECIES_CLEFAIRY] = 0x886,
+ [SPECIES_CLEFABLE] = 0x888,
+ [SPECIES_VULPIX] = 0x88,
+ [SPECIES_NINETALES] = 0x88,
+ [SPECIES_JIGGLYPUFF] = 0x88,
+ [SPECIES_WIGGLYTUFF] = 0x88,
+ [SPECIES_ZUBAT] = 0x886,
+ [SPECIES_GOLBAT] = 0x886,
+ [SPECIES_ODDISH] = 0x88,
+ [SPECIES_GLOOM] = 0x886,
+ [SPECIES_VILEPLUME] = 0x886,
+ [SPECIES_PARAS] = 0x888,
+ [SPECIES_PARASECT] = 0x888,
+ [SPECIES_VENONAT] = 0x888,
+ [SPECIES_VENOMOTH] = 0x888,
+ [SPECIES_DIGLETT] = 0x888,
+ [SPECIES_DUGTRIO] = 0x888,
+ [SPECIES_MEOWTH] = 0x886,
+ [SPECIES_PERSIAN] = 0x888,
+ [SPECIES_PSYDUCK] = 0x88,
+ [SPECIES_GOLDUCK] = 0x88,
+ [SPECIES_MANKEY] = 0x888,
+ [SPECIES_PRIMEAPE] = 0x888,
+ [SPECIES_GROWLITHE] = 0x888,
+ [SPECIES_ARCANINE] = 0x886,
+ [SPECIES_POLIWAG] = 0x888,
+ [SPECIES_POLIWHIRL] = 0x888,
+ [SPECIES_POLIWRATH] = 0x888,
+ [SPECIES_ABRA] = 0x886,
+ [SPECIES_KADABRA] = 0x886,
+ [SPECIES_ALAKAZAM] = 0x886,
+ [SPECIES_MACHOP] = 0x886,
+ [SPECIES_MACHOKE] = 0x886,
+ [SPECIES_MACHAMP] = 0x886,
+ [SPECIES_BELLSPROUT] = 0x886,
+ [SPECIES_WEEPINBELL] = 0x888,
+ [SPECIES_VICTREEBEL] = 0x888,
+ [SPECIES_TENTACOOL] = 0x886,
+ [SPECIES_TENTACRUEL] = 0x886,
+ [SPECIES_GEODUDE] = 0x886,
+ [SPECIES_GRAVELER] = 0x886,
+ [SPECIES_GOLEM] = 0x886,
+ [SPECIES_PONYTA] = 0x888,
+ [SPECIES_RAPIDASH] = 0x888,
+ [SPECIES_SLOWPOKE] = 0x888,
+ [SPECIES_SLOWBRO] = 0x888,
+ [SPECIES_MAGNEMITE] = 0x886,
+ [SPECIES_MAGNETON] = 0x886,
+ [SPECIES_FARFETCHD] = 0x888,
+ [SPECIES_DODUO] = 0x886,
+ [SPECIES_DODRIO] = 0x886,
+ [SPECIES_SEEL] = 0x888,
+ [SPECIES_DEWGONG] = 0x888,
+ [SPECIES_GRIMER] = 0x88,
+ [SPECIES_MUK] = 0x88,
+ [SPECIES_SHELLDER] = 0x888,
+ [SPECIES_CLOYSTER] = 0x888,
+ [SPECIES_GASTLY] = 0x888,
+ [SPECIES_HAUNTER] = 0x888,
+ [SPECIES_GENGAR] = 0x888,
+ [SPECIES_ONIX] = 0x888,
+ [SPECIES_DROWZEE] = 0x888,
+ [SPECIES_HYPNO] = 0x888,
+ [SPECIES_KRABBY] = 0x888,
+ [SPECIES_KINGLER] = 0x888,
+ [SPECIES_VOLTORB] = 0x886,
+ [SPECIES_ELECTRODE] = 0x886,
+ [SPECIES_EXEGGCUTE] = 0x888,
+ [SPECIES_EXEGGUTOR] = 0x888,
+ [SPECIES_CUBONE] = 0x888,
+ [SPECIES_MAROWAK] = 0x888,
+ [SPECIES_HITMONLEE] = 0x88,
+ [SPECIES_HITMONCHAN] = 0x886,
+ [SPECIES_LICKITUNG] = 0x888,
+ [SPECIES_KOFFING] = 0x88,
+ [SPECIES_WEEZING] = 0x88,
+ [SPECIES_RHYHORN] = 0x88,
+ [SPECIES_RHYDON] = 0x88,
+ [SPECIES_CHANSEY] = 0x888,
+ [SPECIES_TANGELA] = 0x886,
+ [SPECIES_KANGASKHAN] = 0x888,
+ [SPECIES_HORSEA] = 0x88,
+ [SPECIES_SEADRA] = 0x88,
+ [SPECIES_GOLDEEN] = 0x886,
+ [SPECIES_SEAKING] = 0x886,
+ [SPECIES_STARYU] = 0x88,
+ [SPECIES_STARMIE] = 0x88,
+ [SPECIES_MR_MIME] = 0x888,
+ [SPECIES_SCYTHER] = 0x886,
+ [SPECIES_JYNX] = 0x886,
+ [SPECIES_ELECTABUZZ] = 0x888,
+ [SPECIES_MAGMAR] = 0x888,
+ [SPECIES_PINSIR] = 0x88,
+ [SPECIES_TAUROS] = 0x888,
+ [SPECIES_MAGIKARP] = 0x886,
+ [SPECIES_GYARADOS] = 0x886,
+ [SPECIES_LAPRAS] = 0x888,
+ [SPECIES_DITTO] = 0x886,
+ [SPECIES_EEVEE] = 0x888,
+ [SPECIES_VAPOREON] = 0x888,
+ [SPECIES_JOLTEON] = 0x886,
+ [SPECIES_FLAREON] = 0x888,
+ [SPECIES_PORYGON] = 0x888,
+ [SPECIES_OMANYTE] = 0x888,
+ [SPECIES_OMASTAR] = 0x888,
+ [SPECIES_KABUTO] = 0x888,
+ [SPECIES_KABUTOPS] = 0x888,
+ [SPECIES_AERODACTYL] = 0x888,
+ [SPECIES_SNORLAX] = 0x888,
+ [SPECIES_ARTICUNO] = 0x888,
+ [SPECIES_ZAPDOS] = 0x888,
+ [SPECIES_MOLTRES] = 0x888,
+ [SPECIES_DRATINI] = 0x888,
+ [SPECIES_DRAGONAIR] = 0x888,
+ [SPECIES_DRAGONITE] = 0x888,
+ [SPECIES_MEWTWO] = 0x88,
+ [SPECIES_MEW] = 0x888,
+ [SPECIES_CHIKORITA] = 0x888,
+ [SPECIES_BAYLEEF] = 0x888,
+ [SPECIES_MEGANIUM] = 0x888,
+ [SPECIES_CYNDAQUIL] = 0x888,
+ [SPECIES_QUILAVA] = 0x88,
+ [SPECIES_TYPHLOSION] = 0x888,
+ [SPECIES_TOTODILE] = 0x888,
+ [SPECIES_CROCONAW] = 0x886,
+ [SPECIES_FERALIGATR] = 0x886,
+ [SPECIES_SENTRET] = 0x888,
+ [SPECIES_FURRET] = 0x888,
+ [SPECIES_HOOTHOOT] = 0x888,
+ [SPECIES_NOCTOWL] = 0x888,
+ [SPECIES_LEDYBA] = 0x888,
+ [SPECIES_LEDIAN] = 0x888,
+ [SPECIES_SPINARAK] = 0x886,
+ [SPECIES_ARIADOS] = 0x888,
+ [SPECIES_CROBAT] = 0x886,
+ [SPECIES_CHINCHOU] = 0x88,
+ [SPECIES_LANTURN] = 0x88,
+ [SPECIES_PICHU] = 0x88,
+ [SPECIES_CLEFFA] = 0x888,
+ [SPECIES_IGGLYBUFF] = 0x88,
+ [SPECIES_TOGEPI] = 0x888,
+ [SPECIES_TOGETIC] = 0x888,
+ [SPECIES_NATU] = 0x88,
+ [SPECIES_XATU] = 0x88,
+ [SPECIES_MAREEP] = 0x888,
+ [SPECIES_FLAAFFY] = 0x886,
+ [SPECIES_AMPHAROS] = 0x888,
+ [SPECIES_BELLOSSOM] = 0x886,
+ [SPECIES_MARILL] = 0x886,
+ [SPECIES_AZUMARILL] = 0x886,
+ [SPECIES_SUDOWOODO] = 0x888,
+ [SPECIES_POLITOED] = 0x888,
+ [SPECIES_HOPPIP] = 0x888,
+ [SPECIES_SKIPLOOM] = 0x88,
+ [SPECIES_JUMPLUFF] = 0x888,
+ [SPECIES_AIPOM] = 0x888,
+ [SPECIES_SUNKERN] = 0x888,
+ [SPECIES_SUNFLORA] = 0x88,
+ [SPECIES_YANMA] = 0x888,
+ [SPECIES_WOOPER] = 0x888,
+ [SPECIES_QUAGSIRE] = 0x888,
+ [SPECIES_ESPEON] = 0x888,
+ [SPECIES_UMBREON] = 0x888,
+ [SPECIES_MURKROW] = 0x888,
+ [SPECIES_SLOWKING] = 0x888,
+ [SPECIES_MISDREAVUS] = 0x888,
+ [SPECIES_UNOWN] = 0x888,
+ [SPECIES_WOBBUFFET] = 0x88,
+ [SPECIES_GIRAFARIG] = 0x88,
+ [SPECIES_PINECO] = 0x886,
+ [SPECIES_FORRETRESS] = 0x888,
+ [SPECIES_DUNSPARCE] = 0x888,
+ [SPECIES_GLIGAR] = 0x888,
+ [SPECIES_STEELIX] = 0x888,
+ [SPECIES_SNUBBULL] = 0x888,
+ [SPECIES_GRANBULL] = 0x888,
+ [SPECIES_QWILFISH] = 0x888,
+ [SPECIES_SCIZOR] = 0x888,
+ [SPECIES_SHUCKLE] = 0x888,
+ [SPECIES_HERACROSS] = 0x88,
+ [SPECIES_SNEASEL] = 0x888,
+ [SPECIES_TEDDIURSA] = 0x886,
+ [SPECIES_URSARING] = 0x888,
+ [SPECIES_SLUGMA] = 0x88,
+ [SPECIES_MAGCARGO] = 0x88,
+ [SPECIES_SWINUB] = 0x888,
+ [SPECIES_PILOSWINE] = 0x888,
+ [SPECIES_CORSOLA] = 0x88,
+ [SPECIES_REMORAID] = 0x888,
+ [SPECIES_OCTILLERY] = 0x888,
+ [SPECIES_DELIBIRD] = 0x888,
+ [SPECIES_MANTINE] = 0x888,
+ [SPECIES_SKARMORY] = 0x88,
+ [SPECIES_HOUNDOUR] = 0x888,
+ [SPECIES_HOUNDOOM] = 0x888,
+ [SPECIES_KINGDRA] = 0x88,
+ [SPECIES_PHANPY] = 0x88,
+ [SPECIES_DONPHAN] = 0x88,
+ [SPECIES_PORYGON2] = 0x888,
+ [SPECIES_STANTLER] = 0x88,
+ [SPECIES_SMEARGLE] = 0x888,
+ [SPECIES_TYROGUE] = 0x888,
+ [SPECIES_HITMONTOP] = 0x888,
+ [SPECIES_SMOOCHUM] = 0x888,
+ [SPECIES_ELEKID] = 0x888,
+ [SPECIES_MAGBY] = 0x888,
+ [SPECIES_MILTANK] = 0x888,
+ [SPECIES_BLISSEY] = 0x888,
+ [SPECIES_RAIKOU] = 0x888,
+ [SPECIES_ENTEI] = 0x888,
+ [SPECIES_SUICUNE] = 0x888,
+ [SPECIES_LARVITAR] = 0x888,
+ [SPECIES_PUPITAR] = 0x888,
+ [SPECIES_TYRANITAR] = 0x888,
+ [SPECIES_LUGIA] = 0x886,
+ [SPECIES_HO_OH] = 0x888,
+ [SPECIES_CELEBI] = 0x888,
+ [SPECIES_OLD_UNOWN_B] = 0x888,
+ [SPECIES_OLD_UNOWN_C] = 0x888,
+ [SPECIES_OLD_UNOWN_D] = 0x888,
+ [SPECIES_OLD_UNOWN_E] = 0x888,
+ [SPECIES_OLD_UNOWN_F] = 0x888,
+ [SPECIES_OLD_UNOWN_G] = 0x888,
+ [SPECIES_OLD_UNOWN_H] = 0x888,
+ [SPECIES_OLD_UNOWN_I] = 0x888,
+ [SPECIES_OLD_UNOWN_J] = 0x888,
+ [SPECIES_OLD_UNOWN_K] = 0x888,
+ [SPECIES_OLD_UNOWN_L] = 0x888,
+ [SPECIES_OLD_UNOWN_M] = 0x888,
+ [SPECIES_OLD_UNOWN_N] = 0x888,
+ [SPECIES_OLD_UNOWN_O] = 0x888,
+ [SPECIES_OLD_UNOWN_P] = 0x888,
+ [SPECIES_OLD_UNOWN_Q] = 0x888,
+ [SPECIES_OLD_UNOWN_R] = 0x888,
+ [SPECIES_OLD_UNOWN_S] = 0x888,
+ [SPECIES_OLD_UNOWN_T] = 0x888,
+ [SPECIES_OLD_UNOWN_U] = 0x888,
+ [SPECIES_OLD_UNOWN_V] = 0x888,
+ [SPECIES_OLD_UNOWN_W] = 0x888,
+ [SPECIES_OLD_UNOWN_X] = 0x888,
+ [SPECIES_OLD_UNOWN_Y] = 0x888,
+ [SPECIES_OLD_UNOWN_Z] = 0x888,
+ [SPECIES_TREECKO] = 0x886,
+ [SPECIES_GROVYLE] = 0x886,
+ [SPECIES_SCEPTILE] = 0x886,
+ [SPECIES_TORCHIC] = 0x88,
+ [SPECIES_COMBUSKEN] = 0x88,
+ [SPECIES_BLAZIKEN] = 0x88,
+ [SPECIES_MUDKIP] = 0x886,
+ [SPECIES_MARSHTOMP] = 0x88,
+ [SPECIES_SWAMPERT] = 0x886,
+ [SPECIES_POOCHYENA] = 0x886,
+ [SPECIES_MIGHTYENA] = 0x886,
+ [SPECIES_ZIGZAGOON] = 0x88,
+ [SPECIES_LINOONE] = 0x886,
+ [SPECIES_WURMPLE] = 0x88,
+ [SPECIES_SILCOON] = 0x88,
+ [SPECIES_BEAUTIFLY] = 0x88,
+ [SPECIES_CASCOON] = 0x88,
+ [SPECIES_DUSTOX] = 0x88,
+ [SPECIES_LOTAD] = 0x886,
+ [SPECIES_LOMBRE] = 0x886,
+ [SPECIES_LUDICOLO] = 0x886,
+ [SPECIES_SEEDOT] = 0x888,
+ [SPECIES_NUZLEAF] = 0x888,
+ [SPECIES_SHIFTRY] = 0x886,
+ [SPECIES_NINCADA] = 0x886,
+ [SPECIES_NINJASK] = 0x886,
+ [SPECIES_SHEDINJA] = 0x886,
+ [SPECIES_TAILLOW] = 0x88,
+ [SPECIES_SWELLOW] = 0x88,
+ [SPECIES_SHROOMISH] = 0x886,
+ [SPECIES_BRELOOM] = 0x886,
+ [SPECIES_SPINDA] = 0x1882,
+ [SPECIES_WINGULL] = 0x88,
+ [SPECIES_PELIPPER] = 0x88,
+ [SPECIES_SURSKIT] = 0x88,
+ [SPECIES_MASQUERAIN] = 0x88,
+ [SPECIES_WAILMER] = 0x886,
+ [SPECIES_WAILORD] = 0x886,
+ [SPECIES_SKITTY] = 0x886,
+ [SPECIES_DELCATTY] = 0x88,
+ [SPECIES_KECLEON] = 0x88,
+ [SPECIES_BALTOY] = 0x88,
+ [SPECIES_CLAYDOL] = 0x88,
+ [SPECIES_NOSEPASS] = 0x886,
+ [SPECIES_TORKOAL] = 0x88,
+ [SPECIES_SABLEYE] = 0x886,
+ [SPECIES_BARBOACH] = 0x88,
+ [SPECIES_WHISCASH] = 0x88,
+ [SPECIES_LUVDISC] = 0x88,
+ [SPECIES_CORPHISH] = 0x88,
+ [SPECIES_CRAWDAUNT] = 0x88,
+ [SPECIES_FEEBAS] = 0x88,
+ [SPECIES_MILOTIC] = 0x88,
+ [SPECIES_CARVANHA] = 0x886,
+ [SPECIES_SHARPEDO] = 0x886,
+ [SPECIES_TRAPINCH] = 0x88,
+ [SPECIES_VIBRAVA] = 0x88,
+ [SPECIES_FLYGON] = 0x88,
+ [SPECIES_MAKUHITA] = 0x886,
+ [SPECIES_HARIYAMA] = 0x886,
+ [SPECIES_ELECTRIKE] = 0x88,
+ [SPECIES_MANECTRIC] = 0x88,
+ [SPECIES_NUMEL] = 0x88,
+ [SPECIES_CAMERUPT] = 0x88,
+ [SPECIES_SPHEAL] = 0x88,
+ [SPECIES_SEALEO] = 0x88,
+ [SPECIES_WALREIN] = 0x88,
+ [SPECIES_CACNEA] = 0x88,
+ [SPECIES_CACTURNE] = 0x88,
+ [SPECIES_SNORUNT] = 0x88,
+ [SPECIES_GLALIE] = 0x88,
+ [SPECIES_LUNATONE] = 0x88,
+ [SPECIES_SOLROCK] = 0x88,
+ [SPECIES_AZURILL] = 0x886,
+ [SPECIES_SPOINK] = 0x88,
+ [SPECIES_GRUMPIG] = 0x88,
+ [SPECIES_PLUSLE] = 0x886,
+ [SPECIES_MINUN] = 0x886,
+ [SPECIES_MAWILE] = 0x886,
+ [SPECIES_MEDITITE] = 0x886,
+ [SPECIES_MEDICHAM] = 0x886,
+ [SPECIES_SWABLU] = 0x88,
+ [SPECIES_ALTARIA] = 0x88,
+ [SPECIES_WYNAUT] = 0x88,
+ [SPECIES_DUSKULL] = 0x88,
+ [SPECIES_DUSCLOPS] = 0x88,
+ [SPECIES_ROSELIA] = 0x886,
+ [SPECIES_SLAKOTH] = 0x886,
+ [SPECIES_VIGOROTH] = 0x886,
+ [SPECIES_SLAKING] = 0x886,
+ [SPECIES_GULPIN] = 0x88,
+ [SPECIES_SWALOT] = 0x886,
+ [SPECIES_TROPIUS] = 0x88,
+ [SPECIES_WHISMUR] = 0x886,
+ [SPECIES_LOUDRED] = 0x886,
+ [SPECIES_EXPLOUD] = 0x886,
+ [SPECIES_CLAMPERL] = 0x88,
+ [SPECIES_HUNTAIL] = 0x88,
+ [SPECIES_GOREBYSS] = 0x88,
+ [SPECIES_ABSOL] = 0x88,
+ [SPECIES_SHUPPET] = 0x88,
+ [SPECIES_BANETTE] = 0x88,
+ [SPECIES_SEVIPER] = 0x88,
+ [SPECIES_ZANGOOSE] = 0x88,
+ [SPECIES_RELICANTH] = 0x88,
+ [SPECIES_ARON] = 0x886,
+ [SPECIES_LAIRON] = 0x886,
+ [SPECIES_AGGRON] = 0x886,
+ [SPECIES_CASTFORM] = 0x888,
+ [SPECIES_VOLBEAT] = 0x886,
+ [SPECIES_ILLUMISE] = 0x886,
+ [SPECIES_LILEEP] = 0x88,
+ [SPECIES_CRADILY] = 0x88,
+ [SPECIES_ANORITH] = 0x88,
+ [SPECIES_ARMALDO] = 0x88,
+ [SPECIES_RALTS] = 0x886,
+ [SPECIES_KIRLIA] = 0x886,
+ [SPECIES_GARDEVOIR] = 0x88,
+ [SPECIES_BAGON] = 0x88,
+ [SPECIES_SHELGON] = 0x88,
+ [SPECIES_SALAMENCE] = 0x88,
+ [SPECIES_BELDUM] = 0x88,
+ [SPECIES_METANG] = 0x88,
+ [SPECIES_METAGROSS] = 0x88,
+ [SPECIES_REGIROCK] = 0x88,
+ [SPECIES_REGICE] = 0x88,
+ [SPECIES_REGISTEEL] = 0x88,
+ [SPECIES_KYOGRE] = 0x88,
+ [SPECIES_GROUDON] = 0x88,
+ [SPECIES_RAYQUAZA] = 0x88,
+ [SPECIES_LATIAS] = 0x88,
+ [SPECIES_LATIOS] = 0x88,
+ [SPECIES_JIRACHI] = 0x88,
+ [SPECIES_DEOXYS] = 0x88,
+ [SPECIES_CHIMECHO] = 0x88,
+ [SPECIES_EGG] = 0x88,
+ [SPECIES_UNOWN_B] = 0x888,
+ [SPECIES_UNOWN_C] = 0x888,
+ [SPECIES_UNOWN_D] = 0x888,
+ [SPECIES_UNOWN_E] = 0x888,
+ [SPECIES_UNOWN_F] = 0x888,
+ [SPECIES_UNOWN_G] = 0x888,
+ [SPECIES_UNOWN_H] = 0x888,
+ [SPECIES_UNOWN_I] = 0x888,
+ [SPECIES_UNOWN_J] = 0x888,
+ [SPECIES_UNOWN_K] = 0x888,
+ [SPECIES_UNOWN_L] = 0x888,
+ [SPECIES_UNOWN_M] = 0x888,
+ [SPECIES_UNOWN_N] = 0x888,
+ [SPECIES_UNOWN_O] = 0x888,
+ [SPECIES_UNOWN_P] = 0x888,
+ [SPECIES_UNOWN_Q] = 0x888,
+ [SPECIES_UNOWN_R] = 0x888,
+ [SPECIES_UNOWN_S] = 0x888,
+ [SPECIES_UNOWN_T] = 0x888,
+ [SPECIES_UNOWN_U] = 0x888,
+ [SPECIES_UNOWN_V] = 0x888,
+ [SPECIES_UNOWN_W] = 0x888,
+ [SPECIES_UNOWN_X] = 0x888,
+ [SPECIES_UNOWN_Y] = 0x888,
+ [SPECIES_UNOWN_Z] = 0x888,
+ [SPECIES_UNOWN_EMARK] = 0x888,
+ [SPECIES_UNOWN_QMARK] = 0x888,
+};
diff --git a/src/data/trade.h b/src/data/trade.h
index 7001b6ce5..752971c11 100644
--- a/src/data/trade.h
+++ b/src/data/trade.h
@@ -1,3 +1,17 @@
+#define GFXTAG_MENU_TEXT 200 // Used as a base tag in CB2_CreateTradeMenu and CB2_ReturnToTradeMenu
+#define GFXTAG_CURSOR 300
+#define GFXTAG_LINK_MON_GLOW 5550
+#define GFXTAG_LINK_MON_SHADOW 5552
+#define GFXTAG_CABLE_END 5554
+#define GFXTAG_GBA_SCREEN 5556
+#define GFXTAG_POKEBALL 5557
+
+#define PALTAG_CURSOR 2345
+#define PALTAG_MENU_TEXT 4925
+#define PALTAG_LINK_MON 5551
+#define PALTAG_GBA 5555
+#define PALTAG_POKEBALL 5558
+
// Exists unused in RS as well
static const u32 sUnusedStructSizes[] =
{
@@ -15,7 +29,7 @@ static const u16 sTradePartyBoxTilemap[] = INCBIN_U16("graphics/trade/party_box_
static const u8 sTradeStripesBG2Tilemap[] = INCBIN_U8("graphics/trade/stripes_bg2_map.bin");
static const u8 sTradeStripesBG3Tilemap[] = INCBIN_U8("graphics/trade/stripes_bg3_map.bin");
static const u8 sText_EmptyString[] = _("");
-static const u8 sText_UnusedTextFormat[] = _("{COLOR WHITE}{HIGHLIGHT TRANSPARENT}{SHADOW DARK_GREY}");
+static const u8 sText_UnusedTextFormat[] = _("{COLOR WHITE}{HIGHLIGHT TRANSPARENT}{SHADOW DARK_GRAY}");
const u8 gText_MaleSymbol4[] = _("♂");
const u8 gText_FemaleSymbol4[] = _("♀");
const u8 gText_GenderlessSymbol[] = _("");
@@ -25,7 +39,7 @@ static const u8 sText_Slash[] = _("/");
static const u8 sText_Lv[] = _("Lv. ");
static const u8 sText_ThreeDashes[] = _("---");
static const u8 sText_FourQuestionMarks[] = _("????");
-static const u8 sText_832DAE4[] = _("");
+static const u8 sText_UnusedEmpty[] = _("");
static const u8 sText_IsThisTradeOkay[] = _("Is this trade okay?");
static const u8 sText_Cancel[] = _("CANCEL");
static const u8 sText_ChooseAPkmn[] = _("Choose a POKéMON.");
@@ -35,10 +49,10 @@ static const u8 sText_CancelTrade[] = _("Cancel trade?");
static const u8 sJPText_PressBButtonToQuit[] = _("Bボタン で もどります");
static const u8 sText_Summary2[] = _("SUMMARY");
static const u8 sText_Trade2[] = _("TRADE");
-static const u8 sText_CommunicationStandby[] = _("{COLOR DARK_GREY}{HIGHLIGHT WHITE}{SHADOW LIGHT_GREY}Communication standby…\nPlease wait.");
-static const u8 sText_TheTradeHasBeenCanceled[] = _("{COLOR DARK_GREY}{HIGHLIGHT WHITE}{SHADOW LIGHT_GREY}The trade has\nbeen canceled.");
+static const u8 sText_CommunicationStandby[] = _("{COLOR DARK_GRAY}{HIGHLIGHT WHITE}{SHADOW LIGHT_GRAY}Communication standby…\nPlease wait.");
+static const u8 sText_TheTradeHasBeenCanceled[] = _("{COLOR DARK_GRAY}{HIGHLIGHT WHITE}{SHADOW LIGHT_GRAY}The trade has\nbeen canceled.");
static const u8 sText_OnlyPkmnForBattle[] = _("That's your only\nPOKéMON for battle.");
-static const u8 sText_WaitingForYourFriend[] = _("{COLOR DARK_GREY}{HIGHLIGHT WHITE}{SHADOW LIGHT_GREY}Waiting for your friend\nto finish…");
+static const u8 sText_WaitingForYourFriend[] = _("{COLOR DARK_GRAY}{HIGHLIGHT WHITE}{SHADOW LIGHT_GRAY}Waiting for your friend\nto finish…");
static const u8 sText_YourFriendWantsToTrade[] = _("Your friend wants\nto trade POKéMON.");
static const struct OamData sTradeOamData_32x16 =
@@ -48,107 +62,113 @@ static const struct OamData sTradeOamData_32x16 =
.priority = 1
};
-static const struct OamData sTradeOamData_64x32 =
+static const struct OamData sOamData_Cursor =
{
.shape = SPRITE_SHAPE(64x32),
.size = SPRITE_SIZE(64x32),
.priority = 1
};
-static const union AnimCmd gSpriteAnim_832DC24[] =
+static const union AnimCmd sAnim_Cursor_Normal[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_832DC2C[] =
+static const union AnimCmd sAnim_Cursor_OnCancel[] =
{
ANIMCMD_FRAME(32, 5),
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_832DC34[] =
+enum {
+ CURSOR_ANIM_NORMAL,
+ CURSOR_ANIM_ON_CANCEL,
+};
+
+static const union AnimCmd *const sAnims_Cursor[] =
{
- gSpriteAnim_832DC24,
- gSpriteAnim_832DC2C
+ [CURSOR_ANIM_NORMAL] = sAnim_Cursor_Normal,
+ [CURSOR_ANIM_ON_CANCEL] = sAnim_Cursor_OnCancel
};
-static const struct SpriteSheet sTradeButtonsSpriteSheet =
+static const struct SpriteSheet sCursor_SpriteSheet =
{
- .data = gTradeButtons_Gfx,
+ .data = gTradeCursor_Gfx,
.size = 0x800,
- .tag = 300
+ .tag = GFXTAG_CURSOR
};
-static const struct SpritePalette gUnknown_0832DC44 =
+static const struct SpritePalette sCursor_SpritePalette =
{
- .data = gUnknown_08DDB444,
- .tag = 2345
+ .data = gTradeCursor_Pal,
+ .tag = PALTAG_CURSOR
};
-static const union AnimCmd gSpriteAnim_832DC4C[] =
+static const union AnimCmd sAnim_MenuText_0[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_832DC54[] =
+static const union AnimCmd sAnim_MenuText_1[] =
{
ANIMCMD_FRAME(8, 5),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_832DC5C[] =
+static const union AnimCmd sAnim_MenuText_2[] =
{
ANIMCMD_FRAME(16, 5),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_832DC64[] =
+static const union AnimCmd sAnim_MenuText_3[] =
{
ANIMCMD_FRAME(24, 5),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_832DC6C[] =
+static const union AnimCmd sAnim_MenuText_4[] =
{
ANIMCMD_FRAME(32, 5),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_832DC74[] =
+static const union AnimCmd sAnim_MenuText_5[] =
{
ANIMCMD_FRAME(40, 5),
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_832DC7C[] =
+// These anims are not used
+static const union AnimCmd *const sAnims_MenuText[] =
{
- gSpriteAnim_832DC4C,
- gSpriteAnim_832DC54,
- gSpriteAnim_832DC5C,
- gSpriteAnim_832DC64,
- gSpriteAnim_832DC6C,
- gSpriteAnim_832DC74
+ sAnim_MenuText_0,
+ sAnim_MenuText_1,
+ sAnim_MenuText_2,
+ sAnim_MenuText_3,
+ sAnim_MenuText_4,
+ sAnim_MenuText_5
};
-static const struct SpriteTemplate gSpriteTemplate_832DC94 =
+static const struct SpriteTemplate sSpriteTemplate_Cursor =
{
- .tileTag = 300,
- .paletteTag = 2345,
- .oam = &sTradeOamData_64x32,
- .anims = gSpriteAnimTable_832DC34,
+ .tileTag = GFXTAG_CURSOR,
+ .paletteTag = PALTAG_CURSOR,
+ .oam = &sOamData_Cursor,
+ .anims = sAnims_Cursor,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct SpriteTemplate gSpriteTemplate_832DCAC =
+static const struct SpriteTemplate sSpriteTemplate_MenuText =
{
- .tileTag = 200,
- .paletteTag = 4925,
+ .tileTag = GFXTAG_MENU_TEXT,
+ .paletteTag = PALTAG_MENU_TEXT,
.oam = &sTradeOamData_32x16,
- .anims = gSpriteAnimTable_832DC7C,
+ .anims = sAnims_MenuText,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
@@ -158,7 +178,7 @@ static const u16 TradeScreenTextPalette[] = INCBIN_U16("graphics/trade/text.gbap
static const struct SpritePalette gSpritePalette_TradeScreenText =
{
.data = TradeScreenTextPalette,
- .tag = 4925
+ .tag = PALTAG_MENU_TEXT
};
// This is used to determine the next mon to select when the D-Pad is
@@ -337,26 +357,26 @@ static const u8 sTradeMonBoxCoords[][2][2] =
},
};
-static const u8 sUnref_0832DE6E[] =
-{
- 0x00, 0x0e,
- 0x0f, 0x1d,
- 0x03, 0x05,
- 0x03, 0x07,
- 0x12, 0x05,
- 0x12, 0x07,
- 0x08, 0x07,
- 0x16, 0x0c,
- 0x08, 0x07,
- 0x16, 0x0c,
- 0x06, 0x07,
- 0x18, 0x0c,
- 0x06, 0x07,
- 0x18, 0x0c,
- 0x08, 0x07,
- 0x16, 0x0c,
- 0x07, 0x07,
- 0x17, 0x0c
+static const u8 sUnusedCoords[][2] =
+{
+ { 0, 14},
+ {15, 29},
+ { 3, 5},
+ { 3, 7},
+ {18, 5},
+ {18, 7},
+ { 8, 7},
+ {22, 12},
+ { 8, 7},
+ {22, 12},
+ { 6, 7},
+ {24, 12},
+ { 6, 7},
+ {24, 12},
+ { 8, 7},
+ {22, 12},
+ { 7, 7},
+ {23, 12}
};
static const u8 *const sTradeActionTexts[] =
@@ -392,7 +412,7 @@ static const u8 sTradeTextColors[] =
{
TEXT_COLOR_TRANSPARENT, //bg color
TEXT_COLOR_WHITE, //fg color
- TEXT_COLOR_DARK_GREY //shadow color
+ TEXT_COLOR_DARK_GRAY //shadow color
};
static const struct BgTemplate sTradeMenuBgTemplates[] =
@@ -620,42 +640,42 @@ static const u8 sTradeMenuPartyMonBoxDimensions[3][2] =
[TRADE_PARTNER] = {19, 3}
};
-static const u16 sTradePal_PokeBall[] = INCBIN_U16("graphics/trade/pokeball.gbapal");
-static const u8 sTradeGfx_PokeBall[] = INCBIN_U8("graphics/trade/pokeball.4bpp");
-static const u8 sTradeGfx_PokeBallSymbol[] = INCBIN_U8("graphics/trade/pokeball_symbol.8bpp"); // unused?
-static const u16 sTradeTilemap_Cable[] = INCBIN_U16("graphics/trade/cable_closeup_map.bin");
+static const u16 sPokeball_Pal[] = INCBIN_U16("graphics/trade/pokeball.gbapal");
+static const u8 sPokeball_Gfx[] = INCBIN_U8("graphics/trade/pokeball.4bpp");
+static const u8 sPokeballSymbol_Gfx[] = INCBIN_U8("graphics/trade/pokeball_symbol.8bpp"); // unused
+static const u16 sCrossingHighlightCable_Tilemap[] = INCBIN_U16("graphics/trade/crossing_highlight_cable.bin");
static const u16 sTradeTilemap_PokeBallSymbol[] = INCBIN_U16("graphics/trade/pokeball_symbol_map.bin"); // unused?
-static const u16 sUnref_083308C0[] = INCBIN_U16("graphics/trade/unknown_3308C0.gbapal");
-static const u16 sTradePal_Gba[] = INCBIN_U16("graphics/trade/gba.gbapal");
-static const u16 sTradePal_ShadowUnused[] = INCBIN_U16("graphics/trade/shadow.gbapal");
-static const u16 sTradePal_BlackUnused[] = INCBIN_U16("graphics/trade/black.gbapal");
-static const u16 sTradePal_Misc[] = INCBIN_U16("graphics/trade/misc.gbapal");
-static const u8 sTradeGfx_Glow1[] = INCBIN_U8("graphics/trade/glow1.4bpp");
-static const u8 sTradeGfx_Glow2[] = INCBIN_U8("graphics/trade/glow2.4bpp");
-static const u8 sTradeGfx_CableEnd[] = INCBIN_U8("graphics/trade/cable_end.4bpp");
-static const u8 sTradeGfx_GbaScreen[] = INCBIN_U8("graphics/trade/gba_screen.4bpp");
-const u16 gUnknown_08331F60[] = INCBIN_U16("graphics/trade/shadow_map.bin");
-static const u8 sTradeAffine_Gba[] = INCBIN_U8("graphics/trade/gba_affine.8bpp");
-static const u8 sFiller_08335760[64] = {};
-static const u8 sTradeAffineMap_GbaCable[] = INCBIN_U8("graphics/trade/gba_affine_map_cable.bin");
-static const u8 sTradeAffineMap_GbaWireless[] = INCBIN_U8("graphics/trade/gba_affine_map_wireless.bin");
-static const u16 sTradeTilemap_GbaWireless[] = INCBIN_U16("graphics/trade/gba_map_wireless.bin");
-static const u16 sTradeTilemap_GbaCable[] = INCBIN_U16("graphics/trade/gba_map_cable.bin");
-static const u32 gUnknown_083379A0[] = INCBIN_U32("graphics/trade/unknown_3379A0.bin.lz"); //some wireless tilemap
-static const u16 sTradePal_WirelessSignalSend[] = INCBIN_U16("graphics/trade/wireless_signal_send.gbapal");
-static const u16 sTradePal_WirelessSignalReceive[] = INCBIN_U16("graphics/trade/wireless_signal_receive.gbapal");
-static const u16 sTradePal_Black[] = INCBIN_U16("graphics/trade/black.gbapal");
-static const u32 sTradeGfx_WirelessSignal[] = INCBIN_U32("graphics/trade/wireless_signal.4bpp.lz");
-static const u32 sTradeTilemap_WirelessSignal[] = INCBIN_U32("graphics/trade/wireless_signal.bin.lz");
-
-static const struct OamData sTradeOamData_16x16 =
+static const u16 sUnusedPal1[] = INCBIN_U16("graphics/trade/unused1.gbapal");
+static const u16 sGba_Pal[] = INCBIN_U16("graphics/trade/gba.gbapal");
+static const u16 sUnusedPal2[] = INCBIN_U16("graphics/trade/unused2.gbapal");
+static const u16 sWirelessSignalNone_Pal_Unused[] = INCBIN_U16("graphics/trade/wireless_signal_none.gbapal");
+static const u16 sLinkMon_Pal[] = INCBIN_U16("graphics/trade/link_mon.gbapal");
+static const u8 sLinkMonGlow_Gfx[] = INCBIN_U8("graphics/trade/link_mon_glow.4bpp");
+static const u8 sLinkMonShadow_Gfx[] = INCBIN_U8("graphics/trade/link_mon_shadow.4bpp");
+static const u8 sCableEnd_Gfx[] = INCBIN_U8("graphics/trade/cable_end.4bpp");
+static const u8 sGbaScreen_Gfx[] = INCBIN_U8("graphics/trade/gba_screen.4bpp");
+const u16 gTradePlatform_Tilemap[] = INCBIN_U16("graphics/trade/platform.bin");
+static const u8 sGbaAffine_Gfx[] = INCBIN_U8("graphics/trade/gba_affine.8bpp"); // Only the gfx for when the GBA is zooming in/out
+static const u8 sEmptyGfx[64] = {};
+static const u8 sGbaCable_AffineTilemap[] = INCBIN_U8("graphics/trade/gba_affine_map_cable.bin");
+static const u8 sGbaWireless_AffineTilemap[] = INCBIN_U8("graphics/trade/gba_affine_map_wireless.bin");
+static const u16 sGbaWireless_Tilemap[] = INCBIN_U16("graphics/trade/gba_map_wireless.bin");
+static const u16 sGbaCable_Tilemap[] = INCBIN_U16("graphics/trade/gba_map_cable.bin");
+static const u32 sCrossingHighlightWireless_Tilemap[] = INCBIN_U32("graphics/trade/crossing_highlight_wireless.bin.lz");
+static const u16 sWirelessSignalSend_Pal[] = INCBIN_U16("graphics/trade/wireless_signal_send.gbapal");
+static const u16 sWirelessSignalRecv_Pal[] = INCBIN_U16("graphics/trade/wireless_signal_receive.gbapal");
+static const u16 sWirelessSignalNone_Pal[] = INCBIN_U16("graphics/trade/wireless_signal_none.gbapal");
+static const u32 sWirelessSignal_Gfx[] = INCBIN_U32("graphics/trade/wireless_signal.4bpp.lz");
+static const u32 sWirelessSignal_Tilemap[] = INCBIN_U32("graphics/trade/wireless_signal.bin.lz");
+
+static const struct OamData sOamData_Pokeball =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.shape = SPRITE_SHAPE(16x16),
.size = SPRITE_SIZE(16x16)
};
-static const union AnimCmd gSpriteAnim_8338C4C[] =
+static const union AnimCmd sAnim_Pokeball_SpinOnce[] =
{
ANIMCMD_FRAME( 0, 3),
ANIMCMD_FRAME( 4, 3),
@@ -674,7 +694,7 @@ static const union AnimCmd gSpriteAnim_8338C4C[] =
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_8338C88[] =
+static const union AnimCmd sAnim_Pokeball_SpinTwice[] =
{
ANIMCMD_FRAME( 0, 3),
ANIMCMD_FRAME( 4, 3),
@@ -693,25 +713,25 @@ static const union AnimCmd gSpriteAnim_8338C88[] =
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_8338C88[] =
+static const union AnimCmd *const sAnims_Pokeball[] =
{
- gSpriteAnim_8338C4C,
- gSpriteAnim_8338C88
+ sAnim_Pokeball_SpinOnce,
+ sAnim_Pokeball_SpinTwice
};
-static const union AffineAnimCmd gSpriteAffineAnim_8338CCC[] =
+static const union AffineAnimCmd sAffineAnim_Pokeball_Normal[] =
{
AFFINEANIMCMD_FRAME(0, 0, 0, 1),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd gSpriteAffineAnim_8338CDC[] =
+static const union AffineAnimCmd sAffineAnim_Pokeball_Squish[] =
{
AFFINEANIMCMD_FRAME(-8, 0, 0, 20),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd gSpriteAffineAnim_8338CEC[] =
+static const union AffineAnimCmd sAffineAnim_Pokeball_Unsquish[] =
{
AFFINEANIMCMD_FRAME(0x60, 0x100, 0, 0),
AFFINEANIMCMD_FRAME( 0, 0, 0, 5),
@@ -719,38 +739,38 @@ static const union AffineAnimCmd gSpriteAffineAnim_8338CEC[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd *const gSpriteAffineAnimTable_8338D0C[] =
+static const union AffineAnimCmd *const sAffineAnims_Pokeball[] =
{
- gSpriteAffineAnim_8338CCC,
- gSpriteAffineAnim_8338CDC,
- gSpriteAffineAnim_8338CEC
+ sAffineAnim_Pokeball_Normal,
+ sAffineAnim_Pokeball_Squish,
+ sAffineAnim_Pokeball_Unsquish
};
static const struct SpriteSheet sPokeBallSpriteSheet =
{
- .data = sTradeGfx_PokeBall,
+ .data = sPokeball_Gfx,
.size = 0x600,
- .tag = 5557
+ .tag = GFXTAG_POKEBALL
};
static const struct SpritePalette sPokeBallSpritePalette =
{
- .data = sTradePal_PokeBall,
- .tag = 5558
+ .data = sPokeball_Pal,
+ .tag = PALTAG_POKEBALL
};
-static const struct SpriteTemplate gSpriteTemplate_8338D28 =
+static const struct SpriteTemplate sSpriteTemplate_Pokeball =
{
- .tileTag = 5557,
- .paletteTag = 5558,
- .oam = &sTradeOamData_16x16,
- .anims = gSpriteAnimTable_8338C88,
+ .tileTag = GFXTAG_POKEBALL,
+ .paletteTag = PALTAG_POKEBALL,
+ .oam = &sOamData_Pokeball,
+ .anims = sAnims_Pokeball,
.images = NULL,
- .affineAnims = gSpriteAffineAnimTable_8338D0C,
- .callback = sub_807E55C
+ .affineAnims = sAffineAnims_Pokeball,
+ .callback = SpriteCB_BouncingPokeball
};
-static const struct OamData sTradeOamData_32x32 =
+static const struct OamData sOamData_LinkMonGlow =
{
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_BLEND,
@@ -759,146 +779,151 @@ static const struct OamData sTradeOamData_32x32 =
.priority = 1
};
-static const union AnimCmd gSpriteAnim_8338D48[] =
+static const union AnimCmd sAnim_LinkMonGlow[] =
{
- ANIMCMD_FRAME(0, 5, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0, 5, .hFlip = TRUE, .vFlip = TRUE), // ? The graphic is a perfect circle, no need to flip
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_8338D50[] =
+static const union AnimCmd *const sAnims_LinkMonGlow[] =
{
- gSpriteAnim_8338D48
+ sAnim_LinkMonGlow
};
-static const union AffineAnimCmd gSpriteAffineAnim_8338D54[] =
+static const union AffineAnimCmd sAffineAnim_LinkMonGlow[] =
{
AFFINEANIMCMD_FRAME(-10, -10, 0, 5),
AFFINEANIMCMD_FRAME(10, 10, 0, 5),
AFFINEANIMCMD_JUMP(0)
};
-static const union AffineAnimCmd *const gSpriteAffineAnimTable_8338D6C[] =
+static const union AffineAnimCmd *const sAffineAnims_LinkMonGlow[] =
{
- gSpriteAffineAnim_8338D54
+ sAffineAnim_LinkMonGlow
};
-static const struct SpriteSheet sGlow1SpriteSheet =
+static const struct SpriteSheet sSpriteSheet_LinkMonGlow =
{
- .data = sTradeGfx_Glow1,
+ .data = sLinkMonGlow_Gfx,
.size = 0x200,
- .tag = 5550
+ .tag = GFXTAG_LINK_MON_GLOW
};
-static const struct SpritePalette sMiscTradeSpritePalette =
+static const struct SpritePalette sSpritePalette_LinkMon =
{
- .data = sTradePal_Misc,
- .tag = 5551
+ .data = sLinkMon_Pal,
+ .tag = PALTAG_LINK_MON
};
-static const struct SpritePalette sGbaSpritePalette =
+static const struct SpritePalette sSpritePalette_Gba =
{
- .data = sTradePal_Gba,
- .tag = 5555
+ .data = sGba_Pal,
+ .tag = PALTAG_GBA
};
-static const struct SpriteTemplate gUnknown_08338D88 =
+static const struct SpriteTemplate sSpriteTemplate_LinkMonGlow =
{
- .tileTag = 5550,
- .paletteTag = 5551,
- .oam = &sTradeOamData_32x32,
- .anims = gSpriteAnimTable_8338D50,
+ .tileTag = GFXTAG_LINK_MON_GLOW,
+ .paletteTag = PALTAG_LINK_MON,
+ .oam = &sOamData_LinkMonGlow,
+ .anims = sAnims_LinkMonGlow,
.images = NULL,
- .affineAnims = gSpriteAffineAnimTable_8338D6C,
- .callback = sub_807AA28
+ .affineAnims = sAffineAnims_LinkMonGlow,
+ .callback = SpriteCB_LinkMonGlow
};
-static const struct OamData sTradeOamData_16x32 =
+static const struct OamData sOamData_LinkMonShadow =
{
.shape = SPRITE_SHAPE(16x32),
.size = SPRITE_SIZE(16x32),
.priority = 1
};
-static const union AnimCmd gSpriteAnim_8338DA8[] =
+static const union AnimCmd sAnim_LinkMonShadow_Big[] =
{
ANIMCMD_FRAME(0, 5, .vFlip = TRUE, .hFlip = TRUE),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_8338DB0[] =
+static const union AnimCmd sAnim_LinkMonShadow_Small[] =
{
ANIMCMD_FRAME(8, 5, .vFlip = TRUE, .hFlip = TRUE),
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_8338DB8[] =
+enum {
+ ANIM_LINKMON_BIG,
+ ANIM_LINKMON_SMALL,
+};
+
+static const union AnimCmd *const sAnims_LinkMonShadow[] =
{
- gSpriteAnim_8338DA8,
- gSpriteAnim_8338DB0
+ [ANIM_LINKMON_BIG] = sAnim_LinkMonShadow_Big,
+ [ANIM_LINKMON_SMALL] = sAnim_LinkMonShadow_Small
};
-static const struct SpriteSheet sGlow2SpriteSheet =
+static const struct SpriteSheet sSpriteSheet_LinkMonShadow =
{
- .data = sTradeGfx_Glow2,
+ .data = sLinkMonShadow_Gfx,
.size = 0x300,
- .tag = 5552
+ .tag = GFXTAG_LINK_MON_SHADOW
};
-static const struct SpriteTemplate sGlowBallSpriteTemplate =
+static const struct SpriteTemplate sSpriteTemplate_LinkMonShadow =
{
- .tileTag = 5552,
- .paletteTag = 5551,
- .oam = &sTradeOamData_16x32,
- .anims = gSpriteAnimTable_8338DB8,
+ .tileTag = GFXTAG_LINK_MON_SHADOW,
+ .paletteTag = PALTAG_LINK_MON,
+ .oam = &sOamData_LinkMonShadow,
+ .anims = sAnims_LinkMonShadow,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_807AA7C
+ .callback = SpriteCB_LinkMonShadow
};
-static const struct OamData sTradeOamData_16x32_2 =
+static const struct OamData sOamData_CableEnd =
{
.shape = SPRITE_SHAPE(16x32),
.size = SPRITE_SIZE(16x32),
.priority = 1
};
-static const union AnimCmd gSpriteAnim_8338DE8[] =
+static const union AnimCmd sAnim_CableEnd[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_8338DF0[] =
+static const union AnimCmd *const sAnims_CableEnd[] =
{
- gSpriteAnim_8338DE8
+ sAnim_CableEnd
};
-static const struct SpriteSheet sCableEndSpriteSheet =
+static const struct SpriteSheet sSpriteSheet_CableEnd =
{
- .data = sTradeGfx_CableEnd,
+ .data = sCableEnd_Gfx,
.size = 0x100,
- .tag = 5554
+ .tag = GFXTAG_CABLE_END
};
-static const struct SpriteTemplate gSpriteTemplate_8338DFC =
+static const struct SpriteTemplate sSpriteTemplate_CableEnd =
{
- .tileTag = 5554,
- .paletteTag = 5555,
- .oam = &sTradeOamData_16x32_2,
- .anims = gSpriteAnimTable_8338DF0,
+ .tileTag = GFXTAG_CABLE_END,
+ .paletteTag = PALTAG_GBA,
+ .oam = &sOamData_CableEnd,
+ .anims = sAnims_CableEnd,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_807AABC
+ .callback = SpriteCB_CableEndSending
};
-static const struct OamData sTradeOamData_64x32_2 =
+static const struct OamData sOamData_GbaScreen =
{
.shape = SPRITE_SHAPE(64x32),
.size = SPRITE_SIZE(64x32),
.priority = 1
};
-static const union AnimCmd gSpriteAnim_8338E1C[] =
+static const union AnimCmd sAnim_GbaScreen_Long[] =
{
ANIMCMD_FRAME( 0, 2, .vFlip = TRUE, .hFlip = TRUE),
ANIMCMD_FRAME(32, 2, .vFlip = TRUE, .hFlip = TRUE),
@@ -911,7 +936,7 @@ static const union AnimCmd gSpriteAnim_8338E1C[] =
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_8338E40[] =
+static const union AnimCmd sAnim_GbaScreen_Short[] =
{
ANIMCMD_FRAME( 0, 2, .vFlip = TRUE, .hFlip = TRUE),
ANIMCMD_FRAME(32, 2, .vFlip = TRUE, .hFlip = TRUE),
@@ -924,56 +949,56 @@ static const union AnimCmd gSpriteAnim_8338E40[] =
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_8338E64[] =
+static const union AnimCmd *const sAnims_GbaScreen_Long[] =
{
- gSpriteAnim_8338E1C
+ sAnim_GbaScreen_Long
};
-static const union AnimCmd *const gSpriteAnimTable_8338E68[] =
+static const union AnimCmd *const sAnims_GbaScreen_Short[] =
{
- gSpriteAnim_8338E40
+ sAnim_GbaScreen_Short
};
-static const struct SpriteSheet sGbaScreenSpriteSheet =
+static const struct SpriteSheet sSpriteSheet_GbaScreen =
{
- .data = sTradeGfx_GbaScreen,
+ .data = sGbaScreen_Gfx,
.size = 0x1000,
- .tag = 5556
+ .tag = GFXTAG_GBA_SCREEN
};
-static const struct SpriteTemplate gSpriteTemplate_8338E74 =
+static const struct SpriteTemplate sSpriteTemplate_GbaScreenFlash_Long =
{
- .tileTag = 5556,
- .paletteTag = 5555,
- .oam = &sTradeOamData_64x32_2,
- .anims = gSpriteAnimTable_8338E64,
+ .tileTag = GFXTAG_GBA_SCREEN,
+ .paletteTag = PALTAG_GBA,
+ .oam = &sOamData_GbaScreen,
+ .anims = sAnims_GbaScreen_Long,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_807AB04
+ .callback = SpriteCB_GbaScreen
};
-static const struct SpriteTemplate gSpriteTemplate_8338E8C =
+static const struct SpriteTemplate sSpriteTemplate_GbaScreenFlash_Short =
{
- .tileTag = 5556,
- .paletteTag = 5555,
- .oam = &sTradeOamData_64x32_2,
- .anims = gSpriteAnimTable_8338E68,
+ .tileTag = GFXTAG_GBA_SCREEN,
+ .paletteTag = PALTAG_GBA,
+ .oam = &sOamData_GbaScreen,
+ .anims = sAnims_GbaScreen_Short,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_807AB04
+ .callback = SpriteCB_GbaScreen
};
-static const u16 gUnknown_08338EA4[] = INCBIN_U16("graphics/trade/unknown_338EA4.gbapal");
+static const u16 sLinkMonShadow_Pal[] = INCBIN_U16("graphics/trade/link_mon_shadow.gbapal");
-static const union AffineAnimCmd gSpriteAffineAnim_8338EBC[] =
+static const union AffineAnimCmd sAffineAnim_CrossingMonPic[] =
{
AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
AFFINEANIMCMD_JUMP(0)
};
-static const union AffineAnimCmd *const gSpriteAffineAnimTable_8338ECC[] =
+static const union AffineAnimCmd *const sAffineAnims_CrossingMonPics[] =
{
- gSpriteAffineAnim_8338EBC
+ sAffineAnim_CrossingMonPic
};
static const struct InGameTrade sIngameTrades[] =
@@ -1146,69 +1171,54 @@ static const struct BgTemplate sTradeSequenceBgTemplates[] =
static const s8 sTradeBallVerticalVelocityTable[] =
{
- 0, 0, 1, 0,
- 1, 0, 1, 1,
- 1, 1, 2, 2,
- 2, 2, 3, 3,
- 3, 3, 4, 4,
- 4, 4, -4, -4,
- -4, -3, -3, -3,
- -3, -2, -2, -2,
- -2, -1, -1, -1,
- -1, 0, -1, 0,
- -1, 0, 0, 0,
- 0, 0, 1, 0,
- 1, 0, 1, 1,
- 1, 1, 2, 2,
- 2, 2, 3, 3,
- 3, 3, 4, 4,
- 4, 4, -4, -3,
- -3, -2, -2, -1,
- -1, -1, 0, -1,
- 0, 0, 0, 0,
- 0, 0, 1, 0,
- 1, 1, 1, 2,
- 2, 3, 3, 4,
- -4, -3, -2, -1,
- -1, -1, 0, 0,
- 0, 0, 1, 0,
- 1, 1, 2, 3
+ 0, 0, 1, 0, 1, 0, 1, 1, 1,
+ 1, 2, 2, 2, 2, 3, 3, 3, 3,
+ 4, 4, 4, 4, -4, -4, -4, -3, -3,
+ -3, -3, -2, -2, -2, -2, -1, -1, -1,
+ -1, 0, -1, 0, -1, 0, 0, 0, 0,
+ 0, 1, 0, 1, 0, 1, 1, 1, 1,
+ 2, 2, 2, 2, 3, 3, 3, 3, 4,
+ 4, 4, 4, -4, -3, -3, -2, -2, -1,
+ -1, -1, 0, -1, 0, 0, 0, 0, 0,
+ 0, 1, 0, 1, 1, 1, 2, 2, 3,
+ 3, 4, -4, -3, -2, -1, -1, -1, 0,
+ 0, 0, 0, 1, 0, 1, 1, 2, 3
};
static const u8 sWirelessSignalTiming[][2] =
{
- {0, 1},
- {1, 1},
- {2, 1},
- {3, 1},
- {4, 1},
- {5, 2},
- {6, 2},
- {7, 2},
- {8, 2},
- {9, 2},
- {10, 3},
- {11, 3},
- {12, 3},
- {13, 4},
- {14, 5},
- {15, 2},
- {0, 1},
- {1, 1},
- {2, 1},
- {3, 1},
- {4, 1},
- {5, 2},
- {6, 2},
- {7, 2},
- {8, 2},
- {9, 2},
- {10, 3},
- {11, 3},
- {12, 3},
- {13, 4},
- {14, 5},
- {16, 1},
- {16, 255},
- {0, 0}
+ { 0, 1},
+ { 1, 1},
+ { 2, 1},
+ { 3, 1},
+ { 4, 1},
+ { 5, 2},
+ { 6, 2},
+ { 7, 2},
+ { 8, 2},
+ { 9, 2},
+ {10, 3},
+ {11, 3},
+ {12, 3},
+ {13, 4},
+ {14, 5},
+ {15, 2},
+ { 0, 1},
+ { 1, 1},
+ { 2, 1},
+ { 3, 1},
+ { 4, 1},
+ { 5, 2},
+ { 6, 2},
+ { 7, 2},
+ { 8, 2},
+ { 9, 2},
+ {10, 3},
+ {11, 3},
+ {12, 3},
+ {13, 4},
+ {14, 5},
+ {16, 1},
+ {16, -1},
+ {}
};
diff --git a/src/data/wallpapers.h b/src/data/wallpapers.h
new file mode 100644
index 000000000..64c61fe2d
--- /dev/null
+++ b/src/data/wallpapers.h
@@ -0,0 +1,393 @@
+enum {
+ WALLPAPER_FOREST,
+ WALLPAPER_CITY,
+ WALLPAPER_DESERT,
+ WALLPAPER_SAVANNA,
+ WALLPAPER_CRAG,
+ WALLPAPER_VOLCANO,
+ WALLPAPER_SNOW,
+ WALLPAPER_CAVE,
+ WALLPAPER_BEACH,
+ WALLPAPER_SEAFLOOR,
+ WALLPAPER_RIVER,
+ WALLPAPER_SKY,
+ WALLPAPER_POLKADOT,
+ WALLPAPER_POKECENTER,
+ WALLPAPER_MACHINE,
+ WALLPAPER_PLAIN,
+ WALLPAPER_FRIENDS, // The one received as a gift from Walda's parents.
+ WALLPAPER_COUNT
+};
+#define MAX_DEFAULT_WALLPAPER WALLPAPER_SAVANNA
+
+static const u16 sWallpaperPalettes_Forest[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/forest/frame.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/forest/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Forest[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/forest/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Forest[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/forest/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_City[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/city/frame.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/city/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_City[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/city/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_City[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/city/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Desert[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/desert/frame.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/desert/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Desert[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/desert/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Desert[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/desert/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Savanna[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/savanna/frame.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/savanna/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Savanna[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/savanna/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Savanna[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/savanna/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Crag[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/crag/frame.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/crag/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Crag[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/crag/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Crag[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/crag/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Volcano[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/volcano/frame.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/volcano/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Volcano[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/volcano/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Volcano[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/volcano/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Snow[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/snow/frame.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/snow/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Snow[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/snow/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Snow[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/snow/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Cave[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/cave/frame.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/cave/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Cave[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/cave/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Cave[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/cave/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Beach[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/beach/frame.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/beach/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Beach[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/beach/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Beach[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/beach/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Seafloor[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/seafloor/frame.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/seafloor/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Seafloor[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/seafloor/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Seafloor[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/seafloor/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_River[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/river/frame.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/river/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_River[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/river/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_River[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/river/tilemap.bin.lz");
+static const u16 sWallpaperPalettes_Sky[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/sky/frame.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/sky/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Sky[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/sky/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Sky[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/sky/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_PolkaDot[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/polkadot/frame.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/polkadot/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_PolkaDot[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/polkadot/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_PolkaDot[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/polkadot/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Pokecenter[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/pokecenter/frame.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/pokecenter/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Pokecenter[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/pokecenter/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Pokecenter[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/pokecenter/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Machine[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/machine/frame.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/machine/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Machine[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/machine/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Machine[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/machine/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Plain[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/plain/frame.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/plain/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Plain[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/plain/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Plain[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/plain/tilemap.bin.lz");
+
+// 12x18 tilemap
+static const u32 sWallpaperTilemap_Unused[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/unused.bin");
+
+// Shadow color, text color
+static const u16 sBoxTitleColors[WALLPAPER_COUNT][2] =
+{
+ [WALLPAPER_FOREST] = {RGB(7, 7, 7), RGB_WHITE},
+ [WALLPAPER_CITY] = {RGB(7, 7, 7), RGB_WHITE},
+ [WALLPAPER_DESERT] = {RGB(7, 7, 7), RGB_WHITE},
+ [WALLPAPER_SAVANNA] = {RGB(7, 7, 7), RGB_WHITE},
+ [WALLPAPER_CRAG] = {RGB(7, 7, 7), RGB_WHITE},
+ [WALLPAPER_VOLCANO] = {RGB(7, 7, 7), RGB_WHITE},
+ [WALLPAPER_SNOW] = {RGB(7, 7, 7), RGB_WHITE},
+ [WALLPAPER_CAVE] = {RGB(7, 7, 7), RGB_WHITE},
+ [WALLPAPER_BEACH] = {RGB(7, 7, 7), RGB_WHITE},
+ [WALLPAPER_SEAFLOOR] = {RGB(7, 7, 7), RGB_WHITE},
+ [WALLPAPER_RIVER] = {RGB(7, 7, 7), RGB_WHITE},
+ [WALLPAPER_SKY] = {RGB(7, 7, 7), RGB_WHITE},
+ [WALLPAPER_POLKADOT] = {RGB(7, 7, 7), RGB_WHITE},
+ [WALLPAPER_POKECENTER] = {RGB(7, 7, 7), RGB_WHITE},
+ [WALLPAPER_MACHINE] = {RGB(7, 7, 7), RGB_WHITE},
+ [WALLPAPER_PLAIN] = {RGB(7, 7, 7), RGB_WHITE},
+ [WALLPAPER_FRIENDS] = {RGB(7, 7, 7), RGB_WHITE}
+};
+
+#define WALLPAPER_ENTRY(name) {sWallpaperTiles_##name, sWallpaperTilemap_##name, sWallpaperPalettes_##name[0]}
+// A few wallpapers are not defined in this file
+#define WALLPAPER_ENTRY_G(name) {gWallpaperTiles_##name, gWallpaperTilemap_##name, gWallpaperPalettes_##name[0]}
+
+static const struct Wallpaper sWallpapers[WALLPAPER_COUNT - 1] =
+{
+ [WALLPAPER_FOREST] = WALLPAPER_ENTRY(Forest),
+ [WALLPAPER_CITY] = WALLPAPER_ENTRY(City),
+ [WALLPAPER_DESERT] = WALLPAPER_ENTRY(Desert),
+ [WALLPAPER_SAVANNA] = WALLPAPER_ENTRY(Savanna),
+ [WALLPAPER_CRAG] = WALLPAPER_ENTRY(Crag),
+ [WALLPAPER_VOLCANO] = WALLPAPER_ENTRY(Volcano),
+ [WALLPAPER_SNOW] = WALLPAPER_ENTRY(Snow),
+ [WALLPAPER_CAVE] = WALLPAPER_ENTRY(Cave),
+ [WALLPAPER_BEACH] = WALLPAPER_ENTRY(Beach),
+ [WALLPAPER_SEAFLOOR] = WALLPAPER_ENTRY(Seafloor),
+ [WALLPAPER_RIVER] = WALLPAPER_ENTRY(River),
+ [WALLPAPER_SKY] = WALLPAPER_ENTRY(Sky),
+ [WALLPAPER_POLKADOT] = WALLPAPER_ENTRY(PolkaDot),
+ [WALLPAPER_POKECENTER] = WALLPAPER_ENTRY(Pokecenter),
+ [WALLPAPER_MACHINE] = WALLPAPER_ENTRY(Machine),
+ [WALLPAPER_PLAIN] = WALLPAPER_ENTRY(Plain),
+};
+
+static const u8 sArrow_Gfx[] = INCBIN_U8("graphics/pokemon_storage/arrow.4bpp");
+
+static const u16 sWallpaperPalettes_Zigzagoon[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/friends_frame1.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/zigzagoon/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Zigzagoon[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/zigzagoon/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Zigzagoon[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/zigzagoon/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Screen[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/friends_frame1.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/screen/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Screen[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/screen/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Screen[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/screen/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Diagonal[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/friends_frame1.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/diagonal/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Diagonal[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/diagonal/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Diagonal[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/diagonal/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Block[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/block/bg.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/block/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Block[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/block/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Block[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/block/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Pokecenter2[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/pokecenter2/bg.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/pokecenter2/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Pokecenter2[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/pokecenter2/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Pokecenter2[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/pokecenter2/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Frame[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/frame/bg.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/frame/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Frame[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/frame/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Frame[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/frame/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Blank[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/friends_frame1.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/zigzagoon/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Blank[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/blank/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Blank[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/blank/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Circles[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/friends_frame2.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/circles/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Circles[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/circles/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Circles[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/circles/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Azumarill[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/friends_frame2.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/azumarill/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Azumarill[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/azumarill/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Azumarill[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/azumarill/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Pikachu[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/friends_frame2.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/pikachu/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Pikachu[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/pikachu/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Pikachu[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/pikachu/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Legendary[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/friends_frame2.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/legendary/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Legendary[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/legendary/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Legendary[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/legendary/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Dusclops[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/friends_frame2.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/dusclops/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Dusclops[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/dusclops/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Dusclops[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/dusclops/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Ludicolo[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/friends_frame2.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/ludicolo/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Ludicolo[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/ludicolo/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Ludicolo[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/ludicolo/tilemap.bin.lz");
+
+static const u16 sWallpaperPalettes_Whiscash[][16] =
+{
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/friends_frame2.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/whiscash/bg.gbapal"),
+};
+static const u32 sWallpaperTiles_Whiscash[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/whiscash/tiles.4bpp.lz");
+static const u32 sWallpaperTilemap_Whiscash[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/whiscash/tilemap.bin.lz");
+
+static const u32 sWallpaperIcon_Aqua[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/aqua.4bpp.lz");
+static const u32 sWallpaperIcon_Heart[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/heart.4bpp.lz");
+static const u32 sWallpaperIcon_FiveStar[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/five_star.4bpp.lz");
+static const u32 sWallpaperIcon_Brick[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/brick.4bpp.lz");
+static const u32 sWallpaperIcon_FourStar[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/four_star.4bpp.lz");
+static const u32 sWallpaperIcon_Asterisk[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/asterisk.4bpp.lz");
+static const u32 sWallpaperIcon_Dot[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/dot.4bpp.lz");
+static const u32 sWallpaperIcon_LineCircle[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/line_circle.4bpp.lz");
+static const u32 sWallpaperIcon_PokeBall[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/pokeball.4bpp.lz");
+static const u32 sWallpaperIcon_Maze[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/maze.4bpp.lz");
+static const u32 sWallpaperIcon_Footprint[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/footprint.4bpp.lz");
+static const u32 sWallpaperIcon_BigAsterisk[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/big_asterisk.4bpp.lz");
+static const u32 sWallpaperIcon_Circle[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/circle.4bpp.lz");
+static const u32 sWallpaperIcon_Koffing[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/koffing.4bpp.lz");
+static const u32 sWallpaperIcon_Ribbon[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/ribbon.4bpp.lz");
+static const u32 sWallpaperIcon_FourCircles[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/four_circles.4bpp.lz");
+static const u32 sWallpaperIcon_Lotad[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/lotad.4bpp.lz");
+static const u32 sWallpaperIcon_Crystal[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/crystal.4bpp.lz");
+static const u32 sWallpaperIcon_Pichu[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/pichu.4bpp.lz");
+static const u32 sWallpaperIcon_Diglett[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/diglett.4bpp.lz");
+static const u32 sWallpaperIcon_Luvdisc[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/luvdisc.4bpp.lz");
+static const u32 sWallpaperIcon_StarInCircle[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/star_in_circle.4bpp.lz");
+static const u32 sWallpaperIcon_Spinda[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/spinda.4bpp.lz");
+static const u32 sWallpaperIcon_Latis[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/latis.4bpp.lz");
+static const u32 sWallpaperIcon_Minun[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/minun.4bpp.lz");
+static const u32 sWallpaperIcon_Togepi[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/togepi.4bpp.lz");
+static const u32 sWallpaperIcon_Magma[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/magma.4bpp.lz");
+
+static const struct Wallpaper sWaldaWallpapers[] =
+{
+ WALLPAPER_ENTRY(Zigzagoon),
+ WALLPAPER_ENTRY(Screen),
+ WALLPAPER_ENTRY_G(Horizontal),
+ WALLPAPER_ENTRY(Diagonal),
+ WALLPAPER_ENTRY(Block),
+ WALLPAPER_ENTRY_G(Ribbon),
+ WALLPAPER_ENTRY(Pokecenter2),
+ WALLPAPER_ENTRY(Frame),
+ WALLPAPER_ENTRY(Blank),
+ WALLPAPER_ENTRY(Circles),
+ WALLPAPER_ENTRY(Azumarill),
+ WALLPAPER_ENTRY(Pikachu),
+ WALLPAPER_ENTRY(Legendary),
+ WALLPAPER_ENTRY(Dusclops),
+ WALLPAPER_ENTRY(Ludicolo),
+ WALLPAPER_ENTRY(Whiscash),
+};
+
+static const u32 *const sWaldaWallpaperIcons[] =
+{
+ sWallpaperIcon_Aqua,
+ sWallpaperIcon_Heart,
+ sWallpaperIcon_FiveStar,
+ sWallpaperIcon_Brick,
+ sWallpaperIcon_FourStar,
+ sWallpaperIcon_Asterisk,
+ sWallpaperIcon_Dot,
+ gWallpaperIcon_Cross,
+ sWallpaperIcon_LineCircle,
+ sWallpaperIcon_PokeBall,
+ sWallpaperIcon_Maze,
+ sWallpaperIcon_Footprint,
+ sWallpaperIcon_BigAsterisk,
+ sWallpaperIcon_Circle,
+ sWallpaperIcon_Koffing,
+ sWallpaperIcon_Ribbon,
+ gWallpaperIcon_Bolt,
+ sWallpaperIcon_FourCircles,
+ sWallpaperIcon_Lotad,
+ sWallpaperIcon_Crystal,
+ sWallpaperIcon_Pichu,
+ sWallpaperIcon_Diglett,
+ sWallpaperIcon_Luvdisc,
+ sWallpaperIcon_StarInCircle,
+ sWallpaperIcon_Spinda,
+ sWallpaperIcon_Latis,
+ gWallpaperIcon_Plusle,
+ sWallpaperIcon_Minun,
+ sWallpaperIcon_Togepi,
+ sWallpaperIcon_Magma,
+};
diff --git a/src/daycare.c b/src/daycare.c
index 14cf57806..6a1715049 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -23,11 +23,13 @@
#include "constants/moves.h"
#include "constants/region_map_sections.h"
+extern const struct Evolution gEvolutionTable[][EVOS_PER_MON];
+
// this file's functions
-static void ClearDaycareMonMail(struct DayCareMail *mail);
+static void ClearDaycareMonMail(struct DaycareMail *mail);
static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *daycare);
static u8 GetDaycareCompatibilityScore(struct DayCare *daycare);
-static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y);
+static void DaycarePrintMonInfo(u8 windowId, u32 daycareSlotId, u8 y);
// RAM buffers used to assist with BuildEggMoveset()
EWRAM_DATA static u16 sHatchedEggLevelUpMoves[EGG_LVL_UP_MOVES_ARRAY_COUNT] = {0};
@@ -120,7 +122,7 @@ u8 CountPokemonInDaycare(struct DayCare *daycare)
return count;
}
-void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDayCareMail *daycareMail)
+void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDaycareMail *daycareMail)
{
u8 i;
u8 numDaycareMons = 0;
@@ -131,13 +133,9 @@ void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDay
{
numDaycareMons++;
if (GetBoxMonData(&daycare->mons[i].mon, MON_DATA_HELD_ITEM) == ITEM_NONE)
- {
daycareMail->holdsItem[i] = FALSE;
- }
else
- {
daycareMail->holdsItem[i] = TRUE;
- }
}
else
{
@@ -154,7 +152,7 @@ static s8 Daycare_FindEmptySpot(struct DayCare *daycare)
for (i = 0; i < DAYCARE_MON_COUNT; i++)
{
- if (GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES) == 0)
+ if (GetBoxMonData(&daycare->mons[i].mon, MON_DATA_SPECIES) == SPECIES_NONE)
return i;
}
@@ -349,7 +347,7 @@ u8 GetNumLevelsGainedFromDaycare(void)
return 0;
}
-static void ClearDaycareMonMail(struct DayCareMail *mail)
+static void ClearDaycareMonMail(struct DaycareMail *mail)
{
s32 i;
@@ -1228,7 +1226,7 @@ static void DaycarePrintMonLvl(struct DayCare *daycare, u8 windowId, u32 daycare
DaycareAddTextPrinter(windowId, lvlText, x, y);
}
-static void DaycarePrintMonInfo(u8 windowId, s32 daycareSlotId, u8 y)
+static void DaycarePrintMonInfo(u8 windowId, u32 daycareSlotId, u8 y)
{
if (daycareSlotId < (unsigned) DAYCARE_MON_COUNT)
{
diff --git a/src/decompress.c b/src/decompress.c
index 335699449..a65f38c2d 100644
--- a/src/decompress.c
+++ b/src/decompress.c
@@ -390,5 +390,5 @@ void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src
static void DuplicateDeoxysTiles(void *pointer, s32 species)
{
if (species == SPECIES_DEOXYS)
- CpuCopy32(pointer + 0x800, pointer, 0x800);
+ CpuCopy32(pointer + MON_PIC_SIZE, pointer, MON_PIC_SIZE);
}
diff --git a/src/decoration.c b/src/decoration.c
index b9a243708..62d1966bf 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -147,7 +147,7 @@ static void ReturnToActionsMenuFromCategories(u8 taskId);
static void ExitTraderDecorationMenu(u8 taskId);
static void CopyDecorationMenuItemName(u8 *dest, u16 decoration);
static void DecorationItemsMenu_OnCursorMove(s32 itemIndex, bool8 flag, struct ListMenu *menu);
-static void DecorationItemsMenu_PrintDecorationInUse(u8 windowId, s32 itemIndex, u8 y);
+static void DecorationItemsMenu_PrintDecorationInUse(u8 windowId, u32 itemIndex, u8 y);
static void ShowDecorationItemsWindow(u8 taskId);
static void HandleDecorationItemsMenuInput(u8 taskId);
static void PrintDecorationItemDescription(s32 itemIndex);
@@ -912,9 +912,9 @@ static void DecorationItemsMenu_OnCursorMove(s32 itemIndex, bool8 flag, struct L
PrintDecorationItemDescription(itemIndex);
}
-static void DecorationItemsMenu_PrintDecorationInUse(u8 windowId, s32 itemIndex, u8 y)
+static void DecorationItemsMenu_PrintDecorationInUse(u8 windowId, u32 itemIndex, u8 y)
{
- if (itemIndex != -2)
+ if (itemIndex != LIST_CANCEL)
{
if (IsDecorationIndexInSecretBase(itemIndex + 1) == TRUE)
BlitMenuInfoIcon(windowId, MENU_INFO_ICON_BALL_RED, 92, y + 2);
@@ -1382,8 +1382,8 @@ static void ConfigureCameraObjectForPlacingDecoration(struct PlaceDecorationGrap
gFieldCamera.spriteId = gpu_pal_decompress_alloc_tag_and_upload(data, decor);
gSprites[gFieldCamera.spriteId].oam.priority = 1;
gSprites[gFieldCamera.spriteId].callback = InitializePuttingAwayCursorSprite;
- gSprites[gFieldCamera.spriteId].pos1.x = sDecorationMovementInfo[data->decoration->shape].cameraX;
- gSprites[gFieldCamera.spriteId].pos1.y = sDecorationMovementInfo[data->decoration->shape].cameraY;
+ gSprites[gFieldCamera.spriteId].x = sDecorationMovementInfo[data->decoration->shape].cameraX;
+ gSprites[gFieldCamera.spriteId].y = sDecorationMovementInfo[data->decoration->shape].cameraY;
}
static void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct PlaceDecorationGraphicsDataBuffer *data)
@@ -1650,9 +1650,9 @@ static void PlaceDecoration(u8 taskId)
ScriptContext1_SetupScript(SecretBase_EventScript_SetDecoration);
}
- gSprites[sDecor_CameraSpriteObjectIdx1].pos1.y += 2;
+ gSprites[sDecor_CameraSpriteObjectIdx1].y += 2;
if (gMapHeader.regionMapSectionId == MAPSEC_SECRET_BASE)
- TV_PutSecretBaseVisitOnTheAir();
+ TryPutSecretBaseVisitOnAir();
CancelDecorating_(taskId);
}
@@ -2121,8 +2121,8 @@ u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u1
if (spriteId == MAX_SPRITES)
return MAX_SPRITES;
- gSprites[spriteId].pos2.x = x + 4;
- gSprites[spriteId].pos2.y = y + 4;
+ gSprites[spriteId].x2 = x + 4;
+ gSprites[spriteId].y2 = y + 4;
}
else if (gDecorIconTable[decor][0] == NULL)
{
@@ -2130,11 +2130,11 @@ u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u1
if (spriteId == MAX_SPRITES)
return MAX_SPRITES;
- gSprites[spriteId].pos2.x = x;
+ gSprites[spriteId].x2 = x;
if (decor == DECOR_SILVER_SHIELD || decor == DECOR_GOLD_SHIELD)
- gSprites[spriteId].pos2.y = y - 4;
+ gSprites[spriteId].y2 = y - 4;
else
- gSprites[spriteId].pos2.y = y;
+ gSprites[spriteId].y2 = y;
}
else
{
@@ -2142,8 +2142,8 @@ u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u1
if (spriteId == MAX_SPRITES)
return MAX_SPRITES;
- gSprites[spriteId].pos2.x = x + 4;
- gSprites[spriteId].pos2.y = y + 4;
+ gSprites[spriteId].x2 = x + 4;
+ gSprites[spriteId].y2 = y + 4;
}
gSprites[spriteId].oam.priority = priority;
@@ -2260,7 +2260,7 @@ static void Task_PutAwayDecoration(u8 taskId)
StringExpandPlaceholders(gStringVar4, gText_DecorationReturnedToPC);
DisplayItemMessageOnField(taskId, gStringVar4, ContinuePuttingAwayDecorationsPrompt);
if (gMapHeader.regionMapSectionId == MAPSEC_SECRET_BASE)
- TV_PutSecretBaseVisitOnTheAir();
+ TryPutSecretBaseVisitOnAir();
}
break;
}
@@ -2332,8 +2332,8 @@ static void ContinuePuttingAwayDecorations(u8 taskId)
gSprites[sDecor_CameraSpriteObjectIdx1].data[7] = 0;
gSprites[sDecor_CameraSpriteObjectIdx1].invisible = FALSE;
gSprites[sDecor_CameraSpriteObjectIdx1].callback = InitializeCameraSprite1;
- gSprites[sDecor_CameraSpriteObjectIdx2].pos1.x = 136;
- gSprites[sDecor_CameraSpriteObjectIdx2].pos1.y = 72;
+ gSprites[sDecor_CameraSpriteObjectIdx2].x = 136;
+ gSprites[sDecor_CameraSpriteObjectIdx2].y = 72;
gTasks[taskId].tButton = 0;
gTasks[taskId].func = Task_SelectLocation;
}
@@ -2449,8 +2449,8 @@ static void SetCameraSpritePosition(u8 x, u8 y)
{
gSprites[sDecor_CameraSpriteObjectIdx1].invisible = TRUE;
gSprites[sDecor_CameraSpriteObjectIdx1].callback = SpriteCallbackDummy;
- gSprites[sDecor_CameraSpriteObjectIdx2].pos1.x = x * 16 + 136;
- gSprites[sDecor_CameraSpriteObjectIdx2].pos1.y = y * 16 + 72;
+ gSprites[sDecor_CameraSpriteObjectIdx2].x = x * 16 + 136;
+ gSprites[sDecor_CameraSpriteObjectIdx2].y = y * 16 + 72;
}
static bool8 DecorationIsUnderCursor(u8 taskId, u8 idx, struct DecorRearrangementDataBuffer *data)
diff --git a/src/dewford_trend.c b/src/dewford_trend.c
index c60797f86..09a8d2afe 100644
--- a/src/dewford_trend.c
+++ b/src/dewford_trend.c
@@ -10,311 +10,388 @@
#include "string_util.h"
#include "constants/easy_chat.h"
-// static functions
-static void sub_8122804(struct EasyChatPair *s, u16 b, u8 c);
-static bool8 sub_8122A58(struct EasyChatPair *a, struct EasyChatPair *b, u8 c);
-static void sub_8122B28(struct EasyChatPair *s);
-static bool8 SB1ContainsWords(u16 *a);
-static bool8 IsEasyChatPairEqual(u16 *words1, u16 *words2);
-static s16 GetEqualEasyChatPairIndex(struct EasyChatPair *s, struct EasyChatPair *a, u16 b);
-
-// text
+/*
+ ## Overview ##
+ This file handles the "Dewford Trend", a pair of Easy Chat words
+ repeated by NPCs around Dewford Hall.
+
+ The NPC outside Dewford Hall will ask what the player thinks of the
+ current trendy phrase, and the player may submit a new pair of words.
+ If the NPC thinks the submitted phrase is "trendier" than the
+ current one (see TrySetTrendyPhrase), it becomes the new phrase.
+
+ ## struct DewfordTrend ##
+ Information about a Dewford trend is stored in a struct DewfordTrend.
+ In addition to the two easy chat words that make up the trend's phrase,
+ each trend has a few randomly generated values associated with it.
+ - rand:
+ This is a 16 bit value generated once when the phrase is created.
+ It's used in calculations for Feebas tiles, Slot Machines, and Match Call.
+ - trendiness / maxTrendiness:
+ Initialized as a random value between 30-127 inclusive. This is used to
+ compare how trendy one phrase is vs another. If a submitted phrase is
+ less trendy than the current one it won't be accepted. If the trend is
+ "boring" (see below) it will lose trendiness over time until it reaches 0,
+ at which point it will stop being boring and gain trendiness until it
+ reaches maxTrendiness (then it becomes boring again and the cycle repeats).
+ - gainingTrendiness:
+ This is a flag that determines whether a phrase should be gaining or losing
+ trendiness. An NPC in Dewford Hall will comment on whether the current phrase
+ is "boring" or not, and if it is gaining trendiness (or if it is still trendier
+ than the last phrase) it is not boring. This field will always be TRUE for any
+ new phrase submitted after the 1st submission.
+
+ ## Saving trends ##
+ Each time a potential trendy phrase is submitted, it is saved in gSaveBlock1Ptr->dewfordTrends[].
+ Up to SAVED_TRENDS_COUNT (5) trends may be saved at one time. The trends in this array are kept
+ in sorted order from most trendy to least trendy. The current trendy phrase is always at
+ gSaveBlock1Ptr->dewfordTrends[0]. If the player mixes records with another player, their own
+ trends are replaced with their mixing partner's, unless the phrase is the same, in which case
+ the version with a higher trendiness value is used (see ReceiveDewfordTrendData).
+
+ ## TV Show ##
+ If a submitted phrase is only trendier than 1 or none of the saved trends, it may trigger a
+ TV Show called Trend Watcher (see TryPutTrendWatcherOnAir) that, ironically, spends the
+ show talking about how the submitted phrase was not trendy.
+
+*/
+
+enum {
+ SORT_MODE_NORMAL,
+ SORT_MODE_MAX_FIRST,
+ SORT_MODE_FULL,
+};
+
+static void SortTrends(struct DewfordTrend *, u16, u8);
+static bool8 CompareTrends(struct DewfordTrend *, struct DewfordTrend *, u8);
+static void SeedTrendRng(struct DewfordTrend *);
+static bool8 IsPhraseInSavedTrends(u16 *);
+static bool8 IsEasyChatPairEqual(u16 *, u16 *);
+static s16 GetSavedTrendIndex(struct DewfordTrend *, struct DewfordTrend *, u16);
+
void InitDewfordTrend(void)
{
u16 i;
- for (i = 0; i < 5; i++)
+ for (i = 0; i < SAVED_TRENDS_COUNT; i++)
{
- gSaveBlock1Ptr->easyChatPairs[i].words[0] = GetRandomEasyChatWordFromGroup(EC_GROUP_CONDITIONS);
+ gSaveBlock1Ptr->dewfordTrends[i].words[0] = GetRandomEasyChatWordFromGroup(EC_GROUP_CONDITIONS);
if (Random() & 1)
- gSaveBlock1Ptr->easyChatPairs[i].words[1] = GetRandomEasyChatWordFromGroup(EC_GROUP_LIFESTYLE);
+ gSaveBlock1Ptr->dewfordTrends[i].words[1] = GetRandomEasyChatWordFromGroup(EC_GROUP_LIFESTYLE);
else
- gSaveBlock1Ptr->easyChatPairs[i].words[1] = GetRandomEasyChatWordFromGroup(EC_GROUP_HOBBIES);
+ gSaveBlock1Ptr->dewfordTrends[i].words[1] = GetRandomEasyChatWordFromGroup(EC_GROUP_HOBBIES);
- gSaveBlock1Ptr->easyChatPairs[i].unk1_6 = Random() & 1;
- sub_8122B28(&(gSaveBlock1Ptr->easyChatPairs[i]));
+ gSaveBlock1Ptr->dewfordTrends[i].gainingTrendiness = Random() & 1;
+ SeedTrendRng(&(gSaveBlock1Ptr->dewfordTrends[i]));
}
- sub_8122804(gSaveBlock1Ptr->easyChatPairs, 5, 0);
+ SortTrends(gSaveBlock1Ptr->dewfordTrends, SAVED_TRENDS_COUNT, SORT_MODE_NORMAL);
}
-void UpdateDewfordTrendPerDay(u16 a)
+void UpdateDewfordTrendPerDay(u16 days)
{
u16 i;
- if (a != 0)
+ if (days != 0)
{
- u32 sp0 = a * 5;
+ u32 clockRand = days * 5;
- for (i = 0; i < 5; i++)
+ for (i = 0; i < SAVED_TRENDS_COUNT; i++)
{
- u32 r4;
- u32 r2 = sp0;
- struct EasyChatPair *r5 = &(gSaveBlock1Ptr->easyChatPairs[i]);
+ u32 trendiness;
+ u32 rand = clockRand;
+ struct DewfordTrend *trend = &gSaveBlock1Ptr->dewfordTrends[i];
- if (r5->unk1_6 == 0)
+ if (!trend->gainingTrendiness)
{
- if (r5->unk0_0 >= (u16)r2)
+ // This trend is "boring"
+ // Lose trendiness until it becomes 0
+ if (trend->trendiness >= (u16)rand)
{
- r5->unk0_0 -= r2;
- if (r5->unk0_0 == 0)
- r5->unk1_6 = 1;
+ trend->trendiness -= rand;
+ if (trend->trendiness == 0)
+ trend->gainingTrendiness = TRUE;
continue;
}
- r2 -= r5->unk0_0;
- r5->unk0_0 = 0;
- r5->unk1_6 = 1;
+ rand -= trend->trendiness;
+ trend->trendiness = 0;
+ trend->gainingTrendiness = TRUE;
}
- r4 = r5->unk0_0 + r2;
- if ((u16)r4 > r5->unk0_7)
+
+ trendiness = trend->trendiness + rand;
+ if ((u16)trendiness > trend->maxTrendiness)
{
- u32 sp4 = r4 % r5->unk0_7;
- r4 = r4 / r5->unk0_7;
+ // Reached limit, reset trendiness
+ u32 newTrendiness = trendiness % trend->maxTrendiness;
+ trendiness = trendiness / trend->maxTrendiness;
- r5->unk1_6 = r4 ^ 1;
- if (r5->unk1_6)
- r5->unk0_0 = sp4;
+ trend->gainingTrendiness = trendiness ^ 1;
+ if (trend->gainingTrendiness)
+ trend->trendiness = newTrendiness;
else
- r5->unk0_0 = r5->unk0_7 - sp4;
+ trend->trendiness = trend->maxTrendiness - newTrendiness;
}
else
{
- r5->unk0_0 = r4;
+ // Increase trendiness
+ trend->trendiness = trendiness;
- if (r5->unk0_0 == r5->unk0_7)
- r5->unk1_6 = 0;
+ // Trend has reached its max, becoming "boring" and start losing trendiness
+ if (trend->trendiness == trend->maxTrendiness)
+ trend->gainingTrendiness = FALSE;
}
}
- sub_8122804(gSaveBlock1Ptr->easyChatPairs, 5, 0);
+ SortTrends(gSaveBlock1Ptr->dewfordTrends, SAVED_TRENDS_COUNT, SORT_MODE_NORMAL);
}
}
-
-bool8 IsPhraseTrendy(u16 *a)
+// Returns TRUE if the current trendy phrase was successfully changed to the given phrase
+// Returns FALSE otherwise
+// Regardless of whether or not the current trendy phrase was changed, the submitted
+// phrase is always saved in gSaveBlock1Ptr->dewfordTrends
+bool8 TrySetTrendyPhrase(u16 *phrase)
{
- struct EasyChatPair s = {0};
+ struct DewfordTrend trend = {0};
u16 i;
- if (!SB1ContainsWords(a))
+ if (!IsPhraseInSavedTrends(phrase))
{
- if (!FlagGet(FLAG_SYS_POPWORD_INPUT))
+ if (!FlagGet(FLAG_SYS_CHANGED_DEWFORD_TREND))
{
- FlagSet(FLAG_SYS_POPWORD_INPUT);
+ FlagSet(FLAG_SYS_CHANGED_DEWFORD_TREND);
+
+ // Make sure player couldn't have received this phrase by mixing records
if (!FlagGet(FLAG_SYS_MIX_RECORD))
{
- gSaveBlock1Ptr->easyChatPairs[0].words[0] = a[0];
- gSaveBlock1Ptr->easyChatPairs[0].words[1] = a[1];
+ // This is the first time submitting a phrase
+ // No need to check saved phrases or reset rng, just set the new words
+ gSaveBlock1Ptr->dewfordTrends[0].words[0] = phrase[0];
+ gSaveBlock1Ptr->dewfordTrends[0].words[1] = phrase[1];
return TRUE;
}
}
- s.words[0] = a[0];
- s.words[1] = a[1];
- s.unk1_6 = 1;
- sub_8122B28(&s);
+ // Initialize DewfordTrend using given phrase
+ trend.words[0] = phrase[0];
+ trend.words[1] = phrase[1];
+ trend.gainingTrendiness = TRUE;
+ SeedTrendRng(&trend);
- for (i = 0; i < 5; i++)
+ for (i = 0; i < SAVED_TRENDS_COUNT; i++)
{
- if (sub_8122A58(&s, &(gSaveBlock1Ptr->easyChatPairs[i]), 0))
+ if (CompareTrends(&trend, &(gSaveBlock1Ptr->dewfordTrends[i]), SORT_MODE_NORMAL))
{
- u16 r3 = 4;
-
- while (r3 > i)
+ // New trend is "trendier" than dewfordTrend[i]
+ // Shift other trends back to insert new trend
+ u16 j = SAVED_TRENDS_COUNT - 1;
+ while (j > i)
{
- gSaveBlock1Ptr->easyChatPairs[r3] = gSaveBlock1Ptr->easyChatPairs[r3 - 1];
- r3--;
+ gSaveBlock1Ptr->dewfordTrends[j] = gSaveBlock1Ptr->dewfordTrends[j - 1];
+ j--;
}
- gSaveBlock1Ptr->easyChatPairs[i] = s;
- if(i == 4)
- sub_80EDC60(a);
+ gSaveBlock1Ptr->dewfordTrends[i] = trend;
+
+ if (i == SAVED_TRENDS_COUNT - 1)
+ TryPutTrendWatcherOnAir(phrase);
+
+ // If i is 0, the given phrase is the new current phrase
return (i == 0);
}
}
- gSaveBlock1Ptr->easyChatPairs[4] = s;
- sub_80EDC60(a);
+
+ // New trend is less "trendy" than all other saved trends, put it in last
+ gSaveBlock1Ptr->dewfordTrends[SAVED_TRENDS_COUNT - 1] = trend;
+ TryPutTrendWatcherOnAir(phrase);
}
return FALSE;
}
-static void sub_8122804(struct EasyChatPair *s, u16 b, u8 c)
+static void SortTrends(struct DewfordTrend *trends, u16 numTrends, u8 mode)
{
- u16 h;
-
- for (h = 0; h < b; h++)
+ u16 i;
+ for (i = 0; i < numTrends; i++)
{
- u16 i;
-
- for (i = h + 1; i < b; i++)
+ u16 j;
+ for (j = i + 1; j < numTrends; j++)
{
- if (sub_8122A58(&s[i], &s[h], c))
+ if (CompareTrends(&trends[j], &trends[i], mode))
{
- struct EasyChatPair temp;
-
- temp = s[i];
- s[i] = s[h];
- s[h] = temp;
+ struct DewfordTrend temp;
+ SWAP(trends[j], trends[i], temp);
}
}
}
}
-void ReceiveEasyChatPairsData(struct EasyChatPair *a, size_t size, u8 unused)
+#define SAVED_TRENDS_SIZE (sizeof(struct DewfordTrend) * SAVED_TRENDS_COUNT)
+#define BUFFER_SIZE (SAVED_TRENDS_SIZE * MAX_LINK_PLAYERS > 0x100 ? SAVED_TRENDS_SIZE * MAX_LINK_PLAYERS : 0x100) // More space was allocated than needed
+
+void ReceiveDewfordTrendData(struct DewfordTrend *linkedTrends, size_t size, u8 unused)
{
- u16 i, j, r3, players;
- struct EasyChatPair *buffer1, *buffer2, *src, *dst, *foo_of_buffer2;
+ u16 i, j, numTrends, players;
+ struct DewfordTrend *linkedTrendsBuffer, *savedTrendsBuffer, *src, *dst, *temp;
- buffer1 = Alloc(0x100);
- if(buffer1 != NULL)
+ // Exit if alloc fails
+ if (!(linkedTrendsBuffer = Alloc(BUFFER_SIZE)))
+ return;
+
+ // Exit if alloc fails
+ if (!(savedTrendsBuffer = Alloc(BUFFER_SIZE)))
{
- buffer2 = Alloc(0x100);
- if(buffer2 == NULL)
- {
- Free(buffer1);
- }
- else
+ Free(linkedTrendsBuffer);
+ return;
+ }
+
+ // Buffer the new trends being received via Record Mixing
+ players = GetLinkPlayerCount();
+ for (i = 0; i < players; i++)
+ memcpy(&linkedTrendsBuffer[i * SAVED_TRENDS_COUNT], (u8 *)linkedTrends + i * size, SAVED_TRENDS_SIZE);
+
+ // Determine which of the received trends should be saved.
+ // savedTrendsBuffer starts empty, and when finished will contain
+ // which of the linked trends to save in the saveblock.
+ src = linkedTrendsBuffer;
+ dst = savedTrendsBuffer;
+ numTrends = 0;
+ for (i = 0; i < players; i++)
+ {
+ for (j = 0; j < SAVED_TRENDS_COUNT; j++)
{
- players = GetLinkPlayerCount();
- for (i = 0; i < players; i++)
- memcpy(&(buffer1[i * 5]), (u8 *)a + i * size, 40);
- src = buffer1;
- dst = buffer2;
- r3 = 0;
- for (i = 0; i < players; i++)
+ s16 idx = GetSavedTrendIndex(savedTrendsBuffer, src, numTrends);
+ if (idx < 0)
{
- for (j = 0; j < 5; j++)
+ // This phrase is not a currently saved trend, save it
+ *(dst++) = *src;
+ numTrends++;
+ }
+ else
+ {
+ // This phrase already exists as a saved phrase
+ // Only overwrrite it if it's "trendier"
+ temp = &savedTrendsBuffer[idx];
+ if (temp->trendiness < src->trendiness)
{
- s16 foo = GetEqualEasyChatPairIndex(buffer2, src, r3);
- if (foo < 0)
- {
- *(dst++) = *src;
- r3++;
- }
- else
- {
- foo_of_buffer2 = (struct EasyChatPair *)((u32)buffer2 + (foo * 8)); //required to do this to reverse the order of register operands in add ASM statement
- if (foo_of_buffer2->unk0_0 < src->unk0_0)
- {
- *foo_of_buffer2 = *src;
- }
- }
- src++;
+ *temp = *src;
}
}
- sub_8122804(buffer2, r3, 2);
- src = buffer2;
- dst = gSaveBlock1Ptr->easyChatPairs;
- for (i = 0; i < 5; i++)
- *(dst++) = *(src++);
- Free(buffer1);
- Free(buffer2);
+ src++;
}
}
+ SortTrends(savedTrendsBuffer, numTrends, SORT_MODE_FULL);
+
+ // Overwrite current saved trends with new saved trends
+ src = savedTrendsBuffer;
+ dst = gSaveBlock1Ptr->dewfordTrends;
+ for (i = 0; i < SAVED_TRENDS_COUNT; i++)
+ *(dst++) = *(src++);
+
+ Free(linkedTrendsBuffer);
+ Free(savedTrendsBuffer);
}
void BufferTrendyPhraseString(void)
{
- struct EasyChatPair *s = &gSaveBlock1Ptr->easyChatPairs[gSpecialVar_0x8004];
-
- ConvertEasyChatWordsToString(gStringVar1, s->words, 2, 1);
+ struct DewfordTrend *trend = &gSaveBlock1Ptr->dewfordTrends[gSpecialVar_0x8004];
+ ConvertEasyChatWordsToString(gStringVar1, trend->words, 2, 1);
}
-void TrendyPhraseIsOld(void)
+// Returns TRUE if the current trendy phrase is "boring", FALSE otherwise
+// This only influences the comment of an NPC inside the Dewford Town Hall
+void IsTrendyPhraseBoring(void)
{
- u16 result = 0;
+ bool16 result = FALSE;
do
{
- if (gSaveBlock1Ptr->easyChatPairs[0].unk0_0 - gSaveBlock1Ptr->easyChatPairs[1].unk0_0 > 1)
+ if (gSaveBlock1Ptr->dewfordTrends[0].trendiness - gSaveBlock1Ptr->dewfordTrends[1].trendiness > 1)
break;
- if (gSaveBlock1Ptr->easyChatPairs[0].unk1_6)
+ if (gSaveBlock1Ptr->dewfordTrends[0].gainingTrendiness)
break;
- if (!gSaveBlock1Ptr->easyChatPairs[1].unk1_6)
+ if (!gSaveBlock1Ptr->dewfordTrends[1].gainingTrendiness)
break;
- result = 1;
+ result = TRUE;
} while (0);
gSpecialVar_Result = result;
}
+// A painting hangs on the wall of the Dewford Hall
+// When interacted with it says "{trendy phrase}'S {name} is the title"
+// {name} is one of 8 pre-set words, depending on the current phrase
+// See DewfordTown_Hall_EventScript_Painting
void GetDewfordHallPaintingNameIndex(void)
{
- gSpecialVar_Result = (gSaveBlock1Ptr->easyChatPairs[0].words[0] + gSaveBlock1Ptr->easyChatPairs[0].words[1]) & 7;
+ gSpecialVar_Result = (gSaveBlock1Ptr->dewfordTrends[0].words[0] + gSaveBlock1Ptr->dewfordTrends[0].words[1]) & 7;
}
-static bool8 sub_8122A58(struct EasyChatPair *a, struct EasyChatPair *b, u8 c)
+// Returns TRUE if a > b (a is "trendier" than b), FALSE if a < b (b is "trendier" than a)
+// How one trend is compared to the other depends on the mode
+// In SORT_MODE_FULL if the trends are equal then TRUE is always returned, otherwise TRUE or FALSE is returned randomly
+static bool8 CompareTrends(struct DewfordTrend *a, struct DewfordTrend *b, u8 mode)
{
- switch (c)
+ switch (mode)
{
- case 0:
- if (a->unk0_0 > b->unk0_0)
- return 1;
- if (a->unk0_0 < b->unk0_0)
- return 0;
- if (a->unk0_7 > b->unk0_7)
- return 1;
- if (a->unk0_7 < b->unk0_7)
- return 0;
+ case SORT_MODE_NORMAL:
+ if (a->trendiness > b->trendiness) return TRUE;
+ if (a->trendiness < b->trendiness) return FALSE;
+
+ if (a->maxTrendiness > b->maxTrendiness) return TRUE;
+ if (a->maxTrendiness < b->maxTrendiness) return FALSE;
break;
- case 1:
- if (a->unk0_7 > b->unk0_7)
- return 1;
- if (a->unk0_7 < b->unk0_7)
- return 0;
- if (a->unk0_0 > b->unk0_0)
- return 1;
- if (a->unk0_0 < b->unk0_0)
- return 0;
+ case SORT_MODE_MAX_FIRST: // Unused
+ if (a->maxTrendiness > b->maxTrendiness) return TRUE;
+ if (a->maxTrendiness < b->maxTrendiness) return FALSE;
+
+ if (a->trendiness > b->trendiness) return TRUE;
+ if (a->trendiness < b->trendiness) return FALSE;
break;
- case 2:
- if (a->unk0_0 > b->unk0_0)
- return 1;
- if (a->unk0_0 < b->unk0_0)
- return 0;
- if (a->unk0_7 > b->unk0_7)
- return 1;
- if (a->unk0_7 < b->unk0_7)
- return 0;
- if (a->unk2 > b->unk2)
- return 1;
- if (a->unk2 < b->unk2)
- return 0;
- if (a->words[0] > b->words[0])
- return 1;
- if (a->words[0] < b->words[0])
- return 0;
- if (a->words[1] > b->words[1])
- return 1;
- if (a->words[1] < b->words[1])
- return 0;
- return 1;
+ case SORT_MODE_FULL:
+ if (a->trendiness > b->trendiness) return TRUE;
+ if (a->trendiness < b->trendiness) return FALSE;
+
+ if (a->maxTrendiness > b->maxTrendiness) return TRUE;
+ if (a->maxTrendiness < b->maxTrendiness) return FALSE;
+
+ if (a->rand > b->rand) return TRUE;
+ if (a->rand < b->rand) return FALSE;
+
+ if (a->words[0] > b->words[0]) return TRUE;
+ if (a->words[0] < b->words[0]) return FALSE;
+
+ if (a->words[1] > b->words[1]) return TRUE;
+ if (a->words[1] < b->words[1]) return FALSE;
+ return TRUE;
}
+
+ // Invalid mode given, or trends are equal in SORT_MODE_NORMAL or SORT_MODE_MAX_FIRST
+ // Randomly pick one of the phrases
return Random() & 1;
}
-static void sub_8122B28(struct EasyChatPair *s)
+static void SeedTrendRng(struct DewfordTrend *trend)
{
- u16 r4;
+ u16 rand;
- r4 = Random() % 98;
- if (r4 > 50)
+ rand = Random() % 98;
+ if (rand > 50)
{
- r4 = Random() % 98;
- if (r4 > 80)
- r4 = Random() % 98;
+ rand = Random() % 98;
+ if (rand > 80)
+ rand = Random() % 98;
}
- s->unk0_7 = r4 + 30;
- s->unk0_0 = (Random() % (r4 + 1)) + 30;
- s->unk2 = Random();
+ trend->maxTrendiness = rand + 30;
+ trend->trendiness = (Random() % (rand + 1)) + 30;
+ trend->rand = Random();
}
-static bool8 SB1ContainsWords(u16 *a)
+static bool8 IsPhraseInSavedTrends(u16 *phrase)
{
u16 i;
- for (i = 0; i < 5; i++)
+ for (i = 0; i < SAVED_TRENDS_COUNT; i++)
{
- if (IsEasyChatPairEqual(a, gSaveBlock1Ptr->easyChatPairs[i].words) != 0)
+ if (IsEasyChatPairEqual(phrase, gSaveBlock1Ptr->dewfordTrends[i].words))
return TRUE;
}
return FALSE;
@@ -332,15 +409,14 @@ static bool8 IsEasyChatPairEqual(u16 *words1, u16 *words2)
return TRUE;
}
-static s16 GetEqualEasyChatPairIndex(struct EasyChatPair*s, struct EasyChatPair *a, u16 b)
+static s16 GetSavedTrendIndex(struct DewfordTrend *savedTrends, struct DewfordTrend *trend, u16 numSaved)
{
s16 i;
-
- for (i = 0; i < b; i++)
+ for (i = 0; i < numSaved; i++)
{
- if (IsEasyChatPairEqual(a->words, s->words))
+ if (IsEasyChatPairEqual(trend->words, savedTrends->words))
return i;
- s++;
+ savedTrends++;
}
return -1;
}
diff --git a/src/diploma.c b/src/diploma.c
index bf0d5b057..dca0912e3 100644
--- a/src/diploma.c
+++ b/src/diploma.c
@@ -51,18 +51,18 @@ void CB2_ShowDiploma(void)
{
SetVBlankCallback(NULL);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0);
- SetGpuReg(REG_OFFSET_BG3CNT, DISPCNT_MODE_0);
- SetGpuReg(REG_OFFSET_BG2CNT, DISPCNT_MODE_0);
- SetGpuReg(REG_OFFSET_BG1CNT, DISPCNT_MODE_0);
- SetGpuReg(REG_OFFSET_BG0CNT, DISPCNT_MODE_0);
- SetGpuReg(REG_OFFSET_BG3HOFS, DISPCNT_MODE_0);
- SetGpuReg(REG_OFFSET_BG3VOFS, DISPCNT_MODE_0);
- SetGpuReg(REG_OFFSET_BG2HOFS, DISPCNT_MODE_0);
- SetGpuReg(REG_OFFSET_BG2VOFS, DISPCNT_MODE_0);
- SetGpuReg(REG_OFFSET_BG1HOFS, DISPCNT_MODE_0);
- SetGpuReg(REG_OFFSET_BG1VOFS, DISPCNT_MODE_0);
- SetGpuReg(REG_OFFSET_BG0HOFS, DISPCNT_MODE_0);
- SetGpuReg(REG_OFFSET_BG0VOFS, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BG3CNT, 0);
+ SetGpuReg(REG_OFFSET_BG2CNT, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, 0);
+ SetGpuReg(REG_OFFSET_BG0CNT, 0);
+ SetGpuReg(REG_OFFSET_BG3HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
// why doesn't this one use the dma manager either?
DmaFill16(3, 0, VRAM, VRAM_SIZE);
DmaFill32(3, 0, OAM, OAM_SIZE);
@@ -121,7 +121,7 @@ static void Task_DiplomaFadeOut(u8 taskId)
Free(sDiplomaTilemapPtr);
FreeAllWindowBuffers();
DestroyTask(taskId);
- SetMainCallback2(sub_80861E8);
+ SetMainCallback2(CB2_ReturnToFieldFadeFromBlack);
}
}
@@ -129,12 +129,12 @@ static void DisplayDiplomaText(void)
{
if (HasAllMons())
{
- SetGpuReg(REG_OFFSET_BG1HOFS, DISPCNT_BG0_ON);
+ SetGpuReg(REG_OFFSET_BG1HOFS, DISPLAY_WIDTH + 16);
StringCopy(gStringVar1, gText_DexNational);
}
else
{
- SetGpuReg(REG_OFFSET_BG1HOFS, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
StringCopy(gStringVar1, gText_DexHoenn);
}
StringExpandPlaceholders(gStringVar4, gText_PokedexDiploma);
@@ -173,9 +173,9 @@ static void InitDiplomaBg(void)
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
ShowBg(0);
ShowBg(1);
- SetGpuReg(REG_OFFSET_BLDCNT, DISPCNT_MODE_0);
- SetGpuReg(REG_OFFSET_BLDALPHA, DISPCNT_MODE_0);
- SetGpuReg(REG_OFFSET_BLDY, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
}
static const struct WindowTemplate sDiplomaWinTemplates[2] =
diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c
index d3244f4b9..7a642968b 100644
--- a/src/dodrio_berry_picking.c
+++ b/src/dodrio_berry_picking.c
@@ -3913,11 +3913,11 @@ static u32 DoDodrioMissedAnim(struct Sprite *sprite)
break;
}
- sprite->pos1.x += x;
+ sprite->x += x;
if (++sprite->sTimer >= 40)
{
sprite->sState = 0;
- sprite->pos1.x = GetDodrioXPos(0, GetNumPlayers());
+ sprite->x = GetDodrioXPos(0, GetNumPlayers());
}
}
@@ -3995,8 +3995,8 @@ static void InitStatusBarPos(void)
for (i = 0; i < NUM_STATUS_SQUARES; i++)
{
struct Sprite *sprite = &gSprites[sStatusBar->spriteIds[i]];
- sprite->pos1.x = (i * 16) + 48;
- sprite->pos1.y = -8 - (i * 8);
+ sprite->x = (i * 16) + 48;
+ sprite->y = -8 - (i * 8);
sStatusBar->entered[i] = FALSE;
}
}
@@ -4057,11 +4057,11 @@ static bool32 DoStatusBarIntro(void)
{
struct Sprite *sprite = &gSprites[sStatusBar->spriteIds[i]];
sStatusBar->yChange[i] = 2;
- if (sStatusBar->entered[i] && sprite->pos1.y == 8)
+ if (sStatusBar->entered[i] && sprite->y == 8)
continue;
animActive = TRUE;
- if (sprite->pos1.y == 8)
+ if (sprite->y == 8)
{
if (sStatusBar->entered[i])
continue;
@@ -4072,7 +4072,7 @@ static bool32 DoStatusBarIntro(void)
sStatusBar->yChange[i] = -16;
PlaySE(SE_CLICK);
}
- sprite->pos1.y += sStatusBar->yChange[i];
+ sprite->y += sStatusBar->yChange[i];
}
if (animActive)
@@ -4245,7 +4245,7 @@ static void SetBerryIconsInvisibility(bool8 invisible)
static void SetBerryYPos(u8 id, u8 y)
{
- gSprites[*sBerrySpriteIds[id]].pos1.y = y * 8;
+ gSprites[*sBerrySpriteIds[id]].y = y * 8;
}
static void SetBerryAnim(u16 id, u8 animNum)
@@ -4256,8 +4256,8 @@ static void SetBerryAnim(u16 id, u8 animNum)
// Unused
static void UnusedSetSpritePos(u8 spriteId)
{
- gSprites[spriteId].pos1.x = 20 * spriteId + 50;
- gSprites[spriteId].pos1.y = 50;
+ gSprites[spriteId].x = 20 * spriteId + 50;
+ gSprites[spriteId].y = 50;
}
// Gamefreak made a mistake there and goes out of bounds for the data array as it holds 8 elements
@@ -4279,7 +4279,7 @@ static void SpriteCB_Cloud(struct Sprite *sprite)
{
if (++sCloudSpriteIds[i][1] > moveDelays[i])
{
- sprite->pos1.x--;
+ sprite->x--;
sCloudSpriteIds[i][1] = 0;
}
}
@@ -4332,8 +4332,8 @@ static void ResetCloudPos(void)
{
struct Sprite *sprite = &gSprites[*sCloudSpriteIds[i]];
sprite->sFrozen = TRUE;
- sprite->pos1.x = sCloudStartCoords[i][0];
- sprite->pos1.y = sCloudStartCoords[i][1];
+ sprite->x = sCloudStartCoords[i][0];
+ sprite->y = sCloudStartCoords[i][1];
}
}
@@ -4500,7 +4500,7 @@ struct WinCoords
};
enum {
- COLORID_GREY,
+ COLORID_GRAY,
COLORID_RED,
COLORID_BLUE,
COLORID_GREEN, // Unused
@@ -4508,7 +4508,7 @@ enum {
static const u8 sTextColorTable[][3] =
{
- [COLORID_GREY] = {TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY},
+ [COLORID_GRAY] = {TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY},
[COLORID_RED] = {TEXT_COLOR_WHITE, TEXT_COLOR_RED, TEXT_COLOR_LIGHT_RED},
[COLORID_BLUE] = {TEXT_COLOR_WHITE, TEXT_COLOR_BLUE, TEXT_COLOR_LIGHT_BLUE},
[COLORID_GREEN] = {TEXT_COLOR_WHITE, TEXT_COLOR_GREEN, TEXT_COLOR_LIGHT_GREEN},
@@ -4638,7 +4638,7 @@ static void ShowNames(void)
window.baseBlock = 0x13;
for (i = 0; i < numPlayers; coords++, i++)
{
- colorsId = COLORID_GREY;
+ colorsId = COLORID_GRAY;
playerId = GetPlayerIdByPos(i);
left = (56 - GetStringWidth(1, GetPlayerName(playerId), -1)) / 2u;
window.tilemapLeft = coords->left;
@@ -4729,7 +4729,7 @@ static void PrintRankedScores(u8 numPlayers_)
x = 216 - GetStringWidth(1, gText_SpacePoints, 0);
for (i = 0; i < numPlayers; i++)
{
- u8 colorsId = COLORID_GREY;
+ u8 colorsId = COLORID_GRAY;
u8 playerId = playersByRanking[i];
u32 points = scoreResults[playerId].score;
@@ -4776,7 +4776,7 @@ static void ShowResults(void)
AddTextPrinterParameterized(sGfx->windowIds[1], 1, gText_10P30P50P50P, 68, 17, -1, NULL);
for (i = 0; i < numPlayers; i++)
{
- u8 colorsId = COLORID_GREY;
+ u8 colorsId = COLORID_GRAY;
if (i == GetMultiplayerId())
colorsId = COLORID_BLUE;
diff --git a/src/easy_chat.c b/src/easy_chat.c
index a27e1780e..ad583839d 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -230,14 +230,14 @@ static void DoQuizSetQuestionEasyChatScreen(void);
#define PALTAG_TRIANGLE_CURSOR 0
#define PALTAG_RECTANGLE_CURSOR 1
#define PALTAG_MISC_UI 2
-#define PALTAG_3 3
+#define PALTAG_RS_INTERVIEW_FRAME 3
#define GFXTAG_TRIANGLE_CURSOR 0
#define GFXTAG_RECTANGLE_CURSOR 1
#define GFXTAG_SCROLL_INDICATOR 2
#define GFXTAG_START_SELECT_BUTTONS 3
#define GFXTAG_MODE_WINDOW 4
-#define GFXTAG_5 5
+#define GFXTAG_RS_INTERVIEW_FRAME 5
#define GFXTAG_BUTTON_WINDOW 6
// State values for sEasyChatScreen->inputState
@@ -698,13 +698,16 @@ static const u16 sTriangleCursor_Pal[] = INCBIN_U16("graphics/easy_chat/triangle
static const u32 sTriangleCursor_Gfx[] = INCBIN_U32("graphics/easy_chat/triangle_cursor.4bpp");
static const u32 sScrollIndicator_Gfx[] = INCBIN_U32("graphics/easy_chat/scroll_indicator.4bpp");
static const u32 sStartSelectButtons_Gfx[] = INCBIN_U32("graphics/easy_chat/start_select_buttons.4bpp");
-static const u16 sUnknown_085979C0[] = INCBIN_U16("graphics/misc/interview_frame.gbapal");
-static const u32 sUnknown_085979E0[] = INCBIN_U32("graphics/misc/interview_frame.4bpp.lz");
+// In Ruby/Sapphire Easy Chat screens had a black background, and when the player & interviewer were present
+// on screen the interview_frame gfx was shown behind them.
+// In Emerald all Easy Chat screens have a filled background, so these gfx go unused
+static const u16 sRSInterviewFrame_Pal[] = INCBIN_U16("graphics/easy_chat/interview_frame.gbapal");
+static const u32 sRSInterviewFrame_Gfx[] = INCBIN_U32("graphics/easy_chat/interview_frame.4bpp.lz");
static const u16 sTextInputFrameOrange_Pal[] = INCBIN_U16("graphics/easy_chat/text_input_frame_orange.gbapal");
static const u16 sTextInputFrameGreen_Pal[] = INCBIN_U16("graphics/easy_chat/text_input_frame_green.gbapal");
static const u32 sTextInputFrame_Gfx[] = INCBIN_U32("graphics/easy_chat/text_input_frame.4bpp.lz");
-static const u16 sUnknown_08597C1C[] = INCBIN_U16("graphics/misc/8597C1C.gbapal");
-static const u16 sUnknown_08597C24[] = INCBIN_U16("graphics/misc/8597C24.gbapal");
+static const u16 sTitleText_Pal[] = INCBIN_U16("graphics/easy_chat/title_text.gbapal");
+static const u16 sText_Pal[] = INCBIN_U16("graphics/easy_chat/text.gbapal");
static const struct EasyChatPhraseFrameDimensions sPhraseFrameDimensions[] = {
[FRAMEID_GENERAL_2x2] = {
@@ -895,17 +898,17 @@ static const struct SpritePalette sSpritePalettes[] = {
.tag = PALTAG_MISC_UI, // The palette is generated from the button window but used for various parts of the UI
},
{
- .data = sUnknown_085979C0,
- .tag = PALTAG_3,
+ .data = sRSInterviewFrame_Pal,
+ .tag = PALTAG_RS_INTERVIEW_FRAME,
},
{0}
};
static const struct CompressedSpriteSheet sCompressedSpriteSheets[] = {
{
- .data = sUnknown_085979E0,
+ .data = sRSInterviewFrame_Gfx,
.size = 0x800,
- .tag = GFXTAG_5,
+ .tag = GFXTAG_RS_INTERVIEW_FRAME,
},
{
.data = gEasyChatRectangleCursor_Gfx,
@@ -1471,14 +1474,14 @@ void ShowEasyChatScreen(void)
words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words[gSpecialVar_0x8006];
displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE;
break;
- case EASY_CHAT_TYPE_UNK_8:
- words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].unkShow04.words;
+ case EASY_CHAT_TYPE_DUMMY_SHOW:
+ words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].dummy.words;
displayedPersonType = EASY_CHAT_PERSON_REPORTER_MALE;
break;
case EASY_CHAT_TYPE_TRENDY_PHRASE:
words = (u16 *)gStringVar3;
- words[0] = gSaveBlock1Ptr->easyChatPairs[0].words[0];
- words[1] = gSaveBlock1Ptr->easyChatPairs[0].words[1];
+ words[0] = gSaveBlock1Ptr->dewfordTrends[0].words[0];
+ words[1] = gSaveBlock1Ptr->dewfordTrends[0].words[1];
break;
case EASY_CHAT_TYPE_GABBY_AND_TY:
words = gSaveBlock1Ptr->gabbyAndTyData.quote;
@@ -2958,7 +2961,7 @@ static void SetSpecialEasyChatResult(void)
break;
case EASY_CHAT_TYPE_TRENDY_PHRASE:
BufferCurrentPhraseToStringVar2();
- gSpecialVar_0x8004 = IsPhraseTrendy(sEasyChatScreen->currentPhrase);
+ gSpecialVar_0x8004 = TrySetTrendyPhrase(sEasyChatScreen->currentPhrase);
break;
case EASY_CHAT_TYPE_GOOD_SAYING:
gSpecialVar_0x8004 = DidPlayerInputABerryMasterWifePhrase();
@@ -3914,10 +3917,10 @@ static void LoadEasyChatPalettes(void)
LoadPalette(gEasyChatMode_Pal, 0, 32);
LoadPalette(sTextInputFrameOrange_Pal, 1 * 16, 32);
LoadPalette(sTextInputFrameGreen_Pal, 4 * 16, 32);
- LoadPalette(sUnknown_08597C1C, 10 * 16, 8);
- LoadPalette(sUnknown_08597C24, 11 * 16, 12);
- LoadPalette(sUnknown_08597C24, 15 * 16, 12);
- LoadPalette(sUnknown_08597C24, 3 * 16, 12);
+ LoadPalette(sTitleText_Pal, 10 * 16, 8);
+ LoadPalette(sText_Pal, 11 * 16, 12);
+ LoadPalette(sText_Pal, 15 * 16, 12);
+ LoadPalette(sText_Pal, 3 * 16, 12);
}
static void PrintTitle(void)
@@ -3929,7 +3932,7 @@ static void PrintTitle(void)
xOffset = GetStringCenterAlignXOffset(1, titleText, 144);
FillWindowPixelBuffer(0, PIXEL_FILL(0));
- PrintEasyChatTextWithColors(0, 1, titleText, xOffset, 1, TEXT_SPEED_FF, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY);
+ PrintEasyChatTextWithColors(0, 1, titleText, xOffset, 1, TEXT_SPEED_FF, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY);
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
}
@@ -4327,7 +4330,7 @@ static void PrintWordSelectText(u8 scrollOffset, u8 numRows)
if (!DummyWordCheck(easyChatWord))
PrintEasyChatText(2, 1, sScreenControl->wordSelectPrintBuffer, (j * 13 + 3) * 8, y, TEXT_SPEED_FF, NULL);
else // Never reached
- PrintEasyChatTextWithColors(2, 1, sScreenControl->wordSelectPrintBuffer, (j * 13 + 3) * 8, y, TEXT_SPEED_FF, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_LIGHT_GREY);
+ PrintEasyChatTextWithColors(2, 1, sScreenControl->wordSelectPrintBuffer, (j * 13 + 3) * 8, y, TEXT_SPEED_FF, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_LIGHT_GRAY);
}
}
@@ -4632,17 +4635,17 @@ static void SpriteCB_Cursor(struct Sprite *sprite)
if (++sprite->sDelayTimer > 2)
{
sprite->sDelayTimer = 0;
- if (++sprite->pos2.x > 0)
- sprite->pos2.x = -6;
+ if (++sprite->x2 > 0)
+ sprite->x2 = -6;
}
}
}
static void SetMainCursorPos(u8 x, u8 y)
{
- sScreenControl->mainCursorSprite->pos1.x = x;
- sScreenControl->mainCursorSprite->pos1.y = y;
- sScreenControl->mainCursorSprite->pos2.x = 0;
+ sScreenControl->mainCursorSprite->x = x;
+ sScreenControl->mainCursorSprite->y = y;
+ sScreenControl->mainCursorSprite->x2 = 0;
sScreenControl->mainCursorSprite->sDelayTimer = 0;
}
@@ -4650,7 +4653,7 @@ static void StopMainCursorAnim(void)
{
sScreenControl->mainCursorSprite->sDelayTimer = 0;
sScreenControl->mainCursorSprite->sAnimateCursor = FALSE;
- sScreenControl->mainCursorSprite->pos2.x = 0;
+ sScreenControl->mainCursorSprite->x2 = 0;
}
static void StartMainCursorAnim(void)
@@ -4662,11 +4665,11 @@ static void CreateRectangleCursorSprites(void)
{
u8 spriteId = CreateSprite(&sSpriteTemplate_RectangleCursor, 0, 0, 3);
sScreenControl->rectangleCursorSpriteRight = &gSprites[spriteId];
- sScreenControl->rectangleCursorSpriteRight->pos2.x = 32;
+ sScreenControl->rectangleCursorSpriteRight->x2 = 32;
spriteId = CreateSprite(&sSpriteTemplate_RectangleCursor, 0, 0, 3);
sScreenControl->rectangleCursorSpriteLeft = &gSprites[spriteId];
- sScreenControl->rectangleCursorSpriteLeft->pos2.x = -32;
+ sScreenControl->rectangleCursorSpriteLeft->x2 = -32;
sScreenControl->rectangleCursorSpriteRight->hFlip = TRUE;
UpdateRectangleCursorPos();
@@ -4702,23 +4705,23 @@ static void SetRectangleCursorPos_GroupMode(s8 column, s8 row)
{
// In group name window
StartSpriteAnim(sScreenControl->rectangleCursorSpriteRight, RECTCURSOR_ANIM_ON_GROUP);
- sScreenControl->rectangleCursorSpriteRight->pos1.x = column * 84 + 58;
- sScreenControl->rectangleCursorSpriteRight->pos1.y = row * 16 + 96;
+ sScreenControl->rectangleCursorSpriteRight->x = column * 84 + 58;
+ sScreenControl->rectangleCursorSpriteRight->y = row * 16 + 96;
StartSpriteAnim(sScreenControl->rectangleCursorSpriteLeft, RECTCURSOR_ANIM_ON_GROUP);
- sScreenControl->rectangleCursorSpriteLeft->pos1.x = column * 84 + 58;
- sScreenControl->rectangleCursorSpriteLeft->pos1.y = row * 16 + 96;
+ sScreenControl->rectangleCursorSpriteLeft->x = column * 84 + 58;
+ sScreenControl->rectangleCursorSpriteLeft->y = row * 16 + 96;
}
else
{
// In button window
StartSpriteAnim(sScreenControl->rectangleCursorSpriteRight, RECTCURSOR_ANIM_ON_BUTTON);
- sScreenControl->rectangleCursorSpriteRight->pos1.x = 216;
- sScreenControl->rectangleCursorSpriteRight->pos1.y = row * 16 + 112;
+ sScreenControl->rectangleCursorSpriteRight->x = 216;
+ sScreenControl->rectangleCursorSpriteRight->y = row * 16 + 112;
StartSpriteAnim(sScreenControl->rectangleCursorSpriteLeft, RECTCURSOR_ANIM_ON_BUTTON);
- sScreenControl->rectangleCursorSpriteLeft->pos1.x = 216;
- sScreenControl->rectangleCursorSpriteLeft->pos1.y = row * 16 + 112;
+ sScreenControl->rectangleCursorSpriteLeft->x = 216;
+ sScreenControl->rectangleCursorSpriteLeft->y = row * 16 + 112;
}
}
@@ -4745,23 +4748,23 @@ static void SetRectangleCursorPos_AlphabetMode(s8 column, s8 row)
}
StartSpriteAnim(sScreenControl->rectangleCursorSpriteRight, anim);
- sScreenControl->rectangleCursorSpriteRight->pos1.x = x;
- sScreenControl->rectangleCursorSpriteRight->pos1.y = y;
+ sScreenControl->rectangleCursorSpriteRight->x = x;
+ sScreenControl->rectangleCursorSpriteRight->y = y;
StartSpriteAnim(sScreenControl->rectangleCursorSpriteLeft, anim);
- sScreenControl->rectangleCursorSpriteLeft->pos1.x = x;
- sScreenControl->rectangleCursorSpriteLeft->pos1.y = y;
+ sScreenControl->rectangleCursorSpriteLeft->x = x;
+ sScreenControl->rectangleCursorSpriteLeft->y = y;
}
else
{
// In button window
StartSpriteAnim(sScreenControl->rectangleCursorSpriteRight, RECTCURSOR_ANIM_ON_BUTTON);
- sScreenControl->rectangleCursorSpriteRight->pos1.x = 216;
- sScreenControl->rectangleCursorSpriteRight->pos1.y = row * 16 + 112;
+ sScreenControl->rectangleCursorSpriteRight->x = 216;
+ sScreenControl->rectangleCursorSpriteRight->y = row * 16 + 112;
StartSpriteAnim(sScreenControl->rectangleCursorSpriteLeft, RECTCURSOR_ANIM_ON_BUTTON);
- sScreenControl->rectangleCursorSpriteLeft->pos1.x = 216;
- sScreenControl->rectangleCursorSpriteLeft->pos1.y = row * 16 + 112;
+ sScreenControl->rectangleCursorSpriteLeft->x = 216;
+ sScreenControl->rectangleCursorSpriteLeft->y = row * 16 + 112;
}
}
@@ -4781,8 +4784,8 @@ static void SpriteCB_WordSelectCursor(struct Sprite *sprite)
if (++sprite->sDelayTimer > 2)
{
sprite->sDelayTimer = 0;
- if (++sprite->pos2.x > 0)
- sprite->pos2.x = -6;
+ if (++sprite->x2 > 0)
+ sprite->x2 = -6;
}
}
@@ -4801,9 +4804,9 @@ static void SetWordSelectCursorPos(u8 x, u8 y)
{
if (sScreenControl->wordSelectCursorSprite)
{
- sScreenControl->wordSelectCursorSprite->pos1.x = x;
- sScreenControl->wordSelectCursorSprite->pos1.y = y;
- sScreenControl->wordSelectCursorSprite->pos2.x = 0;
+ sScreenControl->wordSelectCursorSprite->x = x;
+ sScreenControl->wordSelectCursorSprite->y = y;
+ sScreenControl->wordSelectCursorSprite->x2 = 0;
sScreenControl->wordSelectCursorSprite->sDelayTimer = 0;
}
}
@@ -4821,7 +4824,7 @@ static void CreateSideWindowSprites(void)
{
u8 spriteId = CreateSprite(&sSpriteTemplate_ButtonWindow, 208, 128, 6);
sScreenControl->buttonWindowSprite = &gSprites[spriteId];
- sScreenControl->buttonWindowSprite->pos2.x = -64;
+ sScreenControl->buttonWindowSprite->x2 = -64;
spriteId = CreateSprite(&sSpriteTemplate_ModeWindow, 208, 80, 5);
sScreenControl->modeWindowSprite = &gSprites[spriteId];
@@ -4836,10 +4839,10 @@ static bool8 ShowSideWindow(void)
return FALSE;
case 0:
// Slide button window on
- sScreenControl->buttonWindowSprite->pos2.x += 8;
- if (sScreenControl->buttonWindowSprite->pos2.x >= 0)
+ sScreenControl->buttonWindowSprite->x2 += 8;
+ if (sScreenControl->buttonWindowSprite->x2 >= 0)
{
- sScreenControl->buttonWindowSprite->pos2.x = 0;
+ sScreenControl->buttonWindowSprite->x2 = 0;
// Set mode window anim
if (!GetInAlphabetMode())
@@ -4878,8 +4881,8 @@ static bool8 DestroySideWindowSprites(void)
sScreenControl->modeWindowState = 1;
break;
case 1:
- sScreenControl->buttonWindowSprite->pos2.x -= 8;
- if (sScreenControl->buttonWindowSprite->pos2.x <= -64)
+ sScreenControl->buttonWindowSprite->x2 -= 8;
+ if (sScreenControl->buttonWindowSprite->x2 <= -64)
{
DestroySprite(sScreenControl->modeWindowSprite);
DestroySprite(sScreenControl->buttonWindowSprite);
@@ -4944,14 +4947,14 @@ static void SetScrollIndicatorXPos(bool32 inWordSelect)
if (!inWordSelect)
{
// Keyboard (only relevant for group mode, can't scroll in alphabet mode)
- sScreenControl->scrollIndicatorUpSprite->pos1.x = 96;
- sScreenControl->scrollIndicatorDownSprite->pos1.x = 96;
+ sScreenControl->scrollIndicatorUpSprite->x = 96;
+ sScreenControl->scrollIndicatorDownSprite->x = 96;
}
else
{
// Word select
- sScreenControl->scrollIndicatorUpSprite->pos1.x = 120;
- sScreenControl->scrollIndicatorDownSprite->pos1.x = 120;
+ sScreenControl->scrollIndicatorUpSprite->x = 120;
+ sScreenControl->scrollIndicatorDownSprite->x = 120;
}
}
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 0ae0e1323..4b668881a 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -54,7 +54,7 @@ struct EggHatchData
u8 textColor[3];
};
-extern const u32 gUnknown_08331F60[]; // tilemap gameboy circle
+extern const u32 gTradePlatform_Tilemap[];
extern const u8 gText_HatchedFromEgg[];
extern const u8 gText_NicknameHatchPrompt[];
@@ -546,7 +546,7 @@ static void CB2_EggHatch_0(void)
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
LoadPalette(gTradeGba2_Pal, 0x10, 0xA0);
LoadBgTiles(1, gTradeGba_Gfx, 0x1420, 0);
- CopyToBgTilemapBuffer(1, gUnknown_08331F60, 0x1000, 0);
+ CopyToBgTilemapBuffer(1, gTradePlatform_Tilemap, 0x1000, 0);
CopyBgTilemapBufferToVram(1);
gMain.state++;
break;
@@ -584,6 +584,9 @@ static void Task_EggHatchPlayBGM(u8 taskID)
PlayBGM(MUS_EVOLUTION);
DestroyTask(taskID);
// UB: task is destroyed, yet the value is incremented
+ #ifdef UBFIX
+ return;
+ #endif
}
gTasks[taskID].data[0]++;
}
@@ -713,7 +716,7 @@ static void SpriteCB_Egg_0(struct Sprite* sprite)
else
{
sprite->data[1] = (sprite->data[1] + 20) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[1], 1);
+ sprite->x2 = Sin(sprite->data[1], 1);
if (sprite->data[0] == 15)
{
PlaySE(SE_BALL);
@@ -736,7 +739,7 @@ static void SpriteCB_Egg_1(struct Sprite* sprite)
else
{
sprite->data[1] = (sprite->data[1] + 20) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[1], 2);
+ sprite->x2 = Sin(sprite->data[1], 2);
if (sprite->data[0] == 15)
{
PlaySE(SE_BALL);
@@ -757,13 +760,13 @@ static void SpriteCB_Egg_2(struct Sprite* sprite)
sprite->callback = SpriteCB_Egg_3;
sprite->data[0] = 0;
species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES);
- gSprites[sEggHatchData->pokeSpriteID].pos2.x = 0;
- gSprites[sEggHatchData->pokeSpriteID].pos2.y = 0;
+ gSprites[sEggHatchData->pokeSpriteID].x2 = 0;
+ gSprites[sEggHatchData->pokeSpriteID].y2 = 0;
}
else
{
sprite->data[1] = (sprite->data[1] + 20) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[1], 2);
+ sprite->x2 = Sin(sprite->data[1], 2);
if (sprite->data[0] == 15)
{
PlaySE(SE_BALL);
@@ -811,12 +814,12 @@ static void SpriteCB_Egg_5(struct Sprite* sprite)
if (sprite->data[0] == 0)
{
gSprites[sEggHatchData->pokeSpriteID].invisible = FALSE;
- StartSpriteAffineAnim(&gSprites[sEggHatchData->pokeSpriteID], 1);
+ StartSpriteAffineAnim(&gSprites[sEggHatchData->pokeSpriteID], BATTLER_AFFINE_EMERGE);
}
if (sprite->data[0] == 8)
BeginNormalPaletteFade(PALETTES_ALL, -1, 0x10, 0, RGB_WHITEALPHA);
if (sprite->data[0] <= 9)
- gSprites[sEggHatchData->pokeSpriteID].pos1.y -= 1;
+ gSprites[sEggHatchData->pokeSpriteID].y -= 1;
if (sprite->data[0] > 40)
sprite->callback = SpriteCallbackDummy;
sprite->data[0]++;
@@ -827,12 +830,12 @@ static void SpriteCB_EggShard(struct Sprite* sprite)
sprite->data[4] += sprite->data[1];
sprite->data[5] += sprite->data[2];
- sprite->pos2.x = sprite->data[4] / 256;
- sprite->pos2.y = sprite->data[5] / 256;
+ sprite->x2 = sprite->data[4] / 256;
+ sprite->y2 = sprite->data[5] / 256;
sprite->data[2] += sprite->data[3];
- if (sprite->pos1.y + sprite->pos2.y > sprite->pos1.y + 20 && sprite->data[2] > 0)
+ if (sprite->y + sprite->y2 > sprite->y + 20 && sprite->data[2] > 0)
DestroySprite(sprite);
}
diff --git a/src/ereader_helpers.c b/src/ereader_helpers.c
index 5edfc120c..eef2a15d8 100755
--- a/src/ereader_helpers.c
+++ b/src/ereader_helpers.c
@@ -14,34 +14,64 @@
#include "constants/trainers.h"
#include "constants/moves.h"
#include "constants/items.h"
+#include "constants/trainer_hill.h"
+
+enum {
+ EREADER_XFR_STATE_INIT = 0,
+ EREADER_XFR_STATE_HANDSHAKE,
+ EREADER_XFR_STATE_START,
+ EREADER_XFR_STATE_TRANSFER,
+ EREADER_XFR_STATE_TRANSFER_DONE,
+ EREADER_XFR_STATE_CHECKSUM,
+ EREADER_XFR_STATE_DONE
+};
+
+#define EREADER_XFER_EXE 1
+#define EREADER_XFER_CHK 2
+#define EREADER_XFER_SHIFT 0
+#define EREADER_XFER_MASK 3
+
+#define EREADER_CANCEL_TIMEOUT 1
+#define EREADER_CANCEL_KEY 2
+#define EREADER_CANCEL_MASK 0xC
+#define EREADER_CANCEL_SHIFT 2
-struct Unknown030012C8
+#define EREADER_CHECKSUM_OK 1
+#define EREADER_CHECKSUM_ERR 2
+#define EREADER_CHECKSUM_MASK 0x30
+#define EREADER_CHECKSUM_SHIFT 4
+
+struct SendRecvMgr
{
- u8 unk0[8];
- u32 *unk8;
- int unkC;
- int unk10;
- int unk14;
+ bool8 isParent;
+ u8 state; // EREADER_XFR_STATE_*
+ u8 xferState; // EREADER_XFER_*
+ u8 checksumResult; // EREADER_CHECKSUM_*
+ u8 cancellationReason; // EREADER_CANCEL_*
+ u32 *data; // Payload source or destination
+ int cursor; // Index of the next word
+ int size; // Last word index
+ int checksum;
};
-static void sub_81D4170(void);
-static u16 sub_81D3EE8(u8);
-static void sub_81D413C(void);
-static void sub_81D414C(void);
-static void sub_81D3F1C(u32, u32*, u32*);
-static void sub_81D3F68(void);
-
-static struct Unknown030012C8 gUnknown_030012C8;
-static u16 gUnknown_030012E0;
-static u16 gUnknown_030012E2;
-static u16 gUnknown_030012E4;
-static u16 gUnknown_030012E6;
-static u32 gUnknown_030012E8;
-static u16 gUnknown_030012EC;
-static u16 gUnknown_030012EE;
-static u16 gUnknown_030012F0;
-static u16 gUnknown_030012F2;
-static u16 gUnknown_030012F4;
+static void GetKeyInput(void);
+static u16 DetermineSendRecvState(u8);
+static void EnableSio(void);
+static void DisableTm3(void);
+static void SetUpTransferManager(size_t, const void *, void *);
+static void StartTm3(void);
+
+static struct SendRecvMgr sSendRecvMgr;
+static u16 sJoyNewOrRepeated;
+static u16 sJoyNew;
+static u16 sSendRecvStatus;
+static u16 sCounter1;
+static u32 sCounter2;
+static u16 sSavedIme;
+static u16 sSavedIe;
+static u16 sSavedTm3Cnt;
+static u16 sSavedSioCnt;
+static u16 sSavedRCnt;
static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = {
[0] = {
@@ -390,217 +420,217 @@ static const struct TrainerHillTrainer sTrainerHillTrainerTemplates_JP[] = {
},
};
-static u8 sub_81D38D4(void)
+static u8 GetTrainerHillUnkVal(void)
{
return (gSaveBlock1Ptr->trainerHill.unused + 1) % 256;
}
-static bool32 Struct_EReaderTrainerHillTrainer_ValidateChecksum(struct EReaderTrainerHillTrainer *arg0)
+static bool32 ValidateTrainerChecksum(struct EReaderTrainerHillTrainer * hillTrainer)
{
- int checksum = CalcByteArraySum((u8 *)arg0, 0x270);
- if (checksum != arg0->checksum)
+ int checksum = CalcByteArraySum((u8 *)hillTrainer, offsetof(typeof(*hillTrainer), checksum));
+ if (checksum != hillTrainer->checksum)
return FALSE;
return TRUE;
}
-bool8 EReader_IsReceivedDataValid(struct EReaderTrainerHillSet *buffer)
+bool8 ValidateTrainerHillData(struct EReaderTrainerHillSet * hillSet)
{
u32 i;
u32 checksum;
- int var0 = buffer->count;
- if (var0 < 1 || var0 > 8)
+ int numTrainers = hillSet->numTrainers;
+
+ // Validate number of trainers
+ if (numTrainers < 1 || numTrainers > NUM_TRAINER_HILL_TRAINERS)
return FALSE;
- for (i = 0; i < var0; i++)
+ // Validate trainers
+ for (i = 0; i < numTrainers; i++)
{
- if (!Struct_EReaderTrainerHillTrainer_ValidateChecksum(&buffer->unk_8[i]))
+ if (!ValidateTrainerChecksum(&hillSet->trainers[i]))
return FALSE;
}
- checksum = CalcByteArraySum((u8 *)buffer->unk_8, var0 * sizeof(struct EReaderTrainerHillTrainer));
- if (checksum != buffer->checksum)
+ // Validate checksum
+ checksum = CalcByteArraySum((u8 *)hillSet->trainers, numTrainers * sizeof(struct EReaderTrainerHillTrainer));
+ if (checksum != hillSet->checksum)
return FALSE;
return TRUE;
}
-static bool32 TrainerHill_VerifyChecksum(struct EReaderTrainerHillSet *buffer)
+static bool32 ValidateTrainerHillChecksum(struct EReaderTrainerHillSet *hillSet)
{
u32 checksum;
- int var0 = buffer->count;
- if (var0 < 1 || var0 > 8)
+ int numTrainers = hillSet->numTrainers;
+ if (numTrainers < 1 || numTrainers > NUM_TRAINER_HILL_TRAINERS)
return FALSE;
- checksum = CalcByteArraySum((u8 *)buffer->unk_8, sizeof(struct EReaderTrainerHillSet) - offsetof(struct EReaderTrainerHillSet, unk_8));
- if (checksum != buffer->checksum)
+ checksum = CalcByteArraySum((u8 *)hillSet->trainers, sizeof(struct EReaderTrainerHillSet) - offsetof(struct EReaderTrainerHillSet, trainers));
+ if (checksum != hillSet->checksum)
return FALSE;
return TRUE;
}
-static bool32 TryWriteTrainerHill_r(struct EReaderTrainerHillSet *ttdata, struct TrHillTag *buffer2)
+static bool32 TryWriteTrainerHill_Internal(struct EReaderTrainerHillSet * hillSet, struct TrHillTag * hillTag)
{
int i;
- AGB_ASSERT_EX(ttdata->dummy == 0, "cereader_tool.c", 450);
- AGB_ASSERT_EX(ttdata->id == 0, "cereader_tool.c", 452);
+ AGB_ASSERT_EX(hillSet->dummy == 0, "cereader_tool.c", 450);
+ AGB_ASSERT_EX(hillSet->id == 0, "cereader_tool.c", 452);
- memset(buffer2, 0, 0x1000);
- buffer2->numTrainers = ttdata->count;
- buffer2->unused1 = sub_81D38D4();
- buffer2->numFloors = (ttdata->count + 1) / 2;
+ memset(hillTag, 0, SECTOR_SIZE);
+ hillTag->numTrainers = hillSet->numTrainers;
+ hillTag->unused1 = GetTrainerHillUnkVal();
+ hillTag->numFloors = (hillSet->numTrainers + 1) / TRAINER_HILL_TRAINERS_PER_FLOOR;
- for (i = 0; i < ttdata->count; i++)
+ for (i = 0; i < hillSet->numTrainers; i++)
{
if (!(i & 1))
{
- buffer2->floors[i / 2].trainerNum1 = ttdata->unk_8[i].unk0;
- buffer2->floors[i / 2].display = ttdata->unk_8[i].unk14C;
- buffer2->floors[i / 2].trainers[0] = ttdata->unk_8[i].unk4;
+ hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainerNum1 = hillSet->trainers[i].trainerNum;
+ hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].display = hillSet->trainers[i].display;
+ hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainers[0] = hillSet->trainers[i].trainer;
}
else
{
- buffer2->floors[i / 2].trainerNum2 = ttdata->unk_8[i].unk0;
- buffer2->floors[i / 2].trainers[1] = ttdata->unk_8[i].unk4;
+ hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainerNum2 = hillSet->trainers[i].trainerNum;
+ hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainers[1] = hillSet->trainers[i].trainer;
}
}
if (i & 1)
{
- buffer2->floors[i / 2].trainers[1] = sTrainerHillTrainerTemplates_JP[i / 2];
+ hillTag->floors[i / TRAINER_HILL_TRAINERS_PER_FLOOR].trainers[1] = sTrainerHillTrainerTemplates_JP[i / TRAINER_HILL_TRAINERS_PER_FLOOR];
}
- buffer2->checksum = CalcByteArraySum((u8 *)buffer2->floors, 4 * sizeof(struct TrHillFloor));
- if (TryWriteSpecialSaveSection(SECTOR_ID_TRAINER_HILL, (u8 *)buffer2) != SAVE_STATUS_OK)
+ hillTag->checksum = CalcByteArraySum((u8 *)hillTag->floors, NUM_TRAINER_HILL_FLOORS * sizeof(struct TrHillFloor));
+ if (TryWriteSpecialSaveSection(SECTOR_ID_TRAINER_HILL, (u8 *)hillTag) != SAVE_STATUS_OK)
return FALSE;
return TRUE;
}
-bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet *arg0)
+bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet * hillSet)
{
- void *var0 = AllocZeroed(0x1000);
- bool32 result = TryWriteTrainerHill_r(arg0, var0);
- Free(var0);
+ void *buffer = AllocZeroed(SECTOR_SIZE);
+ bool32 result = TryWriteTrainerHill_Internal(hillSet, buffer);
+ Free(buffer);
return result;
}
-static bool32 TryReadTrainerHill_r(struct EReaderTrainerHillSet *dst, u8 *buffer)
+static bool32 TryReadTrainerHill_Internal(struct EReaderTrainerHillSet * dest, u8 * buffer)
{
if (TryReadSpecialSaveSection(SECTOR_ID_TRAINER_HILL, buffer) != SAVE_STATUS_OK)
return FALSE;
- memcpy(dst, buffer, sizeof(struct EReaderTrainerHillSet));
- if (!TrainerHill_VerifyChecksum(dst))
+ memcpy(dest, buffer, sizeof(struct EReaderTrainerHillSet));
+ if (!ValidateTrainerHillChecksum(dest))
return FALSE;
return TRUE;
}
-static bool32 TryReadTrainerHill(struct EReaderTrainerHillSet *arg0)
+static bool32 TryReadTrainerHill(struct EReaderTrainerHillSet * hillSet)
{
- u8 *var0 = AllocZeroed(0x1000);
- bool32 result = TryReadTrainerHill_r(arg0, var0);
- Free(var0);
+ u8 *buffer = AllocZeroed(SECTOR_SIZE);
+ bool32 result = TryReadTrainerHill_Internal(hillSet, buffer);
+ Free(buffer);
return result;
}
bool32 ReadTrainerHillAndValidate(void)
{
- struct EReaderTrainerHillSet *var0 = AllocZeroed(0x1000);
- bool32 result = TryReadTrainerHill(var0);
- Free(var0);
+ struct EReaderTrainerHillSet *hillSet = AllocZeroed(SECTOR_SIZE);
+ bool32 result = TryReadTrainerHill(hillSet);
+ Free(hillSet);
return result;
}
-int EReader_Send(int arg0, u32 *arg1)
+int EReader_Send(int size, const void * src)
{
int result;
- u16 var0;
- int var1;
+ int sendStatus;
EReaderHelper_SaveRegsState();
while (1)
{
- sub_81D4170();
- if (gUnknown_030012E2 & 2)
+ GetKeyInput();
+ if (sJoyNew & B_BUTTON)
gShouldAdvanceLinkState = 2;
- var1 = EReaderHandleTransfer(1, arg0, arg1, NULL);
- gUnknown_030012E4 = var1;
- if ((gUnknown_030012E4 & 0x13) == 0x10)
+ sendStatus = EReaderHandleTransfer(1, size, src, NULL);
+ sSendRecvStatus = sendStatus;
+ if ((sSendRecvStatus & 0x13) == 0x10)
{
result = 0;
break;
}
-
- if (gUnknown_030012E4 & 0x8)
+ else if (sSendRecvStatus & 0x8)
{
result = 1;
break;
}
-
- var0 = gUnknown_030012E4 & 0x4;
- if (var0)
+ else if (sSendRecvStatus & 0x4)
{
result = 2;
break;
}
-
- gShouldAdvanceLinkState = var0;
- VBlankIntrWait();
+ else
+ {
+ gShouldAdvanceLinkState = 0;
+ VBlankIntrWait();
+ }
}
- CpuFill32(0, &gUnknown_030012C8, sizeof(struct Unknown030012C8));
+ CpuFill32(0, &sSendRecvMgr, sizeof(sSendRecvMgr));
EReaderHelper_RestoreRegsState();
return result;
}
-int EReader_Recv(u32 *arg0)
+int EReader_Recv(void * dest)
{
int result;
- u16 var0;
- int var1;
+ int recvStatus;
EReaderHelper_SaveRegsState();
while (1)
{
- sub_81D4170();
- if (gUnknown_030012E2 & 2)
+ GetKeyInput();
+ if (sJoyNew & B_BUTTON)
gShouldAdvanceLinkState = 2;
- var1 = EReaderHandleTransfer(0, 0, NULL, arg0);
- gUnknown_030012E4 = var1;
- if ((gUnknown_030012E4 & 0x13) == 0x10)
+ recvStatus = EReaderHandleTransfer(0, 0, NULL, dest);
+ sSendRecvStatus = recvStatus;
+ if ((sSendRecvStatus & 0x13) == 0x10)
{
result = 0;
break;
}
-
- if (gUnknown_030012E4 & 0x8)
+ else if (sSendRecvStatus & 0x8)
{
result = 1;
break;
}
-
- var0 = gUnknown_030012E4 & 0x4;
- if (var0)
+ else if (sSendRecvStatus & 0x4)
{
result = 2;
break;
}
-
- gShouldAdvanceLinkState = var0;
- VBlankIntrWait();
+ else
+ {
+ gShouldAdvanceLinkState = 0;
+ VBlankIntrWait();
+ }
}
- CpuFill32(0, &gUnknown_030012C8, sizeof(struct Unknown030012C8));
+ CpuFill32(0, &sSendRecvMgr, sizeof(sSendRecvMgr));
EReaderHelper_RestoreRegsState();
return result;
}
-static void sub_81D3C7C(void)
+static void CloseSerial(void)
{
REG_IME = 0;
REG_IE &= ~(INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL);
@@ -610,7 +640,7 @@ static void sub_81D3C7C(void)
REG_IF = INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL;
}
-static void sub_81D3CBC(void)
+static void OpenSerialMulti(void)
{
REG_IME = 0;
REG_IE &= ~(INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL);
@@ -622,273 +652,271 @@ static void sub_81D3CBC(void)
REG_IE |= INTR_FLAG_SERIAL;
REG_IME = 1;
- if (!gUnknown_030012C8.unk0[1])
- CpuFill32(0, &gUnknown_030012C8, sizeof(struct Unknown030012C8));
+ if (sSendRecvMgr.state == 0)
+ CpuFill32(0, &sSendRecvMgr, sizeof(sSendRecvMgr));
}
-static void sub_81D3D34(void)
+static void OpenSerial32(void)
{
REG_RCNT = 0;
REG_SIOCNT = SIO_32BIT_MODE | SIO_INTR_ENABLE;
REG_SIOCNT |= SIO_MULTI_SD;
gShouldAdvanceLinkState = 0;
- gUnknown_030012E6 = 0;
- gUnknown_030012E8 = 0;
+ sCounter1 = 0;
+ sCounter2 = 0;
}
-int EReaderHandleTransfer(u8 arg0, u32 arg1, u32 *arg2, u32 *arg3)
+int EReaderHandleTransfer(u8 mode, size_t size, const void * data, void * recvBuffer)
{
- switch (gUnknown_030012C8.unk0[1])
+ switch (sSendRecvMgr.state)
{
- case 0:
- sub_81D3CBC();
- gUnknown_030012C8.unk0[2] = 1;
- gUnknown_030012C8.unk0[1] = 1;
+ case EREADER_XFR_STATE_INIT:
+ OpenSerialMulti();
+ sSendRecvMgr.xferState = EREADER_XFER_EXE;
+ sSendRecvMgr.state = EREADER_XFR_STATE_HANDSHAKE;
break;
- case 1:
- if (sub_81D3EE8(arg0))
- sub_81D413C();
+ case EREADER_XFR_STATE_HANDSHAKE:
+ if (DetermineSendRecvState(mode))
+ EnableSio();
if (gShouldAdvanceLinkState == 2)
{
- gUnknown_030012C8.unk0[4] = 2;
- gUnknown_030012C8.unk0[1] = 6;
+ sSendRecvMgr.cancellationReason = EREADER_CANCEL_KEY;
+ sSendRecvMgr.state = EREADER_XFR_STATE_DONE;
}
break;
- case 2:
- sub_81D3D34();
- sub_81D3F1C(arg1, arg2, arg3);
- gUnknown_030012C8.unk0[1] = 3;
+ case EREADER_XFR_STATE_START:
+ OpenSerial32();
+ SetUpTransferManager(size, data, recvBuffer);
+ sSendRecvMgr.state = EREADER_XFR_STATE_TRANSFER;
// fall through
- case 3:
+ case EREADER_XFR_STATE_TRANSFER:
if (gShouldAdvanceLinkState == 2)
{
- gUnknown_030012C8.unk0[4] = 2;
- gUnknown_030012C8.unk0[1] = 6;
+ sSendRecvMgr.cancellationReason = EREADER_CANCEL_KEY;
+ sSendRecvMgr.state = EREADER_XFR_STATE_DONE;
}
else
{
- gUnknown_030012E6++;
- gUnknown_030012E8++;
- if (!gUnknown_030012C8.unk0[0] && gUnknown_030012E8 > 60)
+ sCounter1++;
+ sCounter2++;
+ if (!sSendRecvMgr.isParent && sCounter2 > 60)
{
- gUnknown_030012C8.unk0[4] = 1;
- gUnknown_030012C8.unk0[1] = 6;
+ sSendRecvMgr.cancellationReason = EREADER_CANCEL_TIMEOUT;
+ sSendRecvMgr.state = EREADER_XFR_STATE_DONE;
}
- if (gUnknown_030012C8.unk0[2] != 2)
+ if (sSendRecvMgr.xferState != EREADER_XFER_CHK)
{
- if (gUnknown_030012C8.unk0[0] && gUnknown_030012E6 > 2)
+ if (sSendRecvMgr.isParent && sCounter1 > 2)
{
- sub_81D413C();
- gUnknown_030012C8.unk0[2] = 2;
+ EnableSio();
+ sSendRecvMgr.xferState = EREADER_XFER_CHK;
}
else
{
- sub_81D413C();
- gUnknown_030012C8.unk0[2] = 2;
+ EnableSio();
+ sSendRecvMgr.xferState = EREADER_XFER_CHK;
}
}
}
break;
- case 4:
- sub_81D3CBC();
- gUnknown_030012C8.unk0[1] = 5;
+ case EREADER_XFR_STATE_TRANSFER_DONE:
+ OpenSerialMulti();
+ sSendRecvMgr.state = EREADER_XFR_STATE_CHECKSUM;
break;
- case 5:
- if (gUnknown_030012C8.unk0[0] == 1 && gUnknown_030012E6 > 2)
- sub_81D413C();
+ case EREADER_XFR_STATE_CHECKSUM:
+ if (sSendRecvMgr.isParent == TRUE && sCounter1 > 2)
+ EnableSio();
- if (++gUnknown_030012E6 > 60)
+ if (++sCounter1 > 60)
{
- gUnknown_030012C8.unk0[4] = 1;
- gUnknown_030012C8.unk0[1] = 6;
+ sSendRecvMgr.cancellationReason = EREADER_CANCEL_TIMEOUT;
+ sSendRecvMgr.state = EREADER_XFR_STATE_DONE;
}
break;
- case 6:
- if (gUnknown_030012C8.unk0[2])
+ case EREADER_XFR_STATE_DONE:
+ if (sSendRecvMgr.xferState)
{
- sub_81D3C7C();
- gUnknown_030012C8.unk0[2] = 0;
+ CloseSerial();
+ sSendRecvMgr.xferState = 0;
}
break;
}
- return gUnknown_030012C8.unk0[2] | (gUnknown_030012C8.unk0[4] << 2) | (gUnknown_030012C8.unk0[3] << 4);
+ return (sSendRecvMgr.xferState << EREADER_XFER_SHIFT)
+ | (sSendRecvMgr.cancellationReason << EREADER_CANCEL_SHIFT)
+ | (sSendRecvMgr.checksumResult << EREADER_CHECKSUM_SHIFT);
}
-static u16 sub_81D3EE8(u8 arg0)
+static u16 DetermineSendRecvState(u8 mode)
{
- u16 terminal = (*(vu32 *)REG_ADDR_SIOCNT) & (SIO_MULTI_SI | SIO_MULTI_SD);
- if (terminal == SIO_MULTI_SD && arg0)
- {
- gUnknown_030012C8.unk0[0] = 1;
- return 1;
- }
+ bool16 resp;
+ if ((*(vu32 *)REG_ADDR_SIOCNT & (SIO_MULTI_SI | SIO_MULTI_SD)) == SIO_MULTI_SD && mode)
+ resp = sSendRecvMgr.isParent = TRUE;
else
- {
- gUnknown_030012C8.unk0[0] = 0;
- return 0;
- }
+ resp = sSendRecvMgr.isParent = FALSE;
+ return resp;
}
-static void sub_81D3F1C(u32 arg0, u32 *arg1, u32 *arg2)
+static void SetUpTransferManager(size_t size, const void * data, void * recvBuffer)
{
- if (gUnknown_030012C8.unk0[0])
+ if (sSendRecvMgr.isParent)
{
REG_SIOCNT |= SIO_38400_BPS;
- gUnknown_030012C8.unk8 = arg1;
- REG_SIODATA32 = arg0;
- gUnknown_030012C8.unk10 = arg0 / 4 + 1;
- sub_81D3F68();
+ sSendRecvMgr.data = (void *)data;
+ REG_SIODATA32 = size;
+ sSendRecvMgr.size = size / 4 + 1;
+ StartTm3();
}
else
{
REG_SIOCNT = REG_SIOCNT;
- gUnknown_030012C8.unk8 = arg2;
+ sSendRecvMgr.data = recvBuffer;
}
}
-static void sub_81D3F68(void)
+static void StartTm3(void)
{
- REG_TM3CNT_L = 0xFDA7;
+ REG_TM3CNT_L = -601;
REG_TM3CNT_H = TIMER_INTR_ENABLE;
REG_IME = 0;
REG_IE |= INTR_FLAG_TIMER3;
REG_IME = 1;
}
-void sub_81D3F9C(void)
+void EReaderHelper_Timer3Callback(void)
{
- sub_81D414C();
- sub_81D413C();
+ DisableTm3();
+ EnableSio();
}
-void sub_81D3FAC(void)
+void EReaderHelper_SerialCallback(void)
{
- u16 i, playerCount, k;
- u32 value;
- u16 var0;
- u16 recvBuffer[4];
+ u16 i, cnt1, cnt2;
+ u32 recv32;
+ u16 recv[4];
- switch (gUnknown_030012C8.unk0[1])
+ switch (sSendRecvMgr.state)
{
- case 1:
+ case EREADER_XFR_STATE_HANDSHAKE:
REG_SIOMLT_SEND = 0xCCD0; // Handshake id
- *(u64 *)recvBuffer = REG_SIOMLT_RECV;
- for (i = 0, playerCount = 0, k = 0; i < 4; i++)
+ *(u64 *)recv = REG_SIOMLT_RECV;
+ for (i = 0, cnt1 = 0, cnt2 = 0; i < 4; i++)
{
- if (recvBuffer[i] == 0xCCD0)
- playerCount++;
- else if (recvBuffer[i] != 0xFFFF)
- k++;
+ if (recv[i] == 0xCCD0)
+ cnt1++;
+ else if (recv[i] != 0xFFFF)
+ cnt2++;
}
- if (playerCount == 2 && k == 0)
- gUnknown_030012C8.unk0[1] = 2;
+ if (cnt1 == 2 && cnt2 == 0)
+ sSendRecvMgr.state = 2;
break;
- case 3:
- value = REG_SIODATA32;
- if (!gUnknown_030012C8.unkC && !gUnknown_030012C8.unk0[0])
- gUnknown_030012C8.unk10 = value / 4 + 1;
+ case EREADER_XFR_STATE_TRANSFER:
+ recv32 = REG_SIODATA32;
+ // The first value sent by the EReader is the payload size
+ if (!sSendRecvMgr.cursor && !sSendRecvMgr.isParent)
+ sSendRecvMgr.size = recv32 / 4 + 1;
- if (gUnknown_030012C8.unk0[0] == 1)
+ if (sSendRecvMgr.isParent == TRUE)
{
- if (gUnknown_030012C8.unkC < gUnknown_030012C8.unk10)
+ // Send mode
+ if (sSendRecvMgr.cursor < sSendRecvMgr.size)
{
- REG_SIODATA32 = gUnknown_030012C8.unk8[gUnknown_030012C8.unkC];
- gUnknown_030012C8.unk14 += gUnknown_030012C8.unk8[gUnknown_030012C8.unkC];
+ REG_SIODATA32 = sSendRecvMgr.data[sSendRecvMgr.cursor];
+ sSendRecvMgr.checksum += sSendRecvMgr.data[sSendRecvMgr.cursor];
}
else
{
- REG_SIODATA32 = gUnknown_030012C8.unk14;
+ REG_SIODATA32 = sSendRecvMgr.checksum;
}
}
else
{
- if (gUnknown_030012C8.unkC > 0 && gUnknown_030012C8.unkC < gUnknown_030012C8.unk10 + 1)
+ // Receive mode
+ if (sSendRecvMgr.cursor > 0 && sSendRecvMgr.cursor < sSendRecvMgr.size + 1)
{
- gUnknown_030012C8.unk8[gUnknown_030012C8.unkC - 1] = value;
- gUnknown_030012C8.unk14 += value;
+ sSendRecvMgr.data[sSendRecvMgr.cursor - 1] = recv32;
+ sSendRecvMgr.checksum += recv32;
}
- else if (gUnknown_030012C8.unkC)
+ else if (sSendRecvMgr.cursor)
{
- if (gUnknown_030012C8.unk14 == value)
- gUnknown_030012C8.unk0[3] = 1;
+ if (sSendRecvMgr.checksum == recv32)
+ sSendRecvMgr.checksumResult = EREADER_CHECKSUM_OK;
else
- gUnknown_030012C8.unk0[3] = 2;
+ sSendRecvMgr.checksumResult = EREADER_CHECKSUM_ERR;
}
- gUnknown_030012E8 = 0;
+ sCounter2 = 0;
}
- if (++gUnknown_030012C8.unkC < gUnknown_030012C8.unk10 + 2)
+ if (++sSendRecvMgr.cursor < sSendRecvMgr.size + 2)
{
- if (gUnknown_030012C8.unk0[0])
+ if (sSendRecvMgr.isParent)
REG_TM3CNT_H |= TIMER_ENABLE;
else
- sub_81D413C();
+ EnableSio();
}
else
{
- gUnknown_030012C8.unk0[1] = 4;
- gUnknown_030012E6 = 0;
+ sSendRecvMgr.state = EREADER_XFR_STATE_TRANSFER_DONE;
+ sCounter1 = 0;
}
break;
- case 5:
- if (!gUnknown_030012C8.unk0[0])
- REG_SIOMLT_SEND = gUnknown_030012C8.unk0[3];
+ case EREADER_XFR_STATE_CHECKSUM:
+ if (!sSendRecvMgr.isParent)
+ REG_SIOMLT_SEND = sSendRecvMgr.checksumResult;
- *(u64 *)recvBuffer = REG_SIOMLT_RECV;
- var0 = recvBuffer[1] - 1;
- if (var0 < 2)
+ *(vu64 *)recv = REG_SIOMLT_RECV;
+ if (recv[1] == EREADER_CHECKSUM_OK || recv[1] == EREADER_CHECKSUM_ERR)
{
- if (gUnknown_030012C8.unk0[0] == 1)
- gUnknown_030012C8.unk0[3] = recvBuffer[1];
+ if (sSendRecvMgr.isParent == TRUE)
+ sSendRecvMgr.checksumResult = recv[1]; // EReader has (in)validated the payload
- gUnknown_030012C8.unk0[1] = 6;
+ sSendRecvMgr.state = EREADER_XFR_STATE_DONE;
}
break;
}
}
-static void sub_81D413C(void)
+static void EnableSio(void)
{
REG_SIOCNT |= SIO_ENABLE;
}
-static void sub_81D414C(void)
+static void DisableTm3(void)
{
REG_TM3CNT_H &= ~TIMER_ENABLE;
REG_TM3CNT_L = 0xFDA7;
}
-static void sub_81D4170(void)
+static void GetKeyInput(void)
{
- int keysMask = REG_KEYINPUT ^ KEYS_MASK;
- gUnknown_030012E2 = keysMask & ~gUnknown_030012E0;
- gUnknown_030012E0 = keysMask;
+ int rawKeys = REG_KEYINPUT ^ KEYS_MASK;
+ sJoyNew = rawKeys & ~sJoyNewOrRepeated;
+ sJoyNewOrRepeated = rawKeys;
}
void EReaderHelper_SaveRegsState(void)
{
- gUnknown_030012EC = REG_IME;
- gUnknown_030012EE = REG_IE;
- gUnknown_030012F0 = REG_TM3CNT_H;
- gUnknown_030012F2 = REG_SIOCNT;
- gUnknown_030012F4 = REG_RCNT;
+ sSavedIme = REG_IME;
+ sSavedIe = REG_IE;
+ sSavedTm3Cnt = REG_TM3CNT_H;
+ sSavedSioCnt = REG_SIOCNT;
+ sSavedRCnt = REG_RCNT;
}
void EReaderHelper_RestoreRegsState(void)
{
- REG_IME = gUnknown_030012EC;
- REG_IE = gUnknown_030012EE;
- REG_TM3CNT_H = gUnknown_030012F0;
- REG_SIOCNT = gUnknown_030012F2;
- REG_RCNT = gUnknown_030012F4;
+ REG_IME = sSavedIme;
+ REG_IE = sSavedIe;
+ REG_TM3CNT_H = sSavedTm3Cnt;
+ REG_SIOCNT = sSavedSioCnt;
+ REG_RCNT = sSavedRCnt;
}
-void sub_81D4238(void)
+void EReaderHelper_ClearSendRecvMgr(void)
{
- CpuFill32(0, &gUnknown_030012C8, sizeof(struct Unknown030012C8));
+ CpuFill32(0, &sSendRecvMgr, sizeof(sSendRecvMgr));
}
diff --git a/src/ereader_screen.c b/src/ereader_screen.c
index d27605c1d..438c4bec9 100755
--- a/src/ereader_screen.c
+++ b/src/ereader_screen.c
@@ -47,10 +47,10 @@ static void sub_81D4D50(struct Unk03006370 *arg0, int arg1, u32 *arg2)
{
volatile u16 backupIME = REG_IME;
REG_IME = 0;
- gIntrTable[1] = sub_81D3FAC;
- gIntrTable[2] = sub_81D3F9C;
+ gIntrTable[1] = EReaderHelper_SerialCallback;
+ gIntrTable[2] = EReaderHelper_Timer3Callback;
EReaderHelper_SaveRegsState();
- sub_81D4238();
+ EReaderHelper_ClearSendRecvMgr();
REG_IE |= INTR_FLAG_VCOUNT;
REG_IME = backupIME;
arg0->unk0 = 0;
@@ -62,7 +62,7 @@ static void sub_81D4DB8(struct Unk03006370 *arg0)
{
volatile u16 backupIME = REG_IME;
REG_IME = 0;
- sub_81D4238();
+ EReaderHelper_ClearSendRecvMgr();
EReaderHelper_RestoreRegsState();
RestoreSerialTimer3IntrHandlers();
REG_IME = backupIME;
@@ -401,7 +401,7 @@ static void sub_81D5084(u8 taskId)
}
break;
case 15:
- data->unkE = EReader_IsReceivedDataValid((struct EReaderTrainerHillSet *)gDecompressionBuffer);
+ data->unkE = ValidateTrainerHillData((struct EReaderTrainerHillSet *)gDecompressionBuffer);
SetCloseLinkCallbackAndType(data->unkE);
data->unk8 = 16;
break;
diff --git a/src/event_object_lock.c b/src/event_object_lock.c
index dec2d7906..179c72813 100644
--- a/src/event_object_lock.c
+++ b/src/event_object_lock.c
@@ -40,7 +40,7 @@ bool8 IsFreezePlayerFinished(void)
}
-void ScriptFreezeObjectEvents(void)
+void FreezeObjects_WaitForPlayer(void)
{
FreezeObjectEvents();
CreateTask(Task_FreezePlayer, 80);
@@ -82,7 +82,9 @@ bool8 IsFreezeSelectedObjectAndPlayerFinished(void)
}
}
-void LockSelectedObjectEvent(void)
+// Freeze all objects immediately except the selected object and the player.
+// The selected object and player are frozen once their movement is finished.
+void FreezeObjects_WaitForPlayerAndSelected(void)
{
u8 taskId;
FreezeObjectEventsExceptOne(gSelectedObjectEvent);
@@ -144,6 +146,8 @@ static void Task_FreezeObjectAndPlayer(u8 taskId)
DestroyTask(taskId);
}
+// Freeze all objects immediately except the player and the approaching trainers.
+// The approaching trainers and player are frozen once their movement is finished
void FreezeForApproachingTrainers(void)
{
u8 trainerObjectId1, trainerObjectId2, taskId;
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index 1a7d08db2..36f7f0a3e 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -32,31 +32,39 @@
// this file was known as evobjmv.c in Game Freak's original source
+// Sprite data used throughout
+#define sObjEventId data[0]
+#define sTypeFuncId data[1] // Index into corresponding gMovementTypeFuncs_* table
+#define sActionFuncId data[2] // Index into corresponding gMovementActionFuncs_* table
+#define sDirection data[3]
+#define sSpeed data[4]
+
+
#define movement_type_def(setup, table) \
static u8 setup##_callback(struct ObjectEvent *, struct Sprite *);\
void setup(struct Sprite *sprite)\
{\
- UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, setup##_callback);\
+ UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->sObjEventId], sprite, setup##_callback);\
}\
static u8 setup##_callback(struct ObjectEvent *objectEvent, struct Sprite *sprite)\
{\
- return table[sprite->data[1]](objectEvent, sprite);\
+ return table[sprite->sTypeFuncId](objectEvent, sprite);\
}
#define movement_type_empty_callback(setup) \
static u8 setup##_callback(struct ObjectEvent *, struct Sprite *);\
void setup(struct Sprite *sprite)\
{\
- UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, setup##_callback);\
+ UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->sObjEventId], sprite, setup##_callback);\
}\
static u8 setup##_callback(struct ObjectEvent *objectEvent, struct Sprite *sprite)\
{\
return 0;\
}
-EWRAM_DATA u8 sCurrentReflectionType = 0;
-EWRAM_DATA u16 sCurrentSpecialObjectPaletteTag = 0;
-EWRAM_DATA struct LockedAnimObjectEvents *gLockedAnimObjectEvents = {0};
+static EWRAM_DATA u8 sCurrentReflectionType = 0;
+static EWRAM_DATA u16 sCurrentSpecialObjectPaletteTag = 0;
+static EWRAM_DATA struct LockedAnimObjectEvents *sLockedAnimObjectEvents = {0};
static void MoveCoordsInDirection(u32, s16 *, s16 *, s16, s16);
static bool8 ObjectEventExecSingleMovementAction(struct ObjectEvent *, struct Sprite *);
@@ -70,8 +78,8 @@ static void UpdateObjectEventSpriteAnimPause(struct ObjectEvent *, struct Sprite
static bool8 IsCoordOutsideObjectEventMovementRange(struct ObjectEvent *, s16, s16);
static bool8 IsMetatileDirectionallyImpassable(struct ObjectEvent *, s16, s16, u8);
static bool8 DoesObjectCollideWithObjectAt(struct ObjectEvent *, s16, s16);
-static void sub_8096530(struct ObjectEvent *, struct Sprite *);
-static void UpdateObjEventSpriteVisibility(struct ObjectEvent *, struct Sprite *);
+static void UpdateObjectEventOffscreen(struct ObjectEvent *, struct Sprite *);
+static void UpdateObjectEventSpriteVisibility(struct ObjectEvent *, struct Sprite *);
static void ObjectEventUpdateMetatileBehaviors(struct ObjectEvent*);
static void GetGroundEffectFlags_Reflection(struct ObjectEvent*, u32*);
static void GetGroundEffectFlags_TallGrassOnSpawn(struct ObjectEvent*, u32*);
@@ -115,30 +123,49 @@ static void GetObjectEventMovingCameraOffset(s16 *, s16 *);
static struct ObjectEventTemplate *GetObjectEventTemplateByLocalIdAndMap(u8, u8, u8);
static void LoadObjectEventPalette(u16);
static void RemoveObjectEventIfOutsideView(struct ObjectEvent *);
-static void sub_808E1B8(u8, s16, s16);
+static void SpawnObjectEventOnReturnToField(u8, s16, s16);
static void SetPlayerAvatarObjectEventIdAndObjectId(u8, u8);
-static void sub_808E38C(struct ObjectEvent *);
-static u8 sub_808E8F4(const struct SpritePalette *);
+static void ResetObjectEventFldEffData(struct ObjectEvent *);
+static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *);
static u8 FindObjectEventPaletteIndexByTag(u16);
-static void sub_808EAB0(u16, u8);
+static void _PatchObjectPalette(u16, u8);
static bool8 ObjectEventDoesZCoordMatch(struct ObjectEvent *, u8);
-static void ObjectCB_CameraObject(struct Sprite *);
+static void SpriteCB_CameraObject(struct Sprite *);
static void CameraObject_0(struct Sprite *);
static void CameraObject_1(struct Sprite *);
static void CameraObject_2(struct Sprite *);
static struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8 localId, struct ObjectEventTemplate *templates, u8 count);
static void ClearObjectEventMovement(struct ObjectEvent *, struct Sprite *);
static void ObjectEventSetSingleMovement(struct ObjectEvent *, struct Sprite *, u8);
-static void oamt_npc_ministep_reset(struct Sprite *, u8, u8);
+static void SetSpriteDataForNormalStep(struct Sprite *, u8, u8);
static void InitSpriteForFigure8Anim(struct Sprite *sprite);
static bool8 AnimateSpriteInFigure8(struct Sprite *sprite);
static void UpdateObjectEventSprite(struct Sprite *);
+static void DoShadowFieldEffect(struct ObjectEvent *);
+static void SetJumpSpriteData(struct Sprite *, u8, u8, u8);
+static void SetWalkSlowSpriteData(struct Sprite *sprite, u8 direction);
+static bool8 UpdateWalkSlowAnim(struct Sprite *sprite);
+static u8 DoJumpSpriteMovement(struct Sprite *sprite);
+static u8 DoJumpSpecialSpriteMovement(struct Sprite *sprite);
+static void CreateLevitateMovementTask(struct ObjectEvent *);
+static void DestroyLevitateMovementTask(u8);
+static bool8 NpcTakeStep(struct Sprite *sprite);
+
+static const struct SpriteFrameImage sPicTable_PechaBerryTree[];
const u8 gReflectionEffectPaletteMap[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0};
-const struct SpriteTemplate gCameraSpriteTemplate = {0, 0xFFFF, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, ObjectCB_CameraObject};
+static const struct SpriteTemplate sCameraSpriteTemplate = {
+ .tileTag = 0,
+ .paletteTag = 0xFFFF,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_CameraObject
+};
-void (*const gCameraObjectFuncs[])(struct Sprite *) = {
+static void (*const sCameraObjectFuncs[])(struct Sprite *) = {
CameraObject_0,
CameraObject_1,
CameraObject_2,
@@ -669,13 +696,13 @@ static const u16 *const sObjectPaletteTagSets[] = {
#include "data/object_events/berry_tree_graphics_tables.h"
#include "data/field_effects/field_effect_objects.h"
-const s16 gMovementDelaysMedium[] = {32, 64, 96, 128};
-const s16 gMovementDelaysLong[] = {32, 64, 128, 192};
-const s16 gMovementDelaysShort[] = {32, 48, 64, 80};
+static const s16 sMovementDelaysMedium[] = {32, 64, 96, 128};
+static const s16 sMovementDelaysLong[] = {32, 64, 128, 192}; // Unused
+static const s16 sMovementDelaysShort[] = {32, 48, 64, 80};
#include "data/object_events/movement_type_func_tables.h"
-const u8 gFaceDirectionAnimNums[] = {
+static const u8 sFaceDirectionAnimNums[] = {
[DIR_NONE] = 0,
[DIR_SOUTH] = 0,
[DIR_NORTH] = 1,
@@ -686,7 +713,7 @@ const u8 gFaceDirectionAnimNums[] = {
[DIR_NORTHWEST] = 1,
[DIR_NORTHEAST] = 1,
};
-const u8 gMoveDirectionAnimNums[] = {
+static const u8 sMoveDirectionAnimNums[] = {
[DIR_NONE] = 4,
[DIR_SOUTH] = 4,
[DIR_NORTH] = 5,
@@ -697,7 +724,7 @@ const u8 gMoveDirectionAnimNums[] = {
[DIR_NORTHWEST] = 5,
[DIR_NORTHEAST] = 5,
};
-const u8 gMoveDirectionFastAnimNums[] = {
+static const u8 sMoveDirectionFastAnimNums[] = {
[DIR_NONE] = 8,
[DIR_SOUTH] = 8,
[DIR_NORTH] = 9,
@@ -708,7 +735,7 @@ const u8 gMoveDirectionFastAnimNums[] = {
[DIR_NORTHWEST] = 9,
[DIR_NORTHEAST] = 9,
};
-const u8 gMoveDirectionFasterAnimNums[] = {
+static const u8 sMoveDirectionFasterAnimNums[] = {
[DIR_NONE] = 12,
[DIR_SOUTH] = 12,
[DIR_NORTH] = 13,
@@ -719,7 +746,7 @@ const u8 gMoveDirectionFasterAnimNums[] = {
[DIR_NORTHWEST] = 13,
[DIR_NORTHEAST] = 13,
};
-const u8 gMoveDirectionFastestAnimNums[] = {
+static const u8 sMoveDirectionFastestAnimNums[] = {
[DIR_NONE] = 16,
[DIR_SOUTH] = 16,
[DIR_NORTH] = 17,
@@ -730,7 +757,7 @@ const u8 gMoveDirectionFastestAnimNums[] = {
[DIR_NORTHWEST] = 17,
[DIR_NORTHEAST] = 17,
};
-const u8 gJumpSpecialDirectionAnimNums[] = { // used for jumping onto surf mon
+static const u8 sJumpSpecialDirectionAnimNums[] = { // used for jumping onto surf mon
[DIR_NONE] = 20,
[DIR_SOUTH] = 20,
[DIR_NORTH] = 21,
@@ -741,7 +768,7 @@ const u8 gJumpSpecialDirectionAnimNums[] = { // used for jumping onto surf mon
[DIR_NORTHWEST] = 21,
[DIR_NORTHEAST] = 21,
};
-const u8 gAcroWheelieDirectionAnimNums[] = {
+static const u8 sAcroWheelieDirectionAnimNums[] = {
[DIR_NONE] = 20,
[DIR_SOUTH] = 20,
[DIR_NORTH] = 21,
@@ -752,7 +779,7 @@ const u8 gAcroWheelieDirectionAnimNums[] = {
[DIR_NORTHWEST] = 21,
[DIR_NORTHEAST] = 21,
};
-const u8 gUnrefAnimNums_08375633[] = {
+static const u8 sAcroUnusedDirectionAnimNums[] = {
[DIR_NONE] = 24,
[DIR_SOUTH] = 24,
[DIR_NORTH] = 25,
@@ -763,7 +790,7 @@ const u8 gUnrefAnimNums_08375633[] = {
[DIR_NORTHWEST] = 25,
[DIR_NORTHEAST] = 25,
};
-const u8 gAcroEndWheelieDirectionAnimNums[] = {
+static const u8 sAcroEndWheelieDirectionAnimNums[] = {
[DIR_NONE] = 28,
[DIR_SOUTH] = 28,
[DIR_NORTH] = 29,
@@ -774,7 +801,7 @@ const u8 gAcroEndWheelieDirectionAnimNums[] = {
[DIR_NORTHWEST] = 29,
[DIR_NORTHEAST] = 29,
};
-const u8 gAcroUnusedActionDirectionAnimNums[] = {
+static const u8 sAcroUnusedActionDirectionAnimNums[] = {
[DIR_NONE] = 32,
[DIR_SOUTH] = 32,
[DIR_NORTH] = 33,
@@ -785,7 +812,7 @@ const u8 gAcroUnusedActionDirectionAnimNums[] = {
[DIR_NORTHWEST] = 33,
[DIR_NORTHEAST] = 33,
};
-const u8 gAcroWheeliePedalDirectionAnimNums[] = {
+static const u8 sAcroWheeliePedalDirectionAnimNums[] = {
[DIR_NONE] = 36,
[DIR_SOUTH] = 36,
[DIR_NORTH] = 37,
@@ -796,7 +823,7 @@ const u8 gAcroWheeliePedalDirectionAnimNums[] = {
[DIR_NORTHWEST] = 37,
[DIR_NORTHEAST] = 37,
};
-const u8 gFishingDirectionAnimNums[] = {
+static const u8 sFishingDirectionAnimNums[] = {
[DIR_NONE] = 0,
[DIR_SOUTH] = 0,
[DIR_NORTH] = 1,
@@ -807,7 +834,7 @@ const u8 gFishingDirectionAnimNums[] = {
[DIR_NORTHWEST] = 1,
[DIR_NORTHEAST] = 1,
};
-const u8 gFishingNoCatchDirectionAnimNums[] = {
+static const u8 sFishingNoCatchDirectionAnimNums[] = {
[DIR_NONE] = 4,
[DIR_SOUTH] = 4,
[DIR_NORTH] = 5,
@@ -818,7 +845,7 @@ const u8 gFishingNoCatchDirectionAnimNums[] = {
[DIR_NORTHWEST] = 5,
[DIR_NORTHEAST] = 5,
};
-const u8 gFishingBiteDirectionAnimNums[] = {
+static const u8 sFishingBiteDirectionAnimNums[] = {
[DIR_NONE] = 8,
[DIR_SOUTH] = 8,
[DIR_NORTH] = 9,
@@ -829,7 +856,7 @@ const u8 gFishingBiteDirectionAnimNums[] = {
[DIR_NORTHWEST] = 9,
[DIR_NORTHEAST] = 9,
};
-const u8 gRunningDirectionAnimNums[] = {
+static const u8 sRunningDirectionAnimNums[] = {
[DIR_NONE] = 20,
[DIR_SOUTH] = 20,
[DIR_NORTH] = 21,
@@ -1069,7 +1096,7 @@ const u8 gAcroEndWheelieMoveDirectionMovementActions[] = {
MOVEMENT_ACTION_ACRO_END_WHEELIE_MOVE_RIGHT,
};
-const u8 gOppositeDirections[] = {
+static const u8 sOppositeDirections[] = {
DIR_NORTH,
DIR_SOUTH,
DIR_EAST,
@@ -1373,7 +1400,7 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl
else if (paletteSlot >= 16)
{
paletteSlot -= 16;
- sub_808EAB0(graphicsInfo->paletteTag, paletteSlot);
+ _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot);
}
if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE)
@@ -1388,14 +1415,14 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl
}
sprite = &gSprites[spriteId];
- sub_8092FF0(objectEvent->currentCoords.x + cameraX, objectEvent->currentCoords.y + cameraY, &sprite->pos1.x, &sprite->pos1.y);
+ GetMapCoordsFromSpritePos(objectEvent->currentCoords.x + cameraX, objectEvent->currentCoords.y + cameraY, &sprite->x, &sprite->y);
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
- sprite->pos1.x += 8;
- sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ sprite->x += 8;
+ sprite->y += 16 + sprite->centerToCornerVecY;
sprite->oam.paletteNum = paletteSlot;
sprite->coordOffsetEnabled = TRUE;
- sprite->data[0] = objectEventId;
+ sprite->sObjEventId = objectEventId;
objectEvent->spriteId = spriteId;
objectEvent->inanimate = graphicsInfo->inanimate;
if (!objectEvent->inanimate)
@@ -1522,7 +1549,7 @@ u8 AddPseudoObjectEvent(u16 graphicsId, void (*callback)(struct Sprite *), s16 x
// Used to create sprite object events instead of a full object event
// Used when resources are limiting, e.g. for the audience in contests or group members in Union Room
-u8 CreateObjectSprite(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
+u8 CreateObjectSprite(u8 graphicsId, u8 objectEventId, s16 x, s16 y, u8 z, u8 direction)
{
u8 spriteId;
struct Sprite *sprite;
@@ -1542,14 +1569,14 @@ u8 CreateObjectSprite(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
sprite = &gSprites[spriteId];
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
- sprite->pos1.y += sprite->centerToCornerVecY;
+ sprite->y += sprite->centerToCornerVecY;
sprite->oam.paletteNum = graphicsInfo->paletteSlot;
if (sprite->oam.paletteNum >= 16)
{
sprite->oam.paletteNum -= 16;
}
sprite->coordOffsetEnabled = TRUE;
- sprite->data[0] = a1;
+ sprite->sObjEventId = objectEventId;
sprite->data[1] = z;
if (graphicsInfo->paletteSlot == 10)
{
@@ -1557,7 +1584,7 @@ u8 CreateObjectSprite(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
}
else if (graphicsInfo->paletteSlot >= 16)
{
- sub_808EAB0(graphicsInfo->paletteTag, graphicsInfo->paletteSlot | 0xf0);
+ _PatchObjectPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot | 0xf0);
}
if (subspriteTables != NULL)
{
@@ -1584,17 +1611,11 @@ void TrySpawnObjectEvents(s16 cameraX, s16 cameraY)
s16 bottom = gSaveBlock1Ptr->pos.y + 16;
if (InBattlePyramid())
- {
objectCount = GetNumBattlePyramidObjectEvents();
- }
else if (InTrainerHill())
- {
objectCount = 2;
- }
else
- {
objectCount = gMapHeader.events->objectEventCount;
- }
for (i = 0; i < objectCount; i++)
{
@@ -1647,7 +1668,7 @@ static void RemoveObjectEventIfOutsideView(struct ObjectEvent *objectEvent)
RemoveObjectEvent(objectEvent);
}
-void sub_808E16C(s16 x, s16 y)
+void SpawnObjectEventsOnReturnToField(s16 x, s16 y)
{
u8 i;
@@ -1655,16 +1676,14 @@ void sub_808E16C(s16 x, s16 y)
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{
if (gObjectEvents[i].active)
- {
- sub_808E1B8(i, x, y);
- }
+ SpawnObjectEventOnReturnToField(i, x, y);
}
CreateReflectionEffectSprites();
}
-static void sub_808E1B8(u8 objectEventId, s16 x, s16 y)
+static void SpawnObjectEventOnReturnToField(u8 objectEventId, s16 x, s16 y)
{
- u8 spriteId;
+ u8 i;
u8 paletteSlot;
struct Sprite *sprite;
struct ObjectEvent *objectEvent;
@@ -1673,15 +1692,11 @@ static void sub_808E1B8(u8 objectEventId, s16 x, s16 y)
const struct SubspriteTable *subspriteTables;
const struct ObjectEventGraphicsInfo *graphicsInfo;
-#define i spriteId
for (i = 0; i < ARRAY_COUNT(gLinkPlayerObjectEvents); i++)
{
if (gLinkPlayerObjectEvents[i].active && objectEventId == gLinkPlayerObjectEvents[i].objEventId)
- {
return;
- }
}
-#undef i
objectEvent = &gObjectEvents[objectEventId];
subspriteTables = NULL;
@@ -1689,6 +1704,7 @@ static void sub_808E1B8(u8 objectEventId, s16 x, s16 y)
spriteFrameImage.size = graphicsInfo->size;
MakeObjectTemplateFromObjectEventGraphicsInfoWithCallbackIndex(objectEvent->graphicsId, objectEvent->movementType, &spriteTemplate, &subspriteTables);
spriteTemplate.images = &spriteFrameImage;
+
*(u16 *)&spriteTemplate.paletteTag = 0xFFFF;
paletteSlot = graphicsInfo->paletteSlot;
if (paletteSlot == 0)
@@ -1702,42 +1718,41 @@ static void sub_808E1B8(u8 objectEventId, s16 x, s16 y)
else if (paletteSlot >= 16)
{
paletteSlot -= 16;
- sub_808EAB0(graphicsInfo->paletteTag, paletteSlot);
+ _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot);
}
*(u16 *)&spriteTemplate.paletteTag = 0xFFFF;
- spriteId = CreateSprite(&spriteTemplate, 0, 0, 0);
- if (spriteId != MAX_SPRITES)
+
+ i = CreateSprite(&spriteTemplate, 0, 0, 0);
+ if (i != MAX_SPRITES)
{
- sprite = &gSprites[spriteId];
- sub_8092FF0(x + objectEvent->currentCoords.x, y + objectEvent->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
+ sprite = &gSprites[i];
+ GetMapCoordsFromSpritePos(x + objectEvent->currentCoords.x, y + objectEvent->currentCoords.y, &sprite->x, &sprite->y);
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
- sprite->pos1.x += 8;
- sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ sprite->x += 8;
+ sprite->y += 16 + sprite->centerToCornerVecY;
sprite->images = graphicsInfo->images;
if (objectEvent->movementType == MOVEMENT_TYPE_PLAYER)
{
- SetPlayerAvatarObjectEventIdAndObjectId(objectEventId, spriteId);
+ SetPlayerAvatarObjectEventIdAndObjectId(objectEventId, i);
objectEvent->warpArrowSpriteId = CreateWarpArrowSprite();
}
if (subspriteTables != NULL)
- {
SetSubspriteTables(sprite, subspriteTables);
- }
+
sprite->oam.paletteNum = paletteSlot;
sprite->coordOffsetEnabled = TRUE;
- sprite->data[0] = objectEventId;
- objectEvent->spriteId = spriteId;
+ sprite->sObjEventId = objectEventId;
+ objectEvent->spriteId = i;
if (!objectEvent->inanimate && objectEvent->movementType != MOVEMENT_TYPE_PLAYER)
- {
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objectEvent->facingDirection));
- }
- sub_808E38C(objectEvent);
+
+ ResetObjectEventFldEffData(objectEvent);
SetObjectSubpriorityByZCoord(objectEvent->previousElevation, sprite, 1);
}
}
-static void sub_808E38C(struct ObjectEvent *objectEvent)
+static void ResetObjectEventFldEffData(struct ObjectEvent *objectEvent)
{
objectEvent->singleMovementActive = FALSE;
objectEvent->triggerGroundEffectsOnMove = TRUE;
@@ -1778,7 +1793,7 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId)
else if (paletteSlot >= 16)
{
paletteSlot -= 16;
- sub_808EAB0(graphicsInfo->paletteTag, paletteSlot);
+ _PatchObjectPalette(graphicsInfo->paletteTag, paletteSlot);
}
sprite->oam.shape = graphicsInfo->oam->shape;
sprite->oam.size = graphicsInfo->oam->size;
@@ -1788,11 +1803,11 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId)
sprite->oam.paletteNum = paletteSlot;
objectEvent->inanimate = graphicsInfo->inanimate;
objectEvent->graphicsId = graphicsId;
- SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
+ SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->x, &sprite->y);
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
- sprite->pos1.x += 8;
- sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ sprite->x += 8;
+ sprite->y += 16 + sprite->centerToCornerVecY;
if (objectEvent->trackedByCamera)
{
CameraObjectReset1();
@@ -1905,7 +1920,7 @@ void ObjectEventGetLocalIdAndMap(struct ObjectEvent *objectEvent, void *localId,
*(u8*)(mapGroup) = objectEvent->mapGroup;
}
-void sub_808E75C(s16 x, s16 y)
+void AllowObjectAtPosTriggerGroundEffects(s16 x, s16 y)
{
u8 objectEventId;
struct ObjectEvent *objectEvent;
@@ -1954,8 +1969,8 @@ void SetObjectEventSpritePosByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup,
if (!TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId))
{
sprite = &gSprites[gObjectEvents[objectEventId].spriteId];
- sprite->pos2.x = x;
- sprite->pos2.y = y;
+ sprite->x2 = x;
+ sprite->y2 = y;
}
}
@@ -1970,27 +1985,23 @@ static void LoadObjectEventPalette(u16 paletteTag)
u16 i = FindObjectEventPaletteIndexByTag(paletteTag);
if (i != OBJ_EVENT_PAL_TAG_NONE) // always true
- {
- sub_808E8F4(&sObjectEventSpritePalettes[i]);
- }
+ LoadSpritePaletteIfTagExists(&sObjectEventSpritePalettes[i]);
}
-void Unused_LoadObjectEventPaletteSet(u16 *paletteTags)
+// Unused
+static void LoadObjectEventPaletteSet(u16 *paletteTags)
{
u8 i;
for (i = 0; paletteTags[i] != OBJ_EVENT_PAL_TAG_NONE; i++)
- {
LoadObjectEventPalette(paletteTags[i]);
- }
}
-static u8 sub_808E8F4(const struct SpritePalette *spritePalette)
+static u8 LoadSpritePaletteIfTagExists(const struct SpritePalette *spritePalette)
{
if (IndexOfSpritePaletteTag(spritePalette->tag) != 0xFF)
- {
return 0xFF;
- }
+
return LoadSpritePalette(spritePalette);
}
@@ -2056,12 +2067,13 @@ void LoadSpecialObjectReflectionPalette(u16 tag, u8 slot)
}
}
-static void sub_808EAB0(u16 tag, u8 slot)
+static void _PatchObjectPalette(u16 tag, u8 slot)
{
PatchObjectPalette(tag, slot);
}
-void unref_sub_808EAC4(struct ObjectEvent *objectEvent, s16 x, s16 y)
+// Unused
+static void IncrementObjectEventCoords(struct ObjectEvent *objectEvent, s16 x, s16 y)
{
objectEvent->previousCoords.x = objectEvent->currentCoords.x;
objectEvent->previousCoords.y = objectEvent->currentCoords.y;
@@ -2093,12 +2105,12 @@ void MoveObjectEventToMapCoords(struct ObjectEvent *objectEvent, s16 x, s16 y)
sprite = &gSprites[objectEvent->spriteId];
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
SetObjectEventCoords(objectEvent, x, y);
- SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
+ SetSpritePosToMapCoords(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->x, &sprite->y);
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
- sprite->pos1.x += 8;
- sprite->pos1.y += 16 + sprite->centerToCornerVecY;
- sub_808E38C(objectEvent);
+ sprite->x += 8;
+ sprite->y += 16 + sprite->centerToCornerVecY;
+ ResetObjectEventFldEffData(objectEvent);
if (objectEvent->trackedByCamera)
CameraObjectReset1();
}
@@ -2177,114 +2189,116 @@ void UpdateObjectEventsForCameraUpdate(s16 x, s16 y)
RemoveObjectEventsOutsideView();
}
+#define sLinkedSpriteId data[0]
+#define sState data[1]
+
u8 AddCameraObject(u8 linkedSpriteId)
{
- u8 spriteId = CreateSprite(&gCameraSpriteTemplate, 0, 0, 4);
+ u8 spriteId = CreateSprite(&sCameraSpriteTemplate, 0, 0, 4);
gSprites[spriteId].invisible = TRUE;
- gSprites[spriteId].data[0] = linkedSpriteId;
+ gSprites[spriteId].sLinkedSpriteId = linkedSpriteId;
return spriteId;
}
-static void ObjectCB_CameraObject(struct Sprite *sprite)
+static void SpriteCB_CameraObject(struct Sprite *sprite)
{
- void (*callbacks[ARRAY_COUNT(gCameraObjectFuncs)])(struct Sprite *);
+ void (*callbacks[ARRAY_COUNT(sCameraObjectFuncs)])(struct Sprite *);
- memcpy(callbacks, gCameraObjectFuncs, sizeof gCameraObjectFuncs);
- callbacks[sprite->data[1]](sprite);
+ memcpy(callbacks, sCameraObjectFuncs, sizeof sCameraObjectFuncs);
+ callbacks[sprite->sState](sprite);
}
static void CameraObject_0(struct Sprite *sprite)
{
- sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
- sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
+ sprite->x = gSprites[sprite->sLinkedSpriteId].x;
+ sprite->y = gSprites[sprite->sLinkedSpriteId].y;
sprite->invisible = TRUE;
- sprite->data[1] = 1;
+ sprite->sState = 1;
CameraObject_1(sprite);
}
static void CameraObject_1(struct Sprite *sprite)
{
- s16 x = gSprites[sprite->data[0]].pos1.x;
- s16 y = gSprites[sprite->data[0]].pos1.y;
+ s16 x = gSprites[sprite->sLinkedSpriteId].x;
+ s16 y = gSprites[sprite->sLinkedSpriteId].y;
- sprite->data[2] = x - sprite->pos1.x;
- sprite->data[3] = y - sprite->pos1.y;
- sprite->pos1.x = x;
- sprite->pos1.y = y;
+ sprite->data[2] = x - sprite->x;
+ sprite->data[3] = y - sprite->y;
+ sprite->x = x;
+ sprite->y = y;
}
static void CameraObject_2(struct Sprite *sprite)
{
- sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
- sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
+ sprite->x = gSprites[sprite->sLinkedSpriteId].x;
+ sprite->y = gSprites[sprite->sLinkedSpriteId].y;
sprite->data[2] = 0;
sprite->data[3] = 0;
}
-static struct Sprite *FindCameraObject(void)
+static struct Sprite *FindCameraSprite(void)
{
u8 i;
for (i = 0; i < MAX_SPRITES; i++)
{
- if (gSprites[i].inUse && gSprites[i].callback == ObjectCB_CameraObject)
- {
+ if (gSprites[i].inUse && gSprites[i].callback == SpriteCB_CameraObject)
return &gSprites[i];
- }
}
return NULL;
}
void CameraObjectReset1(void)
{
- struct Sprite *cameraObject;
+ struct Sprite *camera;
- cameraObject = FindCameraObject();
- if (cameraObject != NULL)
+ camera = FindCameraSprite();
+ if (camera != NULL)
{
- cameraObject->data[1] = 0;
- cameraObject->callback(cameraObject);
+ camera->sState = 0;
+ camera->callback(camera);
}
}
-void CameraObjectSetFollowedObjectId(u8 objectId)
+void CameraObjectSetFollowedSpriteId(u8 spriteId)
{
- struct Sprite *cameraObject;
+ struct Sprite *camera;
- cameraObject = FindCameraObject();
- if (cameraObject != NULL)
+ camera = FindCameraSprite();
+ if (camera != NULL)
{
- cameraObject->data[0] = objectId;
+ camera->sLinkedSpriteId = spriteId;
CameraObjectReset1();
}
}
-u8 CameraObjectGetFollowedObjectId(void)
+// Unused
+static u8 CameraObjectGetFollowedSpriteId(void)
{
- struct Sprite *cameraObject;
+ struct Sprite *camera;
- cameraObject = FindCameraObject();
- if (cameraObject == NULL)
+ camera = FindCameraSprite();
+ if (camera == NULL)
{
return MAX_SPRITES;
}
- return cameraObject->data[0];
+ return camera->sLinkedSpriteId;
}
void CameraObjectReset2(void)
{
// UB: Possible null dereference
#ifdef UBFIX
- struct Sprite *cameraObject;
+ struct Sprite *camera;
- cameraObject = FindCameraObject();
- if (cameraObject != NULL)
+ camera = FindCameraSprite();
+ if (camera != NULL)
{
- cameraObject->data[1] = 2;
+ camera->sState = 2;
}
#else
- FindCameraObject()->data[1] = 2;
+ FindCameraSprite()->sState = 2;
#endif // UBFIX
}
@@ -2297,8 +2311,8 @@ u8 CopySprite(struct Sprite *sprite, s16 x, s16 y, u8 subpriority)
if (!gSprites[i].inUse)
{
gSprites[i] = *sprite;
- gSprites[i].pos1.x = x;
- gSprites[i].pos1.y = y;
+ gSprites[i].x = x;
+ gSprites[i].y = y;
gSprites[i].subpriority = subpriority;
break;
}
@@ -2315,8 +2329,8 @@ u8 CreateCopySpriteAt(struct Sprite *sprite, s16 x, s16 y, u8 subpriority)
if (!gSprites[i].inUse)
{
gSprites[i] = *sprite;
- gSprites[i].pos1.x = x;
- gSprites[i].pos1.y = y;
+ gSprites[i].x = x;
+ gSprites[i].y = y;
gSprites[i].subpriority = subpriority;
return i;
}
@@ -2545,14 +2559,14 @@ movement_type_def(MovementType_WanderAround, gMovementTypeFuncs_WanderAround)
bool8 MovementType_WanderAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_WanderAround_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -2562,8 +2576,8 @@ bool8 MovementType_WanderAround_Step2(struct ObjectEvent *objectEvent, struct Sp
{
return FALSE;
}
- SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
- sprite->data[1] = 3;
+ SetMovementDelay(sprite, sMovementDelaysMedium[Random() & 3]);
+ sprite->sTypeFuncId = 3;
return TRUE;
}
@@ -2571,7 +2585,7 @@ bool8 MovementType_WanderAround_Step3(struct ObjectEvent *objectEvent, struct Sp
{
if (WaitForMovementDelay(sprite))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -2585,9 +2599,9 @@ bool8 MovementType_WanderAround_Step4(struct ObjectEvent *objectEvent, struct Sp
memcpy(directions, gStandardDirections, sizeof directions);
chosenDirection = directions[Random() & 3];
SetObjectEventDirection(objectEvent, chosenDirection);
- sprite->data[1] = 5;
+ sprite->sTypeFuncId = 5;
if (GetCollisionInDirection(objectEvent, chosenDirection))
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -2596,7 +2610,7 @@ bool8 MovementType_WanderAround_Step5(struct ObjectEvent *objectEvent, struct Sp
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(objectEvent->movementDirection));
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 6;
+ sprite->sTypeFuncId = 6;
return TRUE;
}
@@ -2605,7 +2619,7 @@ bool8 MovementType_WanderAround_Step6(struct ObjectEvent *objectEvent, struct Sp
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
objectEvent->singleMovementActive = FALSE;
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
}
return FALSE;
}
@@ -2651,17 +2665,13 @@ u8 GetVectorDirection(s16 dx, s16 dy, s16 absdx, s16 absdy)
{
direction = DIR_EAST;
if (dx < 0)
- {
direction = DIR_WEST;
- }
}
else
{
direction = DIR_SOUTH;
if (dy < 0)
- {
direction = DIR_NORTH;
- }
}
return direction;
}
@@ -2672,9 +2682,7 @@ u8 GetLimitedVectorDirection_SouthNorth(s16 dx, s16 dy, s16 absdx, s16 absdy)
direction = DIR_SOUTH;
if (dy < 0)
- {
direction = DIR_NORTH;
- }
return direction;
}
@@ -2684,9 +2692,7 @@ u8 GetLimitedVectorDirection_WestEast(s16 dx, s16 dy, s16 absdx, s16 absdy)
direction = DIR_EAST;
if (dx < 0)
- {
direction = DIR_WEST;
- }
return direction;
}
@@ -2699,17 +2705,13 @@ u8 GetLimitedVectorDirection_WestNorth(s16 dx, s16 dy, s16 absdx, s16 absdy)
{
direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy);
if (direction == DIR_EAST)
- {
direction = DIR_NORTH;
- }
}
else if (direction == DIR_EAST)
{
direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy);
if (direction == DIR_SOUTH)
- {
direction = DIR_NORTH;
- }
}
return direction;
}
@@ -2723,17 +2725,13 @@ u8 GetLimitedVectorDirection_EastNorth(s16 dx, s16 dy, s16 absdx, s16 absdy)
{
direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy);
if (direction == DIR_WEST)
- {
direction = DIR_NORTH;
- }
}
else if (direction == DIR_WEST)
{
direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy);
if (direction == DIR_SOUTH)
- {
direction = DIR_NORTH;
- }
}
return direction;
}
@@ -2747,17 +2745,13 @@ u8 GetLimitedVectorDirection_WestSouth(s16 dx, s16 dy, s16 absdx, s16 absdy)
{
direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy);
if (direction == DIR_EAST)
- {
direction = DIR_SOUTH;
- }
}
else if (direction == DIR_EAST)
{
direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy);
if (direction == DIR_NORTH)
- {
direction = DIR_SOUTH;
- }
}
return direction;
}
@@ -2771,17 +2765,13 @@ u8 GetLimitedVectorDirection_EastSouth(s16 dx, s16 dy, s16 absdx, s16 absdy)
{
direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy);
if (direction == DIR_WEST)
- {
direction = DIR_SOUTH;
- }
}
else if (direction == DIR_WEST)
{
direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy);
if (direction == DIR_NORTH)
- {
direction = DIR_SOUTH;
- }
}
return direction;
}
@@ -2792,9 +2782,7 @@ u8 GetLimitedVectorDirection_SouthNorthWest(s16 dx, s16 dy, s16 absdx, s16 absdy
direction = GetVectorDirection(dx, dy, absdx, absdy);
if (direction == DIR_EAST)
- {
direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy);
- }
return direction;
}
@@ -2804,9 +2792,7 @@ u8 GetLimitedVectorDirection_SouthNorthEast(s16 dx, s16 dy, s16 absdx, s16 absdy
direction = GetVectorDirection(dx, dy, absdx, absdy);
if (direction == DIR_WEST)
- {
direction = GetLimitedVectorDirection_SouthNorth(dx, dy, absdx, absdy);
- }
return direction;
}
@@ -2816,9 +2802,7 @@ u8 GetLimitedVectorDirection_NorthWestEast(s16 dx, s16 dy, s16 absdx, s16 absdy)
direction = GetVectorDirection(dx, dy, absdx, absdy);
if (direction == DIR_SOUTH)
- {
direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy);
- }
return direction;
}
@@ -2828,9 +2812,7 @@ u8 GetLimitedVectorDirection_SouthWestEast(s16 dx, s16 dy, s16 absdx, s16 absdy)
direction = GetVectorDirection(dx, dy, absdx, absdy);
if (direction == DIR_NORTH)
- {
direction = GetLimitedVectorDirection_WestEast(dx, dy, absdx, absdy);
- }
return direction;
}
@@ -2840,22 +2822,19 @@ u8 TryGetTrainerEncounterDirection(struct ObjectEvent *objectEvent, u8 movementT
s16 absdx, absdy;
if (!ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
- {
- return 0;
- }
+ return DIR_NONE;
+
PlayerGetDestCoords(&dx, &dy);
dx -= objectEvent->currentCoords.x;
dy -= objectEvent->currentCoords.y;
absdx = dx;
absdy = dy;
+
if (absdx < 0)
- {
absdx = -absdx;
- }
if (absdy < 0)
- {
absdy = -absdy;
- }
+
return gGetVectorDirectionFuncs[movementType](dx, dy, absdx, absdy);
}
@@ -2864,14 +2843,14 @@ movement_type_def(MovementType_LookAround, gMovementTypeFuncs_LookAround)
bool8 MovementType_LookAround_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_LookAround_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -2879,9 +2858,9 @@ bool8 MovementType_LookAround_Step2(struct ObjectEvent *objectEvent, struct Spri
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
+ SetMovementDelay(sprite, sMovementDelaysMedium[Random() & 3]);
objectEvent->singleMovementActive = FALSE;
- sprite->data[1] = 3;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -2890,7 +2869,7 @@ bool8 MovementType_LookAround_Step3(struct ObjectEvent *objectEvent, struct Spri
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -2906,7 +2885,7 @@ bool8 MovementType_LookAround_Step4(struct ObjectEvent *objectEvent, struct Spri
direction = directions[Random() & 3];
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -2915,25 +2894,24 @@ movement_type_def(MovementType_WanderUpAndDown, gMovementTypeFuncs_WanderUpAndDo
bool8 MovementType_WanderUpAndDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_WanderUpAndDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
bool8 MovementType_WanderUpAndDown_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
if (!ObjectEventExecSingleMovementAction(objectEvent, sprite))
- {
return FALSE;
- }
- SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
- sprite->data[1] = 3;
+
+ SetMovementDelay(sprite, sMovementDelaysMedium[Random() & 3]);
+ sprite->sTypeFuncId = 3;
return TRUE;
}
@@ -2941,7 +2919,7 @@ bool8 MovementType_WanderUpAndDown_Step3(struct ObjectEvent *objectEvent, struct
{
if (WaitForMovementDelay(sprite))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -2954,9 +2932,9 @@ bool8 MovementType_WanderUpAndDown_Step4(struct ObjectEvent *objectEvent, struct
memcpy(directions, gUpAndDownDirections, sizeof directions);
direction = directions[Random() & 1];
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 5;
+ sprite->sTypeFuncId = 5;
if (GetCollisionInDirection(objectEvent, direction))
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -2965,7 +2943,7 @@ bool8 MovementType_WanderUpAndDown_Step5(struct ObjectEvent *objectEvent, struct
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(objectEvent->movementDirection));
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 6;
+ sprite->sTypeFuncId = 6;
return TRUE;
}
@@ -2974,7 +2952,7 @@ bool8 MovementType_WanderUpAndDown_Step6(struct ObjectEvent *objectEvent, struct
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
objectEvent->singleMovementActive = FALSE;
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
}
return FALSE;
}
@@ -2984,25 +2962,24 @@ movement_type_def(MovementType_WanderLeftAndRight, gMovementTypeFuncs_WanderLeft
bool8 MovementType_WanderLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_WanderLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
bool8 MovementType_WanderLeftAndRight_Step2(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
if (!ObjectEventExecSingleMovementAction(objectEvent, sprite))
- {
return FALSE;
- }
- SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
- sprite->data[1] = 3;
+
+ SetMovementDelay(sprite, sMovementDelaysMedium[Random() & 3]);
+ sprite->sTypeFuncId = 3;
return TRUE;
}
@@ -3010,7 +2987,7 @@ bool8 MovementType_WanderLeftAndRight_Step3(struct ObjectEvent *objectEvent, str
{
if (WaitForMovementDelay(sprite))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3023,9 +3000,9 @@ bool8 MovementType_WanderLeftAndRight_Step4(struct ObjectEvent *objectEvent, str
memcpy(directions, gLeftAndRightDirections, sizeof directions);
direction = directions[Random() & 1];
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 5;
+ sprite->sTypeFuncId = 5;
if (GetCollisionInDirection(objectEvent, direction))
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3034,7 +3011,7 @@ bool8 MovementType_WanderLeftAndRight_Step5(struct ObjectEvent *objectEvent, str
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkNormalMovementAction(objectEvent->movementDirection));
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 6;
+ sprite->sTypeFuncId = 6;
return TRUE;
}
@@ -3043,7 +3020,7 @@ bool8 MovementType_WanderLeftAndRight_Step6(struct ObjectEvent *objectEvent, str
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
objectEvent->singleMovementActive = FALSE;
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
}
return FALSE;
}
@@ -3054,7 +3031,7 @@ bool8 MovementType_FaceDirection_Step0(struct ObjectEvent *objectEvent, struct S
{
ClearObjectEventMovement(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3062,7 +3039,7 @@ bool8 MovementType_FaceDirection_Step1(struct ObjectEvent *objectEvent, struct S
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
return FALSE;
@@ -3085,8 +3062,6 @@ enum {
BERRYTREEFUNC_SPARKLE_END,
};
-#define sObjEventId data[0]
-#define sFuncId data[1]
#define sTimer data[2]
#define sBerryTreeFlags data[7]
@@ -3108,7 +3083,7 @@ void MovementType_BerryTreeGrowth(struct Sprite *sprite)
}
static bool8 ObjectEventCB2_BerryTree(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- return gMovementTypeFuncs_BerryTreeGrowth[sprite->sFuncId](objectEvent, sprite);
+ return gMovementTypeFuncs_BerryTreeGrowth[sprite->sTypeFuncId](objectEvent, sprite);
}
// BERRYTREEFUNC_NORMAL
@@ -3137,12 +3112,12 @@ bool8 MovementType_BerryTreeGrowth_Normal(struct ObjectEvent *objectEvent, struc
berryStage--;
if (sprite->animNum != berryStage)
{
- sprite->sFuncId = BERRYTREEFUNC_SPARKLE_START;
+ sprite->sTypeFuncId = BERRYTREEFUNC_SPARKLE_START;
return TRUE;
}
SetBerryTreeGraphics(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
- sprite->sFuncId = BERRYTREEFUNC_MOVE;
+ sprite->sTypeFuncId = BERRYTREEFUNC_MOVE;
return TRUE;
}
@@ -3151,7 +3126,7 @@ bool8 MovementType_BerryTreeGrowth_Move(struct ObjectEvent *objectEvent, struct
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- sprite->sFuncId = BERRYTREEFUNC_NORMAL;
+ sprite->sTypeFuncId = BERRYTREEFUNC_NORMAL;
return TRUE;
}
return FALSE;
@@ -3161,7 +3136,7 @@ bool8 MovementType_BerryTreeGrowth_Move(struct ObjectEvent *objectEvent, struct
bool8 MovementType_BerryTreeGrowth_SparkleStart(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->singleMovementActive = TRUE;
- sprite->sFuncId = BERRYTREEFUNC_SPARKLE;
+ sprite->sTypeFuncId = BERRYTREEFUNC_SPARKLE;
sprite->sTimer = 0;
sprite->sBerryTreeFlags |= BERRY_FLAG_SPARKLING;
gFieldEffectArguments[0] = objectEvent->currentCoords.x;
@@ -3181,7 +3156,7 @@ bool8 MovementType_BerryTreeGrowth_Sparkle(struct ObjectEvent *objectEvent, stru
if (sprite->sTimer > 64)
{
SetBerryTreeGraphics(objectEvent, sprite);
- sprite->sFuncId = BERRYTREEFUNC_SPARKLE_END;
+ sprite->sTypeFuncId = BERRYTREEFUNC_SPARKLE_END;
sprite->sTimer = 0;
return TRUE;
}
@@ -3196,7 +3171,7 @@ bool8 MovementType_BerryTreeGrowth_SparkleEnd(struct ObjectEvent *objectEvent, s
sprite->animPaused = TRUE;
if (sprite->sTimer > 64)
{
- sprite->sFuncId = BERRYTREEFUNC_NORMAL;
+ sprite->sTypeFuncId = BERRYTREEFUNC_NORMAL;
sprite->sBerryTreeFlags &= ~BERRY_FLAG_SPARKLING;
return TRUE;
}
@@ -3208,14 +3183,14 @@ movement_type_def(MovementType_FaceDownAndUp, gMovementTypeFuncs_FaceDownAndUp)
bool8 MovementType_FaceDownAndUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceDownAndUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3223,9 +3198,9 @@ bool8 MovementType_FaceDownAndUp_Step2(struct ObjectEvent *objectEvent, struct S
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
+ SetMovementDelay(sprite, sMovementDelaysMedium[Random() & 3]);
objectEvent->singleMovementActive = FALSE;
- sprite->data[1] = 3;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3234,7 +3209,7 @@ bool8 MovementType_FaceDownAndUp_Step3(struct ObjectEvent *objectEvent, struct S
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3251,7 +3226,7 @@ bool8 MovementType_FaceDownAndUp_Step4(struct ObjectEvent *objectEvent, struct S
direction = directions[Random() & 1];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3260,14 +3235,14 @@ movement_type_def(MovementType_FaceLeftAndRight, gMovementTypeFuncs_FaceLeftAndR
bool8 MovementType_FaceLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3275,9 +3250,9 @@ bool8 MovementType_FaceLeftAndRight_Step2(struct ObjectEvent *objectEvent, struc
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysMedium[Random() & 3]);
+ SetMovementDelay(sprite, sMovementDelaysMedium[Random() & 3]);
objectEvent->singleMovementActive = FALSE;
- sprite->data[1] = 3;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3286,7 +3261,7 @@ bool8 MovementType_FaceLeftAndRight_Step3(struct ObjectEvent *objectEvent, struc
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3303,7 +3278,7 @@ bool8 MovementType_FaceLeftAndRight_Step4(struct ObjectEvent *objectEvent, struc
direction = directions[Random() & 1];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3312,14 +3287,14 @@ movement_type_def(MovementType_FaceUpAndLeft, gMovementTypeFuncs_FaceUpAndLeft)
bool8 MovementType_FaceUpAndLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceUpAndLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3327,9 +3302,9 @@ bool8 MovementType_FaceUpAndLeft_Step2(struct ObjectEvent *objectEvent, struct S
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]);
objectEvent->singleMovementActive = FALSE;
- sprite->data[1] = 3;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3338,7 +3313,7 @@ bool8 MovementType_FaceUpAndLeft_Step3(struct ObjectEvent *objectEvent, struct S
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3355,7 +3330,7 @@ bool8 MovementType_FaceUpAndLeft_Step4(struct ObjectEvent *objectEvent, struct S
direction = directions[Random() & 1];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3364,14 +3339,14 @@ movement_type_def(MovementType_FaceUpAndRight, gMovementTypeFuncs_FaceUpAndRight
bool8 MovementType_FaceUpAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceUpAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3379,9 +3354,9 @@ bool8 MovementType_FaceUpAndRight_Step2(struct ObjectEvent *objectEvent, struct
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]);
objectEvent->singleMovementActive = FALSE;
- sprite->data[1] = 3;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3390,7 +3365,7 @@ bool8 MovementType_FaceUpAndRight_Step3(struct ObjectEvent *objectEvent, struct
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3407,7 +3382,7 @@ bool8 MovementType_FaceUpAndRight_Step4(struct ObjectEvent *objectEvent, struct
direction = directions[Random() & 1];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3416,14 +3391,14 @@ movement_type_def(MovementType_FaceDownAndLeft, gMovementTypeFuncs_FaceDownAndLe
bool8 MovementType_FaceDownAndLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceDownAndLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3431,9 +3406,9 @@ bool8 MovementType_FaceDownAndLeft_Step2(struct ObjectEvent *objectEvent, struct
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]);
objectEvent->singleMovementActive = FALSE;
- sprite->data[1] = 3;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3442,7 +3417,7 @@ bool8 MovementType_FaceDownAndLeft_Step3(struct ObjectEvent *objectEvent, struct
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3459,7 +3434,7 @@ bool8 MovementType_FaceDownAndLeft_Step4(struct ObjectEvent *objectEvent, struct
direction = directions[Random() & 1];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3468,14 +3443,14 @@ movement_type_def(MovementType_FaceDownAndRight, gMovementTypeFuncs_FaceDownAndR
bool8 MovementType_FaceDownAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceDownAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3483,9 +3458,9 @@ bool8 MovementType_FaceDownAndRight_Step2(struct ObjectEvent *objectEvent, struc
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]);
objectEvent->singleMovementActive = FALSE;
- sprite->data[1] = 3;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3494,7 +3469,7 @@ bool8 MovementType_FaceDownAndRight_Step3(struct ObjectEvent *objectEvent, struc
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3511,7 +3486,7 @@ bool8 MovementType_FaceDownAndRight_Step4(struct ObjectEvent *objectEvent, struc
direction = directions[Random() & 1];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3520,14 +3495,14 @@ movement_type_def(MovementType_FaceDownUpAndLeft, gMovementTypeFuncs_FaceDownUpA
bool8 MovementType_FaceDownUpAndLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceDownUpAndLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3535,9 +3510,9 @@ bool8 MovementType_FaceDownUpAndLeft_Step2(struct ObjectEvent *objectEvent, stru
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]);
objectEvent->singleMovementActive = FALSE;
- sprite->data[1] = 3;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3546,7 +3521,7 @@ bool8 MovementType_FaceDownUpAndLeft_Step3(struct ObjectEvent *objectEvent, stru
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3563,7 +3538,7 @@ bool8 MovementType_FaceDownUpAndLeft_Step4(struct ObjectEvent *objectEvent, stru
direction = directions[Random() & 3];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3572,14 +3547,14 @@ movement_type_def(MovementType_FaceDownUpAndRight, gMovementTypeFuncs_FaceDownUp
bool8 MovementType_FaceDownUpAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceDownUpAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3587,9 +3562,9 @@ bool8 MovementType_FaceDownUpAndRight_Step2(struct ObjectEvent *objectEvent, str
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]);
objectEvent->singleMovementActive = FALSE;
- sprite->data[1] = 3;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3598,7 +3573,7 @@ bool8 MovementType_FaceDownUpAndRight_Step3(struct ObjectEvent *objectEvent, str
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3615,7 +3590,7 @@ bool8 MovementType_FaceDownUpAndRight_Step4(struct ObjectEvent *objectEvent, str
direction = directions[Random() & 3];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3624,14 +3599,14 @@ movement_type_def(MovementType_FaceUpRightAndLeft, gMovementTypeFuncs_FaceUpLeft
bool8 MovementType_FaceUpLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceUpLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3639,9 +3614,9 @@ bool8 MovementType_FaceUpLeftAndRight_Step2(struct ObjectEvent *objectEvent, str
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]);
objectEvent->singleMovementActive = FALSE;
- sprite->data[1] = 3;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3650,7 +3625,7 @@ bool8 MovementType_FaceUpLeftAndRight_Step3(struct ObjectEvent *objectEvent, str
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3667,7 +3642,7 @@ bool8 MovementType_FaceUpLeftAndRight_Step4(struct ObjectEvent *objectEvent, str
direction = directions[Random() & 3];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3676,14 +3651,14 @@ movement_type_def(MovementType_FaceDownRightAndLeft, gMovementTypeFuncs_FaceDown
bool8 MovementType_FaceDownLeftAndRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_FaceDownLeftAndRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3691,9 +3666,9 @@ bool8 MovementType_FaceDownLeftAndRight_Step2(struct ObjectEvent *objectEvent, s
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- SetMovementDelay(sprite, gMovementDelaysShort[Random() & 3]);
+ SetMovementDelay(sprite, sMovementDelaysShort[Random() & 3]);
objectEvent->singleMovementActive = FALSE;
- sprite->data[1] = 3;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3702,7 +3677,7 @@ bool8 MovementType_FaceDownLeftAndRight_Step3(struct ObjectEvent *objectEvent, s
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 4;
+ sprite->sTypeFuncId = 4;
return TRUE;
}
return FALSE;
@@ -3719,7 +3694,7 @@ bool8 MovementType_FaceDownLeftAndRight_Step4(struct ObjectEvent *objectEvent, s
direction = directions[Random() & 3];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3729,7 +3704,7 @@ bool8 MovementType_RotateCounterclockwise_Step0(struct ObjectEvent *objectEvent,
{
ClearObjectEventMovement(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3738,7 +3713,7 @@ bool8 MovementType_RotateCounterclockwise_Step1(struct ObjectEvent *objectEvent,
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
SetMovementDelay(sprite, 48);
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
}
return FALSE;
}
@@ -3747,7 +3722,7 @@ bool8 MovementType_RotateCounterclockwise_Step2(struct ObjectEvent *objectEvent,
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 3;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3763,7 +3738,7 @@ bool8 MovementType_RotateCounterclockwise_Step3(struct ObjectEvent *objectEvent,
direction = directions[objectEvent->facingDirection];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 0;
+ sprite->sTypeFuncId = 0;
return TRUE;
}
@@ -3773,7 +3748,7 @@ bool8 MovementType_RotateClockwise_Step0(struct ObjectEvent *objectEvent, struct
{
ClearObjectEventMovement(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3782,7 +3757,7 @@ bool8 MovementType_RotateClockwise_Step1(struct ObjectEvent *objectEvent, struct
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
SetMovementDelay(sprite, 48);
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
}
return FALSE;
}
@@ -3791,7 +3766,7 @@ bool8 MovementType_RotateClockwise_Step2(struct ObjectEvent *objectEvent, struct
{
if (WaitForMovementDelay(sprite) || ObjectEventIsTrainerAndCloseToPlayer(objectEvent))
{
- sprite->data[1] = 3;
+ sprite->sTypeFuncId = 3;
}
return FALSE;
}
@@ -3807,7 +3782,7 @@ bool8 MovementType_RotateClockwise_Step3(struct ObjectEvent *objectEvent, struct
direction = directions[objectEvent->facingDirection];
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 0;
+ sprite->sTypeFuncId = 0;
return TRUE;
}
@@ -3816,7 +3791,7 @@ movement_type_def(MovementType_WalkBackAndForth, gMovementTypeFuncs_WalkBackAndF
bool8 MovementType_WalkBackAndForth_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3830,7 +3805,7 @@ bool8 MovementType_WalkBackAndForth_Step1(struct ObjectEvent *objectEvent, struc
direction = GetOppositeDirection(direction);
}
SetObjectEventDirection(objectEvent, direction);
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3859,7 +3834,7 @@ bool8 MovementType_WalkBackAndForth_Step2(struct ObjectEvent *objectEvent, struc
ObjectEventSetSingleMovement(objectEvent, sprite, movementActionId);
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 3;
+ sprite->sTypeFuncId = 3;
return TRUE;
}
@@ -3868,7 +3843,7 @@ bool8 MovementType_WalkBackAndForth_Step3(struct ObjectEvent *objectEvent, struc
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
objectEvent->singleMovementActive = FALSE;
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
}
return FALSE;
}
@@ -3876,7 +3851,7 @@ bool8 MovementType_WalkBackAndForth_Step3(struct ObjectEvent *objectEvent, struc
bool8 MovementType_WalkSequence_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -3904,7 +3879,7 @@ bool8 MoveNextDirectionInSequence(struct ObjectEvent *objectEvent, struct Sprite
ObjectEventSetSingleMovement(objectEvent, sprite, movementActionId);
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -3913,7 +3888,7 @@ bool8 MovementType_WalkSequence_Step2(struct ObjectEvent *objectEvent, struct Sp
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
objectEvent->singleMovementActive = FALSE;
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
}
return FALSE;
}
@@ -4239,7 +4214,7 @@ bool8 MovementType_CopyPlayer_Step0(struct ObjectEvent *objectEvent, struct Spri
{
objectEvent->directionSequenceIndex = GetPlayerFacingDirection();
}
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -4257,7 +4232,7 @@ bool8 MovementType_CopyPlayer_Step2(struct ObjectEvent *objectEvent, struct Spri
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
objectEvent->singleMovementActive = FALSE;
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
}
return FALSE;
}
@@ -4271,7 +4246,7 @@ bool8 CopyablePlayerMovement_FaceDirection(struct ObjectEvent *objectEvent, stru
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, playerDirection)));
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -4292,7 +4267,7 @@ bool8 CopyablePlayerMovement_GoSpeed0(struct ObjectEvent *objectEvent, struct Sp
ObjectEventMoveDestCoords(objectEvent, direction, &x, &y);
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction));
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
}
@@ -4307,7 +4282,7 @@ bool8 CopyablePlayerMovement_GoSpeed0(struct ObjectEvent *objectEvent, struct Sp
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction));
}
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -4326,7 +4301,7 @@ bool8 CopyablePlayerMovement_GoSpeed1(struct ObjectEvent *objectEvent, struct Sp
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction));
}
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -4345,7 +4320,7 @@ bool8 CopyablePlayerMovement_GoSpeed2(struct ObjectEvent *objectEvent, struct Sp
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction));
}
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -4364,7 +4339,7 @@ bool8 CopyablePlayerMovement_Slide(struct ObjectEvent *objectEvent, struct Sprit
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction));
}
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -4376,7 +4351,7 @@ bool8 cph_IM_DIFFERENT(struct ObjectEvent *objectEvent, struct Sprite *sprite, u
direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction);
ObjectEventSetSingleMovement(objectEvent, sprite, GetJumpInPlaceMovementAction(direction));
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -4395,7 +4370,7 @@ bool8 CopyablePlayerMovement_GoSpeed4(struct ObjectEvent *objectEvent, struct Sp
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction));
}
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -4416,7 +4391,7 @@ bool8 CopyablePlayerMovement_Jump(struct ObjectEvent *objectEvent, struct Sprite
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction));
}
objectEvent->singleMovementActive = TRUE;
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
@@ -4424,10 +4399,9 @@ movement_type_def(MovementType_CopyPlayerInGrass, gMovementTypeFuncs_CopyPlayerI
bool8 MovementType_CopyPlayerInGrass_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (gObjectEvents[gPlayerAvatar.objectEventId].movementActionId == 0xFF || gPlayerAvatar.tileTransitionState == T_TILE_CENTER)
- {
+ if (gObjectEvents[gPlayerAvatar.objectEventId].movementActionId == MOVEMENT_ACTION_NONE || gPlayerAvatar.tileTransitionState == T_TILE_CENTER)
return FALSE;
- }
+
return gCopyPlayerMovementFuncs[PlayerGetCopyableMovement()](objectEvent, sprite, GetPlayerMovementDirection(), MetatileBehavior_IsPokeGrass);
}
@@ -4435,7 +4409,7 @@ void MovementType_TreeDisguise(struct Sprite *sprite)
{
struct ObjectEvent *objectEvent;
- objectEvent = &gObjectEvents[sprite->data[0]];
+ objectEvent = &gObjectEvents[sprite->sObjEventId];
if (objectEvent->directionSequenceIndex == 0 || (objectEvent->directionSequenceIndex == 1 && !sprite->data[7]))
{
ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
@@ -4443,7 +4417,7 @@ void MovementType_TreeDisguise(struct Sprite *sprite)
objectEvent->directionSequenceIndex = 1;
sprite->data[7]++;
}
- UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, MovementType_Disguise_Callback);
+ UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->sObjEventId], sprite, MovementType_Disguise_Callback);
}
static bool8 MovementType_Disguise_Callback(struct ObjectEvent *objectEvent, struct Sprite *sprite)
@@ -4456,7 +4430,7 @@ void MovementType_MountainDisguise(struct Sprite *sprite)
{
struct ObjectEvent *objectEvent;
- objectEvent = &gObjectEvents[sprite->data[0]];
+ objectEvent = &gObjectEvents[sprite->sObjEventId];
if (objectEvent->directionSequenceIndex == 0 || (objectEvent->directionSequenceIndex == 1 && !sprite->data[7]))
{
ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
@@ -4464,24 +4438,24 @@ void MovementType_MountainDisguise(struct Sprite *sprite)
objectEvent->directionSequenceIndex = 1;
sprite->data[7]++;
}
- UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, MovementType_Disguise_Callback);
+ UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->sObjEventId], sprite, MovementType_Disguise_Callback);
}
void MovementType_Buried(struct Sprite *sprite)
{
if (!sprite->data[7])
{
- gObjectEvents[sprite->data[0]].fixedPriority = TRUE;
+ gObjectEvents[sprite->sObjEventId].fixedPriority = TRUE;
sprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY;
sprite->oam.priority = 3;
sprite->data[7]++;
}
- UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, MovementType_Buried_Callback);
+ UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->sObjEventId], sprite, MovementType_Buried_Callback);
}
static bool8 MovementType_Buried_Callback(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- return gMovementTypeFuncs_Buried[sprite->data[1]](objectEvent, sprite);
+ return gMovementTypeFuncs_Buried[sprite->sTypeFuncId](objectEvent, sprite);
}
bool8 MovementType_Buried_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
@@ -4494,7 +4468,7 @@ bool8 MovementType_MoveInPlace_Step1(struct ObjectEvent *objectEvent, struct Spr
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- sprite->data[1] = 0;
+ sprite->sTypeFuncId = 0;
}
return FALSE;
}
@@ -4505,7 +4479,7 @@ bool8 MovementType_WalkInPlace_Step0(struct ObjectEvent *objectEvent, struct Spr
{
ClearObjectEventMovement(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceNormalMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -4515,7 +4489,7 @@ bool8 MovementType_WalkSlowlyInPlace_Step0(struct ObjectEvent *objectEvent, stru
{
ClearObjectEventMovement(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceSlowMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -4525,7 +4499,7 @@ bool8 MovementType_JogInPlace_Step0(struct ObjectEvent *objectEvent, struct Spri
{
ClearObjectEventMovement(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceFastMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -4535,7 +4509,7 @@ bool8 MovementType_RunInPlace_Step0(struct ObjectEvent *objectEvent, struct Spri
{
ClearObjectEventMovement(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkInPlaceFastestMovementAction(objectEvent->facingDirection));
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
@@ -4546,14 +4520,14 @@ bool8 MovementType_Invisible_Step0(struct ObjectEvent *objectEvent, struct Sprit
ClearObjectEventMovement(objectEvent, sprite);
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(objectEvent->facingDirection));
objectEvent->invisible = TRUE;
- sprite->data[1] = 1;
+ sprite->sTypeFuncId = 1;
return TRUE;
}
bool8 MovementType_Invisible_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
if (ObjectEventExecSingleMovementAction(objectEvent, sprite))
{
- sprite->data[1] = 2;
+ sprite->sTypeFuncId = 2;
return TRUE;
}
return FALSE;
@@ -4571,159 +4545,147 @@ static void ClearObjectEventMovement(struct ObjectEvent *objectEvent, struct Spr
objectEvent->heldMovementActive = FALSE;
objectEvent->heldMovementFinished = FALSE;
objectEvent->movementActionId = 0xFF;
- sprite->data[1] = 0;
+ sprite->sTypeFuncId = 0;
}
u8 GetFaceDirectionAnimNum(u8 direction)
{
- return gFaceDirectionAnimNums[direction];
+ return sFaceDirectionAnimNums[direction];
}
u8 GetMoveDirectionAnimNum(u8 direction)
{
- return gMoveDirectionAnimNums[direction];
+ return sMoveDirectionAnimNums[direction];
}
u8 GetMoveDirectionFastAnimNum(u8 direction)
{
- return gMoveDirectionFastAnimNums[direction];
+ return sMoveDirectionFastAnimNums[direction];
}
u8 GetMoveDirectionFasterAnimNum(u8 direction)
{
- return gMoveDirectionFasterAnimNums[direction];
+ return sMoveDirectionFasterAnimNums[direction];
}
u8 GetMoveDirectionFastestAnimNum(u8 direction)
{
- return gMoveDirectionFastestAnimNums[direction];
+ return sMoveDirectionFastestAnimNums[direction];
}
u8 GetJumpSpecialDirectionAnimNum(u8 direction)
{
- return gJumpSpecialDirectionAnimNums[direction];
+ return sJumpSpecialDirectionAnimNums[direction];
}
u8 GetAcroWheelieDirectionAnimNum(u8 direction)
{
- return gAcroWheelieDirectionAnimNums[direction];
+ return sAcroWheelieDirectionAnimNums[direction];
}
-u8 Unref_GetAnimNums_08375633(u8 direction)
+u8 GetAcroUnusedDirectionAnimNum(u8 direction)
{
- return gUnrefAnimNums_08375633[direction];
+ return sAcroUnusedDirectionAnimNums[direction];
}
u8 GetAcroEndWheelieDirectionAnimNum(u8 direction)
{
- return gAcroEndWheelieDirectionAnimNums[direction];
+ return sAcroEndWheelieDirectionAnimNums[direction];
}
u8 GetAcroUnusedActionDirectionAnimNum(u8 direction)
{
- return gAcroUnusedActionDirectionAnimNums[direction];
+ return sAcroUnusedActionDirectionAnimNums[direction];
}
u8 GetAcroWheeliePedalDirectionAnimNum(u8 direction)
{
- return gAcroWheeliePedalDirectionAnimNums[direction];
+ return sAcroWheeliePedalDirectionAnimNums[direction];
}
u8 GetFishingDirectionAnimNum(u8 direction)
{
- return gFishingDirectionAnimNums[direction];
+ return sFishingDirectionAnimNums[direction];
}
u8 GetFishingNoCatchDirectionAnimNum(u8 direction)
{
- return gFishingNoCatchDirectionAnimNums[direction];
+ return sFishingNoCatchDirectionAnimNums[direction];
}
u8 GetFishingBiteDirectionAnimNum(u8 direction)
{
- return gFishingBiteDirectionAnimNums[direction];
+ return sFishingBiteDirectionAnimNums[direction];
}
u8 GetRunningDirectionAnimNum(u8 direction)
{
- return gRunningDirectionAnimNums[direction];
+ return sRunningDirectionAnimNums[direction];
}
-static const struct UnkStruct_085094AC *sub_8092A4C(const union AnimCmd *const *anims)
+static const struct StepAnimTable *GetStepAnimTable(const union AnimCmd *const *anims)
{
- const struct UnkStruct_085094AC *retval;
+ const struct StepAnimTable *stepTable;
- for (retval = gUnknown_085094AC; retval->anims != NULL; retval++)
+ for (stepTable = sStepAnimTables; stepTable->anims != NULL; stepTable++)
{
- if (retval->anims == anims)
- {
- return retval;
- }
+ if (stepTable->anims == anims)
+ return stepTable;
}
return NULL;
}
-void npc_apply_anim_looping(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 animNum)
+void SetStepAnimHandleAlternation(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 animNum)
{
- const struct UnkStruct_085094AC *unk85094AC;
+ const struct StepAnimTable *stepTable;
if (!objectEvent->inanimate)
{
sprite->animNum = animNum;
- unk85094AC = sub_8092A4C(sprite->anims);
- if (unk85094AC != NULL)
+ stepTable = GetStepAnimTable(sprite->anims);
+ if (stepTable != NULL)
{
- if (sprite->animCmdIndex == unk85094AC->animPos[0])
- {
- sprite->animCmdIndex = unk85094AC->animPos[3];
- }
- else if (sprite->animCmdIndex == unk85094AC->animPos[1])
- {
- sprite->animCmdIndex = unk85094AC->animPos[2];
- }
+ if (sprite->animCmdIndex == stepTable->animPos[0])
+ sprite->animCmdIndex = stepTable->animPos[3];
+ else if (sprite->animCmdIndex == stepTable->animPos[1])
+ sprite->animCmdIndex = stepTable->animPos[2];
}
SeekSpriteAnim(sprite, sprite->animCmdIndex);
}
}
-void obj_npc_animation_step(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 animNum)
+void SetStepAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 animNum)
{
- const struct UnkStruct_085094AC *unk85094AC;
+ const struct StepAnimTable *stepTable;
if (!objectEvent->inanimate)
{
u8 animPos;
sprite->animNum = animNum;
- unk85094AC = sub_8092A4C(sprite->anims);
- if (unk85094AC != NULL)
+ stepTable = GetStepAnimTable(sprite->anims);
+ if (stepTable != NULL)
{
- animPos = unk85094AC->animPos[1];
- if (sprite->animCmdIndex <= unk85094AC->animPos[0])
- {
- animPos = unk85094AC->animPos[0];
- }
+ animPos = stepTable->animPos[1];
+ if (sprite->animCmdIndex <= stepTable->animPos[0])
+ animPos = stepTable->animPos[0];
+
SeekSpriteAnim(sprite, animPos);
}
}
}
-// file boundary?
-
-u8 GetDirectionToFace(s16 x1, s16 y1, s16 x2, s16 y2)
+u8 GetDirectionToFace(s16 x, s16 y, s16 targetX, s16 targetY)
{
- if (x1 > x2)
- {
+ if (x > targetX)
return DIR_WEST;
- }
- if (x1 < x2)
- {
+
+ if (x < targetX)
return DIR_EAST;
- }
- if (y1 > y2)
- {
+
+ if (y > targetY)
return DIR_NORTH;
- }
+
return DIR_SOUTH;
}
@@ -4733,7 +4695,7 @@ void SetTrainerMovementType(struct ObjectEvent *objectEvent, u8 movementType)
objectEvent->directionSequenceIndex = 0;
objectEvent->playerCopyableMovement = 0;
gSprites[objectEvent->spriteId].callback = sMovementTypeCallbacks[movementType];
- gSprites[objectEvent->spriteId].data[1] = 0;
+ gSprites[objectEvent->spriteId].sTypeFuncId = 0;
}
u8 GetTrainerFacingDirectionMovementType(u8 direction)
@@ -4743,10 +4705,8 @@ u8 GetTrainerFacingDirectionMovementType(u8 direction)
static u8 GetCollisionInDirection(struct ObjectEvent *objectEvent, u8 direction)
{
- s16 x;
- s16 y;
- x = objectEvent->currentCoords.x;
- y = objectEvent->currentCoords.y;
+ s16 x = objectEvent->currentCoords.x;
+ s16 y = objectEvent->currentCoords.y;
MoveCoords(direction, &x, &y);
return GetCollisionAtCoords(objectEvent, x, y, direction);
}
@@ -4793,19 +4753,17 @@ static bool8 IsCoordOutsideObjectEventMovementRange(struct ObjectEvent *objectEv
{
left = objectEvent->initialCoords.x - objectEvent->rangeX;
right = objectEvent->initialCoords.x + objectEvent->rangeX;
+
if (left > x || right < x)
- {
return TRUE;
- }
}
if (objectEvent->rangeY != 0)
{
top = objectEvent->initialCoords.y - objectEvent->rangeY;
bottom = objectEvent->initialCoords.y + objectEvent->rangeY;
+
if (top > y || bottom < y)
- {
return TRUE;
- }
}
return FALSE;
}
@@ -4865,13 +4823,17 @@ void SetBerryTreeJustPicked(u8 localId, u8 mapNum, u8 mapGroup)
}
}
+#undef sTimer
+#undef sBerryTreeFlags
+
void MoveCoords(u8 direction, s16 *x, s16 *y)
{
*x += sDirectionToVectors[direction].x;
*y += sDirectionToVectors[direction].y;
}
-void sub_8092F60(u8 direction, s16 *x, s16 *y)
+// Unused
+static void MoveCoordsInMapCoordIncrement(u8 direction, s16 *x, s16 *y)
{
*x += sDirectionToVectors[direction].x << 4;
*y += sDirectionToVectors[direction].y << 4;
@@ -4892,7 +4854,7 @@ static void MoveCoordsInDirection(u32 dir, s16 *x, s16 *y, s16 deltaX, s16 delta
*y -= dy2;
}
-void sub_8092FF0(s16 x, s16 y, s16 *destX, s16 *destY)
+void GetMapCoordsFromSpritePos(s16 x, s16 y, s16 *destX, s16 *destY)
{
*destX = (x - gSaveBlock1Ptr->pos.x) << 4;
*destY = (y - gSaveBlock1Ptr->pos.y) << 4;
@@ -4931,22 +4893,18 @@ static void GetObjectEventMovingCameraOffset(s16 *x, s16 *y)
{
*x = 0;
*y = 0;
+
if (gFieldCamera.x > 0)
- {
(*x)++;
- }
+
if (gFieldCamera.x < 0)
- {
- (*x) --;
- }
+ (*x)--;
+
if (gFieldCamera.y > 0)
- {
(*y)++;
- }
+
if (gFieldCamera.y < 0)
- {
- (*y) --;
- }
+ (*y)--;
}
void ObjectEventMoveDestCoords(struct ObjectEvent *objectEvent, u32 direction, s16 *x, s16 *y)
@@ -4982,7 +4940,7 @@ bool8 ObjectEventSetHeldMovement(struct ObjectEvent *objectEvent, u8 movementAct
objectEvent->movementActionId = movementActionId;
objectEvent->heldMovementActive = TRUE;
objectEvent->heldMovementFinished = FALSE;
- gSprites[objectEvent->spriteId].data[2] = 0;
+ gSprites[objectEvent->spriteId].sActionFuncId = 0;
return FALSE;
}
@@ -5003,8 +4961,8 @@ void ObjectEventClearHeldMovement(struct ObjectEvent *objectEvent)
objectEvent->movementActionId = 0xFF;
objectEvent->heldMovementActive = FALSE;
objectEvent->heldMovementFinished = FALSE;
- gSprites[objectEvent->spriteId].data[1] = 0;
- gSprites[objectEvent->spriteId].data[2] = 0;
+ gSprites[objectEvent->spriteId].sTypeFuncId = 0;
+ gSprites[objectEvent->spriteId].sActionFuncId = 0;
}
u8 ObjectEventCheckHeldMovementStatus(struct ObjectEvent *objectEvent)
@@ -5029,7 +4987,7 @@ u8 ObjectEventGetHeldMovementActionId(struct ObjectEvent *objectEvent)
if (objectEvent->heldMovementActive)
return objectEvent->movementActionId;
- return 0xFF;
+ return MOVEMENT_ACTION_NONE;
}
void UpdateObjectEventCurrentMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite, bool8 (*callback)(struct ObjectEvent *, struct Sprite *))
@@ -5098,10 +5056,10 @@ dirn_to_anim(GetAcroEndWheelieMoveDirectionMovementAction, gAcroEndWheelieMoveDi
u8 GetOppositeDirection(u8 direction)
{
- u8 directions[sizeof gOppositeDirections];
+ u8 directions[sizeof sOppositeDirections];
- memcpy(directions, gOppositeDirections, sizeof gOppositeDirections);
- if (direction < 1 || direction > (sizeof gOppositeDirections))
+ memcpy(directions, sOppositeDirections, sizeof sOppositeDirections);
+ if (direction <= DIR_NONE || direction > (sizeof sOppositeDirections))
{
return direction;
}
@@ -5131,7 +5089,7 @@ static u32 state_to_direction(u8 a0, u32 a1, u32 a2)
static void ObjectEventExecHeldMovementAction(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (gMovementActionFuncs[objectEvent->movementActionId][sprite->data[2]](objectEvent, sprite))
+ if (gMovementActionFuncs[objectEvent->movementActionId][sprite->sActionFuncId](objectEvent, sprite))
{
objectEvent->heldMovementFinished = TRUE;
}
@@ -5139,10 +5097,10 @@ static void ObjectEventExecHeldMovementAction(struct ObjectEvent *objectEvent, s
static bool8 ObjectEventExecSingleMovementAction(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (gMovementActionFuncs[objectEvent->movementActionId][sprite->data[2]](objectEvent, sprite))
+ if (gMovementActionFuncs[objectEvent->movementActionId][sprite->sActionFuncId](objectEvent, sprite))
{
objectEvent->movementActionId = 0xFF;
- sprite->data[2] = 0;
+ sprite->sActionFuncId = 0;
return TRUE;
}
return FALSE;
@@ -5151,16 +5109,16 @@ static bool8 ObjectEventExecSingleMovementAction(struct ObjectEvent *objectEvent
static void ObjectEventSetSingleMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 animId)
{
objectEvent->movementActionId = animId;
- sprite->data[2] = 0;
+ sprite->sActionFuncId = 0;
}
static void FaceDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
{
SetObjectEventDirection(objectEvent, direction);
ShiftStillObjectEventCoords(objectEvent);
- obj_npc_animation_step(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection));
+ SetStepAnim(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection));
sprite->animPaused = TRUE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
}
bool8 MovementAction_FaceDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
@@ -5187,7 +5145,7 @@ bool8 MovementAction_FaceRight_Step0(struct ObjectEvent *objectEvent, struct Spr
return TRUE;
}
-void npc_apply_direction(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
+void InitNpcForMovement(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
{
s16 x;
s16 y;
@@ -5197,34 +5155,34 @@ void npc_apply_direction(struct ObjectEvent *objectEvent, struct Sprite *sprite,
SetObjectEventDirection(objectEvent, direction);
MoveCoords(direction, &x, &y);
ShiftObjectEventCoords(objectEvent, x, y);
- oamt_npc_ministep_reset(sprite, direction, speed);
+ SetSpriteDataForNormalStep(sprite, direction, speed);
sprite->animPaused = FALSE;
- if (gLockedAnimObjectEvents != NULL && FindLockedObjectEventIndex(objectEvent) != OBJECT_EVENTS_COUNT)
- {
+
+ if (sLockedAnimObjectEvents != NULL && FindLockedObjectEventIndex(objectEvent) != OBJECT_EVENTS_COUNT)
sprite->animPaused = TRUE;
- }
+
objectEvent->triggerGroundEffectsOnMove = TRUE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
}
-void do_go_anim(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
+static void InitMovementNormal(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
{
- u8 (*functions[ARRAY_COUNT(gUnknown_0850DEE8)])(u8);
+ u8 (*functions[ARRAY_COUNT(sDirectionAnimFuncsBySpeed)])(u8);
- memcpy(functions, gUnknown_0850DEE8, sizeof gUnknown_0850DEE8);
- npc_apply_direction(objectEvent, sprite, direction, speed);
- npc_apply_anim_looping(objectEvent, sprite, functions[speed](objectEvent->facingDirection));
+ memcpy(functions, sDirectionAnimFuncsBySpeed, sizeof sDirectionAnimFuncsBySpeed);
+ InitNpcForMovement(objectEvent, sprite, direction, speed);
+ SetStepAnimHandleAlternation(objectEvent, sprite, functions[speed](objectEvent->facingDirection));
}
-void StartRunningAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
+static void StartRunningAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
{
- npc_apply_direction(objectEvent, sprite, direction, 1);
- npc_apply_anim_looping(objectEvent, sprite, GetRunningDirectionAnimNum(objectEvent->facingDirection));
+ InitNpcForMovement(objectEvent, sprite, direction, 1);
+ SetStepAnimHandleAlternation(objectEvent, sprite, GetRunningDirectionAnimNum(objectEvent->facingDirection));
}
-bool8 npc_obj_ministep_stop_on_arrival(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 UpdateMovementNormal(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (obj_npc_ministep(sprite))
+ if (NpcTakeStep(sprite))
{
ShiftStillObjectEventCoords(objectEvent);
objectEvent->triggerGroundEffectsOnStop = TRUE;
@@ -5234,7 +5192,7 @@ bool8 npc_obj_ministep_stop_on_arrival(struct ObjectEvent *objectEvent, struct S
return FALSE;
}
-void sub_8093AF0(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
+static void InitNpcForWalkSlow(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
{
s16 x;
s16 y;
@@ -5244,21 +5202,21 @@ void sub_8093AF0(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 dire
SetObjectEventDirection(objectEvent, direction);
MoveCoords(direction, &x, &y);
ShiftObjectEventCoords(objectEvent, x, y);
- sub_80976DC(sprite, direction);
+ SetWalkSlowSpriteData(sprite, direction);
sprite->animPaused = FALSE;
objectEvent->triggerGroundEffectsOnMove = TRUE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
}
-void sub_8093B60(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
+static void InitWalkSlow(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
{
- sub_8093AF0(objectEvent, sprite, direction);
- npc_apply_anim_looping(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection));
+ InitNpcForWalkSlow(objectEvent, sprite, direction);
+ SetStepAnimHandleAlternation(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection));
}
-bool8 an_walk_any_2(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 UpdateWalkSlow(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80976EC(sprite))
+ if (UpdateWalkSlowAnim(sprite))
{
ShiftStillObjectEventCoords(objectEvent);
objectEvent->triggerGroundEffectsOnStop = TRUE;
@@ -5270,15 +5228,15 @@ bool8 an_walk_any_2(struct ObjectEvent *objectEvent, struct Sprite *sprite)
bool8 MovementAction_WalkSlowDiagonalUpLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_NORTHWEST);
+ InitWalkSlow(objectEvent, sprite, DIR_NORTHWEST);
return MovementAction_WalkSlowDiagonalUpLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkSlowDiagonalUpLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5286,15 +5244,15 @@ bool8 MovementAction_WalkSlowDiagonalUpLeft_Step1(struct ObjectEvent *objectEven
bool8 MovementAction_WalkSlowDiagonalUpRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_NORTHEAST);
+ InitWalkSlow(objectEvent, sprite, DIR_NORTHEAST);
return MovementAction_WalkSlowDiagonalUpRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkSlowDiagonalUpRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5302,15 +5260,15 @@ bool8 MovementAction_WalkSlowDiagonalUpRight_Step1(struct ObjectEvent *objectEve
bool8 MovementAction_WalkSlowDiagonalDownLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_SOUTHWEST);
+ InitWalkSlow(objectEvent, sprite, DIR_SOUTHWEST);
return MovementAction_WalkSlowDiagonalDownLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkSlowDiagonalDownLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5318,15 +5276,15 @@ bool8 MovementAction_WalkSlowDiagonalDownLeft_Step1(struct ObjectEvent *objectEv
bool8 MovementAction_WalkSlowDiagonalDownRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_SOUTHEAST);
+ InitWalkSlow(objectEvent, sprite, DIR_SOUTHEAST);
return MovementAction_WalkSlowDiagonalDownRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkSlowDiagonalDownRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5334,15 +5292,15 @@ bool8 MovementAction_WalkSlowDiagonalDownRight_Step1(struct ObjectEvent *objectE
bool8 MovementAction_WalkSlowDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_SOUTH);
+ InitWalkSlow(objectEvent, sprite, DIR_SOUTH);
return MovementAction_WalkSlowDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkSlowDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5350,15 +5308,15 @@ bool8 MovementAction_WalkSlowDown_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_WalkSlowUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_NORTH);
+ InitWalkSlow(objectEvent, sprite, DIR_NORTH);
return MovementAction_WalkSlowUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkSlowUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5366,15 +5324,15 @@ bool8 MovementAction_WalkSlowUp_Step1(struct ObjectEvent *objectEvent, struct Sp
bool8 MovementAction_WalkSlowLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_WEST);
+ InitWalkSlow(objectEvent, sprite, DIR_WEST);
return MovementAction_WalkSlowLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkSlowLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5382,15 +5340,15 @@ bool8 MovementAction_WalkSlowLeft_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_WalkSlowRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_EAST);
+ InitWalkSlow(objectEvent, sprite, DIR_EAST);
return MovementAction_WalkSlowRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkSlowRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5398,15 +5356,15 @@ bool8 MovementAction_WalkSlowRight_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_WalkNormalDiagonalUpLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_NORTHWEST, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTHWEST, 0);
return MovementAction_WalkNormalDiagonalUpLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkNormalDiagonalUpLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5414,15 +5372,15 @@ bool8 MovementAction_WalkNormalDiagonalUpLeft_Step1(struct ObjectEvent *objectEv
bool8 MovementAction_WalkNormalDiagonalUpRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_NORTHEAST, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTHEAST, 0);
return MovementAction_WalkNormalDiagonalUpRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkNormalDiagonalUpRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5430,15 +5388,15 @@ bool8 MovementAction_WalkNormalDiagonalUpRight_Step1(struct ObjectEvent *objectE
bool8 MovementAction_WalkNormalDiagonalDownLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_SOUTHWEST, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTHWEST, 0);
return MovementAction_WalkNormalDiagonalDownLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkNormalDiagonalDownLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5446,15 +5404,15 @@ bool8 MovementAction_WalkNormalDiagonalDownLeft_Step1(struct ObjectEvent *object
bool8 MovementAction_WalkNormalDiagonalDownRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_SOUTHEAST, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTHEAST, 0);
return MovementAction_WalkNormalDiagonalDownRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkNormalDiagonalDownRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5462,15 +5420,15 @@ bool8 MovementAction_WalkNormalDiagonalDownRight_Step1(struct ObjectEvent *objec
bool8 MovementAction_WalkNormalDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_SOUTH, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 0);
return MovementAction_WalkNormalDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkNormalDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5478,15 +5436,15 @@ bool8 MovementAction_WalkNormalDown_Step1(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_WalkNormalUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_NORTH, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTH, 0);
return MovementAction_WalkNormalUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkNormalUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5494,15 +5452,15 @@ bool8 MovementAction_WalkNormalUp_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_WalkNormalLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_WEST, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_WEST, 0);
return MovementAction_WalkNormalLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkNormalLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5510,65 +5468,74 @@ bool8 MovementAction_WalkNormalLeft_Step1(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_WalkNormalRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_EAST, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_EAST, 0);
return MovementAction_WalkNormalRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkNormalRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
}
-void sub_8093FC4(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 a5)
+#define JUMP_HALFWAY 1
+#define JUMP_FINISHED ((u8)-1)
+
+enum {
+ JUMP_TYPE_HIGH,
+ JUMP_TYPE_LOW,
+ JUMP_TYPE_NORMAL,
+};
+
+static void InitJump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 type)
{
- s16 displacements[ARRAY_COUNT(gUnknown_0850DFBC)];
+ s16 displacements[ARRAY_COUNT(sJumpInitDisplacements)];
s16 x;
s16 y;
- memcpy(displacements, gUnknown_0850DFBC, sizeof gUnknown_0850DFBC);
+ memcpy(displacements, sJumpInitDisplacements, sizeof sJumpInitDisplacements);
x = 0;
y = 0;
SetObjectEventDirection(objectEvent, direction);
MoveCoordsInDirection(direction, &x, &y, displacements[speed], displacements[speed]);
ShiftObjectEventCoords(objectEvent, objectEvent->currentCoords.x + x, objectEvent->currentCoords.y + y);
- sub_809783C(sprite, direction, speed, a5);
- sprite->data[2] = 1;
- sprite->animPaused = 0;
- objectEvent->triggerGroundEffectsOnMove = 1;
- objectEvent->disableCoveringGroundEffects = 1;
+ SetJumpSpriteData(sprite, direction, speed, type);
+ sprite->sActionFuncId = 1;
+ sprite->animPaused = FALSE;
+ objectEvent->triggerGroundEffectsOnMove = TRUE;
+ objectEvent->disableCoveringGroundEffects = TRUE;
}
-void maybe_shadow_1(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 a4)
+static void InitJumpRegular(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 type)
{
- sub_8093FC4(objectEvent, sprite, direction, speed, a4);
- npc_apply_anim_looping(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection));
+ InitJump(objectEvent, sprite, direction, speed, type);
+ SetStepAnimHandleAlternation(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection));
DoShadowFieldEffect(objectEvent);
}
-u8 sub_80940C4(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 callback(struct Sprite *))
+static u8 UpdateJumpAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 callback(struct Sprite *))
{
- s16 displacements[ARRAY_COUNT(gUnknown_0850DFC2)];
+ s16 displacements[ARRAY_COUNT(sJumpDisplacements)];
s16 x;
s16 y;
u8 result;
- memcpy(displacements, gUnknown_0850DFC2, sizeof gUnknown_0850DFC2);
+ memcpy(displacements, sJumpDisplacements, sizeof sJumpDisplacements);
result = callback(sprite);
- if (result == 1 && displacements[sprite->data[4]] != 0)
+ if (result == JUMP_HALFWAY && displacements[sprite->sSpeed] != 0)
{
x = 0;
y = 0;
- MoveCoordsInDirection(objectEvent->movementDirection, &x, &y, displacements[sprite->data[4]], displacements[sprite->data[4]]);
+ MoveCoordsInDirection(objectEvent->movementDirection, &x, &y, displacements[sprite->sSpeed], displacements[sprite->sSpeed]);
ShiftObjectEventCoords(objectEvent, objectEvent->currentCoords.x + x, objectEvent->currentCoords.y + y);
objectEvent->triggerGroundEffectsOnMove = TRUE;
objectEvent->disableCoveringGroundEffects = TRUE;
}
- else if (result == 0xFF)
+ else if (result == JUMP_FINISHED)
{
ShiftStillObjectEventCoords(objectEvent);
objectEvent->triggerGroundEffectsOnStop = TRUE;
@@ -5578,43 +5545,41 @@ u8 sub_80940C4(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 callba
return result;
}
-u8 sub_8094188(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static u8 DoJumpAnimStep(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- return sub_80940C4(objectEvent, sprite, sub_809785C);
+ return UpdateJumpAnim(objectEvent, sprite, DoJumpSpriteMovement);
}
-u8 sub_809419C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static u8 DoJumpSpecialAnimStep(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- return sub_80940C4(objectEvent, sprite, sub_80978E4);
+ return UpdateJumpAnim(objectEvent, sprite, DoJumpSpecialSpriteMovement);
}
-bool8 sub_80941B0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 DoJumpAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_8094188(objectEvent, sprite) == 0xFF)
- {
+ if (DoJumpAnimStep(objectEvent, sprite) == JUMP_FINISHED)
return TRUE;
- }
+
return FALSE;
}
-bool8 sub_80941C8(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 DoJumpSpecialAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_809419C(objectEvent, sprite) == 0xFF)
- {
+ if (DoJumpSpecialAnimStep(objectEvent, sprite) == JUMP_FINISHED)
return TRUE;
- }
+
return FALSE;
}
-bool8 sub_80941E0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 DoJumpInPlaceAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- switch (sub_8094188(objectEvent, sprite))
+ switch (DoJumpAnimStep(objectEvent, sprite))
{
- case 255:
+ case JUMP_FINISHED:
return TRUE;
- case 1:
+ case JUMP_HALFWAY:
SetObjectEventDirection(objectEvent, GetOppositeDirection(objectEvent->movementDirection));
- obj_npc_animation_step(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection));
+ SetStepAnim(objectEvent, sprite, GetMoveDirectionAnimNum(objectEvent->facingDirection));
default:
return FALSE;
}
@@ -5622,16 +5587,16 @@ bool8 sub_80941E0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
bool8 MovementAction_Jump2Down_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_SOUTH, 2, 0);
+ InitJumpRegular(objectEvent, sprite, DIR_SOUTH, 2, JUMP_TYPE_HIGH);
return MovementAction_Jump2Down_Step1(objectEvent, sprite);
}
bool8 MovementAction_Jump2Down_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5639,16 +5604,16 @@ bool8 MovementAction_Jump2Down_Step1(struct ObjectEvent *objectEvent, struct Spr
bool8 MovementAction_Jump2Up_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_NORTH, 2, 0);
+ InitJumpRegular(objectEvent, sprite, DIR_NORTH, 2, JUMP_TYPE_HIGH);
return MovementAction_Jump2Up_Step1(objectEvent, sprite);
}
bool8 MovementAction_Jump2Up_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5656,16 +5621,16 @@ bool8 MovementAction_Jump2Up_Step1(struct ObjectEvent *objectEvent, struct Sprit
bool8 MovementAction_Jump2Left_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_WEST, 2, 0);
+ InitJumpRegular(objectEvent, sprite, DIR_WEST, 2, JUMP_TYPE_HIGH);
return MovementAction_Jump2Left_Step1(objectEvent, sprite);
}
bool8 MovementAction_Jump2Left_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5673,33 +5638,32 @@ bool8 MovementAction_Jump2Left_Step1(struct ObjectEvent *objectEvent, struct Spr
bool8 MovementAction_Jump2Right_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_EAST, 2, 0);
+ InitJumpRegular(objectEvent, sprite, DIR_EAST, 2, JUMP_TYPE_HIGH);
return MovementAction_Jump2Right_Step1(objectEvent, sprite);
}
bool8 MovementAction_Jump2Right_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
}
-
-void sub_8094390(struct Sprite *sprite, u16 duration)
+static void InitMovementDelay(struct Sprite *sprite, u16 duration)
{
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
sprite->data[3] = duration;
}
bool8 MovementAction_Delay_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (-- sprite->data[3] == 0)
+ if (--sprite->data[3] == 0)
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5707,45 +5671,45 @@ bool8 MovementAction_Delay_Step1(struct ObjectEvent *objectEvent, struct Sprite
bool8 MovementAction_Delay1_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094390(sprite, 1);
+ InitMovementDelay(sprite, 1);
return MovementAction_Delay_Step1(objectEvent, sprite);
}
bool8 MovementAction_Delay2_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094390(sprite, 2);
+ InitMovementDelay(sprite, 2);
return MovementAction_Delay_Step1(objectEvent, sprite);
}
bool8 MovementAction_Delay4_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094390(sprite, 4);
+ InitMovementDelay(sprite, 4);
return MovementAction_Delay_Step1(objectEvent, sprite);
}
bool8 MovementAction_Delay8_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094390(sprite, 8);
+ InitMovementDelay(sprite, 8);
return MovementAction_Delay_Step1(objectEvent, sprite);
}
bool8 MovementAction_Delay16_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094390(sprite, 16);
+ InitMovementDelay(sprite, 16);
return MovementAction_Delay_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkFastDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_SOUTH, 1);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 1);
return MovementAction_WalkFastDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkFastDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5753,15 +5717,15 @@ bool8 MovementAction_WalkFastDown_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_WalkFastUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_NORTH, 1);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTH, 1);
return MovementAction_WalkFastUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkFastUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5769,15 +5733,15 @@ bool8 MovementAction_WalkFastUp_Step1(struct ObjectEvent *objectEvent, struct Sp
bool8 MovementAction_WalkFastLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_WEST, 1);
+ InitMovementNormal(objectEvent, sprite, DIR_WEST, 1);
return MovementAction_WalkFastLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkFastLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5785,27 +5749,27 @@ bool8 MovementAction_WalkFastLeft_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_WalkFastRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_EAST, 1);
+ InitMovementNormal(objectEvent, sprite, DIR_EAST, 1);
return MovementAction_WalkFastRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkFastRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
}
-void sub_8094554(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 animNum, u16 duration)
+static void InitMoveInPlace(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 animNum, u16 duration)
{
SetObjectEventDirection(objectEvent, direction);
- npc_apply_anim_looping(objectEvent, sprite, animNum);
+ SetStepAnimHandleAlternation(objectEvent, sprite, animNum);
sprite->animPaused = FALSE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
sprite->data[3] = duration;
}
@@ -5813,7 +5777,7 @@ bool8 MovementAction_WalkInPlace_Step1(struct ObjectEvent *objectEvent, struct S
{
if (-- sprite->data[3] == 0)
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
sprite->animPaused = TRUE;
return TRUE;
}
@@ -5831,111 +5795,111 @@ bool8 MovementAction_WalkInPlaceSlow_Step1(struct ObjectEvent *objectEvent, stru
bool8 MovementAction_WalkInPlaceSlowDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionAnimNum(DIR_SOUTH), 32);
+ InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionAnimNum(DIR_SOUTH), 32);
return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceSlowUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 32);
+ InitMoveInPlace(objectEvent, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 32);
return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceSlowLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_WEST, GetMoveDirectionAnimNum(DIR_WEST), 32);
+ InitMoveInPlace(objectEvent, sprite, DIR_WEST, GetMoveDirectionAnimNum(DIR_WEST), 32);
return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceSlowRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_EAST, GetMoveDirectionAnimNum(DIR_EAST), 32);
+ InitMoveInPlace(objectEvent, sprite, DIR_EAST, GetMoveDirectionAnimNum(DIR_EAST), 32);
return MovementAction_WalkInPlaceSlow_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceNormalDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionAnimNum(DIR_SOUTH), 16);
+ InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionAnimNum(DIR_SOUTH), 16);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceNormalUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 16);
+ InitMoveInPlace(objectEvent, sprite, DIR_NORTH, GetMoveDirectionAnimNum(DIR_NORTH), 16);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceNormalLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_WEST, GetMoveDirectionAnimNum(DIR_WEST), 16);
+ InitMoveInPlace(objectEvent, sprite, DIR_WEST, GetMoveDirectionAnimNum(DIR_WEST), 16);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceNormalRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_EAST, GetMoveDirectionAnimNum(DIR_EAST), 16);
+ InitMoveInPlace(objectEvent, sprite, DIR_EAST, GetMoveDirectionAnimNum(DIR_EAST), 16);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceFastDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastAnimNum(DIR_SOUTH), 8);
+ InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFastAnimNum(DIR_SOUTH), 8);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceFastUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_NORTH, GetMoveDirectionFastAnimNum(DIR_NORTH), 8);
+ InitMoveInPlace(objectEvent, sprite, DIR_NORTH, GetMoveDirectionFastAnimNum(DIR_NORTH), 8);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceFastLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_WEST, GetMoveDirectionFastAnimNum(DIR_WEST), 8);
+ InitMoveInPlace(objectEvent, sprite, DIR_WEST, GetMoveDirectionFastAnimNum(DIR_WEST), 8);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceFastRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_EAST, GetMoveDirectionFastAnimNum(DIR_EAST), 8);
+ InitMoveInPlace(objectEvent, sprite, DIR_EAST, GetMoveDirectionFastAnimNum(DIR_EAST), 8);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceFastestDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFasterAnimNum(DIR_SOUTH), 4);
+ InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetMoveDirectionFasterAnimNum(DIR_SOUTH), 4);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceFastestUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_NORTH, GetMoveDirectionFasterAnimNum(DIR_NORTH), 4);
+ InitMoveInPlace(objectEvent, sprite, DIR_NORTH, GetMoveDirectionFasterAnimNum(DIR_NORTH), 4);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceFastestLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_WEST, GetMoveDirectionFasterAnimNum(DIR_WEST), 4);
+ InitMoveInPlace(objectEvent, sprite, DIR_WEST, GetMoveDirectionFasterAnimNum(DIR_WEST), 4);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkInPlaceFastestRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_EAST, GetMoveDirectionFasterAnimNum(DIR_EAST), 4);
+ InitMoveInPlace(objectEvent, sprite, DIR_EAST, GetMoveDirectionFasterAnimNum(DIR_EAST), 4);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_RideWaterCurrentDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_SOUTH, 2);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 2);
return MovementAction_RideWaterCurrentDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_RideWaterCurrentDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5943,15 +5907,15 @@ bool8 MovementAction_RideWaterCurrentDown_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_RideWaterCurrentUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_NORTH, 2);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTH, 2);
return MovementAction_RideWaterCurrentUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_RideWaterCurrentUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5959,15 +5923,15 @@ bool8 MovementAction_RideWaterCurrentUp_Step1(struct ObjectEvent *objectEvent, s
bool8 MovementAction_RideWaterCurrentLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_WEST, 2);
+ InitMovementNormal(objectEvent, sprite, DIR_WEST, 2);
return MovementAction_RideWaterCurrentLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_RideWaterCurrentLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5975,15 +5939,15 @@ bool8 MovementAction_RideWaterCurrentLeft_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_RideWaterCurrentRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_EAST, 2);
+ InitMovementNormal(objectEvent, sprite, DIR_EAST, 2);
return MovementAction_RideWaterCurrentRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_RideWaterCurrentRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -5991,15 +5955,15 @@ bool8 MovementAction_RideWaterCurrentRight_Step1(struct ObjectEvent *objectEvent
bool8 MovementAction_WalkFastestDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_SOUTH, 3);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 3);
return MovementAction_WalkFastestDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkFastestDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6007,15 +5971,15 @@ bool8 MovementAction_WalkFastestDown_Step1(struct ObjectEvent *objectEvent, stru
bool8 MovementAction_WalkFastestUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_NORTH, 3);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTH, 3);
return MovementAction_WalkFastestUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkFastestUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6023,15 +5987,15 @@ bool8 MovementAction_WalkFastestUp_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_WalkFastestLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_WEST, 3);
+ InitMovementNormal(objectEvent, sprite, DIR_WEST, 3);
return MovementAction_WalkFastestLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkFastestLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6039,15 +6003,15 @@ bool8 MovementAction_WalkFastestLeft_Step1(struct ObjectEvent *objectEvent, stru
bool8 MovementAction_WalkFastestRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_EAST, 3);
+ InitMovementNormal(objectEvent, sprite, DIR_EAST, 3);
return MovementAction_WalkFastestRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_WalkFastestRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6055,15 +6019,15 @@ bool8 MovementAction_WalkFastestRight_Step1(struct ObjectEvent *objectEvent, str
bool8 MovementAction_SlideDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_SOUTH, 4);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 4);
return MovementAction_SlideDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_SlideDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6071,15 +6035,15 @@ bool8 MovementAction_SlideDown_Step1(struct ObjectEvent *objectEvent, struct Spr
bool8 MovementAction_SlideUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_NORTH, 4);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTH, 4);
return MovementAction_SlideUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_SlideUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6087,15 +6051,15 @@ bool8 MovementAction_SlideUp_Step1(struct ObjectEvent *objectEvent, struct Sprit
bool8 MovementAction_SlideLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_WEST, 4);
+ InitMovementNormal(objectEvent, sprite, DIR_WEST, 4);
return MovementAction_SlideLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_SlideLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6103,15 +6067,15 @@ bool8 MovementAction_SlideLeft_Step1(struct ObjectEvent *objectEvent, struct Spr
bool8 MovementAction_SlideRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_EAST, 4);
+ InitMovementNormal(objectEvent, sprite, DIR_EAST, 4);
return MovementAction_SlideRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_SlideRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6125,9 +6089,9 @@ bool8 MovementAction_PlayerRunDown_Step0(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_PlayerRunDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6141,9 +6105,9 @@ bool8 MovementAction_PlayerRunUp_Step0(struct ObjectEvent *objectEvent, struct S
bool8 MovementAction_PlayerRunUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6157,9 +6121,9 @@ bool8 MovementAction_PlayerRunLeft_Step0(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_PlayerRunLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6173,9 +6137,9 @@ bool8 MovementAction_PlayerRunRight_Step0(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_PlayerRunRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6185,7 +6149,7 @@ void StartSpriteAnimInDirection(struct ObjectEvent *objectEvent, struct Sprite *
{
SetAndStartSpriteAnim(sprite, animNum, 0);
SetObjectEventDirection(objectEvent, direction);
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
}
bool8 MovementAction_StartAnimInDirection_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
@@ -6198,29 +6162,29 @@ bool8 MovementAction_WaitSpriteAnim(struct ObjectEvent *objectEvent, struct Spri
{
if (SpriteAnimEnded(sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
}
-void sub_8094DE4(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
+static void InitJumpSpecial(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
{
- sub_8093FC4(objectEvent, sprite, direction, 1, 0);
+ InitJump(objectEvent, sprite, direction, 1, JUMP_TYPE_HIGH);
StartSpriteAnim(sprite, GetJumpSpecialDirectionAnimNum(direction));
}
bool8 MovementAction_JumpSpecialDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094DE4(objectEvent, sprite, DIR_SOUTH);
+ InitJumpSpecial(objectEvent, sprite, DIR_SOUTH);
return MovementAction_JumpSpecialDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpSpecialDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941C8(objectEvent, sprite))
+ if (DoJumpSpecialAnim(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
objectEvent->landingJump = FALSE;
return TRUE;
}
@@ -6229,15 +6193,15 @@ bool8 MovementAction_JumpSpecialDown_Step1(struct ObjectEvent *objectEvent, stru
bool8 MovementAction_JumpSpecialUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094DE4(objectEvent, sprite, DIR_NORTH);
+ InitJumpSpecial(objectEvent, sprite, DIR_NORTH);
return MovementAction_JumpSpecialUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpSpecialUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941C8(objectEvent, sprite))
+ if (DoJumpSpecialAnim(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
objectEvent->landingJump = FALSE;
return TRUE;
}
@@ -6246,15 +6210,15 @@ bool8 MovementAction_JumpSpecialUp_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_JumpSpecialLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094DE4(objectEvent, sprite, DIR_WEST);
+ InitJumpSpecial(objectEvent, sprite, DIR_WEST);
return MovementAction_JumpSpecialLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpSpecialLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941C8(objectEvent, sprite))
+ if (DoJumpSpecialAnim(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
objectEvent->landingJump = FALSE;
return TRUE;
}
@@ -6263,15 +6227,15 @@ bool8 MovementAction_JumpSpecialLeft_Step1(struct ObjectEvent *objectEvent, stru
bool8 MovementAction_JumpSpecialRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094DE4(objectEvent, sprite, DIR_EAST);
+ InitJumpSpecial(objectEvent, sprite, DIR_EAST);
return MovementAction_JumpSpecialRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpSpecialRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941C8(objectEvent, sprite))
+ if (DoJumpSpecialAnim(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
objectEvent->landingJump = FALSE;
return TRUE;
}
@@ -6286,7 +6250,7 @@ bool8 MovementAction_FacePlayer_Step0(struct ObjectEvent *objectEvent, struct Sp
{
FaceDirection(objectEvent, sprite, GetDirectionToFace(objectEvent->currentCoords.x, objectEvent->currentCoords.y, gObjectEvents[playerObjectId].currentCoords.x, gObjectEvents[playerObjectId].currentCoords.y));
}
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
@@ -6298,36 +6262,36 @@ bool8 MovementAction_FaceAwayPlayer_Step0(struct ObjectEvent *objectEvent, struc
{
FaceDirection(objectEvent, sprite, GetOppositeDirection(GetDirectionToFace(objectEvent->currentCoords.x, objectEvent->currentCoords.y, gObjectEvents[playerObjectId].currentCoords.x, gObjectEvents[playerObjectId].currentCoords.y)));
}
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_LockFacingDirection_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->facingDirectionLocked = TRUE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_UnlockFacingDirection_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->facingDirectionLocked = FALSE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_JumpDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_SOUTH, 1, 2);
+ InitJumpRegular(objectEvent, sprite, DIR_SOUTH, 1, JUMP_TYPE_NORMAL);
return MovementAction_JumpDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6335,16 +6299,16 @@ bool8 MovementAction_JumpDown_Step1(struct ObjectEvent *objectEvent, struct Spri
bool8 MovementAction_JumpUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_NORTH, 1, 2);
+ InitJumpRegular(objectEvent, sprite, DIR_NORTH, 1, JUMP_TYPE_NORMAL);
return MovementAction_JumpUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6352,16 +6316,16 @@ bool8 MovementAction_JumpUp_Step1(struct ObjectEvent *objectEvent, struct Sprite
bool8 MovementAction_JumpLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_WEST, 1, 2);
+ InitJumpRegular(objectEvent, sprite, DIR_WEST, 1, JUMP_TYPE_NORMAL);
return MovementAction_JumpLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6369,16 +6333,16 @@ bool8 MovementAction_JumpLeft_Step1(struct ObjectEvent *objectEvent, struct Spri
bool8 MovementAction_JumpRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_EAST, 1, 2);
+ InitJumpRegular(objectEvent, sprite, DIR_EAST, 1, JUMP_TYPE_NORMAL);
return MovementAction_JumpRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6386,16 +6350,16 @@ bool8 MovementAction_JumpRight_Step1(struct ObjectEvent *objectEvent, struct Spr
bool8 MovementAction_JumpInPlaceDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_SOUTH, 0, 0);
+ InitJumpRegular(objectEvent, sprite, DIR_SOUTH, 0, JUMP_TYPE_HIGH);
return MovementAction_JumpInPlaceDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpInPlaceDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6403,16 +6367,16 @@ bool8 MovementAction_JumpInPlaceDown_Step1(struct ObjectEvent *objectEvent, stru
bool8 MovementAction_JumpInPlaceUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_NORTH, 0, 0);
+ InitJumpRegular(objectEvent, sprite, DIR_NORTH, 0, JUMP_TYPE_HIGH);
return MovementAction_JumpInPlaceUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpInPlaceUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6420,16 +6384,16 @@ bool8 MovementAction_JumpInPlaceUp_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_JumpInPlaceLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_WEST, 0, 0);
+ InitJumpRegular(objectEvent, sprite, DIR_WEST, 0, JUMP_TYPE_HIGH);
return MovementAction_JumpInPlaceLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpInPlaceLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6437,16 +6401,16 @@ bool8 MovementAction_JumpInPlaceLeft_Step1(struct ObjectEvent *objectEvent, stru
bool8 MovementAction_JumpInPlaceRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_EAST, 0, 0);
+ InitJumpRegular(objectEvent, sprite, DIR_EAST, 0, JUMP_TYPE_HIGH);
return MovementAction_JumpInPlaceRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpInPlaceRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6454,16 +6418,16 @@ bool8 MovementAction_JumpInPlaceRight_Step1(struct ObjectEvent *objectEvent, str
bool8 MovementAction_JumpInPlaceDownUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_SOUTH, 0, 2);
+ InitJumpRegular(objectEvent, sprite, DIR_SOUTH, 0, JUMP_TYPE_NORMAL);
return MovementAction_JumpInPlaceDownUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpInPlaceDownUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941E0(objectEvent, sprite))
+ if (DoJumpInPlaceAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6471,16 +6435,16 @@ bool8 MovementAction_JumpInPlaceDownUp_Step1(struct ObjectEvent *objectEvent, st
bool8 MovementAction_JumpInPlaceUpDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_NORTH, 0, 2);
+ InitJumpRegular(objectEvent, sprite, DIR_NORTH, 0, JUMP_TYPE_NORMAL);
return MovementAction_JumpInPlaceUpDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpInPlaceUpDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941E0(objectEvent, sprite))
+ if (DoJumpInPlaceAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6488,16 +6452,16 @@ bool8 MovementAction_JumpInPlaceUpDown_Step1(struct ObjectEvent *objectEvent, st
bool8 MovementAction_JumpInPlaceLeftRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_WEST, 0, 2);
+ InitJumpRegular(objectEvent, sprite, DIR_WEST, 0, JUMP_TYPE_NORMAL);
return MovementAction_JumpInPlaceLeftRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpInPlaceLeftRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941E0(objectEvent, sprite))
+ if (DoJumpInPlaceAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6505,16 +6469,16 @@ bool8 MovementAction_JumpInPlaceLeftRight_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_JumpInPlaceRightLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- maybe_shadow_1(objectEvent, sprite, DIR_EAST, 0, 2);
+ InitJumpRegular(objectEvent, sprite, DIR_EAST, 0, JUMP_TYPE_NORMAL);
return MovementAction_JumpInPlaceRightLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_JumpInPlaceRightLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941E0(objectEvent, sprite))
+ if (DoJumpInPlaceAnim(objectEvent, sprite))
{
objectEvent->hasShadow = 0;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6535,42 +6499,42 @@ bool8 MovementAction_NurseJoyBowDown_Step0(struct ObjectEvent *objectEvent, stru
bool8 MovementAction_EnableJumpLandingGroundEffect_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->disableJumpLandingGroundEffect = FALSE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_DisableJumpLandingGroundEffect_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->disableJumpLandingGroundEffect = TRUE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_DisableAnimation_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->inanimate = TRUE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_RestoreAnimation_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->inanimate = GetObjectEventGraphicsInfo(objectEvent->graphicsId)->inanimate;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_SetInvisible_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->invisible = TRUE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_SetVisible_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->invisible = FALSE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
@@ -6578,7 +6542,7 @@ bool8 MovementAction_EmoteExclamationMark_Step0(struct ObjectEvent *objectEvent,
{
ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON);
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
@@ -6586,7 +6550,7 @@ bool8 MovementAction_EmoteQuestionMark_Step0(struct ObjectEvent *objectEvent, st
{
ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
FieldEffectStart(FLDEFF_QUESTION_MARK_ICON);
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
@@ -6594,7 +6558,7 @@ bool8 MovementAction_EmoteHeart_Step0(struct ObjectEvent *objectEvent, struct Sp
{
ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
FieldEffectStart(FLDEFF_HEART_ICON);
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
@@ -6607,19 +6571,19 @@ bool8 MovementAction_RevealTrainer_Step0(struct ObjectEvent *objectEvent, struct
}
if (objectEvent->movementType != MOVEMENT_TYPE_TREE_DISGUISE && objectEvent->movementType != MOVEMENT_TYPE_MOUNTAIN_DISGUISE)
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
- sub_8155D78(objectEvent);
- sprite->data[2] = 1;
+ StartRevealDisguise(objectEvent);
+ sprite->sActionFuncId = 1;
return MovementAction_RevealTrainer_Step1(objectEvent, sprite);
}
bool8 MovementAction_RevealTrainer_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_8155DA0(objectEvent))
+ if (UpdateRevealDisguise(objectEvent))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6628,7 +6592,7 @@ bool8 MovementAction_RevealTrainer_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_RockSmashBreak_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
SetAndStartSpriteAnim(sprite, 1, 0);
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return FALSE;
}
@@ -6637,7 +6601,7 @@ bool8 MovementAction_RockSmashBreak_Step1(struct ObjectEvent *objectEvent, struc
if (SpriteAnimEnded(sprite))
{
SetMovementDelay(sprite, 32);
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
}
return FALSE;
}
@@ -6648,7 +6612,7 @@ bool8 MovementAction_RockSmashBreak_Step2(struct ObjectEvent *objectEvent, struc
if (WaitForMovementDelay(sprite))
{
objectEvent->invisible = TRUE;
- sprite->data[2] = 3;
+ sprite->sActionFuncId = 3;
}
return FALSE;
}
@@ -6656,7 +6620,7 @@ bool8 MovementAction_RockSmashBreak_Step2(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_CutTree_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
SetAndStartSpriteAnim(sprite, 1, 0);
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return FALSE;
}
@@ -6665,7 +6629,7 @@ bool8 MovementAction_CutTree_Step1(struct ObjectEvent *objectEvent, struct Sprit
if (SpriteAnimEnded(sprite))
{
SetMovementDelay(sprite, 32);
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
}
return FALSE;
}
@@ -6676,7 +6640,7 @@ bool8 MovementAction_CutTree_Step2(struct ObjectEvent *objectEvent, struct Sprit
if (WaitForMovementDelay(sprite))
{
objectEvent->invisible = TRUE;
- sprite->data[2] = 3;
+ sprite->sActionFuncId = 3;
}
return FALSE;
}
@@ -6684,14 +6648,14 @@ bool8 MovementAction_CutTree_Step2(struct ObjectEvent *objectEvent, struct Sprit
bool8 MovementAction_SetFixedPriority_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->fixedPriority = TRUE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_ClearFixedPriority_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
objectEvent->fixedPriority = FALSE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
@@ -6726,7 +6690,7 @@ bool8 MovementAction_ShowReflection_Step0(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_WalkDownStartAffine_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_SOUTH);
+ InitWalkSlow(objectEvent, sprite, DIR_SOUTH);
sprite->affineAnimPaused = FALSE;
StartSpriteAffineAnimIfDifferent(sprite, 0);
return MovementAction_WalkDownStartAffine_Step1(objectEvent, sprite);
@@ -6734,10 +6698,10 @@ bool8 MovementAction_WalkDownStartAffine_Step0(struct ObjectEvent *objectEvent,
bool8 MovementAction_WalkDownStartAffine_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
sprite->affineAnimPaused = TRUE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6745,7 +6709,7 @@ bool8 MovementAction_WalkDownStartAffine_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_WalkDownAffine_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8093B60(objectEvent, sprite, DIR_SOUTH);
+ InitWalkSlow(objectEvent, sprite, DIR_SOUTH);
sprite->affineAnimPaused = FALSE;
ChangeSpriteAffineAnimIfDifferent(sprite, 1);
return MovementAction_WalkDownAffine_Step1(objectEvent, sprite);
@@ -6753,10 +6717,10 @@ bool8 MovementAction_WalkDownAffine_Step0(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_WalkDownAffine_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (an_walk_any_2(objectEvent, sprite))
+ if (UpdateWalkSlow(objectEvent, sprite))
{
sprite->affineAnimPaused = TRUE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6764,7 +6728,7 @@ bool8 MovementAction_WalkDownAffine_Step1(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_WalkLeftAffine_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_WEST, 1);
+ InitMovementNormal(objectEvent, sprite, DIR_WEST, 1);
sprite->affineAnimPaused = FALSE;
ChangeSpriteAffineAnimIfDifferent(sprite, 2);
return MovementAction_WalkLeftAffine_Step1(objectEvent, sprite);
@@ -6772,10 +6736,10 @@ bool8 MovementAction_WalkLeftAffine_Step0(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_WalkLeftAffine_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
sprite->affineAnimPaused = TRUE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6783,7 +6747,7 @@ bool8 MovementAction_WalkLeftAffine_Step1(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_WalkRightAffine_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- do_go_anim(objectEvent, sprite, DIR_EAST, 1);
+ InitMovementNormal(objectEvent, sprite, DIR_EAST, 1);
sprite->affineAnimPaused = FALSE;
ChangeSpriteAffineAnimIfDifferent(sprite, 3);
return MovementAction_WalkRightAffine_Step1(objectEvent, sprite);
@@ -6791,45 +6755,45 @@ bool8 MovementAction_WalkRightAffine_Step0(struct ObjectEvent *objectEvent, stru
bool8 MovementAction_WalkRightAffine_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
sprite->affineAnimPaused = TRUE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
}
-static void sub_80958C0(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
+static void AcroWheelieFaceDirection(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
{
SetObjectEventDirection(objectEvent, direction);
ShiftStillObjectEventCoords(objectEvent);
- obj_npc_animation_step(objectEvent, sprite, GetAcroWheeliePedalDirectionAnimNum(direction));
+ SetStepAnim(objectEvent, sprite, GetAcroWheeliePedalDirectionAnimNum(direction));
sprite->animPaused = TRUE;
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
}
bool8 MovementAction_AcroWheelieFaceDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_80958C0(objectEvent, sprite, DIR_SOUTH);
+ AcroWheelieFaceDirection(objectEvent, sprite, DIR_SOUTH);
return TRUE;
}
bool8 MovementAction_AcroWheelieFaceUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_80958C0(objectEvent, sprite, DIR_NORTH);
+ AcroWheelieFaceDirection(objectEvent, sprite, DIR_NORTH);
return TRUE;
}
bool8 MovementAction_AcroWheelieFaceLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_80958C0(objectEvent, sprite, DIR_WEST);
+ AcroWheelieFaceDirection(objectEvent, sprite, DIR_WEST);
return TRUE;
}
bool8 MovementAction_AcroWheelieFaceRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_80958C0(objectEvent, sprite, DIR_EAST);
+ AcroWheelieFaceDirection(objectEvent, sprite, DIR_EAST);
return TRUE;
}
@@ -6926,7 +6890,7 @@ bool8 DoFigure8Anim(struct ObjectEvent *objectEvent, struct Sprite *sprite)
bool8 MovementAction_Figure8_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
InitFigure8Anim(objectEvent, sprite);
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return MovementAction_Figure8_Step1(objectEvent, sprite);
}
@@ -6934,31 +6898,31 @@ bool8 MovementAction_Figure8_Step1(struct ObjectEvent *objectEvent, struct Sprit
{
if (DoFigure8Anim(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
}
-void sub_8095B84(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 a4)
+static void InitAcroWheelieJump(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed, u8 type)
{
- sub_8093FC4(objectEvent, sprite, direction, speed, a4);
+ InitJump(objectEvent, sprite, direction, speed, type);
StartSpriteAnimIfDifferent(sprite, GetAcroWheelieDirectionAnimNum(direction));
DoShadowFieldEffect(objectEvent);
}
bool8 MovementAction_AcroWheelieHopFaceDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_SOUTH, 0, 1);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_SOUTH, 0, JUMP_TYPE_LOW);
return MovementAction_AcroWheelieHopFaceDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieHopFaceDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6966,16 +6930,16 @@ bool8 MovementAction_AcroWheelieHopFaceDown_Step1(struct ObjectEvent *objectEven
bool8 MovementAction_AcroWheelieHopFaceUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_NORTH, 0, 1);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_NORTH, 0, JUMP_TYPE_LOW);
return MovementAction_AcroWheelieHopFaceUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieHopFaceUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -6983,16 +6947,16 @@ bool8 MovementAction_AcroWheelieHopFaceUp_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_AcroWheelieHopFaceLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_WEST, 0, 1);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_WEST, 0, JUMP_TYPE_LOW);
return MovementAction_AcroWheelieHopFaceLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7000,16 +6964,16 @@ bool8 MovementAction_AcroWheelieHopFaceLeft_Step1(struct ObjectEvent *objectEven
bool8 MovementAction_AcroWheelieHopFaceRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_EAST, 0, 1);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_EAST, 0, JUMP_TYPE_LOW);
return MovementAction_AcroWheelieHopFaceRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieHopFaceRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7017,16 +6981,16 @@ bool8 MovementAction_AcroWheelieHopFaceRight_Step1(struct ObjectEvent *objectEve
bool8 MovementAction_AcroWheelieHopDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_SOUTH, 1, 1);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_SOUTH, 1, JUMP_TYPE_LOW);
return MovementAction_AcroWheelieHopDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieHopDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7034,16 +6998,16 @@ bool8 MovementAction_AcroWheelieHopDown_Step1(struct ObjectEvent *objectEvent, s
bool8 MovementAction_AcroWheelieHopUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_NORTH, 1, 1);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_NORTH, 1, JUMP_TYPE_LOW);
return MovementAction_AcroWheelieHopUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieHopUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7051,16 +7015,16 @@ bool8 MovementAction_AcroWheelieHopUp_Step1(struct ObjectEvent *objectEvent, str
bool8 MovementAction_AcroWheelieHopLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_WEST, 1, 1);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_WEST, 1, JUMP_TYPE_LOW);
return MovementAction_AcroWheelieHopLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieHopLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7068,16 +7032,16 @@ bool8 MovementAction_AcroWheelieHopLeft_Step1(struct ObjectEvent *objectEvent, s
bool8 MovementAction_AcroWheelieHopRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_EAST, 1, 1);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_EAST, 1, JUMP_TYPE_LOW);
return MovementAction_AcroWheelieHopRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieHopRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7085,16 +7049,16 @@ bool8 MovementAction_AcroWheelieHopRight_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_AcroWheelieJumpDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_SOUTH, 2, 0);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_SOUTH, 2, JUMP_TYPE_HIGH);
return MovementAction_AcroWheelieJumpDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieJumpDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7102,16 +7066,16 @@ bool8 MovementAction_AcroWheelieJumpDown_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_AcroWheelieJumpUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_NORTH, 2, 0);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_NORTH, 2, JUMP_TYPE_HIGH);
return MovementAction_AcroWheelieJumpUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieJumpUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7119,16 +7083,16 @@ bool8 MovementAction_AcroWheelieJumpUp_Step1(struct ObjectEvent *objectEvent, st
bool8 MovementAction_AcroWheelieJumpLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_WEST, 2, 0);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_WEST, 2, JUMP_TYPE_HIGH);
return MovementAction_AcroWheelieJumpLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieJumpLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7136,16 +7100,16 @@ bool8 MovementAction_AcroWheelieJumpLeft_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_AcroWheelieJumpRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095B84(objectEvent, sprite, DIR_EAST, 2, 0);
+ InitAcroWheelieJump(objectEvent, sprite, DIR_EAST, 2, JUMP_TYPE_HIGH);
return MovementAction_AcroWheelieJumpRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieJumpRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_80941B0(objectEvent, sprite))
+ if (DoJumpAnim(objectEvent, sprite))
{
objectEvent->hasShadow = FALSE;
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7153,46 +7117,46 @@ bool8 MovementAction_AcroWheelieJumpRight_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_AcroWheelieInPlaceDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_SOUTH, GetAcroWheeliePedalDirectionAnimNum(DIR_SOUTH), 8);
+ InitMoveInPlace(objectEvent, sprite, DIR_SOUTH, GetAcroWheeliePedalDirectionAnimNum(DIR_SOUTH), 8);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieInPlaceUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_NORTH, GetAcroWheeliePedalDirectionAnimNum(DIR_NORTH), 8);
+ InitMoveInPlace(objectEvent, sprite, DIR_NORTH, GetAcroWheeliePedalDirectionAnimNum(DIR_NORTH), 8);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieInPlaceLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_WEST, GetAcroWheeliePedalDirectionAnimNum(DIR_WEST), 8);
+ InitMoveInPlace(objectEvent, sprite, DIR_WEST, GetAcroWheeliePedalDirectionAnimNum(DIR_WEST), 8);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieInPlaceRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8094554(objectEvent, sprite, DIR_EAST, GetAcroWheeliePedalDirectionAnimNum(DIR_EAST), 8);
+ InitMoveInPlace(objectEvent, sprite, DIR_EAST, GetAcroWheeliePedalDirectionAnimNum(DIR_EAST), 8);
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
}
-void sub_80960C8(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
+static void InitAcroPopWheelie(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
{
- npc_apply_direction(objectEvent, sprite, direction, speed);
+ InitNpcForMovement(objectEvent, sprite, direction, speed);
StartSpriteAnim(sprite, GetAcroWheelieDirectionAnimNum(objectEvent->facingDirection));
SeekSpriteAnim(sprite, 0);
}
bool8 MovementAction_AcroPopWheelieMoveDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_80960C8(objectEvent, sprite, DIR_SOUTH, 1);
+ InitAcroPopWheelie(objectEvent, sprite, DIR_SOUTH, 1);
return MovementAction_AcroPopWheelieMoveDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroPopWheelieMoveDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7200,15 +7164,15 @@ bool8 MovementAction_AcroPopWheelieMoveDown_Step1(struct ObjectEvent *objectEven
bool8 MovementAction_AcroPopWheelieMoveUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_80960C8(objectEvent, sprite, DIR_NORTH, 1);
+ InitAcroPopWheelie(objectEvent, sprite, DIR_NORTH, 1);
return MovementAction_AcroPopWheelieMoveUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroPopWheelieMoveUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7216,15 +7180,15 @@ bool8 MovementAction_AcroPopWheelieMoveUp_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_AcroPopWheelieMoveLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_80960C8(objectEvent, sprite, DIR_WEST, 1);
+ InitAcroPopWheelie(objectEvent, sprite, DIR_WEST, 1);
return MovementAction_AcroPopWheelieMoveLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroPopWheelieMoveLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7232,37 +7196,37 @@ bool8 MovementAction_AcroPopWheelieMoveLeft_Step1(struct ObjectEvent *objectEven
bool8 MovementAction_AcroPopWheelieMoveRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_80960C8(objectEvent, sprite, DIR_EAST, 1);
+ InitAcroPopWheelie(objectEvent, sprite, DIR_EAST, 1);
return MovementAction_AcroPopWheelieMoveRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroPopWheelieMoveRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
}
-void sub_8096200(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
+static void InitAcroWheelieMove(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
{
- npc_apply_direction(objectEvent, sprite, direction, speed);
- npc_apply_anim_looping(objectEvent, sprite, GetAcroWheeliePedalDirectionAnimNum(objectEvent->facingDirection));
+ InitNpcForMovement(objectEvent, sprite, direction, speed);
+ SetStepAnimHandleAlternation(objectEvent, sprite, GetAcroWheeliePedalDirectionAnimNum(objectEvent->facingDirection));
}
bool8 MovementAction_AcroWheelieMoveDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8096200(objectEvent, sprite, DIR_SOUTH, 1);
+ InitAcroWheelieMove(objectEvent, sprite, DIR_SOUTH, 1);
return MovementAction_AcroWheelieMoveDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieMoveDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7270,15 +7234,15 @@ bool8 MovementAction_AcroWheelieMoveDown_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_AcroWheelieMoveUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8096200(objectEvent, sprite, DIR_NORTH, 1);
+ InitAcroWheelieMove(objectEvent, sprite, DIR_NORTH, 1);
return MovementAction_AcroWheelieMoveUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieMoveUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7286,15 +7250,15 @@ bool8 MovementAction_AcroWheelieMoveUp_Step1(struct ObjectEvent *objectEvent, st
bool8 MovementAction_AcroWheelieMoveLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8096200(objectEvent, sprite, DIR_WEST, 1);
+ InitAcroWheelieMove(objectEvent, sprite, DIR_WEST, 1);
return MovementAction_AcroWheelieMoveLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieMoveLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7302,38 +7266,38 @@ bool8 MovementAction_AcroWheelieMoveLeft_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_AcroWheelieMoveRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8096200(objectEvent, sprite, DIR_EAST, 1);
+ InitAcroWheelieMove(objectEvent, sprite, DIR_EAST, 1);
return MovementAction_AcroWheelieMoveRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroWheelieMoveRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
}
-void sub_8096330(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
+static void InitAcroEndWheelie(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction, u8 speed)
{
- npc_apply_direction(objectEvent, sprite, direction, speed);
+ InitNpcForMovement(objectEvent, sprite, direction, speed);
StartSpriteAnim(sprite, GetAcroEndWheelieDirectionAnimNum(objectEvent->facingDirection));
SeekSpriteAnim(sprite, 0);
}
bool8 MovementAction_AcroEndWheelieMoveDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8096330(objectEvent, sprite, DIR_SOUTH, 1);
+ InitAcroEndWheelie(objectEvent, sprite, DIR_SOUTH, 1);
return MovementAction_AcroEndWheelieMoveDown_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroEndWheelieMoveDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7341,15 +7305,15 @@ bool8 MovementAction_AcroEndWheelieMoveDown_Step1(struct ObjectEvent *objectEven
bool8 MovementAction_AcroEndWheelieMoveUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8096330(objectEvent, sprite, DIR_NORTH, 1);
+ InitAcroEndWheelie(objectEvent, sprite, DIR_NORTH, 1);
return MovementAction_AcroEndWheelieMoveUp_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroEndWheelieMoveUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7357,15 +7321,15 @@ bool8 MovementAction_AcroEndWheelieMoveUp_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_AcroEndWheelieMoveLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8096330(objectEvent, sprite, DIR_WEST, 1);
+ InitAcroEndWheelie(objectEvent, sprite, DIR_WEST, 1);
return MovementAction_AcroEndWheelieMoveLeft_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroEndWheelieMoveLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7373,15 +7337,15 @@ bool8 MovementAction_AcroEndWheelieMoveLeft_Step1(struct ObjectEvent *objectEven
bool8 MovementAction_AcroEndWheelieMoveRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8096330(objectEvent, sprite, DIR_EAST, 1);
+ InitAcroEndWheelie(objectEvent, sprite, DIR_EAST, 1);
return MovementAction_AcroEndWheelieMoveRight_Step1(objectEvent, sprite);
}
bool8 MovementAction_AcroEndWheelieMoveRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
+ if (UpdateMovementNormal(objectEvent, sprite))
{
- sprite->data[2] = 2;
+ sprite->sActionFuncId = 2;
return TRUE;
}
return FALSE;
@@ -7390,24 +7354,24 @@ bool8 MovementAction_AcroEndWheelieMoveRight_Step1(struct ObjectEvent *objectEve
bool8 MovementAction_Levitate_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
CreateLevitateMovementTask(objectEvent);
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
bool8 MovementAction_StopLevitate_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- DestroyExtraMovementTask(objectEvent->warpArrowSpriteId);
- sprite->pos2.y = 0;
- sprite->data[2] = 1;
+ DestroyLevitateMovementTask(objectEvent->warpArrowSpriteId);
+ sprite->y2 = 0;
+ sprite->sActionFuncId = 1;
return TRUE;
}
-bool8 MovementAction_DestroyExtraTaskIfAtTop_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+bool8 MovementAction_StopLevitateAtTop_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sprite->pos2.y == 0)
+ if (sprite->y2 == 0)
{
- DestroyExtraMovementTask(objectEvent->warpArrowSpriteId);
- sprite->data[2] = 1;
+ DestroyLevitateMovementTask(objectEvent->warpArrowSpriteId);
+ sprite->sActionFuncId = 1;
return TRUE;
}
return FALSE;
@@ -7444,49 +7408,46 @@ static void TryEnableObjectEventAnim(struct ObjectEvent *objectEvent, struct Spr
static void UpdateObjectEventVisibility(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8096530(objectEvent, sprite);
- UpdateObjEventSpriteVisibility(objectEvent, sprite);
+ UpdateObjectEventOffscreen(objectEvent, sprite);
+ UpdateObjectEventSpriteVisibility(objectEvent, sprite);
}
-static void sub_8096530(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static void UpdateObjectEventOffscreen(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
u16 x, y;
u16 x2, y2;
const struct ObjectEventGraphicsInfo *graphicsInfo;
objectEvent->offScreen = FALSE;
+
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
if (sprite->coordOffsetEnabled)
{
- x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
- y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
+ x = sprite->x + sprite->x2 + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
+ y = sprite->y + sprite->y2 + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
}
else
{
- x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
- y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
+ x = sprite->x + sprite->x2 + sprite->centerToCornerVecX;
+ y = sprite->y + sprite->y2 + sprite->centerToCornerVecY;
}
x2 = graphicsInfo->width;
x2 += x;
y2 = y;
y2 += graphicsInfo->height;
- if ((s16)x >= 0x100 || (s16)x2 < -0x10)
- {
+
+ if ((s16)x >= DISPLAY_WIDTH + 16 || (s16)x2 < -16)
objectEvent->offScreen = TRUE;
- }
- if ((s16)y >= 0xB0 || (s16)y2 < -0x10)
- {
+
+ if ((s16)y >= DISPLAY_HEIGHT + 16 || (s16)y2 < -16)
objectEvent->offScreen = TRUE;
- }
}
-static void UpdateObjEventSpriteVisibility(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static void UpdateObjectEventSpriteVisibility(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
sprite->invisible = FALSE;
if (objectEvent->invisible || objectEvent->offScreen)
- {
sprite->invisible = TRUE;
- }
}
static void GetAllGroundEffectFlags_OnSpawn(struct ObjectEvent *objEvent, u32 *flags)
@@ -7770,30 +7731,30 @@ static u8 GetReflectionTypeByMetatileBehavior(u32 behavior)
return REFL_TYPE_NONE;
}
-u8 GetLedgeJumpDirection(s16 x, s16 y, u8 z)
+u8 GetLedgeJumpDirection(s16 x, s16 y, u8 direction)
{
- static bool8 (*const unknown_08376040[])(u8) = {
- MetatileBehavior_IsJumpSouth,
- MetatileBehavior_IsJumpNorth,
- MetatileBehavior_IsJumpWest,
- MetatileBehavior_IsJumpEast,
+ static bool8 (*const ledgeBehaviorFuncs[])(u8) = {
+ [DIR_SOUTH - 1] = MetatileBehavior_IsJumpSouth,
+ [DIR_NORTH - 1] = MetatileBehavior_IsJumpNorth,
+ [DIR_WEST - 1] = MetatileBehavior_IsJumpWest,
+ [DIR_EAST - 1] = MetatileBehavior_IsJumpEast,
};
- u8 b;
- u8 index = z;
+ u8 behavior;
+ u8 index = direction;
- if (index == 0)
- return 0;
- else if (index > 4)
- index -= 4;
+ if (index == DIR_NONE)
+ return DIR_NONE;
+ else if (index > DIR_EAST)
+ index -= DIR_EAST;
index--;
- b = MapGridGetMetatileBehaviorAt(x, y);
+ behavior = MapGridGetMetatileBehaviorAt(x, y);
- if (unknown_08376040[index](b) == 1)
+ if (ledgeBehaviorFuncs[index](behavior) == TRUE)
return index + 1;
- return 0;
+ return DIR_NONE;
}
static void SetObjectEventSpriteOamTableForLongGrass(struct ObjectEvent *objEvent, struct Sprite *sprite)
@@ -7822,7 +7783,7 @@ bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y)
mapZ = MapGridGetZCoordAt(x, y);
- if (mapZ == 0 || mapZ == 0xF)
+ if (mapZ == 0 || mapZ == 15)
return FALSE;
if (mapZ != z)
@@ -7831,21 +7792,15 @@ bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y)
return FALSE;
}
-static const u8 sUnknown_08376050[] = {
- 0x73, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x00, 0x00, 0x73
+static const u8 sElevationToSubpriority[] = {
+ 115, 115, 83, 115, 83, 115, 83, 115, 83, 115, 83, 115, 83, 0, 0, 115
};
-// Each byte corresponds to a sprite priority for an object event.
-// This is directly the inverse of gObjectEventPriorities_08376070.
-static const u8 sObjectEventPriorities_08376060[] = {
+static const u8 sElevationToPriority[] = {
2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 2
};
-// Each byte corresponds to a sprite priority for an object event.
-// This is the inverse of gObjectEventPriorities_08376060.
-// 1 = Above player sprite
-// 2 = Below player sprite
-static const u8 sObjectEventPriorities_08376070[] = {
+static const u8 sElevationToSubspriteTableNum[] = {
1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1,
};
@@ -7856,19 +7811,19 @@ void UpdateObjectEventZCoordAndPriority(struct ObjectEvent *objEvent, struct Spr
ObjectEventUpdateZCoord(objEvent);
- sprite->subspriteTableNum = sObjectEventPriorities_08376070[objEvent->previousElevation];
- sprite->oam.priority = sObjectEventPriorities_08376060[objEvent->previousElevation];
+ sprite->subspriteTableNum = sElevationToSubspriteTableNum[objEvent->previousElevation];
+ sprite->oam.priority = sElevationToPriority[objEvent->previousElevation];
}
static void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z)
{
- sprite->subspriteTableNum = sObjectEventPriorities_08376070[z];
- sprite->oam.priority = sObjectEventPriorities_08376060[z];
+ sprite->subspriteTableNum = sElevationToSubspriteTableNum[z];
+ sprite->oam.priority = sElevationToPriority[z];
}
u8 ZCoordToPriority(u8 z)
{
- return sObjectEventPriorities_08376060[z];
+ return sElevationToPriority[z];
}
void ObjectEventUpdateZCoord(struct ObjectEvent *objEvent)
@@ -7885,14 +7840,14 @@ void ObjectEventUpdateZCoord(struct ObjectEvent *objEvent)
objEvent->previousElevation = z;
}
-void SetObjectSubpriorityByZCoord(u8 a, struct Sprite *sprite, u8 b)
+void SetObjectSubpriorityByZCoord(u8 elevation, struct Sprite *sprite, u8 subpriority)
{
s32 tmp = sprite->centerToCornerVecY;
- u32 tmpa = *(u16 *)&sprite->pos1.y;
+ u32 tmpa = *(u16 *)&sprite->y;
u32 tmpb = *(u16 *)&gSpriteCoordOffsetY;
s32 tmp2 = (tmpa - tmp) + tmpb;
- u16 tmp3 = (0x10 - ((((u32)tmp2 + 8) & 0xFF) >> 4)) * 2;
- sprite->subpriority = tmp3 + sUnknown_08376050[a] + b;
+ u16 tmp3 = (16 - ((((u32)tmp2 + 8) & 0xFF) >> 4)) * 2;
+ sprite->subpriority = tmp3 + sElevationToSubpriority[elevation] + subpriority;
}
static void ObjectEventUpdateSubpriority(struct ObjectEvent *objEvent, struct Sprite *sprite)
@@ -7919,11 +7874,11 @@ void GroundEffect_SpawnOnTallGrass(struct ObjectEvent *objEvent, struct Sprite *
gFieldEffectArguments[0] = objEvent->currentCoords.x;
gFieldEffectArguments[1] = objEvent->currentCoords.y;
gFieldEffectArguments[2] = objEvent->previousElevation;
- gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[3] = 2; // priority
gFieldEffectArguments[4] = objEvent->localId << 8 | objEvent->mapNum;
gFieldEffectArguments[5] = objEvent->mapGroup;
gFieldEffectArguments[6] = (u8)gSaveBlock1Ptr->location.mapNum << 8 | (u8)gSaveBlock1Ptr->location.mapGroup;
- gFieldEffectArguments[7] = 1;
+ gFieldEffectArguments[7] = TRUE; // skip to end of anim
FieldEffectStart(FLDEFF_TALL_GRASS);
}
@@ -7932,11 +7887,11 @@ void GroundEffect_StepOnTallGrass(struct ObjectEvent *objEvent, struct Sprite *s
gFieldEffectArguments[0] = objEvent->currentCoords.x;
gFieldEffectArguments[1] = objEvent->currentCoords.y;
gFieldEffectArguments[2] = objEvent->previousElevation;
- gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[3] = 2; // priority
gFieldEffectArguments[4] = objEvent->localId << 8 | objEvent->mapNum;
gFieldEffectArguments[5] = objEvent->mapGroup;
gFieldEffectArguments[6] = (u8)gSaveBlock1Ptr->location.mapNum << 8 | (u8)gSaveBlock1Ptr->location.mapGroup;
- gFieldEffectArguments[7] = 0;
+ gFieldEffectArguments[7] = FALSE; // don't skip to end of anim
FieldEffectStart(FLDEFF_TALL_GRASS);
}
@@ -8295,44 +8250,46 @@ void UnfreezeObjectEvents(void)
static void Step1(struct Sprite *sprite, u8 dir)
{
- sprite->pos1.x += sDirectionToVectors[dir].x;
- sprite->pos1.y += sDirectionToVectors[dir].y;
+ sprite->x += sDirectionToVectors[dir].x;
+ sprite->y += sDirectionToVectors[dir].y;
}
static void Step2(struct Sprite *sprite, u8 dir)
{
- sprite->pos1.x += 2 * (u16) sDirectionToVectors[dir].x;
- sprite->pos1.y += 2 * (u16) sDirectionToVectors[dir].y;
+ sprite->x += 2 * (u16) sDirectionToVectors[dir].x;
+ sprite->y += 2 * (u16) sDirectionToVectors[dir].y;
}
static void Step3(struct Sprite *sprite, u8 dir)
{
- sprite->pos1.x += 2 * (u16) sDirectionToVectors[dir].x + (u16) sDirectionToVectors[dir].x;
- sprite->pos1.y += 2 * (u16) sDirectionToVectors[dir].y + (u16) sDirectionToVectors[dir].y;
+ sprite->x += 2 * (u16) sDirectionToVectors[dir].x + (u16) sDirectionToVectors[dir].x;
+ sprite->y += 2 * (u16) sDirectionToVectors[dir].y + (u16) sDirectionToVectors[dir].y;
}
static void Step4(struct Sprite *sprite, u8 dir)
{
- sprite->pos1.x += 4 * (u16) sDirectionToVectors[dir].x;
- sprite->pos1.y += 4 * (u16) sDirectionToVectors[dir].y;
+ sprite->x += 4 * (u16) sDirectionToVectors[dir].x;
+ sprite->y += 4 * (u16) sDirectionToVectors[dir].y;
}
static void Step8(struct Sprite *sprite, u8 dir)
{
- sprite->pos1.x += 8 * (u16) sDirectionToVectors[dir].x;
- sprite->pos1.y += 8 * (u16) sDirectionToVectors[dir].y;
+ sprite->x += 8 * (u16) sDirectionToVectors[dir].x;
+ sprite->y += 8 * (u16) sDirectionToVectors[dir].y;
}
-static void oamt_npc_ministep_reset(struct Sprite *sprite, u8 direction, u8 a3)
+#define sTimer data[5]
+
+static void SetSpriteDataForNormalStep(struct Sprite *sprite, u8 direction, u8 speed)
{
- sprite->data[3] = direction;
- sprite->data[4] = a3;
- sprite->data[5] = 0;
+ sprite->sDirection = direction;
+ sprite->sSpeed = speed;
+ sprite->sTimer = 0;
}
typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 direction);
-static const SpriteStepFunc gUnknown_0850E6C4[] = {
+static const SpriteStepFunc sStep1Funcs[] = {
Step1,
Step1,
Step1,
@@ -8351,7 +8308,7 @@ static const SpriteStepFunc gUnknown_0850E6C4[] = {
Step1,
};
-static const SpriteStepFunc gUnknown_0850E704[] = {
+static const SpriteStepFunc sStep2Funcs[] = {
Step2,
Step2,
Step2,
@@ -8362,7 +8319,7 @@ static const SpriteStepFunc gUnknown_0850E704[] = {
Step2,
};
-static const SpriteStepFunc gUnknown_0850E724[] = {
+static const SpriteStepFunc sStep3Funcs[] = {
Step2,
Step3,
Step3,
@@ -8371,68 +8328,76 @@ static const SpriteStepFunc gUnknown_0850E724[] = {
Step3,
};
-static const SpriteStepFunc gUnknown_0850E73C[] = {
+static const SpriteStepFunc sStep4Funcs[] = {
Step4,
Step4,
Step4,
Step4,
};
-static const SpriteStepFunc gUnknown_0850E74C[] = {
+static const SpriteStepFunc sStep8Funcs[] = {
Step8,
Step8,
};
-static const SpriteStepFunc *const gUnknown_0850E754[] = {
- gUnknown_0850E6C4,
- gUnknown_0850E704,
- gUnknown_0850E724,
- gUnknown_0850E73C,
- gUnknown_0850E74C,
+static const SpriteStepFunc *const sNpcStepFuncTables[] = {
+ sStep1Funcs,
+ sStep2Funcs,
+ sStep3Funcs,
+ sStep4Funcs,
+ sStep8Funcs,
};
-static const s16 gUnknown_0850E768[] = {
+static const s16 sStepTimes[] = {
16, 8, 6, 4, 2
};
-bool8 obj_npc_ministep(struct Sprite *sprite)
+static bool8 NpcTakeStep(struct Sprite *sprite)
{
- if (sprite->data[5] >= gUnknown_0850E768[sprite->data[4]])
+ if (sprite->sTimer >= sStepTimes[sprite->sSpeed])
return FALSE;
- gUnknown_0850E754[sprite->data[4]][sprite->data[5]](sprite, sprite->data[3]);
+ sNpcStepFuncTables[sprite->sSpeed][sprite->sTimer](sprite, sprite->sDirection);
- sprite->data[5]++;
+ sprite->sTimer++;
- if (sprite->data[5] < gUnknown_0850E768[sprite->data[4]])
+ if (sprite->sTimer < sStepTimes[sprite->sSpeed])
return FALSE;
return TRUE;
}
-void sub_80976DC(struct Sprite *sprite, u8 direction)
+#undef sTimer
+
+#define sTimer data[4]
+#define sNumSteps data[5]
+
+static void SetWalkSlowSpriteData(struct Sprite *sprite, u8 direction)
{
- sprite->data[3] = direction;
- sprite->data[4] = 0;
- sprite->data[5] = 0;
+ sprite->sDirection = direction;
+ sprite->sTimer = 0;
+ sprite->sNumSteps = 0;
}
-bool8 sub_80976EC(struct Sprite *sprite)
+static bool8 UpdateWalkSlowAnim(struct Sprite *sprite)
{
- if (!(sprite->data[4] & 1))
+ if (!(sprite->sTimer & 1))
{
- Step1(sprite, sprite->data[3]);
- sprite->data[5]++;
+ Step1(sprite, sprite->sDirection);
+ sprite->sNumSteps++;
}
- sprite->data[4]++;
+ sprite->sTimer++;
- if (sprite->data[5] > 15)
+ if (sprite->sNumSteps > 15)
return TRUE;
else
return FALSE;
}
+#undef sTimer
+#undef sNumSteps
+
static const s8 sFigure8XOffsets[FIGURE_8_LENGTH] = {
1, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 1, 2, 2, 1, 2,
@@ -8480,20 +8445,20 @@ static bool8 AnimateSpriteInFigure8(struct Sprite *sprite)
switch(sprite->data[7])
{
case 0:
- sprite->pos2.x += GetFigure8XOffset(sprite->data[6]);
- sprite->pos2.y += GetFigure8YOffset(sprite->data[6]);
+ sprite->x2 += GetFigure8XOffset(sprite->data[6]);
+ sprite->y2 += GetFigure8YOffset(sprite->data[6]);
break;
case 1:
- sprite->pos2.x -= GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
- sprite->pos2.y += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
+ sprite->x2 -= GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
+ sprite->y2 += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
break;
case 2:
- sprite->pos2.x -= GetFigure8XOffset(sprite->data[6]);
- sprite->pos2.y += GetFigure8YOffset(sprite->data[6]);
+ sprite->x2 -= GetFigure8XOffset(sprite->data[6]);
+ sprite->y2 += GetFigure8YOffset(sprite->data[6]);
break;
case 3:
- sprite->pos2.x += GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
- sprite->pos2.y += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
+ sprite->x2 += GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
+ sprite->y2 += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
break;
}
if (++sprite->data[6] == FIGURE_8_LENGTH)
@@ -8503,94 +8468,104 @@ static bool8 AnimateSpriteInFigure8(struct Sprite *sprite)
}
if (sprite->data[7] == 4)
{
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
finished = TRUE;
}
return finished;
}
-static const s8 gUnknown_0850E802[] = {
- -4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0
+static const s8 sJumpY_High[] = {
+ -4, -6, -8, -10, -11, -12, -12, -12,
+ -11, -10, -9, -8, -6, -4, 0, 0
};
-static const s8 gUnknown_0850E812[] = {
- 0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0
+static const s8 sJumpY_Low[] = {
+ 0, -2, -3, -4, -5, -6, -6, -6,
+ -5, -5, -4, -3, -2, 0, 0, 0
};
-static const s8 gUnknown_0850E822[] = {
- -2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0
+static const s8 sJumpY_Normal[] = {
+ -2, -4, -6, -8, -9, -10, -10, -10,
+ -9, -8, -6, -5, -3, -2, 0, 0
};
-static const s8 *const gUnknown_0850E834[] = {
- gUnknown_0850E802,
- gUnknown_0850E812,
- gUnknown_0850E822
+static const s8 *const sJumpYTable[] = {
+ [JUMP_TYPE_HIGH] = sJumpY_High,
+ [JUMP_TYPE_LOW] = sJumpY_Low,
+ [JUMP_TYPE_NORMAL] = sJumpY_Normal
};
-s16 sub_8097820(s16 a1, u8 a2)
+static s16 GetJumpY(s16 i, u8 type)
{
- return gUnknown_0850E834[a2][a1];
+ return sJumpYTable[type][i];
}
-void sub_809783C(struct Sprite *sprite, u8 a2, u8 a3, u8 a4)
+#define sJumpType data[5]
+#define sTimer data[6]
+
+static void SetJumpSpriteData(struct Sprite *sprite, u8 direction, u8 speed, u8 type)
{
- sprite->data[3] = a2;
- sprite->data[4] = a3;
- sprite->data[5] = a4;
- sprite->data[6] = 0;
+ sprite->sDirection = direction;
+ sprite->sSpeed = speed;
+ sprite->sJumpType = type;
+ sprite->sTimer = 0;
}
-u8 sub_809785C(struct Sprite *sprite)
+static u8 DoJumpSpriteMovement(struct Sprite *sprite)
{
- s16 v5[] = {16, 16, 32};
- u8 v6[] = {0, 0, 1};
- u8 v2 = 0;
+ s16 speedToTime[] = {16, 16, 32};
+ u8 speedToShift[] = {0, 0, 1};
+ u8 result = 0;
- if (sprite->data[4])
- Step1(sprite, sprite->data[3]);
+ if (sprite->sSpeed)
+ Step1(sprite, sprite->sDirection);
- sprite->pos2.y = sub_8097820(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
+ sprite->y2 = GetJumpY(sprite->sTimer >> speedToShift[sprite->sSpeed], sprite->sJumpType);
- sprite->data[6]++;
+ sprite->sTimer++;
- if (sprite->data[6] == (v5[sprite->data[4]] >> 1))
- v2 = 1;
+ if (sprite->sTimer == speedToTime[sprite->sSpeed] >> 1)
+ result = JUMP_HALFWAY;
- if (sprite->data[6] >= v5[sprite->data[4]])
+ if (sprite->sTimer >= speedToTime[sprite->sSpeed])
{
- sprite->pos2.y = 0;
- v2 = -1;
+ sprite->y2 = 0;
+ result = JUMP_FINISHED;
}
- return v2;
+ return result;
}
-u8 sub_80978E4(struct Sprite *sprite)
+static u8 DoJumpSpecialSpriteMovement(struct Sprite *sprite)
{
- s16 v5[] = {32, 32, 64};
- u8 v6[] = {1, 1, 2};
- u8 v2 = 0;
+ s16 speedToTime[] = {32, 32, 64};
+ u8 speedToShift[] = {1, 1, 2};
+ u8 result = 0;
- if (sprite->data[4] && !(sprite->data[6] & 1))
- Step1(sprite, sprite->data[3]);
+ if (sprite->sSpeed && !(sprite->sTimer & 1))
+ Step1(sprite, sprite->sDirection);
- sprite->pos2.y = sub_8097820(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
+ sprite->y2 = GetJumpY(sprite->sTimer >> speedToShift[sprite->sSpeed], sprite->sJumpType);
- sprite->data[6]++;
+ sprite->sTimer++;
- if (sprite->data[6] == (v5[sprite->data[4]] >> 1))
- v2 = 1;
+ if (sprite->sTimer == speedToTime[sprite->sSpeed] >> 1)
+ result = JUMP_HALFWAY;
- if (sprite->data[6] >= v5[sprite->data[4]])
+ if (sprite->sTimer >= speedToTime[sprite->sSpeed])
{
- sprite->pos2.y = 0;
- v2 = -1;
+ sprite->y2 = 0;
+ result = JUMP_FINISHED;
}
- return v2;
+ return result;
}
+#undef sSpeed
+#undef sJumpType
+#undef sTimer
+
static void SetMovementDelay(struct Sprite *sprite, s16 timer)
{
sprite->data[3] = timer;
@@ -8598,9 +8573,7 @@ static void SetMovementDelay(struct Sprite *sprite, s16 timer)
static bool8 WaitForMovementDelay(struct Sprite *sprite)
{
- sprite->data[3]--;
-
- if (sprite->data[3] == 0)
+ if (--sprite->data[3] == 0)
return TRUE;
else
return FALSE;
@@ -8621,7 +8594,7 @@ bool8 SpriteAnimEnded(struct Sprite *sprite)
return FALSE;
}
-void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible)
+void UpdateObjectEventSpriteInvisibility(struct Sprite *sprite, bool8 invisible)
{
u16 x, y;
s16 x2, y2;
@@ -8630,33 +8603,33 @@ void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible)
if (sprite->coordOffsetEnabled)
{
- x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
- y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
+ x = sprite->x + sprite->x2 + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
+ y = sprite->y + sprite->y2 + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
}
else
{
- x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
- y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
+ x = sprite->x + sprite->x2 + sprite->centerToCornerVecX;
+ y = sprite->y + sprite->y2 + sprite->centerToCornerVecY;
}
x2 = x - (sprite->centerToCornerVecX >> 1);
y2 = y - (sprite->centerToCornerVecY >> 1);
- if ((s16)x > 255 || x2 < -16)
+ if ((s16)x >= DISPLAY_WIDTH + 16 || x2 < -16)
sprite->invisible = TRUE;
- if ((s16)y > 175 || y2 < -16)
+ if ((s16)y >= DISPLAY_HEIGHT + 16 || y2 < -16)
sprite->invisible = TRUE;
}
-#define tInvisible data[2]
-#define tAnimNum data[3]
-#define tAnimState data[4]
+#define sInvisible data[2]
+#define sAnimNum data[3]
+#define sAnimState data[4]
static void UpdateObjectEventSprite(struct Sprite *sprite)
{
UpdateObjectEventSpritePosition(sprite);
SetObjectSubpriorityByZCoord(sprite->data[1], sprite, 1);
- UpdateObjectEventSpriteVisibility(sprite, sprite->tInvisible);
+ UpdateObjectEventSpriteInvisibility(sprite, sprite->sInvisible);
}
// Unused
@@ -8679,7 +8652,7 @@ static int GetObjectEventSpriteId(u8 objectEventId) // this should return a u8,
for (i = 0; i < MAX_SPRITES; i++)
{
struct Sprite *sprite = &gSprites[i];
- if (sprite->inUse && sprite->callback == UpdateObjectEventSprite && (u8)sprite->data[0] == objectEventId)
+ if (sprite->inUse && sprite->callback == UpdateObjectEventSprite && (u8)sprite->sObjEventId == objectEventId)
return i;
}
return MAX_SPRITES;
@@ -8731,9 +8704,9 @@ void SetObjectEventSpriteInvisibility(u8 objectEventId, bool32 invisible)
return;
if (invisible)
- gSprites[spriteId].tInvisible = TRUE;
+ gSprites[spriteId].sInvisible = TRUE;
else
- gSprites[spriteId].tInvisible = FALSE;
+ gSprites[spriteId].sInvisible = FALSE;
}
bool32 IsObjectEventSpriteInvisible(u8 objectEventId)
@@ -8743,7 +8716,7 @@ bool32 IsObjectEventSpriteInvisible(u8 objectEventId)
if (spriteId == MAX_SPRITES)
return FALSE;
- return (gSprites[spriteId].tInvisible == TRUE);
+ return (gSprites[spriteId].sInvisible == TRUE);
}
void SetObjectEventSpriteAnim(u8 objectEventId, u8 animNum)
@@ -8752,50 +8725,50 @@ void SetObjectEventSpriteAnim(u8 objectEventId, u8 animNum)
if (spriteId != MAX_SPRITES)
{
- gSprites[spriteId].tAnimNum = animNum;
- gSprites[spriteId].tAnimState = 0;
+ gSprites[spriteId].sAnimNum = animNum;
+ gSprites[spriteId].sAnimState = 0;
}
}
static void MoveUnionRoomObjectUp(struct Sprite *sprite)
{
- switch(sprite->tAnimState)
+ switch(sprite->sAnimState)
{
case 0:
- sprite->pos2.y = 0;
- sprite->tAnimState++;
+ sprite->y2 = 0;
+ sprite->sAnimState++;
case 1:
- sprite->pos2.y -= 8;
- if (sprite->pos2.y == -160)
+ sprite->y2 -= 8;
+ if (sprite->y2 == -DISPLAY_HEIGHT)
{
- sprite->pos2.y = 0;
- sprite->tInvisible = TRUE;
- sprite->tAnimNum = 0;
- sprite->tAnimState = 0;
+ sprite->y2 = 0;
+ sprite->sInvisible = TRUE;
+ sprite->sAnimNum = 0;
+ sprite->sAnimState = 0;
}
}
}
static void MoveUnionRoomObjectDown(struct Sprite *sprite)
{
- switch(sprite->tAnimState)
+ switch(sprite->sAnimState)
{
case 0:
- sprite->pos2.y = -160;
- sprite->tAnimState++;
+ sprite->y2 = -DISPLAY_HEIGHT;
+ sprite->sAnimState++;
case 1:
- sprite->pos2.y += 8;
- if(sprite->pos2.y == 0)
+ sprite->y2 += 8;
+ if(sprite->y2 == 0)
{
- sprite->tAnimNum = 0;
- sprite->tAnimState = 0;
+ sprite->sAnimNum = 0;
+ sprite->sAnimState = 0;
}
}
}
static void UpdateObjectEventSpritePosition(struct Sprite *sprite)
{
- switch(sprite->tAnimNum)
+ switch(sprite->sAnimNum)
{
case UNION_ROOM_SPAWN_IN:
MoveUnionRoomObjectDown(sprite);
@@ -8806,7 +8779,7 @@ static void UpdateObjectEventSpritePosition(struct Sprite *sprite)
case 0:
break;
default:
- sprite->tAnimNum = 0;
+ sprite->sAnimNum = 0;
break;
}
}
@@ -8818,7 +8791,7 @@ bool32 IsObjectEventSpriteAnimating(u8 objectEventId)
if (spriteId == MAX_SPRITES)
return FALSE;
- if (gSprites[spriteId].tAnimNum != 0)
+ if (gSprites[spriteId].sAnimNum != 0)
return TRUE;
return FALSE;
@@ -8830,11 +8803,11 @@ u32 StartFieldEffectForObjectEvent(u8 fieldEffectId, struct ObjectEvent *objectE
return FieldEffectStart(fieldEffectId);
}
-void DoShadowFieldEffect(struct ObjectEvent *objectEvent)
+static void DoShadowFieldEffect(struct ObjectEvent *objectEvent)
{
if (!objectEvent->hasShadow)
{
- objectEvent->hasShadow = 1;
+ objectEvent->hasShadow = TRUE;
StartFieldEffectForObjectEvent(FLDEFF_SHADOW, objectEvent);
}
}
@@ -8842,8 +8815,8 @@ void DoShadowFieldEffect(struct ObjectEvent *objectEvent)
static void DoRippleFieldEffect(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
- gFieldEffectArguments[0] = sprite->pos1.x;
- gFieldEffectArguments[1] = sprite->pos1.y + (graphicsInfo->height >> 1) - 2;
+ gFieldEffectArguments[0] = sprite->x;
+ gFieldEffectArguments[1] = sprite->y + (graphicsInfo->height >> 1) - 2;
gFieldEffectArguments[2] = 151;
gFieldEffectArguments[3] = 3;
FieldEffectStart(FLDEFF_RIPPLE);
@@ -8874,11 +8847,11 @@ u8 (*const gMovementActionFuncs_FlyDown[])(struct ObjectEvent *, struct Sprite *
u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
bool32 ableToStore = FALSE;
- if (gLockedAnimObjectEvents == NULL)
+ if (sLockedAnimObjectEvents == NULL)
{
- gLockedAnimObjectEvents = AllocZeroed(sizeof(struct LockedAnimObjectEvents));
- gLockedAnimObjectEvents->objectEventIds[0] = objectEvent->localId;
- gLockedAnimObjectEvents->count = 1;
+ sLockedAnimObjectEvents = AllocZeroed(sizeof(struct LockedAnimObjectEvents));
+ sLockedAnimObjectEvents->objectEventIds[0] = objectEvent->localId;
+ sLockedAnimObjectEvents->count = 1;
ableToStore = TRUE;
}
else
@@ -8888,10 +8861,10 @@ u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct
bool32 found;
for (firstFreeSlot = 16, found = FALSE, i = 0; i < 16; i++)
{
- if (firstFreeSlot == 16 && gLockedAnimObjectEvents->objectEventIds[i] == 0)
+ if (firstFreeSlot == 16 && sLockedAnimObjectEvents->objectEventIds[i] == 0)
firstFreeSlot = i;
- if (gLockedAnimObjectEvents->objectEventIds[i] == objectEvent->localId)
+ if (sLockedAnimObjectEvents->objectEventIds[i] == objectEvent->localId)
{
found = TRUE;
break;
@@ -8900,8 +8873,8 @@ u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct
if (!found && firstFreeSlot != 16)
{
- gLockedAnimObjectEvents->objectEventIds[firstFreeSlot] = objectEvent->localId;
- gLockedAnimObjectEvents->count++;
+ sLockedAnimObjectEvents->objectEventIds[firstFreeSlot] = objectEvent->localId;
+ sLockedAnimObjectEvents->count++;
ableToStore = TRUE;
}
}
@@ -8912,7 +8885,7 @@ u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct
objectEvent->facingDirectionLocked = TRUE;
}
- sprite->data[2] = 1;
+ sprite->sActionFuncId = 1;
return TRUE;
}
@@ -8921,19 +8894,19 @@ u8 MovementAction_FreeAndUnlockAnim_Step0(struct ObjectEvent *objectEvent, struc
bool32 ableToStore;
u8 index;
- sprite->data[2] = 1;
- if (gLockedAnimObjectEvents != NULL)
+ sprite->sActionFuncId = 1;
+ if (sLockedAnimObjectEvents != NULL)
{
ableToStore = FALSE;
index = FindLockedObjectEventIndex(objectEvent);
if (index != 16)
{
- gLockedAnimObjectEvents->objectEventIds[index] = 0;
- gLockedAnimObjectEvents->count--;
+ sLockedAnimObjectEvents->objectEventIds[index] = 0;
+ sLockedAnimObjectEvents->count--;
ableToStore = TRUE;
}
- if (gLockedAnimObjectEvents->count == 0)
- FREE_AND_SET_NULL(gLockedAnimObjectEvents);
+ if (sLockedAnimObjectEvents->count == 0)
+ FREE_AND_SET_NULL(sLockedAnimObjectEvents);
if (ableToStore == TRUE)
{
objectEvent->inanimate = GetObjectEventGraphicsInfo(objectEvent->graphicsId)->inanimate;
@@ -8951,13 +8924,13 @@ u8 FindLockedObjectEventIndex(struct ObjectEvent *objectEvent)
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{
- if (gLockedAnimObjectEvents->objectEventIds[i] == objectEvent->localId)
+ if (sLockedAnimObjectEvents->objectEventIds[i] == objectEvent->localId)
return i;
}
return OBJECT_EVENTS_COUNT;
}
-void CreateLevitateMovementTask(struct ObjectEvent *objectEvent)
+static void CreateLevitateMovementTask(struct ObjectEvent *objectEvent)
{
u8 taskId = CreateTask(ApplyLevitateMovement, 0xFF);
struct Task *task = &gTasks[taskId];
@@ -8976,16 +8949,16 @@ static void ApplyLevitateMovement(u8 taskId)
LoadWordFromTwoHalfwords(&task->data[0], (u32 *)&objectEvent); // load the map object pointer.
sprite = &gSprites[objectEvent->spriteId];
- if(!(task->data[2] & 0x3))
- sprite->pos2.y += task->data[3];
+ if(!(task->data[2] & 3))
+ sprite->y2 += task->data[3];
- if(!(task->data[2] & 0xF))
+ if(!(task->data[2] & 15))
task->data[3] = -task->data[3];
task->data[2]++;
}
-void DestroyExtraMovementTask(u8 taskId)
+static void DestroyLevitateMovementTask(u8 taskId)
{
struct ObjectEvent *objectEvent;
struct Task *task = &gTasks[taskId];
@@ -9009,33 +8982,33 @@ void FreezeObjectEventsExceptTwo(u8 objectEventId1, u8 objectEventId2)
u8 MovementAction_FlyUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sprite->pos2.y = 0;
- sprite->data[2]++;
+ sprite->y2 = 0;
+ sprite->sActionFuncId++;
return FALSE;
}
u8 MovementAction_FlyUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sprite->pos2.y -= 8;
+ sprite->y2 -= 8;
- if(sprite->pos2.y == -160)
- sprite->data[2]++;
+ if(sprite->y2 == -DISPLAY_HEIGHT)
+ sprite->sActionFuncId++;
return FALSE;
}
u8 MovementAction_FlyDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sprite->pos2.y = -160;
- sprite->data[2]++;
+ sprite->y2 = -DISPLAY_HEIGHT;
+ sprite->sActionFuncId++;
return FALSE;
}
u8 MovementAction_FlyDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sprite->pos2.y += 8;
+ sprite->y2 += 8;
- if(!sprite->pos2.y)
- sprite->data[2]++;
+ if(!sprite->y2)
+ sprite->sActionFuncId++;
return FALSE;
}
diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c
index a66a7a28d..50098743d 100644
--- a/src/evolution_graphics.c
+++ b/src/evolution_graphics.c
@@ -55,7 +55,7 @@ static const struct SpritePalette sEvoSparkleSpritePals[] =
static const struct OamData sOamData_EvoSparkle =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -115,18 +115,18 @@ static void SetEvoSparklesMatrices(void)
static void SpriteCB_Sparkle_SpiralUpward(struct Sprite* sprite)
{
- if (sprite->pos1.y > 8)
+ if (sprite->y > 8)
{
u8 matrixNum;
- sprite->pos1.y = 88 - (sprite->data[7] * sprite->data[7]) / 80;
- sprite->pos2.y = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4;
- sprite->pos2.x = Cos((u8)(sprite->data[6]), sprite->data[5]);
+ sprite->y = 88 - (sprite->data[7] * sprite->data[7]) / 80;
+ sprite->y2 = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4;
+ sprite->x2 = Cos((u8)(sprite->data[6]), sprite->data[5]);
sprite->data[6] += 4;
if (sprite->data[7] & 1)
sprite->data[5]--;
sprite->data[7]++;
- if (sprite->pos2.y > 0)
+ if (sprite->y2 > 0)
sprite->subpriority = 1;
else
sprite->subpriority = 20;
@@ -155,11 +155,11 @@ static void CreateSparkle_SpiralUpward(u8 arg0)
static void SpriteCB_Sparkle_ArcDown(struct Sprite* sprite)
{
- if (sprite->pos1.y < 88)
+ if (sprite->y < 88)
{
- sprite->pos1.y = 8 + (sprite->data[7] * sprite->data[7]) / 5;
- sprite->pos2.y = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4;
- sprite->pos2.x = Cos((u8)(sprite->data[6]), sprite->data[5]);
+ sprite->y = 8 + (sprite->data[7] * sprite->data[7]) / 5;
+ sprite->y2 = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4;
+ sprite->x2 = Cos((u8)(sprite->data[6]), sprite->data[5]);
sprite->data[5] = 8 + Sin((u8)(sprite->data[7] * 4), 40);
sprite->data[7]++;
}
@@ -186,8 +186,8 @@ static void SpriteCB_Sparkle_CircleInward(struct Sprite* sprite)
{
if (sprite->data[5] > 8)
{
- sprite->pos2.y = Sin((u8)(sprite->data[6]), sprite->data[5]);
- sprite->pos2.x = Cos((u8)(sprite->data[6]), sprite->data[5]);
+ sprite->y2 = Sin((u8)(sprite->data[6]), sprite->data[5]);
+ sprite->x2 = Cos((u8)(sprite->data[6]), sprite->data[5]);
sprite->data[5] -= sprite->data[3];
sprite->data[6] += 4;
}
@@ -214,13 +214,13 @@ static void CreateSparkle_CircleInward(u8 arg0, u8 arg1)
static void SpriteCB_Sparkle_Spray(struct Sprite* sprite)
{
if (!(sprite->data[7] & 3))
- sprite->pos1.y++;
+ sprite->y++;
if (sprite->data[6] < 128)
{
u8 matrixNum;
- sprite->pos2.y = -Sin((u8)(sprite->data[6]), sprite->data[5]);
- sprite->pos1.x = 120 + (sprite->data[3] * sprite->data[7]) / 3;
+ sprite->y2 = -Sin((u8)(sprite->data[6]), sprite->data[5]);
+ sprite->x = 120 + (sprite->data[3] * sprite->data[7]) / 3;
sprite->data[6]++;
matrixNum = 31 - (sprite->data[6] * 12 / 128);
if (sprite->data[6] > 64)
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 59316835f..08f816f4f 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -34,6 +34,8 @@
#include "constants/rgb.h"
#include "constants/items.h"
+extern struct Evolution gEvolutionTable[][EVOS_PER_MON];
+
struct EvoInfo
{
u8 preEvoSpriteId;
@@ -550,8 +552,6 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon)
{
s32 i;
struct Pokemon* shedinja = &gPlayerParty[gPlayerPartyCount];
- const struct Evolution *evos;
- const struct Evolution *evos2;
CopyMon(&gPlayerParty[gPlayerPartyCount], mon, sizeof(struct Pokemon));
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_SPECIES, &gEvolutionTable[preEvoSpecies][1].targetSpecies);
@@ -572,12 +572,8 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon)
CalculateMonStats(&gPlayerParty[gPlayerPartyCount]);
CalculatePlayerPartyCount();
- // can't match it otherwise, ehh
- evos2 = gEvolutionTable[0];
- evos = evos2 + EVOS_PER_MON * preEvoSpecies;
-
- GetSetPokedexFlag(SpeciesToNationalPokedexNum(evos[1].targetSpecies), FLAG_SET_SEEN);
- GetSetPokedexFlag(SpeciesToNationalPokedexNum(evos[1].targetSpecies), FLAG_SET_CAUGHT);
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gEvolutionTable[preEvoSpecies][1].targetSpecies), FLAG_SET_SEEN);
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gEvolutionTable[preEvoSpecies][1].targetSpecies), FLAG_SET_CAUGHT);
if (GetMonData(shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA
&& GetMonData(shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE
@@ -1125,7 +1121,7 @@ static void Task_TradeEvolutionScene(u8 taskId)
var = gSprites[sEvoStructPtr->preEvoSpriteId].oam.paletteNum + 16;
sEvoGraphicsTaskId = EvolutionSparkles_SpiralUpward(var);
gTasks[taskId].tState++;
- SetGpuReg(REG_OFFSET_BG3CNT, 0x603);
+ SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3) | BGCNT_SCREENBASE(6));
}
break;
case T_EVOSTATE_SPARKLE_ARC:
diff --git a/src/faraway_island.c b/src/faraway_island.c
index bc0814652..51ab8def4 100755
--- a/src/faraway_island.c
+++ b/src/faraway_island.c
@@ -38,7 +38,7 @@ static const s16 sFarawayIslandRockCoords[4][2] =
static u8 GetMewObjectEventId(void)
{
u8 objectEventId;
- TryGetObjectEventIdByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId);
+ TryGetObjectEventIdByLocalIdAndMap(LOCALID_FARAWAY_ISLAND_MEW, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId);
return objectEventId;
}
diff --git a/src/field_camera.c b/src/field_camera.c
index 699b984ac..a36b6883c 100644
--- a/src/field_camera.c
+++ b/src/field_camera.c
@@ -39,7 +39,7 @@ static void CameraPanningCB_PanAhead(void);
static struct FieldCameraOffset sFieldCameraOffset;
static s16 sHorizontalCameraPan;
static s16 sVerticalCameraPan;
-static bool8 gUnknown_03000E2C;
+static bool8 sBikeCameraPanFlag;
static void (*sFieldCameraPanningCallback)(void);
struct CameraObject gFieldCamera;
@@ -89,7 +89,7 @@ void FieldUpdateBgTilemapScroll(void)
SetGpuReg(REG_OFFSET_BG3VOFS, r4);
}
-void sub_8089C08(s16 *x, s16 *y)
+void GetCameraOffsetWithPan(s16 *x, s16 *y)
{
*x = sFieldCameraOffset.xPixelOffset + sHorizontalCameraPan;
*y = sFieldCameraOffset.yPixelOffset + sVerticalCameraPan + 8;
@@ -450,7 +450,7 @@ void SetCameraPanning(s16 a, s16 b)
void InstallCameraPanAheadCallback(void)
{
sFieldCameraPanningCallback = CameraPanningCB_PanAhead;
- gUnknown_03000E2C = FALSE;
+ sBikeCameraPanFlag = FALSE;
sHorizontalCameraPan = 0;
sVerticalCameraPan = 32;
}
@@ -474,16 +474,16 @@ static void CameraPanningCB_PanAhead(void)
}
else
{
- // this code is never reached.
+ // this code is never reached
if (gPlayerAvatar.tileTransitionState == T_TILE_TRANSITION)
{
- gUnknown_03000E2C ^= 1;
- if (gUnknown_03000E2C == FALSE)
+ sBikeCameraPanFlag ^= 1;
+ if (sBikeCameraPanFlag == FALSE)
return;
}
else
{
- gUnknown_03000E2C = FALSE;
+ sBikeCameraPanFlag = FALSE;
}
var = GetPlayerMovementDirection();
diff --git a/src/field_effect.c b/src/field_effect.c
index 445827390..0d61b35f1 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -1118,8 +1118,8 @@ static u8 CreateGlowingPokeballsEffect(s16 numMons, s16 x, s16 y, bool16 playHea
struct Sprite *sprite;
spriteId = CreateInvisibleSprite(SpriteCB_PokeballGlowEffect);
sprite = &gSprites[spriteId];
- sprite->pos2.x = x;
- sprite->pos2.y = y;
+ sprite->x2 = x;
+ sprite->y2 = y;
sprite->sPlayHealSe = playHealSe;
sprite->sNumMons = numMons;
sprite->sSpriteId = spriteId;
@@ -1137,7 +1137,7 @@ static void PokeballGlowEffect_PlaceBalls(struct Sprite *sprite)
if (sprite->sTimer == 0 || (--sprite->sTimer) == 0)
{
sprite->sTimer = 25;
- spriteId = CreateSpriteAtEnd(&sSpriteTemplate_PokeballGlow, sPokeballCoordOffsets[sprite->sCounter].x + sprite->pos2.x, sPokeballCoordOffsets[sprite->sCounter].y + sprite->pos2.y, 0);
+ spriteId = CreateSpriteAtEnd(&sSpriteTemplate_PokeballGlow, sPokeballCoordOffsets[sprite->sCounter].x + sprite->x2, sPokeballCoordOffsets[sprite->sCounter].y + sprite->y2, 0);
gSprites[spriteId].oam.priority = 2;
gSprites[spriteId].sEffectSpriteId = sprite->sSpriteId;
sprite->sCounter++;
@@ -1461,7 +1461,7 @@ static bool8 FallWarpEffect_StartFall(struct Task *task)
s16 centerToCornerVecY;
sprite = &gSprites[gPlayerAvatar.spriteId];
centerToCornerVecY = -(sprite->centerToCornerVecY << 1);
- sprite->pos2.y = -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
+ sprite->y2 = -(sprite->y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
task->tFallOffset = 1;
task->tTotalFall = 0;
gObjectEvents[gPlayerAvatar.objectEventId].invisible = FALSE;
@@ -1477,7 +1477,7 @@ static bool8 FallWarpEffect_Fall(struct Task *task)
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
sprite = &gSprites[gPlayerAvatar.spriteId];
- sprite->pos2.y += task->tFallOffset;
+ sprite->y2 += task->tFallOffset;
if (task->tFallOffset < 8)
{
task->tTotalFall += task->tFallOffset;
@@ -1485,19 +1485,19 @@ static bool8 FallWarpEffect_Fall(struct Task *task)
if (task->tTotalFall & 0xf)
task->tFallOffset <<= 1;
}
- if (task->tSetTrigger == FALSE && sprite->pos2.y >= -16)
+ if (task->tSetTrigger == FALSE && sprite->y2 >= -16)
{
task->tSetTrigger++;
objectEvent->fixedPriority = 0;
sprite->subspriteMode = task->tSubsprMode;
objectEvent->triggerGroundEffectsOnMove = 1;
}
- if (sprite->pos2.y >= 0)
+ if (sprite->y2 >= 0)
{
PlaySE(SE_M_STRENGTH);
objectEvent->triggerGroundEffectsOnStop = 1;
objectEvent->landingJump = 1;
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
task->tState++;
}
return FALSE;
@@ -1635,8 +1635,8 @@ static void RideUpEscalatorOut(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
- sprite->pos2.x = Cos(0x84, task->data[2]);
- sprite->pos2.y = Sin(0x94, task->data[2]);
+ sprite->x2 = Cos(0x84, task->data[2]);
+ sprite->y2 = Sin(0x94, task->data[2]);
task->data[3]++;
if (task->data[3] & 1)
{
@@ -1648,8 +1648,8 @@ static void RideDownEscalatorOut(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
- sprite->pos2.x = Cos(0x7c, task->data[2]);
- sprite->pos2.y = Sin(0x76, task->data[2]);
+ sprite->x2 = Cos(0x7c, task->data[2]);
+ sprite->y2 = Sin(0x76, task->data[2]);
task->data[3]++;
if (task->data[3] & 1)
{
@@ -1729,8 +1729,8 @@ static bool8 EscalatorWarpIn_Down_Init(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
- sprite->pos2.x = Cos(0x84, task->data[1]);
- sprite->pos2.y = Sin(0x94, task->data[1]);
+ sprite->x2 = Cos(0x84, task->data[1]);
+ sprite->y2 = Sin(0x94, task->data[1]);
task->tState++;
return FALSE;
}
@@ -1739,8 +1739,8 @@ static bool8 EscalatorWarpIn_Down_Ride(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
- sprite->pos2.x = Cos(0x84, task->data[1]);
- sprite->pos2.y = Sin(0x94, task->data[1]);
+ sprite->x2 = Cos(0x84, task->data[1]);
+ sprite->y2 = Sin(0x94, task->data[1]);
task->data[2]++;
if (task->data[2] & 1)
{
@@ -1748,8 +1748,8 @@ static bool8 EscalatorWarpIn_Down_Ride(struct Task *task)
}
if (task->data[1] == 0)
{
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
task->tState = 5;
}
return FALSE;
@@ -1759,8 +1759,8 @@ static bool8 EscalatorWarpIn_Up_Init(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
- sprite->pos2.x = Cos(0x7c, task->data[1]);
- sprite->pos2.y = Sin(0x76, task->data[1]);
+ sprite->x2 = Cos(0x7c, task->data[1]);
+ sprite->y2 = Sin(0x76, task->data[1]);
task->tState++;
return FALSE;
}
@@ -1769,8 +1769,8 @@ static bool8 EscalatorWarpIn_Up_Ride(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
- sprite->pos2.x = Cos(0x7c, task->data[1]);
- sprite->pos2.y = Sin(0x76, task->data[1]);
+ sprite->x2 = Cos(0x7c, task->data[1]);
+ sprite->y2 = Sin(0x76, task->data[1]);
task->data[2]++;
if (task->data[2] & 1)
{
@@ -1778,8 +1778,8 @@ static bool8 EscalatorWarpIn_Up_Ride(struct Task *task)
}
if (task->data[1] == 0)
{
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
task->tState++;
}
return FALSE;
@@ -1972,7 +1972,7 @@ static bool8 LavaridgeGymB1FWarpEffect_CameraShake(struct Task *task, struct Obj
static bool8 LavaridgeGymB1FWarpEffect_Launch(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
task->data[3] = 1;
gFieldEffectArguments[0] = objectEvent->currentCoords.x;
gFieldEffectArguments[1] = objectEvent->currentCoords.y;
@@ -2001,9 +2001,9 @@ static bool8 LavaridgeGymB1FWarpEffect_Rise(struct Task *task, struct ObjectEven
if (task->data[2] > 6)
{
centerToCornerVecY = -(sprite->centerToCornerVecY << 1);
- if (sprite->pos2.y > -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY))
+ if (sprite->y2 > -(sprite->y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY))
{
- sprite->pos2.y -= task->data[3];
+ sprite->y2 -= task->data[3];
if (task->data[3] <= 7)
{
task->data[3]++;
@@ -2013,7 +2013,7 @@ static bool8 LavaridgeGymB1FWarpEffect_Rise(struct Task *task, struct ObjectEven
task->data[4] = 1;
}
}
- if (task->data[5] == 0 && sprite->pos2.y < -0x10)
+ if (task->data[5] == 0 && sprite->y2 < -0x10)
{
task->data[5]++;
objectEvent->fixedPriority = 1;
@@ -2396,7 +2396,7 @@ static void TeleportWarpOutFieldEffect_SpinExit(struct Task *task)
task->data[1] = 4;
ObjectEventTurn(objectEvent, spinDirections[objectEvent->facingDirection]);
}
- sprite->pos1.y -= task->data[3];
+ sprite->y -= task->data[3];
task->data[4] += task->data[3];
if ((--task->data[2]) <= 0 && (task->data[2] = 4, task->data[3] < 8))
{
@@ -2466,7 +2466,7 @@ static void TeleportWarpInFieldEffect_Init(struct Task *task)
{
sprite = &gSprites[gPlayerAvatar.spriteId];
centerToCornerVecY = -(sprite->centerToCornerVecY << 1);
- sprite->pos2.y = -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
+ sprite->y2 = -(sprite->y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
gObjectEvents[gPlayerAvatar.objectEventId].invisible = FALSE;
task->data[0]++;
task->data[1] = 8;
@@ -2482,7 +2482,7 @@ static void TeleportWarpInFieldEffect_SpinEnter(struct Task *task)
u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
- if ((sprite->pos2.y += task->data[1]) >= -8)
+ if ((sprite->y2 += task->data[1]) >= -8)
{
if (task->data[13] == 0)
{
@@ -2498,7 +2498,7 @@ static void TeleportWarpInFieldEffect_SpinEnter(struct Task *task)
sprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY;
}
}
- if (sprite->pos2.y >= -0x30 && task->data[1] > 1 && !(sprite->pos2.y & 1))
+ if (sprite->y2 >= -0x30 && task->data[1] > 1 && !(sprite->y2 & 1))
{
task->data[1]--;
}
@@ -2507,9 +2507,9 @@ static void TeleportWarpInFieldEffect_SpinEnter(struct Task *task)
task->data[2] = 4;
ObjectEventTurn(objectEvent, spinDirections[objectEvent->facingDirection]);
}
- if (sprite->pos2.y >= 0)
+ if (sprite->y2 >= 0)
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
task->data[0]++;
task->data[1] = 1;
task->data[2] = 0;
@@ -2929,9 +2929,9 @@ static u8 InitFieldMoveMonSprite(u32 species, u32 otId, u32 personality)
static void SpriteCB_FieldMoveMonSlideOnscreen(struct Sprite *sprite)
{
- if ((sprite->pos1.x -= 20) <= DISPLAY_WIDTH / 2)
+ if ((sprite->x -= 20) <= DISPLAY_WIDTH / 2)
{
- sprite->pos1.x = DISPLAY_WIDTH / 2;
+ sprite->x = DISPLAY_WIDTH / 2;
sprite->sOnscreenTimer = 30;
sprite->callback = SpriteCB_FieldMoveMonWaitAfterCry;
if (sprite->data[6])
@@ -2953,10 +2953,10 @@ static void SpriteCB_FieldMoveMonWaitAfterCry(struct Sprite *sprite)
static void SpriteCB_FieldMoveMonSlideOffscreen(struct Sprite *sprite)
{
- if (sprite->pos1.x < -64)
+ if (sprite->x < -64)
sprite->sSlidOffscreen = TRUE;
else
- sprite->pos1.x -= 20;
+ sprite->x -= 20;
}
#undef tState
@@ -3053,7 +3053,7 @@ static void SurfFieldEffect_End(struct Task *task)
gPlayerAvatar.preventStep = FALSE;
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_5;
ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(objectEvent->movementDirection));
- SetSurfBobState(objectEvent->fieldEffectSpriteId, 1);
+ SetSurfBlob_BobState(objectEvent->fieldEffectSpriteId, BOB_PLAYER_AND_MON);
UnfreezeObjectEvents();
ScriptContext2_Disable();
FieldEffectActiveListRemove(FLDEFF_USE_SURF);
@@ -3078,7 +3078,7 @@ u8 FldEff_RayquazaSpotlight(void)
sprite->data[1] = 0;
sprite->data[2] = 0;
sprite->data[3] = -1;
- sprite->data[4] = sprite->pos1.y;
+ sprite->data[4] = sprite->y;
sprite->data[5] = 0;
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(14, 14));
@@ -3120,17 +3120,17 @@ static void SpriteCB_NPCFlyOut(struct Sprite *sprite)
{
struct Sprite *npcSprite;
- sprite->pos2.x = Cos(sprite->data[2], 0x8c);
- sprite->pos2.y = Sin(sprite->data[2], 0x48);
+ sprite->x2 = Cos(sprite->data[2], 0x8c);
+ sprite->y2 = Sin(sprite->data[2], 0x48);
sprite->data[2] = (sprite->data[2] + 4) & 0xff;
if (sprite->data[0])
{
npcSprite = &gSprites[sprite->data[1]];
npcSprite->coordOffsetEnabled = FALSE;
- npcSprite->pos1.x = sprite->pos1.x + sprite->pos2.x;
- npcSprite->pos1.y = sprite->pos1.y + sprite->pos2.y - 8;
- npcSprite->pos2.x = 0;
- npcSprite->pos2.y = 0;
+ npcSprite->x = sprite->x + sprite->x2;
+ npcSprite->y = sprite->y + sprite->y2 - 8;
+ npcSprite->x2 = 0;
+ npcSprite->y2 = 0;
}
if (sprite->data[2] >= 0x80)
@@ -3204,8 +3204,8 @@ static void FlyOutFieldEffect_BirdLeaveBall(struct Task *task)
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
if (task->tAvatarFlags & PLAYER_AVATAR_FLAG_SURFING)
{
- SetSurfBobState(objectEvent->fieldEffectSpriteId, 2);
- SetSurfBobWhileFlyingOutState(objectEvent->fieldEffectSpriteId, 0);
+ SetSurfBlob_BobState(objectEvent->fieldEffectSpriteId, BOB_JUST_MON);
+ SetSurfBlob_DontSyncAnim(objectEvent->fieldEffectSpriteId, FALSE);
}
task->tBirdSpriteId = CreateFlyBirdSprite(); // Does "leave ball" animation by default
task->tState++;
@@ -3306,10 +3306,10 @@ static void StartFlyBirdSwoopDown(u8 spriteId)
struct Sprite *sprite;
sprite = &gSprites[spriteId];
sprite->callback = SpriteCB_FlyBirdSwoopDown;
- sprite->pos1.x = DISPLAY_WIDTH / 2;
- sprite->pos1.y = 0;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x = DISPLAY_WIDTH / 2;
+ sprite->y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
memset(&sprite->data[0], 0, 8 * sizeof(u16) /* zero all data cells */);
sprite->sPlayerSpriteId = MAX_SPRITES;
}
@@ -3346,15 +3346,15 @@ static void SpriteCB_FlyBirdLeaveBall(struct Sprite *sprite)
sprite->affineAnims = sAffineAnims_FlyBird;
InitSpriteAffineAnim(sprite);
StartSpriteAffineAnim(sprite, 0);
- sprite->pos1.x = 0x76;
- sprite->pos1.y = -0x30;
+ sprite->x = 0x76;
+ sprite->y = -0x30;
sprite->data[0]++;
sprite->data[1] = 0x40;
sprite->data[2] = 0x100;
}
sprite->data[1] += (sprite->data[2] >> 8);
- sprite->pos2.x = Cos(sprite->data[1], 0x78);
- sprite->pos2.y = Sin(sprite->data[1], 0x78);
+ sprite->x2 = Cos(sprite->data[1], 0x78);
+ sprite->y2 = Sin(sprite->data[1], 0x78);
if (sprite->data[2] < 0x800)
{
sprite->data[2] += 0x60;
@@ -3371,17 +3371,17 @@ static void SpriteCB_FlyBirdLeaveBall(struct Sprite *sprite)
static void SpriteCB_FlyBirdSwoopDown(struct Sprite *sprite)
{
- sprite->pos2.x = Cos(sprite->data[2], 0x8c);
- sprite->pos2.y = Sin(sprite->data[2], 0x48);
+ sprite->x2 = Cos(sprite->data[2], 0x8c);
+ sprite->y2 = Sin(sprite->data[2], 0x48);
sprite->data[2] = (sprite->data[2] + 4) & 0xff;
if (sprite->sPlayerSpriteId != MAX_SPRITES)
{
struct Sprite *sprite1 = &gSprites[sprite->sPlayerSpriteId];
sprite1->coordOffsetEnabled = FALSE;
- sprite1->pos1.x = sprite->pos1.x + sprite->pos2.x;
- sprite1->pos1.y = sprite->pos1.y + sprite->pos2.y - 8;
- sprite1->pos2.x = 0;
- sprite1->pos2.y = 0;
+ sprite1->x = sprite->x + sprite->x2;
+ sprite1->y = sprite->y + sprite->y2 - 8;
+ sprite1->x2 = 0;
+ sprite1->y2 = 0;
}
if (sprite->data[2] >= 0x80)
{
@@ -3399,8 +3399,8 @@ static void SpriteCB_FlyBirdReturnToBall(struct Sprite *sprite)
sprite->affineAnims = sAffineAnims_FlyBird;
InitSpriteAffineAnim(sprite);
StartSpriteAffineAnim(sprite, 1);
- sprite->pos1.x = 0x5e;
- sprite->pos1.y = -0x20;
+ sprite->x = 0x5e;
+ sprite->y = -0x20;
sprite->data[0]++;
sprite->data[1] = 0xf0;
sprite->data[2] = 0x800;
@@ -3409,8 +3409,8 @@ static void SpriteCB_FlyBirdReturnToBall(struct Sprite *sprite)
sprite->data[1] += sprite->data[2] >> 8;
sprite->data[3] += sprite->data[2] >> 8;
sprite->data[1] &= 0xff;
- sprite->pos2.x = Cos(sprite->data[1], 0x20);
- sprite->pos2.y = Sin(sprite->data[1], 0x78);
+ sprite->x2 = Cos(sprite->data[1], 0x20);
+ sprite->y2 = Sin(sprite->data[1], 0x78);
if (sprite->data[2] > 0x100)
{
sprite->data[2] -= sprite->data[4];
@@ -3473,7 +3473,7 @@ static void FlyInFieldEffect_BirdSwoopDown(struct Task *task)
SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_ON_FOOT);
if (task->tAvatarFlags & PLAYER_AVATAR_FLAG_SURFING)
{
- SetSurfBobState(objectEvent->fieldEffectSpriteId, 0);
+ SetSurfBlob_BobState(objectEvent->fieldEffectSpriteId, BOB_NONE);
}
ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING));
CameraObjectReset2();
@@ -3495,10 +3495,10 @@ static void FlyInFieldEffect_FlyInWithBird(struct Task *task)
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
sprite = &gSprites[objectEvent->spriteId];
SetFlyBirdPlayerSpriteId(task->tBirdSpriteId, MAX_SPRITES);
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
task->tState++;
task->tTimer = 0;
}
@@ -3527,7 +3527,7 @@ static void FlyInFieldEffect_JumpOffBird(struct Task *task)
8
};
struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
- sprite->pos2.y = sYPositions[task->tTimer];
+ sprite->y2 = sYPositions[task->tTimer];
if ((++task->tTimer) >= (int)ARRAY_COUNT(sYPositions))
task->tState++;
@@ -3543,8 +3543,8 @@ static void FlyInFieldEffect_FieldMovePose(struct Task *task)
sprite = &gSprites[objectEvent->spriteId];
objectEvent->inanimate = FALSE;
MoveObjectEventToMapCoords(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y);
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->coordOffsetEnabled = TRUE;
SetPlayerAvatarFieldMove();
ObjectEventSetHeldMovement(objectEvent, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
@@ -3582,7 +3582,7 @@ static void FlyInFieldEffect_End(struct Task *task)
if (task->tAvatarFlags & PLAYER_AVATAR_FLAG_SURFING)
{
state = PLAYER_AVATAR_STATE_SURFING;
- SetSurfBobState(objectEvent->fieldEffectSpriteId, 1);
+ SetSurfBlob_BobState(objectEvent->fieldEffectSpriteId, BOB_PLAYER_AND_MON);
}
ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(state));
ObjectEventTurn(objectEvent, DIR_SOUTH);
@@ -3780,8 +3780,8 @@ static const struct SpriteTemplate sSpriteTemplate_DeoxysRockFragment = {
static void CreateDeoxysRockFragments(struct Sprite* sprite)
{
int i;
- int xPos = (s16)gTotalCameraPixelOffsetX + sprite->pos1.x + sprite->pos2.x;
- int yPos = (s16)gTotalCameraPixelOffsetY + sprite->pos1.y + sprite->pos2.y - 4;
+ int xPos = (s16)gTotalCameraPixelOffsetX + sprite->x + sprite->x2;
+ int yPos = (s16)gTotalCameraPixelOffsetY + sprite->y + sprite->y2 - 4;
for (i = 0; i < 4; i++)
{
@@ -3801,23 +3801,23 @@ static void SpriteCB_DeoxysRockFragment(struct Sprite* sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos1.x -= 16;
- sprite->pos1.y -= 12;
+ sprite->x -= 16;
+ sprite->y -= 12;
break;
case 1:
- sprite->pos1.x += 16;
- sprite->pos1.y -= 12;
+ sprite->x += 16;
+ sprite->y -= 12;
break;
case 2:
- sprite->pos1.x -= 16;
- sprite->pos1.y += 12;
+ sprite->x -= 16;
+ sprite->y += 12;
break;
case 3:
- sprite->pos1.x += 16;
- sprite->pos1.y += 12;
+ sprite->x += 16;
+ sprite->y += 12;
break;
}
- if ((u16)(sprite->pos1.x + 4) > DISPLAY_WIDTH + 8 || sprite->pos1.y < -4 || sprite->pos1.y > DISPLAY_HEIGHT + 4)
+ if ((u16)(sprite->x + 4) > DISPLAY_WIDTH + 8 || sprite->y < -4 || sprite->y > DISPLAY_HEIGHT + 4)
DestroySprite(sprite);
}
@@ -3837,8 +3837,8 @@ bool8 FldEff_MoveDeoxysRock(struct Sprite* sprite)
ShiftObjectEventCoords(object, gFieldEffectArguments[3] + 7, gFieldEffectArguments[4] + 7);
taskId = CreateTask(Task_MoveDeoxysRock, 80);
gTasks[taskId].data[1] = object->spriteId;
- gTasks[taskId].data[2] = gSprites[object->spriteId].pos1.x + xPos;
- gTasks[taskId].data[3] = gSprites[object->spriteId].pos1.y + yPos;
+ gTasks[taskId].data[2] = gSprites[object->spriteId].x + xPos;
+ gTasks[taskId].data[3] = gSprites[object->spriteId].y + yPos;
gTasks[taskId].data[8] = gFieldEffectArguments[5];
gTasks[taskId].data[9] = objectEventIdBuffer;
}
@@ -3852,8 +3852,8 @@ static void Task_MoveDeoxysRock(u8 taskId)
switch (data[0])
{
case 0:
- data[4] = sprite->pos1.x << 4;
- data[5] = sprite->pos1.y << 4;
+ data[4] = sprite->x << 4;
+ data[5] = sprite->y << 4;
data[6] = SAFE_DIV(data[2] * 16 - data[4], data[8]);
data[7] = SAFE_DIV(data[3] * 16 - data[5], data[8]);
data[0]++;
@@ -3863,14 +3863,14 @@ static void Task_MoveDeoxysRock(u8 taskId)
data[8]--;
data[4] += data[6];
data[5] += data[7];
- sprite->pos1.x = data[4] >> 4;
- sprite->pos1.y = data[5] >> 4;
+ sprite->x = data[4] >> 4;
+ sprite->y = data[5] >> 4;
}
else
{
struct ObjectEvent *object = &gObjectEvents[data[9]];
- sprite->pos1.x = data[2];
- sprite->pos1.y = data[3];
+ sprite->x = data[2];
+ sprite->y = data[3];
ShiftStillObjectEventCoords(object);
object->triggerGroundEffectsOnStop = TRUE;
FieldEffectActiveListRemove(FLDEFF_MOVE_DEOXYS_ROCK);
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index 67102a83b..eab7d85ef 100755
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -19,19 +19,22 @@ static void UpdateObjectReflectionSprite(struct Sprite *);
static void LoadObjectReflectionPalette(struct ObjectEvent *objectEvent, struct Sprite *sprite);
static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *, u8);
static void LoadObjectRegularReflectionPalette(struct ObjectEvent *, u8);
-static void sub_81561FC(struct Sprite *, u8, u8);
+static void UpdateGrassFieldEffectSubpriority(struct Sprite *, u8, u8);
static void FadeFootprintsTireTracks_Step0(struct Sprite *);
static void FadeFootprintsTireTracks_Step1(struct Sprite *);
static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *);
-static void UpdateAshFieldEffect_Step0(struct Sprite *);
-static void UpdateAshFieldEffect_Step1(struct Sprite *);
-static void UpdateAshFieldEffect_Step2(struct Sprite *);
+static void UpdateAshFieldEffect_Wait(struct Sprite *);
+static void UpdateAshFieldEffect_Show(struct Sprite *);
+static void UpdateAshFieldEffect_End(struct Sprite *);
static void SynchroniseSurfAnim(struct ObjectEvent *, struct Sprite *);
-static void sub_81556E8(struct ObjectEvent *, struct Sprite *);
-static void CreateBobbingEffect(struct ObjectEvent *, struct Sprite *, struct Sprite *);
-static void sub_8155850(struct Sprite *);
+static void SynchroniseSurfPosition(struct ObjectEvent *, struct Sprite *);
+static void UpdateBobbingEffect(struct ObjectEvent *, struct Sprite *, struct Sprite *);
+static void SpriteCB_UnderwaterSurfBlob(struct Sprite *);
static u32 ShowDisguiseFieldEffect(u8, u8, u8);
+// Used by several field effects to determine which of a group it is
+#define sFldEff data[1]
+
#define sReflectionObjEventId data[0]
#define sReflectionObjEventLocalId data[1]
#define sReflectionVerticalOffset data[2]
@@ -41,7 +44,7 @@ void SetUpReflection(struct ObjectEvent *objectEvent, struct Sprite *sprite, boo
{
struct Sprite *reflectionSprite;
- reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->pos1.x, sprite->pos1.y, 0x98)];
+ reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->x, sprite->y, 0x98)];
reflectionSprite->callback = UpdateObjectReflectionSprite;
reflectionSprite->oam.priority = 3;
reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[reflectionSprite->oam.paletteNum];
@@ -139,12 +142,12 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite)
reflectionSprite->subspriteTables = mainSprite->subspriteTables;
reflectionSprite->subspriteTableNum = mainSprite->subspriteTableNum;
reflectionSprite->invisible = mainSprite->invisible;
- reflectionSprite->pos1.x = mainSprite->pos1.x;
- reflectionSprite->pos1.y = mainSprite->pos1.y + GetReflectionVerticalOffset(objectEvent) + reflectionSprite->sReflectionVerticalOffset;
+ reflectionSprite->x = mainSprite->x;
+ reflectionSprite->y = mainSprite->y + GetReflectionVerticalOffset(objectEvent) + reflectionSprite->sReflectionVerticalOffset;
reflectionSprite->centerToCornerVecX = mainSprite->centerToCornerVecX;
reflectionSprite->centerToCornerVecY = mainSprite->centerToCornerVecY;
- reflectionSprite->pos2.x = mainSprite->pos2.x;
- reflectionSprite->pos2.y = -mainSprite->pos2.y;
+ reflectionSprite->x2 = mainSprite->x2;
+ reflectionSprite->y2 = -mainSprite->y2;
reflectionSprite->coordOffsetEnabled = mainSprite->coordOffsetEnabled;
if (objectEvent->hideReflection == TRUE)
@@ -201,8 +204,8 @@ void ShowWarpArrowSprite(u8 spriteId, u8 direction, s16 x, s16 y)
{
SetSpritePosToMapCoords(x, y, &x2, &y2);
sprite = &gSprites[spriteId];
- sprite->pos1.x = x2 + 8;
- sprite->pos1.y = y2 + 8;
+ sprite->x = x2 + 8;
+ sprite->y = y2 + 8;
sprite->invisible = FALSE;
sprite->data[0] = x;
sprite->data[1] = y;
@@ -259,8 +262,8 @@ void UpdateShadowFieldEffect(struct Sprite *sprite)
objectEvent = &gObjectEvents[objectEventId];
linkedSprite = &gSprites[objectEvent->spriteId];
sprite->oam.priority = linkedSprite->oam.priority;
- sprite->pos1.x = linkedSprite->pos1.x;
- sprite->pos1.y = linkedSprite->pos1.y + sprite->data[3];
+ sprite->x = linkedSprite->x;
+ sprite->y = linkedSprite->y + sprite->data[3];
if (!objectEvent->active || !objectEvent->hasShadow
|| MetatileBehavior_IsPokeGrass(objectEvent->currentMetatileBehavior)
|| MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->currentMetatileBehavior)
@@ -273,6 +276,16 @@ void UpdateShadowFieldEffect(struct Sprite *sprite)
}
}
+// Sprite data for FLDEFF_TALL_GRASS and FLDEFF_LONG_GRASS
+#define sElevation data[0]
+#define sX data[1]
+#define sY data[2]
+#define sMapNum data[3] // Lower 8 bits
+#define sLocalId data[3] >> 8 // Upper 8 bits
+#define sMapGroup data[4]
+#define sCurrentMap data[5]
+#define sObjectMoved data[7]
+
u32 FldEff_TallGrass(void)
{
s16 x;
@@ -289,16 +302,15 @@ u32 FldEff_TallGrass(void)
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = gFieldEffectArguments[3];
- sprite->data[0] = gFieldEffectArguments[2];
- sprite->data[1] = gFieldEffectArguments[0];
- sprite->data[2] = gFieldEffectArguments[1];
- sprite->data[3] = gFieldEffectArguments[4];
- sprite->data[4] = gFieldEffectArguments[5];
- sprite->data[5] = gFieldEffectArguments[6];
+ sprite->sElevation = gFieldEffectArguments[2];
+ sprite->sX = gFieldEffectArguments[0];
+ sprite->sY = gFieldEffectArguments[1];
+ sprite->sMapNum = gFieldEffectArguments[4]; // Also sLocalId
+ sprite->sMapGroup = gFieldEffectArguments[5];
+ sprite->sCurrentMap = gFieldEffectArguments[6];
+
if (gFieldEffectArguments[7])
- {
- SeekSpriteAnim(sprite, 4);
- }
+ SeekSpriteAnim(sprite, 4); // Skip to end of anim
}
return 0;
}
@@ -312,34 +324,42 @@ void UpdateTallGrassFieldEffect(struct Sprite *sprite)
u8 objectEventId;
struct ObjectEvent *objectEvent;
- mapNum = sprite->data[5] >> 8;
- mapGroup = sprite->data[5];
+ mapNum = sprite->sCurrentMap >> 8;
+ mapGroup = sprite->sCurrentMap;
if (gCamera.active && (gSaveBlock1Ptr->location.mapNum != mapNum || gSaveBlock1Ptr->location.mapGroup != mapGroup))
{
- sprite->data[1] -= gCamera.x;
- sprite->data[2] -= gCamera.y;
- sprite->data[5] = ((u8)gSaveBlock1Ptr->location.mapNum << 8) | (u8)gSaveBlock1Ptr->location.mapGroup;
+ sprite->sX -= gCamera.x;
+ sprite->sY -= gCamera.y;
+ sprite->sCurrentMap = ((u8)gSaveBlock1Ptr->location.mapNum << 8) | (u8)gSaveBlock1Ptr->location.mapGroup;
}
- localId = sprite->data[3] >> 8;
- mapNum = sprite->data[3];
- mapGroup = sprite->data[4];
- metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data[1], sprite->data[2]);
- if (TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId) || !MetatileBehavior_IsTallGrass(metatileBehavior) || (sprite->data[7] && sprite->animEnded))
+ localId = sprite->sLocalId;
+ mapNum = sprite->sMapNum;
+ mapGroup = sprite->sMapGroup;
+ metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->sX, sprite->sY);
+
+ if (TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId)
+ || !MetatileBehavior_IsTallGrass(metatileBehavior)
+ || (sprite->sObjectMoved && sprite->animEnded))
{
FieldEffectStop(sprite, FLDEFF_TALL_GRASS);
}
else
{
+ // Check if the object that triggered the effect has moved away
objectEvent = &gObjectEvents[objectEventId];
- if ((objectEvent->currentCoords.x != sprite->data[1] || objectEvent->currentCoords.y != sprite->data[2]) && (objectEvent->previousCoords.x != sprite->data[1] || objectEvent->previousCoords.y != sprite->data[2]))
- sprite->data[7] = TRUE;
+ if ((objectEvent->currentCoords.x != sprite->sX
+ || objectEvent->currentCoords.y != sprite->sY)
+ && (objectEvent->previousCoords.x != sprite->sX
+ || objectEvent->previousCoords.y != sprite->sY))
+ sprite->sObjectMoved = TRUE;
+ // Metatile behavior var re-used
metatileBehavior = 0;
if (sprite->animCmdIndex == 0)
metatileBehavior = 4;
- UpdateObjectEventSpriteVisibility(sprite, 0);
- sub_81561FC(sprite, sprite->data[0], metatileBehavior);
+ UpdateObjectEventSpriteInvisibility(sprite, FALSE);
+ UpdateGrassFieldEffectSubpriority(sprite, sprite->sElevation, metatileBehavior);
}
}
@@ -355,8 +375,8 @@ u32 FldEff_JumpTallGrass(void)
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = gFieldEffectArguments[3];
- sprite->data[0] = gFieldEffectArguments[2];
- sprite->data[1] = FLDEFF_JUMP_TALL_GRASS;
+ sprite->sElevation = gFieldEffectArguments[2];
+ sprite->sFldEff = FLDEFF_JUMP_TALL_GRASS;
}
return 0;
}
@@ -371,11 +391,14 @@ u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s
if (gSprites[i].inUse)
{
sprite = &gSprites[i];
- if (sprite->callback == UpdateTallGrassFieldEffect && (x == sprite->data[1] && y == sprite->data[2]) && (localId == (u8)(sprite->data[3] >> 8) && mapNum == (sprite->data[3] & 0xFF) && mapGroup == sprite->data[4]))
+ if (sprite->callback == UpdateTallGrassFieldEffect
+ && (x == sprite->sX && y == sprite->sY)
+ && localId == (u8)(sprite->sLocalId)
+ && mapNum == (sprite->sMapNum & 0xFF)
+ && mapGroup == sprite->sMapGroup)
return i;
}
}
-
return MAX_SPRITES;
}
@@ -395,16 +418,15 @@ u32 FldEff_LongGrass(void)
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = ZCoordToPriority(gFieldEffectArguments[2]);
- sprite->data[0] = gFieldEffectArguments[2];
- sprite->data[1] = gFieldEffectArguments[0];
- sprite->data[2] = gFieldEffectArguments[1];
- sprite->data[3] = gFieldEffectArguments[4];
- sprite->data[4] = gFieldEffectArguments[5];
- sprite->data[5] = gFieldEffectArguments[6];
+ sprite->sElevation = gFieldEffectArguments[2];
+ sprite->sX = gFieldEffectArguments[0];
+ sprite->sY = gFieldEffectArguments[1];
+ sprite->sMapNum = gFieldEffectArguments[4]; // Also sLocalId
+ sprite->sMapGroup = gFieldEffectArguments[5];
+ sprite->sCurrentMap = gFieldEffectArguments[6];
+
if (gFieldEffectArguments[7])
- {
- SeekSpriteAnim(sprite, 6);
- }
+ SeekSpriteAnim(sprite, 6); // Skip to end of anim
}
return 0;
}
@@ -418,34 +440,47 @@ void UpdateLongGrassFieldEffect(struct Sprite *sprite)
u8 objectEventId;
struct ObjectEvent *objectEvent;
- mapNum = sprite->data[5] >> 8;
- mapGroup = sprite->data[5];
+ mapNum = sprite->sCurrentMap >> 8;
+ mapGroup = sprite->sCurrentMap;
if (gCamera.active && (gSaveBlock1Ptr->location.mapNum != mapNum || gSaveBlock1Ptr->location.mapGroup != mapGroup))
{
- sprite->data[1] -= gCamera.x;
- sprite->data[2] -= gCamera.y;
- sprite->data[5] = ((u8)gSaveBlock1Ptr->location.mapNum << 8) | (u8)gSaveBlock1Ptr->location.mapGroup;
+ sprite->sX -= gCamera.x;
+ sprite->sY -= gCamera.y;
+ sprite->sCurrentMap = ((u8)gSaveBlock1Ptr->location.mapNum << 8) | (u8)gSaveBlock1Ptr->location.mapGroup;
}
- localId = sprite->data[3] >> 8;
- mapNum = sprite->data[3];
- mapGroup = sprite->data[4];
+ localId = sprite->sLocalId;
+ mapNum = sprite->sMapNum;
+ mapGroup = sprite->sMapGroup;
metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data[1], sprite->data[2]);
- if (TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId) || !MetatileBehavior_IsLongGrass(metatileBehavior) || (sprite->data[7] && sprite->animEnded))
+ if (TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId)
+ || !MetatileBehavior_IsLongGrass(metatileBehavior)
+ || (sprite->sObjectMoved && sprite->animEnded))
{
FieldEffectStop(sprite, FLDEFF_LONG_GRASS);
}
else
{
+ // Check if the object that triggered the effect has moved away
objectEvent = &gObjectEvents[objectEventId];
- if ((objectEvent->currentCoords.x != sprite->data[1] || objectEvent->currentCoords.y != sprite->data[2]) && (objectEvent->previousCoords.x != sprite->data[1] || objectEvent->previousCoords.y != sprite->data[2]))
- {
- sprite->data[7] = TRUE;
- }
- UpdateObjectEventSpriteVisibility(sprite, 0);
- sub_81561FC(sprite, sprite->data[0], 0);
+ if ((objectEvent->currentCoords.x != sprite->data[1]
+ || objectEvent->currentCoords.y != sprite->data[2])
+ && (objectEvent->previousCoords.x != sprite->data[1]
+ || objectEvent->previousCoords.y != sprite->data[2]))
+ sprite->sObjectMoved = TRUE;
+
+ UpdateObjectEventSpriteInvisibility(sprite, FALSE);
+ UpdateGrassFieldEffectSubpriority(sprite, sprite->sElevation, 0);
}
}
+#undef sX
+#undef sY
+#undef sMapNum
+#undef sLocalId
+#undef sMapGroup
+#undef sCurrentMap
+#undef sObjectMoved
+
u32 FldEff_JumpLongGrass(void)
{
u8 spriteId;
@@ -458,8 +493,8 @@ u32 FldEff_JumpLongGrass(void)
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = gFieldEffectArguments[3];
- sprite->data[0] = gFieldEffectArguments[2];
- sprite->data[1] = FLDEFF_JUMP_LONG_GRASS;
+ sprite->sElevation = gFieldEffectArguments[2];
+ sprite->sFldEff = FLDEFF_JUMP_LONG_GRASS;
}
return 0;
}
@@ -482,8 +517,8 @@ u32 FldEff_ShortGrass(void)
sprite->data[0] = gFieldEffectArguments[0];
sprite->data[1] = gFieldEffectArguments[1];
sprite->data[2] = gFieldEffectArguments[2];
- sprite->data[3] = gSprites[objectEvent->spriteId].pos1.x;
- sprite->data[4] = gSprites[objectEvent->spriteId].pos1.y;
+ sprite->data[3] = gSprites[objectEvent->spriteId].x;
+ sprite->data[4] = gSprites[objectEvent->spriteId].y;
}
return 0;
}
@@ -504,8 +539,8 @@ void UpdateShortGrassFieldEffect(struct Sprite *sprite)
{
graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId);
linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId];
- y = linkedSprite->pos1.y;
- x = linkedSprite->pos1.x;
+ y = linkedSprite->y;
+ x = linkedSprite->x;
if (x != sprite->data[3] || y != sprite->data[4])
{
sprite->data[3] = x;
@@ -515,12 +550,12 @@ void UpdateShortGrassFieldEffect(struct Sprite *sprite)
StartSpriteAnim(sprite, 0);
}
}
- sprite->pos1.x = x;
- sprite->pos1.y = y;
- sprite->pos2.y = (graphicsInfo->height >> 1) - 8;
+ sprite->x = x;
+ sprite->y = y;
+ sprite->y2 = (graphicsInfo->height >> 1) - 8;
sprite->subpriority = linkedSprite->subpriority - 1;
sprite->oam.priority = linkedSprite->oam.priority;
- UpdateObjectEventSpriteVisibility(sprite, linkedSprite->invisible);
+ UpdateObjectEventSpriteInvisibility(sprite, linkedSprite->invisible);
}
}
@@ -594,14 +629,14 @@ static void FadeFootprintsTireTracks_Step0(struct Sprite *sprite)
if (++sprite->data[1] > 40)
sprite->data[0] = 1;
- UpdateObjectEventSpriteVisibility(sprite, FALSE);
+ UpdateObjectEventSpriteInvisibility(sprite, FALSE);
}
static void FadeFootprintsTireTracks_Step1(struct Sprite *sprite)
{
sprite->invisible ^= 1;
sprite->data[1]++;
- UpdateObjectEventSpriteVisibility(sprite, sprite->invisible);
+ UpdateObjectEventSpriteInvisibility(sprite, sprite->invisible);
if (sprite->data[1] > 56)
{
FieldEffectStop(sprite, sprite->data[7]);
@@ -630,7 +665,7 @@ u32 FldEff_Splash(void)
sprite->data[0] = gFieldEffectArguments[0];
sprite->data[1] = gFieldEffectArguments[1];
sprite->data[2] = gFieldEffectArguments[2];
- sprite->pos2.y = (graphicsInfo->height >> 1) - 4;
+ sprite->y2 = (graphicsInfo->height >> 1) - 4;
PlaySE(SE_PUDDLE);
}
return 0;
@@ -646,9 +681,9 @@ void UpdateSplashFieldEffect(struct Sprite *sprite)
}
else
{
- sprite->pos1.x = gSprites[gObjectEvents[objectEventId].spriteId].pos1.x;
- sprite->pos1.y = gSprites[gObjectEvents[objectEventId].spriteId].pos1.y;
- UpdateObjectEventSpriteVisibility(sprite, FALSE);
+ sprite->x = gSprites[gObjectEvents[objectEventId].spriteId].x;
+ sprite->y = gSprites[gObjectEvents[objectEventId].spriteId].y;
+ UpdateObjectEventSpriteInvisibility(sprite, FALSE);
}
}
@@ -711,7 +746,7 @@ u32 FldEff_FeetInFlowingWater(void)
sprite->data[2] = gFieldEffectArguments[2];
sprite->data[3] = -1;
sprite->data[4] = -1;
- sprite->pos2.y = (graphicsInfo->height >> 1) - 4;
+ sprite->y2 = (graphicsInfo->height >> 1) - 4;
StartSpriteAnim(sprite, 1);
}
return 0;
@@ -731,10 +766,10 @@ static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *sprite)
{
objectEvent = &gObjectEvents[objectEventId];
linkedSprite = &gSprites[objectEvent->spriteId];
- sprite->pos1.x = linkedSprite->pos1.x;
- sprite->pos1.y = linkedSprite->pos1.y;
+ sprite->x = linkedSprite->x;
+ sprite->y = linkedSprite->y;
sprite->subpriority = linkedSprite->subpriority;
- UpdateObjectEventSpriteVisibility(sprite, FALSE);
+ UpdateObjectEventSpriteInvisibility(sprite, FALSE);
if (objectEvent->currentCoords.x != sprite->data[3] || objectEvent->currentCoords.y != sprite->data[4])
{
sprite->data[3] = objectEvent->currentCoords.x;
@@ -781,8 +816,8 @@ u32 FldEff_HotSpringsWater(void)
sprite->data[0] = gFieldEffectArguments[0];
sprite->data[1] = gFieldEffectArguments[1];
sprite->data[2] = gFieldEffectArguments[2];
- sprite->data[3] = gSprites[objectEvent->spriteId].pos1.x;
- sprite->data[4] = gSprites[objectEvent->spriteId].pos1.y;
+ sprite->data[3] = gSprites[objectEvent->spriteId].x;
+ sprite->data[4] = gSprites[objectEvent->spriteId].y;
}
return 0;
}
@@ -801,10 +836,10 @@ void UpdateHotSpringsWaterFieldEffect(struct Sprite *sprite)
{
graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId);
linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId];
- sprite->pos1.x = linkedSprite->pos1.x;
- sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 8;
+ sprite->x = linkedSprite->x;
+ sprite->y = (graphicsInfo->height >> 1) + linkedSprite->y - 8;
sprite->subpriority = linkedSprite->subpriority - 1;
- UpdateObjectEventSpriteVisibility(sprite, FALSE);
+ UpdateObjectEventSpriteInvisibility(sprite, FALSE);
}
}
@@ -876,14 +911,21 @@ u32 FldEff_WaterSurfacing(void)
return 0;
}
-void StartAshFieldEffect(s16 x, s16 y, u16 metatileId, s16 d)
+// Sprite data for FLDEFF_ASH
+#define sState data[0]
+#define sX data[1]
+#define sY data[2]
+#define sMetatileId data[3]
+#define sDelay data[4]
+
+void StartAshFieldEffect(s16 x, s16 y, u16 metatileId, s16 delay)
{
gFieldEffectArguments[0] = x;
gFieldEffectArguments[1] = y;
- gFieldEffectArguments[2] = 0x52;
- gFieldEffectArguments[3] = 1;
+ gFieldEffectArguments[2] = 82; // subpriority
+ gFieldEffectArguments[3] = 1; // priority
gFieldEffectArguments[4] = metatileId;
- gFieldEffectArguments[5] = d;
+ gFieldEffectArguments[5] = delay;
FieldEffectStart(FLDEFF_ASH);
}
@@ -903,50 +945,62 @@ u32 FldEff_Ash(void)
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = gFieldEffectArguments[3];
- sprite->data[1] = gFieldEffectArguments[0];
- sprite->data[2] = gFieldEffectArguments[1];
- sprite->data[3] = gFieldEffectArguments[4];
- sprite->data[4] = gFieldEffectArguments[5];
+ sprite->sX = gFieldEffectArguments[0];
+ sprite->sY = gFieldEffectArguments[1];
+ sprite->sMetatileId = gFieldEffectArguments[4];
+ sprite->sDelay = gFieldEffectArguments[5];
}
return 0;
}
void (*const gAshFieldEffectFuncs[])(struct Sprite *) = {
- UpdateAshFieldEffect_Step0,
- UpdateAshFieldEffect_Step1,
- UpdateAshFieldEffect_Step2
+ UpdateAshFieldEffect_Wait,
+ UpdateAshFieldEffect_Show,
+ UpdateAshFieldEffect_End
};
void UpdateAshFieldEffect(struct Sprite *sprite)
{
- gAshFieldEffectFuncs[sprite->data[0]](sprite);
+ gAshFieldEffectFuncs[sprite->sState](sprite);
}
-static void UpdateAshFieldEffect_Step0(struct Sprite *sprite)
+static void UpdateAshFieldEffect_Wait(struct Sprite *sprite)
{
sprite->invisible = TRUE;
sprite->animPaused = TRUE;
- if (--sprite->data[4] == 0)
- sprite->data[0] = 1;
+ if (--sprite->sDelay == 0)
+ sprite->sState = 1;
}
-static void UpdateAshFieldEffect_Step1(struct Sprite *sprite)
+static void UpdateAshFieldEffect_Show(struct Sprite *sprite)
{
sprite->invisible = FALSE;
sprite->animPaused = FALSE;
- MapGridSetMetatileIdAt(sprite->data[1], sprite->data[2], sprite->data[3]);
- CurrentMapDrawMetatileAt(sprite->data[1], sprite->data[2]);
+ MapGridSetMetatileIdAt(sprite->sX, sprite->sY, sprite->sMetatileId);
+ CurrentMapDrawMetatileAt(sprite->sX, sprite->sY);
gObjectEvents[gPlayerAvatar.objectEventId].triggerGroundEffectsOnMove = TRUE;
- sprite->data[0] = 2;
+ sprite->sState = 2;
}
-static void UpdateAshFieldEffect_Step2(struct Sprite *sprite)
+static void UpdateAshFieldEffect_End(struct Sprite *sprite)
{
- UpdateObjectEventSpriteVisibility(sprite, FALSE);
+ UpdateObjectEventSpriteInvisibility(sprite, FALSE);
if (sprite->animEnded)
FieldEffectStop(sprite, FLDEFF_ASH);
}
+#undef sState
+#undef sX
+#undef sY
+#undef sMetatileId
+#undef sDelay
+
+// Sprite data for FLDEFF_SURF_BLOB
+#define tBitfield data[0]
+#define tPlayerOffset data[1]
+#define tPlayerObjId data[2]
+
+
u32 FldEff_SurfBlob(void)
{
u8 spriteId;
@@ -954,12 +1008,12 @@ u32 FldEff_SurfBlob(void)
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SURF_BLOB], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x96);
- if (spriteId !=MAX_SPRITES)
+ if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.paletteNum = 0;
- sprite->data[2] = gFieldEffectArguments[2];
+ sprite->tPlayerObjId = gFieldEffectArguments[2];
sprite->data[3] = -1;
sprite->data[6] = -1;
sprite->data[7] = -1;
@@ -968,53 +1022,55 @@ u32 FldEff_SurfBlob(void)
return spriteId;
}
-// States for bobbing up and down while surfing
-void SetSurfBobState(u8 spriteId, u8 value)
+
+void SetSurfBlob_BobState(u8 spriteId, u8 state)
{
- gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF) | (value & 0xF);
+ gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF) | (state & 0xF);
}
-void SetSurfBobWhileFlyingOutState(u8 spriteId, u8 value)
+void SetSurfBlob_DontSyncAnim(u8 spriteId, bool8 dontSync)
{
- gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF0) | ((value & 0xF) << 4);
+ gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF0) | ((dontSync & 0xF) << 4);
}
-void SetSurfBobWhileFishingState(u8 spriteId, u8 value, s16 data1)
+void SetSurfBlob_PlayerOffset(u8 spriteId, bool8 hasOffset, s16 offset)
{
- gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF00) | ((value & 0xF) << 8);
- gSprites[spriteId].data[1] = data1;
+ gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF00) | ((hasOffset & 0xF) << 8);
+ gSprites[spriteId].tPlayerOffset = offset;
}
-static u8 GetSurfBobState(struct Sprite *sprite)
+static u8 GetSurfBlob_BobState(struct Sprite *sprite)
{
return sprite->data[0] & 0xF;
}
-static u8 GetSurfBobWhileFlyingOutState(struct Sprite *sprite)
+// Never TRUE
+static u8 GetSurfBlob_DontSyncAnim(struct Sprite *sprite)
{
return (sprite->data[0] & 0xF0) >> 4;
}
-static u8 GetSurfBobWhileFishingState(struct Sprite *sprite)
+static u8 GetSurfBlob_HasPlayerOffset(struct Sprite *sprite)
{
return (sprite->data[0] & 0xF00) >> 8;
}
void UpdateSurfBlobFieldEffect(struct Sprite *sprite)
{
- struct ObjectEvent *objectEvent;
- struct Sprite *linkedSprite;
+ struct ObjectEvent *playerObj;
+ struct Sprite *playerSprite;
- objectEvent = &gObjectEvents[sprite->data[2]];
- linkedSprite = &gSprites[objectEvent->spriteId];
- SynchroniseSurfAnim(objectEvent, sprite);
- sub_81556E8(objectEvent, sprite);
- CreateBobbingEffect(objectEvent, linkedSprite, sprite);
- sprite->oam.priority = linkedSprite->oam.priority;
+ playerObj = &gObjectEvents[sprite->tPlayerObjId];
+ playerSprite = &gSprites[playerObj->spriteId];
+ SynchroniseSurfAnim(playerObj, sprite);
+ SynchroniseSurfPosition(playerObj, sprite);
+ UpdateBobbingEffect(playerObj, playerSprite, sprite);
+ sprite->oam.priority = playerSprite->oam.priority;
}
-static void SynchroniseSurfAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static void SynchroniseSurfAnim(struct ObjectEvent *playerObj, struct Sprite *sprite)
{
+ // Indexes into sAnimTable_SurfBlob
u8 surfBlobDirectionAnims[] = {
[DIR_NONE] = 0,
[DIR_SOUTH] = 0,
@@ -1027,16 +1083,16 @@ static void SynchroniseSurfAnim(struct ObjectEvent *objectEvent, struct Sprite *
[DIR_NORTHEAST] = 1,
};
- if (GetSurfBobWhileFlyingOutState(sprite) == 0)
- StartSpriteAnimIfDifferent(sprite, surfBlobDirectionAnims[objectEvent->movementDirection]);
+ if (!GetSurfBlob_DontSyncAnim(sprite))
+ StartSpriteAnimIfDifferent(sprite, surfBlobDirectionAnims[playerObj->movementDirection]);
}
-void sub_81556E8(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+void SynchroniseSurfPosition(struct ObjectEvent *playerObj, struct Sprite *sprite)
{
u8 i;
- s16 x = objectEvent->currentCoords.x;
- s16 y = objectEvent->currentCoords.y;
- s32 spriteY = sprite->pos2.y;
+ s16 x = playerObj->currentCoords.x;
+ s16 y = playerObj->currentCoords.y;
+ s32 spriteY = sprite->y2;
if (spriteY == 0 && (x != sprite->data[6] || y != sprite->data[7]))
{
@@ -1048,68 +1104,81 @@ void sub_81556E8(struct ObjectEvent *objectEvent, struct Sprite *sprite)
MoveCoords(i, &x, &y);
if (MapGridGetZCoordAt(x, y) == 3)
{
- sprite->data[5] ++;
+ sprite->data[5]++;
break;
}
}
}
}
-static void CreateBobbingEffect(struct ObjectEvent *objectEvent, struct Sprite *linkedSprite, struct Sprite *sprite)
+static void UpdateBobbingEffect(struct ObjectEvent *playerObj, struct Sprite *playerSprite, struct Sprite *sprite)
{
- u16 unk_085CDC6A[] = {3, 7};
- u8 bobState = GetSurfBobState(sprite);
- if (bobState != 0)
+ u16 intervals[] = {3, 7};
+ u8 bobState = GetSurfBlob_BobState(sprite);
+ if (bobState != BOB_NONE)
{
- if (((u16)(++ sprite->data[4]) & unk_085CDC6A[sprite->data[5]]) == 0)
+ // Update bobbing position of surf blob
+ if (((u16)(++sprite->data[4]) & intervals[sprite->data[5]]) == 0)
{
- sprite->pos2.y += sprite->data[3];
+ sprite->y2 += sprite->data[3];
}
- if ((sprite->data[4] & 0x0F) == 0)
+ if ((sprite->data[4] & 15) == 0)
{
sprite->data[3] = -sprite->data[3];
}
- if (bobState != 2)
+ if (bobState != BOB_JUST_MON)
{
- if (GetSurfBobWhileFishingState(sprite) == 0)
- linkedSprite->pos2.y = sprite->pos2.y;
+ // Update bobbing position of player
+ if (!GetSurfBlob_HasPlayerOffset(sprite))
+ playerSprite->y2 = sprite->y2;
else
- linkedSprite->pos2.y = sprite->data[1] + sprite->pos2.y;
- sprite->pos1.x = linkedSprite->pos1.x;
- sprite->pos1.y = linkedSprite->pos1.y + 8;
+ playerSprite->y2 = sprite->tPlayerOffset + sprite->y2;
+ sprite->x = playerSprite->x;
+ sprite->y = playerSprite->y + 8;
}
}
}
-u8 sub_8155800(u8 oldSpriteId)
+#define sSpriteId data[0]
+#define sBobY data[1]
+#define sTimer data[2]
+
+u8 StartUnderwaterSurfBlobBobbing(u8 blobSpriteId)
{
u8 spriteId;
struct Sprite *sprite;
+ // Create a dummy sprite with its own callback
+ // that tracks the actual surf blob sprite and
+ // makes it bob up and down underwater
spriteId = CreateSpriteAtEnd(&gDummySpriteTemplate, 0, 0, -1);
sprite = &gSprites[spriteId];
- sprite->callback = sub_8155850;
+ sprite->callback = SpriteCB_UnderwaterSurfBlob;
sprite->invisible = TRUE;
- sprite->data[0] = oldSpriteId;
- sprite->data[1] = 1;
+ sprite->sSpriteId = blobSpriteId;
+ sprite->sBobY = 1;
return spriteId;
}
-static void sub_8155850(struct Sprite *sprite)
+static void SpriteCB_UnderwaterSurfBlob(struct Sprite *sprite)
{
- struct Sprite *oldSprite;
+ struct Sprite *blobSprite;
- oldSprite = &gSprites[sprite->data[0]];
- if (((sprite->data[2]++) & 0x03) == 0)
+ blobSprite = &gSprites[sprite->sSpriteId];
+ if (((sprite->sTimer++) & 3) == 0)
{
- oldSprite->pos2.y += sprite->data[1];
+ blobSprite->y2 += sprite->sBobY;
}
- if ((sprite->data[2] & 0x0F) == 0)
+ if ((sprite->sTimer & 15) == 0)
{
- sprite->data[1] = -sprite->data[1];
+ sprite->sBobY = -sprite->sBobY;
}
}
+#undef sSpriteId
+#undef sBobY
+#undef sTimer
+
u32 FldEff_Dust(void)
{
u8 spriteId;
@@ -1148,9 +1217,9 @@ u32 FldEff_SandPile(void)
sprite->data[0] = gFieldEffectArguments[0];
sprite->data[1] = gFieldEffectArguments[1];
sprite->data[2] = gFieldEffectArguments[2];
- sprite->data[3] = gSprites[objectEvent->spriteId].pos1.x;
- sprite->data[4] = gSprites[objectEvent->spriteId].pos1.y;
- sprite->pos2.y = (graphicsInfo->height >> 1) - 2;
+ sprite->data[3] = gSprites[objectEvent->spriteId].x;
+ sprite->data[4] = gSprites[objectEvent->spriteId].y;
+ sprite->y2 = (graphicsInfo->height >> 1) - 2;
SeekSpriteAnim(sprite, 2);
}
return 0;
@@ -1168,8 +1237,8 @@ void UpdateSandPileFieldEffect(struct Sprite *sprite)
}
else
{
- y = gSprites[gObjectEvents[objectEventId].spriteId].pos1.y;
- x = gSprites[gObjectEvents[objectEventId].spriteId].pos1.x;
+ y = gSprites[gObjectEvents[objectEventId].spriteId].y;
+ x = gSprites[gObjectEvents[objectEventId].spriteId].x;
if (x != sprite->data[3] || y != sprite->data[4])
{
sprite->data[3] = x;
@@ -1179,10 +1248,10 @@ void UpdateSandPileFieldEffect(struct Sprite *sprite)
StartSpriteAnim(sprite, 0);
}
}
- sprite->pos1.x = x;
- sprite->pos1.y = y;
+ sprite->x = x;
+ sprite->y = y;
sprite->subpriority = gSprites[gObjectEvents[objectEventId].spriteId].subpriority;
- UpdateObjectEventSpriteVisibility(sprite, FALSE);
+ UpdateObjectEventSpriteInvisibility(sprite, FALSE);
}
}
@@ -1206,8 +1275,8 @@ void UpdateBubblesFieldEffect(struct Sprite *sprite)
{
sprite->data[0] += 0x80;
sprite->data[0] &= 0x100;
- sprite->pos1.y -= sprite->data[0] >> 8;
- UpdateObjectEventSpriteVisibility(sprite, FALSE);
+ sprite->y -= sprite->data[0] >> 8;
+ UpdateObjectEventSpriteInvisibility(sprite, FALSE);
if (sprite->invisible || sprite->animEnded)
{
FieldEffectStop(sprite, FLDEFF_BUBBLES);
@@ -1232,6 +1301,13 @@ u32 FldEff_BerryTreeGrowthSparkle(void)
return 0;
}
+// Sprite data for FLDEFF_TREE_DISGUISE / FLDEFF_MOUNTAIN_DISGUISE / FLDEFF_SAND_DISGUISE
+#define sState data[0]
+#define sLocalId data[2]
+#define sMapNum data[3]
+#define sMapGroup data[4]
+#define sReadyToEnd data[7]
+
u32 ShowTreeDisguiseFieldEffect(void)
{
return ShowDisguiseFieldEffect(FLDEFF_TREE_DISGUISE, FLDEFFOBJ_TREE_DISGUISE, 4);
@@ -1263,10 +1339,10 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum)
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled ++;
sprite->oam.paletteNum = paletteNum;
- sprite->data[1] = fldEff;
- sprite->data[2] = gFieldEffectArguments[0];
- sprite->data[3] = gFieldEffectArguments[1];
- sprite->data[4] = gFieldEffectArguments[2];
+ sprite->sFldEff = fldEff;
+ sprite->sLocalId = gFieldEffectArguments[0];
+ sprite->sMapNum = gFieldEffectArguments[1];
+ sprite->sMapGroup = gFieldEffectArguments[2];
}
return spriteId;
}
@@ -1277,62 +1353,65 @@ void UpdateDisguiseFieldEffect(struct Sprite *sprite)
const struct ObjectEventGraphicsInfo *graphicsInfo;
struct Sprite *linkedSprite;
- if (TryGetObjectEventIdByLocalIdAndMap(sprite->data[2], sprite->data[3], sprite->data[4], &objectEventId))
- {
- FieldEffectStop(sprite, sprite->data[1]);
- }
+ if (TryGetObjectEventIdByLocalIdAndMap(sprite->sLocalId, sprite->sMapNum, sprite->sMapGroup, &objectEventId))
+ FieldEffectStop(sprite, sprite->sFldEff);
graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId);
linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId];
sprite->invisible = linkedSprite->invisible;
- sprite->pos1.x = linkedSprite->pos1.x;
- sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 16;
+ sprite->x = linkedSprite->x;
+ sprite->y = (graphicsInfo->height >> 1) + linkedSprite->y - 16;
sprite->subpriority = linkedSprite->subpriority - 1;
- if (sprite->data[0] == 1)
+
+ if (sprite->sState == 1)
{
- sprite->data[0] ++;
+ sprite->sState++;
StartSpriteAnim(sprite, 1);
}
- if (sprite->data[0] == 2 && sprite->animEnded)
- {
- sprite->data[7] = 1;
- }
- if (sprite->data[0] == 3)
- {
- FieldEffectStop(sprite, sprite->data[1]);
- }
+
+ if (sprite->sState == 2 && sprite->animEnded)
+ sprite->sReadyToEnd = TRUE;
+
+ if (sprite->sState == 3)
+ FieldEffectStop(sprite, sprite->sFldEff);
}
-void sub_8155D78(struct ObjectEvent *objectEvent)
+void StartRevealDisguise(struct ObjectEvent *objectEvent)
{
if (objectEvent->directionSequenceIndex == 1)
- {
- gSprites[objectEvent->fieldEffectSpriteId].data[0]++;
- }
+ gSprites[objectEvent->fieldEffectSpriteId].sState++;
}
-bool8 sub_8155DA0(struct ObjectEvent *objectEvent)
+bool8 UpdateRevealDisguise(struct ObjectEvent *objectEvent)
{
struct Sprite *sprite;
if (objectEvent->directionSequenceIndex == 2)
- {
return TRUE;
- }
+
if (objectEvent->directionSequenceIndex == 0)
- {
return TRUE;
- }
+
sprite = &gSprites[objectEvent->fieldEffectSpriteId];
- if (sprite->data[7])
+ if (sprite->sReadyToEnd)
{
objectEvent->directionSequenceIndex = 2;
- sprite->data[0]++;
+ sprite->sState++;
return TRUE;
}
return FALSE;
}
+#undef sState
+#undef sLocalId
+#undef sMapNum
+#undef sMapGroup
+#undef sReadyToEnd
+
+// Sprite data for FLDEFF_SPARKLE
+#define sFinished data[0]
+#define sEndTimer data[1]
+
u32 FldEff_Sparkle(void)
{
u8 spriteId;
@@ -1351,22 +1430,22 @@ u32 FldEff_Sparkle(void)
void UpdateSparkleFieldEffect(struct Sprite *sprite)
{
- if (sprite->data[0] == 0)
+ if (!sprite->sFinished)
{
if (sprite->animEnded)
{
sprite->invisible = TRUE;
- sprite->data[0]++;
+ sprite->sFinished++;
}
-
- if (sprite->data[0] == 0)
- return;
}
- if (++sprite->data[1] > 34)
+ if (sprite->sFinished && ++sprite->sEndTimer > 34)
FieldEffectStop(sprite, FLDEFF_SPARKLE);
}
+#undef sFinished
+#undef sEndTimer
+
#define sTimer data[0]
#define sState data[2]
#define sStartY data[4]
@@ -1389,25 +1468,25 @@ static bool8 AnimateRayquazaInFigure8(struct Sprite *sprite)
switch (sprite->sAnimState)
{
case 0:
- sprite->pos2.x += GetFigure8XOffset(sprite->sAnimCounter);
- sprite->pos2.y += GetFigure8YOffset(sprite->sAnimCounter);
+ sprite->x2 += GetFigure8XOffset(sprite->sAnimCounter);
+ sprite->y2 += GetFigure8YOffset(sprite->sAnimCounter);
break;
case 1:
- sprite->pos2.x -= GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
- sprite->pos2.y += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
+ sprite->x2 -= GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
+ sprite->y2 += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
break;
case 2:
- sprite->pos2.x -= GetFigure8XOffset(sprite->sAnimCounter);
- sprite->pos2.y += GetFigure8YOffset(sprite->sAnimCounter);
+ sprite->x2 -= GetFigure8XOffset(sprite->sAnimCounter);
+ sprite->y2 += GetFigure8YOffset(sprite->sAnimCounter);
break;
case 3:
- sprite->pos2.x += GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
- sprite->pos2.y += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
+ sprite->x2 += GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
+ sprite->y2 += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
break;
}
// Update spotlight to sweep left and right with Rayquaza
- SetGpuReg(REG_OFFSET_BG0HOFS, -sprite->pos2.x);
+ SetGpuReg(REG_OFFSET_BG0HOFS, -sprite->x2);
if (++sprite->sAnimCounter == FIGURE_8_LENGTH)
{
@@ -1416,8 +1495,8 @@ static bool8 AnimateRayquazaInFigure8(struct Sprite *sprite)
}
if (sprite->sAnimState == 4)
{
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
finished = TRUE;
}
@@ -1449,7 +1528,7 @@ void UpdateRayquazaSpotlightEffect(struct Sprite *sprite)
}
break;
case 1:
- sprite->pos1.y = (gSineTable[sprite->sTimer / 3] >> 2) + sprite->sStartY;
+ sprite->y = (gSineTable[sprite->sTimer / 3] >> 2) + sprite->sStartY;
if (sprite->sTimer == 189)
{
sprite->sState = 2;
@@ -1470,7 +1549,7 @@ void UpdateRayquazaSpotlightEffect(struct Sprite *sprite)
}
break;
case 3:
- if (sprite->pos2.y == 0)
+ if (sprite->y2 == 0)
{
sprite->sTimer = 0;
sprite->sState++;
@@ -1478,10 +1557,10 @@ void UpdateRayquazaSpotlightEffect(struct Sprite *sprite)
if (sprite->sTimer == 5)
{
sprite->sTimer = 0;
- if (sprite->pos2.y > 0)
- sprite->pos2.y--;
+ if (sprite->y2 > 0)
+ sprite->y2--;
else
- sprite->pos2.y++;
+ sprite->y2++;
}
break;
case 4:
@@ -1535,7 +1614,7 @@ void UpdateRayquazaSpotlightEffect(struct Sprite *sprite)
if (sprite->sState == 1)
{
if ((sprite->data[1] & 7) == 0)
- sprite->pos2.y += sprite->data[3];
+ sprite->y2 += sprite->data[3];
if ((sprite->data[1] & 15) == 0)
sprite->data[3] = -sprite->data[3];
sprite->data[1]++;
@@ -1551,16 +1630,17 @@ void UpdateRayquazaSpotlightEffect(struct Sprite *sprite)
#undef sAnimCounter
#undef sAnimState
+// Used by FLDEFF_JUMP_TALL_GRASS and FLDEFF_JUMP_LONG_GRASS
void UpdateJumpImpactEffect(struct Sprite *sprite)
{
if (sprite->animEnded)
{
- FieldEffectStop(sprite, sprite->data[1]);
+ FieldEffectStop(sprite, sprite->sFldEff);
}
else
{
- UpdateObjectEventSpriteVisibility(sprite, FALSE);
- SetObjectSubpriorityByZCoord(sprite->data[0], sprite, 0);
+ UpdateObjectEventSpriteInvisibility(sprite, FALSE);
+ SetObjectSubpriorityByZCoord(sprite->sElevation, sprite, 0);
}
}
@@ -1569,10 +1649,10 @@ void WaitFieldEffectSpriteAnim(struct Sprite *sprite)
if (sprite->animEnded)
FieldEffectStop(sprite, sprite->data[0]);
else
- UpdateObjectEventSpriteVisibility(sprite, FALSE);
+ UpdateObjectEventSpriteInvisibility(sprite, FALSE);
}
-static void sub_81561FC(struct Sprite *sprite, u8 z, u8 offset)
+static void UpdateGrassFieldEffectSubpriority(struct Sprite *sprite, u8 z, u8 offset)
{
u8 i;
s16 var, xhi, lyhi, yhi, ylo;
@@ -1587,13 +1667,13 @@ static void sub_81561FC(struct Sprite *sprite, u8 z, u8 offset)
{
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
linkedSprite = &gSprites[objectEvent->spriteId];
- xhi = sprite->pos1.x + sprite->centerToCornerVecX;
- var = sprite->pos1.x - sprite->centerToCornerVecX;
- if (xhi < linkedSprite->pos1.x && var > linkedSprite->pos1.x)
+ xhi = sprite->x + sprite->centerToCornerVecX;
+ var = sprite->x - sprite->centerToCornerVecX;
+ if (xhi < linkedSprite->x && var > linkedSprite->x)
{
- lyhi = linkedSprite->pos1.y + linkedSprite->centerToCornerVecY;
- var = linkedSprite->pos1.y;
- ylo = sprite->pos1.y - sprite->centerToCornerVecY;
+ lyhi = linkedSprite->y + linkedSprite->centerToCornerVecY;
+ var = linkedSprite->y;
+ ylo = sprite->y - sprite->centerToCornerVecY;
yhi = ylo + linkedSprite->centerToCornerVecY;
if ((lyhi < yhi || lyhi < ylo) && var > yhi && sprite->subpriority <= linkedSprite->subpriority)
{
@@ -1605,18 +1685,27 @@ static void sub_81561FC(struct Sprite *sprite, u8 z, u8 offset)
}
}
-// Unused data. Feel free to remove.
-static const u8 gUnknown_085CDC6E[] =
-{
- 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02,
- 0x01, 0x02, 0x02, 0x01, 0x02, 0x02, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02,
- 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00,
- 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01,
- 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00,
- 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
- 0x00, 0x00, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00
+// Unused, duplicates of data in event_object_movement.c
+static const s8 sFigure8XOffsets[FIGURE_8_LENGTH] = {
+ 1, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 1, 2, 2, 1, 2,
+ 2, 1, 2, 2, 1, 2, 1, 1,
+ 2, 1, 1, 2, 1, 1, 2, 1,
+ 1, 2, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 1, 1, 1, 0, 1, 1, 0,
+ 1, 0, 1, 0, 1, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0,
+};
+
+static const s8 sFigure8YOffsets[FIGURE_8_LENGTH] = {
+ 0, 0, 1, 0, 0, 1, 0, 0,
+ 1, 0, 1, 1, 0, 1, 1, 0,
+ 1, 1, 0, 1, 1, 0, 1, 1,
+ 0, 0, 1, 0, 0, 1, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -1, 0, 0, -1, 0, 0,
+ -1, 0, -1, -1, 0, -1, -1, 0,
+ -1, -1, -1, -1, -1, -1, -1, -2,
};
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index 4f85ad628..e5f6007b5 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -722,9 +722,9 @@ static bool8 CanStopSurfing(s16 x, s16 y, u8 direction)
}
}
-static bool8 ShouldJumpLedge(s16 x, s16 y, u8 z)
+static bool8 ShouldJumpLedge(s16 x, s16 y, u8 direction)
{
- if (GetLedgeJumpDirection(x, y, z) != 0)
+ if (GetLedgeJumpDirection(x, y, direction) != DIR_NONE)
return TRUE;
else
return FALSE;
@@ -863,7 +863,7 @@ static void PlayerAvatarTransition_Surfing(struct ObjectEvent *objEvent)
gFieldEffectArguments[2] = gPlayerAvatar.objectEventId;
spriteId = FieldEffectStart(FLDEFF_SURF_BLOB);
objEvent->fieldEffectSpriteId = spriteId;
- SetSurfBobState(spriteId, 1);
+ SetSurfBlob_BobState(spriteId, BOB_PLAYER_AND_MON);
}
static void PlayerAvatarTransition_Underwater(struct ObjectEvent *objEvent)
@@ -871,7 +871,7 @@ static void PlayerAvatarTransition_Underwater(struct ObjectEvent *objEvent)
ObjectEventSetGraphicsId(objEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_UNDERWATER));
ObjectEventTurn(objEvent, objEvent->movementDirection);
SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_UNDERWATER);
- objEvent->fieldEffectSpriteId = sub_8155800(objEvent->spriteId);
+ objEvent->fieldEffectSpriteId = StartUnderwaterSurfBlobBobbing(objEvent->spriteId);
}
static void PlayerAvatarTransition_ReturnToField(struct ObjectEvent *objEvent)
@@ -1192,7 +1192,7 @@ u8 GetPlayerAvatarFlags(void)
return gPlayerAvatar.flags;
}
-u8 GetPlayerAvatarObjectId(void)
+u8 GetPlayerAvatarSpriteId(void)
{
return gPlayerAvatar.spriteId;
}
@@ -1646,7 +1646,7 @@ static void Task_StopSurfingInit(u8 taskId)
if (!ObjectEventClearHeldMovementIfFinished(playerObjEvent))
return;
}
- SetSurfBobState(playerObjEvent->fieldEffectSpriteId, 2);
+ SetSurfBlob_BobState(playerObjEvent->fieldEffectSpriteId, BOB_JUST_MON);
ObjectEventSetHeldMovement(playerObjEvent, GetJumpSpecialMovementAction((u8)gTasks[taskId].data[0]));
gTasks[taskId].func = Task_WaitStopSurfing;
}
@@ -1932,9 +1932,9 @@ static bool8 Fishing_StartEncounter(struct Task *task)
ObjectEventSetGraphicsId(playerObjEvent, task->tPlayerGfxId);
ObjectEventTurn(playerObjEvent, playerObjEvent->movementDirection);
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
- SetSurfBobWhileFishingState(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 0, 0);
- gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
- gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
+ SetSurfBlob_PlayerOffset(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, FALSE, 0);
+ gSprites[gPlayerAvatar.spriteId].x2 = 0;
+ gSprites[gPlayerAvatar.spriteId].y2 = 0;
ClearDialogWindowAndFrame(0, TRUE);
task->tFrameCounter++;
return FALSE;
@@ -1989,9 +1989,9 @@ static bool8 Fishing_PutRodAway(struct Task *task)
ObjectEventSetGraphicsId(playerObjEvent, task->tPlayerGfxId);
ObjectEventTurn(playerObjEvent, playerObjEvent->movementDirection);
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
- SetSurfBobWhileFishingState(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 0, 0);
- gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
- gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
+ SetSurfBlob_PlayerOffset(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, FALSE, 0);
+ gSprites[gPlayerAvatar.spriteId].x2 = 0;
+ gSprites[gPlayerAvatar.spriteId].y2 = 0;
task->tStep++;
}
return FALSE;
@@ -2023,8 +2023,8 @@ static void AlignFishingAnimationFrames(void)
u8 animType;
AnimateSprite(playerSprite);
- playerSprite->pos2.x = 0;
- playerSprite->pos2.y = 0;
+ playerSprite->x2 = 0;
+ playerSprite->y2 = 0;
animCmdIndex = playerSprite->animCmdIndex;
if (playerSprite->anims[playerSprite->animNum][animCmdIndex].type == -1)
{
@@ -2039,16 +2039,16 @@ static void AlignFishingAnimationFrames(void)
animType = playerSprite->anims[playerSprite->animNum][animCmdIndex].type;
if (animType == 1 || animType == 2 || animType == 3)
{
- playerSprite->pos2.x = 8;
+ playerSprite->x2 = 8;
if (GetPlayerFacingDirection() == 3)
- playerSprite->pos2.x = -8;
+ playerSprite->x2 = -8;
}
if (animType == 5)
- playerSprite->pos2.y = -8;
+ playerSprite->y2 = -8;
if (animType == 10 || animType == 11)
- playerSprite->pos2.y = 8;
+ playerSprite->y2 = 8;
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
- SetSurfBobWhileFishingState(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 1, playerSprite->pos2.y);
+ SetSurfBlob_PlayerOffset(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, TRUE, playerSprite->y2);
}
void SetSpinStartFacingDir(u8 direction)
@@ -2090,8 +2090,8 @@ static void Task_DoPlayerSpinExit(u8 taskId)
SetSpinStartFacingDir(object->facingDirection);
tSpinDelayTimer = 0;
tSpeed = 1;
- tCurY = (u16)(sprite->pos1.y + sprite->pos2.y) << 4;
- sprite->pos2.y = 0;
+ tCurY = (u16)(sprite->y + sprite->y2) << 4;
+ sprite->y2 = 0;
CameraObjectReset2();
object->fixedPriority = TRUE;
sprite->oam.priority = 0;
@@ -2104,10 +2104,10 @@ static void Task_DoPlayerSpinExit(u8 taskId)
// Rise and accelerate
tCurY -= tSpeed;
tSpeed += 3;
- sprite->pos1.y = tCurY >> 4;
+ sprite->y = tCurY >> 4;
// Check if offscreen
- if (sprite->pos1.y + (s16)gTotalCameraPixelOffsetY < -32)
+ if (sprite->y + (s16)gTotalCameraPixelOffsetY < -32)
tState++;
break;
case 2:
@@ -2156,11 +2156,11 @@ static void Task_DoPlayerSpinEntrance(u8 taskId)
ObjectEventForceSetHeldMovement(object, GetFaceDirectionMovementAction(sSpinDirections[tStartDir]));
tSpinDelayTimer = 0;
tSpeed = 116;
- tDestY = sprite->pos1.y;
+ tDestY = sprite->y;
tPriority = sprite->oam.priority;
tSubpriority = sprite->subpriority;
- tCurY = -((u16)sprite->pos2.y + 32) * 16;
- sprite->pos2.y = 0;
+ tCurY = -((u16)sprite->y2 + 32) * 16;
+ sprite->y2 = 0;
CameraObjectReset2();
object->fixedPriority = TRUE;
sprite->oam.priority = 1;
@@ -2175,12 +2175,12 @@ static void Task_DoPlayerSpinEntrance(u8 taskId)
tSpeed -= 3;
if (tSpeed < 4)
tSpeed = 4;
- sprite->pos1.y = tCurY >> 4;
+ sprite->y = tCurY >> 4;
// Check if reached dest
- if (sprite->pos1.y >= tDestY)
+ if (sprite->y >= tDestY)
{
- sprite->pos1.y = tDestY;
+ sprite->y = tDestY;
tGroundTimer = 0;
tState++;
}
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
index db82d667c..fbe725c0b 100644
--- a/src/field_screen_effect.c
+++ b/src/field_screen_effect.c
@@ -1087,7 +1087,7 @@ static void LoadOrbEffectPalette(bool8 blueOrb)
}
}
-static bool8 sub_80B02C8(u16 shakeDir)
+static bool8 UpdateOrbEffectBlend(u16 shakeDir)
{
u8 lo = REG_BLDALPHA & 0xFF;
u8 hi = REG_BLDALPHA >> 8;
@@ -1095,21 +1095,17 @@ static bool8 sub_80B02C8(u16 shakeDir)
if (shakeDir != 0)
{
if (lo)
- {
lo--;
- }
}
else
{
- if (hi < 0x10)
- {
+ if (hi < 16)
hi++;
- }
}
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(lo, hi));
- if (lo == 0 && hi == 0x10)
+ if (lo == 0 && hi == 16)
return TRUE;
else
return FALSE;
@@ -1193,7 +1189,7 @@ static void Task_OrbEffect(u8 taskId)
{
tShakeDelay = 8;
tShakeDir ^= 1;
- if (sub_80B02C8(tShakeDir) == TRUE)
+ if (UpdateOrbEffectBlend(tShakeDir) == TRUE)
{
tState = 5;
sub_8199DF0(0, PIXEL_FILL(0), 0, 1);
diff --git a/src/field_special_scene.c b/src/field_special_scene.c
index 6b41c5423..3c7016bd1 100644
--- a/src/field_special_scene.c
+++ b/src/field_special_scene.c
@@ -72,12 +72,12 @@ void Task_Truck1(u8 taskId)
s16 cameraXpan = 0, cameraYpan = 0;
s16 box1, box2, box3;
- box1 = GetTruckBoxMovement(data[0] + 30) * 4; // top box.
- SetObjectEventSpritePosByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3);
- box2 = GetTruckBoxMovement(data[0]) * 2; // bottom left box.
- SetObjectEventSpritePosByLocalIdAndMap(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3);
- box3 = GetTruckBoxMovement(data[0]) * 4; // bottom right box.
- SetObjectEventSpritePosByLocalIdAndMap(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3);
+ box1 = GetTruckBoxMovement(data[0] + 30) * 4;
+ SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3);
+ box2 = GetTruckBoxMovement(data[0]) * 2;
+ SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3);
+ box3 = GetTruckBoxMovement(data[0]) * 4;
+ SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3);
if (++data[0] == SECONDS(500)) // this will never run
data[0] = 0; // reset the timer if it gets stuck.
@@ -116,11 +116,11 @@ void Task_Truck2(u8 taskId)
cameraYpan = GetTruckCameraBobbingY(data[2]);
SetCameraPanning(cameraXpan, cameraYpan);
box1 = GetTruckBoxMovement(data[2] + 30) * 4;
- SetObjectEventSpritePosByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3);
+ SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3);
box2 = GetTruckBoxMovement(data[2]) * 2;
- SetObjectEventSpritePosByLocalIdAndMap(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3);
+ SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3);
box3 = GetTruckBoxMovement(data[2]) * 4;
- SetObjectEventSpritePosByLocalIdAndMap(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3);
+ SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3);
}
}
@@ -147,9 +147,9 @@ static void Task_Truck3(u8 taskId)
cameraXpan = gTruckCamera_HorizontalTable[data[1]];
cameraYpan = 0;
SetCameraPanning(cameraXpan, 0);
- SetObjectEventSpritePosByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, cameraYpan + 3);
- SetObjectEventSpritePosByLocalIdAndMap(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, cameraYpan - 3);
- SetObjectEventSpritePosByLocalIdAndMap(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, cameraYpan);
+ SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, cameraYpan + 3);
+ SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, cameraYpan - 3);
+ SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, cameraYpan);
}
}
@@ -242,9 +242,9 @@ void EndTruckSequence(u8 taskId)
{
if (!FuncIsActiveTask(Task_HandleTruckSequence))
{
- SetObjectEventSpritePosByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3, 3);
- SetObjectEventSpritePosByLocalIdAndMap(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 0, -3);
- SetObjectEventSpritePosByLocalIdAndMap(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3, 0);
+ SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_TOP, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3, 3);
+ SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_L, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 0, -3);
+ SetObjectEventSpritePosByLocalIdAndMap(LOCALID_TRUCK_BOX_BOTTOM_R, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3, 0);
}
}
diff --git a/src/field_specials.c b/src/field_specials.c
index 86be21eda..46f8e7fe8 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -57,7 +57,6 @@
#include "constants/map_types.h"
#include "constants/maps.h"
#include "constants/mevent.h"
-#include "constants/tv.h"
#include "constants/script_menu.h"
#include "constants/slot_machine.h"
#include "constants/songs.h"
@@ -1301,12 +1300,12 @@ void SpawnCameraObject(void)
{
u8 obj = SpawnSpecialObjectEventParameterized(OBJ_EVENT_GFX_BOY_1, MOVEMENT_TYPE_FACE_DOWN, OBJ_EVENT_ID_CAMERA, gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7, 3);
gObjectEvents[obj].invisible = TRUE;
- CameraObjectSetFollowedObjectId(gObjectEvents[obj].spriteId);
+ CameraObjectSetFollowedSpriteId(gObjectEvents[obj].spriteId);
}
void RemoveCameraObject(void)
{
- CameraObjectSetFollowedObjectId(GetPlayerAvatarObjectId());
+ CameraObjectSetFollowedSpriteId(GetPlayerAvatarSpriteId());
RemoveObjectEventByLocalIdAndMap(OBJ_EVENT_ID_CAMERA, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
}
@@ -1336,7 +1335,7 @@ u16 GetSlotMachineId(void)
static const u8 sSlotMachineIds[] = {0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5};
static const u8 sSlotMachineServiceDayIds[] = {3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5};
- u32 rnd = gSaveBlock1Ptr->easyChatPairs[0].unk0_0 + gSaveBlock1Ptr->easyChatPairs[0].unk2 + sSlotMachineRandomSeeds[gSpecialVar_0x8004];
+ u32 rnd = gSaveBlock1Ptr->dewfordTrends[0].trendiness + gSaveBlock1Ptr->dewfordTrends[0].rand + sSlotMachineRandomSeeds[gSpecialVar_0x8004];
if (GetPriceReduction(POKENEWS_GAME_CORNER))
{
return sSlotMachineServiceDayIds[rnd % SLOT_MACHINE_COUNT];
@@ -1622,7 +1621,7 @@ void BufferLottoTicketNumber(void)
{
if (gSpecialVar_Result >= 10000)
{
- TV_PrintIntToStringVar(0, gSpecialVar_Result);
+ ConvertIntToDecimalString(0, gSpecialVar_Result);
}
else if (gSpecialVar_Result >= 1000)
{
@@ -3118,8 +3117,8 @@ static void ShowFrontierExchangeCornerItemIcon(u16 item)
if (sScrollableMultichoice_ItemSpriteId != MAX_SPRITES)
{
gSprites[sScrollableMultichoice_ItemSpriteId].oam.priority = 0;
- gSprites[sScrollableMultichoice_ItemSpriteId].pos1.x = 36;
- gSprites[sScrollableMultichoice_ItemSpriteId].pos1.y = 92;
+ gSprites[sScrollableMultichoice_ItemSpriteId].x = 36;
+ gSprites[sScrollableMultichoice_ItemSpriteId].y = 92;
}
}
@@ -3430,7 +3429,7 @@ static void ChangeDeoxysRockLevel(u8 rockLevel)
{
u8 objectEventId;
LoadPalette(&sDeoxysRockPalettes[rockLevel], 0x1A0, 8);
- TryGetObjectEventIdByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId);
+ TryGetObjectEventIdByLocalIdAndMap(LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId);
if (rockLevel == 0)
PlaySE(SE_M_CONFUSE_RAY);
@@ -3438,9 +3437,9 @@ static void ChangeDeoxysRockLevel(u8 rockLevel)
PlaySE(SE_RG_DEOXYS_MOVE);
CreateTask(WaitForDeoxysRockMovement, 8);
- gFieldEffectArguments[0] = 1;
- gFieldEffectArguments[1] = 58;
- gFieldEffectArguments[2] = 26;
+ gFieldEffectArguments[0] = LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK;
+ gFieldEffectArguments[1] = MAP_NUM(BIRTH_ISLAND_EXTERIOR);
+ gFieldEffectArguments[2] = MAP_GROUP(BIRTH_ISLAND_EXTERIOR);
gFieldEffectArguments[3] = sDeoxysRockCoords[rockLevel][0];
gFieldEffectArguments[4] = sDeoxysRockCoords[rockLevel][1];
@@ -3687,18 +3686,18 @@ u32 GetMartEmployeeObjectEventId(void)
{
static const u8 sPokeMarts[][3] =
{
- { MAP_GROUP(OLDALE_TOWN_MART), MAP_NUM(OLDALE_TOWN_MART), 1 },
- { MAP_GROUP(LAVARIDGE_TOWN_MART), MAP_NUM(LAVARIDGE_TOWN_MART), 1 },
- { MAP_GROUP(FALLARBOR_TOWN_MART), MAP_NUM(FALLARBOR_TOWN_MART), 1 },
- { MAP_GROUP(VERDANTURF_TOWN_MART), MAP_NUM(VERDANTURF_TOWN_MART), 1 },
- { MAP_GROUP(PETALBURG_CITY_MART), MAP_NUM(PETALBURG_CITY_MART), 1 },
- { MAP_GROUP(SLATEPORT_CITY_MART), MAP_NUM(SLATEPORT_CITY_MART), 1 },
- { MAP_GROUP(MAUVILLE_CITY_MART), MAP_NUM(MAUVILLE_CITY_MART), 1 },
- { MAP_GROUP(RUSTBORO_CITY_MART), MAP_NUM(RUSTBORO_CITY_MART), 1 },
- { MAP_GROUP(FORTREE_CITY_MART), MAP_NUM(FORTREE_CITY_MART), 1 },
- { MAP_GROUP(MOSSDEEP_CITY_MART), MAP_NUM(MOSSDEEP_CITY_MART), 1 },
- { MAP_GROUP(SOOTOPOLIS_CITY_MART), MAP_NUM(SOOTOPOLIS_CITY_MART), 1 },
- { MAP_GROUP(BATTLE_FRONTIER_MART), MAP_NUM(BATTLE_FRONTIER_MART), 1 }
+ { MAP_GROUP(OLDALE_TOWN_MART), MAP_NUM(OLDALE_TOWN_MART), LOCALID_OLDALE_MART_CLERK },
+ { MAP_GROUP(LAVARIDGE_TOWN_MART), MAP_NUM(LAVARIDGE_TOWN_MART), LOCALID_LAVARIDGE_MART_CLERK },
+ { MAP_GROUP(FALLARBOR_TOWN_MART), MAP_NUM(FALLARBOR_TOWN_MART), LOCALID_FALLARBOR_MART_CLERK },
+ { MAP_GROUP(VERDANTURF_TOWN_MART), MAP_NUM(VERDANTURF_TOWN_MART), LOCALID_VERDANTURF_MART_CLERK },
+ { MAP_GROUP(PETALBURG_CITY_MART), MAP_NUM(PETALBURG_CITY_MART), LOCALID_PETALBURG_MART_CLERK },
+ { MAP_GROUP(SLATEPORT_CITY_MART), MAP_NUM(SLATEPORT_CITY_MART), LOCALID_SLATEPORT_MART_CLERK },
+ { MAP_GROUP(MAUVILLE_CITY_MART), MAP_NUM(MAUVILLE_CITY_MART), LOCALID_MAUVILLE_MART_CLERK },
+ { MAP_GROUP(RUSTBORO_CITY_MART), MAP_NUM(RUSTBORO_CITY_MART), LOCALID_RUSTBORO_MART_CLERK },
+ { MAP_GROUP(FORTREE_CITY_MART), MAP_NUM(FORTREE_CITY_MART), LOCALID_FORTREE_MART_CLERK },
+ { MAP_GROUP(MOSSDEEP_CITY_MART), MAP_NUM(MOSSDEEP_CITY_MART), LOCALID_MOSSDEEP_MART_CLERK },
+ { MAP_GROUP(SOOTOPOLIS_CITY_MART), MAP_NUM(SOOTOPOLIS_CITY_MART), LOCALID_SOOTOPOLIS_MART_CLERK },
+ { MAP_GROUP(BATTLE_FRONTIER_MART), MAP_NUM(BATTLE_FRONTIER_MART), LOCALID_BATTLE_FRONTIER_MART_CLERK }
};
u8 i;
diff --git a/src/field_weather.c b/src/field_weather.c
index 655e24590..4b9c6a863 100644
--- a/src/field_weather.c
+++ b/src/field_weather.c
@@ -160,11 +160,11 @@ void StartWeather(void)
{
if (!FuncIsActiveTask(Task_WeatherMain))
{
- u8 index = AllocSpritePalette(0x1200);
+ u8 index = AllocSpritePalette(TAG_WEATHER_START);
CpuCopy32(gFogPalette, &gPlttBufferUnfaded[0x100 + index * 16], 32);
BuildGammaShiftTables();
gWeatherPtr->altGammaSpritePalIndex = index;
- gWeatherPtr->weatherPicSpritePalIndex = AllocSpritePalette(0x1201);
+ gWeatherPtr->weatherPicSpritePalIndex = AllocSpritePalette(PALTAG_WEATHER_2);
gWeatherPtr->rainSpriteCount = 0;
gWeatherPtr->curRainSpriteIndex = 0;
gWeatherPtr->cloudSpritesCreated = 0;
@@ -365,8 +365,8 @@ static void UpdateWeatherGammaShift(void)
static void FadeInScreenWithWeather(void)
{
- if (++gWeatherPtr->unknown_6CB > 1)
- gWeatherPtr->unknown_6CA = 0;
+ if (++gWeatherPtr->fadeInTimer > 1)
+ gWeatherPtr->fadeInFirstFrame = FALSE;
switch (gWeatherPtr->currWeather)
{
@@ -710,7 +710,7 @@ static bool8 LightenSpritePaletteInFog(u8 paletteIndex)
return FALSE;
}
-void sub_80ABC48(s8 gammaIndex)
+void ApplyWeatherGammaShiftIfIdle(s8 gammaIndex)
{
if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_IDLE)
{
@@ -728,7 +728,7 @@ void sub_80ABC7C(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay)
gWeatherPtr->gammaTargetIndex = gammaTargetIndex;
gWeatherPtr->gammaStepFrameCounter = 0;
gWeatherPtr->gammaStepDelay = gammaStepDelay;
- sub_80ABC48(gammaIndex);
+ ApplyWeatherGammaShiftIfIdle(gammaIndex);
}
}
@@ -793,8 +793,8 @@ void FadeScreen(u8 mode, s8 delay)
BeginNormalPaletteFade(PALETTES_ALL, delay, 16, 0, fadeColor);
gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_IN;
- gWeatherPtr->unknown_6CA = 1;
- gWeatherPtr->unknown_6CB = 0;
+ gWeatherPtr->fadeInFirstFrame = TRUE;
+ gWeatherPtr->fadeInTimer = 0;
Weather_SetBlendCoeffs(gWeatherPtr->currBlendEVA, gWeatherPtr->currBlendEVB);
gWeatherPtr->readyForInit = TRUE;
}
@@ -813,7 +813,7 @@ void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex)
switch (gWeatherPtr->palProcessingState)
{
case WEATHER_PAL_STATE_SCREEN_FADING_IN:
- if (gWeatherPtr->unknown_6CA != 0)
+ if (gWeatherPtr->fadeInFirstFrame)
{
if (gWeatherPtr->currWeather == WEATHER_FOG_HORIZONTAL)
MarkFogSpritePalToLighten(paletteIndex);
@@ -848,12 +848,13 @@ void ApplyWeatherGammaShiftToPal(u8 paletteIndex)
ApplyGammaShift(paletteIndex, 1, gWeatherPtr->gammaIndex);
}
-u8 sub_80ABF20(void)
+// Unused
+static bool8 IsFirstFrameOfWeatherFadeIn(void)
{
if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_SCREEN_FADING_IN)
- return gWeatherPtr->unknown_6CA;
+ return gWeatherPtr->fadeInFirstFrame;
else
- return 0;
+ return FALSE;
}
void LoadCustomWeatherSpritePalette(const u16 *palette)
@@ -885,50 +886,50 @@ bool8 LoadDroughtWeatherPalettes(void)
return FALSE;
}
-void sub_80ABFE0(s8 gammaIndex)
+static void SetDroughtGamma(s8 gammaIndex)
{
- sub_80ABC48(-gammaIndex - 1);
+ ApplyWeatherGammaShiftIfIdle(-gammaIndex - 1);
}
-void sub_80ABFF0(void)
+void DroughtStateInit(void)
{
- gWeatherPtr->unknown_73C = 0;
- gWeatherPtr->unknown_740 = 0;
- gWeatherPtr->unknown_742 = 0;
- gWeatherPtr->unknown_73E = 0;
+ gWeatherPtr->droughtBrightnessStage = 0;
+ gWeatherPtr->droughtTimer = 0;
+ gWeatherPtr->droughtState = 0;
+ gWeatherPtr->droughtLastBrightnessStage = 0;
}
-void sub_80AC01C(void)
+void DroughtStateRun(void)
{
- switch (gWeatherPtr->unknown_742)
+ switch (gWeatherPtr->droughtState)
{
case 0:
- if (++gWeatherPtr->unknown_740 > 5)
+ if (++gWeatherPtr->droughtTimer > 5)
{
- gWeatherPtr->unknown_740 = 0;
- sub_80ABFE0(gWeatherPtr->unknown_73C++);
- if (gWeatherPtr->unknown_73C > 5)
+ gWeatherPtr->droughtTimer = 0;
+ SetDroughtGamma(gWeatherPtr->droughtBrightnessStage++);
+ if (gWeatherPtr->droughtBrightnessStage > 5)
{
- gWeatherPtr->unknown_73E = gWeatherPtr->unknown_73C;
- gWeatherPtr->unknown_742 = 1;
- gWeatherPtr->unknown_740 = 0x3C;
+ gWeatherPtr->droughtLastBrightnessStage = gWeatherPtr->droughtBrightnessStage;
+ gWeatherPtr->droughtState = 1;
+ gWeatherPtr->droughtTimer = 60;
}
}
break;
case 1:
- gWeatherPtr->unknown_740 = (gWeatherPtr->unknown_740 + 3) & 0x7F;
- gWeatherPtr->unknown_73C = ((gSineTable[gWeatherPtr->unknown_740] - 1) >> 6) + 2;
- if (gWeatherPtr->unknown_73C != gWeatherPtr->unknown_73E)
- sub_80ABFE0(gWeatherPtr->unknown_73C);
- gWeatherPtr->unknown_73E = gWeatherPtr->unknown_73C;
+ gWeatherPtr->droughtTimer = (gWeatherPtr->droughtTimer + 3) & 0x7F;
+ gWeatherPtr->droughtBrightnessStage = ((gSineTable[gWeatherPtr->droughtTimer] - 1) >> 6) + 2;
+ if (gWeatherPtr->droughtBrightnessStage != gWeatherPtr->droughtLastBrightnessStage)
+ SetDroughtGamma(gWeatherPtr->droughtBrightnessStage);
+ gWeatherPtr->droughtLastBrightnessStage = gWeatherPtr->droughtBrightnessStage;
break;
case 2:
- if (++gWeatherPtr->unknown_740 > 5)
+ if (++gWeatherPtr->droughtTimer > 5)
{
- gWeatherPtr->unknown_740 = 0;
- sub_80ABFE0(--gWeatherPtr->unknown_73C);
- if (gWeatherPtr->unknown_73C == 3)
- gWeatherPtr->unknown_742 = 0;
+ gWeatherPtr->droughtTimer = 0;
+ SetDroughtGamma(--gWeatherPtr->droughtBrightnessStage);
+ if (gWeatherPtr->droughtBrightnessStage == 3)
+ gWeatherPtr->droughtState = 0;
}
break;
}
@@ -989,38 +990,39 @@ bool8 Weather_UpdateBlend(void)
return FALSE;
}
-void sub_80AC274(u8 a)
+// Unused. Uses the same numbering scheme as the coord events
+static void SetFieldWeather(u8 weather)
{
- switch (a)
+ switch (weather)
{
- case 1:
+ case COORD_EVENT_WEATHER_SUNNY_CLOUDS:
SetWeather(WEATHER_SUNNY_CLOUDS);
break;
- case 2:
+ case COORD_EVENT_WEATHER_SUNNY:
SetWeather(WEATHER_SUNNY);
break;
- case 3:
+ case COORD_EVENT_WEATHER_RAIN:
SetWeather(WEATHER_RAIN);
break;
- case 4:
+ case COORD_EVENT_WEATHER_SNOW:
SetWeather(WEATHER_SNOW);
break;
- case 5:
+ case COORD_EVENT_WEATHER_RAIN_THUNDERSTORM:
SetWeather(WEATHER_RAIN_THUNDERSTORM);
break;
- case 6:
+ case COORD_EVENT_WEATHER_FOG_HORIZONTAL:
SetWeather(WEATHER_FOG_HORIZONTAL);
break;
- case 7:
+ case COORD_EVENT_WEATHER_FOG_DIAGONAL:
SetWeather(WEATHER_FOG_DIAGONAL);
break;
- case 8:
+ case COORD_EVENT_WEATHER_VOLCANIC_ASH:
SetWeather(WEATHER_VOLCANIC_ASH);
break;
- case 9:
+ case COORD_EVENT_WEATHER_SANDSTORM:
SetWeather(WEATHER_SANDSTORM);
break;
- case 10:
+ case COORD_EVENT_WEATHER_SHADE:
SetWeather(WEATHER_SHADE);
break;
}
@@ -1084,7 +1086,7 @@ void SetWeatherScreenFadeOut(void)
gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_OUT;
}
-void sub_80AC3E4(void)
+void SetWeatherPalStateIdle(void)
{
gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE;
}
diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c
index 320a10670..0c3256ab7 100644
--- a/src/field_weather_effect.c
+++ b/src/field_weather_effect.c
@@ -51,7 +51,7 @@ static const struct SpriteSheet sCloudSpriteSheet =
{
.data = gWeatherCloudTiles,
.size = sizeof(gWeatherCloudTiles),
- .tag = 0x1200
+ .tag = GFXTAG_CLOUD
};
static const struct OamData sCloudSpriteOamData =
@@ -84,8 +84,8 @@ static const union AnimCmd *const sCloudSpriteAnimCmds[] =
static const struct SpriteTemplate sCloudSpriteTemplate =
{
- .tileTag = 0x1200,
- .paletteTag = 0x1201,
+ .tileTag = GFXTAG_CLOUD,
+ .paletteTag = PALTAG_WEATHER_2,
.oam = &sCloudSpriteOamData,
.anims = sCloudSpriteAnimCmds,
.images = NULL,
@@ -189,7 +189,7 @@ static void CreateCloudSprites(void)
{
gWeatherPtr->sprites.s1.cloudSprites[i] = &gSprites[spriteId];
sprite = gWeatherPtr->sprites.s1.cloudSprites[i];
- SetSpritePosToMapCoords(sCloudSpriteMapCoords[i].x + 7, sCloudSpriteMapCoords[i].y + 7, &sprite->pos1.x, &sprite->pos1.y);
+ SetSpritePosToMapCoords(sCloudSpriteMapCoords[i].x + 7, sCloudSpriteMapCoords[i].y + 7, &sprite->x, &sprite->y);
sprite->coordOffsetEnabled = TRUE;
}
else
@@ -214,7 +214,7 @@ static void DestroyCloudSprites(void)
DestroySprite(gWeatherPtr->sprites.s1.cloudSprites[i]);
}
- FreeSpriteTilesByTag(0x1200);
+ FreeSpriteTilesByTag(GFXTAG_CLOUD);
gWeatherPtr->cloudSpritesCreated = FALSE;
}
@@ -223,7 +223,7 @@ static void UpdateCloudSprite(struct Sprite *sprite)
// Move 1 pixel left every 2 frames.
sprite->data[0] = (sprite->data[0] + 1) & 1;
if (sprite->data[0])
- sprite->pos1.x--;
+ sprite->x--;
}
//------------------------------------------------------------------------------
@@ -264,19 +264,19 @@ void Drought_Main(void)
gWeatherPtr->initStep++;
break;
case 3:
- sub_80ABFF0();
+ DroughtStateInit();
gWeatherPtr->initStep++;
break;
case 4:
- sub_80AC01C();
- if (gWeatherPtr->unknown_73C == 6)
+ DroughtStateRun();
+ if (gWeatherPtr->droughtBrightnessStage == 6)
{
gWeatherPtr->weatherGfxLoaded = TRUE;
gWeatherPtr->initStep++;
}
break;
default:
- sub_80AC01C();
+ DroughtStateRun();
break;
}
}
@@ -288,7 +288,7 @@ bool8 Drought_Finish(void)
void StartDroughtWeatherBlend(void)
{
- CreateTask(UpdateDroughtBlend, 0x50);
+ CreateTask(UpdateDroughtBlend, 80);
}
#define tState data[0]
@@ -306,7 +306,7 @@ static void UpdateDroughtBlend(u8 taskId)
task->tBlendY = 0;
task->tBlendDelay = 0;
task->tWinRange = REG_WININ;
- SetGpuReg(REG_OFFSET_WININ, WIN_RANGE(63, 63));
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_ALL | WININ_WIN1_ALL);
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_EFFECT_LIGHTEN);
SetGpuReg(REG_OFFSET_BLDY, 0);
task->tState++;
@@ -437,8 +437,8 @@ static const union AnimCmd *const sRainSpriteAnimCmds[] =
static const struct SpriteTemplate sRainSpriteTemplate =
{
- .tileTag = 4614,
- .paletteTag = 0x1200,
+ .tileTag = GFXTAG_RAIN,
+ .paletteTag = PALTAG_WEATHER,
.oam = &sRainSpriteOamData,
.anims = sRainSpriteAnimCmds,
.images = NULL,
@@ -466,7 +466,7 @@ static const struct SpriteSheet sRainSpriteSheet =
{
.data = gWeatherRainTiles,
.size = sizeof(gWeatherRainTiles),
- .tag = 0x1206,
+ .tag = GFXTAG_RAIN,
};
void Rain_InitVars(void)
@@ -593,12 +593,12 @@ static void UpdateRainSprite(struct Sprite *sprite)
// Raindrop is in its "falling" motion.
sprite->tPosX += sRainSpriteMovement[gWeatherPtr->isDownpour][0];
sprite->tPosY += sRainSpriteMovement[gWeatherPtr->isDownpour][1];
- sprite->pos1.x = sprite->tPosX >> 4;
- sprite->pos1.y = sprite->tPosY >> 4;
+ sprite->x = sprite->tPosX >> 4;
+ sprite->y = sprite->tPosY >> 4;
if (sprite->tActive
- && (sprite->pos1.x >= -8 && sprite->pos1.x <= 248)
- && sprite->pos1.y >= -16 && sprite->pos1.y <= 176)
+ && (sprite->x >= -8 && sprite->x <= 248)
+ && sprite->y >= -16 && sprite->y <= 176)
sprite->invisible = FALSE;
else
sprite->invisible = TRUE;
@@ -608,8 +608,8 @@ static void UpdateRainSprite(struct Sprite *sprite)
// Make raindrop splash on the ground
StartSpriteAnim(sprite, gWeatherPtr->isDownpour + 1);
sprite->tState = 1;
- sprite->pos1.x -= gSpriteCoordOffsetX;
- sprite->pos1.y -= gSpriteCoordOffsetY;
+ sprite->x -= gSpriteCoordOffsetX;
+ sprite->y -= gSpriteCoordOffsetY;
sprite->coordOffsetEnabled = TRUE;
}
}
@@ -677,7 +677,7 @@ static bool8 CreateRainSprite(void)
if (spriteId != MAX_SPRITES)
{
- gSprites[spriteId].tActive = 0;
+ gSprites[spriteId].tActive = FALSE;
gSprites[spriteId].tRandom = spriteIndex * 145;
while (gSprites[spriteId].tRandom >= 600)
gSprites[spriteId].tRandom -= 600;
@@ -722,12 +722,12 @@ static bool8 UpdateVisibleRainSprites(void)
gWeatherPtr->rainSpriteVisibleCounter = 0;
if (gWeatherPtr->curRainSpriteIndex < gWeatherPtr->targetRainSpriteCount)
{
- gWeatherPtr->sprites.s1.rainSprites[gWeatherPtr->curRainSpriteIndex++]->tActive = 1;
+ gWeatherPtr->sprites.s1.rainSprites[gWeatherPtr->curRainSpriteIndex++]->tActive = TRUE;
}
else
{
gWeatherPtr->curRainSpriteIndex--;
- gWeatherPtr->sprites.s1.rainSprites[gWeatherPtr->curRainSpriteIndex]->tActive = 0;
+ gWeatherPtr->sprites.s1.rainSprites[gWeatherPtr->curRainSpriteIndex]->tActive = FALSE;
gWeatherPtr->sprites.s1.rainSprites[gWeatherPtr->curRainSpriteIndex]->invisible = TRUE;
}
}
@@ -744,7 +744,7 @@ static void DestroyRainSprites(void)
DestroySprite(gWeatherPtr->sprites.s1.rainSprites[i]);
}
gWeatherPtr->rainSpriteCount = 0;
- FreeSpriteTilesByTag(0x1206);
+ FreeSpriteTilesByTag(GFXTAG_RAIN);
}
#undef tCounter
@@ -879,7 +879,7 @@ static const union AnimCmd *const sSnowflakeAnimCmds[] =
static const struct SpriteTemplate sSnowflakeSpriteTemplate =
{
.tileTag = 0xFFFF,
- .paletteTag = 0x1200,
+ .paletteTag = PALTAG_WEATHER,
.oam = &sSnowflakeSpriteOamData,
.anims = sSnowflakeAnimCmds,
.images = sSnowflakeSpriteImages,
@@ -925,10 +925,10 @@ static void InitSnowflakeSpriteMovement(struct Sprite *sprite)
u16 rand;
u16 x = ((sprite->tSnowflakeId * 5) & 7) * 30 + (Random() % 30);
- sprite->pos1.y = -3 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
- sprite->pos1.x = x - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
- sprite->tPosY = sprite->pos1.y * 128;
- sprite->pos2.x = 0;
+ sprite->y = -3 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
+ sprite->x = x - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
+ sprite->tPosY = sprite->y * 128;
+ sprite->x2 = 0;
rand = Random();
sprite->tDeltaY = (rand & 3) * 5 + 64;
sprite->tDeltaY2 = sprite->tDeltaY;
@@ -941,13 +941,14 @@ static void InitSnowflakeSpriteMovement(struct Sprite *sprite)
static void WaitSnowflakeSprite(struct Sprite *sprite)
{
- if (gWeatherPtr->unknown_6E2 > 18)
+ // Timer is never incremented
+ if (gWeatherPtr->snowflakeTimer > 18)
{
sprite->invisible = FALSE;
sprite->callback = UpdateSnowflakeSprite;
- sprite->pos1.y = 250 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
- sprite->tPosY = sprite->pos1.y * 128;
- gWeatherPtr->unknown_6E2 = 0;
+ sprite->y = 250 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
+ sprite->tPosY = sprite->y * 128;
+ gWeatherPtr->snowflakeTimer = 0;
}
}
@@ -957,32 +958,32 @@ static void UpdateSnowflakeSprite(struct Sprite *sprite)
s16 y;
sprite->tPosY += sprite->tDeltaY;
- sprite->pos1.y = sprite->tPosY >> 7;
+ sprite->y = sprite->tPosY >> 7;
sprite->tWaveIndex += sprite->tWaveDelta;
sprite->tWaveIndex &= 0xFF;
- sprite->pos2.x = gSineTable[sprite->tWaveIndex] / 64;
+ sprite->x2 = gSineTable[sprite->tWaveIndex] / 64;
- x = (sprite->pos1.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX) & 0x1FF;
+ x = (sprite->x + sprite->centerToCornerVecX + gSpriteCoordOffsetX) & 0x1FF;
if (x & 0x100)
x |= -0x100;
if (x < -3)
- sprite->pos1.x = 242 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
+ sprite->x = 242 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
else if (x > 242)
- sprite->pos1.x = -3 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
+ sprite->x = -3 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
- y = (sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY) & 0xFF;
+ y = (sprite->y + sprite->centerToCornerVecY + gSpriteCoordOffsetY) & 0xFF;
if (y > 163 && y < 171)
{
- sprite->pos1.y = 250 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
- sprite->tPosY = sprite->pos1.y * 128;
+ sprite->y = 250 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
+ sprite->tPosY = sprite->y * 128;
sprite->tFallCounter = 0;
sprite->tFallDuration = 220;
}
else if (y > 242 && y < 250)
{
- sprite->pos1.y = 163;
- sprite->tPosY = sprite->pos1.y * 128;
+ sprite->y = 163;
+ sprite->tPosY = sprite->y * 128;
sprite->tFallCounter = 0;
sprite->tFallDuration = 220;
sprite->invisible = TRUE;
@@ -992,7 +993,7 @@ static void UpdateSnowflakeSprite(struct Sprite *sprite)
if (++sprite->tFallCounter == sprite->tFallDuration)
{
InitSnowflakeSpriteMovement(sprite);
- sprite->pos1.y = 250;
+ sprite->y = 250;
sprite->invisible = TRUE;
sprite->callback = WaitSnowflakeSprite;
}
@@ -1011,9 +1012,32 @@ static void UpdateSnowflakeSprite(struct Sprite *sprite)
// WEATHER_RAIN_THUNDERSTORM
//------------------------------------------------------------------------------
+enum {
+ // This block of states is run only once
+ // when first setting up the thunderstorm
+ TSTORM_STATE_LOAD_RAIN,
+ TSTORM_STATE_CREATE_RAIN,
+ TSTORM_STATE_INIT_RAIN,
+ TSTORM_STATE_WAIT_CHANGE,
+
+ // The thunderstorm loops through these states,
+ // not necessarily in order.
+ TSTORM_STATE_LOOP_START,
+ TSTORM_STATE_LOOP_WAIT,
+ TSTORM_STATE_INIT_THUNDER_SHORT_1,
+ TSTORM_STATE_INIT_THUNDER_SHORT_2,
+ TSTORM_STATE_TRY_THUNDER_SHORT,
+ TSTORM_STATE_TRY_NEW_THUNDER,
+ TSTORM_STATE_WAIT_THUNDER_SHORT,
+ TSTORM_STATE_INIT_THUNDER_LONG,
+ TSTORM_STATE_WAIT_THUNDER_LONG,
+ TSTORM_STATE_FADE_THUNDER_LONG,
+ TSTORM_STATE_END_THUNDER_LONG,
+};
+
void Thunderstorm_InitVars(void)
{
- gWeatherPtr->initStep = 0;
+ gWeatherPtr->initStep = TSTORM_STATE_LOAD_RAIN;
gWeatherPtr->weatherGfxLoaded = FALSE;
gWeatherPtr->rainSpriteVisibleCounter = 0;
gWeatherPtr->rainSpriteVisibleDelay = 4;
@@ -1022,7 +1046,7 @@ void Thunderstorm_InitVars(void)
gWeatherPtr->gammaTargetIndex = 3;
gWeatherPtr->gammaStepDelay = 20;
gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment
- gWeatherPtr->thunderTriggered = 0;
+ gWeatherPtr->thunderTriggered = FALSE;
SetRainStrengthFromSoundEffect(SE_THUNDERSTORM);
}
@@ -1042,7 +1066,7 @@ static void SetThunderCounter(u16);
void Downpour_InitVars(void)
{
- gWeatherPtr->initStep = 0;
+ gWeatherPtr->initStep = TSTORM_STATE_LOAD_RAIN;
gWeatherPtr->weatherGfxLoaded = FALSE;
gWeatherPtr->rainSpriteVisibleCounter = 0;
gWeatherPtr->rainSpriteVisibleDelay = 4;
@@ -1066,100 +1090,105 @@ void Thunderstorm_Main(void)
UpdateThunderSound();
switch (gWeatherPtr->initStep)
{
- case 0:
+ case TSTORM_STATE_LOAD_RAIN:
LoadRainSpriteSheet();
gWeatherPtr->initStep++;
break;
- case 1:
+ case TSTORM_STATE_CREATE_RAIN:
if (!CreateRainSprite())
gWeatherPtr->initStep++;
break;
- case 2:
+ case TSTORM_STATE_INIT_RAIN:
if (!UpdateVisibleRainSprites())
{
gWeatherPtr->weatherGfxLoaded = TRUE;
gWeatherPtr->initStep++;
}
break;
- case 3:
+ case TSTORM_STATE_WAIT_CHANGE:
if (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_CHANGING_WEATHER)
- gWeatherPtr->initStep = 6;
+ gWeatherPtr->initStep = TSTORM_STATE_INIT_THUNDER_SHORT_1;
break;
- case 4:
- gWeatherPtr->unknown_6EA = 1;
- gWeatherPtr->unknown_6E6 = (Random() % 360) + 360;
+ case TSTORM_STATE_LOOP_START:
+ gWeatherPtr->thunderAllowEnd = TRUE;
+ gWeatherPtr->thunderDelay = (Random() % 360) + 360;
gWeatherPtr->initStep++;
// fall through
- case 5:
- if (--gWeatherPtr->unknown_6E6 == 0)
+ case TSTORM_STATE_LOOP_WAIT:
+ // Wait between 360-720 frames before trying thunder again
+ if (--gWeatherPtr->thunderDelay == 0)
gWeatherPtr->initStep++;
break;
- case 6:
- gWeatherPtr->unknown_6EA = 1;
- gWeatherPtr->unknown_6EB = Random() % 2;
+ case TSTORM_STATE_INIT_THUNDER_SHORT_1:
+ gWeatherPtr->thunderAllowEnd = TRUE;
+ gWeatherPtr->thunderSkipShort = Random() % 2;
gWeatherPtr->initStep++;
break;
- case 7:
- gWeatherPtr->unknown_6EC = (Random() & 1) + 1;
+ case TSTORM_STATE_INIT_THUNDER_SHORT_2:
+ gWeatherPtr->thunderShortRetries = (Random() & 1) + 1;
gWeatherPtr->initStep++;
// fall through
- case 8:
- sub_80ABC48(19);
- if (gWeatherPtr->unknown_6EB == 0 && gWeatherPtr->unknown_6EC == 1)
- SetThunderCounter(20);
+ case TSTORM_STATE_TRY_THUNDER_SHORT:
+ ApplyWeatherGammaShiftIfIdle(19);
+ if (!gWeatherPtr->thunderSkipShort && gWeatherPtr->thunderShortRetries == 1)
+ SetThunderCounter(20); // Do short thunder
- gWeatherPtr->unknown_6E6 = (Random() % 3) + 6;
+ gWeatherPtr->thunderDelay = (Random() % 3) + 6;
gWeatherPtr->initStep++;
break;
- case 9:
- if (--gWeatherPtr->unknown_6E6 == 0)
+ case TSTORM_STATE_TRY_NEW_THUNDER:
+ if (--gWeatherPtr->thunderDelay == 0)
{
- sub_80ABC48(3);
- gWeatherPtr->unknown_6EA = 1;
- if (--gWeatherPtr->unknown_6EC != 0)
+ ApplyWeatherGammaShiftIfIdle(3);
+ gWeatherPtr->thunderAllowEnd = TRUE;
+ if (--gWeatherPtr->thunderShortRetries != 0)
{
- gWeatherPtr->unknown_6E6 = (Random() % 16) + 60;
- gWeatherPtr->initStep = 10;
+ // Try a short thunder again
+ gWeatherPtr->thunderDelay = (Random() % 16) + 60;
+ gWeatherPtr->initStep = TSTORM_STATE_WAIT_THUNDER_SHORT;
}
- else if (gWeatherPtr->unknown_6EB == 0)
+ else if (!gWeatherPtr->thunderSkipShort)
{
- gWeatherPtr->initStep = 4;
+ // No more thunder, restart loop
+ gWeatherPtr->initStep = TSTORM_STATE_LOOP_START;
}
else
{
- gWeatherPtr->initStep = 11;
+ // Set up long thunder
+ gWeatherPtr->initStep = TSTORM_STATE_INIT_THUNDER_LONG;
}
}
break;
- case 10:
- if (--gWeatherPtr->unknown_6E6 == 0)
- gWeatherPtr->initStep = 8;
+ case TSTORM_STATE_WAIT_THUNDER_SHORT:
+ if (--gWeatherPtr->thunderDelay == 0)
+ gWeatherPtr->initStep = TSTORM_STATE_TRY_THUNDER_SHORT;
break;
- case 11:
- gWeatherPtr->unknown_6E6 = (Random() % 16) + 60;
+ case TSTORM_STATE_INIT_THUNDER_LONG:
+ gWeatherPtr->thunderDelay = (Random() % 16) + 60;
gWeatherPtr->initStep++;
break;
- case 12:
- if (--gWeatherPtr->unknown_6E6 == 0)
+ case TSTORM_STATE_WAIT_THUNDER_LONG:
+ if (--gWeatherPtr->thunderDelay == 0)
{
+ // Do long thunder
SetThunderCounter(100);
- sub_80ABC48(19);
- gWeatherPtr->unknown_6E6 = (Random() & 0xF) + 30;
+ ApplyWeatherGammaShiftIfIdle(19);
+ gWeatherPtr->thunderDelay = (Random() & 0xF) + 30;
gWeatherPtr->initStep++;
}
break;
- case 13:
- if (--gWeatherPtr->unknown_6E6 == 0)
+ case TSTORM_STATE_FADE_THUNDER_LONG:
+ if (--gWeatherPtr->thunderDelay == 0)
{
sub_80ABC7C(19, 3, 5);
gWeatherPtr->initStep++;
}
break;
- case 14:
+ case TSTORM_STATE_END_THUNDER_LONG:
if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_IDLE)
{
- gWeatherPtr->unknown_6EA = 1;
- gWeatherPtr->initStep = 4;
+ gWeatherPtr->thunderAllowEnd = TRUE;
+ gWeatherPtr->initStep = TSTORM_STATE_LOOP_START;
}
break;
}
@@ -1170,12 +1199,12 @@ bool8 Thunderstorm_Finish(void)
switch (gWeatherPtr->finishStep)
{
case 0:
- gWeatherPtr->unknown_6EA = 0;
+ gWeatherPtr->thunderAllowEnd = FALSE;
gWeatherPtr->finishStep++;
// fall through
case 1:
Thunderstorm_Main();
- if (gWeatherPtr->unknown_6EA)
+ if (gWeatherPtr->thunderAllowEnd)
{
if (gWeatherPtr->nextWeather == WEATHER_RAIN
|| gWeatherPtr->nextWeather == WEATHER_RAIN_THUNDERSTORM
@@ -1203,16 +1232,16 @@ bool8 Thunderstorm_Finish(void)
static void SetThunderCounter(u16 max)
{
- if (gWeatherPtr->thunderTriggered == 0)
+ if (!gWeatherPtr->thunderTriggered)
{
gWeatherPtr->thunderCounter = Random() % max;
- gWeatherPtr->thunderTriggered = 1;
+ gWeatherPtr->thunderTriggered = TRUE;
}
}
static void UpdateThunderSound(void)
{
- if (gWeatherPtr->thunderTriggered == 1)
+ if (gWeatherPtr->thunderTriggered == TRUE)
{
if (gWeatherPtr->thunderCounter == 0)
{
@@ -1224,7 +1253,7 @@ static void UpdateThunderSound(void)
else
PlaySE(SE_THUNDER2);
- gWeatherPtr->thunderTriggered = 0;
+ gWeatherPtr->thunderTriggered = FALSE;
}
else
{
@@ -1237,10 +1266,9 @@ static void UpdateThunderSound(void)
// WEATHER_FOG_HORIZONTAL and WEATHER_UNDERWATER
//------------------------------------------------------------------------------
-// unused data
-static const u16 unusedData_839AB1C[] = {0, 6, 6, 12, 18, 42, 300, 300};
+static const u16 sUnusedData[] = {0, 6, 6, 12, 18, 42, 300, 300};
-static const struct OamData gOamData_839AB2C =
+static const struct OamData sOamData_FogH =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -1257,72 +1285,72 @@ static const struct OamData gOamData_839AB2C =
.affineParam = 0,
};
-static const union AnimCmd gSpriteAnim_839AB34[] =
+static const union AnimCmd sAnim_FogH_0[] =
{
ANIMCMD_FRAME(0, 16),
ANIMCMD_END,
};
-static const union AnimCmd gSpriteAnim_839AB3C[] =
+static const union AnimCmd sAnim_FogH_1[] =
{
ANIMCMD_FRAME(32, 16),
ANIMCMD_END,
};
-static const union AnimCmd gSpriteAnim_839AB44[] =
+static const union AnimCmd sAnim_FogH_2[] =
{
ANIMCMD_FRAME(64, 16),
ANIMCMD_END,
};
-static const union AnimCmd gSpriteAnim_839AB4C[] =
+static const union AnimCmd sAnim_FogH_3[] =
{
ANIMCMD_FRAME(96, 16),
ANIMCMD_END,
};
-static const union AnimCmd gSpriteAnim_839AB54[] =
+static const union AnimCmd sAnim_FogH_4[] =
{
ANIMCMD_FRAME(128, 16),
ANIMCMD_END,
};
-static const union AnimCmd gSpriteAnim_839AB5C[] =
+static const union AnimCmd sAnim_FogH_5[] =
{
ANIMCMD_FRAME(160, 16),
ANIMCMD_END,
};
-static const union AnimCmd *const gSpriteAnimTable_839AB64[] =
+static const union AnimCmd *const sAnims_FogH[] =
{
- gSpriteAnim_839AB34,
- gSpriteAnim_839AB3C,
- gSpriteAnim_839AB44,
- gSpriteAnim_839AB4C,
- gSpriteAnim_839AB54,
- gSpriteAnim_839AB5C,
+ sAnim_FogH_0,
+ sAnim_FogH_1,
+ sAnim_FogH_2,
+ sAnim_FogH_3,
+ sAnim_FogH_4,
+ sAnim_FogH_5,
};
-static const union AffineAnimCmd gSpriteAffineAnim_839AB7C[] =
+static const union AffineAnimCmd sAffineAnim_FogH[] =
{
AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd *const gSpriteAffineAnimTable_839AB8C[] =
+static const union AffineAnimCmd *const sAffineAnims_FogH[] =
{
- gSpriteAffineAnim_839AB7C,
+ sAffineAnim_FogH,
};
static void FogHorizontalSpriteCallback(struct Sprite *);
static const struct SpriteTemplate sFogHorizontalSpriteTemplate =
{
- .tileTag = 0x1201,
- .paletteTag = 0x1200,
- .oam = &gOamData_839AB2C,
- .anims = gSpriteAnimTable_839AB64,
+ .tileTag = GFXTAG_FOG_H,
+ .paletteTag = PALTAG_WEATHER,
+ .oam = &sOamData_FogH,
+ .anims = sAnims_FogH,
.images = NULL,
- .affineAnims = gSpriteAffineAnimTable_839AB8C,
+ .affineAnims = sAffineAnims_FogH,
.callback = FogHorizontalSpriteCallback,
};
@@ -1413,12 +1441,12 @@ bool8 FogHorizontal_Finish(void)
static void FogHorizontalSpriteCallback(struct Sprite *sprite)
{
- sprite->pos2.y = (u8)gSpriteCoordOffsetY;
- sprite->pos1.x = gWeatherPtr->fogHScrollPosX + 32 + sprite->tSpriteColumn * 64;
- if (sprite->pos1.x > 271)
+ sprite->y2 = (u8)gSpriteCoordOffsetY;
+ sprite->x = gWeatherPtr->fogHScrollPosX + 32 + sprite->tSpriteColumn * 64;
+ if (sprite->x > 271)
{
- sprite->pos1.x = 480 + gWeatherPtr->fogHScrollPosX - (4 - sprite->tSpriteColumn) * 64;
- sprite->pos1.x &= 0x1FF;
+ sprite->x = 480 + gWeatherPtr->fogHScrollPosX - (4 - sprite->tSpriteColumn) * 64;
+ sprite->x &= 0x1FF;
}
}
@@ -1433,7 +1461,7 @@ static void CreateFogHorizontalSprites(void)
struct SpriteSheet fogHorizontalSpriteSheet = {
.data = gWeatherFogHorizontalTiles,
.size = sizeof(gWeatherFogHorizontalTiles),
- .tag = 0x1201,
+ .tag = GFXTAG_FOG_H,
};
LoadSpriteSheet(&fogHorizontalSpriteSheet);
for (i = 0; i < NUM_FOG_HORIZONTAL_SPRITES; i++)
@@ -1443,8 +1471,8 @@ static void CreateFogHorizontalSprites(void)
{
sprite = &gSprites[spriteId];
sprite->tSpriteColumn = i % 5;
- sprite->pos1.x = (i % 5) * 64 + 32;
- sprite->pos1.y = (i / 5) * 64 + 32;
+ sprite->x = (i % 5) * 64 + 32;
+ sprite->y = (i / 5) * 64 + 32;
gWeatherPtr->sprites.s2.fogHSprites[i] = sprite;
}
else
@@ -1469,7 +1497,7 @@ static void DestroyFogHorizontalSprites(void)
DestroySprite(gWeatherPtr->sprites.s2.fogHSprites[i]);
}
- FreeSpriteTilesByTag(0x1201);
+ FreeSpriteTilesByTag(GFXTAG_FOG_H);
gWeatherPtr->fogHSpritesCreated = 0;
}
}
@@ -1491,7 +1519,7 @@ void Ash_InitVars(void)
gWeatherPtr->weatherGfxLoaded = FALSE;
gWeatherPtr->gammaTargetIndex = 0;
gWeatherPtr->gammaStepDelay = 20;
- gWeatherPtr->unknown_6FE = 20;
+ gWeatherPtr->ashUnused = 20; // Never read
if (!gWeatherPtr->ashSpritesCreated)
{
Weather_SetBlendCoeffs(0, 16);
@@ -1509,8 +1537,8 @@ void Ash_InitAll(void)
void Ash_Main(void)
{
gWeatherPtr->ashBaseSpritesX = gSpriteCoordOffsetX & 0x1FF;
- while (gWeatherPtr->ashBaseSpritesX >= 240)
- gWeatherPtr->ashBaseSpritesX -= 240;
+ while (gWeatherPtr->ashBaseSpritesX >= DISPLAY_WIDTH)
+ gWeatherPtr->ashBaseSpritesX -= DISPLAY_WIDTH;
switch (gWeatherPtr->initStep)
{
@@ -1567,7 +1595,7 @@ static const struct SpriteSheet sAshSpriteSheet =
{
.data = gWeatherAshTiles,
.size = sizeof(gWeatherAshTiles),
- .tag = 0x1202,
+ .tag = GFXTAG_ASH,
};
static void LoadAshSpriteSheet(void)
@@ -1603,8 +1631,8 @@ static const union AnimCmd *const sAshSpriteAnimCmds[] =
static const struct SpriteTemplate sAshSpriteTemplate =
{
- .tileTag = 4610,
- .paletteTag = 0x1200,
+ .tileTag = GFXTAG_ASH,
+ .paletteTag = PALTAG_WEATHER,
.oam = &sAshSpriteOamData,
.anims = sAshSpriteAnimCmds,
.images = NULL,
@@ -1659,7 +1687,7 @@ static void DestroyAshSprites(void)
DestroySprite(gWeatherPtr->sprites.s2.ashSprites[i]);
}
- FreeSpriteTilesByTag(0x1202);
+ FreeSpriteTilesByTag(GFXTAG_ASH);
gWeatherPtr->ashSpritesCreated = FALSE;
}
}
@@ -1672,12 +1700,12 @@ static void UpdateAshSprite(struct Sprite *sprite)
sprite->tOffsetY++;
}
- sprite->pos1.y = gSpriteCoordOffsetY + sprite->tOffsetY;
- sprite->pos1.x = gWeatherPtr->ashBaseSpritesX + 32 + sprite->tSpriteColumn * 64;
- if (sprite->pos1.x > 271)
+ sprite->y = gSpriteCoordOffsetY + sprite->tOffsetY;
+ sprite->x = gWeatherPtr->ashBaseSpritesX + 32 + sprite->tSpriteColumn * 64;
+ if (sprite->x > 271)
{
- sprite->pos1.x = gWeatherPtr->ashBaseSpritesX + 480 - (4 - sprite->tSpriteColumn) * 64;
- sprite->pos1.x &= 0x1FF;
+ sprite->x = gWeatherPtr->ashBaseSpritesX + 480 - (4 - sprite->tSpriteColumn) * 64;
+ sprite->x &= 0x1FF;
}
}
@@ -1790,7 +1818,7 @@ static const struct SpriteSheet gFogDiagonalSpriteSheet =
{
.data = gWeatherFogDiagonalTiles,
.size = sizeof(gWeatherFogDiagonalTiles),
- .tag = 0x1203,
+ .tag = GFXTAG_FOG_D,
};
static const struct OamData sFogDiagonalSpriteOamData =
@@ -1820,8 +1848,8 @@ static const union AnimCmd *const sFogDiagonalSpriteAnimCmds[] =
static const struct SpriteTemplate sFogDiagonalSpriteTemplate =
{
- .tileTag = 0x1203,
- .paletteTag = 0x1200,
+ .tileTag = GFXTAG_FOG_D,
+ .paletteTag = PALTAG_WEATHER,
.oam = &sFogDiagonalSpriteOamData,
.anims = sFogDiagonalSpriteAnimCmds,
.images = NULL,
@@ -1875,19 +1903,19 @@ static void DestroyFogDiagonalSprites(void)
DestroySprite(gWeatherPtr->sprites.s2.fogDSprites[i]);
}
- FreeSpriteTilesByTag(0x1203);
+ FreeSpriteTilesByTag(GFXTAG_FOG_D);
gWeatherPtr->fogDSpritesCreated = FALSE;
}
}
static void UpdateFogDiagonalSprite(struct Sprite *sprite)
{
- sprite->pos2.y = gWeatherPtr->fogDPosY;
- sprite->pos1.x = gWeatherPtr->fogDBaseSpritesX + 32 + sprite->tSpriteColumn * 64;
- if (sprite->pos1.x > 271)
+ sprite->y2 = gWeatherPtr->fogDPosY;
+ sprite->x = gWeatherPtr->fogDBaseSpritesX + 32 + sprite->tSpriteColumn * 64;
+ if (sprite->x > 271)
{
- sprite->pos1.x = gWeatherPtr->fogDBaseSpritesX + 480 - (4 - sprite->tSpriteColumn) * 64;
- sprite->pos1.x &= 0x1FF;
+ sprite->x = gWeatherPtr->fogDBaseSpritesX + 480 - (4 - sprite->tSpriteColumn) * 64;
+ sprite->x &= 0x1FF;
}
}
@@ -2018,7 +2046,7 @@ static void DestroySandstormSprites(void)
}
gWeatherPtr->sandstormSpritesCreated = FALSE;
- FreeSpriteTilesByTag(0x1204);
+ FreeSpriteTilesByTag(GFXTAG_SANDSTORM);
}
if (gWeatherPtr->sandstormSwirlSpritesCreated)
@@ -2067,8 +2095,8 @@ static const union AnimCmd *const sSandstormSpriteAnimCmds[] =
static const struct SpriteTemplate sSandstormSpriteTemplate =
{
- .tileTag = 0x1204,
- .paletteTag = 0x1201,
+ .tileTag = GFXTAG_SANDSTORM,
+ .paletteTag = PALTAG_WEATHER_2,
.oam = &sSandstormSpriteOamData,
.anims = sSandstormSpriteAnimCmds,
.images = NULL,
@@ -2080,7 +2108,7 @@ static const struct SpriteSheet sSandstormSpriteSheet =
{
.data = gWeatherSandstormTiles,
.size = sizeof(gWeatherSandstormTiles),
- .tag = 0x1204,
+ .tag = GFXTAG_SANDSTORM,
};
// Regular sandstorm sprites
@@ -2158,12 +2186,12 @@ static void CreateSwirlSandstormSprites(void)
static void UpdateSandstormSprite(struct Sprite *sprite)
{
- sprite->pos2.y = gWeatherPtr->sandstormPosY;
- sprite->pos1.x = gWeatherPtr->sandstormBaseSpritesX + 32 + sprite->tSpriteColumn * 64;
- if (sprite->pos1.x > 271)
+ sprite->y2 = gWeatherPtr->sandstormPosY;
+ sprite->x = gWeatherPtr->sandstormBaseSpritesX + 32 + sprite->tSpriteColumn * 64;
+ if (sprite->x > 271)
{
- sprite->pos1.x = gWeatherPtr->sandstormBaseSpritesX + 480 - (4 - sprite->tSpriteColumn) * 64;
- sprite->pos1.x &= 0x1FF;
+ sprite->x = gWeatherPtr->sandstormBaseSpritesX + 480 - (4 - sprite->tSpriteColumn) * 64;
+ sprite->x &= 0x1FF;
}
}
@@ -2177,16 +2205,16 @@ static void UpdateSandstormSwirlSprite(struct Sprite *sprite)
{
u32 x, y;
- if (--sprite->pos1.y < -48)
+ if (--sprite->y < -48)
{
- sprite->pos1.y = 208;
+ sprite->y = 208;
sprite->tRadius = 4;
}
x = sprite->tRadius * gSineTable[sprite->tWaveIndex];
y = sprite->tRadius * gSineTable[sprite->tWaveIndex + 0x40];
- sprite->pos2.x = x >> 8;
- sprite->pos2.y = y >> 8;
+ sprite->x2 = x >> 8;
+ sprite->y2 = y >> 8;
sprite->tWaveIndex = (sprite->tWaveIndex + 10) & 0xFF;
if (++sprite->tRadiusCounter > 8)
{
@@ -2242,7 +2270,7 @@ static const struct SpriteSheet sWeatherBubbleSpriteSheet =
{
.data = gWeatherBubbleTiles,
.size = sizeof(gWeatherBubbleTiles),
- .tag = 0x1205,
+ .tag = GFXTAG_BUBBLE,
};
static const s16 sBubbleStartCoords[][2] =
@@ -2322,8 +2350,8 @@ static const union AnimCmd *const sBubbleSpriteAnimCmds[] =
static const struct SpriteTemplate sBubbleSpriteTemplate =
{
- .tileTag = 0x1205,
- .paletteTag = 0x1200,
+ .tileTag = GFXTAG_BUBBLE,
+ .paletteTag = PALTAG_WEATHER,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
.anims = sBubbleSpriteAnimCmds,
.images = NULL,
@@ -2363,7 +2391,7 @@ static void DestroyBubbleSprites(void)
DestroySprite(&gSprites[i]);
}
- FreeSpriteTilesByTag(0x1205);
+ FreeSpriteTilesByTag(GFXTAG_BUBBLE);
gWeatherPtr->bubblesSpriteCount = 0;
}
}
@@ -2376,17 +2404,17 @@ static void UpdateBubbleSprite(struct Sprite *sprite)
sprite->tScrollXCounter = 0;
if (sprite->tScrollXDir == 0)
{
- if (++sprite->pos2.x > 4)
+ if (++sprite->x2 > 4)
sprite->tScrollXDir = 1;
}
else
{
- if (--sprite->pos2.x <= 0)
+ if (--sprite->x2 <= 0)
sprite->tScrollXDir = 0;
}
}
- sprite->pos1.y -= 3;
+ sprite->y -= 3;
if (++sprite->tCounter >= 120)
DestroySprite(sprite);
}
diff --git a/src/fieldmap.c b/src/fieldmap.c
index 2961d2f49..e437ea7fc 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -15,6 +15,7 @@
#include "trainer_hill.h"
#include "tv.h"
#include "constants/rgb.h"
+#include "constants/metatile_behaviors.h"
struct ConnectionFlags
{
@@ -43,6 +44,24 @@ static void FillEastConnection(struct MapHeader const *mapHeader, struct MapHead
static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader);
static void LoadSavedMapView(void);
static bool8 SkipCopyingMetatileFromSavedMap(u16* mapMetatilePtr, u16 mapWidth, u8 yMode);
+static struct MapConnection *GetIncomingConnection(u8 direction, int x, int y);
+static bool8 IsPosInIncomingConnectingMap(u8 direction, int x, int y, struct MapConnection *connection);
+static bool8 IsCoordInIncomingConnectingMap(int coord, int srcMax, int destMax, int offset);
+
+#define MapGridGetBorderTileAt(x, y) ({ \
+ u16 block; \
+ int i; \
+ u16 *border = gMapHeader.mapLayout->border; \
+ \
+ i = (x + 1) & 1; \
+ i += ((y + 1) & 1) * 2; \
+ \
+ block = gMapHeader.mapLayout->border[i] | METATILE_COLLISION_MASK; \
+})
+
+#define AreCoordsWithinMapGridBounds(x, y) (x >= 0 && x < gBackupMapLayout.width && y >= 0 && y < gBackupMapLayout.height)
+
+#define MapGridGetTileAt(x, y) (AreCoordsWithinMapGridBounds(x, y) ? gBackupMapLayout.map[x + gBackupMapLayout.width * y] : MapGridGetBorderTileAt(x, y))
struct MapHeader const *const GetMapHeaderFromConnection(struct MapConnection *connection)
{
@@ -68,13 +87,13 @@ void InitMapFromSavedGame(void)
void InitBattlePyramidMap(bool8 setPlayerPosition)
{
- CpuFastFill(0x03ff03ff, gBackupMapData, sizeof(gBackupMapData));
+ CpuFastFill(METATILE_ID_UNDEFINED << 16 | METATILE_ID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData));
GenerateBattlePyramidFloorLayout(gBackupMapData, setPlayerPosition);
}
void InitTrainerHillMap(void)
{
- CpuFastFill(0x03ff03ff, gBackupMapData, sizeof(gBackupMapData));
+ CpuFastFill(METATILE_ID_UNDEFINED << 16 | METATILE_ID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData));
GenerateTrainerHillFloorLayout(gBackupMapData);
}
@@ -84,7 +103,7 @@ static void InitMapLayoutData(struct MapHeader *mapHeader)
int width;
int height;
mapLayout = mapHeader->mapLayout;
- CpuFastFill16(0x03ff, gBackupMapData, sizeof(gBackupMapData));
+ CpuFastFill16(METATILE_ID_UNDEFINED, gBackupMapData, sizeof(gBackupMapData));
gBackupMapLayout.map = gBackupMapData;
width = mapLayout->width + 15;
gBackupMapLayout.width = width;
@@ -130,26 +149,26 @@ static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader)
{
case CONNECTION_SOUTH:
FillSouthConnection(mapHeader, cMap, offset);
- gMapConnectionFlags.south = 1;
+ gMapConnectionFlags.south = TRUE;
break;
case CONNECTION_NORTH:
FillNorthConnection(mapHeader, cMap, offset);
- gMapConnectionFlags.north = 1;
+ gMapConnectionFlags.north = TRUE;
break;
case CONNECTION_WEST:
FillWestConnection(mapHeader, cMap, offset);
- gMapConnectionFlags.west = 1;
+ gMapConnectionFlags.west = TRUE;
break;
case CONNECTION_EAST:
FillEastConnection(mapHeader, cMap, offset);
- gMapConnectionFlags.east = 1;
+ gMapConnectionFlags.east = TRUE;
break;
}
}
}
}
-static void sub_8087F54(int x, int y, struct MapHeader const *connectedMapHeader, int x2, int y2, int width, int height)
+static void FillConnection(int x, int y, struct MapHeader const *connectedMapHeader, int x2, int y2, int width, int height)
{
int i;
u16 *src;
@@ -185,29 +204,21 @@ static void FillSouthConnection(struct MapHeader const *mapHeader, struct MapHea
x2 = -x;
x += cWidth;
if (x < gBackupMapLayout.width)
- {
width = x;
- }
else
- {
width = gBackupMapLayout.width;
- }
x = 0;
}
else
{
x2 = 0;
if (x + cWidth < gBackupMapLayout.width)
- {
width = cWidth;
- }
else
- {
width = gBackupMapLayout.width - x;
- }
}
- sub_8087F54(
+ FillConnection(
x, y,
connectedMapHeader,
x2, /*y2*/ 0,
@@ -233,29 +244,21 @@ static void FillNorthConnection(struct MapHeader const *mapHeader, struct MapHea
x2 = -x;
x += cWidth;
if (x < gBackupMapLayout.width)
- {
width = x;
- }
else
- {
width = gBackupMapLayout.width;
- }
x = 0;
}
else
{
x2 = 0;
if (x + cWidth < gBackupMapLayout.width)
- {
width = cWidth;
- }
else
- {
width = gBackupMapLayout.width - x;
- }
}
- sub_8087F54(
+ FillConnection(
x, /*y*/ 0,
connectedMapHeader,
x2, y2,
@@ -280,29 +283,21 @@ static void FillWestConnection(struct MapHeader const *mapHeader, struct MapHead
{
y2 = -y;
if (y + cHeight < gBackupMapLayout.height)
- {
height = y + cHeight;
- }
else
- {
height = gBackupMapLayout.height;
- }
y = 0;
}
else
{
y2 = 0;
if (y + cHeight < gBackupMapLayout.height)
- {
height = cHeight;
- }
else
- {
height = gBackupMapLayout.height - y;
- }
}
- sub_8087F54(
+ FillConnection(
/*x*/ 0, y,
connectedMapHeader,
x2, y2,
@@ -325,29 +320,21 @@ static void FillEastConnection(struct MapHeader const *mapHeader, struct MapHead
{
y2 = -y;
if (y + cHeight < gBackupMapLayout.height)
- {
height = y + cHeight;
- }
else
- {
height = gBackupMapLayout.height;
- }
y = 0;
}
else
{
y2 = 0;
if (y + cHeight < gBackupMapLayout.height)
- {
height = cHeight;
- }
else
- {
height = gBackupMapLayout.height - y;
- }
}
- sub_8087F54(
+ FillConnection(
x, y,
connectedMapHeader,
/*x2*/ 0, y2,
@@ -355,124 +342,52 @@ static void FillEastConnection(struct MapHeader const *mapHeader, struct MapHead
}
}
-union Block
-{
- struct
- {
- u16 block:10;
- u16 collision:2;
- u16 elevation:4;
- } block;
- u16 value;
-};
-
u8 MapGridGetZCoordAt(int x, int y)
{
- u16 block;
- int i;
- u16 *border;
-
- if (x >= 0 && x < gBackupMapLayout.width
- && y >= 0 && y < gBackupMapLayout.height)
- {
- block = gBackupMapLayout.map[x + gBackupMapLayout.width * y];
- }
- else
- {
- border = gMapHeader.mapLayout->border;
- i = (x + 1) & 1;
- i += ((y + 1) & 1) * 2;
- block = gMapHeader.mapLayout->border[i];
- block |= METATILE_COLLISION_MASK;
- }
+ u16 block = MapGridGetTileAt(x, y);
if (block == METATILE_ID_UNDEFINED)
- {
return 0;
- }
return block >> METATILE_ELEVATION_SHIFT;
}
-u8 MapGridIsImpassableAt(int x, int y)
+bool8 MapGridIsImpassableAt(int x, int y)
{
- u16 block;
- int i;
- u16 *border;
+ u16 block = MapGridGetTileAt(x, y);
- if (x >= 0 && x < gBackupMapLayout.width
- && y >= 0 && y < gBackupMapLayout.height)
- {
- block = gBackupMapLayout.map[x + gBackupMapLayout.width * y];
- }
- else
- {
- border = gMapHeader.mapLayout->border;
- i = (x + 1) & 1;
- i += ((y + 1) & 1) * 2;
- block = gMapHeader.mapLayout->border[i];
- block |= METATILE_COLLISION_MASK;
- }
if (block == METATILE_ID_UNDEFINED)
- {
- return 1;
- }
+ return TRUE;
+
return (block & METATILE_COLLISION_MASK) >> METATILE_COLLISION_SHIFT;
}
u32 MapGridGetMetatileIdAt(int x, int y)
{
- u16 block;
- int i;
- int j;
- struct MapLayout const *mapLayout;
- u16 *border;
- u16 block2;
+ u16 block = MapGridGetTileAt(x, y);
- if (x >= 0 && x < gBackupMapLayout.width
- && y >= 0 && y < gBackupMapLayout.height)
- {
- block = gBackupMapLayout.map[x + gBackupMapLayout.width * y];
- }
- else
- {
- mapLayout = gMapHeader.mapLayout;
- i = (x + 1) & 1;
- i += ((y + 1) & 1) * 2;
- block = mapLayout->border[i] | METATILE_COLLISION_MASK;
- }
if (block == METATILE_ID_UNDEFINED)
- {
- border = gMapHeader.mapLayout->border;
- j = (x + 1) & 1;
- j += ((y + 1) & 1) * 2;
- block2 = gMapHeader.mapLayout->border[j];
- // This OR is completely pointless.
- block2 |= METATILE_COLLISION_MASK;
- return block2 & METATILE_ID_MASK;
- }
+ return MapGridGetBorderTileAt(x, y) & METATILE_ID_MASK;
+
return block & METATILE_ID_MASK;
}
u32 MapGridGetMetatileBehaviorAt(int x, int y)
{
- u16 metatile;
- metatile = MapGridGetMetatileIdAt(x, y);
- return GetBehaviorByMetatileId(metatile) & 0xff;
+ u16 metatile = MapGridGetMetatileIdAt(x, y);
+ return GetBehaviorByMetatileId(metatile) & METATILE_BEHAVIOR_MASK;
}
u8 MapGridGetMetatileLayerTypeAt(int x, int y)
{
- u16 metatile;
- metatile = MapGridGetMetatileIdAt(x, y);
+ u16 metatile = MapGridGetMetatileIdAt(x, y);
return (GetBehaviorByMetatileId(metatile) & METATILE_ELEVATION_MASK) >> METATILE_ELEVATION_SHIFT;
}
void MapGridSetMetatileIdAt(int x, int y, u16 metatile)
{
int i;
- if (x >= 0 && x < gBackupMapLayout.width
- && y >= 0 && y < gBackupMapLayout.height)
+ if (AreCoordsWithinMapGridBounds(x, y))
{
i = x + y * gBackupMapLayout.width;
gBackupMapLayout.map[i] = (gBackupMapLayout.map[i] & METATILE_ELEVATION_MASK) | (metatile & ~METATILE_ELEVATION_MASK);
@@ -482,8 +397,7 @@ void MapGridSetMetatileIdAt(int x, int y, u16 metatile)
void MapGridSetMetatileEntryAt(int x, int y, u16 metatile)
{
int i;
- if (x >= 0 && x < gBackupMapLayout.width
- && y >= 0 && y < gBackupMapLayout.height)
+ if (AreCoordsWithinMapGridBounds(x, y))
{
i = x + gBackupMapLayout.width * y;
gBackupMapLayout.map[i] = metatile;
@@ -505,11 +419,11 @@ u16 GetBehaviorByMetatileId(u16 metatile)
}
else
{
- return 0xFF;
+ return MB_INVALID;
}
}
-void save_serialize_map(void)
+void SaveMapView(void)
{
int i, j;
int x, y;
@@ -522,9 +436,7 @@ void save_serialize_map(void)
for (i = y; i < y + 14; i++)
{
for (j = x; j < x + 15; j++)
- {
*mapView++ = gBackupMapData[width * i + j];
- }
}
}
@@ -595,7 +507,7 @@ static void LoadSavedMapView(void)
}
}
-void sub_80885C4(u8 a1)
+static void MoveMapViewToBackup(u8 direction)
{
int width;
u16 *mapView;
@@ -614,7 +526,7 @@ void sub_80885C4(u8 a1)
y0 = gSaveBlock1Ptr->pos.y;
x2 = 15;
y2 = 14;
- switch (a1)
+ switch (direction)
{
case CONNECTION_NORTH:
y0 += 1;
@@ -653,71 +565,40 @@ void sub_80885C4(u8 a1)
int GetMapBorderIdAt(int x, int y)
{
- struct MapLayout const *mapLayout;
- u16 block, block2;
- int i, j;
- if (x >= 0 && x < gBackupMapLayout.width
- && y >= 0 && y < gBackupMapLayout.height)
- {
- i = gBackupMapLayout.width;
- i *= y;
- block = gBackupMapLayout.map[x + i];
- if (block == METATILE_ID_UNDEFINED)
- {
- goto fail;
- }
- }
- else
- {
- mapLayout = gMapHeader.mapLayout;
- j = (x + 1) & 1;
- j += ((y + 1) & 1) * 2;
- block2 = METATILE_COLLISION_MASK | mapLayout->border[j];
- if (block2 == METATILE_ID_UNDEFINED)
- {
- goto fail;
- }
- }
- goto success;
-fail:
- return -1;
-success:
+ if (MapGridGetTileAt(x, y) == METATILE_ID_UNDEFINED)
+ return CONNECTION_INVALID;
if (x >= (gBackupMapLayout.width - 8))
{
if (!gMapConnectionFlags.east)
- {
- return -1;
- }
+ return CONNECTION_INVALID;
+
return CONNECTION_EAST;
}
else if (x < 7)
{
if (!gMapConnectionFlags.west)
- {
- return -1;
- }
+ return CONNECTION_INVALID;
+
return CONNECTION_WEST;
}
else if (y >= (gBackupMapLayout.height - 7))
{
if (!gMapConnectionFlags.south)
- {
- return -1;
- }
+ return CONNECTION_INVALID;
+
return CONNECTION_SOUTH;
}
else if (y < 7)
{
if (!gMapConnectionFlags.north)
- {
- return -1;
- }
+ return CONNECTION_INVALID;
+
return CONNECTION_NORTH;
}
else
{
- return 0;
+ return CONNECTION_NONE;
}
}
@@ -726,19 +607,19 @@ int GetPostCameraMoveMapBorderId(int x, int y)
return GetMapBorderIdAt(gSaveBlock1Ptr->pos.x + 7 + x, gSaveBlock1Ptr->pos.y + 7 + y);
}
-int CanCameraMoveInDirection(int direction)
+bool32 CanCameraMoveInDirection(int direction)
{
int x, y;
x = gSaveBlock1Ptr->pos.x + 7 + gDirectionToVectors[direction].x;
y = gSaveBlock1Ptr->pos.y + 7 + gDirectionToVectors[direction].y;
- if (GetMapBorderIdAt(x, y) == -1)
- {
- return 0;
- }
- return 1;
+
+ if (GetMapBorderIdAt(x, y) == CONNECTION_INVALID)
+ return FALSE;
+
+ return TRUE;
}
-void sub_80887F8(struct MapConnection *connection, int direction, int x, int y)
+static void SetPositionFromConnection(struct MapConnection *connection, int direction, int x, int y)
{
struct MapHeader const *mapHeader;
mapHeader = GetMapHeaderFromConnection(connection);
@@ -765,69 +646,57 @@ void sub_80887F8(struct MapConnection *connection, int direction, int x, int y)
bool8 CameraMove(int x, int y)
{
- unsigned int direction;
+ int direction;
struct MapConnection *connection;
int old_x, old_y;
gCamera.active = FALSE;
direction = GetPostCameraMoveMapBorderId(x, y);
- if (direction + 1 <= 1)
+ if (direction == CONNECTION_NONE || direction == CONNECTION_INVALID)
{
gSaveBlock1Ptr->pos.x += x;
gSaveBlock1Ptr->pos.y += y;
}
else
{
- save_serialize_map();
+ SaveMapView();
ClearMirageTowerPulseBlendEffect();
old_x = gSaveBlock1Ptr->pos.x;
old_y = gSaveBlock1Ptr->pos.y;
- connection = sub_8088950(direction, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y);
- sub_80887F8(connection, direction, x, y);
+ connection = GetIncomingConnection(direction, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y);
+ SetPositionFromConnection(connection, direction, x, y);
LoadMapFromCameraTransition(connection->mapGroup, connection->mapNum);
gCamera.active = TRUE;
gCamera.x = old_x - gSaveBlock1Ptr->pos.x;
gCamera.y = old_y - gSaveBlock1Ptr->pos.y;
gSaveBlock1Ptr->pos.x += x;
gSaveBlock1Ptr->pos.y += y;
- sub_80885C4(direction);
+ MoveMapViewToBackup(direction);
}
return gCamera.active;
}
-struct MapConnection *sub_8088950(u8 direction, int x, int y)
+static struct MapConnection *GetIncomingConnection(u8 direction, int x, int y)
{
int count;
int i;
struct MapConnection *connection;
const struct MapConnections *connections = gMapHeader.connections;
- // UB: Multiple possible null dereferences
-#ifdef UBFIX
- if (connections != NULL)
- {
- count = connections->count;
- connection = connections->connections;
- if (connection != NULL)
- {
- for (i = 0; i < count; i++, connection++)
- {
- if (connection->direction == direction && sub_80889A8(direction, x, y, connection) == TRUE)
- return connection;
- }
- }
- }
-#else
+
+#ifdef UBFIX // UB: Multiple possible null dereferences
+ if (connections == NULL || connections->connections == NULL)
+ return NULL;
+#endif
count = connections->count;
connection = connections->connections;
for (i = 0; i < count; i++, connection++)
{
- if (connection->direction == direction && sub_80889A8(direction, x, y, connection) == TRUE)
+ if (connection->direction == direction && IsPosInIncomingConnectingMap(direction, x, y, connection) == TRUE)
return connection;
}
-#endif
return NULL;
}
-bool8 sub_80889A8(u8 direction, int x, int y, struct MapConnection *connection)
+static bool8 IsPosInIncomingConnectingMap(u8 direction, int x, int y, struct MapConnection *connection)
{
struct MapHeader const *mapHeader;
mapHeader = GetMapHeaderFromConnection(connection);
@@ -835,15 +704,15 @@ bool8 sub_80889A8(u8 direction, int x, int y, struct MapConnection *connection)
{
case CONNECTION_SOUTH:
case CONNECTION_NORTH:
- return sub_8088A0C(x, gMapHeader.mapLayout->width, mapHeader->mapLayout->width, connection->offset);
+ return IsCoordInIncomingConnectingMap(x, gMapHeader.mapLayout->width, mapHeader->mapLayout->width, connection->offset);
case CONNECTION_WEST:
case CONNECTION_EAST:
- return sub_8088A0C(y, gMapHeader.mapLayout->height, mapHeader->mapLayout->height, connection->offset);
+ return IsCoordInIncomingConnectingMap(y, gMapHeader.mapLayout->height, mapHeader->mapLayout->height, connection->offset);
}
return FALSE;
}
-bool8 sub_8088A0C(int x, int src_width, int dest_width, int offset)
+static bool8 IsCoordInIncomingConnectingMap(int coord, int srcMax, int destMax, int offset)
{
int offset2;
offset2 = offset;
@@ -851,24 +720,24 @@ bool8 sub_8088A0C(int x, int src_width, int dest_width, int offset)
if (offset2 < 0)
offset2 = 0;
- if (dest_width + offset < src_width)
- src_width = dest_width + offset;
+ if (destMax + offset < srcMax)
+ srcMax = destMax + offset;
- if (offset2 <= x && x <= src_width)
+ if (offset2 <= coord && coord <= srcMax)
return TRUE;
return FALSE;
}
-int sub_8088A38(int x, int width)
+static int IsCoordInConnectingMap(int coord, int max)
{
- if (x >= 0 && x < width)
+ if (coord >= 0 && coord < max)
return TRUE;
return FALSE;
}
-int sub_8088A4C(struct MapConnection *connection, int x, int y)
+static int IsPosInConnectingMap(struct MapConnection *connection, int x, int y)
{
struct MapHeader const *mapHeader;
mapHeader = GetMapHeaderFromConnection(connection);
@@ -876,10 +745,10 @@ int sub_8088A4C(struct MapConnection *connection, int x, int y)
{
case CONNECTION_SOUTH:
case CONNECTION_NORTH:
- return sub_8088A38(x - connection->offset, mapHeader->mapLayout->width);
+ return IsCoordInConnectingMap(x - connection->offset, mapHeader->mapLayout->width);
case CONNECTION_WEST:
case CONNECTION_EAST:
- return sub_8088A38(y - connection->offset, mapHeader->mapLayout->height);
+ return IsCoordInConnectingMap(y - connection->offset, mapHeader->mapLayout->height);
}
return FALSE;
}
@@ -909,7 +778,7 @@ struct MapConnection *GetConnectionAtCoords(s16 x, s16 y)
{
continue;
}
- if (sub_8088A4C(connection, x - 7, y - 7) == TRUE)
+ if (IsPosInConnectingMap(connection, x - 7, y - 7) == TRUE)
{
return connection;
}
@@ -945,7 +814,7 @@ void GetCameraCoords(u16 *x, u16 *y)
void MapGridSetMetatileImpassabilityAt(int x, int y, bool32 impassable)
{
- if (x >= 0 && x < gBackupMapLayout.width && y >= 0 && y < gBackupMapLayout.height)
+ if (AreCoordsWithinMapGridBounds(x, y))
{
if (impassable)
gBackupMapLayout.map[x + gBackupMapLayout.width * y] |= METATILE_COLLISION_MASK;
@@ -991,12 +860,12 @@ static void CopyTilesetToVramUsingHeap(struct Tileset const *tileset, u16 numTil
}
}
-void nullsub_3(u16 a0, u16 a1)
+static void FieldmapPaletteDummy(u16 offset, u16 size)
{
}
-void nullsub_90(void)
+static void FieldmapUnkDummy(void)
{
}
@@ -1011,17 +880,17 @@ void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size)
{
LoadPalette(&black, destOffset, 2);
LoadPalette(((u16*)tileset->palettes) + 1, destOffset + 1, size - 2);
- nullsub_3(destOffset + 1, (size - 2) >> 1);
+ FieldmapPaletteDummy(destOffset + 1, (size - 2) >> 1);
}
else if (tileset->isSecondary == TRUE)
{
LoadPalette(((u16*)tileset->palettes) + (NUM_PALS_IN_PRIMARY * 16), destOffset, size);
- nullsub_3(destOffset, size >> 1);
+ FieldmapPaletteDummy(destOffset, size >> 1);
}
else
{
LoadCompressedPalette((u32*)tileset->palettes, destOffset, size);
- nullsub_3(destOffset, size >> 1);
+ FieldmapPaletteDummy(destOffset, size >> 1);
}
}
}
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
index 446633a53..164f9507b 100644
--- a/src/fldeff_cut.c
+++ b/src/fldeff_cut.c
@@ -326,7 +326,7 @@ bool8 FldEff_CutGrass(void)
y = yAdd + gPlayerFacingPosition.y;
SetCutGrassMetatile(x, y);
- sub_808E75C(x, y);
+ AllowObjectAtPosTriggerGroundEffects(x, y);
}
}
@@ -555,8 +555,8 @@ static void CutGrassSpriteCallback1(struct Sprite *sprite)
static void CutGrassSpriteCallback2(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[2], sprite->data[0]);
- sprite->pos2.y = Cos(sprite->data[2], sprite->data[0]);
+ sprite->x2 = Sin(sprite->data[2], sprite->data[0]);
+ sprite->y2 = Cos(sprite->data[2], sprite->data[0]);
sprite->data[2] = (sprite->data[2] + 8) & 0xFF;
sprite->data[0] += 1 + (sprite->data[3] >> 2); // right shift by 2 is dividing by 4
diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c
index b320f3eb0..9a76ed744 100644
--- a/src/fldeff_misc.c
+++ b/src/fldeff_misc.c
@@ -22,7 +22,6 @@
#include "constants/metatile_behaviors.h"
#include "constants/metatile_labels.h"
#include "constants/songs.h"
-#include "constants/tv.h"
EWRAM_DATA struct MapPosition gPlayerFacingPosition = {0};
@@ -1298,10 +1297,10 @@ u8 CreateRecordMixingLights(void)
else
{
struct Sprite *sprite = &gSprites[spriteId];
- sub_8092FF0(16, 13, &sprite->pos1.x, &sprite->pos1.y);
+ GetMapCoordsFromSpritePos(16, 13, &sprite->x, &sprite->y);
sprite->coordOffsetEnabled = TRUE;
- sprite->pos1.x += 16;
- sprite->pos1.y += 2;
+ sprite->x += 16;
+ sprite->y += 2;
}
return spriteId;
}
diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c
index a9d81501f..e34d19504 100644
--- a/src/fldeff_sweetscent.c
+++ b/src/fldeff_sweetscent.c
@@ -54,7 +54,7 @@ static void StartSweetScentFieldEffect(void)
PlaySE(SE_M_SWEET_SCENT);
CpuFastSet(gPlttBufferUnfaded, gPaletteDecompressionBuffer, 0x100);
CpuFastSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x100);
- BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, RGB_RED);
+ BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarSpriteId()].oam.paletteNum + 16)), 4, 0, 8, RGB_RED);
taskId = CreateTask(TrySweetScentEncounter, 0);
gTasks[taskId].data[0] = 0;
FieldEffectActiveListRemove(FLDEFF_SWEET_SCENT);
@@ -76,7 +76,7 @@ static void TrySweetScentEncounter(u8 taskId)
else
{
gTasks[taskId].func = FailSweetScentEncounter;
- BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 8, 0, RGB_RED);
+ BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarSpriteId()].oam.paletteNum + 16)), 4, 8, 0, RGB_RED);
TryStartMirageTowerPulseBlendEffect();
}
}
@@ -92,7 +92,7 @@ static void FailSweetScentEncounter(u8 taskId)
if (!gPaletteFade.active)
{
CpuFastSet(gPaletteDecompressionBuffer, gPlttBufferUnfaded, 0x100);
- sub_80AC3E4();
+ SetWeatherPalStateIdle();
ScriptContext1_SetupScript(EventScript_FailSweetScent);
DestroyTask(taskId);
}
diff --git a/src/frontier_pass.c b/src/frontier_pass.c
index 3be374fbd..e3e5ee1f2 100644
--- a/src/frontier_pass.c
+++ b/src/frontier_pass.c
@@ -321,7 +321,7 @@ static const struct WindowTemplate sMapWindowTemplates[] =
static const u8 sTextColors[][3] =
{
- {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY},
+ {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY},
{TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_BLUE},
{TEXT_COLOR_TRANSPARENT, TEXT_COLOR_RED, TEXT_COLOR_LIGHT_RED},
};
@@ -967,8 +967,8 @@ static bool32 TryCallPassAreaFunction(u8 taskId, u8 cursorArea)
return FALSE;
}
- sPassData->cursorX = sPassGfx->cursorSprite->pos1.x;
- sPassData->cursorY = sPassGfx->cursorSprite->pos1.y;
+ sPassData->cursorX = sPassGfx->cursorSprite->x;
+ sPassData->cursorY = sPassGfx->cursorSprite->y;
return TRUE;
}
@@ -976,33 +976,33 @@ static void Task_HandleFrontierPassInput(u8 taskId)
{
u8 var = FALSE; // Reused, first informs whether the cursor moves, then used as the new cursor area.
- if (JOY_HELD(DPAD_UP) && sPassGfx->cursorSprite->pos1.y >= 9)
+ if (JOY_HELD(DPAD_UP) && sPassGfx->cursorSprite->y >= 9)
{
- sPassGfx->cursorSprite->pos1.y -= 2;
- if (sPassGfx->cursorSprite->pos1.y <= 7)
- sPassGfx->cursorSprite->pos1.y = 2;
+ sPassGfx->cursorSprite->y -= 2;
+ if (sPassGfx->cursorSprite->y <= 7)
+ sPassGfx->cursorSprite->y = 2;
var = TRUE;
}
- if (JOY_HELD(DPAD_DOWN) && sPassGfx->cursorSprite->pos1.y <= 135)
+ if (JOY_HELD(DPAD_DOWN) && sPassGfx->cursorSprite->y <= 135)
{
- sPassGfx->cursorSprite->pos1.y += 2;
- if (sPassGfx->cursorSprite->pos1.y >= 137)
- sPassGfx->cursorSprite->pos1.y = 136;
+ sPassGfx->cursorSprite->y += 2;
+ if (sPassGfx->cursorSprite->y >= 137)
+ sPassGfx->cursorSprite->y = 136;
var = TRUE;
}
- if (JOY_HELD(DPAD_LEFT) && sPassGfx->cursorSprite->pos1.x >= 6)
+ if (JOY_HELD(DPAD_LEFT) && sPassGfx->cursorSprite->x >= 6)
{
- sPassGfx->cursorSprite->pos1.x -= 2;
- if (sPassGfx->cursorSprite->pos1.x <= 4)
- sPassGfx->cursorSprite->pos1.x = 5;
+ sPassGfx->cursorSprite->x -= 2;
+ if (sPassGfx->cursorSprite->x <= 4)
+ sPassGfx->cursorSprite->x = 5;
var = TRUE;
}
- if (JOY_HELD(DPAD_RIGHT) && sPassGfx->cursorSprite->pos1.x <= 231)
+ if (JOY_HELD(DPAD_RIGHT) && sPassGfx->cursorSprite->x <= 231)
{
- sPassGfx->cursorSprite->pos1.x += 2;
- if (sPassGfx->cursorSprite->pos1.x >= 233)
- sPassGfx->cursorSprite->pos1.x = 232;
+ sPassGfx->cursorSprite->x += 2;
+ if (sPassGfx->cursorSprite->x >= 233)
+ sPassGfx->cursorSprite->x = 232;
var = TRUE;
}
@@ -1037,7 +1037,7 @@ static void Task_HandleFrontierPassInput(u8 taskId)
}
else
{
- var = GetCursorAreaFromCoords(sPassGfx->cursorSprite->pos1.x - 5, sPassGfx->cursorSprite->pos1.y + 5);
+ var = GetCursorAreaFromCoords(sPassGfx->cursorSprite->x - 5, sPassGfx->cursorSprite->y + 5);
if (sPassData->cursorArea != var)
{
PrintAreaDescription(var);
@@ -1537,7 +1537,7 @@ static void Task_HandleFrontierMap(u8 taskId)
}
else
{
- sMapData->cursorSprite->pos1.y += 4;
+ sMapData->cursorSprite->y += 4;
tMoveSteps++;
}
return;
@@ -1550,7 +1550,7 @@ static void Task_HandleFrontierMap(u8 taskId)
}
else
{
- sMapData->cursorSprite->pos1.y -= 4;
+ sMapData->cursorSprite->y -= 4;
tMoveSteps++;
}
return;
@@ -1746,11 +1746,11 @@ static void HandleFrontierMapCursorMove(u8 direction)
AddTextPrinterParameterized3(MAP_WINDOW_NAME, 7, 4, (oldCursorPos * 16) + 1, sTextColors[1], 0, sMapLandmarks[oldCursorPos].name);
AddTextPrinterParameterized3(MAP_WINDOW_NAME, 7, 4, (sMapData->cursorPos * 16) + 1, sTextColors[2], 0, sMapLandmarks[sMapData->cursorPos].name);
- sMapData->cursorSprite->pos1.y = (sMapData->cursorPos * 16) + 8;
+ sMapData->cursorSprite->y = (sMapData->cursorPos * 16) + 8;
StartSpriteAnim(sMapData->mapIndicatorSprite, sMapLandmarks[sMapData->cursorPos].animNum);
- sMapData->mapIndicatorSprite->pos1.x = sMapLandmarks[sMapData->cursorPos].x;
- sMapData->mapIndicatorSprite->pos1.y = sMapLandmarks[sMapData->cursorPos].y;
+ sMapData->mapIndicatorSprite->x = sMapLandmarks[sMapData->cursorPos].x;
+ sMapData->mapIndicatorSprite->y = sMapLandmarks[sMapData->cursorPos].y;
FillWindowPixelBuffer(MAP_WINDOW_DESCRIPTION, PIXEL_FILL(0));
AddTextPrinterParameterized3(MAP_WINDOW_DESCRIPTION, 1, 4, 0, sTextColors[0], 0, sMapLandmarks[sMapData->cursorPos].description);
diff --git a/src/frontier_util.c b/src/frontier_util.c
index 491aef936..4aec27944 100644
--- a/src/frontier_util.c
+++ b/src/frontier_util.c
@@ -1552,16 +1552,16 @@ static void CheckPutFrontierTVShowOnAir(void)
switch (battleMode)
{
case FRONTIER_MODE_SINGLES:
- TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], 1);
+ TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_TOWER_SINGLES);
break;
case FRONTIER_MODE_DOUBLES:
- TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], 2);
+ TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_TOWER_DOUBLES);
break;
case FRONTIER_MODE_MULTIS:
- TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], 3);
+ TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_TOWER_MULTIS);
break;
case FRONTIER_MODE_LINK_MULTIS:
- TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], 4);
+ TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_TOWER_LINK_MULTIS);
break;
}
}
@@ -1575,9 +1575,9 @@ static void CheckPutFrontierTVShowOnAir(void)
&& ShouldAirFrontierTVShow())
{
if (battleMode == FRONTIER_MODE_SINGLES)
- TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode], 5);
+ TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_DOME_SINGLES);
else
- TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode], 6);
+ TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_DOME_DOUBLES);
}
}
break;
@@ -1589,9 +1589,9 @@ static void CheckPutFrontierTVShowOnAir(void)
&& ShouldAirFrontierTVShow())
{
if (battleMode == FRONTIER_MODE_SINGLES)
- TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode], 11);
+ TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_PALACE_SINGLES);
else
- TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode], 12);
+ TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_PALACE_DOUBLES);
}
}
break;
@@ -1602,7 +1602,7 @@ static void CheckPutFrontierTVShowOnAir(void)
if (gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode] > 1
&& ShouldAirFrontierTVShow())
{
- TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode], 10);
+ TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode], FRONTIER_SHOW_ARENA);
}
}
break;
@@ -1615,9 +1615,9 @@ static void CheckPutFrontierTVShowOnAir(void)
&& ShouldAirFrontierTVShow())
{
if (battleMode == FRONTIER_MODE_SINGLES)
- TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode], 7);
+ TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_FACTORY_SINGLES);
else
- TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode], 8);
+ TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode], FRONTIER_SHOW_FACTORY_DOUBLES);
}
}
break;
@@ -1628,7 +1628,7 @@ static void CheckPutFrontierTVShowOnAir(void)
if (gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode] > 1
&& ShouldAirFrontierTVShow())
{
- TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode], 9);
+ TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode], FRONTIER_SHOW_PIKE);
}
}
break;
@@ -1639,7 +1639,7 @@ static void CheckPutFrontierTVShowOnAir(void)
if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode] > 1
&& ShouldAirFrontierTVShow())
{
- TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode], 13);
+ TryPutFrontierTVShowOnAir(gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode], FRONTIER_SHOW_PYRAMID);
}
}
break;
diff --git a/src/graphics.c b/src/graphics.c
index 39abf69d8..37d953313 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -471,11 +471,11 @@ const u8 gContestSliderHeart_Gfx[] = INCBIN_U8("graphics/contest/slider_heart.4b
const u32 gUnknownGfx_C19470[] = INCBIN_U32("graphics/unknown/unknown_C19470.4bpp.lz");
const u32 gUnknownPal_C19470[] = INCBIN_U32("graphics/unknown/unknown_C19470.gbapal.lz");
-const u32 gContestResults_Gfx[] = INCBIN_U32("graphics/contest/results_screen.4bpp.lz");
-const u32 gUnknown_08C19EEC[] = INCBIN_U32("graphics/contest/misc_2_tilemap_1.bin.lz");
-const u32 gUnknown_08C1A000[] = INCBIN_U32("graphics/contest/misc_2_tilemap_2.bin.lz");
-const u32 gUnknown_08C1A12C[] = INCBIN_U32("graphics/contest/misc_2_tilemap_3.bin.lz");
-const u32 gContestResults_Pal[] = INCBIN_U32("graphics/contest/results_screen.gbapal.lz");
+const u32 gContestResults_Gfx[] = INCBIN_U32("graphics/contest/results_screen/tiles.4bpp.lz");
+const u32 gContestResults_WinnerBanner_Tilemap[] = INCBIN_U32("graphics/contest/results_screen/winner_banner.bin.lz");
+const u32 gContestResults_Interface_Tilemap[] = INCBIN_U32("graphics/contest/results_screen/interface.bin.lz");
+const u32 gContestResults_Bg_Tilemap[] = INCBIN_U32("graphics/contest/results_screen/bg.bin.lz");
+const u32 gContestResults_Pal[] = INCBIN_U32("graphics/contest/results_screen/tiles.gbapal.lz");
const u32 gBattleAnimSpriteGfx_Impact[] = INCBIN_U32("graphics/battle_anims/sprites/impact.4bpp.lz");
const u32 gBattleAnimSpritePal_Impact[] = INCBIN_U32("graphics/battle_anims/sprites/impact.gbapal.lz");
@@ -1201,7 +1201,7 @@ const u32 gPokeblockBlack_Pal[] = INCBIN_U32("graphics/pokeblock/black.gbapal.lz
const u32 gPokeblockWhite_Pal[] = INCBIN_U32("graphics/pokeblock/white.gbapal.lz");
const u32 gPokeblockGold_Pal[] = INCBIN_U32("graphics/pokeblock/gold.gbapal.lz");
-const u32 gUnknown_08D9BA44[] = INCBIN_U32("graphics/interface/pokeblock_feeding_bg_map.bin.lz");
+const u32 gPokeblockFeedBg_Tilemap[] = INCBIN_U32("graphics/interface/pokeblock_feeding_bg_map.bin.lz");
#include "data/graphics/berries.h"
#include "data/graphics/rayquaza_scene.h"
@@ -1296,17 +1296,17 @@ const u8 gBagMenuHMIcon_Gfx[] = INCBIN_U8("graphics/interface/hm.4bpp");
// contest results screen
-const u16 gNormalContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_normal.bin");
-const u16 gSuperContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_super.bin");
-const u16 gHyperContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_hyper.bin");
-const u16 gMasterContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_master.bin");
-const u16 gLinkContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_link.bin");
-const u16 gCoolContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_cool.bin");
-const u16 gBeautyContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_beauty.bin");
-const u16 gCuteContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_cute.bin");
-const u16 gSmartContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_smart.bin");
-const u16 gToughContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen_tough.bin");
-const u16 gContestResults_Tilemap[] = INCBIN_U16("graphics/contest/results_screen.bin");
+const u16 gContestResultsTitle_Normal_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_normal.bin");
+const u16 gContestResultsTitle_Super_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_super.bin");
+const u16 gContestResultsTitle_Hyper_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_hyper.bin");
+const u16 gContestResultsTitle_Master_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_master.bin");
+const u16 gContestResultsTitle_Link_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_link.bin");
+const u16 gContestResultsTitle_Cool_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_cool.bin");
+const u16 gContestResultsTitle_Beauty_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_beauty.bin");
+const u16 gContestResultsTitle_Cute_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_cute.bin");
+const u16 gContestResultsTitle_Smart_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_smart.bin");
+const u16 gContestResultsTitle_Tough_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_tough.bin");
+const u16 gContestResultsTitle_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title.bin");
// pokenav
@@ -1411,9 +1411,9 @@ const u32 gKantoTrainerCardFrontLink_Tilemap[] = INCBIN_U32("graphics/trainer_ca
// pokemon storage system
-const u32 gPSSMenu_Gfx[] = INCBIN_U32("graphics/pokemon_storage/menu.4bpp.lz");
-const u16 gPSSMenu_Pal[] = INCBIN_U16("graphics/pokemon_storage/menu.gbapal");
-const u32 gUnknown_08DD36C8[] = INCBIN_U32("graphics/unknown/unknown_DD36C8.bin.lz");
+const u32 gStorageSystemMenu_Gfx[] = INCBIN_U32("graphics/pokemon_storage/menu.4bpp.lz");
+const u16 gStorageSystemPartyMenu_Pal[] = INCBIN_U16("graphics/pokemon_storage/menu.gbapal"); // Only used by party menu, but generated from all menu gfx
+const u32 gStorageSystemPartyMenu_Tilemap[] = INCBIN_U32("graphics/pokemon_storage/party_menu.bin.lz");
// naming screen
@@ -1474,9 +1474,9 @@ static const u16 sEmptyPal[16] = {0};
// Trade
const u16 gTradeMenu_Pal[] = INCBIN_U16("graphics/trade/menu.gbapal");
-const u16 gUnknown_08DDB444[] = INCBIN_U16("graphics/trade/unknown_DDB444.gbapal");
+const u16 gTradeCursor_Pal[] = INCBIN_U16("graphics/trade/cursor.gbapal");
const u8 gTradeMenu_Gfx[] = INCBIN_U8("graphics/trade/menu.4bpp");
-const u8 gTradeButtons_Gfx[] = INCBIN_U8("graphics/trade/buttons.4bpp");
+const u8 gTradeCursor_Gfx[] = INCBIN_U8("graphics/trade/cursor.4bpp");
const u16 gUnused_DDCEE4[] = INCBIN_U16("graphics/unused/unused_DDCEE4.bin");
const u16 gUnknown_08DDCF04[] = INCBIN_U16("graphics/trade/unknown_DDCF04.bin");
const u16 gTradeMenuMonBox_Tilemap[] = INCBIN_U16("graphics/trade/menu_mon_box.bin");
@@ -1484,27 +1484,27 @@ const u16 gTradeMenuMonBox_Tilemap[] = INCBIN_U16("graphics/trade/menu_mon_box.b
const u16 gMessageBox_Pal[] = INCBIN_U16("graphics/text_window/message_box.gbapal");
const u8 gMessageBox_Gfx[] = INCBIN_U8("graphics/text_window/message_box.4bpp");
-const u32 gWallpaperIcon_Cross[] = INCBIN_U32("graphics/pokemon_storage/cross_icon.4bpp.lz");
-const u32 gWallpaperIcon_Bolt[] = INCBIN_U32("graphics/pokemon_storage/bolt_icon.4bpp.lz");
-const u32 gWallpaperIcon_Plusle[] = INCBIN_U32("graphics/pokemon_storage/plusle_icon.4bpp.lz");
+const u32 gWallpaperIcon_Cross[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/cross.4bpp.lz");
+const u32 gWallpaperIcon_Bolt[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/bolt.4bpp.lz");
+const u32 gWallpaperIcon_Plusle[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/icons/plusle.4bpp.lz");
const u16 gWallpaperPalettes_Horizontal[][16] =
{
- INCBIN_U16("graphics/pokemon_storage/friends_frame2.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/horizontal_bg.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/friends_frame2.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/horizontal/bg.gbapal"),
};
-const u32 gWallpaperTiles_Horizontal[] = INCBIN_U32("graphics/pokemon_storage/horizontal.4bpp.lz");
-const u32 gWallpaperTilemap_Horizontal[] = INCBIN_U32("graphics/pokemon_storage/horizontal.bin.lz");
+const u32 gWallpaperTiles_Horizontal[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/horizontal/tiles.4bpp.lz");
+const u32 gWallpaperTilemap_Horizontal[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/horizontal/tilemap.bin.lz");
const u16 gWallpaperPalettes_Ribbon[][16] =
{
- INCBIN_U16("graphics/pokemon_storage/ribbon_frame.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/ribbon_bg.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/ribbon/frame.gbapal"),
+ INCBIN_U16("graphics/pokemon_storage/wallpapers/ribbon/bg.gbapal"),
};
-const u32 gWallpaperTiles_Ribbon[] = INCBIN_U32("graphics/pokemon_storage/ribbon.4bpp.lz");
-const u32 gWallpaperTilemap_Ribbon[] = INCBIN_U32("graphics/pokemon_storage/ribbon.bin.lz");
+const u32 gWallpaperTiles_Ribbon[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/ribbon/tiles.4bpp.lz");
+const u32 gWallpaperTilemap_Ribbon[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/ribbon/tilemap.bin.lz");
const u16 gPokenavRibbonsSummaryBg_Pal[] = INCBIN_U16("graphics/pokenav/ribbons/summary_bg.gbapal");
const u32 gPokenavRibbonsSummaryBg_Gfx[] = INCBIN_U32("graphics/pokenav/ribbons/summary_bg.4bpp.lz");
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index 7d3a7f28b..590c0d01d 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -66,13 +66,12 @@ static EWRAM_DATA struct HofGfx *sHofGfxPtr = NULL;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
-// this file's functions
static void ClearVramOamPltt_LoadHofPal(void);
static void LoadHofGfx(void);
static void InitHofBgs(void);
static bool8 CreateHofConfettiSprite(void);
-static void SetCallback2AfterHallOfFameDisplay(void);
-static bool8 sub_8175024(void);
+static void StartCredits(void);
+static bool8 LoadHofBgs(void);
static void Task_Hof_InitMonData(u8 taskId);
static void Task_Hof_InitTeamSaveData(u8 taskId);
static void Task_Hof_SetMonDisplayTask(u8 taskId);
@@ -104,7 +103,6 @@ static void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2);
static void Task_DoDomeConfetti(u8 taskId);
static void SpriteCB_HofConfetti(struct Sprite* sprite);
-// const rom data
static const struct BgTemplate sHof_BgTemplates[] =
{
{
@@ -136,12 +134,19 @@ static const struct BgTemplate sHof_BgTemplates[] =
},
};
-static const struct WindowTemplate sHof_WindowTemplate = {0, 2, 2, 0xE, 6, 0xE, 1};
-
-static const u8 sMonInfoTextColors[4] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY};
-static const u8 sPlayerInfoTextColors[4] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY};
+static const struct WindowTemplate sHof_WindowTemplate = {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 2,
+ .width = 14,
+ .height = 6,
+ .paletteNum = 14,
+ .baseBlock = 1
+};
-static const u8 sUnused_085E538C[] = {4, 5, 0, 0};
+static const u8 sMonInfoTextColors[4] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY};
+static const u8 sPlayerInfoTextColors[4] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY};
+static const u8 sUnusedTextColors[4] = {TEXT_COLOR_RED, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_TRANSPARENT};
static const struct CompressedSpriteSheet sSpriteSheet_Confetti[] =
{
@@ -383,7 +388,7 @@ static bool8 InitHallOfFameScreen(void)
gMain.state++;
break;
case 3:
- if (!sub_8175024())
+ if (!LoadHofBgs())
{
SetVBlankCallback(VBlankCB_HallOfFame);
BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK);
@@ -712,9 +717,9 @@ static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId)
{
gTasks[taskId].tFrameCount--;
}
- else if (gSprites[gTasks[taskId].tPlayerSpriteID].pos1.x != 192)
+ else if (gSprites[gTasks[taskId].tPlayerSpriteID].x != 192)
{
- gSprites[gTasks[taskId].tPlayerSpriteID].pos1.x++;
+ gSprites[gTasks[taskId].tPlayerSpriteID].x++;
}
else
{
@@ -774,11 +779,11 @@ static void Task_Hof_HandleExit(u8 taskId)
if (sHofMonPtr != NULL)
FREE_AND_SET_NULL(sHofMonPtr);
- SetCallback2AfterHallOfFameDisplay();
+ StartCredits();
}
}
-static void SetCallback2AfterHallOfFameDisplay(void)
+static void StartCredits(void)
{
SetMainCallback2(CB2_StartCreditsSequence);
}
@@ -819,7 +824,7 @@ void CB2_DoHallOfFamePC(void)
gMain.state++;
break;
case 3:
- if (!sub_8175024())
+ if (!LoadHofBgs())
{
struct HallofFameTeam *fameTeam = (struct HallofFameTeam*)(gDecompressionBuffer);
fameTeam->mon[0] = sDummyFameMon;
@@ -1301,7 +1306,7 @@ static void InitHofBgs(void)
ChangeBgY(3, 0, 0);
}
-static bool8 sub_8175024(void)
+static bool8 LoadHofBgs(void)
{
switch (sHofGfxPtr->state)
{
@@ -1340,18 +1345,18 @@ static bool8 sub_8175024(void)
static void SpriteCB_GetOnScreenAndAnimate(struct Sprite *sprite)
{
- if (sprite->pos1.x != sprite->tDestinationX
- || sprite->pos1.y != sprite->tDestinationY)
+ if (sprite->x != sprite->tDestinationX
+ || sprite->y != sprite->tDestinationY)
{
- if (sprite->pos1.x < sprite->tDestinationX)
- sprite->pos1.x += 15;
- if (sprite->pos1.x > sprite->tDestinationX)
- sprite->pos1.x -= 15;
-
- if (sprite->pos1.y < sprite->tDestinationY)
- sprite->pos1.y += 10;
- if (sprite->pos1.y > sprite->tDestinationY)
- sprite->pos1.y -= 10;
+ if (sprite->x < sprite->tDestinationX)
+ sprite->x += 15;
+ if (sprite->x > sprite->tDestinationX)
+ sprite->x -= 15;
+
+ if (sprite->y < sprite->tDestinationY)
+ sprite->y += 10;
+ if (sprite->y > sprite->tDestinationY)
+ sprite->y -= 10;
}
else
{
@@ -1373,7 +1378,7 @@ static void SpriteCB_GetOnScreenAndAnimate(struct Sprite *sprite)
static void SpriteCB_HofConfetti(struct Sprite* sprite)
{
- if (sprite->pos2.y > 120)
+ if (sprite->y2 > 120)
{
DestroySprite(sprite);
}
@@ -1382,12 +1387,12 @@ static void SpriteCB_HofConfetti(struct Sprite* sprite)
u16 rand;
u8 sineIdx;
- sprite->pos2.y++;
- sprite->pos2.y += sprite->sExtraY;
+ sprite->y2++;
+ sprite->y2 += sprite->sExtraY;
sineIdx = sprite->sSineIdx;
rand = (Random() % 4) + 8;
- sprite->pos2.x = rand * gSineTable[sineIdx] / 256;
+ sprite->x2 = rand * gSineTable[sineIdx] / 256;
sprite->sSineIdx += 4;
}
@@ -1398,7 +1403,7 @@ static bool8 CreateHofConfettiSprite(void)
u8 spriteID;
struct Sprite* sprite;
- s16 posX = Random() % 240;
+ s16 posX = Random() % DISPLAY_WIDTH;
s16 posY = -(Random() % 8);
spriteID = CreateSprite(&sSpriteTemplate_HofConfetti, posX, posY, 0);
@@ -1505,7 +1510,7 @@ static void Task_DoDomeConfetti(u8 taskId)
id = ConfettiUtil_AddNew(&sOamData_Confetti,
TAG_CONFETTI,
TAG_CONFETTI,
- Random() % 240,
+ Random() % DISPLAY_WIDTH,
-(Random() % 8),
Random() % ARRAY_COUNT(sAnims_Confetti),
id);
diff --git a/src/image_processing_effects.c b/src/image_processing_effects.c
index 4a56871a4..fa6867f2c 100644
--- a/src/image_processing_effects.c
+++ b/src/image_processing_effects.c
@@ -804,8 +804,8 @@ void ConvertImageProcessingToGBA(struct ImageProcessingContext *context)
dest = dest_ + ((i * width + j) << 4) + (k << 1);
src = src_ + ((((i << 3) + k) << 3) * width) + (j << 3);
- dest[0] = src[0] | (src[1] << 4) | (src[2] << 8) | (src[3] << 0xC);
- dest[1] = src[4] | (src[5] << 4) | (src[6] << 8) | (src[7] << 0xC);
+ dest[0] = src[0] | (src[1] << 4) | (src[2] << 8) | (src[3] << 12);
+ dest[1] = src[4] | (src[5] << 4) | (src[6] << 8) | (src[7] << 12);
}
}
}
diff --git a/src/international_string_util.c b/src/international_string_util.c
index ed1e17816..ab812de89 100644
--- a/src/international_string_util.c
+++ b/src/international_string_util.c
@@ -185,7 +185,7 @@ void ConvertInternationalPlayerNameStripChar(u8 *str, u8 removeChar)
}
}
-void sub_81DB5AC(u8 *str)
+void ConvertInternationalContestantName(u8 *str)
{
if (*str++ == EXT_CTRL_CODE_BEGIN && *str++ == EXT_CTRL_CODE_JPN)
{
diff --git a/src/intro.c b/src/intro.c
index 324ec6d46..9fe9169da 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -27,119 +27,193 @@
#include "constants/battle_anim.h"
/*
- * Intro animation sequence state machine
- * --------------------------------------
- *
- * Entry Point: CB2_InitCopyrightScreenAfterBootup
- *
- * Note: States advance sequentially unless otherwise stated.
- *
- * CB2_InitCopyrightScreenAfterBootup
- * - Registers a serial interrupt handler that listens for a GameCube.
- * - Waits for 140 frames, and then until palette fading completes.
- * - Stops looking for a GameCube for dualboot.
- * - Check the save file for corruption
- * - Setup global pointers to save file
- * - Initialize gHeap
- *
- * MainCB2_Intro
- * - Spawn Task_IntroLoadPart1Graphics
- * - If any keys are pressed during the intro, advance to
- * MainCB2_EndIntro (which will then kill all tasks).
- *
- * Task_IntroLoadPart1Graphics
- * Task_IntroFadeIn (frame counter starts at 0 here)
- * Task_IntroWaterDrops
- * - At frame 128 of this state, spawn Task_IntroWaterDrops_1
- * - At frame 256 of this state, spawn Task_IntroWaterDrops_2
- * - At frame 560 of this state, spawn Task_IntroWaterDrops_3
- * Task_IntroScrollDownAndShowFlygon
- * Task_IntroWaitToSetupPart2
- * Task_IntroLoadPart2Graphics
- * Task_IntroStartBikeRide
- * - Spawn Task_AdvanceBicycleAnimation
- * Task_IntroHandleBikeAndFlygonMovement
- * - At frame 1856, kills the bicycle animation task
- * Task_IntroWaitToSetupPart3
- * Task_IntroLoadPart3Graphics (frame counter resets to 0 here)
- * Task_IntroSpinAndZoomPokeball
- * - Continues until the zoom reaches a certain point
- * Task_IntroWaitToSetupPart3LegendsFight
- * Task_IntroLoadGroudonScene
- * Task_IntroLoadPart3Graphics1
- * Task_IntroLoadPart3Graphics2
- * Task_IntroLoadPart3Graphics3
- * Task_IntroLoadPart3Graphics4
- * Task_IntroGroudonScene
- * Task_IntroLoadKyogreScene
- * Task_IntroKyogreScene
- * Task_IntroLoadClouds1
- * Task_IntroLoadClouds2
- * Task_IntroLoadClouds3
- * Task_IntroCloudsScene
- * Task_IntroLoadRayquazaLightningScene
- * Task_IntroRayquazaLightningScene
- * Task_IntroLoadRayquazaGlowScene
- * Task_IntroRayquazaGlowScene_0
- * - Runs concurrently with Task_IntroRayquazaGlowScene_1
- * Task_EndIntroMovie
- * MainCB2_EndIntro
- * - Advances to CB2_InitTitleScreen
- */
+ The intro is grouped into the following scenes
+ Scene 0. Copyright screen
+ Scene 1. GF Logo, pan up over plants, Flygon silhouette goes by
+ Scene 2. Player biking on path, joined by Pokémon
+ Scene 3. A fight between Groudon/Kyogre ends with Rayquaza
+
+ After this it progresses to the title screen
+*/
+
+// Scene 1 main tasks
+static void Task_Scene1_Load(u8);
+static void Task_Scene1_FadeIn(u8);
+static void Task_Scene1_WaterDrops(u8);
+static void Task_Scene1_PanUp(u8);
+static void Task_Scene1_End(u8);
+
+// Scene 1 supplemental functions
+static void IntroResetGpuRegs(void);
+static u8 CreateGameFreakLogoSprites(s16, s16, s16);
+static void Task_BlendLogoIn(u8);
+static void Task_BlendLogoOut(u8);
+static void Task_CreateSparkles(u8);
+static u8 CreateWaterDrop(s16, s16, u16, u16, u16, u8);
+static void SpriteCB_WaterDrop(struct Sprite *sprite);
+static void SpriteCB_WaterDrop_Slide(struct Sprite *);
+static void SpriteCB_WaterDrop_ReachLeafEnd(struct Sprite *);
+static void SpriteCB_WaterDrop_DangleFromLeaf(struct Sprite *);
+static void SpriteCB_WaterDrop_Fall(struct Sprite *);
+static void SpriteCB_WaterDrop_Ripple(struct Sprite *);
+static void SpriteCB_Sparkle(struct Sprite *sprite);
+static void SpriteCB_LogoLetter(struct Sprite *sprite);
+static void SpriteCB_GameFreakLogo(struct Sprite *sprite);
+static void SpriteCB_FlygonSilhouette(struct Sprite *sprite);
+
+// Scene 2 main tasks
+static void Task_Scene2_Load(u8);
+static void Task_Scene2_CreateSprites(u8);
+static void Task_Scene2_BikeRide(u8);
+static void Task_Scene2_End(u8);
+
+// Scene 2 supplemental functions
+static void SpriteCB_Torchic(struct Sprite *sprite);
+static void SpriteCB_Manectric(struct Sprite *sprite);
+static void SpriteCB_Volbeat(struct Sprite *sprite);
+static void SpriteCB_Flygon(struct Sprite *);
+static void SpriteCB_PlayerOnBicycle(struct Sprite *);
+
+// Scene 3 main tasks
+static void Task_Scene3_Load(u8);
+static void Task_Scene3_SpinPokeball(u8);
+static void Task_Scene3_WaitGroudon(u8);
+static void Task_Scene3_LoadGroudon(u8);
+static void Task_Scene3_InitGroudonBg(u8);
+static void Task_Scene3_NarrowWindow(u8);
+static void Task_Scene3_EndNarrowWindow(u8);
+static void Task_Scene3_StartGroudon(u8);
+static void Task_Scene3_Groudon(u8);
+static void Task_Scene3_LoadKyogre(u8);
+static void Task_Scene3_Kyogre(u8);
+static void Task_Scene3_LoadClouds1(u8);
+static void Task_Scene3_LoadClouds2(u8);
+static void Task_Scene3_InitClouds(u8);
+static void Task_Scene3_Clouds(u8);
+static void Task_Scene3_LoadLightning(u8);
+static void Task_Scene3_Lightning(u8);
+static void Task_Scene3_LoadRayquazaAttack(u8);
+static void Task_Scene3_Rayquaza(u8);
+static void Task_EndIntroMovie(u8);
+
+// Scene 3 supplemental functions
+static void CreateGroudonRockSprites(u8);
+static void CreateKyogreBubbleSprites_Body(u8);
+static void CreateKyogreBubbleSprites_Fins(void);
+static void Task_RayquazaAttack(u8);
+static void SpriteCB_GroudonRocks(struct Sprite *);
+static void SpriteCB_KyogreBubbles(struct Sprite *sprite);
+static void SpriteCB_Lightning(struct Sprite *sprite);
+static void SpriteCB_RayquazaOrb(struct Sprite *sprite);
+
+static void MainCB2_EndIntro(void);
extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
extern const struct SpriteTemplate gAncientPowerRockSpriteTemplate[];
-//ewram
-EWRAM_DATA u16 gIntroCharacterGender = 0;
-EWRAM_DATA u16 gUnknown_0203BCCA = 0;
-EWRAM_DATA u16 gIntroGraphicsFlygonYOffset = 0;
+#define TAG_VOLBEAT 1500
+#define TAG_TORCHIC 1501
+#define TAG_MANECTRIC 1502
+#define TAG_LIGHTNING 1503
+#define TAG_BUBBLES 1504
+#define TAG_SPARKLE 1505
+
+#define GFXTAG_DROPS_LOGO 2000
+#define PALTAG_DROPS 2000
+#define PALTAG_LOGO 2001
+
+#define TAG_FLYGON_SILHOUETTE 2002
+#define TAG_RAYQUAZA_ORB 2003
+
+#define COLOSSEUM_GAME_CODE 0x65366347 // "Gc6e" in ASCII
+
+// Used by various tasks and sprites
+#define tState data[0]
+#define sState data[0]
+
+/*
+ gIntroFrameCounter is used as a persistent timer throughout the
+ intro cinematic. At various points it's used to determine when
+ to trigger actions or progress through the cutscene.
+ The values for these are defined contiguously below.
+*/
+#define TIMER_BIG_DROP_START 76
+#define TIMER_LOGO_APPEAR 128
+#define TIMER_LOGO_LETTERS_COLOR 144
+#define TIMER_BIG_DROP_FALLS 251
+#define TIMER_LOGO_BLEND_OUT 256
+#define TIMER_LOGO_DISAPPEAR 272
+#define TIMER_SMALL_DROP_1 368
+#define TIMER_SMALL_DROP_2 384
+#define TIMER_SPARKLES 560
+#define TIMER_FLYGON_SILHOUETTE_APPEAR 832
+#define TIMER_END_PAN_UP 904
+#define TIMER_END_SCENE_1 1007
+#define TIMER_START_SCENE_2 1026
+#define TIMER_MANECTRIC_ENTER 1088
+#define TIMER_PLAYER_DRIFT_BACK 1109
+#define TIMER_MANECTRIC_RUN_CIRCULAR 1168
+#define TIMER_PLAYER_MOVE_FORWARD 1214
+#define TIMER_TORCHIC_ENTER 1224
+#define TIMER_FLYGON_ENTER 1394
+#define TIMER_PLAYER_MOVE_BACKWARD 1398
+#define TIMER_PLAYER_HOLD_POSITION 1576
+#define TIMER_PLAYER_EXIT 1727
+#define TIMER_TORCHIC_SPEED_UP 1735
+#define TIMER_TORCHIC_EXIT 1856
+#define TIMER_END_SCENE_2 1946
+#define TIMER_START_SCENE_3 2068
+// timer is reset for scene 3
+#define TIMER_POKEBALL_FADE 28
+#define TIMER_START_LEGENDARIES 43
+
+static EWRAM_DATA u16 sIntroCharacterGender = 0;
+static EWRAM_DATA u16 sUnusedVar = 0;
+static EWRAM_DATA u16 sFlygonYOffset = 0;
-//iwram
u32 gIntroFrameCounter;
struct GcmbStruct gMultibootProgramStruct;
-//.rodata
-static const u16 gIntro1DropsPal[] = INCBIN_U16("graphics/intro/intro1_drops.gbapal");
-static const u16 gIntro1GFLogoPal[] = INCBIN_U16("graphics/intro/intro1_gflogo.gbapal");
-static const u32 gIntroTiles[] = INCBIN_U32("graphics/intro/intro.4bpp.lz");
-static const u16 gIntro1BGPals[16][16] = INCBIN_U16("graphics/intro/intro1_bgpal.gbapal");
-static const u32 gIntro1BG0_Tilemap[] = INCBIN_U32("graphics/intro/intro1_bg0_map.bin.lz");
-static const u32 gIntro1BG1_Tilemap[] = INCBIN_U32("graphics/intro/intro1_bg1_map.bin.lz");
-static const u32 gIntro1BG2_Tilemap[] = INCBIN_U32("graphics/intro/intro1_bg2_map.bin.lz");
-static const u32 gIntro1BG3_Tilemap[] = INCBIN_U32("graphics/intro/intro1_bg3_map.bin.lz");
-static const u32 gIntro1BGLeavesGfx[] = INCBIN_U32("graphics/intro/introgfx.4bpp.lz");
-static const u16 gIntro3PokeballPal[] = INCBIN_U16("graphics/intro/intro3_pokeball.gbapal");
-static const u32 gIntro3Pokeball_Tilemap[] = INCBIN_U32("graphics/intro/intro3_pokeball_map.bin.lz");
-static const u32 gIntro3Pokeball_Gfx[] = INCBIN_U32("graphics/intro/intro3_pokeball.8bpp.lz");
-static const u16 gIntro3Streaks_Pal_Unused[] = INCBIN_U16("graphics/intro/intro3_streaks.gbapal");
-static const u32 gIntro3Streaks_Gfx_Unused[] = INCBIN_U32("graphics/intro/intro3_streaks.4bpp.lz");
-static const u32 gIntro3Streaks_Tilemap_Unused[] = INCBIN_U32("graphics/intro/intro3_streaks_map.bin.lz");
-static const u16 gIntro3Misc1Palette[] = INCBIN_U16("graphics/intro/intro3_misc1.gbapal");
-static const u16 gIntro3Misc2Palette_Unused[] = INCBIN_U16("graphics/intro/intro3_misc2.gbapal");
-static const u32 gIntro3MiscTiles[] = INCBIN_U32("graphics/intro/intro3_misc.4bpp.lz");
-static const u16 gIntro1FlygonPalette[] = INCBIN_U16("graphics/intro/intro1_flygon.gbapal");
-static const u32 gIntro1EonTiles_Unused[] = INCBIN_U32("graphics/intro/intro1_eon.4bpp.lz");
-static const u8 sUnknownBytes[] = {
+static const u16 sIntroDrops_Pal[] = INCBIN_U16("graphics/intro/scene_1/drops.gbapal");
+static const u16 sIntroLogo_Pal[] = INCBIN_U16("graphics/intro/scene_1/logo.gbapal");
+static const u32 sIntroDropsLogo_Gfx[] = INCBIN_U32("graphics/intro/scene_1/drops_logo.4bpp.lz");
+static const u16 sIntro1Bg_Pal[16][16] = INCBIN_U16("graphics/intro/scene_1/bg.gbapal");
+static const u32 sIntro1Bg0_Tilemap[] = INCBIN_U32("graphics/intro/scene_1/bg0_map.bin.lz");
+static const u32 sIntro1Bg1_Tilemap[] = INCBIN_U32("graphics/intro/scene_1/bg1_map.bin.lz");
+static const u32 sIntro1Bg2_Tilemap[] = INCBIN_U32("graphics/intro/scene_1/bg2_map.bin.lz");
+static const u32 sIntro1Bg3_Tilemap[] = INCBIN_U32("graphics/intro/scene_1/bg3_map.bin.lz");
+static const u32 sIntro1Bg_Gfx[] = INCBIN_U32("graphics/intro/scene_1/bg.4bpp.lz");
+static const u16 sIntroPokeball_Pal[] = INCBIN_U16("graphics/intro/scene_3/pokeball.gbapal");
+static const u32 sIntroPokeball_Tilemap[] = INCBIN_U32("graphics/intro/scene_3/pokeball_map.bin.lz");
+static const u32 sIntroPokeball_Gfx[] = INCBIN_U32("graphics/intro/scene_3/pokeball.8bpp.lz");
+static const u16 sIntroStreaks_Pal[] = INCBIN_U16("graphics/intro/scene_3/streaks.gbapal"); // Unused
+static const u32 sIntroStreaks_Gfx[] = INCBIN_U32("graphics/intro/scene_3/streaks.4bpp.lz"); // Unused
+static const u32 sIntroStreaks_Tilemap[] = INCBIN_U32("graphics/intro/scene_3/streaks_map.bin.lz"); // Unused
+static const u16 sIntroRayquzaOrb_Pal[] = INCBIN_U16("graphics/intro/scene_3/rayquaza_orb.gbapal");
+static const u16 sIntroMisc_Pal[] = INCBIN_U16("graphics/intro/scene_3/misc.gbapal"); // Unused
+static const u32 sIntroMisc_Gfx[] = INCBIN_U32("graphics/intro/scene_3/misc.4bpp.lz"); // Rayquza orb, and misc unused gfx
+static const u16 sIntroFlygonSilhouette_Pal[] = INCBIN_U16("graphics/intro/scene_1/flygon.gbapal");
+static const u32 sIntroLati_Gfx[] = INCBIN_U32("graphics/intro/scene_1/lati.4bpp.lz"); // Unused
+static const u8 sUnusedData[] = {
0x02, 0x03, 0x04, 0x05, 0x01, 0x01, 0x01, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x02, 0x0D,
0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x02, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x02, 0x0D, 0x0E, 0x0F, 0x10,
0x11, 0x12, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x00
};
-static const struct CompressedSpriteSheet gIntroSpriteSheet_Sparkle[] =
+static const struct CompressedSpriteSheet sSpriteSheet_Sparkle[] =
{
- {gIntro1SparkleGfx, 0x400, 1505},
- {NULL},
+ {gIntroSparkle_Gfx, 0x400, TAG_SPARKLE},
+ {},
};
-static const struct SpritePalette gIntroPalette_Lightning[] =
+static const struct SpritePalette sSpritePalette_Sparkle[] =
{
- {gIntro3LightningPal, 1505},
- {NULL},
+ {gIntroLightning_Pal, TAG_SPARKLE}, // Lightning palette re-used
+ {},
};
-static const struct OamData gUnknown_085E4A94 =
+static const struct OamData sOamData_Sparkle =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -153,7 +227,7 @@ static const struct OamData gUnknown_085E4A94 =
.paletteNum = 0,
.affineParam = 0,
};
-static const union AnimCmd gUnknown_085E4A9C[] =
+static const union AnimCmd sAnim_Sparkle[] =
{
ANIMCMD_FRAME(0, 2),
ANIMCMD_FRAME(4, 2),
@@ -162,53 +236,52 @@ static const union AnimCmd gUnknown_085E4A9C[] =
ANIMCMD_FRAME(16, 2),
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const gUnknown_085E4AB4[] =
+static const union AnimCmd *const sAnims_Sparkle[] =
{
- gUnknown_085E4A9C,
+ sAnim_Sparkle,
};
-static void sub_816D338(struct Sprite *sprite);
-static const struct SpriteTemplate gUnknown_085E4AB8 =
+static const struct SpriteTemplate sSpriteTemplate_Sparkle =
{
- .tileTag = 1505,
- .paletteTag = 1505,
- .oam = &gUnknown_085E4A94,
- .anims = gUnknown_085E4AB4,
+ .tileTag = TAG_SPARKLE,
+ .paletteTag = TAG_SPARKLE,
+ .oam = &sOamData_Sparkle,
+ .anims = sAnims_Sparkle,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_816D338,
+ .callback = SpriteCB_Sparkle,
};
-static const u8 gUnknown_085E4AD0[][2] =
+static const u8 sSparkleCoords[][2] =
{
- {0x7C, 0x28},
- {0x66, 0x1E},
- {0x4D, 0x1E},
- {0x36, 0x0F},
- {0x94, 0x09},
- {0x3F, 0x1C},
- {0x5D, 0x28},
- {0x94, 0x20},
- {0xAD, 0x29},
- {0x5E, 0x14},
- {0xD0, 0x26},
- {0x00, 0x00},
+ {124, 40},
+ {102, 30},
+ { 77, 30},
+ { 54, 15},
+ {148, 9},
+ { 63, 28},
+ { 93, 40},
+ {148, 32},
+ {173, 41},
+ { 94, 20},
+ {208, 38},
+ {},
};
-static const struct CompressedSpriteSheet gIntroPokemonRunningSpriteSheet[] =
+static const struct CompressedSpriteSheet sSpriteSheet_RunningPokemon[] =
{
- {gIntro2VolbeatGfx, 0x400, 1500},
- {gIntro2TorchicGfx, 0xC00, 1501},
- {gIntro2ManectricGfx, 0x2000, 1502},
- {NULL},
+ {gIntroVolbeat_Gfx, 0x400, TAG_VOLBEAT},
+ {gIntroTorchic_Gfx, 0xC00, TAG_TORCHIC},
+ {gIntroManectric_Gfx, 0x2000, TAG_MANECTRIC},
+ {},
};
-static const struct SpritePalette gIntroPokemonRunningPalette[] =
+static const struct SpritePalette sSpritePalettes_RunningPokemon[] =
{
- {gIntro2VolbeatPal, 1500},
- {gIntro2TorchicPal, 1501},
- {gIntro2ManectricPal, 1502},
- {NULL},
+ {gIntroVolbeat_Pal, TAG_VOLBEAT},
+ {gIntroTorchic_Pal, TAG_TORCHIC},
+ {gIntroManectric_Pal, TAG_MANECTRIC},
+ {},
};
-static const struct OamData gUnknown_085E4B28 =
+static const struct OamData sOamData_Volbeat =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -222,30 +295,29 @@ static const struct OamData gUnknown_085E4B28 =
.paletteNum = 0,
.affineParam = 0,
};
-static const union AnimCmd gUnknown_085E4B30[] =
+static const union AnimCmd sAnim_Volbeat[] =
{
ANIMCMD_FRAME(0, 2),
ANIMCMD_FRAME(16, 2),
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const gUnknown_085E4B3C[] =
+static const union AnimCmd *const sAnims_Volbeat[] =
{
- gUnknown_085E4B30,
+ sAnim_Volbeat,
};
-static void sub_816D81C(struct Sprite *sprite);
-static const struct SpriteTemplate gUnknown_085E4B40 =
+static const struct SpriteTemplate sSpriteTemplate_Volbeat =
{
- .tileTag = 1500,
- .paletteTag = 1500,
- .oam = &gUnknown_085E4B28,
- .anims = gUnknown_085E4B3C,
+ .tileTag = TAG_VOLBEAT,
+ .paletteTag = TAG_VOLBEAT,
+ .oam = &sOamData_Volbeat,
+ .anims = sAnims_Volbeat,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_816D81C,
+ .callback = SpriteCB_Volbeat,
};
-static const struct OamData gUnknown_085E4B58 =
+static const struct OamData sOamData_Torchic =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -259,7 +331,7 @@ static const struct OamData gUnknown_085E4B58 =
.paletteNum = 0,
.affineParam = 0,
};
-static const union AnimCmd gUnknown_085E4B60[] =
+static const union AnimCmd sAnim_Torchic_Walk[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_FRAME(16, 5),
@@ -267,7 +339,7 @@ static const union AnimCmd gUnknown_085E4B60[] =
ANIMCMD_FRAME(16, 5),
ANIMCMD_JUMP(0),
};
-static const union AnimCmd gUnknown_085E4B74[] =
+static const union AnimCmd sAnim_Torchic_Run[] =
{
ANIMCMD_FRAME(0, 3),
ANIMCMD_FRAME(16, 3),
@@ -275,33 +347,37 @@ static const union AnimCmd gUnknown_085E4B74[] =
ANIMCMD_FRAME(16, 3),
ANIMCMD_JUMP(0),
};
-static const union AnimCmd gUnknown_085E4B88[] =
+static const union AnimCmd sAnim_Torchic_Trip[] =
{
ANIMCMD_FRAME(48, 4),
ANIMCMD_FRAME(64, 6),
ANIMCMD_FRAME(80, 0),
ANIMCMD_END,
};
-static const union AnimCmd *const gUnknown_085E4B98[] =
+enum {
+ TORCHIC_ANIM_WALK,
+ TORCHIC_ANIM_RUN,
+ TORCHIC_ANIM_TRIP,
+};
+static const union AnimCmd *const sAnims_Torchic[] =
{
- gUnknown_085E4B60,
- gUnknown_085E4B74,
- gUnknown_085E4B88,
+ [TORCHIC_ANIM_WALK] = sAnim_Torchic_Walk,
+ [TORCHIC_ANIM_RUN] = sAnim_Torchic_Run,
+ [TORCHIC_ANIM_TRIP] = sAnim_Torchic_Trip,
};
-static void sub_816D9C0(struct Sprite *sprite);
-static const struct SpriteTemplate gUnknown_085E4BA4 =
+static const struct SpriteTemplate sSpriteTemplate_Torchic =
{
- .tileTag = 1501,
- .paletteTag = 1501,
- .oam = &gUnknown_085E4B58,
- .anims = gUnknown_085E4B98,
+ .tileTag = TAG_TORCHIC,
+ .paletteTag = TAG_TORCHIC,
+ .oam = &sOamData_Torchic,
+ .anims = sAnims_Torchic,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_816D9C0,
+ .callback = SpriteCB_Torchic,
};
-static const struct OamData gUnknown_085E4BBC =
+static const struct OamData sOamData_Manectric =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -315,7 +391,7 @@ static const struct OamData gUnknown_085E4BBC =
.paletteNum = 0,
.affineParam = 0,
};
-static const union AnimCmd gUnknown_085E4BC4[] =
+static const union AnimCmd sAnim_Manectric[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(64, 4),
@@ -323,34 +399,33 @@ static const union AnimCmd gUnknown_085E4BC4[] =
ANIMCMD_FRAME(192, 4),
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const gUnknown_085E4BD8[] =
+static const union AnimCmd *const sAnims_Manectric[] =
{
- gUnknown_085E4BC4,
+ sAnim_Manectric,
};
-static void sub_816DAE8(struct Sprite *sprite);
-static const struct SpriteTemplate gUnknown_085E4BDC =
+static const struct SpriteTemplate sSpriteTemplate_Manectric =
{
- .tileTag = 1502,
- .paletteTag = 1502,
- .oam = &gUnknown_085E4BBC,
- .anims = gUnknown_085E4BD8,
+ .tileTag = TAG_MANECTRIC,
+ .paletteTag = TAG_MANECTRIC,
+ .oam = &sOamData_Manectric,
+ .anims = sAnims_Manectric,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_816DAE8,
+ .callback = SpriteCB_Manectric,
};
-static const struct CompressedSpriteSheet gIntroRayquazaLightningSpriteSheet[] =
+static const struct CompressedSpriteSheet sSpriteSheet_Lightning[] =
{
- {gIntro3LightningGfx, 0xC00, 1503},
- {NULL},
+ {gIntroLightning_Gfx, 0xC00, TAG_LIGHTNING},
+ {},
};
-static const struct SpritePalette gIntroRayquazaLightningPalette[] =
+static const struct SpritePalette sSpritePalette_Lightning[] =
{
- {gIntro3LightningPal, 1503},
- {NULL},
+ {gIntroLightning_Pal, TAG_LIGHTNING},
+ {},
};
-static const struct OamData gUnknown_085E4C14 =
+static const struct OamData sOamData_Lightning =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -364,78 +439,84 @@ static const struct OamData gUnknown_085E4C14 =
.paletteNum = 0,
.affineParam = 0,
};
-static const union AnimCmd gUnknown_085E4C1C[] =
+static const union AnimCmd sAnim_Lightning_Top[] =
{
ANIMCMD_FRAME(0, 2),
ANIMCMD_FRAME(48, 2),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4C28[] =
+static const union AnimCmd sAnim_Lightning_Middle[] =
{
ANIMCMD_FRAME(16, 2),
ANIMCMD_FRAME(64, 2),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4C34[] =
+static const union AnimCmd sAnim_Lightning_Bottom[] =
{
ANIMCMD_FRAME(32, 2),
ANIMCMD_FRAME(80, 2),
ANIMCMD_END,
};
-static const union AnimCmd *const gUnknown_085E4C40[] =
+static const union AnimCmd *const sAnims_Lightning[] =
{
- gUnknown_085E4C1C,
- gUnknown_085E4C28,
- gUnknown_085E4C34,
+ sAnim_Lightning_Top,
+ sAnim_Lightning_Middle,
+ sAnim_Lightning_Bottom,
};
-static void SpriteCB_IntroRayquazaLightning(struct Sprite *sprite);
-static const struct SpriteTemplate gIntroLightningSprite =
+static const struct SpriteTemplate sSpriteTemplate_Lightning =
{
- .tileTag = 1503,
- .paletteTag = 1503,
- .oam = &gUnknown_085E4C14,
- .anims = gUnknown_085E4C40,
+ .tileTag = TAG_LIGHTNING,
+ .paletteTag = TAG_LIGHTNING,
+ .oam = &sOamData_Lightning,
+ .anims = sAnims_Lightning,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCB_IntroRayquazaLightning,
-};
-static const s16 gIntroGroudonRockData[][3] =
-{
- {0x68, 0x00, 0x0C0},
- {0x8E, 0x03, 0x280},
- {0x53, 0x01, 0x180},
- {0x9B, 0x00, 0x080},
- {0x38, 0x02, 0x200},
- {0xAE, 0x01, 0x100},
-};
-static const struct CompressedSpriteSheet gUnknown_085E4C88[] =
-{
- {gIntro2BubblesGfx, 0x600, 1504},
- {NULL},
-};
-static const struct SpritePalette gUnknown_085E4C98[] =
-{
- {gIntro2BubblesPal, 1504},
- {NULL},
-};
-static const s16 gIntroKyogreBubbleData[][3] =
-{
- {0x42, 0x40, 0x1},
- {0x60, 0x60, 0x8},
- {0x80, 0x40, 0x1},
- {0x90, 0x30, 0x8},
- {0xA0, 0x48, 0x1},
- {0xB0, 0x60, 0x8},
- {0x60, 0x60, 0x4},
- {0x70, 0x68, 0x8},
- {0x80, 0x60, 0x4},
- {0x58, 0x20, 0x4},
- {0x68, 0x18, 0x8},
- {0x78, 0x20, 0x4},
-};
-static const struct OamData gUnknown_085E4CF0 =
-{
- .y = 160,
+ .callback = SpriteCB_Lightning,
+};
+// x coord, anim number, speed
+// Smaller anim numbers are larger rocks, and are given slower speeds
+static const s16 sGroudonRockData[][3] =
+{
+ {104, 0, 0x0C0},
+ {142, 3, 0x280},
+ { 83, 1, 0x180},
+ {155, 0, 0x080},
+ { 56, 2, 0x200},
+ {174, 1, 0x100},
+};
+static const struct CompressedSpriteSheet sSpriteSheet_Bubbles[] =
+{
+ {gIntroBubbles_Gfx, 0x600, TAG_BUBBLES},
+ {},
+};
+static const struct SpritePalette sSpritePalette_Bubbles[] =
+{
+ {gIntroBubbles_Pal, TAG_BUBBLES},
+ {},
+};
+#define NUM_BUBBLES_IN_SET 6
+// x coord, y coord, delay before animation
+// Can be produced in two different sets depending on the function called to create the sprites
+static const s16 sKyogreBubbleData[NUM_BUBBLES_IN_SET * 2][3] =
+{
+ // Set 1, for Kyogre's body
+ { 66, 64, 1},
+ { 96, 96, 8},
+ {128, 64, 1},
+ {144, 48, 8},
+ {160, 72, 1},
+ {176, 96, 8},
+ // Set 2, for Kyogre's fins
+ { 96, 96, 4},
+ {112, 104, 8},
+ {128, 96, 4},
+ { 88, 32, 4},
+ {104, 24, 8},
+ {120, 32, 4},
+};
+static const struct OamData sOamData_Bubbles =
+{
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -449,7 +530,7 @@ static const struct OamData gUnknown_085E4CF0 =
.paletteNum = 0,
.affineParam = 0,
};
-static const union AnimCmd gUnknown_085E4CF8[] =
+static const union AnimCmd sAnim_Bubbles[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(8, 4),
@@ -458,24 +539,23 @@ static const union AnimCmd gUnknown_085E4CF8[] =
ANIMCMD_FRAME(32, 4),
ANIMCMD_END,
};
-static const union AnimCmd *const gUnknown_085E4D10[] =
+static const union AnimCmd *const sAnims_Bubbles[] =
{
- gUnknown_085E4CF8,
+ sAnim_Bubbles,
};
-static void SpriteCB_IntroKyogreBubbles(struct Sprite *sprite);
-static const struct SpriteTemplate gUnknown_085E4D14 =
+static const struct SpriteTemplate sSpriteTemplate_Bubbles =
{
- .tileTag = 1504,
- .paletteTag = 1504,
- .oam = &gUnknown_085E4CF0,
- .anims = gUnknown_085E4D10,
+ .tileTag = TAG_BUBBLES,
+ .paletteTag = TAG_BUBBLES,
+ .oam = &sOamData_Bubbles,
+ .anims = sAnims_Bubbles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCB_IntroKyogreBubbles,
+ .callback = SpriteCB_KyogreBubbles,
};
-static const struct OamData gUnknown_085E4D2C =
+static const struct OamData sOamData_WaterDrop =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -489,45 +569,50 @@ static const struct OamData gUnknown_085E4D2C =
.paletteNum = 0,
.affineParam = 0,
};
-static const union AnimCmd gUnknown_085E4D34[] =
+enum {
+ DROP_ANIM_UPPER_HALF,
+ DROP_ANIM_LOWER_HALF,
+ DROP_ANIM_REFLECTION,
+ DROP_ANIM_RIPPLE,
+};
+static const union AnimCmd sAnim_WaterDrop_UpperHalf[] =
{
ANIMCMD_FRAME(16, 8),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4D3C[] =
+static const union AnimCmd sAnim_WaterDrop_LowerHalf[] =
{
ANIMCMD_FRAME(24, 8),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4D44[] =
+static const union AnimCmd sAnim_WaterDrop_Reflection[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4D4C[] =
+static const union AnimCmd sAnim_WaterDrop_Ripple[] =
{
ANIMCMD_FRAME(48, 8),
ANIMCMD_END,
};
-static const union AnimCmd *const gUnknown_085E4D54[] =
+static const union AnimCmd *const sAnims_WaterDrop[] =
{
- gUnknown_085E4D34,
- gUnknown_085E4D3C,
- gUnknown_085E4D44,
- gUnknown_085E4D4C,
+ [DROP_ANIM_UPPER_HALF] = sAnim_WaterDrop_UpperHalf,
+ [DROP_ANIM_LOWER_HALF] = sAnim_WaterDrop_LowerHalf,
+ [DROP_ANIM_REFLECTION] = sAnim_WaterDrop_Reflection,
+ [DROP_ANIM_RIPPLE] = sAnim_WaterDrop_Ripple,
};
-static void sub_816F454(struct Sprite *sprite);
-static const struct SpriteTemplate gIntroWaterDropSprite =
+static const struct SpriteTemplate sSpriteTemplate_WaterDrop =
{
- .tileTag = 2000,
- .paletteTag = 2000,
- .oam = &gUnknown_085E4D2C,
- .anims = gUnknown_085E4D54,
+ .tileTag = GFXTAG_DROPS_LOGO,
+ .paletteTag = PALTAG_DROPS,
+ .oam = &sOamData_WaterDrop,
+ .anims = sAnims_WaterDrop,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_816F454,
+ .callback = SpriteCB_WaterDrop,
};
-static const union AnimCmd gUnknown_085E4D7C[] =
+static const union AnimCmd sAnim_PlayerBicycle_Fast[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(64, 4),
@@ -535,7 +620,7 @@ static const union AnimCmd gUnknown_085E4D7C[] =
ANIMCMD_FRAME(192, 4),
ANIMCMD_JUMP(0),
};
-static const union AnimCmd gUnknown_085E4D90[] =
+static const union AnimCmd sAnim_PlayerBicycle_Slow[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(64, 8),
@@ -543,30 +628,36 @@ static const union AnimCmd gUnknown_085E4D90[] =
ANIMCMD_FRAME(192, 8),
ANIMCMD_JUMP(0),
};
-static const union AnimCmd gUnknown_085E4DA4[] =
+// The below two animations appear to be copied from the Credits version
+// of the player graphic, where additional frames are present to show
+// the player turning around to look at their rival.
+// They go unused here, and if they were used they'd overflow beyond
+// the player graphics data.
+// The above sAnim_PlayerBicycle_Slow, while valid, is likewise unused
+static const union AnimCmd sAnim_PlayerBicycle_LookBack[] =
{
ANIMCMD_FRAME(256, 4),
- ANIMCMD_FRAME(0x140, 4),
- ANIMCMD_FRAME(0x180, 4),
+ ANIMCMD_FRAME(320, 4),
+ ANIMCMD_FRAME(384, 4),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4DB4[] =
+static const union AnimCmd sAnim_PlayerBicycle_LookForward[] =
{
- ANIMCMD_FRAME(0x180, 16),
- ANIMCMD_FRAME(0x140, 16),
+ ANIMCMD_FRAME(384, 16),
+ ANIMCMD_FRAME(320, 16),
ANIMCMD_FRAME(256, 16),
ANIMCMD_END,
};
-static const union AnimCmd *const gIntroBicycleAnimationCommands[] =
+static const union AnimCmd *const sAnims_PlayerBicycle[] =
{
- gUnknown_085E4D7C,
- gUnknown_085E4D90,
- gUnknown_085E4DA4,
- gUnknown_085E4DB4,
+ sAnim_PlayerBicycle_Fast,
+ sAnim_PlayerBicycle_Slow,
+ sAnim_PlayerBicycle_LookBack,
+ sAnim_PlayerBicycle_LookForward,
};
-static const struct OamData gUnknown_085E4DD4 =
+static const struct OamData sOamData_GameFreakLetter =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -580,9 +671,9 @@ static const struct OamData gUnknown_085E4DD4 =
.paletteNum = 0,
.affineParam = 0,
};
-static const struct OamData gUnknown_085E4DDC =
+static const struct OamData sOamData_PresentsLetter =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -596,9 +687,9 @@ static const struct OamData gUnknown_085E4DDC =
.paletteNum = 0,
.affineParam = 0,
};
-static const struct OamData gUnknown_085E4DE4 =
+static const struct OamData sOamData_GameFreakLogo =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_BLEND,
.mosaic = 0,
@@ -612,193 +703,232 @@ static const struct OamData gUnknown_085E4DE4 =
.paletteNum = 0,
.affineParam = 0,
};
-static const union AnimCmd gUnknown_085E4DEC[] =
+static const union AnimCmd sAnim_GameFreakLetter_G[] =
{
ANIMCMD_FRAME(80, 8),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4DF4[] =
+static const union AnimCmd sAnim_GameFreakLetter_A[] =
{
ANIMCMD_FRAME(84, 8),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4DFC[] =
+static const union AnimCmd sAnim_GameFreakLetter_M[] =
{
ANIMCMD_FRAME(88, 8),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4E04[] =
+static const union AnimCmd sAnim_GameFreakLetter_E[] =
{
ANIMCMD_FRAME(92, 8),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4E0C[] =
+static const union AnimCmd sAnim_GameFreakLetter_F[] =
{
ANIMCMD_FRAME(96, 8),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4E14[] =
+static const union AnimCmd sAnim_GameFreakLetter_R[] =
{
ANIMCMD_FRAME(100, 8),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4E1C[] =
+static const union AnimCmd sAnim_GameFreakLetter_K[] =
{
ANIMCMD_FRAME(104, 8),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4E24[] =
+static const union AnimCmd sAnim_PresentsLetter_P[] =
{
ANIMCMD_FRAME(112, 8),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4E2C[] =
+static const union AnimCmd sAnim_PresentsLetter_R[] =
{
ANIMCMD_FRAME(113, 8),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4E34[] =
+static const union AnimCmd sAnim_PresentsLetter_E[] =
{
ANIMCMD_FRAME(114, 8),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4E3C[] =
+static const union AnimCmd sAnim_PresentsLetter_S[] =
{
ANIMCMD_FRAME(115, 8),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4E44[] =
+static const union AnimCmd sAnim_PresentsLetter_N[] =
{
ANIMCMD_FRAME(116, 8),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4E4C[] =
+static const union AnimCmd sAnim_PresentsLetter_T[] =
{
ANIMCMD_FRAME(117, 8),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_085E4E54[] =
+static const union AnimCmd sAnim_GameFreakLogo[] =
{
ANIMCMD_FRAME(128, 8),
ANIMCMD_END,
};
-static const union AnimCmd *const gUnknown_085E4E5C[] =
-{
- gUnknown_085E4DEC,
- gUnknown_085E4DF4,
- gUnknown_085E4DFC,
- gUnknown_085E4E04,
- gUnknown_085E4E0C,
- gUnknown_085E4E14,
- gUnknown_085E4E1C,
-};
-static const union AnimCmd *const gUnknown_085E4E78[] =
-{
- gUnknown_085E4E24,
- gUnknown_085E4E2C,
- gUnknown_085E4E34,
- gUnknown_085E4E3C,
- gUnknown_085E4E44,
- gUnknown_085E4E4C,
-};
-static const union AnimCmd *const gUnknown_085E4E90[] =
-{
- gUnknown_085E4E54,
-};
-static const s16 gUnknown_085E4E94[][2] =
-{
- {0, -72},
- {1, -56},
- {2, -40},
- {3, -24},
- {4, 8},
- {5, 24},
- {3, 40},
- {1, 56},
- {6, 72},
- {0, -28},
- {1, -20},
- {2, -12},
- {3, -4},
- {2, 4},
- {4, 12},
- {5, 20},
- {3, 28},
-};
-static const union AffineAnimCmd gUnknown_085E4ED8[] =
+
+enum {
+ GAMEFREAK_G,
+ GAMEFREAK_A,
+ GAMEFREAK_M,
+ GAMEFREAK_E,
+ GAMEFREAK_F,
+ GAMEFREAK_R,
+ GAMEFREAK_K,
+};
+enum {
+ PRESENTS_P,
+ PRESENTS_R,
+ PRESENTS_E,
+ PRESENTS_S,
+ PRESENTS_N,
+ PRESENTS_T,
+};
+static const union AnimCmd *const sAnims_GameFreakLetter[] =
+{
+ [GAMEFREAK_G] = sAnim_GameFreakLetter_G,
+ [GAMEFREAK_A] = sAnim_GameFreakLetter_A,
+ [GAMEFREAK_M] = sAnim_GameFreakLetter_M,
+ [GAMEFREAK_E] = sAnim_GameFreakLetter_E,
+ [GAMEFREAK_F] = sAnim_GameFreakLetter_F,
+ [GAMEFREAK_R] = sAnim_GameFreakLetter_R,
+ [GAMEFREAK_K] = sAnim_GameFreakLetter_K,
+};
+static const union AnimCmd *const sAnims_PresentsLetter[] =
+{
+ [PRESENTS_P] = sAnim_PresentsLetter_P,
+ [PRESENTS_R] = sAnim_PresentsLetter_R,
+ [PRESENTS_E] = sAnim_PresentsLetter_E,
+ [PRESENTS_S] = sAnim_PresentsLetter_S,
+ [PRESENTS_N] = sAnim_PresentsLetter_N,
+ [PRESENTS_T] = sAnim_PresentsLetter_T,
+};
+static const union AnimCmd *const sAnims_GameFreakLogo[] =
+{
+ sAnim_GameFreakLogo,
+};
+#define NUM_GF_LETTERS 9 // Letters in "Game Freak"
+static const s16 sGameFreakLetterData[NUM_GF_LETTERS][2] =
+{
+ // Letter, x offset
+ {GAMEFREAK_G, -72},
+ {GAMEFREAK_A, -56},
+ {GAMEFREAK_M, -40},
+ {GAMEFREAK_E, -24},
+ {GAMEFREAK_F, 8},
+ {GAMEFREAK_R, 24},
+ {GAMEFREAK_E, 40},
+ {GAMEFREAK_A, 56},
+ {GAMEFREAK_K, 72},
+};
+static const s16 sPresentsLetterData[][2] =
+{
+ // Letter, x offset
+ {PRESENTS_P, -28},
+ {PRESENTS_R, -20},
+ {PRESENTS_E, -12},
+ {PRESENTS_S, -4},
+ {PRESENTS_E, 4},
+ {PRESENTS_N, 12},
+ {PRESENTS_T, 20},
+ {PRESENTS_S, 28},
+};
+static const union AffineAnimCmd sAffineAnim_GameFreak_Small[] =
{
AFFINEANIMCMD_FRAME(128, 128, 0, 0),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd gUnknown_085E4EE8[] =
+static const union AffineAnimCmd sAffineAnim_GameFreak_GrowAndShrink[] =
{
AFFINEANIMCMD_FRAME(128, 128, 0, 0),
AFFINEANIMCMD_FRAME(16, 16, 0, 16),
AFFINEANIMCMD_FRAME(-16, -16, 0, 8),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd gUnknown_085E4F08[] =
+static const union AffineAnimCmd sAffineAnim_GameFreak_GrowBig[] =
{
AFFINEANIMCMD_FRAME(256, 256, 0, 0),
AFFINEANIMCMD_FRAME(8, 8, 0, 48),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd gUnknown_085E4F20[] =
+static const union AffineAnimCmd sAffineAnim_GameFreak_GrowMedium[] =
{
AFFINEANIMCMD_FRAME(256, 256, 0, 0),
AFFINEANIMCMD_FRAME(2, 2, 0, 48),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd *const gUnknown_085E4F38[] =
+static const union AffineAnimCmd *const sAffineAnims_GameFreak[] =
{
- gUnknown_085E4ED8,
- gUnknown_085E4EE8,
- gUnknown_085E4F08,
- gUnknown_085E4F20,
+ sAffineAnim_GameFreak_Small, // Initialize letters while still invisible
+ sAffineAnim_GameFreak_GrowAndShrink, // For letters appearing. Logo does this too, but while it's invisible
+ sAffineAnim_GameFreak_GrowBig, // For letters disappearing
+ sAffineAnim_GameFreak_GrowMedium, // For logo disappearing
};
-static const u16 gUnknown_085E4F48[] =
+static const u16 sGameFreakLettersMoveSpeed[NUM_GF_LETTERS] =
{
- 0x100, 0xC0, 0x80, 0x40, 0x00, 0x40, 0x80, 0xC0, 0x100
+ 256, // G
+ 192, // A
+ 128, // M
+ 64, // E
+ 0, // F
+ 64, // R
+ 128, // E
+ 192, // A
+ 256 // K
};
-static void sub_816FB38(struct Sprite *sprite);
-static const struct SpriteTemplate gUnknown_085E4F5C =
+static const struct SpriteTemplate sSpriteTemplate_GameFreakLetter =
{
- .tileTag = 2000,
- .paletteTag = 2001,
- .oam = &gUnknown_085E4DD4,
- .anims = gUnknown_085E4E5C,
+ .tileTag = GFXTAG_DROPS_LOGO,
+ .paletteTag = PALTAG_LOGO,
+ .oam = &sOamData_GameFreakLetter,
+ .anims = sAnims_GameFreakLetter,
.images = NULL,
- .affineAnims = gUnknown_085E4F38,
- .callback = sub_816FB38,
+ .affineAnims = sAffineAnims_GameFreak,
+ .callback = SpriteCB_LogoLetter,
};
-static const struct SpriteTemplate gUnknown_085E4F74 =
+// Unused
+static const struct SpriteTemplate sSpriteTemplate_PresentsLetter =
{
- .tileTag = 2000,
- .paletteTag = 2001,
- .oam = &gUnknown_085E4DDC,
- .anims = gUnknown_085E4E78,
+ .tileTag = GFXTAG_DROPS_LOGO,
+ .paletteTag = PALTAG_LOGO,
+ .oam = &sOamData_PresentsLetter,
+ .anims = sAnims_PresentsLetter,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_816FB38,
+ .callback = SpriteCB_LogoLetter,
};
-static void sub_816FD44(struct Sprite *sprite);
-static const struct SpriteTemplate gUnknown_085E4F8C =
+static const struct SpriteTemplate sSpriteTemplate_GameFreakLogo =
{
- .tileTag = 2000,
- .paletteTag = 2001,
- .oam = &gUnknown_085E4DE4,
- .anims = gUnknown_085E4E90,
+ .tileTag = GFXTAG_DROPS_LOGO,
+ .paletteTag = PALTAG_LOGO,
+ .oam = &sOamData_GameFreakLogo,
+ .anims = sAnims_GameFreakLogo,
.images = NULL,
- .affineAnims = gUnknown_085E4F38,
- .callback = sub_816FD44,
+ .affineAnims = sAffineAnims_GameFreak,
+ .callback = SpriteCB_GameFreakLogo,
};
-static const u8 gUnknown_085E4FA4[] =
+static const u8 sGameFreakLetterStartDelays[NUM_GF_LETTERS] =
{
- 0x00, 0x17, 0x17, 0x31, 0x3E, 0x24, 0x24, 0x0A, 0x0A
+ 0, // G
+ 23, // A
+ 23, // M
+ 49, // E
+ 62, // F
+ 36, // R
+ 36, // E
+ 10, // A
+ 10 // K
};
-static const struct OamData gUnknown_085E4FB0 =
+static const struct OamData sOamData_FlygonSilhouette =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -812,46 +942,45 @@ static const struct OamData gUnknown_085E4FB0 =
.paletteNum = 0,
.affineParam = 0,
};
-static const union AnimCmd gUnknown_085E4FB8[] =
+static const union AnimCmd sAnim_FlygonSilhouette[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const gUnknown_085E4FC0[] =
+static const union AnimCmd *const sAnims_FlygonSilhouette[] =
{
- gUnknown_085E4FB8,
+ sAnim_FlygonSilhouette,
};
-static void sub_816FEDC(struct Sprite *sprite);
-static const struct SpriteTemplate gUnknown_085E4FC4 =
+static const struct SpriteTemplate sSpriteTemplate_FlygonSilhouette =
{
- .tileTag = 2002,
- .paletteTag = 2002,
- .oam = &gUnknown_085E4FB0,
- .anims = gUnknown_085E4FC0,
+ .tileTag = TAG_FLYGON_SILHOUETTE,
+ .paletteTag = TAG_FLYGON_SILHOUETTE,
+ .oam = &sOamData_FlygonSilhouette,
+ .anims = sAnims_FlygonSilhouette,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_816FEDC,
+ .callback = SpriteCB_FlygonSilhouette,
};
-static const struct CompressedSpriteSheet gIntroSpriteSheet_WaterDropAndLogo[] =
+static const struct CompressedSpriteSheet sSpriteSheet_WaterDropsAndLogo[] =
{
- {gIntroTiles, 0x1400, 2000},
- {NULL},
+ {sIntroDropsLogo_Gfx, 0x1400, GFXTAG_DROPS_LOGO},
+ {},
};
-static const struct CompressedSpriteSheet gIntroSpriteSheet_Flygon[] =
+static const struct CompressedSpriteSheet sSpriteSheet_FlygonSilhouette[] =
{
- {gIntro1FlygonGfx, 0x400, 2002},
- {NULL},
+ {gIntroFlygonSilhouette_Gfx, 0x400, TAG_FLYGON_SILHOUETTE},
+ {},
};
-static const struct SpritePalette gIntroPalette_DropLogoFlygon[] =
+static const struct SpritePalette sSpritePalettes_Intro1[] =
{
- {gIntro1DropsPal, 2000},
- {gIntro1GFLogoPal, 2001},
- {gIntro1FlygonPalette, 2002},
- {NULL},
+ {sIntroDrops_Pal, PALTAG_DROPS},
+ {sIntroLogo_Pal, PALTAG_LOGO},
+ {sIntroFlygonSilhouette_Pal, TAG_FLYGON_SILHOUETTE},
+ {},
};
-static const struct OamData gUnknown_085E501C =
+static const struct OamData sOamData_RayquazaOrb =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -865,86 +994,36 @@ static const struct OamData gUnknown_085E501C =
.paletteNum = 0,
.affineParam = 0,
};
-static const union AnimCmd gUnknown_085E5024[] =
+static const union AnimCmd sAnim_RayquazaOrb[] =
{
ANIMCMD_FRAME(16, 8),
ANIMCMD_END,
};
-static const union AnimCmd *const gUnknown_085E502C[] =
+static const union AnimCmd *const sAnims_RayquazaOrb[] =
{
- gUnknown_085E5024,
+ sAnim_RayquazaOrb,
};
-static void SpriteCB_IntroRayquazaHyperbeam(struct Sprite *sprite);
-static const struct SpriteTemplate gIntroRayquazaHyperbeamSprite =
+static const struct SpriteTemplate sSpriteTemplate_RayquazaOrb =
{
- .tileTag = 2003,
- .paletteTag = 2003,
- .oam = &gUnknown_085E501C,
- .anims = gUnknown_085E502C,
+ .tileTag = TAG_RAYQUAZA_ORB,
+ .paletteTag = TAG_RAYQUAZA_ORB,
+ .oam = &sOamData_RayquazaOrb,
+ .anims = sAnims_RayquazaOrb,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCB_IntroRayquazaHyperbeam,
+ .callback = SpriteCB_RayquazaOrb,
};
-static const struct CompressedSpriteSheet gIntroRayquazaGlowSpriteSheet[] =
+static const struct CompressedSpriteSheet sSpriteSheet_RayquazaOrb[] =
{
- {gIntro3MiscTiles, 0xA00, 2003},
- {NULL},
+ {sIntroMisc_Gfx, 0xA00, TAG_RAYQUAZA_ORB},
+ {},
};
-static const struct SpritePalette gIntroRayquazaGlowPalette[] =
+static const struct SpritePalette sSpritePalette_RayquazaOrb[] =
{
- {gIntro3Misc1Palette, 2003},
- {NULL},
+ {sIntroRayquzaOrb_Pal, TAG_RAYQUAZA_ORB},
+ {},
};
-// this file's functions
-static void MainCB2_EndIntro(void);
-static void Task_IntroLoadPart1Graphics(u8);
-static u8 CreateWaterDrop(s16, s16, u16, u16, u16, u8);
-static void Task_IntroFadeIn(u8);
-static void intro_reset_and_hide_bgs(void);
-static void Task_IntroWaterDrops(u8);
-static void Task_IntroWaterDrops_1(u8);
-static void Task_IntroWaterDrops_2(u8);
-static void Task_IntroWaterDrops_3(u8);
-static void Task_IntroScrollDownAndShowFlygon(u8);
-static void Task_IntroWaitToSetupPart2(u8);
-static void Task_IntroLoadPart2Graphics(u8);
-static void Task_IntroStartBikeRide(u8);
-static void Task_IntroHandleBikeAndFlygonMovement(u8);
-static void Task_IntroWaitToSetupPart3(u8);
-static void Task_IntroLoadPart3Graphics(u8);
-static void Task_IntroSpinAndZoomPokeball(u8);
-static void Task_IntroWaitToSetupPart3LegendsFight(u8);
-static void Task_IntroLoadGroudonScene(u8);
-static void Task_IntroLoadPart3Graphics1(u8);
-static void Task_IntroLoadPart3Graphics2(u8);
-static void Task_IntroLoadPart3Graphics3(u8);
-static void Task_IntroLoadPart3Graphics4(u8);
-static void Task_IntroGroudonScene(u8);
-static void Task_IntroLoadKyogreScene(u8);
-static void Task_IntroKyogreScene(u8);
-static void Task_IntroLoadClouds1(u8);
-static void Task_IntroLoadClouds2(u8);
-static void Task_IntroLoadClouds3(u8);
-static void Task_IntroCloudScene(u8);
-static void Task_IntroLoadRayquazaLightningScene(u8);
-static void Task_IntroRayquazaLightningScene(u8);
-static void Task_IntroLoadRayquazaGlowScene(u8);
-static void Task_IntroRayquazaGlowScene_0(u8);
-static void Task_EndIntroMovie(u8);
-static void CreateGroudonRockSprites(u8);
-static void SpriteCB_IntroGroudonRocks(struct Sprite *);
-static void CreateKyogreBubbleSprites_0(u8);
-static void CreateKyogreBubbleSprites_1(void);
-static void Task_IntroRayquazaGlowScene_1(u8);
-static void sub_816F46C(struct Sprite *);
-static void sub_816F5B4(struct Sprite *);
-static void sub_816F660(struct Sprite *);
-static void SpriteCB_WaterDropFall(struct Sprite *);
-static void sub_816F318(struct Sprite *);
-static void SpriteCB_IntroGraphicsBicycle(struct Sprite *);
-static void SpriteCB_IntroGraphicsFlygon(struct Sprite *);
-static u8 CreatePart1Animations(s16, s16, s16);
static void VBlankCB_Intro(void)
{
@@ -976,7 +1055,7 @@ static void LoadCopyrightGraphics(u16 tilesetAddress, u16 tilemapAddress, u16 pa
{
LZ77UnCompVram(gIntroCopyright_Gfx, (void *)(VRAM + tilesetAddress));
LZ77UnCompVram(gIntroCopyright_Tilemap, (void *)(VRAM + tilemapAddress));
- LoadPalette(gIntroCopyright_Pal, paletteAddress, 0x20);
+ LoadPalette(gIntroCopyright_Pal, paletteAddress, 32);
}
static void SerialCB_CopyrightScreen(void)
@@ -993,7 +1072,7 @@ static u8 SetUpCopyrightScreen(void)
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
SetGpuReg(REG_OFFSET_BLDY, 0);
- *(u16 *)PLTT = 0x7FFF;
+ *(u16 *)PLTT = RGB_WHITE;
SetGpuReg(REG_OFFSET_DISPCNT, 0);
SetGpuReg(REG_OFFSET_BG0HOFS, 0);
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
@@ -1006,7 +1085,7 @@ static u8 SetUpCopyrightScreen(void)
ResetTasks();
ResetSpriteData();
FreeAllSpritePalettes();
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_WHITEALPHA);
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_WHITEALPHA);
SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0)
| BGCNT_CHARBASE(0)
| BGCNT_SCREENBASE(7)
@@ -1026,24 +1105,24 @@ static u8 SetUpCopyrightScreen(void)
GameCubeMultiBoot_Main(&gMultibootProgramStruct);
if (gMultibootProgramStruct.gcmb_field_2 != 1)
{
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK);
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
gMain.state++;
}
break;
case 141:
if (UpdatePaletteFade())
break;
- CreateTask(Task_IntroLoadPart1Graphics, 0);
+ CreateTask(Task_Scene1_Load, 0);
SetMainCallback2(MainCB2_Intro);
if (gMultibootProgramStruct.gcmb_field_2 != 0)
{
if (gMultibootProgramStruct.gcmb_field_2 == 2)
{
// check the multiboot ROM header game code to see if we already did this
- if (*(u32 *)(EWRAM_START + 0xAC) == 0x65366347) // "Gc6e" in ASCII
+ if (*(u32 *)(EWRAM_START + 0xAC) == COLOSSEUM_GAME_CODE)
{
CpuCopy16(&gMultiBootProgram_PokemonColosseum_Start, (void *)EWRAM_START, sizeof(gMultiBootProgram_PokemonColosseum_Start));
- *(u32 *)(EWRAM_START + 0xAC) = 0x65366347;
+ *(u32 *)(EWRAM_START + 0xAC) = COLOSSEUM_GAME_CODE;
}
GameCubeMultiBoot_ExecuteProgram(&gMultibootProgramStruct);
}
@@ -1079,539 +1158,639 @@ void CB2_InitCopyrightScreenAfterTitleScreen(void)
SetUpCopyrightScreen();
}
-static void Task_IntroLoadPart1Graphics(u8 taskId)
+#define sBigDropSpriteId data[0]
+
+static void Task_Scene1_Load(u8 taskId)
{
SetVBlankCallback(NULL);
- gIntroCharacterGender = Random() & 1;
- intro_reset_and_hide_bgs();
+ sIntroCharacterGender = Random() & 1;
+ IntroResetGpuRegs();
SetGpuReg(REG_OFFSET_BG3VOFS, 0);
- SetGpuReg(REG_OFFSET_BG2VOFS, 0x50);
- SetGpuReg(REG_OFFSET_BG1VOFS, 0x18);
- SetGpuReg(REG_OFFSET_BG0VOFS, 0x28);
- LZ77UnCompVram(gIntro1BGLeavesGfx, (void *)VRAM);
- LZ77UnCompVram(gIntro1BG0_Tilemap, (void *)(BG_CHAR_ADDR(2)));
- DmaClear16(3, BG_SCREEN_ADDR(17), 0x800);
- LZ77UnCompVram(gIntro1BG1_Tilemap, (void *)(BG_SCREEN_ADDR(18)));
- DmaClear16(3, BG_SCREEN_ADDR(19), 0x800);
- LZ77UnCompVram(gIntro1BG2_Tilemap, (void *)(BG_SCREEN_ADDR(20)));
- DmaClear16(3, BG_SCREEN_ADDR(21), 0x800);
- LZ77UnCompVram(gIntro1BG3_Tilemap, (void *)(BG_SCREEN_ADDR(22)));
- DmaClear16(3, BG_SCREEN_ADDR(23), 0x800);
- LoadPalette(gIntro1BGPals, 0, sizeof(gIntro1BGPals));
+ SetGpuReg(REG_OFFSET_BG2VOFS, 80);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 24);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 40);
+ LZ77UnCompVram(sIntro1Bg_Gfx, (void *)VRAM);
+ LZ77UnCompVram(sIntro1Bg0_Tilemap, (void *)(BG_CHAR_ADDR(2)));
+ DmaClear16(3, BG_SCREEN_ADDR(17), BG_SCREEN_SIZE);
+ LZ77UnCompVram(sIntro1Bg1_Tilemap, (void *)(BG_SCREEN_ADDR(18)));
+ DmaClear16(3, BG_SCREEN_ADDR(19), BG_SCREEN_SIZE);
+ LZ77UnCompVram(sIntro1Bg2_Tilemap, (void *)(BG_SCREEN_ADDR(20)));
+ DmaClear16(3, BG_SCREEN_ADDR(21), BG_SCREEN_SIZE);
+ LZ77UnCompVram(sIntro1Bg3_Tilemap, (void *)(BG_SCREEN_ADDR(22)));
+ DmaClear16(3, BG_SCREEN_ADDR(23), BG_SCREEN_SIZE);
+ LoadPalette(sIntro1Bg_Pal, 0, sizeof(sIntro1Bg_Pal));
SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(22) | BGCNT_16COLOR | BGCNT_TXT256x512);
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(20) | BGCNT_16COLOR | BGCNT_TXT256x512);
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(18) | BGCNT_16COLOR | BGCNT_TXT256x512);
SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(16) | BGCNT_16COLOR | BGCNT_TXT256x512);
- LoadCompressedSpriteSheet(gIntroSpriteSheet_WaterDropAndLogo);
- LoadCompressedSpriteSheet(gIntroSpriteSheet_Flygon);
- LoadSpritePalettes(gIntroPalette_DropLogoFlygon);
- LoadCompressedSpriteSheet(gIntroSpriteSheet_Sparkle);
- LoadSpritePalettes(gIntroPalette_Lightning);
- CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1F0, 0x20);
- CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1E1, 0x1E);
- CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1D2, 0x1C);
- CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1C3, 0x1A);
- CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1B4, 0x18);
- CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1A5, 0x16);
- CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x196, 0x14);
- CreatePart1Animations(0x78, 0x50, 0);
- gTasks[taskId].data[0] = CreateWaterDrop(236, -14, 0x200, 1, 0x78, FALSE);
- gTasks[taskId].func = Task_IntroFadeIn;
-}
-
-static void Task_IntroFadeIn(u8 taskId)
+ LoadCompressedSpriteSheet(sSpriteSheet_WaterDropsAndLogo);
+ LoadCompressedSpriteSheet(sSpriteSheet_FlygonSilhouette);
+ LoadSpritePalettes(sSpritePalettes_Intro1);
+ LoadCompressedSpriteSheet(sSpriteSheet_Sparkle);
+ LoadSpritePalettes(sSpritePalette_Sparkle);
+ CpuCopy16(&gPlttBufferUnfaded[0x100], &gPlttBufferUnfaded[0x1F0], 0x20);
+ CpuCopy16(&gPlttBufferUnfaded[0x100], &gPlttBufferUnfaded[0x1E1], 0x1E);
+ CpuCopy16(&gPlttBufferUnfaded[0x100], &gPlttBufferUnfaded[0x1D2], 0x1C);
+ CpuCopy16(&gPlttBufferUnfaded[0x100], &gPlttBufferUnfaded[0x1C3], 0x1A);
+ CpuCopy16(&gPlttBufferUnfaded[0x100], &gPlttBufferUnfaded[0x1B4], 0x18);
+ CpuCopy16(&gPlttBufferUnfaded[0x100], &gPlttBufferUnfaded[0x1A5], 0x16);
+ CpuCopy16(&gPlttBufferUnfaded[0x100], &gPlttBufferUnfaded[0x196], 0x14);
+ CreateGameFreakLogoSprites(120, 80, 0);
+ gTasks[taskId].sBigDropSpriteId = CreateWaterDrop(236, -14, 0x200, 1, 0x78, FALSE);
+ gTasks[taskId].func = Task_Scene1_FadeIn;
+}
+
+static void Task_Scene1_FadeIn(u8 taskId)
{
BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK);
SetVBlankCallback(VBlankCB_Intro);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON);
- gTasks[taskId].func = Task_IntroWaterDrops;
+ gTasks[taskId].func = Task_Scene1_WaterDrops;
gIntroFrameCounter = 0;
m4aSongNumStart(MUS_INTRO);
ResetSerial();
}
-static void Task_IntroWaterDrops(u8 taskId)
+// Task data for Task_Scene1_PanUp
+#define tBg2PosHi data[1]
+#define tBg2PosLo data[2]
+#define tBg1PosHi data[3]
+#define tBg1PosLo data[4]
+#define tBg3PosHi data[5]
+#define tBg3PosLo data[6]
+
+static void Task_Scene1_WaterDrops(u8 taskId)
{
- //start moving rock
- if (gIntroFrameCounter == 76)
- gSprites[gTasks[taskId].data[0]].data[0] = 1;
+ if (gIntroFrameCounter == TIMER_BIG_DROP_START)
+ gSprites[gTasks[taskId].sBigDropSpriteId].sState = 1;
- if (gIntroFrameCounter == 128)
- CreateTask(Task_IntroWaterDrops_1, 0);
+ if (gIntroFrameCounter == TIMER_LOGO_APPEAR)
+ CreateTask(Task_BlendLogoIn, 0);
- //drop rock
- if (gIntroFrameCounter == 251)
- gSprites[gTasks[taskId].data[0]].data[0] = 2;
+ if (gIntroFrameCounter == TIMER_BIG_DROP_FALLS)
+ gSprites[gTasks[taskId].sBigDropSpriteId].sState = 2;
- if (gIntroFrameCounter == 256)
- CreateTask(Task_IntroWaterDrops_2, 0);
+ if (gIntroFrameCounter == TIMER_LOGO_BLEND_OUT)
+ CreateTask(Task_BlendLogoOut, 0);
- if (gIntroFrameCounter == 368)
+ if (gIntroFrameCounter == TIMER_SMALL_DROP_1)
CreateWaterDrop(48, 0, 0x400, 5, 0x70, TRUE);
- if (gIntroFrameCounter == 384)
+ if (gIntroFrameCounter == TIMER_SMALL_DROP_2)
CreateWaterDrop(200, 60, 0x400, 9, 0x80, TRUE);
- if (gIntroFrameCounter == 560)
- CreateTask(Task_IntroWaterDrops_3, 0);
+ if (gIntroFrameCounter == TIMER_SPARKLES)
+ CreateTask(Task_CreateSparkles, 0);
- if (gIntroFrameCounter > 560)
+ if (gIntroFrameCounter > TIMER_SPARKLES)
{
- gTasks[taskId].data[1] = 0x50;
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].data[3] = 0x18;
- gTasks[taskId].data[4] = 0;
- gTasks[taskId].data[5] = 0x28;
- gTasks[taskId].data[6] = 0;
- gTasks[taskId].func = Task_IntroScrollDownAndShowFlygon;
+ gTasks[taskId].tBg2PosHi = 80;
+ gTasks[taskId].tBg2PosLo = 0;
+ gTasks[taskId].tBg1PosHi = 24;
+ gTasks[taskId].tBg1PosLo = 0;
+ gTasks[taskId].tBg3PosHi = 40;
+ gTasks[taskId].tBg3PosLo = 0;
+ gTasks[taskId].func = Task_Scene1_PanUp;
}
}
-static void Task_IntroWaterDrops_3(u8 taskId)
+#define tDelay data[1]
+#define tTimer data[2]
+#define tTimerSteps data[3]
+#define tNumSparkles data[4]
+
+static void Task_CreateSparkles(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if (++data[2] & 1)
- data[3]++;
- switch (data[0])
+ if (++tTimer & 1)
+ tTimerSteps++;
+
+ switch (tState)
{
case 0:
- CreateSprite(&gUnknown_085E4AB8, gUnknown_085E4AD0[data[4]][0], gUnknown_085E4AD0[data[4]][1] + data[3], 0);
- data[0]++;
- data[1] = 0xC;
- data[4]++;
+ CreateSprite(&sSpriteTemplate_Sparkle, sSparkleCoords[tNumSparkles][0], sSparkleCoords[tNumSparkles][1] + tTimerSteps, 0);
+ tState++;
+ tDelay = 12;
+ tNumSparkles++;
break;
case 1:
- if (!--data[1])
- data[0] = 0;
+ if (--tDelay == 0)
+ tState = 0;
break;
}
- if (data[3] > 0x3C)
+ if (tTimerSteps > 60)
DestroyTask(taskId);
}
-static void sub_816D338(struct Sprite *sprite)
+#undef tDelay
+#undef tTimer
+#undef tTimerSteps
+#undef tNumSparkles
+
+#define sTimer data[0]
+static void SpriteCB_Sparkle(struct Sprite *sprite)
{
- if (++sprite->data[0] == 0xC)
+ if (++sprite->sTimer == 12)
DestroySprite(sprite);
}
+#undef sTimer
-static void Task_IntroScrollDownAndShowFlygon(u8 taskId)
+static void Task_Scene1_PanUp(u8 taskId)
{
- if (gIntroFrameCounter < 904)
+ if (gIntroFrameCounter < TIMER_END_PAN_UP)
{
- s32 r2;
-
- //slide backgrounds downward
- r2 = (gTasks[taskId].data[1] << 16) + (u16)gTasks[taskId].data[2];
- r2 -= 0x6000;
- gTasks[taskId].data[1] = r2 >> 16;
- gTasks[taskId].data[2] = r2;
- SetGpuReg(REG_OFFSET_BG2VOFS, gTasks[taskId].data[1]);
- r2 = (gTasks[taskId].data[3] << 16) + (u16)gTasks[taskId].data[4];
- r2 -= 0x8000;
- gTasks[taskId].data[3] = r2 >> 16;
- gTasks[taskId].data[4] = r2;
- SetGpuReg(REG_OFFSET_BG1VOFS, gTasks[taskId].data[3]);
- r2 = (gTasks[taskId].data[5] << 16) + (u16)gTasks[taskId].data[6];
- r2 -= 0xC000;
- gTasks[taskId].data[5] = r2 >> 16;
- gTasks[taskId].data[6] = r2;
- SetGpuReg(REG_OFFSET_BG0VOFS, gTasks[taskId].data[5]);
-
- //show Flygon sprite
- if (gIntroFrameCounter == 832)
- {
- u8 spriteId = CreateSprite(&gUnknown_085E4FC4, 120, 160, 10);
+ s32 offset;
+
+ // Slide bg 2 downward
+ offset = (gTasks[taskId].tBg2PosHi << 16) + (u16)gTasks[taskId].tBg2PosLo;
+ offset -= 0x6000;
+ gTasks[taskId].tBg2PosHi = offset >> 16;
+ gTasks[taskId].tBg2PosLo = offset;
+ SetGpuReg(REG_OFFSET_BG2VOFS, gTasks[taskId].tBg2PosHi);
+
+ // Slide bg 1 downward
+ offset = (gTasks[taskId].tBg1PosHi << 16) + (u16)gTasks[taskId].tBg1PosLo;
+ offset -= 0x8000;
+ gTasks[taskId].tBg1PosHi = offset >> 16;
+ gTasks[taskId].tBg1PosLo = offset;
+ SetGpuReg(REG_OFFSET_BG1VOFS, gTasks[taskId].tBg1PosHi);
+
+ // Slide bg 3 downward
+ offset = (gTasks[taskId].tBg3PosHi << 16) + (u16)gTasks[taskId].tBg3PosLo;
+ offset -= 0xC000;
+ gTasks[taskId].tBg3PosHi = offset >> 16;
+ gTasks[taskId].tBg3PosLo = offset;
+ SetGpuReg(REG_OFFSET_BG0VOFS, gTasks[taskId].tBg3PosHi);
+
+ if (gIntroFrameCounter == TIMER_FLYGON_SILHOUETTE_APPEAR)
+ {
+ // Show Flygon silhouette
+ u8 spriteId = CreateSprite(&sSpriteTemplate_FlygonSilhouette, 120, DISPLAY_HEIGHT, 10);
gSprites[spriteId].invisible = TRUE;
}
}
else
{
- //fade to white
- if (gIntroFrameCounter > 1007)
+ if (gIntroFrameCounter > TIMER_END_SCENE_1)
{
+ // Fade to white
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_WHITEALPHA);
- gTasks[taskId].func = Task_IntroWaitToSetupPart2;
+ gTasks[taskId].func = Task_Scene1_End;
}
}
}
-static void Task_IntroWaitToSetupPart2(u8 taskId)
+static void Task_Scene1_End(u8 taskId)
{
- if (gIntroFrameCounter > 1026)
- gTasks[taskId].func = Task_IntroLoadPart2Graphics;
+ if (gIntroFrameCounter > TIMER_START_SCENE_2)
+ gTasks[taskId].func = Task_Scene2_Load;
}
-static void Task_IntroLoadPart2Graphics(u8 taskId)
+static void Task_Scene2_Load(u8 taskId)
{
- intro_reset_and_hide_bgs();
+ IntroResetGpuRegs();
SetVBlankCallback(NULL);
ResetSpriteData();
FreeAllSpritePalettes();
- gUnknown_0203BD24 = 0;
- gUnknown_0203BD26 = 0;
- gIntroGraphicsFlygonYOffset = 0;
- load_intro_part2_graphics(1);
- gTasks[taskId].func = Task_IntroStartBikeRide;
+ gIntroCredits_MovingSceneryVBase = 0;
+ gIntroCredits_MovingSceneryVOffset = 0;
+ sFlygonYOffset = 0;
+ LoadIntroPart2Graphics(1);
+ gTasks[taskId].func = Task_Scene2_CreateSprites;
}
-static void Task_IntroStartBikeRide(u8 taskId)
+#define tBgAnimTaskId data[0]
+#define tPlayerSpriteId data[1]
+#define tFlygonSpriteId data[2]
+#define tFlygonTimer data[3]
+
+static void Task_Scene2_CreateSprites(u8 taskId)
{
u8 spriteId;
- if (gIntroCharacterGender == 0)
- LoadCompressedSpriteSheet(gIntro2BrendanSpriteSheet);
+ // Load sprite sheets
+ if (sIntroCharacterGender == MALE)
+ LoadCompressedSpriteSheet(gSpriteSheet_IntroBrendan);
else
- LoadCompressedSpriteSheet(gIntro2MaySpriteSheet);
+ LoadCompressedSpriteSheet(gSpriteSheet_IntroMay);
- LoadCompressedSpriteSheet(gIntro2BicycleSpriteSheet);
- LoadCompressedSpriteSheet(gIntro2FlygonSpriteSheet);
+ LoadCompressedSpriteSheet(gSpriteSheet_IntroBicycle);
+ LoadCompressedSpriteSheet(gSpriteSheet_IntroFlygon);
- for (spriteId = 0; spriteId < 3; spriteId++)
- {
- LoadCompressedSpriteSheet(&gIntroPokemonRunningSpriteSheet[spriteId]);
- }
+ // Load sprite palettes
+ for (spriteId = 0; spriteId < ARRAY_COUNT(sSpriteSheet_RunningPokemon) - 1; spriteId++)
+ LoadCompressedSpriteSheet(&sSpriteSheet_RunningPokemon[spriteId]);
+
+ LoadSpritePalettes(gSpritePalettes_IntroPlayerFlygon);
+ LoadSpritePalettes(sSpritePalettes_RunningPokemon);
- LoadSpritePalettes(gIntroBikeAndFlygonPalette);
- LoadSpritePalettes(gIntroPokemonRunningPalette);
- CreateSprite(&gUnknown_085E4BDC, 0x110, 0x80, 0);
- CreateSprite(&gUnknown_085E4BA4, 0x120, 0x6E, 1);
+ // Create Pokémon and player sprites
+ CreateSprite(&sSpriteTemplate_Manectric, DISPLAY_WIDTH + 32, 128, 0);
+ CreateSprite(&sSpriteTemplate_Torchic, DISPLAY_WIDTH + 48, 110, 1);
- if (gIntroCharacterGender == 0)
- spriteId = intro_create_brendan_sprite(0x110, 100);
+ if (sIntroCharacterGender == MALE)
+ spriteId = CreateIntroBrendanSprite(DISPLAY_WIDTH + 32, 100);
else
- spriteId = intro_create_may_sprite(0x110, 100);
-
- gSprites[spriteId].callback = SpriteCB_IntroGraphicsBicycle;
- gSprites[spriteId].anims = gIntroBicycleAnimationCommands;
- gTasks[taskId].data[1] = spriteId;
- CreateSprite(&gUnknown_085E4B40, 0x110, 0x50, 0x4);
- spriteId = intro_create_flygon_sprite(-0x40, 0x3C);
- gSprites[spriteId].callback = SpriteCB_IntroGraphicsFlygon;
- gTasks[taskId].data[2] = spriteId;
+ spriteId = CreateIntroMaySprite(DISPLAY_WIDTH + 32, 100);
+
+ gSprites[spriteId].callback = SpriteCB_PlayerOnBicycle;
+ gSprites[spriteId].anims = sAnims_PlayerBicycle;
+ gTasks[taskId].tPlayerSpriteId = spriteId;
+ CreateSprite(&sSpriteTemplate_Volbeat, DISPLAY_WIDTH + 32, 80, 4);
+ spriteId = CreateIntroFlygonSprite(-64, 60);
+ gSprites[spriteId].callback = SpriteCB_Flygon;
+ gTasks[taskId].tFlygonSpriteId = spriteId;
+
+ // Fade in and start bike ride
BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_WHITEALPHA);
SetVBlankCallback(VBlankCB_Intro);
- gTasks[taskId].data[0] = CreateBicycleAnimationTask(1, 0x4000, 0x400, 0x10);
- sub_817B150(1);
- gTasks[taskId].func = Task_IntroHandleBikeAndFlygonMovement;
+ gTasks[taskId].tBgAnimTaskId = CreateBicycleBgAnimationTask(1, 0x4000, 0x400, 0x10);
+ SetIntroPart2BgCnt(1);
+ gTasks[taskId].func = Task_Scene2_BikeRide;
}
-static void Task_IntroHandleBikeAndFlygonMovement(u8 taskId)
+static void Task_Scene2_BikeRide(u8 taskId)
{
u16 offset;
- if (gIntroFrameCounter == 1856)
+ if (gIntroFrameCounter == TIMER_TORCHIC_EXIT)
{
- gUnknown_0203BD28 = 2;
- // Destroys the CreateBicycleAnimationTask created earlier.
- DestroyTask(gTasks[taskId].data[0]);
+ // Stop the moving scenery/backgrounds, for when the camera fixes on Torchic
+ gIntroCredits_MovingSceneryState = INTROCRED_SCENERY_FROZEN;
+ DestroyTask(gTasks[taskId].tBgAnimTaskId);
}
- if (gIntroFrameCounter > 1946)
+
+ if (gIntroFrameCounter > TIMER_END_SCENE_2)
{
+ // Fade out to next scene
BeginNormalPaletteFade(PALETTES_ALL, 8, 0, 16, RGB_WHITEALPHA);
- gTasks[taskId].func = Task_IntroWaitToSetupPart3;
+ gTasks[taskId].func = Task_Scene2_End;
}
- if (gIntroFrameCounter == 1109)
- gSprites[gTasks[taskId].data[1]].data[0] = 1;
- if (gIntroFrameCounter == 1214)
- gSprites[gTasks[taskId].data[1]].data[0] = 0;
- if (gIntroFrameCounter == 1394)
- gSprites[gTasks[taskId].data[2]].data[0] = 1;
- if (gIntroFrameCounter == 1398)
- gSprites[gTasks[taskId].data[1]].data[0] = 2;
- if (gIntroFrameCounter == 1576)
- gSprites[gTasks[taskId].data[1]].data[0] = 3;
- if (gIntroFrameCounter == 1727)
- gSprites[gTasks[taskId].data[1]].data[0] = 4;
- offset = Sin(gTasks[taskId].data[3] >> 2 & 0x7F, 48);
- gIntroGraphicsFlygonYOffset = offset;
- if (gTasks[taskId].data[3] < 512)
- gTasks[taskId].data[3]++;
- sub_817B540(0);
-}
-
-static void Task_IntroWaitToSetupPart3(u8 taskId)
-{
- if (gIntroFrameCounter > 2068)
- gTasks[taskId].func = Task_IntroLoadPart3Graphics;
-}
-
-static void sub_816D81C(struct Sprite *sprite)
-{
- sprite->data[3] += 4;
- switch (sprite->data[0])
+ // Check for updates to player/flygon sprites
+ // These states are for SpriteCB_PlayerOnBicycle and SpriteCB_Flygon respectively
+ if (gIntroFrameCounter == TIMER_PLAYER_DRIFT_BACK)
+ gSprites[gTasks[taskId].tPlayerSpriteId].sState = 1;
+ if (gIntroFrameCounter == TIMER_PLAYER_MOVE_FORWARD)
+ gSprites[gTasks[taskId].tPlayerSpriteId].sState = 0;
+ if (gIntroFrameCounter == TIMER_FLYGON_ENTER)
+ gSprites[gTasks[taskId].tFlygonSpriteId].sState = 1;
+ if (gIntroFrameCounter == TIMER_PLAYER_MOVE_BACKWARD)
+ gSprites[gTasks[taskId].tPlayerSpriteId].sState = 2;
+ if (gIntroFrameCounter == TIMER_PLAYER_HOLD_POSITION)
+ gSprites[gTasks[taskId].tPlayerSpriteId].sState = 3;
+ if (gIntroFrameCounter == TIMER_PLAYER_EXIT)
+ gSprites[gTasks[taskId].tPlayerSpriteId].sState = 4;
+
+ // Handle flygon's y movement
+ offset = Sin(gTasks[taskId].tFlygonTimer >> 2 & 0x7F, 48);
+ sFlygonYOffset = offset;
+ if (gTasks[taskId].tFlygonTimer < 512)
+ gTasks[taskId].tFlygonTimer++;
+
+ // Alternate colors of the trees
+ CycleSceneryPalette(0);
+}
+
+static void Task_Scene2_End(u8 taskId)
+{
+ if (gIntroFrameCounter > TIMER_START_SCENE_3)
+ gTasks[taskId].func = Task_Scene3_Load;
+}
+
+#define sStateDelay data[1]
+#define sNextState data[2]
+#define sCosYIdx data[3]
+#define sSinXIdx data[4]
+#define sSinYIdx data[5]
+#define sFig8Loops data[6]
+
+enum {
+ VOLBEAT_WAIT_ENTER,
+ VOLBEAT_ENTER,
+ VOLBEAT_ZIP_BACKWARD,
+ VOLBEAT_ZIP_DOWN,
+ VOLBEAT_ZIP_FORWARD,
+ VOLBEAT_INIT_FIGURE_8,
+ VOLBEAT_FIGURE_8,
+ VOLBEAT_EXIT,
+ VOLBEAT_WAIT_STATE
+};
+
+static void SpriteCB_Volbeat(struct Sprite *sprite)
+{
+ sprite->sCosYIdx += 4;
+ switch (sprite->sState)
{
- case 0:
- if (++sprite->data[1] < 180)
+ case VOLBEAT_WAIT_ENTER:
+ if (++sprite->sStateDelay < 180)
break;
- ++sprite->data[0];
- case 1:
- sprite->pos1.x -= 4;
- if (sprite->pos1.x == 0x3C)
+ sprite->sState++;
+ // fallthrough
+ case VOLBEAT_ENTER:
+ sprite->x -= 4;
+ if (sprite->x == 60)
{
- sprite->data[0] = 8;
- sprite->data[1] = 20;
- sprite->data[2] = 2;
+ sprite->sState = VOLBEAT_WAIT_STATE;
+ sprite->sStateDelay = 20;
+ sprite->sNextState = VOLBEAT_ZIP_BACKWARD;
}
break;
- case 2:
- sprite->pos1.x += 8;
- sprite->pos1.y -= 2;
- if (sprite->pos1.x == 0x7C)
+ case VOLBEAT_ZIP_BACKWARD:
+ sprite->x += 8;
+ sprite->y -= 2;
+ if (sprite->x == 124)
{
- sprite->data[0] = 8;
- sprite->data[1] = 20;
- sprite->data[2] = 3;
+ sprite->sState = VOLBEAT_WAIT_STATE;
+ sprite->sStateDelay = 20;
+ sprite->sNextState = VOLBEAT_ZIP_DOWN;
}
break;
- case 3:
- sprite->pos1.y += 4;
- if (sprite->pos1.y == 0x50)
+ case VOLBEAT_ZIP_DOWN:
+ sprite->y += 4;
+ if (sprite->y == 80)
{
- sprite->data[0] = 8;
- sprite->data[1] = 10;
- sprite->data[2] = 4;
+ sprite->sState = VOLBEAT_WAIT_STATE;
+ sprite->sStateDelay = 10;
+ sprite->sNextState = VOLBEAT_ZIP_FORWARD;
}
break;
- case 4:
- sprite->pos1.x -= 8;
- sprite->pos1.y -= 2;
- if (sprite->pos1.x == 0x3C)
+ case VOLBEAT_ZIP_FORWARD:
+ sprite->x -= 8;
+ sprite->y -= 2;
+ if (sprite->x == 60)
{
- sprite->data[0] = 8;
- sprite->data[1] = 10;
- sprite->data[2] = 5;
+ sprite->sState = VOLBEAT_WAIT_STATE;
+ sprite->sStateDelay = 10;
+ sprite->sNextState = VOLBEAT_INIT_FIGURE_8;
}
break;
- case 5:
- sprite->pos1.x += 0x3C;
- sprite->data[4] = 0xC0;
- sprite->data[5] = 0x80;
- sprite->data[6] = 0x3;
- sprite->data[0]++;
- case 6:
- sprite->pos2.x = Sin((u8)sprite->data[4], 0x3C);
- sprite->pos2.y = Sin((u8)sprite->data[5], 0x14);
- sprite->data[4] += 2;
- sprite->data[5] += 4;
- if ((sprite->data[4] & 0xFF) == 0x40)
+ case VOLBEAT_INIT_FIGURE_8:
+ sprite->x += 60;
+ sprite->sSinXIdx = 0xC0;
+ sprite->sSinYIdx = 0x80;
+ sprite->sFig8Loops = 3;
+ sprite->sState++;
+ // fallthrough
+ case VOLBEAT_FIGURE_8:
+ sprite->x2 = Sin((u8)sprite->sSinXIdx, 0x3C);
+ sprite->y2 = Sin((u8)sprite->sSinYIdx, 0x14);
+ sprite->sSinXIdx += 2;
+ sprite->sSinYIdx += 4;
+ if ((sprite->sSinXIdx & 0xFF) == 64)
{
sprite->hFlip = FALSE;
- if (!--sprite->data[6])
+ if (--sprite->sFig8Loops == 0)
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos2.x = 0;
- sprite->data[0]++;
+ sprite->x += sprite->x2;
+ sprite->x2 = 0;
+ sprite->sState++;
}
}
break;
- case 7:
- sprite->pos1.x -= 2;
- sprite->pos2.y = Sin((u8)sprite->data[5], 0x14);
- sprite->data[5] += 4;
- if (sprite->pos1.x < -16)
+ case VOLBEAT_EXIT:
+ sprite->x -= 2;
+ sprite->y2 = Sin((u8)sprite->sSinYIdx, 0x14);
+ sprite->sSinYIdx += 4;
+ if (sprite->x < -16)
DestroySprite(sprite);
break;
- case 8:
- sprite->pos2.y = Cos((u8)sprite->data[3], 2);
- if (!--sprite->data[1])
- sprite->data[0] = sprite->data[2];
+ case VOLBEAT_WAIT_STATE:
+ // Wait for state progression, fly idly until then
+ sprite->y2 = Cos((u8)sprite->sCosYIdx, 2);
+ if (!--sprite->sStateDelay)
+ sprite->sState = sprite->sNextState;
break;
}
}
-static void sub_816D9C0(struct Sprite *sprite)
+#undef sStateDelay
+#undef sNextState
+#undef sCosYIdx
+#undef sSinXIdx
+#undef sSinYIdx
+#undef sFig8Loops
+
+#define sMoveTimer data[1]
+#define sDelay data[2]
+
+static void SpriteCB_Torchic(struct Sprite *sprite)
{
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
- if (gIntroFrameCounter == 1224)
+ if (gIntroFrameCounter == TIMER_TORCHIC_ENTER)
{
- StartSpriteAnim(sprite, 1);
- sprite->data[0]++;
+ StartSpriteAnim(sprite, TORCHIC_ANIM_RUN);
+ sprite->sState++;
}
break;
case 1:
- if (gIntroFrameCounter == 1576)
+ if (gIntroFrameCounter == TIMER_PLAYER_HOLD_POSITION)
{
- StartSpriteAnim(sprite, 0);
- sprite->data[0]++;
+ StartSpriteAnim(sprite, TORCHIC_ANIM_WALK);
+ sprite->sState++;
}
else
{
- sprite->data[1] += 0x40;
- if (sprite->data[1] & 0xFF00)
+ sprite->sMoveTimer += 64;
+ if (sprite->sMoveTimer & 0xFF00)
{
- sprite->pos1.x--;
- sprite->data[1] &= 0xFF;
+ sprite->x--;
+ sprite->sMoveTimer &= 0xFF;
}
}
break;
case 2:
- if (gIntroFrameCounter != 1735)
+ if (gIntroFrameCounter != TIMER_TORCHIC_SPEED_UP)
{
- sprite->data[1] += 0x20;
- if (sprite->data[1] & 0xFF00)
+ sprite->sMoveTimer += 32;
+ if (sprite->sMoveTimer & 0xFF00)
{
- sprite->pos1.x++;
- sprite->data[1] &= 0xFF;
+ sprite->x++;
+ sprite->sMoveTimer &= 0xFF;
}
}
else
{
- StartSpriteAnim(sprite, 1);
- sprite->data[0]++;
- sprite->data[2] = 0x50;
+ StartSpriteAnim(sprite, TORCHIC_ANIM_RUN);
+ sprite->sState++;
+ sprite->sDelay = 80;
}
break;
case 3:
- if (--sprite->data[2])
+ if (--sprite->sDelay)
{
- sprite->data[1] += 0x40;
- if (sprite->data[1] & 0xFF00)
+ sprite->sMoveTimer += 64;
+ if (sprite->sMoveTimer & 0xFF00)
{
- sprite->pos1.x--;
- sprite->data[1] &= 0xFF;
+ sprite->x--;
+ sprite->sMoveTimer &= 0xFF;
}
}
else
{
- StartSpriteAnim(sprite, 2);
- sprite->data[0]++;
+ StartSpriteAnim(sprite, TORCHIC_ANIM_TRIP);
+ sprite->sState++;
}
break;
case 4:
if (sprite->animEnded)
- sprite->pos1.x += 4;
+ sprite->x += 4;
- if (sprite->pos1.x > 336)
+ if (sprite->x > 336)
{
- StartSpriteAnim(sprite, 1);
- sprite->data[0]++;
+ StartSpriteAnim(sprite, TORCHIC_ANIM_RUN);
+ sprite->sState++;
}
break;
case 5:
- if (gIntroFrameCounter > 1855)
- sprite->pos1.x -= 2;
+ if (gIntroFrameCounter >= TIMER_TORCHIC_EXIT)
+ sprite->x -= 2;
break;
}
}
-static void sub_816DAE8(struct Sprite *sprite)
+#undef sMoveTimer
+#undef sDelay
+
+#define sSinIdx data[1]
+#define sCosIdx data[2]
+
+static void SpriteCB_Manectric(struct Sprite *sprite)
{
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
- if (gIntroFrameCounter == 1088)
- sprite->data[0]++;
+ if (gIntroFrameCounter == TIMER_MANECTRIC_ENTER)
+ sprite->sState++;
break;
case 1:
- sprite->pos1.x -= 2;
- if (gIntroFrameCounter != 1168)
+ sprite->x -= 2;
+ if (gIntroFrameCounter != TIMER_MANECTRIC_RUN_CIRCULAR)
break;
- sprite->pos1.y -= 12;
- sprite->data[1] = 0x80;
- sprite->data[2] = 0;
- sprite->data[0]++;
+
+ // Initialize circular pattern running
+ sprite->y -= 12;
+ sprite->sSinIdx = 0x80;
+ sprite->sCosIdx = 0;
+ sprite->sState++;
+ // fallthrough
case 2:
- if (sprite->pos1.x + sprite->pos2.x <= -0x20)
+ if (sprite->x + sprite->x2 <= -32)
{
+ // Manectric is offscreen now, destroy it
DestroySprite(sprite);
}
else
{
- if ((sprite->data[1] & 0xFF) < 0x40)
+ // Run in circular pattern
+ if ((sprite->sSinIdx & 0xFF) < 64)
{
- sprite->pos2.x = Sin((u8)sprite->data[1], 0x10);
+ sprite->x2 = Sin((u8)sprite->sSinIdx, 16);
}
else
{
- if ((sprite->data[1] & 0xFF) == 0x40)
- sprite->pos1.x -= 0x30;
- sprite->pos2.x = Sin((u8)sprite->data[1], 0x40);
+ if ((sprite->sSinIdx & 0xFF) == 64)
+ sprite->x -= 48;
+ sprite->x2 = Sin((u8)sprite->sSinIdx, 64);
}
- sprite->data[1]++;
- sprite->pos2.y = Cos((u8)sprite->data[2], 0xC);
- sprite->data[2]++;
+ sprite->sSinIdx++;
+ sprite->y2 = Cos((u8)sprite->sCosIdx, 12);
+ sprite->sCosIdx++;
}
break;
}
}
-static void Task_IntroLoadPart3Graphics(u8 taskId)
+#undef sSinIdx
+#undef sCosIdx
+
+#define tAlpha data[0]
+#define tZoomDiv data[1]
+#define tZoomDivSpeed data[2]
+
+static void Task_Scene3_Load(u8 taskId)
{
- intro_reset_and_hide_bgs();
- LZ77UnCompVram(gIntro3Pokeball_Gfx, (void *)VRAM);
- LZ77UnCompVram(gIntro3Pokeball_Tilemap, (void *)(BG_CHAR_ADDR(1)));
- LoadPalette(gIntro3PokeballPal, 0, 0x200);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1] = 0;
- gTasks[taskId].data[2] = 0;
+ IntroResetGpuRegs();
+ LZ77UnCompVram(sIntroPokeball_Gfx, (void *)VRAM);
+ LZ77UnCompVram(sIntroPokeball_Tilemap, (void *)(BG_CHAR_ADDR(1)));
+ LoadPalette(sIntroPokeball_Pal, 0, sizeof(sIntroPokeball_Pal));
+ gTasks[taskId].tAlpha = 0;
+ gTasks[taskId].tZoomDiv = 0;
+ gTasks[taskId].tZoomDivSpeed = 0;
gTasks[taskId].data[3] = 0;
PanFadeAndZoomScreen(0x78, 0x50, 0, 0);
ResetSpriteData();
FreeAllSpritePalettes();
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_WHITEALPHA);
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_WHITEALPHA);
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(8) | BGCNT_256COLOR | BGCNT_AFF256x256);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON);
- gTasks[taskId].func = Task_IntroSpinAndZoomPokeball;
+ gTasks[taskId].func = Task_Scene3_SpinPokeball;
gIntroFrameCounter = 0;
m4aSongNumStart(MUS_INTRO_BATTLE);
}
-
-static void Task_IntroSpinAndZoomPokeball(u8 taskId)
+static void Task_Scene3_SpinPokeball(u8 taskId)
{
- gTasks[taskId].data[0] += 0x400;
+ gTasks[taskId].tAlpha += 0x400;
- if (gTasks[taskId].data[1] <= 0x6BF)
+ if (gTasks[taskId].tZoomDiv <= 0x6BF)
{
- gTasks[taskId].data[1] += gTasks[taskId].data[2];
- gTasks[taskId].data[2] += 2;
+ gTasks[taskId].tZoomDiv += gTasks[taskId].tZoomDivSpeed;
+ gTasks[taskId].tZoomDivSpeed += 2;
}
else
{
- gTasks[taskId].func = Task_IntroWaitToSetupPart3LegendsFight;
+ gTasks[taskId].func = Task_Scene3_WaitGroudon;
}
- PanFadeAndZoomScreen(0x78, 0x50, SAFE_DIV(0x10000, gTasks[taskId].data[1]), gTasks[taskId].data[0]);
+ PanFadeAndZoomScreen(0x78, 0x50, SAFE_DIV(0x10000, gTasks[taskId].tZoomDiv), gTasks[taskId].tAlpha);
- if (gIntroFrameCounter == 28)
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_WHITEALPHA);
+ if (gIntroFrameCounter == TIMER_POKEBALL_FADE)
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_WHITEALPHA);
}
-static void Task_IntroWaitToSetupPart3LegendsFight(u8 taskId)
+#undef tAlpha
+#undef tZoomDiv
+#undef tZoomDivSpeed
+
+static void Task_Scene3_WaitGroudon(u8 taskId)
{
- if (gIntroFrameCounter > 43)
- gTasks[taskId].func = Task_IntroLoadGroudonScene;
+ if (gIntroFrameCounter > TIMER_START_LEGENDARIES)
+ gTasks[taskId].func = Task_Scene3_LoadGroudon;
}
-static void Task_IntroLoadGroudonScene(u8 taskId)
+static void Task_Scene3_LoadGroudon(u8 taskId)
{
if (!gPaletteFade.active)
{
- intro_reset_and_hide_bgs();
+ IntroResetGpuRegs();
ResetSpriteData();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 8;
- LZDecompressVram(gIntro3GroudonGfx, (void *)VRAM);
- LZDecompressVram(gIntro3GroudonTilemap, (void *)(BG_CHAR_ADDR(3)));
- LZDecompressVram(gIntro3LegendBgGfx, (void *)(BG_CHAR_ADDR(1)));
- LZDecompressVram(gIntro3GroudonBgTilemap, (void *)(BG_SCREEN_ADDR(28)));
+ LZDecompressVram(gIntroGroudon_Gfx, (void *)VRAM);
+ LZDecompressVram(gIntroGroudon_Tilemap, (void *)(BG_CHAR_ADDR(3)));
+ LZDecompressVram(gIntroLegendBg_Gfx, (void *)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gIntroGroudonBg_Tilemap, (void *)(BG_SCREEN_ADDR(28)));
LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_ROCKS)]);
LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_ROCKS)]);
- CpuCopy16(gIntro3BgPal, gPlttBufferUnfaded, sizeof(gIntro3BgPal));
- gTasks[taskId].func = Task_IntroLoadPart3Graphics1;
+ CpuCopy16(gIntro3Bg_Pal, gPlttBufferUnfaded, sizeof(gIntro3Bg_Pal));
+ gTasks[taskId].func = Task_Scene3_InitGroudonBg;
}
}
-static void Task_IntroLoadPart3Graphics1(u8 taskId)
+#define tWinPos data[0]
+#define tScreenX data[1]
+#define tScreenY data[2]
+#define tZoom data[3]
+
+static void Task_Scene3_InitGroudonBg(u8 taskId)
{
- SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
- SetGpuReg(REG_OFFSET_WIN0V, 0xA0);
- SetGpuReg(REG_OFFSET_WININ, 0x3F);
+ SetGpuReg(REG_OFFSET_WIN0H, DISPLAY_WIDTH);
+ SetGpuReg(REG_OFFSET_WIN0V, DISPLAY_HEIGHT);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_ALL);
SetGpuReg(REG_OFFSET_WINOUT, 0);
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0)
| BGCNT_CHARBASE(0)
@@ -1630,423 +1809,515 @@ static void Task_IntroLoadPart3Graphics1(u8 taskId)
| DISPCNT_BG2_ON
| DISPCNT_OBJ_ON
| DISPCNT_WIN0_ON);
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_WHITEALPHA);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1] = 0xFFA0;
- gTasks[taskId].data[2] = 0xFF51;
- gTasks[taskId].data[3] = 0x100;
- PanFadeAndZoomScreen(0xFFA0, 0xFF51, 0x100, 0);
- gTasks[taskId].func = Task_IntroLoadPart3Graphics2;
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_WHITEALPHA);
+ gTasks[taskId].tWinPos = 0;
+ gTasks[taskId].tScreenX = 0xFFA0;
+ gTasks[taskId].tScreenY = 0xFF51;
+ gTasks[taskId].tZoom = 0x100;
+ PanFadeAndZoomScreen(gTasks[taskId].tScreenX, gTasks[taskId].tScreenY, gTasks[taskId].tZoom, 0);
+ gTasks[taskId].func = Task_Scene3_NarrowWindow;
}
-static void Task_IntroLoadPart3Graphics2(u8 taskId)
+// Before the Groudon scene starts, the black top/bottom edges of the screen
+// come inward for a more 'cinematic' look
+#define NARROW_HEIGHT 32
+static void Task_Scene3_NarrowWindow(u8 taskId)
{
- if (gTasks[taskId].data[0] != 32)
+ if (gTasks[taskId].tWinPos != NARROW_HEIGHT)
{
- gTasks[taskId].data[0] += 4;
- SetGpuReg(REG_OFFSET_WIN0V, (gTasks[taskId].data[0] * 256) - (gTasks[taskId].data[0] - 160));
+ gTasks[taskId].tWinPos += 4;
+ SetGpuReg(REG_OFFSET_WIN0V, (gTasks[taskId].tWinPos * 256) - (gTasks[taskId].tWinPos - DISPLAY_HEIGHT));
}
else
{
- SetGpuReg(REG_OFFSET_WIN0V, 0x2080);
- gTasks[taskId].func = Task_IntroLoadPart3Graphics3;
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(NARROW_HEIGHT, DISPLAY_HEIGHT - NARROW_HEIGHT));
+ gTasks[taskId].func = Task_Scene3_EndNarrowWindow;
}
}
+#undef tWinPos
+#undef tScreenX
+#undef tScreenY
+#undef tZoom
-static void Task_IntroLoadPart3Graphics3(u8 taskId)
+static void Task_Scene3_EndNarrowWindow(u8 taskId)
{
- gTasks[taskId].func = Task_IntroLoadPart3Graphics4;
+ gTasks[taskId].func = Task_Scene3_StartGroudon;
}
-static void Task_IntroLoadPart3Graphics4(u8 taskId)
+static void Task_Scene3_StartGroudon(u8 taskId)
{
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = Task_IntroGroudonScene;
- ScanlineEffect_InitWave(0, 0xA0, 0x4, 4, 1, 4, 0);
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].func = Task_Scene3_Groudon;
+ ScanlineEffect_InitWave(0, 160, 4, 4, 1, 4, 0);
}
-static void Task_IntroGroudonScene(u8 taskId)
+#define tScreenX data[1]
+#define tScreenY data[2]
+#define tZoom data[3]
+#define tYShake data[4]
+#define tTimer data[5]
+#define tDelay data[6]
+#define tTrigIdx data[6] // Re-used
+#define tPalIdx data[7]
+
+static void Task_Scene3_Groudon(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- data[5]++;
- if ((u16)(data[0] - 1) < 7 && data[5] % 2 == 0)
- data[4] ^= 3;
- PanFadeAndZoomScreen(data[1], data[2] + data[4], data[3], 0);
- switch (data[0])
+ tTimer++;
+ if ((u16)(tState - 1) < 7 && tTimer % 2 == 0)
+ tYShake ^= 3;
+ PanFadeAndZoomScreen(tScreenX, tScreenY + tYShake, tZoom, 0);
+ switch (tState)
{
case 0:
- data[1] += 0x10;
- if (data[1] == 0xA0)
+ tScreenX += 16;
+ if (tScreenX == 160)
{
- data[0]++;
- data[6] = 2;
- data[7] = 0x1E2;
+ tState++;
+ tDelay = 2;
+ tPalIdx = 0x1E2;
CreateGroudonRockSprites(taskId);
}
break;
case 1:
- if (--data[6] == 0)
+ if (--tDelay == 0)
{
- data[6] = 2;
- CpuCopy16(&gIntro3BgPal[data[7]], &gPlttBufferFaded[31], sizeof(u16));
- data[7] += 2;
- if (data[7] == 0x1EC)
- data[0]++;
+ tDelay = 2;
+ CpuCopy16(&gIntro3Bg_Pal[tPalIdx], &gPlttBufferFaded[31], sizeof(u16));
+ tPalIdx += 2;
+ if (tPalIdx == 0x1EC)
+ tState++;
}
break;
case 2:
- if (--data[6] == 0)
+ if (--tDelay == 0)
{
- data[6] = 2;
- data[0]++;
+ tDelay = 2;
+ tState++;
}
break;
case 3:
- if (--data[6] == 0)
+ if (--tDelay == 0)
{
- data[6] = 2;
- CpuCopy16(&gIntro3BgPal[data[7]], &gPlttBufferFaded[31], sizeof(u16));
- data[7] -= 2;
- if (data[7] == 0x1E0)
+ tDelay = 2;
+ CpuCopy16(&gIntro3Bg_Pal[tPalIdx], &gPlttBufferFaded[31], sizeof(u16));
+ tPalIdx -= 2;
+ if (tPalIdx == 0x1E0)
{
- data[6] = 8;
- data[0]++;
+ tDelay = 8;
+ tState++;
}
}
break;
case 4:
- if (--data[6] == 0)
+ if (--tDelay == 0)
{
- data[1] = -0x60;
- data[2] = 0xA9;
- data[6] = 3;
- data[0]++;
+ tScreenX = -96;
+ tScreenY = 169;
+ tDelay = 3;
+ tState++;
}
break;
case 5:
- if (--data[6] == 0)
+ if (--tDelay == 0)
{
- data[1] = 0x50;
- data[2] = 0x29;
- data[6] = 0x10;
+ tScreenX = 80;
+ tScreenY = 41;
+ tDelay = 16;
PlayCryInternal(SPECIES_GROUDON, 0, 100, 10, 0);
- data[0]++;
+ tState++;
}
break;
case 6:
- if (--data[6] == 0)
+ if (--tDelay == 0)
{
- data[1] = 0x50;
- data[2] = 0x28;
- data[0]++;
+ tScreenX = 80;
+ tScreenY = 40;
+ tState++;
}
break;
case 7:
- data[1] += 4;
- data[2] += 4;
- data[6] += 0x666;
- data[3] = Sin((data[6] & 0xFF00) >> 8, 0x40) + 0x100;
- if (data[1] == 0x78)
+ tScreenX += 4;
+ tScreenY += 4;
+ tTrigIdx += 0x666;
+ tZoom = Sin((tTrigIdx & 0xFF00) >> 8, 64) + 256;
+ if (tScreenX == 120)
{
BeginNormalPaletteFade(PALETTES_ALL & ~1, 3, 0, 16, RGB_WHITE);
- data[3] = 0x100;
- data[4] = 0;
- data[0]++;
+ tZoom = 256;
+ tYShake = 0;
+ tState++;
}
break;
case 8:
- if (data[3])
- data[3] -= 8;
+ if (tZoom)
+ tZoom -= 8;
else
- data[0]++;
+ tState++;
break;
case 9:
if (!gPaletteFade.active)
{
- gTasks[taskId].func = Task_IntroLoadKyogreScene;
+ gTasks[taskId].func = Task_Scene3_LoadKyogre;
gScanlineEffect.state = 3;
}
break;
}
}
-static void CreateGroudonRockSprites(u8 a0)
+#undef tScreenX
+#undef tScreenY
+#undef tZoom
+#undef tYShake
+#undef tTimer
+#undef tDelay
+#undef tTrigIdx
+#undef tPalIdx
+
+#define sRockId data[1]
+#define sSpeed data[2]
+#define sTimer data[3]
+#define sTaskId data[4]
+
+static void CreateGroudonRockSprites(u8 taskId)
{
int i;
u8 spriteId;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < (int)ARRAY_COUNT(sGroudonRockData); i++)
{
- spriteId = CreateSprite(gAncientPowerRockSpriteTemplate, gIntroGroudonRockData[i][0], 0xA0, i);
- gSprites[spriteId].callback = SpriteCB_IntroGroudonRocks;
+ spriteId = CreateSprite(gAncientPowerRockSpriteTemplate, sGroudonRockData[i][0], DISPLAY_HEIGHT, i);
+ gSprites[spriteId].callback = SpriteCB_GroudonRocks;
gSprites[spriteId].oam.priority = 0;
- gSprites[spriteId].data[1] = i;
- gSprites[spriteId].data[4] = a0;
- StartSpriteAnim(&gSprites[spriteId], gIntroGroudonRockData[i][1]);
+ gSprites[spriteId].sRockId = i;
+ gSprites[spriteId].sTaskId = taskId;
+ StartSpriteAnim(&gSprites[spriteId], sGroudonRockData[i][1]);
}
}
-static void SpriteCB_IntroGroudonRocks(struct Sprite *sprite)
+static void SpriteCB_GroudonRocks(struct Sprite *sprite)
{
- sprite->data[3]++;
- if (sprite->data[3] % 2 == 0)
- sprite->pos2.y ^= 3;
+ // Introduce some wobble to the floating
+ sprite->sTimer++;
+ if (sprite->sTimer % 2 == 0)
+ sprite->y2 ^= 3;
- switch(sprite->data[0])
+ switch(sprite->sState)
{
case 0:
- sprite->data[2] += gIntroGroudonRockData[sprite->data[1]][2];
- sprite->pos1.y -= (sprite->data[2] & 0xFF00) >> 8;
- sprite->data[2] &= 0xFF;
- if (gTasks[sprite->data[4]].data[0] > 7)
- sprite->data[0]++;
+ // Rock floats up
+ sprite->sSpeed += sGroudonRockData[sprite->sRockId][2];
+ sprite->y -= (sprite->sSpeed & 0xFF00) >> 8;
+ sprite->sSpeed &= 0xFF;
+
+ // Check if Groudon scene is ending
+ if (gTasks[sprite->sTaskId].tState > 7)
+ sprite->sState++;
break;
case 1:
- if (sprite->pos1.x < 0x78)
- sprite->pos1.x -= 2;
+ // Scene zooms in, move rock offscreen
+ if (sprite->x < DISPLAY_WIDTH / 2)
+ sprite->x -= 2;
else
- sprite->pos1.x += 2;
+ sprite->x += 2;
- if (sprite->pos1.y < 0x50)
- sprite->pos1.y -= 2;
+ if (sprite->y < DISPLAY_HEIGHT / 2)
+ sprite->y -= 2;
else
- sprite->pos1.y += 2;
+ sprite->y += 2;
break;
}
}
-static void Task_IntroLoadKyogreScene(u8 taskId)
+#undef sRockId
+#undef sSpeed
+#undef sTimer
+#undef sTaskId
+
+#define tScreenX data[1]
+#define tScreenY data[2]
+#define tZoom data[3]
+#define tDelay data[6]
+#define tTrigIdx data[6] // Re-used
+#define tPalIdx data[7]
+
+static void Task_Scene3_LoadKyogre(u8 taskId)
{
ResetSpriteData();
- LZDecompressVram(gIntro3KyogreGfx, (void *)VRAM);
- LZDecompressVram(gIntro3KyogreTilemap, (void *)(BG_CHAR_ADDR(3)));
- LZDecompressVram(gIntro3KyogreBgTilemap, (void *)(BG_SCREEN_ADDR(28)));
- LoadCompressedSpriteSheet(gUnknown_085E4C88);
- LoadSpritePalette(gUnknown_085E4C98);
- BeginNormalPaletteFade(PALETTES_ALL & ~1, 0, 0x10, 0, RGB_WHITEALPHA);
- gTasks[taskId].func = Task_IntroKyogreScene;
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1] = 0x150;
- gTasks[taskId].data[2] = 0x50;
- gTasks[taskId].data[6] = 0x10;
- gTasks[taskId].data[3] = 0x100;
- PanFadeAndZoomScreen(0x150, 0x50, 0x100, 0);
+ LZDecompressVram(gIntroKyogre_Gfx, (void *)VRAM);
+ LZDecompressVram(gIntroKyogre_Tilemap, (void *)(BG_CHAR_ADDR(3)));
+ LZDecompressVram(gIntroKyogreBg_Tilemap, (void *)(BG_SCREEN_ADDR(28)));
+ LoadCompressedSpriteSheet(sSpriteSheet_Bubbles);
+ LoadSpritePalette(sSpritePalette_Bubbles);
+ BeginNormalPaletteFade(PALETTES_ALL & ~1, 0, 16, 0, RGB_WHITEALPHA);
+ gTasks[taskId].func = Task_Scene3_Kyogre;
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tScreenX = 336;
+ gTasks[taskId].tScreenY = 80;
+ gTasks[taskId].tDelay = 16;
+ gTasks[taskId].tZoom = 256;
+ PanFadeAndZoomScreen(gTasks[taskId].tScreenX, gTasks[taskId].tScreenY, gTasks[taskId].tZoom, 0);
ScanlineEffect_InitWave(0, 0xA0, 4, 4, 1, 6, 0);
}
-static void Task_IntroKyogreScene(u8 taskId)
+static void Task_Scene3_Kyogre(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- PanFadeAndZoomScreen(data[1], data[2], data[3], 0);
+ PanFadeAndZoomScreen(tScreenX, tScreenY, tZoom, 0);
- switch (data[0])
+ switch (tState)
{
case 0:
- if (--data[6] != 0)
+ if (--tDelay != 0)
break;
- data[0]++;
+ tState++;
case 1:
- data[6] += 4;
- gTasks[taskId].data[1] = 0x158 - Sin(data[6], 0x100);
- gTasks[taskId].data[2] = 0x54 - Cos(data[6], 0x40);
- if (data[6] == 0x40)
+ tTrigIdx += 4;
+ gTasks[taskId].tScreenX = 344 - Sin(tTrigIdx, 0x100);
+ gTasks[taskId].tScreenY = 84 - Cos(tTrigIdx, 0x40);
+ if (tTrigIdx == 64)
{
- data[6] = 0x19;
- data[7] = 1;
- data[0]++;
- CreateKyogreBubbleSprites_0(0);
+ tDelay = 0x19;
+ tPalIdx = 1;
+ tState++;
+ CreateKyogreBubbleSprites_Body(0);
}
break;
case 2:
- if (--data[6] == 0)
+ if (--tDelay == 0)
{
- gTasks[taskId].data[1] += 0x100;
- gTasks[taskId].data[2] -= 0x102;
- data[6] = 8;
- data[0]++;
- CreateKyogreBubbleSprites_0(0);
- CreateKyogreBubbleSprites_1();
+ gTasks[taskId].tScreenX += 256;
+ gTasks[taskId].tScreenY -= 258;
+ tDelay = 8;
+ tState++;
+ CreateKyogreBubbleSprites_Body(0);
+ CreateKyogreBubbleSprites_Fins();
}
break;
case 3:
- if (--data[6] == 0)
+ if (--tDelay == 0)
{
- gTasks[taskId].data[1] -= 0x100;
- gTasks[taskId].data[2] += 0x102;
- data[6] = 8;
- data[0]++;
+ gTasks[taskId].tScreenX -= 256;
+ gTasks[taskId].tScreenY += 258;
+ tDelay = 8;
+ tState++;
}
break;
case 4:
- if (--data[6] == 0)
+ if (--tDelay == 0)
{
- gTasks[taskId].data[2] -= 0xFC;
- data[6] = 8;
- data[0]++;
+ gTasks[taskId].tScreenY -= 252;
+ tDelay = 8;
+ tState++;
}
break;
case 5:
- if (--data[6] == 0)
+ if (--tDelay == 0)
{
- gTasks[taskId].data[2] += 0xFC;
- if (data[7] != 0)
+ gTasks[taskId].tScreenY += 252;
+ if (tPalIdx != 0)
{
- data[6] = 12;
- data[7]--;
- data[0] = 2;
+ tDelay = 12;
+ tPalIdx--;
+ tState = 2;
}
else
{
- data[6] = 1;
- data[0]++;
+ tDelay = 1;
+ tState++;
PlayCryInternal(SPECIES_KYOGRE, 0, 120, 10, 0);
}
}
break;
case 6:
- if (--data[6] == 0)
+ if (--tDelay == 0)
{
- data[6] = 4;
- data[7] = 0x1EA;
- data[0]++;
+ tDelay = 4;
+ tPalIdx = 0x1EA;
+ tState++;
}
break;
case 7:
- if (--data[6] == 0)
+ if (--tDelay == 0)
{
- data[6] = 4;
- CpuCopy16(&gIntro3BgPal[data[7]], &gPlttBufferFaded[47], sizeof(u16));
- data[7] -= 2;
- if (data[7] == 0x1E0)
- data[0]++;
+ tDelay = 4;
+ CpuCopy16(&gIntro3Bg_Pal[tPalIdx], &gPlttBufferFaded[47], sizeof(u16));
+ tPalIdx -= 2;
+ if (tPalIdx == 0x1E0)
+ tState++;
}
break;
case 8:
- if (--data[6] == 0)
+ if (--tDelay == 0)
{
- data[6] = 4;
- data[7] = 0x1E2;
- data[0]++;
+ tDelay = 4;
+ tPalIdx = 0x1E2;
+ tState++;
}
break;
case 9:
- if (--data[6] == 0)
+ if (--tDelay == 0)
{
- data[6] = 4;
- CpuCopy16(&gIntro3BgPal[data[7]], &gPlttBufferFaded[47], sizeof(u16));
- data[7] += 2;
- if (data[7] == 0x1EE)
+ tDelay = 4;
+ CpuCopy16(&gIntro3Bg_Pal[tPalIdx], &gPlttBufferFaded[47], sizeof(u16));
+ tPalIdx += 2;
+ if (tPalIdx == 0x1EE)
{
- data[6] = 0x10;
- data[0]++;
+ tDelay = 16;
+ tState++;
}
}
break;
case 10:
- if (--data[6] == 0)
+ if (--tDelay == 0)
{
- data[6] = 0;
- data[0]++;
- CreateKyogreBubbleSprites_0(taskId);
+ tTrigIdx = 0;
+ tState++;
+ CreateKyogreBubbleSprites_Body(taskId);
}
break;
case 11:
- data[6] += 4;
- data[3] -= 8;
- gTasks[taskId].data[1] = Sin(data[6], 0x3C) + 0x58;
- if (data[6] == 0x40)
+ tTrigIdx += 4;
+ tZoom -= 8;
+ gTasks[taskId].tScreenX = Sin(tTrigIdx, 0x3C) + 88;
+ if (tTrigIdx == 64)
{
BeginNormalPaletteFade(PALETTES_ALL & ~1, 3, 0, 16, RGB_WHITE);
- data[0]++;
+ tState++;
}
break;
case 12:
- data[6] += 4;
- data[3] -= 8;
- gTasks[taskId].data[1] = Sin(data[6], 0x14) + 0x80;
- if (data[6] == 0x80)
- data[0]++;
+ tTrigIdx += 4;
+ tZoom -= 8;
+ gTasks[taskId].tScreenX = Sin(tTrigIdx, 0x14) + 128;
+ if (tTrigIdx == 128)
+ tState++;
break;
case 13:
if (!gPaletteFade.active)
{
- gTasks[taskId].func = Task_IntroLoadClouds1;
+ gTasks[taskId].func = Task_Scene3_LoadClouds1;
gScanlineEffect.state = 3;
}
break;
}
}
-static void CreateKyogreBubbleSprites_0(u8 taskId)
+#undef tScreenX
+#undef tScreenY
+#undef tZoom
+#undef tDelay
+#undef tTrigIdx
+#undef tPalIdx
+
+#define sSinIdx data[1]
+#define sBaseY data[2]
+#define sTaskId data[5]
+#define sDelay data[6]
+#define sUnk data[7] // Never read
+
+// taskId is used inconsistently for these two functions.
+// The sprite callback for the bubbles will always read it, unless delay is 0 to
+// start (it never is), but the first function is often passed 0 instead of a
+// taskId, and the second function doesn't take/assign a taskId at all.
+// The only time an actual taskId is given is when it actually needs the
+// result of reading it, to zoom in at the end of the scene.
+
+// Creates bubbles at positions spread across Kyogre's body
+static void CreateKyogreBubbleSprites_Body(u8 taskId)
{
int i;
u8 spriteId;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < NUM_BUBBLES_IN_SET; i++)
{
- spriteId = CreateSprite(&gUnknown_085E4D14, gIntroKyogreBubbleData[i][0], gIntroKyogreBubbleData[i][1], i);
+ spriteId = CreateSprite(&sSpriteTemplate_Bubbles,
+ sKyogreBubbleData[i][0],
+ sKyogreBubbleData[i][1],
+ i);
gSprites[spriteId].invisible = TRUE;
- gSprites[spriteId].data[5] = taskId;
- gSprites[spriteId].data[6] = gIntroKyogreBubbleData[i][2];
- gSprites[spriteId].data[7] = 0x40;
+ gSprites[spriteId].sTaskId = taskId;
+ gSprites[spriteId].sDelay = sKyogreBubbleData[i][2];
+ gSprites[spriteId].sUnk = 64;
}
}
-static void CreateKyogreBubbleSprites_1(void)
+// Creates bubbles at positions around Kyogre's fins, for when it's moving them
+static void CreateKyogreBubbleSprites_Fins(void)
{
int i;
u8 spriteId;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < NUM_BUBBLES_IN_SET; i++)
{
- spriteId = CreateSprite(&gUnknown_085E4D14, gIntroKyogreBubbleData[i + 6][0], gIntroKyogreBubbleData[i + 6][1], i);
+ spriteId = CreateSprite(&sSpriteTemplate_Bubbles,
+ sKyogreBubbleData[i + NUM_BUBBLES_IN_SET][0],
+ sKyogreBubbleData[i + NUM_BUBBLES_IN_SET][1],
+ i);
gSprites[spriteId].invisible = TRUE;
- gSprites[spriteId].data[6] = gIntroKyogreBubbleData[i][2];
- gSprites[spriteId].data[7] = 0x40;
+#ifdef BUGFIX
+ gSprites[spriteId].sDelay = sKyogreBubbleData[i + NUM_BUBBLES_IN_SET][2];
+#else
+ gSprites[spriteId].sDelay = sKyogreBubbleData[i][2]; // Using the wrong set of delays here
+#endif
+ gSprites[spriteId].sUnk = 64;
}
}
-static void SpriteCB_IntroKyogreBubbles(struct Sprite *sprite)
+static void SpriteCB_KyogreBubbles(struct Sprite *sprite)
{
- switch(sprite->data[0])
+ switch(sprite->sState)
{
case 0:
- if (sprite->data[6] == 0)
+ if (sprite->sDelay == 0)
{
- sprite->data[1] = (sprite->data[1] + 11) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[1], 4);
- sprite->data[2] += 0x30;
- sprite->pos2.y = -(sprite->data[2] >> 8);
+ // Animation has started, float bubbles up
+ sprite->sSinIdx = (sprite->sSinIdx + 11) & 0xFF;
+ sprite->x2 = Sin(sprite->sSinIdx, 4);
+ sprite->sBaseY += 48;
+ sprite->y2 = -(sprite->sBaseY >> 8);
if (sprite->animEnded)
DestroySprite(sprite);
}
- else if (--sprite->data[6] == 0)
+ else if (--sprite->sDelay == 0)
{
+ // Start bubble animation after delay has finished
StartSpriteAnim(sprite, 0);
sprite->invisible = FALSE;
}
- if (gTasks[sprite->data[5]].data[0] > 11)
- sprite->data[0]++;
+
+ // Check if Kyogre scene is ending
+ // For all but the last bubbles, sTaskId isn't actually set
+ if (gTasks[sprite->sTaskId].tState > 11)
+ sprite->sState++;
break;
case 1:
- if (sprite->pos1.x < 120)
- sprite->pos1.x -= 3;
+ // Scene zooms in, move bubbles offscreen
+ if (sprite->x < DISPLAY_WIDTH / 2)
+ sprite->x -= 3;
else
- sprite->pos1.x += 3;
+ sprite->x += 3;
- if (sprite->pos1.y < 80)
- sprite->pos1.y -= 3;
+ if (sprite->y < DISPLAY_HEIGHT / 2)
+ sprite->y -= 3;
else
- sprite->pos1.y += 3;
- if ((u16)(sprite->pos1.y - 20) > 140)
+ sprite->y += 3;
+
+ if ((u16)(sprite->y - 20) > DISPLAY_HEIGHT - 20)
DestroySprite(sprite);
break;
}
}
-static void Task_IntroLoadClouds1(u8 taskId)
+#undef sSinIdx
+#undef sBaseY
+#undef sTaskId
+#undef sDelay
+#undef sUnk
+
+static void Task_Scene3_LoadClouds1(u8 taskId)
{
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0
| BLDCNT_TGT1_BG1
@@ -2082,183 +2353,206 @@ static void Task_IntroLoadClouds1(u8 taskId)
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
SetGpuReg(REG_OFFSET_BG2HOFS, 0);
SetGpuReg(REG_OFFSET_BG2VOFS, 0);
- LZDecompressVram(gIntro3CloudsGfx, (void *)VRAM);
- LZDecompressVram(gIntro3CloudsGfx, (void *)(BG_CHAR_ADDR(1)));
- LZDecompressVram(gIntro3Clouds3Tilemap, (void *)(BG_SCREEN_ADDR(28)));
- gTasks[taskId].func = Task_IntroLoadClouds2;
+ LZDecompressVram(gIntroClouds_Gfx, (void *)VRAM);
+ LZDecompressVram(gIntroClouds_Gfx, (void *)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gIntroCloudsSun_Tilemap, (void *)(BG_SCREEN_ADDR(28)));
+ gTasks[taskId].func = Task_Scene3_LoadClouds2;
}
-static void Task_IntroLoadClouds2(u8 taskId)
+static void Task_Scene3_LoadClouds2(u8 taskId)
{
- LZDecompressVram(gIntro3Clouds1Tilemap, (void *)(BG_CHAR_ADDR(3)));
- LZDecompressVram(gIntro3Clouds2Tilemap, (void *)(BG_SCREEN_ADDR(26)));
- gTasks[taskId].func = Task_IntroLoadClouds3;
+ LZDecompressVram(gIntroCloudsLeft_Tilemap, (void *)(BG_CHAR_ADDR(3)));
+ LZDecompressVram(gIntroCloudsRight_Tilemap, (void *)(BG_SCREEN_ADDR(26)));
+ gTasks[taskId].func = Task_Scene3_InitClouds;
}
-static void Task_IntroLoadClouds3(u8 taskId)
+#define tCloudPos data[6]
+
+static void Task_Scene3_InitClouds(u8 taskId)
{
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
SetGpuReg(REG_OFFSET_BLDY, 0);
- gTasks[taskId].func = Task_IntroCloudScene;
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[6] = 16;
+ gTasks[taskId].func = Task_Scene3_Clouds;
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tCloudPos = 16;
}
-static void Task_IntroCloudScene(u8 taskId)
+// Clouds coming in from the sides before Rayquaza appears
+static void Task_Scene3_Clouds(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- SetGpuReg(REG_OFFSET_BG0HOFS, (data[6] >> 8));
- SetGpuReg(REG_OFFSET_BG1HOFS, -(data[6] >> 8));
+ // Left clouds are on BG0, right clouds are on BG1
+ SetGpuReg(REG_OFFSET_BG0HOFS, (tCloudPos >> 8));
+ SetGpuReg(REG_OFFSET_BG1HOFS, -(tCloudPos >> 8));
- switch (data[0])
+ switch (tState)
{
case 0:
- if (--data[6] == 0)
+ // Cloud position is used briefly as a delay, before
+ // the scene has faded in from white
+ if (--tCloudPos == 0)
{
+ // Start fade in from white, set cloud starting positions
BeginNormalPaletteFade(PALETTES_ALL & ~1, 0, 16, 0, RGB_WHITEALPHA);
- data[6] = 0x5000;
- data[0]++;
+ tCloudPos = 80 << 8;
+ tState++;
}
break;
case 1:
- if (data[6] == 0x2800)
+ // Start fading out
+ if (tCloudPos == 40 << 8)
BeginNormalPaletteFade(PALETTES_BG & ~1, 3, 0, 16, RGB(9, 10, 10));
- if (data[6] != 0)
- data[6] -= 0x80;
+ // Move clouds inward toward each other
+ if (tCloudPos != 0)
+ tCloudPos -= 128;
else if (!gPaletteFade.active)
- gTasks[taskId].func = Task_IntroLoadRayquazaLightningScene;
+ gTasks[taskId].func = Task_Scene3_LoadLightning;
break;
}
}
+#undef tCloudPos
+
+#define tDelay data[6]
+#define tTimer data[7]
-static void Task_IntroLoadRayquazaLightningScene(u8 taskId)
+static void Task_Scene3_LoadLightning(u8 taskId)
{
- LZDecompressVram(gIntro3RayquazaTilemap, (void *)(BG_SCREEN_ADDR(28)));
- LZDecompressVram(gIntro3Clouds4Tilemap, (void *)(BG_CHAR_ADDR(3)));
- LZDecompressVram(gIntro3RayquazaGfx, (void *)(BG_CHAR_ADDR(1)));
- LZDecompressVram(gIntro3Clouds2Gfx, (void *)VRAM);
+ LZDecompressVram(gIntroRayquaza_Tilemap, (void *)(BG_SCREEN_ADDR(28)));
+ LZDecompressVram(gIntroRayquazaClouds_Tilemap, (void *)(BG_CHAR_ADDR(3)));
+ LZDecompressVram(gIntroRayquaza_Gfx, (void *)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gIntroRayquazaClouds_Gfx, (void *)VRAM);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0
| DISPCNT_OBJ_1D_MAP
| DISPCNT_BG0_ON
| DISPCNT_BG2_ON
| DISPCNT_OBJ_ON
| DISPCNT_WIN0_ON);
- gTasks[taskId].func = Task_IntroRayquazaLightningScene;
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[6] = 1;
- gTasks[taskId].data[7] = 0;
- LoadCompressedSpriteSheetUsingHeap(gIntroRayquazaLightningSpriteSheet);
- LoadSpritePalettes(gIntroRayquazaLightningPalette);
+ gTasks[taskId].func = Task_Scene3_Lightning;
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tDelay = 1;
+ gTasks[taskId].tTimer = 0;
+ LoadCompressedSpriteSheetUsingHeap(sSpriteSheet_Lightning);
+ LoadSpritePalettes(sSpritePalette_Lightning);
}
-static void Task_IntroRayquazaLightningScene(u8 taskId)
+static void Task_Scene3_Lightning(u8 taskId)
{
s16 *data = gTasks[taskId].data;
u8 spriteId;
- switch (data[0])
+ switch (tState)
{
case 0:
- if (--data[6] == 0)
+ if (--tDelay == 0)
{
- CreateSprite(&gIntroLightningSprite, 200, 48, 0);
- spriteId = CreateSprite(&gIntroLightningSprite, 200, 80, 1);
+ // Do first lightning bolt
+ CreateSprite(&sSpriteTemplate_Lightning, 200, 48, 0);
+ spriteId = CreateSprite(&sSpriteTemplate_Lightning, 200, 80, 1);
StartSpriteAnim(&gSprites[spriteId], 1);
- spriteId = CreateSprite(&gIntroLightningSprite, 200, 112, 2);
+ spriteId = CreateSprite(&sSpriteTemplate_Lightning, 200, 112, 2);
StartSpriteAnim(&gSprites[spriteId], 2);
- data[0]++;
- data[6] = 72;
+ tState++;
+ tDelay = 72;
}
break;
case 1:
- if (--data[6] == 0)
+ if (--tDelay == 0)
{
- CreateSprite(&gIntroLightningSprite, 40, 48, 0);
- spriteId = CreateSprite(&gIntroLightningSprite, 40, 80, 1);
+ // Do second lightning bolt
+ CreateSprite(&sSpriteTemplate_Lightning, 40, 48, 0);
+ spriteId = CreateSprite(&sSpriteTemplate_Lightning, 40, 80, 1);
StartSpriteAnim(&gSprites[spriteId], 1);
- spriteId = CreateSprite(&gIntroLightningSprite, 40, 112, 2);
+ spriteId = CreateSprite(&sSpriteTemplate_Lightning, 40, 112, 2);
StartSpriteAnim(&gSprites[spriteId], 2);
- data[0]++;
- data[6] = 48;
+ tState++;
+ tDelay = 48;
}
break;
case 2:
- if (--data[6] == 0)
- gTasks[taskId].func = Task_IntroLoadRayquazaGlowScene;
+ if (--tDelay == 0)
+ gTasks[taskId].func = Task_Scene3_LoadRayquazaAttack;
break;
}
}
-static void SpriteCB_IntroRayquazaLightning(struct Sprite *sprite)
+#define sPalIdx data[1]
+#define sDelay data[2]
+
+static void SpriteCB_Lightning(struct Sprite *sprite)
{
if (sprite->animEnded)
sprite->invisible = TRUE;
- switch(sprite->data[0])
+ switch(sprite->sState)
{
case 0:
- sprite->data[1] = 0x1C2;
- sprite->data[0]++;
+ sprite->sPalIdx = 0x1C2;
+ sprite->sState++;
case 1:
- CpuCopy16(&gIntro3BgPal[sprite->data[1]], &gPlttBufferFaded[93], 2);
- sprite->data[1] += 2;
- if (sprite->data[1] != 0x1CE)
+ CpuCopy16(&gIntro3Bg_Pal[sprite->sPalIdx], &gPlttBufferFaded[93], 2);
+ sprite->sPalIdx += 2;
+ if (sprite->sPalIdx != 0x1CE)
break;
- sprite->data[1] = 0x1CC;
- sprite->data[2] = 4;
- sprite->data[0]++;
+ sprite->sPalIdx = 0x1CC;
+ sprite->sDelay = 4;
+ sprite->sState++;
case 2:
- if (--sprite->data[2] == 0)
+ if (--sprite->sDelay == 0)
{
- sprite->data[2] = 4;
- CpuCopy16(&gIntro3BgPal[sprite->data[1]], &gPlttBufferFaded[93], 2);
- sprite->data[1] -= 2;
- if (sprite->data[1] == 0x1C0)
+ sprite->sDelay = 4;
+ CpuCopy16(&gIntro3Bg_Pal[sprite->sPalIdx], &gPlttBufferFaded[93], 2);
+ sprite->sPalIdx -= 2;
+ if (sprite->sPalIdx == 0x1C0)
DestroySprite(sprite);
}
break;
}
}
-static void Task_IntroLoadRayquazaGlowScene(u8 taskId)
+#undef sPalIdx
+#undef sDelay
+
+#define tRayquazaTaskId data[4]
+
+static void Task_Scene3_LoadRayquazaAttack(u8 taskId)
{
- u8 newTaskId;
+ u8 attackTaskId;
- LoadCompressedSpriteSheet(gIntroRayquazaGlowSpriteSheet);
- LoadSpritePalettes(gIntroRayquazaGlowPalette);
+ LoadCompressedSpriteSheet(sSpriteSheet_RayquazaOrb);
+ LoadSpritePalettes(sSpritePalette_RayquazaOrb);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0
| DISPCNT_OBJ_1D_MAP
| DISPCNT_BG0_ON
| DISPCNT_BG2_ON
| DISPCNT_OBJ_ON
| DISPCNT_WIN0_ON);
- gTasks[taskId].func = Task_IntroRayquazaGlowScene_0;
+ gTasks[taskId].func = Task_Scene3_Rayquaza;
BeginNormalPaletteFade(PALETTES_BG & ~(0x21), 0, 16, 0, RGB(9, 10, 10));
- gTasks[taskId].data[0] = 0;
+ gTasks[taskId].tState = 0;
gTasks[taskId].data[1] = 0xA8;
gTasks[taskId].data[2] = -0x10;
gTasks[taskId].data[3] = -0x88;
gTasks[taskId].data[4] = -0x10;
- newTaskId = CreateTask(Task_IntroRayquazaGlowScene_1, 0);
- gTasks[newTaskId].data[4] = taskId;
+ attackTaskId = CreateTask(Task_RayquazaAttack, 0);
+ gTasks[attackTaskId].tRayquazaTaskId = taskId;
}
-static void Task_IntroRayquazaGlowScene_0(u8 taskId)
+static void Task_Scene3_Rayquaza(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if (data[7] % 2 == 0)
+ if (tTimer % 2 == 0)
data[6] ^= 2;
- data[7]++;
+ tTimer++;
- switch(data[0])
+ switch(tState)
{
case 0:
- if ((data[7] & 1) != 0)
+ if ((tTimer & 1) != 0)
{
data[1] -= 2;
data[2]++;
@@ -2267,12 +2561,12 @@ static void Task_IntroRayquazaGlowScene_0(u8 taskId)
}
if (data[1] == 0x68)
{
- data[0]++;
+ tState++;
data[5] = 1;
}
break;
case 1:
- data[0]++;
+ tState++;
data[5] = 4;
break;
case 2:
@@ -2283,7 +2577,7 @@ static void Task_IntroRayquazaGlowScene_0(u8 taskId)
if (!gPaletteFade.active)
{
data[5] = 0x8C;
- data[0]++;
+ tState++;
}
break;
case 3:
@@ -2292,6 +2586,8 @@ static void Task_IntroRayquazaGlowScene_0(u8 taskId)
break;
}
}
+#undef tDelay
+#undef tTimer
static void Task_EndIntroMovie(u8 taskId)
{
@@ -2299,24 +2595,23 @@ static void Task_EndIntroMovie(u8 taskId)
SetMainCallback2(MainCB2_EndIntro);
}
-static void Task_IntroRayquazaGlowScene_1(u8 taskId)
+static void Task_RayquazaAttack(u8 taskId)
{
- // Note: data[4] contains the taskId of Task_IntroRayquazaGlowScene_0
u8 spriteId;
s16 *data = gTasks[taskId].data;
data[2]++;
- switch(data[0])
+ switch(tState)
{
case 0:
if ((data[2] & 1) != 0)
{
- CpuCopy16(&gIntro3BgPal[0x1A2 + data[1] * 2], &gPlttBufferFaded[94], 2);
+ CpuCopy16(&gIntro3Bg_Pal[0x1A2 + data[1] * 2], &gPlttBufferFaded[94], 2);
data[1]++;
}
if (data[1] == 6)
{
- data[0]++;
+ tState++;
data[1] = 0;
data[3] = 10;
}
@@ -2326,12 +2621,12 @@ static void Task_IntroRayquazaGlowScene_1(u8 taskId)
{
if ((data[2] & 1) != 0)
{
- CpuCopy16(&gIntro3BgPal[0x1A2 + data[1] * 2], &gPlttBufferFaded[88], 2);
+ CpuCopy16(&gIntro3Bg_Pal[0x1A2 + data[1] * 2], &gPlttBufferFaded[88], 2);
data[1]++;
}
if (data[1] == 6)
{
- data[0]++;
+ tState++;
data[3] = 10;
}
}
@@ -2345,16 +2640,16 @@ static void Task_IntroRayquazaGlowScene_1(u8 taskId)
{
if ((data[2] & 1) != 0)
{
- CpuCopy16(&gIntro3BgPal[0x182 + data[1] * 2], &gPlttBufferFaded[92], 2);
+ CpuCopy16(&gIntro3Bg_Pal[0x182 + data[1] * 2], &gPlttBufferFaded[92], 2);
data[1]++;
}
if (data[1] == 6)
{
- spriteId = CreateSprite(&gIntroRayquazaHyperbeamSprite, 120, 88, 15);
+ spriteId = CreateSprite(&sSpriteTemplate_RayquazaOrb, 120, 88, 15);
PlaySE(SE_INTRO_BLAST);
gSprites[spriteId].invisible = TRUE;
- gSprites[spriteId].data[3] = data[4];
- data[0]++;
+ gSprites[spriteId].data[3] = tRayquazaTaskId;
+ tState++;
data[3] = 16;
}
}
@@ -2369,13 +2664,13 @@ static void Task_IntroRayquazaGlowScene_1(u8 taskId)
if (--data[3] != 0)
{
BlendPalette(0x50, 16, data[3], RGB(9, 10, 10));
- CpuCopy16(&gIntro3BgPal[0x1AC], &gPlttBufferFaded[94], 2);
- CpuCopy16(&gIntro3BgPal[0x1AC], &gPlttBufferFaded[88], 2);
- CpuCopy16(&gIntro3BgPal[0x18C], &gPlttBufferFaded[92], 2);
+ CpuCopy16(&gIntro3Bg_Pal[0x1AC], &gPlttBufferFaded[94], 2);
+ CpuCopy16(&gIntro3Bg_Pal[0x1AC], &gPlttBufferFaded[88], 2);
+ CpuCopy16(&gIntro3Bg_Pal[0x18C], &gPlttBufferFaded[92], 2);
}
else
{
- data[0]++;
+ tState++;
data[3] = 53;
}
}
@@ -2384,7 +2679,7 @@ static void Task_IntroRayquazaGlowScene_1(u8 taskId)
if (--data[3] == 0)
{
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_WHITE);
- data[0]++;
+ tState++;
}
break;
case 5:
@@ -2394,7 +2689,7 @@ static void Task_IntroRayquazaGlowScene_1(u8 taskId)
}
}
-static void intro_reset_and_hide_bgs(void)
+static void IntroResetGpuRegs(void)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
SetGpuReg(REG_OFFSET_BG3HOFS, 0);
@@ -2410,9 +2705,9 @@ static void intro_reset_and_hide_bgs(void)
SetGpuReg(REG_OFFSET_BLDY, 0);
}
-static void Task_IntroWaterDrops_1(u8 taskId)
+static void Task_BlendLogoIn(u8 taskId)
{
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 0:
default:
@@ -2423,10 +2718,10 @@ static void Task_IntroWaterDrops_1(u8 taskId)
| BLDCNT_TGT2_BG3
| BLDCNT_TGT2_OBJ
| BLDCNT_TGT2_BD);
- SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[31]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gTitleScreenAlphaBlend[31]);
SetGpuReg(REG_OFFSET_BLDY, 0);
- gTasks[taskId].data[1] = 0x40;
- gTasks[taskId].data[0]++;
+ gTasks[taskId].data[1] = ARRAY_COUNT(gTitleScreenAlphaBlend);
+ gTasks[taskId].tState++;
break;
case 1:
if (gTasks[taskId].data[1] != 0)
@@ -2435,13 +2730,13 @@ static void Task_IntroWaterDrops_1(u8 taskId)
gTasks[taskId].data[1]--;
tmp = gTasks[taskId].data[1] / 2;
- SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[tmp]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gTitleScreenAlphaBlend[tmp]);
}
else
{
- SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[0]);
- gTasks[taskId].data[1] = 0x10;
- gTasks[taskId].data[0]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, gTitleScreenAlphaBlend[0]);
+ gTasks[taskId].data[1] = ARRAY_COUNT(gTitleScreenAlphaBlend) / 4;
+ gTasks[taskId].tState++;
}
break;
case 2:
@@ -2453,9 +2748,9 @@ static void Task_IntroWaterDrops_1(u8 taskId)
}
}
-static void Task_IntroWaterDrops_2(u8 taskId)
+static void Task_BlendLogoOut(u8 taskId)
{
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 0:
default:
@@ -2466,25 +2761,25 @@ static void Task_IntroWaterDrops_2(u8 taskId)
| BLDCNT_TGT2_BG3
| BLDCNT_TGT2_OBJ
| BLDCNT_TGT2_BD);
- SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[0]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gTitleScreenAlphaBlend[0]);
SetGpuReg(REG_OFFSET_BLDY, 0);
gTasks[taskId].data[1] = 0;
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
break;
case 1:
- if (gTasks[taskId].data[1] < 62)
+ if (gTasks[taskId].data[1] < (int)ARRAY_COUNT(gTitleScreenAlphaBlend) - 2)
{
u8 tmp;
gTasks[taskId].data[1]++;
tmp = gTasks[taskId].data[1] / 2;
- SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[tmp]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gTitleScreenAlphaBlend[tmp]);
}
else
{
- SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[31]);
- gTasks[taskId].data[1] = 0x10;
- gTasks[taskId].data[0]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, gTitleScreenAlphaBlend[31]);
+ gTasks[taskId].data[1] = ARRAY_COUNT(gTitleScreenAlphaBlend) / 4;
+ gTasks[taskId].tState++;
}
break;
case 2:
@@ -2526,9 +2821,9 @@ void PanFadeAndZoomScreen(u16 screenX, u16 screenY, u16 zoom, u16 alpha)
SetGpuReg(REG_OFFSET_BG2Y_H, dest.dy >> 16);
}
-static void sub_816F318(struct Sprite *sprite)
+static void SpriteCB_WaterDrop_Ripple(struct Sprite *sprite)
{
- u8 r0;
+ u8 palNum;
if (sprite->data[2] >= 192)
{
@@ -2541,10 +2836,10 @@ static void sub_816F318(struct Sprite *sprite)
sprite->invisible = FALSE;
SetOamMatrix(sprite->data[1], sprite->data[2], 0, 0, sprite->data[2]);
sprite->data[2] = (sprite->data[2] * 95) / 100;
- r0 = (sprite->data[2] - 192) / 128 + 9;
- if (r0 > 15)
- r0 = 15;
- sprite->oam.paletteNum = r0;
+ palNum = (sprite->data[2] - 192) / 128 + 9;
+ if (palNum > 15)
+ palNum = 15;
+ sprite->oam.paletteNum = palNum;
}
}
else
@@ -2553,46 +2848,47 @@ static void sub_816F318(struct Sprite *sprite)
}
}
-static void sub_816F3A4(struct Sprite *sprite)
+static void SpriteCB_WaterDropHalf(struct Sprite *sprite)
{
if (gSprites[sprite->data[7]].data[7] != 0)
{
sprite->invisible = TRUE;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- StartSpriteAnim(sprite, 3);
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ StartSpriteAnim(sprite, DROP_ANIM_RIPPLE);
sprite->data[2] = 1024;
sprite->data[3] = 8 * (sprite->data[1] & 3);
- sprite->callback = sub_816F318;
+ sprite->callback = SpriteCB_WaterDrop_Ripple;
sprite->oam.shape = SPRITE_SHAPE(64x32);
sprite->oam.size = SPRITE_SIZE(64x32);
CalcCenterToCornerVec(sprite, SPRITE_SHAPE(64x32), SPRITE_SIZE(64x32), ST_OAM_AFFINE_ERASE);
}
else
{
- sprite->pos2.x = gSprites[sprite->data[7]].pos2.x;
- sprite->pos2.y = gSprites[sprite->data[7]].pos2.y;
- sprite->pos1.x = gSprites[sprite->data[7]].pos1.x;
- sprite->pos1.y = gSprites[sprite->data[7]].pos1.y;
+ sprite->x2 = gSprites[sprite->data[7]].x2;
+ sprite->y2 = gSprites[sprite->data[7]].y2;
+ sprite->x = gSprites[sprite->data[7]].x;
+ sprite->y = gSprites[sprite->data[7]].y;
}
}
-static void sub_816F454(struct Sprite *sprite)
+static void SpriteCB_WaterDrop(struct Sprite *sprite)
{
- if (sprite->data[0] != 0)
- sprite->callback = sub_816F46C;
+ // Wait for sState to be modified by Task_Scene1_WaterDrops
+ if (sprite->sState != 0)
+ sprite->callback = SpriteCB_WaterDrop_Slide;
}
-static void sub_816F46C(struct Sprite *sprite)
+static void SpriteCB_WaterDrop_Slide(struct Sprite *sprite)
{
- if (sprite->pos1.x <= 116)
+ if (sprite->x <= 116)
{
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos1.x += 4;
- sprite->pos2.x = -4;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x += 4;
+ sprite->x2 = -4;
sprite->data[4] = 128;
- sprite->callback = sub_816F5B4;
+ sprite->callback = SpriteCB_WaterDrop_ReachLeafEnd;
}
else
{
@@ -2613,10 +2909,10 @@ static void sub_816F46C(struct Sprite *sprite)
sin1 = gSineTable[(u8)data4];
sin2 = gSineTable[(u8)(data4 + 64)];
sprite->data[4] += 2;
- sprite->pos2.y = sin1 / 32;
- sprite->pos1.x--;
- if (sprite->pos1.x & 1)
- sprite->pos1.y++;
+ sprite->y2 = sin1 / 32;
+ sprite->x--;
+ if (sprite->x & 1)
+ sprite->y++;
temp = -sin2 / 16;
data2 = sprite->data[2];
data3 = sprite->data[3];
@@ -2632,28 +2928,27 @@ static void sub_816F46C(struct Sprite *sprite)
}
}
-static void sub_816F5B4(struct Sprite *sprite)
+static void SpriteCB_WaterDrop_ReachLeafEnd(struct Sprite *sprite)
{
SetOamMatrix(sprite->data[1], sprite->data[6] + 64, 0, 0, sprite->data[6] + 64);
SetOamMatrix(sprite->data[1] + 1, sprite->data[6] + 64, 0, 0, sprite->data[6] + 64);
SetOamMatrix(sprite->data[1] + 2, sprite->data[6] + 64, 0, 0, sprite->data[6] + 64);
if (sprite->data[4] != 64)
{
- u16 data4;
-
+ u16 sinIdx;
sprite->data[4] -= 8;
- data4 = sprite->data[4];
- sprite->pos2.x = gSineTable[(u8)(data4 + 64)] / 64;
- sprite->pos2.y = gSineTable[(u8)data4] / 64;
+ sinIdx = sprite->data[4];
+ sprite->x2 = gSineTable[(u8)(sinIdx + 64)] / 64;
+ sprite->y2 = gSineTable[(u8)sinIdx] / 64;
}
else
{
sprite->data[4] = 0;
- sprite->callback = sub_816F660;
+ sprite->callback = SpriteCB_WaterDrop_DangleFromLeaf;
}
}
-static void sub_816F660(struct Sprite *sprite)
+static void SpriteCB_WaterDrop_DangleFromLeaf(struct Sprite *sprite)
{
if (sprite->data[0] != 2)
{
@@ -2661,54 +2956,55 @@ static void sub_816F660(struct Sprite *sprite)
sprite->data[4] += 8;
r2 = gSineTable[(u8)sprite->data[4]] / 16 + 64;
- sprite->pos2.x = gSineTable[(u8)(r2 + 64)] / 64;
- sprite->pos2.y = gSineTable[(u8)r2] / 64;
+ sprite->x2 = gSineTable[(u8)(r2 + 64)] / 64;
+ sprite->y2 = gSineTable[(u8)r2] / 64;
}
else
{
- sprite->callback = SpriteCB_WaterDropFall;
+ sprite->callback = SpriteCB_WaterDrop_Fall;
}
}
-static void SpriteCB_WaterDropFall(struct Sprite *sprite)
+static void SpriteCB_WaterDrop_Fall(struct Sprite *sprite)
{
- if (sprite->pos1.y < sprite->data[5])
+ if (sprite->y < sprite->data[5])
{
- sprite->pos1.y += 4;
+ sprite->y += 4;
}
else
{
sprite->data[7] = 1;
sprite->invisible = TRUE;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- StartSpriteAnim(sprite, 3);
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ StartSpriteAnim(sprite, DROP_ANIM_RIPPLE);
sprite->data[2] = 1024;
sprite->data[3] = 8 * (sprite->data[1] & 3);
- sprite->callback = sub_816F318;
+ sprite->callback = SpriteCB_WaterDrop_Ripple;
sprite->oam.shape = SPRITE_SHAPE(64x32);
sprite->oam.size = SPRITE_SIZE(64x32);
CalcCenterToCornerVec(sprite, SPRITE_SHAPE(64x32), SPRITE_SIZE(64x32), ST_OAM_AFFINE_ERASE);
}
}
-//Duplicate function
-static void SpriteCB_WaterDropFall_2(struct Sprite *sprite)
+// Identical to SpriteCB_WaterDrop_Fall
+// Used by the 2nd and 3rd water drops to skip the leaf slide
+static void SpriteCB_WaterDropShort(struct Sprite *sprite)
{
- if (sprite->pos1.y < sprite->data[5])
+ if (sprite->y < sprite->data[5])
{
- sprite->pos1.y += 4;
+ sprite->y += 4;
}
else
{
sprite->data[7] = 1;
sprite->invisible = TRUE;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- StartSpriteAnim(sprite, 3);
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ StartSpriteAnim(sprite, DROP_ANIM_RIPPLE);
sprite->data[2] = 1024;
sprite->data[3] = 8 * (sprite->data[1] & 3);
- sprite->callback = sub_816F318;
+ sprite->callback = SpriteCB_WaterDrop_Ripple;
sprite->oam.shape = SPRITE_SHAPE(64x32);
sprite->oam.size = SPRITE_SIZE(64x32);
CalcCenterToCornerVec(sprite, SPRITE_SHAPE(64x32), SPRITE_SIZE(64x32), ST_OAM_AFFINE_ERASE);
@@ -2720,7 +3016,8 @@ static u8 CreateWaterDrop(s16 x, s16 y, u16 c, u16 d, u16 e, u8 fallImmediately)
u8 spriteId;
u8 oldSpriteId;
- spriteId = CreateSprite(&gIntroWaterDropSprite, x, y, 1);
+ // Create water drop reflection
+ spriteId = CreateSprite(&sSpriteTemplate_WaterDrop, x, y, 1);
gSprites[spriteId].data[0] = 0;
gSprites[spriteId].data[7] = 0;
gSprites[spriteId].data[1] = d;
@@ -2731,29 +3028,32 @@ static u8 CreateWaterDrop(s16 x, s16 y, u16 c, u16 d, u16 e, u8 fallImmediately)
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
gSprites[spriteId].oam.matrixNum = d;
CalcCenterToCornerVec(&gSprites[spriteId], SPRITE_SHAPE(32x32), SPRITE_SIZE(32x32), ST_OAM_AFFINE_ERASE);
- StartSpriteAnim(&gSprites[spriteId], 2);
+ StartSpriteAnim(&gSprites[spriteId], DROP_ANIM_REFLECTION);
if (!fallImmediately)
- gSprites[spriteId].callback = sub_816F454;
+ gSprites[spriteId].callback = SpriteCB_WaterDrop; // Do full anim, for 1st drop that slides along the leaf
else
- gSprites[spriteId].callback = SpriteCB_WaterDropFall_2;
+ gSprites[spriteId].callback = SpriteCB_WaterDropShort; // Skip to drop falling into the water, for 2nd and 3rd drops
oldSpriteId = spriteId;
- spriteId = CreateSprite(&gIntroWaterDropSprite, x, y, 1);
+ // Create water drop upper half
+ // Implicitly anim number 0, DROP_ANIM_UPPER_HALF
+ spriteId = CreateSprite(&sSpriteTemplate_WaterDrop, x, y, 1);
gSprites[spriteId].data[7] = oldSpriteId;
gSprites[spriteId].data[1] = d + 1;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
gSprites[spriteId].oam.matrixNum = d + 1;
CalcCenterToCornerVec(&gSprites[spriteId], SPRITE_SHAPE(32x32), SPRITE_SIZE(32x32), ST_OAM_AFFINE_ERASE);
- gSprites[spriteId].callback = sub_816F3A4;
+ gSprites[spriteId].callback = SpriteCB_WaterDropHalf;
- spriteId = CreateSprite(&gIntroWaterDropSprite, x, y, 1);
+ // Create water drop lower half
+ spriteId = CreateSprite(&sSpriteTemplate_WaterDrop, x, y, 1);
gSprites[spriteId].data[7] = oldSpriteId;
gSprites[spriteId].data[1] = d + 2;
- StartSpriteAnim(&gSprites[spriteId], 1);
+ StartSpriteAnim(&gSprites[spriteId], DROP_ANIM_LOWER_HALF);
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
gSprites[spriteId].oam.matrixNum = d + 2;
CalcCenterToCornerVec(&gSprites[spriteId], SPRITE_SHAPE(32x32), SPRITE_SIZE(32x32), ST_OAM_AFFINE_ERASE);
- gSprites[spriteId].callback = sub_816F3A4;
+ gSprites[spriteId].callback = SpriteCB_WaterDropHalf;
SetOamMatrix(d, c + 32, 0, 0, c + 32);
SetOamMatrix(d + 1, c + 32, 0, 0, c + 32);
@@ -2762,166 +3062,199 @@ static u8 CreateWaterDrop(s16 x, s16 y, u16 c, u16 d, u16 e, u8 fallImmediately)
return oldSpriteId;
}
-static void SpriteCB_IntroGraphicsBicycle(struct Sprite *sprite)
+// State is handled by Task_Scene2_BikeRide
+static void SpriteCB_PlayerOnBicycle(struct Sprite *sprite)
{
- switch (sprite->data[0])
+ // Adjust x position
+ switch (sprite->sState)
{
case 0:
+ // Move forwards
StartSpriteAnimIfDifferent(sprite, 0);
- sprite->pos1.x--;
+ sprite->x--;
break;
case 1:
+ // Drift backwards slowly
StartSpriteAnimIfDifferent(sprite, 0);
if (gIntroFrameCounter & 7)
return;
- sprite->pos1.x++;
+ sprite->x++;
break;
case 2:
- if (sprite->pos1.x <= 120 || gIntroFrameCounter & 7)
- sprite->pos1.x++;
+ // Move backwards
+ if (sprite->x <= 120 || gIntroFrameCounter & 7)
+ sprite->x++;
break;
case 3:
+ // Bike in place
break;
case 4:
- if (sprite->pos1.x > -32)
- sprite->pos1.x -= 2;
+ // Exit to the left
+ if (sprite->x > -32)
+ sprite->x -= 2;
break;
}
+
if (gIntroFrameCounter & 7)
return;
- if (sprite->pos2.y != 0)
+
+ // Adjust y position
+ if (sprite->y2 != 0)
{
- sprite->pos2.y = 0;
+ // Return to neutral after wobble
+ sprite->y2 = 0;
}
else
{
+ // Random wobble on y axis
switch (Random() & 3)
{
case 0:
- sprite->pos2.y = -1;
+ sprite->y2 = -1;
break;
case 1:
- sprite->pos2.y = 1;
+ sprite->y2 = 1;
break;
case 2:
case 3:
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
break;
}
}
}
-static void SpriteCB_IntroGraphicsFlygon(struct Sprite *sprite)
+#define sSinIdx data[1]
+
+// Movement is started by setting state to 1 in Task_Scene2_BikeRide
+static void SpriteCB_Flygon(struct Sprite *sprite)
{
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
break;
case 1:
- if (sprite->pos2.x + sprite->pos1.x < 304)
- sprite->pos2.x += 8;
+ if (sprite->x2 + sprite->x < DISPLAY_WIDTH + 64)
+ sprite->x2 += 8;
else
- sprite->data[0] = 2;
+ sprite->sState = 2;
break;
case 2:
- if (sprite->pos2.x + sprite->pos1.x > 120)
- sprite->pos2.x -= 1;
+ if (sprite->x2 + sprite->x > 120)
+ sprite->x2 -= 1;
else
- sprite->data[0] = 3;
+ sprite->sState = 3;
break;
case 3:
- if (sprite->pos2.x > 0)
- sprite->pos2.x -= 2;
+ if (sprite->x2 > 0)
+ sprite->x2 -= 2;
break;
}
- sprite->pos2.y = Sin((u8)sprite->data[1], 8) - gIntroGraphicsFlygonYOffset;
- sprite->data[1] += 4;
+ sprite->y2 = Sin((u8)sprite->sSinIdx, 8) - sFlygonYOffset;
+ sprite->sSinIdx += 4;
}
-static void sub_816FB38(struct Sprite *sprite)
+#undef sSinIdx
+
+#define sTimer data[1]
+#define sLetterId data[2]
+#define sColorDelay data[3]
+#define sLetterX data[3] // Re-used
+
+#define COLOR_CHANGES 9 // Number of stages for changing the letter color
+
+// For the letters in "Game Freak"
+// Also intended for the letters in "Presents", which is never shown
+static void SpriteCB_LogoLetter(struct Sprite *sprite)
{
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
- if (sprite->data[1] != 0)
+ if (sprite->sTimer != 0)
{
- sprite->data[1]--;
+ sprite->sTimer--;
}
else
{
+ // Start the grow and shrink appearance animation
sprite->invisible = FALSE;
StartSpriteAffineAnim(sprite, 1);
- sprite->data[0]++;
+ sprite->sState++;
}
break;
case 1:
- if (gIntroFrameCounter == 0x90)
+ if (gIntroFrameCounter == TIMER_LOGO_LETTERS_COLOR)
{
- sprite->data[0]++;
- sprite->data[1] = 9;
- sprite->data[3] = 2;
+ // Initialize color fade
+ sprite->sState++;
+ sprite->sTimer = COLOR_CHANGES;
+ sprite->sColorDelay = 2;
}
break;
case 2:
- if (sprite->data[3] == 0)
+ // Fade letters to blue
+ if (sprite->sColorDelay == 0)
{
- sprite->data[3] = 2;
- if (sprite->data[1] != 0)
+ sprite->sColorDelay = 2;
+ if (sprite->sTimer != 0)
{
- CpuCopy16(&gIntro1GameFreakTextFadePal[sprite->data[1]], &gPlttBufferFaded[0x11F], 2);
- CpuCopy16(&gIntro1GameFreakTextFadePal[sprite->data[1] + 0x10], &gPlttBufferFaded[0x114], 2);
- CpuCopy16(&gIntro1GameFreakTextFadePal[sprite->data[1] + 0x20], &gPlttBufferFaded[0x11A], 2);
- sprite->data[1]--;
+ CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer], &gPlttBufferFaded[0x11F], 2);
+ CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer + 16], &gPlttBufferFaded[0x114], 2);
+ CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer + 32], &gPlttBufferFaded[0x11A], 2);
+ sprite->sTimer--;
}
else
{
- CpuCopy16(&gIntro1GameFreakTextFadePal[sprite->data[1]], &gPlttBufferFaded[0x11F], 2);
- CpuCopy16(&gIntro1GameFreakTextFadePal[sprite->data[1] + 0x10], &gPlttBufferFaded[0x114], 2);
- CpuCopy16(&gIntro1GameFreakTextFadePal[sprite->data[1] + 0x20], &gPlttBufferFaded[0x11A], 2);
- sprite->data[0]++;
+ CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer], &gPlttBufferFaded[0x11F], 2);
+ CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer + 16], &gPlttBufferFaded[0x114], 2);
+ CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer + 32], &gPlttBufferFaded[0x11A], 2);
+ sprite->sState++;
}
}
else
{
- sprite->data[3]--;
+ sprite->sColorDelay--;
}
break;
case 3:
- if (sprite->data[3] != 0)
+ // Fade letters back to white
+ if (sprite->sColorDelay != 0)
{
- sprite->data[3]--;
+ sprite->sColorDelay--;
}
else
{
- sprite->data[3] = 2;
- if (sprite->data[1] < 10)
+ sprite->sColorDelay = 2;
+ if (sprite->sTimer <= COLOR_CHANGES)
{
- CpuCopy16(&gIntro1GameFreakTextFadePal[sprite->data[1]], &gPlttBufferFaded[0x11F], 2);
- CpuCopy16(&gIntro1GameFreakTextFadePal[sprite->data[1] + 0x10], &gPlttBufferFaded[0x114], 2);
- CpuCopy16(&gIntro1GameFreakTextFadePal[sprite->data[1] + 0x20], &gPlttBufferFaded[0x11A], 2);
- sprite->data[1]++;
+ CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer], &gPlttBufferFaded[0x11F], 2);
+ CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer + 16], &gPlttBufferFaded[0x114], 2);
+ CpuCopy16(&gIntroGameFreakTextFade_Pal[sprite->sTimer + 32], &gPlttBufferFaded[0x11A], 2);
+ sprite->sTimer++;
}
else
{
- sprite->data[0]++;
+ sprite->sState++;
}
}
break;
case 4:
- if (gIntroFrameCounter == 0x110)
+ if (gIntroFrameCounter == TIMER_LOGO_DISAPPEAR)
{
+ // Start the grow disappearance animation
StartSpriteAffineAnim(sprite, 2);
sprite->oam.objMode = ST_OAM_OBJ_BLEND;
- sprite->data[0]++;
+ sprite->sState++;
}
break;
case 5:
- sprite->data[3] += gUnknown_085E4F48[sprite->data[2]];
- sprite->pos2.x = (sprite->data[3] & 0xFF00) >> 8;
- if (sprite->data[2] < 4)
+ // Spread the letters out as they grow
+ sprite->sLetterX += sGameFreakLettersMoveSpeed[sprite->sLetterId];
+ sprite->x2 = (sprite->sLetterX & 0xFF00) >> 8;
+ if (sprite->sLetterId < 4)
{
- s16 temp = sprite->pos2.x;
- sprite->pos2.x = -temp;
+ // Is in first 4 letters, i.e. "Game"
+ s16 temp = sprite->x2;
+ sprite->x2 = -temp;
}
if (sprite->affineAnimEnded)
DestroySprite(sprite);
@@ -2929,22 +3262,23 @@ static void sub_816FB38(struct Sprite *sprite)
}
}
-static void sub_816FD44(struct Sprite *sprite)
+static void SpriteCB_GameFreakLogo(struct Sprite *sprite)
{
- switch(sprite->data[0])
+ switch(sprite->sState)
{
case 0:
- if (gIntroFrameCounter == 0x80)
+ if (gIntroFrameCounter == TIMER_LOGO_APPEAR)
{
sprite->invisible = FALSE;
- sprite->data[0]++;
+ sprite->sState++;
}
break;
case 1:
- if (gIntroFrameCounter == 0x110)
+ if (gIntroFrameCounter == TIMER_LOGO_DISAPPEAR)
{
+ // Start the grow disappearance animation
StartSpriteAffineAnim(sprite, 3);
- sprite->data[0]++;
+ sprite->sState++;
}
break;
case 2:
@@ -2954,35 +3288,45 @@ static void sub_816FD44(struct Sprite *sprite)
}
}
-static u8 CreatePart1Animations(s16 a0, s16 a1, s16 a2)
+static u8 CreateGameFreakLogoSprites(s16 x, s16 y, s16 unused)
{
u16 i;
u8 spriteId;
- for (i = 0; i < 9; i++)
+ // Create "Game Freak" letters
+ for (i = 0; i < NUM_GF_LETTERS; i++)
{
- spriteId = CreateSprite(&gUnknown_085E4F5C, gUnknown_085E4E94[i][1] + a0, a1 - 4, 0);
- gSprites[spriteId].data[0] = 0;
- gSprites[spriteId].data[1] = gUnknown_085E4FA4[i];
- gSprites[spriteId].data[2] = i;
+ spriteId = CreateSprite(&sSpriteTemplate_GameFreakLetter, sGameFreakLetterData[i][1] + x, y - 4, 0);
+ gSprites[spriteId].sState = 0;
+ gSprites[spriteId].sTimer = sGameFreakLetterStartDelays[i];
+ gSprites[spriteId].sLetterId = i;
gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].oam.matrixNum = i + 12;
- StartSpriteAnim(&gSprites[spriteId], gUnknown_085E4E94[i][0]);
+ StartSpriteAnim(&gSprites[spriteId], sGameFreakLetterData[i][0]);
StartSpriteAffineAnim(&gSprites[spriteId], 0);
}
- spriteId = CreateSprite(&gUnknown_085E4F8C, 120, a1 - 6, 0);
- gSprites[spriteId].data[0] = 0;
+
+ // Create Game Freak logo
+ spriteId = CreateSprite(&sSpriteTemplate_GameFreakLogo, 120, y - 6, 0);
+ gSprites[spriteId].sState = 0;
gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].oam.matrixNum = i + 12;
StartSpriteAffineAnim(&gSprites[spriteId], 1);
+
return spriteId;
}
-static void sub_816FEDC(struct Sprite *sprite)
+#undef sTimer
+#undef sLetterId
+#undef sColorDelay
+#undef sLetterX
+#undef COLOR_CHANGES
+
+static void SpriteCB_FlygonSilhouette(struct Sprite *sprite)
{
sprite->data[7]++;
- if (sprite->data[0] != 0)
+ if (sprite->sState != 0)
{
s16 sin1;
s16 sin2;
@@ -3000,7 +3344,7 @@ static void sub_816FEDC(struct Sprite *sprite)
SetOamMatrix(1, a, b, c, d);
}
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
default:
@@ -3008,30 +3352,30 @@ static void sub_816FEDC(struct Sprite *sprite)
sprite->oam.matrixNum = 1;
CalcCenterToCornerVec(sprite, SPRITE_SHAPE(64x32), SPRITE_SIZE(64x32), ST_OAM_AFFINE_DOUBLE);
sprite->invisible = FALSE;
- sprite->data[0] = 1;
+ sprite->sState = 1;
sprite->data[1] = 0x80;
sprite->data[2] = 0;
sprite->data[3] = 0;
break;
case 1:
- sprite->pos2.x = -Sin((u8)sprite->data[3], 140);
- sprite->pos2.y = -Sin((u8)sprite->data[3], 120);
+ sprite->x2 = -Sin((u8)sprite->data[3], 140);
+ sprite->y2 = -Sin((u8)sprite->data[3], 120);
sprite->data[1] += 7;
sprite->data[3] += 3;
- if (sprite->pos1.x + sprite->pos2.x <= -16)
+ if (sprite->x + sprite->x2 <= -16)
{
sprite->oam.priority = 3;
- sprite->data[0]++;
- sprite->pos1.x = 20;
- sprite->pos1.y = 40;
+ sprite->sState++;
+ sprite->x = 20;
+ sprite->y = 40;
sprite->data[1] = 0x200;
sprite->data[2] = 0;
sprite->data[3] = 0x10;
}
break;
case 2:
- sprite->pos2.x = Sin((u8)sprite->data[3], 34);
- sprite->pos2.y = -Cos((u8)sprite->data[3], 60);
+ sprite->x2 = Sin((u8)sprite->data[3], 34);
+ sprite->y2 = -Cos((u8)sprite->data[3], 60);
sprite->data[1] += 2;
if (sprite->data[7] % 5 == 0)
sprite->data[3]++;
@@ -3039,13 +3383,10 @@ static void sub_816FEDC(struct Sprite *sprite)
}
}
-static void SpriteCB_IntroRayquazaHyperbeam(struct Sprite *sprite)
+static void SpriteCB_RayquazaOrb(struct Sprite *sprite)
{
u16 foo;
-
- //I'm not sure why a switch statement was used here.
- //if (sprite->data[0] != 1) would have been more appropriate.
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
default:
@@ -3054,7 +3395,7 @@ static void SpriteCB_IntroRayquazaHyperbeam(struct Sprite *sprite)
sprite->oam.matrixNum = 18;
CalcCenterToCornerVec(sprite, SPRITE_SHAPE(64x64), SPRITE_SIZE(64x64), ST_OAM_AFFINE_DOUBLE);
sprite->data[1] = 0;
- sprite->data[0] = 1;
+ sprite->sState = 1;
//fall through
case 1:
sprite->data[7]++;
diff --git a/src/intro_credits_graphics.c b/src/intro_credits_graphics.c
index 45cc24e5c..bceddd9b7 100644
--- a/src/intro_credits_graphics.c
+++ b/src/intro_credits_graphics.c
@@ -6,6 +6,25 @@
#include "task.h"
#include "main.h"
#include "graphics.h"
+#include "constants/rgb.h"
+
+/*
+ The graphics here are used by both the second scene of the intro
+ and the credit sequence, where the player bikes along a grassy path.
+
+ These graphics are placed in graphics/intro/scene_2 to keep
+ all of the intro graphics files together, though it includes
+ the related graphics that are used only by the credits.
+*/
+
+#define TAG_BICYCLE 1001
+#define TAG_BRENDAN 1002
+#define TAG_MAY 1003
+#define TAG_FLYGON_LATIOS 1004
+#define TAG_FLYGON_LATIAS 1005
+
+// Used for the Clouds/Trees/Houses sprites that pass by in the background
+#define TAG_MOVING_SCENERY 2000
struct IntroCreditsSpriteMetadata
{
@@ -18,99 +37,99 @@ struct IntroCreditsSpriteMetadata
u16 xOff;
};
-static const u16 gUnknown_085F06E0[] = INCBIN_U16("graphics/intro/intro2_grass.gbapal");
-static const u16 gUnknown_085F0700[] = INCBIN_U16("graphics/intro/intro2_grass_afternoon.gbapal");
-static const u16 gUnknown_085F0720[] = INCBIN_U16("graphics/intro/intro2_grass_night.gbapal");
-static const u32 gUnknown_085F0740[] = INCBIN_U32("graphics/intro/intro2_grass.4bpp.lz");
-static const u32 gUnknown_085F0BC0[] = INCBIN_U32("graphics/intro/intro2_grass_map.bin.lz");
-static const u16 gUnknown_085F0CFC[] = INCBIN_U16("graphics/intro/85F0CFC.gbapal");
-static const u16 gUnknown_085F0D5C[] = INCBIN_U16("graphics/intro/85F0D5C.gbapal");
-static const u32 gUnknown_085F0DBC[] = INCBIN_U32("graphics/intro/intro2_bgclouds.4bpp.lz");
-static const u32 gUnknown_085F1398[] = INCBIN_U32("graphics/intro/intro2_bgclouds_map.bin.lz");
-static const u16 gUnknown_085F1668[] = INCBIN_U16("graphics/intro/intro2_bgclouds.gbapal");
-static const u16 gUnknown_085F1688[] = INCBIN_U16("graphics/intro/intro2_bgclouds_afternoon.gbapal");
-static const u32 gUnknown_085F16A8[] = INCBIN_U32("graphics/intro/intro2_bgclouds2.4bpp.lz");
-static const u16 gUnknown_085F17E4[] = INCBIN_U16("graphics/intro/intro2_bgtrees2.gbapal");
-static const u16 gUnknown_085F1804[] = INCBIN_U16("graphics/intro/intro2_bgtrees2_afternoon.gbapal");
-static const u32 gUnknown_085F1824[] = INCBIN_U32("graphics/intro/intro2_bgtrees.4bpp.lz");
-static const u32 gUnknown_085F1EAC[] = INCBIN_U32("graphics/intro/intro2_bgtrees_map.bin.lz");
-static const u16 gUnknown_085F21B0[] = INCBIN_U16("graphics/intro/intro2_bgtrees.gbapal");
-static const u32 gIntro2TreeTiles[] = INCBIN_U32("graphics/intro/intro2_bgtreessmall.4bpp.lz");
-static const u16 gUnknown_085F231C[] = INCBIN_U16("graphics/intro/85F231C.gbapal");
-static const u32 gUnknown_085F235C[] = INCBIN_U32("graphics/intro/intro2_bgnight.4bpp.lz");
-static const u16 gUnknown_085F2548[] = INCBIN_U16("graphics/intro/intro2_bgnight.gbapal");
-static const u32 gUnknown_085F2568[] = INCBIN_U32("graphics/intro/intro2_bgnight_map.bin.lz");
-static const u32 gIntro2NightTiles[] = INCBIN_U32("graphics/intro/intro2_night.4bpp.lz");
-static const u16 gIntro2BrendanPalette[] = INCBIN_U16("graphics/intro/intro2_brendan.gbapal");
-static const u32 gIntro2BrendanTiles[] = INCBIN_U32("graphics/intro/intro2_brendan.4bpp.lz");
-static const u16 gIntro2MayPalette[] = INCBIN_U16("graphics/intro/intro2_may.gbapal");
-static const u16 gUnknown_085F3490[0xF0] = {0};
-static const u32 gIntro2MayTiles[] = INCBIN_U32("graphics/intro/intro2_may.4bpp.lz");
-static const u32 gIntro2BicycleTiles[] = INCBIN_U32("graphics/intro/intro2_bicycle.4bpp.lz");
-static const u16 gIntro2LatiosPalette[] = INCBIN_U16("graphics/intro/intro2_latios.gbapal");
-static const u32 gIntro2LatiosTiles[] = INCBIN_U32("graphics/intro/intro2_latios.4bpp.lz");
-static const u16 gIntro2LatiasPalette[] = INCBIN_U16("graphics/intro/intro2_latias.gbapal");
-static const u32 gIntro2LatiasTiles[] = INCBIN_U32("graphics/intro/intro2_latias.4bpp.lz");
-
-static void sub_817B62C(struct Sprite *sprite);
-static void nullsub_65(struct Sprite *sprite);
-static void sub_817B7C4(struct Sprite *sprite);
-static void nullsub_66(struct Sprite *sprite);
-
-static const struct SpriteTemplate gUnknown_085F504C =
-{
- .tileTag = 2000,
+static const u16 sGrass_Pal[] = INCBIN_U16("graphics/intro/scene_2/grass.gbapal");
+static const u16 sGrassSunset_Pal[] = INCBIN_U16("graphics/intro/scene_2/grass_sunset.gbapal");
+static const u16 sGrassNight_Pal[] = INCBIN_U16("graphics/intro/scene_2/grass_night.gbapal");
+static const u32 sGrass_Gfx[] = INCBIN_U32("graphics/intro/scene_2/grass.4bpp.lz");
+static const u32 sGrass_Tilemap[] = INCBIN_U32("graphics/intro/scene_2/grass_map.bin.lz");
+static const u16 sCloudsBg_Pal[] = INCBIN_U16("graphics/intro/scene_2/clouds_bg.gbapal");
+static const u16 sCloudsBgSunset_Pal[] = INCBIN_U16("graphics/intro/scene_2/clouds_bg_sunset.gbapal");
+static const u32 sCloudsBg_Gfx[] = INCBIN_U32("graphics/intro/scene_2/clouds_bg.4bpp.lz");
+static const u32 sCloudsBg_Tilemap[] = INCBIN_U32("graphics/intro/scene_2/clouds_bg_map.bin.lz");
+static const u16 sClouds_Pal[] = INCBIN_U16("graphics/intro/scene_2/clouds.gbapal");
+static const u16 sCloudsSunset_Pal[] = INCBIN_U16("graphics/intro/scene_2/clouds_sunset.gbapal");
+static const u32 sClouds_Gfx[] = INCBIN_U32("graphics/intro/scene_2/clouds.4bpp.lz");
+static const u16 sTrees_Pal[] = INCBIN_U16("graphics/intro/scene_2/trees.gbapal");
+static const u16 sTreesSunset_Pal[] = INCBIN_U16("graphics/intro/scene_2/trees_sunset.gbapal");
+static const u32 sTrees_Gfx[] = INCBIN_U32("graphics/intro/scene_2/trees.4bpp.lz");
+static const u32 sTrees_Tilemap[] = INCBIN_U32("graphics/intro/scene_2/trees_map.bin.lz");
+static const u16 sTreesSmall_Pal[] = INCBIN_U16("graphics/intro/scene_2/trees_small.gbapal");
+static const u32 sTreesSmall_Gfx[] = INCBIN_U32("graphics/intro/scene_2/trees_small.4bpp.lz");
+static const u16 sHouses_Pal[] = INCBIN_U16("graphics/intro/scene_2/houses.gbapal");
+static const u32 sHouses_Gfx[] = INCBIN_U32("graphics/intro/scene_2/houses.4bpp.lz");
+static const u16 sHouseSilhouette_Pal[] = INCBIN_U16("graphics/intro/scene_2/house_silhouette.gbapal");
+static const u32 sHouses_Tilemap[] = INCBIN_U32("graphics/intro/scene_2/houses_map.bin.lz");
+static const u32 sHouseSilhouette_Gfx[] = INCBIN_U32("graphics/intro/scene_2/house_silhouette.4bpp.lz");
+static const u16 sBrendanCredits_Pal[] = INCBIN_U16("graphics/intro/scene_2/brendan_credits.gbapal");
+static const u32 sBrendanCredits_Gfx[] = INCBIN_U32("graphics/intro/scene_2/brendan_credits.4bpp.lz");
+static const u16 sMayCredits_Pal[] = INCBIN_U16("graphics/intro/scene_2/may_credits.gbapal");
+static const u16 sUnused[0xF0] = {0};
+static const u32 sMayCredits_Gfx[] = INCBIN_U32("graphics/intro/scene_2/may_credits.4bpp.lz");
+static const u32 sBicycle_Gfx[] = INCBIN_U32("graphics/intro/scene_2/bicycle.4bpp.lz");
+static const u16 sLatios_Pal[] = INCBIN_U16("graphics/intro/scene_2/latios.gbapal");
+static const u32 sLatios_Gfx[] = INCBIN_U32("graphics/intro/scene_2/latios.4bpp.lz");
+static const u16 sLatias_Pal[] = INCBIN_U16("graphics/intro/scene_2/latias.gbapal");
+static const u32 sLatias_Gfx[] = INCBIN_U32("graphics/intro/scene_2/latias.4bpp.lz");
+
+static void SpriteCB_MovingScenery(struct Sprite *sprite);
+static void SpriteCB_Player(struct Sprite *sprite);
+static void SpriteCB_Bicycle(struct Sprite *sprite);
+static void SpriteCB_FlygonLeftHalf(struct Sprite *sprite);
+
+static const struct SpriteTemplate sSpriteTemplate_MovingScenery =
+{
+ .tileTag = TAG_MOVING_SCENERY,
.paletteTag = 0xFFFF,
.oam = &gDummyOamData,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_817B62C
+ .callback = SpriteCB_MovingScenery
};
-static const struct CompressedSpriteSheet gUnknown_085F5064[] =
+static const struct CompressedSpriteSheet sSpriteSheet_Clouds[] =
{
{
- .data = gUnknown_085F16A8,
+ .data = sClouds_Gfx,
.size = 0x400,
- .tag = 2000
+ .tag = TAG_MOVING_SCENERY
},
{}
};
-static const union AnimCmd gUnknown_085F5074[] =
+static const union AnimCmd sAnim_Cloud_Largest[] =
{
ANIMCMD_FRAME( 0, 30),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085F507C[] =
+static const union AnimCmd sAnim_Cloud_Large[] =
{
ANIMCMD_FRAME(16, 30),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085F5084[] =
+static const union AnimCmd sAnim_Cloud_Small[] =
{
ANIMCMD_FRAME(20, 30),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085F508C[] =
+static const union AnimCmd sAnim_Cloud_Smallest[] =
{
ANIMCMD_FRAME(22, 30),
ANIMCMD_END
};
-static const union AnimCmd *const gUnknown_085F5094[] =
+static const union AnimCmd *const sAnims_Clouds[] =
{
- gUnknown_085F5074,
- gUnknown_085F507C,
- gUnknown_085F5084,
- gUnknown_085F508C
+ sAnim_Cloud_Largest,
+ sAnim_Cloud_Large,
+ sAnim_Cloud_Small,
+ sAnim_Cloud_Smallest
};
-static const struct IntroCreditsSpriteMetadata gUnknown_085F50A4[] =
+static const struct IntroCreditsSpriteMetadata sSpriteMetadata_Clouds[] =
{
{
.animNum = 0,
@@ -195,42 +214,42 @@ static const struct IntroCreditsSpriteMetadata gUnknown_085F50A4[] =
},
};
-static const struct CompressedSpriteSheet gUnknown_085F50EC[] =
+static const struct CompressedSpriteSheet sSpriteSheet_TreesSmall[] =
{
{
- .data = gIntro2TreeTiles,
+ .data = sTreesSmall_Gfx,
.size = 0x400,
- .tag = 2000
+ .tag = TAG_MOVING_SCENERY
},
{}
};
-static const union AnimCmd gUnknown_085F50FC[] =
+static const union AnimCmd sAnim_Trees_0[] =
{
ANIMCMD_FRAME( 0, 30),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085F5104[] =
+static const union AnimCmd sAnim_Trees_1[] =
{
ANIMCMD_FRAME(16, 30),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085F510C[] =
+static const union AnimCmd sAnim_Trees_2[] =
{
ANIMCMD_FRAME(24, 30),
ANIMCMD_END
};
-static const union AnimCmd *const gUnknown_085F5114[] =
+static const union AnimCmd *const sAnims_Trees[] =
{
- gUnknown_085F50FC,
- gUnknown_085F5104,
- gUnknown_085F510C
+ sAnim_Trees_0,
+ sAnim_Trees_1,
+ sAnim_Trees_2
};
-static const struct IntroCreditsSpriteMetadata gUnknown_085F5120[] =
+static const struct IntroCreditsSpriteMetadata sSpriteMetadata_Trees[] =
{
{
.animNum = 0,
@@ -342,28 +361,28 @@ static const struct IntroCreditsSpriteMetadata gUnknown_085F5120[] =
}
};
-static const struct CompressedSpriteSheet gUnknown_085F5180[] =
+static const struct CompressedSpriteSheet sSpriteSheet_HouseSilhouette[] =
{
{
- .data = gIntro2NightTiles,
+ .data = sHouseSilhouette_Gfx,
.size = 0x400,
- .tag = 2000
+ .tag = TAG_MOVING_SCENERY
},
{}
};
-static const union AnimCmd gUnknown_085F5190[] =
+static const union AnimCmd sAnim_HouseSilhouette[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_END
};
-static const union AnimCmd *const gUnknown_085F5198[] =
+static const union AnimCmd *const sAnims_HouseSilhouette[] =
{
- gUnknown_085F5190
+ sAnim_HouseSilhouette
};
-static const struct IntroCreditsSpriteMetadata gUnknown_085F519C[] =
+static const struct IntroCreditsSpriteMetadata sSpriteMetadata_HouseSilhouette[] =
{
{
.animNum = 0,
@@ -421,15 +440,15 @@ static const struct IntroCreditsSpriteMetadata gUnknown_085F519C[] =
}
};
-static const struct OamData gOamData_85F51CC =
+static const struct OamData sOamData_Player =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.shape = SPRITE_SHAPE(64x64),
.size = SPRITE_SIZE(64x64),
.priority = 1
};
-static const union AnimCmd gUnknown_085F51D4[] =
+static const union AnimCmd sAnim_Player[] =
{
ANIMCMD_FRAME( 0, 8),
ANIMCMD_FRAME( 64, 8),
@@ -438,42 +457,42 @@ static const union AnimCmd gUnknown_085F51D4[] =
ANIMCMD_JUMP(0)
};
-static const union AnimCmd *const gUnknown_085F51E8[] =
+static const union AnimCmd *const sAnims_Player[] =
{
- gUnknown_085F51D4
+ sAnim_Player
};
-static const struct SpriteTemplate gUnknown_085F51EC =
+static const struct SpriteTemplate sSpriteTemplate_Brendan =
{
- .tileTag = 1002,
- .paletteTag = 1002,
- .oam = &gOamData_85F51CC,
- .anims = gUnknown_085F51E8,
+ .tileTag = TAG_BRENDAN,
+ .paletteTag = TAG_BRENDAN,
+ .oam = &sOamData_Player,
+ .anims = sAnims_Player,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = nullsub_65
+ .callback = SpriteCB_Player
};
-static const struct SpriteTemplate gUnknown_085F5204 =
+static const struct SpriteTemplate sSpriteTemplate_May =
{
- .tileTag = 1003,
- .paletteTag = 1003,
- .oam = &gOamData_85F51CC,
- .anims = gUnknown_085F51E8,
+ .tileTag = TAG_MAY,
+ .paletteTag = TAG_MAY,
+ .oam = &sOamData_Player,
+ .anims = sAnims_Player,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = nullsub_65
+ .callback = SpriteCB_Player
};
-static const struct OamData gUnknown_085F521C =
+static const struct OamData sOamData_Bicycle =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.shape = SPRITE_SHAPE(64x32),
.size = SPRITE_SIZE(64x32),
.priority = 1
};
-static const union AnimCmd gUnknown_085F5224[] =
+static const union AnimCmd sAnim_Bicycle[] =
{
ANIMCMD_FRAME( 0, 8),
ANIMCMD_FRAME( 32, 8),
@@ -482,261 +501,267 @@ static const union AnimCmd gUnknown_085F5224[] =
ANIMCMD_JUMP(0)
};
-static const union AnimCmd *const gUnknown_085F5238[] =
+static const union AnimCmd *const sAnims_Bicycle[] =
{
- gUnknown_085F5224
+ sAnim_Bicycle
};
-static const struct SpriteTemplate gUnknown_085F523C =
+static const struct SpriteTemplate sSpriteTemplate_BrendanBicycle =
{
- .tileTag = 1001,
- .paletteTag = 1002,
- .oam = &gUnknown_085F521C,
- .anims = gUnknown_085F5238,
+ .tileTag = TAG_BICYCLE,
+ .paletteTag = TAG_BRENDAN,
+ .oam = &sOamData_Bicycle,
+ .anims = sAnims_Bicycle,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_817B7C4
+ .callback = SpriteCB_Bicycle
};
-static const struct SpriteTemplate gUnknown_085F5254 =
+static const struct SpriteTemplate sSpriteTemplate_MayBicycle =
{
- .tileTag = 1001,
- .paletteTag = 1003,
- .oam = &gUnknown_085F521C,
- .anims = gUnknown_085F5238,
+ .tileTag = TAG_BICYCLE,
+ .paletteTag = TAG_MAY,
+ .oam = &sOamData_Bicycle,
+ .anims = sAnims_Bicycle,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_817B7C4
+ .callback = SpriteCB_Bicycle
};
-static const struct OamData gUnknown_085F526C =
+static const struct OamData sOamData_Flygon =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.shape = SPRITE_SHAPE(64x64),
.size = SPRITE_SIZE(64x64),
.priority = 1
};
-static const union AnimCmd gUnknown_085F5274[] =
+static const union AnimCmd sAnim_FlygonLeft[] =
{
- ANIMCMD_FRAME( 0, 16),
+ ANIMCMD_FRAME(0, 16),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085F527C[] =
+static const union AnimCmd sAnim_FlygonRight[] =
{
- ANIMCMD_FRAME( 64, 16),
+ ANIMCMD_FRAME(64, 16),
ANIMCMD_END
};
-static const union AnimCmd *const gUnknown_085F5284[] =
+static const union AnimCmd *const sAnims_Flygon[] =
{
- gUnknown_085F5274,
- gUnknown_085F527C
+ sAnim_FlygonLeft,
+ sAnim_FlygonRight
};
-static const struct SpriteTemplate gUnknown_085F528C =
+static const struct SpriteTemplate sSpriteTemplate_FlygonLatios =
{
- .tileTag = 1004,
- .paletteTag = 1004,
- .oam = &gUnknown_085F526C,
- .anims = gUnknown_085F5284,
+ .tileTag = TAG_FLYGON_LATIOS,
+ .paletteTag = TAG_FLYGON_LATIOS,
+ .oam = &sOamData_Flygon,
+ .anims = sAnims_Flygon,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = nullsub_66
+ .callback = SpriteCB_FlygonLeftHalf
};
-static const struct SpriteTemplate gUnknown_085F52A4 =
+static const struct SpriteTemplate sSpriteTemplate_FlygonLatias =
{
- .tileTag = 1005,
- .paletteTag = 1005,
- .oam = &gUnknown_085F526C,
- .anims = gUnknown_085F5284,
+ .tileTag = TAG_FLYGON_LATIAS,
+ .paletteTag = TAG_FLYGON_LATIAS,
+ .oam = &sOamData_Flygon,
+ .anims = sAnims_Flygon,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = nullsub_66
+ .callback = SpriteCB_FlygonLeftHalf
};
-const struct CompressedSpriteSheet gIntro2BrendanSpriteSheet[] =
+const struct CompressedSpriteSheet gSpriteSheet_IntroBrendan[] =
{
{
- .data = gIntro2BrendanNoTurnGfx,
+ .data = gIntroBrendan_Gfx,
.size = 0x2000,
- .tag = 1002
+ .tag = TAG_BRENDAN
},
{}
};
-const struct CompressedSpriteSheet gIntro2MaySpriteSheet[] =
+const struct CompressedSpriteSheet gSpriteSheet_IntroMay[] =
{
{
- .data = gIntro2MayNoTurnGfx,
+ .data = gIntroMay_Gfx,
.size = 0x2000,
- .tag = 1003
+ .tag = TAG_MAY
},
{}
};
-const struct CompressedSpriteSheet gIntro2BicycleSpriteSheet[] =
+const struct CompressedSpriteSheet gSpriteSheet_IntroBicycle[] =
{
{
- .data = gIntro2BicycleTiles,
+ .data = sBicycle_Gfx,
.size = 0x1000,
- .tag = 1001
+ .tag = TAG_BICYCLE
},
{}
};
-static const struct CompressedSpriteSheet gUnknown_085F52EC[] =
+// In RS these were Latios/Latias. In Emerald both are replaced with Flygon and now only 1 is used
+static const struct CompressedSpriteSheet sSpriteSheet_IntroFlygon_Unused[] =
{
{
- .data = gIntro2FlygonGfx,
+ .data = gIntroFlygon_Gfx,
.size = 0x1000,
- .tag = 1004
+ .tag = TAG_FLYGON_LATIOS
},
{}
};
-const struct CompressedSpriteSheet gIntro2FlygonSpriteSheet[] =
+const struct CompressedSpriteSheet gSpriteSheet_IntroFlygon[] =
{
{
- .data = gIntro2FlygonGfx,
+ .data = gIntroFlygon_Gfx,
.size = 0x1000,
- .tag = 1005
+ .tag = TAG_FLYGON_LATIAS
},
{}
};
-const struct SpritePalette gIntroBikeAndFlygonPalette[] =
+const struct SpritePalette gSpritePalettes_IntroPlayerFlygon[] =
{
- { .data = gIntro2BrendanNoTurnPal, .tag = 1002 },
- { .data = gIntro2BrendanNoTurnPal, .tag = 1003 },
- { .data = gIntro2FlygonPal, .tag = 1004 },
- { .data = gIntro2FlygonPal, .tag = 1005 },
+ { .data = gIntroPlayer_Pal, .tag = TAG_BRENDAN },
+ { .data = gIntroPlayer_Pal, .tag = TAG_MAY },
+ { .data = gIntroFlygon_Pal, .tag = TAG_FLYGON_LATIOS },
+ { .data = gIntroFlygon_Pal, .tag = TAG_FLYGON_LATIAS },
{}
};
-const struct CompressedSpriteSheet gUnknown_085F5334[] =
+const struct CompressedSpriteSheet gSpriteSheet_CreditsBrendan[] =
{
{
- .data = gIntro2BrendanTiles,
+ .data = sBrendanCredits_Gfx,
.size = 0x3800,
- .tag = 1002
+ .tag = TAG_BRENDAN
},
{}
};
-const struct CompressedSpriteSheet gUnknown_085F5344[] =
+const struct CompressedSpriteSheet gSpriteSheet_CreditsMay[] =
{
{
- .data = gIntro2MayTiles,
+ .data = sMayCredits_Gfx,
.size = 0x3800,
- .tag = 1003
+ .tag = TAG_MAY
},
{}
};
-const struct CompressedSpriteSheet gUnknown_085F5354[] =
+const struct CompressedSpriteSheet gSpriteSheet_CreditsBicycle[] =
{
{
- .data = gIntro2BicycleTiles,
+ .data = sBicycle_Gfx,
.size = 0x1000,
- .tag = 1001
+ .tag = TAG_BICYCLE
},
{}
};
-static const struct CompressedSpriteSheet gUnknown_085F5364[] =
+// Unused
+static const struct CompressedSpriteSheet sSpriteSheet_Latios[] =
{
{
- .data = gIntro2LatiosTiles,
+ .data = sLatios_Gfx,
.size = 0x1000,
- .tag = 1004
+ .tag = TAG_FLYGON_LATIOS
},
{}
};
-static const struct CompressedSpriteSheet gUnknown_085F5374[] =
+// Unused
+static const struct CompressedSpriteSheet sSpriteSheet_Latias[] =
{
{
- .data = gIntro2LatiasTiles,
+ .data = sLatias_Gfx,
.size = 0x1000,
- .tag = 1005
+ .tag = TAG_FLYGON_LATIAS
},
{}
};
-const struct SpritePalette gUnknown_085F5384[] =
+const struct SpritePalette gSpritePalettes_Credits[] =
{
- { .data = gIntro2BrendanPalette, .tag = 1002 },
- { .data = gIntro2MayPalette, .tag = 1003 },
- { .data = gIntro2LatiosPalette, .tag = 1004 },
- { .data = gIntro2LatiasPalette, .tag = 1005 },
+ { .data = sBrendanCredits_Pal, .tag = TAG_BRENDAN },
+ { .data = sMayCredits_Pal, .tag = TAG_MAY },
+ { .data = sLatios_Pal, .tag = TAG_FLYGON_LATIOS },
+ { .data = sLatias_Pal, .tag = TAG_FLYGON_LATIAS },
{}
};
-const struct CompressedSpriteSheet gUnknown_085F53AC[] =
+const struct CompressedSpriteSheet gSpriteSheet_CreditsRivalBrendan[] =
{
{
- .data = gIntro2BrendanTiles,
+ .data = sBrendanCredits_Gfx,
.size = 0x2000,
- .tag = 1002
+ .tag = TAG_BRENDAN
},
{}
};
-const struct CompressedSpriteSheet gUnknown_085F53BC[] =
+const struct CompressedSpriteSheet gSpriteSheet_CreditsRivalMay[] =
{
{
- .data = gIntro2MayTiles,
+ .data = sMayCredits_Gfx,
.size = 0x2000,
- .tag = 1003
+ .tag = TAG_MAY
},
{}
};
-EWRAM_DATA u16 gUnknown_0203BD24 = 0;
-EWRAM_DATA s16 gUnknown_0203BD26 = 0;
-EWRAM_DATA s16 gUnknown_0203BD28 = 0;
+EWRAM_DATA u16 gIntroCredits_MovingSceneryVBase = 0;
+EWRAM_DATA s16 gIntroCredits_MovingSceneryVOffset = 0;
+EWRAM_DATA s16 gIntroCredits_MovingSceneryState = 0;
-static void sub_817B76C(void);
-static void sub_817B788(void);
-static void sub_817B7A4(void);
-static void sub_817B458(u8);
+static void CreateCloudSprites(void);
+static void CreateTreeSprites(void);
+static void CreateHouseSprites(void);
+static void Task_BicycleBgAnimation(u8);
-void load_intro_part2_graphics(u8 a)
+void LoadIntroPart2Graphics(u8 scenery)
{
- LZ77UnCompVram(gUnknown_085F0740, (void *)(BG_CHAR_ADDR(1)));
- LZ77UnCompVram(gUnknown_085F0BC0, (void *)(BG_SCREEN_ADDR(15)));
- LoadPalette(&gUnknown_085F06E0, 240, 32);
- switch (a)
+ LZ77UnCompVram(sGrass_Gfx, (void *)(BG_CHAR_ADDR(1)));
+ LZ77UnCompVram(sGrass_Tilemap, (void *)(BG_SCREEN_ADDR(15)));
+ LoadPalette(&sGrass_Pal, 240, sizeof(sGrass_Pal));
+ switch (scenery)
{
case 0:
default:
- LZ77UnCompVram(gUnknown_085F0DBC, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_085F1398, (void *)(BG_SCREEN_ADDR(6)));
- LoadPalette(&gUnknown_085F0CFC, 0, 96);
- LoadCompressedSpriteSheet(gUnknown_085F5064);
- LoadPalette(&gUnknown_085F1668, 256, 32);
- sub_817B76C();
+ // Never reached, only called with an argument of 1
+ // Clouds are never used in this part of the intro
+ LZ77UnCompVram(sCloudsBg_Gfx, (void *)(VRAM));
+ LZ77UnCompVram(sCloudsBg_Tilemap, (void *)(BG_SCREEN_ADDR(6)));
+ LoadPalette(&sCloudsBg_Pal, 0, sizeof(sCloudsBg_Pal));
+ LoadCompressedSpriteSheet(sSpriteSheet_Clouds);
+ LoadPalette(&sClouds_Pal, 256, sizeof(sClouds_Pal));
+ CreateCloudSprites();
break;
case 1:
- LZ77UnCompVram(gUnknown_085F1824, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_085F1EAC, (void *)(BG_SCREEN_ADDR(6)));
- LoadPalette(&gUnknown_085F17E4, 0, 32);
- LoadCompressedSpriteSheet(gUnknown_085F50EC);
- LoadPalette(&gUnknown_085F21B0, 256, 32);
- sub_817B788();
+ LZ77UnCompVram(sTrees_Gfx, (void *)(VRAM));
+ LZ77UnCompVram(sTrees_Tilemap, (void *)(BG_SCREEN_ADDR(6)));
+ LoadPalette(&sTrees_Pal, 0, sizeof(sTrees_Pal));
+ LoadCompressedSpriteSheet(sSpriteSheet_TreesSmall);
+ LoadPalette(&sTreesSmall_Pal, 256, sizeof(sTreesSmall_Pal));
+ CreateTreeSprites();
break;
}
- gUnknown_0203BD28 = 0;
+ gIntroCredits_MovingSceneryState = INTROCRED_SCENERY_NORMAL;
gReservedSpritePaletteCount = 8;
}
// Note: This is only called with a=1.
-void sub_817B150(u8 a)
+void SetIntroPart2BgCnt(u8 scenery)
{
- switch (a)
+ // Only called with scenery = 1
+ switch (scenery)
{
default:
case 0:
@@ -811,58 +836,58 @@ void sub_817B150(u8 a)
}
}
-void sub_817B1C8(u8 a)
+void LoadCreditsSceneGraphics(u8 scene)
{
- LZ77UnCompVram(gUnknown_085F0740, (void *)(BG_CHAR_ADDR(1)));
- LZ77UnCompVram(gUnknown_085F0BC0, (void *)(BG_SCREEN_ADDR(15)));
- switch (a)
+ LZ77UnCompVram(sGrass_Gfx, (void *)(BG_CHAR_ADDR(1)));
+ LZ77UnCompVram(sGrass_Tilemap, (void *)(BG_SCREEN_ADDR(15)));
+ switch (scene)
{
- case 0:
+ case SCENE_OCEAN_MORNING:
default:
- LoadPalette(&gUnknown_085F06E0, 240, 32);
- LZ77UnCompVram(gUnknown_085F0DBC, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_085F1398, (void *)(BG_SCREEN_ADDR(6)));
- LoadPalette(&gUnknown_085F0CFC, 0, 96);
- LoadCompressedSpriteSheet(gUnknown_085F5064);
- LZ77UnCompVram(gUnknown_085F16A8, (void *)(OBJ_VRAM0));
- LoadPalette(&gUnknown_085F1668, 256, 32);
- sub_817B76C();
+ LoadPalette(&sGrass_Pal, 240, sizeof(sGrass_Pal));
+ LZ77UnCompVram(sCloudsBg_Gfx, (void *)(VRAM));
+ LZ77UnCompVram(sCloudsBg_Tilemap, (void *)(BG_SCREEN_ADDR(6)));
+ LoadPalette(&sCloudsBg_Pal, 0, sizeof(sCloudsBg_Pal));
+ LoadCompressedSpriteSheet(sSpriteSheet_Clouds);
+ LZ77UnCompVram(sClouds_Gfx, (void *)(OBJ_VRAM0));
+ LoadPalette(&sClouds_Pal, 256, sizeof(sClouds_Pal));
+ CreateCloudSprites();
break;
- case 1:
- LoadPalette(&gUnknown_085F0700, 240, 32);
- LZ77UnCompVram(gUnknown_085F0DBC, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_085F1398, (void *)(BG_SCREEN_ADDR(6)));
- LoadPalette(&gUnknown_085F0D5C, 0, 96);
- LoadCompressedSpriteSheet(gUnknown_085F5064);
- LZ77UnCompVram(gUnknown_085F16A8, (void *)(OBJ_VRAM0));
- LoadPalette(&gUnknown_085F1688, 256, 32);
- sub_817B76C();
+ case SCENE_OCEAN_SUNSET:
+ LoadPalette(&sGrassSunset_Pal, 240, sizeof(sGrassSunset_Pal));
+ LZ77UnCompVram(sCloudsBg_Gfx, (void *)(VRAM));
+ LZ77UnCompVram(sCloudsBg_Tilemap, (void *)(BG_SCREEN_ADDR(6)));
+ LoadPalette(&sCloudsBgSunset_Pal, 0, sizeof(sCloudsBgSunset_Pal));
+ LoadCompressedSpriteSheet(sSpriteSheet_Clouds);
+ LZ77UnCompVram(sClouds_Gfx, (void *)(OBJ_VRAM0));
+ LoadPalette(&sCloudsSunset_Pal, 256, sizeof(sCloudsSunset_Pal));
+ CreateCloudSprites();
break;
- case 2:
- case 3:
- LoadPalette(&gUnknown_085F0700, 240, 32);
- LZ77UnCompVram(gUnknown_085F1824, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_085F1EAC, (void *)(BG_SCREEN_ADDR(6)));
- LoadPalette(&gUnknown_085F1804, 0, 32);
- LoadCompressedSpriteSheet(gUnknown_085F50EC);
- LoadPalette(&gUnknown_085F1804, 256, 32);
- sub_817B788();
+ case SCENE_FOREST_RIVAL_ARRIVE:
+ case SCENE_FOREST_CATCH_RIVAL:
+ LoadPalette(&sGrassSunset_Pal, 240, sizeof(sGrassSunset_Pal));
+ LZ77UnCompVram(sTrees_Gfx, (void *)(VRAM));
+ LZ77UnCompVram(sTrees_Tilemap, (void *)(BG_SCREEN_ADDR(6)));
+ LoadPalette(&sTreesSunset_Pal, 0, sizeof(sTreesSunset_Pal));
+ LoadCompressedSpriteSheet(sSpriteSheet_TreesSmall);
+ LoadPalette(&sTreesSunset_Pal, 256, sizeof(sTreesSunset_Pal));
+ CreateTreeSprites();
break;
- case 4:
- LoadPalette(&gUnknown_085F0720, 240, 32);
- LZ77UnCompVram(gUnknown_085F235C, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_085F2568, (void *)(BG_SCREEN_ADDR(6)));
- LoadPalette(&gUnknown_085F231C, 0, 64);
- LoadCompressedSpriteSheet(gUnknown_085F5180);
- LoadPalette(&gUnknown_085F2548, 256, 32);
- sub_817B7A4();
+ case SCENE_CITY_NIGHT:
+ LoadPalette(&sGrassNight_Pal, 240, sizeof(sGrassNight_Pal));
+ LZ77UnCompVram(sHouses_Gfx, (void *)(VRAM));
+ LZ77UnCompVram(sHouses_Tilemap, (void *)(BG_SCREEN_ADDR(6)));
+ LoadPalette(&sHouses_Pal, 0, sizeof(sHouses_Pal));
+ LoadCompressedSpriteSheet(sSpriteSheet_HouseSilhouette);
+ LoadPalette(&sHouseSilhouette_Pal, 256, sizeof(sHouseSilhouette_Pal));
+ CreateHouseSprites();
break;
}
gReservedSpritePaletteCount = 8;
- gUnknown_0203BD28 = 0;
+ gIntroCredits_MovingSceneryState = INTROCRED_SCENERY_NORMAL;
}
-void sub_817B3A8(u8 a)
+void SetCreditsSceneBgCnt(u8 scene)
{
SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3)
| BGCNT_CHARBASE(0)
@@ -885,69 +910,84 @@ void sub_817B3A8(u8 a)
| DISPCNT_OBJ_ON);
}
-u8 CreateBicycleAnimationTask(u8 a, u16 b, u16 c, u16 d)
-{
- u8 taskId = CreateTask(&sub_817B458, 0);
-
- gTasks[taskId].data[0] = a;
- gTasks[taskId].data[1] = b;
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].data[3] = 0;
- gTasks[taskId].data[4] = c;
- gTasks[taskId].data[5] = 0;
- gTasks[taskId].data[6] = 0;
- gTasks[taskId].data[7] = d;
- gTasks[taskId].data[8] = 8;
- gTasks[taskId].data[9] = 0;
- sub_817B458(taskId);
+#define tMode data[0] // Can be 0-2, but only != 0 matters. Determines vertical movement for bg2
+#define tBg1Speed data[1]
+#define tBg1PosHi data[2]
+#define tBg1PosLo data[3]
+#define tBg2Speed data[4]
+#define tBg2PosHi data[5]
+#define tBg2PosLo data[6]
+#define tBg3Speed data[7]
+#define tBg3PosHi data[8]
+#define tBg3PosLo data[9]
+
+// Create task that manages the moving backgrounds during the bicycle ride
+u8 CreateBicycleBgAnimationTask(u8 mode, u16 bg1Speed, u16 bg2Speed, u16 bg3Speed)
+{
+ u8 taskId = CreateTask(Task_BicycleBgAnimation, 0);
+
+ gTasks[taskId].tMode = mode;
+ gTasks[taskId].tBg1Speed = bg1Speed;
+ gTasks[taskId].tBg1PosHi = 0;
+ gTasks[taskId].tBg1PosLo = 0;
+ gTasks[taskId].tBg2Speed = bg2Speed;
+ gTasks[taskId].tBg2PosHi = 0;
+ gTasks[taskId].tBg2PosLo = 0;
+ gTasks[taskId].tBg3Speed = bg3Speed;
+ gTasks[taskId].tBg3PosHi = 8;
+ gTasks[taskId].tBg3PosLo = 0;
+ Task_BicycleBgAnimation(taskId);
return taskId;
}
-static void sub_817B458(u8 taskId)
+static void Task_BicycleBgAnimation(u8 taskId)
{
- s16 data1;
- s16 data4;
- s16 data7;
- s32 r2;
+ s16 bg1Speed;
+ s16 bg2Speed;
+ s16 bg3Speed;
+ s32 offset;
- data1 = gTasks[taskId].data[1];
- if (data1 != 0)
+ // Move BG1
+ bg1Speed = gTasks[taskId].tBg1Speed;
+ if (bg1Speed != 0)
{
- r2 = (gTasks[taskId].data[2] << 16) + (u16)gTasks[taskId].data[3];
- r2 -= (u16)data1 << 4;
- gTasks[taskId].data[2] = r2 >> 16;
- gTasks[taskId].data[3] = r2;
- SetGpuReg(REG_OFFSET_BG1HOFS, gTasks[taskId].data[2]);
- SetGpuReg(REG_OFFSET_BG1VOFS, gUnknown_0203BD24 + gUnknown_0203BD26);
+ offset = (gTasks[taskId].tBg1PosHi << 16) + (u16)gTasks[taskId].tBg1PosLo;
+ offset -= (u16)bg1Speed << 4;
+ gTasks[taskId].tBg1PosHi = offset >> 16;
+ gTasks[taskId].tBg1PosLo = offset;
+ SetGpuReg(REG_OFFSET_BG1HOFS, gTasks[taskId].tBg1PosHi);
+ SetGpuReg(REG_OFFSET_BG1VOFS, gIntroCredits_MovingSceneryVBase + gIntroCredits_MovingSceneryVOffset);
}
- data4 = gTasks[taskId].data[4];
- if (data4 != 0)
+ // Move BG2
+ bg2Speed = gTasks[taskId].tBg2Speed;
+ if (bg2Speed != 0)
{
- r2 = (gTasks[taskId].data[5] << 16) + (u16)gTasks[taskId].data[6];
- r2 -= (u16)data4 << 4;
- gTasks[taskId].data[5] = r2 >> 16;
- gTasks[taskId].data[6] = r2;
- SetGpuReg(REG_OFFSET_BG2HOFS, gTasks[taskId].data[5]);
- if (gTasks[taskId].data[0] != 0)
- SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_0203BD24 + gUnknown_0203BD26);
+ offset = (gTasks[taskId].tBg2PosHi << 16) + (u16)gTasks[taskId].tBg2PosLo;
+ offset -= (u16)bg2Speed << 4;
+ gTasks[taskId].tBg2PosHi = offset >> 16;
+ gTasks[taskId].tBg2PosLo = offset;
+ SetGpuReg(REG_OFFSET_BG2HOFS, gTasks[taskId].tBg2PosHi);
+ if (gTasks[taskId].tMode != 0)
+ SetGpuReg(REG_OFFSET_BG2VOFS, gIntroCredits_MovingSceneryVBase + gIntroCredits_MovingSceneryVOffset);
else
- SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_0203BD24);
+ SetGpuReg(REG_OFFSET_BG2VOFS, gIntroCredits_MovingSceneryVBase);
}
- data7 = gTasks[taskId].data[7];
- if (data7 != 0)
+ // Move BG3
+ bg3Speed = gTasks[taskId].tBg3Speed;
+ if (bg3Speed != 0)
{
- r2 = (gTasks[taskId].data[8] << 16) + (u16)gTasks[taskId].data[9];
- r2 -= (u16)data7 << 4;
- gTasks[taskId].data[8] = r2 >> 16;
- gTasks[taskId].data[9] = r2;
- SetGpuReg(REG_OFFSET_BG3HOFS, gTasks[taskId].data[8]);
- SetGpuReg(REG_OFFSET_BG3VOFS, gUnknown_0203BD24);
+ offset = (gTasks[taskId].tBg3PosHi << 16) + (u16)gTasks[taskId].tBg3PosLo;
+ offset -= (u16)bg3Speed << 4;
+ gTasks[taskId].tBg3PosHi = offset >> 16;
+ gTasks[taskId].tBg3PosLo = offset;
+ SetGpuReg(REG_OFFSET_BG3HOFS, gTasks[taskId].tBg3PosHi);
+ SetGpuReg(REG_OFFSET_BG3VOFS, gIntroCredits_MovingSceneryVBase);
}
}
-void sub_817B540(u8 mode)
+void CycleSceneryPalette(u8 mode)
{
u16 x;
u16 y;
@@ -955,7 +995,6 @@ void sub_817B540(u8 mode)
{
case 0:
default:
- /* stuff */
if (gMain.vblankCounter1 & 3 || gPaletteFade.active)
break;
if (gMain.vblankCounter1 & 4)
@@ -968,149 +1007,167 @@ void sub_817B540(u8 mode)
x = gPlttBufferUnfaded[10];
y = gPlttBufferUnfaded[9];
}
- LoadPalette(&x, 9, 2);
- LoadPalette(&y, 10, 2);
+ LoadPalette(&x, 9, sizeof(x));
+ LoadPalette(&y, 10, sizeof(y));
break;
case 2:
if (gMain.vblankCounter1 & 3 || gPaletteFade.active)
break;
if (gMain.vblankCounter1 & 4)
{
- x = 0x3D27;
- y = 0x295;
+ x = RGB(7, 9, 15);
+ y = RGB(21, 20, 0);
}
else
{
- x = 0x31C;
- y = 0x3D27;
+ x = RGB(28, 24, 0);
+ y = RGB(7, 9, 15);
}
- LoadPalette(&x, 12, 2);
- LoadPalette(&y, 13, 2);
+ LoadPalette(&x, 12, sizeof(x));
+ LoadPalette(&y, 13, sizeof(y));
break;
case 1:
break;
}
}
-static void sub_817B62C(struct Sprite *sprite)
+#define tHasVerticalMove data[0]
+#define tXOffset data[1]
+#define tXPos data[2]
+
+static void SpriteCB_MovingScenery(struct Sprite *sprite)
{
- s32 var;
- s16 var2 = gUnknown_0203BD28;
+ s32 x;
+ s16 state = gIntroCredits_MovingSceneryState;
- if (var2 != 2)
+ if (state != INTROCRED_SCENERY_FROZEN)
{
- switch (var2)
+ switch (state)
{
- default:
+ default: // INTROCRED_SCENERY_DESTROY
DestroySprite(sprite);
break;
- case 0:
- var = ((sprite->pos1.x << 16) | (u16)sprite->data[2]) + (u16)sprite->data[1];
- sprite->pos1.x = var >> 16;
- sprite->data[2] = var;
- if (sprite->pos1.x > 0xFF)
- sprite->pos1.x = -0x20;
- if (sprite->data[0])
- sprite->pos2.y = -(gUnknown_0203BD24 + gUnknown_0203BD26);
+ case INTROCRED_SCENERY_NORMAL:
+ x = ((sprite->x << 16) | (u16)sprite->tXPos) + (u16)sprite->tXOffset;
+ sprite->x = x >> 16;
+ sprite->tXPos = x;
+ if (sprite->x > 255)
+ sprite->x = -32;
+ if (sprite->tHasVerticalMove)
+ sprite->y2 = -(gIntroCredits_MovingSceneryVBase + gIntroCredits_MovingSceneryVOffset);
else
- sprite->pos2.y = -gUnknown_0203BD24;
+ sprite->y2 = -gIntroCredits_MovingSceneryVBase;
break;
}
}
}
-static void sub_817B698(u8 a, const struct IntroCreditsSpriteMetadata *b, const union AnimCmd *const *c, u8 d)
+static void CreateMovingScenerySprites(bool8 hasVerticalMove, const struct IntroCreditsSpriteMetadata *metadata, const union AnimCmd *const *anims, u8 numSprites)
{
u8 i;
- for(i = 0; i < d; i++)
+ for(i = 0; i < numSprites; i++)
{
- u8 sprite = CreateSprite(&gUnknown_085F504C, b[i].x, b[i].y, b[i].subpriority);
- CalcCenterToCornerVec(&gSprites[sprite], b[i].shape, b[i].size, ST_OAM_AFFINE_OFF);
+ u8 sprite = CreateSprite(&sSpriteTemplate_MovingScenery, metadata[i].x, metadata[i].y, metadata[i].subpriority);
+ CalcCenterToCornerVec(&gSprites[sprite], metadata[i].shape, metadata[i].size, ST_OAM_AFFINE_OFF);
gSprites[sprite].oam.priority = 3;
- gSprites[sprite].oam.shape = b[i].shape;
- gSprites[sprite].oam.size = b[i].size;
+ gSprites[sprite].oam.shape = metadata[i].shape;
+ gSprites[sprite].oam.size = metadata[i].size;
gSprites[sprite].oam.paletteNum = 0;
- gSprites[sprite].anims = c;
- StartSpriteAnim(&gSprites[sprite], b[i].animNum);
- gSprites[sprite].data[0] = a;
- gSprites[sprite].data[1] = b[i].xOff;
- gSprites[sprite].data[2] = 0;
+ gSprites[sprite].anims = anims;
+ StartSpriteAnim(&gSprites[sprite], metadata[i].animNum);
+ gSprites[sprite].tHasVerticalMove = hasVerticalMove;
+ gSprites[sprite].tXOffset = metadata[i].xOff;
+ gSprites[sprite].tXPos = 0;
}
}
-static void sub_817B76C(void)
+#undef tHasVerticalMove
+#undef tXOffset
+#undef tXPos
+
+static void CreateCloudSprites(void)
{
- sub_817B698(0, gUnknown_085F50A4, gUnknown_085F5094, 9);
+ CreateMovingScenerySprites(FALSE, sSpriteMetadata_Clouds, sAnims_Clouds, 9);
}
-static void sub_817B788(void)
+static void CreateTreeSprites(void)
{
- sub_817B698(1, gUnknown_085F5120, gUnknown_085F5114, 12);
+ CreateMovingScenerySprites(TRUE, sSpriteMetadata_Trees, sAnims_Trees, 12);
}
-static void sub_817B7A4(void)
+static void CreateHouseSprites(void)
{
- sub_817B698(1, gUnknown_085F519C, gUnknown_085F5198, 6);
+ CreateMovingScenerySprites(TRUE, sSpriteMetadata_HouseSilhouette, sAnims_HouseSilhouette, 6);
}
-static void nullsub_65(struct Sprite *sprite)
+static void SpriteCB_Player(struct Sprite *sprite)
{
}
-static void sub_817B7C4(struct Sprite* sprite)
+#define sPlayerSpriteId data[0]
+
+static void SpriteCB_Bicycle(struct Sprite* sprite)
{
- sprite->invisible = gSprites[sprite->data[0]].invisible;
- sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
- sprite->pos1.y = gSprites[sprite->data[0]].pos1.y + 8;
- sprite->pos2.x = gSprites[sprite->data[0]].pos2.x;
- sprite->pos2.y = gSprites[sprite->data[0]].pos2.y;
+ sprite->invisible = gSprites[sprite->sPlayerSpriteId].invisible;
+ sprite->x = gSprites[sprite->sPlayerSpriteId].x;
+ sprite->y = gSprites[sprite->sPlayerSpriteId].y + 8;
+ sprite->x2 = gSprites[sprite->sPlayerSpriteId].x2;
+ sprite->y2 = gSprites[sprite->sPlayerSpriteId].y2;
}
-u8 intro_create_brendan_sprite(s16 a, s16 b)
+u8 CreateIntroBrendanSprite(s16 x, s16 y)
{
- u8 sprite = CreateSprite(&gUnknown_085F51EC, a, b, 2);
- u8 brendan = CreateSprite(&gUnknown_085F523C, a, b + 8, 3);
- gSprites[brendan].data[0] = sprite;
- return sprite;
+ u8 playerSpriteId = CreateSprite(&sSpriteTemplate_Brendan, x, y, 2);
+ u8 bicycleSpriteId = CreateSprite(&sSpriteTemplate_BrendanBicycle, x, y + 8, 3);
+ gSprites[bicycleSpriteId].sPlayerSpriteId = playerSpriteId;
+ return playerSpriteId;
}
-u8 intro_create_may_sprite(s16 a, s16 b)
+u8 CreateIntroMaySprite(s16 x, s16 y)
{
- u8 sprite = CreateSprite(&gUnknown_085F5204, a, b, 2);
- u8 may = CreateSprite(&gUnknown_085F5254, a, b + 8, 3);
- gSprites[may].data[0] = sprite;
- return sprite;
+ u8 playerSpriteId = CreateSprite(&sSpriteTemplate_May, x, y, 2);
+ u8 bicycleSpriteId = CreateSprite(&sSpriteTemplate_MayBicycle, x, y + 8, 3);
+ gSprites[bicycleSpriteId].sPlayerSpriteId = playerSpriteId;
+ return playerSpriteId;
}
-static void nullsub_66(struct Sprite *sprite)
+#undef sPlayerSpriteId
+
+static void SpriteCB_FlygonLeftHalf(struct Sprite *sprite)
{
}
-static void sub_817B8E8(struct Sprite* sprite)
+#define sLeftSpriteId data[0]
+
+static void SpriteCB_FlygonRightHalf(struct Sprite* sprite)
{
- sprite->invisible = gSprites[sprite->data[0]].invisible;
- sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
- sprite->pos2.x = gSprites[sprite->data[0]].pos2.x;
- sprite->pos2.y = gSprites[sprite->data[0]].pos2.y;
+ sprite->invisible = gSprites[sprite->sLeftSpriteId].invisible;
+ sprite->y = gSprites[sprite->sLeftSpriteId].y;
+ sprite->x2 = gSprites[sprite->sLeftSpriteId].x2;
+ sprite->y2 = gSprites[sprite->sLeftSpriteId].y2;
}
-static u8 sub_817B948(s16 a, s16 b)
+// In RS these were for Latios/Latias. In Emerald both are replaced with Flygon and now only 1 is used
+static u8 CreateIntroFlygonSprite_Unused(s16 x, s16 y)
{
- u8 sprite = CreateSprite(&gUnknown_085F528C, a - 32, b, 5);
- u8 latios = CreateSprite(&gUnknown_085F528C, a + 32, b, 6);
- gSprites[latios].data[0] = sprite;
- StartSpriteAnim(&gSprites[latios], 1);
- gSprites[latios].callback = &sub_817B8E8;
- return sprite;
+ u8 leftSpriteId = CreateSprite(&sSpriteTemplate_FlygonLatios, x - 32, y, 5);
+ u8 rightSpriteId = CreateSprite(&sSpriteTemplate_FlygonLatios, x + 32, y, 6);
+ gSprites[rightSpriteId].sLeftSpriteId = leftSpriteId;
+ StartSpriteAnim(&gSprites[rightSpriteId], 1);
+ gSprites[rightSpriteId].callback = &SpriteCB_FlygonRightHalf;
+ return leftSpriteId;
}
-u8 intro_create_flygon_sprite(s16 a, s16 b)
+
+u8 CreateIntroFlygonSprite(s16 x, s16 y)
{
- u8 sprite = CreateSprite(&gUnknown_085F52A4, a - 32, b, 5);
- u8 flygon = CreateSprite(&gUnknown_085F52A4, a + 32, b, 6);
- gSprites[flygon].data[0] = sprite;
- StartSpriteAnim(&gSprites[flygon], 1);
- gSprites[flygon].callback = &sub_817B8E8;
- return sprite;
+ u8 leftSpriteId = CreateSprite(&sSpriteTemplate_FlygonLatias, x - 32, y, 5);
+ u8 rightSpriteId = CreateSprite(&sSpriteTemplate_FlygonLatias, x + 32, y, 6);
+ gSprites[rightSpriteId].sLeftSpriteId = leftSpriteId;
+ StartSpriteAnim(&gSprites[rightSpriteId], 1);
+ gSprites[rightSpriteId].callback = &SpriteCB_FlygonRightHalf;
+ return leftSpriteId;
}
+
+#undef sLeftSpriteId
diff --git a/src/item.c b/src/item.c
index 892092184..156034262 100644
--- a/src/item.c
+++ b/src/item.c
@@ -14,7 +14,6 @@
#include "battle_pyramid_bag.h"
#include "constants/items.h"
#include "constants/hold_effects.h"
-#include "constants/tv.h"
extern u16 gUnknown_0203CF30[];
@@ -281,10 +280,6 @@ bool8 AddBagItem(u16 itemId, u16 count)
{
// successfully added to already existing item's count
SetBagItemQuantity(&newItems[i].quantity, ownedCount + count);
-
- // goto SUCCESS_ADD_ITEM;
- // is equivalent but won't match
-
memcpy(itemPocket->itemSlots, newItems, itemPocket->capacity * sizeof(struct ItemSlot));
Free(newItems);
return TRUE;
@@ -304,7 +299,7 @@ bool8 AddBagItem(u16 itemId, u16 count)
// don't create another instance of the item if it's at max slot capacity and count is equal to 0
if (count == 0)
{
- goto SUCCESS_ADD_ITEM;
+ break;
}
}
}
@@ -335,7 +330,8 @@ bool8 AddBagItem(u16 itemId, u16 count)
{
// created a new slot and added quantity
SetBagItemQuantity(&newItems[i].quantity, count);
- goto SUCCESS_ADD_ITEM;
+ count = 0;
+ break;
}
}
}
@@ -346,11 +342,9 @@ bool8 AddBagItem(u16 itemId, u16 count)
return FALSE;
}
}
-
- SUCCESS_ADD_ITEM:
- memcpy(itemPocket->itemSlots, newItems, itemPocket->capacity * sizeof(struct ItemSlot));
- Free(newItems);
- return TRUE;
+ memcpy(itemPocket->itemSlots, newItems, itemPocket->capacity * sizeof(struct ItemSlot));
+ Free(newItems);
+ return TRUE;
}
}
@@ -554,7 +548,6 @@ bool8 AddPCItem(u16 itemId, u16 count)
void RemovePCItem(u8 index, u16 count)
{
- // UB: should use GetPCItemQuantity and SetPCItemQuantity functions
gSaveBlock1Ptr->pcItems[index].quantity -= count;
if (gSaveBlock1Ptr->pcItems[index].quantity == 0)
{
@@ -820,7 +813,7 @@ bool8 RemovePyramidBagItem(u16 itemId, u16 count)
u16 *items = gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode];
u8 *quantities = gSaveBlock2Ptr->frontier.pyramidBag.quantity[gSaveBlock2Ptr->frontier.lvlMode];
- i = gPyramidBagCursorData.cursorPosition + gPyramidBagCursorData.scrollPosition;
+ i = gPyramidBagMenuState.cursorPosition + gPyramidBagMenuState.scrollPosition;
if (items[i] == itemId && quantities[i] >= count)
{
quantities[i] -= count;
diff --git a/src/item_menu.c b/src/item_menu.c
index 8836c0c63..39abf883a 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -133,7 +133,7 @@ void UpdatePocketScrollPositions(void);
u8 CreateBagInputHandlerTask(u8);
void sub_81AC23C(u8);
void BagMenu_MoveCursorCallback(s32 a, bool8 b, struct ListMenu*);
-void BagMenu_ItemPrintCallback(u8 windowId, s32 itemIndex, u8 a);
+void BagMenu_ItemPrintCallback(u8 windowId, u32 itemIndex, u8 a);
void ItemMenu_UseOutOfBattle(u8 taskId);
void ItemMenu_Toss(u8 taskId);
void ItemMenu_Register(u8 taskId);
@@ -509,7 +509,6 @@ EWRAM_DATA u16 gSpecialVar_ItemId = 0;
static EWRAM_DATA struct TempWallyStruct *sTempWallyBag = 0;
extern u8 *const gPocketNamesStringsTable[];
-extern u8* gReturnToXStringsTable[];
extern const u8 EventScript_SelectWithoutRegisteredItem[];
extern const u16 gUnknown_0860F074[];
@@ -530,7 +529,7 @@ void CB2_BagMenuFromBattle(void)
if (!InBattlePyramid())
GoToBagMenu(ITEMMENULOCATION_BATTLE, POCKETS_COUNT, CB2_SetUpReshowBattleScreenAfterMenu2);
else
- GoToBattlePyramidBagMenu(1, CB2_SetUpReshowBattleScreenAfterMenu2);
+ GoToBattlePyramidBagMenu(PYRAMIDBAG_LOC_BATTLE, CB2_SetUpReshowBattleScreenAfterMenu2);
}
// Choosing berry to plant
@@ -707,7 +706,7 @@ bool8 SetupBagMenu(void)
gMain.state++;
break;
case 16:
- sub_80D4FAC();
+ CreateItemMenuSwapLine();
gMain.state++;
break;
case 17:
@@ -787,7 +786,7 @@ bool8 LoadBagMenu_Graphics(void)
gBagMenu->graphicsLoadState++;
break;
default:
- LoadListMenuArrowsGfx();
+ LoadListMenuSwapLineGfx();
gBagMenu->graphicsLoadState = 0;
return TRUE;
}
@@ -894,7 +893,7 @@ void BagMenu_MoveCursorCallback(s32 itemIndex, bool8 onInit, struct ListMenu *li
}
}
-void BagMenu_ItemPrintCallback(u8 windowId, s32 itemIndex, u8 y)
+void BagMenu_ItemPrintCallback(u8 windowId, u32 itemIndex, u8 y)
{
u16 itemId;
u16 itemQuantity;
@@ -947,7 +946,7 @@ void BagMenu_PrintDescription(int itemIndex)
}
else
{
- StringCopy(gStringVar1, gReturnToXStringsTable[gBagPositionStruct.location]);
+ StringCopy(gStringVar1, gBagMenu_ReturnToStrings[gBagPositionStruct.location]);
StringExpandPlaceholders(gStringVar4, gText_ReturnToVar1);
str = gStringVar4;
}
@@ -1373,7 +1372,7 @@ void BagMenu_SwapItems(u8 taskId)
StringExpandPlaceholders(gStringVar4, gText_MoveVar1Where);
FillWindowPixelBuffer(1, PIXEL_FILL(0));
BagMenu_Print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
- sub_80D4FEC(data[1]);
+ UpdateItemMenuSwapLinePos(data[1]);
BagDestroyPocketSwitchArrowPair();
BagMenu_PrintCursor_(data[0], 2);
gTasks[taskId].func = Task_HandleSwappingItemsInput;
@@ -1396,8 +1395,8 @@ static void Task_HandleSwappingItemsInput(u8 taskId)
{
input = ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket], &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]);
- sub_80D4FC8(0);
- sub_80D4FEC(gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]);
+ SetItemMenuSwapLineInvisibility(FALSE);
+ UpdateItemMenuSwapLinePos(gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]);
switch (input)
{
case LIST_NOTHING_CHOSEN:
@@ -1435,7 +1434,7 @@ void sub_81AC498(u8 taskId)
gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]--;
LoadBagItemListBuffers(gBagPositionStruct.pocket);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
- sub_80D4FC8(1);
+ SetItemMenuSwapLineInvisibility(TRUE);
CreatePocketSwitchArrowPair();
gTasks[taskId].func = Task_BagMenu_HandleInput;
}
@@ -1453,12 +1452,12 @@ void sub_81AC590(u8 taskId)
gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]--;
LoadBagItemListBuffers(gBagPositionStruct.pocket);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
- sub_80D4FC8(1);
+ SetItemMenuSwapLineInvisibility(TRUE);
CreatePocketSwitchArrowPair();
gTasks[taskId].func = Task_BagMenu_HandleInput;
}
-void OpenContextMenu(u8 unused)
+static void OpenContextMenu(u8 unused)
{
switch (gBagPositionStruct.location)
{
@@ -1604,8 +1603,8 @@ void sub_81ACAF8(u8 a)
void sub_81ACB54(u8 a, u8 b, u8 c)
{
- sub_8198DBC(a, 7, 8, 1, 0x38, b, c, sItemMenuActions, gBagMenu->contextMenuItemsPtr);
- sub_8199944(a, 0x38, b, c, 0);
+ PrintMenuActionGrid(a, 7, 8, 1, 0x38, b, c, sItemMenuActions, gBagMenu->contextMenuItemsPtr);
+ InitMenuActionGrid(a, 0x38, b, c, 0);
}
void Task_ItemContext_FieldOrBattle(u8 taskId)
@@ -1850,7 +1849,7 @@ void ItemMenu_Register(u8 taskId)
void ItemMenu_Give(u8 taskId)
{
BagMenu_RemoveSomeWindow();
- if (!itemid_80BF6D8_mail_related(gSpecialVar_ItemId))
+ if (!IsWritingMailAllowed(gSpecialVar_ItemId))
{
DisplayItemMessage(taskId, 1, gText_CantWriteMail, sub_81AD350);
}
@@ -1925,7 +1924,7 @@ void CB2_ReturnToBagMenuPocket(void)
void Task_ItemContext_FieldGive(u8 taskId)
{
- if (!itemid_80BF6D8_mail_related(gSpecialVar_ItemId))
+ if (!IsWritingMailAllowed(gSpecialVar_ItemId))
{
DisplayItemMessage(taskId, 1, gText_CantWriteMail, sub_81AD350);
}
diff --git a/src/item_menu_icons.c b/src/item_menu_icons.c
index dd0081161..5c0849eef 100644
--- a/src/item_menu_icons.c
+++ b/src/item_menu_icons.c
@@ -244,7 +244,7 @@ static const struct OamData sBerryPicRotatingOamData =
.affineParam = 0
};
-static const union AnimCmd sSpriteAnim_857FBD8[] =
+static const union AnimCmd sAnim_BerryPic[] =
{
ANIMCMD_FRAME(0, 0),
ANIMCMD_END
@@ -252,7 +252,7 @@ static const union AnimCmd sSpriteAnim_857FBD8[] =
static const union AnimCmd *const sBerryPicSpriteAnimTable[] =
{
- sSpriteAnim_857FBD8
+ sAnim_BerryPic
};
static const struct SpriteFrameImage sBerryPicSpriteImageTable[] =
@@ -432,7 +432,7 @@ void SetBagVisualPocketId(u8 bagPocketId, bool8 isSwitchingPockets)
struct Sprite *sprite = &gSprites[gBagMenu->spriteId[0]];
if (isSwitchingPockets)
{
- sprite->pos2.y = -5;
+ sprite->y2 = -5;
sprite->callback = SpriteCB_BagVisualSwitchingPockets;
sprite->data[0] = bagPocketId + 1;
StartSpriteAnim(sprite, 0);
@@ -445,9 +445,9 @@ void SetBagVisualPocketId(u8 bagPocketId, bool8 isSwitchingPockets)
static void SpriteCB_BagVisualSwitchingPockets(struct Sprite *sprite)
{
- if (sprite->pos2.y != 0)
+ if (sprite->y2 != 0)
{
- sprite->pos2.y++;
+ sprite->y2++;
}
else
{
@@ -526,8 +526,8 @@ void AddBagItemIconSprite(u16 itemId, u8 id)
if (iconSpriteId != MAX_SPRITES)
{
*spriteId = iconSpriteId;
- gSprites[iconSpriteId].pos2.x = 24;
- gSprites[iconSpriteId].pos2.y = 88;
+ gSprites[iconSpriteId].x2 = 24;
+ gSprites[iconSpriteId].y2 = 88;
}
}
}
@@ -537,19 +537,19 @@ void RemoveBagItemIconSprite(u8 id)
RemoveBagSprite(id + 2);
}
-void sub_80D4FAC(void)
+void CreateItemMenuSwapLine(void)
{
- sub_8122344(&gBagMenu->spriteId[4], 8);
+ CreateSwapLineSprites(&gBagMenu->spriteId[4], 8);
}
-void sub_80D4FC8(u8 arg0)
+void SetItemMenuSwapLineInvisibility(bool8 invisible)
{
- sub_81223FC(&gBagMenu->spriteId[4], 8, arg0);
+ SetSwapLineSpritesInvisibility(&gBagMenu->spriteId[4], 8, invisible);
}
-void sub_80D4FEC(u8 arg0)
+void UpdateItemMenuSwapLinePos(u8 y)
{
- sub_8122448(&gBagMenu->spriteId[4], 136, 120, (arg0 + 1) * 16);
+ UpdateSwapLineSpritesPos(&gBagMenu->spriteId[4], 136, 120, (y + 1) * 16);
}
static void sub_80D5018(void *mem0, void *mem1)
diff --git a/src/item_use.c b/src/item_use.c
index af0ca9ee5..c9087e929 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -109,8 +109,8 @@ static void SetUpItemUseCallback(u8 taskId)
}
else
{
- gPyramidBagResources->callback2 = sItemUseCallbacks[type];
- CloseBattlePyramidBagAndSetCallback(taskId);
+ gPyramidBagMenu->exitCallback = sItemUseCallbacks[type];
+ CloseBattlePyramidBag(taskId);
}
}
@@ -822,8 +822,8 @@ static void RemoveUsedItem(void)
}
else
{
- sub_81C5924();
- sub_81C59BC();
+ UpdatePyramidBagList();
+ UpdatePyramidBagCursorPos();
}
}
@@ -910,7 +910,7 @@ static void ItemUseOnFieldCB_EscapeRope(u8 taskId)
bool8 CanUseDigOrEscapeRopeOnCurMap(void)
{
- if (gMapHeader.flags & MAP_ALLOW_ESCAPING)
+ if (gMapHeader.allowEscaping)
return TRUE;
else
return FALSE;
@@ -943,7 +943,7 @@ void ItemUseInBattle_PokeBall(u8 taskId)
if (!InBattlePyramid())
Task_FadeAndCloseBagMenu(taskId);
else
- CloseBattlePyramidBagAndSetCallback(taskId);
+ CloseBattlePyramidBag(taskId);
}
else if (!InBattlePyramid())
{
@@ -960,7 +960,7 @@ static void Task_CloseStatIncreaseMessage(u8 taskId)
if (!InBattlePyramid())
Task_FadeAndCloseBagMenu(taskId);
else
- CloseBattlePyramidBagAndSetCallback(taskId);
+ CloseBattlePyramidBag(taskId);
}
}
@@ -1005,8 +1005,8 @@ static void ItemUseInBattle_ShowPartyMenu(u8 taskId)
}
else
{
- gPyramidBagResources->callback2 = ChooseMonForInBattleItem;
- CloseBattlePyramidBagAndSetCallback(taskId);
+ gPyramidBagMenu->exitCallback = ChooseMonForInBattleItem;
+ CloseBattlePyramidBag(taskId);
}
}
@@ -1039,7 +1039,7 @@ void ItemUseInBattle_Escape(u8 taskId)
if (!InBattlePyramid())
DisplayItemMessage(taskId, 1, gStringVar4, Task_FadeAndCloseBagMenu);
else
- DisplayItemMessageInBattlePyramid(taskId, gStringVar4, CloseBattlePyramidBagAndSetCallback);
+ DisplayItemMessageInBattlePyramid(taskId, gStringVar4, CloseBattlePyramidBag);
}
else
{
diff --git a/src/librfu_intr.c b/src/librfu_intr.c
index 1361be40e..19ea60b06 100644
--- a/src/librfu_intr.c
+++ b/src/librfu_intr.c
@@ -148,11 +148,7 @@ static void sio32intr_clock_slave(void)
{
u32 regSIODATA32;
u32 r0;
- #ifndef NONMATCHING
- register u32 reqLen asm("r2");
- #else
- u32 reqLen;
- #endif
+ u32 reqLen;
gSTWIStatus->timerActive = 0;
STWI_set_timer_in_RAM(100);
@@ -165,10 +161,14 @@ static void sio32intr_clock_slave(void)
((u32*)gSTWIStatus->rxPacket)[0] = regSIODATA32;
gSTWIStatus->reqNext = 1;
r0 = 0x99660000;
- if ((regSIODATA32 >> 16) == (r0 >> 16))
+ // variable reuse required
+ reqLen = (regSIODATA32 >> 16);
+ if (reqLen == (r0 >> 16))
{
- gSTWIStatus->reqLength = reqLen = regSIODATA32 >> 8;
- gSTWIStatus->reqActiveCommand = regSIODATA32;
+ // only reqLen = regSIODATA32 >> 8 is needed to match, but it looks a bit
+ // more consistent when both lines update the variables. Might have been a macro?
+ gSTWIStatus->reqLength = reqLen = (regSIODATA32 >> 8);
+ gSTWIStatus->reqActiveCommand = reqLen = (regSIODATA32 >> 0);
if (gSTWIStatus->reqLength == 0)
{
if (
diff --git a/src/librfu_rfu.c b/src/librfu_rfu.c
index f39ccb74c..309fc4ead 100644
--- a/src/librfu_rfu.c
+++ b/src/librfu_rfu.c
@@ -1550,21 +1550,20 @@ u16 rfu_changeSendTarget(u8 connType, u8 slotStatusIndex, u8 bmNewTgtSlot)
u16 rfu_NI_stopReceivingData(u8 slotStatusIndex)
{
- struct NIComm *NI_comm;
u16 imeBak;
+ struct NIComm *NI_comm;
if (slotStatusIndex >= RFU_CHILD_MAX)
return ERR_SLOT_NO;
NI_comm = &gRfuSlotStatusNI[slotStatusIndex]->recv;
imeBak = REG_IME;
- ++imeBak; --imeBak; // fix imeBak, NI_comm register swap
REG_IME = 0;
- if (gRfuSlotStatusNI[slotStatusIndex]->recv.state & SLOT_BUSY_FLAG)
+ if (NI_comm->state & SLOT_BUSY_FLAG)
{
- if (gRfuSlotStatusNI[slotStatusIndex]->recv.state == SLOT_STATE_RECV_LAST)
- gRfuSlotStatusNI[slotStatusIndex]->recv.state = SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN;
+ if (NI_comm->state == SLOT_STATE_RECV_LAST)
+ NI_comm->state = SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN;
else
- gRfuSlotStatusNI[slotStatusIndex]->recv.state = SLOT_STATE_RECV_FAILED;
+ NI_comm->state = SLOT_STATE_RECV_FAILED;
gRfuLinkStatus->recvSlotNIFlag &= ~(1 << slotStatusIndex);
rfu_STC_releaseFrame(slotStatusIndex, 1, NI_comm);
}
@@ -1758,9 +1757,6 @@ static void rfu_constructSendLLFrame(void)
{
u8 *maxSize = llf_p - offsetof(struct RfuFixed, LLFBuffer[1]);
- // Does the volatile qualifier make sense?
- // It's the same as:
- // asm("":::"memory");
pakcketSize = maxSize - *(u8 *volatile *)&gRfuFixed;
}
}
diff --git a/src/librfu_sio32id.c b/src/librfu_sio32id.c
index b6623540f..1c02840e8 100644
--- a/src/librfu_sio32id.c
+++ b/src/librfu_sio32id.c
@@ -123,34 +123,29 @@ static void Sio32IDIntr(void)
{
u32 regSIODATA32;
u16 delay;
-#ifndef NONMATCHING
- register u32 rfuSIO32IdUnk0_times_16 asm("r1");
- register u16 negRfuSIO32IdUnk6 asm("r0");
-#else
u32 rfuSIO32IdUnk0_times_16;
- u16 negRfuSIO32IdUnk6;
-#endif
regSIODATA32 = REG_SIODATA32;
if (gRfuSIO32Id.MS_mode != AGB_CLK_MASTER)
REG_SIOCNT |= SIO_ENABLE;
- rfuSIO32IdUnk0_times_16 = 16 * gRfuSIO32Id.MS_mode; // to handle side effect of inline asm
- rfuSIO32IdUnk0_times_16 = (regSIODATA32 << rfuSIO32IdUnk0_times_16) >> 16;
+ rfuSIO32IdUnk0_times_16 = (regSIODATA32 << (16 * gRfuSIO32Id.MS_mode)) >> 16;
regSIODATA32 = (regSIODATA32 << 16 * (1 - gRfuSIO32Id.MS_mode)) >> 16;
if (gRfuSIO32Id.lastId == 0)
{
- if (rfuSIO32IdUnk0_times_16 == gRfuSIO32Id.recv_id)
+ u16 backup = rfuSIO32IdUnk0_times_16;
+ if (backup == gRfuSIO32Id.recv_id)
{
- if (gRfuSIO32Id.count > 3)
+ if (gRfuSIO32Id.count < 4)
{
- gRfuSIO32Id.lastId = regSIODATA32;
- }
- else if (rfuSIO32IdUnk0_times_16 == (u16)~gRfuSIO32Id.send_id)
- {
- negRfuSIO32IdUnk6 = ~gRfuSIO32Id.recv_id;
- if (regSIODATA32 == negRfuSIO32IdUnk6)
- ++gRfuSIO32Id.count;
+ backup = (u16)~gRfuSIO32Id.send_id;
+ if (gRfuSIO32Id.recv_id == backup)
+ {
+ if (regSIODATA32 == (u16)~gRfuSIO32Id.recv_id)
+ ++gRfuSIO32Id.count;
+ }
}
+ else
+ gRfuSIO32Id.lastId = regSIODATA32;
}
else
{
diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c
index 5bad07420..6fa8ba4eb 100644
--- a/src/lilycove_lady.c
+++ b/src/lilycove_lady.c
@@ -762,25 +762,16 @@ void BufferContestName(u8 *dest, u8 category)
StringCopy(dest, sContestNames[category]);
}
-// used in tv.c to determine sTVShowState for Contest Lady show
-// if return val is 1, sTVShowState is 1
-// if return val is 2, sTVShowState is 3
-// if return val is 0, sTVShowState is 2
-u8 sub_818E880(void)
+// Used by the Contest Lady's TV show to determine how well she performed
+u8 GetContestLadyPokeblockState(void)
{
sContestLadyPtr = &gSaveBlock1Ptr->lilycoveLady.contest;
if (sContestLadyPtr->numGoodPokeblocksGiven >= LILYCOVE_LADY_GIFT_THRESHOLD)
- {
- return 1;
- }
+ return CONTEST_LADY_GOOD;
else if (sContestLadyPtr->numGoodPokeblocksGiven == 0)
- {
- return 2;
- }
+ return CONTEST_LADY_BAD;
else
- {
- return 0;
- }
+ return CONTEST_LADY_NORMAL;
}
@@ -814,7 +805,7 @@ void Script_BufferContestLadyCategoryAndMonName(void)
void OpenPokeblockCaseForContestLady(void)
{
- OpenPokeblockCase(3, CB2_ReturnToField);
+ OpenPokeblockCase(PBLOCK_CASE_GIVE, CB2_ReturnToField);
}
void SetContestLadyGivenPokeblock(void)
diff --git a/src/link.c b/src/link.c
index 6dc5a09f3..8a04b53e5 100644
--- a/src/link.c
+++ b/src/link.c
@@ -221,7 +221,7 @@ static const struct WindowTemplate sLinkErrorWindowTemplates[] = {
}, DUMMY_WIN_TEMPLATE
};
-static const u8 sTextColors[] = { TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY };
+static const u8 sTextColors[] = { TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY };
static const u8 sUnusedData[] = {0x00, 0xFF, 0xFE, 0xFF, 0x00};
bool8 IsWirelessAdapterConnected(void)
@@ -1791,15 +1791,14 @@ bool8 HandleLinkConnection(void)
{
gLinkStatus = LinkMain1(&gShouldAdvanceLinkState, gSendCmd, gRecvCmds);
LinkMain2(&gMain.heldKeys);
-
- if ((gLinkStatus & LINK_STAT_RECEIVED_NOTHING) && sub_808766C() == TRUE)
+ if ((gLinkStatus & LINK_STAT_RECEIVED_NOTHING) && IsSendingKeysOverCable() == TRUE)
return TRUE;
}
else
{
r4 = sub_8010EC0();
r5 = sub_8010F1C();
- if (sub_808766C() == TRUE)
+ if (IsSendingKeysOverCable() == TRUE)
{
if (r4 == TRUE || IsRfuRecvQueueEmpty() || r5)
return TRUE;
diff --git a/src/link_rfu_3.c b/src/link_rfu_3.c
index f47167873..251b4792d 100644
--- a/src/link_rfu_3.c
+++ b/src/link_rfu_3.c
@@ -880,8 +880,8 @@ void UpdateWirelessStatusIndicatorSprite(void)
sprite->sFrameDelay++;
}
gMain.oamBuffer[125] = sWirelessStatusIndicatorOamData;
- gMain.oamBuffer[125].x = sprite->pos1.x + sprite->centerToCornerVecX;
- gMain.oamBuffer[125].y = sprite->pos1.y + sprite->centerToCornerVecY;
+ gMain.oamBuffer[125].x = sprite->x + sprite->centerToCornerVecX;
+ gMain.oamBuffer[125].y = sprite->y + sprite->centerToCornerVecY;
gMain.oamBuffer[125].paletteNum = sprite->oam.paletteNum;
gMain.oamBuffer[125].tileNum = sprite->sTileStart + sprite->anims[sprite->sCurrAnimNum][sprite->sFrameIdx].frame.imageValue;
CpuCopy16(gMain.oamBuffer + 125, (struct OamData *)OAM + 125, sizeof(struct OamData));
diff --git a/src/list_menu.c b/src/list_menu.c
index 79ea1fde0..83c9acd66 100644
--- a/src/list_menu.c
+++ b/src/list_menu.c
@@ -679,7 +679,7 @@ static u8 ListMenuAddCursorObject(struct ListMenu *list, u32 cursorKind)
struct CursorStruct cursor;
cursor.left = 0;
- cursor.top = 160;
+ cursor.top = DISPLAY_HEIGHT;
cursor.rowWidth = GetWindowAttribute(list->template.windowId, WINDOW_WIDTH) * 8 + 2;
cursor.rowHeight = GetFontAttribute(list->template.fontId, FONTATTR_MAX_LETTER_HEIGHT) + 2;
cursor.tileTag = 0x4000;
@@ -1024,11 +1024,11 @@ static void SpriteCallback_ScrollIndicatorArrow(struct Sprite *sprite)
{
case 0:
multiplier = sprite->tMultiplier;
- sprite->pos2.x = (gSineTable[(u8)(sprite->tSinePos)] * multiplier) / 256;
+ sprite->x2 = (gSineTable[(u8)(sprite->tSinePos)] * multiplier) / 256;
break;
case 1:
multiplier = sprite->tMultiplier;
- sprite->pos2.y = (gSineTable[(u8)(sprite->tSinePos)] * multiplier) / 256;
+ sprite->y2 = (gSineTable[(u8)(sprite->tSinePos)] * multiplier) / 256;
break;
}
sprite->tSinePos += sprite->tFrequency;
@@ -1364,8 +1364,8 @@ static void ListMenuUpdateRedOutlineCursorObject(u8 taskId, u16 x, u16 y)
{
struct RedOutlineCursor *data = (void*) gTasks[taskId].data;
- gSprites[data->spriteId].pos1.x = x + 120;
- gSprites[data->spriteId].pos1.y = y + 120;
+ gSprites[data->spriteId].x = x + 120;
+ gSprites[data->spriteId].y = y + 120;
}
static void ListMenuRemoveRedOutlineCursorObject(u8 taskId)
@@ -1385,7 +1385,7 @@ static void ListMenuRemoveRedOutlineCursorObject(u8 taskId)
static void SpriteCallback_RedArrowCursor(struct Sprite *sprite)
{
- sprite->pos2.x = gSineTable[(u8)(sprite->data[0])] / 64;
+ sprite->x2 = gSineTable[(u8)(sprite->data[0])] / 64;
sprite->data[0] += 8;
}
@@ -1429,8 +1429,8 @@ static u8 ListMenuAddRedArrowCursorObject(struct CursorStruct *cursor)
spriteTemplate.paletteTag = cursor->palTag;
data->spriteId = CreateSprite(&spriteTemplate, cursor->left, cursor->top, 0);
- gSprites[data->spriteId].pos2.x = 8;
- gSprites[data->spriteId].pos2.y = 8;
+ gSprites[data->spriteId].x2 = 8;
+ gSprites[data->spriteId].y2 = 8;
if (cursor->palTag == SPRITE_INVALID_TAG)
{
@@ -1444,8 +1444,8 @@ static void ListMenuUpdateRedArrowCursorObject(u8 taskId, u16 x, u16 y)
{
struct RedArrowCursor *data = (void*) gTasks[taskId].data;
- gSprites[data->spriteId].pos1.x = x;
- gSprites[data->spriteId].pos1.y = y;
+ gSprites[data->spriteId].x = x;
+ gSprites[data->spriteId].y = y;
}
static void ListMenuRemoveRedArrowCursorObject(u8 taskId)
diff --git a/src/load_save.c b/src/load_save.c
index 8459cd96b..eec8f91ae 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -130,7 +130,7 @@ void MoveSaveBlocks_ResetHeap(void)
gMain.vblankCallback = vblankCB;
// create a new encryption key
- encryptionKey = (Random() << 0x10) + (Random());
+ encryptionKey = (Random() << 16) + (Random());
ApplyNewEncryptionKeyToAllEncryptedData(encryptionKey);
gSaveBlock2Ptr->encryptionKey = encryptionKey;
}
diff --git a/src/m4a.c b/src/m4a.c
index 7d7193334..105312a40 100644
--- a/src/m4a.c
+++ b/src/m4a.c
@@ -887,18 +887,13 @@ void CgbModVol(struct CgbChannel *chan)
if ((soundInfo->mode & 1) || !CgbPan(chan))
{
chan->pan = 0xFF;
- chan->envelopeGoal = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
+ chan->envelopeGoal = (u32)(chan->leftVolume + chan->rightVolume);
+ chan->envelopeGoal /= 16;
}
else
{
- // Force chan->rightVolume and chan->leftVolume to be read from memory again,
- // even though there is no reason to do so.
- // The command line option "-fno-gcse" achieves the same result as this.
- #ifndef NONMATCHING
- asm("" : : : "memory");
- #endif
-
- chan->envelopeGoal = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
+ chan->envelopeGoal = (u32)(chan->leftVolume + chan->rightVolume);
+ chan->envelopeGoal /= 16;
if (chan->envelopeGoal > 15)
chan->envelopeGoal = 15;
}
@@ -1530,6 +1525,10 @@ void ply_xwave(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track
{
u32 wav;
+#ifdef UBFIX
+ wav = 0;
+#endif
+
READ_XCMD_BYTE(wav, 0) // UB: uninitialized variable
READ_XCMD_BYTE(wav, 1)
READ_XCMD_BYTE(wav, 2)
@@ -1597,6 +1596,10 @@ void ply_xcmd_0C(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *tra
{
u32 unk;
+#ifdef UBFIX
+ unk = 0;
+#endif
+
READ_XCMD_BYTE(unk, 0) // UB: uninitialized variable
READ_XCMD_BYTE(unk, 1)
@@ -1616,6 +1619,7 @@ void ply_xcmd_0C(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *tra
void ply_xcmd_0D(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
{
u32 unk;
+
#ifdef UBFIX
unk = 0;
#endif
@@ -1708,14 +1712,14 @@ void SetPokemonCryProgress(u32 val)
gPokemonCrySong.unkCmd0DParam = val;
}
-int IsPokemonCryPlaying(struct MusicPlayerInfo *mplayInfo)
+bool32 IsPokemonCryPlaying(struct MusicPlayerInfo *mplayInfo)
{
struct MusicPlayerTrack *track = mplayInfo->tracks;
if (track->chan && track->chan->track == track)
- return 1;
+ return TRUE;
else
- return 0;
+ return FALSE;
}
void SetPokemonCryChorus(s8 val)
diff --git a/src/m4a_1.s b/src/m4a_1.s
index d72336c18..62b913c86 100644
--- a/src/m4a_1.s
+++ b/src/m4a_1.s
@@ -678,7 +678,7 @@ sub_82DF758:
ldr r1, [r4, o_SoundChannel_wav]
add r2, r2, r1
add r2, r2, 0x10
- ldr r5, =gUnknown_03001300
+ ldr r5, =gDecodingBuffer
ldr r6, =gDeltaEncodingTable
mov r7, 0x40
ldrb lr, [r2], 1
@@ -699,7 +699,7 @@ _081DD57C:
subs r7, r7, 2
bgt _081DD568
_081DD594:
- ldr r5, =gUnknown_03001300
+ ldr r5, =gDecodingBuffer
and r0, r3, 0x3F
ldrsb r1, [r5, r0]
pop {r0,r2,r5-r7,pc}
@@ -1909,9 +1909,9 @@ _081DDD90:
.align 2, 0 @ Don't pad with nop.
.bss
-gUnknown_03001300:
+gDecodingBuffer: @ Used as a buffer for audio decoded from compressed DPCM
.space 0x40
- .size gUnknown_03001300, .-gUnknown_03001300
+ .size gDecodingBuffer, .-gDecodingBuffer
.global gMPlayTrack_BGM
gMPlayTrack_BGM:
diff --git a/src/mail.c b/src/mail.c
index db8451395..0ee294787 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -593,7 +593,7 @@ static bool8 MailReadBuildGraphics(void)
}
break;
case 15:
- if (sub_8087598() == TRUE)
+ if (Overworld_LinkRecvQueueLengthMoreThan2() == TRUE)
{
return FALSE;
}
diff --git a/src/main.c b/src/main.c
index 278b93542..3125716e2 100644
--- a/src/main.c
+++ b/src/main.c
@@ -132,7 +132,7 @@ void AgbMain()
DoSoftReset();
}
- if (sub_8087634() == 1)
+ if (Overworld_SendKeysToLinkIsRunning() == TRUE)
{
gLinkTransferringData = TRUE;
UpdateLinkAndCallCallbacks();
@@ -143,7 +143,7 @@ void AgbMain()
gLinkTransferringData = FALSE;
UpdateLinkAndCallCallbacks();
- if (sub_80875C8() == 1)
+ if (Overworld_RecvKeysFromLinkIsRunning() == TRUE)
{
gMain.newKeys = 0;
ClearSpriteCopyRequests();
diff --git a/src/main_menu.c b/src/main_menu.c
index d2ec55d3e..ec5a3785f 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -896,8 +896,8 @@ static bool8 HandleMainMenuInput(u8 taskId)
{
PlaySE(SE_SELECT);
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_WHITEALPHA);
- SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, 240));
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, 160));
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, DISPLAY_WIDTH));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, DISPLAY_HEIGHT));
gTasks[taskId].func = Task_HandleMainMenuBPressed;
}
else if ((JOY_NEW(DPAD_UP)) && tCurrItem > 0)
@@ -1306,8 +1306,8 @@ static void Task_NewGameBirchSpeech_WaitToShowBirch(u8 taskId)
else
{
spriteId = gTasks[taskId].tBirchSpriteId;
- gSprites[spriteId].pos1.x = 136;
- gSprites[spriteId].pos1.y = 60;
+ gSprites[spriteId].x = 136;
+ gSprites[spriteId].y = 60;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
NewGameBirchSpeech_StartFadeInTarget1OutTarget2(taskId, 10);
@@ -1369,8 +1369,8 @@ static void Task_NewGameBirchSpeechSub_InitPokeBall(u8 taskId)
{
u8 spriteId = gTasks[sBirchSpeechMainTaskId].tLotadSpriteId;
- gSprites[spriteId].pos1.x = 100;
- gSprites[spriteId].pos1.y = 75;
+ gSprites[spriteId].x = 100;
+ gSprites[spriteId].y = 75;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].data[0] = 0;
@@ -1387,11 +1387,9 @@ static void Task_NewGameBirchSpeechSub_WaitForLotad(u8 taskId)
switch (tState)
{
case 0:
- if (sprite->callback == SpriteCallbackDummy)
- {
- sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
- goto incrementStateAndTimer;
- }
+ if (sprite->callback != SpriteCallbackDummy)
+ return;
+ sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
break;
case 1:
if (gTasks[sBirchSpeechMainTaskId].tTimer >= 96)
@@ -1400,14 +1398,11 @@ static void Task_NewGameBirchSpeechSub_WaitForLotad(u8 taskId)
if (gTasks[sBirchSpeechMainTaskId].tTimer < 0x4000)
gTasks[sBirchSpeechMainTaskId].tTimer++;
}
- break;
- incrementStateAndTimer:
- default:
- tState++;
- if (gTasks[sBirchSpeechMainTaskId].tTimer < 0x4000)
- gTasks[sBirchSpeechMainTaskId].tTimer++;
- break;
+ return;
}
+ tState++;
+ if (gTasks[sBirchSpeechMainTaskId].tTimer < 0x4000)
+ gTasks[sBirchSpeechMainTaskId].tTimer++;
}
#undef tState
@@ -1464,8 +1459,8 @@ static void Task_NewGameBirchSpeech_StartPlayerFadeIn(u8 taskId)
{
u8 spriteId = gTasks[taskId].tBrendanSpriteId;
- gSprites[spriteId].pos1.x = 180;
- gSprites[spriteId].pos1.y = 60;
+ gSprites[spriteId].x = 180;
+ gSprites[spriteId].y = 60;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
gTasks[taskId].tPlayerSpriteId = spriteId;
@@ -1538,7 +1533,7 @@ static void Task_NewGameBirchSpeech_SlideOutOldGenderSprite(u8 taskId)
u8 spriteId = gTasks[taskId].tPlayerSpriteId;
if (gTasks[taskId].tIsDoneFadingSprites == 0)
{
- gSprites[spriteId].pos1.x += 4;
+ gSprites[spriteId].x += 4;
}
else
{
@@ -1547,8 +1542,8 @@ static void Task_NewGameBirchSpeech_SlideOutOldGenderSprite(u8 taskId)
spriteId = gTasks[taskId].tMaySpriteId;
else
spriteId = gTasks[taskId].tBrendanSpriteId;
- gSprites[spriteId].pos1.x = 240;
- gSprites[spriteId].pos1.y = 60;
+ gSprites[spriteId].x = DISPLAY_WIDTH;
+ gSprites[spriteId].y = 60;
gSprites[spriteId].invisible = FALSE;
gTasks[taskId].tPlayerSpriteId = spriteId;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
@@ -1561,13 +1556,13 @@ static void Task_NewGameBirchSpeech_SlideInNewGenderSprite(u8 taskId)
{
u8 spriteId = gTasks[taskId].tPlayerSpriteId;
- if (gSprites[spriteId].pos1.x > 180)
+ if (gSprites[spriteId].x > 180)
{
- gSprites[spriteId].pos1.x -= 4;
+ gSprites[spriteId].x -= 4;
}
else
{
- gSprites[spriteId].pos1.x = 180;
+ gSprites[spriteId].x = 180;
if (gTasks[taskId].tIsDoneFadingSprites)
{
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL;
@@ -1668,13 +1663,13 @@ static void Task_NewGameBirchSpeech_ReshowBirchLotad(u8 taskId)
gSprites[gTasks[taskId].tBrendanSpriteId].invisible = TRUE;
gSprites[gTasks[taskId].tMaySpriteId].invisible = TRUE;
spriteId = gTasks[taskId].tBirchSpriteId;
- gSprites[spriteId].pos1.x = 136;
- gSprites[spriteId].pos1.y = 60;
+ gSprites[spriteId].x = 136;
+ gSprites[spriteId].y = 60;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
spriteId = gTasks[taskId].tLotadSpriteId;
- gSprites[spriteId].pos1.x = 100;
- gSprites[spriteId].pos1.y = 75;
+ gSprites[spriteId].x = 100;
+ gSprites[spriteId].y = 75;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
NewGameBirchSpeech_StartFadeInTarget1OutTarget2(taskId, 2);
@@ -1721,8 +1716,8 @@ static void Task_NewGameBirchSpeech_AreYouReady(u8 taskId)
spriteId = gTasks[taskId].tMaySpriteId;
else
spriteId = gTasks[taskId].tBrendanSpriteId;
- gSprites[spriteId].pos1.x = 120;
- gSprites[spriteId].pos1.y = 60;
+ gSprites[spriteId].x = 120;
+ gSprites[spriteId].y = 60;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
gTasks[taskId].tPlayerSpriteId = spriteId;
@@ -1838,8 +1833,8 @@ static void CB2_NewGameBirchSpeech_ReturnFromNamingScreen(void)
gTasks[taskId].tPlayerGender = MALE;
spriteId = gTasks[taskId].tBrendanSpriteId;
}
- gSprites[spriteId].pos1.x = 180;
- gSprites[spriteId].pos1.y = 60;
+ gSprites[spriteId].x = 180;
+ gSprites[spriteId].y = 60;
gSprites[spriteId].invisible = FALSE;
gTasks[taskId].tPlayerSpriteId = spriteId;
SetGpuReg(REG_OFFSET_BG1HOFS, -60);
@@ -1874,8 +1869,8 @@ static void SpriteCB_MovePlayerDownWhileShrinking(struct Sprite *sprite)
{
u32 y;
- y = (sprite->pos1.y << 16) + sprite->data[0] + 0xC000;
- sprite->pos1.y = y >> 16;
+ y = (sprite->y << 16) + sprite->data[0] + 0xC000;
+ sprite->y = y >> 16;
sprite->data[0] = y;
}
@@ -2129,8 +2124,8 @@ static void CreateMainMenuErrorWindow(const u8* str)
PutWindowTilemap(7);
CopyWindowToVram(7, 2);
DrawMainMenuWindowBorder(&sWindowTemplates_MainMenu[7], MAIN_MENU_BORDER_TILE);
- SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(9, 231));
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(113, 159));
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(9, DISPLAY_WIDTH - 9));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(113, DISPLAY_HEIGHT - 1));
}
static void MainMenu_FormatSavegameText(void)
diff --git a/src/map_name_popup.c b/src/map_name_popup.c
index 65192fa33..cd92bbac1 100644
--- a/src/map_name_popup.c
+++ b/src/map_name_popup.c
@@ -36,37 +36,37 @@ static void LoadMapNamePopUpWindowBg(void);
static EWRAM_DATA u8 sPopupTaskId = 0;
// .rodata
-static const u8 gMapPopUp_Table[][960] =
+static const u8 sMapPopUp_Table[][960] =
{
- INCBIN_U8("graphics/interface/map_popup/wood.4bpp"),
- INCBIN_U8("graphics/interface/map_popup/marble.4bpp"),
- INCBIN_U8("graphics/interface/map_popup/stone.4bpp"),
- INCBIN_U8("graphics/interface/map_popup/brick.4bpp"),
- INCBIN_U8("graphics/interface/map_popup/underwater.4bpp"),
- INCBIN_U8("graphics/interface/map_popup/stone2.4bpp"),
+ [MAPPOPUP_THEME_WOOD] = INCBIN_U8("graphics/interface/map_popup/wood.4bpp"),
+ [MAPPOPUP_THEME_MARBLE] = INCBIN_U8("graphics/interface/map_popup/marble.4bpp"),
+ [MAPPOPUP_THEME_STONE] = INCBIN_U8("graphics/interface/map_popup/stone.4bpp"),
+ [MAPPOPUP_THEME_BRICK] = INCBIN_U8("graphics/interface/map_popup/brick.4bpp"),
+ [MAPPOPUP_THEME_UNDERWATER] = INCBIN_U8("graphics/interface/map_popup/underwater.4bpp"),
+ [MAPPOPUP_THEME_STONE2] = INCBIN_U8("graphics/interface/map_popup/stone2.4bpp"),
};
-static const u8 gMapPopUp_Outline_Table[][960] =
+static const u8 sMapPopUp_OutlineTable[][960] =
{
- INCBIN_U8("graphics/interface/map_popup/wood_outline.4bpp"),
- INCBIN_U8("graphics/interface/map_popup/marble_outline.4bpp"),
- INCBIN_U8("graphics/interface/map_popup/stone_outline.4bpp"),
- INCBIN_U8("graphics/interface/map_popup/brick_outline.4bpp"),
- INCBIN_U8("graphics/interface/map_popup/underwater_outline.4bpp"),
- INCBIN_U8("graphics/interface/map_popup/stone2_outline.4bpp"),
+ [MAPPOPUP_THEME_WOOD] = INCBIN_U8("graphics/interface/map_popup/wood_outline.4bpp"),
+ [MAPPOPUP_THEME_MARBLE] = INCBIN_U8("graphics/interface/map_popup/marble_outline.4bpp"),
+ [MAPPOPUP_THEME_STONE] = INCBIN_U8("graphics/interface/map_popup/stone_outline.4bpp"),
+ [MAPPOPUP_THEME_BRICK] = INCBIN_U8("graphics/interface/map_popup/brick_outline.4bpp"),
+ [MAPPOPUP_THEME_UNDERWATER] = INCBIN_U8("graphics/interface/map_popup/underwater_outline.4bpp"),
+ [MAPPOPUP_THEME_STONE2] = INCBIN_U8("graphics/interface/map_popup/stone2_outline.4bpp"),
};
-static const u16 gMapPopUp_Palette_Table[][16] =
+static const u16 sMapPopUp_PaletteTable[][16] =
{
- INCBIN_U16("graphics/interface/map_popup/wood.gbapal"),
- INCBIN_U16("graphics/interface/map_popup/marble_outline.gbapal"),
- INCBIN_U16("graphics/interface/map_popup/stone_outline.gbapal"),
- INCBIN_U16("graphics/interface/map_popup/brick_outline.gbapal"),
- INCBIN_U16("graphics/interface/map_popup/underwater_outline.gbapal"),
- INCBIN_U16("graphics/interface/map_popup/stone2_outline.gbapal"),
+ [MAPPOPUP_THEME_WOOD] = INCBIN_U16("graphics/interface/map_popup/wood.gbapal"),
+ [MAPPOPUP_THEME_MARBLE] = INCBIN_U16("graphics/interface/map_popup/marble_outline.gbapal"),
+ [MAPPOPUP_THEME_STONE] = INCBIN_U16("graphics/interface/map_popup/stone_outline.gbapal"),
+ [MAPPOPUP_THEME_BRICK] = INCBIN_U16("graphics/interface/map_popup/brick_outline.gbapal"),
+ [MAPPOPUP_THEME_UNDERWATER] = INCBIN_U16("graphics/interface/map_popup/underwater_outline.gbapal"),
+ [MAPPOPUP_THEME_STONE2] = INCBIN_U16("graphics/interface/map_popup/stone2_outline.gbapal"),
};
-static const u16 gUnknown_0857F444[16] = INCBIN_U16("graphics/interface/map_popup/857F444.gbapal");
+static const u16 sMapPopUp_Palette_Underwater[16] = INCBIN_U16("graphics/interface/map_popup/underwater.gbapal");
static const u8 gRegionMapSectionId_To_PopUpThemeIdMapping[] =
{
@@ -380,12 +380,12 @@ static void LoadMapNamePopUpWindowBg(void)
}
popUpThemeId = gRegionMapSectionId_To_PopUpThemeIdMapping[regionMapSectionId];
- LoadBgTiles(GetWindowAttribute(popupWindowId, WINDOW_BG), gMapPopUp_Outline_Table[popUpThemeId], 0x400, 0x21D);
+ LoadBgTiles(GetWindowAttribute(popupWindowId, WINDOW_BG), sMapPopUp_OutlineTable[popUpThemeId], 0x400, 0x21D);
CallWindowFunction(popupWindowId, DrawMapNamePopUpFrame);
PutWindowTilemap(popupWindowId);
if (gMapHeader.weather == WEATHER_UNDERWATER_BUBBLES)
- LoadPalette(&gUnknown_0857F444, 0xE0, 0x20);
+ LoadPalette(&sMapPopUp_Palette_Underwater, 0xE0, sizeof(sMapPopUp_Palette_Underwater));
else
- LoadPalette(gMapPopUp_Palette_Table[popUpThemeId], 0xE0, 0x20);
- BlitBitmapToWindow(popupWindowId, gMapPopUp_Table[popUpThemeId], 0, 0, 80, 24);
+ LoadPalette(sMapPopUp_PaletteTable[popUpThemeId], 0xE0, sizeof(sMapPopUp_PaletteTable[0]));
+ BlitBitmapToWindow(popupWindowId, sMapPopUp_Table[popUpThemeId], 0, 0, 80, 24);
}
diff --git a/src/match_call.c b/src/match_call.c
index fb8ebc98c..fd0db630c 100644
--- a/src/match_call.c
+++ b/src/match_call.c
@@ -34,12 +34,62 @@
#include "constants/songs.h"
#include "constants/trainers.h"
+// Each match call message has variables that can be populated randomly or
+// dependent on the trainer. The below are IDs for how to populate the vars
+// in a given message.
+// Each message may have up to 3 vars in it
+enum {
+ STR_TRAINER_NAME,
+ STR_MAP_NAME,
+ STR_SPECIES_IN_ROUTE,
+ STR_SPECIES_IN_PARTY,
+ STR_FACILITY_NAME,
+ STR_FRONTIER_STREAK,
+ STR_NONE = -1,
+};
+#define STRS_NORMAL_MSG {STR_TRAINER_NAME, STR_NONE, STR_NONE}
+#define STRS_WILD_BATTLE {STR_TRAINER_NAME, STR_SPECIES_IN_ROUTE, STR_NONE}
+#define STRS_BATTLE_NEGATIVE {STR_TRAINER_NAME, STR_NONE, STR_NONE}
+#define STRS_BATTLE_POSITIVE {STR_TRAINER_NAME, STR_SPECIES_IN_PARTY, STR_NONE}
+#define STRS_BATTLE_REQUEST {STR_TRAINER_NAME, STR_MAP_NAME, STR_NONE}
+#define STRS_FRONTIER {STR_TRAINER_NAME, STR_FACILITY_NAME, STR_FRONTIER_STREAK}
+
+#define NUM_STRVARS_IN_MSG 3
+
+// Topic IDs for sMatchCallGeneralTopics
+enum {
+ GEN_TOPIC_PERSONAL = 1,
+ GEN_TOPIC_STREAK,
+ GEN_TOPIC_STREAK_RECORD,
+ GEN_TOPIC_B_DOME,
+ GEN_TOPIC_B_PIKE,
+ GEN_TOPIC_B_PYRAMID,
+};
+
+// Topic IDs for sMatchCallBattleTopics
+enum {
+ B_TOPIC_WILD = 1,
+ B_TOPIC_NEGATIVE,
+ B_TOPIC_POSITIVE,
+};
+
+// Each trainer has a text id for 1 of each of the 3 battle topics
+// The msgId is the index into the respective topic's message table
+// For all but 2 trainers this index is the same for each topic
+#define BATTLE_TEXT_IDS(msgId) {TEXT_ID(B_TOPIC_WILD, (msgId)), TEXT_ID(B_TOPIC_NEGATIVE, (msgId)), TEXT_ID(B_TOPIC_POSITIVE, (msgId))}
+
+// Topic IDs for sMatchCallBattleRequestTopics
+enum {
+ REQ_TOPIC_SAME_ROUTE = 1,
+ REQ_TOPIC_DIFF_ROUTE,
+};
+
struct MatchCallState
{
u32 minutes;
u16 trainerId;
u8 stepCounter;
- u8 triggeredFromScript;
+ bool8 triggeredFromScript;
};
struct MatchCallTrainerTextInfo
@@ -56,7 +106,7 @@ struct MatchCallTrainerTextInfo
struct MatchCallText
{
const u8 *text;
- s8 stringVarFuncIds[3];
+ s8 stringVarFuncIds[NUM_STRVARS_IN_MSG];
};
struct MultiTrainerMatchCallText
@@ -71,8 +121,8 @@ struct BattleFrontierStreakInfo
u16 streak;
};
-EWRAM_DATA struct MatchCallState gMatchCallState = {0};
-EWRAM_DATA struct BattleFrontierStreakInfo gBattleFrontierStreakInfo = {0};
+static EWRAM_DATA struct MatchCallState sMatchCallState = {0};
+static EWRAM_DATA struct BattleFrontierStreakInfo sBattleFrontierStreakInfo = {0};
static u32 GetCurrentTotalMinutes(struct Time *);
static u32 GetNumRegisteredNPCs(void);
@@ -82,27 +132,27 @@ static u16 GetRematchTrainerLocation(int);
static bool32 TrainerIsEligibleForRematch(int);
static void StartMatchCall(void);
static void ExecuteMatchCall(u8);
-static void DrawMatchCallTextBoxBorder(u32, u32, u32);
-static void sub_8196694(u8);
+static void DrawMatchCallTextBoxBorder_Internal(u32, u32, u32);
+static void Task_SpinPokenavIcon(u8);
static void InitMatchCallTextPrinter(int, const u8 *);
-static bool32 ExecuteMatchCallTextPrinter(int);
+static bool32 RunMatchCallTextPrinter(int);
static const struct MatchCallText *GetSameRouteMatchCallText(int, u8 *);
static const struct MatchCallText *GetDifferentRouteMatchCallText(int, u8 *);
static const struct MatchCallText *GetBattleMatchCallText(int, u8 *);
static const struct MatchCallText *GetGeneralMatchCallText(int, u8 *);
-static bool32 sub_8196D74(int);
+static bool32 ShouldTrainerRequestBattle(int);
static void BuildMatchCallString(int, const struct MatchCallText *, u8 *);
static u16 GetFrontierStreakInfo(u16, u32 *);
static void PopulateMatchCallStringVars(int, const s8 *);
static void PopulateMatchCallStringVar(int, int, u8 *);
-static bool32 LoadMatchCallWindowGfx(u8);
-static bool32 MoveMatchCallWindowToVram(u8);
-static bool32 PrintMatchCallIntroEllipsis(u8);
-static bool32 sub_81962B0(u8);
-static bool32 sub_81962D8(u8);
-static bool32 sub_8196330(u8);
-static bool32 sub_8196390(u8);
-static bool32 sub_81963F0(u8);
+static bool32 MatchCall_LoadGfx(u8);
+static bool32 MatchCall_DrawWindow(u8);
+static bool32 MatchCall_ReadyIntro(u8);
+static bool32 MatchCall_SlideWindowIn(u8);
+static bool32 MatchCall_PrintIntro(u8);
+static bool32 MatchCall_PrintMessage(u8);
+static bool32 MatchCall_SlideWindowOut(u8);
+static bool32 MatchCall_EndCall(u8);
static void PopulateTrainerName(int, u8 *);
static void PopulateMapName(int, u8 *);
static void PopulateSpeciesFromTrainerLocation(int, u8 *);
@@ -117,851 +167,853 @@ static const struct MatchCallTrainerTextInfo sMatchCallTrainers[] =
{
.trainerId = TRAINER_ROSE_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 8), TEXT_ID(2, 8), TEXT_ID(3, 8) },
- .generalTextId = TEXT_ID(1, 3),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(8),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 3),
.battleFrontierRecordStreakTextIndex = 8,
- .sameRouteMatchCallTextId = TEXT_ID(1, 8),
- .differentRouteMatchCallTextId = TEXT_ID(2, 8),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 8),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 8),
},
{
.trainerId = TRAINER_ANDRES_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 12), TEXT_ID(2, 12), TEXT_ID(3, 12) },
- .generalTextId = TEXT_ID(1, 62),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(12),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 62),
.battleFrontierRecordStreakTextIndex = 12,
- .sameRouteMatchCallTextId = TEXT_ID(1, 12),
- .differentRouteMatchCallTextId = TEXT_ID(2, 12),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 12),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 12),
},
{
.trainerId = TRAINER_DUSTY_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 12), TEXT_ID(2, 12), TEXT_ID(3, 12) },
- .generalTextId = TEXT_ID(1, 4),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(12),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 4),
.battleFrontierRecordStreakTextIndex = 12,
- .sameRouteMatchCallTextId = TEXT_ID(1, 12),
- .differentRouteMatchCallTextId = TEXT_ID(2, 12),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 12),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 12),
},
{
.trainerId = TRAINER_LOLA_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 2), TEXT_ID(2, 2), TEXT_ID(3, 2) },
- .generalTextId = TEXT_ID(1, 5),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(2),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 5),
.battleFrontierRecordStreakTextIndex = 2,
- .sameRouteMatchCallTextId = TEXT_ID(1, 2),
- .differentRouteMatchCallTextId = TEXT_ID(2, 2),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 2),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 2),
},
{
.trainerId = TRAINER_RICKY_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 1), TEXT_ID(2, 1), TEXT_ID(3, 1) },
- .generalTextId = TEXT_ID(1, 6),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(1),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 6),
.battleFrontierRecordStreakTextIndex = 1,
- .sameRouteMatchCallTextId = TEXT_ID(1, 1),
- .differentRouteMatchCallTextId = TEXT_ID(2, 1),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 1),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 1),
},
{
.trainerId = TRAINER_LILA_AND_ROY_1,
.unused = 4,
- .battleTopicTextIds = { TEXT_ID(1, 1), TEXT_ID(2, 1), TEXT_ID(3, 1) },
- .generalTextId = TEXT_ID(1, 61),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(1),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 61),
.battleFrontierRecordStreakTextIndex = 1,
- .sameRouteMatchCallTextId = TEXT_ID(1, 1),
- .differentRouteMatchCallTextId = TEXT_ID(2, 1),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 1),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 1),
},
{
.trainerId = TRAINER_CRISTIN_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 10), TEXT_ID(2, 10), TEXT_ID(3, 10) },
- .generalTextId = TEXT_ID(1, 64),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(10),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 64),
.battleFrontierRecordStreakTextIndex = 10,
- .sameRouteMatchCallTextId = TEXT_ID(1, 10),
- .differentRouteMatchCallTextId = TEXT_ID(2, 10),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 10),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 10),
},
{
.trainerId = TRAINER_BROOKE_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 9), TEXT_ID(2, 9), TEXT_ID(3, 9) },
- .generalTextId = TEXT_ID(1, 8),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(9),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 8),
.battleFrontierRecordStreakTextIndex = 9,
- .sameRouteMatchCallTextId = TEXT_ID(1, 9),
- .differentRouteMatchCallTextId = TEXT_ID(2, 9),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 9),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 9),
},
{
.trainerId = TRAINER_WILTON_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 6), TEXT_ID(2, 6), TEXT_ID(3, 6) },
- .generalTextId = TEXT_ID(1, 7),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(6),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 7),
.battleFrontierRecordStreakTextIndex = 6,
- .sameRouteMatchCallTextId = TEXT_ID(1, 6),
- .differentRouteMatchCallTextId = TEXT_ID(2, 6),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 6),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 6),
},
{
.trainerId = TRAINER_VALERIE_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 8), TEXT_ID(2, 8), TEXT_ID(3, 8) },
- .generalTextId = TEXT_ID(1, 9),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(8),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 9),
.battleFrontierRecordStreakTextIndex = 8,
- .sameRouteMatchCallTextId = TEXT_ID(1, 8),
- .differentRouteMatchCallTextId = TEXT_ID(2, 8),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 8),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 8),
},
{
.trainerId = TRAINER_CINDY_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 8), TEXT_ID(2, 8), TEXT_ID(3, 8) },
- .generalTextId = TEXT_ID(1, 10),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(8),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 10),
.battleFrontierRecordStreakTextIndex = 8,
- .sameRouteMatchCallTextId = TEXT_ID(1, 8),
- .differentRouteMatchCallTextId = TEXT_ID(2, 8),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 8),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 8),
},
{
.trainerId = TRAINER_THALIA_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 8), TEXT_ID(2, 10), TEXT_ID(3, 10) },
- .generalTextId = TEXT_ID(1, 14),
+ // Thalia and Sawyer are the only ones who use different msg ids for their battle topics
+ .battleTopicTextIds = { TEXT_ID(B_TOPIC_WILD, 8), TEXT_ID(B_TOPIC_NEGATIVE, 10), TEXT_ID(B_TOPIC_POSITIVE, 10) },
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 14),
.battleFrontierRecordStreakTextIndex = 10,
- .sameRouteMatchCallTextId = TEXT_ID(1, 8),
- .differentRouteMatchCallTextId = TEXT_ID(2, 10),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 8),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 10),
},
{
.trainerId = TRAINER_JESSICA_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 10), TEXT_ID(2, 10), TEXT_ID(3, 10) },
- .generalTextId = TEXT_ID(1, 11),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(10),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 11),
.battleFrontierRecordStreakTextIndex = 10,
- .sameRouteMatchCallTextId = TEXT_ID(1, 8),
- .differentRouteMatchCallTextId = TEXT_ID(2, 10),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 8),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 10),
},
{
.trainerId = TRAINER_WINSTON_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 4), TEXT_ID(2, 4), TEXT_ID(3, 4) },
- .generalTextId = TEXT_ID(1, 12),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(4),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 12),
.battleFrontierRecordStreakTextIndex = 4,
- .sameRouteMatchCallTextId = TEXT_ID(1, 4),
- .differentRouteMatchCallTextId = TEXT_ID(2, 4),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 4),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 4),
},
{
.trainerId = TRAINER_STEVE_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 7), TEXT_ID(2, 7), TEXT_ID(3, 7) },
- .generalTextId = TEXT_ID(1, 13),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(7),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 13),
.battleFrontierRecordStreakTextIndex = 7,
- .sameRouteMatchCallTextId = TEXT_ID(1, 7),
- .differentRouteMatchCallTextId = TEXT_ID(2, 7),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 7),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 7),
},
{
.trainerId = TRAINER_TONY_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 5), TEXT_ID(2, 5), TEXT_ID(3, 5) },
- .generalTextId = TEXT_ID(1, 15),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(5),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 15),
.battleFrontierRecordStreakTextIndex = 5,
- .sameRouteMatchCallTextId = TEXT_ID(1, 5),
- .differentRouteMatchCallTextId = TEXT_ID(2, 5),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 5),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 5),
},
{
.trainerId = TRAINER_NOB_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 3), TEXT_ID(2, 3), TEXT_ID(3, 3) },
- .generalTextId = TEXT_ID(1, 16),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(3),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 16),
.battleFrontierRecordStreakTextIndex = 3,
- .sameRouteMatchCallTextId = TEXT_ID(1, 3),
- .differentRouteMatchCallTextId = TEXT_ID(2, 3),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 3),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 3),
},
{
.trainerId = TRAINER_KOJI_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 3), TEXT_ID(2, 3), TEXT_ID(3, 3) },
- .generalTextId = TEXT_ID(1, 59),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(3),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 59),
.battleFrontierRecordStreakTextIndex = 3,
- .sameRouteMatchCallTextId = TEXT_ID(1, 3),
- .differentRouteMatchCallTextId = TEXT_ID(2, 3),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 3),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 3),
},
{
.trainerId = TRAINER_FERNANDO_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 6), TEXT_ID(2, 6), TEXT_ID(3, 6) },
- .generalTextId = TEXT_ID(1, 17),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(6),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 17),
.battleFrontierRecordStreakTextIndex = 6,
- .sameRouteMatchCallTextId = TEXT_ID(1, 6),
- .differentRouteMatchCallTextId = TEXT_ID(2, 6),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 6),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 6),
},
{
.trainerId = TRAINER_DALTON_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 4), TEXT_ID(2, 4), TEXT_ID(3, 4) },
- .generalTextId = TEXT_ID(1, 18),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(4),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 18),
.battleFrontierRecordStreakTextIndex = 4,
- .sameRouteMatchCallTextId = TEXT_ID(1, 4),
- .differentRouteMatchCallTextId = TEXT_ID(2, 4),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 4),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 4),
},
{
.trainerId = TRAINER_BERNIE_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 11), TEXT_ID(2, 11), TEXT_ID(3, 11) },
- .generalTextId = TEXT_ID(1, 19),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(11),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 19),
.battleFrontierRecordStreakTextIndex = 11,
- .sameRouteMatchCallTextId = TEXT_ID(1, 11),
- .differentRouteMatchCallTextId = TEXT_ID(2, 11),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 11),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 11),
},
{
.trainerId = TRAINER_ETHAN_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 1), TEXT_ID(2, 1), TEXT_ID(3, 1) },
- .generalTextId = TEXT_ID(1, 20),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(1),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 20),
.battleFrontierRecordStreakTextIndex = 1,
- .sameRouteMatchCallTextId = TEXT_ID(1, 1),
- .differentRouteMatchCallTextId = TEXT_ID(2, 1),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 1),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 1),
},
{
.trainerId = TRAINER_JOHN_AND_JAY_1,
.unused = 3,
- .battleTopicTextIds = { TEXT_ID(1, 12), TEXT_ID(2, 12), TEXT_ID(3, 12) },
- .generalTextId = TEXT_ID(1, 60),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(12),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 60),
.battleFrontierRecordStreakTextIndex = 12,
- .sameRouteMatchCallTextId = TEXT_ID(1, 12),
- .differentRouteMatchCallTextId = TEXT_ID(2, 12),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 12),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 12),
},
{
.trainerId = TRAINER_JEFFREY_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 7), TEXT_ID(2, 7), TEXT_ID(3, 7) },
- .generalTextId = TEXT_ID(1, 21),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(7),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 21),
.battleFrontierRecordStreakTextIndex = 7,
- .sameRouteMatchCallTextId = TEXT_ID(1, 7),
- .differentRouteMatchCallTextId = TEXT_ID(2, 7),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 7),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 7),
},
{
.trainerId = TRAINER_CAMERON_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 4), TEXT_ID(2, 4), TEXT_ID(3, 4) },
- .generalTextId = TEXT_ID(1, 22),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(4),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 22),
.battleFrontierRecordStreakTextIndex = 1,
- .sameRouteMatchCallTextId = TEXT_ID(1, 4),
- .differentRouteMatchCallTextId = TEXT_ID(2, 4),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 4),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 4),
},
{
.trainerId = TRAINER_JACKI_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 8), TEXT_ID(2, 8), TEXT_ID(3, 8) },
- .generalTextId = TEXT_ID(1, 23),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(8),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 23),
.battleFrontierRecordStreakTextIndex = 8,
- .sameRouteMatchCallTextId = TEXT_ID(1, 8),
- .differentRouteMatchCallTextId = TEXT_ID(2, 8),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 8),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 8),
},
{
.trainerId = TRAINER_WALTER_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 12), TEXT_ID(2, 12), TEXT_ID(3, 12) },
- .generalTextId = TEXT_ID(1, 24),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(12),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 24),
.battleFrontierRecordStreakTextIndex = 12,
- .sameRouteMatchCallTextId = TEXT_ID(1, 12),
- .differentRouteMatchCallTextId = TEXT_ID(2, 12),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 12),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 12),
},
{
.trainerId = TRAINER_KAREN_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 2), TEXT_ID(2, 2), TEXT_ID(3, 2) },
- .generalTextId = TEXT_ID(1, 26),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(2),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 26),
.battleFrontierRecordStreakTextIndex = 2,
- .sameRouteMatchCallTextId = TEXT_ID(1, 2),
- .differentRouteMatchCallTextId = TEXT_ID(2, 2),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 2),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 2),
},
{
.trainerId = TRAINER_JERRY_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 1), TEXT_ID(2, 1), TEXT_ID(3, 1) },
- .generalTextId = TEXT_ID(1, 25),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(1),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 25),
.battleFrontierRecordStreakTextIndex = 1,
- .sameRouteMatchCallTextId = TEXT_ID(1, 1),
- .differentRouteMatchCallTextId = TEXT_ID(2, 1),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 1),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 1),
},
{
.trainerId = TRAINER_ANNA_AND_MEG_1,
.unused = 6,
- .battleTopicTextIds = { TEXT_ID(1, 9), TEXT_ID(2, 9), TEXT_ID(3, 9) },
- .generalTextId = TEXT_ID(1, 27),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(9),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 27),
.battleFrontierRecordStreakTextIndex = 9,
- .sameRouteMatchCallTextId = TEXT_ID(1, 9),
- .differentRouteMatchCallTextId = TEXT_ID(2, 9),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 9),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 9),
},
{
.trainerId = TRAINER_ISABEL_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 14), TEXT_ID(2, 14), TEXT_ID(3, 14) },
- .generalTextId = TEXT_ID(1, 29),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(14),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 29),
.battleFrontierRecordStreakTextIndex = 14,
- .sameRouteMatchCallTextId = TEXT_ID(1, 14),
- .differentRouteMatchCallTextId = TEXT_ID(2, 14),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 14),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 14),
},
{
.trainerId = TRAINER_MIGUEL_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 11), TEXT_ID(2, 11), TEXT_ID(3, 11) },
- .generalTextId = TEXT_ID(1, 28),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(11),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 28),
.battleFrontierRecordStreakTextIndex = 11,
- .sameRouteMatchCallTextId = TEXT_ID(1, 11),
- .differentRouteMatchCallTextId = TEXT_ID(2, 11),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 11),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 11),
},
{
.trainerId = TRAINER_TIMOTHY_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 12), TEXT_ID(2, 12), TEXT_ID(3, 12) },
- .generalTextId = TEXT_ID(1, 30),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(12),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 30),
.battleFrontierRecordStreakTextIndex = 12,
- .sameRouteMatchCallTextId = TEXT_ID(1, 12),
- .differentRouteMatchCallTextId = TEXT_ID(2, 12),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 12),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 12),
},
{
.trainerId = TRAINER_SHELBY_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 13), TEXT_ID(2, 13), TEXT_ID(3, 13) },
- .generalTextId = TEXT_ID(1, 31),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(13),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 31),
.battleFrontierRecordStreakTextIndex = 13,
- .sameRouteMatchCallTextId = TEXT_ID(1, 13),
- .differentRouteMatchCallTextId = TEXT_ID(2, 13),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 13),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 13),
},
{
.trainerId = TRAINER_CALVIN_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 1), TEXT_ID(2, 1), TEXT_ID(3, 1) },
- .generalTextId = TEXT_ID(1, 32),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(1),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 32),
.battleFrontierRecordStreakTextIndex = 1,
- .sameRouteMatchCallTextId = TEXT_ID(1, 1),
- .differentRouteMatchCallTextId = TEXT_ID(2, 1),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 1),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 1),
},
{
.trainerId = TRAINER_ELLIOT_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 3), TEXT_ID(2, 3), TEXT_ID(3, 3) },
- .generalTextId = TEXT_ID(1, 33),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(3),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 33),
.battleFrontierRecordStreakTextIndex = 3,
- .sameRouteMatchCallTextId = TEXT_ID(1, 3),
- .differentRouteMatchCallTextId = TEXT_ID(2, 3),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 3),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 3),
},
{
.trainerId = TRAINER_ISAIAH_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 5), TEXT_ID(2, 5), TEXT_ID(3, 5) },
- .generalTextId = TEXT_ID(1, 38),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(5),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 38),
.battleFrontierRecordStreakTextIndex = 5,
- .sameRouteMatchCallTextId = TEXT_ID(1, 5),
- .differentRouteMatchCallTextId = TEXT_ID(2, 5),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 5),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 5),
},
{
.trainerId = TRAINER_MARIA_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 9), TEXT_ID(2, 9), TEXT_ID(3, 9) },
- .generalTextId = TEXT_ID(1, 37),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(9),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 37),
.battleFrontierRecordStreakTextIndex = 9,
- .sameRouteMatchCallTextId = TEXT_ID(1, 9),
- .differentRouteMatchCallTextId = TEXT_ID(2, 9),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 9),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 9),
},
{
.trainerId = TRAINER_ABIGAIL_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 9), TEXT_ID(2, 9), TEXT_ID(3, 9) },
- .generalTextId = TEXT_ID(1, 35),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(9),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 35),
.battleFrontierRecordStreakTextIndex = 9,
- .sameRouteMatchCallTextId = TEXT_ID(1, 9),
- .differentRouteMatchCallTextId = TEXT_ID(2, 9),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 9),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 9),
},
{
.trainerId = TRAINER_DYLAN_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 5), TEXT_ID(2, 5), TEXT_ID(3, 5) },
- .generalTextId = TEXT_ID(1, 36),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(5),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 36),
.battleFrontierRecordStreakTextIndex = 5,
- .sameRouteMatchCallTextId = TEXT_ID(1, 5),
- .differentRouteMatchCallTextId = TEXT_ID(2, 5),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 5),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 5),
},
{
.trainerId = TRAINER_KATELYN_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 9), TEXT_ID(2, 9), TEXT_ID(3, 9) },
- .generalTextId = TEXT_ID(1, 40),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(9),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 40),
.battleFrontierRecordStreakTextIndex = 9,
- .sameRouteMatchCallTextId = TEXT_ID(1, 9),
- .differentRouteMatchCallTextId = TEXT_ID(2, 9),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 9),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 9),
},
{
.trainerId = TRAINER_BENJAMIN_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 5), TEXT_ID(2, 5), TEXT_ID(3, 5) },
- .generalTextId = TEXT_ID(1, 34),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(5),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 34),
.battleFrontierRecordStreakTextIndex = 5,
- .sameRouteMatchCallTextId = TEXT_ID(1, 5),
- .differentRouteMatchCallTextId = TEXT_ID(2, 5),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 5),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 5),
},
{
.trainerId = TRAINER_PABLO_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 5), TEXT_ID(2, 5), TEXT_ID(3, 5) },
- .generalTextId = TEXT_ID(1, 39),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(5),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 39),
.battleFrontierRecordStreakTextIndex = 5,
- .sameRouteMatchCallTextId = TEXT_ID(1, 5),
- .differentRouteMatchCallTextId = TEXT_ID(2, 5),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 5),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 5),
},
{
.trainerId = TRAINER_NICOLAS_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 4), TEXT_ID(2, 4), TEXT_ID(3, 4) },
- .generalTextId = TEXT_ID(1, 41),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(4),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 41),
.battleFrontierRecordStreakTextIndex = 4,
- .sameRouteMatchCallTextId = TEXT_ID(1, 4),
- .differentRouteMatchCallTextId = TEXT_ID(2, 4),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 4),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 4),
},
{
.trainerId = TRAINER_ROBERT_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 6), TEXT_ID(2, 6), TEXT_ID(3, 6) },
- .generalTextId = TEXT_ID(1, 42),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(6),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 42),
.battleFrontierRecordStreakTextIndex = 6,
- .sameRouteMatchCallTextId = TEXT_ID(1, 6),
- .differentRouteMatchCallTextId = TEXT_ID(2, 6),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 6),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 6),
},
{
.trainerId = TRAINER_LAO_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 1), TEXT_ID(2, 1), TEXT_ID(3, 1) },
- .generalTextId = TEXT_ID(1, 43),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(1),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 43),
.battleFrontierRecordStreakTextIndex = 1,
- .sameRouteMatchCallTextId = TEXT_ID(1, 1),
- .differentRouteMatchCallTextId = TEXT_ID(2, 1),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 1),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 1),
},
{
.trainerId = TRAINER_CYNDY_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 9), TEXT_ID(2, 9), TEXT_ID(3, 9) },
- .generalTextId = TEXT_ID(1, 44),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(9),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 44),
.battleFrontierRecordStreakTextIndex = 9,
- .sameRouteMatchCallTextId = TEXT_ID(1, 9),
- .differentRouteMatchCallTextId = TEXT_ID(2, 9),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 9),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 9),
},
{
.trainerId = TRAINER_MADELINE_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 8), TEXT_ID(2, 8), TEXT_ID(3, 8) },
- .generalTextId = TEXT_ID(1, 45),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(8),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 45),
.battleFrontierRecordStreakTextIndex = 8,
- .sameRouteMatchCallTextId = TEXT_ID(1, 8),
- .differentRouteMatchCallTextId = TEXT_ID(2, 8),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 8),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 8),
},
{
.trainerId = TRAINER_JENNY_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 9), TEXT_ID(2, 9), TEXT_ID(3, 9) },
- .generalTextId = TEXT_ID(1, 46),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(9),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 46),
.battleFrontierRecordStreakTextIndex = 9,
- .sameRouteMatchCallTextId = TEXT_ID(1, 9),
- .differentRouteMatchCallTextId = TEXT_ID(2, 9),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 9),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 9),
},
{
.trainerId = TRAINER_DIANA_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 2), TEXT_ID(2, 2), TEXT_ID(3, 2) },
- .generalTextId = TEXT_ID(1, 47),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(2),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 47),
.battleFrontierRecordStreakTextIndex = 2,
- .sameRouteMatchCallTextId = TEXT_ID(1, 2),
- .differentRouteMatchCallTextId = TEXT_ID(2, 2),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 2),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 2),
},
{
.trainerId = TRAINER_AMY_AND_LIV_1,
.unused = 2,
- .battleTopicTextIds = { TEXT_ID(1, 2), TEXT_ID(2, 2), TEXT_ID(3, 2) },
- .generalTextId = TEXT_ID(1, 48),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(2),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 48),
.battleFrontierRecordStreakTextIndex = 1,
- .sameRouteMatchCallTextId = TEXT_ID(1, 2),
- .differentRouteMatchCallTextId = TEXT_ID(2, 2),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 2),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 2),
},
{
.trainerId = TRAINER_ERNEST_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 3), TEXT_ID(2, 3), TEXT_ID(3, 3) },
- .generalTextId = TEXT_ID(1, 49),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(3),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 49),
.battleFrontierRecordStreakTextIndex = 3,
- .sameRouteMatchCallTextId = TEXT_ID(1, 3),
- .differentRouteMatchCallTextId = TEXT_ID(2, 3),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 3),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 3),
},
{
.trainerId = TRAINER_CORY_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 3), TEXT_ID(2, 3), TEXT_ID(3, 3) },
- .generalTextId = TEXT_ID(1, 63),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(3),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 63),
.battleFrontierRecordStreakTextIndex = 3,
- .sameRouteMatchCallTextId = TEXT_ID(1, 3),
- .differentRouteMatchCallTextId = TEXT_ID(2, 3),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 3),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 3),
},
{
.trainerId = TRAINER_EDWIN_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 7), TEXT_ID(2, 7), TEXT_ID(3, 7) },
- .generalTextId = TEXT_ID(1, 50),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(7),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 50),
.battleFrontierRecordStreakTextIndex = 7,
- .sameRouteMatchCallTextId = TEXT_ID(1, 7),
- .differentRouteMatchCallTextId = TEXT_ID(2, 7),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 7),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 7),
},
{
.trainerId = TRAINER_LYDIA_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 8), TEXT_ID(2, 8), TEXT_ID(3, 8) },
- .generalTextId = TEXT_ID(1, 52),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(8),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 52),
.battleFrontierRecordStreakTextIndex = 8,
- .sameRouteMatchCallTextId = TEXT_ID(1, 8),
- .differentRouteMatchCallTextId = TEXT_ID(2, 8),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 8),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 8),
},
{
.trainerId = TRAINER_ISAAC_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 5), TEXT_ID(2, 5), TEXT_ID(3, 5) },
- .generalTextId = TEXT_ID(1, 51),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(5),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 51),
.battleFrontierRecordStreakTextIndex = 5,
- .sameRouteMatchCallTextId = TEXT_ID(1, 5),
- .differentRouteMatchCallTextId = TEXT_ID(2, 5),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 5),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 5),
},
{
.trainerId = TRAINER_GABRIELLE_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 8), TEXT_ID(2, 8), TEXT_ID(3, 8) },
- .generalTextId = TEXT_ID(1, 2),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(8),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 2),
.battleFrontierRecordStreakTextIndex = 8,
- .sameRouteMatchCallTextId = TEXT_ID(1, 8),
- .differentRouteMatchCallTextId = TEXT_ID(2, 8),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 8),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 8),
},
{
.trainerId = TRAINER_CATHERINE_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 9), TEXT_ID(2, 9), TEXT_ID(3, 9) },
- .generalTextId = TEXT_ID(1, 54),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(9),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 54),
.battleFrontierRecordStreakTextIndex = 9,
- .sameRouteMatchCallTextId = TEXT_ID(1, 9),
- .differentRouteMatchCallTextId = TEXT_ID(2, 9),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 9),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 9),
},
{
.trainerId = TRAINER_JACKSON_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 5), TEXT_ID(2, 5), TEXT_ID(3, 5) },
- .generalTextId = TEXT_ID(1, 53),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(5),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 53),
.battleFrontierRecordStreakTextIndex = 5,
- .sameRouteMatchCallTextId = TEXT_ID(1, 5),
- .differentRouteMatchCallTextId = TEXT_ID(2, 5),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 5),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 5),
},
{
.trainerId = TRAINER_HALEY_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 2), TEXT_ID(2, 2), TEXT_ID(3, 2) },
- .generalTextId = TEXT_ID(1, 55),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(2),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 55),
.battleFrontierRecordStreakTextIndex = 2,
- .sameRouteMatchCallTextId = TEXT_ID(1, 2),
- .differentRouteMatchCallTextId = TEXT_ID(2, 2),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 2),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 2),
},
{
.trainerId = TRAINER_JAMES_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 1), TEXT_ID(2, 1), TEXT_ID(3, 1) },
- .generalTextId = TEXT_ID(1, 56),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(1),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 56),
.battleFrontierRecordStreakTextIndex = 1,
- .sameRouteMatchCallTextId = TEXT_ID(1, 1),
- .differentRouteMatchCallTextId = TEXT_ID(2, 1),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 1),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 1),
},
{
.trainerId = TRAINER_TRENT_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 3), TEXT_ID(2, 3), TEXT_ID(3, 3) },
- .generalTextId = TEXT_ID(1, 57),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(3),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 57),
.battleFrontierRecordStreakTextIndex = 3,
- .sameRouteMatchCallTextId = TEXT_ID(1, 3),
- .differentRouteMatchCallTextId = TEXT_ID(2, 3),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 3),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 3),
},
{
.trainerId = TRAINER_SAWYER_1,
.unused = 0,
- .battleTopicTextIds = { TEXT_ID(1, 15), TEXT_ID(2, 3), TEXT_ID(3, 3) },
- .generalTextId = TEXT_ID(1, 1),
+ // Thalia and Sawyer are the only ones who use different msg ids for their battle topics
+ .battleTopicTextIds = { TEXT_ID(B_TOPIC_WILD, 15), TEXT_ID(B_TOPIC_NEGATIVE, 3), TEXT_ID(B_TOPIC_POSITIVE, 3) },
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 1),
.battleFrontierRecordStreakTextIndex = 3,
- .sameRouteMatchCallTextId = TEXT_ID(1, 3),
- .differentRouteMatchCallTextId = TEXT_ID(2, 3),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 3),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 3),
},
{
.trainerId = TRAINER_KIRA_AND_DAN_1,
.unused = 1,
- .battleTopicTextIds = { TEXT_ID(1, 9), TEXT_ID(2, 9), TEXT_ID(3, 9) },
- .generalTextId = TEXT_ID(1, 58),
+ .battleTopicTextIds = BATTLE_TEXT_IDS(9),
+ .generalTextId = TEXT_ID(GEN_TOPIC_PERSONAL, 58),
.battleFrontierRecordStreakTextIndex = 9,
- .sameRouteMatchCallTextId = TEXT_ID(1, 9),
- .differentRouteMatchCallTextId = TEXT_ID(2, 9),
+ .sameRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_SAME_ROUTE, 9),
+ .differentRouteMatchCallTextId = TEXT_ID(REQ_TOPIC_DIFF_ROUTE, 9),
},
};
static const struct MatchCallText sMatchCallWildBattleTexts[] =
{
- { .text = MatchCall_WildBattleText1, .stringVarFuncIds = { 0, 2, -1 } },
- { .text = MatchCall_WildBattleText2, .stringVarFuncIds = { 0, 2, -1 } },
- { .text = MatchCall_WildBattleText3, .stringVarFuncIds = { 0, 2, -1 } },
- { .text = MatchCall_WildBattleText4, .stringVarFuncIds = { 0, 2, -1 } },
- { .text = MatchCall_WildBattleText5, .stringVarFuncIds = { 0, 2, -1 } },
- { .text = MatchCall_WildBattleText6, .stringVarFuncIds = { 0, 2, -1 } },
- { .text = MatchCall_WildBattleText7, .stringVarFuncIds = { 0, 2, -1 } },
- { .text = MatchCall_WildBattleText8, .stringVarFuncIds = { 0, 2, -1 } },
- { .text = MatchCall_WildBattleText9, .stringVarFuncIds = { 0, 2, -1 } },
- { .text = MatchCall_WildBattleText10, .stringVarFuncIds = { 0, 2, -1 } },
- { .text = MatchCall_WildBattleText11, .stringVarFuncIds = { 0, 2, -1 } },
- { .text = MatchCall_WildBattleText12, .stringVarFuncIds = { 0, 2, -1 } },
- { .text = MatchCall_WildBattleText13, .stringVarFuncIds = { 0, 2, -1 } },
- { .text = MatchCall_WildBattleText14, .stringVarFuncIds = { 0, 2, -1 } },
- { .text = MatchCall_WildBattleText15, .stringVarFuncIds = { 0, 2, -1 } },
+ { .text = MatchCall_WildBattleText1, .stringVarFuncIds = STRS_WILD_BATTLE },
+ { .text = MatchCall_WildBattleText2, .stringVarFuncIds = STRS_WILD_BATTLE },
+ { .text = MatchCall_WildBattleText3, .stringVarFuncIds = STRS_WILD_BATTLE },
+ { .text = MatchCall_WildBattleText4, .stringVarFuncIds = STRS_WILD_BATTLE },
+ { .text = MatchCall_WildBattleText5, .stringVarFuncIds = STRS_WILD_BATTLE },
+ { .text = MatchCall_WildBattleText6, .stringVarFuncIds = STRS_WILD_BATTLE },
+ { .text = MatchCall_WildBattleText7, .stringVarFuncIds = STRS_WILD_BATTLE },
+ { .text = MatchCall_WildBattleText8, .stringVarFuncIds = STRS_WILD_BATTLE },
+ { .text = MatchCall_WildBattleText9, .stringVarFuncIds = STRS_WILD_BATTLE },
+ { .text = MatchCall_WildBattleText10, .stringVarFuncIds = STRS_WILD_BATTLE },
+ { .text = MatchCall_WildBattleText11, .stringVarFuncIds = STRS_WILD_BATTLE },
+ { .text = MatchCall_WildBattleText12, .stringVarFuncIds = STRS_WILD_BATTLE },
+ { .text = MatchCall_WildBattleText13, .stringVarFuncIds = STRS_WILD_BATTLE },
+ { .text = MatchCall_WildBattleText14, .stringVarFuncIds = STRS_WILD_BATTLE },
+ { .text = MatchCall_WildBattleText15, .stringVarFuncIds = STRS_WILD_BATTLE },
};
- static const struct MatchCallText sMatchCallNegativeBattleTexts[] =
- {
- { .text = MatchCall_NegativeBattleText1, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_NegativeBattleText2, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_NegativeBattleText3, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_NegativeBattleText4, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_NegativeBattleText5, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_NegativeBattleText6, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_NegativeBattleText7, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_NegativeBattleText8, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_NegativeBattleText9, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_NegativeBattleText10, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_NegativeBattleText11, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_NegativeBattleText12, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_NegativeBattleText13, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_NegativeBattleText14, .stringVarFuncIds = { 0, -1, -1 } },
+static const struct MatchCallText sMatchCallNegativeBattleTexts[] =
+{
+ { .text = MatchCall_NegativeBattleText1, .stringVarFuncIds = STRS_BATTLE_NEGATIVE },
+ { .text = MatchCall_NegativeBattleText2, .stringVarFuncIds = STRS_BATTLE_NEGATIVE },
+ { .text = MatchCall_NegativeBattleText3, .stringVarFuncIds = STRS_BATTLE_NEGATIVE },
+ { .text = MatchCall_NegativeBattleText4, .stringVarFuncIds = STRS_BATTLE_NEGATIVE },
+ { .text = MatchCall_NegativeBattleText5, .stringVarFuncIds = STRS_BATTLE_NEGATIVE },
+ { .text = MatchCall_NegativeBattleText6, .stringVarFuncIds = STRS_BATTLE_NEGATIVE },
+ { .text = MatchCall_NegativeBattleText7, .stringVarFuncIds = STRS_BATTLE_NEGATIVE },
+ { .text = MatchCall_NegativeBattleText8, .stringVarFuncIds = STRS_BATTLE_NEGATIVE },
+ { .text = MatchCall_NegativeBattleText9, .stringVarFuncIds = STRS_BATTLE_NEGATIVE },
+ { .text = MatchCall_NegativeBattleText10, .stringVarFuncIds = STRS_BATTLE_NEGATIVE },
+ { .text = MatchCall_NegativeBattleText11, .stringVarFuncIds = STRS_BATTLE_NEGATIVE },
+ { .text = MatchCall_NegativeBattleText12, .stringVarFuncIds = STRS_BATTLE_NEGATIVE },
+ { .text = MatchCall_NegativeBattleText13, .stringVarFuncIds = STRS_BATTLE_NEGATIVE },
+ { .text = MatchCall_NegativeBattleText14, .stringVarFuncIds = STRS_BATTLE_NEGATIVE },
};
static const struct MatchCallText sMatchCallPositiveBattleTexts[] =
{
- { .text = MatchCall_PositiveBattleText1, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PositiveBattleText2, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PositiveBattleText3, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PositiveBattleText4, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PositiveBattleText5, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PositiveBattleText6, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PositiveBattleText7, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PositiveBattleText8, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PositiveBattleText9, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PositiveBattleText10, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PositiveBattleText11, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PositiveBattleText12, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PositiveBattleText13, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PositiveBattleText14, .stringVarFuncIds = { 0, 3, -1 } },
+ { .text = MatchCall_PositiveBattleText1, .stringVarFuncIds = STRS_BATTLE_POSITIVE },
+ { .text = MatchCall_PositiveBattleText2, .stringVarFuncIds = STRS_BATTLE_POSITIVE },
+ { .text = MatchCall_PositiveBattleText3, .stringVarFuncIds = STRS_BATTLE_POSITIVE },
+ { .text = MatchCall_PositiveBattleText4, .stringVarFuncIds = STRS_BATTLE_POSITIVE },
+ { .text = MatchCall_PositiveBattleText5, .stringVarFuncIds = STRS_BATTLE_POSITIVE },
+ { .text = MatchCall_PositiveBattleText6, .stringVarFuncIds = STRS_BATTLE_POSITIVE },
+ { .text = MatchCall_PositiveBattleText7, .stringVarFuncIds = STRS_BATTLE_POSITIVE },
+ { .text = MatchCall_PositiveBattleText8, .stringVarFuncIds = STRS_BATTLE_POSITIVE },
+ { .text = MatchCall_PositiveBattleText9, .stringVarFuncIds = STRS_BATTLE_POSITIVE },
+ { .text = MatchCall_PositiveBattleText10, .stringVarFuncIds = STRS_BATTLE_POSITIVE },
+ { .text = MatchCall_PositiveBattleText11, .stringVarFuncIds = STRS_BATTLE_POSITIVE },
+ { .text = MatchCall_PositiveBattleText12, .stringVarFuncIds = STRS_BATTLE_POSITIVE },
+ { .text = MatchCall_PositiveBattleText13, .stringVarFuncIds = STRS_BATTLE_POSITIVE },
+ { .text = MatchCall_PositiveBattleText14, .stringVarFuncIds = STRS_BATTLE_POSITIVE },
};
static const struct MatchCallText sMatchCallSameRouteBattleRequestTexts[] =
{
- { .text = MatchCall_SameRouteBattleRequestText1, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_SameRouteBattleRequestText2, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_SameRouteBattleRequestText3, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_SameRouteBattleRequestText4, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_SameRouteBattleRequestText5, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_SameRouteBattleRequestText6, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_SameRouteBattleRequestText7, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_SameRouteBattleRequestText8, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_SameRouteBattleRequestText9, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_SameRouteBattleRequestText10, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_SameRouteBattleRequestText11, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_SameRouteBattleRequestText12, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_SameRouteBattleRequestText13, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_SameRouteBattleRequestText14, .stringVarFuncIds = { 0, 1, -1 } },
+ { .text = MatchCall_SameRouteBattleRequestText1, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_SameRouteBattleRequestText2, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_SameRouteBattleRequestText3, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_SameRouteBattleRequestText4, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_SameRouteBattleRequestText5, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_SameRouteBattleRequestText6, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_SameRouteBattleRequestText7, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_SameRouteBattleRequestText8, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_SameRouteBattleRequestText9, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_SameRouteBattleRequestText10, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_SameRouteBattleRequestText11, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_SameRouteBattleRequestText12, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_SameRouteBattleRequestText13, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_SameRouteBattleRequestText14, .stringVarFuncIds = STRS_BATTLE_REQUEST },
};
static const struct MatchCallText sMatchCallDifferentRouteBattleRequestTexts[] =
{
- { .text = MatchCall_DifferentRouteBattleRequestText1, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_DifferentRouteBattleRequestText2, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_DifferentRouteBattleRequestText3, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_DifferentRouteBattleRequestText4, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_DifferentRouteBattleRequestText5, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_DifferentRouteBattleRequestText6, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_DifferentRouteBattleRequestText7, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_DifferentRouteBattleRequestText8, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_DifferentRouteBattleRequestText9, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_DifferentRouteBattleRequestText10, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_DifferentRouteBattleRequestText11, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_DifferentRouteBattleRequestText12, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_DifferentRouteBattleRequestText13, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_DifferentRouteBattleRequestText14, .stringVarFuncIds = { 0, 1, -1 } },
+ { .text = MatchCall_DifferentRouteBattleRequestText1, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_DifferentRouteBattleRequestText2, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_DifferentRouteBattleRequestText3, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_DifferentRouteBattleRequestText4, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_DifferentRouteBattleRequestText5, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_DifferentRouteBattleRequestText6, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_DifferentRouteBattleRequestText7, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_DifferentRouteBattleRequestText8, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_DifferentRouteBattleRequestText9, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_DifferentRouteBattleRequestText10, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_DifferentRouteBattleRequestText11, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_DifferentRouteBattleRequestText12, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_DifferentRouteBattleRequestText13, .stringVarFuncIds = STRS_BATTLE_REQUEST },
+ { .text = MatchCall_DifferentRouteBattleRequestText14, .stringVarFuncIds = STRS_BATTLE_REQUEST },
};
static const struct MatchCallText sMatchCallPersonalizedTexts[] =
{
- { .text = MatchCall_PersonalizedText1, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_PersonalizedText2, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText3, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText4, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText5, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText6, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText7, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText8, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText9, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText10, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText11, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText12, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText13, .stringVarFuncIds = { 0, 2, -1 } },
- { .text = MatchCall_PersonalizedText14, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText15, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText16, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText17, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText18, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PersonalizedText19, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText20, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText21, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText22, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText23, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText24, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText25, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText26, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText27, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText28, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PersonalizedText29, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PersonalizedText30, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText31, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText32, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText33, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText34, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText35, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText36, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText37, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText38, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText39, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText40, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText41, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText42, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PersonalizedText43, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText44, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PersonalizedText45, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText46, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText47, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText48, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText49, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText50, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText51, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_PersonalizedText52, .stringVarFuncIds = { 0, 3, -1 } },
- { .text = MatchCall_PersonalizedText53, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText54, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText55, .stringVarFuncIds = { 0, 1, -1 } },
- { .text = MatchCall_PersonalizedText56, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText57, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText58, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText59, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText60, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText61, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText62, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText63, .stringVarFuncIds = { 0, -1, -1 } },
- { .text = MatchCall_PersonalizedText64, .stringVarFuncIds = { 0, -1, -1 } },
+ { .text = MatchCall_PersonalizedText1, .stringVarFuncIds = { STR_TRAINER_NAME, STR_MAP_NAME, STR_NONE } },
+ { .text = MatchCall_PersonalizedText2, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText3, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText4, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText5, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText6, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText7, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText8, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText9, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText10, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText11, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText12, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText13, .stringVarFuncIds = { STR_TRAINER_NAME, STR_SPECIES_IN_ROUTE, STR_NONE } },
+ { .text = MatchCall_PersonalizedText14, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText15, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText16, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText17, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText18, .stringVarFuncIds = { STR_TRAINER_NAME, STR_SPECIES_IN_PARTY, STR_NONE } },
+ { .text = MatchCall_PersonalizedText19, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText20, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText21, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText22, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText23, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText24, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText25, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText26, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText27, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText28, .stringVarFuncIds = { STR_TRAINER_NAME, STR_SPECIES_IN_PARTY, STR_NONE } },
+ { .text = MatchCall_PersonalizedText29, .stringVarFuncIds = { STR_TRAINER_NAME, STR_SPECIES_IN_PARTY, STR_NONE } },
+ { .text = MatchCall_PersonalizedText30, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText31, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText32, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText33, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText34, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText35, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText36, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText37, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText38, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText39, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText40, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText41, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText42, .stringVarFuncIds = { STR_TRAINER_NAME, STR_SPECIES_IN_PARTY, STR_NONE } },
+ { .text = MatchCall_PersonalizedText43, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText44, .stringVarFuncIds = { STR_TRAINER_NAME, STR_SPECIES_IN_PARTY, STR_NONE } },
+ { .text = MatchCall_PersonalizedText45, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText46, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText47, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText48, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText49, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText50, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText51, .stringVarFuncIds = { STR_TRAINER_NAME, STR_MAP_NAME, STR_NONE } },
+ { .text = MatchCall_PersonalizedText52, .stringVarFuncIds = { STR_TRAINER_NAME, STR_SPECIES_IN_PARTY, STR_NONE } },
+ { .text = MatchCall_PersonalizedText53, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText54, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText55, .stringVarFuncIds = { STR_TRAINER_NAME, STR_MAP_NAME, STR_NONE } },
+ { .text = MatchCall_PersonalizedText56, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText57, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText58, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText59, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText60, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText61, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText62, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText63, .stringVarFuncIds = STRS_NORMAL_MSG },
+ { .text = MatchCall_PersonalizedText64, .stringVarFuncIds = STRS_NORMAL_MSG },
};
static const struct MatchCallText sMatchCallBattleFrontierStreakTexts[] =
{
- { .text = MatchCall_BattleFrontierStreakText1, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierStreakText2, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierStreakText3, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierStreakText4, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierStreakText5, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierStreakText6, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierStreakText7, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierStreakText8, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierStreakText9, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierStreakText10, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierStreakText11, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierStreakText12, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierStreakText13, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierStreakText14, .stringVarFuncIds = { 0, 4, 5 } },
+ { .text = MatchCall_BattleFrontierStreakText1, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierStreakText2, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierStreakText3, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierStreakText4, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierStreakText5, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierStreakText6, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierStreakText7, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierStreakText8, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierStreakText9, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierStreakText10, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierStreakText11, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierStreakText12, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierStreakText13, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierStreakText14, .stringVarFuncIds = STRS_FRONTIER },
};
static const struct MatchCallText sMatchCallBattleFrontierRecordStreakTexts[] =
{
- { .text = MatchCall_BattleFrontierRecordStreakText1, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierRecordStreakText2, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierRecordStreakText3, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierRecordStreakText4, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierRecordStreakText5, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierRecordStreakText6, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierRecordStreakText7, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierRecordStreakText8, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierRecordStreakText9, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierRecordStreakText10, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierRecordStreakText11, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierRecordStreakText12, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierRecordStreakText13, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleFrontierRecordStreakText14, .stringVarFuncIds = { 0, 4, 5 } },
+ { .text = MatchCall_BattleFrontierRecordStreakText1, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierRecordStreakText2, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierRecordStreakText3, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierRecordStreakText4, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierRecordStreakText5, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierRecordStreakText6, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierRecordStreakText7, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierRecordStreakText8, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierRecordStreakText9, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierRecordStreakText10, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierRecordStreakText11, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierRecordStreakText12, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierRecordStreakText13, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleFrontierRecordStreakText14, .stringVarFuncIds = STRS_FRONTIER },
};
static const struct MatchCallText sMatchCallBattleDomeTexts[] =
{
- { .text = MatchCall_BattleDomeText1, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleDomeText2, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleDomeText3, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleDomeText4, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleDomeText5, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleDomeText6, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleDomeText7, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleDomeText8, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleDomeText9, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleDomeText10, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleDomeText11, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleDomeText12, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleDomeText13, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattleDomeText14, .stringVarFuncIds = { 0, 4, 5 } },
+ { .text = MatchCall_BattleDomeText1, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleDomeText2, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleDomeText3, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleDomeText4, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleDomeText5, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleDomeText6, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleDomeText7, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleDomeText8, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleDomeText9, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleDomeText10, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleDomeText11, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleDomeText12, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleDomeText13, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattleDomeText14, .stringVarFuncIds = STRS_FRONTIER },
};
static const struct MatchCallText sMatchCallBattlePikeTexts[] =
{
- { .text = MatchCall_BattlePikeText1, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePikeText2, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePikeText3, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePikeText4, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePikeText5, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePikeText6, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePikeText7, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePikeText8, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePikeText9, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePikeText10, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePikeText11, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePikeText12, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePikeText13, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePikeText14, .stringVarFuncIds = { 0, 4, 5 } },
+ { .text = MatchCall_BattlePikeText1, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePikeText2, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePikeText3, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePikeText4, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePikeText5, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePikeText6, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePikeText7, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePikeText8, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePikeText9, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePikeText10, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePikeText11, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePikeText12, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePikeText13, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePikeText14, .stringVarFuncIds = STRS_FRONTIER },
};
static const struct MatchCallText sMatchCallBattlePyramidTexts[] =
{
- { .text = MatchCall_BattlePyramidText1, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePyramidText2, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePyramidText3, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePyramidText4, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePyramidText5, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePyramidText6, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePyramidText7, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePyramidText8, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePyramidText9, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePyramidText10, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePyramidText11, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePyramidText12, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePyramidText13, .stringVarFuncIds = { 0, 4, 5 } },
- { .text = MatchCall_BattlePyramidText14, .stringVarFuncIds = { 0, 4, 5 } },
+ { .text = MatchCall_BattlePyramidText1, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePyramidText2, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePyramidText3, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePyramidText4, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePyramidText5, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePyramidText6, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePyramidText7, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePyramidText8, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePyramidText9, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePyramidText10, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePyramidText11, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePyramidText12, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePyramidText13, .stringVarFuncIds = STRS_FRONTIER },
+ { .text = MatchCall_BattlePyramidText14, .stringVarFuncIds = STRS_FRONTIER },
};
static const struct MatchCallText *const sMatchCallBattleTopics[] =
{
- sMatchCallWildBattleTexts,
- sMatchCallNegativeBattleTexts,
- sMatchCallPositiveBattleTexts,
+ [B_TOPIC_WILD - 1] = sMatchCallWildBattleTexts,
+ [B_TOPIC_NEGATIVE - 1] = sMatchCallNegativeBattleTexts,
+ [B_TOPIC_POSITIVE - 1] = sMatchCallPositiveBattleTexts,
};
static const struct MatchCallText *const sMatchCallBattleRequestTopics[] =
{
- sMatchCallSameRouteBattleRequestTexts,
- sMatchCallDifferentRouteBattleRequestTexts,
+ [REQ_TOPIC_SAME_ROUTE - 1] = sMatchCallSameRouteBattleRequestTexts,
+ [REQ_TOPIC_DIFF_ROUTE - 1] = sMatchCallDifferentRouteBattleRequestTexts,
};
static const struct MatchCallText *const sMatchCallGeneralTopics[] =
{
- sMatchCallPersonalizedTexts,
- sMatchCallBattleFrontierStreakTexts,
- sMatchCallBattleFrontierRecordStreakTexts,
- sMatchCallBattleDomeTexts,
- sMatchCallBattlePikeTexts,
- sMatchCallBattlePyramidTexts,
+ [GEN_TOPIC_PERSONAL - 1] = sMatchCallPersonalizedTexts,
+ [GEN_TOPIC_STREAK - 1] = sMatchCallBattleFrontierStreakTexts,
+ [GEN_TOPIC_STREAK_RECORD - 1] = sMatchCallBattleFrontierRecordStreakTexts,
+ [GEN_TOPIC_B_DOME - 1] = sMatchCallBattleDomeTexts,
+ [GEN_TOPIC_B_PIKE - 1] = sMatchCallBattlePikeTexts,
+ [GEN_TOPIC_B_PYRAMID - 1] = sMatchCallBattlePyramidTexts,
};
extern const u8 gBirchDexRatingText_AreYouCurious[];
@@ -971,13 +1023,13 @@ extern const u8 gBirchDexRatingText_OnANationwideBasis[];
void InitMatchCallCounters(void)
{
RtcCalcLocalTime();
- gMatchCallState.minutes = GetCurrentTotalMinutes(&gLocalTime) + 10;
- gMatchCallState.stepCounter = 0;
+ sMatchCallState.minutes = GetCurrentTotalMinutes(&gLocalTime) + 10;
+ sMatchCallState.stepCounter = 0;
}
static u32 GetCurrentTotalMinutes(struct Time *time)
{
- return time->days * 1440 + time->hours * 60 + time->minutes;
+ return time->days * 24 * 60 + time->hours * 60 + time->minutes;
}
static bool32 UpdateMatchCallMinutesCounter(void)
@@ -985,9 +1037,9 @@ static bool32 UpdateMatchCallMinutesCounter(void)
int curMinutes;
RtcCalcLocalTime();
curMinutes = GetCurrentTotalMinutes(&gLocalTime);
- if (gMatchCallState.minutes > curMinutes || curMinutes - gMatchCallState.minutes > 9)
+ if (sMatchCallState.minutes > curMinutes || curMinutes - sMatchCallState.minutes > 9)
{
- gMatchCallState.minutes = curMinutes;
+ sMatchCallState.minutes = curMinutes;
return TRUE;
}
@@ -1026,9 +1078,9 @@ static bool32 MapAllowsMatchCall(void)
static bool32 UpdateMatchCallStepCounter(void)
{
- if (++gMatchCallState.stepCounter >= 10)
+ if (++sMatchCallState.stepCounter >= 10)
{
- gMatchCallState.stepCounter = 0;
+ sMatchCallState.stepCounter = 0;
return TRUE;
}
else
@@ -1041,15 +1093,15 @@ static bool32 SelectMatchCallTrainer(void)
{
u32 matchCallId;
u32 numRegistered = GetNumRegisteredNPCs();
- if (!numRegistered)
+ if (numRegistered == 0)
return FALSE;
- gMatchCallState.trainerId = GetActiveMatchCallTrainerId(Random() % numRegistered);
- gMatchCallState.triggeredFromScript = 0;
- if (gMatchCallState.trainerId == REMATCH_TABLE_ENTRIES)
+ sMatchCallState.trainerId = GetActiveMatchCallTrainerId(Random() % numRegistered);
+ sMatchCallState.triggeredFromScript = FALSE;
+ if (sMatchCallState.trainerId == REMATCH_TABLE_ENTRIES)
return FALSE;
- matchCallId = GetTrainerMatchCallId(gMatchCallState.trainerId);
+ matchCallId = GetTrainerMatchCallId(sMatchCallState.trainerId);
if (GetRematchTrainerLocation(matchCallId) == gMapHeader.regionMapSectionId && !TrainerIsEligibleForRematch(matchCallId))
return FALSE;
@@ -1085,10 +1137,23 @@ static u32 GetActiveMatchCallTrainerId(u32 activeMatchCallId)
return REMATCH_TABLE_ENTRIES;
}
+/*
+ From the function calls below, a call can only be triggered...
+ - If the player has match call
+ - Every 10th step
+ - Every 10 minutes
+ - 1/3 of the time (or 2/3 of the time, if the lead party Pokémon has Lightning Rod)
+ - If in a valid outdoor map (not Safari Zone, not underwater, not Mt Chimney with Team Magma, not Sootopolis with legendaries)
+ - If an eligible trainer to call the player is selected
+*/
bool32 TryStartMatchCall(void)
{
- if (FlagGet(FLAG_HAS_MATCH_CALL) && UpdateMatchCallStepCounter() && UpdateMatchCallMinutesCounter()
- && CheckMatchCallChance() && MapAllowsMatchCall() && SelectMatchCallTrainer())
+ if (FlagGet(FLAG_HAS_MATCH_CALL)
+ && UpdateMatchCallStepCounter()
+ && UpdateMatchCallMinutesCounter()
+ && CheckMatchCallChance()
+ && MapAllowsMatchCall()
+ && SelectMatchCallTrainer())
{
StartMatchCall();
return TRUE;
@@ -1099,7 +1164,7 @@ bool32 TryStartMatchCall(void)
void StartMatchCallFromScript(const u8 *message)
{
- gMatchCallState.triggeredFromScript = 1;
+ sMatchCallState.triggeredFromScript = TRUE;
StartMatchCall();
}
@@ -1110,7 +1175,7 @@ bool32 IsMatchCallTaskActive(void)
static void StartMatchCall(void)
{
- if (!gMatchCallState.triggeredFromScript)
+ if (!sMatchCallState.triggeredFromScript)
{
ScriptContext2_Enable();
FreezeObjectEvents();
@@ -1122,33 +1187,37 @@ static void StartMatchCall(void)
CreateTask(ExecuteMatchCall, 1);
}
-static const u16 sUnknown_0860EA4C[] = INCBIN_U16("graphics/unknown/unknown_60EA4C.gbapal");
-static const u8 sUnknown_0860EA6C[] = INCBIN_U8("graphics/interface/menu_border.4bpp");
-static const u16 sPokeNavIconPalette[] = INCBIN_U16("graphics/pokenav/icon.gbapal");
-static const u32 sPokeNavIconGfx[] = INCBIN_U32("graphics/pokenav/icon.4bpp.lz");
+static const u16 sMatchCallWindow_Pal[] = INCBIN_U16("graphics/pokenav/match_call_window.gbapal");
+static const u8 sMatchCallWindow_Gfx[] = INCBIN_U8("graphics/pokenav/match_call_window.4bpp");
+static const u16 sPokenavIcon_Pal[] = INCBIN_U16("graphics/pokenav/icon.gbapal");
+static const u32 sPokenavIcon_Gfx[] = INCBIN_U32("graphics/pokenav/icon.4bpp.lz");
static const u8 sText_PokenavCallEllipsis[] = _("………………\p");
+#define tState data[0]
+#define tWindowId data[2]
+#define tIconTaskId data[5]
+
static bool32 (*const sMatchCallTaskFuncs[])(u8) =
{
- LoadMatchCallWindowGfx,
- MoveMatchCallWindowToVram,
- PrintMatchCallIntroEllipsis,
- sub_81962B0,
- sub_81962D8,
- sub_8196330,
- sub_8196390,
- sub_81963F0,
+ MatchCall_LoadGfx,
+ MatchCall_DrawWindow,
+ MatchCall_ReadyIntro,
+ MatchCall_SlideWindowIn,
+ MatchCall_PrintIntro,
+ MatchCall_PrintMessage,
+ MatchCall_SlideWindowOut,
+ MatchCall_EndCall,
};
static void ExecuteMatchCall(u8 taskId)
{
- s16 *taskData = gTasks[taskId].data;
- if (sMatchCallTaskFuncs[taskData[0]](taskId))
+ s16 *data = gTasks[taskId].data;
+ if (sMatchCallTaskFuncs[tState](taskId))
{
- taskData[0]++;
- taskData[1] = 0;
- if ((u16)taskData[0] > 7)
+ tState++;
+ data[1] = 0; // Never read
+ if ((u16)tState > 7)
DestroyTask(taskId);
}
}
@@ -1164,65 +1233,69 @@ static const struct WindowTemplate sMatchCallTextWindow =
.baseBlock = 0x200
};
-static bool32 LoadMatchCallWindowGfx(u8 taskId)
+#define TILE_MC_WINDOW 0x270
+#define TILE_POKENAV_ICON 0x279
+
+static bool32 MatchCall_LoadGfx(u8 taskId)
{
- s16 *taskData = gTasks[taskId].data;
- taskData[2] = AddWindow(&sMatchCallTextWindow);
- if (taskData[2] == WINDOW_NONE)
+ s16 *data = gTasks[taskId].data;
+ tWindowId = AddWindow(&sMatchCallTextWindow);
+ if (tWindowId == WINDOW_NONE)
{
DestroyTask(taskId);
return FALSE;
}
- if (LoadBgTiles(0, sUnknown_0860EA6C, sizeof(sUnknown_0860EA6C), 0x270) == 0xFFFF)
+ if (LoadBgTiles(0, sMatchCallWindow_Gfx, sizeof(sMatchCallWindow_Gfx), TILE_MC_WINDOW) == 0xFFFF)
{
- RemoveWindow(taskData[2]);
+ RemoveWindow(tWindowId);
DestroyTask(taskId);
return FALSE;
}
- if (!DecompressAndCopyTileDataToVram(0, sPokeNavIconGfx, 0, 0x279, 0))
+ if (!DecompressAndCopyTileDataToVram(0, sPokenavIcon_Gfx, 0, TILE_POKENAV_ICON, 0))
{
- RemoveWindow(taskData[2]);
+ RemoveWindow(tWindowId);
DestroyTask(taskId);
return FALSE;
}
- FillWindowPixelBuffer(taskData[2], PIXEL_FILL(8));
- LoadPalette(sUnknown_0860EA4C, 0xE0, 0x20);
- LoadPalette(sPokeNavIconPalette, 0xF0, 0x20);
+ FillWindowPixelBuffer(tWindowId, PIXEL_FILL(8));
+ LoadPalette(sMatchCallWindow_Pal, 0xE0, sizeof(sMatchCallWindow_Pal));
+ LoadPalette(sPokenavIcon_Pal, 0xF0, sizeof(sPokenavIcon_Pal));
ChangeBgY(0, -0x2000, 0);
return TRUE;
}
-static bool32 MoveMatchCallWindowToVram(u8 taskId)
+static bool32 MatchCall_DrawWindow(u8 taskId)
{
- s16 *taskData = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
if (FreeTempTileDataBuffersIfPossible())
return FALSE;
- PutWindowTilemap(taskData[2]);
- DrawMatchCallTextBoxBorder(taskData[2], 0x270, 14);
- WriteSequenceToBgTilemapBuffer(0, 0xF279, 1, 15, 4, 4, 17, 1);
- taskData[5] = CreateTask(sub_8196694, 10);
- CopyWindowToVram(taskData[2], 2);
+ PutWindowTilemap(tWindowId);
+ DrawMatchCallTextBoxBorder_Internal(tWindowId, TILE_MC_WINDOW, 14);
+ WriteSequenceToBgTilemapBuffer(0, (0xF << 12) | TILE_POKENAV_ICON, 1, 15, 4, 4, 17, 1);
+ tIconTaskId = CreateTask(Task_SpinPokenavIcon, 10);
+ CopyWindowToVram(tWindowId, 2);
CopyBgTilemapBufferToVram(0);
return TRUE;
}
-static bool32 PrintMatchCallIntroEllipsis(u8 taskId)
+static bool32 MatchCall_ReadyIntro(u8 taskId)
{
- s16 *taskData = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
if (!IsDma3ManagerBusyWithBgCopy())
{
- InitMatchCallTextPrinter(taskData[2], sText_PokenavCallEllipsis);
+ // Note that "..." is not printed yet, just readied
+ InitMatchCallTextPrinter(tWindowId, sText_PokenavCallEllipsis);
return TRUE;
}
return FALSE;
}
-static bool32 sub_81962B0(u8 taskId)
+static bool32 MatchCall_SlideWindowIn(u8 taskId)
{
if (ChangeBgY(0, 0x600, 1) >= 0)
{
@@ -1233,29 +1306,30 @@ static bool32 sub_81962B0(u8 taskId)
return FALSE;
}
-static bool32 sub_81962D8(u8 taskId)
+static bool32 MatchCall_PrintIntro(u8 taskId)
{
- s16 *taskData = gTasks[taskId].data;
- if (!ExecuteMatchCallTextPrinter(taskData[2]))
+ s16 *data = gTasks[taskId].data;
+ if (!RunMatchCallTextPrinter(tWindowId))
{
- FillWindowPixelBuffer(taskData[2], PIXEL_FILL(8));
- if (!gMatchCallState.triggeredFromScript)
- SelectMatchCallMessage(gMatchCallState.trainerId, gStringVar4);
-
- InitMatchCallTextPrinter(taskData[2], gStringVar4);
+ FillWindowPixelBuffer(tWindowId, PIXEL_FILL(8));
+
+ // Ready the message
+ if (!sMatchCallState.triggeredFromScript)
+ SelectMatchCallMessage(sMatchCallState.trainerId, gStringVar4);
+ InitMatchCallTextPrinter(tWindowId, gStringVar4);
return TRUE;
}
return FALSE;
}
-static bool32 sub_8196330(u8 taskId)
+static bool32 MatchCall_PrintMessage(u8 taskId)
{
- s16 *taskData = gTasks[taskId].data;
- if (!ExecuteMatchCallTextPrinter(taskData[2]) && !IsSEPlaying() && JOY_NEW(A_BUTTON | B_BUTTON))
+ s16 *data = gTasks[taskId].data;
+ if (!RunMatchCallTextPrinter(tWindowId) && !IsSEPlaying() && JOY_NEW(A_BUTTON | B_BUTTON))
{
- FillWindowPixelBuffer(taskData[2], PIXEL_FILL(8));
- CopyWindowToVram(taskData[2], 2);
+ FillWindowPixelBuffer(tWindowId, PIXEL_FILL(8));
+ CopyWindowToVram(tWindowId, 2);
PlaySE(SE_POKENAV_HANG_UP);
return TRUE;
}
@@ -1263,14 +1337,14 @@ static bool32 sub_8196330(u8 taskId)
return FALSE;
}
-static bool32 sub_8196390(u8 taskId)
+static bool32 MatchCall_SlideWindowOut(u8 taskId)
{
- s16 *taskData = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
if (ChangeBgY(0, 0x600, 2) <= -0x2000)
{
FillBgTilemapBufferRect_Palette0(0, 0, 0, 14, 30, 6);
- DestroyTask(taskData[5]);
- RemoveWindow(taskData[2]);
+ DestroyTask(tIconTaskId);
+ RemoveWindow(tWindowId);
CopyBgTilemapBufferToVram(0);
return TRUE;
}
@@ -1278,13 +1352,13 @@ static bool32 sub_8196390(u8 taskId)
return FALSE;
}
-static bool32 sub_81963F0(u8 taskId)
+static bool32 MatchCall_EndCall(u8 taskId)
{
u8 playerObjectId;
if (!IsDma3ManagerBusyWithBgCopy() && !IsSEPlaying())
{
ChangeBgY(0, 0, 0);
- if (!gMatchCallState.triggeredFromScript)
+ if (!sMatchCallState.triggeredFromScript)
{
LoadMessageBoxAndBorderGfx();
playerObjectId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0);
@@ -1300,7 +1374,7 @@ static bool32 sub_81963F0(u8 taskId)
return FALSE;
}
-static void DrawMatchCallTextBoxBorder(u32 windowId, u32 tileOffset, u32 paletteId)
+static void DrawMatchCallTextBoxBorder_Internal(u32 windowId, u32 tileOffset, u32 paletteId)
{
int bg, x, y, width, height;
int tileNum;
@@ -1335,40 +1409,48 @@ static void InitMatchCallTextPrinter(int windowId, const u8 *str)
printerTemplate.letterSpacing = 0;
printerTemplate.lineSpacing = 0;
printerTemplate.unk = 0;
- printerTemplate.fgColor = 10;
- printerTemplate.bgColor = 8;
- printerTemplate.shadowColor = 14;
- gTextFlags.useAlternateDownArrow = 0;
+ printerTemplate.fgColor = TEXT_DYNAMIC_COLOR_1;
+ printerTemplate.bgColor = TEXT_COLOR_BLUE;
+ printerTemplate.shadowColor = TEXT_DYNAMIC_COLOR_5;
+ gTextFlags.useAlternateDownArrow = FALSE;
AddTextPrinter(&printerTemplate, GetPlayerTextSpeedDelay(), NULL);
}
-static bool32 ExecuteMatchCallTextPrinter(int windowId)
+static bool32 RunMatchCallTextPrinter(int windowId)
{
if (JOY_HELD(A_BUTTON))
- gTextFlags.canABSpeedUpPrint = 1;
+ gTextFlags.canABSpeedUpPrint = TRUE;
else
- gTextFlags.canABSpeedUpPrint = 0;
+ gTextFlags.canABSpeedUpPrint = FALSE;
RunTextPrinters();
return IsTextPrinterActive(windowId);
}
-static void sub_8196694(u8 taskId)
+#define tTimer data[0]
+#define tSpinStage data[1]
+#define tTileNum data[2]
+
+static void Task_SpinPokenavIcon(u8 taskId)
{
- s16 *taskData = gTasks[taskId].data;
- if (++taskData[0] > 8)
+ s16 *data = gTasks[taskId].data;
+ if (++tTimer > 8)
{
- taskData[0] = 0;
- if (++taskData[1] > 7)
- taskData[1] = 0;
+ tTimer = 0;
+ if (++tSpinStage > 7)
+ tSpinStage = 0;
- taskData[2] = (taskData[1] * 16) + 0x279;
- WriteSequenceToBgTilemapBuffer(0, taskData[2] | ~0xFFF, 1, 15, 4, 4, 17, 1);
+ tTileNum = (tSpinStage * 16) + TILE_POKENAV_ICON;
+ WriteSequenceToBgTilemapBuffer(0, tTileNum | ~0xFFF, 1, 15, 4, 4, 17, 1);
CopyBgTilemapBufferToVram(0);
}
}
+#undef tTimer
+#undef tSpinStage
+#undef tTileNum
+
static bool32 TrainerIsEligibleForRematch(int matchCallId)
{
return gSaveBlock1Ptr->trainerRematches[matchCallId] > 0;
@@ -1392,7 +1474,10 @@ static u32 GetNumRematchTrainersFought(void)
return count;
}
-static u32 sub_8196774(int arg0)
+// Look through the rematch table for trainers that have been defeated once before.
+// Return the index into the rematch table of the nth defeated trainer,
+// or REMATCH_TABLE_ENTRIES if fewer than n rematch trainers have been defeated.
+static u32 GetNthRematchTrainerFought(int n)
{
u32 i, count;
@@ -1400,7 +1485,7 @@ static u32 sub_8196774(int arg0)
{
if (HasTrainerBeenFought(gRematchTable[i].trainerIds[0]))
{
- if (count == arg0)
+ if (count == n)
return i;
count++;
@@ -1417,13 +1502,19 @@ bool32 SelectMatchCallMessage(int trainerId, u8 *str)
bool32 retVal = FALSE;
matchCallId = GetTrainerMatchCallId(trainerId);
- gBattleFrontierStreakInfo.facilityId = 0;
+ sBattleFrontierStreakInfo.facilityId = 0;
+
+ // If the player is on the same route as the trainer
+ // and they can be rematched, they will always request a battle
if (TrainerIsEligibleForRematch(matchCallId)
&& GetRematchTrainerLocation(matchCallId) == gMapHeader.regionMapSectionId)
{
matchCallText = GetSameRouteMatchCallText(matchCallId, str);
}
- else if (sub_8196D74(matchCallId))
+ // If the player is not on the same route as the trainer
+ // and they can be rematched, there is a random chance for
+ // the trainer to request a battle
+ else if (ShouldTrainerRequestBattle(matchCallId))
{
matchCallText = GetDifferentRouteMatchCallText(matchCallId, str);
retVal = TRUE;
@@ -1431,10 +1522,12 @@ bool32 SelectMatchCallMessage(int trainerId, u8 *str)
}
else if (Random() % 3)
{
+ // Message talking about a battle the NPC had
matchCallText = GetBattleMatchCallText(matchCallId, str);
}
else
{
+ // Message talking about something else
matchCallText = GetGeneralMatchCallText(matchCallId, str);
}
@@ -1509,8 +1602,8 @@ static const struct MatchCallText *GetGeneralMatchCallText(int matchCallId, u8 *
count = Random() % count;
for (i = 0; i < NUM_FRONTIER_FACILITIES; i++)
{
- gBattleFrontierStreakInfo.streak = GetFrontierStreakInfo(i, &topic);
- if (gBattleFrontierStreakInfo.streak < 2)
+ sBattleFrontierStreakInfo.streak = GetFrontierStreakInfo(i, &topic);
+ if (sBattleFrontierStreakInfo.streak < 2)
continue;
if (!count)
@@ -1519,7 +1612,7 @@ static const struct MatchCallText *GetGeneralMatchCallText(int matchCallId, u8 *
count--;
}
- gBattleFrontierStreakInfo.facilityId = i;
+ sBattleFrontierStreakInfo.facilityId = i;
id = sMatchCallTrainers[matchCallId].battleFrontierRecordStreakTextIndex - 1;
return &sMatchCallGeneralTopics[topic][id];
}
@@ -1541,7 +1634,7 @@ static u8 *const sMatchCallTextStringVars[] = { gStringVar1, gStringVar2, gStrin
static void PopulateMatchCallStringVars(int matchCallId, const s8 *stringVarFuncIds)
{
int i;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < NUM_STRVARS_IN_MSG; i++)
{
if (stringVarFuncIds[i] >= 0)
PopulateMatchCallStringVar(matchCallId, stringVarFuncIds[i], sMatchCallTextStringVars[i]);
@@ -1550,12 +1643,12 @@ static void PopulateMatchCallStringVars(int matchCallId, const s8 *stringVarFunc
static void (*const sPopulateMatchCallStringVarFuncs[])(int, u8 *) =
{
- PopulateTrainerName,
- PopulateMapName,
- PopulateSpeciesFromTrainerLocation,
- PopulateSpeciesFromTrainerParty,
- PopulateBattleFrontierFacilityName,
- PopulateBattleFrontierStreak,
+ [STR_TRAINER_NAME] = PopulateTrainerName,
+ [STR_MAP_NAME] = PopulateMapName,
+ [STR_SPECIES_IN_ROUTE] = PopulateSpeciesFromTrainerLocation,
+ [STR_SPECIES_IN_PARTY] = PopulateSpeciesFromTrainerParty,
+ [STR_FACILITY_NAME] = PopulateBattleFrontierFacilityName,
+ [STR_FRONTIER_STREAK] = PopulateBattleFrontierStreak,
};
static void PopulateMatchCallStringVar(int matchCallId, int funcId, u8 *destStr)
@@ -1577,7 +1670,7 @@ static void PopulateTrainerName(int matchCallId, u8 *destStr)
{
u32 i;
u16 trainerId = sMatchCallTrainers[matchCallId].trainerId;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < ARRAY_COUNT(sMultiTrainerMatchCallTexts); i++)
{
if (sMultiTrainerMatchCallTexts[i].trainerId == trainerId)
{
@@ -1728,20 +1821,20 @@ static const u8 *const sBattleFrontierFacilityNames[] =
static void PopulateBattleFrontierFacilityName(int matchCallId, u8 *destStr)
{
- StringCopy(destStr, sBattleFrontierFacilityNames[gBattleFrontierStreakInfo.facilityId]);
+ StringCopy(destStr, sBattleFrontierFacilityNames[sBattleFrontierStreakInfo.facilityId]);
}
static void PopulateBattleFrontierStreak(int matchCallId, u8 *destStr)
{
int i = 0;
- int streak = gBattleFrontierStreakInfo.streak;
+ int streak = sBattleFrontierStreakInfo.streak;
while (streak != 0)
{
streak /= 10;
i++;
}
- ConvertIntToDecimalStringN(destStr, gBattleFrontierStreakInfo.streak, STR_CONV_MODE_LEFT_ALIGN, i);
+ ConvertIntToDecimalStringN(destStr, sBattleFrontierStreakInfo.streak, STR_CONV_MODE_LEFT_ALIGN, i);
}
static const u16 sBadgeFlags[NUM_BADGES] =
@@ -1769,13 +1862,14 @@ static int GetNumOwnedBadges(void)
return i;
}
-static bool32 sub_8196D74(int matchCallId)
+// Whether or not a trainer calling the player from a different route should request a battle
+static bool32 ShouldTrainerRequestBattle(int matchCallId)
{
int dayCount;
int otId;
- u16 easyChatWord;
+ u16 dewfordRand;
int numRematchTrainersFought;
- int var0, var1, var2;
+ int max, rand, n;
if (GetNumOwnedBadges() < 5)
return FALSE;
@@ -1783,14 +1877,14 @@ static bool32 sub_8196D74(int matchCallId)
dayCount = RtcGetLocalDayCount();
otId = GetTrainerId(gSaveBlock2Ptr->playerTrainerId) & 0xFFFF;
- easyChatWord = gSaveBlock1Ptr->easyChatPairs[0].unk2;
+ dewfordRand = gSaveBlock1Ptr->dewfordTrends[0].rand;
numRematchTrainersFought = GetNumRematchTrainersFought();
- var0 = (numRematchTrainersFought * 13) / 10;
- var1 = ((dayCount ^ easyChatWord) + (easyChatWord ^ GetGameStat(GAME_STAT_TRAINER_BATTLES))) ^ otId;
- var2 = var1 % var0;
- if (var2 < numRematchTrainersFought)
+ max = (numRematchTrainersFought * 13) / 10;
+ rand = ((dayCount ^ dewfordRand) + (dewfordRand ^ GetGameStat(GAME_STAT_TRAINER_BATTLES))) ^ otId;
+ n = rand % max;
+ if (n < numRematchTrainersFought)
{
- if (sub_8196774(var2) == matchCallId)
+ if (GetNthRematchTrainerFought(n) == matchCallId)
return TRUE;
}
@@ -1814,7 +1908,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId)
streak = gSaveBlock2Ptr->frontier.domeRecordWinStreaks[i][j];
}
}
- *topicTextId = 3;
+ *topicTextId = GEN_TOPIC_B_DOME - 1;
break;
#ifdef BUGFIX
case FRONTIER_FACILITY_PIKE:
@@ -1826,7 +1920,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId)
if (streak < gSaveBlock2Ptr->frontier.pikeRecordStreaks[i])
streak = gSaveBlock2Ptr->frontier.pikeRecordStreaks[i];
}
- *topicTextId = 4;
+ *topicTextId = GEN_TOPIC_B_PIKE - 1;
break;
case FRONTIER_FACILITY_TOWER:
for (i = 0; i < 4; i++)
@@ -1837,7 +1931,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId)
streak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[i][j];
}
}
- *topicTextId = 2;
+ *topicTextId = GEN_TOPIC_STREAK_RECORD - 1;
break;
case FRONTIER_FACILITY_PALACE:
for (i = 0; i < 2; i++)
@@ -1848,7 +1942,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId)
streak = gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[i][j];
}
}
- *topicTextId = 2;
+ *topicTextId = GEN_TOPIC_STREAK_RECORD - 1;
break;
#ifdef BUGFIX
case FRONTIER_FACILITY_FACTORY:
@@ -1863,7 +1957,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId)
streak = gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[i][j];
}
}
- *topicTextId = 2;
+ *topicTextId = GEN_TOPIC_STREAK_RECORD - 1;
break;
case FRONTIER_FACILITY_ARENA:
for (i = 0; i < 2; i++)
@@ -1871,7 +1965,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId)
if (streak < gSaveBlock2Ptr->frontier.arenaRecordStreaks[i])
streak = gSaveBlock2Ptr->frontier.arenaRecordStreaks[i];
}
- *topicTextId = 2;
+ *topicTextId = GEN_TOPIC_STREAK_RECORD - 1;
break;
case FRONTIER_FACILITY_PYRAMID:
for (i = 0; i < 2; i++)
@@ -1879,7 +1973,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId)
if (streak < gSaveBlock2Ptr->frontier.pyramidRecordStreaks[i])
streak = gSaveBlock2Ptr->frontier.pyramidRecordStreaks[i];
}
- *topicTextId = 5;
+ *topicTextId = GEN_TOPIC_B_PYRAMID - 1;
break;
}
@@ -1971,7 +2065,7 @@ void BufferPokedexRatingForMatchCall(u8 *destStr)
u8 *str;
u8 dexRatingLevel;
- u8 *buffer = Alloc(0x3E8);
+ u8 *buffer = Alloc(sizeof(gStringVar4));
if (!buffer)
{
destStr[0] = EOS;
@@ -1984,18 +2078,15 @@ void BufferPokedexRatingForMatchCall(u8 *destStr)
ConvertIntToDecimalStringN(gStringVar2, numCaught, STR_CONV_MODE_LEFT_ALIGN, 3);
dexRatingLevel = GetPokedexRatingLevel(numCaught);
str = StringCopy(buffer, gBirchDexRatingText_AreYouCurious);
- str[0] = CHAR_PROMPT_CLEAR;
- str++;
+ *(str++) = CHAR_PROMPT_CLEAR;
str = StringCopy(str, gBirchDexRatingText_SoYouveSeenAndCaught);
- str[0] = CHAR_PROMPT_CLEAR;
- str++;
+ *(str++) = CHAR_PROMPT_CLEAR;
StringCopy(str, sBirchDexRatingTexts[dexRatingLevel]);
str = StringExpandPlaceholders(destStr, buffer);
if (IsNationalPokedexEnabled())
{
- str[0] = CHAR_PROMPT_CLEAR;
- str++;
+ *(str++) = CHAR_PROMPT_CLEAR;
numSeen = GetNationalPokedexCount(FLAG_GET_SEEN);
numCaught = GetNationalPokedexCount(FLAG_GET_CAUGHT);
ConvertIntToDecimalStringN(gStringVar1, numSeen, STR_CONV_MODE_LEFT_ALIGN, 3);
@@ -2006,14 +2097,14 @@ void BufferPokedexRatingForMatchCall(u8 *destStr)
Free(buffer);
}
-void sub_8197184(u32 windowId, u32 destOffset, u32 paletteId)
+void LoadMatchCallWindowGfx(u32 windowId, u32 destOffset, u32 paletteId)
{
u8 bg = GetWindowAttribute(windowId, WINDOW_BG);
- LoadBgTiles(bg, sUnknown_0860EA6C, 0x100, destOffset);
- LoadPalette(sUnknown_0860EA4C, paletteId << 4, 0x20);
+ LoadBgTiles(bg, sMatchCallWindow_Gfx, 0x100, destOffset);
+ LoadPalette(sMatchCallWindow_Pal, paletteId << 4, sizeof(sMatchCallWindow_Pal));
}
-void sub_81971C4(u32 windowId, u32 tileOffset, u32 paletteId)
+void DrawMatchCallTextBoxBorder(u32 windowId, u32 tileOffset, u32 paletteId)
{
- DrawMatchCallTextBoxBorder(windowId, tileOffset, paletteId);
+ DrawMatchCallTextBoxBorder_Internal(windowId, tileOffset, paletteId);
}
diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c
index 228415628..239639e0b 100644
--- a/src/mauville_old_man.c
+++ b/src/mauville_old_man.c
@@ -680,45 +680,43 @@ void ScrSpecial_SetMauvilleOldManObjEventGfx(void)
// Language fixers?
-void sub_8120B70(union OldMan * oldMan)
+void SanitizeMauvilleOldManForRuby(union OldMan * oldMan)
{
s32 i;
u8 playerName[PLAYER_NAME_LENGTH + 1];
switch (oldMan->common.id)
{
- case MAUVILLE_MAN_TRADER:
+ case MAUVILLE_MAN_TRADER:
+ {
+ struct MauvilleOldManTrader * trader = &oldMan->trader;
+ for (i = 0; i < NUM_TRADER_ITEMS; i++)
{
- struct MauvilleOldManTrader * trader = &oldMan->trader;
- for (i = 0; i < NUM_TRADER_ITEMS; i++)
- {
- if (trader->language[i] == LANGUAGE_JAPANESE)
- {
- ConvertInternationalString(trader->playerNames[i], LANGUAGE_JAPANESE);
- }
- }
+ if (trader->language[i] == LANGUAGE_JAPANESE)
+ ConvertInternationalString(trader->playerNames[i], LANGUAGE_JAPANESE);
}
- break;
- case MAUVILLE_MAN_STORYTELLER:
+ break;
+ }
+ case MAUVILLE_MAN_STORYTELLER:
+ {
+ struct MauvilleManStoryteller * storyteller = &oldMan->storyteller;
+ for (i = 0; i < NUM_STORYTELLER_TALES; i++)
{
- struct MauvilleManStoryteller * storyteller = &oldMan->storyteller;
- for (i = 0; i < NUM_STORYTELLER_TALES; i++)
+ if (storyteller->gameStatIDs[i] != 0)
{
- if (storyteller->gameStatIDs[i] != 0)
+ memcpy(playerName, storyteller->trainerNames[i], PLAYER_NAME_LENGTH);
+ playerName[PLAYER_NAME_LENGTH] = EOS;
+ if (IsStringJapanese(playerName))
{
- memcpy(playerName, storyteller->trainerNames[i], PLAYER_NAME_LENGTH);
- playerName[PLAYER_NAME_LENGTH] = EOS;
- if (IsStringJapanese(playerName))
- {
- memset(playerName, CHAR_SPACE, PLAYER_NAME_LENGTH + 1);
- StringCopy(playerName, gText_Friend);
- memcpy(storyteller->trainerNames[i], playerName, PLAYER_NAME_LENGTH);
- storyteller->language[i] = GAME_LANGUAGE;
- }
+ memset(playerName, CHAR_SPACE, PLAYER_NAME_LENGTH + 1);
+ StringCopy(playerName, gText_Friend);
+ memcpy(storyteller->trainerNames[i], playerName, PLAYER_NAME_LENGTH);
+ storyteller->language[i] = GAME_LANGUAGE;
}
}
}
- break;
+ break;
+ }
}
}
diff --git a/src/menu.c b/src/menu.c
index 86e5caac2..90e7d8c75 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -95,7 +95,7 @@ static const struct WindowTemplate sYesNo_WindowTemplates =
};
const u16 gUnknown_0860F0B0[] = INCBIN_U16("graphics/interface/860F0B0.gbapal");
-const u8 sTextColors[] = { TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY };
+const u8 sTextColors[] = { TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY };
// Table of move info icon offsets in graphics/interface_fr/menu.png
static const struct MenuInfoIcon sMenuInfoIcons[] =
@@ -509,12 +509,14 @@ void RemoveStartMenuWindow(void)
}
}
-u16 sub_8197A30(void)
+// Unused
+static u16 GetDialogFrameBaseTileNum(void)
{
return DLG_WINDOW_BASE_TILE_NUM;
}
-u16 sub_8197A38(void)
+// Unused
+static u16 GetStandardFrameBaseTileNum(void)
{
return STD_WINDOW_BASE_TILE_NUM;
}
@@ -843,13 +845,13 @@ void sub_8198204(const u8 *string, const u8 *string2, u8 a3, u8 a4, bool8 copyTo
{
color[0] = TEXT_COLOR_TRANSPARENT;
color[1] = TEXT_COLOR_WHITE;
- color[2] = TEXT_COLOR_DARK_GREY;
+ color[2] = TEXT_COLOR_DARK_GRAY;
}
else
{
color[0] = TEXT_DYNAMIC_COLOR_6;
color[1] = TEXT_COLOR_WHITE;
- color[2] = TEXT_COLOR_DARK_GREY;
+ color[2] = TEXT_COLOR_DARK_GRAY;
}
PutWindowTilemap(sWindowId);
FillWindowPixelBuffer(sWindowId, PIXEL_FILL(15));
@@ -1241,7 +1243,7 @@ void sub_8198D54(u8 windowId, u8 fontId, u8 a2, u8 a3, u8 a4, u8 a5, const struc
sub_8198C94(windowId, fontId, GetFontAttribute(fontId, 0), 0, a2, a3, a4, a5, strs);
}
-void sub_8198DBC(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 itemCount, u8 itemCount2, const struct MenuAction *strs, const u8 *a8)
+void PrintMenuActionGrid(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 horizontalCount, u8 verticalCount, const struct MenuAction *strs, const u8 *strIds)
{
u8 i;
u8 j;
@@ -1256,13 +1258,13 @@ void sub_8198DBC(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 itemCount, u
printer.letterSpacing = GetFontAttribute(fontId, FONTATTR_LETTER_SPACING);
printer.lineSpacing = GetFontAttribute(fontId, FONTATTR_LINE_SPACING);
- for (i = 0; i < itemCount2; i++)
+ for (i = 0; i < verticalCount; i++)
{
- for (j = 0; j < itemCount; j++)
+ for (j = 0; j < horizontalCount; j++)
{
- printer.currentChar = strs[a8[(itemCount * i) + j]].text;
- printer.x = (a4 * j) + left;
- printer.y = (GetFontAttribute(fontId, 1) * i) + top;
+ printer.currentChar = strs[strIds[(horizontalCount * i) + j]].text;
+ printer.x = (optionWidth * j) + left;
+ printer.y = (GetFontAttribute(fontId, FONTATTR_MAX_LETTER_HEIGHT) * i) + top;
printer.currentX = printer.x;
printer.currentY = printer.y;
AddTextPrinter(&printer, 0xFF, NULL);
@@ -1272,9 +1274,10 @@ void sub_8198DBC(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 itemCount, u
CopyWindowToVram(windowId, 2);
}
-void sub_8198EF8(u8 windowId, u8 fontId, u8 a2, u8 a3, u8 a4, u8 a5, const struct MenuAction *strs, const u8 *a8)
+// Unused
+static void PrintMenuActionGrid_TopLeft(u8 windowId, u8 fontId, u8 optionWidth, u8 unused, u8 horizontalCount, u8 verticalCount, const struct MenuAction *strs, const u8 *strIds)
{
- sub_8198DBC(windowId, fontId, GetFontAttribute(fontId, 0), 0, a2, a4, a5, strs, a8);
+ PrintMenuActionGrid(windowId, fontId, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH), 0, optionWidth, horizontalCount, verticalCount, strs, strIds);
}
u8 sub_8198F58(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 cursorHeight, u8 a6, u8 a7, u8 numChoices, u8 a9)
@@ -1701,7 +1704,7 @@ void sub_819983C(u8 windowId, u8 a4, u8 itemCount, u8 itemCount2, const struct M
CopyWindowToVram(windowId, 2);
}
-u8 sub_8199944(u8 windowId, u8 optionWidth, u8 columns, u8 rows, u8 initialCursorPos)
+u8 InitMenuActionGrid(u8 windowId, u8 optionWidth, u8 columns, u8 rows, u8 initialCursorPos)
{
s32 pos;
@@ -2036,8 +2039,8 @@ void sub_819A080(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 src
{
for (loopSrcX = srcX, loopDstX = dstX; loopSrcX < xEnd; loopSrcX++, loopDstX++)
{
- pixelsSrc = src->pixels + ((loopSrcX >> 1) & 3) + ((loopSrcX >> 3) << 5) + (((loopSrcY >> 3) * multiplierSrcY) << 5) + ((u32)(loopSrcY << 0x1d) >> 0x1B);
- pixelsDst = (void*) dst->pixels + ((loopDstX >> 1) & 3) + ((loopDstX >> 3) << 5) + ((( loopDstY >> 3) * multiplierDstY) << 5) + ((u32)(loopDstY << 0x1d) >> 0x1B);
+ pixelsSrc = src->pixels + ((loopSrcX >> 1) & 3) + ((loopSrcX >> 3) << 5) + (((loopSrcY >> 3) * multiplierSrcY) << 5) + ((u32)(loopSrcY << 29) >> 27);
+ pixelsDst = (void*) dst->pixels + ((loopDstX >> 1) & 3) + ((loopDstX >> 3) << 5) + ((( loopDstY >> 3) * multiplierDstY) << 5) + ((u32)(loopDstY << 29) >> 27);
if ((uintptr_t)pixelsDst & 0x1)
{
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index 3fe19efcc..dce00e51e 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -18,19 +18,17 @@
#include "constants/items.h"
#include "constants/maps.h"
-// this file's functions
+#define TAG_SWAP_LINE 109
+
static void Task_ContinueTaskAfterMessagePrints(u8 taskId);
static void Task_CallYesOrNoCallback(u8 taskId);
-// EWRAM vars
EWRAM_DATA static struct YesNoFuncTable gUnknown_0203A138 = {0};
EWRAM_DATA static u8 gUnknown_0203A140 = 0;
-// IWRAM bss vars
static TaskFunc gUnknown_0300117C;
-// const rom data
-static const struct OamData sOamData_859F4E8 =
+static const struct OamData sOamData_SwapLine =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -47,47 +45,47 @@ static const struct OamData sOamData_859F4E8 =
.affineParam = 0
};
-static const union AnimCmd sSpriteAnim_859F4F0[] =
+static const union AnimCmd sAnim_SwapLine_RightArrow[] =
{
ANIMCMD_FRAME(0, 0),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_859F4F8[] =
+static const union AnimCmd sAnim_SwapLine_Line[] =
{
ANIMCMD_FRAME(4, 0),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_859F500[] =
+static const union AnimCmd sAnim_SwapLine_LeftArrow[] =
{
- ANIMCMD_FRAME(0, 0, 1, 0),
+ ANIMCMD_FRAME(0, 0, .hFlip = TRUE),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_859F508[] =
+static const union AnimCmd *const sAnims_SwapLine[] =
{
- sSpriteAnim_859F4F0,
- sSpriteAnim_859F4F8,
- sSpriteAnim_859F500
+ sAnim_SwapLine_RightArrow,
+ sAnim_SwapLine_Line,
+ sAnim_SwapLine_LeftArrow
};
-static const struct CompressedSpriteSheet gUnknown_0859F514 =
+static const struct CompressedSpriteSheet sSpriteSheet_SwapLine =
{
- gBagSwapLineGfx, 0x100, 109
+ gBagSwapLineGfx, 0x100, TAG_SWAP_LINE
};
-static const struct CompressedSpritePalette gUnknown_0859F51C =
+static const struct CompressedSpritePalette sSpritePalette_SwapLine =
{
- gBagSwapLinePal, 109
+ gBagSwapLinePal, TAG_SWAP_LINE
};
-static const struct SpriteTemplate gUnknown_0859F524 =
+static const struct SpriteTemplate sSpriteTemplate_SwapLine =
{
- .tileTag = 109,
- .paletteTag = 109,
- .oam = &sOamData_859F4E8,
- .anims = sSpriteAnimTable_859F508,
+ .tileTag = TAG_SWAP_LINE,
+ .paletteTag = TAG_SWAP_LINE,
+ .oam = &sOamData_SwapLine,
+ .anims = sAnims_SwapLine,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
@@ -289,7 +287,7 @@ bool8 sub_8122148(u16 itemId)
return FALSE;
}
-bool8 itemid_80BF6D8_mail_related(u16 itemId)
+bool8 IsWritingMailAllowed(u16 itemId)
{
if (IsUpdateLinkStateCBActive() != TRUE && InUnionRoom() != TRUE)
return TRUE;
@@ -312,7 +310,7 @@ static bool8 sub_81221D0(void)
if (!MenuHelpers_LinkSomething())
return FALSE;
else
- return sub_8087598();
+ return Overworld_LinkRecvQueueLengthMoreThan2();
}
bool8 MenuHelpers_CallLinkSomething(void)
@@ -390,19 +388,19 @@ void sub_8122298(u16 *arg0, u16 *arg1, u8 arg2, u8 arg3, u8 arg4)
}
}
-void LoadListMenuArrowsGfx(void)
+void LoadListMenuSwapLineGfx(void)
{
- LoadCompressedSpriteSheet(&gUnknown_0859F514);
- LoadCompressedSpritePalette(&gUnknown_0859F51C);
+ LoadCompressedSpriteSheet(&sSpriteSheet_SwapLine);
+ LoadCompressedSpritePalette(&sSpritePalette_SwapLine);
}
-void sub_8122344(u8 *spriteIds, u8 count)
+void CreateSwapLineSprites(u8 *spriteIds, u8 count)
{
u8 i;
for (i = 0; i < count; i++)
{
- spriteIds[i] = CreateSprite(&gUnknown_0859F524, i * 16, 0, 0);
+ spriteIds[i] = CreateSprite(&sSpriteTemplate_SwapLine, i * 16, 0, 0);
if (i != 0)
StartSpriteAnim(&gSprites[spriteIds[i]], 1);
@@ -410,7 +408,7 @@ void sub_8122344(u8 *spriteIds, u8 count)
}
}
-void sub_81223B0(u8 *spriteIds, u8 count)
+void DestroySwapLineSprites(u8 *spriteIds, u8 count)
{
u8 i;
@@ -423,17 +421,15 @@ void sub_81223B0(u8 *spriteIds, u8 count)
}
}
-void sub_81223FC(u8 *spriteIds, u8 count, bool8 invisible)
+void SetSwapLineSpritesInvisibility(u8 *spriteIds, u8 count, bool8 invisible)
{
u8 i;
for (i = 0; i < count; i++)
- {
gSprites[spriteIds[i]].invisible = invisible;
- }
}
-void sub_8122448(u8 *spriteIds, u8 count, s16 x, u16 y)
+void UpdateSwapLineSpritesPos(u8 *spriteIds, u8 count, s16 x, u16 y)
{
u8 i;
bool8 unknownBit = count & 0x80;
@@ -442,10 +438,10 @@ void sub_8122448(u8 *spriteIds, u8 count, s16 x, u16 y)
for (i = 0; i < count; i++)
{
if (i == count - 1 && unknownBit)
- gSprites[spriteIds[i]].pos2.x = x - 8;
+ gSprites[spriteIds[i]].x2 = x - 8;
else
- gSprites[spriteIds[i]].pos2.x = x;
+ gSprites[spriteIds[i]].x2 = x;
- gSprites[spriteIds[i]].pos1.y = 1 + y;
+ gSprites[spriteIds[i]].y = 1 + y;
}
}
diff --git a/src/menu_specialized.c b/src/menu_specialized.c
index 8eda1621e..eb8cae72f 100644
--- a/src/menu_specialized.c
+++ b/src/menu_specialized.c
@@ -73,7 +73,7 @@ static const struct WindowTemplate sUnknown_086253E8[] =
static const u8 sPlayerNameTextColors[] =
{
- TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY
+ TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY
};
static const u8 sEmptyItemName[] = _("");
@@ -253,7 +253,7 @@ static u8 sub_81D1D34(u8 a0)
return sUnknown_0203CF48[a0];
}
-static void sub_81D1D44(u8 windowId, s32 itemId, u8 y)
+static void sub_81D1D44(u8 windowId, u32 itemId, u8 y)
{
u8 buffer[30];
u16 length;
@@ -840,7 +840,7 @@ void MoveRelearnerPrintText(u8 *str)
FillWindowPixelBuffer(3, PIXEL_FILL(1));
gTextFlags.canABSpeedUpPrint = TRUE;
speed = GetPlayerTextSpeedDelay();
- AddTextPrinterParameterized2(3, 1, str, speed, NULL, TEXT_COLOR_DARK_GREY, TEXT_COLOR_WHITE, 3);
+ AddTextPrinterParameterized2(3, 1, str, speed, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, 3);
}
bool16 MoveRelearnerRunTextPrinters(void)
@@ -1150,7 +1150,7 @@ static const union AnimCmd *const sAnims_ConditionSelectionIcon[] =
// Just loads the generic data, up to the caller to load the actual sheet/pal for the specific mon
void LoadConditionMonPicTemplate(struct SpriteSheet *sheet, struct SpriteTemplate *template, struct SpritePalette *pal)
{
- struct SpriteSheet dataSheet = {NULL, 0x800, TAG_CONDITION_MON};
+ struct SpriteSheet dataSheet = {NULL, MON_PIC_SIZE, TAG_CONDITION_MON};
struct SpriteTemplate dataTemplate =
{
@@ -1310,13 +1310,13 @@ static void SetConditionSparklePosition(struct Sprite *sprite)
if (mon != NULL)
{
- sprite->pos1.x = mon->pos1.x + mon->pos2.x + sConditionSparkleCoords[sprite->sSparkleId][0];
- sprite->pos1.y = mon->pos1.y + mon->pos2.y + sConditionSparkleCoords[sprite->sSparkleId][1];
+ sprite->x = mon->x + mon->x2 + sConditionSparkleCoords[sprite->sSparkleId][0];
+ sprite->y = mon->y + mon->y2 + sConditionSparkleCoords[sprite->sSparkleId][1];
}
else
{
- sprite->pos1.x = sConditionSparkleCoords[sprite->sSparkleId][0] + 40;
- sprite->pos1.y = sConditionSparkleCoords[sprite->sSparkleId][1] + 104;
+ sprite->x = sConditionSparkleCoords[sprite->sSparkleId][0] + 40;
+ sprite->y = sConditionSparkleCoords[sprite->sSparkleId][1] + 104;
}
}
diff --git a/src/mevent_801BAAC.c b/src/mevent_801BAAC.c
index fa0153e62..a3e6ee0b6 100644
--- a/src/mevent_801BAAC.c
+++ b/src/mevent_801BAAC.c
@@ -63,8 +63,8 @@ void sub_801C61C(void);
extern const struct OamData gOamData_AffineOff_ObjNormal_32x16;
const u8 sTextColorTable[][3] = {
- {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY},
- {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}
+ {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY},
+ {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY}
};
const u8 ALIGNED(4) gUnknown_082F0E18[3] = {7, 4, 7};
const struct WindowTemplate gUnknown_082F0E1C[] = {
@@ -584,10 +584,10 @@ s32 FadeToWonderNewsMenu(void)
ChangeBgY(1, 0, 0);
ChangeBgY(2, 0, 0);
ChangeBgY(3, 0, 0);
- SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
- SetGpuReg(REG_OFFSET_WIN0V, 0x1A98);
- SetGpuReg(REG_OFFSET_WININ, 0x1F);
- SetGpuReg(REG_OFFSET_WINOUT, 0x1B);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, DISPLAY_WIDTH));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(26, 152));
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ);
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
break;
case 2:
diff --git a/src/minigame_countdown.c b/src/minigame_countdown.c
index 2d4d98138..8e546afc9 100644
--- a/src/minigame_countdown.c
+++ b/src/minigame_countdown.c
@@ -242,10 +242,10 @@ static void Task_StaticCountdown_Init(u8 taskId)
StaticCountdown_CreateSprites(taskId, data);
StartSpriteAnim(&gSprites[tSpriteIds(1)], ANIM_START_MID);
- gSprites[tSpriteIds(1)].pos2.x = -32;
+ gSprites[tSpriteIds(1)].x2 = -32;
StartSpriteAnim(&gSprites[tSpriteIds(2)], ANIM_START_RIGHT);
- gSprites[tSpriteIds(2)].pos2.x = 32;
+ gSprites[tSpriteIds(2)].x2 = 32;
}
static void Task_StaticCountdown_Free(u8 taskId)
@@ -477,7 +477,7 @@ static bool32 RunMinigameCountdownDigitsAnim(u8 spriteId)
break;
case 4:
// Moving up from jump
- sprite->pos1.y -= 4;
+ sprite->y -= 4;
if (++sprite->sTimer >= 8)
{
if (sprite->sAnimNum < 2)
@@ -497,7 +497,7 @@ static bool32 RunMinigameCountdownDigitsAnim(u8 spriteId)
break;
case 5:
// Falling after jump
- sprite->pos1.y += 4;
+ sprite->y += 4;
if (++sprite->sTimer >= 8)
{
// Land from jump
@@ -528,8 +528,8 @@ static bool32 RunMinigameCountdownDigitsAnim(u8 spriteId)
// First argument is unused.
static void InitStartGraphic(u8 spriteId1, u8 spriteId2, u8 spriteId3)
{
- gSprites[spriteId2].pos2.y = -40;
- gSprites[spriteId3].pos2.y = -40;
+ gSprites[spriteId2].y2 = -40;
+ gSprites[spriteId3].y2 = -40;
gSprites[spriteId2].invisible = FALSE;
gSprites[spriteId3].invisible = FALSE;
gSprites[spriteId2].callback = SpriteCB_Start;
@@ -555,16 +555,16 @@ static void SpriteCB_Start(struct Sprite *sprite)
{
case 0:
sYSpeed = 64;
- sY = sprite->pos2.y << 4;
+ sY = sprite->y2 << 4;
sState++;
case 1:
sY += sYSpeed;
sYSpeed++;
- sprite->pos2.y = sY >> 4;
- if (sprite->pos2.y >= 0)
+ sprite->y2 = sY >> 4;
+ if (sprite->y2 >= 0)
{
PlaySE(SE_BALL_BOUNCE_2);
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sState++;
}
break;
@@ -577,7 +577,7 @@ static void SpriteCB_Start(struct Sprite *sprite)
sState++;
}
y = gSineTable[sTimer];
- sprite->pos2.y = -(y >> 4);
+ sprite->y2 = -(y >> 4);
break;
case 3:
sTimer += 16;
@@ -587,7 +587,7 @@ static void SpriteCB_Start(struct Sprite *sprite)
sTimer = 0;
sState++;
}
- sprite->pos2.y = -(gSineTable[sTimer] >> 5);
+ sprite->y2 = -(gSineTable[sTimer] >> 5);
break;
case 4:
if (++sTimer > 40)
diff --git a/src/mirage_tower.c b/src/mirage_tower.c
index d18ddcc0f..9b6d0d887 100644
--- a/src/mirage_tower.c
+++ b/src/mirage_tower.c
@@ -14,12 +14,14 @@
#include "sprite.h"
#include "task.h"
#include "window.h"
+#include "constants/event_objects.h"
#include "constants/maps.h"
#include "constants/rgb.h"
#include "constants/songs.h"
#include "constants/metatile_labels.h"
-struct MirageTowerPulseBlend {
+struct MirageTowerPulseBlend
+{
u8 taskId;
struct PulseBlend pulseBlend;
};
@@ -37,59 +39,51 @@ struct BgRegOffsets
u16 bgVOFS;
};
-struct Struct203CF10
+struct FallAnim_Tower
{
- u8 *buffer;
- u8 currIndex;
+ u8 *disintegrateRand;
+ u8 disintegrateIdx;
};
-struct DynamicSpriteFrameImage
-{
- u8 *data;
- u16 size;
-};
-
-struct Struct203CF0C
+struct FallAnim_Fossil
{
u8 *frameImageTiles;
- struct DynamicSpriteFrameImage *frameImage;
+ struct SpriteFrameImage *frameImage;
u8 spriteId;
- u16 *unkC;
- u16 unk10;
+ u16 *disintegrateRand;
+ u16 disintegrateIdx;
};
+#define TAG_CEILING_CRUMBLE 4000
+
#define MIRAGE_TOWER_GFX_LENGTH (sizeof(sBlankTile_Gfx) + sizeof(sMirageTower_Gfx))
-#define ROOT_FOSSIL_GFX_LENGTH sizeof(sRootFossil_Gfx)
-#define ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH 0x100
+#define FOSSIL_DISINTEGRATE_LENGTH 0x100
-// extern data
-extern const struct SpriteSheet gMirageTowerCeilingCrumbleSpriteSheets[];
-extern const s16 sCeilingCrumblePositions[][3];
+static const struct SpriteSheet sCeilingCrumbleSpriteSheets[];
+static const s16 sCeilingCrumblePositions[][3];
-// static functions
-static void PlayerDescendMirageTower(u8 taskId);
-static void DoScreenShake(u8 taskId);
+static void PlayerDescendMirageTower(u8);
+static void DoScreenShake(u8);
static void IncrementCeilingCrumbleFinishedCount(void);
-static void WaitCeilingCrumble(u8 taskId);
-static void FinishCeilingCrumbleTask(u8 taskId);
+static void WaitCeilingCrumble(u8);
+static void FinishCeilingCrumbleTask(u8);
static void CreateCeilingCrumbleSprites(void);
-static void MoveCeilingCrumbleSprite(struct Sprite* sprite);
-static void DoMirageTowerDisintegration(u8 taskId);
-static void InitMirageTowerShake(u8 taskId);
-static void DoFossilFallAndSink(u8 taskId);
-static void sub_81BF248(struct Sprite *);
-static void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e);
-
-// rodata
+static void SpriteCB_CeilingCrumble(struct Sprite*);
+static void DoMirageTowerDisintegration(u8);
+static void InitMirageTowerShake(u8);
+static void Task_FossilFallAndSink(u8);
+static void SpriteCB_FallingFossil(struct Sprite *);
+static void UpdateDisintegrationEffect(u8*, u16, u8, u8, u8);
+
static const u8 sBlankTile_Gfx[32] = {0};
static const u8 sMirageTower_Gfx[] = INCBIN_U8("graphics/misc/mirage_tower.4bpp");
static const u16 sMirageTowerTilemap[] = INCBIN_U16("graphics/misc/mirage_tower.bin");
-static const u16 sRootFossil_Pal[] = INCBIN_U16("graphics/misc/fossil.gbapal");
-static const u8 sRootFossil_Gfx[] = INCBIN_U8("graphics/misc/fossil.4bpp");
+static const u16 sFossil_Pal[] = INCBIN_U16("graphics/object_events/pics/misc/fossil.gbapal"); // Unused
+static const u8 sFossil_Gfx[] = INCBIN_U8("graphics/object_events/pics/misc/fossil.4bpp"); // Duplicate of gObjectEventPic_Fossil
static const u8 sMirageTowerCrumbles_Gfx[] = INCBIN_U8("graphics/misc/mirage_tower_crumbles.4bpp");
static const u16 sMirageTowerCrumbles_Palette[] = INCBIN_U16("graphics/misc/mirage_tower_crumbles.gbapal");
-const s16 sCeilingCrumblePositions[][3] =
+static const s16 sCeilingCrumblePositions[][3] =
{
{ 0, 10, 65},
{ 17, 3, 50},
@@ -101,10 +95,10 @@ const s16 sCeilingCrumblePositions[][3] =
{-24, -4, 65},
};
-const struct SpriteSheet gMirageTowerCeilingCrumbleSpriteSheets[] =
+static const struct SpriteSheet sCeilingCrumbleSpriteSheets[] =
{
- {sMirageTowerCrumbles_Gfx, 0x0080, 4000},
- {NULL}
+ {sMirageTowerCrumbles_Gfx, 0x80, TAG_CEILING_CRUMBLE},
+ {}
};
static const struct MetatileCoords sInvisibleMirageTowerMetatiles[] =
@@ -129,13 +123,13 @@ static const struct MetatileCoords sInvisibleMirageTowerMetatiles[] =
{20, 58, METATILE_General_SandPit_Center},
};
-static const union AnimCmd gSpriteAnim_8617DEC[] =
+static const union AnimCmd sAnim_FallingFossil[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-static const struct OamData gOamData_8617DF4 =
+static const struct OamData sOamData_FallingFossil =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -152,14 +146,20 @@ static const struct OamData gOamData_8617DF4 =
.affineParam = 0,
};
-static const union AnimCmd *const gSpriteAnimTable_8617DFC[] =
+static const union AnimCmd *const sAnims_FallingFossil[] =
{
- gSpriteAnim_8617DEC,
+ sAnim_FallingFossil,
};
-static const struct SpriteTemplate gUnknown_08617E00 =
+static const struct SpriteTemplate sSpriteTemplate_FallingFossil =
{
- 0xFFFF, 0xFFFF, &gOamData_8617DF4, gSpriteAnimTable_8617DFC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ .tileTag = 0xFFFF,
+ .paletteTag = 0xFFFF,
+ .oam = &sOamData_FallingFossil,
+ .anims = sAnims_FallingFossil,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
};
const struct PulseBlendSettings gMirageTowerPulseBlendSettings = {
@@ -174,18 +174,18 @@ const struct PulseBlendSettings gMirageTowerPulseBlendSettings = {
.unk7_7 = 1,
};
-static const union AnimCmd sCeilingCrumble2AnimCmd[] =
+static const union AnimCmd sAnim_CeilingCrumbleSmall[] =
{
ANIMCMD_FRAME(0, 12),
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sCeilingCrumble2AnimCmds[] =
+static const union AnimCmd *const sAnims_CeilingCrumbleSmall[] =
{
- sCeilingCrumble2AnimCmd,
+ sAnim_CeilingCrumbleSmall,
};
-static const struct OamData sCeilingCrumble2OamData =
+static const struct OamData sOamData_CeilingCrumbleSmall =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -202,28 +202,28 @@ static const struct OamData sCeilingCrumble2OamData =
.affineParam = 0,
};
-static const struct SpriteTemplate sCeilingCrumbleSpriteTemplate2 = {
- .tileTag = 4000,
+static const struct SpriteTemplate sSpriteTemplate_CeilingCrumbleSmall = {
+ .tileTag = TAG_CEILING_CRUMBLE,
.paletteTag = 0xFFFF,
- .oam = &sCeilingCrumble2OamData,
- .anims = sCeilingCrumble2AnimCmds,
+ .oam = &sOamData_CeilingCrumbleSmall,
+ .anims = sAnims_CeilingCrumbleSmall,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = MoveCeilingCrumbleSprite
+ .callback = SpriteCB_CeilingCrumble
};
-static const union AnimCmd sCeilingCrumble1AnimCmd[] =
+static const union AnimCmd sAnim_CeilingCrumbleLarge[] =
{
ANIMCMD_FRAME(0, 12),
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sCeilingCrumble1AnimCmds[] =
+static const union AnimCmd *const sAnims_CeilingCrumbleLarge[] =
{
- sCeilingCrumble1AnimCmd,
+ sAnim_CeilingCrumbleLarge,
};
-static const struct OamData sCeilingCrumble1OamData =
+static const struct OamData sOamData_CeilingCrumbleLarge =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -240,24 +240,26 @@ static const struct OamData sCeilingCrumble1OamData =
.affineParam = 0,
};
-static const struct SpriteTemplate sCeilingCrumbleSpriteTemplate1 = {
- .tileTag = 4000,
+static const struct SpriteTemplate sSpriteTemplate_CeilingCrumbleLarge = {
+ .tileTag = TAG_CEILING_CRUMBLE,
.paletteTag = 0xFFFF,
- .oam = &sCeilingCrumble1OamData,
- .anims = sCeilingCrumble1AnimCmds,
+ .oam = &sOamData_CeilingCrumbleLarge,
+ .anims = sAnims_CeilingCrumbleLarge,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = MoveCeilingCrumbleSprite
+ .callback = SpriteCB_CeilingCrumble
};
EWRAM_DATA static u8* sMirageTowerGfxBuffer = NULL;
EWRAM_DATA static u8* sMirageTowerTilemapBuffer = NULL;
-EWRAM_DATA static struct Struct203CF0C *sUnknown_0203CF0C = NULL;
-EWRAM_DATA static struct Struct203CF10 *sUnknown_0203CF10 = NULL;
+EWRAM_DATA static struct FallAnim_Fossil *sFallingFossil = NULL;
+EWRAM_DATA static struct FallAnim_Tower *sFallingTower = NULL;
EWRAM_DATA static struct BgRegOffsets *sBgShakeOffsets = NULL;
-EWRAM_DATA struct MirageTowerPulseBlend *sMirageTowerPulseBlend = NULL;
+EWRAM_DATA static struct MirageTowerPulseBlend *sMirageTowerPulseBlend = NULL;
-static u16 gUnknown_030012A8[8];
+// Holds data about the disintegration effect for Mirage Tower / the unchosen fossil.
+// Never read, presumably for debugging
+static u16 sDebug_DisintegrationData[8];
bool8 IsMirageTowerVisible(void)
{
@@ -319,6 +321,7 @@ void SetMirageTowerVisibility(void)
if (VarGet(VAR_MIRAGE_TOWER_STATE))
{
+ // Mirage Tower event has already been completed, hide it
FlagClear(FLAG_MIRAGE_TOWER_VISIBLE);
return;
}
@@ -343,32 +346,40 @@ void StartPlayerDescendMirageTower(void)
CreateTask(PlayerDescendMirageTower, 8);
}
+// As the tower disintegrates, a duplicate object event of the player
+// is created at the top of the tower and moved down to show the player falling
static void PlayerDescendMirageTower(u8 taskId)
{
u8 objectEventId;
- struct ObjectEvent *fakePlayerObjectEvent;
- struct ObjectEvent *playerObjectEvent;
-
- TryGetObjectEventIdByLocalIdAndMap(45, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId);
- fakePlayerObjectEvent = &gObjectEvents[objectEventId];
- gSprites[fakePlayerObjectEvent->spriteId].pos2.y += 4;
- playerObjectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
- if ((gSprites[fakePlayerObjectEvent->spriteId].pos1.y + gSprites[fakePlayerObjectEvent->spriteId].pos2.y) >=
- (gSprites[playerObjectEvent->spriteId].pos1.y + gSprites[playerObjectEvent->spriteId].pos2.y))
+ struct ObjectEvent *fallingPlayer;
+ struct ObjectEvent *player;
+
+ TryGetObjectEventIdByLocalIdAndMap(LOCALID_ROUTE111_PLAYER_FALLING, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId);
+ fallingPlayer = &gObjectEvents[objectEventId];
+ gSprites[fallingPlayer->spriteId].y2 += 4;
+ player = &gObjectEvents[gPlayerAvatar.objectEventId];
+ if ((gSprites[fallingPlayer->spriteId].y + gSprites[fallingPlayer->spriteId].y2) >=
+ (gSprites[player->spriteId].y + gSprites[player->spriteId].y2))
{
DestroyTask(taskId);
EnableBothScriptContexts();
}
}
+#define tXShakeOffset data[0]
+#define tTimer data[1]
+#define tNumShakes data[2]
+#define tShakeDelay data[3]
+#define tYShakeOffset data[4]
+
static void StartScreenShake(u8 yShakeOffset, u8 xShakeOffset, u8 numShakes, u8 shakeDelay)
{
u8 taskId = CreateTask(DoScreenShake, 9);
- gTasks[taskId].data[0] = xShakeOffset;
- gTasks[taskId].data[1] = 0;
- gTasks[taskId].data[2] = numShakes;
- gTasks[taskId].data[3] = shakeDelay;
- gTasks[taskId].data[4] = yShakeOffset;
+ gTasks[taskId].tXShakeOffset = xShakeOffset;
+ gTasks[taskId].tTimer = 0;
+ gTasks[taskId].tNumShakes = numShakes;
+ gTasks[taskId].tShakeDelay = shakeDelay;
+ gTasks[taskId].tYShakeOffset = yShakeOffset;
SetCameraPanningCallback(NULL);
PlaySE(SE_M_STRENGTH);
}
@@ -378,15 +389,15 @@ static void DoScreenShake(u8 taskId)
s16 *data;
data = gTasks[taskId].data;
- data[1]++;
- if (data[1] % data[3] == 0)
+ tTimer++;
+ if (tTimer % tShakeDelay == 0)
{
- data[1] = 0;
- data[2]--;
- data[0] = -data[0];
- data[4] = -data[4];
- SetCameraPanning(data[0], data[4]);
- if (data[2] == 0)
+ tTimer = 0;
+ tNumShakes--;
+ tXShakeOffset = -tXShakeOffset;
+ tYShakeOffset = -tYShakeOffset;
+ SetCameraPanning(tXShakeOffset, tYShakeOffset);
+ if (tNumShakes == 0)
{
IncrementCeilingCrumbleFinishedCount();
DestroyTask(taskId);
@@ -395,6 +406,12 @@ static void DoScreenShake(u8 taskId)
}
}
+#undef tXShakeOffset
+#undef tTimer
+#undef tNumShakes
+#undef tShakeDelay
+#undef tYShakeOffset
+
static void IncrementCeilingCrumbleFinishedCount(void)
{
u8 taskId = FindTaskIdByFunc(WaitCeilingCrumble);
@@ -404,7 +421,7 @@ static void IncrementCeilingCrumbleFinishedCount(void)
void DoMirageTowerCeilingCrumble(void)
{
- LoadSpriteSheets(gMirageTowerCeilingCrumbleSpriteSheets);
+ LoadSpriteSheets(sCeilingCrumbleSpriteSheets);
CreateCeilingCrumbleSprites();
CreateTask(WaitCeilingCrumble, 8);
StartScreenShake(2, 1, 16, 3);
@@ -421,7 +438,7 @@ static void WaitCeilingCrumble(u8 taskId)
static void FinishCeilingCrumbleTask(u8 taskId)
{
- FreeSpriteTilesByTag(4000);
+ FreeSpriteTilesByTag(TAG_CEILING_CRUMBLE);
DestroyTask(taskId);
EnableBothScriptContexts();
}
@@ -433,25 +450,25 @@ static void CreateCeilingCrumbleSprites(void)
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&sCeilingCrumbleSpriteTemplate1, sCeilingCrumblePositions[i][0] + 120, sCeilingCrumblePositions[i][1], 8);
+ spriteId = CreateSprite(&sSpriteTemplate_CeilingCrumbleLarge, sCeilingCrumblePositions[i][0] + 120, sCeilingCrumblePositions[i][1], 8);
gSprites[spriteId].oam.priority = 0;
gSprites[spriteId].oam.paletteNum = 0;
gSprites[spriteId].data[0] = i;
}
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&sCeilingCrumbleSpriteTemplate2, sCeilingCrumblePositions[i][0] + 115, sCeilingCrumblePositions[i][1] - 3, 8);
+ spriteId = CreateSprite(&sSpriteTemplate_CeilingCrumbleSmall, sCeilingCrumblePositions[i][0] + 115, sCeilingCrumblePositions[i][1] - 3, 8);
gSprites[spriteId].oam.priority = 0;
gSprites[spriteId].oam.paletteNum = 0;
gSprites[spriteId].data[0] = i;
}
}
-static void MoveCeilingCrumbleSprite(struct Sprite* sprite)
+static void SpriteCB_CeilingCrumble(struct Sprite* sprite)
{
sprite->data[1] += 2;
- sprite->pos2.y = sprite->data[1] / 2;
- if(((sprite->pos1.y) + (sprite->pos2.y)) > sCeilingCrumblePositions[sprite->data[0]][2])
+ sprite->y2 = sprite->data[1] / 2;
+ if(((sprite->y) + (sprite->y2)) > sCeilingCrumblePositions[sprite->data[0]][2])
{
DestroySprite(sprite);
IncrementCeilingCrumbleFinishedCount();
@@ -478,7 +495,7 @@ void StartMirageTowerShake(void)
void StartMirageTowerFossilFallAndSink(void)
{
- CreateTask(DoFossilFallAndSink, 9);
+ CreateTask(Task_FossilFallAndSink, 9);
}
static void SetBgShakeOffsets(void)
@@ -501,42 +518,44 @@ static void UpdateBgShake(u8 taskId)
}
}
+#define tState data[0]
+
static void InitMirageTowerShake(u8 taskId)
{
u8 zero;
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 0:
FreeAllWindowBuffers();
SetBgAttribute(0, BG_ATTR_PRIORITY, 2);
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
break;
case 1:
sMirageTowerGfxBuffer = (u8 *)AllocZeroed(MIRAGE_TOWER_GFX_LENGTH);
sMirageTowerTilemapBuffer = (u8 *)AllocZeroed(BG_SCREEN_SIZE);
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
break;
case 2:
CpuSet(sBlankTile_Gfx, sMirageTowerGfxBuffer, MIRAGE_TOWER_GFX_LENGTH / 2);
LoadBgTiles(0, sMirageTowerGfxBuffer, MIRAGE_TOWER_GFX_LENGTH, 0);
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
break;
case 3:
SetBgTilemapBuffer(0, sMirageTowerTilemapBuffer);
CopyToBgTilemapBufferRect_ChangePalette(0, &sMirageTowerTilemap, 12, 29, 6, 12, 17);
CopyBgTilemapBufferToVram(0);
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
break;
case 4:
ShowBg(0);
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
break;
case 5:
SetInvisibleMirageTowerMetatiles();
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
break;
case 6:
sBgShakeOffsets = Alloc(sizeof(*sBgShakeOffsets));
@@ -558,27 +577,29 @@ static void DoMirageTowerDisintegration(u8 taskId)
u16 i;
u8 index;
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 1:
- sUnknown_0203CF10 = AllocZeroed(OUTER_BUFFER_LENGTH * sizeof(struct Struct203CF10));
+ sFallingTower = AllocZeroed(OUTER_BUFFER_LENGTH * sizeof(struct FallAnim_Tower));
break;
case 3:
if (gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
{
if (gTasks[taskId].data[1] > 1)
{
+ // Initialize disintegration pattern
index = gTasks[taskId].data[3];
- sUnknown_0203CF10[index].buffer = Alloc(INNER_BUFFER_LENGTH);
+ sFallingTower[index].disintegrateRand = Alloc(INNER_BUFFER_LENGTH);
for (i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
- sUnknown_0203CF10[index].buffer[i] = i;
+ sFallingTower[index].disintegrateRand[i] = i;
+
+ // Randomize disintegration pattern
for (i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
{
u16 rand1, rand2, temp;
-
- rand1 = Random() % 0x30;
- rand2 = Random() % 0x30;
- SWAP(sUnknown_0203CF10[index].buffer[rand2], sUnknown_0203CF10[index].buffer[rand1], temp);
+ rand1 = Random() % INNER_BUFFER_LENGTH;
+ rand2 = Random() % INNER_BUFFER_LENGTH;
+ SWAP(sFallingTower[index].disintegrateRand[rand2], sFallingTower[index].disintegrateRand[rand1], temp);
}
if (gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
gTasks[taskId].data[3]++;
@@ -591,20 +612,20 @@ static void DoMirageTowerDisintegration(u8 taskId)
{
for (j = 0; j < 1; j++)
{
- sub_81BF2B8(sMirageTowerGfxBuffer,
- ((((OUTER_BUFFER_LENGTH - 1) - i) * INNER_BUFFER_LENGTH) + sUnknown_0203CF10[i].buffer[(sUnknown_0203CF10[i].currIndex)++]),
+ UpdateDisintegrationEffect(sMirageTowerGfxBuffer,
+ (OUTER_BUFFER_LENGTH - 1 - i) * INNER_BUFFER_LENGTH + sFallingTower[i].disintegrateRand[sFallingTower[i].disintegrateIdx++],
0, INNER_BUFFER_LENGTH, 1);
}
- if (sUnknown_0203CF10[i].currIndex > (INNER_BUFFER_LENGTH - 1))
+ if (sFallingTower[i].disintegrateIdx > (INNER_BUFFER_LENGTH - 1))
{
- FREE_AND_SET_NULL(sUnknown_0203CF10[i].buffer);
+ FREE_AND_SET_NULL(sFallingTower[i].disintegrateRand);
gTasks[taskId].data[2]++;
if ((i % 2) == 1)
sBgShakeOffsets->bgVOFS--;
}
}
LoadBgTiles(0, sMirageTowerGfxBuffer, MIRAGE_TOWER_GFX_LENGTH, 0);
- if (sUnknown_0203CF10[OUTER_BUFFER_LENGTH - 1].currIndex > (INNER_BUFFER_LENGTH - 1))
+ if (sFallingTower[OUTER_BUFFER_LENGTH - 1].disintegrateIdx > INNER_BUFFER_LENGTH - 1)
break;
return;
case 4:
@@ -617,7 +638,7 @@ static void DoMirageTowerDisintegration(u8 taskId)
break;
case 5:
FREE_AND_SET_NULL(sBgShakeOffsets);
- FREE_AND_SET_NULL(sUnknown_0203CF10);
+ FREE_AND_SET_NULL(sFallingTower);
FREE_AND_SET_NULL(sMirageTowerGfxBuffer);
FREE_AND_SET_NULL(sMirageTowerTilemapBuffer);
break;
@@ -635,127 +656,128 @@ static void DoMirageTowerDisintegration(u8 taskId)
EnableBothScriptContexts();
break;
}
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
}
-static void DoFossilFallAndSink(u8 taskId)
+static void Task_FossilFallAndSink(u8 taskId)
{
u16 i;
u8 *buffer;
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 1:
- sUnknown_0203CF0C = AllocZeroed(sizeof(*sUnknown_0203CF0C));
- sUnknown_0203CF0C->frameImageTiles = AllocZeroed(ROOT_FOSSIL_GFX_LENGTH);
- sUnknown_0203CF0C->frameImage = AllocZeroed(sizeof(*sUnknown_0203CF0C->frameImage));
- sUnknown_0203CF0C->unkC = AllocZeroed(ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16));
- sUnknown_0203CF0C->unk10 = 0;
+ sFallingFossil = AllocZeroed(sizeof(*sFallingFossil));
+ sFallingFossil->frameImageTiles = AllocZeroed(sizeof(sFossil_Gfx));
+ sFallingFossil->frameImage = AllocZeroed(sizeof(*sFallingFossil->frameImage));
+ sFallingFossil->disintegrateRand = AllocZeroed(FOSSIL_DISINTEGRATE_LENGTH * sizeof(u16));
+ sFallingFossil->disintegrateIdx = 0;
break;
case 2:
- buffer = sUnknown_0203CF0C->frameImageTiles;
- for (i = 0; i < ROOT_FOSSIL_GFX_LENGTH; i++, buffer++)
- *buffer = sRootFossil_Gfx[i];
+ buffer = sFallingFossil->frameImageTiles;
+ for (i = 0; i < sizeof(sFossil_Gfx); i++, buffer++)
+ *buffer = sFossil_Gfx[i];
break;
case 3:
- sUnknown_0203CF0C->frameImage->data = sUnknown_0203CF0C->frameImageTiles;
- sUnknown_0203CF0C->frameImage->size = ROOT_FOSSIL_GFX_LENGTH;
+ sFallingFossil->frameImage->data = sFallingFossil->frameImageTiles;
+ sFallingFossil->frameImage->size = sizeof(sFossil_Gfx);
break;
case 4:
{
- struct SpriteTemplate fossilTemplate;
-
- fossilTemplate = gUnknown_08617E00;
- fossilTemplate.images = (struct SpriteFrameImage *)(sUnknown_0203CF0C->frameImage);
- sUnknown_0203CF0C->spriteId = CreateSprite(&fossilTemplate, 128, -16, 1);
- gSprites[sUnknown_0203CF0C->spriteId].centerToCornerVecX = 0;
- gSprites[sUnknown_0203CF0C->spriteId].data[0] = gSprites[sUnknown_0203CF0C->spriteId].pos1.x;
- gSprites[sUnknown_0203CF0C->spriteId].data[1] = 1;
+ struct SpriteTemplate fossilTemplate = sSpriteTemplate_FallingFossil;
+ fossilTemplate.images = sFallingFossil->frameImage;
+ sFallingFossil->spriteId = CreateSprite(&fossilTemplate, 128, -16, 1);
+ gSprites[sFallingFossil->spriteId].centerToCornerVecX = 0;
+ gSprites[sFallingFossil->spriteId].data[0] = gSprites[sFallingFossil->spriteId].x;
+ gSprites[sFallingFossil->spriteId].data[1] = 1;
}
case 5:
- for (i = 0; i < ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH; i++)
- sUnknown_0203CF0C->unkC[i] = i;
+ // Initialize disintegration pattern
+ for (i = 0; i < FOSSIL_DISINTEGRATE_LENGTH; i++)
+ sFallingFossil->disintegrateRand[i] = i;
break;
case 6:
- for (i = 0; i < (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16)); i++)
+ // Randomize disintegration pattern
+ for (i = 0; i < FOSSIL_DISINTEGRATE_LENGTH * sizeof(u16); i++)
{
u16 rand1, rand2, temp;
-
- rand1 = Random() % 0x100;
- rand2 = Random() % 0x100;
- SWAP(sUnknown_0203CF0C->unkC[rand2], sUnknown_0203CF0C->unkC[rand1], temp);
+ rand1 = Random() % FOSSIL_DISINTEGRATE_LENGTH;
+ rand2 = Random() % FOSSIL_DISINTEGRATE_LENGTH;
+ SWAP(sFallingFossil->disintegrateRand[rand2], sFallingFossil->disintegrateRand[rand1], temp);
}
- gSprites[sUnknown_0203CF0C->spriteId].callback = sub_81BF248;
+ gSprites[sFallingFossil->spriteId].callback = SpriteCB_FallingFossil;
break;
case 7:
- if (gSprites[sUnknown_0203CF0C->spriteId].callback != SpriteCallbackDummy)
+ // Wait for fossil to finish falling / disintegrating
+ if (gSprites[sFallingFossil->spriteId].callback != SpriteCallbackDummy)
return;
- DestroySprite(&gSprites[sUnknown_0203CF0C->spriteId]);
- FREE_AND_SET_NULL(sUnknown_0203CF0C->unkC);;
- FREE_AND_SET_NULL(sUnknown_0203CF0C->frameImage);
- FREE_AND_SET_NULL(sUnknown_0203CF0C->frameImageTiles);
- FREE_AND_SET_NULL(sUnknown_0203CF0C);
+ DestroySprite(&gSprites[sFallingFossil->spriteId]);
+ FREE_AND_SET_NULL(sFallingFossil->disintegrateRand);;
+ FREE_AND_SET_NULL(sFallingFossil->frameImage);
+ FREE_AND_SET_NULL(sFallingFossil->frameImageTiles);
+ FREE_AND_SET_NULL(sFallingFossil);
break;
case 8:
EnableBothScriptContexts();
break;
}
-
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
}
-static void sub_81BF248(struct Sprite *sprite)
+static void SpriteCB_FallingFossil(struct Sprite *sprite)
{
- if (sUnknown_0203CF0C->unk10 >= (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH))
+ if (sFallingFossil->disintegrateIdx >= FOSSIL_DISINTEGRATE_LENGTH)
{
+ // End animation
sprite->callback = SpriteCallbackDummy;
}
- else if (sprite->pos1.y >= 96)
+ else if (sprite->y >= 96)
{
+ // Fossil has reached the ground, update disintegration animation
u8 i;
for (i = 0; i < 2; i++)
- sub_81BF2B8(sUnknown_0203CF0C->frameImageTiles, sUnknown_0203CF0C->unkC[sUnknown_0203CF0C->unk10++], 0, 16, 0);
+ UpdateDisintegrationEffect(sFallingFossil->frameImageTiles, sFallingFossil->disintegrateRand[sFallingFossil->disintegrateIdx++], 0, 16, 0);
StartSpriteAnim(sprite, 0);
}
else
{
- sprite->pos1.y++;
+ // Fossil is still falling
+ sprite->y++;
}
}
-static void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e)
+static void UpdateDisintegrationEffect(u8* tiles, u16 randId, u8 c, u8 size, u8 offset)
{
- u8 r5, r4, r0, r2;
- u16 var, var2;
- u8 r2_1, r4_1;
- u8 b2, c2;
+ u8 heightTiles, height, widthTiles, width;
+ u16 var, baseOffset;
+ u8 col, row;
+ u8 flag, tileMask;
- r4 = b / d;
- gUnknown_030012A8[0] = r4;
+ height = randId / size;
+ sDebug_DisintegrationData[0] = height;
- r2 = b % d;
- gUnknown_030012A8[1] = r2;
+ width = randId % size;
+ sDebug_DisintegrationData[1] = width;
- r4_1 = r4 & 7;
- r2_1 = r2 & 7;
- gUnknown_030012A8[2] = r4 & 7; //should be using r4_1, but that doesn't match
- gUnknown_030012A8[3] = r2 & 7; //"
-
- r0 = r2 / 8;
- r5 = r4 / 8;
+ row = height & 7;
+ col = width & 7;
+ sDebug_DisintegrationData[2] = height & 7;
+ sDebug_DisintegrationData[3] = width & 7;
- gUnknown_030012A8[4] = r2 / 8; //should be using r0, but that doesn't match
- gUnknown_030012A8[5] = r4 / 8; //should be using r5, but that doesn't match
+ widthTiles = width / 8;
+ heightTiles = height / 8;
+ sDebug_DisintegrationData[4] = width / 8;
+ sDebug_DisintegrationData[5] = height / 8;
- var = (d / 8) * (r5 * 64) + (r0 * 64);
- gUnknown_030012A8[6] = var;
+ var = (size / 8) * (heightTiles * 64) + (widthTiles * 64);
+ sDebug_DisintegrationData[6] = var;
- var2 = var + ((r4_1 * 8) + r2_1);
- var2 /= 2;
- gUnknown_030012A8[7] = var + ((r4_1 * 8) + r2_1); //should be using var2 with var2 being divided afterwards, but that doesn't match
+ baseOffset = var + ((row * 8) + col);
+ baseOffset /= 2;
+ sDebug_DisintegrationData[7] = var + ((row * 8) + col);
- b2 = ((b % 2) ^ 1);
- c2 = (c << (b2 << 2)) | 15 << (((b2 ^ 1) << 2));
- a[var2 + (e * 32)] &= c2;
+ flag = ((randId % 2) ^ 1);
+ tileMask = (c << (flag << 2)) | 15 << (((flag ^ 1) << 2));
+ tiles[baseOffset + (offset * 32)] &= tileMask;
}
diff --git a/src/mon_markings.c b/src/mon_markings.c
index e71d6d795..dbd5a2fa8 100644
--- a/src/mon_markings.c
+++ b/src/mon_markings.c
@@ -493,7 +493,7 @@ static void CreateMonMarkingsMenuSprites(s16 x, s16 y, u16 baseTileTag, u16 base
return;
}
}
- sMenu->windowSprites[1]->pos1.y = y + 96;
+ sMenu->windowSprites[1]->y = y + 96;
// Create marking sprites
@@ -526,8 +526,8 @@ static void CreateMonMarkingsMenuSprites(s16 x, s16 y, u16 baseTileTag, u16 base
sMenu->textSprite->oam.shape = SPRITE_SHAPE(32x32);
sMenu->textSprite->oam.size = SPRITE_SIZE(32x32);
StartSpriteAnim(sMenu->textSprite, ANIM_TEXT);
- sMenu->textSprite->pos1.x = x + 32;
- sMenu->textSprite->pos1.y = y + 80;
+ sMenu->textSprite->x = x + 32;
+ sMenu->textSprite->y = y + 80;
CalcCenterToCornerVec(sMenu->textSprite, SPRITE_SHAPE(32x16), SPRITE_SIZE(32x16), ST_OAM_AFFINE_OFF);
}
else
@@ -567,7 +567,7 @@ static void SpriteCB_Marking(struct Sprite *sprite)
static void SpriteCB_Cursor(struct Sprite *sprite)
{
- sprite->pos1.y = (16 * sMenu->cursorPos) + sprite->sCursorYOffset;
+ sprite->y = (16 * sMenu->cursorPos) + sprite->sCursorYOffset;
}
#undef sCursorYOffset
diff --git a/src/mystery_gift.c b/src/mystery_gift.c
index a23f159b2..afbe50e4d 100644
--- a/src/mystery_gift.c
+++ b/src/mystery_gift.c
@@ -394,10 +394,10 @@ bool32 HandleMysteryGiftOrEReaderSetup(s32 mg_or_ereader)
ChangeBgX(3, 0, 0);
ChangeBgY(3, 0, 0);
- SetBgTilemapBuffer(3, Alloc(0x800));
- SetBgTilemapBuffer(2, Alloc(0x800));
- SetBgTilemapBuffer(1, Alloc(0x800));
- SetBgTilemapBuffer(0, Alloc(0x800));
+ SetBgTilemapBuffer(3, Alloc(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(2, Alloc(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(1, Alloc(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(0, Alloc(BG_SCREEN_SIZE));
bgid_upload_textbox_1(3);
InitWindows(sMainWindows);
@@ -558,14 +558,12 @@ bool32 MG_PrintTextOnWindow1AndWaitButton(u8 *textState, const u8 *str)
{
case 0:
AddTextPrinterToWindow1(str);
- goto inc;
+ (*textState)++;
+ break;
case 1:
DrawDownArrow(1, 0xD0, 0x14, 1, FALSE, &sDownArrowCounterAndYCoordIdx[0], &sDownArrowCounterAndYCoordIdx[1]);
if (({JOY_NEW(A_BUTTON | B_BUTTON);}))
- {
- inc:
(*textState)++;
- }
break;
case 2:
DrawDownArrow(1, 0xD0, 0x14, 1, TRUE, &sDownArrowCounterAndYCoordIdx[0], &sDownArrowCounterAndYCoordIdx[1]);
@@ -574,7 +572,7 @@ bool32 MG_PrintTextOnWindow1AndWaitButton(u8 *textState, const u8 *str)
return TRUE;
case 0xFF:
*textState = 2;
- break;
+ return FALSE;
}
return FALSE;
}
@@ -809,8 +807,6 @@ static bool32 ValidateCardOrNews(bool32 cardOrNews)
static bool32 HandleLoadWonderCardOrNews(u8 * state, bool32 cardOrNews)
{
- s32 v0;
-
switch (*state)
{
case 0:
@@ -827,20 +823,18 @@ static bool32 HandleLoadWonderCardOrNews(u8 * state, bool32 cardOrNews)
case 1:
if (cardOrNews == 0)
{
- v0 = FadeToWonderCardMenu();
- check:
- if (v0 != 0)
+ if (!FadeToWonderCardMenu())
{
- goto done;
+ return FALSE;
}
- break;
}
else
{
- v0 = FadeToWonderNewsMenu();
- goto check;
+ if (!FadeToWonderNewsMenu())
+ {
+ return FALSE;
+ }
}
- done:
*state = 0;
return TRUE;
}
diff --git a/src/naming_screen.c b/src/naming_screen.c
index a1dfac88e..fc7fb82fe 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -475,7 +475,7 @@ static void NamingScreen_Init(void)
sNamingScreen->bgToHide = 1;
sNamingScreen->template = sNamingScreenTemplates[sNamingScreen->templateNum];
sNamingScreen->currentPage = sNamingScreen->template->initialPage;
- sNamingScreen->inputCharBaseXPos = (240 - sNamingScreen->template->maxChars * 8) / 2 + 6;
+ sNamingScreen->inputCharBaseXPos = (DISPLAY_WIDTH - sNamingScreen->template->maxChars * 8) / 2 + 6;
if (sNamingScreen->templateNum == NAMING_SCREEN_WALDA)
sNamingScreen->inputCharBaseXPos += 11;
sNamingScreen->keyRepeatStartDelayCopy = gKeyRepeatStartDelay;
@@ -1071,7 +1071,7 @@ static void SpriteCB_InputArrow(struct Sprite *sprite)
sprite->sDelay = 8;
sprite->sXPosId = (sprite->sXPosId + 1) & (ARRAY_COUNT(x) - 1);
}
- sprite->pos2.x = x[sprite->sXPosId];
+ sprite->x2 = x[sprite->sXPosId];
}
#undef sDelay
@@ -1089,13 +1089,13 @@ static void SpriteCB_Underscore(struct Sprite *sprite)
pos = GetTextEntryPosition();
if (pos != (u8)sprite->sId)
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sprite->sYPosId = 0;
sprite->sDelay = 0;
}
else
{
- sprite->pos2.y = y[sprite->sYPosId];
+ sprite->y2 = y[sprite->sYPosId];
sprite->sDelay++;
if (sprite->sDelay > 8)
{
@@ -1134,11 +1134,11 @@ static void SetCursorPos(s16 x, s16 y)
struct Sprite *cursorSprite = &gSprites[sNamingScreen->cursorSpriteId];
if (x < sPageColumnCounts[CurrentPageToKeyboardId()])
- cursorSprite->pos1.x = sPageColumnXPos[x + CurrentPageToKeyboardId() * KBCOL_COUNT] + 38;
+ cursorSprite->x = sPageColumnXPos[x + CurrentPageToKeyboardId() * KBCOL_COUNT] + 38;
else
- cursorSprite->pos1.x = 0;
+ cursorSprite->x = 0;
- cursorSprite->pos1.y = y * 16 + 88;
+ cursorSprite->y = y * 16 + 88;
cursorSprite->sPrevX = cursorSprite->sX;
cursorSprite->sPrevY = cursorSprite->sY;
cursorSprite->sX = x;
@@ -1284,11 +1284,11 @@ static bool8 PageSwapSprite_SlideOff(struct Sprite *sprite)
struct Sprite *text = &gSprites[sprite->sTextSpriteId];
struct Sprite *button = &gSprites[sprite->sButtonSpriteId];
- text->pos2.y++;
- if (text->pos2.y > 7)
+ text->y2++;
+ if (text->y2 > 7)
{
sprite->sState++;
- text->pos2.y = -4;
+ text->y2 = -4;
text->invisible = TRUE;
SetPageSwapButtonGfx(PageToNextGfxId(((u8)sprite->sPage + 1) % KBPAGE_COUNT), text, button);
}
@@ -1300,10 +1300,10 @@ static bool8 PageSwapSprite_SlideOn(struct Sprite *sprite)
struct Sprite *text = &gSprites[sprite->sTextSpriteId];
text->invisible = FALSE;
- text->pos2.y++;
- if (text->pos2.y >= 0)
+ text->y2++;
+ if (text->y2 >= 0)
{
- text->pos2.y = 0;
+ text->y2 = 0;
sprite->sState = 1; // go to PageSwapSprite_Idle
}
return FALSE;
@@ -1929,9 +1929,9 @@ struct TextColor // Needed because of alignment
static const struct TextColor sTextColorStruct =
{
{
- {TEXT_DYNAMIC_COLOR_4, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY},
- {TEXT_DYNAMIC_COLOR_5, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY},
- {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}
+ {TEXT_DYNAMIC_COLOR_4, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY},
+ {TEXT_DYNAMIC_COLOR_5, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY},
+ {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY}
}
};
@@ -1999,7 +1999,7 @@ static void DrawKeyboardPageOnDeck(void)
static void PrintControls(void)
{
- const u8 color[3] = { TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY };
+ const u8 color[3] = { TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY };
FillWindowPixelBuffer(sNamingScreen->windows[WIN_BANNER], PIXEL_FILL(15));
AddTextPrinterParameterized3(sNamingScreen->windows[WIN_BANNER], 0, 2, 1, color, 0, gText_MoveOkBack);
diff --git a/src/new_game.c b/src/new_game.c
index c43c6ae9f..2a950efbc 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -48,23 +48,19 @@
extern const u8 EventScript_ResetAllMapFlags[];
-// this file's functions
static void ClearFrontierRecord(void);
static void WarpToTruck(void);
static void ResetMiniGamesRecords(void);
-// EWRAM vars
EWRAM_DATA bool8 gDifferentSaveFile = FALSE;
EWRAM_DATA bool8 gEnableContestDebugging = FALSE;
-// const rom data
static const struct ContestWinner sContestWinnerPicDummy =
{
.monName = _(""),
.trainerName = _("")
};
-// code
void SetTrainerId(u32 trainerId, u8 *dst)
{
dst[0] = trainerId;
@@ -87,7 +83,7 @@ void CopyTrainerId(u8 *dst, u8 *src)
static void InitPlayerTrainerId(void)
{
- u32 trainerId = (Random() << 0x10) | GetGeneratedTrainerIdLower();
+ u32 trainerId = (Random() << 16) | GetGeneratedTrainerIdLower();
SetTrainerId(trainerId, gSaveBlock2Ptr->playerTrainerId);
}
@@ -114,7 +110,9 @@ void ClearAllContestWinnerPics(void)
s32 i;
ClearContestWinnerPicsInContestHall();
- for (i = 8; i < 13; i++)
+
+ // Clear Museum paintings
+ for (i = MUSEUM_CONTEST_WINNERS_START; i < NUM_CONTEST_WINNERS; i++)
gSaveBlock1Ptr->contestWinners[i] = sContestWinnerPicDummy;
}
diff --git a/src/option_menu.c b/src/option_menu.c
index 936aff923..0174b69db 100644
--- a/src/option_menu.c
+++ b/src/option_menu.c
@@ -185,9 +185,9 @@ void CB2_InitOptionMenu(void)
DeactivateAllTextPrinters();
SetGpuReg(REG_OFFSET_WIN0H, 0);
SetGpuReg(REG_OFFSET_WIN0V, 0);
- SetGpuReg(REG_OFFSET_WININ, 1);
- SetGpuReg(REG_OFFSET_WINOUT, 35);
- SetGpuReg(REG_OFFSET_BLDCNT, 193);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_CLR);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_DARKEN);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
SetGpuReg(REG_OFFSET_BLDY, 4);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
@@ -381,7 +381,7 @@ static void Task_OptionMenuFadeOut(u8 taskId)
static void HighlightOptionMenuItem(u8 index)
{
- SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(16, 224));
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(16, DISPLAY_WIDTH - 16));
SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(index * 16 + 40, index * 16 + 56));
}
diff --git a/src/overworld.c b/src/overworld.c
index 5aa5bb73d..a2f38c864 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -68,10 +68,20 @@
#include "constants/trainer_hill.h"
#include "constants/weather.h"
-#define PLAYER_TRADING_STATE_IDLE 0x80
-#define PLAYER_TRADING_STATE_BUSY 0x81
-#define PLAYER_TRADING_STATE_UNK_2 0x82
-#define PLAYER_TRADING_STATE_EXITING_ROOM 0x83
+struct CableClubPlayer
+{
+ u8 playerId;
+ u8 isLocalPlayer;
+ u8 movementMode;
+ u8 facing;
+ struct MapPosition pos;
+ u16 metatileBehavior;
+};
+
+#define PLAYER_LINK_STATE_IDLE 0x80
+#define PLAYER_LINK_STATE_BUSY 0x81
+#define PLAYER_LINK_STATE_READY 0x82
+#define PLAYER_LINK_STATE_EXITING_ROOM 0x83
#define FACING_NONE 0
#define FACING_UP 1
@@ -92,87 +102,87 @@ static void CB2_ReturnToFieldLink(void);
static void CB2_LoadMapOnReturnToFieldCableClub(void);
static void CB2_LoadMap2(void);
static void VBlankCB_Field(void);
-static void SpriteCB_LinkPlayer(struct Sprite *sprite);
+static void SpriteCB_LinkPlayer(struct Sprite *);
static void ChooseAmbientCrySpecies(void);
-static void DoMapLoadLoop(u8 *state);
-static bool32 LoadMapInStepsLocal(u8 *state, bool32);
-static bool32 LoadMapInStepsLink(u8 *state);
-static bool32 ReturnToFieldLocal(u8 *state);
-static bool32 ReturnToFieldLink(u8 *state);
+static void DoMapLoadLoop(u8 *);
+static bool32 LoadMapInStepsLocal(u8 *, bool32);
+static bool32 LoadMapInStepsLink(u8 *);
+static bool32 ReturnToFieldLocal(u8 *);
+static bool32 ReturnToFieldLink(u8 *);
static void InitObjectEventsLink(void);
static void InitObjectEventsLocal(void);
static void InitOverworldGraphicsRegisters(void);
static u8 GetSpriteForLinkedPlayer(u8);
-static u16 KeyInterCB_SendNothing(u32 a1);
+static u16 KeyInterCB_SendNothing(u32);
static void ResetMirageTowerAndSaveBlockPtrs(void);
-static void sub_80867D8(void);
+static void ResetScreenForMapLoad(void);
static void OffsetCameraFocusByLinkPlayerId(void);
static void SpawnLinkPlayers(void);
static void SetCameraToTrackGuestPlayer(void);
-static void ResumeMap(bool32 arg0);
+static void ResumeMap(bool32);
static void SetCameraToTrackPlayer(void);
-static void sub_8086A68(void);
+static void InitObjectEventsReturnToField(void);
static void InitViewGraphics(void);
static void SetCameraToTrackGuestPlayer_2(void);
static void CreateLinkPlayerSprites(void);
static void ClearAllPlayerKeys(void);
-static void ResetAllTradingStates(void);
+static void ResetAllPlayerLinkStates(void);
static void UpdateHeldKeyCode(u16);
static void UpdateAllLinkPlayers(u16*, s32);
-static u8 FlipVerticalAndClearForced(u8 a1, u8 a2);
-static u8 LinkPlayerDetectCollision(u8 selfObjEventId, u8 a2, s16 x, s16 y);
-static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion);
-static void GetLinkPlayerCoords(u8 linkPlayerId, u16 *x, u16 *y);
-static u8 GetLinkPlayerFacingDirection(u8 linkPlayerId);
-static u8 GetLinkPlayerElevation(u8 linkPlayerId);
-static s32 sub_80878E4(u8 linkPlayerId);
-static u8 GetLinkPlayerIdAt(s16 x, s16 y);
-static void SetPlayerFacingDirection(u8 linkPlayerId, u8 a2);
-static void ZeroObjectEvent(struct ObjectEvent *objEvent);
-static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 a4);
-static void InitLinkPlayerObjectEventPos(struct ObjectEvent *objEvent, s16 x, s16 y);
-static void sub_80877DC(u8 linkPlayerId, u8 a2);
-static void sub_808780C(u8 linkPlayerId);
-static u8 GetSpriteForLinkedPlayer(u8 linkPlayerId);
+static u8 FlipVerticalAndClearForced(u8, u8);
+static u8 LinkPlayerDetectCollision(u8, u8, s16, s16);
+static void CreateLinkPlayerSprite(u8, u8);
+static void GetLinkPlayerCoords(u8, u16 *, u16 *);
+static u8 GetLinkPlayerFacingDirection(u8);
+static u8 GetLinkPlayerElevation(u8);
+static s32 GetLinkPlayerObjectStepTimer(u8);
+static u8 GetLinkPlayerIdAt(s16, s16);
+static void SetPlayerFacingDirection(u8, u8);
+static void ZeroObjectEvent(struct ObjectEvent *);
+static void SpawnLinkPlayerObjectEvent(u8, s16, s16, u8);
+static void InitLinkPlayerObjectEventPos(struct ObjectEvent *, s16, s16);
+static void SetLinkPlayerObjectRange(u8, u8);
+static void DestroyLinkPlayerObject(u8);
+static u8 GetSpriteForLinkedPlayer(u8);
static void RunTerminateLinkScript(void);
static u32 GetLinkSendQueueLength(void);
-static void ZeroLinkPlayerObjectEvent(struct LinkPlayerObjectEvent *linkPlayerObjEvent);
-static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *a1);
-static u16 GetDirectionForEventScript(const u8 *script);
-static void sub_8087510(void);
+static void ZeroLinkPlayerObjectEvent(struct LinkPlayerObjectEvent *);
+static const u8 *TryInteractWithPlayer(struct CableClubPlayer *);
+static u16 GetDirectionForEventScript(const u8 *);
+static void InitLinkPlayerQueueScript(void);
static void InitLinkRoomStartMenuScript(void);
-static void sub_8087530(const u8 *script);
-static void CreateConfirmLeaveTradeRoomPrompt(void);
-static void InitMenuBasedScript(const u8 *script);
-static void LoadTradeRoomPlayer(s32 linkPlayerId, s32 a2, struct TradeRoomPlayer *a3);
-static bool32 sub_8087340(struct TradeRoomPlayer *a1);
-static bool32 sub_8087340_2(struct TradeRoomPlayer *a1);
-static u8 *TryGetTileEventScript(struct TradeRoomPlayer *a1);
-static bool32 PlayerIsAtSouthExit(struct TradeRoomPlayer *a1);
-static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *a1);
+static void RunInteractLocalPlayerScript(const u8 *);
+static void RunConfirmLeaveCableClubScript(void);
+static void InitMenuBasedScript(const u8 *);
+static void LoadCableClubPlayer(s32, s32, struct CableClubPlayer *);
+static bool32 IsCableClubPlayerUnfrozen(struct CableClubPlayer *);
+static bool32 CanCableClubPlayerPressStart(struct CableClubPlayer *);
+static u8 *TryGetTileEventScript(struct CableClubPlayer *);
+static bool32 PlayerIsAtSouthExit(struct CableClubPlayer *);
+static const u8 *TryInteractWithPlayer(struct CableClubPlayer *);
static u16 KeyInterCB_DeferToRecvQueue(u32);
static u16 KeyInterCB_DeferToSendQueue(u32);
-static void ResetPlayerHeldKeys(u16 *a1);
-static u16 KeyInterCB_SelfIdle(u32 a1);
-static u16 KeyInterCB_DeferToEventScript(u32 a1);
-static u16 GetDirectionForDpadKey(u16 a1);
+static void ResetPlayerHeldKeys(u16 *);
+static u16 KeyInterCB_SelfIdle(u32);
+static u16 KeyInterCB_DeferToEventScript(u32);
+static u16 GetDirectionForDpadKey(u16);
static void CB1_UpdateLinkState(void);
static void SetKeyInterceptCallback(u16 (*func)(u32));
static void SetFieldVBlankCallback(void);
static void FieldClearVBlankHBlankCallbacks(void);
static void TransitionMapMusic(void);
-static u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *playerStruct, u16 a2, u8 a3);
-static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStruct, u8 a2, u16 a3, u8 a4);
+static u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *, u16, u8);
+static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *, u8, u16, u8);
static u16 GetCenterScreenMetatileBehavior(void);
// IWRAM bss vars
static void *sUnusedOverworldCallback;
-static u8 sPlayerTradingStates[MAX_LINK_PLAYERS];
+static u8 sPlayerLinkStates[MAX_LINK_PLAYERS];
// This callback is called with a player's key code. It then returns an
// adjusted key code, effectively intercepting the input before anything
// can process it.
static u16 (*sPlayerKeyInterceptCallback)(u32);
-static bool8 sUnknown_03000E18;
+static bool8 sReceivingFromLink;
static u8 sRfuKeepAliveTimer;
// IWRAM common
@@ -311,13 +321,13 @@ static const struct ScanlineEffectParams sFlashEffectParams =
static u8 MovementEventModeCB_Normal(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8);
static u8 MovementEventModeCB_Ignored(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8);
-static u8 MovementEventModeCB_Normal_2(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8);
+static u8 MovementEventModeCB_Scripted(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8);
static u8 (*const gLinkPlayerMovementModes[])(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8) =
{
- MovementEventModeCB_Normal, // MOVEMENT_MODE_FREE
- MovementEventModeCB_Ignored, // MOVEMENT_MODE_FROZEN
- MovementEventModeCB_Normal_2, // MOVEMENT_MODE_SCRIPTED
+ [MOVEMENT_MODE_FREE] = MovementEventModeCB_Normal,
+ [MOVEMENT_MODE_FROZEN] = MovementEventModeCB_Ignored,
+ [MOVEMENT_MODE_SCRIPTED] = MovementEventModeCB_Scripted,
};
static u8 FacingHandler_DoNothing(struct LinkPlayerObjectEvent *, struct ObjectEvent *, u8);
@@ -411,7 +421,7 @@ static void Overworld_ResetStateAfterWhiteOut(void)
}
}
-static void sub_8084788(void)
+static void UpdateMiscOverworldStates(void)
{
FlagClear(FLAG_SYS_SAFARI_MODE);
ChooseAmbientCrySpecies();
@@ -952,7 +962,7 @@ static u16 GetCenterScreenMetatileBehavior(void)
bool32 Overworld_IsBikingAllowed(void)
{
- if (!(gMapHeader.flags & MAP_ALLOW_CYCLING))
+ if (!gMapHeader.allowCycling)
return FALSE;
else
return TRUE;
@@ -1626,7 +1636,7 @@ static void CB2_ReturnToFieldLocal(void)
static void CB2_ReturnToFieldLink(void)
{
- if (!sub_8087598() && ReturnToFieldLink(&gMain.state))
+ if (!Overworld_LinkRecvQueueLengthMoreThan2() && ReturnToFieldLink(&gMain.state))
SetMainCallback2(CB2_Overworld);
}
@@ -1668,16 +1678,16 @@ void CB2_ReturnToFieldContinueScriptPlayMapMusic(void)
CB2_ReturnToField();
}
-void sub_80861E8(void)
+void CB2_ReturnToFieldFadeFromBlack(void)
{
FieldClearVBlankHBlankCallbacks();
gFieldCallback = FieldCB_WarpExitFadeFromBlack;
CB2_ReturnToField();
}
-static void sub_8086204(void)
+static void FieldCB_FadeTryShowMapPopup(void)
{
- if (SHOW_MAP_NAME_ENABLED && SecretBaseMapPopupEnabled() == TRUE)
+ if (gMapHeader.showMapName == TRUE && SecretBaseMapPopupEnabled() == TRUE)
ShowMapNamePopup();
FieldCB_WarpExitFadeFromBlack();
}
@@ -1704,7 +1714,7 @@ void CB2_ContinueSavedGame(void)
UnfreezeObjectEvents();
DoTimeBasedEvents();
- sub_8084788();
+ UpdateMiscOverworldStates();
if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR)
InitBattlePyramidMap(TRUE);
else if (trainerHillMapId != 0)
@@ -1727,7 +1737,7 @@ void CB2_ContinueSavedGame(void)
else
{
TryPutTodaysRivalTrainerOnAir();
- gFieldCallback = sub_8086204;
+ gFieldCallback = FieldCB_FadeTryShowMapPopup;
SetMainCallback1(CB1_Overworld);
CB2_ReturnToField();
}
@@ -1796,7 +1806,7 @@ static bool32 LoadMapInStepsLink(u8 *state)
ScriptContext1_Init();
ScriptContext2_Disable();
ResetMirageTowerAndSaveBlockPtrs();
- sub_80867D8();
+ ResetScreenForMapLoad();
(*state)++;
break;
case 1:
@@ -1877,7 +1887,7 @@ static bool32 LoadMapInStepsLocal(u8 *state, bool32 a2)
break;
case 1:
ResetMirageTowerAndSaveBlockPtrs();
- sub_80867D8();
+ ResetScreenForMapLoad();
(*state)++;
break;
case 2:
@@ -1923,7 +1933,7 @@ static bool32 LoadMapInStepsLocal(u8 *state, bool32 a2)
(*state)++;
break;
case 11:
- if (SHOW_MAP_NAME_ENABLED && SecretBaseMapPopupEnabled() == TRUE)
+ if (gMapHeader.showMapName == TRUE && SecretBaseMapPopupEnabled() == TRUE)
ShowMapNamePopup();
(*state)++;
break;
@@ -1944,9 +1954,9 @@ static bool32 ReturnToFieldLocal(u8 *state)
{
case 0:
ResetMirageTowerAndSaveBlockPtrs();
- sub_80867D8();
+ ResetScreenForMapLoad();
ResumeMap(FALSE);
- sub_8086A68();
+ InitObjectEventsReturnToField();
SetCameraToTrackPlayer();
(*state)++;
break;
@@ -1973,7 +1983,7 @@ static bool32 ReturnToFieldLink(u8 *state)
case 0:
FieldClearVBlankHBlankCallbacks();
ResetMirageTowerAndSaveBlockPtrs();
- sub_80867D8();
+ ResetScreenForMapLoad();
(*state)++;
break;
case 1:
@@ -1982,7 +1992,7 @@ static bool32 ReturnToFieldLink(u8 *state)
break;
case 2:
CreateLinkPlayerSprites();
- sub_8086A68();
+ InitObjectEventsReturnToField();
SetCameraToTrackGuestPlayer_2();
(*state)++;
break;
@@ -2054,13 +2064,13 @@ static void ResetMirageTowerAndSaveBlockPtrs(void)
MoveSaveBlocks_ResetHeap();
}
-static void sub_80867D8(void)
+static void ResetScreenForMapLoad(void)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
ScanlineEffect_Stop();
DmaClear16(3, PLTT + 2, PLTT_SIZE - 2);
- DmaFillLarge16(3, 0, (void *)(VRAM + 0x0), 0x18000, 0x1000);
+ DmaFillLarge16(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000);
ResetOamRange(0, 128);
LoadOam();
}
@@ -2157,9 +2167,9 @@ static void InitObjectEventsLocal(void)
TryRunOnWarpIntoMapScript();
}
-static void sub_8086A68(void)
+static void InitObjectEventsReturnToField(void)
{
- sub_808E16C(0, 0);
+ SpawnObjectEventsOnReturnToField(0, 0);
RotatingGate_InitPuzzleAndGraphics();
RunOnReturnToFieldMapScript();
}
@@ -2241,7 +2251,7 @@ static void CB1_UpdateLinkState(void)
void ResetAllMultiplayerState(void)
{
- ResetAllTradingStates();
+ ResetAllPlayerLinkStates();
SetKeyInterceptCallback(KeyInterCB_SelfIdle);
}
@@ -2266,57 +2276,57 @@ static void CheckRfuKeepAliveTimer(void)
LinkRfu_FatalError();
}
-static void ResetAllTradingStates(void)
+static void ResetAllPlayerLinkStates(void)
{
s32 i;
for (i = 0; i < MAX_LINK_PLAYERS; i++)
- sPlayerTradingStates[i] = PLAYER_TRADING_STATE_IDLE;
+ sPlayerLinkStates[i] = PLAYER_LINK_STATE_IDLE;
}
-// Returns true if all connected players are in tradingState.
-static bool32 AreAllPlayersInTradingState(u16 tradingState)
+// Returns true if all connected players are in state.
+static bool32 AreAllPlayersInLinkState(u16 state)
{
s32 i;
s32 count = gFieldLinkPlayerCount;
for (i = 0; i < count; i++)
- if (sPlayerTradingStates[i] != tradingState)
+ if (sPlayerLinkStates[i] != state)
return FALSE;
return TRUE;
}
-static bool32 IsAnyPlayerInTradingState(u16 tradingState)
+static bool32 IsAnyPlayerInLinkState(u16 state)
{
s32 i;
s32 count = gFieldLinkPlayerCount;
for (i = 0; i < count; i++)
- if (sPlayerTradingStates[i] == tradingState)
+ if (sPlayerLinkStates[i] == state)
return TRUE;
return FALSE;
}
-static void HandleLinkPlayerKeyInput(u32 playerId, u16 key, struct TradeRoomPlayer *trainer, u16 *forceFacing)
+static void HandleLinkPlayerKeyInput(u32 playerId, u16 key, struct CableClubPlayer *trainer, u16 *forceFacing)
{
const u8 *script;
- if (sPlayerTradingStates[playerId] == PLAYER_TRADING_STATE_IDLE)
+ if (sPlayerLinkStates[playerId] == PLAYER_LINK_STATE_IDLE)
{
script = TryGetTileEventScript(trainer);
if (script)
{
*forceFacing = GetDirectionForEventScript(script);
- sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ sPlayerLinkStates[playerId] = PLAYER_LINK_STATE_BUSY;
if (trainer->isLocalPlayer)
{
SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
- sub_8087530(script);
+ RunInteractLocalPlayerScript(script);
}
return;
}
- if (IsAnyPlayerInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM) == TRUE)
+ if (IsAnyPlayerInLinkState(PLAYER_LINK_STATE_EXITING_ROOM) == TRUE)
{
- sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ sPlayerLinkStates[playerId] = PLAYER_LINK_STATE_BUSY;
if (trainer->isLocalPlayer)
{
SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
@@ -2328,9 +2338,9 @@ static void HandleLinkPlayerKeyInput(u32 playerId, u16 key, struct TradeRoomPlay
switch (key)
{
case LINK_KEY_CODE_START_BUTTON:
- if (sub_8087340_2(trainer))
+ if (CanCableClubPlayerPressStart(trainer))
{
- sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ sPlayerLinkStates[playerId] = PLAYER_LINK_STATE_BUSY;
if (trainer->isLocalPlayer)
{
SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
@@ -2341,11 +2351,11 @@ static void HandleLinkPlayerKeyInput(u32 playerId, u16 key, struct TradeRoomPlay
case LINK_KEY_CODE_DPAD_DOWN:
if (PlayerIsAtSouthExit(trainer) == TRUE)
{
- sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ sPlayerLinkStates[playerId] = PLAYER_LINK_STATE_BUSY;
if (trainer->isLocalPlayer)
{
SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
- CreateConfirmLeaveTradeRoomPrompt();
+ RunConfirmLeaveCableClubScript();
}
}
break;
@@ -2353,7 +2363,7 @@ static void HandleLinkPlayerKeyInput(u32 playerId, u16 key, struct TradeRoomPlay
script = TryInteractWithPlayer(trainer);
if (script)
{
- sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ sPlayerLinkStates[playerId] = PLAYER_LINK_STATE_BUSY;
if (trainer->isLocalPlayer)
{
SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
@@ -2362,24 +2372,24 @@ static void HandleLinkPlayerKeyInput(u32 playerId, u16 key, struct TradeRoomPlay
}
break;
case LINK_KEY_CODE_HANDLE_RECV_QUEUE:
- if (sub_8087340(trainer))
+ if (IsCableClubPlayerUnfrozen(trainer))
{
- sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ sPlayerLinkStates[playerId] = PLAYER_LINK_STATE_BUSY;
if (trainer->isLocalPlayer)
{
SetKeyInterceptCallback(KeyInterCB_DeferToRecvQueue);
- sub_8087510();
+ InitLinkPlayerQueueScript();
}
}
break;
case LINK_KEY_CODE_HANDLE_SEND_QUEUE:
- if (sub_8087340(trainer))
+ if (IsCableClubPlayerUnfrozen(trainer))
{
- sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ sPlayerLinkStates[playerId] = PLAYER_LINK_STATE_BUSY;
if (trainer->isLocalPlayer)
{
SetKeyInterceptCallback(KeyInterCB_DeferToSendQueue);
- sub_8087510();
+ InitLinkPlayerQueueScript();
}
}
break;
@@ -2389,35 +2399,35 @@ static void HandleLinkPlayerKeyInput(u32 playerId, u16 key, struct TradeRoomPlay
switch (key)
{
case LINK_KEY_CODE_EXIT_ROOM:
- sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_EXITING_ROOM;
+ sPlayerLinkStates[playerId] = PLAYER_LINK_STATE_EXITING_ROOM;
break;
- case LINK_KEY_CODE_UNK_2:
- sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_UNK_2;
+ case LINK_KEY_CODE_READY:
+ sPlayerLinkStates[playerId] = PLAYER_LINK_STATE_READY;
break;
- case LINK_KEY_CODE_UNK_4:
- sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_IDLE;
+ case LINK_KEY_CODE_IDLE:
+ sPlayerLinkStates[playerId] = PLAYER_LINK_STATE_IDLE;
if (trainer->isLocalPlayer)
SetKeyInterceptCallback(KeyInterCB_SelfIdle);
break;
- case LINK_KEY_CODE_UNK_7:
- if (sPlayerTradingStates[playerId] == PLAYER_TRADING_STATE_UNK_2)
- sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY;
+ case LINK_KEY_CODE_EXIT_SEAT:
+ if (sPlayerLinkStates[playerId] == PLAYER_LINK_STATE_READY)
+ sPlayerLinkStates[playerId] = PLAYER_LINK_STATE_BUSY;
break;
}
}
static void UpdateAllLinkPlayers(u16 *keys, s32 selfId)
{
- struct TradeRoomPlayer trainer;
+ struct CableClubPlayer trainer;
s32 i;
for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
u8 key = keys[i];
u16 setFacing = FACING_NONE;
- LoadTradeRoomPlayer(i, selfId, &trainer);
+ LoadCableClubPlayer(i, selfId, &trainer);
HandleLinkPlayerKeyInput(i, key, &trainer, &setFacing);
- if (sPlayerTradingStates[i] == PLAYER_TRADING_STATE_IDLE)
+ if (sPlayerLinkStates[i] == PLAYER_LINK_STATE_IDLE)
setFacing = GetDirectionForDpadKey(key);
SetPlayerFacingDirection(i, setFacing);
}
@@ -2504,7 +2514,7 @@ static u16 KeyInterCB_SelfIdle(u32 key)
return LINK_KEY_CODE_HANDLE_SEND_QUEUE;
}
-static u16 sub_80870EC(u32 key)
+static u16 KeyInterCB_Idle(u32 key)
{
CheckRfuKeepAliveTimer();
return LINK_KEY_CODE_EMPTY;
@@ -2521,8 +2531,8 @@ static u16 KeyInterCB_DeferToEventScript(u32 key)
}
else
{
- retVal = LINK_KEY_CODE_UNK_4;
- SetKeyInterceptCallback(sub_80870EC);
+ retVal = LINK_KEY_CODE_IDLE;
+ SetKeyInterceptCallback(KeyInterCB_Idle);
}
return retVal;
}
@@ -2537,9 +2547,9 @@ static u16 KeyInterCB_DeferToRecvQueue(u32 key)
}
else
{
- retVal = LINK_KEY_CODE_UNK_4;
+ retVal = LINK_KEY_CODE_IDLE;
ScriptContext2_Disable();
- SetKeyInterceptCallback(sub_80870EC);
+ SetKeyInterceptCallback(KeyInterCB_Idle);
}
return retVal;
}
@@ -2554,27 +2564,27 @@ static u16 KeyInterCB_DeferToSendQueue(u32 key)
}
else
{
- retVal = LINK_KEY_CODE_UNK_4;
+ retVal = LINK_KEY_CODE_IDLE;
ScriptContext2_Disable();
- SetKeyInterceptCallback(sub_80870EC);
+ SetKeyInterceptCallback(KeyInterCB_Idle);
}
return retVal;
}
-static u16 KeyInterCB_DoNothingAndKeepAlive(u32 key)
+static u16 KeyInterCB_ExitingSeat(u32 key)
{
CheckRfuKeepAliveTimer();
return LINK_KEY_CODE_EMPTY;
}
-static u16 sub_8087170(u32 keyOrPlayerId)
+static u16 KeyInterCB_Ready(u32 keyOrPlayerId)
{
- if (sPlayerTradingStates[keyOrPlayerId] == PLAYER_TRADING_STATE_UNK_2)
+ if (sPlayerLinkStates[keyOrPlayerId] == PLAYER_LINK_STATE_READY)
{
if (JOY_NEW(B_BUTTON))
{
- SetKeyInterceptCallback(KeyInterCB_DoNothingAndKeepAlive);
- return LINK_KEY_CODE_UNK_7;
+ SetKeyInterceptCallback(KeyInterCB_ExitingSeat);
+ return LINK_KEY_CODE_EXIT_SEAT;
}
else
{
@@ -2588,10 +2598,10 @@ static u16 sub_8087170(u32 keyOrPlayerId)
}
}
-static u16 sub_80871AC(u32 a1)
+static u16 KeyInterCB_SetReady(u32 a1)
{
- SetKeyInterceptCallback(sub_8087170);
- return LINK_KEY_CODE_UNK_2;
+ SetKeyInterceptCallback(KeyInterCB_Ready);
+ return LINK_KEY_CODE_READY;
}
static u16 KeyInterCB_SendNothing(u32 key)
@@ -2604,9 +2614,9 @@ static u16 KeyInterCB_WaitForPlayersToExit(u32 keyOrPlayerId)
// keyOrPlayerId could be any keycode. This callback does no sanity checking
// on the size of the key. It's assuming that it is being called from
// CB1_UpdateLinkState.
- if (sPlayerTradingStates[keyOrPlayerId] != PLAYER_TRADING_STATE_EXITING_ROOM)
+ if (sPlayerLinkStates[keyOrPlayerId] != PLAYER_LINK_STATE_EXITING_ROOM)
CheckRfuKeepAliveTimer();
- if (AreAllPlayersInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM) == TRUE)
+ if (AreAllPlayersInLinkState(PLAYER_LINK_STATE_EXITING_ROOM) == TRUE)
{
ScriptContext1_SetupScript(EventScript_DoLinkRoomExit);
SetKeyInterceptCallback(KeyInterCB_SendNothing);
@@ -2620,37 +2630,38 @@ static u16 KeyInterCB_SendExitRoomKey(u32 key)
return LINK_KEY_CODE_EXIT_ROOM;
}
-// Duplicate function.
-static u16 KeyInterCB_SendNothing_2(u32 key)
+// Identical to KeyInterCB_SendNothing
+static u16 KeyInterCB_InLinkActivity(u32 key)
{
return LINK_KEY_CODE_EMPTY;
}
-u32 sub_8087214(void)
+u32 GetCableClubPartnersReady(void)
{
- if (IsAnyPlayerInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM) == TRUE)
- return 2;
- if (sPlayerKeyInterceptCallback == sub_8087170 && sPlayerTradingStates[gLocalLinkPlayerId] != PLAYER_TRADING_STATE_UNK_2)
- return 0;
- if (sPlayerKeyInterceptCallback == KeyInterCB_DoNothingAndKeepAlive && sPlayerTradingStates[gLocalLinkPlayerId] == PLAYER_TRADING_STATE_BUSY)
- return 2;
- if (AreAllPlayersInTradingState(PLAYER_TRADING_STATE_UNK_2) != FALSE)
- return 1;
- return 0;
+ if (IsAnyPlayerInLinkState(PLAYER_LINK_STATE_EXITING_ROOM) == TRUE)
+ return CABLE_SEAT_FAILED;
+ if (sPlayerKeyInterceptCallback == KeyInterCB_Ready && sPlayerLinkStates[gLocalLinkPlayerId] != PLAYER_LINK_STATE_READY)
+ return CABLE_SEAT_WAITING;
+ if (sPlayerKeyInterceptCallback == KeyInterCB_ExitingSeat && sPlayerLinkStates[gLocalLinkPlayerId] == PLAYER_LINK_STATE_BUSY)
+ return CABLE_SEAT_FAILED;
+ if (AreAllPlayersInLinkState(PLAYER_LINK_STATE_READY))
+ return CABLE_SEAT_SUCCESS;
+ return CABLE_SEAT_WAITING;
}
-bool32 sub_808727C(void)
+// Unused
+static bool32 IsAnyPlayerExitingCableClub(void)
{
- return IsAnyPlayerInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM);
+ return IsAnyPlayerInLinkState(PLAYER_LINK_STATE_EXITING_ROOM);
}
-u16 sub_8087288(void)
+u16 SetInCableClubSeat(void)
{
- SetKeyInterceptCallback(sub_80871AC);
+ SetKeyInterceptCallback(KeyInterCB_SetReady);
return 0;
}
-u16 sub_808729C(void)
+u16 SetLinkWaitingForScript(void)
{
SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
return 0;
@@ -2664,58 +2675,58 @@ u16 QueueExitLinkRoomKey(void)
return 0;
}
-u16 sub_80872C4(void)
+u16 SetStartedCableClubActivity(void)
{
- SetKeyInterceptCallback(KeyInterCB_SendNothing_2);
+ SetKeyInterceptCallback(KeyInterCB_InLinkActivity);
return 0;
}
-static void LoadTradeRoomPlayer(s32 linkPlayerId, s32 myPlayerId, struct TradeRoomPlayer *trainer)
+static void LoadCableClubPlayer(s32 linkPlayerId, s32 myPlayerId, struct CableClubPlayer *trainer)
{
s16 x, y;
trainer->playerId = linkPlayerId;
trainer->isLocalPlayer = (linkPlayerId == myPlayerId) ? 1 : 0;
- trainer->c = gLinkPlayerObjectEvents[linkPlayerId].movementMode;
+ trainer->movementMode = gLinkPlayerObjectEvents[linkPlayerId].movementMode;
trainer->facing = GetLinkPlayerFacingDirection(linkPlayerId);
GetLinkPlayerCoords(linkPlayerId, &x, &y);
trainer->pos.x = x;
trainer->pos.y = y;
trainer->pos.height = GetLinkPlayerElevation(linkPlayerId);
- trainer->field_C = MapGridGetMetatileBehaviorAt(x, y);
+ trainer->metatileBehavior = MapGridGetMetatileBehaviorAt(x, y);
}
-static bool32 sub_8087340(struct TradeRoomPlayer *player)
+static bool32 IsCableClubPlayerUnfrozen(struct CableClubPlayer *player)
{
- u8 v1 = player->c;
- if (v1 == MOVEMENT_MODE_SCRIPTED || v1 == MOVEMENT_MODE_FREE)
+ u8 mode = player->movementMode;
+ if (mode == MOVEMENT_MODE_SCRIPTED || mode == MOVEMENT_MODE_FREE)
return TRUE;
else
return FALSE;
}
-// Duplicate function.
-static bool32 sub_8087340_2(struct TradeRoomPlayer *player)
+// Identical to IsCableClubPlayerUnfrozen
+static bool32 CanCableClubPlayerPressStart(struct CableClubPlayer *player)
{
- u8 v1 = player->c;
- if (v1 == MOVEMENT_MODE_SCRIPTED || v1 == MOVEMENT_MODE_FREE)
+ u8 mode = player->movementMode;
+ if (mode == MOVEMENT_MODE_SCRIPTED || mode == MOVEMENT_MODE_FREE)
return TRUE;
else
return FALSE;
}
-static u8 *TryGetTileEventScript(struct TradeRoomPlayer *player)
+static u8 *TryGetTileEventScript(struct CableClubPlayer *player)
{
- if (player->c != MOVEMENT_MODE_SCRIPTED)
+ if (player->movementMode != MOVEMENT_MODE_SCRIPTED)
return FACING_NONE;
return GetCoordEventScriptAtMapPosition(&player->pos);
}
-static bool32 PlayerIsAtSouthExit(struct TradeRoomPlayer *player)
+static bool32 PlayerIsAtSouthExit(struct CableClubPlayer *player)
{
- if (player->c != MOVEMENT_MODE_SCRIPTED && player->c != MOVEMENT_MODE_FREE)
+ if (player->movementMode != MOVEMENT_MODE_SCRIPTED && player->movementMode != MOVEMENT_MODE_FREE)
return FALSE;
- else if (!MetatileBehavior_IsSouthArrowWarp(player->field_C))
+ else if (!MetatileBehavior_IsSouthArrowWarp(player->metatileBehavior))
return FALSE;
else if (player->facing != DIR_SOUTH)
return FALSE;
@@ -2723,12 +2734,12 @@ static bool32 PlayerIsAtSouthExit(struct TradeRoomPlayer *player)
return TRUE;
}
-static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *player)
+static const u8 *TryInteractWithPlayer(struct CableClubPlayer *player)
{
struct MapPosition otherPlayerPos;
u8 linkPlayerId;
- if (player->c != MOVEMENT_MODE_FREE && player->c != MOVEMENT_MODE_SCRIPTED)
+ if (player->movementMode != MOVEMENT_MODE_FREE && player->movementMode != MOVEMENT_MODE_SCRIPTED)
return FACING_NONE;
otherPlayerPos = player->pos;
@@ -2741,7 +2752,7 @@ static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *player)
{
if (!player->isLocalPlayer)
return CableClub_EventScript_TooBusyToNotice;
- else if (sPlayerTradingStates[linkPlayerId] != PLAYER_TRADING_STATE_IDLE)
+ else if (sPlayerLinkStates[linkPlayerId] != PLAYER_LINK_STATE_IDLE)
return CableClub_EventScript_TooBusyToNotice;
else if (!GetLinkTrainerCardColor(linkPlayerId))
return CableClub_EventScript_ReadTrainerCard;
@@ -2749,7 +2760,7 @@ static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *player)
return CableClub_EventScript_ReadTrainerCardColored;
}
- return GetInteractedLinkPlayerScript(&otherPlayerPos, player->field_C, player->facing);
+ return GetInteractedLinkPlayerScript(&otherPlayerPos, player->metatileBehavior, player->facing);
}
// This returns which direction to force the player to look when one of
@@ -2784,7 +2795,7 @@ static u16 GetDirectionForEventScript(const u8 *script)
return FACING_NONE;
}
-static void sub_8087510(void)
+static void InitLinkPlayerQueueScript(void)
{
ScriptContext2_Enable();
}
@@ -2796,17 +2807,17 @@ static void InitLinkRoomStartMenuScript(void)
ScriptContext2_Enable();
}
-static void sub_8087530(const u8 *script)
+static void RunInteractLocalPlayerScript(const u8 *script)
{
PlaySE(SE_SELECT);
ScriptContext1_SetupScript(script);
ScriptContext2_Enable();
}
-static void CreateConfirmLeaveTradeRoomPrompt(void)
+static void RunConfirmLeaveCableClubScript(void)
{
PlaySE(SE_WIN_OPEN);
- ScriptContext1_SetupScript(EventScript_ConfirmLeaveTradeRoom);
+ ScriptContext1_SetupScript(EventScript_ConfirmLeaveCableClubRoom);
ScriptContext2_Enable();
}
@@ -2823,18 +2834,18 @@ static void RunTerminateLinkScript(void)
ScriptContext2_Enable();
}
-bool32 sub_8087598(void)
+bool32 Overworld_LinkRecvQueueLengthMoreThan2(void)
{
if (!IsUpdateLinkStateCBActive())
return FALSE;
if (GetLinkRecvQueueLength() >= 3)
- sUnknown_03000E18 = TRUE;
+ sReceivingFromLink = TRUE;
else
- sUnknown_03000E18 = FALSE;
- return sUnknown_03000E18;
+ sReceivingFromLink = FALSE;
+ return sReceivingFromLink;
}
-bool32 sub_80875C8(void)
+bool32 Overworld_RecvKeysFromLinkIsRunning(void)
{
u8 temp;
@@ -2849,8 +2860,8 @@ bool32 sub_80875C8(void)
else if (sPlayerKeyInterceptCallback != KeyInterCB_DeferToEventScript)
return FALSE;
- temp = sUnknown_03000E18;
- sUnknown_03000E18 = FALSE;
+ temp = sReceivingFromLink;
+ sReceivingFromLink = FALSE;
if (temp == TRUE)
return TRUE;
@@ -2860,7 +2871,7 @@ bool32 sub_80875C8(void)
return FALSE;
}
-bool32 sub_8087634(void)
+bool32 Overworld_SendKeysToLinkIsRunning(void)
{
if (GetLinkSendQueueLength() < 2)
return FALSE;
@@ -2874,7 +2885,7 @@ bool32 sub_8087634(void)
return FALSE;
}
-bool32 sub_808766C(void)
+bool32 IsSendingKeysOverCable(void)
{
if (gWirelessCommType != 0)
return FALSE;
@@ -2923,15 +2934,15 @@ static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 gender)
ZeroLinkPlayerObjectEvent(linkPlayerObjEvent);
ZeroObjectEvent(objEvent);
- linkPlayerObjEvent->active = 1;
+ linkPlayerObjEvent->active = TRUE;
linkPlayerObjEvent->linkPlayerId = linkPlayerId;
linkPlayerObjEvent->objEventId = objEventId;
linkPlayerObjEvent->movementMode = MOVEMENT_MODE_FREE;
- objEvent->active = 1;
+ objEvent->active = TRUE;
linkGender(objEvent) = gender;
linkDirection(objEvent) = DIR_NORTH;
- objEvent->spriteId = 64;
+ objEvent->spriteId = MAX_SPRITES;
InitLinkPlayerObjectEventPos(objEvent, x, y);
}
@@ -2947,7 +2958,7 @@ static void InitLinkPlayerObjectEventPos(struct ObjectEvent *objEvent, s16 x, s1
ObjectEventUpdateZCoord(objEvent);
}
-static void sub_80877DC(u8 linkPlayerId, u8 dir)
+static void SetLinkPlayerObjectRange(u8 linkPlayerId, u8 dir)
{
if (gLinkPlayerObjectEvents[linkPlayerId].active)
{
@@ -2957,7 +2968,7 @@ static void sub_80877DC(u8 linkPlayerId, u8 dir)
}
}
-static void sub_808780C(u8 linkPlayerId)
+static void DestroyLinkPlayerObject(u8 linkPlayerId)
{
struct LinkPlayerObjectEvent *linkPlayerObjEvent = &gLinkPlayerObjectEvents[linkPlayerId];
u8 objEventId = linkPlayerObjEvent->objEventId;
@@ -2998,7 +3009,7 @@ static u8 GetLinkPlayerElevation(u8 linkPlayerId)
return objEvent->currentElevation;
}
-static s32 sub_80878E4(u8 linkPlayerId)
+static s32 GetLinkPlayerObjectStepTimer(u8 linkPlayerId)
{
u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId;
struct ObjectEvent *objEvent = &gObjectEvents[objEventId];
@@ -3048,32 +3059,32 @@ static void SetPlayerFacingDirection(u8 linkPlayerId, u8 facing)
}
-static u8 MovementEventModeCB_Normal(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 a3)
+static u8 MovementEventModeCB_Normal(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir)
{
- return gLinkPlayerFacingHandlers[a3](linkPlayerObjEvent, objEvent, a3);
+ return gLinkPlayerFacingHandlers[dir](linkPlayerObjEvent, objEvent, dir);
}
-static u8 MovementEventModeCB_Ignored(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 a3)
+static u8 MovementEventModeCB_Ignored(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir)
{
return FACING_UP;
}
-// Duplicate Function
-static u8 MovementEventModeCB_Normal_2(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 a3)
+// Identical to MovementEventModeCB_Normal
+static u8 MovementEventModeCB_Scripted(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir)
{
- return gLinkPlayerFacingHandlers[a3](linkPlayerObjEvent, objEvent, a3);
+ return gLinkPlayerFacingHandlers[dir](linkPlayerObjEvent, objEvent, dir);
}
-static bool8 FacingHandler_DoNothing(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 a3)
+static bool8 FacingHandler_DoNothing(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir)
{
return FALSE;
}
-static bool8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 a3)
+static bool8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir)
{
s16 x, y;
- linkDirection(objEvent) = FlipVerticalAndClearForced(a3, linkDirection(objEvent));
+ linkDirection(objEvent) = FlipVerticalAndClearForced(dir, linkDirection(objEvent));
ObjectEventMoveDestCoords(objEvent, linkDirection(objEvent), &x, &y);
if (LinkPlayerDetectCollision(linkPlayerObjEvent->objEventId, linkDirection(objEvent), x, y))
@@ -3089,9 +3100,9 @@ static bool8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *linkPlayer
}
}
-static bool8 FacingHandler_ForcedFacingChange(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 a3)
+static bool8 FacingHandler_ForcedFacingChange(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir)
{
- linkDirection(objEvent) = FlipVerticalAndClearForced(a3, linkDirection(objEvent));
+ linkDirection(objEvent) = FlipVerticalAndClearForced(dir, linkDirection(objEvent));
return FALSE;
}
@@ -3188,8 +3199,8 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite)
{
struct LinkPlayerObjectEvent *linkPlayerObjEvent = &gLinkPlayerObjectEvents[sprite->data[0]];
struct ObjectEvent *objEvent = &gObjectEvents[linkPlayerObjEvent->objEventId];
- sprite->pos1.x = objEvent->initialCoords.x;
- sprite->pos1.y = objEvent->initialCoords.y;
+ sprite->x = objEvent->initialCoords.x;
+ sprite->y = objEvent->initialCoords.y;
SetObjectSubpriorityByZCoord(objEvent->previousElevation, sprite, 1);
sprite->oam.priority = ZCoordToPriority(objEvent->previousElevation);
@@ -3198,7 +3209,7 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite)
else
StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(linkDirection(objEvent)));
- UpdateObjectEventSpriteVisibility(sprite, 0);
+ UpdateObjectEventSpriteInvisibility(sprite, 0);
if (objEvent->triggerGroundEffectsOnMove)
{
sprite->invisible = ((sprite->data[7] & 4) >> 2);
diff --git a/src/party_menu.c b/src/party_menu.c
index 7b77a1067..f77703328 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -2703,11 +2703,11 @@ static void CB2_ShowPokemonSummaryScreen(void)
if (gPartyMenu.menuType == PARTY_MENU_TYPE_IN_BATTLE)
{
UpdatePartyToBattleOrder();
- ShowPokemonSummaryScreen(PSS_MODE_LOCK_MOVES, gPlayerParty, gPartyMenu.slotId, gPlayerPartyCount - 1, CB2_ReturnToPartyMenuFromSummaryScreen);
+ ShowPokemonSummaryScreen(SUMMARY_MODE_LOCK_MOVES, gPlayerParty, gPartyMenu.slotId, gPlayerPartyCount - 1, CB2_ReturnToPartyMenuFromSummaryScreen);
}
else
{
- ShowPokemonSummaryScreen(PSS_MODE_NORMAL, gPlayerParty, gPartyMenu.slotId, gPlayerPartyCount - 1, CB2_ReturnToPartyMenuFromSummaryScreen);
+ ShowPokemonSummaryScreen(SUMMARY_MODE_NORMAL, gPlayerParty, gPartyMenu.slotId, gPlayerPartyCount - 1, CB2_ReturnToPartyMenuFromSummaryScreen);
}
}
@@ -2831,10 +2831,10 @@ static void MoveAndBufferPartySlot(const void *rectSrc, s16 x, s16 y, s16 width,
static void MovePartyMenuBoxSprites(struct PartyMenuBox *menuBox, s16 offset)
{
- gSprites[menuBox->pokeballSpriteId].pos2.x += offset * 8;
- gSprites[menuBox->itemSpriteId].pos2.x += offset * 8;
- gSprites[menuBox->monSpriteId].pos2.x += offset * 8;
- gSprites[menuBox->statusSpriteId].pos2.x += offset * 8;
+ gSprites[menuBox->pokeballSpriteId].x2 += offset * 8;
+ gSprites[menuBox->itemSpriteId].x2 += offset * 8;
+ gSprites[menuBox->monSpriteId].x2 += offset * 8;
+ gSprites[menuBox->statusSpriteId].x2 += offset * 8;
}
static void SlidePartyMenuBoxSpritesOneStep(u8 taskId)
@@ -2924,18 +2924,18 @@ static void SwitchMenuBoxSprites(u8 *spriteIdPtr1, u8 *spriteIdPtr2)
*spriteIdPtr1 = *spriteIdPtr2;
*spriteIdPtr2 = spriteIdBuffer;
- xBuffer1 = gSprites[*spriteIdPtr1].pos1.x;
- yBuffer1 = gSprites[*spriteIdPtr1].pos1.y;
- xBuffer2 = gSprites[*spriteIdPtr1].pos2.x;
- yBuffer2 = gSprites[*spriteIdPtr1].pos2.y;
- gSprites[*spriteIdPtr1].pos1.x = gSprites[*spriteIdPtr2].pos1.x;
- gSprites[*spriteIdPtr1].pos1.y = gSprites[*spriteIdPtr2].pos1.y;
- gSprites[*spriteIdPtr1].pos2.x = gSprites[*spriteIdPtr2].pos2.x;
- gSprites[*spriteIdPtr1].pos2.y = gSprites[*spriteIdPtr2].pos2.y;
- gSprites[*spriteIdPtr2].pos1.x = xBuffer1;
- gSprites[*spriteIdPtr2].pos1.y = yBuffer1;
- gSprites[*spriteIdPtr2].pos2.x = xBuffer2;
- gSprites[*spriteIdPtr2].pos2.y = yBuffer2;
+ xBuffer1 = gSprites[*spriteIdPtr1].x;
+ yBuffer1 = gSprites[*spriteIdPtr1].y;
+ xBuffer2 = gSprites[*spriteIdPtr1].x2;
+ yBuffer2 = gSprites[*spriteIdPtr1].y2;
+ gSprites[*spriteIdPtr1].x = gSprites[*spriteIdPtr2].x;
+ gSprites[*spriteIdPtr1].y = gSprites[*spriteIdPtr2].y;
+ gSprites[*spriteIdPtr1].x2 = gSprites[*spriteIdPtr2].x2;
+ gSprites[*spriteIdPtr1].y2 = gSprites[*spriteIdPtr2].y2;
+ gSprites[*spriteIdPtr2].x = xBuffer1;
+ gSprites[*spriteIdPtr2].y = yBuffer1;
+ gSprites[*spriteIdPtr2].x2 = xBuffer2;
+ gSprites[*spriteIdPtr2].y2 = yBuffer2;
}
static void SwitchPartyMon(void)
@@ -3020,7 +3020,7 @@ static void CB2_SelectBagItemToGive(void)
if (InBattlePyramid() == FALSE)
GoToBagMenu(ITEMMENULOCATION_PARTY, POCKETS_COUNT, CB2_GiveHoldItem);
else
- GoToBattlePyramidBagMenu(2, CB2_GiveHoldItem);
+ GoToBattlePyramidBagMenu(PYRAMIDBAG_LOC_PARTY, CB2_GiveHoldItem);
}
static void CB2_GiveHoldItem(void)
@@ -3905,22 +3905,22 @@ static void AnimateSelectedPartyIcon(u8 spriteId, u8 animNum)
gSprites[spriteId].data[0] = 0;
if (animNum == 0)
{
- if (gSprites[spriteId].pos1.x == 16)
+ if (gSprites[spriteId].x == 16)
{
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = -4;
+ gSprites[spriteId].x2 = 0;
+ gSprites[spriteId].y2 = -4;
}
else
{
- gSprites[spriteId].pos2.x = -4;
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].x2 = -4;
+ gSprites[spriteId].y2 = 0;
}
gSprites[spriteId].callback = SpriteCB_UpdatePartyMonIcon;
}
else
{
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].x2 = 0;
+ gSprites[spriteId].y2 = 0;
gSprites[spriteId].callback = SpriteCB_BouncePartyMonIcon;
}
}
@@ -3932,9 +3932,9 @@ static void SpriteCB_BouncePartyMonIcon(struct Sprite *sprite)
if (animCmd != 0)
{
if (animCmd & 1) // % 2 also matches
- sprite->pos2.y = -3;
+ sprite->y2 = -3;
else
- sprite->pos2.y = 1;
+ sprite->y2 = 1;
}
}
@@ -4020,8 +4020,8 @@ static void CreateHeldItemSpriteForTrade(u8 spriteId, bool8 isMail)
u8 subpriority = gSprites[spriteId].subpriority;
u8 newSpriteId = CreateSprite(&sSpriteTemplate_HeldItem, 250, 170, subpriority - 1);
- gSprites[newSpriteId].pos2.x = 4;
- gSprites[newSpriteId].pos2.y = 10;
+ gSprites[newSpriteId].x2 = 4;
+ gSprites[newSpriteId].y2 = 10;
gSprites[newSpriteId].callback = SpriteCB_HeldItem;
gSprites[newSpriteId].data[7] = spriteId;
StartSpriteAnim(&gSprites[newSpriteId], isMail);
@@ -4039,8 +4039,8 @@ static void SpriteCB_HeldItem(struct Sprite *sprite)
else
{
sprite->invisible = FALSE;
- sprite->pos1.x = gSprites[otherSpriteId].pos1.x + gSprites[otherSpriteId].pos2.x;
- sprite->pos1.y = gSprites[otherSpriteId].pos1.y + gSprites[otherSpriteId].pos2.y;
+ sprite->x = gSprites[otherSpriteId].x + gSprites[otherSpriteId].x2;
+ sprite->y = gSprites[otherSpriteId].y + gSprites[otherSpriteId].y2;
}
}
@@ -4087,15 +4087,15 @@ static void SpriteCB_BounceConfirmCancelButton(u8 spriteId, u8 spriteId2, u8 ani
{
StartSpriteAnim(&gSprites[spriteId], 2);
StartSpriteAnim(&gSprites[spriteId2], 4);
- gSprites[spriteId].pos2.y = 0;
- gSprites[spriteId2].pos2.y = 0;
+ gSprites[spriteId].y2 = 0;
+ gSprites[spriteId2].y2 = 0;
}
else
{
StartSpriteAnim(&gSprites[spriteId], 3);
StartSpriteAnim(&gSprites[spriteId2], 5);
- gSprites[spriteId].pos2.y = -4;
- gSprites[spriteId2].pos2.y = 4;
+ gSprites[spriteId].y2 = -4;
+ gSprites[spriteId2].y2 = 4;
}
}
@@ -4203,7 +4203,7 @@ static void CB2_ReturnToBagMenu(void)
if (InBattlePyramid() == FALSE)
GoToBagMenu(ITEMMENULOCATION_LAST, POCKETS_COUNT, NULL);
else
- GoToBattlePyramidBagMenu(4, gPyramidBagCursorData.callback);
+ GoToBattlePyramidBagMenu(PYRAMIDBAG_LOC_PREV, gPyramidBagMenuState.callback);
}
static void Task_SetSacredAshCB(u8 taskId)
@@ -4954,7 +4954,7 @@ static void DisplayLevelUpStatsPg1(u8 taskId)
s16 *arrayPtr = sPartyMenuInternal->data;
arrayPtr[12] = CreateLevelUpStatsWindow();
- DrawLevelUpWindowPg1(arrayPtr[12], arrayPtr, &arrayPtr[6], TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY);
+ DrawLevelUpWindowPg1(arrayPtr[12], arrayPtr, &arrayPtr[6], TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY);
CopyWindowToVram(arrayPtr[12], 2);
ScheduleBgCopyTilemapToVram(2);
}
@@ -4963,7 +4963,7 @@ static void DisplayLevelUpStatsPg2(u8 taskId)
{
s16 *arrayPtr = sPartyMenuInternal->data;
- DrawLevelUpWindowPg2(arrayPtr[12], &arrayPtr[6], TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY);
+ DrawLevelUpWindowPg2(arrayPtr[12], &arrayPtr[6], TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY);
CopyWindowToVram(arrayPtr[12], 2);
ScheduleBgCopyTilemapToVram(2);
}
@@ -6095,7 +6095,7 @@ static void Task_WaitAfterMultiPartnerPartySlideIn(u8 taskId)
static void MoveMultiPartyMenuBoxSprite(u8 spriteId, s16 x)
{
if (x >= 0)
- gSprites[spriteId].pos2.x = x;
+ gSprites[spriteId].x2 = x;
}
static void SlideMultiPartyMenuBoxSpritesOneStep(u8 taskId)
@@ -6265,7 +6265,7 @@ static void Task_BattlePyramidChooseMonHeldItems(u8 taskId)
void MoveDeleterChooseMoveToForget(void)
{
- ShowPokemonSummaryScreen(PSS_MODE_SELECT_MOVE, gPlayerParty, gSpecialVar_0x8004, gPlayerPartyCount - 1, CB2_ReturnToField);
+ ShowPokemonSummaryScreen(SUMMARY_MODE_SELECT_MOVE, gPlayerParty, gSpecialVar_0x8004, gPlayerPartyCount - 1, CB2_ReturnToField);
gFieldCallback = FieldCB_ContinueScriptHandleMusic;
}
diff --git a/src/player_pc.c b/src/player_pc.c
index a06aad60e..f44a111b3 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -112,14 +112,14 @@ static void CopyItemName_PlayerPC(u8 *string, u16 itemId);
static void sub_816BC14(void);
static void sub_816BFE0(u8 y, u8, u8 speed);
static void sub_816BCC4(u8);
-static void sub_816C690(u8);
+static void UpdateSwapLinePos(u8);
static void sub_816C4FC(u8 taskId);
static void sub_816C0C8(void);
static void sub_816C060(u16 itemId);
static void sub_816BEF0(s32 id);
static void sub_816B4DC(u8 taskId);
static void ItemStorage_MoveCursor(s32 id, bool8 b, struct ListMenu * thisMenu);
-static void fish4_goto_x5_or_x6(u8 windowId, s32 id, u8 yOffset);
+static void fish4_goto_x5_or_x6(u8 windowId, u32 id, u8 yOffset);
// EWRAM
static EWRAM_DATA const u8 *gPcItemMenuOptionOrder = NULL;
@@ -558,8 +558,8 @@ static void ItemStorage_WithdrawToss_Helper(u8 taskId, bool8 toss)
ItemStorage_SetItemAndMailCount(taskId);
sub_816BC14();
FreeAndReserveObjectSpritePalettes();
- LoadListMenuArrowsGfx();
- sub_8122344(gUnknown_0203BCC4->spriteIds, 7);
+ LoadListMenuSwapLineGfx();
+ CreateSwapLineSprites(gUnknown_0203BCC4->spriteIds, 7);
ClearDialogWindowAndFrame(0,0);
gTasks[taskId].func = ItemStorage_ProcessWithdrawTossInput;
}
@@ -943,7 +943,7 @@ static void ItemStorage_MoveCursor(s32 id, bool8 b, struct ListMenu *thisMenu)
if (gUnknown_0203BCC4->unk666 == 0xFF)
{
sub_816C0C8();
- if (id != -2)
+ if (id != LIST_CANCEL)
sub_816C060(gSaveBlock1Ptr->pcItems[id].itemId);
else
sub_816C060(ITEMPC_GO_BACK_TO_PREV);
@@ -951,9 +951,9 @@ static void ItemStorage_MoveCursor(s32 id, bool8 b, struct ListMenu *thisMenu)
}
}
-static void fish4_goto_x5_or_x6(u8 windowId, s32 id, u8 yOffset)
+static void fish4_goto_x5_or_x6(u8 windowId, u32 id, u8 yOffset)
{
- if (id != -2)
+ if (id != LIST_CANCEL)
{
if (gUnknown_0203BCC4->unk666 != 0xFF)
{
@@ -1024,8 +1024,8 @@ static void sub_816C060(u16 itemId)
{
*spriteIdLoc = spriteId;
gSprites[spriteId].oam.priority = 0;
- gSprites[spriteId].pos2.x = 24;
- gSprites[spriteId].pos2.y = 80;
+ gSprites[spriteId].x2 = 24;
+ gSprites[spriteId].y2 = 80;
}
}
}
@@ -1186,7 +1186,7 @@ static void ItemStorage_GoBackToPlayerPCMenu(u8 taskId)
sub_816C0C8();
ItemStorage_RemoveScrollIndicator();
DestroyListMenuTask(data[5], NULL, NULL);
- sub_81223B0(gUnknown_0203BCC4->spriteIds, 7);
+ DestroySwapLineSprites(gUnknown_0203BCC4->spriteIds, 7);
sub_816BC58();
gTasks[taskId].func = ItemStorage_GoBackToPlayerPCMenu_InitStorage;
}
@@ -1199,7 +1199,7 @@ static void ItemStorage_ItemSwapChoosePrompt(u8 taskId)
ListMenuSetUnkIndicatorsStructField(data[5], 16, 1);
gUnknown_0203BCC4->unk666 = (playerPCItemPageInfo.itemsAbove + playerPCItemPageInfo.cursorPos);
sub_816BFB8(data[5], 0, 0);
- sub_816C690(gUnknown_0203BCC4->unk666);
+ UpdateSwapLinePos(gUnknown_0203BCC4->unk666);
CopyItemName(gSaveBlock1Ptr->pcItems[gUnknown_0203BCC4->unk666].itemId, gStringVar1);
ItemStorage_PrintItemPcResponse(ItemStorage_GetItemPcResponse(ITEMPC_SWITCH_WHICH_ITEM));
gTasks[taskId].func = sub_816C4FC;
@@ -1219,8 +1219,8 @@ static void sub_816C4FC(u8 taskId)
}
id = ListMenu_ProcessInput(data[5]);
ListMenuGetScrollAndRow(data[5], &(playerPCItemPageInfo.itemsAbove), &(playerPCItemPageInfo.cursorPos));
- sub_81223FC(gUnknown_0203BCC4->spriteIds, 7, 0);
- sub_816C690(playerPCItemPageInfo.cursorPos);
+ SetSwapLineSpritesInvisibility(gUnknown_0203BCC4->spriteIds, 7, FALSE);
+ UpdateSwapLinePos(playerPCItemPageInfo.cursorPos);
switch(id)
{
case LIST_NOTHING_CHOSEN:
@@ -1245,7 +1245,6 @@ static void ItemStorage_DoItemSwap(u8 taskId, bool8 a)
{
s16 *data;
u16 b;
- u8 c;
data = gTasks[taskId].data;
b = (playerPCItemPageInfo.itemsAbove + playerPCItemPageInfo.cursorPos);
@@ -1253,31 +1252,27 @@ static void ItemStorage_DoItemSwap(u8 taskId, bool8 a)
DestroyListMenuTask(data[5], &(playerPCItemPageInfo.itemsAbove), &(playerPCItemPageInfo.cursorPos));
if (!a)
{
- c = gUnknown_0203BCC4->unk666;
- if (c != b)
+ if (gUnknown_0203BCC4->unk666 != b)
{
- if (c != b - 1)
+ if (gUnknown_0203BCC4->unk666 != b - 1)
{
- MoveItemSlotInList(gSaveBlock1Ptr->pcItems, c, b);
+ MoveItemSlotInList(gSaveBlock1Ptr->pcItems, gUnknown_0203BCC4->unk666, b);
ItemStorage_RefreshListMenu();
}
}
- else
- goto LABEL_SKIP_CURSOR_DECREMENT;
}
if (gUnknown_0203BCC4->unk666 < b)
playerPCItemPageInfo.cursorPos--;
- LABEL_SKIP_CURSOR_DECREMENT:
- sub_81223FC(gUnknown_0203BCC4->spriteIds, 7, 1);
+ SetSwapLineSpritesInvisibility(gUnknown_0203BCC4->spriteIds, 7, TRUE);
gUnknown_0203BCC4->unk666 = 0xFF;
data[5] = ListMenuInit(&gMultiuseListMenuTemplate, playerPCItemPageInfo.itemsAbove, playerPCItemPageInfo.cursorPos);
ScheduleBgCopyTilemapToVram(0);
gTasks[taskId].func = ItemStorage_ProcessInput;
}
-static void sub_816C690(u8 a)
+static void UpdateSwapLinePos(u8 y)
{
- sub_8122448(gUnknown_0203BCC4->spriteIds, 7, 128, ((a+1) * 16));
+ UpdateSwapLineSpritesPos(gUnknown_0203BCC4->spriteIds, 7, 128, ((y+1) * 16));
}
static void sub_816C6BC(u8 windowId, u16 value, u32 mode, u8 x, u8 y, u8 n)
diff --git a/src/pokeball.c b/src/pokeball.c
index 503bae2d2..52d47b534 100644
--- a/src/pokeball.c
+++ b/src/pokeball.c
@@ -12,28 +12,29 @@
#include "task.h"
#include "trig.h"
#include "util.h"
+#include "data.h"
#include "constants/songs.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
// this file's functions
static void Task_DoPokeballSendOutAnim(u8 taskId);
-static void SpriteCB_TestBallThrow(struct Sprite *sprite);
static void SpriteCB_PlayerMonSendOut_1(struct Sprite *sprite);
static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite);
static void SpriteCB_OpponentMonSendOut(struct Sprite *sprite);
-static void sub_80756D4(struct Sprite *sprite);
-static void sub_80756E0(struct Sprite *sprite);
-static void sub_807574C(struct Sprite *sprite);
-static void sub_80757E4(struct Sprite *sprite);
-static void sub_8075838(struct Sprite *sprite);
-static void sub_8075930(struct Sprite *sprite);
+static void SpriteCB_BallThrow(struct Sprite *sprite);
+static void SpriteCB_BallThrow_ReachMon(struct Sprite *sprite);
+static void SpriteCB_BallThrow_StartShrinkMon(struct Sprite *sprite);
+static void SpriteCB_BallThrow_ShrinkMon(struct Sprite *sprite);
+static void SpriteCB_BallThrow_Close(struct Sprite *sprite);
+static void SpriteCB_BallThrow_FallToGround(struct Sprite *sprite);
+static void SpriteCB_BallThrow_StartShakes(struct Sprite *sprite);
+static void SpriteCB_BallThrow_Shake(struct Sprite *sprite);
+static void SpriteCB_BallThrow_StartCaptureMon(struct Sprite *sprite);
+static void SpriteCB_BallThrow_CaptureMon(struct Sprite *sprite);
static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite);
static void SpriteCB_ReleaseMon2FromBall(struct Sprite *sprite);
-static void sub_8075970(struct Sprite *sprite);
static void HandleBallAnimEnd(struct Sprite *sprite);
-static void sub_8075FB4(struct Sprite *sprite);
-static void sub_80760F8(struct Sprite *sprite);
static void SpriteCB_PokeballReleaseMon(struct Sprite *sprite);
static void SpriteCB_ReleasedMonFlyOut(struct Sprite *sprite);
static void SpriteCB_TradePokeball(struct Sprite *sprite);
@@ -213,7 +214,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sAffineAnim_BallRotate,
- .callback = SpriteCB_TestBallThrow,
+ .callback = SpriteCB_BallThrow,
},
{
.tileTag = GFX_TAG_GREATBALL,
@@ -222,7 +223,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sAffineAnim_BallRotate,
- .callback = SpriteCB_TestBallThrow,
+ .callback = SpriteCB_BallThrow,
},
{
.tileTag = GFX_TAG_SAFARIBALL,
@@ -231,7 +232,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sAffineAnim_BallRotate,
- .callback = SpriteCB_TestBallThrow,
+ .callback = SpriteCB_BallThrow,
},
{
.tileTag = GFX_TAG_ULTRABALL,
@@ -240,7 +241,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sAffineAnim_BallRotate,
- .callback = SpriteCB_TestBallThrow,
+ .callback = SpriteCB_BallThrow,
},
{
.tileTag = GFX_TAG_MASTERBALL,
@@ -249,7 +250,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sAffineAnim_BallRotate,
- .callback = SpriteCB_TestBallThrow,
+ .callback = SpriteCB_BallThrow,
},
{
.tileTag = GFX_TAG_NETBALL,
@@ -258,7 +259,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sAffineAnim_BallRotate,
- .callback = SpriteCB_TestBallThrow,
+ .callback = SpriteCB_BallThrow,
},
{
.tileTag = GFX_TAG_DIVEBALL,
@@ -267,7 +268,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sAffineAnim_BallRotate,
- .callback = SpriteCB_TestBallThrow,
+ .callback = SpriteCB_BallThrow,
},
{
.tileTag = GFX_TAG_NESTBALL,
@@ -276,7 +277,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sAffineAnim_BallRotate,
- .callback = SpriteCB_TestBallThrow,
+ .callback = SpriteCB_BallThrow,
},
{
.tileTag = GFX_TAG_REPEATBALL,
@@ -285,7 +286,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sAffineAnim_BallRotate,
- .callback = SpriteCB_TestBallThrow,
+ .callback = SpriteCB_BallThrow,
},
{
.tileTag = GFX_TAG_TIMERBALL,
@@ -294,7 +295,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sAffineAnim_BallRotate,
- .callback = SpriteCB_TestBallThrow,
+ .callback = SpriteCB_BallThrow,
},
{
.tileTag = GFX_TAG_LUXURYBALL,
@@ -303,7 +304,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sAffineAnim_BallRotate,
- .callback = SpriteCB_TestBallThrow,
+ .callback = SpriteCB_BallThrow,
},
{
.tileTag = GFX_TAG_PREMIERBALL,
@@ -312,7 +313,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
.anims = sBallAnimSequences,
.images = NULL,
.affineAnims = sAffineAnim_BallRotate,
- .callback = SpriteCB_TestBallThrow,
+ .callback = SpriteCB_BallThrow,
},
};
@@ -372,13 +373,13 @@ static void Task_DoPokeballSendOutAnim(u8 taskId)
{
case POKEBALL_PLAYER_SENDOUT:
gBattlerTarget = battlerId;
- gSprites[ballSpriteId].pos1.x = 24;
- gSprites[ballSpriteId].pos1.y = 68;
+ gSprites[ballSpriteId].x = 24;
+ gSprites[ballSpriteId].y = 68;
gSprites[ballSpriteId].callback = SpriteCB_PlayerMonSendOut_1;
break;
case POKEBALL_OPPONENT_SENDOUT:
- gSprites[ballSpriteId].pos1.x = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X);
- gSprites[ballSpriteId].pos1.y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 24;
+ gSprites[ballSpriteId].x = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X);
+ gSprites[ballSpriteId].y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 24;
gBattlerTarget = battlerId;
gSprites[ballSpriteId].data[0] = 0;
gSprites[ballSpriteId].callback = SpriteCB_OpponentMonSendOut;
@@ -408,7 +409,10 @@ static void Task_DoPokeballSendOutAnim(u8 taskId)
PlaySE(SE_BALL_THROW);
}
-static void SpriteCB_TestBallThrow(struct Sprite *sprite)
+// This sequence of functions is very similar to those that get run when
+// a Pokéball gets thrown at a wild Pokémon, starting at SpriteCB_Ball_Arc.
+// These do not seem to get run.
+static void SpriteCB_BallThrow(struct Sprite *sprite)
{
if (TranslateAnimHorizontalArc(sprite))
{
@@ -419,18 +423,18 @@ static void SpriteCB_TestBallThrow(struct Sprite *sprite)
StartSpriteAnim(sprite, 1);
sprite->affineAnimPaused = 1;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[5] = 0;
ballId = ItemIdToBallId(GetBattlerPokeballItemId(opponentBattler));
- AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId);
+ AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 0x1C, ballId);
sprite->data[0] = LaunchBallFadeMonTask(FALSE, opponentBattler, 14, ballId);
sprite->sBattler = opponentBattler;
sprite->data[7] = noOfShakes;
DestroyTask(taskId);
- sprite->callback = sub_80756D4;
+ sprite->callback = SpriteCB_BallThrow_ReachMon;
}
}
@@ -440,26 +444,24 @@ static void SpriteCB_TestBallThrow(struct Sprite *sprite)
#undef tBattler
#undef tOpponentBattler
-static void sub_80756D4(struct Sprite *sprite)
+static void SpriteCB_BallThrow_ReachMon(struct Sprite *sprite)
{
- sprite->callback = sub_80756E0;
+ sprite->callback = SpriteCB_BallThrow_StartShrinkMon;
}
-// Start something for battler
-static void sub_80756E0(struct Sprite *sprite)
+static void SpriteCB_BallThrow_StartShrinkMon(struct Sprite *sprite)
{
if (++sprite->data[5] == 10)
{
sprite->data[5] = 0;
- sprite->callback = sub_807574C;
- StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[sprite->sBattler]], 2);
+ sprite->callback = SpriteCB_BallThrow_ShrinkMon;
+ StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[sprite->sBattler]], BATTLER_AFFINE_RETURN);
AnimateSprite(&gSprites[gBattlerSpriteIds[sprite->sBattler]]);
gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] = 0;
}
}
-// Shrink player
-static void sub_807574C(struct Sprite *sprite)
+static void SpriteCB_BallThrow_ShrinkMon(struct Sprite *sprite)
{
sprite->data[5]++;
if (sprite->data[5] == 11)
@@ -469,16 +471,16 @@ static void sub_807574C(struct Sprite *sprite)
StartSpriteAnim(sprite, 2);
gSprites[gBattlerSpriteIds[sprite->sBattler]].invisible = TRUE;
sprite->data[5] = 0;
- sprite->callback = sub_80757E4;
+ sprite->callback = SpriteCB_BallThrow_Close;
}
else
{
gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] += 0x60;
- gSprites[gBattlerSpriteIds[sprite->sBattler]].pos2.y = -gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] >> 8;
+ gSprites[gBattlerSpriteIds[sprite->sBattler]].y2 = -gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] >> 8;
}
}
-static void sub_80757E4(struct Sprite *sprite)
+static void SpriteCB_BallThrow_Close(struct Sprite *sprite)
{
if (sprite->animEnded)
{
@@ -488,21 +490,21 @@ static void sub_80757E4(struct Sprite *sprite)
sprite->data[3] = 0;
sprite->data[4] = 32;
sprite->data[5] = 0;
- sprite->pos1.y += Cos(0, 32);
- sprite->pos2.y = -Cos(0, sprite->data[4]);
- sprite->callback = sub_8075838;
+ sprite->y += Cos(0, 32);
+ sprite->y2 = -Cos(0, sprite->data[4]);
+ sprite->callback = SpriteCB_BallThrow_FallToGround;
}
}
}
-static void sub_8075838(struct Sprite *sprite)
+static void SpriteCB_BallThrow_FallToGround(struct Sprite *sprite)
{
bool8 r5 = FALSE;
switch (sprite->data[3] & 0xFF)
{
case 0:
- sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]);
+ sprite->y2 = -Cos(sprite->data[5], sprite->data[4]);
sprite->data[5] += 4 + (sprite->data[3] >> 8);
if (sprite->data[5] >= 64)
{
@@ -528,7 +530,7 @@ static void sub_8075838(struct Sprite *sprite)
}
break;
case 1:
- sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]);
+ sprite->y2 = -Cos(sprite->data[5], sprite->data[4]);
sprite->data[5] -= 4 + (sprite->data[3] >> 8);
if (sprite->data[5] <= 0)
{
@@ -540,22 +542,22 @@ static void sub_8075838(struct Sprite *sprite)
if (r5)
{
sprite->data[3] = 0;
- sprite->pos1.y += Cos(64, 32);
- sprite->pos2.y = 0;
+ sprite->y += Cos(64, 32);
+ sprite->y2 = 0;
if (sprite->data[7] == 0)
{
sprite->callback = SpriteCB_ReleaseMonFromBall;
}
else
{
- sprite->callback = sub_8075930;
+ sprite->callback = SpriteCB_BallThrow_StartShakes;
sprite->data[4] = 1;
sprite->data[5] = 0;
}
}
}
-static void sub_8075930(struct Sprite *sprite)
+static void SpriteCB_BallThrow_StartShakes(struct Sprite *sprite)
{
sprite->data[3]++;
if (sprite->data[3] == 31)
@@ -563,18 +565,18 @@ static void sub_8075930(struct Sprite *sprite)
sprite->data[3] = 0;
sprite->affineAnimPaused = TRUE;
StartSpriteAffineAnim(sprite, 1);
- sprite->callback = sub_8075970;
+ sprite->callback = SpriteCB_BallThrow_Shake;
PlaySE(SE_BALL);
}
}
-static void sub_8075970(struct Sprite *sprite)
+static void SpriteCB_BallThrow_Shake(struct Sprite *sprite)
{
switch (sprite->data[3] & 0xFF)
{
case 0:
case 2:
- sprite->pos2.x += sprite->data[4];
+ sprite->x2 += sprite->data[4];
sprite->data[5] += sprite->data[4];
sprite->affineAnimPaused = FALSE;
if (sprite->data[5] > 3 || sprite->data[5] < -3)
@@ -611,7 +613,7 @@ static void sub_8075970(struct Sprite *sprite)
{
if (sprite->data[7] == 4 && sprite->data[3] >> 8 == 3)
{
- sprite->callback = sub_8075FB4;
+ sprite->callback = SpriteCB_BallThrow_StartCaptureMon;
sprite->affineAnimPaused = TRUE;
}
else
@@ -738,7 +740,7 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
StartSpriteAnim(sprite, 1);
ballId = ItemIdToBallId(GetBattlerPokeballItemId(battlerId));
- AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId);
+ AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 0x1C, ballId);
sprite->data[0] = LaunchBallFadeMonTask(TRUE, sprite->sBattler, 14, ballId);
sprite->callback = HandleBallAnimEnd;
@@ -791,12 +793,12 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
gTasks[taskId].tCryTaskWantedCry = wantedCryCase;
gTasks[taskId].tCryTaskBattler = battlerId;
gTasks[taskId].tCryTaskMonSpriteId = gBattlerSpriteIds[sprite->sBattler];
- gTasks[taskId].tCryTaskMonPtr1 = (u32)(mon) >> 0x10;
+ gTasks[taskId].tCryTaskMonPtr1 = (u32)(mon) >> 16;
gTasks[taskId].tCryTaskMonPtr2 = (u32)(mon);
gTasks[taskId].tCryTaskState = 0;
}
- StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[sprite->sBattler]], 1);
+ StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[sprite->sBattler]], BATTLER_AFFINE_EMERGE);
if (GetBattlerSide(sprite->sBattler) == B_SIDE_OPPONENT)
gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCb_OpponentMonFromBall;
@@ -817,10 +819,10 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
#undef tCryTaskFrames
#undef tCryTaskState
-static void sub_8075FB4(struct Sprite *sprite)
+static void SpriteCB_BallThrow_StartCaptureMon(struct Sprite *sprite)
{
sprite->animPaused = TRUE;
- sprite->callback = sub_80760F8;
+ sprite->callback = SpriteCB_BallThrow_CaptureMon;
sprite->data[3] = 0;
sprite->data[4] = 0;
sprite->data[5] = 0;
@@ -836,19 +838,19 @@ static void HandleBallAnimEnd(struct Sprite *sprite)
sprite->invisible = TRUE;
if (gSprites[gBattlerSpriteIds[battlerId]].affineAnimEnded)
{
- StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[battlerId]], 0);
+ StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[battlerId]], BATTLER_AFFINE_NORMAL);
affineAnimEnded = TRUE;
}
else
{
gSprites[gBattlerSpriteIds[battlerId]].data[1] -= 288;
- gSprites[gBattlerSpriteIds[battlerId]].pos2.y = gSprites[gBattlerSpriteIds[battlerId]].data[1] >> 8;
+ gSprites[gBattlerSpriteIds[battlerId]].y2 = gSprites[gBattlerSpriteIds[battlerId]].data[1] >> 8;
}
if (sprite->animEnded && affineAnimEnded)
{
s32 i, doneBattlers;
- gSprites[gBattlerSpriteIds[battlerId]].pos2.y = 0;
+ gSprites[gBattlerSpriteIds[battlerId]].y2 = 0;
gDoingBattleAnim = FALSE;
gBattleSpritesDataPtr->healthBoxesData[battlerId].ballAnimActive = 0;
FreeSpriteOamMatrix(sprite);
@@ -867,7 +869,7 @@ static void HandleBallAnimEnd(struct Sprite *sprite)
}
}
-static void sub_80760F8(struct Sprite *sprite)
+static void SpriteCB_BallThrow_CaptureMon(struct Sprite *sprite)
{
u8 battlerId = sprite->sBattler;
@@ -925,7 +927,7 @@ static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite)
r4 = sprite->data[0];
AnimTranslateLinear(sprite);
sprite->data[7] += sprite->sBattler / 3;
- sprite->pos2.y += Sin(HIBYTE(sprite->data[7]), sprite->data[5]);
+ sprite->y2 += Sin(HIBYTE(sprite->data[7]), sprite->data[5]);
sprite->oam.affineParam += 0x100;
if ((sprite->oam.affineParam >> 8) % 3 != 0)
sprite->data[0] = r4;
@@ -943,10 +945,10 @@ static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite)
{
if (TranslateAnimHorizontalArc(sprite))
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->sBattler = sprite->oam.affineParam & 0xFF;
sprite->data[0] = 0;
@@ -1006,11 +1008,11 @@ void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 battlerId, u8 x, u8 y,
spriteId = CreateSprite(&gBallSpriteTemplates[0], x, y, subpriortiy);
gSprites[spriteId].data[0] = monSpriteId;
- gSprites[spriteId].data[5] = gSprites[monSpriteId].pos1.x;
- gSprites[spriteId].data[6] = gSprites[monSpriteId].pos1.y;
+ gSprites[spriteId].data[5] = gSprites[monSpriteId].x;
+ gSprites[spriteId].data[6] = gSprites[monSpriteId].y;
- gSprites[monSpriteId].pos1.x = x;
- gSprites[monSpriteId].pos1.y = y;
+ gSprites[monSpriteId].x = x;
+ gSprites[monSpriteId].y = y;
gSprites[monSpriteId].data[7] = species;
gSprites[spriteId].data[1] = g;
@@ -1038,11 +1040,11 @@ static void SpriteCB_PokeballReleaseMon(struct Sprite *sprite)
r5 = 0;
StartSpriteAnim(sprite, 1);
- AnimateBallOpenParticlesForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r5);
+ AnimateBallOpenParticlesForPokeball(sprite->x, sprite->y - 5, sprite->oam.priority, r5);
sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, battlerId, r4);
sprite->callback = SpriteCB_ReleasedMonFlyOut;
gSprites[r7].invisible = FALSE;
- StartSpriteAffineAnim(&gSprites[r7], 1);
+ StartSpriteAffineAnim(&gSprites[r7], BATTLER_AFFINE_EMERGE);
AnimateSprite(&gSprites[r7]);
gSprites[r7].data[1] = 0x1000;
sprite->data[7] = 0;
@@ -1065,27 +1067,27 @@ static void SpriteCB_ReleasedMonFlyOut(struct Sprite *sprite)
sprite->invisible = TRUE;
if (gSprites[monSpriteId].affineAnimEnded)
{
- StartSpriteAffineAnim(&gSprites[monSpriteId], 0);
+ StartSpriteAffineAnim(&gSprites[monSpriteId], BATTLER_AFFINE_NORMAL);
r12 = TRUE;
}
- var1 = (sprite->data[5] - sprite->pos1.x) * sprite->data[7] / 128 + sprite->pos1.x;
- var2 = (sprite->data[6] - sprite->pos1.y) * sprite->data[7] / 128 + sprite->pos1.y;
- gSprites[monSpriteId].pos1.x = var1;
- gSprites[monSpriteId].pos1.y = var2;
+ var1 = (sprite->data[5] - sprite->x) * sprite->data[7] / 128 + sprite->x;
+ var2 = (sprite->data[6] - sprite->y) * sprite->data[7] / 128 + sprite->y;
+ gSprites[monSpriteId].x = var1;
+ gSprites[monSpriteId].y = var2;
if (sprite->data[7] < 128)
{
s16 sine = -(gSineTable[(u8)sprite->data[7]] / 8);
sprite->data[7] += 4;
- gSprites[monSpriteId].pos2.x = sine;
- gSprites[monSpriteId].pos2.y = sine;
+ gSprites[monSpriteId].x2 = sine;
+ gSprites[monSpriteId].y2 = sine;
}
else
{
- gSprites[monSpriteId].pos1.x = sprite->data[5];
- gSprites[monSpriteId].pos1.y = sprite->data[6];
- gSprites[monSpriteId].pos2.x = 0;
- gSprites[monSpriteId].pos2.y = 0;
+ gSprites[monSpriteId].x = sprite->data[5];
+ gSprites[monSpriteId].y = sprite->data[6];
+ gSprites[monSpriteId].x2 = 0;
+ gSprites[monSpriteId].y2 = 0;
r6 = TRUE;
}
if (sprite->animEnded && r12 && r6)
@@ -1131,7 +1133,7 @@ static void SpriteCB_TradePokeball(struct Sprite *sprite)
r6 = 0;
StartSpriteAnim(sprite, 1);
- AnimateBallOpenParticlesForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r6);
+ AnimateBallOpenParticlesForPokeball(sprite->x, sprite->y - 5, sprite->oam.priority, r6);
sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, r8, r5);
sprite->callback = SpriteCB_TradePokeballSendOff;
#ifdef BUGFIX
@@ -1139,7 +1141,7 @@ static void SpriteCB_TradePokeball(struct Sprite *sprite)
// play the shrink anim properly due to being paused. Works together with the fix to `sub_817F77C`.
gSprites[monSpriteId].affineAnimPaused = FALSE;
#endif // BUGFIX
- StartSpriteAffineAnim(&gSprites[monSpriteId], 2);
+ StartSpriteAffineAnim(&gSprites[monSpriteId], BATTLER_AFFINE_RETURN);
AnimateSprite(&gSprites[monSpriteId]);
gSprites[monSpriteId].data[1] = 0;
}
@@ -1167,7 +1169,7 @@ static void SpriteCB_TradePokeballSendOff(struct Sprite *sprite)
else
{
gSprites[monSpriteId].data[1] += 96;
- gSprites[monSpriteId].pos2.y = -gSprites[monSpriteId].data[1] >> 8;
+ gSprites[monSpriteId].y2 = -gSprites[monSpriteId].data[1] >> 8;
}
}
@@ -1193,15 +1195,15 @@ void StartHealthboxSlideIn(u8 battlerId)
healthboxSprite->sSpeedX = 5;
healthboxSprite->sSpeedY = 0;
- healthboxSprite->pos2.x = 0x73;
- healthboxSprite->pos2.y = 0;
+ healthboxSprite->x2 = 0x73;
+ healthboxSprite->y2 = 0;
healthboxSprite->callback = SpriteCB_HealthboxSlideIn;
if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
{
healthboxSprite->sSpeedX = -healthboxSprite->sSpeedX;
healthboxSprite->sSpeedY = -healthboxSprite->sSpeedY;
- healthboxSprite->pos2.x = -healthboxSprite->pos2.x;
- healthboxSprite->pos2.y = -healthboxSprite->pos2.y;
+ healthboxSprite->x2 = -healthboxSprite->x2;
+ healthboxSprite->y2 = -healthboxSprite->y2;
}
gSprites[healthboxSprite->data[5]].callback(&gSprites[healthboxSprite->data[5]]);
if (GetBattlerPosition(battlerId) == B_POSITION_PLAYER_RIGHT)
@@ -1220,9 +1222,9 @@ static void SpriteCB_HealthboxSlideInDelayed(struct Sprite *sprite)
static void SpriteCB_HealthboxSlideIn(struct Sprite *sprite)
{
- sprite->pos2.x -= sprite->sSpeedX;
- sprite->pos2.y -= sprite->sSpeedY;
- if (sprite->pos2.x == 0 && sprite->pos2.y == 0)
+ sprite->x2 -= sprite->sSpeedX;
+ sprite->y2 -= sprite->sSpeedY;
+ if (sprite->x2 == 0 && sprite->y2 == 0)
sprite->callback = SpriteCallbackDummy;
}
@@ -1244,13 +1246,13 @@ static void SpriteCB_HitAnimHealthoxEffect(struct Sprite *sprite)
{
u8 r1 = sprite->data[1];
- gSprites[r1].pos2.y = sprite->data[0];
+ gSprites[r1].y2 = sprite->data[0];
sprite->data[0] = -sprite->data[0];
sprite->data[2]++;
if (sprite->data[2] == 21)
{
- gSprites[r1].pos2.x = 0;
- gSprites[r1].pos2.y = 0;
+ gSprites[r1].x2 = 0;
+ gSprites[r1].y2 = 0;
DestroySprite(sprite);
}
}
@@ -1272,7 +1274,7 @@ void LoadBallGfx(u8 ballId)
break;
default:
var = GetSpriteTileStartByTag(gBallSpriteSheets[ballId].tag);
- LZDecompressVram(gOpenPokeballGfx, (void *)(VRAM + 0x10100 + var * 32));
+ LZDecompressVram(gOpenPokeballGfx, (void *)(OBJ_VRAM0 + 0x100 + var * 32));
break;
}
}
diff --git a/src/pokeblock.c b/src/pokeblock.c
index ee546deda..fad6858ec 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -33,23 +33,46 @@
#include "constants/songs.h"
#include "constants/rgb.h"
+#define MAX_MENU_ITEMS 9
+#define MENU_MIDPOINT (MAX_MENU_ITEMS / 2)
+
+#define TILE_HIGHLIGHT_NONE 0x0005 // Tile number for the bg of an unselected menu item
+#define TILE_HIGHLIGHT_BLUE 0x1005 // Tile number for the bg of a selected menu item
+#define TILE_HIGHLIGHT_RED 0x2005 // Tile number for the bg of a menu item to swap
+
+#define TAG_POKEBLOCK_CASE 14800
+#define TAG_SCROLL_ARROW 1110
+
#define POKEBLOCK_MAX_FEEL 99
-#define FIELD_E75_COUNT 7
+
+enum {
+ WIN_TITLE,
+ WIN_LIST,
+ WIN_SPICY,
+ WIN_DRY,
+ WIN_SWEET,
+ WIN_BITTER,
+ WIN_SOUR,
+ WIN_FEEL,
+ WIN_ACTIONS_TALL,
+ WIN_ACTIONS,
+ WIN_TOSS_MSG,
+};
struct PokeblockMenuStruct
{
- u8 tilemap[0x800];
+ u8 tilemap[BG_SCREEN_SIZE];
void (*callbackOnUse)(void);
- const u8 *pokeblockOptionsIds;
- u8 optionsNo;
+ const u8 *pokeblockActionIds;
+ u8 numActions;
u8 caseId;
u8 itemsNo;
u8 maxShowed;
struct ListMenuItem items[POKEBLOCKS_COUNT + 1];
- u8 menuItemsStrings[POKEBLOCKS_COUNT + 1][0x20]; // + 1 because of STOW CASE item
+ u8 menuItemsStrings[POKEBLOCKS_COUNT + 1][32]; // + 1 because of STOW CASE item
u8 pokeblockCaseSpriteId;
- u8 field_E75[FIELD_E75_COUNT];
- u8 unkTaskId;
+ u8 swapLineSpriteIds[7];
+ u8 arrowTaskId;
bool8 isSwapping;
s16 gfxState;
u8 unused[8];
@@ -58,8 +81,8 @@ struct PokeblockMenuStruct
struct PokeblockSavedData
{
void (*callback)(void);
- u16 lastItemPos;
- u16 lastItemPage;
+ u16 selectedRow;
+ u16 scrollOffset;
};
enum
@@ -82,43 +105,41 @@ static bool8 LoadPokeblockMenuGfx(void);
static void HandleInitBackgrounds(void);
static void HandleInitWindows(void);
static void SetMenuItemsCountAndMaxShowed(void);
-static void sub_81362E0(void);
-static void sub_8136344(void);
-static void HandlePokeblockListMenuItems(void);
-static void sub_81363BC(void);
-static void MovePokeblockMenuCursor(s32 pkblId, bool8 arg1, struct ListMenu *arg2);
-static void PutPokeblockInfoText(void);
-static void HandlePokeblockMenuCursor(u16 cursorPos, u16 arg1);
-static void PutPokeblockListMenuString(u8 *dst, u16 pkblId);
-static void Task_HandlePokeblockMenuInput(u8 taskId);
-static void PokeblockAction_UseOnField(u8 taskId);
-static void PokeblockAction_Toss(u8 taskId);
-static void PokeblockAction_Cancel(u8 taskId);
-static void PokeblockAction_UseInBattle(u8 taskId);
-static void PokeblockAction_UseOnPokeblockFeeder(u8 taskId);
-static void PokeblockAction_GiveToContestLady(u8 taskId);
-static void TossPokeblockChoice_Yes(u8 taskId);
-static void TossPokeblockChoice_No(u8 taskId);
-static void Task_FreeDataAndExitPokeblockCase(u8 taskId);
-static void Task_HandlePokeblockOptionsInput(u8 taskId);
-static void PutPokeblockOptionsWindow(u8 taskId);
-static void Task_HandlePokeblocksSwapInput(u8 taskId);
-static void sub_8136470(struct Sprite *sprite);
-static void sub_8135FCC(s32 pkblId);
-static void HandlePokeblocksSwap(u8 taskId, bool8 noSwap);
+static void LimitMenuScrollAndRow(void);
+static void SetInitialScroll(void);
+static void UpdatePokeblockList(void);
+static void CreateScrollArrows(void);
+static void MovePokeblockMenuCursor(s32, bool8, struct ListMenu *);
+static void DrawPokeblockMenuTitleText(void);
+static void DrawPokeblockMenuHighlight(u16, u16);
+static void PutPokeblockListMenuString(u8 *, u16);
+static void Task_HandlePokeblockMenuInput(u8);
+static void PokeblockAction_UseOnField(u8);
+static void PokeblockAction_Toss(u8);
+static void PokeblockAction_Cancel(u8);
+static void PokeblockAction_UseInBattle(u8);
+static void PokeblockAction_UseOnPokeblockFeeder(u8);
+static void PokeblockAction_GiveToContestLady(u8);
+static void TossedPokeblockMessage(u8);
+static void CloseTossPokeblockWindow(u8);
+static void Task_FreeDataAndExitPokeblockCase(u8);
+static void Task_HandlePokeblockActionsInput(u8);
+static void ShowPokeblockActionsWindow(u8);
+static void Task_HandlePokeblocksSwapInput(u8);
+static void SpriteCB_ShakePokeblockCase(struct Sprite *);
+static void DrawPokeblockInfo(s32);
+static void UpdatePokeblockSwapMenu(u8, bool8);
static void UsePokeblockOnField(void);
static void ReturnToPokeblockCaseOnField(void);
-static void CreateTossPokeblockYesNoMenu(u8 taskId);
-static void HandleErasePokeblock(u8 taskId);
+static void CreateTossPokeblockYesNoMenu(u8);
+static void TossPokeblock(u8);
-// ram variables
EWRAM_DATA static struct PokeblockSavedData sSavedPokeblockData = {0};
EWRAM_DATA static struct PokeblockMenuStruct *sPokeblockMenu = NULL;
-// const rom data
const s8 gPokeblockFlavorCompatibilityTable[NUM_NATURES * FLAVOR_COUNT] =
{
- // Cool, Beauty, Cute, Smart, Tough
+ // Spicy, Dry, Sweet, Bitter, Sour
0, 0, 0, 0, 0, // Hardy
1, 0, 0, 0, -1, // Lonely
1, 0, -1, 0, 0, // Brave
@@ -198,12 +219,12 @@ const u8 *const gPokeblockNames[] =
static const struct MenuAction sPokeblockMenuActions[] =
{
- {gMenuText_Use, PokeblockAction_UseOnField},
- {gMenuText_Toss, PokeblockAction_Toss},
- {gText_Cancel2, PokeblockAction_Cancel},
- {gMenuText_Use, PokeblockAction_UseInBattle},
- {gMenuText_Use, PokeblockAction_UseOnPokeblockFeeder},
- {gMenuText_Give2, PokeblockAction_GiveToContestLady},
+ [PKBL_USE_ON_FIELD] = {gMenuText_Use, PokeblockAction_UseOnField},
+ [PKBL_TOSS] = {gMenuText_Toss, PokeblockAction_Toss},
+ [PKBL_CANCEL] = {gText_Cancel2, PokeblockAction_Cancel},
+ [PKBL_USE_IN_BATTLE] = {gMenuText_Use, PokeblockAction_UseInBattle},
+ [PKBL_USE_ON_FEEDER] = {gMenuText_Use, PokeblockAction_UseOnPokeblockFeeder},
+ [PKBL_GIVE_TO_LADY] = {gMenuText_Give2, PokeblockAction_GiveToContestLady},
};
static const u8 sActionsOnField[] = {PKBL_USE_ON_FIELD, PKBL_TOSS, PKBL_CANCEL};
@@ -211,7 +232,7 @@ static const u8 sActionsInBattle[] = {PKBL_USE_IN_BATTLE, PKBL_CANCEL};
static const u8 sActionsOnPokeblockFeeder[] = {PKBL_USE_ON_FEEDER, PKBL_CANCEL};
static const u8 sActionsWhenGivingToLady[] = {PKBL_GIVE_TO_LADY, PKBL_CANCEL};
-static const struct YesNoFuncTable sTossYesNoFuncTable = {TossPokeblockChoice_Yes, TossPokeblockChoice_No};
+static const struct YesNoFuncTable sTossYesNoFuncTable = {TossedPokeblockMessage, CloseTossPokeblockWindow};
static const u8 sContestStatsMonData[] = {MON_DATA_COOL, MON_DATA_BEAUTY, MON_DATA_CUTE, MON_DATA_SMART, MON_DATA_TOUGH};
@@ -243,7 +264,7 @@ static const union AnimCmd *const sSpriteAnimTable_PokeblockCase[] =
sSpriteAnim_PokeblockCase
};
-static const union AffineAnimCmd sSpriteAffineAnim_85B26C8[] =
+static const union AffineAnimCmd sAffineAnim_PokeblockCaseShake[] =
{
AFFINEANIMCMD_FRAME(0, 0, -2, 2),
AFFINEANIMCMD_FRAME(0, 0, 2, 4),
@@ -252,46 +273,46 @@ static const union AffineAnimCmd sSpriteAffineAnim_85B26C8[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd *const sSpriteAffineAnimTable_85B26F0[] =
+static const union AffineAnimCmd *const sAffineAnims_PokeblockCaseShake[] =
{
- sSpriteAffineAnim_85B26C8
+ sAffineAnim_PokeblockCaseShake
};
const struct CompressedSpriteSheet gPokeblockCase_SpriteSheet =
{
- gMenuPokeblockDevice_Gfx, 0x800, GFX_TAG_POKEBLOCK_CASE
+ gMenuPokeblockDevice_Gfx, 0x800, TAG_POKEBLOCK_CASE
};
const struct CompressedSpritePalette gPokeblockCase_SpritePal =
{
- gMenuPokeblockDevice_Pal, GFX_TAG_POKEBLOCK_CASE
+ gMenuPokeblockDevice_Pal, TAG_POKEBLOCK_CASE
};
static const struct SpriteTemplate sSpriteTemplate_PokeblockCase =
{
- GFX_TAG_POKEBLOCK_CASE,
- GFX_TAG_POKEBLOCK_CASE,
- &sOamData_PokeblockCase,
- sSpriteAnimTable_PokeblockCase,
- NULL,
- gDummySpriteAffineAnimTable,
- SpriteCallbackDummy
+ .tileTag = TAG_POKEBLOCK_CASE,
+ .paletteTag = TAG_POKEBLOCK_CASE,
+ .oam = &sOamData_PokeblockCase,
+ .anims = sSpriteAnimTable_PokeblockCase,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
};
-static const u8 sTextColorInPokeblockMenu[3] = {0, 2, 3};
+static const u8 sTextColor[3] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY};
-static const struct Pokeblock sFavoritePokeblocksTable[] =
+static const struct Pokeblock sFavoritePokeblocksTable[FLAVOR_COUNT] =
{
- { PBLOCK_CLR_RED, 20, 0, 0, 0, 0, 20},
- { PBLOCK_CLR_BLUE, 0, 20, 0, 0, 0, 20},
- { PBLOCK_CLR_PINK, 0, 0, 20, 0, 0, 20},
- { PBLOCK_CLR_GREEN, 0, 0, 0, 20, 0, 20},
- { PBLOCK_CLR_YELLOW, 0, 0, 0, 0, 20, 20}
+ [FLAVOR_SPICY] = { PBLOCK_CLR_RED, 20, 0, 0, 0, 0, 20},
+ [FLAVOR_DRY] = { PBLOCK_CLR_BLUE, 0, 20, 0, 0, 0, 20},
+ [FLAVOR_SWEET] = { PBLOCK_CLR_PINK, 0, 0, 20, 0, 0, 20},
+ [FLAVOR_BITTER] = { PBLOCK_CLR_GREEN, 0, 0, 0, 20, 0, 20},
+ [FLAVOR_SOUR] = { PBLOCK_CLR_YELLOW, 0, 0, 0, 0, 20, 20}
};
-static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
+static const struct WindowTemplate sWindowTemplates[] =
{
- {
+ [WIN_TITLE] = {
.bg = 0,
.tilemapLeft = 2,
.tilemapTop = 1,
@@ -300,7 +321,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.paletteNum = 15,
.baseBlock = 0x1E
},
- {
+ [WIN_LIST] = {
.bg = 0,
.tilemapLeft = 15,
.tilemapTop = 1,
@@ -309,7 +330,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.paletteNum = 15,
.baseBlock = 0x30
},
- {
+ [WIN_SPICY] = {
.bg = 0,
.tilemapLeft = 2,
.tilemapTop = 13,
@@ -318,7 +339,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.paletteNum = 15,
.baseBlock = 0x12C
},
- {
+ [WIN_DRY] = {
.bg = 0,
.tilemapLeft = 2,
.tilemapTop = 15,
@@ -327,7 +348,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.paletteNum = 15,
.baseBlock = 0x136
},
- {
+ [WIN_SWEET] = {
.bg = 0,
.tilemapLeft = 2,
.tilemapTop = 17,
@@ -336,7 +357,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.paletteNum = 15,
.baseBlock = 0x140
},
- {
+ [WIN_BITTER] = {
.bg = 0,
.tilemapLeft = 8,
.tilemapTop = 13,
@@ -345,7 +366,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.paletteNum = 15,
.baseBlock = 0x14A
},
- {
+ [WIN_SOUR] = {
.bg = 0,
.tilemapLeft = 8,
.tilemapTop = 15,
@@ -354,7 +375,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.paletteNum = 15,
.baseBlock = 0x154
},
- {
+ [WIN_FEEL] = {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 17,
@@ -363,7 +384,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.paletteNum = 15,
.baseBlock = 0x15E
},
- {
+ [WIN_ACTIONS_TALL] = {
.bg = 1,
.tilemapLeft = 7,
.tilemapTop = 5,
@@ -372,7 +393,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.paletteNum = 15,
.baseBlock = 0x162
},
- {
+ [WIN_ACTIONS] = {
.bg = 1,
.tilemapLeft = 7,
.tilemapTop = 7,
@@ -381,7 +402,7 @@ static const struct WindowTemplate sWindowTemplatesForPokeblockMenu[] =
.paletteNum = 15,
.baseBlock = 0x186
},
- {
+ [WIN_TOSS_MSG] = {
.bg = 1,
.tilemapLeft = 2,
.tilemapTop = 15,
@@ -411,7 +432,7 @@ static const struct ListMenuTemplate sPokeblockListMenuTemplate =
.itemPrintFunc = NULL,
.totalItems = 0,
.maxShowed = 0,
- .windowId = 1,
+ .windowId = WIN_LIST,
.header_X = 0,
.item_X = 1,
.cursor_X = 0,
@@ -426,33 +447,32 @@ static const struct ListMenuTemplate sPokeblockListMenuTemplate =
.cursorKind = 1
};
-// code
void OpenPokeblockCase(u8 caseId, void (*callback)(void))
{
sPokeblockMenu = Alloc(sizeof(*sPokeblockMenu));
sPokeblockMenu->caseId = caseId;
sPokeblockMenu->callbackOnUse = NULL;
- sPokeblockMenu->unkTaskId = TASK_NONE;
+ sPokeblockMenu->arrowTaskId = TASK_NONE;
sPokeblockMenu->isSwapping = FALSE;
sSavedPokeblockData.callback = callback;
switch (sPokeblockMenu->caseId)
{
case PBLOCK_CASE_BATTLE:
- sPokeblockMenu->pokeblockOptionsIds = sActionsInBattle;
- sPokeblockMenu->optionsNo = ARRAY_COUNT(sActionsInBattle);
+ sPokeblockMenu->pokeblockActionIds = sActionsInBattle;
+ sPokeblockMenu->numActions = ARRAY_COUNT(sActionsInBattle);
break;
case PBLOCK_CASE_FEEDER:
- sPokeblockMenu->pokeblockOptionsIds = sActionsOnPokeblockFeeder;
- sPokeblockMenu->optionsNo = ARRAY_COUNT(sActionsOnPokeblockFeeder);
+ sPokeblockMenu->pokeblockActionIds = sActionsOnPokeblockFeeder;
+ sPokeblockMenu->numActions = ARRAY_COUNT(sActionsOnPokeblockFeeder);
break;
case PBLOCK_CASE_GIVE:
- sPokeblockMenu->pokeblockOptionsIds = sActionsWhenGivingToLady;
- sPokeblockMenu->optionsNo = ARRAY_COUNT(sActionsWhenGivingToLady);
+ sPokeblockMenu->pokeblockActionIds = sActionsWhenGivingToLady;
+ sPokeblockMenu->numActions = ARRAY_COUNT(sActionsWhenGivingToLady);
break;
default: // PBLOCK_CASE_FIELD
- sPokeblockMenu->pokeblockOptionsIds = sActionsOnField;
- sPokeblockMenu->optionsNo = ARRAY_COUNT(sActionsOnField);
+ sPokeblockMenu->pokeblockActionIds = sActionsOnField;
+ sPokeblockMenu->numActions = ARRAY_COUNT(sActionsOnField);
break;
}
@@ -498,6 +518,10 @@ static void CB2_InitPokeblockMenu(void)
}
}
+#define tListTaskId data[0]
+#define tWindowId data[1]
+#define tToSwapId data[2]
+
static bool8 InitPokeblockMenu(void)
{
u8 taskId;
@@ -519,7 +543,7 @@ static bool8 InitPokeblockMenu(void)
break;
case 3:
ResetPaletteFade();
- gPaletteFade.bufferTransferDisabled = 1;
+ gPaletteFade.bufferTransferDisabled = TRUE;
gMain.state++;
break;
case 4:
@@ -543,8 +567,8 @@ static bool8 InitPokeblockMenu(void)
break;
case 8:
SetMenuItemsCountAndMaxShowed();
- sub_81362E0();
- sub_8136344();
+ LimitMenuScrollAndRow();
+ SetInitialScroll();
gMain.state++;
break;
case 9:
@@ -552,11 +576,11 @@ static bool8 InitPokeblockMenu(void)
gMain.state++;
break;
case 10:
- sub_8122344(sPokeblockMenu->field_E75, FIELD_E75_COUNT);
+ CreateSwapLineSprites(sPokeblockMenu->swapLineSpriteIds, ARRAY_COUNT(sPokeblockMenu->swapLineSpriteIds));
gMain.state++;
break;
case 11:
- HandlePokeblockMenuCursor(sSavedPokeblockData.lastItemPos, 0x1005);
+ DrawPokeblockMenuHighlight(sSavedPokeblockData.selectedRow, TILE_HIGHLIGHT_BLUE);
gMain.state++;
break;
case 12:
@@ -564,29 +588,29 @@ static bool8 InitPokeblockMenu(void)
gMain.state++;
break;
case 13:
- HandlePokeblockListMenuItems();
+ UpdatePokeblockList();
gMain.state++;
break;
case 14:
- sub_81363BC();
+ CreateScrollArrows();
gMain.state++;
break;
case 15:
taskId = CreateTask(Task_HandlePokeblockMenuInput, 0);
- gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sSavedPokeblockData.lastItemPage, sSavedPokeblockData.lastItemPos);
+ gTasks[taskId].tListTaskId = ListMenuInit(&gMultiuseListMenuTemplate, sSavedPokeblockData.scrollOffset, sSavedPokeblockData.selectedRow);
gMain.state++;
break;
case 16:
- PutPokeblockInfoText();
+ DrawPokeblockMenuTitleText();
gMain.state++;
break;
case 17:
- BlendPalettes(PALETTES_ALL, 0x10, 0);
+ BlendPalettes(PALETTES_ALL, 16, 0);
gMain.state++;
break;
case 18:
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK);
- gPaletteFade.bufferTransferDisabled = 0;
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK);
+ gPaletteFade.bufferTransferDisabled = FALSE;
gMain.state++;
break;
default:
@@ -645,7 +669,7 @@ static bool8 LoadPokeblockMenuGfx(void)
sPokeblockMenu->gfxState++;
break;
case 5:
- LoadListMenuArrowsGfx();
+ LoadListMenuSwapLineGfx();
sPokeblockMenu->gfxState = 0;
return TRUE;
}
@@ -657,16 +681,14 @@ static void HandleInitWindows(void)
{
u8 i;
- InitWindows(sWindowTemplatesForPokeblockMenu);
+ InitWindows(sWindowTemplates);
DeactivateAllTextPrinters();
LoadUserWindowBorderGfx(0, 1, 0xE0);
LoadMessageBoxGfx(0, 0xA, 0xD0);
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
- for (i = 0; i < ARRAY_COUNT(sWindowTemplatesForPokeblockMenu) - 1; i++)
- {
+ for (i = 0; i < ARRAY_COUNT(sWindowTemplates) - 1; i++)
FillWindowPixelBuffer(i, PIXEL_FILL(0));
- }
ScheduleBgCopyTilemapToVram(0);
ScheduleBgCopyTilemapToVram(1);
@@ -674,29 +696,27 @@ static void HandleInitWindows(void)
static void PrintOnPokeblockWindow(u8 windowId, const u8 *string, s32 x)
{
- AddTextPrinterParameterized4(windowId, 1, x, 1, 0, 0, sTextColorInPokeblockMenu, 0, string);
+ AddTextPrinterParameterized4(windowId, 1, x, 1, 0, 0, sTextColor, 0, string);
}
-static void PutPokeblockInfoText(void)
+static void DrawPokeblockMenuTitleText(void)
{
u8 i;
const u8 *itemName = ItemId_GetName(ITEM_POKEBLOCK_CASE);
- PrintOnPokeblockWindow(0, itemName, GetStringCenterAlignXOffset(1, itemName, 0x48));
+ PrintOnPokeblockWindow(WIN_TITLE, itemName, GetStringCenterAlignXOffset(1, itemName, 0x48));
- PrintOnPokeblockWindow(2, gText_Spicy, 0);
- PrintOnPokeblockWindow(3, gText_Dry, 0);
- PrintOnPokeblockWindow(4, gText_Sweet, 0);
- PrintOnPokeblockWindow(5, gText_Bitter, 0);
- PrintOnPokeblockWindow(6, gText_Sour, 0);
+ PrintOnPokeblockWindow(WIN_SPICY, gText_Spicy, 0);
+ PrintOnPokeblockWindow(WIN_DRY, gText_Dry, 0);
+ PrintOnPokeblockWindow(WIN_SWEET, gText_Sweet, 0);
+ PrintOnPokeblockWindow(WIN_BITTER, gText_Bitter, 0);
+ PrintOnPokeblockWindow(WIN_SOUR, gText_Sour, 0);
- for (i = 0; i < 8; i++)
- {
+ for (i = 0; i < WIN_ACTIONS_TALL; i++)
PutWindowTilemap(i);
- }
}
-static void HandlePokeblockListMenuItems(void)
+static void UpdatePokeblockList(void)
{
u16 i;
@@ -731,19 +751,19 @@ static void PutPokeblockListMenuString(u8 *dst, u16 pkblId)
StringExpandPlaceholders(txtPtr, gText_LvVar1);
}
-static void MovePokeblockMenuCursor(s32 pkblId, bool8 arg1, struct ListMenu *arg2)
+static void MovePokeblockMenuCursor(s32 pkblId, bool8 onInit, struct ListMenu *list)
{
- if (arg1 != TRUE)
+ if (onInit != TRUE)
{
PlaySE(SE_SELECT);
- gSprites[sPokeblockMenu->pokeblockCaseSpriteId].callback = sub_8136470;
+ gSprites[sPokeblockMenu->pokeblockCaseSpriteId].callback = SpriteCB_ShakePokeblockCase;
}
if (!sPokeblockMenu->isSwapping)
- sub_8135FCC(pkblId);
+ DrawPokeblockInfo(pkblId);
}
-static void sub_8135FCC(s32 pkblId)
+static void DrawPokeblockInfo(s32 pkblId)
{
u8 i;
struct Pokeblock *pokeblock;
@@ -760,28 +780,32 @@ static void sub_8135FCC(s32 pkblId)
{
if (GetPokeblockData(pokeblock, PBLOCK_SPICY + i) > 0)
{
- rectTilemapSrc[0] = (i << 0xC) + 0x17;
- rectTilemapSrc[1] = (i << 0xC) + 0x18;
+ // Pokéblock has this flavor, draw Pokéblock icon next to it
+ rectTilemapSrc[0] = (i << 12) + 0x17;
+ rectTilemapSrc[1] = (i << 12) + 0x18;
}
else
{
+ // Pokéblock doesn't have this flavor, draw regular tiles
rectTilemapSrc[0] = 0xF;
rectTilemapSrc[1] = 0xF;
}
CopyToBgTilemapBufferRect(2, rectTilemapSrc, (i / 3 * 6) + 1, (i % 3 * 2) + 13, 1, 2);
}
+
+ // Print the Pokéblock's feel
ConvertIntToDecimalStringN(gStringVar1, GetPokeblocksFeel(pokeblock), STR_CONV_MODE_RIGHT_ALIGN, 2);
- PrintOnPokeblockWindow(7, gStringVar1, 4);
+ PrintOnPokeblockWindow(WIN_FEEL, gStringVar1, 4);
}
else
{
+ // Selected cancel, erase info
rectTilemapSrc[0] = 0xF;
rectTilemapSrc[1] = 0xF;
for (i = 0; i < FLAVOR_COUNT; i++)
- {
CopyToBgTilemapBufferRect(2, rectTilemapSrc, (i / 3 * 6) + 1, (i % 3 * 2) + 13, 1, 2);
- }
+
CopyWindowToVram(7, 2);
}
@@ -789,9 +813,9 @@ static void sub_8135FCC(s32 pkblId)
ScheduleBgCopyTilemapToVram(2);
}
-static void HandlePokeblockMenuCursor(u16 cursorPos, u16 arg1)
+static void DrawPokeblockMenuHighlight(u16 cursorPos, u16 tileNum)
{
- FillBgTilemapBufferRect_Palette0(2, arg1, 0xF, (cursorPos * 2) + 1, 0xE, 2);
+ FillBgTilemapBufferRect_Palette0(2, tileNum, 0xF, (cursorPos * 2) + 1, 0xE, 2);
ScheduleBgCopyTilemapToVram(2);
}
@@ -813,7 +837,7 @@ static void CompactPokeblockSlots(void)
}
}
-static void SwapSortPokeblocksInternalData(u32 id1, u32 id2)
+static void SwapPokeblockMenuItems(u32 id1, u32 id2)
{
s16 i, count;
struct Pokeblock *pokeblocks = gSaveBlock1Ptr->pokeblocks;
@@ -843,8 +867,8 @@ static void SwapSortPokeblocksInternalData(u32 id1, u32 id2)
void ResetPokeblockScrollPositions(void)
{
- sSavedPokeblockData.lastItemPos = 0;
- sSavedPokeblockData.lastItemPage = 0;
+ sSavedPokeblockData.selectedRow = 0;
+ sSavedPokeblockData.scrollOffset = 0;
}
static void SetMenuItemsCountAndMaxShowed(void)
@@ -861,56 +885,56 @@ static void SetMenuItemsCountAndMaxShowed(void)
sPokeblockMenu->itemsNo++; // STOW CASE menu item
- if (sPokeblockMenu->itemsNo > 9)
- sPokeblockMenu->maxShowed = 9;
+ if (sPokeblockMenu->itemsNo > MAX_MENU_ITEMS)
+ sPokeblockMenu->maxShowed = MAX_MENU_ITEMS;
else
sPokeblockMenu->maxShowed = sPokeblockMenu->itemsNo;
}
-static void sub_81362E0(void)
+static void LimitMenuScrollAndRow(void)
{
- if (sSavedPokeblockData.lastItemPage != 0)
+ if (sSavedPokeblockData.scrollOffset != 0)
{
- if (sSavedPokeblockData.lastItemPage + sPokeblockMenu->maxShowed > sPokeblockMenu->itemsNo)
- sSavedPokeblockData.lastItemPage = sPokeblockMenu->itemsNo - sPokeblockMenu->maxShowed;
+ if (sSavedPokeblockData.scrollOffset + sPokeblockMenu->maxShowed > sPokeblockMenu->itemsNo)
+ sSavedPokeblockData.scrollOffset = sPokeblockMenu->itemsNo - sPokeblockMenu->maxShowed;
}
- if (sSavedPokeblockData.lastItemPage + sSavedPokeblockData.lastItemPos >= sPokeblockMenu->itemsNo)
+ if (sSavedPokeblockData.scrollOffset + sSavedPokeblockData.selectedRow >= sPokeblockMenu->itemsNo)
{
if (sPokeblockMenu->itemsNo == 0)
- sSavedPokeblockData.lastItemPos = 0;
+ sSavedPokeblockData.selectedRow = 0;
else
- sSavedPokeblockData.lastItemPos = sPokeblockMenu->itemsNo - 1;
+ sSavedPokeblockData.selectedRow = sPokeblockMenu->itemsNo - 1;
}
}
-static void sub_8136344(void)
+static void SetInitialScroll(void)
{
- if (sSavedPokeblockData.lastItemPos > 4)
+ if (sSavedPokeblockData.selectedRow > MENU_MIDPOINT)
{
u8 i;
for (i = 0;
- (i < sSavedPokeblockData.lastItemPos - 4) && (sSavedPokeblockData.lastItemPage + sPokeblockMenu->maxShowed != sPokeblockMenu->itemsNo);
- sSavedPokeblockData.lastItemPos--, sSavedPokeblockData.lastItemPage++, i++);
+ (i < sSavedPokeblockData.selectedRow - MENU_MIDPOINT) && (sSavedPokeblockData.scrollOffset + sPokeblockMenu->maxShowed != sPokeblockMenu->itemsNo);
+ sSavedPokeblockData.selectedRow--, sSavedPokeblockData.scrollOffset++, i++);
}
}
-static void sub_81363BC(void)
+static void CreateScrollArrows(void)
{
- if (sPokeblockMenu->unkTaskId == TASK_NONE)
+ if (sPokeblockMenu->arrowTaskId == TASK_NONE)
{
- sPokeblockMenu->unkTaskId = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0xB0, 8, 0x98, sPokeblockMenu->itemsNo - sPokeblockMenu->maxShowed,
- 0x456, 0x456, &sSavedPokeblockData.lastItemPage);
+ sPokeblockMenu->arrowTaskId = AddScrollIndicatorArrowPairParameterized(SCROLL_ARROW_UP, 0xB0, 8, 0x98, sPokeblockMenu->itemsNo - sPokeblockMenu->maxShowed,
+ TAG_SCROLL_ARROW, TAG_SCROLL_ARROW, &sSavedPokeblockData.scrollOffset);
}
}
-static void sub_8136418(void)
+static void DestroyScrollArrows(void)
{
- if (sPokeblockMenu->unkTaskId != TASK_NONE)
+ if (sPokeblockMenu->arrowTaskId != TASK_NONE)
{
- RemoveScrollIndicatorArrowPair(sPokeblockMenu->unkTaskId);
- sPokeblockMenu->unkTaskId = TASK_NONE;
+ RemoveScrollIndicatorArrowPair(sPokeblockMenu->arrowTaskId);
+ sPokeblockMenu->arrowTaskId = TASK_NONE;
}
}
@@ -919,26 +943,29 @@ u8 CreatePokeblockCaseSprite(s16 x, s16 y, u8 subpriority)
return CreateSprite(&sSpriteTemplate_PokeblockCase, x, y, subpriority);
}
-static void sub_8136470(struct Sprite *sprite)
+#define sState data[0]
+#define sTimer data[1]
+
+static void SpriteCB_ShakePokeblockCase(struct Sprite *sprite)
{
- if (sprite->data[0] > 1)
- sprite->data[0] = 0;
+ if (sprite->sState > 1)
+ sprite->sState = 0;
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL;
- sprite->affineAnims = sSpriteAffineAnimTable_85B26F0;
+ sprite->affineAnims = sAffineAnims_PokeblockCaseShake;
InitSpriteAffineAnim(sprite);
- sprite->data[0] = 1;
- sprite->data[1] = 0;
+ sprite->sState = 1;
+ sprite->sTimer = 0;
break;
case 1:
- if (++sprite->data[1] > 11)
+ if (++sprite->sTimer > 11)
{
sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
- sprite->data[0] = 0;
- sprite->data[1] = 0;
+ sprite->sState = 0;
+ sprite->sTimer = 0;
FreeOamMatrix(sprite->oam.matrixNum);
sprite->callback = SpriteCallbackDummy;
}
@@ -948,7 +975,7 @@ static void sub_8136470(struct Sprite *sprite)
static void FadePaletteAndSetTaskToClosePokeblockCase(u8 taskId)
{
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK);
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
gTasks[taskId].func = Task_FreeDataAndExitPokeblockCase;
}
@@ -961,8 +988,8 @@ static void Task_FreeDataAndExitPokeblockCase(u8 taskId)
if (sPokeblockMenu->caseId == PBLOCK_CASE_FEEDER || sPokeblockMenu->caseId == PBLOCK_CASE_GIVE)
gFieldCallback = FieldCB_ContinueScriptHandleMusic;
- DestroyListMenuTask(data[0], &sSavedPokeblockData.lastItemPage, &sSavedPokeblockData.lastItemPos);
- sub_8136418();
+ DestroyListMenuTask(tListTaskId, &sSavedPokeblockData.scrollOffset, &sSavedPokeblockData.selectedRow);
+ DestroyScrollArrows();
ResetSpriteData();
FreeAllSpritePalettes();
@@ -985,29 +1012,31 @@ static void Task_HandlePokeblockMenuInput(u8 taskId)
{
if (JOY_NEW(SELECT_BUTTON))
{
- ListMenuGetScrollAndRow(data[0], &sSavedPokeblockData.lastItemPage, &sSavedPokeblockData.lastItemPos);
- if (sSavedPokeblockData.lastItemPage + sSavedPokeblockData.lastItemPos != sPokeblockMenu->itemsNo - 1)
+ ListMenuGetScrollAndRow(tListTaskId, &sSavedPokeblockData.scrollOffset, &sSavedPokeblockData.selectedRow);
+ if (sSavedPokeblockData.scrollOffset + sSavedPokeblockData.selectedRow != sPokeblockMenu->itemsNo - 1)
{
+ // Chose menu item to swap
PlaySE(SE_SELECT);
- HandlePokeblockMenuCursor(sSavedPokeblockData.lastItemPos, 0x2005);
- data[2] = sSavedPokeblockData.lastItemPage + sSavedPokeblockData.lastItemPos;
+ DrawPokeblockMenuHighlight(sSavedPokeblockData.selectedRow, TILE_HIGHLIGHT_RED);
+ tToSwapId = sSavedPokeblockData.scrollOffset + sSavedPokeblockData.selectedRow;
sPokeblockMenu->isSwapping = TRUE;
gTasks[taskId].func = Task_HandlePokeblocksSwapInput;
}
}
else
{
- u16 oldPosition = sSavedPokeblockData.lastItemPos;
- s32 itemId = ListMenu_ProcessInput(data[0]);
+ u16 oldPosition = sSavedPokeblockData.selectedRow;
+ s32 input = ListMenu_ProcessInput(tListTaskId);
+ ListMenuGetScrollAndRow(tListTaskId, &sSavedPokeblockData.scrollOffset, &sSavedPokeblockData.selectedRow);
- ListMenuGetScrollAndRow(data[0], &sSavedPokeblockData.lastItemPage, &sSavedPokeblockData.lastItemPos);
- if (oldPosition != sSavedPokeblockData.lastItemPos)
+ if (oldPosition != sSavedPokeblockData.selectedRow)
{
- HandlePokeblockMenuCursor(oldPosition, 5);
- HandlePokeblockMenuCursor(sSavedPokeblockData.lastItemPos, 0x1005);
+ // Moved cursor
+ DrawPokeblockMenuHighlight(oldPosition, TILE_HIGHLIGHT_NONE);
+ DrawPokeblockMenuHighlight(sSavedPokeblockData.selectedRow, TILE_HIGHLIGHT_BLUE);
}
- switch (itemId)
+ switch (input)
{
case LIST_NOTHING_CHOSEN:
break;
@@ -1018,9 +1047,10 @@ static void Task_HandlePokeblockMenuInput(u8 taskId)
FadePaletteAndSetTaskToClosePokeblockCase(taskId);
break;
default:
+ // Selected Pokéblock
PlaySE(SE_SELECT);
- gSpecialVar_ItemId = itemId;
- PutPokeblockOptionsWindow(taskId);
+ gSpecialVar_ItemId = input;
+ ShowPokeblockActionsWindow(taskId);
break;
}
}
@@ -1036,100 +1066,102 @@ static void Task_HandlePokeblocksSwapInput(u8 taskId)
if (JOY_NEW(SELECT_BUTTON))
{
+ // Swap items
PlaySE(SE_SELECT);
- ListMenuGetScrollAndRow(data[0], &sSavedPokeblockData.lastItemPage, &sSavedPokeblockData.lastItemPos);
- HandlePokeblocksSwap(taskId, FALSE);
+ ListMenuGetScrollAndRow(tListTaskId, &sSavedPokeblockData.scrollOffset, &sSavedPokeblockData.selectedRow);
+ UpdatePokeblockSwapMenu(taskId, FALSE);
}
else
{
- u16 i = sSavedPokeblockData.lastItemPage;
- u16 var = sSavedPokeblockData.lastItemPos;
- s32 itemId = ListMenu_ProcessInput(data[0]);
+ u16 i = sSavedPokeblockData.scrollOffset;
+ u16 row = sSavedPokeblockData.selectedRow;
+ s32 input = ListMenu_ProcessInput(tListTaskId);
+ ListMenuGetScrollAndRow(tListTaskId, &sSavedPokeblockData.scrollOffset, &sSavedPokeblockData.selectedRow);
- ListMenuGetScrollAndRow(data[0], &sSavedPokeblockData.lastItemPage, &sSavedPokeblockData.lastItemPos);
- if (i != sSavedPokeblockData.lastItemPage || var != sSavedPokeblockData.lastItemPos)
+ if (i != sSavedPokeblockData.scrollOffset || row != sSavedPokeblockData.selectedRow)
{
- for (i = 0; i < 9; i++)
+ for (i = 0; i < MAX_MENU_ITEMS; i++)
{
- var = i + sSavedPokeblockData.lastItemPage;
- if (var == data[2])
- HandlePokeblockMenuCursor(i, 0x2005);
+ row = i + sSavedPokeblockData.scrollOffset;
+ if (row == tToSwapId)
+ DrawPokeblockMenuHighlight(i, TILE_HIGHLIGHT_RED);
else
- HandlePokeblockMenuCursor(i, 5);
+ DrawPokeblockMenuHighlight(i, TILE_HIGHLIGHT_NONE);
}
}
- sub_81223FC(sPokeblockMenu->field_E75, FIELD_E75_COUNT, 0);
- sub_8122448(sPokeblockMenu->field_E75, FIELD_E75_COUNT, 0x80, (sSavedPokeblockData.lastItemPos * 16) + 8);
+ SetSwapLineSpritesInvisibility(sPokeblockMenu->swapLineSpriteIds, ARRAY_COUNT(sPokeblockMenu->swapLineSpriteIds), FALSE);
+ UpdateSwapLineSpritesPos(sPokeblockMenu->swapLineSpriteIds, ARRAY_COUNT(sPokeblockMenu->swapLineSpriteIds), 128, (sSavedPokeblockData.selectedRow * 16) + 8);
- switch (itemId)
+ switch (input)
{
case LIST_NOTHING_CHOSEN:
break;
- case LIST_CANCEL: // same id as STOW CASE field
+ case LIST_CANCEL:
PlaySE(SE_SELECT);
- if (JOY_NEW(A_BUTTON))
- HandlePokeblocksSwap(taskId, FALSE);
+ if (JOY_NEW(A_BUTTON)) // Pointless check, B Button has been pressed here
+ UpdatePokeblockSwapMenu(taskId, FALSE);
else
- HandlePokeblocksSwap(taskId, TRUE);
+ UpdatePokeblockSwapMenu(taskId, TRUE); // Canceled swapping
break;
default:
+ // Swap items
PlaySE(SE_SELECT);
- HandlePokeblocksSwap(taskId, FALSE);
+ UpdatePokeblockSwapMenu(taskId, FALSE);
break;
}
}
}
-static void HandlePokeblocksSwap(u8 taskId, bool8 noSwap)
+static void UpdatePokeblockSwapMenu(u8 taskId, bool8 noSwap)
{
u8 i;
s16 *data = gTasks[taskId].data;
- u16 swappedFromId = sSavedPokeblockData.lastItemPage + sSavedPokeblockData.lastItemPos;
+ u16 swappedFromId = sSavedPokeblockData.scrollOffset + sSavedPokeblockData.selectedRow;
sPokeblockMenu->isSwapping = FALSE;
- DestroyListMenuTask(data[0], &sSavedPokeblockData.lastItemPage, &sSavedPokeblockData.lastItemPos);
+ DestroyListMenuTask(tListTaskId, &sSavedPokeblockData.scrollOffset, &sSavedPokeblockData.selectedRow);
- if (!noSwap && data[2] != swappedFromId && data[2] != swappedFromId - 1)
+ if (!noSwap && tToSwapId != swappedFromId && tToSwapId != swappedFromId - 1)
{
- SwapSortPokeblocksInternalData(data[2], swappedFromId);
- HandlePokeblockListMenuItems();
+ SwapPokeblockMenuItems(tToSwapId, swappedFromId);
+ UpdatePokeblockList();
}
- if (data[2] < swappedFromId)
- sSavedPokeblockData.lastItemPos--;
+ if (tToSwapId < swappedFromId)
+ sSavedPokeblockData.selectedRow--;
- data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sSavedPokeblockData.lastItemPage, sSavedPokeblockData.lastItemPos);
+ tListTaskId = ListMenuInit(&gMultiuseListMenuTemplate, sSavedPokeblockData.scrollOffset, sSavedPokeblockData.selectedRow);
ScheduleBgCopyTilemapToVram(0);
- sub_81223FC(sPokeblockMenu->field_E75, FIELD_E75_COUNT, 1);
+ SetSwapLineSpritesInvisibility(sPokeblockMenu->swapLineSpriteIds, ARRAY_COUNT(sPokeblockMenu->swapLineSpriteIds), TRUE);
- for (i = 0; i < 9; i++)
- HandlePokeblockMenuCursor(i, 5);
+ for (i = 0; i < MAX_MENU_ITEMS; i++)
+ DrawPokeblockMenuHighlight(i, TILE_HIGHLIGHT_NONE);
- HandlePokeblockMenuCursor(sSavedPokeblockData.lastItemPos, 0x1005);
+ DrawPokeblockMenuHighlight(sSavedPokeblockData.selectedRow, TILE_HIGHLIGHT_BLUE);
gTasks[taskId].func = Task_HandlePokeblockMenuInput;
}
-static void PutPokeblockOptionsWindow(u8 taskId)
+static void ShowPokeblockActionsWindow(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if (sPokeblockMenu->optionsNo == 3)
- data[1] = 8;
+ if (sPokeblockMenu->numActions == 3)
+ tWindowId = WIN_ACTIONS_TALL;
else
- data[1] = 9;
+ tWindowId = WIN_ACTIONS;
- sub_8136418();
- DrawStdFrameWithCustomTileAndPalette(data[1], 0, 1, 0xE);
- sub_81995E4(data[1], sPokeblockMenu->optionsNo, sPokeblockMenuActions, sPokeblockMenu->pokeblockOptionsIds);
- InitMenuInUpperLeftCornerPlaySoundWhenAPressed(data[1], sPokeblockMenu->optionsNo, 0);
- PutWindowTilemap(data[1]);
+ DestroyScrollArrows();
+ DrawStdFrameWithCustomTileAndPalette(tWindowId, 0, 1, 0xE);
+ sub_81995E4(tWindowId, sPokeblockMenu->numActions, sPokeblockMenuActions, sPokeblockMenu->pokeblockActionIds);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(tWindowId, sPokeblockMenu->numActions, 0);
+ PutWindowTilemap(tWindowId);
ScheduleBgCopyTilemapToVram(1);
- gTasks[taskId].func = Task_HandlePokeblockOptionsInput;
+ gTasks[taskId].func = Task_HandlePokeblockActionsInput;
}
-static void Task_HandlePokeblockOptionsInput(u8 taskId)
+static void Task_HandlePokeblockActionsInput(u8 taskId)
{
s8 itemId;
@@ -1149,7 +1181,7 @@ static void Task_HandlePokeblockOptionsInput(u8 taskId)
else
{
PlaySE(SE_SELECT);
- sPokeblockMenuActions[sPokeblockMenu->pokeblockOptionsIds[itemId]].func.void_u8(taskId);
+ sPokeblockMenuActions[sPokeblockMenu->pokeblockActionIds[itemId]].func.void_u8(taskId);
}
}
@@ -1173,10 +1205,10 @@ static void PokeblockAction_Toss(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- ClearStdWindowAndFrameToTransparent(data[1], FALSE);
+ ClearStdWindowAndFrameToTransparent(tWindowId, FALSE);
StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1Ptr->pokeblocks[gSpecialVar_ItemId].color]);
StringExpandPlaceholders(gStringVar4, gText_ThrowAwayVar1);
- DisplayMessageAndContinueTask(taskId, 10, 10, 13, 1, GetPlayerTextSpeedDelay(), gStringVar4, CreateTossPokeblockYesNoMenu);
+ DisplayMessageAndContinueTask(taskId, WIN_TOSS_MSG, 10, 13, 1, GetPlayerTextSpeedDelay(), gStringVar4, CreateTossPokeblockYesNoMenu);
}
static void CreateTossPokeblockYesNoMenu(u8 taskId)
@@ -1184,44 +1216,44 @@ static void CreateTossPokeblockYesNoMenu(u8 taskId)
CreateYesNoMenuWithCallbacks(taskId, &sTossPkblockWindowTemplate, 1, 0, 2, 1, 0xE, &sTossYesNoFuncTable);
}
-static void TossPokeblockChoice_Yes(u8 taskId)
+static void TossedPokeblockMessage(u8 taskId)
{
StringExpandPlaceholders(gStringVar4, gText_Var1ThrownAway);
- DisplayMessageAndContinueTask(taskId, 10, 10, 13, 1, GetPlayerTextSpeedDelay(), gStringVar4, HandleErasePokeblock);
+ DisplayMessageAndContinueTask(taskId, WIN_TOSS_MSG, 10, 13, 1, GetPlayerTextSpeedDelay(), gStringVar4, TossPokeblock);
}
-static void HandleErasePokeblock(u8 taskId)
+static void TossPokeblock(u8 taskId)
{
if (JOY_NEW(A_BUTTON | B_BUTTON))
{
s16 *data;
- u16 *lastPage, *lastPos;
+ u16 *scrollOffset, *selectedRow;
TryClearPokeblock(gSpecialVar_ItemId);
PlaySE(SE_SELECT);
- lastPage = &sSavedPokeblockData.lastItemPage;
- lastPos = &sSavedPokeblockData.lastItemPos;
+ scrollOffset = &sSavedPokeblockData.scrollOffset;
+ selectedRow = &sSavedPokeblockData.selectedRow;
data = gTasks[taskId].data;
- DestroyListMenuTask(data[0], lastPage, lastPos);
- HandlePokeblockMenuCursor(*lastPos, 5);
+ DestroyListMenuTask(tListTaskId, scrollOffset, selectedRow);
+ DrawPokeblockMenuHighlight(*selectedRow, TILE_HIGHLIGHT_NONE);
SetMenuItemsCountAndMaxShowed();
- sub_81362E0();
- HandlePokeblockListMenuItems();
- data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *lastPage, *lastPos);
- HandlePokeblockMenuCursor(*lastPos, 0x1005);
+ LimitMenuScrollAndRow();
+ UpdatePokeblockList();
+ tListTaskId = ListMenuInit(&gMultiuseListMenuTemplate, *scrollOffset, *selectedRow);
+ DrawPokeblockMenuHighlight(*selectedRow, TILE_HIGHLIGHT_BLUE);
ScheduleBgCopyTilemapToVram(0);
ScheduleBgCopyTilemapToVram(1);
- TossPokeblockChoice_No(taskId);
+ CloseTossPokeblockWindow(taskId);
}
}
-static void TossPokeblockChoice_No(u8 taskId)
+static void CloseTossPokeblockWindow(u8 taskId)
{
- ClearDialogWindowAndFrameToTransparent(10, FALSE);
+ ClearDialogWindowAndFrameToTransparent(WIN_TOSS_MSG, FALSE);
ScheduleBgCopyTilemapToVram(1);
- sub_81363BC();
+ CreateScrollArrows();
gTasks[taskId].func = Task_HandlePokeblockMenuInput;
}
@@ -1266,9 +1298,9 @@ static void PokeblockAction_Cancel(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- ClearStdWindowAndFrameToTransparent(data[1], FALSE);
+ ClearStdWindowAndFrameToTransparent(tWindowId, FALSE);
ScheduleBgCopyTilemapToVram(1);
- sub_81363BC();
+ CreateScrollArrows();
gTasks[taskId].func = Task_HandlePokeblockMenuInput;
}
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index e5b13e2f6..748d988a4 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -26,207 +26,283 @@
#include "util.h"
#include "constants/rgb.h"
-struct PokeblockFeedStruct
+enum {
+ ANIMDATA_ROT_IDX,
+ ANIMDATA_ROT_SPEED,
+ ANIMDATA_SIN_AMPLITUDE,
+ ANIMDATA_COS_AMPLITUDE,
+ ANIMDATA_TIME,
+ ANIMDATA_ROT_ACCEL,
+ ANIMDATA_TARGET_X,
+ ANIMDATA_TARGET_Y,
+ ANIMDATA_APPR_TIME,
+ ANIMDATA_IS_LAST,
+ NUM_ANIMDATA
+};
+
+enum {
+ AFFINE_NONE,
+ AFFINE_TURN_UP,
+ AFFINE_TURN_UP_AND_DOWN,
+ AFFINE_TURN_DOWN,
+ AFFINE_TURN_DOWN_SLOW,
+ AFFINE_TURN_DOWN_SLIGHT,
+ AFFINE_TURN_UP_HIGH,
+ AFFINE_UNUSED_1,
+ AFFINE_UNUSED_2,
+ AFFINE_UNUSED_3,
+ NUM_MON_AFFINES,
+};
+
+#define MON_X 48
+#define MON_Y 80
+
+// The animation the Pokémon does during the feeding scene depends on their nature.
+// The below values are offsets into sMonPokeblockAnims of the animation data for that nature.
+#define ANIM_HARDY 0
+#define ANIM_LONELY (ANIM_HARDY + 3)
+#define ANIM_BRAVE (ANIM_LONELY + 1)
+#define ANIM_ADAMANT (ANIM_BRAVE + 1)
+#define ANIM_NAUGHTY (ANIM_ADAMANT + 5)
+#define ANIM_BOLD (ANIM_NAUGHTY + 3)
+#define ANIM_DOCILE (ANIM_BOLD + 2)
+#define ANIM_RELAXED (ANIM_DOCILE + 1)
+#define ANIM_IMPISH (ANIM_RELAXED + 2)
+#define ANIM_LAX (ANIM_IMPISH + 1)
+#define ANIM_TIMID (ANIM_LAX + 1)
+#define ANIM_HASTY (ANIM_TIMID + 5)
+#define ANIM_SERIOUS (ANIM_HASTY + 2)
+#define ANIM_JOLLY (ANIM_SERIOUS + 1)
+#define ANIM_NAIVE (ANIM_JOLLY + 1)
+#define ANIM_MODEST (ANIM_NAIVE + 4)
+#define ANIM_MILD (ANIM_MODEST + 3)
+#define ANIM_QUIET (ANIM_MILD + 1)
+#define ANIM_BASHFUL (ANIM_QUIET + 2)
+#define ANIM_RASH (ANIM_BASHFUL + 3)
+#define ANIM_CALM (ANIM_RASH + 3)
+#define ANIM_GENTLE (ANIM_CALM + 1)
+#define ANIM_SASSY (ANIM_GENTLE + 1)
+#define ANIM_CAREFUL (ANIM_SASSY + 1)
+#define ANIM_QUIRKY (ANIM_CAREFUL + 5)
+
+struct PokeblockFeed
{
struct Sprite *monSpritePtr;
struct Sprite savedMonSprite;
- u8 tilemapBuffer[0x808];
- s16 field_850[0x200];
- s16 field_C50[0x200];
- u8 field_1050;
+ u8 tilemapBuffer[BG_SCREEN_SIZE];
+ u8 unused1[8];
+ s16 monAnimX[0x200];
+ s16 monAnimY[0x200];
+ u8 animRunState;
u8 animId;
- u8 field_1052;
+ u8 unused2;
bool8 noMonFlip;
u16 species;
- u16 field_1056;
- u16 field_1058;
+ u16 monAnimLength;
+ u16 timer;
u8 nature;
- u8 monSpriteId_;
- u8 field_105C;
+ u8 monSpriteId_; // Duplicated unnecessarily
+ u8 unused3;
u8 monSpriteId;
u8 pokeblockCaseSpriteId;
u8 pokeblockSpriteId;
- s16 field_1060[15];
+ s16 animData[NUM_ANIMDATA];
+ s16 monInitX;
+ s16 monInitY;
+ s16 maxAnimStageTime;
+ s16 monX;
+ s16 monY;
s16 loadGfxState;
- u8 unused;
+ u8 unused4;
};
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const u16 gUnknown_0860F074[];
-// this file's functions
static void HandleInitBackgrounds(void);
static void HandleInitWindows(void);
static void LaunchPokeblockFeedTask(void);
-static void SetPokeblockSpritePal(u8 pokeblockCaseId);
-static void sub_817A5CC(void);
-static void DoPokeblockCaseThrowEffect(u8 spriteId, bool8 arg1);
-static void PrepareMonToMoveToPokeblock(u8 spriteId);
-static void Task_HandleMonAtePokeblock(u8 taskId);
-static void Task_PaletteFadeToReturn(u8 taskId);
-static void sub_817A634(void);
-static void sub_817A468(struct Sprite *sprite);
-static void sub_817AB68(void);
-static void sub_817AA54(void);
-static bool8 sub_817A91C(void);
+static void SetPokeblockSpritePal(u8);
+static void CalculateMonAnimLength(void);
+static void DoPokeblockCaseThrowEffect(u8, bool8);
+static void StartMonJumpForPokeblock(u8);
+static void Task_PrintAtePokeblockMessage(u8);
+static void Task_FadeOutPokeblockFeed(u8);
+static void UpdateMonAnim(void);
+static void SpriteCB_MonJumpForPokeblock(struct Sprite *);
+static void CalculateMonAnimMovement(void);
+static void CalculateMonAnimMovementEnd(void);
+static bool8 InitMonAnimStage(void);
static bool8 FreeMonSpriteOamMatrix(void);
-static bool8 sub_817A9E4(void);
-static bool8 LoadMonAndSceneGfx(struct Pokemon *mon);
+static bool8 DoMonAnimStep(void);
+static bool8 LoadMonAndSceneGfx(struct Pokemon *);
static u8 CreatePokeblockSprite(void);
static u8 CreatePokeblockCaseSpriteForFeeding(void);
-static u8 CreateMonSprite(struct Pokemon *mon);
-static void SpriteCB_ThrownPokeblock(struct Sprite* sprite);
+static u8 CreateMonSprite(struct Pokemon *);
+static void SpriteCB_ThrownPokeblock(struct Sprite *);
-// ram variables
-EWRAM_DATA static struct PokeblockFeedStruct *sPokeblockFeed = NULL;
+EWRAM_DATA static struct PokeblockFeed *sPokeblockFeed = NULL;
EWRAM_DATA static struct CompressedSpritePalette sPokeblockSpritePal = {0};
-// const rom data
static const u8 sNatureToMonPokeblockAnim[NUM_NATURES][2] =
{
- [NATURE_HARDY] = { 0, 0 },
- [NATURE_LONELY] = { 3, 0 },
- [NATURE_BRAVE] = { 4, 1 },
- [NATURE_ADAMANT] = { 5, 0 },
- [NATURE_NAUGHTY] = { 10, 0 },
- [NATURE_BOLD] = { 13, 0 },
- [NATURE_DOCILE] = { 15, 0 },
- [NATURE_RELAXED] = { 16, 2 },
- [NATURE_IMPISH] = { 18, 0 },
- [NATURE_LAX] = { 19, 0 },
- [NATURE_TIMID] = { 20, 0 },
- [NATURE_HASTY] = { 25, 0 },
- [NATURE_SERIOUS] = { 27, 3 },
- [NATURE_JOLLY] = { 28, 0 },
- [NATURE_NAIVE] = { 29, 0 },
- [NATURE_MODEST] = { 33, 4 },
- [NATURE_MILD] = { 36, 0 },
- [NATURE_QUIET] = { 37, 0 },
- [NATURE_BASHFUL] = { 39, 0 },
- [NATURE_RASH] = { 42, 0 },
- [NATURE_CALM] = { 45, 0 },
- [NATURE_GENTLE] = { 46, 5 },
- [NATURE_SASSY] = { 47, 6 },
- [NATURE_CAREFUL] = { 48, 0 },
- [NATURE_QUIRKY] = { 53, 0 },
+ [NATURE_HARDY] = { ANIM_HARDY, AFFINE_NONE },
+ [NATURE_LONELY] = { ANIM_LONELY, AFFINE_NONE },
+ [NATURE_BRAVE] = { ANIM_BRAVE, AFFINE_TURN_UP },
+ [NATURE_ADAMANT] = { ANIM_ADAMANT, AFFINE_NONE },
+ [NATURE_NAUGHTY] = { ANIM_NAUGHTY, AFFINE_NONE },
+ [NATURE_BOLD] = { ANIM_BOLD, AFFINE_NONE },
+ [NATURE_DOCILE] = { ANIM_DOCILE, AFFINE_NONE },
+ [NATURE_RELAXED] = { ANIM_RELAXED, AFFINE_TURN_UP_AND_DOWN },
+ [NATURE_IMPISH] = { ANIM_IMPISH, AFFINE_NONE },
+ [NATURE_LAX] = { ANIM_LAX, AFFINE_NONE },
+ [NATURE_TIMID] = { ANIM_TIMID, AFFINE_NONE },
+ [NATURE_HASTY] = { ANIM_HASTY, AFFINE_NONE },
+ [NATURE_SERIOUS] = { ANIM_SERIOUS, AFFINE_TURN_DOWN },
+ [NATURE_JOLLY] = { ANIM_JOLLY, AFFINE_NONE },
+ [NATURE_NAIVE] = { ANIM_NAIVE, AFFINE_NONE },
+ [NATURE_MODEST] = { ANIM_MODEST, AFFINE_TURN_DOWN_SLOW },
+ [NATURE_MILD] = { ANIM_MILD, AFFINE_NONE },
+ [NATURE_QUIET] = { ANIM_QUIET, AFFINE_NONE },
+ [NATURE_BASHFUL] = { ANIM_BASHFUL, AFFINE_NONE },
+ [NATURE_RASH] = { ANIM_RASH, AFFINE_NONE },
+ [NATURE_CALM] = { ANIM_CALM, AFFINE_NONE },
+ [NATURE_GENTLE] = { ANIM_GENTLE, AFFINE_TURN_DOWN_SLIGHT },
+ [NATURE_SASSY] = { ANIM_SASSY, AFFINE_TURN_UP_HIGH },
+ [NATURE_CAREFUL] = { ANIM_CAREFUL, AFFINE_NONE },
+ [NATURE_QUIRKY] = { ANIM_QUIRKY, AFFINE_NONE },
};
-static const s16 sMonPokeblockAnims[][10] =
+// Data for the animation the Pokémon does while readying to jump for the Pokéblock
+// Each nature can have up to 8 anim 'stages' it progresses through, and each stage has its own array of data.
+// The elements in each array correspond in order to the following:
+// - ANIMDATA_ROT_IDX : Index into sin/cos table for circular movement
+// - ANIMDATA_ROT_SPEED : Circular movement speed
+// - ANIMDATA_SIN_AMPLITUDE: How far on the x to move
+// - ANIMDATA_COS_AMPLITUDE: How far on the y to move
+// - ANIMDATA_TIME : How long in frames this part of the animation takes
+// - ANIMDATA_ROT_ACCEL : How much to increase circular movement speed
+// - ANIMDATA_TARGET_X : Target x coord offset from start position
+// - ANIMDATA_TARGET_Y : Target y coord offset from start position
+// - ANIMDATA_APPR_TIME : The time over which the target position should be approached
+// - ANIMDATA_IS_LAST : TRUE if it's the last anim stage for this nature, FALSE otherwise
+//
+static const s16 sMonPokeblockAnims[][NUM_ANIMDATA] =
{
- // HARDY
- { 0, 4, 0, 8, 24, 0, 0, 0, 12, 0},
- { 0, 4, 0, 16, 24, 0, 0, 0, 12, 0},
- { 0, 4, 0, 32, 32, 0, 0, 0, 16, 1},
-
- // LONELY
- { 0, 3, 6, 0, 48, 0, 0, 0, 24, 1},
-
- // BRAVE
- { 64, 16, -24, 0, 32, 0, 0, 0, 0, 1},
-
- // ADAMANT
- { 0, 4, 8, 0, 16, 0, -8, 0, 0, 0},
- { 0, 0, 0, 0, 16, 0, 0, 0, 0, 0},
- { 0, 4, 8, 0, 16, 0, -8, 0, 0, 0},
- { 0, 0, 0, 0, 16, 0, 0, 0, 0, 0},
- { 0, 4, -16, 0, 4, 0, 16, 0, 0, 1},
-
- // NAUGHTY
- { 0, 3, 6, 0, 12, 0, 0, 0, 6, 0},
- { 0, 3, -6, 0, 12, 0, 0, 0, 6, 0},
- { 0, 16, 16, 0, 45, 1, 0, 0, 0, 1},
-
- // BOLD
- { 0, 16, 0, 24, 32, 0, 0, 0, 16, 0},
- { 0, 16, 0, 23, 32, 0, 0, 0, 16, 1},
-
- // DOCILE
- { 0, 0, 0, 0, 80, 0, 0, 0, 0, 1},
-
- // RELAXED
- { 0, 2, 8, 0, 32, 0, 0, 0, 0, 0},
- { 0, 2, -8, 0, 32, 0, 0, 0, 0, 1},
-
- // IMPISH
- { 0, 32, 2, 1, 48, 1, 0, 0, 24, 1},
-
- // LAX
- { 0, 2, 16, 16, 128, 0, 0, 0, 0, 1},
-
- // TIMID
- { 0, 2, -8, 0, 48, 0, -24, 0, 0, 0},
- { 0, 0, 0, 0, 8, 0, 0, 0, 0, 0},
- { 64, 32, 2, 0, 36, 0, 0, 0, 0, 0},
- { 0, 0, 0, 0, 8, 0, 0, 0, 0, 0},
- { 0, 2, 8, 0, 48, 0, 24, 0, 0, 1},
-
- // HASTY
- { 64, 24, 16, 0, 32, 0, 0, 0, 0, 0},
- { 0, 28, 2, 1, 32, 1, 0, 0, 16, 1},
-
- // SERIOUS
- { 0, 0, 0, 0, 32, 0, 0, 0, 0, 1},
-
- // JOLLY
- { 64, 16, -16, 2, 48, 0, 0, 0, 32, 1},
-
- // NAIVE
- { 0, 12, -8, 4, 24, 0, 8, 0, 12, 0},
- { 0, 12, 8, 8, 24, 0, -16, 0, 12, 0},
- { 0, 12, -8, 16, 24, 0, 16, 0, 12, 0},
- { 0, 12, 8, 28, 24, 0, -8, 0, 12, 1},
-
- // MODEST
- { 0, 0, 0, 0, 8, 0, 0, 0, 0, 0},
- { 64, 16, -4, 0, 32, 0, 0, 0, 0, 0},
- { 0, 0, 0, 0, 8, 0, 0, 0, 0, 1},
-
- // MILD
- { 128, 4, 0, 8, 64, 0, 0, 0, 0, 1},
-
- // QUIET
- { 0, 2, 16, 0, 48, 0, 0, 0, 0, 0},
- { 128, 2, 16, 0, 48, 0, 0, 0, 0, 1},
-
- // BASHFUL
- { 0, 2, -4, 0, 48, 0, -48, 0, 0, 0},
- { 0, 0, 0, 0, 80, 0, 0, 0, 0, 0},
- { 0, 2, 8, 0, 24, 0, 48, 0, 0, 1},
-
- // RASH
- { 64, 4, 64, 58, 52, 0, -88, 0, 0, 0},
- { 0, 0, 0, 0, 80, 0, 0, 0, 0, 0},
- { 0, 24, 80, 0, 32, 0, 88, 0, 0, 1},
-
- // CALM
- { 0, 2, 16, 4, 64, 0, 0, 0, 0, 1},
-
- // GENTLE
- { 0, 0, 0, 0, 32, 0, 0, 0, 0, 1},
-
- // SASSY
- { 0, 0, 0, 0, 42, 0, 0, 0, 0, 1},
-
- // CAREFUL
- { 0, 4, 0, 8, 24, 0, 0, 0, 12, 0},
- { 0, 0, 0, 0, 12, 0, 0, 0, 0, 0},
- { 0, 4, 0, 12, 24, 0, 0, 0, 12, 0},
- { 0, 0, 0, 0, 12, 0, 0, 0, 0, 0},
- { 0, 4, 0, 4, 24, 0, 0, 0, 12, 1},
-
- // QUIRKY
- { 0, 4, 16, 12, 64, 0, 0, 0, 0, 0},
- { 0, -4, 16, 12, 64, 0, 0, 0, 0, 1},
+ [ANIM_HARDY] =
+ { 0, 4, 0, 8, 24, 0, 0, 0, 12, FALSE},
+ { 0, 4, 0, 16, 24, 0, 0, 0, 12, FALSE},
+ { 0, 4, 0, 32, 32, 0, 0, 0, 16, TRUE},
+
+ [ANIM_LONELY] =
+ { 0, 3, 6, 0, 48, 0, 0, 0, 24, TRUE},
+
+ [ANIM_BRAVE] =
+ { 64, 16, -24, 0, 32, 0, 0, 0, 0, TRUE},
+
+ [ANIM_ADAMANT] =
+ { 0, 4, 8, 0, 16, 0, -8, 0, 0, FALSE},
+ { 0, 0, 0, 0, 16, 0, 0, 0, 0, FALSE},
+ { 0, 4, 8, 0, 16, 0, -8, 0, 0, FALSE},
+ { 0, 0, 0, 0, 16, 0, 0, 0, 0, FALSE},
+ { 0, 4, -16, 0, 4, 0, 16, 0, 0, TRUE},
+
+ [ANIM_NAUGHTY] =
+ { 0, 3, 6, 0, 12, 0, 0, 0, 6, FALSE},
+ { 0, 3, -6, 0, 12, 0, 0, 0, 6, FALSE},
+ { 0, 16, 16, 0, 45, 1, 0, 0, 0, TRUE},
+
+ [ANIM_BOLD] =
+ { 0, 16, 0, 24, 32, 0, 0, 0, 16, FALSE},
+ { 0, 16, 0, 23, 32, 0, 0, 0, 16, TRUE},
+
+ [ANIM_DOCILE] =
+ { 0, 0, 0, 0, 80, 0, 0, 0, 0, TRUE},
+
+ [ANIM_RELAXED] =
+ { 0, 2, 8, 0, 32, 0, 0, 0, 0, FALSE},
+ { 0, 2, -8, 0, 32, 0, 0, 0, 0, TRUE},
+
+ [ANIM_IMPISH] =
+ { 0, 32, 2, 1, 48, 1, 0, 0, 24, TRUE},
+
+ [ANIM_LAX] =
+ { 0, 2, 16, 16, 128, 0, 0, 0, 0, TRUE},
+
+ [ANIM_TIMID] =
+ { 0, 2, -8, 0, 48, 0, -24, 0, 0, FALSE},
+ { 0, 0, 0, 0, 8, 0, 0, 0, 0, FALSE},
+ { 64, 32, 2, 0, 36, 0, 0, 0, 0, FALSE},
+ { 0, 0, 0, 0, 8, 0, 0, 0, 0, FALSE},
+ { 0, 2, 8, 0, 48, 0, 24, 0, 0, TRUE},
+
+ [ANIM_HASTY] =
+ { 64, 24, 16, 0, 32, 0, 0, 0, 0, FALSE},
+ { 0, 28, 2, 1, 32, 1, 0, 0, 16, TRUE},
+
+ [ANIM_SERIOUS] =
+ { 0, 0, 0, 0, 32, 0, 0, 0, 0, TRUE},
+
+ [ANIM_JOLLY] =
+ { 64, 16, -16, 2, 48, 0, 0, 0, 32, TRUE},
+
+ [ANIM_NAIVE] =
+ { 0, 12, -8, 4, 24, 0, 8, 0, 12, FALSE},
+ { 0, 12, 8, 8, 24, 0, -16, 0, 12, FALSE},
+ { 0, 12, -8, 16, 24, 0, 16, 0, 12, FALSE},
+ { 0, 12, 8, 28, 24, 0, -8, 0, 12, TRUE},
+
+ [ANIM_MODEST] =
+ { 0, 0, 0, 0, 8, 0, 0, 0, 0, FALSE},
+ { 64, 16, -4, 0, 32, 0, 0, 0, 0, FALSE},
+ { 0, 0, 0, 0, 8, 0, 0, 0, 0, TRUE},
+
+ [ANIM_MILD] =
+ { 128, 4, 0, 8, 64, 0, 0, 0, 0, TRUE},
+
+ [ANIM_QUIET] =
+ { 0, 2, 16, 0, 48, 0, 0, 0, 0, FALSE},
+ { 128, 2, 16, 0, 48, 0, 0, 0, 0, TRUE},
+
+ [ANIM_BASHFUL] =
+ { 0, 2, -4, 0, 48, 0, -48, 0, 0, FALSE},
+ { 0, 0, 0, 0, 80, 0, 0, 0, 0, FALSE},
+ { 0, 2, 8, 0, 24, 0, 48, 0, 0, TRUE},
+
+ [ANIM_RASH] =
+ { 64, 4, 64, 58, 52, 0, -88, 0, 0, FALSE},
+ { 0, 0, 0, 0, 80, 0, 0, 0, 0, FALSE},
+ { 0, 24, 80, 0, 32, 0, 88, 0, 0, TRUE},
+
+ [ANIM_CALM] =
+ { 0, 2, 16, 4, 64, 0, 0, 0, 0, TRUE},
+
+ [ANIM_GENTLE] =
+ { 0, 0, 0, 0, 32, 0, 0, 0, 0, TRUE},
+
+ [ANIM_SASSY] =
+ { 0, 0, 0, 0, 42, 0, 0, 0, 0, TRUE},
+
+ [ANIM_CAREFUL] =
+ { 0, 4, 0, 8, 24, 0, 0, 0, 12, FALSE},
+ { 0, 0, 0, 0, 12, 0, 0, 0, 0, FALSE},
+ { 0, 4, 0, 12, 24, 0, 0, 0, 12, FALSE},
+ { 0, 0, 0, 0, 12, 0, 0, 0, 0, FALSE},
+ { 0, 4, 0, 4, 24, 0, 0, 0, 12, TRUE},
+
+ [ANIM_QUIRKY] =
+ { 0, 4, 16, 12, 64, 0, 0, 0, 0, FALSE},
+ { 0, -4, 16, 12, 64, 0, 0, 0, 0, TRUE},
};
-static const union AffineAnimCmd sSpriteAffineAnim_8411E90[] =
+static const union AffineAnimCmd sAffineAnim_Mon_None[] =
{
AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_8411EA0[] =
+static const union AffineAnimCmd sAffineAnim_Mon_TurnUp[] =
{
AFFINEANIMCMD_FRAME(0, 0, 12, 1),
AFFINEANIMCMD_FRAME(0, 0, 0, 30),
@@ -234,7 +310,7 @@ static const union AffineAnimCmd sSpriteAffineAnim_8411EA0[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_8411EC0[] =
+static const union AffineAnimCmd sAffineAnim_Mon_TurnUp_Flipped[] =
{
AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(0, 0, 12, 1),
@@ -243,7 +319,7 @@ static const union AffineAnimCmd sSpriteAffineAnim_8411EC0[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_8411EE8[] =
+static const union AffineAnimCmd sAffineAnim_Mon_TurnUpAndDown[] =
{
AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16),
AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 32),
@@ -251,7 +327,7 @@ static const union AffineAnimCmd sSpriteAffineAnim_8411EE8[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_8411F08[] =
+static const union AffineAnimCmd sAffineAnim_Mon_TurnUpAndDown_Flipped[] =
{
AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16),
@@ -260,7 +336,7 @@ static const union AffineAnimCmd sSpriteAffineAnim_8411F08[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_8411F30[] =
+static const union AffineAnimCmd sAffineAnim_Mon_TurnDown[] =
{
AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8),
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16),
@@ -268,7 +344,7 @@ static const union AffineAnimCmd sSpriteAffineAnim_8411F30[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_8411F50[] =
+static const union AffineAnimCmd sAffineAnim_Mon_TurnDown_Flipped[] =
{
AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8),
@@ -277,7 +353,7 @@ static const union AffineAnimCmd sSpriteAffineAnim_8411F50[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_8411F78[] =
+static const union AffineAnimCmd sAffineAnim_Mon_TurnDownSlow[] =
{
AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8),
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 32),
@@ -285,7 +361,7 @@ static const union AffineAnimCmd sSpriteAffineAnim_8411F78[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_8411F98[] =
+static const union AffineAnimCmd sAffineAnim_Mon_TurnDownSlow_Flipped[] =
{
AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8),
@@ -294,7 +370,7 @@ static const union AffineAnimCmd sSpriteAffineAnim_8411F98[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_8411FC0[] =
+static const union AffineAnimCmd sAffineAnim_Mon_TurnDownSlight[] =
{
AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 4),
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 24),
@@ -302,7 +378,7 @@ static const union AffineAnimCmd sSpriteAffineAnim_8411FC0[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_8411FE0[] =
+static const union AffineAnimCmd sAffineAnim_Mon_TurnDownSlight_Flipped[] =
{
AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 4),
@@ -311,7 +387,7 @@ static const union AffineAnimCmd sSpriteAffineAnim_8411FE0[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_8412008[] =
+static const union AffineAnimCmd sAffineAnim_Mon_TurnUpHigh[] =
{
AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24),
AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16),
@@ -319,7 +395,7 @@ static const union AffineAnimCmd sSpriteAffineAnim_8412008[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_8412028[] =
+static const union AffineAnimCmd sAffineAnim_Mon_TurnUpHigh_Flipped[] =
{
AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24),
@@ -328,29 +404,33 @@ static const union AffineAnimCmd sSpriteAffineAnim_8412028[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd *const sSpriteAffineAnimTable_85F04FC[] =
+static const union AffineAnimCmd *const sAffineAnims_Mon[] =
{
- sSpriteAffineAnim_8411E90,
- sSpriteAffineAnim_8411EA0,
- sSpriteAffineAnim_8411EE8,
- sSpriteAffineAnim_8411F30,
- sSpriteAffineAnim_8411F78,
- sSpriteAffineAnim_8411FC0,
- sSpriteAffineAnim_8412008,
- sSpriteAffineAnim_8411E90,
- sSpriteAffineAnim_8411E90,
- sSpriteAffineAnim_8411E90,
- sSpriteAffineAnim_8411E90,
- sSpriteAffineAnim_8411EC0,
- sSpriteAffineAnim_8411F08,
- sSpriteAffineAnim_8411F50,
- sSpriteAffineAnim_8411F98,
- sSpriteAffineAnim_8411FE0,
- sSpriteAffineAnim_8412028,
- sSpriteAffineAnim_8411E90,
- sSpriteAffineAnim_8411E90,
- sSpriteAffineAnim_8411E90,
- sSpriteAffineAnim_8411E90,
+ // Animations for non-flipped mon sprites
+ [AFFINE_NONE] = sAffineAnim_Mon_None,
+ [AFFINE_TURN_UP] = sAffineAnim_Mon_TurnUp,
+ [AFFINE_TURN_UP_AND_DOWN] = sAffineAnim_Mon_TurnUpAndDown,
+ [AFFINE_TURN_DOWN] = sAffineAnim_Mon_TurnDown,
+ [AFFINE_TURN_DOWN_SLOW] = sAffineAnim_Mon_TurnDownSlow,
+ [AFFINE_TURN_DOWN_SLIGHT] = sAffineAnim_Mon_TurnDownSlight,
+ [AFFINE_TURN_UP_HIGH] = sAffineAnim_Mon_TurnUpHigh,
+ [AFFINE_UNUSED_1] = sAffineAnim_Mon_None,
+ [AFFINE_UNUSED_2] = sAffineAnim_Mon_None,
+ [AFFINE_UNUSED_3] = sAffineAnim_Mon_None,
+
+ // Animations for flipped mon sprites
+ [AFFINE_NONE + NUM_MON_AFFINES] = sAffineAnim_Mon_None,
+ [AFFINE_TURN_UP + NUM_MON_AFFINES] = sAffineAnim_Mon_TurnUp_Flipped,
+ [AFFINE_TURN_UP_AND_DOWN + NUM_MON_AFFINES] = sAffineAnim_Mon_TurnUpAndDown_Flipped,
+ [AFFINE_TURN_DOWN + NUM_MON_AFFINES] = sAffineAnim_Mon_TurnDown_Flipped,
+ [AFFINE_TURN_DOWN_SLOW + NUM_MON_AFFINES] = sAffineAnim_Mon_TurnDownSlow_Flipped,
+ [AFFINE_TURN_DOWN_SLIGHT + NUM_MON_AFFINES] = sAffineAnim_Mon_TurnDownSlight_Flipped,
+ [AFFINE_TURN_UP_HIGH + NUM_MON_AFFINES] = sAffineAnim_Mon_TurnUpHigh_Flipped,
+ [AFFINE_UNUSED_1 + NUM_MON_AFFINES] = sAffineAnim_Mon_None,
+ [AFFINE_UNUSED_2 + NUM_MON_AFFINES] = sAffineAnim_Mon_None,
+ [AFFINE_UNUSED_3 + NUM_MON_AFFINES] = sAffineAnim_Mon_None,
+
+ sAffineAnim_Mon_None, // ? Extra for some reason
};
static const struct BgTemplate sBackgroundTemplates[] =
@@ -377,7 +457,15 @@ static const struct BgTemplate sBackgroundTemplates[] =
static const struct WindowTemplate sWindowTemplates[] =
{
- {0, 1, 0xF, 0x1C, 4, 0xF, 0xA},
+ {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 15,
+ .width = 28,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0xA
+ },
DUMMY_WIN_TEMPLATE
};
@@ -400,7 +488,7 @@ static const u32* const sPokeblocksPals[] =
[PBLOCK_CLR_GOLD - 1] = gPokeblockGold_Pal
};
-static const union AffineAnimCmd sSpriteAffineAnim_84120DC[] =
+static const union AffineAnimCmd sAffineAnim_Still[] =
{
AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
AFFINEANIMCMD_END
@@ -408,10 +496,10 @@ static const union AffineAnimCmd sSpriteAffineAnim_84120DC[] =
static const union AffineAnimCmd *const sSpriteAffineAnimTable_MonNoFlip[] =
{
- sSpriteAffineAnim_84120DC
+ sAffineAnim_Still
};
-static const union AffineAnimCmd sSpriteAffineAnim_84120F0[] =
+static const union AffineAnimCmd sAffineAnim_PokeblockCase_ThrowFromVertical[] =
{
AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1),
@@ -426,7 +514,7 @@ static const union AffineAnimCmd sSpriteAffineAnim_84120F0[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_8412148[] =
+static const union AffineAnimCmd sAffineAnim_PokeblockCase_ThrowFromHorizontal[] =
{
AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1),
@@ -441,22 +529,22 @@ static const union AffineAnimCmd sSpriteAffineAnim_8412148[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd *const sSpriteAffineAnimTable_85F0664[] =
+static const union AffineAnimCmd *const sAffineAnims_PokeblockCase_Still[] =
{
- sSpriteAffineAnim_84120DC
+ sAffineAnim_Still
};
-static const union AffineAnimCmd *const sSpriteAffineAnimTable_85F0668[] =
+static const union AffineAnimCmd *const sAffineAnims_PokeblockCase_ThrowFromVertical[] =
{
- sSpriteAffineAnim_84120F0
+ sAffineAnim_PokeblockCase_ThrowFromVertical
};
-static const union AffineAnimCmd *const sSpriteAffineAnimTable_85F066C[] =
+static const union AffineAnimCmd *const sAffineAnims_PokeblockCase_ThrowFromHorizontal[] =
{
- sSpriteAffineAnim_8412148
+ sAffineAnim_PokeblockCase_ThrowFromHorizontal
};
-static const struct OamData sThrownPokeblockOamData =
+static const struct OamData sOamData_Pokeblock =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_DOUBLE,
@@ -473,46 +561,45 @@ static const struct OamData sThrownPokeblockOamData =
.affineParam = 0,
};
-static const union AnimCmd sThrownPokeblockSpriteAnim[] =
+static const union AnimCmd sAnim_Pokeblock[] =
{
ANIMCMD_FRAME(0, 0),
ANIMCMD_END
};
-static const union AnimCmd *const sThrownPokeblockAnimTable[] =
+static const union AnimCmd *const sAnims_Pokeblock[] =
{
- sThrownPokeblockSpriteAnim,
+ sAnim_Pokeblock,
};
-static const union AffineAnimCmd sSpriteAffineAnim_84121C0[] =
+static const union AffineAnimCmd sAffineAnim_Pokeblock[] =
{
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(-8, -8, 0, 1),
AFFINEANIMCMD_JUMP(1)
};
-static const union AffineAnimCmd *const sThrownPokeblockAffineAnimTable[] =
+static const union AffineAnimCmd *const sAffineAnims_Pokeblock[] =
{
- sSpriteAffineAnim_84121C0
+ sAffineAnim_Pokeblock
};
-static const struct CompressedSpriteSheet sPokeblock_SpriteSheet =
+static const struct CompressedSpriteSheet sSpriteSheet_Pokeblock =
{
- gPokeblock_Gfx, 0x20, GFX_TAG_POKEBLOCK
+ gPokeblock_Gfx, 0x20, TAG_POKEBLOCK
};
-static const struct SpriteTemplate sThrownPokeblockSpriteTemplate =
+static const struct SpriteTemplate sSpriteTemplate_Pokeblock =
{
- .tileTag = GFX_TAG_POKEBLOCK,
- .paletteTag = GFX_TAG_POKEBLOCK,
- .oam = &sThrownPokeblockOamData,
- .anims = sThrownPokeblockAnimTable,
+ .tileTag = TAG_POKEBLOCK,
+ .paletteTag = TAG_POKEBLOCK,
+ .oam = &sOamData_Pokeblock,
+ .anims = sAnims_Pokeblock,
.images = NULL,
- .affineAnims = sThrownPokeblockAffineAnimTable,
+ .affineAnims = sAffineAnims_Pokeblock,
.callback = SpriteCB_ThrownPokeblock
};
-// code
static void CB2_PokeblockFeed(void)
{
RunTasks();
@@ -529,7 +616,7 @@ static void VBlankCB_PokeblockFeed(void)
TransferPlttBuffer();
}
-static bool8 TransitionToPokeblockFeedScene(void)
+static bool8 LoadPokeblockFeedScene(void)
{
switch (gMain.state)
{
@@ -541,7 +628,7 @@ static bool8 TransitionToPokeblockFeedScene(void)
break;
case 1:
ResetPaletteFade();
- gPaletteFade.bufferTransferDisabled = 1;
+ gPaletteFade.bufferTransferDisabled = TRUE;
gMain.state++;
break;
case 2:
@@ -566,9 +653,7 @@ static bool8 TransitionToPokeblockFeedScene(void)
break;
case 7:
if (LoadMonAndSceneGfx(&gPlayerParty[gPokeblockMonId]))
- {
gMain.state++;
- }
break;
case 8:
sPokeblockFeed->pokeblockCaseSpriteId = CreatePokeblockCaseSpriteForFeeding();
@@ -587,12 +672,12 @@ static bool8 TransitionToPokeblockFeedScene(void)
gMain.state++;
break;
case 12:
- BlendPalettes(PALETTES_ALL, 0x10, 0);
+ BlendPalettes(PALETTES_ALL, 16, 0);
gMain.state++;
break;
case 13:
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK);
- gPaletteFade.bufferTransferDisabled = 0;
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK);
+ gPaletteFade.bufferTransferDisabled = FALSE;
gMain.state++;
break;
default:
@@ -603,13 +688,13 @@ static bool8 TransitionToPokeblockFeedScene(void)
return FALSE;
}
-void CB2_PreparePokeblockFeedScene(void)
+void PreparePokeblockFeedScene(void)
{
while (1)
{
if (MenuHelpers_CallLinkSomething() == TRUE)
break;
- if (TransitionToPokeblockFeedScene() == TRUE)
+ if (LoadPokeblockFeedScene() == TRUE)
break;
if (MenuHelpers_LinkSomething() == TRUE)
break;
@@ -643,12 +728,14 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon)
switch (sPokeblockFeed->loadGfxState)
{
case 0:
+ // Load mon gfx
species = GetMonData(mon, MON_DATA_SPECIES2);
personality = GetMonData(mon, MON_DATA_PERSONALITY);
HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[1], species, personality);
sPokeblockFeed->loadGfxState++;
break;
case 1:
+ // Load mon palette
species = GetMonData(mon, MON_DATA_SPECIES2);
personality = GetMonData(mon, MON_DATA_PERSONALITY);
trainerId = GetMonData(mon, MON_DATA_OT_ID);
@@ -667,7 +754,7 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon)
sPokeblockFeed->loadGfxState++;
break;
case 4:
- LoadCompressedSpriteSheet(&sPokeblock_SpriteSheet);
+ LoadCompressedSpriteSheet(&sSpriteSheet_Pokeblock);
sPokeblockFeed->loadGfxState++;
break;
case 5:
@@ -683,7 +770,7 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon)
case 7:
if (FreeTempTileDataBuffersIfPossible() != TRUE)
{
- LZDecompressWram(gUnknown_08D9BA44, sPokeblockFeed->tilemapBuffer);
+ LZDecompressWram(gPokeblockFeedBg_Tilemap, sPokeblockFeed->tilemapBuffer);
sPokeblockFeed->loadGfxState++;
}
break;
@@ -711,63 +798,68 @@ static void SetPokeblockSpritePal(u8 pokeblockCaseId)
{
u8 colorId = GetPokeblockData(&gSaveBlock1Ptr->pokeblocks[pokeblockCaseId], PBLOCK_COLOR);
sPokeblockSpritePal.data = sPokeblocksPals[colorId - 1];
- sPokeblockSpritePal.tag = GFX_TAG_POKEBLOCK;
+ sPokeblockSpritePal.tag = TAG_POKEBLOCK;
}
// defines for task data fields
-#define tFrames data[0]
-#define tData1 data[1]
+#define tState data[0]
+#define tHorizontalThrow data[1]
+
+#define STATE_START_THROW 255 // If the length of the Pokémon's animation exceeds 255 the throw may happen twice
+#define STATE_SPAWN_PBLOCK (STATE_START_THROW + 14)
+#define STATE_START_JUMP (STATE_SPAWN_PBLOCK + 12)
+#define STATE_PRINT_MSG (STATE_START_JUMP + 16)
static void Task_HandlePokeblockFeed(u8 taskId)
{
if (!gPaletteFade.active)
{
- switch (gTasks[taskId].tFrames)
+ switch (gTasks[taskId].tState)
{
case 0:
- sPokeblockFeed->field_1050 = 0;
- sPokeblockFeed->field_1058 = 0;
- sub_817A5CC();
+ sPokeblockFeed->animRunState = 0;
+ sPokeblockFeed->timer = 0;
+ CalculateMonAnimLength();
break;
- case 255:
- DoPokeblockCaseThrowEffect(sPokeblockFeed->pokeblockCaseSpriteId, gTasks[taskId].tData1);
+ case STATE_START_THROW:
+ DoPokeblockCaseThrowEffect(sPokeblockFeed->pokeblockCaseSpriteId, gTasks[taskId].tHorizontalThrow);
break;
- case 269:
+ case STATE_SPAWN_PBLOCK:
sPokeblockFeed->pokeblockSpriteId = CreatePokeblockSprite();
break;
- case 281:
- PrepareMonToMoveToPokeblock(sPokeblockFeed->monSpriteId);
+ case STATE_START_JUMP:
+ StartMonJumpForPokeblock(sPokeblockFeed->monSpriteId);
break;
- case 297:
- gTasks[taskId].func = Task_HandleMonAtePokeblock;
+ case STATE_PRINT_MSG:
+ gTasks[taskId].func = Task_PrintAtePokeblockMessage;
return;
}
- if (sPokeblockFeed->field_1058 < sPokeblockFeed->field_1056)
- sub_817A634();
- else if (sPokeblockFeed->field_1058 == sPokeblockFeed->field_1056)
- gTasks[taskId].tFrames = 254;
+ if (sPokeblockFeed->timer < sPokeblockFeed->monAnimLength)
+ UpdateMonAnim();
+ else if (sPokeblockFeed->timer == sPokeblockFeed->monAnimLength)
+ gTasks[taskId].tState = STATE_START_THROW - 1;
- sPokeblockFeed->field_1058++;
- gTasks[taskId].tFrames++;
+ sPokeblockFeed->timer++;
+ gTasks[taskId].tState++;
}
}
static void LaunchPokeblockFeedTask(void)
{
u8 taskId = CreateTask(Task_HandlePokeblockFeed, 0);
- gTasks[taskId].tFrames = 0;
- gTasks[taskId].tData1 = 1;
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tHorizontalThrow = TRUE;
}
-static void Task_WaitForAtePokeblockText(u8 taskId)
+static void Task_WaitForAtePokeblockMessage(u8 taskId)
{
if (RunTextPrintersRetIsActive(0) != TRUE)
- gTasks[taskId].func = Task_PaletteFadeToReturn;
+ gTasks[taskId].func = Task_FadeOutPokeblockFeed;
}
-static void Task_HandleMonAtePokeblock(u8 taskId)
+static void Task_PrintAtePokeblockMessage(u8 taskId)
{
struct Pokemon *mon = &gPlayerParty[gPokeblockMonId];
struct Pokeblock *pokeblock = &gSaveBlock1Ptr->pokeblocks[gSpecialVar_ItemId];
@@ -783,12 +875,12 @@ static void Task_HandleMonAtePokeblock(u8 taskId)
else
StringExpandPlaceholders(gStringVar4, gText_Var1DisdainfullyAteVar2);
- gTextFlags.canABSpeedUpPrint = 1;
+ gTextFlags.canABSpeedUpPrint = TRUE;
AddTextPrinterParameterized2(0, 1, gStringVar4, GetPlayerTextSpeedDelay(), NULL, 2, 1, 3);
- gTasks[taskId].func = Task_WaitForAtePokeblockText;
+ gTasks[taskId].func = Task_WaitForAtePokeblockMessage;
}
-static void Task_ReturnAfterPaletteFade(u8 taskId)
+static void Task_ExitPokeblockFeed(u8 taskId)
{
if (!gPaletteFade.active)
{
@@ -803,30 +895,29 @@ static void Task_ReturnAfterPaletteFade(u8 taskId)
}
}
-static void Task_PaletteFadeToReturn(u8 taskId)
+static void Task_FadeOutPokeblockFeed(u8 taskId)
{
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK);
- gTasks[taskId].func = Task_ReturnAfterPaletteFade;
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
+ gTasks[taskId].func = Task_ExitPokeblockFeed;
}
-#undef tFrames
-#undef tData1
-
-// defines for mon sprite data fields
+#undef tState
+#undef tHorizontalThrow
-#define tDelta data[0]
-#define tDeltaMod data[1]
-#define tSpecies data[2]
+// Sprite data for Pokéblock and Pokémon
+#define sSpeed data[0]
+#define sAccel data[1]
+#define sSpecies data[2]
static u8 CreateMonSprite(struct Pokemon* mon)
{
u16 species = GetMonData(mon, MON_DATA_SPECIES2);
- u8 spriteId = CreateSprite(&gMultiuseSpriteTemplate, 48, 80, 2);
+ u8 spriteId = CreateSprite(&gMultiuseSpriteTemplate, MON_X, MON_Y, 2);
sPokeblockFeed->species = species;
sPokeblockFeed->monSpriteId_ = spriteId;
sPokeblockFeed->nature = GetNature(mon);
- gSprites[spriteId].tSpecies = species;
+ gSprites[spriteId].sSpecies = species;
gSprites[spriteId].callback = SpriteCallbackDummy;
sPokeblockFeed->noMonFlip = TRUE;
@@ -841,189 +932,191 @@ static u8 CreateMonSprite(struct Pokemon* mon)
return spriteId;
}
-static void PrepareMonToMoveToPokeblock(u8 spriteId)
+static void StartMonJumpForPokeblock(u8 spriteId)
{
- gSprites[spriteId].pos1.x = 48;
- gSprites[spriteId].pos1.y = 80;
- gSprites[spriteId].tDelta = -8;
- gSprites[spriteId].tDeltaMod = 1;
- gSprites[spriteId].callback = sub_817A468;
+ gSprites[spriteId].x = MON_X;
+ gSprites[spriteId].y = MON_Y;
+ gSprites[spriteId].sSpeed = -8;
+ gSprites[spriteId].sAccel = 1;
+ gSprites[spriteId].callback = SpriteCB_MonJumpForPokeblock;
}
-static void sub_817A468(struct Sprite* sprite)
+static void SpriteCB_MonJumpForPokeblock(struct Sprite* sprite)
{
- sprite->pos1.x += 4;
- sprite->pos1.y += sprite->tDelta;
- sprite->tDelta += sprite->tDeltaMod;
+ sprite->x += 4;
+ sprite->y += sprite->sSpeed;
+ sprite->sSpeed += sprite->sAccel;
- if (sprite->tDelta == 0)
- PlayCry1(sprite->tSpecies, 0);
- if (sprite->tDelta == 9)
+ // Play cry at jump peak
+ if (sprite->sSpeed == 0)
+ PlayCry1(sprite->sSpecies, 0);
+
+ if (sprite->sSpeed == 9)
sprite->callback = SpriteCallbackDummy;
}
-#undef tDelta
-#undef tDeltaMod
-#undef tSpecies
-
static u8 CreatePokeblockCaseSpriteForFeeding(void)
{
u8 spriteId = CreatePokeblockCaseSprite(188, 100, 2);
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
- gSprites[spriteId].affineAnims = sSpriteAffineAnimTable_85F0664;
+ gSprites[spriteId].affineAnims = sAffineAnims_PokeblockCase_Still;
gSprites[spriteId].callback = SpriteCallbackDummy;
InitSpriteAffineAnim(&gSprites[spriteId]);
return spriteId;
}
-static void DoPokeblockCaseThrowEffect(u8 spriteId, bool8 a1)
+static void DoPokeblockCaseThrowEffect(u8 spriteId, bool8 horizontalThrow)
{
FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
- if (!a1)
- gSprites[spriteId].affineAnims = sSpriteAffineAnimTable_85F0668;
+ if (!horizontalThrow)
+ gSprites[spriteId].affineAnims = sAffineAnims_PokeblockCase_ThrowFromVertical; // Never used, horizontalThrow always TRUE
else
- gSprites[spriteId].affineAnims = sSpriteAffineAnimTable_85F066C;
+ gSprites[spriteId].affineAnims = sAffineAnims_PokeblockCase_ThrowFromHorizontal;
InitSpriteAffineAnim(&gSprites[spriteId]);
}
-// defines for the pokeblock sprite data fields
-#define tDelta data[0]
-#define tDeltaMod data[1]
-
static u8 CreatePokeblockSprite(void)
{
- u8 spriteId = CreateSprite(&sThrownPokeblockSpriteTemplate, 174, 84, 1);
- gSprites[spriteId].tDelta = -12;
- gSprites[spriteId].tDeltaMod = 1;
+ u8 spriteId = CreateSprite(&sSpriteTemplate_Pokeblock, 174, 84, 1);
+ gSprites[spriteId].sSpeed = -12;
+ gSprites[spriteId].sAccel = 1;
return spriteId;
}
static void SpriteCB_ThrownPokeblock(struct Sprite* sprite)
{
- sprite->pos1.x -= 4;
- sprite->pos1.y += sprite->tDelta;
- sprite->tDelta += sprite->tDeltaMod;
- if (sprite->tDelta == 10)
+ sprite->x -= 4;
+ sprite->y += sprite->sSpeed;
+ sprite->sSpeed += sprite->sAccel;
+ if (sprite->sSpeed == 10)
DestroySprite(sprite);
}
-#undef tDelta
-#undef tDeltaMod
-
-static void sub_817A5CC(void)
+static void CalculateMonAnimLength(void)
{
u8 animId, i;
- struct PokeblockFeedStruct *pokeblockFeed;
+ struct PokeblockFeed *pokeblockFeed;
pokeblockFeed = sPokeblockFeed;
- pokeblockFeed->field_1056 = 1;
+ pokeblockFeed->monAnimLength = 1;
animId = sNatureToMonPokeblockAnim[pokeblockFeed->nature][0];
+
+ // Add up the time each stage of the animation will take
for (i = 0; i < 8; i++, animId++)
{
- pokeblockFeed->field_1056 += sMonPokeblockAnims[animId][4];
- if (sMonPokeblockAnims[animId][9] == 1)
+ pokeblockFeed->monAnimLength += sMonPokeblockAnims[animId][ANIMDATA_TIME];
+ if (sMonPokeblockAnims[animId][ANIMDATA_IS_LAST] == TRUE)
break;
}
}
-static void sub_817A634(void)
+static void UpdateMonAnim(void)
{
- struct PokeblockFeedStruct *pokeblockFeed = sPokeblockFeed;
+ struct PokeblockFeed *pokeblockFeed = sPokeblockFeed;
- switch (pokeblockFeed->field_1050)
+ switch (pokeblockFeed->animRunState)
{
case 0:
pokeblockFeed->animId = sNatureToMonPokeblockAnim[pokeblockFeed->nature][0];
pokeblockFeed->monSpritePtr = &gSprites[pokeblockFeed->monSpriteId_];
pokeblockFeed->savedMonSprite = *pokeblockFeed->monSpritePtr;
- pokeblockFeed->field_1050 = 10;
+ pokeblockFeed->animRunState = 10;
break;
case 1 ... 9:
break;
case 10:
- sub_817A91C();
- if (sNatureToMonPokeblockAnim[pokeblockFeed->nature][1] != 0)
+ InitMonAnimStage();
+ if (sNatureToMonPokeblockAnim[pokeblockFeed->nature][1] != AFFINE_NONE)
{
+ // Initialize affine anim
pokeblockFeed->monSpritePtr->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
pokeblockFeed->monSpritePtr->oam.matrixNum = 0;
- pokeblockFeed->monSpritePtr->affineAnims = sSpriteAffineAnimTable_85F04FC;
+ pokeblockFeed->monSpritePtr->affineAnims = sAffineAnims_Mon;
InitSpriteAffineAnim(pokeblockFeed->monSpritePtr);
}
- pokeblockFeed->field_1050 = 50;
+ pokeblockFeed->animRunState = 50;
case 50:
- if (sNatureToMonPokeblockAnim[pokeblockFeed->nature][1] != 0)
+ if (sNatureToMonPokeblockAnim[pokeblockFeed->nature][1] != AFFINE_NONE)
{
+ // Start affine anim
if (!pokeblockFeed->noMonFlip) // double negation, so mon's sprite is flipped
- StartSpriteAffineAnim(pokeblockFeed->monSpritePtr, sNatureToMonPokeblockAnim[pokeblockFeed->nature][1] + 10);
+ StartSpriteAffineAnim(pokeblockFeed->monSpritePtr, sNatureToMonPokeblockAnim[pokeblockFeed->nature][1] + NUM_MON_AFFINES);
else
StartSpriteAffineAnim(pokeblockFeed->monSpritePtr, sNatureToMonPokeblockAnim[pokeblockFeed->nature][1]);
}
- pokeblockFeed->field_1050 = 60;
+ pokeblockFeed->animRunState = 60;
break;
case 60:
- if (sub_817A9E4() == TRUE)
+ if (DoMonAnimStep() == TRUE)
{
- if (pokeblockFeed->field_1060[9] == 0)
+ if (!pokeblockFeed->animData[ANIMDATA_IS_LAST])
{
+ // Continue to next stage of animation
pokeblockFeed->animId++;
- sub_817A91C();
- pokeblockFeed->field_1050 = 60;
+ InitMonAnimStage();
+ pokeblockFeed->animRunState = 60;
}
else
{
+ // End animation
FreeOamMatrix(pokeblockFeed->monSpritePtr->oam.matrixNum);
- pokeblockFeed->field_1050 = 70;
+ pokeblockFeed->animRunState = 70;
}
}
break;
case 70:
FreeMonSpriteOamMatrix();
pokeblockFeed->animId = 0;
- pokeblockFeed->field_1050 = 0;
+ pokeblockFeed->animRunState = 0;
break;
case 71 ... 90:
break;
}
}
-static bool8 sub_817A91C(void)
+static bool8 InitMonAnimStage(void)
{
- struct PokeblockFeedStruct *pokeblockFeed = sPokeblockFeed;
+ struct PokeblockFeed *pokeblockFeed = sPokeblockFeed;
u8 i;
- for (i = 0; i < 10; i++)
- pokeblockFeed->field_1060[i] = sMonPokeblockAnims[pokeblockFeed->animId][i];
+ for (i = 0; i < NUM_ANIMDATA; i++)
+ pokeblockFeed->animData[i] = sMonPokeblockAnims[pokeblockFeed->animId][i];
- if (pokeblockFeed->field_1060[4] == 0)
+ if (pokeblockFeed->animData[ANIMDATA_TIME] == 0)
{
return TRUE;
}
else
{
- pokeblockFeed->field_1060[10] = Sin(pokeblockFeed->field_1060[0], pokeblockFeed->field_1060[2]);
- pokeblockFeed->field_1060[11] = Cos(pokeblockFeed->field_1060[0], pokeblockFeed->field_1060[3]);
- pokeblockFeed->field_1060[12] = pokeblockFeed->field_1060[4];
- pokeblockFeed->field_1060[13] = pokeblockFeed->monSpritePtr->pos2.x;
- pokeblockFeed->field_1060[14] = pokeblockFeed->monSpritePtr->pos2.y;
- sub_817AB68();
- pokeblockFeed->field_1060[4] = pokeblockFeed->field_1060[12];
- sub_817AA54();
- pokeblockFeed->field_1060[4] = pokeblockFeed->field_1060[12];
+ pokeblockFeed->monInitX = Sin(pokeblockFeed->animData[ANIMDATA_ROT_IDX], pokeblockFeed->animData[ANIMDATA_SIN_AMPLITUDE]);
+ pokeblockFeed->monInitY = Cos(pokeblockFeed->animData[ANIMDATA_ROT_IDX], pokeblockFeed->animData[ANIMDATA_COS_AMPLITUDE]);
+ pokeblockFeed->maxAnimStageTime = pokeblockFeed->animData[ANIMDATA_TIME];
+ pokeblockFeed->monX = pokeblockFeed->monSpritePtr->x2;
+ pokeblockFeed->monY = pokeblockFeed->monSpritePtr->y2;
+
+ // Calculate the positions to move to during the animation
+ // The time is counted down during this, so reset it afterwards
+ CalculateMonAnimMovement();
+ pokeblockFeed->animData[ANIMDATA_TIME] = pokeblockFeed->maxAnimStageTime;
+ CalculateMonAnimMovementEnd();
+ pokeblockFeed->animData[ANIMDATA_TIME] = pokeblockFeed->maxAnimStageTime; // Redundant
return FALSE;
}
}
-static bool8 sub_817A9E4(void)
+static bool8 DoMonAnimStep(void)
{
- u16 var = sPokeblockFeed->field_1060[12] - sPokeblockFeed->field_1060[4];
-
- sPokeblockFeed->monSpritePtr->pos2.x = sPokeblockFeed->field_850[var];
- sPokeblockFeed->monSpritePtr->pos2.y = sPokeblockFeed->field_C50[var];
-
- if (--sPokeblockFeed->field_1060[4] == 0)
+ // Update mon's position
+ u16 time = sPokeblockFeed->maxAnimStageTime - sPokeblockFeed->animData[ANIMDATA_TIME];
+ sPokeblockFeed->monSpritePtr->x2 = sPokeblockFeed->monAnimX[time];
+ sPokeblockFeed->monSpritePtr->y2 = sPokeblockFeed->monAnimY[time];
+
+ // Count down time remaining in this stage
+ // Return TRUE if this stage is complete
+ if (--sPokeblockFeed->animData[ANIMDATA_TIME] == 0)
return TRUE;
else
return FALSE;
@@ -1035,66 +1128,70 @@ static bool8 FreeMonSpriteOamMatrix(void)
return FALSE;
}
-static void sub_817AA54(void)
+static void CalculateMonAnimMovementEnd(void)
{
- struct PokeblockFeedStruct *pokeblockFeed = sPokeblockFeed;
+ struct PokeblockFeed *pokeblockFeed = sPokeblockFeed;
u16 i;
- u16 r8 = pokeblockFeed->field_1060[8];
- u16 r7 = pokeblockFeed->field_1060[12] - r8;
- s16 var3 = pokeblockFeed->field_1060[13] + pokeblockFeed->field_1060[6];
- s16 r9 = pokeblockFeed->field_1060[14] + pokeblockFeed->field_1060[7];
+ u16 approachTime = pokeblockFeed->animData[ANIMDATA_APPR_TIME];
+ u16 time = pokeblockFeed->maxAnimStageTime - approachTime;
+ s16 x = pokeblockFeed->monX + pokeblockFeed->animData[ANIMDATA_TARGET_X];
+ s16 y = pokeblockFeed->monY + pokeblockFeed->animData[ANIMDATA_TARGET_Y];
- for (i = 0; i < r7 - 1; i++)
+ for (i = 0; i < time - 1; i++)
{
- s16 r1 = pokeblockFeed->field_850[r8 + i] - (var3);
- s16 r4 = pokeblockFeed->field_C50[r8 + i] - r9;
+ s16 xOffset = pokeblockFeed->monAnimX[approachTime + i] - x;
+ s16 yOffset = pokeblockFeed->monAnimY[approachTime + i] - y;
- pokeblockFeed->field_850[r8 + i] -= r1 * (i + 1) / r7;
- pokeblockFeed->field_C50[r8 + i] -= r4 * (i + 1) / r7;
+ pokeblockFeed->monAnimX[approachTime + i] -= xOffset * (i + 1) / time;
+ pokeblockFeed->monAnimY[approachTime + i] -= yOffset * (i + 1) / time;
}
- pokeblockFeed->field_850[(r8 + r7) - 1] = var3;
- pokeblockFeed->field_C50[(r8 + r7) - 1] = r9;
+ pokeblockFeed->monAnimX[approachTime + time - 1] = x;
+ pokeblockFeed->monAnimY[approachTime + time - 1] = y;
}
-static void sub_817AB68(void)
+static void CalculateMonAnimMovement(void)
{
- struct PokeblockFeedStruct *pokeblockFeed = sPokeblockFeed;
- bool8 var_24 = FALSE;
- s16 r8 = pokeblockFeed->field_1060[13] - pokeblockFeed->field_1060[10];
- s16 r7 = pokeblockFeed->field_1060[14] - pokeblockFeed->field_1060[11];
+ struct PokeblockFeed *pokeblockFeed = sPokeblockFeed;
+ bool8 negative = FALSE;
+ s16 x = pokeblockFeed->monX - pokeblockFeed->monInitX;
+ s16 y = pokeblockFeed->monY - pokeblockFeed->monInitY;
while (1)
{
- u16 r5;
- u16 r4;
- u16 var;
+ u16 amplitude;
+ u16 time;
+ u16 acceleration;
- var = abs(pokeblockFeed->field_1060[5]);
- r5 = var + pokeblockFeed->field_1060[3];
- pokeblockFeed->field_1060[3] = r5;
+ acceleration = abs(pokeblockFeed->animData[ANIMDATA_ROT_ACCEL]);
+ amplitude = acceleration + pokeblockFeed->animData[ANIMDATA_COS_AMPLITUDE];
+ pokeblockFeed->animData[ANIMDATA_COS_AMPLITUDE] = amplitude;
- if (pokeblockFeed->field_1060[2] < 0)
- var_24 = TRUE;
+ if (pokeblockFeed->animData[ANIMDATA_SIN_AMPLITUDE] < 0)
+ negative = TRUE;
- r4 = pokeblockFeed->field_1060[12] - pokeblockFeed->field_1060[4];
+ time = pokeblockFeed->maxAnimStageTime - pokeblockFeed->animData[ANIMDATA_TIME];
- if (pokeblockFeed->field_1060[4] == 0)
+ if (pokeblockFeed->animData[ANIMDATA_TIME] == 0)
break;
- if (!var_24)
+ if (!negative)
{
- pokeblockFeed->field_850[r4] = Sin(pokeblockFeed->field_1060[0], pokeblockFeed->field_1060[2] + r5 / 0x100) + r8;
- pokeblockFeed->field_C50[r4] = Cos(pokeblockFeed->field_1060[0], pokeblockFeed->field_1060[3] + r5 / 0x100) + r7;
+ pokeblockFeed->monAnimX[time] = Sin(pokeblockFeed->animData[ANIMDATA_ROT_IDX],
+ pokeblockFeed->animData[ANIMDATA_SIN_AMPLITUDE] + amplitude / 0x100) + x;
+ pokeblockFeed->monAnimY[time] = Cos(pokeblockFeed->animData[ANIMDATA_ROT_IDX],
+ pokeblockFeed->animData[ANIMDATA_COS_AMPLITUDE] + amplitude / 0x100) + y;
}
else
{
- pokeblockFeed->field_850[r4] = Sin(pokeblockFeed->field_1060[0], pokeblockFeed->field_1060[2] - r5 / 0x100) + r8;
- pokeblockFeed->field_C50[r4] = Cos(pokeblockFeed->field_1060[0], pokeblockFeed->field_1060[3] - r5 / 0x100) + r7;
+ pokeblockFeed->monAnimX[time] = Sin(pokeblockFeed->animData[ANIMDATA_ROT_IDX],
+ pokeblockFeed->animData[ANIMDATA_SIN_AMPLITUDE] - amplitude / 0x100) + x;
+ pokeblockFeed->monAnimY[time] = Cos(pokeblockFeed->animData[ANIMDATA_ROT_IDX],
+ pokeblockFeed->animData[ANIMDATA_COS_AMPLITUDE] - amplitude / 0x100) + y;
}
- pokeblockFeed->field_1060[0] += pokeblockFeed->field_1060[1];
- pokeblockFeed->field_1060[0] &= 0xFF;
- pokeblockFeed->field_1060[4]--;
+ pokeblockFeed->animData[ANIMDATA_ROT_IDX] += pokeblockFeed->animData[ANIMDATA_ROT_SPEED];
+ pokeblockFeed->animData[ANIMDATA_ROT_IDX] &= 0xFF;
+ pokeblockFeed->animData[ANIMDATA_TIME]--;
}
}
diff --git a/src/pokedex.c b/src/pokedex.c
index 558c27083..cc469b32f 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -305,7 +305,7 @@ static void ClearSearchParameterBoxText(void);
static const struct OamData sOamData_ScrollBar =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -322,7 +322,7 @@ static const struct OamData sOamData_ScrollBar =
static const struct OamData sOamData_ScrollArrow =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -339,7 +339,7 @@ static const struct OamData sOamData_ScrollArrow =
static const struct OamData sOamData_InterfaceText =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -356,7 +356,7 @@ static const struct OamData sOamData_InterfaceText =
static const struct OamData sOamData_RotatingPokeBall =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_WINDOW,
.mosaic = 0,
@@ -373,7 +373,7 @@ static const struct OamData sOamData_RotatingPokeBall =
static const struct OamData sOamData_SeenOwnText =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -390,7 +390,7 @@ static const struct OamData sOamData_SeenOwnText =
static const struct OamData sOamData_Dex8x16 =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -1785,7 +1785,7 @@ static void Task_HandlePokedexStartMenuInput(u8 taskId)
static void Task_OpenInfoScreenAfterMonMovement(u8 taskId)
{
- if (gSprites[sPokedexView->selectedMonSpriteId].pos1.x == 48 && gSprites[sPokedexView->selectedMonSpriteId].pos1.y == 56)
+ if (gSprites[sPokedexView->selectedMonSpriteId].x == 48 && gSprites[sPokedexView->selectedMonSpriteId].y == 56)
{
sPokedexView->currentPageBackup = sPokedexView->currentPage;
gTasks[taskId].tTaskId = LoadInfoScreen(&sPokedexView->pokedexList[sPokedexView->selectedPokemon], sPokedexView->selectedMonSpriteId);
@@ -1987,7 +1987,7 @@ static void Task_HandleSearchResultsStartMenuInput(u8 taskId)
static void Task_OpenSearchResultsInfoScreenAfterMonMovement(u8 taskId)
{
- if (gSprites[sPokedexView->selectedMonSpriteId].pos1.x == 48 && gSprites[sPokedexView->selectedMonSpriteId].pos1.y == 56)
+ if (gSprites[sPokedexView->selectedMonSpriteId].x == 48 && gSprites[sPokedexView->selectedMonSpriteId].y == 56)
{
sPokedexView->currentPageBackup = sPokedexView->currentPage;
gTasks[taskId].tTaskId = LoadInfoScreen(&sPokedexView->pokedexList[sPokedexView->selectedPokemon], sPokedexView->selectedMonSpriteId);
@@ -2109,8 +2109,8 @@ static bool8 LoadPokedexListPage(u8 page)
gMain.state++;
break;
case 5:
- SetGpuReg(REG_OFFSET_WININ, 0x3F3F);
- SetGpuReg(REG_OFFSET_WINOUT, 0x1D3F);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_ALL | WININ_WIN1_ALL);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_ALL | WINOUT_WINOBJ_BG0 | WINOUT_WINOBJ_BG2 | WINOUT_WINOBJ_BG3 | WINOUT_WINOBJ_OBJ);
SetGpuReg(REG_OFFSET_WIN0H, 0);
SetGpuReg(REG_OFFSET_WIN0V, 0);
SetGpuReg(REG_OFFSET_WIN1H, 0);
@@ -2318,7 +2318,7 @@ static void PrintMonDexNumAndName(u8 windowId, u8 fontId, const u8* str, u8 left
color[0] = TEXT_COLOR_TRANSPARENT;
color[1] = TEXT_DYNAMIC_COLOR_6;
- color[2] = TEXT_COLOR_LIGHT_GREY;
+ color[2] = TEXT_COLOR_LIGHT_GRAY;
AddTextPrinterParameterized4(windowId, fontId, left * 8, (top * 8) + 1, 0, 0, color, -1, str);
}
@@ -2652,7 +2652,7 @@ static void UpdateSelectedMonSpriteId(void)
{
u16 spriteId = sPokedexView->monSpriteIds[i];
- if (gSprites[spriteId].pos2.x == 0 && gSprites[spriteId].pos2.y == 0 && spriteId != 0xFFFF)
+ if (gSprites[spriteId].x2 == 0 && gSprites[spriteId].y2 == 0 && spriteId != 0xFFFF)
sPokedexView->selectedMonSpriteId = spriteId;
}
}
@@ -2768,7 +2768,7 @@ static void CreateInterfaceSprites(u8 page)
// Scroll arrows
spriteId = CreateSprite(&sScrollArrowSpriteTemplate, 184, 4, 0);
gSprites[spriteId].sIsDownArrow = FALSE;
- spriteId = CreateSprite(&sScrollArrowSpriteTemplate, 184, 156, 0);
+ spriteId = CreateSprite(&sScrollArrowSpriteTemplate, 184, DISPLAY_HEIGHT - 4, 0);
gSprites[spriteId].sIsDownArrow = TRUE;
gSprites[spriteId].vFlip = TRUE;
@@ -2779,20 +2779,20 @@ static void CreateInterfaceSprites(u8 page)
spriteId = CreateSprite(&sInterfaceTextSpriteTemplate, 48, 120, 0);
StartSpriteAnim(&gSprites[spriteId], 3);
// Select button
- spriteId = CreateSprite(&sInterfaceTextSpriteTemplate, 16, 144, 0);
+ spriteId = CreateSprite(&sInterfaceTextSpriteTemplate, 16, DISPLAY_HEIGHT - 16, 0);
StartSpriteAnim(&gSprites[spriteId], 2);
gSprites[spriteId].data[2] = 0x80;
// Search text
- spriteId = CreateSprite(&sInterfaceTextSpriteTemplate, 48, 144, 0);
+ spriteId = CreateSprite(&sInterfaceTextSpriteTemplate, 48, DISPLAY_HEIGHT - 16, 0);
StartSpriteAnim(&gSprites[spriteId], 1);
- spriteId = CreateSprite(&sRotatingPokeBallSpriteTemplate, 0, 80, 2);
+ spriteId = CreateSprite(&sRotatingPokeBallSpriteTemplate, 0, DISPLAY_HEIGHT / 2, 2);
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 30;
gSprites[spriteId].data[0] = 30;
gSprites[spriteId].data[1] = 0;
- spriteId = CreateSprite(&sRotatingPokeBallSpriteTemplate, 0, 80, 2);
+ spriteId = CreateSprite(&sRotatingPokeBallSpriteTemplate, 0, DISPLAY_HEIGHT / 2, 2);
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 31;
gSprites[spriteId].data[0] = 31;
@@ -3000,19 +3000,19 @@ void SpriteCB_MoveMonForInfoScreen(struct Sprite *sprite)
{
sprite->oam.priority = 0;
sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
- if (sprite->pos1.x != 48 || sprite->pos1.y != 56)
+ sprite->x2 = 0;
+ sprite->y2 = 0;
+ if (sprite->x != 48 || sprite->y != 56)
{
- if (sprite->pos1.x > 48)
- sprite->pos1.x--;
- if (sprite->pos1.x < 48)
- sprite->pos1.x++;
+ if (sprite->x > 48)
+ sprite->x--;
+ if (sprite->x < 48)
+ sprite->x++;
- if (sprite->pos1.y > 56)
- sprite->pos1.y--;
- if (sprite->pos1.y < 56)
- sprite->pos1.y++;
+ if (sprite->y > 56)
+ sprite->y--;
+ if (sprite->y < 56)
+ sprite->y++;
}
else
{
@@ -3032,7 +3032,7 @@ static void SpriteCB_PokedexListMonSprite(struct Sprite *sprite)
else
{
u32 var;
- sprite->pos2.y = gSineTable[(u8)sprite->data[5]] * 76 / 256;
+ sprite->y2 = gSineTable[(u8)sprite->data[5]] * 76 / 256;
var = SAFE_DIV(0x10000, gSineTable[sprite->data[5] + 64]);
if (var > 0xFFFF)
var = 0xFFFF;
@@ -3062,7 +3062,7 @@ static void SpriteCB_Scrollbar(struct Sprite *sprite)
if (sPokedexView->currentPage != PAGE_MAIN && sPokedexView->currentPage != PAGE_SEARCH_RESULTS)
DestroySprite(sprite);
else
- sprite->pos2.y = sPokedexView->selectedPokemon * 120 / (sPokedexView->pokemonListCount - 1);
+ sprite->y2 = sPokedexView->selectedPokemon * 120 / (sPokedexView->pokemonListCount - 1);
}
static void SpriteCB_ScrollArrow(struct Sprite *sprite)
@@ -3091,7 +3091,7 @@ static void SpriteCB_ScrollArrow(struct Sprite *sprite)
sprite->invisible = FALSE;
r0 = sprite->data[2] - 128;
}
- sprite->pos2.y = gSineTable[r0] / 64;
+ sprite->y2 = gSineTable[r0] / 64;
sprite->data[2] = sprite->data[2] + 8;
if (sPokedexView->menuIsOpen == FALSE && sPokedexView->menuY == 0 && sprite->invisible == FALSE)
sprite->invisible = FALSE;
@@ -3126,8 +3126,8 @@ static void SpriteCB_RotatingPokeBall(struct Sprite *sprite)
val = sPokedexView->pokeBallRotation + (sprite->data[1] + 64);
r3 = gSineTable[val];
r0 = gSineTable[val + 64];
- sprite->pos2.x = r0 * 40 / 256;
- sprite->pos2.y = r3 * 40 / 256;
+ sprite->x2 = r0 * 40 / 256;
+ sprite->y2 = r3 * 40 / 256;
}
}
@@ -3144,8 +3144,8 @@ static void SpriteCB_DexListStartMenuCursor(struct Sprite *sprite)
if (sPokedexView->menuIsOpen && sPokedexView->menuY == r1)
{
sprite->invisible = FALSE;
- sprite->pos2.y = sPokedexView->menuCursorPos * 16;
- sprite->pos2.x = gSineTable[(u8)sprite->data[2]] / 64;
+ sprite->y2 = sPokedexView->menuCursorPos * 16;
+ sprite->x2 = gSineTable[(u8)sprite->data[2]] / 64;
sprite->data[2] += 8;
}
else
@@ -3160,7 +3160,7 @@ static void PrintInfoScreenText(const u8* str, u8 left, u8 top)
u8 color[3];
color[0] = TEXT_COLOR_TRANSPARENT;
color[1] = TEXT_DYNAMIC_COLOR_6;
- color[2] = TEXT_COLOR_LIGHT_GREY;
+ color[2] = TEXT_COLOR_LIGHT_GRAY;
AddTextPrinterParameterized4(0, 1, left, top, 0, 0, color, -1, str);
}
@@ -3755,7 +3755,7 @@ static void Task_LoadSizeScreen(u8 taskId)
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 1;
gSprites[spriteId].oam.priority = 0;
- gSprites[spriteId].pos2.y = gPokedexEntries[sPokedexListItem->dexNum].trainerOffset;
+ gSprites[spriteId].y2 = gPokedexEntries[sPokedexListItem->dexNum].trainerOffset;
SetOamMatrix(1, gPokedexEntries[sPokedexListItem->dexNum].trainerScale, 0, 0, gPokedexEntries[sPokedexListItem->dexNum].trainerScale);
LoadPalette(sSizeScreenSilhouette_Pal, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20);
gTasks[taskId].data[5] = spriteId;
@@ -3766,7 +3766,7 @@ static void Task_LoadSizeScreen(u8 taskId)
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 2;
gSprites[spriteId].oam.priority = 0;
- gSprites[spriteId].pos2.y = gPokedexEntries[sPokedexListItem->dexNum].pokemonOffset;
+ gSprites[spriteId].y2 = gPokedexEntries[sPokedexListItem->dexNum].pokemonOffset;
SetOamMatrix(2, gPokedexEntries[sPokedexListItem->dexNum].pokemonScale, 0, 0, gPokedexEntries[sPokedexListItem->dexNum].pokemonScale);
LoadPalette(sSizeScreenSilhouette_Pal, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20);
gTasks[taskId].tMonSpriteId = spriteId;
@@ -4054,15 +4054,15 @@ static void Task_ExitCaughtMonPage(u8 taskId)
static void SpriteCB_SlideCaughtMonToCenter(struct Sprite *sprite)
{
- if (sprite->pos1.x < 0x78)
- sprite->pos1.x += 2;
- if (sprite->pos1.x > 0x78)
- sprite->pos1.x -= 2;
+ if (sprite->x < 0x78)
+ sprite->x += 2;
+ if (sprite->x > 0x78)
+ sprite->x -= 2;
- if (sprite->pos1.y < 0x50)
- sprite->pos1.y += 1;
- if (sprite->pos1.y > 0x50)
- sprite->pos1.y -= 1;
+ if (sprite->y < 0x50)
+ sprite->y += 1;
+ if (sprite->y > 0x50)
+ sprite->y -= 1;
}
#undef tState
@@ -4457,7 +4457,7 @@ static void PrintInfoSubMenuText(u8 windowId, const u8 *str, u8 left, u8 top)
u8 color[3];
color[0] = TEXT_COLOR_TRANSPARENT;
color[1] = TEXT_DYNAMIC_COLOR_6;
- color[2] = TEXT_COLOR_LIGHT_GREY;
+ color[2] = TEXT_COLOR_LIGHT_GRAY;
AddTextPrinterParameterized4(windowId, 1, left, top, 0, 0, color, -1, str);
}
@@ -4766,7 +4766,7 @@ static void PrintSearchText(const u8 *str, u32 x, u32 y)
color[0] = TEXT_COLOR_TRANSPARENT;
color[1] = TEXT_DYNAMIC_COLOR_6;
- color[2] = TEXT_COLOR_DARK_GREY;
+ color[2] = TEXT_COLOR_DARK_GRAY;
AddTextPrinterParameterized4(0, 1, x, y, 0, 0, color, -1, str);
}
@@ -5570,7 +5570,7 @@ static void SpriteCB_SearchParameterScrollArrow(struct Sprite *sprite)
sprite->invisible = FALSE;
}
val = sprite->data[2] + sprite->sIsDownArrow * 128;
- sprite->pos2.y = gSineTable[val] / 128;
+ sprite->y2 = gSineTable[val] / 128;
sprite->data[2] += 8;
}
else
diff --git a/src/pokedex_cry_screen.c b/src/pokedex_cry_screen.c
index 0a6f639ae..e1d1776b1 100644
--- a/src/pokedex_cry_screen.c
+++ b/src/pokedex_cry_screen.c
@@ -188,7 +188,7 @@ static const union AnimCmd *const sSpriteAnimTable_CryMeterNeedle[] =
static const struct OamData sOamData_CryMeterNeedle =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = ST_OAM_OBJ_NORMAL,
.bpp = ST_OAM_4BPP,
@@ -560,8 +560,8 @@ static void SpriteCB_CryMeterNeedle(struct Sprite *sprite)
SetOamMatrix(0, matrix.a, matrix.b, matrix.c, matrix.d);
x = gSineTable[((sCryMeterNeedle->rotation + 0x7F) & 0xFF)];
y = gSineTable[((sCryMeterNeedle->rotation + 0x7F) & 0xFF) + 64];
- sprite->pos2.x = x * 24 / 256;
- sprite->pos2.y = y * 24 / 256;
+ sprite->x2 = x * 24 / 256;
+ sprite->y2 = y * 24 / 256;
}
static void SetCryMeterNeedleTarget(s8 offset)
diff --git a/src/pokemon.c b/src/pokemon.c
index 5b683584b..28b402216 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -1391,476 +1391,451 @@ const s8 gNatureStatTable[NUM_NATURES][NUM_NATURE_STATS] =
static const u8 sMonFrontAnimIdsTable[] =
{
- [SPECIES_BULBASAUR - 1] = 0x06,
- [SPECIES_IVYSAUR - 1] = 0x17,
- [SPECIES_VENUSAUR - 1] = 0x2f,
- [SPECIES_CHARMANDER - 1] = 0x52,
- [SPECIES_CHARMELEON - 1] = 0x25,
- [SPECIES_CHARIZARD - 1] = 0x10,
- [SPECIES_SQUIRTLE - 1] = 0x0b,
- [SPECIES_WARTORTLE - 1] = 0x13,
- [SPECIES_BLASTOISE - 1] = 0x19,
- [SPECIES_CATERPIE - 1] = 0x0b,
- [SPECIES_METAPOD - 1] = 0x0b,
- [SPECIES_BUTTERFREE - 1] = 0x1d,
- [SPECIES_WEEDLE - 1] = 0x46,
- [SPECIES_KAKUNA - 1] = 0x20,
- [SPECIES_BEEDRILL - 1] = 0x02,
- [SPECIES_PIDGEY - 1] = 0x47,
- [SPECIES_PIDGEOTTO - 1] = 0x17,
- [SPECIES_PIDGEOT - 1] = 0x29,
- [SPECIES_RATTATA - 1] = 0x43,
- [SPECIES_RATICATE - 1] = 0x2b,
- [SPECIES_SPEAROW - 1] = 0x18,
- [SPECIES_FEAROW - 1] = 0x2b,
- [SPECIES_EKANS - 1] = 0x16,
- [SPECIES_ARBOK - 1] = 0x17,
- [SPECIES_PIKACHU - 1] = 0x2c,
- [SPECIES_RAICHU - 1] = 0x17,
- [SPECIES_SANDSHREW - 1] = 0x2d,
- [SPECIES_SANDSLASH - 1] = 0x17,
- [SPECIES_NIDORAN_F - 1] = 0x00,
- [SPECIES_NIDORINA - 1] = 0x17,
- [SPECIES_NIDOQUEEN - 1] = 0x0f,
- [SPECIES_NIDORAN_M - 1] = 0x09,
- [SPECIES_NIDORINO - 1] = 0x13,
- [SPECIES_NIDOKING - 1] = 0x0f,
- [SPECIES_CLEFAIRY - 1] = 0x00,
- [SPECIES_CLEFABLE - 1] = 0x4a,
- [SPECIES_VULPIX - 1] = 0x17,
- [SPECIES_NINETALES - 1] = 0x10,
- [SPECIES_JIGGLYPUFF - 1] = 0x48,
- [SPECIES_WIGGLYTUFF - 1] = 0x31,
- [SPECIES_ZUBAT - 1] = 0x00,
- [SPECIES_GOLBAT - 1] = 0x1d,
- [SPECIES_ODDISH - 1] = 0x00,
- [SPECIES_GLOOM - 1] = 0x45,
- [SPECIES_VILEPLUME - 1] = 0x49,
- [SPECIES_PARAS - 1] = 0x46,
- [SPECIES_PARASECT - 1] = 0x0f,
- [SPECIES_VENONAT - 1] = 0x06,
- [SPECIES_VENOMOTH - 1] = 0x4b,
- [SPECIES_DIGLETT - 1] = 0x10,
- [SPECIES_DUGTRIO - 1] = 0x4c,
- [SPECIES_MEOWTH - 1] = 0x52,
- [SPECIES_PERSIAN - 1] = 0x17,
- [SPECIES_PSYDUCK - 1] = 0x06,
- [SPECIES_GOLDUCK - 1] = 0x4c,
- [SPECIES_MANKEY - 1] = 0x32,
- [SPECIES_PRIMEAPE - 1] = 0x48,
- [SPECIES_GROWLITHE - 1] = 0x25,
- [SPECIES_ARCANINE - 1] = 0x02,
- [SPECIES_POLIWAG - 1] = 0x00,
- [SPECIES_POLIWHIRL - 1] = 0x32,
- [SPECIES_POLIWRATH - 1] = 0x19,
- [SPECIES_ABRA - 1] = 0x31,
- [SPECIES_KADABRA - 1] = 0x09,
- [SPECIES_ALAKAZAM - 1] = 0x17,
- [SPECIES_MACHOP - 1] = 0x00,
- [SPECIES_MACHOKE - 1] = 0x10,
- [SPECIES_MACHAMP - 1] = 0x31,
- [SPECIES_BELLSPROUT - 1] = 0x17,
- [SPECIES_WEEPINBELL - 1] = 0x0d,
- [SPECIES_VICTREEBEL - 1] = 0x32,
- [SPECIES_TENTACOOL - 1] = 0x00,
- [SPECIES_TENTACRUEL - 1] = 0x00,
- [SPECIES_GEODUDE - 1] = 0x48,
- [SPECIES_GRAVELER - 1] = 0x48,
- [SPECIES_GOLEM - 1] = 0x2f,
- [SPECIES_PONYTA - 1] = 0x20,
- [SPECIES_RAPIDASH - 1] = 0x11,
- [SPECIES_SLOWPOKE - 1] = 0x45,
- [SPECIES_SLOWBRO - 1] = 0x0b,
- [SPECIES_MAGNEMITE - 1] = 0x54,
- [SPECIES_MAGNETON - 1] = 0x2c,
- [SPECIES_FARFETCHD - 1] = 0x48,
- [SPECIES_DODUO - 1] = 0x4c,
- [SPECIES_DODRIO - 1] = 0x41,
- [SPECIES_SEEL - 1] = 0x0b,
- [SPECIES_DEWGONG - 1] = 0x45,
- [SPECIES_GRIMER - 1] = 0x46,
- [SPECIES_MUK - 1] = 0x30,
- [SPECIES_SHELLDER - 1] = 0x12,
- [SPECIES_CLOYSTER - 1] = 0x1d,
- [SPECIES_GASTLY - 1] = 0x15,
- [SPECIES_HAUNTER - 1] = 0x35,
- [SPECIES_GENGAR - 1] = 0x3a,
- [SPECIES_ONIX - 1] = 0x43,
- [SPECIES_DROWZEE - 1] = 0x4f,
- [SPECIES_HYPNO - 1] = 0x09,
- [SPECIES_KRABBY - 1] = 0x03,
- [SPECIES_KINGLER - 1] = 0x4b,
- [SPECIES_VOLTORB - 1] = 0x00,
- [SPECIES_ELECTRODE - 1] = 0x00,
- [SPECIES_EXEGGCUTE - 1] = 0x46,
- [SPECIES_EXEGGUTOR - 1] = 0x32,
- [SPECIES_CUBONE - 1] = 0x48,
- [SPECIES_MAROWAK - 1] = 0x05,
- [SPECIES_HITMONLEE - 1] = 0x16,
- [SPECIES_HITMONCHAN - 1] = 0x09,
- [SPECIES_LICKITUNG - 1] = 0x45,
- [SPECIES_KOFFING - 1] = 0x13,
- [SPECIES_WEEZING - 1] = 0x04,
- [SPECIES_RHYHORN - 1] = 0x10,
- [SPECIES_RHYDON - 1] = 0x13,
- [SPECIES_CHANSEY - 1] = 0x45,
- [SPECIES_TANGELA - 1] = 0x48,
- [SPECIES_KANGASKHAN - 1] = 0x17,
- [SPECIES_HORSEA - 1] = 0x12,
- [SPECIES_SEADRA - 1] = 0x04,
- [SPECIES_GOLDEEN - 1] = 0x0d,
- [SPECIES_SEAKING - 1] = 0x1c,
- [SPECIES_STARYU - 1] = 0x4e,
- [SPECIES_STARMIE - 1] = 0x12,
- [SPECIES_MR_MIME - 1] = 0x46,
- [SPECIES_SCYTHER - 1] = 0x02,
- [SPECIES_JYNX - 1] = 0x17,
- [SPECIES_ELECTABUZZ - 1] = 0x2c,
- [SPECIES_MAGMAR - 1] = 0x0f,
- [SPECIES_PINSIR - 1] = 0x09,
- [SPECIES_TAUROS - 1] = 0x19,
- [SPECIES_MAGIKARP - 1] = 0x05,
- [SPECIES_GYARADOS - 1] = 0x48,
- [SPECIES_LAPRAS - 1] = 0x17,
- [SPECIES_DITTO - 1] = 0x01,
- [SPECIES_EEVEE - 1] = 0x17,
- [SPECIES_VAPOREON - 1] = 0x17,
- [SPECIES_JOLTEON - 1] = 0x00,
- [SPECIES_FLAREON - 1] = 0x17,
- [SPECIES_PORYGON - 1] = 0x52,
- [SPECIES_OMANYTE - 1] = 0x51,
- [SPECIES_OMASTAR - 1] = 0x09,
- [SPECIES_KABUTO - 1] = 0x1d,
- [SPECIES_KABUTOPS - 1] = 0x0f,
- [SPECIES_AERODACTYL - 1] = 0x47,
- [SPECIES_SNORLAX - 1] = 0x0b,
- [SPECIES_ARTICUNO - 1] = 0x09,
- [SPECIES_ZAPDOS - 1] = 0x2c,
- [SPECIES_MOLTRES - 1] = 0x45,
- [SPECIES_DRATINI - 1] = 0x00,
- [SPECIES_DRAGONAIR - 1] = 0x10,
- [SPECIES_DRAGONITE - 1] = 0x47,
- [SPECIES_MEWTWO - 1] = 0x09,
- [SPECIES_MEW - 1] = 0x0d,
- [SPECIES_CHIKORITA - 1] = 0x00,
- [SPECIES_BAYLEEF - 1] = 0x00,
- [SPECIES_MEGANIUM - 1] = 0x17,
- [SPECIES_CYNDAQUIL - 1] = 0x52,
- [SPECIES_QUILAVA - 1] = 0x17,
- [SPECIES_TYPHLOSION - 1] = 0x10,
- [SPECIES_TOTODILE - 1] = 0x31,
- [SPECIES_CROCONAW - 1] = 0x0f,
- [SPECIES_FERALIGATR - 1] = 0x0f,
- [SPECIES_SENTRET - 1] = 0x00,
- [SPECIES_FURRET - 1] = 0x32,
- [SPECIES_HOOTHOOT - 1] = 0x47,
- [SPECIES_NOCTOWL - 1] = 0x17,
- [SPECIES_LEDYBA - 1] = 0x52,
- [SPECIES_LEDIAN - 1] = 0x47,
- [SPECIES_SPINARAK - 1] = 0x4f,
- [SPECIES_ARIADOS - 1] = 0x0f,
- [SPECIES_CROBAT - 1] = 0x00,
- [SPECIES_CHINCHOU - 1] = 0x45,
- [SPECIES_LANTURN - 1] = 0x51,
- [SPECIES_PICHU - 1] = 0x1e,
- [SPECIES_CLEFFA - 1] = 0x52,
- [SPECIES_IGGLYBUFF - 1] = 0x0c,
- [SPECIES_TOGEPI - 1] = 0x0b,
- [SPECIES_TOGETIC - 1] = 0x00,
- [SPECIES_NATU - 1] = 0x31,
- [SPECIES_XATU - 1] = 0x09,
- [SPECIES_MAREEP - 1] = 0x00,
- [SPECIES_FLAAFFY - 1] = 0x1e,
- [SPECIES_AMPHAROS - 1] = 0x2c,
- [SPECIES_BELLOSSOM - 1] = 0x0b,
- [SPECIES_MARILL - 1] = 0x00,
- [SPECIES_AZUMARILL - 1] = 0x4a,
- [SPECIES_SUDOWOODO - 1] = 0x46,
- [SPECIES_POLITOED - 1] = 0x32,
- [SPECIES_HOPPIP - 1] = 0x1c,
- [SPECIES_SKIPLOOM - 1] = 0x18,
- [SPECIES_JUMPLUFF - 1] = 0x51,
- [SPECIES_AIPOM - 1] = 0x32,
- [SPECIES_SUNKERN - 1] = 0x52,
- [SPECIES_SUNFLORA - 1] = 0x00,
- [SPECIES_YANMA - 1] = 0x2b,
- [SPECIES_WOOPER - 1] = 0x00,
- [SPECIES_QUAGSIRE - 1] = 0x16,
- [SPECIES_ESPEON - 1] = 0x09,
- [SPECIES_UMBREON - 1] = 0x10,
- [SPECIES_MURKROW - 1] = 0x00,
- [SPECIES_SLOWKING - 1] = 0x13,
- [SPECIES_MISDREAVUS - 1] = 0x1c,
- [SPECIES_UNOWN - 1] = 0x0a,
- [SPECIES_WOBBUFFET - 1] = 0x30,
- [SPECIES_GIRAFARIG - 1] = 0x1e,
- [SPECIES_PINECO - 1] = 0x0b,
- [SPECIES_FORRETRESS - 1] = 0x10,
- [SPECIES_DUNSPARCE - 1] = 0x00,
- [SPECIES_GLIGAR - 1] = 0x13,
- [SPECIES_STEELIX - 1] = 0x0f,
- [SPECIES_SNUBBULL - 1] = 0x17,
- [SPECIES_GRANBULL - 1] = 0x10,
- [SPECIES_QWILFISH - 1] = 0x3a,
- [SPECIES_SCIZOR - 1] = 0x02,
- [SPECIES_SHUCKLE - 1] = 0x0b,
- [SPECIES_HERACROSS - 1] = 0x41,
- [SPECIES_SNEASEL - 1] = 0x16,
- [SPECIES_TEDDIURSA - 1] = 0x17,
- [SPECIES_URSARING - 1] = 0x10,
- [SPECIES_SLUGMA - 1] = 0x17,
- [SPECIES_MAGCARGO - 1] = 0x17,
- [SPECIES_SWINUB - 1] = 0x00,
- [SPECIES_PILOSWINE - 1] = 0x0f,
- [SPECIES_CORSOLA - 1] = 0x03,
- [SPECIES_REMORAID - 1] = 0x52,
- [SPECIES_OCTILLERY - 1] = 0x17,
- [SPECIES_DELIBIRD - 1] = 0x52,
- [SPECIES_MANTINE - 1] = 0x0d,
- [SPECIES_SKARMORY - 1] = 0x17,
- [SPECIES_HOUNDOUR - 1] = 0x17,
- [SPECIES_HOUNDOOM - 1] = 0x10,
- [SPECIES_KINGDRA - 1] = 0x42,
- [SPECIES_PHANPY - 1] = 0x32,
- [SPECIES_DONPHAN - 1] = 0x19,
- [SPECIES_PORYGON2 - 1] = 0x00,
- [SPECIES_STANTLER - 1] = 0x00,
- [SPECIES_SMEARGLE - 1] = 0x31,
- [SPECIES_TYROGUE - 1] = 0x16,
- [SPECIES_HITMONTOP - 1] = 0x02,
- [SPECIES_SMOOCHUM - 1] = 0x09,
- [SPECIES_ELEKID - 1] = 0x2c,
- [SPECIES_MAGBY - 1] = 0x00,
- [SPECIES_MILTANK - 1] = 0x45,
- [SPECIES_BLISSEY - 1] = 0x00,
- [SPECIES_RAIKOU - 1] = 0x2c,
- [SPECIES_ENTEI - 1] = 0x09,
- [SPECIES_SUICUNE - 1] = 0x10,
- [SPECIES_LARVITAR - 1] = 0x52,
- [SPECIES_PUPITAR - 1] = 0x10,
- [SPECIES_TYRANITAR - 1] = 0x0f,
- [SPECIES_LUGIA - 1] = 0x3a,
- [SPECIES_HO_OH - 1] = 0x09,
- [SPECIES_CELEBI - 1] = 0x18,
- [SPECIES_OLD_UNOWN_B - 1] = 0x00,
- [SPECIES_OLD_UNOWN_C - 1] = 0x00,
- [SPECIES_OLD_UNOWN_D - 1] = 0x00,
- [SPECIES_OLD_UNOWN_E - 1] = 0x00,
- [SPECIES_OLD_UNOWN_F - 1] = 0x00,
- [SPECIES_OLD_UNOWN_G - 1] = 0x00,
- [SPECIES_OLD_UNOWN_H - 1] = 0x00,
- [SPECIES_OLD_UNOWN_I - 1] = 0x00,
- [SPECIES_OLD_UNOWN_J - 1] = 0x00,
- [SPECIES_OLD_UNOWN_K - 1] = 0x00,
- [SPECIES_OLD_UNOWN_L - 1] = 0x00,
- [SPECIES_OLD_UNOWN_M - 1] = 0x00,
- [SPECIES_OLD_UNOWN_N - 1] = 0x00,
- [SPECIES_OLD_UNOWN_O - 1] = 0x00,
- [SPECIES_OLD_UNOWN_P - 1] = 0x00,
- [SPECIES_OLD_UNOWN_Q - 1] = 0x00,
- [SPECIES_OLD_UNOWN_R - 1] = 0x00,
- [SPECIES_OLD_UNOWN_S - 1] = 0x00,
- [SPECIES_OLD_UNOWN_T - 1] = 0x00,
- [SPECIES_OLD_UNOWN_U - 1] = 0x00,
- [SPECIES_OLD_UNOWN_V - 1] = 0x00,
- [SPECIES_OLD_UNOWN_W - 1] = 0x00,
- [SPECIES_OLD_UNOWN_X - 1] = 0x00,
- [SPECIES_OLD_UNOWN_Y - 1] = 0x00,
- [SPECIES_OLD_UNOWN_Z - 1] = 0x00,
- [SPECIES_TREECKO - 1] = 0x00,
- [SPECIES_GROVYLE - 1] = 0x17,
- [SPECIES_SCEPTILE - 1] = 0x10,
- [SPECIES_TORCHIC - 1] = 0x16,
- [SPECIES_COMBUSKEN - 1] = 0x06,
- [SPECIES_BLAZIKEN - 1] = 0x0f,
- [SPECIES_MUDKIP - 1] = 0x01,
- [SPECIES_MARSHTOMP - 1] = 0x04,
- [SPECIES_SWAMPERT - 1] = 0x1e,
- [SPECIES_POOCHYENA - 1] = 0x10,
- [SPECIES_MIGHTYENA - 1] = 0x10,
- [SPECIES_ZIGZAGOON - 1] = 0x03,
- [SPECIES_LINOONE - 1] = 0x09,
- [SPECIES_WURMPLE - 1] = 0x00,
- [SPECIES_SILCOON - 1] = 0x00,
- [SPECIES_BEAUTIFLY - 1] = 0x04,
- [SPECIES_CASCOON - 1] = 0x04,
- [SPECIES_DUSTOX - 1] = 0x06,
- [SPECIES_LOTAD - 1] = 0x00,
- [SPECIES_LOMBRE - 1] = 0x00,
- [SPECIES_LUDICOLO - 1] = 0x49,
- [SPECIES_SEEDOT - 1] = 0x05,
- [SPECIES_NUZLEAF - 1] = 0x00,
- [SPECIES_SHIFTRY - 1] = 0x02,
- [SPECIES_NINCADA - 1] = 0x00,
- [SPECIES_NINJASK - 1] = 0x46,
- [SPECIES_SHEDINJA - 1] = 0x1c,
- [SPECIES_TAILLOW - 1] = 0x1e,
- [SPECIES_SWELLOW - 1] = 0x01,
- [SPECIES_SHROOMISH - 1] = 0x00,
- [SPECIES_BRELOOM - 1] = 0x00,
- [SPECIES_SPINDA - 1] = 0x31,
- [SPECIES_WINGULL - 1] = 0x1b,
- [SPECIES_PELIPPER - 1] = 0x1c,
- [SPECIES_SURSKIT - 1] = 0x00,
- [SPECIES_MASQUERAIN - 1] = 0x00,
- [SPECIES_WAILMER - 1] = 0x01,
- [SPECIES_WAILORD - 1] = 0x1c,
- [SPECIES_SKITTY - 1] = 0x00,
- [SPECIES_DELCATTY - 1] = 0x17,
- [SPECIES_KECLEON - 1] = 0x35,
- [SPECIES_BALTOY - 1] = 0x1d,
- [SPECIES_CLAYDOL - 1] = 0x51,
- [SPECIES_NOSEPASS - 1] = 0x49,
- [SPECIES_TORKOAL - 1] = 0x17,
- [SPECIES_SABLEYE - 1] = 0x15,
- [SPECIES_BARBOACH - 1] = 0x49,
- [SPECIES_WHISCASH - 1] = 0x49,
- [SPECIES_LUVDISC - 1] = 0x1d,
- [SPECIES_CORPHISH - 1] = 0x10,
- [SPECIES_CRAWDAUNT - 1] = 0x09,
- [SPECIES_FEEBAS - 1] = 0x49,
- [SPECIES_MILOTIC - 1] = 0x22,
- [SPECIES_CARVANHA - 1] = 0x49,
- [SPECIES_SHARPEDO - 1] = 0x56,
- [SPECIES_TRAPINCH - 1] = 0x10,
- [SPECIES_VIBRAVA - 1] = 0x0f,
- [SPECIES_FLYGON - 1] = 0x4b,
- [SPECIES_MAKUHITA - 1] = 0x0b,
- [SPECIES_HARIYAMA - 1] = 0x34,
- [SPECIES_ELECTRIKE - 1] = 0x00,
- [SPECIES_MANECTRIC - 1] = 0x00,
- [SPECIES_NUMEL - 1] = 0x04,
- [SPECIES_CAMERUPT - 1] = 0x10,
- [SPECIES_SPHEAL - 1] = 0x53,
- [SPECIES_SEALEO - 1] = 0x17,
- [SPECIES_WALREIN - 1] = 0x0f,
- [SPECIES_CACNEA - 1] = 0x49,
- [SPECIES_CACTURNE - 1] = 0x04,
- [SPECIES_SNORUNT - 1] = 0x45,
- [SPECIES_GLALIE - 1] = 0x0a,
- [SPECIES_LUNATONE - 1] = 0x0e,
- [SPECIES_SOLROCK - 1] = 0x08,
- [SPECIES_AZURILL - 1] = 0x00,
- [SPECIES_SPOINK - 1] = 0x56,
- [SPECIES_GRUMPIG - 1] = 0x32,
- [SPECIES_PLUSLE - 1] = 0x00,
- [SPECIES_MINUN - 1] = 0x01,
- [SPECIES_MAWILE - 1] = 0x00,
- [SPECIES_MEDITITE - 1] = 0x05,
- [SPECIES_MEDICHAM - 1] = 0x45,
- [SPECIES_SWABLU - 1] = 0x04,
- [SPECIES_ALTARIA - 1] = 0x16,
- [SPECIES_WYNAUT - 1] = 0x32,
- [SPECIES_DUSKULL - 1] = 0x0a,
- [SPECIES_DUSCLOPS - 1] = 0x02,
- [SPECIES_ROSELIA - 1] = 0x45,
- [SPECIES_SLAKOTH - 1] = 0x45,
- [SPECIES_VIGOROTH - 1] = 0x31,
- [SPECIES_SLAKING - 1] = 0x45,
- [SPECIES_GULPIN - 1] = 0x00,
- [SPECIES_SWALOT - 1] = 0x45,
- [SPECIES_TROPIUS - 1] = 0x10,
- [SPECIES_WHISMUR - 1] = 0x03,
- [SPECIES_LOUDRED - 1] = 0x49,
- [SPECIES_EXPLOUD - 1] = 0x19,
- [SPECIES_CLAMPERL - 1] = 0x12,
- [SPECIES_HUNTAIL - 1] = 0x09,
- [SPECIES_GOREBYSS - 1] = 0x1c,
- [SPECIES_ABSOL - 1] = 0x11,
- [SPECIES_SHUPPET - 1] = 0x1c,
- [SPECIES_BANETTE - 1] = 0x0d,
- [SPECIES_SEVIPER - 1] = 0x17,
- [SPECIES_ZANGOOSE - 1] = 0x09,
- [SPECIES_RELICANTH - 1] = 0x1a,
- [SPECIES_ARON - 1] = 0x45,
- [SPECIES_LAIRON - 1] = 0x00,
- [SPECIES_AGGRON - 1] = 0x19,
- [SPECIES_CASTFORM - 1] = 0x1d,
- [SPECIES_VOLBEAT - 1] = 0x00,
- [SPECIES_ILLUMISE - 1] = 0x05,
- [SPECIES_LILEEP - 1] = 0x17,
- [SPECIES_CRADILY - 1] = 0x19,
- [SPECIES_ANORITH - 1] = 0x12,
- [SPECIES_ARMALDO - 1] = 0x10,
- [SPECIES_RALTS - 1] = 0x45,
- [SPECIES_KIRLIA - 1] = 0x00,
- [SPECIES_GARDEVOIR - 1] = 0x00,
- [SPECIES_BAGON - 1] = 0x19,
- [SPECIES_SHELGON - 1] = 0x04,
- [SPECIES_SALAMENCE - 1] = 0x0f,
- [SPECIES_BELDUM - 1] = 0x0f,
- [SPECIES_METANG - 1] = 0x04,
- [SPECIES_METAGROSS - 1] = 0x10,
- [SPECIES_REGIROCK - 1] = 0x01,
- [SPECIES_REGICE - 1] = 0x44,
- [SPECIES_REGISTEEL - 1] = 0x09,
- [SPECIES_KYOGRE - 1] = 0x2d,
- [SPECIES_GROUDON - 1] = 0x10,
- [SPECIES_RAYQUAZA - 1] = 0x0f,
- [SPECIES_LATIAS - 1] = 0x2d,
- [SPECIES_LATIOS - 1] = 0x10,
- [SPECIES_JIRACHI - 1] = 0x0d,
- [SPECIES_DEOXYS - 1] = 0x1b,
- [SPECIES_CHIMECHO - 1] = 0x1d,
+ [SPECIES_BULBASAUR - 1] = ANIM_V_JUMPS_H_JUMPS,
+ [SPECIES_IVYSAUR - 1] = ANIM_V_STRETCH,
+ [SPECIES_VENUSAUR - 1] = ANIM_ROTATE_UP_SLAM_DOWN,
+ [SPECIES_CHARMANDER - 1] = ANIM_V_JUMPS_SMALL,
+ [SPECIES_CHARMELEON - 1] = ANIM_BACK_AND_LUNGE,
+ [SPECIES_CHARIZARD - 1] = ANIM_V_SHAKE,
+ [SPECIES_SQUIRTLE - 1] = ANIM_SWING_CONCAVE,
+ [SPECIES_WARTORTLE - 1] = ANIM_SHRINK_GROW,
+ [SPECIES_BLASTOISE - 1] = ANIM_V_SHAKE_TWICE,
+ [SPECIES_CATERPIE - 1] = ANIM_SWING_CONCAVE,
+ [SPECIES_METAPOD - 1] = ANIM_SWING_CONCAVE,
+ [SPECIES_BUTTERFREE - 1] = ANIM_H_SLIDE_WOBBLE,
+ [SPECIES_WEEDLE - 1] = ANIM_H_SLIDE_SLOW,
+ [SPECIES_KAKUNA - 1] = ANIM_GLOW_ORANGE,
+ [SPECIES_BEEDRILL - 1] = ANIM_H_VIBRATE,
+ [SPECIES_PIDGEY - 1] = ANIM_V_SLIDE_SLOW,
+ [SPECIES_PIDGEOTTO - 1] = ANIM_V_STRETCH,
+ [SPECIES_PIDGEOT - 1] = ANIM_FRONT_FLIP,
+ [SPECIES_RATTATA - 1] = ANIM_RAPID_H_HOPS,
+ [SPECIES_RATICATE - 1] = ANIM_FIGURE_8,
+ [SPECIES_SPEAROW - 1] = ANIM_RISING_WOBBLE,
+ [SPECIES_FEAROW - 1] = ANIM_FIGURE_8,
+ [SPECIES_EKANS - 1] = ANIM_H_STRETCH,
+ [SPECIES_ARBOK - 1] = ANIM_V_STRETCH,
+ [SPECIES_PIKACHU - 1] = ANIM_FLASH_YELLOW,
+ [SPECIES_RAICHU - 1] = ANIM_V_STRETCH,
+ [SPECIES_SANDSHREW - 1] = ANIM_SWING_CONCAVE_FAST_SHORT,
+ [SPECIES_SANDSLASH - 1] = ANIM_V_STRETCH,
+ [SPECIES_NIDORAN_F - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_NIDORINA - 1] = ANIM_V_STRETCH,
+ [SPECIES_NIDOQUEEN - 1] = ANIM_H_SHAKE,
+ [SPECIES_NIDORAN_M - 1] = ANIM_GROW_VIBRATE,
+ [SPECIES_NIDORINO - 1] = ANIM_SHRINK_GROW,
+ [SPECIES_NIDOKING - 1] = ANIM_H_SHAKE,
+ [SPECIES_CLEFAIRY - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_CLEFABLE - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW,
+ [SPECIES_VULPIX - 1] = ANIM_V_STRETCH,
+ [SPECIES_NINETALES - 1] = ANIM_V_SHAKE,
+ [SPECIES_JIGGLYPUFF - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL,
+ [SPECIES_WIGGLYTUFF - 1] = ANIM_H_JUMPS,
+ [SPECIES_ZUBAT - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_GOLBAT - 1] = ANIM_H_SLIDE_WOBBLE,
+ [SPECIES_ODDISH - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_GLOOM - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW,
+ [SPECIES_VILEPLUME - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW,
+ [SPECIES_PARAS - 1] = ANIM_H_SLIDE_SLOW,
+ [SPECIES_PARASECT - 1] = ANIM_H_SHAKE,
+ [SPECIES_VENONAT - 1] = ANIM_V_JUMPS_H_JUMPS,
+ [SPECIES_VENOMOTH - 1] = ANIM_ZIGZAG_SLOW,
+ [SPECIES_DIGLETT - 1] = ANIM_V_SHAKE,
+ [SPECIES_DUGTRIO - 1] = ANIM_H_SHAKE_SLOW,
+ [SPECIES_MEOWTH - 1] = ANIM_V_JUMPS_SMALL,
+ [SPECIES_PERSIAN - 1] = ANIM_V_STRETCH,
+ [SPECIES_PSYDUCK - 1] = ANIM_V_JUMPS_H_JUMPS,
+ [SPECIES_GOLDUCK - 1] = ANIM_H_SHAKE_SLOW,
+ [SPECIES_MANKEY - 1] = ANIM_H_JUMPS_V_STRETCH,
+ [SPECIES_PRIMEAPE - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL,
+ [SPECIES_GROWLITHE - 1] = ANIM_BACK_AND_LUNGE,
+ [SPECIES_ARCANINE - 1] = ANIM_H_VIBRATE,
+ [SPECIES_POLIWAG - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_POLIWHIRL - 1] = ANIM_H_JUMPS_V_STRETCH,
+ [SPECIES_POLIWRATH - 1] = ANIM_V_SHAKE_TWICE,
+ [SPECIES_ABRA - 1] = ANIM_H_JUMPS,
+ [SPECIES_KADABRA - 1] = ANIM_GROW_VIBRATE,
+ [SPECIES_ALAKAZAM - 1] = ANIM_V_STRETCH,
+ [SPECIES_MACHOP - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_MACHOKE - 1] = ANIM_V_SHAKE,
+ [SPECIES_MACHAMP - 1] = ANIM_H_JUMPS,
+ [SPECIES_BELLSPROUT - 1] = ANIM_V_STRETCH,
+ [SPECIES_WEEPINBELL - 1] = ANIM_SWING_CONVEX,
+ [SPECIES_VICTREEBEL - 1] = ANIM_H_JUMPS_V_STRETCH,
+ [SPECIES_TENTACOOL - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_TENTACRUEL - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_GEODUDE - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL,
+ [SPECIES_GRAVELER - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL,
+ [SPECIES_GOLEM - 1] = ANIM_ROTATE_UP_SLAM_DOWN,
+ [SPECIES_PONYTA - 1] = ANIM_GLOW_ORANGE,
+ [SPECIES_RAPIDASH - 1] = ANIM_CIRCULAR_VIBRATE,
+ [SPECIES_SLOWPOKE - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW,
+ [SPECIES_SLOWBRO - 1] = ANIM_SWING_CONCAVE,
+ [SPECIES_MAGNEMITE - 1] = ANIM_TUMBLING_FRONT_FLIP_TWICE,
+ [SPECIES_MAGNETON - 1] = ANIM_FLASH_YELLOW,
+ [SPECIES_FARFETCHD - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL,
+ [SPECIES_DODUO - 1] = ANIM_H_SHAKE_SLOW,
+ [SPECIES_DODRIO - 1] = ANIM_LUNGE_GROW,
+ [SPECIES_SEEL - 1] = ANIM_SWING_CONCAVE,
+ [SPECIES_DEWGONG - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW,
+ [SPECIES_GRIMER - 1] = ANIM_H_SLIDE_SLOW,
+ [SPECIES_MUK - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE,
+ [SPECIES_SHELLDER - 1] = ANIM_TWIST,
+ [SPECIES_CLOYSTER - 1] = ANIM_H_SLIDE_WOBBLE,
+ [SPECIES_GASTLY - 1] = ANIM_GLOW_BLACK,
+ [SPECIES_HAUNTER - 1] = ANIM_FLICKER_INCREASING,
+ [SPECIES_GENGAR - 1] = ANIM_GROW_IN_STAGES,
+ [SPECIES_ONIX - 1] = ANIM_RAPID_H_HOPS,
+ [SPECIES_DROWZEE - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW,
+ [SPECIES_HYPNO - 1] = ANIM_GROW_VIBRATE,
+ [SPECIES_KRABBY - 1] = ANIM_H_SLIDE,
+ [SPECIES_KINGLER - 1] = ANIM_ZIGZAG_SLOW,
+ [SPECIES_VOLTORB - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_ELECTRODE - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_EXEGGCUTE - 1] = ANIM_H_SLIDE_SLOW,
+ [SPECIES_EXEGGUTOR - 1] = ANIM_H_JUMPS_V_STRETCH,
+ [SPECIES_CUBONE - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL,
+ [SPECIES_MAROWAK - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES,
+ [SPECIES_HITMONLEE - 1] = ANIM_H_STRETCH,
+ [SPECIES_HITMONCHAN - 1] = ANIM_GROW_VIBRATE,
+ [SPECIES_LICKITUNG - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW,
+ [SPECIES_KOFFING - 1] = ANIM_SHRINK_GROW,
+ [SPECIES_WEEZING - 1] = ANIM_V_SLIDE,
+ [SPECIES_RHYHORN - 1] = ANIM_V_SHAKE,
+ [SPECIES_RHYDON - 1] = ANIM_SHRINK_GROW,
+ [SPECIES_CHANSEY - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW,
+ [SPECIES_TANGELA - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL,
+ [SPECIES_KANGASKHAN - 1] = ANIM_V_STRETCH,
+ [SPECIES_HORSEA - 1] = ANIM_TWIST,
+ [SPECIES_SEADRA - 1] = ANIM_V_SLIDE,
+ [SPECIES_GOLDEEN - 1] = ANIM_SWING_CONVEX,
+ [SPECIES_SEAKING - 1] = ANIM_V_SLIDE_WOBBLE,
+ [SPECIES_STARYU - 1] = ANIM_TWIST_TWICE,
+ [SPECIES_STARMIE - 1] = ANIM_TWIST,
+ [SPECIES_MR_MIME - 1] = ANIM_H_SLIDE_SLOW,
+ [SPECIES_SCYTHER - 1] = ANIM_H_VIBRATE,
+ [SPECIES_JYNX - 1] = ANIM_V_STRETCH,
+ [SPECIES_ELECTABUZZ - 1] = ANIM_FLASH_YELLOW,
+ [SPECIES_MAGMAR - 1] = ANIM_H_SHAKE,
+ [SPECIES_PINSIR - 1] = ANIM_GROW_VIBRATE,
+ [SPECIES_TAUROS - 1] = ANIM_V_SHAKE_TWICE,
+ [SPECIES_MAGIKARP - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES,
+ [SPECIES_GYARADOS - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL,
+ [SPECIES_LAPRAS - 1] = ANIM_V_STRETCH,
+ [SPECIES_DITTO - 1] = ANIM_CIRCULAR_STRETCH_TWICE,
+ [SPECIES_EEVEE - 1] = ANIM_V_STRETCH,
+ [SPECIES_VAPOREON - 1] = ANIM_V_STRETCH,
+ [SPECIES_JOLTEON - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_FLAREON - 1] = ANIM_V_STRETCH,
+ [SPECIES_PORYGON - 1] = ANIM_V_JUMPS_SMALL,
+ [SPECIES_OMANYTE - 1] = ANIM_V_SLIDE_WOBBLE_SMALL,
+ [SPECIES_OMASTAR - 1] = ANIM_GROW_VIBRATE,
+ [SPECIES_KABUTO - 1] = ANIM_H_SLIDE_WOBBLE,
+ [SPECIES_KABUTOPS - 1] = ANIM_H_SHAKE,
+ [SPECIES_AERODACTYL - 1] = ANIM_V_SLIDE_SLOW,
+ [SPECIES_SNORLAX - 1] = ANIM_SWING_CONCAVE,
+ [SPECIES_ARTICUNO - 1] = ANIM_GROW_VIBRATE,
+ [SPECIES_ZAPDOS - 1] = ANIM_FLASH_YELLOW,
+ [SPECIES_MOLTRES - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW,
+ [SPECIES_DRATINI - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_DRAGONAIR - 1] = ANIM_V_SHAKE,
+ [SPECIES_DRAGONITE - 1] = ANIM_V_SLIDE_SLOW,
+ [SPECIES_MEWTWO - 1] = ANIM_GROW_VIBRATE,
+ [SPECIES_MEW - 1] = ANIM_SWING_CONVEX,
+ [SPECIES_CHIKORITA - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_BAYLEEF - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_MEGANIUM - 1] = ANIM_V_STRETCH,
+ [SPECIES_CYNDAQUIL - 1] = ANIM_V_JUMPS_SMALL,
+ [SPECIES_QUILAVA - 1] = ANIM_V_STRETCH,
+ [SPECIES_TYPHLOSION - 1] = ANIM_V_SHAKE,
+ [SPECIES_TOTODILE - 1] = ANIM_H_JUMPS,
+ [SPECIES_CROCONAW - 1] = ANIM_H_SHAKE,
+ [SPECIES_FERALIGATR - 1] = ANIM_H_SHAKE,
+ [SPECIES_SENTRET - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_FURRET - 1] = ANIM_H_JUMPS_V_STRETCH,
+ [SPECIES_HOOTHOOT - 1] = ANIM_V_SLIDE_SLOW,
+ [SPECIES_NOCTOWL - 1] = ANIM_V_STRETCH,
+ [SPECIES_LEDYBA - 1] = ANIM_V_JUMPS_SMALL,
+ [SPECIES_LEDIAN - 1] = ANIM_V_SLIDE_SLOW,
+ [SPECIES_SPINARAK - 1] = ANIM_CIRCLE_C_CLOCKWISE_SLOW,
+ [SPECIES_ARIADOS - 1] = ANIM_H_SHAKE,
+ [SPECIES_CROBAT - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_CHINCHOU - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW,
+ [SPECIES_LANTURN - 1] = ANIM_V_SLIDE_WOBBLE_SMALL,
+ [SPECIES_PICHU - 1] = ANIM_V_JUMPS_BIG,
+ [SPECIES_CLEFFA - 1] = ANIM_V_JUMPS_SMALL,
+ [SPECIES_IGGLYBUFF - 1] = ANIM_SWING_CONCAVE_FAST,
+ [SPECIES_TOGEPI - 1] = ANIM_SWING_CONCAVE,
+ [SPECIES_TOGETIC - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_NATU - 1] = ANIM_H_JUMPS,
+ [SPECIES_XATU - 1] = ANIM_GROW_VIBRATE,
+ [SPECIES_MAREEP - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_FLAAFFY - 1] = ANIM_V_JUMPS_BIG,
+ [SPECIES_AMPHAROS - 1] = ANIM_FLASH_YELLOW,
+ [SPECIES_BELLOSSOM - 1] = ANIM_SWING_CONCAVE,
+ [SPECIES_MARILL - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_AZUMARILL - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW,
+ [SPECIES_SUDOWOODO - 1] = ANIM_H_SLIDE_SLOW,
+ [SPECIES_POLITOED - 1] = ANIM_H_JUMPS_V_STRETCH,
+ [SPECIES_HOPPIP - 1] = ANIM_V_SLIDE_WOBBLE,
+ [SPECIES_SKIPLOOM - 1] = ANIM_RISING_WOBBLE,
+ [SPECIES_JUMPLUFF - 1] = ANIM_V_SLIDE_WOBBLE_SMALL,
+ [SPECIES_AIPOM - 1] = ANIM_H_JUMPS_V_STRETCH,
+ [SPECIES_SUNKERN - 1] = ANIM_V_JUMPS_SMALL,
+ [SPECIES_SUNFLORA - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_YANMA - 1] = ANIM_FIGURE_8,
+ [SPECIES_WOOPER - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_QUAGSIRE - 1] = ANIM_H_STRETCH,
+ [SPECIES_ESPEON - 1] = ANIM_GROW_VIBRATE,
+ [SPECIES_UMBREON - 1] = ANIM_V_SHAKE,
+ [SPECIES_MURKROW - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_SLOWKING - 1] = ANIM_SHRINK_GROW,
+ [SPECIES_MISDREAVUS - 1] = ANIM_V_SLIDE_WOBBLE,
+ [SPECIES_UNOWN - 1] = ANIM_ZIGZAG_FAST,
+ [SPECIES_WOBBUFFET - 1] = ANIM_DEEP_V_SQUISH_AND_BOUNCE,
+ [SPECIES_GIRAFARIG - 1] = ANIM_V_JUMPS_BIG,
+ [SPECIES_PINECO - 1] = ANIM_SWING_CONCAVE,
+ [SPECIES_FORRETRESS - 1] = ANIM_V_SHAKE,
+ [SPECIES_DUNSPARCE - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_GLIGAR - 1] = ANIM_SHRINK_GROW,
+ [SPECIES_STEELIX - 1] = ANIM_H_SHAKE,
+ [SPECIES_SNUBBULL - 1] = ANIM_V_STRETCH,
+ [SPECIES_GRANBULL - 1] = ANIM_V_SHAKE,
+ [SPECIES_QWILFISH - 1] = ANIM_GROW_IN_STAGES,
+ [SPECIES_SCIZOR - 1] = ANIM_H_VIBRATE,
+ [SPECIES_SHUCKLE - 1] = ANIM_SWING_CONCAVE,
+ [SPECIES_HERACROSS - 1] = ANIM_LUNGE_GROW,
+ [SPECIES_SNEASEL - 1] = ANIM_H_STRETCH,
+ [SPECIES_TEDDIURSA - 1] = ANIM_V_STRETCH,
+ [SPECIES_URSARING - 1] = ANIM_V_SHAKE,
+ [SPECIES_SLUGMA - 1] = ANIM_V_STRETCH,
+ [SPECIES_MAGCARGO - 1] = ANIM_V_STRETCH,
+ [SPECIES_SWINUB - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_PILOSWINE - 1] = ANIM_H_SHAKE,
+ [SPECIES_CORSOLA - 1] = ANIM_H_SLIDE,
+ [SPECIES_REMORAID - 1] = ANIM_V_JUMPS_SMALL,
+ [SPECIES_OCTILLERY - 1] = ANIM_V_STRETCH,
+ [SPECIES_DELIBIRD - 1] = ANIM_V_JUMPS_SMALL,
+ [SPECIES_MANTINE - 1] = ANIM_SWING_CONVEX,
+ [SPECIES_SKARMORY - 1] = ANIM_V_STRETCH,
+ [SPECIES_HOUNDOUR - 1] = ANIM_V_STRETCH,
+ [SPECIES_HOUNDOOM - 1] = ANIM_V_SHAKE,
+ [SPECIES_KINGDRA - 1] = ANIM_CIRCLE_INTO_BG,
+ [SPECIES_PHANPY - 1] = ANIM_H_JUMPS_V_STRETCH,
+ [SPECIES_DONPHAN - 1] = ANIM_V_SHAKE_TWICE,
+ [SPECIES_PORYGON2 - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_STANTLER - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_SMEARGLE - 1] = ANIM_H_JUMPS,
+ [SPECIES_TYROGUE - 1] = ANIM_H_STRETCH,
+ [SPECIES_HITMONTOP - 1] = ANIM_H_VIBRATE,
+ [SPECIES_SMOOCHUM - 1] = ANIM_GROW_VIBRATE,
+ [SPECIES_ELEKID - 1] = ANIM_FLASH_YELLOW,
+ [SPECIES_MAGBY - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_MILTANK - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW,
+ [SPECIES_BLISSEY - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_RAIKOU - 1] = ANIM_FLASH_YELLOW,
+ [SPECIES_ENTEI - 1] = ANIM_GROW_VIBRATE,
+ [SPECIES_SUICUNE - 1] = ANIM_V_SHAKE,
+ [SPECIES_LARVITAR - 1] = ANIM_V_JUMPS_SMALL,
+ [SPECIES_PUPITAR - 1] = ANIM_V_SHAKE,
+ [SPECIES_TYRANITAR - 1] = ANIM_H_SHAKE,
+ [SPECIES_LUGIA - 1] = ANIM_GROW_IN_STAGES,
+ [SPECIES_HO_OH - 1] = ANIM_GROW_VIBRATE,
+ [SPECIES_CELEBI - 1] = ANIM_RISING_WOBBLE,
+ [SPECIES_TREECKO - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_GROVYLE - 1] = ANIM_V_STRETCH,
+ [SPECIES_SCEPTILE - 1] = ANIM_V_SHAKE,
+ [SPECIES_TORCHIC - 1] = ANIM_H_STRETCH,
+ [SPECIES_COMBUSKEN - 1] = ANIM_V_JUMPS_H_JUMPS,
+ [SPECIES_BLAZIKEN - 1] = ANIM_H_SHAKE,
+ [SPECIES_MUDKIP - 1] = ANIM_CIRCULAR_STRETCH_TWICE,
+ [SPECIES_MARSHTOMP - 1] = ANIM_V_SLIDE,
+ [SPECIES_SWAMPERT - 1] = ANIM_V_JUMPS_BIG,
+ [SPECIES_POOCHYENA - 1] = ANIM_V_SHAKE,
+ [SPECIES_MIGHTYENA - 1] = ANIM_V_SHAKE,
+ [SPECIES_ZIGZAGOON - 1] = ANIM_H_SLIDE,
+ [SPECIES_LINOONE - 1] = ANIM_GROW_VIBRATE,
+ [SPECIES_WURMPLE - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_SILCOON - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_BEAUTIFLY - 1] = ANIM_V_SLIDE,
+ [SPECIES_CASCOON - 1] = ANIM_V_SLIDE,
+ [SPECIES_DUSTOX - 1] = ANIM_V_JUMPS_H_JUMPS,
+ [SPECIES_LOTAD - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_LOMBRE - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_LUDICOLO - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW,
+ [SPECIES_SEEDOT - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES,
+ [SPECIES_NUZLEAF - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_SHIFTRY - 1] = ANIM_H_VIBRATE,
+ [SPECIES_NINCADA - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_NINJASK - 1] = ANIM_H_SLIDE_SLOW,
+ [SPECIES_SHEDINJA - 1] = ANIM_V_SLIDE_WOBBLE,
+ [SPECIES_TAILLOW - 1] = ANIM_V_JUMPS_BIG,
+ [SPECIES_SWELLOW - 1] = ANIM_CIRCULAR_STRETCH_TWICE,
+ [SPECIES_SHROOMISH - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_BRELOOM - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_SPINDA - 1] = ANIM_H_JUMPS,
+ [SPECIES_WINGULL - 1] = ANIM_H_PIVOT,
+ [SPECIES_PELIPPER - 1] = ANIM_V_SLIDE_WOBBLE,
+ [SPECIES_SURSKIT - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_MASQUERAIN - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_WAILMER - 1] = ANIM_CIRCULAR_STRETCH_TWICE,
+ [SPECIES_WAILORD - 1] = ANIM_V_SLIDE_WOBBLE,
+ [SPECIES_SKITTY - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_DELCATTY - 1] = ANIM_V_STRETCH,
+ [SPECIES_KECLEON - 1] = ANIM_FLICKER_INCREASING,
+ [SPECIES_BALTOY - 1] = ANIM_H_SLIDE_WOBBLE,
+ [SPECIES_CLAYDOL - 1] = ANIM_V_SLIDE_WOBBLE_SMALL,
+ [SPECIES_NOSEPASS - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW,
+ [SPECIES_TORKOAL - 1] = ANIM_V_STRETCH,
+ [SPECIES_SABLEYE - 1] = ANIM_GLOW_BLACK,
+ [SPECIES_BARBOACH - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW,
+ [SPECIES_WHISCASH - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW,
+ [SPECIES_LUVDISC - 1] = ANIM_H_SLIDE_WOBBLE,
+ [SPECIES_CORPHISH - 1] = ANIM_V_SHAKE,
+ [SPECIES_CRAWDAUNT - 1] = ANIM_GROW_VIBRATE,
+ [SPECIES_FEEBAS - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW,
+ [SPECIES_MILOTIC - 1] = ANIM_GLOW_BLUE,
+ [SPECIES_CARVANHA - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW,
+ [SPECIES_SHARPEDO - 1] = ANIM_H_JUMPS_V_STRETCH_TWICE,
+ [SPECIES_TRAPINCH - 1] = ANIM_V_SHAKE,
+ [SPECIES_VIBRAVA - 1] = ANIM_H_SHAKE,
+ [SPECIES_FLYGON - 1] = ANIM_ZIGZAG_SLOW,
+ [SPECIES_MAKUHITA - 1] = ANIM_SWING_CONCAVE,
+ [SPECIES_HARIYAMA - 1] = ANIM_ROTATE_UP_TO_SIDES,
+ [SPECIES_ELECTRIKE - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_MANECTRIC - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_NUMEL - 1] = ANIM_V_SLIDE,
+ [SPECIES_CAMERUPT - 1] = ANIM_V_SHAKE,
+ [SPECIES_SPHEAL - 1] = ANIM_SPIN,
+ [SPECIES_SEALEO - 1] = ANIM_V_STRETCH,
+ [SPECIES_WALREIN - 1] = ANIM_H_SHAKE,
+ [SPECIES_CACNEA - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW,
+ [SPECIES_CACTURNE - 1] = ANIM_V_SLIDE,
+ [SPECIES_SNORUNT - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW,
+ [SPECIES_GLALIE - 1] = ANIM_ZIGZAG_FAST,
+ [SPECIES_LUNATONE - 1] = ANIM_SWING_CONVEX_FAST,
+ [SPECIES_SOLROCK - 1] = ANIM_ROTATE_TO_SIDES_TWICE,
+ [SPECIES_AZURILL - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_SPOINK - 1] = ANIM_H_JUMPS_V_STRETCH_TWICE,
+ [SPECIES_GRUMPIG - 1] = ANIM_H_JUMPS_V_STRETCH,
+ [SPECIES_PLUSLE - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_MINUN - 1] = ANIM_CIRCULAR_STRETCH_TWICE,
+ [SPECIES_MAWILE - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_MEDITITE - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES,
+ [SPECIES_MEDICHAM - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW,
+ [SPECIES_SWABLU - 1] = ANIM_V_SLIDE,
+ [SPECIES_ALTARIA - 1] = ANIM_H_STRETCH,
+ [SPECIES_WYNAUT - 1] = ANIM_H_JUMPS_V_STRETCH,
+ [SPECIES_DUSKULL - 1] = ANIM_ZIGZAG_FAST,
+ [SPECIES_DUSCLOPS - 1] = ANIM_H_VIBRATE,
+ [SPECIES_ROSELIA - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW,
+ [SPECIES_SLAKOTH - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW,
+ [SPECIES_VIGOROTH - 1] = ANIM_H_JUMPS,
+ [SPECIES_SLAKING - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW,
+ [SPECIES_GULPIN - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_SWALOT - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW,
+ [SPECIES_TROPIUS - 1] = ANIM_V_SHAKE,
+ [SPECIES_WHISMUR - 1] = ANIM_H_SLIDE,
+ [SPECIES_LOUDRED - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW,
+ [SPECIES_EXPLOUD - 1] = ANIM_V_SHAKE_TWICE,
+ [SPECIES_CLAMPERL - 1] = ANIM_TWIST,
+ [SPECIES_HUNTAIL - 1] = ANIM_GROW_VIBRATE,
+ [SPECIES_GOREBYSS - 1] = ANIM_V_SLIDE_WOBBLE,
+ [SPECIES_ABSOL - 1] = ANIM_CIRCULAR_VIBRATE,
+ [SPECIES_SHUPPET - 1] = ANIM_V_SLIDE_WOBBLE,
+ [SPECIES_BANETTE - 1] = ANIM_SWING_CONVEX,
+ [SPECIES_SEVIPER - 1] = ANIM_V_STRETCH,
+ [SPECIES_ZANGOOSE - 1] = ANIM_GROW_VIBRATE,
+ [SPECIES_RELICANTH - 1] = ANIM_TIP_MOVE_FORWARD,
+ [SPECIES_ARON - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW,
+ [SPECIES_LAIRON - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_AGGRON - 1] = ANIM_V_SHAKE_TWICE,
+ [SPECIES_CASTFORM - 1] = ANIM_H_SLIDE_WOBBLE,
+ [SPECIES_VOLBEAT - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_ILLUMISE - 1] = ANIM_BOUNCE_ROTATE_TO_SIDES,
+ [SPECIES_LILEEP - 1] = ANIM_V_STRETCH,
+ [SPECIES_CRADILY - 1] = ANIM_V_SHAKE_TWICE,
+ [SPECIES_ANORITH - 1] = ANIM_TWIST,
+ [SPECIES_ARMALDO - 1] = ANIM_V_SHAKE,
+ [SPECIES_RALTS - 1] = ANIM_V_SQUISH_AND_BOUNCE_SLOW,
+ [SPECIES_KIRLIA - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_GARDEVOIR - 1] = ANIM_V_SQUISH_AND_BOUNCE,
+ [SPECIES_BAGON - 1] = ANIM_V_SHAKE_TWICE,
+ [SPECIES_SHELGON - 1] = ANIM_V_SLIDE,
+ [SPECIES_SALAMENCE - 1] = ANIM_H_SHAKE,
+ [SPECIES_BELDUM - 1] = ANIM_H_SHAKE,
+ [SPECIES_METANG - 1] = ANIM_V_SLIDE,
+ [SPECIES_METAGROSS - 1] = ANIM_V_SHAKE,
+ [SPECIES_REGIROCK - 1] = ANIM_CIRCULAR_STRETCH_TWICE,
+ [SPECIES_REGICE - 1] = ANIM_FOUR_PETAL,
+ [SPECIES_REGISTEEL - 1] = ANIM_GROW_VIBRATE,
+ [SPECIES_KYOGRE - 1] = ANIM_SWING_CONCAVE_FAST_SHORT,
+ [SPECIES_GROUDON - 1] = ANIM_V_SHAKE,
+ [SPECIES_RAYQUAZA - 1] = ANIM_H_SHAKE,
+ [SPECIES_LATIAS - 1] = ANIM_SWING_CONCAVE_FAST_SHORT,
+ [SPECIES_LATIOS - 1] = ANIM_V_SHAKE,
+ [SPECIES_JIRACHI - 1] = ANIM_SWING_CONVEX,
+ [SPECIES_DEOXYS - 1] = ANIM_H_PIVOT,
+ [SPECIES_CHIMECHO - 1] = ANIM_H_SLIDE_WOBBLE,
};
static const u8 sMonAnimationDelayTable[NUM_SPECIES - 1] =
{
- [SPECIES_BLASTOISE - 1] = 0x32,
- [SPECIES_WEEDLE - 1] = 0x0a,
- [SPECIES_KAKUNA - 1] = 0x14,
- [SPECIES_BEEDRILL - 1] = 0x23,
- [SPECIES_PIDGEOTTO - 1] = 0x19,
- [SPECIES_FEAROW - 1] = 0x02,
- [SPECIES_EKANS - 1] = 0x1e,
- [SPECIES_NIDORAN_F - 1] = 0x1c,
- [SPECIES_NIDOKING - 1] = 0x19,
- [SPECIES_PARAS - 1] = 0x0a,
- [SPECIES_PARASECT - 1] = 0x2d,
- [SPECIES_VENONAT - 1] = 0x14,
- [SPECIES_DIGLETT - 1] = 0x19,
- [SPECIES_DUGTRIO - 1] = 0x23,
- [SPECIES_MEOWTH - 1] = 0x28,
- [SPECIES_PERSIAN - 1] = 0x14,
- [SPECIES_MANKEY - 1] = 0x14,
- [SPECIES_GROWLITHE - 1] = 0x1e,
- [SPECIES_ARCANINE - 1] = 0x28,
- [SPECIES_POLIWHIRL - 1] = 0x05,
- [SPECIES_WEEPINBELL - 1] = 0x03,
- [SPECIES_MUK - 1] = 0x2d,
- [SPECIES_SHELLDER - 1] = 0x14,
- [SPECIES_HAUNTER - 1] = 0x17,
- [SPECIES_DROWZEE - 1] = 0x30,
- [SPECIES_HYPNO - 1] = 0x28,
- [SPECIES_HITMONCHAN - 1] = 0x19,
- [SPECIES_SCYTHER - 1] = 0x0a,
- [SPECIES_TAUROS - 1] = 0x0a,
- [SPECIES_TYPHLOSION - 1] = 0x14,
- [SPECIES_FERALIGATR - 1] = 0x05,
- [SPECIES_NATU - 1] = 0x1e,
- [SPECIES_MAREEP - 1] = 0x32,
- [SPECIES_AMPHAROS - 1] = 0x0a,
- [SPECIES_POLITOED - 1] = 0x28,
- [SPECIES_DUNSPARCE - 1] = 0x0a,
- [SPECIES_STEELIX - 1] = 0x2d,
- [SPECIES_QWILFISH - 1] = 0x27,
- [SPECIES_SCIZOR - 1] = 0x13,
- [SPECIES_OCTILLERY - 1] = 0x14,
- [SPECIES_SMOOCHUM - 1] = 0x28,
- [SPECIES_TYRANITAR - 1] = 0x0a,
- [SPECIES_LUGIA - 1] = 0x14,
- [SPECIES_WAILORD - 1] = 0x0a,
- [SPECIES_KECLEON - 1] = 0x1e,
- [SPECIES_MILOTIC - 1] = 0x2d,
- [SPECIES_SPHEAL - 1] = 0x0f,
- [SPECIES_SNORUNT - 1] = 0x14,
- [SPECIES_GRUMPIG - 1] = 0x0f,
- [SPECIES_WYNAUT - 1] = 0x0f,
- [SPECIES_DUSCLOPS - 1] = 0x1e,
- [SPECIES_ABSOL - 1] = 0x2d,
- [SPECIES_SALAMENCE - 1] = 0x46,
- [SPECIES_KYOGRE - 1] = 0x3c,
- [SPECIES_RAYQUAZA - 1] = 0x3c,
+ [SPECIES_BLASTOISE - 1] = 50,
+ [SPECIES_WEEDLE - 1] = 10,
+ [SPECIES_KAKUNA - 1] = 20,
+ [SPECIES_BEEDRILL - 1] = 35,
+ [SPECIES_PIDGEOTTO - 1] = 25,
+ [SPECIES_FEAROW - 1] = 2,
+ [SPECIES_EKANS - 1] = 30,
+ [SPECIES_NIDORAN_F - 1] = 28,
+ [SPECIES_NIDOKING - 1] = 25,
+ [SPECIES_PARAS - 1] = 10,
+ [SPECIES_PARASECT - 1] = 45,
+ [SPECIES_VENONAT - 1] = 20,
+ [SPECIES_DIGLETT - 1] = 25,
+ [SPECIES_DUGTRIO - 1] = 35,
+ [SPECIES_MEOWTH - 1] = 40,
+ [SPECIES_PERSIAN - 1] = 20,
+ [SPECIES_MANKEY - 1] = 20,
+ [SPECIES_GROWLITHE - 1] = 30,
+ [SPECIES_ARCANINE - 1] = 40,
+ [SPECIES_POLIWHIRL - 1] = 5,
+ [SPECIES_WEEPINBELL - 1] = 3,
+ [SPECIES_MUK - 1] = 45,
+ [SPECIES_SHELLDER - 1] = 20,
+ [SPECIES_HAUNTER - 1] = 23,
+ [SPECIES_DROWZEE - 1] = 48,
+ [SPECIES_HYPNO - 1] = 40,
+ [SPECIES_HITMONCHAN - 1] = 25,
+ [SPECIES_SCYTHER - 1] = 10,
+ [SPECIES_TAUROS - 1] = 10,
+ [SPECIES_TYPHLOSION - 1] = 20,
+ [SPECIES_FERALIGATR - 1] = 5,
+ [SPECIES_NATU - 1] = 30,
+ [SPECIES_MAREEP - 1] = 50,
+ [SPECIES_AMPHAROS - 1] = 10,
+ [SPECIES_POLITOED - 1] = 40,
+ [SPECIES_DUNSPARCE - 1] = 10,
+ [SPECIES_STEELIX - 1] = 45,
+ [SPECIES_QWILFISH - 1] = 39,
+ [SPECIES_SCIZOR - 1] = 19,
+ [SPECIES_OCTILLERY - 1] = 20,
+ [SPECIES_SMOOCHUM - 1] = 40,
+ [SPECIES_TYRANITAR - 1] = 10,
+ [SPECIES_LUGIA - 1] = 20,
+ [SPECIES_WAILORD - 1] = 10,
+ [SPECIES_KECLEON - 1] = 30,
+ [SPECIES_MILOTIC - 1] = 45,
+ [SPECIES_SPHEAL - 1] = 15,
+ [SPECIES_SNORUNT - 1] = 20,
+ [SPECIES_GRUMPIG - 1] = 15,
+ [SPECIES_WYNAUT - 1] = 15,
+ [SPECIES_DUSCLOPS - 1] = 30,
+ [SPECIES_ABSOL - 1] = 45,
+ [SPECIES_SALAMENCE - 1] = 70,
+ [SPECIES_KYOGRE - 1] = 60,
+ [SPECIES_RAYQUAZA - 1] = 60,
};
const u8 gPPUpGetMask[] = {0x03, 0x0c, 0x30, 0xc0}; // Masks for getting PP Up count, also PP Max values
@@ -3459,7 +3434,7 @@ void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition)
gMultiuseSpriteTemplate.paletteTag = speciesTag;
if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_PLAYER_RIGHT)
- gMultiuseSpriteTemplate.anims = gUnknown_082FF70C;
+ gMultiuseSpriteTemplate.anims = gAnims_MonPic;
else if (speciesTag > SPECIES_SHINY_TAG)
gMultiuseSpriteTemplate.anims = gMonFrontAnimsPtrTable[speciesTag - SPECIES_SHINY_TAG];
else
@@ -3952,9 +3927,9 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
{
u16 move = moves[i];
if (substruct1->moves[0] == move
- || substruct1->moves[1] == move
- || substruct1->moves[2] == move
- || substruct1->moves[3] == move)
+ || substruct1->moves[1] == move
+ || substruct1->moves[2] == move
+ || substruct1->moves[3] == move)
retVal |= gBitTable[i];
i++;
}
@@ -5366,7 +5341,7 @@ static void BufferStatRoseMessage(s32 arg0)
gBattlerTarget = gBattlerInMenuId;
StringCopy(gBattleTextBuff1, gStatNamesTable[sStatsToRaise[arg0]]);
StringCopy(gBattleTextBuff2, gText_StatRose);
- BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnsStatChanged2);
+ BattleStringExpandPlaceholdersToDisplayedString(gText_DefendersStatRose);
}
u8 *UseStatIncreaseItem(u16 itemId)
@@ -6605,12 +6580,12 @@ const u8 *GetTrainerPartnerName(void)
#define READ_PTR_FROM_TASK(taskId, dataId) \
(void*)( \
((u16)(gTasks[taskId].data[dataId]) | \
- ((u16)(gTasks[taskId].data[dataId + 1]) << 0x10)))
+ ((u16)(gTasks[taskId].data[dataId + 1]) << 16)))
#define STORE_PTR_IN_TASK(ptr, taskId, dataId) \
{ \
gTasks[taskId].data[dataId] = (u32)(ptr); \
- gTasks[taskId].data[dataId + 1] = (u32)(ptr) >> 0x10; \
+ gTasks[taskId].data[dataId + 1] = (u32)(ptr) >> 16; \
}
static void Task_AnimateAfterDelay(u8 taskId)
@@ -6627,7 +6602,7 @@ static void Task_PokemonSummaryAnimateAfterDelay(u8 taskId)
if (--gTasks[taskId].data[3] == 0)
{
StartMonSummaryAnimation(READ_PTR_FROM_TASK(taskId, 0), gTasks[taskId].data[2]);
- SummaryScreen_SetUnknownTaskId(0xFF);
+ SummaryScreen_SetAnimDelayTaskId(TASK_NONE);
DestroyTask(taskId);
}
}
@@ -6694,7 +6669,7 @@ void PokemonSummaryDoMonAnimation(struct Sprite* sprite, u16 species, bool8 oneF
STORE_PTR_IN_TASK(sprite, taskId, 0);
gTasks[taskId].data[2] = sMonFrontAnimIdsTable[species - 1];
gTasks[taskId].data[3] = sMonAnimationDelayTable[species - 1];
- SummaryScreen_SetUnknownTaskId(taskId);
+ SummaryScreen_SetAnimDelayTaskId(taskId);
SetSpriteCB_MonAnimDummy(sprite);
}
else
@@ -6852,7 +6827,7 @@ static void sub_806F1FC(struct Unknown_806F160_Struct* structPtr)
structPtr->frameImages[i * structPtr->field_0_0 + j].data = &structPtr->byteArrays[i][j * 0x800];
}
structPtr->templates[i].images = &structPtr->frameImages[i * structPtr->field_0_0];
- structPtr->templates[i].anims = gUnknown_082FF70C;
+ structPtr->templates[i].anims = gAnims_MonPic;
structPtr->templates[i].paletteTag = i;
}
}
@@ -6897,7 +6872,7 @@ struct Unknown_806F160_Struct *sub_806F2AC(u8 id, u8 arg1)
else
{
for (i = 0; i < structPtr->field_0_0; i++)
- structPtr->byteArrays[i] = structPtr->bytes + (structPtr->field_3_0 * (i << 0xD));
+ structPtr->byteArrays[i] = structPtr->bytes + (structPtr->field_3_0 * (i << 13));
}
structPtr->templates = AllocZeroed(sizeof(struct SpriteTemplate) * structPtr->field_0_0);
diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c
index da30963b5..8e90caeb8 100644
--- a/src/pokemon_animation.c
+++ b/src/pokemon_animation.c
@@ -10,832 +10,861 @@
#include "constants/battle_anim.h"
#include "constants/rgb.h"
-struct UnkAnimStruct
+/*
+ This file handles the movements of the Pokémon intro animations.
+
+ Each animation type is identified by an ANIM_* constant that
+ refers to a sprite callback to start the animation. These functions
+ are named Anim_<name> or Anim_<name>_<variant>. Many of these
+ functions share additional movement functions to do a variation of the
+ same movement (e.g. a faster or larger movement).
+ Vertical and Horizontal are frequently shortened to V and H.
+
+ Every front animation uses 1 of these ANIMs, and every back animation
+ uses a BACK_ANIM_* that refers to a set of 3 ANIM functions. Which of the
+ 3 that gets used depends on the Pokémon's nature (see sBackAnimationIds).
+
+ The table linking species to a BACK_ANIM is in this file (sSpeciesToBackAnimSet)
+ while the table linking species to an ANIM for their front animation is in
+ pokemon.c (sMonFrontAnimIdsTable).
+
+ These are the functions that will start an animation:
+ - LaunchAnimationTaskForFrontSprite
+ - LaunchAnimationTaskForBackSprite
+ - StartMonSummaryAnimation
+*/
+
+#define sDontFlip data[1] // TRUE if a normal animation, FALSE if Summary Screen animation
+
+struct PokemonAnimData
+{
+ u16 delay;
+ s16 speed; // Only used by 2 sets of animations
+ s16 runs; // Number of times to do the animation
+ s16 rotation;
+ s16 data; // General use
+};
+
+struct YellowFlashData
{
- u16 field_0;
- s16 field_2;
- s16 field_4;
- s16 field_6;
- s16 field_8;
+ bool8 isYellow;
+ u8 time;
};
-// this file's functions
-static void pokemonanimfunc_00(struct Sprite *sprite);
-static void pokemonanimfunc_01(struct Sprite *sprite);
-static void pokemonanimfunc_02(struct Sprite *sprite);
-static void pokemonanimfunc_03(struct Sprite *sprite);
-static void pokemonanimfunc_04(struct Sprite *sprite);
-static void pokemonanimfunc_05(struct Sprite *sprite);
-static void pokemonanimfunc_06(struct Sprite *sprite);
-static void pokemonanimfunc_07(struct Sprite *sprite);
-static void pokemonanimfunc_08(struct Sprite *sprite);
-static void pokemonanimfunc_09(struct Sprite *sprite);
-static void pokemonanimfunc_0A(struct Sprite *sprite);
-static void pokemonanimfunc_0B(struct Sprite *sprite);
-static void pokemonanimfunc_0C(struct Sprite *sprite);
-static void pokemonanimfunc_0D(struct Sprite *sprite);
-static void pokemonanimfunc_0E(struct Sprite *sprite);
-static void pokemonanimfunc_0F(struct Sprite *sprite);
-static void pokemonanimfunc_10(struct Sprite *sprite);
-static void pokemonanimfunc_11(struct Sprite *sprite);
-static void pokemonanimfunc_12(struct Sprite *sprite);
-static void pokemonanimfunc_13(struct Sprite *sprite);
-static void pokemonanimfunc_14(struct Sprite *sprite);
-static void pokemonanimfunc_15(struct Sprite *sprite);
-static void pokemonanimfunc_16(struct Sprite *sprite);
-static void pokemonanimfunc_17(struct Sprite *sprite);
-static void pokemonanimfunc_18(struct Sprite *sprite);
-static void pokemonanimfunc_19(struct Sprite *sprite);
-static void pokemonanimfunc_1A(struct Sprite *sprite);
-static void pokemonanimfunc_1B(struct Sprite *sprite);
-static void pokemonanimfunc_1C(struct Sprite *sprite);
-static void pokemonanimfunc_1D(struct Sprite *sprite);
-static void pokemonanimfunc_1E(struct Sprite *sprite);
-static void pokemonanimfunc_1F(struct Sprite *sprite);
-static void pokemonanimfunc_20(struct Sprite *sprite);
-static void pokemonanimfunc_21(struct Sprite *sprite);
-static void pokemonanimfunc_22(struct Sprite *sprite);
-static void pokemonanimfunc_23(struct Sprite *sprite);
-static void pokemonanimfunc_24(struct Sprite *sprite);
-static void pokemonanimfunc_25(struct Sprite *sprite);
-static void pokemonanimfunc_26(struct Sprite *sprite);
-static void pokemonanimfunc_27(struct Sprite *sprite);
-static void pokemonanimfunc_28(struct Sprite *sprite);
-static void pokemonanimfunc_29(struct Sprite *sprite);
-static void pokemonanimfunc_2A(struct Sprite *sprite);
-static void pokemonanimfunc_2B(struct Sprite *sprite);
-static void pokemonanimfunc_2C(struct Sprite *sprite);
-static void pokemonanimfunc_2D(struct Sprite *sprite);
-static void pokemonanimfunc_2E(struct Sprite *sprite);
-static void pokemonanimfunc_2F(struct Sprite *sprite);
-static void pokemonanimfunc_30(struct Sprite *sprite);
-static void pokemonanimfunc_31(struct Sprite *sprite);
-static void pokemonanimfunc_32(struct Sprite *sprite);
-static void pokemonanimfunc_33(struct Sprite *sprite);
-static void pokemonanimfunc_34(struct Sprite *sprite);
-static void pokemonanimfunc_35(struct Sprite *sprite);
-static void pokemonanimfunc_36(struct Sprite *sprite);
-static void pokemonanimfunc_37(struct Sprite *sprite);
-static void pokemonanimfunc_38(struct Sprite *sprite);
-static void pokemonanimfunc_39(struct Sprite *sprite);
-static void pokemonanimfunc_3A(struct Sprite *sprite);
-static void pokemonanimfunc_3B(struct Sprite *sprite);
-static void pokemonanimfunc_3C(struct Sprite *sprite);
-static void pokemonanimfunc_3D(struct Sprite *sprite);
-static void pokemonanimfunc_3E(struct Sprite *sprite);
-static void pokemonanimfunc_3F(struct Sprite *sprite);
-static void pokemonanimfunc_40(struct Sprite *sprite);
-static void pokemonanimfunc_41(struct Sprite *sprite);
-static void pokemonanimfunc_42(struct Sprite *sprite);
-static void pokemonanimfunc_43(struct Sprite *sprite);
-static void pokemonanimfunc_44(struct Sprite *sprite);
-static void pokemonanimfunc_45(struct Sprite *sprite);
-static void pokemonanimfunc_46(struct Sprite *sprite);
-static void pokemonanimfunc_47(struct Sprite *sprite);
-static void pokemonanimfunc_48(struct Sprite *sprite);
-static void pokemonanimfunc_49(struct Sprite *sprite);
-static void pokemonanimfunc_4A(struct Sprite *sprite);
-static void pokemonanimfunc_4B(struct Sprite *sprite);
-static void pokemonanimfunc_4C(struct Sprite *sprite);
-static void pokemonanimfunc_4D(struct Sprite *sprite);
-static void pokemonanimfunc_4E(struct Sprite *sprite);
-static void pokemonanimfunc_4F(struct Sprite *sprite);
-static void pokemonanimfunc_50(struct Sprite *sprite);
-static void pokemonanimfunc_51(struct Sprite *sprite);
-static void pokemonanimfunc_52(struct Sprite *sprite);
-static void pokemonanimfunc_53(struct Sprite *sprite);
-static void pokemonanimfunc_54(struct Sprite *sprite);
-static void pokemonanimfunc_55(struct Sprite *sprite);
-static void pokemonanimfunc_56(struct Sprite *sprite);
-static void pokemonanimfunc_57(struct Sprite *sprite);
-static void pokemonanimfunc_58(struct Sprite *sprite);
-static void pokemonanimfunc_59(struct Sprite *sprite);
-static void pokemonanimfunc_5A(struct Sprite *sprite);
-static void pokemonanimfunc_5B(struct Sprite *sprite);
-static void pokemonanimfunc_5C(struct Sprite *sprite);
-static void pokemonanimfunc_5D(struct Sprite *sprite);
-static void pokemonanimfunc_5E(struct Sprite *sprite);
-static void pokemonanimfunc_5F(struct Sprite *sprite);
-static void pokemonanimfunc_60(struct Sprite *sprite);
-static void pokemonanimfunc_61(struct Sprite *sprite);
-static void pokemonanimfunc_62(struct Sprite *sprite);
-static void pokemonanimfunc_63(struct Sprite *sprite);
-static void pokemonanimfunc_64(struct Sprite *sprite);
-static void pokemonanimfunc_65(struct Sprite *sprite);
-static void pokemonanimfunc_66(struct Sprite *sprite);
-static void pokemonanimfunc_67(struct Sprite *sprite);
-static void pokemonanimfunc_68(struct Sprite *sprite);
-static void pokemonanimfunc_69(struct Sprite *sprite);
-static void pokemonanimfunc_6A(struct Sprite *sprite);
-static void pokemonanimfunc_6B(struct Sprite *sprite);
-static void pokemonanimfunc_6C(struct Sprite *sprite);
-static void pokemonanimfunc_6D(struct Sprite *sprite);
-static void pokemonanimfunc_6E(struct Sprite *sprite);
-static void pokemonanimfunc_6F(struct Sprite *sprite);
-static void pokemonanimfunc_70(struct Sprite *sprite);
-static void pokemonanimfunc_71(struct Sprite *sprite);
-static void pokemonanimfunc_72(struct Sprite *sprite);
-static void pokemonanimfunc_73(struct Sprite *sprite);
-static void pokemonanimfunc_74(struct Sprite *sprite);
-static void pokemonanimfunc_75(struct Sprite *sprite);
-static void pokemonanimfunc_76(struct Sprite *sprite);
-static void pokemonanimfunc_77(struct Sprite *sprite);
-static void pokemonanimfunc_78(struct Sprite *sprite);
-static void pokemonanimfunc_79(struct Sprite *sprite);
-static void pokemonanimfunc_7A(struct Sprite *sprite);
-static void pokemonanimfunc_7B(struct Sprite *sprite);
-static void pokemonanimfunc_7C(struct Sprite *sprite);
-static void pokemonanimfunc_7D(struct Sprite *sprite);
-static void pokemonanimfunc_7E(struct Sprite *sprite);
-static void pokemonanimfunc_7F(struct Sprite *sprite);
-static void pokemonanimfunc_80(struct Sprite *sprite);
-static void pokemonanimfunc_81(struct Sprite *sprite);
-static void pokemonanimfunc_82(struct Sprite *sprite);
-static void pokemonanimfunc_83(struct Sprite *sprite);
-static void pokemonanimfunc_84(struct Sprite *sprite);
-static void pokemonanimfunc_85(struct Sprite *sprite);
-static void pokemonanimfunc_86(struct Sprite *sprite);
-static void pokemonanimfunc_87(struct Sprite *sprite);
-static void pokemonanimfunc_88(struct Sprite *sprite);
-static void pokemonanimfunc_89(struct Sprite *sprite);
-static void pokemonanimfunc_8A(struct Sprite *sprite);
-static void pokemonanimfunc_8B(struct Sprite *sprite);
-static void pokemonanimfunc_8C(struct Sprite *sprite);
-static void pokemonanimfunc_8D(struct Sprite *sprite);
-static void pokemonanimfunc_8E(struct Sprite *sprite);
-static void pokemonanimfunc_8F(struct Sprite *sprite);
-static void pokemonanimfunc_90(struct Sprite *sprite);
-static void pokemonanimfunc_91(struct Sprite *sprite);
-static void pokemonanimfunc_92(struct Sprite *sprite);
-static void pokemonanimfunc_93(struct Sprite *sprite);
-static void pokemonanimfunc_94(struct Sprite *sprite);
-static void pokemonanimfunc_95(struct Sprite *sprite);
-static void pokemonanimfunc_96(struct Sprite *sprite);
-
-static void SpriteCB_SetDummyOnAnimEnd(struct Sprite *sprite);
-
-#define STRUCT_COUNT 4
-
-// IWRAM bss
-static struct UnkAnimStruct sUnknown_03001240[STRUCT_COUNT];
-static u8 sUnknown_03001270;
-static bool32 sUnknown_03001274;
-
-// const rom data
+static void Anim_VerticalSquishBounce(struct Sprite *sprite);
+static void Anim_CircularStretchTwice(struct Sprite *sprite);
+static void Anim_HorizontalVibrate(struct Sprite *sprite);
+static void Anim_HorizontalSlide(struct Sprite *sprite);
+static void Anim_VerticalSlide(struct Sprite *sprite);
+static void Anim_BounceRotateToSides(struct Sprite *sprite);
+static void Anim_VerticalJumpsHorizontalJumps(struct Sprite *sprite);
+static void Anim_RotateToSides(struct Sprite *sprite);
+static void Anim_RotateToSides_Twice(struct Sprite *sprite);
+static void Anim_GrowVibrate(struct Sprite *sprite);
+static void Anim_ZigzagFast(struct Sprite *sprite);
+static void Anim_SwingConcave(struct Sprite *sprite);
+static void Anim_SwingConcave_Fast(struct Sprite *sprite);
+static void Anim_SwingConvex(struct Sprite *sprite);
+static void Anim_SwingConvex_Fast(struct Sprite *sprite);
+static void Anim_HorizontalShake(struct Sprite *sprite);
+static void Anim_VerticalShake(struct Sprite *sprite);
+static void Anim_CircularVibrate(struct Sprite *sprite);
+static void Anim_Twist(struct Sprite *sprite);
+static void Anim_ShrinkGrow(struct Sprite *sprite);
+static void Anim_CircleCounterclockwise(struct Sprite *sprite);
+static void Anim_GlowBlack(struct Sprite *sprite);
+static void Anim_HorizontalStretch(struct Sprite *sprite);
+static void Anim_VerticalStretch(struct Sprite *sprite);
+static void Anim_RisingWobble(struct Sprite *sprite);
+static void Anim_VerticalShakeTwice(struct Sprite *sprite);
+static void Anim_TipMoveForward(struct Sprite *sprite);
+static void Anim_HorizontalPivot(struct Sprite *sprite);
+static void Anim_VerticalSlideWobble(struct Sprite *sprite);
+static void Anim_HorizontalSlideWobble(struct Sprite *sprite);
+static void Anim_VerticalJumps_Big(struct Sprite *sprite);
+static void Anim_Spin_Long(struct Sprite *sprite);
+static void Anim_GlowOrange(struct Sprite *sprite);
+static void Anim_GlowRed(struct Sprite *sprite);
+static void Anim_GlowBlue(struct Sprite *sprite);
+static void Anim_GlowYellow(struct Sprite *sprite);
+static void Anim_GlowPurple(struct Sprite *sprite);
+static void Anim_BackAndLunge(struct Sprite *sprite);
+static void Anim_BackFlip(struct Sprite *sprite);
+static void Anim_Flicker(struct Sprite *sprite);
+static void Anim_BackFlipBig(struct Sprite *sprite);
+static void Anim_FrontFlip(struct Sprite *sprite);
+static void Anim_TumblingFrontFlip(struct Sprite *sprite);
+static void Anim_Figure8(struct Sprite *sprite);
+static void Anim_FlashYellow(struct Sprite *sprite);
+static void Anim_SwingConcave_FastShort(struct Sprite *sprite);
+static void Anim_SwingConvex_FastShort(struct Sprite *sprite);
+static void Anim_RotateUpSlamDown(struct Sprite *sprite);
+static void Anim_DeepVerticalSquishBounce(struct Sprite *sprite);
+static void Anim_HorizontalJumps(struct Sprite *sprite);
+static void Anim_HorizontalJumpsVerticalStretch(struct Sprite *sprite);
+static void Anim_RotateToSides_Fast(struct Sprite *sprite);
+static void Anim_RotateUpToSides(struct Sprite *sprite);
+static void Anim_FlickerIncreasing(struct Sprite *sprite);
+static void Anim_TipHopForward(struct Sprite *sprite);
+static void Anim_PivotShake(struct Sprite *sprite);
+static void Anim_TipAndShake(struct Sprite *sprite);
+static void Anim_VibrateToCorners(struct Sprite *sprite);
+static void Anim_GrowInStages(struct Sprite *sprite);
+static void Anim_VerticalSpring(struct Sprite *sprite);
+static void Anim_VerticalRepeatedSpring(struct Sprite *sprite);
+static void Anim_SpringRising(struct Sprite *sprite);
+static void Anim_HorizontalSpring(struct Sprite *sprite);
+static void Anim_HorizontalRepeatedSpring_Slow(struct Sprite *sprite);
+static void Anim_HorizontalSlideShrink(struct Sprite *sprite);
+static void Anim_LungeGrow(struct Sprite *sprite);
+static void Anim_CircleIntoBackground(struct Sprite *sprite);
+static void Anim_RapidHorizontalHops(struct Sprite *sprite);
+static void Anim_FourPetal(struct Sprite *sprite);
+static void Anim_VerticalSquishBounce_Slow(struct Sprite *sprite);
+static void Anim_HorizontalSlide_Slow(struct Sprite *sprite);
+static void Anim_VerticalSlide_Slow(struct Sprite *sprite);
+static void Anim_BounceRotateToSides_Small(struct Sprite *sprite);
+static void Anim_BounceRotateToSides_Slow(struct Sprite *sprite);
+static void Anim_BounceRotateToSides_SmallSlow(struct Sprite *sprite);
+static void Anim_ZigzagSlow(struct Sprite *sprite);
+static void Anim_HorizontalShake_Slow(struct Sprite *sprite);
+static void Anim_VertialShake_Slow(struct Sprite *sprite);
+static void Anim_Twist_Twice(struct Sprite *sprite);
+static void Anim_CircleCounterclockwise_Slow(struct Sprite *sprite);
+static void Anim_VerticalShakeTwice_Slow(struct Sprite *sprite);
+static void Anim_VerticalSlideWobble_Small(struct Sprite *sprite);
+static void Anim_VerticalJumps_Small(struct Sprite *sprite);
+static void Anim_Spin(struct Sprite *sprite);
+static void Anim_TumblingFrontFlip_Twice(struct Sprite *sprite);
+static void Anim_DeepVerticalSquishBounce_Twice(struct Sprite *sprite);
+static void Anim_HorizontalJumpsVerticalStretch_Twice(struct Sprite *sprite);
+static void Anim_VerticalShakeBack(struct Sprite *sprite);
+static void Anim_VerticalShakeBack_Slow(struct Sprite *sprite);
+static void Anim_VerticalShakeHorizontalSlide_Slow(struct Sprite *sprite);
+static void Anim_VerticalStretchBothEnds_Slow(struct Sprite *sprite);
+static void Anim_HorizontalStretchFar_Slow(struct Sprite *sprite);
+static void Anim_VerticalShakeLowTwice(struct Sprite *sprite);
+static void Anim_HorizontalShake_Fast(struct Sprite *sprite);
+static void Anim_HorizontalSlide_Fast(struct Sprite *sprite);
+static void Anim_HorizontalVibrate_Fast(struct Sprite *sprite);
+static void Anim_HorizontalVibrate_Fastest(struct Sprite *sprite);
+static void Anim_VerticalShakeBack_Fast(struct Sprite *sprite);
+static void Anim_VerticalShakeLowTwice_Slow(struct Sprite *sprite);
+static void Anim_VerticalShakeLowTwice_Fast(struct Sprite *sprite);
+static void Anim_CircleCounterclockwise_Long(struct Sprite *sprite);
+static void Anim_GrowStutter_Slow(struct Sprite *sprite);
+static void Anim_VerticalShakeHorizontalSlide(struct Sprite *sprite);
+static void Anim_VerticalShakeHorizontalSlide_Fast(struct Sprite *sprite);
+static void Anim_TriangleDown_Slow(struct Sprite *sprite);
+static void Anim_TriangleDown(struct Sprite *sprite);
+static void Anim_TriangleDown_Fast(struct Sprite *sprite);
+static void Anim_Grow(struct Sprite *sprite);
+static void Anim_Grow_Twice(struct Sprite *sprite);
+static void Anim_HorizontalSpring_Fast(struct Sprite *sprite);
+static void Anim_HorizontalSpring_Slow(struct Sprite *sprite);
+static void Anim_HorizontalRepeatedSpring_Fast(struct Sprite *sprite);
+static void Anim_HorizontalRepeatedSpring(struct Sprite *sprite);
+static void Anim_ShrinkGrow_Fast(struct Sprite *sprite);
+static void Anim_ShrinkGrow_Slow(struct Sprite *sprite);
+static void Anim_VerticalStretchBothEnds(struct Sprite *sprite);
+static void Anim_VerticalStretchBothEnds_Twice(struct Sprite *sprite);
+static void Anim_HorizontalStretchFar_Twice(struct Sprite *sprite);
+static void Anim_HorizontalStretchFar(struct Sprite *sprite);
+static void Anim_GrowStutter_Twice(struct Sprite *sprite);
+static void Anim_GrowStutter(struct Sprite *sprite);
+static void Anim_ConcaveArcLarge_Slow(struct Sprite *sprite);
+static void Anim_ConcaveArcLarge(struct Sprite *sprite);
+static void Anim_ConcaveArcLarge_Twice(struct Sprite *sprite);
+static void Anim_ConvexDoubleArc_Slow(struct Sprite *sprite);
+static void Anim_ConvexDoubleArc(struct Sprite *sprite);
+static void Anim_ConvexDoubleArc_Twice(struct Sprite *sprite);
+static void Anim_ConcaveArcSmall_Slow(struct Sprite *sprite);
+static void Anim_ConcaveArcSmall(struct Sprite *sprite);
+static void Anim_ConcaveArcSmall_Twice(struct Sprite *sprite);
+static void Anim_HorizontalDip(struct Sprite *sprite);
+static void Anim_HorizontalDip_Fast(struct Sprite *sprite);
+static void Anim_HorizontalDip_Twice(struct Sprite *sprite);
+static void Anim_ShrinkGrowVibrate_Fast(struct Sprite *sprite);
+static void Anim_ShrinkGrowVibrate(struct Sprite *sprite);
+static void Anim_ShrinkGrowVibrate_Slow(struct Sprite *sprite);
+static void Anim_JoltRight_Fast(struct Sprite *sprite);
+static void Anim_JoltRight(struct Sprite *sprite);
+static void Anim_JoltRight_Slow(struct Sprite *sprite);
+static void Anim_ShakeFlashYellow_Fast(struct Sprite *sprite);
+static void Anim_ShakeFlashYellow(struct Sprite *sprite);
+static void Anim_ShakeFlashYellow_Slow(struct Sprite *sprite);
+static void Anim_ShakeGlowRed_Fast(struct Sprite *sprite);
+static void Anim_ShakeGlowRed(struct Sprite *sprite);
+static void Anim_ShakeGlowRed_Slow(struct Sprite *sprite);
+static void Anim_ShakeGlowGreen_Fast(struct Sprite *sprite);
+static void Anim_ShakeGlowGreen(struct Sprite *sprite);
+static void Anim_ShakeGlowGreen_Slow(struct Sprite *sprite);
+static void Anim_ShakeGlowBlue_Fast(struct Sprite *sprite);
+static void Anim_ShakeGlowBlue(struct Sprite *sprite);
+static void Anim_ShakeGlowBlue_Slow(struct Sprite *sprite);
+
+static void WaitAnimEnd(struct Sprite *sprite);
+
+static struct PokemonAnimData sAnims[MAX_BATTLERS_COUNT];
+static u8 sAnimIdx;
+static bool32 sIsSummaryAnim;
+
static const u8 sSpeciesToBackAnimSet[] =
{
- [SPECIES_BULBASAUR] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_IVYSAUR] = BACK_ANIM_H_SLIDE,
- [SPECIES_VENUSAUR] = BACK_ANIM_HORIZONTAL_SHAKE,
- [SPECIES_CHARMANDER] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
+ [SPECIES_BULBASAUR] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_IVYSAUR] = BACK_ANIM_H_SLIDE,
+ [SPECIES_VENUSAUR] = BACK_ANIM_H_SHAKE,
+ [SPECIES_CHARMANDER] = BACK_ANIM_CONCAVE_ARC_SMALL,
[SPECIES_CHARMELEON] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_CHARIZARD] = BACK_ANIM_FADE_RED_WITH_SHAKE,
- [SPECIES_SQUIRTLE] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_WARTORTLE] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_BLASTOISE] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
- [SPECIES_CATERPIE] = BACK_ANIM_H_SLIDE,
- [SPECIES_METAPOD] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_BUTTERFREE] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_WEEDLE] = BACK_ANIM_H_SLIDE,
- [SPECIES_KAKUNA] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_BEEDRILL] = BACK_ANIM_H_SLIDE_QUICK,
- [SPECIES_PIDGEY] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_PIDGEOTTO] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_PIDGEOT] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_RATTATA] = BACK_ANIM_V_SHAKE_WITH_H_SLIDE,
- [SPECIES_RATICATE] = BACK_ANIM_V_SHAKE_WITH_H_SLIDE,
- [SPECIES_SPEAROW] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_FEAROW] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_EKANS] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_ARBOK] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_PIKACHU] = BACK_ANIM_FLASH_YELLOW_WITH_SHAKE,
- [SPECIES_RAICHU] = BACK_ANIM_FLASH_YELLOW_WITH_SHAKE,
- [SPECIES_SANDSHREW] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_SANDSLASH] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
- [SPECIES_NIDORAN_F] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_NIDORINA] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_NIDOQUEEN] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_NIDORAN_M] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_NIDORINO] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_NIDOKING] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_CLEFAIRY] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_CLEFABLE] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_VULPIX] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
- [SPECIES_NINETALES] = BACK_ANIM_H_SLIDE_QUICK,
+ [SPECIES_CHARIZARD] = BACK_ANIM_SHAKE_GLOW_RED,
+ [SPECIES_SQUIRTLE] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_WARTORTLE] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_BLASTOISE] = BACK_ANIM_SHAKE_GLOW_BLUE,
+ [SPECIES_CATERPIE] = BACK_ANIM_H_SLIDE,
+ [SPECIES_METAPOD] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_BUTTERFREE] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_WEEDLE] = BACK_ANIM_H_SLIDE,
+ [SPECIES_KAKUNA] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_BEEDRILL] = BACK_ANIM_H_VIBRATE,
+ [SPECIES_PIDGEY] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_PIDGEOTTO] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_PIDGEOT] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_RATTATA] = BACK_ANIM_V_SHAKE_H_SLIDE,
+ [SPECIES_RATICATE] = BACK_ANIM_V_SHAKE_H_SLIDE,
+ [SPECIES_SPEAROW] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_FEAROW] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_EKANS] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_ARBOK] = BACK_ANIM_V_SHAKE,
+ [SPECIES_PIKACHU] = BACK_ANIM_SHAKE_FLASH_YELLOW,
+ [SPECIES_RAICHU] = BACK_ANIM_SHAKE_FLASH_YELLOW,
+ [SPECIES_SANDSHREW] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_SANDSLASH] = BACK_ANIM_CONCAVE_ARC_LARGE,
+ [SPECIES_NIDORAN_F] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_NIDORINA] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_NIDOQUEEN] = BACK_ANIM_V_SHAKE,
+ [SPECIES_NIDORAN_M] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_NIDORINO] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_NIDOKING] = BACK_ANIM_V_SHAKE,
+ [SPECIES_CLEFAIRY] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_CLEFABLE] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_VULPIX] = BACK_ANIM_CONCAVE_ARC_LARGE,
+ [SPECIES_NINETALES] = BACK_ANIM_H_VIBRATE,
[SPECIES_JIGGLYPUFF] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_WIGGLYTUFF] = BACK_ANIM_GROW_1,
- [SPECIES_ZUBAT] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_GOLBAT] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_ODDISH] = BACK_ANIM_H_SLIDE,
- [SPECIES_GLOOM] = BACK_ANIM_H_SLIDE,
- [SPECIES_VILEPLUME] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_PARAS] = BACK_ANIM_H_SLIDE,
- [SPECIES_PARASECT] = BACK_ANIM_HORIZONTAL_SHAKE,
- [SPECIES_VENONAT] = BACK_ANIM_V_SHAKE_WITH_H_SLIDE,
- [SPECIES_VENOMOTH] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_DIGLETT] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_DUGTRIO] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_MEOWTH] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
- [SPECIES_PERSIAN] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_PSYDUCK] = BACK_ANIM_H_SLIDE,
- [SPECIES_GOLDUCK] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_MANKEY] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
- [SPECIES_PRIMEAPE] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
- [SPECIES_GROWLITHE] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_ARCANINE] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_POLIWAG] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_POLIWHIRL] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_POLIWRATH] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
- [SPECIES_ABRA] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_KADABRA] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_ALAKAZAM] = BACK_ANIM_GROW_2,
- [SPECIES_MACHOP] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_MACHOKE] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_MACHAMP] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_BELLSPROUT] = BACK_ANIM_VERTICAL_STRETCH,
- [SPECIES_WEEPINBELL] = BACK_ANIM_VERTICAL_STRETCH,
- [SPECIES_VICTREEBEL] = BACK_ANIM_VERTICAL_STRETCH,
- [SPECIES_TENTACOOL] = BACK_ANIM_H_SLIDE,
+ [SPECIES_WIGGLYTUFF] = BACK_ANIM_GROW,
+ [SPECIES_ZUBAT] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_GOLBAT] = BACK_ANIM_V_SHAKE,
+ [SPECIES_ODDISH] = BACK_ANIM_H_SLIDE,
+ [SPECIES_GLOOM] = BACK_ANIM_H_SLIDE,
+ [SPECIES_VILEPLUME] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_PARAS] = BACK_ANIM_H_SLIDE,
+ [SPECIES_PARASECT] = BACK_ANIM_H_SHAKE,
+ [SPECIES_VENONAT] = BACK_ANIM_V_SHAKE_H_SLIDE,
+ [SPECIES_VENOMOTH] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_DIGLETT] = BACK_ANIM_V_SHAKE,
+ [SPECIES_DUGTRIO] = BACK_ANIM_V_SHAKE,
+ [SPECIES_MEOWTH] = BACK_ANIM_CONCAVE_ARC_LARGE,
+ [SPECIES_PERSIAN] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_PSYDUCK] = BACK_ANIM_H_SLIDE,
+ [SPECIES_GOLDUCK] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_MANKEY] = BACK_ANIM_CONCAVE_ARC_LARGE,
+ [SPECIES_PRIMEAPE] = BACK_ANIM_CONCAVE_ARC_LARGE,
+ [SPECIES_GROWLITHE] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_ARCANINE] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_POLIWAG] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_POLIWHIRL] = BACK_ANIM_V_SHAKE,
+ [SPECIES_POLIWRATH] = BACK_ANIM_V_SHAKE_LOW,
+ [SPECIES_ABRA] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_KADABRA] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_ALAKAZAM] = BACK_ANIM_GROW_STUTTER,
+ [SPECIES_MACHOP] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_MACHOKE] = BACK_ANIM_V_SHAKE,
+ [SPECIES_MACHAMP] = BACK_ANIM_V_SHAKE,
+ [SPECIES_BELLSPROUT] = BACK_ANIM_V_STRETCH,
+ [SPECIES_WEEPINBELL] = BACK_ANIM_V_STRETCH,
+ [SPECIES_VICTREEBEL] = BACK_ANIM_V_STRETCH,
+ [SPECIES_TENTACOOL] = BACK_ANIM_H_SLIDE,
[SPECIES_TENTACRUEL] = BACK_ANIM_H_SLIDE,
- [SPECIES_GEODUDE] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
- [SPECIES_GRAVELER] = BACK_ANIM_HORIZONTAL_SHAKE,
- [SPECIES_GOLEM] = BACK_ANIM_HORIZONTAL_SHAKE,
- [SPECIES_PONYTA] = BACK_ANIM_FADE_RED_WITH_SHAKE,
- [SPECIES_RAPIDASH] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_SLOWPOKE] = BACK_ANIM_H_SLIDE,
- [SPECIES_SLOWBRO] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_MAGNEMITE] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_MAGNETON] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_FARFETCHD] = BACK_ANIM_H_SLIDE,
- [SPECIES_DODUO] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_DODRIO] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_SEEL] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_DEWGONG] = BACK_ANIM_H_SLIDE,
- [SPECIES_GRIMER] = BACK_ANIM_VERTICAL_STRETCH,
- [SPECIES_MUK] = BACK_ANIM_HORIZONTAL_STRETCH,
- [SPECIES_SHELLDER] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_CLOYSTER] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_GASTLY] = BACK_ANIM_H_SLIDE_QUICK,
- [SPECIES_HAUNTER] = BACK_ANIM_H_SLIDE_QUICK,
- [SPECIES_GENGAR] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_ONIX] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_DROWZEE] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_HYPNO] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_KRABBY] = BACK_ANIM_V_SHAKE_WITH_H_SLIDE,
- [SPECIES_KINGLER] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_VOLTORB] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_ELECTRODE] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_EXEGGCUTE] = BACK_ANIM_H_SLIDE,
- [SPECIES_EXEGGUTOR] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
- [SPECIES_CUBONE] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_MAROWAK] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
- [SPECIES_HITMONLEE] = BACK_ANIM_H_SLIDE,
- [SPECIES_HITMONCHAN] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_LICKITUNG] = BACK_ANIM_H_SLIDE,
- [SPECIES_KOFFING] = BACK_ANIM_GROW_1,
- [SPECIES_WEEZING] = BACK_ANIM_GROW_1,
- [SPECIES_RHYHORN] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
- [SPECIES_RHYDON] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
- [SPECIES_CHANSEY] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_TANGELA] = BACK_ANIM_VERTICAL_STRETCH,
- [SPECIES_KANGASKHAN] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_HORSEA] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_SEADRA] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_GOLDEEN] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_SEAKING] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_STARYU] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_STARMIE] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
- [SPECIES_MR_MIME] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_SCYTHER] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_JYNX] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_ELECTABUZZ] = BACK_ANIM_FLASH_YELLOW_WITH_SHAKE,
- [SPECIES_MAGMAR] = BACK_ANIM_FADE_RED_WITH_SHAKE,
- [SPECIES_PINSIR] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
- [SPECIES_TAUROS] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
- [SPECIES_MAGIKARP] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
- [SPECIES_GYARADOS] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_LAPRAS] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
- [SPECIES_DITTO] = BACK_ANIM_SHRINK_GROW_1,
- [SPECIES_EEVEE] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_VAPOREON] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
- [SPECIES_JOLTEON] = BACK_ANIM_FLASH_YELLOW_WITH_SHAKE,
- [SPECIES_FLAREON] = BACK_ANIM_FADE_RED_WITH_SHAKE,
- [SPECIES_PORYGON] = BACK_ANIM_H_SLIDE_QUICK,
- [SPECIES_OMANYTE] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_OMASTAR] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_KABUTO] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_KABUTOPS] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_GEODUDE] = BACK_ANIM_V_SHAKE_LOW,
+ [SPECIES_GRAVELER] = BACK_ANIM_H_SHAKE,
+ [SPECIES_GOLEM] = BACK_ANIM_H_SHAKE,
+ [SPECIES_PONYTA] = BACK_ANIM_SHAKE_GLOW_RED,
+ [SPECIES_RAPIDASH] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_SLOWPOKE] = BACK_ANIM_H_SLIDE,
+ [SPECIES_SLOWBRO] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_MAGNEMITE] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_MAGNETON] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_FARFETCHD] = BACK_ANIM_H_SLIDE,
+ [SPECIES_DODUO] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_DODRIO] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_SEEL] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_DEWGONG] = BACK_ANIM_H_SLIDE,
+ [SPECIES_GRIMER] = BACK_ANIM_V_STRETCH,
+ [SPECIES_MUK] = BACK_ANIM_H_STRETCH,
+ [SPECIES_SHELLDER] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_CLOYSTER] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_GASTLY] = BACK_ANIM_H_VIBRATE,
+ [SPECIES_HAUNTER] = BACK_ANIM_H_VIBRATE,
+ [SPECIES_GENGAR] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_ONIX] = BACK_ANIM_V_SHAKE,
+ [SPECIES_DROWZEE] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_HYPNO] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_KRABBY] = BACK_ANIM_V_SHAKE_H_SLIDE,
+ [SPECIES_KINGLER] = BACK_ANIM_V_SHAKE,
+ [SPECIES_VOLTORB] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_ELECTRODE] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_EXEGGCUTE] = BACK_ANIM_H_SLIDE,
+ [SPECIES_EXEGGUTOR] = BACK_ANIM_CONCAVE_ARC_LARGE,
+ [SPECIES_CUBONE] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_MAROWAK] = BACK_ANIM_CONCAVE_ARC_LARGE,
+ [SPECIES_HITMONLEE] = BACK_ANIM_H_SLIDE,
+ [SPECIES_HITMONCHAN] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_LICKITUNG] = BACK_ANIM_H_SLIDE,
+ [SPECIES_KOFFING] = BACK_ANIM_GROW,
+ [SPECIES_WEEZING] = BACK_ANIM_GROW,
+ [SPECIES_RHYHORN] = BACK_ANIM_V_SHAKE_LOW,
+ [SPECIES_RHYDON] = BACK_ANIM_V_SHAKE_LOW,
+ [SPECIES_CHANSEY] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_TANGELA] = BACK_ANIM_V_STRETCH,
+ [SPECIES_KANGASKHAN] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_HORSEA] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_SEADRA] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_GOLDEEN] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_SEAKING] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_STARYU] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_STARMIE] = BACK_ANIM_SHAKE_GLOW_BLUE,
+ [SPECIES_MR_MIME] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_SCYTHER] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_JYNX] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_ELECTABUZZ] = BACK_ANIM_SHAKE_FLASH_YELLOW,
+ [SPECIES_MAGMAR] = BACK_ANIM_SHAKE_GLOW_RED,
+ [SPECIES_PINSIR] = BACK_ANIM_V_SHAKE_LOW,
+ [SPECIES_TAUROS] = BACK_ANIM_V_SHAKE_LOW,
+ [SPECIES_MAGIKARP] = BACK_ANIM_CONCAVE_ARC_LARGE,
+ [SPECIES_GYARADOS] = BACK_ANIM_V_SHAKE,
+ [SPECIES_LAPRAS] = BACK_ANIM_SHAKE_GLOW_BLUE,
+ [SPECIES_DITTO] = BACK_ANIM_SHRINK_GROW,
+ [SPECIES_EEVEE] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_VAPOREON] = BACK_ANIM_SHAKE_GLOW_BLUE,
+ [SPECIES_JOLTEON] = BACK_ANIM_SHAKE_FLASH_YELLOW,
+ [SPECIES_FLAREON] = BACK_ANIM_SHAKE_GLOW_RED,
+ [SPECIES_PORYGON] = BACK_ANIM_H_VIBRATE,
+ [SPECIES_OMANYTE] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_OMASTAR] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_KABUTO] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_KABUTOPS] = BACK_ANIM_JOLT_RIGHT,
[SPECIES_AERODACTYL] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_SNORLAX] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_ARTICUNO] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
- [SPECIES_ZAPDOS] = BACK_ANIM_FLASH_YELLOW_WITH_SHAKE,
- [SPECIES_MOLTRES] = BACK_ANIM_FADE_RED_WITH_SHAKE,
- [SPECIES_DRATINI] = BACK_ANIM_H_SLIDE,
- [SPECIES_DRAGONAIR] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_DRAGONITE] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_MEWTWO] = BACK_ANIM_GROW_2,
- [SPECIES_MEW] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_CHIKORITA] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_BAYLEEF] = BACK_ANIM_H_SLIDE,
- [SPECIES_MEGANIUM] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_CYNDAQUIL] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_QUILAVA] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_TYPHLOSION] = BACK_ANIM_FADE_RED_WITH_SHAKE,
- [SPECIES_TOTODILE] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_CROCONAW] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_FERALIGATR] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_SENTRET] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_FURRET] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
- [SPECIES_HOOTHOOT] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_NOCTOWL] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_LEDYBA] = BACK_ANIM_V_SHAKE_WITH_H_SLIDE,
- [SPECIES_LEDIAN] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_SPINARAK] = BACK_ANIM_V_SHAKE_WITH_H_SLIDE,
- [SPECIES_ARIADOS] = BACK_ANIM_H_SLIDE,
- [SPECIES_CROBAT] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_CHINCHOU] = BACK_ANIM_VERTICAL_STRETCH,
- [SPECIES_LANTURN] = BACK_ANIM_FLASH_YELLOW_WITH_SHAKE,
- [SPECIES_PICHU] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_CLEFFA] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_IGGLYBUFF] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_TOGEPI] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_TOGETIC] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_NATU] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_XATU] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_MAREEP] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_FLAAFFY] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_AMPHAROS] = BACK_ANIM_FLASH_YELLOW_WITH_SHAKE,
- [SPECIES_BELLOSSOM] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_MARILL] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_AZUMARILL] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_SUDOWOODO] = BACK_ANIM_H_SLIDE,
- [SPECIES_POLITOED] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
- [SPECIES_HOPPIP] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_SKIPLOOM] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_JUMPLUFF] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_AIPOM] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
- [SPECIES_SUNKERN] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_SUNFLORA] = BACK_ANIM_H_SLIDE,
- [SPECIES_YANMA] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_WOOPER] = BACK_ANIM_VERTICAL_STRETCH,
- [SPECIES_QUAGSIRE] = BACK_ANIM_H_SLIDE,
- [SPECIES_ESPEON] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_UMBREON] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_MURKROW] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_SLOWKING] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_MISDREAVUS] = BACK_ANIM_H_SLIDE_QUICK,
- [SPECIES_UNOWN] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_WOBBUFFET] = BACK_ANIM_VERTICAL_STRETCH,
- [SPECIES_GIRAFARIG] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_PINECO] = BACK_ANIM_HORIZONTAL_SHAKE,
- [SPECIES_FORRETRESS] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_DUNSPARCE] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_GLIGAR] = BACK_ANIM_SHRINK_GROW_1,
- [SPECIES_STEELIX] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_SNUBBULL] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_GRANBULL] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_QWILFISH] = BACK_ANIM_GROW_2,
- [SPECIES_SCIZOR] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_SHUCKLE] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_HERACROSS] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_SNEASEL] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_TEDDIURSA] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_URSARING] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_SLUGMA] = BACK_ANIM_FADE_RED_WITH_SHAKE,
- [SPECIES_MAGCARGO] = BACK_ANIM_FADE_RED_WITH_SHAKE,
- [SPECIES_SWINUB] = BACK_ANIM_V_SHAKE_WITH_H_SLIDE,
- [SPECIES_PILOSWINE] = BACK_ANIM_HORIZONTAL_SHAKE,
- [SPECIES_CORSOLA] = BACK_ANIM_H_SLIDE,
- [SPECIES_REMORAID] = BACK_ANIM_H_SLIDE,
- [SPECIES_OCTILLERY] = BACK_ANIM_SHRINK_GROW_1,
- [SPECIES_DELIBIRD] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_MANTINE] = BACK_ANIM_H_SLIDE,
- [SPECIES_SKARMORY] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_HOUNDOUR] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_HOUNDOOM] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_KINGDRA] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
- [SPECIES_PHANPY] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_DONPHAN] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
- [SPECIES_PORYGON2] = BACK_ANIM_H_SLIDE_QUICK,
- [SPECIES_STANTLER] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_SMEARGLE] = BACK_ANIM_H_SLIDE,
- [SPECIES_TYROGUE] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_HITMONTOP] = BACK_ANIM_CIRCLE_MOVE_COUNTERCLOCKWISE,
- [SPECIES_SMOOCHUM] = BACK_ANIM_H_SLIDE,
- [SPECIES_ELEKID] = BACK_ANIM_HORIZONTAL_SHAKE,
- [SPECIES_MAGBY] = BACK_ANIM_FADE_RED_WITH_SHAKE,
- [SPECIES_MILTANK] = BACK_ANIM_H_SLIDE,
- [SPECIES_BLISSEY] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_RAIKOU] = BACK_ANIM_FLASH_YELLOW_WITH_SHAKE,
- [SPECIES_ENTEI] = BACK_ANIM_FADE_RED_WITH_SHAKE,
- [SPECIES_SUICUNE] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
- [SPECIES_LARVITAR] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
- [SPECIES_PUPITAR] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_TYRANITAR] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
- [SPECIES_LUGIA] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
- [SPECIES_HO_OH] = BACK_ANIM_FADE_RED_WITH_SHAKE,
- [SPECIES_CELEBI] = BACK_ANIM_FADE_GREEN_WITH_SHAKE,
- [SPECIES_TREECKO] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
- [SPECIES_GROVYLE] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_SCEPTILE] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_TORCHIC] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_COMBUSKEN] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
- [SPECIES_BLAZIKEN] = BACK_ANIM_FADE_RED_WITH_SHAKE,
- [SPECIES_MUDKIP] = BACK_ANIM_H_SLIDE,
- [SPECIES_MARSHTOMP] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_SWAMPERT] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
- [SPECIES_POOCHYENA] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_MIGHTYENA] = BACK_ANIM_HORIZONTAL_SHAKE,
- [SPECIES_ZIGZAGOON] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_LINOONE] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_WURMPLE] = BACK_ANIM_VERTICAL_STRETCH,
- [SPECIES_SILCOON] = BACK_ANIM_HORIZONTAL_SHAKE,
- [SPECIES_BEAUTIFLY] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_CASCOON] = BACK_ANIM_HORIZONTAL_SHAKE,
- [SPECIES_DUSTOX] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_LOTAD] = BACK_ANIM_H_SLIDE,
- [SPECIES_LOMBRE] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
- [SPECIES_LUDICOLO] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
- [SPECIES_SEEDOT] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_NUZLEAF] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_SHIFTRY] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_NINCADA] = BACK_ANIM_V_SHAKE_WITH_H_SLIDE,
- [SPECIES_NINJASK] = BACK_ANIM_H_SLIDE_QUICK,
- [SPECIES_SHEDINJA] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_TAILLOW] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_SWELLOW] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_SHROOMISH] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_BRELOOM] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_SPINDA] = BACK_ANIM_CIRCLE_MOVE_COUNTERCLOCKWISE,
- [SPECIES_WINGULL] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_PELIPPER] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_SURSKIT] = BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_1,
- [SPECIES_MASQUERAIN] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_WAILMER] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
- [SPECIES_WAILORD] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
- [SPECIES_SKITTY] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_DELCATTY] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_KECLEON] = BACK_ANIM_H_SLIDE_QUICK,
- [SPECIES_BALTOY] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_CLAYDOL] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_NOSEPASS] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
- [SPECIES_TORKOAL] = BACK_ANIM_FADE_RED_WITH_SHAKE,
- [SPECIES_SABLEYE] = BACK_ANIM_H_SLIDE_QUICK,
- [SPECIES_BARBOACH] = BACK_ANIM_VERTICAL_STRETCH,
- [SPECIES_WHISCASH] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_LUVDISC] = BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_2,
- [SPECIES_CORPHISH] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_CRAWDAUNT] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_FEEBAS] = BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_1,
- [SPECIES_MILOTIC] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
- [SPECIES_CARVANHA] = BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_2,
- [SPECIES_SHARPEDO] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_TRAPINCH] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_VIBRAVA] = BACK_ANIM_H_SLIDE_QUICK,
- [SPECIES_FLYGON] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_MAKUHITA] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
- [SPECIES_HARIYAMA] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
- [SPECIES_ELECTRIKE] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_MANECTRIC] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_NUMEL] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
- [SPECIES_CAMERUPT] = BACK_ANIM_FADE_RED_WITH_SHAKE,
- [SPECIES_SPHEAL] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_SEALEO] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_WALREIN] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_CACNEA] = BACK_ANIM_V_SHAKE_WITH_H_SLIDE,
- [SPECIES_CACTURNE] = BACK_ANIM_HORIZONTAL_SHAKE,
- [SPECIES_SNORUNT] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_GLALIE] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_LUNATONE] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_SOLROCK] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_AZURILL] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
- [SPECIES_SPOINK] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
- [SPECIES_GRUMPIG] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_PLUSLE] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_MINUN] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_MAWILE] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_MEDITITE] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_MEDICHAM] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_SWABLU] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_ALTARIA] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_WYNAUT] = BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE,
- [SPECIES_DUSKULL] = BACK_ANIM_H_SLIDE_QUICK,
- [SPECIES_DUSCLOPS] = BACK_ANIM_H_SLIDE_QUICK,
- [SPECIES_ROSELIA] = BACK_ANIM_FADE_GREEN_WITH_SHAKE,
- [SPECIES_SLAKOTH] = BACK_ANIM_H_SLIDE,
- [SPECIES_VIGOROTH] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL,
- [SPECIES_SLAKING] = BACK_ANIM_HORIZONTAL_SHAKE,
- [SPECIES_GULPIN] = BACK_ANIM_VERTICAL_STRETCH,
- [SPECIES_SWALOT] = BACK_ANIM_VERTICAL_STRETCH,
- [SPECIES_TROPIUS] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
- [SPECIES_WHISMUR] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_LOUDRED] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_EXPLOUD] = BACK_ANIM_GROW_2,
- [SPECIES_CLAMPERL] = BACK_ANIM_DIP_RIGHT_SIDE,
- [SPECIES_HUNTAIL] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_GOREBYSS] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_ABSOL] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_SHUPPET] = BACK_ANIM_H_SLIDE_QUICK,
- [SPECIES_BANETTE] = BACK_ANIM_H_SLIDE_QUICK,
- [SPECIES_SEVIPER] = BACK_ANIM_VERTICAL_STRETCH,
- [SPECIES_ZANGOOSE] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_RELICANTH] = BACK_ANIM_H_SLIDE,
- [SPECIES_ARON] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_LAIRON] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_AGGRON] = BACK_ANIM_V_SHAKE_WITH_PAUSE,
- [SPECIES_CASTFORM] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_VOLBEAT] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_ILLUMISE] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_LILEEP] = BACK_ANIM_HORIZONTAL_STRETCH,
- [SPECIES_CRADILY] = BACK_ANIM_VERTICAL_STRETCH,
- [SPECIES_ANORITH] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_ARMALDO] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_RALTS] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_KIRLIA] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_GARDEVOIR] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_BAGON] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_SHELGON] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_SALAMENCE] = BACK_ANIM_HORIZONTAL_SHAKE,
- [SPECIES_BELDUM] = BACK_ANIM_CIRCLE_MOVE_CLOCKWISE,
- [SPECIES_METANG] = BACK_ANIM_JOLT_RIGHT,
- [SPECIES_METAGROSS] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_REGIROCK] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_REGICE] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_REGISTEEL] = BACK_ANIM_VERTICAL_SHAKE,
- [SPECIES_KYOGRE] = BACK_ANIM_FADE_BLUE_WITH_SHAKE,
- [SPECIES_GROUDON] = BACK_ANIM_FADE_RED_WITH_SHAKE,
- [SPECIES_RAYQUAZA] = BACK_ANIM_GROW_2,
- [SPECIES_LATIAS] = BACK_ANIM_H_SLIDE_QUICK,
- [SPECIES_LATIOS] = BACK_ANIM_H_SLIDE_QUICK,
- [SPECIES_JIRACHI] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
- [SPECIES_DEOXYS] = BACK_ANIM_SHRINK_GROW_2,
- [SPECIES_CHIMECHO] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
+ [SPECIES_SNORLAX] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_ARTICUNO] = BACK_ANIM_SHAKE_GLOW_BLUE,
+ [SPECIES_ZAPDOS] = BACK_ANIM_SHAKE_FLASH_YELLOW,
+ [SPECIES_MOLTRES] = BACK_ANIM_SHAKE_GLOW_RED,
+ [SPECIES_DRATINI] = BACK_ANIM_H_SLIDE,
+ [SPECIES_DRAGONAIR] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_DRAGONITE] = BACK_ANIM_V_SHAKE,
+ [SPECIES_MEWTWO] = BACK_ANIM_GROW_STUTTER,
+ [SPECIES_MEW] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_CHIKORITA] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_BAYLEEF] = BACK_ANIM_H_SLIDE,
+ [SPECIES_MEGANIUM] = BACK_ANIM_V_SHAKE,
+ [SPECIES_CYNDAQUIL] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_QUILAVA] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_TYPHLOSION] = BACK_ANIM_SHAKE_GLOW_RED,
+ [SPECIES_TOTODILE] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_CROCONAW] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_FERALIGATR] = BACK_ANIM_V_SHAKE,
+ [SPECIES_SENTRET] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_FURRET] = BACK_ANIM_CONCAVE_ARC_LARGE,
+ [SPECIES_HOOTHOOT] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_NOCTOWL] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_LEDYBA] = BACK_ANIM_V_SHAKE_H_SLIDE,
+ [SPECIES_LEDIAN] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_SPINARAK] = BACK_ANIM_V_SHAKE_H_SLIDE,
+ [SPECIES_ARIADOS] = BACK_ANIM_H_SLIDE,
+ [SPECIES_CROBAT] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_CHINCHOU] = BACK_ANIM_V_STRETCH,
+ [SPECIES_LANTURN] = BACK_ANIM_SHAKE_FLASH_YELLOW,
+ [SPECIES_PICHU] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_CLEFFA] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_IGGLYBUFF] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_TOGEPI] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_TOGETIC] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_NATU] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_XATU] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_MAREEP] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_FLAAFFY] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_AMPHAROS] = BACK_ANIM_SHAKE_FLASH_YELLOW,
+ [SPECIES_BELLOSSOM] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_MARILL] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_AZUMARILL] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_SUDOWOODO] = BACK_ANIM_H_SLIDE,
+ [SPECIES_POLITOED] = BACK_ANIM_CONCAVE_ARC_LARGE,
+ [SPECIES_HOPPIP] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_SKIPLOOM] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_JUMPLUFF] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_AIPOM] = BACK_ANIM_CONCAVE_ARC_LARGE,
+ [SPECIES_SUNKERN] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_SUNFLORA] = BACK_ANIM_H_SLIDE,
+ [SPECIES_YANMA] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_WOOPER] = BACK_ANIM_V_STRETCH,
+ [SPECIES_QUAGSIRE] = BACK_ANIM_H_SLIDE,
+ [SPECIES_ESPEON] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_UMBREON] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_MURKROW] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_SLOWKING] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_MISDREAVUS] = BACK_ANIM_H_VIBRATE,
+ [SPECIES_UNOWN] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_WOBBUFFET] = BACK_ANIM_V_STRETCH,
+ [SPECIES_GIRAFARIG] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_PINECO] = BACK_ANIM_H_SHAKE,
+ [SPECIES_FORRETRESS] = BACK_ANIM_V_SHAKE,
+ [SPECIES_DUNSPARCE] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_GLIGAR] = BACK_ANIM_SHRINK_GROW,
+ [SPECIES_STEELIX] = BACK_ANIM_V_SHAKE,
+ [SPECIES_SNUBBULL] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_GRANBULL] = BACK_ANIM_V_SHAKE,
+ [SPECIES_QWILFISH] = BACK_ANIM_GROW_STUTTER,
+ [SPECIES_SCIZOR] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_SHUCKLE] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_HERACROSS] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_SNEASEL] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_TEDDIURSA] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_URSARING] = BACK_ANIM_V_SHAKE,
+ [SPECIES_SLUGMA] = BACK_ANIM_SHAKE_GLOW_RED,
+ [SPECIES_MAGCARGO] = BACK_ANIM_SHAKE_GLOW_RED,
+ [SPECIES_SWINUB] = BACK_ANIM_V_SHAKE_H_SLIDE,
+ [SPECIES_PILOSWINE] = BACK_ANIM_H_SHAKE,
+ [SPECIES_CORSOLA] = BACK_ANIM_H_SLIDE,
+ [SPECIES_REMORAID] = BACK_ANIM_H_SLIDE,
+ [SPECIES_OCTILLERY] = BACK_ANIM_SHRINK_GROW,
+ [SPECIES_DELIBIRD] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_MANTINE] = BACK_ANIM_H_SLIDE,
+ [SPECIES_SKARMORY] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_HOUNDOUR] = BACK_ANIM_V_SHAKE,
+ [SPECIES_HOUNDOOM] = BACK_ANIM_V_SHAKE,
+ [SPECIES_KINGDRA] = BACK_ANIM_SHAKE_GLOW_BLUE,
+ [SPECIES_PHANPY] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_DONPHAN] = BACK_ANIM_V_SHAKE_LOW,
+ [SPECIES_PORYGON2] = BACK_ANIM_H_VIBRATE,
+ [SPECIES_STANTLER] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_SMEARGLE] = BACK_ANIM_H_SLIDE,
+ [SPECIES_TYROGUE] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_HITMONTOP] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE,
+ [SPECIES_SMOOCHUM] = BACK_ANIM_H_SLIDE,
+ [SPECIES_ELEKID] = BACK_ANIM_H_SHAKE,
+ [SPECIES_MAGBY] = BACK_ANIM_SHAKE_GLOW_RED,
+ [SPECIES_MILTANK] = BACK_ANIM_H_SLIDE,
+ [SPECIES_BLISSEY] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_RAIKOU] = BACK_ANIM_SHAKE_FLASH_YELLOW,
+ [SPECIES_ENTEI] = BACK_ANIM_SHAKE_GLOW_RED,
+ [SPECIES_SUICUNE] = BACK_ANIM_SHAKE_GLOW_BLUE,
+ [SPECIES_LARVITAR] = BACK_ANIM_V_SHAKE_LOW,
+ [SPECIES_PUPITAR] = BACK_ANIM_V_SHAKE,
+ [SPECIES_TYRANITAR] = BACK_ANIM_V_SHAKE_LOW,
+ [SPECIES_LUGIA] = BACK_ANIM_SHAKE_GLOW_BLUE,
+ [SPECIES_HO_OH] = BACK_ANIM_SHAKE_GLOW_RED,
+ [SPECIES_CELEBI] = BACK_ANIM_SHAKE_GLOW_GREEN,
+ [SPECIES_TREECKO] = BACK_ANIM_CONCAVE_ARC_LARGE,
+ [SPECIES_GROVYLE] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_SCEPTILE] = BACK_ANIM_V_SHAKE,
+ [SPECIES_TORCHIC] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_COMBUSKEN] = BACK_ANIM_CONCAVE_ARC_LARGE,
+ [SPECIES_BLAZIKEN] = BACK_ANIM_SHAKE_GLOW_RED,
+ [SPECIES_MUDKIP] = BACK_ANIM_H_SLIDE,
+ [SPECIES_MARSHTOMP] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_SWAMPERT] = BACK_ANIM_SHAKE_GLOW_BLUE,
+ [SPECIES_POOCHYENA] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_MIGHTYENA] = BACK_ANIM_H_SHAKE,
+ [SPECIES_ZIGZAGOON] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_LINOONE] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_WURMPLE] = BACK_ANIM_V_STRETCH,
+ [SPECIES_SILCOON] = BACK_ANIM_H_SHAKE,
+ [SPECIES_BEAUTIFLY] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_CASCOON] = BACK_ANIM_H_SHAKE,
+ [SPECIES_DUSTOX] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_LOTAD] = BACK_ANIM_H_SLIDE,
+ [SPECIES_LOMBRE] = BACK_ANIM_CONCAVE_ARC_LARGE,
+ [SPECIES_LUDICOLO] = BACK_ANIM_CONCAVE_ARC_LARGE,
+ [SPECIES_SEEDOT] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_NUZLEAF] = BACK_ANIM_V_SHAKE,
+ [SPECIES_SHIFTRY] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_NINCADA] = BACK_ANIM_V_SHAKE_H_SLIDE,
+ [SPECIES_NINJASK] = BACK_ANIM_H_VIBRATE,
+ [SPECIES_SHEDINJA] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_TAILLOW] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_SWELLOW] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_SHROOMISH] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_BRELOOM] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_SPINDA] = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE,
+ [SPECIES_WINGULL] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_PELIPPER] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_SURSKIT] = BACK_ANIM_H_SPRING,
+ [SPECIES_MASQUERAIN] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_WAILMER] = BACK_ANIM_SHAKE_GLOW_BLUE,
+ [SPECIES_WAILORD] = BACK_ANIM_SHAKE_GLOW_BLUE,
+ [SPECIES_SKITTY] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_DELCATTY] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_KECLEON] = BACK_ANIM_H_VIBRATE,
+ [SPECIES_BALTOY] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_CLAYDOL] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_NOSEPASS] = BACK_ANIM_V_SHAKE_LOW,
+ [SPECIES_TORKOAL] = BACK_ANIM_SHAKE_GLOW_RED,
+ [SPECIES_SABLEYE] = BACK_ANIM_H_VIBRATE,
+ [SPECIES_BARBOACH] = BACK_ANIM_V_STRETCH,
+ [SPECIES_WHISCASH] = BACK_ANIM_V_SHAKE,
+ [SPECIES_LUVDISC] = BACK_ANIM_H_SPRING_REPEATED,
+ [SPECIES_CORPHISH] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_CRAWDAUNT] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_FEEBAS] = BACK_ANIM_H_SPRING,
+ [SPECIES_MILOTIC] = BACK_ANIM_SHAKE_GLOW_BLUE,
+ [SPECIES_CARVANHA] = BACK_ANIM_H_SPRING_REPEATED,
+ [SPECIES_SHARPEDO] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_TRAPINCH] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_VIBRAVA] = BACK_ANIM_H_VIBRATE,
+ [SPECIES_FLYGON] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_MAKUHITA] = BACK_ANIM_V_SHAKE_LOW,
+ [SPECIES_HARIYAMA] = BACK_ANIM_V_SHAKE_LOW,
+ [SPECIES_ELECTRIKE] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_MANECTRIC] = BACK_ANIM_V_SHAKE,
+ [SPECIES_NUMEL] = BACK_ANIM_V_SHAKE_LOW,
+ [SPECIES_CAMERUPT] = BACK_ANIM_SHAKE_GLOW_RED,
+ [SPECIES_SPHEAL] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_SEALEO] = BACK_ANIM_V_SHAKE,
+ [SPECIES_WALREIN] = BACK_ANIM_V_SHAKE,
+ [SPECIES_CACNEA] = BACK_ANIM_V_SHAKE_H_SLIDE,
+ [SPECIES_CACTURNE] = BACK_ANIM_H_SHAKE,
+ [SPECIES_SNORUNT] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_GLALIE] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_LUNATONE] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_SOLROCK] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_AZURILL] = BACK_ANIM_CONCAVE_ARC_LARGE,
+ [SPECIES_SPOINK] = BACK_ANIM_CONCAVE_ARC_LARGE,
+ [SPECIES_GRUMPIG] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_PLUSLE] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_MINUN] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_MAWILE] = BACK_ANIM_V_SHAKE,
+ [SPECIES_MEDITITE] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_MEDICHAM] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_SWABLU] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_ALTARIA] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_WYNAUT] = BACK_ANIM_CONCAVE_ARC_SMALL,
+ [SPECIES_DUSKULL] = BACK_ANIM_H_VIBRATE,
+ [SPECIES_DUSCLOPS] = BACK_ANIM_H_VIBRATE,
+ [SPECIES_ROSELIA] = BACK_ANIM_SHAKE_GLOW_GREEN,
+ [SPECIES_SLAKOTH] = BACK_ANIM_H_SLIDE,
+ [SPECIES_VIGOROTH] = BACK_ANIM_CONCAVE_ARC_LARGE,
+ [SPECIES_SLAKING] = BACK_ANIM_H_SHAKE,
+ [SPECIES_GULPIN] = BACK_ANIM_V_STRETCH,
+ [SPECIES_SWALOT] = BACK_ANIM_V_STRETCH,
+ [SPECIES_TROPIUS] = BACK_ANIM_V_SHAKE_LOW,
+ [SPECIES_WHISMUR] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_LOUDRED] = BACK_ANIM_V_SHAKE,
+ [SPECIES_EXPLOUD] = BACK_ANIM_GROW_STUTTER,
+ [SPECIES_CLAMPERL] = BACK_ANIM_DIP_RIGHT_SIDE,
+ [SPECIES_HUNTAIL] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_GOREBYSS] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_ABSOL] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_SHUPPET] = BACK_ANIM_H_VIBRATE,
+ [SPECIES_BANETTE] = BACK_ANIM_H_VIBRATE,
+ [SPECIES_SEVIPER] = BACK_ANIM_V_STRETCH,
+ [SPECIES_ZANGOOSE] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_RELICANTH] = BACK_ANIM_H_SLIDE,
+ [SPECIES_ARON] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_LAIRON] = BACK_ANIM_V_SHAKE,
+ [SPECIES_AGGRON] = BACK_ANIM_V_SHAKE_LOW,
+ [SPECIES_CASTFORM] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_VOLBEAT] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_ILLUMISE] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_LILEEP] = BACK_ANIM_H_STRETCH,
+ [SPECIES_CRADILY] = BACK_ANIM_V_STRETCH,
+ [SPECIES_ANORITH] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_ARMALDO] = BACK_ANIM_V_SHAKE,
+ [SPECIES_RALTS] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_KIRLIA] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_GARDEVOIR] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_BAGON] = BACK_ANIM_V_SHAKE,
+ [SPECIES_SHELGON] = BACK_ANIM_V_SHAKE,
+ [SPECIES_SALAMENCE] = BACK_ANIM_H_SHAKE,
+ [SPECIES_BELDUM] = BACK_ANIM_TRIANGLE_DOWN,
+ [SPECIES_METANG] = BACK_ANIM_JOLT_RIGHT,
+ [SPECIES_METAGROSS] = BACK_ANIM_V_SHAKE,
+ [SPECIES_REGIROCK] = BACK_ANIM_V_SHAKE,
+ [SPECIES_REGICE] = BACK_ANIM_V_SHAKE,
+ [SPECIES_REGISTEEL] = BACK_ANIM_V_SHAKE,
+ [SPECIES_KYOGRE] = BACK_ANIM_SHAKE_GLOW_BLUE,
+ [SPECIES_GROUDON] = BACK_ANIM_SHAKE_GLOW_RED,
+ [SPECIES_RAYQUAZA] = BACK_ANIM_GROW_STUTTER,
+ [SPECIES_LATIAS] = BACK_ANIM_H_VIBRATE,
+ [SPECIES_LATIOS] = BACK_ANIM_H_VIBRATE,
+ [SPECIES_JIRACHI] = BACK_ANIM_CONVEX_DOUBLE_ARC,
+ [SPECIES_DEOXYS] = BACK_ANIM_SHRINK_GROW_VIBRATE,
+ [SPECIES_CHIMECHO] = BACK_ANIM_CONVEX_DOUBLE_ARC,
};
-static const u8 sUnknown_0860AA64[][2] =
-{
- {0, 5},
- {1, 1},
- {0, 15},
- {1, 4},
- {0, 2},
- {1, 2},
- {0, 2},
- {1, 2},
- {0, 2},
- {1, 2},
- {0, 2},
- {1, 2},
- {0, 2},
- {0, 0xFF}
+// Equivalent to struct YellowFlashData, but doesn't match as a struct
+static const u8 sYellowFlashData[][2] =
+{
+ {FALSE, 5},
+ { TRUE, 1},
+ {FALSE, 15},
+ { TRUE, 4},
+ {FALSE, 2},
+ { TRUE, 2},
+ {FALSE, 2},
+ { TRUE, 2},
+ {FALSE, 2},
+ { TRUE, 2},
+ {FALSE, 2},
+ { TRUE, 2},
+ {FALSE, 2},
+ {FALSE, -1}
};
-static const u8 sUnknown_0860AA80[][2] =
+static const u8 sVerticalShakeData[][2] =
{
- {6, 30},
- {0xFE, 15},
- {6, 30},
- {0xFF, 0}
+ { 6, 30},
+ {-2, 15},
+ { 6, 30},
+ {-1, 0}
};
static void (* const sMonAnimFunctions[])(struct Sprite *sprite) =
{
- pokemonanimfunc_00,
- pokemonanimfunc_01,
- pokemonanimfunc_02,
- pokemonanimfunc_03,
- pokemonanimfunc_04,
- pokemonanimfunc_05,
- pokemonanimfunc_06,
- pokemonanimfunc_07,
- pokemonanimfunc_08,
- pokemonanimfunc_09,
- pokemonanimfunc_0A,
- pokemonanimfunc_0B,
- pokemonanimfunc_0C,
- pokemonanimfunc_0D,
- pokemonanimfunc_0E,
- pokemonanimfunc_0F,
- pokemonanimfunc_10,
- pokemonanimfunc_11,
- pokemonanimfunc_12,
- pokemonanimfunc_13,
- pokemonanimfunc_14,
- pokemonanimfunc_15,
- pokemonanimfunc_16,
- pokemonanimfunc_17,
- pokemonanimfunc_18,
- pokemonanimfunc_19,
- pokemonanimfunc_1A,
- pokemonanimfunc_1B,
- pokemonanimfunc_1C,
- pokemonanimfunc_1D,
- pokemonanimfunc_1E,
- pokemonanimfunc_1F,
- pokemonanimfunc_20,
- pokemonanimfunc_21,
- pokemonanimfunc_22,
- pokemonanimfunc_23,
- pokemonanimfunc_24,
- pokemonanimfunc_25,
- pokemonanimfunc_26,
- pokemonanimfunc_27,
- pokemonanimfunc_28,
- pokemonanimfunc_29,
- pokemonanimfunc_2A,
- pokemonanimfunc_2B,
- pokemonanimfunc_2C,
- pokemonanimfunc_2D,
- pokemonanimfunc_2E,
- pokemonanimfunc_2F,
- pokemonanimfunc_30,
- pokemonanimfunc_31,
- pokemonanimfunc_32,
- pokemonanimfunc_33,
- pokemonanimfunc_34,
- pokemonanimfunc_35,
- pokemonanimfunc_36,
- pokemonanimfunc_37,
- pokemonanimfunc_38,
- pokemonanimfunc_39,
- pokemonanimfunc_3A,
- pokemonanimfunc_3B,
- pokemonanimfunc_3C,
- pokemonanimfunc_3D,
- pokemonanimfunc_3E,
- pokemonanimfunc_3F,
- pokemonanimfunc_40,
- pokemonanimfunc_41,
- pokemonanimfunc_42,
- pokemonanimfunc_43,
- pokemonanimfunc_44,
- pokemonanimfunc_45,
- pokemonanimfunc_46,
- pokemonanimfunc_47,
- pokemonanimfunc_48,
- pokemonanimfunc_49,
- pokemonanimfunc_4A,
- pokemonanimfunc_4B,
- pokemonanimfunc_4C,
- pokemonanimfunc_4D,
- pokemonanimfunc_4E,
- pokemonanimfunc_4F,
- pokemonanimfunc_50,
- pokemonanimfunc_51,
- pokemonanimfunc_52,
- pokemonanimfunc_53,
- pokemonanimfunc_54,
- pokemonanimfunc_55,
- pokemonanimfunc_56,
- pokemonanimfunc_57,
- pokemonanimfunc_58,
- pokemonanimfunc_59,
- pokemonanimfunc_5A,
- pokemonanimfunc_5B,
- pokemonanimfunc_5C,
- pokemonanimfunc_5D,
- pokemonanimfunc_5E,
- pokemonanimfunc_5F,
- pokemonanimfunc_60,
- pokemonanimfunc_61,
- pokemonanimfunc_62,
- pokemonanimfunc_63,
- pokemonanimfunc_64,
- pokemonanimfunc_65,
- pokemonanimfunc_66,
- pokemonanimfunc_67,
- pokemonanimfunc_68,
- pokemonanimfunc_69,
- pokemonanimfunc_6A,
- pokemonanimfunc_6B,
- pokemonanimfunc_6C,
- pokemonanimfunc_6D,
- pokemonanimfunc_6E,
- pokemonanimfunc_6F,
- pokemonanimfunc_70,
- pokemonanimfunc_71,
- pokemonanimfunc_72,
- pokemonanimfunc_73,
- pokemonanimfunc_74,
- pokemonanimfunc_75,
- pokemonanimfunc_76,
- pokemonanimfunc_77,
- pokemonanimfunc_78,
- pokemonanimfunc_79,
- pokemonanimfunc_7A,
- pokemonanimfunc_7B,
- pokemonanimfunc_7C,
- pokemonanimfunc_7D,
- pokemonanimfunc_7E,
- pokemonanimfunc_7F,
- pokemonanimfunc_80,
- pokemonanimfunc_81,
- pokemonanimfunc_82,
- pokemonanimfunc_83,
- pokemonanimfunc_84,
- pokemonanimfunc_85,
- pokemonanimfunc_86,
- pokemonanimfunc_87,
- pokemonanimfunc_88,
- pokemonanimfunc_89,
- pokemonanimfunc_8A,
- pokemonanimfunc_8B,
- pokemonanimfunc_8C,
- pokemonanimfunc_8D,
- pokemonanimfunc_8E,
- pokemonanimfunc_8F,
- pokemonanimfunc_90,
- pokemonanimfunc_91,
- pokemonanimfunc_92,
- pokemonanimfunc_93,
- pokemonanimfunc_94,
- pokemonanimfunc_95,
- pokemonanimfunc_96
+ [ANIM_V_SQUISH_AND_BOUNCE] = Anim_VerticalSquishBounce,
+ [ANIM_CIRCULAR_STRETCH_TWICE] = Anim_CircularStretchTwice,
+ [ANIM_H_VIBRATE] = Anim_HorizontalVibrate,
+ [ANIM_H_SLIDE] = Anim_HorizontalSlide,
+ [ANIM_V_SLIDE] = Anim_VerticalSlide,
+ [ANIM_BOUNCE_ROTATE_TO_SIDES] = Anim_BounceRotateToSides,
+ [ANIM_V_JUMPS_H_JUMPS] = Anim_VerticalJumpsHorizontalJumps,
+ [ANIM_ROTATE_TO_SIDES] = Anim_RotateToSides, // Unused
+ [ANIM_ROTATE_TO_SIDES_TWICE] = Anim_RotateToSides_Twice,
+ [ANIM_GROW_VIBRATE] = Anim_GrowVibrate,
+ [ANIM_ZIGZAG_FAST] = Anim_ZigzagFast,
+ [ANIM_SWING_CONCAVE] = Anim_SwingConcave,
+ [ANIM_SWING_CONCAVE_FAST] = Anim_SwingConcave_Fast,
+ [ANIM_SWING_CONVEX] = Anim_SwingConvex,
+ [ANIM_SWING_CONVEX_FAST] = Anim_SwingConvex_Fast,
+ [ANIM_H_SHAKE] = Anim_HorizontalShake,
+ [ANIM_V_SHAKE] = Anim_VerticalShake,
+ [ANIM_CIRCULAR_VIBRATE] = Anim_CircularVibrate,
+ [ANIM_TWIST] = Anim_Twist,
+ [ANIM_SHRINK_GROW] = Anim_ShrinkGrow,
+ [ANIM_CIRCLE_C_CLOCKWISE] = Anim_CircleCounterclockwise,
+ [ANIM_GLOW_BLACK] = Anim_GlowBlack,
+ [ANIM_H_STRETCH] = Anim_HorizontalStretch,
+ [ANIM_V_STRETCH] = Anim_VerticalStretch,
+ [ANIM_RISING_WOBBLE] = Anim_RisingWobble,
+ [ANIM_V_SHAKE_TWICE] = Anim_VerticalShakeTwice,
+ [ANIM_TIP_MOVE_FORWARD] = Anim_TipMoveForward,
+ [ANIM_H_PIVOT] = Anim_HorizontalPivot,
+ [ANIM_V_SLIDE_WOBBLE] = Anim_VerticalSlideWobble,
+ [ANIM_H_SLIDE_WOBBLE] = Anim_HorizontalSlideWobble,
+ [ANIM_V_JUMPS_BIG] = Anim_VerticalJumps_Big,
+ [ANIM_SPIN_LONG] = Anim_Spin_Long, // Unused
+ [ANIM_GLOW_ORANGE] = Anim_GlowOrange,
+ [ANIM_GLOW_RED] = Anim_GlowRed, // Unused
+ [ANIM_GLOW_BLUE] = Anim_GlowBlue,
+ [ANIM_GLOW_YELLOW] = Anim_GlowYellow, // Unused
+ [ANIM_GLOW_PURPLE] = Anim_GlowPurple, // Unused
+ [ANIM_BACK_AND_LUNGE] = Anim_BackAndLunge,
+ [ANIM_BACK_FLIP] = Anim_BackFlip, // Unused
+ [ANIM_FLICKER] = Anim_Flicker, // Unused
+ [ANIM_BACK_FLIP_BIG] = Anim_BackFlipBig, // Unused
+ [ANIM_FRONT_FLIP] = Anim_FrontFlip,
+ [ANIM_TUMBLING_FRONT_FLIP] = Anim_TumblingFrontFlip, // Unused
+ [ANIM_FIGURE_8] = Anim_Figure8,
+ [ANIM_FLASH_YELLOW] = Anim_FlashYellow,
+ [ANIM_SWING_CONCAVE_FAST_SHORT] = Anim_SwingConcave_FastShort,
+ [ANIM_SWING_CONVEX_FAST_SHORT] = Anim_SwingConvex_FastShort, // Unused
+ [ANIM_ROTATE_UP_SLAM_DOWN] = Anim_RotateUpSlamDown,
+ [ANIM_DEEP_V_SQUISH_AND_BOUNCE] = Anim_DeepVerticalSquishBounce,
+ [ANIM_H_JUMPS] = Anim_HorizontalJumps,
+ [ANIM_H_JUMPS_V_STRETCH] = Anim_HorizontalJumpsVerticalStretch,
+ [ANIM_ROTATE_TO_SIDES_FAST] = Anim_RotateToSides_Fast, // Unused
+ [ANIM_ROTATE_UP_TO_SIDES] = Anim_RotateUpToSides,
+ [ANIM_FLICKER_INCREASING] = Anim_FlickerIncreasing,
+ [ANIM_TIP_HOP_FORWARD] = Anim_TipHopForward, // Unused
+ [ANIM_PIVOT_SHAKE] = Anim_PivotShake, // Unused
+ [ANIM_TIP_AND_SHAKE] = Anim_TipAndShake, // Unused
+ [ANIM_VIBRATE_TO_CORNERS] = Anim_VibrateToCorners, // Unused
+ [ANIM_GROW_IN_STAGES] = Anim_GrowInStages,
+ [ANIM_V_SPRING] = Anim_VerticalSpring, // Unused
+ [ANIM_V_REPEATED_SPRING] = Anim_VerticalRepeatedSpring, // Unused
+ [ANIM_SPRING_RISING] = Anim_SpringRising, // Unused
+ [ANIM_H_SPRING] = Anim_HorizontalSpring,
+ [ANIM_H_REPEATED_SPRING_SLOW] = Anim_HorizontalRepeatedSpring_Slow,
+ [ANIM_H_SLIDE_SHRINK] = Anim_HorizontalSlideShrink, // Unused
+ [ANIM_LUNGE_GROW] = Anim_LungeGrow,
+ [ANIM_CIRCLE_INTO_BG] = Anim_CircleIntoBackground,
+ [ANIM_RAPID_H_HOPS] = Anim_RapidHorizontalHops,
+ [ANIM_FOUR_PETAL] = Anim_FourPetal,
+ [ANIM_V_SQUISH_AND_BOUNCE_SLOW] = Anim_VerticalSquishBounce_Slow,
+ [ANIM_H_SLIDE_SLOW] = Anim_HorizontalSlide_Slow,
+ [ANIM_V_SLIDE_SLOW] = Anim_VerticalSlide_Slow,
+ [ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL] = Anim_BounceRotateToSides_Small,
+ [ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW] = Anim_BounceRotateToSides_Slow,
+ [ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW] = Anim_BounceRotateToSides_SmallSlow,
+ [ANIM_ZIGZAG_SLOW] = Anim_ZigzagSlow,
+ [ANIM_H_SHAKE_SLOW] = Anim_HorizontalShake_Slow,
+ [ANIM_V_SHAKE_SLOW] = Anim_VertialShake_Slow, // Unused
+ [ANIM_TWIST_TWICE] = Anim_Twist_Twice,
+ [ANIM_CIRCLE_C_CLOCKWISE_SLOW] = Anim_CircleCounterclockwise_Slow,
+ [ANIM_V_SHAKE_TWICE_SLOW] = Anim_VerticalShakeTwice_Slow, // Unused
+ [ANIM_V_SLIDE_WOBBLE_SMALL] = Anim_VerticalSlideWobble_Small,
+ [ANIM_V_JUMPS_SMALL] = Anim_VerticalJumps_Small,
+ [ANIM_SPIN] = Anim_Spin,
+ [ANIM_TUMBLING_FRONT_FLIP_TWICE] = Anim_TumblingFrontFlip_Twice,
+ [ANIM_DEEP_V_SQUISH_AND_BOUNCE_TWICE] = Anim_DeepVerticalSquishBounce_Twice, // Unused
+ [ANIM_H_JUMPS_V_STRETCH_TWICE] = Anim_HorizontalJumpsVerticalStretch_Twice,
+ [ANIM_V_SHAKE_BACK] = Anim_VerticalShakeBack,
+ [ANIM_V_SHAKE_BACK_SLOW] = Anim_VerticalShakeBack_Slow,
+ [ANIM_V_SHAKE_H_SLIDE_SLOW] = Anim_VerticalShakeHorizontalSlide_Slow,
+ [ANIM_V_STRETCH_BOTH_ENDS_SLOW] = Anim_VerticalStretchBothEnds_Slow,
+ [ANIM_H_STRETCH_FAR_SLOW] = Anim_HorizontalStretchFar_Slow,
+ [ANIM_V_SHAKE_LOW_TWICE] = Anim_VerticalShakeLowTwice,
+ [ANIM_H_SHAKE_FAST] = Anim_HorizontalShake_Fast,
+ [ANIM_H_SLIDE_FAST] = Anim_HorizontalSlide_Fast,
+ [ANIM_H_VIBRATE_FAST] = Anim_HorizontalVibrate_Fast,
+ [ANIM_H_VIBRATE_FASTEST] = Anim_HorizontalVibrate_Fastest,
+ [ANIM_V_SHAKE_BACK_FAST] = Anim_VerticalShakeBack_Fast,
+ [ANIM_V_SHAKE_LOW_TWICE_SLOW] = Anim_VerticalShakeLowTwice_Slow,
+ [ANIM_V_SHAKE_LOW_TWICE_FAST] = Anim_VerticalShakeLowTwice_Fast,
+ [ANIM_CIRCLE_C_CLOCKWISE_LONG] = Anim_CircleCounterclockwise_Long,
+ [ANIM_GROW_STUTTER_SLOW] = Anim_GrowStutter_Slow,
+ [ANIM_V_SHAKE_H_SLIDE] = Anim_VerticalShakeHorizontalSlide,
+ [ANIM_V_SHAKE_H_SLIDE_FAST] = Anim_VerticalShakeHorizontalSlide_Fast,
+ [ANIM_TRIANGLE_DOWN_SLOW] = Anim_TriangleDown_Slow,
+ [ANIM_TRIANGLE_DOWN] = Anim_TriangleDown,
+ [ANIM_TRIANGLE_DOWN_TWICE] = Anim_TriangleDown_Fast,
+ [ANIM_GROW] = Anim_Grow,
+ [ANIM_GROW_TWICE] = Anim_Grow_Twice,
+ [ANIM_H_SPRING_FAST] = Anim_HorizontalSpring_Fast,
+ [ANIM_H_SPRING_SLOW] = Anim_HorizontalSpring_Slow,
+ [ANIM_H_REPEATED_SPRING_FAST] = Anim_HorizontalRepeatedSpring_Fast,
+ [ANIM_H_REPEATED_SPRING] = Anim_HorizontalRepeatedSpring,
+ [ANIM_SHRINK_GROW_FAST] = Anim_ShrinkGrow_Fast,
+ [ANIM_SHRINK_GROW_SLOW] = Anim_ShrinkGrow_Slow,
+ [ANIM_V_STRETCH_BOTH_ENDS] = Anim_VerticalStretchBothEnds,
+ [ANIM_V_STRETCH_BOTH_ENDS_TWICE] = Anim_VerticalStretchBothEnds_Twice,
+ [ANIM_H_STRETCH_FAR_TWICE] = Anim_HorizontalStretchFar_Twice,
+ [ANIM_H_STRETCH_FAR] = Anim_HorizontalStretchFar,
+ [ANIM_GROW_STUTTER_TWICE] = Anim_GrowStutter_Twice,
+ [ANIM_GROW_STUTTER] = Anim_GrowStutter,
+ [ANIM_CONCAVE_ARC_LARGE_SLOW] = Anim_ConcaveArcLarge_Slow,
+ [ANIM_CONCAVE_ARC_LARGE] = Anim_ConcaveArcLarge,
+ [ANIM_CONCAVE_ARC_LARGE_TWICE] = Anim_ConcaveArcLarge_Twice,
+ [ANIM_CONVEX_DOUBLE_ARC_SLOW] = Anim_ConvexDoubleArc_Slow,
+ [ANIM_CONVEX_DOUBLE_ARC] = Anim_ConvexDoubleArc,
+ [ANIM_CONVEX_DOUBLE_ARC_TWICE] = Anim_ConvexDoubleArc_Twice,
+ [ANIM_CONCAVE_ARC_SMALL_SLOW] = Anim_ConcaveArcSmall_Slow,
+ [ANIM_CONCAVE_ARC_SMALL] = Anim_ConcaveArcSmall,
+ [ANIM_CONCAVE_ARC_SMALL_TWICE] = Anim_ConcaveArcSmall_Twice,
+ [ANIM_H_DIP] = Anim_HorizontalDip,
+ [ANIM_H_DIP_FAST] = Anim_HorizontalDip_Fast,
+ [ANIM_H_DIP_TWICE] = Anim_HorizontalDip_Twice,
+ [ANIM_SHRINK_GROW_VIBRATE_FAST] = Anim_ShrinkGrowVibrate_Fast,
+ [ANIM_SHRINK_GROW_VIBRATE] = Anim_ShrinkGrowVibrate,
+ [ANIM_SHRINK_GROW_VIBRATE_SLOW] = Anim_ShrinkGrowVibrate_Slow,
+ [ANIM_JOLT_RIGHT_FAST] = Anim_JoltRight_Fast,
+ [ANIM_JOLT_RIGHT] = Anim_JoltRight,
+ [ANIM_JOLT_RIGHT_SLOW] = Anim_JoltRight_Slow,
+ [ANIM_SHAKE_FLASH_YELLOW_FAST] = Anim_ShakeFlashYellow_Fast,
+ [ANIM_SHAKE_FLASH_YELLOW] = Anim_ShakeFlashYellow,
+ [ANIM_SHAKE_FLASH_YELLOW_SLOW] = Anim_ShakeFlashYellow_Slow,
+ [ANIM_SHAKE_GLOW_RED_FAST] = Anim_ShakeGlowRed_Fast,
+ [ANIM_SHAKE_GLOW_RED] = Anim_ShakeGlowRed,
+ [ANIM_SHAKE_GLOW_RED_SLOW] = Anim_ShakeGlowRed_Slow,
+ [ANIM_SHAKE_GLOW_GREEN_FAST] = Anim_ShakeGlowGreen_Fast,
+ [ANIM_SHAKE_GLOW_GREEN] = Anim_ShakeGlowGreen,
+ [ANIM_SHAKE_GLOW_GREEN_SLOW] = Anim_ShakeGlowGreen_Slow,
+ [ANIM_SHAKE_GLOW_BLUE_FAST] = Anim_ShakeGlowBlue_Fast,
+ [ANIM_SHAKE_GLOW_BLUE] = Anim_ShakeGlowBlue,
+ [ANIM_SHAKE_GLOW_BLUE_SLOW] = Anim_ShakeGlowBlue_Slow
};
-// counting from Id 1, because 0 in sSpeciesToBackAnimSet is used for mons with no back animation
+// Each back anim set has 3 possible animations depending on nature
+// Each of the 3 animations is a slight variation of the others
+// BACK_ANIM_NONE is skipped below. GetSpeciesBackAnimSet subtracts 1 from the back anim id
static const u8 sBackAnimationIds[] =
{
- 0x60, 0x5f, 0x02, // 1
- 0x5e, 0x03, 0x46, // 2
- 0x6d, 0x3e, 0x6e, // 3
- 0x6f, 0x70, 0x3f, // 4
- 0x71, 0x13, 0x72, // 5
- 0x6c, 0x6b, 0x3a, // 6
- 0x64, 0x14, 0x4f, // 7
- 0x5d, 0x0f, 0x4c, // 8
- 0x61, 0x57, 0x58, // 9
- 0x67, 0x66, 0x59, // 0xA
- 0x74, 0x73, 0x5a, // 0xB
- 0x75, 0x76, 0x5b, // 0xC
- 0x77, 0x78, 0x65, // 0xD
- 0x63, 0x5c, 0x62, // 0xE
- 0x6a, 0x69, 0x68, // 0xF
- 0x7b, 0x7a, 0x79, // 0x10
- 0x7e, 0x7d, 0x7c, // 0x11
- 0x81, 0x80, 0x7f, // 0x12
- 0x84, 0x82, 0x83, // 0x13
- 0x85, 0x86, 0x87, // 0x14
- 0x88, 0x89, 0x8a, // 0x15
- 0x8b, 0x8c, 0x8d, // 0x16
- 0x8e, 0x8f, 0x90, // 0x17
- 0x91, 0x92, 0x93, // 0x18
- 0x94, 0x95, 0x96, // 0x19
+ [(BACK_ANIM_H_VIBRATE - 1) * 3] = ANIM_H_VIBRATE_FASTEST, ANIM_H_VIBRATE_FAST, ANIM_H_VIBRATE,
+ [(BACK_ANIM_H_SLIDE - 1) * 3] = ANIM_H_SLIDE_FAST, ANIM_H_SLIDE, ANIM_H_SLIDE_SLOW,
+ [(BACK_ANIM_H_SPRING - 1) * 3] = ANIM_H_SPRING_FAST, ANIM_H_SPRING, ANIM_H_SPRING_SLOW,
+ [(BACK_ANIM_H_SPRING_REPEATED - 1) * 3] = ANIM_H_REPEATED_SPRING_FAST, ANIM_H_REPEATED_SPRING, ANIM_H_REPEATED_SPRING_SLOW,
+ [(BACK_ANIM_SHRINK_GROW - 1) * 3] = ANIM_SHRINK_GROW_FAST, ANIM_SHRINK_GROW, ANIM_SHRINK_GROW_SLOW,
+ [(BACK_ANIM_GROW - 1) * 3] = ANIM_GROW_TWICE, ANIM_GROW, ANIM_GROW_IN_STAGES,
+ [(BACK_ANIM_CIRCLE_COUNTERCLOCKWISE - 1) * 3] = ANIM_CIRCLE_C_CLOCKWISE_LONG, ANIM_CIRCLE_C_CLOCKWISE, ANIM_CIRCLE_C_CLOCKWISE_SLOW,
+ [(BACK_ANIM_H_SHAKE - 1) * 3] = ANIM_H_SHAKE_FAST, ANIM_H_SHAKE, ANIM_H_SHAKE_SLOW,
+ [(BACK_ANIM_V_SHAKE - 1) * 3] = ANIM_V_SHAKE_BACK_FAST, ANIM_V_SHAKE_BACK, ANIM_V_SHAKE_BACK_SLOW,
+ [(BACK_ANIM_V_SHAKE_H_SLIDE - 1) * 3] = ANIM_V_SHAKE_H_SLIDE_FAST, ANIM_V_SHAKE_H_SLIDE, ANIM_V_SHAKE_H_SLIDE_SLOW,
+ [(BACK_ANIM_V_STRETCH - 1) * 3] = ANIM_V_STRETCH_BOTH_ENDS_TWICE, ANIM_V_STRETCH_BOTH_ENDS, ANIM_V_STRETCH_BOTH_ENDS_SLOW,
+ [(BACK_ANIM_H_STRETCH - 1) * 3] = ANIM_H_STRETCH_FAR_TWICE, ANIM_H_STRETCH_FAR, ANIM_H_STRETCH_FAR_SLOW,
+ [(BACK_ANIM_GROW_STUTTER - 1) * 3] = ANIM_GROW_STUTTER_TWICE, ANIM_GROW_STUTTER, ANIM_GROW_STUTTER_SLOW,
+ [(BACK_ANIM_V_SHAKE_LOW - 1) * 3] = ANIM_V_SHAKE_LOW_TWICE_FAST, ANIM_V_SHAKE_LOW_TWICE, ANIM_V_SHAKE_LOW_TWICE_SLOW,
+ [(BACK_ANIM_TRIANGLE_DOWN - 1) * 3] = ANIM_TRIANGLE_DOWN_TWICE, ANIM_TRIANGLE_DOWN, ANIM_TRIANGLE_DOWN_SLOW,
+ [(BACK_ANIM_CONCAVE_ARC_LARGE - 1) * 3] = ANIM_CONCAVE_ARC_LARGE_TWICE, ANIM_CONCAVE_ARC_LARGE, ANIM_CONCAVE_ARC_LARGE_SLOW,
+ [(BACK_ANIM_CONVEX_DOUBLE_ARC - 1) * 3] = ANIM_CONVEX_DOUBLE_ARC_TWICE, ANIM_CONVEX_DOUBLE_ARC, ANIM_CONVEX_DOUBLE_ARC_SLOW,
+ [(BACK_ANIM_CONCAVE_ARC_SMALL - 1) * 3] = ANIM_CONCAVE_ARC_SMALL_TWICE, ANIM_CONCAVE_ARC_SMALL, ANIM_CONCAVE_ARC_SMALL_SLOW,
+ [(BACK_ANIM_DIP_RIGHT_SIDE - 1) * 3] = ANIM_H_DIP_TWICE, ANIM_H_DIP, ANIM_H_DIP_FAST,
+ [(BACK_ANIM_SHRINK_GROW_VIBRATE - 1) * 3] = ANIM_SHRINK_GROW_VIBRATE_FAST, ANIM_SHRINK_GROW_VIBRATE, ANIM_SHRINK_GROW_VIBRATE_SLOW,
+ [(BACK_ANIM_JOLT_RIGHT - 1) * 3] = ANIM_JOLT_RIGHT_FAST, ANIM_JOLT_RIGHT, ANIM_JOLT_RIGHT_SLOW,
+ [(BACK_ANIM_SHAKE_FLASH_YELLOW - 1) * 3] = ANIM_SHAKE_FLASH_YELLOW_FAST, ANIM_SHAKE_FLASH_YELLOW, ANIM_SHAKE_FLASH_YELLOW_SLOW,
+ [(BACK_ANIM_SHAKE_GLOW_RED - 1) * 3] = ANIM_SHAKE_GLOW_RED_FAST, ANIM_SHAKE_GLOW_RED, ANIM_SHAKE_GLOW_RED_SLOW,
+ [(BACK_ANIM_SHAKE_GLOW_GREEN - 1) * 3] = ANIM_SHAKE_GLOW_GREEN_FAST, ANIM_SHAKE_GLOW_GREEN, ANIM_SHAKE_GLOW_GREEN_SLOW,
+ [(BACK_ANIM_SHAKE_GLOW_BLUE - 1) * 3] = ANIM_SHAKE_GLOW_BLUE_FAST, ANIM_SHAKE_GLOW_BLUE, ANIM_SHAKE_GLOW_BLUE_SLOW,
};
static const u8 sBackAnimNatureModTable[NUM_NATURES] =
{
- [NATURE_HARDY] = 0x00,
- [NATURE_LONELY] = 0x02,
- [NATURE_BRAVE] = 0x00,
- [NATURE_ADAMANT] = 0x00,
- [NATURE_NAUGHTY] = 0x00,
- [NATURE_BOLD] = 0x01,
- [NATURE_DOCILE] = 0x01,
- [NATURE_RELAXED] = 0x01,
- [NATURE_IMPISH] = 0x00,
- [NATURE_LAX] = 0x01,
- [NATURE_TIMID] = 0x02,
- [NATURE_HASTY] = 0x00,
- [NATURE_SERIOUS] = 0x01,
- [NATURE_JOLLY] = 0x00,
- [NATURE_NAIVE] = 0x00,
- [NATURE_MODEST] = 0x02,
- [NATURE_MILD] = 0x02,
- [NATURE_QUIET] = 0x02,
- [NATURE_BASHFUL] = 0x02,
- [NATURE_RASH] = 0x01,
- [NATURE_CALM] = 0x01,
- [NATURE_GENTLE] = 0x02,
- [NATURE_SASSY] = 0x01,
- [NATURE_CAREFUL] = 0x02,
- [NATURE_QUIRKY] = 0x01,
+ [NATURE_HARDY] = 0,
+ [NATURE_LONELY] = 2,
+ [NATURE_BRAVE] = 0,
+ [NATURE_ADAMANT] = 0,
+ [NATURE_NAUGHTY] = 0,
+ [NATURE_BOLD] = 1,
+ [NATURE_DOCILE] = 1,
+ [NATURE_RELAXED] = 1,
+ [NATURE_IMPISH] = 0,
+ [NATURE_LAX] = 1,
+ [NATURE_TIMID] = 2,
+ [NATURE_HASTY] = 0,
+ [NATURE_SERIOUS] = 1,
+ [NATURE_JOLLY] = 0,
+ [NATURE_NAIVE] = 0,
+ [NATURE_MODEST] = 2,
+ [NATURE_MILD] = 2,
+ [NATURE_QUIET] = 2,
+ [NATURE_BASHFUL] = 2,
+ [NATURE_RASH] = 1,
+ [NATURE_CALM] = 1,
+ [NATURE_GENTLE] = 2,
+ [NATURE_SASSY] = 1,
+ [NATURE_CAREFUL] = 2,
+ [NATURE_QUIRKY] = 1,
};
-static const union AffineAnimCmd sSpriteAffineAnim_860AD48[] =
+static const union AffineAnimCmd sMonAffineAnim_0[] =
{
AFFINEANIMCMD_FRAME(256, 256, 0, 0),
AFFINEANIMCMDTYPE_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_860AD58[] =
+static const union AffineAnimCmd sMonAffineAnim_1[] =
{
AFFINEANIMCMD_FRAME(-256, 256, 0, 0),
AFFINEANIMCMDTYPE_END
};
-static const union AffineAnimCmd *const sSpriteAffineAnimTable_860AD68[] =
+static const union AffineAnimCmd *const sMonAffineAnims[] =
{
- sSpriteAffineAnim_860AD48,
- sSpriteAffineAnim_860AD58
+ sMonAffineAnim_0,
+ sMonAffineAnim_1
};
-// code
static void MonAnimDummySpriteCallback(struct Sprite *sprite)
{
}
-static void sub_817F3F0(struct Sprite *sprite, u16 index, s16 amplitudeX, s16 amplitudeY)
+static void SetPosForRotation(struct Sprite *sprite, u16 index, s16 amplitudeX, s16 amplitudeY)
{
s16 xAdder, yAdder;
@@ -848,13 +877,13 @@ static void sub_817F3F0(struct Sprite *sprite, u16 index, s16 amplitudeX, s16 am
amplitudeX *= -1;
amplitudeY *= -1;
- sprite->pos2.x = xAdder + amplitudeX;
- sprite->pos2.y = yAdder + amplitudeY;
+ sprite->x2 = xAdder + amplitudeX;
+ sprite->y2 = yAdder + amplitudeY;
}
u8 GetSpeciesBackAnimSet(u16 species)
{
- if (sSpeciesToBackAnimSet[species] != 0)
+ if (sSpeciesToBackAnimSet[species] != BACK_ANIM_NONE)
return sSpeciesToBackAnimSet[species] - 1;
else
return 0;
@@ -864,8 +893,8 @@ u8 GetSpeciesBackAnimSet(u16 species)
#define tPtrHi data[1]
#define tPtrLo data[2]
#define tAnimId data[3]
-#define tSaved0 data[4]
-#define tSaved2 data[5]
+#define tBattlerId data[4]
+#define tSpeciesId data[5]
// BUG: In vanilla, tPtrLo is read as an s16, so if bit 15 of the
// address were to be set it would cause the pointer to be read
@@ -885,23 +914,23 @@ static void Task_HandleMonAnimation(u8 taskId)
if (gTasks[taskId].tState == 0)
{
- gTasks[taskId].tSaved0 = sprite->data[0];
- gTasks[taskId].tSaved2 = sprite->data[2];
- sprite->data[1] = 1;
+ gTasks[taskId].tBattlerId = sprite->data[0];
+ gTasks[taskId].tSpeciesId = sprite->data[2];
+ sprite->sDontFlip = TRUE;
sprite->data[0] = 0;
for (i = 2; i < ARRAY_COUNT(sprite->data); i++)
sprite->data[i] = 0;
sprite->callback = sMonAnimFunctions[gTasks[taskId].tAnimId];
- sUnknown_03001274 = FALSE;
+ sIsSummaryAnim = FALSE;
gTasks[taskId].tState++;
}
if (sprite->callback == SpriteCallbackDummy)
{
- sprite->data[0] = gTasks[taskId].tSaved0;
- sprite->data[2] = gTasks[taskId].tSaved2;
+ sprite->data[0] = gTasks[taskId].tBattlerId;
+ sprite->data[2] = gTasks[taskId].tSpeciesId;
sprite->data[1] = 0;
DestroyTask(taskId);
@@ -911,14 +940,15 @@ static void Task_HandleMonAnimation(u8 taskId)
void LaunchAnimationTaskForFrontSprite(struct Sprite *sprite, u8 frontAnimId)
{
u8 taskId = CreateTask(Task_HandleMonAnimation, 128);
- gTasks[taskId].tPtrHi = (u32)(sprite) >> 0x10;
+ gTasks[taskId].tPtrHi = (u32)(sprite) >> 16;
gTasks[taskId].tPtrLo = (u32)(sprite);
gTasks[taskId].tAnimId = frontAnimId;
}
void StartMonSummaryAnimation(struct Sprite *sprite, u8 frontAnimId)
{
- sUnknown_03001274 = TRUE;
+ // sDontFlip is expected to still be FALSE here, not explicitly cleared
+ sIsSummaryAnim = TRUE;
sprite->callback = sMonAnimFunctions[frontAnimId];
}
@@ -927,12 +957,13 @@ void LaunchAnimationTaskForBackSprite(struct Sprite *sprite, u8 backAnimSet)
u8 nature, taskId, animId, battlerId;
taskId = CreateTask(Task_HandleMonAnimation, 128);
- gTasks[taskId].tPtrHi = (u32)(sprite) >> 0x10;
+ gTasks[taskId].tPtrHi = (u32)(sprite) >> 16;
gTasks[taskId].tPtrLo = (u32)(sprite);
battlerId = sprite->data[0];
nature = GetNature(&gPlayerParty[gBattlerPartyIndexes[battlerId]]);
+ // * 3 below because each back anim has 3 variants depending on nature
animId = 3 * backAnimSet + sBackAnimNatureModTable[nature];
gTasks[taskId].tAnimId = sBackAnimationIds[animId];
}
@@ -941,8 +972,8 @@ void LaunchAnimationTaskForBackSprite(struct Sprite *sprite, u8 backAnimSet)
#undef tPtrHi
#undef tPtrLo
#undef tAnimId
-#undef tSaved0
-#undef tSaved2
+#undef tBattlerId
+#undef tSpeciesId
void SetSpriteCB_MonAnimDummy(struct Sprite *sprite)
{
@@ -971,23 +1002,23 @@ static void SetAffineData(struct Sprite *sprite, s16 xScale, s16 yScale, u16 rot
static void HandleStartAffineAnim(struct Sprite *sprite)
{
sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
- sprite->affineAnims = sSpriteAffineAnimTable_860AD68;
+ sprite->affineAnims = sMonAffineAnims;
- if (sUnknown_03001274 == TRUE)
+ if (sIsSummaryAnim == TRUE)
InitSpriteAffineAnim(sprite);
- if (!sprite->data[1])
+ if (!sprite->sDontFlip)
StartSpriteAffineAnim(sprite, 1);
else
StartSpriteAffineAnim(sprite, 0);
CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode);
- sprite->affineAnimPaused = 1;
+ sprite->affineAnimPaused = TRUE;
}
static void HandleSetAffineData(struct Sprite *sprite, s16 xScale, s16 yScale, u16 rotation)
{
- if (!sprite->data[1])
+ if (!sprite->sDontFlip)
{
xScale *= -1;
rotation *= -1;
@@ -996,47 +1027,47 @@ static void HandleSetAffineData(struct Sprite *sprite, s16 xScale, s16 yScale, u
SetAffineData(sprite, xScale, yScale, rotation);
}
-static void sub_817F70C(struct Sprite *sprite)
+static void TryFlipX(struct Sprite *sprite)
{
- if (!sprite->data[1])
- sprite->pos2.x *= -1;
+ if (!sprite->sDontFlip)
+ sprite->x2 *= -1;
}
-static bool32 sub_817F724(u8 id)
+static bool32 InitAnimData(u8 id)
{
- if (id >= STRUCT_COUNT)
+ if (id >= MAX_BATTLERS_COUNT)
{
return FALSE;
}
else
{
- sUnknown_03001240[id].field_6 = 0;
- sUnknown_03001240[id].field_0 = 0;
- sUnknown_03001240[id].field_4 = 1;
- sUnknown_03001240[id].field_2 = 0;
- sUnknown_03001240[id].field_8 = 0;
+ sAnims[id].rotation = 0;
+ sAnims[id].delay = 0;
+ sAnims[id].runs = 1;
+ sAnims[id].speed = 0;
+ sAnims[id].data = 0;
return TRUE;
}
}
-static u8 sub_817F758(void)
+static u8 AddNewAnim(void)
{
- sUnknown_03001270 = (sUnknown_03001270 + 1) % STRUCT_COUNT;
- sub_817F724(sUnknown_03001270);
- return sUnknown_03001270;
+ sAnimIdx = (sAnimIdx + 1) % MAX_BATTLERS_COUNT;
+ InitAnimData(sAnimIdx);
+ return sAnimIdx;
}
-static void sub_817F77C(struct Sprite *sprite)
+static void ResetSpriteAfterAnim(struct Sprite *sprite)
{
sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL;
CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode);
- if (sUnknown_03001274 == TRUE)
+ if (sIsSummaryAnim == TRUE)
{
- if (!sprite->data[1])
- sprite->hFlip = 1;
+ if (!sprite->sDontFlip)
+ sprite->hFlip = TRUE;
else
- sprite->hFlip = 0;
+ sprite->hFlip = FALSE;
FreeOamMatrix(sprite->oam.matrixNum);
sprite->oam.matrixNum |= (sprite->hFlip << 3);
@@ -1052,7 +1083,7 @@ static void sub_817F77C(struct Sprite *sprite)
#endif // BUGFIX
}
-static void pokemonanimfunc_01(struct Sprite *sprite)
+static void Anim_CircularStretchTwice(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
HandleStartAffineAnim(sprite);
@@ -1060,8 +1091,8 @@ static void pokemonanimfunc_01(struct Sprite *sprite)
if (sprite->data[2] > 40)
{
HandleSetAffineData(sprite, 256, 256, 0);
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
@@ -1075,12 +1106,12 @@ static void pokemonanimfunc_01(struct Sprite *sprite)
sprite->data[2]++;
}
-static void pokemonanimfunc_02(struct Sprite *sprite)
+static void Anim_HorizontalVibrate(struct Sprite *sprite)
{
if (sprite->data[2] > 40)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.x = 0;
+ sprite->callback = WaitAnimEnd;
+ sprite->x2 = 0;
}
else
{
@@ -1090,70 +1121,70 @@ static void pokemonanimfunc_02(struct Sprite *sprite)
else
sign = -1;
- sprite->pos2.x = Sin((sprite->data[2] * 128 / 40) % 256, 6) * sign;
+ sprite->x2 = Sin((sprite->data[2] * 128 / 40) % 256, 6) * sign;
}
sprite->data[2]++;
}
-static void sub_817F8FC(struct Sprite *sprite)
+static void HorizontalSlide(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] > sprite->data[0])
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.x = 0;
+ sprite->callback = WaitAnimEnd;
+ sprite->x2 = 0;
}
else
{
- sprite->pos2.x = Sin((sprite->data[2] * 384 / sprite->data[0]) % 256, 6);
+ sprite->x2 = Sin((sprite->data[2] * 384 / sprite->data[0]) % 256, 6);
}
sprite->data[2]++;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_03(struct Sprite *sprite)
+static void Anim_HorizontalSlide(struct Sprite *sprite)
{
sprite->data[0] = 40;
- sub_817F8FC(sprite);
- sprite->callback = sub_817F8FC;
+ HorizontalSlide(sprite);
+ sprite->callback = HorizontalSlide;
}
-static void sub_817F978(struct Sprite *sprite)
+static void VerticalSlide(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] > sprite->data[0])
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.y = 0;
+ sprite->callback = WaitAnimEnd;
+ sprite->y2 = 0;
}
else
{
- sprite->pos2.y = -(Sin((sprite->data[2] * 384 / sprite->data[0]) % 256, 6));
+ sprite->y2 = -(Sin((sprite->data[2] * 384 / sprite->data[0]) % 256, 6));
}
sprite->data[2]++;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_04(struct Sprite *sprite)
+static void Anim_VerticalSlide(struct Sprite *sprite)
{
sprite->data[0] = 40;
- sub_817F978(sprite);
- sprite->callback = sub_817F978;
+ VerticalSlide(sprite);
+ sprite->callback = VerticalSlide;
}
-static void sub_817F9F4(struct Sprite *sprite)
+static void VerticalJumps(struct Sprite *sprite)
{
s32 counter = sprite->data[2];
if (counter > 384)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->callback = WaitAnimEnd;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
}
else
{
@@ -1162,12 +1193,12 @@ static void sub_817F9F4(struct Sprite *sprite)
{
case 0:
case 1:
- sprite->pos2.y = -(Sin(counter % 128, sprite->data[0] * 2));
+ sprite->y2 = -(Sin(counter % 128, sprite->data[0] * 2));
break;
case 2:
case 3:
counter -= 256;
- sprite->pos2.y = -(Sin(counter, sprite->data[0] * 3));
+ sprite->y2 = -(Sin(counter, sprite->data[0] * 3));
break;
}
}
@@ -1175,22 +1206,22 @@ static void sub_817F9F4(struct Sprite *sprite)
sprite->data[2] += 12;
}
-static void pokemonanimfunc_1E(struct Sprite *sprite)
+static void Anim_VerticalJumps_Big(struct Sprite *sprite)
{
sprite->data[0] = 4;
- sub_817F9F4(sprite);
- sprite->callback = sub_817F9F4;
+ VerticalJumps(sprite);
+ sprite->callback = VerticalJumps;
}
-static void pokemonanimfunc_06(struct Sprite *sprite)
+static void Anim_VerticalJumpsHorizontalJumps(struct Sprite *sprite)
{
s32 counter = sprite->data[2];
if (counter > 768)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->callback = WaitAnimEnd;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
}
else
{
@@ -1200,29 +1231,29 @@ static void pokemonanimfunc_06(struct Sprite *sprite)
{
case 0:
case 1:
- sprite->pos2.x = 0;
+ sprite->x2 = 0;
break;
case 2:
counter = 0;
break;
case 3:
- sprite->pos2.x = -(counter % 128 * 8) / 128;
+ sprite->x2 = -(counter % 128 * 8) / 128;
break;
case 4:
- sprite->pos2.x = (counter % 128) / 8 - 8;
+ sprite->x2 = (counter % 128) / 8 - 8;
break;
case 5:
- sprite->pos2.x = -(counter % 128 * 8) / 128 + 8;
+ sprite->x2 = -(counter % 128 * 8) / 128 + 8;
break;
}
- sprite->pos2.y = -(Sin(counter % 128, 8));
+ sprite->y2 = -(Sin(counter % 128, 8));
}
sprite->data[2] += 12;
}
-static void pokemonanimfunc_09(struct Sprite *sprite)
+static void Anim_GrowVibrate(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
HandleStartAffineAnim(sprite);
@@ -1230,8 +1261,8 @@ static void pokemonanimfunc_09(struct Sprite *sprite)
if (sprite->data[2] > 40)
{
HandleSetAffineData(sprite, 256, 256, 0);
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
@@ -1254,32 +1285,33 @@ static void pokemonanimfunc_09(struct Sprite *sprite)
sprite->data[2]++;
}
-static const s8 sUnknown_0860AD70[][3] =
+// x delta, y delta, time
+static const s8 sZigzagData[][3] =
{
{-1, -1, 6},
- {2, 0, 6},
+ { 2, 0, 6},
{-2, 2, 6},
- {2, 0, 6},
+ { 2, 0, 6},
{-2, -2, 6},
- {2, 0, 6},
+ { 2, 0, 6},
{-2, 2, 6},
- {2, 0, 6},
+ { 2, 0, 6},
{-1, -1, 6},
- {0, 0, 0},
+ { 0, 0, 0},
};
-static void sub_817FC20(struct Sprite *sprite)
+static void Zigzag(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] == 0)
sprite->data[3] = 0;
- if (sUnknown_0860AD70[sprite->data[3]][2] == sprite->data[2])
+ if (sZigzagData[sprite->data[3]][2] == sprite->data[2])
{
- if (sUnknown_0860AD70[sprite->data[3]][2] == 0)
+ if (sZigzagData[sprite->data[3]][2] == 0)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->callback = WaitAnimEnd;
}
else
{
@@ -1288,81 +1320,81 @@ static void sub_817FC20(struct Sprite *sprite)
}
}
- if (sUnknown_0860AD70[sprite->data[3]][2] == 0)
+ if (sZigzagData[sprite->data[3]][2] == 0)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->callback = WaitAnimEnd;
}
else
{
- sprite->pos2.x += sUnknown_0860AD70[sprite->data[3]][0];
- sprite->pos2.y += sUnknown_0860AD70[sprite->data[3]][1];
+ sprite->x2 += sZigzagData[sprite->data[3]][0];
+ sprite->y2 += sZigzagData[sprite->data[3]][1];
sprite->data[2]++;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
}
-static void pokemonanimfunc_0A(struct Sprite *sprite)
+static void Anim_ZigzagFast(struct Sprite *sprite)
{
- sub_817FC20(sprite);
- sprite->callback = sub_817FC20;
+ Zigzag(sprite);
+ sprite->callback = Zigzag;
}
-static void sub_817FCDC(struct Sprite *sprite)
+static void HorizontalShake(struct Sprite *sprite)
{
s32 counter = sprite->data[2];
if (counter > 2304)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.x = 0;
+ sprite->callback = WaitAnimEnd;
+ sprite->x2 = 0;
}
else
{
- sprite->pos2.x = Sin(counter % 256, sprite->data[7]);
+ sprite->x2 = Sin(counter % 256, sprite->data[7]);
}
sprite->data[2] += sprite->data[0];
}
-static void pokemonanimfunc_0F(struct Sprite *sprite)
+static void Anim_HorizontalShake(struct Sprite *sprite)
{
sprite->data[0] = 60;
sprite->data[7] = 3;
- sub_817FCDC(sprite);
- sprite->callback = sub_817FCDC;
+ HorizontalShake(sprite);
+ sprite->callback = HorizontalShake;
}
-static void sub_817FD44(struct Sprite *sprite)
+static void VerticalShake(struct Sprite *sprite)
{
s32 counter = sprite->data[2];
if (counter > 2304)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.y = 0;
+ sprite->callback = WaitAnimEnd;
+ sprite->y2 = 0;
}
else
{
- sprite->pos2.y = Sin(counter % 256, 3);
+ sprite->y2 = Sin(counter % 256, 3);
}
sprite->data[2] += sprite->data[0];
}
-static void pokemonanimfunc_10(struct Sprite *sprite)
+static void Anim_VerticalShake(struct Sprite *sprite)
{
sprite->data[0] = 60;
- sub_817FD44(sprite);
- sprite->callback = sub_817FD44;
+ VerticalShake(sprite);
+ sprite->callback = VerticalShake;
}
-static void pokemonanimfunc_11(struct Sprite *sprite)
+static void Anim_CircularVibrate(struct Sprite *sprite)
{
if (sprite->data[2] > 512)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->callback = WaitAnimEnd;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
}
else
{
@@ -1377,43 +1409,43 @@ static void pokemonanimfunc_11(struct Sprite *sprite)
amplitude = Sin(sprite->data[2] / 4, 8);
index = sprite->data[2] % 256;
- sprite->pos2.y = Sin(index, amplitude) * sign;
- sprite->pos2.x = Cos(index, amplitude) * sign;
+ sprite->y2 = Sin(index, amplitude) * sign;
+ sprite->x2 = Cos(index, amplitude) * sign;
}
sprite->data[2] += 9;
}
-static void sub_817FE30(struct Sprite *sprite)
+static void Twist(struct Sprite *sprite)
{
s16 id = sprite->data[0];
- if (sUnknown_03001240[id].field_0 != 0)
+ if (sAnims[id].delay != 0)
{
- sUnknown_03001240[id].field_0--;
+ sAnims[id].delay--;
}
else
{
- if (sprite->data[2] == 0 && sUnknown_03001240[id].field_8 == 0)
+ if (sprite->data[2] == 0 && sAnims[id].data == 0)
{
HandleStartAffineAnim(sprite);
- sUnknown_03001240[id].field_8++;
+ sAnims[id].data++;
}
- if (sprite->data[2] > sUnknown_03001240[id].field_6)
+ if (sprite->data[2] > sAnims[id].rotation)
{
HandleSetAffineData(sprite, 256, 256, 0);
- if (sUnknown_03001240[id].field_4 > 1)
+ if (sAnims[id].runs > 1)
{
- sUnknown_03001240[id].field_4--;
- sUnknown_03001240[id].field_0 = 10;
+ sAnims[id].runs--;
+ sAnims[id].delay = 10;
sprite->data[2] = 0;
}
else
{
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
}
else
@@ -1426,103 +1458,107 @@ static void sub_817FE30(struct Sprite *sprite)
}
}
-static void pokemonanimfunc_12(struct Sprite *sprite)
+static void Anim_Twist(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
+ u8 id = sprite->data[0] = AddNewAnim();
- sUnknown_03001240[id].field_6 = 512;
- sUnknown_03001240[id].field_0 = 0;
- sub_817FE30(sprite);
- sprite->callback = sub_817FE30;
+ sAnims[id].rotation = 512;
+ sAnims[id].delay = 0;
+ Twist(sprite);
+ sprite->callback = Twist;
}
-static void sub_817FF3C(struct Sprite *sprite)
+static void Spin(struct Sprite *sprite)
{
u8 id = sprite->data[0];
if (sprite->data[2] == 0)
HandleStartAffineAnim(sprite);
- if (sprite->data[2] > sUnknown_03001240[id].field_0)
+ if (sprite->data[2] > sAnims[id].delay)
{
HandleSetAffineData(sprite, 256, 256, 0);
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
- sprite->data[6] = (65536 / sUnknown_03001240[id].field_8) * sprite->data[2];
+ sprite->data[6] = (65536 / sAnims[id].data) * sprite->data[2];
HandleSetAffineData(sprite, 256, 256, sprite->data[6]);
}
sprite->data[2]++;
}
-static void pokemonanimfunc_1F(struct Sprite *sprite)
+static void Anim_Spin_Long(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
+ u8 id = sprite->data[0] = AddNewAnim();
- sUnknown_03001240[id].field_0 = 60;
- sUnknown_03001240[id].field_8 = 20;
- sub_817FF3C(sprite);
- sprite->callback = sub_817FF3C;
+ sAnims[id].delay = 60;
+ sAnims[id].data = 20;
+ Spin(sprite);
+ sprite->callback = Spin;
}
-static void sub_817FFF0(struct Sprite *sprite)
+static void CircleCounterclockwise(struct Sprite *sprite)
{
u8 id = sprite->data[0];
- sub_817F70C(sprite);
+ TryFlipX(sprite);
- if (sprite->data[2] > sUnknown_03001240[id].field_6)
+ if (sprite->data[2] > sAnims[id].rotation)
{
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
+ sprite->callback = WaitAnimEnd;
}
else
{
s16 index = (sprite->data[2] + 192) % 256;
- sprite->pos2.x = -(Cos(index, sUnknown_03001240[id].field_8 * 2));
- sprite->pos2.y = Sin(index, sUnknown_03001240[id].field_8) + sUnknown_03001240[id].field_8;
+ sprite->x2 = -(Cos(index, sAnims[id].data * 2));
+ sprite->y2 = Sin(index, sAnims[id].data) + sAnims[id].data;
}
- sprite->data[2] += sUnknown_03001240[id].field_2;
- sub_817F70C(sprite);
+ sprite->data[2] += sAnims[id].speed;
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_14(struct Sprite *sprite)
+static void Anim_CircleCounterclockwise(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
+ u8 id = sprite->data[0] = AddNewAnim();
- sUnknown_03001240[id].field_6 = 512;
- sUnknown_03001240[id].field_8 = 6;
- sUnknown_03001240[id].field_2 = 24;
- sub_817FFF0(sprite);
- sprite->callback = sub_817FFF0;
+ sAnims[id].rotation = 512;
+ sAnims[id].data = 6;
+ sAnims[id].speed = 24;
+ CircleCounterclockwise(sprite);
+ sprite->callback = CircleCounterclockwise;
}
-static void pokemonanimfunc_15(struct Sprite *sprite)
-{
- if (sprite->data[2] == 0)
- sprite->data[7] = (sprite->oam.paletteNum * 16) + 256;
-
- if (sprite->data[2] > 128)
- {
- BlendPalette(sprite->data[7], 0x10, 0, RGB_BLACK);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- }
- else
- {
- sprite->data[6] = Sin(sprite->data[2], 16);
- BlendPalette(sprite->data[7], 0x10, sprite->data[6], RGB_BLACK);
- }
+#define GlowColor(color, colorIncrement, speed) \
+{ \
+ if (sprite->data[2] == 0) \
+ sprite->data[7] = (sprite->oam.paletteNum * 16) + 256; \
+ \
+ if (sprite->data[2] > 128) \
+ { \
+ BlendPalette(sprite->data[7], 16, 0, (color)); \
+ sprite->callback = WaitAnimEnd; \
+ } \
+ else \
+ { \
+ sprite->data[6] = Sin(sprite->data[2], (colorIncrement)); \
+ BlendPalette(sprite->data[7], 16, sprite->data[6], (color)); \
+ } \
+ sprite->data[2] += (speed); \
+}
- sprite->data[2]++;
+static void Anim_GlowBlack(struct Sprite *sprite)
+{
+ GlowColor(RGB_BLACK, 16, 1);
}
-static void pokemonanimfunc_16(struct Sprite *sprite)
+static void Anim_HorizontalStretch(struct Sprite *sprite)
{
s16 index1 = 0, index2 = 0;
@@ -1532,8 +1568,8 @@ static void pokemonanimfunc_16(struct Sprite *sprite)
if (sprite->data[2] > 40)
{
HandleSetAffineData(sprite, 256, 256, 0);
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
@@ -1545,7 +1581,7 @@ static void pokemonanimfunc_16(struct Sprite *sprite)
index1 = 0xFF & sprite->data[7];
}
- if (sprite->data[1] == 0)
+ if (!sprite->sDontFlip)
sprite->data[4] = (Sin(index2, 40) - 256) + Sin(index1, 16);
else
sprite->data[4] = (256 - Sin(index2, 40)) - Sin(index1, 16);
@@ -1557,7 +1593,7 @@ static void pokemonanimfunc_16(struct Sprite *sprite)
sprite->data[2]++;
}
-static void pokemonanimfunc_17(struct Sprite *sprite)
+static void Anim_VerticalStretch(struct Sprite *sprite)
{
s16 posY = 0, index1 = 0, index2 = 0;
@@ -1567,9 +1603,9 @@ static void pokemonanimfunc_17(struct Sprite *sprite)
if (sprite->data[2] > 40)
{
HandleSetAffineData(sprite, 256, 256, 0);
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.y = posY;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
+ sprite->y2 = posY;
}
else
{
@@ -1581,7 +1617,7 @@ static void pokemonanimfunc_17(struct Sprite *sprite)
index1 = 0xFF & sprite->data[7];
}
- if (sprite->data[1] == 0)
+ if (!sprite->sDontFlip)
sprite->data[4] = -(Sin(index2, 16)) - 256;
else
sprite->data[4] = Sin(index2, 16) + 256;
@@ -1591,34 +1627,34 @@ static void pokemonanimfunc_17(struct Sprite *sprite)
if (sprite->data[5] != 256)
posY = (256 - sprite->data[5]) / 8;
- sprite->pos2.y = -(posY);
+ sprite->y2 = -(posY);
SetAffineData(sprite, sprite->data[4], sprite->data[5], 0);
}
sprite->data[2]++;
}
-static void sub_818031C(struct Sprite *sprite)
+static void VerticalShakeTwice(struct Sprite *sprite)
{
u8 index = sprite->data[2];
u8 var7 = sprite->data[6];
- u8 var5 = sUnknown_0860AA80[sprite->data[5]][0];
- u8 var6 = sUnknown_0860AA80[sprite->data[5]][1];
+ u8 var5 = sVerticalShakeData[sprite->data[5]][0];
+ u8 var6 = sVerticalShakeData[sprite->data[5]][1];
u8 amplitude = 0;
- if (var5 != 0xFE)
+ if (var5 != (u8)-2)
amplitude = (var6 - var7) * var5 / var6;
else
amplitude = 0;
- if (var5 == 0xFF)
+ if (var5 == (u8)-1)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.y = 0;
+ sprite->callback = WaitAnimEnd;
+ sprite->y2 = 0;
}
else
{
- sprite->pos2.y = Sin(index, amplitude);
+ sprite->y2 = Sin(index, amplitude);
if (var7 == var6)
{
@@ -1633,18 +1669,18 @@ static void sub_818031C(struct Sprite *sprite)
}
}
-static void pokemonanimfunc_19(struct Sprite *sprite)
+static void Anim_VerticalShakeTwice(struct Sprite *sprite)
{
sprite->data[0] = 48;
- sub_818031C(sprite);
- sprite->callback = sub_818031C;
+ VerticalShakeTwice(sprite);
+ sprite->callback = VerticalShakeTwice;
}
-static void pokemonanimfunc_1A(struct Sprite *sprite)
+static void Anim_TipMoveForward(struct Sprite *sprite)
{
u8 counter = 0;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
counter = sprite->data[2];
if (sprite->data[2] == 0)
@@ -1653,9 +1689,9 @@ static void pokemonanimfunc_1A(struct Sprite *sprite)
if (sprite->data[2] > 35)
{
HandleSetAffineData(sprite, 256, 256, 0);
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.x = 0;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
+ sprite->x2 = 0;
}
else
{
@@ -1664,16 +1700,16 @@ static void pokemonanimfunc_1A(struct Sprite *sprite)
if (counter < 10)
HandleSetAffineData(sprite, 256, 256, counter / 2 * 512);
else if (counter >= 10 && counter <= 29)
- sprite->pos2.x = -(Sin(index, 5));
+ sprite->x2 = -(Sin(index, 5));
else
HandleSetAffineData(sprite, 256, 256, (35 - counter) / 2 * 1024);
}
sprite->data[2]++;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_1B(struct Sprite *sprite)
+static void Anim_HorizontalPivot(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
HandleStartAffineAnim(sprite);
@@ -1681,21 +1717,21 @@ static void pokemonanimfunc_1B(struct Sprite *sprite)
if (sprite->data[2] > 100)
{
HandleSetAffineData(sprite, 256, 256, 0);
- sprite->pos2.y = 0;
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->y2 = 0;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
s16 index = (sprite->data[2] * 256) / 100;
- sprite->pos2.y = Sin(index, 10);
+ sprite->y2 = Sin(index, 10);
HandleSetAffineData(sprite, 256, 256, Sin(index, 3276));
}
sprite->data[2]++;
}
-static void sub_81804F8(struct Sprite *sprite)
+static void VerticalSlideWobble(struct Sprite *sprite)
{
s32 var = 0;
s16 index = 0;
@@ -1706,30 +1742,30 @@ static void sub_81804F8(struct Sprite *sprite)
if (sprite->data[2] > 100)
{
HandleSetAffineData(sprite, 256, 256, 0);
- sprite->pos2.y = 0;
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->y2 = 0;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
index = (sprite->data[2] * 256) / 100;
var = (sprite->data[2] * 512) / 100;
var &= 0xFF;
- sprite->pos2.y = Sin(index, sprite->data[0]);
+ sprite->y2 = Sin(index, sprite->data[0]);
HandleSetAffineData(sprite, 256, 256, Sin(var, 3276));
}
sprite->data[2]++;
}
-static void pokemonanimfunc_1C(struct Sprite *sprite)
+static void Anim_VerticalSlideWobble(struct Sprite *sprite)
{
sprite->data[0] = 10;
- sub_81804F8(sprite);
- sprite->callback = sub_81804F8;
+ VerticalSlideWobble(sprite);
+ sprite->callback = VerticalSlideWobble;
}
-static void sub_81805B0(struct Sprite *sprite)
+static void RisingWobble(struct Sprite *sprite)
{
s32 var = 0;
s16 index = 0;
@@ -1740,35 +1776,35 @@ static void sub_81805B0(struct Sprite *sprite)
if (sprite->data[2] > 100)
{
HandleSetAffineData(sprite, 256, 256, 0);
- sprite->pos2.y = 0;
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->y2 = 0;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
index = (sprite->data[2] * 256) / 100;
var = (sprite->data[2] * 512) / 100;
var &= 0xFF;
- sprite->pos2.y = -(Sin(index / 2, sprite->data[0] * 2));
+ sprite->y2 = -(Sin(index / 2, sprite->data[0] * 2));
HandleSetAffineData(sprite, 256, 256, Sin(var, 3276));
}
sprite->data[2]++;
}
-static void pokemonanimfunc_18(struct Sprite *sprite)
+static void Anim_RisingWobble(struct Sprite *sprite)
{
sprite->data[0] = 5;
- sub_81805B0(sprite);
- sprite->callback = sub_81805B0;
+ RisingWobble(sprite);
+ sprite->callback = RisingWobble;
}
-static void pokemonanimfunc_1D(struct Sprite *sprite)
+static void Anim_HorizontalSlideWobble(struct Sprite *sprite)
{
s32 var;
s16 index = 0;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
var = 0;
if (sprite->data[2] == 0)
@@ -1777,26 +1813,24 @@ static void pokemonanimfunc_1D(struct Sprite *sprite)
if (sprite->data[2] > 100)
{
HandleSetAffineData(sprite, 256, 256, 0);
- sprite->pos2.x = 0;
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->x2 = 0;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
- s16 toDiv = 100;
-
- index = (sprite->data[2] * 256) / toDiv;
- var = (sprite->data[2] * 512) / toDiv;
+ index = (sprite->data[2] * 256) / 100;
+ var = (sprite->data[2] * 512) / 100;
var &= 0xFF;
- sprite->pos2.x = Sin(index, 8);
+ sprite->x2 = Sin(index, 8);
HandleSetAffineData(sprite, 256, 256, Sin(var, 3276));
}
sprite->data[2]++;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8180714(struct Sprite *sprite)
+static void VerticalSquishBounce(struct Sprite *sprite)
{
s16 posY = 0;
@@ -1806,14 +1840,14 @@ static void sub_8180714(struct Sprite *sprite)
sprite->data[3] = 0;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] > sprite->data[0] * 3)
{
HandleSetAffineData(sprite, 256, 256, 0);
- sprite->pos2.y = 0;
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->y2 = 0;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
@@ -1824,32 +1858,32 @@ static void sub_8180714(struct Sprite *sprite)
if (yScale > 256)
posY = (256 - yScale) / 8;
- sprite->pos2.y = -(Sin(sprite->data[3], 10)) - posY;
+ sprite->y2 = -(Sin(sprite->data[3], 10)) - posY;
HandleSetAffineData(sprite, 256 - Sin(sprite->data[4], 32), yScale, 0);
sprite->data[2]++;
sprite->data[4] = (sprite->data[4] + 128 / sprite->data[0]) & 0xFF;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_00(struct Sprite *sprite)
+static void Anim_VerticalSquishBounce(struct Sprite *sprite)
{
sprite->data[0] = 16;
- sub_8180714(sprite);
- sprite->callback = sub_8180714;
+ VerticalSquishBounce(sprite);
+ sprite->callback = VerticalSquishBounce;
}
-static void sub_8180828(struct Sprite *sprite)
+static void ShrinkGrow(struct Sprite *sprite)
{
s16 posY = 0;
if (sprite->data[2] > (128 / sprite->data[6]) * sprite->data[7])
{
HandleSetAffineData(sprite, 256, 256, 0);
- sprite->pos2.y = 0;
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->y2 = 0;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
@@ -1858,14 +1892,14 @@ static void sub_8180828(struct Sprite *sprite)
if (yScale > 256)
posY = (256 - yScale) / 8;
- sprite->pos2.y = -(posY);
+ sprite->y2 = -(posY);
HandleSetAffineData(sprite, Sin(sprite->data[4], 48) + 256, yScale, 0);
sprite->data[2]++;
sprite->data[4] = (sprite->data[4] + sprite->data[6]) & 0xFF;
}
}
-static void pokemonanimfunc_13(struct Sprite *sprite)
+static void Anim_ShrinkGrow(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -1874,34 +1908,34 @@ static void pokemonanimfunc_13(struct Sprite *sprite)
sprite->data[6] = 8;
}
- sub_8180828(sprite);
+ ShrinkGrow(sprite);
}
-static const s8 sUnknown_0860AD8E[][8][3] =
+static const s8 sBounceRotateToSidesData[][8][3] =
{
{
- {0, 8, 8},
- {8, -8, 12},
- {-8, 8, 12},
- {8, -8, 12},
- {-8, 8, 12},
- {8, -8, 12},
- {-8, 0, 12},
- {0, 0, 0}
+ { 0, 8, 8},
+ { 8, -8, 12},
+ {-8, 8, 12},
+ { 8, -8, 12},
+ {-8, 8, 12},
+ { 8, -8, 12},
+ {-8, 0, 12},
+ { 0, 0, 0}
},
{
- {0, 8, 16},
- {8, -8, 24},
- {-8, 8, 24},
- {8, -8, 24},
- {-8, 8, 24},
- {8, -8, 24},
- {-8, 0, 24},
- {0, 0, 0}
+ { 0, 8, 16},
+ { 8, -8, 24},
+ {-8, 8, 24},
+ { 8, -8, 24},
+ {-8, 8, 24},
+ { 8, -8, 24},
+ {-8, 0, 24},
+ { 0, 0, 0}
},
};
-static void sub_8180900(struct Sprite *sprite)
+static void BounceRotateToSides(struct Sprite *sprite)
{
s16 var;
u8 structId;
@@ -1910,12 +1944,12 @@ static void sub_8180900(struct Sprite *sprite)
s16 r7;
u32 arrId;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
structId = sprite->data[0];
- var = sUnknown_03001240[structId].field_6;
- r9 = sUnknown_0860AD8E[sUnknown_03001240[structId].field_8][sprite->data[4]][0];
- r10 = sUnknown_0860AD8E[sUnknown_03001240[structId].field_8][sprite->data[4]][1] - r9;
- arrId = sUnknown_03001240[structId].field_8;
+ var = sAnims[structId].rotation;
+ r9 = sBounceRotateToSidesData[sAnims[structId].data][sprite->data[4]][0];
+ r10 = sBounceRotateToSidesData[sAnims[structId].data][sprite->data[4]][1] - r9;
+ arrId = sAnims[structId].data;
r7 = sprite->data[3];
if (sprite->data[2] == 0)
@@ -1924,25 +1958,25 @@ static void sub_8180900(struct Sprite *sprite)
sprite->data[2]++;
}
- if (sUnknown_0860AD8E[arrId][sprite->data[4]][2] == 0)
+ if (sBounceRotateToSidesData[arrId][sprite->data[4]][2] == 0)
{
HandleSetAffineData(sprite, 256, 256, 0);
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
u16 rotation;
- sprite->pos2.y = -(Sin(r7 * 128 / sUnknown_0860AD8E[arrId][sprite->data[4]][2], 10));
- sprite->pos2.x = (r10 * r7 / sUnknown_0860AD8E[arrId][sprite->data[4]][2]) + r9;
+ sprite->y2 = -(Sin(r7 * 128 / sBounceRotateToSidesData[arrId][sprite->data[4]][2], 10));
+ sprite->x2 = (r10 * r7 / sBounceRotateToSidesData[arrId][sprite->data[4]][2]) + r9;
- rotation = -(var * sprite->pos2.x) / 8;
+ rotation = -(var * sprite->x2) / 8;
HandleSetAffineData(sprite, 256, 256, rotation);
- if (r7 == sUnknown_0860AD8E[arrId][sprite->data[4]][2])
+ if (r7 == sBounceRotateToSidesData[arrId][sprite->data[4]][2])
{
sprite->data[4]++;
sprite->data[3] = 0;
@@ -1953,149 +1987,79 @@ static void sub_8180900(struct Sprite *sprite)
}
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_05(struct Sprite *sprite)
+static void Anim_BounceRotateToSides(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
- sUnknown_03001240[id].field_6 = 4096;
- sUnknown_03001240[id].field_8 = sprite->data[6];
- sub_8180900(sprite);
- sprite->callback = sub_8180900;
+ u8 id = sprite->data[0] = AddNewAnim();
+ sAnims[id].rotation = 4096;
+ sAnims[id].data = sprite->data[6];
+ BounceRotateToSides(sprite);
+ sprite->callback = BounceRotateToSides;
}
-static void pokemonanimfunc_20(struct Sprite *sprite)
+static void Anim_GlowOrange(struct Sprite *sprite)
{
- if (sprite->data[2] == 0)
- sprite->data[7] = (sprite->oam.paletteNum * 16) + 256;
-
- if (sprite->data[2] > 128)
- {
- BlendPalette(sprite->data[7], 0x10, 0, RGB(31, 22, 0));
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- }
- else
- {
- sprite->data[6] = Sin(sprite->data[2], 12);
- BlendPalette(sprite->data[7], 0x10, sprite->data[6], RGB(31, 22, 0));
- }
-
- sprite->data[2] += 2;
+ GlowColor(RGB(31, 22, 0), 12, 2);
}
-static void pokemonanimfunc_21(struct Sprite *sprite)
+static void Anim_GlowRed(struct Sprite *sprite)
{
- if (sprite->data[2] == 0)
- sprite->data[7] = (sprite->oam.paletteNum * 16) + 256;
-
- if (sprite->data[2] > 128)
- {
- BlendPalette(sprite->data[7], 0x10, 0, RGB_RED);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- }
- else
- {
- sprite->data[6] = Sin(sprite->data[2], 12);
- BlendPalette(sprite->data[7], 0x10, sprite->data[6], RGB_RED);
- }
-
- sprite->data[2] += 2;
+ GlowColor(RGB_RED, 12, 2);
}
-static void pokemonanimfunc_22(struct Sprite *sprite)
+static void Anim_GlowBlue(struct Sprite *sprite)
{
- if (sprite->data[2] == 0)
- sprite->data[7] = (sprite->oam.paletteNum * 16) + 256;
-
- if (sprite->data[2] > 128)
- {
- BlendPalette(sprite->data[7], 0x10, 0, RGB_BLUE);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- }
- else
- {
- sprite->data[6] = Sin(sprite->data[2], 12);
- BlendPalette(sprite->data[7], 0x10, sprite->data[6], RGB_BLUE);
- }
-
- sprite->data[2] += 2;
+ GlowColor(RGB_BLUE, 12, 2);
}
-static void pokemonanimfunc_23(struct Sprite *sprite)
+static void Anim_GlowYellow(struct Sprite *sprite)
{
- if (sprite->data[2] == 0)
- sprite->data[7] = (sprite->oam.paletteNum * 16) + 256;
-
- if (sprite->data[2] > 128)
- {
- BlendPalette(sprite->data[7], 0x10, 0, RGB_YELLOW);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- }
- else
- {
- sprite->data[6] = Sin(sprite->data[2], 12);
- BlendPalette(sprite->data[7], 0x10, sprite->data[6], RGB_YELLOW);
- }
-
- sprite->data[2] += 2;
+ GlowColor(RGB_YELLOW, 12, 2);
}
-static void pokemonanimfunc_24(struct Sprite *sprite)
+static void Anim_GlowPurple(struct Sprite *sprite)
{
- if (sprite->data[2] == 0)
- sprite->data[7] = (sprite->oam.paletteNum * 16) + 256;
-
- if (sprite->data[2] > 128)
- {
- BlendPalette(sprite->data[7], 0x10, 0, RGB(24, 0, 24));
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- }
- else
- {
- sprite->data[6] = Sin(sprite->data[2], 12);
- BlendPalette(sprite->data[7], 0x10, sprite->data[6], RGB(24, 0, 24));
- }
-
- sprite->data[2] += 2;
+ GlowColor(RGB(24, 0, 24), 12, 2);
}
-static void sub_8180CB4(struct Sprite *sprite);
-static void sub_8180CE8(struct Sprite *sprite);
-static void sub_8180D44(struct Sprite *sprite);
-static void sub_8180DC0(struct Sprite *sprite);
-static void sub_8180E28(struct Sprite *sprite);
+static void BackAndLunge_0(struct Sprite *sprite);
+static void BackAndLunge_1(struct Sprite *sprite);
+static void BackAndLunge_2(struct Sprite *sprite);
+static void BackAndLunge_3(struct Sprite *sprite);
+static void BackAndLunge_4(struct Sprite *sprite);
-static void pokemonanimfunc_25(struct Sprite *sprite)
+static void Anim_BackAndLunge(struct Sprite *sprite)
{
HandleStartAffineAnim(sprite);
- sprite->callback = sub_8180CB4;
+ sprite->callback = BackAndLunge_0;
}
-static void sub_8180CB4(struct Sprite *sprite)
+static void BackAndLunge_0(struct Sprite *sprite)
{
- sub_817F70C(sprite);
- if (++sprite->pos2.x > 7)
+ TryFlipX(sprite);
+ if (++sprite->x2 > 7)
{
- sprite->pos2.x = 8;
+ sprite->x2 = 8;
sprite->data[7] = 2;
- sprite->callback = sub_8180CE8;
+ sprite->callback = BackAndLunge_1;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8180CE8(struct Sprite *sprite)
+static void BackAndLunge_1(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
- sprite->pos2.x -= sprite->data[7];
+ sprite->x2 -= sprite->data[7];
sprite->data[7]++;
- if (sprite->pos2.x <= 0)
+ if (sprite->x2 <= 0)
{
s16 subResult;
u8 var = sprite->data[7];
sprite->data[6] = 0;
- subResult = sprite->pos2.x;
+ subResult = sprite->x2;
do
{
@@ -2106,18 +2070,18 @@ static void sub_8180CE8(struct Sprite *sprite)
while (subResult > -8);
sprite->data[5] = 1;
- sprite->callback = sub_8180D44;
+ sprite->callback = BackAndLunge_2;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8180D44(struct Sprite *sprite)
+static void BackAndLunge_2(struct Sprite *sprite)
{
u8 rotation;
- sub_817F70C(sprite);
- sprite->pos2.x -= sprite->data[7];
+ TryFlipX(sprite);
+ sprite->x2 -= sprite->data[7];
sprite->data[7]++;
rotation = (sprite->data[5] * 6) / sprite->data[6];
@@ -2126,21 +2090,21 @@ static void sub_8180D44(struct Sprite *sprite)
HandleSetAffineData(sprite, 256, 256, rotation * 256);
- if (sprite->pos2.x < -8)
+ if (sprite->x2 < -8)
{
- sprite->pos2.x = -8;
+ sprite->x2 = -8;
sprite->data[4] = 2;
sprite->data[3] = 0;
sprite->data[2] = rotation;
- sprite->callback = sub_8180DC0;
+ sprite->callback = BackAndLunge_3;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8180DC0(struct Sprite *sprite)
+static void BackAndLunge_3(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[3] > 11)
{
@@ -2150,85 +2114,85 @@ static void sub_8180DC0(struct Sprite *sprite)
HandleSetAffineData(sprite, 256, 256, sprite->data[2] << 8);
if (sprite->data[2] == 0)
- sprite->callback = sub_8180E28;
+ sprite->callback = BackAndLunge_4;
}
else
{
- sprite->pos2.x += sprite->data[4];
+ sprite->x2 += sprite->data[4];
sprite->data[4] *= -1;
sprite->data[3]++;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8180E28(struct Sprite *sprite)
+static void BackAndLunge_4(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
- sprite->pos2.x += 2;
- if (sprite->pos2.x > 0)
+ sprite->x2 += 2;
+ if (sprite->x2 > 0)
{
- sprite->pos2.x = 0;
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->x2 = 0;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8180E78(struct Sprite *sprite);
-static void sub_8180ED0(struct Sprite *sprite);
-static void sub_8180F2C(struct Sprite *sprite);
+static void BackFlip_0(struct Sprite *sprite);
+static void BackFlip_1(struct Sprite *sprite);
+static void BackFlip_2(struct Sprite *sprite);
-static void pokemonanimfunc_26(struct Sprite *sprite)
+static void Anim_BackFlip(struct Sprite *sprite)
{
HandleStartAffineAnim(sprite);
sprite->data[3] = 0;
- sprite->callback = sub_8180E78;
+ sprite->callback = BackFlip_0;
}
-static void sub_8180E78(struct Sprite *sprite)
+static void BackFlip_0(struct Sprite *sprite)
{
- sub_817F70C(sprite);
- sprite->pos2.x++;
- sprite->pos2.y--;
+ TryFlipX(sprite);
+ sprite->x2++;
+ sprite->y2--;
- if (sprite->pos2.x % 2 == 0 && sprite->data[3] <= 0)
+ if (sprite->x2 % 2 == 0 && sprite->data[3] <= 0)
sprite->data[3] = 10;
- if (sprite->pos2.x > 7)
+ if (sprite->x2 > 7)
{
- sprite->pos2.x = 8;
- sprite->pos2.y = -8;
+ sprite->x2 = 8;
+ sprite->y2 = -8;
sprite->data[4] = 0;
- sprite->callback = sub_8180ED0;
+ sprite->callback = BackFlip_1;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8180ED0(struct Sprite *sprite)
+static void BackFlip_1(struct Sprite *sprite)
{
- sub_817F70C(sprite);
- sprite->pos2.x = Cos(sprite->data[4], 16) - 8;
- sprite->pos2.y = Sin(sprite->data[4], 16) - 8;
+ TryFlipX(sprite);
+ sprite->x2 = Cos(sprite->data[4], 16) - 8;
+ sprite->y2 = Sin(sprite->data[4], 16) - 8;
if (sprite->data[4] > 63)
{
sprite->data[2] = 160;
sprite->data[3] = 10;
- sprite->callback = sub_8180F2C;
+ sprite->callback = BackFlip_2;
}
sprite->data[4] += 8;
if (sprite->data[4] > 64)
sprite->data[4] = 64;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8180F2C(struct Sprite *sprite)
+static void BackFlip_2(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[3] > 0)
{
@@ -2238,25 +2202,25 @@ static void sub_8180F2C(struct Sprite *sprite)
{
u32 rotation;
- sprite->pos2.x = Cos(sprite->data[2], 5) - 4;
- sprite->pos2.y = -(Sin(sprite->data[2], 5)) + 4;
+ sprite->x2 = Cos(sprite->data[2], 5) - 4;
+ sprite->y2 = -(Sin(sprite->data[2], 5)) + 4;
sprite->data[2] -= 4;
rotation = sprite->data[2] - 32;
HandleSetAffineData(sprite, 256, 256, rotation * 512);
if (sprite->data[2] <= 32)
{
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_27(struct Sprite *sprite)
+static void Anim_Flicker(struct Sprite *sprite)
{
if (sprite->data[3] > 0)
{
@@ -2264,225 +2228,225 @@ static void pokemonanimfunc_27(struct Sprite *sprite)
}
else
{
- sprite->data[4] = (sprite->data[4] == 0) ? 1 : 0;
+ sprite->data[4] = (sprite->data[4] == 0) ? TRUE : FALSE;
sprite->invisible = sprite->data[4];
if (++sprite->data[2] > 19)
{
sprite->invisible = FALSE;
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->callback = WaitAnimEnd;
}
sprite->data[3] = 2;
}
}
-static void sub_8181024(struct Sprite *sprite);
-static void sub_8181068(struct Sprite *sprite);
-static void sub_81810C4(struct Sprite *sprite);
+static void BackFlipBig_0(struct Sprite *sprite);
+static void BackFlipBig_1(struct Sprite *sprite);
+static void BackFlipBig_2(struct Sprite *sprite);
-static void pokemonanimfunc_28(struct Sprite *sprite)
+static void Anim_BackFlipBig(struct Sprite *sprite)
{
HandleStartAffineAnim(sprite);
- sprite->callback = sub_8181024;
+ sprite->callback = BackFlipBig_0;
}
-static void sub_8181024(struct Sprite *sprite)
+static void BackFlipBig_0(struct Sprite *sprite)
{
- sub_817F70C(sprite);
- sprite->pos2.x--;
- sprite->pos2.y++;
+ TryFlipX(sprite);
+ sprite->x2--;
+ sprite->y2++;
- if (sprite->pos2.x <= -16)
+ if (sprite->x2 <= -16)
{
- sprite->pos2.x = -16;
- sprite->pos2.y = 16;
- sprite->callback = sub_8181068;
+ sprite->x2 = -16;
+ sprite->y2 = 16;
+ sprite->callback = BackFlipBig_1;
sprite->data[2] = 160;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8181068(struct Sprite *sprite)
+static void BackFlipBig_1(struct Sprite *sprite)
{
u32 rotation;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
sprite->data[2] -= 4;
- sprite->pos2.x = Cos(sprite->data[2], 22);
- sprite->pos2.y = -(Sin(sprite->data[2], 22));
+ sprite->x2 = Cos(sprite->data[2], 22);
+ sprite->y2 = -(Sin(sprite->data[2], 22));
rotation = sprite->data[2] - 32;
HandleSetAffineData(sprite, 256, 256, rotation * 512);
if (sprite->data[2] <= 32)
- sprite->callback = sub_81810C4;
+ sprite->callback = BackFlipBig_2;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_81810C4(struct Sprite *sprite)
+static void BackFlipBig_2(struct Sprite *sprite)
{
- sub_817F70C(sprite);
- sprite->pos2.x--;
- sprite->pos2.y++;
+ TryFlipX(sprite);
+ sprite->x2--;
+ sprite->y2++;
- if (sprite->pos2.x <= 0)
+ if (sprite->x2 <= 0)
{
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8181110(struct Sprite *sprite);
-static void sub_8181144(struct Sprite *sprite);
-static void sub_81811A4(struct Sprite *sprite);
+static void FrontFlip_0(struct Sprite *sprite);
+static void FrontFlip_1(struct Sprite *sprite);
+static void FrontFlip_2(struct Sprite *sprite);
-static void pokemonanimfunc_29(struct Sprite *sprite)
+static void Anim_FrontFlip(struct Sprite *sprite)
{
HandleStartAffineAnim(sprite);
- sprite->callback = sub_8181110;
+ sprite->callback = FrontFlip_0;
}
-static void sub_8181110(struct Sprite *sprite)
+static void FrontFlip_0(struct Sprite *sprite)
{
- sub_817F70C(sprite);
- sprite->pos2.x++;
- sprite->pos2.y--;
+ TryFlipX(sprite);
+ sprite->x2++;
+ sprite->y2--;
- if (sprite->pos2.x > 15)
+ if (sprite->x2 > 15)
{
sprite->data[2] = 0;
- sprite->callback = sub_8181144;
+ sprite->callback = FrontFlip_1;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8181144(struct Sprite *sprite)
+static void FrontFlip_1(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
sprite->data[2] += 16;
- if (sprite->pos2.x <= -16)
+ if (sprite->x2 <= -16)
{
- sprite->pos2.x = -16;
- sprite->pos2.y = 16;
+ sprite->x2 = -16;
+ sprite->y2 = 16;
sprite->data[2] = 0;
- sprite->callback = sub_81811A4;
+ sprite->callback = FrontFlip_2;
}
else
{
- sprite->pos2.x -= 2;
- sprite->pos2.y += 2;
+ sprite->x2 -= 2;
+ sprite->y2 += 2;
}
HandleSetAffineData(sprite, 256, 256, sprite->data[2] << 8);
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_81811A4(struct Sprite *sprite)
+static void FrontFlip_2(struct Sprite *sprite)
{
- sub_817F70C(sprite);
- sprite->pos2.x++;
- sprite->pos2.y--;;
+ TryFlipX(sprite);
+ sprite->x2++;
+ sprite->y2--;;
- if (sprite->pos2.x >= 0)
+ if (sprite->x2 >= 0)
{
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8181214(struct Sprite *sprite);
+static void TumblingFrontFlip(struct Sprite *sprite);
-static void pokemonanimfunc_2A(struct Sprite *sprite)
+static void Anim_TumblingFrontFlip(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
- sUnknown_03001240[id].field_2 = 2;
- sub_8181214(sprite);
- sprite->callback = sub_8181214;
+ u8 id = sprite->data[0] = AddNewAnim();
+ sAnims[id].speed = 2;
+ TumblingFrontFlip(sprite);
+ sprite->callback = TumblingFrontFlip;
}
-static void sub_8181214(struct Sprite *sprite)
+static void TumblingFrontFlip(struct Sprite *sprite)
{
- if (sUnknown_03001240[sprite->data[0]].field_0 != 0)
+ if (sAnims[sprite->data[0]].delay != 0)
{
- sUnknown_03001240[sprite->data[0]].field_0--;
+ sAnims[sprite->data[0]].delay--;
}
else
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] == 0)
{
sprite->data[2]++;
HandleStartAffineAnim(sprite);
- sprite->data[7] = sUnknown_03001240[sprite->data[0]].field_2;
+ sprite->data[7] = sAnims[sprite->data[0]].speed;
sprite->data[3] = -1;
sprite->data[4] = -1;
sprite->data[5] = 0;
sprite->data[6] = 0;
}
- sprite->pos2.x += (sprite->data[7] * 2 * sprite->data[3]);
- sprite->pos2.y += (sprite->data[7] * sprite->data[4]);
+ sprite->x2 += (sprite->data[7] * 2 * sprite->data[3]);
+ sprite->y2 += (sprite->data[7] * sprite->data[4]);
sprite->data[6] += 8;
- if (sprite->pos2.x <= -16 || sprite->pos2.x >= 16)
+ if (sprite->x2 <= -16 || sprite->x2 >= 16)
{
- sprite->pos2.x = sprite->data[3] * 16;
+ sprite->x2 = sprite->data[3] * 16;
sprite->data[3] *= -1;
sprite->data[5]++;
}
- else if (sprite->pos2.y <= -16 || sprite->pos2.y >= 16)
+ else if (sprite->y2 <= -16 || sprite->y2 >= 16)
{
- sprite->pos2.y = sprite->data[4] * 16;
+ sprite->y2 = sprite->data[4] * 16;
sprite->data[4] *= -1;
sprite->data[5]++;
}
- if (sprite->data[5] > 5 && sprite->pos2.x <= 0)
+ if (sprite->data[5] > 5 && sprite->x2 <= 0)
{
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
- if (sUnknown_03001240[sprite->data[0]].field_4 > 1)
+ sprite->x2 = 0;
+ sprite->y2 = 0;
+ if (sAnims[sprite->data[0]].runs > 1)
{
- sUnknown_03001240[sprite->data[0]].field_4--;
+ sAnims[sprite->data[0]].runs--;
sprite->data[5] = 0;
sprite->data[6] = 0;
- sUnknown_03001240[sprite->data[0]].field_0 = 10;
+ sAnims[sprite->data[0]].delay = 10;
}
else
{
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
}
HandleSetAffineData(sprite, 256, 256, sprite->data[6] << 8);
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
}
-static void sub_8181370(struct Sprite *sprite);
+static void Figure8(struct Sprite *sprite);
-static void pokemonanimfunc_2B(struct Sprite *sprite)
+static void Anim_Figure8(struct Sprite *sprite)
{
HandleStartAffineAnim(sprite);
sprite->data[6] = 0;
sprite->data[7] = 0;
- sprite->callback = sub_8181370;
+ sprite->callback = Figure8;
}
-static void sub_8181370(struct Sprite *sprite)
+static void Figure8(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
sprite->data[6] += 4;
- sprite->pos2.x = -(Sin(sprite->data[6], 16));
- sprite->pos2.y = -(Sin((sprite->data[6] * 2) & 0xFF, 8));
+ sprite->x2 = -(Sin(sprite->data[6], 16));
+ sprite->y2 = -(Sin((sprite->data[6] * 2) & 0xFF, 8));
if (sprite->data[6] > 192 && sprite->data[7] == 1)
{
HandleSetAffineData(sprite, 256, 256, 0);
@@ -2496,16 +2460,16 @@ static void sub_8181370(struct Sprite *sprite)
if (sprite->data[6] > 255)
{
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
HandleSetAffineData(sprite, 256, 256, 0);
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_2C(struct Sprite *sprite)
+static void Anim_FlashYellow(struct Sprite *sprite)
{
if (++sprite->data[2] == 1)
{
@@ -2515,23 +2479,23 @@ static void pokemonanimfunc_2C(struct Sprite *sprite)
sprite->data[4] = 0;
}
- if (sUnknown_0860AA64[sprite->data[6]][1] == 0xFF)
+ if (sYellowFlashData[sprite->data[6]][1] == (u8)-1)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->callback = WaitAnimEnd;
}
else
{
if (sprite->data[4] == 1)
{
- if (sUnknown_0860AA64[sprite->data[6]][0] != 0)
- BlendPalette(sprite->data[7], 0x10, 0x10, RGB_YELLOW);
+ if (sYellowFlashData[sprite->data[6]][0])
+ BlendPalette(sprite->data[7], 16, 16, RGB_YELLOW);
else
- BlendPalette(sprite->data[7], 0x10, 0, RGB_YELLOW);
+ BlendPalette(sprite->data[7], 16, 0, RGB_YELLOW);
sprite->data[4] = 0;
}
- if (sUnknown_0860AA64[sprite->data[6]][1] == sprite->data[5])
+ if (sYellowFlashData[sprite->data[6]][1] == sprite->data[5])
{
sprite->data[4] = 1;
sprite->data[5] = 0;
@@ -2544,155 +2508,155 @@ static void pokemonanimfunc_2C(struct Sprite *sprite)
}
}
-static void sub_81814D4(struct Sprite *sprite)
+static void SwingConcave(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
HandleStartAffineAnim(sprite);
- sub_817F70C(sprite);
- if (sprite->data[2] > sUnknown_03001240[sprite->data[0]].field_8)
+ TryFlipX(sprite);
+ if (sprite->data[2] > sAnims[sprite->data[0]].data)
{
HandleSetAffineData(sprite, 256, 256, 0);
- sprite->pos2.x = 0;
- if (sUnknown_03001240[sprite->data[0]].field_4 > 1)
+ sprite->x2 = 0;
+ if (sAnims[sprite->data[0]].runs > 1)
{
- sUnknown_03001240[sprite->data[0]].field_4--;
+ sAnims[sprite->data[0]].runs--;
sprite->data[2] = 0;
}
else
{
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
}
else
{
- s16 index = (sprite->data[2] * 256) / sUnknown_03001240[sprite->data[0]].field_8;
- sprite->pos2.x = -(Sin(index, 10));
+ s16 index = (sprite->data[2] * 256) / sAnims[sprite->data[0]].data;
+ sprite->x2 = -(Sin(index, 10));
HandleSetAffineData(sprite, 256, 256, Sin(index, 3276));
}
sprite->data[2]++;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_2D(struct Sprite *sprite)
+static void Anim_SwingConcave_FastShort(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
- sUnknown_03001240[id].field_8 = 50;
- sub_81814D4(sprite);
- sprite->callback = sub_81814D4;
+ u8 id = sprite->data[0] = AddNewAnim();
+ sAnims[id].data = 50;
+ SwingConcave(sprite);
+ sprite->callback = SwingConcave;
}
-static void sub_81815D4(struct Sprite *sprite)
+static void SwingConvex(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
HandleStartAffineAnim(sprite);
- sub_817F70C(sprite);
- if (sprite->data[2] > sUnknown_03001240[sprite->data[0]].field_8)
+ TryFlipX(sprite);
+ if (sprite->data[2] > sAnims[sprite->data[0]].data)
{
HandleSetAffineData(sprite, 256, 256, 0);
- sprite->pos2.x = 0;
- if (sUnknown_03001240[sprite->data[0]].field_4 > 1)
+ sprite->x2 = 0;
+ if (sAnims[sprite->data[0]].runs > 1)
{
- sUnknown_03001240[sprite->data[0]].field_4--;
+ sAnims[sprite->data[0]].runs--;
sprite->data[2] = 0;
}
else
{
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
}
else
{
- s16 index = (sprite->data[2] * 256) / sUnknown_03001240[sprite->data[0]].field_8;
- sprite->pos2.x = -(Sin(index, 10));
+ s16 index = (sprite->data[2] * 256) / sAnims[sprite->data[0]].data;
+ sprite->x2 = -(Sin(index, 10));
HandleSetAffineData(sprite, 256, 256, -(Sin(index, 3276)));
}
sprite->data[2]++;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_2E(struct Sprite *sprite)
+static void Anim_SwingConvex_FastShort(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
- sUnknown_03001240[id].field_8 = 50;
- sub_81815D4(sprite);
- sprite->callback = sub_81815D4;
+ u8 id = sprite->data[0] = AddNewAnim();
+ sAnims[id].data = 50;
+ SwingConvex(sprite);
+ sprite->callback = SwingConvex;
}
-static void sub_8181708(struct Sprite *sprite);
-static void sub_8181770(struct Sprite *sprite);
-static void sub_8181794(struct Sprite *sprite);
+static void RotateUpSlamDown_0(struct Sprite *sprite);
+static void RotateUpSlamDown_1(struct Sprite *sprite);
+static void RotateUpSlamDown_2(struct Sprite *sprite);
-static void pokemonanimfunc_2F(struct Sprite *sprite)
+static void Anim_RotateUpSlamDown(struct Sprite *sprite)
{
HandleStartAffineAnim(sprite);
sprite->data[6] = -(14 * sprite->centerToCornerVecX / 10);
sprite->data[7] = 128;
- sprite->callback = sub_8181708;
+ sprite->callback = RotateUpSlamDown_0;
}
-static void sub_8181708(struct Sprite *sprite)
+static void RotateUpSlamDown_0(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
sprite->data[7]--;
- sprite->pos2.x = Cos(sprite->data[7], sprite->data[6]) + sprite->data[6];
+ sprite->x2 = sprite->data[6] + Cos(sprite->data[7], sprite->data[6]);
- sprite->pos2.y = -(Sin(sprite->data[7], sprite->data[6] += 0)); // dummy += 0 is needed to match
+ sprite->y2 = -(Sin(sprite->data[7], sprite->data[6]));
HandleSetAffineData(sprite, 256, 256, (sprite->data[7] - 128) << 8);
if (sprite->data[7] <= 120)
{
sprite->data[7] = 120;
sprite->data[3] = 0;
- sprite->callback = sub_8181770;
+ sprite->callback = RotateUpSlamDown_1;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8181770(struct Sprite *sprite)
+static void RotateUpSlamDown_1(struct Sprite *sprite)
{
if (sprite->data[3] == 20)
{
- sprite->callback = sub_8181794;
+ sprite->callback = RotateUpSlamDown_2;
sprite->data[3] = 0;
}
sprite->data[3]++;
}
-static void sub_8181794(struct Sprite *sprite)
+static void RotateUpSlamDown_2(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
sprite->data[7] += 2;
- sprite->pos2.x = Cos(sprite->data[7], sprite->data[6]) + sprite->data[6];
+ sprite->x2 = sprite->data[6] + Cos(sprite->data[7], sprite->data[6]);
- sprite->pos2.y = -(Sin(sprite->data[7], sprite->data[6] += 0)); // dummy += 0 is needed to match
+ sprite->y2 = -(Sin(sprite->data[7], sprite->data[6]));
HandleSetAffineData(sprite, 256, 256, (sprite->data[7] - 128) << 8);
if (sprite->data[7] >= 128)
{
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
HandleSetAffineData(sprite, 256, 256, 0);
sprite->data[2] = 0;
- sub_817F77C(sprite);
- sprite->callback = pokemonanimfunc_10;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = Anim_VerticalShake;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8181810(struct Sprite *sprite)
+static void DeepVerticalSquishBounce(struct Sprite *sprite)
{
- if (sUnknown_03001240[sprite->data[0]].field_0 != 0)
+ if (sAnims[sprite->data[0]].delay != 0)
{
- sUnknown_03001240[sprite->data[0]].field_0--;
+ sAnims[sprite->data[0]].delay--;
}
else
{
@@ -2707,7 +2671,7 @@ static void sub_8181810(struct Sprite *sprite)
if (sprite->data[5] == 0)
{
sprite->data[7] = Sin(sprite->data[4], 256);
- sprite->pos2.y = Sin(sprite->data[4], 16);
+ sprite->y2 = Sin(sprite->data[4], 16);
sprite->data[6] = Sin(sprite->data[4], 32);
HandleSetAffineData(sprite, 256 - sprite->data[6], 256 + sprite->data[7], 0);
if (sprite->data[4] == 128)
@@ -2719,126 +2683,126 @@ static void sub_8181810(struct Sprite *sprite)
else if (sprite->data[5] == 1)
{
sprite->data[7] = Sin(sprite->data[4], 32);
- sprite->pos2.y = -(Sin(sprite->data[4], 8));
+ sprite->y2 = -(Sin(sprite->data[4], 8));
sprite->data[6] = Sin(sprite->data[4], 128);
HandleSetAffineData(sprite, 256 + sprite->data[6], 256 - sprite->data[7], 0);
if (sprite->data[4] == 128)
{
- if (sUnknown_03001240[sprite->data[0]].field_4 > 1)
+ if (sAnims[sprite->data[0]].runs > 1)
{
- sUnknown_03001240[sprite->data[0]].field_4--;
- sUnknown_03001240[sprite->data[0]].field_0 = 10;
+ sAnims[sprite->data[0]].runs--;
+ sAnims[sprite->data[0]].delay = 10;
sprite->data[4] = 0;
sprite->data[5] = 0;
}
else
{
HandleSetAffineData(sprite, 256, 256, 0);
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
}
}
- sprite->data[4] += sUnknown_03001240[sprite->data[0]].field_6;
+ sprite->data[4] += sAnims[sprite->data[0]].rotation;
}
}
-static void pokemonanimfunc_30(struct Sprite *sprite)
+static void Anim_DeepVerticalSquishBounce(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
- sUnknown_03001240[id].field_6 = 4;
- sub_8181810(sprite);
- sprite->callback = sub_8181810;
+ u8 id = sprite->data[0] = AddNewAnim();
+ sAnims[id].rotation = 4;
+ DeepVerticalSquishBounce(sprite);
+ sprite->callback = DeepVerticalSquishBounce;
}
-static void pokemonanimfunc_31(struct Sprite *sprite)
+static void Anim_HorizontalJumps(struct Sprite *sprite)
{
s32 counter = sprite->data[2];
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (counter > 512)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->callback = WaitAnimEnd;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
}
else
{
switch (sprite->data[2] / 128)
{
case 0:
- sprite->pos2.x = -(counter % 128 * 8) / 128;
+ sprite->x2 = -(counter % 128 * 8) / 128;
break;
case 1:
- sprite->pos2.x = (counter % 128 / 16) - 8;
+ sprite->x2 = (counter % 128 / 16) - 8;
break;
case 2:
- sprite->pos2.x = (counter % 128 / 16);
+ sprite->x2 = (counter % 128 / 16);
break;
case 3:
- sprite->pos2.x = -(counter % 128 * 8) / 128 + 8;
+ sprite->x2 = -(counter % 128 * 8) / 128 + 8;
break;
}
- sprite->pos2.y = -(Sin(counter % 128, 8));
+ sprite->y2 = -(Sin(counter % 128, 8));
}
sprite->data[2] += 12;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8181ABC(struct Sprite *sprite);
-static void sub_8181B4C(struct Sprite *sprite);
-static void sub_8181C2C(struct Sprite *sprite);
+static void HorizontalJumpsVerticalStretch_0(struct Sprite *sprite);
+static void HorizontalJumpsVerticalStretch_1(struct Sprite *sprite);
+static void HorizontalJumpsVerticalStretch_2(struct Sprite *sprite);
-static void pokemonanimfunc_32(struct Sprite *sprite)
+static void Anim_HorizontalJumpsVerticalStretch(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
- sUnknown_03001240[id].field_8 = -1;
+ u8 id = sprite->data[0] = AddNewAnim();
+ sAnims[id].data = -1;
HandleStartAffineAnim(sprite);
sprite->data[3] = 0;
- sub_8181ABC(sprite);
- sprite->callback = sub_8181ABC;
+ HorizontalJumpsVerticalStretch_0(sprite);
+ sprite->callback = HorizontalJumpsVerticalStretch_0;
}
-static void sub_8181ABC(struct Sprite *sprite)
+static void HorizontalJumpsVerticalStretch_0(struct Sprite *sprite)
{
- if (sUnknown_03001240[sprite->data[0]].field_0 != 0)
+ if (sAnims[sprite->data[0]].delay != 0)
{
- sUnknown_03001240[sprite->data[0]].field_0--;
+ sAnims[sprite->data[0]].delay--;
}
else
{
s32 counter;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
counter = sprite->data[2];
if (sprite->data[2] > 128)
{
sprite->data[2] = 0;
- sprite->callback = sub_8181B4C;
+ sprite->callback = HorizontalJumpsVerticalStretch_1;
}
else
{
- s32 var = 8 * sUnknown_03001240[sprite->data[0]].field_8;
- sprite->pos2.x = var * (counter % 128) / 128;
- sprite->pos2.y = -(Sin(counter % 128, 8));
+ s32 var = 8 * sAnims[sprite->data[0]].data;
+ sprite->x2 = var * (counter % 128) / 128;
+ sprite->y2 = -(Sin(counter % 128, 8));
sprite->data[2] += 12;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
}
-static void sub_8181B4C(struct Sprite *sprite)
+static void HorizontalJumpsVerticalStretch_1(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] > 48)
{
HandleSetAffineData(sprite, 256, 256, 0);
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sprite->data[2] = 0;
- sprite->callback = sub_8181C2C;
+ sprite->callback = HorizontalJumpsVerticalStretch_2;
}
else
{
@@ -2847,62 +2811,62 @@ static void sub_8181B4C(struct Sprite *sprite)
if (sprite->data[2] >= 16 && sprite->data[2] <= 31)
{
sprite->data[3] += 8;
- sprite->pos2.x -= sUnknown_03001240[sprite->data[0]].field_8;
+ sprite->x2 -= sAnims[sprite->data[0]].data;
}
yDelta = 0;
if (yScale > 256)
yDelta = (256 - yScale) / 8;
- sprite->pos2.y = -(Sin(sprite->data[3], 20)) - yDelta;
+ sprite->y2 = -(Sin(sprite->data[3], 20)) - yDelta;
HandleSetAffineData(sprite, 256 - Sin(sprite->data[4], 32), yScale, 0);
sprite->data[2]++;
sprite->data[4] += 8;
sprite->data[4] &= 0xFF;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8181C2C(struct Sprite *sprite)
+static void HorizontalJumpsVerticalStretch_2(struct Sprite *sprite)
{
s32 counter;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
counter = sprite->data[2];
if (counter > 128)
{
- if (sUnknown_03001240[sprite->data[0]].field_4 > 1)
+ if (sAnims[sprite->data[0]].runs > 1)
{
- sUnknown_03001240[sprite->data[0]].field_4--;
- sUnknown_03001240[sprite->data[0]].field_0 = 10;
+ sAnims[sprite->data[0]].runs--;
+ sAnims[sprite->data[0]].delay = 10;
sprite->data[3] = 0;
sprite->data[2] = 0;
sprite->data[4] = 0;
- sprite->callback = sub_8181ABC;
+ sprite->callback = HorizontalJumpsVerticalStretch_0;
}
else
{
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
}
else
{
- s32 var = sUnknown_03001240[sprite->data[0]].field_8;
+ s32 var = sAnims[sprite->data[0]].data;
- sprite->pos2.x = var * ((counter % 128) * 8) / 128 + 8 * -var;
- sprite->pos2.y = -(Sin(counter % 128, 8));
+ sprite->x2 = var * ((counter % 128) * 8) / 128 + 8 * -var;
+ sprite->y2 = -(Sin(counter % 128, 8));
}
sprite->data[2] += 12;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8181CE8(struct Sprite *sprite)
+static void RotateToSides(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -2910,47 +2874,47 @@ static void sub_8181CE8(struct Sprite *sprite)
sprite->data[2]++;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[7] > 254)
{
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
HandleSetAffineData(sprite, 256, 256, 0);
- if (sUnknown_03001240[sprite->data[0]].field_4 > 1)
+ if (sAnims[sprite->data[0]].runs > 1)
{
- sUnknown_03001240[sprite->data[0]].field_4--;
+ sAnims[sprite->data[0]].runs--;
sprite->data[2] = 0;
sprite->data[7] = 0;
}
else
{
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
else
{
u16 rotation;
- sprite->pos2.x = -(Sin(sprite->data[7], 16));
+ sprite->x2 = -(Sin(sprite->data[7], 16));
rotation = Sin(sprite->data[7], 32);
HandleSetAffineData(sprite, 256, 256, rotation << 8);
- sprite->data[7] += sUnknown_03001240[sprite->data[0]].field_6;
- sub_817F70C(sprite);
+ sprite->data[7] += sAnims[sprite->data[0]].rotation;
+ TryFlipX(sprite);
}
}
-static void pokemonanimfunc_33(struct Sprite *sprite)
+static void Anim_RotateToSides_Fast(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
- sUnknown_03001240[id].field_6 = 4;
- sub_8181CE8(sprite);
- sprite->callback = sub_8181CE8;
+ u8 id = sprite->data[0] = AddNewAnim();
+ sAnims[id].rotation = 4;
+ RotateToSides(sprite);
+ sprite->callback = RotateToSides;
}
-static void pokemonanimfunc_34(struct Sprite *sprite)
+static void Anim_RotateUpToSides(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -2958,30 +2922,30 @@ static void pokemonanimfunc_34(struct Sprite *sprite)
sprite->data[2]++;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[7] > 254)
{
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
HandleSetAffineData(sprite, 256, 256, 0);
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sub_817F70C(sprite);
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
+ TryFlipX(sprite);
}
else
{
u16 rotation;
- sprite->pos2.x = -(Sin(sprite->data[7], 16));
- sprite->pos2.y = -(Sin(sprite->data[7] % 128, 16));
+ sprite->x2 = -(Sin(sprite->data[7], 16));
+ sprite->y2 = -(Sin(sprite->data[7] % 128, 16));
rotation = Sin(sprite->data[7], 32);
HandleSetAffineData(sprite, 256, 256, rotation << 8);
sprite->data[7] += 8;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
}
-static void pokemonanimfunc_35(struct Sprite *sprite)
+static void Anim_FlickerIncreasing(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
sprite->data[7] = 0;
@@ -3001,28 +2965,28 @@ static void pokemonanimfunc_35(struct Sprite *sprite)
if (sprite->data[2] > 10)
{
sprite->invisible = FALSE;
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->callback = WaitAnimEnd;
}
}
-static void sub_8181F14(struct Sprite *sprite);
-static void sub_8181F50(struct Sprite *sprite);
-static void sub_8181FC0(struct Sprite *sprite);
+static void TipHopForward_0(struct Sprite *sprite);
+static void TipHopForward_1(struct Sprite *sprite);
+static void TipHopForward_2(struct Sprite *sprite);
-static void pokemonanimfunc_36(struct Sprite *sprite)
+static void Anim_TipHopForward(struct Sprite *sprite)
{
HandleStartAffineAnim(sprite);
sprite->data[7] = 0;
- sprite->callback = sub_8181F14;
+ sprite->callback = TipHopForward_0;
}
-static void sub_8181F14(struct Sprite *sprite)
+static void TipHopForward_0(struct Sprite *sprite)
{
if (sprite->data[7] > 31)
{
sprite->data[7] = 32;
sprite->data[2] = 0;
- sprite->callback = sub_8181F50;
+ sprite->callback = TipHopForward_1;
}
else
{
@@ -3032,45 +2996,45 @@ static void sub_8181F14(struct Sprite *sprite)
HandleSetAffineData(sprite, 256, 256, sprite->data[7] << 8);
}
-static void sub_8181F50(struct Sprite *sprite)
+static void TipHopForward_1(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] > 512)
{
- sprite->callback = sub_8181FC0;
+ sprite->callback = TipHopForward_2;
sprite->data[6] = 0;
}
else
{
- sprite->pos2.x = -(sprite->data[2] * 16) / 512;
- sprite->pos2.y = -(Sin(sprite->data[2] % 128, 4));
+ sprite->x2 = -(sprite->data[2] * 16) / 512;
+ sprite->y2 = -(Sin(sprite->data[2] % 128, 4));
sprite->data[2] += 12;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8181FC0(struct Sprite *sprite)
+static void TipHopForward_2(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
sprite->data[7] -= 2;
if (sprite->data[7] < 0)
{
sprite->data[7] = 0;
- sprite->pos2.x = 0;
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->x2 = 0;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
- sprite->pos2.x = -(Sin(sprite->data[7] * 2, 16));
+ sprite->x2 = -(Sin(sprite->data[7] * 2, 16));
}
HandleSetAffineData(sprite, 256, 256, sprite->data[7] << 8);
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_37(struct Sprite *sprite)
+static void Anim_PivotShake(struct Sprite *sprite)
{
u16 rotation;
@@ -3081,93 +3045,93 @@ static void pokemonanimfunc_37(struct Sprite *sprite)
sprite->data[7] = 0;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[7] > 255)
{
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[7] = 0;
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
sprite->data[7] += 16;
- sprite->pos2.x = -(Sin(sprite->data[7] % 128, 8));
- sprite->pos2.y = -(Sin(sprite->data[7] % 128, 8));
+ sprite->x2 = -(Sin(sprite->data[7] % 128, 8));
+ sprite->y2 = -(Sin(sprite->data[7] % 128, 8));
}
rotation = Sin(sprite->data[7] % 128, 16);
HandleSetAffineData(sprite, 256, 256, rotation << 8);
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_81820FC(struct Sprite *sprite);
-static void sub_818216C(struct Sprite *sprite);
-static void sub_81821CC(struct Sprite *sprite);
-static void sub_8182248(struct Sprite *sprite);
+static void TipAndShake_0(struct Sprite *sprite);
+static void TipAndShake_1(struct Sprite *sprite);
+static void TipAndShake_2(struct Sprite *sprite);
+static void TipAndShake_3(struct Sprite *sprite);
-static void pokemonanimfunc_38(struct Sprite *sprite)
+static void Anim_TipAndShake(struct Sprite *sprite)
{
HandleStartAffineAnim(sprite);
sprite->data[7] = 0;
sprite->data[4] = 0;
- sprite->callback = sub_81820FC;
+ sprite->callback = TipAndShake_0;
}
-static void sub_81820FC(struct Sprite *sprite)
+static void TipAndShake_0(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[7] > 24)
{
if (++sprite->data[4] > 4)
{
sprite->data[4] = 0;
- sprite->callback = sub_818216C;
+ sprite->callback = TipAndShake_1;
}
}
else
{
sprite->data[7] += 2;
- sprite->pos2.x = Sin(sprite->data[7], 8);
- sprite->pos2.y = -(Sin(sprite->data[7], 8));
+ sprite->x2 = Sin(sprite->data[7], 8);
+ sprite->y2 = -(Sin(sprite->data[7], 8));
}
HandleSetAffineData(sprite, 256, 256, -(sprite->data[7]) << 8);
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_818216C(struct Sprite *sprite)
+static void TipAndShake_1(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[7] > 32)
{
sprite->data[6] = 1;
- sprite->callback = sub_81821CC;
+ sprite->callback = TipAndShake_2;
}
else
{
sprite->data[7] += 2;
- sprite->pos2.x = Sin(sprite->data[7], 8);
- sprite->pos2.y = -(Sin(sprite->data[7], 8));
+ sprite->x2 = Sin(sprite->data[7], 8);
+ sprite->y2 = -(Sin(sprite->data[7], 8));
}
HandleSetAffineData(sprite, 256, 256, -(sprite->data[7]) << 8);
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_81821CC(struct Sprite *sprite)
+static void TipAndShake_2(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
sprite->data[7] += (sprite->data[6] * 4);
if (sprite->data[5] > 9)
{
sprite->data[7] = 32;
- sprite->callback = sub_8182248;
+ sprite->callback = TipAndShake_3;
}
- sprite->pos2.x = Sin(sprite->data[7], 8);
- sprite->pos2.y = -(Sin(sprite->data[7], 8));
+ sprite->x2 = Sin(sprite->data[7], 8);
+ sprite->y2 = -(Sin(sprite->data[7], 8));
if (sprite->data[7] <= 28 || sprite->data[7] >= 36)
{
sprite->data[6] *= -1;
@@ -3175,36 +3139,36 @@ static void sub_81821CC(struct Sprite *sprite)
}
HandleSetAffineData(sprite, 256, 256, -(sprite->data[7]) << 8);
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8182248(struct Sprite *sprite)
+static void TipAndShake_3(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[7] <= 0)
{
sprite->data[7] = 0;
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
sprite->data[7] -= 2;
- sprite->pos2.x = Sin(sprite->data[7], 8);
- sprite->pos2.y = -(Sin(sprite->data[7], 8));
+ sprite->x2 = Sin(sprite->data[7], 8);
+ sprite->y2 = -(Sin(sprite->data[7], 8));
}
HandleSetAffineData(sprite, 256, 256, -(sprite->data[7]) << 8);
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_39(struct Sprite *sprite)
+static void Anim_VibrateToCorners(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] > 40)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.x = 0;
+ sprite->callback = WaitAnimEnd;
+ sprite->x2 = 0;
}
else
{
@@ -3216,23 +3180,23 @@ static void pokemonanimfunc_39(struct Sprite *sprite)
if ((sprite->data[2] % 4) / 2 == 0)
{
- sprite->pos2.x = Sin((sprite->data[2] * 128 / 40) % 256, 16) * sign;
- sprite->pos2.y = -(sprite->pos2.x);
+ sprite->x2 = Sin((sprite->data[2] * 128 / 40) % 256, 16) * sign;
+ sprite->y2 = -(sprite->x2);
}
else
{
- sprite->pos2.x = -(Sin((sprite->data[2] * 128 / 40) % 256, 16)) * sign;
- sprite->pos2.y = sprite->pos2.x;
+ sprite->x2 = -(Sin((sprite->data[2] * 128 / 40) % 256, 16)) * sign;
+ sprite->y2 = sprite->x2;
}
}
sprite->data[2]++;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_3A(struct Sprite *sprite)
+static void Anim_GrowInStages(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] == 0)
{
HandleStartAffineAnim(sprite);
@@ -3262,8 +3226,8 @@ static void pokemonanimfunc_3A(struct Sprite *sprite)
{
sprite->data[7] = 64;
HandleSetAffineData(sprite, 256, 256, 0);
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
var = Cos(sprite->data[7], 64);
}
@@ -3295,10 +3259,10 @@ static void pokemonanimfunc_3A(struct Sprite *sprite)
HandleSetAffineData(sprite, 256 - var, 256 - var, 0);
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_3B(struct Sprite *sprite)
+static void Anim_VerticalSpring(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -3309,23 +3273,23 @@ static void pokemonanimfunc_3B(struct Sprite *sprite)
if (sprite->data[7] > 512)
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
HandleSetAffineData(sprite, 256, 256, 0);
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
s16 yScale;
- sprite->pos2.y = Sin(sprite->data[7] % 256, 8);
+ sprite->y2 = Sin(sprite->data[7] % 256, 8);
sprite->data[7] += 8;
yScale = Sin(sprite->data[7] % 128, 96);
HandleSetAffineData(sprite, 256, yScale + 256, 0);
}
}
-static void pokemonanimfunc_3C(struct Sprite *sprite)
+static void Anim_VerticalRepeatedSpring(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -3336,34 +3300,34 @@ static void pokemonanimfunc_3C(struct Sprite *sprite)
if (sprite->data[7] > 256)
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
HandleSetAffineData(sprite, 256, 256, 0);
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
s16 yScale;
- sprite->pos2.y = Sin(sprite->data[7], 16);
+ sprite->y2 = Sin(sprite->data[7], 16);
sprite->data[7] += 4;
yScale = Sin((sprite->data[7] % 64) * 2, 128);
HandleSetAffineData(sprite, 256, yScale + 256, 0);
}
}
-static void sub_81825F8(struct Sprite *sprite);
-static void sub_8182648(struct Sprite *sprite);
-static void sub_81826F8(struct Sprite *sprite);
+static void SpringRising_0(struct Sprite *sprite);
+static void SpringRising_1(struct Sprite *sprite);
+static void SpringRising_2(struct Sprite *sprite);
-static void pokemonanimfunc_3D(struct Sprite *sprite)
+static void Anim_SpringRising(struct Sprite *sprite)
{
HandleStartAffineAnim(sprite);
- sprite->callback = sub_81825F8;
+ sprite->callback = SpringRising_0;
sprite->data[7] = 0;
}
-static void sub_81825F8(struct Sprite *sprite)
+static void SpringRising_0(struct Sprite *sprite)
{
s16 yScale;
@@ -3372,7 +3336,7 @@ static void sub_81825F8(struct Sprite *sprite)
{
sprite->data[7] = 0;
sprite->data[6] = 0;
- sprite->callback = sub_8182648;
+ sprite->callback = SpringRising_1;
yScale = Sin(64, 128); // 128 * 1 = 128
}
else
@@ -3383,7 +3347,7 @@ static void sub_81825F8(struct Sprite *sprite)
HandleSetAffineData(sprite, 256, 256 + yScale, 0);
}
-static void sub_8182648(struct Sprite *sprite)
+static void SpringRising_1(struct Sprite *sprite)
{
s16 yScale;
@@ -3398,7 +3362,7 @@ static void sub_8182648(struct Sprite *sprite)
{
s16 sign, index;
- sprite->pos2.y = -(sprite->data[6] * 4) - Sin(sprite->data[7], 8);
+ sprite->y2 = -(sprite->data[6] * 4) - Sin(sprite->data[7], 8);
if (sprite->data[7] > 63)
{
sign = -1;
@@ -3417,49 +3381,49 @@ static void sub_8182648(struct Sprite *sprite)
if (sprite->data[6] == 3)
{
sprite->data[7] = 0;
- sprite->callback = sub_81826F8;
+ sprite->callback = SpringRising_2;
}
}
-static void sub_81826F8(struct Sprite *sprite)
+static void SpringRising_2(struct Sprite *sprite)
{
s16 yScale;
sprite->data[7] += 8;
yScale = Cos(sprite->data[7], 128);
- sprite->pos2.y = -(Cos(sprite->data[7], 12));
+ sprite->y2 = -(Cos(sprite->data[7], 12));
if (sprite->data[7] > 63)
{
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.y = 0;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
+ sprite->y2 = 0;
HandleSetAffineData(sprite, 256, 256, 0);
}
HandleSetAffineData(sprite, 256, 256 + yScale, 0);
}
-static void sub_8182764(struct Sprite *sprite)
+static void HorizontalSpring(struct Sprite *sprite)
{
if (sprite->data[7] > sprite->data[5])
{
- sprite->pos2.x = 0;
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->x2 = 0;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
HandleSetAffineData(sprite, 256, 256, 0);
}
else
{
s16 xScale;
- sprite->pos2.x = Sin(sprite->data[7] % 256, sprite->data[4]);
+ sprite->x2 = Sin(sprite->data[7] % 256, sprite->data[4]);
sprite->data[7] += sprite->data[6];
xScale = Sin(sprite->data[7] % 128, 96);
HandleSetAffineData(sprite, 256 + xScale, 256, 0);
}
}
-static void pokemonanimfunc_3E(struct Sprite *sprite)
+static void Anim_HorizontalSpring(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -3471,30 +3435,30 @@ static void pokemonanimfunc_3E(struct Sprite *sprite)
sprite->data[4] = 8;
}
- sub_8182764(sprite);
+ HorizontalSpring(sprite);
}
-static void sub_8182830(struct Sprite *sprite)
+static void HorizontalRepeatedSpring(struct Sprite *sprite)
{
if (sprite->data[7] > sprite->data[5])
{
- sprite->pos2.x = 0;
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->x2 = 0;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
HandleSetAffineData(sprite, 256, 256, 0);
}
else
{
s16 xScale;
- sprite->pos2.x = Sin(sprite->data[7] % 256, sprite->data[4]);
+ sprite->x2 = Sin(sprite->data[7] % 256, sprite->data[4]);
sprite->data[7] += sprite->data[6];
xScale = Sin((sprite->data[7] % 64) * 2, 128);
HandleSetAffineData(sprite, 256 + xScale, 256, 0);
}
}
-static void pokemonanimfunc_3F(struct Sprite *sprite)
+static void Anim_HorizontalRepeatedSpring_Slow(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -3506,12 +3470,12 @@ static void pokemonanimfunc_3F(struct Sprite *sprite)
sprite->data[4] = 16;
}
- sub_8182830(sprite);
+ HorizontalRepeatedSpring(sprite);
}
-static void pokemonanimfunc_40(struct Sprite *sprite)
+static void Anim_HorizontalSlideShrink(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] == 0)
{
HandleStartAffineAnim(sprite);
@@ -3521,27 +3485,27 @@ static void pokemonanimfunc_40(struct Sprite *sprite)
if (sprite->data[7] > 512)
{
- sprite->pos2.x = 0;
- sub_817F77C(sprite);
+ sprite->x2 = 0;
+ ResetSpriteAfterAnim(sprite);
HandleSetAffineData(sprite, 256, 256, 0);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->callback = WaitAnimEnd;
}
else
{
s16 scale;
- sprite->pos2.x = Sin(sprite->data[7] % 256, 8);
+ sprite->x2 = Sin(sprite->data[7] % 256, 8);
sprite->data[7] += 8;
scale = Sin(sprite->data[7] % 128, 96);
HandleSetAffineData(sprite, 256 + scale, 256 + scale, 0);
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_41(struct Sprite *sprite)
+static void Anim_LungeGrow(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] == 0)
{
HandleStartAffineAnim(sprite);
@@ -3551,27 +3515,27 @@ static void pokemonanimfunc_41(struct Sprite *sprite)
if (sprite->data[7] > 512)
{
- sprite->pos2.x = 0;
- sub_817F77C(sprite);
+ sprite->x2 = 0;
+ ResetSpriteAfterAnim(sprite);
HandleSetAffineData(sprite, 256, 256, 0);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->callback = WaitAnimEnd;
}
else
{
s16 scale;
- sprite->pos2.x = -(Sin((sprite->data[7] % 256) / 2, 16));
+ sprite->x2 = -(Sin((sprite->data[7] % 256) / 2, 16));
sprite->data[7] += 8;
scale = -(Sin((sprite->data[7] % 256) / 2, 64));
HandleSetAffineData(sprite, 256 + scale, 256 + scale, 0);
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_42(struct Sprite *sprite)
+static void Anim_CircleIntoBackground(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] == 0)
{
HandleStartAffineAnim(sprite);
@@ -3581,30 +3545,30 @@ static void pokemonanimfunc_42(struct Sprite *sprite)
if (sprite->data[7] > 512)
{
- sprite->pos2.x = 0;
- sub_817F77C(sprite);
+ sprite->x2 = 0;
+ ResetSpriteAfterAnim(sprite);
HandleSetAffineData(sprite, 256, 256, 0);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->callback = WaitAnimEnd;
}
else
{
s16 scale;
- sprite->pos2.x = -(Sin(sprite->data[7] % 256 , 8));
+ sprite->x2 = -(Sin(sprite->data[7] % 256 , 8));
sprite->data[7] += 8;
scale = Sin((sprite->data[7] % 256) / 2, 96);
HandleSetAffineData(sprite, 256 + scale, 256 + scale, 0);
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_43(struct Sprite *sprite)
+static void Anim_RapidHorizontalHops(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] > 2048)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->callback = WaitAnimEnd;
sprite->data[6] = 0;
}
else
@@ -3613,29 +3577,29 @@ static void pokemonanimfunc_43(struct Sprite *sprite)
switch (caseVar)
{
case 0:
- sprite->pos2.x = -(sprite->data[2] % 512 * 16) / 512;
+ sprite->x2 = -(sprite->data[2] % 512 * 16) / 512;
break;
case 1:
- sprite->pos2.x = (sprite->data[2] % 512 / 32) - 16;
+ sprite->x2 = (sprite->data[2] % 512 / 32) - 16;
break;
case 2:
- sprite->pos2.x = (sprite->data[2] % 512) / 32;
+ sprite->x2 = (sprite->data[2] % 512) / 32;
break;
case 3:
- sprite->pos2.x = -(sprite->data[2] % 512 * 16) / 512 + 16;
+ sprite->x2 = -(sprite->data[2] % 512 * 16) / 512 + 16;
break;
}
- sprite->pos2.y = -(Sin(sprite->data[2] % 128, 4));
+ sprite->y2 = -(Sin(sprite->data[2] % 128, 4));
sprite->data[2] += 24;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_44(struct Sprite *sprite)
+static void Anim_FourPetal(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] == 0)
{
sprite->data[6] = 0;
@@ -3664,83 +3628,83 @@ static void pokemonanimfunc_44(struct Sprite *sprite)
switch (sprite->data[6])
{
case 1:
- sprite->pos2.x = -(Cos(sprite->data[7], 8));
- sprite->pos2.y = Sin(sprite->data[7], 8) - 8;
+ sprite->x2 = -(Cos(sprite->data[7], 8));
+ sprite->y2 = Sin(sprite->data[7], 8) - 8;
break;
case 2:
- sprite->pos2.x = Sin(sprite->data[7] + 128, 8) + 8;
- sprite->pos2.y = -(Cos(sprite->data[7], 8));
+ sprite->x2 = Sin(sprite->data[7] + 128, 8) + 8;
+ sprite->y2 = -(Cos(sprite->data[7], 8));
break;
case 3:
- sprite->pos2.x = Cos(sprite->data[7], 8);
- sprite->pos2.y = Sin(sprite->data[7] + 128, 8) + 8;
+ sprite->x2 = Cos(sprite->data[7], 8);
+ sprite->y2 = Sin(sprite->data[7] + 128, 8) + 8;
break;
case 0:
case 4:
- sprite->pos2.x = Sin(sprite->data[7], 8) - 8;
- sprite->pos2.y = Cos(sprite->data[7], 8);
+ sprite->x2 = Sin(sprite->data[7], 8) - 8;
+ sprite->y2 = Cos(sprite->data[7], 8);
break;
default:
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
+ sprite->callback = WaitAnimEnd;
break;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_45(struct Sprite *sprite)
+static void Anim_VerticalSquishBounce_Slow(struct Sprite *sprite)
{
sprite->data[0] = 32;
- sub_8180714(sprite);
- sprite->callback = sub_8180714;
+ VerticalSquishBounce(sprite);
+ sprite->callback = VerticalSquishBounce;
}
-static void pokemonanimfunc_46(struct Sprite *sprite)
+static void Anim_HorizontalSlide_Slow(struct Sprite *sprite)
{
sprite->data[0] = 80;
- sub_817F8FC(sprite);
- sprite->callback = sub_817F8FC;
+ HorizontalSlide(sprite);
+ sprite->callback = HorizontalSlide;
}
-static void pokemonanimfunc_47(struct Sprite *sprite)
+static void Anim_VerticalSlide_Slow(struct Sprite *sprite)
{
sprite->data[0] = 80;
- sub_817F978(sprite);
- sprite->callback = sub_817F978;
+ VerticalSlide(sprite);
+ sprite->callback = VerticalSlide;
}
-static void pokemonanimfunc_48(struct Sprite *sprite)
+static void Anim_BounceRotateToSides_Small(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
+ u8 id = sprite->data[0] = AddNewAnim();
- sUnknown_03001240[id].field_6 = 2048;
- sUnknown_03001240[id].field_8 = sprite->data[6];
- sub_8180900(sprite);
- sprite->callback = sub_8180900;
+ sAnims[id].rotation = 2048;
+ sAnims[id].data = sprite->data[6];
+ BounceRotateToSides(sprite);
+ sprite->callback = BounceRotateToSides;
}
-static void pokemonanimfunc_49(struct Sprite *sprite)
+static void Anim_BounceRotateToSides_Slow(struct Sprite *sprite)
{
sprite->data[6] = 1;
- pokemonanimfunc_05(sprite);
+ Anim_BounceRotateToSides(sprite);
}
-static void pokemonanimfunc_4A(struct Sprite *sprite)
+static void Anim_BounceRotateToSides_SmallSlow(struct Sprite *sprite)
{
sprite->data[6] = 1;
- pokemonanimfunc_48(sprite);
+ Anim_BounceRotateToSides_Small(sprite);
}
-static void pokemonanimfunc_4B(struct Sprite *sprite)
+static void Anim_ZigzagSlow(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
sprite->data[0] = 0;
if (sprite->data[0] <= 0)
{
- sub_817FC20(sprite);
+ Zigzag(sprite);
sprite->data[0] = 1;
}
else
@@ -3749,201 +3713,202 @@ static void pokemonanimfunc_4B(struct Sprite *sprite)
}
}
-static void pokemonanimfunc_4C(struct Sprite *sprite)
+static void Anim_HorizontalShake_Slow(struct Sprite *sprite)
{
sprite->data[0] = 30;
sprite->data[7] = 3;
- sub_817FCDC(sprite);
- sprite->callback = sub_817FCDC;
+ HorizontalShake(sprite);
+ sprite->callback = HorizontalShake;
}
-static void pokemonanimfunc_4D(struct Sprite *sprite)
+static void Anim_VertialShake_Slow(struct Sprite *sprite)
{
sprite->data[0] = 30;
- sub_817FD44(sprite);
- sprite->callback = sub_817FD44;
+ VerticalShake(sprite);
+ sprite->callback = VerticalShake;
}
-static void pokemonanimfunc_4E(struct Sprite *sprite)
+static void Anim_Twist_Twice(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
+ u8 id = sprite->data[0] = AddNewAnim();
- sUnknown_03001240[id].field_6 = 1024;
- sUnknown_03001240[id].field_0 = 0;
- sUnknown_03001240[id].field_4 = 2;
- sub_817FE30(sprite);
- sprite->callback = sub_817FE30;
+ sAnims[id].rotation = 1024;
+ sAnims[id].delay = 0;
+ sAnims[id].runs = 2;
+ Twist(sprite);
+ sprite->callback = Twist;
}
-static void pokemonanimfunc_4F(struct Sprite *sprite)
+static void Anim_CircleCounterclockwise_Slow(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
+ u8 id = sprite->data[0] = AddNewAnim();
- sUnknown_03001240[id].field_6 = 512;
- sUnknown_03001240[id].field_8 = 3;
- sUnknown_03001240[id].field_2 = 12;
- sub_817FFF0(sprite);
- sprite->callback = sub_817FFF0;
+ sAnims[id].rotation = 512;
+ sAnims[id].data = 3;
+ sAnims[id].speed = 12;
+ CircleCounterclockwise(sprite);
+ sprite->callback = CircleCounterclockwise;
}
-static void pokemonanimfunc_50(struct Sprite *sprite)
+static void Anim_VerticalShakeTwice_Slow(struct Sprite *sprite)
{
sprite->data[0] = 24;
- sub_818031C(sprite);
- sprite->callback = sub_818031C;
+ VerticalShakeTwice(sprite);
+ sprite->callback = VerticalShakeTwice;
}
-static void pokemonanimfunc_51(struct Sprite *sprite)
+static void Anim_VerticalSlideWobble_Small(struct Sprite *sprite)
{
sprite->data[0] = 5;
- sub_81804F8(sprite);
- sprite->callback = sub_81804F8;
+ VerticalSlideWobble(sprite);
+ sprite->callback = VerticalSlideWobble;
}
-static void pokemonanimfunc_52(struct Sprite *sprite)
+static void Anim_VerticalJumps_Small(struct Sprite *sprite)
{
sprite->data[0] = 3;
- sub_817F9F4(sprite);
- sprite->callback = sub_817F9F4;
+ VerticalJumps(sprite);
+ sprite->callback = VerticalJumps;
}
-static void pokemonanimfunc_53(struct Sprite *sprite)
+static void Anim_Spin(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
+ u8 id = sprite->data[0] = AddNewAnim();
- sUnknown_03001240[id].field_0 = 60;
- sUnknown_03001240[id].field_8 = 30;
- sub_817FF3C(sprite);
- sprite->callback = sub_817FF3C;
+ sAnims[id].delay = 60;
+ sAnims[id].data = 30;
+ Spin(sprite);
+ sprite->callback = Spin;
}
-static void pokemonanimfunc_54(struct Sprite *sprite)
+static void Anim_TumblingFrontFlip_Twice(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
+ u8 id = sprite->data[0] = AddNewAnim();
- sUnknown_03001240[id].field_2 = 1;
- sUnknown_03001240[id].field_4 = 2;
- sub_8181214(sprite);
- sprite->callback = sub_8181214;
+ sAnims[id].speed = 1;
+ sAnims[id].runs = 2;
+ TumblingFrontFlip(sprite);
+ sprite->callback = TumblingFrontFlip;
}
-static void pokemonanimfunc_55(struct Sprite *sprite)
+static void Anim_DeepVerticalSquishBounce_Twice(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
+ u8 id = sprite->data[0] = AddNewAnim();
- sUnknown_03001240[id].field_6 = 4;
- sUnknown_03001240[id].field_4 = 2;
- sub_8181810(sprite);
- sprite->callback = sub_8181810;
+ sAnims[id].rotation = 4;
+ sAnims[id].runs = 2;
+ DeepVerticalSquishBounce(sprite);
+ sprite->callback = DeepVerticalSquishBounce;
}
-static void pokemonanimfunc_56(struct Sprite *sprite)
+static void Anim_HorizontalJumpsVerticalStretch_Twice(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
+ u8 id = sprite->data[0] = AddNewAnim();
- sUnknown_03001240[id].field_8 = 1;
- sUnknown_03001240[id].field_4 = 2;
+ sAnims[id].data = 1;
+ sAnims[id].runs = 2;
HandleStartAffineAnim(sprite);
sprite->data[3] = 0;
- sub_8181ABC(sprite);
- sprite->callback = sub_8181ABC;
+ HorizontalJumpsVerticalStretch_0(sprite);
+ sprite->callback = HorizontalJumpsVerticalStretch_0;
}
-static void pokemonanimfunc_07(struct Sprite *sprite)
+static void Anim_RotateToSides(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
+ u8 id = sprite->data[0] = AddNewAnim();
- sUnknown_03001240[id].field_6 = 2;
- sub_8181CE8(sprite);
- sprite->callback = sub_8181CE8;
+ sAnims[id].rotation = 2;
+ RotateToSides(sprite);
+ sprite->callback = RotateToSides;
}
-static void pokemonanimfunc_08(struct Sprite *sprite)
+static void Anim_RotateToSides_Twice(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
+ u8 id = sprite->data[0] = AddNewAnim();
- sUnknown_03001240[id].field_6 = 4;
- sUnknown_03001240[id].field_4 = 2;
- sub_8181CE8(sprite);
- sprite->callback = sub_8181CE8;
+ sAnims[id].rotation = 4;
+ sAnims[id].runs = 2;
+ RotateToSides(sprite);
+ sprite->callback = RotateToSides;
}
-static void pokemonanimfunc_0B(struct Sprite *sprite)
+static void Anim_SwingConcave(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
+ u8 id = sprite->data[0] = AddNewAnim();
- sUnknown_03001240[id].field_8 = 100;
- sub_81814D4(sprite);
- sprite->callback = sub_81814D4;
+ sAnims[id].data = 100;
+ SwingConcave(sprite);
+ sprite->callback = SwingConcave;
}
-static void pokemonanimfunc_0C(struct Sprite *sprite)
+static void Anim_SwingConcave_Fast(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
+ u8 id = sprite->data[0] = AddNewAnim();
- sUnknown_03001240[id].field_8 = 50;
- sUnknown_03001240[id].field_4 = 2;
- sub_81814D4(sprite);
- sprite->callback = sub_81814D4;
+ sAnims[id].data = 50;
+ sAnims[id].runs = 2;
+ SwingConcave(sprite);
+ sprite->callback = SwingConcave;
}
-static void pokemonanimfunc_0D(struct Sprite *sprite)
+static void Anim_SwingConvex(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
+ u8 id = sprite->data[0] = AddNewAnim();
- sUnknown_03001240[id].field_8 = 100;
- sub_81815D4(sprite);
- sprite->callback = sub_81815D4;
+ sAnims[id].data = 100;
+ SwingConvex(sprite);
+ sprite->callback = SwingConvex;
}
-static void pokemonanimfunc_0E(struct Sprite *sprite)
+static void Anim_SwingConvex_Fast(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
+ u8 id = sprite->data[0] = AddNewAnim();
- sUnknown_03001240[id].field_8 = 50;
- sUnknown_03001240[id].field_4 = 2;
- sub_81815D4(sprite);
- sprite->callback = sub_81815D4;
+ sAnims[id].data = 50;
+ sAnims[id].runs = 2;
+ SwingConvex(sprite);
+ sprite->callback = SwingConvex;
}
-static void sub_8183140(struct Sprite *sprite)
+// Very similar to VerticalShake, used by back animations only
+static void VerticalShakeBack(struct Sprite *sprite)
{
s32 counter = sprite->data[2];
if (counter > 2304)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.y = 0;
+ sprite->callback = WaitAnimEnd;
+ sprite->y2 = 0;
}
else
{
- sprite->pos2.y = Sin((counter + 192) % 256, sprite->data[7]) + sprite->data[7];
+ sprite->y2 = Sin((counter + 192) % 256, sprite->data[7]) + sprite->data[7];
}
sprite->data[2] += sprite->data[0];
}
-static void pokemonanimfunc_57(struct Sprite *sprite)
+static void Anim_VerticalShakeBack(struct Sprite *sprite)
{
sprite->data[0] = 60;
sprite->data[7] = 3;
- sub_8183140(sprite);
- sprite->callback = sub_8183140;
+ VerticalShakeBack(sprite);
+ sprite->callback = VerticalShakeBack;
}
-static void pokemonanimfunc_58(struct Sprite *sprite)
+static void Anim_VerticalShakeBack_Slow(struct Sprite *sprite)
{
sprite->data[0] = 30;
sprite->data[7] = 3;
- sub_8183140(sprite);
- sprite->callback = sub_8183140;
+ VerticalShakeBack(sprite);
+ sprite->callback = VerticalShakeBack;
}
-static void pokemonanimfunc_59(struct Sprite *sprite)
+static void Anim_VerticalShakeHorizontalSlide_Slow(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] > 2048)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->callback = WaitAnimEnd;
sprite->data[6] = 0;
}
else
@@ -3952,39 +3917,39 @@ static void pokemonanimfunc_59(struct Sprite *sprite)
switch (divCase)
{
case 0:
- sprite->pos2.x = (sprite->data[2] % 512) / 32;
+ sprite->x2 = (sprite->data[2] % 512) / 32;
break;
case 2:
- sprite->pos2.x = -(sprite->data[2] % 512 * 16) / 512;
+ sprite->x2 = -(sprite->data[2] % 512 * 16) / 512;
break;
case 1:
- sprite->pos2.x = -(sprite->data[2] % 512 * 16) / 512 + 16;
+ sprite->x2 = -(sprite->data[2] % 512 * 16) / 512 + 16;
break;
case 3:
- sprite->pos2.x = (sprite->data[2] % 512) / 32 - 16;
+ sprite->x2 = (sprite->data[2] % 512) / 32 - 16;
break;
}
- sprite->pos2.y = Sin(sprite->data[2] % 128, 4);
+ sprite->y2 = Sin(sprite->data[2] % 128, 4);
sprite->data[2] += 24;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_81832C8(struct Sprite *sprite)
+static void VerticalStretchBothEnds(struct Sprite *sprite)
{
s16 index1 = 0, index2 = 0;
if (sprite->data[5] > sprite->data[6])
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sprite->data[5] = 0;
HandleSetAffineData(sprite, 256, 256, 0);
if (sprite->data[4] <= 1)
{
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
@@ -4006,7 +3971,7 @@ static void sub_81832C8(struct Sprite *sprite)
index1 = sprite->data[7] & 0xFF;
}
- if (sprite->data[1] == 0)
+ if (!sprite->sDontFlip)
xScale = -256 - Sin(index2, 16);
else
xScale = 256 + Sin(index2, 16);
@@ -4018,7 +3983,7 @@ static void sub_81832C8(struct Sprite *sprite)
}
}
-static void pokemonanimfunc_5A(struct Sprite *sprite)
+static void Anim_VerticalStretchBothEnds_Slow(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4031,10 +3996,10 @@ static void pokemonanimfunc_5A(struct Sprite *sprite)
sprite->data[7] = 0;
}
- sub_81832C8(sprite);
+ VerticalStretchBothEnds(sprite);
}
-static void sub_8183418(struct Sprite *sprite)
+static void HorizontalStretchFar(struct Sprite *sprite)
{
s16 index1 = 0, index2;
@@ -4044,8 +4009,8 @@ static void sub_8183418(struct Sprite *sprite)
HandleSetAffineData(sprite, 256, 256, 0);
if (sprite->data[4] <= 1)
{
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
@@ -4069,7 +4034,7 @@ static void sub_8183418(struct Sprite *sprite)
amplitude = sprite->data[3];
- if (sprite->data[1] == 0)
+ if (!sprite->sDontFlip)
xScale = -256 + Sin(index2, amplitude) + Sin(index1, amplitude / 5 * 2);
else
xScale = 256 - Sin(index2, amplitude) - Sin(index1, amplitude / 5 * 2);
@@ -4079,7 +4044,7 @@ static void sub_8183418(struct Sprite *sprite)
}
}
-static void pokemonanimfunc_5B(struct Sprite *sprite)
+static void Anim_HorizontalStretchFar_Slow(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4092,34 +4057,33 @@ static void pokemonanimfunc_5B(struct Sprite *sprite)
sprite->data[7] = 0;
}
- sub_8183418(sprite);
+ HorizontalStretchFar(sprite);
}
-static void sub_8183574(struct Sprite *sprite)
+static void VerticalShakeLowTwice(struct Sprite *sprite)
{
u8 var6, var7;
u8 var8 = sprite->data[2];
u8 var9 = sprite->data[6];
- u8 var5 = sUnknown_0860AA80[sprite->data[5]][0];
- u8 var2 = var5;
- if (var5 != 0xFF)
+ u8 var5 = sVerticalShakeData[sprite->data[5]][0];
+ if (var5 != (u8)-1)
var5 = sprite->data[7];
- else
- var5 = 0xFF; // needed to match
- var6 = sUnknown_0860AA80[sprite->data[5]][1];
+ var6 = sVerticalShakeData[sprite->data[5]][1];
var7 = 0;
- if (var2 != 0xFE)
+ if (sVerticalShakeData[sprite->data[5]][0] != (u8)-2)
var7 = (var6 - var9) * var5 / var6;
+ else
+ var7 = 0;
- if (var5 == 0xFF)
+ if (var5 == (u8)-1)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.y = 0;
+ sprite->callback = WaitAnimEnd;
+ sprite->y2 = 0;
}
else
{
- sprite->pos2.y = Sin((var8 + 192) % 256, var7) + var7;
+ sprite->y2 = Sin((var8 + 192) % 256, var7) + var7;
if (var9 == var6)
{
sprite->data[5]++;
@@ -4133,35 +4097,36 @@ static void sub_8183574(struct Sprite *sprite)
}
}
-static void pokemonanimfunc_5C(struct Sprite *sprite)
+// Very similar in appearance to Anim_VerticalShakeTwice (especially the fast variant), but deeper
+static void Anim_VerticalShakeLowTwice(struct Sprite *sprite)
{
sprite->data[0] = 40;
sprite->data[7] = 6;
- sub_8183574(sprite);
- sprite->callback = sub_8183574;
+ VerticalShakeLowTwice(sprite);
+ sprite->callback = VerticalShakeLowTwice;
}
-static void pokemonanimfunc_5D(struct Sprite *sprite)
+static void Anim_HorizontalShake_Fast(struct Sprite *sprite)
{
sprite->data[0] = 70;
sprite->data[7] = 6;
- sub_817FCDC(sprite);
- sprite->callback = sub_817FCDC;
+ HorizontalShake(sprite);
+ sprite->callback = HorizontalShake;
}
-static void pokemonanimfunc_5E(struct Sprite *sprite)
+static void Anim_HorizontalSlide_Fast(struct Sprite *sprite)
{
sprite->data[0] = 20;
- sub_817F8FC(sprite);
- sprite->callback = sub_817F8FC;
+ HorizontalSlide(sprite);
+ sprite->callback = HorizontalSlide;
}
-static void pokemonanimfunc_5F(struct Sprite *sprite)
+static void Anim_HorizontalVibrate_Fast(struct Sprite *sprite)
{
if (sprite->data[2] > 40)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.x = 0;
+ sprite->callback = WaitAnimEnd;
+ sprite->x2 = 0;
}
else
{
@@ -4171,18 +4136,18 @@ static void pokemonanimfunc_5F(struct Sprite *sprite)
else
sign = -1;
- sprite->pos2.x = Sin((sprite->data[2] * 128 / 40) % 256, 9) * sign;
+ sprite->x2 = Sin((sprite->data[2] * 128 / 40) % 256, 9) * sign;
}
sprite->data[2]++;
}
-static void pokemonanimfunc_60(struct Sprite *sprite)
+static void Anim_HorizontalVibrate_Fastest(struct Sprite *sprite)
{
if (sprite->data[2] > 40)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.x = 0;
+ sprite->callback = WaitAnimEnd;
+ sprite->x2 = 0;
}
else
{
@@ -4192,59 +4157,59 @@ static void pokemonanimfunc_60(struct Sprite *sprite)
else
sign = -1;
- sprite->pos2.x = Sin((sprite->data[2] * 128 / 40) % 256, 12) * sign;
+ sprite->x2 = Sin((sprite->data[2] * 128 / 40) % 256, 12) * sign;
}
sprite->data[2]++;
}
-static void pokemonanimfunc_61(struct Sprite *sprite)
+static void Anim_VerticalShakeBack_Fast(struct Sprite *sprite)
{
sprite->data[0] = 70;
sprite->data[7] = 6;
- sub_8183140(sprite);
- sprite->callback = sub_8183140;
+ VerticalShakeBack(sprite);
+ sprite->callback = VerticalShakeBack;
}
-static void pokemonanimfunc_62(struct Sprite *sprite)
+static void Anim_VerticalShakeLowTwice_Slow(struct Sprite *sprite)
{
sprite->data[0] = 24;
sprite->data[7] = 6;
- sub_8183574(sprite);
- sprite->callback = sub_8183574;
+ VerticalShakeLowTwice(sprite);
+ sprite->callback = VerticalShakeLowTwice;
}
-static void pokemonanimfunc_63(struct Sprite *sprite)
+static void Anim_VerticalShakeLowTwice_Fast(struct Sprite *sprite)
{
sprite->data[0] = 56;
sprite->data[7] = 9;
- sub_8183574(sprite);
- sprite->callback = sub_8183574;
+ VerticalShakeLowTwice(sprite);
+ sprite->callback = VerticalShakeLowTwice;
}
-static void pokemonanimfunc_64(struct Sprite *sprite)
+static void Anim_CircleCounterclockwise_Long(struct Sprite *sprite)
{
- u8 id = sprite->data[0] = sub_817F758();
+ u8 id = sprite->data[0] = AddNewAnim();
- sUnknown_03001240[id].field_6 = 1024;
- sUnknown_03001240[id].field_8 = 6;
- sUnknown_03001240[id].field_2 = 24;
- sub_817FFF0(sprite);
- sprite->callback = sub_817FFF0;
+ sAnims[id].rotation = 1024;
+ sAnims[id].data = 6;
+ sAnims[id].speed = 24;
+ CircleCounterclockwise(sprite);
+ sprite->callback = CircleCounterclockwise;
}
-static void sub_81837DC(struct Sprite *sprite)
+static void GrowStutter(struct Sprite *sprite)
{
s16 index1 = 0, index2 = 0;
if (sprite->data[5] > sprite->data[6])
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sprite->data[5] = 0;
HandleSetAffineData(sprite, 256, 256, 0);
if (sprite->data[4] <= 1)
{
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
@@ -4268,7 +4233,7 @@ static void sub_81837DC(struct Sprite *sprite)
amplitude = sprite->data[3];
- if (sprite->data[1] == 0)
+ if (!sprite->sDontFlip)
xScale = Sin(index2, amplitude) + (Sin(index1, amplitude / 5 * 2) - 256);
else
xScale = 256 - Sin(index1, amplitude / 5 * 2) - Sin(index2, amplitude);
@@ -4279,7 +4244,7 @@ static void sub_81837DC(struct Sprite *sprite)
}
}
-static void pokemonanimfunc_65(struct Sprite *sprite)
+static void Anim_GrowStutter_Slow(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4292,15 +4257,15 @@ static void pokemonanimfunc_65(struct Sprite *sprite)
sprite->data[7] = 0;
}
- sub_81837DC(sprite);
+ GrowStutter(sprite);
}
-static void pokemonanimfunc_66(struct Sprite *sprite)
+static void Anim_VerticalShakeHorizontalSlide(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] > 2048)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->callback = WaitAnimEnd;
sprite->data[6] = 0;
}
else
@@ -4309,32 +4274,32 @@ static void pokemonanimfunc_66(struct Sprite *sprite)
switch (divCase)
{
case 0:
- sprite->pos2.x = (sprite->data[2] % 512) / 32;
+ sprite->x2 = (sprite->data[2] % 512) / 32;
break;
case 2:
- sprite->pos2.x = -(sprite->data[2] % 512 * 16) / 512;
+ sprite->x2 = -(sprite->data[2] % 512 * 16) / 512;
break;
case 1:
- sprite->pos2.x = -(sprite->data[2] % 512 * 16) / 512 + 16;
+ sprite->x2 = -(sprite->data[2] % 512 * 16) / 512 + 16;
break;
case 3:
- sprite->pos2.x = (sprite->data[2] % 512) / 32 - 16;
+ sprite->x2 = (sprite->data[2] % 512) / 32 - 16;
break;
}
- sprite->pos2.y = Sin(sprite->data[2] % 128, 4);
+ sprite->y2 = Sin(sprite->data[2] % 128, 4);
sprite->data[2] += 48;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_67(struct Sprite *sprite)
+static void Anim_VerticalShakeHorizontalSlide_Fast(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] > 2048)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->callback = WaitAnimEnd;
sprite->data[6] = 0;
}
else
@@ -4343,27 +4308,27 @@ static void pokemonanimfunc_67(struct Sprite *sprite)
switch (divCase)
{
case 0:
- sprite->pos2.x = (sprite->data[2] % 512) / 32;
+ sprite->x2 = (sprite->data[2] % 512) / 32;
break;
case 2:
- sprite->pos2.x = -(sprite->data[2] % 512 * 16) / 512;
+ sprite->x2 = -(sprite->data[2] % 512 * 16) / 512;
break;
case 1:
- sprite->pos2.x = -(sprite->data[2] % 512 * 16) / 512 + 16;
+ sprite->x2 = -(sprite->data[2] % 512 * 16) / 512 + 16;
break;
case 3:
- sprite->pos2.x = (sprite->data[2] % 512) / 32 - 16;
+ sprite->x2 = (sprite->data[2] % 512) / 32 - 16;
break;
}
- sprite->pos2.y = Sin(sprite->data[2] % 96, 4);
+ sprite->y2 = Sin(sprite->data[2] % 96, 4);
sprite->data[2] += 64;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static const s8 sUnknown_0860ADBE[][3] =
+static const s8 sTriangleDownData[][3] =
{
// x y timer
{1, 1, 12},
@@ -4372,67 +4337,67 @@ static const s8 sUnknown_0860ADBE[][3] =
{0, 0, 0}
};
-static void sub_8183B4C(struct Sprite *sprite)
+static void TriangleDown(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] == 0)
sprite->data[3] = 0;
- if (sUnknown_0860ADBE[sprite->data[3]][2] / sprite->data[5] == sprite->data[2])
+ if (sTriangleDownData[sprite->data[3]][2] / sprite->data[5] == sprite->data[2])
{
sprite->data[3]++;
sprite->data[2] = 0;
}
- if (sUnknown_0860ADBE[sprite->data[3]][2] / sprite->data[5] == 0)
+ if (sTriangleDownData[sprite->data[3]][2] / sprite->data[5] == 0)
{
if (--sprite->data[6] == 0)
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->callback = WaitAnimEnd;
else
sprite->data[2] = 0;
}
else
{
s32 amplitude = sprite->data[5];
- sprite->pos2.x += (sUnknown_0860ADBE[sprite->data[3]][0] * amplitude);
- sprite->pos2.y += (sUnknown_0860ADBE[sprite->data[3]][1] * sprite->data[5]); // what's the point of the var if you're not reusing it?
+ sprite->x2 += (sTriangleDownData[sprite->data[3]][0] * amplitude);
+ sprite->y2 += (sTriangleDownData[sprite->data[3]][1] * sprite->data[5]); // Not using amplitude here. No reason for this.
sprite->data[2]++;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
}
-static void pokemonanimfunc_68(struct Sprite *sprite)
+static void Anim_TriangleDown_Slow(struct Sprite *sprite)
{
sprite->data[5] = 1;
sprite->data[6] = 1;
- sub_8183B4C(sprite);
- sprite->callback = sub_8183B4C;
+ TriangleDown(sprite);
+ sprite->callback = TriangleDown;
}
-static void pokemonanimfunc_69(struct Sprite *sprite)
+static void Anim_TriangleDown(struct Sprite *sprite)
{
sprite->data[5] = 2;
sprite->data[6] = 1;
- sub_8183B4C(sprite);
- sprite->callback = sub_8183B4C;
+ TriangleDown(sprite);
+ sprite->callback = TriangleDown;
}
-static void pokemonanimfunc_6A(struct Sprite *sprite)
+static void Anim_TriangleDown_Fast(struct Sprite *sprite)
{
sprite->data[5] = 2;
sprite->data[6] = 2;
- sub_8183B4C(sprite);
- sprite->callback = sub_8183B4C;
+ TriangleDown(sprite);
+ sprite->callback = TriangleDown;
}
-static void sub_8183C6C(struct Sprite *sprite)
+static void Grow(struct Sprite *sprite)
{
if (sprite->data[7] > 255)
{
if (sprite->data[5] <= 1)
{
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
HandleSetAffineData(sprite, 256, 256, 0);
}
else
@@ -4454,9 +4419,9 @@ static void sub_8183C6C(struct Sprite *sprite)
}
}
-static void pokemonanimfunc_6B(struct Sprite *sprite)
+static void Anim_Grow(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] == 0)
{
HandleStartAffineAnim(sprite);
@@ -4466,13 +4431,13 @@ static void pokemonanimfunc_6B(struct Sprite *sprite)
sprite->data[5] = 1;
}
- sub_8183C6C(sprite);
- sub_817F70C(sprite);
+ Grow(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_6C(struct Sprite *sprite)
+static void Anim_Grow_Twice(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[2] == 0)
{
HandleStartAffineAnim(sprite);
@@ -4482,11 +4447,11 @@ static void pokemonanimfunc_6C(struct Sprite *sprite)
sprite->data[5] = 2;
}
- sub_8183C6C(sprite);
- sub_817F70C(sprite);
+ Grow(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_6D(struct Sprite *sprite)
+static void Anim_HorizontalSpring_Fast(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4498,10 +4463,10 @@ static void pokemonanimfunc_6D(struct Sprite *sprite)
sprite->data[4] = 16;
}
- sub_8182764(sprite);
+ HorizontalSpring(sprite);
}
-static void pokemonanimfunc_6E(struct Sprite *sprite)
+static void Anim_HorizontalSpring_Slow(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4513,10 +4478,10 @@ static void pokemonanimfunc_6E(struct Sprite *sprite)
sprite->data[4] = 16;
}
- sub_8182764(sprite);
+ HorizontalSpring(sprite);
}
-static void pokemonanimfunc_6F(struct Sprite *sprite)
+static void Anim_HorizontalRepeatedSpring_Fast(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4528,10 +4493,10 @@ static void pokemonanimfunc_6F(struct Sprite *sprite)
sprite->data[4] = 16;
}
- sub_8182830(sprite);
+ HorizontalRepeatedSpring(sprite);
}
-static void pokemonanimfunc_70(struct Sprite *sprite)
+static void Anim_HorizontalRepeatedSpring(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4543,10 +4508,10 @@ static void pokemonanimfunc_70(struct Sprite *sprite)
sprite->data[4] = 8;
}
- sub_8182830(sprite);
+ HorizontalRepeatedSpring(sprite);
}
-static void pokemonanimfunc_71(struct Sprite *sprite)
+static void Anim_ShrinkGrow_Fast(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4555,10 +4520,10 @@ static void pokemonanimfunc_71(struct Sprite *sprite)
sprite->data[6] = 8;
}
- sub_8180828(sprite);
+ ShrinkGrow(sprite);
}
-static void pokemonanimfunc_72(struct Sprite *sprite)
+static void Anim_ShrinkGrow_Slow(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4567,10 +4532,10 @@ static void pokemonanimfunc_72(struct Sprite *sprite)
sprite->data[6] = 4;
}
- sub_8180828(sprite);
+ ShrinkGrow(sprite);
}
-static void pokemonanimfunc_73(struct Sprite *sprite)
+static void Anim_VerticalStretchBothEnds(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4582,10 +4547,10 @@ static void pokemonanimfunc_73(struct Sprite *sprite)
sprite->data[7] = 0;
}
- sub_81832C8(sprite);
+ VerticalStretchBothEnds(sprite);
}
-static void pokemonanimfunc_74(struct Sprite *sprite)
+static void Anim_VerticalStretchBothEnds_Twice(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4597,10 +4562,10 @@ static void pokemonanimfunc_74(struct Sprite *sprite)
sprite->data[7] = 0;
}
- sub_81832C8(sprite);
+ VerticalStretchBothEnds(sprite);
}
-static void pokemonanimfunc_75(struct Sprite *sprite)
+static void Anim_HorizontalStretchFar_Twice(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4613,10 +4578,10 @@ static void pokemonanimfunc_75(struct Sprite *sprite)
sprite->data[7] = 0;
}
- sub_8183418(sprite);
+ HorizontalStretchFar(sprite);
}
-static void pokemonanimfunc_76(struct Sprite *sprite)
+static void Anim_HorizontalStretchFar(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4629,10 +4594,10 @@ static void pokemonanimfunc_76(struct Sprite *sprite)
sprite->data[7] = 0;
}
- sub_8183418(sprite);
+ HorizontalStretchFar(sprite);
}
-static void pokemonanimfunc_77(struct Sprite *sprite)
+static void Anim_GrowStutter_Twice(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4645,10 +4610,10 @@ static void pokemonanimfunc_77(struct Sprite *sprite)
sprite->data[7] = 0;
}
- sub_81837DC(sprite);
+ GrowStutter(sprite);
}
-static void pokemonanimfunc_78(struct Sprite *sprite)
+static void Anim_GrowStutter(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4661,18 +4626,18 @@ static void pokemonanimfunc_78(struct Sprite *sprite)
sprite->data[7] = 0;
}
- sub_81837DC(sprite);
+ GrowStutter(sprite);
}
-static void sub_8183FA8(struct Sprite *sprite)
+static void ConcaveArc(struct Sprite *sprite)
{
if (sprite->data[7] > 255)
{
if (sprite->data[6] <= 1)
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->callback = WaitAnimEnd;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
}
else
{
@@ -4682,17 +4647,17 @@ static void sub_8183FA8(struct Sprite *sprite)
}
else
{
- sprite->pos2.x = -(Sin(sprite->data[7], sprite->data[5]));
- sprite->pos2.y = Sin((sprite->data[7] + 192) % 256, sprite->data[4]);
- if (sprite->pos2.y > 0)
- sprite->pos2.y *= -1;
+ sprite->x2 = -(Sin(sprite->data[7], sprite->data[5]));
+ sprite->y2 = Sin((sprite->data[7] + 192) % 256, sprite->data[4]);
+ if (sprite->y2 > 0)
+ sprite->y2 *= -1;
- sprite->pos2.y += sprite->data[4];
+ sprite->y2 += sprite->data[4];
sprite->data[7] += sprite->data[3];
}
}
-static void pokemonanimfunc_79(struct Sprite *sprite)
+static void Anim_ConcaveArcLarge_Slow(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4704,10 +4669,10 @@ static void pokemonanimfunc_79(struct Sprite *sprite)
sprite->data[3] = 4;
}
- sub_8183FA8(sprite);
+ ConcaveArc(sprite);
}
-static void pokemonanimfunc_7A(struct Sprite *sprite)
+static void Anim_ConcaveArcLarge(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4719,10 +4684,10 @@ static void pokemonanimfunc_7A(struct Sprite *sprite)
sprite->data[3] = 6;
}
- sub_8183FA8(sprite);
+ ConcaveArc(sprite);
}
-static void pokemonanimfunc_7B(struct Sprite *sprite)
+static void Anim_ConcaveArcLarge_Twice(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4734,16 +4699,16 @@ static void pokemonanimfunc_7B(struct Sprite *sprite)
sprite->data[3] = 8;
}
- sub_8183FA8(sprite);
+ ConcaveArc(sprite);
}
-static void sub_81840C4(struct Sprite *sprite)
+static void ConvexDoubleArc(struct Sprite *sprite)
{
if (sprite->data[7] > 256)
{
if (sprite->data[6] <= sprite->data[4])
{
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->callback = WaitAnimEnd;
}
else
{
@@ -4751,8 +4716,8 @@ static void sub_81840C4(struct Sprite *sprite)
sprite->data[7] = 0;
}
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
}
else
{
@@ -4763,27 +4728,27 @@ static void sub_81840C4(struct Sprite *sprite)
if (sprite->data[7] > 256)
sprite->data[7] = 256;
- sprite->pos2.y = -(Sin(sprite->data[7] % 256, 8));
+ sprite->y2 = -(Sin(sprite->data[7] % 256, 8));
}
else if (sprite->data[7] > 95)
{
- sprite->pos2.y = Sin(96, 6) - Sin((sprite->data[7] - 96) * 2, 4);
+ sprite->y2 = Sin(96, 6) - Sin((sprite->data[7] - 96) * 2, 4);
}
else
{
- sprite->pos2.y = Sin(sprite->data[7], 6);
+ sprite->y2 = Sin(sprite->data[7], 6);
}
posX = -(Sin(sprite->data[7] / 2, sprite->data[5]));
if (sprite->data[4] % 2 == 0)
posX *= -1;
- sprite->pos2.x = posX;
+ sprite->x2 = posX;
sprite->data[7] += sprite->data[3];
}
}
-static void pokemonanimfunc_7C(struct Sprite *sprite)
+static void Anim_ConvexDoubleArc_Slow(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4795,10 +4760,10 @@ static void pokemonanimfunc_7C(struct Sprite *sprite)
sprite->data[3] = 4;
}
- sub_81840C4(sprite);
+ ConvexDoubleArc(sprite);
}
-static void pokemonanimfunc_7D(struct Sprite *sprite)
+static void Anim_ConvexDoubleArc(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4810,10 +4775,10 @@ static void pokemonanimfunc_7D(struct Sprite *sprite)
sprite->data[3] = 6;
}
- sub_81840C4(sprite);
+ ConvexDoubleArc(sprite);
}
-static void pokemonanimfunc_7E(struct Sprite *sprite)
+static void Anim_ConvexDoubleArc_Twice(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4825,10 +4790,10 @@ static void pokemonanimfunc_7E(struct Sprite *sprite)
sprite->data[3] = 8;
}
- sub_81840C4(sprite);
+ ConvexDoubleArc(sprite);
}
-static void pokemonanimfunc_7F(struct Sprite *sprite)
+static void Anim_ConcaveArcSmall_Slow(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4840,10 +4805,10 @@ static void pokemonanimfunc_7F(struct Sprite *sprite)
sprite->data[3] = 4;
}
- sub_8183FA8(sprite);
+ ConcaveArc(sprite);
}
-static void pokemonanimfunc_80(struct Sprite *sprite)
+static void Anim_ConcaveArcSmall(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4855,10 +4820,10 @@ static void pokemonanimfunc_80(struct Sprite *sprite)
sprite->data[3] = 6;
}
- sub_8183FA8(sprite);
+ ConcaveArc(sprite);
}
-static void pokemonanimfunc_81(struct Sprite *sprite)
+static void Anim_ConcaveArcSmall_Twice(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4870,18 +4835,18 @@ static void pokemonanimfunc_81(struct Sprite *sprite)
sprite->data[3] = 8;
}
- sub_8183FA8(sprite);
+ ConcaveArc(sprite);
}
-static void sub_8184290(struct Sprite *sprite)
+static void SetHorizontalDip(struct Sprite *sprite)
{
u16 index = Sin((sprite->data[2] * 128) / sprite->data[7], sprite->data[5]);
sprite->data[6] = -(index << 8);
- sub_817F3F0(sprite, index, sprite->data[4], 0);
+ SetPosForRotation(sprite, index, sprite->data[4], 0);
HandleSetAffineData(sprite, 256, 256, sprite->data[6]);
}
-static void pokemonanimfunc_82(struct Sprite *sprite)
+static void Anim_HorizontalDip(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4896,13 +4861,13 @@ static void pokemonanimfunc_82(struct Sprite *sprite)
if (sprite->data[2] > sprite->data[7])
{
HandleSetAffineData(sprite, 256, 256, 0);
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0]++;
if (sprite->data[3] <= sprite->data[0])
{
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
return;
}
else
@@ -4912,13 +4877,13 @@ static void pokemonanimfunc_82(struct Sprite *sprite)
}
else
{
- sub_8184290(sprite);
+ SetHorizontalDip(sprite);
}
sprite->data[2]++;
}
-static void pokemonanimfunc_83(struct Sprite *sprite)
+static void Anim_HorizontalDip_Fast(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4933,13 +4898,13 @@ static void pokemonanimfunc_83(struct Sprite *sprite)
if (sprite->data[2] > sprite->data[7])
{
HandleSetAffineData(sprite, 256, 256, 0);
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0]++;
if (sprite->data[3] <= sprite->data[0])
{
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
return;
}
else
@@ -4949,13 +4914,13 @@ static void pokemonanimfunc_83(struct Sprite *sprite)
}
else
{
- sub_8184290(sprite);
+ SetHorizontalDip(sprite);
}
sprite->data[2]++;
}
-static void pokemonanimfunc_84(struct Sprite *sprite)
+static void Anim_HorizontalDip_Twice(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -4970,13 +4935,13 @@ static void pokemonanimfunc_84(struct Sprite *sprite)
if (sprite->data[2] > sprite->data[7])
{
HandleSetAffineData(sprite, 256, 256, 0);
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0]++;
if (sprite->data[3] <= sprite->data[0])
{
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
return;
}
else
@@ -4986,20 +4951,20 @@ static void pokemonanimfunc_84(struct Sprite *sprite)
}
else
{
- sub_8184290(sprite);
+ SetHorizontalDip(sprite);
}
sprite->data[2]++;
}
-static void sub_8184468(struct Sprite *sprite)
+static void ShrinkGrowVibrate(struct Sprite *sprite)
{
if (sprite->data[2] > sprite->data[7])
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
HandleSetAffineData(sprite, 256, 256, 0);
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
else
{
@@ -5025,128 +4990,128 @@ static void sub_8184468(struct Sprite *sprite)
posY = posY_signed;
if (posY < 0)
posY += 7;
- sprite->pos2.y = (u32)(posY) >> 3;
+ sprite->y2 = (u32)(posY) >> 3;
HandleSetAffineData(sprite, sprite->data[4], sprite->data[5], 0);
}
sprite->data[2]++;
}
-static void pokemonanimfunc_85(struct Sprite *sprite)
+static void Anim_ShrinkGrowVibrate_Fast(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
HandleStartAffineAnim(sprite);
- sprite->pos2.y += 2;
+ sprite->y2 += 2;
sprite->data[6] = 40;
sprite->data[7] = 80;
}
- sub_8184468(sprite);
+ ShrinkGrowVibrate(sprite);
}
-static void pokemonanimfunc_86(struct Sprite *sprite)
+static void Anim_ShrinkGrowVibrate(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
HandleStartAffineAnim(sprite);
- sprite->pos2.y += 2;
+ sprite->y2 += 2;
sprite->data[6] = 40;
sprite->data[7] = 40;
}
- sub_8184468(sprite);
+ ShrinkGrowVibrate(sprite);
}
-static void pokemonanimfunc_87(struct Sprite *sprite)
+static void Anim_ShrinkGrowVibrate_Slow(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
HandleStartAffineAnim(sprite);
- sprite->pos2.y += 2;
+ sprite->y2 += 2;
sprite->data[6] = 80;
sprite->data[7] = 80;
}
- sub_8184468(sprite);
+ ShrinkGrowVibrate(sprite);
}
-static void sub_8184610(struct Sprite *sprite);
-static void sub_8184640(struct Sprite *sprite);
-static void sub_8184678(struct Sprite *sprite);
-static void sub_81846B8(struct Sprite *sprite);
+static void JoltRight_0(struct Sprite *sprite);
+static void JoltRight_1(struct Sprite *sprite);
+static void JoltRight_2(struct Sprite *sprite);
+static void JoltRight_3(struct Sprite *sprite);
-static void sub_81845D4(struct Sprite *sprite)
+static void JoltRight(struct Sprite *sprite)
{
- sub_817F70C(sprite);
- sprite->pos2.x -= sprite->data[2];
- if (sprite->pos2.x <= -sprite->data[6])
+ TryFlipX(sprite);
+ sprite->x2 -= sprite->data[2];
+ if (sprite->x2 <= -sprite->data[6])
{
- sprite->pos2.x = -sprite->data[6];
+ sprite->x2 = -sprite->data[6];
sprite->data[7] = 2;
- sprite->callback = sub_8184610;
+ sprite->callback = JoltRight_0;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8184610(struct Sprite *sprite)
+static void JoltRight_0(struct Sprite *sprite)
{
- sub_817F70C(sprite);
- sprite->pos2.x += sprite->data[7];
+ TryFlipX(sprite);
+ sprite->x2 += sprite->data[7];
sprite->data[7]++;
- if (sprite->pos2.x >= 0)
- sprite->callback = sub_8184640;
+ if (sprite->x2 >= 0)
+ sprite->callback = JoltRight_1;
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8184640(struct Sprite *sprite)
+static void JoltRight_1(struct Sprite *sprite)
{
- sub_817F70C(sprite);
- sprite->pos2.x += sprite->data[7];
+ TryFlipX(sprite);
+ sprite->x2 += sprite->data[7];
sprite->data[7]++;
- if (sprite->pos2.x > sprite->data[6])
+ if (sprite->x2 > sprite->data[6])
{
- sprite->pos2.x = sprite->data[6];
- sprite->callback = sub_8184678;
+ sprite->x2 = sprite->data[6];
+ sprite->callback = JoltRight_2;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_8184678(struct Sprite *sprite)
+static void JoltRight_2(struct Sprite *sprite)
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[3] >= sprite->data[5])
{
- sprite->callback = sub_81846B8;
+ sprite->callback = JoltRight_3;
}
else
{
- sprite->pos2.x += sprite->data[4];
+ sprite->x2 += sprite->data[4];
sprite->data[4] *= -1;
sprite->data[3]++;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void sub_81846B8(struct Sprite *sprite)
+static void JoltRight_3(struct Sprite *sprite)
{
- sub_817F70C(sprite);
- sprite->pos2.x -= 2;
- if (sprite->pos2.x <= 0)
+ TryFlipX(sprite);
+ sprite->x2 -= 2;
+ if (sprite->x2 <= 0)
{
- sprite->pos2.x = 0;
- sub_817F77C(sprite);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->x2 = 0;
+ ResetSpriteAfterAnim(sprite);
+ sprite->callback = WaitAnimEnd;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
-static void pokemonanimfunc_88(struct Sprite *sprite)
+static void Anim_JoltRight_Fast(struct Sprite *sprite)
{
HandleStartAffineAnim(sprite);
sprite->data[7] = 4;
@@ -5155,10 +5120,10 @@ static void pokemonanimfunc_88(struct Sprite *sprite)
sprite->data[4] = 4;
sprite->data[3] = 0;
sprite->data[2] = 2;
- sprite->callback = sub_81845D4;
+ sprite->callback = JoltRight;
}
-static void pokemonanimfunc_89(struct Sprite *sprite)
+static void Anim_JoltRight(struct Sprite *sprite)
{
HandleStartAffineAnim(sprite);
sprite->data[7] = 2;
@@ -5167,10 +5132,10 @@ static void pokemonanimfunc_89(struct Sprite *sprite)
sprite->data[4] = 2;
sprite->data[3] = 0;
sprite->data[2] = 1;
- sprite->callback = sub_81845D4;
+ sprite->callback = JoltRight;
}
-static void pokemonanimfunc_8A(struct Sprite *sprite)
+static void Anim_JoltRight_Slow(struct Sprite *sprite)
{
HandleStartAffineAnim(sprite);
sprite->data[7] = 0;
@@ -5179,12 +5144,12 @@ static void pokemonanimfunc_8A(struct Sprite *sprite)
sprite->data[4] = 2;
sprite->data[3] = 0;
sprite->data[2] = 1;
- sprite->callback = sub_81845D4;
+ sprite->callback = JoltRight;
}
-static void sub_8184770(struct Sprite *sprite)
+static void SetShakeFlashYellowPos(struct Sprite *sprite)
{
- sprite->pos2.x = sprite->data[1];
+ sprite->x2 = sprite->data[1];
if (sprite->data[0] > 1)
{
sprite->data[1] *= -1;
@@ -5196,97 +5161,91 @@ static void sub_8184770(struct Sprite *sprite)
}
}
-struct YellowBlendStruct
-{
- u8 field_0;
- u8 field_1;
+static const struct YellowFlashData sShakeYellowFlashData_Fast[] =
+{
+ {FALSE, 1},
+ { TRUE, 2},
+ {FALSE, 15},
+ { TRUE, 1},
+ {FALSE, 15},
+ { TRUE, 1},
+ {FALSE, 15},
+ { TRUE, 1},
+ {FALSE, 1},
+ { TRUE, 1},
+ {FALSE, 1},
+ { TRUE, 1},
+ {FALSE, 1},
+ { TRUE, 1},
+ {FALSE, 1},
+ { TRUE, 1},
+ {FALSE, 1},
+ { TRUE, 1},
+ {FALSE, 1},
+ {FALSE, -1}
};
-static const struct YellowBlendStruct sUnknown_0860ADCC[] =
-{
- {0, 1},
- {1, 2},
- {0, 15},
- {1, 1},
- {0, 15},
- {1, 1},
- {0, 15},
- {1, 1},
- {0, 1},
- {1, 1},
- {0, 1},
- {1, 1},
- {0, 1},
- {1, 1},
- {0, 1},
- {1, 1},
- {0, 1},
- {1, 1},
- {0, 1},
- {0, 0xFF}
+static const struct YellowFlashData sShakeYellowFlashData_Normal[] =
+{
+ {FALSE, 5},
+ { TRUE, 1},
+ {FALSE, 15},
+ { TRUE, 4},
+ {FALSE, 2},
+ { TRUE, 2},
+ {FALSE, 2},
+ { TRUE, 2},
+ {FALSE, 2},
+ { TRUE, 2},
+ {FALSE, 2},
+ { TRUE, 2},
+ {FALSE, 2},
+ {FALSE, -1}
};
-static const struct YellowBlendStruct sUnknown_0860AE1C[] =
-{
- {0, 5},
- {1, 1},
- {0, 15},
- {1, 4},
- {0, 2},
- {1, 2},
- {0, 2},
- {1, 2},
- {0, 2},
- {1, 2},
- {0, 2},
- {1, 2},
- {0, 2},
- {0, 0xFF}
+static const struct YellowFlashData sShakeYellowFlashData_Slow[] =
+{
+ {FALSE, 1},
+ { TRUE, 1},
+ {FALSE, 20},
+ { TRUE, 1},
+ {FALSE, 20},
+ { TRUE, 1},
+ {FALSE, 20},
+ { TRUE, 1},
+ {FALSE, 1},
+ {FALSE, -1}
};
-static const struct YellowBlendStruct sUnknown_0860AE54[] =
-{
- {0, 1},
- {1, 1},
- {0, 20},
- {1, 1},
- {0, 20},
- {1, 1},
- {0, 20},
- {1, 1},
- {0, 1},
- {0, 0xFF}
-};
-
-static const struct YellowBlendStruct *const sUnknown_0860AE7C[] =
+static const struct YellowFlashData *const sShakeYellowFlashData[] =
{
- sUnknown_0860ADCC,
- sUnknown_0860AE1C,
- sUnknown_0860AE54
+ sShakeYellowFlashData_Fast,
+ sShakeYellowFlashData_Normal,
+ sShakeYellowFlashData_Slow
};
-static void BackAnimBlendYellow(struct Sprite *sprite)
+static void ShakeFlashYellow(struct Sprite *sprite)
{
- const struct YellowBlendStruct *array = sUnknown_0860AE7C[sprite->data[3]];
- sub_8184770(sprite);
- if (array[sprite->data[6]].field_1 == 0xFF)
+ const struct YellowFlashData *array = sShakeYellowFlashData[sprite->data[3]];
+ SetShakeFlashYellowPos(sprite);
+ if (array[sprite->data[6]].time == (u8)-1)
{
- sprite->pos2.x = 0;
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ sprite->x2 = 0;
+ sprite->callback = WaitAnimEnd;
}
else
{
if (sprite->data[4] == 1)
{
- if (array[sprite->data[6]].field_0 != 0)
- BlendPalette(sprite->data[7], 0x10, 0x10, RGB_YELLOW);
+ if (array[sprite->data[6]].isYellow)
+ BlendPalette(sprite->data[7], 16, 16, RGB_YELLOW);
else
- BlendPalette(sprite->data[7], 0x10, 0, RGB_YELLOW);
+ BlendPalette(sprite->data[7], 16, 0, RGB_YELLOW);
sprite->data[4] = 0;
}
- if (array[sprite->data[6]].field_1 == sprite->data[5])
+ if (array[sprite->data[6]].time == sprite->data[5])
{
sprite->data[4] = 1;
sprite->data[5] = 0;
@@ -5299,7 +5258,7 @@ static void BackAnimBlendYellow(struct Sprite *sprite)
}
}
-static void pokemonanimfunc_8B(struct Sprite *sprite)
+static void Anim_ShakeFlashYellow_Fast(struct Sprite *sprite)
{
if (++sprite->data[2] == 1)
{
@@ -5310,10 +5269,10 @@ static void pokemonanimfunc_8B(struct Sprite *sprite)
sprite->data[3] = 0;
}
- BackAnimBlendYellow(sprite);
+ ShakeFlashYellow(sprite);
}
-static void pokemonanimfunc_8C(struct Sprite *sprite)
+static void Anim_ShakeFlashYellow(struct Sprite *sprite)
{
if (++sprite->data[2] == 1)
{
@@ -5324,10 +5283,10 @@ static void pokemonanimfunc_8C(struct Sprite *sprite)
sprite->data[3] = 1;
}
- BackAnimBlendYellow(sprite);
+ ShakeFlashYellow(sprite);
}
-static void pokemonanimfunc_8D(struct Sprite *sprite)
+static void Anim_ShakeFlashYellow_Slow(struct Sprite *sprite)
{
if (++sprite->data[2] == 1)
{
@@ -5338,52 +5297,62 @@ static void pokemonanimfunc_8D(struct Sprite *sprite)
sprite->data[3] = 2;
}
- BackAnimBlendYellow(sprite);
+ ShakeFlashYellow(sprite);
}
-static void BackAnimBlend(struct Sprite *sprite)
+enum {
+ SHAKEGLOW_RED,
+ SHAKEGLOW_GREEN,
+ SHAKEGLOW_BLUE,
+ SHAKEGLOW_BLACK
+};
+
+static void ShakeGlow_Blend(struct Sprite *sprite)
{
static const u16 sColors[] =
{
- RGB_RED, RGB_GREEN, RGB_BLUE, RGB_BLACK
+ [SHAKEGLOW_RED] = RGB_RED,
+ [SHAKEGLOW_GREEN] = RGB_GREEN,
+ [SHAKEGLOW_BLUE] = RGB_BLUE,
+ [SHAKEGLOW_BLACK] = RGB_BLACK
};
if (sprite->data[2] > 127)
{
- BlendPalette(sprite->data[7], 0x10, 0, RGB_RED);
- sprite->callback = SpriteCB_SetDummyOnAnimEnd;
+ BlendPalette(sprite->data[7], 16, 0, RGB_RED);
+ sprite->callback = WaitAnimEnd;
}
else
{
sprite->data[6] = Sin(sprite->data[2], 12);
- BlendPalette(sprite->data[7], 0x10, sprite->data[6], sColors[sprite->data[1]]);
+ BlendPalette(sprite->data[7], 16, sprite->data[6], sColors[sprite->data[1]]);
}
}
-static void sub_8184934(struct Sprite *sprite)
+static void ShakeGlow_Move(struct Sprite *sprite)
{
if (sprite->data[3] < sprite->data[4])
{
- sub_817F70C(sprite);
+ TryFlipX(sprite);
if (sprite->data[5] > sprite->data[0])
{
if (++sprite->data[3] < sprite->data[4])
sprite->data[5] = 0;
- sprite->pos2.x = 0;
+ sprite->x2 = 0;
}
else
{
s8 sign = 1 - (sprite->data[3] % 2 * 2);
- sprite->pos2.x = sign * Sin((sprite->data[5] * 384 / sprite->data[0]) % 256, 6);
+ sprite->x2 = sign * Sin((sprite->data[5] * 384 / sprite->data[0]) % 256, 6);
sprite->data[5]++;
}
- sub_817F70C(sprite);
+ TryFlipX(sprite);
}
}
-static void pokemonanimfunc_8E(struct Sprite *sprite)
+static void Anim_ShakeGlowRed_Fast(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -5392,19 +5361,19 @@ static void pokemonanimfunc_8E(struct Sprite *sprite)
sprite->data[5] = 0;
sprite->data[4] = 2;
sprite->data[3] = 0;
- sprite->data[1] = 0;
+ sprite->data[1] = SHAKEGLOW_RED;
}
if (sprite->data[2] % 2 == 0)
- BackAnimBlend(sprite);
+ ShakeGlow_Blend(sprite);
if (sprite->data[2] >= (128 - sprite->data[0] * sprite->data[4]) / 2)
- sub_8184934(sprite);
+ ShakeGlow_Move(sprite);
sprite->data[2]++;
}
-static void pokemonanimfunc_8F(struct Sprite *sprite)
+static void Anim_ShakeGlowRed(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -5413,19 +5382,19 @@ static void pokemonanimfunc_8F(struct Sprite *sprite)
sprite->data[5] = 0;
sprite->data[4] = 1;
sprite->data[3] = 0;
- sprite->data[1] = 0;
+ sprite->data[1] = SHAKEGLOW_RED;
}
if (sprite->data[2] % 2 == 0)
- BackAnimBlend(sprite);
+ ShakeGlow_Blend(sprite);
if (sprite->data[2] >= (128 - sprite->data[0] * sprite->data[4]) / 2)
- sub_8184934(sprite);
+ ShakeGlow_Move(sprite);
sprite->data[2]++;
}
-static void pokemonanimfunc_90(struct Sprite *sprite)
+static void Anim_ShakeGlowRed_Slow(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -5434,19 +5403,19 @@ static void pokemonanimfunc_90(struct Sprite *sprite)
sprite->data[5] = 0;
sprite->data[4] = 1;
sprite->data[3] = 0;
- sprite->data[1] = 0;
+ sprite->data[1] = SHAKEGLOW_RED;
}
if (sprite->data[2] % 2 == 0)
- BackAnimBlend(sprite);
+ ShakeGlow_Blend(sprite);
if (sprite->data[2] >= (128 - sprite->data[0] * sprite->data[4]) / 2)
- sub_8184934(sprite);
+ ShakeGlow_Move(sprite);
sprite->data[2]++;
}
-static void pokemonanimfunc_91(struct Sprite *sprite)
+static void Anim_ShakeGlowGreen_Fast(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -5455,19 +5424,19 @@ static void pokemonanimfunc_91(struct Sprite *sprite)
sprite->data[5] = 0;
sprite->data[4] = 2;
sprite->data[3] = 0;
- sprite->data[1] = 1;
+ sprite->data[1] = SHAKEGLOW_GREEN;
}
if (sprite->data[2] % 2 == 0)
- BackAnimBlend(sprite);
+ ShakeGlow_Blend(sprite);
if (sprite->data[2] >= (128 - sprite->data[0] * sprite->data[4]) / 2)
- sub_8184934(sprite);
+ ShakeGlow_Move(sprite);
sprite->data[2]++;
}
-static void pokemonanimfunc_92(struct Sprite *sprite)
+static void Anim_ShakeGlowGreen(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -5476,19 +5445,19 @@ static void pokemonanimfunc_92(struct Sprite *sprite)
sprite->data[5] = 0;
sprite->data[4] = 1;
sprite->data[3] = 0;
- sprite->data[1] = 1;
+ sprite->data[1] = SHAKEGLOW_GREEN;
}
if (sprite->data[2] % 2 == 0)
- BackAnimBlend(sprite);
+ ShakeGlow_Blend(sprite);
if (sprite->data[2] >= (128 - sprite->data[0] * sprite->data[4]) / 2)
- sub_8184934(sprite);
+ ShakeGlow_Move(sprite);
sprite->data[2]++;
}
-static void pokemonanimfunc_93(struct Sprite *sprite)
+static void Anim_ShakeGlowGreen_Slow(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -5497,19 +5466,19 @@ static void pokemonanimfunc_93(struct Sprite *sprite)
sprite->data[5] = 0;
sprite->data[4] = 1;
sprite->data[3] = 0;
- sprite->data[1] = 1;
+ sprite->data[1] = SHAKEGLOW_GREEN;
}
if (sprite->data[2] % 2 == 0)
- BackAnimBlend(sprite);
+ ShakeGlow_Blend(sprite);
if (sprite->data[2] >= (128 - sprite->data[0] * sprite->data[4]) / 2)
- sub_8184934(sprite);
+ ShakeGlow_Move(sprite);
sprite->data[2]++;
}
-static void pokemonanimfunc_94(struct Sprite *sprite)
+static void Anim_ShakeGlowBlue_Fast(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -5518,19 +5487,19 @@ static void pokemonanimfunc_94(struct Sprite *sprite)
sprite->data[5] = 0;
sprite->data[4] = 2;
sprite->data[3] = 0;
- sprite->data[1] = 2;
+ sprite->data[1] = SHAKEGLOW_BLUE;
}
if (sprite->data[2] % 2 == 0)
- BackAnimBlend(sprite);
+ ShakeGlow_Blend(sprite);
if (sprite->data[2] >= (128 - sprite->data[0] * sprite->data[4]) / 2)
- sub_8184934(sprite);
+ ShakeGlow_Move(sprite);
sprite->data[2]++;
}
-static void pokemonanimfunc_95(struct Sprite *sprite)
+static void Anim_ShakeGlowBlue(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -5539,19 +5508,19 @@ static void pokemonanimfunc_95(struct Sprite *sprite)
sprite->data[5] = 0;
sprite->data[4] = 1;
sprite->data[3] = 0;
- sprite->data[1] = 2;
+ sprite->data[1] = SHAKEGLOW_BLUE;
}
if (sprite->data[2] % 2 == 0)
- BackAnimBlend(sprite);
+ ShakeGlow_Blend(sprite);
if (sprite->data[2] >= (128 - sprite->data[0] * sprite->data[4]) / 2)
- sub_8184934(sprite);
+ ShakeGlow_Move(sprite);
sprite->data[2]++;
}
-static void pokemonanimfunc_96(struct Sprite *sprite)
+static void Anim_ShakeGlowBlue_Slow(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
@@ -5560,19 +5529,19 @@ static void pokemonanimfunc_96(struct Sprite *sprite)
sprite->data[5] = 0;
sprite->data[4] = 1;
sprite->data[3] = 0;
- sprite->data[1] = 2;
+ sprite->data[1] = SHAKEGLOW_BLUE;
}
if (sprite->data[2] % 2 == 0)
- BackAnimBlend(sprite);
+ ShakeGlow_Blend(sprite);
if (sprite->data[2] >= (128 - sprite->data[0] * sprite->data[4]) / 2)
- sub_8184934(sprite);
+ ShakeGlow_Move(sprite);
sprite->data[2]++;
}
-static void SpriteCB_SetDummyOnAnimEnd(struct Sprite *sprite)
+static void WaitAnimEnd(struct Sprite *sprite)
{
if (sprite->animEnded)
sprite->callback = SpriteCallbackDummy;
diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c
index 33f08f590..8fe590a0c 100755
--- a/src/pokemon_jump.c
+++ b/src/pokemon_jump.c
@@ -2715,7 +2715,7 @@ static void CreateJumpMonSprite(struct PokemonJumpGfx *jumpGfx, struct PokemonJu
spriteTemplate = sSpriteTemplate_JumpMon;
buffer = Alloc(0x2000);
- unusedBuffer = Alloc(0x800);
+ unusedBuffer = Alloc(MON_PIC_SIZE);
if (multiplayerId == GetPokeJumpMultiplayerId())
subpriority = 3;
else
@@ -2731,7 +2731,7 @@ static void CreateJumpMonSprite(struct PokemonJumpGfx *jumpGfx, struct PokemonJu
spriteSheet.data = buffer;
spriteSheet.tag = multiplayerId;
- spriteSheet.size = 0x800;
+ spriteSheet.size = MON_PIC_SIZE;
LoadSpriteSheet(&spriteSheet);
spritePalette.data = GetMonSpritePalFromSpeciesAndPersonality(monInfo->species, monInfo->otId, monInfo->personality);
@@ -2764,7 +2764,7 @@ static void DoStarAnim(struct PokemonJumpGfx *jumpGfx, int multiplayerId)
ResetPokeJumpSpriteData(jumpGfx->starSprites[multiplayerId]);
jumpGfx->starSprites[multiplayerId]->sOffset = jumpGfx->monSprites[multiplayerId] - gSprites;
jumpGfx->starSprites[multiplayerId]->invisible = FALSE;
- jumpGfx->starSprites[multiplayerId]->pos1.y = 96;
+ jumpGfx->starSprites[multiplayerId]->y = 96;
jumpGfx->starSprites[multiplayerId]->callback = SpriteCB_Star;
StartSpriteAnim(jumpGfx->starSprites[multiplayerId], 1);
}
@@ -2781,11 +2781,11 @@ static void SpriteCB_Star(struct Sprite *sprite)
}
break;
case 1:
- sprite->pos1.y--;
+ sprite->y--;
sprite->sTimer++;
- if (sprite->pos1.y <= 72)
+ if (sprite->y <= 72)
{
- sprite->pos1.y = 72;
+ sprite->y = 72;
sprite->sState++;
}
break;
@@ -2806,7 +2806,7 @@ static void SpriteCB_Star(struct Sprite *sprite)
static void Gfx_StartMonHitShake(struct PokemonJumpGfx *jumpGfx, int multiplayerId)
{
jumpGfx->monSprites[multiplayerId]->callback = SpriteCB_MonHitShake;
- jumpGfx->monSprites[multiplayerId]->pos2.y = 0;
+ jumpGfx->monSprites[multiplayerId]->y2 = 0;
ResetPokeJumpSpriteData(jumpGfx->monSprites[multiplayerId]);
}
@@ -2823,16 +2823,16 @@ static void SpriteCB_MonHitShake(struct Sprite *sprite)
if (++sprite->sTimer > 1)
{
if (++sprite->sNumShakes & 1)
- sprite->pos2.y = 2;
+ sprite->y2 = 2;
else
- sprite->pos2.y = -2;
+ sprite->y2 = -2;
sprite->sTimer = 0;
}
if (sprite->sNumShakes > 12)
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sprite->callback = SpriteCallbackDummy;
}
}
@@ -2919,7 +2919,7 @@ static void SpriteCB_MonIntroBounce(struct Sprite *sprite)
if (sprite->sHopPos > 127)
sprite->sHopPos = 0;
- sprite->pos2.y = -(gSineTable[sprite->sHopPos] >> 3);
+ sprite->y2 = -(gSineTable[sprite->sHopPos] >> 3);
if (sprite->sHopPos == 0)
{
if (++sprite->sNumHops < 2)
@@ -2990,7 +2990,7 @@ static void UpdateVineAnim(struct PokemonJumpGfx *jumpGfx, int vineState)
count = 0;
for (i = 0; i < VINE_SPRITES_PER_SIDE; i++)
{
- jumpGfx->vineSprites[count]->pos1.y = sVineYCoords[i][vineState];
+ jumpGfx->vineSprites[count]->y = sVineYCoords[i][vineState];
jumpGfx->vineSprites[count]->oam.priority = priority;
jumpGfx->vineSprites[count]->oam.paletteNum = palNum;
StartSpriteAnim(jumpGfx->vineSprites[count], vineState);
@@ -2999,7 +2999,7 @@ static void UpdateVineAnim(struct PokemonJumpGfx *jumpGfx, int vineState)
for (i = VINE_SPRITES_PER_SIDE - 1; i >= 0; i--)
{
- jumpGfx->vineSprites[count]->pos1.y = sVineYCoords[i][vineState];
+ jumpGfx->vineSprites[count]->y = sVineYCoords[i][vineState];
jumpGfx->vineSprites[count]->oam.priority = priority;
jumpGfx->vineSprites[count]->oam.paletteNum = palNum;
StartSpriteAnim(jumpGfx->vineSprites[count], vineState);
@@ -3628,7 +3628,7 @@ static void CreatePokeJumpYesNoMenu(u16 left, u16 top, u8 cursorPos)
// "Points" for jump score and "times" for number of jumps in a row
static void PrintScoreSuffixes(void)
{
- u8 color[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY};
+ u8 color[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY};
PutWindowTilemap(WIN_POINTS);
PutWindowTilemap(WIN_TIMES);
@@ -3726,7 +3726,7 @@ static void CreateJumpMonSprites(void)
static void SetMonSpriteY(u32 id, s16 y)
{
- sPokemonJumpGfx->monSprites[id]->pos2.y = y;
+ sPokemonJumpGfx->monSprites[id]->y2 = y;
}
static void UpdateVineSwing(int vineState)
@@ -3868,7 +3868,7 @@ static void PrintPokeJumpPlayerNames(bool32 highlightSelf)
if (!highlightSelf)
{
for (i = 0; i < playersCount; i++)
- PrintPokeJumpPlayerName(i, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY);
+ PrintPokeJumpPlayerName(i, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY);
}
else
{
@@ -3877,7 +3877,7 @@ static void PrintPokeJumpPlayerNames(bool32 highlightSelf)
for (i = 0; i < playersCount; i++)
{
if (multiplayerId != i)
- PrintPokeJumpPlayerName(i, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY);
+ PrintPokeJumpPlayerName(i, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY);
else
PrintPokeJumpPlayerName(i, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_RED, TEXT_COLOR_LIGHT_RED);
}
diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c
index 4beb9c83f..7c88e5bf1 100644
--- a/src/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
@@ -97,7 +97,7 @@ static void FormatMonSizeRecord(u8 *string, u32 size)
{
#ifdef UNITS_IMPERIAL
//Convert size from centimeters to inches
- size = (double)(size * 10) / (CM_PER_INCH * 10);
+ size = (f64)(size * 10) / (CM_PER_INCH * 10);
#endif
string = ConvertIntToDecimalStringN(string, size / 10, STR_CONV_MODE_LEFT_ALIGN, 8);
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index 3d6dc331c..87180ad1e 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -42,20 +42,304 @@
#include "constants/rgb.h"
#include "constants/songs.h"
-struct WallpaperTable
-{
- const u32 *tiles;
- const u32 *tileMap;
- const u16 *palettes;
+/*
+ NOTE: This file is large. Some general groups of functions have
+ been labeled with commented headers to make navigation easier.
+ Search for "SECTION:" to locate them. These sections are not
+ hard and fast rules, but give a basic idea of where certain
+ types of functions are likely located.
+*/
+
+// PC main menu options
+enum {
+ OPTION_WITHDRAW,
+ OPTION_DEPOSIT,
+ OPTION_MOVE_MONS,
+ OPTION_MOVE_ITEMS,
+ OPTION_EXIT,
+ OPTIONS_COUNT
+};
+
+// IDs for messages to print with PrintMessage
+enum {
+ MSG_EXIT_BOX,
+ MSG_WHAT_YOU_DO,
+ MSG_PICK_A_THEME,
+ MSG_PICK_A_WALLPAPER,
+ MSG_IS_SELECTED,
+ MSG_JUMP_TO_WHICH_BOX,
+ MSG_DEPOSIT_IN_WHICH_BOX,
+ MSG_WAS_DEPOSITED,
+ MSG_BOX_IS_FULL,
+ MSG_RELEASE_POKE,
+ MSG_WAS_RELEASED,
+ MSG_BYE_BYE,
+ MSG_MARK_POKE,
+ MSG_LAST_POKE,
+ MSG_PARTY_FULL,
+ MSG_HOLDING_POKE,
+ MSG_WHICH_ONE_WILL_TAKE,
+ MSG_CANT_RELEASE_EGG,
+ MSG_CONTINUE_BOX,
+ MSG_CAME_BACK,
+ MSG_WORRIED,
+ MSG_SURPRISE,
+ MSG_PLEASE_REMOVE_MAIL,
+ MSG_IS_SELECTED2,
+ MSG_GIVE_TO_MON,
+ MSG_PLACED_IN_BAG,
+ MSG_BAG_FULL,
+ MSG_PUT_IN_BAG,
+ MSG_ITEM_IS_HELD,
+ MSG_CHANGED_TO_ITEM,
+ MSG_CANT_STORE_MAIL,
+};
+
+// IDs for how to resolve variables in the above messages
+enum {
+ MSG_VAR_NONE,
+ MSG_VAR_MON_NAME_1,
+ MSG_VAR_MON_NAME_2, // Unused
+ MSG_VAR_MON_NAME_3, // Unused
+ MSG_VAR_RELEASE_MON_1,
+ MSG_VAR_RELEASE_MON_2, // Unused
+ MSG_VAR_RELEASE_MON_3,
+ MSG_VAR_ITEM_NAME,
+};
+
+// IDs for menu selection items. See SetMenuText, HandleMenuInput, etc
+enum {
+ MENU_CANCEL,
+ MENU_STORE,
+ MENU_WITHDRAW,
+ MENU_MOVE,
+ MENU_SHIFT,
+ MENU_PLACE,
+ MENU_SUMMARY,
+ MENU_RELEASE,
+ MENU_MARK,
+ MENU_JUMP,
+ MENU_WALLPAPER,
+ MENU_NAME,
+ MENU_TAKE,
+ MENU_GIVE,
+ MENU_GIVE_2,
+ MENU_SWITCH,
+ MENU_BAG,
+ MENU_INFO,
+ MENU_SCENERY_1,
+ MENU_SCENERY_2,
+ MENU_SCENERY_3,
+ MENU_ETCETERA,
+ MENU_FRIENDS,
+ MENU_FOREST,
+ MENU_CITY,
+ MENU_DESERT,
+ MENU_SAVANNA,
+ MENU_CRAG,
+ MENU_VOLCANO,
+ MENU_SNOW,
+ MENU_CAVE,
+ MENU_BEACH,
+ MENU_SEAFLOOR,
+ MENU_RIVER,
+ MENU_SKY,
+ MENU_POLKADOT,
+ MENU_POKECENTER,
+ MENU_MACHINE,
+ MENU_SIMPLE,
+};
+#define MENU_WALLPAPER_SETS_START MENU_SCENERY_1
+#define MENU_WALLPAPERS_START MENU_FOREST
+
+// Return IDs for input handlers
+enum {
+ INPUT_NONE,
+ INPUT_MOVE_CURSOR,
+ INPUT_2, // Unused
+ INPUT_3, // Unused
+ INPUT_CLOSE_BOX,
+ INPUT_SHOW_PARTY,
+ INPUT_HIDE_PARTY,
+ INPUT_BOX_OPTIONS,
+ INPUT_IN_MENU,
+ INPUT_SCROLL_RIGHT,
+ INPUT_SCROLL_LEFT,
+ INPUT_DEPOSIT,
+ INPUT_WITHDRAW,
+ INPUT_MOVE_MON,
+ INPUT_SHIFT_MON,
+ INPUT_PLACE_MON,
+ INPUT_TAKE_ITEM,
+ INPUT_GIVE_ITEM,
+ INPUT_SWITCH_ITEMS,
+ INPUT_PRESSED_B,
+ INPUT_MULTIMOVE_START,
+ INPUT_MULTIMOVE_CHANGE_SELECTION,
+ INPUT_MULTIMOVE_SINGLE,
+ INPUT_MULTIMOVE_GRAB_SELECTION,
+ INPUT_MULTIMOVE_UNABLE,
+ INPUT_MULTIMOVE_MOVE_MONS,
+ INPUT_MULTIMOVE_PLACE_MONS,
+};
+
+enum {
+ SCREEN_CHANGE_EXIT_BOX,
+ SCREEN_CHANGE_SUMMARY_SCREEN,
+ SCREEN_CHANGE_NAME_BOX,
+ SCREEN_CHANGE_ITEM_FROM_BAG,
+};
+
+enum {
+ MODE_PARTY,
+ MODE_BOX,
+ MODE_MOVE,
+};
+
+enum {
+ CURSOR_AREA_IN_BOX,
+ CURSOR_AREA_IN_PARTY,
+ CURSOR_AREA_BOX_TITLE,
+ CURSOR_AREA_BUTTONS, // Party Pokemon and Close Box
+};
+#define CURSOR_AREA_IN_HAND CURSOR_AREA_BOX_TITLE // Alt name for cursor area used by Move Items
+
+enum {
+ CURSOR_ANIM_BOUNCE,
+ CURSOR_ANIM_STILL,
+ CURSOR_ANIM_OPEN,
+ CURSOR_ANIM_FIST,
+};
+
+// Special box ids for the choose box menu
+#define BOXID_NONE_CHOSEN 200
+#define BOXID_CANCELED 201
+
+enum {
+ PALTAG_MON_ICON_0 = 56000,
+ PALTAG_MON_ICON_1, // Used implicitly in CreateMonIconSprite
+ PALTAG_MON_ICON_2, // Used implicitly in CreateMonIconSprite
+ PALTAG_3, // Unused
+ PALTAG_4, // Unused
+ PALTAG_5, // Unused
+ PALTAG_DISPLAY_MON,
+ PALTAG_MISC_1,
+ PALTAG_MARKING_COMBO,
+ PALTAG_BOX_TITLE,
+ PALTAG_MISC_2,
+ PALTAG_ITEM_ICON_0,
+ PALTAG_ITEM_ICON_1, // Used implicitly in CreateItemIconSprites
+ PALTAG_ITEM_ICON_2, // Used implicitly in CreateItemIconSprites
+ PALTAG_MARKING_MENU,
+};
+
+enum {
+ GFXTAG_CURSOR,
+ GFXTAG_CURSOR_SHADOW,
+ GFXTAG_DISPLAY_MON,
+ GFXTAG_BOX_TITLE,
+ GFXTAG_BOX_TITLE_ALT,
+ GFXTAG_WAVEFORM,
+ GFXTAG_ARROW,
+ GFXTAG_ITEM_ICON_0,
+ GFXTAG_ITEM_ICON_1, // Used implicitly in CreateItemIconSprites
+ GFXTAG_ITEM_ICON_2, // Used implicitly in CreateItemIconSprites
+ GFXTAG_CHOOSE_BOX_MENU,
+ GFXTAG_CHOOSE_BOX_MENU_SIDES, // Used implicitly in LoadChooseBoxMenuGfx
+ GFXTAG_12, // Unused
+ GFXTAG_MARKING_MENU,
+ GFXTAG_14, // Unused
+ GFXTAG_15, // Unused
+ GFXTAG_MARKING_COMBO,
+ GFXTAG_17, // Unused
+ GFXTAG_MON_ICON,
};
-struct PokemonStorageSystemFunc
+// The maximum number of Pokémon icons that can appear on-screen.
+// By default the limit is 40 (though in practice only 37 can be).
+#define MAX_MON_ICONS (IN_BOX_COUNT + PARTY_SIZE + 1 >= 40 ? IN_BOX_COUNT + PARTY_SIZE + 1 : 40)
+
+// The maximum number of item icons that can appear on-screen while
+// moving held items. 1 in the cursor, and 2 more while switching
+// between 2 Pokémon with held items
+#define MAX_ITEM_ICONS 3
+
+// IDs for the item icons affine anims
+enum {
+ ITEM_ANIM_NONE,
+ ITEM_ANIM_APPEAR,
+ ITEM_ANIM_DISAPPEAR,
+ ITEM_ANIM_PICK_UP,
+ ITEM_ANIM_PUT_DOWN,
+ ITEM_ANIM_PUT_AWAY,
+ ITEM_ANIM_LARGE,
+};
+
+// IDs for the item icon sprite callbacks
+enum {
+ ITEM_CB_WAIT_ANIM,
+ ITEM_CB_TO_HAND,
+ ITEM_CB_TO_MON,
+ ITEM_CB_SWAP_TO_HAND,
+ ITEM_CB_SWAP_TO_MON,
+ ITEM_CB_UNUSED_1,
+ ITEM_CB_UNUSED_2,
+ ITEM_CB_HIDE_PARTY,
+};
+
+enum {
+ RELEASE_ANIM_RELEASE,
+ RELEASE_ANIM_CAME_BACK,
+};
+
+// IDs for InitMonPlaceChange
+enum {
+ CHANGE_GRAB,
+ CHANGE_PLACE,
+ CHANGE_SHIFT,
+};
+
+// Modes for selecting and moving Pokémon in the box.
+// "MULTIPLE" mode allows up to an entire box to be
+// picked up at once by pressing Select then holding
+// down the A button. While holding A down, the player
+// may move the cursor around to select multiple Pokémon.
+// This is MOVE_MODE_MULTIPLE_SELECTING. After releasing A
+// those Pokémon will be picked up and can be moved around
+// as a single unit. This is MOVE_MODE_MULTIPLE_MOVING
+enum {
+ MOVE_MODE_NORMAL,
+ MOVE_MODE_MULTIPLE_SELECTING,
+ MOVE_MODE_MULTIPLE_MOVING,
+};
+
+// IDs for the main functions for moving multiple Pokémon.
+// Given as arguments to MultiMove_SetFunction
+enum {
+ MULTIMOVE_START,
+ MULTIMOVE_CANCEL, // If only 1 Pokémon is grabbed
+ MULTIMOVE_CHANGE_SELECTION,
+ MULTIMOVE_GRAB_SELECTION,
+ MULTIMOVE_MOVE_MONS,
+ MULTIMOVE_PLACE_MONS,
+};
+
+// IDs for TilemapUtil
+enum {
+ TILEMAPID_PKMN_DATA, // The "Pkmn Data" text at the top of the display
+ TILEMAPID_PARTY_MENU,
+ TILEMAPID_CLOSE_BUTTON,
+ TILEMAPID_COUNT
+};
+
+struct Wallpaper
{
- u8 (*func)(void);
- s8 unk4;
+ const u32 *tiles;
+ const u32 *tilemap;
+ const u16 *palettes;
};
-struct StorageAction
+struct StorageMessage
{
const u8 *text;
u8 format;
@@ -67,52 +351,46 @@ struct StorageMenu
int textId;
};
-struct PSS_MenuStringPtrs
+struct UnkUtilData
{
- const u8 *text;
- const u8 *desc;
-};
-
-struct UnkStruct_2000028
-{
- const u8 *unk_00;
- u8 *unk_04;
- u16 unk_08;
- u16 unk_0a;
- u16 newField;
- void (*unk_0c)(struct UnkStruct_2000028 *data);
+ const u8 *src;
+ u8 *dest;
+ u16 size;
+ u16 unk;
+ u16 height;
+ void (*func)(struct UnkUtilData *data);
};
-struct UnkStruct_2000020
+struct UnkUtil
{
- struct UnkStruct_2000028 *unk_00;
- u8 unk_04;
- u8 unk_05;
+ struct UnkUtilData *data;
+ u8 numActive;
+ u8 max;
};
-struct UnkPSSStruct_2002370
+struct ChooseBoxMenu
{
- struct Sprite *unk_0000;
- struct Sprite *unk_0004[4];
- u32 unk_0014[3];
- struct Sprite *unk_0020[2];
- u8 filler_0028[0x214];
- u32 unk_023c;
- u16 unk_0240;
- u16 unk_0242;
+ struct Sprite *menuSprite;
+ struct Sprite *menuSideSprites[4];
+ u32 unused1[3];
+ struct Sprite *arrowSprites[2];
+ u8 unused2[0x214];
+ bool32 loadedPalette;
+ u16 tileTag;
+ u16 paletteTag;
u8 curBox;
- u8 unk_0245;
- u8 unk_0246;
+ u8 unused3;
+ u8 subpriority;
};
-struct UnkStorageStruct
+struct ItemIcon
{
struct Sprite *sprite;
u8 *tiles;
u16 palIndex;
- u8 unk8;
- u8 unk9;
- u8 unk10;
+ u8 area;
+ u8 pos;
+ bool8 active;
};
struct PokemonStorageSystemData
@@ -120,611 +398,491 @@ struct PokemonStorageSystemData
u8 state;
u8 boxOption;
u8 screenChangeType;
- bool8 isReshowingPSS;
+ bool8 isReopening;
u8 taskId;
- struct UnkStruct_2000020 unk_0020;
- struct UnkStruct_2000028 unk_0028[8];
- u16 field_B0[528 / 2];
- u16 field_2C0;
- u16 field_2C2;
- u8 field_2C4; // Unused
- u8 field_2C5;
+ struct UnkUtil unkUtil;
+ struct UnkUtilData unkUtilData[8];
+ u16 partyMenuTilemapBuffer[0x108];
+ u16 partyMenuUnused1; // Never read
+ u16 partyMenuY;
+ u8 partyMenuUnused2; // Unused
+ u8 partyMenuMoveTimer;
u8 showPartyMenuState;
- u8 unk_02C7;
- u8 unk_02C8;
- bool8 unk_02C9;
+ bool8 closeBoxFlashing;
+ u8 closeBoxFlashTimer;
+ bool8 closeBoxFlashState;
s16 newCurrBoxId;
u16 bg2_X;
- s16 wallpaperScrollSpeed;
- u16 field_2D0;
- u8 field_2D2;
- u8 field_2D3; // Written to, but never read.
- u8 field_2D4; // Written to, but never read.
- u16 field_2D6; // Written to, but never read.
- s16 field_2D8; // Written to, but never read.
- u16 field_2DA; // Written to, but never read.
- u16 field_2DC; // Written to, but never read.
- u16 field_2DE; // Written to, but never read.
- u16 field_2E0; // Written to, but never read.
- u8 filler[22];
- u8 field_2F8[1024];
- u8 field_6F8;
- u8 field_6F9; // Written to, but never read.
- u8 field_6FA;
- s8 field_6FB;
- u16 field_6FC[16];
- u16 field_71C;
- u16 field_71E;
- struct Sprite *field_720[2];
- struct Sprite *field_728[2];
- struct Sprite *field_730[2];
- u32 field_738;
- u8 field_73C[80]; // Unused
- u16 field_78C; // Written to, but never read.
+ s16 scrollSpeed;
+ u16 scrollTimer;
+ u8 wallpaperOffset;
+ u8 scrollUnused1; // Never read
+ u8 scrollToBoxIdUnused; // Never read
+ u16 scrollUnused2; // Never read
+ s16 scrollDirectionUnused; // Never read.
+ u16 scrollUnused3; // Never read
+ u16 scrollUnused4; // Never read
+ u16 scrollUnused5; // Never read
+ u16 scrollUnused6; // Never read
+ u8 filler1[22];
+ u8 boxTitleTiles[1024];
+ u8 boxTitleCycleId;
+ u8 wallpaperLoadState; // Written to, but never read.
+ u8 wallpaperLoadBoxId;
+ s8 wallpaperLoadDir;
+ u16 boxTitlePal[16];
+ u16 boxTitlePalOffset;
+ u16 boxTitleAltPalOffset;
+ struct Sprite *curBoxTitleSprites[2];
+ struct Sprite *nextBoxTitleSprites[2];
+ struct Sprite *arrowSprites[2];
+ u32 wallpaperPalBits;
+ u8 filler2[80]; // Unused
+ u16 unkUnused1; // Never read.
s16 wallpaperSetId;
s16 wallpaperId;
- u16 field_792[360];
+ u16 wallpaperTilemap[360];
u8 wallpaperChangeState;
- u8 field_A63;
- u8 boxScrollDestination;
- s8 field_A65;
+ u8 scrollState;
+ u8 scrollToBoxId;
+ s8 scrollDirection;
u8 *wallpaperTiles;
struct Sprite *movingMonSprite;
struct Sprite *partySprites[PARTY_SIZE];
struct Sprite *boxMonsSprites[IN_BOX_COUNT];
- struct Sprite **field_B00;
- struct Sprite **field_B04;
- u16 field_B08[40];
- u16 field_B58[40];
+ struct Sprite **shiftMonSpritePtr;
+ struct Sprite **releaseMonSpritePtr;
+ u16 numIconsPerSpecies[MAX_MON_ICONS];
+ u16 iconSpeciesList[MAX_MON_ICONS];
u16 boxSpecies[IN_BOX_COUNT];
u32 boxPersonalities[IN_BOX_COUNT];
- u8 field_C5C;
- u8 field_C5D;
- u8 field_C5E;
- u16 field_C60;
- s16 field_C62;
- s16 field_C64;
- u16 field_C66;
- u8 field_C68;
- s8 field_C69;
- u8 field_C6A;
- u8 field_C6B; // Written to, but never read.
+ u8 incomingBoxId;
+ u8 shiftTimer;
+ u8 numPartyToCompact;
+ u16 iconScrollDistance;
+ s16 iconScrollPos;
+ s16 iconScrollSpeed;
+ u16 iconScrollNumIncoming;
+ u8 iconScrollCurColumn;
+ s8 iconScrollDirection; // Unnecessary duplicate of scrollDirection
+ u8 iconScrollState;
+ u8 iconScrollToBoxId; // Unnecessary duplicate of scrollToBoxId
struct WindowTemplate menuWindow;
struct StorageMenu menuItems[7];
u8 menuItemsCount;
u8 menuWidth;
- u8 field_CAE; // Written to, but never read.
- u16 field_CB0;
- struct Sprite *field_CB4;
- struct Sprite *field_CB8;
- s32 field_CBC;
- s32 field_CC0;
- u32 field_CC4;
- u32 field_CC8;
- s16 field_CCC;
- s16 field_CCE;
- u16 field_CD0;
- s8 field_CD2;
- s8 field_CD3;
- u8 field_CD4;
- u8 field_CD5;
- u8 field_CD6;
- u8 field_CD7;
- u8 field_CD8[2];
- const u32 *cursorMonPalette;
- u32 cursorMonPersonality;
- u16 cursorMonSpecies;
- u16 cursorMonItem;
- u16 field_CE8;
+ u8 menuUnusedField; // Never read.
+ u16 menuWindowId;
+ struct Sprite *cursorSprite;
+ struct Sprite *cursorShadowSprite;
+ s32 cursorNewX;
+ s32 cursorNewY;
+ u32 cursorSpeedX;
+ u32 cursorSpeedY;
+ s16 cursorTargetX;
+ s16 cursorTargetY;
+ u16 cursorMoveSteps;
+ s8 cursorVerticalWrap;
+ s8 cursorHorizontalWrap;
+ u8 newCursorArea;
+ u8 newCursorPosition;
+ u8 cursorPrevHorizPos;
+ u8 cursorFlipTimer;
+ u8 cursorPalNums[2];
+ const u32 *displayMonPalette;
+ u32 displayMonPersonality;
+ u16 displayMonSpecies;
+ u16 displayMonItemId;
+ u16 displayUnusedVar;
bool8 setMosaic;
- u8 cursorMonMarkings;
- u8 cursorMonLevel;
- bool8 cursorMonIsEgg;
- u8 cursorMonNick[POKEMON_NAME_LENGTH + 1];
- u8 cursorMonNickText[36];
- u8 cursorMonSpeciesName[36];
- u8 cursorMonGenderLvlText[36];
- u8 cursorMonItemName[36];
+ u8 displayMonMarkings;
+ u8 displayMonLevel;
+ bool8 displayMonIsEgg;
+ u8 displayMonName[POKEMON_NAME_LENGTH + 1];
+ u8 displayMonNameText[36];
+ u8 displayMonSpeciesName[36];
+ u8 displayMonGenderLvlText[36];
+ u8 displayMonItemName[36];
bool8 (*monPlaceChangeFunc)(void);
u8 monPlaceChangeState;
- u8 field_D91;
- struct Sprite *field_D94;
- struct Sprite *field_D98[2];
- u16 *field_DA0;
+ u8 shiftBoxId;
+ struct Sprite *markingComboSprite;
+ struct Sprite *waveformSprites[2];
+ u16 *markingComboTilesPtr;
struct MonMarkingsMenu markMenu;
- struct UnkPSSStruct_2002370 field_1E5C;
+ struct ChooseBoxMenu chooseBoxMenu;
struct Pokemon movingMon;
- struct Pokemon field_2108;
- s8 field_216C;
- u8 field_216D;
- s8 field_216E;
- s8 field_216F;
- s8 field_2170;
- s8 field_2171;
- u16 field_2172;
- u16 field_2174;
- u16 field_2176[8];
- u8 field_2186;
- u8 field_2187;
- u8 pokemonSummaryScreenMode;
+ struct Pokemon tempMon;
+ s8 canReleaseMon;
+ bool8 releaseStatusResolved;
+ s8 releaseCheckBoxId;
+ s8 releaseCheckBoxPos;
+ s8 releaseBoxId;
+ s8 releaseBoxPos;
+ u16 releaseCheckState;
+ u16 restrictedReleaseMonMoves;
+ u16 restrictedMoveList[8];
+ u8 summaryMaxPos;
+ u8 summaryStartPos;
+ u8 summaryScreenMode;
union
{
struct Pokemon *mon;
struct BoxPokemon *box;
- } field_218C;
- u8 field_2190[40];
- u8 field_21B8[40];
- u8 field_21E0[POKEMON_NAME_LENGTH + 1];
+ } summaryMon;
+ u8 messageText[40];
+ u8 boxTitleText[40];
+ u8 releaseMonName[POKEMON_NAME_LENGTH + 1];
u8 itemName[20];
u8 inBoxMovingMode;
- u16 field_2200;
- struct UnkStorageStruct field_2204[3];
- u16 movingItem;
- u16 field_2236;
- u8 field_2238; // Unused
- u16 field_223A;
- u16 *field_223C;
- struct Sprite *cursorMonSprite;
- u16 field_2244[0x40];
- u8 field_22C4[0x800];
- u8 field_2AC4[0x1800]; // Unused
- u8 field_42C4[0x800];
- u8 field_4AC4[0x1000];
- u8 field_5AC4[0x800];
+ u16 multiMoveWindowId;
+ struct ItemIcon itemIcons[MAX_ITEM_ICONS];
+ u16 movingItemId;
+ u16 itemInfoWindowOffset;
+ u8 unkUnused2; // Unused
+ u16 displayMonPalOffset;
+ u16 *displayMonTilePtr;
+ struct Sprite *displayMonSprite;
+ u16 displayMonPalBuffer[0x40];
+ u8 tileBuffer[0x800];
+ u8 unusedBuffer[0x1800]; // Unused
+ u8 itemIconBuffer[0x800];
+ u8 wallpaperBgTilemapBuffer[0x1000];
+ u8 displayMenuTilemapBuffer[0x800];
};
-struct UnkSubStruct_2039D84
-{
- s16 field_0;
- s16 field_2;
- u16 field_4;
- u16 field_6;
- s16 field_8;
- s16 field_A;
-};
+static u32 sItemIconGfxBuffer[98];
-struct UnkStruct_2039D84
-{
- struct UnkSubStruct_2039D84 field_0[2];
- const void *field_18;
- const void *field_1C;
- u16 field_20;
- u16 field_22;
- u16 field_24;
- u16 field_26;
- u16 field_28;
- u8 field_2A;
- u8 field_2B;
- u8 field_2C;
- u8 field_2D;
-};
-
-enum
-{
- BOX_OPTION_WITHDRAW,
- BOX_OPTION_DEPOSIT,
- BOX_OPTION_MOVE_MONS,
- BOX_OPTION_MOVE_ITEMS,
- BOX_OPTION_EXIT,
-};
-
-enum
-{
- PC_TEXT_EXIT_BOX,
- PC_TEXT_WHAT_YOU_DO,
- PC_TEXT_PICK_A_THEME,
- PC_TEXT_PICK_A_WALLPAPER,
- PC_TEXT_IS_SELECTED,
- PC_TEXT_JUMP_TO_WHICH_BOX,
- PC_TEXT_DEPOSIT_IN_WHICH_BOX,
- PC_TEXT_WAS_DEPOSITED,
- PC_TEXT_BOX_IS_FULL,
- PC_TEXT_RELEASE_POKE,
- PC_TEXT_WAS_RELEASED,
- PC_TEXT_BYE_BYE,
- PC_TEXT_MARK_POKE,
- PC_TEXT_LAST_POKE,
- PC_TEXT_PARTY_FULL,
- PC_TEXT_HOLDING_POKE,
- PC_TEXT_WHICH_ONE_WILL_TAKE,
- PC_TEXT_CANT_RELEASE_EGG,
- PC_TEXT_CONTINUE_BOX,
- PC_TEXT_CAME_BACK,
- PC_TEXT_WORRIED,
- PC_TEXT_SURPRISE,
- PC_TEXT_PLEASE_REMOVE_MAIL,
- PC_TEXT_IS_SELECTED2,
- PC_TEXT_GIVE_TO_MON,
- PC_TEXT_PLACED_IN_BAG,
- PC_TEXT_BAG_FULL,
- PC_TEXT_PUT_IN_BAG,
- PC_TEXT_ITEM_IS_HELD,
- PC_TEXT_CHANGED_TO_ITEM,
- PC_TEXT_CANT_STORE_MAIL,
-};
-
-enum
-{
- PC_TEXT_FMT_NORMAL,
- PC_TEXT_FMT_MON_NAME_1,
- PC_TEXT_FMT_MON_NAME_2,
- PC_TEXT_FMT_MON_NAME_3,
- PC_TEXT_FMT_MON_NAME_4,
- PC_TEXT_FMT_MON_NAME_5,
- PC_TEXT_FMT_MON_NAME_6,
- PC_TEXT_FMT_ITEM_NAME,
-};
-
-enum
-{
- SCREEN_CHANGE_EXIT_BOX,
- SCREEN_CHANGE_SUMMARY_SCREEN,
- SCREEN_CHANGE_NAME_BOX,
- SCREEN_CHANGE_ITEM_FROM_BAG,
-};
-
-enum
-{
- MODE_PARTY,
- MODE_BOX,
- MODE_MOVE,
-};
-
-enum
-{
- WALLPAPER_FOREST,
- WALLPAPER_CITY,
- WALLPAPER_DESERT,
- WALLPAPER_SAVANNA,
- WALLPAPER_CRAG,
- WALLPAPER_VOLCANO,
- WALLPAPER_SNOW,
- WALLPAPER_CAVE,
- WALLPAPER_BEACH,
- WALLPAPER_SEAFLOOR,
- WALLPAPER_RIVER,
- WALLPAPER_SKY,
- WALLPAPER_POLKADOT,
- WALLPAPER_POKECENTER,
- WALLPAPER_MACHINE,
- WALLPAPER_PLAIN,
- WALLPAPER_FRIENDS, // The one received as a gift from Walda's parents.
- WALLPAPER_COUNT
-};
-
-enum
-{
- FRIENDS_ZIGZAGOON,
- FRIENDS_SCREEN,
- FRIENDS_HORIZONTAL,
- FRIENDS_DIAGONAL,
- FRIENDS_BLOCK,
- FRIENDS_RIBBON,
- FRIENDS_POKECENTER2,
- FRIENDS_FRAME,
- FRIENDS_BLANK,
- FRIENDS_CIRCLES,
- FRIENDS_AZUMARILL,
- FRIENDS_PIKACHU,
- FRIENDS_LEGENDARY,
- FRIENDS_DUSCLOPS,
- FRIENDS_LUDICOLO,
- FRIENDS_WHISCASH,
- FRIENDS_WALLPAPERS_COUNT
-};
-
-enum
-{
- CURSOR_AREA_IN_BOX,
- CURSOR_AREA_IN_PARTY,
- CURSOR_AREA_BOX,
- CURSOR_AREA_BUTTONS, // Party Pokemon and Close Box
-};
-
-#define TAG_PAL_WAVEFORM 0xDACA
-#define TAG_PAL_DAC8 0xDAC8
-#define TAG_PAL_DAC6 0xDAC6
-#define TAG_PAL_DACE 0xDACE
-#define TAG_PAL_DAC7 0xDAC7
-#define TAG_PAL_DAC9 0xDAC9
-#define TAG_PAL_DAC0 0xDAC0
-#define TAG_PAL_DACB 0xDACB
-
-#define TAG_TILE_WAVEFORM 0x5
-#define TAG_TILE_10 0x10
-#define TAG_TILE_2 0x2
-#define TAG_TILE_D 0xD
-#define TAG_TILE_A 0xA
-#define TAG_TILE_3 0x3
-#define TAG_TILE_4 0x4
-#define TAG_TILE_12 0x12
-#define TAG_TILE_7 0x7
-#define TAG_TILE_0 0x0
-#define TAG_TILE_1 0x1
-
-// IWRAM bss
-static u32 gUnknown_03000F78[98];
-
-// EWRAM DATA
EWRAM_DATA static u8 sPreviousBoxOption = 0;
-EWRAM_DATA static struct UnkPSSStruct_2002370 *gUnknown_02039D04 = NULL;
-EWRAM_DATA static struct PokemonStorageSystemData *sPSSData = NULL;
+EWRAM_DATA static struct ChooseBoxMenu *sChooseBoxMenu = NULL;
+EWRAM_DATA static struct PokemonStorageSystemData *sStorage = NULL;
EWRAM_DATA static bool8 sInPartyMenu = 0;
EWRAM_DATA static u8 sCurrentBoxOption = 0;
-EWRAM_DATA static u8 gUnknown_02039D0E = 0;
+EWRAM_DATA static u8 sDepositBoxId = 0;
EWRAM_DATA static u8 sWhichToReshow = 0;
EWRAM_DATA static u8 sLastUsedBox = 0;
EWRAM_DATA static u16 sMovingItemId = 0;
-EWRAM_DATA static struct Pokemon gUnknown_02039D14 = {0};
-EWRAM_DATA static s8 sBoxCursorArea = 0;
-EWRAM_DATA static s8 sBoxCursorPosition = 0;
+EWRAM_DATA static struct Pokemon sSavedMovingMon = {0};
+EWRAM_DATA static s8 sCursorArea = 0;
+EWRAM_DATA static s8 sCursorPosition = 0;
EWRAM_DATA static bool8 sIsMonBeingMoved = 0;
EWRAM_DATA static u8 sMovingMonOrigBoxId = 0;
EWRAM_DATA static u8 sMovingMonOrigBoxPos = 0;
-EWRAM_DATA static bool8 sCanOnlyMove = 0;
+EWRAM_DATA static bool8 sAutoActionOn = 0;
+
+// Main tasks
+static void EnterPokeStorage(u8);
+static void Task_InitPokeStorage(u8);
+static void Task_PlaceMon(u8);
+static void Task_ChangeScreen(u8);
+static void Task_ShowPokeStorage(u8);
+static void Task_OnBPressed(u8);
+static void Task_HandleBoxOptions(u8);
+static void Task_OnSelectedMon(u8);
+static void Task_OnCloseBoxPressed(u8);
+static void Task_HidePartyPokemon(u8);
+static void Task_DepositMenu(u8);
+static void Task_MoveMon(u8);
+static void Task_GiveMovingItemToMon(u8);
+static void Task_SwitchSelectedItem(u8);
+static void Task_TakeItemForMoving(u8);
+static void Task_WithdrawMon(u8);
+static void Task_ShiftMon(u8);
+static void Task_ShowPartyPokemon(u8);
+static void Task_ShowItemInfo(u8);
+static void Task_GiveItemFromBag(u8);
+static void Task_ItemToBag(u8);
+static void Task_TakeItemForMoving(u8);
+static void Task_ShowMarkMenu(u8);
+static void Task_ShowMonSummary(u8);
+static void Task_ReleaseMon(u8);
+static void Task_ReshowPokeStorage(u8);
+static void Task_PokeStorageMain(u8);
+static void Task_JumpBox(u8);
+static void Task_HandleWallpapers(u8);
+static void Task_NameBox(u8);
+static void Task_PrintCantStoreMail(u8);
+static void Task_HandleMovingMonFromParty(u8);
+
+// Input handlers
+static u8 InBoxInput_Normal(void);
+static u8 InBoxInput_MovingMultiple(void);
+static u8 InBoxInput_SelectingMultiple(void);
+static u8 HandleInput(void);
+static void AddBoxOptionsMenu(void);
+static u8 SetSelectionMenuTexts(void);
+static bool8 SetMenuTexts_Mon(void);
+static bool8 SetMenuTexts_Item(void);
+
+// Choose box menu
+static void ChooseBoxMenu_CreateSprites(u8);
+static void ChooseBoxMenu_DestroySprites(void);
+static void ChooseBoxMenu_MoveLeft(void);
+static void ChooseBoxMenu_MoveRight(void);
+static void ChooseBoxMenu_PrintInfo(void);
+static void SpriteCB_ChooseBoxArrow(struct Sprite *);
+
+// Options menus
+static void InitMenu(void);
+static void SetMenuText(u8);
+static s8 GetMenuItemTextId(u8);
+static void AddMenu(void);
+static bool8 IsMenuLoading(void);
+static s16 HandleMenuInput(void);
+static void RemoveMenu(void);
+
+// Pokémon sprites
+static void InitMonIconFields(void);
+static void SpriteCB_BoxMonIconScrollOut(struct Sprite *);
+static void GetIncomingBoxMonData(u8);
+static void CreatePartyMonsSprites(bool8);
+static void CompactPartySprites(void);
+static u8 GetNumPartySpritesCompacting(void);
+static void MovePartySpriteToNextSlot(struct Sprite *, u16);
+static void SpriteCB_MovePartyMonToNextSlot(struct Sprite *);
+static void MovePartySprites(s16);
+static void DestroyAllPartyMonIcons(void);
+static void ReshowReleaseMon(void);
+static bool8 ResetReleaseMonSpritePtr(void);
+static void SetMovingMonPriority(u8);
+static void SpriteCB_HeldMon(struct Sprite *);
+static struct Sprite *CreateMonIconSprite(u16, u32, s16, s16, u8, u8);
+static void DestroyBoxMonIcon(struct Sprite *);
+
+// Pokémon data
+static void MoveMon(void);
+static void PlaceMon(void);
+static void RefreshDisplayMon(void);
+static void SetMovingMonData(u8, u8);
+static void SetPlacedMonData(u8, u8);
+static void PurgeMonOrBoxMon(u8, u8);
+static void SetShiftedMonData(u8, u8);
+static bool8 TryStorePartyMonInBox(u8);
+static void ResetSelectionAfterDeposit(void);
+static void InitReleaseMon(void);
+static bool8 TryHideReleaseMon(void);
+static void InitCanReleaseMonVars(void);
+static void ReleaseMon(void);
+static bool32 AtLeastThreeUsableMons(void);
+static s8 RunCanReleaseMon(void);
+static void SaveMovingMon(void);
+static void LoadSavedMovingMon(void);
+static void InitSummaryScreenData(void);
+static void SetSelectionAfterSummaryScreen(void);
+static void SetMonMarkings(u8);
+static bool8 IsRemovingLastPartyMon(void);
+static bool8 CanShiftMon(void);
+static bool8 IsMonBeingMoved(void);
+static void TryRefreshDisplayMon(void);
+static void ReshowDisplayMon(void);
+static void SetDisplayMonData(void *, u8);
+
+// Moving multiple Pokémon at once
+static void MultiMove_Free(void);
+static bool8 MultiMove_Init(void);
+static bool8 MultiMove_RunFunction(void);
+static bool8 MultiMove_TryMoveGroup(u8);
+static bool8 MultiMove_CanPlaceSelection(void);
+static void MultiMove_SetFunction(u8);
+static u8 MultiMove_GetOrigin(void);
+static bool8 MultiMove_Start(void);
+static bool8 MultiMove_Cancel(void);
+static bool8 MultiMove_ChangeSelection(void);
+static bool8 MultiMove_GrabSelection(void);
+static bool8 MultiMove_MoveMons(void);
+static bool8 MultiMove_PlaceMons(void);
+static void MultiMove_SetIconToBg(u8, u8);
+static void MultiMove_ClearIconFromBg(u8, u8);
+static void MultiMove_ResetBg(void);
+static void MultiMove_UpdateSelectedIcons(void);
+static void MultiMove_InitMove(u16, u16, u16);
+static void MultiMove_GetMonsFromSelection(void);
+static void MultiMove_RemoveMonsFromBox(void);
+static void MultiMove_CreatePlacedMonIcons(void);
+static void MultiMove_SetPlacedMonData(void);
+static u8 MultiMove_UpdateMove(void);
+static void MultiMove_DeselectRow(u8, u8, u8);
+static void MultiMove_SelectRow(u8, u8, u8);
+static void MultiMove_SelectColumn(u8, u8, u8);
+static void MultiMove_DeselectColumn(u8, u8, u8);
+
+// Move Items mode
+static bool32 IsItemIconAtPosition(u8, u8);
+static const u32 *GetItemIconPic(u16);
+static const u32 *GetItemIconPalette(u16);
+static u8 GetNewItemIconIdx(void);
+static void SetItemIconPosition(u8, u8, u8);
+static void LoadItemIconGfx(u8, const u32 *, const u32 *);
+static void SetItemIconAffineAnim(u8, u8);
+static void SetItemIconActive(u8, bool8);
+static u8 GetItemIconIdxByPosition(u8, u8);
+static void CreateItemIconSprites(void);
+static void TryLoadItemIconAtPos(u8, u8);
+static void TryHideItemIconAtPos(u8, u8);
+static void TakeItemFromMon(u8, u8);
+static void InitItemIconInCursor(u16);
+static void SwapItemsWithMon(u8, u8);
+static void GiveItemToMon(u8, u8);
+static void MoveItemFromMonToBag(u8, u8);
+static void MoveItemFromCursorToBag(void);
+static void MoveHeldItemWithPartyMenu(void);
+static bool8 IsItemIconAnimActive(void);
+static bool8 IsMovingItem(void);
+static const u8 *GetMovingItemName(void);
+static u16 GetMovingItemId(void);
+static void PrintItemDescription(void);
+static void InitItemInfoWindow(void);
+static bool8 UpdateItemInfoWindowSlideIn(void);
+static bool8 UpdateItemInfoWindowSlideOut(void);
+static void DrawItemInfoWindow(u32);
+static void SetItemIconCallback(u8, u8, u8, u8);
+static void SpriteCB_ItemIcon_SetPosToCursor(struct Sprite *);
+static void SpriteCB_ItemIcon_WaitAnim(struct Sprite *);
+static void SpriteCB_ItemIcon_ToHand(struct Sprite *);
+static void SpriteCB_ItemIcon_ToMon(struct Sprite *);
+static void SpriteCB_ItemIcon_SwapToHand(struct Sprite *);
+static void SpriteCB_ItemIcon_HideParty(struct Sprite *);
+static void SpriteCB_ItemIcon_SwapToMon(struct Sprite *);
+
+// Cursor
+static void CreateCursorSprites(void);
+static void ToggleCursorAutoAction(void);
+static u8 GetCursorPosition(void);
+static void StartCursorAnim(u8);
+static void TryHideItemAtCursor(void);
+static void TryShowItemAtCursor(void);
+static void InitCursor(void);
+static void InitCursorOnReopen(void);
+static void GetCursorCoordsByPos(u8, u8, u16 *, u16 *);
+static bool8 UpdateCursorPos(void);
+static void DoCursorNewPosUpdate(void);
+static void SetCursorInParty(void);
+static void SetCursorBoxPosition(u8);
+static void ClearSavedCursorPos(void);
+static void SaveCursorPos(void);
+static u8 GetSavedCursorPos(void);
+static void InitMonPlaceChange(u8);
+static bool8 DoMonPlaceChange(void);
+static bool8 MonPlaceChange_Shift(void);
+static bool8 MonPlaceChange_Grab(void);
+static bool8 MonPlaceChange_Place(void);
+static bool8 MultiMonPlaceChange_Up(void);
+static bool8 MultiMonPlaceChange_Down(void);
+static bool8 MonPlaceChange_CursorDown(void);
+static bool8 MonPlaceChange_CursorUp(void);
+static void TrySetCursorFistAnim(void);
+static bool8 IsCursorOnCloseBox(void);
+static bool8 IsCursorOnBoxTitle(void);
+static bool8 IsCursorInBox(void);
-// This file's functions.
-static void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr);
-static void Cb2_EnterPSS(u8 boxOption);
+// Scroll arrows
+static void CreateBoxScrollArrows(void);
+static void StartBoxScrollArrowsSlide(s8);
+static void StopBoxScrollArrowsSlide(void);
+static void AnimateBoxScrollArrows(bool8);
+static void SpriteCB_Arrow(struct Sprite *);
+static struct Sprite *CreateChooseBoxArrows(u16, u16, u8, u8, u8);
+
+// Box title
+static void InitBoxTitle(u8);
+static void CreateIncomingBoxTitle(u8, s8);
+static void CycleBoxTitleSprites(void);
+static void SpriteCB_IncomingBoxTitle(struct Sprite *);
+static void SpriteCB_OutgoingBoxTitle(struct Sprite *);
+static void CycleBoxTitleColor(void);
+static s16 GetBoxTitleBaseX(const u8 *);
+
+// Wallpaper
+static void SetWallpaperForCurrentBox(u8);
+static bool8 DoWallpaperGfxChange(void);
+static void LoadWallpaperGfx(u8, s8);
+static bool32 WaitForWallpaperGfxLoad(void);
+static void DrawWallpaper(const void *, s8, u8);
+static void TrimOldWallpaper(void *);
+static void AddWallpaperSetsMenu(void);
+static void AddWallpapersMenu(u8);
+static u8 GetBoxWallpaper(u8);
+static void SetBoxWallpaper(u8, u8);
+
+// General box
+static void CreateInitBoxTask(u8);
+static bool8 IsInitBoxActive(void);
+static void Task_InitBox(u8);
+static void SetUpScrollToBox(u8);
+static bool8 ScrollToBox(void);
+static s8 DetermineBoxScrollDirection(u8);
+static void SetCurrentBox(u8);
+
+// Misc
+static void CreateMainMenu(u8, s16 *);
static u8 GetCurrentBoxOption(void);
-static u8 HandleInput(void);
-static u8 sub_80CDC2C(void);
-static u8 sub_80CB9BC(void);
-static void LoadWallpaperGfx(u8 boxId, s8 direction);
-static void sub_80CCCFC(u8 boxId, s8 direction);
-static void sub_80CD0B8(s8 direction);
-static void SetCurrentBox(u8 boxId);
-static void sub_80CC32C(u8 boxId);
-static void sub_80C7958(u8 curBox);
-static void sub_80CCAE0(void *arg0);
-static void sub_80C7B14(void);
-static void sub_80C7BB4(void);
static void ScrollBackground(void);
-static void sub_80C7B80(void);
-static void sub_80C7BE4(void);
-static void sub_80CAA14(void);
-static void sub_80CFDC4(void);
-static void sub_80CE790(void);
-static void sub_80CE8E4(void);
+static void UpdateCloseBoxButtonFlash(void);
static void GiveChosenBagItem(void);
static void SetUpHidePartyMenu(void);
-static void DestroyAllPartyMonIcons(void);
-static void sub_80D11CC(void);
-static void LoadPSSMenuGfx(void);
+static void LoadPokeStorageMenuGfx(void);
static void LoadWaveformSpritePalette(void);
-static void sub_80CDC18(void);
-static void sub_80CD36C(void);
-static void sub_80CD3EC(void);
-static void sub_80CAC1C(void);
-static void sub_80CEBDC(void);
+static void InitPokeStorageBg0(void);
static void SetScrollingBackground(void);
-static void sub_80CABE0(void);
-static void sub_80CAEAC(void);
-static void sub_80D0C60(void);
-static void sub_80CFEA8(void);
-static void sub_80CDC0C(void);
-static void sub_80CAF04(void);
-static void sub_80CA0D8(void);
-static void AddMenu(void);
-static void sub_80CE250(void);
-static void InitCanRelaseMonVars(void);
-static void sub_80D01B8(void);
-static void ReleaseMon(void);
-static void RefreshCursorMonData(void);
-static void LoadCursorMonSprite(void);
-static void sub_80CA154(void);
-static void sub_80CA1C4(void);
-static void sub_80CC064(void);
-static void sub_80CE324(void);
+static void UpdateBoxToSendMons(void);
+static void InitCursorItemIcon(void);
+static void InitPalettesAndSprites(void);
+static void RefreshDisplayMonData(void);
+static void CreateDisplayMonSprite(void);
+static void CreateMarkingComboSprite(void);
+static void CreateWaveformSprites(void);
static void ClearBottomWindow(void);
-static void sub_80CA704(void);
-static void sub_80D013C(void);
-static void sub_80CE00C(void);
-static void sub_80D1194(void);
-static void PrintCursorMonInfo(void);
-static void sub_80CA65C(void);
-static void AddWallpaperSetsMenu(void);
-static void sub_80CD02C(void);
-static void InitMenu(void);
-static void sub_80CD158(void);
-static void sub_80CFC14(void);
-static void sub_80CEB40(void);
-static void sub_80CCEE0(void);
-static void sub_80D1818(void);
-static void sub_80D19B4(u32 arg0);
-static void sub_80CAA74(void);
-static void PrintItemDescription(void);
-static void sub_80CE760(void);
-static void sub_80CDBA0(void);
-static void sub_80CE7E8(void);
-static void sub_80CFECC(void);
-static void sub_80CA9EC(void);
-static void FreePSSData(void);
-static void AddBoxMenu(void);
-static void sub_80CCF9C(void);
-static void MoveMon(void);
-static void PlaceMon(void);
-static void sub_80CAB20(void);
-static void sub_80CE22C(void);
-static void sub_80CDA68(void);
-static void sub_80CB950(void);
-static void sub_80CA9C0(void);
+static void InitSupplementalTilemaps(void);
+static void PrintDisplayMonInfo(void);
+static void UpdateWaveformAnimation(void);
+static void SetPartySlotTilemaps(void);
+static void StopFlashingCloseBoxButton(void);
+static void FreePokeStorageData(void);
+static void UpdatePartySlotColors(void);
+static void StartFlashingCloseBoxButton(void);
static void SetUpDoShowPartyMenu(void);
-static void BoxSetMosaic(void);
-static void sub_80C7CF4(struct Sprite *sprite);
-static void sub_80CC100(struct Sprite *sprite);
-static void sub_80CB278(struct Sprite *sprite);
-static void sub_80CD210(struct Sprite *sprite);
-static bool32 WaitForWallpaperGfxLoad(void);
-static bool8 InitPSSWindows(void);
-static bool8 sub_80CC0A0(void);
-static bool8 sub_80CE2A8(void);
-static bool8 sub_80D0164(void);
-static bool8 sub_80CC35C(void);
-static bool8 sub_80D01E4(void);
-static bool8 sub_80CDED4(void);
-static bool8 sub_80CDF08(void);
-static bool8 sub_80D184C(void);
-static bool8 sub_80D18E4(void);
+static void StartDisplayMonMosaicEffect(void);
+static bool8 InitPokeStorageWindows(void);
static bool8 DoShowPartyMenu(void);
-static bool8 sub_80D1218(void);
-static bool8 ScrollToBox(void);
-static bool8 sub_80CD554(void);
static bool8 HidePartyMenu(void);
-static bool8 IsActiveItemMoving(void);
-static bool8 sub_80D0580(u8 arg0);
-static bool8 sub_80D0BC0(void);
-static bool8 sub_80CA2B8(void);
-static bool8 DoWallpaperGfxChange(void);
-static bool8 DoMonPlaceChange(void);
-static bool8 sub_80D00A8(void);
-static bool8 CanMovePartyMon(void);
-static bool8 CanShiftMon(void);
-static bool8 IsCursorOnCloseBox(void);
-static bool8 IsCursorOnBox(void);
-static bool8 IsCursorInBox(void);
-static bool8 IsMonBeingMoved(void);
-static bool8 TryStorePartyMonInBox(u8 boxId);
-static void Cb_InitPSS(u8 taskId);
-static void Cb_PlaceMon(u8 taskId);
-static void Cb_ChangeScreen(u8 taskId);
-static void Cb_ShowPSS(u8 taskId);
-static void Cb_OnBPressed(u8 taskId);
-static void Cb_HandleBoxOptions(u8 taskId);
-static void Cb_OnSelectedMon(u8 taskId);
-static void Cb_OnCloseBoxPressed(u8 taskId);
-static void Cb_HidePartyPokemon(u8 taskId);
-static void Cb_DepositMenu(u8 taskId);
-static void Cb_MoveMon(u8 taskId);
-static void Cb_GiveMovingItemToMon(u8 taskId);
-static void Cb_SwitchSelectedItem(u8 taskId);
-static void Cb_TakeItemForMoving(u8 taskId);
-static void Cb_WithdrawMon(u8 taskId);
-static void Cb_ShiftMon(u8 taskId);
-static void Cb_ShowPartyPokemon(u8 taskId);
-static void Cb_ShowItemInfo(u8 taskId);
-static void Cb_GiveItemFromBag(u8 taskId);
-static void Cb_ItemToBag(u8 taskId);
-static void Cb_TakeItemForMoving(u8 taskId);
-static void Cb_ShowMarkMenu(u8 taskId);
-static void Cb_ShowMonSummary(u8 taskId);
-static void Cb_ReleaseMon(u8 taskId);
-static void Cb_ReshowPSS(u8 taskId);
-static void Cb_MainPSS(u8 taskId);
-static void Cb_JumpBox(u8 taskId);
-static void Cb_HandleWallpapers(u8 taskId);
-static void Cb_NameBox(u8 taskId);
-static void Cb_PrintCantStoreMail(u8 taskId);
-static void Cb_HandleMovingMonFromParty(u8 taskId);
-static void SetUpScrollToBox(u8 boxId);
-static void sub_80CFE54(u8 animNum);
-static void SetMovingMonPriority(u8 priority);
-static void InitMonPlaceChange(u8 arg0);
-static void SetMonMarkings(u8 markings);
-static void ShowYesNoWindow(s8 cursorPos);
-static void sub_80CDBF8(u8 cursorBoxPosition);
-static void sub_80D01D0(u8 arg0);
-static void sub_80CD1A8(bool8 arg0);
-static void sub_80CA984(bool8 arg0);
-static void CreatePartyMonsSprites(bool8 arg0);
-static void PrintStorageActionText(u8 id);
-static s16 sub_80D00AC(void);
-static s8 RunCanReleaseMon(void);
-static u8 GetBoxCursorPosition(void);
-static void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos);
-static void Item_GiveMovingToMon(u8 cursorArea, u8 cursorPos);
-static void Item_TakeMons(u8 cursorArea, u8 cursorPos);
-static void Item_SwitchMonsWithMoving(u8 cursorArea, u8 cursorPos);
-static struct Sprite *sub_80CD2E8(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority);
-static void SetWallpaperForCurrentBox(u8 wallpaperId);
-static void AddWallpapersMenu(u8 wallpaperSet);
-static u16 GetMovingItem(void);
-static void LoadCursorMonGfx(u16 species, u32 pid);
-static void sub_80CA2D0(struct Sprite *sprite);
-static void sub_80CCF64(struct Sprite *sprite);
-static void sub_80CBA3C(struct Sprite *sprite);
-static void sub_80CCF30(struct Sprite *sprite);
-static void sub_80CBAF0(s16 yDelta);
-static void sub_80CAAA8(u8 arg0, bool8 isPartyMon);
-static const u8 *GetMovingItemName(void);
-static void SetMenuText(u8 textId);
-static void sub_80D0D8C(u8 cursorArea, u8 cursorPos);
-static void sub_80D0E50(u8 cursorArea, u8 cursorPos);
-static void sub_80D0F38(u16 item);
-static struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u8 oamPriority, u8 subpriority);
-static void DestroyBoxMonIcon(struct Sprite *sprite);
-static void SetBoxSpeciesAndPersonalities(u8 boxId);
-static void sub_80CB9D0(struct Sprite *sprite, u16 partyId);
-static void sub_80CC370(u8 taskId);
-static void sub_80CCB50(u8 boxId);
-static s8 DetermineBoxScrollDirection(u8 boxId);
-static void sub_80CCA3C(const void *tilemap, s8 direction, u8 arg2);
-static s16 sub_80CD00C(const u8 *string);
-static bool8 MonPlaceChange_Shift(void);
-static bool8 MonPlaceChange_Move(void);
-static bool8 MonPlaceChange_Place(void);
-static bool8 sub_80CDEC4(void);
-static bool8 sub_80CDEB4(void);
-static void sub_80CD444(u8 cursorArea, u8 cursorPosition, u16 *x, u16 *y);
-static void SetShiftedMonData(u8 boxId, u8 position);
-static void SetMovedMonData(u8 boxId, u8 position);
-static void SetPlacedMonData(u8 boxId, u8 position);
-static void PurgeMonOrBoxMon(u8 boxId, u8 position);
-static void SetCursorMonData(void *pokemon, u8 mode);
-static bool32 AtLeastThreeUsableMons(void);
-static u8 InBoxInput_Normal(void);
-static u8 InBoxInput_MovingMultiple(void);
-static u8 InBoxInput_GrabbingMultiple(void);
-static s8 sub_80CFF98(u8 arg0);
-static u8 sub_80CFA5C(void);
-static u8 sub_80D0BA4(void);
-static bool8 sub_80CFA84(void);
-static bool8 sub_80CFB44(void);
-static bool8 sub_80D024C(void);
-static bool8 sub_80D0344(void);
-static bool8 sub_80D03B0(void);
-static bool8 sub_80D0420(void);
-static bool8 sub_80D04A0(void);
-static bool8 sub_80D04C8(void);
-static void sub_80D07B0(u8 arg0, u8 arg1);
-static void sub_80D0834(u8 arg0, u8 arg1);
-static void sub_80D0B5C(void);
-static void sub_80D062C(void);
-static void sub_80D0884(u16 arg0, u16 arg1, u16 arg2);
-static void sub_80D08CC(void);
-static void sub_80D09A4(void);
-static void sub_80D0A1C(void);
-static void sub_80D0AAC(void);
-static u8 sub_80D0894(void);
-static void sub_80D0778(u8 arg0, u8 arg1, u8 arg2);
-static void sub_80D0708(u8 arg0, u8 arg1, u8 arg2);
-static void sub_80D06D0(u8 arg0, u8 arg1, u8 arg2);
-static void sub_80D0740(u8 arg0, u8 arg1, u8 arg2);
-static void sub_80D27AC(u8 id, u16 arg1, u16 arg2, u16 arg3, u16 arg4);
-static void sub_80D27F4(u8 id, u8 arg1, s8 arg2);
-static void sub_80D2644(u8 id, u8 bg, const void *arg2, u16 arg3, u16 arg4);
-static void sub_80D2770(u8 id, u16 arg1, u16 arg2);
-static void sub_80D259C(u8 count);
-static void sub_80D25F0(void);
-static void sub_80D2918(u8 id);
-static void sub_80D2960(u8 id);
-static void sub_80D29F8(u8 id);
-static void sub_80D2A90(struct UnkStruct_2000020 *arg0, struct UnkStruct_2000028 *arg1, u32 arg2);
-static void sub_80D2AA4(void);
-static void sub_80D2B88(struct UnkStruct_2000028 *unkStruct);
-static void sub_80D2C1C(struct UnkStruct_2000028 *unkStruct);
-
-// static const rom data
-static const struct PSS_MenuStringPtrs gUnknown_085716C0[] =
-{
- {gText_WithdrawPokemon, gText_WithdrawMonDescription},
- {gText_DepositPokemon, gText_DepositMonDescription},
- {gText_MovePokemon, gText_MoveMonDescription},
- {gText_MoveItems, gText_MoveItemsDescription},
- {gText_SeeYa, gText_SeeYaDescription}
+static bool8 IsDisplayMosaicActive(void);
+static void ShowYesNoWindow(s8);
+static void UpdateCloseBoxButtonTilemap(bool8);
+static void PrintMessage(u8 id);
+static void LoadDisplayMonGfx(u16, u32);
+static void SpriteCB_DisplayMonMosaic(struct Sprite *);
+static void SetPartySlotTilemap(u8, bool8);
+
+// Tilemap utility
+static void TilemapUtil_SetRect(u8, u16, u16, u16, u16);
+static void TilemapUtil_Move(u8, u8, s8);
+static void TilemapUtil_SetMap(u8, u8, const void *, u16, u16);
+static void TilemapUtil_SetPos(u8, u16, u16);
+static void TilemapUtil_Init(u8);
+static void TilemapUtil_Free(void);
+static void TilemapUtil_Update(u8);
+static void TilemapUtil_DrawPrev(u8);
+static void TilemapUtil_Draw(u8);
+
+// Unknown utility
+static void UnkUtil_Init(struct UnkUtil *, struct UnkUtilData *, u32);
+static void UnkUtil_Run(void);
+static void UnkUtil_CpuRun(struct UnkUtilData *);
+static void UnkUtil_DmaRun(struct UnkUtilData *);
+
+struct {
+ const u8 *text;
+ const u8 *desc;
+} static const sMainMenuTexts[OPTIONS_COUNT] =
+{
+ [OPTION_WITHDRAW] = {gText_WithdrawPokemon, gText_WithdrawMonDescription},
+ [OPTION_DEPOSIT] = {gText_DepositPokemon, gText_DepositMonDescription},
+ [OPTION_MOVE_MONS] = {gText_MovePokemon, gText_MoveMonDescription},
+ [OPTION_MOVE_ITEMS] = {gText_MoveItems, gText_MoveItemsDescription},
+ [OPTION_EXIT] = {gText_SeeYa, gText_SeeYaDescription}
};
-static const struct WindowTemplate gUnknown_085716E8 =
+static const struct WindowTemplate sWindowTemplate_MainMenu =
{
.bg = 0,
.tilemapLeft = 1,
@@ -735,94 +893,96 @@ static const struct WindowTemplate gUnknown_085716E8 =
.baseBlock = 0x1,
};
-static const union AnimCmd sSpriteAnim_85716F0[] =
+static const union AnimCmd sAnim_ChooseBoxMenu_TopLeft[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_85716F8[] =
+static const union AnimCmd sAnim_ChooseBoxMenu_BottomLeft[] =
{
ANIMCMD_FRAME(4, 5),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_8571700[] =
+static const union AnimCmd sAnim_ChooseBoxMenu_TopRight[] =
{
ANIMCMD_FRAME(6, 5),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_8571708[] =
+static const union AnimCmd sAnim_ChooseBoxMenu_BottomRight[] =
{
ANIMCMD_FRAME(10, 5),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_8571710[] =
+static const union AnimCmd *const sAnims_ChooseBoxMenu[] =
{
- sSpriteAnim_85716F0,
- sSpriteAnim_85716F8,
- sSpriteAnim_8571700,
- sSpriteAnim_8571708
+ sAnim_ChooseBoxMenu_TopLeft,
+ sAnim_ChooseBoxMenu_BottomLeft,
+ sAnim_ChooseBoxMenu_TopRight,
+ sAnim_ChooseBoxMenu_BottomRight
};
-static const union AffineAnimCmd sSpriteAffineAnim_8571720[] =
+static const union AffineAnimCmd sAffineAnim_ChooseBoxMenu[] =
{
AFFINEANIMCMD_FRAME(0xE0, 0xE0, 0, 0),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd *const sSpriteAffineAnimTable_8571730[] =
+// Unused
+static const union AffineAnimCmd *const sAffineAnims_ChooseBoxMenu[] =
{
- sSpriteAffineAnim_8571720
+ sAffineAnim_ChooseBoxMenu
};
-static const u8 sBoxInfoTextColors[] = {TEXT_COLOR_RED, TEXT_DYNAMIC_COLOR_6, TEXT_DYNAMIC_COLOR_5};
+static const u8 sChooseBoxMenu_TextColors[] = {TEXT_COLOR_RED, TEXT_DYNAMIC_COLOR_6, TEXT_DYNAMIC_COLOR_5};
static const u8 sText_OutOf30[] = _("/30");
-static const u16 gBoxSelectionPopupPalette[] = INCBIN_U16("graphics/unknown/unknown_57173C.gbapal");
-static const u8 gBoxSelectionPopupCenterTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_center.4bpp");
-static const u8 gBoxSelectionPopupSidesTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp");
-static const u32 gPokemonStorageScrollingBGTileset[] = INCBIN_U32("graphics/pokemon_storage/scrolling_bg.4bpp.lz");
-static const u32 gPokemonStorageScrollingBGTilemap[] = INCBIN_U32("graphics/pokemon_storage/scrolling_bg.bin.lz");
-static const u32 gUnknown_08572280[] = INCBIN_U32("graphics/unknown/unknown_572280.gbapal");
-static const u32 gUnknown_085722A0[] = INCBIN_U32("graphics/unknown/unknown_5722A0.bin.lz");
+static const u16 sChooseBoxMenu_Pal[] = INCBIN_U16("graphics/pokemon_storage/box_selection_popup.gbapal");
+static const u8 sChooseBoxMenuCenter_Gfx[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_center.4bpp");
+static const u8 sChooseBoxMenuSides_Gfx[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp");
+static const u32 sScrollingBg_Gfx[] = INCBIN_U32("graphics/pokemon_storage/scrolling_bg.4bpp.lz");
+static const u32 sScrollingBg_Tilemap[] = INCBIN_U32("graphics/pokemon_storage/scrolling_bg.bin.lz");
+static const u16 sDisplayMenu_Pal[] = INCBIN_U16("graphics/pokemon_storage/display_menu.gbapal"); // Unused
+static const u32 sDisplayMenu_Tilemap[] = INCBIN_U32("graphics/pokemon_storage/display_menu.bin.lz");
-static const u16 gUnknown_0857239C[] =
+static const u16 sPkmnData_Tilemap[] =
{
0x0101, 0x0102, 0x0103, 0x0104, 0x0105, 0x0106, 0x0107, 0x0108, 0x0111, 0x0112, 0x0113, 0x0114, 0x0115, 0x0116, 0x0117, 0x0118,
0x2101, 0x2102, 0x2103, 0x2104, 0x2105, 0x2106, 0x2107, 0x2108, 0x2111, 0x2112, 0x2113, 0x2114, 0x2115, 0x2116, 0x2117, 0x2118,
};
-static const u16 gUnknown_085723DC[] = INCBIN_U16("graphics/unknown/unknown_5723DC.gbapal"); // Left-most part and Close Box.
-static const u16 gUnknown_085723FC[] = INCBIN_U16("graphics/unknown/unknown_5723FC.gbapal");
-static const u16 gUnknown_0857241C[] = INCBIN_U16("graphics/unknown/unknown_57241C.gbapal");
-static const u16 gUnknown_0857243C[] = INCBIN_U16("graphics/unknown/unknown_57243C.gbapal");
+// sInterface_Pal - parts of the display frame, "PkmnData"'s normal color, Close Box
+static const u16 sInterface_Pal[] = INCBIN_U16("graphics/pokemon_storage/interface.gbapal");
+static const u16 sPkmnDataGray_Pal[] = INCBIN_U16("graphics/pokemon_storage/pkmn_data_gray.gbapal");
+static const u16 sBg_Pal[] = INCBIN_U16("graphics/pokemon_storage/bg.gbapal");
+static const u16 sBgMoveItems_Pal[] = INCBIN_U16("graphics/pokemon_storage/bg_move_items.gbapal");
-static const u16 gUnknown_0857245C[] =
+static const u16 sCloseBoxButton_Tilemap[] =
{
0x014c, 0x014d, 0x014e, 0x014f, 0x0170, 0x0171, 0x0172, 0x0173, 0x0174, 0x015c, 0x015d, 0x015e, 0x015f, 0x0180, 0x0181, 0x0182,
0x0183, 0x0184, 0x0175, 0x0176, 0x0177, 0x0178, 0x0179, 0x017a, 0x017b, 0x017c, 0x017d, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189,
0x018a, 0x018b, 0x018c, 0x018d
};
-static const u16 gUnknown_085724A4[] =
+static const u16 sPartySlotFilled_Tilemap[] =
{
0x1140, 0x1141, 0x1141, 0x1142, 0x1150, 0x1151, 0x1151, 0x1152, 0x1160, 0x1161, 0x1161, 0x1162,
};
-static const u16 gUnknown_085724BC[] =
+static const u16 sPartySlotEmpty_Tilemap[] =
{
0x1143, 0x1144, 0x1144, 0x1145, 0x1153, 0x1154, 0x1154, 0x1155, 0x1163, 0x1164, 0x1164, 0x1165,
};
-static const u16 gWaveformPalette[] = INCBIN_U16("graphics/pokemon_storage/waveform.gbapal");
-static const u32 gWaveformTiles[] = INCBIN_U32("graphics/pokemon_storage/waveform.4bpp");
-static const u32 gUnknown_085726B4[] = INCBIN_U32("graphics/unused/unknown_5726B4.gbapal");
-static const u32 gUnknown_085726F4[] = INCBIN_U32("graphics/unknown/unknown_5726F4.gbapal");
+static const u16 sWaveform_Pal[] = INCBIN_U16("graphics/pokemon_storage/waveform.gbapal");
+static const u32 sWaveform_Gfx[] = INCBIN_U32("graphics/pokemon_storage/waveform.4bpp");
+static const u16 sUnused_Pal[] = INCBIN_U16("graphics/pokemon_storage/unused.gbapal");
+static const u16 sUnknown_Pal[] = INCBIN_U16("graphics/pokemon_storage/unknown.gbapal");
-static const struct WindowTemplate gUnknown_08572714[] =
+static const struct WindowTemplate sWindowTemplates[] =
{
- { // 0
+ {
.bg = 1,
.tilemapLeft = 0,
.tilemapTop = 11,
@@ -831,7 +991,7 @@ static const struct WindowTemplate gUnknown_08572714[] =
.paletteNum = 3,
.baseBlock = 0xC0,
},
- { // 1
+ {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 17,
@@ -840,7 +1000,7 @@ static const struct WindowTemplate gUnknown_08572714[] =
.paletteNum = 15,
.baseBlock = 0x14,
},
- { // 2
+ {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 13,
@@ -852,7 +1012,7 @@ static const struct WindowTemplate gUnknown_08572714[] =
DUMMY_WIN_TEMPLATE
};
-static const struct BgTemplate gUnknown_08572734[] =
+static const struct BgTemplate sBgTemplates[] =
{
{
.bg = 0,
@@ -894,59 +1054,59 @@ static const struct BgTemplate gUnknown_08572734[] =
static const struct SpritePalette gWaveformSpritePalette =
{
- gWaveformPalette, TAG_PAL_WAVEFORM
+ sWaveform_Pal, PALTAG_MISC_2
};
-static const struct SpriteSheet gWaveformSpriteSheet =
+static const struct SpriteSheet sSpriteSheet_Waveform =
{
- gWaveformTiles, sizeof(gWaveformTiles), TAG_TILE_WAVEFORM
+ sWaveform_Gfx, sizeof(sWaveform_Gfx), GFXTAG_WAVEFORM
};
-static const struct OamData sOamData_857286C;
-static const struct SpriteTemplate sSpriteTemplate_CursorMon =
+static const struct OamData sOamData_DisplayMon;
+static const struct SpriteTemplate sSpriteTemplate_DisplayMon =
{
- .tileTag = TAG_TILE_2,
- .paletteTag = TAG_PAL_DAC6,
- .oam = &sOamData_857286C,
+ .tileTag = GFXTAG_DISPLAY_MON,
+ .paletteTag = PALTAG_DISPLAY_MON,
+ .oam = &sOamData_DisplayMon,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct StorageAction gPCStorageActionTexts[] =
-{
- [PC_TEXT_EXIT_BOX] = {gText_ExitFromBox, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_WHAT_YOU_DO] = {gText_WhatDoYouWantToDo, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_PICK_A_THEME] = {gText_PleasePickATheme, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_PICK_A_WALLPAPER] = {gText_PickTheWallpaper, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_IS_SELECTED] = {gText_PkmnIsSelected, PC_TEXT_FMT_MON_NAME_1},
- [PC_TEXT_JUMP_TO_WHICH_BOX] = {gText_JumpToWhichBox, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_DEPOSIT_IN_WHICH_BOX] = {gText_DepositInWhichBox, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_WAS_DEPOSITED] = {gText_PkmnWasDeposited, PC_TEXT_FMT_MON_NAME_1},
- [PC_TEXT_BOX_IS_FULL] = {gText_BoxIsFull2, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_RELEASE_POKE] = {gText_ReleaseThisPokemon, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_WAS_RELEASED] = {gText_PkmnWasReleased, PC_TEXT_FMT_MON_NAME_4},
- [PC_TEXT_BYE_BYE] = {gText_ByeByePkmn, PC_TEXT_FMT_MON_NAME_6},
- [PC_TEXT_MARK_POKE] = {gText_MarkYourPkmn, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_LAST_POKE] = {gText_ThatsYourLastPkmn, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_PARTY_FULL] = {gText_YourPartysFull, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_HOLDING_POKE] = {gText_YoureHoldingAPkmn, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_WHICH_ONE_WILL_TAKE] = {gText_WhichOneWillYouTake, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_CANT_RELEASE_EGG] = {gText_YouCantReleaseAnEgg, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_CONTINUE_BOX] = {gText_ContinueBoxOperations, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_CAME_BACK] = {gText_PkmnCameBack, PC_TEXT_FMT_MON_NAME_1},
- [PC_TEXT_WORRIED] = {gText_WasItWorriedAboutYou, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_SURPRISE] = {gText_FourEllipsesExclamation, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_PLEASE_REMOVE_MAIL] = {gText_PleaseRemoveTheMail, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_IS_SELECTED2] = {gText_PkmnIsSelected, PC_TEXT_FMT_ITEM_NAME},
- [PC_TEXT_GIVE_TO_MON] = {gText_GiveToAPkmn, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_PLACED_IN_BAG] = {gText_PlacedItemInBag, PC_TEXT_FMT_ITEM_NAME},
- [PC_TEXT_BAG_FULL] = {gText_BagIsFull2, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_PUT_IN_BAG] = {gText_PutItemInBag, PC_TEXT_FMT_NORMAL},
- [PC_TEXT_ITEM_IS_HELD] = {gText_ItemIsNowHeld, PC_TEXT_FMT_ITEM_NAME},
- [PC_TEXT_CHANGED_TO_ITEM] = {gText_ChangedToNewItem, PC_TEXT_FMT_ITEM_NAME},
- [PC_TEXT_CANT_STORE_MAIL] = {gText_MailCantBeStored, PC_TEXT_FMT_NORMAL},
+static const struct StorageMessage sMessages[] =
+{
+ [MSG_EXIT_BOX] = {gText_ExitFromBox, MSG_VAR_NONE},
+ [MSG_WHAT_YOU_DO] = {gText_WhatDoYouWantToDo, MSG_VAR_NONE},
+ [MSG_PICK_A_THEME] = {gText_PleasePickATheme, MSG_VAR_NONE},
+ [MSG_PICK_A_WALLPAPER] = {gText_PickTheWallpaper, MSG_VAR_NONE},
+ [MSG_IS_SELECTED] = {gText_PkmnIsSelected, MSG_VAR_MON_NAME_1},
+ [MSG_JUMP_TO_WHICH_BOX] = {gText_JumpToWhichBox, MSG_VAR_NONE},
+ [MSG_DEPOSIT_IN_WHICH_BOX] = {gText_DepositInWhichBox, MSG_VAR_NONE},
+ [MSG_WAS_DEPOSITED] = {gText_PkmnWasDeposited, MSG_VAR_MON_NAME_1},
+ [MSG_BOX_IS_FULL] = {gText_BoxIsFull2, MSG_VAR_NONE},
+ [MSG_RELEASE_POKE] = {gText_ReleaseThisPokemon, MSG_VAR_NONE},
+ [MSG_WAS_RELEASED] = {gText_PkmnWasReleased, MSG_VAR_RELEASE_MON_1},
+ [MSG_BYE_BYE] = {gText_ByeByePkmn, MSG_VAR_RELEASE_MON_3},
+ [MSG_MARK_POKE] = {gText_MarkYourPkmn, MSG_VAR_NONE},
+ [MSG_LAST_POKE] = {gText_ThatsYourLastPkmn, MSG_VAR_NONE},
+ [MSG_PARTY_FULL] = {gText_YourPartysFull, MSG_VAR_NONE},
+ [MSG_HOLDING_POKE] = {gText_YoureHoldingAPkmn, MSG_VAR_NONE},
+ [MSG_WHICH_ONE_WILL_TAKE] = {gText_WhichOneWillYouTake, MSG_VAR_NONE},
+ [MSG_CANT_RELEASE_EGG] = {gText_YouCantReleaseAnEgg, MSG_VAR_NONE},
+ [MSG_CONTINUE_BOX] = {gText_ContinueBoxOperations, MSG_VAR_NONE},
+ [MSG_CAME_BACK] = {gText_PkmnCameBack, MSG_VAR_MON_NAME_1},
+ [MSG_WORRIED] = {gText_WasItWorriedAboutYou, MSG_VAR_NONE},
+ [MSG_SURPRISE] = {gText_FourEllipsesExclamation, MSG_VAR_NONE},
+ [MSG_PLEASE_REMOVE_MAIL] = {gText_PleaseRemoveTheMail, MSG_VAR_NONE},
+ [MSG_IS_SELECTED2] = {gText_PkmnIsSelected, MSG_VAR_ITEM_NAME},
+ [MSG_GIVE_TO_MON] = {gText_GiveToAPkmn, MSG_VAR_NONE},
+ [MSG_PLACED_IN_BAG] = {gText_PlacedItemInBag, MSG_VAR_ITEM_NAME},
+ [MSG_BAG_FULL] = {gText_BagIsFull2, MSG_VAR_NONE},
+ [MSG_PUT_IN_BAG] = {gText_PutItemInBag, MSG_VAR_NONE},
+ [MSG_ITEM_IS_HELD] = {gText_ItemIsNowHeld, MSG_VAR_ITEM_NAME},
+ [MSG_CHANGED_TO_ITEM] = {gText_ChangedToNewItem, MSG_VAR_ITEM_NAME},
+ [MSG_CANT_STORE_MAIL] = {gText_MailCantBeStored, MSG_VAR_NONE},
};
static const struct WindowTemplate sYesNoWindowTemplate =
@@ -960,7 +1120,7 @@ static const struct WindowTemplate sYesNoWindowTemplate =
.baseBlock = 0x5C,
};
-static const struct OamData sOamData_857286C =
+static const struct OamData sOamData_DisplayMon =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -977,7 +1137,7 @@ static const struct OamData sOamData_857286C =
.affineParam = 0
};
-static const struct OamData sOamData_8572874 =
+static const struct OamData sOamData_Waveform =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -994,13 +1154,13 @@ static const struct OamData sOamData_8572874 =
.affineParam = 0
};
-static const union AnimCmd sSpriteAnim_857287C[] =
+static const union AnimCmd sAnim_Waveform_LeftOff[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_8572884[] =
+static const union AnimCmd sAnim_Waveform_LeftOn[] =
{
ANIMCMD_FRAME(2, 8),
ANIMCMD_FRAME(4, 8),
@@ -1008,13 +1168,13 @@ static const union AnimCmd sSpriteAnim_8572884[] =
ANIMCMD_JUMP(0)
};
-static const union AnimCmd sSpriteAnim_8572894[] =
+static const union AnimCmd sAnim_Waveform_RightOff[] =
{
ANIMCMD_FRAME(8, 5),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_857289C[] =
+static const union AnimCmd sAnim_Waveform_RightOn[] =
{
ANIMCMD_FRAME(10, 8),
ANIMCMD_FRAME(4, 8),
@@ -1022,38 +1182,38 @@ static const union AnimCmd sSpriteAnim_857289C[] =
ANIMCMD_JUMP(0)
};
-static const union AnimCmd *const sSpriteAnimTable_85728AC[] =
+static const union AnimCmd *const sAnims_Waveform[] =
{
- sSpriteAnim_857287C,
- sSpriteAnim_8572884,
- sSpriteAnim_8572894,
- sSpriteAnim_857289C
+ sAnim_Waveform_LeftOff,
+ sAnim_Waveform_LeftOn,
+ sAnim_Waveform_RightOff,
+ sAnim_Waveform_RightOn
};
static const struct SpriteTemplate sSpriteTemplate_Waveform =
{
- .tileTag = TAG_TILE_WAVEFORM,
- .paletteTag = TAG_PAL_WAVEFORM,
- .oam = &sOamData_8572874,
- .anims = sSpriteAnimTable_85728AC,
+ .tileTag = GFXTAG_WAVEFORM,
+ .paletteTag = PALTAG_MISC_2,
+ .oam = &sOamData_Waveform,
+ .anims = sAnims_Waveform,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct OamData sOamData_85728EC;
-static const struct SpriteTemplate gUnknown_085728D4 =
+static const struct OamData sOamData_MonIcon;
+static const struct SpriteTemplate sSpriteTemplate_MonIcon =
{
- .tileTag = TAG_TILE_12,
- .paletteTag = TAG_PAL_DAC0,
- .oam = &sOamData_85728EC,
+ .tileTag = GFXTAG_MON_ICON,
+ .paletteTag = PALTAG_MON_ICON_0,
+ .oam = &sOamData_MonIcon,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct OamData sOamData_85728EC =
+static const struct OamData sOamData_MonIcon =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -1070,476 +1230,113 @@ static const struct OamData sOamData_85728EC =
.affineParam = 0
};
-static const union AffineAnimCmd gSpriteAffineAnim_85728F4[] =
+static const union AffineAnimCmd sAffineAnim_ReleaseMon_Release[] =
{
AFFINEANIMCMD_FRAME(-2, -2, 0, 120),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd gSpriteAffineAnim_8572904[] =
+static const union AffineAnimCmd sAffineAnim_ReleaseMon_CameBack[] =
{
AFFINEANIMCMD_FRAME(16, 16, 0, 0),
AFFINEANIMCMD_FRAME(16, 16, 0, 15),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd *const gSpriteAffineAnimTable_857291C[] =
-{
- gSpriteAffineAnim_85728F4,
- gSpriteAffineAnim_8572904
-};
-
-static const u16 gWallpaperPalettes_Forest[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/forest_frame.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/forest_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Forest[] = INCBIN_U32("graphics/pokemon_storage/forest.4bpp.lz");
-static const u32 gWallpaperTilemap_Forest[] = INCBIN_U32("graphics/pokemon_storage/forest.bin.lz");
-
-static const u16 gWallpaperPalettes_City[][16] =
+static const union AffineAnimCmd *const sAffineAnims_ReleaseMon[] =
{
- INCBIN_U16("graphics/pokemon_storage/city_frame.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/city_bg.gbapal"),
+ [RELEASE_ANIM_RELEASE] = sAffineAnim_ReleaseMon_Release,
+ [RELEASE_ANIM_CAME_BACK] = sAffineAnim_ReleaseMon_CameBack
};
-static const u32 gWallpaperTiles_City[] = INCBIN_U32("graphics/pokemon_storage/city.4bpp.lz");
-static const u32 gWallpaperTilemap_City[] = INCBIN_U32("graphics/pokemon_storage/city.bin.lz");
-static const u16 gWallpaperPalettes_Desert[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/desert_frame.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/desert_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Desert[] = INCBIN_U32("graphics/pokemon_storage/desert.4bpp.lz");
-static const u32 gWallpaperTilemap_Desert[] = INCBIN_U32("graphics/pokemon_storage/desert.bin.lz");
+#include "data/wallpapers.h"
-static const u16 gWallpaperPalettes_Savanna[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/savanna_frame.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/savanna_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Savanna[] = INCBIN_U32("graphics/pokemon_storage/savanna.4bpp.lz");
-static const u32 gWallpaperTilemap_Savanna[] = INCBIN_U32("graphics/pokemon_storage/savanna.bin.lz");
+static const u16 sUnusedColor = RGB(26, 29, 8);
-static const u16 gWallpaperPalettes_Crag[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/crag_frame.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/crag_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Crag[] = INCBIN_U32("graphics/pokemon_storage/crag.4bpp.lz");
-static const u32 gWallpaperTilemap_Crag[] = INCBIN_U32("graphics/pokemon_storage/crag.bin.lz");
+static const struct SpriteSheet sSpriteSheet_Arrow = {sArrow_Gfx, 0x80, GFXTAG_ARROW};
-static const u16 gWallpaperPalettes_Volcano[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/volcano_frame.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/volcano_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Volcano[] = INCBIN_U32("graphics/pokemon_storage/volcano.4bpp.lz");
-static const u32 gWallpaperTilemap_Volcano[] = INCBIN_U32("graphics/pokemon_storage/volcano.bin.lz");
-
-static const u16 gWallpaperPalettes_Snow[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/snow_frame.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/snow_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Snow[] = INCBIN_U32("graphics/pokemon_storage/snow.4bpp.lz");
-static const u32 gWallpaperTilemap_Snow[] = INCBIN_U32("graphics/pokemon_storage/snow.bin.lz");
-
-static const u16 gWallpaperPalettes_Cave[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/cave_frame.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/cave_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Cave[] = INCBIN_U32("graphics/pokemon_storage/cave.4bpp.lz");
-static const u32 gWallpaperTilemap_Cave[] = INCBIN_U32("graphics/pokemon_storage/cave.bin.lz");
-
-static const u16 gWallpaperPalettes_Beach[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/beach_frame.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/beach_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Beach[] = INCBIN_U32("graphics/pokemon_storage/beach.4bpp.lz");
-static const u32 gWallpaperTilemap_Beach[] = INCBIN_U32("graphics/pokemon_storage/beach.bin.lz");
-
-static const u16 gWallpaperPalettes_Seafloor[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/seafloor_frame.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/seafloor_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Seafloor[] = INCBIN_U32("graphics/pokemon_storage/seafloor.4bpp.lz");
-static const u32 gWallpaperTilemap_Seafloor[] = INCBIN_U32("graphics/pokemon_storage/seafloor.bin.lz");
-
-static const u16 gWallpaperPalettes_River[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/river_frame.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/river_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_River[] = INCBIN_U32("graphics/pokemon_storage/river.4bpp.lz");
-static const u32 gWallpaperTilemap_River[] = INCBIN_U32("graphics/pokemon_storage/river.bin.lz");
-static const u16 gWallpaperPalettes_Sky[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/sky_frame.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/sky_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Sky[] = INCBIN_U32("graphics/pokemon_storage/sky.4bpp.lz");
-static const u32 gWallpaperTilemap_Sky[] = INCBIN_U32("graphics/pokemon_storage/sky.bin.lz");
-
-static const u16 gWallpaperPalettes_PolkaDot[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/polkadot_frame.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/polkadot_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_PolkaDot[] = INCBIN_U32("graphics/pokemon_storage/polkadot.4bpp.lz");
-static const u32 gWallpaperTilemap_PolkaDot[] = INCBIN_U32("graphics/pokemon_storage/polkadot.bin.lz");
-
-static const u16 gWallpaperPalettes_Pokecenter[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/pokecenter_frame.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/pokecenter_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Pokecenter[] = INCBIN_U32("graphics/pokemon_storage/pokecenter.4bpp.lz");
-static const u32 gWallpaperTilemap_Pokecenter[] = INCBIN_U32("graphics/pokemon_storage/pokecenter.bin.lz");
-
-static const u16 gWallpaperPalettes_Machine[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/machine_frame.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/machine_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Machine[] = INCBIN_U32("graphics/pokemon_storage/machine.4bpp.lz");
-static const u32 gWallpaperTilemap_Machine[] = INCBIN_U32("graphics/pokemon_storage/machine.bin.lz");
-
-static const u16 gWallpaperPalettes_Plain[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/plain_frame.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/plain_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Plain[] = INCBIN_U32("graphics/pokemon_storage/plain.4bpp.lz");
-static const u32 gWallpaperTilemap_Plain[] = INCBIN_U32("graphics/pokemon_storage/plain.bin.lz");
-
-// 12x18 tilemap
-static const u32 gUnknown_085773C4[] = INCBIN_U32("graphics/unused/tilemap_5773C4.bin");
-
-static const u16 gUnknown_08577574[][2] =
-{
- {0x1CE7, 0x7FFF},
- {0x1CE7, 0x7FFF},
- {0x1CE7, 0x7FFF},
- {0x1CE7, 0x7FFF},
- {0x1CE7, 0x7FFF},
- {0x1CE7, 0x7FFF},
- {0x1CE7, 0x7FFF},
- {0x1CE7, 0x7FFF},
- {0x1CE7, 0x7FFF},
- {0x1CE7, 0x7FFF},
- {0x1CE7, 0x7FFF},
- {0x1CE7, 0x7FFF},
- {0x1CE7, 0x7FFF},
- {0x1CE7, 0x7FFF},
- {0x1CE7, 0x7FFF},
- {0x1CE7, 0x7FFF},
- {0x1CE7, 0x7FFF}
-};
-
-#define WALLPAPER_ENTRY(name) {gWallpaperTiles_##name, gWallpaperTilemap_##name, gWallpaperPalettes_##name[0]}
-
-static const struct WallpaperTable gWallpaperTable[] =
-{
- [WALLPAPER_FOREST] = WALLPAPER_ENTRY(Forest),
- [WALLPAPER_CITY] = WALLPAPER_ENTRY(City),
- [WALLPAPER_DESERT] = WALLPAPER_ENTRY(Desert),
- [WALLPAPER_SAVANNA] = WALLPAPER_ENTRY(Savanna),
- [WALLPAPER_CRAG] = WALLPAPER_ENTRY(Crag),
- [WALLPAPER_VOLCANO] = WALLPAPER_ENTRY(Volcano),
- [WALLPAPER_SNOW] = WALLPAPER_ENTRY(Snow),
- [WALLPAPER_CAVE] = WALLPAPER_ENTRY(Cave),
- [WALLPAPER_BEACH] = WALLPAPER_ENTRY(Beach),
- [WALLPAPER_SEAFLOOR] = WALLPAPER_ENTRY(Seafloor),
- [WALLPAPER_RIVER] = WALLPAPER_ENTRY(River),
- [WALLPAPER_SKY] = WALLPAPER_ENTRY(Sky),
- [WALLPAPER_POLKADOT] = WALLPAPER_ENTRY(PolkaDot),
- [WALLPAPER_POKECENTER] = WALLPAPER_ENTRY(Pokecenter),
- [WALLPAPER_MACHINE] = WALLPAPER_ENTRY(Machine),
- [WALLPAPER_PLAIN] = WALLPAPER_ENTRY(Plain),
-};
-
-static const u8 gPCGfx_Arrow[] = INCBIN_U8("graphics/pokemon_storage/arrow.4bpp");
-
-static const u16 gWallpaperPalettes_Zigzagoon[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/friends_frame1.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/zigzagoon_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Zigzagoon[] = INCBIN_U32("graphics/pokemon_storage/zigzagoon.4bpp.lz");
-static const u32 gWallpaperTilemap_Zigzagoon[] = INCBIN_U32("graphics/pokemon_storage/zigzagoon.bin.lz");
-
-static const u16 gWallpaperPalettes_Screen[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/friends_frame1.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/screen_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Screen[] = INCBIN_U32("graphics/pokemon_storage/screen.4bpp.lz");
-static const u32 gWallpaperTilemap_Screen[] = INCBIN_U32("graphics/pokemon_storage/screen.bin.lz");
-
-static const u16 gWallpaperPalettes_Diagonal[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/friends_frame1.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/diagonal_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Diagonal[] = INCBIN_U32("graphics/pokemon_storage/diagonal.4bpp.lz");
-static const u32 gWallpaperTilemap_Diagonal[] = INCBIN_U32("graphics/pokemon_storage/diagonal.bin.lz");
-
-static const u16 gWallpaperPalettes_Block[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/block_bg.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/block_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Block[] = INCBIN_U32("graphics/pokemon_storage/block.4bpp.lz");
-static const u32 gWallpaperTilemap_Block[] = INCBIN_U32("graphics/pokemon_storage/block.bin.lz");
-
-static const u16 gWallpaperPalettes_Pokecenter2[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/pokecenter2_bg.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/pokecenter2_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Pokecenter2[] = INCBIN_U32("graphics/pokemon_storage/pokecenter2.4bpp.lz");
-static const u32 gWallpaperTilemap_Pokecenter2[] = INCBIN_U32("graphics/pokemon_storage/pokecenter2.bin.lz");
-
-static const u16 gWallpaperPalettes_Frame[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/frame_bg.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/frame_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Frame[] = INCBIN_U32("graphics/pokemon_storage/frame.4bpp.lz");
-static const u32 gWallpaperTilemap_Frame[] = INCBIN_U32("graphics/pokemon_storage/frame.bin.lz");
-
-static const u16 gWallpaperPalettes_Blank[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/friends_frame1.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/zigzagoon_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Blank[] = INCBIN_U32("graphics/pokemon_storage/blank.4bpp.lz");
-static const u32 gWallpaperTilemap_Blank[] = INCBIN_U32("graphics/pokemon_storage/blank.bin.lz");
-
-static const u16 gWallpaperPalettes_Circles[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/friends_frame2.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/circles_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Circles[] = INCBIN_U32("graphics/pokemon_storage/circles.4bpp.lz");
-static const u32 gWallpaperTilemap_Circles[] = INCBIN_U32("graphics/pokemon_storage/circles.bin.lz");
-
-static const u16 gWallpaperPalettes_Azumarill[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/friends_frame2.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/azumarill_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Azumarill[] = INCBIN_U32("graphics/pokemon_storage/azumarill.4bpp.lz");
-static const u32 gWallpaperTilemap_Azumarill[] = INCBIN_U32("graphics/pokemon_storage/azumarill.bin.lz");
-
-static const u16 gWallpaperPalettes_Pikachu[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/friends_frame2.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/pikachu_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Pikachu[] = INCBIN_U32("graphics/pokemon_storage/pikachu.4bpp.lz");
-static const u32 gWallpaperTilemap_Pikachu[] = INCBIN_U32("graphics/pokemon_storage/pikachu.bin.lz");
-
-static const u16 gWallpaperPalettes_Legendary[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/friends_frame2.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/legendary_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Legendary[] = INCBIN_U32("graphics/pokemon_storage/legendary.4bpp.lz");
-static const u32 gWallpaperTilemap_Legendary[] = INCBIN_U32("graphics/pokemon_storage/legendary.bin.lz");
-
-static const u16 gWallpaperPalettes_Dusclops[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/friends_frame2.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/dusclops_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Dusclops[] = INCBIN_U32("graphics/pokemon_storage/dusclops.4bpp.lz");
-static const u32 gWallpaperTilemap_Dusclops[] = INCBIN_U32("graphics/pokemon_storage/dusclops.bin.lz");
-
-static const u16 gWallpaperPalettes_Ludicolo[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/friends_frame2.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/ludicolo_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Ludicolo[] = INCBIN_U32("graphics/pokemon_storage/ludicolo.4bpp.lz");
-static const u32 gWallpaperTilemap_Ludicolo[] = INCBIN_U32("graphics/pokemon_storage/ludicolo.bin.lz");
-
-static const u16 gWallpaperPalettes_Whiscash[][16] =
-{
- INCBIN_U16("graphics/pokemon_storage/friends_frame2.gbapal"),
- INCBIN_U16("graphics/pokemon_storage/whiscash_bg.gbapal"),
-};
-static const u32 gWallpaperTiles_Whiscash[] = INCBIN_U32("graphics/pokemon_storage/whiscash.4bpp.lz");
-static const u32 gWallpaperTilemap_Whiscash[] = INCBIN_U32("graphics/pokemon_storage/whiscash.bin.lz");
-
-static const u32 gWallpaperIcon_Aqua[] = INCBIN_U32("graphics/pokemon_storage/aqua_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Heart[] = INCBIN_U32("graphics/pokemon_storage/heart_icon.4bpp.lz");
-static const u32 gWallpaperIcon_FiveStar[] = INCBIN_U32("graphics/pokemon_storage/five_star_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Brick[] = INCBIN_U32("graphics/pokemon_storage/brick_icon.4bpp.lz");
-static const u32 gWallpaperIcon_FourStar[] = INCBIN_U32("graphics/pokemon_storage/four_star_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Asterisk[] = INCBIN_U32("graphics/pokemon_storage/asterisk_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Dot[] = INCBIN_U32("graphics/pokemon_storage/dot_icon.4bpp.lz");
-static const u32 gWallpaperIcon_LineCircle[] = INCBIN_U32("graphics/pokemon_storage/line_circle_icon.4bpp.lz");
-static const u32 gWallpaperIcon_PokeBall[] = INCBIN_U32("graphics/pokemon_storage/pokeball_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Maze[] = INCBIN_U32("graphics/pokemon_storage/maze_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Footprint[] = INCBIN_U32("graphics/pokemon_storage/footprint_icon.4bpp.lz");
-static const u32 gWallpaperIcon_BigAsterisk[] = INCBIN_U32("graphics/pokemon_storage/big_asterisk_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Circle[] = INCBIN_U32("graphics/pokemon_storage/circle_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Koffing[] = INCBIN_U32("graphics/pokemon_storage/koffing_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Ribbon[] = INCBIN_U32("graphics/pokemon_storage/ribbon_icon.4bpp.lz");
-static const u32 gWallpaperIcon_FourCircles[] = INCBIN_U32("graphics/pokemon_storage/four_circles_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Lotad[] = INCBIN_U32("graphics/pokemon_storage/lotad_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Crystal[] = INCBIN_U32("graphics/pokemon_storage/crystal_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Pichu[] = INCBIN_U32("graphics/pokemon_storage/pichu_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Diglett[] = INCBIN_U32("graphics/pokemon_storage/diglett_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Luvdisc[] = INCBIN_U32("graphics/pokemon_storage/luvdisc_icon.4bpp.lz");
-static const u32 gWallpaperIcon_StarInCircle[] = INCBIN_U32("graphics/pokemon_storage/star_in_circle_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Spinda[] = INCBIN_U32("graphics/pokemon_storage/spinda_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Latis[] = INCBIN_U32("graphics/pokemon_storage/latis_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Minun[] = INCBIN_U32("graphics/pokemon_storage/minun_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Togepi[] = INCBIN_U32("graphics/pokemon_storage/togepi_icon.4bpp.lz");
-static const u32 gWallpaperIcon_Magma[] = INCBIN_U32("graphics/pokemon_storage/magma_icon.4bpp.lz");
-
-static const struct WallpaperTable gFriendsWallpaperTable[] =
-{
- WALLPAPER_ENTRY(Zigzagoon),
- WALLPAPER_ENTRY(Screen),
- WALLPAPER_ENTRY(Horizontal),
- WALLPAPER_ENTRY(Diagonal),
- WALLPAPER_ENTRY(Block),
- WALLPAPER_ENTRY(Ribbon),
- WALLPAPER_ENTRY(Pokecenter2),
- WALLPAPER_ENTRY(Frame),
- WALLPAPER_ENTRY(Blank),
- WALLPAPER_ENTRY(Circles),
- WALLPAPER_ENTRY(Azumarill),
- WALLPAPER_ENTRY(Pikachu),
- WALLPAPER_ENTRY(Legendary),
- WALLPAPER_ENTRY(Dusclops),
- WALLPAPER_ENTRY(Ludicolo),
- WALLPAPER_ENTRY(Whiscash),
-};
-
-static const u32 *const gFriendsIcons[] =
-{
- gWallpaperIcon_Aqua,
- gWallpaperIcon_Heart,
- gWallpaperIcon_FiveStar,
- gWallpaperIcon_Brick,
- gWallpaperIcon_FourStar,
- gWallpaperIcon_Asterisk,
- gWallpaperIcon_Dot,
- gWallpaperIcon_Cross,
- gWallpaperIcon_LineCircle,
- gWallpaperIcon_PokeBall,
- gWallpaperIcon_Maze,
- gWallpaperIcon_Footprint,
- gWallpaperIcon_BigAsterisk,
- gWallpaperIcon_Circle,
- gWallpaperIcon_Koffing,
- gWallpaperIcon_Ribbon,
- gWallpaperIcon_Bolt,
- gWallpaperIcon_FourCircles,
- gWallpaperIcon_Lotad,
- gWallpaperIcon_Crystal,
- gWallpaperIcon_Pichu,
- gWallpaperIcon_Diglett,
- gWallpaperIcon_Luvdisc,
- gWallpaperIcon_StarInCircle,
- gWallpaperIcon_Spinda,
- gWallpaperIcon_Latis,
- gWallpaperIcon_Plusle,
- gWallpaperIcon_Minun,
- gWallpaperIcon_Togepi,
- gWallpaperIcon_Magma,
-};
-
-// Unknown Unused data.
-static const u16 gUnknown_0857B07C = 0x23BA;
-
-static const struct SpriteSheet gUnknown_0857B080 = {gPCGfx_Arrow, 0x80, 6};
-
-static const struct OamData gOamData_83BB298 =
+static const struct OamData sOamData_BoxTitle =
{
.shape = SPRITE_SHAPE(32x16),
.size = SPRITE_SIZE(32x16),
.priority = 2
};
-static const union AnimCmd gSpriteAnim_83BB2A0[] =
+static const union AnimCmd sAnim_BoxTitle_Left[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_83BB2A8[] =
+static const union AnimCmd sAnim_BoxTitle_Right[] =
{
ANIMCMD_FRAME(8, 5),
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_83BB2B0[] =
+static const union AnimCmd *const sAnims_BoxTitle[] =
{
- gSpriteAnim_83BB2A0,
- gSpriteAnim_83BB2A8
+ sAnim_BoxTitle_Left,
+ sAnim_BoxTitle_Right
};
-static const struct SpriteTemplate gSpriteTemplate_857B0A8 =
+static const struct SpriteTemplate sSpriteTemplate_BoxTitle =
{
- TAG_TILE_3,
- TAG_PAL_DAC9,
- &gOamData_83BB298,
- gSpriteAnimTable_83BB2B0,
- NULL,
- gDummySpriteAffineAnimTable,
- SpriteCallbackDummy
+ .tileTag = GFXTAG_BOX_TITLE,
+ .paletteTag = PALTAG_BOX_TITLE,
+ .oam = &sOamData_BoxTitle,
+ .anims = sAnims_BoxTitle,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
};
-static const struct OamData gOamData_83BB2D0 =
+static const struct OamData sOamData_Arrow =
{
.shape = SPRITE_SHAPE(8x16),
.size = SPRITE_SIZE(8x16),
.priority = 2
};
-static const union AnimCmd gSpriteAnim_83BB2D8[] =
+static const union AnimCmd sAnim_Arrow_Left[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END
};
-static const union AnimCmd gSpriteAnim_83BB2E0[] =
+static const union AnimCmd sAnim_Arrow_Right[] =
{
ANIMCMD_FRAME(2, 5),
ANIMCMD_END
};
-static const union AnimCmd *const gSpriteAnimTable_83BB2E8[] =
+static const union AnimCmd *const sAnims_Arrow[] =
{
- gSpriteAnim_83BB2D8,
- gSpriteAnim_83BB2E0
+ sAnim_Arrow_Left,
+ sAnim_Arrow_Right
};
-static const struct SpriteTemplate gUnknown_0857B0E0 =
+static const struct SpriteTemplate sSpriteTemplate_Arrow =
{
- 6,
- TAG_PAL_WAVEFORM,
- &gOamData_83BB2D0,
- gSpriteAnimTable_83BB2E8,
- NULL,
- gDummySpriteAffineAnimTable,
- sub_80CD210
+ .tileTag = GFXTAG_ARROW,
+ .paletteTag = PALTAG_MISC_2,
+ .oam = &sOamData_Arrow,
+ .anims = sAnims_Arrow,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_Arrow
};
-static const u16 gHandCursorPalette[] = INCBIN_U16("graphics/pokemon_storage/hand_cursor.gbapal");
-static const u8 gHandCursorTiles[] = INCBIN_U8("graphics/pokemon_storage/hand_cursor.4bpp");
-static const u8 gHandCursorShadowTiles[] = INCBIN_U8("graphics/pokemon_storage/hand_cursor_shadow.4bpp");
+static const u16 sHandCursor_Pal[] = INCBIN_U16("graphics/pokemon_storage/hand_cursor.gbapal");
+static const u8 sHandCursor_Gfx[] = INCBIN_U8("graphics/pokemon_storage/hand_cursor.4bpp");
+static const u8 sHandCursorShadow_Gfx[] = INCBIN_U8("graphics/pokemon_storage/hand_cursor_shadow.4bpp");
+
+
+//------------------------------------------------------------------------------
+// SECTION: Misc utility
+//------------------------------------------------------------------------------
+
-// code
void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero2, s32 bytesToBuffer)
{
s32 i, tileBytesToBuffer, remainingBytes;
@@ -1587,9 +1384,9 @@ void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero
}
// Unused
-void sub_80C6EAC(const u8 *string, void *dst, u16 arg2, u8 arg3, u8 clr2, u8 clr3)
+static void UnusedDrawTextWindow(const u8 *string, void *dst, u16 offset, u8 bgColor, u8 fgColor, u8 shadowColor)
{
- u32 var;
+ u32 tileSize;
u8 windowId;
u8 txtColor[3];
u8 *tileData1, *tileData2;
@@ -1597,17 +1394,17 @@ void sub_80C6EAC(const u8 *string, void *dst, u16 arg2, u8 arg3, u8 clr2, u8 clr
winTemplate.width = StringLength_Multibyte(string);
winTemplate.height = 2;
- var = winTemplate.width * 32;
+ tileSize = winTemplate.width * 32;
windowId = AddWindow(&winTemplate);
- FillWindowPixelBuffer(windowId, PIXEL_FILL(arg3));
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(bgColor));
tileData1 = (u8*) GetWindowAttribute(windowId, WINDOW_TILE_DATA);
tileData2 = (winTemplate.width * 32) + tileData1;
- txtColor[0] = arg3;
- txtColor[1] = clr2;
- txtColor[2] = clr3;
+ txtColor[0] = bgColor;
+ txtColor[1] = fgColor;
+ txtColor[2] = shadowColor;
AddTextPrinterParameterized4(windowId, 1, 0, 2, 0, 0, txtColor, -1, string);
- CpuCopy16(tileData1, dst, var);
- CpuCopy16(tileData2, dst + arg2, var);
+ CpuCopy16(tileData1, dst, tileSize);
+ CpuCopy16(tileData2, dst + offset, tileSize);
RemoveWindow(windowId);
}
@@ -1702,7 +1499,8 @@ u8 *StringCopyAndFillWithSpaces(u8 *dst, const u8 *src, u16 n)
return str;
}
-static void sub_80C7128(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src, u16 src_left, u16 src_top, u16 dest_width, u16 dest_height, u16 src_width)
+// Unused
+static void UnusedWriteRectCpu(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src, u16 src_left, u16 src_top, u16 dest_width, u16 dest_height, u16 src_width)
{
u16 i;
@@ -1717,7 +1515,8 @@ static void sub_80C7128(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src,
}
}
-static void sub_80C71A4(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 height)
+// Unused
+static void UnusedWriteRectDma(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 height)
{
u16 i;
@@ -1727,109 +1526,136 @@ static void sub_80C71A4(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 h
Dma3FillLarge16_(0, dest, width);
}
-static void Task_PokemonStorageSystemPC(u8 taskId)
+
+//------------------------------------------------------------------------------
+// SECTION: Main menu
+//
+// The below functions generally handle the PC main menu where the main
+// options can be selected (Withdraw, Deposit, etc.), as well as exiting
+// Pokémon Storage back to this menu.
+//------------------------------------------------------------------------------
+
+
+enum {
+ STATE_LOAD,
+ STATE_FADE_IN,
+ STATE_HANDLE_INPUT,
+ STATE_ERROR_MSG,
+ STATE_ENTER_PC,
+};
+
+#define tState data[0]
+#define tSelectedOption data[1]
+#define tInput data[2]
+#define tNextOption data[3]
+#define tWindowId data[15]
+
+static void Task_PCMainMenu(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
- case 0:
- CreatePCMenu(task->data[1], &task->data[15]);
+ case STATE_LOAD:
+ CreateMainMenu(task->tSelectedOption, &task->tWindowId);
LoadMessageBoxAndBorderGfx();
DrawDialogueFrame(0, 0);
FillWindowPixelBuffer(0, PIXEL_FILL(1));
- AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, TEXT_SPEED_FF, NULL, 2, 1, 3);
+ AddTextPrinterParameterized2(0, 1, sMainMenuTexts[task->tSelectedOption].desc, TEXT_SPEED_FF, NULL, 2, 1, 3);
CopyWindowToVram(0, 3);
- CopyWindowToVram(task->data[15], 3);
- task->data[0]++;
+ CopyWindowToVram(task->tWindowId, 3);
+ task->tState++;
break;
- case 1:
+ case STATE_FADE_IN:
if (IsWeatherNotFadingIn())
- {
- task->data[0]++;
- }
+ task->tState++;
break;
- case 2:
- task->data[2] = Menu_ProcessInput();
- switch(task->data[2])
+ case STATE_HANDLE_INPUT:
+ task->tInput = Menu_ProcessInput();
+ switch(task->tInput)
{
case MENU_NOTHING_CHOSEN:
- task->data[3] = task->data[1];
- if (JOY_NEW(DPAD_UP) && --task->data[3] < 0)
- task->data[3] = 4;
+ task->tNextOption = task->tSelectedOption;
+ if (JOY_NEW(DPAD_UP) && --task->tNextOption < 0)
+ task->tNextOption = OPTIONS_COUNT - 1;
+ if (JOY_NEW(DPAD_DOWN) && ++task->tNextOption > OPTIONS_COUNT - 1)
+ task->tNextOption = 0;
- if (JOY_NEW(DPAD_DOWN) && ++task->data[3] > 4)
- task->data[3] = 0;
- if (task->data[1] != task->data[3])
+ if (task->tSelectedOption != task->tNextOption)
{
- task->data[1] = task->data[3];
+ task->tSelectedOption = task->tNextOption;
FillWindowPixelBuffer(0, PIXEL_FILL(1));
- AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3);
+ AddTextPrinterParameterized2(0, 1, sMainMenuTexts[task->tSelectedOption].desc, 0, NULL, 2, 1, 3);
}
break;
case MENU_B_PRESSED:
- case 4:
- ClearStdWindowAndFrame(task->data[15], TRUE);
+ case OPTION_EXIT:
+ ClearStdWindowAndFrame(task->tWindowId, TRUE);
ScriptContext2_Disable();
EnableBothScriptContexts();
- RemoveWindow(task->data[15]);
+ RemoveWindow(task->tWindowId);
DestroyTask(taskId);
break;
default:
- if (task->data[2] == 0 && CountPartyMons() == PARTY_SIZE)
+ if (task->tInput == OPTION_WITHDRAW && CountPartyMons() == PARTY_SIZE)
{
+ // Can't withdraw
FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gText_PartyFull, 0, NULL, 2, 1, 3);
- task->data[0] = 3;
+ task->tState = STATE_ERROR_MSG;
}
- else if (task->data[2] == 1 && CountPartyMons() == 1)
+ else if (task->tInput == OPTION_DEPOSIT && CountPartyMons() == 1)
{
+ // Can't deposit
FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 1, gText_JustOnePkmn, 0, NULL, 2, 1, 3);
- task->data[0] = 3;
+ task->tState = STATE_ERROR_MSG;
}
else
{
+ // Enter PC
FadeScreen(FADE_TO_BLACK, 0);
- task->data[0] = 4;
+ task->tState = STATE_ENTER_PC;
}
break;
}
break;
- case 3:
+ case STATE_ERROR_MSG:
+ // Printed "can't do PC option message"
+ // Wait for new input after message
if (JOY_NEW(A_BUTTON | B_BUTTON))
{
FillWindowPixelBuffer(0, PIXEL_FILL(1));
- AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3);
- task->data[0] = 2;
+ AddTextPrinterParameterized2(0, 1, sMainMenuTexts[task->tSelectedOption].desc, 0, NULL, 2, 1, 3);
+ task->tState = STATE_HANDLE_INPUT;
}
else if (JOY_NEW(DPAD_UP))
{
- if (--task->data[1] < 0)
- task->data[1] = 4;
+ if (--task->tSelectedOption < 0)
+ task->tSelectedOption = OPTIONS_COUNT - 1;
Menu_MoveCursor(-1);
- task->data[1] = Menu_GetCursorPos();
+ task->tSelectedOption = Menu_GetCursorPos();
FillWindowPixelBuffer(0, PIXEL_FILL(1));
- AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3);
- task->data[0] = 2;
+ AddTextPrinterParameterized2(0, 1, sMainMenuTexts[task->tSelectedOption].desc, 0, NULL, 2, 1, 3);
+ task->tState = STATE_HANDLE_INPUT;
}
else if (JOY_NEW(DPAD_DOWN))
{
- if (++task->data[1] > 3)
- task->data[1] = 0;
+ if (++task->tSelectedOption >= OPTIONS_COUNT - 1)
+ task->tSelectedOption = 0;
Menu_MoveCursor(1);
- task->data[1] = Menu_GetCursorPos();
+ task->tSelectedOption = Menu_GetCursorPos();
FillWindowPixelBuffer(0, PIXEL_FILL(1));
- AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3);
- task->data[0] = 2;
+ AddTextPrinterParameterized2(0, 1, sMainMenuTexts[task->tSelectedOption].desc, 0, NULL, 2, 1, 3);
+ task->tState = STATE_HANDLE_INPUT;
}
break;
- case 4:
+ case STATE_ENTER_PC:
if (!gPaletteFade.active)
{
CleanupOverworldWindowsAndTilemaps();
- Cb2_EnterPSS(task->data[2]);
- RemoveWindow(task->data[15]);
+ EnterPokeStorage(task->tInput);
+ RemoveWindow(task->tWindowId);
DestroyTask(taskId);
}
break;
@@ -1838,46 +1664,53 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
void ShowPokemonStorageSystemPC(void)
{
- u8 taskId = CreateTask(Task_PokemonStorageSystemPC, 80);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1] = 0;
+ u8 taskId = CreateTask(Task_PCMainMenu, 80);
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tSelectedOption = 0;
ScriptContext2_Enable();
}
-static void FieldCb_ReturnToPcMenu(void)
+static void FieldTask_ReturnToPcMenu(void)
{
u8 taskId;
MainCallback vblankCb = gMain.vblankCallback;
SetVBlankCallback(NULL);
- taskId = CreateTask(Task_PokemonStorageSystemPC, 80);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1] = sPreviousBoxOption;
- Task_PokemonStorageSystemPC(taskId);
+ taskId = CreateTask(Task_PCMainMenu, 80);
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tSelectedOption = sPreviousBoxOption;
+ Task_PCMainMenu(taskId);
SetVBlankCallback(vblankCb);
FadeInFromBlack();
}
-static void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr)
+#undef tState
+#undef tSelectedOption
+#undef tInput
+#undef tNextOption
+#undef tWindowId
+
+static void CreateMainMenu(u8 whichMenu, s16 *windowIdPtr)
{
s16 windowId;
- struct WindowTemplate winTemplate = gUnknown_085716E8;
- winTemplate.width = GetMaxWidthInMenuTable((void *)gUnknown_085716C0, ARRAY_COUNT(gUnknown_085716C0));
- windowId = AddWindow(&winTemplate);
+ struct WindowTemplate template = sWindowTemplate_MainMenu;
+ template.width = GetMaxWidthInMenuTable((void *)sMainMenuTexts, OPTIONS_COUNT);
+ windowId = AddWindow(&template);
DrawStdWindowFrame(windowId, FALSE);
- PrintMenuTable(windowId, ARRAY_COUNT(gUnknown_085716C0), (void *)gUnknown_085716C0);
- InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, ARRAY_COUNT(gUnknown_085716C0), whichMenu);
+ PrintMenuTable(windowId, OPTIONS_COUNT, (void *)sMainMenuTexts);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, OPTIONS_COUNT, whichMenu);
*windowIdPtr = windowId;
}
-static void Cb2_ExitPSS(void)
+static void CB2_ExitPokeStorage(void)
{
sPreviousBoxOption = GetCurrentBoxOption();
- gFieldCallback = FieldCb_ReturnToPcMenu;
+ gFieldCallback = FieldTask_ReturnToPcMenu;
SetMainCallback2(CB2_ReturnToField);
}
+// Unused
static s16 StorageSystemGetNextMonIndex(struct BoxPokemon *box, s8 startIdx, u8 stopIdx, u8 mode)
{
s16 i;
@@ -1924,81 +1757,92 @@ void ResetPokemonStorageSystem(void)
u8 *dest = StringCopy(GetBoxNamePtr(boxId), gText_Box);
ConvertIntToDecimalStringN(dest, boxId + 1, STR_CONV_MODE_LEFT_ALIGN, 2);
}
+
for (boxId = 0; boxId < TOTAL_BOXES_COUNT; boxId++)
- {
- SetBoxWallpaper(boxId, boxId % 4);
- }
+ SetBoxWallpaper(boxId, boxId % (MAX_DEFAULT_WALLPAPER + 1));
+
ResetWaldaWallpaper();
}
-static void sub_80C77E8(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal)
+
+//------------------------------------------------------------------------------
+// SECTION: Choose Box menu
+//
+// The below functions handle the popup menu that allows the player to cycle
+// through the boxes and select one. Used when storing Pokémon in Deposit mode
+// and for the Jump feature.
+//------------------------------------------------------------------------------
+
+
+static void LoadChooseBoxMenuGfx(struct ChooseBoxMenu *menu, u16 tileTag, u16 palTag, u8 subpriority, bool32 loadPal)
{
struct SpritePalette palette =
{
- gBoxSelectionPopupPalette, palTag
+ sChooseBoxMenu_Pal, palTag
};
struct SpriteSheet sheets[] =
{
- {gBoxSelectionPopupCenterTiles, 0x800, tileTag},
- {gBoxSelectionPopupSidesTiles, 0x180, tileTag + 1},
+ {sChooseBoxMenuCenter_Gfx, 0x800, tileTag},
+ {sChooseBoxMenuSides_Gfx, 0x180, tileTag + 1},
{}
};
- if (loadPal)
+ if (loadPal) // Always false
LoadSpritePalette(&palette);
LoadSpriteSheets(sheets);
- gUnknown_02039D04 = a0;
- a0->unk_0240 = tileTag;
- a0->unk_0242 = palTag;
- a0->unk_0246 = a3;
- a0->unk_023c = loadPal;
+ sChooseBoxMenu = menu;
+ menu->tileTag = tileTag;
+ menu->paletteTag = palTag;
+ menu->subpriority = subpriority;
+ menu->loadedPalette = loadPal;
}
-static void sub_80C7890(void)
+static void FreeChooseBoxMenu(void)
{
- if (gUnknown_02039D04->unk_023c)
- FreeSpritePaletteByTag(gUnknown_02039D04->unk_0242);
- FreeSpriteTilesByTag(gUnknown_02039D04->unk_0240);
- FreeSpriteTilesByTag(gUnknown_02039D04->unk_0240 + 1);
+ if (sChooseBoxMenu->loadedPalette)
+ FreeSpritePaletteByTag(sChooseBoxMenu->paletteTag);
+ FreeSpriteTilesByTag(sChooseBoxMenu->tileTag);
+ FreeSpriteTilesByTag(sChooseBoxMenu->tileTag + 1);
}
-static void sub_80C78D4(u8 curBox)
+static void CreateChooseBoxMenuSprites(u8 curBox)
{
- sub_80C7958(curBox);
+ ChooseBoxMenu_CreateSprites(curBox);
}
-static void sub_80C78E4(void)
+static void DestroyChooseBoxMenuSprites(void)
{
- sub_80C7B14();
+ ChooseBoxMenu_DestroySprites();
}
-static u8 HandleBoxChooseSelectionInput(void)
+// For the popout window when choosing a box to deposit in or jump to
+static u8 HandleChooseBoxMenuInput(void)
{
if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
- return 201;
+ return BOXID_CANCELED;
}
if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
- return gUnknown_02039D04->curBox;
+ return sChooseBoxMenu->curBox;
}
if (JOY_NEW(DPAD_LEFT))
{
PlaySE(SE_SELECT);
- sub_80C7BB4();
+ ChooseBoxMenu_MoveLeft();
}
else if (JOY_NEW(DPAD_RIGHT))
{
PlaySE(SE_SELECT);
- sub_80C7B80();
+ ChooseBoxMenu_MoveRight();
}
- return 200;
+ return BOXID_NONE_CHOSEN;
}
-static void sub_80C7958(u8 curBox)
+static void ChooseBoxMenu_CreateSprites(u8 curBox)
{
u16 i;
u8 spriteId;
@@ -2010,184 +1854,197 @@ static void sub_80C7958(u8 curBox)
0, 0, &oamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
};
- gUnknown_02039D04->curBox = curBox;
- template.tileTag = gUnknown_02039D04->unk_0240;
- template.paletteTag = gUnknown_02039D04->unk_0242;
+ sChooseBoxMenu->curBox = curBox;
+ template.tileTag = sChooseBoxMenu->tileTag;
+ template.paletteTag = sChooseBoxMenu->paletteTag;
spriteId = CreateSprite(&template, 160, 96, 0);
- gUnknown_02039D04->unk_0000 = gSprites + spriteId;
+ sChooseBoxMenu->menuSprite = &gSprites[spriteId];
oamData.shape = SPRITE_SHAPE(8x32);
oamData.size = SPRITE_SIZE(8x32);
- template.tileTag = gUnknown_02039D04->unk_0240 + 1;
- template.anims = sSpriteAnimTable_8571710;
- for (i = 0; i < 4; i++)
- {
- u16 r5;
- spriteId = CreateSprite(&template, 124, 80, gUnknown_02039D04->unk_0246);
- gUnknown_02039D04->unk_0004[i] = gSprites + spriteId;
- r5 = 0;
+ template.tileTag = sChooseBoxMenu->tileTag + 1;
+ template.anims = sAnims_ChooseBoxMenu;
+ for (i = 0; i < ARRAY_COUNT(sChooseBoxMenu->menuSideSprites); i++)
+ {
+ u16 anim;
+ spriteId = CreateSprite(&template, 124, 80, sChooseBoxMenu->subpriority);
+ sChooseBoxMenu->menuSideSprites[i] = &gSprites[spriteId];
+ anim = 0;
if (i & 2)
{
- gUnknown_02039D04->unk_0004[i]->pos1.x = 196;
- r5 = 2;
+ sChooseBoxMenu->menuSideSprites[i]->x = 196;
+ anim = 2;
}
if (i & 1)
{
- gUnknown_02039D04->unk_0004[i]->pos1.y = 112;
- gUnknown_02039D04->unk_0004[i]->oam.size = 0;
- r5++;
+ sChooseBoxMenu->menuSideSprites[i]->y = 112;
+ sChooseBoxMenu->menuSideSprites[i]->oam.size = 0;
+ anim++;
}
- StartSpriteAnim(gUnknown_02039D04->unk_0004[i], r5);
+ StartSpriteAnim(sChooseBoxMenu->menuSideSprites[i], anim);
}
- for (i = 0; i < 2; i++)
+ for (i = 0; i < ARRAY_COUNT(sChooseBoxMenu->arrowSprites); i++)
{
- gUnknown_02039D04->unk_0020[i] = sub_80CD2E8(72 * i + 0x7c, 0x58, i, 0, gUnknown_02039D04->unk_0246);
- if (gUnknown_02039D04->unk_0020[i])
+ sChooseBoxMenu->arrowSprites[i] = CreateChooseBoxArrows(72 * i + 124, 88, i, 0, sChooseBoxMenu->subpriority);
+ if (sChooseBoxMenu->arrowSprites[i])
{
- gUnknown_02039D04->unk_0020[i]->data[0] = (i == 0 ? -1 : 1);
- gUnknown_02039D04->unk_0020[i]->callback = sub_80C7CF4;
+ sChooseBoxMenu->arrowSprites[i]->data[0] = (i == 0 ? -1 : 1);
+ sChooseBoxMenu->arrowSprites[i]->callback = SpriteCB_ChooseBoxArrow;
}
}
- sub_80C7BE4();
+ ChooseBoxMenu_PrintInfo();
}
-static void sub_80C7B14(void)
+static void ChooseBoxMenu_DestroySprites(void)
{
u16 i;
- if (gUnknown_02039D04->unk_0000)
+ if (sChooseBoxMenu->menuSprite)
{
- DestroySprite(gUnknown_02039D04->unk_0000);
- gUnknown_02039D04->unk_0000 = NULL;
+ DestroySprite(sChooseBoxMenu->menuSprite);
+ sChooseBoxMenu->menuSprite = NULL;
}
- for (i = 0; i < 4; i++)
+ for (i = 0; i < ARRAY_COUNT(sChooseBoxMenu->menuSideSprites); i++)
{
- if (gUnknown_02039D04->unk_0004[i])
+ if (sChooseBoxMenu->menuSideSprites[i])
{
- DestroySprite(gUnknown_02039D04->unk_0004[i]);
- gUnknown_02039D04->unk_0004[i] = NULL;
+ DestroySprite(sChooseBoxMenu->menuSideSprites[i]);
+ sChooseBoxMenu->menuSideSprites[i] = NULL;
}
}
- for (i = 0; i < 2; i++)
+ for (i = 0; i < ARRAY_COUNT(sChooseBoxMenu->arrowSprites); i++)
{
- if (gUnknown_02039D04->unk_0020[i])
- DestroySprite(gUnknown_02039D04->unk_0020[i]);
+ if (sChooseBoxMenu->arrowSprites[i])
+ DestroySprite(sChooseBoxMenu->arrowSprites[i]);
}
}
-static void sub_80C7B80(void)
+static void ChooseBoxMenu_MoveRight(void)
{
- if (++gUnknown_02039D04->curBox >= TOTAL_BOXES_COUNT)
- gUnknown_02039D04->curBox = 0;
- sub_80C7BE4();
+ if (++sChooseBoxMenu->curBox >= TOTAL_BOXES_COUNT)
+ sChooseBoxMenu->curBox = 0;
+ ChooseBoxMenu_PrintInfo();
}
-static void sub_80C7BB4(void)
+static void ChooseBoxMenu_MoveLeft(void)
{
- gUnknown_02039D04->curBox = (gUnknown_02039D04->curBox == 0 ? TOTAL_BOXES_COUNT - 1 : gUnknown_02039D04->curBox - 1);
- sub_80C7BE4();
+ sChooseBoxMenu->curBox = (sChooseBoxMenu->curBox == 0 ? TOTAL_BOXES_COUNT - 1 : sChooseBoxMenu->curBox - 1);
+ ChooseBoxMenu_PrintInfo();
}
-static void sub_80C7BE4(void)
+static void ChooseBoxMenu_PrintInfo(void)
{
u8 numBoxMonsText[16];
- struct WindowTemplate winTemplate;
+ struct WindowTemplate template;
u8 windowId;
- u8 *boxName = GetBoxNamePtr(gUnknown_02039D04->curBox);
- u8 nPokemonInBox = CountMonsInBox(gUnknown_02039D04->curBox);
+ u8 *boxName = GetBoxNamePtr(sChooseBoxMenu->curBox);
+ u8 numInBox = CountMonsInBox(sChooseBoxMenu->curBox);
u32 winTileData;
s32 center;
- memset(&winTemplate, 0, sizeof(winTemplate));
- winTemplate.width = 8;
- winTemplate.height = 4;
+ memset(&template, 0, sizeof(template));
+ template.width = 8;
+ template.height = 4;
- windowId = AddWindow(&winTemplate);
+ windowId = AddWindow(&template);
FillWindowPixelBuffer(windowId, PIXEL_FILL(4));
+ // Print box name
center = GetStringCenterAlignXOffset(1, boxName, 64);
- AddTextPrinterParameterized3(windowId, 1, center, 1, sBoxInfoTextColors, TEXT_SPEED_FF, boxName);
+ AddTextPrinterParameterized3(windowId, 1, center, 1, sChooseBoxMenu_TextColors, TEXT_SPEED_FF, boxName);
- ConvertIntToDecimalStringN(numBoxMonsText, nPokemonInBox, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ // Print #/30 for number of Pokémon in the box
+ ConvertIntToDecimalStringN(numBoxMonsText, numInBox, STR_CONV_MODE_RIGHT_ALIGN, 2);
StringAppend(numBoxMonsText, sText_OutOf30);
center = GetStringCenterAlignXOffset(1, numBoxMonsText, 64);
- AddTextPrinterParameterized3(windowId, 1, center, 17, sBoxInfoTextColors, TEXT_SPEED_FF, numBoxMonsText);
+ AddTextPrinterParameterized3(windowId, 1, center, 17, sChooseBoxMenu_TextColors, TEXT_SPEED_FF, numBoxMonsText);
winTileData = GetWindowAttribute(windowId, WINDOW_TILE_DATA);
- CpuCopy32((void *)winTileData, (void *)OBJ_VRAM0 + 0x100 + (GetSpriteTileStartByTag(gUnknown_02039D04->unk_0240) * 32), 0x400);
+ CpuCopy32((void *)winTileData, (void *)OBJ_VRAM0 + 0x100 + (GetSpriteTileStartByTag(sChooseBoxMenu->tileTag) * 32), 0x400);
RemoveWindow(windowId);
}
-static void sub_80C7CF4(struct Sprite *sprite)
+static void SpriteCB_ChooseBoxArrow(struct Sprite *sprite)
{
if (++sprite->data[1] > 3)
{
sprite->data[1] = 0;
- sprite->pos2.x += sprite->data[0];
+ sprite->x2 += sprite->data[0];
if (++sprite->data[2] > 5)
{
sprite->data[2] = 0;
- sprite->pos2.x = 0;
+ sprite->x2 = 0;
}
}
}
-static void VblankCb_PSS(void)
+
+//------------------------------------------------------------------------------
+// SECTION: Main tasks
+//
+// Below are the main task callbacks that handle the primary actions the
+// player can take in the PC. The most 'important' of these tasks is the
+// primary one, Task_PokeStorageMain. Also included are some basic
+// initialization functions.
+//------------------------------------------------------------------------------
+
+
+static void VBlankCB_PokeStorage(void)
{
LoadOam();
ProcessSpriteCopyRequests();
- sub_80D2AA4();
+ UnkUtil_Run();
TransferPlttBuffer();
- SetGpuReg(REG_OFFSET_BG2HOFS, sPSSData->bg2_X);
+ SetGpuReg(REG_OFFSET_BG2HOFS, sStorage->bg2_X);
}
-static void Cb2_PSS(void)
+static void CB2_PokeStorage(void)
{
RunTasks();
DoScheduledBgTilemapCopiesToVram();
ScrollBackground();
- sub_80CAA14();
+ UpdateCloseBoxButtonFlash();
AnimateSprites();
BuildOamBuffer();
}
-static void Cb2_EnterPSS(u8 boxOption)
+static void EnterPokeStorage(u8 boxOption)
{
ResetTasks();
sCurrentBoxOption = boxOption;
- sPSSData = Alloc(sizeof(*sPSSData));
- if (sPSSData == NULL)
+ sStorage = Alloc(sizeof(*sStorage));
+ if (sStorage == NULL)
{
- SetMainCallback2(Cb2_ExitPSS);
+ SetMainCallback2(CB2_ExitPokeStorage);
}
else
{
- sPSSData->boxOption = boxOption;
- sPSSData->isReshowingPSS = FALSE;
+ sStorage->boxOption = boxOption;
+ sStorage->isReopening = FALSE;
sMovingItemId = ITEM_NONE;
- sPSSData->state = 0;
- sPSSData->taskId = CreateTask(Cb_InitPSS, 3);
+ sStorage->state = 0;
+ sStorage->taskId = CreateTask(Task_InitPokeStorage, 3);
sLastUsedBox = StorageGetCurrentBox();
- SetMainCallback2(Cb2_PSS);
+ SetMainCallback2(CB2_PokeStorage);
}
}
-static void Cb2_ReturnToPSS(void)
+static void CB2_ReturnToPokeStorage(void)
{
ResetTasks();
- sPSSData = Alloc(sizeof(*sPSSData));
- if (sPSSData == NULL)
+ sStorage = Alloc(sizeof(*sStorage));
+ if (sStorage == NULL)
{
- SetMainCallback2(Cb2_ExitPSS);
+ SetMainCallback2(CB2_ExitPokeStorage);
}
else
{
- sPSSData->boxOption = sCurrentBoxOption;
- sPSSData->isReshowingPSS = TRUE;
- sPSSData->state = 0;
- sPSSData->taskId = CreateTask(Cb_InitPSS, 3);
- SetMainCallback2(Cb2_PSS);
+ sStorage->boxOption = sCurrentBoxOption;
+ sStorage->isReopening = TRUE;
+ sStorage->state = 0;
+ sStorage->taskId = CreateTask(Task_InitPokeStorage, 3);
+ SetMainCallback2(CB2_PokeStorage);
}
}
@@ -2203,7 +2060,7 @@ static void ResetAllBgCoords(void)
SetGpuReg(REG_OFFSET_BG3VOFS, 0);
}
-static void sub_80C7E98(void)
+static void ResetForPokeStorage(void)
{
ResetPaletteFade();
ResetSpriteData();
@@ -2211,25 +2068,25 @@ static void sub_80C7E98(void)
FreeAllSpritePalettes();
ClearDma3Requests();
gReservedSpriteTileCount = 0x280;
- sub_80D2A90(&sPSSData->unk_0020, sPSSData->unk_0028, 8);
+ UnkUtil_Init(&sStorage->unkUtil, sStorage->unkUtilData, ARRAY_COUNT(sStorage->unkUtilData));
gKeyRepeatStartDelay = 20;
ClearScheduledBgCopiesToVram();
- sub_80D259C(3);
- sub_80D2644(0, 1, gUnknown_0857239C, 8, 4);
- sub_80D2770(0, 1, 0);
- sPSSData->unk_02C7 = 0;
+ TilemapUtil_Init(TILEMAPID_COUNT);
+ TilemapUtil_SetMap(TILEMAPID_PKMN_DATA, 1, sPkmnData_Tilemap, 8, 4);
+ TilemapUtil_SetPos(TILEMAPID_PKMN_DATA, 1, 0);
+ sStorage->closeBoxFlashing = FALSE;
}
-static void sub_80C7F1C(void)
+static void InitStartingPosData(void)
{
- sub_80CDC0C();
- sInPartyMenu = (sPSSData->boxOption == BOX_OPTION_DEPOSIT);
- gUnknown_02039D0E = 0;
+ ClearSavedCursorPos();
+ sInPartyMenu = (sStorage->boxOption == OPTION_DEPOSIT);
+ sDepositBoxId = 0;
}
static void SetMonIconTransparency(void)
{
- if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
+ if (sStorage->boxOption == OPTION_MOVE_ITEMS)
{
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(7, 11));
@@ -2237,42 +2094,45 @@ static void SetMonIconTransparency(void)
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP);
}
-static void SetPSSCallback(TaskFunc newFunc)
+static void SetPokeStorageTask(TaskFunc newFunc)
{
- gTasks[sPSSData->taskId].func = newFunc;
- sPSSData->state = 0;
+ gTasks[sStorage->taskId].func = newFunc;
+ sStorage->state = 0;
}
-static void Cb_InitPSS(u8 taskId)
+static void Task_InitPokeStorage(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
SetVBlankCallback(NULL);
SetGpuReg(REG_OFFSET_DISPCNT, 0);
- sub_80C7E98();
- if (sPSSData->isReshowingPSS)
+ ResetForPokeStorage();
+ if (sStorage->isReopening)
{
switch (sWhichToReshow)
{
- case 1:
- sub_80CE790();
+ case SCREEN_CHANGE_NAME_BOX - 1:
+ // Return from naming box
+ LoadSavedMovingMon();
break;
- case 0:
- sub_80CE8E4();
+ case SCREEN_CHANGE_SUMMARY_SCREEN - 1:
+ // Return from summary screen
+ SetSelectionAfterSummaryScreen();
break;
- case 2:
+ case SCREEN_CHANGE_ITEM_FROM_BAG - 1:
+ // Return from bag menu
GiveChosenBagItem();
break;
}
}
- LoadPSSMenuGfx();
+ LoadPokeStorageMenuGfx();
LoadWaveformSpritePalette();
break;
case 1:
- if (!InitPSSWindows())
+ if (!InitPokeStorageWindows())
{
- SetPSSCallback(Cb_ChangeScreen);
+ SetPokeStorageTask(Task_ChangeScreen);
return;
}
break;
@@ -2284,110 +2144,110 @@ static void Cb_InitPSS(u8 taskId)
break;
case 3:
ResetAllBgCoords();
- if (!sPSSData->isReshowingPSS)
- sub_80C7F1C();
+ if (!sStorage->isReopening)
+ InitStartingPosData();
break;
case 4:
- sub_80CAF04();
- if (!sPSSData->isReshowingPSS)
- sub_80CD36C();
+ InitMonIconFields();
+ if (!sStorage->isReopening)
+ InitCursor();
else
- sub_80CD3EC();
+ InitCursorOnReopen();
break;
case 5:
- if (!sub_80D0164())
+ if (!MultiMove_Init())
{
- SetPSSCallback(Cb_ChangeScreen);
+ SetPokeStorageTask(Task_ChangeScreen);
return;
}
else
{
SetScrollingBackground();
- sub_80CAC1C();
+ InitPokeStorageBg0();
}
break;
case 6:
- sub_80CA0D8();
+ InitPalettesAndSprites();
break;
case 7:
- sub_80CA704();
+ InitSupplementalTilemaps();
break;
case 8:
- sub_80CC32C(StorageGetCurrentBox());
+ CreateInitBoxTask(StorageGetCurrentBox());
break;
case 9:
- if (sub_80CC35C())
+ if (IsInitBoxActive())
return;
- if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ if (sStorage->boxOption != OPTION_MOVE_ITEMS)
{
- sPSSData->markMenu.baseTileTag = TAG_TILE_D;
- sPSSData->markMenu.basePaletteTag = TAG_PAL_DACE;
- InitMonMarkingsMenu(&sPSSData->markMenu);
+ sStorage->markMenu.baseTileTag = GFXTAG_MARKING_MENU;
+ sStorage->markMenu.basePaletteTag = PALTAG_MARKING_MENU;
+ InitMonMarkingsMenu(&sStorage->markMenu);
BufferMonMarkingsMenuTiles();
}
else
{
- sub_80D0C60();
- sub_80CAEAC();
+ CreateItemIconSprites();
+ InitCursorItemIcon();
}
break;
case 10:
SetMonIconTransparency();
- if (!sPSSData->isReshowingPSS)
+ if (!sStorage->isReopening)
{
- BlendPalettes(PALETTES_ALL, 0x10, RGB_BLACK);
- SetPSSCallback(Cb_ShowPSS);
+ BlendPalettes(PALETTES_ALL, 16, RGB_BLACK);
+ SetPokeStorageTask(Task_ShowPokeStorage);
}
else
{
- BlendPalettes(PALETTES_ALL, 0x10, RGB_BLACK);
- SetPSSCallback(Cb_ReshowPSS);
+ BlendPalettes(PALETTES_ALL, 16, RGB_BLACK);
+ SetPokeStorageTask(Task_ReshowPokeStorage);
}
- SetVBlankCallback(VblankCb_PSS);
+ SetVBlankCallback(VBlankCB_PokeStorage);
return;
default:
return;
}
- sPSSData->state++;
+ sStorage->state++;
}
-static void Cb_ShowPSS(u8 taskId)
+static void Task_ShowPokeStorage(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
PlaySE(SE_PC_LOGIN);
ComputerScreenOpenEffect(20, 0, 1);
- sPSSData->state++;
+ sStorage->state++;
break;
case 1:
if (!IsComputerScreenOpenEffectActive())
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
break;
}
}
-static void Cb_ReshowPSS(u8 taskId)
+static void Task_ReshowPokeStorage(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
BeginNormalPaletteFade(PALETTES_ALL, -1, 0x10, 0, RGB_BLACK);
- sPSSData->state++;
+ sStorage->state++;
break;
case 1:
if (!UpdatePaletteFade())
{
- if (sWhichToReshow == 2 && gSpecialVar_ItemId != 0)
+ if (sWhichToReshow == SCREEN_CHANGE_ITEM_FROM_BAG - 1 && gSpecialVar_ItemId != ITEM_NONE)
{
- PrintStorageActionText(PC_TEXT_ITEM_IS_HELD);
- sPSSData->state++;
+ PrintMessage(MSG_ITEM_IS_HELD);
+ sStorage->state++;
}
else
{
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
}
}
break;
@@ -2395,557 +2255,579 @@ static void Cb_ReshowPSS(u8 taskId)
if (!IsDma3ManagerBusyWithBgCopy() && JOY_NEW(A_BUTTON | B_BUTTON))
{
ClearBottomWindow();
- sPSSData->state++;
+ sStorage->state++;
}
break;
case 3:
if (!IsDma3ManagerBusyWithBgCopy())
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
break;
}
}
-static void Cb_MainPSS(u8 taskId)
+// States for the outer switch in Task_PokeStorageMain
+enum {
+ MSTATE_HANDLE_INPUT,
+ MSTATE_MOVE_CURSOR,
+ MSTATE_SCROLL_BOX,
+ MSTATE_WAIT_MSG,
+ MSTATE_ERROR_LAST_PARTY_MON,
+ MSTATE_ERROR_HAS_MAIL,
+ MSTATE_WAIT_ERROR_MSG,
+ MSTATE_MULTIMOVE_RUN,
+ MSTATE_MULTIMOVE_RUN_CANCEL,
+ MSTATE_MULTIMOVE_RUN_MOVED,
+ MSTATE_SCROLL_BOX_ITEM,
+ MSTATE_WAIT_ITEM_ANIM,
+};
+
+static void Task_PokeStorageMain(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
- case 0:
+ case MSTATE_HANDLE_INPUT:
switch (HandleInput())
{
- case 1:
+ case INPUT_MOVE_CURSOR:
PlaySE(SE_SELECT);
- sPSSData->state = 1;
+ sStorage->state = MSTATE_MOVE_CURSOR;
break;
- case 5:
- if (sPSSData->boxOption != BOX_OPTION_MOVE_MONS && sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ case INPUT_SHOW_PARTY:
+ if (sStorage->boxOption != OPTION_MOVE_MONS && sStorage->boxOption != OPTION_MOVE_ITEMS)
{
- PrintStorageActionText(PC_TEXT_WHICH_ONE_WILL_TAKE);
- sPSSData->state = 3;
+ PrintMessage(MSG_WHICH_ONE_WILL_TAKE);
+ sStorage->state = MSTATE_WAIT_MSG;
}
else
{
- sub_80CDC0C();
- SetPSSCallback(Cb_ShowPartyPokemon);
+ ClearSavedCursorPos();
+ SetPokeStorageTask(Task_ShowPartyPokemon);
}
break;
- case 6:
- if (sPSSData->boxOption == BOX_OPTION_MOVE_MONS)
+ case INPUT_HIDE_PARTY:
+ if (sStorage->boxOption == OPTION_MOVE_MONS)
{
- if (IsMonBeingMoved() && ItemIsMail(sPSSData->cursorMonItem))
- sPSSData->state = 5;
+ if (IsMonBeingMoved() && ItemIsMail(sStorage->displayMonItemId))
+ sStorage->state = MSTATE_ERROR_HAS_MAIL;
else
- SetPSSCallback(Cb_HidePartyPokemon);
+ SetPokeStorageTask(Task_HidePartyPokemon);
}
- else if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
+ else if (sStorage->boxOption == OPTION_MOVE_ITEMS)
{
- SetPSSCallback(Cb_HidePartyPokemon);
+ SetPokeStorageTask(Task_HidePartyPokemon);
}
break;
- case 4:
- SetPSSCallback(Cb_OnCloseBoxPressed);
+ case INPUT_CLOSE_BOX:
+ SetPokeStorageTask(Task_OnCloseBoxPressed);
break;
- case 19:
- SetPSSCallback(Cb_OnBPressed);
+ case INPUT_PRESSED_B:
+ SetPokeStorageTask(Task_OnBPressed);
break;
- case 7:
+ case INPUT_BOX_OPTIONS:
PlaySE(SE_SELECT);
- SetPSSCallback(Cb_HandleBoxOptions);
+ SetPokeStorageTask(Task_HandleBoxOptions);
break;
- case 8:
- SetPSSCallback(Cb_OnSelectedMon);
+ case INPUT_IN_MENU:
+ SetPokeStorageTask(Task_OnSelectedMon);
break;
- case 9:
+ case INPUT_SCROLL_RIGHT:
PlaySE(SE_SELECT);
- sPSSData->newCurrBoxId = StorageGetCurrentBox() + 1;
- if (sPSSData->newCurrBoxId >= TOTAL_BOXES_COUNT)
- sPSSData->newCurrBoxId = 0;
- if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ sStorage->newCurrBoxId = StorageGetCurrentBox() + 1;
+ if (sStorage->newCurrBoxId >= TOTAL_BOXES_COUNT)
+ sStorage->newCurrBoxId = 0;
+ if (sStorage->boxOption != OPTION_MOVE_ITEMS)
{
- SetUpScrollToBox(sPSSData->newCurrBoxId);
- sPSSData->state = 2;
+ SetUpScrollToBox(sStorage->newCurrBoxId);
+ sStorage->state = MSTATE_SCROLL_BOX;
}
else
{
- sub_80CFEA8();
- sPSSData->state = 10;
+ TryHideItemAtCursor();
+ sStorage->state = MSTATE_SCROLL_BOX_ITEM;
}
break;
- case 10:
+ case INPUT_SCROLL_LEFT:
PlaySE(SE_SELECT);
- sPSSData->newCurrBoxId = StorageGetCurrentBox() - 1;
- if (sPSSData->newCurrBoxId < 0)
- sPSSData->newCurrBoxId = TOTAL_BOXES_COUNT - 1;
- if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ sStorage->newCurrBoxId = StorageGetCurrentBox() - 1;
+ if (sStorage->newCurrBoxId < 0)
+ sStorage->newCurrBoxId = TOTAL_BOXES_COUNT - 1;
+ if (sStorage->boxOption != OPTION_MOVE_ITEMS)
{
- SetUpScrollToBox(sPSSData->newCurrBoxId);
- sPSSData->state = 2;
+ SetUpScrollToBox(sStorage->newCurrBoxId);
+ sStorage->state = MSTATE_SCROLL_BOX;
}
else
{
- sub_80CFEA8();
- sPSSData->state = 10;
+ TryHideItemAtCursor();
+ sStorage->state = MSTATE_SCROLL_BOX_ITEM;
}
break;
- case 11:
- if (!CanMovePartyMon())
+ case INPUT_DEPOSIT:
+ if (!IsRemovingLastPartyMon())
{
- if (ItemIsMail(sPSSData->cursorMonItem))
+ if (ItemIsMail(sStorage->displayMonItemId))
{
- sPSSData->state = 5;
+ sStorage->state = MSTATE_ERROR_HAS_MAIL;
}
else
{
PlaySE(SE_SELECT);
- SetPSSCallback(Cb_DepositMenu);
+ SetPokeStorageTask(Task_DepositMenu);
}
}
else
{
- sPSSData->state = 4;
+ sStorage->state = MSTATE_ERROR_LAST_PARTY_MON;
}
break;
- case 13:
- if (CanMovePartyMon())
+ case INPUT_MOVE_MON:
+ if (IsRemovingLastPartyMon())
{
- sPSSData->state = 4;
+ sStorage->state = MSTATE_ERROR_LAST_PARTY_MON;
}
else
{
PlaySE(SE_SELECT);
- SetPSSCallback(Cb_MoveMon);
+ SetPokeStorageTask(Task_MoveMon);
}
break;
- case 14:
+ case INPUT_SHIFT_MON:
if (!CanShiftMon())
{
- sPSSData->state = 4;
+ sStorage->state = MSTATE_ERROR_LAST_PARTY_MON;
}
else
{
PlaySE(SE_SELECT);
- SetPSSCallback(Cb_ShiftMon);
+ SetPokeStorageTask(Task_ShiftMon);
}
break;
- case 12:
+ case INPUT_WITHDRAW:
PlaySE(SE_SELECT);
- SetPSSCallback(Cb_WithdrawMon);
+ SetPokeStorageTask(Task_WithdrawMon);
break;
- case 15:
+ case INPUT_PLACE_MON:
PlaySE(SE_SELECT);
- SetPSSCallback(Cb_PlaceMon);
+ SetPokeStorageTask(Task_PlaceMon);
break;
- case 16:
+ case INPUT_TAKE_ITEM:
PlaySE(SE_SELECT);
- SetPSSCallback(Cb_TakeItemForMoving);
+ SetPokeStorageTask(Task_TakeItemForMoving);
break;
- case 17:
+ case INPUT_GIVE_ITEM:
PlaySE(SE_SELECT);
- SetPSSCallback(Cb_GiveMovingItemToMon);
+ SetPokeStorageTask(Task_GiveMovingItemToMon);
break;
- case 18:
+ case INPUT_SWITCH_ITEMS:
PlaySE(SE_SELECT);
- SetPSSCallback(Cb_SwitchSelectedItem);
+ SetPokeStorageTask(Task_SwitchSelectedItem);
break;
- case 20:
+ case INPUT_MULTIMOVE_START:
PlaySE(SE_SELECT);
- sub_80D01D0(0);
- sPSSData->state = 7;
+ MultiMove_SetFunction(MULTIMOVE_START);
+ sStorage->state = MSTATE_MULTIMOVE_RUN;
break;
- case 22:
- sub_80D01D0(1);
- sPSSData->state = 8;
+ case INPUT_MULTIMOVE_SINGLE:
+ MultiMove_SetFunction(MULTIMOVE_CANCEL);
+ sStorage->state = MSTATE_MULTIMOVE_RUN_CANCEL;
break;
- case 21:
+ case INPUT_MULTIMOVE_CHANGE_SELECTION:
PlaySE(SE_SELECT);
- sub_80D01D0(2);
- sPSSData->state = 9;
+ MultiMove_SetFunction(MULTIMOVE_CHANGE_SELECTION);
+ sStorage->state = MSTATE_MULTIMOVE_RUN_MOVED;
break;
- case 23:
- sub_80D01D0(3);
- sPSSData->state = 7;
+ case INPUT_MULTIMOVE_GRAB_SELECTION:
+ MultiMove_SetFunction(MULTIMOVE_GRAB_SELECTION);
+ sStorage->state = MSTATE_MULTIMOVE_RUN;
break;
- case 25:
+ case INPUT_MULTIMOVE_MOVE_MONS:
PlaySE(SE_SELECT);
- sub_80D01D0(4);
- sPSSData->state = 9;
+ MultiMove_SetFunction(MULTIMOVE_MOVE_MONS);
+ sStorage->state = MSTATE_MULTIMOVE_RUN_MOVED;
break;
- case 26:
+ case INPUT_MULTIMOVE_PLACE_MONS:
PlaySE(SE_SELECT);
- sub_80D01D0(5);
- sPSSData->state = 7;
+ MultiMove_SetFunction(MULTIMOVE_PLACE_MONS);
+ sStorage->state = MSTATE_MULTIMOVE_RUN;
break;
- case 24:
+ case INPUT_MULTIMOVE_UNABLE:
+ // When selecting/moving multiple Pokémon the
+ // cursor may not wrap around the edges.
PlaySE(SE_FAILURE);
break;
}
break;
- case 1:
- if (!sub_80CD554())
+ case MSTATE_MOVE_CURSOR:
+ if (!UpdateCursorPos())
{
if (IsCursorOnCloseBox())
- sub_80CA9C0();
+ StartFlashingCloseBoxButton();
else
- sub_80CA9EC();
+ StopFlashingCloseBoxButton();
- if (sPSSData->setMosaic)
- BoxSetMosaic();
- sPSSData->state = 0;
+ if (sStorage->setMosaic)
+ StartDisplayMonMosaicEffect();
+ sStorage->state = MSTATE_HANDLE_INPUT;
}
break;
- case 2:
+ case MSTATE_SCROLL_BOX:
if (!ScrollToBox())
{
- SetCurrentBox(sPSSData->newCurrBoxId);
+ SetCurrentBox(sStorage->newCurrBoxId);
if (!sInPartyMenu && !IsMonBeingMoved())
{
- sub_80CE00C();
- BoxSetMosaic();
+ RefreshDisplayMon();
+ StartDisplayMonMosaicEffect();
}
- if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
+ if (sStorage->boxOption == OPTION_MOVE_ITEMS)
{
- sub_80CFECC();
- sPSSData->state = 11;
+ TryShowItemAtCursor();
+ sStorage->state = MSTATE_WAIT_ITEM_ANIM;
}
else
{
- sPSSData->state = 0;
+ sStorage->state = MSTATE_HANDLE_INPUT;
}
}
break;
- case 3:
+ case MSTATE_WAIT_MSG:
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
- sPSSData->state = 0;
+ sStorage->state = MSTATE_HANDLE_INPUT;
}
break;
- case 4:
+ case MSTATE_ERROR_LAST_PARTY_MON:
PlaySE(SE_FAILURE);
- PrintStorageActionText(PC_TEXT_LAST_POKE);
- sPSSData->state = 6;
+ PrintMessage(MSG_LAST_POKE);
+ sStorage->state = MSTATE_WAIT_ERROR_MSG;
break;
- case 5:
+ case MSTATE_ERROR_HAS_MAIL:
PlaySE(SE_FAILURE);
- PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL);
- sPSSData->state = 6;
+ PrintMessage(MSG_PLEASE_REMOVE_MAIL);
+ sStorage->state = MSTATE_WAIT_ERROR_MSG;
break;
- case 6:
+ case MSTATE_WAIT_ERROR_MSG:
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
}
break;
- case 7:
- if (!sub_80D01E4())
- sPSSData->state = 0;
+ case MSTATE_MULTIMOVE_RUN:
+ if (!MultiMove_RunFunction())
+ sStorage->state = MSTATE_HANDLE_INPUT;
break;
- case 8:
- if (!sub_80D01E4())
- SetPSSCallback(Cb_MoveMon);
+ case MSTATE_MULTIMOVE_RUN_CANCEL:
+ // Began a multiple Pokémon selection but
+ // ended up selecting a single Pokémon.
+ // Wait for multi move to cancel, then
+ // do a normal move.
+ if (!MultiMove_RunFunction())
+ SetPokeStorageTask(Task_MoveMon);
break;
- case 9:
- if (!sub_80D01E4())
+ case MSTATE_MULTIMOVE_RUN_MOVED:
+ if (!MultiMove_RunFunction())
{
- if (sPSSData->setMosaic)
- BoxSetMosaic();
- sPSSData->state = 0;
+ if (sStorage->setMosaic)
+ StartDisplayMonMosaicEffect();
+ sStorage->state = MSTATE_HANDLE_INPUT;
}
break;
- case 10:
- if (!sub_80D1218())
+ case MSTATE_SCROLL_BOX_ITEM:
+ if (!IsItemIconAnimActive())
{
- SetUpScrollToBox(sPSSData->newCurrBoxId);
- sPSSData->state = 2;
+ SetUpScrollToBox(sStorage->newCurrBoxId);
+ sStorage->state = MSTATE_SCROLL_BOX;
}
break;
- case 11:
- if (!sub_80D1218())
- sPSSData->state = 0;
+ case MSTATE_WAIT_ITEM_ANIM:
+ if (!IsItemIconAnimActive())
+ sStorage->state = MSTATE_HANDLE_INPUT;
break;
}
}
-static void Cb_ShowPartyPokemon(u8 taskId)
+static void Task_ShowPartyPokemon(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
SetUpDoShowPartyMenu();
- sPSSData->state++;
+ sStorage->state++;
break;
case 1:
if (!DoShowPartyMenu())
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
break;
}
}
-static void Cb_HidePartyPokemon(u8 taskId)
+static void Task_HidePartyPokemon(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
PlaySE(SE_SELECT);
SetUpHidePartyMenu();
- sPSSData->state++;
+ sStorage->state++;
break;
case 1:
if (!HidePartyMenu())
{
- sub_80CDBF8(sub_80CDC2C());
- sPSSData->state++;
+ SetCursorBoxPosition(GetSavedCursorPos());
+ sStorage->state++;
}
break;
case 2:
- if (!sub_80CD554())
+ if (!UpdateCursorPos())
{
- if (sPSSData->setMosaic)
- BoxSetMosaic();
- SetPSSCallback(Cb_MainPSS);
+ if (sStorage->setMosaic)
+ StartDisplayMonMosaicEffect();
+ SetPokeStorageTask(Task_PokeStorageMain);
}
break;
}
}
-static void Cb_OnSelectedMon(u8 taskId)
+static void Task_OnSelectedMon(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
- if (!sub_80CA2B8())
+ if (!IsDisplayMosaicActive())
{
PlaySE(SE_SELECT);
- if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
- PrintStorageActionText(PC_TEXT_IS_SELECTED);
- else if (IsActiveItemMoving() || sPSSData->cursorMonItem != 0)
- PrintStorageActionText(PC_TEXT_IS_SELECTED2);
+ if (sStorage->boxOption != OPTION_MOVE_ITEMS)
+ PrintMessage(MSG_IS_SELECTED);
+ else if (IsMovingItem() || sStorage->displayMonItemId != ITEM_NONE)
+ PrintMessage(MSG_IS_SELECTED2);
else
- PrintStorageActionText(PC_TEXT_GIVE_TO_MON);
+ PrintMessage(MSG_GIVE_TO_MON);
AddMenu();
- sPSSData->state = 1;
+ sStorage->state = 1;
}
break;
- case 1: // debug?
- if (!sub_80D00A8())
- sPSSData->state = 2;
+ case 1:
+ if (!IsMenuLoading())
+ sStorage->state = 2;
break;
case 2:
- switch (sub_80D00AC())
+ switch (HandleMenuInput())
{
- case -1:
- case 0:
+ case MENU_B_PRESSED:
+ case MENU_CANCEL:
ClearBottomWindow();
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
break;
- case 3:
- if (CanMovePartyMon())
+ case MENU_MOVE:
+ if (IsRemovingLastPartyMon())
{
- sPSSData->state = 3;
+ sStorage->state = 3;
}
else
{
PlaySE(SE_SELECT);
ClearBottomWindow();
- SetPSSCallback(Cb_MoveMon);
+ SetPokeStorageTask(Task_MoveMon);
}
break;
- case 5:
+ case MENU_PLACE:
PlaySE(SE_SELECT);
ClearBottomWindow();
- SetPSSCallback(Cb_PlaceMon);
+ SetPokeStorageTask(Task_PlaceMon);
break;
- case 4:
+ case MENU_SHIFT:
if (!CanShiftMon())
{
- sPSSData->state = 3;
+ sStorage->state = 3;
}
else
{
PlaySE(SE_SELECT);
ClearBottomWindow();
- SetPSSCallback(Cb_ShiftMon);
+ SetPokeStorageTask(Task_ShiftMon);
}
break;
- case 2:
+ case MENU_WITHDRAW:
PlaySE(SE_SELECT);
ClearBottomWindow();
- SetPSSCallback(Cb_WithdrawMon);
+ SetPokeStorageTask(Task_WithdrawMon);
break;
- case 1:
- if (CanMovePartyMon())
+ case MENU_STORE:
+ if (IsRemovingLastPartyMon())
{
- sPSSData->state = 3;
+ sStorage->state = 3;
}
- else if (ItemIsMail(sPSSData->cursorMonItem))
+ else if (ItemIsMail(sStorage->displayMonItemId))
{
- sPSSData->state = 4;
+ sStorage->state = 4;
}
else
{
PlaySE(SE_SELECT);
ClearBottomWindow();
- SetPSSCallback(Cb_DepositMenu);
+ SetPokeStorageTask(Task_DepositMenu);
}
break;
- case 7:
- if (CanMovePartyMon())
+ case MENU_RELEASE:
+ if (IsRemovingLastPartyMon())
{
- sPSSData->state = 3;
+ sStorage->state = 3;
}
- else if (sPSSData->cursorMonIsEgg)
+ else if (sStorage->displayMonIsEgg)
{
- sPSSData->state = 5; // Cannot release an Egg.
+ sStorage->state = 5; // Cannot release an Egg.
}
- else if (ItemIsMail(sPSSData->cursorMonItem))
+ else if (ItemIsMail(sStorage->displayMonItemId))
{
- sPSSData->state = 4;
+ sStorage->state = 4;
}
else
{
PlaySE(SE_SELECT);
- SetPSSCallback(Cb_ReleaseMon);
+ SetPokeStorageTask(Task_ReleaseMon);
}
break;
- case 6:
+ case MENU_SUMMARY:
PlaySE(SE_SELECT);
- SetPSSCallback(Cb_ShowMonSummary);
+ SetPokeStorageTask(Task_ShowMonSummary);
break;
- case 8:
+ case MENU_MARK:
PlaySE(SE_SELECT);
- SetPSSCallback(Cb_ShowMarkMenu);
+ SetPokeStorageTask(Task_ShowMarkMenu);
break;
- case 12:
+ case MENU_TAKE:
PlaySE(SE_SELECT);
- SetPSSCallback(Cb_TakeItemForMoving);
+ SetPokeStorageTask(Task_TakeItemForMoving);
break;
- case 13:
+ case MENU_GIVE:
PlaySE(SE_SELECT);
- SetPSSCallback(Cb_GiveMovingItemToMon);
+ SetPokeStorageTask(Task_GiveMovingItemToMon);
break;
- case 16:
- SetPSSCallback(Cb_ItemToBag);
+ case MENU_BAG:
+ SetPokeStorageTask(Task_ItemToBag);
break;
- case 15:
+ case MENU_SWITCH:
PlaySE(SE_SELECT);
- SetPSSCallback(Cb_SwitchSelectedItem);
+ SetPokeStorageTask(Task_SwitchSelectedItem);
break;
- case 14:
+ case MENU_GIVE_2:
PlaySE(SE_SELECT);
- SetPSSCallback(Cb_GiveItemFromBag);
+ SetPokeStorageTask(Task_GiveItemFromBag);
break;
- case 17:
- SetPSSCallback(Cb_ShowItemInfo);
+ case MENU_INFO:
+ SetPokeStorageTask(Task_ShowItemInfo);
break;
}
break;
case 3:
PlaySE(SE_FAILURE);
- PrintStorageActionText(PC_TEXT_LAST_POKE);
- sPSSData->state = 6;
+ PrintMessage(MSG_LAST_POKE);
+ sStorage->state = 6;
break;
case 5:
PlaySE(SE_FAILURE);
- PrintStorageActionText(PC_TEXT_CANT_RELEASE_EGG);
- sPSSData->state = 6;
+ PrintMessage(MSG_CANT_RELEASE_EGG);
+ sStorage->state = 6;
break;
case 4:
PlaySE(SE_FAILURE);
- PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL);
- sPSSData->state = 6;
+ PrintMessage(MSG_PLEASE_REMOVE_MAIL);
+ sStorage->state = 6;
break;
case 6:
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
}
break;
}
}
-static void Cb_MoveMon(u8 taskId)
+static void Task_MoveMon(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
- InitMonPlaceChange(0);
- sPSSData->state++;
+ InitMonPlaceChange(CHANGE_GRAB);
+ sStorage->state++;
break;
case 1:
if (!DoMonPlaceChange())
{
if (sInPartyMenu)
- SetPSSCallback(Cb_HandleMovingMonFromParty);
+ SetPokeStorageTask(Task_HandleMovingMonFromParty);
else
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
}
break;
}
}
-static void Cb_PlaceMon(u8 taskId)
+static void Task_PlaceMon(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
- InitMonPlaceChange(1);
- sPSSData->state++;
+ InitMonPlaceChange(CHANGE_PLACE);
+ sStorage->state++;
break;
case 1:
if (!DoMonPlaceChange())
{
if (sInPartyMenu)
- SetPSSCallback(Cb_HandleMovingMonFromParty);
+ SetPokeStorageTask(Task_HandleMovingMonFromParty);
else
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
}
break;
}
}
-static void Cb_ShiftMon(u8 taskId)
+static void Task_ShiftMon(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
- InitMonPlaceChange(2);
- sPSSData->state++;
+ InitMonPlaceChange(CHANGE_SHIFT);
+ sStorage->state++;
break;
case 1:
if (!DoMonPlaceChange())
{
- BoxSetMosaic();
- SetPSSCallback(Cb_MainPSS);
+ StartDisplayMonMosaicEffect();
+ SetPokeStorageTask(Task_PokeStorageMain);
}
break;
}
}
-static void Cb_WithdrawMon(u8 taskId)
+static void Task_WithdrawMon(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
if (CalculatePlayerPartyCount() == PARTY_SIZE)
{
- PrintStorageActionText(PC_TEXT_PARTY_FULL);
- sPSSData->state = 1;
+ PrintMessage(MSG_PARTY_FULL);
+ sStorage->state = 1;
}
else
{
- sub_80CDC18();
- InitMonPlaceChange(0);
- sPSSData->state = 2;
+ SaveCursorPos();
+ InitMonPlaceChange(CHANGE_GRAB);
+ sStorage->state = 2;
}
break;
case 1:
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
}
break;
case 2:
@@ -2953,135 +2835,134 @@ static void Cb_WithdrawMon(u8 taskId)
{
SetMovingMonPriority(1);
SetUpDoShowPartyMenu();
- sPSSData->state++;
+ sStorage->state++;
}
break;
case 3:
if (!DoShowPartyMenu())
{
- InitMonPlaceChange(1);
- sPSSData->state++;
+ InitMonPlaceChange(CHANGE_PLACE);
+ sStorage->state++;
}
break;
case 4:
if (!DoMonPlaceChange())
{
- sub_80CAB20();
- sPSSData->state++;
+ UpdatePartySlotColors();
+ sStorage->state++;
}
break;
case 5:
- SetPSSCallback(Cb_HidePartyPokemon);
+ SetPokeStorageTask(Task_HidePartyPokemon);
break;
}
}
-static void Cb_DepositMenu(u8 taskId)
+static void Task_DepositMenu(u8 taskId)
{
u8 boxId;
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
- PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX);
- sub_80C77E8(&sPSSData->field_1E5C, TAG_TILE_A, TAG_PAL_DAC7, 3, FALSE);
- sub_80C78D4(gUnknown_02039D0E);
- sPSSData->state++;
+ PrintMessage(MSG_DEPOSIT_IN_WHICH_BOX);
+ LoadChooseBoxMenuGfx(&sStorage->chooseBoxMenu, GFXTAG_CHOOSE_BOX_MENU, PALTAG_MISC_1, 3, FALSE);
+ CreateChooseBoxMenuSprites(sDepositBoxId);
+ sStorage->state++;
break;
case 1:
- boxId = HandleBoxChooseSelectionInput();
- if (boxId == 200)
- {
- // no box chosen yet
- }
- else if (boxId == 201)
+ boxId = HandleChooseBoxMenuInput();
+ switch (boxId)
{
+ case BOXID_NONE_CHOSEN:
+ break;
+ case BOXID_CANCELED:
ClearBottomWindow();
- sub_80C78E4();
- sub_80C7890();
- SetPSSCallback(Cb_MainPSS);
- }
- else
- {
+ DestroyChooseBoxMenuSprites();
+ FreeChooseBoxMenu();
+ SetPokeStorageTask(Task_PokeStorageMain);
+ break;
+ default:
if (TryStorePartyMonInBox(boxId))
{
- gUnknown_02039D0E = boxId;
+ sDepositBoxId = boxId;
ClearBottomWindow();
- sub_80C78E4();
- sub_80C7890();
- sPSSData->state = 2;
+ DestroyChooseBoxMenuSprites();
+ FreeChooseBoxMenu();
+ sStorage->state = 2;
}
else
{
- PrintStorageActionText(PC_TEXT_BOX_IS_FULL);
- sPSSData->state = 4;
+ PrintMessage(MSG_BOX_IS_FULL);
+ sStorage->state = 4;
}
+ break;
}
break;
case 2:
CompactPartySlots();
- sub_80CB950();
- sPSSData->state++;
+ CompactPartySprites();
+ sStorage->state++;
break;
case 3:
- if (!sub_80CB9BC())
+ if (GetNumPartySpritesCompacting() == 0)
{
- sub_80CE22C();
- BoxSetMosaic();
- sub_80CAB20();
- SetPSSCallback(Cb_MainPSS);
+ ResetSelectionAfterDeposit();
+ StartDisplayMonMosaicEffect();
+ UpdatePartySlotColors();
+ SetPokeStorageTask(Task_PokeStorageMain);
}
break;
case 4:
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
- PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX);
- sPSSData->state = 1;
+ PrintMessage(MSG_DEPOSIT_IN_WHICH_BOX);
+ sStorage->state = 1;
}
break;
}
}
-static void Cb_ReleaseMon(u8 taskId)
+static void Task_ReleaseMon(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
- PrintStorageActionText(PC_TEXT_RELEASE_POKE);
+ PrintMessage(MSG_RELEASE_POKE);
ShowYesNoWindow(1);
- sPSSData->state++;
+ sStorage->state++;
// fallthrough
case 1:
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case MENU_B_PRESSED:
- case 1:
+ case 1: // No
ClearBottomWindow();
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
break;
- case 0:
+ case 0: // Yes
ClearBottomWindow();
- InitCanRelaseMonVars();
- sub_80CE250();
- sPSSData->state++;
+ InitCanReleaseMonVars();
+ InitReleaseMon();
+ sStorage->state++;
break;
}
break;
case 2:
RunCanReleaseMon();
- if (!sub_80CE2A8())
+ if (!TryHideReleaseMon())
{
while (1)
{
- s8 r0 = RunCanReleaseMon();
- if (r0 == 1)
+ s8 canRelease = RunCanReleaseMon();
+ if (canRelease == TRUE)
{
- sPSSData->state++;
+ sStorage->state++;
break;
}
- else if (r0 == 0)
+ else if (!canRelease)
{
- sPSSData->state = 8; // Can't release the mon.
+ sStorage->state = 8;
break;
}
}
@@ -3089,15 +2970,15 @@ static void Cb_ReleaseMon(u8 taskId)
break;
case 3:
ReleaseMon();
- RefreshCursorMonData();
- PrintStorageActionText(PC_TEXT_WAS_RELEASED);
- sPSSData->state++;
+ RefreshDisplayMonData();
+ PrintMessage(MSG_WAS_RELEASED);
+ sStorage->state++;
break;
case 4:
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
- PrintStorageActionText(PC_TEXT_BYE_BYE);
- sPSSData->state++;
+ PrintMessage(MSG_BYE_BYE);
+ sStorage->state++;
}
break;
case 5:
@@ -3107,331 +2988,332 @@ static void Cb_ReleaseMon(u8 taskId)
if (sInPartyMenu)
{
CompactPartySlots();
- sub_80CB950();
- sPSSData->state++;
+ CompactPartySprites();
+ sStorage->state++;
}
else
{
- sPSSData->state = 7;
+ sStorage->state = 7;
}
}
break;
case 6:
- if (!sub_80CB9BC())
+ if (GetNumPartySpritesCompacting() == 0)
{
- sub_80CE00C();
- BoxSetMosaic();
- sub_80CAB20();
- sPSSData->state++;
+ RefreshDisplayMon();
+ StartDisplayMonMosaicEffect();
+ UpdatePartySlotColors();
+ sStorage->state++;
}
break;
case 7:
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
break;
case 8:
- PrintStorageActionText(PC_TEXT_WAS_RELEASED);
- sPSSData->state++;
+ // Start "can't release" sequence
+ PrintMessage(MSG_WAS_RELEASED);
+ sStorage->state++;
break;
case 9:
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
- PrintStorageActionText(PC_TEXT_SURPRISE);
- sPSSData->state++;
+ PrintMessage(MSG_SURPRISE);
+ sStorage->state++;
}
break;
case 10:
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
- sub_80CC064();
- sPSSData->state++;
+ ReshowReleaseMon();
+ sStorage->state++;
}
break;
case 11:
- if (!sub_80CC0A0())
+ if (!ResetReleaseMonSpritePtr())
{
- sub_80CE324();
- PrintStorageActionText(PC_TEXT_CAME_BACK);
- sPSSData->state++;
+ TrySetCursorFistAnim();
+ PrintMessage(MSG_CAME_BACK);
+ sStorage->state++;
}
break;
case 12:
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
- PrintStorageActionText(PC_TEXT_WORRIED);
- sPSSData->state++;
+ PrintMessage(MSG_WORRIED);
+ sStorage->state++;
}
break;
case 13:
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
}
break;
}
}
-static void Cb_ShowMarkMenu(u8 taskId)
+static void Task_ShowMarkMenu(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
- PrintStorageActionText(PC_TEXT_MARK_POKE);
- sPSSData->markMenu.markings = sPSSData->cursorMonMarkings;
- OpenMonMarkingsMenu(sPSSData->cursorMonMarkings, 0xb0, 0x10);
- sPSSData->state++;
+ PrintMessage(MSG_MARK_POKE);
+ sStorage->markMenu.markings = sStorage->displayMonMarkings;
+ OpenMonMarkingsMenu(sStorage->displayMonMarkings, 0xb0, 0x10);
+ sStorage->state++;
break;
case 1:
if (!HandleMonMarkingsMenuInput())
{
FreeMonMarkingsMenu();
ClearBottomWindow();
- SetMonMarkings(sPSSData->markMenu.markings);
- RefreshCursorMonData();
- SetPSSCallback(Cb_MainPSS);
+ SetMonMarkings(sStorage->markMenu.markings);
+ RefreshDisplayMonData();
+ SetPokeStorageTask(Task_PokeStorageMain);
}
break;
}
}
-static void Cb_TakeItemForMoving(u8 taskId)
+static void Task_TakeItemForMoving(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
- if (!ItemIsMail(sPSSData->cursorMonItem))
+ if (!ItemIsMail(sStorage->displayMonItemId))
{
ClearBottomWindow();
- sPSSData->state++;
+ sStorage->state++;
}
else
{
- SetPSSCallback(Cb_PrintCantStoreMail);
+ SetPokeStorageTask(Task_PrintCantStoreMail);
}
break;
case 1:
- sub_80CFE54(2);
- Item_FromMonToMoving((sInPartyMenu != FALSE) ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition());
- sPSSData->state++;
+ StartCursorAnim(CURSOR_ANIM_OPEN);
+ TakeItemFromMon(sInPartyMenu ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetCursorPosition());
+ sStorage->state++;
break;
case 2:
- if (!sub_80D1218())
+ if (!IsItemIconAnimActive())
{
- sub_80CFE54(3);
+ StartCursorAnim(CURSOR_ANIM_FIST);
ClearBottomWindow();
- sub_80CE00C();
- PrintCursorMonInfo();
- sPSSData->state++;
+ RefreshDisplayMon();
+ PrintDisplayMonInfo();
+ sStorage->state++;
}
break;
case 3:
if (!IsDma3ManagerBusyWithBgCopy())
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
break;
}
}
-static void Cb_GiveMovingItemToMon(u8 taskId)
+static void Task_GiveMovingItemToMon(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
ClearBottomWindow();
- sPSSData->state++;
+ sStorage->state++;
break;
case 1:
- sub_80CFE54(2);
- Item_GiveMovingToMon((sInPartyMenu != FALSE) ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition());
- sPSSData->state++;
+ StartCursorAnim(CURSOR_ANIM_OPEN);
+ GiveItemToMon(sInPartyMenu ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetCursorPosition());
+ sStorage->state++;
break;
case 2:
- if (!sub_80D1218())
+ if (!IsItemIconAnimActive())
{
- sub_80CFE54(0);
- sub_80CE00C();
- PrintCursorMonInfo();
- PrintStorageActionText(PC_TEXT_ITEM_IS_HELD);
- sPSSData->state++;
+ StartCursorAnim(CURSOR_ANIM_BOUNCE);
+ RefreshDisplayMon();
+ PrintDisplayMonInfo();
+ PrintMessage(MSG_ITEM_IS_HELD);
+ sStorage->state++;
}
break;
case 3:
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
- sPSSData->state++;
+ sStorage->state++;
}
break;
case 4:
if (!IsDma3ManagerBusyWithBgCopy())
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
break;
}
}
-static void Cb_ItemToBag(u8 taskId)
+static void Task_ItemToBag(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
- if (!AddBagItem(sPSSData->cursorMonItem, 1))
+ if (!AddBagItem(sStorage->displayMonItemId, 1))
{
PlaySE(SE_FAILURE);
- PrintStorageActionText(PC_TEXT_BAG_FULL);
- sPSSData->state = 3;
+ PrintMessage(MSG_BAG_FULL);
+ sStorage->state = 3;
}
else
{
PlaySE(SE_SELECT);
- Item_TakeMons((sInPartyMenu != FALSE) ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition());
- sPSSData->state = 1;
+ MoveItemFromMonToBag(sInPartyMenu ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetCursorPosition());
+ sStorage->state = 1;
}
break;
case 1:
- if (!sub_80D1218())
+ if (!IsItemIconAnimActive())
{
- PrintStorageActionText(PC_TEXT_PLACED_IN_BAG);
- sPSSData->state = 2;
+ PrintMessage(MSG_PLACED_IN_BAG);
+ sStorage->state = 2;
}
break;
case 2:
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
- sub_80CE00C();
- PrintCursorMonInfo();
- sPSSData->state = 4;
+ RefreshDisplayMon();
+ PrintDisplayMonInfo();
+ sStorage->state = 4;
}
break;
case 4:
if (!IsDma3ManagerBusyWithBgCopy())
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
break;
case 3:
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
}
break;
}
}
-static void Cb_SwitchSelectedItem(u8 taskId)
+static void Task_SwitchSelectedItem(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
- if (!ItemIsMail(sPSSData->cursorMonItem))
+ if (!ItemIsMail(sStorage->displayMonItemId))
{
ClearBottomWindow();
- sPSSData->state++;
+ sStorage->state++;
}
else
{
- SetPSSCallback(Cb_PrintCantStoreMail);
+ SetPokeStorageTask(Task_PrintCantStoreMail);
}
break;
case 1:
- sub_80CFE54(2);
- Item_SwitchMonsWithMoving((sInPartyMenu != FALSE) ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition());
- sPSSData->state++;
+ StartCursorAnim(CURSOR_ANIM_OPEN);
+ SwapItemsWithMon(sInPartyMenu ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetCursorPosition());
+ sStorage->state++;
break;
case 2:
- if (!sub_80D1218())
+ if (!IsItemIconAnimActive())
{
- sub_80CFE54(3);
- sub_80CE00C();
- PrintCursorMonInfo();
- PrintStorageActionText(PC_TEXT_CHANGED_TO_ITEM);
- sPSSData->state++;
+ StartCursorAnim(CURSOR_ANIM_FIST);
+ RefreshDisplayMon();
+ PrintDisplayMonInfo();
+ PrintMessage(MSG_CHANGED_TO_ITEM);
+ sStorage->state++;
}
break;
case 3:
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
- sPSSData->state++;
+ sStorage->state++;
}
break;
case 4:
if (!IsDma3ManagerBusyWithBgCopy())
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
break;
}
}
-static void Cb_ShowItemInfo(u8 taskId)
+static void Task_ShowItemInfo(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
ClearBottomWindow();
- sPSSData->state++;
+ sStorage->state++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
{
PlaySE(SE_WIN_OPEN);
PrintItemDescription();
- sub_80D1818();
- sPSSData->state++;
+ InitItemInfoWindow();
+ sStorage->state++;
}
break;
case 2:
- if (!sub_80D184C())
- sPSSData->state++;
+ if (!UpdateItemInfoWindowSlideIn())
+ sStorage->state++;
break;
case 3:
if (!IsDma3ManagerBusyWithBgCopy())
- sPSSData->state++;
+ sStorage->state++;
break;
case 4:
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
PlaySE(SE_WIN_OPEN);
- sPSSData->state++;
+ sStorage->state++;
}
break;
case 5:
- if (!sub_80D18E4())
- sPSSData->state++;
+ if (!UpdateItemInfoWindowSlideOut())
+ sStorage->state++;
break;
case 6:
if (!IsDma3ManagerBusyWithBgCopy())
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
break;
}
}
-static void Cb_CloseBoxWhileHoldingItem(u8 taskId)
+static void Task_CloseBoxWhileHoldingItem(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
PlaySE(SE_SELECT);
- PrintStorageActionText(PC_TEXT_PUT_IN_BAG);
+ PrintMessage(MSG_PUT_IN_BAG);
ShowYesNoWindow(0);
- sPSSData->state = 1;
+ sStorage->state = 1;
break;
case 1:
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case MENU_B_PRESSED:
- case 1:
+ case 1: // No
ClearBottomWindow();
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
break;
- case 0:
- if (AddBagItem(sPSSData->movingItem, 1) == TRUE)
+ case 0:// Yes
+ if (AddBagItem(sStorage->movingItemId, 1) == TRUE)
{
ClearBottomWindow();
- sPSSData->state = 3;
+ sStorage->state = 3;
}
else
{
- PrintStorageActionText(PC_TEXT_BAG_FULL);
- sPSSData->state = 2;
+ PrintMessage(MSG_BAG_FULL);
+ sStorage->state = 2;
}
break;
}
@@ -3440,328 +3322,332 @@ static void Cb_CloseBoxWhileHoldingItem(u8 taskId)
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
- sPSSData->state = 5;
+ sStorage->state = 5;
}
break;
case 3:
- sub_80D1194();
- sPSSData->state = 4;
+ MoveItemFromCursorToBag();
+ sStorage->state = 4;
break;
case 4:
- if (!sub_80D1218())
+ if (!IsItemIconAnimActive())
{
- sub_80CFE54(0);
- SetPSSCallback(Cb_MainPSS);
+ StartCursorAnim(CURSOR_ANIM_BOUNCE);
+ SetPokeStorageTask(Task_PokeStorageMain);
}
break;
case 5:
if (!IsDma3ManagerBusyWithBgCopy())
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
break;
}
}
-static void Cb_HandleMovingMonFromParty(u8 taskId)
+static void Task_HandleMovingMonFromParty(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
CompactPartySlots();
- sub_80CB950();
- sPSSData->state++;
+ CompactPartySprites();
+ sStorage->state++;
break;
case 1:
- if (!sub_80CB9BC())
+ if (GetNumPartySpritesCompacting() == 0)
{
- sub_80CAB20();
- SetPSSCallback(Cb_MainPSS);
+ UpdatePartySlotColors();
+ SetPokeStorageTask(Task_PokeStorageMain);
}
break;
}
}
-static void Cb_PrintCantStoreMail(u8 taskId)
+static void Task_PrintCantStoreMail(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
- PrintStorageActionText(PC_TEXT_CANT_STORE_MAIL);
- sPSSData->state++;
+ PrintMessage(MSG_CANT_STORE_MAIL);
+ sStorage->state++;
break;
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
- sPSSData->state++;
+ sStorage->state++;
break;
case 2:
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
- sPSSData->state++;
+ sStorage->state++;
}
break;
case 3:
if (!IsDma3ManagerBusyWithBgCopy())
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
break;
}
}
-static void Cb_HandleBoxOptions(u8 taskId)
+// Handle options menu that shows when the box title bar is selected
+static void Task_HandleBoxOptions(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
- PrintStorageActionText(PC_TEXT_WHAT_YOU_DO);
+ PrintMessage(MSG_WHAT_YOU_DO);
AddMenu();
- sPSSData->state++;
+ sStorage->state++;
break;
case 1:
- if (sub_80D00A8())
+ if (IsMenuLoading())
return;
- sPSSData->state++;
+ sStorage->state++;
case 2:
- switch (sub_80D00AC())
+ switch (HandleMenuInput())
{
- case -1:
- case 0:
- sub_80CD1A8(TRUE);
+ case MENU_B_PRESSED:
+ case MENU_CANCEL:
+ AnimateBoxScrollArrows(TRUE);
ClearBottomWindow();
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
break;
- case 11:
+ case MENU_NAME:
PlaySE(SE_SELECT);
- SetPSSCallback(Cb_NameBox);
+ SetPokeStorageTask(Task_NameBox);
break;
- case 10:
+ case MENU_WALLPAPER:
PlaySE(SE_SELECT);
ClearBottomWindow();
- SetPSSCallback(Cb_HandleWallpapers);
+ SetPokeStorageTask(Task_HandleWallpapers);
break;
- case 9:
+ case MENU_JUMP:
PlaySE(SE_SELECT);
ClearBottomWindow();
- SetPSSCallback(Cb_JumpBox);
+ SetPokeStorageTask(Task_JumpBox);
break;
}
break;
}
}
-static void Cb_HandleWallpapers(u8 taskId)
+static void Task_HandleWallpapers(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
AddWallpaperSetsMenu();
- PrintStorageActionText(PC_TEXT_PICK_A_THEME);
- sPSSData->state++;
+ PrintMessage(MSG_PICK_A_THEME);
+ sStorage->state++;
break;
case 1:
- if (!sub_80D00A8())
- sPSSData->state++;
+ if (!IsMenuLoading())
+ sStorage->state++;
break;
case 2:
- sPSSData->wallpaperSetId = sub_80D00AC();
- switch (sPSSData->wallpaperSetId)
+ sStorage->wallpaperSetId = HandleMenuInput();
+ switch (sStorage->wallpaperSetId)
{
- case -1:
- sub_80CD1A8(TRUE);
+ case MENU_B_PRESSED:
+ AnimateBoxScrollArrows(TRUE);
ClearBottomWindow();
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
break;
- case 18 ... 21:
+ case MENU_SCENERY_1:
+ case MENU_SCENERY_2:
+ case MENU_SCENERY_3:
+ case MENU_ETCETERA:
PlaySE(SE_SELECT);
- sub_80D013C();
- sPSSData->wallpaperSetId -= 18;
- sPSSData->state++;
+ RemoveMenu();
+ sStorage->wallpaperSetId -= MENU_WALLPAPER_SETS_START;
+ sStorage->state++;
break;
- // New wallpaper from Walda.
- case 22:
+ case MENU_FRIENDS:
+ // New wallpaper from Walda.
PlaySE(SE_SELECT);
- sPSSData->wallpaperId = 16;
- sub_80D013C();
+ sStorage->wallpaperId = WALLPAPER_FRIENDS;
+ RemoveMenu();
ClearBottomWindow();
- sPSSData->state = 6;
+ sStorage->state = 6;
break;
}
break;
case 3:
if (!IsDma3ManagerBusyWithBgCopy())
{
- AddWallpapersMenu(sPSSData->wallpaperSetId);
- PrintStorageActionText(PC_TEXT_PICK_A_WALLPAPER);
- sPSSData->state++;
+ AddWallpapersMenu(sStorage->wallpaperSetId);
+ PrintMessage(MSG_PICK_A_WALLPAPER);
+ sStorage->state++;
}
break;
case 4:
- sPSSData->wallpaperId = sub_80D00AC();
- switch (sPSSData->wallpaperId)
+ sStorage->wallpaperId = HandleMenuInput();
+ switch (sStorage->wallpaperId)
{
- case -2:
+ case MENU_NOTHING_CHOSEN:
break;
- case -1:
+ case MENU_B_PRESSED:
ClearBottomWindow();
- sPSSData->state = 0;
+ sStorage->state = 0;
break;
default:
PlaySE(SE_SELECT);
ClearBottomWindow();
- sPSSData->wallpaperId -= 23;
- SetWallpaperForCurrentBox(sPSSData->wallpaperId);
- sPSSData->state++;
+ sStorage->wallpaperId -= MENU_WALLPAPERS_START;
+ SetWallpaperForCurrentBox(sStorage->wallpaperId);
+ sStorage->state++;
break;
}
break;
case 5:
if (!DoWallpaperGfxChange())
{
- sub_80CD1A8(TRUE);
- SetPSSCallback(Cb_MainPSS);
+ AnimateBoxScrollArrows(TRUE);
+ SetPokeStorageTask(Task_PokeStorageMain);
}
break;
case 6:
if (!IsDma3ManagerBusyWithBgCopy())
{
- SetWallpaperForCurrentBox(sPSSData->wallpaperId);
- sPSSData->state = 5;
+ SetWallpaperForCurrentBox(sStorage->wallpaperId);
+ sStorage->state = 5;
}
break;
}
}
-static void Cb_JumpBox(u8 taskId)
+static void Task_JumpBox(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
- PrintStorageActionText(PC_TEXT_JUMP_TO_WHICH_BOX);
- sub_80C77E8(&sPSSData->field_1E5C, TAG_TILE_A, TAG_PAL_DAC7, 3, FALSE);
- sub_80C78D4(StorageGetCurrentBox());
- sPSSData->state++;
+ PrintMessage(MSG_JUMP_TO_WHICH_BOX);
+ LoadChooseBoxMenuGfx(&sStorage->chooseBoxMenu, GFXTAG_CHOOSE_BOX_MENU, PALTAG_MISC_1, 3, FALSE);
+ CreateChooseBoxMenuSprites(StorageGetCurrentBox());
+ sStorage->state++;
break;
case 1:
- sPSSData->newCurrBoxId = HandleBoxChooseSelectionInput();
- switch (sPSSData->newCurrBoxId)
+ sStorage->newCurrBoxId = HandleChooseBoxMenuInput();
+ switch (sStorage->newCurrBoxId)
{
- case 200:
+ case BOXID_NONE_CHOSEN:
break;
default:
ClearBottomWindow();
- sub_80C78E4();
- sub_80C7890();
- if (sPSSData->newCurrBoxId == 201 || sPSSData->newCurrBoxId == StorageGetCurrentBox())
+ DestroyChooseBoxMenuSprites();
+ FreeChooseBoxMenu();
+ if (sStorage->newCurrBoxId == BOXID_CANCELED || sStorage->newCurrBoxId == StorageGetCurrentBox())
{
- sub_80CD1A8(TRUE);
- SetPSSCallback(Cb_MainPSS);
+ AnimateBoxScrollArrows(TRUE);
+ SetPokeStorageTask(Task_PokeStorageMain);
}
else
{
- sPSSData->state++;
+ sStorage->state++;
}
break;
}
break;
case 2:
- SetUpScrollToBox(sPSSData->newCurrBoxId);
- sPSSData->state++;
+ SetUpScrollToBox(sStorage->newCurrBoxId);
+ sStorage->state++;
break;
case 3:
if (!ScrollToBox())
{
- SetCurrentBox(sPSSData->newCurrBoxId);
- SetPSSCallback(Cb_MainPSS);
+ SetCurrentBox(sStorage->newCurrBoxId);
+ SetPokeStorageTask(Task_PokeStorageMain);
}
break;
}
}
-static void Cb_NameBox(u8 taskId)
+static void Task_NameBox(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
- sub_80CE760();
+ SaveMovingMon();
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
- sPSSData->state++;
+ sStorage->state++;
break;
case 1:
if (!UpdatePaletteFade())
{
- sWhichToReshow = 1;
- sPSSData->screenChangeType = SCREEN_CHANGE_NAME_BOX;
- SetPSSCallback(Cb_ChangeScreen);
+ sWhichToReshow = SCREEN_CHANGE_NAME_BOX - 1;
+ sStorage->screenChangeType = SCREEN_CHANGE_NAME_BOX;
+ SetPokeStorageTask(Task_ChangeScreen);
}
break;
}
}
-static void Cb_ShowMonSummary(u8 taskId)
+static void Task_ShowMonSummary(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
- sub_80CE7E8();
+ InitSummaryScreenData();
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
- sPSSData->state++;
+ sStorage->state++;
break;
case 1:
if (!UpdatePaletteFade())
{
- sWhichToReshow = 0;
- sPSSData->screenChangeType = SCREEN_CHANGE_SUMMARY_SCREEN;
- SetPSSCallback(Cb_ChangeScreen);
+ sWhichToReshow = SCREEN_CHANGE_SUMMARY_SCREEN - 1;
+ sStorage->screenChangeType = SCREEN_CHANGE_SUMMARY_SCREEN;
+ SetPokeStorageTask(Task_ChangeScreen);
}
break;
}
}
-static void Cb_GiveItemFromBag(u8 taskId)
+static void Task_GiveItemFromBag(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
- sPSSData->state++;
+ sStorage->state++;
break;
case 1:
if (!UpdatePaletteFade())
{
- sWhichToReshow = 2;
- sPSSData->screenChangeType = SCREEN_CHANGE_ITEM_FROM_BAG;
- SetPSSCallback(Cb_ChangeScreen);
+ sWhichToReshow = SCREEN_CHANGE_ITEM_FROM_BAG - 1;
+ sStorage->screenChangeType = SCREEN_CHANGE_ITEM_FROM_BAG;
+ SetPokeStorageTask(Task_ChangeScreen);
}
break;
}
}
-static void Cb_OnCloseBoxPressed(u8 taskId)
+static void Task_OnCloseBoxPressed(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
if (IsMonBeingMoved())
{
PlaySE(SE_FAILURE);
- PrintStorageActionText(PC_TEXT_HOLDING_POKE);
- sPSSData->state = 1;
+ PrintMessage(MSG_HOLDING_POKE);
+ sStorage->state = 1;
}
- else if (IsActiveItemMoving())
+ else if (IsMovingItem())
{
- SetPSSCallback(Cb_CloseBoxWhileHoldingItem);
+ SetPokeStorageTask(Task_CloseBoxWhileHoldingItem);
}
else
{
PlaySE(SE_SELECT);
- PrintStorageActionText(PC_TEXT_EXIT_BOX);
+ PrintMessage(MSG_EXIT_BOX);
ShowYesNoWindow(0);
- sPSSData->state = 2;
+ sStorage->state = 2;
}
break;
case 1:
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
}
break;
case 2:
@@ -3770,59 +3656,59 @@ static void Cb_OnCloseBoxPressed(u8 taskId)
case MENU_B_PRESSED:
case 1:
ClearBottomWindow();
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
break;
case 0:
PlaySE(SE_PC_OFF);
ClearBottomWindow();
- sPSSData->state++;
+ sStorage->state++;
break;
}
break;
case 3:
ComputerScreenCloseEffect(20, 0, 1);
- sPSSData->state++;
+ sStorage->state++;
break;
case 4:
if (!IsComputerScreenCloseEffectActive())
{
- sub_80CABE0();
+ UpdateBoxToSendMons();
gPlayerPartyCount = CalculatePlayerPartyCount();
- sPSSData->screenChangeType = SCREEN_CHANGE_EXIT_BOX;
- SetPSSCallback(Cb_ChangeScreen);
+ sStorage->screenChangeType = SCREEN_CHANGE_EXIT_BOX;
+ SetPokeStorageTask(Task_ChangeScreen);
}
break;
}
}
-static void Cb_OnBPressed(u8 taskId)
+static void Task_OnBPressed(u8 taskId)
{
- switch (sPSSData->state)
+ switch (sStorage->state)
{
case 0:
if (IsMonBeingMoved())
{
PlaySE(SE_FAILURE);
- PrintStorageActionText(PC_TEXT_HOLDING_POKE);
- sPSSData->state = 1;
+ PrintMessage(MSG_HOLDING_POKE);
+ sStorage->state = 1;
}
- else if (IsActiveItemMoving())
+ else if (IsMovingItem())
{
- SetPSSCallback(Cb_CloseBoxWhileHoldingItem);
+ SetPokeStorageTask(Task_CloseBoxWhileHoldingItem);
}
else
{
PlaySE(SE_SELECT);
- PrintStorageActionText(PC_TEXT_CONTINUE_BOX);
+ PrintMessage(MSG_CONTINUE_BOX);
ShowYesNoWindow(0);
- sPSSData->state = 2;
+ sStorage->state = 2;
}
break;
case 1:
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
}
break;
case 2:
@@ -3830,40 +3716,40 @@ static void Cb_OnBPressed(u8 taskId)
{
case 0:
ClearBottomWindow();
- SetPSSCallback(Cb_MainPSS);
+ SetPokeStorageTask(Task_PokeStorageMain);
break;
case 1:
case MENU_B_PRESSED:
PlaySE(SE_PC_OFF);
ClearBottomWindow();
- sPSSData->state++;
+ sStorage->state++;
break;
}
break;
case 3:
ComputerScreenCloseEffect(20, 0, 0);
- sPSSData->state++;
+ sStorage->state++;
break;
case 4:
if (!IsComputerScreenCloseEffectActive())
{
- sub_80CABE0();
+ UpdateBoxToSendMons();
gPlayerPartyCount = CalculatePlayerPartyCount();
- sPSSData->screenChangeType = SCREEN_CHANGE_EXIT_BOX;
- SetPSSCallback(Cb_ChangeScreen);
+ sStorage->screenChangeType = SCREEN_CHANGE_EXIT_BOX;
+ SetPokeStorageTask(Task_ChangeScreen);
}
break;
}
}
-static void Cb_ChangeScreen(u8 taskId)
+static void Task_ChangeScreen(u8 taskId)
{
struct BoxPokemon *boxMons;
u8 mode, monIndex, maxMonIndex;
- u8 screenChangeType = sPSSData->screenChangeType;
+ u8 screenChangeType = sStorage->screenChangeType;
- if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS && IsActiveItemMoving() == TRUE)
- sMovingItemId = GetMovingItem();
+ if (sStorage->boxOption == OPTION_MOVE_ITEMS && IsMovingItem() == TRUE)
+ sMovingItemId = GetMovingItemId();
else
sMovingItemId = ITEM_NONE;
@@ -3871,27 +3757,27 @@ static void Cb_ChangeScreen(u8 taskId)
{
case SCREEN_CHANGE_EXIT_BOX:
default:
- FreePSSData();
- SetMainCallback2(Cb2_ExitPSS);
+ FreePokeStorageData();
+ SetMainCallback2(CB2_ExitPokeStorage);
break;
case SCREEN_CHANGE_SUMMARY_SCREEN:
- boxMons = sPSSData->field_218C.box;
- monIndex = sPSSData->field_2187;
- maxMonIndex = sPSSData->field_2186;
- mode = sPSSData->pokemonSummaryScreenMode;
- FreePSSData();
- if (mode == PSS_MODE_NORMAL && boxMons == &gUnknown_02039D14.box)
- ShowPokemonSummaryScreenSet40EF(mode, boxMons, monIndex, maxMonIndex, Cb2_ReturnToPSS);
+ boxMons = sStorage->summaryMon.box;
+ monIndex = sStorage->summaryStartPos;
+ maxMonIndex = sStorage->summaryMaxPos;
+ mode = sStorage->summaryScreenMode;
+ FreePokeStorageData();
+ if (mode == SUMMARY_MODE_NORMAL && boxMons == &sSavedMovingMon.box)
+ ShowPokemonSummaryScreenSet40EF(mode, boxMons, monIndex, maxMonIndex, CB2_ReturnToPokeStorage);
else
- ShowPokemonSummaryScreen(mode, boxMons, monIndex, maxMonIndex, Cb2_ReturnToPSS);
+ ShowPokemonSummaryScreen(mode, boxMons, monIndex, maxMonIndex, CB2_ReturnToPokeStorage);
break;
case SCREEN_CHANGE_NAME_BOX:
- FreePSSData();
- DoNamingScreen(NAMING_SCREEN_BOX, GetBoxNamePtr(StorageGetCurrentBox()), 0, 0, 0, Cb2_ReturnToPSS);
+ FreePokeStorageData();
+ DoNamingScreen(NAMING_SCREEN_BOX, GetBoxNamePtr(StorageGetCurrentBox()), 0, 0, 0, CB2_ReturnToPokeStorage);
break;
case SCREEN_CHANGE_ITEM_FROM_BAG:
- FreePSSData();
- GoToBagMenu(ITEMMENULOCATION_PCBOX, 0, Cb2_ReturnToPSS);
+ FreePokeStorageData();
+ GoToBagMenu(ITEMMENULOCATION_PCBOX, 0, CB2_ReturnToPokeStorage);
break;
}
@@ -3900,34 +3786,43 @@ static void Cb_ChangeScreen(u8 taskId)
static void GiveChosenBagItem(void)
{
- u16 item = gSpecialVar_ItemId;
+ u16 itemId = gSpecialVar_ItemId;
- if (item != 0)
+ if (itemId != ITEM_NONE)
{
- u8 id = GetBoxCursorPosition();
-
+ u8 pos = GetCursorPosition();
if (sInPartyMenu)
- SetMonData(&gPlayerParty[id], MON_DATA_HELD_ITEM, &item);
+ SetMonData(&gPlayerParty[pos], MON_DATA_HELD_ITEM, &itemId);
else
- SetCurrentBoxMonData(id, MON_DATA_HELD_ITEM, &item);
+ SetCurrentBoxMonData(pos, MON_DATA_HELD_ITEM, &itemId);
- RemoveBagItem(item, 1);
+ RemoveBagItem(itemId, 1);
}
}
-static void FreePSSData(void)
+static void FreePokeStorageData(void)
{
- sub_80D25F0();
- sub_80D01B8();
- FREE_AND_SET_NULL(sPSSData);
+ TilemapUtil_Free();
+ MultiMove_Free();
+ FREE_AND_SET_NULL(sStorage);
FreeAllWindowBuffers();
}
+
+//------------------------------------------------------------------------------
+// SECTION: Misc
+//
+// No real uniform section below. Misc functions including more initialization,
+// showing/hiding the party menu, updating the Close Box button, printing
+// messages, doing the mosaic effect when transitioning between Pokémon, etc.
+//------------------------------------------------------------------------------
+
+
static void SetScrollingBackground(void)
{
SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(3) | BGCNT_16COLOR | BGCNT_SCREENBASE(31));
- DecompressAndLoadBgGfxUsingHeap(3, gPokemonStorageScrollingBGTileset, 0, 0, 0);
- LZ77UnCompVram(gPokemonStorageScrollingBGTilemap, (void *)BG_SCREEN_ADDR(31));
+ DecompressAndLoadBgGfxUsingHeap(3, sScrollingBg_Gfx, 0, 0, 0);
+ LZ77UnCompVram(sScrollingBg_Tilemap, (void *)BG_SCREEN_ADDR(31));
}
static void ScrollBackground(void)
@@ -3936,19 +3831,19 @@ static void ScrollBackground(void)
ChangeBgY(3, 128, 2);
}
-static void LoadPSSMenuGfx(void)
+static void LoadPokeStorageMenuGfx(void)
{
- InitBgsFromTemplates(0, gUnknown_08572734, ARRAY_COUNT(gUnknown_08572734));
- DecompressAndLoadBgGfxUsingHeap(1, gPSSMenu_Gfx, 0, 0, 0);
- LZ77UnCompWram(gUnknown_085722A0, sPSSData->field_5AC4);
- SetBgTilemapBuffer(1, sPSSData->field_5AC4);
+ InitBgsFromTemplates(0, sBgTemplates, ARRAY_COUNT(sBgTemplates));
+ DecompressAndLoadBgGfxUsingHeap(1, gStorageSystemMenu_Gfx, 0, 0, 0);
+ LZ77UnCompWram(sDisplayMenu_Tilemap, sStorage->displayMenuTilemapBuffer);
+ SetBgTilemapBuffer(1, sStorage->displayMenuTilemapBuffer);
ShowBg(1);
ScheduleBgCopyTilemapToVram(1);
}
-static bool8 InitPSSWindows(void)
+static bool8 InitPokeStorageWindows(void)
{
- if (!InitWindows(gUnknown_08572714))
+ if (!InitWindows(sWindowTemplates))
{
return FALSE;
}
@@ -3964,73 +3859,73 @@ static void LoadWaveformSpritePalette(void)
LoadSpritePalette(&gWaveformSpritePalette);
}
-static void sub_80CA0D8(void)
+static void InitPalettesAndSprites(void)
{
- LoadPalette(gUnknown_085723DC, 0, 0x20);
- LoadPalette(gUnknown_085723FC, 0x20, 0x20);
- LoadPalette(gUnknown_085726F4, 0xF0, 0x20);
- if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
- LoadPalette(gUnknown_0857241C, 0x30, 0x20);
+ LoadPalette(sInterface_Pal, 0, sizeof(sInterface_Pal));
+ LoadPalette(sPkmnDataGray_Pal, 0x20, sizeof(sPkmnDataGray_Pal));
+ LoadPalette(sUnknown_Pal, 0xF0, sizeof(sUnknown_Pal));
+ if (sStorage->boxOption != OPTION_MOVE_ITEMS)
+ LoadPalette(sBg_Pal, 0x30, sizeof(sBg_Pal));
else
- LoadPalette(gUnknown_0857243C, 0x30, 0x20);
+ LoadPalette(sBgMoveItems_Pal, 0x30, sizeof(sBgMoveItems_Pal));
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_16COLOR | BGCNT_SCREENBASE(30));
- LoadCursorMonSprite();
- sub_80CA154();
- sub_80CA1C4();
- RefreshCursorMonData();
+ CreateDisplayMonSprite();
+ CreateMarkingComboSprite();
+ CreateWaveformSprites();
+ RefreshDisplayMonData();
}
-static void sub_80CA154(void)
+static void CreateMarkingComboSprite(void)
{
- sPSSData->field_D94 = CreateMonMarkingComboSprite(TAG_TILE_10, TAG_PAL_DAC8, NULL);
- sPSSData->field_D94->oam.priority = 1;
- sPSSData->field_D94->subpriority = 1;
- sPSSData->field_D94->pos1.x = 40;
- sPSSData->field_D94->pos1.y = 150;
- sPSSData->field_DA0 = (void*) OBJ_VRAM0 + 32 * GetSpriteTileStartByTag(TAG_TILE_10);
+ sStorage->markingComboSprite = CreateMonMarkingComboSprite(GFXTAG_MARKING_COMBO, PALTAG_MARKING_COMBO, NULL);
+ sStorage->markingComboSprite->oam.priority = 1;
+ sStorage->markingComboSprite->subpriority = 1;
+ sStorage->markingComboSprite->x = 40;
+ sStorage->markingComboSprite->y = 150;
+ sStorage->markingComboTilesPtr = (void*) OBJ_VRAM0 + 32 * GetSpriteTileStartByTag(GFXTAG_MARKING_COMBO);
}
-static void sub_80CA1C4(void)
+static void CreateWaveformSprites(void)
{
u16 i;
- struct SpriteSheet sheet = gWaveformSpriteSheet;
+ struct SpriteSheet sheet = sSpriteSheet_Waveform;
LoadSpriteSheet(&sheet);
- for (i = 0; i < 2; i++)
+ for (i = 0; i < ARRAY_COUNT(sStorage->waveformSprites); i++)
{
u8 spriteId = CreateSprite(&sSpriteTemplate_Waveform, i * 63 + 8, 9, 2);
- sPSSData->field_D98[i] = &gSprites[spriteId];
+ sStorage->waveformSprites[i] = &gSprites[spriteId];
}
}
-static void RefreshCursorMonData(void)
+static void RefreshDisplayMonData(void)
{
- LoadCursorMonGfx(sPSSData->cursorMonSpecies, sPSSData->cursorMonPersonality);
- PrintCursorMonInfo();
- sub_80CA65C();
+ LoadDisplayMonGfx(sStorage->displayMonSpecies, sStorage->displayMonPersonality);
+ PrintDisplayMonInfo();
+ UpdateWaveformAnimation();
ScheduleBgCopyTilemapToVram(0);
}
-static void BoxSetMosaic(void)
+static void StartDisplayMonMosaicEffect(void)
{
- RefreshCursorMonData();
- if (sPSSData->cursorMonSprite)
+ RefreshDisplayMonData();
+ if (sStorage->displayMonSprite)
{
- sPSSData->cursorMonSprite->oam.mosaic = TRUE;
- sPSSData->cursorMonSprite->data[0] = 10;
- sPSSData->cursorMonSprite->data[1] = 1;
- sPSSData->cursorMonSprite->callback = sub_80CA2D0;
- SetGpuReg(REG_OFFSET_MOSAIC, (sPSSData->cursorMonSprite->data[0] << 12) | (sPSSData->cursorMonSprite->data[0] << 8));
+ sStorage->displayMonSprite->oam.mosaic = TRUE;
+ sStorage->displayMonSprite->data[0] = 10;
+ sStorage->displayMonSprite->data[1] = 1;
+ sStorage->displayMonSprite->callback = SpriteCB_DisplayMonMosaic;
+ SetGpuReg(REG_OFFSET_MOSAIC, (sStorage->displayMonSprite->data[0] << 12) | (sStorage->displayMonSprite->data[0] << 8));
}
}
-static u8 sub_80CA2B8(void)
+static u8 IsDisplayMosaicActive(void)
{
- return sPSSData->cursorMonSprite->oam.mosaic;
+ return sStorage->displayMonSprite->oam.mosaic;
}
-static void sub_80CA2D0(struct Sprite *sprite)
+static void SpriteCB_DisplayMonMosaic(struct Sprite *sprite)
{
sprite->data[0] -= sprite->data[1];
if (sprite->data[0] < 0)
@@ -4043,22 +3938,22 @@ static void sub_80CA2D0(struct Sprite *sprite)
}
}
-static void LoadCursorMonSprite(void)
+static void CreateDisplayMonSprite(void)
{
u16 i;
u16 tileStart;
u8 palSlot;
u8 spriteId;
- struct SpriteSheet sheet = {sPSSData->field_22C4, 0x800, TAG_TILE_2};
- struct SpritePalette palette = {sPSSData->field_2244, TAG_PAL_DAC6};
- struct SpriteTemplate template = sSpriteTemplate_CursorMon;
+ struct SpriteSheet sheet = {sStorage->tileBuffer, MON_PIC_SIZE, GFXTAG_DISPLAY_MON};
+ struct SpritePalette palette = {sStorage->displayMonPalBuffer, PALTAG_DISPLAY_MON};
+ struct SpriteTemplate template = sSpriteTemplate_DisplayMon;
- for (i = 0; i < 0x800; i++)
- sPSSData->field_22C4[i] = 0;
- for (i = 0; i < 0x10; i++)
- sPSSData->field_2244[i] = 0;
+ for (i = 0; i < MON_PIC_SIZE; i++)
+ sStorage->tileBuffer[i] = 0;
+ for (i = 0; i < 16; i++)
+ sStorage->displayMonPalBuffer[i] = 0;
- sPSSData->cursorMonSprite = NULL;
+ sStorage->displayMonSprite = NULL;
do
{
@@ -4074,136 +3969,139 @@ static void LoadCursorMonSprite(void)
if (spriteId == MAX_SPRITES)
break;
- sPSSData->cursorMonSprite = &gSprites[spriteId];
- sPSSData->field_223A = palSlot * 16 + 0x100;
- sPSSData->field_223C = (void*) OBJ_VRAM0 + tileStart * 32;
+ sStorage->displayMonSprite = &gSprites[spriteId];
+ sStorage->displayMonPalOffset = palSlot * 16 + 0x100;
+ sStorage->displayMonTilePtr = (void*) OBJ_VRAM0 + tileStart * 32;
} while (0);
- if (sPSSData->cursorMonSprite == NULL)
+ if (sStorage->displayMonSprite == NULL)
{
- FreeSpriteTilesByTag(TAG_TILE_2);
- FreeSpritePaletteByTag(TAG_PAL_DAC6);
+ FreeSpriteTilesByTag(GFXTAG_DISPLAY_MON);
+ FreeSpritePaletteByTag(PALTAG_DISPLAY_MON);
}
}
-static void LoadCursorMonGfx(u16 species, u32 pid)
+static void LoadDisplayMonGfx(u16 species, u32 pid)
{
- if (sPSSData->cursorMonSprite == NULL)
+ if (sStorage->displayMonSprite == NULL)
return;
if (species != SPECIES_NONE)
{
- LoadSpecialPokePic(&gMonFrontPicTable[species], sPSSData->field_22C4, species, pid, TRUE);
- LZ77UnCompWram(sPSSData->cursorMonPalette, sPSSData->field_2244);
- CpuCopy32(sPSSData->field_22C4, sPSSData->field_223C, 0x800);
- LoadPalette(sPSSData->field_2244, sPSSData->field_223A, 0x20);
- sPSSData->cursorMonSprite->invisible = FALSE;
+ LoadSpecialPokePic(&gMonFrontPicTable[species], sStorage->tileBuffer, species, pid, TRUE);
+ LZ77UnCompWram(sStorage->displayMonPalette, sStorage->displayMonPalBuffer);
+ CpuCopy32(sStorage->tileBuffer, sStorage->displayMonTilePtr, MON_PIC_SIZE);
+ LoadPalette(sStorage->displayMonPalBuffer, sStorage->displayMonPalOffset, 0x20);
+ sStorage->displayMonSprite->invisible = FALSE;
}
else
{
- sPSSData->cursorMonSprite->invisible = TRUE;
+ sStorage->displayMonSprite->invisible = TRUE;
}
}
-static void PrintCursorMonInfo(void)
+static void PrintDisplayMonInfo(void)
{
FillWindowPixelBuffer(0, PIXEL_FILL(1));
- if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ if (sStorage->boxOption != OPTION_MOVE_ITEMS)
{
- AddTextPrinterParameterized(0, 1, sPSSData->cursorMonNickText, 6, 0, TEXT_SPEED_FF, NULL);
- AddTextPrinterParameterized(0, 2, sPSSData->cursorMonSpeciesName, 6, 15, TEXT_SPEED_FF, NULL);
- AddTextPrinterParameterized(0, 2, sPSSData->cursorMonGenderLvlText, 10, 29, TEXT_SPEED_FF, NULL);
- AddTextPrinterParameterized(0, 0, sPSSData->cursorMonItemName, 6, 43, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(0, 1, sStorage->displayMonNameText, 6, 0, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(0, 2, sStorage->displayMonSpeciesName, 6, 15, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(0, 2, sStorage->displayMonGenderLvlText, 10, 29, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(0, 0, sStorage->displayMonItemName, 6, 43, TEXT_SPEED_FF, NULL);
}
else
{
- AddTextPrinterParameterized(0, 0, sPSSData->cursorMonItemName, 6, 0, TEXT_SPEED_FF, NULL);
- AddTextPrinterParameterized(0, 1, sPSSData->cursorMonNickText, 6, 13, TEXT_SPEED_FF, NULL);
- AddTextPrinterParameterized(0, 2, sPSSData->cursorMonSpeciesName, 6, 28, TEXT_SPEED_FF, NULL);
- AddTextPrinterParameterized(0, 2, sPSSData->cursorMonGenderLvlText, 10, 42, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(0, 0, sStorage->displayMonItemName, 6, 0, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(0, 1, sStorage->displayMonNameText, 6, 13, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(0, 2, sStorage->displayMonSpeciesName, 6, 28, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(0, 2, sStorage->displayMonGenderLvlText, 10, 42, TEXT_SPEED_FF, NULL);
}
CopyWindowToVram(0, 2);
- if (sPSSData->cursorMonSpecies != SPECIES_NONE)
+ if (sStorage->displayMonSpecies != SPECIES_NONE)
{
- UpdateMonMarkingTiles(sPSSData->cursorMonMarkings, sPSSData->field_DA0);
- sPSSData->field_D94->invisible = FALSE;
+ UpdateMonMarkingTiles(sStorage->displayMonMarkings, sStorage->markingComboTilesPtr);
+ sStorage->markingComboSprite->invisible = FALSE;
}
else
{
- sPSSData->field_D94->invisible = TRUE;
+ sStorage->markingComboSprite->invisible = TRUE;
}
}
-static void sub_80CA65C(void)
+// Turn the wave animation on the sides of "Pkmn Data" on/off
+static void UpdateWaveformAnimation(void)
{
u16 i;
- if (sPSSData->cursorMonSpecies != SPECIES_NONE)
+ if (sStorage->displayMonSpecies != SPECIES_NONE)
{
- sub_80D27AC(0, 0, 0, 8, 2);
- for (i = 0; i < 2; i++)
- StartSpriteAnimIfDifferent(sPSSData->field_D98[i], i * 2 + 1);
+ // Start waveform animation and color "Pkmn Data"
+ TilemapUtil_SetRect(TILEMAPID_PKMN_DATA, 0, 0, 8, 2);
+ for (i = 0; i < ARRAY_COUNT(sStorage->waveformSprites); i++)
+ StartSpriteAnimIfDifferent(sStorage->waveformSprites[i], i * 2 + 1);
}
else
{
- sub_80D27AC(0, 0, 2, 8, 2);
- for (i = 0; i < 2; i++)
- StartSpriteAnim(sPSSData->field_D98[i], i * 2);
+ // Stop waveform animation and gray out "Pkmn Data"
+ TilemapUtil_SetRect(TILEMAPID_PKMN_DATA, 0, 2, 8, 2);
+ for (i = 0; i < ARRAY_COUNT(sStorage->waveformSprites); i++)
+ StartSpriteAnim(sStorage->waveformSprites[i], i * 2);
}
- sub_80D2918(0);
+ TilemapUtil_Update(TILEMAPID_PKMN_DATA);
ScheduleBgCopyTilemapToVram(1);
}
-static void sub_80CA704(void)
+static void InitSupplementalTilemaps(void)
{
- LZ77UnCompWram(gUnknown_08DD36C8, sPSSData->field_B0);
- LoadPalette(gPSSMenu_Pal, 0x10, 0x20);
- sub_80D2644(1, 1, sPSSData->field_B0, 12, 22);
- sub_80D2644(2, 1, gUnknown_0857245C, 9, 4);
- sub_80D2770(1, 10, 0);
- sub_80D2770(2, 21, 0);
- sub_80CAA74();
+ LZ77UnCompWram(gStorageSystemPartyMenu_Tilemap, sStorage->partyMenuTilemapBuffer);
+ LoadPalette(gStorageSystemPartyMenu_Pal, 0x10, 0x20);
+ TilemapUtil_SetMap(TILEMAPID_PARTY_MENU, 1, sStorage->partyMenuTilemapBuffer, 12, 22);
+ TilemapUtil_SetMap(TILEMAPID_CLOSE_BUTTON, 1, sCloseBoxButton_Tilemap, 9, 4);
+ TilemapUtil_SetPos(TILEMAPID_PARTY_MENU, 10, 0);
+ TilemapUtil_SetPos(TILEMAPID_CLOSE_BUTTON, 21, 0);
+ SetPartySlotTilemaps();
if (sInPartyMenu)
{
- sub_80CA984(TRUE);
+ UpdateCloseBoxButtonTilemap(TRUE);
CreatePartyMonsSprites(TRUE);
- sub_80D2918(2);
- sub_80D2918(1);
+ TilemapUtil_Update(TILEMAPID_CLOSE_BUTTON);
+ TilemapUtil_Update(TILEMAPID_PARTY_MENU);
}
else
{
- sub_80D27AC(1, 0, 20, 12, 2);
- sub_80CA984(TRUE);
- sub_80D2918(1);
- sub_80D2918(2);
+ TilemapUtil_SetRect(TILEMAPID_PARTY_MENU, 0, 20, 12, 2);
+ UpdateCloseBoxButtonTilemap(TRUE);
+ TilemapUtil_Update(TILEMAPID_PARTY_MENU);
+ TilemapUtil_Update(TILEMAPID_CLOSE_BUTTON);
}
ScheduleBgCopyTilemapToVram(1);
- sPSSData->unk_02C7 = 0;
+ sStorage->closeBoxFlashing = FALSE;
}
static void SetUpShowPartyMenu(void)
{
- sPSSData->field_2C0 = 20;
- sPSSData->field_2C2 = 2;
- sPSSData->field_2C5 = 0;
+ sStorage->partyMenuUnused1 = 20;
+ sStorage->partyMenuY = 2;
+ sStorage->partyMenuMoveTimer = 0;
CreatePartyMonsSprites(FALSE);
}
static bool8 ShowPartyMenu(void)
{
- if (sPSSData->field_2C5 == 20)
+ if (sStorage->partyMenuMoveTimer == 20)
return FALSE;
- sPSSData->field_2C0--;
- sPSSData->field_2C2++;
- sub_80D27F4(1, 3, 1);
- sub_80D2918(1);
+ sStorage->partyMenuUnused1--;
+ sStorage->partyMenuY++;
+ TilemapUtil_Move(TILEMAPID_PARTY_MENU, 3, 1);
+ TilemapUtil_Update(TILEMAPID_PARTY_MENU);
ScheduleBgCopyTilemapToVram(1);
- sub_80CBAF0(8);
- if (++sPSSData->field_2C5 == 20)
+ MovePartySprites(8);
+ if (++sStorage->partyMenuMoveTimer == 20)
{
sInPartyMenu = TRUE;
return FALSE;
@@ -4216,24 +4114,24 @@ static bool8 ShowPartyMenu(void)
static void SetUpHidePartyMenu(void)
{
- sPSSData->field_2C0 = 0;
- sPSSData->field_2C2 = 22;
- sPSSData->field_2C5 = 0;
- if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
- sub_80D11CC();
+ sStorage->partyMenuUnused1 = 0;
+ sStorage->partyMenuY = 22;
+ sStorage->partyMenuMoveTimer = 0;
+ if (sStorage->boxOption == OPTION_MOVE_ITEMS)
+ MoveHeldItemWithPartyMenu();
}
static bool8 HidePartyMenu(void)
{
- if (sPSSData->field_2C5 != 20)
+ if (sStorage->partyMenuMoveTimer != 20)
{
- sPSSData->field_2C0++;
- sPSSData->field_2C2--;
- sub_80D27F4(1, 3, -1);
- sub_80D2918(1);
- FillBgTilemapBufferRect_Palette0(1, 0x100, 10, sPSSData->field_2C2, 12, 1);
- sub_80CBAF0(-8);
- if (++sPSSData->field_2C5 != 20)
+ sStorage->partyMenuUnused1++;
+ sStorage->partyMenuY--;
+ TilemapUtil_Move(TILEMAPID_PARTY_MENU, 3, -1);
+ TilemapUtil_Update(TILEMAPID_PARTY_MENU);
+ FillBgTilemapBufferRect_Palette0(1, 0x100, 10, sStorage->partyMenuY, 12, 1);
+ MovePartySprites(-8);
+ if (++sStorage->partyMenuMoveTimer != 20)
{
ScheduleBgCopyTilemapToVram(1);
return TRUE;
@@ -4243,8 +4141,11 @@ static bool8 HidePartyMenu(void)
sInPartyMenu = FALSE;
DestroyAllPartyMonIcons();
CompactPartySlots();
- sub_80D27AC(2, 0, 0, 9, 2);
- sub_80D2918(2);
+
+ // The close box button gets partially covered by
+ // the party menu, restore it
+ TilemapUtil_SetRect(TILEMAPID_CLOSE_BUTTON, 0, 0, 9, 2);
+ TilemapUtil_Update(TILEMAPID_CLOSE_BUTTON);
ScheduleBgCopyTilemapToVram(1);
return FALSE;
}
@@ -4253,110 +4154,111 @@ static bool8 HidePartyMenu(void)
return FALSE;
}
-static void sub_80CA984(bool8 arg0)
+static void UpdateCloseBoxButtonTilemap(bool8 normal)
{
- if (arg0)
- sub_80D27AC(2, 0, 0, 9, 2);
- else
- sub_80D27AC(2, 0, 2, 9, 2);
+ if (normal)
+ TilemapUtil_SetRect(TILEMAPID_CLOSE_BUTTON, 0, 0, 9, 2);
+ else // flashing
+ TilemapUtil_SetRect(TILEMAPID_CLOSE_BUTTON, 0, 2, 9, 2);
- sub_80D2918(2);
+ TilemapUtil_Update(TILEMAPID_CLOSE_BUTTON);
ScheduleBgCopyTilemapToVram(1);
}
-static void sub_80CA9C0(void)
+static void StartFlashingCloseBoxButton(void)
{
- sPSSData->unk_02C7 = 1;
- sPSSData->unk_02C8 = 30;
- sPSSData->unk_02C9 = TRUE;
+ sStorage->closeBoxFlashing = TRUE;
+ sStorage->closeBoxFlashTimer = 30;
+ sStorage->closeBoxFlashState = TRUE;
}
-static void sub_80CA9EC(void)
+static void StopFlashingCloseBoxButton(void)
{
- if (sPSSData->unk_02C7)
+ if (sStorage->closeBoxFlashing)
{
- sPSSData->unk_02C7 = 0;
- sub_80CA984(TRUE);
+ sStorage->closeBoxFlashing = FALSE;
+ UpdateCloseBoxButtonTilemap(TRUE);
}
}
-static void sub_80CAA14(void)
+static void UpdateCloseBoxButtonFlash(void)
{
- if (sPSSData->unk_02C7 && ++sPSSData->unk_02C8 > 30)
+ if (sStorage->closeBoxFlashing && ++sStorage->closeBoxFlashTimer > 30)
{
- sPSSData->unk_02C8 = 0;
- sPSSData->unk_02C9 = (sPSSData->unk_02C9 == FALSE);
- sub_80CA984(sPSSData->unk_02C9);
+ sStorage->closeBoxFlashTimer = 0;
+ sStorage->closeBoxFlashState = (sStorage->closeBoxFlashState == FALSE);
+ UpdateCloseBoxButtonTilemap(sStorage->closeBoxFlashState);
}
}
-static void sub_80CAA74(void)
+static void SetPartySlotTilemaps(void)
{
u8 i;
+ // Skips first party slot, it should always be drawn
+ // as if it has a Pokémon in it
for (i = 1; i < PARTY_SIZE; i++)
{
- s32 species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES);
- sub_80CAAA8(i, (species != SPECIES_NONE));
+ s32 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES);
+ SetPartySlotTilemap(i, species != SPECIES_NONE);
}
}
-static void sub_80CAAA8(u8 arg0, bool8 isPartyMon)
+static void SetPartySlotTilemap(u8 partyId, bool8 hasMon)
{
u16 i, j, index;
const u16 *data;
- if (isPartyMon)
- data = gUnknown_085724A4;
+ if (hasMon)
+ data = sPartySlotFilled_Tilemap;
else
- data = gUnknown_085724BC;
+ data = sPartySlotEmpty_Tilemap;
- index = 3 * (3 * (arg0 - 1) + 1);
+ index = 3 * (3 * (partyId - 1) + 1);
index *= 4;
index += 7;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
- {
- sPSSData->field_B0[index + j] = data[j];
- }
+ sStorage->partyMenuTilemapBuffer[index + j] = data[j];
+
data += 4;
index += 12;
}
}
-static void sub_80CAB20(void)
+static void UpdatePartySlotColors(void)
{
- sub_80CAA74();
- sub_80D27AC(1, 0, 0, 12, 22);
- sub_80D2918(1);
+ SetPartySlotTilemaps();
+ TilemapUtil_SetRect(TILEMAPID_PARTY_MENU, 0, 0, 12, 22);
+ TilemapUtil_Update(TILEMAPID_PARTY_MENU);
ScheduleBgCopyTilemapToVram(1);
}
static void SetUpDoShowPartyMenu(void)
{
- sPSSData->showPartyMenuState = 0;
+ sStorage->showPartyMenuState = 0;
PlaySE(SE_WIN_OPEN);
SetUpShowPartyMenu();
}
static bool8 DoShowPartyMenu(void)
{
- switch (sPSSData->showPartyMenuState)
+ switch (sStorage->showPartyMenuState)
{
case 0:
if (!ShowPartyMenu())
{
- sub_80CDBA0();
- sPSSData->showPartyMenuState++;
+ SetCursorInParty();
+ sStorage->showPartyMenuState++;
}
break;
case 1:
- if (!sub_80CD554())
+ if (!UpdateCursorPos())
{
- if (sPSSData->setMosaic)
- BoxSetMosaic();
- sPSSData->showPartyMenuState++;
+ if (sStorage->setMosaic)
+ StartDisplayMonMosaicEffect();
+ sStorage->showPartyMenuState++;
}
break;
case 2:
@@ -4365,7 +4267,7 @@ static bool8 DoShowPartyMenu(void)
return TRUE;
}
-static void sub_80CABE0(void)
+static void UpdateBoxToSendMons(void)
{
if (sLastUsedBox != StorageGetCurrentBox())
{
@@ -4374,7 +4276,7 @@ static void sub_80CABE0(void)
}
}
-static void sub_80CAC1C(void)
+static void InitPokeStorageBg0(void)
{
SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(29));
LoadUserWindowBorderGfx(1, 2, 208);
@@ -4382,42 +4284,42 @@ static void sub_80CAC1C(void)
CopyBgTilemapBufferToVram(0);
}
-static void PrintStorageActionText(u8 id)
+static void PrintMessage(u8 id)
{
u8 *txtPtr;
DynamicPlaceholderTextUtil_Reset();
- switch (gPCStorageActionTexts[id].format)
+ switch (sMessages[id].format)
{
- case PC_TEXT_FMT_NORMAL:
+ case MSG_VAR_NONE:
break;
- case PC_TEXT_FMT_MON_NAME_1:
- case PC_TEXT_FMT_MON_NAME_2:
- case PC_TEXT_FMT_MON_NAME_3:
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sPSSData->cursorMonNick);
+ case MSG_VAR_MON_NAME_1:
+ case MSG_VAR_MON_NAME_2:
+ case MSG_VAR_MON_NAME_3:
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sStorage->displayMonName);
break;
- case PC_TEXT_FMT_MON_NAME_4:
- case PC_TEXT_FMT_MON_NAME_5:
- case PC_TEXT_FMT_MON_NAME_6:
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sPSSData->field_21E0);
+ case MSG_VAR_RELEASE_MON_1:
+ case MSG_VAR_RELEASE_MON_2:
+ case MSG_VAR_RELEASE_MON_3:
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sStorage->releaseMonName);
break;
- case PC_TEXT_FMT_ITEM_NAME:
- if (IsActiveItemMoving())
- txtPtr = StringCopy(sPSSData->itemName, GetMovingItemName());
+ case MSG_VAR_ITEM_NAME:
+ if (IsMovingItem())
+ txtPtr = StringCopy(sStorage->itemName, GetMovingItemName());
else
- txtPtr = StringCopy(sPSSData->itemName, sPSSData->cursorMonItemName);
+ txtPtr = StringCopy(sStorage->itemName, sStorage->displayMonItemName);
while (*(txtPtr - 1) == CHAR_SPACE)
txtPtr--;
*txtPtr = EOS;
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sPSSData->itemName);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sStorage->itemName);
break;
}
- DynamicPlaceholderTextUtil_ExpandPlaceholders(sPSSData->field_2190, gPCStorageActionTexts[id].text);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(sStorage->messageText, sMessages[id].text);
FillWindowPixelBuffer(1, PIXEL_FILL(1));
- AddTextPrinterParameterized(1, 1, sPSSData->field_2190, 0, 1, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(1, 1, sStorage->messageText, 0, 1, TEXT_SPEED_FF, NULL);
DrawTextBorderOuter(1, 2, 14);
PutWindowTilemap(1);
CopyWindowToVram(1, 2);
@@ -4439,12 +4341,12 @@ static void ClearBottomWindow(void)
static void AddWallpaperSetsMenu(void)
{
InitMenu();
- SetMenuText(18);
- SetMenuText(19);
- SetMenuText(20);
- SetMenuText(21);
+ SetMenuText(MENU_SCENERY_1);
+ SetMenuText(MENU_SCENERY_2);
+ SetMenuText(MENU_SCENERY_3);
+ SetMenuText(MENU_ETCETERA);
if (IsWaldaWallpaperUnlocked())
- SetMenuText(22);
+ SetMenuText(MENU_FRIENDS);
AddMenu();
}
@@ -4453,29 +4355,29 @@ static void AddWallpapersMenu(u8 wallpaperSet)
InitMenu();
switch (wallpaperSet)
{
- case 0:
- SetMenuText(23);
- SetMenuText(24);
- SetMenuText(25);
- SetMenuText(26);
+ case MENU_SCENERY_1 - MENU_WALLPAPER_SETS_START:
+ SetMenuText(MENU_FOREST);
+ SetMenuText(MENU_CITY);
+ SetMenuText(MENU_DESERT);
+ SetMenuText(MENU_SAVANNA);
break;
- case 1:
- SetMenuText(27);
- SetMenuText(28);
- SetMenuText(29);
- SetMenuText(30);
+ case MENU_SCENERY_2 - MENU_WALLPAPER_SETS_START:
+ SetMenuText(MENU_CRAG);
+ SetMenuText(MENU_VOLCANO);
+ SetMenuText(MENU_SNOW);
+ SetMenuText(MENU_CAVE);
break;
- case 2:
- SetMenuText(31);
- SetMenuText(32);
- SetMenuText(33);
- SetMenuText(34);
+ case MENU_SCENERY_3 - MENU_WALLPAPER_SETS_START:
+ SetMenuText(MENU_BEACH);
+ SetMenuText(MENU_SEAFLOOR);
+ SetMenuText(MENU_RIVER);
+ SetMenuText(MENU_SKY);
break;
- case 3:
- SetMenuText(35);
- SetMenuText(36);
- SetMenuText(37);
- SetMenuText(38);
+ case MENU_ETCETERA - MENU_WALLPAPER_SETS_START:
+ SetMenuText(MENU_POLKADOT);
+ SetMenuText(MENU_POKECENTER);
+ SetMenuText(MENU_MACHINE);
+ SetMenuText(MENU_SIMPLE);
break;
}
AddMenu();
@@ -4486,57 +4388,67 @@ static u8 GetCurrentBoxOption(void)
return sCurrentBoxOption;
}
-static void sub_80CAEAC(void)
+static void InitCursorItemIcon(void)
{
- if (!IsCursorOnBox())
+ if (!IsCursorOnBoxTitle())
{
if (sInPartyMenu)
- sub_80D0D8C(CURSOR_AREA_IN_PARTY, GetBoxCursorPosition());
+ TryLoadItemIconAtPos(CURSOR_AREA_IN_PARTY, GetCursorPosition());
else
- sub_80D0D8C(CURSOR_AREA_IN_BOX, GetBoxCursorPosition());
+ TryLoadItemIconAtPos(CURSOR_AREA_IN_BOX, GetCursorPosition());
}
if (sMovingItemId != ITEM_NONE)
{
- sub_80D0F38(sMovingItemId);
- sub_80CFE54(3);
+ InitItemIconInCursor(sMovingItemId);
+ StartCursorAnim(CURSOR_ANIM_FIST);
}
}
-static void sub_80CAF04(void)
+
+//------------------------------------------------------------------------------
+// SECTION: Pokémon sprites
+//
+// The below functions generally handle the Pokémon icon sprites, including
+// moving them with a scrolling box, shifting the party sprites, and
+// animating released Pokémon.
+//------------------------------------------------------------------------------
+
+
+static void InitMonIconFields(void)
{
u16 i;
LoadMonIconPalettes();
- for (i = 0; i < 40; i++)
- sPSSData->field_B08[i] = 0;
- for (i = 0; i < 40; i++)
- sPSSData->field_B58[i] = 0;
+ for (i = 0; i < MAX_MON_ICONS; i++)
+ sStorage->numIconsPerSpecies[i] = 0;
+ for (i = 0; i < MAX_MON_ICONS; i++)
+ sStorage->iconSpeciesList[i] = SPECIES_NONE;
for (i = 0; i < PARTY_SIZE; i++)
- sPSSData->partySprites[i] = NULL;
+ sStorage->partySprites[i] = NULL;
for (i = 0; i < IN_BOX_COUNT; i++)
- sPSSData->boxMonsSprites[i] = NULL;
+ sStorage->boxMonsSprites[i] = NULL;
- sPSSData->movingMonSprite = NULL;
- sPSSData->field_78C = 0;
+ sStorage->movingMonSprite = NULL;
+ sStorage->unkUnused1 = 0;
}
-static u8 sub_80CAFAC(void)
+static u8 GetMonIconPriorityByCursorPos(void)
{
return (IsCursorInBox() ? 2 : 1);
}
static void CreateMovingMonIcon(void)
{
- u32 personality = GetMonData(&sPSSData->movingMon, MON_DATA_PERSONALITY);
- u16 species = GetMonData(&sPSSData->movingMon, MON_DATA_SPECIES2);
- u8 priority = sub_80CAFAC();
+ u32 personality = GetMonData(&sStorage->movingMon, MON_DATA_PERSONALITY);
+ u16 species = GetMonData(&sStorage->movingMon, MON_DATA_SPECIES2);
+ u8 priority = GetMonIconPriorityByCursorPos();
- sPSSData->movingMonSprite = CreateMonIconSprite(species, personality, 0, 0, priority, 7);
- sPSSData->movingMonSprite->callback = sub_80CC100;
+ sStorage->movingMonSprite = CreateMonIconSprite(species, personality, 0, 0, priority, 7);
+ sStorage->movingMonSprite->callback = SpriteCB_HeldMon;
}
-static void sub_80CB028(u8 boxId)
+static void InitBoxMonSprites(u8 boxId)
{
u8 boxPosition;
u16 i, j, count;
@@ -4545,224 +4457,255 @@ static void sub_80CB028(u8 boxId)
count = 0;
boxPosition = 0;
- for (i = 0; i < IN_BOX_COLUMNS; i++)
+
+ // For each box slot, create a Pokémon icon if a species is present
+ for (i = 0; i < IN_BOX_ROWS; i++)
{
- for (j = 0; j < IN_BOX_ROWS; j++)
+ for (j = 0; j < IN_BOX_COLUMNS; j++)
{
species = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_SPECIES2);
if (species != SPECIES_NONE)
{
personality = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_PERSONALITY);
- sPSSData->boxMonsSprites[count] = CreateMonIconSprite(species, personality, 8 * (3 * j) + 100, 8 * (3 * i) + 44, 2, 19 - j);
+ sStorage->boxMonsSprites[count] = CreateMonIconSprite(species, personality, 8 * (3 * j) + 100, 8 * (3 * i) + 44, 2, 19 - j);
}
else
{
- sPSSData->boxMonsSprites[count] = NULL;
+ sStorage->boxMonsSprites[count] = NULL;
}
boxPosition++;
count++;
}
}
- if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
+ // If in item mode, set all Pokémon icons with no item to be transparent
+ if (sStorage->boxOption == OPTION_MOVE_ITEMS)
{
for (boxPosition = 0; boxPosition < IN_BOX_COUNT; boxPosition++)
{
- if (GetBoxMonDataAt(boxId, boxPosition, MON_DATA_HELD_ITEM) == 0)
- sPSSData->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND;
+ if (GetBoxMonDataAt(boxId, boxPosition, MON_DATA_HELD_ITEM) == ITEM_NONE)
+ sStorage->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND;
}
}
}
-static void sub_80CB140(u8 boxPosition)
+static void CreateBoxMonIconAtPos(u8 boxPosition)
{
u16 species = GetCurrentBoxMonData(boxPosition, MON_DATA_SPECIES2);
if (species != SPECIES_NONE)
{
- s16 x = 8 * (3 * (boxPosition % IN_BOX_ROWS)) + 100;
- s16 y = 8 * (3 * (boxPosition / IN_BOX_ROWS)) + 44;
+ s16 x = 8 * (3 * (boxPosition % IN_BOX_COLUMNS)) + 100;
+ s16 y = 8 * (3 * (boxPosition / IN_BOX_COLUMNS)) + 44;
u32 personality = GetCurrentBoxMonData(boxPosition, MON_DATA_PERSONALITY);
- sPSSData->boxMonsSprites[boxPosition] = CreateMonIconSprite(species, personality, x, y, 2, 19 - (boxPosition % IN_BOX_ROWS));
- if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
- sPSSData->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND;
+ sStorage->boxMonsSprites[boxPosition] = CreateMonIconSprite(species, personality, x, y, 2, 19 - (boxPosition % IN_BOX_COLUMNS));
+ if (sStorage->boxOption == OPTION_MOVE_ITEMS)
+ sStorage->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND;
}
}
-static void sub_80CB1F0(s16 arg0)
+#define sDistance data[1]
+#define sSpeed data[2]
+#define sScrollInDestX data[3]
+#define sDelay data[4]
+#define sScrollOutX data[5]
+
+static void StartBoxMonIconsScrollOut(s16 speed)
{
u16 i;
for (i = 0; i < IN_BOX_COUNT; i++)
{
- if (sPSSData->boxMonsSprites[i] != NULL)
+ if (sStorage->boxMonsSprites[i] != NULL)
{
- sPSSData->boxMonsSprites[i]->data[2] = arg0;
- sPSSData->boxMonsSprites[i]->data[4] = 1;
- sPSSData->boxMonsSprites[i]->callback = sub_80CB278;
+ sStorage->boxMonsSprites[i]->sSpeed = speed;
+ sStorage->boxMonsSprites[i]->sDelay = 1;
+ sStorage->boxMonsSprites[i]->callback = SpriteCB_BoxMonIconScrollOut;
}
}
}
-static void sub_80CB234(struct Sprite *sprite)
+static void SpriteCB_BoxMonIconScrollIn(struct Sprite *sprite)
{
- if (sprite->data[1] != 0)
+ if (sprite->sDistance != 0)
{
- sprite->data[1]--;
- sprite->pos1.x += sprite->data[2];
+ // Icon moving
+ sprite->sDistance--;
+ sprite->x += sprite->sSpeed;
}
else
{
- sPSSData->field_C66--;
- sprite->pos1.x = sprite->data[3];
+ // Icon arrived
+ sStorage->iconScrollNumIncoming--;
+ sprite->x = sprite->sScrollInDestX;
sprite->callback = SpriteCallbackDummy;
}
}
-static void sub_80CB278(struct Sprite *sprite)
+static void SpriteCB_BoxMonIconScrollOut(struct Sprite *sprite)
{
- if (sprite->data[4] != 0)
+ if (sprite->sDelay != 0)
{
- sprite->data[4]--;
+ sprite->sDelay--;
}
else
{
- sprite->pos1.x += sprite->data[2];
- sprite->data[5] = sprite->pos1.x + sprite->pos2.x;
- if (sprite->data[5] <= 68 || sprite->data[5] >= 252)
+ // Icon moving
+ sprite->x += sprite->sSpeed;
+ sprite->sScrollOutX = sprite->x + sprite->x2;
+
+ // Check if icon offscreen
+ if (sprite->sScrollOutX <= 68 || sprite->sScrollOutX >= 252)
sprite->callback = SpriteCallbackDummy;
}
}
-static void DestroyAllIconsInRow(u8 row)
+// Sprites for Pokémon icons are destroyed during
+// the box scroll once they've gone offscreen
+static void DestroyBoxMonIconsInColumn(u8 column)
{
- u16 column;
- u8 boxPosition = row;
+ u16 row;
+ u8 boxPosition = column;
- for (column = 0; column < IN_BOX_COLUMNS; column++)
+ for (row = 0; row < IN_BOX_ROWS; row++)
{
- if (sPSSData->boxMonsSprites[boxPosition] != NULL)
+ if (sStorage->boxMonsSprites[boxPosition] != NULL)
{
- DestroyBoxMonIcon(sPSSData->boxMonsSprites[boxPosition]);
- sPSSData->boxMonsSprites[boxPosition] = NULL;
+ DestroyBoxMonIcon(sStorage->boxMonsSprites[boxPosition]);
+ sStorage->boxMonsSprites[boxPosition] = NULL;
}
- boxPosition += IN_BOX_ROWS;
+ boxPosition += IN_BOX_COLUMNS;
}
}
-static u8 sub_80CB2F8(u8 row, u16 times, s16 xDelta)
+// Create the appearing icons for the incoming scrolling box
+static u8 CreateBoxMonIconsInColumn(u8 column, u16 distance, s16 speed)
{
s32 i;
u16 y = 44;
- s16 xDest = 8 * (3 * row) + 100;
- u16 x = xDest - ((times + 1) * xDelta);
- u8 subpriority = 19 - row;
- u8 count = 0;
- u8 boxPosition = row;
+ s16 xDest = 8 * (3 * column) + 100;
+ u16 x = xDest - ((distance + 1) * speed);
+ u8 subpriority = 19 - column;
+ u8 iconsCreated = 0;
+ u8 boxPosition = column;
- if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ if (sStorage->boxOption != OPTION_MOVE_ITEMS)
{
- for (i = 0; i < IN_BOX_COLUMNS; i++)
+ for (i = 0; i < IN_BOX_ROWS; i++)
{
- if (sPSSData->boxSpecies[boxPosition] != SPECIES_NONE)
+ if (sStorage->boxSpecies[boxPosition] != SPECIES_NONE)
{
- sPSSData->boxMonsSprites[boxPosition] = CreateMonIconSprite(sPSSData->boxSpecies[boxPosition],
- sPSSData->boxPersonalities[boxPosition],
+ sStorage->boxMonsSprites[boxPosition] = CreateMonIconSprite(sStorage->boxSpecies[boxPosition],
+ sStorage->boxPersonalities[boxPosition],
x, y, 2, subpriority);
- if (sPSSData->boxMonsSprites[boxPosition] != NULL)
+ if (sStorage->boxMonsSprites[boxPosition] != NULL)
{
- sPSSData->boxMonsSprites[boxPosition]->data[1] = times;
- sPSSData->boxMonsSprites[boxPosition]->data[2] = xDelta;
- sPSSData->boxMonsSprites[boxPosition]->data[3] = xDest;
- sPSSData->boxMonsSprites[boxPosition]->callback = sub_80CB234;
- count++;
+ sStorage->boxMonsSprites[boxPosition]->sDistance = distance;
+ sStorage->boxMonsSprites[boxPosition]->sSpeed = speed;
+ sStorage->boxMonsSprites[boxPosition]->sScrollInDestX = xDest;
+ sStorage->boxMonsSprites[boxPosition]->callback = SpriteCB_BoxMonIconScrollIn;
+ iconsCreated++;
}
}
- boxPosition += IN_BOX_ROWS;
+ boxPosition += IN_BOX_COLUMNS;
y += 24;
}
}
else
{
- for (i = 0; i < IN_BOX_COLUMNS; i++)
+ // Separate case for Move Items mode is used
+ // to create the icons with the proper blend
+ for (i = 0; i < IN_BOX_ROWS; i++)
{
- if (sPSSData->boxSpecies[boxPosition] != SPECIES_NONE)
+ if (sStorage->boxSpecies[boxPosition] != SPECIES_NONE)
{
- sPSSData->boxMonsSprites[boxPosition] = CreateMonIconSprite(sPSSData->boxSpecies[boxPosition],
- sPSSData->boxPersonalities[boxPosition],
+ sStorage->boxMonsSprites[boxPosition] = CreateMonIconSprite(sStorage->boxSpecies[boxPosition],
+ sStorage->boxPersonalities[boxPosition],
x, y, 2, subpriority);
- if (sPSSData->boxMonsSprites[boxPosition] != NULL)
+ if (sStorage->boxMonsSprites[boxPosition] != NULL)
{
- sPSSData->boxMonsSprites[boxPosition]->data[1] = times;
- sPSSData->boxMonsSprites[boxPosition]->data[2] = xDelta;
- sPSSData->boxMonsSprites[boxPosition]->data[3] = xDest;
- sPSSData->boxMonsSprites[boxPosition]->callback = sub_80CB234;
- if (GetBoxMonDataAt(sPSSData->field_C5C, boxPosition, MON_DATA_HELD_ITEM) == 0)
- sPSSData->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND;
- count++;
+ sStorage->boxMonsSprites[boxPosition]->sDistance = distance;
+ sStorage->boxMonsSprites[boxPosition]->sSpeed = speed;
+ sStorage->boxMonsSprites[boxPosition]->sScrollInDestX = xDest;
+ sStorage->boxMonsSprites[boxPosition]->callback = SpriteCB_BoxMonIconScrollIn;
+ if (GetBoxMonDataAt(sStorage->incomingBoxId, boxPosition, MON_DATA_HELD_ITEM) == ITEM_NONE)
+ sStorage->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND;
+ iconsCreated++;
}
}
- boxPosition += IN_BOX_ROWS;
+ boxPosition += IN_BOX_COLUMNS;
y += 24;
}
}
- return count;
+ return iconsCreated;
}
-static void sub_80CB4CC(u8 boxId, s8 direction)
+#undef sDistance
+#undef sSpeed
+#undef sScrollInDestX
+#undef sDelay
+#undef sScrollOutX
+
+static void InitBoxMonIconScroll(u8 boxId, s8 direction)
{
- sPSSData->field_C6A = 0;
- sPSSData->field_C6B = boxId;
- sPSSData->field_C69 = direction;
- sPSSData->field_C60 = 32;
- sPSSData->field_C64 = -(6 * direction);
- sPSSData->field_C66 = 0;
- SetBoxSpeciesAndPersonalities(boxId);
+ sStorage->iconScrollState = 0;
+ sStorage->iconScrollToBoxId = boxId;
+ sStorage->iconScrollDirection = direction;
+ sStorage->iconScrollDistance = 32;
+ sStorage->iconScrollSpeed = -(6 * direction);
+ sStorage->iconScrollNumIncoming = 0;
+ GetIncomingBoxMonData(boxId);
if (direction > 0)
- sPSSData->field_C68 = 0;
+ sStorage->iconScrollCurColumn = 0;
else
- sPSSData->field_C68 = IN_BOX_ROWS - 1;
+ sStorage->iconScrollCurColumn = IN_BOX_COLUMNS - 1;
- sPSSData->field_C62 = (24 * sPSSData->field_C68) + 100;
- sub_80CB1F0(sPSSData->field_C64);
+ sStorage->iconScrollPos = (24 * sStorage->iconScrollCurColumn) + 100;
+ StartBoxMonIconsScrollOut(sStorage->iconScrollSpeed);
}
-static bool8 sub_80CB584(void)
+static bool8 UpdateBoxMonIconScroll(void)
{
- if (sPSSData->field_C60 != 0)
- sPSSData->field_C60--;
+ if (sStorage->iconScrollDistance != 0)
+ sStorage->iconScrollDistance--;
- switch (sPSSData->field_C6A)
+ switch (sStorage->iconScrollState)
{
case 0:
- sPSSData->field_C62 += sPSSData->field_C64;
- if (sPSSData->field_C62 <= 64 || sPSSData->field_C62 >= 252)
+ sStorage->iconScrollPos += sStorage->iconScrollSpeed;
+ if (sStorage->iconScrollPos <= 64 || sStorage->iconScrollPos >= 252)
{
- DestroyAllIconsInRow(sPSSData->field_C68);
- sPSSData->field_C62 += sPSSData->field_C69 * 24;
- sPSSData->field_C6A++;
+ // A column of icons has gone offscreen, destroy them
+ DestroyBoxMonIconsInColumn(sStorage->iconScrollCurColumn);
+ sStorage->iconScrollPos += sStorage->iconScrollDirection * 24;
+ sStorage->iconScrollState++;
}
break;
case 1:
- sPSSData->field_C62 += sPSSData->field_C64;
- sPSSData->field_C66 += sub_80CB2F8(sPSSData->field_C68, sPSSData->field_C60, sPSSData->field_C64);
- if ((sPSSData->field_C69 > 0 && sPSSData->field_C68 == IN_BOX_ROWS - 1)
- || (sPSSData->field_C69 < 0 && sPSSData->field_C68 == 0))
+ // Create the new incoming column of icons
+ sStorage->iconScrollPos += sStorage->iconScrollSpeed;
+ sStorage->iconScrollNumIncoming += CreateBoxMonIconsInColumn(sStorage->iconScrollCurColumn, sStorage->iconScrollDistance, sStorage->iconScrollSpeed);
+
+ if ((sStorage->iconScrollDirection > 0 && sStorage->iconScrollCurColumn == IN_BOX_COLUMNS - 1)
+ || (sStorage->iconScrollDirection < 0 && sStorage->iconScrollCurColumn == 0))
{
- sPSSData->field_C6A++;
+ // Scroll has reached final column
+ sStorage->iconScrollState++;
}
else
{
- sPSSData->field_C68 += sPSSData->field_C69;
- sPSSData->field_C6A = 0;
+ // Continue scrolling
+ sStorage->iconScrollCurColumn += sStorage->iconScrollDirection;
+ sStorage->iconScrollState = 0;
}
break;
case 2:
- if (sPSSData->field_C66 == 0)
+ // Wait to make sure all icons have arrived
+ if (sStorage->iconScrollNumIncoming == 0)
{
- sPSSData->field_C60++;
+ sStorage->iconScrollDistance++;
return FALSE;
}
break;
@@ -4773,49 +4716,47 @@ static bool8 sub_80CB584(void)
return TRUE;
}
-static void SetBoxSpeciesAndPersonalities(u8 boxId)
+static void GetIncomingBoxMonData(u8 boxId)
{
s32 i, j, boxPosition;
boxPosition = 0;
- for (i = 0; i < IN_BOX_COLUMNS; i++)
+ for (i = 0; i < IN_BOX_ROWS; i++)
{
- for (j = 0; j < IN_BOX_ROWS; j++)
+ for (j = 0; j < IN_BOX_COLUMNS; j++)
{
- sPSSData->boxSpecies[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_SPECIES2);
- if (sPSSData->boxSpecies[boxPosition] != SPECIES_NONE)
- sPSSData->boxPersonalities[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_PERSONALITY);
+ sStorage->boxSpecies[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_SPECIES2);
+ if (sStorage->boxSpecies[boxPosition] != SPECIES_NONE)
+ sStorage->boxPersonalities[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_PERSONALITY);
boxPosition++;
}
}
- sPSSData->field_C5C = boxId;
+ sStorage->incomingBoxId = boxId;
}
static void DestroyBoxMonIconAtPosition(u8 boxPosition)
{
- if (sPSSData->boxMonsSprites[boxPosition] != NULL)
+ if (sStorage->boxMonsSprites[boxPosition] != NULL)
{
- DestroyBoxMonIcon(sPSSData->boxMonsSprites[boxPosition]);
- sPSSData->boxMonsSprites[boxPosition] = NULL;
+ DestroyBoxMonIcon(sStorage->boxMonsSprites[boxPosition]);
+ sStorage->boxMonsSprites[boxPosition] = NULL;
}
}
static void SetBoxMonIconObjMode(u8 boxPosition, u8 objMode)
{
- if (sPSSData->boxMonsSprites[boxPosition] != NULL)
- {
- sPSSData->boxMonsSprites[boxPosition]->oam.objMode = objMode;
- }
+ if (sStorage->boxMonsSprites[boxPosition] != NULL)
+ sStorage->boxMonsSprites[boxPosition]->oam.objMode = objMode;
}
-static void CreatePartyMonsSprites(bool8 arg0)
+static void CreatePartyMonsSprites(bool8 visible)
{
u16 i, count;
u16 species = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES2);
u32 personality = GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY);
- sPSSData->partySprites[0] = CreateMonIconSprite(species, personality, 104, 64, 1, 12);
+ sStorage->partySprites[0] = CreateMonIconSprite(species, personality, 104, 64, 1, 12);
count = 1;
for (i = 1; i < PARTY_SIZE; i++)
{
@@ -4823,139 +4764,153 @@ static void CreatePartyMonsSprites(bool8 arg0)
if (species != SPECIES_NONE)
{
personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY);
- sPSSData->partySprites[i] = CreateMonIconSprite(species, personality, 152, 8 * (3 * (i - 1)) + 16, 1, 12);
+ sStorage->partySprites[i] = CreateMonIconSprite(species, personality, 152, 8 * (3 * (i - 1)) + 16, 1, 12);
count++;
}
else
{
- sPSSData->partySprites[i] = NULL;
+ sStorage->partySprites[i] = NULL;
}
}
- if (!arg0)
+ if (!visible)
{
for (i = 0; i < count; i++)
{
- sPSSData->partySprites[i]->pos1.y -= 160;
- sPSSData->partySprites[i]->invisible = TRUE;
+ sStorage->partySprites[i]->y -= DISPLAY_HEIGHT;
+ sStorage->partySprites[i]->invisible = TRUE;
}
}
- if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
+ if (sStorage->boxOption == OPTION_MOVE_ITEMS)
{
for (i = 0; i < PARTY_SIZE; i++)
{
- if (sPSSData->partySprites[i] != NULL && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) == 0)
- sPSSData->partySprites[i]->oam.objMode = ST_OAM_OBJ_BLEND;
+ if (sStorage->partySprites[i] != NULL && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) == ITEM_NONE)
+ sStorage->partySprites[i]->oam.objMode = ST_OAM_OBJ_BLEND;
}
}
}
-static void sub_80CB950(void)
+static void CompactPartySprites(void)
{
- u16 i, count;
+ u16 i, targetSlot;
- sPSSData->field_C5E = 0;
- for (i = 0, count = 0; i < PARTY_SIZE; i++)
+ sStorage->numPartyToCompact = 0;
+ for (i = 0, targetSlot = 0; i < PARTY_SIZE; i++)
{
- if (sPSSData->partySprites[i] != NULL)
+ if (sStorage->partySprites[i] != NULL)
{
- if (i != count)
+ if (i != targetSlot)
{
- sub_80CB9D0(sPSSData->partySprites[i], count);
- sPSSData->partySprites[i] = NULL;
- sPSSData->field_C5E++;
+ MovePartySpriteToNextSlot(sStorage->partySprites[i], targetSlot);
+ sStorage->partySprites[i] = NULL;
+ sStorage->numPartyToCompact++;
}
- count++;
+ targetSlot++;
}
}
}
-static u8 sub_80CB9BC(void)
+static u8 GetNumPartySpritesCompacting(void)
{
- return sPSSData->field_C5E;
+ return sStorage->numPartyToCompact;
}
-static void sub_80CB9D0(struct Sprite *sprite, u16 partyId)
+#define sPartyId data[1]
+#define sMonX data[2]
+#define sMonY data[3]
+#define sSpeedX data[4]
+#define sSpeedY data[5]
+#define sMoveSteps data[6]
+
+static void MovePartySpriteToNextSlot(struct Sprite *sprite, u16 partyId)
{
s16 x, y;
- sprite->data[1] = partyId;
+ sprite->sPartyId = partyId;
if (partyId == 0)
x = 104, y = 64;
else
x = 152, y = 8 * (3 * (partyId - 1)) + 16;
- sprite->data[2] = (u16)(sprite->pos1.x) * 8;
- sprite->data[3] = (u16)(sprite->pos1.y) * 8;
- sprite->data[4] = ((x * 8) - sprite->data[2]) / 8;
- sprite->data[5] = ((y * 8) - sprite->data[3]) / 8;
+ sprite->sMonX = (u16)(sprite->x) * 8;
+ sprite->sMonY = (u16)(sprite->y) * 8;
+ sprite->sSpeedX = ((x * 8) - sprite->sMonX) / 8;
+ sprite->sSpeedY = ((y * 8) - sprite->sMonY) / 8;
sprite->data[6] = 8;
- sprite->callback = sub_80CBA3C;
+ sprite->callback = SpriteCB_MovePartyMonToNextSlot;
}
-static void sub_80CBA3C(struct Sprite *sprite)
+static void SpriteCB_MovePartyMonToNextSlot(struct Sprite *sprite)
{
- if (sprite->data[6] != 0)
+ if (sprite->sMoveSteps != 0)
{
- s16 x = sprite->data[2] += sprite->data[4];
- s16 y = sprite->data[3] += sprite->data[5];
- sprite->pos1.x = x / 8u;
- sprite->pos1.y = y / 8u;
- sprite->data[6]--;
+ s16 x = sprite->sMonX += sprite->sSpeedX;
+ s16 y = sprite->sMonY += sprite->sSpeedY;
+ sprite->x = x / 8u;
+ sprite->y = y / 8u;
+ sprite->sMoveSteps--;
}
else
{
- if (sprite->data[1] == 0)
+ if (sprite->sPartyId == 0)
{
- sprite->pos1.x = 104;
- sprite->pos1.y = 64;
+ sprite->x = 104;
+ sprite->y = 64;
}
else
{
- sprite->pos1.x = 152;
- sprite->pos1.y = 8 * (3 * (sprite->data[1] - 1)) + 16;
+ sprite->x = 152;
+ sprite->y = 8 * (3 * (sprite->sPartyId - 1)) + 16;
}
sprite->callback = SpriteCallbackDummy;
- sPSSData->partySprites[sprite->data[1]] = sprite;
- sPSSData->field_C5E--;
+ sStorage->partySprites[sprite->sPartyId] = sprite;
+ sStorage->numPartyToCompact--;
}
}
+#undef sPartyId
+#undef sMonX
+#undef sMonY
+#undef sSpeedX
+#undef sSpeedY
+#undef sMoveSteps
+
static void DestroyMovingMonIcon(void)
{
- if (sPSSData->movingMonSprite != NULL)
+ if (sStorage->movingMonSprite != NULL)
{
- DestroyBoxMonIcon(sPSSData->movingMonSprite);
- sPSSData->movingMonSprite = NULL;
+ DestroyBoxMonIcon(sStorage->movingMonSprite);
+ sStorage->movingMonSprite = NULL;
}
}
-static void sub_80CBAF0(s16 yDelta)
+static void MovePartySprites(s16 yDelta)
{
u16 i, posY;
for (i = 0; i < PARTY_SIZE; i++)
{
- if (sPSSData->partySprites[i] != NULL)
+ if (sStorage->partySprites[i] != NULL)
{
- sPSSData->partySprites[i]->pos1.y += yDelta;
- posY = sPSSData->partySprites[i]->pos1.y + sPSSData->partySprites[i]->pos2.y + sPSSData->partySprites[i]->centerToCornerVecY;
+ sStorage->partySprites[i]->y += yDelta;
+ posY = sStorage->partySprites[i]->y + sStorage->partySprites[i]->y2 + sStorage->partySprites[i]->centerToCornerVecY;
posY += 16;
if (posY > 192)
- sPSSData->partySprites[i]->invisible = TRUE;
+ sStorage->partySprites[i]->invisible = TRUE;
else
- sPSSData->partySprites[i]->invisible = FALSE;
+ sStorage->partySprites[i]->invisible = FALSE;
}
}
}
static void DestroyPartyMonIcon(u8 partyId)
{
- if (sPSSData->partySprites[partyId] != NULL)
+ if (sStorage->partySprites[partyId] != NULL)
{
- DestroyBoxMonIcon(sPSSData->partySprites[partyId]);
- sPSSData->partySprites[partyId] = NULL;
+ DestroyBoxMonIcon(sStorage->partySprites[partyId]);
+ sStorage->partySprites[partyId] = NULL;
}
}
@@ -4965,225 +4920,232 @@ static void DestroyAllPartyMonIcons(void)
for (i = 0; i < PARTY_SIZE; i++)
{
- if (sPSSData->partySprites[i] != NULL)
+ if (sStorage->partySprites[i] != NULL)
{
- DestroyBoxMonIcon(sPSSData->partySprites[i]);
- sPSSData->partySprites[i] = NULL;
+ DestroyBoxMonIcon(sStorage->partySprites[i]);
+ sStorage->partySprites[i] = NULL;
}
}
}
static void SetPartyMonIconObjMode(u8 partyId, u8 objMode)
{
- if (sPSSData->partySprites[partyId] != NULL)
+ if (sStorage->partySprites[partyId] != NULL)
{
- sPSSData->partySprites[partyId]->oam.objMode = objMode;
+ sStorage->partySprites[partyId]->oam.objMode = objMode;
}
}
-static void sub_80CBC14(u8 mode, u8 id)
+static void SetMovingMonSprite(u8 mode, u8 id)
{
if (mode == MODE_PARTY)
{
- sPSSData->movingMonSprite = sPSSData->partySprites[id];
- sPSSData->partySprites[id] = NULL;
+ sStorage->movingMonSprite = sStorage->partySprites[id];
+ sStorage->partySprites[id] = NULL;
}
else if (mode == MODE_BOX)
{
- sPSSData->movingMonSprite = sPSSData->boxMonsSprites[id];
- sPSSData->boxMonsSprites[id] = NULL;
+ sStorage->movingMonSprite = sStorage->boxMonsSprites[id];
+ sStorage->boxMonsSprites[id] = NULL;
}
else
{
return;
}
- sPSSData->movingMonSprite->callback = sub_80CC100;
- sPSSData->movingMonSprite->oam.priority = sub_80CAFAC();
- sPSSData->movingMonSprite->subpriority = 7;
+ sStorage->movingMonSprite->callback = SpriteCB_HeldMon;
+ sStorage->movingMonSprite->oam.priority = GetMonIconPriorityByCursorPos();
+ sStorage->movingMonSprite->subpriority = 7;
}
-static void sub_80CBCAC(u8 boxId, u8 position)
+static void SetPlacedMonSprite(u8 boxId, u8 position)
{
if (boxId == TOTAL_BOXES_COUNT) // party mon
{
- sPSSData->partySprites[position] = sPSSData->movingMonSprite;
- sPSSData->partySprites[position]->oam.priority = 1;
- sPSSData->partySprites[position]->subpriority = 12;
+ sStorage->partySprites[position] = sStorage->movingMonSprite;
+ sStorage->partySprites[position]->oam.priority = 1;
+ sStorage->partySprites[position]->subpriority = 12;
}
else
{
- sPSSData->boxMonsSprites[position] = sPSSData->movingMonSprite;
- sPSSData->boxMonsSprites[position]->oam.priority = 2;
- sPSSData->boxMonsSprites[position]->subpriority = 19 - (position % IN_BOX_ROWS);
+ sStorage->boxMonsSprites[position] = sStorage->movingMonSprite;
+ sStorage->boxMonsSprites[position]->oam.priority = 2;
+ sStorage->boxMonsSprites[position]->subpriority = 19 - (position % IN_BOX_COLUMNS);
}
- sPSSData->movingMonSprite->callback = SpriteCallbackDummy;
- sPSSData->movingMonSprite = NULL;
+ sStorage->movingMonSprite->callback = SpriteCallbackDummy;
+ sStorage->movingMonSprite = NULL;
}
-static void sub_80CBD5C(u8 boxId, u8 position)
+static void SaveMonSpriteAtPos(u8 boxId, u8 position)
{
if (boxId == TOTAL_BOXES_COUNT) // party mon
- sPSSData->field_B00 = &sPSSData->partySprites[position];
+ sStorage->shiftMonSpritePtr = &sStorage->partySprites[position];
else
- sPSSData->field_B00 = &sPSSData->boxMonsSprites[position];
+ sStorage->shiftMonSpritePtr = &sStorage->boxMonsSprites[position];
- sPSSData->movingMonSprite->callback = SpriteCallbackDummy;
- sPSSData->field_C5D = 0;
+ sStorage->movingMonSprite->callback = SpriteCallbackDummy;
+ sStorage->shiftTimer = 0;
}
-static bool8 sub_80CBDC4(void)
+static bool8 MoveShiftingMons(void)
{
- if (sPSSData->field_C5D == 16)
+ if (sStorage->shiftTimer == 16)
return FALSE;
- sPSSData->field_C5D++;
- if (sPSSData->field_C5D & 1)
+ sStorage->shiftTimer++;
+ if (sStorage->shiftTimer & 1)
{
- (*sPSSData->field_B00)->pos1.y--;
- sPSSData->movingMonSprite->pos1.y++;
+ (*sStorage->shiftMonSpritePtr)->y--;
+ sStorage->movingMonSprite->y++;
}
- (*sPSSData->field_B00)->pos2.x = gSineTable[sPSSData->field_C5D * 8] / 16;
- sPSSData->movingMonSprite->pos2.x = -(gSineTable[sPSSData->field_C5D * 8] / 16);
- if (sPSSData->field_C5D == 8)
+ (*sStorage->shiftMonSpritePtr)->x2 = gSineTable[sStorage->shiftTimer * 8] / 16;
+ sStorage->movingMonSprite->x2 = -(gSineTable[sStorage->shiftTimer * 8] / 16);
+ if (sStorage->shiftTimer == 8)
{
- sPSSData->movingMonSprite->oam.priority = (*sPSSData->field_B00)->oam.priority;
- sPSSData->movingMonSprite->subpriority = (*sPSSData->field_B00)->subpriority;
- (*sPSSData->field_B00)->oam.priority = sub_80CAFAC();
- (*sPSSData->field_B00)->subpriority = 7;
+ sStorage->movingMonSprite->oam.priority = (*sStorage->shiftMonSpritePtr)->oam.priority;
+ sStorage->movingMonSprite->subpriority = (*sStorage->shiftMonSpritePtr)->subpriority;
+ (*sStorage->shiftMonSpritePtr)->oam.priority = GetMonIconPriorityByCursorPos();
+ (*sStorage->shiftMonSpritePtr)->subpriority = 7;
}
- if (sPSSData->field_C5D == 16)
+ if (sStorage->shiftTimer == 16)
{
- struct Sprite *sprite = sPSSData->movingMonSprite;
- sPSSData->movingMonSprite = (*sPSSData->field_B00);
- *sPSSData->field_B00 = sprite;
+ struct Sprite *sprite = sStorage->movingMonSprite;
+ sStorage->movingMonSprite = (*sStorage->shiftMonSpritePtr);
+ *sStorage->shiftMonSpritePtr = sprite;
- sPSSData->movingMonSprite->callback = sub_80CC100;
- (*sPSSData->field_B00)->callback = SpriteCallbackDummy;
+ sStorage->movingMonSprite->callback = SpriteCB_HeldMon;
+ (*sStorage->shiftMonSpritePtr)->callback = SpriteCallbackDummy;
}
return TRUE;
}
-static void sub_80CBF14(u8 mode, u8 position)
+static void SetReleaseMon(u8 mode, u8 position)
{
switch (mode)
{
case MODE_PARTY:
- sPSSData->field_B04 = &sPSSData->partySprites[position];
+ sStorage->releaseMonSpritePtr = &sStorage->partySprites[position];
break;
case MODE_BOX:
- sPSSData->field_B04 = &sPSSData->boxMonsSprites[position];
+ sStorage->releaseMonSpritePtr = &sStorage->boxMonsSprites[position];
break;
case MODE_MOVE:
- sPSSData->field_B04 = &sPSSData->movingMonSprite;
+ sStorage->releaseMonSpritePtr = &sStorage->movingMonSprite;
break;
default:
return;
}
- if (*sPSSData->field_B04 != NULL)
+ if (*sStorage->releaseMonSpritePtr != NULL)
{
- InitSpriteAffineAnim(*sPSSData->field_B04);
- (*sPSSData->field_B04)->oam.affineMode = ST_OAM_AFFINE_NORMAL;
- (*sPSSData->field_B04)->affineAnims = gSpriteAffineAnimTable_857291C;
- StartSpriteAffineAnim(*sPSSData->field_B04, 0);
+ InitSpriteAffineAnim(*sStorage->releaseMonSpritePtr);
+ (*sStorage->releaseMonSpritePtr)->oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ (*sStorage->releaseMonSpritePtr)->affineAnims = sAffineAnims_ReleaseMon;
+ StartSpriteAffineAnim(*sStorage->releaseMonSpritePtr, RELEASE_ANIM_RELEASE);
}
}
-static bool8 sub_80CBFD8(void)
+static bool8 TryHideReleaseMonSprite(void)
{
- if (*sPSSData->field_B04 == NULL || (*sPSSData->field_B04)->invisible)
+ if (*sStorage->releaseMonSpritePtr == NULL
+ || (*sStorage->releaseMonSpritePtr)->invisible)
return FALSE;
- if ((*sPSSData->field_B04)->affineAnimEnded)
- (*sPSSData->field_B04)->invisible = TRUE;
+ if ((*sStorage->releaseMonSpritePtr)->affineAnimEnded)
+ (*sStorage->releaseMonSpritePtr)->invisible = TRUE;
return TRUE;
}
-static void sub_80CC020(void)
+static void DestroyReleaseMonIcon(void)
{
- if (*sPSSData->field_B04 != NULL)
+ if (*sStorage->releaseMonSpritePtr != NULL)
{
- FreeOamMatrix((*sPSSData->field_B04)->oam.matrixNum);
- DestroyBoxMonIcon(*sPSSData->field_B04);
- *sPSSData->field_B04 = NULL;
+ FreeOamMatrix((*sStorage->releaseMonSpritePtr)->oam.matrixNum);
+ DestroyBoxMonIcon(*sStorage->releaseMonSpritePtr);
+ *sStorage->releaseMonSpritePtr = NULL;
}
}
-static void sub_80CC064(void)
+static void ReshowReleaseMon(void)
{
- if (*sPSSData->field_B04 != NULL)
+ if (*sStorage->releaseMonSpritePtr != NULL)
{
- (*sPSSData->field_B04)->invisible = FALSE;
- StartSpriteAffineAnim(*sPSSData->field_B04, 1);
+ (*sStorage->releaseMonSpritePtr)->invisible = FALSE;
+ StartSpriteAffineAnim(*sStorage->releaseMonSpritePtr, RELEASE_ANIM_CAME_BACK);
}
}
-static bool8 sub_80CC0A0(void)
+static bool8 ResetReleaseMonSpritePtr(void)
{
- if (sPSSData->field_B04 == NULL)
+ if (sStorage->releaseMonSpritePtr == NULL)
return FALSE;
- if ((*sPSSData->field_B04)->affineAnimEnded)
- sPSSData->field_B04 = NULL;
+ if ((*sStorage->releaseMonSpritePtr)->affineAnimEnded)
+ sStorage->releaseMonSpritePtr = NULL;
return TRUE;
}
static void SetMovingMonPriority(u8 priority)
{
- sPSSData->movingMonSprite->oam.priority = priority;
+ sStorage->movingMonSprite->oam.priority = priority;
}
-static void sub_80CC100(struct Sprite *sprite)
+static void SpriteCB_HeldMon(struct Sprite *sprite)
{
- sprite->pos1.x = sPSSData->field_CB4->pos1.x;
- sprite->pos1.y = sPSSData->field_CB4->pos1.y + sPSSData->field_CB4->pos2.y + 4;
+ sprite->x = sStorage->cursorSprite->x;
+ sprite->y = sStorage->cursorSprite->y + sStorage->cursorSprite->y2 + 4;
}
-static u16 sub_80CC124(u16 species)
+static u16 TryLoadMonIconTiles(u16 species)
{
- u16 i, var;
+ u16 i, offset;
- for (i = 0; i < 40; i++)
+ // Search icon list for this species
+ for (i = 0; i < MAX_MON_ICONS; i++)
{
- if (sPSSData->field_B58[i] == species)
+ if (sStorage->iconSpeciesList[i] == species)
break;
}
- if (i == 40)
+ if (i == MAX_MON_ICONS)
{
- for (i = 0; i < 40; i++)
+ // Species not present in the list
+ // Find first empty spot in the list to put it
+ for (i = 0; i < MAX_MON_ICONS; i++)
{
- if (sPSSData->field_B58[i] == 0)
+ if (sStorage->iconSpeciesList[i] == 0)
break;
}
- if (i == 40)
+
+ // Failed to find an empty spot
+ if (i == MAX_MON_ICONS)
return 0xFFFF;
}
- sPSSData->field_B58[i] = species;
- sPSSData->field_B08[i]++;
- var = 16 * i;
- CpuCopy32(GetMonIconTiles(species, TRUE), (void*)(OBJ_VRAM0) + var * 32, 0x200);
+ // Add species to icon list and load tiles
+ sStorage->iconSpeciesList[i] = species;
+ sStorage->numIconsPerSpecies[i]++;
+ offset = 16 * i;
+ CpuCopy32(GetMonIconTiles(species, TRUE), (void*)(OBJ_VRAM0) + offset * 32, 0x200);
- return var;
+ return offset;
}
-static void sub_80CC1E0(u16 species)
+static void RemoveSpeciesFromIconList(u16 species)
{
u16 i;
- for (i = 0; i < 40; i++)
+ for (i = 0; i < MAX_MON_ICONS; i++)
{
- if (sPSSData->field_B58[i] == species)
+ if (sStorage->iconSpeciesList[i] == species)
{
- if (--sPSSData->field_B08[i] == 0)
- sPSSData->field_B58[i] = 0;
+ if (--sStorage->numIconsPerSpecies[i] == 0)
+ sStorage->iconSpeciesList[i] = SPECIES_NONE;
break;
}
}
@@ -5193,18 +5155,18 @@ static struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s
{
u16 tileNum;
u8 spriteId;
- struct SpriteTemplate tempalte = gUnknown_085728D4;
+ struct SpriteTemplate template = sSpriteTemplate_MonIcon;
species = GetIconSpecies(species, personality);
- tempalte.paletteTag = 0xDAC0 + gMonIconPaletteIndices[species];
- tileNum = sub_80CC124(species);
+ template.paletteTag = PALTAG_MON_ICON_0 + gMonIconPaletteIndices[species];
+ tileNum = TryLoadMonIconTiles(species);
if (tileNum == 0xFFFF)
return NULL;
- spriteId = CreateSprite(&tempalte, x, y, subpriority);
+ spriteId = CreateSprite(&template, x, y, subpriority);
if (spriteId == MAX_SPRITES)
{
- sub_80CC1E0(species);
+ RemoveSpeciesFromIconList(species);
return NULL;
}
@@ -5216,113 +5178,130 @@ static struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s
static void DestroyBoxMonIcon(struct Sprite *sprite)
{
- sub_80CC1E0(sprite->data[0]);
+ RemoveSpeciesFromIconList(sprite->data[0]);
DestroySprite(sprite);
}
-static void sub_80CC32C(u8 boxId)
+
+//------------------------------------------------------------------------------
+// SECTION: General box
+//
+// Some basic box functions, including initializing the box and scrolling.
+//------------------------------------------------------------------------------
+
+
+#define tState data[0]
+#define tDmaIdx data[1]
+#define tBoxId data[2]
+
+static void CreateInitBoxTask(u8 boxId)
{
- u8 taskId = CreateTask(sub_80CC370, 2);
+ u8 taskId = CreateTask(Task_InitBox, 2);
- gTasks[taskId].data[2] = boxId;
+ gTasks[taskId].tBoxId = boxId;
}
-static bool8 sub_80CC35C(void)
+static bool8 IsInitBoxActive(void)
{
- return FuncIsActiveTask(sub_80CC370);
+ return FuncIsActiveTask(Task_InitBox);
}
-static void sub_80CC370(u8 taskId)
+static void Task_InitBox(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
- sPSSData->field_2D2 = 0;
- sPSSData->bg2_X = 0;
- task->data[1] = RequestDma3Fill(0, sPSSData->field_4AC4, 0x1000, 1);
+ sStorage->wallpaperOffset = 0;
+ sStorage->bg2_X = 0;
+ task->tDmaIdx = RequestDma3Fill(0, sStorage->wallpaperBgTilemapBuffer, sizeof(sStorage->wallpaperBgTilemapBuffer), 1);
break;
case 1:
- if (CheckForSpaceForDma3Request(task->data[1]) == -1)
+ if (CheckForSpaceForDma3Request(task->tDmaIdx) == -1)
return;
- SetBgTilemapBuffer(2, sPSSData->field_4AC4);
+ SetBgTilemapBuffer(2, sStorage->wallpaperBgTilemapBuffer);
ShowBg(2);
break;
case 2:
- LoadWallpaperGfx(task->data[2], 0);
+ LoadWallpaperGfx(task->tBoxId, 0);
break;
case 3:
if (!WaitForWallpaperGfxLoad())
return;
- sub_80CCB50(task->data[2]);
- sub_80CD02C();
- sub_80CB028(task->data[2]);
+ InitBoxTitle(task->tBoxId);
+ CreateBoxScrollArrows();
+ InitBoxMonSprites(task->tBoxId);
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(27) | BGCNT_TXT512x256);
break;
case 4:
DestroyTask(taskId);
break;
default:
- task->data[0] = 0;
+ task->tState = 0;
return;
}
- task->data[0]++;
+ task->tState++;
}
+#undef tState
+#undef tDmaIdx
+#undef tBoxId
+
static void SetUpScrollToBox(u8 boxId)
{
s8 direction = DetermineBoxScrollDirection(boxId);
- sPSSData->wallpaperScrollSpeed = (direction > 0) ? 6 : -6;
- sPSSData->field_2D3 = (direction > 0) ? 1 : 2;
- sPSSData->field_2D0 = 32;
- sPSSData->field_2D4 = boxId;
- sPSSData->field_2D6 = (direction <= 0) ? 5 : 0;
- sPSSData->field_2D8 = direction;
- sPSSData->field_2DA = (direction > 0) ? 264 : 56;
- sPSSData->field_2DC = (direction <= 0) ? 5 : 0;
- sPSSData->field_2DE = 0;
- sPSSData->field_2E0 = 2;
- sPSSData->boxScrollDestination = boxId;
- sPSSData->field_A65 = direction;
- sPSSData->field_A63 = 0;
+ sStorage->scrollSpeed = (direction > 0) ? 6 : -6;
+ sStorage->scrollUnused1 = (direction > 0) ? 1 : 2;
+ sStorage->scrollTimer = 32;
+ sStorage->scrollToBoxIdUnused = boxId;
+ sStorage->scrollUnused2 = (direction <= 0) ? 5 : 0;
+ sStorage->scrollDirectionUnused = direction;
+
+ sStorage->scrollUnused3 = (direction > 0) ? 264 : 56;
+ sStorage->scrollUnused4 = (direction <= 0) ? 5 : 0;
+ sStorage->scrollUnused5 = 0;
+ sStorage->scrollUnused6 = 2;
+ sStorage->scrollToBoxId = boxId;
+ sStorage->scrollDirection = direction;
+ sStorage->scrollState = 0;
}
static bool8 ScrollToBox(void)
{
- bool8 var;
+ bool8 iconsScrolling;
- switch (sPSSData->field_A63)
+ switch (sStorage->scrollState)
{
case 0:
- LoadWallpaperGfx(sPSSData->boxScrollDestination, sPSSData->field_A65);
- sPSSData->field_A63++;
+ LoadWallpaperGfx(sStorage->scrollToBoxId, sStorage->scrollDirection);
+ sStorage->scrollState++;
case 1:
if (!WaitForWallpaperGfxLoad())
return TRUE;
- sub_80CB4CC(sPSSData->boxScrollDestination, sPSSData->field_A65);
- sub_80CCCFC(sPSSData->boxScrollDestination, sPSSData->field_A65);
- sub_80CD0B8(sPSSData->field_A65);
+ InitBoxMonIconScroll(sStorage->scrollToBoxId, sStorage->scrollDirection);
+ CreateIncomingBoxTitle(sStorage->scrollToBoxId, sStorage->scrollDirection);
+ StartBoxScrollArrowsSlide(sStorage->scrollDirection);
break;
case 2:
- var = sub_80CB584();
- if (sPSSData->field_2D0 != 0)
+ iconsScrolling = UpdateBoxMonIconScroll();
+ if (sStorage->scrollTimer != 0)
{
- sPSSData->bg2_X += sPSSData->wallpaperScrollSpeed;
- if (--sPSSData->field_2D0 != 0)
+ sStorage->bg2_X += sStorage->scrollSpeed;
+ if (--sStorage->scrollTimer != 0)
return TRUE;
- sub_80CCEE0();
- sub_80CD158();
+ CycleBoxTitleSprites();
+ StopBoxScrollArrowsSlide();
}
- return var;
+ return iconsScrolling;
}
- sPSSData->field_A63++;
+ sStorage->scrollState++;
return TRUE;
}
@@ -5341,40 +5320,46 @@ static s8 DetermineBoxScrollDirection(u8 boxId)
return (i < TOTAL_BOXES_COUNT / 2) ? 1 : -1;
}
+
+//------------------------------------------------------------------------------
+// SECTION: Wallpaper gfx
+//------------------------------------------------------------------------------
+
+
static void SetWallpaperForCurrentBox(u8 wallpaperId)
{
u8 boxId = StorageGetCurrentBox();
SetBoxWallpaper(boxId, wallpaperId);
- sPSSData->wallpaperChangeState = 0;
+ sStorage->wallpaperChangeState = 0;
}
static bool8 DoWallpaperGfxChange(void)
{
- switch (sPSSData->wallpaperChangeState)
+ switch (sStorage->wallpaperChangeState)
{
case 0:
- BeginNormalPaletteFade(sPSSData->field_738, 1, 0, 16, RGB_WHITEALPHA);
- sPSSData->wallpaperChangeState++;
+ BeginNormalPaletteFade(sStorage->wallpaperPalBits, 1, 0, 16, RGB_WHITEALPHA);
+ sStorage->wallpaperChangeState++;
break;
case 1:
if (!UpdatePaletteFade())
{
u8 curBox = StorageGetCurrentBox();
LoadWallpaperGfx(curBox, 0);
- sPSSData->wallpaperChangeState++;
+ sStorage->wallpaperChangeState++;
}
break;
case 2:
if (WaitForWallpaperGfxLoad() == TRUE)
{
- sub_80CCF9C();
- BeginNormalPaletteFade(sPSSData->field_738, 1, 16, 0, RGB_WHITEALPHA);
- sPSSData->wallpaperChangeState++;
+ CycleBoxTitleColor();
+ BeginNormalPaletteFade(sStorage->wallpaperPalBits, 1, 16, 0, RGB_WHITEALPHA);
+ sStorage->wallpaperChangeState++;
}
break;
case 3:
if (!UpdatePaletteFade())
- sPSSData->wallpaperChangeState++;
+ sStorage->wallpaperChangeState++;
break;
case 4:
return FALSE;
@@ -5386,54 +5371,54 @@ static bool8 DoWallpaperGfxChange(void)
static void LoadWallpaperGfx(u8 boxId, s8 direction)
{
u8 wallpaperId;
- const struct WallpaperTable *wallpaperGfx;
+ const struct Wallpaper *wallpaper;
void *iconGfx;
- u32 size1, size2;
+ u32 tilesSize, iconSize;
- sPSSData->field_6F9 = 0;
- sPSSData->field_6FA = boxId;
- sPSSData->field_6FB = direction;
- if (sPSSData->field_6FB != 0)
+ sStorage->wallpaperLoadState = 0;
+ sStorage->wallpaperLoadBoxId = boxId;
+ sStorage->wallpaperLoadDir = direction;
+ if (sStorage->wallpaperLoadDir != 0)
{
- sPSSData->field_2D2 = (sPSSData->field_2D2 == 0);
- sub_80CCAE0(sPSSData->field_4AC4);
+ sStorage->wallpaperOffset = (sStorage->wallpaperOffset == 0);
+ TrimOldWallpaper(sStorage->wallpaperBgTilemapBuffer);
}
- wallpaperId = GetBoxWallpaper(sPSSData->field_6FA);
+ wallpaperId = GetBoxWallpaper(sStorage->wallpaperLoadBoxId);
if (wallpaperId != WALLPAPER_FRIENDS)
{
- wallpaperGfx = &gWallpaperTable[wallpaperId];
- LZ77UnCompWram(wallpaperGfx->tileMap, sPSSData->field_792);
- sub_80CCA3C(sPSSData->field_792, sPSSData->field_6FB, sPSSData->field_2D2);
+ wallpaper = &sWallpapers[wallpaperId];
+ LZ77UnCompWram(wallpaper->tilemap, sStorage->wallpaperTilemap);
+ DrawWallpaper(sStorage->wallpaperTilemap, sStorage->wallpaperLoadDir, sStorage->wallpaperOffset);
- if (sPSSData->field_6FB != 0)
- LoadPalette(wallpaperGfx->palettes, (sPSSData->field_2D2 * 32) + 0x40, 0x40);
+ if (sStorage->wallpaperLoadDir != 0)
+ LoadPalette(wallpaper->palettes, (sStorage->wallpaperOffset * 32) + 0x40, 0x40);
else
- CpuCopy16(wallpaperGfx->palettes, &gPlttBufferUnfaded[(sPSSData->field_2D2 * 32) + 0x40], 0x40);
+ CpuCopy16(wallpaper->palettes, &gPlttBufferUnfaded[(sStorage->wallpaperOffset * 32) + 0x40], 0x40);
- sPSSData->wallpaperTiles = malloc_and_decompress(wallpaperGfx->tiles, &size1);
- LoadBgTiles(2, sPSSData->wallpaperTiles, size1, sPSSData->field_2D2 << 8);
+ sStorage->wallpaperTiles = malloc_and_decompress(wallpaper->tiles, &tilesSize);
+ LoadBgTiles(2, sStorage->wallpaperTiles, tilesSize, sStorage->wallpaperOffset << 8);
}
else
{
- wallpaperGfx = &gFriendsWallpaperTable[GetWaldaWallpaperPatternId()];
- LZ77UnCompWram(wallpaperGfx->tileMap, sPSSData->field_792);
- sub_80CCA3C(sPSSData->field_792, sPSSData->field_6FB, sPSSData->field_2D2);
+ wallpaper = &sWaldaWallpapers[GetWaldaWallpaperPatternId()];
+ LZ77UnCompWram(wallpaper->tilemap, sStorage->wallpaperTilemap);
+ DrawWallpaper(sStorage->wallpaperTilemap, sStorage->wallpaperLoadDir, sStorage->wallpaperOffset);
- CpuCopy16(wallpaperGfx->palettes, sPSSData->field_792, 0x40);
- CpuCopy16(GetWaldaWallpaperColorsPtr(), &sPSSData->field_792[1], 4);
- CpuCopy16(GetWaldaWallpaperColorsPtr(), &sPSSData->field_792[17], 4);
+ CpuCopy16(wallpaper->palettes, sStorage->wallpaperTilemap, 0x40);
+ CpuCopy16(GetWaldaWallpaperColorsPtr(), &sStorage->wallpaperTilemap[1], 4);
+ CpuCopy16(GetWaldaWallpaperColorsPtr(), &sStorage->wallpaperTilemap[17], 4);
- if (sPSSData->field_6FB != 0)
- LoadPalette(sPSSData->field_792, (sPSSData->field_2D2 * 32) + 0x40, 0x40);
+ if (sStorage->wallpaperLoadDir != 0)
+ LoadPalette(sStorage->wallpaperTilemap, (sStorage->wallpaperOffset * 32) + 0x40, 0x40);
else
- CpuCopy16(sPSSData->field_792, &gPlttBufferUnfaded[(sPSSData->field_2D2 * 32) + 0x40], 0x40);
+ CpuCopy16(sStorage->wallpaperTilemap, &gPlttBufferUnfaded[(sStorage->wallpaperOffset * 32) + 0x40], 0x40);
- sPSSData->wallpaperTiles = malloc_and_decompress(wallpaperGfx->tiles, &size1);
- iconGfx = malloc_and_decompress(gFriendsIcons[GetWaldaWallpaperIconId()], &size2);
- CpuCopy32(iconGfx, sPSSData->wallpaperTiles + 0x800, size2);
+ sStorage->wallpaperTiles = malloc_and_decompress(wallpaper->tiles, &tilesSize);
+ iconGfx = malloc_and_decompress(sWaldaWallpaperIcons[GetWaldaWallpaperIconId()], &iconSize);
+ CpuCopy32(iconGfx, sStorage->wallpaperTiles + 0x800, iconSize);
Free(iconGfx);
- LoadBgTiles(2, sPSSData->wallpaperTiles, size1, sPSSData->field_2D2 << 8);
+ LoadBgTiles(2, sStorage->wallpaperTiles, tilesSize, sStorage->wallpaperOffset << 8);
}
CopyBgTilemapBufferToVram(2);
@@ -5444,36 +5429,35 @@ static bool32 WaitForWallpaperGfxLoad(void)
if (IsDma3ManagerBusyWithBgCopy())
return FALSE;
- if (sPSSData->wallpaperTiles != NULL)
- {
- Free(sPSSData->wallpaperTiles);
- sPSSData->wallpaperTiles = NULL;
- }
+ if (sStorage->wallpaperTiles != NULL)
+ FREE_AND_SET_NULL(sStorage->wallpaperTiles);
+
return TRUE;
}
-static void sub_80CCA3C(const void *tilemap, s8 direction, u8 arg2)
+static void DrawWallpaper(const void *tilemap, s8 direction, u8 offset)
{
- s16 var = (arg2 * 2) + 3;
- s16 x = ((sPSSData->bg2_X / 8 + 10) + (direction * 24)) & 0x3F;
+ s16 var = offset * 256;
+ s16 var2 = (offset * 2) + 3;
+ s16 x = ((sStorage->bg2_X / 8 + 10) + (direction * 24)) & 0x3F;
- CopyRectToBgTilemapBufferRect(2, tilemap, 0, 0, 0x14, 0x12, x, 2, 0x14, 0x12, 0x11, arg2 << 8, var);
+ CopyRectToBgTilemapBufferRect(2, tilemap, 0, 0, 0x14, 0x12, x, 2, 0x14, 0x12, 0x11, var, var2);
if (direction == 0)
return;
if (direction > 0)
- x *= 1, x += 0x14; // x * 1 is needed to match, but can be safely removed as it makes no functional difference
+ x += 0x14;
else
x -= 4;
FillBgTilemapBufferRect(2, 0, x, 2, 4, 0x12, 0x11);
}
-static void sub_80CCAE0(void *arg0)
+static void TrimOldWallpaper(void *tilemap)
{
u16 i;
- u16 *dest = arg0;
- s16 r3 = ((sPSSData->bg2_X / 8) + 30) & 0x3F;
+ u16 *dest = tilemap;
+ s16 r3 = ((sStorage->bg2_X / 8) + 30) & 0x3F;
if (r3 <= 31)
dest += r3 + 0x260;
@@ -5491,268 +5475,312 @@ static void sub_80CCAE0(void *arg0)
}
}
-static void sub_80CCB50(u8 boxId)
+
+//------------------------------------------------------------------------------
+// SECTION: Box Title
+//------------------------------------------------------------------------------
+
+
+static void InitBoxTitle(u8 boxId)
{
u8 tagIndex;
- s16 r6;
+ s16 x;
u16 i;
- struct SpriteSheet spriteSheet = {sPSSData->field_2F8, 0x200, TAG_TILE_3};
+ struct SpriteSheet spriteSheet = {sStorage->boxTitleTiles, 0x200, GFXTAG_BOX_TITLE};
struct SpritePalette palettes[] = {
- {sPSSData->field_6FC, TAG_PAL_DAC9},
+ {sStorage->boxTitlePal, PALTAG_BOX_TITLE},
{}
};
u16 wallpaperId = GetBoxWallpaper(boxId);
- sPSSData->field_6FC[14] = gUnknown_08577574[wallpaperId][0];
- sPSSData->field_6FC[15] = gUnknown_08577574[wallpaperId][1];
+ sStorage->boxTitlePal[14] = sBoxTitleColors[wallpaperId][0]; // Shadow color
+ sStorage->boxTitlePal[15] = sBoxTitleColors[wallpaperId][1]; // Text Color
LoadSpritePalettes(palettes);
- sPSSData->field_738 = 0x3f0;
-
- tagIndex = IndexOfSpritePaletteTag(TAG_PAL_DAC9);
- sPSSData->field_71C = 0x10e + 16 * tagIndex;
- sPSSData->field_738 |= 0x10000 << tagIndex;
-
- tagIndex = IndexOfSpritePaletteTag(TAG_PAL_DAC9);
- sPSSData->field_71E = 0x10e + 16 * tagIndex;
- sPSSData->field_738 |= 0x10000 << tagIndex;
-
- StringCopyPadded(sPSSData->field_21B8, GetBoxNamePtr(boxId), 0, 8);
- DrawTextWindowAndBufferTiles(sPSSData->field_21B8, sPSSData->field_2F8, 0, 0, 2);
+ sStorage->wallpaperPalBits = 0x3f0;
+
+ tagIndex = IndexOfSpritePaletteTag(PALTAG_BOX_TITLE);
+ sStorage->boxTitlePalOffset = 0x10e + 16 * tagIndex;
+ sStorage->wallpaperPalBits |= 0x10000 << tagIndex;
+
+ // The below seems intended to have separately tracked
+ // the incoming wallpaper title's palette, but as they now
+ // share a palette tag, all colors (and fields in some cases)
+ // this is redundant along with the use of boxTitleAltPalOffset
+ tagIndex = IndexOfSpritePaletteTag(PALTAG_BOX_TITLE);
+ sStorage->boxTitleAltPalOffset = 0x10e + 16 * tagIndex;
+ sStorage->wallpaperPalBits |= 0x10000 << tagIndex;
+
+ StringCopyPadded(sStorage->boxTitleText, GetBoxNamePtr(boxId), 0, 8);
+ DrawTextWindowAndBufferTiles(sStorage->boxTitleText, sStorage->boxTitleTiles, 0, 0, 2);
LoadSpriteSheet(&spriteSheet);
- r6 = sub_80CD00C(GetBoxNamePtr(boxId));
+ x = GetBoxTitleBaseX(GetBoxNamePtr(boxId));
+ // Title is split across two sprites
for (i = 0; i < 2; i++)
{
- u8 spriteId = CreateSprite(&gSpriteTemplate_857B0A8, r6 + i * 32, 28, 24);
- sPSSData->field_720[i] = &gSprites[spriteId];
- StartSpriteAnim(sPSSData->field_720[i], i);
+ u8 spriteId = CreateSprite(&sSpriteTemplate_BoxTitle, x + i * 32, 28, 24);
+ sStorage->curBoxTitleSprites[i] = &gSprites[spriteId];
+ StartSpriteAnim(sStorage->curBoxTitleSprites[i], i);
}
- sPSSData->field_6F8 = 0;
+ sStorage->boxTitleCycleId = 0;
}
-static void sub_80CCCFC(u8 boxId, s8 direction)
+// Sprite data for moving title text
+#define sSpeed data[0]
+// Flipped between incoming/outgoing for some reason
+#define sIncomingX data[1]
+#define sIncomingDelay data[2]
+#define sOutgoingDelay data[1]
+#define sOutgoingX data[2]
+
+static void CreateIncomingBoxTitle(u8 boxId, s8 direction)
{
- u16 r8;
- s16 x, x2;
+ u16 palOffset;
+ s16 x, adjustedX;
u16 i;
- struct SpriteSheet spriteSheet = {sPSSData->field_2F8, 0x200, TAG_TILE_3};
- struct SpriteTemplate template = gSpriteTemplate_857B0A8;
+ struct SpriteSheet spriteSheet = {sStorage->boxTitleTiles, 0x200, GFXTAG_BOX_TITLE};
+ struct SpriteTemplate template = sSpriteTemplate_BoxTitle;
- sPSSData->field_6F8 = (sPSSData->field_6F8 == 0);
- if (sPSSData->field_6F8 == 0)
+ sStorage->boxTitleCycleId = (sStorage->boxTitleCycleId == 0);
+ if (sStorage->boxTitleCycleId == 0)
{
- spriteSheet.tag = TAG_TILE_3;
- r8 = sPSSData->field_71C;
+ spriteSheet.tag = GFXTAG_BOX_TITLE;
+ palOffset = sStorage->boxTitlePalOffset;
}
else
{
- spriteSheet.tag = TAG_TILE_4;
- r8 = sPSSData->field_71C;
- template.tileTag = TAG_TILE_4;
- template.paletteTag = TAG_PAL_DAC9;
+ spriteSheet.tag = GFXTAG_BOX_TITLE_ALT;
+ palOffset = sStorage->boxTitlePalOffset;
+ template.tileTag = GFXTAG_BOX_TITLE_ALT;
+ template.paletteTag = PALTAG_BOX_TITLE;
}
- StringCopyPadded(sPSSData->field_21B8, GetBoxNamePtr(boxId), 0, 8);
- DrawTextWindowAndBufferTiles(sPSSData->field_21B8, sPSSData->field_2F8, 0, 0, 2);
+ StringCopyPadded(sStorage->boxTitleText, GetBoxNamePtr(boxId), 0, 8);
+ DrawTextWindowAndBufferTiles(sStorage->boxTitleText, sStorage->boxTitleTiles, 0, 0, 2);
LoadSpriteSheet(&spriteSheet);
- LoadPalette(gUnknown_08577574[GetBoxWallpaper(boxId)], r8, 4);
- x = sub_80CD00C(GetBoxNamePtr(boxId));
- x2 = x;
- x2 += direction * 192;
+ LoadPalette(sBoxTitleColors[GetBoxWallpaper(boxId)], palOffset, sizeof(sBoxTitleColors[0]));
+ x = GetBoxTitleBaseX(GetBoxNamePtr(boxId));
+ adjustedX = x;
+ adjustedX += direction * 192;
+ // Title is split across two sprites
for (i = 0; i < 2; i++)
{
- u8 spriteId = CreateSprite(&template, i * 32 + x2, 28, 24);
+ u8 spriteId = CreateSprite(&template, i * 32 + adjustedX, 28, 24);
- sPSSData->field_728[i] = &gSprites[spriteId];
- sPSSData->field_728[i]->data[0] = (-direction) * 6;
- sPSSData->field_728[i]->data[1] = i * 32 + x;
- sPSSData->field_728[i]->data[2] = 0;
- sPSSData->field_728[i]->callback = sub_80CCF30;
- StartSpriteAnim(sPSSData->field_728[i], i);
+ sStorage->nextBoxTitleSprites[i] = &gSprites[spriteId];
+ sStorage->nextBoxTitleSprites[i]->sSpeed = (-direction) * 6;
+ sStorage->nextBoxTitleSprites[i]->sIncomingX = i * 32 + x;
+ sStorage->nextBoxTitleSprites[i]->sIncomingDelay = 0;
+ sStorage->nextBoxTitleSprites[i]->callback = SpriteCB_IncomingBoxTitle;
+ StartSpriteAnim(sStorage->nextBoxTitleSprites[i], i);
- sPSSData->field_720[i]->data[0] = (-direction) * 6;
- sPSSData->field_720[i]->data[1] = 1;
- sPSSData->field_720[i]->callback = sub_80CCF64;
+ sStorage->curBoxTitleSprites[i]->sSpeed = (-direction) * 6;
+ sStorage->curBoxTitleSprites[i]->sOutgoingDelay = 1;
+ sStorage->curBoxTitleSprites[i]->callback = SpriteCB_OutgoingBoxTitle;
}
}
-static void sub_80CCEE0(void)
+static void CycleBoxTitleSprites(void)
{
- if (sPSSData->field_6F8 == 0)
- FreeSpriteTilesByTag(TAG_TILE_4);
+ if (sStorage->boxTitleCycleId == 0)
+ FreeSpriteTilesByTag(GFXTAG_BOX_TITLE_ALT);
else
- FreeSpriteTilesByTag(TAG_TILE_3);
+ FreeSpriteTilesByTag(GFXTAG_BOX_TITLE);
- sPSSData->field_720[0] = sPSSData->field_728[0];
- sPSSData->field_720[1] = sPSSData->field_728[1];
+ sStorage->curBoxTitleSprites[0] = sStorage->nextBoxTitleSprites[0];
+ sStorage->curBoxTitleSprites[1] = sStorage->nextBoxTitleSprites[1];
}
-static void sub_80CCF30(struct Sprite *sprite)
+static void SpriteCB_IncomingBoxTitle(struct Sprite *sprite)
{
- if (sprite->data[2] != 0)
- sprite->data[2]--;
- else if ((sprite->pos1.x += sprite->data[0]) == sprite->data[1])
+ if (sprite->sIncomingDelay != 0)
+ sprite->sIncomingDelay--;
+ else if ((sprite->x += sprite->sSpeed) == sprite->sIncomingX)
sprite->callback = SpriteCallbackDummy;
}
-static void sub_80CCF64(struct Sprite *sprite)
+static void SpriteCB_OutgoingBoxTitle(struct Sprite *sprite)
{
- if (sprite->data[1] != 0)
+ if (sprite->sOutgoingDelay != 0)
{
- sprite->data[1]--;
+ sprite->sOutgoingDelay--;
}
else
{
- sprite->pos1.x += sprite->data[0];
- sprite->data[2] = sprite->pos1.x + sprite->pos2.x;
- if (sprite->data[2] < 0x40 || sprite->data[2] > 0x100)
+ sprite->x += sprite->sSpeed;
+ sprite->sOutgoingX = sprite->x + sprite->x2;
+ if (sprite->sOutgoingX < 64 || sprite->sOutgoingX > DISPLAY_WIDTH + 16)
DestroySprite(sprite);
}
}
-static void sub_80CCF9C(void)
+#undef sSpeed
+#undef sIncomingX
+#undef sIncomingDelay
+#undef sOutgoingDelay
+#undef sOutgoingX
+
+static void CycleBoxTitleColor(void)
{
u8 boxId = StorageGetCurrentBox();
u8 wallpaperId = GetBoxWallpaper(boxId);
- if (sPSSData->field_6F8 == 0)
- CpuCopy16(gUnknown_08577574[wallpaperId], gPlttBufferUnfaded + sPSSData->field_71C, 4);
+ if (sStorage->boxTitleCycleId == 0)
+ CpuCopy16(sBoxTitleColors[wallpaperId], gPlttBufferUnfaded + sStorage->boxTitlePalOffset, 4);
else
- CpuCopy16(gUnknown_08577574[wallpaperId], gPlttBufferUnfaded + sPSSData->field_71E, 4);
+ CpuCopy16(sBoxTitleColors[wallpaperId], gPlttBufferUnfaded + sStorage->boxTitleAltPalOffset, 4);
}
-static s16 sub_80CD00C(const u8 *string)
+static s16 GetBoxTitleBaseX(const u8 *string)
{
- return 0xB0 - GetStringWidth(1, string, 0) / 2;
+ return DISPLAY_WIDTH - 64 - GetStringWidth(1, string, 0) / 2;
}
-static void sub_80CD02C(void)
+
+//------------------------------------------------------------------------------
+// SECTION: Scroll arrows
+//------------------------------------------------------------------------------
+
+
+// Sprite data for box scroll arrows
+#define sState data[0]
+#define sTimer data[1]
+#define sSpeed data[3]
+
+static void CreateBoxScrollArrows(void)
{
u16 i;
- LoadSpriteSheet(&gUnknown_0857B080);
+ LoadSpriteSheet(&sSpriteSheet_Arrow);
for (i = 0; i < 2; i++)
{
- u8 spriteId = CreateSprite(&gUnknown_0857B0E0, 0x5c + i * 0x88, 28, 22);
+ u8 spriteId = CreateSprite(&sSpriteTemplate_Arrow, 92 + i * 136, 28, 22);
if (spriteId != MAX_SPRITES)
{
struct Sprite *sprite = &gSprites[spriteId];
StartSpriteAnim(sprite, i);
- sprite->data[3] = (i == 0) ? -1 : 1;
- sPSSData->field_730[i] = sprite;
+ sprite->sSpeed = (i == 0) ? -1 : 1;
+ sStorage->arrowSprites[i] = sprite;
}
}
- if (IsCursorOnBox())
- sub_80CD1A8(TRUE);
+ if (IsCursorOnBoxTitle())
+ AnimateBoxScrollArrows(TRUE);
}
-static void sub_80CD0B8(s8 direction)
+// Slide box scroll arrows horizontally for box change
+static void StartBoxScrollArrowsSlide(s8 direction)
{
u16 i;
for (i = 0; i < 2; i++)
{
- sPSSData->field_730[i]->pos2.x = 0;
- sPSSData->field_730[i]->data[0] = 2;
+ sStorage->arrowSprites[i]->x2 = 0;
+ sStorage->arrowSprites[i]->sState = 2;
}
if (direction < 0)
{
- sPSSData->field_730[0]->data[1] = 29;
- sPSSData->field_730[1]->data[1] = 5;
- sPSSData->field_730[0]->data[2] = 0x48;
- sPSSData->field_730[1]->data[2] = 0x48;
+ sStorage->arrowSprites[0]->sTimer = 29;
+ sStorage->arrowSprites[1]->sTimer = 5;
+ sStorage->arrowSprites[0]->data[2] = 72;
+ sStorage->arrowSprites[1]->data[2] = 72;
}
else
{
- sPSSData->field_730[0]->data[1] = 5;
- sPSSData->field_730[1]->data[1] = 29;
- sPSSData->field_730[0]->data[2] = 0xF8;
- sPSSData->field_730[1]->data[2] = 0xF8;
+ sStorage->arrowSprites[0]->sTimer = 5;
+ sStorage->arrowSprites[1]->sTimer = 29;
+ sStorage->arrowSprites[0]->data[2] = DISPLAY_WIDTH + 8;
+ sStorage->arrowSprites[1]->data[2] = DISPLAY_WIDTH + 8;
}
- sPSSData->field_730[0]->data[7] = 0;
- sPSSData->field_730[1]->data[7] = 1;
+ sStorage->arrowSprites[0]->data[7] = 0;
+ sStorage->arrowSprites[1]->data[7] = 1;
}
-static void sub_80CD158(void)
+// New box's scroll arrows have entered, stop sliding and set their position
+static void StopBoxScrollArrowsSlide(void)
{
u16 i;
for (i = 0; i < 2; i++)
{
- sPSSData->field_730[i]->pos1.x = 0x88 * i + 0x5c;
- sPSSData->field_730[i]->pos2.x = 0;
- sPSSData->field_730[i]->invisible = FALSE;
+ sStorage->arrowSprites[i]->x = 136 * i + 92;
+ sStorage->arrowSprites[i]->x2 = 0;
+ sStorage->arrowSprites[i]->invisible = FALSE;
}
- sub_80CD1A8(TRUE);
+ AnimateBoxScrollArrows(TRUE);
}
-static void sub_80CD1A8(bool8 a0)
+// Bounce scroll arrows while title is selected
+static void AnimateBoxScrollArrows(bool8 animate)
{
u16 i;
- if (a0)
+ if (animate)
{
+ // Start arrows moving
for (i = 0; i < 2; i++)
{
- sPSSData->field_730[i]->data[0] = 1;
- sPSSData->field_730[i]->data[1] = 0;
- sPSSData->field_730[i]->data[2] = 0;
- sPSSData->field_730[i]->data[4] = 0;
+ sStorage->arrowSprites[i]->sState = 1;
+ sStorage->arrowSprites[i]->sTimer = 0;
+ sStorage->arrowSprites[i]->data[2] = 0;
+ sStorage->arrowSprites[i]->data[4] = 0;
}
}
else
{
+ // Stop arrows moving
for (i = 0; i < 2; i++)
- {
- sPSSData->field_730[i]->data[0] = 0;
- }
+ sStorage->arrowSprites[i]->sState = 0;
}
}
-static void sub_80CD210(struct Sprite *sprite)
+static void SpriteCB_Arrow(struct Sprite *sprite)
{
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
- sprite->pos2.x = 0;
+ sprite->x2 = 0;
break;
case 1:
- if (++sprite->data[1] > 3)
+ if (++sprite->sTimer > 3)
{
- sprite->data[1] = 0;
- sprite->pos2.x += sprite->data[3];
+ sprite->sTimer = 0;
+ sprite->x2 += sprite->sSpeed;
if (++sprite->data[2] > 5)
{
sprite->data[2] = 0;
- sprite->pos2.x = 0;
+ sprite->x2 = 0;
}
}
break;
case 2:
- sprite->data[0] = 3;
+ sprite->sState = 3;
break;
case 3:
- sprite->pos1.x -= sPSSData->wallpaperScrollSpeed;
- if (sprite->pos1.x < 73 || sprite->pos1.x > 247)
+ sprite->x -= sStorage->scrollSpeed;
+ if (sprite->x <= 72 || sprite->x >= DISPLAY_WIDTH + 8)
sprite->invisible = TRUE;
- if (--sprite->data[1] == 0)
+ if (--sprite->sTimer == 0)
{
- sprite->pos1.x = sprite->data[2];
+ sprite->x = sprite->data[2];
sprite->invisible = FALSE;
- sprite->data[0] = 4;
+ sprite->sState = 4;
}
break;
case 4:
- sprite->pos1.x -= sPSSData->wallpaperScrollSpeed;
+ sprite->x -= sStorage->scrollSpeed;
break;
}
}
-static struct Sprite *sub_80CD2E8(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority)
+#undef sState
+#undef sSpeed
+
+// Arrows for Deposit/Jump Box selection
+static struct Sprite *CreateChooseBoxArrows(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority)
{
- u8 spriteId = CreateSprite(&gUnknown_0857B0E0, x, y, subpriority);
+ u8 spriteId = CreateSprite(&sSpriteTemplate_Arrow, x, y, subpriority);
if (spriteId == MAX_SPRITES)
return NULL;
@@ -5763,299 +5791,320 @@ static struct Sprite *sub_80CD2E8(u16 x, u16 y, u8 animId, u8 priority, u8 subpr
return &gSprites[spriteId];
}
-static void sub_80CD36C(void)
+
+//------------------------------------------------------------------------------
+// SECTION: Cursor movement
+//
+// The functions below generally handle the cursor's movement, including
+// moving around the box and picking up/putting down Pokémon.
+//------------------------------------------------------------------------------
+
+
+static void InitCursor(void)
{
- if (sPSSData->boxOption != BOX_OPTION_DEPOSIT)
- sBoxCursorArea = CURSOR_AREA_IN_BOX;
+ if (sStorage->boxOption != OPTION_DEPOSIT)
+ sCursorArea = CURSOR_AREA_IN_BOX;
else
- sBoxCursorArea = CURSOR_AREA_IN_PARTY;
+ sCursorArea = CURSOR_AREA_IN_PARTY;
- sBoxCursorPosition = 0;
+ sCursorPosition = 0;
sIsMonBeingMoved = FALSE;
sMovingMonOrigBoxId = 0;
sMovingMonOrigBoxPos = 0;
- sCanOnlyMove = FALSE;
- sub_80CDC0C();
- sub_80CFC14();
- sPSSData->field_CD6 = 1;
- sPSSData->inBoxMovingMode = 0;
- sub_80CEB40();
+ sAutoActionOn = FALSE;
+ ClearSavedCursorPos();
+ CreateCursorSprites();
+ sStorage->cursorPrevHorizPos = 1;
+ sStorage->inBoxMovingMode = MOVE_MODE_NORMAL;
+ TryRefreshDisplayMon();
}
-static void sub_80CD3EC(void)
+static void InitCursorOnReopen(void)
{
- sub_80CFC14();
- sub_80CEBDC();
- sPSSData->field_CD6 = 1;
- sPSSData->inBoxMovingMode = 0;
+ CreateCursorSprites();
+ ReshowDisplayMon();
+ sStorage->cursorPrevHorizPos = 1;
+ sStorage->inBoxMovingMode = MOVE_MODE_NORMAL;
if (sIsMonBeingMoved)
{
- sPSSData->movingMon = gUnknown_02039D14;
+ sStorage->movingMon = sSavedMovingMon;
CreateMovingMonIcon();
}
}
-static void sub_80CD444(u8 cursorArea, u8 cursorPosition, u16 *x, u16 *y)
+static void GetCursorCoordsByPos(u8 cursorArea, u8 cursorPosition, u16 *x, u16 *y)
{
switch (cursorArea)
{
case CURSOR_AREA_IN_BOX:
- *x = (cursorPosition % IN_BOX_ROWS) * 24 + 100;
- *y = (cursorPosition / IN_BOX_ROWS) * 24 + 32;
+ *x = (cursorPosition % IN_BOX_COLUMNS) * 24 + 100;
+ *y = (cursorPosition / IN_BOX_COLUMNS) * 24 + 32;
break;
case CURSOR_AREA_IN_PARTY:
if (cursorPosition == 0)
{
- *x = 0x68;
- *y = 0x34;
+ *x = 104;
+ *y = 52;
}
else if (cursorPosition == PARTY_SIZE)
{
- *x = 0x98;
- *y = 0x84;
+ *x = 152;
+ *y = 132;
}
else
{
- *x = 0x98;
+ *x = 152;
*y = (cursorPosition - 1) * 24 + 4;
}
break;
- case CURSOR_AREA_BOX:
- *x = 0xa2;
- *y = 0x0c;
+ case CURSOR_AREA_BOX_TITLE:
+ *x = 162;
+ *y = 12;
break;
case CURSOR_AREA_BUTTONS:
*y = sIsMonBeingMoved ? 8 : 14;
- *x = cursorPosition * 0x58 + 0x78;
+ *x = cursorPosition * 88 + 120;
break;
case 4:
- *x = 0xa0;
- *y = 0x60;
+ *x = 160;
+ *y = 96;
break;
}
}
-static u16 sub_80CD504(void)
+static u16 GetSpeciesAtCursorPosition(void)
{
- switch (sBoxCursorArea)
+ switch (sCursorArea)
{
case CURSOR_AREA_IN_PARTY:
- return GetMonData(&gPlayerParty[sBoxCursorPosition], MON_DATA_SPECIES);
+ return GetMonData(&gPlayerParty[sCursorPosition], MON_DATA_SPECIES);
case CURSOR_AREA_IN_BOX:
- return GetCurrentBoxMonData(sBoxCursorPosition, MON_DATA_SPECIES);
+ return GetCurrentBoxMonData(sCursorPosition, MON_DATA_SPECIES);
default:
return SPECIES_NONE;
}
}
-static bool8 sub_80CD554(void)
+static bool8 UpdateCursorPos(void)
{
s16 tmp;
- if (sPSSData->field_CD0 == 0)
+ if (sStorage->cursorMoveSteps == 0)
{
- if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ if (sStorage->boxOption != OPTION_MOVE_ITEMS)
return FALSE;
else
- return sub_80D1218();
+ return IsItemIconAnimActive();
}
- else if (--sPSSData->field_CD0 != 0)
+ else if (--sStorage->cursorMoveSteps != 0)
{
- sPSSData->field_CBC += sPSSData->field_CC4;
- sPSSData->field_CC0 += sPSSData->field_CC8;
- sPSSData->field_CB4->pos1.x = sPSSData->field_CBC >> 8;
- sPSSData->field_CB4->pos1.y = sPSSData->field_CC0 >> 8;
- if (sPSSData->field_CB4->pos1.x > 0x100)
+ // Update position toward target
+ sStorage->cursorNewX += sStorage->cursorSpeedX;
+ sStorage->cursorNewY += sStorage->cursorSpeedY;
+ sStorage->cursorSprite->x = sStorage->cursorNewX >> 8;
+ sStorage->cursorSprite->y = sStorage->cursorNewY >> 8;
+
+ // Limit cursor on right
+ if (sStorage->cursorSprite->x > DISPLAY_WIDTH + 16)
{
- tmp = sPSSData->field_CB4->pos1.x - 0x100;
- sPSSData->field_CB4->pos1.x = tmp + 0x40;
+ tmp = sStorage->cursorSprite->x - (DISPLAY_WIDTH + 16);
+ sStorage->cursorSprite->x = tmp + 64;
}
- if (sPSSData->field_CB4->pos1.x < 0x40)
+
+ // Limit cursor on left
+ if (sStorage->cursorSprite->x < 64)
{
- tmp = 0x40 - sPSSData->field_CB4->pos1.x;
- sPSSData->field_CB4->pos1.x = 0x100 - tmp;
+ tmp = 64 - sStorage->cursorSprite->x;
+ sStorage->cursorSprite->x = DISPLAY_WIDTH + 16 - tmp;
}
- if (sPSSData->field_CB4->pos1.y > 0xb0)
+
+ // Limit cursor on bottom
+ if (sStorage->cursorSprite->y > DISPLAY_HEIGHT + 16)
{
- tmp = sPSSData->field_CB4->pos1.y - 0xb0;
- sPSSData->field_CB4->pos1.y = tmp - 0x10;
+ tmp = sStorage->cursorSprite->y - (DISPLAY_HEIGHT + 16);
+ sStorage->cursorSprite->y = tmp - 16;
}
- if (sPSSData->field_CB4->pos1.y < -0x10)
+
+ // Limit cursor on top
+ if (sStorage->cursorSprite->y < -16)
{
- tmp = -0x10 - sPSSData->field_CB4->pos1.y;
- sPSSData->field_CB4->pos1.y = 0xb0 - tmp;
+ tmp = -16 - sStorage->cursorSprite->y;
+ sStorage->cursorSprite->y = DISPLAY_HEIGHT + 16 - tmp;
}
- if (sPSSData->field_CD7 && --sPSSData->field_CD7 == 0)
- sPSSData->field_CB4->vFlip = (sPSSData->field_CB4->vFlip == FALSE);
+
+ // Cursor flips vertically when moving on/off the top buttons
+ if (sStorage->cursorFlipTimer && --sStorage->cursorFlipTimer == 0)
+ sStorage->cursorSprite->vFlip = (sStorage->cursorSprite->vFlip == FALSE);
}
else
{
- sPSSData->field_CB4->pos1.x = sPSSData->field_CCC;
- sPSSData->field_CB4->pos1.y = sPSSData->field_CCE;
- sub_80CDA68();
+ // Time is up for cursor movement, make sure it's exactly at target
+ sStorage->cursorSprite->x = sStorage->cursorTargetX;
+ sStorage->cursorSprite->y = sStorage->cursorTargetY;
+ DoCursorNewPosUpdate();
}
return TRUE;
}
-static void sub_80CD6AC(u8 newCursorArea, u8 newCursorPosition)
+static void InitNewCursorPos(u8 newCursorArea, u8 newCursorPosition)
{
u16 x, y;
- sub_80CD444(newCursorArea, newCursorPosition, &x, &y);
- sPSSData->field_CD4 = newCursorArea;
- sPSSData->field_CD5 = newCursorPosition;
- sPSSData->field_CCC = x;
- sPSSData->field_CCE = y;
+ GetCursorCoordsByPos(newCursorArea, newCursorPosition, &x, &y);
+ sStorage->newCursorArea = newCursorArea;
+ sStorage->newCursorPosition = newCursorPosition;
+ sStorage->cursorTargetX = x;
+ sStorage->cursorTargetY = y;
}
-static void sub_80CD70C(void)
+static void InitCursorMove(void)
{
- int r7, r0;
+ int yDistance, xDistance;
- if (sPSSData->field_CD2 != 0 || sPSSData->field_CD3 != 0)
- sPSSData->field_CD0 = 12;
+ if (sStorage->cursorVerticalWrap != 0 || sStorage->cursorHorizontalWrap != 0)
+ sStorage->cursorMoveSteps = 12;
else
- sPSSData->field_CD0 = 6;
+ sStorage->cursorMoveSteps = 6;
- if (sPSSData->field_CD7)
- sPSSData->field_CD7 = sPSSData->field_CD0 >> 1;
+ if (sStorage->cursorFlipTimer)
+ sStorage->cursorFlipTimer = sStorage->cursorMoveSteps >> 1;
- switch (sPSSData->field_CD2)
+ switch (sStorage->cursorVerticalWrap)
{
- default:
- r7 = sPSSData->field_CCE - sPSSData->field_CB4->pos1.y;
+ default: // No wrap
+ yDistance = sStorage->cursorTargetY - sStorage->cursorSprite->y;
break;
- case -1:
- r7 = sPSSData->field_CCE - 0xc0 - sPSSData->field_CB4->pos1.y;
+ case -1: // Wrap from top to bottom
+ yDistance = sStorage->cursorTargetY - 192 - sStorage->cursorSprite->y;
break;
- case 1:
- r7 = sPSSData->field_CCE + 0xc0 - sPSSData->field_CB4->pos1.y;
+ case 1: // Wrap from bottom to top
+ yDistance = sStorage->cursorTargetY + 192 - sStorage->cursorSprite->y;
break;
}
- switch (sPSSData->field_CD3)
+ switch (sStorage->cursorHorizontalWrap)
{
- default:
- r0 = sPSSData->field_CCC - sPSSData->field_CB4->pos1.x;
+ default: // No Wrap
+ xDistance = sStorage->cursorTargetX - sStorage->cursorSprite->x;
break;
- case -1:
- r0 = sPSSData->field_CCC - 0xc0 - sPSSData->field_CB4->pos1.x;
+ case -1: // Wrap from left to right
+ xDistance = sStorage->cursorTargetX - 192 - sStorage->cursorSprite->x;
break;
- case 1:
- r0 = sPSSData->field_CCC + 0xc0 - sPSSData->field_CB4->pos1.x;
+ case 1: // Wrap from right to left
+ xDistance = sStorage->cursorTargetX + 192 - sStorage->cursorSprite->x;
break;
}
- r7 <<= 8;
- r0 <<= 8;
- sPSSData->field_CC4 = r0 / sPSSData->field_CD0;
- sPSSData->field_CC8 = r7 / sPSSData->field_CD0;
- sPSSData->field_CBC = sPSSData->field_CB4->pos1.x << 8;
- sPSSData->field_CC0 = sPSSData->field_CB4->pos1.y << 8;
+ yDistance <<= 8;
+ xDistance <<= 8;
+ sStorage->cursorSpeedX = xDistance / sStorage->cursorMoveSteps;
+ sStorage->cursorSpeedY = yDistance / sStorage->cursorMoveSteps;
+ sStorage->cursorNewX = sStorage->cursorSprite->x << 8;
+ sStorage->cursorNewY = sStorage->cursorSprite->y << 8;
}
-static void sub_80CD894(u8 newCursorArea, u8 newCursorPosition)
+static void SetCursorPosition(u8 newCursorArea, u8 newCursorPosition)
{
- sub_80CD6AC(newCursorArea, newCursorPosition);
- sub_80CD70C();
- if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ InitNewCursorPos(newCursorArea, newCursorPosition);
+ InitCursorMove();
+ if (sStorage->boxOption != OPTION_MOVE_ITEMS)
{
- if (sPSSData->inBoxMovingMode == 0 && !sIsMonBeingMoved)
- StartSpriteAnim(sPSSData->field_CB4, 1);
+ if (sStorage->inBoxMovingMode == MOVE_MODE_NORMAL && !sIsMonBeingMoved)
+ StartSpriteAnim(sStorage->cursorSprite, CURSOR_ANIM_STILL);
}
else
{
- if (!IsActiveItemMoving())
- StartSpriteAnim(sPSSData->field_CB4, 1);
+ if (!IsMovingItem())
+ StartSpriteAnim(sStorage->cursorSprite, CURSOR_ANIM_STILL);
}
- if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
+ if (sStorage->boxOption == OPTION_MOVE_ITEMS)
{
- if (sBoxCursorArea == CURSOR_AREA_IN_BOX)
- sub_80D0E50(CURSOR_AREA_IN_BOX, sBoxCursorPosition);
- else if (sBoxCursorArea == CURSOR_AREA_IN_PARTY)
- sub_80D0E50(CURSOR_AREA_IN_PARTY, sBoxCursorPosition);
+ if (sCursorArea == CURSOR_AREA_IN_BOX)
+ TryHideItemIconAtPos(CURSOR_AREA_IN_BOX, sCursorPosition);
+ else if (sCursorArea == CURSOR_AREA_IN_PARTY)
+ TryHideItemIconAtPos(CURSOR_AREA_IN_PARTY, sCursorPosition);
if (newCursorArea == CURSOR_AREA_IN_BOX)
- sub_80D0D8C(newCursorArea, newCursorPosition);
+ TryLoadItemIconAtPos(newCursorArea, newCursorPosition);
else if (newCursorArea == CURSOR_AREA_IN_PARTY)
- sub_80D0D8C(newCursorArea, newCursorPosition);
+ TryLoadItemIconAtPos(newCursorArea, newCursorPosition);
}
- if (newCursorArea == CURSOR_AREA_IN_PARTY && sBoxCursorArea != CURSOR_AREA_IN_PARTY)
+ if (newCursorArea == CURSOR_AREA_IN_PARTY && sCursorArea != CURSOR_AREA_IN_PARTY)
{
- sPSSData->field_CD6 = newCursorArea;
- sPSSData->field_CB8->invisible = TRUE;
+ sStorage->cursorPrevHorizPos = 1;
+ sStorage->cursorShadowSprite->invisible = TRUE;
}
switch (newCursorArea)
{
case CURSOR_AREA_IN_PARTY:
- case CURSOR_AREA_BOX:
+ case CURSOR_AREA_BOX_TITLE:
case CURSOR_AREA_BUTTONS:
- sPSSData->field_CB4->oam.priority = 1;
- sPSSData->field_CB8->invisible = TRUE;
- sPSSData->field_CB8->oam.priority = 1;
+ sStorage->cursorSprite->oam.priority = 1;
+ sStorage->cursorShadowSprite->invisible = TRUE;
+ sStorage->cursorShadowSprite->oam.priority = 1;
break;
case CURSOR_AREA_IN_BOX:
- if (sPSSData->inBoxMovingMode != 0)
+ if (sStorage->inBoxMovingMode != MOVE_MODE_NORMAL)
{
- sPSSData->field_CB4->oam.priority = 0;
- sPSSData->field_CB8->invisible = TRUE;
+ sStorage->cursorSprite->oam.priority = 0;
+ sStorage->cursorShadowSprite->invisible = TRUE;
}
else
{
- sPSSData->field_CB4->oam.priority = 2;
- if (sBoxCursorArea == CURSOR_AREA_IN_BOX && sIsMonBeingMoved)
+ sStorage->cursorSprite->oam.priority = 2;
+ if (sCursorArea == CURSOR_AREA_IN_BOX && sIsMonBeingMoved)
SetMovingMonPriority(2);
}
break;
}
}
-static void sub_80CDA68(void)
+static void DoCursorNewPosUpdate(void)
{
- sBoxCursorArea = sPSSData->field_CD4;
- sBoxCursorPosition = sPSSData->field_CD5;
- if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ sCursorArea = sStorage->newCursorArea;
+ sCursorPosition = sStorage->newCursorPosition;
+ if (sStorage->boxOption != OPTION_MOVE_ITEMS)
{
- if (sPSSData->inBoxMovingMode == 0 && !sIsMonBeingMoved)
- StartSpriteAnim(sPSSData->field_CB4, 0);
+ if (sStorage->inBoxMovingMode == MOVE_MODE_NORMAL && !sIsMonBeingMoved)
+ StartSpriteAnim(sStorage->cursorSprite, CURSOR_ANIM_BOUNCE);
}
else
{
- if (!IsActiveItemMoving())
- StartSpriteAnim(sPSSData->field_CB4, 0);
+ if (!IsMovingItem())
+ StartSpriteAnim(sStorage->cursorSprite, CURSOR_ANIM_BOUNCE);
}
- sub_80CEB40();
- switch (sBoxCursorArea)
+ TryRefreshDisplayMon();
+ switch (sCursorArea)
{
case CURSOR_AREA_BUTTONS:
SetMovingMonPriority(1);
break;
- case CURSOR_AREA_BOX:
- sub_80CD1A8(TRUE);
+ case CURSOR_AREA_BOX_TITLE:
+ AnimateBoxScrollArrows(TRUE);
break;
case CURSOR_AREA_IN_PARTY:
- sPSSData->field_CB8->subpriority = 13;
+ sStorage->cursorShadowSprite->subpriority = 13;
SetMovingMonPriority(1);
break;
case CURSOR_AREA_IN_BOX:
- if (sPSSData->inBoxMovingMode == 0)
+ if (sStorage->inBoxMovingMode == MOVE_MODE_NORMAL)
{
- sPSSData->field_CB4->oam.priority = 1;
- sPSSData->field_CB8->oam.priority = 2;
- sPSSData->field_CB8->subpriority = 21;
- sPSSData->field_CB8->invisible = FALSE;
+ sStorage->cursorSprite->oam.priority = 1;
+ sStorage->cursorShadowSprite->oam.priority = 2;
+ sStorage->cursorShadowSprite->subpriority = 21;
+ sStorage->cursorShadowSprite->invisible = FALSE;
SetMovingMonPriority(2);
}
break;
}
}
-static void sub_80CDBA0(void)
+static void SetCursorInParty(void)
{
u8 partyCount;
@@ -6069,82 +6118,84 @@ static void sub_80CDBA0(void)
if (partyCount >= PARTY_SIZE)
partyCount = PARTY_SIZE - 1;
}
- if (sPSSData->field_CB4->vFlip)
- sPSSData->field_CD7 = 1;
- sub_80CD894(CURSOR_AREA_IN_PARTY, partyCount);
+ if (sStorage->cursorSprite->vFlip)
+ sStorage->cursorFlipTimer = 1;
+ SetCursorPosition(CURSOR_AREA_IN_PARTY, partyCount);
}
-static void sub_80CDBF8(u8 cursorBoxPosition)
+static void SetCursorBoxPosition(u8 cursorBoxPosition)
{
- sub_80CD894(CURSOR_AREA_IN_BOX, cursorBoxPosition);
+ SetCursorPosition(CURSOR_AREA_IN_BOX, cursorBoxPosition);
}
-EWRAM_DATA static u8 gUnknown_02039D7E = 0;
+EWRAM_DATA static u8 sSavedCursorPosition = 0;
-static void sub_80CDC0C(void)
+static void ClearSavedCursorPos(void)
{
- gUnknown_02039D7E = 0;
+ sSavedCursorPosition = 0;
}
-static void sub_80CDC18(void)
+static void SaveCursorPos(void)
{
- gUnknown_02039D7E = sBoxCursorPosition;
+ sSavedCursorPosition = sCursorPosition;
}
-static u8 sub_80CDC2C(void)
+static u8 GetSavedCursorPos(void)
{
- return gUnknown_02039D7E;
+ return sSavedCursorPosition;
}
-static void InitMonPlaceChange(u8 a0)
+static void InitMonPlaceChange(u8 type)
{
static bool8 (*const placeChangeFuncs[])(void) =
{
- MonPlaceChange_Move,
- MonPlaceChange_Place,
- MonPlaceChange_Shift,
+ [CHANGE_GRAB] = MonPlaceChange_Grab,
+ [CHANGE_PLACE] = MonPlaceChange_Place,
+ [CHANGE_SHIFT] = MonPlaceChange_Shift,
};
- sPSSData->monPlaceChangeFunc = placeChangeFuncs[a0];
- sPSSData->monPlaceChangeState = 0;
+ sStorage->monPlaceChangeFunc = placeChangeFuncs[type];
+ sStorage->monPlaceChangeState = 0;
}
-static void sub_80CDC64(bool8 arg0)
+// No Shift while moving multiple Pokémon, only grab and place
+// For both grab/place, the cursor moves down, then up
+static void InitMultiMonPlaceChange(bool8 up)
{
- if (!arg0)
- sPSSData->monPlaceChangeFunc = sub_80CDEB4;
+ if (!up)
+ sStorage->monPlaceChangeFunc = MultiMonPlaceChange_Down;
else
- sPSSData->monPlaceChangeFunc = sub_80CDEC4;
+ sStorage->monPlaceChangeFunc = MultiMonPlaceChange_Up;
- sPSSData->monPlaceChangeState = 0;
+ sStorage->monPlaceChangeState = 0;
}
static bool8 DoMonPlaceChange(void)
{
- return sPSSData->monPlaceChangeFunc();
+ return sStorage->monPlaceChangeFunc();
}
-static bool8 MonPlaceChange_Move(void)
+static bool8 MonPlaceChange_Grab(void)
{
- switch (sPSSData->monPlaceChangeState)
+ switch (sStorage->monPlaceChangeState)
{
case 0:
if (sIsMonBeingMoved)
return FALSE;
- StartSpriteAnim(sPSSData->field_CB4, 2);
- sPSSData->monPlaceChangeState++;
+ StartSpriteAnim(sStorage->cursorSprite, CURSOR_ANIM_OPEN);
+ sStorage->monPlaceChangeState++;
break;
case 1:
- if (!sub_80CDED4())
+ if (!MonPlaceChange_CursorDown())
{
- StartSpriteAnim(sPSSData->field_CB4, 3);
+ StartSpriteAnim(sStorage->cursorSprite, CURSOR_ANIM_FIST);
MoveMon();
- sPSSData->monPlaceChangeState++;
+ sStorage->monPlaceChangeState++;
}
break;
case 2:
- if (!sub_80CDF08())
- sPSSData->monPlaceChangeState++;
+ if (!MonPlaceChange_CursorUp())
+ sStorage->monPlaceChangeState++;
break;
case 3:
return FALSE;
@@ -6155,21 +6206,21 @@ static bool8 MonPlaceChange_Move(void)
static bool8 MonPlaceChange_Place(void)
{
- switch (sPSSData->monPlaceChangeState)
+ switch (sStorage->monPlaceChangeState)
{
case 0:
- if (!sub_80CDED4())
+ if (!MonPlaceChange_CursorDown())
{
- StartSpriteAnim(sPSSData->field_CB4, 2);
+ StartSpriteAnim(sStorage->cursorSprite, CURSOR_ANIM_OPEN);
PlaceMon();
- sPSSData->monPlaceChangeState++;
+ sStorage->monPlaceChangeState++;
}
break;
case 1:
- if (!sub_80CDF08())
+ if (!MonPlaceChange_CursorUp())
{
- StartSpriteAnim(sPSSData->field_CB4, 0);
- sPSSData->monPlaceChangeState++;
+ StartSpriteAnim(sStorage->cursorSprite, CURSOR_ANIM_BOUNCE);
+ sStorage->monPlaceChangeState++;
}
break;
case 2:
@@ -6181,30 +6232,30 @@ static bool8 MonPlaceChange_Place(void)
static bool8 MonPlaceChange_Shift(void)
{
- switch (sPSSData->monPlaceChangeState)
+ switch (sStorage->monPlaceChangeState)
{
case 0:
- switch (sBoxCursorArea)
+ switch (sCursorArea)
{
case CURSOR_AREA_IN_PARTY:
- sPSSData->field_D91 = TOTAL_BOXES_COUNT;
+ sStorage->shiftBoxId = TOTAL_BOXES_COUNT;
break;
case CURSOR_AREA_IN_BOX:
- sPSSData->field_D91 = StorageGetCurrentBox();
+ sStorage->shiftBoxId = StorageGetCurrentBox();
break;
default:
return FALSE;
}
- StartSpriteAnim(sPSSData->field_CB4, 2);
- sub_80CBD5C(sPSSData->field_D91, sBoxCursorPosition);
- sPSSData->monPlaceChangeState++;
+ StartSpriteAnim(sStorage->cursorSprite, CURSOR_ANIM_OPEN);
+ SaveMonSpriteAtPos(sStorage->shiftBoxId, sCursorPosition);
+ sStorage->monPlaceChangeState++;
break;
case 1:
- if (!sub_80CBDC4())
+ if (!MoveShiftingMons())
{
- StartSpriteAnim(sPSSData->field_CB4, 3);
- SetShiftedMonData(sPSSData->field_D91, sBoxCursorPosition);
- sPSSData->monPlaceChangeState++;
+ StartSpriteAnim(sStorage->cursorSprite, CURSOR_ANIM_FIST);
+ SetShiftedMonData(sStorage->shiftBoxId, sCursorPosition);
+ sStorage->monPlaceChangeState++;
}
break;
case 2:
@@ -6214,60 +6265,70 @@ static bool8 MonPlaceChange_Shift(void)
return TRUE;
}
-static bool8 sub_80CDEB4(void)
+static bool8 MultiMonPlaceChange_Down(void)
{
- return sub_80CDED4();
+ return MonPlaceChange_CursorDown();
}
-static bool8 sub_80CDEC4(void)
+static bool8 MultiMonPlaceChange_Up(void)
{
- return sub_80CDF08();
+ return MonPlaceChange_CursorUp();
}
-static bool8 sub_80CDED4(void)
+static bool8 MonPlaceChange_CursorDown(void)
{
- switch (sPSSData->field_CB4->pos2.y)
+ switch (sStorage->cursorSprite->y2)
{
default:
- sPSSData->field_CB4->pos2.y++;
+ sStorage->cursorSprite->y2++;
break;
case 0:
- sPSSData->field_CB4->pos2.y++;
+ sStorage->cursorSprite->y2++;
break;
- case 8:
+ case 8: // Cursor has reached bottom
return FALSE;
}
return TRUE;
}
-static bool8 sub_80CDF08(void)
+static bool8 MonPlaceChange_CursorUp(void)
{
- switch (sPSSData->field_CB4->pos2.y)
+ switch (sStorage->cursorSprite->y2)
{
- case 0:
+ case 0: // Cursor has reached top
return FALSE;
default:
- sPSSData->field_CB4->pos2.y--;
+ sStorage->cursorSprite->y2--;
break;
}
return TRUE;
}
+
+//------------------------------------------------------------------------------
+// SECTION: Pokémon data
+//
+// The functions below handle moving Pokémon data around while using the PC,
+// including changing the positions of Pokémon, releasing Pokémon, viewing the
+// summary screen, and updating the display of the currently selected Pokémon.
+//------------------------------------------------------------------------------
+
+
static void MoveMon(void)
{
- switch (sBoxCursorArea)
+ switch (sCursorArea)
{
case CURSOR_AREA_IN_PARTY:
- SetMovedMonData(TOTAL_BOXES_COUNT, sBoxCursorPosition);
- sub_80CBC14(MODE_PARTY, sBoxCursorPosition);
+ SetMovingMonData(TOTAL_BOXES_COUNT, sCursorPosition);
+ SetMovingMonSprite(MODE_PARTY, sCursorPosition);
break;
case CURSOR_AREA_IN_BOX:
- if (sPSSData->inBoxMovingMode == 0)
+ if (sStorage->inBoxMovingMode == MOVE_MODE_NORMAL)
{
- SetMovedMonData(StorageGetCurrentBox(), sBoxCursorPosition);
- sub_80CBC14(MODE_BOX, sBoxCursorPosition);
+ SetMovingMonData(StorageGetCurrentBox(), sCursorPosition);
+ SetMovingMonSprite(MODE_BOX, sCursorPosition);
}
break;
default:
@@ -6281,16 +6342,16 @@ static void PlaceMon(void)
{
u8 boxId;
- switch (sBoxCursorArea)
+ switch (sCursorArea)
{
case CURSOR_AREA_IN_PARTY:
- SetPlacedMonData(TOTAL_BOXES_COUNT, sBoxCursorPosition);
- sub_80CBCAC(TOTAL_BOXES_COUNT, sBoxCursorPosition);
+ SetPlacedMonData(TOTAL_BOXES_COUNT, sCursorPosition);
+ SetPlacedMonSprite(TOTAL_BOXES_COUNT, sCursorPosition);
break;
case CURSOR_AREA_IN_BOX:
boxId = StorageGetCurrentBox();
- SetPlacedMonData(boxId, sBoxCursorPosition);
- sub_80CBCAC(boxId, sBoxCursorPosition);
+ SetPlacedMonData(boxId, sCursorPosition);
+ SetPlacedMonSprite(boxId, sCursorPosition);
break;
default:
return;
@@ -6299,17 +6360,17 @@ static void PlaceMon(void)
sIsMonBeingMoved = FALSE;
}
-static void sub_80CE00C(void)
+static void RefreshDisplayMon(void)
{
- sub_80CEB40();
+ TryRefreshDisplayMon();
}
-static void SetMovedMonData(u8 boxId, u8 position)
+static void SetMovingMonData(u8 boxId, u8 position)
{
if (boxId == TOTAL_BOXES_COUNT)
- sPSSData->movingMon = gPlayerParty[sBoxCursorPosition];
+ sStorage->movingMon = gPlayerParty[sCursorPosition];
else
- BoxMonAtToMon(boxId, position, &sPSSData->movingMon);
+ BoxMonAtToMon(boxId, position, &sStorage->movingMon);
PurgeMonOrBoxMon(boxId, position);
sMovingMonOrigBoxId = boxId;
@@ -6320,12 +6381,12 @@ static void SetPlacedMonData(u8 boxId, u8 position)
{
if (boxId == TOTAL_BOXES_COUNT)
{
- gPlayerParty[position] = sPSSData->movingMon;
+ gPlayerParty[position] = sStorage->movingMon;
}
else
{
- BoxMonRestorePP(&sPSSData->movingMon.box);
- SetBoxMonAt(boxId, position, &sPSSData->movingMon.box);
+ BoxMonRestorePP(&sStorage->movingMon.box);
+ SetBoxMonAt(boxId, position, &sStorage->movingMon.box);
}
}
@@ -6340,13 +6401,13 @@ static void PurgeMonOrBoxMon(u8 boxId, u8 position)
static void SetShiftedMonData(u8 boxId, u8 position)
{
if (boxId == TOTAL_BOXES_COUNT)
- sPSSData->field_2108 = gPlayerParty[position];
+ sStorage->tempMon = gPlayerParty[position];
else
- BoxMonAtToMon(boxId, position, &sPSSData->field_2108);
+ BoxMonAtToMon(boxId, position, &sStorage->tempMon);
SetPlacedMonData(boxId, position);
- sPSSData->movingMon = sPSSData->field_2108;
- SetCursorMonData(&sPSSData->movingMon, MODE_PARTY);
+ sStorage->movingMon = sStorage->tempMon;
+ SetDisplayMonData(&sStorage->movingMon, MODE_PARTY);
sMovingMonOrigBoxId = boxId;
sMovingMonOrigBoxPos = position;
}
@@ -6365,44 +6426,44 @@ static bool8 TryStorePartyMonInBox(u8 boxId)
}
else
{
- SetMovedMonData(TOTAL_BOXES_COUNT, sBoxCursorPosition);
+ SetMovingMonData(TOTAL_BOXES_COUNT, sCursorPosition);
SetPlacedMonData(boxId, boxPosition);
- DestroyPartyMonIcon(sBoxCursorPosition);
+ DestroyPartyMonIcon(sCursorPosition);
}
if (boxId == StorageGetCurrentBox())
- sub_80CB140(boxPosition);
+ CreateBoxMonIconAtPos(boxPosition);
- StartSpriteAnim(sPSSData->field_CB4, 1);
+ StartSpriteAnim(sStorage->cursorSprite, CURSOR_ANIM_STILL);
return TRUE;
}
-static void sub_80CE22C(void)
+static void ResetSelectionAfterDeposit(void)
{
- StartSpriteAnim(sPSSData->field_CB4, 0);
- sub_80CEB40();
+ StartSpriteAnim(sStorage->cursorSprite, CURSOR_ANIM_BOUNCE);
+ TryRefreshDisplayMon();
}
-static void sub_80CE250(void)
+static void InitReleaseMon(void)
{
u8 mode;
if (sIsMonBeingMoved)
mode = MODE_MOVE;
- else if (sBoxCursorArea == CURSOR_AREA_IN_PARTY)
+ else if (sCursorArea == CURSOR_AREA_IN_PARTY)
mode = MODE_PARTY;
else
mode = MODE_BOX;
- sub_80CBF14(mode, sBoxCursorPosition);
- StringCopy(sPSSData->field_21E0, sPSSData->cursorMonNick);
+ SetReleaseMon(mode, sCursorPosition);
+ StringCopy(sStorage->releaseMonName, sStorage->displayMonName);
}
-static bool8 sub_80CE2A8(void)
+static bool8 TryHideReleaseMon(void)
{
- if (!sub_80CBFD8())
+ if (!TryHideReleaseMonSprite())
{
- StartSpriteAnim(sPSSData->field_CB4, 0);
+ StartSpriteAnim(sStorage->cursorSprite, CURSOR_ANIM_BOUNCE);
return FALSE;
}
else
@@ -6415,35 +6476,39 @@ static void ReleaseMon(void)
{
u8 boxId;
- sub_80CC020();
+ DestroyReleaseMonIcon();
if (sIsMonBeingMoved)
{
sIsMonBeingMoved = FALSE;
}
else
{
- if (sBoxCursorArea == CURSOR_AREA_IN_PARTY)
+ if (sCursorArea == CURSOR_AREA_IN_PARTY)
boxId = TOTAL_BOXES_COUNT;
else
boxId = StorageGetCurrentBox();
- PurgeMonOrBoxMon(boxId, sBoxCursorPosition);
+ PurgeMonOrBoxMon(boxId, sCursorPosition);
}
- sub_80CEB40();
+ TryRefreshDisplayMon();
}
-static void sub_80CE324(void)
+static void TrySetCursorFistAnim(void)
{
if (sIsMonBeingMoved)
- StartSpriteAnim(sPSSData->field_CB4, 3);
+ StartSpriteAnim(sStorage->cursorSprite, CURSOR_ANIM_FIST);
}
+// If the player is on the listed map (or any map, if none is specified),
+// they may not release their last Pokémon that knows the specified move.
+// This is to stop the player from softlocking themselves by not having
+// a Pokémon that knows a required field move.
struct
{
s8 mapGroup;
s8 mapNum;
u16 move;
-} static const gUnknown_0857B9A4[] =
+} static const sRestrictedReleaseMoves[] =
{
{MAP_GROUPS_COUNT, 0, MOVE_SURF},
{MAP_GROUPS_COUNT, 0, MOVE_DIVE},
@@ -6453,73 +6518,79 @@ struct
{MAP_GROUP(EVER_GRANDE_CITY_POKEMON_LEAGUE_2F), MAP_NUM(EVER_GRANDE_CITY_POKEMON_LEAGUE_2F), MOVE_ROCK_SMASH},
};
-static void sub_80CE350(u16 *moves)
+static void GetRestrictedReleaseMoves(u16 *moves)
{
s32 i;
- for (i = 0; i < ARRAY_COUNT(gUnknown_0857B9A4); i++)
+ for (i = 0; i < ARRAY_COUNT(sRestrictedReleaseMoves); i++)
{
- if (gUnknown_0857B9A4[i].mapGroup == MAP_GROUPS_COUNT
- || (gUnknown_0857B9A4[i].mapGroup == gSaveBlock1Ptr->location.mapGroup && gUnknown_0857B9A4[i].mapNum == gSaveBlock1Ptr->location.mapNum))
+ if (sRestrictedReleaseMoves[i].mapGroup == MAP_GROUPS_COUNT
+ || (sRestrictedReleaseMoves[i].mapGroup == gSaveBlock1Ptr->location.mapGroup
+ && sRestrictedReleaseMoves[i].mapNum == gSaveBlock1Ptr->location.mapNum))
{
- *moves = gUnknown_0857B9A4[i].move;
+ *moves = sRestrictedReleaseMoves[i].move;
moves++;
}
}
-
*moves = MOVES_COUNT;
}
-static void InitCanRelaseMonVars(void)
+static void InitCanReleaseMonVars(void)
{
if (!AtLeastThreeUsableMons())
{
- sPSSData->field_216D = 1;
- sPSSData->field_216C = 0;
+ // The player only has 1 or 2 usable
+ // Pokémon, this one can't be released
+ sStorage->releaseStatusResolved = TRUE;
+ sStorage->canReleaseMon = FALSE;
return;
}
if (sIsMonBeingMoved)
{
- sPSSData->field_2108 = sPSSData->movingMon;
- sPSSData->field_2170 = -1;
- sPSSData->field_2171 = -1;
+ sStorage->tempMon = sStorage->movingMon;
+ sStorage->releaseBoxId = -1;
+ sStorage->releaseBoxPos = -1;
}
else
{
- if (sBoxCursorArea == CURSOR_AREA_IN_PARTY)
+ if (sCursorArea == CURSOR_AREA_IN_PARTY)
{
- sPSSData->field_2108 = gPlayerParty[sBoxCursorPosition];
- sPSSData->field_2170 = TOTAL_BOXES_COUNT;
+ sStorage->tempMon = gPlayerParty[sCursorPosition];
+ sStorage->releaseBoxId = TOTAL_BOXES_COUNT;
}
else
{
- BoxMonAtToMon(StorageGetCurrentBox(), sBoxCursorPosition, &sPSSData->field_2108);
- sPSSData->field_2170 = StorageGetCurrentBox();
+ BoxMonAtToMon(StorageGetCurrentBox(), sCursorPosition, &sStorage->tempMon);
+ sStorage->releaseBoxId = StorageGetCurrentBox();
}
- sPSSData->field_2171 = sBoxCursorPosition;
+ sStorage->releaseBoxPos = sCursorPosition;
}
- sub_80CE350(sPSSData->field_2176);
- sPSSData->field_2174 = GetMonData(&sPSSData->field_2108, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176);
- if (sPSSData->field_2174 != 0)
+ GetRestrictedReleaseMoves(sStorage->restrictedMoveList);
+ sStorage->restrictedReleaseMonMoves = GetMonData(&sStorage->tempMon, MON_DATA_KNOWN_MOVES, (u8*)sStorage->restrictedMoveList);
+ if (sStorage->restrictedReleaseMonMoves != 0)
{
- sPSSData->field_216D = 0;
+ // Pokémon knows at least one restricted release move
+ // Need to check if another Pokémon has this move first
+ sStorage->releaseStatusResolved = FALSE;
}
else
{
- sPSSData->field_216D = 1;
- sPSSData->field_216C = 1;
+ // Pokémon knows no restricted moves, can be released
+ sStorage->releaseStatusResolved = TRUE;
+ sStorage->canReleaseMon = TRUE;
}
- sPSSData->field_2172 = 0;
+ sStorage->releaseCheckState = 0;
}
static bool32 AtLeastThreeUsableMons(void)
{
- s32 i, j, count;
-
- count = (sIsMonBeingMoved != FALSE);
+ s32 i, j;
+ s32 count = (sIsMonBeingMoved != FALSE);
+
+ // Check party for usable Pokémon
for (j = 0; j < PARTY_SIZE; j++)
{
if (GetMonData(&gPlayerParty[j], MON_DATA_SANITY_HAS_SPECIES))
@@ -6529,6 +6600,7 @@ static bool32 AtLeastThreeUsableMons(void)
if (count >= 3)
return TRUE;
+ // Check PC for usable Pokémon
for (i = 0; i < TOTAL_BOXES_COUNT; i++)
{
for (j = 0; j < IN_BOX_COUNT; j++)
@@ -6549,54 +6621,69 @@ static s8 RunCanReleaseMon(void)
u16 i;
u16 knownMoves;
- if (sPSSData->field_216D)
- return sPSSData->field_216C;
+ if (sStorage->releaseStatusResolved)
+ return sStorage->canReleaseMon;
- switch (sPSSData->field_2172)
+ switch (sStorage->releaseCheckState)
{
case 0:
+ // Check party for other Pokémon that know any restricted
+ // moves the release Pokémon knows
for (i = 0; i < PARTY_SIZE; i++)
{
- if (sPSSData->field_2170 != TOTAL_BOXES_COUNT || sPSSData->field_2171 != i)
+ // Make sure party Pokémon isn't the one we're releasing first
+ if (sStorage->releaseBoxId != TOTAL_BOXES_COUNT || sStorage->releaseBoxPos != i)
{
- knownMoves = GetMonData(gPlayerParty + i, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176);
- sPSSData->field_2174 &= ~(knownMoves);
+ knownMoves = GetMonData(&gPlayerParty[i], MON_DATA_KNOWN_MOVES, (u8*)sStorage->restrictedMoveList);
+ sStorage->restrictedReleaseMonMoves &= ~(knownMoves);
}
}
- if (sPSSData->field_2174 == 0)
+ if (sStorage->restrictedReleaseMonMoves == 0)
{
- sPSSData->field_216D = 1;
- sPSSData->field_216C = 1;
+ // No restricted moves on release Pokémon that
+ // aren't resolved by the party, it can be released.
+ sStorage->releaseStatusResolved = TRUE;
+ sStorage->canReleaseMon = TRUE;
}
else
{
- sPSSData->field_216E = 0;
- sPSSData->field_216F = 0;
- sPSSData->field_2172++;
+ // Release Pokémon has restricted moves not resolved by the party.
+ // Continue and check the PC next
+ sStorage->releaseCheckBoxId = 0;
+ sStorage->releaseCheckBoxPos = 0;
+ sStorage->releaseCheckState++;
}
break;
case 1:
+ // Check PC for other Pokémon that know any restricted
+ // moves the release Pokémon knows
for (i = 0; i < IN_BOX_COUNT; i++)
{
- knownMoves = GetAndCopyBoxMonDataAt(sPSSData->field_216E, sPSSData->field_216F, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176);
- if (knownMoves != 0
- && !(sPSSData->field_2170 == sPSSData->field_216E && sPSSData->field_2171 == sPSSData->field_216F))
+ knownMoves = GetAndCopyBoxMonDataAt(sStorage->releaseCheckBoxId, sStorage->releaseCheckBoxPos, MON_DATA_KNOWN_MOVES, (u8*)sStorage->restrictedMoveList);
+ if (knownMoves != 0 && !(sStorage->releaseBoxId == sStorage->releaseCheckBoxId
+ && sStorage->releaseBoxPos == sStorage->releaseCheckBoxPos))
{
- sPSSData->field_2174 &= ~(knownMoves);
- if (sPSSData->field_2174 == 0)
+ // Found PC Pokémon with restricted move, clear move from list
+ sStorage->restrictedReleaseMonMoves &= ~(knownMoves);
+ if (sStorage->restrictedReleaseMonMoves == 0)
{
- sPSSData->field_216D = 1;
- sPSSData->field_216C = 1;
+ // No restricted moves on release Pokémon that
+ // aren't resolved, it can be released.
+ sStorage->releaseStatusResolved = TRUE;
+ sStorage->canReleaseMon = TRUE;
break;
}
}
- if (++sPSSData->field_216F >= IN_BOX_COUNT)
+ if (++sStorage->releaseCheckBoxPos >= IN_BOX_COUNT)
{
- sPSSData->field_216F = 0;
- if (++sPSSData->field_216E >= TOTAL_BOXES_COUNT)
+ sStorage->releaseCheckBoxPos = 0;
+ if (++sStorage->releaseCheckBoxId >= TOTAL_BOXES_COUNT)
{
- sPSSData->field_216D = 1;
- sPSSData->field_216C = 0;
+ // Checked every Pokémon in the PC, release Pokémon is
+ // the sole owner of at least one restricted move.
+ // It cannot be released.
+ sStorage->releaseStatusResolved = TRUE;
+ sStorage->canReleaseMon = FALSE;
}
}
}
@@ -6606,55 +6693,57 @@ static s8 RunCanReleaseMon(void)
return -1;
}
-static void sub_80CE760(void)
+static void SaveMovingMon(void)
{
if (sIsMonBeingMoved)
- gUnknown_02039D14 = sPSSData->movingMon;
+ sSavedMovingMon = sStorage->movingMon;
}
-static void sub_80CE790(void)
+static void LoadSavedMovingMon(void)
{
if (sIsMonBeingMoved)
{
+ // If it came from the party load a struct Pokemon,
+ // otherwise load a BoxPokemon
if (sMovingMonOrigBoxId == TOTAL_BOXES_COUNT)
- sPSSData->movingMon = gUnknown_02039D14;
+ sStorage->movingMon = sSavedMovingMon;
else
- sPSSData->movingMon.box = gUnknown_02039D14.box;
+ sStorage->movingMon.box = sSavedMovingMon.box;
}
}
-static void sub_80CE7E8(void)
+static void InitSummaryScreenData(void)
{
if (sIsMonBeingMoved)
{
- sub_80CE760();
- sPSSData->field_218C.mon = &gUnknown_02039D14;
- sPSSData->field_2187 = 0;
- sPSSData->field_2186 = 0;
- sPSSData->pokemonSummaryScreenMode = PSS_MODE_NORMAL;
+ SaveMovingMon();
+ sStorage->summaryMon.mon = &sSavedMovingMon;
+ sStorage->summaryStartPos = 0;
+ sStorage->summaryMaxPos = 0;
+ sStorage->summaryScreenMode = SUMMARY_MODE_NORMAL;
}
- else if (sBoxCursorArea == CURSOR_AREA_IN_PARTY)
+ else if (sCursorArea == CURSOR_AREA_IN_PARTY)
{
- sPSSData->field_218C.mon = gPlayerParty;
- sPSSData->field_2187 = sBoxCursorPosition;
- sPSSData->field_2186 = CountPartyMons() - 1;
- sPSSData->pokemonSummaryScreenMode = PSS_MODE_NORMAL;
+ sStorage->summaryMon.mon = gPlayerParty;
+ sStorage->summaryStartPos = sCursorPosition;
+ sStorage->summaryMaxPos = CountPartyMons() - 1;
+ sStorage->summaryScreenMode = SUMMARY_MODE_NORMAL;
}
else
{
- sPSSData->field_218C.box = GetBoxedMonPtr(StorageGetCurrentBox(), 0);
- sPSSData->field_2187 = sBoxCursorPosition;
- sPSSData->field_2186 = IN_BOX_COUNT - 1;
- sPSSData->pokemonSummaryScreenMode = PSS_MODE_BOX;
+ sStorage->summaryMon.box = GetBoxedMonPtr(StorageGetCurrentBox(), 0);
+ sStorage->summaryStartPos = sCursorPosition;
+ sStorage->summaryMaxPos = IN_BOX_COUNT - 1;
+ sStorage->summaryScreenMode = SUMMARY_MODE_BOX;
}
}
-static void sub_80CE8E4(void)
+static void SetSelectionAfterSummaryScreen(void)
{
if (sIsMonBeingMoved)
- sub_80CE790();
+ LoadSavedMovingMon();
else
- sBoxCursorPosition = gLastViewedMonIndex;
+ sCursorPosition = gLastViewedMonIndex;
}
s16 CompactPartySlots(void)
@@ -6664,7 +6753,7 @@ s16 CompactPartySlots(void)
for (i = 0, last = 0; i < PARTY_SIZE; i++)
{
- u16 species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES);
+ u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES);
if (species != SPECIES_NONE)
{
if (i != last)
@@ -6677,30 +6766,30 @@ s16 CompactPartySlots(void)
}
}
for (; last < PARTY_SIZE; last++)
- ZeroMonData(gPlayerParty + last);
+ ZeroMonData(&gPlayerParty[last]);
return retVal;
}
static void SetMonMarkings(u8 markings)
{
- sPSSData->cursorMonMarkings = markings;
+ sStorage->displayMonMarkings = markings;
if (sIsMonBeingMoved)
{
- SetMonData(&sPSSData->movingMon, MON_DATA_MARKINGS, &markings);
+ SetMonData(&sStorage->movingMon, MON_DATA_MARKINGS, &markings);
}
else
{
- if (sBoxCursorArea == CURSOR_AREA_IN_PARTY)
- SetMonData(gPlayerParty + sBoxCursorPosition, MON_DATA_MARKINGS, &markings);
- if (sBoxCursorArea == CURSOR_AREA_IN_BOX)
- SetCurrentBoxMonData(sBoxCursorPosition, MON_DATA_MARKINGS, &markings);
+ if (sCursorArea == CURSOR_AREA_IN_PARTY)
+ SetMonData(&gPlayerParty[sCursorPosition], MON_DATA_MARKINGS, &markings);
+ if (sCursorArea == CURSOR_AREA_IN_BOX)
+ SetCurrentBoxMonData(sCursorPosition, MON_DATA_MARKINGS, &markings);
}
}
-static bool8 CanMovePartyMon(void)
+static bool8 IsRemovingLastPartyMon(void)
{
- if (sBoxCursorArea == CURSOR_AREA_IN_PARTY && !sIsMonBeingMoved && CountPartyAliveNonEggMonsExcept(sBoxCursorPosition) == 0)
+ if (sCursorArea == CURSOR_AREA_IN_PARTY && !sIsMonBeingMoved && CountPartyAliveNonEggMonsExcept(sCursorPosition) == 0)
return TRUE;
else
return FALSE;
@@ -6710,9 +6799,9 @@ static bool8 CanShiftMon(void)
{
if (sIsMonBeingMoved)
{
- if (sBoxCursorArea == CURSOR_AREA_IN_PARTY && CountPartyAliveNonEggMonsExcept(sBoxCursorPosition) == 0)
+ if (sCursorArea == CURSOR_AREA_IN_PARTY && CountPartyAliveNonEggMonsExcept(sCursorPosition) == 0)
{
- if (sPSSData->cursorMonIsEgg || GetMonData(&sPSSData->movingMon, MON_DATA_HP) == 0)
+ if (sStorage->displayMonIsEgg || GetMonData(&sStorage->movingMon, MON_DATA_HP) == 0)
return FALSE;
}
return TRUE;
@@ -6725,148 +6814,152 @@ static bool8 IsMonBeingMoved(void)
return sIsMonBeingMoved;
}
-static bool8 IsCursorOnBox(void)
+static bool8 IsCursorOnBoxTitle(void)
{
- return (sBoxCursorArea == CURSOR_AREA_BOX);
+ return (sCursorArea == CURSOR_AREA_BOX_TITLE);
}
static bool8 IsCursorOnCloseBox(void)
{
- return (sBoxCursorArea == CURSOR_AREA_BUTTONS && sBoxCursorPosition == 1);
+ return (sCursorArea == CURSOR_AREA_BUTTONS && sCursorPosition == 1);
}
static bool8 IsCursorInBox(void)
{
- return (sBoxCursorArea == CURSOR_AREA_IN_BOX);
+ return (sCursorArea == CURSOR_AREA_IN_BOX);
}
-static void sub_80CEB40(void)
+static void TryRefreshDisplayMon(void)
{
- sPSSData->setMosaic = (sIsMonBeingMoved == FALSE);
+ // If a Pokémon is currently being moved, don't start
+ // mosaic or update display. Keep displaying the
+ // currently held Pokémon.
+ sStorage->setMosaic = (sIsMonBeingMoved == FALSE);
if (!sIsMonBeingMoved)
{
- switch (sBoxCursorArea)
+ // Update display Pokémon
+ switch (sCursorArea)
{
case CURSOR_AREA_IN_PARTY:
- if (sBoxCursorPosition < PARTY_SIZE)
+ if (sCursorPosition < PARTY_SIZE)
{
- SetCursorMonData(&gPlayerParty[sBoxCursorPosition], MODE_PARTY);
+ SetDisplayMonData(&gPlayerParty[sCursorPosition], MODE_PARTY);
break;
}
// fallthrough
case CURSOR_AREA_BUTTONS:
- case CURSOR_AREA_BOX:
- SetCursorMonData(NULL, MODE_MOVE);
+ case CURSOR_AREA_BOX_TITLE:
+ SetDisplayMonData(NULL, MODE_MOVE);
break;
case CURSOR_AREA_IN_BOX:
- SetCursorMonData(GetBoxedMonPtr(StorageGetCurrentBox(), sBoxCursorPosition), MODE_BOX);
+ SetDisplayMonData(GetBoxedMonPtr(StorageGetCurrentBox(), sCursorPosition), MODE_BOX);
break;
}
}
}
-static void sub_80CEBDC(void)
+static void ReshowDisplayMon(void)
{
if (sIsMonBeingMoved)
- SetCursorMonData(&gUnknown_02039D14, MODE_PARTY);
+ SetDisplayMonData(&sSavedMovingMon, MODE_PARTY);
else
- sub_80CEB40();
+ TryRefreshDisplayMon();
}
-static void SetCursorMonData(void *pokemon, u8 mode)
+static void SetDisplayMonData(void *pokemon, u8 mode)
{
u8 *txtPtr;
u16 gender;
bool8 sanityIsBadEgg;
- sPSSData->cursorMonItem = 0;
+ sStorage->displayMonItemId = ITEM_NONE;
gender = MON_MALE;
sanityIsBadEgg = FALSE;
if (mode == MODE_PARTY)
{
struct Pokemon *mon = (struct Pokemon *)pokemon;
- sPSSData->cursorMonSpecies = GetMonData(mon, MON_DATA_SPECIES2);
- if (sPSSData->cursorMonSpecies != SPECIES_NONE)
+ sStorage->displayMonSpecies = GetMonData(mon, MON_DATA_SPECIES2);
+ if (sStorage->displayMonSpecies != SPECIES_NONE)
{
sanityIsBadEgg = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG);
if (sanityIsBadEgg)
- sPSSData->cursorMonIsEgg = TRUE;
+ sStorage->displayMonIsEgg = TRUE;
else
- sPSSData->cursorMonIsEgg = GetMonData(mon, MON_DATA_IS_EGG);
-
- GetMonData(mon, MON_DATA_NICKNAME, sPSSData->cursorMonNick);
- StringGetEnd10(sPSSData->cursorMonNick);
- sPSSData->cursorMonLevel = GetMonData(mon, MON_DATA_LEVEL);
- sPSSData->cursorMonMarkings = GetMonData(mon, MON_DATA_MARKINGS);
- sPSSData->cursorMonPersonality = GetMonData(mon, MON_DATA_PERSONALITY);
- sPSSData->cursorMonPalette = GetMonFrontSpritePal(mon);
+ sStorage->displayMonIsEgg = GetMonData(mon, MON_DATA_IS_EGG);
+
+ GetMonData(mon, MON_DATA_NICKNAME, sStorage->displayMonName);
+ StringGetEnd10(sStorage->displayMonName);
+ sStorage->displayMonLevel = GetMonData(mon, MON_DATA_LEVEL);
+ sStorage->displayMonMarkings = GetMonData(mon, MON_DATA_MARKINGS);
+ sStorage->displayMonPersonality = GetMonData(mon, MON_DATA_PERSONALITY);
+ sStorage->displayMonPalette = GetMonFrontSpritePal(mon);
gender = GetMonGender(mon);
- sPSSData->cursorMonItem = GetMonData(mon, MON_DATA_HELD_ITEM);
+ sStorage->displayMonItemId = GetMonData(mon, MON_DATA_HELD_ITEM);
}
}
else if (mode == MODE_BOX)
{
struct BoxPokemon *boxMon = (struct BoxPokemon *)pokemon;
- sPSSData->cursorMonSpecies = GetBoxMonData(pokemon, MON_DATA_SPECIES2);
- if (sPSSData->cursorMonSpecies != SPECIES_NONE)
+ sStorage->displayMonSpecies = GetBoxMonData(pokemon, MON_DATA_SPECIES2);
+ if (sStorage->displayMonSpecies != SPECIES_NONE)
{
u32 otId = GetBoxMonData(boxMon, MON_DATA_OT_ID);
sanityIsBadEgg = GetBoxMonData(boxMon, MON_DATA_SANITY_IS_BAD_EGG);
if (sanityIsBadEgg)
- sPSSData->cursorMonIsEgg = TRUE;
+ sStorage->displayMonIsEgg = TRUE;
else
- sPSSData->cursorMonIsEgg = GetBoxMonData(boxMon, MON_DATA_IS_EGG);
+ sStorage->displayMonIsEgg = GetBoxMonData(boxMon, MON_DATA_IS_EGG);
- GetBoxMonData(boxMon, MON_DATA_NICKNAME, sPSSData->cursorMonNick);
- StringGetEnd10(sPSSData->cursorMonNick);
- sPSSData->cursorMonLevel = GetLevelFromBoxMonExp(boxMon);
- sPSSData->cursorMonMarkings = GetBoxMonData(boxMon, MON_DATA_MARKINGS);
- sPSSData->cursorMonPersonality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY);
- sPSSData->cursorMonPalette = GetMonSpritePalFromSpeciesAndPersonality(sPSSData->cursorMonSpecies, otId, sPSSData->cursorMonPersonality);
- gender = GetGenderFromSpeciesAndPersonality(sPSSData->cursorMonSpecies, sPSSData->cursorMonPersonality);
- sPSSData->cursorMonItem = GetBoxMonData(boxMon, MON_DATA_HELD_ITEM);
+ GetBoxMonData(boxMon, MON_DATA_NICKNAME, sStorage->displayMonName);
+ StringGetEnd10(sStorage->displayMonName);
+ sStorage->displayMonLevel = GetLevelFromBoxMonExp(boxMon);
+ sStorage->displayMonMarkings = GetBoxMonData(boxMon, MON_DATA_MARKINGS);
+ sStorage->displayMonPersonality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY);
+ sStorage->displayMonPalette = GetMonSpritePalFromSpeciesAndPersonality(sStorage->displayMonSpecies, otId, sStorage->displayMonPersonality);
+ gender = GetGenderFromSpeciesAndPersonality(sStorage->displayMonSpecies, sStorage->displayMonPersonality);
+ sStorage->displayMonItemId = GetBoxMonData(boxMon, MON_DATA_HELD_ITEM);
}
}
else
{
- sPSSData->cursorMonSpecies = SPECIES_NONE;
- sPSSData->cursorMonItem = 0;
+ sStorage->displayMonSpecies = SPECIES_NONE;
+ sStorage->displayMonItemId = ITEM_NONE;
}
- if (sPSSData->cursorMonSpecies == SPECIES_NONE)
+ if (sStorage->displayMonSpecies == SPECIES_NONE)
{
- StringFill(sPSSData->cursorMonNick, CHAR_SPACE, 5);
- StringFill(sPSSData->cursorMonNickText, CHAR_SPACE, 8);
- StringFill(sPSSData->cursorMonSpeciesName, CHAR_SPACE, 8);
- StringFill(sPSSData->cursorMonGenderLvlText, CHAR_SPACE, 8);
- StringFill(sPSSData->cursorMonItemName, CHAR_SPACE, 8);
+ StringFill(sStorage->displayMonName, CHAR_SPACE, 5);
+ StringFill(sStorage->displayMonNameText, CHAR_SPACE, 8);
+ StringFill(sStorage->displayMonSpeciesName, CHAR_SPACE, 8);
+ StringFill(sStorage->displayMonGenderLvlText, CHAR_SPACE, 8);
+ StringFill(sStorage->displayMonItemName, CHAR_SPACE, 8);
}
- else if (sPSSData->cursorMonIsEgg)
+ else if (sStorage->displayMonIsEgg)
{
if (sanityIsBadEgg)
- StringCopyPadded(sPSSData->cursorMonNickText, sPSSData->cursorMonNick, CHAR_SPACE, 5);
+ StringCopyPadded(sStorage->displayMonNameText, sStorage->displayMonName, CHAR_SPACE, 5);
else
- StringCopyPadded(sPSSData->cursorMonNickText, gText_EggNickname, CHAR_SPACE, 8);
+ StringCopyPadded(sStorage->displayMonNameText, gText_EggNickname, CHAR_SPACE, 8);
- StringFill(sPSSData->cursorMonSpeciesName, CHAR_SPACE, 8);
- StringFill(sPSSData->cursorMonGenderLvlText, CHAR_SPACE, 8);
- StringFill(sPSSData->cursorMonItemName, CHAR_SPACE, 8);
+ StringFill(sStorage->displayMonSpeciesName, CHAR_SPACE, 8);
+ StringFill(sStorage->displayMonGenderLvlText, CHAR_SPACE, 8);
+ StringFill(sStorage->displayMonItemName, CHAR_SPACE, 8);
}
else
{
- if (sPSSData->cursorMonSpecies == SPECIES_NIDORAN_F || sPSSData->cursorMonSpecies == SPECIES_NIDORAN_M)
+ if (sStorage->displayMonSpecies == SPECIES_NIDORAN_F || sStorage->displayMonSpecies == SPECIES_NIDORAN_M)
gender = MON_GENDERLESS;
- StringCopyPadded(sPSSData->cursorMonNickText, sPSSData->cursorMonNick, CHAR_SPACE, 5);
+ StringCopyPadded(sStorage->displayMonNameText, sStorage->displayMonName, CHAR_SPACE, 5);
- txtPtr = sPSSData->cursorMonSpeciesName;
+ txtPtr = sStorage->displayMonSpeciesName;
*(txtPtr)++ = CHAR_SLASH;
- StringCopyPadded(txtPtr, gSpeciesNames[sPSSData->cursorMonSpecies], CHAR_SPACE, 5);
+ StringCopyPadded(txtPtr, gSpeciesNames[sStorage->displayMonSpecies], CHAR_SPACE, 5);
- txtPtr = sPSSData->cursorMonGenderLvlText;
+ txtPtr = sStorage->displayMonGenderLvlText;
*(txtPtr)++ = EXT_CTRL_CODE_BEGIN;
*(txtPtr)++ = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
switch (gender)
@@ -6884,43 +6977,51 @@ static void SetCursorMonData(void *pokemon, u8 mode)
*(txtPtr)++ = CHAR_FEMALE;
break;
default:
- *(txtPtr)++ = TEXT_COLOR_DARK_GREY;
+ *(txtPtr)++ = TEXT_COLOR_DARK_GRAY;
*(txtPtr)++ = TEXT_COLOR_WHITE;
- *(txtPtr)++ = TEXT_COLOR_LIGHT_GREY;
- *(txtPtr)++ = CHAR_UNK_SPACER;
+ *(txtPtr)++ = TEXT_COLOR_LIGHT_GRAY;
+ *(txtPtr)++ = CHAR_GENDERLESS;
break;
}
*(txtPtr++) = EXT_CTRL_CODE_BEGIN;
*(txtPtr++) = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
- *(txtPtr++) = TEXT_COLOR_DARK_GREY;
+ *(txtPtr++) = TEXT_COLOR_DARK_GRAY;
*(txtPtr++) = TEXT_COLOR_WHITE;
- *(txtPtr++) = TEXT_COLOR_LIGHT_GREY;
+ *(txtPtr++) = TEXT_COLOR_LIGHT_GRAY;
*(txtPtr++) = CHAR_SPACE;
*(txtPtr++) = CHAR_EXTRA_SYMBOL;
*(txtPtr++) = CHAR_LV_2;
- txtPtr = ConvertIntToDecimalStringN(txtPtr, sPSSData->cursorMonLevel, STR_CONV_MODE_LEFT_ALIGN, 3);
+ txtPtr = ConvertIntToDecimalStringN(txtPtr, sStorage->displayMonLevel, STR_CONV_MODE_LEFT_ALIGN, 3);
txtPtr[0] = CHAR_SPACE;
txtPtr[1] = EOS;
- if (sPSSData->cursorMonItem != 0)
- StringCopyPadded(sPSSData->cursorMonItemName, ItemId_GetName(sPSSData->cursorMonItem), CHAR_SPACE, 8);
+ if (sStorage->displayMonItemId != ITEM_NONE)
+ StringCopyPadded(sStorage->displayMonItemName, ItemId_GetName(sStorage->displayMonItemId), CHAR_SPACE, 8);
else
- StringFill(sPSSData->cursorMonItemName, CHAR_SPACE, 8);
+ StringFill(sStorage->displayMonItemName, CHAR_SPACE, 8);
}
}
+
+//------------------------------------------------------------------------------
+// SECTION: Input handlers
+//
+// The functions below process context-dependent input
+//------------------------------------------------------------------------------
+
+
static u8 HandleInput_InBox(void)
{
- switch (sPSSData->inBoxMovingMode)
+ switch (sStorage->inBoxMovingMode)
{
- case 0:
+ case MOVE_MODE_NORMAL:
default:
return InBoxInput_Normal();
- case 1:
- return InBoxInput_GrabbingMultiple();
- case 2:
+ case MOVE_MODE_MULTIPLE_SELECTING:
+ return InBoxInput_SelectingMultiple();
+ case MOVE_MODE_MULTIPLE_MOVING:
return InBoxInput_MovingMultiple();
}
}
@@ -6933,208 +7034,209 @@ static u8 InBoxInput_Normal(void)
do
{
- cursorArea = sBoxCursorArea;
- cursorPosition = sBoxCursorPosition;
- sPSSData->field_CD2 = 0;
- sPSSData->field_CD3 = 0;
- sPSSData->field_CD7 = 0;
+ cursorArea = sCursorArea;
+ cursorPosition = sCursorPosition;
+ sStorage->cursorVerticalWrap = 0;
+ sStorage->cursorHorizontalWrap = 0;
+ sStorage->cursorFlipTimer = 0;
if (JOY_REPEAT(DPAD_UP))
{
- retVal = TRUE;
- if (sBoxCursorPosition >= IN_BOX_ROWS)
+ retVal = INPUT_MOVE_CURSOR;
+ if (sCursorPosition >= IN_BOX_COLUMNS)
{
- cursorPosition -= IN_BOX_ROWS;
+ cursorPosition -= IN_BOX_COLUMNS;
}
else
{
- cursorArea = CURSOR_AREA_BOX;
+ cursorArea = CURSOR_AREA_BOX_TITLE;
cursorPosition = 0;
}
break;
}
else if (JOY_REPEAT(DPAD_DOWN))
{
- retVal = TRUE;
- cursorPosition += IN_BOX_ROWS;
+ retVal = INPUT_MOVE_CURSOR;
+ cursorPosition += IN_BOX_COLUMNS;
if (cursorPosition >= IN_BOX_COUNT)
{
cursorArea = CURSOR_AREA_BUTTONS;
cursorPosition -= IN_BOX_COUNT;
cursorPosition /= 3;
- sPSSData->field_CD2 = 1;
- sPSSData->field_CD7 = 1;
+ sStorage->cursorVerticalWrap = 1;
+ sStorage->cursorFlipTimer = 1;
}
break;
}
else if (JOY_REPEAT(DPAD_LEFT))
{
- retVal = TRUE;
- if (sBoxCursorPosition % IN_BOX_ROWS != 0)
+ retVal = INPUT_MOVE_CURSOR;
+ if (sCursorPosition % IN_BOX_COLUMNS != 0)
{
cursorPosition--;
}
else
{
- sPSSData->field_CD3 = -1;
- cursorPosition += (IN_BOX_ROWS - 1);
+ sStorage->cursorHorizontalWrap = -1;
+ cursorPosition += (IN_BOX_COLUMNS - 1);
}
break;
}
else if (JOY_REPEAT(DPAD_RIGHT))
{
- retVal = TRUE;
- if ((sBoxCursorPosition + 1) % IN_BOX_ROWS != 0)
+ retVal = INPUT_MOVE_CURSOR;
+ if ((sCursorPosition + 1) % IN_BOX_COLUMNS != 0)
{
cursorPosition++;
}
else
{
- sPSSData->field_CD3 = 1;
- cursorPosition -= (IN_BOX_ROWS - 1);
+ sStorage->cursorHorizontalWrap = 1;
+ cursorPosition -= (IN_BOX_COLUMNS - 1);
}
break;
}
else if (JOY_NEW(START_BUTTON))
{
- retVal = TRUE;
- cursorArea = CURSOR_AREA_BOX;
+ retVal = INPUT_MOVE_CURSOR;
+ cursorArea = CURSOR_AREA_BOX_TITLE;
cursorPosition = 0;
break;
}
- if ((JOY_NEW(A_BUTTON)) && sub_80CFA5C())
+ if ((JOY_NEW(A_BUTTON)) && SetSelectionMenuTexts())
{
- if (!sCanOnlyMove)
- return 8;
+ if (!sAutoActionOn)
+ return INPUT_IN_MENU;
- if (sPSSData->boxOption != BOX_OPTION_MOVE_MONS || sIsMonBeingMoved == TRUE)
+ if (sStorage->boxOption != OPTION_MOVE_MONS || sIsMonBeingMoved == TRUE)
{
- switch (sub_80CFF98(0))
+ switch (GetMenuItemTextId(0))
{
- case 1:
- return 11;
- case 2:
- return 12;
- case 3:
- return 13;
- case 4:
- return 14;
- case 5:
- return 15;
- case 12:
- return 16;
- case 13:
- return 17;
- case 15:
- return 18;
+ case MENU_STORE:
+ return INPUT_DEPOSIT;
+ case MENU_WITHDRAW:
+ return INPUT_WITHDRAW;
+ case MENU_MOVE:
+ return INPUT_MOVE_MON;
+ case MENU_SHIFT:
+ return INPUT_SHIFT_MON;
+ case MENU_PLACE:
+ return INPUT_PLACE_MON;
+ case MENU_TAKE:
+ return INPUT_TAKE_ITEM;
+ case MENU_GIVE:
+ return INPUT_GIVE_ITEM;
+ case MENU_SWITCH:
+ return INPUT_SWITCH_ITEMS;
}
}
else
{
- sPSSData->inBoxMovingMode = 1;
- return 20;
+ sStorage->inBoxMovingMode = MOVE_MODE_MULTIPLE_SELECTING;
+ return INPUT_MULTIMOVE_START;
}
}
if (JOY_NEW(B_BUTTON))
- return 19;
+ return INPUT_PRESSED_B;
if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
{
if (JOY_HELD(L_BUTTON))
- return 10;
+ return INPUT_SCROLL_LEFT;
if (JOY_HELD(R_BUTTON))
- return 9;
+ return INPUT_SCROLL_RIGHT;
}
if (JOY_NEW(SELECT_BUTTON))
{
- sub_80CFDC4();
- return 0;
+ ToggleCursorAutoAction();
+ return INPUT_NONE;
}
- retVal = 0;
+ retVal = INPUT_NONE;
} while (0);
if (retVal)
- sub_80CD894(cursorArea, cursorPosition);
+ SetCursorPosition(cursorArea, cursorPosition);
return retVal;
}
-static u8 InBoxInput_GrabbingMultiple(void)
+static u8 InBoxInput_SelectingMultiple(void)
{
if (JOY_HELD(A_BUTTON))
{
if (JOY_REPEAT(DPAD_UP))
{
- if (sBoxCursorPosition / IN_BOX_ROWS != 0)
+ if (sCursorPosition / IN_BOX_COLUMNS != 0)
{
- sub_80CD894(CURSOR_AREA_IN_BOX, sBoxCursorPosition - IN_BOX_ROWS);
- return 21;
+ SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition - IN_BOX_COLUMNS);
+ return INPUT_MULTIMOVE_CHANGE_SELECTION;
}
else
{
- return 24;
+ return INPUT_MULTIMOVE_UNABLE;
}
}
else if (JOY_REPEAT(DPAD_DOWN))
{
- if (sBoxCursorPosition + IN_BOX_ROWS < IN_BOX_COUNT)
+ if (sCursorPosition + IN_BOX_COLUMNS < IN_BOX_COUNT)
{
- sub_80CD894(CURSOR_AREA_IN_BOX, sBoxCursorPosition + IN_BOX_ROWS);
- return 21;
+ SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition + IN_BOX_COLUMNS);
+ return INPUT_MULTIMOVE_CHANGE_SELECTION;
}
else
{
- return 24;
+ return INPUT_MULTIMOVE_UNABLE;
}
}
else if (JOY_REPEAT(DPAD_LEFT))
{
- if (sBoxCursorPosition % IN_BOX_ROWS != 0)
+ if (sCursorPosition % IN_BOX_COLUMNS != 0)
{
- sub_80CD894(CURSOR_AREA_IN_BOX, sBoxCursorPosition - 1);
- return 21;
+ SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition - 1);
+ return INPUT_MULTIMOVE_CHANGE_SELECTION;
}
else
{
- return 24;
+ return INPUT_MULTIMOVE_UNABLE;
}
}
else if (JOY_REPEAT(DPAD_RIGHT))
{
- if ((sBoxCursorPosition + 1) % IN_BOX_ROWS != 0)
+ if ((sCursorPosition + 1) % IN_BOX_COLUMNS != 0)
{
- sub_80CD894(CURSOR_AREA_IN_BOX, sBoxCursorPosition + 1);
- return 21;
+ SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition + 1);
+ return INPUT_MULTIMOVE_CHANGE_SELECTION;
}
else
{
- return 24;
+ return INPUT_MULTIMOVE_UNABLE;
}
}
else
{
- return 0;
+ return INPUT_NONE;
}
}
else
{
- if (sub_80D0BA4() == sBoxCursorPosition)
+ if (MultiMove_GetOrigin() == sCursorPosition)
{
- sPSSData->inBoxMovingMode = 0;
- sPSSData->field_CB8->invisible = FALSE;
- return 22;
+ // Doing a multiple mon selection but only chose 1 mon
+ sStorage->inBoxMovingMode = MOVE_MODE_NORMAL;
+ sStorage->cursorShadowSprite->invisible = FALSE;
+ return INPUT_MULTIMOVE_SINGLE;
}
else
{
- sIsMonBeingMoved = (sPSSData->cursorMonSpecies != SPECIES_NONE);
- sPSSData->inBoxMovingMode = 2;
+ sIsMonBeingMoved = (sStorage->displayMonSpecies != SPECIES_NONE);
+ sStorage->inBoxMovingMode = MOVE_MODE_MULTIPLE_MOVING;
sMovingMonOrigBoxId = StorageGetCurrentBox();
- return 23;
+ return INPUT_MULTIMOVE_GRAB_SELECTION;
}
}
}
@@ -7143,80 +7245,80 @@ static u8 InBoxInput_MovingMultiple(void)
{
if (JOY_REPEAT(DPAD_UP))
{
- if (sub_80D0580(0))
+ if (MultiMove_TryMoveGroup(0))
{
- sub_80CD894(CURSOR_AREA_IN_BOX, sBoxCursorPosition - IN_BOX_ROWS);
- return 25;
+ SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition - IN_BOX_COLUMNS);
+ return INPUT_MULTIMOVE_MOVE_MONS;
}
else
{
- return 24;
+ return INPUT_MULTIMOVE_UNABLE;
}
}
else if (JOY_REPEAT(DPAD_DOWN))
{
- if (sub_80D0580(1))
+ if (MultiMove_TryMoveGroup(1))
{
- sub_80CD894(CURSOR_AREA_IN_BOX, sBoxCursorPosition + IN_BOX_ROWS);
- return 25;
+ SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition + IN_BOX_COLUMNS);
+ return INPUT_MULTIMOVE_MOVE_MONS;
}
else
{
- return 24;
+ return INPUT_MULTIMOVE_UNABLE;
}
}
else if (JOY_REPEAT(DPAD_LEFT))
{
- if (sub_80D0580(2))
+ if (MultiMove_TryMoveGroup(2))
{
- sub_80CD894(CURSOR_AREA_IN_BOX, sBoxCursorPosition - 1);
- return 25;
+ SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition - 1);
+ return INPUT_MULTIMOVE_MOVE_MONS;
}
else
{
- return 10;
+ return INPUT_SCROLL_LEFT;
}
}
else if (JOY_REPEAT(DPAD_RIGHT))
{
- if (sub_80D0580(3))
+ if (MultiMove_TryMoveGroup(3))
{
- sub_80CD894(CURSOR_AREA_IN_BOX, sBoxCursorPosition + 1);
- return 25;
+ SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition + 1);
+ return INPUT_MULTIMOVE_MOVE_MONS;
}
else
{
- return 9;
+ return INPUT_SCROLL_RIGHT;
}
}
else if (JOY_NEW(A_BUTTON))
{
- if (sub_80D0BC0())
+ if (MultiMove_CanPlaceSelection())
{
sIsMonBeingMoved = FALSE;
- sPSSData->inBoxMovingMode = 0;
- return 26;
+ sStorage->inBoxMovingMode = MOVE_MODE_NORMAL;
+ return INPUT_MULTIMOVE_PLACE_MONS;
}
else
{
- return 24;
+ return INPUT_MULTIMOVE_UNABLE;
}
}
else if (JOY_NEW(B_BUTTON))
{
- return 24;
+ return INPUT_MULTIMOVE_UNABLE;
}
else
{
if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
{
if (JOY_HELD(L_BUTTON))
- return 10;
+ return INPUT_SCROLL_LEFT;
if (JOY_HELD(R_BUTTON))
- return 9;
+ return INPUT_SCROLL_RIGHT;
}
- return 0;
+ return INPUT_NONE;
}
}
@@ -7229,47 +7331,47 @@ static u8 HandleInput_InParty(void)
do
{
- cursorArea = sBoxCursorArea;
- cursorPosition = sBoxCursorPosition;
- sPSSData->field_CD3 = 0;
- sPSSData->field_CD2 = 0;
- sPSSData->field_CD7 = 0;
+ cursorArea = sCursorArea;
+ cursorPosition = sCursorPosition;
+ sStorage->cursorHorizontalWrap = 0;
+ sStorage->cursorVerticalWrap = 0;
+ sStorage->cursorFlipTimer = 0;
gotoBox = FALSE;
- retVal = 0;
+ retVal = INPUT_NONE;
if (JOY_REPEAT(DPAD_UP))
{
if (--cursorPosition < 0)
cursorPosition = PARTY_SIZE;
- if (cursorPosition != sBoxCursorPosition)
- retVal = 1;
+ if (cursorPosition != sCursorPosition)
+ retVal = INPUT_MOVE_CURSOR;
break;
}
else if (JOY_REPEAT(DPAD_DOWN))
{
if (++cursorPosition > PARTY_SIZE)
cursorPosition = 0;
- if (cursorPosition != sBoxCursorPosition)
- retVal = 1;
+ if (cursorPosition != sCursorPosition)
+ retVal = INPUT_MOVE_CURSOR;
break;
}
- else if (JOY_REPEAT(DPAD_LEFT) && sBoxCursorPosition != 0)
+ else if (JOY_REPEAT(DPAD_LEFT) && sCursorPosition != 0)
{
- retVal = 1;
- sPSSData->field_CD6 = sBoxCursorPosition;
+ retVal = INPUT_MOVE_CURSOR;
+ sStorage->cursorPrevHorizPos = sCursorPosition;
cursorPosition = 0;
break;
}
else if (JOY_REPEAT(DPAD_RIGHT))
{
- if (sBoxCursorPosition == 0)
+ if (sCursorPosition == 0)
{
- retVal = 1;
- cursorPosition = sPSSData->field_CD6;
+ retVal = INPUT_MOVE_CURSOR;
+ cursorPosition = sStorage->cursorPrevHorizPos;
}
else
{
- retVal = 6;
+ retVal = INPUT_HIDE_PARTY;
cursorArea = CURSOR_AREA_IN_BOX;
cursorPosition = 0;
}
@@ -7278,66 +7380,66 @@ static u8 HandleInput_InParty(void)
if (JOY_NEW(A_BUTTON))
{
- if (sBoxCursorPosition == PARTY_SIZE)
+ if (sCursorPosition == PARTY_SIZE)
{
- if (sPSSData->boxOption == BOX_OPTION_DEPOSIT)
- return 4;
+ if (sStorage->boxOption == OPTION_DEPOSIT)
+ return INPUT_CLOSE_BOX;
gotoBox = TRUE;
}
- else if (sub_80CFA5C())
+ else if (SetSelectionMenuTexts())
{
- if (!sCanOnlyMove)
- return 8;
+ if (!sAutoActionOn)
+ return INPUT_IN_MENU;
- switch (sub_80CFF98(0))
+ switch (GetMenuItemTextId(0))
{
- case 1:
- return 11;
- case 2:
- return 12;
- case 3:
- return 13;
- case 4:
- return 14;
- case 5:
- return 15;
- case 12:
- return 16;
- case 13:
- return 17;
- case 15:
- return 18;
+ case MENU_STORE:
+ return INPUT_DEPOSIT;
+ case MENU_WITHDRAW:
+ return INPUT_WITHDRAW;
+ case MENU_MOVE:
+ return INPUT_MOVE_MON;
+ case MENU_SHIFT:
+ return INPUT_SHIFT_MON;
+ case MENU_PLACE:
+ return INPUT_PLACE_MON;
+ case MENU_TAKE:
+ return INPUT_TAKE_ITEM;
+ case MENU_GIVE:
+ return INPUT_GIVE_ITEM;
+ case MENU_SWITCH:
+ return INPUT_SWITCH_ITEMS;
}
}
}
if (JOY_NEW(B_BUTTON))
{
- if (sPSSData->boxOption == BOX_OPTION_DEPOSIT)
- return 19;
+ if (sStorage->boxOption == OPTION_DEPOSIT)
+ return INPUT_PRESSED_B;
gotoBox = TRUE;
}
if (gotoBox)
{
- retVal = 6;
+ retVal = INPUT_HIDE_PARTY;
cursorArea = CURSOR_AREA_IN_BOX;
cursorPosition = 0;
}
else if (JOY_NEW(SELECT_BUTTON))
{
- sub_80CFDC4();
- return 0;
+ ToggleCursorAutoAction();
+ return INPUT_NONE;
}
} while (0);
- if (retVal != 0)
+ if (retVal != INPUT_NONE)
{
- if (retVal != 6)
- sub_80CD894(cursorArea, cursorPosition);
+ if (retVal != INPUT_HIDE_PARTY)
+ SetCursorPosition(cursorArea, cursorPosition);
}
return retVal;
@@ -7351,64 +7453,64 @@ static u8 HandleInput_OnBox(void)
do
{
- sPSSData->field_CD3 = 0;
- sPSSData->field_CD2 = 0;
- sPSSData->field_CD7 = 0;
+ sStorage->cursorHorizontalWrap = 0;
+ sStorage->cursorVerticalWrap = 0;
+ sStorage->cursorFlipTimer = 0;
if (JOY_REPEAT(DPAD_UP))
{
- retVal = 1;
+ retVal = INPUT_MOVE_CURSOR;
cursorArea = CURSOR_AREA_BUTTONS;
cursorPosition = 0;
- sPSSData->field_CD7 = 1;
+ sStorage->cursorFlipTimer = 1;
break;
}
else if (JOY_REPEAT(DPAD_DOWN))
{
- retVal = 1;
+ retVal = INPUT_MOVE_CURSOR;
cursorArea = CURSOR_AREA_IN_BOX;
cursorPosition = 2;
break;
}
if (JOY_HELD(DPAD_LEFT))
- return 10;
+ return INPUT_SCROLL_LEFT;
if (JOY_HELD(DPAD_RIGHT))
- return 9;
+ return INPUT_SCROLL_RIGHT;
if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
{
if (JOY_HELD(L_BUTTON))
- return 10;
+ return INPUT_SCROLL_LEFT;
if (JOY_HELD(R_BUTTON))
- return 9;
+ return INPUT_SCROLL_RIGHT;
}
if (JOY_NEW(A_BUTTON))
{
- sub_80CD1A8(FALSE);
- AddBoxMenu();
- return 7;
+ AnimateBoxScrollArrows(FALSE);
+ AddBoxOptionsMenu();
+ return INPUT_BOX_OPTIONS;
}
if (JOY_NEW(B_BUTTON))
- return 19;
+ return INPUT_PRESSED_B;
if (JOY_NEW(SELECT_BUTTON))
{
- sub_80CFDC4();
- return 0;
+ ToggleCursorAutoAction();
+ return INPUT_NONE;
}
- retVal = 0;
+ retVal = INPUT_NONE;
} while (0);
- if (retVal)
+ if (retVal != INPUT_NONE)
{
- if (cursorArea != CURSOR_AREA_BOX)
- sub_80CD1A8(FALSE);
- sub_80CD894(cursorArea, cursorPosition);
+ if (cursorArea != CURSOR_AREA_BOX_TITLE)
+ AnimateBoxScrollArrows(FALSE);
+ SetCursorPosition(cursorArea, cursorPosition);
}
return retVal;
@@ -7422,65 +7524,67 @@ static u8 HandleInput_OnButtons(void)
do
{
- cursorArea = sBoxCursorArea;
- cursorPosition = sBoxCursorPosition;
- sPSSData->field_CD3 = 0;
- sPSSData->field_CD2 = 0;
- sPSSData->field_CD7 = 0;
+ cursorArea = sCursorArea;
+ cursorPosition = sCursorPosition;
+ sStorage->cursorHorizontalWrap = 0;
+ sStorage->cursorVerticalWrap = 0;
+ sStorage->cursorFlipTimer = 0;
if (JOY_REPEAT(DPAD_UP))
{
- retVal = 1;
+ retVal = INPUT_MOVE_CURSOR;
cursorArea = CURSOR_AREA_IN_BOX;
- sPSSData->field_CD2 = -1;
- if (sBoxCursorPosition == 0)
+ sStorage->cursorVerticalWrap = -1;
+ if (sCursorPosition == 0)
cursorPosition = IN_BOX_COUNT - 1 - 5;
else
cursorPosition = IN_BOX_COUNT - 1;
- sPSSData->field_CD7 = 1;
+ sStorage->cursorFlipTimer = 1;
break;
}
if (JOY_REPEAT(DPAD_DOWN | START_BUTTON))
{
- retVal = 1;
- cursorArea = CURSOR_AREA_BOX;
+ retVal = INPUT_MOVE_CURSOR;
+ cursorArea = CURSOR_AREA_BOX_TITLE;
cursorPosition = 0;
- sPSSData->field_CD7 = 1;
+ sStorage->cursorFlipTimer = 1;
break;
}
if (JOY_REPEAT(DPAD_LEFT))
{
- retVal = 1;
+ retVal = INPUT_MOVE_CURSOR;
if (--cursorPosition < 0)
cursorPosition = 1;
break;
}
else if (JOY_REPEAT(DPAD_RIGHT))
{
- retVal = 1;
+ retVal = INPUT_MOVE_CURSOR;
if (++cursorPosition > 1)
cursorPosition = 0;
break;
}
+ // Button was pressed, determine which
if (JOY_NEW(A_BUTTON))
- return (cursorPosition == 0) ? 5 : 4;
+ return (cursorPosition == 0) ? INPUT_SHOW_PARTY : INPUT_CLOSE_BOX;
+
if (JOY_NEW(B_BUTTON))
- return 19;
+ return INPUT_PRESSED_B;
if (JOY_NEW(SELECT_BUTTON))
{
- sub_80CFDC4();
- return 0;
+ ToggleCursorAutoAction();
+ return INPUT_NONE;
}
- retVal = 0;
+ retVal = INPUT_NONE;
} while (0);
- if (retVal != 0)
- sub_80CD894(cursorArea, cursorPosition);
+ if (retVal != INPUT_NONE)
+ SetCursorPosition(cursorArea, cursorPosition);
return retVal;
}
@@ -7491,255 +7595,262 @@ static u8 HandleInput(void)
{
u8 (*func)(void);
s8 area;
- }
- static const inputFuncs[] =
+ } static const inputFuncs[] =
{
- {HandleInput_InBox, CURSOR_AREA_IN_BOX},
- {HandleInput_InParty, CURSOR_AREA_IN_PARTY},
- {HandleInput_OnBox, CURSOR_AREA_BOX},
+ {HandleInput_InBox, CURSOR_AREA_IN_BOX},
+ {HandleInput_InParty, CURSOR_AREA_IN_PARTY},
+ {HandleInput_OnBox, CURSOR_AREA_BOX_TITLE},
{HandleInput_OnButtons, CURSOR_AREA_BUTTONS},
- {NULL, 0},
+ {},
};
u16 i = 0;
while (inputFuncs[i].func != NULL)
{
- if (inputFuncs[i].area == sBoxCursorArea)
+ if (inputFuncs[i].area == sCursorArea)
return inputFuncs[i].func();
i++;
}
- return 0;
+ return INPUT_NONE;
}
-static void AddBoxMenu(void)
+static void AddBoxOptionsMenu(void)
{
InitMenu();
- SetMenuText(9);
- SetMenuText(10);
- SetMenuText(11);
- SetMenuText(0);
+ SetMenuText(MENU_JUMP);
+ SetMenuText(MENU_WALLPAPER);
+ SetMenuText(MENU_NAME);
+ SetMenuText(MENU_CANCEL);
}
-static u8 sub_80CFA5C(void)
+static u8 SetSelectionMenuTexts(void)
{
InitMenu();
- if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
- return sub_80CFA84();
+ if (sStorage->boxOption != OPTION_MOVE_ITEMS)
+ return SetMenuTexts_Mon();
else
- return sub_80CFB44();
+ return SetMenuTexts_Item();
}
-static bool8 sub_80CFA84(void)
+static bool8 SetMenuTexts_Mon(void)
{
- u16 var0 = sub_80CD504();
+ u16 species = GetSpeciesAtCursorPosition();
- switch (sPSSData->boxOption)
+ switch (sStorage->boxOption)
{
- case BOX_OPTION_DEPOSIT:
- if (var0)
- SetMenuText(1);
+ case OPTION_DEPOSIT:
+ if (species != SPECIES_NONE)
+ SetMenuText(MENU_STORE);
else
return FALSE;
break;
- case BOX_OPTION_WITHDRAW:
- if (var0)
- SetMenuText(2);
+ case OPTION_WITHDRAW:
+ if (species != SPECIES_NONE)
+ SetMenuText(MENU_WITHDRAW);
else
return FALSE;
break;
- case BOX_OPTION_MOVE_MONS:
+ case OPTION_MOVE_MONS:
if (sIsMonBeingMoved)
{
- if (var0)
- SetMenuText(4);
+ if (species != SPECIES_NONE)
+ SetMenuText(MENU_SHIFT);
else
- SetMenuText(5);
+ SetMenuText(MENU_PLACE);
}
else
{
- if (var0)
- SetMenuText(3);
+ if (species != SPECIES_NONE)
+ SetMenuText(MENU_MOVE);
else
return FALSE;
}
break;
- case BOX_OPTION_MOVE_ITEMS:
+ case OPTION_MOVE_ITEMS:
default:
return FALSE;
}
- SetMenuText(6);
- if (sPSSData->boxOption == BOX_OPTION_MOVE_MONS)
+ SetMenuText(MENU_SUMMARY);
+ if (sStorage->boxOption == OPTION_MOVE_MONS)
{
- if (!sBoxCursorArea)
- SetMenuText(2);
+ if (sCursorArea == CURSOR_AREA_IN_BOX)
+ SetMenuText(MENU_WITHDRAW);
else
- SetMenuText(1);
+ SetMenuText(MENU_STORE);
}
- SetMenuText(8);
- SetMenuText(7);
- SetMenuText(0);
+ SetMenuText(MENU_MARK);
+ SetMenuText(MENU_RELEASE);
+ SetMenuText(MENU_CANCEL);
return TRUE;
}
-static bool8 sub_80CFB44(void)
+static bool8 SetMenuTexts_Item(void)
{
- if (sPSSData->cursorMonSpecies == SPECIES_EGG)
+ if (sStorage->displayMonSpecies == SPECIES_EGG)
return FALSE;
- if (!IsActiveItemMoving())
+ if (!IsMovingItem())
{
- if (sPSSData->cursorMonItem == 0)
+ if (sStorage->displayMonItemId == ITEM_NONE)
{
- if (sPSSData->cursorMonSpecies == SPECIES_NONE)
+ if (sStorage->displayMonSpecies == SPECIES_NONE)
return FALSE;
- SetMenuText(14);
+ SetMenuText(MENU_GIVE_2);
}
else
{
- if (!ItemIsMail(sPSSData->cursorMonItem))
+ if (!ItemIsMail(sStorage->displayMonItemId))
{
- SetMenuText(12);
- SetMenuText(16);
+ SetMenuText(MENU_TAKE);
+ SetMenuText(MENU_BAG);
}
- SetMenuText(17);
+ SetMenuText(MENU_INFO);
}
}
else
{
- if (sPSSData->cursorMonItem == 0)
+ if (sStorage->displayMonItemId == ITEM_NONE)
{
- if (sPSSData->cursorMonSpecies == SPECIES_NONE)
+ if (sStorage->displayMonSpecies == SPECIES_NONE)
return FALSE;
- SetMenuText(13);
+ SetMenuText(MENU_GIVE);
}
else
{
- if (ItemIsMail(sPSSData->cursorMonItem) == TRUE)
+ if (ItemIsMail(sStorage->displayMonItemId) == TRUE)
return FALSE;
- SetMenuText(15);
+ SetMenuText(MENU_SWITCH);
}
}
- SetMenuText(0);
+ SetMenuText(MENU_CANCEL);
return TRUE;
}
-static void sub_80CFBF4(struct Sprite *sprite)
+
+//------------------------------------------------------------------------------
+// SECTION: Cursor
+//
+// The functions below handle a few of the generic cursor features.
+//------------------------------------------------------------------------------
+
+
+static void SpriteCB_CursorShadow(struct Sprite *sprite)
{
- sprite->pos1.x = sPSSData->field_CB4->pos1.x;
- sprite->pos1.y = sPSSData->field_CB4->pos1.y + 20;
+ sprite->x = sStorage->cursorSprite->x;
+ sprite->y = sStorage->cursorSprite->y + 20;
}
-static void sub_80CFC14(void)
+static void CreateCursorSprites(void)
{
u16 x, y;
u8 spriteId;
u8 priority, subpriority;
struct SpriteSheet spriteSheets[] =
{
- {gHandCursorTiles, 0x800, 0},
- {gHandCursorShadowTiles, 0x80, 1},
+ {sHandCursor_Gfx, 0x800, GFXTAG_CURSOR},
+ {sHandCursorShadow_Gfx, 0x80, GFXTAG_CURSOR_SHADOW},
{}
};
struct SpritePalette spritePalettes[] =
{
- {gHandCursorPalette, TAG_PAL_DAC7},
+ {sHandCursor_Pal, PALTAG_MISC_1},
{}
};
- static const struct OamData sOamData_857BA0C =
+ static const struct OamData sOamData_Cursor =
{
.shape = SPRITE_SHAPE(32x32),
.size = SPRITE_SIZE(32x32),
.priority = 1,
};
- static const struct OamData sOamData_857BA14 =
+ static const struct OamData sOamData_CursorShadow =
{
.shape = SPRITE_SHAPE(16x16),
.size = SPRITE_SIZE(16x16),
.priority = 1,
};
- static const union AnimCmd sSpriteAnim_857BA1C[] =
+ static const union AnimCmd sAnim_Cursor_Bouncing[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(16, 30),
ANIMCMD_JUMP(0)
};
- static const union AnimCmd sSpriteAnim_857BA28[] =
+ static const union AnimCmd sAnim_Cursor_Still[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END
};
- static const union AnimCmd sSpriteAnim_857BA30[] =
+ static const union AnimCmd sAnim_Cursor_Open[] =
{
ANIMCMD_FRAME(32, 5),
ANIMCMD_END
};
- static const union AnimCmd sSpriteAnim_857BA38[] =
+ static const union AnimCmd sAnim_Cursor_Fist[] =
{
ANIMCMD_FRAME(48, 5),
ANIMCMD_END
};
- static const union AnimCmd *const sSpriteAnimTable_857BA40[] =
+ static const union AnimCmd *const sAnims_Cursor[] =
{
- sSpriteAnim_857BA1C,
- sSpriteAnim_857BA28,
- sSpriteAnim_857BA30,
- sSpriteAnim_857BA38
+ [CURSOR_ANIM_BOUNCE] = sAnim_Cursor_Bouncing,
+ [CURSOR_ANIM_STILL] = sAnim_Cursor_Still,
+ [CURSOR_ANIM_OPEN] = sAnim_Cursor_Open,
+ [CURSOR_ANIM_FIST] = sAnim_Cursor_Fist
};
- static const struct SpriteTemplate gSpriteTemplate_857BA50 =
+ static const struct SpriteTemplate sSpriteTemplate_Cursor =
{
- .tileTag = TAG_TILE_0,
- .paletteTag = TAG_PAL_WAVEFORM,
- .oam = &sOamData_857BA0C,
- .anims = sSpriteAnimTable_857BA40,
+ .tileTag = GFXTAG_CURSOR,
+ .paletteTag = PALTAG_MISC_2,
+ .oam = &sOamData_Cursor,
+ .anims = sAnims_Cursor,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
- static const struct SpriteTemplate gSpriteTemplate_857BA68 =
+ static const struct SpriteTemplate sSpriteTemplate_CursorShadow =
{
- .tileTag = TAG_TILE_1,
- .paletteTag = TAG_PAL_WAVEFORM,
- .oam = &sOamData_857BA14,
+ .tileTag = GFXTAG_CURSOR_SHADOW,
+ .paletteTag = PALTAG_MISC_2,
+ .oam = &sOamData_CursorShadow,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80CFBF4,
+ .callback = SpriteCB_CursorShadow,
};
LoadSpriteSheets(spriteSheets);
LoadSpritePalettes(spritePalettes);
- sPSSData->field_CD8[0] = IndexOfSpritePaletteTag(TAG_PAL_WAVEFORM);
- sPSSData->field_CD8[1] = IndexOfSpritePaletteTag(TAG_PAL_DAC7);
+ sStorage->cursorPalNums[0] = IndexOfSpritePaletteTag(PALTAG_MISC_2); // White hand, normal
+ sStorage->cursorPalNums[1] = IndexOfSpritePaletteTag(PALTAG_MISC_1); // Yellow hand, when auto-action is on
- sub_80CD444(sBoxCursorArea, sBoxCursorPosition, &x, &y);
- spriteId = CreateSprite(&gSpriteTemplate_857BA50, x, y, 6);
+ GetCursorCoordsByPos(sCursorArea, sCursorPosition, &x, &y);
+ spriteId = CreateSprite(&sSpriteTemplate_Cursor, x, y, 6);
if (spriteId != MAX_SPRITES)
{
- sPSSData->field_CB4 = &gSprites[spriteId];
- sPSSData->field_CB4->oam.paletteNum = sPSSData->field_CD8[sCanOnlyMove];
- sPSSData->field_CB4->oam.priority = 1;
+ sStorage->cursorSprite = &gSprites[spriteId];
+ sStorage->cursorSprite->oam.paletteNum = sStorage->cursorPalNums[sAutoActionOn];
+ sStorage->cursorSprite->oam.priority = 1;
if (sIsMonBeingMoved)
- StartSpriteAnim(sPSSData->field_CB4, 3);
+ StartSpriteAnim(sStorage->cursorSprite, CURSOR_ANIM_FIST);
}
else
{
- sPSSData->field_CB4 = NULL;
+ sStorage->cursorSprite = NULL;
}
- if (sBoxCursorArea == CURSOR_AREA_IN_PARTY)
+ if (sCursorArea == CURSOR_AREA_IN_PARTY)
{
subpriority = 13;
priority = 1;
@@ -7750,184 +7861,197 @@ static void sub_80CFC14(void)
priority = 2;
}
- spriteId = CreateSprite(&gSpriteTemplate_857BA68, 0, 0, subpriority);
+ spriteId = CreateSprite(&sSpriteTemplate_CursorShadow, 0, 0, subpriority);
if (spriteId != MAX_SPRITES)
{
- sPSSData->field_CB8 = &gSprites[spriteId];
- sPSSData->field_CB8->oam.priority = priority;
- if (sBoxCursorArea)
- sPSSData->field_CB8->invisible = 1;
+ sStorage->cursorShadowSprite = &gSprites[spriteId];
+ sStorage->cursorShadowSprite->oam.priority = priority;
+ if (sCursorArea)
+ sStorage->cursorShadowSprite->invisible = TRUE;
}
else
{
- sPSSData->field_CB8 = NULL;
+ sStorage->cursorShadowSprite = NULL;
}
}
-static void sub_80CFDC4(void)
+static void ToggleCursorAutoAction(void)
{
- sCanOnlyMove = !sCanOnlyMove;
- sPSSData->field_CB4->oam.paletteNum = sPSSData->field_CD8[sCanOnlyMove];
+ sAutoActionOn = !sAutoActionOn;
+ sStorage->cursorSprite->oam.paletteNum = sStorage->cursorPalNums[sAutoActionOn];
}
-static u8 GetBoxCursorPosition(void)
+static u8 GetCursorPosition(void)
{
- return sBoxCursorPosition;
+ return sCursorPosition;
}
-static void sub_80CFE14(u8 *arg0, u8 *arg1)
+static void GetCursorBoxColumnAndRow(u8 *column, u8 *row)
{
- if (sBoxCursorArea == CURSOR_AREA_IN_BOX)
+ if (sCursorArea == CURSOR_AREA_IN_BOX)
{
- *arg0 = sBoxCursorPosition % IN_BOX_ROWS;
- *arg1 = sBoxCursorPosition / IN_BOX_ROWS;
+ *column = sCursorPosition % IN_BOX_COLUMNS;
+ *row = sCursorPosition / IN_BOX_COLUMNS;
}
else
{
- *arg0 = 0;
- *arg1 = 0;
+ *column = 0;
+ *row = 0;
}
}
-static void sub_80CFE54(u8 animNum)
+static void StartCursorAnim(u8 animNum)
{
- StartSpriteAnim(sPSSData->field_CB4, animNum);
+ StartSpriteAnim(sStorage->cursorSprite, animNum);
}
-static u8 sub_80CFE78(void)
+// Unused
+static u8 GetMovingMonOriginalBoxId(void)
{
return sMovingMonOrigBoxId;
}
-static void sub_80CFE84(void)
+static void SetCursorPriorityTo1(void)
{
- sPSSData->field_CB4->oam.priority = 1;
+ sStorage->cursorSprite->oam.priority = 1;
}
-static void sub_80CFEA8(void)
+static void TryHideItemAtCursor(void)
{
- if (sBoxCursorArea == CURSOR_AREA_IN_BOX)
- sub_80D0E50(CURSOR_AREA_IN_BOX, sBoxCursorPosition);
+ if (sCursorArea == CURSOR_AREA_IN_BOX)
+ TryHideItemIconAtPos(CURSOR_AREA_IN_BOX, sCursorPosition);
}
-static void sub_80CFECC(void)
+static void TryShowItemAtCursor(void)
{
- if (sBoxCursorArea == CURSOR_AREA_IN_BOX)
- sub_80D0D8C(CURSOR_AREA_IN_BOX, sBoxCursorPosition);
+ if (sCursorArea == CURSOR_AREA_IN_BOX)
+ TryLoadItemIconAtPos(CURSOR_AREA_IN_BOX, sCursorPosition);
}
+
+//------------------------------------------------------------------------------
+// SECTION: Menu
+//
+// The functions below handle the generic options menu that comes up whenever
+// something in the PC is selected.
+//------------------------------------------------------------------------------
+
+
static void InitMenu(void)
{
- sPSSData->menuItemsCount = 0;
- sPSSData->menuWidth = 0;
- sPSSData->menuWindow.bg = 0;
- sPSSData->menuWindow.paletteNum = 15;
- sPSSData->menuWindow.baseBlock = 92;
-}
-
-static const u8 *const gUnknown_0857BA80[] =
-{
- gPCText_Cancel,
- gPCText_Store,
- gPCText_Withdraw,
- gPCText_Move,
- gPCText_Shift,
- gPCText_Place,
- gPCText_Summary,
- gPCText_Release,
- gPCText_Mark,
- gPCText_Jump,
- gPCText_Wallpaper,
- gPCText_Name,
- gPCText_Take,
- gPCText_Give,
- gPCText_Give,
- gPCText_Switch,
- gPCText_Bag,
- gPCText_Info,
- gPCText_Scenery1,
- gPCText_Scenery2,
- gPCText_Scenery3,
- gPCText_Etcetera,
- gPCText_Friends,
- gPCText_Forest,
- gPCText_City,
- gPCText_Desert,
- gPCText_Savanna,
- gPCText_Crag,
- gPCText_Volcano,
- gPCText_Snow,
- gPCText_Cave,
- gPCText_Beach,
- gPCText_Seafloor,
- gPCText_River,
- gPCText_Sky,
- gPCText_PolkaDot,
- gPCText_Pokecenter,
- gPCText_Machine,
- gPCText_Simple,
+ sStorage->menuItemsCount = 0;
+ sStorage->menuWidth = 0;
+ sStorage->menuWindow.bg = 0;
+ sStorage->menuWindow.paletteNum = 15;
+ sStorage->menuWindow.baseBlock = 92;
+}
+
+static const u8 *const sMenuTexts[] =
+{
+ [MENU_CANCEL] = gPCText_Cancel,
+ [MENU_STORE] = gPCText_Store,
+ [MENU_WITHDRAW] = gPCText_Withdraw,
+ [MENU_MOVE] = gPCText_Move,
+ [MENU_SHIFT] = gPCText_Shift,
+ [MENU_PLACE] = gPCText_Place,
+ [MENU_SUMMARY] = gPCText_Summary,
+ [MENU_RELEASE] = gPCText_Release,
+ [MENU_MARK] = gPCText_Mark,
+ [MENU_JUMP] = gPCText_Jump,
+ [MENU_WALLPAPER] = gPCText_Wallpaper,
+ [MENU_NAME] = gPCText_Name,
+ [MENU_TAKE] = gPCText_Take,
+ [MENU_GIVE] = gPCText_Give,
+ [MENU_GIVE_2] = gPCText_Give,
+ [MENU_SWITCH] = gPCText_Switch,
+ [MENU_BAG] = gPCText_Bag,
+ [MENU_INFO] = gPCText_Info,
+ [MENU_SCENERY_1] = gPCText_Scenery1,
+ [MENU_SCENERY_2] = gPCText_Scenery2,
+ [MENU_SCENERY_3] = gPCText_Scenery3,
+ [MENU_ETCETERA] = gPCText_Etcetera,
+ [MENU_FRIENDS] = gPCText_Friends,
+ [MENU_FOREST] = gPCText_Forest,
+ [MENU_CITY] = gPCText_City,
+ [MENU_DESERT] = gPCText_Desert,
+ [MENU_SAVANNA] = gPCText_Savanna,
+ [MENU_CRAG] = gPCText_Crag,
+ [MENU_VOLCANO] = gPCText_Volcano,
+ [MENU_SNOW] = gPCText_Snow,
+ [MENU_CAVE] = gPCText_Cave,
+ [MENU_BEACH] = gPCText_Beach,
+ [MENU_SEAFLOOR] = gPCText_Seafloor,
+ [MENU_RIVER] = gPCText_River,
+ [MENU_SKY] = gPCText_Sky,
+ [MENU_POLKADOT] = gPCText_PolkaDot,
+ [MENU_POKECENTER] = gPCText_Pokecenter,
+ [MENU_MACHINE] = gPCText_Machine,
+ [MENU_SIMPLE] = gPCText_Simple,
};
static void SetMenuText(u8 textId)
{
- if (sPSSData->menuItemsCount < 7)
+ if (sStorage->menuItemsCount < ARRAY_COUNT(sStorage->menuItems))
{
u8 len;
- struct StorageMenu *menu = &sPSSData->menuItems[sPSSData->menuItemsCount];
+ struct StorageMenu *menu = &sStorage->menuItems[sStorage->menuItemsCount];
- menu->text = gUnknown_0857BA80[textId];
+ menu->text = sMenuTexts[textId];
menu->textId = textId;
len = StringLength(menu->text);
- if (len > sPSSData->menuWidth)
- sPSSData->menuWidth = len;
+ if (len > sStorage->menuWidth)
+ sStorage->menuWidth = len;
- sPSSData->menuItemsCount++;
+ sStorage->menuItemsCount++;
}
}
-static s8 sub_80CFF98(u8 arg0)
+static s8 GetMenuItemTextId(u8 menuIdx)
{
- if (arg0 >= sPSSData->menuItemsCount)
+ if (menuIdx >= sStorage->menuItemsCount)
return -1;
else
- return sPSSData->menuItems[arg0].textId;
+ return sStorage->menuItems[menuIdx].textId;
}
static void AddMenu(void)
{
- sPSSData->menuWindow.width = sPSSData->menuWidth + 2;
- sPSSData->menuWindow.height = 2 * sPSSData->menuItemsCount;
- sPSSData->menuWindow.tilemapLeft = 29 - sPSSData->menuWindow.width;
- sPSSData->menuWindow.tilemapTop = 15 - sPSSData->menuWindow.height;
- sPSSData->field_CB0 = AddWindow(&sPSSData->menuWindow);
- ClearWindowTilemap(sPSSData->field_CB0);
- DrawStdFrameWithCustomTileAndPalette(sPSSData->field_CB0, FALSE, 11, 14);
- PrintMenuTable(sPSSData->field_CB0, sPSSData->menuItemsCount, (void*)sPSSData->menuItems);
- InitMenuInUpperLeftCornerPlaySoundWhenAPressed(sPSSData->field_CB0, sPSSData->menuItemsCount, 0);
+ sStorage->menuWindow.width = sStorage->menuWidth + 2;
+ sStorage->menuWindow.height = 2 * sStorage->menuItemsCount;
+ sStorage->menuWindow.tilemapLeft = 29 - sStorage->menuWindow.width;
+ sStorage->menuWindow.tilemapTop = 15 - sStorage->menuWindow.height;
+ sStorage->menuWindowId = AddWindow(&sStorage->menuWindow);
+ ClearWindowTilemap(sStorage->menuWindowId);
+ DrawStdFrameWithCustomTileAndPalette(sStorage->menuWindowId, FALSE, 11, 14);
+ PrintMenuTable(sStorage->menuWindowId, sStorage->menuItemsCount, (void*)sStorage->menuItems);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(sStorage->menuWindowId, sStorage->menuItemsCount, 0);
ScheduleBgCopyTilemapToVram(0);
- sPSSData->field_CAE = 0;
+ sStorage->menuUnusedField = 0;
}
-static bool8 sub_80D00A8(void)
+// Called after AddMenu to determine whether or not the handler callback should
+// wait to move on to the next state. Evidently there was no need to wait, and
+// now it always returns FALSE
+static bool8 IsMenuLoading(void)
{
return FALSE;
}
-static s16 sub_80D00AC(void)
+static s16 HandleMenuInput(void)
{
- s32 textId = -2;
+ s32 input = MENU_NOTHING_CHOSEN;
do
{
if (JOY_NEW(A_BUTTON))
{
- textId = Menu_GetCursorPos();
+ input = Menu_GetCursorPos();
break;
}
else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
- textId = -1;
+ input = MENU_B_PRESSED;
}
if (JOY_NEW(DPAD_UP))
@@ -7942,26 +8066,32 @@ static s16 sub_80D00AC(void)
}
} while (0);
- if (textId != -2)
- sub_80D013C();
+ if (input != MENU_NOTHING_CHOSEN)
+ RemoveMenu();
- if (textId >= 0)
- textId = sPSSData->menuItems[textId].textId;
+ if (input >= 0)
+ input = sStorage->menuItems[input].textId;
- return textId;
+ return input;
}
-static void sub_80D013C(void)
+static void RemoveMenu(void)
{
- ClearStdWindowAndFrameToTransparent(sPSSData->field_CB0, TRUE);
- RemoveWindow(sPSSData->field_CB0);
+ ClearStdWindowAndFrameToTransparent(sStorage->menuWindowId, TRUE);
+ RemoveWindow(sStorage->menuWindowId);
}
-// The functions below handle moving and grabbing multiple mons at once.
-// The icons are converted to background 0 which coordinates are changed while moving mons.
-// There is also a bit of math involved in determining how many column/rows of mons to grab/move.
-static const struct WindowTemplate gUnknown_0857BB1C =
+//------------------------------------------------------------------------------
+// SECTION: MultiMove
+//
+// The functions below handle moving and selecting multiple Pokémon at once.
+// The icon sprites are moved to bg 0, and this bg is manipulated to move
+// them as a group.
+//------------------------------------------------------------------------------
+
+
+static const struct WindowTemplate sWindowTemplate_MultiMove =
{
.bg = 0,
.tilemapLeft = 10,
@@ -7974,34 +8104,33 @@ static const struct WindowTemplate gUnknown_0857BB1C =
EWRAM_DATA static struct
{
- u8 field_0;
+ u8 funcId;
u8 state;
- u8 fromRow;
u8 fromColumn;
- u8 toRow;
+ u8 fromRow;
u8 toColumn;
- u8 field_6;
- u8 field_7;
- u8 minRow;
+ u8 toRow;
+ u8 cursorColumn;
+ u8 cursorRow;
u8 minColumn;
+ u8 minRow;
+ u8 columnsTotal;
u8 rowsTotal;
- u8 columsTotal;
u16 bgX;
u16 bgY;
- u16 field_10;
+ u16 bgMoveSteps;
struct BoxPokemon boxMons[IN_BOX_COUNT];
-}
-*sMoveMonsPtr = NULL;
+} *sMultiMove = NULL;
-static bool8 sub_80D0164(void)
+static bool8 MultiMove_Init(void)
{
- sMoveMonsPtr = Alloc(sizeof(*sMoveMonsPtr));
- if (sMoveMonsPtr != NULL)
+ sMultiMove = Alloc(sizeof(*sMultiMove));
+ if (sMultiMove != NULL)
{
- sPSSData->field_2200 = AddWindow8Bit(&gUnknown_0857BB1C);
- if (sPSSData->field_2200 != 0xFF)
+ sStorage->multiMoveWindowId = AddWindow8Bit(&sWindowTemplate_MultiMove);
+ if (sStorage->multiMoveWindowId != WINDOW_NONE)
{
- FillWindowPixelBuffer(sPSSData->field_2200, PIXEL_FILL(0));
+ FillWindowPixelBuffer(sStorage->multiMoveWindowId, PIXEL_FILL(0));
return TRUE;
}
}
@@ -8009,64 +8138,64 @@ static bool8 sub_80D0164(void)
return FALSE;
}
-static void sub_80D01B8(void)
+static void MultiMove_Free(void)
{
- if (sMoveMonsPtr != NULL)
- Free(sMoveMonsPtr);
+ if (sMultiMove != NULL)
+ Free(sMultiMove);
}
-static void sub_80D01D0(u8 arg0)
+static void MultiMove_SetFunction(u8 id)
{
- sMoveMonsPtr->field_0 = arg0;
- sMoveMonsPtr->state = 0;
+ sMultiMove->funcId = id;
+ sMultiMove->state = 0;
}
-static bool8 sub_80D01E4(void)
+// Returns TRUE if the called function has more to do, FALSE otherwise
+static bool8 MultiMove_RunFunction(void)
{
- switch (sMoveMonsPtr->field_0)
+ switch (sMultiMove->funcId)
{
- case 0:
- return sub_80D024C();
- case 1:
- return sub_80D0344();
- case 2:
- return sub_80D03B0();
- case 3:
- return sub_80D0420();
- case 4:
- return sub_80D04A0();
- case 5:
- return sub_80D04C8();
+ case MULTIMOVE_START:
+ return MultiMove_Start();
+ case MULTIMOVE_CANCEL:
+ return MultiMove_Cancel();
+ case MULTIMOVE_CHANGE_SELECTION:
+ return MultiMove_ChangeSelection();
+ case MULTIMOVE_GRAB_SELECTION:
+ return MultiMove_GrabSelection();
+ case MULTIMOVE_MOVE_MONS:
+ return MultiMove_MoveMons();
+ case MULTIMOVE_PLACE_MONS:
+ return MultiMove_PlaceMons();
}
-
return FALSE;
}
-static bool8 sub_80D024C(void)
+static bool8 MultiMove_Start(void)
{
- switch (sMoveMonsPtr->state)
+ switch (sMultiMove->state)
{
case 0:
HideBg(0);
sub_80D304C(0x80);
- sMoveMonsPtr->state++;
+ sMultiMove->state++;
break;
case 1:
- sub_80CFE14(&sMoveMonsPtr->fromRow, &sMoveMonsPtr->fromColumn);
- sMoveMonsPtr->toRow = sMoveMonsPtr->fromRow;
- sMoveMonsPtr->toColumn = sMoveMonsPtr->fromColumn;
+ GetCursorBoxColumnAndRow(&sMultiMove->fromColumn, &sMultiMove->fromRow);
+ sMultiMove->toColumn = sMultiMove->fromColumn;
+ sMultiMove->toRow = sMultiMove->fromRow;
ChangeBgX(0, -1024, 0);
ChangeBgY(0, -1024, 0);
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20);
- FillWindowPixelBuffer8Bit(sPSSData->field_2200, PIXEL_FILL(0));
- sub_80D07B0(sMoveMonsPtr->fromRow, sMoveMonsPtr->fromColumn);
+ FillWindowPixelBuffer8Bit(sStorage->multiMoveWindowId, PIXEL_FILL(0));
+ MultiMove_SetIconToBg(sMultiMove->fromColumn, sMultiMove->fromRow);
SetBgAttribute(0, BG_ATTR_PALETTEMODE, 1);
- PutWindowTilemap(sPSSData->field_2200);
- CopyWindowToVram8Bit(sPSSData->field_2200, 3);
+ PutWindowTilemap(sStorage->multiMoveWindowId);
+ CopyWindowToVram8Bit(sStorage->multiMoveWindowId, 3);
BlendPalettes(0x3F00, 8, RGB_WHITE);
- sub_80CFE54(2);
+ StartCursorAnim(CURSOR_ANIM_OPEN);
SetGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR);
- sMoveMonsPtr->state++;
+ sMultiMove->state++;
break;
case 2:
if (!IsDma3ManagerBusyWithBgCopy())
@@ -8080,23 +8209,23 @@ static bool8 sub_80D024C(void)
return TRUE;
}
-static bool8 sub_80D0344(void)
+static bool8 MultiMove_Cancel(void)
{
- switch (sMoveMonsPtr->state)
+ switch (sMultiMove->state)
{
case 0:
HideBg(0);
- sMoveMonsPtr->state++;
+ sMultiMove->state++;
break;
case 1:
- sub_80D0B5C();
- sub_80CFE54(0);
- sMoveMonsPtr->state++;
+ MultiMove_ResetBg();
+ StartCursorAnim(CURSOR_ANIM_BOUNCE);
+ sMultiMove->state++;
break;
case 2:
if (!IsDma3ManagerBusyWithBgCopy())
{
- sub_80CFE84();
+ SetCursorPriorityTo1();
LoadPalette(GetTextWindowPalette(3), 0xD0, 0x20);
ShowBg(0);
return FALSE;
@@ -8107,19 +8236,19 @@ static bool8 sub_80D0344(void)
return TRUE;
}
-static bool8 sub_80D03B0(void)
+static bool8 MultiMove_ChangeSelection(void)
{
- switch (sMoveMonsPtr->state)
+ switch (sMultiMove->state)
{
case 0:
- if (!sub_80CD554())
+ if (!UpdateCursorPos())
{
- sub_80CFE14(&sMoveMonsPtr->field_6, &sMoveMonsPtr->field_7);
- sub_80D062C();
- sMoveMonsPtr->toRow = sMoveMonsPtr->field_6;
- sMoveMonsPtr->toColumn = sMoveMonsPtr->field_7;
- CopyWindowToVram8Bit(sPSSData->field_2200, 2);
- sMoveMonsPtr->state++;
+ GetCursorBoxColumnAndRow(&sMultiMove->cursorColumn, &sMultiMove->cursorRow);
+ MultiMove_UpdateSelectedIcons();
+ sMultiMove->toColumn = sMultiMove->cursorColumn;
+ sMultiMove->toRow = sMultiMove->cursorRow;
+ CopyWindowToVram8Bit(sStorage->multiMoveWindowId, 2);
+ sMultiMove->state++;
}
break;
case 1:
@@ -8129,207 +8258,198 @@ static bool8 sub_80D03B0(void)
return TRUE;
}
-static bool8 sub_80D0420(void)
+static bool8 MultiMove_GrabSelection(void)
{
- u8 var1, var2;
+ bool8 movingBg, movingMon;
- switch (sMoveMonsPtr->state)
+ switch (sMultiMove->state)
{
case 0:
- sub_80D08CC();
- sub_80D09A4();
- sub_80CDC64(FALSE);
- sMoveMonsPtr->state++;
+ MultiMove_GetMonsFromSelection();
+ MultiMove_RemoveMonsFromBox();
+ InitMultiMonPlaceChange(FALSE);
+ sMultiMove->state++;
break;
case 1:
if (!DoMonPlaceChange())
{
- sub_80CFE54(3);
- sub_80D0884(0, 256, 8);
- sub_80CDC64(TRUE);
- sMoveMonsPtr->state++;
+ StartCursorAnim(CURSOR_ANIM_FIST);
+ MultiMove_InitMove(0, 256, 8);
+ InitMultiMonPlaceChange(TRUE);
+ sMultiMove->state++;
}
break;
case 2:
- var1 = sub_80D0894();
- var2 = DoMonPlaceChange();
- if (!var1 && !var2)
- return FALSE;
+ movingBg = MultiMove_UpdateMove();
+ movingMon = DoMonPlaceChange();
+ if (!movingBg && !movingMon)
+ return FALSE; // Finished
break;
}
return TRUE;
}
-static bool8 sub_80D04A0(void)
+static bool8 MultiMove_MoveMons(void)
{
- u8 var1 = sub_80CD554();
- u8 var2 = sub_80D0894();
+ bool8 movingCursor = UpdateCursorPos();
+ bool8 movingBg = MultiMove_UpdateMove();
- if (!var1 && !var2)
+ if (!movingCursor && !movingBg)
return FALSE;
else
return TRUE;
}
-static bool8 sub_80D04C8(void)
+static bool8 MultiMove_PlaceMons(void)
{
- switch (sMoveMonsPtr->state)
+ switch (sMultiMove->state)
{
case 0:
- sub_80D0AAC();
- sub_80D0884(0, -256, 8);
- sub_80CDC64(FALSE);
- sMoveMonsPtr->state++;
+ MultiMove_SetPlacedMonData();
+ MultiMove_InitMove(0, -256, 8);
+ InitMultiMonPlaceChange(FALSE);
+ sMultiMove->state++;
break;
case 1:
- if (!DoMonPlaceChange() && !sub_80D0894())
+ if (!DoMonPlaceChange() && !MultiMove_UpdateMove())
{
- sub_80D0A1C();
- sub_80CFE54(2);
- sub_80CDC64(TRUE);
+ MultiMove_CreatePlacedMonIcons();
+ StartCursorAnim(CURSOR_ANIM_OPEN);
+ InitMultiMonPlaceChange(TRUE);
HideBg(0);
- sMoveMonsPtr->state++;
+ sMultiMove->state++;
}
break;
case 2:
if (!DoMonPlaceChange())
{
- sub_80CFE54(0);
- sub_80D0B5C();
- sMoveMonsPtr->state++;
+ StartCursorAnim(CURSOR_ANIM_BOUNCE);
+ MultiMove_ResetBg();
+ sMultiMove->state++;
}
break;
case 3:
if (!IsDma3ManagerBusyWithBgCopy())
{
LoadPalette(GetTextWindowPalette(3), 0xD0, 0x20);
- sub_80CFE84();
+ SetCursorPriorityTo1();
ShowBg(0);
return FALSE;
}
break;
}
-
return TRUE;
}
-static bool8 sub_80D0580(u8 arg0)
+// Returns TRUE if the movement was successful, FALSE otherwise
+static bool8 MultiMove_TryMoveGroup(u8 dir)
{
- switch (arg0)
+ switch (dir)
{
- case 0:
- if (sMoveMonsPtr->minColumn == 0)
+ case 0: // Up
+ if (sMultiMove->minRow == 0)
return FALSE;
- sMoveMonsPtr->minColumn--;
- sub_80D0884(0, 1024, 6);
+ sMultiMove->minRow--;
+ MultiMove_InitMove(0, 1024, 6);
break;
- case 1:
- if (sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal >= 5)
+ case 1: // Down
+ if (sMultiMove->minRow + sMultiMove->rowsTotal >= IN_BOX_ROWS)
return FALSE;
- sMoveMonsPtr->minColumn++;
- sub_80D0884(0, -1024, 6);
+ sMultiMove->minRow++;
+ MultiMove_InitMove(0, -1024, 6);
break;
- case 2:
- if (sMoveMonsPtr->minRow == 0)
+ case 2: // Left
+ if (sMultiMove->minColumn == 0)
return FALSE;
- sMoveMonsPtr->minRow--;
- sub_80D0884(1024, 0, 6);
+ sMultiMove->minColumn--;
+ MultiMove_InitMove(1024, 0, 6);
break;
- case 3:
- if (sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal > 5)
+ case 3: // Right
+ if (sMultiMove->minColumn + sMultiMove->columnsTotal >= IN_BOX_COLUMNS)
return FALSE;
- sMoveMonsPtr->minRow++;
- sub_80D0884(-1024, 0, 6);
+ sMultiMove->minColumn++;
+ MultiMove_InitMove(-1024, 0, 6);
break;
}
-
return TRUE;
}
-static void sub_80D062C(void)
+static void MultiMove_UpdateSelectedIcons(void)
{
- s16 var = (abs(sMoveMonsPtr->fromRow - sMoveMonsPtr->field_6)) - (abs(sMoveMonsPtr->fromRow - sMoveMonsPtr->toRow));
- s16 var2 = (abs(sMoveMonsPtr->fromColumn - sMoveMonsPtr->field_7)) - (abs(sMoveMonsPtr->fromColumn - sMoveMonsPtr->toColumn));
+ s16 columnChange = (abs(sMultiMove->fromColumn - sMultiMove->cursorColumn)) - (abs(sMultiMove->fromColumn - sMultiMove->toColumn));
+ s16 rowChange = (abs(sMultiMove->fromRow - sMultiMove->cursorRow)) - (abs(sMultiMove->fromRow - sMultiMove->toRow));
- if (var > 0)
- sub_80D06D0(sMoveMonsPtr->field_6, sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn);
+ if (columnChange > 0)
+ MultiMove_SelectColumn(sMultiMove->cursorColumn, sMultiMove->fromRow, sMultiMove->toRow);
- if (var < 0)
+ if (columnChange < 0)
{
- sub_80D0740(sMoveMonsPtr->toRow, sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn);
- sub_80D06D0(sMoveMonsPtr->field_6, sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn);
+ MultiMove_DeselectColumn(sMultiMove->toColumn, sMultiMove->fromRow, sMultiMove->toRow);
+ MultiMove_SelectColumn(sMultiMove->cursorColumn, sMultiMove->fromRow, sMultiMove->toRow);
}
- if (var2 > 0)
- sub_80D0708(sMoveMonsPtr->field_7, sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow);
+ if (rowChange > 0)
+ MultiMove_SelectRow(sMultiMove->cursorRow, sMultiMove->fromColumn, sMultiMove->toColumn);
- if (var2 < 0)
+ if (rowChange < 0)
{
- sub_80D0778(sMoveMonsPtr->toColumn, sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow);
- sub_80D0708(sMoveMonsPtr->field_7, sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow);
+ MultiMove_DeselectRow(sMultiMove->toRow, sMultiMove->fromColumn, sMultiMove->toColumn);
+ MultiMove_SelectRow(sMultiMove->cursorRow, sMultiMove->fromColumn, sMultiMove->toColumn);
}
}
-static void sub_80D06D0(u8 arg0, u8 arg1, u8 arg2)
+static void MultiMove_SelectColumn(u8 column, u8 minRow, u8 maxRow)
{
- u8 var1 = arg1;
-
- if (arg1 > arg2)
+ if (minRow > maxRow)
{
- arg1 = arg2;
- arg2 = var1;
+ u8 temp;
+ SWAP(minRow, maxRow, temp);
}
- while (arg1 <= arg2)
- sub_80D07B0(arg0, arg1++);
+ while (minRow <= maxRow)
+ MultiMove_SetIconToBg(column, minRow++);
}
-static void sub_80D0708(u8 arg0, u8 arg1, u8 arg2)
+static void MultiMove_SelectRow(u8 row, u8 minColumn, u8 maxColumn)
{
- u8 var1 = arg1;
-
- if (arg1 > arg2)
+ if (minColumn > maxColumn)
{
- arg1 = arg2;
- arg2 = var1;
+ u8 temp;
+ SWAP(minColumn, maxColumn, temp);
}
- while (arg1 <= arg2)
- sub_80D07B0(arg1++, arg0);
+ while (minColumn <= maxColumn)
+ MultiMove_SetIconToBg(minColumn++, row);
}
-static void sub_80D0740(u8 arg0, u8 arg1, u8 arg2)
+static void MultiMove_DeselectColumn(u8 column, u8 minRow, u8 maxRow)
{
- u8 var1 = arg1;
-
- if (arg1 > arg2)
+ if (minRow > maxRow)
{
- arg1 = arg2;
- arg2 = var1;
+ u8 temp;
+ SWAP(minRow, maxRow, temp);
}
- while (arg1 <= arg2)
- sub_80D0834(arg0, arg1++);
+ while (minRow <= maxRow)
+ MultiMove_ClearIconFromBg(column, minRow++);
}
-static void sub_80D0778(u8 arg0, u8 arg1, u8 arg2)
+static void MultiMove_DeselectRow(u8 row, u8 minColumn, u8 maxColumn)
{
- u8 var1 = arg1;
-
- if (arg1 > arg2)
+ if (minColumn > maxColumn)
{
- arg1 = arg2;
- arg2 = var1;
+ u8 temp;
+ SWAP(minColumn, maxColumn, temp);
}
- while (arg1 <= arg2)
- sub_80D0834(arg1++, arg0);
+ while (minColumn <= maxColumn)
+ MultiMove_ClearIconFromBg(minColumn++, row);
}
-static void sub_80D07B0(u8 arg0, u8 arg1)
+static void MultiMove_SetIconToBg(u8 x, u8 y)
{
- u8 position = arg0 + (6 * arg1);
+ u8 position = x + (IN_BOX_COLUMNS * y);
u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2);
u32 personality = GetCurrentBoxMonData(position, MON_DATA_PERSONALITY);
@@ -8338,100 +8458,102 @@ static void sub_80D07B0(u8 arg0, u8 arg1)
const u8 *iconGfx = GetMonIconPtr(species, personality, 1);
u8 index = GetValidMonIconPalIndex(species) + 8;
- BlitBitmapRectToWindow4BitTo8Bit(sPSSData->field_2200,
+ BlitBitmapRectToWindow4BitTo8Bit(sStorage->multiMoveWindowId,
iconGfx,
0,
0,
32,
32,
- 24 * arg0,
- 24 * arg1,
+ 24 * x,
+ 24 * y,
32,
32,
index);
}
}
-static void sub_80D0834(u8 arg0, u8 arg1)
+static void MultiMove_ClearIconFromBg(u8 x, u8 y)
{
- u8 position = arg0 + (6 * arg1);
+ u8 position = x + (IN_BOX_COLUMNS * y);
u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2);
if (species != SPECIES_NONE)
{
- FillWindowPixelRect8Bit(sPSSData->field_2200,
+ FillWindowPixelRect8Bit(sStorage->multiMoveWindowId,
PIXEL_FILL(0),
- 24 * arg0,
- 24 * arg1,
+ 24 * x,
+ 24 * y,
32,
32);
}
}
-static void sub_80D0884(u16 arg0, u16 arg1, u16 arg2)
+static void MultiMove_InitMove(u16 x, u16 y, u16 arg2)
{
- sMoveMonsPtr->bgX = arg0;
- sMoveMonsPtr->bgY = arg1;
- sMoveMonsPtr->field_10 = arg2;
+ sMultiMove->bgX = x;
+ sMultiMove->bgY = y;
+ sMultiMove->bgMoveSteps = arg2;
}
-static u8 sub_80D0894(void)
+static u8 MultiMove_UpdateMove(void)
{
- if (sMoveMonsPtr->field_10 != 0)
+ if (sMultiMove->bgMoveSteps != 0)
{
- ChangeBgX(0, sMoveMonsPtr->bgX, 1);
- ChangeBgY(0, sMoveMonsPtr->bgY, 1);
- sMoveMonsPtr->field_10--;
+ ChangeBgX(0, sMultiMove->bgX, 1);
+ ChangeBgY(0, sMultiMove->bgY, 1);
+ sMultiMove->bgMoveSteps--;
}
- return sMoveMonsPtr->field_10;
+ return sMultiMove->bgMoveSteps;
}
-static void sub_80D08CC(void)
+// Store the Pokémon that the player is picking up
+static void MultiMove_GetMonsFromSelection(void)
{
s32 i, j;
- s32 rowCount, columnCount;
+ s32 columnCount, rowCount;
u8 boxId;
u8 monArrayId;
- sMoveMonsPtr->minRow = min(sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow);
- sMoveMonsPtr->minColumn = min(sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn);
- sMoveMonsPtr->rowsTotal = abs(sMoveMonsPtr->fromRow - sMoveMonsPtr->toRow) + 1;
- sMoveMonsPtr->columsTotal = abs(sMoveMonsPtr->fromColumn - sMoveMonsPtr->toColumn) + 1;
+ sMultiMove->minColumn = min(sMultiMove->fromColumn, sMultiMove->toColumn);
+ sMultiMove->minRow = min(sMultiMove->fromRow, sMultiMove->toRow);
+ sMultiMove->columnsTotal = abs(sMultiMove->fromColumn - sMultiMove->toColumn) + 1;
+ sMultiMove->rowsTotal = abs(sMultiMove->fromRow - sMultiMove->toRow) + 1;
boxId = StorageGetCurrentBox();
monArrayId = 0;
- rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal;
- columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal;
- for (i = sMoveMonsPtr->minColumn; i < columnCount; i++)
+ columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal;
+ rowCount = sMultiMove->minRow + sMultiMove->rowsTotal;
+ for (i = sMultiMove->minRow; i < rowCount; i++)
{
- u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow;
- for (j = sMoveMonsPtr->minRow; j < rowCount; j++)
+ u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn;
+ for (j = sMultiMove->minColumn; j < columnCount; j++)
{
struct BoxPokemon *boxMon = GetBoxedMonPtr(boxId, boxPosition);
// UB: possible null dereference
#ifdef UBFIX
if (boxMon != NULL)
- sMoveMonsPtr->boxMons[monArrayId] = *boxMon;
-#else
- sMoveMonsPtr->boxMons[monArrayId] = *boxMon;
#endif
+ sMultiMove->boxMons[monArrayId] = *boxMon;
+
monArrayId++;
boxPosition++;
}
}
}
-static void sub_80D09A4(void)
+// The Pokémon the player has picked up have been stored, now delete
+// them from their original positions
+static void MultiMove_RemoveMonsFromBox(void)
{
s32 i, j;
- s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal;
- s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal;
+ s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal;
+ s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal;
u8 boxId = StorageGetCurrentBox();
- for (i = sMoveMonsPtr->minColumn; i < columnCount; i++)
+ for (i = sMultiMove->minRow; i < rowCount; i++)
{
- u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow;
- for (j = sMoveMonsPtr->minRow; j < rowCount; j++)
+ u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn;
+ for (j = sMultiMove->minColumn; j < columnCount; j++)
{
DestroyBoxMonIconAtPosition(boxPosition);
ZeroBoxMonAt(boxId, boxPosition);
@@ -8440,48 +8562,48 @@ static void sub_80D09A4(void)
}
}
-static void sub_80D0A1C(void)
+static void MultiMove_CreatePlacedMonIcons(void)
{
s32 i, j;
- s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal;
- s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal;
+ s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal;
+ s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal;
u8 monArrayId = 0;
- for (i = sMoveMonsPtr->minColumn; i < columnCount; i++)
+ for (i = sMultiMove->minRow; i < rowCount; i++)
{
- u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow;
- for (j = sMoveMonsPtr->minRow; j < rowCount; j++)
+ u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn;
+ for (j = sMultiMove->minColumn; j < columnCount; j++)
{
- if (GetBoxMonData(&sMoveMonsPtr->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES))
- sub_80CB140(boxPosition);
+ if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES))
+ CreateBoxMonIconAtPos(boxPosition);
monArrayId++;
boxPosition++;
}
}
}
-static void sub_80D0AAC(void)
+static void MultiMove_SetPlacedMonData(void)
{
s32 i, j;
- s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal;
- s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal;
+ s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal;
+ s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal;
u8 boxId = StorageGetCurrentBox();
u8 monArrayId = 0;
- for (i = sMoveMonsPtr->minColumn; i < columnCount; i++)
+ for (i = sMultiMove->minRow; i < rowCount; i++)
{
- u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow;
- for (j = sMoveMonsPtr->minRow; j < rowCount; j++)
+ u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn;
+ for (j = sMultiMove->minColumn; j < columnCount; j++)
{
- if (GetBoxMonData(&sMoveMonsPtr->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES))
- SetBoxMonAt(boxId, boxPosition, &sMoveMonsPtr->boxMons[monArrayId]);
+ if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES))
+ SetBoxMonAt(boxId, boxPosition, &sMultiMove->boxMons[monArrayId]);
boxPosition++;
monArrayId++;
}
}
}
-static void sub_80D0B5C(void)
+static void MultiMove_ResetBg(void)
{
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
@@ -8491,24 +8613,24 @@ static void sub_80D0B5C(void)
CopyBgTilemapBufferToVram(0);
}
-static u8 sub_80D0BA4(void)
+static u8 MultiMove_GetOrigin(void)
{
- return (IN_BOX_ROWS * sMoveMonsPtr->fromColumn) + sMoveMonsPtr->fromRow;
+ return (IN_BOX_COLUMNS * sMultiMove->fromRow) + sMultiMove->fromColumn;
}
-static bool8 sub_80D0BC0(void)
+static bool8 MultiMove_CanPlaceSelection(void)
{
s32 i, j;
- s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal;
- s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal;
+ s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal;
+ s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal;
u8 monArrayId = 0;
- for (i = sMoveMonsPtr->minColumn; i < columnCount; i++)
+ for (i = sMultiMove->minRow; i < rowCount; i++)
{
- u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow;
- for (j = sMoveMonsPtr->minRow; j < rowCount; j++)
+ u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn;
+ for (j = sMultiMove->minColumn; j < columnCount; j++)
{
- if (GetBoxMonData(&sMoveMonsPtr->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)
+ if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)
&& GetCurrentBoxMonData(boxPosition, MON_DATA_SANITY_HAS_SPECIES))
return FALSE;
@@ -8516,13 +8638,20 @@ static bool8 sub_80D0BC0(void)
boxPosition++;
}
}
-
return TRUE;
}
-static const u32 gUnknown_0857BB24[] = INCBIN_U32("graphics/pokemon_storage/unknown_frame.4bpp");
-static const struct OamData sOamData_857BBA4 =
+//------------------------------------------------------------------------------
+// SECTION: Item mode
+//
+// The functions below handle the Move Items mode
+//------------------------------------------------------------------------------
+
+
+static const u32 sItemInfoFrame_Gfx[] = INCBIN_U32("graphics/pokemon_storage/item_info_frame.4bpp");
+
+static const struct OamData sOamData_ItemIcon =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_NORMAL,
@@ -8539,27 +8668,27 @@ static const struct OamData sOamData_857BBA4 =
.affineParam = 0
};
-static const union AffineAnimCmd sSpriteAffineAnim_857BBAC[] =
+static const union AffineAnimCmd sAffineAnim_ItemIcon_Small[] =
{
AFFINEANIMCMD_FRAME(128, 128, 0, 0),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_857BBBC[] =
+static const union AffineAnimCmd sAffineAnim_ItemIcon_Appear[] =
{
AFFINEANIMCMD_FRAME(88, 88, 0, 0),
AFFINEANIMCMD_FRAME(5, 5, 0, 8),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_857BBD4[] =
+static const union AffineAnimCmd sAffineAnim_ItemIcon_Disappear[] =
{
AFFINEANIMCMD_FRAME(128, 128, 0, 0),
AFFINEANIMCMD_FRAME(-5, -5, 0, 8),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_857BBEC[] =
+static const union AffineAnimCmd sAffineAnim_ItemIcon_PickUp[] =
{
AFFINEANIMCMD_FRAME(128, 128, 0, 0),
AFFINEANIMCMD_FRAME(10, 10, 0, 12),
@@ -8567,7 +8696,7 @@ static const union AffineAnimCmd sSpriteAffineAnim_857BBEC[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_857BC0C[] =
+static const union AffineAnimCmd sAffineAnim_ItemIcon_PutDown[] =
{
AFFINEANIMCMD_FRAME(256, 256, 0, 0),
AFFINEANIMCMD_FRAME(-10, -10, 0, 12),
@@ -8575,99 +8704,82 @@ static const union AffineAnimCmd sSpriteAffineAnim_857BC0C[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_857BC2C[] =
+static const union AffineAnimCmd sAffineAnim_ItemIcon_PutAway[] =
{
AFFINEANIMCMD_FRAME(256, 256, 0, 0),
AFFINEANIMCMD_FRAME(-5, -5, 0, 16),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd sSpriteAffineAnim_857BC44[] =
+static const union AffineAnimCmd sAffineAnim_ItemIcon_Large[] =
{
AFFINEANIMCMD_FRAME(256, 256, 0, 0),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd *const sSpriteAffineAnimTable_857BC44[] =
+static const union AffineAnimCmd *const sAffineAnims_ItemIcon[] =
{
- sSpriteAffineAnim_857BBAC,
- sSpriteAffineAnim_857BBBC,
- sSpriteAffineAnim_857BBD4,
- sSpriteAffineAnim_857BBEC,
- sSpriteAffineAnim_857BC0C,
- sSpriteAffineAnim_857BC2C,
- sSpriteAffineAnim_857BC44
+ [ITEM_ANIM_NONE] = sAffineAnim_ItemIcon_Small,
+ [ITEM_ANIM_APPEAR] = sAffineAnim_ItemIcon_Appear,
+ [ITEM_ANIM_DISAPPEAR] = sAffineAnim_ItemIcon_Disappear,
+ [ITEM_ANIM_PICK_UP] = sAffineAnim_ItemIcon_PickUp,
+ [ITEM_ANIM_PUT_DOWN] = sAffineAnim_ItemIcon_PutDown,
+ [ITEM_ANIM_PUT_AWAY] = sAffineAnim_ItemIcon_PutAway,
+ [ITEM_ANIM_LARGE] = sAffineAnim_ItemIcon_Large
};
-static const struct SpriteTemplate gSpriteTemplate_857BC70 =
+static const struct SpriteTemplate sSpriteTemplate_ItemIcon =
{
- .tileTag = TAG_TILE_7,
- .paletteTag = TAG_PAL_DACB,
- .oam = &sOamData_857BBA4,
+ .tileTag = GFXTAG_ITEM_ICON_0,
+ .paletteTag = PALTAG_ITEM_ICON_0,
+ .oam = &sOamData_ItemIcon,
.anims = gDummySpriteAnimTable,
.images = NULL,
- .affineAnims = sSpriteAffineAnimTable_857BC44,
+ .affineAnims = sAffineAnims_ItemIcon,
.callback = SpriteCallbackDummy,
};
-static void sub_80D0C60(void)
+static void CreateItemIconSprites(void)
{
s32 i;
u8 spriteId;
struct CompressedSpriteSheet spriteSheet;
struct SpriteTemplate spriteTemplate;
- if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
+ if (sStorage->boxOption == OPTION_MOVE_ITEMS)
{
- spriteSheet.data = gUnknown_03000F78;
+ spriteSheet.data = sItemIconGfxBuffer;
spriteSheet.size = 0x200;
- spriteTemplate = gSpriteTemplate_857BC70;
+ spriteTemplate = sSpriteTemplate_ItemIcon;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < MAX_ITEM_ICONS; i++)
{
- spriteSheet.tag = TAG_TILE_7 + i;
+ spriteSheet.tag = GFXTAG_ITEM_ICON_0 + i;
LoadCompressedSpriteSheet(&spriteSheet);
- sPSSData->field_2204[i].tiles = GetSpriteTileStartByTag(spriteSheet.tag) * 32 + (void*)(OBJ_VRAM0);
- sPSSData->field_2204[i].palIndex = AllocSpritePalette(TAG_PAL_DACB + i);
- sPSSData->field_2204[i].palIndex *= 16;
- sPSSData->field_2204[i].palIndex += 0x100;
- spriteTemplate.tileTag = TAG_TILE_7 + i;
- spriteTemplate.paletteTag = TAG_PAL_DACB + i;
+ sStorage->itemIcons[i].tiles = GetSpriteTileStartByTag(spriteSheet.tag) * 32 + (void*)(OBJ_VRAM0);
+ sStorage->itemIcons[i].palIndex = AllocSpritePalette(PALTAG_ITEM_ICON_0 + i);
+ sStorage->itemIcons[i].palIndex *= 16;
+ sStorage->itemIcons[i].palIndex += 0x100;
+ spriteTemplate.tileTag = GFXTAG_ITEM_ICON_0 + i;
+ spriteTemplate.paletteTag = PALTAG_ITEM_ICON_0 + i;
spriteId = CreateSprite(&spriteTemplate, 0, 0, 11);
- sPSSData->field_2204[i].sprite = &gSprites[spriteId];
- sPSSData->field_2204[i].sprite->invisible = TRUE;
- sPSSData->field_2204[i].unk10 = 0;
- }
- }
- sPSSData->movingItem = 0;
-}
-
-// The functions below handle new features of MOVE_ITEMS box option.
-static bool32 sub_80D1324(u8 cursorArea, u8 cursorPos);
-static const u32 *GetItemIconPic(u16 itemId);
-static const u32 *GetItemIconPalette(u16 itemId);
-static u8 sub_80D12E8(void);
-static void sub_80D140C(u8 id, u8 cursorArea, u8 cursorPos);
-static void sub_80D1524(u8 id, const u32 *itemTiles, const u32 *itemPal);
-static void sub_80D15D4(u8 id, u8 animNum);
-static void sub_80D1740(u8 id, bool8 arg1);
-static u8 sub_80D1370(u8 cursorArea, u8 cursorPos);
-static void sub_80D1604(u8 id, u8 arg1, u8 arg2, u8 arg3);
-static void sub_80D1AD8(struct Sprite *sprite);
-static void sub_80D1A48(struct Sprite *sprite);
-static void sub_80D1A74(struct Sprite *sprite);
-static void sub_80D1B14(struct Sprite *sprite);
-static void sub_80D1B94(struct Sprite *sprite);
-static void sub_80D1CCC(struct Sprite *sprite);
-static void sub_80D1C30(struct Sprite *sprite);
-
-static void sub_80D0D8C(u8 cursorArea, u8 cursorPos)
+ sStorage->itemIcons[i].sprite = &gSprites[spriteId];
+ sStorage->itemIcons[i].sprite->invisible = TRUE;
+ sStorage->itemIcons[i].active = FALSE;
+ }
+ }
+ sStorage->movingItemId = ITEM_NONE;
+}
+
+static void TryLoadItemIconAtPos(u8 cursorArea, u8 cursorPos)
{
u16 heldItem;
- if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ if (sStorage->boxOption != OPTION_MOVE_ITEMS)
return;
- if (sub_80D1324(cursorArea, cursorPos))
+
+ // If we've already loaded the item here, stop
+ if (IsItemIconAtPosition(cursorArea, cursorPos))
return;
switch (cursorArea)
@@ -8686,381 +8798,389 @@ static void sub_80D0D8C(u8 cursorArea, u8 cursorPos)
return;
}
- if (heldItem != 0)
+ if (heldItem != ITEM_NONE)
{
const u32 *tiles = GetItemIconPic(heldItem);
const u32 *pal = GetItemIconPalette(heldItem);
- u8 id = sub_80D12E8();
+ u8 id = GetNewItemIconIdx();
- sub_80D140C(id, cursorArea, cursorPos);
- sub_80D1524(id, tiles, pal);
- sub_80D15D4(id, 1);
- sub_80D1740(id, TRUE);
+ SetItemIconPosition(id, cursorArea, cursorPos);
+ LoadItemIconGfx(id, tiles, pal);
+ SetItemIconAffineAnim(id, ITEM_ANIM_APPEAR);
+ SetItemIconActive(id, TRUE);
}
}
-static void sub_80D0E50(u8 cursorArea, u8 cursorPos)
+static void TryHideItemIconAtPos(u8 cursorArea, u8 cursorPos)
{
u8 id;
- if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ if (sStorage->boxOption != OPTION_MOVE_ITEMS)
return;
- id = sub_80D1370(cursorArea, cursorPos);
- sub_80D15D4(id, 2);
- sub_80D1604(id, 0, cursorArea, cursorPos);
+ id = GetItemIconIdxByPosition(cursorArea, cursorPos);
+ SetItemIconAffineAnim(id, ITEM_ANIM_DISAPPEAR);
+ SetItemIconCallback(id, ITEM_CB_WAIT_ANIM, cursorArea, cursorPos);
}
-static void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos)
+static void TakeItemFromMon(u8 cursorArea, u8 cursorPos)
{
u8 id;
- u16 item;
+ u16 itemId;
- if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ if (sStorage->boxOption != OPTION_MOVE_ITEMS)
return;
- id = sub_80D1370(cursorArea, cursorPos);
- item = 0;
- sub_80D15D4(id, 3);
- sub_80D1604(id, 1, cursorArea, cursorPos);
- sub_80D140C(id, 2, 0);
- if (cursorArea == CURSOR_AREA_IN_BOX)
+ id = GetItemIconIdxByPosition(cursorArea, cursorPos);
+ itemId = ITEM_NONE;
+ SetItemIconAffineAnim(id, ITEM_ANIM_PICK_UP);
+ SetItemIconCallback(id, ITEM_CB_TO_HAND, cursorArea, cursorPos);
+ SetItemIconPosition(id, CURSOR_AREA_IN_HAND, 0);
+ if (cursorArea == CURSOR_AREA_IN_BOX)
{
- SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &item);
+ SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &itemId);
SetBoxMonIconObjMode(cursorPos, 1);
}
else
{
- SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &item);
+ SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &itemId);
SetPartyMonIconObjMode(cursorPos, 1);
}
- sPSSData->movingItem = sPSSData->cursorMonItem;
+ sStorage->movingItemId = sStorage->displayMonItemId;
}
-static void sub_80D0F38(u16 item)
+static void InitItemIconInCursor(u16 itemId)
{
- const u32 *tiles = GetItemIconPic(item);
- const u32 *pal = GetItemIconPalette(item);
- u8 id = sub_80D12E8();
-
- sub_80D1524(id, tiles, pal);
- sub_80D15D4(id, 6);
- sub_80D1604(id, 1, 0, 0);
- sub_80D140C(id, 2, 0);
- sub_80D1740(id, TRUE);
- sPSSData->movingItem = item;
+ const u32 *tiles = GetItemIconPic(itemId);
+ const u32 *pal = GetItemIconPalette(itemId);
+ u8 id = GetNewItemIconIdx();
+ LoadItemIconGfx(id, tiles, pal);
+ SetItemIconAffineAnim(id, ITEM_ANIM_LARGE);
+ SetItemIconCallback(id, ITEM_CB_TO_HAND, CURSOR_AREA_IN_BOX, 0);
+ SetItemIconPosition(id, CURSOR_AREA_IN_HAND, 0);
+ SetItemIconActive(id, TRUE);
+ sStorage->movingItemId = itemId;
}
-static void Item_SwitchMonsWithMoving(u8 cursorArea, u8 cursorPos)
+static void SwapItemsWithMon(u8 cursorArea, u8 cursorPos)
{
u8 id;
- u16 item;
+ u16 itemId;
- if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ if (sStorage->boxOption != OPTION_MOVE_ITEMS)
return;
- id = sub_80D1370(cursorArea, cursorPos);
- sub_80D15D4(id, 3);
- sub_80D1604(id, 3, 2, 0);
+ id = GetItemIconIdxByPosition(cursorArea, cursorPos);
+ SetItemIconAffineAnim(id, ITEM_ANIM_PICK_UP);
+ SetItemIconCallback(id, ITEM_CB_SWAP_TO_HAND, CURSOR_AREA_IN_HAND, 0);
if (cursorArea == CURSOR_AREA_IN_BOX)
{
- item = GetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM);
- SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &sPSSData->movingItem);
- sPSSData->movingItem = item;
+ itemId = GetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM);
+ SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &sStorage->movingItemId);
+ sStorage->movingItemId = itemId;
}
else
{
- item = GetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM);
- SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &sPSSData->movingItem);
- sPSSData->movingItem = item;
+ itemId = GetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM);
+ SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &sStorage->movingItemId);
+ sStorage->movingItemId = itemId;
}
- id = sub_80D1370(2, 0);
- sub_80D15D4(id, 4);
- sub_80D1604(id, 4, cursorArea, cursorPos);
+ id = GetItemIconIdxByPosition(CURSOR_AREA_IN_HAND, 0);
+ SetItemIconAffineAnim(id, ITEM_ANIM_PUT_DOWN);
+ SetItemIconCallback(id, ITEM_CB_SWAP_TO_MON, cursorArea, cursorPos);
}
-static void Item_GiveMovingToMon(u8 cursorArea, u8 cursorPos)
+static void GiveItemToMon(u8 cursorArea, u8 cursorPos)
{
u8 id;
- if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ if (sStorage->boxOption != OPTION_MOVE_ITEMS)
return;
- id = sub_80D1370(2, 0);
- sub_80D15D4(id, 4);
- sub_80D1604(id, 2, cursorArea, cursorPos);
+ id = GetItemIconIdxByPosition(CURSOR_AREA_IN_HAND, 0);
+ SetItemIconAffineAnim(id, ITEM_ANIM_PUT_DOWN);
+ SetItemIconCallback(id, ITEM_CB_TO_MON, cursorArea, cursorPos);
if (cursorArea == CURSOR_AREA_IN_BOX)
{
- SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &sPSSData->movingItem);
+ SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &sStorage->movingItemId);
SetBoxMonIconObjMode(cursorPos, 0);
}
else
{
- SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &sPSSData->movingItem);
+ SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &sStorage->movingItemId);
SetPartyMonIconObjMode(cursorPos, 0);
}
}
-static void Item_TakeMons(u8 cursorArea, u8 cursorPos)
+static void MoveItemFromMonToBag(u8 cursorArea, u8 cursorPos)
{
u8 id;
- u16 item;
+ u16 itemId;
- if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ if (sStorage->boxOption != OPTION_MOVE_ITEMS)
return;
- item = 0;
- id = sub_80D1370(cursorArea, cursorPos);
- sub_80D15D4(id, 2);
- sub_80D1604(id, 0, cursorArea, cursorPos);
- if (cursorArea == CURSOR_AREA_IN_BOX)
+ itemId = ITEM_NONE;
+ id = GetItemIconIdxByPosition(cursorArea, cursorPos);
+ SetItemIconAffineAnim(id, ITEM_ANIM_DISAPPEAR);
+ SetItemIconCallback(id, ITEM_CB_WAIT_ANIM, cursorArea, cursorPos);
+ if (cursorArea == CURSOR_AREA_IN_BOX)
{
- SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &item);
+ SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &itemId);
SetBoxMonIconObjMode(cursorPos, 1);
}
else
{
- SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &item);
+ SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &itemId);
SetPartyMonIconObjMode(cursorPos, 1);
}
}
-static void sub_80D1194(void)
+static void MoveItemFromCursorToBag(void)
{
- if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
+ if (sStorage->boxOption == OPTION_MOVE_ITEMS)
{
- u8 id = sub_80D1370(2, 0);
- sub_80D15D4(id, 5);
- sub_80D1604(id, 0, 2, 0);
+ u8 id = GetItemIconIdxByPosition(CURSOR_AREA_IN_HAND, 0);
+ SetItemIconAffineAnim(id, ITEM_ANIM_PUT_AWAY);
+ SetItemIconCallback(id, ITEM_CB_WAIT_ANIM, CURSOR_AREA_IN_HAND, 0);
}
}
-static void sub_80D11CC(void)
+// The party menu is being closed, if the cursor is on
+// a Pokémon that has a held item make sure it slides
+// up along with the closing menu.
+static void MoveHeldItemWithPartyMenu(void)
{
s32 i;
- if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
+ if (sStorage->boxOption != OPTION_MOVE_ITEMS)
return;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < MAX_ITEM_ICONS; i++)
{
- if (sPSSData->field_2204[i].unk10 && sPSSData->field_2204[i].unk8 == 1)
- sub_80D1604(i, 7, 2, 0);
+ if (sStorage->itemIcons[i].active
+ && sStorage->itemIcons[i].area == CURSOR_AREA_IN_PARTY)
+ SetItemIconCallback(i, ITEM_CB_HIDE_PARTY, CURSOR_AREA_IN_HAND, 0);
}
}
-static bool8 sub_80D1218(void)
+static bool8 IsItemIconAnimActive(void)
{
s32 i;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < MAX_ITEM_ICONS; i++)
{
- if (sPSSData->field_2204[i].unk10)
+ if (sStorage->itemIcons[i].active)
{
- if (!sPSSData->field_2204[i].sprite->affineAnimEnded && sPSSData->field_2204[i].sprite->affineAnimBeginning)
+ if (!sStorage->itemIcons[i].sprite->affineAnimEnded
+ && sStorage->itemIcons[i].sprite->affineAnimBeginning)
return TRUE;
- if (sPSSData->field_2204[i].sprite->callback != SpriteCallbackDummy && sPSSData->field_2204[i].sprite->callback != sub_80D1AD8)
+ if (sStorage->itemIcons[i].sprite->callback != SpriteCallbackDummy
+ && sStorage->itemIcons[i].sprite->callback != SpriteCB_ItemIcon_SetPosToCursor)
return TRUE;
}
}
-
return FALSE;
}
-static bool8 IsActiveItemMoving(void)
+static bool8 IsMovingItem(void)
{
s32 i;
- if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
+ if (sStorage->boxOption == OPTION_MOVE_ITEMS)
{
- for (i = 0; i < 3; i++)
+ for (i = 0; i < MAX_ITEM_ICONS; i++)
{
- if (sPSSData->field_2204[i].unk10 && sPSSData->field_2204[i].unk8 == 2)
+ if (sStorage->itemIcons[i].active
+ && sStorage->itemIcons[i].area == CURSOR_AREA_IN_HAND)
return TRUE;
}
}
-
return FALSE;
}
static const u8 *GetMovingItemName(void)
{
- return ItemId_GetName(sPSSData->movingItem);
+ return ItemId_GetName(sStorage->movingItemId);
}
-static u16 GetMovingItem(void)
+static u16 GetMovingItemId(void)
{
- return sPSSData->movingItem;
+ return sStorage->movingItemId;
}
-static u8 sub_80D12E8(void)
+static u8 GetNewItemIconIdx(void)
{
u8 i;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < MAX_ITEM_ICONS; i++)
{
- if (sPSSData->field_2204[i].unk10 == 0)
+ if (!sStorage->itemIcons[i].active)
{
- sPSSData->field_2204[i].unk10 = 1;
+ sStorage->itemIcons[i].active = TRUE;
return i;
}
}
-
- return 3;
+ return MAX_ITEM_ICONS;
}
-static bool32 sub_80D1324(u8 cursorArea, u8 cursorPos)
+static bool32 IsItemIconAtPosition(u8 cursorArea, u8 cursorPos)
{
s32 i;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < MAX_ITEM_ICONS; i++)
{
- if (sPSSData->field_2204[i].unk10
- && sPSSData->field_2204[i].unk8 == cursorArea
- && sPSSData->field_2204[i].unk9 == cursorPos)
+ if (sStorage->itemIcons[i].active
+ && sStorage->itemIcons[i].area == cursorArea
+ && sStorage->itemIcons[i].pos == cursorPos)
return TRUE;
}
-
return FALSE;
}
-static u8 sub_80D1370(u8 cursorArea, u8 cursorPos)
+static u8 GetItemIconIdxByPosition(u8 cursorArea, u8 cursorPos)
{
u8 i;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < MAX_ITEM_ICONS; i++)
{
- if (sPSSData->field_2204[i].unk10
- && sPSSData->field_2204[i].unk8 == cursorArea
- && sPSSData->field_2204[i].unk9 == cursorPos)
+ if (sStorage->itemIcons[i].active
+ && sStorage->itemIcons[i].area == cursorArea
+ && sStorage->itemIcons[i].pos == cursorPos)
return i;
}
-
- return 3;
+ return MAX_ITEM_ICONS;
}
-static u8 sub_80D13C4(struct Sprite *sprite)
+static u8 GetItemIconIdxBySprite(struct Sprite *sprite)
{
u8 i;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < MAX_ITEM_ICONS; i++)
{
- if (sPSSData->field_2204[i].unk10
- && sPSSData->field_2204[i].sprite == sprite)
+ if (sStorage->itemIcons[i].active
+ && sStorage->itemIcons[i].sprite == sprite)
return i;
}
-
- return 3;
+ return MAX_ITEM_ICONS;
}
-static void sub_80D140C(u8 id, u8 cursorArea, u8 cursorPos)
+static void SetItemIconPosition(u8 id, u8 cursorArea, u8 cursorPos)
{
- u8 row, column;
+ u8 x, y;
- if (id >= 3)
+ if (id >= MAX_ITEM_ICONS)
return;
switch (cursorArea)
{
case CURSOR_AREA_IN_BOX:
- row = cursorPos % IN_BOX_ROWS;
- column = cursorPos / IN_BOX_ROWS;
- sPSSData->field_2204[id].sprite->pos1.x = (24 * row) + 112;
- sPSSData->field_2204[id].sprite->pos1.y = (24 * column) + 56;
- sPSSData->field_2204[id].sprite->oam.priority = 2;
+ x = cursorPos % IN_BOX_COLUMNS;
+ y = cursorPos / IN_BOX_COLUMNS;
+ sStorage->itemIcons[id].sprite->x = (24 * x) + 112;
+ sStorage->itemIcons[id].sprite->y = (24 * y) + 56;
+ sStorage->itemIcons[id].sprite->oam.priority = 2;
break;
case CURSOR_AREA_IN_PARTY:
if (cursorPos == 0)
{
- sPSSData->field_2204[id].sprite->pos1.x = 116;
- sPSSData->field_2204[id].sprite->pos1.y = 76;
+ sStorage->itemIcons[id].sprite->x = 116;
+ sStorage->itemIcons[id].sprite->y = 76;
}
else
{
- sPSSData->field_2204[id].sprite->pos1.x = 164;
- sPSSData->field_2204[id].sprite->pos1.y = 24 * (cursorPos - 1) + 28;
+ sStorage->itemIcons[id].sprite->x = 164;
+ sStorage->itemIcons[id].sprite->y = 24 * (cursorPos - 1) + 28;
}
- sPSSData->field_2204[id].sprite->oam.priority = 1;
+ sStorage->itemIcons[id].sprite->oam.priority = 1;
break;
}
- sPSSData->field_2204[id].unk8 = cursorArea;
- sPSSData->field_2204[id].unk9 = cursorPos;
+ sStorage->itemIcons[id].area = cursorArea;
+ sStorage->itemIcons[id].pos = cursorPos;
}
-static void sub_80D1524(u8 id, const u32 *itemTiles, const u32 *itemPal)
+static void LoadItemIconGfx(u8 id, const u32 *itemTiles, const u32 *itemPal)
{
s32 i;
- if (id >= 3)
+ if (id >= MAX_ITEM_ICONS)
return;
- CpuFastFill(0, sPSSData->field_42C4, 0x200);
- LZ77UnCompWram(itemTiles, sPSSData->field_22C4);
+ CpuFastFill(0, sStorage->itemIconBuffer, 0x200);
+ LZ77UnCompWram(itemTiles, sStorage->tileBuffer);
for (i = 0; i < 3; i++)
- CpuFastCopy(sPSSData->field_22C4 + (i * 0x60), sPSSData->field_42C4 + (i * 0x80), 0x60);
+ CpuFastCopy(&sStorage->tileBuffer[i * 0x60], &sStorage->itemIconBuffer[i * 0x80], 0x60);
- CpuFastCopy(sPSSData->field_42C4, sPSSData->field_2204[id].tiles, 0x200);
- LZ77UnCompWram(itemPal, sPSSData->field_42C4);
- LoadPalette(sPSSData->field_42C4, sPSSData->field_2204[id].palIndex, 0x20);
+ CpuFastCopy(sStorage->itemIconBuffer, sStorage->itemIcons[id].tiles, 0x200);
+ LZ77UnCompWram(itemPal, sStorage->itemIconBuffer);
+ LoadPalette(sStorage->itemIconBuffer, sStorage->itemIcons[id].palIndex, 0x20);
}
-static void sub_80D15D4(u8 id, u8 animNum)
+static void SetItemIconAffineAnim(u8 id, u8 animNum)
{
- if (id >= 3)
+ if (id >= MAX_ITEM_ICONS)
return;
- StartSpriteAffineAnim(sPSSData->field_2204[id].sprite, animNum);
+ StartSpriteAffineAnim(sStorage->itemIcons[id].sprite, animNum);
}
-static void sub_80D1604(u8 id, u8 arg1, u8 arg2, u8 arg3)
+#define sItemIconId data[0]
+#define sState data[0]
+#define sCursorArea data[6]
+#define sCursorPos data[7]
+
+static void SetItemIconCallback(u8 id, u8 callbackId, u8 cursorArea, u8 cursorPos)
{
- if (id >= 3)
+ if (id >= MAX_ITEM_ICONS)
return;
- switch (arg1)
+ switch (callbackId)
{
- case 0:
- sPSSData->field_2204[id].sprite->data[0] = id;
- sPSSData->field_2204[id].sprite->callback = sub_80D1A48;
+ case ITEM_CB_WAIT_ANIM:
+ sStorage->itemIcons[id].sprite->sItemIconId = id;
+ sStorage->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_WaitAnim;
break;
- case 1:
- sPSSData->field_2204[id].sprite->data[0] = 0;
- sPSSData->field_2204[id].sprite->callback = sub_80D1A74;
+ case ITEM_CB_TO_HAND:
+ sStorage->itemIcons[id].sprite->sState = 0;
+ sStorage->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_ToHand;
break;
- case 2:
- sPSSData->field_2204[id].sprite->data[0] = 0;
- sPSSData->field_2204[id].sprite->data[6] = arg2;
- sPSSData->field_2204[id].sprite->data[7] = arg3;
- sPSSData->field_2204[id].sprite->callback = sub_80D1B14;
+ case ITEM_CB_TO_MON:
+ sStorage->itemIcons[id].sprite->sState = 0;
+ sStorage->itemIcons[id].sprite->sCursorArea = cursorArea;
+ sStorage->itemIcons[id].sprite->sCursorPos = cursorPos;
+ sStorage->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_ToMon;
break;
- case 3:
- sPSSData->field_2204[id].sprite->data[0] = 0;
- sPSSData->field_2204[id].sprite->callback = sub_80D1B94;
- sPSSData->field_2204[id].sprite->data[6] = arg2;
- sPSSData->field_2204[id].sprite->data[7] = arg3;
+ case ITEM_CB_SWAP_TO_HAND:
+ sStorage->itemIcons[id].sprite->sState = 0;
+ sStorage->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_SwapToHand;
+ sStorage->itemIcons[id].sprite->sCursorArea = cursorArea;
+ sStorage->itemIcons[id].sprite->sCursorPos = cursorPos;
break;
- case 4:
- sPSSData->field_2204[id].sprite->data[0] = 0;
- sPSSData->field_2204[id].sprite->data[6] = arg2;
- sPSSData->field_2204[id].sprite->data[7] = arg3;
- sPSSData->field_2204[id].sprite->callback = sub_80D1C30;
+ case ITEM_CB_SWAP_TO_MON:
+ sStorage->itemIcons[id].sprite->sState = 0;
+ sStorage->itemIcons[id].sprite->sCursorArea = cursorArea;
+ sStorage->itemIcons[id].sprite->sCursorPos = cursorPos;
+ sStorage->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_SwapToMon;
break;
- case 7:
- sPSSData->field_2204[id].sprite->callback = sub_80D1CCC;
+ case ITEM_CB_HIDE_PARTY:
+ // If cursor is on a Pokémon with a held item and
+ // the player closes the party menu, have the held
+ // item follow the Pokémon as the menu slides out
+ sStorage->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_HideParty;
break;
}
}
-static void sub_80D1740(u8 id, bool8 arg1)
+static void SetItemIconActive(u8 id, bool8 active)
{
- if (id >= 3)
+ if (id >= MAX_ITEM_ICONS)
return;
- sPSSData->field_2204[id].unk10 = arg1;
- sPSSData->field_2204[id].sprite->invisible = (arg1 == FALSE);
+ sStorage->itemIcons[id].active = active;
+ sStorage->itemIcons[id].sprite->invisible = (active == FALSE);
}
static const u32 *GetItemIconPic(u16 itemId)
@@ -9077,213 +9197,224 @@ static void PrintItemDescription(void)
{
const u8 *description;
- if (IsActiveItemMoving())
- description = ItemId_GetDescription(sPSSData->movingItem);
+ if (IsMovingItem())
+ description = ItemId_GetDescription(sStorage->movingItemId);
else
- description = ItemId_GetDescription(sPSSData->cursorMonItem);
+ description = ItemId_GetDescription(sStorage->displayMonItemId);
FillWindowPixelBuffer(2, PIXEL_FILL(1));
AddTextPrinterParameterized5(2, 1, description, 4, 0, 0, NULL, 0, 1);
}
-static void sub_80D1818(void)
+static void InitItemInfoWindow(void)
{
- sPSSData->field_2236 = 0x15;
- LoadBgTiles(0, gUnknown_0857BB24, 0x80, 0x13A);
- sub_80D19B4(0);
+ sStorage->itemInfoWindowOffset = 21;
+ LoadBgTiles(0, sItemInfoFrame_Gfx, 0x80, 0x13A);
+ DrawItemInfoWindow(0);
}
-static bool8 sub_80D184C(void)
+static bool8 UpdateItemInfoWindowSlideIn(void)
{
- s32 i, var;
+ s32 i, pos;
- if (sPSSData->field_2236 == 0)
+ if (sStorage->itemInfoWindowOffset == 0)
return FALSE;
- sPSSData->field_2236--;
- var = 0x15 - sPSSData->field_2236;
- for (i = 0; i < var; i++)
- {
- WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + sPSSData->field_2236 + i, i, 13, 1, 7, 15, 21);
- }
+ sStorage->itemInfoWindowOffset--;
+ pos = 21 - sStorage->itemInfoWindowOffset;
+ for (i = 0; i < pos; i++)
+ WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + sStorage->itemInfoWindowOffset + i, i, 13, 1, 7, 15, 21);
- sub_80D19B4(var);
- return (sPSSData->field_2236 != 0);
+ DrawItemInfoWindow(pos);
+ return (sStorage->itemInfoWindowOffset != 0);
}
-static bool8 sub_80D18E4(void)
+static bool8 UpdateItemInfoWindowSlideOut(void)
{
- s32 i, var;
+ s32 i, pos;
- if (sPSSData->field_2236 == 0x16)
+ if (sStorage->itemInfoWindowOffset == 22)
return FALSE;
- if (sPSSData->field_2236 == 0)
+ if (sStorage->itemInfoWindowOffset == 0)
FillBgTilemapBufferRect(0, 0, 21, 12, 1, 9, 17);
- sPSSData->field_2236++;
- var = 0x15 - sPSSData->field_2236;
- for (i = 0; i < var; i++)
+ sStorage->itemInfoWindowOffset++;
+ pos = 21 - sStorage->itemInfoWindowOffset;
+ for (i = 0; i < pos; i++)
{
- WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + sPSSData->field_2236 + i, i, 13, 1, 7, 15, 21);
+ WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + sStorage->itemInfoWindowOffset + i, i, 13, 1, 7, 15, 21);
}
- if (var >= 0)
- sub_80D19B4(var);
+ if (pos >= 0)
+ DrawItemInfoWindow(pos);
- FillBgTilemapBufferRect(0, 0, var + 1, 12, 1, 9, 0x11);
+ FillBgTilemapBufferRect(0, 0, pos + 1, 12, 1, 9, 0x11);
ScheduleBgCopyTilemapToVram(0);
return TRUE;
}
-static void sub_80D19B4(u32 arg0)
+static void DrawItemInfoWindow(u32 pos)
{
- if (arg0 != 0)
+ if (pos != 0)
{
- FillBgTilemapBufferRect(0, 0x13A, 0, 0xC, arg0, 1, 0xFu);
- FillBgTilemapBufferRect(0, 0x93A, 0, 0x14, arg0, 1, 0xFu);
+ FillBgTilemapBufferRect(0, 0x13A, 0, 0xC, pos, 1, 0xFu);
+ FillBgTilemapBufferRect(0, 0x93A, 0, 0x14, pos, 1, 0xFu);
}
- FillBgTilemapBufferRect(0, 0x13B, arg0, 0xD, 1, 7, 0xFu);
- FillBgTilemapBufferRect(0, 0x13C, arg0, 0xC, 1, 1, 0xFu);
- FillBgTilemapBufferRect(0, 0x13D, arg0, 0x14, 1, 1, 0xFu);
+ FillBgTilemapBufferRect(0, 0x13B, pos, 0xD, 1, 7, 0xFu);
+ FillBgTilemapBufferRect(0, 0x13C, pos, 0xC, 1, 1, 0xFu);
+ FillBgTilemapBufferRect(0, 0x13D, pos, 0x14, 1, 1, 0xFu);
ScheduleBgCopyTilemapToVram(0);
}
-static void sub_80D1A48(struct Sprite *sprite)
+static void SpriteCB_ItemIcon_WaitAnim(struct Sprite *sprite)
{
if (sprite->affineAnimEnded)
{
- sub_80D1740(sprite->data[0], FALSE);
+ SetItemIconActive(sprite->sItemIconId, FALSE);
sprite->callback = SpriteCallbackDummy;
}
}
-static void sub_80D1A74(struct Sprite *sprite)
+static void SpriteCB_ItemIcon_ToHand(struct Sprite *sprite)
{
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
- sprite->data[1] = sprite->pos1.x << 4;
- sprite->data[2] = sprite->pos1.y << 4;
+ sprite->data[1] = sprite->x << 4;
+ sprite->data[2] = sprite->y << 4;
sprite->data[3] = 10;
sprite->data[4] = 21;
sprite->data[5] = 0;
- sprite->data[0]++;
+ sprite->sState++;
case 1:
sprite->data[1] -= sprite->data[3];
sprite->data[2] -= sprite->data[4];
- sprite->pos1.x = sprite->data[1] >> 4;
- sprite->pos1.y = sprite->data[2] >> 4;
+ sprite->x = sprite->data[1] >> 4;
+ sprite->y = sprite->data[2] >> 4;
if (++sprite->data[5] > 11)
- sprite->callback = sub_80D1AD8;
+ sprite->callback = SpriteCB_ItemIcon_SetPosToCursor;
break;
}
}
-static void sub_80D1AD8(struct Sprite *sprite)
+static void SpriteCB_ItemIcon_SetPosToCursor(struct Sprite *sprite)
{
- sprite->pos1.x = sPSSData->field_CB4->pos1.x + 4;
- sprite->pos1.y = sPSSData->field_CB4->pos1.y + sPSSData->field_CB4->pos2.y + 8;
- sprite->oam.priority = sPSSData->field_CB4->oam.priority;
+ sprite->x = sStorage->cursorSprite->x + 4;
+ sprite->y = sStorage->cursorSprite->y + sStorage->cursorSprite->y2 + 8;
+ sprite->oam.priority = sStorage->cursorSprite->oam.priority;
}
-static void sub_80D1B14(struct Sprite *sprite)
+static void SpriteCB_ItemIcon_ToMon(struct Sprite *sprite)
{
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
- sprite->data[1] = sprite->pos1.x << 4;
- sprite->data[2] = sprite->pos1.y << 4;
+ sprite->data[1] = sprite->x << 4;
+ sprite->data[2] = sprite->y << 4;
sprite->data[3] = 10;
sprite->data[4] = 21;
sprite->data[5] = 0;
- sprite->data[0]++;
+ sprite->sState++;
case 1:
sprite->data[1] += sprite->data[3];
sprite->data[2] += sprite->data[4];
- sprite->pos1.x = sprite->data[1] >> 4;
- sprite->pos1.y = sprite->data[2] >> 4;
+ sprite->x = sprite->data[1] >> 4;
+ sprite->y = sprite->data[2] >> 4;
if (++sprite->data[5] > 11)
{
- sub_80D140C(sub_80D13C4(sprite), sprite->data[6], sprite->data[7]);
+ SetItemIconPosition(GetItemIconIdxBySprite(sprite), sprite->sCursorArea, sprite->sCursorPos);
sprite->callback = SpriteCallbackDummy;
}
break;
}
}
-static void sub_80D1B94(struct Sprite *sprite)
+static void SpriteCB_ItemIcon_SwapToHand(struct Sprite *sprite)
{
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
- sprite->data[1] = sprite->pos1.x << 4;
- sprite->data[2] = sprite->pos1.y << 4;
+ sprite->data[1] = sprite->x << 4;
+ sprite->data[2] = sprite->y << 4;
sprite->data[3] = 10;
sprite->data[4] = 21;
sprite->data[5] = 0;
- sprite->data[0]++;
+ sprite->sState++;
case 1:
sprite->data[1] -= sprite->data[3];
sprite->data[2] -= sprite->data[4];
- sprite->pos1.x = sprite->data[1] >> 4;
- sprite->pos1.y = sprite->data[2] >> 4;
- sprite->pos2.x = gSineTable[sprite->data[5] * 8] >> 4;
+ sprite->x = sprite->data[1] >> 4;
+ sprite->y = sprite->data[2] >> 4;
+ sprite->x2 = gSineTable[sprite->data[5] * 8] >> 4;
if (++sprite->data[5] > 11)
{
- sub_80D140C(sub_80D13C4(sprite), sprite->data[6], sprite->data[7]);
- sprite->pos2.x = 0;
- sprite->callback = sub_80D1AD8;
+ SetItemIconPosition(GetItemIconIdxBySprite(sprite), sprite->sCursorArea, sprite->sCursorPos);
+ sprite->x2 = 0;
+ sprite->callback = SpriteCB_ItemIcon_SetPosToCursor;
}
break;
}
}
-static void sub_80D1C30(struct Sprite *sprite)
+static void SpriteCB_ItemIcon_SwapToMon(struct Sprite *sprite)
{
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
- sprite->data[1] = sprite->pos1.x << 4;
- sprite->data[2] = sprite->pos1.y << 4;
+ sprite->data[1] = sprite->x << 4;
+ sprite->data[2] = sprite->y << 4;
sprite->data[3] = 10;
sprite->data[4] = 21;
sprite->data[5] = 0;
- sprite->data[0]++;
+ sprite->sState++;
case 1:
sprite->data[1] += sprite->data[3];
sprite->data[2] += sprite->data[4];
- sprite->pos1.x = sprite->data[1] >> 4;
- sprite->pos1.y = sprite->data[2] >> 4;
- sprite->pos2.x = -(gSineTable[sprite->data[5] * 8] >> 4);
+ sprite->x = sprite->data[1] >> 4;
+ sprite->y = sprite->data[2] >> 4;
+ sprite->x2 = -(gSineTable[sprite->data[5] * 8] >> 4);
if (++sprite->data[5] > 11)
{
- sub_80D140C(sub_80D13C4(sprite), sprite->data[6], sprite->data[7]);
+ SetItemIconPosition(GetItemIconIdxBySprite(sprite), sprite->sCursorArea, sprite->sCursorPos);
sprite->callback = SpriteCallbackDummy;
- sprite->pos2.x = 0;
+ sprite->x2 = 0;
}
break;
}
}
-static void sub_80D1CCC(struct Sprite *sprite)
+static void SpriteCB_ItemIcon_HideParty(struct Sprite *sprite)
{
- sprite->pos1.y -= 8;
- if (sprite->pos1.y + sprite->pos2.y < -16)
+ sprite->y -= 8;
+ if (sprite->y + sprite->y2 < -16)
{
sprite->callback = SpriteCallbackDummy;
- sub_80D1740(sub_80D13C4(sprite), FALSE);
+ SetItemIconActive(GetItemIconIdxBySprite(sprite), FALSE);
}
}
-void nullsub_pss(void)
-{
+#undef sState
+#undef sItemIconId
+#undef sCursorArea
+#undef sCursorPos
+
+
+//------------------------------------------------------------------------------
+// SECTION: General utility
+//------------------------------------------------------------------------------
-}
-void nullsub_98(void)
+// Unused, leftover from FRLG
+static void BackupPokemonStorage(void/*struct PokemonStorage * dest*/)
{
+ //*dest = *gPokemonStoragePtr;
+}
+// Unused, leftover from FRLG
+static void RestorePokemonStorage(void/*struct PokemonStorage * src*/)
+{
+ //*gPokemonStoragePtr = *src;
}
// Functions here are general utility functions.
@@ -9336,9 +9467,9 @@ u32 GetBoxMonLevelAt(u8 boxId, u8 boxPosition)
if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT && GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], MON_DATA_SANITY_HAS_SPECIES))
lvl = GetLevelFromBoxMonExp(&gPokemonStoragePtr->boxes[boxId][boxPosition]);
- #ifdef BUGFIX
+#ifdef BUGFIX
else
- #endif
+#endif
lvl = 0;
return lvl;
@@ -9411,7 +9542,7 @@ u8 *GetBoxNamePtr(u8 boxId)
return NULL;
}
-u8 GetBoxWallpaper(u8 boxId)
+static u8 GetBoxWallpaper(u8 boxId)
{
if (boxId < TOTAL_BOXES_COUNT)
return gPokemonStoragePtr->boxWallpapers[boxId];
@@ -9419,23 +9550,24 @@ u8 GetBoxWallpaper(u8 boxId)
return 0;
}
-void SetBoxWallpaper(u8 boxId, u8 wallpaperId)
+static void SetBoxWallpaper(u8 boxId, u8 wallpaperId)
{
if (boxId < TOTAL_BOXES_COUNT && wallpaperId < WALLPAPER_COUNT)
gPokemonStoragePtr->boxWallpapers[boxId] = wallpaperId;
}
-s16 sub_80D214C(struct BoxPokemon *boxMons, u8 currIndex, u8 maxIndex, u8 arg3)
+// For moving to the next Pokémon while viewing the summary screen
+s16 AdvanceStorageMonIndex(struct BoxPokemon *boxMons, u8 currIndex, u8 maxIndex, u8 mode)
{
s16 i;
- s16 adder = -1;
+ s16 direction = -1;
- if (arg3 < 2)
- adder = 1;
+ if (mode == 0 || mode == 1)
+ direction = 1;
- if (arg3 == 1 || arg3 == 3)
+ if (mode == 1 || mode == 3)
{
- for (i = (s8)currIndex + adder; i >= 0 && i <= maxIndex; i += adder)
+ for (i = (s8)currIndex + direction; i >= 0 && i <= maxIndex; i += direction)
{
if (GetBoxMonData(&boxMons[i], MON_DATA_SPECIES) != SPECIES_NONE)
return i;
@@ -9443,7 +9575,7 @@ s16 sub_80D214C(struct BoxPokemon *boxMons, u8 currIndex, u8 maxIndex, u8 arg3)
}
else
{
- for (i = (s8)currIndex + adder; i >= 0 && i <= maxIndex; i += adder)
+ for (i = (s8)currIndex + direction; i >= 0 && i <= maxIndex; i += direction)
{
if (GetBoxMonData(&boxMons[i], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetBoxMonData(&boxMons[i], MON_DATA_IS_EGG))
@@ -9537,6 +9669,12 @@ bool32 AnyStorageMonWithMove(u16 moveId)
return FALSE;
}
+
+//------------------------------------------------------------------------------
+// SECTION: Walda
+//------------------------------------------------------------------------------
+
+
void ResetWaldaWallpaper(void)
{
gSaveBlock1Ptr->waldaPhrase.iconId = 0;
@@ -9564,7 +9702,7 @@ u32 GetWaldaWallpaperPatternId(void)
void SetWaldaWallpaperPatternId(u8 id)
{
- if (id < FRIENDS_WALLPAPERS_COUNT)
+ if (id < ARRAY_COUNT(sWaldaWallpapers))
gSaveBlock1Ptr->waldaPhrase.patternId = id;
}
@@ -9575,7 +9713,7 @@ u32 GetWaldaWallpaperIconId(void)
void SetWaldaWallpaperIconId(u8 id)
{
- if (id < 30)
+ if (id < ARRAY_COUNT(sWaldaWallpaperIcons))
gSaveBlock1Ptr->waldaPhrase.iconId = id;
}
@@ -9605,287 +9743,338 @@ bool32 IsWaldaPhraseEmpty(void)
return (gSaveBlock1Ptr->waldaPhrase.text[0] == EOS);
}
-// Not sure what the purpose of these functions is.
-// They seem to only be called while PSS is initialized.
-EWRAM_DATA static struct UnkStruct_2039D84 *gUnknown_02039D84 = NULL;
-EWRAM_DATA static u16 gUnknown_02039D88 = 0;
+//------------------------------------------------------------------------------
+// SECTION: TilemapUtil
+//
+// Handles 3 particular tilemaps in a somewhat unusual way.
+// For example, while the cursor is on the Close Box button it flashes between
+// two states alternately. Both these states are their own part of the same
+// tilemap that's always present. The utility shifts the tilemap up and down
+// to show/hide the states, and limits the view with a rectangle that only
+// reveals one at a time.
+// Each tilemap is tracked with a TILEMAPID that can be used to reference it.
+//------------------------------------------------------------------------------
+
-static void sub_80D259C(u8 count)
+struct TilemapUtil_RectData
+{
+ s16 x;
+ s16 y;
+ u16 width;
+ u16 height;
+ s16 destX;
+ s16 destY;
+};
+
+struct TilemapUtil
+{
+ struct TilemapUtil_RectData prev; // Only read in unused function
+ struct TilemapUtil_RectData cur;
+ const void *savedTilemap; // Only written in unused function
+ const void *tilemap;
+ u16 altWidth;
+ u16 altHeight; // Never read
+ u16 width;
+ u16 height; // Never read
+ u16 rowSize; // Never read
+ u8 tileSize;
+ u8 bg;
+ bool8 active;
+};
+
+EWRAM_DATA static struct TilemapUtil *sTilemapUtil = NULL;
+EWRAM_DATA static u16 sNumTilemapUtilIds = 0;
+
+static void TilemapUtil_Init(u8 count)
{
u16 i;
- gUnknown_02039D84 = Alloc(sizeof(*gUnknown_02039D84) * count);
- gUnknown_02039D88 = (gUnknown_02039D84 == NULL) ? 0 : count;
- for (i = 0; i < gUnknown_02039D88; i++)
+ sTilemapUtil = Alloc(sizeof(*sTilemapUtil) * count);
+ sNumTilemapUtilIds = (sTilemapUtil == NULL) ? 0 : count;
+ for (i = 0; i < sNumTilemapUtilIds; i++)
{
- gUnknown_02039D84[i].field_18 = NULL;
- gUnknown_02039D84[i].field_2C = 0;
+ sTilemapUtil[i].savedTilemap = NULL;
+ sTilemapUtil[i].active = FALSE;
}
}
-static void sub_80D25F0(void)
+static void TilemapUtil_Free(void)
{
- Free(gUnknown_02039D84);
+ Free(sTilemapUtil);
}
-static void sub_80D2604(void)
+// Unused
+static void TilemapUtil_UpdateAll(void)
{
s32 i;
- for (i = 0; i < gUnknown_02039D88; i++)
+ for (i = 0; i < sNumTilemapUtilIds; i++)
{
- if (gUnknown_02039D84[i].field_2C == 1)
- sub_80D2918(i);
+ if (sTilemapUtil[i].active == TRUE)
+ TilemapUtil_Update(i);
}
}
struct
{
- u16 a;
- u16 b;
-}
-static const sUnkVars[][4] =
+ u16 width;
+ u16 height;
+} static const sTilemapDimensions[][4] =
{
{
- {0x0100, 0x0100},
- {0x0200, 0x0100},
- {0x0100, 0x0200},
- {0x0200, 0x0200},
+ { 256, 256},
+ { 512, 256},
+ { 256, 512},
+ { 512, 512},
},
{
- {0x0080, 0x0080},
- {0x0100, 0x0100},
- {0x0200, 0x0200},
- {0x0400, 0x0400},
+ { 128, 128},
+ { 256, 256},
+ { 512, 512},
+ {1024, 1024},
},
};
-static void sub_80D2644(u8 id, u8 bg, const void *arg2, u16 arg3, u16 arg4)
+static void TilemapUtil_SetMap(u8 id, u8 bg, const void *tilemap, u16 width, u16 height)
{
u16 bgScreenSize, bgType;
- if (id >= gUnknown_02039D88)
+ if (id >= sNumTilemapUtilIds)
return;
- gUnknown_02039D84[id].field_18 = NULL;
- gUnknown_02039D84[id].field_1C = arg2;
- gUnknown_02039D84[id].field_2B = bg;
- gUnknown_02039D84[id].field_24 = arg3;
- gUnknown_02039D84[id].field_26 = arg4;
+ sTilemapUtil[id].savedTilemap = NULL;
+ sTilemapUtil[id].tilemap = tilemap;
+ sTilemapUtil[id].bg = bg;
+ sTilemapUtil[id].width = width;
+ sTilemapUtil[id].height = height;
bgScreenSize = GetBgAttribute(bg, BG_ATTR_SCREENSIZE);
bgType = GetBgAttribute(bg, BG_ATTR_TYPE);
- gUnknown_02039D84[id].field_20 = sUnkVars[bgType][bgScreenSize].a;
- gUnknown_02039D84[id].field_22 = sUnkVars[bgType][bgScreenSize].b;
+ sTilemapUtil[id].altWidth = sTilemapDimensions[bgType][bgScreenSize].width;
+ sTilemapUtil[id].altHeight = sTilemapDimensions[bgType][bgScreenSize].height;
if (bgType != 0)
- gUnknown_02039D84[id].field_2A = 1;
+ sTilemapUtil[id].tileSize = 1;
else
- gUnknown_02039D84[id].field_2A = 2;
+ sTilemapUtil[id].tileSize = 2;
- gUnknown_02039D84[id].field_28 = gUnknown_02039D84[id].field_2A * arg3;
- gUnknown_02039D84[id].field_0[1].field_4 = arg3;
- gUnknown_02039D84[id].field_0[1].field_6 = arg4;
- gUnknown_02039D84[id].field_0[1].field_0 = 0;
- gUnknown_02039D84[id].field_0[1].field_2 = 0;
- gUnknown_02039D84[id].field_0[1].field_8 = 0;
- gUnknown_02039D84[id].field_0[1].field_A = 0;
- gUnknown_02039D84[id].field_0[0] = gUnknown_02039D84[id].field_0[1];
- gUnknown_02039D84[id].field_2C = 1;
+ sTilemapUtil[id].rowSize = sTilemapUtil[id].tileSize * width;
+ sTilemapUtil[id].cur.width = width;
+ sTilemapUtil[id].cur.height = height;
+ sTilemapUtil[id].cur.x = 0;
+ sTilemapUtil[id].cur.y = 0;
+ sTilemapUtil[id].cur.destX = 0;
+ sTilemapUtil[id].cur.destY = 0;
+ sTilemapUtil[id].prev = sTilemapUtil[id].cur;
+ sTilemapUtil[id].active = TRUE;
}
-static void sub_80D2740(u8 id, const void *arg1)
+// Unused
+static void TilemapUtil_SetSavedMap(u8 id, const void *tilemap)
{
- if (id >= gUnknown_02039D88)
+ if (id >= sNumTilemapUtilIds)
return;
- gUnknown_02039D84[id].field_18 = arg1;
- gUnknown_02039D84[id].field_2C = 1;
+ sTilemapUtil[id].savedTilemap = tilemap;
+ sTilemapUtil[id].active = TRUE;
}
-static void sub_80D2770(u8 id, u16 arg1, u16 arg2)
+static void TilemapUtil_SetPos(u8 id, u16 x, u16 y)
{
- if (id >= gUnknown_02039D88)
+ if (id >= sNumTilemapUtilIds)
return;
- gUnknown_02039D84[id].field_0[1].field_8 = arg1;
- gUnknown_02039D84[id].field_0[1].field_A = arg2;
- gUnknown_02039D84[id].field_2C = 1;
+ sTilemapUtil[id].cur.destX = x;
+ sTilemapUtil[id].cur.destY = y;
+ sTilemapUtil[id].active = TRUE;
}
-static void sub_80D27AC(u8 id, u16 arg1, u16 arg2, u16 arg3, u16 arg4)
+static void TilemapUtil_SetRect(u8 id, u16 x, u16 y, u16 width, u16 height)
{
- if (id >= gUnknown_02039D88)
+ if (id >= sNumTilemapUtilIds)
return;
- gUnknown_02039D84[id].field_0[1].field_0 = arg1;
- gUnknown_02039D84[id].field_0[1].field_2 = arg2;
- gUnknown_02039D84[id].field_0[1].field_4 = arg3;
- gUnknown_02039D84[id].field_0[1].field_6 = arg4;
- gUnknown_02039D84[id].field_2C = 1;
+ sTilemapUtil[id].cur.x = x;
+ sTilemapUtil[id].cur.y = y;
+ sTilemapUtil[id].cur.width = width;
+ sTilemapUtil[id].cur.height = height;
+ sTilemapUtil[id].active = TRUE;
}
-static void sub_80D27F4(u8 id, u8 arg1, s8 arg2)
+static void TilemapUtil_Move(u8 id, u8 mode, s8 val)
{
- if (id >= gUnknown_02039D88)
+ if (id >= sNumTilemapUtilIds)
return;
- switch (arg1)
+ switch (mode)
{
case 0:
- gUnknown_02039D84[id].field_0[1].field_8 += arg2;
- gUnknown_02039D84[id].field_0[1].field_4 -= arg2;
+ sTilemapUtil[id].cur.destX += val;
+ sTilemapUtil[id].cur.width -= val;
break;
case 1:
- gUnknown_02039D84[id].field_0[1].field_0 += arg2;
- gUnknown_02039D84[id].field_0[1].field_4 += arg2;
+ sTilemapUtil[id].cur.x += val;
+ sTilemapUtil[id].cur.width += val;
break;
case 2:
- gUnknown_02039D84[id].field_0[1].field_A += arg2;
- gUnknown_02039D84[id].field_0[1].field_6 -= arg2;
+ sTilemapUtil[id].cur.destY += val;
+ sTilemapUtil[id].cur.height -= val;
break;
case 3:
- gUnknown_02039D84[id].field_0[1].field_2 -= arg2;
- gUnknown_02039D84[id].field_0[1].field_6 += arg2;
+ sTilemapUtil[id].cur.y -= val;
+ sTilemapUtil[id].cur.height += val;
break;
case 4:
- gUnknown_02039D84[id].field_0[1].field_8 += arg2;
+ sTilemapUtil[id].cur.destX += val;
break;
case 5:
- gUnknown_02039D84[id].field_0[1].field_A += arg2;
+ sTilemapUtil[id].cur.destY += val;
break;
}
- gUnknown_02039D84[id].field_2C = 1;
+ sTilemapUtil[id].active = TRUE;
}
-static void sub_80D2918(u8 id)
+static void TilemapUtil_Update(u8 id)
{
- if (id >= gUnknown_02039D88)
+ if (id >= sNumTilemapUtilIds)
return;
- if (gUnknown_02039D84[id].field_18 != NULL)
- sub_80D2960(id);
+ if (sTilemapUtil[id].savedTilemap != NULL)
+ TilemapUtil_DrawPrev(id); // Never called, above always FALSE
- sub_80D29F8(id);
- gUnknown_02039D84[id].field_0[0] = gUnknown_02039D84[id].field_0[1];
+ TilemapUtil_Draw(id);
+ sTilemapUtil[id].prev = sTilemapUtil[id].cur;
}
-static void sub_80D2960(u8 id)
+static void TilemapUtil_DrawPrev(u8 id)
{
s32 i;
- u32 adder = gUnknown_02039D84[id].field_2A * gUnknown_02039D84[id].field_20;
- const void *tiles = (gUnknown_02039D84[id].field_18 + (adder * gUnknown_02039D84[id].field_0[0].field_A))
- + (gUnknown_02039D84[id].field_2A * gUnknown_02039D84[id].field_0[0].field_8);
+ u32 adder = sTilemapUtil[id].tileSize * sTilemapUtil[id].altWidth;
+ const void *tiles = (sTilemapUtil[id].savedTilemap + (adder * sTilemapUtil[id].prev.destY))
+ + (sTilemapUtil[id].tileSize * sTilemapUtil[id].prev.destX);
- for (i = 0; i < gUnknown_02039D84[id].field_0[0].field_6; i++)
+ for (i = 0; i < sTilemapUtil[id].prev.height; i++)
{
- CopyToBgTilemapBufferRect(gUnknown_02039D84[id].field_2B,
+ CopyToBgTilemapBufferRect(sTilemapUtil[id].bg,
tiles,
- gUnknown_02039D84[id].field_0[0].field_8,
- gUnknown_02039D84[id].field_0[0].field_A + i,
- gUnknown_02039D84[id].field_0[0].field_4,
+ sTilemapUtil[id].prev.destX,
+ sTilemapUtil[id].prev.destY + i,
+ sTilemapUtil[id].prev.width,
1);
tiles += adder;
}
}
-static void sub_80D29F8(u8 id)
+static void TilemapUtil_Draw(u8 id)
{
s32 i;
- u32 adder = gUnknown_02039D84[id].field_2A * gUnknown_02039D84[id].field_24;
- const void *tiles = (gUnknown_02039D84[id].field_1C + (adder * gUnknown_02039D84[id].field_0[1].field_2))
- + (gUnknown_02039D84[id].field_2A * gUnknown_02039D84[id].field_0[1].field_0);
+ u32 adder = sTilemapUtil[id].tileSize * sTilemapUtil[id].width;
+ const void *tiles = (sTilemapUtil[id].tilemap + (adder * sTilemapUtil[id].cur.y))
+ + (sTilemapUtil[id].tileSize * sTilemapUtil[id].cur.x);
- for (i = 0; i < gUnknown_02039D84[id].field_0[1].field_6; i++)
+ for (i = 0; i < sTilemapUtil[id].cur.height; i++)
{
- CopyToBgTilemapBufferRect(gUnknown_02039D84[id].field_2B,
+ CopyToBgTilemapBufferRect(sTilemapUtil[id].bg,
tiles,
- gUnknown_02039D84[id].field_0[1].field_8,
- gUnknown_02039D84[id].field_0[1].field_A + i,
- gUnknown_02039D84[id].field_0[1].field_4,
+ sTilemapUtil[id].cur.destX,
+ sTilemapUtil[id].cur.destY + i,
+ sTilemapUtil[id].cur.width,
1);
tiles += adder;
}
}
-EWRAM_DATA static struct UnkStruct_2000020 *gUnknown_02039D8C = NULL;
-static void sub_80D2A90(struct UnkStruct_2000020 *arg0, struct UnkStruct_2000028 *arg1, u32 arg2)
+//------------------------------------------------------------------------------
+// SECTION: UnkUtil
+//
+// Some data transfer utility that goes functionally unused.
+// It gets initialized with UnkUtil_Init, and run every vblank in Pokémon
+// Storage with UnkUtil_Run, but neither of the Add functions are ever used,
+// so UnkUtil_Run performs no actions.
+//------------------------------------------------------------------------------
+
+
+EWRAM_DATA static struct UnkUtil *sUnkUtil = NULL;
+
+static void UnkUtil_Init(struct UnkUtil *util, struct UnkUtilData *data, u32 max)
{
- gUnknown_02039D8C = arg0;
- arg0->unk_00 = arg1;
- arg0->unk_05 = arg2;
- arg0->unk_04 = 0;
+ sUnkUtil = util;
+ util->data = data;
+ util->max = max;
+ util->numActive = 0;
}
-static void sub_80D2AA4(void)
+static void UnkUtil_Run(void)
{
u16 i;
-
- if (gUnknown_02039D8C->unk_04)
+ if (sUnkUtil->numActive)
{
- for (i = 0; i < gUnknown_02039D8C->unk_04; i++)
+ for (i = 0; i < sUnkUtil->numActive; i++)
{
- struct UnkStruct_2000028 *unkStruct = &gUnknown_02039D8C->unk_00[i];
- unkStruct->unk_0c(unkStruct);
+ struct UnkUtilData *data = &sUnkUtil->data[i];
+ data->func(data);
}
-
- gUnknown_02039D8C->unk_04 = 0;
+ sUnkUtil->numActive = 0;
}
}
-static bool8 sub_80D2AEC(u8 *dest, u16 dLeft, u16 dTop, const u8 *src, u16 sLeft, u16 sTop, u16 width, u16 height, u16 unkArg)
+// Unused
+static bool8 UnkUtil_CpuAdd(u8 *dest, u16 dLeft, u16 dTop, const u8 *src, u16 sLeft, u16 sTop, u16 width, u16 height, u16 unkArg)
{
- struct UnkStruct_2000028 *unkStruct;
+ struct UnkUtilData *data;
- if (gUnknown_02039D8C->unk_04 >= gUnknown_02039D8C->unk_05)
+ if (sUnkUtil->numActive >= sUnkUtil->max)
return FALSE;
- unkStruct = &gUnknown_02039D8C->unk_00[gUnknown_02039D8C->unk_04++];
- unkStruct->unk_08 = width * 2;
- unkStruct->unk_04 = dest + 2 * (dTop * 32 + dLeft);
- unkStruct->unk_00 = src + 2 * (sTop * unkArg + sLeft);
- unkStruct->newField = height;
- unkStruct->unk_0a = unkArg;
- unkStruct->unk_0c = sub_80D2B88;
+ data = &sUnkUtil->data[sUnkUtil->numActive++];
+ data->size = width * 2;
+ data->dest = dest + 2 * (dTop * 32 + dLeft);
+ data->src = src + 2 * (sTop * unkArg + sLeft);
+ data->height = height;
+ data->unk = unkArg;
+ data->func = UnkUtil_CpuRun;
return TRUE;
}
-static void sub_80D2B88(struct UnkStruct_2000028 *unkStruct)
+// Functionally unused
+static void UnkUtil_CpuRun(struct UnkUtilData *data)
{
u16 i;
- for (i = 0; i < unkStruct->newField; i++)
+ for (i = 0; i < data->height; i++)
{
- CpuSet(unkStruct->unk_00, unkStruct->unk_04, (unkStruct->unk_08 / 2));
- unkStruct->unk_04 += 64;
- unkStruct->unk_00 += (unkStruct->unk_0a * 2);
+ CpuSet(data->src, data->dest, data->size / 2);
+ data->dest += 64;
+ data->src += data->unk * 2;
}
}
-static bool8 sub_80D2BC0(void *dest, u16 dLeft, u16 dTop, u16 width, u16 height)
+// Unused
+static bool8 UnkUtil_DmaAdd(void *dest, u16 dLeft, u16 dTop, u16 width, u16 height)
{
- struct UnkStruct_2000028 *unkStruct;
+ struct UnkUtilData *data;
- if (gUnknown_02039D8C->unk_04 >= gUnknown_02039D8C->unk_05)
+ if (sUnkUtil->numActive >= sUnkUtil->max)
return FALSE;
- unkStruct = &gUnknown_02039D8C->unk_00[gUnknown_02039D8C->unk_04++];
- unkStruct->unk_08 = width * 2;
- unkStruct->unk_04 = dest + ((dTop * 32) + dLeft) * 2;
- unkStruct->newField = height;
- unkStruct->unk_0c = sub_80D2C1C;
+ data = &sUnkUtil->data[sUnkUtil->numActive++];
+ data->size = width * 2;
+ data->dest = dest + (dTop * 32 + dLeft) * 2;
+ data->height = height;
+ data->func = UnkUtil_DmaRun;
return TRUE;
}
-static void sub_80D2C1C(struct UnkStruct_2000028 *unkStruct)
+// Functionally unused
+static void UnkUtil_DmaRun(struct UnkUtilData *data)
{
u16 i;
- for (i = 0; i < unkStruct->newField; i++)
+ for (i = 0; i < data->height; i++)
{
- Dma3FillLarge_(0, unkStruct->unk_04, unkStruct->unk_08, 16);
- unkStruct->unk_04 += 64;
+ Dma3FillLarge16_(0, data->dest, data->size);
+ data->dest += 64;
}
}
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 7dcfd7b99..dc009bbff 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -47,6 +47,14 @@
#include "constants/rgb.h"
#include "constants/songs.h"
+enum {
+ PSS_PAGE_INFO,
+ PSS_PAGE_SKILLS,
+ PSS_PAGE_BATTLE_MOVES,
+ PSS_PAGE_CONTEST_MOVES,
+ PSS_PAGE_COUNT,
+};
+
// Screen titles (upper left)
#define PSS_LABEL_WINDOW_POKEMON_INFO_TITLE 0
#define PSS_LABEL_WINDOW_POKEMON_SKILLS_TITLE 1
@@ -111,6 +119,11 @@ enum
SPRITE_ARR_ID_COUNT = SPRITE_ARR_ID_MOVE_SELECTOR2 + MOVE_SELECTOR_SPRITES_COUNT
};
+#define TILE_EMPTY_APPEAL_HEART 0x1039
+#define TILE_FILLED_APPEAL_HEART 0x103A
+#define TILE_FILLED_JAM_HEART 0x103C
+#define TILE_EMPTY_JAM_HEART 0x103D
+
static EWRAM_DATA struct PokemonSummaryScreenData
{
/*0x00*/ union {
@@ -175,7 +188,7 @@ static EWRAM_DATA struct PokemonSummaryScreenData
} *sMonSummaryScreen = NULL;
EWRAM_DATA u8 gLastViewedMonIndex = 0;
static EWRAM_DATA u8 sMoveSlotToReplace = 0;
-ALIGNED(4) static EWRAM_DATA u8 sUnknownTaskId = 0;
+ALIGNED(4) static EWRAM_DATA u8 sAnimDelayTaskId = 0;
// forward declarations
static bool8 LoadGraphics(void);
@@ -296,6 +309,7 @@ static void SpriteCb_MoveSelector(struct Sprite *sprite);
static void DestroyMoveSelectorSprites(u8 firstArrayId);
static void SetMainMoveSelectorColor(u8 whichColor);
static void KeepMoveSelectorVisible(u8 firstSpriteId);
+static void SummaryScreen_DestroyAnimDelayTask(void);
// const rom data
#include "data/text/move_descriptions.h"
@@ -707,7 +721,7 @@ static void (*const sTextPrinterTasks[])(u8 taskId) =
};
static const u8 sMemoNatureTextColor[] = _("{COLOR LIGHT_RED}{SHADOW GREEN}");
-static const u8 sMemoMiscTextColor[] = _("{COLOR WHITE}{SHADOW DARK_GREY}"); // This is also affected by palettes, apparently
+static const u8 sMemoMiscTextColor[] = _("{COLOR WHITE}{SHADOW DARK_GRAY}"); // This is also affected by palettes, apparently
static const u8 sStatsLeftColumnLayout[] = _("{DYNAMIC 0}/{DYNAMIC 1}\n{DYNAMIC 2}\n{DYNAMIC 3}");
static const u8 sStatsRightColumnLayout[] = _("{DYNAMIC 0}\n{DYNAMIC 1}\n{DYNAMIC 2}");
static const u8 sMovesPPLayout[] = _("{PP}{DYNAMIC 0}/{DYNAMIC 1}");
@@ -1069,24 +1083,24 @@ void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex,
sMonSummaryScreen->maxMonIndex = maxMonIndex;
sMonSummaryScreen->callback = callback;
- if (mode == PSS_MODE_BOX)
+ if (mode == SUMMARY_MODE_BOX)
sMonSummaryScreen->isBoxMon = TRUE;
else
sMonSummaryScreen->isBoxMon = FALSE;
switch (mode)
{
- case PSS_MODE_NORMAL:
- case PSS_MODE_BOX:
+ case SUMMARY_MODE_NORMAL:
+ case SUMMARY_MODE_BOX:
sMonSummaryScreen->minPageIndex = 0;
sMonSummaryScreen->maxPageIndex = PSS_PAGE_COUNT - 1;
break;
- case PSS_MODE_LOCK_MOVES:
+ case SUMMARY_MODE_LOCK_MOVES:
sMonSummaryScreen->minPageIndex = 0;
sMonSummaryScreen->maxPageIndex = PSS_PAGE_COUNT - 1;
sMonSummaryScreen->lockMovesFlag = TRUE;
break;
- case PSS_MODE_SELECT_MOVE:
+ case SUMMARY_MODE_SELECT_MOVE:
sMonSummaryScreen->minPageIndex = PSS_PAGE_BATTLE_MOVES;
sMonSummaryScreen->maxPageIndex = PSS_PAGE_COUNT - 1;
sMonSummaryScreen->lockMonFlag = TRUE;
@@ -1094,7 +1108,7 @@ void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex,
}
sMonSummaryScreen->currPageIndex = sMonSummaryScreen->minPageIndex;
- SummaryScreen_SetUnknownTaskId(0xFF);
+ SummaryScreen_SetAnimDelayTaskId(TASK_NONE);
if (gMonSpritesGfxPtr == NULL)
sub_806F2AC(0, 0);
@@ -1104,7 +1118,7 @@ void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex,
void ShowSelectMovePokemonSummaryScreen(struct Pokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void), u16 newMove)
{
- ShowPokemonSummaryScreen(PSS_MODE_SELECT_MOVE, mons, monIndex, maxMonIndex, callback);
+ ShowPokemonSummaryScreen(SUMMARY_MODE_SELECT_MOVE, mons, monIndex, maxMonIndex, callback);
sMonSummaryScreen->newMove = newMove;
}
@@ -1239,7 +1253,7 @@ static bool8 LoadGraphics(void)
gMain.state++;
break;
case 22:
- if (sMonSummaryScreen->mode != PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode != SUMMARY_MODE_SELECT_MOVE)
CreateTask(Task_HandleInput, 0);
else
CreateTask(Task_SetHandleReplaceMoveInput, 0);
@@ -1392,7 +1406,7 @@ static bool8 ExtractMonDataToSummaryStruct(struct Pokemon *mon)
sum->ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
break;
case 2:
- if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == PSS_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE)
+ if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == SUMMARY_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE)
{
sum->nature = GetNature(mon);
sum->currentHP = GetMonData(mon, MON_DATA_HP);
@@ -1480,7 +1494,7 @@ static void CloseSummaryScreen(u8 taskId)
{
SetMainCallback2(sMonSummaryScreen->callback);
gLastViewedMonIndex = sMonSummaryScreen->curMonIndex;
- SummaryScreen_DestroyUnknownTask();
+ SummaryScreen_DestroyAnimDelayTask();
ResetSpriteData();
FreeAllSpritePalettes();
StopCryAndClearCrySongs();
@@ -1560,7 +1574,7 @@ static void ChangeSummaryPokemon(u8 taskId, s8 delta)
else
delta = 3;
}
- monId = sub_80D214C(sMonSummaryScreen->monList.boxMons, sMonSummaryScreen->curMonIndex, sMonSummaryScreen->maxMonIndex, delta);
+ monId = AdvanceStorageMonIndex(sMonSummaryScreen->monList.boxMons, sMonSummaryScreen->curMonIndex, sMonSummaryScreen->maxMonIndex, delta);
}
else if (IsMultiBattle() == TRUE)
{
@@ -1598,7 +1612,7 @@ static void Task_ChangeSummaryMon(u8 taskId)
StopCryAndClearCrySongs();
break;
case 1:
- SummaryScreen_DestroyUnknownTask();
+ SummaryScreen_DestroyAnimDelayTask();
DestroySpriteAndFreeResources(&gSprites[sMonSummaryScreen->spriteIds[SPRITE_ARR_ID_MON]]);
break;
case 2:
@@ -2636,29 +2650,30 @@ static void DrawContestMoveHearts(u16 move)
if (move != MOVE_NONE)
{
+ // Draw appeal hearts
u8 effectValue = gContestEffects[gContestMoves[move].effect].appeal;
if (effectValue != 0xFF)
effectValue /= 10;
- for (i = 0; i < 8; i++)
+ for (i = 0; i < MAX_CONTEST_MOVE_HEARTS; i++)
{
if (effectValue != 0xFF && i < effectValue)
- tilemap[(i / 4 * 32) + (i & 3) + 0x1E6] = 0x103A;
+ tilemap[(i / 4 * 32) + (i & 3) + 0x1E6] = TILE_FILLED_APPEAL_HEART;
else
- tilemap[(i / 4 * 32) + (i & 3) + 0x1E6] = 0x1039;
+ tilemap[(i / 4 * 32) + (i & 3) + 0x1E6] = TILE_EMPTY_APPEAL_HEART;
}
+ // Draw jam hearts
effectValue = gContestEffects[gContestMoves[move].effect].jam;
-
if (effectValue != 0xFF)
effectValue /= 10;
- for (i = 0; i < 8; i++)
+ for (i = 0; i < MAX_CONTEST_MOVE_HEARTS; i++)
{
if (effectValue != 0xFF && i < effectValue)
- tilemap[(i / 4 * 32) + (i & 3) + 0x226] = 0x103C;
+ tilemap[(i / 4 * 32) + (i & 3) + 0x226] = TILE_FILLED_JAM_HEART;
else
- tilemap[(i / 4 * 32) + (i & 3) + 0x226] = 0x103D;
+ tilemap[(i / 4 * 32) + (i & 3) + 0x226] = TILE_EMPTY_JAM_HEART;
}
}
}
@@ -2858,7 +2873,7 @@ static void PutPageWindowTilemaps(u8 page)
break;
case PSS_PAGE_BATTLE_MOVES:
PutWindowTilemap(PSS_LABEL_WINDOW_BATTLE_MOVES_TITLE);
- if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == SUMMARY_MODE_SELECT_MOVE)
{
if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC);
@@ -2870,7 +2885,7 @@ static void PutPageWindowTilemaps(u8 page)
break;
case PSS_PAGE_CONTEST_MOVES:
PutWindowTilemap(PSS_LABEL_WINDOW_CONTEST_MOVES_TITLE);
- if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == SUMMARY_MODE_SELECT_MOVE)
{
if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM);
@@ -2906,7 +2921,7 @@ static void ClearPageWindowTilemaps(u8 page)
ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP);
break;
case PSS_PAGE_BATTLE_MOVES:
- if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == SUMMARY_MODE_SELECT_MOVE)
{
if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC);
@@ -2917,7 +2932,7 @@ static void ClearPageWindowTilemaps(u8 page)
}
break;
case PSS_PAGE_CONTEST_MOVES:
- if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == SUMMARY_MODE_SELECT_MOVE)
{
if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM);
@@ -3412,7 +3427,7 @@ static void PrintBattleMoves(void)
PrintMoveNameAndPP(2);
PrintMoveNameAndPP(3);
- if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == SUMMARY_MODE_SELECT_MOVE)
{
PrintNewMoveDetailsOrCancelText();
if (sMonSummaryScreen->firstMoveIndex == MAX_MON_MOVES)
@@ -3446,11 +3461,11 @@ static void Task_PrintBattleMoves(u8 taskId)
PrintMoveNameAndPP(3);
break;
case 5:
- if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == SUMMARY_MODE_SELECT_MOVE)
PrintNewMoveDetailsOrCancelText();
break;
case 6:
- if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == SUMMARY_MODE_SELECT_MOVE)
{
if (sMonSummaryScreen->firstMoveIndex == MAX_MON_MOVES)
data[1] = sMonSummaryScreen->newMove;
@@ -3459,7 +3474,7 @@ static void Task_PrintBattleMoves(u8 taskId)
}
break;
case 7:
- if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == SUMMARY_MODE_SELECT_MOVE)
{
if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
PrintMoveDetails(data[1]);
@@ -3547,7 +3562,7 @@ static void PrintContestMoves(void)
PrintMoveNameAndPP(2);
PrintMoveNameAndPP(3);
- if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == SUMMARY_MODE_SELECT_MOVE)
{
PrintNewMoveDetailsOrCancelText();
PrintContestMoveDescription(sMonSummaryScreen->firstMoveIndex);
@@ -3573,11 +3588,11 @@ static void Task_PrintContestMoves(u8 taskId)
PrintMoveNameAndPP(3);
break;
case 5:
- if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == SUMMARY_MODE_SELECT_MOVE)
PrintNewMoveDetailsOrCancelText();
break;
case 6:
- if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
+ if (sMonSummaryScreen->mode == SUMMARY_MODE_SELECT_MOVE)
{
if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES)
PrintContestMoveDescription(sMonSummaryScreen->firstMoveIndex);
@@ -3612,7 +3627,7 @@ static void PrintMoveDetails(u16 move)
FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
if (move != MOVE_NONE)
{
- if (sMonSummaryScreen->currPageIndex == PSS_MODE_BOX)
+ if (sMonSummaryScreen->currPageIndex == PSS_PAGE_BATTLE_MOVES)
{
PrintMovePowerAndAccuracy(move);
PrintTextOnWindow(windowId, gMoveDescriptionPointers[move - 1], 6, 1, 0, 0);
@@ -3757,8 +3772,8 @@ static void SetTypeSpritePosAndPal(u8 typeId, u8 x, u8 y, u8 spriteArrayId)
struct Sprite *sprite = &gSprites[sMonSummaryScreen->spriteIds[spriteArrayId]];
StartSpriteAnim(sprite, typeId);
sprite->oam.paletteNum = sMoveTypeToOamPaletteNum[typeId];
- sprite->pos1.x = x + 16;
- sprite->pos1.y = y + 8;
+ sprite->x = x + 16;
+ sprite->y = y + 8;
SetSpriteInvisibility(spriteArrayId, FALSE);
}
@@ -3866,14 +3881,14 @@ static u8 LoadMonGfxAndSprite(struct Pokemon *mon, s16 *state)
{
if (gMonSpritesGfxPtr != NULL)
{
- if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == PSS_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE)
+ if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == SUMMARY_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE)
HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites.ptr[1], summary->species2, summary->pid);
else
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites.ptr[1], summary->species2, summary->pid);
}
else
{
- if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == PSS_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE)
+ if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == SUMMARY_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE)
HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], sub_806F4F8(0, 1), summary->species2, summary->pid);
else
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], sub_806F4F8(0, 1), summary->species2, summary->pid);
@@ -3933,17 +3948,19 @@ static void SpriteCB_Pokemon(struct Sprite *sprite)
}
}
-void SummaryScreen_SetUnknownTaskId(u8 taskId)
+// Track and then destroy Task_PokemonSummaryAnimateAfterDelay
+// Normally destroys itself but it can be interrupted before the animation starts
+void SummaryScreen_SetAnimDelayTaskId(u8 taskId)
{
- sUnknownTaskId = taskId;
+ sAnimDelayTaskId = taskId;
}
-void SummaryScreen_DestroyUnknownTask(void)
+static void SummaryScreen_DestroyAnimDelayTask(void)
{
- if (sUnknownTaskId != TASK_NONE)
+ if (sAnimDelayTaskId != TASK_NONE)
{
- DestroyTask(sUnknownTaskId);
- sUnknownTaskId = TASK_NONE;
+ DestroyTask(sAnimDelayTaskId);
+ sAnimDelayTaskId = TASK_NONE;
}
}
@@ -3982,8 +3999,8 @@ static void CreateMonMarkingsSprite(struct Pokemon *mon)
if (sprite != NULL)
{
StartSpriteAnim(sprite, GetMonData(mon, MON_DATA_MARKINGS));
- sMonSummaryScreen->markingsSprite->pos1.x = 60;
- sMonSummaryScreen->markingsSprite->pos1.y = 26;
+ sMonSummaryScreen->markingsSprite->x = 60;
+ sMonSummaryScreen->markingsSprite->y = 26;
sMonSummaryScreen->markingsSprite->oam.priority = 1;
}
}
@@ -4070,9 +4087,9 @@ static void SpriteCb_MoveSelector(struct Sprite *sprite)
}
if (sprite->data[0] == SPRITE_ARR_ID_MOVE_SELECTOR1)
- sprite->pos2.y = sMonSummaryScreen->firstMoveIndex * 16;
+ sprite->y2 = sMonSummaryScreen->firstMoveIndex * 16;
else
- sprite->pos2.y = sMonSummaryScreen->secondMoveIndex * 16;
+ sprite->y2 = sMonSummaryScreen->secondMoveIndex * 16;
}
static void DestroyMoveSelectorSprites(u8 firstArrayId)
diff --git a/src/pokenav.c b/src/pokenav.c
index eac0c85b4..881411b9e 100644
--- a/src/pokenav.c
+++ b/src/pokenav.c
@@ -288,7 +288,7 @@ static void Task_RunLoopedTask_LinkMode(u8 taskId)
s16 *state;
u32 action;
- if (sub_8087598())
+ if (Overworld_LinkRecvQueueLengthMoreThan2())
return;
task = (LoopedTask)GetWordTaskArg(taskId, 1);
diff --git a/src/pokenav_conditions_1.c b/src/pokenav_conditions_1.c
index 0545ff1c1..61b289ae1 100644
--- a/src/pokenav_conditions_1.c
+++ b/src/pokenav_conditions_1.c
@@ -17,7 +17,7 @@ struct PokenavSub11
{
u32 monPal[3][0x20];
u8 fill[0x180];
- u32 monPicGfx[3][0x800];
+ u32 monPicGfx[3][MON_PIC_SIZE];
u8 searchMode;
s16 monIndex;
u32 (*callback)(struct PokenavSub11 *);
@@ -372,7 +372,7 @@ u8 *CopyMonConditionNameGender(u8 *str, u16 id, bool8 arg3)
switch (gender)
{
default:
- *(str_++) = CHAR_UNK_SPACER;
+ *(str_++) = CHAR_GENDERLESS;
break;
case MON_MALE:
*(str_++) = EXT_CTRL_CODE_BEGIN;
diff --git a/src/pokenav_conditions_2.c b/src/pokenav_conditions_2.c
index 26607926b..c882befc4 100644
--- a/src/pokenav_conditions_2.c
+++ b/src/pokenav_conditions_2.c
@@ -672,8 +672,8 @@ void CreateMonMarkingsOrPokeballIndicators(void)
BufferMonMarkingsMenuTiles();
sprite = CreateMonMarkingAllCombosSprite(0x69, 0x69, sConditionGraphMonMarkingsPal);
sprite->oam.priority = 3;
- sprite->pos1.x = 192;
- sprite->pos1.y = 32;
+ sprite->x = 192;
+ sprite->y = 32;
sprite->callback = MonMarkingsCallback;
structPtr->monMarksSprite = sprite;
PokenavFillPalette(IndexOfSpritePaletteTag(0x69), 0);
@@ -792,7 +792,7 @@ void FreePartyConditionSubstruct2(void)
void MonPicGfxSpriteCallback(struct Sprite *sprite)
{
struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
- sprite->pos1.x = structPtr->monTransitionX + 38;
+ sprite->x = structPtr->monTransitionX + 38;
}
void CreateConditionMonPic(u8 id)
@@ -828,7 +828,7 @@ void CreateConditionMonPic(u8 id)
}
else
{
- DmaCopy16Defvars(3, GetConditionMonPicGfx(id), structPtr->unk181C, 0x800);
+ DmaCopy16Defvars(3, GetConditionMonPicGfx(id), structPtr->unk181C, MON_PIC_SIZE);
LoadPalette(GetConditionMonPal(id), structPtr->monPalIndex, 0x20);
}
}
diff --git a/src/pokenav_conditions_3.c b/src/pokenav_conditions_3.c
index 2a1dda1fa..712be6f69 100644
--- a/src/pokenav_conditions_3.c
+++ b/src/pokenav_conditions_3.c
@@ -124,8 +124,8 @@ static const struct WindowTemplate sSearchResultListMenuWindowTemplate =
.baseBlock = 20
};
-static const u8 sText_MaleSymbol[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHITE}{GREEN}♂{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
-static const u8 sText_FemaleSymbol[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
+static const u8 sText_MaleSymbol[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHITE}{GREEN}♂{COLOR_HIGHLIGHT_SHADOW}{DARK_GRAY}{WHITE}{LIGHT_GRAY}");
+static const u8 sText_FemaleSymbol[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GRAY}{WHITE}{LIGHT_GRAY}");
static const u8 sText_NoGenderSymbol[] = _("{UNK_SPACER}");
bool32 PokenavCallback_Init_ConditionSearch(void)
diff --git a/src/pokenav_main_menu.c b/src/pokenav_main_menu.c
index e8262ad9a..88c1773a6 100644
--- a/src/pokenav_main_menu.c
+++ b/src/pokenav_main_menu.c
@@ -102,7 +102,7 @@ static const u8 *const sHelpBarTexts[HELPBAR_COUNT] =
static const u8 sHelpBarTextColors[3] =
{
- TEXT_COLOR_RED, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY
+ TEXT_COLOR_RED, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY
};
static const struct CompressedSpriteSheet gSpinningPokenavSpriteSheet[] =
@@ -604,7 +604,7 @@ static void CleanupPokenavMainMenuResources(void)
static void SpriteCB_SpinningPokenav(struct Sprite *sprite)
{
// If the background starts scrolling, follow it.
- sprite->pos2.y = (GetBgY(0) / 256u) * -1;
+ sprite->y2 = (GetBgY(0) / 256u) * -1;
}
struct Sprite *PauseSpinningPokenavSprite(void)
@@ -619,8 +619,8 @@ void ResumeSpinningPokenavSprite(void)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
- structPtr->spinningPokenav->pos1.x = 220;
- structPtr->spinningPokenav->pos1.y = 12;
+ structPtr->spinningPokenav->x = 220;
+ structPtr->spinningPokenav->y = 12;
structPtr->spinningPokenav->callback = SpriteCB_SpinningPokenav;
structPtr->spinningPokenav->invisible = FALSE;
structPtr->spinningPokenav->oam.priority = 0;
@@ -640,13 +640,13 @@ static void InitHoennMapHeaderSprites(void)
spriteId = CreateSprite(&sPokenavLeftHeaderHoennMapSpriteTemplate, 0, 0, 1);
structPtr->leftHeaderSprites[i] = &gSprites[spriteId];
structPtr->leftHeaderSprites[i]->invisible = TRUE;
- structPtr->leftHeaderSprites[i]->pos2.x = i * 64;
+ structPtr->leftHeaderSprites[i]->x2 = i * 64;
spriteId = CreateSprite(&sUnknown_0861FB44, 0, 0, 2);
structPtr->submenuLeftHeaderSprites[i] = &gSprites[spriteId];
structPtr->submenuLeftHeaderSprites[i]->invisible = TRUE;
- structPtr->submenuLeftHeaderSprites[i]->pos2.x = i * 32;
- structPtr->submenuLeftHeaderSprites[i]->pos2.y = 18;
+ structPtr->submenuLeftHeaderSprites[i]->x2 = i * 32;
+ structPtr->submenuLeftHeaderSprites[i]->y2 = 18;
structPtr->submenuLeftHeaderSprites[i]->oam.tileNum += (i * 8) + 64;
}
}
@@ -686,9 +686,9 @@ static void LoadLeftHeaderGfxForMenu(u32 menuGfxId)
structPtr->leftHeaderSprites[1]->oam.tileNum = GetSpriteTileStartByTag(2) + sPokenavMenuLeftHeaderSpriteSheets[menuGfxId].size;
if (menuGfxId == POKENAV_GFX_MAP_MENU_ZOOMED_OUT || menuGfxId == POKENAV_GFX_MAP_MENU_ZOOMED_IN)
- structPtr->leftHeaderSprites[1]->pos2.x = 56;
+ structPtr->leftHeaderSprites[1]->x2 = 56;
else
- structPtr->leftHeaderSprites[1]->pos2.x = 64;
+ structPtr->leftHeaderSprites[1]->x2 = 64;
}
static void LoadLeftHeaderGfxForSubMenu(u32 menuGfxId)
@@ -702,7 +702,7 @@ static void LoadLeftHeaderGfxForSubMenu(u32 menuGfxId)
size = GetDecompressedDataSize(sPokenavSubMenuLeftHeaderSpriteSheets[menuGfxId].data);
LoadPalette(&gPokenavLeftHeader_Pal[tag * 16], (IndexOfSpritePaletteTag(2) * 16) + 0x100, 0x20);
LZ77UnCompWram(sPokenavSubMenuLeftHeaderSpriteSheets[menuGfxId].data, &gDecompressionBuffer[0x1000]);
- RequestDma3Copy(&gDecompressionBuffer[0x1000], (void *)VRAM + 0x10800 + (GetSpriteTileStartByTag(2) * 32), size, 1);
+ RequestDma3Copy(&gDecompressionBuffer[0x1000], (void *)OBJ_VRAM0 + 0x800 + (GetSpriteTileStartByTag(2) * 32), size, 1);
}
void ShowLeftHeaderGfx(u32 menuGfxId, bool32 isMain, bool32 isOnRightSide)
@@ -762,7 +762,7 @@ static void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide)
for (i = 0; i < (s32)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
{
- structPtr->leftHeaderSprites[i]->pos1.y = startY;
+ structPtr->leftHeaderSprites[i]->y = startY;
MoveLeftHeader(structPtr->leftHeaderSprites[i], start, end, 12);
}
}
@@ -779,7 +779,7 @@ static void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide)
for (i = 0; i < (s32)ARRAY_COUNT(structPtr->submenuLeftHeaderSprites); i++)
{
- structPtr->submenuLeftHeaderSprites[i]->pos1.y = startY;
+ structPtr->submenuLeftHeaderSprites[i]->y = startY;
MoveLeftHeader(structPtr->submenuLeftHeaderSprites[i], start, end, 12);
}
}
@@ -818,7 +818,7 @@ static void HideLeftHeaderSubmenuSprites(bool32 isOnRightSide)
static void MoveLeftHeader(struct Sprite *sprite, s32 startX, s32 endX, s32 duration)
{
- sprite->pos1.x = startX;
+ sprite->x = startX;
sprite->data[0] = startX * 16;
sprite->data[1] = (endX - startX) * 16 / duration;
sprite->data[2] = duration;
@@ -832,15 +832,15 @@ static void SpriteCB_MoveLeftHeader(struct Sprite *sprite)
{
sprite->data[2]--;
sprite->data[0] += sprite->data[1];
- sprite->pos1.x = sprite->data[0] >> 4;
- if (sprite->pos1.x < -16 || sprite->pos1.x > 256)
+ sprite->x = sprite->data[0] >> 4;
+ if (sprite->x < -16 || sprite->x > 256)
sprite->invisible = TRUE;
else
sprite->invisible = FALSE;
}
else
{
- sprite->pos1.x = sprite->data[7];
+ sprite->x = sprite->data[7];
sprite->callback = SpriteCallbackDummy;
}
}
diff --git a/src/pokenav_match_call_2.c b/src/pokenav_match_call_2.c
index 593581d0e..846171efd 100755
--- a/src/pokenav_match_call_2.c
+++ b/src/pokenav_match_call_2.c
@@ -1061,22 +1061,22 @@ static void UpdateWindowsToShowCheckPage(struct Pokenav4Struct *state)
static void sub_81CC034(struct Pokenav4Struct *state)
{
state->msgBoxWindowId = AddWindow(&sCallMsgBoxWindowTemplate);
- sub_8197184(state->msgBoxWindowId, 1, 4);
+ LoadMatchCallWindowGfx(state->msgBoxWindowId, 1, 4);
sub_81C7B40();
}
static void DrawMsgBoxForMatchCallMsg(struct Pokenav4Struct *state)
{
struct Sprite *sprite;
- sub_8197184(state->msgBoxWindowId, 1, 4);
- sub_81971C4(state->msgBoxWindowId, 1, 4);
+ LoadMatchCallWindowGfx(state->msgBoxWindowId, 1, 4);
+ DrawMatchCallTextBoxBorder(state->msgBoxWindowId, 1, 4);
FillWindowPixelBuffer(state->msgBoxWindowId, PIXEL_FILL(1));
PutWindowTilemap(state->msgBoxWindowId);
CopyWindowToVram(state->msgBoxWindowId, 3);
sprite = PauseSpinningPokenavSprite();
- sprite->pos1.x = 24;
- sprite->pos1.y = 112;
- sprite->pos2.y = 0;
+ sprite->x = 24;
+ sprite->y = 112;
+ sprite->y2 = 0;
}
static void DrawMsgBoxForCloseByMsg(struct Pokenav4Struct *state)
@@ -1200,7 +1200,7 @@ static void CloseMatchCallSelectOptionsWindow(struct Pokenav4Struct *state)
static void UpdateCursorGfxPos(struct Pokenav4Struct *state, int top)
{
- state->optionsCursorSprite->pos2.y = top * 16;
+ state->optionsCursorSprite->y2 = top * 16;
}
void SpriteCB_OptionsCursor(struct Sprite *sprite)
@@ -1208,7 +1208,7 @@ void SpriteCB_OptionsCursor(struct Sprite *sprite)
if (++sprite->data[0] > 3)
{
sprite->data[0] = 0;
- sprite->pos2.x = (sprite->pos2.x + 1) & 0x7;
+ sprite->x2 = (sprite->x2 + 1) & 0x7;
}
}
@@ -1251,16 +1251,16 @@ static void SpriteCB_TrainerPicSlideOnscreen(struct Sprite *sprite)
case 0:
if (CheckForSpaceForDma3Request(sprite->data[7]) != -1)
{
- sprite->pos2.x = -80;
+ sprite->x2 = -80;
sprite->invisible = FALSE;
sprite->data[0]++;
}
break;
case 1:
- sprite->pos2.x += 8;
- if (sprite->pos2.x >= 0)
+ sprite->x2 += 8;
+ if (sprite->x2 >= 0)
{
- sprite->pos2.x = 0;
+ sprite->x2 = 0;
sprite->callback = SpriteCallbackDummy;
}
break;
@@ -1269,8 +1269,8 @@ static void SpriteCB_TrainerPicSlideOnscreen(struct Sprite *sprite)
static void SpriteCB_TrainerPicSlideOffscreen(struct Sprite *sprite)
{
- sprite->pos2.x -= 8;
- if (sprite->pos2.x <= -80)
+ sprite->x2 -= 8;
+ if (sprite->x2 <= -80)
{
sprite->invisible = TRUE;
sprite->callback = SpriteCallbackDummy;
diff --git a/src/pokenav_match_call_ui.c b/src/pokenav_match_call_ui.c
index 11bb30162..7e70a50c8 100644
--- a/src/pokenav_match_call_ui.c
+++ b/src/pokenav_match_call_ui.c
@@ -708,7 +708,7 @@ void sub_81C8C64(struct PokenavListMenuWindow *listWindow, u32 a1)
void sub_81C8CB4(struct MatchCallWindowState *state, struct PokenavSub17Substruct *list)
{
- u8 colors[3] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_RED};
+ u8 colors[3] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_RED};
list->unk34(state->unk10 + state->unkC * state->windowTopIndex, list->unkTextBuffer);
list->unk38(list->listWindow.windowId, state->windowTopIndex, list->listWindow.unkA);
@@ -890,7 +890,7 @@ void ToggleMatchCallArrows(struct PokenavSub17Substruct *list, bool32 shouldHide
void SpriteCB_MatchCallRightArrow(struct Sprite *sprite)
{
struct PokenavSub17 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
- sprite->pos2.y = structPtr->unk888.selectedIndexOffset << 4;
+ sprite->y2 = structPtr->unk888.selectedIndexOffset << 4;
}
void SpriteCB_MatchCallDownArrow(struct Sprite *sprite)
@@ -907,7 +907,7 @@ void SpriteCB_MatchCallDownArrow(struct Sprite *sprite)
sprite->data[0] = 0;
offset = (sprite->data[1] + 1) & 7;
sprite->data[1] = offset;
- sprite->pos2.y = offset;
+ sprite->y2 = offset;
}
}
@@ -925,7 +925,7 @@ void SpriteCB_MatchCallUpArrow(struct Sprite *sprite)
sprite->data[0] = 0;
offset = (sprite->data[1] + 1) & 7;
sprite->data[1] = offset;
- sprite->pos2.y = -1 * offset;
+ sprite->y2 = -1 * offset;
}
}
diff --git a/src/pokenav_menu_handler_2.c b/src/pokenav_menu_handler_2.c
index eea8131a9..ff219b71e 100644
--- a/src/pokenav_menu_handler_2.c
+++ b/src/pokenav_menu_handler_2.c
@@ -781,7 +781,7 @@ static void CreateMenuOptionSprites(void)
{
u8 spriteId = CreateSprite(&sMenuOptionSpriteTemplate, 0x8c, 20 * i + 40, 3);
unk->iconSprites[i][j] = &gSprites[spriteId];
- gSprites[spriteId].pos2.x = 32 * j;
+ gSprites[spriteId].x2 = 32 * j;
}
}
}
@@ -822,9 +822,9 @@ static void DrawOptionLabelGfx(const u16 *const *tiles, s32 yPos, s32 deltaY)
unk->iconSprites[i][j]->oam.tileNum = (*tiles)[0] + sp04 + 8 * j;
unk->iconSprites[i][j]->oam.paletteNum = IndexOfSpritePaletteTag((*tiles)[1] + 4);
unk->iconSprites[i][j]->invisible = TRUE;
- unk->iconSprites[i][j]->pos1.y = yPos;
- unk->iconSprites[i][j]->pos1.x = 0x8c;
- unk->iconSprites[i][j]->pos2.x = 32 * j;
+ unk->iconSprites[i][j]->y = yPos;
+ unk->iconSprites[i][j]->x = 0x8c;
+ unk->iconSprites[i][j]->x2 = 32 * j;
}
unk->iconVisible[i] = TRUE;
}
@@ -935,7 +935,7 @@ static void SetMenuOptionGfxParamsInactive(struct Sprite ** sprites, s32 x, s32
for (i = 0; i < 4; i++)
{
- (*sprites)->pos1.x = x;
+ (*sprites)->x = x;
(*sprites)->data[0] = a3;
(*sprites)->data[1] = 16 * (a2 - x) / a3;
(*sprites)->data[2] = 16 * x;
@@ -987,11 +987,11 @@ static void sub_81CA474(struct Sprite * sprite)
if (sprite->data[0] != -1)
{
sprite->data[2] += sprite->data[1];
- sprite->pos1.x = sprite->data[2] >> 4;
+ sprite->x = sprite->data[2] >> 4;
}
else
{
- sprite->pos1.x = sprite->data[7];
+ sprite->x = sprite->data[7];
sprite->callback = SpriteCallbackDummy;
}
}
@@ -1007,8 +1007,8 @@ static void sub_81CA4AC(struct Sprite * sprite)
StartSpriteAffineAnim(sprite, 1);
sprite->data[1]++;
sprite->data[2] = 0x100;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->x2 = 0;
}
else
{
@@ -1019,16 +1019,16 @@ static void sub_81CA4AC(struct Sprite * sprite)
switch (sprite->data[7])
{
case 0:
- sprite->pos2.x = -r1 * 3;
+ sprite->x2 = -r1 * 3;
break;
case 1:
- sprite->pos2.x = -r1;
+ sprite->x2 = -r1;
break;
case 2:
- sprite->pos2.x = r1;
+ sprite->x2 = r1;
break;
case 3:
- sprite->pos2.x = r1 * 3;
+ sprite->x2 = r1 * 3;
break;
}
if (sprite->affineAnimEnded)
@@ -1221,9 +1221,9 @@ static void SetupPokenavMenuScanlineEffects(void)
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_OBJ | BLDCNT_EFFECT_LIGHTEN);
SetGpuReg(REG_OFFSET_BLDY, 0);
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- SetGpuRegBits(REG_OFFSET_WININ, 0x3F);
- SetGpuRegBits(REG_OFFSET_WINOUT, 0x1F);
- SetGpuRegBits(REG_OFFSET_WIN0V, 0xA0);
+ SetGpuRegBits(REG_OFFSET_WININ, WININ_WIN0_ALL);
+ SetGpuRegBits(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ);
+ SetGpuRegBits(REG_OFFSET_WIN0V, DISPLAY_HEIGHT);
ScanlineEffect_Stop();
SetMenuOptionGlow();
ScanlineEffect_SetParams(sPokenavMainMenuScanlineEffectParams);
diff --git a/src/pokenav_region_map.c b/src/pokenav_region_map.c
index 2dd2e4408..3c210ed97 100755
--- a/src/pokenav_region_map.c
+++ b/src/pokenav_region_map.c
@@ -327,7 +327,9 @@ static u32 LoopedTask_OpenRegionMap(s32 taskState)
}
else
{
- sub_8123030(RGB_BLACK, 6);
+ // Dim the region map when zoom is disabled
+ // (when the player is off the map)
+ BlendRegionMap(RGB_BLACK, 6);
}
return LT_INC_AND_PAUSE;
case 2:
@@ -725,7 +727,7 @@ static void UpdateCityZoomTextPosition(void)
struct Pokenav5Struct_2 *state = GetSubstructPtr(POKENAV_SUBSTRUCT_REGION_MAP_ZOOM);
int y = 132 - (GetBgY(1) >> 8);
for (i = 0; i < (int)ARRAY_COUNT(state->cityZoomTextSprites); i++)
- state->cityZoomTextSprites[i]->pos1.y = y;
+ state->cityZoomTextSprites[i]->y = y;
}
static void SetCityZoomTextInvisibility(bool32 invisible)
diff --git a/src/pokenav_ribbons_1.c b/src/pokenav_ribbons_1.c
index f80f95998..69326ad23 100644
--- a/src/pokenav_ribbons_1.c
+++ b/src/pokenav_ribbons_1.c
@@ -119,8 +119,8 @@ static const struct WindowTemplate sRibbonsMonListWindowTemplate =
.baseBlock = 20
};
-static const u8 sText_MaleSymbol[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHITE}{GREEN}♂{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
-static const u8 sText_FemaleSymbol[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
+static const u8 sText_MaleSymbol[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHITE}{GREEN}♂{COLOR_HIGHLIGHT_SHADOW}{DARK_GRAY}{WHITE}{LIGHT_GRAY}");
+static const u8 sText_FemaleSymbol[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GRAY}{WHITE}{LIGHT_GRAY}");
static const u8 sText_NoGenderSymbol[] = _("{UNK_SPACER}");
bool32 PokenavCallback_Init_MonRibbonList(void)
diff --git a/src/pokenav_ribbons_2.c b/src/pokenav_ribbons_2.c
index cbcd29776..a7644fdaa 100644
--- a/src/pokenav_ribbons_2.c
+++ b/src/pokenav_ribbons_2.c
@@ -802,7 +802,7 @@ static void AddRibbonCountWindow(struct PokenavSub14 *structPtr)
static void PrintCurrentMonRibbonCount(struct PokenavSub14 *structPtr)
{
- u8 color[] = {TEXT_COLOR_RED, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY};
+ u8 color[] = {TEXT_COLOR_RED, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY};
ConvertIntToDecimalStringN(gStringVar1, GetCurrMonRibbonCount(), STR_CONV_MODE_LEFT_ALIGN, 2);
DynamicPlaceholderTextUtil_Reset();
@@ -817,7 +817,7 @@ static void PrintRibbonNameAndDescription(struct PokenavSub14 *structPtr)
{
s32 i;
u32 ribbonId = GetRibbonId();
- u8 color[] = {TEXT_COLOR_RED, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY};
+ u8 color[] = {TEXT_COLOR_RED, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY};
FillWindowPixelBuffer(structPtr->ribbonCountWindowId, PIXEL_FILL(4));
if (ribbonId < FIRST_GIFT_RIBBON)
@@ -864,8 +864,8 @@ static void AddRibbonSummaryMonNameWindow(struct PokenavSub14 *structPtr)
PrintRibbbonsSummaryMonInfo(structPtr);
}
-static const u8 sMaleIconString[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHITE}{GREEN}♂{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
-static const u8 sFemaleIconString[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
+static const u8 sMaleIconString[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHITE}{GREEN}♂{COLOR_HIGHLIGHT_SHADOW}{DARK_GRAY}{WHITE}{LIGHT_GRAY}");
+static const u8 sFemaleIconString[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GRAY}{WHITE}{LIGHT_GRAY}");
static const u8 sGenderlessIconString[] = _("{UNK_SPACER}");
static void PrintRibbbonsSummaryMonInfo(struct PokenavSub14 *structPtr)
@@ -997,7 +997,7 @@ static void StartMonSpriteSlide(struct Sprite *sprite, s32 startX, s32 destX, s3
{
u32 delta = destX - startX;
- sprite->pos1.x = startX;
+ sprite->x = startX;
sprite->sCurrX = startX << 4;
sprite->sMoveIncr = (delta << 4) / time;
sprite->sTime = time;
@@ -1012,15 +1012,15 @@ static void SpriteCB_MonSpriteSlide(struct Sprite *sprite)
{
sprite->sTime--;
sprite->sCurrX += sprite->sMoveIncr;
- sprite->pos1.x = sprite->sCurrX >> 4;
- if (sprite->pos1.x <= MON_SPRITE_X_OFF)
+ sprite->x = sprite->sCurrX >> 4;
+ if (sprite->x <= MON_SPRITE_X_OFF)
sprite->invisible = TRUE;
else
sprite->invisible = FALSE;
}
else
{
- sprite->pos1.x = sprite->sDestX;
+ sprite->x = sprite->sDestX;
sprite->callback = SpriteCallbackDummy;
}
}
@@ -1232,8 +1232,8 @@ static void UpdateAndZoomInSelectedRibbon(struct PokenavSub14 *structPtr)
s32 x = (position % RIBBONS_PER_ROW) * 16 + 96;
s32 y = (position / RIBBONS_PER_ROW) * 16 + 40;
- structPtr->bigRibbonSprite->pos1.x = x;
- structPtr->bigRibbonSprite->pos1.y = y;
+ structPtr->bigRibbonSprite->x = x;
+ structPtr->bigRibbonSprite->y = y;
// Set new selected ribbon's gfx data
ribbonId = GetRibbonId();
diff --git a/src/post_battle_event_funcs.c b/src/post_battle_event_funcs.c
index 78ebe02e4..081a40218 100644
--- a/src/post_battle_event_funcs.c
+++ b/src/post_battle_event_funcs.c
@@ -8,7 +8,6 @@
#include "script_pokemon_util.h"
#include "tv.h"
#include "constants/heal_locations.h"
-#include "constants/tv.h"
int GameClear(void)
{
diff --git a/src/rayquaza_scene.c b/src/rayquaza_scene.c
index 101916f13..f2c5a319c 100644
--- a/src/rayquaza_scene.c
+++ b/src/rayquaza_scene.c
@@ -1433,34 +1433,34 @@ static void SpriteCB_DuoFightPre_Groudon(struct Sprite *sprite)
s16 *data = sprite->data;
data[5]++;
data[5] &= 0x1F;
- if (data[5] == 0 && sprite->pos1.x != 72)
+ if (data[5] == 0 && sprite->x != 72)
{
- sprite->pos1.x--;
- gSprites[sprite->sGroudonBodySpriteId].pos1.x--;
- gSprites[sGroudonShoulderSpriteId].pos1.x--;
- gSprites[sGroudonClawSpriteId].pos1.x--;
+ sprite->x--;
+ gSprites[sprite->sGroudonBodySpriteId].x--;
+ gSprites[sGroudonShoulderSpriteId].x--;
+ gSprites[sGroudonClawSpriteId].x--;
}
switch (sprite->animCmdIndex)
{
case 0:
- gSprites[sGroudonShoulderSpriteId].pos2.x = 0;
- gSprites[sGroudonShoulderSpriteId].pos2.y = 0;
- gSprites[sGroudonClawSpriteId].pos2.x = 0;
- gSprites[sGroudonClawSpriteId].pos2.y = 0;
+ gSprites[sGroudonShoulderSpriteId].x2 = 0;
+ gSprites[sGroudonShoulderSpriteId].y2 = 0;
+ gSprites[sGroudonClawSpriteId].x2 = 0;
+ gSprites[sGroudonClawSpriteId].y2 = 0;
break;
case 1:
case 3:
- gSprites[sGroudonShoulderSpriteId].pos2.x = -1;
- gSprites[sGroudonShoulderSpriteId].pos2.y = 0;
- gSprites[sGroudonClawSpriteId].pos2.x = -1;
- gSprites[sGroudonClawSpriteId].pos2.y = 0;
+ gSprites[sGroudonShoulderSpriteId].x2 = -1;
+ gSprites[sGroudonShoulderSpriteId].y2 = 0;
+ gSprites[sGroudonClawSpriteId].x2 = -1;
+ gSprites[sGroudonClawSpriteId].y2 = 0;
break;
case 2:
- gSprites[sGroudonShoulderSpriteId].pos2.x = -1;
- gSprites[sGroudonShoulderSpriteId].pos2.y = 1;
- gSprites[sGroudonClawSpriteId].pos2.x = -2;
- gSprites[sGroudonClawSpriteId].pos2.y = 1;
+ gSprites[sGroudonShoulderSpriteId].x2 = -1;
+ gSprites[sGroudonShoulderSpriteId].y2 = 1;
+ gSprites[sGroudonClawSpriteId].x2 = -2;
+ gSprites[sGroudonClawSpriteId].y2 = 1;
break;
}
}
@@ -1502,58 +1502,58 @@ static void SpriteCB_DuoFightPre_Kyogre(struct Sprite *sprite)
s16 *data = sprite->data;
data[5]++;
data[5] &= 0x1F;
- if (data[5] == 0 && sprite->pos1.x != 152)
+ if (data[5] == 0 && sprite->x != 152)
{
- sprite->pos1.x++;
- gSprites[sprite->data[0] >> 8].pos1.x++;
- gSprites[sprite->data[0] & 0xFF].pos1.x++;
- gSprites[data[1] >> 8].pos1.x++;
- gSprites[data[1] & 0xFF].pos1.x++;
- gSprites[data[2] >> 8].pos1.x++;
- gSprites[data[2] & 0xFF].pos1.x++;
- gSprites[data[3] >> 8].pos1.x++;
- gSprites[data[3] & 0xFF].pos1.x++;
- gSprites[data[4] >> 8].pos1.x++;
- gSprites[data[4] & 0xFF].pos1.x++;
+ sprite->x++;
+ gSprites[sprite->data[0] >> 8].x++;
+ gSprites[sprite->data[0] & 0xFF].x++;
+ gSprites[data[1] >> 8].x++;
+ gSprites[data[1] & 0xFF].x++;
+ gSprites[data[2] >> 8].x++;
+ gSprites[data[2] & 0xFF].x++;
+ gSprites[data[3] >> 8].x++;
+ gSprites[data[3] & 0xFF].x++;
+ gSprites[data[4] >> 8].x++;
+ gSprites[data[4] & 0xFF].x++;
}
switch (gSprites[data[2] & 0xFF].animCmdIndex)
{
case 0:
- sprite->pos2.y = 0;
- gSprites[data[0] >> 8].pos2.y = 0;
- gSprites[data[0] & 0xFF].pos2.y = 0;
- gSprites[data[1] >> 8].pos2.y = 0;
- gSprites[data[1] & 0xFF].pos2.y = 0;
- gSprites[data[2] >> 8].pos2.y = 0;
- gSprites[data[2] & 0xFF].pos2.y = 0;
- gSprites[data[3] >> 8].pos2.y = 0;
- gSprites[data[3] & 0xFF].pos2.y = 0;
- gSprites[data[4] >> 8].pos2.y = 0;
- gSprites[data[4] & 0xFF].pos2.y = 0;
+ sprite->y2 = 0;
+ gSprites[data[0] >> 8].y2 = 0;
+ gSprites[data[0] & 0xFF].y2 = 0;
+ gSprites[data[1] >> 8].y2 = 0;
+ gSprites[data[1] & 0xFF].y2 = 0;
+ gSprites[data[2] >> 8].y2 = 0;
+ gSprites[data[2] & 0xFF].y2 = 0;
+ gSprites[data[3] >> 8].y2 = 0;
+ gSprites[data[3] & 0xFF].y2 = 0;
+ gSprites[data[4] >> 8].y2 = 0;
+ gSprites[data[4] & 0xFF].y2 = 0;
break;
case 1:
case 3:
- sprite->pos2.y = 1;
- gSprites[data[0] >> 8].pos2.y = 1;
- gSprites[data[0] & 0xFF].pos2.y = 1;
- gSprites[data[1] >> 8].pos2.y = 1;
- gSprites[data[1] & 0xFF].pos2.y = 1;
- gSprites[data[2] >> 8].pos2.y = 1;
- gSprites[data[2] & 0xFF].pos2.y = 1;
- gSprites[data[3] >> 8].pos2.y = 1;
- gSprites[data[3] & 0xFF].pos2.y = 1;
- gSprites[data[4] >> 8].pos2.y = 1;
- gSprites[data[4] & 0xFF].pos2.y = 1;
+ sprite->y2 = 1;
+ gSprites[data[0] >> 8].y2 = 1;
+ gSprites[data[0] & 0xFF].y2 = 1;
+ gSprites[data[1] >> 8].y2 = 1;
+ gSprites[data[1] & 0xFF].y2 = 1;
+ gSprites[data[2] >> 8].y2 = 1;
+ gSprites[data[2] & 0xFF].y2 = 1;
+ gSprites[data[3] >> 8].y2 = 1;
+ gSprites[data[3] & 0xFF].y2 = 1;
+ gSprites[data[4] >> 8].y2 = 1;
+ gSprites[data[4] & 0xFF].y2 = 1;
break;
case 2:
- sprite->pos2.y = 2;
- gSprites[data[0] >> 8].pos2.y = 2;
- gSprites[data[0] & 0xFF].pos2.y = 2;
- gSprites[data[1] >> 8].pos2.y = 2;
- gSprites[data[1] & 0xFF].pos2.y = 2;
- gSprites[data[2] >> 8].pos2.y = 2;
- gSprites[data[4] & 0xFF].pos2.y = 2;
+ sprite->y2 = 2;
+ gSprites[data[0] >> 8].y2 = 2;
+ gSprites[data[0] & 0xFF].y2 = 2;
+ gSprites[data[1] >> 8].y2 = 2;
+ gSprites[data[1] & 0xFF].y2 = 2;
+ gSprites[data[2] >> 8].y2 = 2;
+ gSprites[data[4] & 0xFF].y2 = 2;
break;
}
}
@@ -1825,34 +1825,34 @@ static void SpriteCB_DuoFight_Groudon(struct Sprite *sprite)
s16 *data = sprite->data;
data[5]++;
data[5] &= 0xF;
- if (!(data[5] & 7) && sprite->pos1.x != 72)
+ if (!(data[5] & 7) && sprite->x != 72)
{
- sprite->pos1.x--;
- gSprites[sprite->sGroudonBodySpriteId].pos1.x--;
- gSprites[sGroudonShoulderSpriteId].pos1.x--;
- gSprites[sGroudonClawSpriteId].pos1.x--;
+ sprite->x--;
+ gSprites[sprite->sGroudonBodySpriteId].x--;
+ gSprites[sGroudonShoulderSpriteId].x--;
+ gSprites[sGroudonClawSpriteId].x--;
}
switch (sprite->animCmdIndex)
{
case 0:
- gSprites[sGroudonShoulderSpriteId].pos2.x = 0;
- gSprites[sGroudonShoulderSpriteId].pos2.y = 0;
- gSprites[sGroudonClawSpriteId].pos2.x = 0;
- gSprites[sGroudonClawSpriteId].pos2.y = 0;
+ gSprites[sGroudonShoulderSpriteId].x2 = 0;
+ gSprites[sGroudonShoulderSpriteId].y2 = 0;
+ gSprites[sGroudonClawSpriteId].x2 = 0;
+ gSprites[sGroudonClawSpriteId].y2 = 0;
break;
case 1:
case 3:
- gSprites[sGroudonShoulderSpriteId].pos2.x = -1;
- gSprites[sGroudonShoulderSpriteId].pos2.y = 0;
- gSprites[sGroudonClawSpriteId].pos2.x = -1;
- gSprites[sGroudonClawSpriteId].pos2.y = 0;
+ gSprites[sGroudonShoulderSpriteId].x2 = -1;
+ gSprites[sGroudonShoulderSpriteId].y2 = 0;
+ gSprites[sGroudonClawSpriteId].x2 = -1;
+ gSprites[sGroudonClawSpriteId].y2 = 0;
break;
case 2:
- gSprites[sGroudonShoulderSpriteId].pos2.x = -1;
- gSprites[sGroudonShoulderSpriteId].pos2.y = 1;
- gSprites[sGroudonClawSpriteId].pos2.x = -2;
- gSprites[sGroudonClawSpriteId].pos2.y = 1;
+ gSprites[sGroudonShoulderSpriteId].x2 = -1;
+ gSprites[sGroudonShoulderSpriteId].y2 = 1;
+ gSprites[sGroudonClawSpriteId].x2 = -2;
+ gSprites[sGroudonClawSpriteId].y2 = 1;
break;
}
}
@@ -1860,12 +1860,12 @@ static void SpriteCB_DuoFight_Groudon(struct Sprite *sprite)
static void DuoFight_SlideGroudonDown(struct Sprite *sprite)
{
s16 *data = sprite->data;
- if (sprite->pos1.y <= 160)
+ if (sprite->y <= DISPLAY_HEIGHT)
{
- sprite->pos1.y += 8;
- gSprites[sprite->sGroudonBodySpriteId].pos1.y += 8;
- gSprites[sGroudonShoulderSpriteId].pos1.y += 8;
- gSprites[sGroudonClawSpriteId].pos1.y += 8;
+ sprite->y += 8;
+ gSprites[sprite->sGroudonBodySpriteId].y += 8;
+ gSprites[sGroudonShoulderSpriteId].y += 8;
+ gSprites[sGroudonClawSpriteId].y += 8;
}
}
@@ -1906,58 +1906,58 @@ static void SpriteCB_DuoFight_Kyogre(struct Sprite *sprite)
s16 *data = sprite->data;
data[5]++;
data[5] &= 0xF;
- if (!(data[5] & 7) && sprite->pos1.x != 152)
+ if (!(data[5] & 7) && sprite->x != 152)
{
- sprite->pos1.x++;
- gSprites[sprite->data[0] >> 8].pos1.x++;
- gSprites[sprite->data[0] & 0xFF].pos1.x++;
- gSprites[data[1] >> 8].pos1.x++;
- gSprites[data[1] & 0xFF].pos1.x++;
- gSprites[data[2] >> 8].pos1.x++;
- gSprites[data[2] & 0xFF].pos1.x++;
- gSprites[data[3] >> 8].pos1.x++;
- gSprites[data[3] & 0xFF].pos1.x++;
- gSprites[data[4] >> 8].pos1.x++;
- gSprites[data[4] & 0xFF].pos1.x++;
+ sprite->x++;
+ gSprites[sprite->data[0] >> 8].x++;
+ gSprites[sprite->data[0] & 0xFF].x++;
+ gSprites[data[1] >> 8].x++;
+ gSprites[data[1] & 0xFF].x++;
+ gSprites[data[2] >> 8].x++;
+ gSprites[data[2] & 0xFF].x++;
+ gSprites[data[3] >> 8].x++;
+ gSprites[data[3] & 0xFF].x++;
+ gSprites[data[4] >> 8].x++;
+ gSprites[data[4] & 0xFF].x++;
}
switch (gSprites[data[2] & 0xFF].animCmdIndex)
{
case 0:
- sprite->pos2.y = 0;
- gSprites[data[0] >> 8].pos2.y = 0;
- gSprites[data[0] & 0xFF].pos2.y = 0;
- gSprites[data[1] >> 8].pos2.y = 0;
- gSprites[data[1] & 0xFF].pos2.y = 0;
- gSprites[data[2] >> 8].pos2.y = 0;
- gSprites[data[2] & 0xFF].pos2.y = 0;
- gSprites[data[3] >> 8].pos2.y = 0;
- gSprites[data[3] & 0xFF].pos2.y = 0;
- gSprites[data[4] >> 8].pos2.y = 0;
- gSprites[data[4] & 0xFF].pos2.y = 0;
+ sprite->y2 = 0;
+ gSprites[data[0] >> 8].y2 = 0;
+ gSprites[data[0] & 0xFF].y2 = 0;
+ gSprites[data[1] >> 8].y2 = 0;
+ gSprites[data[1] & 0xFF].y2 = 0;
+ gSprites[data[2] >> 8].y2 = 0;
+ gSprites[data[2] & 0xFF].y2 = 0;
+ gSprites[data[3] >> 8].y2 = 0;
+ gSprites[data[3] & 0xFF].y2 = 0;
+ gSprites[data[4] >> 8].y2 = 0;
+ gSprites[data[4] & 0xFF].y2 = 0;
break;
case 1:
case 3:
- sprite->pos2.y = 1;
- gSprites[data[0] >> 8].pos2.y = 1;
- gSprites[data[0] & 0xFF].pos2.y = 1;
- gSprites[data[1] >> 8].pos2.y = 1;
- gSprites[data[1] & 0xFF].pos2.y = 1;
- gSprites[data[2] >> 8].pos2.y = 1;
- gSprites[data[2] & 0xFF].pos2.y = 1;
- gSprites[data[3] >> 8].pos2.y = 1;
- gSprites[data[3] & 0xFF].pos2.y = 1;
- gSprites[data[4] >> 8].pos2.y = 1;
- gSprites[data[4] & 0xFF].pos2.y = 1;
+ sprite->y2 = 1;
+ gSprites[data[0] >> 8].y2 = 1;
+ gSprites[data[0] & 0xFF].y2 = 1;
+ gSprites[data[1] >> 8].y2 = 1;
+ gSprites[data[1] & 0xFF].y2 = 1;
+ gSprites[data[2] >> 8].y2 = 1;
+ gSprites[data[2] & 0xFF].y2 = 1;
+ gSprites[data[3] >> 8].y2 = 1;
+ gSprites[data[3] & 0xFF].y2 = 1;
+ gSprites[data[4] >> 8].y2 = 1;
+ gSprites[data[4] & 0xFF].y2 = 1;
break;
case 2:
- sprite->pos2.y = 2;
- gSprites[data[0] >> 8].pos2.y = 2;
- gSprites[data[0] & 0xFF].pos2.y = 2;
- gSprites[data[1] >> 8].pos2.y = 2;
- gSprites[data[1] & 0xFF].pos2.y = 2;
- gSprites[data[2] >> 8].pos2.y = 2;
- gSprites[data[4] & 0xFF].pos2.y = 2;
+ sprite->y2 = 2;
+ gSprites[data[0] >> 8].y2 = 2;
+ gSprites[data[0] & 0xFF].y2 = 2;
+ gSprites[data[1] >> 8].y2 = 2;
+ gSprites[data[1] & 0xFF].y2 = 2;
+ gSprites[data[2] >> 8].y2 = 2;
+ gSprites[data[4] & 0xFF].y2 = 2;
break;
}
}
@@ -1965,19 +1965,19 @@ static void SpriteCB_DuoFight_Kyogre(struct Sprite *sprite)
static void DuoFight_SlideKyogreDown(struct Sprite *sprite)
{
s16 *data = sprite->data;
- if (sprite->pos1.y <= 160)
+ if (sprite->y <= DISPLAY_HEIGHT)
{
- sprite->pos1.y += 8;
- gSprites[sprite->data[0] >> 8].pos1.y += 8;
- gSprites[sprite->data[0] & 0xFF].pos1.y += 8;
- gSprites[data[1] >> 8].pos1.y += 8;
- gSprites[data[1] & 0xFF].pos1.y += 8;
- gSprites[data[2] >> 8].pos1.y += 8;
- gSprites[data[2] & 0xFF].pos1.y += 8;
- gSprites[data[3] >> 8].pos1.y += 8;
- gSprites[data[3] & 0xFF].pos1.y += 8;
- gSprites[data[4] >> 8].pos1.y += 8;
- gSprites[data[4] & 0xFF].pos1.y += 8;
+ sprite->y += 8;
+ gSprites[sprite->data[0] >> 8].y += 8;
+ gSprites[sprite->data[0] & 0xFF].y += 8;
+ gSprites[data[1] >> 8].y += 8;
+ gSprites[data[1] & 0xFF].y += 8;
+ gSprites[data[2] >> 8].y += 8;
+ gSprites[data[2] & 0xFF].y += 8;
+ gSprites[data[3] >> 8].y += 8;
+ gSprites[data[3] & 0xFF].y += 8;
+ gSprites[data[4] >> 8].y += 8;
+ gSprites[data[4] & 0xFF].y += 8;
}
}
@@ -2184,13 +2184,13 @@ static void SpriteCB_TakesFlight_Smoke(struct Sprite *sprite)
{
if (sprite->sTimer == 0)
{
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
}
else
{
- sprite->pos2.x += sTakesFlight_SmokeCoords[sprite->sSmokeId][0];
- sprite->pos2.y += sTakesFlight_SmokeCoords[sprite->sSmokeId][1];
+ sprite->x2 += sTakesFlight_SmokeCoords[sprite->sSmokeId][0];
+ sprite->y2 += sTakesFlight_SmokeCoords[sprite->sSmokeId][1];
}
sprite->sTimer++;
@@ -2433,13 +2433,13 @@ static void SpriteCB_Descends_Rayquaza(struct Sprite *sprite)
if (sTimer % sXMovePeriod == 0)
{
- sprite->pos2.x--;
- gSprites[sTailSpriteId].pos2.x--;
+ sprite->x2--;
+ gSprites[sTailSpriteId].x2--;
}
if (sTimer % sYMovePeriod == 0)
{
- sprite->pos2.y++;
- gSprites[sTailSpriteId].pos2.y++;
+ sprite->y2++;
+ gSprites[sTailSpriteId].y2++;
}
sTimer++;
@@ -2902,14 +2902,14 @@ static void SpriteCB_ChasesAway_DuoRingPush(struct Sprite *sprite)
{
if (!sprite->sIsKyogre)
{
- sprite->pos1.x -= sprite->sSpeed;
- gSprites[sprite->sBodyPartSpriteId1].pos1.x -= sprite->sSpeed;
+ sprite->x -= sprite->sSpeed;
+ gSprites[sprite->sBodyPartSpriteId1].x -= sprite->sSpeed;
}
else
{
- sprite->pos1.x += sprite->sSpeed;
- gSprites[sprite->sBodyPartSpriteId1].pos1.x += sprite->sSpeed;
- gSprites[sprite->sBodyPartSpriteId2].pos1.x += sprite->sSpeed;
+ sprite->x += sprite->sSpeed;
+ gSprites[sprite->sBodyPartSpriteId1].x += sprite->sSpeed;
+ gSprites[sprite->sBodyPartSpriteId2].x += sprite->sSpeed;
}
sprite->sDecel++;
@@ -2949,18 +2949,18 @@ static void SpriteCB_ChasesAway_GroudonLeave(struct Sprite *sprite)
case 2:
if (sprite->animDelayCounter % 12 == 0)
{
- sprite->pos1.x -= 2;
- gSprites[sprite->data[0]].pos1.x -=2;
+ sprite->x -= 2;
+ gSprites[sprite->data[0]].x -=2;
}
- gSprites[sprite->data[0]].pos2.y = 0;
+ gSprites[sprite->data[0]].y2 = 0;
break;
case 1:
case 3:
- gSprites[sprite->data[0]].pos2.y = -2;
+ gSprites[sprite->data[0]].y2 = -2;
if ((sprite->animDelayCounter & 15) == 0)
{
- sprite->pos1.y++;
- gSprites[sprite->data[0]].pos1.y++;
+ sprite->y++;
+ gSprites[sprite->data[0]].y++;
}
break;
}
@@ -2982,10 +2982,10 @@ static void SpriteCB_ChasesAway_KyogreLeave(struct Sprite *sprite)
{
if ((sprite->data[4] & 3) == 0)
{
- if (sprite->pos2.x == 1)
- sprite->pos2.x = -1;
+ if (sprite->x2 == 1)
+ sprite->x2 = -1;
else
- sprite->pos2.x = 1;
+ sprite->x2 = 1;
}
if (sprite->data[5] == 128)
{
@@ -2998,10 +2998,10 @@ static void SpriteCB_ChasesAway_KyogreLeave(struct Sprite *sprite)
}
if (sprite->data[5] > 127)
{
- if (sprite->pos2.y != 32)
+ if (sprite->y2 != 32)
{
sprite->data[6]++;
- sprite->pos2.y = sprite->data[6] >> 4;
+ sprite->y2 = sprite->data[6] >> 4;
}
}
else
@@ -3029,8 +3029,8 @@ static void SpriteCB_ChasesAway_Rayquaza(struct Sprite *sprite)
s16 frame = sprite->sTimer;
if (frame <= 64)
{
- sprite->pos2.y += 2;
- gSprites[sprite->sTailSpriteId].pos2.y += 2;
+ sprite->y2 += 2;
+ gSprites[sprite->sTailSpriteId].y2 += 2;
if (sprite->sTimer == 64)
{
ChasesAway_SetRayquazaAnim(sprite, 1, 0, -48);
@@ -3062,8 +3062,8 @@ static void SpriteCB_ChasesAway_Rayquaza(struct Sprite *sprite)
{
SpriteCB_ChasesAway_RayquazaFloat(sprite);
ChasesAway_SetRayquazaAnim(sprite, 3, 48, 16);
- sprite->pos2.x = 1;
- gSprites[sprite->sTailSpriteId].pos2.x = 1;
+ sprite->x2 = 1;
+ gSprites[sprite->sTailSpriteId].x2 = 1;
PlayCry1(SPECIES_RAYQUAZA, 0);
CreateTask(Task_ChasesAway_AnimateRing, 0);
}
@@ -3072,8 +3072,8 @@ static void SpriteCB_ChasesAway_Rayquaza(struct Sprite *sprite)
switch (frame)
{
case 376:
- sprite->pos2.x = 0;
- gSprites[sprite->sTailSpriteId].pos2.x = 0;
+ sprite->x2 = 0;
+ gSprites[sprite->sTailSpriteId].x2 = 0;
SpriteCB_ChasesAway_RayquazaFloat(sprite);
ChasesAway_SetRayquazaAnim(sprite, 2, 48, 16);
sprite->callback = SpriteCB_ChasesAway_RayquazaFloat;
@@ -3086,8 +3086,8 @@ static void SpriteCB_ChasesAway_Rayquaza(struct Sprite *sprite)
if (sprite->sTimer > 328 && (sprite->sTimer & 1) == 0)
{
- sprite->pos2.x *= -1;
- gSprites[sprite->sTailSpriteId].pos2.x = sprite->pos2.x;
+ sprite->x2 *= -1;
+ gSprites[sprite->sTailSpriteId].x2 = sprite->x2;
}
sprite->sTimer++;
@@ -3098,8 +3098,8 @@ static void SpriteCB_ChasesAway_RayquazaFloat(struct Sprite *body)
struct Sprite *tail = &gSprites[body->sTailSpriteId];
if (!(body->sFloatTimer & tail->sTailFloatDelay))
{
- body->pos2.y += body->sYOffset;
- gSprites[body->sTailSpriteId].pos2.y += body->sYOffset; // why access gSprites again? tail->pos2.y would be sufficient
+ body->y2 += body->sYOffset;
+ gSprites[body->sTailSpriteId].y2 += body->sYOffset; // why access gSprites again? tail->y2 would be sufficient
body->sYOffset += body->sYOffsetDir;
if (body->sYOffset >= tail->sTailFloatPeak || body->sYOffset <= -tail->sTailFloatPeak)
{
@@ -3119,11 +3119,11 @@ static void ChasesAway_SetRayquazaAnim(struct Sprite *body, u8 animNum, s16 x, s
{
struct Sprite *tail = &gSprites[body->sTailSpriteId];
- tail->pos1.x = body->pos1.x + x;
- tail->pos1.y = body->pos1.y + y;
+ tail->x = body->x + x;
+ tail->y = body->y + y;
- tail->pos2.x = body->pos2.x;
- tail->pos2.y = body->pos2.y;
+ tail->x2 = body->x2;
+ tail->y2 = body->y2;
StartSpriteAnim(body, animNum);
StartSpriteAnim(tail, animNum);
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 2028cc647..aa6e4eef2 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -50,8 +50,8 @@ struct PlayerRecordsRS
TVShow tvShows[TV_SHOWS_COUNT];
PokeNews pokeNews[POKE_NEWS_COUNT];
OldMan oldMan;
- struct EasyChatPair easyChatPairs[5];
- struct RecordMixingDayCareMail dayCareMail;
+ struct DewfordTrend dewfordTrends[SAVED_TRENDS_COUNT];
+ struct RecordMixingDaycareMail daycareMail;
struct RSBattleTowerRecord battleTowerRecord;
u16 giftItem;
u16 filler11C8[0x32];
@@ -63,8 +63,8 @@ struct PlayerRecordsEmerald
/* 0x0c80 */ TVShow tvShows[TV_SHOWS_COUNT];
/* 0x1004 */ PokeNews pokeNews[POKE_NEWS_COUNT];
/* 0x1044 */ OldMan oldMan;
- /* 0x1084 */ struct EasyChatPair easyChatPairs[5];
- /* 0x10ac */ struct RecordMixingDayCareMail dayCareMail;
+ /* 0x1084 */ struct DewfordTrend dewfordTrends[SAVED_TRENDS_COUNT];
+ /* 0x10ac */ struct RecordMixingDaycareMail daycareMail;
/* 0x1124 */ struct EmeraldBattleTowerRecord battleTowerRecord;
/* 0x1210 */ u16 giftItem;
/* 0x1214 */ LilycoveLady lilycoveLady;
@@ -86,8 +86,8 @@ static struct SecretBase *sSecretBasesSave;
static TVShow *sTvShowsSave;
static PokeNews *sPokeNewsSave;
static OldMan *sOldManSave;
-static struct EasyChatPair *sEasyChatPairsSave;
-static struct RecordMixingDayCareMail *gUnknown_03001148;
+static struct DewfordTrend *sDewfordTrendsSave;
+static struct RecordMixingDaycareMail *sDaycareMailSave;
static void *sBattleTowerSave;
static LilycoveLady *sLilycoveLadySave;
static void *sApprenticesSave;
@@ -96,7 +96,7 @@ static u32 sRecordStructSize;
static u8 gUnknown_03001160;
static struct PlayerHallRecords *gUnknown_03001168[3];
-static EWRAM_DATA struct RecordMixingDayCareMail gUnknown_02039F9C = {0};
+static EWRAM_DATA struct RecordMixingDaycareMail sDaycareMail = {0};
static EWRAM_DATA union PlayerRecords *sReceivedRecords = NULL;
static EWRAM_DATA union PlayerRecords *sSentRecord = NULL;
@@ -115,14 +115,14 @@ static void ReceiveOldManData(OldMan *, size_t, u8);
static void ReceiveBattleTowerData(void *battleTowerRecord, size_t, u8);
static void ReceiveLilycoveLadyData(LilycoveLady *, size_t, u8);
static void sub_80E7B2C(const u8 *);
-static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *, size_t, u8, TVShow *);
+static void ReceiveDaycareMailData(struct RecordMixingDaycareMail *, size_t, u8, TVShow *);
static void ReceiveGiftItem(u16 *item, u8 which);
static void Task_DoRecordMixing(u8 taskId);
static void GetSavedApprentices(struct Apprentice *dst, struct Apprentice *src);
static void ReceiveApprenticeData(struct Apprentice *mixApprentice, size_t recordSize, u32 multiplayerId);
static void ReceiveRankingHallRecords(struct PlayerHallRecords *hallRecords, size_t arg1, u32 arg2);
-static void sub_80E89F8(struct RecordMixingDayCareMail *dst);
-static void SanitizeDayCareMailForRuby(struct RecordMixingDayCareMail *src);
+static void GetRecordMixingDaycareMail(struct RecordMixingDaycareMail *dst);
+static void SanitizeDaycareMailForRuby(struct RecordMixingDaycareMail *src);
static void SanitizeEmeraldBattleTowerRecord(struct EmeraldBattleTowerRecord *arg0);
static void SanitizeRubyBattleTowerRecord(struct RSBattleTowerRecord *src);
@@ -179,8 +179,8 @@ static void SetSrcLookupPointers(void)
sTvShowsSave = gSaveBlock1Ptr->tvShows;
sPokeNewsSave = gSaveBlock1Ptr->pokeNews;
sOldManSave = &gSaveBlock1Ptr->oldMan;
- sEasyChatPairsSave = gSaveBlock1Ptr->easyChatPairs;
- gUnknown_03001148 = &gUnknown_02039F9C;
+ sDewfordTrendsSave = gSaveBlock1Ptr->dewfordTrends;
+ sDaycareMailSave = &sDaycareMail;
sBattleTowerSave = &gSaveBlock2Ptr->frontier.towerPlayer;
sLilycoveLadySave = &gSaveBlock1Ptr->lilycoveLady;
sApprenticesSave = gSaveBlock2Ptr->apprentices;
@@ -191,11 +191,11 @@ static void PrepareUnknownExchangePacket(struct PlayerRecordsRS *dest)
{
memcpy(dest->secretBases, sSecretBasesSave, sizeof(dest->secretBases));
memcpy(dest->tvShows, sTvShowsSave, sizeof(dest->tvShows));
- sub_80F14F8(dest->tvShows);
+ SanitizeTVShowLocationsForRuby(dest->tvShows);
memcpy(dest->pokeNews, sPokeNewsSave, sizeof(dest->pokeNews));
memcpy(&dest->oldMan, sOldManSave, sizeof(dest->oldMan));
- memcpy(dest->easyChatPairs, sEasyChatPairsSave, sizeof(dest->easyChatPairs));
- sub_80E89F8(&dest->dayCareMail);
+ memcpy(dest->dewfordTrends, sDewfordTrendsSave, sizeof(dest->dewfordTrends));
+ GetRecordMixingDaycareMail(&dest->daycareMail);
EmeraldBattleTowerRecordToRuby(sBattleTowerSave, &dest->battleTowerRecord);
if (GetMultiplayerId() == 0)
@@ -207,13 +207,13 @@ static void PrepareExchangePacketForRubySapphire(struct PlayerRecordsRS *dest)
memcpy(dest->secretBases, sSecretBasesSave, sizeof(dest->secretBases));
ClearJapaneseSecretBases(dest->secretBases);
memcpy(dest->tvShows, sTvShowsSave, sizeof(dest->tvShows));
- sub_80F1208(dest->tvShows);
+ SanitizeTVShowsForRuby(dest->tvShows);
memcpy(dest->pokeNews, sPokeNewsSave, sizeof(dest->pokeNews));
memcpy(&dest->oldMan, sOldManSave, sizeof(dest->oldMan));
- sub_8120B70(&dest->oldMan);
- memcpy(dest->easyChatPairs, sEasyChatPairsSave, sizeof(dest->easyChatPairs));
- sub_80E89F8(&dest->dayCareMail);
- SanitizeDayCareMailForRuby(&dest->dayCareMail);
+ SanitizeMauvilleOldManForRuby(&dest->oldMan);
+ memcpy(dest->dewfordTrends, sDewfordTrendsSave, sizeof(dest->dewfordTrends));
+ GetRecordMixingDaycareMail(&dest->daycareMail);
+ SanitizeDaycareMailForRuby(&dest->daycareMail);
EmeraldBattleTowerRecordToRuby(sBattleTowerSave, &dest->battleTowerRecord);
SanitizeRubyBattleTowerRecord(&dest->battleTowerRecord);
@@ -224,7 +224,7 @@ static void PrepareExchangePacketForRubySapphire(struct PlayerRecordsRS *dest)
static void PrepareExchangePacket(void)
{
SetPlayerSecretBaseParty();
- sub_80F0BB8();
+ DeactivateAllNormalTVShows();
SetSrcLookupPointers();
if (Link_AnyPartnersPlayingRubyOrSapphire())
@@ -241,8 +241,8 @@ static void PrepareExchangePacket(void)
memcpy(sSentRecord->emerald.pokeNews, sPokeNewsSave, sizeof(sSentRecord->emerald.pokeNews));
memcpy(&sSentRecord->emerald.oldMan, sOldManSave, sizeof(sSentRecord->emerald.oldMan));
memcpy(&sSentRecord->emerald.lilycoveLady, sLilycoveLadySave, sizeof(sSentRecord->emerald.lilycoveLady));
- memcpy(sSentRecord->emerald.easyChatPairs, sEasyChatPairsSave, sizeof(sSentRecord->emerald.easyChatPairs));
- sub_80E89F8(&sSentRecord->emerald.dayCareMail);
+ memcpy(sSentRecord->emerald.dewfordTrends, sDewfordTrendsSave, sizeof(sSentRecord->emerald.dewfordTrends));
+ GetRecordMixingDaycareMail(&sSentRecord->emerald.daycareMail);
memcpy(&sSentRecord->emerald.battleTowerRecord, sBattleTowerSave, sizeof(sSentRecord->emerald.battleTowerRecord));
SanitizeEmeraldBattleTowerRecord(&sSentRecord->emerald.battleTowerRecord);
@@ -261,12 +261,12 @@ static void ReceiveExchangePacket(u32 which)
// Ruby/Sapphire
sub_80E7B2C((void *)sReceivedRecords->ruby.tvShows);
ReceiveSecretBasesData(sReceivedRecords->ruby.secretBases, sizeof(struct PlayerRecordsRS), which);
- ReceiveDaycareMailData(&sReceivedRecords->ruby.dayCareMail, sizeof(struct PlayerRecordsRS), which, sReceivedRecords->ruby.tvShows);
+ ReceiveDaycareMailData(&sReceivedRecords->ruby.daycareMail, sizeof(struct PlayerRecordsRS), which, sReceivedRecords->ruby.tvShows);
ReceiveBattleTowerData(&sReceivedRecords->ruby.battleTowerRecord, sizeof(struct PlayerRecordsRS), which);
ReceiveTvShowsData(sReceivedRecords->ruby.tvShows, sizeof(struct PlayerRecordsRS), which);
ReceivePokeNewsData(sReceivedRecords->ruby.pokeNews, sizeof(struct PlayerRecordsRS), which);
ReceiveOldManData(&sReceivedRecords->ruby.oldMan, sizeof(struct PlayerRecordsRS), which);
- ReceiveEasyChatPairsData(sReceivedRecords->ruby.easyChatPairs, sizeof(struct PlayerRecordsRS), which);
+ ReceiveDewfordTrendData(sReceivedRecords->ruby.dewfordTrends, sizeof(struct PlayerRecordsRS), which);
ReceiveGiftItem(&sReceivedRecords->ruby.giftItem, which);
}
else
@@ -277,8 +277,8 @@ static void ReceiveExchangePacket(u32 which)
ReceiveTvShowsData(sReceivedRecords->emerald.tvShows, sizeof(struct PlayerRecordsEmerald), which);
ReceivePokeNewsData(sReceivedRecords->emerald.pokeNews, sizeof(struct PlayerRecordsEmerald), which);
ReceiveOldManData(&sReceivedRecords->emerald.oldMan, sizeof(struct PlayerRecordsEmerald), which);
- ReceiveEasyChatPairsData(sReceivedRecords->emerald.easyChatPairs, sizeof(struct PlayerRecordsEmerald), which);
- ReceiveDaycareMailData(&sReceivedRecords->emerald.dayCareMail, sizeof(struct PlayerRecordsEmerald), which, sReceivedRecords->emerald.tvShows);
+ ReceiveDewfordTrendData(sReceivedRecords->emerald.dewfordTrends, sizeof(struct PlayerRecordsEmerald), which);
+ ReceiveDaycareMailData(&sReceivedRecords->emerald.daycareMail, sizeof(struct PlayerRecordsEmerald), which, sReceivedRecords->emerald.tvShows);
ReceiveBattleTowerData(&sReceivedRecords->emerald.battleTowerRecord, sizeof(struct PlayerRecordsEmerald), which);
ReceiveGiftItem(&sReceivedRecords->emerald.giftItem, which);
ReceiveLilycoveLadyData(&sReceivedRecords->emerald.lilycoveLady, sizeof(struct PlayerRecordsEmerald), which);
@@ -319,7 +319,7 @@ static void Task_RecordMixing_Main(u8 taskId)
{
case 0: // init
sSentRecord = malloc(sizeof(union PlayerRecords));
- sReceivedRecords = malloc(sizeof(union PlayerRecords) * 4);
+ sReceivedRecords = malloc(sizeof(union PlayerRecords) * MAX_LINK_PLAYERS);
SetLocalLinkPlayerId(gSpecialVar_0x8005);
VarSet(VAR_TEMP_0, 1);
gUnknown_03001130 = FALSE;
@@ -363,7 +363,7 @@ static void Task_RecordMixing_Main(u8 taskId)
{
free(sReceivedRecords);
free(sSentRecord);
- sub_808729C();
+ SetLinkWaitingForScript();
if (gWirelessCommType != 0)
{
CreateTask(Task_ReturnToFieldRecordMixing, 10);
@@ -665,7 +665,7 @@ static void ReceiveBattleTowerData(void *battleTowerRecord, size_t recordSize, u
{
memcpy((void *)battleTowerRecord + recordSize * which, (void *)battleTowerRecord + recordSize * mixIndices[which], sizeof(struct EmeraldBattleTowerRecord));
dest = (void *)battleTowerRecord + recordSize * which;
- for (i = 0; i < 4; i ++)
+ for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++)
{
btPokemon = &dest->party[i];
if (btPokemon->species != SPECIES_NONE && IsStringJapanese(btPokemon->nickname))
@@ -706,22 +706,22 @@ static void ReceiveLilycoveLadyData(LilycoveLady *lilycoveLady, size_t recordSiz
}
}
-static u8 sub_80E7A9C(struct DayCareMail *rmMail)
+static u8 sub_80E7A9C(struct DaycareMail *rmMail)
{
return rmMail->message.itemId;
}
-static void sub_80E7AA4(struct RecordMixingDayCareMail *src, size_t recordSize, u8 (*idxs)[2], u8 which0, u8 which1)
+static void sub_80E7AA4(struct RecordMixingDaycareMail *src, size_t recordSize, u8 (*idxs)[2], u8 which0, u8 which1)
{
- struct DayCareMail buffer;
- struct RecordMixingDayCareMail *mail1;
- struct RecordMixingDayCareMail *mail2;
+ struct DaycareMail buffer;
+ struct RecordMixingDaycareMail *mail1;
+ struct RecordMixingDaycareMail *mail2;
mail1 = (void *)src + recordSize * idxs[which0][0];
- memcpy(&buffer, &mail1->mail[idxs[which0][1]], sizeof(struct DayCareMail));
+ memcpy(&buffer, &mail1->mail[idxs[which0][1]], sizeof(struct DaycareMail));
mail2 = (void *)src + recordSize * idxs[which1][0];
- memcpy(&mail1->mail[idxs[which0][1]], &mail2->mail[idxs[which1][1]], sizeof(struct DayCareMail));
- memcpy(&mail2->mail[idxs[which1][1]], &buffer, sizeof(struct DayCareMail));
+ memcpy(&mail1->mail[idxs[which0][1]], &mail2->mail[idxs[which1][1]], sizeof(struct DaycareMail));
+ memcpy(&mail2->mail[idxs[which1][1]], &buffer, sizeof(struct DaycareMail));
}
static void sub_80E7B2C(const u8 *src)
@@ -730,7 +730,7 @@ static void sub_80E7B2C(const u8 *src)
s32 i;
sum = 0;
- for (i = 0; i < 256; i ++)
+ for (i = 0; i < 256; i++)
sum += src[i];
gUnknown_03001160 = sum;
@@ -741,17 +741,17 @@ static u8 sub_80E7B54(void)
return gUnknown_03001160;
}
-static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t recordSize, u8 which, TVShow *shows)
+static void ReceiveDaycareMailData(struct RecordMixingDaycareMail *src, size_t recordSize, u8 which, TVShow *shows)
{
u16 i, j;
u8 linkPlayerCount;
u8 tableId;
- struct RecordMixingDayCareMail *_src;
+ struct RecordMixingDaycareMail *_src;
u8 which0, which1;
void *ptr;
u8 sp04[4];
u8 sp08[4];
- struct RecordMixingDayCareMail *sp0c[4];
+ struct RecordMixingDaycareMail *sp0c[4];
u8 sp1c[4][2];
u8 sp24[4][2];
u8 sp34;
@@ -777,10 +777,10 @@ static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t r
_src = (void *)src + i * recordSize;
language = gLinkPlayers[i].language;
version = gLinkPlayers[i].version & 0xFF;
- for (j = 0; j < _src->numDaycareMons; j ++)
+ for (j = 0; j < _src->numDaycareMons; j++)
{
u16 otNameLanguage, nicknameLanguage;
- struct DayCareMail *recordMixingMail = &_src->mail[j];
+ struct DaycareMail *recordMixingMail = &_src->mail[j];
if (!recordMixingMail->message.itemId)
continue;
@@ -835,7 +835,7 @@ static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t r
if (_src->numDaycareMons == 0)
continue;
- for (j = 0; j < _src->numDaycareMons; j ++)
+ for (j = 0; j < _src->numDaycareMons; j++)
{
if (!_src->holdsItem[j])
sp1c[i][j] = 1;
@@ -913,8 +913,8 @@ static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t r
}
_src = (void *)src + which * recordSize;
- memcpy(&gSaveBlock1Ptr->daycare.mons[0].mail, &_src->mail[0], sizeof(struct DayCareMail));
- memcpy(&gSaveBlock1Ptr->daycare.mons[1].mail, &_src->mail[1], sizeof(struct DayCareMail));
+ memcpy(&gSaveBlock1Ptr->daycare.mons[0].mail, &_src->mail[0], sizeof(struct DaycareMail));
+ memcpy(&gSaveBlock1Ptr->daycare.mons[1].mail, &_src->mail[1], sizeof(struct DaycareMail));
SeedRng(oldSeed);
}
@@ -957,7 +957,7 @@ static void Task_DoRecordMixing(u8 taskId)
case 2:
SetContinueGameWarpStatusToDynamicWarp();
FullSaveGame();
- task->data[0] ++;
+ task->data[0]++;
break;
case 3:
if (CheckSaveFile())
@@ -971,7 +971,7 @@ static void Task_DoRecordMixing(u8 taskId)
if (++task->data[1] > 10)
{
SetCloseLinkCallback();
- task->data[0] ++;
+ task->data[0]++;
}
break;
case 5:
@@ -984,7 +984,7 @@ static void Task_DoRecordMixing(u8 taskId)
if (!sub_801048C(FALSE))
{
CreateTask(Task_LinkSave, 5);
- task->data[0] ++;
+ task->data[0]++;
}
break;
case 7: // wait for Task_LinkSave to finish.
@@ -1003,7 +1003,7 @@ static void Task_DoRecordMixing(u8 taskId)
break;
case 8:
SetLinkStandbyCallback();
- task->data[0] ++;
+ task->data[0]++;
break;
case 9:
if (IsLinkTaskFinished())
@@ -1061,13 +1061,9 @@ static void GetSavedApprentices(struct Apprentice *dst, struct Apprentice *src)
break;
case 2:
if (Random2() > 0x3333)
- {
dst[1] = src[gSaveBlock2Ptr->playerApprentice.saveId + 1];
- }
else
- {
dst[1] = src[((gSaveBlock2Ptr->playerApprentice.saveId + 1) % (APPRENTICE_COUNT - 1) + 1)];
- }
break;
}
}
@@ -1221,7 +1217,7 @@ static void sub_80E8578(struct RecordMixingHallRecords *dst, void *hallRecords,
for (l = 0; l < 3; l++)
{
if (GetTrainerId(dst->hallRecords2P[j][l].id1) == GetTrainerId(gUnknown_03001168[k]->twoPlayers[j].id1)
- && GetTrainerId(dst->hallRecords2P[j][l].id2) == GetTrainerId(gUnknown_03001168[k]->twoPlayers[j].id2))
+ && GetTrainerId(dst->hallRecords2P[j][l].id2) == GetTrainerId(gUnknown_03001168[k]->twoPlayers[j].id2))
{
var_68++;
if (dst->hallRecords2P[j][l].winStreak < gUnknown_03001168[k]->twoPlayers[j].winStreak)
@@ -1308,21 +1304,21 @@ static void ReceiveRankingHallRecords(struct PlayerHallRecords *hallRecords, siz
Free(largeStructPtr);
}
-static void sub_80E89F8(struct RecordMixingDayCareMail *dst)
+static void GetRecordMixingDaycareMail(struct RecordMixingDaycareMail *dst)
{
- gUnknown_02039F9C.mail[0] = gSaveBlock1Ptr->daycare.mons[0].mail;
- gUnknown_02039F9C.mail[1] = gSaveBlock1Ptr->daycare.mons[1].mail;
- InitDaycareMailRecordMixing(&gSaveBlock1Ptr->daycare, &gUnknown_02039F9C);
- *dst = *gUnknown_03001148;
+ sDaycareMail.mail[0] = gSaveBlock1Ptr->daycare.mons[0].mail;
+ sDaycareMail.mail[1] = gSaveBlock1Ptr->daycare.mons[1].mail;
+ InitDaycareMailRecordMixing(&gSaveBlock1Ptr->daycare, &sDaycareMail);
+ *dst = *sDaycareMailSave;
}
-static void SanitizeDayCareMailForRuby(struct RecordMixingDayCareMail *src)
+static void SanitizeDaycareMailForRuby(struct RecordMixingDaycareMail *src)
{
s32 i;
for (i = 0; i < src->numDaycareMons; i++)
{
- struct DayCareMail *mail = &src->mail[i];
+ struct DaycareMail *mail = &src->mail[i];
if (mail->message.itemId != 0)
{
if (mail->gameLanguage != LANGUAGE_JAPANESE)
@@ -1342,10 +1338,10 @@ static void SanitizeEmeraldBattleTowerRecord(struct EmeraldBattleTowerRecord *ds
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++)
{
struct BattleTowerPokemon *towerMon = &dst->party[i];
- if (towerMon->species != 0)
+ if (towerMon->species != SPECIES_NONE)
StripExtCtrlCodes(towerMon->nickname);
}
diff --git a/src/region_map.c b/src/region_map.c
index bec51ebf0..1a25d140c 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -71,7 +71,7 @@ static EWRAM_DATA struct {
bool8 choseFlyLocation;
} *sFlyMap = NULL;
-static bool32 gUnknown_03001180;
+static bool32 sDrawFlyDestTextWindow;
// Static ROM declarations
@@ -621,7 +621,7 @@ bool8 LoadRegionMapGfx(void)
return TRUE;
}
-void sub_8123030(u16 color, u32 coeff)
+void BlendRegionMap(u16 color, u32 coeff)
{
BlendPalettes(0x380, coeff, color);
CpuCopy16(gPlttBufferFaded + 0x70, gPlttBufferUnfaded + 0x70, 0x60);
@@ -952,8 +952,8 @@ void PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs(s16 x, s16 y)
UpdateRegionMapVideoRegs();
if (gRegionMap->playerIconSprite != NULL)
{
- gRegionMap->playerIconSprite->pos2.x = -x;
- gRegionMap->playerIconSprite->pos2.y = -y;
+ gRegionMap->playerIconSprite->x2 = -x;
+ gRegionMap->playerIconSprite->y2 = -y;
}
}
@@ -1007,7 +1007,7 @@ static void InitMapBasedOnPlayerLocation(void)
break;
case MAP_TYPE_UNDERGROUND:
case MAP_TYPE_UNKNOWN:
- if (gMapHeader.flags & MAP_ALLOW_ESCAPING)
+ if (gMapHeader.allowEscaping)
{
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum);
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
@@ -1364,8 +1364,8 @@ static void SpriteCB_CursorMapFull(struct Sprite *sprite)
{
if (gRegionMap->cursorMovementFrameCounter != 0)
{
- sprite->pos1.x += 2 * gRegionMap->cursorDeltaX;
- sprite->pos1.y += 2 * gRegionMap->cursorDeltaY;
+ sprite->x += 2 * gRegionMap->cursorDeltaX;
+ sprite->y += 2 * gRegionMap->cursorDeltaY;
gRegionMap->cursorMovementFrameCounter--;
}
}
@@ -1411,15 +1411,15 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag)
if (gRegionMap->zoomed == TRUE)
{
gRegionMap->cursorSprite->oam.size = SPRITE_SIZE(32x32);
- gRegionMap->cursorSprite->pos1.x -= 8;
- gRegionMap->cursorSprite->pos1.y -= 8;
+ gRegionMap->cursorSprite->x -= 8;
+ gRegionMap->cursorSprite->y -= 8;
StartSpriteAnim(gRegionMap->cursorSprite, 1);
}
else
{
gRegionMap->cursorSprite->oam.size = SPRITE_SIZE(16x16);
- gRegionMap->cursorSprite->pos1.x = 8 * gRegionMap->cursorPosX + 4;
- gRegionMap->cursorSprite->pos1.y = 8 * gRegionMap->cursorPosY + 4;
+ gRegionMap->cursorSprite->x = 8 * gRegionMap->cursorPosX + 4;
+ gRegionMap->cursorSprite->y = 8 * gRegionMap->cursorPosY + 4;
}
gRegionMap->cursorSprite->data[1] = 2;
gRegionMap->cursorSprite->data[2] = (IndexOfSpritePaletteTag(paletteTag) << 4) + 0x101;
@@ -1472,14 +1472,14 @@ void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag)
gRegionMap->playerIconSprite = &gSprites[spriteId];
if (!gRegionMap->zoomed)
{
- gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 8 + 4;
- gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 8 + 4;
+ gRegionMap->playerIconSprite->x = gRegionMap->playerIconSpritePosX * 8 + 4;
+ gRegionMap->playerIconSprite->y = gRegionMap->playerIconSpritePosY * 8 + 4;
gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapFull;
}
else
{
- gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 16 - 0x30;
- gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 16 - 0x42;
+ gRegionMap->playerIconSprite->x = gRegionMap->playerIconSpritePosX * 16 - 0x30;
+ gRegionMap->playerIconSprite->y = gRegionMap->playerIconSpritePosY * 16 - 0x42;
gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapZoomed;
}
}
@@ -1499,17 +1499,17 @@ static void UnhideRegionMapPlayerIcon(void)
{
if (gRegionMap->zoomed == TRUE)
{
- gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 16 - 0x30;
- gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 16 - 0x42;
+ gRegionMap->playerIconSprite->x = gRegionMap->playerIconSpritePosX * 16 - 0x30;
+ gRegionMap->playerIconSprite->y = gRegionMap->playerIconSpritePosY * 16 - 0x42;
gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapZoomed;
gRegionMap->playerIconSprite->invisible = FALSE;
}
else
{
- gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 8 + 4;
- gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 8 + 4;
- gRegionMap->playerIconSprite->pos2.x = 0;
- gRegionMap->playerIconSprite->pos2.y = 0;
+ gRegionMap->playerIconSprite->x = gRegionMap->playerIconSpritePosX * 8 + 4;
+ gRegionMap->playerIconSprite->y = gRegionMap->playerIconSpritePosY * 8 + 4;
+ gRegionMap->playerIconSprite->x2 = 0;
+ gRegionMap->playerIconSprite->y2 = 0;
gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapFull;
gRegionMap->playerIconSprite->invisible = FALSE;
}
@@ -1518,10 +1518,10 @@ static void UnhideRegionMapPlayerIcon(void)
static void SpriteCB_PlayerIconMapZoomed(struct Sprite *sprite)
{
- sprite->pos2.x = -2 * gRegionMap->scrollX;
- sprite->pos2.y = -2 * gRegionMap->scrollY;
- sprite->data[0] = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
- sprite->data[1] = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
+ sprite->x2 = -2 * gRegionMap->scrollX;
+ sprite->y2 = -2 * gRegionMap->scrollY;
+ sprite->data[0] = sprite->y + sprite->y2 + sprite->centerToCornerVecY;
+ sprite->data[1] = sprite->x + sprite->x2 + sprite->centerToCornerVecX;
if (sprite->data[0] < -8 || sprite->data[0] > 0xa8 || sprite->data[1] < -8 || sprite->data[1] > 0xf8)
{
sprite->data[2] = FALSE;
@@ -1696,7 +1696,7 @@ void CB2_OpenFlyMap(void)
CreateRegionMapPlayerIcon(1, 1);
sFlyMap->mapSecId = sFlyMap->regionMap.mapSecId;
StringFill(sFlyMap->nameBuffer, CHAR_SPACE, MAP_NAME_LENGTH);
- gUnknown_03001180 = TRUE;
+ sDrawFlyDestTextWindow = TRUE;
DrawFlyDestTextWindow();
gMain.state++;
break;
@@ -1782,30 +1782,32 @@ static void DrawFlyDestTextWindow(void)
name = sMultiNameFlyDestinations[i].name[sFlyMap->regionMap.posWithinMapSec];
AddTextPrinterParameterized(1, 1, name, GetStringRightAlignXOffset(1, name, 96), 17, 0, NULL);
ScheduleBgCopyTilemapToVram(0);
- gUnknown_03001180 = TRUE;
+ sDrawFlyDestTextWindow = TRUE;
}
break;
}
}
if (!namePrinted)
{
- if (gUnknown_03001180 == TRUE)
+ if (sDrawFlyDestTextWindow == TRUE)
{
ClearStdWindowAndFrameToTransparent(1, FALSE);
DrawStdFrameWithCustomTileAndPalette(0, FALSE, 101, 13);
}
else
{
+ // Window is already drawn, just empty it
FillWindowPixelBuffer(0, PIXEL_FILL(1));
}
AddTextPrinterParameterized(0, 1, sFlyMap->regionMap.mapSecName, 0, 1, 0, NULL);
ScheduleBgCopyTilemapToVram(0);
- gUnknown_03001180 = FALSE;
+ sDrawFlyDestTextWindow = FALSE;
}
}
else
{
- if (gUnknown_03001180 == TRUE)
+ // Selection is on MAPSECTYPE_NONE, draw empty fly destination text window
+ if (sDrawFlyDestTextWindow == TRUE)
{
ClearStdWindowAndFrameToTransparent(1, FALSE);
DrawStdFrameWithCustomTileAndPalette(0, FALSE, 101, 13);
@@ -1813,7 +1815,7 @@ static void DrawFlyDestTextWindow(void)
FillWindowPixelBuffer(0, PIXEL_FILL(1));
CopyWindowToVram(0, 2);
ScheduleBgCopyTilemapToVram(0);
- gUnknown_03001180 = FALSE;
+ sDrawFlyDestTextWindow = FALSE;
}
}
diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c
index cc4da7e16..528a0e52d 100644
--- a/src/reset_rtc_screen.c
+++ b/src/reset_rtc_screen.c
@@ -243,36 +243,36 @@ static void SpriteCB_Cursor_UpOrRight(struct Sprite *sprite)
sprite->invisible = FALSE;
sprite->animNum = ARROW_UP;
sprite->animDelayCounter = 0;
- sprite->pos1.x = 53;
- sprite->pos1.y = 68;
+ sprite->x = 53;
+ sprite->y = 68;
break;
case SELECTION_HOURS:
sprite->invisible = FALSE;
sprite->animNum = ARROW_UP;
sprite->animDelayCounter = 0;
- sprite->pos1.x = 86;
- sprite->pos1.y = 68;
+ sprite->x = 86;
+ sprite->y = 68;
break;
case SELECTION_MINS:
sprite->invisible = FALSE;
sprite->animNum = ARROW_UP;
sprite->animDelayCounter = 0;
- sprite->pos1.x = 101;
- sprite->pos1.y = 68;
+ sprite->x = 101;
+ sprite->y = 68;
break;
case SELECTION_SECS:
sprite->invisible = FALSE;
sprite->animNum = ARROW_UP;
sprite->animDelayCounter = 0;
- sprite->pos1.x = 116;
- sprite->pos1.y = 68;
+ sprite->x = 116;
+ sprite->y = 68;
break;
case SELECTION_CONFIRM:
sprite->invisible = FALSE;
sprite->animNum = ARROW_RIGHT;
sprite->animDelayCounter = 0;
- sprite->pos1.x = 153;
- sprite->pos1.y = 80;
+ sprite->x = 153;
+ sprite->y = 80;
break;
case SELECTION_NONE:
DestroySprite(sprite);
@@ -293,29 +293,29 @@ static void SpriteCB_Cursor_Down(struct Sprite *sprite)
sprite->invisible = FALSE;
sprite->animNum = ARROW_DOWN;
sprite->animDelayCounter = 0;
- sprite->pos1.x = 53;
- sprite->pos1.y = 92;
+ sprite->x = 53;
+ sprite->y = 92;
break;
case SELECTION_HOURS:
sprite->invisible = FALSE;
sprite->animNum = ARROW_DOWN;
sprite->animDelayCounter = 0;
- sprite->pos1.x = 86;
- sprite->pos1.y = 92;
+ sprite->x = 86;
+ sprite->y = 92;
break;
case SELECTION_MINS:
sprite->invisible = FALSE;
sprite->animNum = ARROW_DOWN;
sprite->animDelayCounter = 0;
- sprite->pos1.x = 101;
- sprite->pos1.y = 92;
+ sprite->x = 101;
+ sprite->y = 92;
break;
case SELECTION_SECS:
sprite->invisible = FALSE;
sprite->animNum = ARROW_DOWN;
sprite->animDelayCounter = 0;
- sprite->pos1.x = 116;
- sprite->pos1.y = 92;
+ sprite->x = 116;
+ sprite->y = 92;
break;
case SELECTION_CONFIRM:
// The up arrow is used as a right arrow when Confirm is selected
diff --git a/src/rotating_gate.c b/src/rotating_gate.c
index 162eb3e6d..a185d9a14 100644
--- a/src/rotating_gate.c
+++ b/src/rotating_gate.c
@@ -670,7 +670,8 @@ static void RotatingGate_RotateInDirection(u8 gateId, u32 rotationDirection)
}
else
{
- orientation = ++orientation % GATE_ORIENTATION_MAX;
+ orientation++;
+ orientation = orientation % GATE_ORIENTATION_MAX;
}
RotatingGate_SetGateOrientation(gateId, orientation);
}
@@ -754,7 +755,7 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY)
sprite->data[0] = gateId;
sprite->coordOffsetEnabled = 1;
- sub_8092FF0(x + deltaX, y + deltaY, &sprite->pos1.x, &sprite->pos1.y);
+ GetMapCoordsFromSpritePos(x + deltaX, y + deltaY, &sprite->x, &sprite->y);
RotatingGate_HideGatesOutsideViewport(sprite);
StartSpriteAffineAnim(sprite, RotatingGate_GetGateOrientation(gateId));
@@ -799,8 +800,8 @@ static void RotatingGate_HideGatesOutsideViewport(struct Sprite *sprite)
s16 x2, y2;
sprite->invisible = FALSE;
- x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
- y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
+ x = sprite->x + sprite->x2 + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
+ y = sprite->y + sprite->y2 + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
x2 = x + 0x40; // Dimensions of the rotating gate
y2 = y + 0x40;
diff --git a/src/roulette.c b/src/roulette.c
index f0b484fe8..14ae16556 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -275,7 +275,7 @@ struct RouletteTable
struct Taillow taillow;
u16 ballSpeed;
u16 baseTravelDist;
- float var1C;
+ f32 var1C;
};
struct GridSelection
@@ -340,13 +340,13 @@ static EWRAM_DATA struct Roulette
s16 ballTravelDistFast;
u16 ballTravelDistMed;
u16 ballTravelDistSlow;
- float ballAngle;
- float ballAngleSpeed;
- float ballAngleAccel;
- float ballDistToCenter;
- float ballFallSpeed;
- float ballFallAccel;
- float varA0;
+ f32 ballAngle;
+ f32 ballAngleSpeed;
+ f32 ballAngleAccel;
+ f32 ballDistToCenter;
+ f32 ballFallSpeed;
+ f32 ballFallAccel;
+ f32 varA0;
u8 playTaskId;
u8 spinTaskId;
u8 filler_1[2];
@@ -1968,7 +1968,7 @@ static void ExitRoulette(u8 taskId)
gSpecialVar_0x8004 = TRUE;
else
gSpecialVar_0x8004 = FALSE;
- AlertTVOfNewCoinTotal(GetCoins());
+ TryPutFindThatGamerOnAir(GetCoins());
BeginHardwarePaletteFade(0xFF, 0, 0, 16, 0);
gTasks[taskId].func = Task_ExitRoulette;
}
@@ -2896,7 +2896,9 @@ static const union AnimCmd sAnim_CreditDigit[] =
ANIMCMD_FRAME(18, 0), // 9
// BUG: Animation not terminated properly
// Doesn't matter in practice, the frames are set directly and not looped
- //ANIMCMD_END
+#ifdef BUGFIX
+ ANIMCMD_END
+#endif
};
static const union AnimCmd *const sAnims_CreditDigit[] =
@@ -3630,8 +3632,8 @@ static void ShowHideGridBalls(bool8 hideAll, u8 hideBallId)
else
{
gSprites[sRoulette->spriteIds[i + SPR_GRID_BALLS]].invisible = FALSE;
- gSprites[sRoulette->spriteIds[i + SPR_GRID_BALLS]].pos1.x = (sGridSelections[sRoulette->hitSquares[i]].x + 1) * 8 + 4;
- gSprites[sRoulette->spriteIds[i + SPR_GRID_BALLS]].pos1.y = (sGridSelections[sRoulette->hitSquares[i]].y + 1) * 8 + 3;
+ gSprites[sRoulette->spriteIds[i + SPR_GRID_BALLS]].x = (sGridSelections[sRoulette->hitSquares[i]].x + 1) * 8 + 4;
+ gSprites[sRoulette->spriteIds[i + SPR_GRID_BALLS]].y = (sGridSelections[sRoulette->hitSquares[i]].y + 1) * 8 + 3;
}
}
}
@@ -3646,8 +3648,8 @@ static void ShowHideWinSlotCursor(u8 selectionId)
else
{
gSprites[sRoulette->spriteIds[SPR_WIN_SLOT_CURSOR]].invisible = FALSE;
- gSprites[sRoulette->spriteIds[SPR_WIN_SLOT_CURSOR]].pos1.x = (sGridSelections[selectionId].x + 2) * 8;
- gSprites[sRoulette->spriteIds[SPR_WIN_SLOT_CURSOR]].pos1.y = (sGridSelections[selectionId].y + 2) * 8;
+ gSprites[sRoulette->spriteIds[SPR_WIN_SLOT_CURSOR]].x = (sGridSelections[selectionId].x + 2) * 8;
+ gSprites[sRoulette->spriteIds[SPR_WIN_SLOT_CURSOR]].y = (sGridSelections[selectionId].y + 2) * 8;
}
}
@@ -3686,8 +3688,8 @@ static void SpriteCB_WheelIcon(struct Sprite *sprite)
angle -= 360;
sin = Sin2(angle);
cos = Cos2(angle);
- sprite->pos2.x = sin * sprite->data[1] >> 12;
- sprite->pos2.y = -cos * sprite->data[1] >> 12;
+ sprite->x2 = sin * sprite->data[1] >> 12;
+ sprite->y2 = -cos * sprite->data[1] >> 12;
matrixNum = sprite->oam.matrixNum;
sin /= 16;
gOamMatrices[matrixNum].d = cos /= 16;
@@ -3843,7 +3845,7 @@ static void SetBallCounterNumLeft(u8 numBalls)
static void SpriteCB_GridSquare(struct Sprite *sprite)
{
- sprite->pos2.x = sRoulette->gridX;
+ sprite->x2 = sRoulette->gridX;
}
static void CreateWheelCenterSprite(void)
@@ -3948,7 +3950,7 @@ static s16 UpdateBallRelativeWheelAngle(struct Sprite *sprite)
static u8 UpdateSlotBelowBall(struct Sprite *sprite)
{
- sRoulette->hitSlot = UpdateBallRelativeWheelAngle(sprite) / (float) DEGREES_PER_SLOT;
+ sRoulette->hitSlot = UpdateBallRelativeWheelAngle(sprite) / (f32)DEGREES_PER_SLOT;
return sRoulette->hitSlot;
}
@@ -3993,12 +3995,12 @@ static void UpdateBallPos(struct Sprite *sprite)
sprite->sBallDistToCenter = sRoulette->ballDistToCenter;
sin = Sin2(sprite->sBallAngle);
cos = Cos2(sprite->sBallAngle);
- sprite->pos2.x = sin * sprite->sBallDistToCenter >> 12;
- sprite->pos2.y = -cos * sprite->sBallDistToCenter >> 12;
+ sprite->x2 = sin * sprite->sBallDistToCenter >> 12;
+ sprite->y2 = -cos * sprite->sBallDistToCenter >> 12;
if (IsSEPlaying())
{
- m4aMPlayPanpotControl(&gMPlayInfo_SE1, 0xFFFF, sprite->pos2.x);
- m4aMPlayPanpotControl(&gMPlayInfo_SE2, 0xFFFF, sprite->pos2.x);
+ m4aMPlayPanpotControl(&gMPlayInfo_SE1, 0xFFFF, sprite->x2);
+ m4aMPlayPanpotControl(&gMPlayInfo_SE2, 0xFFFF, sprite->x2);
}
}
@@ -4011,9 +4013,9 @@ static void SpriteCB_BallLandInSlot(struct Sprite *sprite)
sprite->sBallAngle -= 360;
sin = Sin2(sprite->sBallAngle);
cos = Cos2(sprite->sBallAngle);
- sprite->pos2.x = sin * sprite->sBallDistToCenter >> 12;
- sprite->pos2.y = -cos * sprite->sBallDistToCenter >> 12;
- sprite->pos2.y += gSpriteCoordOffsetY;
+ sprite->x2 = sin * sprite->sBallDistToCenter >> 12;
+ sprite->y2 = -cos * sprite->sBallDistToCenter >> 12;
+ sprite->y2 += gSpriteCoordOffsetY;
}
static void SpriteCB_UnstickBall_ShroomishBallFall(struct Sprite *sprite)
@@ -4050,7 +4052,7 @@ static void SpriteCB_UnstickBall_ShroomishBallFall(struct Sprite *sprite)
static void SpriteCB_UnstickBall_Shroomish(struct Sprite *sprite)
{
- float slotOffset, ballFallDist, ballFallSpeed;
+ f32 slotOffset, ballFallDist, ballFallSpeed;
UpdateBallPos(sprite);
switch (sprite->sBallAngle)
@@ -4096,9 +4098,9 @@ static void SpriteCB_UnstickBall_Shroomish(struct Sprite *sprite)
static void SpriteCB_UnstickBall_TaillowDrop(struct Sprite *sprite)
{
- sprite->pos2.y = (s16)(sprite->data[2] * 0.05f * sprite->data[2]) - 45;
+ sprite->y2 = (s16)(sprite->data[2] * 0.05f * sprite->data[2]) - 45;
sprite->data[2]++;
- if (sprite->data[2] >= DEGREES_PER_SLOT && sprite->pos2.y >= 0)
+ if (sprite->data[2] >= DEGREES_PER_SLOT && sprite->y2 >= 0)
{
LandBall()
sRoulette->ballUnstuck = TRUE;
@@ -4109,11 +4111,11 @@ static void SpriteCB_UnstickBall_TaillowPickUp(struct Sprite *sprite)
{
if (sprite->data[2]++ < 45)
{
- sprite->pos2.y--;
+ sprite->y2--;
if (sprite->data[2] == 45)
{
if (gSprites[sRoulette->spriteIds[SPR_CLEAR_MON]].animCmdIndex == 1)
- sprite->pos2.y++;
+ sprite->y2++;
}
}
else
@@ -4123,9 +4125,9 @@ static void SpriteCB_UnstickBall_TaillowPickUp(struct Sprite *sprite)
if (gSprites[sRoulette->spriteIds[SPR_CLEAR_MON]].animDelayCounter == 0)
{
if (gSprites[sRoulette->spriteIds[SPR_CLEAR_MON]].animCmdIndex == 1)
- sprite->pos2.y++;
+ sprite->y2++;
else
- sprite->pos2.y--;
+ sprite->y2--;
}
}
else
@@ -4233,7 +4235,7 @@ static void SpriteCB_RollBall_TryLand(struct Sprite *sprite)
}
else // fall left
{
- float temp;
+ f32 temp;
sRoulette->ballAngleSpeed = (temp = sRouletteTables[sRoulette->tableId].var1C) * 2.0f;
slotId = (sRoulette->hitSlot + NUM_ROULETTE_SLOTS - 1) % NUM_ROULETTE_SLOTS;
sRoulette->stuckHitSlot = sRoulette->hitSlot;
@@ -4279,7 +4281,7 @@ static void SpriteCB_RollBall_Slow(struct Sprite *sprite)
{
// Reached slot to land in
sRoulette->ballAngleAccel = 0.0f;
- sRoulette->ballAngleSpeed -= (float)(sRouletteTables[sRoulette->tableId].wheelSpeed)
+ sRoulette->ballAngleSpeed -= (f32)(sRouletteTables[sRoulette->tableId].wheelSpeed)
/ (sRouletteTables[sRoulette->tableId].wheelDelay + 1);
sprite->sState = 4;
sprite->callback = SpriteCB_RollBall_TryLand;
@@ -4304,8 +4306,8 @@ static void SpriteCB_RollBall_Medium(struct Sprite *sprite)
if (sRoulette->ballDistToCenter > 40.0f)
return;
- sRoulette->ballFallSpeed = -(4.0f / (float)(sRoulette->ballTravelDistSlow));
- sRoulette->ballAngleAccel = -(sRoulette->ballAngleSpeed / (float)(sRoulette->ballTravelDistSlow));
+ sRoulette->ballFallSpeed = -(4.0f / (f32)(sRoulette->ballTravelDistSlow));
+ sRoulette->ballAngleAccel = -(sRoulette->ballAngleSpeed / (f32)(sRoulette->ballTravelDistSlow));
sprite->animNum = 2;
sprite->animBeginning = TRUE;
sprite->animEnded = FALSE;
@@ -4320,8 +4322,8 @@ static void SpriteCB_RollBall_Fast(struct Sprite *sprite)
return;
m4aSongNumStartOrChange(SE_ROULETTE_BALL2);
- sRoulette->ballFallSpeed = -(20.0f / (float)(sRoulette->ballTravelDistMed));
- sRoulette->ballAngleAccel = ((1.0f - sRoulette->ballAngleSpeed) / (float)(sRoulette->ballTravelDistMed));
+ sRoulette->ballFallSpeed = -(20.0f / (f32)(sRoulette->ballTravelDistMed));
+ sRoulette->ballAngleAccel = ((1.0f - sRoulette->ballAngleSpeed) / (f32)(sRoulette->ballTravelDistMed));
sprite->animNum = 1;
sprite->animBeginning = TRUE;
sprite->animEnded = FALSE;
@@ -4514,8 +4516,8 @@ static void SpriteCB_ShroomishExit(struct Sprite *sprite)
// Delay for screen shaking, then exit left
if (sprite->data[1]++ >= sprite->data[3])
{
- sprite->pos1.x -= 2;
- if (sprite->pos1.x < -16)
+ sprite->x -= 2;
+ if (sprite->x < -16)
{
if (!sRoulette->ballUnstuck)
sRoulette->ballUnstuck = TRUE;
@@ -4558,10 +4560,10 @@ static void SpriteCB_ShroomishShakeScreen(struct Sprite *sprite)
static void SpriteCB_ShroomishFall(struct Sprite *sprite)
{
- float timer;
+ f32 timer;
sprite->data[1]++;
timer = sprite->data[1];
- sprite->pos2.y = timer * 0.039f * timer;
+ sprite->y2 = timer * 0.039f * timer;
sRoulette->shroomishShadowAlpha = sShroomishShadowAlphas[(sRoulette->shroomishShadowTimer - 1) / 2];
if (sRoulette->shroomishShadowTimer < ARRAY_COUNT(sShroomishShadowAlphas) * 2 - 1)
sRoulette->shroomishShadowTimer++;
@@ -4634,9 +4636,9 @@ static void SpriteCB_TaillowShadow_Flash(struct Sprite *sprite)
static void SpriteCB_Taillow_FlyAway(struct Sprite *sprite)
{
- if (sprite->pos1.y > -16)
+ if (sprite->y > -16)
{
- sprite->pos1.y--;
+ sprite->y--;
}
else
{
@@ -4655,9 +4657,9 @@ static void SpriteCB_Taillow_PickUpBall(struct Sprite *sprite)
if (sprite->data[1] >= 0)
{
sprite->data[1]--;
- sprite->pos1.y--;
+ sprite->y--;
if (sprite->data[1] == 0 && sprite->animCmdIndex == 1)
- sprite->pos2.y++;
+ sprite->y2++;
}
else
{
@@ -4667,9 +4669,9 @@ static void SpriteCB_Taillow_PickUpBall(struct Sprite *sprite)
if (sprite->animDelayCounter == 0)
{
if (sprite->animCmdIndex == 1)
- sprite->pos2.y++;
+ sprite->y2++;
else
- sprite->pos2.y--;
+ sprite->y2--;
}
}
else
@@ -4698,10 +4700,10 @@ static void SpriteCB_Taillow_FlyIn(struct Sprite *sprite)
if (sprite->data[1]-- > 7)
{
- sprite->pos1.x += xMoveOffsets[sRoulette->ball->sStuckOnWheelLeft] * 2;
+ sprite->x += xMoveOffsets[sRoulette->ball->sStuckOnWheelLeft] * 2;
if (IsSEPlaying())
{
- s8 pan = -((116 - sprite->pos1.x) / 2);
+ s8 pan = -((116 - sprite->x) / 2);
m4aMPlayPanpotControl(&gMPlayInfo_SE1, 0xFFFF, pan);
m4aMPlayPanpotControl(&gMPlayInfo_SE2, 0xFFFF, pan);
}
@@ -4710,8 +4712,8 @@ static void SpriteCB_Taillow_FlyIn(struct Sprite *sprite)
{
if (sprite->data[1] >= 0)
{
- sprite->pos1.x += xMoveOffsets[sRoulette->ball->sStuckOnWheelLeft] * yMoveOffsets[7 - sprite->data[1]][0];
- sprite->pos1.y += yMoveOffsets[7 - sprite->data[1]][1];
+ sprite->x += xMoveOffsets[sRoulette->ball->sStuckOnWheelLeft] * yMoveOffsets[7 - sprite->data[1]][0];
+ sprite->y += yMoveOffsets[7 - sprite->data[1]][1];
}
else
{
@@ -4733,7 +4735,7 @@ static void SpriteCB_TaillowShadow_FlyIn(struct Sprite *sprite)
if (sprite->data[1]-- >= 0)
{
- sprite->pos1.x += moveDir[sRoulette->ball->sStuckOnWheelLeft] * 2;
+ sprite->x += moveDir[sRoulette->ball->sStuckOnWheelLeft] * 2;
gSprites[sprite->sMonShadowSpriteId].invisible ^= 1;
}
else
diff --git a/src/safari_zone.c b/src/safari_zone.c
index 3b86bc464..1f1397656 100644
--- a/src/safari_zone.c
+++ b/src/safari_zone.c
@@ -65,7 +65,7 @@ void EnterSafariMode(void)
void ExitSafariMode(void)
{
- sub_80EE44C(sSafariZoneCaughtMons, sSafariZonePkblkUses);
+ TryPutSafariFanClubOnAir(sSafariZoneCaughtMons, sSafariZonePkblkUses);
ResetSafariZoneFlag();
ClearAllPokeblockFeeders();
gNumSafariBalls = 0;
diff --git a/src/save.c b/src/save.c
index bbf4e7dbe..52301df03 100644
--- a/src/save.c
+++ b/src/save.c
@@ -913,7 +913,7 @@ void Task_LinkSave(u8 taskId)
if (IsLinkTaskFinished())
{
if (!tPartialSave)
- save_serialize_map();
+ SaveMapView();
tState = 3;
}
break;
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
index facdbdc17..8f727310c 100644
--- a/src/save_failed_screen.c
+++ b/src/save_failed_screen.c
@@ -47,7 +47,7 @@ static EWRAM_DATA u8 sUnused2[4] = {0};
static const struct OamData sClockOamData =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -152,7 +152,7 @@ static void SaveFailedScreenTextPrint(const u8 *text, u8 x, u8 y)
color[0] = TEXT_COLOR_TRANSPARENT;
color[1] = TEXT_DYNAMIC_COLOR_6;
- color[2] = TEXT_COLOR_LIGHT_GREY;
+ color[2] = TEXT_COLOR_LIGHT_GRAY;
AddTextPrinterParameterized4(sWindowIds[TEXT_WIN_ID], 1, x * 8, y * 8 + 1, 0, 0, color, 0, text);
}
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 7caaa194b..f53483978 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -1203,6 +1203,8 @@ bool8 ScrCmd_turnvobject(struct ScriptContext *ctx)
return FALSE;
}
+// lockall freezes all object events except the player immediately.
+// The player is frozen after waiting for their current movement to finish.
bool8 ScrCmd_lockall(struct ScriptContext *ctx)
{
if (IsUpdateLinkStateCBActive())
@@ -1211,12 +1213,14 @@ bool8 ScrCmd_lockall(struct ScriptContext *ctx)
}
else
{
- ScriptFreezeObjectEvents();
+ FreezeObjects_WaitForPlayer();
SetupNativeScript(ctx, IsFreezePlayerFinished);
return TRUE;
}
}
+// lock freezes all object events except the player and the selected object immediately.
+// The player and selected object are frozen after waiting for their current movement to finish.
bool8 ScrCmd_lock(struct ScriptContext *ctx)
{
if (IsUpdateLinkStateCBActive())
@@ -1227,12 +1231,12 @@ bool8 ScrCmd_lock(struct ScriptContext *ctx)
{
if (gObjectEvents[gSelectedObjectEvent].active)
{
- LockSelectedObjectEvent();
+ FreezeObjects_WaitForPlayerAndSelected();
SetupNativeScript(ctx, IsFreezeSelectedObjectAndPlayerFinished);
}
else
{
- ScriptFreezeObjectEvents();
+ FreezeObjects_WaitForPlayer();
SetupNativeScript(ctx, IsFreezePlayerFinished);
}
return TRUE;
@@ -1358,7 +1362,7 @@ bool8 ScrCmd_multichoice(struct ScriptContext *ctx)
u8 left = ScriptReadByte(ctx);
u8 top = ScriptReadByte(ctx);
u8 multichoiceId = ScriptReadByte(ctx);
- u8 ignoreBPress = ScriptReadByte(ctx);
+ bool8 ignoreBPress = ScriptReadByte(ctx);
if (ScriptMenu_Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE)
{
@@ -1377,7 +1381,7 @@ bool8 ScrCmd_multichoicedefault(struct ScriptContext *ctx)
u8 top = ScriptReadByte(ctx);
u8 multichoiceId = ScriptReadByte(ctx);
u8 defaultChoice = ScriptReadByte(ctx);
- u8 ignoreBPress = ScriptReadByte(ctx);
+ bool8 ignoreBPress = ScriptReadByte(ctx);
if (ScriptMenu_MultichoiceWithDefault(left, top, multichoiceId, ignoreBPress, defaultChoice) == TRUE)
{
@@ -1407,7 +1411,7 @@ bool8 ScrCmd_multichoicegrid(struct ScriptContext *ctx)
u8 top = ScriptReadByte(ctx);
u8 multichoiceId = ScriptReadByte(ctx);
u8 numColumns = ScriptReadByte(ctx);
- u8 ignoreBPress = ScriptReadByte(ctx);
+ bool8 ignoreBPress = ScriptReadByte(ctx);
if (ScriptMenu_MultichoiceGrid(left, top, multichoiceId, ignoreBPress, numColumns) == TRUE)
{
@@ -1427,7 +1431,7 @@ bool8 ScrCmd_erasebox(struct ScriptContext *ctx)
u8 right = ScriptReadByte(ctx);
u8 bottom = ScriptReadByte(ctx);
- // MenuZeroFillWindowRect(left, top, right, bottom);
+ // Menu_EraseWindowRect(left, top, right, bottom);
return FALSE;
}
@@ -1436,7 +1440,7 @@ bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx)
u8 left = ScriptReadByte(ctx);
u8 top = ScriptReadByte(ctx);
u8 multichoiceId = ScriptReadByte(ctx);
- u8 ignoreBPress = ScriptReadByte(ctx);
+ bool8 ignoreBPress = ScriptReadByte(ctx);
/*if (Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE)
{
@@ -1466,15 +1470,15 @@ bool8 ScrCmd_hidemonpic(struct ScriptContext *ctx)
return TRUE;
}
-bool8 ScrCmd_showcontestwinner(struct ScriptContext *ctx)
+bool8 ScrCmd_showcontestpainting(struct ScriptContext *ctx)
{
u8 contestWinnerId = ScriptReadByte(ctx);
- // Don't save artist's painting yet
+ // Artist's painting is temporary and already has its data loaded
if (contestWinnerId != CONTEST_WINNER_ARTIST)
SetContestWinnerForPainting(contestWinnerId);
- ShowContestWinnerPainting();
+ ShowContestPainting();
ScriptContext1_Stop();
return TRUE;
}
diff --git a/src/script_menu.c b/src/script_menu.c
index 51c37b5b6..f3317773a 100644
--- a/src/script_menu.c
+++ b/src/script_menu.c
@@ -279,7 +279,7 @@ bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, bool8 ignore
gTasks[taskId].tWindowId = CreateWindowFromRect(left, top, columnCount * newWidth, rowCount * 2);
SetStandardWindowBorderStyle(gTasks[taskId].tWindowId, 0);
PrintMenuGridTable(gTasks[taskId].tWindowId, newWidth * 8, columnCount, rowCount, sMultichoiceLists[multichoiceId].list);
- sub_8199944(gTasks[taskId].tWindowId, newWidth * 8, columnCount, rowCount, 0);
+ InitMenuActionGrid(gTasks[taskId].tWindowId, newWidth * 8, columnCount, rowCount, 0);
CopyWindowToVram(gTasks[taskId].tWindowId, 3);
return TRUE;
}
diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c
index ad1a55230..93a747772 100755
--- a/src/script_pokemon_util.c
+++ b/src/script_pokemon_util.c
@@ -22,7 +22,6 @@
#include "string_util.h"
#include "tv.h"
#include "constants/items.h"
-#include "constants/tv.h"
#include "constants/battle_frontier.h"
static void CB2_ReturnFromChooseHalfParty(void);
diff --git a/src/secret_base.c b/src/secret_base.c
index ddc051dca..e1c62e2f2 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -47,7 +47,6 @@
#include "constants/secret_bases.h"
#include "constants/songs.h"
#include "constants/trainers.h"
-#include "constants/tv.h"
// Values for registryStatus
enum {
diff --git a/src/shop.c b/src/shop.c
index dac43c96d..f4e3fa2d8 100755
--- a/src/shop.c
+++ b/src/shop.c
@@ -38,7 +38,6 @@
#include "constants/metatile_behaviors.h"
#include "constants/rgb.h"
#include "constants/songs.h"
-#include "constants/tv.h"
#define TAG_SCROLL_ARROW 2100
#define TAG_ITEM_ICON_BASE 2110
@@ -48,7 +47,7 @@ static EWRAM_DATA struct ShopData *sShopData = NULL;
static EWRAM_DATA struct ListMenuItem *sListMenuItems = NULL;
static EWRAM_DATA u8 (*sItemNames)[16] = {0};
static EWRAM_DATA u8 sPurchaseHistoryId = 0;
-EWRAM_DATA struct ItemSlot gMartPurchaseHistory[3] = {0};
+EWRAM_DATA struct ItemSlot gMartPurchaseHistory[SMARTSHOPPER_NUM_ITEMS] = {0};
static void Task_ShopMenu(u8 taskId);
static void Task_HandleShopMenuQuit(u8 taskId);
@@ -92,7 +91,7 @@ static void Task_ReturnToItemListAfterDecorationPurchase(u8 taskId);
static void Task_HandleShopMenuBuy(u8 taskId);
static void Task_HandleShopMenuSell(u8 taskId);
static void BuyMenuPrintItemDescriptionAndShowItemIcon(s32 item, bool8 onInit, struct ListMenu *list);
-static void BuyMenuPrintPriceInList(u8 windowId, s32 item, u8 y);
+static void BuyMenuPrintPriceInList(u8 windowId, u32 itemId, u8 y);
static const struct YesNoFuncTable sShopPurchaseYesNoFuncs =
{
@@ -373,7 +372,7 @@ static void Task_HandleShopMenuQuit(u8 taskId)
{
ClearStdWindowAndFrameToTransparent(sMartInfo.windowId, 2);
RemoveWindow(sMartInfo.windowId);
- SaveRecordedItemPurchasesForTVShow();
+ TryPutSmartShopperOnAir();
ScriptContext2_Disable();
DestroyTask(taskId);
@@ -553,17 +552,17 @@ static void BuyMenuPrintItemDescriptionAndShowItemIcon(s32 item, bool8 onInit, s
BuyMenuPrint(2, description, 3, 1, 0, 0);
}
-static void BuyMenuPrintPriceInList(u8 windowId, s32 item, u8 y)
+static void BuyMenuPrintPriceInList(u8 windowId, u32 itemId, u8 y)
{
u8 x;
- if (item != LIST_CANCEL)
+ if (itemId != LIST_CANCEL)
{
if (sMartInfo.martType == MART_TYPE_NORMAL)
{
ConvertIntToDecimalStringN(
gStringVar1,
- ItemId_GetPrice(item) >> GetPriceReduction(POKENEWS_SLATEPORT),
+ ItemId_GetPrice(itemId) >> GetPriceReduction(POKENEWS_SLATEPORT),
STR_CONV_MODE_LEFT_ALIGN,
5);
}
@@ -571,7 +570,7 @@ static void BuyMenuPrintPriceInList(u8 windowId, s32 item, u8 y)
{
ConvertIntToDecimalStringN(
gStringVar1,
- gDecorations[item].price,
+ gDecorations[itemId].price,
STR_CONV_MODE_LEFT_ALIGN,
5);
}
@@ -626,8 +625,8 @@ static void BuyMenuAddItemIcon(u16 item, u8 iconSlot)
if (spriteId != MAX_SPRITES)
{
*spriteIdPtr = spriteId;
- gSprites[spriteId].pos2.x = 24;
- gSprites[spriteId].pos2.y = 88;
+ gSprites[spriteId].x2 = 24;
+ gSprites[spriteId].y2 = 88;
}
}
else
diff --git a/src/siirtc.c b/src/siirtc.c
index 5c153a841..5f4fc0a23 100644
--- a/src/siirtc.c
+++ b/src/siirtc.c
@@ -71,6 +71,7 @@ static bool8 sLocked;
static int WriteCommand(u8 value);
static int WriteData(u8 value);
static u8 ReadData();
+
static void EnableGpioPortRead();
static void DisableGpioPortRead();
@@ -98,8 +99,12 @@ u8 SiiRtcProbe(void)
errorCode = 0;
+#ifdef BUGFIX
+ if (!(rtc.status & SIIRTCINFO_24HOUR) || (rtc.status & SIIRTCINFO_POWER))
+#else
if ((rtc.status & (SIIRTCINFO_POWER | SIIRTCINFO_24HOUR)) == SIIRTCINFO_POWER
|| (rtc.status & (SIIRTCINFO_POWER | SIIRTCINFO_24HOUR)) == 0)
+#endif
{
// The RTC is in 12-hour mode. Reset it and switch to 24-hour mode.
@@ -131,7 +136,7 @@ u8 SiiRtcProbe(void)
bool8 SiiRtcReset(void)
{
- u8 result;
+ bool8 result;
struct SiiRtcInfo rtc;
if (sLocked == TRUE)
@@ -392,7 +397,11 @@ static int WriteCommand(u8 value)
GPIO_PORT_DATA = (temp << 1) | SCK_HI | CS_HI;
}
- // control reaches end of non-void function
+ // Nothing uses the returned value from this function,
+ // so the undefined behavior is harmless in the vanilla game.
+#ifdef UBFIX
+ return 0;
+#endif
}
static int WriteData(u8 value)
@@ -409,7 +418,11 @@ static int WriteData(u8 value)
GPIO_PORT_DATA = (temp << 1) | SCK_HI | CS_HI;
}
- // control reaches end of non-void function
+ // Nothing uses the returned value from this function,
+ // so the undefined behavior is harmless in the vanilla game.
+#ifdef UBFIX
+ return 0;
+#endif
}
static u8 ReadData()
@@ -418,6 +431,10 @@ static u8 ReadData()
u8 temp;
u8 value;
+#ifdef UBFIX
+ value = 0;
+#endif
+
for (i = 0; i < 8; i++)
{
GPIO_PORT_DATA = CS_HI;
@@ -428,7 +445,7 @@ static u8 ReadData()
GPIO_PORT_DATA = SCK_HI | CS_HI;
temp = ((GPIO_PORT_DATA & SIO_HI) >> 1);
- value = (value >> 1) | (temp << 7); // UB: accessing uninitialized var
+ value = (value >> 1) | (temp << 7);
}
return value;
@@ -436,10 +453,10 @@ static u8 ReadData()
static void EnableGpioPortRead()
{
- GPIO_PORT_READ_ENABLE = 1;
+ GPIO_PORT_READ_ENABLE = TRUE;
}
static void DisableGpioPortRead()
{
- GPIO_PORT_READ_ENABLE = 0;
+ GPIO_PORT_READ_ENABLE = FALSE;
}
diff --git a/src/slot_machine.c b/src/slot_machine.c
index 199e01bdd..157f3625e 100644
--- a/src/slot_machine.c
+++ b/src/slot_machine.c
@@ -682,7 +682,7 @@ static const struct WindowTemplate sWindowTemplate_InfoBox =
.baseBlock = 1
};
-static const u8 sColors_ReeltimeHelp[] = {TEXT_COLOR_LIGHT_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY};
+static const u8 sColors_ReeltimeHelp[] = {TEXT_COLOR_LIGHT_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY};
static bool8 (*const sSlotActions[])(struct Task *task) =
{
@@ -1592,7 +1592,7 @@ static bool8 SlotAction_WaitMsg_NoMoreCoins(struct Task *task)
static bool8 SlotAction_EndGame(struct Task *task)
{
SetCoins(sSlotMachine->coins);
- AlertTVOfNewCoinTotal(GetCoins());
+ TryPutFindThatGamerOnAir(GetCoins());
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB(0, 0, 0));
sSlotMachine->state++; // SLOT_ACTION_FREE
return FALSE;
@@ -3605,7 +3605,7 @@ static void SpriteCB_ReelSymbol(struct Sprite *sprite)
{
sprite->data[2] = sSlotMachine->reelPixelOffsets[sprite->data[0]] + sprite->data[1];
sprite->data[2] %= 120;
- sprite->pos1.y = sSlotMachine->reelPixelOffsetsWhileStopping[sprite->data[0]] + 28 + sprite->data[2];
+ sprite->y = sSlotMachine->reelPixelOffsetsWhileStopping[sprite->data[0]] + 28 + sprite->data[2];
sprite->sheetTileStart = GetSpriteTileStartByTag(GetTagAtRest(sprite->data[0], sprite->data[2] / 24));
SetSpriteSheetFrameTileNum(sprite);
}
@@ -3692,12 +3692,12 @@ static void DestroyReelTimePikachuSprite(void)
static void SpriteCB_ReelTimePikachu(struct Sprite *sprite)
{
- sprite->pos2.y = sprite->pos2.x = 0;
+ sprite->y2 = sprite->x2 = 0;
if (sprite->animNum == 4)
{
- sprite->pos2.y = sprite->pos2.x = 8;
+ sprite->y2 = sprite->x2 = 8;
if ((sprite->animCmdIndex != 0 && sprite->animDelayCounter != 0) || (sprite->animCmdIndex == 0 && sprite->animDelayCounter == 0))
- sprite->pos2.y = -8;
+ sprite->y2 = -8;
}
}
@@ -3776,7 +3776,7 @@ static void SpriteCB_ReelTimeNumbers(struct Sprite *sprite)
{
s16 r0 = (u16)(sSlotMachine->reeltimePixelOffset + sprite->data[7]);
r0 %= 40;
- sprite->pos1.y = r0 + 59;
+ sprite->y = r0 + 59;
StartSpriteAnimIfDifferent(sprite, GetNearbyReelTimeTag(r0 / 20));
}
@@ -3872,15 +3872,15 @@ static void SpriteCB_ReelTimeBolt(struct Sprite *sprite)
if (sprite->sDelayTimer != 0)
{
sprite->sDelayTimer--;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->invisible = TRUE;
}
else
{
sprite->invisible = FALSE;
- sprite->pos2.x += sprite->sXDir;
- sprite->pos2.y += sprite->sYDir;
+ sprite->x2 += sprite->sXDir;
+ sprite->y2 += sprite->sYDir;
if (++sprite->sCounter >= 8)
{
sprite->sDelayTimer = sprite->sDelay;
@@ -3971,7 +3971,7 @@ static void CreateReelTimeExplosionSprite(void)
static void SpriteCB_ReelTimeExplosion(struct Sprite *sprite)
{
- sprite->pos2.y = gSpriteCoordOffsetY;
+ sprite->y2 = gSpriteCoordOffsetY;
}
static void DestroyReelTimeExplosionSprite(void)
@@ -3999,8 +3999,8 @@ static void SpriteCB_ReelTimeDuck(struct Sprite *sprite)
{
sprite->data[0] -= 2;
sprite->data[0] &= 0xff;
- sprite->pos2.x = Cos(sprite->data[0], 20);
- sprite->pos2.y = Sin(sprite->data[0], 6);
+ sprite->x2 = Cos(sprite->data[0], 20);
+ sprite->y2 = Sin(sprite->data[0], 6);
sprite->subpriority = 0;
if (sprite->data[0] >= 0x80)
{
@@ -4061,7 +4061,7 @@ static void SpriteCB_ReelTimeSmoke(struct Sprite *sprite)
}
sprite->sMoveY &= 0xff;
sprite->sMoveY += 16;
- sprite->pos2.y -= (sprite->sMoveY >> 8);
+ sprite->y2 -= (sprite->sMoveY >> 8);
}
static u8 IsReelTimeSmokeAnimFinished(void)
@@ -4147,12 +4147,12 @@ static void SpriteCB_DigitalDisplay_Smoke(struct Sprite *sprite)
sprite->subspriteTableNum ^= 1;
sprite->sCounter = 0;
}
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
if (sprite->subspriteTableNum != 0)
{
- sprite->pos2.x = targetX[sprite->sSpriteId];
- sprite->pos2.y = targetY[sprite->sSpriteId];
+ sprite->x2 = targetX[sprite->sSpriteId];
+ sprite->y2 = targetY[sprite->sSpriteId];
}
}
@@ -4181,10 +4181,10 @@ static void SpriteCB_DigitalDisplay_Reel(struct Sprite *sprite)
switch (sprite->sState)
{
case 0:
- sprite->pos1.x += 4;
- if (sprite->pos1.x >= 0xd0)
+ sprite->x += 4;
+ if (sprite->x >= 0xd0)
{
- sprite->pos1.x = 0xd0;
+ sprite->x = 0xd0;
sprite->sState++;
}
break;
@@ -4193,8 +4193,8 @@ static void SpriteCB_DigitalDisplay_Reel(struct Sprite *sprite)
sprite->sState++;
break;
case 2:
- sprite->pos1.x += 4;
- if (sprite->pos1.x >= 0x110)
+ sprite->x += 4;
+ if (sprite->x >= 0x110)
sprite->sState++;
break;
case 3:
@@ -4209,10 +4209,10 @@ static void SpriteCB_DigitalDisplay_Time(struct Sprite *sprite)
switch (sprite->sState)
{
case 0:
- sprite->pos1.x -= 4;
- if (sprite->pos1.x <= 0xd0)
+ sprite->x -= 4;
+ if (sprite->x <= 0xd0)
{
- sprite->pos1.x = 0xd0;
+ sprite->x = 0xd0;
sprite->sState++;
}
break;
@@ -4221,8 +4221,8 @@ static void SpriteCB_DigitalDisplay_Time(struct Sprite *sprite)
sprite->sState++;
break;
case 2:
- sprite->pos1.x -= 4;
- if (sprite->pos1.x <= 0x90)
+ sprite->x -= 4;
+ if (sprite->x <= 0x90)
sprite->sState++;
break;
case 3:
@@ -4247,10 +4247,10 @@ static void SpriteCB_DigitalDisplay_ReelTimeNumber(struct Sprite *sprite)
}
break;
case 2:
- sprite->pos1.x += 4;
- if (sprite->pos1.x >= 0xd0)
+ sprite->x += 4;
+ if (sprite->x >= 0xd0)
{
- sprite->pos1.x = 0xd0;
+ sprite->x = 0xd0;
sprite->sState++;
}
break;
@@ -4259,8 +4259,8 @@ static void SpriteCB_DigitalDisplay_ReelTimeNumber(struct Sprite *sprite)
sprite->sState++;
break;
case 4:
- sprite->pos1.x += 4;
- if (sprite->pos1.x >= 0xf8)
+ sprite->x += 4;
+ if (sprite->x >= 0xf8)
sprite->sState++;
break;
case 5:
@@ -4278,10 +4278,10 @@ static void SpriteCB_DigitalDisplay_PokeballRocking(struct Sprite *sprite)
sprite->sState++;
// fallthrough
case 1:
- sprite->pos1.y += 8;
- if (sprite->pos1.y >= 0x70)
+ sprite->y += 8;
+ if (sprite->y >= 0x70)
{
- sprite->pos1.y = 0x70;
+ sprite->y = 0x70;
sprite->sCounter = 16;
sprite->sState++;
}
@@ -4289,7 +4289,7 @@ static void SpriteCB_DigitalDisplay_PokeballRocking(struct Sprite *sprite)
case 2:
if (sprite->data[2] == 0)
{
- sprite->pos1.y -= sprite->sCounter;
+ sprite->y -= sprite->sCounter;
sprite->sCounter = -sprite->sCounter;
if (++sprite->data[3] >= 2)
{
@@ -4318,10 +4318,10 @@ static void SpriteCB_DigitalDisplay_Stop(struct Sprite *sprite)
sprite->sState++;
break;
case 1:
- sprite->pos1.y += 2;
- if (sprite->pos1.y >= 0x30)
+ sprite->y += 2;
+ if (sprite->y >= 0x30)
{
- sprite->pos1.y = 0x30;
+ sprite->y = 0x30;
sprite->sState++;
sprite->sWaitForAnim = FALSE;
}
@@ -4397,8 +4397,8 @@ static void SpriteCB_DigitalDisplay_RegBonus(struct Sprite *sprite)
switch (sprite->sState)
{
case 0:
- sprite->pos2.x = letterXOffset[sprite->sSpriteId];
- sprite->pos2.y = letterYOffset[sprite->sSpriteId];
+ sprite->x2 = letterXOffset[sprite->sSpriteId];
+ sprite->y2 = letterYOffset[sprite->sSpriteId];
sprite->sCounter = letterDelay[sprite->sSpriteId];
sprite->sState++;
// fallthrough
@@ -4407,17 +4407,17 @@ static void SpriteCB_DigitalDisplay_RegBonus(struct Sprite *sprite)
sprite->sState++;
break;
case 2:
- if (sprite->pos2.x > 0)
- sprite->pos2.x -= 4;
- else if (sprite->pos2.x < 0)
- sprite->pos2.x += 4;
+ if (sprite->x2 > 0)
+ sprite->x2 -= 4;
+ else if (sprite->x2 < 0)
+ sprite->x2 += 4;
- if (sprite->pos2.y > 0)
- sprite->pos2.y -= 4;
- else if (sprite->pos2.y < 0)
- sprite->pos2.y += 4;
+ if (sprite->y2 > 0)
+ sprite->y2 -= 4;
+ else if (sprite->y2 < 0)
+ sprite->y2 += 4;
- if (sprite->pos2.x == 0 && sprite->pos2.y == 0)
+ if (sprite->x2 == 0 && sprite->y2 == 0)
sprite->sState++;
break;
}
@@ -4432,8 +4432,8 @@ static void SpriteCB_DigitalDisplay_BigBonus(struct Sprite *sprite)
sprite->sState++;
sprite->sCounter = 12;
}
- sprite->pos2.x = Cos(sp0[sprite->sSpriteId], sprite->sCounter);
- sprite->pos2.y = Sin(sp0[sprite->sSpriteId], sprite->sCounter);
+ sprite->x2 = Cos(sp0[sprite->sSpriteId], sprite->sCounter);
+ sprite->y2 = Sin(sp0[sprite->sSpriteId], sprite->sCounter);
if (sprite->sCounter != 0)
sprite->sCounter--;
}
diff --git a/src/start_menu.c b/src/start_menu.c
index 2316b85b6..3fcb5aa7b 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -850,7 +850,7 @@ static bool8 BattlePyramidRetireCallback(void)
static void InitSave(void)
{
- save_serialize_map();
+ SaveMapView();
sSaveDialogCallback = SaveConfirmSaveCallback;
sSavingComplete = FALSE;
}
@@ -1242,9 +1242,9 @@ static void Task_SaveAfterLinkBattle(u8 taskId)
gText_SavingDontTurnOffPower,
TEXT_SPEED_FF,
NULL,
- TEXT_COLOR_DARK_GREY,
+ TEXT_COLOR_DARK_GRAY,
TEXT_COLOR_WHITE,
- TEXT_COLOR_LIGHT_GREY);
+ TEXT_COLOR_LIGHT_GRAY);
DrawTextBorderOuter(0, 8, 14);
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
diff --git a/src/starter_choose.c b/src/starter_choose.c
index f29023d96..b327816e6 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -153,11 +153,11 @@ static const struct BgTemplate sBgTemplates[3] =
},
};
-static const u8 sTextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GREY};
+static const u8 sTextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY};
static const struct OamData sOam_Hand =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -174,7 +174,7 @@ static const struct OamData sOam_Hand =
static const struct OamData sOam_Pokeball =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -191,7 +191,7 @@ static const struct OamData sOam_Pokeball =
static const struct OamData sOam_StarterCircle =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_DOUBLE,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -523,8 +523,8 @@ static void Task_HandleStarterChooseInput(u8 taskId)
static void Task_WaitForStarterSprite(u8 taskId)
{
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)
+ gSprites[gTasks[taskId].tCircleSpriteId].x == STARTER_PKMN_POS_X &&
+ gSprites[gTasks[taskId].tCircleSpriteId].y == STARTER_PKMN_POS_Y)
{
gTasks[taskId].func = Task_AskConfirmStarter;
}
@@ -643,9 +643,9 @@ static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y)
static void SpriteCB_SelectionHand(struct Sprite *sprite)
{
// Float up and down above selected pokeball
- sprite->pos1.x = sCursorCoords[gTasks[sprite->data[0]].tStarterSelection][0];
- sprite->pos1.y = sCursorCoords[gTasks[sprite->data[0]].tStarterSelection][1];
- sprite->pos2.y = Sin(sprite->data[1], 8);
+ sprite->x = sCursorCoords[gTasks[sprite->data[0]].tStarterSelection][0];
+ sprite->y = sCursorCoords[gTasks[sprite->data[0]].tStarterSelection][1];
+ sprite->y2 = Sin(sprite->data[1], 8);
sprite->data[1] = (u8)(sprite->data[1]) + 4;
}
@@ -661,12 +661,12 @@ static void SpriteCB_Pokeball(struct Sprite *sprite)
static void SpriteCB_StarterPokemon(struct Sprite *sprite)
{
// Move sprite to upper center of screen
- if (sprite->pos1.x > STARTER_PKMN_POS_X)
- sprite->pos1.x -= 4;
- if (sprite->pos1.x < STARTER_PKMN_POS_X)
- sprite->pos1.x += 4;
- if (sprite->pos1.y > STARTER_PKMN_POS_Y)
- sprite->pos1.y -= 2;
- if (sprite->pos1.y < STARTER_PKMN_POS_Y)
- sprite->pos1.y += 2;
+ if (sprite->x > STARTER_PKMN_POS_X)
+ sprite->x -= 4;
+ if (sprite->x < STARTER_PKMN_POS_X)
+ sprite->x += 4;
+ if (sprite->y > STARTER_PKMN_POS_Y)
+ sprite->y -= 2;
+ if (sprite->y < STARTER_PKMN_POS_Y)
+ sprite->y += 2;
}
diff --git a/src/strings.c b/src/strings.c
index 19d0e3cca..4987e32d2 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "strings.h"
+#include "battle_pyramid_bag.h"
ALIGNED(4)
const u8 gText_ExpandedPlaceholder_Empty[] = _("");
@@ -252,7 +253,7 @@ const u8 gText_ThePokemonList[] = _("the POKéMON LIST");
const u8 gText_TheShop[] = _("the shop");
const u8 gText_ThePC[] = _("the PC");
-const u8 *const gReturnToXStringsTable[] =
+const u8 *const gBagMenu_ReturnToStrings[] =
{
gText_TheField,
gText_TheBattle,
@@ -268,12 +269,12 @@ const u8 *const gReturnToXStringsTable[] =
gText_ThePC
};
-const u8 *const gReturnToXStringsTable2[] =
+const u8 *const gPyramidBagMenu_ReturnToStrings[] =
{
- gText_TheField,
- gText_TheBattle,
- gText_ThePokemonList,
- gText_TheField
+ [PYRAMIDBAG_LOC_FIELD] = gText_TheField,
+ [PYRAMIDBAG_LOC_BATTLE] = gText_TheBattle,
+ [PYRAMIDBAG_LOC_PARTY] = gText_ThePokemonList,
+ [PYRAMIDBAG_LOC_CHOOSE_TOSS] = gText_TheField
};
const u8 gText_ReturnToVar1[] = _("Return to\n{STR_VAR_1}.");
@@ -981,8 +982,8 @@ const u8 gText_TrainerCloseBy[] = _("That TRAINER is close by.\nTalk to the TRAI
const u8 gText_InParty[] = _("IN PARTY");
const u8 gText_Number2[] = _("No. ");
const u8 gText_Ribbons[] = _("RIBBONS"); // Unused
-const u8 gText_PokemonMaleLv[] = _("{DYNAMIC 0}{COLOR_HIGHLIGHT_SHADOW LIGHT_RED WHITE GREEN}♂{COLOR_HIGHLIGHT_SHADOW DARK_GREY WHITE LIGHT_GREY}/{LV}{DYNAMIC 1}"); // Unused
-const u8 gText_PokemonFemaleLv[] = _("{DYNAMIC 0}{COLOR_HIGHLIGHT_SHADOW LIGHT_GREEN WHITE BLUE}♀{COLOR_HIGHLIGHT_SHADOW DARK_GREY WHITE LIGHT_GREY}/{LV}{DYNAMIC 1}"); // Unused
+const u8 gText_PokemonMaleLv[] = _("{DYNAMIC 0}{COLOR_HIGHLIGHT_SHADOW LIGHT_RED WHITE GREEN}♂{COLOR_HIGHLIGHT_SHADOW DARK_GRAY WHITE LIGHT_GRAY}/{LV}{DYNAMIC 1}"); // Unused
+const u8 gText_PokemonFemaleLv[] = _("{DYNAMIC 0}{COLOR_HIGHLIGHT_SHADOW LIGHT_GREEN WHITE BLUE}♀{COLOR_HIGHLIGHT_SHADOW DARK_GRAY WHITE LIGHT_GRAY}/{LV}{DYNAMIC 1}"); // Unused
const u8 gText_PokemonNoGenderLv[] = _("{DYNAMIC 0}/{LV}{DYNAMIC 1}"); // Unused
const u8 gText_Unknown[] = _("UNKNOWN");
const u8 gText_Call[] = _("CALL");
@@ -990,8 +991,8 @@ const u8 gText_Check[] = _("CHECK");
const u8 gText_Cancel6[] = _("CANCEL");
const u8 gText_NumberF700[] = _("No. {DYNAMIC 0}");
const u8 gText_RibbonsF700[] = _("RIBBONS {DYNAMIC 0}");
-const u8 gText_PokemonMaleLv2[] = _("{DYNAMIC 0}{COLOR_HIGHLIGHT_SHADOW LIGHT_RED WHITE GREEN}♂{COLOR_HIGHLIGHT_SHADOW DARK_GREY WHITE LIGHT_GREY}/{LV}{DYNAMIC 1}{DYNAMIC 2}"); // Unused
-const u8 gText_PokemonFemaleLv2[] = _("{DYNAMIC 0}{COLOR_HIGHLIGHT_SHADOW LIGHT_GREEN WHITE BLUE}♀{COLOR_HIGHLIGHT_SHADOW DARK_GREY WHITE LIGHT_GREY}/{LV}{DYNAMIC 1}{DYNAMIC 2}"); // Unused
+const u8 gText_PokemonMaleLv2[] = _("{DYNAMIC 0}{COLOR_HIGHLIGHT_SHADOW LIGHT_RED WHITE GREEN}♂{COLOR_HIGHLIGHT_SHADOW DARK_GRAY WHITE LIGHT_GRAY}/{LV}{DYNAMIC 1}{DYNAMIC 2}"); // Unused
+const u8 gText_PokemonFemaleLv2[] = _("{DYNAMIC 0}{COLOR_HIGHLIGHT_SHADOW LIGHT_GREEN WHITE BLUE}♀{COLOR_HIGHLIGHT_SHADOW DARK_GRAY WHITE LIGHT_GRAY}/{LV}{DYNAMIC 1}{DYNAMIC 2}"); // Unused
const u8 gText_PokemonNoGenderLv2[] = _("{DYNAMIC 0}/{LV}{DYNAMIC 1}{DYNAMIC 2}"); // Unused
const u8 gText_CombineFourWordsOrPhrases[] = _("Combine four words or phrases");
const u8 gText_AndMakeYourProfile[] = _("and make your profile.");
@@ -1200,18 +1201,18 @@ const u8 gText_Var1sTrainerCard[] = _("{STR_VAR_1}'s TRAINER CARD");
const u8 gText_HallOfFameDebut[] = _("HALL OF FAME DEBUT ");
const u8 gText_LinkBattles[] = _("LINK BATTLES");
const u8 gText_LinkCableBattles[] = _("LINK CABLE BATTLES");
-const u8 gText_WinsLosses[] = _("W:{COLOR RED}{SHADOW LIGHT_RED}{STR_VAR_1}{COLOR DARK_GREY}{SHADOW LIGHT_GREY} L:{COLOR RED}{SHADOW LIGHT_RED}{STR_VAR_2}{COLOR DARK_GREY}{SHADOW LIGHT_GREY}");
+const u8 gText_WinsLosses[] = _("W:{COLOR RED}{SHADOW LIGHT_RED}{STR_VAR_1}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY} L:{COLOR RED}{SHADOW LIGHT_RED}{STR_VAR_2}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}");
const u8 gText_PokemonTrades[] = _("POKéMON TRADES");
const u8 gText_UnionTradesAndBattles[] = _("UNION TRADES & BATTLES");
const u8 gText_BerryCrush[] = _("BERRY CRUSH");
const u8 gText_WaitingTrainerFinishReading[] = _("Waiting for the other TRAINER to\nfinish reading your TRAINER CARD.");
const u8 gText_PokeblocksWithFriends[] = _("{POKEBLOCK}S W/FRIENDS");
-const u8 gText_NumPokeblocks[] = _("{STR_VAR_1}{COLOR DARK_GREY}{SHADOW LIGHT_GREY}");
+const u8 gText_NumPokeblocks[] = _("{STR_VAR_1}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}");
const u8 gText_WonContestsWFriends[] = _("WON CONTESTS W/FRIENDS");
const u8 gText_BattlePtsWon[] = _("BATTLE POINTS WON");
-const u8 gText_NumBP[] = _("{STR_VAR_1}{COLOR DARK_GREY}{SHADOW LIGHT_GREY}BP");
+const u8 gText_NumBP[] = _("{STR_VAR_1}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}BP");
const u8 gText_BattleTower[] = _("BATTLE TOWER");
-const u8 gText_WinsStraight[] = _("W/{COLOR RED}{SHADOW LIGHT_RED}{STR_VAR_1}{COLOR DARK_GREY}{SHADOW LIGHT_GREY} STRAIGHT/{COLOR RED}{SHADOW LIGHT_RED}{STR_VAR_2}");
+const u8 gText_WinsStraight[] = _("W/{COLOR RED}{SHADOW LIGHT_RED}{STR_VAR_1}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY} STRAIGHT/{COLOR RED}{SHADOW LIGHT_RED}{STR_VAR_2}");
const u8 gText_BattleTower2[] = _("BATTLE TOWER");
const u8 gText_BattleDome[] = _("BATTLE DOME");
const u8 gText_BattlePalace[] = _("BATTLE PALACE");
@@ -1228,7 +1229,7 @@ ALIGNED(4) const u8 gText_Facility[] = _("{STR_VAR_1}");
const u8 gText_Give[] = _("Give");
const u8 gText_NoNeed[] = _("No need");
-const u8 gText_ColorLightShadowDarkGrey[] = _("{COLOR LIGHT_GREY}{SHADOW DARK_GREY}");
+const u8 gText_ColorLightShadowDarkGray[] = _("{COLOR LIGHT_GRAY}{SHADOW DARK_GRAY}");
const u8 gText_ColorBlue[] = _("{COLOR BLUE}");
const u8 gText_ColorTransparent[] = _("{HIGHLIGHT TRANSPARENT}{COLOR TRANSPARENT}");
const u8 gText_CDot[] = _("C.");
@@ -1238,9 +1239,9 @@ const u8 gText_PreliminaryResults[] = _("The preliminary results!");
const u8 gText_Round2Results[] = _("Round 2 results!");
const u8 gText_ContestantsMonWon[] = _("{STR_VAR_1}'s {STR_VAR_2} won!");
const u8 gText_CommunicationStandby[] = _("Communication standby…");
-const u8 gText_ColorDarkGrey[] = _("{COLOR DARK_GREY}");
+const u8 gText_ColorDarkGray[] = _("{COLOR DARK_GRAY}");
const u8 gText_ColorDynamic6WhiteDynamic5[] = _("{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR6 WHITE DYNAMIC_COLOR5}"); // Unused
-const u8 gText_HighlightDarkGrey[] = _("{HIGHLIGHT DARK_GREY}");
+const u8 gText_HighlightDarkGray[] = _("{HIGHLIGHT DARK_GRAY}");
const u8 gText_EmptySpace2[] = _(" "); // Unused
const u8 gText_DynColor2Male[] = _("{COLOR DYNAMIC_COLOR2}♂");
const u8 gText_DynColor1Female[] = _("{COLOR DYNAMIC_COLOR1}♀");
@@ -1535,7 +1536,7 @@ const u8 gJPText_Player[] = _("プレイヤー"); // Unused
const u8 gJPText_Sama[] = _("さま"); // Unused
const u8 gText_DexHoenn[] = _("HOENN");
const u8 gText_DexNational[] = _("NATIONAL");
-const u8 gText_PokedexDiploma[] = _("PLAYER: {CLEAR 0x10}{COLOR RED}{SHADOW LIGHT_RED}{PLAYER}{COLOR DARK_GREY}{SHADOW LIGHT_GREY}\n\nThis document certifies\nthat you have successfully\ncompleted your\n{STR_VAR_1} POKéDEX.\n\n{CLEAR_TO 0x42}{COLOR RED}{SHADOW LIGHT_RED}GAME FREAK");
+const u8 gText_PokedexDiploma[] = _("PLAYER: {CLEAR 0x10}{COLOR RED}{SHADOW LIGHT_RED}{PLAYER}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}\n\nThis document certifies\nthat you have successfully\ncompleted your\n{STR_VAR_1} POKéDEX.\n\n{CLEAR_TO 0x42}{COLOR RED}{SHADOW LIGHT_RED}GAME FREAK");
const u8 gJPText_GameFreak[] = _("{COLOR RED}{SHADOW LIGHT_RED}ゲ-ムフリ-ク"); // Unused
const u8 gText_DiplomaEmpty[] = _("{COLOR RED}{SHADOW LIGHT_RED}"); // Unused
const u8 gText_Hoenn[] = _("HOENN");
diff --git a/src/title_screen.c b/src/title_screen.c
index f86a0b0b3..ef0f3a0da 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -64,7 +64,9 @@ static const u32 sTitleScreenCloudsGfx[] = INCBIN_U32("graphics/title_screen/clo
-const u16 gIntroWaterDropAlphaBlend[] =
+// Used to blend "Emerald Version" as it passes over over the Pokémon banner.
+// Also used by the intro to blend the Game Freak name/logo in and out as they appear and disappear
+const u16 gTitleScreenAlphaBlend[64] =
{
BLDALPHA_BLEND(16, 0),
BLDALPHA_BLEND(16, 1),
@@ -103,7 +105,7 @@ const u16 gIntroWaterDropAlphaBlend[] =
static const struct OamData sVersionBannerLeftOamData =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -120,7 +122,7 @@ static const struct OamData sVersionBannerLeftOamData =
static const struct OamData sVersionBannerRightOamData =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -191,7 +193,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_EmeraldVersion[] =
static const struct OamData sOamData_CopyrightBanner =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -303,7 +305,7 @@ static const struct SpritePalette sSpritePalette_PressStart[] =
static const struct OamData sPokemonLogoShineOamData =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.mosaic = 0,
@@ -356,15 +358,15 @@ static void SpriteCB_VersionBannerLeft(struct Sprite *sprite)
if (gTasks[sprite->data[1]].data[1] != 0)
{
sprite->oam.objMode = ST_OAM_OBJ_NORMAL;
- sprite->pos1.y = VERSION_BANNER_Y_GOAL;
+ sprite->y = VERSION_BANNER_Y_GOAL;
}
else
{
- if (sprite->pos1.y != VERSION_BANNER_Y_GOAL)
- sprite->pos1.y++;
+ if (sprite->y != VERSION_BANNER_Y_GOAL)
+ sprite->y++;
if (sprite->data[0] != 0)
sprite->data[0]--;
- SetGpuReg(REG_OFFSET_BLDALPHA, gIntroWaterDropAlphaBlend[sprite->data[0]]);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gTitleScreenAlphaBlend[sprite->data[0]]);
}
}
@@ -373,12 +375,12 @@ static void SpriteCB_VersionBannerRight(struct Sprite *sprite)
if (gTasks[sprite->data[1]].data[1] != 0)
{
sprite->oam.objMode = ST_OAM_OBJ_NORMAL;
- sprite->pos1.y = VERSION_BANNER_Y_GOAL;
+ sprite->y = VERSION_BANNER_Y_GOAL;
}
else
{
- if (sprite->pos1.y != VERSION_BANNER_Y_GOAL)
- sprite->pos1.y++;
+ if (sprite->y != VERSION_BANNER_Y_GOAL)
+ sprite->y++;
}
}
@@ -388,7 +390,7 @@ static void SpriteCB_PressStartCopyrightBanner(struct Sprite *sprite)
{
sprite->data[1]++;
// Alternate between hidden and shown every 16th frame
- if (sprite->data[1] & 0x10)
+ if (sprite->data[1] & 16)
sprite->invisible = FALSE;
else
sprite->invisible = TRUE;
@@ -428,13 +430,13 @@ static void CreateCopyrightBanner(s16 x, s16 y)
static void SpriteCB_PokemonLogoShine(struct Sprite *sprite)
{
- if (sprite->pos1.x < 272)
+ if (sprite->x < DISPLAY_WIDTH + 32)
{
if (sprite->data[0]) // Flash background
{
u16 backgroundColor;
- if (sprite->pos1.x < DISPLAY_WIDTH / 2)
+ if (sprite->x < DISPLAY_WIDTH / 2)
{
// Brighten background color
if (sprite->data[1] < 31)
@@ -452,15 +454,15 @@ static void SpriteCB_PokemonLogoShine(struct Sprite *sprite)
}
backgroundColor = _RGB(sprite->data[1], sprite->data[1], sprite->data[1]);
- if (sprite->pos1.x == DISPLAY_WIDTH / 2 + 12
- || sprite->pos1.x == DISPLAY_WIDTH / 2 + 16
- || sprite->pos1.x == DISPLAY_WIDTH / 2 + 20
- || sprite->pos1.x == DISPLAY_WIDTH / 2 + 24)
+ if (sprite->x == DISPLAY_WIDTH / 2 + 12
+ || sprite->x == DISPLAY_WIDTH / 2 + 16
+ || sprite->x == DISPLAY_WIDTH / 2 + 20
+ || sprite->x == DISPLAY_WIDTH / 2 + 24)
gPlttBufferFaded[0] = RGB(24, 31, 12);
else
gPlttBufferFaded[0] = backgroundColor;
}
- sprite->pos1.x += 4;
+ sprite->x += 4;
}
else
{
@@ -471,8 +473,8 @@ static void SpriteCB_PokemonLogoShine(struct Sprite *sprite)
static void SpriteCB_PokemonLogoShine2(struct Sprite *sprite)
{
- if (sprite->pos1.x < 272)
- sprite->pos1.x += 8;
+ if (sprite->x < DISPLAY_WIDTH + 32)
+ sprite->x += 8;
else
DestroySprite(sprite);
}
@@ -594,11 +596,11 @@ void CB2_InitTitleScreen(void)
SetGpuReg(REG_OFFSET_WIN0V, 0);
SetGpuReg(REG_OFFSET_WIN1H, 0);
SetGpuReg(REG_OFFSET_WIN1V, 0);
- SetGpuReg(REG_OFFSET_WININ, 0x1F1F);
- SetGpuReg(REG_OFFSET_WINOUT, 0x3F1F);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WINOBJ_ALL);
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_LIGHTEN);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
- SetGpuReg(REG_OFFSET_BLDY, 0xC);
+ SetGpuReg(REG_OFFSET_BLDY, 12);
SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(26) | BGCNT_16COLOR | BGCNT_TXT256x256);
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(3) | BGCNT_SCREENBASE(27) | BGCNT_16COLOR | BGCNT_TXT256x256);
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(9) | BGCNT_256COLOR | BGCNT_AFF256x256);
diff --git a/src/trade.c b/src/trade.c
index 0e5110a58..1305b4336 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -52,7 +52,29 @@
#include "constants/songs.h"
#include "constants/union_room.h"
-#define Trade_SendData(ptr) (SendBlock(bitmask_all_link_players_but_self(), ptr->linkData, 20))
+// The following tags are offsets from GFXTAG_MENU_TEXT
+// They're looped over in CB2_CreateTradeMenu and CB2_ReturnToTradeMenu
+// and used as indexes into sMenuTextTileBuffers
+enum {
+ GFXTAG_PLAYER_NAME_L,
+ GFXTAG_PLAYER_NAME_M,
+ GFXTAG_PLAYER_NAME_R,
+ GFXTAG_PARTNER_NAME_L,
+ GFXTAG_PARTNER_NAME_M,
+ GFXTAG_PARTNER_NAME_R,
+ GFXTAG_CANCEL_L,
+ GFXTAG_CANCEL_R,
+ GFXTAG_CHOOSE_PKMN_L,
+ GFXTAG_CHOOSE_PKMN_M,
+ GFXTAG_CHOOSE_PKMN_R,
+ GFXTAG_CHOOSE_PKMN_EMPTY_1, // 6 sprites to cover the full bottom bar, but only first 3 are needed
+ GFXTAG_CHOOSE_PKMN_EMPTY_2,
+ GFXTAG_CHOOSE_PKMN_EMPTY_3,
+ GFXTAG_MENU_TEXT_COUNT
+};
+#define GFXTAG_PLAYER_NAME (1 + GFXTAG_PLAYER_NAME_R - GFXTAG_PLAYER_NAME_L)
+#define GFXTAG_PARTNER_NAME (1 + GFXTAG_PARTNER_NAME_R - GFXTAG_PARTNER_NAME_L)
+#define GFXTAG_CHOOSE_PKMN (1 + GFXTAG_CHOOSE_PKMN_EMPTY_3 - GFXTAG_CHOOSE_PKMN_L)
struct InGameTrade {
/*0x00*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
@@ -70,22 +92,23 @@ struct InGameTrade {
/*0x38*/ u16 requestedSpecies;
};
-static EWRAM_DATA u8 *sMessageBoxAllocBuffer = NULL;
+static EWRAM_DATA u8 *sMenuTextAllocBuffer = NULL;
-// Bytes 0-2 are used for the player's name box
-// Bytes 3-5 are used for the partner's name box
-// Bytes 6-7 are used for the Cancel box
-// Bytes 8-13 are used for the Choose a Pokemon box
-static EWRAM_DATA u8 *sMessageBoxTileBuffers[14] = {NULL};
+// Bytes 0-2 are used for the player's name text
+// Bytes 3-5 are used for the partner's name text
+// Bytes 6-7 are used for the Cancel text
+// Bytes 8-13 are used for the Choose a Pokemon text
+// See the corresponding GFXTAGs in src/data/trade.h
+static EWRAM_DATA u8 *sMenuTextTileBuffers[GFXTAG_MENU_TEXT_COUNT] = {NULL};
EWRAM_DATA struct MailStruct gTradeMail[PARTY_SIZE] = {0};
EWRAM_DATA u8 gSelectedTradeMonPositions[2] = {0};
static EWRAM_DATA struct {
/*0x0000*/ u8 bg2hofs;
/*0x0001*/ u8 bg3hofs;
- /*0x0002*/ u8 filler_2[0x28 - 2];
+ /*0x0002*/ u8 filler_2[38];
/*0x0028*/ u8 partySpriteIds[2][PARTY_SIZE];
- /*0x0034*/ u8 cursorSpriteIdx;
+ /*0x0034*/ u8 cursorSpriteId;
/*0x0035*/ u8 cursorPosition;
/*0x0036*/ u8 partyCounts[2];
/*0x0038*/ bool8 monPresent[PARTY_SIZE * 2];
@@ -94,7 +117,7 @@ static EWRAM_DATA struct {
/*0x0051*/ bool8 isEgg[2][PARTY_SIZE];
/*0x005D*/ u8 hpBarLevels[2][PARTY_SIZE];
/*0x0069*/ u8 bufferPartyState;
- /*0x006A*/ u8 filler_6A[0x6F - 0x6A];
+ /*0x006A*/ u8 filler_6A[5];
/*0x006F*/ u8 tradeMenuFunc;
/*0x0070*/ u8 neverRead_70;
/*0x0071*/ u8 filler_71;
@@ -105,13 +128,13 @@ static EWRAM_DATA struct {
/*0x0079*/ u8 partnerLinkFlagChoseAction;
/*0x007A*/ u8 playerLinkFlagStatus;
/*0x007B*/ u8 partnerLinkFlagStatus;
- /*0x007C*/ u8 filler_7C[0x7E - 0x7C];
+ /*0x007C*/ u8 filler_7C[2];
/*0x007E*/ u8 partnerCursorPosition;
/*0x007F*/ u8 unused_7F;
/*0x0080*/ u16 linkData[20];
/*0x00A8*/ u8 timer;
/*0x00A9*/ u8 giftRibbons[GIFT_RIBBONS_COUNT];
- /*0x00B4*/ u8 filler_B4[0x8D0-0xB4];
+ /*0x00B4*/ u8 filler_B4[0x81C];
/*0x08D0*/ struct {
bool8 queued;
u16 queueDelay;
@@ -119,6 +142,7 @@ static EWRAM_DATA struct {
} queuedActions[4];
/*0x08F0*/ u16 tilemapBuffer[0x400];
} *sTradeMenuData = {NULL};
+
static EWRAM_DATA struct {
/*0x00*/ struct Pokemon mon;
/*0x64*/ u32 timer;
@@ -127,19 +151,19 @@ static EWRAM_DATA struct {
/*0x72*/ u8 playerLinkFlagFinishTrade;
/*0x73*/ u8 partnerLinkFlagFinishTrade;
/*0x74*/ u16 linkData[10];
- /*0x88*/ u8 alwaysZero_88;
- /*0x89*/ u8 alwaysZero_89;
+ /*0x88*/ u8 linkTimeoutZero1;
+ /*0x89*/ u8 linkTimeoutZero2;
/*0x8A*/ u16 linkTimeoutCounter;
/*0x8C*/ u16 neverRead_8C;
- /*0x8E*/ u8 pokePicSpriteIdxs[2];
- /*0x90*/ u8 unk_90; //sprite id
- /*0x91*/ u8 unk_91; //sprite id
- /*0x92*/ u8 unk_92; //sprite id
+ /*0x8E*/ u8 monSpriteIds[2];
+ /*0x90*/ u8 connectionSpriteId1; // Multi-purpose sprite ids used during the transfer sequence
+ /*0x91*/ u8 connectionSpriteId2;
+ /*0x92*/ u8 cableEndSpriteId;
/*0x93*/ u8 sendTradeFinishState;
/*0x94*/ u16 state;
/*0x96*/ u8 filler_96[0xD2 - 0x96];
- /*0xD2*/ u8 pokeballSpriteId;
- /*0xD3*/ u8 unk_D3; //sprite id
+ /*0xD2*/ u8 releasePokeballSpriteId;
+ /*0xD3*/ u8 bouncingPokeballSpriteId;
/*0xD4*/ u16 texX;
/*0xD6*/ u16 texY;
/*0xD8*/ u16 neverRead_D8;
@@ -151,7 +175,7 @@ static EWRAM_DATA struct {
/*0xE4*/ s16 bg2vofs;
/*0xE6*/ s16 bg2hofs;
/*0xE8*/ u16 sXY;
- /*0xEA*/ u16 unk_EA; //sXY divisor
+ /*0xEA*/ u16 gbaScale;
/*0xEC*/ u16 alpha;
/*0xEE*/ bool8 isLinkTrade;
/*0xF0*/ u16 monSpecies[2];
@@ -183,24 +207,24 @@ static void DrawTradeMenuPartyMonInfo(u8, u8, u8, u8, u8, u8);
static void DrawTradeMenuPartyInfo(u8);
static void PrintNicknamesForTradeMenu(void);
static void RedrawTradeMenuParty(u8);
-static void Task_DrawSelectionSummary(u8 taskId);
-static void Task_DrawSelectionTrade(u8 taskId);
+static void Task_DrawSelectionSummary(u8);
+static void Task_DrawSelectionTrade(u8);
static void QueueAction(u16, u8);
static u32 GetNumQueuedActions(void);
static void DoQueuedActions(void);
static void PrintTradeMessage(u8);
static bool8 LoadTradeMenuSpriteSheetsAndPalettes(void);
-static void DrawTextWindowAndBuffer6Bytes(const u8 *, u8 *, u8);
+static void DrawBottomRowText(const u8 *, u8 *, u8);
static void SetTradePartyLiveStatuses(u8);
static void GetTradePartyHPBarLevels(u8);
static void SetTradePartyHPBarSprites(void);
static void SaveTradeGiftRibbons(void);
static u32 CanTradeSelectedMon(struct Pokemon *, int, int);
-static void sub_807AA28(struct Sprite *sprite);
-static void sub_807AA7C(struct Sprite *sprite);
-static void sub_807AABC(struct Sprite *sprite);
-static void sub_807AAE0(struct Sprite *sprite);
-static void sub_807AB04(struct Sprite *sprite);
+static void SpriteCB_LinkMonGlow(struct Sprite *);
+static void SpriteCB_LinkMonShadow(struct Sprite *);
+static void SpriteCB_CableEndSending(struct Sprite *);
+static void SpriteCB_CableEndReceiving(struct Sprite *);
+static void SpriteCB_GbaScreen(struct Sprite *);
static void InitTradeBgInternal(void);
static void CB2_UpdateInGameTrade(void);
static void SetTradeSequenceBgGpuRegs(u8);
@@ -209,12 +233,12 @@ static void BufferTradeSceneStrings(void);
static bool8 AnimateTradeSequence(void);
static bool8 AnimateTradeSequenceCable(void);
static bool8 AnimateTradeSequenceWireless(void);
-static void sub_807E55C(struct Sprite *sprite);
-static void sub_807E5D8(struct Sprite *sprite);
-static void sub_807E64C(struct Sprite *sprite);
-static void sub_807E6AC(struct Sprite *sprite);
+static void SpriteCB_BouncingPokeball(struct Sprite *);
+static void SpriteCB_BouncingPokeballDepart(struct Sprite *);
+static void SpriteCB_BouncingPokeballDepartEnd(struct Sprite *);
+static void SpriteCB_BouncingPokeballArrive(struct Sprite *);
static void BufferInGameTradeMonName(void);
-static void SetInGameTradeMail(struct MailStruct *mail, const struct InGameTrade *trade);
+static void SetInGameTradeMail(struct MailStruct *, const struct InGameTrade *);
static void CB2_UpdateLinkTrade(void);
static void CB2_TryFinishTrade(void);
static void CB2_SaveAndEndTrade(void);
@@ -222,8 +246,8 @@ static void CB2_FreeTradeData(void);
static void Task_InGameTrade(u8);
static void CheckPartnersMonForRibbons(void);
static void Task_AnimateWirelessSignal(u8);
-static void c3_0805465C(u8);
-static void sub_807F39C(u8);
+static void Task_NarrowWindowForCrossing_Wireless(u8);
+static void Task_NarrowWindowForCrossing_Cable(u8);
static void CB2_SaveAndEndWirelessTrade(void);
#include "data/trade.h"
@@ -246,7 +270,7 @@ static void RequestLinkData(u8 type)
SendBlockRequest(type);
}
-static bool32 sub_80771BC(void)
+static bool32 IsLinkTradeTaskFinished(void)
{
if (gPlayerCurrActivity == ACTIVITY_29)
{
@@ -362,12 +386,10 @@ static void CB2_CreateTradeMenu(void)
case 0:
sTradeMenuData = AllocZeroed(sizeof(*sTradeMenuData));
InitTradeMenu();
- sMessageBoxAllocBuffer = AllocZeroed(ARRAY_COUNT(sMessageBoxTileBuffers) * 256);
+ sMenuTextAllocBuffer = AllocZeroed(GFXTAG_MENU_TEXT_COUNT * 256);
- for (i = 0; i < (int)ARRAY_COUNT(sMessageBoxTileBuffers); i++)
- {
- sMessageBoxTileBuffers[i] = &sMessageBoxAllocBuffer[i * 256];
- }
+ for (i = 0; i < GFXTAG_MENU_TEXT_COUNT; i++)
+ sMenuTextTileBuffers[i] = &sMenuTextAllocBuffer[i * 256];
gMain.state++;
break;
@@ -375,9 +397,7 @@ static void CB2_CreateTradeMenu(void)
gPaletteFade.bufferTransferDisabled = FALSE;
for (i = 0; i < PARTY_SIZE; i++)
- {
CreateMon(&gEnemyParty[i], SPECIES_NONE, 0, USE_RANDOM_IVS, FALSE, 0, OT_ID_PLAYER_ID, 0);
- }
PrintTradeMessage(TRADE_MSG_STANDBY);
ShowBg(0);
@@ -508,11 +528,11 @@ static void CB2_CreateTradeMenu(void)
gMain.state++;
break;
case 10:
- DrawTextWindowAndBufferTiles(gSaveBlock2Ptr->playerName, sMessageBoxTileBuffers[0], 0, 0, 3);
+ DrawTextWindowAndBufferTiles(gSaveBlock2Ptr->playerName, sMenuTextTileBuffers[GFXTAG_PLAYER_NAME_L], 0, 0, 3);
id = GetMultiplayerId();
- DrawTextWindowAndBufferTiles(gLinkPlayers[id ^ 1].name, sMessageBoxTileBuffers[3], 0, 0, 3);
- DrawTextWindowAndBufferTiles(sTradeActionTexts[TRADE_TEXT_CANCEL], sMessageBoxTileBuffers[6], 0, 0, 2);
- DrawTextWindowAndBuffer6Bytes(sTradeActionTexts[TRADE_TEXT_CHOOSE_MON], sMessageBoxTileBuffers[8], 24);
+ DrawTextWindowAndBufferTiles(gLinkPlayers[id ^ 1].name, sMenuTextTileBuffers[GFXTAG_PARTNER_NAME_L], 0, 0, 3);
+ DrawTextWindowAndBufferTiles(sTradeActionTexts[TRADE_TEXT_CANCEL], sMenuTextTileBuffers[GFXTAG_CANCEL_L], 0, 0, 2);
+ DrawBottomRowText(sTradeActionTexts[TRADE_TEXT_CHOOSE_MON], sMenuTextTileBuffers[GFXTAG_CHOOSE_PKMN_L], 24);
gMain.state++;
sTradeMenuData->timer = 0;
break;
@@ -521,39 +541,43 @@ static void CB2_CreateTradeMenu(void)
gMain.state++;
break;
case 12:
+ // Create player's name text sprites
xPos = GetStringCenterAlignXOffset(1, gSaveBlock2Ptr->playerName, 120);
- for (i = 0; i < 3; i++)
+ for (i = 0; i < GFXTAG_PLAYER_NAME; i++)
{
- temp = gSpriteTemplate_832DCAC;
- temp.tileTag += i;
+ temp = sSpriteTemplate_MenuText;
+ temp.tileTag += i + GFXTAG_PLAYER_NAME_L;
CreateSprite(&temp, xPos + (i * 32) + 16, 10, 1);
}
+ // Create partner's name text sprites
xPos = GetStringCenterAlignXOffset(1, gLinkPlayers[GetMultiplayerId() ^ 1].name, 120);
- for (i = 0; i < 3; i++)
+ for (i = 0; i < GFXTAG_PARTNER_NAME; i++)
{
- temp = gSpriteTemplate_832DCAC;
- temp.tileTag += i + 3;
+ temp = sSpriteTemplate_MenuText;
+ temp.tileTag += i + GFXTAG_PARTNER_NAME_L;
CreateSprite(&temp, xPos + (i * 32) + 136, 10, 1);
}
gMain.state++;
break;
case 13:
- temp = gSpriteTemplate_832DCAC;
- temp.tileTag += 6;
+ // Create Cancel text sprites
+ temp = sSpriteTemplate_MenuText;
+ temp.tileTag += GFXTAG_CANCEL_L;
CreateSprite(&temp, 215, 152, 1);
- temp = gSpriteTemplate_832DCAC;
- temp.tileTag += 7;
+ temp = sSpriteTemplate_MenuText;
+ temp.tileTag += GFXTAG_CANCEL_R;
CreateSprite(&temp, 247, 152, 1);
- for (i = 0; i < PARTY_SIZE; i++)
+ // Create Choose a Pokémon text sprites (only 3 are needed, other 3 are empty)
+ for (i = 0; i < GFXTAG_CHOOSE_PKMN; i++)
{
- temp = gSpriteTemplate_832DCAC;
- temp.tileTag += i + 8;
+ temp = sSpriteTemplate_MenuText;
+ temp.tileTag += i + GFXTAG_CHOOSE_PKMN_L;
CreateSprite(&temp, (i * 32) + 24, 150, 1);
}
- sTradeMenuData->cursorSpriteIdx = CreateSprite(&gSpriteTemplate_832DC94, sTradeMonSpriteCoords[0][0] * 8 + 32, sTradeMonSpriteCoords[0][1] * 8, 2);
+ sTradeMenuData->cursorSpriteId = CreateSprite(&sSpriteTemplate_Cursor, sTradeMonSpriteCoords[0][0] * 8 + 32, sTradeMonSpriteCoords[0][1] * 8, 2);
sTradeMenuData->cursorPosition = 0;
gMain.state++;
rbox_fill_rectangle(0);
@@ -695,11 +719,11 @@ static void CB2_ReturnToTradeMenu(void)
gMain.state++;
break;
case 10:
- DrawTextWindowAndBufferTiles(gSaveBlock2Ptr->playerName, sMessageBoxTileBuffers[0], 0, 0, 3);
+ DrawTextWindowAndBufferTiles(gSaveBlock2Ptr->playerName, sMenuTextTileBuffers[GFXTAG_PLAYER_NAME_L], 0, 0, 3);
id = GetMultiplayerId();
- DrawTextWindowAndBufferTiles(gLinkPlayers[id ^ 1].name, sMessageBoxTileBuffers[3], 0, 0, 3);
- DrawTextWindowAndBufferTiles(sTradeActionTexts[TRADE_TEXT_CANCEL], sMessageBoxTileBuffers[6], 0, 0, 2);
- DrawTextWindowAndBuffer6Bytes(sTradeActionTexts[TRADE_TEXT_CHOOSE_MON], sMessageBoxTileBuffers[8], 24);
+ DrawTextWindowAndBufferTiles(gLinkPlayers[id ^ 1].name, sMenuTextTileBuffers[GFXTAG_PARTNER_NAME_L], 0, 0, 3);
+ DrawTextWindowAndBufferTiles(sTradeActionTexts[TRADE_TEXT_CANCEL], sMenuTextTileBuffers[GFXTAG_CANCEL_L], 0, 0, 2);
+ DrawBottomRowText(sTradeActionTexts[TRADE_TEXT_CHOOSE_MON], sMenuTextTileBuffers[GFXTAG_CHOOSE_PKMN_L], 24);
gMain.state++;
sTradeMenuData->timer = 0;
break;
@@ -708,35 +732,39 @@ static void CB2_ReturnToTradeMenu(void)
gMain.state++;
break;
case 12:
+ // Create player's name text sprites
xPos = GetStringCenterAlignXOffset(1, gSaveBlock2Ptr->playerName, 120);
- for (i = 0; i < 3; i++)
+ for (i = 0; i < GFXTAG_PLAYER_NAME; i++)
{
- temp = gSpriteTemplate_832DCAC;
- temp.tileTag += i;
+ temp = sSpriteTemplate_MenuText;
+ temp.tileTag += i + GFXTAG_PLAYER_NAME_L;
CreateSprite(&temp, xPos + (i * 32) + 16, 10, 1);
}
+ // Create partner's name text sprites
xPos = GetStringCenterAlignXOffset(1, gLinkPlayers[GetMultiplayerId() ^ 1].name, 120);
- for (i = 0; i < 3; i++)
+ for (i = 0; i < GFXTAG_PARTNER_NAME; i++)
{
- temp = gSpriteTemplate_832DCAC;
- temp.tileTag += i + 3;
+ temp = sSpriteTemplate_MenuText;
+ temp.tileTag += i + GFXTAG_PARTNER_NAME_L;
CreateSprite(&temp, xPos + (i * 32) + 136, 10, 1);
}
gMain.state++;
break;
case 13:
- temp = gSpriteTemplate_832DCAC;
- temp.tileTag += 6;
+ // Create Cancel text sprites
+ temp = sSpriteTemplate_MenuText;
+ temp.tileTag += GFXTAG_CANCEL_L;
CreateSprite(&temp, 215, 152, 1);
- temp = gSpriteTemplate_832DCAC;
- temp.tileTag += 7;
+ temp = sSpriteTemplate_MenuText;
+ temp.tileTag += GFXTAG_CANCEL_R;
CreateSprite(&temp, 247, 152, 1);
- for (i = 0; i < PARTY_SIZE; i++)
+ // Create Choose a Pokémon text sprites
+ for (i = 0; i < GFXTAG_CHOOSE_PKMN; i++)
{
- temp = gSpriteTemplate_832DCAC;
- temp.tileTag += i + 8;
+ temp = sSpriteTemplate_MenuText;
+ temp.tileTag += i + GFXTAG_CHOOSE_PKMN_L;
CreateSprite(&temp, (i * 32) + 24, 150, 1);
}
@@ -745,7 +773,9 @@ static void CB2_ReturnToTradeMenu(void)
else
sTradeMenuData->cursorPosition = gLastViewedMonIndex + PARTY_SIZE;
- sTradeMenuData->cursorSpriteIdx = CreateSprite(&gSpriteTemplate_832DC94, sTradeMonSpriteCoords[sTradeMenuData->cursorPosition][0] * 8 + 32, sTradeMonSpriteCoords[sTradeMenuData->cursorPosition][1] * 8, 2);
+ sTradeMenuData->cursorSpriteId = CreateSprite(&sSpriteTemplate_Cursor,
+ sTradeMonSpriteCoords[sTradeMenuData->cursorPosition][0] * 8 + 32,
+ sTradeMonSpriteCoords[sTradeMenuData->cursorPosition][1] * 8, 2);
gMain.state = 16;
break;
case 16:
@@ -835,7 +865,7 @@ static void SetLinkTradeCallbacks(void)
{
if (IsLinkRfuTaskFinished())
{
- Free(sMessageBoxAllocBuffer);
+ Free(sMenuTextAllocBuffer);
FreeAllWindowBuffers();
Free(sTradeMenuData);
gMain.callback1 = NULL;
@@ -848,7 +878,7 @@ static void SetLinkTradeCallbacks(void)
{
if (!gReceivedRemoteLinkPlayers)
{
- Free(sMessageBoxAllocBuffer);
+ Free(sMenuTextAllocBuffer);
FreeAllWindowBuffers();
Free(sTradeMenuData);
gMain.callback1 = NULL;
@@ -957,12 +987,13 @@ static bool8 BufferTradeParties(void)
switch (sTradeMenuData->bufferPartyState)
{
case 0:
+ // The parties are sent in pairs rather than all at once
Trade_Memcpy(gBlockSendBuffer, &gPlayerParty[0], 2 * sizeof(struct Pokemon));
sTradeMenuData->bufferPartyState++;
sTradeMenuData->timer = 0;
break;
case 1:
- if (sub_80771BC())
+ if (IsLinkTradeTaskFinished())
{
if (_GetBlockReceivedStatus() == 0)
{
@@ -1004,13 +1035,13 @@ static bool8 BufferTradeParties(void)
case 8:
if (_GetBlockReceivedStatus() == 3)
{
- Trade_Memcpy(&gEnemyParty[2], gBlockRecvBuffer[id ^ 1], 200);
+ Trade_Memcpy(&gEnemyParty[2], gBlockRecvBuffer[id ^ 1], 2 * sizeof(struct Pokemon));
TradeResetReceivedFlags();
sTradeMenuData->bufferPartyState++;
}
break;
case 9:
- Trade_Memcpy(gBlockSendBuffer, &gPlayerParty[4], 200);
+ Trade_Memcpy(gBlockSendBuffer, &gPlayerParty[4], 2 * sizeof(struct Pokemon));
sTradeMenuData->bufferPartyState++;
break;
case 11:
@@ -1023,13 +1054,13 @@ static bool8 BufferTradeParties(void)
case 12:
if (_GetBlockReceivedStatus() == 3)
{
- Trade_Memcpy(&gEnemyParty[4], gBlockRecvBuffer[id ^ 1], 200);
+ Trade_Memcpy(&gEnemyParty[4], gBlockRecvBuffer[id ^ 1], 2 * sizeof(struct Pokemon));
TradeResetReceivedFlags();
sTradeMenuData->bufferPartyState++;
}
break;
case 13:
- Trade_Memcpy(gBlockSendBuffer, gSaveBlock1Ptr->mail, 220);
+ Trade_Memcpy(gBlockSendBuffer, gSaveBlock1Ptr->mail, PARTY_SIZE * sizeof(struct MailStruct) + 4);
sTradeMenuData->bufferPartyState++;
break;
case 15:
@@ -1042,13 +1073,13 @@ static bool8 BufferTradeParties(void)
case 16:
if (_GetBlockReceivedStatus() == 3)
{
- Trade_Memcpy(gTradeMail, gBlockRecvBuffer[id ^ 1], 216);
+ Trade_Memcpy(gTradeMail, gBlockRecvBuffer[id ^ 1], PARTY_SIZE * sizeof(struct MailStruct));
TradeResetReceivedFlags();
sTradeMenuData->bufferPartyState++;
}
break;
case 17:
- Trade_Memcpy(gBlockSendBuffer, gSaveBlock1Ptr->giftRibbons, ARRAY_COUNT(sTradeMenuData->giftRibbons));
+ Trade_Memcpy(gBlockSendBuffer, gSaveBlock1Ptr->giftRibbons, sizeof(sTradeMenuData->giftRibbons));
sTradeMenuData->bufferPartyState++;
break;
case 19:
@@ -1061,7 +1092,7 @@ static bool8 BufferTradeParties(void)
case 20:
if (_GetBlockReceivedStatus() == 3)
{
- Trade_Memcpy(sTradeMenuData->giftRibbons, gBlockRecvBuffer[id ^ 1], ARRAY_COUNT(sTradeMenuData->giftRibbons));
+ Trade_Memcpy(sTradeMenuData->giftRibbons, gBlockRecvBuffer[id ^ 1], sizeof(sTradeMenuData->giftRibbons));
TradeResetReceivedFlags();
sTradeMenuData->bufferPartyState++;
}
@@ -1103,9 +1134,9 @@ static bool8 BufferTradeParties(void)
return FALSE;
}
-static void PrintAndBufferIsThisTradeOkay(void)
+static void DrawIsThisTradeOkay(void)
{
- DrawTextWindowAndBuffer6Bytes(sText_IsThisTradeOkay, (void *)(OBJ_VRAM0 + (sTradeMenuData->bottomTextTileStart * 32)), 24);
+ DrawBottomRowText(sText_IsThisTradeOkay, (void *)(OBJ_VRAM0 + (sTradeMenuData->bottomTextTileStart * 32)), 24);
}
// mpId is unused
@@ -1317,15 +1348,15 @@ static void TradeMenuMoveCursor(u8 *cursorPosition, u8 direction)
if (newPosition == (PARTY_SIZE * 2)) // CANCEL
{
- StartSpriteAnim(&gSprites[sTradeMenuData->cursorSpriteIdx], 1);
- gSprites[sTradeMenuData->cursorSpriteIdx].pos1.x = 224;
- gSprites[sTradeMenuData->cursorSpriteIdx].pos1.y = 160;
+ StartSpriteAnim(&gSprites[sTradeMenuData->cursorSpriteId], CURSOR_ANIM_ON_CANCEL);
+ gSprites[sTradeMenuData->cursorSpriteId].x = DISPLAY_WIDTH - 16;
+ gSprites[sTradeMenuData->cursorSpriteId].y = DISPLAY_HEIGHT;
}
else
{
- StartSpriteAnim(&gSprites[sTradeMenuData->cursorSpriteIdx], 0);
- gSprites[sTradeMenuData->cursorSpriteIdx].pos1.x = sTradeMonSpriteCoords[newPosition][0] * 8 + 32;
- gSprites[sTradeMenuData->cursorSpriteIdx].pos1.y = sTradeMonSpriteCoords[newPosition][1] * 8;
+ StartSpriteAnim(&gSprites[sTradeMenuData->cursorSpriteId], CURSOR_ANIM_NORMAL);
+ gSprites[sTradeMenuData->cursorSpriteId].x = sTradeMonSpriteCoords[newPosition][0] * 8 + 32;
+ gSprites[sTradeMenuData->cursorSpriteId].y = sTradeMonSpriteCoords[newPosition][1] * 8;
}
if (*cursorPosition != newPosition)
@@ -1392,7 +1423,7 @@ static void TradeMenuProcessInput(void)
{
CreateYesNoMenu(&sTradeYesNoWindowTemplate, 1, 14, 0);
sTradeMenuData->tradeMenuFunc = TRADEMENUFUNC_CANCEL_TRADE_PROMPT;
- DrawTextWindowAndBuffer6Bytes(sTradeActionTexts[TRADE_TEXT_CANCEL_TRADE], (void *)(OBJ_VRAM0 + sTradeMenuData->bottomTextTileStart * 32), 24);
+ DrawBottomRowText(sTradeActionTexts[TRADE_TEXT_CANCEL_TRADE], (void *)(OBJ_VRAM0 + sTradeMenuData->bottomTextTileStart * 32), 24);
}
}
}
@@ -1401,8 +1432,8 @@ static void TradeMenuChooseMon(void)
{
PrintNicknamesForTradeMenu();
sTradeMenuData->tradeMenuFunc = TRADEMENUFUNC_MAIN_MENU;
- gSprites[sTradeMenuData->cursorSpriteIdx].invisible = FALSE;
- DrawTextWindowAndBuffer6Bytes(sTradeActionTexts[TRADE_TEXT_CHOOSE_MON], (void *)(OBJ_VRAM0 + sTradeMenuData->bottomTextTileStart * 32), 24);
+ gSprites[sTradeMenuData->cursorSpriteId].invisible = FALSE;
+ DrawBottomRowText(sTradeActionTexts[TRADE_TEXT_CHOOSE_MON], (void *)(OBJ_VRAM0 + sTradeMenuData->bottomTextTileStart * 32), 24);
}
static void TradeMenuProcessInput_SelectedMon(void)
@@ -1424,7 +1455,7 @@ static void TradeMenuProcessInput_SelectedMon(void)
{
case CAN_TRADE_MON:
SetReadyToTrade();
- gSprites[sTradeMenuData->cursorSpriteIdx].invisible = TRUE;
+ gSprites[sTradeMenuData->cursorSpriteId].invisible = TRUE;
break;
case CANT_TRADE_LAST_MON:
QueueAction(QUEUE_DELAY_MSG, QUEUE_ONLY_MON2);
@@ -1460,10 +1491,10 @@ static void TradeMenuShowMonSummaryScreen(void)
{
// Player's party
if (sTradeMenuData->cursorPosition < PARTY_SIZE)
- ShowPokemonSummaryScreen(PSS_MODE_LOCK_MOVES, gPlayerParty, sTradeMenuData->cursorPosition, sTradeMenuData->partyCounts[TRADE_PLAYER] - 1, CB2_ReturnToTradeMenu);
+ ShowPokemonSummaryScreen(SUMMARY_MODE_LOCK_MOVES, gPlayerParty, sTradeMenuData->cursorPosition, sTradeMenuData->partyCounts[TRADE_PLAYER] - 1, CB2_ReturnToTradeMenu);
// Partner's party
else
- ShowPokemonSummaryScreen(PSS_MODE_LOCK_MOVES, gEnemyParty, sTradeMenuData->cursorPosition - PARTY_SIZE, sTradeMenuData->partyCounts[TRADE_PARTNER] - 1, CB2_ReturnToTradeMenu);
+ ShowPokemonSummaryScreen(SUMMARY_MODE_LOCK_MOVES, gEnemyParty, sTradeMenuData->cursorPosition - PARTY_SIZE, sTradeMenuData->partyCounts[TRADE_PARTNER] - 1, CB2_ReturnToTradeMenu);
FreeAllWindowBuffers();
}
}
@@ -1514,7 +1545,9 @@ static bool32 CheckMonsBeforeTrade(void)
aliveMons[i] = sTradeMenuData->isLiveMon[TRADE_PLAYER][i];
}
- switch (CheckValidityOfTradeMons(aliveMons, sTradeMenuData->partyCounts[TRADE_PLAYER], sTradeMenuData->cursorPosition, sTradeMenuData->partnerCursorPosition))
+ switch (CheckValidityOfTradeMons(aliveMons, sTradeMenuData->partyCounts[TRADE_PLAYER],
+ sTradeMenuData->cursorPosition,
+ sTradeMenuData->partnerCursorPosition))
{
case PLAYER_MON_INVALID:
QueueAction(QUEUE_DELAY_MSG, QUEUE_ONLY_MON2);
@@ -1547,7 +1580,7 @@ static void ConfirmOrCancelTrade(void)
case 1: // Cancel Trade
case MENU_B_PRESSED:
QueueAction(QUEUE_DELAY_MSG, QUEUE_STANDBY);
- if (sub_80771BC())
+ if (IsLinkTradeTaskFinished())
SetLinkData(LINKCMD_READY_CANCEL_TRADE, 0);
sTradeMenuData->tradeMenuFunc = TRADEMENUFUNC_STANDBY;
PutWindowTilemap(17);
@@ -1555,7 +1588,8 @@ static void ConfirmOrCancelTrade(void)
}
}
-static void sub_807929C(void)
+// Only when choosing Yes to cancel, when No is chosen all are redrawn anyway
+static void RestoreNicknamesCoveredByYesNo(void)
{
int i;
@@ -1573,9 +1607,9 @@ static void CancelTradeYesNo(void)
case 0: // YES, Cancel
PrintTradeMessage(TRADE_MSG_WAITING_FOR_FRIEND);
SetLinkData(LINKCMD_REQUEST_CANCEL, 0);
- gSprites[sTradeMenuData->cursorSpriteIdx].invisible = TRUE;
+ gSprites[sTradeMenuData->cursorSpriteId].invisible = TRUE;
sTradeMenuData->tradeMenuFunc = TRADEMENUFUNC_STANDBY;
- sub_807929C();
+ RestoreNicknamesCoveredByYesNo();
break;
case 1: // NO, Continue
case MENU_B_PRESSED:
@@ -1601,7 +1635,7 @@ static void ConfirmTradePrompt(void)
if (sTradeMenuData->drawPartyState[TRADE_PLAYER] == DRAW_PARTY_FINISH
&& sTradeMenuData->drawPartyState[TRADE_PARTNER] == DRAW_PARTY_FINISH)
{
- PrintAndBufferIsThisTradeOkay();
+ DrawIsThisTradeOkay();
sTradeMenuData->tradeMenuFunc = TRADEMENUFUNC_DELAY_TRADE_CONFIRM;
}
}
@@ -1637,7 +1671,7 @@ static void RedrawTradeMenuAfterPressA(void)
RedrawTradeMenuParty(TRADE_PLAYER);
RedrawTradeMenuParty(TRADE_PARTNER);
sTradeMenuData->tradeMenuFunc = TRADEMENUFUNC_MAIN_MENU;
- gSprites[sTradeMenuData->cursorSpriteIdx].invisible = FALSE;
+ gSprites[sTradeMenuData->cursorSpriteId].invisible = FALSE;
}
}
@@ -1662,9 +1696,9 @@ static void CancelTrade_2(void)
{
if (gWirelessCommType)
{
- if (sub_80771BC() && GetNumQueuedActions() == 0)
+ if (IsLinkTradeTaskFinished() && GetNumQueuedActions() == 0)
{
- Free(sMessageBoxAllocBuffer);
+ Free(sMenuTextAllocBuffer);
Free(sTradeMenuData);
FreeAllWindowBuffers();
DestroyWirelessStatusIndicatorSprite();
@@ -1675,7 +1709,7 @@ static void CancelTrade_2(void)
{
if (!gReceivedRemoteLinkPlayers)
{
- Free(sMessageBoxAllocBuffer);
+ Free(sMenuTextAllocBuffer);
Free(sTradeMenuData);
FreeAllWindowBuffers();
SetMainCallback2(CB2_ReturnToFieldFromMultiplayer);
@@ -1803,7 +1837,8 @@ static void DrawTradeMenuParty(u8 whichParty)
gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]].invisible = FALSE;
gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]].data[0] = 20;
- gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]].data[2] = (sTradeMonSpriteCoords[selectedMonParty * PARTY_SIZE][0] + sTradeMonSpriteCoords[selectedMonParty * PARTY_SIZE + 1][0]) / 2 * 8 + 14;
+ gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]].data[2] = (sTradeMonSpriteCoords[selectedMonParty * PARTY_SIZE][0]
+ + sTradeMonSpriteCoords[selectedMonParty * PARTY_SIZE + 1][0]) / 2 * 8 + 14;
gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]].data[4] = (sTradeMonSpriteCoords[selectedMonParty * PARTY_SIZE][1] * 8) - 12;
StoreSpriteCallbackInData6(&gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]], SpriteCB_MonIcon);
sTradeMenuData->drawPartyState[whichParty]++;
@@ -1822,10 +1857,11 @@ static void DrawTradeMenuParty(u8 whichParty)
case 3:
CopyToBgTilemapBufferRect_ChangePalette(1, sTradeMovesBoxTilemap, selectedMonParty * 15, 0, 15, 17, 0);
CopyBgTilemapBufferToVram(1);
- gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]].pos1.x = (sTradeMonSpriteCoords[selectedMonParty * PARTY_SIZE][0] + sTradeMonSpriteCoords[selectedMonParty * PARTY_SIZE + 1][0]) / 2 * 8 + 14;
- gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]].pos1.y = (sTradeMonSpriteCoords[selectedMonParty * PARTY_SIZE][1] * 8) - 12;
- gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]].pos2.x = 0;
- gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]].pos2.y = 0;
+ gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]].x = (sTradeMonSpriteCoords[selectedMonParty * PARTY_SIZE][0]
+ + sTradeMonSpriteCoords[selectedMonParty * PARTY_SIZE + 1][0]) / 2 * 8 + 14;
+ gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]].y = (sTradeMonSpriteCoords[selectedMonParty * PARTY_SIZE][1] * 8) - 12;
+ gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]].x2 = 0;
+ gSprites[sTradeMenuData->partySpriteIds[0][partyIdx + (selectedMonParty * PARTY_SIZE)]].y2 = 0;
nameStringWidth = GetMonNicknameWidth(nickname, selectedMonParty, partyIdx);
AddTextPrinterParameterized3((whichParty * 2) + 14, 0, (80 - nameStringWidth) / 2, 4, sTradeTextColors, 0, nickname);
BufferTradeMonMoves(movesString, selectedMonParty, partyIdx);
@@ -2014,10 +2050,10 @@ static void ResetTradeMenuPartyPositions(u8 whichParty)
for (i = 0; i < sTradeMenuData->partyCounts[whichParty]; i++)
{
gSprites[sTradeMenuData->partySpriteIds[whichParty][i]].invisible = FALSE;
- gSprites[sTradeMenuData->partySpriteIds[whichParty][i]].pos1.x = sTradeMonSpriteCoords[(whichParty * PARTY_SIZE) + i][0] * 8 + 14;
- gSprites[sTradeMenuData->partySpriteIds[whichParty][i]].pos1.y = sTradeMonSpriteCoords[(whichParty * PARTY_SIZE) + i][1] * 8 - 12;
- gSprites[sTradeMenuData->partySpriteIds[whichParty][i]].pos2.x = 0;
- gSprites[sTradeMenuData->partySpriteIds[whichParty][i]].pos2.y = 0;
+ gSprites[sTradeMenuData->partySpriteIds[whichParty][i]].x = sTradeMonSpriteCoords[(whichParty * PARTY_SIZE) + i][0] * 8 + 14;
+ gSprites[sTradeMenuData->partySpriteIds[whichParty][i]].y = sTradeMonSpriteCoords[(whichParty * PARTY_SIZE) + i][1] * 8 - 12;
+ gSprites[sTradeMenuData->partySpriteIds[whichParty][i]].x2 = 0;
+ gSprites[sTradeMenuData->partySpriteIds[whichParty][i]].y2 = 0;
}
}
@@ -2035,7 +2071,7 @@ static void RedrawTradeMenuParty(u8 whichParty)
DrawTradeMenuPartyInfo(whichParty);
PrintPartyNicknamesForTradeMenu(whichParty);
ResetTradeMenuPartyPositions(whichParty);
- DrawTextWindowAndBuffer6Bytes(sTradeActionTexts[TRADE_TEXT_CHOOSE_MON], (void *)(OBJ_VRAM0 + (sTradeMenuData->bottomTextTileStart * 32)), 24);
+ DrawBottomRowText(sTradeActionTexts[TRADE_TEXT_CHOOSE_MON], (void *)(OBJ_VRAM0 + (sTradeMenuData->bottomTextTileStart * 32)), 24);
sTradeMenuData->drawPartyState[whichParty] = 0;
}
@@ -2139,40 +2175,51 @@ static bool8 LoadTradeMenuSpriteSheetsAndPalettes(void)
{
struct SpriteSheet sheet;
- if (sTradeMenuData->timer < (int)ARRAY_COUNT(sMessageBoxTileBuffers))
+ if (sTradeMenuData->timer < GFXTAG_MENU_TEXT_COUNT)
{
- sheet.data = sMessageBoxTileBuffers[sTradeMenuData->timer];
+ sheet.data = sMenuTextTileBuffers[sTradeMenuData->timer];
sheet.size = 0x100;
- sheet.tag = 200 + sTradeMenuData->timer;
+ sheet.tag = GFXTAG_MENU_TEXT + sTradeMenuData->timer;
}
switch (sTradeMenuData->timer)
{
- case 0 ... 7:
+ case GFXTAG_PLAYER_NAME_L:
+ case GFXTAG_PLAYER_NAME_M:
+ case GFXTAG_PLAYER_NAME_R:
+ case GFXTAG_PARTNER_NAME_L:
+ case GFXTAG_PARTNER_NAME_M:
+ case GFXTAG_PARTNER_NAME_R:
+ case GFXTAG_CANCEL_L:
+ case GFXTAG_CANCEL_R:
LoadSpriteSheet(&sheet);
sTradeMenuData->timer++;
break;
- case 8:
+ case GFXTAG_CHOOSE_PKMN_L:
sTradeMenuData->bottomTextTileStart = LoadSpriteSheet(&sheet);
sTradeMenuData->timer++;
break;
- case 9 ... 13:
+ case GFXTAG_CHOOSE_PKMN_M:
+ case GFXTAG_CHOOSE_PKMN_R:
+ case GFXTAG_CHOOSE_PKMN_EMPTY_1:
+ case GFXTAG_CHOOSE_PKMN_EMPTY_2:
+ case GFXTAG_CHOOSE_PKMN_EMPTY_3:
LoadSpriteSheet(&sheet);
sTradeMenuData->timer++;
break;
- case 14:
+ case GFXTAG_MENU_TEXT_COUNT:
LoadSpritePalette(&gSpritePalette_TradeScreenText);
sTradeMenuData->timer++;
break;
- case 15:
- LoadSpritePalette(&gUnknown_0832DC44);
+ case GFXTAG_MENU_TEXT_COUNT + 1:
+ LoadSpritePalette(&sCursor_SpritePalette);
sTradeMenuData->timer++;
break;
- case 16:
- LoadSpriteSheet(&sTradeButtonsSpriteSheet);
+ case GFXTAG_MENU_TEXT_COUNT + 2:
+ LoadSpriteSheet(&sCursor_SpriteSheet);
sTradeMenuData->timer++;
break;
- case 17:
+ case GFXTAG_MENU_TEXT_COUNT + 3:
sTradeMenuData->timer = 0;
return TRUE;
}
@@ -2180,7 +2227,7 @@ static bool8 LoadTradeMenuSpriteSheetsAndPalettes(void)
return FALSE;
}
-static void DrawTextWindowAndBuffer6Bytes(const u8 *str, u8 *dest, u8 unused)
+static void DrawBottomRowText(const u8 *str, u8 *dest, u8 unused)
{
DrawTextWindowAndBufferTiles(str, dest, 0, 0, 6);
}
@@ -2564,7 +2611,7 @@ int CanSpinTradeMon(struct Pokemon *mon, u16 monIdx)
return CAN_TRADE_MON;
}
-static void sub_807AA28(struct Sprite *sprite)
+static void SpriteCB_LinkMonGlow(struct Sprite *sprite)
{
if (++sprite->data[0] == 10)
{
@@ -2573,7 +2620,7 @@ static void sub_807AA28(struct Sprite *sprite)
}
}
-static void sub_807AA4C(struct Sprite *sprite)
+static void SpriteCB_LinkMonGlowWireless(struct Sprite *sprite)
{
if (!sprite->invisible && ++sprite->data[0] == 10)
{
@@ -2582,36 +2629,38 @@ static void sub_807AA4C(struct Sprite *sprite)
}
}
-static void sub_807AA7C(struct Sprite *sprite)
+static void SpriteCB_LinkMonShadow(struct Sprite *sprite)
{
if (!sprite->data[1])
{
if (++sprite->data[0] == 12)
sprite->data[0] = 0;
- LoadPalette(&gUnknown_08338EA4[sprite->data[0]], (sprite->oam.paletteNum + 16) * 16 + 4, 2);
+ LoadPalette(&sLinkMonShadow_Pal[sprite->data[0]], (sprite->oam.paletteNum + 16) * 16 + 4, 2);
}
}
-static void sub_807AABC(struct Sprite *sprite)
+// Move cable down offscreen
+static void SpriteCB_CableEndSending(struct Sprite *sprite)
{
sprite->data[0]++;
- sprite->pos2.y++;
+ sprite->y2++;
if (sprite->data[0] == 10)
DestroySprite(sprite);
}
-static void sub_807AAE0(struct Sprite *sprite)
+// Move cable up onscreen
+static void SpriteCB_CableEndReceiving(struct Sprite *sprite)
{
sprite->data[0]++;
- sprite->pos2.y--;
+ sprite->y2--;
if (sprite->data[0] == 10)
DestroySprite(sprite);
}
-static void sub_807AB04(struct Sprite *sprite)
+static void SpriteCB_GbaScreen(struct Sprite *sprite)
{
if (++sprite->data[0] == 15)
{
@@ -2665,13 +2714,13 @@ static void VBlankCB_Trade(void)
static void ClearLinkTimeoutCounter(void)
{
sTradeData->linkTimeoutCounter = 0;
- sTradeData->alwaysZero_88 = 0;
- sTradeData->alwaysZero_89 = 0;
+ sTradeData->linkTimeoutZero1 = 0;
+ sTradeData->linkTimeoutZero2 = 0;
}
static void CheckForLinkTimeout(void)
{
- if (sTradeData->alwaysZero_88 == sTradeData->alwaysZero_89)
+ if (sTradeData->linkTimeoutZero1 == sTradeData->linkTimeoutZero2)
sTradeData->linkTimeoutCounter++;
else
sTradeData->linkTimeoutCounter = 0;
@@ -2681,11 +2730,11 @@ static void CheckForLinkTimeout(void)
CloseLink();
SetMainCallback2(CB2_LinkError);
sTradeData->linkTimeoutCounter = 0;
- sTradeData->alwaysZero_89 = 0;
- sTradeData->alwaysZero_88 = 0;
+ sTradeData->linkTimeoutZero2 = 0;
+ sTradeData->linkTimeoutZero1 = 0;
}
- sTradeData->alwaysZero_89 = sTradeData->alwaysZero_88;
+ sTradeData->linkTimeoutZero2 = sTradeData->linkTimeoutZero1;
}
static u32 TradeGetMultiplayerId(void)
@@ -2731,9 +2780,9 @@ static void LoadTradeMonPic(u8 whichParty, u8 state)
break;
case 1:
SetMultiuseSpriteTemplateToPokemon(GetMonSpritePalStruct(mon)->tag, pos);
- sTradeData->pokePicSpriteIdxs[whichParty] = CreateSprite(&gMultiuseSpriteTemplate, 120, 60, 6);
- gSprites[sTradeData->pokePicSpriteIdxs[whichParty]].invisible = TRUE;
- gSprites[sTradeData->pokePicSpriteIdxs[whichParty]].callback = SpriteCallbackDummy;
+ sTradeData->monSpriteIds[whichParty] = CreateSprite(&gMultiuseSpriteTemplate, 120, 60, 6);
+ gSprites[sTradeData->monSpriteIds[whichParty]].invisible = TRUE;
+ gSprites[sTradeData->monSpriteIds[whichParty]].callback = SpriteCallbackDummy;
break;
}
}
@@ -2890,9 +2939,9 @@ static void InitTradeBgInternal(void)
InitBgsFromTemplates(0, sTradeSequenceBgTemplates, ARRAY_COUNT(sTradeSequenceBgTemplates));
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
- SetBgTilemapBuffer(0, Alloc(0x800));
- SetBgTilemapBuffer(1, Alloc(0x800));
- SetBgTilemapBuffer(3, Alloc(0x800));
+ SetBgTilemapBuffer(0, Alloc(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(1, Alloc(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(3, Alloc(BG_SCREEN_SIZE));
DeactivateAllTextPrinters();
DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0);
LZDecompressWram(gBattleTextboxTilemap, gDecompressionBuffer);
@@ -3047,7 +3096,7 @@ static void TrySendTradeFinishData(void)
case 1:
if (IsLinkTaskFinished())
{
- Trade_SendData(sTradeData);
+ SendBlock(bitmask_all_link_players_but_self(), sTradeData->linkData, sizeof(sTradeData->linkData));
sTradeData->sendTradeFinishState++;
}
// fallthrough
@@ -3086,7 +3135,7 @@ static void SetTradeSequenceBgGpuRegs(u8 state)
BGCNT_TXT512x256);
LoadPalette(gTradeGba2_Pal, 16, 0x60);
DmaCopyLarge16(3, gTradeGba_Gfx, (void *) BG_CHAR_ADDR(1), 0x1420, 0x1000);
- DmaCopy16Defvars(3, gUnknown_08331F60, (void *) BG_SCREEN_ADDR(18), 0x1000);
+ DmaCopy16Defvars(3, gTradePlatform_Tilemap, (void *) BG_SCREEN_ADDR(18), 0x1000);
break;
case 1:
sTradeData->bg1hofs = 0;
@@ -3105,11 +3154,11 @@ static void SetTradeSequenceBgGpuRegs(u8 state)
if (sTradeData->isCableTrade)
{
- DmaCopy16Defvars(3, sTradeTilemap_GbaCable, (void *) BG_SCREEN_ADDR(5), 0x1000);
+ DmaCopy16Defvars(3, sGbaCable_Tilemap, (void *) BG_SCREEN_ADDR(5), 0x1000);
}
else
{
- DmaCopy16Defvars(3, sTradeTilemap_GbaWireless, (void *) BG_SCREEN_ADDR(5), 0x1000);
+ DmaCopy16Defvars(3, sGbaWireless_Tilemap, (void *) BG_SCREEN_ADDR(5), 0x1000);
}
DmaCopyLarge16(3, gTradeGba_Gfx, (void *) BG_CHAR_ADDR(0), 0x1420, 0x1000);
@@ -3127,7 +3176,7 @@ static void SetTradeSequenceBgGpuRegs(u8 state)
DISPCNT_OBJ_1D_MAP |
DISPCNT_BG1_ON |
DISPCNT_OBJ_ON);
- LZ77UnCompVram(gUnknown_083379A0, (void *) BG_SCREEN_ADDR(5));
+ LZ77UnCompVram(sCrossingHighlightWireless_Tilemap, (void *) BG_SCREEN_ADDR(5));
BlendPalettes(0x8, 16, RGB_BLACK);
}
else
@@ -3136,14 +3185,14 @@ static void SetTradeSequenceBgGpuRegs(u8 state)
DISPCNT_OBJ_1D_MAP |
DISPCNT_BG1_ON |
DISPCNT_OBJ_ON);
- DmaCopy16Defvars(3, sTradeTilemap_Cable, (void *) BG_SCREEN_ADDR(5), 0x800);
+ DmaCopy16Defvars(3, sCrossingHighlightCable_Tilemap, (void *) BG_SCREEN_ADDR(5), 0x800);
BlendPalettes(0x1, 16, RGB_BLACK);
}
break;
case 3:
- LoadPalette(sTradePal_Black, 48, 0x20);
- LZ77UnCompVram(sTradeGfx_WirelessSignal, (void *) BG_CHAR_ADDR(1));
- LZ77UnCompVram(sTradeTilemap_WirelessSignal, (void *) BG_SCREEN_ADDR(18));
+ LoadPalette(sWirelessSignalNone_Pal, 48, 0x20);
+ LZ77UnCompVram(sWirelessSignal_Gfx, (void *) BG_CHAR_ADDR(1));
+ LZ77UnCompVram(sWirelessSignal_Tilemap, (void *) BG_SCREEN_ADDR(18));
sTradeData->bg2vofs = 80;
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 |
DISPCNT_OBJ_1D_MAP |
@@ -3164,18 +3213,18 @@ static void SetTradeSequenceBgGpuRegs(u8 state)
sTradeData->texX = 64;
sTradeData->texY = 92;
sTradeData->sXY = 32;
- sTradeData->unk_EA = 1024;
+ sTradeData->gbaScale = 1024;
sTradeData->alpha = 0;
- DmaCopyLarge16(3, sTradeAffine_Gba, (void *) BG_CHAR_ADDR(1), 0x2840, 0x1000);
+ DmaCopyLarge16(3, sGbaAffine_Gfx, (void *) BG_CHAR_ADDR(1), 0x2840, 0x1000);
if (sTradeData->isCableTrade)
{
- DmaCopy16Defvars(3, sTradeAffineMap_GbaCable, (void *) BG_SCREEN_ADDR(18), 0x100);
+ DmaCopy16Defvars(3, sGbaCable_AffineTilemap, (void *) BG_SCREEN_ADDR(18), 0x100);
}
else
{
- DmaCopy16Defvars(3, sTradeAffineMap_GbaWireless, (void *) BG_SCREEN_ADDR(18), 0x100);
+ DmaCopy16Defvars(3, sGbaWireless_AffineTilemap, (void *) BG_SCREEN_ADDR(18), 0x100);
}
break;
case 5:
@@ -3195,20 +3244,20 @@ static void SetTradeSequenceBgGpuRegs(u8 state)
sTradeData->texX = 64;
sTradeData->texY = 92;
sTradeData->sXY = 256;
- sTradeData->unk_EA = 128;
+ sTradeData->gbaScale = 128;
sTradeData->scrX = 120;
sTradeData->scrY = 80;
sTradeData->alpha = 0;
- DmaCopyLarge16(3, sTradeAffine_Gba, (void *) BG_CHAR_ADDR(1), 0x2840, 0x1000);
+ DmaCopyLarge16(3, sGbaAffine_Gfx, (void *) BG_CHAR_ADDR(1), 0x2840, 0x1000);
if (sTradeData->isCableTrade)
{
- DmaCopy16Defvars(3, sTradeAffineMap_GbaCable, (void *) BG_SCREEN_ADDR(18), 0x100);
+ DmaCopy16Defvars(3, sGbaCable_AffineTilemap, (void *) BG_SCREEN_ADDR(18), 0x100);
}
else
{
- DmaCopy16Defvars(3, sTradeAffineMap_GbaWireless, (void *) BG_SCREEN_ADDR(18), 0x100);
+ DmaCopy16Defvars(3, sGbaWireless_AffineTilemap, (void *) BG_SCREEN_ADDR(18), 0x100);
}
break;
case 7:
@@ -3222,19 +3271,19 @@ static void SetTradeSequenceBgGpuRegs(u8 state)
BGCNT_TXT512x256);
LoadPalette(gTradeGba2_Pal, 16, 0x60);
DmaCopyLarge16(3, gTradeGba_Gfx, (void *) BG_CHAR_ADDR(1), 0x1420, 0x1000);
- DmaCopy16Defvars(3, gUnknown_08331F60, (void *) BG_SCREEN_ADDR(18), 0x1000);
+ DmaCopy16Defvars(3, gTradePlatform_Tilemap, (void *) BG_SCREEN_ADDR(18), 0x1000);
break;
}
}
static void LoadTradeSequenceSpriteSheetsAndPalettes(void)
{
- LoadSpriteSheet(&sGlow1SpriteSheet);
- LoadSpriteSheet(&sGlow2SpriteSheet);
- LoadSpriteSheet(&sCableEndSpriteSheet);
- LoadSpriteSheet(&sGbaScreenSpriteSheet);
- LoadSpritePalette(&sMiscTradeSpritePalette);
- LoadSpritePalette(&sGbaSpritePalette);
+ LoadSpriteSheet(&sSpriteSheet_LinkMonGlow);
+ LoadSpriteSheet(&sSpriteSheet_LinkMonShadow);
+ LoadSpriteSheet(&sSpriteSheet_CableEnd);
+ LoadSpriteSheet(&sSpriteSheet_GbaScreen);
+ LoadSpritePalette(&sSpritePalette_LinkMon);
+ LoadSpritePalette(&sSpritePalette_Gba);
}
// Buffers "[Pokemon] will be sent to [Trainer]" strings
@@ -3263,7 +3312,7 @@ static void BufferTradeSceneStrings(void)
}
}
-// returns TRUE if it was a link trade, FALSE if it was an in-game trade
+// returns TRUE if it finished a link trade, FALSE if it finished an in-game trade or if sequence is still going
static bool8 AnimateTradeSequence(void)
{
if (sTradeData->isCableTrade)
@@ -3272,71 +3321,146 @@ static bool8 AnimateTradeSequence(void)
return AnimateTradeSequenceWireless();
}
+// Below are the states for the main switch in AnimateTradeSequenceCable and AnimateTradeSequenceWireless
+// When AnimateTradeSequenceWireless has a unique version of a
+// state used by AnimateTradeSequenceCable, it adds the below modifier
+#define TS_WIRELESS_STATE 100
+enum {
+ TS_STATE_START,
+ TS_STATE_MON_SLIDE_IN,
+ // 2-9 unused
+ TS_STATE_SEND_MSG = 10,
+ TS_STATE_BYE_BYE,
+ TS_STATE_POKEBALL_DEPART,
+ TS_STATE_POKEBALL_DEPART_WAIT,
+ TS_STATE_FADE_OUT_TO_GBA_SEND,
+ // 15-19 unused
+ TS_STATE_WAIT_FADE_OUT_TO_GBA_SEND = 20,
+ TS_STATE_FADE_IN_TO_GBA_SEND,
+ TS_STATE_WAIT_FADE_IN_TO_GBA_SEND,
+ TS_STATE_GBA_ZOOM_OUT,
+ TS_STATE_GBA_FLASH_SEND,
+ TS_STATE_GBA_STOP_FLASH_SEND,
+ TS_STATE_PAN_AWAY_GBA,
+ TS_STATE_CREATE_LINK_MON_LEAVING,
+ TS_STATE_LINK_MON_TRAVEL_OUT,
+ TS_STATE_FADE_OUT_TO_CROSSING,
+ TS_STATE_WAIT_FADE_OUT_TO_CROSSING,
+ TS_STATE_FADE_IN_TO_CROSSING,
+ TS_STATE_WAIT_FADE_IN_TO_CROSSING,
+ TS_STATE_CROSSING_LINK_MONS_ENTER,
+ TS_STATE_CROSSING_BLEND_WHITE_1,
+ TS_STATE_CROSSING_BLEND_WHITE_2,
+ TS_STATE_CROSSING_BLEND_WHITE_3,
+ TS_STATE_CROSSING_CREATE_MON_PICS,
+ TS_STATE_CROSSING_MON_PICS_MOVE,
+ TS_STATE_CROSSING_LINK_MONS_EXIT,
+ TS_STATE_CREATE_LINK_MON_ARRIVING,
+ TS_STATE_FADE_OUT_TO_GBA_RECV,
+ TS_STATE_WAIT_FADE_OUT_TO_GBA_RECV,
+ TS_STATE_LINK_MON_TRAVEL_IN,
+ TS_STATE_PAN_TO_GBA,
+ TS_STATE_DESTROY_LINK_MON,
+ TS_STATE_LINK_MON_ARRIVED_DELAY,
+ TS_STATE_MOVE_GBA_TO_CENTER,
+ TS_STATE_GBA_FLASH_RECV,
+ TS_STATE_UNUSED,
+ TS_STATE_GBA_STOP_FLASH_RECV,
+ TS_STATE_GBA_ZOOM_IN,
+ TS_STATE_FADE_OUT_TO_NEW_MON,
+ // 53-59 unused
+ TS_STATE_WAIT_FADE_OUT_TO_NEW_MON = 60,
+ TS_STATE_FADE_IN_TO_NEW_MON,
+ TS_STATE_WAIT_FADE_IN_TO_NEW_MON,
+ TS_STATE_POKEBALL_ARRIVE,
+ TS_STATE_FADE_POKEBALL_TO_NORMAL,
+ TS_STATE_POKEBALL_ARRIVE_WAIT,
+ TS_STATE_SHOW_NEW_MON,
+ TS_STATE_NEW_MON_MSG,
+ TS_STATE_TAKE_CARE_OF_MON,
+ TS_STATE_AFTER_NEW_MON_DELAY,
+ TS_STATE_CHECK_RIBBONS,
+ TS_STATE_END_LINK_TRADE,
+ TS_STATE_TRY_EVOLUTION,
+ TS_STATE_FADE_OUT_END,
+ TS_STATE_WAIT_FADE_OUT_END,
+ // Special states
+ TS_STATE_GBA_FLASH_SEND_WIRELESS = TS_STATE_GBA_FLASH_SEND + TS_WIRELESS_STATE,
+ TS_STATE_GBA_STOP_FLASH_SEND_WIRELESS,
+ TS_STATE_WAIT_WIRELESS_SIGNAL_SEND,
+ TS_STATE_PAN_TO_GBA_WIRELESS = TS_STATE_PAN_TO_GBA + TS_WIRELESS_STATE,
+ TS_STATE_DESTROY_LINK_MON_WIRELESS,
+ TS_STATE_WAIT_WIRELESS_SIGNAL_RECV,
+ TS_STATE_DELAY_FOR_MON_ANIM = 167,
+ TS_STATE_LINK_MON_TRAVEL_OFFSCREEN = 200,
+ TS_STATE_WAIT_FOR_MON_CRY = 267,
+};
+
static bool8 AnimateTradeSequenceCable(void)
{
u16 evoTarget;
switch (sTradeData->state)
{
- case 0:
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].invisible = FALSE;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.x = -180;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.y = gMonFrontPicCoords[sTradeData->monSpecies[TRADE_PLAYER]].y_offset;
+ case TS_STATE_START:
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].invisible = FALSE;
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].x2 = -180;
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].y2 = gMonFrontPicCoords[sTradeData->monSpecies[TRADE_PLAYER]].y_offset;
sTradeData->state++;
sTradeData->cachedMapMusic = GetCurrentMapMusic();
PlayNewMapMusic(MUS_EVOLUTION);
break;
- case 1:
+ case TS_STATE_MON_SLIDE_IN:
if (sTradeData->bg2hofs > 0)
{
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.x += 3;
+ // Sliding
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].x2 += 3;
sTradeData->bg2hofs -= 3;
}
else
{
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.x = 0;
+ // Pokémon has arrived onscreen
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].x2 = 0;
sTradeData->bg2hofs = 0;
- sTradeData->state = 10;
+ sTradeData->state = TS_STATE_SEND_MSG;
}
break;
- case 10:
+ case TS_STATE_SEND_MSG:
StringExpandPlaceholders(gStringVar4, gText_XWillBeSentToY);
DrawTextOnTradeWindow(0, gStringVar4, 0);
if (sTradeData->monSpecies[TRADE_PLAYER] != SPECIES_EGG)
- {
PlayCry1(sTradeData->monSpecies[TRADE_PLAYER], 0);
- }
- sTradeData->state = 11;
+ sTradeData->state = TS_STATE_BYE_BYE;
sTradeData->timer = 0;
break;
- case 11:
+ case TS_STATE_BYE_BYE:
if (++sTradeData->timer == 80)
{
- sTradeData->pokeballSpriteId = CreateTradePokeballSprite(sTradeData->pokePicSpriteIdxs[0], gSprites[sTradeData->pokePicSpriteIdxs[0]].oam.paletteNum, 120, 32, 2, 1, 0x14, 0xfffff);
+ sTradeData->releasePokeballSpriteId = CreateTradePokeballSprite(sTradeData->monSpriteIds[0], gSprites[sTradeData->monSpriteIds[0]].oam.paletteNum, 120, 32, 2, 1, 0x14, 0xfffff);
sTradeData->state++;
StringExpandPlaceholders(gStringVar4, gText_ByeByeVar1);
DrawTextOnTradeWindow(0, gStringVar4, 0);
}
break;
- case 12:
- if (gSprites[sTradeData->pokeballSpriteId].callback == SpriteCallbackDummy)
+ case TS_STATE_POKEBALL_DEPART:
+ if (gSprites[sTradeData->releasePokeballSpriteId].callback == SpriteCallbackDummy)
{
- sTradeData->unk_D3 = CreateSprite(&gSpriteTemplate_8338D28, 120, 32, 0);
- gSprites[sTradeData->unk_D3].callback = sub_807E5D8;
- DestroySprite(&gSprites[sTradeData->pokeballSpriteId]);
+ sTradeData->bouncingPokeballSpriteId = CreateSprite(&sSpriteTemplate_Pokeball, 120, 32, 0);
+ gSprites[sTradeData->bouncingPokeballSpriteId].callback = SpriteCB_BouncingPokeballDepart;
+ DestroySprite(&gSprites[sTradeData->releasePokeballSpriteId]);
sTradeData->state++;
}
break;
- case 13:
+ case TS_STATE_POKEBALL_DEPART_WAIT:
// The game waits here for the sprite to finish its animation sequence.
break;
- case 14:
+ case TS_STATE_FADE_OUT_TO_GBA_SEND:
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
- sTradeData->state = 20;
+ sTradeData->state = TS_STATE_WAIT_FADE_OUT_TO_GBA_SEND;
break;
- case 20:
+ case TS_STATE_WAIT_FADE_OUT_TO_GBA_SEND:
if (!gPaletteFade.active)
{
SetTradeSequenceBgGpuRegs(4);
@@ -3345,42 +3469,40 @@ static bool8 AnimateTradeSequenceCable(void)
sTradeData->state++;
}
break;
- case 21:
+ case TS_STATE_FADE_IN_TO_GBA_SEND:
BeginNormalPaletteFade(PALETTES_ALL, -1, 16, 0, RGB_BLACK);
sTradeData->state++;
break;
- case 22:
+ case TS_STATE_WAIT_FADE_IN_TO_GBA_SEND:
if (!gPaletteFade.active)
- {
- sTradeData->state = 23;
- }
+ sTradeData->state = TS_STATE_GBA_ZOOM_OUT;
break;
- case 23:
- if (sTradeData->unk_EA > 0x100)
+ case TS_STATE_GBA_ZOOM_OUT:
+ if (sTradeData->gbaScale > 0x100)
{
- sTradeData->unk_EA -= 0x34;
+ sTradeData->gbaScale -= 0x34;
}
else
{
SetTradeSequenceBgGpuRegs(1);
- sTradeData->unk_EA = 0x80;
+ sTradeData->gbaScale = 0x80;
sTradeData->state++;
sTradeData->timer = 0;
}
- sTradeData->sXY = 0x8000 / sTradeData->unk_EA;
+ sTradeData->sXY = 0x8000 / sTradeData->gbaScale;
break;
- case 24:
+ case TS_STATE_GBA_FLASH_SEND:
if (++sTradeData->timer > 20)
{
SetTradeBGAffine();
- sTradeData->unk_91 = CreateSprite(&gSpriteTemplate_8338E74, 120, 80, 0);
+ sTradeData->connectionSpriteId2 = CreateSprite(&sSpriteTemplate_GbaScreenFlash_Long, 120, 80, 0);
sTradeData->state++;
}
break;
- case 25:
- if (gSprites[sTradeData->unk_91].animEnded)
+ case TS_STATE_GBA_STOP_FLASH_SEND:
+ if (gSprites[sTradeData->connectionSpriteId2].animEnded)
{
- DestroySprite(&gSprites[sTradeData->unk_91]);
+ DestroySprite(&gSprites[sTradeData->connectionSpriteId2]);
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND |
BLDCNT_TGT2_BG1 |
BLDCNT_TGT2_BG2);
@@ -3388,192 +3510,183 @@ static bool8 AnimateTradeSequenceCable(void)
sTradeData->state++;
}
break;
- case 26:
+ case TS_STATE_PAN_AWAY_GBA:
if (--sTradeData->bg1vofs == 316)
- {
sTradeData->state++;
- }
+
if (sTradeData->bg1vofs == 328)
- {
- sTradeData->unk_92 = CreateSprite(&gSpriteTemplate_8338DFC, 128, 65, 0);
- }
+ sTradeData->cableEndSpriteId = CreateSprite(&sSpriteTemplate_CableEnd, 128, 65, 0);
break;
- case 27:
- sTradeData->unk_90 = CreateSprite(&gUnknown_08338D88, 128, 80, 3);
- sTradeData->unk_91 = CreateSprite(&sGlowBallSpriteTemplate, 128, 80, 0);
- StartSpriteAnim(&gSprites[sTradeData->unk_91], 1);
+ case TS_STATE_CREATE_LINK_MON_LEAVING:
+ sTradeData->connectionSpriteId1 = CreateSprite(&sSpriteTemplate_LinkMonGlow, 128, 80, 3);
+ sTradeData->connectionSpriteId2 = CreateSprite(&sSpriteTemplate_LinkMonShadow, 128, 80, 0);
+ StartSpriteAnim(&gSprites[sTradeData->connectionSpriteId2], ANIM_LINKMON_SMALL);
sTradeData->state++;
break;
- case 28:
+ case TS_STATE_LINK_MON_TRAVEL_OUT:
if ((sTradeData->bg1vofs -= 2) == 166)
- {
- sTradeData->state = 200;
- }
+ sTradeData->state = TS_STATE_LINK_MON_TRAVEL_OFFSCREEN;
+
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 |
DISPCNT_OBJ_1D_MAP |
DISPCNT_BG1_ON |
DISPCNT_OBJ_ON);
break;
- case 200:
- gSprites[sTradeData->unk_90].pos1.y -= 2;
- gSprites[sTradeData->unk_91].pos1.y -= 2;
- if (gSprites[sTradeData->unk_90].pos1.y < -8)
- {
- sTradeData->state = 29;
- }
+ case TS_STATE_LINK_MON_TRAVEL_OFFSCREEN:
+ gSprites[sTradeData->connectionSpriteId1].y -= 2;
+ gSprites[sTradeData->connectionSpriteId2].y -= 2;
+ if (gSprites[sTradeData->connectionSpriteId1].y < -8)
+ sTradeData->state = TS_STATE_FADE_OUT_TO_CROSSING;
break;
- case 29:
+ case TS_STATE_FADE_OUT_TO_CROSSING:
BeginNormalPaletteFade(PALETTES_ALL, -1, 0, 16, RGB_BLACK);
- sTradeData->state = 30;
+ sTradeData->state = TS_STATE_WAIT_FADE_OUT_TO_CROSSING;
break;
- case 30:
+ case TS_STATE_WAIT_FADE_OUT_TO_CROSSING:
if (!gPaletteFade.active)
{
- DestroySprite(&gSprites[sTradeData->unk_90]);
- DestroySprite(&gSprites[sTradeData->unk_91]);
+ DestroySprite(&gSprites[sTradeData->connectionSpriteId1]);
+ DestroySprite(&gSprites[sTradeData->connectionSpriteId2]);
SetTradeSequenceBgGpuRegs(2);
sTradeData->state++;
}
break;
- case 31:
+ case TS_STATE_FADE_IN_TO_CROSSING:
BeginNormalPaletteFade(PALETTES_ALL, -1, 16, 0, RGB_BLACK);
- sTradeData->unk_90 = CreateSprite(&sGlowBallSpriteTemplate, 111, 170, 0);
- sTradeData->unk_91 = CreateSprite(&sGlowBallSpriteTemplate, 129, -10, 0);
+ sTradeData->connectionSpriteId1 = CreateSprite(&sSpriteTemplate_LinkMonShadow, 111, 170, 0);
+ sTradeData->connectionSpriteId2 = CreateSprite(&sSpriteTemplate_LinkMonShadow, 129, -10, 0);
sTradeData->state++;
break;
- case 32:
+ case TS_STATE_WAIT_FADE_IN_TO_CROSSING:
if (!gPaletteFade.active)
{
PlaySE(SE_WARP_OUT);
sTradeData->state++;
}
- gSprites[sTradeData->unk_90].pos2.y -= 3;
- gSprites[sTradeData->unk_91].pos2.y += 3;
+ gSprites[sTradeData->connectionSpriteId1].y2 -= 3;
+ gSprites[sTradeData->connectionSpriteId2].y2 += 3;
break;
- case 33:
- gSprites[sTradeData->unk_90].pos2.y -= 3;
- gSprites[sTradeData->unk_91].pos2.y += 3;
- if (gSprites[sTradeData->unk_90].pos2.y <= -90)
+ case TS_STATE_CROSSING_LINK_MONS_ENTER:
+ gSprites[sTradeData->connectionSpriteId1].y2 -= 3;
+ gSprites[sTradeData->connectionSpriteId2].y2 += 3;
+ if (gSprites[sTradeData->connectionSpriteId1].y2 <= -90)
{
- gSprites[sTradeData->unk_90].data[1] = 1;
- gSprites[sTradeData->unk_91].data[1] = 1;
+ gSprites[sTradeData->connectionSpriteId1].data[1] = 1;
+ gSprites[sTradeData->connectionSpriteId2].data[1] = 1;
sTradeData->state++;
}
break;
- case 34:
+ case TS_STATE_CROSSING_BLEND_WHITE_1:
BlendPalettes(0x1, 16, RGB_WHITEALPHA);
sTradeData->state++;
break;
- case 35:
+ case TS_STATE_CROSSING_BLEND_WHITE_2:
BlendPalettes(0x1, 0, RGB_WHITEALPHA);
sTradeData->state++;
break;
- case 36:
+ case TS_STATE_CROSSING_BLEND_WHITE_3:
BlendPalettes(0x1, 16, RGB_WHITEALPHA);
sTradeData->state++;
break;
- case 37:
+ case TS_STATE_CROSSING_CREATE_MON_PICS:
if (!IsMonSpriteNotFlipped(sTradeData->monSpecies[TRADE_PLAYER]))
{
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].affineAnims = gSpriteAffineAnimTable_8338ECC;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
- CalcCenterToCornerVec(&gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]], SPRITE_SHAPE(64x64), SPRITE_SIZE(64x64), ST_OAM_AFFINE_DOUBLE);
- StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]], 0);
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].affineAnims = sAffineAnims_CrossingMonPics;
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
+ CalcCenterToCornerVec(&gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]], SPRITE_SHAPE(64x64), SPRITE_SIZE(64x64), ST_OAM_AFFINE_DOUBLE);
+ StartSpriteAffineAnim(&gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]], 0);
}
else
{
- StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]], 0);
+ StartSpriteAffineAnim(&gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]], 0);
}
- StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]], 0);
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos1.x = 60;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].pos1.x = 180;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos1.y = 192;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].pos1.y = -32;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].invisible = FALSE;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].invisible = FALSE;
+ StartSpriteAffineAnim(&gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]], 0);
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].x = 60;
+ gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].x = 180;
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].y = 192;
+ gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].y = -32;
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].invisible = FALSE;
+ gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].invisible = FALSE;
sTradeData->state++;
break;
- case 38:
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.y -= 3;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].pos2.y += 3;
- if (gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.y < -160 && gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.y >= -163)
+ case TS_STATE_CROSSING_MON_PICS_MOVE:
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].y2 -= 3;
+ gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].y2 += 3;
+ if (gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].y2 < -DISPLAY_HEIGHT
+ && gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].y2 >= -DISPLAY_HEIGHT - 3)
{
PlaySE(SE_WARP_IN);
}
- if (gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.y < -222)
+ if (gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].y2 < -222)
{
- gSprites[sTradeData->unk_90].data[1] = 0;
- gSprites[sTradeData->unk_91].data[1] = 0;
+ gSprites[sTradeData->connectionSpriteId1].data[1] = 0;
+ gSprites[sTradeData->connectionSpriteId2].data[1] = 0;
sTradeData->state++;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].invisible = TRUE;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].invisible = TRUE;
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].invisible = TRUE;
+ gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].invisible = TRUE;
BlendPalettes(0x1, 0, RGB_WHITEALPHA);
}
break;
- case 39:
- gSprites[sTradeData->unk_90].pos2.y -= 3;
- gSprites[sTradeData->unk_91].pos2.y += 3;
- if (gSprites[sTradeData->unk_90].pos2.y <= -222)
+ case TS_STATE_CROSSING_LINK_MONS_EXIT:
+ gSprites[sTradeData->connectionSpriteId1].y2 -= 3;
+ gSprites[sTradeData->connectionSpriteId2].y2 += 3;
+ if (gSprites[sTradeData->connectionSpriteId1].y2 <= -222)
{
BeginNormalPaletteFade(PALETTES_ALL, -1, 0, 16, RGB_BLACK);
sTradeData->state++;
- DestroySprite(&gSprites[sTradeData->unk_90]);
- DestroySprite(&gSprites[sTradeData->unk_91]);
+ DestroySprite(&gSprites[sTradeData->connectionSpriteId1]);
+ DestroySprite(&gSprites[sTradeData->connectionSpriteId2]);
}
break;
- case 40:
+ case TS_STATE_CREATE_LINK_MON_ARRIVING:
if (!gPaletteFade.active)
{
sTradeData->state++;
SetTradeSequenceBgGpuRegs(1);
sTradeData->bg1vofs = 166;
- sTradeData->unk_90 = CreateSprite(&gUnknown_08338D88, 128, -20, 3);
- sTradeData->unk_91 = CreateSprite(&sGlowBallSpriteTemplate, 128, -20, 0);
- StartSpriteAnim(&gSprites[sTradeData->unk_91], 1);
+ sTradeData->connectionSpriteId1 = CreateSprite(&sSpriteTemplate_LinkMonGlow, 128, -20, 3);
+ sTradeData->connectionSpriteId2 = CreateSprite(&sSpriteTemplate_LinkMonShadow, 128, -20, 0);
+ StartSpriteAnim(&gSprites[sTradeData->connectionSpriteId2], ANIM_LINKMON_SMALL);
}
break;
- case 41:
+ case TS_STATE_FADE_OUT_TO_GBA_RECV:
BeginNormalPaletteFade(PALETTES_ALL, -1, 16, 0, RGB_BLACK);
sTradeData->state++;
break;
- case 42:
+ case TS_STATE_WAIT_FADE_OUT_TO_GBA_RECV:
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 |
DISPCNT_OBJ_1D_MAP |
DISPCNT_BG1_ON |
DISPCNT_OBJ_ON);
if (!gPaletteFade.active)
- {
sTradeData->state++;
- }
break;
- case 43:
- gSprites[sTradeData->unk_90].pos2.y += 3;
- gSprites[sTradeData->unk_91].pos2.y += 3;
- if (gSprites[sTradeData->unk_90].pos2.y + gSprites[sTradeData->unk_90].pos1.y == 64)
+ case TS_STATE_LINK_MON_TRAVEL_IN:
+ gSprites[sTradeData->connectionSpriteId1].y2 += 3;
+ gSprites[sTradeData->connectionSpriteId2].y2 += 3;
+ if (gSprites[sTradeData->connectionSpriteId1].y2 + gSprites[sTradeData->connectionSpriteId1].y == 64)
{
sTradeData->state++;
}
break;
- case 44:
+ case TS_STATE_PAN_TO_GBA:
if ((sTradeData->bg1vofs += 2) > 316)
{
sTradeData->bg1vofs = 316;
sTradeData->state++;
}
break;
- case 45:
- DestroySprite(&gSprites[sTradeData->unk_90]);
- DestroySprite(&gSprites[sTradeData->unk_91]);
+ case TS_STATE_DESTROY_LINK_MON:
+ DestroySprite(&gSprites[sTradeData->connectionSpriteId1]);
+ DestroySprite(&gSprites[sTradeData->connectionSpriteId2]);
sTradeData->state++;
sTradeData->timer = 0;
break;
- case 46:
+ case TS_STATE_LINK_MON_ARRIVED_DELAY:
if (++sTradeData->timer == 10)
- {
sTradeData->state++;
- }
break;
- case 47:
+ case TS_STATE_MOVE_GBA_TO_CENTER:
if (++sTradeData->bg1vofs > 348)
{
sTradeData->bg1vofs = 348;
@@ -3581,41 +3694,41 @@ static bool8 AnimateTradeSequenceCable(void)
}
if (sTradeData->bg1vofs == 328 && sTradeData->isCableTrade)
{
- sTradeData->unk_92 = CreateSprite(&gSpriteTemplate_8338DFC, 128, 65, 0);
- gSprites[sTradeData->unk_92].callback = sub_807AAE0;
+ sTradeData->cableEndSpriteId = CreateSprite(&sSpriteTemplate_CableEnd, 128, 65, 0);
+ gSprites[sTradeData->cableEndSpriteId].callback = SpriteCB_CableEndReceiving;
}
break;
- case 48:
- sTradeData->unk_91 = CreateSprite(&gSpriteTemplate_8338E74, 120, 80, 0);
- sTradeData->state = 50;
+ case TS_STATE_GBA_FLASH_RECV:
+ sTradeData->connectionSpriteId2 = CreateSprite(&sSpriteTemplate_GbaScreenFlash_Long, 120, 80, 0);
+ sTradeData->state = TS_STATE_GBA_STOP_FLASH_RECV;
break;
- case 50:
- if (gSprites[sTradeData->unk_91].animEnded)
+ case TS_STATE_GBA_STOP_FLASH_RECV:
+ if (gSprites[sTradeData->connectionSpriteId2].animEnded)
{
- DestroySprite(&gSprites[sTradeData->unk_91]);
+ DestroySprite(&gSprites[sTradeData->connectionSpriteId2]);
SetTradeSequenceBgGpuRegs(6);
sTradeData->state++;
PlaySE(SE_M_SAND_ATTACK);
}
break;
- case 51:
- if (sTradeData->unk_EA < 0x400)
+ case TS_STATE_GBA_ZOOM_IN:
+ if (sTradeData->gbaScale < 0x400)
{
- sTradeData->unk_EA += 0x34;
+ sTradeData->gbaScale += 0x34;
}
else
{
- sTradeData->unk_EA = 0x400;
+ sTradeData->gbaScale = 0x400;
sTradeData->state++;
}
- sTradeData->sXY = 0x8000 / sTradeData->unk_EA;
+ sTradeData->sXY = 0x8000 / sTradeData->gbaScale;
break;
- case 52:
+ case TS_STATE_FADE_OUT_TO_NEW_MON:
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
- sTradeData->state = 60;
+ sTradeData->state = TS_STATE_WAIT_FADE_OUT_TO_NEW_MON;
break;
- case 60:
+ case TS_STATE_WAIT_FADE_OUT_TO_NEW_MON:
if (!gPaletteFade.active)
{
SetTradeSequenceBgGpuRegs(5);
@@ -3624,54 +3737,52 @@ static bool8 AnimateTradeSequenceCable(void)
sTradeData->state++;
}
break;
- case 61:
+ case TS_STATE_FADE_IN_TO_NEW_MON:
gPaletteFade.bufferTransferDisabled = FALSE;
BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK);
sTradeData->state++;
break;
- case 62:
+ case TS_STATE_WAIT_FADE_IN_TO_NEW_MON:
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 |
DISPCNT_OBJ_1D_MAP |
DISPCNT_BG2_ON |
DISPCNT_OBJ_ON);
if (!gPaletteFade.active)
- {
sTradeData->state++;
- }
break;
- case 63:
- sTradeData->unk_D3 = CreateSprite(&gSpriteTemplate_8338D28, 120, -8, 0);
- gSprites[sTradeData->unk_D3].data[3] = 74;
- gSprites[sTradeData->unk_D3].callback = sub_807E6AC;
- StartSpriteAnim(&gSprites[sTradeData->unk_D3], 1);
- StartSpriteAffineAnim(&gSprites[sTradeData->unk_D3], 2);
- BlendPalettes(1 << (16 + gSprites[sTradeData->unk_D3].oam.paletteNum), 16, RGB_WHITEALPHA);
+ case TS_STATE_POKEBALL_ARRIVE:
+ sTradeData->bouncingPokeballSpriteId = CreateSprite(&sSpriteTemplate_Pokeball, 120, -8, 0);
+ gSprites[sTradeData->bouncingPokeballSpriteId].data[3] = 74;
+ gSprites[sTradeData->bouncingPokeballSpriteId].callback = SpriteCB_BouncingPokeballArrive;
+ StartSpriteAnim(&gSprites[sTradeData->bouncingPokeballSpriteId], 1);
+ StartSpriteAffineAnim(&gSprites[sTradeData->bouncingPokeballSpriteId], 2);
+ BlendPalettes(1 << (16 + gSprites[sTradeData->bouncingPokeballSpriteId].oam.paletteNum), 16, RGB_WHITEALPHA);
sTradeData->state++;
sTradeData->timer = 0;
break;
- case 64:
- BeginNormalPaletteFade(1 << (16 + gSprites[sTradeData->unk_D3].oam.paletteNum), 1, 16, 0, RGB_WHITEALPHA);
+ case TS_STATE_FADE_POKEBALL_TO_NORMAL:
+ BeginNormalPaletteFade(1 << (16 + gSprites[sTradeData->bouncingPokeballSpriteId].oam.paletteNum), 1, 16, 0, RGB_WHITEALPHA);
sTradeData->state++;
break;
- case 65:
- if (gSprites[sTradeData->unk_D3].callback == SpriteCallbackDummy)
+ case TS_STATE_POKEBALL_ARRIVE_WAIT:
+ if (gSprites[sTradeData->bouncingPokeballSpriteId].callback == SpriteCallbackDummy)
{
HandleLoadSpecialPokePic_2(&gMonFrontPicTable[sTradeData->monSpecies[TRADE_PARTNER]], gMonSpritesGfxPtr->sprites.ptr[3], sTradeData->monSpecies[TRADE_PARTNER], sTradeData->monPersonalities[TRADE_PARTNER]);
sTradeData->state++;
}
break;
- case 66:
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].pos1.x = 120;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].pos1.y = gMonFrontPicCoords[sTradeData->monSpecies[TRADE_PARTNER]].y_offset + 60;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].pos2.x = 0;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].pos2.y = 0;
- StartSpriteAnim(&gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]], 0);
- CreatePokeballSpriteToReleaseMon(sTradeData->pokePicSpriteIdxs[TRADE_PARTNER], gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].oam.paletteNum, 120, 84, 2, 1, 20, 0xFFFFF, sTradeData->monSpecies[TRADE_PARTNER]);
- FreeSpriteOamMatrix(&gSprites[sTradeData->unk_D3]);
- DestroySprite(&gSprites[sTradeData->unk_D3]);
+ case TS_STATE_SHOW_NEW_MON:
+ gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].x = 120;
+ gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].y = gMonFrontPicCoords[sTradeData->monSpecies[TRADE_PARTNER]].y_offset + 60;
+ gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].x2 = 0;
+ gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].y2 = 0;
+ StartSpriteAnim(&gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]], 0);
+ CreatePokeballSpriteToReleaseMon(sTradeData->monSpriteIds[TRADE_PARTNER], gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].oam.paletteNum, 120, 84, 2, 1, 20, 0xFFFFF, sTradeData->monSpecies[TRADE_PARTNER]);
+ FreeSpriteOamMatrix(&gSprites[sTradeData->bouncingPokeballSpriteId]);
+ DestroySprite(&gSprites[sTradeData->bouncingPokeballSpriteId]);
sTradeData->state++;
break;
- case 67:
+ case TS_STATE_NEW_MON_MSG:
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 |
DISPCNT_OBJ_1D_MAP |
DISPCNT_BG0_ON |
@@ -3679,28 +3790,24 @@ static bool8 AnimateTradeSequenceCable(void)
DISPCNT_OBJ_ON);
StringExpandPlaceholders(gStringVar4, gText_XSentOverY);
DrawTextOnTradeWindow(0, gStringVar4, 0);
- sTradeData->state = 167;
+ sTradeData->state = TS_STATE_DELAY_FOR_MON_ANIM;
sTradeData->timer = 0;
break;
- // 167 and 267 are extra cases added in for animations
- case 167:
+ case TS_STATE_DELAY_FOR_MON_ANIM:
if (++sTradeData->timer > 60)
{
- sTradeData->state = 267;
+ sTradeData->state = TS_STATE_WAIT_FOR_MON_CRY;
sTradeData->timer = 0;
}
break;
- case 267:
+ case TS_STATE_WAIT_FOR_MON_CRY:
if (IsCryFinished())
- {
- sTradeData->state = 68;
- }
+ sTradeData->state = TS_STATE_TAKE_CARE_OF_MON;
break;
- case 68:
+ case TS_STATE_TAKE_CARE_OF_MON:
if (++sTradeData->timer == 10)
- {
PlayFanfare(MUS_EVOLVED);
- }
+
if (sTradeData->timer == 250)
{
sTradeData->state++;
@@ -3709,17 +3816,15 @@ static bool8 AnimateTradeSequenceCable(void)
sTradeData->timer = 0;
}
break;
- case 69:
+ case TS_STATE_AFTER_NEW_MON_DELAY:
if (++sTradeData->timer == 60)
- {
sTradeData->state++;
- }
break;
- case 70:
+ case TS_STATE_CHECK_RIBBONS:
CheckPartnersMonForRibbons();
sTradeData->state++;
break;
- case 71:
+ case TS_STATE_END_LINK_TRADE:
if (sTradeData->isLinkTrade)
{
return TRUE;
@@ -3729,21 +3834,21 @@ static bool8 AnimateTradeSequenceCable(void)
sTradeData->state++;
}
break;
- case 72: // Only if in-game trade
+ case TS_STATE_TRY_EVOLUTION: // Only if in-game trade, link trades use CB2_TryLinkTradeEvolution
TradeMons(gSpecialVar_0x8005, 0);
gCB2_AfterEvolution = CB2_UpdateInGameTrade;
evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], EVO_MODE_TRADE, ITEM_NONE);
if (evoTarget != SPECIES_NONE)
{
- TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], evoTarget, sTradeData->pokePicSpriteIdxs[TRADE_PARTNER], gSelectedTradeMonPositions[TRADE_PLAYER]);
+ TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], evoTarget, sTradeData->monSpriteIds[TRADE_PARTNER], gSelectedTradeMonPositions[TRADE_PLAYER]);
}
sTradeData->state++;
break;
- case 73:
+ case TS_STATE_FADE_OUT_END:
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
sTradeData->state++;
break;
- case 74:
+ case TS_STATE_WAIT_FADE_OUT_END:
if (!gPaletteFade.active)
{
PlayNewMapMusic(sTradeData->cachedMapMusic);
@@ -3770,65 +3875,63 @@ static bool8 AnimateTradeSequenceWireless(void)
switch (sTradeData->state)
{
- case 0:
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].invisible = FALSE;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.x = -180;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.y = gMonFrontPicCoords[sTradeData->monSpecies[TRADE_PLAYER]].y_offset;
+ case TS_STATE_START:
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].invisible = FALSE;
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].x2 = -180;
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].y2 = gMonFrontPicCoords[sTradeData->monSpecies[TRADE_PLAYER]].y_offset;
sTradeData->state++;
sTradeData->cachedMapMusic = GetCurrentMapMusic();
PlayNewMapMusic(MUS_EVOLUTION);
break;
- case 1:
+ case TS_STATE_MON_SLIDE_IN:
if (sTradeData->bg2hofs > 0)
{
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.x += 3;
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].x2 += 3;
sTradeData->bg2hofs -= 3;
}
else
{
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.x = 0;
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].x2 = 0;
sTradeData->bg2hofs = 0;
- sTradeData->state = 10;
+ sTradeData->state = TS_STATE_SEND_MSG;
}
break;
- case 10:
+ case TS_STATE_SEND_MSG:
StringExpandPlaceholders(gStringVar4, gText_XWillBeSentToY);
DrawTextOnTradeWindow(0, gStringVar4, 0);
if (sTradeData->monSpecies[TRADE_PLAYER] != SPECIES_EGG)
- {
PlayCry1(sTradeData->monSpecies[TRADE_PLAYER], 0);
- }
- sTradeData->state = 11;
+ sTradeData->state = TS_STATE_BYE_BYE;
sTradeData->timer = 0;
break;
- case 11:
+ case TS_STATE_BYE_BYE:
if (++sTradeData->timer == 80)
{
- sTradeData->pokeballSpriteId = CreateTradePokeballSprite(sTradeData->pokePicSpriteIdxs[0], gSprites[sTradeData->pokePicSpriteIdxs[0]].oam.paletteNum, 120, 32, 2, 1, 0x14, 0xfffff);
+ sTradeData->releasePokeballSpriteId = CreateTradePokeballSprite(sTradeData->monSpriteIds[0], gSprites[sTradeData->monSpriteIds[0]].oam.paletteNum, 120, 32, 2, 1, 0x14, 0xfffff);
sTradeData->state++;
StringExpandPlaceholders(gStringVar4, gText_ByeByeVar1);
DrawTextOnTradeWindow(0, gStringVar4, 0);
}
break;
- case 12:
- if (gSprites[sTradeData->pokeballSpriteId].callback == SpriteCallbackDummy)
+ case TS_STATE_POKEBALL_DEPART:
+ if (gSprites[sTradeData->releasePokeballSpriteId].callback == SpriteCallbackDummy)
{
- sTradeData->unk_D3 = CreateSprite(&gSpriteTemplate_8338D28, 120, 32, 0);
- gSprites[sTradeData->unk_D3].callback = sub_807E5D8;
- DestroySprite(&gSprites[sTradeData->pokeballSpriteId]);
+ sTradeData->bouncingPokeballSpriteId = CreateSprite(&sSpriteTemplate_Pokeball, 120, 32, 0);
+ gSprites[sTradeData->bouncingPokeballSpriteId].callback = SpriteCB_BouncingPokeballDepart;
+ DestroySprite(&gSprites[sTradeData->releasePokeballSpriteId]);
sTradeData->state++;
}
break;
- case 13:
+ case TS_STATE_POKEBALL_DEPART_WAIT:
// The game waits here for the sprite to finish its animation sequence.
break;
- case 14:
+ case TS_STATE_FADE_OUT_TO_GBA_SEND:
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
- sTradeData->state = 20;
+ sTradeData->state = TS_STATE_WAIT_FADE_OUT_TO_GBA_SEND;
break;
- case 20:
+ case TS_STATE_WAIT_FADE_OUT_TO_GBA_SEND:
if (!gPaletteFade.active)
{
SetTradeSequenceBgGpuRegs(4);
@@ -3837,189 +3940,185 @@ static bool8 AnimateTradeSequenceWireless(void)
sTradeData->state++;
}
break;
- case 21:
+ case TS_STATE_FADE_IN_TO_GBA_SEND:
BeginNormalPaletteFade(PALETTES_ALL, -1, 16, 0, RGB_BLACK);
sTradeData->state++;
break;
- case 22:
+ case TS_STATE_WAIT_FADE_IN_TO_GBA_SEND:
if (!gPaletteFade.active)
- {
- sTradeData->state = 23;
- }
+ sTradeData->state = TS_STATE_GBA_ZOOM_OUT;
break;
- case 23:
- if (sTradeData->unk_EA > 0x100)
+ case TS_STATE_GBA_ZOOM_OUT:
+ if (sTradeData->gbaScale > 0x100)
{
- sTradeData->unk_EA -= 0x34;
+ sTradeData->gbaScale -= 0x34;
}
else
{
SetTradeSequenceBgGpuRegs(1);
- sTradeData->unk_EA = 0x80;
- sTradeData->state = 124;
+ sTradeData->gbaScale = 0x80;
+ sTradeData->state = TS_STATE_GBA_FLASH_SEND_WIRELESS;
sTradeData->timer = 0;
}
- sTradeData->sXY = 0x8000 / sTradeData->unk_EA;
+ sTradeData->sXY = 0x8000 / sTradeData->gbaScale;
break;
- case 124:
+ case TS_STATE_GBA_FLASH_SEND_WIRELESS:
if (++sTradeData->timer > 20)
{
SetTradeSequenceBgGpuRegs(3);
- sTradeData->unk_91 = CreateSprite(&gSpriteTemplate_8338E8C, 120, 80, 0);
+ sTradeData->connectionSpriteId2 = CreateSprite(&sSpriteTemplate_GbaScreenFlash_Short, 120, 80, 0);
sTradeData->state++;
}
break;
- case 125:
- if (gSprites[sTradeData->unk_91].animEnded)
+ case TS_STATE_GBA_STOP_FLASH_SEND_WIRELESS:
+ if (gSprites[sTradeData->connectionSpriteId2].animEnded)
{
- DestroySprite(&gSprites[sTradeData->unk_91]);
+ DestroySprite(&gSprites[sTradeData->connectionSpriteId2]);
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 |
BLDCNT_TGT1_OBJ |
BLDCNT_EFFECT_BLEND |
BLDCNT_TGT2_BG2);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 4));
+
+ // Start wireless signal effect
CreateTask(Task_AnimateWirelessSignal, 5);
sTradeData->state++;
}
break;
- case 126:
+ case TS_STATE_WAIT_WIRELESS_SIGNAL_SEND:
if (!FuncIsActiveTask(Task_AnimateWirelessSignal))
- {
- sTradeData->state = 26;
- }
+ sTradeData->state = TS_STATE_PAN_AWAY_GBA;
break;
- case 26:
+ case TS_STATE_PAN_AWAY_GBA:
if (--sTradeData->bg1vofs == 316)
- {
sTradeData->state++;
- }
break;
- case 27:
- sTradeData->unk_90 = CreateSprite(&gUnknown_08338D88, 120, 80, 3);
- gSprites[sTradeData->unk_90].callback = sub_807AA4C;
- sTradeData->unk_91 = CreateSprite(&sGlowBallSpriteTemplate, 120, 80, 0);
- StartSpriteAnim(&gSprites[sTradeData->unk_91], 1);
+ case TS_STATE_CREATE_LINK_MON_LEAVING:
+ sTradeData->connectionSpriteId1 = CreateSprite(&sSpriteTemplate_LinkMonGlow, 120, 80, 3);
+ gSprites[sTradeData->connectionSpriteId1].callback = SpriteCB_LinkMonGlowWireless;
+ sTradeData->connectionSpriteId2 = CreateSprite(&sSpriteTemplate_LinkMonShadow, 120, 80, 0);
+ StartSpriteAnim(&gSprites[sTradeData->connectionSpriteId2], ANIM_LINKMON_SMALL);
sTradeData->state++;
break;
- case 28:
+ case TS_STATE_LINK_MON_TRAVEL_OUT:
if ((sTradeData->bg1vofs -= 3) == 166)
- {
- sTradeData->state = 200;
- }
+ sTradeData->state = TS_STATE_LINK_MON_TRAVEL_OFFSCREEN;
+
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 |
DISPCNT_OBJ_1D_MAP |
DISPCNT_BG1_ON |
DISPCNT_OBJ_ON);
break;
- case 200:
- gSprites[sTradeData->unk_90].pos1.y -= 2;
- gSprites[sTradeData->unk_91].pos1.y -= 2;
- if (gSprites[sTradeData->unk_90].pos1.y < -8)
+ case TS_STATE_LINK_MON_TRAVEL_OFFSCREEN:
+ gSprites[sTradeData->connectionSpriteId1].y -= 2;
+ gSprites[sTradeData->connectionSpriteId2].y -= 2;
+ if (gSprites[sTradeData->connectionSpriteId1].y < -8)
{
- sTradeData->state = 29;
+ sTradeData->state = TS_STATE_FADE_OUT_TO_CROSSING;
}
break;
- case 29:
+ case TS_STATE_FADE_OUT_TO_CROSSING:
BeginNormalPaletteFade(PALETTES_ALL, -1, 0, 16, RGB_BLACK);
- sTradeData->state = 30;
+ sTradeData->state = TS_STATE_WAIT_FADE_OUT_TO_CROSSING;
break;
- case 30:
+ case TS_STATE_WAIT_FADE_OUT_TO_CROSSING:
if (!gPaletteFade.active)
{
- DestroySprite(&gSprites[sTradeData->unk_90]);
- DestroySprite(&gSprites[sTradeData->unk_91]);
+ DestroySprite(&gSprites[sTradeData->connectionSpriteId1]);
+ DestroySprite(&gSprites[sTradeData->connectionSpriteId2]);
SetTradeSequenceBgGpuRegs(2);
sTradeData->state++;
}
break;
- case 31:
+ case TS_STATE_FADE_IN_TO_CROSSING:
BeginNormalPaletteFade(PALETTES_ALL, -1, 16, 0, RGB_BLACK);
- sTradeData->unk_90 = CreateSprite(&sGlowBallSpriteTemplate, 111, 170, 0);
- sTradeData->unk_91 = CreateSprite(&sGlowBallSpriteTemplate, 129, -10, 0);
+ sTradeData->connectionSpriteId1 = CreateSprite(&sSpriteTemplate_LinkMonShadow, 111, 170, 0);
+ sTradeData->connectionSpriteId2 = CreateSprite(&sSpriteTemplate_LinkMonShadow, 129, -10, 0);
sTradeData->state++;
break;
- case 32:
+ case TS_STATE_WAIT_FADE_IN_TO_CROSSING:
if (!gPaletteFade.active)
{
PlaySE(SE_WARP_OUT);
sTradeData->state++;
}
- gSprites[sTradeData->unk_90].pos2.y -= 3;
- gSprites[sTradeData->unk_91].pos2.y += 3;
+ gSprites[sTradeData->connectionSpriteId1].y2 -= 3;
+ gSprites[sTradeData->connectionSpriteId2].y2 += 3;
break;
- case 33:
- gSprites[sTradeData->unk_90].pos2.y -= 3;
- gSprites[sTradeData->unk_91].pos2.y += 3;
- if (gSprites[sTradeData->unk_90].pos2.y <= -90)
+ case TS_STATE_CROSSING_LINK_MONS_ENTER:
+ gSprites[sTradeData->connectionSpriteId1].y2 -= 3;
+ gSprites[sTradeData->connectionSpriteId2].y2 += 3;
+ if (gSprites[sTradeData->connectionSpriteId1].y2 <= -90)
{
- gSprites[sTradeData->unk_90].data[1] = 1;
- gSprites[sTradeData->unk_91].data[1] = 1;
+ gSprites[sTradeData->connectionSpriteId1].data[1] = 1;
+ gSprites[sTradeData->connectionSpriteId2].data[1] = 1;
sTradeData->state++;
- CreateTask(c3_0805465C, 5);
+ CreateTask(Task_NarrowWindowForCrossing_Wireless, 5);
}
break;
- case 34:
+ case TS_STATE_CROSSING_BLEND_WHITE_1:
BlendPalettes(0x8, 16, RGB_WHITEALPHA);
sTradeData->state++;
break;
- case 35:
+ case TS_STATE_CROSSING_BLEND_WHITE_2:
BlendPalettes(0x8, 16, RGB_WHITEALPHA);
sTradeData->state++;
break;
- case 36:
+ case TS_STATE_CROSSING_BLEND_WHITE_3:
BlendPalettes(0x8, 16, RGB_WHITEALPHA);
sTradeData->state++;
break;
- case 37:
+ case TS_STATE_CROSSING_CREATE_MON_PICS:
if (!IsMonSpriteNotFlipped(sTradeData->monSpecies[TRADE_PLAYER]))
{
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].affineAnims = gSpriteAffineAnimTable_8338ECC;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
- CalcCenterToCornerVec(&gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]], SPRITE_SHAPE(64x64), SPRITE_SIZE(64x64), ST_OAM_AFFINE_DOUBLE);
- StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]], 0);
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].affineAnims = sAffineAnims_CrossingMonPics;
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
+ CalcCenterToCornerVec(&gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]], SPRITE_SHAPE(64x64), SPRITE_SIZE(64x64), ST_OAM_AFFINE_DOUBLE);
+ StartSpriteAffineAnim(&gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]], 0);
}
else
{
- StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]], 0);
+ StartSpriteAffineAnim(&gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]], 0);
}
- StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]], 0);
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos1.x = 40;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].pos1.x = 200;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos1.y = 192;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].pos1.y = -32;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].invisible = FALSE;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].invisible = FALSE;
+ StartSpriteAffineAnim(&gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]], 0);
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].x = 40;
+ gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].x = 200;
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].y = 192;
+ gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].y = -32;
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].invisible = FALSE;
+ gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].invisible = FALSE;
sTradeData->state++;
break;
- case 38:
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.y -= 3;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].pos2.y += 3;
- if (gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.y < -160 && gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.y >= -163)
+ case TS_STATE_CROSSING_MON_PICS_MOVE:
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].y2 -= 3;
+ gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].y2 += 3;
+ if (gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].y2 < -DISPLAY_HEIGHT
+ && gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].y2 >= -DISPLAY_HEIGHT - 3)
{
PlaySE(SE_WARP_IN);
}
- if (gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.y < -222)
+ if (gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].y2 < -222)
{
- gSprites[sTradeData->unk_90].data[1] = 0;
- gSprites[sTradeData->unk_91].data[1] = 0;
+ gSprites[sTradeData->connectionSpriteId1].data[1] = 0;
+ gSprites[sTradeData->connectionSpriteId2].data[1] = 0;
sTradeData->state++;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].invisible = TRUE;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].invisible = TRUE;
- CreateTask(sub_807F39C, 5);
+ gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]].invisible = TRUE;
+ gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].invisible = TRUE;
+ CreateTask(Task_NarrowWindowForCrossing_Cable, 5);
}
break;
- case 39:
- gSprites[sTradeData->unk_90].pos2.y -= 3;
- gSprites[sTradeData->unk_91].pos2.y += 3;
- if (gSprites[sTradeData->unk_90].pos2.y <= -222)
+ case TS_STATE_CROSSING_LINK_MONS_EXIT:
+ gSprites[sTradeData->connectionSpriteId1].y2 -= 3;
+ gSprites[sTradeData->connectionSpriteId2].y2 += 3;
+ if (gSprites[sTradeData->connectionSpriteId1].y2 <= -222)
{
BeginNormalPaletteFade(PALETTES_ALL, -1, 0, 16, RGB_BLACK);
sTradeData->state++;
- DestroySprite(&gSprites[sTradeData->unk_90]);
- DestroySprite(&gSprites[sTradeData->unk_91]);
+ DestroySprite(&gSprites[sTradeData->connectionSpriteId1]);
+ DestroySprite(&gSprites[sTradeData->connectionSpriteId2]);
}
break;
- case 40:
+ case TS_STATE_CREATE_LINK_MON_ARRIVING:
if (!gPaletteFade.active)
{
sTradeData->state++;
@@ -4027,36 +4126,34 @@ static bool8 AnimateTradeSequenceWireless(void)
sTradeData->bg1vofs = 166;
SetTradeSequenceBgGpuRegs(3);
sTradeData->bg2vofs = 412;
- sTradeData->unk_90 = CreateSprite(&gUnknown_08338D88, 120, -20, 3);
- gSprites[sTradeData->unk_90].callback = sub_807AA4C;
- sTradeData->unk_91 = CreateSprite(&sGlowBallSpriteTemplate, 120, -20, 0);
- StartSpriteAnim(&gSprites[sTradeData->unk_91], 1);
+ sTradeData->connectionSpriteId1 = CreateSprite(&sSpriteTemplate_LinkMonGlow, 120, -20, 3);
+ gSprites[sTradeData->connectionSpriteId1].callback = SpriteCB_LinkMonGlowWireless;
+ sTradeData->connectionSpriteId2 = CreateSprite(&sSpriteTemplate_LinkMonShadow, 120, -20, 0);
+ StartSpriteAnim(&gSprites[sTradeData->connectionSpriteId2], ANIM_LINKMON_SMALL);
}
break;
- case 41:
+ case TS_STATE_FADE_OUT_TO_GBA_RECV:
BeginNormalPaletteFade(PALETTES_ALL, -1, 16, 0, RGB_BLACK);
sTradeData->state++;
break;
- case 42:
+ case TS_STATE_WAIT_FADE_OUT_TO_GBA_RECV:
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 |
DISPCNT_OBJ_1D_MAP |
DISPCNT_BG1_ON |
DISPCNT_OBJ_ON);
if (!gPaletteFade.active)
- {
sTradeData->state++;
- }
break;
- case 43:
- gSprites[sTradeData->unk_90].pos2.y += 4;
- gSprites[sTradeData->unk_91].pos2.y += 4;
- if (gSprites[sTradeData->unk_90].pos2.y + gSprites[sTradeData->unk_90].pos1.y == 64)
+ case TS_STATE_LINK_MON_TRAVEL_IN:
+ gSprites[sTradeData->connectionSpriteId1].y2 += 4;
+ gSprites[sTradeData->connectionSpriteId2].y2 += 4;
+ if (gSprites[sTradeData->connectionSpriteId1].y2 + gSprites[sTradeData->connectionSpriteId1].y == 64)
{
- sTradeData->state = 144;
+ sTradeData->state = TS_STATE_PAN_TO_GBA_WIRELESS;
sTradeData->timer = 0;
}
break;
- case 144:
+ case TS_STATE_PAN_TO_GBA_WIRELESS:
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 |
DISPCNT_OBJ_1D_MAP |
DISPCNT_BG1_ON |
@@ -4075,62 +4172,60 @@ static bool8 AnimateTradeSequenceWireless(void)
sTradeData->state++;
}
break;
- case 145:
- DestroySprite(&gSprites[sTradeData->unk_90]);
- DestroySprite(&gSprites[sTradeData->unk_91]);
+ case TS_STATE_DESTROY_LINK_MON_WIRELESS:
+ DestroySprite(&gSprites[sTradeData->connectionSpriteId1]);
+ DestroySprite(&gSprites[sTradeData->connectionSpriteId2]);
sTradeData->state++;
sTradeData->timer = 0;
break;
- case 146:
+ case TS_STATE_WAIT_WIRELESS_SIGNAL_RECV:
if (!FuncIsActiveTask(Task_AnimateWirelessSignal))
{
- sTradeData->state = 46;
+ sTradeData->state = TS_STATE_LINK_MON_ARRIVED_DELAY;
sTradeData->timer = 0;
}
break;
- case 46:
+ case TS_STATE_LINK_MON_ARRIVED_DELAY:
if (++sTradeData->timer == 10)
- {
sTradeData->state++;
- }
break;
- case 47:
+ case TS_STATE_MOVE_GBA_TO_CENTER:
if (++sTradeData->bg1vofs > 348)
{
sTradeData->bg1vofs = 348;
sTradeData->state++;
}
break;
- case 48:
- sTradeData->unk_91 = CreateSprite(&gSpriteTemplate_8338E74, 120, 80, 0);
- sTradeData->state = 50;
+ case TS_STATE_GBA_FLASH_RECV:
+ sTradeData->connectionSpriteId2 = CreateSprite(&sSpriteTemplate_GbaScreenFlash_Long, 120, 80, 0);
+ sTradeData->state = TS_STATE_GBA_STOP_FLASH_RECV;
break;
- case 50:
- if (gSprites[sTradeData->unk_91].animEnded)
+ case TS_STATE_GBA_STOP_FLASH_RECV:
+ if (gSprites[sTradeData->connectionSpriteId2].animEnded)
{
- DestroySprite(&gSprites[sTradeData->unk_91]);
+ DestroySprite(&gSprites[sTradeData->connectionSpriteId2]);
SetTradeSequenceBgGpuRegs(6);
sTradeData->state++;
PlaySE(SE_M_SAND_ATTACK);
}
break;
- case 51:
- if (sTradeData->unk_EA < 0x400)
+ case TS_STATE_GBA_ZOOM_IN:
+ if (sTradeData->gbaScale < 0x400)
{
- sTradeData->unk_EA += 0x34;
+ sTradeData->gbaScale += 0x34;
}
else
{
- sTradeData->unk_EA = 0x400;
+ sTradeData->gbaScale = 0x400;
sTradeData->state++;
}
- sTradeData->sXY = 0x8000 / sTradeData->unk_EA;
+ sTradeData->sXY = 0x8000 / sTradeData->gbaScale;
break;
- case 52:
+ case TS_STATE_FADE_OUT_TO_NEW_MON:
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
- sTradeData->state = 60;
+ sTradeData->state = TS_STATE_WAIT_FADE_OUT_TO_NEW_MON;
break;
- case 60:
+ case TS_STATE_WAIT_FADE_OUT_TO_NEW_MON:
if (!gPaletteFade.active)
{
SetTradeSequenceBgGpuRegs(5);
@@ -4139,54 +4234,55 @@ static bool8 AnimateTradeSequenceWireless(void)
sTradeData->state++;
}
break;
- case 61:
+ case TS_STATE_FADE_IN_TO_NEW_MON:
gPaletteFade.bufferTransferDisabled = FALSE;
BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK);
sTradeData->state++;
break;
- case 62:
+ case TS_STATE_WAIT_FADE_IN_TO_NEW_MON:
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 |
DISPCNT_OBJ_1D_MAP |
DISPCNT_BG2_ON |
DISPCNT_OBJ_ON);
if (!gPaletteFade.active)
- {
sTradeData->state++;
- }
break;
- case 63:
- sTradeData->unk_D3 = CreateSprite(&gSpriteTemplate_8338D28, 120, -8, 0);
- gSprites[sTradeData->unk_D3].data[3] = 74;
- gSprites[sTradeData->unk_D3].callback = sub_807E6AC;
- StartSpriteAnim(&gSprites[sTradeData->unk_D3], 1);
- StartSpriteAffineAnim(&gSprites[sTradeData->unk_D3], 2);
- BlendPalettes(1 << (16 + gSprites[sTradeData->unk_D3].oam.paletteNum), 16, RGB_WHITEALPHA);
+ case TS_STATE_POKEBALL_ARRIVE:
+ sTradeData->bouncingPokeballSpriteId = CreateSprite(&sSpriteTemplate_Pokeball, 120, -8, 0);
+ gSprites[sTradeData->bouncingPokeballSpriteId].data[3] = 74;
+ gSprites[sTradeData->bouncingPokeballSpriteId].callback = SpriteCB_BouncingPokeballArrive;
+ StartSpriteAnim(&gSprites[sTradeData->bouncingPokeballSpriteId], 1);
+ StartSpriteAffineAnim(&gSprites[sTradeData->bouncingPokeballSpriteId], 2);
+ BlendPalettes(1 << (16 + gSprites[sTradeData->bouncingPokeballSpriteId].oam.paletteNum), 16, RGB_WHITEALPHA);
sTradeData->state++;
sTradeData->timer = 0;
break;
- case 64:
- BeginNormalPaletteFade(1 << (16 + gSprites[sTradeData->unk_D3].oam.paletteNum), 1, 16, 0, RGB_WHITEALPHA);
+ case TS_STATE_FADE_POKEBALL_TO_NORMAL:
+ BeginNormalPaletteFade(1 << (16 + gSprites[sTradeData->bouncingPokeballSpriteId].oam.paletteNum), 1, 16, 0, RGB_WHITEALPHA);
sTradeData->state++;
break;
- case 65:
- if (gSprites[sTradeData->unk_D3].callback == SpriteCallbackDummy)
+ case TS_STATE_POKEBALL_ARRIVE_WAIT:
+ if (gSprites[sTradeData->bouncingPokeballSpriteId].callback == SpriteCallbackDummy)
{
- HandleLoadSpecialPokePic_2(&gMonFrontPicTable[sTradeData->monSpecies[TRADE_PARTNER]], gMonSpritesGfxPtr->sprites.ptr[3], sTradeData->monSpecies[TRADE_PARTNER], sTradeData->monPersonalities[TRADE_PARTNER]);
+ HandleLoadSpecialPokePic_2(&gMonFrontPicTable[sTradeData->monSpecies[TRADE_PARTNER]],
+ gMonSpritesGfxPtr->sprites.ptr[3],
+ sTradeData->monSpecies[TRADE_PARTNER],
+ sTradeData->monPersonalities[TRADE_PARTNER]);
sTradeData->state++;
}
break;
- case 66:
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].pos1.x = 120;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].pos1.y = gMonFrontPicCoords[sTradeData->monSpecies[TRADE_PARTNER]].y_offset + 60;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].pos2.x = 0;
- gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].pos2.y = 0;
- StartSpriteAnim(&gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]], 0);
- CreatePokeballSpriteToReleaseMon(sTradeData->pokePicSpriteIdxs[TRADE_PARTNER], gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].oam.paletteNum, 120, 84, 2, 1, 20, 0xFFFFF, sTradeData->monSpecies[TRADE_PARTNER]);
- FreeSpriteOamMatrix(&gSprites[sTradeData->unk_D3]);
- DestroySprite(&gSprites[sTradeData->unk_D3]);
+ case TS_STATE_SHOW_NEW_MON:
+ gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].x = 120;
+ gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].y = gMonFrontPicCoords[sTradeData->monSpecies[TRADE_PARTNER]].y_offset + 60;
+ gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].x2 = 0;
+ gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].y2 = 0;
+ StartSpriteAnim(&gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]], 0);
+ CreatePokeballSpriteToReleaseMon(sTradeData->monSpriteIds[TRADE_PARTNER], gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]].oam.paletteNum, 120, 84, 2, 1, 20, 0xFFFFF, sTradeData->monSpecies[TRADE_PARTNER]);
+ FreeSpriteOamMatrix(&gSprites[sTradeData->bouncingPokeballSpriteId]);
+ DestroySprite(&gSprites[sTradeData->bouncingPokeballSpriteId]);
sTradeData->state++;
break;
- case 67:
+ case TS_STATE_NEW_MON_MSG:
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 |
DISPCNT_OBJ_1D_MAP |
DISPCNT_BG0_ON |
@@ -4194,28 +4290,24 @@ static bool8 AnimateTradeSequenceWireless(void)
DISPCNT_OBJ_ON);
StringExpandPlaceholders(gStringVar4, gText_XSentOverY);
DrawTextOnTradeWindow(0, gStringVar4, 0);
- sTradeData->state = 167;
+ sTradeData->state = TS_STATE_DELAY_FOR_MON_ANIM;
sTradeData->timer = 0;
break;
- // 167 and 267 are extra cases added in for animations
- case 167:
+ case TS_STATE_DELAY_FOR_MON_ANIM:
if (++sTradeData->timer > 60)
{
- sTradeData->state = 267;
+ sTradeData->state = TS_STATE_WAIT_FOR_MON_CRY;
sTradeData->timer = 0;
}
break;
- case 267:
+ case TS_STATE_WAIT_FOR_MON_CRY:
if (IsCryFinished())
- {
- sTradeData->state = 68;
- }
+ sTradeData->state = TS_STATE_TAKE_CARE_OF_MON;
break;
- case 68:
+ case TS_STATE_TAKE_CARE_OF_MON:
if (++sTradeData->timer == 10)
- {
PlayFanfare(MUS_EVOLVED);
- }
+
if (sTradeData->timer == 250)
{
sTradeData->state++;
@@ -4224,17 +4316,15 @@ static bool8 AnimateTradeSequenceWireless(void)
sTradeData->timer = 0;
}
break;
- case 69:
+ case TS_STATE_AFTER_NEW_MON_DELAY:
if (++sTradeData->timer == 60)
- {
sTradeData->state++;
- }
break;
- case 70:
+ case TS_STATE_CHECK_RIBBONS:
CheckPartnersMonForRibbons();
sTradeData->state++;
break;
- case 71:
+ case TS_STATE_END_LINK_TRADE:
if (sTradeData->isLinkTrade)
{
return TRUE;
@@ -4244,21 +4334,21 @@ static bool8 AnimateTradeSequenceWireless(void)
sTradeData->state++;
}
break;
- case 72: // Only if in-game trade
+ case TS_STATE_TRY_EVOLUTION: // Only if in-game trade, link trades use CB2_TryLinkTradeEvolution
TradeMons(gSpecialVar_0x8005, 0);
gCB2_AfterEvolution = CB2_UpdateInGameTrade;
evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], EVO_MODE_TRADE, ITEM_NONE);
if (evoTarget != SPECIES_NONE)
{
- TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], evoTarget, sTradeData->pokePicSpriteIdxs[TRADE_PARTNER], gSelectedTradeMonPositions[TRADE_PLAYER]);
+ TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], evoTarget, sTradeData->monSpriteIds[TRADE_PARTNER], gSelectedTradeMonPositions[TRADE_PLAYER]);
}
sTradeData->state++;
break;
- case 73:
+ case TS_STATE_FADE_OUT_END:
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
sTradeData->state++;
break;
- case 74:
+ case TS_STATE_WAIT_FADE_OUT_END:
if (!gPaletteFade.active)
{
PlayNewMapMusic(sTradeData->cachedMapMusic);
@@ -4279,7 +4369,9 @@ static bool8 AnimateTradeSequenceWireless(void)
return FALSE;
}
-static void CB2_TryTradeEvolution(void)
+// Try to evolve a Pokémon received in a link trade
+// In-game trades resolve evolution during the trade sequence, in TS_STATE_TRY_EVOLUTION
+static void CB2_TryLinkTradeEvolution(void)
{
u16 evoTarget;
switch (gMain.state)
@@ -4292,7 +4384,7 @@ static void CB2_TryTradeEvolution(void)
gCB2_AfterEvolution = CB2_SaveAndEndTrade;
evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], EVO_MODE_TRADE, ITEM_NONE);
if (evoTarget != SPECIES_NONE)
- TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], evoTarget, sTradeData->pokePicSpriteIdxs[TRADE_PARTNER], gSelectedTradeMonPositions[TRADE_PLAYER]);
+ TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[TRADE_PLAYER]], evoTarget, sTradeData->monSpriteIds[TRADE_PARTNER], gSelectedTradeMonPositions[TRADE_PLAYER]);
else if (IsWirelessTrade())
SetMainCallback2(CB2_SaveAndEndWirelessTrade);
else
@@ -4315,7 +4407,7 @@ static void UpdateTradeFinishFlags(void)
if (blockReceivedStatus & 0x01)
{
if (gBlockRecvBuffer[0][0] == LINKCMD_CONFIRM_FINISH_TRADE)
- SetMainCallback2(CB2_TryTradeEvolution);
+ SetMainCallback2(CB2_TryLinkTradeEvolution);
if (gBlockRecvBuffer[0][0] == LINKCMD_READY_FINISH_TRADE)
sTradeData->playerLinkFlagFinishTrade = READY_FINISH_TRADE;
@@ -4331,18 +4423,18 @@ static void UpdateTradeFinishFlags(void)
}
}
-static void sub_807E55C(struct Sprite *sprite)
+static void SpriteCB_BouncingPokeball(struct Sprite *sprite)
{
- sprite->pos1.y += sprite->data[0] / 10;
+ sprite->y += sprite->data[0] / 10;
sprite->data[5] += sprite->data[1];
- sprite->pos1.x = sprite->data[5] / 10;
- if (sprite->pos1.y > 0x4c)
+ sprite->x = sprite->data[5] / 10;
+ if (sprite->y > 0x4c)
{
- sprite->pos1.y = 0x4c;
+ sprite->y = 0x4c;
sprite->data[0] = -(sprite->data[0] * sprite->data[2]) / 100;
sprite->data[3] ++;
}
- if (sprite->pos1.x == 0x78)
+ if (sprite->x == 0x78)
sprite->data[1] = 0;
sprite->data[0] += sprite->data[4];
if (sprite->data[3] == 4)
@@ -4352,40 +4444,40 @@ static void sub_807E55C(struct Sprite *sprite)
}
}
-static void sub_807E5D8(struct Sprite *sprite)
+static void SpriteCB_BouncingPokeballDepart(struct Sprite *sprite)
{
- sprite->pos2.y += sTradeBallVerticalVelocityTable[sprite->data[0]];
+ sprite->y2 += sTradeBallVerticalVelocityTable[sprite->data[0]];
if (sprite->data[0] == 22)
PlaySE(SE_BALL_BOUNCE_1);
if (++ sprite->data[0] == 44)
{
PlaySE(SE_M_MEGA_KICK);
- sprite->callback = sub_807E64C;
+ sprite->callback = SpriteCB_BouncingPokeballDepartEnd;
sprite->data[0] = 0;
BeginNormalPaletteFade(1 << (16 + sprite->oam.paletteNum), -1, 0, 16, RGB_WHITEALPHA);
}
}
-static void sub_807E64C(struct Sprite *sprite)
+static void SpriteCB_BouncingPokeballDepartEnd(struct Sprite *sprite)
{
if (sprite->data[1] == 20)
StartSpriteAffineAnim(sprite, 1);
if (++ sprite->data[1] > 20)
{
- sprite->pos2.y -= sTradeBallVerticalVelocityTable[sprite->data[0]];
+ sprite->y2 -= sTradeBallVerticalVelocityTable[sprite->data[0]];
if (++ sprite->data[0] == 23)
{
DestroySprite(sprite);
- sTradeData->state = 14; // Resume the master trade animation
+ sTradeData->state = TS_STATE_FADE_OUT_TO_GBA_SEND; // Resume the master trade animation
}
}
}
-static void sub_807E6AC(struct Sprite *sprite)
+static void SpriteCB_BouncingPokeballArrive(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
- if ((sprite->pos1.y += 4) > sprite->data[3])
+ if ((sprite->y += 4) > sprite->data[3])
{
sprite->data[2] ++;
sprite->data[0] = 0x16;
@@ -4400,7 +4492,7 @@ static void sub_807E6AC(struct Sprite *sprite)
PlaySE(SE_BALL_BOUNCE_3);
if (sprite->data[0] == 0x6b)
PlaySE(SE_BALL_BOUNCE_4);
- sprite->pos2.y += sTradeBallVerticalVelocityTable[sprite->data[0]];
+ sprite->y2 += sTradeBallVerticalVelocityTable[sprite->data[0]];
if (++sprite->data[0] == 0x6c)
sprite->callback = SpriteCallbackDummy;
}
@@ -4506,8 +4598,8 @@ static void CB2_UpdateLinkTrade(void)
{
if (AnimateTradeSequence() == TRUE)
{
- DestroySprite(&gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]]);
- FreeSpriteOamMatrix(&gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]]);
+ DestroySprite(&gSprites[sTradeData->monSpriteIds[TRADE_PLAYER]]);
+ FreeSpriteOamMatrix(&gSprites[sTradeData->monSpriteIds[TRADE_PARTNER]]);
TradeMons(gSelectedTradeMonPositions[TRADE_PLAYER], gSelectedTradeMonPositions[TRADE_PARTNER] % PARTY_SIZE);
if (!IsWirelessTrade())
{
@@ -4530,7 +4622,7 @@ static void CB2_TryFinishTrade(void)
u8 mpId = TradeGetMultiplayerId();
if (IsWirelessTrade())
{
- SetMainCallback2(CB2_TryTradeEvolution);
+ SetMainCallback2(CB2_TryLinkTradeEvolution);
}
else
{
@@ -4540,7 +4632,7 @@ static void CB2_TryFinishTrade(void)
&& sTradeData->partnerLinkFlagFinishTrade == READY_FINISH_TRADE)
{
sTradeData->linkData[0] = LINKCMD_CONFIRM_FINISH_TRADE;
- Trade_SendData(sTradeData);
+ SendBlock(bitmask_all_link_players_but_self(), sTradeData->linkData, sizeof(sTradeData->linkData));
sTradeData->playerLinkFlagFinishTrade = FINISH_TRADE;
sTradeData->partnerLinkFlagFinishTrade = FINISH_TRADE;
}
@@ -4791,16 +4883,16 @@ static void Task_AnimateWirelessSignal(u8 taskId)
if (!signalComingBack)
{
if (paletteIdx == 256)
- LoadPalette(sTradePal_Black, 0x30, 32);
+ LoadPalette(sWirelessSignalNone_Pal, 0x30, 32);
else
- LoadPalette(&sTradePal_WirelessSignalSend[paletteIdx], 0x30, 32);
+ LoadPalette(&sWirelessSignalSend_Pal[paletteIdx], 0x30, 32);
}
else
{
if (paletteIdx == 256)
- LoadPalette(sTradePal_Black, 0x30, 32);
+ LoadPalette(sWirelessSignalNone_Pal, 0x30, 32);
else
- LoadPalette(&sTradePal_WirelessSignalReceive[paletteIdx], 0x30, 32);
+ LoadPalette(&sWirelessSignalRecv_Pal[paletteIdx], 0x30, 32);
}
if (sWirelessSignalTiming[idx][0] == 0 && counter == 0)
@@ -4825,15 +4917,15 @@ static void Task_AnimateWirelessSignal(u8 taskId)
#undef counter
#undef signalComingBack
-static void c3_0805465C(u8 taskId)
+static void Task_NarrowWindowForCrossing_Wireless(u8 taskId)
{
s16 *data = gTasks[taskId].data;
if (data[0] == 0)
{
- sTradeData->wirelessWinLeft = sTradeData->wirelessWinRight = 120;
+ sTradeData->wirelessWinLeft = sTradeData->wirelessWinRight = DISPLAY_WIDTH / 2;
sTradeData->wirelessWinTop = 0;
- sTradeData->wirelessWinBottom = 160;
+ sTradeData->wirelessWinBottom = DISPLAY_HEIGHT;
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_OBJ);
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 |
@@ -4849,19 +4941,17 @@ static void c3_0805465C(u8 taskId)
sTradeData->wirelessWinRight += 5;
if (sTradeData->wirelessWinLeft < 80)
- {
DestroyTask(taskId);
- }
}
-static void sub_807F39C(u8 taskId)
+static void Task_NarrowWindowForCrossing_Cable(u8 taskId)
{
s16 *data = gTasks[taskId].data;
if (data[0] == 0)
{
sTradeData->wirelessWinLeft = 80;
- sTradeData->wirelessWinRight = 160;
+ sTradeData->wirelessWinRight = DISPLAY_WIDTH - 80;
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_OBJ);
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 |
WININ_WIN0_BG1 |
@@ -4871,13 +4961,13 @@ static void sub_807F39C(u8 taskId)
SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE2(sTradeData->wirelessWinLeft, sTradeData->wirelessWinRight));
SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE2(sTradeData->wirelessWinTop, sTradeData->wirelessWinBottom));
- if (sTradeData->wirelessWinLeft != 120)
+ if (sTradeData->wirelessWinLeft != DISPLAY_WIDTH / 2)
{
data[0]++;
sTradeData->wirelessWinLeft += 5;
sTradeData->wirelessWinRight -= 5;
- if (sTradeData->wirelessWinLeft >= 116)
+ if (sTradeData->wirelessWinLeft > DISPLAY_WIDTH / 2 - 5)
BlendPalettes(0x8, 0, RGB_WHITEALPHA);
}
else
diff --git a/src/trainer_card.c b/src/trainer_card.c
index 91a8047df..1ec519c90 100755
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -273,7 +273,7 @@ static const u16 *const sKantoTrainerCardStarPals[] =
sKantoTrainerCard4Star_Pal,
};
-static const u8 sTrainerCardTextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY};
+static const u8 sTrainerCardTextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY};
static const u8 sTrainerCardStatColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_RED, TEXT_COLOR_LIGHT_RED};
static const u8 sTimeColonInvisibleTextColors[6] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_TRANSPARENT};
@@ -456,7 +456,7 @@ static void Task_TrainerCard(u8 taskId)
}
break;
case STATE_WAIT_FLIP_TO_BACK:
- if (IsCardFlipTaskActive() && sub_8087598() != TRUE)
+ if (IsCardFlipTaskActive() && Overworld_LinkRecvQueueLengthMoreThan2() != TRUE)
{
PlaySE(SE_RG_CARD_OPEN);
sData->mainState = STATE_HANDLE_INPUT_BACK;
@@ -513,7 +513,7 @@ static void Task_TrainerCard(u8 taskId)
CloseTrainerCard(taskId);
break;
case STATE_WAIT_FLIP_TO_FRONT:
- if (IsCardFlipTaskActive() && sub_8087598() != TRUE)
+ if (IsCardFlipTaskActive() && Overworld_LinkRecvQueueLengthMoreThan2() != TRUE)
{
sData->mainState = STATE_HANDLE_INPUT_FRONT;
PlaySE(SE_RG_CARD_OPEN);
@@ -661,7 +661,7 @@ u32 CountPlayerTrainerStars(void)
stars++;
if (HasAllHoennMons())
stars++;
- if (CountPlayerContestPaintings() > 4)
+ if (CountPlayerMuseumPaintings() >= CONTEST_CATEGORIES_COUNT)
stars++;
if (HasAllFrontierSymbols())
stars++;
@@ -735,7 +735,7 @@ static void SetPlayerCardData(struct TrainerCard *trainerCard, u8 cardType)
case CARD_TYPE_FRLG:
trainerCard->contestsWithFriends = GetCappedGameStat(GAME_STAT_WON_LINK_CONTEST, 999);
trainerCard->pokeblocksWithFriends = GetCappedGameStat(GAME_STAT_POKEBLOCKS_WITH_FRIENDS, 0xFFFF);
- if (CountPlayerContestPaintings() > 4)
+ if (CountPlayerMuseumPaintings() >= CONTEST_CATEGORIES_COUNT)
trainerCard->hasAllPaintings = TRUE;
trainerCard->stars = GetRubyTrainerStars(trainerCard);
break;
@@ -1663,7 +1663,7 @@ static bool8 Task_AnimateCardFlipDown(struct Task* task)
static bool8 Task_DrawFlippedCardSide(struct Task* task)
{
sData->allowDMACopy = FALSE;
- if (sub_8087598() == TRUE)
+ if (Overworld_LinkRecvQueueLengthMoreThan2() == TRUE)
return FALSE;
do
diff --git a/src/trainer_hill.c b/src/trainer_hill.c
index 3bc6c970b..3ce90c430 100644
--- a/src/trainer_hill.c
+++ b/src/trainer_hill.c
@@ -202,7 +202,7 @@ static const u16 *const *const sPrizeListSets[] =
};
static const u16 sEReader_Pal[] = INCBIN_U16("graphics/misc/trainer_hill_ereader.gbapal");
-static const u8 sRecordWinColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY};
+static const u8 sRecordWinColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY};
static const struct TrHillTag *const sDataPerTag[] =
{
@@ -678,10 +678,10 @@ static u16 GetMetatileForFloor(u8 floorId, u32 x, u32 y, u32 stride) // stride i
u16 elevation;
impassable = (sHillData->floors[floorId].display.collisionData[y] >> (15 - x) & 1);
- metatile = sHillData->floors[floorId].display.metatileData[stride * y + x] + 0x200;
- elevation = 0x3000;
+ metatile = sHillData->floors[floorId].display.metatileData[stride * y + x] + NUM_METATILES_IN_PRIMARY;
+ elevation = 3 << METATILE_ELEVATION_SHIFT;
- return (((impassable << 10) & METATILE_COLLISION_MASK) | elevation) | (metatile & METATILE_ID_MASK);
+ return ((impassable << METATILE_COLLISION_SHIFT) & METATILE_COLLISION_MASK) | elevation | (metatile & METATILE_ID_MASK);
}
void GenerateTrainerHillFloorLayout(u16 *mapArg)
@@ -710,6 +710,8 @@ void GenerateTrainerHillFloorLayout(u16 *mapArg)
gBackupMapLayout.width = 31;
gBackupMapLayout.height = 35;
dst = mapArg + 224;
+
+ // First 5 rows of the map (Entrance / Exit) are always the same
for (i = 0; i < 5; i++)
{
for (j = 0; j < 16; j++)
@@ -718,10 +720,11 @@ void GenerateTrainerHillFloorLayout(u16 *mapArg)
src += 16;
}
+ // Load the 16x16 floor-specific layout
for (i = 0; i < 16; i++)
{
for (j = 0; j < 16; j++)
- dst[j] = GetMetatileForFloor(mapId, j, i, 0x10);
+ dst[j] = GetMetatileForFloor(mapId, j, i, 16);
dst += 31;
}
diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c
index aab4142db..477c11faf 100644
--- a/src/trainer_pokemon_sprites.c
+++ b/src/trainer_pokemon_sprites.c
@@ -137,7 +137,7 @@ static void LoadPicPaletteBySlot(u16 species, u32 otId, u32 personality, u8 pale
static void AssignSpriteAnimsTable(bool8 isTrainer)
{
if (!isTrainer)
- sCreatingSpriteTemplate.anims = gUnknown_082FF70C;
+ sCreatingSpriteTemplate.anims = gAnims_MonPic;
else
sCreatingSpriteTemplate.anims = gTrainerFrontAnimsPtrTable[0];
}
diff --git a/src/trainer_see.c b/src/trainer_see.c
index 155c84cbe..ea052fb0c 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -756,10 +756,10 @@ static void SpriteCB_TrainerIcons(struct Sprite *sprite)
{
struct Sprite *objEventSprite = &gSprites[gObjectEvents[objEventId].spriteId];
sprite->sData4 += sprite->sData3;
- sprite->pos1.x = objEventSprite->pos1.x;
- sprite->pos1.y = objEventSprite->pos1.y - 16;
- sprite->pos2.x = objEventSprite->pos2.x;
- sprite->pos2.y = objEventSprite->pos2.y + sprite->sData4;
+ sprite->x = objEventSprite->x;
+ sprite->y = objEventSprite->y - 16;
+ sprite->x2 = objEventSprite->x2;
+ sprite->y2 = objEventSprite->y2 + sprite->sData4;
if (sprite->sData4)
sprite->sData3++;
else
diff --git a/src/tv.c b/src/tv.c
index d499e31a8..14a0dc53f 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -36,22 +36,33 @@
#include "data.h"
#include "constants/battle_frontier.h"
#include "constants/contest.h"
+#include "constants/event_objects.h"
#include "constants/items.h"
#include "constants/layouts.h"
+#include "constants/lilycove_lady.h"
#include "constants/maps.h"
#include "constants/metatile_behaviors.h"
+#include "constants/metatile_labels.h"
#include "constants/moves.h"
#include "constants/region_map_sections.h"
#include "constants/script_menu.h"
-#include "constants/tv.h"
-
-// Static type declarations
#define LAST_TVSHOW_IDX (TV_SHOWS_COUNT - 1)
-#define rbernoulli(num, den) TV_BernoulliTrial(0xFFFF * (num) / (den))
+#define rbernoulli(num, den) BernoulliTrial(0xFFFF * (num) / (den))
-// Static RAM declarations
+enum {
+ TVGROUP_NONE,
+ TVGROUP_UNUSED,
+ TVGROUP_NORMAL,
+ TVGROUP_RECORD_MIX,
+ TVGROUP_OUTBREAK,
+};
+
+enum {
+ SLOT_MACHINE,
+ ROULETTE,
+};
s8 sCurTVShowSlot;
u16 sTV_SecretBaseVisitMovesTemp[8];
@@ -66,79 +77,77 @@ static u8 sTVShowMixingNumPlayers;
static u8 sTVShowNewsMixingNumPlayers;
static s8 sTVShowMixingCurSlot;
-EWRAM_DATA u16 sPokemonAnglerSpecies = 0;
-EWRAM_DATA u16 sPokemonAnglerAttemptCounters = 0;
-EWRAM_DATA u16 sFindThatGamerCoinsSpent = 0;
-EWRAM_DATA u8 sFindThatGamerWhichGame = SLOT_MACHINE;
-EWRAM_DATA ALIGNED(4) u8 sRecordMixingPartnersWithoutShowsToShare = 0;
-EWRAM_DATA ALIGNED(4) u8 sTVShowState = 0;
-EWRAM_DATA u8 sTVSecretBaseSecretsRandomValues[3] = {};
-
-// Static ROM declarations
-void ClearPokemonNews(void);
-u8 GetTVChannelByShowType(u8 kind);
-u8 FindFirstActiveTVShowThatIsNotAMassOutbreak(void);
-u8 CheckForBigMovieOrEmergencyNewsOnTV(void);
-void SetTVMetatilesOnMap(int width, int height, u16 tileId);
-u8 FindAnyTVNewsOnTheAir(void);
-bool8 IsTVShowInSearchOfTrainersAiring(void);
-void TakeTVShowInSearchOfTrainersOffTheAir(void);
-bool8 TV_BernoulliTrial(u16 ratio);
-s8 FindEmptyTVSlotBeyondFirstFiveShowsOfArray(TVShow *shows);
-bool8 HasMixableShowAlreadyBeenSpawnedWithPlayerID(u8 kind, bool8 flag);
-void tv_store_id_3x(TVShow *show);
-void DeleteTVShowInArrayByIdx(TVShow *shows, u8 idx);
-s8 FindEmptyTVSlotWithinFirstFiveShowsOfArray(TVShow *shows);
-void FindActiveBroadcastByShowType_SetScriptResult(u8 kind);
+static EWRAM_DATA u16 sPokemonAnglerSpecies = 0;
+static EWRAM_DATA u16 sPokemonAnglerAttemptCounters = 0;
+static EWRAM_DATA u16 sFindThatGamerCoinsSpent = 0;
+static EWRAM_DATA u8 sFindThatGamerWhichGame = SLOT_MACHINE;
+static EWRAM_DATA ALIGNED(4) u8 sRecordMixingPartnersWithoutShowsToShare = 0;
+static EWRAM_DATA ALIGNED(4) u8 sTVShowState = 0;
+static EWRAM_DATA u8 sTVSecretBaseSecretsRandomValues[3] = {};
+
+static void ClearPokeNews(void);
+static u8 GetTVGroupByShowId(u8);
+static u8 FindFirstActiveTVShowThatIsNotAMassOutbreak(void);
+static void SetTVMetatilesOnMap(int, int, u16);
+static u8 FindAnyPokeNewsOnTheAir(void);
+static void TakeGabbyAndTyOffTheAir(void);
+static bool8 BernoulliTrial(u16 ratio);
+static s8 FindFirstEmptyRecordMixTVShowSlot(TVShow *);
+static bool8 IsRecordMixShowAlreadySpawned(u8, bool8);
+static void StorePlayerIdInRecordMixShow(TVShow *);
+static void DeleteTVShowInArrayByIdx(TVShow *, u8);
+static s8 FindFirstEmptyNormalTVShowSlot(TVShow *);
+static void TryReplaceOldTVShowOfKind(u8);
static void InterviewBefore_BravoTrainerPkmnProfile(void);
static void InterviewBefore_NameRater(void);
-u16 TV_GetSomeOtherSpeciesAlreadySeenByPlayer(u16 passedSpecies);
-static void sub_80EFA88(void);
-static void sub_80EF93C(TVShow *shows);
-s8 sub_80EEE30(PokeNews *pokeNews);
-bool8 sub_80EF0E4(u8 newsKind);
-void ClearPokemonNewsI(u8 i);
-static void sub_80F1254(TVShow *shows);
-static void sub_80F12A4(TVShow *shows);
-static void sub_80F0358(TVShow *player1, TVShow *player2, TVShow *player3, TVShow *player4);
-static void sub_80F0C04(void);
-static void sub_80F0708(void);
-static void sub_80F0B64(void);
-static s8 sub_80F06D0(TVShow *tvShows);
-static bool8 sub_80F049C(TVShow *dest[], TVShow *src[], u8 idx);
-static bool8 sub_80F0580(TVShow *tv1, TVShow *tv2, u8 idx);
-static bool8 sub_80F05E8(TVShow *tv1, TVShow *tv2, u8 idx);
-static bool8 sub_80F0668(TVShow *tv1, TVShow *tv2, u8 idx);
-void SetTvShowInactive(u8 showIdx);
-static void sub_80F0B24(u16 species, u8 showIdx);
-static void sub_80F0D60(PokeNews *player1, PokeNews *player2, PokeNews *player3, PokeNews *player4);
-static void sub_80F0EEC(void);
-static void sub_80F0F24(void);
-static s8 sub_80F0ECC(PokeNews *pokeNews, u8 idx);
-static void sub_80F0E58(PokeNews *dest[], PokeNews *src[]);
-static bool8 sub_80F0E84(PokeNews *dest, PokeNews *src, s8 slot);
-void TVShowDone(void);
+static u16 GetRandomDifferentSpeciesSeenByPlayer(u16);
+static void Script_FindFirstEmptyNormalTVShowSlot(void);
+static void CompactTVShowArray(TVShow *);
+static s8 GetFirstEmptyPokeNewsSlot(PokeNews *);
+static bool8 IsAddingPokeNewsDisallowed(u8);
+static void ClearPokeNewsBySlot(u8);
+static void TranslateRubyShows(TVShow *);
+static void TranslateJapaneseEmeraldShows(TVShow *);
+static void SetMixedTVShows(TVShow *, TVShow *, TVShow *, TVShow *);
+static void DeleteExcessMixedShows(void);
+static void DeactivateShowsWithUnseenSpecies(void);
+static void DeactivateGameCompleteShowsIfNotUnlocked(void);
+static s8 FindInactiveShowInArray(TVShow *);
+static bool8 TryMixTVShow(TVShow *[], TVShow *[], u8);
+static bool8 TryMixNormalTVShow(TVShow *, TVShow *, u8);
+static bool8 TryMixRecordMixTVShow(TVShow *, TVShow *, u8);
+static bool8 TryMixOutbreakTVShow(TVShow *, TVShow *, u8);
+static void DeactivateShow(u8 showIdx);
+static void DeactivateShowIfNotSeenSpecies(u16, u8);
+static void SetMixedPokeNews(PokeNews *, PokeNews *, PokeNews *, PokeNews *);
+static void ClearInvalidPokeNews(void);
+static void ClearPokeNewsIfGameNotComplete(void);
+static s8 GetPokeNewsSlotIfActive(PokeNews *, u8);
+static void InitTryMixPokeNewsShow(PokeNews *[], PokeNews *[]);
+static bool8 TryMixPokeNewsShow(PokeNews *, PokeNews *, s8);
+static void TVShowDone(void);
static void InterviewAfter_FanClubLetter(void);
static void InterviewAfter_RecentHappenings(void);
static void InterviewAfter_PkmnFanClubOpinions(void);
-static void InterviewAfter_DummyShow4(void);
+static void InterviewAfter_Dummy(void);
static void InterviewAfter_BravoTrainerPokemonProfile(void);
static void InterviewAfter_BravoTrainerBattleTowerProfile(void);
static void InterviewAfter_ContestLiveUpdates(void);
-void UpdateWorldOfMastersAndPutItOnTheAir(void);
-void PutPokemonTodayFailedOnTheAir(void);
-static void sub_80ED718(void);
-static void sub_80EED88(void);
-void TV_SortPurchasesByQuantity(void);
-static void UpdateMassOutbreakTimeLeft(u16 days);
-static void TryEndMassOutbreak(u16 days);
-static void sub_80EF120(u16 days);
-static void sub_80EDA48(u16 days);
-static void sub_80EEB98(u16 days);
-void PutFishingAdviceShowOnTheAir(void);
-static u8 MonDataIdxToRibbon(u8 monDataIdx);
-static void sub_80EEBF4(u8 actionIdx);
-bool8 IsPriceDiscounted(u8 newsKind);
+static void InitWorldOfMastersShowAttempt(void);
+static void TryPutPokemonTodayFailedOnTheAir(void);
+static void TryStartRandomMassOutbreak(void);
+static void TryPutRandomPokeNewsOnAir(void);
+static void SortPurchasesByQuantity(void);
+static void UpdateMassOutbreakTimeLeft(u16);
+static void TryEndMassOutbreak(u16);
+static void UpdatePokeNewsTimeLeft(u16);
+static void ResolveWorldOfMastersShow(u16);
+static void ResolveNumberOneShow(u16);
+static void TryPutFishingAdviceOnAir(void);
+static u8 MonDataIdxToRibbon(u8);
+static void TryPutNumberOneOnAir(u8);
+static bool8 IsPriceDiscounted(u8);
+static void TryPutWorldOfMastersOnAir(void);
static void InterviewBefore_FanClubLetter(void);
static void InterviewBefore_RecentHappenings(void);
static void InterviewBefore_PkmnFanClubOpinions(void);
@@ -147,7 +156,7 @@ static void InterviewBefore_BravoTrainerBTProfile(void);
static void InterviewBefore_ContestLiveUpdates(void);
static void InterviewBefore_3CheersForPokeblocks(void);
static void InterviewBefore_FanClubSpecial(void);
-void ChangeBoxPokemonNickname_CB(void);
+static void ChangeBoxPokemonNickname_CB(void);
static void DoTVShowPokemonFanClubLetter(void);
static void DoTVShowRecentHappenings(void);
static void DoTVShowPokemonFanClubOpinions(void);
@@ -179,9 +188,7 @@ static void DoTVShowPokemonNewsBattleFrontier(void);
static void DoTVShowWhatsNo1InHoennToday(void);
static void DoTVShowSecretBaseSecrets(void);
static void DoTVShowSafariFanClub(void);
-static void DoTVShowPokemonContestLiveUpdates2(void);
-
-// .rodata
+static void DoTVShowLilycoveContestLady(void);
static const struct {
u16 species;
@@ -329,19 +336,19 @@ static const u8 *const sTVPokemonTodaySuccessfulTextGroup[] = {
};
static const u8 *const sTVTodaysSmartShopperTextGroup[] = {
- gTVTodaysSmartShopperText00,
- gTVTodaysSmartShopperText01,
- gTVTodaysSmartShopperText02,
- gTVTodaysSmartShopperText03,
- gTVTodaysSmartShopperText04,
- gTVTodaysSmartShopperText05,
- gTVTodaysSmartShopperText06,
- gTVTodaysSmartShopperText07,
- gTVTodaysSmartShopperText08,
- gTVTodaysSmartShopperText09,
- gTVTodaysSmartShopperText10,
- gTVTodaysSmartShopperText11,
- gTVTodaysSmartShopperText12
+ [SMARTSHOPPER_STATE_INTRO] = SmartShopper_Text_Intro,
+ [SMARTSHOPPER_STATE_CLERK_NORMAL] = SmartShopper_Text_ClerkNormal,
+ [SMARTSHOPPER_STATE_RAND_COMMENT_1] = SmartShopper_Text_RandomComment1,
+ [SMARTSHOPPER_STATE_RAND_COMMENT_2] = SmartShopper_Text_RandomComment2,
+ [SMARTSHOPPER_STATE_RAND_COMMENT_3] = SmartShopper_Text_RandomComment3,
+ [SMARTSHOPPER_STATE_RAND_COMMENT_4] = SmartShopper_Text_RandomComment4,
+ [SMARTSHOPPER_STATE_SECOND_ITEM] = SmartShopper_Text_SecondItem,
+ [SMARTSHOPPER_STATE_THIRD_ITEM] = SmartShopper_Text_ThirdItem,
+ [SMARTSHOPPER_STATE_DURING_SALE] = SmartShopper_Text_DuringSale,
+ [SMARTSHOPPER_STATE_OUTRO_NORMAL] = SmartShopper_Text_OutroNormal,
+ [SMARTSHOPPER_STATE_IS_VIP] = SmartShopper_Text_IsVIP,
+ [SMARTSHOPPER_STATE_CLERK_MAX] = SmartShopper_Text_ClerkMax,
+ [SMARTSHOPPER_STATE_OUTRO_MAX] = SmartShopper_Text_OutroMax
};
static const u8 *const sTVBravoTrainerTextGroup[] = {
@@ -461,11 +468,11 @@ static const u8 *const sTVNameRaterTextGroup[] = {
gTVNameRaterText18
};
-static const u8 *const sTVPokemonContestLiveUpdates2TextGroup[] = {
- gTVPokemonContestLiveUpdates2Text00,
- gTVPokemonContestLiveUpdates2Text01,
- gTVPokemonContestLiveUpdates2Text02,
- gTVPokemonContestLiveUpdates2Text03
+static const u8 *const sTVLilycoveContestLadyTextGroup[] = {
+ [CONTESTLADYLIVE_STATE_INTRO] = ContestLadyShow_Text_Intro,
+ [CONTESTLADYLIVE_STATE_WON] = ContestLadyShow_Text_Won,
+ [CONTESTLADYLIVE_STATE_LOST] = ContestLadyShow_Text_Lost,
+ [CONTESTLADYLIVE_STATE_LOST_BADLY] = ContestLadyShow_Text_LostBadly
};
static const u8 *const sTVPokemonTodayFailedTextGroup[] = {
@@ -504,13 +511,13 @@ static const u8 *const sTVTodaysRivalTrainerTextGroup[] = {
};
static const u8 *const sTVDewfordTrendWatcherNetworkTextGroup[] = {
- gTVDewfordTrendWatcherNetworkText00,
- gTVDewfordTrendWatcherNetworkText01,
- gTVDewfordTrendWatcherNetworkText02,
- gTVDewfordTrendWatcherNetworkText03,
- gTVDewfordTrendWatcherNetworkText04,
- gTVDewfordTrendWatcherNetworkText05,
- gTVDewfordTrendWatcherNetworkText06
+ [TRENDWATCHER_STATE_INTRO] = TrendWatcher_Text_Intro,
+ [TRENDWATCHER_STATE_TAUGHT_MALE] = TrendWatcher_Text_MaleTaughtMePhrase,
+ [TRENDWATCHER_STATE_TAUGHT_FEMALE] = TrendWatcher_Text_FemaleTaughtMePhrase,
+ [TRENDWATCHER_STATE_PHRASE_HOPELESS] = TrendWatcher_Text_PhraseWasHopeless,
+ [TRENDWATCHER_STATE_BIGGER_MALE] = TrendWatcher_Text_MaleTellMeBigger,
+ [TRENDWATCHER_STATE_BIGGER_FEMALE] = TrendWatcher_Text_FemaleTellMeBigger,
+ [TRENDWATCHER_STATE_OUTRO] = TrendWatcher_Text_Outro
};
static const u8 *const sTVHoennTreasureInvestisatorsTextGroup[] = {
@@ -752,23 +759,18 @@ const u8 sTVSecretBaseSecretsActions[NUM_SECRET_BASE_FLAGS] =
SBSECRETS_NUM_STATES // SECRET_BASE_UNUSED_FLAG. Odd that this is included, if it were used it would overflow sTVSecretBaseSecretsTextGroup
};
-// .text
-
void ClearTVShowData(void)
{
- u8 i;
- u8 j;
+ u8 i, j;
- for (i = 0; i < ARRAY_COUNT(gSaveBlock1Ptr->tvShows); i ++)
+ for (i = 0; i < ARRAY_COUNT(gSaveBlock1Ptr->tvShows); i++)
{
gSaveBlock1Ptr->tvShows[i].commonInit.kind = 0;
gSaveBlock1Ptr->tvShows[i].commonInit.active = 0;
- for (j = 0; j < ARRAY_COUNT(gSaveBlock1Ptr->tvShows[i].commonInit.pad02); j ++)
- {
- gSaveBlock1Ptr->tvShows[i].commonInit.pad02[j] = 0;
- }
+ for (j = 0; j < ARRAY_COUNT(gSaveBlock1Ptr->tvShows[i].commonInit.data); j++)
+ gSaveBlock1Ptr->tvShows[i].commonInit.data[j] = 0;
}
- ClearPokemonNews();
+ ClearPokeNews();
}
u8 GetRandomActiveShowIdx(void)
@@ -778,7 +780,8 @@ u8 GetRandomActiveShowIdx(void)
u8 selIdx;
TVShow *show;
- for (i = 5; i < ARRAY_COUNT(gSaveBlock1Ptr->tvShows) - 1; i ++)
+ // Include all normal TV shows, and up through any present Record Mix shows
+ for (i = NUM_NORMAL_TVSHOW_SLOTS; i < LAST_TVSHOW_IDX; i++)
{
if (gSaveBlock1Ptr->tvShows[i].common.kind == TVSHOW_OFF_AIR)
break;
@@ -787,7 +790,7 @@ u8 GetRandomActiveShowIdx(void)
selIdx = j;
do
{
- if (GetTVChannelByShowType(gSaveBlock1Ptr->tvShows[j].common.kind) != 4)
+ if (GetTVGroupByShowId(gSaveBlock1Ptr->tvShows[j].common.kind) != TVGROUP_OUTBREAK)
{
if (gSaveBlock1Ptr->tvShows[j].common.active == TRUE)
return j;
@@ -802,7 +805,7 @@ u8 GetRandomActiveShowIdx(void)
if (j == 0)
j = ARRAY_COUNT(gSaveBlock1Ptr->tvShows) - 2;
else
- j --;
+ j--;
} while (j != selIdx);
return 0xFF;
@@ -810,88 +813,88 @@ u8 GetRandomActiveShowIdx(void)
u8 FindAnyTVShowOnTheAir(void)
{
- u8 show;
-
- show = GetRandomActiveShowIdx();
- if (show == 0xFF)
- {
+ u8 slot = GetRandomActiveShowIdx();
+ if (slot == 0xFF)
return 0xFF;
- }
- if (gSaveBlock1Ptr->outbreakPokemonSpecies != SPECIES_NONE && gSaveBlock1Ptr->tvShows[show].common.kind == TVSHOW_MASS_OUTBREAK)
- {
+
+ if (gSaveBlock1Ptr->outbreakPokemonSpecies != SPECIES_NONE
+ && gSaveBlock1Ptr->tvShows[slot].common.kind == TVSHOW_MASS_OUTBREAK)
return FindFirstActiveTVShowThatIsNotAMassOutbreak();
- }
- return show;
+
+ return slot;
}
void UpdateTVScreensOnMap(int width, int height)
{
FlagSet(FLAG_SYS_TV_WATCH);
- switch (CheckForBigMovieOrEmergencyNewsOnTV())
+ switch (CheckForPlayersHouseNews())
{
- case 1:
- SetTVMetatilesOnMap(width, height, 0x3);
- break;
- case 2:
- break;
- default:
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(LILYCOVE_CITY_COVE_LILY_MOTEL_1F) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(LILYCOVE_CITY_COVE_LILY_MOTEL_1F))
- {
- SetTVMetatilesOnMap(width, height, 0x3);
- }
- else if (FlagGet(FLAG_SYS_TV_START) && (FindAnyTVShowOnTheAir() != 0xFF || FindAnyTVNewsOnTheAir() != 0xFF || IsTVShowInSearchOfTrainersAiring()))
- {
- FlagClear(FLAG_SYS_TV_WATCH);
- SetTVMetatilesOnMap(width, height, 0x3);
- }
- break;
+ case PLAYERS_HOUSE_TV_LATI:
+ SetTVMetatilesOnMap(width, height, METATILE_Building_TV_On);
+ break;
+ case PLAYERS_HOUSE_TV_MOVIE:
+ // Don't flash TV for movie text in player's house
+ break;
+// case PLAYERS_HOUSE_TV_NONE:
+ default:
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(LILYCOVE_CITY_COVE_LILY_MOTEL_1F)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(LILYCOVE_CITY_COVE_LILY_MOTEL_1F))
+ {
+ // NPC in Lilycove Hotel is always watching TV
+ SetTVMetatilesOnMap(width, height, METATILE_Building_TV_On);
+ }
+ else if (FlagGet(FLAG_SYS_TV_START) && (FindAnyTVShowOnTheAir() != 0xFF || FindAnyPokeNewsOnTheAir() != 0xFF || IsGabbyAndTyShowOnTheAir()))
+ {
+ FlagClear(FLAG_SYS_TV_WATCH);
+ SetTVMetatilesOnMap(width, height, METATILE_Building_TV_On);
+ }
+ break;
}
}
-void SetTVMetatilesOnMap(int width, int height, u16 tileId)
+static void SetTVMetatilesOnMap(int width, int height, u16 tileId)
{
int x;
int y;
- for (y = 0; y < height; y ++)
+ for (y = 0; y < height; y++)
{
- for (x = 0; x < width; x ++)
+ for (x = 0; x < width; x++)
{
if (MapGridGetMetatileBehaviorAt(x, y) == MB_TELEVISION)
- {
MapGridSetMetatileIdAt(x, y, tileId | METATILE_COLLISION_MASK);
- }
}
}
}
void TurnOffTVScreen(void)
{
- SetTVMetatilesOnMap(gBackupMapLayout.width, gBackupMapLayout.height, 0x0002);
+ SetTVMetatilesOnMap(gBackupMapLayout.width, gBackupMapLayout.height, METATILE_Building_TV_Off);
DrawWholeMapView();
}
void TurnOnTVScreen(void)
{
- SetTVMetatilesOnMap(gBackupMapLayout.width, gBackupMapLayout.height, 0x0003);
+ SetTVMetatilesOnMap(gBackupMapLayout.width, gBackupMapLayout.height, METATILE_Building_TV_On);
DrawWholeMapView();
}
+// gSpecialVar_0x8004 here is set from GetRandomActiveShowIdx in EventScript_TryDoTVShow
u8 GetSelectedTVShow(void)
{
return gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004].common.kind;
}
-u8 FindFirstActiveTVShowThatIsNotAMassOutbreak(void)
+static u8 FindFirstActiveTVShowThatIsNotAMassOutbreak(void)
{
u8 i;
- for (i = 0; i < ARRAY_COUNT(gSaveBlock1Ptr->tvShows) - 1; i ++)
+ for (i = 0; i < ARRAY_COUNT(gSaveBlock1Ptr->tvShows) - 1; i++)
{
- if (gSaveBlock1Ptr->tvShows[i].common.kind != TVSHOW_OFF_AIR && gSaveBlock1Ptr->tvShows[i].common.kind != TVSHOW_MASS_OUTBREAK && gSaveBlock1Ptr->tvShows[i].common.active == TRUE)
- {
+ if (gSaveBlock1Ptr->tvShows[i].common.kind != TVSHOW_OFF_AIR
+ && gSaveBlock1Ptr->tvShows[i].common.kind != TVSHOW_MASS_OUTBREAK
+ && gSaveBlock1Ptr->tvShows[i].common.active == TRUE)
return i;
- }
}
return 0xFF;
}
@@ -902,9 +905,8 @@ u8 GetNextActiveShowIfMassOutbreak(void)
tvShow = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
if (tvShow->common.kind == TVSHOW_MASS_OUTBREAK && gSaveBlock1Ptr->outbreakPokemonSpecies != SPECIES_NONE)
- {
return FindFirstActiveTVShowThatIsNotAMassOutbreak();
- }
+
return gSpecialVar_0x8004;
}
@@ -940,28 +942,23 @@ void GabbyAndTyBeforeInterview(void)
gSaveBlock1Ptr->gabbyAndTyData.lastMove = gBattleResults.lastUsedMovePlayer;
if (gSaveBlock1Ptr->gabbyAndTyData.battleNum != 0xFF)
{
- gSaveBlock1Ptr->gabbyAndTyData.battleNum ++;
+ gSaveBlock1Ptr->gabbyAndTyData.battleNum++;
}
gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn = gBattleResults.playerMonWasDamaged;
+
if (gBattleResults.playerFaintCounter != 0)
- {
gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon = TRUE;
- }
else
- {
gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon = FALSE;
- }
+
if (gBattleResults.numHealingItemsUsed != 0)
- {
gSaveBlock1Ptr->gabbyAndTyData.playerUsedHealingItem = TRUE;
- }
else
- {
gSaveBlock1Ptr->gabbyAndTyData.playerUsedHealingItem = FALSE;
- }
+
if (!gBattleResults.usedMasterBall)
{
- for (i = 0; i < POKEBALL_COUNT - 1; i ++)
+ for (i = 0; i < POKEBALL_COUNT - 1; i++)
{
if (gBattleResults.catchAttempts[i])
{
@@ -972,9 +969,11 @@ void GabbyAndTyBeforeInterview(void)
}
else
{
+ // Player threw a Master Ball at Gabby and Ty
gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall = TRUE;
}
- TakeTVShowInSearchOfTrainersOffTheAir();
+
+ TakeGabbyAndTyOffTheAir();
if (gSaveBlock1Ptr->gabbyAndTyData.lastMove == MOVE_NONE)
{
FlagSet(FLAG_TEMP_1);
@@ -992,7 +991,7 @@ void GabbyAndTyAfterInterview(void)
IncrementGameStat(GAME_STAT_GOT_INTERVIEWED);
}
-void TakeTVShowInSearchOfTrainersOffTheAir(void)
+static void TakeGabbyAndTyOffTheAir(void)
{
gSaveBlock1Ptr->gabbyAndTyData.onAir = FALSE;
}
@@ -1000,13 +999,12 @@ void TakeTVShowInSearchOfTrainersOffTheAir(void)
u8 GabbyAndTyGetBattleNum(void)
{
if (gSaveBlock1Ptr->gabbyAndTyData.battleNum > 5)
- {
return (gSaveBlock1Ptr->gabbyAndTyData.battleNum % 3) + 6;
- }
+
return gSaveBlock1Ptr->gabbyAndTyData.battleNum;
}
-bool8 IsTVShowInSearchOfTrainersAiring(void)
+bool8 IsGabbyAndTyShowOnTheAir(void)
{
return gSaveBlock1Ptr->gabbyAndTyData.onAir;
}
@@ -1025,60 +1023,56 @@ bool8 GabbyAndTyGetLastQuote(void)
u8 GabbyAndTyGetLastBattleTrivia(void)
{
if (!gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn2)
- {
return 1;
- }
+
if (gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall2)
- {
return 2;
- }
+
if (gSaveBlock1Ptr->gabbyAndTyData.playerUsedHealingItem2)
- {
return 3;
- }
+
if (gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon2)
- {
return 4;
- }
+
return 0;
}
-void GabbyAndTySetScriptVarsToObjectEventLocalIds(void)
+void GetGabbyAndTyLocalIds(void)
{
switch (GabbyAndTyGetBattleNum())
{
- case 1:
- gSpecialVar_0x8004 = 14;
- gSpecialVar_0x8005 = 13;
- break;
- case 2:
- gSpecialVar_0x8004 = 5;
- gSpecialVar_0x8005 = 6;
- break;
- case 3:
- gSpecialVar_0x8004 = 18;
- gSpecialVar_0x8005 = 17;
- break;
- case 4:
- gSpecialVar_0x8004 = 21;
- gSpecialVar_0x8005 = 22;
- break;
- case 5:
- gSpecialVar_0x8004 = 8;
- gSpecialVar_0x8005 = 9;
- break;
- case 6:
- gSpecialVar_0x8004 = 19;
- gSpecialVar_0x8005 = 20;
- break;
- case 7:
- gSpecialVar_0x8004 = 23;
- gSpecialVar_0x8005 = 24;
- break;
- case 8:
- gSpecialVar_0x8004 = 10;
- gSpecialVar_0x8005 = 11;
- break;
+ case 1:
+ gSpecialVar_0x8004 = 14;
+ gSpecialVar_0x8005 = 13;
+ break;
+ case 2:
+ gSpecialVar_0x8004 = 5;
+ gSpecialVar_0x8005 = 6;
+ break;
+ case 3:
+ gSpecialVar_0x8004 = 18;
+ gSpecialVar_0x8005 = 17;
+ break;
+ case 4:
+ gSpecialVar_0x8004 = 21;
+ gSpecialVar_0x8005 = 22;
+ break;
+ case 5:
+ gSpecialVar_0x8004 = 8;
+ gSpecialVar_0x8005 = 9;
+ break;
+ case 6:
+ gSpecialVar_0x8004 = 19;
+ gSpecialVar_0x8005 = 20;
+ break;
+ case 7:
+ gSpecialVar_0x8004 = 23;
+ gSpecialVar_0x8005 = 24;
+ break;
+ case 8:
+ gSpecialVar_0x8004 = 10;
+ gSpecialVar_0x8005 = 11;
+ break;
}
}
@@ -1086,88 +1080,85 @@ void InterviewAfter(void)
{
switch (gSpecialVar_0x8005)
{
- case TVSHOW_FAN_CLUB_LETTER:
- InterviewAfter_FanClubLetter();
- break;
- case TVSHOW_RECENT_HAPPENINGS:
- InterviewAfter_RecentHappenings();
- break;
- case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
- InterviewAfter_PkmnFanClubOpinions();
- break;
- case TVSHOW_UNKN_SHOWTYPE_04:
- InterviewAfter_DummyShow4();
- break;
- case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
- InterviewAfter_BravoTrainerPokemonProfile();
- break;
- case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
- InterviewAfter_BravoTrainerBattleTowerProfile();
- break;
- case TVSHOW_CONTEST_LIVE_UPDATES:
- InterviewAfter_ContestLiveUpdates();
- break;
+ case TVSHOW_FAN_CLUB_LETTER:
+ InterviewAfter_FanClubLetter();
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ InterviewAfter_RecentHappenings();
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ InterviewAfter_PkmnFanClubOpinions();
+ break;
+ case TVSHOW_DUMMY:
+ InterviewAfter_Dummy();
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ InterviewAfter_BravoTrainerPokemonProfile();
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ InterviewAfter_BravoTrainerBattleTowerProfile();
+ break;
+ case TVSHOW_CONTEST_LIVE_UPDATES:
+ InterviewAfter_ContestLiveUpdates();
+ break;
}
}
-void PutPokemonTodayCaughtOnAir(void)
+void TryPutPokemonTodayOnAir(void)
{
u8 i;
- u16 ct;
+ u16 ballsUsed;
TVShow *show;
u32 language2;
u16 itemLastUsed;
- ct = 0;
- sub_80EED88();
- sub_80ED718();
+ ballsUsed = 0;
+ TryPutRandomPokeNewsOnAir();
+ TryStartRandomMassOutbreak();
+
+ // Try either the Failed or Caught version of the show
if (gBattleResults.caughtMonSpecies == SPECIES_NONE)
{
- PutPokemonTodayFailedOnTheAir();
+ TryPutPokemonTodayFailedOnTheAir();
}
else
{
- UpdateWorldOfMastersAndPutItOnTheAir();
+ InitWorldOfMastersShowAttempt();
if (!rbernoulli(1, 1) && StringCompare(gSpeciesNames[gBattleResults.caughtMonSpecies], gBattleResults.caughtMonNick))
{
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
- if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_POKEMON_TODAY_CAUGHT, FALSE) != TRUE)
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && IsRecordMixShowAlreadySpawned(TVSHOW_POKEMON_TODAY_CAUGHT, FALSE) != TRUE)
{
- for (i = 0; i < POKEBALL_COUNT - 1; i ++)
- {
- ct += gBattleResults.catchAttempts[i];
- }
- if (ct != 0 || gBattleResults.usedMasterBall)
+ for (i = 0; i < POKEBALL_COUNT - 1; i++)
+ ballsUsed += gBattleResults.catchAttempts[i];
+
+ if (ballsUsed != 0 || gBattleResults.usedMasterBall)
{
- ct = 0;
+ ballsUsed = 0;
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->pokemonToday.kind = TVSHOW_POKEMON_TODAY_CAUGHT;
- show->pokemonToday.active = FALSE;
+ show->pokemonToday.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
if (gBattleResults.usedMasterBall)
{
- ct = 1;
+ ballsUsed = 1;
itemLastUsed = ITEM_MASTER_BALL;
}
else
{
- for (i = 0; i < POKEBALL_COUNT - 1; i ++)
- {
- ct += gBattleResults.catchAttempts[i];
- }
- if (ct > 0xFF)
- {
- ct = 0xFF;
- }
+ for (i = 0; i < POKEBALL_COUNT - 1; i++)
+ ballsUsed += gBattleResults.catchAttempts[i];
+ if (ballsUsed > 255)
+ ballsUsed = 255;
itemLastUsed = gLastUsedItem;
}
- show->pokemonToday.nBallsUsed = ct;
+ show->pokemonToday.nBallsUsed = ballsUsed;
show->pokemonToday.ball = itemLastUsed;
StringCopy(show->pokemonToday.playerName, gSaveBlock2Ptr->playerName);
StringCopy(show->pokemonToday.nickname, gBattleResults.caughtMonNick);
language2 = sub_81DB604(show->pokemonToday.nickname);
StripExtCtrlCodes(show->pokemonToday.nickname);
show->pokemonToday.species = gBattleResults.caughtMonSpecies;
- tv_store_id_3x(show);
+ StorePlayerIdInRecordMixShow(show);
show->pokemonToday.language = gGameLanguage;
show->pokemonToday.language2 = language2;
}
@@ -1176,65 +1167,60 @@ void PutPokemonTodayCaughtOnAir(void)
}
}
-void UpdateWorldOfMastersAndPutItOnTheAir(void)
+// Show is initialized in last slot and updated there until it's
+// either triggered or deleted at the end of the day by ResolveWorldOfMastersShow
+static void InitWorldOfMastersShowAttempt(void)
{
- TVShow *show;
-
- show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX];
- if (show->worldOfMasters.kind != TVSHOW_WORLD_OF_MASTERS)
+ TVShow *show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX];
+ if (show->common.kind != TVSHOW_WORLD_OF_MASTERS)
{
DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, LAST_TVSHOW_IDX);
show->worldOfMasters.steps = GetGameStat(GAME_STAT_STEPS);
show->worldOfMasters.kind = TVSHOW_WORLD_OF_MASTERS;
}
- show->worldOfMasters.numPokeCaught ++;
+ show->worldOfMasters.numPokeCaught++;
show->worldOfMasters.caughtPoke = gBattleResults.caughtMonSpecies;
show->worldOfMasters.species = gBattleResults.playerMon1Species;
show->worldOfMasters.location = gMapHeader.regionMapSectionId;
}
-void PutPokemonTodayFailedOnTheAir(void)
+static void TryPutPokemonTodayFailedOnTheAir(void)
{
- u16 ct;
+ u16 ballsUsed;
u8 i;
TVShow *show;
if (!rbernoulli(1, 1))
{
- for (i = 0, ct = 0; i < POKEBALL_COUNT - 1; i ++)
- {
- ct += gBattleResults.catchAttempts[i];
- }
- if (ct > 0xFF)
- {
- ct = 0xFF;
- }
- if (ct > 2 && (gBattleOutcome == B_OUTCOME_MON_FLED || gBattleOutcome == B_OUTCOME_WON))
+ for (i = 0, ballsUsed = 0; i < POKEBALL_COUNT - 1; i++)
+ ballsUsed += gBattleResults.catchAttempts[i];
+ if (ballsUsed > 255)
+ ballsUsed = 255;
+
+ if (ballsUsed > 2 && (gBattleOutcome == B_OUTCOME_MON_FLED || gBattleOutcome == B_OUTCOME_WON))
{
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
- if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_POKEMON_TODAY_FAILED, FALSE) != TRUE)
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && IsRecordMixShowAlreadySpawned(TVSHOW_POKEMON_TODAY_FAILED, FALSE) != TRUE)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->pokemonTodayFailed.kind = TVSHOW_POKEMON_TODAY_FAILED;
- show->pokemonTodayFailed.active = FALSE;
+ show->pokemonTodayFailed.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
show->pokemonTodayFailed.species = gBattleResults.playerMon1Species;
show->pokemonTodayFailed.species2 = gBattleResults.lastOpponentSpecies;
- show->pokemonTodayFailed.nBallsUsed = ct;
+ show->pokemonTodayFailed.nBallsUsed = ballsUsed;
show->pokemonTodayFailed.outcome = gBattleOutcome;
show->pokemonTodayFailed.location = gMapHeader.regionMapSectionId;
StringCopy(show->pokemonTodayFailed.playerName, gSaveBlock2Ptr->playerName);
- tv_store_id_3x(show);
+ StorePlayerIdInRecordMixShow(show);
show->pokemonTodayFailed.language = gGameLanguage;
}
}
}
}
-void tv_store_id_3x(TVShow *show)
+static void StorePlayerIdInRecordMixShow(TVShow *show)
{
- u32 id;
-
- id = GetPlayerIDAsU32();
+ u32 id = GetPlayerIDAsU32();
show->common.srcTrainerId2Lo = id;
show->common.srcTrainerId2Hi = id >> 8;
show->common.srcTrainerIdLo = id;
@@ -1243,11 +1229,9 @@ void tv_store_id_3x(TVShow *show)
show->common.trainerIdHi = id >> 8;
}
-void tv_store_id_2x(TVShow *show)
+static void StorePlayerIdInNormalShow(TVShow *show)
{
- u32 id;
-
- id = GetPlayerIDAsU32();
+ u32 id = GetPlayerIDAsU32();
show->common.srcTrainerIdLo = id;
show->common.srcTrainerIdHi = id >> 8;
show->common.trainerIdLo = id;
@@ -1275,7 +1259,7 @@ static void InterviewAfter_ContestLiveUpdates(void)
show2->contestLiveUpdates.move = show->contestLiveUpdates.move;
show2->contestLiveUpdates.winnerAppealFlag = show->contestLiveUpdates.winnerAppealFlag;
StringCopy(show2->contestLiveUpdates.losingTrainerName, show->contestLiveUpdates.losingTrainerName);
- tv_store_id_2x(show2);
+ StorePlayerIdInNormalShow(show2);
show2->contestLiveUpdates.winningTrainerLanguage = gGameLanguage;
show2->contestLiveUpdates.losingTrainerLanguage = show->contestLiveUpdates.losingTrainerLanguage;
DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, LAST_TVSHOW_IDX);
@@ -1287,44 +1271,36 @@ void PutBattleUpdateOnTheAir(u8 opponentLinkPlayerId, u16 move, u16 speciesPlaye
TVShow *show;
u8 name[32];
- sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ sCurTVShowSlot = FindFirstEmptyNormalTVShowSlot(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1)
{
- FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BATTLE_UPDATE);
- if (gSpecialVar_Result != 1)
+ TryReplaceOldTVShowOfKind(TVSHOW_BATTLE_UPDATE);
+ if (gSpecialVar_Result != TRUE)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->battleUpdate.kind = TVSHOW_BATTLE_UPDATE;
show->battleUpdate.active = TRUE;
StringCopy(show->battleUpdate.playerName, gSaveBlock2Ptr->playerName);
+
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
- {
show->battleUpdate.battleType = 2;
- }
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- {
show->battleUpdate.battleType = 1;
- }
else
- {
show->battleUpdate.battleType = 0;
- }
+
show->battleUpdate.move = move;
show->battleUpdate.speciesPlayer = speciesPlayer;
show->battleUpdate.speciesOpponent = speciesOpponent;
StringCopy(name, gLinkPlayers[opponentLinkPlayerId].name);
StripExtCtrlCodes(name);
StringCopy(show->battleUpdate.linkOpponentName, name);
- tv_store_id_2x(show);
+ StorePlayerIdInNormalShow(show);
show->battleUpdate.language = gGameLanguage;
if (show->battleUpdate.language == LANGUAGE_JAPANESE || gLinkPlayers[opponentLinkPlayerId].language == LANGUAGE_JAPANESE)
- {
show->battleUpdate.linkOpponentLanguage = LANGUAGE_JAPANESE;
- }
else
- {
show->battleUpdate.linkOpponentLanguage = gLinkPlayers[opponentLinkPlayerId].language;
- }
}
}
}
@@ -1334,16 +1310,14 @@ bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 colo
TVShow *show;
u8 name[32];
- sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ sCurTVShowSlot = FindFirstEmptyNormalTVShowSlot(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot == -1)
- {
- return FALSE;
- }
- FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_3_CHEERS_FOR_POKEBLOCKS);
- if (gSpecialVar_Result == 1)
- {
return FALSE;
- }
+
+ TryReplaceOldTVShowOfKind(TVSHOW_3_CHEERS_FOR_POKEBLOCKS);
+ if (gSpecialVar_Result == TRUE)
+ return FALSE; // Old show is still active
+
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->threeCheers.kind = TVSHOW_3_CHEERS_FOR_POKEBLOCKS;
show->threeCheers.active = TRUE;
@@ -1354,16 +1328,12 @@ bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 colo
show->threeCheers.flavor = flavor;
show->threeCheers.color = color;
show->threeCheers.sheen = sheen;
- tv_store_id_2x(show);
+ StorePlayerIdInNormalShow(show);
show->threeCheers.language = gGameLanguage;
if (show->threeCheers.language == LANGUAGE_JAPANESE || language == LANGUAGE_JAPANESE)
- {
show->threeCheers.worstBlenderLanguage = LANGUAGE_JAPANESE;
- }
else
- {
show->threeCheers.worstBlenderLanguage = language;
- }
return TRUE;
}
@@ -1384,16 +1354,12 @@ void PutFanClubSpecialOnTheAir(void)
StringCopy(name, gStringVar1);
StripExtCtrlCodes(name);
StringCopy(show->fanClubSpecial.idolName, name);
- tv_store_id_2x(show);
+ StorePlayerIdInNormalShow(show);
show->fanClubSpecial.language = gGameLanguage;
if (show->fanClubSpecial.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->linkBattleRecords.languages[0] == LANGUAGE_JAPANESE)
- {
show->fanClubSpecial.idolNameLanguage = LANGUAGE_JAPANESE;
- }
else
- {
show->fanClubSpecial.idolNameLanguage = gSaveBlock1Ptr->linkBattleRecords.languages[0];
- }
}
void ContestLiveUpdates_Init(u8 round1Placing)
@@ -1401,7 +1367,7 @@ void ContestLiveUpdates_Init(u8 round1Placing)
TVShow *show;
DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, LAST_TVSHOW_IDX);
- sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ sCurTVShowSlot = FindFirstEmptyNormalTVShowSlot(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1)
{
show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX];
@@ -1412,64 +1378,45 @@ void ContestLiveUpdates_Init(u8 round1Placing)
void ContestLiveUpdates_SetRound2Placing(u8 round2Placing)
{
- TVShow *show;
-
- show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX];
- sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ TVShow *show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX];
+ sCurTVShowSlot = FindFirstEmptyNormalTVShowSlot(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1)
- {
show->contestLiveUpdates.round2Placing = round2Placing;
- }
}
void ContestLiveUpdates_SetWinnerAppealFlag(u8 flag)
{
- TVShow *show;
-
- show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX];
- sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ TVShow *show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX];
+ sCurTVShowSlot = FindFirstEmptyNormalTVShowSlot(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1)
- {
show->contestLiveUpdates.winnerAppealFlag = flag;
- }
}
void ContestLiveUpdates_SetWinnerMoveUsed(u16 move)
{
- TVShow *show;
-
- show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX];
- sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ TVShow *show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX];
+ sCurTVShowSlot = FindFirstEmptyNormalTVShowSlot(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1)
- {
show->contestLiveUpdates.move = move;
- }
}
void ContestLiveUpdates_SetLoserData(u8 flag, u8 loser)
{
- TVShow *show;
-
- show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX];
- sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ TVShow *show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX];
+ sCurTVShowSlot = FindFirstEmptyNormalTVShowSlot(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1)
{
show->contestLiveUpdates.losingSpecies = gContestMons[loser].species;
StringCopy(show->contestLiveUpdates.losingTrainerName, gContestMons[loser].trainerName);
StripExtCtrlCodes(show->contestLiveUpdates.losingTrainerName);
show->contestLiveUpdates.loserAppealFlag = flag;
+
if (loser + 1 > gNumLinkContestPlayers)
- {
show->contestLiveUpdates.losingTrainerLanguage = gLinkPlayers[0].language;
- }
else if (gGameLanguage == LANGUAGE_JAPANESE || gLinkPlayers[loser].language == LANGUAGE_JAPANESE)
- {
show->contestLiveUpdates.losingTrainerLanguage = LANGUAGE_JAPANESE;
- }
else
- {
show->contestLiveUpdates.losingTrainerLanguage = gLinkPlayers[loser].language;
- }
}
}
@@ -1492,27 +1439,21 @@ static void InterviewAfter_BravoTrainerPokemonProfile(void)
show2->bravoTrainer.move = show->bravoTrainer.move;
show2->bravoTrainer.contestResult = show->bravoTrainer.contestResult;
show2->bravoTrainer.contestCategory = show->bravoTrainer.contestCategory;
- tv_store_id_2x(show2);
+ StorePlayerIdInNormalShow(show2);
show2->bravoTrainer.language = gGameLanguage;
if (show2->bravoTrainer.language == LANGUAGE_JAPANESE || show->bravoTrainer.pokemonNameLanguage == LANGUAGE_JAPANESE)
- {
show2->bravoTrainer.pokemonNameLanguage = LANGUAGE_JAPANESE;
- }
else
- {
show2->bravoTrainer.pokemonNameLanguage = show->bravoTrainer.pokemonNameLanguage;
- }
DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, LAST_TVSHOW_IDX);
}
}
void BravoTrainerPokemonProfile_BeforeInterview1(u16 a0)
{
- TVShow *show;
-
- show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX];
+ TVShow *show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX];
InterviewBefore_BravoTrainerPkmnProfile();
- sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ sCurTVShowSlot = FindFirstEmptyNormalTVShowSlot(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1)
{
DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, LAST_TVSHOW_IDX);
@@ -1523,10 +1464,8 @@ void BravoTrainerPokemonProfile_BeforeInterview1(u16 a0)
void BravoTrainerPokemonProfile_BeforeInterview2(u8 contestStandingPlace)
{
- TVShow *show;
-
- show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX];
- sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ TVShow *show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX];
+ sCurTVShowSlot = FindFirstEmptyNormalTVShowSlot(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1)
{
show->bravoTrainer.contestResult = contestStandingPlace;
@@ -1541,9 +1480,7 @@ void BravoTrainerPokemonProfile_BeforeInterview2(u8 contestStandingPlace)
static void InterviewAfter_BravoTrainerBattleTowerProfile(void)
{
- TVShow *show;
-
- show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ TVShow *show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->bravoTrainerTower.kind = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE;
show->bravoTrainerTower.active = TRUE;
StringCopy(show->bravoTrainerTower.trainerName, gSaveBlock2Ptr->playerName);
@@ -1553,27 +1490,19 @@ static void InterviewAfter_BravoTrainerBattleTowerProfile(void)
show->bravoTrainerTower.numFights = GetCurrentBattleTowerWinStreak(gSaveBlock2Ptr->frontier.towerLvlMode, 0);
show->bravoTrainerTower.wonTheChallenge = gSaveBlock2Ptr->frontier.towerBattleOutcome;
if (gSaveBlock2Ptr->frontier.towerLvlMode == FRONTIER_LVL_50)
- {
show->bravoTrainerTower.btLevel = 50;
- }
else
- {
show->bravoTrainerTower.btLevel = 100;
- }
show->bravoTrainerTower.interviewResponse = gSpecialVar_0x8004;
- tv_store_id_2x(show);
+ StorePlayerIdInNormalShow(show);
show->bravoTrainerTower.language = gGameLanguage;
if (show->bravoTrainerTower.language == LANGUAGE_JAPANESE || gSaveBlock2Ptr->frontier.towerInterview.opponentLanguage == LANGUAGE_JAPANESE)
- {
show->bravoTrainerTower.pokemonNameLanguage = LANGUAGE_JAPANESE;
- }
else
- {
show->bravoTrainerTower.pokemonNameLanguage = gSaveBlock2Ptr->frontier.towerInterview.opponentLanguage;
- }
}
-void SaveRecordedItemPurchasesForTVShow(void)
+void TryPutSmartShopperOnAir(void)
{
TVShow *show;
u8 i;
@@ -1582,24 +1511,24 @@ void SaveRecordedItemPurchasesForTVShow(void)
&& !(gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_MART) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_MART))
&& !rbernoulli(1, 3))
{
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
- if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_SMART_SHOPPER, FALSE) != TRUE)
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && IsRecordMixShowAlreadySpawned(TVSHOW_SMART_SHOPPER, FALSE) != TRUE)
{
- TV_SortPurchasesByQuantity();
+ SortPurchasesByQuantity();
if (gMartPurchaseHistory[0].quantity >= 20)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->smartshopperShow.kind = TVSHOW_SMART_SHOPPER;
- show->smartshopperShow.active = FALSE;
+ show->smartshopperShow.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
show->smartshopperShow.shopLocation = gMapHeader.regionMapSectionId;
- for (i = 0; i < 3; i ++)
+ for (i = 0; i < SMARTSHOPPER_NUM_ITEMS; i++)
{
show->smartshopperShow.itemIds[i] = gMartPurchaseHistory[i].itemId;
show->smartshopperShow.itemAmounts[i] = gMartPurchaseHistory[i].quantity;
}
show->smartshopperShow.priceReduced = GetPriceReduction(POKENEWS_SLATEPORT);
StringCopy(show->smartshopperShow.playerName, gSaveBlock2Ptr->playerName);
- tv_store_id_3x(show);
+ StorePlayerIdInRecordMixShow(show);
show->smartshopperShow.language = gGameLanguage;
}
}
@@ -1622,11 +1551,11 @@ void PutNameRaterShowOnTheAir(void)
show->nameRaterShow.species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL);
show->nameRaterShow.random = Random() % 3;
show->nameRaterShow.random2 = Random() % 2;
- show->nameRaterShow.randomSpecies = TV_GetSomeOtherSpeciesAlreadySeenByPlayer(show->nameRaterShow.species);
+ show->nameRaterShow.randomSpecies = GetRandomDifferentSpeciesSeenByPlayer(show->nameRaterShow.species);
StringCopy(show->nameRaterShow.trainerName, gSaveBlock2Ptr->playerName);
GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, show->nameRaterShow.pokemonName);
StripExtCtrlCodes(show->nameRaterShow.pokemonName);
- tv_store_id_2x(show);
+ StorePlayerIdInNormalShow(show);
show->nameRaterShow.language = gGameLanguage;
show->nameRaterShow.pokemonNameLanguage = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_LANGUAGE);
}
@@ -1635,9 +1564,7 @@ void PutNameRaterShowOnTheAir(void)
void StartMassOutbreak(void)
{
- TVShow *show;
-
- show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ TVShow *show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
gSaveBlock1Ptr->outbreakPokemonSpecies = show->massOutbreak.species;
gSaveBlock1Ptr->outbreakLocationMapNum = show->massOutbreak.locationMapNum;
gSaveBlock1Ptr->outbreakLocationMapGroup = show->massOutbreak.locationMapGroup;
@@ -1657,52 +1584,46 @@ void PutLilycoveContestLadyShowOnTheAir(void)
{
TVShow *show;
- sub_80EFA88();
+ Script_FindFirstEmptyNormalTVShowSlot();
if (gSpecialVar_Result != TRUE)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
- BufferContestLadyLanguage(&show->contestLiveUpdates2.language);
- show->contestLiveUpdates2.pokemonNameLanguage = GAME_LANGUAGE;
- show->contestLiveUpdates2.kind = TVSHOW_CONTEST_LIVE_UPDATES_2;
- show->contestLiveUpdates2.active = TRUE;
- BufferContestLadyPlayerName(show->contestLiveUpdates2.playerName);
- BufferContestLadyMonName(&show->contestLiveUpdates2.contestCategory, show->contestLiveUpdates2.nickname);
- show->contestLiveUpdates2.pokeblockState = sub_818E880();
- tv_store_id_2x(show);
+ BufferContestLadyLanguage(&show->contestLady.language);
+ show->contestLady.pokemonNameLanguage = GAME_LANGUAGE;
+ show->contestLady.kind = TVSHOW_LILYCOVE_CONTEST_LADY;
+ show->contestLady.active = TRUE;
+ BufferContestLadyPlayerName(show->contestLady.playerName);
+ BufferContestLadyMonName(&show->contestLady.contestCategory, show->contestLady.nickname);
+ show->contestLady.pokeblockState = GetContestLadyPokeblockState();
+ StorePlayerIdInNormalShow(show);
}
}
static void InterviewAfter_FanClubLetter(void)
{
- TVShow *show;
-
- show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ TVShow *show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->fanclubLetter.kind = TVSHOW_FAN_CLUB_LETTER;
show->fanclubLetter.active = TRUE;
StringCopy(show->fanclubLetter.playerName, gSaveBlock2Ptr->playerName);
show->fanclubLetter.species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL);
- tv_store_id_2x(show);
+ StorePlayerIdInNormalShow(show);
show->fanclubLetter.language = gGameLanguage;
}
static void InterviewAfter_RecentHappenings(void)
{
- TVShow *show;
-
- show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ TVShow *show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->recentHappenings.kind = TVSHOW_RECENT_HAPPENINGS;
show->recentHappenings.active = TRUE;
StringCopy(show->recentHappenings.playerName, gSaveBlock2Ptr->playerName);
- show->recentHappenings.var02 = 0;
- tv_store_id_2x(show);
+ show->recentHappenings.species = SPECIES_NONE;
+ StorePlayerIdInNormalShow(show);
show->recentHappenings.language = gGameLanguage;
}
static void InterviewAfter_PkmnFanClubOpinions(void)
{
- TVShow *show;
-
- show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ TVShow *show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->fanclubOpinions.kind = TVSHOW_PKMN_FAN_CLUB_OPINIONS;
show->fanclubOpinions.active = TRUE;
show->fanclubOpinions.friendshipHighNybble = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_FRIENDSHIP, NULL) >> 4;
@@ -1711,26 +1632,20 @@ static void InterviewAfter_PkmnFanClubOpinions(void)
GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, show->fanclubOpinions.nickname);
StripExtCtrlCodes(show->fanclubOpinions.nickname);
show->fanclubOpinions.species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL);
- tv_store_id_2x(show);
+ StorePlayerIdInNormalShow(show);
show->fanclubOpinions.language = gGameLanguage;
if (gGameLanguage == LANGUAGE_JAPANESE || GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE)
- {
show->fanclubOpinions.pokemonNameLanguage = LANGUAGE_JAPANESE;
- }
else
- {
show->fanclubOpinions.pokemonNameLanguage = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_LANGUAGE);
- }
}
-static void InterviewAfter_DummyShow4(void)
+static void InterviewAfter_Dummy(void)
{
- TVShow *show;
-
- show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ TVShow *show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
}
-static void sub_80ED718(void)
+static void TryStartRandomMassOutbreak(void)
{
u8 i;
u16 outbreakIdx;
@@ -1738,16 +1653,14 @@ static void sub_80ED718(void)
if (FlagGet(FLAG_SYS_GAME_CLEAR))
{
- for (i = 0; i < LAST_TVSHOW_IDX; i ++)
+ for (i = 0; i < LAST_TVSHOW_IDX; i++)
{
if (gSaveBlock1Ptr->tvShows[i].common.kind == TVSHOW_MASS_OUTBREAK)
- {
return;
- }
}
if (!rbernoulli(1, 200))
{
- sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ sCurTVShowSlot = FindFirstEmptyNormalTVShowSlot(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1)
{
outbreakIdx = Random() % ARRAY_COUNT(sPokeOutbreakSpeciesList);
@@ -1769,7 +1682,7 @@ static void sub_80ED718(void)
show->massOutbreak.probability = 50;
show->massOutbreak.var15 = 0;
show->massOutbreak.daysLeft = 1;
- tv_store_id_2x(show);
+ StorePlayerIdInNormalShow(show);
show->massOutbreak.language = gGameLanguage;
}
}
@@ -1797,9 +1710,9 @@ void UpdateTVShowsPerDay(u16 days)
{
UpdateMassOutbreakTimeLeft(days);
TryEndMassOutbreak(days);
- sub_80EF120(days);
- sub_80EDA48(days);
- sub_80EEB98(days);
+ UpdatePokeNewsTimeLeft(days);
+ ResolveWorldOfMastersShow(days);
+ ResolveNumberOneShow(days);
}
static void UpdateMassOutbreakTimeLeft(u16 days)
@@ -1809,7 +1722,7 @@ static void UpdateMassOutbreakTimeLeft(u16 days)
if (gSaveBlock1Ptr->outbreakPokemonSpecies == SPECIES_NONE)
{
- for (i = 0; i < LAST_TVSHOW_IDX; i ++)
+ for (i = 0; i < LAST_TVSHOW_IDX; i++)
{
if (gSaveBlock1Ptr->tvShows[i].massOutbreak.kind == TVSHOW_MASS_OUTBREAK && gSaveBlock1Ptr->tvShows[i].massOutbreak.active == TRUE)
{
@@ -1838,7 +1751,7 @@ void RecordFishingAttemptForTV(bool8 caughtFish)
if (caughtFish)
{
if (sPokemonAnglerAttemptCounters >> 8 > 4)
- PutFishingAdviceShowOnTheAir();
+ TryPutFishingAdviceOnAir();
sPokemonAnglerAttemptCounters &= 0xFF;
if (sPokemonAnglerAttemptCounters != 0xFF)
@@ -1847,7 +1760,7 @@ void RecordFishingAttemptForTV(bool8 caughtFish)
else
{
if ((u8)sPokemonAnglerAttemptCounters > 4)
- PutFishingAdviceShowOnTheAir();
+ TryPutFishingAdviceOnAir();
sPokemonAnglerAttemptCounters &= 0xFF00;
if (sPokemonAnglerAttemptCounters >> 8 != 0xFF)
@@ -1855,21 +1768,21 @@ void RecordFishingAttemptForTV(bool8 caughtFish)
}
}
-void PutFishingAdviceShowOnTheAir(void)
+static void TryPutFishingAdviceOnAir(void)
{
TVShow *show;
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
- if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_FISHING_ADVICE, FALSE) != TRUE)
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && IsRecordMixShowAlreadySpawned(TVSHOW_FISHING_ADVICE, FALSE) != TRUE)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->pokemonAngler.kind = TVSHOW_FISHING_ADVICE;
- show->pokemonAngler.active = FALSE;
+ show->pokemonAngler.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
show->pokemonAngler.nBites = sPokemonAnglerAttemptCounters;
show->pokemonAngler.nFails = sPokemonAnglerAttemptCounters >> 8;
show->pokemonAngler.species = sPokemonAnglerSpecies;
StringCopy(show->pokemonAngler.playerName, gSaveBlock2Ptr->playerName);
- tv_store_id_3x(show);
+ StorePlayerIdInRecordMixShow(show);
show->pokemonAngler.language = gGameLanguage;
}
}
@@ -1879,7 +1792,11 @@ void SetPokemonAnglerSpecies(u16 species)
sPokemonAnglerSpecies = species;
}
-static void sub_80EDA48(u16 days)
+// World of Masters is initialized in the last slot by InitWorldOfMastersShowAttempt
+// If enough Pokémon were caught during the day the show can be put on air (and will
+// be moved out of the last slot).
+// Either way the temporary version of the show in the last slot is deleted.
+static void ResolveWorldOfMastersShow(u16 days)
{
TVShow *show;
@@ -1887,14 +1804,13 @@ static void sub_80EDA48(u16 days)
if (show->worldOfMasters.kind == TVSHOW_WORLD_OF_MASTERS)
{
if (show->worldOfMasters.numPokeCaught >= 20)
- {
- sub_80EDA80();
- }
+ TryPutWorldOfMastersOnAir();
+
DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, LAST_TVSHOW_IDX);
}
}
-void sub_80EDA80(void)
+static void TryPutWorldOfMastersOnAir(void)
{
TVShow *show;
TVShow *show2;
@@ -1902,19 +1818,19 @@ void sub_80EDA80(void)
show = &gSaveBlock1Ptr->tvShows[LAST_TVSHOW_IDX];
if (!rbernoulli(1, 1))
{
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
- if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_WORLD_OF_MASTERS, FALSE) != TRUE)
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && IsRecordMixShowAlreadySpawned(TVSHOW_WORLD_OF_MASTERS, FALSE) != TRUE)
{
show2 = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show2->worldOfMasters.kind = TVSHOW_WORLD_OF_MASTERS;
- show2->worldOfMasters.active = FALSE;
+ show2->worldOfMasters.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
show2->worldOfMasters.numPokeCaught = show->worldOfMasters.numPokeCaught;
show2->worldOfMasters.steps = GetGameStat(GAME_STAT_STEPS) - show->worldOfMasters.steps;
show2->worldOfMasters.caughtPoke = show->worldOfMasters.caughtPoke;
show2->worldOfMasters.species = show->worldOfMasters.species;
show2->worldOfMasters.location = show->worldOfMasters.location;
StringCopy(show2->worldOfMasters.playerName, gSaveBlock2Ptr->playerName);
- tv_store_id_3x(show2);
+ StorePlayerIdInRecordMixShow(show2);
show2->worldOfMasters.language = gGameLanguage;
DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, LAST_TVSHOW_IDX);
}
@@ -1927,66 +1843,57 @@ void TryPutTodaysRivalTrainerOnAir(void)
u32 i;
u8 nBadges;
- HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_TODAYS_RIVAL_TRAINER, TRUE);
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ IsRecordMixShowAlreadySpawned(TVSHOW_TODAYS_RIVAL_TRAINER, TRUE); // Delete old version of show
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->rivalTrainer.kind = TVSHOW_TODAYS_RIVAL_TRAINER;
- show->rivalTrainer.active = FALSE;
- for (i = FLAG_BADGE01_GET, nBadges = 0; i < FLAG_BADGE01_GET + NUM_BADGES; i ++)
+ show->rivalTrainer.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
+ for (i = FLAG_BADGE01_GET, nBadges = 0; i < FLAG_BADGE01_GET + NUM_BADGES; i++)
{
if (FlagGet(i))
- {
- nBadges ++;
- }
+ nBadges++;
}
show->rivalTrainer.badgeCount = nBadges;
if (IsNationalPokedexEnabled())
- {
show->rivalTrainer.dexCount = GetNationalPokedexCount(FLAG_GET_CAUGHT);
- }
else
- {
show->rivalTrainer.dexCount = GetHoennPokedexCount(FLAG_GET_CAUGHT);
- }
show->rivalTrainer.location = gMapHeader.regionMapSectionId;
show->rivalTrainer.mapLayoutId = gMapHeader.mapLayoutId;
show->rivalTrainer.nSilverSymbols = 0;
show->rivalTrainer.nGoldSymbols = 0;
- for (i = 0; i < 7; i ++)
+ for (i = 0; i < 7; i++)
{
if (FlagGet(sSilverSymbolFlags[i]) == TRUE)
- {
- show->rivalTrainer.nSilverSymbols ++;
- }
+ show->rivalTrainer.nSilverSymbols++;
+
if (FlagGet(sGoldSymbolFlags[i]) == TRUE)
- {
- show->rivalTrainer.nGoldSymbols ++;
- }
+ show->rivalTrainer.nGoldSymbols++;
}
show->rivalTrainer.battlePoints = gSaveBlock2Ptr->frontier.battlePoints;
StringCopy(show->rivalTrainer.playerName, gSaveBlock2Ptr->playerName);
- tv_store_id_3x(show);
+ StorePlayerIdInRecordMixShow(show);
show->rivalTrainer.language = gGameLanguage;
}
}
-void sub_80EDC60(const u16 *words)
+void TryPutTrendWatcherOnAir(const u16 *words)
{
TVShow *show;
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
- if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_TREND_WATCHER, FALSE) != TRUE)
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && IsRecordMixShowAlreadySpawned(TVSHOW_TREND_WATCHER, FALSE) != TRUE)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->trendWatcher.kind = TVSHOW_TREND_WATCHER;
- show->trendWatcher.active = FALSE;
+ show->trendWatcher.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
show->trendWatcher.gender = gSaveBlock2Ptr->playerGender;
show->trendWatcher.words[0] = words[0];
show->trendWatcher.words[1] = words[1];
StringCopy(show->trendWatcher.playerName, gSaveBlock2Ptr->playerName);
- tv_store_id_3x(show);
+ StorePlayerIdInRecordMixShow(show);
show->trendWatcher.language = gGameLanguage;
}
}
@@ -1995,70 +1902,70 @@ void TryPutTreasureInvestigatorsOnAir(void)
{
TVShow *show;
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
- if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_TREASURE_INVESTIGATORS, FALSE) != TRUE)
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && IsRecordMixShowAlreadySpawned(TVSHOW_TREASURE_INVESTIGATORS, FALSE) != TRUE)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->treasureInvestigators.kind = TVSHOW_TREASURE_INVESTIGATORS;
- show->treasureInvestigators.active = FALSE;
+ show->treasureInvestigators.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
show->treasureInvestigators.item = gSpecialVar_0x8005;
show->treasureInvestigators.location = gMapHeader.regionMapSectionId;
show->treasureInvestigators.mapLayoutId = gMapHeader.mapLayoutId;
StringCopy(show->treasureInvestigators.playerName, gSaveBlock2Ptr->playerName);
- tv_store_id_3x(show);
+ StorePlayerIdInRecordMixShow(show);
show->treasureInvestigators.language = gGameLanguage;
}
}
-void AlertTVOfNewCoinTotal(u16 nCoinsPaidOut)
+void TryPutFindThatGamerOnAir(u16 nCoinsPaidOut)
{
TVShow *show;
bool8 flag;
u16 nCoinsWon;
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
- if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_FIND_THAT_GAMER, FALSE) != TRUE)
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && IsRecordMixShowAlreadySpawned(TVSHOW_FIND_THAT_GAMER, FALSE) != TRUE)
{
flag = FALSE;
switch (sFindThatGamerWhichGame)
{
- case SLOT_MACHINE:
- if (nCoinsPaidOut >= sFindThatGamerCoinsSpent + 200)
- {
- flag = TRUE;
- nCoinsWon = nCoinsPaidOut - sFindThatGamerCoinsSpent;
- break;
- }
- if (sFindThatGamerCoinsSpent >= 100 && nCoinsPaidOut <= sFindThatGamerCoinsSpent - 100)
- {
- nCoinsWon = sFindThatGamerCoinsSpent - nCoinsPaidOut;
- break;
- }
- return;
- case ROULETTE:
- if (nCoinsPaidOut >= sFindThatGamerCoinsSpent + 50)
- {
- flag = TRUE;
- nCoinsWon = nCoinsPaidOut - sFindThatGamerCoinsSpent;
- break;
- }
- if (sFindThatGamerCoinsSpent >= 50 && nCoinsPaidOut <= sFindThatGamerCoinsSpent - 50)
- {
- nCoinsWon = sFindThatGamerCoinsSpent - nCoinsPaidOut;
- break;
- }
- return;
- default:
- return;
+ case SLOT_MACHINE:
+ if (nCoinsPaidOut >= sFindThatGamerCoinsSpent + 200)
+ {
+ flag = TRUE;
+ nCoinsWon = nCoinsPaidOut - sFindThatGamerCoinsSpent;
+ break;
+ }
+ if (sFindThatGamerCoinsSpent >= 100 && nCoinsPaidOut <= sFindThatGamerCoinsSpent - 100)
+ {
+ nCoinsWon = sFindThatGamerCoinsSpent - nCoinsPaidOut;
+ break;
+ }
+ return;
+ case ROULETTE:
+ if (nCoinsPaidOut >= sFindThatGamerCoinsSpent + 50)
+ {
+ flag = TRUE;
+ nCoinsWon = nCoinsPaidOut - sFindThatGamerCoinsSpent;
+ break;
+ }
+ if (sFindThatGamerCoinsSpent >= 50 && nCoinsPaidOut <= sFindThatGamerCoinsSpent - 50)
+ {
+ nCoinsWon = sFindThatGamerCoinsSpent - nCoinsPaidOut;
+ break;
+ }
+ return;
+ default:
+ return;
}
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->findThatGamer.kind = TVSHOW_FIND_THAT_GAMER;
- show->findThatGamer.active = FALSE;
+ show->findThatGamer.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
show->findThatGamer.nCoins = nCoinsWon;
show->findThatGamer.whichGame = sFindThatGamerWhichGame;
show->findThatGamer.won = flag;
StringCopy(show->findThatGamer.playerName, gSaveBlock2Ptr->playerName);
- tv_store_id_3x(show);
+ StorePlayerIdInRecordMixShow(show);
show->findThatGamer.language = gGameLanguage;
}
}
@@ -2075,71 +1982,64 @@ void AlertTVThatPlayerPlayedRoulette(u16 nCoinsSpent)
sFindThatGamerCoinsSpent = nCoinsSpent;
}
-static void sub_80EDE98(TVShow *show)
+static void SecretBaseVisit_CalculateDecorationData(TVShow *show)
{
- u8 i;
- u8 j;
+ u8 i, j;
u16 k;
u8 n;
- u8 deco;
+ u8 decoration;
- for (i = 0; i < DECOR_MAX_SECRET_BASE; i ++)
- {
+ for (i = 0; i < DECOR_MAX_SECRET_BASE; i++)
sTV_DecorationsBuffer[i] = 0;
- }
- for (i = 0, n = 0; i < DECOR_MAX_SECRET_BASE; i ++)
+
+ for (i = 0, n = 0; i < DECOR_MAX_SECRET_BASE; i++)
{
- deco = gSaveBlock1Ptr->secretBases[0].decorations[i];
- if (deco)
+ decoration = gSaveBlock1Ptr->secretBases[0].decorations[i];
+ if (decoration)
{
- for (j = 0; j < DECOR_MAX_SECRET_BASE; j ++)
+ for (j = 0; j < DECOR_MAX_SECRET_BASE; j++)
{
if (sTV_DecorationsBuffer[j] == 0)
{
- sTV_DecorationsBuffer[j] = deco;
- n ++;
+ sTV_DecorationsBuffer[j] = decoration;
+ n++;
break;
}
- if (sTV_DecorationsBuffer[j] == deco)
- {
+ if (sTV_DecorationsBuffer[j] == decoration)
break;
- }
}
}
}
+
if (n > 4)
- {
show->secretBaseVisit.nDecorations = 4;
- }
else
- {
show->secretBaseVisit.nDecorations = n;
- }
+
switch (show->secretBaseVisit.nDecorations)
{
- case 0:
- break;
- case 1:
- show->secretBaseVisit.decorations[0] = sTV_DecorationsBuffer[0];
- break;
- default:
- for (k = 0; k < n * n; k ++)
- {
- deco = Random() % n;
- j = Random() % n;
- i = sTV_DecorationsBuffer[deco];
- sTV_DecorationsBuffer[deco] = sTV_DecorationsBuffer[j];
- sTV_DecorationsBuffer[j] = i;
- }
- for (i = 0; i < show->secretBaseVisit.nDecorations; i ++)
- {
- show->secretBaseVisit.decorations[i] = sTV_DecorationsBuffer[i];
- }
- break;
+ case 0:
+ break;
+ case 1:
+ show->secretBaseVisit.decorations[0] = sTV_DecorationsBuffer[0];
+ break;
+ default:
+ for (k = 0; k < n * n; k++)
+ {
+ decoration = Random() % n;
+ j = Random() % n;
+ i = sTV_DecorationsBuffer[decoration];
+ sTV_DecorationsBuffer[decoration] = sTV_DecorationsBuffer[j];
+ sTV_DecorationsBuffer[j] = i;
+ }
+
+ for (i = 0; i < show->secretBaseVisit.nDecorations; i++)
+ show->secretBaseVisit.decorations[i] = sTV_DecorationsBuffer[i];
+ break;
}
}
-static void sub_80EDFB4(TVShow *show)
+static void SecretBaseVisit_CalculatePartyData(TVShow *show)
{
u8 i;
u16 move;
@@ -2148,7 +2048,7 @@ static void sub_80EDFB4(TVShow *show)
u8 nPokemon;
u16 sum;
- for (i = 0, nPokemon = 0; i < PARTY_SIZE; i ++)
+ for (i = 0, nPokemon = 0; i < PARTY_SIZE; i++)
{
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
{
@@ -2159,128 +2059,119 @@ static void sub_80EDFB4(TVShow *show)
if (move != MOVE_NONE)
{
sTV_SecretBaseVisitMovesTemp[nMoves] = move;
- nMoves ++;
+ nMoves++;
}
move = GetMonData(&gPlayerParty[i], MON_DATA_MOVE2);
if (move != MOVE_NONE)
{
sTV_SecretBaseVisitMovesTemp[nMoves] = move;
- nMoves ++;
+ nMoves++;
}
move = GetMonData(&gPlayerParty[i], MON_DATA_MOVE3);
if (move != MOVE_NONE)
{
sTV_SecretBaseVisitMovesTemp[nMoves] = move;
- nMoves ++;
+ nMoves++;
}
move = GetMonData(&gPlayerParty[i], MON_DATA_MOVE4);
if (move != MOVE_NONE)
{
sTV_SecretBaseVisitMovesTemp[nMoves] = move;
- nMoves ++;
+ nMoves++;
}
sTV_SecretBaseVisitMonsTemp[nPokemon].move = sTV_SecretBaseVisitMovesTemp[Random() % nMoves];
- nPokemon ++;
+ nPokemon++;
}
}
- for (i = 0, sum = 0; i < nPokemon; i ++)
- {
+ for (i = 0, sum = 0; i < nPokemon; i++)
sum += sTV_SecretBaseVisitMonsTemp[i].level;
- }
+
show->secretBaseVisit.avgLevel = sum / nPokemon;
j = Random() % nPokemon;
show->secretBaseVisit.species = sTV_SecretBaseVisitMonsTemp[j].species;
show->secretBaseVisit.move = sTV_SecretBaseVisitMonsTemp[j].move;
}
-void TV_PutSecretBaseVisitOnTheAir(void)
+void TryPutSecretBaseVisitOnAir(void)
{
TVShow *show;
- HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_SECRET_BASE_VISIT, TRUE);
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ IsRecordMixShowAlreadySpawned(TVSHOW_SECRET_BASE_VISIT, TRUE); // Delete old version of show
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->secretBaseVisit.kind = TVSHOW_SECRET_BASE_VISIT;
- show->secretBaseVisit.active = FALSE;
+ show->secretBaseVisit.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
StringCopy(show->secretBaseVisit.playerName, gSaveBlock2Ptr->playerName);
- sub_80EDE98(show);
- sub_80EDFB4(show);
- tv_store_id_3x(show);
+ SecretBaseVisit_CalculateDecorationData(show);
+ SecretBaseVisit_CalculatePartyData(show);
+ StorePlayerIdInRecordMixShow(show);
show->secretBaseVisit.language = gGameLanguage;
}
}
-void sub_80EE184(void)
+void TryPutBreakingNewsOnAir(void)
{
TVShow *show;
u8 i;
u16 balls;
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
- if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_BREAKING_NEWS, FALSE) != TRUE)
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && IsRecordMixShowAlreadySpawned(TVSHOW_BREAKING_NEWS, FALSE) != TRUE)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->breakingNews.kind = TVSHOW_BREAKING_NEWS;
- show->breakingNews.active = FALSE;
+ show->breakingNews.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
balls = 0;
- for (i = 0; i < POKEBALL_COUNT - 1; i ++)
- {
+ for (i = 0; i < POKEBALL_COUNT - 1; i++)
balls += gBattleResults.catchAttempts[i];
- }
+
if (gBattleResults.usedMasterBall)
- {
- balls ++;
- }
+ balls++;
show->breakingNews.location = gMapHeader.regionMapSectionId;
StringCopy(show->breakingNews.playerName, gSaveBlock2Ptr->playerName);
show->breakingNews.poke1Species = gBattleResults.playerMon1Species;
switch (gBattleOutcome)
{
- case B_OUTCOME_LOST:
- case B_OUTCOME_DREW:
- show->breakingNews.kind = TVSHOW_OFF_AIR;
- return;
- case B_OUTCOME_CAUGHT:
- show->breakingNews.outcome = 0;
- break;
- case B_OUTCOME_WON:
- show->breakingNews.outcome = 1;
- break;
- case B_OUTCOME_RAN:
- case B_OUTCOME_PLAYER_TELEPORTED:
- case B_OUTCOME_NO_SAFARI_BALLS:
- show->breakingNews.outcome = 2;
- break;
- case B_OUTCOME_MON_FLED:
- case B_OUTCOME_MON_TELEPORTED:
- show->breakingNews.outcome = 3;
- break;
+ case B_OUTCOME_LOST:
+ case B_OUTCOME_DREW:
+ show->breakingNews.kind = TVSHOW_OFF_AIR;
+ return;
+ case B_OUTCOME_CAUGHT:
+ show->breakingNews.outcome = 0;
+ break;
+ case B_OUTCOME_WON:
+ show->breakingNews.outcome = 1;
+ break;
+ case B_OUTCOME_RAN:
+ case B_OUTCOME_PLAYER_TELEPORTED:
+ case B_OUTCOME_NO_SAFARI_BALLS:
+ show->breakingNews.outcome = 2;
+ break;
+ case B_OUTCOME_MON_FLED:
+ case B_OUTCOME_MON_TELEPORTED:
+ show->breakingNews.outcome = 3;
+ break;
}
show->breakingNews.lastOpponentSpecies = gBattleResults.lastOpponentSpecies;
switch (show->breakingNews.outcome)
{
- case 0:
- if (gBattleResults.usedMasterBall)
- {
- show->breakingNews.caughtMonBall = ITEM_MASTER_BALL;
- }
- else
- {
- show->breakingNews.caughtMonBall = gBattleResults.caughtMonBall;
- }
- show->breakingNews.balls = balls;
- break;
- case 1:
- show->breakingNews.lastUsedMove = gBattleResults.lastUsedMovePlayer;
- break;
- case 2:
- break;
- case 3:
- break;
+ case 0:
+ if (gBattleResults.usedMasterBall)
+ show->breakingNews.caughtMonBall = ITEM_MASTER_BALL;
+ else
+ show->breakingNews.caughtMonBall = gBattleResults.caughtMonBall;
+ show->breakingNews.balls = balls;
+ break;
+ case 1:
+ show->breakingNews.lastUsedMove = gBattleResults.lastUsedMovePlayer;
+ break;
+ case 2:
+ case 3:
+ break;
}
- tv_store_id_3x(show);
+ StorePlayerIdInRecordMixShow(show);
show->breakingNews.language = gGameLanguage;
}
}
@@ -2289,16 +2180,16 @@ void TryPutLotteryWinnerReportOnAir(void)
{
TVShow *show;
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
- if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_LOTTO_WINNER, FALSE) != TRUE)
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && IsRecordMixShowAlreadySpawned(TVSHOW_LOTTO_WINNER, FALSE) != TRUE)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->lottoWinner.kind = TVSHOW_LOTTO_WINNER;
- show->lottoWinner.active = FALSE;
+ show->lottoWinner.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
StringCopy(show->lottoWinner.playerName, gSaveBlock2Ptr->playerName);
show->lottoWinner.whichPrize = 4 - gSpecialVar_0x8004;
show->lottoWinner.item = gSpecialVar_0x8005;
- tv_store_id_3x(show);
+ StorePlayerIdInRecordMixShow(show);
show->lottoWinner.language = gGameLanguage;
}
}
@@ -2309,45 +2200,45 @@ void TryPutBattleSeminarOnAir(u16 foeSpecies, u16 species, u8 moveIdx, const u16
u8 i;
u8 j;
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
- if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_BATTLE_SEMINAR, FALSE) != TRUE)
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && IsRecordMixShowAlreadySpawned(TVSHOW_BATTLE_SEMINAR, FALSE) != TRUE)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->battleSeminar.kind = TVSHOW_BATTLE_SEMINAR;
- show->battleSeminar.active = FALSE;
+ show->battleSeminar.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
StringCopy(show->battleSeminar.playerName, gSaveBlock2Ptr->playerName);
show->battleSeminar.foeSpecies = foeSpecies;
show->battleSeminar.species = species;
show->battleSeminar.move = movePtr[moveIdx];
- for (i = 0, j = 0; i < MAX_MON_MOVES; i ++)
+ for (i = 0, j = 0; i < MAX_MON_MOVES; i++)
{
if (i != moveIdx && movePtr[i])
{
show->battleSeminar.otherMoves[j] = movePtr[i];
- j ++;
+ j++;
}
}
show->battleSeminar.nOtherMoves = j;
show->battleSeminar.betterMove = betterMove;
- tv_store_id_3x(show);
+ StorePlayerIdInRecordMixShow(show);
show->battleSeminar.language = gGameLanguage;
}
}
-void sub_80EE44C(u8 nMonsCaught, u8 nPkblkUsed)
+void TryPutSafariFanClubOnAir(u8 nMonsCaught, u8 nPkblkUsed)
{
TVShow *show;
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
- if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_SAFARI_FAN_CLUB, FALSE) != TRUE)
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && IsRecordMixShowAlreadySpawned(TVSHOW_SAFARI_FAN_CLUB, FALSE) != TRUE)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->safariFanClub.kind = TVSHOW_SAFARI_FAN_CLUB;
- show->safariFanClub.active = FALSE;
+ show->safariFanClub.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
StringCopy(show->safariFanClub.playerName, gSaveBlock2Ptr->playerName);
show->safariFanClub.nMonsCaught = nMonsCaught;
show->safariFanClub.nPkblkUsed = nPkblkUsed;
- tv_store_id_3x(show);
+ StorePlayerIdInRecordMixShow(show);
show->safariFanClub.language = gGameLanguage;
}
}
@@ -2356,27 +2247,23 @@ void TryPutSpotTheCutiesOnAir(struct Pokemon *pokemon, u8 ribbonMonDataIdx)
{
TVShow *show;
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
- if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_CUTIES, FALSE) != TRUE)
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && IsRecordMixShowAlreadySpawned(TVSHOW_CUTIES, FALSE) != TRUE)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->cuties.kind = TVSHOW_CUTIES;
- show->cuties.active = FALSE;
+ show->cuties.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
StringCopy(show->cuties.playerName, gSaveBlock2Ptr->playerName);
GetMonData(pokemon, MON_DATA_NICKNAME, show->cuties.nickname);
StripExtCtrlCodes(show->cuties.nickname);
show->cuties.nRibbons = GetRibbonCount(pokemon);
show->cuties.selectedRibbon = MonDataIdxToRibbon(ribbonMonDataIdx);
- tv_store_id_3x(show);
+ StorePlayerIdInRecordMixShow(show);
show->cuties.language = gGameLanguage;
if (show->cuties.language == LANGUAGE_JAPANESE || GetMonData(pokemon, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE)
- {
show->cuties.pokemonNameLanguage = LANGUAGE_JAPANESE;
- }
else
- {
show->cuties.pokemonNameLanguage = GetMonData(pokemon, MON_DATA_LANGUAGE);
- }
}
}
@@ -2427,31 +2314,31 @@ static u8 MonDataIdxToRibbon(u8 monDataIdx)
return CHAMPION_RIBBON;
}
-void TrySetUpTrainerFanClubSpecial(void)
+void TryPutTrainerFanClubOnAir(void)
{
TVShow *show;
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
- if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_TRAINER_FAN_CLUB, FALSE) != TRUE)
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && IsRecordMixShowAlreadySpawned(TVSHOW_TRAINER_FAN_CLUB, FALSE) != TRUE)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->trainerFanClub.kind = TVSHOW_TRAINER_FAN_CLUB;
- show->trainerFanClub.active = FALSE;
+ show->trainerFanClub.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
StringCopy(show->trainerFanClub.playerName, gSaveBlock2Ptr->playerName);
show->trainerFanClub.words[0] = gSaveBlock1Ptr->easyChatProfile[0];
show->trainerFanClub.words[1] = gSaveBlock1Ptr->easyChatProfile[1];
- tv_store_id_3x(show);
+ StorePlayerIdInRecordMixShow(show);
show->trainerFanClub.language = gGameLanguage;
}
}
bool8 ShouldHideFanClubInterviewer(void)
{
- sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ sCurTVShowSlot = FindFirstEmptyNormalTVShowSlot(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot == -1)
return TRUE;
- FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_SPECIAL);
+ TryReplaceOldTVShowOfKind(TVSHOW_FAN_CLUB_SPECIAL);
if (gSpecialVar_Result == TRUE)
return TRUE;
@@ -2467,25 +2354,24 @@ bool8 ShouldAirFrontierTVShow(void)
u8 showIdx;
TVShow *shows;
- if (HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_FRONTIER, FALSE) == TRUE)
+ if (IsRecordMixShowAlreadySpawned(TVSHOW_FRONTIER, FALSE) == TRUE)
{
shows = gSaveBlock1Ptr->tvShows;
playerId = GetPlayerIDAsU32();
- for (showIdx = 5; showIdx < LAST_TVSHOW_IDX; showIdx ++)
+ for (showIdx = NUM_NORMAL_TVSHOW_SLOTS; showIdx < LAST_TVSHOW_IDX; showIdx++)
{
if (shows[showIdx].common.kind == TVSHOW_FRONTIER && (playerId & 0xFF) == shows[showIdx].common.trainerIdLo && ((playerId >> 8) & 0xFF) == shows[showIdx].common.trainerIdHi)
{
DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, showIdx);
- sub_80EF93C(gSaveBlock1Ptr->tvShows);
+ CompactTVShowArray(gSaveBlock1Ptr->tvShows);
return TRUE;
}
}
}
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot == -1)
- {
return FALSE;
- }
+
return TRUE;
}
@@ -2493,47 +2379,47 @@ void TryPutFrontierTVShowOnAir(u16 winStreak, u8 facilityAndMode)
{
TVShow *show;
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->frontier.kind = TVSHOW_FRONTIER;
- show->frontier.active = FALSE;
+ show->frontier.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
StringCopy(show->frontier.playerName, gSaveBlock2Ptr->playerName);
show->frontier.winStreak = winStreak;
- show->frontier.facility = facilityAndMode;
+ show->frontier.facilityAndMode = facilityAndMode;
switch (facilityAndMode)
{
- case 1:
- case 5:
- case 6:
- case 7:
- case 8:
- case 9:
- case 10:
- case 11:
- case 12:
- case 13:
- show->frontier.species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL);
- show->frontier.species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
- show->frontier.species3 = GetMonData(&gPlayerParty[2], MON_DATA_SPECIES, NULL);
- break;
- case 2:
- show->frontier.species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL);
- show->frontier.species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
- show->frontier.species3 = GetMonData(&gPlayerParty[2], MON_DATA_SPECIES, NULL);
- show->frontier.species4 = GetMonData(&gPlayerParty[3], MON_DATA_SPECIES, NULL);
- break;
- case 3:
- show->frontier.species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL);
- show->frontier.species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
- break;
- case 4:
- show->frontier.species1 = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[0] - 1], MON_DATA_SPECIES, NULL);
- show->frontier.species2 = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[1] - 1], MON_DATA_SPECIES, NULL);
- break;
+ case FRONTIER_SHOW_TOWER_SINGLES:
+ case FRONTIER_SHOW_DOME_SINGLES:
+ case FRONTIER_SHOW_DOME_DOUBLES:
+ case FRONTIER_SHOW_FACTORY_SINGLES:
+ case FRONTIER_SHOW_FACTORY_DOUBLES:
+ case FRONTIER_SHOW_PIKE:
+ case FRONTIER_SHOW_ARENA:
+ case FRONTIER_SHOW_PALACE_SINGLES:
+ case FRONTIER_SHOW_PALACE_DOUBLES:
+ case FRONTIER_SHOW_PYRAMID:
+ show->frontier.species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL);
+ show->frontier.species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
+ show->frontier.species3 = GetMonData(&gPlayerParty[2], MON_DATA_SPECIES, NULL);
+ break;
+ case FRONTIER_SHOW_TOWER_DOUBLES:
+ show->frontier.species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL);
+ show->frontier.species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
+ show->frontier.species3 = GetMonData(&gPlayerParty[2], MON_DATA_SPECIES, NULL);
+ show->frontier.species4 = GetMonData(&gPlayerParty[3], MON_DATA_SPECIES, NULL);
+ break;
+ case FRONTIER_SHOW_TOWER_MULTIS:
+ show->frontier.species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL);
+ show->frontier.species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
+ break;
+ case FRONTIER_SHOW_TOWER_LINK_MULTIS:
+ show->frontier.species1 = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[0] - 1], MON_DATA_SPECIES, NULL);
+ show->frontier.species2 = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[1] - 1], MON_DATA_SPECIES, NULL);
+ break;
}
- tv_store_id_3x(show);
+ StorePlayerIdInRecordMixShow(show);
show->frontier.language = gGameLanguage;
}
}
@@ -2543,14 +2429,14 @@ void TryPutSecretBaseSecretsOnAir(void)
TVShow *show;
u8 strbuf[32];
- if (HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_SECRET_BASE_SECRETS, FALSE) != TRUE)
+ if (IsRecordMixShowAlreadySpawned(TVSHOW_SECRET_BASE_SECRETS, FALSE) != TRUE)
{
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->secretBaseSecrets.kind = TVSHOW_SECRET_BASE_SECRETS;
- show->secretBaseSecrets.active = FALSE;
+ show->secretBaseSecrets.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
StringCopy(show->secretBaseSecrets.playerName, gSaveBlock2Ptr->playerName);
show->secretBaseSecrets.stepsInBase = VarGet(VAR_SECRET_BASE_STEP_COUNTER);
CopyCurSecretBaseOwnerName_StrVar1();
@@ -2559,53 +2445,50 @@ void TryPutSecretBaseSecretsOnAir(void)
StringCopy(show->secretBaseSecrets.baseOwnersName, strbuf);
show->secretBaseSecrets.item = VarGet(VAR_SECRET_BASE_LAST_ITEM_USED);
show->secretBaseSecrets.flags = VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) + (VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) << 16);
- tv_store_id_3x(show);
+ StorePlayerIdInRecordMixShow(show);
show->secretBaseSecrets.language = gGameLanguage;
if (show->secretBaseSecrets.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].language == LANGUAGE_JAPANESE)
- {
show->secretBaseSecrets.baseOwnersNameLanguage = LANGUAGE_JAPANESE;
- }
else
- {
show->secretBaseSecrets.baseOwnersNameLanguage = gSaveBlock1Ptr->secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].language;
- }
}
}
}
-static void sub_80EEB98(u16 days)
+// Check var thresholds required to trigger the Number One show
+// The vars are reset afterwards regardless
+static void ResolveNumberOneShow(u16 days)
{
u8 i;
- for (i = 0; i < ARRAY_COUNT(sNumberOneVarsAndThresholds); i ++)
+ for (i = 0; i < ARRAY_COUNT(sNumberOneVarsAndThresholds); i++)
{
if (VarGet(sNumberOneVarsAndThresholds[i][0]) >= sNumberOneVarsAndThresholds[i][1])
{
- sub_80EEBF4(i);
+ TryPutNumberOneOnAir(i);
break;
}
}
- for (i = 0; i < ARRAY_COUNT(sNumberOneVarsAndThresholds); i ++)
- {
+
+ for (i = 0; i < ARRAY_COUNT(sNumberOneVarsAndThresholds); i++)
VarSet(sNumberOneVarsAndThresholds[i][0], 0);
- }
}
-static void sub_80EEBF4(u8 actionIdx)
+static void TryPutNumberOneOnAir(u8 actionIdx)
{
TVShow *show;
- HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_NUMBER_ONE, TRUE);
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ IsRecordMixShowAlreadySpawned(TVSHOW_NUMBER_ONE, TRUE); // Delete old version of show
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
show->numberOne.kind = TVSHOW_NUMBER_ONE;
- show->numberOne.active = FALSE;
+ show->numberOne.active = FALSE; // NOTE: Show is not active until passed via Record Mix.
StringCopy(show->numberOne.playerName, gSaveBlock2Ptr->playerName);
show->numberOne.actionIdx = actionIdx;
show->numberOne.count = VarGet(sNumberOneVarsAndThresholds[actionIdx][0]);
- tv_store_id_3x(show);
+ StorePlayerIdInRecordMixShow(show);
show->numberOne.language = gGameLanguage;
}
}
@@ -2647,72 +2530,66 @@ void IncrementDailyBattlePoints(u16 delta)
// PokeNews
-static void sub_80EED88(void)
+static void TryPutRandomPokeNewsOnAir(void)
{
- u8 newsKind;
-
if (FlagGet(FLAG_SYS_GAME_CLEAR))
{
- sCurTVShowSlot = sub_80EEE30(gSaveBlock1Ptr->pokeNews);
+ sCurTVShowSlot = GetFirstEmptyPokeNewsSlot(gSaveBlock1Ptr->pokeNews);
if (sCurTVShowSlot != -1 && rbernoulli(1, 100) != TRUE)
{
- newsKind = (Random() % 4) + POKENEWS_SLATEPORT;
- if (sub_80EF0E4(newsKind) != TRUE)
+ u8 newsKind = (Random() % NUM_POKENEWS_TYPES) + POKENEWS_SLATEPORT;
+ if (IsAddingPokeNewsDisallowed(newsKind) != TRUE)
{
gSaveBlock1Ptr->pokeNews[sCurTVShowSlot].kind = newsKind;
gSaveBlock1Ptr->pokeNews[sCurTVShowSlot].days = 4;
- gSaveBlock1Ptr->pokeNews[sCurTVShowSlot].state = TRUE;
+ gSaveBlock1Ptr->pokeNews[sCurTVShowSlot].state = 1;
}
}
}
}
-s8 sub_80EEE30(PokeNews *pokeNews)
+static s8 GetFirstEmptyPokeNewsSlot(PokeNews *pokeNews)
{
s8 i;
- for (i = 0; i < POKE_NEWS_COUNT; i ++)
+ for (i = 0; i < POKE_NEWS_COUNT; i++)
{
- if (pokeNews[i].kind == 0)
- {
+ if (pokeNews[i].kind == POKENEWS_NONE)
return i;
- }
}
return -1;
}
-void ClearPokemonNews(void)
+static void ClearPokeNews(void)
{
u8 i;
- for (i = 0; i < POKE_NEWS_COUNT; i ++)
- {
- ClearPokemonNewsI(i);
- }
+ for (i = 0; i < POKE_NEWS_COUNT; i++)
+ ClearPokeNewsBySlot(i);
}
-void ClearPokemonNewsI(u8 i)
+static void ClearPokeNewsBySlot(u8 i)
{
gSaveBlock1Ptr->pokeNews[i].kind = POKENEWS_NONE;
gSaveBlock1Ptr->pokeNews[i].state = FALSE;
gSaveBlock1Ptr->pokeNews[i].days = 0;
}
-static void sub_80EEEB8(void)
+static void CompactPokeNews(void)
{
u8 i;
u8 j;
- for (i = 0; i < POKE_NEWS_COUNT - 1; i ++)
+ for (i = 0; i < POKE_NEWS_COUNT - 1; i++)
{
if (gSaveBlock1Ptr->pokeNews[i].kind == POKENEWS_NONE)
{
- for (j = i + 1; j < POKE_NEWS_COUNT; j ++)
+ for (j = i + 1; j < POKE_NEWS_COUNT; j++)
{
if (gSaveBlock1Ptr->pokeNews[j].kind != POKENEWS_NONE)
{
gSaveBlock1Ptr->pokeNews[i] = gSaveBlock1Ptr->pokeNews[j];
- ClearPokemonNewsI(j);
+ ClearPokeNewsBySlot(j);
break;
}
}
@@ -2720,16 +2597,16 @@ static void sub_80EEEB8(void)
}
}
-u8 FindAnyTVNewsOnTheAir(void)
+static u8 FindAnyPokeNewsOnTheAir(void)
{
u8 i;
- for (i = 0; i < POKE_NEWS_COUNT; i ++)
+ for (i = 0; i < POKE_NEWS_COUNT; i++)
{
- if (gSaveBlock1Ptr->pokeNews[i].kind != POKENEWS_NONE && gSaveBlock1Ptr->pokeNews[i].state == TRUE && gSaveBlock1Ptr->pokeNews[i].days < 3)
- {
+ if (gSaveBlock1Ptr->pokeNews[i].kind != POKENEWS_NONE
+ && gSaveBlock1Ptr->pokeNews[i].state == 1
+ && gSaveBlock1Ptr->pokeNews[i].days < 3)
return i;
- }
}
return 0xFF;
}
@@ -2739,7 +2616,7 @@ void DoPokeNews(void)
u8 i;
u16 n;
- i = FindAnyTVNewsOnTheAir();
+ i = FindAnyPokeNewsOnTheAir();
if (i == 0xFF)
{
gSpecialVar_Result = FALSE;
@@ -2750,13 +2627,9 @@ void DoPokeNews(void)
{
gSaveBlock1Ptr->pokeNews[i].state = 2;
if (gLocalTime.hours < 20)
- {
ShowFieldMessage(sPokeNewsTextGroup_Ongoing[gSaveBlock1Ptr->pokeNews[i].kind]);
- }
else
- {
ShowFieldMessage(sPokeNewsTextGroup_Ending[gSaveBlock1Ptr->pokeNews[i].kind]);
- }
}
else
{
@@ -2774,101 +2647,92 @@ bool8 GetPriceReduction(u8 newsKind)
u8 i;
if (newsKind == POKENEWS_NONE)
- {
return FALSE;
- }
- for (i = 0; i < POKE_NEWS_COUNT; i ++)
+
+ for (i = 0; i < POKE_NEWS_COUNT; i++)
{
if (gSaveBlock1Ptr->pokeNews[i].kind == newsKind)
{
if (gSaveBlock1Ptr->pokeNews[i].state == 2 && IsPriceDiscounted(newsKind))
- {
return TRUE;
- }
+
return FALSE;
}
}
return FALSE;
}
-bool8 IsPriceDiscounted(u8 newsKind)
+static bool8 IsPriceDiscounted(u8 newsKind)
{
switch (newsKind)
{
- case POKENEWS_SLATEPORT:
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SLATEPORT_CITY) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SLATEPORT_CITY) && gSpecialVar_LastTalked == 25)
- {
- return TRUE;
- }
- return FALSE;
- case POKENEWS_LILYCOVE:
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP))
- {
- return TRUE;
- }
- return FALSE;
+ case POKENEWS_SLATEPORT:
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SLATEPORT_CITY) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SLATEPORT_CITY) && gSpecialVar_LastTalked == 25)
+ return TRUE;
+ return FALSE;
+ case POKENEWS_LILYCOVE:
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP))
+ return TRUE;
+ return FALSE;
}
return TRUE;
}
-bool8 sub_80EF0E4(u8 newsKind)
+static bool8 IsAddingPokeNewsDisallowed(u8 newsKind)
{
u8 i;
if (newsKind == POKENEWS_NONE)
- {
return TRUE;
- }
- for (i = 0; i < POKE_NEWS_COUNT; i ++)
+
+ // Check if this type of news is already active
+ for (i = 0; i < POKE_NEWS_COUNT; i++)
{
if (gSaveBlock1Ptr->pokeNews[i].kind == newsKind)
- {
return TRUE;
- }
}
return FALSE;
}
-static void sub_80EF120(u16 days)
+static void UpdatePokeNewsTimeLeft(u16 days)
{
u8 i;
- for (i = 0; i < POKE_NEWS_COUNT; i ++)
+ for (i = 0; i < POKE_NEWS_COUNT; i++)
{
if (gSaveBlock1Ptr->pokeNews[i].kind != POKENEWS_NONE)
{
if (gSaveBlock1Ptr->pokeNews[i].days < days)
{
- ClearPokemonNewsI(i);
+ ClearPokeNewsBySlot(i);
}
else
{
if (gSaveBlock1Ptr->pokeNews[i].state == 0 && FlagGet(FLAG_SYS_GAME_CLEAR) == TRUE)
- {
gSaveBlock1Ptr->pokeNews[i].state = 1;
- }
+
gSaveBlock1Ptr->pokeNews[i].days -= days;
}
}
}
- sub_80EEEB8();
+ CompactPokeNews();
}
void CopyContestRankToStringVar(u8 varIdx, u8 rank)
{
switch (rank)
{
- case CONTEST_RANK_NORMAL:
- StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_NORMAL]);
- break;
- case CONTEST_RANK_SUPER:
- StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_SUPER]);
- break;
- case CONTEST_RANK_HYPER:
- StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_HYPER]);
- break;
- case CONTEST_RANK_MASTER:
- StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_MASTER]);
- break;
+ case CONTEST_RANK_NORMAL:
+ StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_NORMAL]);
+ break;
+ case CONTEST_RANK_SUPER:
+ StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_SUPER]);
+ break;
+ case CONTEST_RANK_HYPER:
+ StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_HYPER]);
+ break;
+ case CONTEST_RANK_MASTER:
+ StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_MASTER]);
+ break;
}
}
@@ -2876,21 +2740,21 @@ void CopyContestCategoryToStringVar(u8 varIdx, u8 category)
{
switch (category)
{
- case CONTEST_CATEGORY_COOL:
- StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_COOL]);
- break;
- case CONTEST_CATEGORY_BEAUTY:
- StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_BEAUTY]);
- break;
- case CONTEST_CATEGORY_CUTE:
- StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_CUTE]);
- break;
- case CONTEST_CATEGORY_SMART:
- StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_SMART]);
- break;
- case CONTEST_CATEGORY_TOUGH:
- StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_TOUGH]);
- break;
+ case CONTEST_CATEGORY_COOL:
+ StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_COOL]);
+ break;
+ case CONTEST_CATEGORY_BEAUTY:
+ StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_BEAUTY]);
+ break;
+ case CONTEST_CATEGORY_CUTE:
+ StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_CUTE]);
+ break;
+ case CONTEST_CATEGORY_SMART:
+ StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_SMART]);
+ break;
+ case CONTEST_CATEGORY_TOUGH:
+ StringCopy(gTVStringVarPtrs[varIdx], gStdStrings[STDSTRING_TOUGH]);
+ break;
}
}
@@ -2902,11 +2766,9 @@ void SetContestCategoryStringVarForInterview(void)
CopyContestCategoryToStringVar(1, show->bravoTrainer.contestCategory);
}
-void TV_PrintIntToStringVar(u8 varIdx, int value)
+void ConvertIntToDecimalString(u8 varIdx, int value)
{
- int nDigits;
-
- nDigits = CountDigits(value);
+ int nDigits = CountDigits(value);
ConvertIntToDecimalStringN(gTVStringVarPtrs[varIdx], value, STR_CONV_MODE_LEFT_ALIGN, nDigits);
}
@@ -2924,30 +2786,25 @@ size_t CountDigits(int value)
return 1;
}
-static void sub_80EF40C(u8 varIdx, TVShow *show)
+static void SmartShopper_BufferPurchaseTotal(u8 varIdx, TVShow *show)
{
u8 i;
int price;
price = 0;
- for (i = 0; i < 3; i ++)
+ for (i = 0; i < SMARTSHOPPER_NUM_ITEMS; i++)
{
if (show->smartshopperShow.itemIds[i] != ITEM_NONE)
- {
price += ItemId_GetPrice(show->smartshopperShow.itemIds[i]) * show->smartshopperShow.itemAmounts[i];
- }
}
+
if (show->smartshopperShow.priceReduced == TRUE)
- {
- TV_PrintIntToStringVar(varIdx, price >> 1);
- }
+ ConvertIntToDecimalString(varIdx, price >> 1);
else
- {
- TV_PrintIntToStringVar(varIdx, price);
- }
+ ConvertIntToDecimalString(varIdx, price);
}
-bool8 HasMixableShowAlreadyBeenSpawnedWithPlayerID(u8 kind, bool8 flag)
+static bool8 IsRecordMixShowAlreadySpawned(u8 kind, bool8 delete)
{
u32 playerId;
TVShow *shows;
@@ -2955,14 +2812,16 @@ bool8 HasMixableShowAlreadyBeenSpawnedWithPlayerID(u8 kind, bool8 flag)
shows = gSaveBlock1Ptr->tvShows;
playerId = GetPlayerIDAsU32();
- for (i = 5; i < LAST_TVSHOW_IDX; i ++)
+ for (i = NUM_NORMAL_TVSHOW_SLOTS; i < LAST_TVSHOW_IDX; i++)
{
- if (shows[i].common.kind == kind && (playerId & 0xFF) == shows[i].common.trainerIdLo && ((playerId >> 8) & 0xFF) == shows[i].common.trainerIdHi)
+ if (shows[i].common.kind == kind
+ && (playerId & 0xFF) == shows[i].common.trainerIdLo
+ && ((playerId >> 8) & 0xFF) == shows[i].common.trainerIdHi)
{
- if (flag == TRUE)
+ if (delete == TRUE)
{
DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, i);
- sub_80EF93C(gSaveBlock1Ptr->tvShows);
+ CompactTVShowArray(gSaveBlock1Ptr->tvShows);
}
return TRUE;
}
@@ -2970,16 +2829,15 @@ bool8 HasMixableShowAlreadyBeenSpawnedWithPlayerID(u8 kind, bool8 flag)
return FALSE;
}
-void TV_SortPurchasesByQuantity(void)
+static void SortPurchasesByQuantity(void)
{
- u8 i;
- u8 j;
+ u8 i, j;
u16 tmpId;
u16 tmpQn;
- for (i = 0; i < 2; i ++)
+ for (i = 0; i < SMARTSHOPPER_NUM_ITEMS - 1; i++)
{
- for (j = i + 1; j < 3; j ++)
+ for (j = i + 1; j < SMARTSHOPPER_NUM_ITEMS; j++)
{
if (gMartPurchaseHistory[i].quantity < gMartPurchaseHistory[j].quantity)
{
@@ -2994,27 +2852,31 @@ void TV_SortPurchasesByQuantity(void)
}
}
-void FindActiveBroadcastByShowType_SetScriptResult(u8 kind)
+static void TryReplaceOldTVShowOfKind(u8 kind)
{
u8 i;
- for (i = 0; i < 5; i ++)
+ for (i = 0; i < NUM_NORMAL_TVSHOW_SLOTS; i++)
{
if (gSaveBlock1Ptr->tvShows[i].common.kind == kind)
{
if (gSaveBlock1Ptr->tvShows[i].common.active == TRUE)
{
+ // Old TV show is still active, don't replace
gSpecialVar_Result = TRUE;
}
else
{
+ // Old TV show is inactive, replace it and get new slot
DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, i);
- sub_80EF93C(gSaveBlock1Ptr->tvShows);
- sub_80EFA88();
+ CompactTVShowArray(gSaveBlock1Ptr->tvShows);
+ Script_FindFirstEmptyNormalTVShowSlot();
}
return;
}
}
- sub_80EFA88();
+
+ // Old TV show doesn't exist, just get new slot
+ Script_FindFirstEmptyNormalTVShowSlot();
}
void InterviewBefore(void)
@@ -3022,42 +2884,42 @@ void InterviewBefore(void)
gSpecialVar_Result = FALSE;
switch (gSpecialVar_0x8005)
{
- case TVSHOW_FAN_CLUB_LETTER:
- InterviewBefore_FanClubLetter();
- break;
- case TVSHOW_RECENT_HAPPENINGS:
- InterviewBefore_RecentHappenings();
- break;
- case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
- InterviewBefore_PkmnFanClubOpinions();
- break;
- case TVSHOW_UNKN_SHOWTYPE_04:
- InterviewBefore_Dummy();
- break;
- case TVSHOW_NAME_RATER_SHOW:
- InterviewBefore_NameRater();
- break;
- case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
- InterviewBefore_BravoTrainerPkmnProfile();
- break;
- case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
- InterviewBefore_BravoTrainerBTProfile();
- break;
- case TVSHOW_CONTEST_LIVE_UPDATES:
- InterviewBefore_ContestLiveUpdates();
- break;
- case TVSHOW_3_CHEERS_FOR_POKEBLOCKS:
- InterviewBefore_3CheersForPokeblocks();
- break;
- case TVSHOW_FAN_CLUB_SPECIAL:
- InterviewBefore_FanClubSpecial();
- break;
+ case TVSHOW_FAN_CLUB_LETTER:
+ InterviewBefore_FanClubLetter();
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ InterviewBefore_RecentHappenings();
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ InterviewBefore_PkmnFanClubOpinions();
+ break;
+ case TVSHOW_DUMMY:
+ InterviewBefore_Dummy();
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ InterviewBefore_NameRater();
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ InterviewBefore_BravoTrainerPkmnProfile();
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ InterviewBefore_BravoTrainerBTProfile();
+ break;
+ case TVSHOW_CONTEST_LIVE_UPDATES:
+ InterviewBefore_ContestLiveUpdates();
+ break;
+ case TVSHOW_3_CHEERS_FOR_POKEBLOCKS:
+ InterviewBefore_3CheersForPokeblocks();
+ break;
+ case TVSHOW_FAN_CLUB_SPECIAL:
+ InterviewBefore_FanClubSpecial();
+ break;
}
}
static void InterviewBefore_FanClubLetter(void)
{
- FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_LETTER);
+ TryReplaceOldTVShowOfKind(TVSHOW_FAN_CLUB_LETTER);
if (!gSpecialVar_Result)
{
StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL)]);
@@ -3067,7 +2929,7 @@ static void InterviewBefore_FanClubLetter(void)
static void InterviewBefore_RecentHappenings(void)
{
- FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_RECENT_HAPPENINGS);
+ TryReplaceOldTVShowOfKind(TVSHOW_RECENT_HAPPENINGS);
if (!gSpecialVar_Result)
{
InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].recentHappenings.words, 6);
@@ -3076,7 +2938,7 @@ static void InterviewBefore_RecentHappenings(void)
static void InterviewBefore_PkmnFanClubOpinions(void)
{
- FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_PKMN_FAN_CLUB_OPINIONS);
+ TryReplaceOldTVShowOfKind(TVSHOW_PKMN_FAN_CLUB_OPINIONS);
if (!gSpecialVar_Result)
{
StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL)]);
@@ -3093,44 +2955,38 @@ static void InterviewBefore_Dummy(void)
static void InterviewBefore_NameRater(void)
{
- FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_NAME_RATER_SHOW);
+ TryReplaceOldTVShowOfKind(TVSHOW_NAME_RATER_SHOW);
}
static void InterviewBefore_BravoTrainerPkmnProfile(void)
{
- FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE);
+ TryReplaceOldTVShowOfKind(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE);
if (!gSpecialVar_Result)
- {
InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].bravoTrainer.words, 2);
- }
}
static void InterviewBefore_ContestLiveUpdates(void)
{
- FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_CONTEST_LIVE_UPDATES);
+ TryReplaceOldTVShowOfKind(TVSHOW_CONTEST_LIVE_UPDATES);
}
static void InterviewBefore_3CheersForPokeblocks(void)
{
- FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_3_CHEERS_FOR_POKEBLOCKS);
+ TryReplaceOldTVShowOfKind(TVSHOW_3_CHEERS_FOR_POKEBLOCKS);
}
static void InterviewBefore_BravoTrainerBTProfile(void)
{
- FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE);
+ TryReplaceOldTVShowOfKind(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE);
if (!gSpecialVar_Result)
- {
InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].bravoTrainerTower.words, 1);
- }
}
static void InterviewBefore_FanClubSpecial(void)
{
- FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_SPECIAL);
+ TryReplaceOldTVShowOfKind(TVSHOW_FAN_CLUB_SPECIAL);
if (!gSpecialVar_Result)
- {
InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].fanClubSpecial.words, 1);
- }
}
static bool8 IsPartyMonNicknamedOrNotEnglish(u8 monIdx)
@@ -3142,9 +2998,8 @@ static bool8 IsPartyMonNicknamedOrNotEnglish(u8 monIdx)
GetMonData(pokemon, MON_DATA_NICKNAME, gStringVar1);
language = GetMonData(pokemon, MON_DATA_LANGUAGE, &language);
if (language == GAME_LANGUAGE && !StringCompare(gSpeciesNames[GetMonData(pokemon, MON_DATA_SPECIES, NULL)], gStringVar1))
- {
return FALSE;
- }
+
return TRUE;
}
@@ -3153,28 +3008,27 @@ bool8 IsLeadMonNicknamedOrNotEnglish(void)
return IsPartyMonNicknamedOrNotEnglish(GetLeadMonIndex());
}
-void DeleteTVShowInArrayByIdx(TVShow *shows, u8 idx)
+static void DeleteTVShowInArrayByIdx(TVShow *shows, u8 idx)
{
u8 i;
shows[idx].commonInit.kind = TVSHOW_OFF_AIR;
shows[idx].commonInit.active = FALSE;
- for (i = 0; i < ARRAY_COUNT(shows[idx].commonInit.pad02); i++)
- {
- shows[idx].commonInit.pad02[i] = 0;
- }
+ for (i = 0; i < ARRAY_COUNT(shows[idx].commonInit.data); i++)
+ shows[idx].commonInit.data[i] = 0;
}
-static void sub_80EF93C(TVShow *shows)
+static void CompactTVShowArray(TVShow *shows)
{
u8 i;
u8 j;
- for (i = 0; i < 4; i ++)
+ // Compact normal TV shows
+ for (i = 0; i < NUM_NORMAL_TVSHOW_SLOTS - 1; i++)
{
if (shows[i].common.kind == TVSHOW_OFF_AIR)
{
- for (j = i + 1; j < 5; j ++)
+ for (j = i + 1; j < NUM_NORMAL_TVSHOW_SLOTS; j++)
{
if (shows[j].common.kind != TVSHOW_OFF_AIR)
{
@@ -3185,11 +3039,13 @@ static void sub_80EF93C(TVShow *shows)
}
}
}
- for (i = 5; i < LAST_TVSHOW_IDX; i ++)
+
+ // Compact Record Mix TV shows
+ for (i = NUM_NORMAL_TVSHOW_SLOTS; i < LAST_TVSHOW_IDX; i++)
{
if (shows[i].common.kind == TVSHOW_OFF_AIR)
{
- for (j = i + 1; j < LAST_TVSHOW_IDX; j ++)
+ for (j = i + 1; j < LAST_TVSHOW_IDX; j++)
{
if (shows[j].common.kind != TVSHOW_OFF_AIR)
{
@@ -3202,16 +3058,16 @@ static void sub_80EF93C(TVShow *shows)
}
}
-u16 TV_GetSomeOtherSpeciesAlreadySeenByPlayer_AndPrintName(u8 varIdx, u16 passedSpecies)
+static u16 GetRandomDifferentSpeciesAndNameSeenByPlayer(u8 varIdx, u16 passedSpecies)
{
u16 species;
- species = TV_GetSomeOtherSpeciesAlreadySeenByPlayer(passedSpecies);
+ species = GetRandomDifferentSpeciesSeenByPlayer(passedSpecies);
StringCopy(gTVStringVarPtrs[varIdx], gSpeciesNames[species]);
return species;
}
-u16 TV_GetSomeOtherSpeciesAlreadySeenByPlayer(u16 passedSpecies)
+static u16 GetRandomDifferentSpeciesSeenByPlayer(u16 passedSpecies)
{
u16 species;
u16 initSpecies;
@@ -3221,13 +3077,10 @@ u16 TV_GetSomeOtherSpeciesAlreadySeenByPlayer(u16 passedSpecies)
while (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_SEEN) != TRUE || species == passedSpecies)
{
if (species == SPECIES_NONE + 1)
- {
species = NUM_SPECIES - 1;
- }
else
- {
- species --;
- }
+ species--;
+
if (species == initSpecies)
{
species = passedSpecies;
@@ -3237,65 +3090,60 @@ u16 TV_GetSomeOtherSpeciesAlreadySeenByPlayer(u16 passedSpecies)
return species;
}
-static void sub_80EFA88(void)
+static void Script_FindFirstEmptyNormalTVShowSlot(void)
{
- sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ sCurTVShowSlot = FindFirstEmptyNormalTVShowSlot(gSaveBlock1Ptr->tvShows);
gSpecialVar_0x8006 = sCurTVShowSlot;
if (sCurTVShowSlot == -1)
- {
- gSpecialVar_Result = TRUE;
- }
+ gSpecialVar_Result = TRUE; // Failed to find empty slot
else
- {
- gSpecialVar_Result = FALSE;
- }
+ gSpecialVar_Result = FALSE; // Found empty slot
}
-s8 FindEmptyTVSlotWithinFirstFiveShowsOfArray(TVShow *shows)
+static s8 FindFirstEmptyNormalTVShowSlot(TVShow *shows)
{
u8 i;
- for (i = 0; i < 5; i ++)
+ for (i = 0; i < NUM_NORMAL_TVSHOW_SLOTS; i++)
{
if (shows[i].common.kind == TVSHOW_OFF_AIR)
- {
return i;
- }
}
return -1;
}
-s8 FindEmptyTVSlotBeyondFirstFiveShowsOfArray(TVShow *shows)
+static s8 FindFirstEmptyRecordMixTVShowSlot(TVShow *shows)
{
s8 i;
- for (i = 5; i < LAST_TVSHOW_IDX; i ++)
+ for (i = NUM_NORMAL_TVSHOW_SLOTS; i < LAST_TVSHOW_IDX; i++)
{
if (shows[i].common.kind == TVSHOW_OFF_AIR)
- {
return i;
- }
}
return -1;
}
-bool8 TV_BernoulliTrial(u16 ratio)
+static bool8 BernoulliTrial(u16 ratio)
{
if (Random() <= ratio)
- {
return FALSE;
- }
+
return TRUE;
}
-void TV_FanClubLetter_RandomWordToStringVar3(TVShow *show)
+// For TVSHOW_FAN_CLUB_LETTER / TVSHOW_RECENT_HAPPENINGS
+// Both are assumed to have the same struct layout
+static void GetRandomWordFromShow(TVShow *show)
{
u8 i;
- i = Random() % 6;
+ i = Random() % ARRAY_COUNT(show->fanclubLetter.words);
+
+ // From random point, get first non-empty word
while (TRUE)
{
- if (i == 6)
+ if (i == ARRAY_COUNT(show->fanclubLetter.words))
i = 0;
if (show->fanclubLetter.words[i] != EC_EMPTY_WORD)
@@ -3305,33 +3153,31 @@ void TV_FanClubLetter_RandomWordToStringVar3(TVShow *show)
CopyEasyChatWord(gStringVar3, show->fanclubLetter.words[i]);
}
-u8 TV_GetNicknameSumMod8(TVShow *show)
+static u8 GetRandomNameRaterStateFromName(TVShow *show)
{
u8 i;
- u16 ct;
+ u16 nameSum;
- ct = 0;
- for (i = 0; i < 11; i ++)
+ nameSum = 0;
+ for (i = 0; i < POKEMON_NAME_LENGTH + 1; i++)
{
if (show->nameRaterShow.pokemonName[i] == EOS)
- {
break;
- }
- ct += show->nameRaterShow.pokemonName[i];
+
+ nameSum += show->nameRaterShow.pokemonName[i];
}
- return ct & 7;
+ return nameSum & 7;
}
-void TV_GetNicknameSubstring(u8 varIdx, u8 whichPosition, u8 charParam, u16 whichString, u16 species, TVShow *show)
+static void GetNicknameSubstring(u8 varIdx, u8 whichPosition, u8 charParam, u16 whichString, u16 species, TVShow *show)
{
u8 buff[16];
u8 i;
u16 strlen;
- for (i = 0; i < 3; i ++)
- {
+ for (i = 0; i < 3; i++)
buff[i] = EOS;
- }
+
if (whichString == 0)
{
strlen = StringLength(show->nameRaterShow.trainerName);
@@ -3403,16 +3249,15 @@ void TV_GetNicknameSubstring(u8 varIdx, u8 whichPosition, u8 charParam, u16 whic
StringCopy(gTVStringVarPtrs[varIdx], buff);
}
-bool8 TV_IsScriptShowKindAlreadyInQueue(void)
+// Unused script special
+bool8 IsTVShowAlreadyInQueue(void)
{
u8 i;
- for (i = 0; i < 5; i ++)
+ for (i = 0; i < NUM_NORMAL_TVSHOW_SLOTS; i++)
{
if (gSaveBlock1Ptr->tvShows[i].common.kind == gSpecialVar_0x8004)
- {
return TRUE;
- }
}
return FALSE;
}
@@ -3454,7 +3299,7 @@ void ChangeBoxPokemonNickname(void)
DoNamingScreen(NAMING_SCREEN_NICKNAME, gStringVar2, GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL), GetBoxMonGender(boxMon), GetBoxMonData(boxMon, MON_DATA_PERSONALITY, NULL), ChangeBoxPokemonNickname_CB);
}
-void ChangeBoxPokemonNickname_CB(void)
+static void ChangeBoxPokemonNickname_CB(void)
{
SetBoxMonNickAt(gSpecialVar_MonBoxId, gSpecialVar_MonBoxPos, gStringVar2);
CB2_ReturnToFieldContinueScriptPlayMapMusic();
@@ -3474,25 +3319,21 @@ void IsMonOTIDNotPlayers(void)
gSpecialVar_Result = TRUE;
}
-u8 GetTVChannelByShowType(u8 kind)
+static u8 GetTVGroupByShowId(u8 kind)
{
if (kind == TVSHOW_OFF_AIR)
- {
- return 0;
- }
- if (kind >= TVSHOW_FAN_CLUB_LETTER && kind < TVSHOW_POKEMON_TODAY_CAUGHT)
- {
- return 2;
- }
- if (kind >= TVSHOW_POKEMON_TODAY_CAUGHT && kind < TVSHOW_MASS_OUTBREAK)
- {
- return 3;
- }
- if (kind >= TVSHOW_MASS_OUTBREAK && kind < 61)
- {
- return 4;
- }
- return 0;
+ return TVGROUP_NONE;
+
+ if (kind >= TVGROUP_NORMAL_START && kind <= TVGROUP_NORMAL_END)
+ return TVGROUP_NORMAL;
+
+ if (kind >= TVGROUP_RECORD_MIX_START && kind <= TVGROUP_RECORD_MIX_END)
+ return TVGROUP_RECORD_MIX;
+
+ if (kind >= TVGROUP_OUTBREAK_START && kind <= TVGROUP_OUTBREAK_END)
+ return TVGROUP_OUTBREAK;
+
+ return TVGROUP_NONE;
}
u32 GetPlayerIDAsU32(void)
@@ -3500,35 +3341,31 @@ u32 GetPlayerIDAsU32(void)
return (gSaveBlock2Ptr->playerTrainerId[3] << 24) | (gSaveBlock2Ptr->playerTrainerId[2] << 16) | (gSaveBlock2Ptr->playerTrainerId[1] << 8) | gSaveBlock2Ptr->playerTrainerId[0];
}
-u8 CheckForBigMovieOrEmergencyNewsOnTV(void)
+u8 CheckForPlayersHouseNews(void)
{
+ // Check if not in Littleroot house map group
if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F))
- {
- return 0;
- }
+ return PLAYERS_HOUSE_TV_NONE;
+
+ // Check if not in player's house (dependent on gender)
if (gSaveBlock2Ptr->playerGender == MALE)
{
if (gSaveBlock1Ptr->location.mapNum != MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F))
- {
- return 0;
- }
+ return PLAYERS_HOUSE_TV_NONE;
}
else
{
if (gSaveBlock1Ptr->location.mapNum != MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_1F))
- {
- return 0;
- }
+ return PLAYERS_HOUSE_TV_NONE;
}
+
if (FlagGet(FLAG_SYS_TV_LATIAS_LATIOS) == TRUE)
- {
- return 1;
- }
+ return PLAYERS_HOUSE_TV_LATI;
+
if (FlagGet(FLAG_SYS_TV_HOME) == TRUE)
- {
- return 2;
- }
- return 1;
+ return PLAYERS_HOUSE_TV_MOVIE;
+
+ return PLAYERS_HOUSE_TV_LATI;
}
void GetMomOrDadStringForTVMessage(void)
@@ -3585,133 +3422,124 @@ void GetMomOrDadStringForTVMessage(void)
void HideBattleTowerReporter(void)
{
VarSet(VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 0);
- RemoveObjectEventByLocalIdAndMap(5, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ RemoveObjectEventByLocalIdAndMap(LOCALID_BATTLE_TOWER_LOBBY_REPORTER, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
FlagSet(FLAG_HIDE_BATTLE_TOWER_REPORTER);
}
-void ReceiveTvShowsData(void *src, u32 size, u8 masterIdx)
+void ReceiveTvShowsData(void *src, u32 size, u8 playersLinkId)
{
u8 i;
u16 version;
- TVShow (*rmBuffer2)[4][25];
- TVShow (*rmBuffer)[4][25];
+ TVShow (*rmBuffer2)[MAX_LINK_PLAYERS][TV_SHOWS_COUNT];
+ TVShow (*rmBuffer)[MAX_LINK_PLAYERS][TV_SHOWS_COUNT];
- rmBuffer2 = malloc(4 * 25 * sizeof(TVShow));
+ rmBuffer2 = malloc(MAX_LINK_PLAYERS * TV_SHOWS_COUNT * sizeof(TVShow));
if (rmBuffer2 != NULL)
{
- for (i = 0; i < 4; i ++)
- {
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
memcpy((*rmBuffer2)[i], src + i * size, sizeof((*rmBuffer2)[i]));
- }
+
rmBuffer = rmBuffer2;
- for (i = 0; i < GetLinkPlayerCount(); i ++)
+ for (i = 0; i < GetLinkPlayerCount(); i++)
{
version = (u8)gLinkPlayers[i].version;
if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
- {
- sub_80F1254((*rmBuffer)[i]);
- }
+ TranslateRubyShows((*rmBuffer)[i]);
else if (version == VERSION_EMERALD && gLinkPlayers[i].language == LANGUAGE_JAPANESE)
- {
- sub_80F12A4((*rmBuffer)[i]);
- }
+ TranslateJapaneseEmeraldShows((*rmBuffer)[i]);
}
- switch (masterIdx)
+
+ // Position player's TV shows in argument list depending on link id
+ switch (playersLinkId)
{
- case 0:
- sub_80F0358(gSaveBlock1Ptr->tvShows, (*rmBuffer)[1], (*rmBuffer)[2], (*rmBuffer)[3]);
- break;
- case 1:
- sub_80F0358((*rmBuffer)[0], gSaveBlock1Ptr->tvShows, (*rmBuffer)[2], (*rmBuffer)[3]);
- break;
- case 2:
- sub_80F0358((*rmBuffer)[0], (*rmBuffer)[1], gSaveBlock1Ptr->tvShows, (*rmBuffer)[3]);
- break;
- case 3:
- sub_80F0358((*rmBuffer)[0], (*rmBuffer)[1], (*rmBuffer)[2], gSaveBlock1Ptr->tvShows);
- break;
+ case 0:
+ SetMixedTVShows(gSaveBlock1Ptr->tvShows, (*rmBuffer)[1], (*rmBuffer)[2], (*rmBuffer)[3]);
+ break;
+ case 1:
+ SetMixedTVShows((*rmBuffer)[0], gSaveBlock1Ptr->tvShows, (*rmBuffer)[2], (*rmBuffer)[3]);
+ break;
+ case 2:
+ SetMixedTVShows((*rmBuffer)[0], (*rmBuffer)[1], gSaveBlock1Ptr->tvShows, (*rmBuffer)[3]);
+ break;
+ case 3:
+ SetMixedTVShows((*rmBuffer)[0], (*rmBuffer)[1], (*rmBuffer)[2], gSaveBlock1Ptr->tvShows);
+ break;
}
- sub_80EF93C(gSaveBlock1Ptr->tvShows);
- sub_80F0C04();
- sub_80EF93C(gSaveBlock1Ptr->tvShows);
- sub_80F0708();
- sub_80F0B64();
+
+ CompactTVShowArray(gSaveBlock1Ptr->tvShows);
+ DeleteExcessMixedShows();
+ CompactTVShowArray(gSaveBlock1Ptr->tvShows);
+ DeactivateShowsWithUnseenSpecies();
+ DeactivateGameCompleteShowsIfNotUnlocked();
free(rmBuffer2);
}
}
-static void sub_80F0358(TVShow player1[25], TVShow player2[25], TVShow player3[25], TVShow player4[25])
+static void SetMixedTVShows(TVShow player1[TV_SHOWS_COUNT], TVShow player2[TV_SHOWS_COUNT], TVShow player3[TV_SHOWS_COUNT], TVShow player4[TV_SHOWS_COUNT])
{
u8 i;
u8 j;
- TVShow **argslist[4];
+ TVShow **tvShows[MAX_LINK_PLAYERS];
- argslist[0] = &player1;
- argslist[1] = &player2;
- argslist[2] = &player3;
- argslist[3] = &player4;
+ tvShows[0] = &player1;
+ tvShows[1] = &player2;
+ tvShows[2] = &player3;
+ tvShows[3] = &player4;
sTVShowMixingNumPlayers = GetLinkPlayerCount();
while (1)
{
- for (i = 0; i < sTVShowMixingNumPlayers; i ++)
+ for (i = 0; i < sTVShowMixingNumPlayers; i++)
{
if (i == 0)
- {
- sRecordMixingPartnersWithoutShowsToShare = i;
- }
- sTVShowMixingCurSlot = sub_80F06D0(argslist[i][0]);
+ sRecordMixingPartnersWithoutShowsToShare = 0;
+
+ sTVShowMixingCurSlot = FindInactiveShowInArray(tvShows[i][0]);
if (sTVShowMixingCurSlot == -1)
{
- sRecordMixingPartnersWithoutShowsToShare ++;
+ sRecordMixingPartnersWithoutShowsToShare++;
if (sRecordMixingPartnersWithoutShowsToShare == sTVShowMixingNumPlayers)
- {
return;
- }
}
else
{
- for (j = 0; j < sTVShowMixingNumPlayers - 1; j ++)
+ for (j = 0; j < sTVShowMixingNumPlayers - 1; j++)
{
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(argslist[(i + j + 1) % sTVShowMixingNumPlayers][0]);
+ sCurTVShowSlot = FindFirstEmptyRecordMixTVShowSlot(tvShows[(i + j + 1) % sTVShowMixingNumPlayers][0]);
if (sCurTVShowSlot != -1
- && sub_80F049C(&argslist[(i + j + 1) % sTVShowMixingNumPlayers][0], &argslist[i][0], (i + j + 1) % sTVShowMixingNumPlayers) == 1)
- {
+ && TryMixTVShow(&tvShows[(i + j + 1) % sTVShowMixingNumPlayers][0], &tvShows[i][0], (i + j + 1) % sTVShowMixingNumPlayers) == 1)
break;
- }
}
if (j == sTVShowMixingNumPlayers - 1)
- {
- DeleteTVShowInArrayByIdx(argslist[i][0], sTVShowMixingCurSlot);
- }
+ DeleteTVShowInArrayByIdx(tvShows[i][0], sTVShowMixingCurSlot);
}
}
}
}
-static bool8 sub_80F049C(TVShow *dest[25], TVShow *src[25], u8 idx)
+static bool8 TryMixTVShow(TVShow *dest[TV_SHOWS_COUNT], TVShow *src[TV_SHOWS_COUNT], u8 idx)
{
- u8 value;
- u8 switchval;
- TVShow *tv1;
- TVShow *tv2;
+ bool8 success;
+ u8 type;
+ TVShow *tv1 = *dest;
+ TVShow *tv2 = *src;
- tv1 = *dest;
- tv2 = *src;
- value = FALSE;
- switchval = GetTVChannelByShowType(tv2[sTVShowMixingCurSlot].common.kind);
- switch (switchval)
+ success = FALSE;
+ type = GetTVGroupByShowId(tv2[sTVShowMixingCurSlot].common.kind);
+ switch (type)
{
- case 2:
- value = sub_80F0580(&tv1[sCurTVShowSlot], &tv2[sTVShowMixingCurSlot], idx);
- break;
- case 3:
- value = sub_80F05E8(&tv1[sCurTVShowSlot], &tv2[sTVShowMixingCurSlot], idx);
- break;
- case 4:
- value = sub_80F0668(&tv1[sCurTVShowSlot], &tv2[sTVShowMixingCurSlot], idx);
- break;
+ case TVGROUP_NORMAL:
+ success = TryMixNormalTVShow(&tv1[sCurTVShowSlot], &tv2[sTVShowMixingCurSlot], idx);
+ break;
+ case TVGROUP_RECORD_MIX:
+ success = TryMixRecordMixTVShow(&tv1[sCurTVShowSlot], &tv2[sTVShowMixingCurSlot], idx);
+ break;
+ case TVGROUP_OUTBREAK:
+ success = TryMixOutbreakTVShow(&tv1[sCurTVShowSlot], &tv2[sTVShowMixingCurSlot], idx);
+ break;
}
- if (value == TRUE)
+
+ // Show was mixed, delete from array
+ if (success == TRUE)
{
DeleteTVShowInArrayByIdx(tv2, sTVShowMixingCurSlot);
return TRUE;
@@ -3719,386 +3547,354 @@ static bool8 sub_80F049C(TVShow *dest[25], TVShow *src[25], u8 idx)
return FALSE;
}
-static bool8 sub_80F0580(TVShow *tv1, TVShow *tv2, u8 idx)
+static bool8 TryMixNormalTVShow(TVShow *dest, TVShow *src, u8 idx)
{
u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
- if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi)
- {
+ if ((linkTrainerId & 0xFF) == src->common.trainerIdLo
+ && ((linkTrainerId >> 8) & 0xFF) == src->common.trainerIdHi)
return FALSE;
- }
- tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo;
- tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi;
- tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF;
- tv2->common.srcTrainerIdHi = linkTrainerId >> 8;
- *tv1 = *tv2;
- tv1->common.active = TRUE;
+
+ src->common.trainerIdLo = src->common.srcTrainerIdLo;
+ src->common.trainerIdHi = src->common.srcTrainerIdHi;
+ src->common.srcTrainerIdLo = linkTrainerId & 0xFF;
+ src->common.srcTrainerIdHi = linkTrainerId >> 8;
+ *dest = *src;
+ dest->common.active = TRUE;
return TRUE;
}
-static bool8 sub_80F05E8(TVShow *tv1, TVShow *tv2, u8 idx)
+static bool8 TryMixRecordMixTVShow(TVShow *dest, TVShow *src, u8 idx)
{
u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
- if ((linkTrainerId & 0xFF) == tv2->common.srcTrainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.srcTrainerIdHi)
- {
+
+ if ((linkTrainerId & 0xFF) == src->common.srcTrainerIdLo
+ && ((linkTrainerId >> 8) & 0xFF) == src->common.srcTrainerIdHi)
return FALSE;
- }
- if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi)
- {
+
+ if ((linkTrainerId & 0xFF) == src->common.trainerIdLo
+ && ((linkTrainerId >> 8) & 0xFF) == src->common.trainerIdHi)
return FALSE;
- }
- tv2->common.srcTrainerIdLo = tv2->common.srcTrainerId2Lo;
- tv2->common.srcTrainerIdHi = tv2->common.srcTrainerId2Hi;
- tv2->common.srcTrainerId2Lo = linkTrainerId & 0xFF;
- tv2->common.srcTrainerId2Hi = linkTrainerId >> 8;
- *tv1 = *tv2;
- tv1->common.active = TRUE;
+
+ src->common.srcTrainerIdLo = src->common.srcTrainerId2Lo;
+ src->common.srcTrainerIdHi = src->common.srcTrainerId2Hi;
+ src->common.srcTrainerId2Lo = linkTrainerId & 0xFF;
+ src->common.srcTrainerId2Hi = linkTrainerId >> 8;
+ *dest = *src;
+ dest->common.active = TRUE;
return TRUE;
}
-static bool8 sub_80F0668(TVShow *tv1, TVShow *tv2, u8 idx)
+static bool8 TryMixOutbreakTVShow(TVShow *dest, TVShow *src, u8 idx)
{
u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
- if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi)
- {
+
+ if ((linkTrainerId & 0xFF) == src->common.trainerIdLo
+ && ((linkTrainerId >> 8) & 0xFF) == src->common.trainerIdHi)
return FALSE;
- }
- tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo;
- tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi;
- tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF;
- tv2->common.srcTrainerIdHi = linkTrainerId >> 8;
- *tv1 = *tv2;
- tv1->common.active = TRUE;
- tv1->massOutbreak.daysLeft = 1;
+
+ src->common.trainerIdLo = src->common.srcTrainerIdLo;
+ src->common.trainerIdHi = src->common.srcTrainerIdHi;
+ src->common.srcTrainerIdLo = linkTrainerId & 0xFF;
+ src->common.srcTrainerIdHi = linkTrainerId >> 8;
+ *dest = *src;
+ dest->common.active = TRUE;
+ dest->massOutbreak.daysLeft = 1;
return TRUE;
}
-static s8 sub_80F06D0(TVShow *tvShows)
+static s8 FindInactiveShowInArray(TVShow *tvShows)
{
u8 i;
- for (i = 0; i < LAST_TVSHOW_IDX; i ++)
+ for (i = 0; i < LAST_TVSHOW_IDX; i++)
{
- if (tvShows[i].common.active == FALSE && (u8)(tvShows[i].common.kind - 1) < 60)
- {
+ // Second check is to make sure its a valid show (not too high, not TVSHOW_OFF_AIR)
+ if (tvShows[i].common.active == FALSE && (u8)(tvShows[i].common.kind - 1) < TVGROUP_OUTBREAK_END)
return i;
- }
}
return -1;
}
-static void sub_80F0708(void) // FIXME: register allocation shenanigans
+static void DeactivateShowsWithUnseenSpecies(void)
{
u16 i;
- u16 j;
+ u16 species;
- for (i = 0; i < LAST_TVSHOW_IDX; i ++)
+ for (i = 0; i < LAST_TVSHOW_IDX; i++)
{
switch (gSaveBlock1Ptr->tvShows[i].common.kind)
{
- case TVSHOW_CONTEST_LIVE_UPDATES:
- j = (&gSaveBlock1Ptr->tvShows[i])->contestLiveUpdates.winningSpecies;
- sub_80F0B24(j, i);
- j = (&gSaveBlock1Ptr->tvShows[i])->contestLiveUpdates.losingSpecies;
- sub_80F0B24(j, i);
- break;
- case TVSHOW_3_CHEERS_FOR_POKEBLOCKS:
- break;
- case TVSHOW_BATTLE_UPDATE:
- j = (&gSaveBlock1Ptr->tvShows[i])->battleUpdate.speciesPlayer;
- sub_80F0B24(j, i);
- j = (&gSaveBlock1Ptr->tvShows[i])->battleUpdate.speciesOpponent;
- sub_80F0B24(j, i);
- break;
- case TVSHOW_FAN_CLUB_SPECIAL:
- break;
- case TVSHOW_CONTEST_LIVE_UPDATES_2:
- break;
-
- case TVSHOW_OFF_AIR:
- break;
- case TVSHOW_FAN_CLUB_LETTER:
- j = (&gSaveBlock1Ptr->tvShows[i])->fanclubLetter.species;
- sub_80F0B24(j, i);
- break;
- case TVSHOW_RECENT_HAPPENINGS:
- break;
- case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
- j = (&gSaveBlock1Ptr->tvShows[i])->fanclubOpinions.species;
- sub_80F0B24(j, i);
- break;
- case TVSHOW_UNKN_SHOWTYPE_04:
- j = (&gSaveBlock1Ptr->tvShows[i])->unkShow04.var06;
- sub_80F0B24(j, i);
- break;
- case TVSHOW_NAME_RATER_SHOW:
- j = (&gSaveBlock1Ptr->tvShows[i])->nameRaterShow.species;
- sub_80F0B24(j, i);
- j = (&gSaveBlock1Ptr->tvShows[i])->nameRaterShow.randomSpecies;
- sub_80F0B24(j, i);
- break;
- case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
- j = (&gSaveBlock1Ptr->tvShows[i])->bravoTrainer.species;
- sub_80F0B24(j, i);
- break;
- case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
- j = (&gSaveBlock1Ptr->tvShows[i])->bravoTrainerTower.species;
- sub_80F0B24(j, i);
- j = (&gSaveBlock1Ptr->tvShows[i])->bravoTrainerTower.defeatedSpecies;
- sub_80F0B24(j, i);
- break;
-
- case TVSHOW_POKEMON_TODAY_CAUGHT:
- j = (&gSaveBlock1Ptr->tvShows[i])->pokemonToday.species;
- sub_80F0B24(j, i);
- break;
- case TVSHOW_SMART_SHOPPER:
- break;
- case TVSHOW_POKEMON_TODAY_FAILED:
- j = (&gSaveBlock1Ptr->tvShows[i])->pokemonTodayFailed.species;
- sub_80F0B24(j, i);
- j = (&gSaveBlock1Ptr->tvShows[i])->pokemonTodayFailed.species2;
- sub_80F0B24(j, i);
- break;
- case TVSHOW_FISHING_ADVICE:
- j = (&gSaveBlock1Ptr->tvShows[i])->pokemonAngler.species;
- sub_80F0B24(j, i);
- break;
- case TVSHOW_WORLD_OF_MASTERS:
- j = (&gSaveBlock1Ptr->tvShows[i])->worldOfMasters.species;
- sub_80F0B24(j, i);
- j = (&gSaveBlock1Ptr->tvShows[i])->worldOfMasters.caughtPoke;
- sub_80F0B24(j, i);
- break;
-
- case TVSHOW_TODAYS_RIVAL_TRAINER:
- break;
- case TVSHOW_TREND_WATCHER:
- break;
- case TVSHOW_TREASURE_INVESTIGATORS:
- break;
- case TVSHOW_FIND_THAT_GAMER:
- break;
- case TVSHOW_BREAKING_NEWS:
- j = (&gSaveBlock1Ptr->tvShows[i])->breakingNews.lastOpponentSpecies;
- sub_80F0B24(j, i);
- j = (&gSaveBlock1Ptr->tvShows[i])->breakingNews.poke1Species;
- sub_80F0B24(j, i);
- break;
- case TVSHOW_SECRET_BASE_VISIT:
- j = (&gSaveBlock1Ptr->tvShows[i])->secretBaseVisit.species;
- sub_80F0B24(j, i);
- break;
- case TVSHOW_LOTTO_WINNER:
- break;
- case TVSHOW_BATTLE_SEMINAR:
- j = (&gSaveBlock1Ptr->tvShows[i])->battleSeminar.species;
- sub_80F0B24(j, i);
- j = (&gSaveBlock1Ptr->tvShows[i])->battleSeminar.foeSpecies;
- sub_80F0B24(j, i);
- break;
- case TVSHOW_TRAINER_FAN_CLUB:
- break;
- case TVSHOW_CUTIES:
- break;
- case TVSHOW_FRONTIER:
- j = (&gSaveBlock1Ptr->tvShows[i])->frontier.species1;
- sub_80F0B24(j, i);
- j = (&gSaveBlock1Ptr->tvShows[i])->frontier.species2;
- sub_80F0B24(j, i);
- j = (&gSaveBlock1Ptr->tvShows[i])->frontier.facility;
- switch (j)
- {
- case 3:
- case 4:
- break;
- case 1:
- case 5 ... 13:
- j = (&gSaveBlock1Ptr->tvShows[i])->frontier.species3;
- sub_80F0B24(j, i);
- break;
- case 2:
- j = (&gSaveBlock1Ptr->tvShows[i])->frontier.species3;
- sub_80F0B24(j, i);
- j = (&gSaveBlock1Ptr->tvShows[i])->frontier.species4;
- sub_80F0B24(j, i);
- break;
- }
- break;
- case TVSHOW_NUMBER_ONE:
- break;
- case TVSHOW_SECRET_BASE_SECRETS:
- break;
- case TVSHOW_SAFARI_FAN_CLUB:
- break;
-
- case TVSHOW_MASS_OUTBREAK:
- break;
-
- default:
- SetTvShowInactive(i);
- break;
+ case TVSHOW_CONTEST_LIVE_UPDATES:
+ species = (&gSaveBlock1Ptr->tvShows[i])->contestLiveUpdates.winningSpecies;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ species = (&gSaveBlock1Ptr->tvShows[i])->contestLiveUpdates.losingSpecies;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ break;
+ case TVSHOW_BATTLE_UPDATE:
+ species = (&gSaveBlock1Ptr->tvShows[i])->battleUpdate.speciesPlayer;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ species = (&gSaveBlock1Ptr->tvShows[i])->battleUpdate.speciesOpponent;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ break;
+ case TVSHOW_FAN_CLUB_LETTER:
+ species = (&gSaveBlock1Ptr->tvShows[i])->fanclubLetter.species;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ species = (&gSaveBlock1Ptr->tvShows[i])->fanclubOpinions.species;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ break;
+ case TVSHOW_DUMMY:
+ species = (&gSaveBlock1Ptr->tvShows[i])->dummy.species;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ species = (&gSaveBlock1Ptr->tvShows[i])->nameRaterShow.species;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ species = (&gSaveBlock1Ptr->tvShows[i])->nameRaterShow.randomSpecies;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ species = (&gSaveBlock1Ptr->tvShows[i])->bravoTrainer.species;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ species = (&gSaveBlock1Ptr->tvShows[i])->bravoTrainerTower.species;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ species = (&gSaveBlock1Ptr->tvShows[i])->bravoTrainerTower.defeatedSpecies;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ break;
+ case TVSHOW_POKEMON_TODAY_CAUGHT:
+ species = (&gSaveBlock1Ptr->tvShows[i])->pokemonToday.species;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ species = (&gSaveBlock1Ptr->tvShows[i])->pokemonTodayFailed.species;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ species = (&gSaveBlock1Ptr->tvShows[i])->pokemonTodayFailed.species2;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ break;
+ case TVSHOW_FISHING_ADVICE:
+ species = (&gSaveBlock1Ptr->tvShows[i])->pokemonAngler.species;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ break;
+ case TVSHOW_WORLD_OF_MASTERS:
+ species = (&gSaveBlock1Ptr->tvShows[i])->worldOfMasters.species;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ species = (&gSaveBlock1Ptr->tvShows[i])->worldOfMasters.caughtPoke;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ break;
+ case TVSHOW_BREAKING_NEWS:
+ species = (&gSaveBlock1Ptr->tvShows[i])->breakingNews.lastOpponentSpecies;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ species = (&gSaveBlock1Ptr->tvShows[i])->breakingNews.poke1Species;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ break;
+ case TVSHOW_SECRET_BASE_VISIT:
+ species = (&gSaveBlock1Ptr->tvShows[i])->secretBaseVisit.species;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ break;
+ case TVSHOW_BATTLE_SEMINAR:
+ species = (&gSaveBlock1Ptr->tvShows[i])->battleSeminar.species;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ species = (&gSaveBlock1Ptr->tvShows[i])->battleSeminar.foeSpecies;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ break;
+ case TVSHOW_FRONTIER:
+ species = (&gSaveBlock1Ptr->tvShows[i])->frontier.species1;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ species = (&gSaveBlock1Ptr->tvShows[i])->frontier.species2;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ // Species var re-used here
+ species = (&gSaveBlock1Ptr->tvShows[i])->frontier.facilityAndMode;
+ switch (species)
+ {
+ case FRONTIER_SHOW_TOWER_MULTIS:
+ case FRONTIER_SHOW_TOWER_LINK_MULTIS:
+ break;
+ case FRONTIER_SHOW_TOWER_SINGLES:
+ case FRONTIER_SHOW_DOME_SINGLES:
+ case FRONTIER_SHOW_DOME_DOUBLES:
+ case FRONTIER_SHOW_FACTORY_SINGLES:
+ case FRONTIER_SHOW_FACTORY_DOUBLES:
+ case FRONTIER_SHOW_PIKE:
+ case FRONTIER_SHOW_ARENA:
+ case FRONTIER_SHOW_PALACE_SINGLES:
+ case FRONTIER_SHOW_PALACE_DOUBLES:
+ case FRONTIER_SHOW_PYRAMID:
+ species = (&gSaveBlock1Ptr->tvShows[i])->frontier.species3;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ break;
+ case FRONTIER_SHOW_TOWER_DOUBLES:
+ species = (&gSaveBlock1Ptr->tvShows[i])->frontier.species3;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ species = (&gSaveBlock1Ptr->tvShows[i])->frontier.species4;
+ DeactivateShowIfNotSeenSpecies(species, i);
+ break;
+ }
+ break;
+ // Shows with no species
+ case TVSHOW_OFF_AIR:
+ case TVSHOW_RECENT_HAPPENINGS:
+ case TVSHOW_3_CHEERS_FOR_POKEBLOCKS:
+ case TVSHOW_TODAYS_RIVAL_TRAINER:
+ case TVSHOW_TREND_WATCHER:
+ case TVSHOW_TREASURE_INVESTIGATORS:
+ case TVSHOW_FIND_THAT_GAMER:
+ case TVSHOW_TRAINER_FAN_CLUB:
+ case TVSHOW_CUTIES:
+ case TVSHOW_SMART_SHOPPER:
+ case TVSHOW_FAN_CLUB_SPECIAL:
+ case TVSHOW_LILYCOVE_CONTEST_LADY:
+ case TVSHOW_LOTTO_WINNER:
+ case TVSHOW_NUMBER_ONE:
+ case TVSHOW_SECRET_BASE_SECRETS:
+ case TVSHOW_SAFARI_FAN_CLUB:
+ case TVSHOW_MASS_OUTBREAK:
+ break;
+ default:
+ DeactivateShow(i);
+ break;
}
}
}
-void SetTvShowInactive(u8 showIdx)
+static void DeactivateShow(u8 showIdx)
{
gSaveBlock1Ptr->tvShows[showIdx].common.active = FALSE;
}
-static void sub_80F0B24(u16 species, u8 showIdx)
+static void DeactivateShowIfNotSeenSpecies(u16 species, u8 showIdx)
{
if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_SEEN))
- {
gSaveBlock1Ptr->tvShows[showIdx].common.active = FALSE;
- }
}
-static void sub_80F0B64(void)
+static void DeactivateGameCompleteShowsIfNotUnlocked(void)
{
u16 i;
if (FlagGet(FLAG_SYS_GAME_CLEAR) != TRUE)
{
- for (i = 0; i < LAST_TVSHOW_IDX; i ++)
+ for (i = 0; i < LAST_TVSHOW_IDX; i++)
{
if (gSaveBlock1Ptr->tvShows[i].common.kind == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE)
- {
gSaveBlock1Ptr->tvShows[i].common.active = FALSE;
- }
else if (gSaveBlock1Ptr->tvShows[i].common.kind == TVSHOW_MASS_OUTBREAK)
- {
gSaveBlock1Ptr->tvShows[i].common.active = FALSE;
- }
}
}
}
-void sub_80F0BB8(void)
+void DeactivateAllNormalTVShows(void)
{
u8 i;
- for (i = 0; i < 5; i ++)
+ for (i = 0; i < NUM_NORMAL_TVSHOW_SLOTS; i++)
{
- if (GetTVChannelByShowType(gSaveBlock1Ptr->tvShows[i].common.kind) == 2)
- {
+ if (GetTVGroupByShowId(gSaveBlock1Ptr->tvShows[i].common.kind) == TVGROUP_NORMAL)
gSaveBlock1Ptr->tvShows[i].common.active = FALSE;
- }
}
}
-static void sub_80F0C04(void)
+// Ensures a minimum of 5 empty mixed show slots
+static void DeleteExcessMixedShows(void)
{
s8 i;
- s8 ct;
-
- ct = 0;
- for (i = 5; i < LAST_TVSHOW_IDX; i ++)
+ s8 numEmptyMixSlots = 0;
+ for (i = NUM_NORMAL_TVSHOW_SLOTS; i < LAST_TVSHOW_IDX; i++)
{
if (gSaveBlock1Ptr->tvShows[i].common.kind == TVSHOW_OFF_AIR)
- {
- ct ++;
- }
- }
- for (i = 0; i < 5 - ct; i ++)
- {
- DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, i + 5);
+ numEmptyMixSlots++;
}
+ for (i = 0; i < NUM_NORMAL_TVSHOW_SLOTS - numEmptyMixSlots; i++)
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, i + NUM_NORMAL_TVSHOW_SLOTS);
}
-void ReceivePokeNewsData(void *src, u32 size, u8 masterIdx)
+void ReceivePokeNewsData(void *src, u32 size, u8 playersLinkId)
{
u8 i;
- PokeNews (*rmBuffer2)[4][16];
- PokeNews (*rmBuffer)[4][16];
+ PokeNews (*rmBuffer2)[MAX_LINK_PLAYERS][POKE_NEWS_COUNT];
+ PokeNews (*rmBuffer)[MAX_LINK_PLAYERS][POKE_NEWS_COUNT];
- rmBuffer2 = malloc(4 * 16 * sizeof(PokeNews));
+ rmBuffer2 = malloc(MAX_LINK_PLAYERS * POKE_NEWS_COUNT * sizeof(PokeNews));
if (rmBuffer2 != NULL)
{
- for (i = 0; i < 4; i ++)
- {
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
memcpy((*rmBuffer2)[i], src + i * size, sizeof((*rmBuffer2)[i]));
- }
+
rmBuffer = rmBuffer2;
- switch (masterIdx)
+
+ // Position player's PokeNews in argument list depending on link id
+ switch (playersLinkId)
{
- case 0:
- sub_80F0D60(gSaveBlock1Ptr->pokeNews, (*rmBuffer)[1], (*rmBuffer)[2], (*rmBuffer)[3]);
- break;
- case 1:
- sub_80F0D60((*rmBuffer)[0], gSaveBlock1Ptr->pokeNews, (*rmBuffer)[2], (*rmBuffer)[3]);
- break;
- case 2:
- sub_80F0D60((*rmBuffer)[0], (*rmBuffer)[1], gSaveBlock1Ptr->pokeNews, (*rmBuffer)[3]);
- break;
- case 3:
- sub_80F0D60((*rmBuffer)[0], (*rmBuffer)[1], (*rmBuffer)[2], gSaveBlock1Ptr->pokeNews);
- break;
+ case 0:
+ SetMixedPokeNews(gSaveBlock1Ptr->pokeNews, (*rmBuffer)[1], (*rmBuffer)[2], (*rmBuffer)[3]);
+ break;
+ case 1:
+ SetMixedPokeNews((*rmBuffer)[0], gSaveBlock1Ptr->pokeNews, (*rmBuffer)[2], (*rmBuffer)[3]);
+ break;
+ case 2:
+ SetMixedPokeNews((*rmBuffer)[0], (*rmBuffer)[1], gSaveBlock1Ptr->pokeNews, (*rmBuffer)[3]);
+ break;
+ case 3:
+ SetMixedPokeNews((*rmBuffer)[0], (*rmBuffer)[1], (*rmBuffer)[2], gSaveBlock1Ptr->pokeNews);
+ break;
}
- sub_80F0EEC();
- sub_80F0F24();
+ ClearInvalidPokeNews();
+ ClearPokeNewsIfGameNotComplete();
free(rmBuffer2);
}
}
-static void sub_80F0D60(PokeNews player1[16], PokeNews player2[16], PokeNews player3[16], PokeNews player4[16])
+static void SetMixedPokeNews(PokeNews player1[POKE_NEWS_COUNT], PokeNews player2[POKE_NEWS_COUNT], PokeNews player3[POKE_NEWS_COUNT], PokeNews player4[POKE_NEWS_COUNT])
{
- u8 i;
- u8 j;
- u8 k;
- PokeNews **argslist[4];
+ u8 i, j, k;
+ PokeNews **pokeNews[MAX_LINK_PLAYERS];
- argslist[0] = &player1;
- argslist[1] = &player2;
- argslist[2] = &player3;
- argslist[3] = &player4;
+ pokeNews[0] = &player1;
+ pokeNews[1] = &player2;
+ pokeNews[2] = &player3;
+ pokeNews[3] = &player4;
sTVShowNewsMixingNumPlayers = GetLinkPlayerCount();
- for (i = 0; i < POKE_NEWS_COUNT; i ++)
+ for (i = 0; i < POKE_NEWS_COUNT; i++)
{
- for (j = 0; j < sTVShowNewsMixingNumPlayers; j ++)
+ for (j = 0; j < sTVShowNewsMixingNumPlayers; j++)
{
- sTVShowMixingCurSlot = sub_80F0ECC(*argslist[j], i);
+ sTVShowMixingCurSlot = GetPokeNewsSlotIfActive(*pokeNews[j], i);
if (sTVShowMixingCurSlot != -1)
{
for (k = 0; k < sTVShowNewsMixingNumPlayers - 1; k++)
{
- sCurTVShowSlot = sub_80EEE30(*argslist[(j + k + 1) % sTVShowNewsMixingNumPlayers]);
+ sCurTVShowSlot = GetFirstEmptyPokeNewsSlot(*pokeNews[(j + k + 1) % sTVShowNewsMixingNumPlayers]);
if (sCurTVShowSlot != -1)
- {
- sub_80F0E58(argslist[(j + k + 1) % sTVShowNewsMixingNumPlayers], argslist[j]);
- }
+ InitTryMixPokeNewsShow(pokeNews[(j + k + 1) % sTVShowNewsMixingNumPlayers], pokeNews[j]);
}
}
}
}
}
-static void sub_80F0E58(PokeNews *dest[16], PokeNews *src[16])
+static void InitTryMixPokeNewsShow(PokeNews *dest[POKE_NEWS_COUNT], PokeNews *src[POKE_NEWS_COUNT])
{
- PokeNews *ptr1;
- PokeNews *ptr2;
-
- ptr1 = *dest;
- ptr2 = *src;
+ PokeNews *ptr1 = *dest;
+ PokeNews *ptr2 = *src;
ptr2 += sTVShowMixingCurSlot;
- sub_80F0E84(ptr1, ptr2, sCurTVShowSlot);
+ TryMixPokeNewsShow(ptr1, ptr2, sCurTVShowSlot);
}
-static bool8 sub_80F0E84(PokeNews *dest, PokeNews *src, s8 slot)
+static bool8 TryMixPokeNewsShow(PokeNews *dest, PokeNews *src, s8 slot)
{
u8 i;
if (src->kind == POKENEWS_NONE)
- {
return FALSE;
- }
- for (i = 0; i < POKE_NEWS_COUNT; i ++)
+
+ for (i = 0; i < POKE_NEWS_COUNT; i++)
{
if (dest[i].kind == src->kind)
- {
return FALSE;
- }
}
dest[slot].kind = src->kind;
dest[slot].state = 1;
@@ -4106,43 +3902,38 @@ static bool8 sub_80F0E84(PokeNews *dest, PokeNews *src, s8 slot)
return TRUE;
}
-static s8 sub_80F0ECC(PokeNews *pokeNews, u8 idx)
+static s8 GetPokeNewsSlotIfActive(PokeNews *pokeNews, u8 idx)
{
if (pokeNews[idx].kind == POKENEWS_NONE)
- {
return -1;
- }
+
return idx;
}
-static void sub_80F0EEC(void)
+static void ClearInvalidPokeNews(void)
{
u8 i;
- for (i = 0; i < POKE_NEWS_COUNT; i ++)
+ for (i = 0; i < POKE_NEWS_COUNT; i++)
{
if (gSaveBlock1Ptr->pokeNews[i].kind > POKENEWS_BLENDMASTER)
- {
- ClearPokemonNewsI(i);
- }
+ ClearPokeNewsBySlot(i);
}
- sub_80EEEB8();
+ CompactPokeNews();
}
-static void sub_80F0F24(void)
+static void ClearPokeNewsIfGameNotComplete(void)
{
u8 i;
if (FlagGet(FLAG_SYS_GAME_CLEAR) != TRUE)
{
- for (i = 0; i < POKE_NEWS_COUNT; i ++)
- {
+ for (i = 0; i < POKE_NEWS_COUNT; i++)
gSaveBlock1Ptr->pokeNews[i].state = 0;
- }
}
}
-#define tvlangfix(strptr, langptr, langfix) \
+#define SetStrLanguage(strptr, langptr, langfix) \
if (IsStringJapanese(strptr)) \
{ \
(langptr) = LANGUAGE_JAPANESE; \
@@ -4152,349 +3943,341 @@ else \
(langptr) = langfix; \
}
-static void sub_80F0F64(TVShow *show, u32 language)
+// Unused
+static void TranslateShowNames(TVShow *show, u32 language)
{
int i;
- TVShow **r4;
+ TVShow **shows;
- r4 = calloc(11, sizeof(TVShow *));
- for (i = 0; i < LAST_TVSHOW_IDX; i ++)
+ shows = calloc(11, sizeof(TVShow *));
+ for (i = 0; i < LAST_TVSHOW_IDX; i++)
{
switch (show[i].common.kind)
{
- case TVSHOW_FAN_CLUB_LETTER:
- case TVSHOW_RECENT_HAPPENINGS:
- r4[0] = &show[i];
- tvlangfix(r4[0]->fanclubLetter.playerName, r4[0]->fanclubLetter.language, language);
- break;
- case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
- r4[1] = &show[i];
- tvlangfix(r4[1]->fanclubOpinions.playerName, r4[1]->fanclubOpinions.language, language);
- tvlangfix(r4[1]->fanclubOpinions.nickname, r4[1]->fanclubOpinions.pokemonNameLanguage, language);
- break;
- case TVSHOW_POKEMON_TODAY_CAUGHT:
- r4[6] = &show[i];
- tvlangfix(r4[6]->pokemonToday.playerName, r4[6]->pokemonToday.language, language);
- tvlangfix(r4[6]->pokemonToday.nickname, r4[6]->pokemonToday.language2, language);
- break;
- case TVSHOW_SMART_SHOPPER:
- r4[7] = &show[i];
- tvlangfix(r4[7]->smartshopperShow.playerName, r4[7]->smartshopperShow.language, language);
- break;
- case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
- r4[5] = &show[i];
- tvlangfix(r4[5]->bravoTrainerTower.trainerName, r4[5]->bravoTrainerTower.language, language);
- tvlangfix(r4[5]->bravoTrainerTower.pokemonName, r4[5]->bravoTrainerTower.pokemonNameLanguage, language);
- break;
- case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
- r4[4] = &show[i];
- tvlangfix(r4[4]->bravoTrainer.playerName, r4[4]->bravoTrainer.language, language);
- tvlangfix(r4[4]->bravoTrainer.pokemonNickname, r4[4]->bravoTrainer.pokemonNameLanguage, language);
- break;
- case TVSHOW_NAME_RATER_SHOW:
- r4[3] = &show[i];
- tvlangfix(r4[3]->nameRaterShow.trainerName, r4[3]->nameRaterShow.language, language);
- tvlangfix(r4[3]->nameRaterShow.pokemonName, r4[3]->nameRaterShow.pokemonNameLanguage, language);
- break;
- case TVSHOW_POKEMON_TODAY_FAILED:
- r4[2] = &show[i];
- tvlangfix(r4[2]->pokemonTodayFailed.playerName, r4[2]->pokemonTodayFailed.language, language);
- break;
- case TVSHOW_FISHING_ADVICE:
- r4[8] = &show[i];
- tvlangfix(r4[8]->pokemonAngler.playerName, r4[8]->pokemonAngler.language, language);
- break;
- case TVSHOW_WORLD_OF_MASTERS:
- r4[9] = &show[i];
- tvlangfix(r4[9]->worldOfMasters.playerName, r4[9]->worldOfMasters.language, language);
- break;
- case TVSHOW_MASS_OUTBREAK:
- r4[10] = &show[i];
- r4[10]->massOutbreak.language = language;
- break;
+ case TVSHOW_FAN_CLUB_LETTER:
+ case TVSHOW_RECENT_HAPPENINGS: // NOTE: These two shows are assumed to have the same struct layout
+ shows[0] = &show[i];
+ SetStrLanguage(shows[0]->fanclubLetter.playerName, shows[0]->fanclubLetter.language, language);
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ shows[1] = &show[i];
+ SetStrLanguage(shows[1]->fanclubOpinions.playerName, shows[1]->fanclubOpinions.language, language);
+ SetStrLanguage(shows[1]->fanclubOpinions.nickname, shows[1]->fanclubOpinions.pokemonNameLanguage, language);
+ break;
+ case TVSHOW_POKEMON_TODAY_CAUGHT:
+ shows[6] = &show[i];
+ SetStrLanguage(shows[6]->pokemonToday.playerName, shows[6]->pokemonToday.language, language);
+ SetStrLanguage(shows[6]->pokemonToday.nickname, shows[6]->pokemonToday.language2, language);
+ break;
+ case TVSHOW_SMART_SHOPPER:
+ shows[7] = &show[i];
+ SetStrLanguage(shows[7]->smartshopperShow.playerName, shows[7]->smartshopperShow.language, language);
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ shows[5] = &show[i];
+ SetStrLanguage(shows[5]->bravoTrainerTower.trainerName, shows[5]->bravoTrainerTower.language, language);
+ SetStrLanguage(shows[5]->bravoTrainerTower.pokemonName, shows[5]->bravoTrainerTower.pokemonNameLanguage, language);
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ shows[4] = &show[i];
+ SetStrLanguage(shows[4]->bravoTrainer.playerName, shows[4]->bravoTrainer.language, language);
+ SetStrLanguage(shows[4]->bravoTrainer.pokemonNickname, shows[4]->bravoTrainer.pokemonNameLanguage, language);
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ shows[3] = &show[i];
+ SetStrLanguage(shows[3]->nameRaterShow.trainerName, shows[3]->nameRaterShow.language, language);
+ SetStrLanguage(shows[3]->nameRaterShow.pokemonName, shows[3]->nameRaterShow.pokemonNameLanguage, language);
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ shows[2] = &show[i];
+ SetStrLanguage(shows[2]->pokemonTodayFailed.playerName, shows[2]->pokemonTodayFailed.language, language);
+ break;
+ case TVSHOW_FISHING_ADVICE:
+ shows[8] = &show[i];
+ SetStrLanguage(shows[8]->pokemonAngler.playerName, shows[8]->pokemonAngler.language, language);
+ break;
+ case TVSHOW_WORLD_OF_MASTERS:
+ shows[9] = &show[i];
+ SetStrLanguage(shows[9]->worldOfMasters.playerName, shows[9]->worldOfMasters.language, language);
+ break;
+ case TVSHOW_MASS_OUTBREAK:
+ shows[10] = &show[i];
+ shows[10]->massOutbreak.language = language;
+ break;
}
}
- free(r4);
+ free(shows);
}
-void sub_80F1208(TVShow *shows)
+void SanitizeTVShowsForRuby(TVShow *shows)
{
TVShow *curShow;
- sub_80F14F8(shows);
- for (curShow = shows; curShow < shows + LAST_TVSHOW_IDX; curShow ++)
+ SanitizeTVShowLocationsForRuby(shows);
+ for (curShow = shows; curShow < shows + LAST_TVSHOW_IDX; curShow++)
{
if (curShow->bravoTrainerTower.kind == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE)
{
- if ((curShow->bravoTrainerTower.language == LANGUAGE_JAPANESE && curShow->bravoTrainerTower.pokemonNameLanguage != LANGUAGE_JAPANESE) || (curShow->bravoTrainerTower.language != LANGUAGE_JAPANESE && curShow->bravoTrainerTower.pokemonNameLanguage == LANGUAGE_JAPANESE))
- {
+ if ((curShow->bravoTrainerTower.language == LANGUAGE_JAPANESE && curShow->bravoTrainerTower.pokemonNameLanguage != LANGUAGE_JAPANESE)
+ || (curShow->bravoTrainerTower.language != LANGUAGE_JAPANESE && curShow->bravoTrainerTower.pokemonNameLanguage == LANGUAGE_JAPANESE))
memset(curShow, 0, sizeof(TVShow));
- }
}
}
}
-static void sub_80F1254(TVShow *shows)
+static void TranslateRubyShows(TVShow *shows)
{
TVShow *curShow;
- for (curShow = shows; curShow < shows + LAST_TVSHOW_IDX; curShow ++)
+ for (curShow = shows; curShow < shows + LAST_TVSHOW_IDX; curShow++)
{
if (curShow->bravoTrainerTower.kind == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE)
{
if (IsStringJapanese(curShow->bravoTrainerTower.pokemonName))
- {
curShow->bravoTrainerTower.pokemonNameLanguage = LANGUAGE_JAPANESE;
- }
else
- {
curShow->bravoTrainerTower.pokemonNameLanguage = GAME_LANGUAGE;
- }
}
}
}
-u8 TV_GetStringLanguage(u8 *str)
+static u8 GetStringLanguage(u8 *str)
{
return IsStringJapanese(str) ? LANGUAGE_JAPANESE : GAME_LANGUAGE;
}
-static void sub_80F12A4(TVShow *shows)
+static void TranslateJapaneseEmeraldShows(TVShow *shows)
{
TVShow *curShow;
- for (curShow = shows; curShow < shows + LAST_TVSHOW_IDX; curShow ++)
+ for (curShow = shows; curShow < shows + LAST_TVSHOW_IDX; curShow++)
{
switch(curShow->common.kind)
{
- case TVSHOW_FAN_CLUB_LETTER:
- curShow->fanclubLetter.language = TV_GetStringLanguage(curShow->fanclubLetter.playerName);
- break;
- case TVSHOW_RECENT_HAPPENINGS:
- curShow->recentHappenings.language = TV_GetStringLanguage(curShow->recentHappenings.playerName);
- break;
- case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
- curShow->fanclubOpinions.language = TV_GetStringLanguage(curShow->fanclubOpinions.playerName);
- curShow->fanclubOpinions.pokemonNameLanguage = TV_GetStringLanguage(curShow->fanclubOpinions.nickname);
- break;
- case TVSHOW_UNKN_SHOWTYPE_04:
- curShow->unkShow04.language = TV_GetStringLanguage(curShow->unkShow04.string_0b);
- break;
- case TVSHOW_NAME_RATER_SHOW:
- curShow->nameRaterShow.language = TV_GetStringLanguage(curShow->nameRaterShow.trainerName);
- curShow->nameRaterShow.pokemonNameLanguage = TV_GetStringLanguage(curShow->nameRaterShow.pokemonName);
- break;
- case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
- curShow->bravoTrainer.language = TV_GetStringLanguage(curShow->bravoTrainer.playerName);
- curShow->bravoTrainer.pokemonNameLanguage = TV_GetStringLanguage(curShow->bravoTrainer.pokemonNickname);
- break;
- case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
- curShow->bravoTrainerTower.language = TV_GetStringLanguage(curShow->bravoTrainerTower.trainerName);
- curShow->bravoTrainerTower.pokemonNameLanguage = TV_GetStringLanguage(curShow->bravoTrainerTower.pokemonName);
- break;
- case TVSHOW_CONTEST_LIVE_UPDATES:
- curShow->contestLiveUpdates.winningTrainerLanguage = TV_GetStringLanguage(curShow->contestLiveUpdates.winningTrainerName);
- curShow->contestLiveUpdates.losingTrainerLanguage = TV_GetStringLanguage(curShow->contestLiveUpdates.losingTrainerName);
- break;
- case TVSHOW_3_CHEERS_FOR_POKEBLOCKS:
- curShow->threeCheers.language = TV_GetStringLanguage(curShow->threeCheers.playerName);
- curShow->threeCheers.worstBlenderLanguage = TV_GetStringLanguage(curShow->threeCheers.worstBlenderName);
- break;
- case TVSHOW_BATTLE_UPDATE:
- curShow->battleUpdate.language = TV_GetStringLanguage(curShow->battleUpdate.playerName);
- curShow->battleUpdate.linkOpponentLanguage = TV_GetStringLanguage(curShow->battleUpdate.linkOpponentName);
- break;
- case TVSHOW_FAN_CLUB_SPECIAL:
- curShow->fanClubSpecial.language = TV_GetStringLanguage(curShow->fanClubSpecial.playerName);
- curShow->fanClubSpecial.idolNameLanguage = TV_GetStringLanguage(curShow->fanClubSpecial.idolName);
- break;
- case TVSHOW_CONTEST_LIVE_UPDATES_2:
- curShow->contestLiveUpdates2.language = TV_GetStringLanguage(curShow->contestLiveUpdates2.playerName);
- curShow->contestLiveUpdates2.pokemonNameLanguage = TV_GetStringLanguage(curShow->contestLiveUpdates2.nickname);
- break;
-
- case TVSHOW_POKEMON_TODAY_CAUGHT:
- curShow->pokemonToday.language = TV_GetStringLanguage(curShow->pokemonToday.playerName);
- curShow->pokemonToday.language2 = TV_GetStringLanguage(curShow->pokemonToday.nickname);
- break;
- case TVSHOW_SMART_SHOPPER:
- curShow->smartshopperShow.language = TV_GetStringLanguage(curShow->smartshopperShow.playerName);
- break;
- case TVSHOW_POKEMON_TODAY_FAILED:
- curShow->pokemonTodayFailed.language = TV_GetStringLanguage(curShow->pokemonTodayFailed.playerName);
- break;
- case TVSHOW_FISHING_ADVICE:
- curShow->pokemonAngler.language = TV_GetStringLanguage(curShow->pokemonAngler.playerName);
- break;
- case TVSHOW_WORLD_OF_MASTERS:
- curShow->worldOfMasters.language = TV_GetStringLanguage(curShow->worldOfMasters.playerName);
- break;
- case TVSHOW_TREND_WATCHER:
- curShow->trendWatcher.language = TV_GetStringLanguage(curShow->trendWatcher.playerName);
- break;
- case TVSHOW_BREAKING_NEWS:
- curShow->breakingNews.language = TV_GetStringLanguage(curShow->breakingNews.playerName);
- break;
- case TVSHOW_BATTLE_SEMINAR:
- curShow->battleSeminar.language = TV_GetStringLanguage(curShow->battleSeminar.playerName);
- break;
- case TVSHOW_FIND_THAT_GAMER:
- case TVSHOW_TRAINER_FAN_CLUB:
- curShow->trainerFanClub.language = TV_GetStringLanguage(curShow->trainerFanClub.playerName);
- break;
- case TVSHOW_CUTIES:
- curShow->cuties.language = TV_GetStringLanguage(curShow->cuties.playerName);
- curShow->cuties.pokemonNameLanguage = TV_GetStringLanguage(curShow->cuties.nickname);
- break;
- case TVSHOW_TODAYS_RIVAL_TRAINER:
- case TVSHOW_SECRET_BASE_VISIT:
- case TVSHOW_FRONTIER:
- curShow->rivalTrainer.language = TV_GetStringLanguage(curShow->rivalTrainer.playerName);
- break;
- case TVSHOW_TREASURE_INVESTIGATORS:
- case TVSHOW_LOTTO_WINNER:
- case TVSHOW_NUMBER_ONE:
- curShow->treasureInvestigators.language = TV_GetStringLanguage(curShow->treasureInvestigators.playerName);
- break;
- case TVSHOW_SECRET_BASE_SECRETS:
- curShow->secretBaseSecrets.language = TV_GetStringLanguage(curShow->secretBaseSecrets.playerName);
- curShow->secretBaseSecrets.baseOwnersNameLanguage = TV_GetStringLanguage(curShow->secretBaseSecrets.baseOwnersName);
- break;
- case TVSHOW_SAFARI_FAN_CLUB:
- curShow->safariFanClub.language = TV_GetStringLanguage(curShow->safariFanClub.playerName);
- break;
- case TVSHOW_MASS_OUTBREAK:
- break;
+ case TVSHOW_FAN_CLUB_LETTER:
+ curShow->fanclubLetter.language = GetStringLanguage(curShow->fanclubLetter.playerName);
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ curShow->recentHappenings.language = GetStringLanguage(curShow->recentHappenings.playerName);
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ curShow->fanclubOpinions.language = GetStringLanguage(curShow->fanclubOpinions.playerName);
+ curShow->fanclubOpinions.pokemonNameLanguage = GetStringLanguage(curShow->fanclubOpinions.nickname);
+ break;
+ case TVSHOW_DUMMY:
+ curShow->dummy.language = GetStringLanguage(curShow->dummy.name);
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ curShow->nameRaterShow.language = GetStringLanguage(curShow->nameRaterShow.trainerName);
+ curShow->nameRaterShow.pokemonNameLanguage = GetStringLanguage(curShow->nameRaterShow.pokemonName);
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ curShow->bravoTrainer.language = GetStringLanguage(curShow->bravoTrainer.playerName);
+ curShow->bravoTrainer.pokemonNameLanguage = GetStringLanguage(curShow->bravoTrainer.pokemonNickname);
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ curShow->bravoTrainerTower.language = GetStringLanguage(curShow->bravoTrainerTower.trainerName);
+ curShow->bravoTrainerTower.pokemonNameLanguage = GetStringLanguage(curShow->bravoTrainerTower.pokemonName);
+ break;
+ case TVSHOW_CONTEST_LIVE_UPDATES:
+ curShow->contestLiveUpdates.winningTrainerLanguage = GetStringLanguage(curShow->contestLiveUpdates.winningTrainerName);
+ curShow->contestLiveUpdates.losingTrainerLanguage = GetStringLanguage(curShow->contestLiveUpdates.losingTrainerName);
+ break;
+ case TVSHOW_3_CHEERS_FOR_POKEBLOCKS:
+ curShow->threeCheers.language = GetStringLanguage(curShow->threeCheers.playerName);
+ curShow->threeCheers.worstBlenderLanguage = GetStringLanguage(curShow->threeCheers.worstBlenderName);
+ break;
+ case TVSHOW_BATTLE_UPDATE:
+ curShow->battleUpdate.language = GetStringLanguage(curShow->battleUpdate.playerName);
+ curShow->battleUpdate.linkOpponentLanguage = GetStringLanguage(curShow->battleUpdate.linkOpponentName);
+ break;
+ case TVSHOW_FAN_CLUB_SPECIAL:
+ curShow->fanClubSpecial.language = GetStringLanguage(curShow->fanClubSpecial.playerName);
+ curShow->fanClubSpecial.idolNameLanguage = GetStringLanguage(curShow->fanClubSpecial.idolName);
+ break;
+ case TVSHOW_LILYCOVE_CONTEST_LADY:
+ curShow->contestLady.language = GetStringLanguage(curShow->contestLady.playerName);
+ curShow->contestLady.pokemonNameLanguage = GetStringLanguage(curShow->contestLady.nickname);
+ break;
+ case TVSHOW_POKEMON_TODAY_CAUGHT:
+ curShow->pokemonToday.language = GetStringLanguage(curShow->pokemonToday.playerName);
+ curShow->pokemonToday.language2 = GetStringLanguage(curShow->pokemonToday.nickname);
+ break;
+ case TVSHOW_SMART_SHOPPER:
+ curShow->smartshopperShow.language = GetStringLanguage(curShow->smartshopperShow.playerName);
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ curShow->pokemonTodayFailed.language = GetStringLanguage(curShow->pokemonTodayFailed.playerName);
+ break;
+ case TVSHOW_FISHING_ADVICE:
+ curShow->pokemonAngler.language = GetStringLanguage(curShow->pokemonAngler.playerName);
+ break;
+ case TVSHOW_WORLD_OF_MASTERS:
+ curShow->worldOfMasters.language = GetStringLanguage(curShow->worldOfMasters.playerName);
+ break;
+ case TVSHOW_TREND_WATCHER:
+ curShow->trendWatcher.language = GetStringLanguage(curShow->trendWatcher.playerName);
+ break;
+ case TVSHOW_BREAKING_NEWS:
+ curShow->breakingNews.language = GetStringLanguage(curShow->breakingNews.playerName);
+ break;
+ case TVSHOW_BATTLE_SEMINAR:
+ curShow->battleSeminar.language = GetStringLanguage(curShow->battleSeminar.playerName);
+ break;
+ case TVSHOW_FIND_THAT_GAMER:
+ case TVSHOW_TRAINER_FAN_CLUB:
+ curShow->trainerFanClub.language = GetStringLanguage(curShow->trainerFanClub.playerName);
+ break;
+ case TVSHOW_CUTIES:
+ curShow->cuties.language = GetStringLanguage(curShow->cuties.playerName);
+ curShow->cuties.pokemonNameLanguage = GetStringLanguage(curShow->cuties.nickname);
+ break;
+ case TVSHOW_TODAYS_RIVAL_TRAINER:
+ case TVSHOW_SECRET_BASE_VISIT:
+ case TVSHOW_FRONTIER:
+ curShow->rivalTrainer.language = GetStringLanguage(curShow->rivalTrainer.playerName);
+ break;
+ case TVSHOW_TREASURE_INVESTIGATORS:
+ case TVSHOW_LOTTO_WINNER:
+ case TVSHOW_NUMBER_ONE:
+ curShow->treasureInvestigators.language = GetStringLanguage(curShow->treasureInvestigators.playerName);
+ break;
+ case TVSHOW_SECRET_BASE_SECRETS:
+ curShow->secretBaseSecrets.language = GetStringLanguage(curShow->secretBaseSecrets.playerName);
+ curShow->secretBaseSecrets.baseOwnersNameLanguage = GetStringLanguage(curShow->secretBaseSecrets.baseOwnersName);
+ break;
+ case TVSHOW_SAFARI_FAN_CLUB:
+ curShow->safariFanClub.language = GetStringLanguage(curShow->safariFanClub.playerName);
+ break;
+ case TVSHOW_MASS_OUTBREAK:
+ break;
}
}
}
-void sub_80F14F8(TVShow *shows)
+void SanitizeTVShowLocationsForRuby(TVShow *shows)
{
int i;
- for (i = 0; i < LAST_TVSHOW_IDX; i ++)
+ for (i = 0; i < LAST_TVSHOW_IDX; i++)
{
switch (shows[i].common.kind)
{
- case TVSHOW_WORLD_OF_MASTERS:
- if (shows[i].worldOfMasters.location > KANTO_MAPSEC_START)
- {
- memset(&shows[i], 0, sizeof(TVShow));
- }
- break;
- case TVSHOW_POKEMON_TODAY_FAILED:
- if (shows[i].pokemonTodayFailed.location > KANTO_MAPSEC_START)
- {
- memset(&shows[i], 0, sizeof(TVShow));
- }
- break;
+ case TVSHOW_WORLD_OF_MASTERS:
+ if (shows[i].worldOfMasters.location > KANTO_MAPSEC_START)
+ memset(&shows[i], 0, sizeof(TVShow));
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ if (shows[i].pokemonTodayFailed.location > KANTO_MAPSEC_START)
+ memset(&shows[i], 0, sizeof(TVShow));
+ break;
}
}
}
+// gSpecialVar_0x8004 here is set from GetRandomActiveShowIdx in EventScript_TryDoTVShow
void DoTVShow(void)
{
if (gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004].common.active)
{
switch (gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004].common.kind)
{
- case TVSHOW_FAN_CLUB_LETTER:
- DoTVShowPokemonFanClubLetter();
- break;
- case TVSHOW_RECENT_HAPPENINGS:
- DoTVShowRecentHappenings();
- break;
- case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
- DoTVShowPokemonFanClubOpinions();
- break;
- case TVSHOW_UNKN_SHOWTYPE_04:
- DoTVShowDummiedOut();
- break;
- case TVSHOW_MASS_OUTBREAK:
- DoTVShowPokemonNewsMassOutbreak();
- break;
- case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
- DoTVShowBravoTrainerPokemonProfile();
- break;
- case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
- DoTVShowBravoTrainerBattleTower();
- break;
- case TVSHOW_POKEMON_TODAY_CAUGHT:
- DoTVShowPokemonTodaySuccessfulCapture();
- break;
- case TVSHOW_SMART_SHOPPER:
- DoTVShowTodaysSmartShopper();
- break;
- case TVSHOW_NAME_RATER_SHOW:
- DoTVShowTheNameRaterShow();
- break;
- case TVSHOW_CONTEST_LIVE_UPDATES:
- DoTVShowPokemonContestLiveUpdates();
- break;
- case TVSHOW_BATTLE_UPDATE:
- DoTVShowPokemonBattleUpdate();
- break;
- case TVSHOW_3_CHEERS_FOR_POKEBLOCKS:
- DoTVShow3CheersForPokeblocks();
- break;
- case TVSHOW_POKEMON_TODAY_FAILED:
- DoTVShowPokemonTodayFailedCapture();
- break;
- case TVSHOW_FISHING_ADVICE:
- DoTVShowPokemonAngler();
- break;
- case TVSHOW_WORLD_OF_MASTERS:
- DoTVShowTheWorldOfMasters();
- break;
- case TVSHOW_TODAYS_RIVAL_TRAINER:
- DoTVShowTodaysRivalTrainer();
- break;
- case TVSHOW_TREND_WATCHER:
- DoTVShowDewfordTrendWatcherNetwork();
- break;
- case TVSHOW_TREASURE_INVESTIGATORS:
- DoTVShowHoennTreasureInvestigators();
- break;
- case TVSHOW_FIND_THAT_GAMER:
- DoTVShowFindThatGamer();
- break;
- case TVSHOW_BREAKING_NEWS:
- DoTVShowBreakingNewsTV();
- break;
- case TVSHOW_SECRET_BASE_VISIT:
- DoTVShowSecretBaseVisit();
- break;
- case TVSHOW_LOTTO_WINNER:
- DoTVShowPokemonLotteryWinnerFlashReport();
- break;
- case TVSHOW_BATTLE_SEMINAR:
- DoTVShowThePokemonBattleSeminar();
- break;
- case TVSHOW_FAN_CLUB_SPECIAL:
- DoTVShowTrainerFanClubSpecial();
- break;
- case TVSHOW_TRAINER_FAN_CLUB:
- DoTVShowTrainerFanClub();
- break;
- case TVSHOW_CUTIES:
- DoTVShowSpotTheCuties();
- break;
- case TVSHOW_FRONTIER:
- DoTVShowPokemonNewsBattleFrontier();
- break;
- case TVSHOW_NUMBER_ONE:
- DoTVShowWhatsNo1InHoennToday();
- break;
- case TVSHOW_SECRET_BASE_SECRETS:
- DoTVShowSecretBaseSecrets();
- break;
- case TVSHOW_SAFARI_FAN_CLUB:
- DoTVShowSafariFanClub();
- break;
- case TVSHOW_CONTEST_LIVE_UPDATES_2:
- DoTVShowPokemonContestLiveUpdates2();
- break;
+ case TVSHOW_FAN_CLUB_LETTER:
+ DoTVShowPokemonFanClubLetter();
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ DoTVShowRecentHappenings();
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ DoTVShowPokemonFanClubOpinions();
+ break;
+ case TVSHOW_DUMMY:
+ DoTVShowDummiedOut();
+ break;
+ case TVSHOW_MASS_OUTBREAK:
+ DoTVShowPokemonNewsMassOutbreak();
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ DoTVShowBravoTrainerPokemonProfile();
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ DoTVShowBravoTrainerBattleTower();
+ break;
+ case TVSHOW_POKEMON_TODAY_CAUGHT:
+ DoTVShowPokemonTodaySuccessfulCapture();
+ break;
+ case TVSHOW_SMART_SHOPPER:
+ DoTVShowTodaysSmartShopper();
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ DoTVShowTheNameRaterShow();
+ break;
+ case TVSHOW_CONTEST_LIVE_UPDATES:
+ DoTVShowPokemonContestLiveUpdates();
+ break;
+ case TVSHOW_BATTLE_UPDATE:
+ DoTVShowPokemonBattleUpdate();
+ break;
+ case TVSHOW_3_CHEERS_FOR_POKEBLOCKS:
+ DoTVShow3CheersForPokeblocks();
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ DoTVShowPokemonTodayFailedCapture();
+ break;
+ case TVSHOW_FISHING_ADVICE:
+ DoTVShowPokemonAngler();
+ break;
+ case TVSHOW_WORLD_OF_MASTERS:
+ DoTVShowTheWorldOfMasters();
+ break;
+ case TVSHOW_TODAYS_RIVAL_TRAINER:
+ DoTVShowTodaysRivalTrainer();
+ break;
+ case TVSHOW_TREND_WATCHER:
+ DoTVShowDewfordTrendWatcherNetwork();
+ break;
+ case TVSHOW_TREASURE_INVESTIGATORS:
+ DoTVShowHoennTreasureInvestigators();
+ break;
+ case TVSHOW_FIND_THAT_GAMER:
+ DoTVShowFindThatGamer();
+ break;
+ case TVSHOW_BREAKING_NEWS:
+ DoTVShowBreakingNewsTV();
+ break;
+ case TVSHOW_SECRET_BASE_VISIT:
+ DoTVShowSecretBaseVisit();
+ break;
+ case TVSHOW_LOTTO_WINNER:
+ DoTVShowPokemonLotteryWinnerFlashReport();
+ break;
+ case TVSHOW_BATTLE_SEMINAR:
+ DoTVShowThePokemonBattleSeminar();
+ break;
+ case TVSHOW_FAN_CLUB_SPECIAL:
+ DoTVShowTrainerFanClubSpecial();
+ break;
+ case TVSHOW_TRAINER_FAN_CLUB:
+ DoTVShowTrainerFanClub();
+ break;
+ case TVSHOW_CUTIES:
+ DoTVShowSpotTheCuties();
+ break;
+ case TVSHOW_FRONTIER:
+ DoTVShowPokemonNewsBattleFrontier();
+ break;
+ case TVSHOW_NUMBER_ONE:
+ DoTVShowWhatsNo1InHoennToday();
+ break;
+ case TVSHOW_SECRET_BASE_SECRETS:
+ DoTVShowSecretBaseSecrets();
+ break;
+ case TVSHOW_SAFARI_FAN_CLUB:
+ DoTVShowSafariFanClub();
+ break;
+ case TVSHOW_LILYCOVE_CONTEST_LADY:
+ DoTVShowLilycoveContestLady();
+ break;
}
}
}
@@ -4509,64 +4292,64 @@ static void DoTVShowBravoTrainerPokemonProfile(void)
state = sTVShowState;
switch (state)
{
- case 0:
- TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
- CopyContestCategoryToStringVar(1, show->bravoTrainer.contestCategory);
- CopyContestRankToStringVar(2, show->bravoTrainer.contestRank);
- if (!StringCompare(gSpeciesNames[show->bravoTrainer.species], show->bravoTrainer.pokemonNickname))
- sTVShowState = 8;
- else
- sTVShowState = 1;
- break;
- case 1:
- StringCopy(gStringVar1, gSpeciesNames[show->bravoTrainer.species]);
- TVShowConvertInternationalString(gStringVar2, show->bravoTrainer.pokemonNickname, show->bravoTrainer.pokemonNameLanguage);
- CopyContestCategoryToStringVar(2, show->bravoTrainer.contestCategory);
- sTVShowState = 2;
- break;
- case 2:
- TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
- if (show->bravoTrainer.contestResult == 0) // placed first
- sTVShowState = 3;
- else
- sTVShowState = 4;
- break;
- case 3:
- TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
- CopyEasyChatWord(gStringVar2, show->bravoTrainer.words[0]);
- TV_PrintIntToStringVar(2, show->bravoTrainer.contestResult + 1);
- sTVShowState = 5;
- break;
- case 4:
- TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
- CopyEasyChatWord(gStringVar2, show->bravoTrainer.words[0]);
- TV_PrintIntToStringVar(2, show->bravoTrainer.contestResult + 1);
- sTVShowState = 5;
- break;
- case 5:
- TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
- CopyContestCategoryToStringVar(1, show->bravoTrainer.contestCategory);
- CopyEasyChatWord(gStringVar3, show->bravoTrainer.words[1]);
- if (show->bravoTrainer.move)
- sTVShowState = 6;
- else
- sTVShowState = 7;
- break;
- case 6:
- StringCopy(gStringVar1, gSpeciesNames[show->bravoTrainer.species]);
- StringCopy(gStringVar2, gMoveNames[show->bravoTrainer.move]);
- CopyEasyChatWord(gStringVar3, show->bravoTrainer.words[1]);
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
+ CopyContestCategoryToStringVar(1, show->bravoTrainer.contestCategory);
+ CopyContestRankToStringVar(2, show->bravoTrainer.contestRank);
+ if (!StringCompare(gSpeciesNames[show->bravoTrainer.species], show->bravoTrainer.pokemonNickname))
+ sTVShowState = 8;
+ else
+ sTVShowState = 1;
+ break;
+ case 1:
+ StringCopy(gStringVar1, gSpeciesNames[show->bravoTrainer.species]);
+ TVShowConvertInternationalString(gStringVar2, show->bravoTrainer.pokemonNickname, show->bravoTrainer.pokemonNameLanguage);
+ CopyContestCategoryToStringVar(2, show->bravoTrainer.contestCategory);
+ sTVShowState = 2;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
+ if (show->bravoTrainer.contestResult == 0) // placed first
+ sTVShowState = 3;
+ else
+ sTVShowState = 4;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
+ CopyEasyChatWord(gStringVar2, show->bravoTrainer.words[0]);
+ ConvertIntToDecimalString(2, show->bravoTrainer.contestResult + 1);
+ sTVShowState = 5;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
+ CopyEasyChatWord(gStringVar2, show->bravoTrainer.words[0]);
+ ConvertIntToDecimalString(2, show->bravoTrainer.contestResult + 1);
+ sTVShowState = 5;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
+ CopyContestCategoryToStringVar(1, show->bravoTrainer.contestCategory);
+ CopyEasyChatWord(gStringVar3, show->bravoTrainer.words[1]);
+ if (show->bravoTrainer.move)
+ sTVShowState = 6;
+ else
sTVShowState = 7;
- break;
- case 7:
- TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
- StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainer.species]);
- TVShowDone();
- break;
- case 8:
- StringCopy(gStringVar1, gSpeciesNames[show->bravoTrainer.species]);
- sTVShowState = 2;
- break;
+ break;
+ case 6:
+ StringCopy(gStringVar1, gSpeciesNames[show->bravoTrainer.species]);
+ StringCopy(gStringVar2, gMoveNames[show->bravoTrainer.move]);
+ CopyEasyChatWord(gStringVar3, show->bravoTrainer.words[1]);
+ sTVShowState = 7;
+ break;
+ case 7:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainer.species]);
+ TVShowDone();
+ break;
+ case 8:
+ StringCopy(gStringVar1, gSpeciesNames[show->bravoTrainer.species]);
+ sTVShowState = 2;
+ break;
}
ShowFieldMessage(sTVBravoTrainerTextGroup[state]);
}
@@ -4581,89 +4364,89 @@ static void DoTVShowBravoTrainerBattleTower(void)
state = sTVShowState;
switch(state)
{
- case 0:
- TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language);
- StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.species]);
- if (show->bravoTrainerTower.numFights >= 7)
- sTVShowState = 1;
- else
- sTVShowState = 2;
- break;
- case 1:
- if (show->bravoTrainerTower.btLevel == 50)
- {
- StringCopy(gStringVar1, gText_Lv50);
- }
- else
- {
- StringCopy(gStringVar1, gText_OpenLevel);
- }
- TV_PrintIntToStringVar(1, show->bravoTrainerTower.numFights);
- if (show->bravoTrainerTower.wonTheChallenge == TRUE)
- sTVShowState = 3;
- else
- sTVShowState = 4;
- break;
- case 2:
- TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
- TV_PrintIntToStringVar(1, show->bravoTrainerTower.numFights + 1);
- if (show->bravoTrainerTower.interviewResponse == 0)
- sTVShowState = 5;
- else
- sTVShowState = 6;
- break;
- case 3:
- TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
- StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.defeatedSpecies]);
- if (show->bravoTrainerTower.interviewResponse == 0)
- sTVShowState = 5;
- else
- sTVShowState = 6;
- break;
- case 4:
- TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
- StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.defeatedSpecies]);
- if (show->bravoTrainerTower.interviewResponse == 0)
- sTVShowState = 5;
- else
- sTVShowState = 6;
- break;
- case 5:
- TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
- sTVShowState = 11;
- break;
- case 6:
- TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
- sTVShowState = 11;
- break;
- case 7:
- sTVShowState = 11;
- break;
- case 8:
- case 9:
- case 10:
- TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language);
- sTVShowState = 11;
- break;
- case 11:
- CopyEasyChatWord(gStringVar1, show->bravoTrainerTower.words[0]);
- if (show->bravoTrainerTower.interviewResponse == 0)
- sTVShowState = 12;
- else
- sTVShowState = 13;
- break;
- case 12:
- case 13:
- CopyEasyChatWord(gStringVar1, show->bravoTrainerTower.words[0]);
- TVShowConvertInternationalString(gStringVar2, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language);
- TVShowConvertInternationalString(gStringVar3, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
- sTVShowState = 14;
- break;
- case 14:
- TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language);
- StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.species]);
- TVShowDone();
- break;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.species]);
+ if (show->bravoTrainerTower.numFights >= 7)
+ sTVShowState = 1;
+ else
+ sTVShowState = 2;
+ break;
+ case 1:
+ if (show->bravoTrainerTower.btLevel == 50)
+ {
+ StringCopy(gStringVar1, gText_Lv50);
+ }
+ else
+ {
+ StringCopy(gStringVar1, gText_OpenLevel);
+ }
+ ConvertIntToDecimalString(1, show->bravoTrainerTower.numFights);
+ if (show->bravoTrainerTower.wonTheChallenge == TRUE)
+ sTVShowState = 3;
+ else
+ sTVShowState = 4;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
+ ConvertIntToDecimalString(1, show->bravoTrainerTower.numFights + 1);
+ if (show->bravoTrainerTower.interviewResponse == 0)
+ sTVShowState = 5;
+ else
+ sTVShowState = 6;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
+ StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.defeatedSpecies]);
+ if (show->bravoTrainerTower.interviewResponse == 0)
+ sTVShowState = 5;
+ else
+ sTVShowState = 6;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
+ StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.defeatedSpecies]);
+ if (show->bravoTrainerTower.interviewResponse == 0)
+ sTVShowState = 5;
+ else
+ sTVShowState = 6;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
+ sTVShowState = 11;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
+ sTVShowState = 11;
+ break;
+ case 7:
+ sTVShowState = 11;
+ break;
+ case 8:
+ case 9:
+ case 10:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language);
+ sTVShowState = 11;
+ break;
+ case 11:
+ CopyEasyChatWord(gStringVar1, show->bravoTrainerTower.words[0]);
+ if (show->bravoTrainerTower.interviewResponse == 0)
+ sTVShowState = 12;
+ else
+ sTVShowState = 13;
+ break;
+ case 12:
+ case 13:
+ CopyEasyChatWord(gStringVar1, show->bravoTrainerTower.words[0]);
+ TVShowConvertInternationalString(gStringVar2, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language);
+ TVShowConvertInternationalString(gStringVar3, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
+ sTVShowState = 14;
+ break;
+ case 14:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.species]);
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVBravoTrainerBattleTowerTextGroup[state]);
}
@@ -4678,115 +4461,88 @@ static void DoTVShowTodaysSmartShopper(void)
state = sTVShowState;
switch(state)
{
- case 0:
- TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
- GetMapName(gStringVar2, show->smartshopperShow.shopLocation, 0);
- if (show->smartshopperShow.itemAmounts[0] >= 255)
- {
- sTVShowState = 11;
- }
- else
- {
- sTVShowState = 1;
- }
- break;
- case 1:
- TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
- StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[0]));
- TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[0]);
- sTVShowState += 1 + (Random() % 4);
- break;
- case 2:
- case 4:
- case 5:
- if (show->smartshopperShow.itemIds[1] != ITEM_NONE)
- {
- sTVShowState = 6;
- }
- else
- {
- sTVShowState = 10;
- }
- break;
- case 3:
- TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[0] + 1);
- if (show->smartshopperShow.itemIds[1] != ITEM_NONE)
- {
- sTVShowState = 6;
- }
- else
- {
- sTVShowState = 10;
- }
- break;
- case 6:
- StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[1]));
- TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[1]);
- if (show->smartshopperShow.itemIds[2] != ITEM_NONE)
- {
- sTVShowState = 7;
- }
- else if (show->smartshopperShow.priceReduced == TRUE)
- {
- sTVShowState = 8;
- }
- else
- {
- sTVShowState = 9;
- }
- break;
- case 7:
- StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[2]));
- TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[2]);
- if (show->smartshopperShow.priceReduced == TRUE)
- {
- sTVShowState = 8;
- }
- else
- {
- sTVShowState = 9;
- }
- break;
- case 8:
- if (show->smartshopperShow.itemAmounts[0] >= 255)
- {
- sTVShowState = 12;
- }
- else
- {
- sTVShowState = 9;
- }
- break;
- case 9:
- sub_80EF40C(1, show);
- TVShowDone();
- break;
- case 10:
- if (show->smartshopperShow.priceReduced == TRUE)
- {
- sTVShowState = 8;
- }
- else
- {
- sTVShowState = 9;
- }
- break;
- case 11:
- TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
- StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[0]));
- if (show->smartshopperShow.priceReduced == TRUE)
- {
- sTVShowState = 8;
- }
- else
- {
- sTVShowState = 12;
- }
- break;
- case 12:
- TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
- TVShowDone();
- break;
+ case SMARTSHOPPER_STATE_INTRO:
+ TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
+ GetMapName(gStringVar2, show->smartshopperShow.shopLocation, 0);
+ if (show->smartshopperShow.itemAmounts[0] >= 255)
+ sTVShowState = SMARTSHOPPER_STATE_CLERK_MAX;
+ else
+ sTVShowState = SMARTSHOPPER_STATE_CLERK_NORMAL;
+ break;
+ case SMARTSHOPPER_STATE_CLERK_NORMAL:
+ TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
+ StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[0]));
+ ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[0]);
+ // Pick a random comment (SMARTSHOPPER_STATE_RAND_COMMENT_#)
+ sTVShowState += SMARTSHOPPER_STATE_CLERK_NORMAL + (Random() % (SMARTSHOPPER_STATE_RAND_COMMENT_4 - SMARTSHOPPER_STATE_RAND_COMMENT_1 + 1));
+ break;
+ case SMARTSHOPPER_STATE_RAND_COMMENT_1:
+ case SMARTSHOPPER_STATE_RAND_COMMENT_3:
+ case SMARTSHOPPER_STATE_RAND_COMMENT_4:
+ if (show->smartshopperShow.itemIds[1] != ITEM_NONE)
+ sTVShowState = SMARTSHOPPER_STATE_SECOND_ITEM;
+ else
+ sTVShowState = SMARTSHOPPER_STATE_IS_VIP;
+ break;
+ case SMARTSHOPPER_STATE_RAND_COMMENT_2:
+ ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[0] + 1);
+ if (show->smartshopperShow.itemIds[1] != ITEM_NONE)
+ sTVShowState = SMARTSHOPPER_STATE_SECOND_ITEM;
+ else
+ sTVShowState = SMARTSHOPPER_STATE_IS_VIP;
+ break;
+ case SMARTSHOPPER_STATE_SECOND_ITEM:
+ // Clerk describes 2nd type of item player purchased
+ StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[1]));
+ ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[1]);
+ if (show->smartshopperShow.itemIds[2] != ITEM_NONE)
+ sTVShowState = SMARTSHOPPER_STATE_THIRD_ITEM;
+ else if (show->smartshopperShow.priceReduced == TRUE)
+ sTVShowState = SMARTSHOPPER_STATE_DURING_SALE;
+ else
+ sTVShowState = SMARTSHOPPER_STATE_OUTRO_NORMAL;
+ break;
+ case SMARTSHOPPER_STATE_THIRD_ITEM:
+ // Clerk describes 3rd type of item player purchased
+ StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[2]));
+ ConvertIntToDecimalString(2, show->smartshopperShow.itemAmounts[2]);
+ if (show->smartshopperShow.priceReduced == TRUE)
+ sTVShowState = SMARTSHOPPER_STATE_DURING_SALE;
+ else
+ sTVShowState = SMARTSHOPPER_STATE_OUTRO_NORMAL;
+ break;
+ case SMARTSHOPPER_STATE_DURING_SALE:
+ if (show->smartshopperShow.itemAmounts[0] >= 255)
+ sTVShowState = SMARTSHOPPER_STATE_OUTRO_MAX;
+ else
+ sTVShowState = SMARTSHOPPER_STATE_OUTRO_NORMAL;
+ break;
+ case SMARTSHOPPER_STATE_OUTRO_NORMAL:
+ SmartShopper_BufferPurchaseTotal(1, show);
+ TVShowDone();
+ break;
+ case SMARTSHOPPER_STATE_IS_VIP:
+ // Clerk says customer is a VIP
+ // Said if player only purchased one type of item
+ if (show->smartshopperShow.priceReduced == TRUE)
+ sTVShowState = SMARTSHOPPER_STATE_DURING_SALE;
+ else
+ sTVShowState = SMARTSHOPPER_STATE_OUTRO_NORMAL;
+ break;
+ case SMARTSHOPPER_STATE_CLERK_MAX:
+ // Clerk's comments if player purchased maximum number of 1st item
+ TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
+ StringCopy(gStringVar2, ItemId_GetName(show->smartshopperShow.itemIds[0]));
+ if (show->smartshopperShow.priceReduced == TRUE)
+ sTVShowState = SMARTSHOPPER_STATE_DURING_SALE;
+ else
+ sTVShowState = SMARTSHOPPER_STATE_OUTRO_MAX;
+ break;
+ case SMARTSHOPPER_STATE_OUTRO_MAX:
+ // Outro comments if player purchased maximum number of 1st item
+ TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVTodaysSmartShopperTextGroup[state]);
}
@@ -4801,90 +4557,78 @@ static void DoTVShowTheNameRaterShow(void)
state = sTVShowState;
switch (state)
{
- case 0:
- TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.trainerName, show->nameRaterShow.language);
- StringCopy(gStringVar2, gSpeciesNames[show->nameRaterShow.species]);
- TVShowConvertInternationalString(gStringVar3, show->nameRaterShow.pokemonName, show->nameRaterShow.pokemonNameLanguage);
- sTVShowState = TV_GetNicknameSumMod8(show) + 1;
- break;
- case 1:
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- if (show->nameRaterShow.random == 0)
- {
- sTVShowState = 9;
- }
- else if (show->nameRaterShow.random == 1)
- {
- sTVShowState = 10;
- }
- else if (show->nameRaterShow.random == 2)
- {
- sTVShowState = 11;
- }
- break;
- case 2:
- TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.trainerName, show->nameRaterShow.language);
- if (show->nameRaterShow.random == 0)
- {
- sTVShowState = 9;
- }
- else if (show->nameRaterShow.random == 1)
- {
- sTVShowState = 10;
- }
- else if (show->nameRaterShow.random == 2)
- {
- sTVShowState = 11;
- }
- break;
- case 9:
- case 10:
- case 11:
- TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.pokemonName, show->nameRaterShow.pokemonNameLanguage);
- TV_GetNicknameSubstring(1, 0, 0, 1, 0, show);
- TV_GetNicknameSubstring(2, 1, 0, 1, 0, show);
- sTVShowState = 12;
- break;
- case 13:
- TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.trainerName, show->nameRaterShow.language);
- TV_GetNicknameSubstring(1, 0, 2, 0, 0, show);
- TV_GetNicknameSubstring(2, 0, 3, 1, 0, show);
- sTVShowState = 14;
- break;
- case 14:
- TV_GetNicknameSubstring(1, 0, 2, 1, 0, show);
- TV_GetNicknameSubstring(2, 0, 3, 0, 0, show);
- sTVShowState = 18;
- break;
- case 15:
- TV_GetNicknameSubstring(0, 0, 2, 1, 0, show);
- StringCopy(gStringVar2, gSpeciesNames[show->nameRaterShow.species]);
- TV_GetNicknameSubstring(2, 0, 3, 2, show->nameRaterShow.species, show);
- sTVShowState = 16;
- break;
- case 16:
- TV_GetNicknameSubstring(0, 0, 2, 2, show->nameRaterShow.species, show);
- TV_GetNicknameSubstring(2, 0, 3, 1, 0, show);
- sTVShowState = 17;
- break;
- case 17:
- TV_GetNicknameSubstring(0, 0, 2, 1, 0, show);
- StringCopy(gStringVar2, gSpeciesNames[show->nameRaterShow.randomSpecies]);
- TV_GetNicknameSubstring(2, 0, 3, 2, show->nameRaterShow.randomSpecies, show);
- sTVShowState = 18;
- break;
- case 12:
- state = 18;
- sTVShowState = 18;
- case 18:
- TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.pokemonName, show->nameRaterShow.pokemonNameLanguage);
- TVShowDone();
- break;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.trainerName, show->nameRaterShow.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->nameRaterShow.species]);
+ TVShowConvertInternationalString(gStringVar3, show->nameRaterShow.pokemonName, show->nameRaterShow.pokemonNameLanguage);
+ sTVShowState = GetRandomNameRaterStateFromName(show) + 1;
+ break;
+ case 1:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ if (show->nameRaterShow.random == 0)
+ sTVShowState = 9;
+ else if (show->nameRaterShow.random == 1)
+ sTVShowState = 10;
+ else if (show->nameRaterShow.random == 2)
+ sTVShowState = 11;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.trainerName, show->nameRaterShow.language);
+ if (show->nameRaterShow.random == 0)
+ sTVShowState = 9;
+ else if (show->nameRaterShow.random == 1)
+ sTVShowState = 10;
+ else if (show->nameRaterShow.random == 2)
+ sTVShowState = 11;
+ break;
+ case 9:
+ case 10:
+ case 11:
+ TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.pokemonName, show->nameRaterShow.pokemonNameLanguage);
+ GetNicknameSubstring(1, 0, 0, 1, 0, show);
+ GetNicknameSubstring(2, 1, 0, 1, 0, show);
+ sTVShowState = 12;
+ break;
+ case 13:
+ TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.trainerName, show->nameRaterShow.language);
+ GetNicknameSubstring(1, 0, 2, 0, 0, show);
+ GetNicknameSubstring(2, 0, 3, 1, 0, show);
+ sTVShowState = 14;
+ break;
+ case 14:
+ GetNicknameSubstring(1, 0, 2, 1, 0, show);
+ GetNicknameSubstring(2, 0, 3, 0, 0, show);
+ sTVShowState = 18;
+ break;
+ case 15:
+ GetNicknameSubstring(0, 0, 2, 1, 0, show);
+ StringCopy(gStringVar2, gSpeciesNames[show->nameRaterShow.species]);
+ GetNicknameSubstring(2, 0, 3, 2, show->nameRaterShow.species, show);
+ sTVShowState = 16;
+ break;
+ case 16:
+ GetNicknameSubstring(0, 0, 2, 2, show->nameRaterShow.species, show);
+ GetNicknameSubstring(2, 0, 3, 1, 0, show);
+ sTVShowState = 17;
+ break;
+ case 17:
+ GetNicknameSubstring(0, 0, 2, 1, 0, show);
+ StringCopy(gStringVar2, gSpeciesNames[show->nameRaterShow.randomSpecies]);
+ GetNicknameSubstring(2, 0, 3, 2, show->nameRaterShow.randomSpecies, show);
+ sTVShowState = 18;
+ break;
+ case 12:
+ state = 18;
+ sTVShowState = 18;
+ case 18:
+ TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.pokemonName, show->nameRaterShow.pokemonNameLanguage);
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVNameRaterTextGroup[state]);
}
@@ -4899,70 +4643,62 @@ static void DoTVShowPokemonTodaySuccessfulCapture(void)
state = sTVShowState;
switch (state)
{
- case 0:
- TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language);
- StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]);
- TVShowConvertInternationalString(gStringVar3, show->pokemonToday.nickname, show->pokemonToday.language2);
- if (show->pokemonToday.ball == ITEM_MASTER_BALL)
- {
- sTVShowState = 5;
- }
- else
- {
- sTVShowState = 1;
- }
- break;
- case 1:
- sTVShowState = 2;
- break;
- case 2:
- StringCopy(gStringVar2, ItemId_GetName(show->pokemonToday.ball));
- TV_PrintIntToStringVar(2, show->pokemonToday.nBallsUsed);
- if (show->pokemonToday.nBallsUsed < 4)
- {
- sTVShowState = 3;
- }
- else
- {
- sTVShowState = 4;
- }
- break;
- case 3:
- TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language);
- StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]);
- TVShowConvertInternationalString(gStringVar3, show->pokemonToday.nickname, show->pokemonToday.language2);
- sTVShowState = 6;
- break;
- case 4:
- sTVShowState = 6;
- break;
- case 5:
- TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language);
- StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]);
- sTVShowState = 6;
- break;
- case 6:
- TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language);
- StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]);
- TVShowConvertInternationalString(gStringVar3, show->pokemonToday.nickname, show->pokemonToday.language2);
- sTVShowState += 1 + (Random() % 4);
- break;
- case 7:
- case 8:
- StringCopy(gStringVar1, gSpeciesNames[show->pokemonToday.species]);
- TVShowConvertInternationalString(gStringVar2, show->pokemonToday.nickname, show->pokemonToday.language2);
- TV_GetSomeOtherSpeciesAlreadySeenByPlayer_AndPrintName(2, show->pokemonToday.species);
- sTVShowState = 11;
- break;
- case 9:
- case 10:
- StringCopy(gStringVar1, gSpeciesNames[show->pokemonToday.species]);
- TVShowConvertInternationalString(gStringVar2, show->pokemonToday.nickname, show->pokemonToday.language2);
- sTVShowState = 11;
- break;
- case 11:
- TVShowDone();
- break;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar3, show->pokemonToday.nickname, show->pokemonToday.language2);
+ if (show->pokemonToday.ball == ITEM_MASTER_BALL)
+ sTVShowState = 5;
+ else
+ sTVShowState = 1;
+ break;
+ case 1:
+ sTVShowState = 2;
+ break;
+ case 2:
+ StringCopy(gStringVar2, ItemId_GetName(show->pokemonToday.ball));
+ ConvertIntToDecimalString(2, show->pokemonToday.nBallsUsed);
+ if (show->pokemonToday.nBallsUsed < 4)
+ sTVShowState = 3;
+ else
+ sTVShowState = 4;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar3, show->pokemonToday.nickname, show->pokemonToday.language2);
+ sTVShowState = 6;
+ break;
+ case 4:
+ sTVShowState = 6;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]);
+ sTVShowState = 6;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar3, show->pokemonToday.nickname, show->pokemonToday.language2);
+ sTVShowState += 1 + (Random() % 4);
+ break;
+ case 7:
+ case 8:
+ StringCopy(gStringVar1, gSpeciesNames[show->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar2, show->pokemonToday.nickname, show->pokemonToday.language2);
+ GetRandomDifferentSpeciesAndNameSeenByPlayer(2, show->pokemonToday.species);
+ sTVShowState = 11;
+ break;
+ case 9:
+ case 10:
+ StringCopy(gStringVar1, gSpeciesNames[show->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar2, show->pokemonToday.nickname, show->pokemonToday.language2);
+ sTVShowState = 11;
+ break;
+ case 11:
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVPokemonTodaySuccessfulTextGroup[state]);
}
@@ -4977,45 +4713,37 @@ static void DoTVShowPokemonTodayFailedCapture(void)
state = sTVShowState;
switch (state)
{
- case 0:
- TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language);
- StringCopy(gStringVar2, gSpeciesNames[show->pokemonTodayFailed.species]);
- sTVShowState = 1;
- break;
- case 1:
- TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language);
- GetMapName(gStringVar2, show->pokemonTodayFailed.location, 0);
- StringCopy(gStringVar3, gSpeciesNames[show->pokemonTodayFailed.species2]);
- if (show->pokemonTodayFailed.outcome == 1)
- {
- sTVShowState = 3;
- }
- else
- {
- sTVShowState = 2;
- }
- break;
- case 2:
- case 3:
- TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language);
- TV_PrintIntToStringVar(1, show->pokemonTodayFailed.nBallsUsed);
- if (Random() % 3 == 0)
- {
- sTVShowState = 5;
- }
- else
- {
- sTVShowState = 4;
- }
- break;
- case 4:
- case 5:
- TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language);
- sTVShowState = 6;
- break;
- case 6:
- TVShowDone();
- break;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonTodayFailed.species]);
+ sTVShowState = 1;
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language);
+ GetMapName(gStringVar2, show->pokemonTodayFailed.location, 0);
+ StringCopy(gStringVar3, gSpeciesNames[show->pokemonTodayFailed.species2]);
+ if (show->pokemonTodayFailed.outcome == 1)
+ sTVShowState = 3;
+ else
+ sTVShowState = 2;
+ break;
+ case 2:
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language);
+ ConvertIntToDecimalString(1, show->pokemonTodayFailed.nBallsUsed);
+ if (Random() % 3 == 0)
+ sTVShowState = 5;
+ else
+ sTVShowState = 4;
+ break;
+ case 4:
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language);
+ sTVShowState = 6;
+ break;
+ case 6:
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVPokemonTodayFailedTextGroup[state]);
}
@@ -5031,45 +4759,45 @@ static void DoTVShowPokemonFanClubLetter(void)
state = sTVShowState;
switch (state)
{
- case 0:
- TVShowConvertInternationalString(gStringVar1, show->fanclubLetter.playerName, show->fanclubLetter.language);
- StringCopy(gStringVar2, gSpeciesNames[show->fanclubLetter.species]);
- sTVShowState = 50;
- break;
- case 1:
- rval = (Random() % 4) + 1;
- if (rval == 1)
- sTVShowState = 2;
- else
- sTVShowState = rval + 2;
- break;
- case 2:
- sTVShowState = 51;
- break;
- case 3:
- sTVShowState += (Random() % 3) + 1;
- break;
- case 4:
- case 5:
- case 6:
- TV_FanClubLetter_RandomWordToStringVar3(show);
- sTVShowState = 7;
- break;
- case 7:
- rval = (Random() % 0x1f) + 0x46;
- TV_PrintIntToStringVar(2, rval);
- TVShowDone();
- break;
- case 50:
- ConvertEasyChatWordsToString(gStringVar4, show->fanclubLetter.words, 2, 2);
- ShowFieldMessage(gStringVar4);
- sTVShowState = 1;
- return;
- case 51:
- ConvertEasyChatWordsToString(gStringVar4, show->fanclubLetter.words, 2, 2);
- ShowFieldMessage(gStringVar4);
- sTVShowState = 3;
- return;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->fanclubLetter.playerName, show->fanclubLetter.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->fanclubLetter.species]);
+ sTVShowState = 50;
+ break;
+ case 1:
+ rval = (Random() % 4) + 1;
+ if (rval == 1)
+ sTVShowState = 2;
+ else
+ sTVShowState = rval + 2;
+ break;
+ case 2:
+ sTVShowState = 51;
+ break;
+ case 3:
+ sTVShowState += (Random() % 3) + 1;
+ break;
+ case 4:
+ case 5:
+ case 6:
+ GetRandomWordFromShow(show);
+ sTVShowState = 7;
+ break;
+ case 7:
+ rval = (Random() % 0x1f) + 0x46;
+ ConvertIntToDecimalString(2, rval);
+ TVShowDone();
+ break;
+ case 50:
+ ConvertEasyChatWordsToString(gStringVar4, show->fanclubLetter.words, 2, 2);
+ ShowFieldMessage(gStringVar4);
+ sTVShowState = 1;
+ return;
+ case 51:
+ ConvertEasyChatWordsToString(gStringVar4, show->fanclubLetter.words, 2, 2);
+ ShowFieldMessage(gStringVar4);
+ sTVShowState = 3;
+ return;
}
ShowFieldMessage(sTVFanClubTextGroup[state]);
}
@@ -5084,27 +4812,27 @@ static void DoTVShowRecentHappenings(void)
state = sTVShowState;
switch (state)
{
- case 0:
- TVShowConvertInternationalString(gStringVar1, show->recentHappenings.playerName, show->recentHappenings.language);
- TV_FanClubLetter_RandomWordToStringVar3(show);
- sTVShowState = 50;
- break;
- case 1:
- sTVShowState += 1 + (Random() % 3);
- break;
- case 2:
- case 3:
- case 4:
- sTVShowState = 5;
- break;
- case 5:
- TVShowDone();
- break;
- case 50:
- ConvertEasyChatWordsToString(gStringVar4, show->recentHappenings.words, 2, 2);
- ShowFieldMessage(gStringVar4);
- sTVShowState = 1;
- return;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->recentHappenings.playerName, show->recentHappenings.language);
+ GetRandomWordFromShow(show);
+ sTVShowState = 50;
+ break;
+ case 1:
+ sTVShowState += 1 + (Random() % 3);
+ break;
+ case 2:
+ case 3:
+ case 4:
+ sTVShowState = 5;
+ break;
+ case 5:
+ TVShowDone();
+ break;
+ case 50:
+ ConvertEasyChatWordsToString(gStringVar4, show->recentHappenings.words, 2, 2);
+ ShowFieldMessage(gStringVar4);
+ sTVShowState = 1;
+ return;
}
ShowFieldMessage(sTVRecentHappeninssTextGroup[state]);
}
@@ -5119,25 +4847,25 @@ static void DoTVShowPokemonFanClubOpinions(void)
state = sTVShowState;
switch (state)
{
- case 0:
- TVShowConvertInternationalString(gStringVar1, show->fanclubOpinions.playerName, show->fanclubOpinions.language);
- StringCopy(gStringVar2, gSpeciesNames[show->fanclubOpinions.species]);
- TVShowConvertInternationalString(gStringVar3, show->fanclubOpinions.nickname, show->fanclubOpinions.pokemonNameLanguage);
- sTVShowState = show->fanclubOpinions.questionAsked + 1;
- break;
- case 1:
- case 2:
- case 3:
- TVShowConvertInternationalString(gStringVar1, show->fanclubOpinions.playerName, show->fanclubOpinions.language);
- StringCopy(gStringVar2, gSpeciesNames[show->fanclubOpinions.species]);
- CopyEasyChatWord(gStringVar3, show->fanclubOpinions.words[0]);
- sTVShowState = 4;
- break;
- case 4:
- TVShowConvertInternationalString(gStringVar1, show->fanclubOpinions.playerName, show->fanclubOpinions.language);
- CopyEasyChatWord(gStringVar3, show->fanclubOpinions.words[1]);
- TVShowDone();
- break;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->fanclubOpinions.playerName, show->fanclubOpinions.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->fanclubOpinions.species]);
+ TVShowConvertInternationalString(gStringVar3, show->fanclubOpinions.nickname, show->fanclubOpinions.pokemonNameLanguage);
+ sTVShowState = show->fanclubOpinions.questionAsked + 1;
+ break;
+ case 1:
+ case 2:
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->fanclubOpinions.playerName, show->fanclubOpinions.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->fanclubOpinions.species]);
+ CopyEasyChatWord(gStringVar3, show->fanclubOpinions.words[0]);
+ sTVShowState = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->fanclubOpinions.playerName, show->fanclubOpinions.language);
+ CopyEasyChatWord(gStringVar3, show->fanclubOpinions.words[1]);
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVFanClubOpinionsTextGroup[state]);
}
@@ -5182,13 +4910,9 @@ static void DoTVShowPokemonContestLiveUpdates(void)
if (show->contestLiveUpdates.round1Placing == show->contestLiveUpdates.round2Placing)
{
if (show->contestLiveUpdates.round1Placing == 0)
- {
sTVShowState = CONTESTLIVE_STATE_WON_BOTH_ROUNDS;
- }
else
- {
sTVShowState = CONTESTLIVE_STATE_EQUAL_ROUNDS;
- }
}
else if (show->contestLiveUpdates.round1Placing > show->contestLiveUpdates.round2Placing)
{
@@ -5521,64 +5245,64 @@ static void DoTVShowPokemonBattleUpdate(void)
state = sTVShowState;
switch (state)
{
+ case 0:
+ switch (show->battleUpdate.battleType)
+ {
case 0:
- switch (show->battleUpdate.battleType)
- {
- case 0:
- case 1:
- sTVShowState = 1;
- break;
- case 2:
- sTVShowState = 5;
- break;
- }
- break;
case 1:
- TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
- TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
- if (show->battleUpdate.battleType == 0)
- {
- StringCopy(gStringVar3, gText_Single);
- }
- else
- {
- StringCopy(gStringVar3, gText_Double);
- }
- sTVShowState = 2;
+ sTVShowState = 1;
break;
case 2:
- TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
- StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.speciesPlayer]);
- StringCopy(gStringVar3, gMoveNames[show->battleUpdate.move]);
- sTVShowState = 3;
- break;
- case 3:
- TVShowConvertInternationalString(gStringVar1, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
- StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.speciesOpponent]);
- sTVShowState = 4;
- break;
- case 4:
- TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
- TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
- TVShowDone();
- break;
- case 5:
- TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
- TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
- sTVShowState = 6;
- break;
- case 6:
- TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
- StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.speciesPlayer]);
- StringCopy(gStringVar3, gMoveNames[show->battleUpdate.move]);
- sTVShowState = 7;
- break;
- case 7:
- TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
- TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
- StringCopy(gStringVar3, gSpeciesNames[show->battleUpdate.speciesOpponent]);
- TVShowDone();
+ sTVShowState = 5;
break;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
+ TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
+ if (show->battleUpdate.battleType == 0)
+ {
+ StringCopy(gStringVar3, gText_Single);
+ }
+ else
+ {
+ StringCopy(gStringVar3, gText_Double);
+ }
+ sTVShowState = 2;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.speciesPlayer]);
+ StringCopy(gStringVar3, gMoveNames[show->battleUpdate.move]);
+ sTVShowState = 3;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
+ StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.speciesOpponent]);
+ sTVShowState = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
+ TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
+ TVShowDone();
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
+ TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
+ sTVShowState = 6;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.speciesPlayer]);
+ StringCopy(gStringVar3, gMoveNames[show->battleUpdate.move]);
+ sTVShowState = 7;
+ break;
+ case 7:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
+ TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
+ StringCopy(gStringVar3, gSpeciesNames[show->battleUpdate.speciesOpponent]);
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVPokemonBattleUpdateTextGroup[state]);
}
@@ -5593,95 +5317,88 @@ static void DoTVShow3CheersForPokeblocks(void)
state = sTVShowState;
switch (state)
{
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->threeCheers.playerName, show->threeCheers.language);
+ if (show->threeCheers.sheen > 20)
+ sTVShowState = 1;
+ else
+ sTVShowState = 3;
+ break;
+ case 1:
+ switch (show->threeCheers.flavor)
+ {
case 0:
- TVShowConvertInternationalString(gStringVar1, show->threeCheers.playerName, show->threeCheers.language);
- if (show->threeCheers.sheen > 20)
- {
- sTVShowState = 1;
- }
- else
- {
- sTVShowState = 3;
- }
+ StringCopy(gStringVar1, gText_Spicy2);
break;
case 1:
- switch (show->threeCheers.flavor)
- {
- case 0:
- StringCopy(gStringVar1, gText_Spicy2);
- break;
- case 1:
- StringCopy(gStringVar1, gText_Dry2);
- break;
- case 2:
- StringCopy(gStringVar1, gText_Sweet2);
- break;
- case 3:
- StringCopy(gStringVar1, gText_Bitter2);
- break;
- case 4:
- StringCopy(gStringVar1, gText_Sour2);
- break;
- }
- if (show->threeCheers.sheen > 24)
- {
- StringCopy(gStringVar2, gText_Excellent);
- } else if (show->threeCheers.sheen > 22)
- {
- StringCopy(gStringVar2, gText_VeryGood);
- }
- else
- {
- StringCopy(gStringVar2, gText_Good);
- }
- TVShowConvertInternationalString(gStringVar3, show->threeCheers.playerName, show->threeCheers.language);
- sTVShowState = 2;
+ StringCopy(gStringVar1, gText_Dry2);
break;
case 2:
- TVShowConvertInternationalString(gStringVar1, show->threeCheers.worstBlenderName, show->threeCheers.worstBlenderLanguage);
- sTVShowState = 5;
+ StringCopy(gStringVar1, gText_Sweet2);
break;
case 3:
- switch (show->threeCheers.flavor)
- {
- case 0:
- StringCopy(gStringVar1, gText_Spicy2);
- break;
- case 1:
- StringCopy(gStringVar1, gText_Dry2);
- break;
- case 2:
- StringCopy(gStringVar1, gText_Sweet2);
- break;
- case 3:
- StringCopy(gStringVar1, gText_Bitter2);
- break;
- case 4:
- StringCopy(gStringVar1, gText_Sour2);
- break;
- }
- if (show->threeCheers.sheen > 16)
- {
- StringCopy(gStringVar2, gText_SoSo);
- } else if (show->threeCheers.sheen > 13)
- {
- StringCopy(gStringVar2, gText_Bad);
- }
- else
- {
- StringCopy(gStringVar2, gText_TheWorst);
- }
- TVShowConvertInternationalString(gStringVar3, show->threeCheers.playerName, show->threeCheers.language);
- sTVShowState = 4;
+ StringCopy(gStringVar1, gText_Bitter2);
break;
case 4:
- TVShowConvertInternationalString(gStringVar1, show->threeCheers.worstBlenderName, show->threeCheers.worstBlenderLanguage);
- TVShowConvertInternationalString(gStringVar2, show->threeCheers.playerName, show->threeCheers.language);
- sTVShowState = 5;
+ StringCopy(gStringVar1, gText_Sour2);
break;
- case 5:
- TVShowDone();
+ }
+ if (show->threeCheers.sheen > 24)
+ {
+ StringCopy(gStringVar2, gText_Excellent);
+ } else if (show->threeCheers.sheen > 22)
+ {
+ StringCopy(gStringVar2, gText_VeryGood);
+ }
+ else
+ {
+ StringCopy(gStringVar2, gText_Good);
+ }
+ TVShowConvertInternationalString(gStringVar3, show->threeCheers.playerName, show->threeCheers.language);
+ sTVShowState = 2;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->threeCheers.worstBlenderName, show->threeCheers.worstBlenderLanguage);
+ sTVShowState = 5;
+ break;
+ case 3:
+ switch (show->threeCheers.flavor)
+ {
+ case 0:
+ StringCopy(gStringVar1, gText_Spicy2);
+ break;
+ case 1:
+ StringCopy(gStringVar1, gText_Dry2);
+ break;
+ case 2:
+ StringCopy(gStringVar1, gText_Sweet2);
+ break;
+ case 3:
+ StringCopy(gStringVar1, gText_Bitter2);
+ break;
+ case 4:
+ StringCopy(gStringVar1, gText_Sour2);
break;
+ }
+
+ if (show->threeCheers.sheen > 16)
+ StringCopy(gStringVar2, gText_SoSo);
+ else if (show->threeCheers.sheen > 13)
+ StringCopy(gStringVar2, gText_Bad);
+ else
+ StringCopy(gStringVar2, gText_TheWorst);
+
+ TVShowConvertInternationalString(gStringVar3, show->threeCheers.playerName, show->threeCheers.language);
+ sTVShowState = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->threeCheers.worstBlenderName, show->threeCheers.worstBlenderLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->threeCheers.playerName, show->threeCheers.language);
+ sTVShowState = 5;
+ break;
+ case 5:
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTV3CheersForPokeblocksTextGroup[state]);
}
@@ -5694,62 +5411,48 @@ void DoTVShowInSearchOfTrainers(void)
state = sTVShowState;
switch (state)
{
- case 0:
- GetMapName(gStringVar1, gSaveBlock1Ptr->gabbyAndTyData.mapnum, 0);
- if (gSaveBlock1Ptr->gabbyAndTyData.battleNum > 1)
- {
- sTVShowState = 1;
- }
- else
- {
- sTVShowState = 2;
- }
- break;
- case 1:
+ case 0:
+ GetMapName(gStringVar1, gSaveBlock1Ptr->gabbyAndTyData.mapnum, 0);
+ if (gSaveBlock1Ptr->gabbyAndTyData.battleNum > 1)
+ sTVShowState = 1;
+ else
sTVShowState = 2;
- break;
- case 2:
- if (!gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn)
- {
- sTVShowState = 4;
- }
- else if (gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall)
- {
- sTVShowState = 5;
- }
- else if (gSaveBlock1Ptr->gabbyAndTyData.playerUsedHealingItem)
- {
- sTVShowState = 6;
- }
- else if (gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon)
- {
- sTVShowState = 7;
- }
- else
- {
- sTVShowState = 3;
- }
- break;
- case 3:
- StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon1]);
- StringCopy(gStringVar2, gMoveNames[gSaveBlock1Ptr->gabbyAndTyData.lastMove]);
- StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon2]);
- sTVShowState = 8;
- break;
- case 4:
- case 5:
- case 6:
- case 7:
- sTVShowState = 8;
- break;
- case 8:
- CopyEasyChatWord(gStringVar1, gSaveBlock1Ptr->gabbyAndTyData.quote[0]);
- StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon1]);
- StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon2]);
- gSpecialVar_Result = TRUE;
- sTVShowState = 0;
- TakeTVShowInSearchOfTrainersOffTheAir();
- break;
+ break;
+ case 1:
+ sTVShowState = 2;
+ break;
+ case 2:
+ if (!gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn)
+ sTVShowState = 4;
+ else if (gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall)
+ sTVShowState = 5;
+ else if (gSaveBlock1Ptr->gabbyAndTyData.playerUsedHealingItem)
+ sTVShowState = 6;
+ else if (gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon)
+ sTVShowState = 7;
+ else
+ sTVShowState = 3;
+ break;
+ case 3:
+ StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon1]);
+ StringCopy(gStringVar2, gMoveNames[gSaveBlock1Ptr->gabbyAndTyData.lastMove]);
+ StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon2]);
+ sTVShowState = 8;
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ sTVShowState = 8;
+ break;
+ case 8:
+ CopyEasyChatWord(gStringVar1, gSaveBlock1Ptr->gabbyAndTyData.quote[0]);
+ StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon1]);
+ StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon2]);
+ gSpecialVar_Result = TRUE;
+ sTVShowState = 0;
+ TakeGabbyAndTyOffTheAir();
+ break;
}
ShowFieldMessage(sTVInSearchOfTrainersTextGroup[state]);
}
@@ -5762,28 +5465,24 @@ static void DoTVShowPokemonAngler(void)
show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
gSpecialVar_Result = FALSE;
if (show->pokemonAngler.nBites < show->pokemonAngler.nFails)
- {
sTVShowState = 0;
- }
else
- {
sTVShowState = 1;
- }
state = sTVShowState;
switch (state)
{
- case 0:
- TVShowConvertInternationalString(gStringVar1, show->pokemonAngler.playerName, show->pokemonAngler.language);
- StringCopy(gStringVar2, gSpeciesNames[show->pokemonAngler.species]);
- TV_PrintIntToStringVar(2, show->pokemonAngler.nFails);
- TVShowDone();
- break;
- case 1:
- TVShowConvertInternationalString(gStringVar1, show->pokemonAngler.playerName, show->pokemonAngler.language);
- StringCopy(gStringVar2, gSpeciesNames[show->pokemonAngler.species]);
- TV_PrintIntToStringVar(2, show->pokemonAngler.nBites);
- TVShowDone();
- break;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonAngler.playerName, show->pokemonAngler.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonAngler.species]);
+ ConvertIntToDecimalString(2, show->pokemonAngler.nFails);
+ TVShowDone();
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonAngler.playerName, show->pokemonAngler.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonAngler.species]);
+ ConvertIntToDecimalString(2, show->pokemonAngler.nBites);
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVPokemonAnslerTextGroup[state]);
}
@@ -5798,22 +5497,22 @@ static void DoTVShowTheWorldOfMasters(void)
state = sTVShowState;
switch (state)
{
- case 0:
- TVShowConvertInternationalString(gStringVar1, show->worldOfMasters.playerName, show->worldOfMasters.language);
- TV_PrintIntToStringVar(1, show->worldOfMasters.steps);
- TV_PrintIntToStringVar(2, show->worldOfMasters.numPokeCaught);
- sTVShowState = 1;
- break;
- case 1:
- StringCopy(gStringVar1, gSpeciesNames[show->worldOfMasters.species]);
- sTVShowState = 2;
- break;
- case 2:
- TVShowConvertInternationalString(gStringVar1, show->worldOfMasters.playerName, show->worldOfMasters.language);
- GetMapName(gStringVar2, show->worldOfMasters.location, 0);
- StringCopy(gStringVar3, gSpeciesNames[show->worldOfMasters.caughtPoke]);
- TVShowDone();
- break;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->worldOfMasters.playerName, show->worldOfMasters.language);
+ ConvertIntToDecimalString(1, show->worldOfMasters.steps);
+ ConvertIntToDecimalString(2, show->worldOfMasters.numPokeCaught);
+ sTVShowState = 1;
+ break;
+ case 1:
+ StringCopy(gStringVar1, gSpeciesNames[show->worldOfMasters.species]);
+ sTVShowState = 2;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->worldOfMasters.playerName, show->worldOfMasters.language);
+ GetMapName(gStringVar2, show->worldOfMasters.location, 0);
+ StringCopy(gStringVar3, gSpeciesNames[show->worldOfMasters.caughtPoke]);
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVWorldOfMastersTextGroup[state]);
}
@@ -5828,143 +5527,111 @@ static void DoTVShowTodaysRivalTrainer(void)
state = sTVShowState;
switch (state)
{
- case 0:
- switch (show->rivalTrainer.location)
- {
- default:
- sTVShowState = 7;
- break;
- case MAPSEC_SECRET_BASE:
- sTVShowState = 8;
- break;
- case MAPSEC_DYNAMIC:
- switch (show->rivalTrainer.mapLayoutId)
- {
- case LAYOUT_SS_TIDAL_CORRIDOR:
- case LAYOUT_SS_TIDAL_LOWER_DECK:
- case LAYOUT_SS_TIDAL_ROOMS:
- sTVShowState = 10;
- break;
- default:
- sTVShowState = 9;
- break;
- }
- break;
- }
- break;
- case 7:
- TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
- TV_PrintIntToStringVar(1, show->rivalTrainer.dexCount);
- GetMapName(gStringVar3, show->rivalTrainer.location, 0);
- if (show->rivalTrainer.badgeCount != 0)
- {
- sTVShowState = 1;
- }
- else
- {
- sTVShowState = 2;
- }
- break;
- case 8:
- TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
- TV_PrintIntToStringVar(1, show->rivalTrainer.dexCount);
- if (show->rivalTrainer.badgeCount != 0)
- {
- sTVShowState = 1;
- }
- else
- {
- sTVShowState = 2;
- }
- break;
- case 9:
- TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
- TV_PrintIntToStringVar(1, show->rivalTrainer.dexCount);
- if (show->rivalTrainer.badgeCount != 0)
- {
- sTVShowState = 1;
- }
- else
- {
- sTVShowState = 2;
- }
- break;
- case 10:
- TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
- TV_PrintIntToStringVar(1, show->rivalTrainer.dexCount);
- if (show->rivalTrainer.badgeCount != 0)
- {
- sTVShowState = 1;
- }
- else
- {
- sTVShowState = 2;
- }
+ case 0:
+ switch (show->rivalTrainer.location)
+ {
+ default:
+ sTVShowState = 7;
break;
- case 1:
- TV_PrintIntToStringVar(0, show->rivalTrainer.badgeCount);
- if (FlagGet(FLAG_LANDMARK_BATTLE_FRONTIER))
- {
- if (show->rivalTrainer.nSilverSymbols || show->rivalTrainer.nGoldSymbols)
- {
- sTVShowState = 4;
- }
- else
- {
- sTVShowState = 3;
- }
- }
- else
- {
- sTVShowState = 6;
- }
+ case MAPSEC_SECRET_BASE:
+ sTVShowState = 8;
break;
- case 2:
- if (FlagGet(FLAG_LANDMARK_BATTLE_FRONTIER))
- {
- if (show->rivalTrainer.nSilverSymbols || show->rivalTrainer.nGoldSymbols)
- {
- sTVShowState = 4;
- }
- else
- {
- sTVShowState = 3;
- }
- }
- else
+ case MAPSEC_DYNAMIC:
+ switch (show->rivalTrainer.mapLayoutId)
{
- sTVShowState = 6;
+ case LAYOUT_SS_TIDAL_CORRIDOR:
+ case LAYOUT_SS_TIDAL_LOWER_DECK:
+ case LAYOUT_SS_TIDAL_ROOMS:
+ sTVShowState = 10;
+ break;
+ default:
+ sTVShowState = 9;
+ break;
}
break;
- case 3:
- if (show->rivalTrainer.battlePoints == 0)
- {
- sTVShowState = 6;
- }
+ }
+ break;
+ case 7:
+ TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
+ ConvertIntToDecimalString(1, show->rivalTrainer.dexCount);
+ GetMapName(gStringVar3, show->rivalTrainer.location, 0);
+ if (show->rivalTrainer.badgeCount != 0)
+ sTVShowState = 1;
+ else
+ sTVShowState = 2;
+ break;
+ case 8:
+ TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
+ ConvertIntToDecimalString(1, show->rivalTrainer.dexCount);
+ if (show->rivalTrainer.badgeCount != 0)
+ sTVShowState = 1;
+ else
+ sTVShowState = 2;
+ break;
+ case 9:
+ TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
+ ConvertIntToDecimalString(1, show->rivalTrainer.dexCount);
+ if (show->rivalTrainer.badgeCount != 0)
+ sTVShowState = 1;
+ else
+ sTVShowState = 2;
+ break;
+ case 10:
+ TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
+ ConvertIntToDecimalString(1, show->rivalTrainer.dexCount);
+ if (show->rivalTrainer.badgeCount != 0)
+ sTVShowState = 1;
+ else
+ sTVShowState = 2;
+ break;
+ case 1:
+ ConvertIntToDecimalString(0, show->rivalTrainer.badgeCount);
+ if (FlagGet(FLAG_LANDMARK_BATTLE_FRONTIER))
+ {
+ if (show->rivalTrainer.nSilverSymbols || show->rivalTrainer.nGoldSymbols)
+ sTVShowState = 4;
else
- {
- sTVShowState = 5;
- }
- break;
- case 4:
- TV_PrintIntToStringVar(0, show->rivalTrainer.nGoldSymbols);
- TV_PrintIntToStringVar(1, show->rivalTrainer.nSilverSymbols);
- if (show->rivalTrainer.battlePoints == 0)
- {
- sTVShowState = 6;
- }
+ sTVShowState = 3;
+ }
+ else
+ {
+ sTVShowState = 6;
+ }
+ break;
+ case 2:
+ if (FlagGet(FLAG_LANDMARK_BATTLE_FRONTIER))
+ {
+ if (show->rivalTrainer.nSilverSymbols || show->rivalTrainer.nGoldSymbols)
+ sTVShowState = 4;
else
- {
- sTVShowState = 5;
- }
- break;
- case 5:
- TV_PrintIntToStringVar(0, show->rivalTrainer.battlePoints);
+ sTVShowState = 3;
+ }
+ else
+ {
sTVShowState = 6;
- break;
- case 6:
- TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
- TVShowDone();
+ }
+ break;
+ case 3:
+ if (show->rivalTrainer.battlePoints == 0)
+ sTVShowState = 6;
+ else
+ sTVShowState = 5;
+ break;
+ case 4:
+ ConvertIntToDecimalString(0, show->rivalTrainer.nGoldSymbols);
+ ConvertIntToDecimalString(1, show->rivalTrainer.nSilverSymbols);
+ if (show->rivalTrainer.battlePoints == 0)
+ sTVShowState = 6;
+ else
+ sTVShowState = 5;
+ break;
+ case 5:
+ ConvertIntToDecimalString(0, show->rivalTrainer.battlePoints);
+ sTVShowState = 6;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
+ TVShowDone();
}
ShowFieldMessage(sTVTodaysRivalTrainerTextGroup[state]);
}
@@ -5979,48 +5646,40 @@ static void DoTVShowDewfordTrendWatcherNetwork(void)
state = sTVShowState;
switch (state)
{
- case 0:
- CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
- CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
- if (show->trendWatcher.gender == MALE)
- {
- sTVShowState = 1;
- }
- else
- {
- sTVShowState = 2;
- }
- break;
- case 1:
- case 2:
- CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
- CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
- TVShowConvertInternationalString(gStringVar3, show->trendWatcher.playerName, show->trendWatcher.language);
- sTVShowState = 3;
- break;
- case 3:
- CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
- CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
- if (show->trendWatcher.gender == MALE)
- {
- sTVShowState = 4;
- }
- else
- {
- sTVShowState = 5;
- }
- break;
- case 4:
- case 5:
- CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
- CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
- TVShowConvertInternationalString(gStringVar3, show->trendWatcher.playerName, show->trendWatcher.language);
- sTVShowState = 6;
- break;
- case 6:
- CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
- CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
- TVShowDone();
+ case TRENDWATCHER_STATE_INTRO:
+ CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
+ CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
+ if (show->trendWatcher.gender == MALE)
+ sTVShowState = TRENDWATCHER_STATE_TAUGHT_MALE;
+ else
+ sTVShowState = TRENDWATCHER_STATE_TAUGHT_FEMALE;
+ break;
+ case TRENDWATCHER_STATE_TAUGHT_MALE:
+ case TRENDWATCHER_STATE_TAUGHT_FEMALE:
+ CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
+ CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
+ TVShowConvertInternationalString(gStringVar3, show->trendWatcher.playerName, show->trendWatcher.language);
+ sTVShowState = TRENDWATCHER_STATE_PHRASE_HOPELESS;
+ break;
+ case TRENDWATCHER_STATE_PHRASE_HOPELESS:
+ CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
+ CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
+ if (show->trendWatcher.gender == MALE)
+ sTVShowState = TRENDWATCHER_STATE_BIGGER_MALE;
+ else
+ sTVShowState = TRENDWATCHER_STATE_BIGGER_FEMALE;
+ break;
+ case TRENDWATCHER_STATE_BIGGER_MALE:
+ case TRENDWATCHER_STATE_BIGGER_FEMALE:
+ CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
+ CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
+ TVShowConvertInternationalString(gStringVar3, show->trendWatcher.playerName, show->trendWatcher.language);
+ sTVShowState = TRENDWATCHER_STATE_OUTRO;
+ break;
+ case TRENDWATCHER_STATE_OUTRO:
+ CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
+ CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
+ TVShowDone();
}
ShowFieldMessage(sTVDewfordTrendWatcherNetworkTextGroup[state]);
}
@@ -6035,38 +5694,38 @@ static void DoTVShowHoennTreasureInvestigators(void)
state = sTVShowState;
switch (state)
{
- case 0:
- StringCopy(gStringVar1, ItemId_GetName(show->treasureInvestigators.item));
- if (show->treasureInvestigators.location == MAPSEC_DYNAMIC)
- {
- switch (show->treasureInvestigators.mapLayoutId)
- {
- case LAYOUT_SS_TIDAL_CORRIDOR:
- case LAYOUT_SS_TIDAL_LOWER_DECK:
- case LAYOUT_SS_TIDAL_ROOMS:
- sTVShowState = 2;
- break;
- default:
- sTVShowState = 1;
- break;
- }
- }
- else
+ case 0:
+ StringCopy(gStringVar1, ItemId_GetName(show->treasureInvestigators.item));
+ if (show->treasureInvestigators.location == MAPSEC_DYNAMIC)
+ {
+ switch (show->treasureInvestigators.mapLayoutId)
{
+ case LAYOUT_SS_TIDAL_CORRIDOR:
+ case LAYOUT_SS_TIDAL_LOWER_DECK:
+ case LAYOUT_SS_TIDAL_ROOMS:
+ sTVShowState = 2;
+ break;
+ default:
sTVShowState = 1;
+ break;
}
- break;
- case 1:
- StringCopy(gStringVar1, ItemId_GetName(show->treasureInvestigators.item));
- TVShowConvertInternationalString(gStringVar2, show->treasureInvestigators.playerName, show->treasureInvestigators.language);
- GetMapName(gStringVar3, show->treasureInvestigators.location, 0);
- TVShowDone();
- break;
- case 2:
- StringCopy(gStringVar1, ItemId_GetName(show->treasureInvestigators.item));
- TVShowConvertInternationalString(gStringVar2, show->treasureInvestigators.playerName, show->treasureInvestigators.language);
- TVShowDone();
- break;
+ }
+ else
+ {
+ sTVShowState = 1;
+ }
+ break;
+ case 1:
+ StringCopy(gStringVar1, ItemId_GetName(show->treasureInvestigators.item));
+ TVShowConvertInternationalString(gStringVar2, show->treasureInvestigators.playerName, show->treasureInvestigators.language);
+ GetMapName(gStringVar3, show->treasureInvestigators.location, 0);
+ TVShowDone();
+ break;
+ case 2:
+ StringCopy(gStringVar1, ItemId_GetName(show->treasureInvestigators.item));
+ TVShowConvertInternationalString(gStringVar2, show->treasureInvestigators.playerName, show->treasureInvestigators.language);
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVHoennTreasureInvestisatorsTextGroup[state]);
}
@@ -6081,66 +5740,62 @@ static void DoTVShowFindThatGamer(void)
state = sTVShowState;
switch (state)
{
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language);
+ switch (show->findThatGamer.whichGame)
+ {
case 0:
- TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language);
- switch (show->findThatGamer.whichGame)
- {
- case 0:
- StringCopy(gStringVar2, gText_Slots);
- break;
- case 1:
- StringCopy(gStringVar2, gText_Roulette);
- break;
- }
- if (show->findThatGamer.won == TRUE)
- {
- sTVShowState = 1;
- }
- else
- {
- sTVShowState = 2;
- }
+ StringCopy(gStringVar2, gText_Slots);
break;
case 1:
- TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language);
- switch (show->findThatGamer.whichGame)
- {
- case 0:
- StringCopy(gStringVar2, gText_Slots);
- break;
- case 1:
- StringCopy(gStringVar2, gText_Roulette);
- break;
- }
- TV_PrintIntToStringVar(2, show->findThatGamer.nCoins);
- TVShowDone(); break;
- case 2:
- TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language);
- switch (show->findThatGamer.whichGame)
- {
- case 0:
- StringCopy(gStringVar2, gText_Slots);
- break;
- case 1:
- StringCopy(gStringVar2, gText_Roulette);
- break;
- }
- TV_PrintIntToStringVar(2, show->findThatGamer.nCoins);
- sTVShowState = 3;
+ StringCopy(gStringVar2, gText_Roulette);
break;
- case 3:
- TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language);
- switch (show->findThatGamer.whichGame)
- {
- case 0:
- StringCopy(gStringVar2, gText_Roulette);
- break;
- case 1:
- StringCopy(gStringVar2, gText_Slots);
- break;
- }
- TVShowDone();
+ }
+ if (show->findThatGamer.won == TRUE)
+ sTVShowState = 1;
+ else
+ sTVShowState = 2;
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language);
+ switch (show->findThatGamer.whichGame)
+ {
+ case 0:
+ StringCopy(gStringVar2, gText_Slots);
+ break;
+ case 1:
+ StringCopy(gStringVar2, gText_Roulette);
+ break;
+ }
+ ConvertIntToDecimalString(2, show->findThatGamer.nCoins);
+ TVShowDone(); break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language);
+ switch (show->findThatGamer.whichGame)
+ {
+ case 0:
+ StringCopy(gStringVar2, gText_Slots);
break;
+ case 1:
+ StringCopy(gStringVar2, gText_Roulette);
+ break;
+ }
+ ConvertIntToDecimalString(2, show->findThatGamer.nCoins);
+ sTVShowState = 3;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language);
+ switch (show->findThatGamer.whichGame)
+ {
+ case 0:
+ StringCopy(gStringVar2, gText_Roulette);
+ break;
+ case 1:
+ StringCopy(gStringVar2, gText_Slots);
+ break;
+ }
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVFindThatGamerTextGroup[state]);
}
@@ -6155,95 +5810,87 @@ static void DoTVShowBreakingNewsTV(void)
state = sTVShowState;
switch (state)
{
- case 0:
- if (show->breakingNews.outcome == 0)
- {
- sTVShowState = 1;
- }
- else
- {
- sTVShowState = 5;
- }
- break;
+ case 0:
+ if (show->breakingNews.outcome == 0)
+ sTVShowState = 1;
+ else
+ sTVShowState = 5;
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
+ GetMapName(gStringVar3, show->breakingNews.location, 0);
+ sTVShowState = 2;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
+ StringCopy(gStringVar3, gSpeciesNames[show->breakingNews.poke1Species]);
+ sTVShowState = 3;
+ break;
+ case 3:
+ ConvertIntToDecimalString(0, show->breakingNews.balls);
+ StringCopy(gStringVar2, ItemId_GetName(show->breakingNews.caughtMonBall));
+ sTVShowState = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ GetMapName(gStringVar2, show->breakingNews.location, 0);
+ TVShowDone();
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
+ GetMapName(gStringVar3, show->breakingNews.location, 0);
+ sTVShowState = 6;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
+ StringCopy(gStringVar3, gSpeciesNames[show->breakingNews.poke1Species]);
+ switch (show->breakingNews.outcome)
+ {
case 1:
- TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
- StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
- GetMapName(gStringVar3, show->breakingNews.location, 0);
- sTVShowState = 2;
+ if (show->breakingNews.lastUsedMove == MOVE_NONE)
+ sTVShowState = 12;
+ else
+ sTVShowState = 7;
break;
case 2:
- TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
- StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
- StringCopy(gStringVar3, gSpeciesNames[show->breakingNews.poke1Species]);
- sTVShowState = 3;
+ sTVShowState = 9;
break;
case 3:
- TV_PrintIntToStringVar(0, show->breakingNews.balls);
- StringCopy(gStringVar2, ItemId_GetName(show->breakingNews.caughtMonBall));
- sTVShowState = 4;
- break;
- case 4:
- TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
- GetMapName(gStringVar2, show->breakingNews.location, 0);
- TVShowDone();
- break;
- case 5:
- TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
- StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
- GetMapName(gStringVar3, show->breakingNews.location, 0);
- sTVShowState = 6;
- break;
- case 6:
- TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
- StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
- StringCopy(gStringVar3, gSpeciesNames[show->breakingNews.poke1Species]);
- switch (show->breakingNews.outcome)
- {
- case 1:
- if (show->breakingNews.lastUsedMove == MOVE_NONE)
- {
- sTVShowState = 12;
- }
- else
- {
- sTVShowState = 7;
- }
- break;
- case 2:
- sTVShowState = 9;
- break;
- case 3:
- sTVShowState = 10;
- break;
- }
- break;
- case 7:
- StringCopy(gStringVar1, gMoveNames[show->breakingNews.lastUsedMove]);
- StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.poke1Species]);
- sTVShowState = 8;
- break;
- case 12:
- TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
- StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
- StringCopy(gStringVar3, gSpeciesNames[show->breakingNews.poke1Species]);
- sTVShowState = 8;
- break;
- case 8:
- TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
- GetMapName(gStringVar2, show->breakingNews.location, 0);
- sTVShowState = 11;
- break;
- case 9:
- case 10:
- TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
- StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
- GetMapName(gStringVar3, show->breakingNews.location, 0);
- sTVShowState = 11;
- break;
- case 11:
- TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
- TVShowDone();
+ sTVShowState = 10;
break;
+ }
+ break;
+ case 7:
+ StringCopy(gStringVar1, gMoveNames[show->breakingNews.lastUsedMove]);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.poke1Species]);
+ sTVShowState = 8;
+ break;
+ case 12:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
+ StringCopy(gStringVar3, gSpeciesNames[show->breakingNews.poke1Species]);
+ sTVShowState = 8;
+ break;
+ case 8:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ GetMapName(gStringVar2, show->breakingNews.location, 0);
+ sTVShowState = 11;
+ break;
+ case 9:
+ case 10:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
+ GetMapName(gStringVar3, show->breakingNews.location, 0);
+ sTVShowState = 11;
+ break;
+ case 11:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVBreakingNewsTextGroup[state]);
}
@@ -6258,88 +5905,72 @@ static void DoTVShowSecretBaseVisit(void)
state = sTVShowState;
switch (state)
{
- case 0:
- TVShowConvertInternationalString(gStringVar1, show->secretBaseVisit.playerName, show->secretBaseVisit.language);
- if (show->secretBaseVisit.nDecorations == 0)
- {
- sTVShowState = 2;
- }
- else
- {
- sTVShowState = 1;
- }
- break;
- case 1:
- StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[0]].name);
- if (show->secretBaseVisit.nDecorations == 1)
- {
- sTVShowState = 4;
- }
- else
- {
- sTVShowState = 3;
- }
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseVisit.playerName, show->secretBaseVisit.language);
+ if (show->secretBaseVisit.nDecorations == 0)
+ sTVShowState = 2;
+ else
+ sTVShowState = 1;
+ break;
+ case 1:
+ StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[0]].name);
+ if (show->secretBaseVisit.nDecorations == 1)
+ sTVShowState = 4;
+ else
+ sTVShowState = 3;
+ break;
+ case 3:
+ StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[1]].name);
+ switch (show->secretBaseVisit.nDecorations)
+ {
+ case 2:
+ sTVShowState = 7;
break;
case 3:
- StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[1]].name);
- switch (show->secretBaseVisit.nDecorations)
- {
- case 2:
- sTVShowState = 7;
- break;
- case 3:
- sTVShowState = 6;
- break;
- case 4:
- sTVShowState = 5;
- break;
- }
- break;
- case 5:
- StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[2]].name);
- StringCopy(gStringVar3, gDecorations[show->secretBaseVisit.decorations[3]].name);
- sTVShowState = 8;
- break;
- case 6:
- StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[2]].name);
- sTVShowState = 8;
+ sTVShowState = 6;
break;
- case 2:
case 4:
- case 7:
- sTVShowState = 8;
- break;
- case 8:
- TVShowConvertInternationalString(gStringVar1, show->secretBaseVisit.playerName, show->secretBaseVisit.language);
- if (show->secretBaseVisit.avgLevel < 25)
- {
- sTVShowState = 12;
- }
- else if (show->secretBaseVisit.avgLevel < 50)
- {
- sTVShowState = 11;
- }
- else if (show->secretBaseVisit.avgLevel < 70)
- {
- sTVShowState = 10;
- }
- else
- {
- sTVShowState = 9;
- }
- break;
- case 9:
- case 10:
- case 11:
- case 12:
- TVShowConvertInternationalString(gStringVar1, show->secretBaseVisit.playerName, show->secretBaseVisit.language);
- StringCopy(gStringVar2, gSpeciesNames[show->secretBaseVisit.species]);
- StringCopy(gStringVar3, gMoveNames[show->secretBaseVisit.move]);
- sTVShowState = 13;
- break;
- case 13:
- TVShowDone();
+ sTVShowState = 5;
break;
+ }
+ break;
+ case 5:
+ StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[2]].name);
+ StringCopy(gStringVar3, gDecorations[show->secretBaseVisit.decorations[3]].name);
+ sTVShowState = 8;
+ break;
+ case 6:
+ StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[2]].name);
+ sTVShowState = 8;
+ break;
+ case 2:
+ case 4:
+ case 7:
+ sTVShowState = 8;
+ break;
+ case 8:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseVisit.playerName, show->secretBaseVisit.language);
+ if (show->secretBaseVisit.avgLevel < 25)
+ sTVShowState = 12;
+ else if (show->secretBaseVisit.avgLevel < 50)
+ sTVShowState = 11;
+ else if (show->secretBaseVisit.avgLevel < 70)
+ sTVShowState = 10;
+ else
+ sTVShowState = 9;
+ break;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseVisit.playerName, show->secretBaseVisit.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->secretBaseVisit.species]);
+ StringCopy(gStringVar3, gMoveNames[show->secretBaseVisit.move]);
+ sTVShowState = 13;
+ break;
+ case 13:
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVSecretBaseVisitTextGroup[state]);
}
@@ -6384,56 +6015,56 @@ static void DoTVShowThePokemonBattleSeminar(void)
state = sTVShowState;
switch (state)
{
- case 0:
- TVShowConvertInternationalString(gStringVar1, show->battleSeminar.playerName, show->battleSeminar.language);
- StringCopy(gStringVar2, gSpeciesNames[show->battleSeminar.species]);
- StringCopy(gStringVar3, gSpeciesNames[show->battleSeminar.foeSpecies]);
- sTVShowState = 1;
- break;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->battleSeminar.playerName, show->battleSeminar.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->battleSeminar.species]);
+ StringCopy(gStringVar3, gSpeciesNames[show->battleSeminar.foeSpecies]);
+ sTVShowState = 1;
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->battleSeminar.playerName, show->battleSeminar.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->battleSeminar.foeSpecies]);
+ StringCopy(gStringVar3, gMoveNames[show->battleSeminar.move]);
+ sTVShowState = 2;
+ break;
+ case 2:
+ StringCopy(gStringVar1, gSpeciesNames[show->battleSeminar.species]);
+ switch (show->battleSeminar.nOtherMoves)
+ {
case 1:
- TVShowConvertInternationalString(gStringVar1, show->battleSeminar.playerName, show->battleSeminar.language);
- StringCopy(gStringVar2, gSpeciesNames[show->battleSeminar.foeSpecies]);
- StringCopy(gStringVar3, gMoveNames[show->battleSeminar.move]);
- sTVShowState = 2;
+ sTVShowState = 5;
break;
case 2:
- StringCopy(gStringVar1, gSpeciesNames[show->battleSeminar.species]);
- switch (show->battleSeminar.nOtherMoves)
- {
- case 1:
- sTVShowState = 5;
- break;
- case 2:
- sTVShowState = 4;
- break;
- case 3:
- sTVShowState = 3;
- break;
- default:
- sTVShowState = 6;
- break;
- }
+ sTVShowState = 4;
break;
case 3:
- StringCopy(gStringVar1, gMoveNames[show->battleSeminar.otherMoves[0]]);
- StringCopy(gStringVar2, gMoveNames[show->battleSeminar.otherMoves[1]]);
- StringCopy(gStringVar3, gMoveNames[show->battleSeminar.otherMoves[2]]);
- sTVShowState = 6;
- break;
- case 4:
- StringCopy(gStringVar1, gMoveNames[show->battleSeminar.otherMoves[0]]);
- StringCopy(gStringVar2, gMoveNames[show->battleSeminar.otherMoves[1]]);
- sTVShowState = 6;
+ sTVShowState = 3;
break;
- case 5:
- StringCopy(gStringVar2, gMoveNames[show->battleSeminar.otherMoves[0]]);
+ default:
sTVShowState = 6;
break;
- case 6:
- StringCopy(gStringVar1, gMoveNames[show->battleSeminar.betterMove]);
- StringCopy(gStringVar2, gMoveNames[show->battleSeminar.move]);
- TVShowDone();
- break;
+ }
+ break;
+ case 3:
+ StringCopy(gStringVar1, gMoveNames[show->battleSeminar.otherMoves[0]]);
+ StringCopy(gStringVar2, gMoveNames[show->battleSeminar.otherMoves[1]]);
+ StringCopy(gStringVar3, gMoveNames[show->battleSeminar.otherMoves[2]]);
+ sTVShowState = 6;
+ break;
+ case 4:
+ StringCopy(gStringVar1, gMoveNames[show->battleSeminar.otherMoves[0]]);
+ StringCopy(gStringVar2, gMoveNames[show->battleSeminar.otherMoves[1]]);
+ sTVShowState = 6;
+ break;
+ case 5:
+ StringCopy(gStringVar2, gMoveNames[show->battleSeminar.otherMoves[0]]);
+ sTVShowState = 6;
+ break;
+ case 6:
+ StringCopy(gStringVar1, gMoveNames[show->battleSeminar.betterMove]);
+ StringCopy(gStringVar2, gMoveNames[show->battleSeminar.move]);
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVThePokemonBattleSeminarTextGroup[state]);
}
@@ -6448,57 +6079,49 @@ static void DoTVShowTrainerFanClubSpecial(void)
state = sTVShowState;
switch (state)
{
- case 0:
- TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
- TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
- CopyEasyChatWord(gStringVar3, show->fanClubSpecial.words[0]);
- if (show->fanClubSpecial.score >= 90)
- {
- sTVShowState = 1;
- }
- else if (show->fanClubSpecial.score >= 70)
- {
- sTVShowState = 2;
- }
- else if (show->fanClubSpecial.score >= 30)
- {
- sTVShowState = 3;
- }
- else
- {
- sTVShowState = 4;
- }
- break;
- case 1:
- TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
- TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
- TV_PrintIntToStringVar(2, show->fanClubSpecial.score);
- sTVShowState = 5;
- break;
- case 2:
- TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
- TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
- TV_PrintIntToStringVar(2, show->fanClubSpecial.score);
- sTVShowState = 5;
- break;
- case 3:
- TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
- TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
- TV_PrintIntToStringVar(2, show->fanClubSpecial.score);
- sTVShowState = 5;
- break;
- case 4:
- TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
- TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
- TV_PrintIntToStringVar(2, show->fanClubSpecial.score);
- sTVShowState = 5;
- break;
- case 5:
- TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
- TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
- CopyEasyChatWord(gStringVar3, show->fanClubSpecial.words[0]);
- TVShowDone();
- break;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
+ CopyEasyChatWord(gStringVar3, show->fanClubSpecial.words[0]);
+ if (show->fanClubSpecial.score >= 90)
+ sTVShowState = 1;
+ else if (show->fanClubSpecial.score >= 70)
+ sTVShowState = 2;
+ else if (show->fanClubSpecial.score >= 30)
+ sTVShowState = 3;
+ else
+ sTVShowState = 4;
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
+ ConvertIntToDecimalString(2, show->fanClubSpecial.score);
+ sTVShowState = 5;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
+ ConvertIntToDecimalString(2, show->fanClubSpecial.score);
+ sTVShowState = 5;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
+ ConvertIntToDecimalString(2, show->fanClubSpecial.score);
+ sTVShowState = 5;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
+ ConvertIntToDecimalString(2, show->fanClubSpecial.score);
+ sTVShowState = 5;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
+ CopyEasyChatWord(gStringVar3, show->fanClubSpecial.words[0]);
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVTrainerFanClubSpecialTextGroup[state]);
}
@@ -6514,78 +6137,79 @@ static void DoTVShowTrainerFanClub(void)
state = sTVShowState;
switch (state)
{
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->trainerFanClub.playerName, show->trainerFanClub.language);
+ playerId = ((show->common.trainerIdHi << 8) + show->common.trainerIdLo);
+ switch (playerId % 10)
+ {
case 0:
- TVShowConvertInternationalString(gStringVar1, show->trainerFanClub.playerName, show->trainerFanClub.language);
- playerId = ((show->common.trainerIdHi << 8) + show->common.trainerIdLo);
- switch (playerId % 10)
- {
- case 0:
- sTVShowState = 1;
- break;
- case 1:
- sTVShowState = 2;
- break;
- case 2:
- sTVShowState = 3;
- break;
- case 3:
- sTVShowState = 4;
- break;
- case 4:
- sTVShowState = 5;
- break;
- case 5:
- sTVShowState = 6;
- break;
- case 6:
- sTVShowState = 7;
- break;
- case 7:
- sTVShowState = 8;
- break;
- case 8:
- sTVShowState = 9;
- break;
- case 9:
- sTVShowState = 10;
- break;
- }
+ sTVShowState = 1;
break;
case 1:
- sTVShowState = 11;
+ sTVShowState = 2;
break;
case 2:
- sTVShowState = 11;
+ sTVShowState = 3;
break;
case 3:
- sTVShowState = 11;
+ sTVShowState = 4;
break;
case 4:
- sTVShowState = 11;
+ sTVShowState = 5;
break;
case 5:
- sTVShowState = 11;
+ sTVShowState = 6;
break;
case 6:
- sTVShowState = 11;
+ sTVShowState = 7;
break;
case 7:
- sTVShowState = 11;
+ sTVShowState = 8;
break;
case 8:
- sTVShowState = 11;
+ sTVShowState = 9;
break;
case 9:
- sTVShowState = 11;
- break;
- case 10:
- sTVShowState = 11;
+ sTVShowState = 10;
break;
- case 11:
- TVShowConvertInternationalString(gStringVar1, show->trainerFanClub.playerName, show->trainerFanClub.language);
- CopyEasyChatWord(gStringVar2, show->trainerFanClub.words[0]);
- CopyEasyChatWord(gStringVar3, show->trainerFanClub.words[1]);
- TVShowDone();
+ }
+ break;
+ case 1:
+ sTVShowState = 11;
+ break;
+ case 2:
+ sTVShowState = 11;
+ break;
+ case 3:
+ sTVShowState = 11;
+ break;
+ case 4:
+ sTVShowState = 11;
+ break;
+ case 5:
+ sTVShowState = 11;
+ break;
+ case 6:
+ sTVShowState = 11;
+ break;
+ case 7:
+ sTVShowState = 11;
+ break;
+ case 8:
+ sTVShowState = 11;
+ break;
+ case 9:
+ sTVShowState = 11;
+ break;
+ case 10:
+ sTVShowState = 11;
+ break;
+ case 11:
+ TVShowConvertInternationalString(gStringVar1, show->trainerFanClub.playerName, show->trainerFanClub.language);
+ CopyEasyChatWord(gStringVar2, show->trainerFanClub.words[0]);
+ CopyEasyChatWord(gStringVar3, show->trainerFanClub.words[1]);
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVTrainerFanClubTextGroup[state]);
}
@@ -6603,95 +6227,95 @@ static void DoTVShowSpotTheCuties(void)
state = sTVShowState;
switch (state)
{
- case SPOTCUTIES_STATE_INTRO:
- TVShowConvertInternationalString(gStringVar1, show->cuties.playerName, show->cuties.language);
- TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
+ case SPOTCUTIES_STATE_INTRO:
+ TVShowConvertInternationalString(gStringVar1, show->cuties.playerName, show->cuties.language);
+ TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
- // Comments following the intro depend on how many ribbons the pokemon has
- if (show->cuties.nRibbons < 10)
- sTVShowState = SPOTCUTIES_STATE_RIBBONS_LOW;
- else if (show->cuties.nRibbons < 20)
- sTVShowState = SPOTCUTIES_STATE_RIBBONS_MID;
- else
- sTVShowState = SPOTCUTIES_STATE_RIBBONS_HIGH;
- break;
- case SPOTCUTIES_STATE_RIBBONS_LOW:
- case SPOTCUTIES_STATE_RIBBONS_MID:
- case SPOTCUTIES_STATE_RIBBONS_HIGH:
- TVShowConvertInternationalString(gStringVar1, show->cuties.playerName, show->cuties.language);
- TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
- TV_PrintIntToStringVar(2, show->cuties.nRibbons);
- sTVShowState = SPOTCUTIES_STATE_RIBBON_INTRO;
- break;
- case SPOTCUTIES_STATE_RIBBON_INTRO:
- TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
- switch (show->cuties.selectedRibbon)
- {
- case CHAMPION_RIBBON:
- sTVShowState = SPOTCUTIES_STATE_RIBBON_CHAMPION;
- break;
- case COOL_RIBBON_NORMAL:
- case COOL_RIBBON_SUPER:
- case COOL_RIBBON_HYPER:
- case COOL_RIBBON_MASTER:
- sTVShowState = SPOTCUTIES_STATE_RIBBON_COOL;
- break;
- case BEAUTY_RIBBON_NORMAL:
- case BEAUTY_RIBBON_SUPER:
- case BEAUTY_RIBBON_HYPER:
- case BEAUTY_RIBBON_MASTER:
- sTVShowState = SPOTCUTIES_STATE_RIBBON_BEAUTY;
- break;
- case CUTE_RIBBON_NORMAL:
- case CUTE_RIBBON_SUPER:
- case CUTE_RIBBON_HYPER:
- case CUTE_RIBBON_MASTER:
- sTVShowState = SPOTCUTIES_STATE_RIBBON_CUTE;
- break;
- case SMART_RIBBON_NORMAL:
- case SMART_RIBBON_SUPER:
- case SMART_RIBBON_HYPER:
- case SMART_RIBBON_MASTER:
- sTVShowState = SPOTCUTIES_STATE_RIBBON_SMART;
- break;
- case TOUGH_RIBBON_NORMAL:
- case TOUGH_RIBBON_SUPER:
- case TOUGH_RIBBON_HYPER:
- case TOUGH_RIBBON_MASTER:
- sTVShowState = SPOTCUTIES_STATE_RIBBON_TOUGH;
- break;
- case WINNING_RIBBON:
- sTVShowState = SPOTCUTIES_STATE_RIBBON_WINNING;
- break;
- case VICTORY_RIBBON:
- sTVShowState = SPOTCUTIES_STATE_RIBBON_VICTORY;
- break;
- case ARTIST_RIBBON:
- sTVShowState = SPOTCUTIES_STATE_RIBBON_ARTIST;
- break;
- case EFFORT_RIBBON:
- sTVShowState = SPOTCUTIES_STATE_RIBBON_EFFORT;
- break;
- // No comment is made for any of the gift ribbons.
- // If the show is created for a gift ribbon
- // then this state will repeat indefinitely
- }
- break;
- case SPOTCUTIES_STATE_RIBBON_CHAMPION:
- case SPOTCUTIES_STATE_RIBBON_COOL:
- case SPOTCUTIES_STATE_RIBBON_BEAUTY:
- case SPOTCUTIES_STATE_RIBBON_CUTE:
- case SPOTCUTIES_STATE_RIBBON_SMART:
- case SPOTCUTIES_STATE_RIBBON_TOUGH:
- case SPOTCUTIES_STATE_RIBBON_WINNING:
- case SPOTCUTIES_STATE_RIBBON_VICTORY:
- case SPOTCUTIES_STATE_RIBBON_ARTIST:
- case SPOTCUTIES_STATE_RIBBON_EFFORT:
- TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
- sTVShowState = SPOTCUTIES_STATE_OUTRO;
- break;
- case SPOTCUTIES_STATE_OUTRO:
- TVShowDone();
+ // Comments following the intro depend on how many ribbons the pokemon has
+ if (show->cuties.nRibbons < 10)
+ sTVShowState = SPOTCUTIES_STATE_RIBBONS_LOW;
+ else if (show->cuties.nRibbons < 20)
+ sTVShowState = SPOTCUTIES_STATE_RIBBONS_MID;
+ else
+ sTVShowState = SPOTCUTIES_STATE_RIBBONS_HIGH;
+ break;
+ case SPOTCUTIES_STATE_RIBBONS_LOW:
+ case SPOTCUTIES_STATE_RIBBONS_MID:
+ case SPOTCUTIES_STATE_RIBBONS_HIGH:
+ TVShowConvertInternationalString(gStringVar1, show->cuties.playerName, show->cuties.language);
+ TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
+ ConvertIntToDecimalString(2, show->cuties.nRibbons);
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_INTRO;
+ break;
+ case SPOTCUTIES_STATE_RIBBON_INTRO:
+ TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
+ switch (show->cuties.selectedRibbon)
+ {
+ case CHAMPION_RIBBON:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_CHAMPION;
+ break;
+ case COOL_RIBBON_NORMAL:
+ case COOL_RIBBON_SUPER:
+ case COOL_RIBBON_HYPER:
+ case COOL_RIBBON_MASTER:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_COOL;
+ break;
+ case BEAUTY_RIBBON_NORMAL:
+ case BEAUTY_RIBBON_SUPER:
+ case BEAUTY_RIBBON_HYPER:
+ case BEAUTY_RIBBON_MASTER:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_BEAUTY;
+ break;
+ case CUTE_RIBBON_NORMAL:
+ case CUTE_RIBBON_SUPER:
+ case CUTE_RIBBON_HYPER:
+ case CUTE_RIBBON_MASTER:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_CUTE;
+ break;
+ case SMART_RIBBON_NORMAL:
+ case SMART_RIBBON_SUPER:
+ case SMART_RIBBON_HYPER:
+ case SMART_RIBBON_MASTER:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_SMART;
+ break;
+ case TOUGH_RIBBON_NORMAL:
+ case TOUGH_RIBBON_SUPER:
+ case TOUGH_RIBBON_HYPER:
+ case TOUGH_RIBBON_MASTER:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_TOUGH;
+ break;
+ case WINNING_RIBBON:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_WINNING;
+ break;
+ case VICTORY_RIBBON:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_VICTORY;
+ break;
+ case ARTIST_RIBBON:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_ARTIST;
+ break;
+ case EFFORT_RIBBON:
+ sTVShowState = SPOTCUTIES_STATE_RIBBON_EFFORT;
+ break;
+ // No comment is made for any of the gift ribbons.
+ // If the show is created for a gift ribbon
+ // then this state will repeat indefinitely
+ }
+ break;
+ case SPOTCUTIES_STATE_RIBBON_CHAMPION:
+ case SPOTCUTIES_STATE_RIBBON_COOL:
+ case SPOTCUTIES_STATE_RIBBON_BEAUTY:
+ case SPOTCUTIES_STATE_RIBBON_CUTE:
+ case SPOTCUTIES_STATE_RIBBON_SMART:
+ case SPOTCUTIES_STATE_RIBBON_TOUGH:
+ case SPOTCUTIES_STATE_RIBBON_WINNING:
+ case SPOTCUTIES_STATE_RIBBON_VICTORY:
+ case SPOTCUTIES_STATE_RIBBON_ARTIST:
+ case SPOTCUTIES_STATE_RIBBON_EFFORT:
+ TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
+ sTVShowState = SPOTCUTIES_STATE_OUTRO;
+ break;
+ case SPOTCUTIES_STATE_OUTRO:
+ TVShowDone();
}
ShowFieldMessage(sTVCutiesTextGroup[state]);
}
@@ -6706,140 +6330,140 @@ static void DoTVShowPokemonNewsBattleFrontier(void)
state = sTVShowState;
switch (state)
{
- case 0:
- switch (show->frontier.facility)
- {
- case 1:
- sTVShowState = 1;
- break;
- case 2:
- sTVShowState = 2;
- break;
- case 3:
- sTVShowState = 3;
- break;
- case 4:
- sTVShowState = 4;
- break;
- case 5:
- sTVShowState = 5;
- break;
- case 6:
- sTVShowState = 6;
- break;
- case 7:
- sTVShowState = 7;
- break;
- case 8:
- sTVShowState = 8;
- break;
- case 9:
- sTVShowState = 9;
- break;
- case 10:
- sTVShowState = 10;
- break;
- case 11:
- sTVShowState = 11;
- break;
- case 12:
- sTVShowState = 12;
- break;
- case 13:
- sTVShowState = 13;
- break;
- }
- break;
+ case 0:
+ switch (show->frontier.facilityAndMode)
+ {
case 1:
- TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
- TV_PrintIntToStringVar(1, show->frontier.winStreak);
- sTVShowState = 14;
+ sTVShowState = 1;
break;
case 2:
- TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
- TV_PrintIntToStringVar(1, show->frontier.winStreak);
- sTVShowState = 16;
+ sTVShowState = 2;
break;
case 3:
- TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
- TV_PrintIntToStringVar(1, show->frontier.winStreak);
- sTVShowState = 15;
+ sTVShowState = 3;
break;
case 4:
- TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
- TV_PrintIntToStringVar(1, show->frontier.winStreak);
- sTVShowState = 15;
+ sTVShowState = 4;
break;
case 5:
- TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
- TV_PrintIntToStringVar(1, show->frontier.winStreak);
- sTVShowState = 14;
+ sTVShowState = 5;
break;
case 6:
- TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
- TV_PrintIntToStringVar(1, show->frontier.winStreak);
- sTVShowState = 14;
+ sTVShowState = 6;
break;
case 7:
- TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
- TV_PrintIntToStringVar(1, show->frontier.winStreak);
- sTVShowState = 14;
+ sTVShowState = 7;
break;
case 8:
- TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
- TV_PrintIntToStringVar(1, show->frontier.winStreak);
- sTVShowState = 14;
+ sTVShowState = 8;
break;
case 9:
- TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
- TV_PrintIntToStringVar(1, show->frontier.winStreak);
- sTVShowState = 14;
+ sTVShowState = 9;
break;
case 10:
- TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
- TV_PrintIntToStringVar(1, show->frontier.winStreak);
- sTVShowState = 14;
+ sTVShowState = 10;
break;
case 11:
- TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
- TV_PrintIntToStringVar(1, show->frontier.winStreak);
- sTVShowState = 14;
+ sTVShowState = 11;
break;
case 12:
- TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
- TV_PrintIntToStringVar(1, show->frontier.winStreak);
- sTVShowState = 14;
+ sTVShowState = 12;
break;
case 13:
- TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
- TV_PrintIntToStringVar(1, show->frontier.winStreak);
- sTVShowState = 14;
- break;
- case 14:
- StringCopy(gStringVar1, gSpeciesNames[show->frontier.species1]);
- StringCopy(gStringVar2, gSpeciesNames[show->frontier.species2]);
- StringCopy(gStringVar3, gSpeciesNames[show->frontier.species3]);
- sTVShowState = 18;
- break;
- case 15:
- StringCopy(gStringVar1, gSpeciesNames[show->frontier.species1]);
- StringCopy(gStringVar2, gSpeciesNames[show->frontier.species2]);
- sTVShowState = 18;
- break;
- case 16:
- StringCopy(gStringVar1, gSpeciesNames[show->frontier.species1]);
- StringCopy(gStringVar2, gSpeciesNames[show->frontier.species2]);
- StringCopy(gStringVar3, gSpeciesNames[show->frontier.species3]);
- sTVShowState = 17;
- break;
- case 17:
- StringCopy(gStringVar1, gSpeciesNames[show->frontier.species4]);
- sTVShowState = 18;
- break;
- case 18:
- TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
- TVShowDone();
+ sTVShowState = 13;
break;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ ConvertIntToDecimalString(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ ConvertIntToDecimalString(1, show->frontier.winStreak);
+ sTVShowState = 16;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ ConvertIntToDecimalString(1, show->frontier.winStreak);
+ sTVShowState = 15;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ ConvertIntToDecimalString(1, show->frontier.winStreak);
+ sTVShowState = 15;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ ConvertIntToDecimalString(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ ConvertIntToDecimalString(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 7:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ ConvertIntToDecimalString(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 8:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ ConvertIntToDecimalString(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 9:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ ConvertIntToDecimalString(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 10:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ ConvertIntToDecimalString(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 11:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ ConvertIntToDecimalString(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 12:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ ConvertIntToDecimalString(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 13:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ ConvertIntToDecimalString(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 14:
+ StringCopy(gStringVar1, gSpeciesNames[show->frontier.species1]);
+ StringCopy(gStringVar2, gSpeciesNames[show->frontier.species2]);
+ StringCopy(gStringVar3, gSpeciesNames[show->frontier.species3]);
+ sTVShowState = 18;
+ break;
+ case 15:
+ StringCopy(gStringVar1, gSpeciesNames[show->frontier.species1]);
+ StringCopy(gStringVar2, gSpeciesNames[show->frontier.species2]);
+ sTVShowState = 18;
+ break;
+ case 16:
+ StringCopy(gStringVar1, gSpeciesNames[show->frontier.species1]);
+ StringCopy(gStringVar2, gSpeciesNames[show->frontier.species2]);
+ StringCopy(gStringVar3, gSpeciesNames[show->frontier.species3]);
+ sTVShowState = 17;
+ break;
+ case 17:
+ StringCopy(gStringVar1, gSpeciesNames[show->frontier.species4]);
+ sTVShowState = 18;
+ break;
+ case 18:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVPokemonNewsBattleFrontierTextGroup[state]);
}
@@ -6854,72 +6478,72 @@ static void DoTVShowWhatsNo1InHoennToday(void)
state = sTVShowState;
switch (state)
{
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ switch (show->numberOne.actionIdx)
+ {
case 0:
- TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
- switch (show->numberOne.actionIdx)
- {
- case 0:
- sTVShowState = 1;
- break;
- case 1:
- sTVShowState = 2;
- break;
- case 2:
- sTVShowState = 3;
- break;
- case 3:
- sTVShowState = 4;
- break;
- case 4:
- sTVShowState = 5;
- break;
- case 5:
- sTVShowState = 6;
- break;
- case 6:
- sTVShowState = 7;
- break;
- }
+ sTVShowState = 1;
break;
case 1:
- TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
- TV_PrintIntToStringVar(1, show->numberOne.count);
- sTVShowState = 8;
+ sTVShowState = 2;
break;
case 2:
- TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
- TV_PrintIntToStringVar(1, show->numberOne.count);
- sTVShowState = 8;
+ sTVShowState = 3;
break;
case 3:
- TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
- TV_PrintIntToStringVar(1, show->numberOne.count);
- sTVShowState = 8;
+ sTVShowState = 4;
break;
case 4:
- TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
- TV_PrintIntToStringVar(1, show->numberOne.count);
- sTVShowState = 8;
+ sTVShowState = 5;
break;
case 5:
- TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
- TV_PrintIntToStringVar(1, show->numberOne.count);
- sTVShowState = 8;
+ sTVShowState = 6;
break;
case 6:
- TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
- TV_PrintIntToStringVar(1, show->numberOne.count);
- sTVShowState = 8;
- break;
- case 7:
- TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
- TV_PrintIntToStringVar(1, show->numberOne.count);
- sTVShowState = 8;
- break;
- case 8:
- TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
- TVShowDone();
+ sTVShowState = 7;
break;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ ConvertIntToDecimalString(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ ConvertIntToDecimalString(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ ConvertIntToDecimalString(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ ConvertIntToDecimalString(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ ConvertIntToDecimalString(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ ConvertIntToDecimalString(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 7:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ ConvertIntToDecimalString(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 8:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVWhatsNo1InHoennTodayTextGroup[state]);
}
@@ -6929,7 +6553,7 @@ u8 SecretBaseSecrets_GetNumActionsTaken(TVShow *show)
u8 i;
u8 flagsSet;
- for (i = 0, flagsSet = 0; i < NUM_SECRET_BASE_FLAGS; i ++)
+ for (i = 0, flagsSet = 0; i < NUM_SECRET_BASE_FLAGS; i++)
{
if ((show->secretBaseSecrets.flags >> i) & 1)
flagsSet++;
@@ -6942,7 +6566,7 @@ static u8 SecretBaseSecrets_GetStateByFlagNumber(TVShow *show, u8 flagId)
u8 i;
u8 flagsSet;
- for (i = 0, flagsSet = 0; i < NUM_SECRET_BASE_FLAGS; i ++)
+ for (i = 0, flagsSet = 0; i < NUM_SECRET_BASE_FLAGS; i++)
{
if ((show->secretBaseSecrets.flags >> i) & 1)
{
@@ -6967,130 +6591,112 @@ static void DoTVShowSecretBaseSecrets(void)
state = sTVShowState;
switch (state)
{
- case SBSECRETS_STATE_INTRO:
- TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
- TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
- numActions = SecretBaseSecrets_GetNumActionsTaken(show);
- if (numActions == 0)
- {
- sTVShowState = SBSECRETS_STATE_NOTHING_USED1;
- }
- else
- {
- show->secretBaseSecrets.savedState = SBSECRETS_STATE_DO_NEXT1;
- sTVSecretBaseSecretsRandomValues[0] = Random() % numActions;
- sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, sTVSecretBaseSecretsRandomValues[0]);
- }
- break;
- case SBSECRETS_STATE_DO_NEXT1:
- TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
- numActions = SecretBaseSecrets_GetNumActionsTaken(show);
- switch (numActions)
- {
- case 1:
- sTVShowState = SBSECRETS_STATE_NOTHING_USED2;
- break;
- case 2:
- show->secretBaseSecrets.savedState = SBSECRETS_STATE_DO_NEXT2;
- if (sTVSecretBaseSecretsRandomValues[0] == 0)
- {
- sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, 1);
- }
- else
- {
- sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, 0);
- }
- break;
- default:
- for (i = 0; i < 0xFFFF; i ++)
- {
- sTVSecretBaseSecretsRandomValues[1] = Random() % numActions;
- if (sTVSecretBaseSecretsRandomValues[1] != sTVSecretBaseSecretsRandomValues[0])
- {
- break;
- }
- }
- show->secretBaseSecrets.savedState = SBSECRETS_STATE_DO_NEXT2;
- sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, sTVSecretBaseSecretsRandomValues[1]);
- break;
- }
+ case SBSECRETS_STATE_INTRO:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ numActions = SecretBaseSecrets_GetNumActionsTaken(show);
+ if (numActions == 0)
+ {
+ sTVShowState = SBSECRETS_STATE_NOTHING_USED1;
+ }
+ else
+ {
+ show->secretBaseSecrets.savedState = SBSECRETS_STATE_DO_NEXT1;
+ sTVSecretBaseSecretsRandomValues[0] = Random() % numActions;
+ sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, sTVSecretBaseSecretsRandomValues[0]);
+ }
+ break;
+ case SBSECRETS_STATE_DO_NEXT1:
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ numActions = SecretBaseSecrets_GetNumActionsTaken(show);
+ switch (numActions)
+ {
+ case 1:
+ sTVShowState = SBSECRETS_STATE_NOTHING_USED2;
break;
- case SBSECRETS_STATE_DO_NEXT2:
- TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
- numActions = SecretBaseSecrets_GetNumActionsTaken(show);
- if (numActions == 2)
- {
- sTVShowState = SBSECRETS_STATE_NOTHING_USED2;
- }
+ case 2:
+ show->secretBaseSecrets.savedState = SBSECRETS_STATE_DO_NEXT2;
+ if (sTVSecretBaseSecretsRandomValues[0] == 0)
+ sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, 1);
else
- {
- for (i = 0; i < 0xFFFF; i ++)
- {
- sTVSecretBaseSecretsRandomValues[2] = Random() % numActions;
- if (sTVSecretBaseSecretsRandomValues[2] != sTVSecretBaseSecretsRandomValues[0] && sTVSecretBaseSecretsRandomValues[2] != sTVSecretBaseSecretsRandomValues[1])
- {
- break;
- }
- }
- show->secretBaseSecrets.savedState = SBSECRETS_STATE_TOOK_X_STEPS;
- sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, sTVSecretBaseSecretsRandomValues[2]);
- }
+ sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, 0);
break;
- case SBSECRETS_STATE_TOOK_X_STEPS:
- TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
- TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
- TV_PrintIntToStringVar(2, show->secretBaseSecrets.stepsInBase);
- if (show->secretBaseSecrets.stepsInBase <= 30)
- {
- sTVShowState = SBSECRETS_STATE_BASE_INTEREST_LOW;
- }
- else if (show->secretBaseSecrets.stepsInBase <= 100)
- {
- sTVShowState = SBSECRETS_STATE_BASE_INTEREST_MED;
- }
- else
+ default:
+ for (i = 0; i < 0xFFFF; i++)
{
- sTVShowState = SBSECRETS_STATE_BASE_INTEREST_HIGH;
+ sTVSecretBaseSecretsRandomValues[1] = Random() % numActions;
+ if (sTVSecretBaseSecretsRandomValues[1] != sTVSecretBaseSecretsRandomValues[0])
+ break;
}
+ show->secretBaseSecrets.savedState = SBSECRETS_STATE_DO_NEXT2;
+ sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, sTVSecretBaseSecretsRandomValues[1]);
break;
- case SBSECRETS_STATE_BASE_INTEREST_LOW ... SBSECRETS_STATE_BASE_INTEREST_HIGH:
- TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
- TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
- sTVShowState = SBSECRETS_STATE_OUTRO;
- break;
- case SBSECRETS_STATE_OUTRO:
- TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
- TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
- TVShowDone();
- break;
- // All below states are descriptions of what the player interacted with while in the secret base
- case SBSECRETS_STATE_NOTHING_USED1:
- sTVShowState = SBSECRETS_STATE_TOOK_X_STEPS;
- break;
- case SBSECRETS_STATE_NOTHING_USED2:
- sTVShowState = SBSECRETS_STATE_TOOK_X_STEPS;
- break;
- case SBSECRETS_STATE_USED_CHAIR ... SBSECRETS_STATE_USED_MUD_BALL:
- sTVShowState = show->secretBaseSecrets.savedState;
- break;
- case SBSECRETS_STATE_USED_BAG:
- StringCopy(gStringVar2, ItemId_GetName(show->secretBaseSecrets.item));
- sTVShowState = show->secretBaseSecrets.savedState;
- break;
- case SBSECRETS_STATE_USED_CUSHION:
- // Randomly decide based on trainer ID if the player hugged or hit the cushion
- if (show->common.trainerIdLo & 1)
- {
- sTVShowState = SBSECRETS_STATE_HUGGED_CUSHION;
- }
- else
+ }
+ break;
+ case SBSECRETS_STATE_DO_NEXT2:
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ numActions = SecretBaseSecrets_GetNumActionsTaken(show);
+ if (numActions == 2)
+ {
+ sTVShowState = SBSECRETS_STATE_NOTHING_USED2;
+ }
+ else
+ {
+ for (i = 0; i < 0xFFFF; i++)
{
- sTVShowState = SBSECRETS_STATE_HIT_CUSHION;
+ sTVSecretBaseSecretsRandomValues[2] = Random() % numActions;
+ if (sTVSecretBaseSecretsRandomValues[2] != sTVSecretBaseSecretsRandomValues[0] && sTVSecretBaseSecretsRandomValues[2] != sTVSecretBaseSecretsRandomValues[1])
+ break;
}
- break;
- case SBSECRETS_STATE_HIT_CUSHION ... SBSECRETS_NUM_STATES:
- sTVShowState = show->secretBaseSecrets.savedState;
- break;
+ show->secretBaseSecrets.savedState = SBSECRETS_STATE_TOOK_X_STEPS;
+ sTVShowState = SecretBaseSecrets_GetStateByFlagNumber(show, sTVSecretBaseSecretsRandomValues[2]);
+ }
+ break;
+ case SBSECRETS_STATE_TOOK_X_STEPS:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ ConvertIntToDecimalString(2, show->secretBaseSecrets.stepsInBase);
+ if (show->secretBaseSecrets.stepsInBase <= 30)
+ sTVShowState = SBSECRETS_STATE_BASE_INTEREST_LOW;
+ else if (show->secretBaseSecrets.stepsInBase <= 100)
+ sTVShowState = SBSECRETS_STATE_BASE_INTEREST_MED;
+ else
+ sTVShowState = SBSECRETS_STATE_BASE_INTEREST_HIGH;
+ break;
+ case SBSECRETS_STATE_BASE_INTEREST_LOW ... SBSECRETS_STATE_BASE_INTEREST_HIGH:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ sTVShowState = SBSECRETS_STATE_OUTRO;
+ break;
+ case SBSECRETS_STATE_OUTRO:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ TVShowDone();
+ break;
+ // All below states are descriptions of what the player interacted with while in the secret base
+ case SBSECRETS_STATE_NOTHING_USED1:
+ sTVShowState = SBSECRETS_STATE_TOOK_X_STEPS;
+ break;
+ case SBSECRETS_STATE_NOTHING_USED2:
+ sTVShowState = SBSECRETS_STATE_TOOK_X_STEPS;
+ break;
+ case SBSECRETS_STATE_USED_CHAIR ... SBSECRETS_STATE_USED_MUD_BALL:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case SBSECRETS_STATE_USED_BAG:
+ StringCopy(gStringVar2, ItemId_GetName(show->secretBaseSecrets.item));
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case SBSECRETS_STATE_USED_CUSHION:
+ // Randomly decide based on trainer ID if the player hugged or hit the cushion
+ if (show->common.trainerIdLo & 1)
+ sTVShowState = SBSECRETS_STATE_HUGGED_CUSHION;
+ else
+ sTVShowState = SBSECRETS_STATE_HIT_CUSHION;
+ break;
+ case SBSECRETS_STATE_HIT_CUSHION ... SBSECRETS_NUM_STATES:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
}
ShowFieldMessage(sTVSecretBaseSecretsTextGroup[state]);
}
@@ -7105,84 +6711,68 @@ static void DoTVShowSafariFanClub(void)
state = sTVShowState;
switch (state)
{
- case 0:
- if (show->safariFanClub.nMonsCaught == 0)
- {
- sTVShowState = 6;
- }
- else if (show->safariFanClub.nMonsCaught < 4)
- {
- sTVShowState = 5;
- }
- else
- {
- sTVShowState = 1;
- }
- break;
- case 1:
- TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
- TV_PrintIntToStringVar(1, show->safariFanClub.nMonsCaught);
- if (show->safariFanClub.nPkblkUsed == 0)
- {
- sTVShowState = 3;
- }
- else
- {
- sTVShowState = 2;
- }
- break;
- case 2:
- TV_PrintIntToStringVar(1, show->safariFanClub.nPkblkUsed);
- sTVShowState = 4;
- break;
- case 3:
- sTVShowState = 4;
- break;
- case 4:
- TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
- sTVShowState = 10;
- break;
- case 5:
- TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
- TV_PrintIntToStringVar(1, show->safariFanClub.nMonsCaught);
- if (show->safariFanClub.nPkblkUsed == 0)
- {
- sTVShowState = 8;
- }
- else
- {
- sTVShowState = 7;
- }
- break;
- case 6:
- TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
- if (show->safariFanClub.nPkblkUsed == 0)
- {
- sTVShowState = 8;
- }
- else
- {
- sTVShowState = 7;
- }
- break;
- case 7:
- TV_PrintIntToStringVar(1, show->safariFanClub.nPkblkUsed);
- sTVShowState = 9;
- break;
- case 8:
- sTVShowState = 9;
- break;
- case 9:
- TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
- sTVShowState = 10;
- break;
- case 10:
- TVShowDone();
+ case 0:
+ if (show->safariFanClub.nMonsCaught == 0)
+ sTVShowState = 6;
+ else if (show->safariFanClub.nMonsCaught < 4)
+ sTVShowState = 5;
+ else
+ sTVShowState = 1;
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
+ ConvertIntToDecimalString(1, show->safariFanClub.nMonsCaught);
+ if (show->safariFanClub.nPkblkUsed == 0)
+ sTVShowState = 3;
+ else
+ sTVShowState = 2;
+ break;
+ case 2:
+ ConvertIntToDecimalString(1, show->safariFanClub.nPkblkUsed);
+ sTVShowState = 4;
+ break;
+ case 3:
+ sTVShowState = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
+ sTVShowState = 10;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
+ ConvertIntToDecimalString(1, show->safariFanClub.nMonsCaught);
+ if (show->safariFanClub.nPkblkUsed == 0)
+ sTVShowState = 8;
+ else
+ sTVShowState = 7;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
+ if (show->safariFanClub.nPkblkUsed == 0)
+ sTVShowState = 8;
+ else
+ sTVShowState = 7;
+ break;
+ case 7:
+ ConvertIntToDecimalString(1, show->safariFanClub.nPkblkUsed);
+ sTVShowState = 9;
+ break;
+ case 8:
+ sTVShowState = 9;
+ break;
+ case 9:
+ TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
+ sTVShowState = 10;
+ break;
+ case 10:
+ TVShowDone();
+ break;
}
ShowFieldMessage(sTVSafariFanClubTextGroup[state]);
}
-static void DoTVShowPokemonContestLiveUpdates2(void)
+// This show is a version of Contest Live Updates for the Lilycove Contest Lady
+static void DoTVShowLilycoveContestLady(void)
{
TVShow *show;
u8 state;
@@ -7192,33 +6782,27 @@ static void DoTVShowPokemonContestLiveUpdates2(void)
state = sTVShowState;
switch (state)
{
- case 0:
- BufferContestName(gStringVar1, show->contestLiveUpdates2.contestCategory);
- if (show->contestLiveUpdates2.pokeblockState == 1)
- {
- sTVShowState = 1;
- }
- else if (show->contestLiveUpdates2.pokeblockState == 0)
- {
- sTVShowState = 2;
- }
- else
- {
- sTVShowState = 3;
- }
- break;
- case 1:
- case 2:
- TVShowConvertInternationalString(gStringVar3, show->contestLiveUpdates2.playerName, show->contestLiveUpdates2.language);
- case 3:
- TVShowConvertInternationalString(gStringVar2, show->contestLiveUpdates2.nickname, show->contestLiveUpdates2.pokemonNameLanguage);
- TVShowDone();
- break;
+ case CONTESTLADYLIVE_STATE_INTRO:
+ BufferContestName(gStringVar1, show->contestLady.contestCategory);
+ if (show->contestLady.pokeblockState == CONTEST_LADY_GOOD)
+ sTVShowState = CONTESTLADYLIVE_STATE_WON;
+ else if (show->contestLady.pokeblockState == CONTEST_LADY_NORMAL)
+ sTVShowState = CONTESTLADYLIVE_STATE_LOST;
+ else // CONTEST_LADY_BAD
+ sTVShowState = CONTESTLADYLIVE_STATE_LOST_BADLY;
+ break;
+ case CONTESTLADYLIVE_STATE_WON:
+ case CONTESTLADYLIVE_STATE_LOST:
+ TVShowConvertInternationalString(gStringVar3, show->contestLady.playerName, show->contestLady.language);
+ case CONTESTLADYLIVE_STATE_LOST_BADLY:
+ TVShowConvertInternationalString(gStringVar2, show->contestLady.nickname, show->contestLady.pokemonNameLanguage);
+ TVShowDone();
+ break;
}
- ShowFieldMessage(sTVPokemonContestLiveUpdates2TextGroup[state]);
+ ShowFieldMessage(sTVLilycoveContestLadyTextGroup[state]);
}
-void TVShowDone(void)
+static void TVShowDone(void)
{
gSpecialVar_Result = TRUE;
sTVShowState = 0;
diff --git a/src/union_room.c b/src/union_room.c
index a12b385f5..8d02a260d 100644
--- a/src/union_room.c
+++ b/src/union_room.c
@@ -253,10 +253,10 @@ static bool32 UR_PrintFieldMessage(const u8 *);
static s32 GetChatLeaderActionRequestMessage(u8 *, u32, u16 *, struct WirelessLink_URoom *);
static void Task_InitUnionRoom(u8 taskId);
static bool8 AreGnameUnameDifferent(struct WirelessGnameUnamePair*, const struct WirelessGnameUnamePair*);
-static void ItemPrintFunc_PossibleGroupMembers(u8, s32, u8);
-static void ListMenuItemPrintFunc_UnionRoomGroups(u8, s32, u8);
-static void TradeBoardListMenuItemPrintFunc(u8, s32, u8);
-static void nullsub_14(u8, s32, u8);
+static void ItemPrintFunc_PossibleGroupMembers(u8 windowId, u32 id, u8 y);
+static void ListMenuItemPrintFunc_UnionRoomGroups(u8 windowId, u32 id, u8 y);
+static void TradeBoardListMenuItemPrintFunc(u8 windowId, u32 id, u8 y);
+static void nullsub_14(u8 windowId, u32 id, u8 y);
#include "data/union_room.h"
@@ -319,8 +319,13 @@ static void StringExpandPlaceholders_AwaitingCommFromAnother(u8 *dst, u8 caseId)
case ACTIVITY_CONTEST_CUTE:
case ACTIVITY_CONTEST_SMART:
case ACTIVITY_CONTEST_TOUGH:
- // UB: argument *dst isn't used, instead it always prints to gStringVar4
+ // BUG: argument *dst isn't used, instead it always prints to gStringVar4
+ // not an issue in practice since Gamefreak never used any other arguments here besides gStringVar4
+ #ifndef BUGFIX
StringExpandPlaceholders(gStringVar4, sText_AwaitingCommunication);
+ #else
+ StringExpandPlaceholders(dst, sText_AwaitingCommunication);
+ #endif
break;
}
}
@@ -830,7 +835,7 @@ static bool8 Leader_SetStateIfMemberListChanged(struct WirelessLink_Leader *data
return FALSE;
}
-static void ItemPrintFunc_PossibleGroupMembers(u8 windowId, s32 id, u8 y)
+static void ItemPrintFunc_PossibleGroupMembers(u8 windowId, u32 id, u8 y)
{
struct WirelessLink_Leader *data = sWirelessLinkMain.leader;
u8 colorIdx = UR_COLOR_DKE_WHT_LTE;
@@ -1358,7 +1363,7 @@ static u8 URoomGroupListGetTextColor(struct WirelessLink_Group *data, u32 id)
return UR_COLOR_DKE_WHT_LTE;
}
-static void ListMenuItemPrintFunc_UnionRoomGroups(u8 windowId, s32 id, u8 y)
+static void ListMenuItemPrintFunc_UnionRoomGroups(u8 windowId, u32 id, u8 y)
{
struct WirelessLink_Group *data = sWirelessLinkMain.group;
u8 colorId = URoomGroupListGetTextColor(data, id);
@@ -3769,9 +3774,9 @@ static void UR_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str
case UR_COLOR_DKE_WHT_LTE:
printerTemplate.letterSpacing = 0;
printerTemplate.lineSpacing = 0;
- printerTemplate.fgColor = TEXT_COLOR_DARK_GREY;
+ printerTemplate.fgColor = TEXT_COLOR_DARK_GRAY;
printerTemplate.bgColor = TEXT_COLOR_WHITE;
- printerTemplate.shadowColor = TEXT_COLOR_LIGHT_GREY;
+ printerTemplate.shadowColor = TEXT_COLOR_LIGHT_GRAY;
break;
case UR_COLOR_RED_WHT_LTR:
printerTemplate.letterSpacing = 0;
@@ -3792,14 +3797,14 @@ static void UR_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str
printerTemplate.lineSpacing = 0;
printerTemplate.fgColor = TEXT_COLOR_WHITE;
printerTemplate.bgColor = TEXT_COLOR_WHITE;
- printerTemplate.shadowColor = TEXT_COLOR_LIGHT_GREY;
+ printerTemplate.shadowColor = TEXT_COLOR_LIGHT_GRAY;
break;
case UR_COLOR_WHT_DKE_LTE:
printerTemplate.letterSpacing = 0;
printerTemplate.lineSpacing = 0;
printerTemplate.fgColor = TEXT_COLOR_WHITE;
- printerTemplate.bgColor = TEXT_COLOR_DARK_GREY;
- printerTemplate.shadowColor = TEXT_COLOR_LIGHT_GREY;
+ printerTemplate.bgColor = TEXT_COLOR_DARK_GRAY;
+ printerTemplate.shadowColor = TEXT_COLOR_LIGHT_GRAY;
break;
case UR_COLOR_GRN_DN6_LTB:
printerTemplate.letterSpacing = 0;
@@ -4069,9 +4074,8 @@ static s32 UnionRoomGetPlayerInteractionResponse(struct UnkStruct_Main0 *main0,
}
}
-void nullsub_14(u8 windowId, s32 itemId, u8 y)
+void nullsub_14(u8 windowId, u32 itemId, u8 y)
{
-
}
static void TradeBoardPrintItemInfo(u8 windowId, u8 y, struct GFtgtGname * gname, const u8 * uname, u8 colorIdx)
@@ -4095,7 +4099,7 @@ static void TradeBoardPrintItemInfo(u8 windowId, u8 y, struct GFtgtGname * gname
}
}
-static void TradeBoardListMenuItemPrintFunc(u8 windowId, s32 itemId, u8 y)
+static void TradeBoardListMenuItemPrintFunc(u8 windowId, u32 itemId, u8 y)
{
struct WirelessLink_Leader *data = sWirelessLinkMain.leader;
struct GFtgtGname *rfu;
@@ -4415,7 +4419,7 @@ static void HandleCancelActivity(bool32 setData)
static void UR_EnableScriptContext2AndFreezeObjectEvents(void)
{
ScriptContext2_Enable();
- ScriptFreezeObjectEvents();
+ FreezeObjects_WaitForPlayer();
}
static u8 GetActivePartnerSpriteGenderParam(struct WirelessLink_URoom *data)
diff --git a/src/union_room_battle.c b/src/union_room_battle.c
index c212e4706..2d1274f6e 100644
--- a/src/union_room_battle.c
+++ b/src/union_room_battle.c
@@ -49,7 +49,7 @@ static const struct WindowTemplate sWindowTemplates[] = {
DUMMY_WIN_TEMPLATE
};
-static const u8 sTextColors[] = { TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY };
+static const u8 sTextColors[] = { TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_LIGHT_GRAY };
static void CB2_SetUpPartiesAndStartBattle(void)
{
diff --git a/src/union_room_chat.c b/src/union_room_chat.c
index 3733abe1e..3167563ad 100755
--- a/src/union_room_chat.c
+++ b/src/union_room_chat.c
@@ -2984,7 +2984,7 @@ static void HideKeyboardSwapMenu(void)
static void PrintChatMessage(u16 row, u8 *str, u8 colorIdx)
{
- // colorIdx: 0 = grey, 1 = red, 2 = green, 3 = blue
+ // colorIdx: 0 = gray, 1 = red, 2 = green, 3 = blue
u8 color[3];
color[0] = TEXT_COLOR_WHITE;
color[1] = colorIdx * 2 + 2;
@@ -3011,8 +3011,8 @@ static void ResetGpuBgState(void)
SetGpuReg(REG_OFFSET_BLDCNT, 0);
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJWIN_ON);
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(64, 240));
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, 144));
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(64, DISPLAY_WIDTH));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, DISPLAY_HEIGHT - 16));
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 | WININ_WIN0_BG2 | WININ_WIN0_BG3
| WININ_WIN0_OBJ | WININ_WIN0_CLR);
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
@@ -3167,14 +3167,14 @@ static void MoveKeyboardCursor(void)
if (page != UNION_ROOM_KB_PAGE_REGISTER)
{
StartSpriteAnim(sSprites->keyboardCursor, 0);
- sSprites->keyboardCursor->pos1.x = x * 8 + 10;
- sSprites->keyboardCursor->pos1.y = y * 12 + 24;
+ sSprites->keyboardCursor->x = x * 8 + 10;
+ sSprites->keyboardCursor->y = y * 12 + 24;
}
else
{
StartSpriteAnim(sSprites->keyboardCursor, 2);
- sSprites->keyboardCursor->pos1.x = 24;
- sSprites->keyboardCursor->pos1.y = y * 12 + 24;
+ sSprites->keyboardCursor->x = 24;
+ sSprites->keyboardCursor->y = y * 12 + 24;
}
}
@@ -3231,7 +3231,7 @@ static void SpriteCB_TextEntryCursor(struct Sprite *sprite)
else
{
sprite->invisible = FALSE;
- sprite->pos1.x = pos * 8 + 76;
+ sprite->x = pos * 8 + 76;
}
}
@@ -3240,8 +3240,8 @@ static void SpriteCB_TextEntryArrow(struct Sprite *sprite)
if (++sprite->data[0] > 4)
{
sprite->data[0] = 0;
- if (++sprite->pos2.x > 4)
- sprite->pos2.x = 0;
+ if (++sprite->x2 > 4)
+ sprite->x2 = 0;
}
}
diff --git a/src/union_room_player_avatar.c b/src/union_room_player_avatar.c
index c012fd84d..671290e21 100644
--- a/src/union_room_player_avatar.c
+++ b/src/union_room_player_avatar.c
@@ -77,18 +77,27 @@ static const u8 sNextFacingDirection[] = {
[DIR_EAST] = DIR_NORTH
};
-// Local id 1 is the Nurse/Attendant, 2-9 are link players
-static const u8 sUnionRoomLocalIds[] = { 9, 8, 7, 2, 6, 5, 4, 3 };
-
-static const u16 sUnknown[] = {
- 0x2BF,
- 0x2C0,
- 0x2C1,
- 0x2C2,
- 0x2C3,
- 0x2C4,
- 0x2C5,
- 0x2C6
+static const u8 sUnionRoomLocalIds[] = {
+ LOCALID_UNION_ROOM_PLAYER_1,
+ LOCALID_UNION_ROOM_PLAYER_2,
+ LOCALID_UNION_ROOM_PLAYER_3,
+ LOCALID_UNION_ROOM_PLAYER_4,
+ LOCALID_UNION_ROOM_PLAYER_5,
+ LOCALID_UNION_ROOM_PLAYER_6,
+ LOCALID_UNION_ROOM_PLAYER_7,
+ LOCALID_UNION_ROOM_PLAYER_8
+};
+
+// Unused
+static const u16 sHidePlayerFlags[] = {
+ FLAG_HIDE_UNION_ROOM_PLAYER_1,
+ FLAG_HIDE_UNION_ROOM_PLAYER_2,
+ FLAG_HIDE_UNION_ROOM_PLAYER_3,
+ FLAG_HIDE_UNION_ROOM_PLAYER_4,
+ FLAG_HIDE_UNION_ROOM_PLAYER_5,
+ FLAG_HIDE_UNION_ROOM_PLAYER_6,
+ FLAG_HIDE_UNION_ROOM_PLAYER_7,
+ FLAG_HIDE_UNION_ROOM_PLAYER_8
};
static const u8 sMovement_UnionPlayerExit[2] = {
diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c
index 5d8f5ce24..cdcdfc5da 100644
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -708,7 +708,7 @@ static void FeedPokeblockToMon(void)
FREE_AND_SET_NULL(sMenu);
FreeAllWindowBuffers();
gMain.savedCallback = CB2_ReturnAndChooseMonToGivePokeblock;
- CB2_PreparePokeblockFeedScene();
+ PreparePokeblockFeedScene();
}
break;
}
@@ -1143,9 +1143,9 @@ static void LoadAndCreateUpDownSprites(void)
static void SpriteCB_UpDown(struct Sprite *sprite)
{
if (sprite->data[0] < 6)
- sprite->pos2.y -= 2;
+ sprite->y2 -= 2;
else if (sprite->data[0] < 12)
- sprite->pos2.y += 2;
+ sprite->y2 += 2;
if (++sprite->data[0] > 60)
{
@@ -1234,14 +1234,14 @@ static void UpdateMonPic(u8 loadId)
{
sMenu->curMonSpriteId = spriteId;
gSprites[sMenu->curMonSpriteId].callback = SpriteCB_MonPic;
- gSprites[sMenu->curMonSpriteId].pos2.y -= 34;
+ gSprites[sMenu->curMonSpriteId].y2 -= 34;
sMenu->curMonTileStart = (void*)(OBJ_VRAM0 + (sMenu->curMonSheet * 32));
sMenu->curMonPalette = (sMenu->curMonPalette * 16) + 0x100;
}
}
else
{
- Dma3CopyLarge16_(sMenu->partySheets[loadId], sMenu->curMonTileStart, 0x800);
+ Dma3CopyLarge16_(sMenu->partySheets[loadId], sMenu->curMonTileStart, MON_PIC_SIZE);
LoadPalette(sMenu->partyPalettes[loadId], sMenu->curMonPalette, 32);
}
}
@@ -1574,7 +1574,7 @@ static bool8 LoadNewSelection_MonToMon(void)
static void SpriteCB_MonPic(struct Sprite *sprite)
{
- sprite->pos1.x = sMenu->curMonXOffset + 38;
+ sprite->x = sMenu->curMonXOffset + 38;
}
static void SpriteCB_SelectionIconPokeball(struct Sprite *sprite)
@@ -1661,13 +1661,13 @@ static bool8 LoadConditionTitle(void)
// Literally the word "Condition", the title block that appears over the mon icon
static void SpriteCB_Condition(struct Sprite *sprite)
{
- s16 prevX = sprite->pos1.x;
+ s16 prevX = sprite->x;
- sprite->pos1.x += sprite->data[0];
- if ((prevX <= sprite->data[1] && sprite->pos1.x >= sprite->data[1])
- || (prevX >= sprite->data[1] && sprite->pos1.x <= sprite->data[1]))
+ sprite->x += sprite->data[0];
+ if ((prevX <= sprite->data[1] && sprite->x >= sprite->data[1])
+ || (prevX >= sprite->data[1] && sprite->x <= sprite->data[1]))
{
- sprite->pos1.x = sprite->data[1];
+ sprite->x = sprite->data[1];
sprite->callback = SpriteCallbackDummy;
}
}
diff --git a/src/wallclock.c b/src/wallclock.c
index 4d1c1fd8f..6f9bc02ae 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -147,7 +147,7 @@ static const struct SpritePalette sSpritePalettes_Clock[] =
static const struct OamData sOam_ClockHand =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.shape = SPRITE_SHAPE(64x64),
.size = SPRITE_SIZE(64x64),
.priority = 1,
@@ -199,7 +199,7 @@ static const struct SpriteTemplate sSpriteTemplate_HourHand =
static const struct OamData sOam_PeriodIndicator =
{
- .y = 160,
+ .y = DISPLAY_HEIGHT,
.shape = SPRITE_SHAPE(16x16),
.size = SPRITE_SIZE(16x16),
.priority = 3,
@@ -1029,8 +1029,8 @@ static void SpriteCB_MinuteHand(struct Sprite *sprite)
if (y > 128)
y |= 0xff00;
- sprite->pos2.x = x;
- sprite->pos2.y = y;
+ sprite->x2 = x;
+ sprite->y2 = y;
}
static void SpriteCB_HourHand(struct Sprite *sprite)
@@ -1049,8 +1049,8 @@ static void SpriteCB_HourHand(struct Sprite *sprite)
if (y > 128)
y |= 0xff00;
- sprite->pos2.x = x;
- sprite->pos2.y = y;
+ sprite->x2 = x;
+ sprite->y2 = y;
}
static void SpriteCB_PMIndicator(struct Sprite *sprite)
@@ -1077,8 +1077,8 @@ static void SpriteCB_PMIndicator(struct Sprite *sprite)
sprite->data[1]--;
}
}
- sprite->pos2.x = Cos2(sprite->data[1]) * 30 / 0x1000;
- sprite->pos2.y = Sin2(sprite->data[1]) * 30 / 0x1000;
+ sprite->x2 = Cos2(sprite->data[1]) * 30 / 0x1000;
+ sprite->y2 = Sin2(sprite->data[1]) * 30 / 0x1000;
}
static void SpriteCB_AMIndicator(struct Sprite *sprite)
@@ -1105,6 +1105,6 @@ static void SpriteCB_AMIndicator(struct Sprite *sprite)
sprite->data[1]--;
}
}
- sprite->pos2.x = Cos2(sprite->data[1]) * 30 / 0x1000;
- sprite->pos2.y = Sin2(sprite->data[1]) * 30 / 0x1000;
+ sprite->x2 = Cos2(sprite->data[1]) * 30 / 0x1000;
+ sprite->y2 = Sin2(sprite->data[1]) * 30 / 0x1000;
}
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index 9f81a3b3e..8bcb17605 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -108,7 +108,7 @@ static bool8 CheckFeebas(void)
if (Random() % 100 > 49) // 50% chance of encountering Feebas
return FALSE;
- FeebasSeedRng(gSaveBlock1Ptr->easyChatPairs[0].unk2);
+ FeebasSeedRng(gSaveBlock1Ptr->dewfordTrends[0].rand);
for (i = 0; i != NUM_FEEBAS_SPOTS;)
{
feebasSpots[i] = FeebasRandom() % 447;
@@ -162,7 +162,7 @@ static u8 ChooseWildMonIndex_Land(void)
return 8;
else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_8 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_9)
return 9;
- else if (rand == ENCOUNTER_CHANCE_LAND_MONS_SLOT_9)
+ else if (rand >= ENCOUNTER_CHANCE_LAND_MONS_SLOT_9 && rand < ENCOUNTER_CHANCE_LAND_MONS_SLOT_10)
return 10;
else
return 11;
@@ -215,7 +215,7 @@ static u8 ChooseWildMonIndex_Fishing(u8 rod)
wildMonIndex = 7;
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_7 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_8)
wildMonIndex = 8;
- if (rand == ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_8)
+ if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_8 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_9)
wildMonIndex = 9;
break;
}
diff --git a/src/wireless_communication_status_screen.c b/src/wireless_communication_status_screen.c
index 23d63832f..dbc71d634 100644
--- a/src/wireless_communication_status_screen.c
+++ b/src/wireless_communication_status_screen.c
@@ -174,8 +174,8 @@ static void CB2_InitWirelessCommunicationScreen(void)
SetVBlankCallback(NULL);
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sBgTemplates, ARRAY_COUNT(sBgTemplates));
- SetBgTilemapBuffer(1, Alloc(0x800));
- SetBgTilemapBuffer(0, Alloc(0x800));
+ SetBgTilemapBuffer(1, Alloc(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(0, Alloc(BG_SCREEN_SIZE));
DecompressAndLoadBgGfxUsingHeap(1, sBgTiles_Gfx, 0, 0, 0);
CopyToBgTilemapBuffer(1, sBgTiles_Tilemap, 0, 0);
InitWindows(sWindowTemplates);
@@ -319,13 +319,13 @@ static void WCSS_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *
{
case COLORMODE_NORMAL:
color[0] = TEXT_COLOR_TRANSPARENT;
- color[1] = TEXT_COLOR_DARK_GREY;
- color[2] = TEXT_COLOR_LIGHT_GREY;
+ color[1] = TEXT_COLOR_DARK_GRAY;
+ color[2] = TEXT_COLOR_LIGHT_GRAY;
break;
case COLORMODE_WHITE_LGRAY:
color[0] = TEXT_COLOR_TRANSPARENT;
color[1] = TEXT_COLOR_WHITE;
- color[2] = TEXT_COLOR_LIGHT_GREY;
+ color[2] = TEXT_COLOR_LIGHT_GRAY;
break;
case COLORMODE_RED:
color[0] = TEXT_COLOR_TRANSPARENT;
@@ -340,7 +340,7 @@ static void WCSS_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *
case COLORMODE_WHITE_DGRAY:
color[0] = TEXT_COLOR_TRANSPARENT;
color[1] = TEXT_COLOR_WHITE;
- color[2] = TEXT_COLOR_DARK_GREY;
+ color[2] = TEXT_COLOR_DARK_GRAY;
break;
}