summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2020-12-31 00:40:45 -0500
committerGitHub <noreply@github.com>2020-12-31 00:40:45 -0500
commitec85c01e7c6d15060eddcc653db33a4b317646d2 (patch)
tree4266c43bcdc1c80c52def44e1470182d3f1c665c /src
parent093610b46e99b517a416ccd5a572054dff09801b (diff)
parent0c74e2097ffbe8395d6f3659c2a49fc829d69b99 (diff)
Merge branch 'master' into doc-factscreen
Diffstat (limited to 'src')
-rw-r--r--src/AgbRfu_LinkManager.c4
-rw-r--r--src/agb_flash.c50
-rw-r--r--src/apprentice.c5
-rw-r--r--src/battle_ai_script_commands.c20
-rw-r--r--src/battle_ai_switch_items.c1
-rw-r--r--src/battle_anim_bug.c29
-rw-r--r--src/battle_anim_dark.c2
-rw-r--r--src/battle_anim_effects_1.c9
-rwxr-xr-xsrc/battle_anim_effects_3.c13
-rw-r--r--src/battle_anim_flying.c459
-rw-r--r--src/battle_anim_mons.c1
-rw-r--r--src/battle_anim_sound_tasks.c1
-rwxr-xr-xsrc/battle_anim_throw.c267
-rw-r--r--src/battle_anim_water.c89
-rw-r--r--src/battle_controller_link_opponent.c42
-rw-r--r--src/battle_controller_link_partner.c8
-rw-r--r--src/battle_controller_opponent.c54
-rw-r--r--src/battle_controller_player.c103
-rw-r--r--src/battle_controller_player_partner.c8
-rw-r--r--src/battle_controller_recorded_opponent.c37
-rw-r--r--src/battle_controller_recorded_player.c31
-rw-r--r--src/battle_controller_safari.c14
-rw-r--r--src/battle_controller_wally.c23
-rw-r--r--src/battle_controllers.c1
-rw-r--r--src/battle_dome.c369
-rw-r--r--src/battle_factory.c13
-rw-r--r--src/battle_factory_screen.c22
-rw-r--r--src/battle_gfx_sfx_util.c58
-rw-r--r--src/battle_interface.c1
-rw-r--r--src/battle_intro.c4
-rw-r--r--src/battle_main.c801
-rw-r--r--src/battle_message.c3
-rw-r--r--src/battle_pike.c1
-rw-r--r--src/battle_pyramid.c9
-rw-r--r--src/battle_pyramid_bag.c26
-rw-r--r--src/battle_records.c4
-rw-r--r--src/battle_script_commands.c122
-rw-r--r--src/battle_setup.c4
-rw-r--r--src/battle_tent.c12
-rw-r--r--src/battle_tower.c155
-rw-r--r--src/battle_transition.c10
-rw-r--r--src/battle_tv.c339
-rw-r--r--src/battle_util.c633
-rw-r--r--src/berry.c2
-rw-r--r--src/berry_blender.c20
-rwxr-xr-xsrc/berry_crush.c799
-rw-r--r--src/berry_fix_program.c8
-rw-r--r--src/berry_tag_screen.c4
-rw-r--r--src/birch_pc.c1
-rw-r--r--src/braille_puzzles.c1
-rw-r--r--src/cable_car.c666
-rw-r--r--src/cable_club.c10
-rw-r--r--src/contest.c90
-rw-r--r--src/contest_ai.c10
-rw-r--r--src/contest_painting.c41
-rw-r--r--src/contest_util.c500
-rw-r--r--src/credits.c5
-rw-r--r--src/crt0.s4
-rw-r--r--src/data.c6
-rw-r--r--src/data/bard_music/pokemon.h1
-rw-r--r--src/data/battle_frontier/trainer_hill.h496
-rw-r--r--src/data/battle_moves.h340
-rw-r--r--src/data/contest_opponents.h1
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_pokemon.h2
-rwxr-xr-xsrc/data/easy_chat/easy_chat_group_pokemon2.h2
-rwxr-xr-xsrc/data/field_effects/field_effect_objects.h2
-rw-r--r--src/data/graphics/rayquaza_scene.h135
-rw-r--r--src/data/graphics/trainers.h8
-rw-r--r--src/data/lilycove_lady.h3
-rwxr-xr-xsrc/data/object_events/object_event_graphics.h128
-rwxr-xr-xsrc/data/object_events/object_event_graphics_info.h490
-rwxr-xr-xsrc/data/object_events/object_event_graphics_info_pointers.h8
-rw-r--r--src/data/pokemon/item_effects.h14
-rw-r--r--src/data/pokemon/tmhm_learnsets.h2
-rw-r--r--src/data/region_map/city_map_entries.h2
-rw-r--r--src/data/region_map/city_map_tilemaps.h2
-rw-r--r--src/data/region_map/region_map_entries.h426
-rw-r--r--src/data/trainer_graphics/back_pic_tables.h20
-rw-r--r--src/data/trainer_graphics/front_pic_tables.h4
-rwxr-xr-xsrc/data/wild_encounters.json8
-rw-r--r--src/daycare.c19
-rw-r--r--src/decompress.c1
-rw-r--r--src/decoration.c31
-rw-r--r--src/dewford_trend.c19
-rw-r--r--src/diploma.c2
-rw-r--r--src/dodrio_berry_picking.c21
-rw-r--r--src/easy_chat.c83
-rw-r--r--src/egg_hatch.c2
-rwxr-xr-xsrc/ereader_helpers.c1
-rwxr-xr-xsrc/ereader_screen.c10
-rw-r--r--src/event_object_movement.c574
-rw-r--r--src/evolution_scene.c19
-rw-r--r--src/field_effect.c15
-rwxr-xr-xsrc/field_effect_helpers.c10
-rw-r--r--src/field_player_avatar.c15
-rw-r--r--src/field_poison.c1
-rw-r--r--src/field_special_scene.c2
-rw-r--r--src/field_specials.c45
-rw-r--r--src/field_tasks.c24
-rw-r--r--src/fieldmap.c24
-rw-r--r--src/fldeff_cut.c13
-rw-r--r--src/frontier_pass.c67
-rw-r--r--src/frontier_util.c260
-rw-r--r--src/graphics.c23
-rw-r--r--src/hall_of_fame.c13
-rw-r--r--src/intro.c1
-rw-r--r--src/intro_credits_graphics.c4
-rw-r--r--src/item.c224
-rwxr-xr-xsrc/item_menu.c66
-rwxr-xr-xsrc/item_use.c6
-rw-r--r--src/link.c16
-rw-r--r--src/link_rfu_2.c71
-rw-r--r--src/link_rfu_3.c10
-rw-r--r--src/list_menu.c24
-rw-r--r--src/lottery_corner.c1
-rw-r--r--src/m4a.c433
-rw-r--r--src/m4a_1.s804
-rw-r--r--src/mail.c3
-rw-r--r--src/mail_data.c1
-rw-r--r--src/main.c22
-rw-r--r--src/main_menu.c17
-rw-r--r--src/map_name_popup.c8
-rw-r--r--src/match_call.c15
-rw-r--r--src/menu.c183
-rw-r--r--src/menu_helpers.c16
-rw-r--r--src/menu_specialized.c88
-rw-r--r--src/metatile_behavior.c17
-rwxr-xr-xsrc/mevent2.c1
-rw-r--r--src/mevent_801BAAC.c1
-rw-r--r--src/mirage_tower.c166
-rw-r--r--src/mon_markings.c12
-rw-r--r--src/move_relearner.c4
-rw-r--r--src/multiboot.c33
-rw-r--r--src/mystery_event_menu.c10
-rw-r--r--src/mystery_event_script.c1
-rw-r--r--src/mystery_gift.c10
-rw-r--r--src/option_menu.c26
-rw-r--r--src/overworld.c57
-rw-r--r--src/palette.c86
-rwxr-xr-xsrc/party_menu.c128
-rw-r--r--src/player_pc.c28
-rw-r--r--src/pokeball.c6
-rw-r--r--src/pokeblock.c8
-rw-r--r--src/pokeblock_feed.c2
-rw-r--r--src/pokedex.c250
-rwxr-xr-xsrc/pokedex_area_screen.c5
-rw-r--r--src/pokemon.c84
-rw-r--r--src/pokemon_animation.c17
-rw-r--r--src/pokemon_icon.c1
-rwxr-xr-xsrc/pokemon_jump.c7
-rw-r--r--src/pokemon_size_record.c1
-rw-r--r--src/pokemon_storage_system.c192
-rw-r--r--src/pokemon_summary_screen.c71
-rw-r--r--src/pokenav.c154
-rw-r--r--src/pokenav_conditions_1.c455
-rw-r--r--src/pokenav_conditions_2.c589
-rw-r--r--src/pokenav_conditions_3.c459
-rw-r--r--src/pokenav_main_menu.c307
-rwxr-xr-xsrc/pokenav_match_call_1.c76
-rwxr-xr-xsrc/pokenav_match_call_2.c147
-rw-r--r--src/pokenav_match_call_data.c13
-rw-r--r--src/pokenav_match_call_ui.c432
-rw-r--r--src/pokenav_menu_handler_1.c154
-rw-r--r--src/pokenav_menu_handler_2.c536
-rwxr-xr-xsrc/pokenav_region_map.c60
-rw-r--r--src/pokenav_ribbons_1.c426
-rw-r--r--src/pokenav_ribbons_2.c364
-rw-r--r--src/rayquaza_scene.c2131
-rw-r--r--src/record_mixing.c18
-rw-r--r--src/recorded_battle.c2
-rw-r--r--src/region_map.c80
-rw-r--r--src/reset_rtc_screen.c16
-rw-r--r--src/reshow_battle_screen.c1
-rw-r--r--src/roamer.c1
-rw-r--r--src/roulette.c6
-rw-r--r--src/save.c4
-rw-r--r--src/save_failed_screen.c4
-rw-r--r--src/scanline_effect.c8
-rw-r--r--src/scrcmd.c8
-rw-r--r--src/script.c6
-rw-r--r--src/script_menu.c2
-rwxr-xr-xsrc/script_pokemon_util.c1
-rw-r--r--src/secret_base.c9
-rwxr-xr-xsrc/shop.c14
-rw-r--r--src/slot_machine.c4
-rw-r--r--src/sound.c36
-rw-r--r--src/start_menu.c17
-rw-r--r--src/starter_choose.c1
-rw-r--r--src/task.c4
-rw-r--r--src/title_screen.c8
-rw-r--r--src/trade.c30
-rwxr-xr-xsrc/trainer_card.c8
-rw-r--r--src/trainer_hill.c26
-rw-r--r--src/trainer_pokemon_sprites.c1
-rw-r--r--src/trainer_see.c16
-rw-r--r--src/tv.c16
-rw-r--r--src/union_room.c41
-rwxr-xr-xsrc/union_room_chat.c24
-rw-r--r--src/unk_text_util_2.c10
-rw-r--r--src/use_pokeblock.c14
-rw-r--r--src/walda_phrase.c6
-rw-r--r--src/wallclock.c508
-rw-r--r--src/wild_encounter.c1
203 files changed, 9482 insertions, 10421 deletions
diff --git a/src/AgbRfu_LinkManager.c b/src/AgbRfu_LinkManager.c
index 42cc9aea3..f6ebcc726 100644
--- a/src/AgbRfu_LinkManager.c
+++ b/src/AgbRfu_LinkManager.c
@@ -352,7 +352,7 @@ static bool8 rfu_LMAN_linkWatcher(u16 REQ_commandID)
{
for (i = 0; i < RFU_CHILD_MAX; i++)
{
- if (bm_linkLossSlot & (1 << i))
+ if ((bm_linkLossSlot >> i) & 1)
{
lman.linkRecoveryTimer.active |= (1 << i);
lman.linkRecoveryTimer.count[i] = lman.linkRecoveryTimer.count_max;
@@ -396,7 +396,7 @@ static bool8 rfu_LMAN_linkWatcher(u16 REQ_commandID)
bm_disconnectSlot = 0;
for (i = 0; i < RFU_CHILD_MAX; i++)
{
- if ((lman.linkRecoveryTimer.active) & (1 << i) && lman.linkRecoveryTimer.count[i] && --lman.linkRecoveryTimer.count[i] == 0)
+ if ((lman.linkRecoveryTimer.active >> i) & 1 && lman.linkRecoveryTimer.count[i] && --lman.linkRecoveryTimer.count[i] == 0)
{
lman.linkRecoveryTimer.active &= ~(1 << i);
bm_disconnectSlot |= (1 << i);
diff --git a/src/agb_flash.c b/src/agb_flash.c
index 15ab0932d..6b9381c70 100644
--- a/src/agb_flash.c
+++ b/src/agb_flash.c
@@ -41,7 +41,7 @@ u16 ReadFlashId(void)
u8 (*readFlash1)(u8 *);
SetReadFlash1(readFlash1Buffer);
- readFlash1 = (u8 (*)(u8 *))((uintptr_t)readFlash1Buffer + 1);
+ readFlash1 = (u8 (*)(u8 *))((s32)readFlash1Buffer + 1);
// Enter ID mode.
FLASH_WRITE(0x5555, 0xAA);
@@ -113,12 +113,12 @@ void SetReadFlash1(u16 *dest)
u16 *src;
u16 i;
- PollFlashStatus = (u8 (*)(u8 *))((uintptr_t)dest + 1);
+ PollFlashStatus = (u8 (*)(u8 *))((s32)dest + 1);
src = (u16 *)ReadFlash1;
- src = (u16 *)((uintptr_t)src ^ 1);
+ src = (u16 *)((s32)src ^ 1);
- i = ((uintptr_t)SetReadFlash1 - (uintptr_t)ReadFlash1) >> 1;
+ i = ((s32)SetReadFlash1 - (s32)ReadFlash1) >> 1;
while (i != 0)
{
@@ -140,9 +140,9 @@ void ReadFlash(u16 sectorNum, u32 offset, u8 *dest, u32 size)
{
u8 *src;
u16 i;
- u16 readFlash_Core_Buffer[0x40];
- u16 *funcSrc;
- u16 *funcDest;
+ vu16 readFlash_Core_Buffer[0x40];
+ vu16 *funcSrc;
+ vu16 *funcDest;
void (*readFlash_Core)(vu8 *, u8 *, u32);
REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | WAITCNT_SRAM_8;
@@ -153,11 +153,11 @@ void ReadFlash(u16 sectorNum, u32 offset, u8 *dest, u32 size)
sectorNum %= SECTORS_PER_BANK;
}
- funcSrc = (u16 *)ReadFlash_Core;
- funcSrc = (u16 *)((uintptr_t)funcSrc ^ 1);
+ funcSrc = (vu16 *)ReadFlash_Core;
+ funcSrc = (vu16 *)((s32)funcSrc ^ 1);
funcDest = readFlash_Core_Buffer;
- i = ((uintptr_t)ReadFlash - (uintptr_t)ReadFlash_Core) >> 1;
+ i = ((s32)ReadFlash - (s32)ReadFlash_Core) >> 1;
while (i != 0)
{
@@ -165,7 +165,7 @@ void ReadFlash(u16 sectorNum, u32 offset, u8 *dest, u32 size)
i--;
}
- readFlash_Core = (void (*)(vu8 *, u8 *, u32))((uintptr_t)readFlash_Core_Buffer + 1);
+ readFlash_Core = (void (*)(vu8 *, u8 *, u32))((s32)readFlash_Core_Buffer + 1);
src = FLASH_BASE + (sectorNum << gFlash->sector.shift) + offset;
@@ -186,9 +186,9 @@ u32 VerifyFlashSector_Core(u8 *src, u8 *tgt, u32 size)
u32 VerifyFlashSector(u16 sectorNum, u8 *src)
{
u16 i;
- u16 verifyFlashSector_Core_Buffer[0x80];
- u16 *funcSrc;
- u16 *funcDest;
+ vu16 verifyFlashSector_Core_Buffer[0x80];
+ vu16 *funcSrc;
+ vu16 *funcDest;
u8 *tgt;
u16 size;
u32 (*verifyFlashSector_Core)(u8 *, u8 *, u32);
@@ -201,11 +201,11 @@ u32 VerifyFlashSector(u16 sectorNum, u8 *src)
sectorNum %= SECTORS_PER_BANK;
}
- funcSrc = (u16 *)VerifyFlashSector_Core;
- funcSrc = (u16 *)((uintptr_t)funcSrc ^ 1);
+ funcSrc = (vu16 *)VerifyFlashSector_Core;
+ funcSrc = (vu16 *)((s32)funcSrc ^ 1);
funcDest = verifyFlashSector_Core_Buffer;
- i = (u16)(((uintptr_t)VerifyFlashSector - (uintptr_t)VerifyFlashSector_Core) >> 1);
+ i = ((s32)VerifyFlashSector - (s32)VerifyFlashSector_Core) >> 1;
while (i != 0)
{
@@ -213,7 +213,7 @@ u32 VerifyFlashSector(u16 sectorNum, u8 *src)
i--;
}
- verifyFlashSector_Core = (u32 (*)(u8 *, u8 *, u32))((uintptr_t)verifyFlashSector_Core_Buffer + 1);
+ verifyFlashSector_Core = (u32 (*)(u8 *, u8 *, u32))((s32)verifyFlashSector_Core_Buffer + 1);
tgt = FLASH_BASE + (sectorNum << gFlash->sector.shift);
size = gFlash->sector.size;
@@ -224,9 +224,9 @@ u32 VerifyFlashSector(u16 sectorNum, u8 *src)
u32 VerifyFlashSectorNBytes(u16 sectorNum, u8 *src, u32 n)
{
u16 i;
- u16 verifyFlashSector_Core_Buffer[0x80];
- u16 *funcSrc;
- u16 *funcDest;
+ vu16 verifyFlashSector_Core_Buffer[0x80];
+ vu16 *funcSrc;
+ vu16 *funcDest;
u8 *tgt;
u32 (*verifyFlashSector_Core)(u8 *, u8 *, u32);
@@ -238,11 +238,11 @@ u32 VerifyFlashSectorNBytes(u16 sectorNum, u8 *src, u32 n)
REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | WAITCNT_SRAM_8;
- funcSrc = (u16 *)VerifyFlashSector_Core;
- funcSrc = (u16 *)((uintptr_t)funcSrc ^ 1);
+ funcSrc = (vu16 *)VerifyFlashSector_Core;
+ funcSrc = (vu16 *)((s32)funcSrc ^ 1);
funcDest = verifyFlashSector_Core_Buffer;
- i = ((uintptr_t)VerifyFlashSector - (uintptr_t)VerifyFlashSector_Core) >> 1;
+ i = ((s32)VerifyFlashSector - (s32)VerifyFlashSector_Core) >> 1;
while (i != 0)
{
@@ -250,7 +250,7 @@ u32 VerifyFlashSectorNBytes(u16 sectorNum, u8 *src, u32 n)
i--;
}
- verifyFlashSector_Core = (u32 (*)(u8 *, u8 *, u32))((uintptr_t)verifyFlashSector_Core_Buffer + 1);
+ verifyFlashSector_Core = (u32 (*)(u8 *, u8 *, u32))((s32)verifyFlashSector_Core_Buffer + 1);
tgt = FLASH_BASE + (sectorNum << gFlash->sector.shift);
diff --git a/src/apprentice.c b/src/apprentice.c
index 7f493a136..ad157f301 100644
--- a/src/apprentice.c
+++ b/src/apprentice.c
@@ -27,7 +27,6 @@
#include "constants/items.h"
#include "constants/pokemon.h"
#include "constants/songs.h"
-#include "constants/species.h"
#include "constants/trainers.h"
#include "constants/moves.h"
@@ -1297,13 +1296,13 @@ const u8 *GetApprenticeNameInLanguage(u32 apprenticeId, s32 language)
// Functionally unused
static void Task_SwitchToFollowupFuncAfterButtonPress(u8 taskId)
{
- if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
SwitchTaskToFollowupFunc(taskId);
}
static void Task_ExecuteFuncAfterButtonPress(u8 taskId)
{
- if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
{
gApprenticeFunc = (void*)(u32)(((u16)gTasks[taskId].data[0] | (gTasks[taskId].data[1] << 16)));
gApprenticeFunc();
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index 748e4729a..b7679429c 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -14,7 +14,6 @@
#include "constants/battle_ai.h"
#include "constants/battle_move_effects.h"
#include "constants/moves.h"
-#include "constants/species.h"
#define AI_ACTION_DONE 0x0001
#define AI_ACTION_FLEE 0x0002
@@ -451,7 +450,16 @@ static u8 ChooseMoveOrAction_Doubles(void)
{
s32 i;
s32 j;
+#ifndef BUGFIX
s32 scriptsToRun;
+#else
+ // the value assigned to this is a u32 (aiFlags)
+ // this becomes relevant because aiFlags can have bit 31 set
+ // and scriptsToRun is shifted
+ // this never happens in the vanilla game because bit 31 is
+ // only set when it's the first battle
+ u32 scriptsToRun;
+#endif
s16 bestMovePointsForTarget[MAX_BATTLERS_COUNT];
s8 mostViableTargetsArray[MAX_BATTLERS_COUNT];
u8 actionOrMoveIndex[MAX_BATTLERS_COUNT];
@@ -616,8 +624,8 @@ static void RecordLastUsedMoveByTarget(void)
{
if (BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i] == gLastMoves[gBattlerTarget])
break;
- if (BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i] != gLastMoves[gBattlerTarget] // HACK: This redundant condition is a hack to make the asm match.
- && BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i] == MOVE_NONE)
+
+ if (BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i] == MOVE_NONE)
{
BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i] = gLastMoves[gBattlerTarget];
break;
@@ -1605,8 +1613,10 @@ static void Cmd_if_status_not_in_party(void)
if (species != SPECIES_NONE && species != SPECIES_EGG && hp != 0 && status == statusToCompareTo)
{
- gAIScriptPtr += 10; // UB: Still bugged in Emerald. Uncomment the return statement to fix.
- // return;
+ gAIScriptPtr += 10;
+ #ifdef UBFIX
+ return;
+ #endif
}
}
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
index 2a5a83e0d..1663c2561 100644
--- a/src/battle_ai_switch_items.c
+++ b/src/battle_ai_switch_items.c
@@ -9,7 +9,6 @@
#include "constants/item_effects.h"
#include "constants/items.h"
#include "constants/moves.h"
-#include "constants/species.h"
// this file's functions
static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng);
diff --git a/src/battle_anim_bug.c b/src/battle_anim_bug.c
index 5e8a8b2a7..b8aba8976 100644
--- a/src/battle_anim_bug.c
+++ b/src/battle_anim_bug.c
@@ -372,11 +372,14 @@ static void AnimTranslateStinger(struct Sprite *sprite)
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
}
- else if (GetBattlerSide(gBattleAnimAttacker))
+ else
{
- gBattleAnimArgs[2] = -gBattleAnimArgs[2];
- gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ if (GetBattlerSide(gBattleAnimAttacker))
+ {
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ }
}
if (!IsContest() && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget))
@@ -440,24 +443,28 @@ static void AnimMissileArc_Step(struct Sprite *sprite)
else
{
s16 tempData[8];
- s16 xpos, ypos;
+ u16 *data = sprite->data;
+ u16 x1 = sprite->pos1.x;
+ s16 x2 = sprite->pos2.x;
+ u16 y1 = sprite->pos1.y;
+ s16 y2 = sprite->pos2.y;
int i;
for (i = 0; i < 8; i++)
- tempData[i] = sprite->data[i];
+ tempData[i] = data[i];
- xpos = sprite->pos1.x + sprite->pos2.x;
- ypos = sprite->pos1.y + sprite->pos2.y;
+ x2 += x1;
+ y2 += y1;
if (!TranslateAnimHorizontalArc(sprite))
{
- u16 rotation = ArcTan2Neg(sprite->pos1.x + sprite->pos2.x - xpos, //Isn't this zero lol
- sprite->pos1.y + sprite->pos2.y - ypos);
+ u16 rotation = ArcTan2Neg(sprite->pos1.x + sprite->pos2.x - x2,
+ sprite->pos1.y + sprite->pos2.y - y2);
rotation += 0xC000;
TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rotation);
for (i = 0; i < 8; i++)
- sprite->data[i] = tempData[i];
+ data[i] = tempData[i];
}
}
}
diff --git a/src/battle_anim_dark.c b/src/battle_anim_dark.c
index faa5884a5..7253b5247 100644
--- a/src/battle_anim_dark.c
+++ b/src/battle_anim_dark.c
@@ -635,8 +635,6 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId)
static void AnimTask_MoveTargetMementoShadow_Step(u8 taskId)
{
- u8 pos;
- u16 i;
struct Task *task = &gTasks[taskId];
switch (task->data[0])
diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c
index c8d43e12e..04bab2f85 100644
--- a/src/battle_anim_effects_1.c
+++ b/src/battle_anim_effects_1.c
@@ -3967,25 +3967,24 @@ static void AnimProtect(struct Sprite* sprite)
static void AnimProtect_Step(struct Sprite *sprite)
{
- int i, savedPal;
+ int i, id, savedPal;
sprite->data[5] += 96;
sprite->pos2.x = -(sprite->data[5] >> 8);
if (++sprite->data[1] > 1)
{
- int id;
sprite->data[1] = 0;
savedPal = gPlttBufferFaded[sprite->data[2] + 1];
i = 0;
- do
+ while (i < 6)
{
id = sprite->data[2] + ++i;
gPlttBufferFaded[id] = gPlttBufferFaded[id + 1];
- } while (i < 6);
+ }
gPlttBufferFaded[sprite->data[2] + 7] = savedPal;
}
- if (sprite->data[7] > 6 && sprite->data[0] > 0 && ++sprite->data[6] > 1)
+ if (sprite->data[7] > 6 && sprite->data[0] >0 && ++sprite->data[6] > 1)
{
sprite->data[6] = 0;
sprite->data[7] -= 1;
diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c
index bad46f144..9e50a8477 100755
--- a/src/battle_anim_effects_3.c
+++ b/src/battle_anim_effects_3.c
@@ -21,7 +21,6 @@
#include "constants/battle_anim.h"
#include "constants/rgb.h"
#include "constants/songs.h"
-#include "constants/species.h"
#include "constants/weather.h"
extern const struct SpriteTemplate gThoughtBubbleSpriteTemplate;
@@ -2291,7 +2290,7 @@ void AnimTask_TransformMon(u8 taskId)
else
position = GetBattlerPosition(gBattleAnimAttacker);
- src = gMonSpritesGfxPtr->sprites[position] + (gBattleMonForms[gBattleAnimAttacker] << 11);
+ src = gMonSpritesGfxPtr->sprites.ptr[position] + (gBattleMonForms[gBattleAnimAttacker] << 11);
dest = animBg.bgTiles;
CpuCopy32(src, dest, 0x800);
LoadBgTiles(1, animBg.bgTiles, 0x800, animBg.tilesOffset);
@@ -5007,7 +5006,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
int otId;
u16 species;
u8 subpriority;
- u8 isBackPic;
+ bool8 isBackPic;
s16 x;
switch (gTasks[taskId].data[0])
@@ -5035,7 +5034,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
otId = gContestResources->moveAnim->otId;
species = gContestResources->moveAnim->species;
subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker);
- isBackPic = 0;
+ isBackPic = FALSE;
x = -32;
}
else
@@ -5050,7 +5049,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1;
- isBackPic = 0;
+ isBackPic = FALSE;
x = 272;
}
else
@@ -5063,7 +5062,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
species = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies;
subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority - 1;
- isBackPic = 1;
+ isBackPic = TRUE;
x = -32;
}
}
@@ -5138,7 +5137,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
gSprites[spriteId].pos2.x = 0;
}
- gTasks[taskId].data[1] = (u8)gTasks[taskId].data[1];
+ gTasks[taskId].data[1] &= 0xFF;
if (gSprites[spriteId].pos2.x == 0)
DestroyAnimVisualTask(taskId);
break;
diff --git a/src/battle_anim_flying.c b/src/battle_anim_flying.c
index 3fc4f20f2..f8d47f4ec 100644
--- a/src/battle_anim_flying.c
+++ b/src/battle_anim_flying.c
@@ -380,18 +380,21 @@ static void AnimTask_AnimateGustTornadoPalette_Step(u8 taskId)
{
u8 data2;
u16 temp;
+ int i, base;
if (gTasks[taskId].data[10]++ == gTasks[taskId].data[1])
{
- int i, base;
gTasks[taskId].data[10] = 0;
data2 = gTasks[taskId].data[2];
temp = gPlttBufferFaded[16 * data2 + 0x108];
i = 7;
base = data2 * 16;
- for (; i > 0; --i)
+ do
+ {
gPlttBufferFaded[base + 0x101 + i] = gPlttBufferFaded[base + 0x100 + i];
+ i--;
+ } while (i > 0);
gPlttBufferFaded[base + 0x101] = temp;
}
@@ -533,16 +536,17 @@ static void AnimFlyBallAttack_Step(struct Sprite *sprite)
void DestroyAnimSpriteAfterTimer(struct Sprite *sprite)
{
- if (sprite->data[0]-- > 0)
- return;
- if (sprite->oam.affineMode & ST_OAM_AFFINE_ON_MASK)
+ if (sprite->data[0]-- <= 0)
{
- FreeOamMatrix(sprite->oam.matrixNum);
- sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
- }
+ if (sprite->oam.affineMode & ST_OAM_AFFINE_ON_MASK)
+ {
+ FreeOamMatrix(sprite->oam.matrixNum);
+ sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
+ }
- DestroySprite(sprite);
- gAnimVisualTaskCount--;
+ DestroySprite(sprite);
+ gAnimVisualTaskCount--;
+ }
}
struct FeatherDanceData
@@ -566,27 +570,30 @@ struct FeatherDanceData
static void AnimFallingFeather(struct Sprite *sprite)
{
u8 battler, matrixNum, sinIndex;
- s16 sinVal;
+ s16 spriteCoord;
struct FeatherDanceData *data = (struct FeatherDanceData *)sprite->data;
- battler = (gBattleAnimArgs[7] & 0x100) ? gBattleAnimAttacker : gBattleAnimTarget;
+ if (gBattleAnimArgs[7] & 0x100)
+ battler = gBattleAnimAttacker;
+ else
+ battler = gBattleAnimTarget;
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_HEIGHT) + gBattleAnimArgs[0];
- sinVal = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_WIDTH);
- sprite->pos1.y = sinVal + gBattleAnimArgs[1];
+ spriteCoord = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_WIDTH);
+ sprite->pos1.y = spriteCoord + gBattleAnimArgs[1];
- data->unk8 = (u16)(sprite->pos1.y) << 8;
- data->unkE_1 = (u16)(sinVal + gBattleAnimArgs[6]);
+ data->unk8 = sprite->pos1.y << 8;
+ data->unkE_1 = spriteCoord + gBattleAnimArgs[6];
data->unk0_0c = 1;
- data->unk2 = (u16)(gBattleAnimArgs[2] & 0xFF);
- data->unkA = (u16)((gBattleAnimArgs[2] >> 8) & 0xFF) ;
+ data->unk2 = gBattleAnimArgs[2] & 0xFF;
+ data->unkA = (gBattleAnimArgs[2] >> 8) & 0xFF;
data->unk4 = gBattleAnimArgs[3];
- data->unk6 = (u16)gBattleAnimArgs[4];
- *(u16*)(data->unkC) = (u16)gBattleAnimArgs[5];
+ data->unk6 = gBattleAnimArgs[4];
+ *(u16*)(data->unkC) = gBattleAnimArgs[5];
if (data->unk2 >= 64 && data->unk2 <= 191)
{
@@ -621,16 +628,16 @@ static void AnimFallingFeather(struct Sprite *sprite)
}
}
- data->unk0_1 = data->unk2/64;
- sprite->pos2.x = (gSineTable[data->unk2] * (s32)data->unkC[0]) >> 8;
+ data->unk0_1 = data->unk2 >> 6;
+ sprite->pos2.x = (gSineTable[data->unk2] * data->unkC[0]) >> 8;
matrixNum = sprite->oam.matrixNum;
sinIndex = (-sprite->pos2.x >> 1) + data->unkA;
- sinVal = gSineTable[sinIndex];
+ spriteCoord = gSineTable[sinIndex];
gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
- gOamMatrices[matrixNum].b = sinVal;
- gOamMatrices[matrixNum].c = -sinVal;
+ gOamMatrices[matrixNum].b = spriteCoord;
+ gOamMatrices[matrixNum].c = -spriteCoord;
sprite->callback = sub_810E520;
}
@@ -647,238 +654,240 @@ static void sub_810E520(struct Sprite *sprite)
data->unk0_0a = 0;
data->unk1 = 0;
}
- return;
}
-
- switch (data->unk2 / 64)
+ else
{
- case 0:
- if ((u8)data->unk0_1 == 1) // this must be cast to u8
+ switch (data->unk2 / 64)
{
- data->unk0_0d = 1;
- data->unk0_0a = 1;
- data->unk1 = 0;
- }
- else if ((u8)data->unk0_1 == 3)
- {
- data->unk0_0b ^= 1;
- data->unk0_0a = 1;
- data->unk1 = 0;
- }
- else if (data->unk0_0d)
- {
- sprite->hFlip ^= 1;
- sprite->animNum = sprite->hFlip;
- sprite->animBeginning = TRUE;
- sprite->animEnded = FALSE;
- if (data->unk0_0c)
+ case 0:
+ if ((u8)data->unk0_1 == 1) //casts to u8 here are necessary for matching
{
- if (!IsContest())
- {
- if (!data->unkE_0)
- {
- sprite->oam.priority--;
- data->unkE_0 ^= 1;
- }
- else
- {
- sprite->oam.priority++;
- data->unkE_0 ^= 1;
- }
- }
- else
- {
- if (!data->unkE_0)
- {
- sprite->subpriority -= 12;
- data->unkE_0 ^= 1;
- }
- else
- {
- sprite->subpriority += 12;
- data->unkE_0 ^= 1;
- }
- }
+ data->unk0_0d = 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
}
- data->unk0_0d = 0;
- }
- data->unk0_1 = 0;
- break;
- case 1:
- if ((u8)data->unk0_1 == 0)
- {
- data->unk0_0d = 1;
- data->unk0_0a = 1;
- data->unk1 = 0;
- }
- else if ((u8)data->unk0_1 == 2)
- {
- data->unk0_0a = 1;
- data->unk1 = 0;
- }
- else if (data->unk0_0d)
- {
- sprite->hFlip ^= 1;
- sprite->animNum = sprite->hFlip;
- sprite->animBeginning = TRUE;
- sprite->animEnded = FALSE;
- if (data->unk0_0c)
+ else if ((u8)data->unk0_1 == 3)
{
- if (!IsContest())
- {
- if (!data->unkE_0)
- {
- sprite->oam.priority--;
- data->unkE_0 ^= 1;
- }
- else
- {
- sprite->oam.priority++;
- data->unkE_0 ^= 1;
- }
- }
- else
- {
- if (!data->unkE_0)
- {
- sprite->subpriority -= 12;
- data->unkE_0 ^= 1;
- }
- else
- {
- sprite->subpriority += 12;
- data->unkE_0 ^= 1;
- }
- }
+ data->unk0_0b ^= 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
}
- data->unk0_0d = 0;
- }
- data->unk0_1 = 1;
- break;
- case 2:
- if ((u8)data->unk0_1 == 3)
- {
- data->unk0_0d = 1;
- data->unk0_0a = 1;
- data->unk1 = 0;
- }
- else if ((u8)data->unk0_1 == 1)
- {
- data->unk0_0a = 1;
- data->unk1 = 0;
- }
- else if (data->unk0_0d)
- {
- sprite->hFlip ^= 1;
- sprite->animNum = sprite->hFlip;
- sprite->animBeginning = TRUE;
- sprite->animEnded = FALSE;
- if (data->unk0_0c)
+ else if (data->unk0_0d)
{
- if (!IsContest())
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+ sprite->animBeginning = TRUE;
+ sprite->animEnded = FALSE;
+ if (data->unk0_0c)
{
- if (!data->unkE_0)
+ if (!IsContest())
{
- sprite->oam.priority--;
- data->unkE_0 ^= 1;
+ if (!data->unkE_0)
+ {
+ sprite->oam.priority--;
+ data->unkE_0 ^= 1;
+ }
+ else
+ {
+ sprite->oam.priority++;
+ data->unkE_0 ^= 1;
+ }
}
else
{
- sprite->oam.priority++;
- data->unkE_0 ^= 1;
+ if (!data->unkE_0)
+ {
+ sprite->subpriority -= 12;
+ data->unkE_0 ^= 1;
+ }
+ else
+ {
+ sprite->subpriority += 12;
+ data->unkE_0 ^= 1;
+ }
}
}
- else
+ data->unk0_0d = 0;
+ data->unk2;
+ }
+ data->unk0_1 = 0;
+ break;
+ case 1:
+ if ((u8)data->unk0_1 == 0)
+ {
+ data->unk0_0d = 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if ((u8)data->unk0_1 == 2)
+ {
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_0d)
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+ sprite->animBeginning = TRUE;
+ sprite->animEnded = FALSE;
+ if (data->unk0_0c)
{
- if (!data->unkE_0)
+ if (!IsContest())
{
- sprite->subpriority -= 12;
- data->unkE_0 ^= 1;
+ if (!data->unkE_0)
+ {
+ sprite->oam.priority--;
+ data->unkE_0 ^= 1;
+ }
+ else
+ {
+ sprite->oam.priority++;
+ data->unkE_0 ^= 1;
+ }
}
else
{
- sprite->subpriority += 12;
- data->unkE_0 ^= 1;
+ if (!data->unkE_0)
+ {
+ sprite->subpriority -= 12;
+ data->unkE_0 ^= 1;
+ }
+ else
+ {
+ sprite->subpriority += 12;
+ data->unkE_0 ^= 1;
+ }
}
}
+ data->unk0_0d = 0;
}
- data->unk0_0d = 0;
- }
- data->unk0_1 = 2;
- break;
- case 3:
- if ((u8)data->unk0_1 == 2)
- {
- data->unk0_0d = 1;
- }
- else if ((u8)data->unk0_1 == 0)
- {
- data->unk0_0b ^= 1;
- data->unk0_0a = 1;
- data->unk1 = 0;
- }
- else if (data->unk0_0d)
- {
- sprite->hFlip ^= 1;
- sprite->animNum = sprite->hFlip;
- sprite->animBeginning = TRUE;
- sprite->animEnded = FALSE;
- if (data->unk0_0c)
+ data->unk0_1 = 1;
+ break;
+ case 2:
+ if ((u8)data->unk0_1 == 3)
+ {
+ data->unk0_0d = 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if ((u8)data->unk0_1 == 1)
+ {
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_0d)
{
- if (!IsContest())
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+ sprite->animBeginning = TRUE;
+ sprite->animEnded = FALSE;
+ if (data->unk0_0c)
{
- if (!data->unkE_0)
+ if (!IsContest())
{
- sprite->oam.priority--;
- data->unkE_0 ^= 1;
+ if (!data->unkE_0)
+ {
+ sprite->oam.priority--;
+ data->unkE_0 ^= 1;
+ }
+ else
+ {
+ sprite->oam.priority++;
+ data->unkE_0 ^= 1;
+ }
}
else
{
- sprite->oam.priority++;
- data->unkE_0 ^= 1;
+ if (!data->unkE_0)
+ {
+ sprite->subpriority -= 12;
+ data->unkE_0 ^= 1;
+ }
+ else
+ {
+ sprite->subpriority += 12;
+ data->unkE_0 ^= 1;
+ }
}
}
- else
+ data->unk0_0d = 0;
+ }
+ data->unk0_1 = 2;
+ break;
+ case 3:
+ if ((u8)data->unk0_1 == 2)
+ {
+ data->unk0_0d = 1;
+ }
+ else if ((u8)data->unk0_1 == 0)
+ {
+ data->unk0_0b ^= 1;
+ data->unk0_0a = 1;
+ data->unk1 = 0;
+ }
+ else if (data->unk0_0d)
+ {
+ sprite->hFlip ^= 1;
+ sprite->animNum = sprite->hFlip;
+ sprite->animBeginning = TRUE;
+ sprite->animEnded = FALSE;
+ if (data->unk0_0c)
{
- if (!data->unkE_0)
+ if (!IsContest())
{
- sprite->subpriority -= 12;
- data->unkE_0 ^= 1;
+ if (!data->unkE_0)
+ {
+ sprite->oam.priority--;
+ data->unkE_0 ^= 1;
+ }
+ else
+ {
+ sprite->oam.priority++;
+ data->unkE_0 ^= 1;
+ }
}
else
{
- sprite->subpriority += 12;
- data->unkE_0 ^= 1;
+ if (!data->unkE_0)
+ {
+ sprite->subpriority -= 12;
+ data->unkE_0 ^= 1;
+ }
+ else
+ {
+ sprite->subpriority += 12;
+ data->unkE_0 ^= 1;
+ }
}
}
+ data->unk0_0d = 0;
}
- data->unk0_0d = 0;
+ data->unk0_1 = 3;
+ break;
}
- data->unk0_1 = 3;
- break;
- }
- sprite->pos2.x = ((s32)(data->unkC[data->unk0_0b]) * gSineTable[data->unk2]) >> 8;
- matrixNum = sprite->oam.matrixNum;
+ sprite->pos2.x = ((s32)data->unkC[data->unk0_0b] * gSineTable[data->unk2]) >> 8;
+ matrixNum = sprite->oam.matrixNum;
- sinIndex = ((-sprite->pos2.x >> 1) + data->unkA);
- sinVal = gSineTable[sinIndex];
+ sinIndex = (-sprite->pos2.x >> 1) + data->unkA;
+ sinVal = gSineTable[sinIndex];
- gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
- gOamMatrices[matrixNum].b = sinVal;
- gOamMatrices[matrixNum].c = -sinVal;
+ gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
+ gOamMatrices[matrixNum].b = sinVal;
+ gOamMatrices[matrixNum].c = -sinVal;
- data->unk8 += data->unk6;
- sprite->pos1.y = (s16)(data->unk8 >> 8);
- if (data->unk4 & 0x8000)
- data->unk2 = (data->unk2 - (data->unk4 & 0x7FFF)) & 0xFF;
- else
- data->unk2 = (data->unk2 + (data->unk4 & 0x7FFF)) & 0xFF;
+ data->unk8 += data->unk6;
+ sprite->pos1.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)
- {
- sprite->data[0] = 0;
- sprite->callback = DestroyAnimSpriteAfterTimer;
+ if (sprite->pos1.y + sprite->pos2.y >= data->unkE_1)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = DestroyAnimSpriteAfterTimer;
+ }
}
}
@@ -922,20 +931,20 @@ static void sub_810EB40(struct Sprite *sprite)
{
sprite->pos2.x += sprite->data[1] >> 8;
- if (sprite->data[0]++ == 5)
+ if (++sprite->data[0] == 6)
{
sprite->data[0] = 0;
sprite->pos2.x = 0;
StartSpriteAnim(sprite, 0);
}
- if (sprite->data[7]-- == 0)
+ if (--sprite->data[7] == -1)
DestroyAnimSprite(sprite);
}
void AnimTask_DrillPeckHitSplats(u8 task)
{
- if ((gTasks[task].data[0] % 32) == 0)
+ if (!(gTasks[task].data[0] % 32))
{
gAnimVisualTaskCount++;
@@ -1038,8 +1047,8 @@ static void AnimDiveBall_Step2(struct Sprite *sprite)
static void AnimDiveWaterSplash(struct Sprite *sprite)
{
- u8 matrixNum;
- s32 t1, t2;
+ u32 matrixNum;
+ int t1, t2;
switch (sprite->data[0])
{
@@ -1061,7 +1070,7 @@ static void AnimDiveWaterSplash(struct Sprite *sprite)
sprite->data[0]++;
break;
case 1:
- if (sprite->data[2] < 12)
+ if (sprite->data[2] <= 11)
sprite->data[1] -= 40;
else
sprite->data[1] += 40;
@@ -1069,7 +1078,7 @@ static void AnimDiveWaterSplash(struct Sprite *sprite)
sprite->data[2]++;
TrySetSpriteRotScale(sprite, 0, 256, sprite->data[1], 0);
-
+
matrixNum = sprite->oam.matrixNum;
t1 = 15616;
@@ -1093,8 +1102,8 @@ static void AnimDiveWaterSplash(struct Sprite *sprite)
// Launches a water droplet away from the specified battler. Used by Astonish and Dive
static void AnimSprayWaterDroplet(struct Sprite *sprite)
{
- const u16 v1 = Random2() & 0x1ff;
- const u16 v2 = Random2() & 0x07f;
+ int v1 = 0x1ff & Random2();
+ int v2 = 0x7f & Random2();
if (v1 % 2)
sprite->data[0] = 736 + v1;
@@ -1138,13 +1147,13 @@ static void AnimSprayWaterDroplet_Step(struct Sprite *sprite)
sprite->pos2.y -= sprite->data[1] >> 8;
}
- sprite->data[0] -= 0; // Needed to Match
+ sprite->data[0] = sprite->data[0];
sprite->data[1] -= 32;
if (sprite->data[0] < 0)
sprite->data[0] = 0;
- if (sprite->data[3]++ == 30)
+ if (++sprite->data[3] == 31)
DestroyAnimSprite(sprite);
}
@@ -1214,12 +1223,12 @@ void unref_sub_810F184(u8 taskId)
{
if (gBattleAnimArgs[0] == 0)
{
- const u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+ u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
gSprites[spriteId].invisible = TRUE;
}
else
{
- const u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
+ u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
gSprites[spriteId].invisible = FALSE;
}
DestroyAnimVisualTask(taskId);
diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c
index d9993ab95..d626e1604 100644
--- a/src/battle_anim_mons.c
+++ b/src/battle_anim_mons.c
@@ -15,7 +15,6 @@
#include "trig.h"
#include "util.h"
#include "constants/battle_anim.h"
-#include "constants/species.h"
#define GET_UNOWN_LETTER(personality) (( \
(((personality & 0x03000000) >> 24) << 6) \
diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c
index 71c81235a..eed163816 100644
--- a/src/battle_anim_sound_tasks.c
+++ b/src/battle_anim_sound_tasks.c
@@ -5,7 +5,6 @@
#include "sound.h"
#include "task.h"
#include "constants/battle_anim.h"
-#include "constants/species.h"
// this file's functions
static void sub_8158B98(u8 taskId);
diff --git a/src/battle_anim_throw.c b/src/battle_anim_throw.c
index 7049931d3..fef301326 100755
--- a/src/battle_anim_throw.c
+++ b/src/battle_anim_throw.c
@@ -49,7 +49,7 @@ enum {
};
static void sub_8170660(u8);
-static void sub_8170A38(u8);
+static void AnimTask_FlashHealthboxOnLevelUp_Step(u8);
static void AnimTask_ThrowBall_Step(u8);
static void SpriteCB_Ball_Throw(struct Sprite *);
static void AnimTask_ThrowBall_StandingTrainer_Step(u8);
@@ -139,39 +139,39 @@ static const struct CaptureStar sCaptureStars[] =
#define TAG_PARTICLES_LUXURYBALL 55030
#define TAG_PARTICLES_PREMIERBALL 55031
-const struct CompressedSpriteSheet gBallParticleSpritesheets[] =
-{
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_POKEBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_GREATBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_SAFARIBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_ULTRABALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_MASTERBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_NETBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_DIVEBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_NESTBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_REPEATBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_TIMERBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_LUXURYBALL},
- {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_PREMIERBALL},
+static const struct CompressedSpriteSheet sBallParticleSpriteSheets[POKEBALL_COUNT] =
+{
+ [BALL_POKE] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_POKEBALL},
+ [BALL_GREAT] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_GREATBALL},
+ [BALL_SAFARI] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_SAFARIBALL},
+ [BALL_ULTRA] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_ULTRABALL},
+ [BALL_MASTER] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_MASTERBALL},
+ [BALL_NET] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_NETBALL},
+ [BALL_DIVE] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_DIVEBALL},
+ [BALL_NEST] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_NESTBALL},
+ [BALL_REPEAT] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_REPEATBALL},
+ [BALL_TIMER] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_TIMERBALL},
+ [BALL_LUXURY] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_LUXURYBALL},
+ [BALL_PREMIER] = {gBattleAnimSpriteGfx_Particles, 0x100, TAG_PARTICLES_PREMIERBALL},
};
-const struct CompressedSpritePalette gBallParticlePalettes[] =
-{
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_POKEBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_GREATBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_SAFARIBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_ULTRABALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_MASTERBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_NETBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_DIVEBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_NESTBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_REPEATBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_TIMERBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_LUXURYBALL},
- {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_PREMIERBALL},
+static const struct CompressedSpritePalette sBallParticlePalettes[POKEBALL_COUNT] =
+{
+ [BALL_POKE] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_POKEBALL},
+ [BALL_GREAT] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_GREATBALL},
+ [BALL_SAFARI] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_SAFARIBALL},
+ [BALL_ULTRA] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_ULTRABALL},
+ [BALL_MASTER] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_MASTERBALL},
+ [BALL_NET] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_NETBALL},
+ [BALL_DIVE] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_DIVEBALL},
+ [BALL_NEST] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_NESTBALL},
+ [BALL_REPEAT] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_REPEATBALL},
+ [BALL_TIMER] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_TIMERBALL},
+ [BALL_LUXURY] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_LUXURYBALL},
+ [BALL_PREMIER] = {gBattleAnimSpritePal_CircleImpact, TAG_PARTICLES_PREMIERBALL},
};
-const union AnimCmd gAnim_RegularBall[] =
+static const union AnimCmd sAnim_RegularBall[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_FRAME(1, 1),
@@ -182,185 +182,185 @@ const union AnimCmd gAnim_RegularBall[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd gAnim_MasterBall[] =
+static const union AnimCmd sAnim_MasterBall[] =
{
ANIMCMD_FRAME(3, 1),
ANIMCMD_END,
};
-const union AnimCmd gAnim_NetDiveBall[] =
+static const union AnimCmd sAnim_NetDiveBall[] =
{
ANIMCMD_FRAME(4, 1),
ANIMCMD_END,
};
-const union AnimCmd gAnim_NestBall[] =
+static const union AnimCmd sAnim_NestBall[] =
{
ANIMCMD_FRAME(5, 1),
ANIMCMD_END,
};
-const union AnimCmd gAnim_LuxuryPremierBall[] =
+static const union AnimCmd sAnim_LuxuryPremierBall[] =
{
ANIMCMD_FRAME(6, 4),
ANIMCMD_FRAME(7, 4),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gAnim_UltraRepeatTimerBall[] =
+static const union AnimCmd sAnim_UltraRepeatTimerBall[] =
{
ANIMCMD_FRAME(7, 4),
ANIMCMD_END,
};
-const union AnimCmd *const gAnims_BallParticles[] =
+static const union AnimCmd *const sAnims_BallParticles[] =
{
- gAnim_RegularBall,
- gAnim_MasterBall,
- gAnim_NetDiveBall,
- gAnim_NestBall,
- gAnim_LuxuryPremierBall,
- gAnim_UltraRepeatTimerBall,
+ sAnim_RegularBall,
+ sAnim_MasterBall,
+ sAnim_NetDiveBall,
+ sAnim_NestBall,
+ sAnim_LuxuryPremierBall,
+ sAnim_UltraRepeatTimerBall,
};
-const u8 gBallParticleAnimNums[] =
-{
- [BALL_POKE] = 0,
- [BALL_GREAT] = 0,
- [BALL_SAFARI] = 0,
- [BALL_ULTRA] = 5,
- [BALL_MASTER] = 1,
- [BALL_NET] = 2,
- [BALL_DIVE] = 2,
- [BALL_NEST] = 3,
- [BALL_REPEAT] = 5,
- [BALL_TIMER] = 5,
- [BALL_LUXURY] = 4,
+static const u8 sBallParticleAnimNums[POKEBALL_COUNT] =
+{
+ [BALL_POKE] = 0,
+ [BALL_GREAT] = 0,
+ [BALL_SAFARI] = 0,
+ [BALL_ULTRA] = 5,
+ [BALL_MASTER] = 1,
+ [BALL_NET] = 2,
+ [BALL_DIVE] = 2,
+ [BALL_NEST] = 3,
+ [BALL_REPEAT] = 5,
+ [BALL_TIMER] = 5,
+ [BALL_LUXURY] = 4,
[BALL_PREMIER] = 4,
};
-const TaskFunc gBallParticleAnimationFuncs[] =
-{
- PokeBallOpenParticleAnimation,
- GreatBallOpenParticleAnimation,
- SafariBallOpenParticleAnimation,
- UltraBallOpenParticleAnimation,
- MasterBallOpenParticleAnimation,
- SafariBallOpenParticleAnimation,
- DiveBallOpenParticleAnimation,
- UltraBallOpenParticleAnimation,
- RepeatBallOpenParticleAnimation,
- TimerBallOpenParticleAnimation,
- GreatBallOpenParticleAnimation,
- PremierBallOpenParticleAnimation,
+static const TaskFunc sBallParticleAnimationFuncs[POKEBALL_COUNT] =
+{
+ [BALL_POKE] = PokeBallOpenParticleAnimation,
+ [BALL_GREAT] = GreatBallOpenParticleAnimation,
+ [BALL_SAFARI] = SafariBallOpenParticleAnimation,
+ [BALL_ULTRA] = UltraBallOpenParticleAnimation,
+ [BALL_MASTER] = MasterBallOpenParticleAnimation,
+ [BALL_NET] = SafariBallOpenParticleAnimation,
+ [BALL_DIVE] = DiveBallOpenParticleAnimation,
+ [BALL_NEST] = UltraBallOpenParticleAnimation,
+ [BALL_REPEAT] = RepeatBallOpenParticleAnimation,
+ [BALL_TIMER] = TimerBallOpenParticleAnimation,
+ [BALL_LUXURY] = GreatBallOpenParticleAnimation,
+ [BALL_PREMIER] = PremierBallOpenParticleAnimation,
};
-const struct SpriteTemplate gBallParticlesSpriteTemplates[] =
+static const struct SpriteTemplate sBallParticleSpriteTemplates[POKEBALL_COUNT] =
{
- {
+ [BALL_POKE] = {
.tileTag = TAG_PARTICLES_POKEBALL,
.paletteTag = TAG_PARTICLES_POKEBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
- .anims = gAnims_BallParticles,
+ .anims = sAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_GREAT] = {
.tileTag = TAG_PARTICLES_GREATBALL,
.paletteTag = TAG_PARTICLES_GREATBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
- .anims = gAnims_BallParticles,
+ .anims = sAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_SAFARI] = {
.tileTag = TAG_PARTICLES_SAFARIBALL,
.paletteTag = TAG_PARTICLES_SAFARIBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
- .anims = gAnims_BallParticles,
+ .anims = sAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_ULTRA] = {
.tileTag = TAG_PARTICLES_ULTRABALL,
.paletteTag = TAG_PARTICLES_ULTRABALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
- .anims = gAnims_BallParticles,
+ .anims = sAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_MASTER] = {
.tileTag = TAG_PARTICLES_MASTERBALL,
.paletteTag = TAG_PARTICLES_MASTERBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
- .anims = gAnims_BallParticles,
+ .anims = sAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_NET] = {
.tileTag = TAG_PARTICLES_NETBALL,
.paletteTag = TAG_PARTICLES_NETBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
- .anims = gAnims_BallParticles,
+ .anims = sAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_DIVE] = {
.tileTag = TAG_PARTICLES_DIVEBALL,
.paletteTag = TAG_PARTICLES_DIVEBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
- .anims = gAnims_BallParticles,
+ .anims = sAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_NEST] = {
.tileTag = TAG_PARTICLES_NESTBALL,
.paletteTag = TAG_PARTICLES_NESTBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
- .anims = gAnims_BallParticles,
+ .anims = sAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_REPEAT] = {
.tileTag = TAG_PARTICLES_REPEATBALL,
.paletteTag = TAG_PARTICLES_REPEATBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
- .anims = gAnims_BallParticles,
+ .anims = sAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_TIMER] = {
.tileTag = TAG_PARTICLES_TIMERBALL,
.paletteTag = TAG_PARTICLES_TIMERBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
- .anims = gAnims_BallParticles,
+ .anims = sAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_LUXURY] = {
.tileTag = TAG_PARTICLES_LUXURYBALL,
.paletteTag = TAG_PARTICLES_LUXURYBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
- .anims = gAnims_BallParticles,
+ .anims = sAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
- {
+ [BALL_PREMIER] = {
.tileTag = TAG_PARTICLES_PREMIERBALL,
.paletteTag = TAG_PARTICLES_PREMIERBALL,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
- .anims = gAnims_BallParticles,
+ .anims = sAnims_BallParticles,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
@@ -404,22 +404,23 @@ const struct SpriteTemplate gPokeblockSpriteTemplate =
.callback = SpriteCB_PokeBlock_Throw,
};
-const union AnimCmd gUnknown_085E5350[] =
+static const union AnimCmd sAnim_SafariRock[] =
{
ANIMCMD_FRAME(64, 1),
ANIMCMD_END,
};
-const union AnimCmd *const gUnknown_085E5358[] = {
- gUnknown_085E5350,
+static const union AnimCmd *const sAnims_SafariRock[] = {
+ sAnim_SafariRock,
};
-const struct SpriteTemplate gBattleAnimSpriteTemplate_085E535C =
+// Unused, leftover from FRLG
+static const struct SpriteTemplate sSafariRockSpriteTemplate =
{
.tileTag = ANIM_TAG_ROCKS,
.paletteTag = ANIM_TAG_ROCKS,
.oam = &gOamData_AffineOff_ObjNormal_32x32,
- .anims = gUnknown_085E5358,
+ .anims = sAnims_SafariRock,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_PokeBlock_Throw,
@@ -594,10 +595,10 @@ void AnimTask_FlashHealthboxOnLevelUp(u8 taskId)
{
gTasks[taskId].data[10] = gBattleAnimArgs[0];
gTasks[taskId].data[11] = gBattleAnimArgs[1];
- gTasks[taskId].func = sub_8170A38;
+ gTasks[taskId].func = AnimTask_FlashHealthboxOnLevelUp_Step;
}
-static void sub_8170A38(u8 taskId)
+static void AnimTask_FlashHealthboxOnLevelUp_Step(u8 taskId)
{
u8 paletteNum;
u32 paletteOffset, colorOffset;
@@ -807,7 +808,7 @@ void AnimTask_ThrowBall_StandingTrainer(u8 taskId)
gSprites[spriteId].sTargetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
gSprites[spriteId].sTargetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) - 16;
gSprites[spriteId].callback = SpriteCallbackDummy;
- gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].callback = sub_8039E84;
+ gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].callback = SpriteCB_TrainerThrowObject;
gTasks[taskId].tSpriteId = spriteId;
gTasks[taskId].func = AnimTask_ThrowBall_StandingTrainer_Step;
}
@@ -1415,7 +1416,7 @@ static void MakeCaptureStars(struct Sprite *sprite)
LoadBallParticleGfx(BALL_MASTER);
for (i = 0; i < ARRAY_COUNT(sCaptureStars); i++)
{
- u8 spriteId = CreateSprite(&gBallParticlesSpriteTemplates[4], sprite->pos1.x, sprite->pos1.y, subpriority);
+ u8 spriteId = CreateSprite(&sBallParticleSpriteTemplates[4], sprite->pos1.x, sprite->pos1.y, subpriority);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].sDuration = 24;
@@ -1424,7 +1425,7 @@ static void MakeCaptureStars(struct Sprite *sprite)
gSprites[spriteId].sAmplitude = sCaptureStars[i].amplitude;
InitAnimArcTranslation(&gSprites[spriteId]);
gSprites[spriteId].callback = SpriteCB_CaptureStar_Flicker;
- StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[BALL_MASTER]);
+ StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[BALL_MASTER]);
}
}
}
@@ -1552,10 +1553,10 @@ static void LoadBallParticleGfx(u8 ballId)
{
u8 taskId;
- if (GetSpriteTileStartByTag(gBallParticleSpritesheets[ballId].tag) == 0xFFFF)
+ if (GetSpriteTileStartByTag(sBallParticleSpriteSheets[ballId].tag) == 0xFFFF)
{
- LoadCompressedSpriteSheetUsingHeap(&gBallParticleSpritesheets[ballId]);
- LoadCompressedSpritePaletteUsingHeap(&gBallParticlePalettes[ballId]);
+ LoadCompressedSpriteSheetUsingHeap(&sBallParticleSpriteSheets[ballId]);
+ LoadCompressedSpritePaletteUsingHeap(&sBallParticlePalettes[ballId]);
}
}
@@ -1564,7 +1565,7 @@ u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId)
u8 taskId;
LoadBallParticleGfx(ballId);
- taskId = CreateTask(gBallParticleAnimationFuncs[ballId], 5);
+ taskId = CreateTask(sBallParticleAnimationFuncs[ballId], 5);
gTasks[taskId].data[1] = x;
gTasks[taskId].data[2] = y;
gTasks[taskId].data[3] = priority;
@@ -1597,11 +1598,11 @@ static void PokeBallOpenParticleAnimation(u8 taskId)
priority = gTasks[taskId].data[3];
subpriority = gTasks[taskId].data[4];
- spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority);
+ spriteId = CreateSprite(&sBallParticleSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
IncrBallParticleCount();
- StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]);
+ StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = PokeBallOpenParticleAnimation_Step1;
gSprites[spriteId].oam.priority = priority;
@@ -1656,11 +1657,11 @@ static void TimerBallOpenParticleAnimation(u8 taskId)
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority);
+ spriteId = CreateSprite(&sBallParticleSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
IncrBallParticleCount();
- StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]);
+ StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 32;
@@ -1690,11 +1691,11 @@ static void DiveBallOpenParticleAnimation(u8 taskId)
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority);
+ spriteId = CreateSprite(&sBallParticleSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
IncrBallParticleCount();
- StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]);
+ StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 32;
@@ -1725,11 +1726,11 @@ static void SafariBallOpenParticleAnimation(u8 taskId)
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority);
+ spriteId = CreateSprite(&sBallParticleSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
IncrBallParticleCount();
- StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]);
+ StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 32;
@@ -1760,11 +1761,11 @@ static void UltraBallOpenParticleAnimation(u8 taskId)
for (i = 0; i < 10; i++)
{
- spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority);
+ spriteId = CreateSprite(&sBallParticleSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
IncrBallParticleCount();
- StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]);
+ StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 25;
@@ -1801,11 +1802,11 @@ static void GreatBallOpenParticleAnimation(u8 taskId)
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority);
+ spriteId = CreateSprite(&sBallParticleSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
IncrBallParticleCount();
- StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]);
+ StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 32;
@@ -1851,11 +1852,11 @@ static void RepeatBallOpenParticleAnimation(u8 taskId)
for (i = 0; i < POKEBALL_COUNT; i++)
{
- spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority);
+ spriteId = CreateSprite(&sBallParticleSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
IncrBallParticleCount();
- StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]);
+ StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = RepeatBallOpenParticleAnimation_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 21;
@@ -1895,11 +1896,11 @@ static void MasterBallOpenParticleAnimation(u8 taskId)
{
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority);
+ spriteId = CreateSprite(&sBallParticleSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
IncrBallParticleCount();
- StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]);
+ StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = FanOutBallOpenParticles_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 32;
@@ -1939,11 +1940,11 @@ static void PremierBallOpenParticleAnimation(u8 taskId)
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority);
+ spriteId = CreateSprite(&sBallParticleSpriteTemplates[ballId], x, y, subpriority);
if (spriteId != MAX_SPRITES)
{
IncrBallParticleCount();
- StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]);
+ StartSpriteAnim(&gSprites[spriteId], sBallParticleAnimNums[ballId]);
gSprites[spriteId].callback = PremierBallOpenParticleAnimation_Step1;
gSprites[spriteId].oam.priority = priority;
gSprites[spriteId].data[0] = i * 32;
@@ -1985,7 +1986,7 @@ static void DestroyBallOpenAnimationParticle(struct Sprite *sprite)
{
for (i = 0; i < POKEBALL_COUNT; i++)
{
- if (FuncIsActiveTask(gBallParticleAnimationFuncs[i]) == TRUE)
+ if (FuncIsActiveTask(sBallParticleAnimationFuncs[i]) == TRUE)
break;
}
@@ -1993,8 +1994,8 @@ static void DestroyBallOpenAnimationParticle(struct Sprite *sprite)
{
for (j = 0; j < POKEBALL_COUNT; j++)
{
- FreeSpriteTilesByTag(gBallParticleSpritesheets[j].tag);
- FreeSpritePaletteByTag(gBallParticlePalettes[j].tag);
+ FreeSpriteTilesByTag(sBallParticleSpriteSheets[j].tag);
+ FreeSpritePaletteByTag(sBallParticlePalettes[j].tag);
}
}
@@ -2218,7 +2219,7 @@ void TryShinyAnimation(u8 battler, struct Pokemon *mon)
u8 taskCirc, taskDgnl;
isShiny = FALSE;
- gBattleSpritesDataPtr->healthBoxesData[battler].flag_x80 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim = TRUE;
otId = GetMonData(mon, MON_DATA_OT_ID);
personality = GetMonData(mon, MON_DATA_PERSONALITY);
@@ -2246,7 +2247,7 @@ void TryShinyAnimation(u8 battler, struct Pokemon *mon)
}
}
- gBattleSpritesDataPtr->healthBoxesData[battler].field_1_x1 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = TRUE;
}
static void Task_ShinyStars(u8 taskId)
@@ -2331,7 +2332,7 @@ static void Task_ShinyStars_Wait(u8 taskId)
if (gTasks[taskId].tStarMove == SHINY_STAR_DIAGONAL)
{
battler = gTasks[taskId].tBattler;
- gBattleSpritesDataPtr->healthBoxesData[battler].field_1_x1 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim = TRUE;
}
DestroyTask(taskId);
@@ -2411,7 +2412,7 @@ static void SpriteCB_PokeBlock_Throw(struct Sprite *sprite)
sprite->sTargetY = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), BATTLER_COORD_Y) + gBattleAnimArgs[3];
sprite->sAmplitude = -32;
InitAnimArcTranslation(sprite);
- gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].callback = sub_8039E84;
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].callback = SpriteCB_TrainerThrowObject;
sprite->callback = SpriteCB_PokeBlock_LiftArm;
}
diff --git a/src/battle_anim_water.c b/src/battle_anim_water.c
index 12f37dbba..2bb90e585 100644
--- a/src/battle_anim_water.c
+++ b/src/battle_anim_water.c
@@ -52,7 +52,7 @@ static void CreateWaterSpoutLaunchDroplets(struct Task*, u8);
static void CreateWaterSpoutRainDroplet(struct Task*, u8);
static void AnimTask_WaterSport_Step(u8);
static void CreateWaterSportDroplet(struct Task*);
-static void CreateWaterPulseRingBubbles(struct Sprite*, s32, s32);
+static void CreateWaterPulseRingBubbles(struct Sprite*, int, int);
// Both unused
const u8 gUnknown_8593C80[] = INCBIN_U8("graphics/unknown/unknown_593C80.4bpp");
@@ -631,13 +631,13 @@ static void AnimTask_RotateAuroraRingColors_Step(u8 taskId)
if (++gTasks[taskId].data[10] == 3)
{
- u16 tempPlt;
+ u16 rgbBuffer;
gTasks[taskId].data[10] = 0;
palIndex = gTasks[taskId].data[2] + 1;
- tempPlt = gPlttBufferFaded[palIndex];
+ rgbBuffer = gPlttBufferFaded[palIndex];
for (i = 1; i < 8; i++)
gPlttBufferFaded[palIndex + i - 1] = gPlttBufferFaded[palIndex + i];
- gPlttBufferFaded[palIndex + 7] = tempPlt;
+ gPlttBufferFaded[palIndex + 7] = rgbBuffer;
}
if (++gTasks[taskId].data[11] == gTasks[taskId].data[0])
DestroyAnimVisualTask(taskId);
@@ -748,7 +748,6 @@ static void AnimHydroCannonBeam(struct Sprite *sprite)
if (GetBattlerPosition(gBattleAnimAttacker) == B_POSITION_PLAYER_LEFT || GetBattlerPosition(gBattleAnimAttacker) == B_POSITION_OPPONENT_LEFT)
gBattleAnimArgs[0] *= -1;
}
-
if ((gBattleAnimArgs[5] & 0xFF00) == 0)
animType = TRUE;
else
@@ -794,7 +793,7 @@ static void AnimSmallBubblePair_Step(struct Sprite *sprite)
sprite->pos2.x = Sin(sprite->data[0], 4);
sprite->data[1] += 48;
sprite->pos2.y = -(sprite->data[1] >> 8);
- if (sprite->data[7]-- == 0)
+ if (--sprite->data[7] == -1)
DestroyAnimSprite(sprite);
}
@@ -802,17 +801,17 @@ void AnimTask_CreateSurfWave(u8 taskId)
{
struct BattleAnimBgData animBg;
u8 taskId2;
- u16 *x, *y; //These pointers are needed to match
+ u16 *x;
+ u16 *y;
x = &gBattle_BG1_X;
y = &gBattle_BG1_Y;
- SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL | BLDCNT_TGT1_BG1);
- SetGpuReg(REG_OFFSET_BLDALPHA, (16 << 8));
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 1);
sub_80A6B30(&animBg);
-
if (!IsContest())
{
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
@@ -877,13 +876,13 @@ void AnimTask_CreateSurfWave(u8 taskId)
static void AnimTask_CreateSurfWave_Step1(u8 taskId)
{
- u16 rgbBuffer;
- u8 i;
- u16 *BGptrX, *BGptrY;
struct BattleAnimBgData animBg;
-
- BGptrX = &gBattle_BG1_X;
- BGptrY = &gBattle_BG1_Y;
+ u8 i;
+ u16 rgbBuffer;
+ u16 *BGptrX = &gBattle_BG1_X;
+ u16 *BGptrY = &gBattle_BG1_Y;
+ u32 palOffset;
+ u16 palNum;
*BGptrX += gTasks[taskId].data[0];
*BGptrY += gTasks[taskId].data[1];
@@ -891,18 +890,18 @@ static void AnimTask_CreateSurfWave_Step1(u8 taskId)
gTasks[taskId].data[2] += gTasks[taskId].data[1];
if (++gTasks[taskId].data[5] == 4)
{
- rgbBuffer = gPlttBufferFaded[16 * animBg.paletteId + 7];
- for (i = 6; i != 0; i--) // i > 0 generates the exact same code in this context
+ rgbBuffer = gPlttBufferFaded[animBg.paletteId * 16 + 7];
+ for (i = 6; i != 0; i--)
{
- gPlttBufferFaded[16 * animBg.paletteId + 1 + i] = gPlttBufferFaded[16 * animBg.paletteId + 1 + i - 1]; // 1 + i - 1 is needed to match for some bizarre reason
+ gPlttBufferFaded[animBg.paletteId * 16 + 1 + i] = gPlttBufferFaded[animBg.paletteId * 16 + 1 + i - 1]; // 1 + i - 1 is needed to match for some bizarre reason
}
- gPlttBufferFaded[16 * animBg.paletteId + 1] = rgbBuffer;
+ gPlttBufferFaded[animBg.paletteId * 16 + 1] = rgbBuffer;
gTasks[taskId].data[5] = 0;
}
if (++gTasks[taskId].data[6] > 1)
{
gTasks[taskId].data[6] = 0;
- if (++gTasks[taskId].data[3] < 14)
+ if (++gTasks[taskId].data[3] <= 13)
{
gTasks[gTasks[taskId].data[15]].data[1] = (s16)((gTasks[taskId].data[3]) | ((16 - gTasks[taskId].data[3]) << 8));
gTasks[taskId].data[4]++;
@@ -920,7 +919,6 @@ static void AnimTask_CreateSurfWave_Step1(u8 taskId)
}
}
-
static void AnimTask_CreateSurfWave_Step2(u8 taskId)
{
u16 *BGptrX = &gBattle_BG1_X;
@@ -1543,50 +1541,45 @@ static void AnimWaterPulseRing_Step(struct Sprite *sprite)
sprite->data[0]++;
}
-static void CreateWaterPulseRingBubbles(struct Sprite *sprite, s32 xDiff, s32 yDiff)
+static void CreateWaterPulseRingBubbles(struct Sprite *sprite, int xDiff, int yDiff)
{
- s16 combinedX, combinedY;
- s16 i, something;
+ s16 combinedX;
+ s16 combinedY;
+ s16 i;
+ s16 something;
s16 unusedVar = 1; //unusedVar is needed to match
- s16 somethingRandomX, somethingRandomY;
+ s16 randomSomethingY;
+ s16 randomSomethingX;
u8 spriteId;
-
+
something = sprite->data[0] / 2;
combinedX = sprite->pos1.x + sprite->pos2.x;
combinedY = sprite->pos1.y + sprite->pos2.y;
if (yDiff < 0)
- unusedVar *= -1; //Needed to Match
- somethingRandomY = yDiff + (Random2() % 10) - 5;
- somethingRandomX = -xDiff + (Random2() % 10) - 5;
+ unusedVar *= -1; //Needed to match
+ randomSomethingY = yDiff + (Random2() % 10) - 5;
+ randomSomethingX = -xDiff + (Random2() % 10) - 5;
- for (i = 0; i < 1; i++)
+ for (i = 0; i <= 0; i++)
{
spriteId = CreateSprite(&gWaterPulseRingBubbleSpriteTemplate, combinedX, combinedY + something, 130);
gSprites[spriteId].data[0] = 20;
- gSprites[spriteId].data[1] = somethingRandomY;
+ gSprites[spriteId].data[1] = randomSomethingY;
gSprites[spriteId].subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1;
- if (somethingRandomX < 0)
- {
- gSprites[spriteId].data[2] = -somethingRandomX;
- }
+ if (randomSomethingX < 0)
+ gSprites[spriteId].data[2] = -randomSomethingX;
else
- {
- gSprites[spriteId].data[2] = somethingRandomX;
- }
+ gSprites[spriteId].data[2] = randomSomethingX;
}
- for (i = 0; i < 1; i++)
+ for (i = 0; i <= 0; i++)
{
spriteId = CreateSprite(&gWaterPulseRingBubbleSpriteTemplate, combinedX, combinedY - something, 130);
gSprites[spriteId].data[0] = 20;
- gSprites[spriteId].data[1] = somethingRandomY;
+ gSprites[spriteId].data[1] = randomSomethingY;
gSprites[spriteId].subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1;
- if (somethingRandomX > 0)
- {
- gSprites[spriteId].data[2] = -somethingRandomX;
- }
+ if (randomSomethingX > 0)
+ gSprites[spriteId].data[2] = -randomSomethingX;
else
- {
- gSprites[spriteId].data[2] = somethingRandomX;
- }
+ gSprites[spriteId].data[2] = randomSomethingX;
}
}
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index 3461e9754..1041f6fda 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -239,27 +239,27 @@ static void sub_8064520(void)
{
if (r4 || !IsBattlerSpriteVisible(BATTLE_PARTNER(gActiveBattler)))
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
return;
- if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].field_1_x1)
+ if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].finishedShinyMonAnim)
return;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
- gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].finishedShinyMonAnim = FALSE;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
}
else
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
return;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_RIGHT)
{
@@ -278,15 +278,15 @@ static void sub_8064734(void)
bool32 r10 = FALSE;
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
}
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)
&& !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive
- && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].field_1_x1)
+ && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].triedShinyMonAnim
+ && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].finishedShinyMonAnim)
{
TryShinyAnimation(BATTLE_PARTNER(gActiveBattler), &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]]);
}
@@ -367,16 +367,16 @@ static void sub_8064B04(void)
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
&& gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
{
TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
}
else
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
LinkOpponentBufferExecCompleted();
@@ -473,11 +473,11 @@ static void sub_8064DD0(void)
static void sub_8064E50(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
&& gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
@@ -495,7 +495,7 @@ static void sub_8064E50(void)
static void sub_8064F40(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80)
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
{
TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
}
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index 63aa6eaea..af81b06d5 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -359,10 +359,10 @@ static void sub_814B554(void)
static void sub_814B5A8(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
@@ -380,7 +380,7 @@ static void sub_814B5A8(void)
static void sub_814B69C(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index 858201b4b..f186bf3ff 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -249,23 +249,25 @@ static void sub_805F2F0(void)
{
if (var2 == TRUE)
{
- if (var2 && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
}
else
return;
}
- else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
if (GetBattlerPosition(gActiveBattler) == 3)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 == 0 && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 == 0)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
{
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
@@ -273,8 +275,8 @@ static void sub_805F2F0(void)
else
return;
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
}
else
return;
@@ -289,10 +291,19 @@ static void sub_805F560(void)
bool32 sp = FALSE;
bool32 r10 = FALSE;
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (!(gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI) && IsDoubleBattle() && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1)
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ && IsDoubleBattle()
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
+
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80)
@@ -368,13 +379,16 @@ static void sub_805F560(void)
static void sub_805F994(void)
{
- if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
OpponentBufferExecCompleted();
@@ -463,10 +477,11 @@ static void sub_805FC80(void)
static void sub_805FD00(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
@@ -480,7 +495,8 @@ static void sub_805FD00(void)
static void sub_805FDF0(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index c9a3bc2e0..7c34efd44 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -240,12 +240,12 @@ static void HandleInputChooseAction(void)
DoBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX, 7, 1);
DoBounceEffect(gActiveBattler, BOUNCE_MON, 7, 1);
- if (gMain.newAndRepeatedKeys & DPAD_ANY && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A)
+ if (JOY_REPEAT(DPAD_ANY) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A)
gPlayerDpadHoldFrames++;
else
gPlayerDpadHoldFrames = 0;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
@@ -266,7 +266,7 @@ static void HandleInputChooseAction(void)
}
PlayerBufferExecCompleted();
}
- else if (gMain.newKeys & DPAD_LEFT)
+ else if (JOY_NEW(DPAD_LEFT))
{
if (gActionSelectionCursor[gActiveBattler] & 1) // if is B_ACTION_USE_ITEM or B_ACTION_RUN
{
@@ -276,7 +276,7 @@ static void HandleInputChooseAction(void)
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
}
}
- else if (gMain.newKeys & DPAD_RIGHT)
+ else if (JOY_NEW(DPAD_RIGHT))
{
if (!(gActionSelectionCursor[gActiveBattler] & 1)) // if is B_ACTION_USE_MOVE or B_ACTION_SWITCH
{
@@ -286,7 +286,7 @@ static void HandleInputChooseAction(void)
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
}
}
- else if (gMain.newKeys & DPAD_UP)
+ else if (JOY_NEW(DPAD_UP))
{
if (gActionSelectionCursor[gActiveBattler] & 2) // if is B_ACTION_SWITCH or B_ACTION_RUN
{
@@ -296,7 +296,7 @@ static void HandleInputChooseAction(void)
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
}
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
if (!(gActionSelectionCursor[gActiveBattler] & 2)) // if is B_ACTION_USE_MOVE or B_ACTION_USE_ITEM
{
@@ -306,7 +306,7 @@ static void HandleInputChooseAction(void)
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
}
}
- else if (gMain.newKeys & B_BUTTON || gPlayerDpadHoldFrames > 59)
+ else if (JOY_NEW(B_BUTTON) || gPlayerDpadHoldFrames > 59)
{
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
&& GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT
@@ -326,7 +326,7 @@ static void HandleInputChooseAction(void)
PlayerBufferExecCompleted();
}
}
- else if (gMain.newKeys & START_BUTTON)
+ else if (JOY_NEW(START_BUTTON))
{
SwapHpBarsWithHpText();
}
@@ -359,12 +359,12 @@ static void HandleInputChooseTarget(void)
} while (i < gBattlersCount);
}
- if (gMain.heldKeys & DPAD_ANY && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A)
+ if (JOY_HELD(DPAD_ANY) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A)
gPlayerDpadHoldFrames++;
else
gPlayerDpadHoldFrames = 0;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget;
@@ -372,7 +372,7 @@ static void HandleInputChooseTarget(void)
EndBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX);
PlayerBufferExecCompleted();
}
- else if (gMain.newKeys & B_BUTTON || gPlayerDpadHoldFrames > 59)
+ else if (JOY_NEW(B_BUTTON) || gPlayerDpadHoldFrames > 59)
{
PlaySE(SE_SELECT);
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget;
@@ -381,7 +381,7 @@ static void HandleInputChooseTarget(void)
DoBounceEffect(gActiveBattler, BOUNCE_MON, 7, 1);
EndBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX);
}
- else if (gMain.newKeys & (DPAD_LEFT | DPAD_UP))
+ else if (JOY_NEW(DPAD_LEFT | DPAD_UP))
{
PlaySE(SE_SELECT);
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget;
@@ -423,7 +423,7 @@ static void HandleInputChooseTarget(void)
} while (i == 0);
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_ShowAsMoveTarget;
}
- else if (gMain.newKeys & (DPAD_RIGHT | DPAD_DOWN))
+ else if (JOY_NEW(DPAD_RIGHT | DPAD_DOWN))
{
PlaySE(SE_SELECT);
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget;
@@ -472,12 +472,12 @@ static void HandleInputChooseMove(void)
bool32 canSelectTarget = FALSE;
struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]);
- if (gMain.heldKeys & DPAD_ANY && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A)
+ if (JOY_HELD(DPAD_ANY) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A)
gPlayerDpadHoldFrames++;
else
gPlayerDpadHoldFrames = 0;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
u8 moveTarget;
@@ -539,13 +539,13 @@ static void HandleInputChooseMove(void)
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_ShowAsMoveTarget;
}
}
- else if (gMain.newKeys & B_BUTTON || gPlayerDpadHoldFrames > 59)
+ else if (JOY_NEW(B_BUTTON) || gPlayerDpadHoldFrames > 59)
{
PlaySE(SE_SELECT);
BtlController_EmitTwoReturnValues(1, 10, 0xFFFF);
PlayerBufferExecCompleted();
}
- else if (gMain.newKeys & DPAD_LEFT)
+ else if (JOY_NEW(DPAD_LEFT))
{
if (gMoveSelectionCursor[gActiveBattler] & 1)
{
@@ -557,7 +557,7 @@ static void HandleInputChooseMove(void)
MoveSelectionDisplayMoveType();
}
}
- else if (gMain.newKeys & DPAD_RIGHT)
+ else if (JOY_NEW(DPAD_RIGHT))
{
if (!(gMoveSelectionCursor[gActiveBattler] & 1)
&& (gMoveSelectionCursor[gActiveBattler] ^ 1) < gNumberOfMovesToChoose)
@@ -570,7 +570,7 @@ static void HandleInputChooseMove(void)
MoveSelectionDisplayMoveType();
}
}
- else if (gMain.newKeys & DPAD_UP)
+ else if (JOY_NEW(DPAD_UP))
{
if (gMoveSelectionCursor[gActiveBattler] & 2)
{
@@ -582,7 +582,7 @@ static void HandleInputChooseMove(void)
MoveSelectionDisplayMoveType();
}
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
if (!(gMoveSelectionCursor[gActiveBattler] & 2)
&& (gMoveSelectionCursor[gActiveBattler] ^ 2) < gNumberOfMovesToChoose)
@@ -595,7 +595,7 @@ static void HandleInputChooseMove(void)
MoveSelectionDisplayMoveType();
}
}
- else if (gMain.newKeys & SELECT_BUTTON)
+ else if (JOY_NEW(SELECT_BUTTON))
{
if (gNumberOfMovesToChoose > 1 && !(gBattleTypeFlags & BATTLE_TYPE_LINK))
{
@@ -617,26 +617,26 @@ u32 sub_8057FBC(void) // unused
{
u32 var = 0;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
var = 1;
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0x140;
var = 0xFF;
}
- if (gMain.newKeys & DPAD_LEFT && gMoveSelectionCursor[gActiveBattler] & 1)
+ if (JOY_NEW(DPAD_LEFT) && gMoveSelectionCursor[gActiveBattler] & 1)
{
MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]);
gMoveSelectionCursor[gActiveBattler] ^= 1;
PlaySE(SE_SELECT);
MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0);
}
- if (gMain.newKeys & DPAD_RIGHT && !(gMoveSelectionCursor[gActiveBattler] & 1)
+ if (JOY_NEW(DPAD_RIGHT) && !(gMoveSelectionCursor[gActiveBattler] & 1)
&& (gMoveSelectionCursor[gActiveBattler] ^ 1) < gNumberOfMovesToChoose)
{
MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]);
@@ -644,14 +644,14 @@ u32 sub_8057FBC(void) // unused
PlaySE(SE_SELECT);
MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0);
}
- if (gMain.newKeys & DPAD_UP && gMoveSelectionCursor[gActiveBattler] & 2)
+ if (JOY_NEW(DPAD_UP) && gMoveSelectionCursor[gActiveBattler] & 2)
{
MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]);
gMoveSelectionCursor[gActiveBattler] ^= 2;
PlaySE(SE_SELECT);
MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0);
}
- if (gMain.newKeys & DPAD_DOWN && !(gMoveSelectionCursor[gActiveBattler] & 2)
+ if (JOY_NEW(DPAD_DOWN) && !(gMoveSelectionCursor[gActiveBattler] & 2)
&& (gMoveSelectionCursor[gActiveBattler] ^ 2) < gNumberOfMovesToChoose)
{
MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]);
@@ -669,7 +669,7 @@ static void HandleMoveSwitching(void)
struct ChooseMoveStruct moveStruct;
u8 totalPPBonuses;
- if (gMain.newKeys & (A_BUTTON | SELECT_BUTTON))
+ if (JOY_NEW(A_BUTTON | SELECT_BUTTON))
{
PlaySE(SE_SELECT);
@@ -763,7 +763,7 @@ static void HandleMoveSwitching(void)
MoveSelectionDisplayPpNumber();
MoveSelectionDisplayMoveType();
}
- else if (gMain.newKeys & (B_BUTTON | SELECT_BUTTON))
+ else if (JOY_NEW(B_BUTTON | SELECT_BUTTON))
{
PlaySE(SE_SELECT);
MoveSelectionDestroyCursorAt(gMultiUsePlayerCursor);
@@ -773,7 +773,7 @@ static void HandleMoveSwitching(void)
MoveSelectionDisplayPpNumber();
MoveSelectionDisplayMoveType();
}
- else if (gMain.newKeys & DPAD_LEFT)
+ else if (JOY_NEW(DPAD_LEFT))
{
if (gMultiUsePlayerCursor & 1)
{
@@ -791,7 +791,7 @@ static void HandleMoveSwitching(void)
MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27);
}
}
- else if (gMain.newKeys & DPAD_RIGHT)
+ else if (JOY_NEW(DPAD_RIGHT))
{
if (!(gMultiUsePlayerCursor & 1) && (gMultiUsePlayerCursor ^ 1) < gNumberOfMovesToChoose)
{
@@ -809,7 +809,7 @@ static void HandleMoveSwitching(void)
MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27);
}
}
- else if (gMain.newKeys & DPAD_UP)
+ else if (JOY_NEW(DPAD_UP))
{
if (gMultiUsePlayerCursor & 2)
{
@@ -827,7 +827,7 @@ static void HandleMoveSwitching(void)
MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27);
}
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
if (!(gMultiUsePlayerCursor & 2) && (gMultiUsePlayerCursor ^ 2) < gNumberOfMovesToChoose)
{
@@ -951,13 +951,13 @@ static void sub_805896C(void)
var = TRUE;
}
- if (var && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1)
+ if (var && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
@@ -976,9 +976,12 @@ static void sub_8058B40(void)
bool32 r9 = FALSE;
bool32 r8 = FALSE;
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
+
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
@@ -1050,12 +1053,12 @@ static void sub_8058B40(void)
static void sub_8058EDC(void)
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
&& gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
CopyBattleSpriteInvisibility(gActiveBattler);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
@@ -1079,11 +1082,9 @@ static void sub_8058FC0(void)
static void sub_805902C(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
- {
TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
- }
if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
@@ -1401,21 +1402,21 @@ static void DoHitAnimBlinkSpriteEffect(void)
static void PlayerHandleUnknownYesNoInput(void)
{
- if (gMain.newKeys & DPAD_UP && gMultiUsePlayerCursor != 0)
+ if (JOY_NEW(DPAD_UP) && gMultiUsePlayerCursor != 0)
{
PlaySE(SE_SELECT);
BattleDestroyYesNoCursorAt(gMultiUsePlayerCursor);
gMultiUsePlayerCursor = 0;
BattleCreateYesNoCursorAt(0);
}
- if (gMain.newKeys & DPAD_DOWN && gMultiUsePlayerCursor == 0)
+ if (JOY_NEW(DPAD_DOWN) && gMultiUsePlayerCursor == 0)
{
PlaySE(SE_SELECT);
BattleDestroyYesNoCursorAt(gMultiUsePlayerCursor);
gMultiUsePlayerCursor = 1;
BattleCreateYesNoCursorAt(1);
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
HandleBattleWindow(0x18, 8, 0x1D, 0xD, WINDOW_CLEAR);
PlaySE(SE_SELECT);
@@ -1427,7 +1428,7 @@ static void PlayerHandleUnknownYesNoInput(void)
PlayerBufferExecCompleted();
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
HandleBattleWindow(0x18, 8, 0x1D, 0xD, WINDOW_CLEAR);
PlaySE(SE_SELECT);
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c
index 7796bef09..af6b739cc 100644
--- a/src/battle_controller_player_partner.c
+++ b/src/battle_controller_player_partner.c
@@ -544,10 +544,10 @@ static void sub_81BB9A0(void)
static void sub_81BB9F4(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
@@ -565,7 +565,7 @@ static void sub_81BB9F4(void)
static void sub_81BBAE8(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
index 76e84da41..ca7cd4adc 100644
--- a/src/battle_controller_recorded_opponent.c
+++ b/src/battle_controller_recorded_opponent.c
@@ -239,15 +239,15 @@ static void sub_8186678(void)
{
if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_LEFT)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
return;
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
return;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
}
@@ -262,9 +262,12 @@ static void sub_818686C(void)
bool32 r9 = FALSE;
bool32 r8 = FALSE;
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
+
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
@@ -348,16 +351,16 @@ static void sub_8186C48(void)
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
&& gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
{
TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
}
else
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
RecordedOpponentBufferExecCompleted();
@@ -455,11 +458,11 @@ static void sub_8186F14(void)
static void sub_8186F94(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
&& gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
@@ -477,10 +480,8 @@ static void sub_8186F94(void)
static void sub_8187084(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80)
- {
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
- }
if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c
index 387586f88..72af27d5e 100644
--- a/src/battle_controller_recorded_player.c
+++ b/src/battle_controller_recorded_player.c
@@ -224,14 +224,14 @@ static void sub_8189AA0(void)
}
}
- if (r6 && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1)
+ if (r6 && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
@@ -277,16 +277,13 @@ static void sub_8189D40(void)
if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
- {
TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
- }
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80
+
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
- {
TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
- }
}
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
@@ -439,10 +436,10 @@ static void sub_818A328(void)
static void sub_818A37C(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
@@ -460,8 +457,8 @@ static void sub_818A37C(void)
static void sub_818A470(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
}
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index c39b904c9..9cb427e12 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -170,7 +170,7 @@ static void SafariBufferRunCommand(void)
static void HandleInputChooseAction(void)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
@@ -191,7 +191,7 @@ static void HandleInputChooseAction(void)
}
SafariBufferExecCompleted();
}
- else if (gMain.newKeys & DPAD_LEFT)
+ else if (JOY_NEW(DPAD_LEFT))
{
if (gActionSelectionCursor[gActiveBattler] & 1)
{
@@ -201,7 +201,7 @@ static void HandleInputChooseAction(void)
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
}
}
- else if (gMain.newKeys & DPAD_RIGHT)
+ else if (JOY_NEW(DPAD_RIGHT))
{
if (!(gActionSelectionCursor[gActiveBattler] & 1))
{
@@ -211,7 +211,7 @@ static void HandleInputChooseAction(void)
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
}
}
- else if (gMain.newKeys & DPAD_UP)
+ else if (JOY_NEW(DPAD_UP))
{
if (gActionSelectionCursor[gActiveBattler] & 2)
{
@@ -221,7 +221,7 @@ static void HandleInputChooseAction(void)
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
}
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
if (!(gActionSelectionCursor[gActiveBattler] & 2))
{
@@ -389,7 +389,7 @@ static void SafariHandleSuccessBallThrowAnim(void)
{
gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS;
gDoingBattleAnim = TRUE;
- InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW);
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW_WITH_TRAINER);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone;
}
@@ -399,7 +399,7 @@ static void SafariHandleBallThrowAnim(void)
gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId;
gDoingBattleAnim = TRUE;
- InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW);
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW_WITH_TRAINER);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone;
}
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index a26694a8e..aa50bc159 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -285,9 +285,12 @@ static void CompleteOnChosenItem(void)
static void sub_816864C(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
+
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
@@ -320,14 +323,14 @@ static void sub_8168818(void)
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
r4 = TRUE;
- if (r4 && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1)
+ if (r4 && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
@@ -1076,7 +1079,7 @@ static void WallyHandleSuccessBallThrowAnim(void)
{
gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS;
gDoingBattleAnim = TRUE;
- InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW);
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW_WITH_TRAINER);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedAnimation;
}
@@ -1086,7 +1089,7 @@ static void WallyHandleBallThrowAnim(void)
gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId;
gDoingBattleAnim = TRUE;
- InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW);
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW_WITH_TRAINER);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedAnimation;
}
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index 7f78c1ac9..3ebc5d3bd 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -13,7 +13,6 @@
#include "task.h"
#include "util.h"
#include "constants/abilities.h"
-#include "constants/species.h"
static EWRAM_DATA u8 sLinkSendTaskId = 0;
static EWRAM_DATA u8 sLinkReceiveTaskId = 0;
diff --git a/src/battle_dome.c b/src/battle_dome.c
index 3654d2ccf..0d1bee8cf 100644
--- a/src/battle_dome.c
+++ b/src/battle_dome.c
@@ -33,7 +33,6 @@
#include "graphics.h"
#include "constants/battle_dome.h"
#include "constants/frontier_util.h"
-#include "constants/species.h"
#include "constants/moves.h"
#include "constants/pokemon.h"
#include "constants/trainers.h"
@@ -49,7 +48,7 @@
// An 'Info Card' is a trainer or match information page that can be viewed on the Tourney Tree
struct TourneyTreeInfoCard
{
- u8 spriteIds[NUM_INFOCARD_SPRITES];
+ u8 spriteIds[NUM_INFOCARD_SPRITES];
u8 pos;
u8 tournamentIds[NUM_INFOCARD_TRAINERS];
};
@@ -499,7 +498,7 @@ static const u8 sBattleStyleMovePoints[MOVES_COUNT][NUM_MOVE_POINT_TYPES] =
[MOVE_PSYCHO_BOOST] = {[MOVE_POINTS_DMG] = 1, [MOVE_POINTS_POWERFUL] = 1, [MOVE_POINTS_STRONG] = 1, [MOVE_POINTS_LOW_PP] = 1, [MOVE_POINTS_EFFECT] = 1},
};
-// This array is searched in-order to determine what battle style a tourney trainer uses.
+// This array is searched in-order to determine what battle style a tourney trainer uses.
// If the sum of the points for the party's moves meets/exceeds all the point totals of an element, then they use that battle style
static const u8 sBattleStyleThresholds[NUM_BATTLE_STYLES - 1][NUM_MOVE_POINT_TYPES] =
{
@@ -864,7 +863,9 @@ static const struct WindowTemplate sInfoCardWindowTemplates[] =
.paletteNum = 15,
.baseBlock = 372,
},
- // UB: No DUMMY_WIN_TEMPLATE at the array's end.
+ #ifdef UBFIX
+ DUMMY_WIN_TEMPLATE,
+ #endif
};
static const struct ScanlineEffectParams sTourneyTreeScanlineEffectParams =
@@ -1188,11 +1189,11 @@ static const u8 sIdToMatchNumber[DOME_TOURNAMENT_TRAINERS_COUNT][DOME_ROUNDS_COU
{ 7, 11, 13, 14},
};
-static const u8 sLastMatchCardNum[DOME_ROUNDS_COUNT] =
+static const u8 sLastMatchCardNum[DOME_ROUNDS_COUNT] =
{
- [DOME_ROUND1] = 23,
- [DOME_ROUND2] = 27,
- [DOME_SEMIFINAL] = 29,
+ [DOME_ROUND1] = 23,
+ [DOME_ROUND2] = 27,
+ [DOME_SEMIFINAL] = 29,
[DOME_FINAL] = 30
};
@@ -1324,12 +1325,12 @@ static const u8 sSpeciesNameTextYCoords[] = {0, 4, 0};
// Offsets within sBattleDomeOpponentStatsTexts for stat combinations
// SPDEF has no offset because by then all stat combinations have been reached, so it has no combination texts
-static const u8 sStatTextOffsets[NUM_STATS - 1] =
+static const u8 sStatTextOffsets[NUM_STATS - 1] =
{
- DOME_TEXT_HP,
- DOME_TEXT_ATK,
- DOME_TEXT_DEF,
- DOME_TEXT_SPEED,
+ DOME_TEXT_HP,
+ DOME_TEXT_ATK,
+ DOME_TEXT_DEF,
+ DOME_TEXT_SPEED,
DOME_TEXT_SPATK
};
@@ -1421,7 +1422,7 @@ static const u8 sTrainerNamePositions[DOME_TOURNAMENT_TRAINERS_COUNT][2] =
static const u8 sTourneyTreePokeballCoords[DOME_TOURNAMENT_TRAINERS_COUNT + DOME_TOURNAMENT_MATCHES_COUNT][2] =
{
{ 68, 33}, // Left side trainers
- { 68, 49},
+ { 68, 49},
{ 68, 65},
{ 68, 81},
{ 68, 97},
@@ -1495,7 +1496,7 @@ static const u8 sTourneyTreePokeballCoords[DOME_TOURNAMENT_TRAINERS_COUNT + DOME
{.src = 0x6021, .y = 0x10, .x = 0x09}, \
{.src = 0x6023, .y = 0x10, .x = 0x0a}, \
{.src = 0x6047, .y = 0x11, .x = 0x0a}, \
- {.src = lastSrc, .y = 0x11, .x = 0x0b},
+ {.src = lastSrc, .y = 0x11, .x = 0x0b},
#define LINESECTION_ROUND1_TRAINER4(lastSrc) \
{.src = 0x602b, .y = 0x12, .x = 0x09}, \
@@ -2395,7 +2396,7 @@ static void InitDomeTrainers(void)
rankingScores[i] += (monTypesCount * monLevel) / 20;
}
- // Seed tourney trainers according to their ranking
+ // Seed tourney trainers according to their ranking
for (i = 0; i < DOME_TOURNAMENT_TRAINERS_COUNT - 1; i++)
{
for (j = i + 1; j < DOME_TOURNAMENT_TRAINERS_COUNT; j++)
@@ -2527,7 +2528,11 @@ static void CreateDomeOpponentMon(u8 monPartyId, u16 tournamentTrainerId, u8 tou
{
int i;
u8 friendship = MAX_FRIENDSHIP;
- u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Should be using (DOME_TRAINERS[tournamentTrainerId].trainerId) instead of (tournamentTrainerId). As a result, all Pokemon have ivs of 3.
+ #ifdef BUGFIX
+ u8 fixedIv = GetDomeTrainerMonIvs(DOME_TRAINERS[tournamentTrainerId].trainerId);
+ #else
+ u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Using the wrong ID. As a result, all Pokemon have ivs of 3.
+ #endif
u8 level = SetFacilityPtrsGetLevel();
CreateMonWithEVSpreadNatureOTID(&gEnemyParty[monPartyId],
gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].species,
@@ -2676,7 +2681,7 @@ static int SelectOpponentMonsFromParty(int *partyMovePoints, bool8 allowRandom)
partyPositions[i] = i;
// All party mons have equal move score totals, choose randomly
- if (partyMovePoints[0] == partyMovePoints[1]
+ if (partyMovePoints[0] == partyMovePoints[1]
&& partyMovePoints[0] == partyMovePoints[2])
{
if (allowRandom)
@@ -2731,9 +2736,6 @@ static int SelectOpponentMonsFromParty(int *partyMovePoints, bool8 allowRandom)
#define TYPE_x2 40
#define TYPE_x4 80
-// Functionally equivalent, while loop is impossible to match.
-// arg2 is either 2, a personality, or an OTID
-#ifdef NONMATCHING
static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2)
{
int defType1, defType2, defAbility, moveType;
@@ -2762,13 +2764,15 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2)
i += 3;
continue;
}
- else if (TYPE_EFFECT_ATK_TYPE(i) == moveType)
+ if (TYPE_EFFECT_ATK_TYPE(i) == moveType)
{
- // BUG: * 2 is not necessary and makes the condition always false if the ability is wonder guard.
- if (TYPE_EFFECT_DEF_TYPE(i) == defType1 && (defAbility != ABILITY_WONDER_GUARD || TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE * 2))
- typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10;
- if (TYPE_EFFECT_DEF_TYPE(i) == defType2 && defType1 != defType2 && (defAbility != ABILITY_WONDER_GUARD || TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE * 2))
- typePower = (typePower * TYPE_EFFECT_MULTIPLIER(i)) / 10;
+ // BUG: TYPE_x2 is not necessary and makes the condition always false if the ability is wonder guard.
+ 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;
}
i += 3;
}
@@ -2848,247 +2852,6 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int arg2)
return typePower;
}
-#else
-NAKED
-static int GetTypeEffectivenessPoints(int move, int species, int arg2)
-{
- asm_unified("\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x8\n\
- adds r3, r0, 0\n\
- adds r4, r1, 0\n\
- str r2, [sp]\n\
- movs r6, 0\n\
- movs r2, 0x14\n\
- cmp r3, 0\n\
- beq _0818FFF0\n\
- ldr r0, =0x0000ffff\n\
- cmp r3, r0\n\
- beq _0818FFF0\n\
- ldr r0, =gBattleMoves\n\
- lsls r1, r3, 1\n\
- adds r1, r3\n\
- lsls r1, 2\n\
- adds r3, r1, r0\n\
- ldrb r0, [r3, 0x1]\n\
- cmp r0, 0\n\
- bne _0818FFFC\n\
-_0818FFF0:\n\
- movs r0, 0\n\
- b _08190156\n\
- .pool\n\
-_0818FFFC:\n\
- ldr r1, =gBaseStats\n\
- lsls r0, r4, 3\n\
- subs r0, r4\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x6]\n\
- mov r10, r1\n\
- ldrb r1, [r0, 0x7]\n\
- mov r9, r1\n\
- ldrb r0, [r0, 0x16]\n\
- mov r8, r0\n\
- ldrb r3, [r3, 0x2]\n\
- str r3, [sp, 0x4]\n\
- cmp r0, 0x1A\n\
- bne _0819002C\n\
- cmp r3, 0x4\n\
- bne _0819002C\n\
- ldr r0, [sp]\n\
- cmp r0, 0x1\n\
- bne _081900AA\n\
- movs r2, 0x8\n\
- b _081900A4\n\
- .pool\n\
-_0819002C:\n\
- ldr r0, =gTypeEffectiveness\n\
- adds r1, r6, r0\n\
- ldrb r0, [r1]\n\
- ldr r7, =gTypeEffectiveness\n\
- cmp r0, 0xFF\n\
- beq _081900A4\n\
- adds r4, r1, 0\n\
-_0819003A:\n\
- ldrb r0, [r4]\n\
- cmp r0, 0xFE\n\
- beq _08190096\n\
- ldrb r0, [r4]\n\
- ldr r1, [sp, 0x4]\n\
- cmp r0, r1\n\
- bne _08190096\n\
- ldrb r0, [r4, 0x1]\n\
- adds r5, r6, 0x1\n\
- cmp r0, r10\n\
- bne _0819006C\n\
- adds r1, r6, 0x2\n\
- mov r0, r8\n\
- cmp r0, 0x19\n\
- bne _0819005E\n\
- ldrb r0, [r4, 0x2]\n\
- cmp r0, 0x28\n\
- bne _0819006C\n\
-_0819005E:\n\
- adds r0, r1, r7\n\
- ldrb r0, [r0]\n\
- muls r0, r2\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r2, r0, 0\n\
-_0819006C:\n\
- adds r0, r5, r7\n\
- ldrb r0, [r0]\n\
- cmp r0, r9\n\
- bne _08190096\n\
- cmp r10, r9\n\
- beq _08190096\n\
- adds r1, r6, 0x2\n\
- mov r0, r8\n\
- cmp r0, 0x19\n\
- bne _08190088\n\
- adds r0, r1, r7\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x28\n\
- bne _08190096\n\
-_08190088:\n\
- adds r0, r1, r7\n\
- ldrb r0, [r0]\n\
- muls r0, r2\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r2, r0, 0\n\
-_08190096:\n\
- adds r4, 0x3\n\
- adds r6, 0x3\n\
- ldr r1, =gTypeEffectiveness\n\
- adds r0, r6, r1\n\
- ldrb r0, [r0]\n\
- cmp r0, 0xFF\n\
- bne _0819003A\n\
-_081900A4:\n\
- ldr r0, [sp]\n\
- cmp r0, 0x1\n\
- beq _081900E0\n\
-_081900AA:\n\
- ldr r1, [sp]\n\
- cmp r1, 0x1\n\
- bgt _081900BC\n\
- cmp r1, 0\n\
- beq _081900C4\n\
- b _08190154\n\
- .pool\n\
-_081900BC:\n\
- ldr r0, [sp]\n\
- cmp r0, 0x2\n\
- beq _08190114\n\
- b _08190154\n\
-_081900C4:\n\
- cmp r2, 0xA\n\
- beq _08190146\n\
- cmp r2, 0xA\n\
- ble _08190146\n\
- cmp r2, 0x28\n\
- beq _0819014A\n\
- cmp r2, 0x28\n\
- bgt _081900DA\n\
- cmp r2, 0x14\n\
- beq _08190104\n\
- b _08190146\n\
-_081900DA:\n\
- cmp r2, 0x50\n\
- bne _08190146\n\
- b _08190100\n\
-_081900E0:\n\
- cmp r2, 0xA\n\
- beq _08190104\n\
- cmp r2, 0xA\n\
- bgt _081900F2\n\
- cmp r2, 0\n\
- beq _08190100\n\
- cmp r2, 0x5\n\
- beq _0819014A\n\
- b _08190146\n\
-_081900F2:\n\
- cmp r2, 0x28\n\
- beq _08190108\n\
- cmp r2, 0x28\n\
- ble _08190146\n\
- cmp r2, 0x50\n\
- beq _0819010E\n\
- b _08190146\n\
-_08190100:\n\
- movs r2, 0x8\n\
- b _08190154\n\
-_08190104:\n\
- movs r2, 0x2\n\
- b _08190154\n\
-_08190108:\n\
- movs r2, 0x2\n\
- negs r2, r2\n\
- b _08190154\n\
-_0819010E:\n\
- movs r2, 0x4\n\
- negs r2, r2\n\
- b _08190154\n\
-_08190114:\n\
- cmp r2, 0xA\n\
- beq _08190146\n\
- cmp r2, 0xA\n\
- bgt _08190126\n\
- cmp r2, 0\n\
- beq _0819013A\n\
- cmp r2, 0x5\n\
- beq _08190140\n\
- b _08190146\n\
-_08190126:\n\
- cmp r2, 0x28\n\
- beq _0819014E\n\
- cmp r2, 0x28\n\
- bgt _08190134\n\
- cmp r2, 0x14\n\
- beq _0819014A\n\
- b _08190146\n\
-_08190134:\n\
- cmp r2, 0x50\n\
- beq _08190152\n\
- b _08190146\n\
-_0819013A:\n\
- movs r2, 0x10\n\
- negs r2, r2\n\
- b _08190154\n\
-_08190140:\n\
- movs r2, 0x8\n\
- negs r2, r2\n\
- b _08190154\n\
-_08190146:\n\
- movs r2, 0\n\
- b _08190154\n\
-_0819014A:\n\
- movs r2, 0x4\n\
- b _08190154\n\
-_0819014E:\n\
- movs r2, 0xC\n\
- b _08190154\n\
-_08190152:\n\
- movs r2, 0x14\n\
-_08190154:\n\
- adds r0, r2, 0\n\
-_08190156:\n\
- add sp, 0x8\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- ");
-}
-#endif // NONMATCHING
// Duplicate of GetFrontierTrainerFixedIvs
// NOTE: In CreateDomeOpponentMon a tournament trainer ID (0-15) is passed instead, resulting in all IVs of 3
@@ -4353,7 +4116,7 @@ static u8 Task_GetInfoCardInput(u8 taskId)
u8 tourneyId = sTourneyTreeTrainerIds[position];
u16 roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
input = INFOCARD_INPUT_AB;
// Next opponent card cant scroll
@@ -4364,7 +4127,7 @@ static u8 Task_GetInfoCardInput(u8 taskId)
{
// For trainer info cards, pos is 0 when on a trainer info card (not viewing that trainer's match progression)
// Scrolling up/down from a trainer info card goes to other trainer info cards
- if (gMain.newKeys & DPAD_UP && sInfoCard->pos == 0)
+ if (JOY_NEW(DPAD_UP) && sInfoCard->pos == 0)
{
if (position == 0)
position = DOME_TOURNAMENT_TRAINERS_COUNT - 1;
@@ -4372,7 +4135,7 @@ static u8 Task_GetInfoCardInput(u8 taskId)
position--;
input = TRAINERCARD_INPUT_UP;
}
- else if (gMain.newKeys & DPAD_DOWN && sInfoCard->pos == 0)
+ else if (JOY_NEW(DPAD_DOWN) && sInfoCard->pos == 0)
{
if (position == DOME_TOURNAMENT_TRAINERS_COUNT - 1)
position = 0;
@@ -4381,13 +4144,13 @@ static u8 Task_GetInfoCardInput(u8 taskId)
input = TRAINERCARD_INPUT_DOWN;
}
// Scrolling left can only be done after scrolling right
- else if (gMain.newKeys & DPAD_LEFT && sInfoCard->pos != 0)
+ else if (JOY_NEW(DPAD_LEFT) && sInfoCard->pos != 0)
{
sInfoCard->pos--;
input = TRAINERCARD_INPUT_LEFT;
}
// Scrolling right from a trainer info card shows their match progression
- else if (gMain.newKeys & DPAD_RIGHT)
+ else if (JOY_NEW(DPAD_RIGHT))
{
// Can only scroll right from a trainer card until the round they were eliminated
if (DOME_TRAINERS[tourneyId].isEliminated && sInfoCard->pos - 1 < DOME_TRAINERS[tourneyId].eliminatedAt)
@@ -4415,7 +4178,7 @@ static u8 Task_GetInfoCardInput(u8 taskId)
{
// For match info cards, pos is 1 when on the match card, 0 when on the left trainer, and 1 when on the right trainer
// Scrolling up/down from a match info card goes to the next/previous match
- if (gMain.newKeys & DPAD_UP && sInfoCard->pos == 1)
+ if (JOY_NEW(DPAD_UP) && sInfoCard->pos == 1)
{
if (position == DOME_TOURNAMENT_TRAINERS_COUNT)
position = sLastMatchCardNum[roundId];
@@ -4423,7 +4186,7 @@ static u8 Task_GetInfoCardInput(u8 taskId)
position--;
input = MATCHCARD_INPUT_UP;
}
- else if (gMain.newKeys & DPAD_DOWN && sInfoCard->pos == 1)
+ else if (JOY_NEW(DPAD_DOWN) && sInfoCard->pos == 1)
{
if (position == sLastMatchCardNum[roundId])
position = DOME_TOURNAMENT_TRAINERS_COUNT;
@@ -4432,12 +4195,12 @@ static u8 Task_GetInfoCardInput(u8 taskId)
input = MATCHCARD_INPUT_DOWN;
}
// Scrolling left/right from a match info card shows the trainer info card of the competitors for that match
- else if (gMain.newKeys & DPAD_LEFT && sInfoCard->pos != 0)
+ else if (JOY_NEW(DPAD_LEFT) && sInfoCard->pos != 0)
{
input = MATCHCARD_INPUT_LEFT;
sInfoCard->pos--;
}
- else if (gMain.newKeys & DPAD_RIGHT && (sInfoCard->pos == 0 || sInfoCard->pos == 1))
+ else if (JOY_NEW(DPAD_RIGHT) && (sInfoCard->pos == 0 || sInfoCard->pos == 1))
{
input = MATCHCARD_INPUT_RIGHT;
sInfoCard->pos++;
@@ -4538,7 +4301,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId)
if (flags & MOVE_CARD)
gSprites[sInfoCard->spriteIds[2 + i + arrId]].invisible = TRUE;
}
-
+
// Initialize the text printer
textPrinter.fontId = 2;
textPrinter.x = 0;
@@ -4776,7 +4539,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId)
// If 2 good stats have been found already, choose which to use
if (i == 2)
{
-
+
if (allocatedArray[6] < allocatedArray[k])
{
if (allocatedArray[7] < allocatedArray[k])
@@ -4893,7 +4656,7 @@ static int BufferDomeWinString(u8 matchNum, u8 *tournamentIds)
for (i = sCompetitorRangeByMatch[matchNum][0]; i < sCompetitorRangeByMatch[matchNum][0] + sCompetitorRangeByMatch[matchNum][1]; i++)
{
tournamentId = sTourneyTreeTrainerIds2[i];
-
+
if (DOME_TRAINERS[tournamentId].isEliminated
&& DOME_TRAINERS[tournamentId].eliminatedAt >= sCompetitorRangeByMatch[matchNum][2])
{
@@ -5285,12 +5048,12 @@ static u8 UpdateTourneyTreeCursor(u8 taskId)
int tourneyTreeCursorSpriteId = gTasks[taskId].data[1];
int roundId = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
- if (gMain.newKeys == B_BUTTON || (gMain.newKeys & A_BUTTON && tourneyTreeCursorSpriteId == TOURNEY_TREE_CLOSE_BUTTON))
+ if (gMain.newKeys == B_BUTTON || (JOY_NEW(A_BUTTON) && tourneyTreeCursorSpriteId == TOURNEY_TREE_CLOSE_BUTTON))
{
PlaySE(SE_SELECT);
selection = TOURNEY_TREE_SELECTED_CLOSE;
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
if (tourneyTreeCursorSpriteId < DOME_TOURNAMENT_TRAINERS_COUNT)
{
@@ -5353,7 +5116,7 @@ static void ResolveDomeRoundWinners(void)
DOME_TRAINERS[TrainerIdToTournamentId(gTrainerBattleOpponent_A)].isEliminated = TRUE;
DOME_TRAINERS[TrainerIdToTournamentId(gTrainerBattleOpponent_A)].eliminatedAt = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
gSaveBlock2Ptr->frontier.domeWinningMoves[TrainerIdToTournamentId(gTrainerBattleOpponent_A)] = gBattleResults.lastUsedMovePlayer;
-
+
// If the player's match was the final one, no NPC vs NPC matches to decide
if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < DOME_FINAL)
DecideRoundWinners(gSaveBlock2Ptr->frontier.curChallengeBattleNum);
@@ -5363,7 +5126,7 @@ static void ResolveDomeRoundWinners(void)
DOME_TRAINERS[TrainerIdToTournamentId(TRAINER_PLAYER)].isEliminated = TRUE;
DOME_TRAINERS[TrainerIdToTournamentId(TRAINER_PLAYER)].eliminatedAt = gSaveBlock2Ptr->frontier.curChallengeBattleNum;
gSaveBlock2Ptr->frontier.domeWinningMoves[TrainerIdToTournamentId(TRAINER_PLAYER)] = gBattleResults.lastUsedMoveOpponent;
-
+
if (gBattleOutcome == B_OUTCOME_FORFEITED || gSpecialVar_0x8005 == DOME_PLAYER_RETIRED)
DOME_TRAINERS[TrainerIdToTournamentId(TRAINER_PLAYER)].forfeited = TRUE;
@@ -5401,7 +5164,7 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun
movePower = 40;
else if (movePower == 1)
movePower = 60;
- else if (moveIds[i * MAX_MON_MOVES + j] == MOVE_SELF_DESTRUCT
+ else if (moveIds[i * MAX_MON_MOVES + j] == MOVE_SELF_DESTRUCT
|| moveIds[i * MAX_MON_MOVES + j] == MOVE_EXPLOSION)
movePower /= 2;
@@ -5534,7 +5297,7 @@ static void Task_ShowTourneyTree(u8 taskId)
gTasks[taskId].tState++;
break;
case 2:
- sTilemapBuffer = AllocZeroed(0x800);
+ sTilemapBuffer = AllocZeroed(BG_SCREEN_SIZE);
LZDecompressWram(gDomeTourneyLineMask_Tilemap, sTilemapBuffer);
SetBgTilemapBuffer(1, sTilemapBuffer);
CopyBgTilemapBufferToVram(1);
@@ -5558,7 +5321,7 @@ static void Task_ShowTourneyTree(u8 taskId)
{
for (i = 0; i < ARRAY_COUNT(sTourneyTreePokeballCoords); i++)
CreateSprite(&sTourneyTreePokeballSpriteTemplate, sTourneyTreePokeballCoords[i][0], sTourneyTreePokeballCoords[i][1], 0);
-
+
if (gTasks[taskId].tIsPrevTourneyTree)
CreateSprite(&sExitButtonSpriteTemplate, 218, 12, 0);
else
@@ -5698,7 +5461,7 @@ static void Task_ShowTourneyTree(u8 taskId)
gTasks[i].tState = 0;
}
ScanlineEffect_Clear();
-
+
i = 0;
while (i < 91)
{
@@ -5713,7 +5476,7 @@ static void Task_ShowTourneyTree(u8 taskId)
gScanlineEffectRegBuffers[1][i] = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_CHARBASE(2) | BGCNT_TXT256x256;
i++;
}
-
+
ScanlineEffect_SetParams(sTourneyTreeScanlineEffectParams);
DestroyTask(taskId);
break;
@@ -5794,7 +5557,7 @@ static void Task_HandleStaticTourneyTreeInput(u8 taskId)
gTasks[taskId].tState = STATE_WAIT_FOR_INPUT;
break;
case STATE_WAIT_FOR_INPUT:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].tState = STATE_CLOSE_TOURNEY_TREE;
@@ -5851,67 +5614,67 @@ static void HblankCb_TourneyTree(void)
if (vCount < 42)
{
- REG_WININ = WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ
+ REG_WININ = WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ
| WININ_WIN1_BG_ALL | WININ_WIN1_CLR | WININ_WIN1_OBJ;
SET_WIN0H_WIN1H(0, 0);
}
else if (vCount < 50)
{
- REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR
+ REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR
| WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR;
SET_WIN0H_WIN1H(WIN_RANGE(152, 155), WIN_RANGE(85, 88));
}
else if (vCount < 58)
{
- REG_WININ = WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ
+ REG_WININ = WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ
| WININ_WIN1_BG_ALL | WININ_WIN1_CLR | WININ_WIN1_OBJ;
SET_WIN0H_WIN1H(0, 0);
}
else if (vCount < 75)
{
- REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR
+ REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR
| WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR;
SET_WIN0H_WIN1H(WIN_RANGE(144, 152), WIN_RANGE(88, 96));
}
else if (vCount < 82)
{
- REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR
+ REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR
| WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR;
SET_WIN0H_WIN1H(WIN_RANGE(152, 155), WIN_RANGE(85, 88));
}
else if (vCount < 95)
{
- REG_WININ = WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ
+ REG_WININ = WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ
| WININ_WIN1_BG_ALL | WININ_WIN1_CLR | WININ_WIN1_OBJ;
SET_WIN0H_WIN1H(0, 0);
}
else if (vCount < 103)
{
- REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR
+ REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR
| WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_OBJ | WININ_WIN1_CLR;
SET_WIN0H_WIN1H(WIN_RANGE(152, 155), WIN_RANGE(85, 88));
}
else if (vCount < 119)
{
- REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR
+ REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR
| WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_OBJ | WININ_WIN1_CLR;
SET_WIN0H_WIN1H(WIN_RANGE(144, 152), WIN_RANGE(88, 96));
}
else if (vCount < 127)
{
- REG_WININ = WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ
+ REG_WININ = WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ
| WININ_WIN1_BG_ALL | WININ_WIN1_CLR | WININ_WIN1_OBJ;
SET_WIN0H_WIN1H(0, 0);
}
else if (vCount < 135)
{
- REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR
+ REG_WININ = WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR
| WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_OBJ | WININ_WIN1_CLR;
SET_WIN0H_WIN1H(WIN_RANGE(152, 155), WIN_RANGE(85, 88));
}
else
{
- REG_WININ = WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ
+ REG_WININ = WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ
| WININ_WIN1_BG_ALL | WININ_WIN1_CLR | WININ_WIN1_OBJ;
SET_WIN0H_WIN1H(0, 0);
}
@@ -6207,6 +5970,10 @@ static void DecideRoundWinners(u8 roundId)
else if (tournamentId2 != 0xFF)
{
// BUG: points1 and points2 are not cleared at the beginning of the loop resulting in not fair results.
+ #ifdef BUGFIX
+ points1 = 0;
+ points2 = 0;
+ #endif
// Calculate points for both trainers.
for (monId1 = 0; monId1 < FRONTIER_PARTY_SIZE; monId1++)
diff --git a/src/battle_factory.c b/src/battle_factory.c
index 8a94dff0c..9ba13b0d3 100644
--- a/src/battle_factory.c
+++ b/src/battle_factory.c
@@ -8,7 +8,6 @@
#include "frontier_util.h"
#include "battle_tower.h"
#include "random.h"
-#include "constants/species.h"
#include "constants/battle_ai.h"
#include "constants/battle_factory.h"
#include "constants/battle_frontier.h"
@@ -216,7 +215,7 @@ static void InitFactoryChallenge(void)
for (i = 0; i < 6; i++)
gSaveBlock2Ptr->frontier.rentalMons[i].monId = 0xFFFF;
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
- gUnknown_03006298[i] = 0xFFFF;
+ gFrontierTempParty[i] = 0xFFFF;
SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
gTrainerBattleOpponent_A = 0;
@@ -364,7 +363,7 @@ static void GenerateOpponentMons(void)
species[i] = gFacilityTrainerMons[monId].species;
heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId];
- gUnknown_03006298[i] = monId;
+ gFrontierTempParty[i] = monId;
i++;
}
}
@@ -385,11 +384,11 @@ static void SetRentalsToOpponentParty(void)
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
{
- gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].monId = gUnknown_03006298[i];
+ gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].monId = gFrontierTempParty[i];
gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].ivs = GetBoxMonData(&gEnemyParty[i].box, MON_DATA_ATK_IV, NULL);
gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].personality = GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY, NULL);
gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].abilityNum = GetBoxMonData(&gEnemyParty[i].box, MON_DATA_ABILITY_NUM, NULL);
- SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[gUnknown_03006298[i]].itemTableId]);
+ SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[gFrontierTempParty[i]].itemTableId]);
}
}
@@ -604,7 +603,7 @@ static void GetOpponentMostCommonMonType(void)
typesCount[i] = 0;
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
{
- u32 species = gFacilityTrainerMons[gUnknown_03006298[i]].species;
+ u32 species = gFacilityTrainerMons[gFrontierTempParty[i]].species;
typesCount[gBaseStats[species].type1]++;
if (gBaseStats[species].type1 != gBaseStats[species].type2)
@@ -640,7 +639,7 @@ static void GetOpponentBattleStyle(void)
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
{
- u16 monId = gUnknown_03006298[i];
+ u16 monId = gFrontierTempParty[i];
for (j = 0; j < MAX_MON_MOVES; j++)
{
u8 battleStyle = GetMoveBattleStyle(gFacilityTrainerMons[monId].moves[j]);
diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c
index 9e0df2c77..1ceff5b98 100644
--- a/src/battle_factory_screen.c
+++ b/src/battle_factory_screen.c
@@ -1179,7 +1179,11 @@ static void CB2_InitSelectScreen(void)
LoadPalette(gFrontierFactorySelectMenu_Pal, 0, 0x40);
LoadPalette(sSelectText_Pal, 0xF0, 8);
LoadPalette(sSelectText_Pal, 0xE0, 10);
+#if UBFIX
+ if (sFactorySelectScreen && sFactorySelectScreen->fromSummaryScreen)
+#else
if (sFactorySelectScreen->fromSummaryScreen == TRUE)
+#endif
gPlttBufferUnfaded[228] = sFactorySelectScreen->speciesNameColorBackup;
LoadPalette(sMonPicBg_Pal, 0x20, 4);
gMain.state++;
@@ -1201,7 +1205,11 @@ static void CB2_InitSelectScreen(void)
SetVBlankCallback(VBlankCB_SelectScreen);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP);
+#if UBFIX
+ if (sFactorySelectScreen && sFactorySelectScreen->fromSummaryScreen)
+#else
if (sFactorySelectScreen->fromSummaryScreen == TRUE)
+#endif
{
Select_SetWinRegs(88, 152, 32, 96);
ShowBg(3);
@@ -1215,7 +1223,11 @@ static void CB2_InitSelectScreen(void)
gMain.state++;
break;
case 5:
+#if UBFIX
+ if (sFactorySelectScreen && sFactorySelectScreen->fromSummaryScreen)
+#else
if (sFactorySelectScreen->fromSummaryScreen == TRUE)
+#endif
sFactorySelectScreen->cursorPos = gLastViewedMonIndex;
Select_InitMonsData();
Select_InitAllSprites();
@@ -3318,7 +3330,11 @@ static void CB2_InitSwapScreen(void)
gMain.state++;
break;
case 5:
+#if UBFIX
+ if (sFactorySwapScreen && sFactorySwapScreen->fromSummaryScreen)
+#else
if (sFactorySwapScreen->fromSummaryScreen == TRUE)
+#endif
sFactorySwapScreen->cursorPos = gLastViewedMonIndex;
gMain.state++;
break;
@@ -4055,7 +4071,11 @@ static void Swap_ShowSummaryMonSprite(void)
personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
- sFactorySwapScreen->monPic.monSpriteId = CreateMonPicSprite_HandleDeoxys(species, personality, otId, TRUE, 88, 32, 15, 0xFFFF); // BUG: otId and personality should be switched.
+#ifdef BUGFIX
+ sFactorySwapScreen->monPic.monSpriteId = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, 88, 32, 15, 0xFFFF);
+#else
+ sFactorySwapScreen->monPic.monSpriteId = CreateMonPicSprite_HandleDeoxys(species, personality, otId, TRUE, 88, 32, 15, 0xFFFF);
+#endif
gSprites[sFactorySwapScreen->monPic.monSpriteId].centerToCornerVecX = 0;
gSprites[sFactorySwapScreen->monPic.monSpriteId].centerToCornerVecY = 0;
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index b1bb61aaf..c6db4ad42 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -6,6 +6,7 @@
#include "constants/battle_anim.h"
#include "battle_interface.h"
#include "main.h"
+#include "dma3.h"
#include "malloc.h"
#include "graphics.h"
#include "random.h"
@@ -17,7 +18,6 @@
#include "sound.h"
#include "party_menu.h"
#include "m4a.h"
-#include "constants/species.h"
#include "decompress.h"
#include "data.h"
#include "palette.h"
@@ -568,7 +568,7 @@ void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
otId = GetMonData(mon, MON_DATA_OT_ID);
position = GetBattlerPosition(battlerId);
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species],
- gMonSpritesGfxPtr->sprites[position],
+ gMonSpritesGfxPtr->sprites.ptr[position],
species, currentPersonality);
paletteOffset = 0x100 + battlerId * 16;
@@ -624,13 +624,13 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
if (sub_80688F8(1, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
{
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species],
- gMonSpritesGfxPtr->sprites[position],
+ gMonSpritesGfxPtr->sprites.ptr[position],
species, currentPersonality);
}
else
{
HandleLoadSpecialPokePic(&gMonBackPicTable[species],
- gMonSpritesGfxPtr->sprites[position],
+ gMonSpritesGfxPtr->sprites.ptr[position],
species, currentPersonality);
}
@@ -672,7 +672,7 @@ void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId)
{
u8 position = GetBattlerPosition(battlerId);
DecompressPicFromTable_2(&gTrainerFrontPicTable[frontPicId],
- gMonSpritesGfxPtr->sprites[position],
+ gMonSpritesGfxPtr->sprites.ptr[position],
SPECIES_NONE);
LoadCompressedSpritePalette(&gTrainerFrontPicPaletteTable[frontPicId]);
}
@@ -681,7 +681,7 @@ void DecompressTrainerBackPic(u16 backPicId, u8 battlerId)
{
u8 position = GetBattlerPosition(battlerId);
DecompressPicFromTable_2(&gTrainerBackPicTable[backPicId],
- gMonSpritesGfxPtr->sprites[position],
+ gMonSpritesGfxPtr->sprites.ptr[position],
SPECIES_NONE);
LoadCompressedPalette(gTrainerBackPicPaletteTable[backPicId].data,
0x100 + 16 * battlerId, 0x20);
@@ -921,7 +921,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
otId = gContestResources->moveAnim->otId;
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[targetSpecies],
- gMonSpritesGfxPtr->sprites[0],
+ gMonSpritesGfxPtr->sprites.ptr[0],
targetSpecies,
gContestResources->moveAnim->targetPersonality);
}
@@ -940,7 +940,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID);
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[targetSpecies],
- gMonSpritesGfxPtr->sprites[position],
+ gMonSpritesGfxPtr->sprites.ptr[position],
targetSpecies,
gTransformedPersonalities[battlerAtk]);
}
@@ -950,14 +950,14 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID);
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[targetSpecies],
- gMonSpritesGfxPtr->sprites[position],
+ gMonSpritesGfxPtr->sprites.ptr[position],
targetSpecies,
gTransformedPersonalities[battlerAtk]);
}
}
- src = gMonSpritesGfxPtr->sprites[position];
- dst = (void *)(VRAM + 0x10000 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32);
+ src = gMonSpritesGfxPtr->sprites.ptr[position];
+ dst = (void *)(OBJ_VRAM0 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32);
DmaCopy32(3, src, dst, 0x800);
paletteOffset = 0x100 + battlerAtk * 16;
lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(targetSpecies, otId, personalityValue);
@@ -997,29 +997,29 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite)
position = GetBattlerPosition(battlerId);
if (IsContest())
- LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[position]);
+ LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites.ptr[position]);
else if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
- LZDecompressVram(gSubstituteDollGfx, gMonSpritesGfxPtr->sprites[position]);
+ LZDecompressVram(gSubstituteDollGfx, gMonSpritesGfxPtr->sprites.ptr[position]);
else
- LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[position]);
+ LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites.ptr[position]);
for (i = 1; i < 4; i++)
{
- u8 (*ptr)[4][0x800] = gMonSpritesGfxPtr->sprites[position];
- ptr++;ptr--; // Needed to match.
-
- DmaCopy32Defvars(3, (*ptr)[0], (*ptr)[i], 0x800);
+ Dma3CopyLarge32_(gMonSpritesGfxPtr->sprites.ptr[position], &gMonSpritesGfxPtr->sprites.byte[position][0x800 * i], 0x800);
}
palOffset = (battlerId * 16) + 0x100;
LoadCompressedPalette(gSubstituteDollPal, palOffset, 32);
}
- else if (!IsContest())
+ else
{
- if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
- BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
- else
- BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battlerId]], battlerId);
+ if (!IsContest())
+ {
+ if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
+ BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
+ else
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battlerId]], battlerId);
+ }
}
}
@@ -1245,12 +1245,12 @@ void AllocateMonSpritesGfx(void)
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
- gMonSpritesGfxPtr->sprites[i] = gMonSpritesGfxPtr->firstDecompressed + (i * 0x2000);
+ gMonSpritesGfxPtr->sprites.ptr[i] = gMonSpritesGfxPtr->firstDecompressed + (i * 0x2000);
*(gMonSpritesGfxPtr->templates + i) = gUnknown_08329D98[i];
for (j = 0; j < 4; j++)
{
- gMonSpritesGfxPtr->field_74[i][j].data = gMonSpritesGfxPtr->sprites[i] + (j * 0x800);
+ gMonSpritesGfxPtr->field_74[i][j].data = gMonSpritesGfxPtr->sprites.ptr[i] + (j * 0x800);
gMonSpritesGfxPtr->field_74[i][j].size = 0x800;
}
@@ -1272,10 +1272,10 @@ void FreeMonSpritesGfx(void)
FREE_AND_SET_NULL(gMonSpritesGfxPtr->barFontGfx);
FREE_AND_SET_NULL(gMonSpritesGfxPtr->firstDecompressed);
- gMonSpritesGfxPtr->sprites[0] = NULL;
- gMonSpritesGfxPtr->sprites[1] = NULL;
- gMonSpritesGfxPtr->sprites[2] = NULL;
- gMonSpritesGfxPtr->sprites[3] = NULL;
+ gMonSpritesGfxPtr->sprites.ptr[0] = NULL;
+ gMonSpritesGfxPtr->sprites.ptr[1] = NULL;
+ gMonSpritesGfxPtr->sprites.ptr[2] = NULL;
+ gMonSpritesGfxPtr->sprites.ptr[3] = NULL;
FREE_AND_SET_NULL(gMonSpritesGfxPtr);
}
diff --git a/src/battle_interface.c b/src/battle_interface.c
index 719af6a06..adbef019d 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -15,7 +15,6 @@
#include "util.h"
#include "gpu_regs.h"
#include "battle_message.h"
-#include "constants/species.h"
#include "pokedex.h"
#include "palette.h"
#include "international_string_util.h"
diff --git a/src/battle_intro.c b/src/battle_intro.c
index 6964428a3..36ff325f5 100644
--- a/src/battle_intro.c
+++ b/src/battle_intro.c
@@ -586,7 +586,7 @@ void sub_8118FBC(int bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *ar
int i, j;
u8 battler = GetBattlerAtPosition(battlerPosition);
int offset = tilesOffset;
- CpuCopy16(gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], arg5, BG_SCREEN_SIZE);
+ CpuCopy16(gMonSpritesGfxPtr->sprites.ptr[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], arg5, BG_SCREEN_SIZE);
LoadBgTiles(bgId, arg5, 0x1000, tilesOffset);
for (i = arg2; i < arg2 + 8; i++)
{
@@ -604,7 +604,7 @@ void unref_sub_8119094(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u
{
int i, j, offset;
- DmaCopy16(3, gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE);
+ DmaCopy16(3, gMonSpritesGfxPtr->sprites.ptr[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE);
offset = (arg5 >> 5) - (arg7 << 9);
for (i = arg1; i < arg1 + 8; i++)
{
diff --git a/src/battle_main.c b/src/battle_main.c
index 935a53ffe..29a8f560a 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -11,6 +11,7 @@
#include "battle_scripts.h"
#include "battle_setup.h"
#include "battle_tower.h"
+#include "battle_util.h"
#include "berry.h"
#include "bg.h"
#include "data.h"
@@ -57,7 +58,6 @@
#include "constants/party_menu.h"
#include "constants/rgb.h"
#include "constants/songs.h"
-#include "constants/species.h"
#include "constants/trainers.h"
#include "cable_club.h"
@@ -66,11 +66,6 @@ extern struct MusicPlayerInfo gMPlayInfo_SE2;
extern const struct BgTemplate gBattleBgTemplates[];
extern const struct WindowTemplate *const gBattleWindowTemplates[];
-extern const u8 *const gBattleScriptsForMoveEffects[];
-extern const u8 *const gBattlescriptsForBallThrow[];
-extern const u8 *const gBattlescriptsForRunningByItem[];
-extern const u8 *const gBattlescriptsForUsingItem[];
-extern const u8 *const gBattlescriptsForSafariActions[];
// this file's functions
#if !defined(NONMATCHING) && MODERN
@@ -99,7 +94,6 @@ static void SpriteCB_AnimFaintOpponent(struct Sprite *sprite);
static void SpriteCb_BlinkVisible(struct Sprite *sprite);
static void SpriteCallbackDummy_3(struct Sprite *sprite);
static void oac_poke_ally_(struct Sprite *sprite);
-static void SpecialStatusesClear(void);
static void TurnValuesCleanUp(bool8 var0);
static void SpriteCB_BounceEffect(struct Sprite *sprite);
static void BattleStartClearSetData(void);
@@ -132,19 +126,6 @@ static void HandleEndTurn_BattleLost(void);
static void HandleEndTurn_RanFromBattle(void);
static void HandleEndTurn_MonFled(void);
static void HandleEndTurn_FinishBattle(void);
-static void HandleAction_UseMove(void);
-static void HandleAction_Switch(void);
-static void HandleAction_UseItem(void);
-static void HandleAction_Run(void);
-static void HandleAction_WatchesCarefully(void);
-static void HandleAction_SafariZoneBallThrow(void);
-static void HandleAction_ThrowPokeblock(void);
-static void HandleAction_GoNear(void);
-static void HandleAction_SafariZoneRun(void);
-static void HandleAction_WallyBallThrow(void);
-static void HandleAction_TryFinish(void);
-static void HandleAction_NothingIsFainted(void);
-static void HandleAction_ActionFinished(void);
// EWRAM vars
EWRAM_DATA u16 gBattle_BG0_X = 0;
@@ -591,10 +572,6 @@ const u8 * const gStatusConditionStringsTable[7][2] =
{gStatusConditionString_LoveJpn, gText_Love}
};
-static const u8 sPkblToEscapeFactor[][3] = {{0, 0, 0}, {3, 5, 0}, {2, 3, 0}, {1, 2, 0}, {1, 1, 0}};
-static const u8 sGoNearCounterToCatchFactor[] = {4, 3, 2, 1};
-static const u8 sGoNearCounterToEscapeFactor[] = {4, 4, 4, 4};
-
// code
void CB2_InitBattle(void)
{
@@ -1380,7 +1357,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
case 16:
if (BattleInitAllSprites(&gBattleCommunication[SPRITES_INIT_STATE1], &gBattleCommunication[SPRITES_INIT_STATE2]))
{
- sub_8166188();
+ TrySetLinkBattleTowerEnemyPartyLevel();
gPreBattleCallback1 = gMain.callback1;
gMain.callback1 = BattleMainCB1;
SetMainCallback2(BattleMainCB2);
@@ -1854,7 +1831,7 @@ void BattleMainCB2(void)
UpdatePaletteFade();
RunTasks();
- if (gMain.heldKeys & B_BUTTON && gBattleTypeFlags & BATTLE_TYPE_RECORDED && sub_8186450())
+ if (JOY_HELD(B_BUTTON) && gBattleTypeFlags & BATTLE_TYPE_RECORDED && sub_8186450())
{
gSpecialVar_Result = gBattleOutcome = B_OUTCOME_PLAYER_TELEPORTED;
ResetPaletteFadeControl();
@@ -2510,7 +2487,7 @@ static void sub_803939C(void)
}
break;
case 5:
- if (gMain.newKeys & DPAD_UP)
+ if (JOY_NEW(DPAD_UP))
{
if (gBattleCommunication[CURSOR_POSITION] != 0)
{
@@ -2520,7 +2497,7 @@ static void sub_803939C(void)
BattleCreateYesNoCursorAt(0);
}
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
if (gBattleCommunication[CURSOR_POSITION] == 0)
{
@@ -2530,7 +2507,7 @@ static void sub_803939C(void)
BattleCreateYesNoCursorAt(1);
}
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
if (gBattleCommunication[CURSOR_POSITION] == 0)
@@ -2544,7 +2521,7 @@ static void sub_803939C(void)
gBattleCommunication[MULTIUSE_STATE]++;
}
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
gBattleCommunication[MULTIUSE_STATE]++;
@@ -2788,7 +2765,7 @@ static void SpriteCB_AnimFaintOpponent(struct Sprite *sprite)
}
else // Erase bottom part of the sprite to create a smooth illusion of mon falling down.
{
- u8 *dst = (u8 *)gMonSpritesGfxPtr->sprites[GetBattlerPosition(sprite->sBattler)] + (gBattleMonForms[sprite->sBattler] << 11) + (sprite->data[3] << 8);
+ u8* dst = gMonSpritesGfxPtr->sprites.byte[GetBattlerPosition(sprite->sBattler)] + (gBattleMonForms[sprite->sBattler] << 11) + (sprite->data[3] << 8);
for (i = 0; i < 0x100; i++)
*(dst++) = 0;
@@ -2978,7 +2955,7 @@ void sub_8039E60(struct Sprite *sprite)
sprite->callback = SpriteCallbackDummy_3;
}
-void sub_8039E84(struct Sprite *sprite)
+void SpriteCB_TrainerThrowObject(struct Sprite *sprite)
{
StartSpriteAnim(sprite, 1);
sprite->callback = sub_8039E60;
@@ -3609,19 +3586,21 @@ static void BattleIntroOpponent2SendsOutMonAnimation(void)
gBattleMainFunc = BattleIntroRecordMonsToDex;
}
-#ifdef NONMATCHING
static void BattleIntroOpponent1SendsOutMonAnimation(void)
{
u32 position;
- if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
- position = B_POSITION_OPPONENT_LEFT;
- else if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
{
- if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
- position = B_POSITION_OPPONENT_LEFT;
+ if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
+ position = B_POSITION_OPPONENT_LEFT;
+ else
+ position = B_POSITION_PLAYER_LEFT;
+ }
else
- position = B_POSITION_PLAYER_LEFT;
+ position = B_POSITION_OPPONENT_LEFT;
}
else
position = B_POSITION_OPPONENT_LEFT;
@@ -3645,93 +3624,6 @@ static void BattleIntroOpponent1SendsOutMonAnimation(void)
gBattleMainFunc = BattleIntroRecordMonsToDex;
}
-#else
-NAKED
-static void BattleIntroOpponent1SendsOutMonAnimation(void)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- ldr r0, =gBattleTypeFlags\n\
- ldr r2, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 17\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _0803B298\n\
- movs r0, 0x80\n\
- lsls r0, 18\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _0803B298\n\
- movs r1, 0x80\n\
- lsls r1, 24\n\
- ands r1, r2\n\
- negs r0, r1\n\
- orrs r0, r1\n\
- lsrs r5, r0, 31\n\
- b _0803B29A\n\
- .pool\n\
-_0803B288:\n\
- ldr r1, =gBattleMainFunc\n\
- ldr r0, =BattleIntroOpponent2SendsOutMonAnimation\n\
- b _0803B2F0\n\
- .pool\n\
-_0803B298:\n\
- movs r5, 0x1\n\
-_0803B29A:\n\
- ldr r0, =gBattleControllerExecFlags\n\
- ldr r2, [r0]\n\
- cmp r2, 0\n\
- bne _0803B2F2\n\
- ldr r0, =gActiveBattler\n\
- strb r2, [r0]\n\
- ldr r1, =gBattlersCount\n\
- adds r4, r0, 0\n\
- ldrb r1, [r1]\n\
- cmp r2, r1\n\
- bcs _0803B2EC\n\
- adds r6, r4, 0\n\
-_0803B2B2:\n\
- ldrb r0, [r4]\n\
- bl GetBattlerPosition\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, r5\n\
- bne _0803B2D8\n\
- movs r0, 0\n\
- bl BtlController_EmitIntroTrainerBallThrow\n\
- ldrb r0, [r4]\n\
- bl MarkBattlerForControllerExec\n\
- ldr r0, =gBattleTypeFlags\n\
- ldr r0, [r0]\n\
- ldr r1, =0x00008040\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803B288\n\
-_0803B2D8:\n\
- ldrb r0, [r6]\n\
- adds r0, 0x1\n\
- strb r0, [r6]\n\
- ldr r1, =gBattlersCount\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldr r4, =gActiveBattler\n\
- ldrb r1, [r1]\n\
- cmp r0, r1\n\
- bcc _0803B2B2\n\
-_0803B2EC:\n\
- ldr r1, =gBattleMainFunc\n\
- ldr r0, =BattleIntroRecordMonsToDex\n\
-_0803B2F0:\n\
- str r0, [r1]\n\
-_0803B2F2:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n\
- .syntax divided");
-}
-#endif // NONMATCHING
static void BattleIntroRecordMonsToDex(void)
{
@@ -4851,38 +4743,40 @@ static void SetActionsAndBattlersTurnOrder(void)
gBattleStruct->focusPunchBattlerId = 0;
return;
}
- for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
+ else
{
- if (gChosenActionByBattler[gActiveBattler] == B_ACTION_USE_ITEM || gChosenActionByBattler[gActiveBattler] == B_ACTION_SWITCH)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[gActiveBattler];
- gBattlerByTurnOrder[turnOrderId] = gActiveBattler;
- turnOrderId++;
+ if (gChosenActionByBattler[gActiveBattler] == B_ACTION_USE_ITEM || gChosenActionByBattler[gActiveBattler] == B_ACTION_SWITCH)
+ {
+ gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[gActiveBattler];
+ gBattlerByTurnOrder[turnOrderId] = gActiveBattler;
+ turnOrderId++;
+ }
}
- }
- for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
- {
- if (gChosenActionByBattler[gActiveBattler] != B_ACTION_USE_ITEM && gChosenActionByBattler[gActiveBattler] != B_ACTION_SWITCH)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[gActiveBattler];
- gBattlerByTurnOrder[turnOrderId] = gActiveBattler;
- turnOrderId++;
+ if (gChosenActionByBattler[gActiveBattler] != B_ACTION_USE_ITEM && gChosenActionByBattler[gActiveBattler] != B_ACTION_SWITCH)
+ {
+ gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[gActiveBattler];
+ gBattlerByTurnOrder[turnOrderId] = gActiveBattler;
+ turnOrderId++;
+ }
}
- }
- for (i = 0; i < gBattlersCount - 1; i++)
- {
- for (j = i + 1; j < gBattlersCount; j++)
+ for (i = 0; i < gBattlersCount - 1; i++)
{
- u8 battler1 = gBattlerByTurnOrder[i];
- u8 battler2 = gBattlerByTurnOrder[j];
-
- if (gActionsByTurnOrder[i] != B_ACTION_USE_ITEM
- && gActionsByTurnOrder[j] != B_ACTION_USE_ITEM
- && gActionsByTurnOrder[i] != B_ACTION_SWITCH
- && gActionsByTurnOrder[j] != B_ACTION_SWITCH)
+ for (j = i + 1; j < gBattlersCount; j++)
{
- if (GetWhoStrikesFirst(battler1, battler2, FALSE))
- SwapTurnOrder(i, j);
+ u8 battler1 = gBattlerByTurnOrder[i];
+ u8 battler2 = gBattlerByTurnOrder[j];
+ if (gActionsByTurnOrder[i] != B_ACTION_USE_ITEM
+ && gActionsByTurnOrder[j] != B_ACTION_USE_ITEM
+ && gActionsByTurnOrder[i] != B_ACTION_SWITCH
+ && gActionsByTurnOrder[j] != B_ACTION_SWITCH)
+ {
+ if (GetWhoStrikesFirst(battler1, battler2, FALSE))
+ SwapTurnOrder(i, j);
+ }
}
}
}
@@ -4928,7 +4822,7 @@ static void TurnValuesCleanUp(bool8 var0)
gSideTimers[1].followmeTimer = 0;
}
-static void SpecialStatusesClear(void)
+void SpecialStatusesClear(void)
{
for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
@@ -4960,8 +4854,8 @@ static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void)
}
TryClearRageStatuses();
- gCurrentTurnActionNumber = 0; //See comment underneath
- gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber]; //Should be gActionsByTurnOrder[(gCurrentTurnActionNumber = 0)], but that doesn't match
+ gCurrentTurnActionNumber = 0;
+ gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber];
gDynamicBasePower = 0;
gBattleStruct->dynamicMoveType = 0;
gBattleMainFunc = RunTurnActionsFunctions;
@@ -4984,10 +4878,13 @@ static void RunTurnActionsFunctions(void)
gHitMarker &= ~(HITMARKER_x100000);
gBattleMainFunc = sEndTurnFuncsTable[gBattleOutcome & 0x7F];
}
- else if (gBattleStruct->savedTurnActionNumber != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another battlerId
+ else
{
- gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING);
- gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE);
+ if (gBattleStruct->savedTurnActionNumber != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another battlerId
+ {
+ gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING);
+ gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE);
+ }
}
}
@@ -5294,593 +5191,3 @@ void RunBattleScriptCommands(void)
if (gBattleControllerExecFlags == 0)
gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
}
-
-static void HandleAction_UseMove(void)
-{
- u8 side;
- u8 var = 4;
-
- gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
-
- if (*(&gBattleStruct->field_91) & gBitTable[gBattlerAttacker])
- {
- gCurrentActionFuncId = B_ACTION_FINISHED;
- return;
- }
-
- gCritMultiplier = 1;
- gBattleScripting.dmgMultiplier = 1;
- gBattleStruct->atkCancellerTracker = 0;
- gMoveResultFlags = 0;
- gMultiHitCounter = 0;
- gBattleCommunication[6] = 0;
- gCurrMovePos = gChosenMovePos = *(gBattleStruct->chosenMovePositions + gBattlerAttacker);
-
- // choose move
- if (gProtectStructs[gBattlerAttacker].noValidMoves)
- {
- gProtectStructs[gBattlerAttacker].noValidMoves = 0;
- gCurrentMove = gChosenMove = MOVE_STRUGGLE;
- gHitMarker |= HITMARKER_NO_PPDEDUCT;
- *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(MOVE_STRUGGLE, 0);
- }
- else if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gBattlerAttacker].status2 & STATUS2_RECHARGE)
- {
- gCurrentMove = gChosenMove = gLockedMoves[gBattlerAttacker];
- }
- // encore forces you to use the same move
- else if (gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE
- && gDisableStructs[gBattlerAttacker].encoredMove == gBattleMons[gBattlerAttacker].moves[gDisableStructs[gBattlerAttacker].encoredMovePos])
- {
- gCurrentMove = gChosenMove = gDisableStructs[gBattlerAttacker].encoredMove;
- gCurrMovePos = gChosenMovePos = gDisableStructs[gBattlerAttacker].encoredMovePos;
- *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0);
- }
- // check if the encored move wasn't overwritten
- else if (gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE
- && gDisableStructs[gBattlerAttacker].encoredMove != gBattleMons[gBattlerAttacker].moves[gDisableStructs[gBattlerAttacker].encoredMovePos])
- {
- gCurrMovePos = gChosenMovePos = gDisableStructs[gBattlerAttacker].encoredMovePos;
- gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
- gDisableStructs[gBattlerAttacker].encoredMove = MOVE_NONE;
- gDisableStructs[gBattlerAttacker].encoredMovePos = 0;
- gDisableStructs[gBattlerAttacker].encoreTimer = 0;
- *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0);
- }
- else if (gBattleMons[gBattlerAttacker].moves[gCurrMovePos] != gChosenMoveByBattler[gBattlerAttacker])
- {
- gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
- *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0);
- }
- else
- {
- gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
- }
-
- if (gBattleMons[gBattlerAttacker].hp != 0)
- {
- if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
- gBattleResults.lastUsedMovePlayer = gCurrentMove;
- else
- gBattleResults.lastUsedMoveOpponent = gCurrentMove;
- }
-
- // choose target
- side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE;
- if (gSideTimers[side].followmeTimer != 0
- && gBattleMoves[gCurrentMove].target == MOVE_TARGET_SELECTED
- && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gSideTimers[side].followmeTarget)
- && gBattleMons[gSideTimers[side].followmeTarget].hp != 0)
- {
- gBattlerTarget = gSideTimers[side].followmeTarget;
- }
- else if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- && gSideTimers[side].followmeTimer == 0
- && (gBattleMoves[gCurrentMove].power != 0
- || gBattleMoves[gCurrentMove].target != MOVE_TARGET_USER)
- && gBattleMons[*(gBattleStruct->moveTarget + gBattlerAttacker)].ability != ABILITY_LIGHTNING_ROD
- && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC)
- {
- side = GetBattlerSide(gBattlerAttacker);
- for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
- {
- if (side != GetBattlerSide(gActiveBattler)
- && *(gBattleStruct->moveTarget + gBattlerAttacker) != gActiveBattler
- && gBattleMons[gActiveBattler].ability == ABILITY_LIGHTNING_ROD
- && GetBattlerTurnOrderNum(gActiveBattler) < var)
- {
- var = GetBattlerTurnOrderNum(gActiveBattler);
- }
- }
- if (var == 4)
- {
- if (gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM)
- {
- if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
- {
- if (Random() & 1)
- gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
- else
- gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
- }
- else
- {
- if (Random() & 1)
- gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
- else
- gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
- }
- }
- else
- {
- gBattlerTarget = *(gBattleStruct->moveTarget + gBattlerAttacker);
- }
-
- if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
- {
- if (GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget))
- {
- gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK);
- }
- else
- {
- gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_SIDE);
- if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
- gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK);
- }
- }
- }
- else
- {
- gActiveBattler = gBattlerByTurnOrder[var];
- RecordAbilityBattle(gActiveBattler, gBattleMons[gActiveBattler].ability);
- gSpecialStatuses[gActiveBattler].lightningRodRedirected = 1;
- gBattlerTarget = gActiveBattler;
- }
- }
- else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
- && gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM)
- {
- if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
- {
- if (Random() & 1)
- gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
- else
- gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
- }
- else
- {
- if (Random() & 1)
- gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
- else
- gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
- }
-
- if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]
- && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget))
- {
- gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK);
- }
- }
- else
- {
- gBattlerTarget = *(gBattleStruct->moveTarget + gBattlerAttacker);
- if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
- {
- if (GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget))
- {
- gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK);
- }
- else
- {
- gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_SIDE);
- if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
- gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK);
- }
- }
- }
-
- // choose battlescript
- if (gBattleTypeFlags & BATTLE_TYPE_PALACE
- && gProtectStructs[gBattlerAttacker].palaceUnableToUseMove)
- {
- if (gBattleMons[gBattlerAttacker].hp == 0)
- {
- gCurrentActionFuncId = B_ACTION_FINISHED;
- return;
- }
- else if (gPalaceSelectionBattleScripts[gBattlerAttacker] != NULL)
- {
- gBattleCommunication[MULTISTRING_CHOOSER] = 4;
- gBattlescriptCurrInstr = gPalaceSelectionBattleScripts[gBattlerAttacker];
- gPalaceSelectionBattleScripts[gBattlerAttacker] = NULL;
- }
- else
- {
- gBattleCommunication[MULTISTRING_CHOOSER] = 4;
- gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround;
- }
- }
- else
- {
- gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
- }
-
- if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
- BattleArena_AddMindPoints(gBattlerAttacker);
-
- gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
-}
-
-static void HandleAction_Switch(void)
-{
- gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
- gBattle_BG0_X = 0;
- gBattle_BG0_Y = 0;
- gActionSelectionCursor[gBattlerAttacker] = 0;
- gMoveSelectionCursor[gBattlerAttacker] = 0;
-
- PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, *(gBattleStruct->field_58 + gBattlerAttacker))
-
- gBattleScripting.battler = gBattlerAttacker;
- gBattlescriptCurrInstr = BattleScript_ActionSwitch;
- gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
-
- if (gBattleResults.playerSwitchesCounter < 255)
- gBattleResults.playerSwitchesCounter++;
-}
-
-static void HandleAction_UseItem(void)
-{
- gBattlerAttacker = gBattlerTarget = gBattlerByTurnOrder[gCurrentTurnActionNumber];
- gBattle_BG0_X = 0;
- gBattle_BG0_Y = 0;
- ClearFuryCutterDestinyBondGrudge(gBattlerAttacker);
- gLastUsedItem = gBattleBufferB[gBattlerAttacker][1] | (gBattleBufferB[gBattlerAttacker][2] << 8);
-
- if (gLastUsedItem <= LAST_BALL) // is ball
- {
- gBattlescriptCurrInstr = gBattlescriptsForBallThrow[gLastUsedItem];
- }
- else if (gLastUsedItem == ITEM_POKE_DOLL || gLastUsedItem == ITEM_FLUFFY_TAIL)
- {
- gBattlescriptCurrInstr = gBattlescriptsForRunningByItem[0];
- }
- else if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
- {
- gBattlescriptCurrInstr = gBattlescriptsForUsingItem[0];
- }
- else
- {
- gBattleScripting.battler = gBattlerAttacker;
-
- switch (*(gBattleStruct->AI_itemType + (gBattlerAttacker >> 1)))
- {
- case AI_ITEM_FULL_RESTORE:
- case AI_ITEM_HEAL_HP:
- break;
- case AI_ITEM_CURE_CONDITION:
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- if (*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & 1)
- {
- if (*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & 0x3E)
- gBattleCommunication[MULTISTRING_CHOOSER] = 5;
- }
- else
- {
- while (!(*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & 1))
- {
- *(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) >>= 1;
- gBattleCommunication[MULTISTRING_CHOOSER]++;
- }
- }
- break;
- case AI_ITEM_X_STAT:
- gBattleCommunication[MULTISTRING_CHOOSER] = 4;
- if (*(gBattleStruct->AI_itemFlags + (gBattlerAttacker >> 1)) & 0x80)
- {
- gBattleCommunication[MULTISTRING_CHOOSER] = 5;
- }
- else
- {
- PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK)
- PREPARE_STRING_BUFFER(gBattleTextBuff2, CHAR_X)
-
- while (!((*(gBattleStruct->AI_itemFlags + (gBattlerAttacker >> 1))) & 1))
- {
- *(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) >>= 1;
- gBattleTextBuff1[2]++;
- }
-
- gBattleScripting.animArg1 = gBattleTextBuff1[2] + 14;
- gBattleScripting.animArg2 = 0;
- }
- break;
- case AI_ITEM_GUARD_SPECS:
- if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
- else
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- break;
- }
-
- gBattlescriptCurrInstr = gBattlescriptsForUsingItem[*(gBattleStruct->AI_itemType + gBattlerAttacker / 2)];
- }
- gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
-}
-
-bool8 TryRunFromBattle(u8 battler)
-{
- bool8 effect = FALSE;
- u8 holdEffect;
- u8 pyramidMultiplier;
- u8 speedVar;
-
- if (gBattleMons[battler].item == ITEM_ENIGMA_BERRY)
- holdEffect = gEnigmaBerries[battler].holdEffect;
- else
- holdEffect = ItemId_GetHoldEffect(gBattleMons[battler].item);
-
- gPotentialItemEffectBattler = battler;
-
- if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN)
- {
- gLastUsedItem = gBattleMons[battler].item;
- gProtectStructs[battler].fleeFlag = 1;
- effect++;
- }
- else if (gBattleMons[battler].ability == ABILITY_RUN_AWAY)
- {
- if (InBattlePyramid())
- {
- gBattleStruct->runTries++;
- pyramidMultiplier = GetPyramidRunMultiplier();
- speedVar = (gBattleMons[battler].speed * pyramidMultiplier) / (gBattleMons[BATTLE_OPPOSITE(battler)].speed) + (gBattleStruct->runTries * 30);
- if (speedVar > (Random() & 0xFF))
- {
- gLastUsedAbility = ABILITY_RUN_AWAY;
- gProtectStructs[battler].fleeFlag = 2;
- effect++;
- }
- }
- else
- {
- gLastUsedAbility = ABILITY_RUN_AWAY;
- gProtectStructs[battler].fleeFlag = 2;
- effect++;
- }
- }
- else if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_TRAINER_HILL) && gBattleTypeFlags & BATTLE_TYPE_TRAINER)
- {
- effect++;
- }
- else
- {
- if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
- {
- if (InBattlePyramid())
- {
- pyramidMultiplier = GetPyramidRunMultiplier();
- speedVar = (gBattleMons[battler].speed * pyramidMultiplier) / (gBattleMons[BATTLE_OPPOSITE(battler)].speed) + (gBattleStruct->runTries * 30);
- if (speedVar > (Random() & 0xFF))
- effect++;
- }
- else if (gBattleMons[battler].speed < gBattleMons[BATTLE_OPPOSITE(battler)].speed)
- {
- speedVar = (gBattleMons[battler].speed * 128) / (gBattleMons[BATTLE_OPPOSITE(battler)].speed) + (gBattleStruct->runTries * 30);
- if (speedVar > (Random() & 0xFF))
- effect++;
- }
- else // same speed or faster
- {
- effect++;
- }
- }
-
- gBattleStruct->runTries++;
- }
-
- if (effect)
- {
- gCurrentTurnActionNumber = gBattlersCount;
- gBattleOutcome = B_OUTCOME_RAN;
- }
-
- return effect;
-}
-
-static void HandleAction_Run(void)
-{
- gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
-
- if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
- {
- gCurrentTurnActionNumber = gBattlersCount;
-
- for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
- {
- if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
- {
- if (gChosenActionByBattler[gActiveBattler] == B_ACTION_RUN)
- gBattleOutcome |= B_OUTCOME_LOST;
- }
- else
- {
- if (gChosenActionByBattler[gActiveBattler] == B_ACTION_RUN)
- gBattleOutcome |= B_OUTCOME_WON;
- }
- }
-
- gBattleOutcome |= B_OUTCOME_LINK_BATTLE_RAN;
- gSaveBlock2Ptr->frontier.disableRecordBattle = TRUE;
- }
- else
- {
- if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
- {
- if (!TryRunFromBattle(gBattlerAttacker)) // failed to run away
- {
- ClearFuryCutterDestinyBondGrudge(gBattlerAttacker);
- gBattleCommunication[MULTISTRING_CHOOSER] = 3;
- gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString;
- gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
- }
- }
- else
- {
- if (gBattleMons[gBattlerAttacker].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
- {
- gBattleCommunication[MULTISTRING_CHOOSER] = 4;
- gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString;
- gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
- }
- else
- {
- gCurrentTurnActionNumber = gBattlersCount;
- gBattleOutcome = B_OUTCOME_MON_FLED;
- }
- }
- }
-}
-
-static void HandleAction_WatchesCarefully(void)
-{
- gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
- gBattle_BG0_X = 0;
- gBattle_BG0_Y = 0;
- gBattlescriptCurrInstr = gBattlescriptsForSafariActions[0];
- gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
-}
-
-static void HandleAction_SafariZoneBallThrow(void)
-{
- gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
- gBattle_BG0_X = 0;
- gBattle_BG0_Y = 0;
- gNumSafariBalls--;
- gLastUsedItem = ITEM_SAFARI_BALL;
- gBattlescriptCurrInstr = gBattlescriptsForBallThrow[ITEM_SAFARI_BALL];
- gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
-}
-
-static void HandleAction_ThrowPokeblock(void)
-{
- gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
- gBattle_BG0_X = 0;
- gBattle_BG0_Y = 0;
- gBattleCommunication[MULTISTRING_CHOOSER] = gBattleBufferB[gBattlerAttacker][1] - 1;
- gLastUsedItem = gBattleBufferB[gBattlerAttacker][2];
-
- if (gBattleResults.pokeblockThrows < 0xFF)
- gBattleResults.pokeblockThrows++;
- if (gBattleStruct->safariPkblThrowCounter < 3)
- gBattleStruct->safariPkblThrowCounter++;
- if (gBattleStruct->safariEscapeFactor > 1)
- {
- if (gBattleStruct->safariEscapeFactor < sPkblToEscapeFactor[gBattleStruct->safariPkblThrowCounter][gBattleCommunication[MULTISTRING_CHOOSER]])
- gBattleStruct->safariEscapeFactor = 1;
- else
- gBattleStruct->safariEscapeFactor -= sPkblToEscapeFactor[gBattleStruct->safariPkblThrowCounter][gBattleCommunication[MULTISTRING_CHOOSER]];
- }
-
- gBattlescriptCurrInstr = gBattlescriptsForSafariActions[2];
- gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
-}
-
-static void HandleAction_GoNear(void)
-{
- gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
- gBattle_BG0_X = 0;
- gBattle_BG0_Y = 0;
-
- gBattleStruct->safariCatchFactor += sGoNearCounterToCatchFactor[gBattleStruct->safariGoNearCounter];
- if (gBattleStruct->safariCatchFactor > 20)
- gBattleStruct->safariCatchFactor = 20;
-
- gBattleStruct->safariEscapeFactor += sGoNearCounterToEscapeFactor[gBattleStruct->safariGoNearCounter];
- if (gBattleStruct->safariEscapeFactor > 20)
- gBattleStruct->safariEscapeFactor = 20;
-
- if (gBattleStruct->safariGoNearCounter < 3)
- {
- gBattleStruct->safariGoNearCounter++;
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- }
- else
- {
- gBattleCommunication[MULTISTRING_CHOOSER] = 1; // Can't get closer.
- }
- gBattlescriptCurrInstr = gBattlescriptsForSafariActions[1];
- gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
-}
-
-static void HandleAction_SafariZoneRun(void)
-{
- gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
- PlaySE(SE_FLEE);
- gCurrentTurnActionNumber = gBattlersCount;
- gBattleOutcome = B_OUTCOME_RAN;
-}
-
-static void HandleAction_WallyBallThrow(void)
-{
- gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
- gBattle_BG0_X = 0;
- gBattle_BG0_Y = 0;
-
- PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, gBattlerPartyIndexes[gBattlerAttacker])
-
- gBattlescriptCurrInstr = gBattlescriptsForSafariActions[3];
- gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
- gActionsByTurnOrder[1] = B_ACTION_FINISHED;
-}
-
-static void HandleAction_TryFinish(void)
-{
- if (!HandleFaintedMonActions())
- {
- gBattleStruct->faintedActionsState = 0;
- gCurrentActionFuncId = B_ACTION_FINISHED;
- }
-}
-
-static void HandleAction_NothingIsFainted(void)
-{
- gCurrentTurnActionNumber++;
- gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber];
- gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED
- | HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR
- | HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_x100000
- | HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT
- | HITMARKER_CHARGING | HITMARKER_x4000000);
-}
-
-static void HandleAction_ActionFinished(void)
-{
- *(gBattleStruct->monToSwitchIntoId + gBattlerByTurnOrder[gCurrentTurnActionNumber]) = 6;
- gCurrentTurnActionNumber++;
- gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber];
- SpecialStatusesClear();
- gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED
- | HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR
- | HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_x100000
- | HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT
- | HITMARKER_CHARGING | HITMARKER_x4000000);
-
- gCurrentMove = 0;
- gBattleMoveDamage = 0;
- gMoveResultFlags = 0;
- gBattleScripting.animTurn = 0;
- gBattleScripting.animTargetsHit = 0;
- gLastLandedMoves[gBattlerAttacker] = 0;
- gLastHitByType[gBattlerAttacker] = 0;
- gBattleStruct->dynamicMoveType = 0;
- gDynamicBasePower = 0;
- gBattleScripting.moveendState = 0;
- gBattleCommunication[3] = 0;
- gBattleCommunication[4] = 0;
- gBattleScripting.multihitMoveEffect = 0;
- gBattleResources->battleScriptsStack->size = 0;
-}
-
-
diff --git a/src/battle_message.c b/src/battle_message.c
index 59ad0cee4..e6c1666fc 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -2288,8 +2288,7 @@ static const u8* TryGetStatusString(u8 *src)
statusPtr = status;
for (i = 0; i < 8; i++)
{
- if (*src == EOS)
- break;
+ if (*src == EOS) break; // one line required to match -g
*statusPtr = *src;
src++;
statusPtr++;
diff --git a/src/battle_pike.c b/src/battle_pike.c
index 6b31419a5..a161b88b8 100644
--- a/src/battle_pike.c
+++ b/src/battle_pike.c
@@ -21,7 +21,6 @@
#include "constants/layouts.h"
#include "constants/rgb.h"
#include "constants/trainers.h"
-#include "constants/species.h"
#include "constants/moves.h"
#include "constants/party_menu.h"
#include "constants/battle_pike.h"
diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c
index b015f3e0e..ac6d95338 100644
--- a/src/battle_pyramid.c
+++ b/src/battle_pyramid.c
@@ -35,7 +35,6 @@
#include "constants/layouts.h"
#include "constants/maps.h"
#include "constants/moves.h"
-#include "constants/species.h"
#include "constants/trainers.h"
extern const struct MapLayout *const gMapLayouts[];
@@ -1758,7 +1757,9 @@ static bool8 SetPyramidObjectPositionsInAndNearSquare(u8 objType, u8 squareId)
r7 &= 1;
}
- // free(floorLayoutOffsets); BUG: floorLayoutOffsets memory not freed
+ #ifdef BUGFIX
+ free(floorLayoutOffsets);
+ #endif
return (numObjects / 2) > numPlacedObjects;
}
@@ -1810,7 +1811,9 @@ static bool8 SetPyramidObjectPositionsNearSquare(u8 objType, u8 squareId)
if (r8 == 4)
break;
}
- // free(floorLayoutOffsets); BUG: floorLayoutOffsets memory not freed
+ #ifdef BUGFIX
+ free(floorLayoutOffsets);
+ #endif
return (numObjects / 2) > numPlacedObjects;
}
diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c
index e038e71e1..8fee57855 100644
--- a/src/battle_pyramid_bag.c
+++ b/src/battle_pyramid_bag.c
@@ -839,7 +839,7 @@ static void Task_HandlePyramidBagInput(u8 taskId)
s16 *data = gTasks[taskId].data;
if (MenuHelpers_CallLinkSomething() != TRUE && !gPaletteFade.active)
{
- if (gMain.newKeys & SELECT_BUTTON)
+ if (JOY_NEW(SELECT_BUTTON))
{
if (gPyramidBagCursorData.unk4 != 2)
{
@@ -965,7 +965,7 @@ static void HandleMenuActionInput(u8 taskId)
if (MenuHelpers_CallLinkSomething() != TRUE)
{
s8 id = Menu_GetCursorPos();
- if (gMain.newKeys & DPAD_UP)
+ if (JOY_NEW(DPAD_UP))
{
if (id > 0 && IsValidMenuAction(id - 2))
{
@@ -973,7 +973,7 @@ static void HandleMenuActionInput(u8 taskId)
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_UP);
}
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
if (id < gPyramidBagResources->menuActionsCount - 2 && IsValidMenuAction(id + 2))
{
@@ -981,7 +981,7 @@ static void HandleMenuActionInput(u8 taskId)
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_DOWN);
}
}
- else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED)
+ else if (JOY_NEW(DPAD_LEFT) || GetLRKeysPressed() == MENU_L_PRESSED)
{
if (id & 1 && IsValidMenuAction(id - 1))
{
@@ -989,7 +989,7 @@ static void HandleMenuActionInput(u8 taskId)
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_LEFT, MENU_CURSOR_DELTA_NONE);
}
}
- else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED)
+ else if (JOY_NEW(DPAD_RIGHT) || GetLRKeysPressed() == MENU_R_PRESSED)
{
if (!(id & 1) && IsValidMenuAction(id + 1))
{
@@ -997,13 +997,13 @@ static void HandleMenuActionInput(u8 taskId)
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_RIGHT, MENU_CURSOR_DELTA_NONE);
}
}
- else if (gMain.newKeys & A_BUTTON)
+ 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);
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
sMenuActions[ACTION_CANCEL].func.void_u8(taskId);
@@ -1143,7 +1143,7 @@ static void sub_81C64B4(u8 taskId)
{
sub_81C645C(data[8]);
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
ClearStdWindowAndFrameToTransparent(3, 0);
@@ -1151,7 +1151,7 @@ static void sub_81C64B4(u8 taskId)
ScheduleBgCopyTilemapToVram(1);
sub_81C6350(taskId);
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
ClearStdWindowAndFrameToTransparent(3, 0);
@@ -1179,7 +1179,7 @@ static void sub_81C65CC(u8 taskId)
u16 *scrollOffset = &gPyramidBagCursorData.scrollPosition;
u16 *selectedRow = &gPyramidBagCursorData.cursorPosition;
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
PlaySE(SE_SELECT);
RemovePyramidBagItem(gSpecialVar_ItemId, data[8]);
@@ -1220,7 +1220,7 @@ static void sub_81C66AC(u8 taskId)
static void sub_81C66EC(u8 taskId)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
Task_CloseBattlePyramidBagMessage(taskId);
@@ -1277,7 +1277,7 @@ static void Task_ItemSwapHandleInput(u8 taskId)
s16 *data = gTasks[taskId].data;
if (MenuHelpers_CallLinkSomething() != TRUE)
{
- if (gMain.newKeys & SELECT_BUTTON)
+ if (JOY_NEW(SELECT_BUTTON))
{
PlaySE(SE_SELECT);
ListMenuGetScrollAndRow(data[0], &gPyramidBagCursorData.scrollPosition, &gPyramidBagCursorData.cursorPosition);
@@ -1295,7 +1295,7 @@ static void Task_ItemSwapHandleInput(u8 taskId)
break;
case LIST_CANCEL:
PlaySE(SE_SELECT);
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
PerformItemSwap(taskId);
else
sub_81C6A14(taskId);
diff --git a/src/battle_records.c b/src/battle_records.c
index c6363a6ed..a8b9ead14 100644
--- a/src/battle_records.c
+++ b/src/battle_records.c
@@ -356,7 +356,7 @@ static void Task_CloseTrainerHillRecordsOnButton(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
task->func = Task_BeginPaletteFade;
@@ -485,7 +485,7 @@ static void CB2_ShowTrainerHillRecords(void)
gMain.state++;
break;
case 2:
- sTilemapBuffer = AllocZeroed(0x800);
+ sTilemapBuffer = AllocZeroed(BG_SCREEN_SIZE);
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sTrainerHillRecordsBgTemplates, ARRAY_COUNT(sTrainerHillRecordsBgTemplates));
SetBgTilemapBuffer(3, sTilemapBuffer);
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 8f7013e45..6ec9d16b1 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -16,7 +16,6 @@
#include "random.h"
#include "battle_controllers.h"
#include "battle_interface.h"
-#include "constants/species.h"
#include "constants/songs.h"
#include "constants/trainers.h"
#include "constants/battle_anim.h"
@@ -954,7 +953,7 @@ static void Cmd_attackcanceler(void)
gHitMarker |= HITMARKER_OBEYS;
- if (gProtectStructs[gBattlerTarget].bounceMove && gBattleMoves[gCurrentMove].flags & FLAG_MAGICCOAT_AFFECTED)
+ if (gProtectStructs[gBattlerTarget].bounceMove && gBattleMoves[gCurrentMove].flags & FLAG_MAGIC_COAT_AFFECTED)
{
PressurePPLose(gBattlerAttacker, gBattlerTarget, MOVE_MAGIC_COAT);
gProtectStructs[gBattlerTarget].bounceMove = 0;
@@ -3519,7 +3518,7 @@ static void Cmd_unknown_24(void)
if (HP_count == 0)
gBattleOutcome |= B_OUTCOME_LOST;
-
+
HP_count = 0;
for (i = 0; i < PARTY_SIZE; i++)
@@ -3536,14 +3535,17 @@ static void Cmd_unknown_24(void)
if (gBattleOutcome == 0 && (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)))
{
- s32 foundPlayer = 0, foundOpponent;
+ s32 foundPlayer = 0;
+ s32 foundOpponent;
+
for (i = 0; i < gBattlersCount; i += 2)
{
if ((gHitMarker & HITMARKER_FAINTED2(i)) && (!gSpecialStatuses[i].flag40))
foundPlayer++;
}
-
+
foundOpponent = 0;
+
for (i = 1; i < gBattlersCount; i += 2)
{
if ((gHitMarker & HITMARKER_FAINTED2(i)) && (!gSpecialStatuses[i].flag40))
@@ -3553,14 +3555,14 @@ static void Cmd_unknown_24(void)
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
if (foundOpponent + foundPlayer > 1)
- gBattlescriptCurrInstr = (u8*) T2_READ_32(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = T2_READ_PTR(gBattlescriptCurrInstr + 1);
else
gBattlescriptCurrInstr += 5;
}
else
{
if (foundOpponent != 0 && foundPlayer != 0)
- gBattlescriptCurrInstr = (u8*) T2_READ_32(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = T2_READ_PTR(gBattlescriptCurrInstr + 1);
else
gBattlescriptCurrInstr += 5;
}
@@ -4664,19 +4666,16 @@ static void Cmd_jumpifcantswitch(void)
}
else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
{
- #ifndef NONMATCHING
- asm("":::"r5");
- #endif // NONMATCHING
if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT)
party = gEnemyParty;
else
party = gPlayerParty;
- i = 0;
+ lastMonId = 0;
if (gActiveBattler & 2)
- i = 3;
+ lastMonId = 3;
- for (lastMonId = i + 3; i < lastMonId; i++)
+ for (i = lastMonId; i < lastMonId + 3; i++)
{
if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&party[i], MON_DATA_IS_EGG)
@@ -4685,7 +4684,7 @@ static void Cmd_jumpifcantswitch(void)
break;
}
- if (i == lastMonId)
+ if (i == lastMonId + 3)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
else
gBattlescriptCurrInstr += 6;
@@ -4698,18 +4697,18 @@ static void Cmd_jumpifcantswitch(void)
{
party = gPlayerParty;
- i = 0;
+ lastMonId = 0;
if (GetLinkTrainerFlankId(GetBattlerMultiplayerId(gActiveBattler)) == TRUE)
- i = 3;
+ lastMonId = 3;
}
else
{
party = gEnemyParty;
if (gActiveBattler == 1)
- i = 0;
+ lastMonId = 0;
else
- i = 3;
+ lastMonId = 3;
}
}
else
@@ -4719,12 +4718,12 @@ static void Cmd_jumpifcantswitch(void)
else
party = gPlayerParty;
- i = 0;
+ lastMonId = 0;
if (GetLinkTrainerFlankId(GetBattlerMultiplayerId(gActiveBattler)) == TRUE)
- i = 3;
+ lastMonId = 3;
}
- for (lastMonId = i + 3; i < lastMonId; i++)
+ for (i = lastMonId; i < lastMonId + 3; i++)
{
if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&party[i], MON_DATA_IS_EGG)
@@ -4733,7 +4732,7 @@ static void Cmd_jumpifcantswitch(void)
break;
}
- if (i == lastMonId)
+ if (i == lastMonId + 3)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
else
gBattlescriptCurrInstr += 6;
@@ -4742,11 +4741,11 @@ static void Cmd_jumpifcantswitch(void)
{
party = gEnemyParty;
- i = 0;
+ lastMonId = 0;
if (gActiveBattler == B_POSITION_OPPONENT_RIGHT)
- i = 3;
+ lastMonId = 3;
- for (lastMonId = i + 3; i < lastMonId; i++)
+ for (i = lastMonId; i < lastMonId + 3; i++)
{
if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&party[i], MON_DATA_IS_EGG)
@@ -4755,7 +4754,7 @@ static void Cmd_jumpifcantswitch(void)
break;
}
- if (i == lastMonId)
+ if (i == lastMonId + 3)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
else
gBattlescriptCurrInstr += 6;
@@ -5033,14 +5032,9 @@ static void Cmd_openpartyscreen(void)
hitmarkerFaintBits = gHitMarker >> 0x1C;
gBattlerFainted = 0;
- while (1)
- {
- if (gBitTable[gBattlerFainted] & hitmarkerFaintBits)
- break;
- if (gBattlerFainted >= gBattlersCount)
- break;
+ while (!(gBitTable[gBattlerFainted] & hitmarkerFaintBits)
+ && gBattlerFainted < gBattlersCount)
gBattlerFainted++;
- }
if (gBattlerFainted == gBattlersCount)
gBattlescriptCurrInstr = jumpPtr;
@@ -5360,21 +5354,21 @@ static void Cmd_yesnoboxlearnmove(void)
BattleCreateYesNoCursorAt(0);
break;
case 1:
- if (gMain.newKeys & DPAD_UP && gBattleCommunication[CURSOR_POSITION] != 0)
+ if (JOY_NEW(DPAD_UP) && gBattleCommunication[CURSOR_POSITION] != 0)
{
PlaySE(SE_SELECT);
BattleDestroyYesNoCursorAt(gBattleCommunication[CURSOR_POSITION]);
gBattleCommunication[CURSOR_POSITION] = 0;
BattleCreateYesNoCursorAt(0);
}
- if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[CURSOR_POSITION] == 0)
+ if (JOY_NEW(DPAD_DOWN) && gBattleCommunication[CURSOR_POSITION] == 0)
{
PlaySE(SE_SELECT);
BattleDestroyYesNoCursorAt(gBattleCommunication[CURSOR_POSITION]);
gBattleCommunication[CURSOR_POSITION] = 1;
BattleCreateYesNoCursorAt(1);
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
if (gBattleCommunication[1] == 0)
@@ -5388,7 +5382,7 @@ static void Cmd_yesnoboxlearnmove(void)
gBattleScripting.learnMoveState = 5;
}
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
gBattleScripting.learnMoveState = 5;
@@ -5477,21 +5471,21 @@ static void Cmd_yesnoboxstoplearningmove(void)
BattleCreateYesNoCursorAt(0);
break;
case 1:
- if (gMain.newKeys & DPAD_UP && gBattleCommunication[CURSOR_POSITION] != 0)
+ if (JOY_NEW(DPAD_UP) && gBattleCommunication[CURSOR_POSITION] != 0)
{
PlaySE(SE_SELECT);
BattleDestroyYesNoCursorAt(gBattleCommunication[CURSOR_POSITION]);
gBattleCommunication[CURSOR_POSITION] = 0;
BattleCreateYesNoCursorAt(0);
}
- if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[CURSOR_POSITION] == 0)
+ if (JOY_NEW(DPAD_DOWN) && gBattleCommunication[CURSOR_POSITION] == 0)
{
PlaySE(SE_SELECT);
BattleDestroyYesNoCursorAt(gBattleCommunication[CURSOR_POSITION]);
gBattleCommunication[CURSOR_POSITION] = 1;
BattleCreateYesNoCursorAt(1);
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
@@ -5502,7 +5496,7 @@ static void Cmd_yesnoboxstoplearningmove(void)
HandleBattleWindow(0x18, 0x8, 0x1D, 0xD, WINDOW_CLEAR);
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
@@ -5535,8 +5529,8 @@ static void Cmd_hitanimation(void)
static u32 GetTrainerMoneyToGive(u16 trainerId)
{
u32 i = 0;
+ u32 lastMonLevel = 0;
u32 moneyReward;
- u8 lastMonLevel = 0;
if (trainerId == TRAINER_SECRET_BASE)
{
@@ -5772,28 +5766,28 @@ static void Cmd_yesnobox(void)
BattleCreateYesNoCursorAt(0);
break;
case 1:
- if (gMain.newKeys & DPAD_UP && gBattleCommunication[CURSOR_POSITION] != 0)
+ if (JOY_NEW(DPAD_UP) && gBattleCommunication[CURSOR_POSITION] != 0)
{
PlaySE(SE_SELECT);
BattleDestroyYesNoCursorAt(gBattleCommunication[CURSOR_POSITION]);
gBattleCommunication[CURSOR_POSITION] = 0;
BattleCreateYesNoCursorAt(0);
}
- if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[CURSOR_POSITION] == 0)
+ if (JOY_NEW(DPAD_DOWN) && gBattleCommunication[CURSOR_POSITION] == 0)
{
PlaySE(SE_SELECT);
BattleDestroyYesNoCursorAt(gBattleCommunication[CURSOR_POSITION]);
gBattleCommunication[CURSOR_POSITION] = 1;
BattleCreateYesNoCursorAt(1);
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
gBattleCommunication[CURSOR_POSITION] = 1;
PlaySE(SE_SELECT);
HandleBattleWindow(0x18, 8, 0x1D, 0xD, WINDOW_CLEAR);
gBattlescriptCurrInstr++;
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
HandleBattleWindow(0x18, 8, 0x1D, 0xD, WINDOW_CLEAR);
@@ -7128,17 +7122,12 @@ static void Cmd_forcerandomswitch(void)
s32 battler1PartyId = 0;
s32 battler2PartyId = 0;
- #ifdef NONMATCHING
- s32 lastMonId = 0; // + 1
- #else
- register s32 lastMonId asm("r8") = 0; // + 1
- #endif // NONMATCHING
-
- s32 firstMonId = 0;
- s32 monsCount = 0;
+ s32 firstMonId;
+ s32 lastMonId = 0; // + 1
+ s32 monsCount;
struct Pokemon* party = NULL;
s32 validMons = 0;
- s32 minNeeded = 0;
+ s32 minNeeded;
if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER))
{
@@ -7250,14 +7239,15 @@ static void Cmd_forcerandomswitch(void)
{
do
{
- i = Random() % monsCount;
- i += firstMonId;
- }
- while (i == battler2PartyId
- || i == battler1PartyId
- || GetMonData(&party[i], MON_DATA_SPECIES) == SPECIES_NONE
+ do
+ {
+ i = Random() % monsCount;
+ i += firstMonId;
+ }
+ while (i == battler2PartyId || i == battler1PartyId);
+ } while (GetMonData(&party[i], MON_DATA_SPECIES) == SPECIES_NONE
|| GetMonData(&party[i], MON_DATA_IS_EGG) == TRUE
- || GetMonData(&party[i], MON_DATA_HP) == 0);
+ || GetMonData(&party[i], MON_DATA_HP) == 0); //should be one while loop, but that doesn't match.
}
*(gBattleStruct->monToSwitchIntoId + gBattlerTarget) = i;
@@ -10076,21 +10066,21 @@ static void Cmd_trygivecaughtmonnick(void)
BattleCreateYesNoCursorAt(0);
break;
case 1:
- if (gMain.newKeys & DPAD_UP && gBattleCommunication[CURSOR_POSITION] != 0)
+ if (JOY_NEW(DPAD_UP) && gBattleCommunication[CURSOR_POSITION] != 0)
{
PlaySE(SE_SELECT);
BattleDestroyYesNoCursorAt(gBattleCommunication[CURSOR_POSITION]);
gBattleCommunication[CURSOR_POSITION] = 0;
BattleCreateYesNoCursorAt(0);
}
- if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[CURSOR_POSITION] == 0)
+ if (JOY_NEW(DPAD_DOWN) && gBattleCommunication[CURSOR_POSITION] == 0)
{
PlaySE(SE_SELECT);
BattleDestroyYesNoCursorAt(gBattleCommunication[CURSOR_POSITION]);
gBattleCommunication[CURSOR_POSITION] = 1;
BattleCreateYesNoCursorAt(1);
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
if (gBattleCommunication[CURSOR_POSITION] == 0)
@@ -10103,7 +10093,7 @@ static void Cmd_trygivecaughtmonnick(void)
gBattleCommunication[MULTIUSE_STATE] = 4;
}
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
gBattleCommunication[MULTIUSE_STATE] = 4;
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 3c20d9ffe..40b5993f0 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -44,7 +44,6 @@
#include "constants/songs.h"
#include "constants/map_types.h"
#include "constants/maps.h"
-#include "constants/species.h"
#include "constants/trainers.h"
#include "constants/trainer_hill.h"
@@ -1565,8 +1564,7 @@ static s32 TrainerIdToRematchTableId(const struct RematchTrainer *table, u16 tra
{
for (j = 0; j < REMATCHES_COUNT; j++)
{
- if (table[i].trainerIds[j] == 0)
- break;
+ if (table[i].trainerIds[j] == 0) break; // one line required to match -g
if (table[i].trainerIds[j] == trainerId)
return i;
}
diff --git a/src/battle_tent.c b/src/battle_tent.c
index 0a03fc167..26b2e8bb1 100644
--- a/src/battle_tent.c
+++ b/src/battle_tent.c
@@ -17,7 +17,6 @@
#include "constants/items.h"
#include "constants/layouts.h"
#include "constants/region_map_sections.h"
-#include "constants/species.h"
#include "constants/trainers.h"
// This file's functions.
@@ -355,11 +354,7 @@ static void GenerateOpponentMons(void)
{
u16 trainerId;
s32 i, j, k;
- #ifndef NONMATCHING
- register const u16 *monSet asm("r9"); // Fix me. Compiler insists on moving that variable into stack.
- #else
- const u16 *monSet;
- #endif
+ const u16 *monSet;
u16 species[FRONTIER_PARTY_SIZE];
u16 heldItems[FRONTIER_PARTY_SIZE];
s32 monId = 0;
@@ -380,7 +375,8 @@ static void GenerateOpponentMons(void)
} while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum);
gTrainerBattleOpponent_A = trainerId;
- while (gFacilityTrainers[gTrainerBattleOpponent_A].monSet[monId] != 0xFFFF)
+ monSet = gFacilityTrainers[gTrainerBattleOpponent_A].monSet;
+ while (monSet[monId] != 0xFFFF)
monId++;
if (monId > 8)
break;
@@ -421,7 +417,7 @@ static void GenerateOpponentMons(void)
species[i] = gFacilityTrainerMons[sRandMonSetId].species;
heldItems[i] = gBattleFrontierHeldItems[gFacilityTrainerMons[sRandMonSetId].itemTableId];
- gUnknown_03006298[i] = sRandMonSetId;
+ gFrontierTempParty[i] = sRandMonSetId;
i++;
}
}
diff --git a/src/battle_tower.c b/src/battle_tower.c
index 0333c4397..ee75feeb4 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -35,7 +35,6 @@
#include "constants/trainers.h"
#include "constants/event_objects.h"
#include "constants/moves.h"
-#include "constants/species.h"
#include "constants/easy_chat.h"
#include "constants/tv.h"
@@ -47,7 +46,7 @@ EWRAM_DATA const struct BattleFrontierTrainer *gFacilityTrainers = NULL;
EWRAM_DATA const struct FacilityMon *gFacilityTrainerMons = NULL;
// IWRAM common
-u16 gUnknown_03006298[MAX_FRONTIER_PARTY_SIZE];
+u16 gFrontierTempParty[MAX_FRONTIER_PARTY_SIZE];
// This file's functions.
static void InitTowerChallenge(void);
@@ -58,12 +57,12 @@ static void SetTowerBattleWon(void);
static void AwardBattleTowerRibbons(void);
static void SaveTowerChallenge(void);
static void GetOpponentIntroSpeech(void);
-static void nullsub_61(void);
-static void nullsub_116(void);
+static void BattleTowerNop1(void);
+static void BattleTowerNop2(void);
static void LoadMultiPartnerCandidatesData(void);
static void ShowPartnerCandidateMessage(void);
static void LoadLinkMultiOpponentsData(void);
-static void sub_8164DCC(void);
+static void TowerTryCloseLink(void);
static void SetMultiPartnerGfx(void);
static void SetTowerInterviewData(void);
static void ValidateBattleTowerRecordChecksums(void);
@@ -812,12 +811,12 @@ static void (* const sBattleTowerFuncs[])(void) =
[BATTLE_TOWER_FUNC_GIVE_RIBBONS] = AwardBattleTowerRibbons,
[BATTLE_TOWER_FUNC_SAVE] = SaveTowerChallenge,
[BATTLE_TOWER_FUNC_GET_OPPONENT_INTRO] = GetOpponentIntroSpeech,
- [BATTLE_TOWER_FUNC_NOP] = nullsub_61,
- [BATTLE_TOWER_FUNC_NOP2] = nullsub_116,
+ [BATTLE_TOWER_FUNC_NOP] = BattleTowerNop1,
+ [BATTLE_TOWER_FUNC_NOP2] = BattleTowerNop2,
[BATTLE_TOWER_FUNC_LOAD_PARTNERS] = LoadMultiPartnerCandidatesData,
[BATTLE_TOWER_FUNC_PARTNER_MSG] = ShowPartnerCandidateMessage,
[BATTLE_TOWER_FUNC_LOAD_LINK_OPPONENTS] = LoadLinkMultiOpponentsData,
- [BATTLE_TOWER_FUNC_13] = sub_8164DCC,
+ [BATTLE_TOWER_FUNC_TRY_CLOSE_LINK] = TowerTryCloseLink,
[BATTLE_TOWER_FUNC_SET_PARTNER_GFX] = SetMultiPartnerGfx,
[BATTLE_TOWER_FUNC_SET_INTERVIEW_DATA] = SetTowerInterviewData,
};
@@ -1000,7 +999,7 @@ static bool8 ChooseSpecialBattleTowerTrainer(void)
return FALSE;
winStreak = GetCurrentBattleTowerWinStreak(lvlMode, battleMode);
- for (i = 0; i < 5; i++)
+ for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++)
{
u32 *record = (u32*)(&gSaveBlock2Ptr->frontier.towerRecords[i]);
u32 recordHasData = 0;
@@ -1011,7 +1010,7 @@ static bool8 ChooseSpecialBattleTowerTrainer(void)
checksum += record[j];
}
validMons = 0;
- for (j = 0; j < 4; j++)
+ for (j = 0; j < MAX_FRONTIER_PARTY_SIZE; j++)
{
if (gSaveBlock2Ptr->frontier.towerRecords[i].party[j].species != 0
&& gSaveBlock2Ptr->frontier.towerRecords[i].party[j].level <= GetFrontierEnemyMonLevel(lvlMode))
@@ -1325,7 +1324,7 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm)
struct EmeraldBattleTowerRecord *newRecord = newRecordEm; // Needed to match.
// Find a record slot of the same player and replace it.
- for (i = 0; i < 5; i++)
+ for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++)
{
k = 0;
for (j = 0; j < TRAINER_ID_LENGTH; j++)
@@ -1337,10 +1336,15 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm)
{
for (k = 0; k < PLAYER_NAME_LENGTH; k++)
{
- // BUG: Wrong variable used, 'j' instead of 'k'.
+ #ifdef BUGFIX
+ if (gSaveBlock2Ptr->frontier.towerRecords[i].name[k] != newRecord->name[k])
+ break;
+ if (newRecord->name[k] == EOS)
+ #else
if (gSaveBlock2Ptr->frontier.towerRecords[i].name[j] != newRecord->name[j])
break;
if (newRecord->name[j] == EOS)
+ #endif
{
k = PLAYER_NAME_LENGTH;
break;
@@ -1351,19 +1355,19 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm)
if (k == PLAYER_NAME_LENGTH)
break;
}
- if (i < 5)
+ if (i < BATTLE_TOWER_RECORD_COUNT)
{
gSaveBlock2Ptr->frontier.towerRecords[i] = *newRecord;
return;
}
// Find an empty record slot.
- for (i = 0; i < 5; i++)
+ for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++)
{
if (gSaveBlock2Ptr->frontier.towerRecords[i].winStreak == 0)
break;
}
- if (i < 5)
+ if (i < BATTLE_TOWER_RECORD_COUNT)
{
gSaveBlock2Ptr->frontier.towerRecords[i] = *newRecord;
return;
@@ -1374,7 +1378,7 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm)
slotIds[0] = 0;
slotsCount++;
- for (i = 1; i < 5; i++)
+ for (i = 1; i < BATTLE_TOWER_RECORD_COUNT; i++)
{
for (j = 0; j < slotsCount; j++)
{
@@ -1447,7 +1451,7 @@ u8 GetFrontierOpponentClass(u16 trainerId)
}
else if (trainerId == TRAINER_FRONTIER_BRAIN)
{
- trainerClass = GetFrontierBrainTrainerClass();
+ return GetFrontierBrainTrainerClass();
}
else if (trainerId == TRAINER_STEVEN_PARTNER)
{
@@ -1466,9 +1470,6 @@ u8 GetFrontierOpponentClass(u16 trainerId)
else
{
trainerClass = gFacilityClassToTrainerClass[gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass];
- #ifndef NONMATCHING
- asm("");
- #endif
}
}
else
@@ -1480,9 +1481,6 @@ u8 GetFrontierOpponentClass(u16 trainerId)
else
{
trainerClass = gFacilityClassToTrainerClass[gApprentices[gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id].facilityClass];
- #ifndef NONMATCHING
- asm("");
- #endif
}
}
@@ -1549,7 +1547,7 @@ void GetFrontierTrainerName(u8 *dst, u16 trainerId)
{
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
{
- sub_8186468(dst);
+ GetRecordedBattleRecordMixFriendName(dst);
return;
}
else
@@ -1863,7 +1861,7 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId)
otID = T1_READ_32(gSaveBlock2Ptr->playerTrainerId);
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
{
- u16 monId = gUnknown_03006298[i];
+ u16 monId = gFrontierTempParty[i];
CreateMonWithEVSpreadNatureOTID(&gEnemyParty[firstMonId + i],
gFacilityTrainerMons[monId].species,
level,
@@ -1891,7 +1889,7 @@ static void FillFactoryTentTrainerParty(u16 trainerId, u8 firstMonId)
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
{
- u16 monId = gUnknown_03006298[i];
+ u16 monId = gFrontierTempParty[i];
CreateMonWithEVSpreadNatureOTID(&gEnemyParty[firstMonId + i],
gFacilityTrainerMons[monId].species,
level,
@@ -2061,7 +2059,7 @@ void DoSpecialTrainerBattle(void)
if (gTrainerBattleOpponent_A == TRAINER_FRONTIER_BRAIN)
FillFrontierTrainerParty(DOME_BATTLE_PARTY_SIZE);
CreateTask(Task_StartBattleAfterTransition, 1);
- sub_806E694(0);
+ CreateTask_PlayMapChosenOrBattleBGM(0);
BattleTransition_StartOnField(GetSpecialBattleTransition(3));
break;
case SPECIAL_BATTLE_PALACE:
@@ -2141,7 +2139,7 @@ static void SaveCurrentWinStreak(void)
gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] = winStreak;
}
-static void sub_8163EE4(void)
+static void SaveBattleTowerRecord(void)
{
s32 i;
u8 lvlMode, battleMode, class;
@@ -2180,7 +2178,7 @@ static void sub_8163EE4(void)
for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++)
{
if (gSaveBlock2Ptr->frontier.selectedPartyMons[i] != 0)
- sub_80686FC(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], &playerRecord->party[i]);
+ ConvertPokemonToBattleTowerPokemon(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], &playerRecord->party[i]);
}
playerRecord->language = gGameLanguage;
@@ -2195,7 +2193,7 @@ static void SaveTowerChallenge(void)
s32 challengeNum = (signed)(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7);
if (gSpecialVar_0x8005 == 0 && (challengeNum > 1 || gSaveBlock2Ptr->frontier.curChallengeBattleNum != 0))
- sub_8163EE4();
+ SaveBattleTowerRecord();
gSaveBlock2Ptr->frontier.challengeStatus = gSpecialVar_0x8005;
VarSet(VAR_TEMP_0, 0);
@@ -2203,12 +2201,12 @@ static void SaveTowerChallenge(void)
SaveGameFrontier();
}
-static void nullsub_61(void)
+static void BattleTowerNop1(void)
{
}
-static void nullsub_116(void)
+static void BattleTowerNop2(void)
{
}
@@ -2231,11 +2229,11 @@ static void GetApprenticeMultiPartnerParty(u16 trainerId)
}
}
- gUnknown_03006298[0] = validSpecies[Random() % count];
+ gFrontierTempParty[0] = validSpecies[Random() % count];
do
{
- gUnknown_03006298[1] = validSpecies[Random() % count];
- } while (gUnknown_03006298[0] == gUnknown_03006298[1]);
+ gFrontierTempParty[1] = validSpecies[Random() % count];
+ } while (gFrontierTempParty[0] == gFrontierTempParty[1]);
}
static void GetRecordMixFriendMultiPartnerParty(u16 trainerId)
@@ -2247,7 +2245,7 @@ static void GetRecordMixFriendMultiPartnerParty(u16 trainerId)
u16 species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
count = 0;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++)
{
if (gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[i].species != species1
&& gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[i].species != species2
@@ -2259,11 +2257,11 @@ static void GetRecordMixFriendMultiPartnerParty(u16 trainerId)
}
}
- gUnknown_03006298[2] = validSpecies[Random() % count];
+ gFrontierTempParty[2] = validSpecies[Random() % count];
do
{
- gUnknown_03006298[3] = validSpecies[Random() % count];
- } while (gUnknown_03006298[2] == gUnknown_03006298[3]);
+ gFrontierTempParty[3] = validSpecies[Random() % count];
+ } while (gFrontierTempParty[2] == gFrontierTempParty[3]);
}
static void LoadMultiPartnerCandidatesData(void)
@@ -2369,7 +2367,7 @@ static void LoadMultiPartnerCandidatesData(void)
}
r10 = 0;
- for (i = 0; i < 5; i++)
+ for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++)
{
u32 *record = (u32*)(&gSaveBlock2Ptr->frontier.towerRecords[i]);
u32 recordHasData = 0;
@@ -2386,7 +2384,7 @@ static void LoadMultiPartnerCandidatesData(void)
&& gSaveBlock2Ptr->frontier.towerRecords[i].checksum == checksum)
{
k = 0;
- for (j = 0; j < 4; j++)
+ for (j = 0; j < MAX_FRONTIER_PARTY_SIZE; j++)
{
if (species1 != gSaveBlock2Ptr->frontier.towerRecords[i].party[j].species
&& species2 != gSaveBlock2Ptr->frontier.towerRecords[i].party[j].species
@@ -2412,7 +2410,7 @@ static void LoadMultiPartnerCandidatesData(void)
}
}
-static void sub_81646BC(u16 trainerId, u16 monId)
+static void GetPotentialPartnerMoveAndSpecies(u16 trainerId, u16 monId)
{
u16 move = 0;
u16 species = 0;
@@ -2427,15 +2425,15 @@ static void sub_81646BC(u16 trainerId, u16 monId)
}
else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
{
- move = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[gUnknown_03006298[gSpecialVar_0x8005 + 1]].moves[0];
- species = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[gUnknown_03006298[gSpecialVar_0x8005 + 1]].species;
+ move = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[gFrontierTempParty[gSpecialVar_0x8005 + 1]].moves[0];
+ species = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[gFrontierTempParty[gSpecialVar_0x8005 + 1]].species;
}
else
{
s32 i;
- move = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].party[gUnknown_03006298[gSpecialVar_0x8005 - 1]].moves[0];
- species = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].party[gUnknown_03006298[gSpecialVar_0x8005 - 1]].species;
+ move = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].party[gFrontierTempParty[gSpecialVar_0x8005 - 1]].moves[0];
+ species = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].party[gFrontierTempParty[gSpecialVar_0x8005 - 1]].species;
for (i = 0; i < PLAYER_NAME_LENGTH; i++)
gStringVar3[i] = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].playerName[i];
gStringVar3[i] = EOS;
@@ -2447,6 +2445,14 @@ static void sub_81646BC(u16 trainerId, u16 monId)
StringCopy(gStringVar2, gSpeciesNames[species]);
}
+// For multi battles in the Battle Tower, the player may choose a partner by talking to them
+// These partners can be an NPC or a former/record-mixed Apprentice
+// When talked to, their response consists of:
+// PARTNER_MSGID_INTRO - A greeting
+// PARTNER_MSGID_MON1 - Naming one pokemon on their team, and a move it has
+// PARTNER_MSGID_MON2_ASK - Naming a second pokemon on their team, a move it has, and asking if they'd like to be their partner
+// PARTNER_MSGID_ACCEPT - If the player agrees to be their partner
+// PARTNER_MSGID_REJECT - If the player declines to be their partner
static void ShowPartnerCandidateMessage(void)
{
s32 i, j, partnerId;
@@ -2489,11 +2495,11 @@ static void ShowPartnerCandidateMessage(void)
break;
case PARTNER_MSGID_MON1:
monId = gSaveBlock2Ptr->frontier.trainerIds[8 + k * 2];
- sub_81646BC(trainerId, monId);
+ GetPotentialPartnerMoveAndSpecies(trainerId, monId);
break;
case PARTNER_MSGID_MON2_ASK:
monId = gSaveBlock2Ptr->frontier.trainerIds[9 + k * 2];
- sub_81646BC(trainerId, monId);
+ GetPotentialPartnerMoveAndSpecies(trainerId, monId);
break;
case PARTNER_MSGID_ACCEPT:
gPartnerTrainerId = trainerId;
@@ -2504,13 +2510,13 @@ static void ShowPartnerCandidateMessage(void)
}
else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE)
{
- gSaveBlock2Ptr->frontier.trainerIds[18] = gUnknown_03006298[2];
- gSaveBlock2Ptr->frontier.trainerIds[19] = gUnknown_03006298[3];
+ gSaveBlock2Ptr->frontier.trainerIds[18] = gFrontierTempParty[2];
+ gSaveBlock2Ptr->frontier.trainerIds[19] = gFrontierTempParty[3];
}
else
{
- gSaveBlock2Ptr->frontier.trainerIds[18] = gUnknown_03006298[0];
- gSaveBlock2Ptr->frontier.trainerIds[19] = gUnknown_03006298[1];
+ gSaveBlock2Ptr->frontier.trainerIds[18] = gFrontierTempParty[0];
+ gSaveBlock2Ptr->frontier.trainerIds[19] = gFrontierTempParty[1];
}
for (k = 0; k < 14; k++)
{
@@ -2645,7 +2651,7 @@ static void LoadLinkMultiOpponentsData(void)
}
}
-static void sub_8164DCC(void)
+static void TowerTryCloseLink(void)
{
if (gWirelessCommType != 0)
SetCloseLinkCallback();
@@ -2689,7 +2695,7 @@ static void ValidateBattleTowerRecordChecksums(void)
if (gSaveBlock2Ptr->frontier.towerPlayer.checksum != checksum)
ClearBattleTowerRecord(&gSaveBlock2Ptr->frontier.towerPlayer);
- for (i = 0; i < 5; i++)
+ for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++)
{
record = (u32*)(&gSaveBlock2Ptr->frontier.towerRecords[i]);
checksum = 0;
@@ -2840,7 +2846,7 @@ static void FillEReaderTrainerWithPlayerData(void)
}
for (i = 0; i < 3; i++)
- sub_80686FC(&gPlayerParty[i], &ereaderTrainer->party[i]);
+ ConvertPokemonToBattleTowerPokemon(&gPlayerParty[i], &ereaderTrainer->party[i]);
SetEReaderTrainerChecksum(ereaderTrainer);
}
@@ -2963,7 +2969,12 @@ static void FillPartnerParty(u16 trainerId)
sStevenMons[i].species,
sStevenMons[i].level,
sStevenMons[i].fixedIV,
- TRUE, i, // BUG: personality was stored in the 'j' variable. As a result, Steven's pokemon do not have the intended natures.
+ TRUE,
+ #ifdef BUGFIX
+ j,
+ #else
+ i, // BUG: personality was stored in the 'j' variable. As a result, Steven's pokemon do not have the intended natures.
+ #endif
OT_ID_PRESET, STEVEN_OTID);
for (j = 0; j < PARTY_SIZE; j++)
SetMonData(&gPlayerParty[MULTI_PARTY_SIZE + i], MON_DATA_HP_EV + j, &sStevenMons[i].evs[j]);
@@ -3069,9 +3080,12 @@ bool32 RubyBattleTowerRecordToEmerald(struct RSBattleTowerRecord *src, struct Em
{
dst->lvlMode = src->lvlMode;
dst->winStreak = src->winStreak;
- // BUG: Reading outside the array. sRubyFacilityClassToEmerald has less than FACILITY_CLASSES_COUNT entries.
- // Fix by using ARRAY_COUNT(sRubyFacilityClassToEmerald)
+ // UB: Reading outside the array. sRubyFacilityClassToEmerald has less than FACILITY_CLASSES_COUNT entries.
+ #ifdef UBFIX
+ for (i = 0; i < ARRAY_COUNT(sRubyFacilityClassToEmerald); i++)
+ #else
for (i = 0; i < FACILITY_CLASSES_COUNT; i++)
+ #endif
{
if (sRubyFacilityClassToEmerald[i][0] == src->facilityClass)
break;
@@ -3119,9 +3133,12 @@ bool32 EmeraldBattleTowerRecordToRuby(struct EmeraldBattleTowerRecord *src, stru
{
dst->lvlMode = src->lvlMode;
dst->winStreak = src->winStreak;
- // BUG: Reading outside the array. sRubyFacilityClassToEmerald has less than FACILITY_CLASSES_COUNT entries.
- // Fix by using ARRAY_COUNT(sRubyFacilityClassToEmerald) instead
+ // UB: Reading outside the array. sRubyFacilityClassToEmerald has less than FACILITY_CLASSES_COUNT entries.
+ #ifdef UBFIX
+ for (i = 0; i < ARRAY_COUNT(sRubyFacilityClassToEmerald); i++)
+ #else
for (i = 0; i < FACILITY_CLASSES_COUNT; i++)
+ #endif
{
if (sRubyFacilityClassToEmerald[i][1] == src->facilityClass)
break;
@@ -3283,16 +3300,16 @@ static u8 GetFrontierTrainerFixedIvs(u16 trainerId)
return fixedIv;
}
-static u16 sub_8165D40(void)
+static u16 GetBattleTentTrainerId(void)
{
u32 facility = VarGet(VAR_FRONTIER_FACILITY);
- if (facility == FRONTIER_FACILITY_PALACE)
- return Random() % 30;
- else if (facility == FRONTIER_FACILITY_ARENA)
- return Random() % 30;
- else if (facility == FRONTIER_FACILITY_FACTORY)
- return Random() % 30;
+ if (facility == FRONTIER_FACILITY_PALACE) // Verdanturf Tent; uses Palace mechanics
+ return Random() % NUM_BATTLE_TENT_TRAINERS;
+ else if (facility == FRONTIER_FACILITY_ARENA) // Fallarbor Tent; uses Arena mechanics
+ return Random() % NUM_BATTLE_TENT_TRAINERS;
+ else if (facility == FRONTIER_FACILITY_FACTORY) // Slateport Tent; uses Factory mechanics
+ return Random() % NUM_BATTLE_TENT_TRAINERS;
else if (facility == FRONTIER_FACILITY_TOWER)
return 0;
else
@@ -3339,7 +3356,7 @@ static void SetNextBattleTentOpponent(void)
do
{
- trainerId = sub_8165D40();
+ trainerId = GetBattleTentTrainerId();
for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++)
{
if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId)
@@ -3502,7 +3519,7 @@ bool32 ValidateBattleTowerRecord(u8 recordId) // unused
}
}
-void sub_8166188(void)
+void TrySetLinkBattleTowerEnemyPartyLevel(void)
{
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
{
diff --git a/src/battle_transition.c b/src/battle_transition.c
index 559279e74..74e1548e7 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -1956,10 +1956,7 @@ static bool8 Phase2_Ripple_Func2(struct Task *task)
for (i = 0; i < 160; i++, r4 += r8)
{
s16 var = r4 >> 8;
-
- var++;
- var--;
- gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->field_16 + Sin(var, r3);
+ gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->field_16 + Sin(var & 0xffff, r3);
}
if (++task->tData3 == 81)
@@ -3974,10 +3971,7 @@ static bool8 Phase2_FrontierLogoWave_Func4(struct Task *task)
for (i = 0; i < 160; i++, var6 += var8)
{
s16 index = var6 / 256;
- #ifndef NONMATCHING
- asm("");
- #endif
- gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->field_16 + Sin(index, amplitude);
+ gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->field_16 + Sin(index & 0xff, amplitude);
}
if (++task->tData3 == 101)
diff --git a/src/battle_tv.c b/src/battle_tv.c
index c84ae827b..7e311fdab 100644
--- a/src/battle_tv.c
+++ b/src/battle_tv.c
@@ -6,7 +6,6 @@
#include "constants/battle_string_ids.h"
#include "constants/battle_anim.h"
#include "constants/moves.h"
-#include "constants/species.h"
#include "battle_message.h"
#include "tv.h"
@@ -713,8 +712,6 @@ void BattleTv_SetDataBasedOnAnimation(u8 animationId)
}
}
-#ifdef NONMATCHING
-// for loop has an unused stack variable
void TryPutLinkBattleTvShowOnAir(void)
{
u16 playerBestSpecies = 0, opponentBestSpecies = 0;
@@ -726,6 +723,7 @@ void TryPutLinkBattleTvShowOnAir(void)
u16 species = 0;
u16 moveId = 0;
s32 i, j;
+ int zero = 0, one = 1; //needed for matching
if (gBattleStruct->anyMonHasTransformed)
return;
@@ -748,7 +746,7 @@ void TryPutLinkBattleTvShowOnAir(void)
if (species != SPECIES_NONE && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG, NULL))
{
for (sum = 0, j = 0; j < MAX_MON_MOVES; j++)
- sum += movePoints->points[0][i * 4 + j];
+ sum += movePoints->points[zero][i * 4 + j];
if (playerBestSum < sum)
{
@@ -762,7 +760,7 @@ void TryPutLinkBattleTvShowOnAir(void)
if (species != SPECIES_NONE && !GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG, NULL))
{
for (sum = 0, j = 0; j < MAX_MON_MOVES; j++)
- sum += movePoints->points[1][i * 4 + j];
+ sum += movePoints->points[one][i * 4 + j];
if (opponentBestSum == sum)
{
@@ -784,9 +782,9 @@ void TryPutLinkBattleTvShowOnAir(void)
for (sum = 0, i = 0, j = 0; j < MAX_MON_MOVES; j++)
{
- if (sum < movePoints->points[0][playerBestMonId * 4 + j])
+ if (sum < movePoints->points[zero][playerBestMonId * 4 + j])
{
- sum = movePoints->points[0][playerBestMonId * 4 + j];
+ sum = movePoints->points[zero][playerBestMonId * 4 + j];
i = j;
}
}
@@ -810,333 +808,6 @@ void TryPutLinkBattleTvShowOnAir(void)
}
}
-#else
-NAKED
-void TryPutLinkBattleTvShowOnAir(void)
-{
- asm_unified(
- "push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x20\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r1, 0\n\
- str r1, [sp, 0x4]\n\
- movs r2, 0\n\
- str r2, [sp, 0x8]\n\
- ldr r3, =0x00007fff\n\
- str r3, [sp, 0xC]\n\
- movs r4, 0\n\
- str r4, [sp, 0x10]\n\
- movs r7, 0\n\
- str r7, [sp, 0x14]\n\
- mov r8, r0\n\
- ldr r0, =gBattleStruct\n\
- ldr r1, [r0]\n\
- adds r0, r1, 0\n\
- adds r0, 0xB3\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _0817E42A\n\
- b _0817E670\n\
-_0817E42A:\n\
- movs r2, 0xD2\n\
- lsls r2, 1\n\
- adds r2, r1\n\
- mov r10, r2\n\
- movs r6, 0\n\
-_0817E434:\n\
- movs r0, 0x64\n\
- adds r4, r6, 0\n\
- muls r4, r0\n\
- ldr r0, =gPlayerParty\n\
- adds r0, r4, r0\n\
- movs r1, 0xB\n\
- movs r2, 0\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _0817E454\n\
- mov r0, r8\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
-_0817E454:\n\
- ldr r5, =gEnemyParty\n\
- adds r0, r4, r5\n\
- movs r1, 0xB\n\
- movs r2, 0\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _0817E46A\n\
- adds r0, r7, 0x1\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
-_0817E46A:\n\
- adds r6, 0x1\n\
- cmp r6, 0x5\n\
- ble _0817E434\n\
- ldr r0, =gBattleTypeFlags\n\
- ldr r0, [r0]\n\
- movs r1, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0817E47E\n\
- b _0817E670\n\
-_0817E47E:\n\
- cmp r8, r7\n\
- beq _0817E484\n\
- b _0817E670\n\
-_0817E484:\n\
- movs r6, 0\n\
- lsls r3, r6, 1\n\
- str r3, [sp, 0x18]\n\
- movs r4, 0x64\n\
- mov r8, r4\n\
-_0817E48E:\n\
- mov r1, r8\n\
- muls r1, r6\n\
- ldr r0, =gPlayerParty\n\
- adds r4, r1, r0\n\
- adds r0, r4, 0\n\
- movs r1, 0xB\n\
- movs r2, 0\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r7, r0, 16\n\
- adds r0, r6, 0x1\n\
- mov r9, r0\n\
- cmp r7, 0\n\
- beq _0817E4EE\n\
- adds r0, r4, 0\n\
- movs r1, 0x2D\n\
- movs r2, 0\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- bne _0817E4EE\n\
- movs r4, 0\n\
- lsls r0, r6, 3\n\
- mov r2, r10\n\
- adds r1, r0, r2\n\
- movs r3, 0x3\n\
-_0817E4C4:\n\
- lsls r0, r4, 16\n\
- asrs r0, 16\n\
- ldrh r4, [r1]\n\
- adds r0, r4\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- adds r1, 0x2\n\
- subs r3, 0x1\n\
- cmp r3, 0\n\
- bge _0817E4C4\n\
- ldr r1, [sp, 0x8]\n\
- lsls r0, r1, 16\n\
- lsls r1, r4, 16\n\
- cmp r0, r1\n\
- bge _0817E4EE\n\
- lsls r0, r6, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x10]\n\
- lsrs r1, 16\n\
- str r1, [sp, 0x8]\n\
- str r7, [sp]\n\
-_0817E4EE:\n\
- mov r0, r8\n\
- muls r0, r6\n\
- ldr r2, =gEnemyParty\n\
- adds r4, r0, r2\n\
- adds r0, r4, 0\n\
- movs r1, 0xB\n\
- movs r2, 0\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r7, r0, 16\n\
- ldr r3, [sp, 0x8]\n\
- lsls r3, 16\n\
- str r3, [sp, 0x1C]\n\
- cmp r7, 0\n\
- beq _0817E5A0\n\
- adds r0, r4, 0\n\
- movs r1, 0x2D\n\
- movs r2, 0\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- bne _0817E5A0\n\
- movs r4, 0\n\
- ldr r0, [sp, 0xC]\n\
- lsls r2, r0, 16\n\
- movs r3, 0x1\n\
- lsls r1, r3, 1\n\
- adds r1, 0x1\n\
- lsls r1, 4\n\
- lsls r0, r6, 3\n\
- adds r0, r1\n\
- mov r3, r10\n\
- adds r1, r0, r3\n\
- movs r3, 0x3\n\
-_0817E534:\n\
- lsls r0, r4, 16\n\
- asrs r0, 16\n\
- ldrh r4, [r1]\n\
- adds r0, r4\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- adds r1, 0x2\n\
- subs r3, 0x1\n\
- cmp r3, 0\n\
- bge _0817E534\n\
- asrs r1, r2, 16\n\
- lsls r5, r4, 16\n\
- asrs r0, r5, 16\n\
- cmp r1, r0\n\
- bne _0817E590\n\
- mov r0, r8\n\
- muls r0, r6\n\
- ldr r1, =gEnemyParty\n\
- adds r0, r1\n\
- movs r1, 0x19\n\
- movs r2, 0\n\
- bl GetMonData\n\
- adds r4, r0, 0\n\
- ldr r2, [sp, 0x14]\n\
- mov r0, r8\n\
- muls r0, r2\n\
- ldr r3, =gEnemyParty\n\
- adds r0, r3\n\
- movs r1, 0x19\n\
- movs r2, 0\n\
- bl GetMonData\n\
- cmp r4, r0\n\
- bls _0817E5A0\n\
- b _0817E594\n\
- .pool\n\
-_0817E590:\n\
- cmp r1, r0\n\
- ble _0817E5A0\n\
-_0817E594:\n\
- lsls r0, r6, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x14]\n\
- lsrs r5, 16\n\
- str r5, [sp, 0xC]\n\
- str r7, [sp, 0x4]\n\
-_0817E5A0:\n\
- mov r6, r9\n\
- cmp r6, 0x5\n\
- bgt _0817E5A8\n\
- b _0817E48E\n\
-_0817E5A8:\n\
- movs r4, 0\n\
- movs r6, 0\n\
- movs r3, 0\n\
- ldr r5, =gPlayerParty\n\
- ldr r7, [sp, 0x10]\n\
- lsls r0, r7, 3\n\
- mov r1, r10\n\
- adds r2, r0, r1\n\
-_0817E5B8:\n\
- lsls r0, r4, 16\n\
- asrs r0, 16\n\
- movs r7, 0\n\
- ldrsh r1, [r2, r7]\n\
- cmp r0, r1\n\
- bge _0817E5C8\n\
- ldrh r4, [r2]\n\
- adds r6, r3, 0\n\
-_0817E5C8:\n\
- adds r2, 0x2\n\
- adds r3, 0x1\n\
- cmp r3, 0x3\n\
- ble _0817E5B8\n\
- movs r0, 0x64\n\
- ldr r1, [sp, 0x10]\n\
- muls r0, r1\n\
- adds r0, r5\n\
- adds r1, r6, 0\n\
- adds r1, 0xD\n\
- movs r2, 0\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- ldr r2, [sp, 0x1C]\n\
- cmp r2, 0\n\
- beq _0817E670\n\
- cmp r4, 0\n\
- beq _0817E670\n\
- ldr r0, =gBattleTypeFlags\n\
- ldr r0, [r0]\n\
- movs r1, 0x40\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0817E65C\n\
- ldr r3, [sp, 0x10]\n\
- cmp r3, 0x2\n\
- bhi _0817E620\n\
- ldr r0, =gBattleScripting\n\
- adds r0, 0x25\n\
- ldrb r0, [r0]\n\
- bl GetLinkTrainerFlankId\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _0817E630\n\
- b _0817E670\n\
- .pool\n\
-_0817E620:\n\
- ldr r0, =gBattleScripting\n\
- adds r0, 0x25\n\
- ldrb r0, [r0]\n\
- bl GetLinkTrainerFlankId\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _0817E670\n\
-_0817E630:\n\
- movs r3, 0\n\
- ldr r7, [sp, 0x14]\n\
- cmp r7, 0x2\n\
- bls _0817E63A\n\
- movs r3, 0x1\n\
-_0817E63A:\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- ldr r1, =gBattleScripting\n\
- adds r1, 0x25\n\
- ldrb r1, [r1]\n\
- bl sub_806EF84\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- adds r1, r4, 0\n\
- ldr r2, [sp]\n\
- ldr r3, [sp, 0x4]\n\
- bl PutBattleUpdateOnTheAir\n\
- b _0817E670\n\
- .pool\n\
-_0817E65C:\n\
- ldr r0, =gBattleScripting\n\
- adds r0, 0x25\n\
- ldrb r1, [r0]\n\
- movs r0, 0x1\n\
- eors r0, r1\n\
- adds r1, r4, 0\n\
- ldr r2, [sp]\n\
- ldr r3, [sp, 0x4]\n\
- bl PutBattleUpdateOnTheAir\n\
-_0817E670:\n\
- add sp, 0x20\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool");
-}
-#endif
-
static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3)
{
struct BattleTvMovePoints *movePoints = &gBattleStruct->tvMovePoints;
diff --git a/src/battle_util.c b/src/battle_util.c
index 699fd05bc..e929de091 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -1,13 +1,23 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
+#include "battle_arena.h"
+#include "battle_pyramid.h"
+#include "battle_util.h"
#include "pokemon.h"
+#include "international_string_util.h"
#include "item.h"
#include "util.h"
#include "battle_scripts.h"
#include "random.h"
#include "text.h"
+#include "safari_zone.h"
+#include "sound.h"
+#include "sprite.h"
#include "string_util.h"
+#include "task.h"
+#include "trig.h"
+#include "window.h"
#include "battle_message.h"
#include "battle_ai_script_commands.h"
#include "battle_controllers.h"
@@ -23,9 +33,620 @@
#include "constants/hold_effects.h"
#include "constants/items.h"
#include "constants/moves.h"
+#include "constants/songs.h"
#include "constants/species.h"
#include "constants/weather.h"
+/*
+NOTE: The data and functions in this file up until (but not including) sSoundMovesTable
+are actually part of battle_main.c. They needed to be moved to this file in order to
+match the ROM; this is also why sSoundMovesTable's declaration is in the middle of
+functions instead of at the top of the file with the other declarations.
+*/
+
+extern const u8 *const gBattleScriptsForMoveEffects[];
+extern const u8 *const gBattlescriptsForBallThrow[];
+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 sGoNearCounterToCatchFactor[] = {4, 3, 2, 1};
+static const u8 sGoNearCounterToEscapeFactor[] = {4, 4, 4, 4};
+
+void HandleAction_UseMove(void)
+{
+ u8 side;
+ u8 var = 4;
+
+ gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
+
+ if (*(&gBattleStruct->field_91) & gBitTable[gBattlerAttacker])
+ {
+ gCurrentActionFuncId = B_ACTION_FINISHED;
+ return;
+ }
+
+ gCritMultiplier = 1;
+ gBattleScripting.dmgMultiplier = 1;
+ gBattleStruct->atkCancellerTracker = 0;
+ gMoveResultFlags = 0;
+ gMultiHitCounter = 0;
+ gBattleCommunication[6] = 0;
+ gCurrMovePos = gChosenMovePos = *(gBattleStruct->chosenMovePositions + gBattlerAttacker);
+
+ // choose move
+ if (gProtectStructs[gBattlerAttacker].noValidMoves)
+ {
+ gProtectStructs[gBattlerAttacker].noValidMoves = 0;
+ gCurrentMove = gChosenMove = MOVE_STRUGGLE;
+ gHitMarker |= HITMARKER_NO_PPDEDUCT;
+ *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(MOVE_STRUGGLE, 0);
+ }
+ else if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gBattlerAttacker].status2 & STATUS2_RECHARGE)
+ {
+ gCurrentMove = gChosenMove = gLockedMoves[gBattlerAttacker];
+ }
+ // encore forces you to use the same move
+ else if (gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE
+ && gDisableStructs[gBattlerAttacker].encoredMove == gBattleMons[gBattlerAttacker].moves[gDisableStructs[gBattlerAttacker].encoredMovePos])
+ {
+ gCurrentMove = gChosenMove = gDisableStructs[gBattlerAttacker].encoredMove;
+ gCurrMovePos = gChosenMovePos = gDisableStructs[gBattlerAttacker].encoredMovePos;
+ *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0);
+ }
+ // check if the encored move wasn't overwritten
+ else if (gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE
+ && gDisableStructs[gBattlerAttacker].encoredMove != gBattleMons[gBattlerAttacker].moves[gDisableStructs[gBattlerAttacker].encoredMovePos])
+ {
+ gCurrMovePos = gChosenMovePos = gDisableStructs[gBattlerAttacker].encoredMovePos;
+ gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
+ gDisableStructs[gBattlerAttacker].encoredMove = MOVE_NONE;
+ gDisableStructs[gBattlerAttacker].encoredMovePos = 0;
+ gDisableStructs[gBattlerAttacker].encoreTimer = 0;
+ *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0);
+ }
+ else if (gBattleMons[gBattlerAttacker].moves[gCurrMovePos] != gChosenMoveByBattler[gBattlerAttacker])
+ {
+ gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
+ *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0);
+ }
+ else
+ {
+ gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
+ }
+
+ if (gBattleMons[gBattlerAttacker].hp != 0)
+ {
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
+ gBattleResults.lastUsedMovePlayer = gCurrentMove;
+ else
+ gBattleResults.lastUsedMoveOpponent = gCurrentMove;
+ }
+
+ // choose target
+ side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE;
+ if (gSideTimers[side].followmeTimer != 0
+ && gBattleMoves[gCurrentMove].target == MOVE_TARGET_SELECTED
+ && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gSideTimers[side].followmeTarget)
+ && gBattleMons[gSideTimers[side].followmeTarget].hp != 0)
+ {
+ gBattlerTarget = gSideTimers[side].followmeTarget;
+ }
+ else if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ && gSideTimers[side].followmeTimer == 0
+ && (gBattleMoves[gCurrentMove].power != 0
+ || gBattleMoves[gCurrentMove].target != MOVE_TARGET_USER)
+ && gBattleMons[*(gBattleStruct->moveTarget + gBattlerAttacker)].ability != ABILITY_LIGHTNING_ROD
+ && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC)
+ {
+ side = GetBattlerSide(gBattlerAttacker);
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
+ {
+ if (side != GetBattlerSide(gActiveBattler)
+ && *(gBattleStruct->moveTarget + gBattlerAttacker) != gActiveBattler
+ && gBattleMons[gActiveBattler].ability == ABILITY_LIGHTNING_ROD
+ && GetBattlerTurnOrderNum(gActiveBattler) < var)
+ {
+ var = GetBattlerTurnOrderNum(gActiveBattler);
+ }
+ }
+ if (var == 4)
+ {
+ if (gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM)
+ {
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
+ {
+ if (Random() & 1)
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ else
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
+ }
+ else
+ {
+ if (Random() & 1)
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ else
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
+ }
+ }
+ else
+ {
+ gBattlerTarget = *(gBattleStruct->moveTarget + gBattlerAttacker);
+ }
+
+ if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
+ {
+ if (GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget))
+ {
+ gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK);
+ }
+ else
+ {
+ gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_SIDE);
+ if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
+ gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK);
+ }
+ }
+ }
+ else
+ {
+ gActiveBattler = gBattlerByTurnOrder[var];
+ RecordAbilityBattle(gActiveBattler, gBattleMons[gActiveBattler].ability);
+ gSpecialStatuses[gActiveBattler].lightningRodRedirected = 1;
+ gBattlerTarget = gActiveBattler;
+ }
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
+ && gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM)
+ {
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
+ {
+ if (Random() & 1)
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ else
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
+ }
+ else
+ {
+ if (Random() & 1)
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ else
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
+ }
+
+ if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]
+ && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget))
+ {
+ gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK);
+ }
+ }
+ else
+ {
+ gBattlerTarget = *(gBattleStruct->moveTarget + gBattlerAttacker);
+ if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
+ {
+ if (GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget))
+ {
+ gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK);
+ }
+ else
+ {
+ gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_SIDE);
+ if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
+ gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK);
+ }
+ }
+ }
+
+ // choose battlescript
+ if (gBattleTypeFlags & BATTLE_TYPE_PALACE
+ && gProtectStructs[gBattlerAttacker].palaceUnableToUseMove)
+ {
+ if (gBattleMons[gBattlerAttacker].hp == 0)
+ {
+ gCurrentActionFuncId = B_ACTION_FINISHED;
+ return;
+ }
+ else if (gPalaceSelectionBattleScripts[gBattlerAttacker] != NULL)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ gBattlescriptCurrInstr = gPalaceSelectionBattleScripts[gBattlerAttacker];
+ gPalaceSelectionBattleScripts[gBattlerAttacker] = NULL;
+ }
+ else
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround;
+ }
+ }
+ else
+ {
+ gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
+ BattleArena_AddMindPoints(gBattlerAttacker);
+
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
+}
+
+void HandleAction_Switch(void)
+{
+ gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gActionSelectionCursor[gBattlerAttacker] = 0;
+ gMoveSelectionCursor[gBattlerAttacker] = 0;
+
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, *(gBattleStruct->field_58 + gBattlerAttacker))
+
+ gBattleScripting.battler = gBattlerAttacker;
+ gBattlescriptCurrInstr = BattleScript_ActionSwitch;
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
+
+ if (gBattleResults.playerSwitchesCounter < 255)
+ gBattleResults.playerSwitchesCounter++;
+}
+
+void HandleAction_UseItem(void)
+{
+ gBattlerAttacker = gBattlerTarget = gBattlerByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ ClearFuryCutterDestinyBondGrudge(gBattlerAttacker);
+ gLastUsedItem = gBattleBufferB[gBattlerAttacker][1] | (gBattleBufferB[gBattlerAttacker][2] << 8);
+
+ if (gLastUsedItem <= LAST_BALL) // is ball
+ {
+ gBattlescriptCurrInstr = gBattlescriptsForBallThrow[gLastUsedItem];
+ }
+ else if (gLastUsedItem == ITEM_POKE_DOLL || gLastUsedItem == ITEM_FLUFFY_TAIL)
+ {
+ gBattlescriptCurrInstr = gBattlescriptsForRunningByItem[0];
+ }
+ else if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
+ {
+ gBattlescriptCurrInstr = gBattlescriptsForUsingItem[0];
+ }
+ else
+ {
+ gBattleScripting.battler = gBattlerAttacker;
+
+ switch (*(gBattleStruct->AI_itemType + (gBattlerAttacker >> 1)))
+ {
+ case AI_ITEM_FULL_RESTORE:
+ case AI_ITEM_HEAL_HP:
+ break;
+ case AI_ITEM_CURE_CONDITION:
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ if (*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & 1)
+ {
+ if (*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & 0x3E)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 5;
+ }
+ else
+ {
+ while (!(*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & 1))
+ {
+ *(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) >>= 1;
+ gBattleCommunication[MULTISTRING_CHOOSER]++;
+ }
+ }
+ break;
+ case AI_ITEM_X_STAT:
+ gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ if (*(gBattleStruct->AI_itemFlags + (gBattlerAttacker >> 1)) & 0x80)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 5;
+ }
+ else
+ {
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK)
+ PREPARE_STRING_BUFFER(gBattleTextBuff2, CHAR_X)
+
+ while (!((*(gBattleStruct->AI_itemFlags + (gBattlerAttacker >> 1))) & 1))
+ {
+ *(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) >>= 1;
+ gBattleTextBuff1[2]++;
+ }
+
+ gBattleScripting.animArg1 = gBattleTextBuff1[2] + 14;
+ gBattleScripting.animArg2 = 0;
+ }
+ break;
+ case AI_ITEM_GUARD_SPECS:
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ break;
+ }
+
+ gBattlescriptCurrInstr = gBattlescriptsForUsingItem[*(gBattleStruct->AI_itemType + gBattlerAttacker / 2)];
+ }
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
+}
+
+bool8 TryRunFromBattle(u8 battler)
+{
+ bool8 effect = FALSE;
+ u8 holdEffect;
+ u8 pyramidMultiplier;
+ u8 speedVar;
+
+ if (gBattleMons[battler].item == ITEM_ENIGMA_BERRY)
+ holdEffect = gEnigmaBerries[battler].holdEffect;
+ else
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[battler].item);
+
+ gPotentialItemEffectBattler = battler;
+
+ if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN)
+ {
+ gLastUsedItem = gBattleMons[battler].item;
+ gProtectStructs[battler].fleeFlag = 1;
+ effect++;
+ }
+ else if (gBattleMons[battler].ability == ABILITY_RUN_AWAY)
+ {
+ if (InBattlePyramid())
+ {
+ gBattleStruct->runTries++;
+ pyramidMultiplier = GetPyramidRunMultiplier();
+ speedVar = (gBattleMons[battler].speed * pyramidMultiplier) / (gBattleMons[BATTLE_OPPOSITE(battler)].speed) + (gBattleStruct->runTries * 30);
+ if (speedVar > (Random() & 0xFF))
+ {
+ gLastUsedAbility = ABILITY_RUN_AWAY;
+ gProtectStructs[battler].fleeFlag = 2;
+ effect++;
+ }
+ }
+ else
+ {
+ gLastUsedAbility = ABILITY_RUN_AWAY;
+ gProtectStructs[battler].fleeFlag = 2;
+ effect++;
+ }
+ }
+ else if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_TRAINER_HILL) && gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ effect++;
+ }
+ else
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ if (InBattlePyramid())
+ {
+ pyramidMultiplier = GetPyramidRunMultiplier();
+ speedVar = (gBattleMons[battler].speed * pyramidMultiplier) / (gBattleMons[BATTLE_OPPOSITE(battler)].speed) + (gBattleStruct->runTries * 30);
+ if (speedVar > (Random() & 0xFF))
+ effect++;
+ }
+ else if (gBattleMons[battler].speed < gBattleMons[BATTLE_OPPOSITE(battler)].speed)
+ {
+ speedVar = (gBattleMons[battler].speed * 128) / (gBattleMons[BATTLE_OPPOSITE(battler)].speed) + (gBattleStruct->runTries * 30);
+ if (speedVar > (Random() & 0xFF))
+ effect++;
+ }
+ else // same speed or faster
+ {
+ effect++;
+ }
+ }
+
+ gBattleStruct->runTries++;
+ }
+
+ if (effect)
+ {
+ gCurrentTurnActionNumber = gBattlersCount;
+ gBattleOutcome = B_OUTCOME_RAN;
+ }
+
+ return effect;
+}
+
+void HandleAction_Run(void)
+{
+ gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
+
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ {
+ gCurrentTurnActionNumber = gBattlersCount;
+
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
+ {
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
+ {
+ if (gChosenActionByBattler[gActiveBattler] == B_ACTION_RUN)
+ gBattleOutcome |= B_OUTCOME_LOST;
+ }
+ else
+ {
+ if (gChosenActionByBattler[gActiveBattler] == B_ACTION_RUN)
+ gBattleOutcome |= B_OUTCOME_WON;
+ }
+ }
+
+ gBattleOutcome |= B_OUTCOME_LINK_BATTLE_RAN;
+ gSaveBlock2Ptr->frontier.disableRecordBattle = TRUE;
+ }
+ else
+ {
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
+ {
+ if (!TryRunFromBattle(gBattlerAttacker)) // failed to run away
+ {
+ ClearFuryCutterDestinyBondGrudge(gBattlerAttacker);
+ gBattleCommunication[MULTISTRING_CHOOSER] = 3;
+ gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString;
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
+ }
+ }
+ else
+ {
+ if (gBattleMons[gBattlerAttacker].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString;
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
+ }
+ else
+ {
+ gCurrentTurnActionNumber = gBattlersCount;
+ gBattleOutcome = B_OUTCOME_MON_FLED;
+ }
+ }
+ }
+}
+
+void HandleAction_WatchesCarefully(void)
+{
+ gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gBattlescriptCurrInstr = gBattlescriptsForSafariActions[0];
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
+}
+
+void HandleAction_SafariZoneBallThrow(void)
+{
+ gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gNumSafariBalls--;
+ gLastUsedItem = ITEM_SAFARI_BALL;
+ gBattlescriptCurrInstr = gBattlescriptsForBallThrow[ITEM_SAFARI_BALL];
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
+}
+
+void HandleAction_ThrowPokeblock(void)
+{
+ gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = gBattleBufferB[gBattlerAttacker][1] - 1;
+ gLastUsedItem = gBattleBufferB[gBattlerAttacker][2];
+
+ if (gBattleResults.pokeblockThrows < 0xFF)
+ gBattleResults.pokeblockThrows++;
+ if (gBattleStruct->safariPkblThrowCounter < 3)
+ gBattleStruct->safariPkblThrowCounter++;
+ if (gBattleStruct->safariEscapeFactor > 1)
+ {
+ // BUG: safariEscapeFactor can become 0 below. This causes the pokeblock throw glitch.
+ #ifdef BUGFIX
+ if (gBattleStruct->safariEscapeFactor <= sPkblToEscapeFactor[gBattleStruct->safariPkblThrowCounter][gBattleCommunication[MULTISTRING_CHOOSER]])
+ #else
+ if (gBattleStruct->safariEscapeFactor < sPkblToEscapeFactor[gBattleStruct->safariPkblThrowCounter][gBattleCommunication[MULTISTRING_CHOOSER]])
+ #endif
+ gBattleStruct->safariEscapeFactor = 1;
+ else
+ gBattleStruct->safariEscapeFactor -= sPkblToEscapeFactor[gBattleStruct->safariPkblThrowCounter][gBattleCommunication[MULTISTRING_CHOOSER]];
+ }
+
+ gBattlescriptCurrInstr = gBattlescriptsForSafariActions[2];
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
+}
+
+void HandleAction_GoNear(void)
+{
+ gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+
+ gBattleStruct->safariCatchFactor += sGoNearCounterToCatchFactor[gBattleStruct->safariGoNearCounter];
+ if (gBattleStruct->safariCatchFactor > 20)
+ gBattleStruct->safariCatchFactor = 20;
+
+ gBattleStruct->safariEscapeFactor += sGoNearCounterToEscapeFactor[gBattleStruct->safariGoNearCounter];
+ if (gBattleStruct->safariEscapeFactor > 20)
+ gBattleStruct->safariEscapeFactor = 20;
+
+ if (gBattleStruct->safariGoNearCounter < 3)
+ {
+ gBattleStruct->safariGoNearCounter++;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ else
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1; // Can't get closer.
+ }
+ gBattlescriptCurrInstr = gBattlescriptsForSafariActions[1];
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
+}
+
+void HandleAction_SafariZoneRun(void)
+{
+ gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
+ PlaySE(SE_FLEE);
+ gCurrentTurnActionNumber = gBattlersCount;
+ gBattleOutcome = B_OUTCOME_RAN;
+}
+
+void HandleAction_WallyBallThrow(void)
+{
+ gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, gBattlerPartyIndexes[gBattlerAttacker])
+
+ gBattlescriptCurrInstr = gBattlescriptsForSafariActions[3];
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
+ gActionsByTurnOrder[1] = B_ACTION_FINISHED;
+}
+
+void HandleAction_TryFinish(void)
+{
+ if (!HandleFaintedMonActions())
+ {
+ gBattleStruct->faintedActionsState = 0;
+ gCurrentActionFuncId = B_ACTION_FINISHED;
+ }
+}
+
+void HandleAction_NothingIsFainted(void)
+{
+ gCurrentTurnActionNumber++;
+ gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber];
+ gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED
+ | HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR
+ | HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_x100000
+ | HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT
+ | HITMARKER_CHARGING | HITMARKER_x4000000);
+}
+
+void HandleAction_ActionFinished(void)
+{
+ *(gBattleStruct->monToSwitchIntoId + gBattlerByTurnOrder[gCurrentTurnActionNumber]) = 6;
+ gCurrentTurnActionNumber++;
+ gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber];
+ SpecialStatusesClear();
+ gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED
+ | HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR
+ | HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_x100000
+ | HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT
+ | HITMARKER_CHARGING | HITMARKER_x4000000);
+
+ gCurrentMove = 0;
+ gBattleMoveDamage = 0;
+ gMoveResultFlags = 0;
+ gBattleScripting.animTurn = 0;
+ gBattleScripting.animTargetsHit = 0;
+ gLastLandedMoves[gBattlerAttacker] = 0;
+ gLastHitByType[gBattlerAttacker] = 0;
+ gBattleStruct->dynamicMoveType = 0;
+ gDynamicBasePower = 0;
+ gBattleScripting.moveendState = 0;
+ gBattleCommunication[3] = 0;
+ gBattleCommunication[4] = 0;
+ gBattleScripting.multihitMoveEffect = 0;
+ gBattleResources->battleScriptsStack->size = 0;
+}
+
// rom const data
static const u16 sSoundMovesTable[] =
{
@@ -1634,16 +2255,8 @@ bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2)
}
else
{
- // FIXME: Compiler insists on moving r4 into r1 before doing the eor.
- #ifndef NONMATCHING
- register u32 var asm("r1");
- #else
- u32 var;
- #endif // NONMATCHING
-
party = gEnemyParty;
- var = battler ^ BIT_SIDE;
- if (var == 0)
+ if (battler == 1)
id1 = 0;
else
id1 = 1;
@@ -3208,7 +3821,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& TARGET_TURN_DAMAGED
&& (Random() % 100) < atkHoldEffectParam
- && gBattleMoves[gCurrentMove].flags & FLAG_KINGSROCK_AFFECTED
+ && gBattleMoves[gCurrentMove].flags & FLAG_KINGS_ROCK_AFFECTED
&& gBattleMons[gBattlerTarget].hp)
{
gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_FLINCH;
diff --git a/src/berry.c b/src/berry.c
index d70e8c353..98264f37b 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -1331,7 +1331,7 @@ void ResetBerryTreeSparkleFlags(void)
s16 bottom;
int i;
- GetCameraCoords((u16*)&cam_left, (u16*)&cam_top);
+ GetCameraCoords(&cam_left, &cam_top);
left = cam_left;
top = cam_top + 3;
right = cam_left + 14;
diff --git a/src/berry_blender.c b/src/berry_blender.c
index 2cdb841ee..573affbd5 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -168,8 +168,8 @@ struct BerryBlender
u16 progressBarValue;
u16 maxProgressBarValue;
u16 centerScale;
- s16 bg_X;
- s16 bg_Y;
+ u16 bg_X;
+ u16 bg_Y;
u8 opponentTaskIds[BLENDER_MAX_PLAYERS - 1];
u8 perfectOpponents; // for debugging, NPCs will always hit Best
u16 scores[BLENDER_MAX_PLAYERS][NUM_SCORE_TYPES];
@@ -1852,7 +1852,9 @@ static void Task_HandleOpponent1(u8 taskId)
gRecvCmds[1][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_GOOD;
// BUG: Overrwrote above assignment. Opponent 1 can't get Best at low speed
+ #ifndef BUGFIX
gRecvCmds[1][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_GOOD;
+ #endif
}
else if (sBerryBlender->speed < 1500)
{
@@ -2131,11 +2133,17 @@ static void UpdateOpponentScores(void)
sBerryBlender->scores[i][SCORE_MISS]++;
}
- // BUG: Should [i][BLENDER_COMM_SCORE] below, not [BLENDER_COMM_SCORE][i]
+ // BUG: Should be [i][BLENDER_COMM_SCORE] below, not [BLENDER_COMM_SCORE][i]
// As a result the music tempo updates if any player misses, but only if 1 specific player hits
+ #ifdef BUGFIX
+ if (gRecvCmds[i][BLENDER_COMM_SCORE] == LINKCMD_BLENDER_SCORE_MISS
+ || gRecvCmds[i][BLENDER_COMM_SCORE] == LINKCMD_BLENDER_SCORE_BEST
+ || gRecvCmds[i][BLENDER_COMM_SCORE] == LINKCMD_BLENDER_SCORE_GOOD)
+ #else
if (gRecvCmds[i][BLENDER_COMM_SCORE] == LINKCMD_BLENDER_SCORE_MISS
|| gRecvCmds[BLENDER_COMM_SCORE][i] == LINKCMD_BLENDER_SCORE_BEST
|| gRecvCmds[BLENDER_COMM_SCORE][i] == LINKCMD_BLENDER_SCORE_GOOD)
+ #endif
{
if (sBerryBlender->speed > 1500)
m4aMPlayTempoControl(&gMPlayInfo_BGM, ((sBerryBlender->speed - 750) / 20) + 256);
@@ -3387,13 +3395,13 @@ static void RestoreBgCoord(s16* coord)
// For "unshaking" the screen after ShakeBgCoordForHit is called
static void RestoreBgCoords(void)
{
- RestoreBgCoord((s16 *)&sBerryBlender->bg_X);
- RestoreBgCoord((s16 *)&sBerryBlender->bg_Y);
+ RestoreBgCoord(&sBerryBlender->bg_X);
+ RestoreBgCoord(&sBerryBlender->bg_Y);
}
static void BlenderLandShakeBgCoord(s16* coord, u16 timer)
{
- u8 strength;
+ s32 strength;
if (timer < 10)
strength = 16;
diff --git a/src/berry_crush.c b/src/berry_crush.c
index d753e603c..90bc7150d 100755
--- a/src/berry_crush.c
+++ b/src/berry_crush.c
@@ -40,22 +40,27 @@
struct BerryCrushGame_Player
{
- u16 unk0;
- u16 unk2;
- union
- {
- u8 as_2d_bytes[2][8];
- u16 as_hwords[8];
- } unk4;
- u8 unk14[12];
+ u8 unk0[PLAYER_NAME_LENGTH + 1 + 4];
+ u16 unkC;
+ u16 unkE;
+ u16 unk10;
+ u16 unk12;
+ u16 unk14;
+ u16 unk16;
+ u16 unk18;
+ u16 unk1A;
+ u8 unk1B;
+ u8 unk1C;
};
-struct __attribute__((packed, aligned(2))) BerryCrushGame_4E
+struct BerryCrushGame_4E
{
u16 unk0;
- u16 filler2;
+ u16 unk2;
u8 unk4_0:1;
u8 unk4_1:1;
+ u8 unk4_2:1;
+ u8 unk4_3:5;
s8 unk5;
u16 unk6;
u16 unk8;
@@ -63,11 +68,16 @@ struct __attribute__((packed, aligned(2))) BerryCrushGame_4E
u16 unkC;
};
-struct __attribute__((packed)) BerryCrushGame_40
+struct BerryCrushGame_40
{
- u8 unk0[2];
- u16 unk2[6];
- struct BerryCrushGame_4E unkE;
+ s16 unk0;
+ s16 unk2;
+ s16 unk4;
+ s16 unk6;
+ s16 unk8;
+ s16 unkA;
+ s16 unkC;
+ s16 unkE;
};
struct BerryCrushGame_5C
@@ -77,37 +87,22 @@ struct BerryCrushGame_5C
u8 unk02_1:1;
u8 unk02_2:1;
u8 unk02_3:5;
- u8 unk03;
+ s8 unk03;
u16 unk04;
u16 unk06;
u16 unk08;
u16 unk0A;
};
-union BerryCrushGame_68
+struct BerryCrushGame_68
{
- struct BerryCrushGame_68_x
- {
- struct BerryCrushGame_68_x_SubStruct
- {
- s32 unk00;
- u16 unk04;
- s16 unk06;
- u16 unk08;
- u16 unk0A;
- u16 unk0C[2][5];
- u8 filler20[16];
- } unk00;
- u8 unk30[12];
- struct BerryCrushGame_Player others[4];
- u8 fillerBC[20];
- } as_four_players;
- struct BerryCrushGame_68_y
- {
- u8 filler00[28];
- struct BerryCrushGame_Player unk1C[5];
- u8 fillerBC[20];
- } as_five_players;
+ u32 unk00;
+ u16 unk04;
+ u16 unk06;
+ u16 unk08;
+ u16 unk0A;
+ u16 unk0C[2][5];
+ u8 unk20[2][8];
};
struct BerryCrushGame_138_C
@@ -140,6 +135,7 @@ struct BerryCrushGame_138
u8 filler81;
u8 unk82;
u8 unk83[5];
+ u16 unk88[4][0x800];
};
struct BerryCrushGame
@@ -148,7 +144,7 @@ struct BerryCrushGame
u32 (* unk4)(struct BerryCrushGame *, u8 *);
u8 unk8;
u8 unk9;
- u8 unkA;
+ u8 mainTask;
u8 unkB;
u8 unkC;
u8 unkD;
@@ -160,7 +156,7 @@ struct BerryCrushGame
u16 unk16;
s16 unk18;
s16 unk1A;
- int unk1C;
+ s32 unk1C;
s32 unk20;
u8 unk24;
u8 unk25_0:1;
@@ -177,21 +173,19 @@ struct BerryCrushGame
s16 unk30;
s16 unk32;
s16 unk34;
- u8 unk36[0xA];
- struct BerryCrushGame_40 unk40;
+ u8 unk36[0xC];
+ u16 unk42[6];
+ u16 unk4E[7];
struct BerryCrushGame_5C unk5C;
- union BerryCrushGame_68 unk68;
+ struct BerryCrushGame_68 unk68;
+ struct BerryCrushGame_Player unk98[5];
struct BerryCrushGame_138 unk138;
- u8 unk1C0[0x1000];
- u8 unk11C0[0x1000];
- u8 unk21C0[0x1000];
- u8 unk31C0[0x1000];
};
-static void sub_8020F74(void);
-static void sub_8020F88(void);
-static void sub_8020FA0(u8);
-void sub_8020FC4(struct BerryCrushGame *);
+static void VBlankCB(void);
+static void MainCB(void);
+static void MainTask(u8);
+static void ParseName_Options(struct BerryCrushGame *);
void sub_8022BEC(u16, u8, u8 *);
static void BerryCrush_SetPaletteFadeParams(u8 *, bool8, u32, s8, u8, u8, u16);
static int sub_8021450(struct BerryCrushGame *);
@@ -232,7 +226,7 @@ static u32 sub_8024444(struct BerryCrushGame *r5, __attribute__((unused)) u8 *r1
static u32 sub_8024508(struct BerryCrushGame *r5, __attribute__((unused)) u8 *r1);
static u32 sub_8024568(__attribute__((unused)) struct BerryCrushGame *r0, __attribute__((unused)) u8 *r1);
-static EWRAM_DATA struct BerryCrushGame *gUnknown_02022C90 = NULL;
+static EWRAM_DATA struct BerryCrushGame *gBerryCrushGame = NULL;
static const u8 gUnknown_082F325C[] = { 1, 2, 4, 8, 16, 32, 64, 128 };
static const u8 gUnknown_082F3264[] = { 0, 1, 2, 3, 5, 0, 0, 0 };
@@ -805,22 +799,21 @@ static const u8 gUnknown_082F4434[][4] =
static const u8 gUnknown_082F4444[] = {5, 7, 9, 12};
static const u8 gUnknown_082F4448[] = {3, 7, 15, 31};
-
-struct BerryCrushGame *sub_8020C00(void)
+struct BerryCrushGame * GetBerryCrushGame(void)
{
- return gUnknown_02022C90;
+ return gBerryCrushGame;
}
-u32 sub_8020C0C(MainCallback callback)
+u32 QuitBerryCrush(MainCallback callback)
{
- if (!gUnknown_02022C90)
+ if (!gBerryCrushGame)
return 2;
if (!callback)
- callback = gUnknown_02022C90->unk0;
+ callback = gBerryCrushGame->unk0;
- DestroyTask(gUnknown_02022C90->unkA);
- FREE_AND_SET_NULL(gUnknown_02022C90);
+ DestroyTask(gBerryCrushGame->mainTask);
+ FREE_AND_SET_NULL(gBerryCrushGame);
SetMainCallback2(callback);
if (callback == CB2_ReturnToField)
{
@@ -857,8 +850,8 @@ void StartBerryCrush(MainCallback callback)
return;
}
- gUnknown_02022C90 = AllocZeroed(sizeof(*gUnknown_02022C90));
- if (!gUnknown_02022C90)
+ gBerryCrushGame = AllocZeroed(sizeof(*gBerryCrushGame));
+ if (!gBerryCrushGame)
{
SetMainCallback2(callback);
Rfu.unk_10 = 0;
@@ -867,110 +860,110 @@ void StartBerryCrush(MainCallback callback)
return;
}
- gUnknown_02022C90->unk0 = callback;
- gUnknown_02022C90->unk8 = multiplayerId;
- gUnknown_02022C90->unk9 = playerCount;
- sub_8020FC4(gUnknown_02022C90);
- gUnknown_02022C90->unk12 = 1;
- gUnknown_02022C90->unkE = 1;
- gUnknown_02022C90->unkF = 6;
- BerryCrush_SetPaletteFadeParams(gUnknown_02022C90->unk36, 1, -1, 0, 16, 0, 0);
- sub_8022BEC(4, 1, gUnknown_02022C90->unk36);
- SetMainCallback2(sub_8020F88);
- gUnknown_02022C90->unkA = CreateTask(sub_8020FA0, 8);
+ gBerryCrushGame->unk0 = callback;
+ gBerryCrushGame->unk8 = multiplayerId;
+ gBerryCrushGame->unk9 = playerCount;
+ ParseName_Options(gBerryCrushGame);
+ gBerryCrushGame->unk12 = 1;
+ gBerryCrushGame->unkE = 1;
+ gBerryCrushGame->unkF = 6;
+ BerryCrush_SetPaletteFadeParams(gBerryCrushGame->unk36, 1, -1, 0, 16, 0, 0);
+ sub_8022BEC(4, 1, gBerryCrushGame->unk36);
+ SetMainCallback2(MainCB);
+ gBerryCrushGame->mainTask = CreateTask(MainTask, 8);
gTextFlags.autoScroll = 0;
}
-static void sub_8020D8C(void)
+static void GetBerryFromBag(void)
{
if (gSpecialVar_ItemId < FIRST_BERRY_INDEX || gSpecialVar_ItemId > LAST_BERRY_INDEX + 1)
gSpecialVar_ItemId = ITEM_CHERI_BERRY;
else
RemoveBagItem(gSpecialVar_ItemId, 1);
- gUnknown_02022C90->unk68.as_four_players.others[gUnknown_02022C90->unk8].unk0 = gSpecialVar_ItemId - FIRST_BERRY_INDEX;
- gUnknown_02022C90->unkE = 1;
- gUnknown_02022C90->unkF = 9;
- BerryCrush_SetPaletteFadeParams(gUnknown_02022C90->unk36, 0, -1, 0, 16, 0, 0);
- sub_8022BEC(4, 1, gUnknown_02022C90->unk36);
- gUnknown_02022C90->unkA = CreateTask(sub_8020FA0, 8);
- SetMainCallback2(sub_8020F88);
+ gBerryCrushGame->unk98[gBerryCrushGame->unk8].unkC = gSpecialVar_ItemId - FIRST_BERRY_INDEX;
+ gBerryCrushGame->unkE = 1;
+ gBerryCrushGame->unkF = 9;
+ BerryCrush_SetPaletteFadeParams(gBerryCrushGame->unk36, 0, -1, 0, 16, 0, 0);
+ sub_8022BEC(4, 1, gBerryCrushGame->unk36);
+ gBerryCrushGame->mainTask = CreateTask(MainTask, 8);
+ SetMainCallback2(MainCB);
}
-void sub_8020E1C(void)
+static void BerryCrush_SetupMainTask(void)
{
- DestroyTask(gUnknown_02022C90->unkA);
- ChooseBerryForMachine(sub_8020D8C);
+ DestroyTask(gBerryCrushGame->mainTask);
+ ChooseBerryForMachine(GetBerryFromBag);
}
-static void sub_8020E3C(void)
+static void BerryCrush_SetVBlankCB(void)
{
- SetVBlankCallback(sub_8020F74);
+ SetVBlankCallback(VBlankCB);
}
-void sub_8020E4C(void)
+static void BerryCrush_InitVBlankCB(void)
{
SetVBlankCallback(NULL);
}
-void sub_8020E58(void)
+static void BerryCrush_SaveResults(void)
{
u32 var0, var1;
- var0 = gUnknown_02022C90->unk68.as_four_players.unk00.unk04;
+ var0 = gBerryCrushGame->unk68.unk04;
var0 = Q_24_8(var0);
var0 = MathUtil_Div32(var0, Q_24_8(60));
- var1 = gUnknown_02022C90->unk68.as_four_players.unk00.unk0A;
+ var1 = gBerryCrushGame->unk68.unk0A;
var1 = Q_24_8(var1);
var1 = MathUtil_Div32(var1, var0) & 0xFFFF;
- gUnknown_02022C90->unk16 = var1;
- switch (gUnknown_02022C90->unk9)
+ gBerryCrushGame->unk16 = var1;
+ switch (gBerryCrushGame->unk9)
{
case 2:
- if (gUnknown_02022C90->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[0])
+ if (gBerryCrushGame->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[0])
{
- gUnknown_02022C90->unk25_1 = 1;
- gSaveBlock2Ptr->berryCrush.berryCrushResults[0] = gUnknown_02022C90->unk16;
+ gBerryCrushGame->unk25_1 = 1;
+ gSaveBlock2Ptr->berryCrush.berryCrushResults[0] = gBerryCrushGame->unk16;
}
break;
case 3:
- if (gUnknown_02022C90->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[1])
+ if (gBerryCrushGame->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[1])
{
- gUnknown_02022C90->unk25_1 = 1;
- gSaveBlock2Ptr->berryCrush.berryCrushResults[1] = gUnknown_02022C90->unk16;
+ gBerryCrushGame->unk25_1 = 1;
+ gSaveBlock2Ptr->berryCrush.berryCrushResults[1] = gBerryCrushGame->unk16;
}
break;
case 4:
- if (gUnknown_02022C90->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[2])
+ if (gBerryCrushGame->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[2])
{
- gUnknown_02022C90->unk25_1 = 1;
- gSaveBlock2Ptr->berryCrush.berryCrushResults[2] = gUnknown_02022C90->unk16;
+ gBerryCrushGame->unk25_1 = 1;
+ gSaveBlock2Ptr->berryCrush.berryCrushResults[2] = gBerryCrushGame->unk16;
}
break;
case 5:
- if (gUnknown_02022C90->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[3])
+ if (gBerryCrushGame->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[3])
{
- gUnknown_02022C90->unk25_1 = 1;
- gSaveBlock2Ptr->berryCrush.berryCrushResults[3] = gUnknown_02022C90->unk16;
+ gBerryCrushGame->unk25_1 = 1;
+ gSaveBlock2Ptr->berryCrush.berryCrushResults[3] = gBerryCrushGame->unk16;
}
break;
}
- gUnknown_02022C90->unk1C = gUnknown_02022C90->unk68.as_four_players.unk00.unk00;
- if (GiveBerryPowder(gUnknown_02022C90->unk1C))
+ gBerryCrushGame->unk1C = gBerryCrushGame->unk68.unk00;
+ if (GiveBerryPowder(gBerryCrushGame->unk1C))
return;
- gUnknown_02022C90->unk25_0 = 1;
+ gBerryCrushGame->unk25_0 = 1;
}
-static void sub_8020F74(void)
+static void VBlankCB(void)
{
TransferPlttBuffer();
LoadOam();
ProcessSpriteCopyRequests();
}
-static void sub_8020F88(void)
+static void MainCB(void)
{
RunTasks();
RunTextPrinters();
@@ -978,30 +971,24 @@ static void sub_8020F88(void)
BuildOamBuffer();
}
-static void sub_8020FA0(u8 taskId)
+static void MainTask(u8 taskId)
{
- if (gUnknown_02022C90->unk4)
- gUnknown_02022C90->unk4(gUnknown_02022C90, gUnknown_02022C90->unk36);
+ if (gBerryCrushGame->unk4)
+ gBerryCrushGame->unk4(gBerryCrushGame, gBerryCrushGame->unk36);
- sub_8021450(gUnknown_02022C90);
+ sub_8021450(gBerryCrushGame);
}
-#define PLAYER_UNK14(game, i) \
- ((u8 *)(game) \
- + offsetof(struct BerryCrushGame, unk68) \
- + offsetof(struct BerryCrushGame_68_x, unk30) \
- + sizeof(struct BerryCrushGame_Player) * (i))
-
-void sub_8020FC4(struct BerryCrushGame *arg0)
+static void ParseName_Options(struct BerryCrushGame *arg0)
{
- u8 i;
+ u8 i = 0;
- for (i = 0; i < arg0->unk9; i++)
- StringCopy(PLAYER_UNK14(arg0, i), gLinkPlayers[i].name);
+ for (; i < arg0->unk9; i++)
+ StringCopy(arg0->unk98[i].unk0, gLinkPlayers[i].name);
for (; i < 5; i++)
{
- memset(PLAYER_UNK14(arg0, i), 1, PLAYER_NAME_LENGTH);
- arg0->unk68.as_five_players.unk1C[i].unk14[PLAYER_NAME_LENGTH] = EOS;
+ memset(arg0->unk98[i].unk0, 1, PLAYER_NAME_LENGTH);
+ arg0->unk98[i].unk0[PLAYER_NAME_LENGTH] = EOS;
}
switch (gSaveBlock2Ptr->optionsTextSpeed)
@@ -1018,13 +1005,14 @@ void sub_8020FC4(struct BerryCrushGame *arg0)
}
}
-int sub_802104C(void)
+// TODO: Everything from here on is likely in separate files.
+s32 InitBerryCrushDisplay(void)
{
- struct BerryCrushGame *var0 = sub_8020C00();
- if (!var0)
+ struct BerryCrushGame *game = GetBerryCrushGame();
+ if (!game)
return -1;
- switch (var0->unkC)
+ switch (game->unkC)
{
case 0:
SetVBlankCallback(NULL);
@@ -1046,9 +1034,9 @@ int sub_802104C(void)
case 3:
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_082F32C8, ARRAY_COUNT(gUnknown_082F32C8));
- SetBgTilemapBuffer(1, var0->unk1C0);
- SetBgTilemapBuffer(2, var0->unk21C0);
- SetBgTilemapBuffer(3, var0->unk31C0);
+ SetBgTilemapBuffer(1, game->unk138.unk88[0]);
+ SetBgTilemapBuffer(2, game->unk138.unk88[2]);
+ SetBgTilemapBuffer(3, game->unk138.unk88[3]);
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
ChangeBgX(2, 0, 0);
@@ -1077,8 +1065,8 @@ int sub_802104C(void)
InitStandardTextBoxWindows();
InitTextBoxGfxAndPrinters();
- sub_8022588(var0);
- sub_8022600(var0);
+ sub_8022588(game);
+ sub_8022600(game);
gPaletteFade.bufferTransferDisabled = TRUE;
break;
case 7:
@@ -1086,7 +1074,7 @@ int sub_802104C(void)
CopyToBgTilemapBuffer(1, gBerryCrushGrinderTopTilemap, 0, 0);
CopyToBgTilemapBuffer(2, gBerryCrushContainerCapTilemap, 0, 0);
CopyToBgTilemapBuffer(3, gBerryCrushBackgroundTilemap, 0, 0);
- sub_80226D0(var0);
+ sub_80226D0(game);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(2);
CopyBgTilemapBufferToVram(3);
@@ -1094,7 +1082,7 @@ int sub_802104C(void)
case 8:
LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
- sub_8022730(var0);
+ sub_8022730(game);
SetGpuReg(REG_OFFSET_BG1VOFS, -gSpriteCoordOffsetY);
ChangeBgX(1, 0, 0);
ChangeBgY(1, 0, 0);
@@ -1107,18 +1095,18 @@ int sub_802104C(void)
ShowBg(2);
ShowBg(3);
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
- sub_8020E3C();
- var0->unkC = 0;
+ BerryCrush_SetVBlankCB();
+ game->unkC = 0;
return 1;
}
- var0->unkC++;
+ game->unkC++;
return 0;
}
int sub_802130C(void)
{
- struct BerryCrushGame *var0 = sub_8020C00();
+ struct BerryCrushGame *var0 = GetBerryCrushGame();
if (!var0)
return -1;
@@ -1212,7 +1200,7 @@ void sub_80214A8(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1)
&gUnknown_082F436C,
gUnknown_082F41E8[i],
gUnknown_082F41E8[i],
- arg0->unk68.as_four_players.others[i].unk0 + 133);
+ arg0->unk98[i].unkC + 133);
arg1->unk38[i] = &gSprites[spriteId];
arg1->unk38[i]->oam.priority = 3;
arg1->unk38[i]->affineAnimPaused = TRUE;
@@ -1289,7 +1277,7 @@ void sub_80216E0(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1)
u16 var, var2;
sp4 = 0;
- var4E = &arg0->unk40.unkE;
+ var4E = (struct BerryCrushGame_4E *)arg0->unk4E;
for (i = 0; i < arg0->unk9; i++)
{
var = var4E->unkA >> (i * 3);
@@ -1408,7 +1396,7 @@ void sub_8021A28(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 sp18)
u8 r2;
s32 r3;
u8 r7;
- union BerryCrushGame_68 * sp24 = &sp0C->unk68;
+ struct BerryCrushGame_68 * sp24 = &sp0C->unk68;
u32 xOffset;
s32 r6;
@@ -1427,44 +1415,44 @@ void sub_8021A28(struct BerryCrushGame * sp0C, u8 sp10, u8 sp14, u8 sp18)
switch (sp10)
{
case 0:
- sp1C = sp24->as_five_players.unk1C[0].unk4.as_2d_bytes[sp10][r8];
- if (r8 != 0 && sp24->as_four_players.unk00.unk0C[sp10][r8] != sp24->as_four_players.unk00.unk0C[sp10][r8 - 1])
+ sp1C = sp24->unk20[sp10][r8];
+ if (r8 != 0 && sp24->unk0C[sp10][r8] != sp24->unk0C[sp10][r8 - 1])
sp20 = r8;
- ConvertIntToDecimalStringN(gStringVar4, sp24->as_four_players.unk00.unk0C[sp10][r8], STR_CONV_MODE_RIGHT_ALIGN, 4);
+ ConvertIntToDecimalStringN(gStringVar4, sp24->unk0C[sp10][r8], STR_CONV_MODE_RIGHT_ALIGN, 4);
StringAppend(gStringVar4, gUnknown_082F43B4[sp10]);
break;
case 1:
- sp1C = sp24->as_five_players.unk1C[0].unk4.as_2d_bytes[sp10][r8];
- if (r8 != 0 && sp24->as_four_players.unk00.unk0C[sp10][r8] != sp24->as_four_players.unk00.unk0C[sp10][r8 - 1])
+ sp1C = sp24->unk20[sp10][r8];
+ if (r8 != 0 && sp24->unk0C[sp10][r8] != sp24->unk0C[sp10][r8 - 1])
sp20 = r8;
- ConvertIntToDecimalStringN(gStringVar1, sp24->as_four_players.unk00.unk0C[sp10][r8] >> 4, STR_CONV_MODE_RIGHT_ALIGN, 3);
- r3 = 0;
- r7 = sp24->as_four_players.unk00.unk0C[sp10][r8] & 15;
+ ConvertIntToDecimalStringN(gStringVar1, sp24->unk0C[sp10][r8] >> 4, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ xOffset = 0;
+ r7 = sp24->unk0C[sp10][r8] & 15;
for (r2 = 0; r2 < 4; ++r2)
if ((r7 >> (3 - r2)) & 1)
- r3 += sPressingSpeedConversionTable[r2];
- r7 = r3 / 1000000u;
+ xOffset += sPressingSpeedConversionTable[r2];
+ r7 = xOffset / 1000000u;
ConvertIntToDecimalStringN(gStringVar2, r7, STR_CONV_MODE_LEADING_ZEROS, 2);
StringExpandPlaceholders(gStringVar4, gUnknown_082F43B4[sp10]);
break;
case 2:
sp1C = r8;
sp20 = r8;
- r2 = sp0C->unk68.as_five_players.unk1C[r8].unk14[12];
+ r2 = sp0C->unk98[r8].unkC;
if (r2 >= LAST_BERRY_INDEX - FIRST_BERRY_INDEX + 2)
r2 = 0;
StringCopy(gStringVar1, gBerries[r2].name);
- StringExpandPlaceholders(gStringVar4, gUnknown_082F43B4[2]);
+ StringExpandPlaceholders(gStringVar4, gUnknown_082F43B4[sp10]);
break;
}
- xOffset = GetStringRightAlignXOffset(2, gStringVar4, sp14 - 4);
- AddTextPrinterParameterized3(sp0C->unk138.unk82, 2, xOffset, r6, sBerryCrushTextColorTable[0], 0, gStringVar4);
+ r3 = GetStringRightAlignXOffset(2, gStringVar4, sp14 - 4);
+ AddTextPrinterParameterized3(sp0C->unk138.unk82, 2, r3, r6, sBerryCrushTextColorTable[0], 0, gStringVar4);
if (sp1C == sp0C->unk8)
StringCopy(gStringVar3, gText_1DotBlueF700);
else
StringCopy(gStringVar3, gText_1DotF700);
gStringVar3[0] = sp20 + CHAR_1;
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, PLAYER_UNK14(sp0C, sp1C));
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sp0C->unk98[sp1C].unk0);
DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gStringVar3);
AddTextPrinterParameterized3(sp0C->unk138.unk82, 2, 4, r6, sBerryCrushTextColorTable[0], 0, gStringVar4);
}
@@ -1475,10 +1463,10 @@ void sub_8021D34(struct BerryCrushGame *r8)
u8 r10 = 0;
u8 r6 = 0;
u32 sp0C = 0;
- union BerryCrushGame_68 *sp10 = &r8->unk68;
+ struct BerryCrushGame_68 *sp10 = &r8->unk68;
u8 r7 = GetWindowAttribute(r8->unk138.unk82, WINDOW_HEIGHT) * 8 - 42;
- sub_8021944(&r8->unk138, sp10->as_four_players.unk00.unk04);
+ sub_8021944(&r8->unk138, sp10->unk04);
AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_TimeColon);
r6 = 176 - (u8)GetStringWidth(2, gText_SpaceSec, -1);
AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gText_SpaceSec);
@@ -1510,7 +1498,7 @@ void sub_8021D34(struct BerryCrushGame *r8)
AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4);
r7 += 14;
AddTextPrinterParameterized3(r8->unk138.unk82, 2, 0, r7, sBerryCrushTextColorTable[0], 0, gText_Silkiness);
- ConvertIntToDecimalStringN(gStringVar1, sp10->as_four_players.unk00.unk08, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ ConvertIntToDecimalStringN(gStringVar1, sp10->unk08, STR_CONV_MODE_RIGHT_ALIGN, 3);
StringExpandPlaceholders(gStringVar4, gText_Var1Percent);
r6 = 176 - (u8)GetStringWidth(2, gStringVar4, -1);
AddTextPrinterParameterized3(r8->unk138.unk82, 2, r6, r7, sBerryCrushTextColorTable[0], 0, gStringVar4);
@@ -1551,7 +1539,7 @@ bool32 sub_8022070(struct BerryCrushGame *r4, struct BerryCrushGame_138 *r6)
r6->unk80 = 5;
return FALSE;
case 12:
- sub_80219C8(r6->unk82, 20, 4, gUnknown_082F43B4[r4->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[0][7] + 3]);
+ sub_80219C8(r6->unk82, 20, 4, gUnknown_082F43B4[r4->unk68.unk20[0][7] + 3]);
sub_8021A28(r4, 1, 0xA0, 8 * gUnknown_082F3344[0][r5]);
r6->unk80 = 5;
return FALSE;
@@ -1665,7 +1653,7 @@ static void Task_ShowBerryCrushRankings(u8 taskId)
CopyWindowToVram(data[1], 3);
break;
case 2:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
break;
else
return;
@@ -1737,13 +1725,13 @@ void sub_8022600(struct BerryCrushGame *r6)
AddTextPrinterParameterized4(
r6->unk138.unk83[r7],
2,
- 36 - GetStringWidth(2, PLAYER_UNK14(r6, r7), 0) / 2u,
+ 36 - GetStringWidth(2, r6->unk98[r7].unk0, 0) / 2u,
1,
0,
0,
sBerryCrushTextColorTable[1],
0,
- PLAYER_UNK14(r6, r7)
+ r6->unk98[r7].unk0
);
}
else
@@ -1751,13 +1739,13 @@ void sub_8022600(struct BerryCrushGame *r6)
AddTextPrinterParameterized4(
r6->unk138.unk83[r7],
2,
- 36 - GetStringWidth(2, PLAYER_UNK14(r6, r7), 0) / 2u,
+ 36 - GetStringWidth(2, r6->unk98[r7].unk0, 0) / 2u,
1,
0,
0,
sBerryCrushTextColorTable[2],
0,
- PLAYER_UNK14(r6, r7)
+ r6->unk98[r7].unk0
);
}
CopyWindowToVram(r6->unk138.unk83[r7], 3);
@@ -1768,22 +1756,15 @@ void sub_8022600(struct BerryCrushGame *r6)
void sub_80226D0(struct BerryCrushGame *r6)
{
u8 r5 = 0;
- const u32 *r0 = gUnknown_08DE3FD4;
-#ifndef NONMATCHING // r4, r5, r6 register roulette
- register u8 *r4 asm("r4") = gDecompressionBuffer;
- register u32 r0_ asm("r0");
-#else
- u8 *r4 = gDecompressionBuffer;
- u32 r0_;
-#endif
-
- LZ77UnCompWram(r0, r4);
- for (; r5 < r6->unk9; ++r5)
- {
- r0_ = r6->unk138.unkC[r5]->unk0;
+ u8 * r4;
+
+ LZ77UnCompWram(gUnknown_08DE3FD4, gDecompressionBuffer);
+
+ for (r4 = gDecompressionBuffer; r5 < r6->unk9; ++r5)
+ {
CopyToBgTilemapBufferRect(
3,
- &r4[r0_ * 40],
+ &r4[r6->unk138.unkC[r5]->unk0 * 40],
r6->unk138.unkC[r5]->unk1,
r6->unk138.unkC[r5]->unk2,
10,
@@ -1956,7 +1937,7 @@ void sub_8022B28(struct Sprite *sprite)
void sub_8022BEC(u16 r5, u8 r4, u8 *r7)
{
- struct BerryCrushGame *r6 = sub_8020C00();
+ struct BerryCrushGame *r6 = GetBerryCrushGame();
if (r5 > 25)
r5 = 0;
@@ -1986,29 +1967,29 @@ static u32 BerryCrushCommand_BeginNormalPaletteFade(struct BerryCrushGame *game,
// byte 9: if TRUE, communicate on fade complete
u16 color;
- u32 selectedPals;
- selectedPals = ({
-#ifndef NONMATCHING
- register u32 value asm("r2");
- register u32 b asm("r3");
-#else
- u32 value;
- u32 b;
-#endif //NONMATCHING
- value = params[0] << 0;
- value |= (b = params[1] << 8);
- value |= (b = params[2] << 16);
- value |= (b = params[3] << 24);
- value;
- });
+ u32 selectedPals[2];
+
+ selectedPals[0] = (u32)params[0];
+ selectedPals[1] = (u32)params[1];
+ selectedPals[1] <<= 8;
+ selectedPals[0] |= selectedPals[1];
+ selectedPals[1] = (u32)params[2];
+ selectedPals[1] <<= 16;
+
+ selectedPals[0] |= selectedPals[1];
+ selectedPals[1] = (u32)params[3];
+ selectedPals[1] <<= 24;
+
+ selectedPals[0] |= selectedPals[1];
params[0] = params[9];
- color = params[8] << 8;
- color |= params[7] << 0;
+ color = params[8];
+ color <<= 8;
+ color |= params[7];
gPaletteFade.bufferTransferDisabled = FALSE;
- BeginNormalPaletteFade(selectedPals, params[4], params[5], params[6], color);
+ BeginNormalPaletteFade(selectedPals[0], params[4], params[5], params[6], color);
UpdatePaletteFade();
game->unkE = 2;
return 0;
@@ -2093,7 +2074,7 @@ static u32 sub_8022D14(struct BerryCrushGame *r7, u8 *r5)
static u32 sub_8022E1C(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1)
{
- if (sub_802104C() != 0)
+ if (InitBerryCrushDisplay() != 0)
sub_8022BEC(r4->unkE, 0, r4->unk36);
return 0;
}
@@ -2151,7 +2132,7 @@ static u32 sub_8022EAC(struct BerryCrushGame *r4, u8 *r5)
static u32 sub_8022F04(struct BerryCrushGame *r0, __attribute__((unused)) u8 *r1)
{
r0->unk4 = NULL;
- SetMainCallback2(sub_8020E1C);
+ SetMainCallback2(BerryCrush_SetupMainTask);
return 0;
}
@@ -2172,9 +2153,9 @@ static u32 sub_8022F1C(struct BerryCrushGame *r5, u8 *r2)
case 2:
if (!IsLinkTaskFinished())
return 0;
- memset(r5->unk40.unk2, 0, sizeof(r5->unk40.unk2));
- r5->unk40.unk2[0] = r5->unk68.as_four_players.others[r5->unk8].unk0;
- SendBlock(0, r5->unk40.unk2, 2);
+ memset(r5->unk42, 0, sizeof(r5->unk42));
+ r5->unk42[0] = r5->unk98[r5->unk8].unkC;
+ SendBlock(0, r5->unk42, 2);
break;
case 3:
if (!IsLinkTaskFinished())
@@ -2186,11 +2167,11 @@ static u32 sub_8022F1C(struct BerryCrushGame *r5, u8 *r2)
return 0;
for (r3 = 0; r3 < r5->unk9; ++r3)
{
- r5->unk68.as_four_players.others[r3].unk0 = gBlockRecvBuffer[r3][0];
- if (r5->unk68.as_four_players.others[r3].unk0 > 0xB0)
- r5->unk68.as_four_players.others[r3].unk0 = 0;
- r5->unk18 += gUnknown_0858AB24[r5->unk68.as_four_players.others[r3].unk0].unk0;
- r5->unk1C += gUnknown_0858AB24[r5->unk68.as_four_players.others[r3].unk0].unk1;
+ r5->unk98[r3].unkC = gBlockRecvBuffer[r3][0];
+ if (r5->unk98[r3].unkC > 0xB0)
+ r5->unk98[r3].unkC = 0;
+ r5->unk18 += gUnknown_0858AB24[r5->unk98[r3].unkC].unk0;
+ r5->unk1C += gUnknown_0858AB24[r5->unk98[r3].unkC].unk1;
}
r5->unk10 = 0;
ResetBlockReceivedFlags();
@@ -2348,130 +2329,125 @@ static u32 sub_80232EC(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r
void sub_802339C(struct BerryCrushGame *r4)
{
u8 r8 = 0;
- u16 r3;
- u16 *r2;
u8 r7 = 0;
+ u16 r3;
s32 r2_ = 0;
- s32 r0;
+ struct BerryCrushGame_4E *r2;
- for (r7 = 0; r7 < r4->unk9; ++r7)
+ for (r7 = 0; r7 < r4->unk9; r7++)
{
- r2 = gRecvCmds[r7];
- if ((r2[0] & 0xFF00) == RFUCMD_SEND_PACKET
- && r2[1] == 2)
+ r2 = (struct BerryCrushGame_4E *)gRecvCmds[r7];
+ if ((r2->unk0 & 0xFF00) != RFUCMD_SEND_PACKET)
+ continue;
+ if (r2->unk2 != 2)
+ continue;
+
+ if (r2->unk4_2)
{
- if ((u8)r2[2] & 4)
+ r4->unk5C.unk02_3 |= gUnknown_082F325C[r7];
+ r4->unk98[r7].unk1C = 1;
+ ++r4->unk98[r7].unk16;
+ ++r8;
+ r3 = r4->unk28 - r4->unk98[r7].unkE;
+ if (r3 >= r4->unk98[r7].unk12 - 1 && r3 <= r4->unk98[r7].unk12 + 1)
{
- r4->unk5C.unk02_3 |= gUnknown_082F325C[r7];
- r4->unk68.as_four_players.others[r7].unk4.as_2d_bytes[1][5] = 1;
- ++r4->unk68.as_four_players.others[r7].unk4.as_hwords[3];
- ++r8;
- r3 = r4->unk28 - r4->unk68.as_four_players.others[r7].unk2;
- if (r3 >= r4->unk68.as_four_players.others[r7].unk4.as_hwords[1] - 1
- && r3 <= r4->unk68.as_four_players.others[r7].unk4.as_hwords[1] + 1)
- {
- ++r4->unk68.as_four_players.others[r7].unk4.as_hwords[0];
- r4->unk68.as_four_players.others[r7].unk4.as_hwords[1] = r3;
- if (r4->unk68.as_four_players.others[r7].unk4.as_hwords[0] > r4->unk68.as_four_players.others[r7].unk4.as_hwords[2])
- r4->unk68.as_four_players.others[r7].unk4.as_hwords[2] = r4->unk68.as_four_players.others[r7].unk4.as_hwords[0];
- }
- else
- {
- r4->unk68.as_four_players.others[r7].unk4.as_hwords[0] = 0;
- r4->unk68.as_four_players.others[r7].unk4.as_hwords[1] = r3;
- }
- r4->unk68.as_four_players.others[r7].unk2 = r4->unk28;
- if (++r4->unk68.as_four_players.others[r7].unk4.as_2d_bytes[1][4] > 2)
- r4->unk68.as_four_players.others[r7].unk4.as_2d_bytes[1][4] = 0;
+ ++r4->unk98[r7].unk10;
+ r4->unk98[r7].unk12 = r3;
+ if (r4->unk98[r7].unk10 > r4->unk98[r7].unk14)
+ r4->unk98[r7].unk14 = r4->unk98[r7].unk10;
}
else
{
- r4->unk68.as_four_players.others[r7].unk4.as_2d_bytes[1][5] = 0;
+ r4->unk98[r7].unk10 = 0;
+ r4->unk98[r7].unk12 = r3;
}
+ r4->unk98[r7].unkE = r4->unk28;
+ ++r4->unk98[r7].unk1B;
+ if (r4->unk98[r7].unk1B > 2)
+ r4->unk98[r7].unk1B = 0;
+ }
+ else
+ {
+ r4->unk98[r7].unk1C = 0;
}
}
if (r8 > 1)
{
for (r7 = 0; r7 < r4->unk9; ++r7)
{
- if (r4->unk68.as_four_players.others[r7].unk4.as_2d_bytes[1][5] != 0)
- {
- r4->unk68.as_four_players.others[r7].unk4.as_2d_bytes[1][5] |= 2;
- ++r4->unk68.as_four_players.others[r7].unk4.as_hwords[4];
- }
+ if (!r4->unk98[r7].unk1C)
+ continue;
+ r4->unk98[r7].unk1C |= 2;
+ ++r4->unk98[r7].unk18;
}
}
- if (r8 != 0)
- {
- r4->unk2E += r8;
- r8 += gUnknown_082F3264[r8 - 1];
- r4->unk34 += r8;
- r4->unk1A += r8;
- r0 = r4->unk18;
- r2_ = r4->unk1A;
- if (r0 - r2_ > 0)
- {
- r2_ = Q_24_8(r2_);
- r2_ = MathUtil_Div32(r2_, r4->unk20);
- r2_ = Q_24_8_TO_INT(r2_);
- r4->unk24 = r2_;
- }
- else
- {
- r4->unk24 = 32;
- r4->unk5C.unk02_0 = 1;
- }
+ if (r8 == 0)
+ return;
+
+ r4->unk2E += r8;
+ r8 += gUnknown_082F3264[r8 - 1];
+ r4->unk34 += r8;
+ r4->unk1A += r8;
+ if (r4->unk18 - r4->unk1A > 0)
+ {
+ r2_ = (s32)r4->unk1A;
+ r2_ <<= 8;
+ r2_ = MathUtil_Div32(r2_, r4->unk20);
+ r2_ >>= 8;
+ r4->unk24 = (u8)r2_;
+ return;
}
+
+ r4->unk24 = 32;
+ r4->unk5C.unk02_0 = 1;
}
void sub_8023558(struct BerryCrushGame *r3)
{
u8 r6 = 0;
u16 r1 = 0;
+ u16 r2 = 0;
u8 r4 = 0;
for (r4 = 0; r4 < r3->unk9; ++r4)
{
- if (r3->unk68.as_four_players.others[r4].unk4.as_2d_bytes[1][5] != 0)
+ if (r3->unk98[r4].unk1C != 0)
{
++r6;
- r1 = r3->unk68.as_four_players.others[r4].unk4.as_2d_bytes[1][4] + 1;
- if (r3->unk68.as_four_players.others[r4].unk4.as_2d_bytes[1][5] & 2)
+ r1 = r3->unk98[r4].unk1B + 1;
+ if (r3->unk98[r4].unk1C & 2)
r1 |= 4;
r1 <<= 3 * r4;
r3->unk5C.unk08 |= r1;
}
}
- r3->unk5C.unk04 = r3->unk24;
+ r2 = (u16)r3->unk24;
+ r3->unk5C.unk04 = r2;
if (r6 == 0)
{
if (r3->unk138.unk3 != 0)
++r3->unk138.unk0;
- else
- goto SET_UNK5F_0;
}
- else
+ else if (r3->unk138.unk3 != 0)
{
- if (r3->unk138.unk3 != 0)
+ if (r6 != r3->unk138.unk1)
{
- if (r6 != r3->unk138.unk1)
- {
- r3->unk138.unk1 = r6 - 1;
- r3->unk138.unk2 = gUnknown_082F3290[r6 - 1][0];
- }
- else
- {
- ++r3->unk138.unk0;
- }
+ r3->unk138.unk1 = r6 - 1;
+ r3->unk138.unk2 = gUnknown_082F3290[r6 - 1][0];
}
else
{
- r3->unk138.unk0 = 0;
- r3->unk138.unk1 = r6 - 1;
- r3->unk138.unk2 = gUnknown_082F3290[r6 - 1][0];
- r3->unk138.unk3 = 1;
+ ++r3->unk138.unk0;
}
}
+ else
+ {
+ r3->unk138.unk0 = 0;
+ r3->unk138.unk1 = r6 - 1;
+ r3->unk138.unk2 = gUnknown_082F3290[r6 - 1][0];
+ r3->unk138.unk3 = 1;
+ }
+
if (r3->unk138.unk3 != 0)
{
if (r3->unk138.unk0 >= r3->unk138.unk2)
@@ -2486,11 +2462,10 @@ void sub_8023558(struct BerryCrushGame *r3)
{
r1 = gUnknown_082F3290[r3->unk138.unk1][r3->unk138.unk0 + 1];
}
- r3->unk5C.unk03 = r1;
+ r3->unk5C.unk03 = (u8)r1;
}
else
{
- SET_UNK5F_0:
r3->unk5C.unk03 = 0;
}
r3->unk5C.unk06 = r3->unk26;
@@ -2498,12 +2473,12 @@ void sub_8023558(struct BerryCrushGame *r3)
void sub_80236B8(struct BerryCrushGame *r5)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
r5->unk5C.unk02_2 = 1;
- if (gMain.heldKeys & A_BUTTON)
+ if (JOY_HELD(A_BUTTON))
{
- if (r5->unk68.as_four_players.others[r5->unk8].unk4.as_hwords[5] < r5->unk28)
- ++r5->unk68.as_four_players.others[r5->unk8].unk4.as_hwords[5];
+ if (r5->unk98[r5->unk8].unk1A < r5->unk28)
+ ++r5->unk98[r5->unk8].unk1A;
}
if (r5->unk8 != 0 && r5->unk5C.unk02_2 == 0)
return;
@@ -2558,50 +2533,44 @@ void sub_80236B8(struct BerryCrushGame *r5)
r5->unk5C.unk02_0 = 1;
r5->unk5C.unk02_1 = r5->unk25_4;
r5->unk5C.unk0A = r5->unk25_5;
- memcpy(r5->unk40.unk2, &r5->unk5C, sizeof(r5->unk40.unk2));
- Rfu_SendPacket(r5->unk40.unk2);
+ memcpy(r5->unk42, &r5->unk5C, sizeof(r5->unk42));
+ Rfu_SendPacket(r5->unk42);
}
void sub_802385C(struct BerryCrushGame *r5)
{
- struct BerryCrushGame_4E *r4_;
-#ifndef NONMATCHING
- register u32 r4 asm("r4");
- register u32 r0 asm("r0");
+ u8 r4 = 0;
+ struct BerryCrushGame_4E *r4_ = NULL;
- for (r4 = 0; r4 < r5->unk9; r4 = (u8)r0)
+ for (r4 = 0; r4 < r5->unk9; r4++)
+ r5->unk98[r4].unk1C = 0;
+ if ((gRecvCmds[0][0] & 0xFF00) != RFUCMD_SEND_PACKET)
{
- r5->unk68.as_four_players.others[r4].unk4.as_2d_bytes[1][5] = 0;
- r0 = r4 + 1;
+ r5->unk25_2 = 0;
+ return;
}
-#else
- u8 r4;
-
- for (r4 = 0; r4 < r5->unk9; ++r4)
- r5->unk68.as_four_players.others[r4].unk4.as_2d_bytes[1][5] = 0;
-#endif
- if ((gRecvCmds[0][0] & 0xFF00) != RFUCMD_SEND_PACKET
- || gRecvCmds[0][1] != 2)
+ if (gRecvCmds[0][1] != 2)
{
r5->unk25_2 = 0;
+ return;
}
- else
+
+ memcpy(r5->unk4E, gRecvCmds[0], 14);
+ r4_ = (struct BerryCrushGame_4E *)&r5->unk4E;
+ r5->unk2A = r4_->unk6;
+ r5->unk2C = (s16)r4_->unk5;
+ r5->unk28 = r4_->unk8;
+ sub_80216E0(r5, &(r5->unk138));
+ if (r4_->unk4_0)
{
- r4_ = &r5->unk40.unkE;
- memcpy(r4_, gRecvCmds, sizeof(struct BerryCrushGame_4E));
- r5->unk2A = r4_->unk6;
- r5->unk2C = r4_->unk5;
- r5->unk28 = r4_->unk8;
- sub_80216E0(r5, &r5->unk138);
- if (r4_->unk4_0)
- r5->unk25_3 = 1;
+ r5->unk25_3 = 1;
}
}
static u32 sub_80238F0(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1)
{
memset(&r4->unk5C, 0, sizeof(r4->unk5C));
- memset(&r4->unk40.unkE, 0, sizeof(r4->unk40.unkE));
+ memset(&r4->unk4E, 0, sizeof(r4->unk4E));
sub_802385C(r4);
SetGpuReg(REG_OFFSET_BG0VOFS, -r4->unk2C);
SetGpuReg(REG_OFFSET_BG2VOFS, -r4->unk2C);
@@ -2634,7 +2603,7 @@ static u32 sub_80238F0(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1
static u32 sub_8023998(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1)
{
memset(&r4->unk5C, 0, sizeof(r4->unk5C));
- memset(&r4->unk40.unkE, 0, sizeof(r4->unk40.unkE));
+ memset(&r4->unk4E, 0, sizeof(r4->unk4E));
sub_802385C(r4);
SetGpuReg(REG_OFFSET_BG0VOFS, -r4->unk2C);
SetGpuReg(REG_OFFSET_BG2VOFS, -r4->unk2C);
@@ -2760,19 +2729,19 @@ static u32 sub_8023BC0(struct BerryCrushGame *r5, u8 *r6)
static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1)
{
- u8 r8, r4_;
+ u8 r8, r4_, r3;
s32 r2;
s32 r4;
- u8 r6; // ???
+ u16 r6;
switch (r7->unkC)
{
case 0:
- memset(r7->unk40.unk2, 0, 2 * sizeof(u16));
- if (r7->unk68.as_four_players.others[r7->unk8].unk4.as_hwords[5] > r7->unk28)
- r7->unk68.as_four_players.others[r7->unk8].unk4.as_hwords[5] = r7->unk28;
- r7->unk40.unk2[0] = r7->unk68.as_four_players.others[r7->unk8].unk4.as_hwords[5];
- SendBlock(0, r7->unk40.unk2, 2);
+ memset(r7->unk42, 0, 2 * sizeof(u16));
+ if (r7->unk98[r7->unk8].unk1A > r7->unk28)
+ r7->unk98[r7->unk8].unk1A = r7->unk28;
+ r7->unk42[0] = r7->unk98[r7->unk8].unk1A;
+ SendBlock(0, r7->unk42, 2);
break;
case 1:
if (!IsLinkTaskFinished())
@@ -2783,9 +2752,9 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1
if (GetBlockReceivedStatus() != gUnknown_082F4448[r7->unk9 - 2])
return 0;
for (r8 = 0; r8 < r7->unk9; ++r8)
- r7->unk68.as_four_players.others[r8].unk4.as_hwords[5] = gBlockRecvBuffer[r8][0];
+ r7->unk98[r8].unk1A = gBlockRecvBuffer[r8][0];
r7->unk10 = 0;
- r7->unk40.unk2[0] = 0;
+ r7->unk42[0] = 0;
ResetBlockReceivedFlags();
if (r7->unk8 == 0)
r7->unkC = 3;
@@ -2793,38 +2762,34 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1
r7->unkC = 6;
return 0;
case 3:
- memset(
- &r7->unk68,
- 0,
- sizeof(struct BerryCrushGame_68_x_SubStruct)
- );
- r7->unk68.as_four_players.unk00.unk04 = r7->unk28;
- r7->unk68.as_four_players.unk00.unk06 = r7->unk18 / (r7->unk28 / 60);
+ memset(&r7->unk68, 0, sizeof(struct BerryCrushGame_68));
+ r7->unk68.unk04 = r7->unk28;
+ r7->unk68.unk06 = r7->unk18 / (r7->unk28 / 60);
r2 = MathUtil_Mul32(Q_24_8(r7->unk30), Q_24_8(50));
r2 = MathUtil_Div32(r2, Q_24_8(r7->unk32)) + Q_24_8(50);
r2 = Q_24_8_TO_INT(r2);
- r7->unk68.as_four_players.unk00.unk08 = r2 & 0x7F;
+ r7->unk68.unk08 = r2 & 0x7F;
r2 = Q_24_8(r2);
r2 = MathUtil_Div32(r2, Q_24_8(100));
r4 = Q_24_8(r7->unk1C * r7->unk9);
r4 = MathUtil_Mul32(r4, r2);
- r7->unk68.as_four_players.unk00.unk00 = r4 >> 8;
- r7->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[0][7] = Random() % 3;
- for (r6 = 0, r8 = 0; r8 < r7->unk9; ++r8)
+ r7->unk68.unk00 = r4 >> 8;
+ r7->unk68.unk20[0][7] = Random() % 3;
+ for (r8 = 0; r8 < r7->unk9; ++r8)
{
- r7->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[0][r8] = r8;
- r7->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[1][r8] = r8;
- r7->unk68.as_four_players.unk00.unk0C[0][r8] = r7->unk68.as_four_players.others[r8].unk4.as_hwords[3];
- r7->unk68.as_four_players.unk00.unk0A += r7->unk68.as_four_players.unk00.unk0C[0][r8];
- switch (r7->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[0][7])
+ r7->unk68.unk20[0][r8] = r8;
+ r7->unk68.unk20[1][r8] = r8;
+ r7->unk68.unk0C[0][r8] = r7->unk98[r8].unk16;
+ r7->unk68.unk0A += r7->unk68.unk0C[0][r8];
+ switch (r7->unk68.unk20[0][7])
{
case 0:
- if (r7->unk68.as_four_players.others[r8].unk4.as_hwords[3] != 0)
+ if (r7->unk98[r8].unk16 != 0)
{
- r2 = r7->unk68.as_four_players.others[r8].unk4.as_hwords[2];
+ r2 = r7->unk98[r8].unk14;
r2 = Q_24_8(r2);
r2 = MathUtil_Mul32(r2, Q_24_8(100));
- r4 = r7->unk68.as_four_players.others[r8].unk4.as_hwords[3];
+ r4 = r7->unk98[r8].unk16;
r4 = Q_24_8(r4);
r4 = MathUtil_Div32(r2, r4);
}
@@ -2834,12 +2799,12 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1
}
break;
case 1:
- if (r7->unk68.as_four_players.others[r8].unk4.as_hwords[3] != 0)
+ if (r7->unk98[r8].unk16 != 0)
{
- r2 = r7->unk68.as_four_players.others[r8].unk4.as_hwords[4];
+ r2 = r7->unk98[r8].unk18;
r2 = Q_24_8(r2);
r2 = MathUtil_Mul32(r2, Q_24_8(100));
- r4 = r7->unk68.as_four_players.others[r8].unk4.as_hwords[3];
+ r4 = r7->unk98[r8].unk16;
r4 = Q_24_8(r4);
r4 = MathUtil_Div32(r2, r4);
}
@@ -2849,17 +2814,17 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1
}
break;
case 2:
- if (r7->unk68.as_four_players.others[r8].unk4.as_hwords[3] == 0)
+ if (r7->unk98[r8].unk16 == 0)
{
r4 = 0;
}
- else if (r7->unk68.as_four_players.others[r8].unk4.as_hwords[5] >= r7->unk28)
+ else if (r7->unk98[r8].unk1A >= r7->unk28)
{
r4 = 0x6400;
}
else
{
- r2 = r7->unk68.as_four_players.others[r8].unk4.as_hwords[5];
+ r2 = r7->unk98[r8].unk1A;
r2 = Q_24_8(r2);
r2 = MathUtil_Mul32(r2, Q_24_8(100));
r4 = r7->unk28;
@@ -2869,51 +2834,35 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1
break;
}
r4 >>= 4;
- r7->unk68.as_four_players.unk00.unk0C[1][r8] = r4;
+ r7->unk68.unk0C[1][r8] = r4;
}
break;
case 4:
- for (r6 = 0, r8 = 0; r8 < r7->unk9 - 1; ++r8)
+ for (r8 = 0; r8 < r7->unk9 - 1; ++r8)
{
for (r4_ = r7->unk9 - 1; r4_ > r8; --r4_)
{
- u16 r0;
- u8 r3;
- u16 *sp00 = r7->unk68.as_four_players.unk00.unk0C[0];
- u8 *sp04 = r7->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[0];
- u8 *r10 = r7->unk68.as_five_players.unk1C[0].unk4.as_2d_bytes[1];
- u16 *r9 = r7->unk68.as_four_players.unk00.unk0C[1];
- s32 r12 = r4_ - 1;
- u16 *p1 = sp00 + r12; // these have to be here
- u16 *p2 = sp00 + r4_; // to swap operands. macro?
-
- if (*p1 < *p2)
+ if (r7->unk68.unk0C[0][r4_ - 1] < r7->unk68.unk0C[0][r4_])
{
- r0 = sp00[r4_];
- sp00[r4_] = sp00[r12];
- sp00[r12] = r0;
- r3 = sp04[r4_];
- sp04[r4_] = sp04[r12];
- sp04[r12] = r3;
+ r6 = r7->unk68.unk0C[0][r4_];
+ r7->unk68.unk0C[0][r4_] = r7->unk68.unk0C[0][r4_ - 1];
+ r7->unk68.unk0C[0][r4_ - 1] = r6;
+ r3 = r7->unk68.unk20[0][r4_];
+ r7->unk68.unk20[0][r4_] = r7->unk68.unk20[0][r4_ - 1];
+ r7->unk68.unk20[0][r4_ - 1] = r3;
}
- p1 = r9 + r12;
- p2 = r9 + r4_;
- if (*p1 < *p2)
+ if (r7->unk68.unk0C[1][r4_ - 1] < r7->unk68.unk0C[1][r4_])
{
- r0 = r9[r4_];
- r9[r4_] = r9[r12];
- r9[r12] = r0;
- r3 = r10[r4_];
- r10[r4_] = r10[r12];
- r10[r12] = r3;
+ r6 = r7->unk68.unk0C[1][r4_];
+ r7->unk68.unk0C[1][r4_] = r7->unk68.unk0C[1][r4_ - 1];
+ r7->unk68.unk0C[1][r4_ - 1] = r6;
+ r3 = r7->unk68.unk20[1][r4_];
+ r7->unk68.unk20[1][r4_] = r7->unk68.unk20[1][r4_ - 1];
+ r7->unk68.unk20[1][r4_ - 1] = r3;
}
}
}
- SendBlock(
- 0,
- &r7->unk68,
- sizeof(struct BerryCrushGame_68_x_SubStruct)
- );
+ SendBlock(0,&r7->unk68, sizeof(struct BerryCrushGame_68));
break;
case 5:
if (!IsLinkTaskFinished())
@@ -2923,21 +2872,13 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1
case 6:
if (GetBlockReceivedStatus() != 1)
return 0;
- memset(
- &r7->unk68,
- 0,
- sizeof(struct BerryCrushGame_68_x_SubStruct)
- );
- memcpy(
- &r7->unk68,
- gBlockRecvBuffer,
- sizeof(struct BerryCrushGame_68_x_SubStruct)
- );
+ memset(&r7->unk68, 0, sizeof(struct BerryCrushGame_68));
+ memcpy(&r7->unk68, gBlockRecvBuffer, sizeof(struct BerryCrushGame_68));
ResetBlockReceivedFlags();
r7->unk10 = 0;
break;
case 7:
- sub_8020E58();
+ BerryCrush_SaveResults();
sub_8022BEC(18, 1, NULL);
r7->unk12 = 11;
r7->unkC = 0;
@@ -2966,7 +2907,7 @@ static u32 sub_8024048(struct BerryCrushGame *r5, u8 *r6)
--r5->unk138.unk0;
return 0;
}
- if (!(gMain.newKeys & A_BUTTON))
+ if (!(JOY_NEW(A_BUTTON)))
return 0;
PlaySE(SE_SELECT);
sub_802222C(r5);
@@ -3031,12 +2972,7 @@ static u32 sub_8024134(struct BerryCrushGame *r5, u8 *r4)
static u32 sub_8024228(struct BerryCrushGame *r5, u8 *r6)
{
- s32 r4;
-#ifndef NONMATCHING
- register s32 r0 asm("r0");
-#else
- s32 r0;
-#endif
+ s8 r4 = 0;
switch (r5->unkC)
{
@@ -3044,16 +2980,16 @@ static u32 sub_8024228(struct BerryCrushGame *r5, u8 *r6)
sub_8024644(r6, 4, 0, 0, 1);
r5->unkE = 20;
sub_8022BEC(3, 1, NULL);
- r0 = 0;
- r5->unkC = r0; // dunno what it's doing because it's already in case 0
+ r5->unkC = 0; // dunno what it's doing because it's already in case 0
return 0;
case 1:
DisplayYesNoMenuDefaultYes();
break;
case 2:
- if ((r4 = Menu_ProcessInputNoWrapClearOnChoose()) != -2)
+ r4 = Menu_ProcessInputNoWrapClearOnChoose();
+ if (r4 != -2)
{
- memset(r5->unk40.unk2, 0, sizeof(r5->unk40.unk2));
+ memset(r5->unk42, 0, sizeof(r5->unk42));
if (r4 == 0)
{
if (HasAtLeastOneBerry())
@@ -3089,9 +3025,9 @@ static u32 sub_80242E0(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1
case 1:
if (!IsLinkTaskFinished())
return 0;
- r4->unk40.unk2[0] = r4->unk14;
- r4->unk40.unkE.unk0 = 0;
- SendBlock(0, r4->unk40.unk2, sizeof(u16));
+ r4->unk42[0] = r4->unk14;
+ r4->unk4E[0] = 0;
+ SendBlock(0, r4->unk42, sizeof(u16));
break;
case 2:
if (!IsLinkTaskFinished())
@@ -3102,14 +3038,14 @@ static u32 sub_80242E0(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1
if (GetBlockReceivedStatus() != gUnknown_082F4448[r4->unk9 - 2])
return 0;
for (; r5 < r4->unk9; ++r5)
- r4->unk40.unkE.unk0 += gBlockRecvBuffer[r5][0];
- if (r4->unk40.unkE.unk0 != 0)
+ r4->unk4E[0] += gBlockRecvBuffer[r5][0];
+ if (r4->unk4E[0] != 0)
sub_8022BEC(23, 1, NULL);
else
sub_8022BEC(22, 1, NULL);
ResetBlockReceivedFlags();
- r4->unk40.unk2[0] = 0;
- r4->unk40.unkE.unk0 = 0;
+ r4->unk42[0] = 0;
+ r4->unk4E[0] = 0;
r4->unk10 = 0;
r4->unkC = 0;
return 0;
@@ -3205,15 +3141,10 @@ static u32 sub_8024508(struct BerryCrushGame *r5, __attribute__((unused)) u8 *r1
static u32 sub_8024568(__attribute__((unused)) struct BerryCrushGame *r0, __attribute__((unused)) u8 *r1)
{
- sub_8020C0C(NULL);
+ QuitBerryCrush(NULL);
return 0;
}
-#if MODERN
-// TODO remove this as soon as the code below is understood
-// add a UBFIX if required (code buggy?)
-__attribute__((optimize("no-aggressive-loop-optimizations")))
-#endif
void sub_8024578(struct BerryCrushGame *r4)
{
u8 r5 = 0;
@@ -3240,18 +3171,18 @@ void sub_8024578(struct BerryCrushGame *r4)
r4->unk32 = -1;
r4->unk30 = 0;
r4->unk34 = 0;
- for (; r5 < 5; ++r5) // why is it 5 instead of 4? fillerBC isn't sufficient for one player
+ for (; r5 < 5; ++r5)
{
- r4->unk68.as_four_players.others[r5].unk0 = -1;
- r4->unk68.as_four_players.others[r5].unk2 = 0;
- r4->unk68.as_four_players.others[r5].unk4.as_hwords[0] = 0;
- r4->unk68.as_four_players.others[r5].unk4.as_hwords[1] = 1;
- r4->unk68.as_four_players.others[r5].unk4.as_hwords[2] = 0;
- r4->unk68.as_four_players.others[r5].unk4.as_hwords[3] = 0;
- r4->unk68.as_four_players.others[r5].unk4.as_hwords[4] = 0;
- r4->unk68.as_four_players.others[r5].unk4.as_hwords[5] = 0;
- r4->unk68.as_four_players.others[r5].unk4.as_2d_bytes[1][4] = 0;
- r4->unk68.as_four_players.others[r5].unk4.as_2d_bytes[1][5] = 0;
+ r4->unk98[r5].unkC = -1;
+ r4->unk98[r5].unkE = 0;
+ r4->unk98[r5].unk10 = 0;
+ r4->unk98[r5].unk12 = 1;
+ r4->unk98[r5].unk14 = 0;
+ r4->unk98[r5].unk16 = 0;
+ r4->unk98[r5].unk18 = 0;
+ r4->unk98[r5].unk1A = 0;
+ r4->unk98[r5].unk1B = 0;
+ r4->unk98[r5].unk1C = 0;
}
}
@@ -3271,7 +3202,7 @@ static void BerryCrush_SetPaletteFadeParams(u8 *params, bool8 communicateAfter,
void sub_8024644(u8 *r0, u32 r1, u32 r2, u32 r3, u32 r5)
{
- u8 sp[2];
+ u8 sp[4];
0[(u16 *)sp] = r3;
r0[0] = r1;
diff --git a/src/berry_fix_program.c b/src/berry_fix_program.c
index dcc21d036..4c4a010b2 100644
--- a/src/berry_fix_program.c
+++ b/src/berry_fix_program.c
@@ -190,13 +190,13 @@ static void berry_fix_main(void)
berry_fix_mb_manager->state = 1;
break;
case 1:
- if (berry_fix_text_update(5) == 5 && (gMain.newKeys & A_BUTTON))
+ if (berry_fix_text_update(5) == 5 && (JOY_NEW(A_BUTTON)))
{
berry_fix_mb_manager->state = 2;
}
break;
case 2:
- if (berry_fix_text_update(0) == 0 && (gMain.newKeys & A_BUTTON))
+ if (berry_fix_text_update(0) == 0 && (JOY_NEW(A_BUTTON)))
{
berry_fix_mb_manager->state = 3;
}
@@ -235,13 +235,13 @@ static void berry_fix_main(void)
}
break;
case 6:
- if (berry_fix_text_update(3) == 3 && gMain.newKeys & A_BUTTON)
+ if (berry_fix_text_update(3) == 3 && JOY_NEW(A_BUTTON))
{
DoSoftReset();
}
break;
case 7:
- if (berry_fix_text_update(4) == 4 && gMain.newKeys & A_BUTTON)
+ if (berry_fix_text_update(4) == 4 && JOY_NEW(A_BUTTON))
{
berry_fix_mb_manager->state = 1;
}
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index e5c89bdb7..089228b17 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -536,12 +536,12 @@ static void Task_HandleInput(u8 taskId)
{
if (!gPaletteFade.active)
{
- u16 arrowKeys = gMain.newAndRepeatedKeys & DPAD_ANY;
+ u16 arrowKeys = JOY_REPEAT(DPAD_ANY);
if (arrowKeys == DPAD_UP)
TryChangeDisplayedBerry(taskId, -1);
else if (arrowKeys == DPAD_DOWN)
TryChangeDisplayedBerry(taskId, 1);
- else if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ else if (JOY_NEW(A_BUTTON | B_BUTTON))
PrepareToCloseBerryTagScreen(taskId);
}
}
diff --git a/src/birch_pc.c b/src/birch_pc.c
index 5b574b05d..1f0ab2349 100644
--- a/src/birch_pc.c
+++ b/src/birch_pc.c
@@ -2,7 +2,6 @@
#include "event_data.h"
#include "field_message_box.h"
#include "pokedex.h"
-#include "constants/species.h"
#include "strings.h"
bool16 ScriptGetPokedexInfo(void)
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c
index a1ea44e26..aa6664f35 100644
--- a/src/braille_puzzles.c
+++ b/src/braille_puzzles.c
@@ -8,7 +8,6 @@
#include "constants/field_effects.h"
#include "constants/maps.h"
#include "constants/songs.h"
-#include "constants/species.h"
#include "constants/metatile_labels.h"
#include "fieldmap.h"
#include "party_menu.h"
diff --git a/src/cable_car.c b/src/cable_car.c
index fc161284f..acd0bc7a5 100644
--- a/src/cable_car.c
+++ b/src/cable_car.c
@@ -22,66 +22,74 @@
#include "constants/songs.h"
#include "constants/weather.h"
+#define GOING_DOWN gSpecialVar_0x8004
+
+#define STATE_END 0xFF
+
+#define TAG_CABLE_CAR 1
+#define TAG_DOOR 2
+#define TAG_CABLE 3
+
struct CableCar
{
- u8 taskId;
+ u8 bgTaskId;
u8 state;
u8 weather;
- u16 unk4;
+ u16 weatherDelay;
u16 timer;
u8 bg0HorizontalOffset;
u8 bg0VerticalOffset;
- u8 fillerA[0x2];
+ u8 unused0[2];
u8 bg1HorizontalOffset;
u8 bg1VerticalOffset;
- u8 fillerE[0x6];
+ u8 unused1[6];
u8 bg3HorizontalOffset;
u8 bg3VerticalOffset;
- u8 filler16[0x2];
- u8 unk18;
- u8 unk19;
- u8 unk1A;
- u8 unk1B;
- u8 unk1C;
- u8 unk1D;
- u8 unk1E;
- u8 unk1F;
- u8 unk20;
- u16 unk22[9][12];
- u8 fillerFA[0x2];
- /*0x00FC*/ u16 bgTilemapBuffers[4][0x800];
- /*0x40FC*/ u16 *mtChimneyTilemap;
- /*0x4100*/ u16 *treeTilemap;
- /*0x4104*/ u16 *mountainTilemap;
- /*0x4108*/ const u16 *pylonHookTilemapEntries;
- /*0x410C*/ u8 *pylonStemTilemap;
+ u8 unused2[2];
+ u8 groundTileIdx;
+ u8 groundSegmentXStart;
+ u8 groundSegmentYStart;
+ u8 groundTilemapOffset;
+ u8 groundTimer; // Incremented, but does nothing
+ u8 groundXOffset;
+ u8 groundYOffset;
+ u8 groundXBase;
+ u8 groundYBase;
+ u16 groundTileBuffer[9][12];
+ u8 unused3[2];
+ u16 bgTilemapBuffers[4][BG_SCREEN_SIZE];
+ u16 *groundTilemap;
+ u16 *treesTilemap;
+ u16 *bgMountainsTilemap;
+ const u16 *pylonHookTilemapEntries;
+ u8 *pylonStemTilemap;
};
static EWRAM_DATA struct CableCar *sCableCar = NULL;
-EWRAM_DATA u8 gUnknown_0203ABB0 = 0;
-EWRAM_DATA u8 gUnknown_0203ABB1 = 0;
-EWRAM_DATA u8 gUnknown_0203ABB2 = 0;
-EWRAM_DATA u8 gUnknown_0203ABB3 = 0;
-EWRAM_DATA u8 gUnknown_0203ABB4 = 0;
-EWRAM_DATA u8 gUnknown_0203ABB5 = 0;
-
-static void CableCarMainCallback_Setup(void);
-static void sub_8150B6C(u8);
-static void LoadCableCarSprites(void);
-static void sub_81514C8(u8);
-static void sub_81503E4(u8);
-static void sub_8150550(u8);
-static void sub_8150664(u8);
-static void CableCarVblankCallback(void);
-static void CableCarMainCallback_Run(void);
-static void sub_815115C(void);
-static void sub_81511B8(void);
-static void sub_8150868(struct Sprite *);
-static void nullsub_58(struct Sprite *);
-static void sub_8151214(void);
-static void sub_8151388(void);
-
-const struct BgTemplate gCableCarBgTemplates[4] = {
+static EWRAM_DATA u8 sGroundX_Up = 0;
+static EWRAM_DATA u8 sGroundY_Up = 0;
+static EWRAM_DATA u8 sGroundSegmentY_Up = 0;
+static EWRAM_DATA u8 sGroundX_Down = 0;
+static EWRAM_DATA u8 sGroundY_Down = 0;
+static EWRAM_DATA u8 sGroundSegmentY_Down = 0;
+
+static void CB2_LoadCableCar(void);
+static void SetBgRegs(bool8);
+static void CreateCableCarSprites(void);
+static void InitGroundTilemapData(bool8);
+static void Task_CableCar(u8);
+static void Task_AnimateBgGoingUp(u8);
+static void Task_AnimateBgGoingDown(u8);
+static void VBlankCB_CableCar(void);
+static void CB2_CableCar(void);
+static void AnimateGroundGoingUp(void);
+static void AnimateGroundGoingDown(void);
+static void SpriteCB_CableCar(struct Sprite *);
+static void SpriteCB_Cable(struct Sprite *);
+static void DrawNextGroundSegmentGoingUp(void);
+static void DrawNextGroundSegmentGoingDown(void);
+
+static const struct BgTemplate sBgTemplates[4] = {
{
.bg = 0,
.charBaseIndex = 0,
@@ -120,11 +128,11 @@ const struct BgTemplate gCableCarBgTemplates[4] = {
},
};
-const u8 gCableCarMtChimneyTilemap[] = INCBIN_U8("graphics/misc/cable_car_mt_chimney_map.bin.lz");
-const u8 gCableCarTreeTilemap[] = INCBIN_U8("graphics/misc/cable_car_tree_map.bin.lz");
-const u8 gCableCarMountainTilemap[] = INCBIN_U8("graphics/misc/cable_car_mountain_map.bin.lz");
+static const u8 sGround_Tilemap[] = INCBIN_U8("graphics/cable_car/ground.bin.lz");
+static const u8 sTrees_Tilemap[] = INCBIN_U8("graphics/cable_car/trees.bin.lz");
+static const u8 sBgMountains_Tilemap[] = INCBIN_U8("graphics/cable_car/bg_mountains.bin.lz");
-const u16 gCableCarPylonHookTilemapEntries[] = {
+static const u16 sPylonHook_TilemapEntries[] = {
0x3000,
0x3001,
0x3002,
@@ -137,21 +145,21 @@ const u16 gCableCarPylonHookTilemapEntries[] = {
0x3009,
};
-const u8 gCableCarPylonStemTilemap[] = INCBIN_U8("graphics/misc/cable_car_pylon_stem_map.bin.lz");
+static const u8 sPylonStems_Tilemap[] = INCBIN_U8("graphics/cable_car/pylons.bin.lz");
-const struct CompressedSpriteSheet gUnknown_085CDB54[] = {
- { gCableCar_Gfx, 0x800, 1 },
- { gCableCarDoor_Gfx, 0x40, 2 },
- { gCableCarCord_Gfx, 0x80, 3 },
+static const struct CompressedSpriteSheet sSpriteSheets[] = {
+ { gCableCar_Gfx, 0x800, TAG_CABLE_CAR },
+ { gCableCarDoor_Gfx, 0x40, TAG_DOOR },
+ { gCableCarCable_Gfx, 0x80, TAG_CABLE },
{ },
};
-const struct SpritePalette gUnknown_085CDB74[] = {
- { gCableCar_Pal, 1 },
+static const struct SpritePalette sSpritePalettes[] = {
+ { gCableCar_Pal, TAG_CABLE_CAR },
{ }
};
-const struct OamData gOamData_85CDB84 =
+static const struct OamData sOam_CableCar =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_DOUBLE,
@@ -165,7 +173,7 @@ const struct OamData gOamData_85CDB84 =
.paletteNum = 0,
};
-const struct OamData gOamData_85CDB8C =
+static const struct OamData sOam_CableCarDoor =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_DOUBLE,
@@ -179,7 +187,7 @@ const struct OamData gOamData_85CDB8C =
.paletteNum = 0,
};
-const struct OamData gOamData_85CDB94 =
+static const struct OamData sOam_Cable =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_DOUBLE,
@@ -193,43 +201,43 @@ const struct OamData gOamData_85CDB94 =
.paletteNum = 0,
};
-const struct SpriteTemplate gSpriteTemplate_85CDB9C[] =
+static const struct SpriteTemplate sSpriteTemplate_CableCar[] =
{
{
- .tileTag = 1,
- .paletteTag = 1,
- .oam = &gOamData_85CDB84,
+ .tileTag = TAG_CABLE_CAR,
+ .paletteTag = TAG_CABLE_CAR,
+ .oam = &sOam_CableCar,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8150868,
+ .callback = SpriteCB_CableCar,
},
{
- .tileTag = 2,
- .paletteTag = 1,
- .oam = &gOamData_85CDB8C,
+ .tileTag = TAG_DOOR,
+ .paletteTag = TAG_CABLE_CAR,
+ .oam = &sOam_CableCarDoor,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8150868,
+ .callback = SpriteCB_CableCar,
},
};
-const struct SpriteTemplate gSpriteTemplate_85CDBCC = {
- .tileTag = 3,
- .paletteTag = 1,
- .oam = &gOamData_85CDB94,
+static const struct SpriteTemplate sSpriteTemplate_Cable = {
+ .tileTag = TAG_CABLE,
+ .paletteTag = TAG_CABLE_CAR,
+ .oam = &sOam_Cable,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = nullsub_58,
+ .callback = SpriteCB_Cable,
};
-static void CableCarTask1(u8 taskId)
+static void Task_LoadCableCar(u8 taskId)
{
if (!gPaletteFade.active)
{
- SetMainCallback2(CableCarMainCallback_Setup);
+ SetMainCallback2(CB2_LoadCableCar);
DestroyTask(taskId);
}
}
@@ -237,11 +245,11 @@ static void CableCarTask1(u8 taskId)
void CableCar(void)
{
ScriptContext2_Enable();
- CreateTask(CableCarTask1, 1);
+ CreateTask(Task_LoadCableCar, 1);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
-static void CableCarMainCallback_Setup(void)
+static void CB2_LoadCableCar(void)
{
u16 imebak;
u8 i = 0;
@@ -252,7 +260,7 @@ static void CableCarMainCallback_Setup(void)
case 0:
default:
SetVBlankCallback(NULL);
- sub_8150B6C(0);
+ SetBgRegs(FALSE);
ScanlineEffect_Stop();
DmaFillLarge16(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000);
DmaFill32Defvars(3, 0, (void *)OAM, OAM_SIZE);
@@ -267,13 +275,13 @@ static void CableCarMainCallback_Setup(void)
ResetPaletteFade();
ResetTempTileDataBuffers();
StartWeather();
- for (i = 0; i < 20; i++)
+ for (i = 0; i < NUM_ASH_SPRITES; i++)
gWeatherPtr->sprites.s2.ashSprites[i] = NULL;
InitMapMusic();
ResetMapMusic();
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gCableCarBgTemplates, ARRAY_COUNT(gCableCarBgTemplates));
+ InitBgsFromTemplates(0, sBgTemplates, ARRAY_COUNT(sBgTemplates));
SetBgTilemapBuffer(0, sCableCar->bgTilemapBuffers[0]);
SetBgTilemapBuffer(1, sCableCar->bgTilemapBuffers[1]);
SetBgTilemapBuffer(2, sCableCar->bgTilemapBuffers[2]);
@@ -282,27 +290,27 @@ static void CableCarMainCallback_Setup(void)
gMain.state++;
break;
case 2:
- for (i = 0; i < 3; i++)
- LoadCompressedSpriteSheet(&gUnknown_085CDB54[i]);
-
- LoadSpritePalettes(gUnknown_085CDB74);
- sCableCar->mtChimneyTilemap = malloc_and_decompress(gCableCarMtChimneyTilemap, &sizeOut);
- sCableCar->treeTilemap = malloc_and_decompress(gCableCarTreeTilemap, &sizeOut);
- sCableCar->mountainTilemap = malloc_and_decompress(gCableCarMountainTilemap, &sizeOut);
- sCableCar->pylonStemTilemap = malloc_and_decompress(gCableCarPylonStemTilemap, &sizeOut);
- sCableCar->pylonHookTilemapEntries = gCableCarPylonHookTilemapEntries;
- DecompressAndCopyTileDataToVram(0, gUnknown_08DBA5B8, 0, 0, 0);
+ for (i = 0; i < ARRAY_COUNT(sSpriteSheets) - 1; i++)
+ LoadCompressedSpriteSheet(&sSpriteSheets[i]);
+
+ LoadSpritePalettes(sSpritePalettes);
+ sCableCar->groundTilemap = malloc_and_decompress(sGround_Tilemap, &sizeOut);
+ sCableCar->treesTilemap = malloc_and_decompress(sTrees_Tilemap, &sizeOut);
+ sCableCar->bgMountainsTilemap = malloc_and_decompress(sBgMountains_Tilemap, &sizeOut);
+ sCableCar->pylonStemTilemap = malloc_and_decompress(sPylonStems_Tilemap, &sizeOut);
+ sCableCar->pylonHookTilemapEntries = sPylonHook_TilemapEntries;
+ DecompressAndCopyTileDataToVram(0, gCableCarBg_Gfx, 0, 0, 0);
gMain.state++;
break;
case 3:
if (!FreeTempTileDataBuffersIfPossible())
{
- LoadPalette(gUnknown_08DBA518, 0, 0x80);
+ LoadPalette(gCableCarBg_Pal, 0, 0x80);
gMain.state++;
}
break;
case 4:
- LoadCableCarSprites();
+ CreateCableCarSprites();
RunTasks();
gMain.state++;
break;
@@ -313,7 +321,7 @@ static void CableCarMainCallback_Setup(void)
}
else if (gWeatherPtr->sprites.s2.ashSprites[0])
{
- for (i = 0; i < 20; i++)
+ for (i = 0; i < NUM_ASH_SPRITES; i++)
{
if (gWeatherPtr->sprites.s2.ashSprites[i])
gWeatherPtr->sprites.s2.ashSprites[i]->oam.priority = 0;
@@ -323,28 +331,28 @@ static void CableCarMainCallback_Setup(void)
}
break;
case 6:
- CopyToBgTilemapBufferRect_ChangePalette(1, sCableCar->treeTilemap, 0, 17, 32, 15, 17);
- CopyToBgTilemapBufferRect_ChangePalette(2, sCableCar->mountainTilemap, 0, 0, 30, 20, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(1, sCableCar->treesTilemap, 0, 17, 32, 15, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(2, sCableCar->bgMountainsTilemap, 0, 0, 30, 20, 17);
CopyToBgTilemapBufferRect_ChangePalette(3, sCableCar->pylonHookTilemapEntries, 0, 0, 5, 2, 17);
CopyToBgTilemapBufferRect_ChangePalette(3, sCableCar->pylonStemTilemap, 0, 2, 2, 20, 17);
gMain.state++;
break;
case 7:
- sub_81514C8(gSpecialVar_0x8004);
- CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x48, 0, 14, 12, 3, 17);
- CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x6C, 12, 17, 12, 3, 17);
- CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x90, 24, 20, 12, 3, 17);
- CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x0, 0, 17, 12, 3, 17);
- CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x24, 0, 20, 12, 3, 17);
- CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x0, 12, 20, 12, 3, 17);
- CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x24, 12, 23, 12, 3, 17);
- CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x0, 24, 23, 12, 3, 17);
+ InitGroundTilemapData(GOING_DOWN);
+ CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->groundTilemap + 0x48, 0, 14, 12, 3, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->groundTilemap + 0x6C, 12, 17, 12, 3, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->groundTilemap + 0x90, 24, 20, 12, 3, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->groundTilemap + 0x0, 0, 17, 12, 3, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->groundTilemap + 0x24, 0, 20, 12, 3, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->groundTilemap + 0x0, 12, 20, 12, 3, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->groundTilemap + 0x24, 12, 23, 12, 3, 17);
+ CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->groundTilemap + 0x0, 24, 23, 12, 3, 17);
gMain.state++;
break;
case 8:
BeginNormalPaletteFade(0xFFFFFFFF, 3, 16, 0, RGB(0, 0, 0));
FadeInNewBGM(MUS_CABLE_CAR, 1);
- sub_8150B6C(1);
+ SetBgRegs(TRUE);
gMain.state++;
break;
case 9:
@@ -352,18 +360,18 @@ static void CableCarMainCallback_Setup(void)
REG_IME = 0;
REG_IE |= INTR_FLAG_VBLANK;
REG_IME = imebak;
- SetVBlankCallback(CableCarVblankCallback);
- SetMainCallback2(CableCarMainCallback_Run);
- CreateTask(sub_81503E4, 0);
- if (gSpecialVar_0x8004 == 0)
- sCableCar->taskId = CreateTask(sub_8150550, 1);
+ SetVBlankCallback(VBlankCB_CableCar);
+ SetMainCallback2(CB2_CableCar);
+ CreateTask(Task_CableCar, 0);
+ if (!GOING_DOWN)
+ sCableCar->bgTaskId = CreateTask(Task_AnimateBgGoingUp, 1);
else
- sCableCar->taskId = CreateTask(sub_8150664, 1);
+ sCableCar->bgTaskId = CreateTask(Task_AnimateBgGoingDown, 1);
break;
}
}
-static void CableCarMainCallback_Run(void)
+static void CB2_CableCar(void)
{
RunTasks();
AnimateSprites();
@@ -372,7 +380,7 @@ static void CableCarMainCallback_Run(void)
MapMusicMain();
}
-static void CleanupCableCar(void)
+static void CB2_EndCableCar(void)
{
u8 i = 0;
@@ -380,10 +388,10 @@ static void CleanupCableCar(void)
HideBg(1);
HideBg(2);
HideBg(3);
- sub_8150B6C(0);
+ SetBgRegs(FALSE);
gSpriteCoordOffsetX = 0;
SetCurrentAndNextWeatherNoDelay(WEATHER_NONE);
- for (i = 0; i < 20; i++)
+ for (i = 0; i < NUM_ASH_SPRITES; i++)
gWeatherPtr->sprites.s2.ashSprites[i] = NULL;
ResetTasks();
@@ -396,9 +404,9 @@ static void CleanupCableCar(void)
ResetBgsAndClearDma3BusyFlags(0);
sCableCar->pylonHookTilemapEntries = NULL;
FREE_AND_SET_NULL(sCableCar->pylonStemTilemap);
- FREE_AND_SET_NULL(sCableCar->mountainTilemap);
- FREE_AND_SET_NULL(sCableCar->treeTilemap);
- FREE_AND_SET_NULL(sCableCar->mtChimneyTilemap);
+ FREE_AND_SET_NULL(sCableCar->bgMountainsTilemap);
+ FREE_AND_SET_NULL(sCableCar->treesTilemap);
+ FREE_AND_SET_NULL(sCableCar->groundTilemap);
FREE_AND_SET_NULL(sCableCar);
DmaFillLarge16(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000);
DmaFill32Defvars(3, 0, (void *)OAM, OAM_SIZE);
@@ -408,7 +416,7 @@ static void CleanupCableCar(void)
SetMainCallback2(CB2_LoadMap);
}
-static void sub_81503E4(u8 taskId)
+static void Task_CableCar(u8 taskId)
{
u8 i = 0;
@@ -416,13 +424,15 @@ static void sub_81503E4(u8 taskId)
switch (sCableCar->state)
{
case 0:
- if (sCableCar->timer == sCableCar->unk4)
+ // Wait to change weather
+ if (sCableCar->timer == sCableCar->weatherDelay)
{
SetNextWeather(sCableCar->weather);
sCableCar->state = 1;
}
break;
case 1:
+ // Update ash sprites
switch (sCableCar->weather)
{
case WEATHER_VOLCANIC_ASH:
@@ -442,7 +452,7 @@ static void sub_81503E4(u8 taskId)
{
sCableCar->state = 2;
}
- else if (sCableCar->timer >= sCableCar->unk4 + 8)
+ else if (sCableCar->timer >= sCableCar->weatherDelay + 8)
{
for (; i < NUM_ASH_SPRITES; i++)
{
@@ -454,6 +464,7 @@ static void sub_81503E4(u8 taskId)
}
break;
case 2:
+ // Wait to fade out
if (sCableCar->timer == 570)
{
sCableCar->state = 3;
@@ -462,21 +473,22 @@ static void sub_81503E4(u8 taskId)
}
break;
case 3:
+ // Wait for fade out
if (!gPaletteFade.active)
- sCableCar->state = 0xFF;
+ sCableCar->state = STATE_END;
break;
- case 0xFF:
+ case STATE_END:
SetVBlankCallback(NULL);
DestroyTask(taskId);
- DestroyTask(sCableCar->taskId);
- SetMainCallback2(CleanupCableCar);
+ DestroyTask(sCableCar->bgTaskId);
+ SetMainCallback2(CB2_EndCableCar);
break;
}
}
-static void sub_8150550(u8 taskId)
+static void Task_AnimateBgGoingUp(u8 taskId)
{
- if (sCableCar->state != 0xFF)
+ if (sCableCar->state != STATE_END)
{
sCableCar->bg3HorizontalOffset--;
if ((sCableCar->timer % 2) == 0)
@@ -507,13 +519,13 @@ static void sub_8150550(u8 taskId)
}
}
- sub_815115C();
+ AnimateGroundGoingUp();
gSpriteCoordOffsetX = (gSpriteCoordOffsetX + 1) % 128;
}
-static void sub_8150664(u8 taskId)
+static void Task_AnimateBgGoingDown(u8 taskId)
{
- if (sCableCar->state != 0xFF)
+ if (sCableCar->state != STATE_END)
{
sCableCar->bg3HorizontalOffset++;
if ((sCableCar->timer % 2) == 0)
@@ -548,14 +560,14 @@ static void sub_8150664(u8 taskId)
}
}
- sub_81511B8();
- if (sCableCar->timer < sCableCar->unk4)
+ AnimateGroundGoingDown();
+ if (sCableCar->timer < sCableCar->weatherDelay)
gSpriteCoordOffsetX = (gSpriteCoordOffsetX + 247) % 248;
else
gWeatherPtr->ashBaseSpritesX = (gWeatherPtr->ashBaseSpritesX + 247) % 248;
}
-static void CableCarVblankCallback(void)
+static void VBlankCB_CableCar(void)
{
CopyBgTilemapBufferToVram(0);
CopyBgTilemapBufferToVram(3);
@@ -570,83 +582,100 @@ static void CableCarVblankCallback(void)
TransferPlttBuffer();
}
-static void nullsub_58(struct Sprite *sprite)
+static void SpriteCB_Cable(struct Sprite *sprite)
{
+
}
-static void sub_8150868(struct Sprite *sprite)
+#define sXPos data[0]
+#define sYPos data[1]
+
+static void SpriteCB_CableCar(struct Sprite *sprite)
{
- if (sCableCar->state != 0xFF)
+ if (sCableCar->state != STATE_END)
{
- if (gSpecialVar_0x8004 == 0)
+ if (!GOING_DOWN)
{
- sprite->pos1.x = sprite->data[0] - (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
- sprite->pos1.y = sprite->data[1] - (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->pos1.x = sprite->sXPos - (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->pos1.y = sprite->sYPos - (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
}
else
{
- sprite->pos1.x = sprite->data[0] + (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
- sprite->pos1.y = sprite->data[1] + (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->pos1.x = sprite->sXPos + (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->pos1.y = sprite->sYPos + (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
}
}
}
-void sub_8150948(struct Sprite *sprite)
+#define sState data[2]
+#define sTimer data[3]
+
+static void SpriteCB_Player(struct Sprite *sprite)
{
- if (sCableCar->state != 255)
+ if (sCableCar->state != STATE_END)
{
- if (!gSpecialVar_0x8004)
+ // Move along with cable car
+ if (!GOING_DOWN)
{
- sprite->pos1.x = sprite->data[0] - (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
- sprite->pos1.y = sprite->data[1] - (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->pos1.x = sprite->sXPos - (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->pos1.y = sprite->sYPos - (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
}
else
{
- sprite->pos1.x = sprite->data[0] + (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
- sprite->pos1.y = sprite->data[1] + (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->pos1.x = sprite->sXPos + (u8)(0.14f * S16TOPOSFLOAT(sCableCar->timer));
+ sprite->pos1.y = sprite->sYPos + (u8)(0.067f * S16TOPOSFLOAT(sCableCar->timer));
}
- switch (sprite->data[2])
+ // Bounce up and down
+ switch (sprite->sState)
{
case 0:
sprite->pos2.y = 17;
- if (sprite->data[3] ++ > 9)
+ if (sprite->sTimer++ > 9)
{
- sprite->data[3] = 0;
- sprite->data[2] ++;
+ sprite->sTimer = 0;
+ sprite->sState++;
}
break;
default:
sprite->pos2.y = 16;
- if (sprite->data[3] ++ > 9)
+ if (sprite->sTimer++ > 9)
{
- sprite->data[3] = 0;
- sprite->data[2] = 0;
+ sprite->sTimer = 0;
+ sprite->sState = 0;
}
break;
}
}
}
-static void sub_8150A68(struct Sprite *sprite)
+#undef sState
+#undef sTimer
+
+#define sTimer data[0]
+#define sSameDir data[1] // Whether or not the hiker is headed the same dir as the Cable Car
+#define sDelay data[2]
+
+static void SpriteCB_HikerGoingUp(struct Sprite *sprite)
{
- if (sprite->data[0] == 0)
+ if (sprite->sTimer == 0)
{
sprite->pos1.x += 2 * sprite->centerToCornerVecX;
sprite->pos1.y += 16 + sprite->centerToCornerVecY;
}
- if (++sprite->data[0] >= sprite->data[2])
+ if (++sprite->sTimer >= sprite->sDelay)
{
- switch (sprite->data[1])
+ switch (sprite->sSameDir)
{
- case 0:
+ case FALSE:
sprite->pos1.x++;
- if ((sprite->data[0] % 4) == 0)
+ if ((sprite->sTimer % 4) == 0)
sprite->pos1.y++;
break;
- case 1:
- if ((sprite->data[0] % 2) != 0)
+ 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)
@@ -660,22 +689,23 @@ static void sub_8150A68(struct Sprite *sprite)
}
}
-static void sub_8150AF4(struct Sprite *sprite)
+static void SpriteCB_HikerGoingDown(struct Sprite *sprite)
{
- if (sprite->data[0] == 0)
+ if (sprite->sTimer == 0)
sprite->pos1.y += 16 + sprite->centerToCornerVecY;
- if (++sprite->data[0] >= sprite->data[2])
+ if (++sprite->sTimer >= sprite->sDelay)
{
- switch (sprite->data[1])
+ switch (sprite->sSameDir)
{
- case 0:
+ case FALSE:
sprite->pos1.x--;
- if ((sprite->data[0] % 4) == 0)
+ if ((sprite->sTimer % 4) == 0)
sprite->pos1.y--;
break;
- case 1:
- if ((sprite->data[0] % 2) != 0)
+ 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)
@@ -689,9 +719,11 @@ static void sub_8150AF4(struct Sprite *sprite)
}
}
-static void sub_8150B6C(bool8 which)
+#undef sTimer
+
+static void SetBgRegs(bool8 active)
{
- switch (which)
+ switch (active)
{
case FALSE:
default:
@@ -723,7 +755,7 @@ static void sub_8150B6C(bool8 which)
SetGpuReg(REG_OFFSET_WIN1H, 0);
SetGpuReg(REG_OFFSET_WIN0V, 0);
SetGpuReg(REG_OFFSET_WIN1V, 0);
- if (gSpecialVar_0x8004 == 0)
+ if (!GOING_DOWN)
{
sCableCar->bg3HorizontalOffset = 176;
sCableCar->bg3VerticalOffset = 16;
@@ -762,14 +794,14 @@ static void sub_8150B6C(bool8 which)
}
}
-static void LoadCableCarSprites(void)
+static void CreateCableCarSprites(void)
{
u8 spriteId;
u8 i;
u8 playerGraphicsIds[2] = {
- OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL,
- OBJ_EVENT_GFX_RIVAL_MAY_NORMAL
+ [MALE] = OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL,
+ [FEMALE] = OBJ_EVENT_GFX_RIVAL_MAY_NORMAL
};
u16 rval = Random();
u8 hikerGraphicsIds[4] = {
@@ -779,248 +811,264 @@ static void LoadCableCarSprites(void)
OBJ_EVENT_GFX_ZIGZAGOON_1
};
s16 hikerCoords[2][2] = {
- { 0, 80 },
- { 240, 146 }
- };
- u8 hikerMovementDelayTable[4] = {
- 0,
- 60,
- 120,
- 170
+ { 0, 80 }, // Going up
+ { 240, 146 } // Going down
};
- void (*callbacks[2])(struct Sprite *) = {
- sub_8150A68,
- sub_8150AF4
+ u8 hikerMovementDelayTable[4] = { 0, 60, 120, 170};
+ void (*hikerCallbacks[2])(struct Sprite *) = {
+ SpriteCB_HikerGoingUp,
+ SpriteCB_HikerGoingDown
};
- switch (gSpecialVar_0x8004)
+ switch (GOING_DOWN)
{
- case 0:
+ case FALSE:
default:
- spriteId = AddPseudoObjectEvent(playerGraphicsIds[gSaveBlock2Ptr->playerGender], sub_8150948, 200, 73, 102);
+ // Create player sprite
+ spriteId = AddPseudoObjectEvent(playerGraphicsIds[gSaveBlock2Ptr->playerGender], SpriteCB_Player, 200, 73, 102);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].oam.priority = 2;
gSprites[spriteId].pos2.x = 8;
gSprites[spriteId].pos2.y = 16;
- gSprites[spriteId].data[0] = 0xc8;
- gSprites[spriteId].data[1] = 0x49;
+ gSprites[spriteId].sXPos = 200;
+ gSprites[spriteId].sYPos = 73;
}
- spriteId = CreateSprite(&gSpriteTemplate_85CDB9C[0], 176, 43, 0x67);
+ // Create car sprite
+ spriteId = CreateSprite(&sSpriteTemplate_CableCar[0], 176, 43, 0x67);
gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = 32;
- gSprites[spriteId].data[0] = 176;
- gSprites[spriteId].data[1] = 43;
- spriteId = CreateSprite(&gSpriteTemplate_85CDB9C[1], 200, 99, 0x65);
+ 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].data[0] = 200;
- gSprites[spriteId].data[1] = 99;
+ gSprites[spriteId].sXPos = 200;
+ gSprites[spriteId].sYPos = 99;
+ // Init weather
sCableCar->weather = WEATHER_VOLCANIC_ASH;
- sCableCar->unk4 = 0x15e;
+ sCableCar->weatherDelay = 350;
SetCurrentAndNextWeatherNoDelay(WEATHER_SUNNY);
break;
- case 1:
- CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x24, 24, 26, 12, 3, 17);
- spriteId = AddPseudoObjectEvent(playerGraphicsIds[gSaveBlock2Ptr->playerGender], sub_8150948, 128, 39, 102);
+ case TRUE:
+ CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->groundTilemap + 0x24, 24, 26, 12, 3, 17);
+ // Create player sprite
+ spriteId = AddPseudoObjectEvent(playerGraphicsIds[gSaveBlock2Ptr->playerGender], SpriteCB_Player, 128, 39, 102);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].oam.priority = 2;
gSprites[spriteId].pos2.x = 8;
gSprites[spriteId].pos2.y = 16;
- gSprites[spriteId].data[0] = 0x80;
- gSprites[spriteId].data[1] = 0x27;
+ gSprites[spriteId].sXPos = 128;
+ gSprites[spriteId].sYPos = 39;
}
- spriteId = CreateSprite(&gSpriteTemplate_85CDB9C[0], 104, 9, 0x67);
- gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = 0x20;
- gSprites[spriteId].data[0] = 104;
- gSprites[spriteId].data[1] = 9;
- spriteId = CreateSprite(&gSpriteTemplate_85CDB9C[1], 128, 65, 0x65);
+ // Create car sprite
+ spriteId = CreateSprite(&sSpriteTemplate_CableCar[0], 104, 9, 0x67);
+ gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = 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].data[0] = 0x80;
- gSprites[spriteId].data[1] = 0x41;
+ gSprites[spriteId].sXPos = 128;
+ gSprites[spriteId].sYPos = 65;
+ // Init weather
sCableCar->weather = WEATHER_SUNNY;
- sCableCar->unk4 = 0x109;
+ sCableCar->weatherDelay = 265;
SetCurrentAndNextWeatherNoDelay(WEATHER_VOLCANIC_ASH);
break;
}
for (i = 0; i < 9; i++)
{
- spriteId = CreateSprite(&gSpriteTemplate_85CDBCC, 16 * i + 96, 8 * i - 8, 0x68);
+ spriteId = CreateSprite(&sSpriteTemplate_Cable, 16 * i + 96, 8 * i - 8, 0x68);
gSprites[spriteId].pos2.x = 8;
gSprites[spriteId].pos2.y = 8;
}
+
+ // 1/64 chance for an NPC to appear hiking on the ground below the Cable Car
if ((rval % 64) == 0)
{
- spriteId = AddPseudoObjectEvent(hikerGraphicsIds[rval % 3], callbacks[gSpecialVar_0x8004], hikerCoords[gSpecialVar_0x8004][0], hikerCoords[gSpecialVar_0x8004][1], 0x6a);
+ // Unclear if this was intentional, but the - 1 in the below ARRAY_COUNT means the Zigzagoon is never used
+ spriteId = AddPseudoObjectEvent(hikerGraphicsIds[rval % (ARRAY_COUNT(hikerGraphicsIds) - 1)], hikerCallbacks[GOING_DOWN], hikerCoords[GOING_DOWN][0], hikerCoords[GOING_DOWN][1], 106);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].oam.priority = 2;
gSprites[spriteId].pos2.x = -gSprites[spriteId].centerToCornerVecX;
gSprites[spriteId].pos2.y = -gSprites[spriteId].centerToCornerVecY;
- if (gSpecialVar_0x8004 == 0)
+
+ // Randomly choose which direction the NPC is going
+ if (!GOING_DOWN)
{
if (rval % 2)
{
+ // Do walking west anim
StartSpriteAnim(&gSprites[spriteId], 6);
- gSprites[spriteId].data[1] = 1;
+ gSprites[spriteId].sSameDir = TRUE;
gSprites[spriteId].pos1.y += 2;
}
else
{
+ // Do walking east anim
StartSpriteAnim(&gSprites[spriteId], 7);
- gSprites[spriteId].data[1] = 0;
+ gSprites[spriteId].sSameDir = FALSE;
}
}
else
{
if (rval % 2)
{
+ // Do walking east anim
StartSpriteAnim(&gSprites[spriteId], 7);
- gSprites[spriteId].data[1] = 1;
+ gSprites[spriteId].sSameDir = TRUE;
gSprites[spriteId].pos1.y += 2;
}
else
{
+ // Do walking west anim
StartSpriteAnim(&gSprites[spriteId], 6);
- gSprites[spriteId].data[1] = 0;
+ gSprites[spriteId].sSameDir = FALSE;
}
}
- gSprites[spriteId].data[2] = hikerMovementDelayTable[rval % 4];
+ gSprites[spriteId].sDelay = hikerMovementDelayTable[rval % ARRAY_COUNT(hikerMovementDelayTable)];
}
}
}
-void sub_8151088(void)
+static void BufferNextGroundSegment(void)
{
- u8 i;
- u8 j;
- u8 k;
+ u8 i, j, k;
u8 offset;
- for (i = 0, k = 0, offset = 0x24 * (sCableCar->unk1B + 2); i < 3; i++)
+ for (i = 0, k = 0, offset = 0x24 * (sCableCar->groundTilemapOffset + 2); i < 3; i++)
{
- for (j = 0; j < 12; j++)
+ for (j = 0; j < ARRAY_COUNT(sCableCar->groundTileBuffer[0]); j++)
{
- sCableCar->unk22[i][j] = sCableCar->mtChimneyTilemap[offset++];
- sCableCar->unk22[i + 3][j] = sCableCar->mtChimneyTilemap[k];
- sCableCar->unk22[i + 6][j] = (sCableCar->mtChimneyTilemap + 0x24)[k];
+ sCableCar->groundTileBuffer[i][j] = sCableCar->groundTilemap[offset++];
+ sCableCar->groundTileBuffer[i + 3][j] = sCableCar->groundTilemap[k];
+ sCableCar->groundTileBuffer[i + 6][j] = (sCableCar->groundTilemap + 0x24)[k];
k++;
}
}
- sCableCar->unk1B = (sCableCar->unk1B + 1) % 3;
+ sCableCar->groundTilemapOffset = (sCableCar->groundTilemapOffset + 1) % 3;
}
-static void sub_815115C(void)
+static void AnimateGroundGoingUp(void)
{
- sCableCar->unk1C = (sCableCar->unk1C + 1) % 0x60;
- sCableCar->bg0HorizontalOffset = sCableCar->unk1F - sCableCar->unk1D;
- sCableCar->bg0VerticalOffset = sCableCar->unk20 - sCableCar->unk1E;
- sCableCar->unk1D++;
- if ((sCableCar->unk1D % 4) == 0)
- sCableCar->unk1E++;
-
- if (sCableCar->unk1D > 16)
- sub_8151214();
+ sCableCar->groundTimer = (sCableCar->groundTimer + 1) % 96;
+ sCableCar->bg0HorizontalOffset = sCableCar->groundXBase - sCableCar->groundXOffset;
+ sCableCar->bg0VerticalOffset = sCableCar->groundYBase - sCableCar->groundYOffset;
+ sCableCar->groundXOffset++;
+ if ((sCableCar->groundXOffset % 4) == 0)
+ sCableCar->groundYOffset++;
+
+ if (sCableCar->groundXOffset > 16)
+ DrawNextGroundSegmentGoingUp();
}
-static void sub_81511B8(void)
+static void AnimateGroundGoingDown(void)
{
- sCableCar->unk1C = (sCableCar->unk1C + 1) % 0x60;
- sCableCar->bg0HorizontalOffset = sCableCar->unk1F + sCableCar->unk1D;
- sCableCar->bg0VerticalOffset = sCableCar->unk20 + sCableCar->unk1E;
- sCableCar->unk1D++;
- if ((sCableCar->unk1D % 4) == 0)
- sCableCar->unk1E++;
-
- if (sCableCar->unk1D > 16)
- sub_8151388();
+ sCableCar->groundTimer = (sCableCar->groundTimer + 1) % 96;
+ sCableCar->bg0HorizontalOffset = sCableCar->groundXBase + sCableCar->groundXOffset;
+ sCableCar->bg0VerticalOffset = sCableCar->groundYBase + sCableCar->groundYOffset;
+ sCableCar->groundXOffset++;
+ if ((sCableCar->groundXOffset % 4) == 0)
+ sCableCar->groundYOffset++;
+
+ if (sCableCar->groundXOffset > 16)
+ DrawNextGroundSegmentGoingDown();
}
-static void sub_8151214(void)
+static void DrawNextGroundSegmentGoingUp(void)
{
u8 i = 0;
- sCableCar->unk1D = sCableCar->unk1E = 0;
- sCableCar->unk1F = sCableCar->bg0HorizontalOffset;
- sCableCar->unk20 = sCableCar->bg0VerticalOffset;
- sCableCar->unk19 = (sCableCar->unk19 + 30) % 32;
- sCableCar->unk18 -= 2;
- gUnknown_0203ABB2 = (sCableCar->unk1A + 23) % 32;
- for (i = 0; i < 9; i++)
+ sCableCar->groundXOffset = sCableCar->groundYOffset = 0;
+ sCableCar->groundXBase = sCableCar->bg0HorizontalOffset;
+ sCableCar->groundYBase = sCableCar->bg0VerticalOffset;
+ sCableCar->groundSegmentXStart = (sCableCar->groundSegmentXStart + 30) % 32;
+ sCableCar->groundTileIdx -= 2;
+ sGroundSegmentY_Up = (sCableCar->groundSegmentYStart + 23) % 32;
+
+ // Draw next segment
+ for (i = 0; i < ARRAY_COUNT(sCableCar->groundTileBuffer); i++)
{
- gUnknown_0203ABB0 = sCableCar->unk19;
- gUnknown_0203ABB1 = (gUnknown_0203ABB2 + i) % 32;
- FillBgTilemapBufferRect(0, sCableCar->unk22[i][sCableCar->unk18], gUnknown_0203ABB0, gUnknown_0203ABB1, 1, 1, 17);
- gUnknown_0203ABB0 = (gUnknown_0203ABB0 + 1) % 32;
- FillBgTilemapBufferRect(0, sCableCar->unk22[i][sCableCar->unk18 + 1], gUnknown_0203ABB0, gUnknown_0203ABB1, 1, 1, 17);
+ sGroundX_Up = sCableCar->groundSegmentXStart;
+ sGroundY_Up = (sGroundSegmentY_Up + i) % 32;
+ FillBgTilemapBufferRect(0, sCableCar->groundTileBuffer[i][sCableCar->groundTileIdx], sGroundX_Up, sGroundY_Up, 1, 1, 17);
+ sGroundX_Up = (sGroundX_Up + 1) % 32;
+ FillBgTilemapBufferRect(0, sCableCar->groundTileBuffer[i][sCableCar->groundTileIdx + 1], sGroundX_Up, sGroundY_Up, 1, 1, 17);
}
- gUnknown_0203ABB0 = (sCableCar->unk19 + 30) % 32;
- FillBgTilemapBufferRect(0, 0, gUnknown_0203ABB0, 0, 2, 32, 17);
- if (sCableCar->unk18 == 0)
+ // Erase old segment
+ sGroundX_Up = (sCableCar->groundSegmentXStart + 30) % 32;
+ FillBgTilemapBufferRect(0, 0, sGroundX_Up, 0, 2, 32, 17);
+ if (sCableCar->groundTileIdx == 0)
{
- sCableCar->unk1A = (sCableCar->unk1A + 29) % 32;
- sCableCar->unk18 = 12;
- sub_8151088();
- gUnknown_0203ABB0 = (sCableCar->unk1A + 1) % 32;
- FillBgTilemapBufferRect(0, 0, 0, gUnknown_0203ABB0, 32, 9, 17);
+ sCableCar->groundSegmentYStart = (sCableCar->groundSegmentYStart + 29) % 32;
+ sCableCar->groundTileIdx = 12;
+ BufferNextGroundSegment();
+ sGroundX_Up = (sCableCar->groundSegmentYStart + 1) % 32;
+ FillBgTilemapBufferRect(0, 0, 0, sGroundX_Up, 32, 9, 17);
}
}
-static void sub_8151388(void)
+static void DrawNextGroundSegmentGoingDown(void)
{
u8 i = 0;
- sCableCar->unk1D = sCableCar->unk1E = 0;
- sCableCar->unk1F = sCableCar->bg0HorizontalOffset;
- sCableCar->unk20 = sCableCar->bg0VerticalOffset;
- sCableCar->unk19 = (sCableCar->unk19 + 2) % 32;
- sCableCar->unk18 += 2;
- gUnknown_0203ABB5 = sCableCar->unk1A;
- for (i = 0; i < 9; i++)
+ sCableCar->groundXOffset = sCableCar->groundYOffset = 0;
+ sCableCar->groundXBase = sCableCar->bg0HorizontalOffset;
+ sCableCar->groundYBase = sCableCar->bg0VerticalOffset;
+ sCableCar->groundSegmentXStart = (sCableCar->groundSegmentXStart + 2) % 32;
+ sCableCar->groundTileIdx += 2;
+ sGroundSegmentY_Down = sCableCar->groundSegmentYStart;
+
+ // Draw next segment
+ for (i = 0; i < ARRAY_COUNT(sCableCar->groundTileBuffer); i++)
{
- gUnknown_0203ABB3 = sCableCar->unk19;
- gUnknown_0203ABB4 = (gUnknown_0203ABB5 + i) % 32;
- FillBgTilemapBufferRect(0, sCableCar->unk22[i][sCableCar->unk18], gUnknown_0203ABB3, gUnknown_0203ABB4, 1, 1, 17);
- gUnknown_0203ABB3 = (gUnknown_0203ABB3 + 1) % 32;
- FillBgTilemapBufferRect(0, sCableCar->unk22[i][sCableCar->unk18 + 1], gUnknown_0203ABB3, gUnknown_0203ABB4, 1, 1, 17);
+ sGroundX_Down = sCableCar->groundSegmentXStart;
+ sGroundY_Down = (sGroundSegmentY_Down + i) % 32;
+ FillBgTilemapBufferRect(0, sCableCar->groundTileBuffer[i][sCableCar->groundTileIdx], sGroundX_Down, sGroundY_Down, 1, 1, 17);
+ sGroundX_Down = (sGroundX_Down + 1) % 32;
+ FillBgTilemapBufferRect(0, sCableCar->groundTileBuffer[i][sCableCar->groundTileIdx + 1], sGroundX_Down, sGroundY_Down, 1, 1, 17);
}
- gUnknown_0203ABB4 = (sCableCar->unk1A + 23) % 32;
- FillBgTilemapBufferRect(0, 0, sCableCar->unk19, gUnknown_0203ABB4, 2, 9, 17);
- if (sCableCar->unk18 == 10)
+ // Erase old segment
+ sGroundY_Down = (sCableCar->groundSegmentYStart + 23) % 32;
+ FillBgTilemapBufferRect(0, 0, sCableCar->groundSegmentXStart, sGroundY_Down, 2, 9, 17);
+ if (sCableCar->groundTileIdx == 10)
{
- sCableCar->unk1A = (sCableCar->unk1A + 3) % 32;
- sCableCar->unk18 = 0xfe;
- sub_8151088();
+ sCableCar->groundSegmentYStart = (sCableCar->groundSegmentYStart + 3) % 32;
+ sCableCar->groundTileIdx = -2;
+ BufferNextGroundSegment();
}
}
-static void sub_81514C8(u8 arg0)
+static void InitGroundTilemapData(bool8 goingDown)
{
- switch (arg0)
+ switch (goingDown)
{
- case 0:
+ case FALSE:
default:
- sCableCar->unk1B = 2;
- sCableCar->unk19 = 0;
- sCableCar->unk1A = 20;
- sCableCar->unk18 = 12;
- sub_8151088();
- sub_8151214();
+ sCableCar->groundTilemapOffset = 2;
+ sCableCar->groundSegmentXStart = 0;
+ sCableCar->groundSegmentYStart = 20;
+ sCableCar->groundTileIdx = 12;
+ BufferNextGroundSegment();
+ DrawNextGroundSegmentGoingUp();
break;
- case 1:
- sCableCar->unk1B = 2;
- sCableCar->unk19 = 28;
- sCableCar->unk1A = 20;
- sCableCar->unk18 = 4;
- sub_8151088();
- sub_8151388();
+ case TRUE:
+ sCableCar->groundTilemapOffset = 2;
+ sCableCar->groundSegmentXStart = 28;
+ sCableCar->groundSegmentYStart = 20;
+ sCableCar->groundTileIdx = 4;
+ BufferNextGroundSegment();
+ DrawNextGroundSegmentGoingDown();
break;
}
- sCableCar->unk1C = 0;
+ sCableCar->groundTimer = 0;
}
diff --git a/src/cable_club.c b/src/cable_club.c
index 93f87ec9b..f02683c9d 100644
--- a/src/cable_club.c
+++ b/src/cable_club.c
@@ -163,7 +163,7 @@ static bool32 CheckLinkErrored(u8 taskId)
static bool32 CheckLinkCanceledBeforeConnection(u8 taskId)
{
- if ((gMain.newKeys & B_BUTTON)
+ if ((JOY_NEW(B_BUTTON))
&& IsLinkConnectionEstablished() == FALSE)
{
gLinkType = 0;
@@ -178,7 +178,7 @@ static bool32 CheckLinkCanceled(u8 taskId)
if (IsLinkConnectionEstablished())
SetSuppressLinkErrorMessage(TRUE);
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
gLinkType = 0;
gTasks[taskId].func = Task_LinkupFailed;
@@ -277,7 +277,7 @@ static void Task_LinkupAwaitConfirmation(u8 taskId)
UpdateLinkPlayerCountDisplay(taskId, linkPlayerCount);
- if (!(gMain.newKeys & A_BUTTON))
+ if (!(JOY_NEW(A_BUTTON)))
return;
if (linkPlayerCount < tMinPlayers)
@@ -304,12 +304,12 @@ static void Task_LinkupTryConfirmation(u8 taskId)
ShowFieldAutoScrollMessage(gText_ConfirmLinkWhenPlayersReady);
gTasks[taskId].func = Task_LinkupConfirmWhenReady;
}
- else if (gMain.heldKeys & B_BUTTON)
+ else if (JOY_HELD(B_BUTTON))
{
ShowFieldAutoScrollMessage(gText_ConfirmLinkWhenPlayersReady);
gTasks[taskId].func = Task_LinkupConfirmWhenReady;
}
- else if (gMain.heldKeys & A_BUTTON)
+ else if (JOY_HELD(A_BUTTON))
{
PlaySE(SE_SELECT);
CheckShouldAdvanceLinkState();
diff --git a/src/contest.c b/src/contest.c
index fbd42a007..40a0eac66 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/species.h"
#include "constants/tv.h"
// This file's functions.
@@ -951,39 +950,39 @@ const struct SpriteTemplate sSpriteTemplates_ContestantsTurnBlinkEffect[CONTESTA
static const s8 gContestExcitementTable[CONTEST_CATEGORIES_COUNT][CONTEST_CATEGORIES_COUNT] =
{
- [CONTEST_CATEGORY_COOL] = {
- [CONTEST_CATEGORY_COOL] = +1,
- [CONTEST_CATEGORY_BEAUTY] = 0,
- [CONTEST_CATEGORY_CUTE] = -1,
- [CONTEST_CATEGORY_SMART] = -1,
+ [CONTEST_CATEGORY_COOL] = {
+ [CONTEST_CATEGORY_COOL] = +1,
+ [CONTEST_CATEGORY_BEAUTY] = 0,
+ [CONTEST_CATEGORY_CUTE] = -1,
+ [CONTEST_CATEGORY_SMART] = -1,
[CONTEST_CATEGORY_TOUGH] = 0
},
- [CONTEST_CATEGORY_BEAUTY] = {
- [CONTEST_CATEGORY_COOL] = 0,
- [CONTEST_CATEGORY_BEAUTY] = +1,
- [CONTEST_CATEGORY_CUTE] = 0,
- [CONTEST_CATEGORY_SMART] = -1,
+ [CONTEST_CATEGORY_BEAUTY] = {
+ [CONTEST_CATEGORY_COOL] = 0,
+ [CONTEST_CATEGORY_BEAUTY] = +1,
+ [CONTEST_CATEGORY_CUTE] = 0,
+ [CONTEST_CATEGORY_SMART] = -1,
[CONTEST_CATEGORY_TOUGH] = -1
},
[CONTEST_CATEGORY_CUTE] = {
- [CONTEST_CATEGORY_COOL] = -1,
- [CONTEST_CATEGORY_BEAUTY] = 0,
- [CONTEST_CATEGORY_CUTE] = +1,
- [CONTEST_CATEGORY_SMART] = 0,
+ [CONTEST_CATEGORY_COOL] = -1,
+ [CONTEST_CATEGORY_BEAUTY] = 0,
+ [CONTEST_CATEGORY_CUTE] = +1,
+ [CONTEST_CATEGORY_SMART] = 0,
[CONTEST_CATEGORY_TOUGH] = -1
},
[CONTEST_CATEGORY_SMART] = {
- [CONTEST_CATEGORY_COOL] = -1,
- [CONTEST_CATEGORY_BEAUTY] = -1,
- [CONTEST_CATEGORY_CUTE] = 0,
- [CONTEST_CATEGORY_SMART] = +1,
+ [CONTEST_CATEGORY_COOL] = -1,
+ [CONTEST_CATEGORY_BEAUTY] = -1,
+ [CONTEST_CATEGORY_CUTE] = 0,
+ [CONTEST_CATEGORY_SMART] = +1,
[CONTEST_CATEGORY_TOUGH] = 0
},
- [CONTEST_CATEGORY_TOUGH] = {
- [CONTEST_CATEGORY_COOL] = 0,
- [CONTEST_CATEGORY_BEAUTY] = -1,
- [CONTEST_CATEGORY_CUTE] = -1,
- [CONTEST_CATEGORY_SMART] = 0,
+ [CONTEST_CATEGORY_TOUGH] = {
+ [CONTEST_CATEGORY_COOL] = 0,
+ [CONTEST_CATEGORY_BEAUTY] = -1,
+ [CONTEST_CATEGORY_CUTE] = -1,
+ [CONTEST_CATEGORY_SMART] = 0,
[CONTEST_CATEGORY_TOUGH] = +1
}
};
@@ -1493,7 +1492,7 @@ static void Task_DisplayAppealNumberText(u8 taskId)
static void Task_TryShowMoveSelectScreen(u8 taskId)
{
// Wait for button press to show move select screen
- if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys == B_BUTTON))
+ if ((JOY_NEW(A_BUTTON)) || (gMain.newKeys == B_BUTTON))
{
PlaySE(SE_SELECT);
if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex))
@@ -1559,7 +1558,7 @@ static void Task_HandleMoveSelectInput(u8 taskId)
numMoves++;
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
gTasks[taskId].func = Task_SelectedMove;
@@ -3119,9 +3118,9 @@ static u8 CreateContestantSprite(u16 species, u32 otId, u32 personality, u32 ind
species = SanitizeSpecies(species);
if (index == gContestPlayerMonIndex)
- HandleLoadSpecialPokePic_2(&gMonBackPicTable[species], gMonSpritesGfxPtr->sprites[0], species, personality);
+ HandleLoadSpecialPokePic_2(&gMonBackPicTable[species], gMonSpritesGfxPtr->sprites.ptr[0], species, personality);
else
- HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species], gMonSpritesGfxPtr->sprites[0], species, personality);
+ HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species], gMonSpritesGfxPtr->sprites.ptr[0], species, personality);
LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x120, 0x20);
SetMultiuseSpriteTemplateToPokemon(species, 0);
@@ -3408,7 +3407,8 @@ static void GetAllChosenMoves(void)
static void RankContestants(void)
{
- s32 i, j;
+ s32 i;
+ s32 j;
s16 arr[CONTESTANT_COUNT];
for (i = 0; i < CONTESTANT_COUNT; i++)
@@ -3483,7 +3483,8 @@ static bool8 ContestantCanUseTurn(u8 contestant)
{
if (eContestantStatus[contestant].numTurnsSkipped != 0 || eContestantStatus[contestant].noMoreTurns)
return FALSE;
- return TRUE;
+ else
+ return TRUE;
}
static void SetContestantStatusesForNextRound(void)
@@ -3537,7 +3538,8 @@ bool8 Contest_IsMonsTurnDisabled(u8 contestant)
{
if (eContestantStatus[contestant].numTurnsSkipped != 0 || eContestantStatus[contestant].noMoreTurns)
return TRUE;
- return FALSE;
+ else
+ return FALSE;
}
static void CalculateTotalPointsForContestant(u8 contestant)
@@ -4137,12 +4139,12 @@ static u8 CreateContestantBoxBlinkSprites(u8 contestant)
CpuFill32(0, gContestResources->boxBlinkTiles2 + 0x500, 0x300);
RequestDma3Copy(gContestResources->boxBlinkTiles1,
- (u8 *)(VRAM + 0x10000 + gSprites[spriteId1].oam.tileNum * 32),
+ (u8 *)(OBJ_VRAM0 + gSprites[spriteId1].oam.tileNum * 32),
0x800,
1);
RequestDma3Copy(gContestResources->boxBlinkTiles2,
- (u8 *)(VRAM + 0x10000 + gSprites[spriteId2].oam.tileNum * 32),
+ (u8 *)(OBJ_VRAM0 + gSprites[spriteId2].oam.tileNum * 32),
0x800,
1);
@@ -4480,14 +4482,17 @@ static void CalculateAppealMoveImpact(u8 contestant)
eContestantStatus[contestant].comboAppealBonus = eContestantStatus[contestant].baseAppeal * eContestantStatus[contestant].completedCombo;
eContestantStatus[contestant].completedComboFlag = TRUE; // Redundant with completedCombo, used by AI
}
- else if (gContestMoves[eContestantStatus[contestant].currMove].comboStarterId != 0)
- {
- eContestantStatus[contestant].hasJudgesAttention = TRUE;
- eContestantStatus[contestant].usedComboMove = TRUE;
- }
else
{
- eContestantStatus[contestant].hasJudgesAttention = FALSE;
+ if (gContestMoves[eContestantStatus[contestant].currMove].comboStarterId != 0)
+ {
+ eContestantStatus[contestant].hasJudgesAttention = TRUE;
+ eContestantStatus[contestant].usedComboMove = TRUE;
+ }
+ else
+ {
+ eContestantStatus[contestant].hasJudgesAttention = FALSE;
+ }
}
}
if (eContestantStatus[contestant].repeatedMove)
@@ -4728,8 +4733,8 @@ static void UpdateApplauseMeter(void)
src = &gContestApplauseMeterGfx[64];
else
src = gContestApplauseMeterGfx;
- CpuCopy32(src, (void *)(VRAM + 0x10000 + (gSprites[eContest.applauseMeterSpriteId].oam.tileNum + 17 + i) * 32), 32);
- CpuCopy32(src + 32, (void *)(VRAM + 0x10000 + (gSprites[eContest.applauseMeterSpriteId].oam.tileNum + 25 + i) * 32), 32);
+ CpuCopy32(src, (void *)(OBJ_VRAM0 + (gSprites[eContest.applauseMeterSpriteId].oam.tileNum + 17 + i) * 32), 32);
+ CpuCopy32(src + 32, (void *)(OBJ_VRAM0 + (gSprites[eContest.applauseMeterSpriteId].oam.tileNum + 25 + i) * 32), 32);
if (eContest.applauseLevel > 4)
StartApplauseOverflowAnimation();
@@ -5010,7 +5015,7 @@ static void ShowHideNextTurnGfx(bool8 show)
{
if (eContestantStatus[i].turnOrderMod != 0 && show)
{
- CpuCopy32(GetTurnOrderNumberGfx(i), (void *)(VRAM + 0x10000 + (gSprites[eContestGfxState[i].nextTurnSpriteId].oam.tileNum + 6) * 32), 32);
+ 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].invisible = FALSE;
}
@@ -6093,4 +6098,3 @@ void StripPlayerAndMonNamesForLinkContest(struct ContestPokemon *mon, s32 langua
}
}
-
diff --git a/src/contest_ai.c b/src/contest_ai.c
index 2f048718f..8fe339790 100644
--- a/src/contest_ai.c
+++ b/src/contest_ai.c
@@ -1734,8 +1734,9 @@ static void ContestAICmd_if_user_doesnt_have_exciting_move(void)
// they're checking for an effect. Checking for a specific effect would make more sense,
// but given that effects are normally read as a single byte and this reads 2 bytes, it
// seems reading a move was intended and the AI script is using it incorrectly.
-// In any case, to fix it to correctly check for effects replace the u16 move assignment with
-// u16 move = gContestMoves[gContestMons[eContestAI.contestantId].moves[i]].effect;
+// The fix below aligns the function with how it's used by the script, rather than the apparent
+// intention of its usage
+
static void ContestAICmd_check_user_has_move(void)
{
int hasMove = FALSE;
@@ -1744,7 +1745,12 @@ static void ContestAICmd_check_user_has_move(void)
for (i = 0; i < MAX_MON_MOVES; i++)
{
+ #ifdef BUGFIX
+ u16 move = gContestMoves[gContestMons[eContestAI.contestantId].moves[i]].effect;
+ #else
u16 move = gContestMons[eContestAI.contestantId].moves[i];
+ #endif
+
if (move == targetMove)
{
hasMove = TRUE;
diff --git a/src/contest_painting.c b/src/contest_painting.c
index a0c39dfc7..1602eb94f 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -248,7 +248,7 @@ static void HoldContestPainting(void)
gContestPaintingFadeCounter--;
break;
case 1:
- if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
+ if ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))
{
gContestPaintingState++;
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
@@ -368,19 +368,19 @@ static void InitContestMonPixels(u16 species, u8 whichSprite)
{
HandleLoadSpecialPokePic_DontHandleDeoxys(
&gMonFrontPicTable[species],
- gMonSpritesGfxPtr->sprites[1],
+ gMonSpritesGfxPtr->sprites.ptr[1],
species,
gContestPaintingWinner->personality);
- _InitContestMonPixels(gMonSpritesGfxPtr->sprites[1], gContestPaintingMonPalette, (void *)gContestMonPixels);
+ _InitContestMonPixels(gMonSpritesGfxPtr->sprites.ptr[1], gContestPaintingMonPalette, (void *)gContestMonPixels);
}
else
{
HandleLoadSpecialPokePic_DontHandleDeoxys(
&gMonBackPicTable[species],
- gMonSpritesGfxPtr->sprites[0],
+ gMonSpritesGfxPtr->sprites.ptr[0],
species,
gContestPaintingWinner->personality);
- _InitContestMonPixels(gMonSpritesGfxPtr->sprites[0], gContestPaintingMonPalette, (void *)gContestMonPixels);
+ _InitContestMonPixels(gMonSpritesGfxPtr->sprites.ptr[0], gContestPaintingMonPalette, (void *)gContestMonPixels);
}
}
@@ -397,16 +397,16 @@ static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)
{
for (pixelX = 0; pixelX < 8; pixelX++)
{
- colorIndex = spriteGfx[((tileY * 8) + tileX) * 32 + (pixelY << 2) + (pixelX >> 1)];
+ colorIndex = spriteGfx[32 * (tileY * 8 + tileX) + (pixelY << 2) + (pixelX >> 1)];
if (pixelX & 1)
colorIndex >>= 4;
else
- colorIndex &= 0xF; // %=16 works here too. Both match
+ colorIndex &= 0xF;
- if (colorIndex == 0) // transparent pixel
- (*destPixels)[tileY * 8 + pixelY][tileX * 8 + pixelX] = 0x8000;
+ if (colorIndex == 0) // transparent pixel
+ (*destPixels)[8 * tileY + pixelY][tileX * 8 + pixelX] = 0x8000;
else
- (*destPixels)[tileY * 8 + pixelY][tileX * 8 + pixelX] = palette[colorIndex];
+ (*destPixels)[8 * tileY + pixelY][tileX * 8 + pixelX] = palette[colorIndex];
}
}
}
@@ -501,20 +501,19 @@ static void LoadContestPaintingFrame(u8 contestWinnerId, bool8 arg1)
static void InitPaintingMonOamData(u8 contestWinnerId)
{
- //Some hacks just to get the asm to match
-#ifndef NONMATCHING
- asm(""::"r"(contestWinnerId));
-#endif
-
gMain.oamBuffer[0] = sContestPaintingMonOamData;
gMain.oamBuffer[0].tileNum = 0;
-#ifndef NONMATCHING
- if (contestWinnerId) contestWinnerId = gMain.oamBuffer[0].tileNum;
-#endif
-
- gMain.oamBuffer[0].x = 88;
- gMain.oamBuffer[0].y = 24;
+ if (contestWinnerId > 1)
+ {
+ gMain.oamBuffer[0].x = 88;
+ gMain.oamBuffer[0].y = 24;
+ }
+ else
+ {
+ gMain.oamBuffer[0].x = 88; // Duplicated code
+ gMain.oamBuffer[0].y = 24;
+ }
}
static u8 GetImageEffectForContestWinner(u8 contestWinnerId)
diff --git a/src/contest_util.c b/src/contest_util.c
index c60e885f2..e690a3bbe 100644
--- a/src/contest_util.c
+++ b/src/contest_util.c
@@ -166,11 +166,6 @@ static void SpriteCB_Confetti(struct Sprite *sprite);
static void Task_ShowContestEntryMonPic(u8 taskId);
static void Task_LinkContestWaitForConnection(u8 taskId);
-extern const u16 gObjectEventPalette8[];
-extern const u16 gObjectEventPalette17[];
-extern const u16 gObjectEventPalette33[];
-extern const u16 gObjectEventPalette34[];
-
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 sMiscBlank_Pal[] = INCBIN_U16("graphics/interface/blank.gbapal");
@@ -192,18 +187,18 @@ static const struct OamData sOamData_858D7F0 =
.affineParam = 0,
};
-static const struct SpriteTemplate sSpriteTemplate_858D7F8 =
+static const struct SpriteTemplate sSpriteTemplate_858D7F8 =
{
- .tileTag = 3009,
- .paletteTag = 3009,
- .oam = &sOamData_858D7F0,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
+ .tileTag = 3009,
+ .paletteTag = 3009,
+ .oam = &sOamData_858D7F0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteSheet sUnknown_0858D810[] =
+static const struct SpriteSheet sUnknown_0858D810[] =
{
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3009 },
{ .data = gMiscBlank_Gfx, .size = 0x400, .tag = 3010 },
@@ -240,26 +235,26 @@ static const struct OamData sOamData_Confetti =
static const struct SpriteTemplate sSpriteTemplate_Confetti =
{
- .tileTag = TAG_CONFETTI,
- .paletteTag = TAG_CONFETTI,
- .oam = &sOamData_Confetti,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
+ .tileTag = TAG_CONFETTI,
+ .paletteTag = TAG_CONFETTI,
+ .oam = &sOamData_Confetti,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_Confetti
};
static const struct CompressedSpriteSheet sSpriteSheet_Confetti =
{
- .data = gConfetti_Gfx,
- .size = 0x220,
+ .data = gConfetti_Gfx,
+ .size = 0x220,
.tag = TAG_CONFETTI
};
static const struct CompressedSpritePalette sSpritePalette_Confetti =
{
- .data = gConfetti_Pal,
+ .data = gConfetti_Pal,
.tag = TAG_CONFETTI
};
@@ -282,7 +277,7 @@ static const struct BgTemplate sBgTemplates[] =
.paletteMode = 0,
.priority = 3,
.baseTile = 0,
- },
+ },
{
.bg = 2,
.charBaseIndex = 0,
@@ -291,7 +286,7 @@ static const struct BgTemplate sBgTemplates[] =
.paletteMode = 0,
.priority = 3,
.baseTile = 0,
- },
+ },
{
.bg = 3,
.charBaseIndex = 0,
@@ -306,39 +301,39 @@ static const struct BgTemplate sBgTemplates[] =
static const struct WindowTemplate sWindowTemplates[] =
{
{
- .bg = 1,
- .tilemapLeft = 7,
- .tilemapTop = 4,
- .width = 12,
- .height = 2,
- .paletteNum = 15,
+ .bg = 1,
+ .tilemapLeft = 7,
+ .tilemapTop = 4,
+ .width = 12,
+ .height = 2,
+ .paletteNum = 15,
.baseBlock = 770
},
{
- .bg = 1,
- .tilemapLeft = 7,
- .tilemapTop = 7,
- .width = 12,
- .height = 2,
- .paletteNum = 15,
+ .bg = 1,
+ .tilemapLeft = 7,
+ .tilemapTop = 7,
+ .width = 12,
+ .height = 2,
+ .paletteNum = 15,
.baseBlock = 794
},
{
- .bg = 1,
- .tilemapLeft = 7,
- .tilemapTop = 10,
- .width = 12,
- .height = 2,
- .paletteNum = 15,
+ .bg = 1,
+ .tilemapLeft = 7,
+ .tilemapTop = 10,
+ .width = 12,
+ .height = 2,
+ .paletteNum = 15,
.baseBlock = 818
},
{
- .bg = 1,
- .tilemapLeft = 7,
- .tilemapTop = 13,
- .width = 12,
- .height = 2,
- .paletteNum = 15,
+ .bg = 1,
+ .tilemapLeft = 7,
+ .tilemapTop = 13,
+ .width = 12,
+ .height = 2,
+ .paletteNum = 15,
.baseBlock = 842
},
DUMMY_WIN_TEMPLATE,
@@ -364,19 +359,19 @@ static const struct OamData sUnknown_0858D8C0 =
static const struct SpriteTemplate sSpriteTemplate_858D8C8 =
{
- .tileTag = 22222,
- .paletteTag = 0,
- .oam = &sUnknown_0858D8C0,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
+ .tileTag = 22222,
+ .paletteTag = 0,
+ .oam = &sUnknown_0858D8C0,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteSheet sUnknown_0858D8E0 =
+static const struct SpriteSheet sUnknown_0858D8E0 =
{
- .data = gMiscBlank_Gfx,
- .size = 0x200,
+ .data = gMiscBlank_Gfx,
+ .size = 0x200,
.tag = 22222
};
@@ -880,7 +875,7 @@ static void Task_ShowWinnerMonBanner(u8 taskId)
{
HandleLoadSpecialPokePic_2(
&gMonFrontPicTable[species],
- gMonSpritesGfxPtr->sprites[1],
+ gMonSpritesGfxPtr->sprites.ptr[1],
species,
personality);
}
@@ -888,7 +883,7 @@ static void Task_ShowWinnerMonBanner(u8 taskId)
{
HandleLoadSpecialPokePic_DontHandleDeoxys(
&gMonFrontPicTable[species],
- gMonSpritesGfxPtr->sprites[1],
+ gMonSpritesGfxPtr->sprites.ptr[1],
species,
personality);
}
@@ -1148,28 +1143,21 @@ static void TryCreateWirelessSprites(void)
}
}
-// Functionally equivalent, the same except compiler generated variables from
-// src are placed on different stack positions.
-
-#ifdef NONMATCHING
static s32 DrawResultsTextWindow(const u8 *text, u8 spriteId)
{
- u8 *windowTilesPtr;
u16 windowId;
int origWidth;
- struct WindowTemplate windowTemplate;
int strWidth;
u8 *spriteTilePtrs[4];
u8 *dst;
- int i;
- struct Sprite *sprite;
- const u8 *src; // The culprit.
-
- 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;
@@ -1177,321 +1165,49 @@ static s32 DrawResultsTextWindow(const u8 *text, u8 spriteId)
strWidth = 30;
AddTextPrinterParameterized3(windowId, 1, (strWidth * 8 - origWidth) / 2, 1, sContestLinkTextColors, -1, text);
- windowTilesPtr = (u8 *)(GetWindowAttribute(windowId, WINDOW_TILE_DATA));
- src = (u8 *)(sUnknown_0858D6D0);
-
- sprite = &gSprites[spriteId];
- spriteTilePtrs[0] = (u8 *)(sprite->oam.tileNum * 32 + VRAM + 0x10000);
-
- for (i = 1; i < 4; i++)
- spriteTilePtrs[i] = (void*)(gSprites[sprite->data[i - 1]].oam.tileNum * 32 + VRAM + 0x10000);
-
- for (i = 0; i < 4; i++)
- CpuFill32(0, spriteTilePtrs[i], 0x400);
-
- dst = spriteTilePtrs[0];
- CpuCopy32(src, dst, 0x20);
- CpuCopy32(src + 128, dst + 0x100, 0x20);
- CpuCopy32(src + 128, dst + 0x200, 0x20);
- CpuCopy32(src + 64, dst + 0x300, 0x20);
-
- for (i = 0; i < strWidth; i++)
{
+ s32 i;
+ struct Sprite *sprite;
+ const u8 *src, *windowTilesPtr;
+ windowTilesPtr = (u8 *)(GetWindowAttribute(windowId, WINDOW_TILE_DATA));
+ src = (u8 *)(sUnknown_0858D6D0);
+
+ sprite = &gSprites[spriteId];
+ spriteTilePtrs[0] = (u8 *)(sprite->oam.tileNum * 32 + OBJ_VRAM0);
+
+ for (i = 1; i < 4; i++)
+ spriteTilePtrs[i] = (void*)(gSprites[sprite->data[i - 1]].oam.tileNum * 32 + OBJ_VRAM0);
+
+ for (i = 0; i < 4; i++)
+ CpuFill32(0, spriteTilePtrs[i], 0x400);
+
+ dst = spriteTilePtrs[0];
+ CpuCopy32(src, dst, 0x20);
+ CpuCopy32(src + 128, dst + 0x100, 0x20);
+ CpuCopy32(src + 128, dst + 0x200, 0x20);
+ CpuCopy32(src + 64, dst + 0x300, 0x20);
+
+ for (i = 0; i < strWidth; i++)
+ {
+ dst = &spriteTilePtrs[(i + 1) / 8][((i + 1) % 8) * 32];
+ CpuCopy32(src + 192, dst, 0x20);
+ CpuCopy32(windowTilesPtr, dst + 0x100, 0x20);
+ CpuCopy32(windowTilesPtr + 960, dst + 0x200, 0x20);
+ CpuCopy32(src + 224, dst + 0x300, 0x20);
+ windowTilesPtr += 0x20;
+ }
+
dst = &spriteTilePtrs[(i + 1) / 8][((i + 1) % 8) * 32];
- CpuCopy32(src + 192, dst, 0x20);
- CpuCopy32(windowTilesPtr, dst + 0x100, 0x20);
- CpuCopy32(windowTilesPtr + 960, dst + 0x200, 0x20);
- CpuCopy32(src + 224, dst + 0x300, 0x20);
- windowTilesPtr += 0x20;
- }
-
- dst = &spriteTilePtrs[(i + 1) / 8][((i + 1) % 8) * 32];
- CpuCopy32(src + 32, dst, 0x20);
- CpuCopy32(src + 160, dst + 0x100, 0x20);
- CpuCopy32(src + 160, dst + 0x200, 0x20);
- CpuCopy32(src + 96, dst + 0x300, 0x20);
+ CpuCopy32(src + 32, dst, 0x20);
+ CpuCopy32(src + 160, dst + 0x100, 0x20);
+ CpuCopy32(src + 160, dst + 0x200, 0x20);
+ CpuCopy32(src + 96, dst + 0x300, 0x20);
+ }
RemoveWindow(windowId);
return (240 - (strWidth + 2) * 8) / 2;
}
-#else
-NAKED
-static s32 DrawResultsTextWindow(const u8 *text, u8 spriteId)
-{
- asm_unified("\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x44\n\
- adds r5, r0, 0\n\
- lsls r1, 24\n\
- lsrs r7, r1, 24\n\
- add r4, sp, 0x20\n\
- adds r0, r4, 0\n\
- movs r1, 0\n\
- movs r2, 0x8\n\
- bl memset\n\
- movs r0, 0x1E\n\
- strb r0, [r4, 0x3]\n\
- movs r0, 0x2\n\
- strb r0, [r4, 0x4]\n\
- adds r0, r4, 0\n\
- bl AddWindow\n\
- lsls r6, r0, 24\n\
- lsrs r4, r6, 24\n\
- adds r0, r4, 0\n\
- movs r1, 0x11\n\
- bl FillWindowPixelBuffer\n\
- movs r0, 0x1\n\
- adds r1, r5, 0\n\
- movs r2, 0\n\
- bl GetStringWidth\n\
- adds r2, r0, 0\n\
- adds r2, 0x9\n\
- cmp r2, 0\n\
- bge _080F6BC4\n\
- adds r2, 0x7\n\
-_080F6BC4:\n\
- asrs r2, 3\n\
- mov r10, r2\n\
- cmp r2, 0x1E\n\
- ble _080F6BD0\n\
- movs r1, 0x1E\n\
- mov r10, r1\n\
-_080F6BD0:\n\
- mov r1, r10\n\
- lsls r2, r1, 3\n\
- subs r2, r0\n\
- lsrs r0, r2, 31\n\
- adds r2, r0\n\
- asrs r2, 1\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- ldr r0, =sContestLinkTextColors\n\
- str r0, [sp]\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- str r0, [sp, 0x4]\n\
- str r5, [sp, 0x8]\n\
- adds r0, r4, 0\n\
- movs r1, 0x1\n\
- movs r3, 0x1\n\
- bl AddTextPrinterParameterized3\n\
- adds r0, r4, 0\n\
- movs r1, 0x7\n\
- bl GetWindowAttribute\n\
- mov r9, r0\n\
- ldr r2, =sUnknown_0858D6D0\n\
- mov r8, r2\n\
- lsls r1, r7, 4\n\
- adds r1, r7\n\
- lsls r1, 2\n\
- ldr r3, =gSprites\n\
- adds r1, r3\n\
- ldrh r0, [r1, 0x4]\n\
- lsls r0, 22\n\
- lsrs r0, 17\n\
- ldr r2, =0x06010000\n\
- adds r0, r2\n\
- str r0, [sp, 0xC]\n\
- str r6, [sp, 0x38]\n\
- mov r7, sp\n\
- adds r7, 0x1C\n\
- str r7, [sp, 0x2C]\n\
- mov r0, r10\n\
- adds r0, 0x2\n\
- str r0, [sp, 0x30]\n\
- movs r5, 0\n\
- add r7, sp, 0x10\n\
- mov r12, r7\n\
- adds r6, r1, 0\n\
- adds r6, 0x2E\n\
- movs r4, 0x2\n\
-_080F6C34:\n\
- adds r0, r6, r5\n\
- movs r7, 0\n\
- ldrsh r1, [r0, r7]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- ldrh r0, [r0, 0x4]\n\
- lsls r0, 22\n\
- lsrs r0, 17\n\
- adds r0, r2\n\
- mov r1, r12\n\
- adds r1, 0x4\n\
- mov r12, r1\n\
- subs r1, 0x4\n\
- stm r1!, {r0}\n\
- adds r5, 0x2\n\
- subs r4, 0x1\n\
- cmp r4, 0\n\
- bge _080F6C34\n\
- mov r7, r8\n\
- adds r7, 0x80\n\
- mov r2, r8\n\
- adds r2, 0x40\n\
- str r2, [sp, 0x28]\n\
- mov r0, r8\n\
- adds r0, 0x20\n\
- str r0, [sp, 0x3C]\n\
- mov r1, r8\n\
- adds r1, 0xA0\n\
- str r1, [sp, 0x40]\n\
- adds r2, 0x20\n\
- str r2, [sp, 0x34]\n\
- add r5, sp, 0xC\n\
- movs r6, 0\n\
- movs r4, 0x3\n\
-_080F6C7C:\n\
- str r6, [sp, 0x1C]\n\
- ldm r5!, {r1}\n\
- ldr r0, [sp, 0x2C]\n\
- ldr r2, =0x05000100\n\
- bl CpuSet\n\
- subs r4, 0x1\n\
- cmp r4, 0\n\
- bge _080F6C7C\n\
- ldr r5, [sp, 0xC]\n\
- ldr r6, =0x04000008\n\
- mov r0, r8\n\
- adds r1, r5, 0\n\
- adds r2, r6, 0\n\
- bl CpuSet\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- adds r1, r5, r0\n\
- adds r0, r7, 0\n\
- adds r2, r6, 0\n\
- bl CpuSet\n\
- movs r2, 0x80\n\
- lsls r2, 2\n\
- adds r1, r5, r2\n\
- adds r0, r7, 0\n\
- adds r2, r6, 0\n\
- bl CpuSet\n\
- movs r7, 0xC0\n\
- lsls r7, 2\n\
- adds r1, r5, r7\n\
- ldr r0, [sp, 0x28]\n\
- adds r2, r6, 0\n\
- bl CpuSet\n\
- movs r4, 0\n\
- cmp r4, r10\n\
- bge _080F6D32\n\
- adds r7, r6, 0\n\
-_080F6CCE:\n\
- adds r6, r4, 0x1\n\
- adds r0, r6, 0\n\
- cmp r6, 0\n\
- bge _080F6CDA\n\
- adds r0, r4, 0\n\
- adds r0, 0x8\n\
-_080F6CDA:\n\
- asrs r0, 3\n\
- lsls r1, r0, 2\n\
- add r1, sp\n\
- adds r1, 0xC\n\
- lsls r0, 3\n\
- subs r0, r6, r0\n\
- lsls r0, 5\n\
- ldr r1, [r1]\n\
- adds r5, r1, r0\n\
- mov r0, r8\n\
- adds r0, 0xC0\n\
- adds r1, r5, 0\n\
- adds r2, r7, 0\n\
- bl CpuSet\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- adds r1, r5, r0\n\
- mov r0, r9\n\
- adds r2, r7, 0\n\
- bl CpuSet\n\
- movs r0, 0xF0\n\
- lsls r0, 2\n\
- add r0, r9\n\
- movs r2, 0x80\n\
- lsls r2, 2\n\
- adds r1, r5, r2\n\
- adds r2, r7, 0\n\
- bl CpuSet\n\
- movs r0, 0xC0\n\
- lsls r0, 2\n\
- adds r1, r5, r0\n\
- mov r0, r8\n\
- adds r0, 0xE0\n\
- adds r2, r7, 0\n\
- bl CpuSet\n\
- movs r1, 0x20\n\
- add r9, r1\n\
- adds r4, r6, 0\n\
- cmp r4, r10\n\
- blt _080F6CCE\n\
-_080F6D32:\n\
- adds r2, r4, 0x1\n\
- adds r0, r2, 0\n\
- cmp r2, 0\n\
- bge _080F6D3E\n\
- adds r0, r4, 0\n\
- adds r0, 0x8\n\
-_080F6D3E:\n\
- asrs r0, 3\n\
- lsls r1, r0, 2\n\
- add r1, sp\n\
- adds r1, 0xC\n\
- lsls r0, 3\n\
- subs r0, r2, r0\n\
- lsls r0, 5\n\
- ldr r1, [r1]\n\
- adds r5, r1, r0\n\
- ldr r4, =0x04000008\n\
- ldr r0, [sp, 0x3C]\n\
- adds r1, r5, 0\n\
- adds r2, r4, 0\n\
- bl CpuSet\n\
- movs r2, 0x80\n\
- lsls r2, 1\n\
- adds r1, r5, r2\n\
- ldr r0, [sp, 0x40]\n\
- adds r2, r4, 0\n\
- bl CpuSet\n\
- movs r7, 0x80\n\
- lsls r7, 2\n\
- adds r1, r5, r7\n\
- ldr r0, [sp, 0x40]\n\
- adds r2, r4, 0\n\
- bl CpuSet\n\
- movs r0, 0xC0\n\
- lsls r0, 2\n\
- adds r1, r5, r0\n\
- ldr r0, [sp, 0x34]\n\
- adds r2, r4, 0\n\
- bl CpuSet\n\
- ldr r1, [sp, 0x38]\n\
- lsrs r0, r1, 24\n\
- bl RemoveWindow\n\
- ldr r2, [sp, 0x30]\n\
- lsls r1, r2, 3\n\
- movs r0, 0xF0\n\
- subs r0, r1\n\
- asrs r0, 1\n\
- add sp, 0x44\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .pool");
-}
-#endif // NONMATCHING
-
static void LoadContestResultSprites(void)
{
int i;
@@ -2767,16 +2483,16 @@ void LoadLinkContestPlayerPalettes(void)
if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
{
if (gLinkPlayers[i].gender == MALE)
- LoadPalette(gObjectEventPalette33, 0x160 + i * 0x10, 0x20);
+ LoadPalette(gObjectEventPal_RubySapphireBrendan, 0x160 + i * 0x10, 0x20);
else
- LoadPalette(gObjectEventPalette34, 0x160 + i * 0x10, 0x20);
+ LoadPalette(gObjectEventPal_RubySapphireMay, 0x160 + i * 0x10, 0x20);
}
else
{
if (gLinkPlayers[i].gender == MALE)
- LoadPalette(gObjectEventPalette8, 0x160 + i * 0x10, 0x20);
+ LoadPalette(gObjectEventPal_Brendan, 0x160 + i * 0x10, 0x20);
else
- LoadPalette(gObjectEventPalette17, 0x160 + i * 0x10, 0x20);
+ LoadPalette(gObjectEventPal_May, 0x160 + i * 0x10, 0x20);
}
}
}
@@ -2787,8 +2503,8 @@ bool8 GiveMonArtistRibbon(void)
u8 hasArtistRibbon;
hasArtistRibbon = GetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_ARTIST_RIBBON);
- if (!hasArtistRibbon
- && gContestFinalStandings[gContestPlayerMonIndex] == 0
+ if (!hasArtistRibbon
+ && gContestFinalStandings[gContestPlayerMonIndex] == 0
&& gSpecialVar_ContestRank == CONTEST_RANK_MASTER
&& gContestMonTotalPoints[gContestPlayerMonIndex] >= 800)
{
@@ -2831,9 +2547,9 @@ void ShowContestEntryMonPic(void)
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = species;
if (gSpecialVar_0x8006 == gContestPlayerMonIndex)
- HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality);
+ HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[1], species, personality);
else
- HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality);
+ HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[1], species, personality);
palette = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality);
LoadCompressedSpritePalette(palette);
@@ -2905,8 +2621,8 @@ static void Task_ShowContestEntryMonPic(u8 taskId)
void GetContestMultiplayerId(void)
{
- if ((gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
- && gNumLinkContestPlayers == CONTESTANT_COUNT
+ if ((gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK)
+ && gNumLinkContestPlayers == CONTESTANT_COUNT
&& !(gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS))
gSpecialVar_Result = GetMultiplayerId();
else
diff --git a/src/credits.c b/src/credits.c
index 020221f30..41d1c1686 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -22,7 +22,6 @@
#include "pokedex.h"
#include "event_data.h"
#include "random.h"
-#include "constants/species.h"
enum
{
@@ -1143,7 +1142,7 @@ static void CB2_RunCreditsSequence(void)
RunTasks();
AnimateSprites();
- if ((gMain.heldKeys & B_BUTTON)
+ if ((JOY_HELD(B_BUTTON))
&& gHasHallOfFameRecords != 0
&& gTasks[gUnknown_0203BCE2].func == Task_ProgressCreditTasks)
{
@@ -1160,7 +1159,7 @@ static void sub_8175548(void)
{
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sBackgroundTemplates, 1);
- SetBgTilemapBuffer(0, AllocZeroed(0x800));
+ SetBgTilemapBuffer(0, AllocZeroed(BG_SCREEN_SIZE));
LoadPalette(gUnknown_085E56F0, 0x80, 0x40);
InitWindows(sWindowTemplates);
DeactivateAllTextPrinters();
diff --git a/src/crt0.s b/src/crt0.s
index cb7c93a6b..49f214f80 100644
--- a/src/crt0.s
+++ b/src/crt0.s
@@ -91,6 +91,10 @@ Init: @ 8000204
ldr r1, =INTR_VECTOR
adr r0, IntrMain
str r0, [r1]
+ .if MODERN
+ mov r0, #255 @ RESET_ALL
+ svc #1 << 16
+ .endif @ MODERN
ldr r1, =AgbMain + 1
mov lr, pc
bx r1
diff --git a/src/data.c b/src/data.c
index 8d6640223..4861da18b 100644
--- a/src/data.c
+++ b/src/data.c
@@ -5,7 +5,6 @@
#include "graphics.h"
#include "constants/items.h"
#include "constants/moves.h"
-#include "constants/species.h"
#include "constants/trainers.h"
#include "constants/battle_ai.h"
@@ -296,11 +295,6 @@ const union AnimCmd *const gUnknown_082FF70C[] =
#define SPECIES_PAL(species, pal) [SPECIES_##species] = {pal, SPECIES_##species}
#define SPECIES_SHINY_PAL(species, pal) [SPECIES_##species] = {pal, SPECIES_##species + SPECIES_SHINY_TAG}
-#define TRAINER_SPRITE(trainerPic, sprite, size) [TRAINER_PIC_##trainerPic] = {sprite, size, TRAINER_PIC_##trainerPic}
-#define TRAINER_PAL(trainerPic, pal) [TRAINER_PIC_##trainerPic] = {pal, TRAINER_PIC_##trainerPic}
-
-#define TRAINER_BACK_PAL(trainerPic, pal) [TRAINER_BACK_PIC_##trainerPic] = {pal, TRAINER_BACK_PIC_##trainerPic}
-
#include "data/pokemon_graphics/unknown_anims.h"
#include "data/pokemon_graphics/front_pic_coordinates.h"
#include "data/pokemon_graphics/still_front_pic_table.h"
diff --git a/src/data/bard_music/pokemon.h b/src/data/bard_music/pokemon.h
index 112a5870b..5ccf2f830 100644
--- a/src/data/bard_music/pokemon.h
+++ b/src/data/bard_music/pokemon.h
@@ -1,6 +1,5 @@
#ifndef GUARD_DATA_BARD_MUSIC_POKEMON_H
#define GUARD_DATA_BARD_MUSIC_POKEMON_H
-#include "constants/species.h"
const u16 gNumSpeciesNames = NUM_SPECIES;
diff --git a/src/data/battle_frontier/trainer_hill.h b/src/data/battle_frontier/trainer_hill.h
index cfd5dd994..1b41024d0 100644
--- a/src/data/battle_frontier/trainer_hill.h
+++ b/src/data/battle_frontier/trainer_hill.h
@@ -1,5 +1,11 @@
#define TRAINER_HILL_OTID 0x10000000
+// NOTE: Each of these macros turn data into one byte. Therefore ranges for all arguments is 0-15
+// See struct TrHillDisplay for more info about each
+#define COORDS_XY(x,y) ((y<<4)|(x))
+#define TRAINER_DIRS(a, b) (((a-1)<<4)|(b-1))
+#define TRAINER_RANGE(a, b) ((a<<4)|(b))
+
static const struct TrHillTag sDataTagJPDefault = {
.numTrainers = NUM_TRAINER_HILL_TRAINERS_JP,
.unused1 = 1,
@@ -187,11 +193,28 @@ static const struct TrHillFloor sDataTagJPDefault_Floors[] = {
},
},
.display = {
- .data = { 0x31, 0x35, 0x35, 0x3b, 0x26, 0x26, 0x1b, 0x1c, 0x1d, 0x25, 0x39, 0x3a, 0x3b, 0x3b, 0x3b, 0x8, 0x31, 0x2b, 0x2b, 0x3b, 0x34, 0x34, 0x2b, 0x2b, 0x34, 0x33, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x8, 0x31, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x34, 0x34, 0x3b, 0x33, 0x3f, 0x3f, 0x3f, 0x3b, 0x3b, 0x8, 0x31, 0x2b, 0x2b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x3b, 0x33, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f, 0x8, 0x31, 0x2b, 0x34, 0x34, 0x34, 0x2b, 0x34, 0x34, 0x3b, 0x2c, 0x3f, 0x3f, 0x3f, 0x3b, 0x3b, 0x8, 0x31, 0x2b, 0x3b, 0x35, 0x3b, 0x2b, 0x3b, 0x35, 0x3b, 0x35, 0x3b, 0x3f, 0x3f, 0x3f, 0x3b, 0x8, 0x31, 0x2b, 0x3b, 0x2b, 0x3b, 0x2b, 0x3b, 0x2b, 0x3b, 0x2b, 0x3b, 0x3f, 0x3f, 0x3f, 0x3b, 0x8, 0x31, 0x34, 0x3b, 0x2b, 0x3b, 0x34, 0x3b, 0x2b, 0x35, 0x2b, 0x3b, 0x3b, 0x3f, 0x3b, 0x3b, 0x8, 0x31, 0x3b, 0x3b, 0x34, 0x3b, 0x3b, 0x3b, 0x34, 0x34, 0x34, 0x3f, 0x3b, 0x3b, 0x3b, 0x3f, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8 },
- .unk3A0 = { 0x381, 0x6fc1, 0x6341, 0x6041, 0x7f41, 0x4401, 0x5541, 0x5541, 0x11c1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff },
- .coords = { 0x28, 0x78 },
- .direction = 0x1,
- .range = 0x23
+ .metatileData = {
+ 0x31, 0x35, 0x35, 0x3b, 0x26, 0x26, 0x1b, 0x1c, 0x1d, 0x25, 0x39, 0x3a, 0x3b, 0x3b, 0x3b, 0x08,
+ 0x31, 0x2b, 0x2b, 0x3b, 0x34, 0x34, 0x2b, 0x2b, 0x34, 0x33, 0x3f, 0x3f, 0x3f, 0x3f, 0x3b, 0x08,
+ 0x31, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x34, 0x34, 0x3b, 0x33, 0x3f, 0x3f, 0x3f, 0x3b, 0x3b, 0x08,
+ 0x31, 0x2b, 0x2b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x3b, 0x33, 0x3f, 0x3f, 0x3f, 0x3b, 0x3f, 0x08,
+ 0x31, 0x2b, 0x34, 0x34, 0x34, 0x2b, 0x34, 0x34, 0x3b, 0x2c, 0x3f, 0x3f, 0x3f, 0x3b, 0x3b, 0x08,
+ 0x31, 0x2b, 0x3b, 0x35, 0x3b, 0x2b, 0x3b, 0x35, 0x3b, 0x35, 0x3b, 0x3f, 0x3f, 0x3f, 0x3b, 0x08,
+ 0x31, 0x2b, 0x3b, 0x2b, 0x3b, 0x2b, 0x3b, 0x2b, 0x3b, 0x2b, 0x3b, 0x3f, 0x3f, 0x3f, 0x3b, 0x08,
+ 0x31, 0x34, 0x3b, 0x2b, 0x3b, 0x34, 0x3b, 0x2b, 0x35, 0x2b, 0x3b, 0x3b, 0x3f, 0x3b, 0x3b, 0x08,
+ 0x31, 0x3b, 0x3b, 0x34, 0x3b, 0x3b, 0x3b, 0x34, 0x34, 0x34, 0x3f, 0x3b, 0x3b, 0x3b, 0x3f, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ },
+ .collisionData = { 0x0381, 0x6fc1, 0x6341, 0x6041, 0x7f41, 0x4401, 0x5541, 0x5541, 0x11c1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff },
+ .coords = { COORDS_XY(8,2), COORDS_XY(8,7) },
+ .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH),
+ .range = TRAINER_RANGE(2, 3)
}
},
[1] = {
@@ -372,11 +395,28 @@ static const struct TrHillFloor sDataTagJPDefault_Floors[] = {
},
},
.display = {
- .data = { 0x31, 0x3b, 0x35, 0x3b, 0x39, 0x26, 0x1b, 0x1c, 0x1d, 0x25, 0x39, 0x3a, 0x3b, 0x35, 0x3b, 0x8, 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x2b, 0x3b, 0x8, 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3e, 0x3e, 0x3b, 0x2b, 0x3b, 0x8, 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x2b, 0x3b, 0x8, 0x3f, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3b, 0x3e, 0x3e, 0x2b, 0x3b, 0x8, 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2c, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x2b, 0x3b, 0x8, 0x31, 0x3f, 0x2b, 0x3b, 0x3b, 0x2c, 0x2c, 0x3b, 0x2c, 0x2c, 0x3e, 0x3e, 0x3b, 0x2b, 0x3b, 0x8, 0x31, 0x3b, 0x2b, 0x35, 0x35, 0x35, 0x35, 0x3b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x2b, 0x3b, 0x8, 0x3f, 0x3b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x3b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x3b, 0x8, 0x31, 0x3b, 0x3f, 0x3f, 0x3b, 0x35, 0x35, 0x3b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x8, 0x31, 0x3f, 0x3f, 0x3f, 0x3b, 0x2b, 0x2b, 0x35, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x8, 0x31, 0x3f, 0x3f, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x8, 0x31, 0x3b, 0x3b, 0x3b, 0x3f, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8 },
- .unk3A0 = { 0x381, 0x27c5, 0x27c5, 0x27c5, 0x27c5, 0x27c5, 0x26c5, 0x2005, 0x3efd, 0x1, 0x6ff, 0x7ff, 0x7ff, 0xffff, 0xffff, 0xffff },
- .coords = { 0x67, 0xa7 },
- .direction = 0x1,
- .range = 0x33
+ .metatileData = {
+ 0x31, 0x3b, 0x35, 0x3b, 0x39, 0x26, 0x1b, 0x1c, 0x1d, 0x25, 0x39, 0x3a, 0x3b, 0x35, 0x3b, 0x08,
+ 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x2b, 0x3b, 0x08,
+ 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3e, 0x3e, 0x3b, 0x2b, 0x3b, 0x08,
+ 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x2b, 0x3b, 0x08,
+ 0x3f, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x3b, 0x3e, 0x3e, 0x2b, 0x3b, 0x08,
+ 0x31, 0x3b, 0x2b, 0x3b, 0x3b, 0x2b, 0x2b, 0x2c, 0x2b, 0x2b, 0x3b, 0x3b, 0x3b, 0x2b, 0x3b, 0x08,
+ 0x31, 0x3f, 0x2b, 0x3b, 0x3b, 0x2c, 0x2c, 0x3b, 0x2c, 0x2c, 0x3e, 0x3e, 0x3b, 0x2b, 0x3b, 0x08,
+ 0x31, 0x3b, 0x2b, 0x35, 0x35, 0x35, 0x35, 0x3b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x2b, 0x3b, 0x08,
+ 0x3f, 0x3b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x3b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x3b, 0x08,
+ 0x31, 0x3b, 0x3f, 0x3f, 0x3b, 0x35, 0x35, 0x3b, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x08,
+ 0x31, 0x3f, 0x3f, 0x3f, 0x3b, 0x2b, 0x2b, 0x35, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x08,
+ 0x31, 0x3f, 0x3f, 0x3b, 0x3b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x08,
+ 0x31, 0x3b, 0x3b, 0x3b, 0x3f, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ },
+ .collisionData = { 0x0381, 0x27c5, 0x27c5, 0x27c5, 0x27c5, 0x27c5, 0x26c5, 0x2005, 0x3efd, 0x1, 0x6ff, 0x7ff, 0x7ff, 0xffff, 0xffff, 0xffff },
+ .coords = { COORDS_XY(7,6), COORDS_XY(7,10) },
+ .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH),
+ .range = TRAINER_RANGE(3, 3)
}
},
};
@@ -686,11 +726,28 @@ static const struct TrHillFloor sDataTagNormal_Floors[] =
},
},
.display = {
- .data = {0x31, 0x3B, 0x35, 0x35, 0x26, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x26, 0x3A, 0x3B, 0x35, 0x3B, 0x8, 0x31, 0x3B, 0x2C, 0x2C, 0x2C, 0x2B, 0x24, 0x24, 0x24, 0x24, 0x2C, 0x3B, 0x3B, 0x2C, 0x3B, 0x8, 0x2D, 0x3B, 0x3B, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x3B, 0x3B, 0x35, 0x3B, 0x35, 0x35, 0x3B, 0x8, 0x33, 0x3B, 0x32, 0x21, 0x30, 0x2B, 0x3B, 0x32, 0x21, 0x30, 0x2B, 0x3B, 0x2C, 0x2B, 0x3B, 0x8, 0x33, 0x35, 0x3B, 0x3B, 0x3B, 0x2C, 0x35, 0x3B, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x2B, 0x3B, 0x8, 0x34, 0x2C, 0x3B, 0x32, 0x21, 0x30, 0x2B, 0x32, 0x30, 0x3B, 0x2B, 0x32, 0x30, 0x2C, 0x3B, 0x8, 0x31, 0x35, 0x3B, 0x3B, 0x35, 0x3B, 0x2C, 0x3B, 0x3B, 0x35, 0x2C, 0x3B, 0x3B, 0x35, 0x35, 0x8, 0x31, 0x2C, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x35, 0x3B, 0x2B, 0x32, 0x21, 0x30, 0x2C, 0x2C, 0x8, 0x31, 0x35, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x2B, 0x3B, 0x2C, 0x3B, 0x35, 0x3B, 0x3B, 0x3B, 0x8, 0x31, 0x2C, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x2B, 0x3B, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x3B, 0x8, 0x31, 0x35, 0x35, 0x35, 0x2B, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x35, 0x2B, 0x3B, 0x35, 0x35, 0x8, 0x31, 0x2B, 0x2C, 0x2C, 0x2C, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x2C, 0x2C, 0x3B, 0x2C, 0x2C, 0x8, 0x31, 0x2B, 0x3B, 0x3B, 0x35, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x35, 0x3B, 0x3B, 0x3B, 0x3B, 0x8, 0x31, 0x2C, 0x32, 0x30, 0x2B, 0x3B, 0x3B, 0x2C, 0x32, 0x30, 0x2C, 0x32, 0x30, 0x3B, 0x35, 0x8, 0x31, 0x3B, 0x3B, 0x3B, 0x2C, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x2C, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x3FE5, 0x401, 0xBDED, 0x8425, 0xDFBD, 0x221, 0x7E7F, 0x941, 0x7F7D, 0x911, 0x7FF7, 0x4101, 0x79F9, 0x803, 0xFFFF},
- .coords = {27, 45},
- .direction = 0x21,
- .range = 0x21,
+ .metatileData = {
+ 0x31, 0x3B, 0x35, 0x35, 0x26, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x26, 0x3A, 0x3B, 0x35, 0x3B, 0x08,
+ 0x31, 0x3B, 0x2C, 0x2C, 0x2C, 0x2B, 0x24, 0x24, 0x24, 0x24, 0x2C, 0x3B, 0x3B, 0x2C, 0x3B, 0x08,
+ 0x2D, 0x3B, 0x3B, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x3B, 0x3B, 0x35, 0x3B, 0x35, 0x35, 0x3B, 0x08,
+ 0x33, 0x3B, 0x32, 0x21, 0x30, 0x2B, 0x3B, 0x32, 0x21, 0x30, 0x2B, 0x3B, 0x2C, 0x2B, 0x3B, 0x08,
+ 0x33, 0x35, 0x3B, 0x3B, 0x3B, 0x2C, 0x35, 0x3B, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x2B, 0x3B, 0x08,
+ 0x34, 0x2C, 0x3B, 0x32, 0x21, 0x30, 0x2B, 0x32, 0x30, 0x3B, 0x2B, 0x32, 0x30, 0x2C, 0x3B, 0x08,
+ 0x31, 0x35, 0x3B, 0x3B, 0x35, 0x3B, 0x2C, 0x3B, 0x3B, 0x35, 0x2C, 0x3B, 0x3B, 0x35, 0x35, 0x08,
+ 0x31, 0x2C, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x35, 0x3B, 0x2B, 0x32, 0x21, 0x30, 0x2C, 0x2C, 0x08,
+ 0x31, 0x35, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x2B, 0x3B, 0x2C, 0x3B, 0x35, 0x3B, 0x3B, 0x3B, 0x08,
+ 0x31, 0x2C, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x2B, 0x3B, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x3B, 0x08,
+ 0x31, 0x35, 0x35, 0x35, 0x2B, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x35, 0x2B, 0x3B, 0x35, 0x35, 0x08,
+ 0x31, 0x2B, 0x2C, 0x2C, 0x2C, 0x32, 0x30, 0x2B, 0x32, 0x30, 0x2C, 0x2C, 0x3B, 0x2C, 0x2C, 0x08,
+ 0x31, 0x2B, 0x3B, 0x3B, 0x35, 0x3B, 0x3B, 0x2B, 0x3B, 0x3B, 0x35, 0x3B, 0x3B, 0x3B, 0x3B, 0x08,
+ 0x31, 0x2C, 0x32, 0x30, 0x2B, 0x3B, 0x3B, 0x2C, 0x32, 0x30, 0x2C, 0x32, 0x30, 0x3B, 0x35, 0x08,
+ 0x31, 0x3B, 0x3B, 0x3B, 0x2C, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x2C, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ },
+ .collisionData = {0x0381, 0x3FE5, 0x0401, 0xBDED, 0x8425, 0xDFBD, 0x0221, 0x7E7F, 0x0941, 0x7F7D, 0x0911, 0x7FF7, 0x4101, 0x79F9, 0x0803, 0xFFFF},
+ .coords = {COORDS_XY(11,1), COORDS_XY(13,2)},
+ .direction = TRAINER_DIRS(DIR_WEST, DIR_NORTH),
+ .range = TRAINER_RANGE(2, 1),
}
},
[1] =
@@ -991,11 +1048,28 @@ static const struct TrHillFloor sDataTagNormal_Floors[] =
},
},
.display = {
- .data = {0xD1, 0xD5, 0xD5, 0xD5, 0xD9, 0xD9, 0x1B, 0x1C, 0x1D, 0xC5, 0xC6, 0xCE, 0xD5, 0xDB, 0xD5, 0x8, 0xD1, 0xCB, 0xC4, 0xC4, 0xDB, 0xDB, 0xC4, 0xC4, 0xC4, 0xCC, 0xCC, 0xCC, 0xCB, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xDB, 0x17, 0x17, 0x17, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xCB, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xD5, 0x17, 0x17, 0x17, 0xD5, 0xD5, 0xD5, 0xD5, 0xDF, 0xCB, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xCB, 0x17, 0x17, 0x1F, 0xCB, 0xCB, 0xC4, 0xC4, 0xDB, 0xCB, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xC4, 0xCB, 0xCB, 0xDF, 0xD5, 0xD5, 0xCB, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xDB, 0xC4, 0xC4, 0xCB, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xD5, 0xD5, 0xDF, 0xCB, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xC4, 0xC4, 0xDB, 0xCB, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xDF, 0xD5, 0xD5, 0xCB, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xC4, 0xC4, 0xDB, 0xC4, 0xC4, 0xC4, 0xDB, 0xCB, 0x8, 0xD1, 0xCB, 0xDB, 0xCB, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0xDB, 0xD5, 0xD5, 0xD5, 0xCB, 0x8, 0xD1, 0xC4, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0x8, 0xD1, 0xDB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0x8, 0xD1, 0xDB, 0xDB, 0xC4, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xC4, 0xC4, 0xC4, 0xC4, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x73FB, 0x400B, 0x400B, 0x51EB, 0x538B, 0x51BB, 0x518B, 0x51EB, 0x518B, 0x51BB, 0x5003, 0x501F, 0x101F, 0x101F, 0xFFFF},
- .coords = {180, 233},
- .direction = 0x3,
- .range = 0x35,
+ .metatileData = {
+ 0xD1, 0xD5, 0xD5, 0xD5, 0xD9, 0xD9, 0x1B, 0x1C, 0x1D, 0xC5, 0xC6, 0xCE, 0xD5, 0xDB, 0xD5, 0x08,
+ 0xD1, 0xCB, 0xC4, 0xC4, 0xDB, 0xDB, 0xC4, 0xC4, 0xC4, 0xCC, 0xCC, 0xCC, 0xCB, 0xDB, 0xCB, 0x08,
+ 0xD1, 0xCB, 0xDB, 0xDB, 0x17, 0x17, 0x17, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xCB, 0xDB, 0xCB, 0x08,
+ 0xD1, 0xCB, 0xDB, 0xD5, 0x17, 0x17, 0x17, 0xD5, 0xD5, 0xD5, 0xD5, 0xDF, 0xCB, 0xDB, 0xCB, 0x08,
+ 0xD1, 0xCB, 0xDB, 0xCB, 0x17, 0x17, 0x1F, 0xCB, 0xCB, 0xC4, 0xC4, 0xDB, 0xCB, 0xDB, 0xCB, 0x08,
+ 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xC4, 0xCB, 0xCB, 0xDF, 0xD5, 0xD5, 0xCB, 0xDB, 0xCB, 0x08,
+ 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xDB, 0xC4, 0xC4, 0xCB, 0xDB, 0xCB, 0x08,
+ 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xD5, 0xD5, 0xDF, 0xCB, 0xDB, 0xCB, 0x08,
+ 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xC4, 0xC4, 0xDB, 0xCB, 0xDB, 0xCB, 0x08,
+ 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xCB, 0xCB, 0xDF, 0xD5, 0xD5, 0xCB, 0xDB, 0xCB, 0x08,
+ 0xD1, 0xCB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xC4, 0xC4, 0xDB, 0xC4, 0xC4, 0xC4, 0xDB, 0xCB, 0x08,
+ 0xD1, 0xCB, 0xDB, 0xCB, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0xDB, 0xD5, 0xD5, 0xD5, 0xCB, 0x08,
+ 0xD1, 0xC4, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0x08,
+ 0xD1, 0xDB, 0xDB, 0xCB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0x08,
+ 0xD1, 0xDB, 0xDB, 0xC4, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xC4, 0xC4, 0xC4, 0xC4, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ },
+ .collisionData = {0x0381, 0x73FB, 0x400B, 0x400B, 0x51EB, 0x538B, 0x51BB, 0x518B, 0x51EB, 0x518B, 0x51BB, 0x5003, 0x501F, 0x101F, 0x101F, 0xFFFF},
+ .coords = {COORDS_XY(4,11), COORDS_XY(9,14)},
+ .direction = TRAINER_DIRS(DIR_SOUTH, DIR_EAST),
+ .range = TRAINER_RANGE(3, 5),
}
},
[2] =
@@ -1295,11 +1369,28 @@ static const struct TrHillFloor sDataTagNormal_Floors[] =
},
},
.display = {
- .data = {0x31, 0x35, 0x35, 0x35, 0x26, 0x26, 0x13, 0x14, 0x15, 0x38, 0x26, 0x2E, 0x35, 0x35, 0x3B, 0x8, 0x69, 0x63, 0x64, 0x64, 0x64, 0x64, 0x71, 0x71, 0x71, 0x72, 0x64, 0x64, 0x64, 0x63, 0x73, 0x8, 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x8, 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x8, 0x69, 0x63, 0x43, 0x41, 0x40, 0x41, 0x42, 0x41, 0x41, 0x4A, 0x42, 0x41, 0x41, 0x63, 0x73, 0x8, 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x63, 0x73, 0x8, 0x69, 0x63, 0x41, 0x43, 0x4B, 0x43, 0x43, 0x41, 0x42, 0x42, 0x40, 0x41, 0x40, 0x63, 0x73, 0x8, 0x69, 0x63, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x8, 0x69, 0x63, 0x41, 0x40, 0x42, 0x42, 0x41, 0x41, 0x42, 0x4A, 0x42, 0x41, 0x42, 0x63, 0x73, 0x8, 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x63, 0x73, 0x8, 0x69, 0x63, 0x41, 0x42, 0x41, 0x43, 0x4B, 0x41, 0x41, 0x41, 0x40, 0x43, 0x41, 0x63, 0x73, 0x8, 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x8, 0x69, 0x63, 0x41, 0x40, 0x43, 0x41, 0x42, 0x42, 0x41, 0x4A, 0x42, 0x41, 0x42, 0x63, 0x73, 0x8, 0x69, 0x64, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x64, 0x73, 0x8, 0x69, 0x43, 0x43, 0x41, 0x42, 0x42, 0x41, 0x43, 0x41, 0x41, 0x40, 0x42, 0x41, 0x42, 0x73, 0x8, 0x69, 0x42, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x42, 0x73, 0x8},
- .unk3A0 = {0x381, 0x7C3D, 0x4005, 0x4005, 0x4005, 0x4045, 0x4005, 0x4805, 0x4005, 0x4045, 0x4005, 0x4205, 0x4005, 0x4045, 0x1, 0x1},
- .coords = {37, 41},
- .direction = 0x23,
- .range = 0x33,
+ .metatileData = {
+ 0x31, 0x35, 0x35, 0x35, 0x26, 0x26, 0x13, 0x14, 0x15, 0x38, 0x26, 0x2E, 0x35, 0x35, 0x3B, 0x08,
+ 0x69, 0x63, 0x64, 0x64, 0x64, 0x64, 0x71, 0x71, 0x71, 0x72, 0x64, 0x64, 0x64, 0x63, 0x73, 0x08,
+ 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08,
+ 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08,
+ 0x69, 0x63, 0x43, 0x41, 0x40, 0x41, 0x42, 0x41, 0x41, 0x4A, 0x42, 0x41, 0x41, 0x63, 0x73, 0x08,
+ 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08,
+ 0x69, 0x63, 0x41, 0x43, 0x4B, 0x43, 0x43, 0x41, 0x42, 0x42, 0x40, 0x41, 0x40, 0x63, 0x73, 0x08,
+ 0x69, 0x63, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08,
+ 0x69, 0x63, 0x41, 0x40, 0x42, 0x42, 0x41, 0x41, 0x42, 0x4A, 0x42, 0x41, 0x42, 0x63, 0x73, 0x08,
+ 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08,
+ 0x69, 0x63, 0x41, 0x42, 0x41, 0x43, 0x4B, 0x41, 0x41, 0x41, 0x40, 0x43, 0x41, 0x63, 0x73, 0x08,
+ 0x69, 0x63, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x63, 0x73, 0x08,
+ 0x69, 0x63, 0x41, 0x40, 0x43, 0x41, 0x42, 0x42, 0x41, 0x4A, 0x42, 0x41, 0x42, 0x63, 0x73, 0x08,
+ 0x69, 0x64, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x64, 0x73, 0x73, 0x73, 0x64, 0x73, 0x08,
+ 0x69, 0x43, 0x43, 0x41, 0x42, 0x42, 0x41, 0x43, 0x41, 0x41, 0x40, 0x42, 0x41, 0x42, 0x73, 0x08,
+ 0x69, 0x42, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x42, 0x73, 0x08,
+ },
+ .collisionData = {0x0381, 0x7C3D, 0x4005, 0x4005, 0x4005, 0x4045, 0x4005, 0x4805, 0x4005, 0x4045, 0x4005, 0x4205, 0x4005, 0x4045, 0x1, 0x1},
+ .coords = {COORDS_XY(5,2), COORDS_XY(9,2)},
+ .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST),
+ .range = TRAINER_RANGE(3, 3),
}
},
[3] =
@@ -1592,11 +1683,28 @@ static const struct TrHillFloor sDataTagNormal_Floors[] =
},
},
.display = {
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x1F, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x24, 0x24, 0x24, 0x2B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x8, 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x35, 0x35, 0x3B, 0x35, 0x35, 0x8, 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x2C, 0x2C, 0x3B, 0x2C, 0x2C, 0x8, 0x33, 0x17, 0x1F, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x34, 0x17, 0x2C, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2C, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x17, 0x17, 0x17, 0x17, 0x17, 0x2C, 0x3B, 0x3B, 0x3B, 0x3B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x1F, 0x17, 0x17, 0x17, 0x17, 0x1F, 0x17, 0x3B, 0x3B, 0x3B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x35, 0x1F, 0x17, 0x17, 0x1F, 0x17, 0x8, 0x34, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x2C, 0x3B, 0x3B, 0x2B, 0x17, 0x8, 0x17, 0x17, 0x17, 0x1F, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x17, 0x17, 0x2C, 0x17, 0x8, 0x1F, 0x17, 0x17, 0x2C, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x3B, 0x1F, 0x3B, 0x17, 0x8, 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x3B, 0x2B, 0x3B, 0x17, 0x8, 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x35, 0x35, 0x35, 0x2B, 0x17, 0x3B, 0x2C, 0x3B, 0x17, 0x8, 0x34, 0x17, 0x17, 0x17, 0x17, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x7C1, 0x8441, 0x8477, 0x8441, 0xA441, 0x401, 0x1, 0x8401, 0x8465, 0x445, 0x1441, 0x8449, 0x8449, 0x87C1, 0xFFFF},
- .coords = {71, 167},
- .direction = 0x1,
- .range = 0x33,
+ .metatileData = {
+ 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08,
+ 0x1F, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x24, 0x24, 0x24, 0x2B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x08,
+ 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x35, 0x35, 0x3B, 0x35, 0x35, 0x08,
+ 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x2C, 0x2C, 0x3B, 0x2C, 0x2C, 0x08,
+ 0x33, 0x17, 0x1F, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08,
+ 0x34, 0x17, 0x2C, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2C, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08,
+ 0x17, 0x17, 0x17, 0x17, 0x17, 0x2C, 0x3B, 0x3B, 0x3B, 0x3B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08,
+ 0x1F, 0x17, 0x17, 0x17, 0x17, 0x1F, 0x17, 0x3B, 0x3B, 0x3B, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08,
+ 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x35, 0x1F, 0x17, 0x17, 0x1F, 0x17, 0x08,
+ 0x34, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x2C, 0x3B, 0x3B, 0x2B, 0x17, 0x08,
+ 0x17, 0x17, 0x17, 0x1F, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x17, 0x17, 0x2C, 0x17, 0x08,
+ 0x1F, 0x17, 0x17, 0x2C, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x3B, 0x1F, 0x3B, 0x17, 0x08,
+ 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x3B, 0x3B, 0x3B, 0x2B, 0x17, 0x3B, 0x2B, 0x3B, 0x17, 0x08,
+ 0x33, 0x17, 0x17, 0x17, 0x17, 0x2B, 0x35, 0x35, 0x35, 0x2B, 0x17, 0x3B, 0x2C, 0x3B, 0x17, 0x08,
+ 0x34, 0x17, 0x17, 0x17, 0x17, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ },
+ .collisionData = {0x0381, 0x7C1, 0x8441, 0x8477, 0x8441, 0xA441, 0x0401, 0x1, 0x8401, 0x8465, 0x0445, 0x1441, 0x8449, 0x8449, 0x87C1, 0xFFFF},
+ .coords = {COORDS_XY(7,4), COORDS_XY(7,10)},
+ .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH),
+ .range = TRAINER_RANGE(3, 3),
}
},
};
@@ -1896,11 +2004,28 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = {
},
},
.display = {
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x40, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x43, 0x43, 0x43, 0x43, 0x43, 0x40, 0x41, 0x41, 0x8, 0x40, 0xFB, 0x43, 0x41, 0x41, 0x41, 0x42, 0x40, 0x43, 0x41, 0x42, 0x42, 0x42, 0xFB, 0x41, 0x8, 0x40, 0x41, 0xFB, 0x41, 0x41, 0x41, 0x42, 0x40, 0x43, 0x41, 0x43, 0x43, 0xFB, 0x40, 0x41, 0x8, 0x40, 0x41, 0x41, 0xFB, 0x43, 0x41, 0x42, 0x40, 0x43, 0x43, 0x43, 0xFB, 0x41, 0x40, 0x41, 0x8, 0x40, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x40, 0x43, 0x43, 0x43, 0x41, 0x41, 0x40, 0x41, 0x8, 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x8, 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x8, 0x40, 0x41, 0x42, 0x41, 0xFE, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x8, 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x8, 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x8, 0x40, 0x42, 0x41, 0x43, 0x43, 0x43, 0x41, 0x40, 0x42, 0x42, 0x42, 0x42, 0x41, 0x40, 0x41, 0x8, 0x40, 0x40, 0x41, 0xFB, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0xFB, 0x41, 0x40, 0x41, 0x8, 0x40, 0x40, 0xFB, 0x43, 0x43, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x42, 0xFB, 0x40, 0x41, 0x8, 0x40, 0xFB, 0x43, 0x43, 0x41, 0x41, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0xFB, 0x41, 0x8, 0x40, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x8},
- .unk3A0 = {0x381, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1},
- .coords = {133, 137},
- .direction = 0x23,
- .range = 0x33,
+ .metatileData = {
+ 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08,
+ 0x40, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x43, 0x43, 0x43, 0x43, 0x43, 0x40, 0x41, 0x41, 0x08,
+ 0x40, 0xFB, 0x43, 0x41, 0x41, 0x41, 0x42, 0x40, 0x43, 0x41, 0x42, 0x42, 0x42, 0xFB, 0x41, 0x08,
+ 0x40, 0x41, 0xFB, 0x41, 0x41, 0x41, 0x42, 0x40, 0x43, 0x41, 0x43, 0x43, 0xFB, 0x40, 0x41, 0x08,
+ 0x40, 0x41, 0x41, 0xFB, 0x43, 0x41, 0x42, 0x40, 0x43, 0x43, 0x43, 0xFB, 0x41, 0x40, 0x41, 0x08,
+ 0x40, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x40, 0x43, 0x43, 0x43, 0x41, 0x41, 0x40, 0x41, 0x08,
+ 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08,
+ 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08,
+ 0x40, 0x41, 0x42, 0x41, 0xFE, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08,
+ 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08,
+ 0x40, 0x41, 0x41, 0x41, 0xFE, 0xFE, 0xFE, 0xFB, 0xFE, 0xFE, 0xFE, 0x41, 0x41, 0x40, 0x41, 0x08,
+ 0x40, 0x42, 0x41, 0x43, 0x43, 0x43, 0x41, 0x40, 0x42, 0x42, 0x42, 0x42, 0x41, 0x40, 0x41, 0x08,
+ 0x40, 0x40, 0x41, 0xFB, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0xFB, 0x41, 0x40, 0x41, 0x08,
+ 0x40, 0x40, 0xFB, 0x43, 0x43, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x42, 0xFB, 0x40, 0x41, 0x08,
+ 0x40, 0xFB, 0x43, 0x43, 0x41, 0x41, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0xFB, 0x41, 0x08,
+ 0x40, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x08,
+ },
+ .collisionData = {0x0381, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1},
+ .coords = {COORDS_XY(5,8), COORDS_XY(9,8)},
+ .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST),
+ .range = TRAINER_RANGE(3, 3),
}
},
[1] =
@@ -2219,11 +2344,28 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = {
},
},
.display = {
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x91, 0x9B, 0x9C, 0x96, 0x40, 0x40, 0x96, 0x9B, 0x96, 0x40, 0x40, 0x96, 0x9B, 0x9C, 0x9B, 0x8, 0x9C, 0x9B, 0x96, 0x40, 0xDB, 0xDB, 0x40, 0x96, 0x40, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x8, 0x91, 0x96, 0x40, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x42, 0x96, 0x9C, 0x8, 0x91, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x9B, 0x8, 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x8, 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x8, 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x8, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x8, 0x91, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x8, 0x91, 0x9B, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9C, 0x8, 0x9C, 0x9B, 0x9B, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9B, 0x8, 0x96, 0x9B, 0x9B, 0x9B, 0x96, 0x41, 0xDB, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9C, 0x96, 0x8, 0xD6, 0x96, 0x9C, 0x9B, 0x9B, 0x96, 0x41, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9B, 0x96, 0xD6, 0x8, 0x9C, 0xD6, 0x96, 0x9B, 0x9C, 0x9B, 0x96, 0x40, 0x96, 0x9B, 0x9C, 0x9B, 0x96, 0xD6, 0x9C, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0xFFFF},
- .coords = {131, 139},
- .direction = 0x23,
- .range = 0x77,
+ .metatileData = {
+ 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08,
+ 0x91, 0x9B, 0x9C, 0x96, 0x40, 0x40, 0x96, 0x9B, 0x96, 0x40, 0x40, 0x96, 0x9B, 0x9C, 0x9B, 0x08,
+ 0x9C, 0x9B, 0x96, 0x40, 0xDB, 0xDB, 0x40, 0x96, 0x40, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x08,
+ 0x91, 0x96, 0x40, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x42, 0x96, 0x9C, 0x08,
+ 0x91, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x9B, 0x08,
+ 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x08,
+ 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x08,
+ 0x96, 0x42, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0x42, 0x96, 0x08,
+ 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x08,
+ 0x91, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x08,
+ 0x91, 0x9B, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9C, 0x08,
+ 0x9C, 0x9B, 0x9B, 0x96, 0x42, 0xDB, 0xDB, 0xD6, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9B, 0x08,
+ 0x96, 0x9B, 0x9B, 0x9B, 0x96, 0x41, 0xDB, 0xDB, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9C, 0x96, 0x08,
+ 0xD6, 0x96, 0x9C, 0x9B, 0x9B, 0x96, 0x41, 0xDB, 0x42, 0x96, 0x9B, 0x9B, 0x9B, 0x96, 0xD6, 0x08,
+ 0x9C, 0xD6, 0x96, 0x9B, 0x9C, 0x9B, 0x96, 0x40, 0x96, 0x9B, 0x9C, 0x9B, 0x96, 0xD6, 0x9C, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ },
+ .collisionData = {0x0381, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0xFFFF},
+ .coords = {COORDS_XY(3,8), COORDS_XY(11,8)},
+ .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST),
+ .range = TRAINER_RANGE(7, 7),
}
},
[2] =
@@ -2523,11 +2665,28 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = {
},
},
.display = {
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x1B, 0x1C, 0x1D, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x91, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x84, 0x84, 0x84, 0x9A, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x8, 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x8, 0x17, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0x17, 0xBB, 0xBB, 0x8},
- .unk3A0 = {0x381, 0x381, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1},
- .coords = {25, 30},
- .direction = 0x23,
- .range = 0x44,
+ .metatileData = {
+ 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x1B, 0x1C, 0x1D, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08,
+ 0x91, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x84, 0x84, 0x84, 0x9A, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x08,
+ 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08,
+ 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x08,
+ 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08,
+ 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08,
+ 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08,
+ 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08,
+ 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08,
+ 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x08,
+ 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08,
+ 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x08,
+ 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08,
+ 0x17, 0x17, 0x17, 0x17, 0xBB, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x08,
+ 0x17, 0xB2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xB0, 0x17, 0xB2, 0xA1, 0x08,
+ 0x17, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0x17, 0xBB, 0xBB, 0x08,
+ },
+ .collisionData = {0x0381, 0x0381, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1, 0x7FF7, 0x1},
+ .coords = {COORDS_XY(9,1), COORDS_XY(14,1)},
+ .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST),
+ .range = TRAINER_RANGE(4, 4),
}
},
[3] =
@@ -2818,11 +2977,28 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = {
},
},
.display = {
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x69, 0x40, 0x6D, 0x41, 0x73, 0x41, 0x5E, 0x41, 0x71, 0x42, 0x45, 0x45, 0x45, 0x45, 0x45, 0x8, 0x43, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x41, 0x73, 0x45, 0x45, 0x45, 0x45, 0x45, 0x8, 0x65, 0x40, 0x73, 0x42, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x42, 0x45, 0x45, 0x45, 0x45, 0x45, 0x8, 0x6C, 0x73, 0x41, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x42, 0x73, 0x41, 0x8, 0x69, 0x40, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x43, 0x73, 0x43, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x8, 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x8, 0x65, 0x42, 0x73, 0x42, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x42, 0x73, 0x41, 0x6D, 0x42, 0x73, 0x8, 0x6C, 0x73, 0x41, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x8, 0x69, 0x40, 0x6D, 0x41, 0x73, 0x41, 0x6D, 0x42, 0x73, 0x43, 0x6D, 0x41, 0x73, 0x43, 0x6D, 0x8, 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x8, 0x65, 0x42, 0x73, 0x42, 0x6D, 0x43, 0x73, 0x42, 0x6D, 0x42, 0x73, 0x41, 0x6D, 0x40, 0x73, 0x8, 0x6C, 0x73, 0x40, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x8, 0x69, 0x40, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x43, 0x73, 0x40, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x8, 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x1, 0x2201, 0x1, 0x8881, 0x1, 0x2223, 0x1, 0x8889, 0x1, 0x2223, 0x1, 0x8889, 0x1, 0x2223, 0xFFFF},
- .coords = {42, 46},
- .direction = 0x23,
- .range = 0x33,
+ .metatileData = {
+ 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08,
+ 0x69, 0x40, 0x6D, 0x41, 0x73, 0x41, 0x5E, 0x41, 0x71, 0x42, 0x45, 0x45, 0x45, 0x45, 0x45, 0x08,
+ 0x43, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x41, 0x73, 0x45, 0x45, 0x45, 0x45, 0x45, 0x08,
+ 0x65, 0x40, 0x73, 0x42, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x42, 0x45, 0x45, 0x45, 0x45, 0x45, 0x08,
+ 0x6C, 0x73, 0x41, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x42, 0x73, 0x41, 0x08,
+ 0x69, 0x40, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x43, 0x73, 0x43, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x08,
+ 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x08,
+ 0x65, 0x42, 0x73, 0x42, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x42, 0x73, 0x41, 0x6D, 0x42, 0x73, 0x08,
+ 0x6C, 0x73, 0x41, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x08,
+ 0x69, 0x40, 0x6D, 0x41, 0x73, 0x41, 0x6D, 0x42, 0x73, 0x43, 0x6D, 0x41, 0x73, 0x43, 0x6D, 0x08,
+ 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x08,
+ 0x65, 0x42, 0x73, 0x42, 0x6D, 0x43, 0x73, 0x42, 0x6D, 0x42, 0x73, 0x41, 0x6D, 0x40, 0x73, 0x08,
+ 0x6C, 0x73, 0x40, 0x73, 0x64, 0x73, 0x41, 0x73, 0x64, 0x73, 0x42, 0x73, 0x64, 0x73, 0x42, 0x08,
+ 0x69, 0x40, 0x6D, 0x42, 0x73, 0x42, 0x6D, 0x43, 0x73, 0x40, 0x6D, 0x41, 0x73, 0x40, 0x6D, 0x08,
+ 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x40, 0x73, 0x64, 0x73, 0x43, 0x73, 0x64, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ },
+ .collisionData = {0x0381, 0x1, 0x2201, 0x1, 0x8881, 0x1, 0x2223, 0x1, 0x8889, 0x1, 0x2223, 0x1, 0x8889, 0x1, 0x2223, 0xFFFF},
+ .coords = {COORDS_XY(10,2), COORDS_XY(14,2)},
+ .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST),
+ .range = TRAINER_RANGE(3, 3),
}
},
};
@@ -3127,11 +3303,28 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = {
},
},
.display = {
- .data = {0xF1, 0xF5, 0xFB, 0xF5, 0xE6, 0xE6, 0x1B, 0x14, 0x15, 0xF8, 0xF9, 0xFA, 0xFB, 0xFB, 0xFB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xF9, 0xE6, 0xEE, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0x9B, 0x9B, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0x9B, 0xDB, 0xDB, 0x9B, 0xEC, 0xFB, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xF5, 0x95, 0x95, 0xF5, 0xF5, 0xF5, 0xEB, 0xEC, 0xEB, 0xFB, 0xEB, 0x8, 0xED, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0x8, 0xF4, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xF5, 0xFB, 0x8, 0xF1, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0x8, 0xF1, 0xF5, 0xF5, 0xEB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0xFB, 0x8, 0xF1, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0xEB, 0xFB, 0x8, 0xF1, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xFB, 0xEB, 0xFB, 0x8, 0xF1, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0xEC, 0xFB, 0x8, 0xF1, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x5E01, 0x50FF, 0x5083, 0x503B, 0x5FEB, 0xC02B, 0x5FEB, 0x5009, 0x57FD, 0x1005, 0x7FF5, 0x15, 0x7FF5, 0x1, 0xFFFF},
- .coords = {52, 55},
- .direction = 0x23,
- .range = 0x22,
+ .metatileData = {
+ 0xF1, 0xF5, 0xFB, 0xF5, 0xE6, 0xE6, 0x1B, 0x14, 0x15, 0xF8, 0xF9, 0xFA, 0xFB, 0xFB, 0xFB, 0x08,
+ 0xF1, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xF9, 0xE6, 0xEE, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0x08,
+ 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0x9B, 0x9B, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0x08,
+ 0xF1, 0xEB, 0xFB, 0xEB, 0x9B, 0xDB, 0xDB, 0x9B, 0xEC, 0xFB, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0x08,
+ 0xF1, 0xEB, 0xFB, 0xEB, 0xF5, 0x95, 0x95, 0xF5, 0xF5, 0xF5, 0xEB, 0xEC, 0xEB, 0xFB, 0xEB, 0x08,
+ 0xED, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0x08,
+ 0xF4, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0x08,
+ 0xF1, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0x08,
+ 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xF5, 0xFB, 0x08,
+ 0xF1, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0x08,
+ 0xF1, 0xF5, 0xF5, 0xEB, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0xFB, 0x08,
+ 0xF1, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEB, 0xFB, 0xEB, 0xFB, 0x08,
+ 0xF1, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xEB, 0xFB, 0xEB, 0xFB, 0x08,
+ 0xF1, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0xEC, 0xFB, 0x08,
+ 0xF1, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ },
+ .collisionData = {0x0381, 0x5E01, 0x50FF, 0x5083, 0x503B, 0x5FEB, 0xC02B, 0x5FEB, 0x5009, 0x57FD, 0x1005, 0x7FF5, 0x15, 0x7FF5, 0x1, 0xFFFF},
+ .coords = {COORDS_XY(4,3), COORDS_XY(7,3)},
+ .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST),
+ .range = TRAINER_RANGE(2, 2),
}
},
[1] =
@@ -3431,11 +3624,28 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = {
},
},
.display = {
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x2D, 0x3B, 0x3B, 0x3B, 0x35, 0x2C, 0x23, 0x24, 0x23, 0x2C, 0x35, 0x3B, 0x3B, 0x3B, 0x3B, 0x8, 0x94, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x8C, 0x87, 0x8C, 0x87, 0x95, 0x87, 0x9B, 0x8, 0x91, 0x8F, 0x9B, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x95, 0x8, 0x8D, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x95, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x8C, 0x8, 0x94, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x9B, 0x9B, 0x9B, 0x87, 0x9B, 0x8, 0x91, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x95, 0x9B, 0x95, 0x8F, 0x9B, 0x8, 0x91, 0x97, 0x95, 0x97, 0x8C, 0x97, 0x95, 0x97, 0x95, 0x97, 0x8C, 0x9B, 0x8C, 0x97, 0x95, 0x8, 0x91, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x9B, 0x87, 0x95, 0x87, 0x8C, 0x8, 0x8D, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x8, 0x94, 0x97, 0x95, 0x97, 0x8C, 0x97, 0x9B, 0x97, 0x95, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x9B, 0x8, 0x91, 0x87, 0x8C, 0x87, 0x95, 0x87, 0x95, 0x87, 0x8B, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x9B, 0x8, 0x91, 0x8F, 0x95, 0x8F, 0x8B, 0x8F, 0x8C, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x8, 0x91, 0x97, 0x8C, 0x97, 0x8C, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x8B, 0x97, 0x9B, 0x8, 0x91, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x8C, 0x9B, 0x9B, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x7C1, 0x8AA1, 0x209, 0x5557, 0xA281, 0x81, 0x5D6D, 0x2283, 0x89, 0xDD55, 0x20A1, 0xA81, 0x7D5D, 0x9, 0xFFFF},
- .coords = {105, 109},
- .direction = 0x23,
- .range = 0x33,
+ .metatileData = {
+ 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x26, 0x1B, 0x1C, 0x1D, 0x25, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08,
+ 0x2D, 0x3B, 0x3B, 0x3B, 0x35, 0x2C, 0x23, 0x24, 0x23, 0x2C, 0x35, 0x3B, 0x3B, 0x3B, 0x3B, 0x08,
+ 0x94, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x8C, 0x87, 0x8C, 0x87, 0x95, 0x87, 0x9B, 0x08,
+ 0x91, 0x8F, 0x9B, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x95, 0x08,
+ 0x8D, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x95, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x8C, 0x08,
+ 0x94, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x9B, 0x9B, 0x9B, 0x87, 0x9B, 0x08,
+ 0x91, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x95, 0x9B, 0x95, 0x8F, 0x9B, 0x08,
+ 0x91, 0x97, 0x95, 0x97, 0x8C, 0x97, 0x95, 0x97, 0x95, 0x97, 0x8C, 0x9B, 0x8C, 0x97, 0x95, 0x08,
+ 0x91, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x8C, 0x87, 0x8B, 0x87, 0x9B, 0x87, 0x95, 0x87, 0x8C, 0x08,
+ 0x8D, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x8C, 0x8F, 0x9B, 0x08,
+ 0x94, 0x97, 0x95, 0x97, 0x8C, 0x97, 0x9B, 0x97, 0x95, 0x97, 0x95, 0x97, 0x9B, 0x97, 0x9B, 0x08,
+ 0x91, 0x87, 0x8C, 0x87, 0x95, 0x87, 0x95, 0x87, 0x8B, 0x87, 0x8C, 0x87, 0x9B, 0x87, 0x9B, 0x08,
+ 0x91, 0x8F, 0x95, 0x8F, 0x8B, 0x8F, 0x8C, 0x8F, 0x8C, 0x8F, 0x9B, 0x8F, 0x95, 0x8F, 0x9B, 0x08,
+ 0x91, 0x97, 0x8C, 0x97, 0x8C, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x9B, 0x97, 0x8B, 0x97, 0x9B, 0x08,
+ 0x91, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x8C, 0x9B, 0x9B, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ },
+ .collisionData = {0x0381, 0x7C1, 0x8AA1, 0x0209, 0x5557, 0xA281, 0x81, 0x5D6D, 0x2283, 0x89, 0xDD55, 0x20A1, 0xA81, 0x7D5D, 0x9, 0xFFFF},
+ .coords = {COORDS_XY(9,6), COORDS_XY(13,6)},
+ .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST),
+ .range = TRAINER_RANGE(3, 3),
}
},
[2] =
@@ -3735,11 +3945,28 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = {
},
},
.display = {
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7C, 0x46, 0x8, 0x69, 0x46, 0x7A, 0x73, 0x73, 0x73, 0x79, 0x73, 0x73, 0x73, 0x7D, 0x73, 0x73, 0x73, 0x46, 0x8, 0x69, 0x46, 0x73, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x8, 0x69, 0x46, 0x73, 0x73, 0x7B, 0x73, 0x7C, 0x73, 0x7B, 0x73, 0x7A, 0x73, 0x73, 0x73, 0x46, 0x8, 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7A, 0x46, 0x8, 0x69, 0x46, 0x73, 0x73, 0x73, 0x73, 0x73, 0x7D, 0x7C, 0x73, 0x7C, 0x73, 0x7B, 0x73, 0x46, 0x8, 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7C, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x8, 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x8, 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x8, 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x8, 0xF1, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x8, 0xF1, 0x46, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x7A, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x7C, 0x8, 0xF1, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0xFB, 0x8, 0x7C, 0xFB, 0x7B, 0xFB, 0x7A, 0xFB, 0x79, 0xFB, 0xB3, 0xFB, 0x7D, 0xFB, 0x7E, 0xFB, 0x7D, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x7FFB, 0x4003, 0x5FFF, 0x4003, 0x7FFB, 0x4003, 0x7EFF, 0x4443, 0x4443, 0x4443, 0x7EFF, 0x4001, 0x7FFD, 0x1, 0xFFFF},
- .coords = {150, 152},
- .direction = 0x23,
- .range = 0x11,
+ .metatileData = {
+ 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08,
+ 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7C, 0x46, 0x08,
+ 0x69, 0x46, 0x7A, 0x73, 0x73, 0x73, 0x79, 0x73, 0x73, 0x73, 0x7D, 0x73, 0x73, 0x73, 0x46, 0x08,
+ 0x69, 0x46, 0x73, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08,
+ 0x69, 0x46, 0x73, 0x73, 0x7B, 0x73, 0x7C, 0x73, 0x7B, 0x73, 0x7A, 0x73, 0x73, 0x73, 0x46, 0x08,
+ 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7A, 0x46, 0x08,
+ 0x69, 0x46, 0x73, 0x73, 0x73, 0x73, 0x73, 0x7D, 0x7C, 0x73, 0x7C, 0x73, 0x7B, 0x73, 0x46, 0x08,
+ 0x69, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x7C, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08,
+ 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x08,
+ 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x08,
+ 0x91, 0x46, 0x9B, 0x9B, 0x9B, 0x46, 0x3B, 0x3B, 0x3B, 0x46, 0x9B, 0x9B, 0x9B, 0x9B, 0x46, 0x08,
+ 0xF1, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08,
+ 0xF1, 0x46, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x7A, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x7C, 0x08,
+ 0xF1, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0xFB, 0x08,
+ 0x7C, 0xFB, 0x7B, 0xFB, 0x7A, 0xFB, 0x79, 0xFB, 0xB3, 0xFB, 0x7D, 0xFB, 0x7E, 0xFB, 0x7D, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ },
+ .collisionData = {0x0381, 0x7FFB, 0x4003, 0x5FFF, 0x4003, 0x7FFB, 0x4003, 0x7EFF, 0x4443, 0x4443, 0x4443, 0x7EFF, 0x4001, 0x7FFD, 0x1, 0xFFFF},
+ .coords = {COORDS_XY(6,9), COORDS_XY(8,9)},
+ .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST),
+ .range = TRAINER_RANGE(1, 1),
}
},
[3] =
@@ -4029,11 +4256,28 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = {
},
},
.display = {
- .data = {0xF1, 0xFB, 0xFB, 0xFB, 0xF9, 0xF9, 0x1B, 0x1C, 0x1D, 0xE5, 0xE6, 0xEE, 0xF5, 0xFB, 0xFB, 0x8, 0xED, 0xF5, 0xF5, 0xF5, 0xFB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEB, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0x8, 0xF4, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8, 0xF1, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0x8, 0xF1, 0xEB, 0xEC, 0xEC, 0xEC, 0xEB, 0xEC, 0xEC, 0xFB, 0xEC, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0x8, 0xF1, 0xEB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xF5, 0xFB, 0xF5, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8, 0xF1, 0xEB, 0xFB, 0xF5, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xF5, 0xF5, 0xF5, 0xFB, 0xFB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8, 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0x8, 0xF1, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0x8, 0xF1, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8, 0xF1, 0xFB, 0xFB, 0xEC, 0xFB, 0xFB, 0xFB, 0xEC, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x3F9, 0xF041, 0x41, 0x7F5F, 0x4401, 0x4541, 0x5579, 0x5541, 0x555F, 0x5541, 0x5541, 0x557D, 0x1101, 0x1101, 0xFFFF},
- .coords = {40, 91},
- .direction = 0x21,
- .range = 0x33,
+ .metatileData = {
+ 0xF1, 0xFB, 0xFB, 0xFB, 0xF9, 0xF9, 0x1B, 0x1C, 0x1D, 0xE5, 0xE6, 0xEE, 0xF5, 0xFB, 0xFB, 0x08,
+ 0xED, 0xF5, 0xF5, 0xF5, 0xFB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEB, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0x08,
+ 0xF4, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08,
+ 0xF1, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0x08,
+ 0xF1, 0xEB, 0xEC, 0xEC, 0xEC, 0xEB, 0xEC, 0xEC, 0xFB, 0xEC, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0x08,
+ 0xF1, 0xEB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xF5, 0xFB, 0xF5, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08,
+ 0xF1, 0xEB, 0xFB, 0xF5, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xF5, 0xF5, 0xF5, 0xFB, 0xFB, 0x08,
+ 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xEC, 0xEC, 0xEC, 0xFB, 0xFB, 0x08,
+ 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xF5, 0xF5, 0xF5, 0xF5, 0x08,
+ 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0x08,
+ 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08,
+ 0xF1, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xFB, 0xEB, 0xF5, 0xF5, 0xF5, 0xF5, 0xFB, 0x08,
+ 0xF1, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xFB, 0xEB, 0xFB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xFB, 0x08,
+ 0xF1, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xEB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08,
+ 0xF1, 0xFB, 0xFB, 0xEC, 0xFB, 0xFB, 0xFB, 0xEC, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ },
+ .collisionData = {0x0381, 0x3F9, 0xF041, 0x41, 0x7F5F, 0x4401, 0x4541, 0x5579, 0x5541, 0x555F, 0x5541, 0x5541, 0x557D, 0x1101, 0x1101, 0xFFFF},
+ .coords = {COORDS_XY(8,2), COORDS_XY(11,5)},
+ .direction = TRAINER_DIRS(DIR_WEST, DIR_NORTH),
+ .range = TRAINER_RANGE(3, 3),
}
},
};
@@ -4345,11 +4589,28 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
},
},
.display = {
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x1B, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x31, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x2C, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x8, 0x31, 0x3B, 0x8, 0x8, 0x8, 0x8, 0x8, 0x3B, 0x8, 0x8, 0x8, 0x8, 0x8, 0x3B, 0x3B, 0x8, 0x69, 0x73, 0x8, 0x4D, 0x4D, 0x4D, 0x4D, 0xD1, 0x4D, 0x4D, 0x4D, 0x4D, 0x8, 0x69, 0x73, 0x8, 0x40, 0x3B, 0x8, 0x55, 0x55, 0x55, 0x55, 0xD1, 0x55, 0x55, 0x55, 0x55, 0x8, 0x31, 0x41, 0x8, 0x69, 0x41, 0x8, 0xC5, 0xD9, 0xD9, 0xD9, 0x9A, 0xD9, 0xD9, 0xD9, 0xC6, 0x8, 0x41, 0x73, 0x8, 0x69, 0x3B, 0x8, 0xD4, 0xDB, 0x9B, 0x73, 0x73, 0x73, 0x9B, 0xDB, 0xCC, 0x8, 0x31, 0x73, 0x8, 0x69, 0x3B, 0x8, 0xCD, 0x9B, 0x73, 0x73, 0x44, 0x73, 0x73, 0x9B, 0xD5, 0x8, 0x31, 0x73, 0x8, 0x69, 0x3B, 0x8, 0xD4, 0xDB, 0x9B, 0x73, 0x73, 0x73, 0x9B, 0xDB, 0xCC, 0x8, 0x31, 0x73, 0x8, 0x69, 0x41, 0x8, 0xD1, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xDB, 0xDB, 0xDB, 0x8, 0x41, 0x73, 0x8, 0x40, 0x3B, 0x8, 0x8, 0xC7, 0xC7, 0xDB, 0xDB, 0xDB, 0xC7, 0xC7, 0x8, 0x8, 0x31, 0x41, 0x8, 0x69, 0x3B, 0x4D, 0x4D, 0x67, 0x67, 0xDB, 0xDB, 0xDB, 0x67, 0x67, 0x4D, 0x4D, 0x31, 0x73, 0x8, 0x69, 0x3B, 0x55, 0x55, 0xD7, 0xD7, 0xD1, 0xDB, 0xDB, 0xD7, 0xD7, 0x55, 0x55, 0x31, 0x73, 0x8, 0x69, 0x3B, 0x39, 0x39, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x39, 0x39, 0x39, 0x39, 0x3A, 0x73, 0x8, 0x69, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x201, 0x3EF9, 0x3EF9, 0x3EF9, 0x2009, 0x3019, 0x2009, 0x3019, 0x2009, 0x3019, 0x3019, 0x3C79, 0x1, 0x1, 0xFFFF},
- .coords = {116, 122},
- .direction = 0x23,
- .range = 0x55,
+ .metatileData = {
+ 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x1B, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08,
+ 0x31, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x2C, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x08,
+ 0x31, 0x3B, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3B, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3B, 0x3B, 0x08,
+ 0x69, 0x73, 0x08, 0x4D, 0x4D, 0x4D, 0x4D, 0xD1, 0x4D, 0x4D, 0x4D, 0x4D, 0x08, 0x69, 0x73, 0x08,
+ 0x40, 0x3B, 0x08, 0x55, 0x55, 0x55, 0x55, 0xD1, 0x55, 0x55, 0x55, 0x55, 0x08, 0x31, 0x41, 0x08,
+ 0x69, 0x41, 0x08, 0xC5, 0xD9, 0xD9, 0xD9, 0x9A, 0xD9, 0xD9, 0xD9, 0xC6, 0x08, 0x41, 0x73, 0x08,
+ 0x69, 0x3B, 0x08, 0xD4, 0xDB, 0x9B, 0x73, 0x73, 0x73, 0x9B, 0xDB, 0xCC, 0x08, 0x31, 0x73, 0x08,
+ 0x69, 0x3B, 0x08, 0xCD, 0x9B, 0x73, 0x73, 0x44, 0x73, 0x73, 0x9B, 0xD5, 0x08, 0x31, 0x73, 0x08,
+ 0x69, 0x3B, 0x08, 0xD4, 0xDB, 0x9B, 0x73, 0x73, 0x73, 0x9B, 0xDB, 0xCC, 0x08, 0x31, 0x73, 0x08,
+ 0x69, 0x41, 0x08, 0xD1, 0xDB, 0xDB, 0xDB, 0x9B, 0xDB, 0xDB, 0xDB, 0xDB, 0x08, 0x41, 0x73, 0x08,
+ 0x40, 0x3B, 0x08, 0x08, 0xC7, 0xC7, 0xDB, 0xDB, 0xDB, 0xC7, 0xC7, 0x08, 0x08, 0x31, 0x41, 0x08,
+ 0x69, 0x3B, 0x4D, 0x4D, 0x67, 0x67, 0xDB, 0xDB, 0xDB, 0x67, 0x67, 0x4D, 0x4D, 0x31, 0x73, 0x08,
+ 0x69, 0x3B, 0x55, 0x55, 0xD7, 0xD7, 0xD1, 0xDB, 0xDB, 0xD7, 0xD7, 0x55, 0x55, 0x31, 0x73, 0x08,
+ 0x69, 0x3B, 0x39, 0x39, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x39, 0x39, 0x39, 0x39, 0x3A, 0x73, 0x08,
+ 0x69, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ },
+ .collisionData = {0x0381, 0x0201, 0x3EF9, 0x3EF9, 0x3EF9, 0x2009, 0x3019, 0x2009, 0x3019, 0x2009, 0x3019, 0x3019, 0x3C79, 0x1, 0x1, 0xFFFF},
+ .coords = {COORDS_XY(4,7), COORDS_XY(10,7)},
+ .direction = TRAINER_DIRS(DIR_WEST, DIR_EAST),
+ .range = TRAINER_RANGE(5, 5),
}
},
[1] =
@@ -4650,11 +4911,28 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
},
},
.display = {
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x78, 0x8, 0x91, 0x46, 0x9B, 0x7C, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7C, 0x9B, 0x7B, 0x9B, 0x7A, 0x9B, 0x8, 0x91, 0x46, 0x7D, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x8, 0x91, 0x46, 0x9B, 0x7E, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0xB3, 0x9B, 0x9B, 0x9B, 0x8, 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x9B, 0x8, 0x91, 0x46, 0x9B, 0x7D, 0x9B, 0x7C, 0x9B, 0x7B, 0x9B, 0x7A, 0x9B, 0x7C, 0x9B, 0x9B, 0x9B, 0x8, 0x91, 0x46, 0x9B, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x8, 0x91, 0x46, 0x9B, 0x7C, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0x8, 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0xB3, 0x8, 0x91, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x9B, 0x8, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x8, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0x8, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x8, 0x91, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x9B, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8},
- .unk3A0 = {0x381, 0x7FFD, 0x4001, 0x5FFF, 0x4001, 0x7FFD, 0x4001, 0x5FFF, 0x4001, 0x7FFD, 0x1, 0x1, 0x1, 0x1, 0x1, 0xFFFF},
- .coords = {167, 231},
- .direction = 0x1,
- .range = 0x33,
+ .metatileData = {
+ 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x38, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08,
+ 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x78, 0x08,
+ 0x91, 0x46, 0x9B, 0x7C, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7C, 0x9B, 0x7B, 0x9B, 0x7A, 0x9B, 0x08,
+ 0x91, 0x46, 0x7D, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08,
+ 0x91, 0x46, 0x9B, 0x7E, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0xB3, 0x9B, 0x9B, 0x9B, 0x08,
+ 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x9B, 0x08,
+ 0x91, 0x46, 0x9B, 0x7D, 0x9B, 0x7C, 0x9B, 0x7B, 0x9B, 0x7A, 0x9B, 0x7C, 0x9B, 0x9B, 0x9B, 0x08,
+ 0x91, 0x46, 0x9B, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x08,
+ 0x91, 0x46, 0x9B, 0x7C, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0x9B, 0x9B, 0x7D, 0x9B, 0x7E, 0x9B, 0x08,
+ 0x91, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0xB3, 0x08,
+ 0x91, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x9B, 0x08,
+ 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x08,
+ 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0x08,
+ 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xDB, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x08,
+ 0x91, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0xDB, 0xD6, 0x96, 0x9B, 0x9B, 0x96, 0xD6, 0x9B, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ },
+ .collisionData = {0x0381, 0x7FFD, 0x4001, 0x5FFF, 0x4001, 0x7FFD, 0x4001, 0x5FFF, 0x4001, 0x7FFD, 0x1, 0x1, 0x1, 0x1, 0x1, 0xFFFF},
+ .coords = {COORDS_XY(7,10), COORDS_XY(7,14)},
+ .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH),
+ .range = TRAINER_RANGE(3, 3),
}
},
[2] =
@@ -4955,11 +5233,28 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
},
},
.display = {
- .data = {0xD1, 0xDB, 0xDB, 0xDB, 0xD9, 0xD9, 0x1B, 0x14, 0x15, 0x98, 0x99, 0x9A, 0x9B, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xDB, 0xDB, 0xD5, 0xD5, 0xC3, 0xF9, 0x86, 0x8E, 0x95, 0x9B, 0x9B, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xDB, 0xD5, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xD5, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x9B, 0x8, 0xD1, 0xD5, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8C, 0x8B, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x8, 0xD1, 0xCB, 0xCB, 0xCB, 0xCB, 0xCC, 0xCC, 0xFB, 0xFB, 0x8C, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x8, 0xD1, 0xCC, 0xCC, 0xCC, 0xCC, 0xFB, 0xF5, 0xFB, 0xF5, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x8, 0xD1, 0xD5, 0xD5, 0xD5, 0xD5, 0xFB, 0xEC, 0xFB, 0xEC, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x8, 0xD1, 0xCB, 0xCB, 0xCB, 0xCB, 0xF5, 0xF5, 0xFB, 0xFB, 0xF5, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x8, 0xD1, 0xCC, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x8, 0xD1, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0xF5, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xCC, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xDB, 0xCC, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xDB, 0xDB, 0xCC, 0xCC, 0xCB, 0xFB, 0x8C, 0x8C, 0x8C, 0x9B, 0x9B, 0x9B, 0x9B, 0x8, 0xD1, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xCC, 0xFB, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x8},
- .unk3A0 = {0x381, 0x201, 0xEE1, 0x1EF1, 0x3EF9, 0x3EF9, 0x7E7D, 0x783D, 0x2BD, 0x783D, 0x7E7D, 0x3E79, 0x3EF9, 0x1EF1, 0xEE1, 0x201},
- .coords = {103, 167},
- .direction = 0x1,
- .range = 0x33,
+ .metatileData = {
+ 0xD1, 0xDB, 0xDB, 0xDB, 0xD9, 0xD9, 0x1B, 0x14, 0x15, 0x98, 0x99, 0x9A, 0x9B, 0x9B, 0x9B, 0x08,
+ 0xD1, 0xDB, 0xDB, 0xDB, 0xD5, 0xD5, 0xC3, 0xF9, 0x86, 0x8E, 0x95, 0x9B, 0x9B, 0x9B, 0x9B, 0x08,
+ 0xD1, 0xDB, 0xDB, 0xD5, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x9B, 0x9B, 0x08,
+ 0xD1, 0xDB, 0xD5, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x9B, 0x08,
+ 0xD1, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x9B, 0x08,
+ 0xD1, 0xD5, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8C, 0x8B, 0x8B, 0x8B, 0x8B, 0x95, 0x9B, 0x08,
+ 0xD1, 0xCB, 0xCB, 0xCB, 0xCB, 0xCC, 0xCC, 0xFB, 0xFB, 0x8C, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x08,
+ 0xD1, 0xCC, 0xCC, 0xCC, 0xCC, 0xFB, 0xF5, 0xFB, 0xF5, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x08,
+ 0xD1, 0xD5, 0xD5, 0xD5, 0xD5, 0xFB, 0xEC, 0xFB, 0xEC, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x08,
+ 0xD1, 0xCB, 0xCB, 0xCB, 0xCB, 0xF5, 0xF5, 0xFB, 0xFB, 0xF5, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x08,
+ 0xD1, 0xCC, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x08,
+ 0xD1, 0xDB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0xF5, 0x8B, 0x8B, 0x8B, 0x8B, 0x9B, 0x9B, 0x08,
+ 0xD1, 0xDB, 0xCC, 0xCB, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x9B, 0x08,
+ 0xD1, 0xDB, 0xDB, 0xCC, 0xCB, 0xCB, 0xCB, 0xFB, 0x8B, 0x8B, 0x8B, 0x8C, 0x9B, 0x9B, 0x9B, 0x08,
+ 0xD1, 0xDB, 0xDB, 0xDB, 0xCC, 0xCC, 0xCB, 0xFB, 0x8C, 0x8C, 0x8C, 0x9B, 0x9B, 0x9B, 0x9B, 0x08,
+ 0xD1, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xCC, 0xFB, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x08,
+ },
+ .collisionData = {0x0381, 0x0201, 0xEE1, 0x1EF1, 0x3EF9, 0x3EF9, 0x7E7D, 0x783D, 0x2BD, 0x783D, 0x7E7D, 0x3E79, 0x3EF9, 0x1EF1, 0xEE1, 0x201},
+ .coords = {COORDS_XY(7,6), COORDS_XY(7,10)},
+ .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH),
+ .range = TRAINER_RANGE(3, 3),
}
},
[3] =
@@ -5252,11 +5547,32 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
},
},
.display = {
- .data = {0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x8, 0x96, 0xFB, 0xF6, 0xFD, 0xF6, 0xF6, 0xFB, 0x46, 0xFB, 0xF6, 0xF6, 0xFD, 0xF6, 0xFB, 0x9B, 0x8, 0xFB, 0x9B, 0xFB, 0xF6, 0xFB, 0xFB, 0xFB, 0x46, 0xFB, 0xFB, 0xFB, 0xF6, 0xFB, 0x9B, 0xFB, 0x8, 0xF6, 0xFB, 0x9B, 0xFB, 0xFB, 0x46, 0x46, 0x9B, 0x46, 0x46, 0xFB, 0xFB, 0x9B, 0xFB, 0xF6, 0x8, 0xFD, 0xF6, 0xFB, 0x9B, 0x46, 0x36, 0x36, 0x9B, 0x36, 0x36, 0x46, 0x9B, 0xFB, 0xF6, 0xFD, 0x8, 0xF6, 0xFB, 0xFB, 0x46, 0x9B, 0x46, 0x46, 0xDB, 0x46, 0x46, 0x9B, 0x46, 0xFB, 0xFB, 0xF6, 0x8, 0xF6, 0xFB, 0x46, 0x36, 0x46, 0x9B, 0xDB, 0xD6, 0xDB, 0x9B, 0x46, 0x36, 0x46, 0xFB, 0xF6, 0x8, 0xFB, 0xFB, 0x46, 0x36, 0x9B, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0x9B, 0x36, 0x46, 0xFB, 0xFB, 0x8, 0x96, 0x9B, 0x9B, 0x9B, 0x9B, 0xD6, 0xD6, 0x96, 0xD6, 0xD6, 0xDB, 0x9B, 0x9B, 0x9B, 0x96, 0x8, 0xFB, 0xFB, 0x46, 0x36, 0x9B, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0x9B, 0x36, 0x46, 0xFB, 0xFB, 0x8, 0xF6, 0xFB, 0x46, 0x36, 0x46, 0x9B, 0xDB, 0xD6, 0xDB, 0x9B, 0x46, 0x36, 0x46, 0xFB, 0xF6, 0x8, 0xF6, 0xFB, 0xFB, 0x46, 0x9B, 0x46, 0x46, 0xDB, 0x46, 0x46, 0x9B, 0x46, 0xFB, 0xFB, 0xF6, 0x8, 0xFD, 0xF6, 0xFB, 0x9B, 0x46, 0x36, 0x36, 0x9B, 0x36, 0x36, 0x46, 0x9B, 0xFB, 0xF6, 0xFD, 0x8, 0xF6, 0xFB, 0x9B, 0xFB, 0xFB, 0x46, 0x46, 0x9B, 0x46, 0x46, 0xFB, 0xFB, 0x9B, 0xFB, 0xF6, 0x8, 0xFB, 0x9B, 0xFB, 0xF6, 0xFB, 0xFB, 0xFB, 0x46, 0xFB, 0xFB, 0xFB, 0xF6, 0xFB, 0x9B, 0xFB, 0x8, 0x96, 0xFB, 0xF6, 0xFD, 0xF6, 0xF6, 0xFB, 0x46, 0xFB, 0xF6, 0xF6, 0xFD, 0xF6, 0xFB, 0x9B, 0x8},
- .unk3A0 = {0x381, 0x101, 0x101, 0x6C1, 0x821, 0x16D1, 0x2829, 0x2009, 0x1, 0x2009, 0x2829, 0x16D1, 0x821, 0x6C1, 0x101, 0x101},
- .coords = {103, 167},
- .direction = 0x1,
- .range = 0x33,
+ .metatileData = {
+ 0x31, 0x3B, 0x3B, 0x3B, 0x39, 0x39, 0x13, 0x14, 0x15, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3B, 0x08,
+ 0x96, 0xFB, 0xF6, 0xFD, 0xF6, 0xF6, 0xFB, 0x46, 0xFB, 0xF6, 0xF6, 0xFD, 0xF6, 0xFB, 0x9B, 0x08,
+ 0xFB, 0x9B, 0xFB, 0xF6, 0xFB, 0xFB, 0xFB, 0x46, 0xFB, 0xFB, 0xFB, 0xF6, 0xFB, 0x9B, 0xFB, 0x08,
+ 0xF6, 0xFB, 0x9B, 0xFB, 0xFB, 0x46, 0x46, 0x9B, 0x46, 0x46, 0xFB, 0xFB, 0x9B, 0xFB, 0xF6, 0x08,
+ 0xFD, 0xF6, 0xFB, 0x9B, 0x46, 0x36, 0x36, 0x9B, 0x36, 0x36, 0x46, 0x9B, 0xFB, 0xF6, 0xFD, 0x08,
+ 0xF6, 0xFB, 0xFB, 0x46, 0x9B, 0x46, 0x46, 0xDB, 0x46, 0x46, 0x9B, 0x46, 0xFB, 0xFB, 0xF6, 0x08,
+ 0xF6, 0xFB, 0x46, 0x36, 0x46, 0x9B, 0xDB, 0xD6, 0xDB, 0x9B, 0x46, 0x36, 0x46, 0xFB, 0xF6, 0x08,
+ 0xFB, 0xFB, 0x46, 0x36, 0x9B, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0x9B, 0x36, 0x46, 0xFB, 0xFB, 0x08,
+ 0x96, 0x9B, 0x9B, 0x9B, 0x9B, 0xD6, 0xD6, 0x96, 0xD6, 0xD6, 0xDB, 0x9B, 0x9B, 0x9B, 0x96, 0x08,
+ 0xFB, 0xFB, 0x46, 0x36, 0x9B, 0xDB, 0xD6, 0xD6, 0xD6, 0xDB, 0x9B, 0x36, 0x46, 0xFB, 0xFB, 0x08,
+ 0xF6, 0xFB, 0x46, 0x36, 0x46, 0x9B, 0xDB, 0xD6, 0xDB, 0x9B, 0x46, 0x36, 0x46, 0xFB, 0xF6, 0x08,
+ 0xF6, 0xFB, 0xFB, 0x46, 0x9B, 0x46, 0x46, 0xDB, 0x46, 0x46, 0x9B, 0x46, 0xFB, 0xFB, 0xF6, 0x08,
+ 0xFD, 0xF6, 0xFB, 0x9B, 0x46, 0x36, 0x36, 0x9B, 0x36, 0x36, 0x46, 0x9B, 0xFB, 0xF6, 0xFD, 0x08,
+ 0xF6, 0xFB, 0x9B, 0xFB, 0xFB, 0x46, 0x46, 0x9B, 0x46, 0x46, 0xFB, 0xFB, 0x9B, 0xFB, 0xF6, 0x08,
+ 0xFB, 0x9B, 0xFB, 0xF6, 0xFB, 0xFB, 0xFB, 0x46, 0xFB, 0xFB, 0xFB, 0xF6, 0xFB, 0x9B, 0xFB, 0x08,
+ 0x96, 0xFB, 0xF6, 0xFD, 0xF6, 0xF6, 0xFB, 0x46, 0xFB, 0xF6, 0xF6, 0xFD, 0xF6, 0xFB, 0x9B, 0x08,
+ },
+ .collisionData = {0x0381, 0x0101, 0x0101, 0x6C1, 0x0821, 0x16D1, 0x2829, 0x2009, 0x1, 0x2009, 0x2829, 0x16D1, 0x0821, 0x6C1, 0x0101, 0x101},
+ .coords = {COORDS_XY(7,6), COORDS_XY(7,10)},
+ .direction = TRAINER_DIRS(DIR_SOUTH, DIR_NORTH),
+ .range = TRAINER_RANGE(3, 3),
}
},
};
+
+#undef COORDS_XY
+#undef TRAINER_DIRS
+#undef TRAINER_RANGE
diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h
index 008d7d784..f78fa2c8c 100644
--- a/src/data/battle_moves.h
+++ b/src/data/battle_moves.h
@@ -23,7 +23,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_KARATE_CHOP] =
@@ -36,7 +36,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_DOUBLE_SLAP] =
@@ -49,7 +49,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_COMET_PUNCH] =
@@ -62,7 +62,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_MEGA_PUNCH] =
@@ -75,7 +75,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_PAY_DAY] =
@@ -88,7 +88,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_FIRE_PUNCH] =
@@ -140,7 +140,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_VICE_GRIP] =
@@ -153,7 +153,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_GUILLOTINE] =
@@ -179,7 +179,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SWORDS_DANCE] =
@@ -205,7 +205,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_GUST] =
@@ -218,7 +218,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_WING_ATTACK] =
@@ -231,7 +231,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_WHIRLWIND] =
@@ -257,7 +257,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_BIND] =
@@ -270,7 +270,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SLAM] =
@@ -283,7 +283,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_VINE_WHIP] =
@@ -296,7 +296,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_STOMP] =
@@ -322,7 +322,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_MEGA_KICK] =
@@ -335,7 +335,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_JUMP_KICK] =
@@ -348,7 +348,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_ROLLING_KICK] =
@@ -361,7 +361,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 30,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SAND_ATTACK] =
@@ -374,7 +374,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_HEADBUTT] =
@@ -400,7 +400,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_FURY_ATTACK] =
@@ -413,7 +413,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_HORN_DRILL] =
@@ -439,7 +439,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_BODY_SLAM] =
@@ -465,7 +465,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_TAKE_DOWN] =
@@ -478,7 +478,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_THRASH] =
@@ -491,7 +491,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_RANDOM,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_DOUBLE_EDGE] =
@@ -504,7 +504,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_TAIL_WHIP] =
@@ -517,7 +517,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_POISON_STING] =
@@ -556,7 +556,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_LEER] =
@@ -569,7 +569,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_BITE] =
@@ -595,7 +595,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_ROAR] =
@@ -621,7 +621,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_SUPERSONIC] =
@@ -634,7 +634,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_SONIC_BOOM] =
@@ -647,7 +647,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_DISABLE] =
@@ -725,7 +725,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_HYDRO_PUMP] =
@@ -738,7 +738,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SURF] =
@@ -751,7 +751,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_ICE_BEAM] =
@@ -829,7 +829,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_PECK] =
@@ -842,7 +842,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_DRILL_PECK] =
@@ -855,7 +855,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SUBMISSION] =
@@ -868,7 +868,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_LOW_KICK] =
@@ -881,7 +881,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_COUNTER] =
@@ -907,7 +907,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_STRENGTH] =
@@ -920,7 +920,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_ABSORB] =
@@ -959,7 +959,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_GROWTH] =
@@ -985,7 +985,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SOLAR_BEAM] =
@@ -998,7 +998,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_POISON_POWDER] =
@@ -1011,7 +1011,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_STUN_SPORE] =
@@ -1024,7 +1024,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_SLEEP_POWDER] =
@@ -1037,7 +1037,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_PETAL_DANCE] =
@@ -1050,7 +1050,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_RANDOM,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_STRING_SHOT] =
@@ -1063,7 +1063,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_DRAGON_RAGE] =
@@ -1076,7 +1076,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_FIRE_SPIN] =
@@ -1089,7 +1089,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_THUNDER_SHOCK] =
@@ -1128,7 +1128,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_THUNDER] =
@@ -1154,7 +1154,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_EARTHQUAKE] =
@@ -1167,7 +1167,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_FOES_AND_ALLY,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_FISSURE] =
@@ -1193,7 +1193,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_TOXIC] =
@@ -1206,7 +1206,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_CONFUSION] =
@@ -1245,7 +1245,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_MEDITATE] =
@@ -1284,7 +1284,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 1,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_RAGE] =
@@ -1297,7 +1297,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_TELEPORT] =
@@ -1323,7 +1323,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_MIMIC] =
@@ -1349,7 +1349,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_DOUBLE_TEAM] =
@@ -1414,7 +1414,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_CONFUSE_RAY] =
@@ -1427,7 +1427,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_WITHDRAW] =
@@ -1531,7 +1531,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_USER,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_METRONOME] =
@@ -1570,7 +1570,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_FOES_AND_ALLY,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_EGG_BOMB] =
@@ -1583,7 +1583,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_LICK] =
@@ -1661,7 +1661,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_CLAMP] =
@@ -1674,7 +1674,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SWIFT] =
@@ -1687,7 +1687,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SKULL_BASH] =
@@ -1700,7 +1700,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SPIKE_CANNON] =
@@ -1713,7 +1713,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_CONSTRICT] =
@@ -1778,7 +1778,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_GLARE] =
@@ -1791,7 +1791,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_DREAM_EATER] =
@@ -1817,7 +1817,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_BARRAGE] =
@@ -1830,7 +1830,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_LEECH_LIFE] =
@@ -1856,7 +1856,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_SKY_ATTACK] =
@@ -1869,7 +1869,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 30,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_TRANSFORM] =
@@ -1921,7 +1921,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_FLASH] =
@@ -1934,7 +1934,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_PSYWAVE] =
@@ -1947,7 +1947,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SPLASH] =
@@ -1986,7 +1986,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_EXPLOSION] =
@@ -1999,7 +1999,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_FOES_AND_ALLY,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_FURY_SWIPES] =
@@ -2012,7 +2012,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_BONEMERANG] =
@@ -2025,7 +2025,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_REST] =
@@ -2129,7 +2129,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SUBSTITUTE] =
@@ -2155,7 +2155,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SKETCH] =
@@ -2181,7 +2181,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_THIEF] =
@@ -2207,7 +2207,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_MIND_READER] =
@@ -2259,7 +2259,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 30,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_CURSE] =
@@ -2285,7 +2285,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_CONVERSION_2] =
@@ -2311,7 +2311,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_COTTON_SPORE] =
@@ -2324,7 +2324,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_REVERSAL] =
@@ -2337,7 +2337,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SPITE] =
@@ -2389,7 +2389,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 1,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SCARY_FACE] =
@@ -2402,7 +2402,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_FAINT_ATTACK] =
@@ -2415,7 +2415,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SWEET_KISS] =
@@ -2428,7 +2428,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_BELLY_DRUM] =
@@ -2584,7 +2584,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_LOCK_ON] =
@@ -2610,7 +2610,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_RANDOM,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SANDSTORM] =
@@ -2662,7 +2662,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_ROLLOUT] =
@@ -2675,7 +2675,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_FALSE_SWIPE] =
@@ -2688,7 +2688,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SWAGGER] =
@@ -2701,7 +2701,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_MILK_DRINK] =
@@ -2740,7 +2740,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_STEEL_WING] =
@@ -2753,7 +2753,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 10,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_MEAN_LOOK] =
@@ -2766,7 +2766,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_ATTRACT] =
@@ -2779,7 +2779,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_SLEEP_TALK] =
@@ -2818,7 +2818,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_PRESENT] =
@@ -2844,7 +2844,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SAFEGUARD] =
@@ -2896,7 +2896,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_FOES_AND_ALLY,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_DYNAMIC_PUNCH] =
@@ -2922,7 +2922,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_DRAGON_BREATH] =
@@ -2935,7 +2935,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 30,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_BATON_PASS] =
@@ -2987,7 +2987,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SWEET_SCENT] =
@@ -3000,7 +3000,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_IRON_TAIL] =
@@ -3039,7 +3039,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = -1,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_MORNING_SUN] =
@@ -3091,7 +3091,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_CROSS_CHOP] =
@@ -3104,7 +3104,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_TWISTER] =
@@ -3117,7 +3117,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 20,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_RAIN_DANCE] =
@@ -3195,7 +3195,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 1,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_ANCIENT_POWER] =
@@ -3260,7 +3260,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_BEAT_UP] =
@@ -3273,7 +3273,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_FAKE_OUT] =
@@ -3299,7 +3299,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_RANDOM,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_STOCKPILE] =
@@ -3325,7 +3325,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SWALLOW] =
@@ -3390,7 +3390,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_WILL_O_WISP] =
@@ -3403,7 +3403,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_MEMENTO] =
@@ -3637,7 +3637,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = -4,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_BRICK_BREAK] =
@@ -3650,7 +3650,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_YAWN] =
@@ -3663,7 +3663,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_KNOCK_OFF] =
@@ -3689,7 +3689,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_ERUPTION] =
@@ -3702,7 +3702,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SKILL_SWAP] =
@@ -3793,7 +3793,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_ARM_THRUST] =
@@ -3806,7 +3806,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_CAMOUFLAGE] =
@@ -3871,7 +3871,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_TEETER_DANCE] =
@@ -3923,7 +3923,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_NEEDLE_ARM] =
@@ -4001,7 +4001,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_HYDRO_CANNON] =
@@ -4014,7 +4014,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_METEOR_MASH] =
@@ -4027,7 +4027,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 20,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_ASTONISH] =
@@ -4053,7 +4053,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_AROMATHERAPY] =
@@ -4079,7 +4079,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_AIR_CUTTER] =
@@ -4092,7 +4092,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_OVERHEAT] =
@@ -4105,7 +4105,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_ODOR_SLEUTH] =
@@ -4144,7 +4144,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 10,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_METAL_SOUND] =
@@ -4157,7 +4157,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_GRASS_WHISTLE] =
@@ -4170,7 +4170,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_TICKLE] =
@@ -4183,7 +4183,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_COSMIC_POWER] =
@@ -4222,7 +4222,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 10,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SHADOW_PUNCH] =
@@ -4235,7 +4235,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_EXTRASENSORY] =
@@ -4261,7 +4261,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SAND_TOMB] =
@@ -4274,7 +4274,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SHEER_COLD] =
@@ -4300,7 +4300,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 30,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_BULLET_SEED] =
@@ -4313,7 +4313,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_AERIAL_ACE] =
@@ -4326,7 +4326,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_ICICLE_SPEAR] =
@@ -4339,7 +4339,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_IRON_DEFENSE] =
@@ -4365,7 +4365,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_HOWL] =
@@ -4391,7 +4391,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_FRENZY_PLANT] =
@@ -4404,7 +4404,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_BULK_UP] =
@@ -4430,7 +4430,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 30,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_MUD_SHOT] =
@@ -4443,7 +4443,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_POISON_TAIL] =
@@ -4456,7 +4456,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 10,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_COVET] =
@@ -4482,7 +4482,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_MAGICAL_LEAF] =
@@ -4495,7 +4495,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_WATER_SPORT] =
@@ -4534,7 +4534,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_DRAGON_DANCE] =
@@ -4560,7 +4560,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SHOCK_WAVE] =
@@ -4573,7 +4573,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_WATER_PULSE] =
@@ -4586,7 +4586,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 20,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_DOOM_DESIRE] =
@@ -4612,6 +4612,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
};
diff --git a/src/data/contest_opponents.h b/src/data/contest_opponents.h
index 6de931ef2..127457bbe 100644
--- a/src/data/contest_opponents.h
+++ b/src/data/contest_opponents.h
@@ -1,7 +1,6 @@
#include "global.h"
#include "contest.h"
-#include "constants/species.h"
#define CONTEST_OPPONENT_JIMMY 0
#define CONTEST_OPPONENT_EDITH 1
diff --git a/src/data/easy_chat/easy_chat_group_pokemon.h b/src/data/easy_chat/easy_chat_group_pokemon.h
index 9993a5144..a6e1c48ea 100755
--- a/src/data/easy_chat/easy_chat_group_pokemon.h
+++ b/src/data/easy_chat/easy_chat_group_pokemon.h
@@ -1,5 +1,3 @@
-#include "constants/species.h"
-
const u16 gEasyChatGroup_Pokemon[] = {
SPECIES_ABRA,
SPECIES_ABSOL,
diff --git a/src/data/easy_chat/easy_chat_group_pokemon2.h b/src/data/easy_chat/easy_chat_group_pokemon2.h
index 35b0a03cb..44dce0cc8 100755
--- a/src/data/easy_chat/easy_chat_group_pokemon2.h
+++ b/src/data/easy_chat/easy_chat_group_pokemon2.h
@@ -1,5 +1,3 @@
-#include "constants/species.h"
-
const u16 gEasyChatGroup_Pokemon2[] = {
SPECIES_ABRA,
SPECIES_AERODACTYL,
diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h
index 1626b9f32..4fc3ecff6 100755
--- a/src/data/field_effects/field_effect_objects.h
+++ b/src/data/field_effects/field_effect_objects.h
@@ -1286,4 +1286,4 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza = {
.callback = UpdateRayquazaSpotlightEffect,
};
-static const struct SpritePalette sSpritePalette_Unused = {gObjectEventPalette2, FLDEFF_PAL_TAG_UNKNOWN};
+static const struct SpritePalette sSpritePalette_Unused = {gObjectEventPal_Npc3, FLDEFF_PAL_TAG_UNKNOWN};
diff --git a/src/data/graphics/rayquaza_scene.h b/src/data/graphics/rayquaza_scene.h
index d0269980c..633213db8 100644
--- a/src/data/graphics/rayquaza_scene.h
+++ b/src/data/graphics/rayquaza_scene.h
@@ -1,73 +1,62 @@
-const u32 gRaySceneGroudon_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/groudon.4bpp.lz");
-const u32 gRaySceneGroudon2_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/groudon_shoulder.4bpp.lz");
-const u32 gRaySceneGroudon3_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/groudon_claw.4bpp.lz");
-
-const u32 gRaySceneKyogre_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/kyogre.4bpp.lz");
-const u32 gRaySceneKyogre2_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/kyogre_shoulder.4bpp.lz");
-const u32 gRaySceneKyogre3_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/kyogre_fin.4bpp.lz");
-
-const u32 gRaySceneGroudon_Pal[] = INCBIN_U32("graphics/rayquaza_scene/groudon.gbapal.lz");
-const u32 gRaySceneKyogre_Pal[] = INCBIN_U32("graphics/rayquaza_scene/kyogre.gbapal.lz");
-
-const u32 gRaySceneClouds_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/clouds.4bpp.lz");
-const u32 gRaySceneClouds_Pal[] = INCBIN_U32("graphics/rayquaza_scene/clouds.gbapal.lz"); // pal 1 clouds, pal 2 rain
-const u32 gRaySceneClouds1_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/clouds1.bin.lz");
-const u32 gRaySceneClouds2_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/clouds2.bin.lz");
-const u32 gRaySceneClouds3_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/clouds3.bin.lz");
-
-const u32 gRaySceneSmoke_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/smoke.4bpp.lz");
-const u32 gRaySceneSmoke_Pal[] = INCBIN_U32("graphics/rayquaza_scene/smoke.gbapal.lz");
-
-const u32 gRaySceneRayquaza_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza.8bpp.lz");
-const u32 gRaySceneRayquaza_Pal[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza.gbapal.lz");
-const u32 gRaySceneRayquaza_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza.bin.lz");
-
-const u32 gRaySceneOvercast_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/overcast.4bpp.lz"); // uses pal 2 of gRaySceneRayquaza_Pal
-const u32 gRaySceneOvercast_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/overcast.bin.lz");
-
-const u32 gRaySceneRayquazaFly1_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza_fly1.4bpp.lz");
-const u32 gRaySceneRayquazaTail_Gfx[] = INCBIN_U32( "graphics/rayquaza_scene/rayquaza_tail_fix.4bpp.lz"); // for some reason there are an extra 0xC bytes at the end of the original 4bpp, so in order to produce the correct lz, we have to cat the bytes at the end with a make rule. not sure why those bytes are there, it may have been a bug in Game Freak's software.
-
-const u32 gRaySceneOvercast2_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/overcast2.4bpp.lz");
-
-const u32 gRaySceneRayquazaLight_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza_light.4bpp.lz"); // uses pal 2 of gRaySceneOvercast2_Pal
-
-const u32 gRaySceneOvercast2_Pal[] = INCBIN_U32("graphics/rayquaza_scene/overcast2.gbapal.lz");
-const u32 gRaySceneOvercast2_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/overcast2.bin.lz");
-
-const u32 gRaySceneRayquazaLight_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza_light.bin.lz");
-
-const u32 gRaySceneChaseBg_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/chase_bg.4bpp.lz");
-const u32 gRaySceneChaseBg_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/chase_bg.bin.lz");
-
-const u32 gRaySceneChaseStreaks_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/chase_streaks.4bpp.lz");
-const u32 gRaySceneChaseStreaks_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/chase_streaks.bin.lz");
-
-const u32 gRaySceneRayquazaChase_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza_chase.4bpp.lz");
-const u32 gRayChaseRayquazaChase_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza_chase.bin.lz");
-const u32 gRayChaseRayquazaChase2_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza_chase2.bin.lz");
-
-const u32 gRaySceneChase_Pal[] = INCBIN_U32("graphics/rayquaza_scene/chase.gbapal.lz");
-
-const u32 gRaySceneGroudonLeft_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/groudon_left.4bpp.lz");
-const u32 gRaySceneGroudonTail_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/groudon_tail.4bpp.lz");
-
-const u32 gRaySceneKyogreRight_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/kyogre_right.4bpp.lz");
-
-const u32 gRaySceneRayquazaHover_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza_hover.4bpp.lz");
-const u32 gRaySceneRayquazaFlyIn_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza_flyin.4bpp.lz");
-
-const u32 gRaySceneSplash_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/splash.4bpp.lz");
-
-const u32 gRaySceneGroudonLeft_Pal[] = INCBIN_U32("graphics/rayquaza_scene/groudon_left.gbapal.lz");
-const u32 gRaySceneKyogreRight_Pal[] = INCBIN_U32("graphics/rayquaza_scene/kyogre_right.gbapal.lz");
-const u32 gRaySceneRayquazaHover_Pal[] = INCBIN_U32("graphics/rayquaza_scene/rayquaza_hover.gbapal.lz");
-
-const u32 gRaySceneSplash_Pal[] = INCBIN_U32("graphics/rayquaza_scene/splash.gbapal.lz");
-
-const u32 gRaySceneHushBg_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/hush_bg.4bpp.lz");
-const u32 gRaySceneHushRing_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/hush_ring.8bpp.lz");
-const u32 gRaySceneHushBg_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/hush_bg.bin.lz");
-const u32 gRaySceneHushRing_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/hush_ring.bin.lz");
-const u32 gRaySceneHushRing_Map[] = INCBIN_U32("graphics/rayquaza_scene/hush_ring_map.bin.lz");
-const u32 gRaySceneHushBg_Pal[] = INCBIN_U32("graphics/rayquaza_scene/hush_bg.gbapal.lz");
+// Scene 1 (RAY_ANIM_DUO_FIGHT / RAY_ANIM_DUO_FIGHT_PRE)
+const u32 gRaySceneDuoFight_Groudon_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/groudon.4bpp.lz");
+const u32 gRaySceneDuoFight_GroudonShoulder_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/groudon_shoulder.4bpp.lz");
+const u32 gRaySceneDuoFight_GroudonClaw_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/groudon_claw.4bpp.lz");
+const u32 gRaySceneDuoFight_Kyogre_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/kyogre.4bpp.lz");
+const u32 gRaySceneDuoFight_KyogrePectoralFin_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/kyogre_pectoral_fin.4bpp.lz");
+const u32 gRaySceneDuoFight_KyogreDorsalFin_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/kyogre_dorsal_fin.4bpp.lz");
+const u32 gRaySceneDuoFight_Groudon_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/groudon.gbapal.lz");
+const u32 gRaySceneDuoFight_Kyogre_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/kyogre.gbapal.lz");
+const u32 gRaySceneDuoFight_Clouds_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds.4bpp.lz");
+const u32 gRaySceneDuoFight_Clouds_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds.gbapal.lz"); // pal 1 clouds, pal 2 rain
+const u32 gRaySceneDuoFight_Clouds1_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds1.bin.lz");
+const u32 gRaySceneDuoFight_Clouds2_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds2.bin.lz");
+const u32 gRaySceneDuoFight_Clouds3_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_1/clouds3.bin.lz");
+
+// Scene 2 (RAY_ANIM_TAKES_FLIGHT)
+const u32 gRaySceneTakesFlight_Smoke_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/smoke.4bpp.lz");
+const u32 gRaySceneTakesFlight_Smoke_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/smoke.gbapal.lz");
+const u32 gRaySceneTakesFlight_Rayquaza_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/rayquaza.8bpp.lz");
+const u32 gRaySceneTakesFlight_Rayquaza_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/rayquaza.gbapal.lz");
+const u32 gRaySceneTakesFlight_Rayquaza_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/rayquaza.bin.lz");
+const u32 gRaySceneTakesFlight_Bg_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/bg.4bpp.lz"); // uses pal 2 of gRaySceneTakesFlight_Rayquaza_Pal
+const u32 gRaySceneTakesFlight_Bg_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_2/bg.bin.lz");
+
+// Scene 3 (RAY_ANIM_DESCENDS)
+const u32 gRaySceneDescends_Rayquaza_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/rayquaza.4bpp.lz");
+// for some reason there are an extra 0xC bytes at the end of the original rayquaza_tail.4bpp, so in order to produce the correct lz,
+// we have to cat the bytes at the end with a make rule. not sure why those bytes are there, it may have been a bug in Game Freak's software.
+const u32 gRaySceneDescends_RayquazaTail_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/rayquaza_tail_fix.4bpp.lz");
+const u32 gRaySceneDescends_Bg_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/bg.4bpp.lz");
+const u32 gRaySceneDescends_Light_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/light.4bpp.lz"); // uses pal 2 of gRaySceneDescends_Bg_Pal
+const u32 gRaySceneDescends_Bg_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/bg.gbapal.lz");
+const u32 gRaySceneDescends_Bg_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/bg.bin.lz");
+const u32 gRaySceneDescends_Light_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_3/light.bin.lz");
+
+// Scene 4 (RAY_ANIM_CHARGES)
+const u32 gRaySceneCharges_Bg_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/bg.4bpp.lz");
+const u32 gRaySceneCharges_Bg_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/bg.bin.lz");
+const u32 gRaySceneCharges_Streaks_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/streaks.4bpp.lz");
+const u32 gRaySceneCharges_Streaks_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/streaks.bin.lz");
+const u32 gRaySceneCharges_Rayquaza_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/rayquaza.4bpp.lz");
+const u32 gRaySceneCharges_Rayquaza_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/rayquaza.bin.lz");
+const u32 gRaySceneCharges_Orbs_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/orbs.bin.lz");
+const u32 gRaySceneCharges_Bg_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_4/bg.gbapal.lz");
+
+// Scene 5 (RAY_ANIM_CHASES_AWAY)
+const u32 gRaySceneChasesAway_Groudon_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/groudon.4bpp.lz");
+const u32 gRaySceneChasesAway_GroudonTail_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/groudon_tail.4bpp.lz");
+const u32 gRaySceneChasesAway_Kyogre_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/kyogre.4bpp.lz");
+const u32 gRaySceneChasesAway_Rayquaza_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/rayquaza.4bpp.lz");
+const u32 gRaySceneChasesAway_RayquazaTail_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/rayquaza_tail.4bpp.lz");
+const u32 gRaySceneChasesAway_KyogreSplash_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/kyogre_splash.4bpp.lz");
+const u32 gRaySceneChasesAway_Groudon_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/groudon.gbapal.lz");
+const u32 gRaySceneChasesAway_Kyogre_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/kyogre.gbapal.lz");
+const u32 gRaySceneChasesAway_Rayquaza_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/rayquaza.gbapal.lz");
+const u32 gRaySceneChasesAway_KyogreSplash_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/kyogre_splash.gbapal.lz");
+const u32 gRaySceneChasesAway_Light_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/light.4bpp.lz");
+const u32 gRaySceneChasesAway_Ring_Gfx[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/ring.8bpp.lz");
+const u32 gRaySceneChasesAway_Light_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/light.bin.lz");
+const u32 gRaySceneChasesAway_Bg_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/bg.bin.lz");
+const u32 gRaySceneChasesAway_Ring_Tilemap[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/ring.bin.lz");
+const u32 gRaySceneChasesAway_Bg_Pal[] = INCBIN_U32("graphics/rayquaza_scene/scene_5/bg.gbapal.lz");
diff --git a/src/data/graphics/trainers.h b/src/data/graphics/trainers.h
index 3de77d6ec..206d73a88 100644
--- a/src/data/graphics/trainers.h
+++ b/src/data/graphics/trainers.h
@@ -7,8 +7,8 @@ const u32 gTrainerPalette_AquaGruntM[] = INCBIN_U32("graphics/trainers/palettes/
const u32 gTrainerFrontPic_PokemonBreederF[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_breeder_f_front_pic.4bpp.lz");
const u32 gTrainerPalette_PokemonBreederF[] = INCBIN_U32("graphics/trainers/palettes/pokemon_breeder_f.gbapal.lz");
-const u32 gTrainerFrontPic_CoolTrainerM[] = INCBIN_U32("graphics/trainers/front_pics/cool_trainer_m_front_pic.4bpp.lz");
-const u32 gTrainerPalette_CoolTrainerM[] = INCBIN_U32("graphics/trainers/palettes/cool_trainer_m.gbapal.lz");
+const u32 gTrainerFrontPic_CoolTrainerM[] = INCBIN_U32("graphics/trainers/front_pics/cooltrainer_m_front_pic.4bpp.lz");
+const u32 gTrainerPalette_CoolTrainerM[] = INCBIN_U32("graphics/trainers/palettes/cooltrainer_m.gbapal.lz");
const u32 gTrainerFrontPic_BirdKeeper[] = INCBIN_U32("graphics/trainers/front_pics/bird_keeper_front_pic.4bpp.lz");
const u32 gTrainerPalette_BirdKeeper[] = INCBIN_U32("graphics/trainers/palettes/bird_keeper.gbapal.lz");
@@ -58,8 +58,8 @@ const u32 gTrainerPalette_TuberF[] = INCBIN_U32("graphics/trainers/palettes/tube
const u32 gTrainerFrontPic_TuberM[] = INCBIN_U32("graphics/trainers/front_pics/tuber_m_front_pic.4bpp.lz");
const u32 gTrainerPalette_TuberM[] = INCBIN_U32("graphics/trainers/palettes/tuber_m.gbapal.lz");
-const u32 gTrainerFrontPic_CoolTrainerF[] = INCBIN_U32("graphics/trainers/front_pics/cool_trainer_f_front_pic.4bpp.lz");
-const u32 gTrainerPalette_CoolTrainerF[] = INCBIN_U32("graphics/trainers/palettes/cool_trainer_f.gbapal.lz");
+const u32 gTrainerFrontPic_CoolTrainerF[] = INCBIN_U32("graphics/trainers/front_pics/cooltrainer_f_front_pic.4bpp.lz");
+const u32 gTrainerPalette_CoolTrainerF[] = INCBIN_U32("graphics/trainers/palettes/cooltrainer_f.gbapal.lz");
const u32 gTrainerFrontPic_Lady[] = INCBIN_U32("graphics/trainers/front_pics/lady_front_pic.4bpp.lz");
const u32 gTrainerPalette_Lady[] = INCBIN_U32("graphics/trainers/palettes/lady.gbapal.lz");
diff --git a/src/data/lilycove_lady.h b/src/data/lilycove_lady.h
index 738a6dc12..37bae7e95 100644
--- a/src/data/lilycove_lady.h
+++ b/src/data/lilycove_lady.h
@@ -1,7 +1,6 @@
#include "constants/easy_chat.h"
#include "constants/event_objects.h"
#include "constants/items.h"
-#include "constants/species.h"
#include "constants/moves.h"
static const u16 sContestLadyMonGfxId[] =
@@ -9,7 +8,7 @@ static const u16 sContestLadyMonGfxId[] =
OBJ_EVENT_GFX_ZIGZAGOON_1,
OBJ_EVENT_GFX_SKITTY,
OBJ_EVENT_GFX_POOCHYENA,
- OBJ_EVENT_GFX_KECLEON_1,
+ OBJ_EVENT_GFX_KECLEON,
OBJ_EVENT_GFX_PIKACHU
};
diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h
index 50fc6715c..81d83a856 100755
--- a/src/data/object_events/object_event_graphics.h
+++ b/src/data/object_events/object_event_graphics.h
@@ -1,26 +1,26 @@
const u32 gObjectEventPic_BrendanNormal[] = INCBIN_U32("graphics/object_events/pics/people/brendan/walking.4bpp");
const u32 gObjectEventPic_BrendanRunning[] = INCBIN_U32("graphics/object_events/pics/people/brendan/running.4bpp");
-const u16 gObjectEventPalette8[] = INCBIN_U16("graphics/object_events/palettes/08.gbapal");
+const u16 gObjectEventPal_Brendan[] = INCBIN_U16("graphics/object_events/palettes/brendan.gbapal");
const u32 gObjectEventPic_RubySapphireBrendanNormal[] = INCBIN_U32("graphics/object_events/pics/people/ruby_sapphire_brendan/walking.4bpp");
const u32 gObjectEventPic_RubySapphireBrendanRunning[] = INCBIN_U32("graphics/object_events/pics/people/ruby_sapphire_brendan/running.4bpp");
-const u16 gObjectEventPalette33[] = INCBIN_U16("graphics/object_events/palettes/33.gbapal");
-const u16 gObjectEventPaletteNull1[16] = {};
-const u16 gObjectEventPaletteNull2[16] = {};
-const u16 gObjectEventPaletteNull3[16] = {};
-const u16 gObjectEventPaletteNull4[16] = {};
-const u16 gObjectEventPaletteNull5[16] = {};
-const u16 gObjectEventPaletteNull6[16] = {};
-const u16 gObjectEventPaletteNull7[16] = {};
-const u16 gObjectEventPaletteNull8[16] = {};
-const u16 gObjectEventPaletteNull9[16] = {};
-const u16 gObjectEventPaletteNull10[16] = {};
-const u16 gObjectEventPaletteNull11[16] = {};
-const u16 gObjectEventPaletteNull12[16] = {};
-const u16 gObjectEventPaletteNull13[16] = {};
-const u16 gObjectEventPaletteNull14[16] = {};
-const u16 gObjectEventPaletteNull15[16] = {};
-const u16 gObjectEventPalette9[] = INCBIN_U16("graphics/object_events/palettes/09.gbapal");
-const u16 gObjectEventPalette10[] = INCBIN_U16("graphics/object_events/palettes/10.gbapal");
+const u16 gObjectEventPal_RubySapphireBrendan[] = INCBIN_U16("graphics/object_events/palettes/ruby_sapphire_brendan.gbapal");
+const u16 gObjectEventPal_Null1[16] = {};
+const u16 gObjectEventPal_Null2[16] = {};
+const u16 gObjectEventPal_Null3[16] = {};
+const u16 gObjectEventPal_Null4[16] = {};
+const u16 gObjectEventPal_Null5[16] = {};
+const u16 gObjectEventPal_Null6[16] = {};
+const u16 gObjectEventPal_Null7[16] = {};
+const u16 gObjectEventPal_Null8[16] = {};
+const u16 gObjectEventPal_Null9[16] = {};
+const u16 gObjectEventPal_Null10[16] = {};
+const u16 gObjectEventPal_Null11[16] = {};
+const u16 gObjectEventPal_Null12[16] = {};
+const u16 gObjectEventPal_Null13[16] = {};
+const u16 gObjectEventPal_Null14[16] = {};
+const u16 gObjectEventPal_Null15[16] = {};
+const u16 gObjectEventPal_BrendanReflection[] = INCBIN_U16("graphics/object_events/palettes/brendan_reflection.gbapal");
+const u16 gObjectEventPal_BridgeReflection[] = INCBIN_U16("graphics/object_events/palettes/bridge_reflection.gbapal");
const u32 gObjectEventPic_BrendanFieldMove[] = INCBIN_U32("graphics/object_events/pics/people/brendan/field_move.4bpp");
const u32 gObjectEventPic_BrendanSurfing[] = INCBIN_U32("graphics/object_events/pics/people/brendan/surfing.4bpp");
const u32 gObjectEventPic_BrendanMachBike[] = INCBIN_U32("graphics/object_events/pics/people/brendan/mach_bike.4bpp");
@@ -31,43 +31,43 @@ const u32 gObjectEventPic_BrendanDecorating[] = INCBIN_U32("graphics/object_even
const u32 gObjectEventPic_MayDecorating[] = INCBIN_U32("graphics/object_events/pics/people/may/decorating.4bpp");
const u32 gObjectEventPic_BrendanUnderwater[] = INCBIN_U32("graphics/object_events/pics/people/brendan/underwater.4bpp");
const u32 gObjectEventPic_MayUnderwater[] = INCBIN_U32("graphics/object_events/pics/people/may/underwater.4bpp");
-const u16 gObjectEventPalette11[] = INCBIN_U16("graphics/object_events/palettes/11.gbapal");
+const u16 gObjectEventPal_PlayerUnderwater[] = INCBIN_U16("graphics/object_events/palettes/player_underwater.gbapal");
const u32 gObjectEventPic_MayNormal[] = INCBIN_U32("graphics/object_events/pics/people/may/walking.4bpp");
const u32 gObjectEventPic_MayRunning[] = INCBIN_U32("graphics/object_events/pics/people/may/running.4bpp");
-const u16 gObjectEventPalette17[] = INCBIN_U16("graphics/object_events/palettes/17.gbapal");
-const u16 gObjectEventPalette18[] = INCBIN_U16("graphics/object_events/palettes/18.gbapal");
+const u16 gObjectEventPal_May[] = INCBIN_U16("graphics/object_events/palettes/may.gbapal");
+const u16 gObjectEventPal_MayReflection[] = INCBIN_U16("graphics/object_events/palettes/may_reflection.gbapal");
const u32 gObjectEventPic_RubySapphireMayNormal[] = INCBIN_U32("graphics/object_events/pics/people/ruby_sapphire_may/walking.4bpp");
const u32 gObjectEventPic_RubySapphireMayRunning[] = INCBIN_U32("graphics/object_events/pics/people/ruby_sapphire_may/running.4bpp");
-const u16 gObjectEventPalette34[] = INCBIN_U16("graphics/object_events/palettes/34.gbapal");
+const u16 gObjectEventPal_RubySapphireMay[] = INCBIN_U16("graphics/object_events/palettes/ruby_sapphire_may.gbapal");
const u16 gUnusedObjectEventPalette[] = INCBIN_U16("graphics/object_events/palettes/unused_palette.gbapal");
-const u16 gObjectEventPaletteNull16[16] = {};
-const u16 gObjectEventPaletteNull17[16] = {};
-const u16 gObjectEventPaletteNull18[16] = {};
-const u16 gObjectEventPaletteNull19[16] = {};
-const u16 gObjectEventPaletteNull20[16] = {};
-const u16 gObjectEventPaletteNull21[16] = {};
-const u16 gObjectEventPaletteNull22[16] = {};
-const u16 gObjectEventPaletteNull23[16] = {};
-const u16 gObjectEventPaletteNull24[16] = {};
-const u16 gObjectEventPaletteNull25[16] = {};
-const u16 gObjectEventPaletteNull26[16] = {};
-const u16 gObjectEventPaletteNull27[16] = {};
-const u16 gObjectEventPaletteNull28[16] = {};
-const u16 gObjectEventPaletteNull29[16] = {};
+const u16 gObjectEventPal_Null16[16] = {};
+const u16 gObjectEventPal_Null17[16] = {};
+const u16 gObjectEventPal_Null18[16] = {};
+const u16 gObjectEventPal_Null19[16] = {};
+const u16 gObjectEventPal_Null20[16] = {};
+const u16 gObjectEventPal_Null21[16] = {};
+const u16 gObjectEventPal_Null22[16] = {};
+const u16 gObjectEventPal_Null23[16] = {};
+const u16 gObjectEventPal_Null24[16] = {};
+const u16 gObjectEventPal_Null25[16] = {};
+const u16 gObjectEventPal_Null26[16] = {};
+const u16 gObjectEventPal_Null27[16] = {};
+const u16 gObjectEventPal_Null28[16] = {};
+const u16 gObjectEventPal_Null29[16] = {};
const u32 gObjectEventPic_MayMachBike[] = INCBIN_U32("graphics/object_events/pics/people/may/mach_bike.4bpp");
const u32 gObjectEventPic_MayAcroBike[] = INCBIN_U32("graphics/object_events/pics/people/may/acro_bike.4bpp");
const u32 gObjectEventPic_MaySurfing[] = INCBIN_U32("graphics/object_events/pics/people/may/surfing.4bpp");
const u32 gObjectEventPic_MayFieldMove[] = INCBIN_U32("graphics/object_events/pics/people/may/field_move.4bpp");
const u32 gObjectEventPic_MayFishing[] = INCBIN_U32("graphics/object_events/pics/people/may/fishing.4bpp");
const u32 gObjectEventPic_MayWatering[] = INCBIN_U32("graphics/object_events/pics/people/may/watering.4bpp");
-const u16 gObjectEventPalette0[] = INCBIN_U16("graphics/object_events/palettes/00.gbapal");
-const u16 gObjectEventPalette1[] = INCBIN_U16("graphics/object_events/palettes/01.gbapal");
-const u16 gObjectEventPalette2[] = INCBIN_U16("graphics/object_events/palettes/02.gbapal");
-const u16 gObjectEventPalette3[] = INCBIN_U16("graphics/object_events/palettes/03.gbapal");
-const u16 gObjectEventPalette4[] = INCBIN_U16("graphics/object_events/palettes/04.gbapal");
-const u16 gObjectEventPalette5[] = INCBIN_U16("graphics/object_events/palettes/05.gbapal");
-const u16 gObjectEventPalette6[] = INCBIN_U16("graphics/object_events/palettes/06.gbapal");
-const u16 gObjectEventPalette7[] = INCBIN_U16("graphics/object_events/palettes/07.gbapal");
+const u16 gObjectEventPal_Npc1[] = INCBIN_U16("graphics/object_events/palettes/npc_1.gbapal");
+const u16 gObjectEventPal_Npc2[] = INCBIN_U16("graphics/object_events/palettes/npc_2.gbapal");
+const u16 gObjectEventPal_Npc3[] = INCBIN_U16("graphics/object_events/palettes/npc_3.gbapal");
+const u16 gObjectEventPal_Npc4[] = INCBIN_U16("graphics/object_events/palettes/npc_4.gbapal");
+const u16 gObjectEventPal_Npc1Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_1_reflection.gbapal");
+const u16 gObjectEventPal_Npc2Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_2_reflection.gbapal");
+const u16 gObjectEventPal_Npc3Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_3_reflection.gbapal");
+const u16 gObjectEventPal_Npc4Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_4_reflection.gbapal");
const u32 gObjectEventPic_NinjaBoy[] = INCBIN_U32("graphics/object_events/pics/people/ninja_boy.4bpp");
const u32 gObjectEventPic_Twin[] = INCBIN_U32("graphics/object_events/pics/people/twin.4bpp");
const u32 gObjectEventPic_Boy1[] = INCBIN_U32("graphics/object_events/pics/people/boy_1.4bpp");
@@ -177,10 +177,10 @@ const u32 gObjectEventPic_Wingull[] = INCBIN_U32("graphics/object_events/pics/po
const u32 gObjectEventPic_TuberMSwimming[] = INCBIN_U32("graphics/object_events/pics/people/tuber_m_swimming.4bpp");
const u32 gObjectEventPic_Azurill[] = INCBIN_U32("graphics/object_events/pics/pokemon/azurill.4bpp");
const u32 gObjectEventPic_Mom[] = INCBIN_U32("graphics/object_events/pics/people/mom.4bpp");
-const u16 gObjectEventPalette22[] = INCBIN_U16("graphics/object_events/palettes/22.gbapal");
-const u16 gObjectEventPalette23[] = INCBIN_U16("graphics/object_events/palettes/23.gbapal");
-const u16 gObjectEventPalette24[] = INCBIN_U16("graphics/object_events/palettes/24.gbapal");
-const u16 gObjectEventPalette25[] = INCBIN_U16("graphics/object_events/palettes/25.gbapal");
+const u16 gObjectEventPal_Kyogre[] = INCBIN_U16("graphics/object_events/palettes/kyogre.gbapal");
+const u16 gObjectEventPal_KyogreReflection[] = INCBIN_U16("graphics/object_events/palettes/kyogre_reflection.gbapal");
+const u16 gObjectEventPal_Groudon[] = INCBIN_U16("graphics/object_events/palettes/groudon.gbapal");
+const u16 gObjectEventPal_GroudonReflection[] = INCBIN_U16("graphics/object_events/palettes/groudon_reflection.gbapal");
const u32 gObjectEventPic_UnusedNatuDoll[] = INCBIN_U32("graphics/object_events/pics/dolls/unused_natu_doll.4bpp");
const u32 gObjectEventPic_UnusedMagnemiteDoll[] = INCBIN_U32("graphics/object_events/pics/dolls/unused_magnemite_doll.4bpp");
const u32 gObjectEventPic_UnusedSquirtleDoll[] = INCBIN_U32("graphics/object_events/pics/dolls/unused_squirtle_doll.4bpp");
@@ -238,20 +238,20 @@ const u32 gObjectEventPic_PushableBoulder[] = INCBIN_U32("graphics/object_events
const u32 gObjectEventPic_MrBrineysBoat[] = INCBIN_U32("graphics/object_events/pics/misc/mr_brineys_boat.4bpp");
const u32 gObjectEventPic_Fossil[] = INCBIN_U32("graphics/object_events/pics/misc/fossil.4bpp");
const u32 gObjectEventPic_SubmarineShadow[] = INCBIN_U32("graphics/object_events/pics/misc/submarine_shadow.4bpp");
-const u16 gObjectEventPalette26[] = INCBIN_U16("graphics/object_events/palettes/26.gbapal");
+const u16 gObjectEventPal_SubmarineShadow[] = INCBIN_U16("graphics/object_events/palettes/submarine_shadow.gbapal");
const u32 gObjectEventPic_Truck[] = INCBIN_U32("graphics/object_events/pics/misc/truck.4bpp");
-const u16 gObjectEventPalette14[] = INCBIN_U16("graphics/object_events/palettes/14.gbapal");
+const u16 gObjectEventPal_Truck[] = INCBIN_U16("graphics/object_events/palettes/truck.gbapal");
const u32 gObjectEventPic_Vigoroth[] = INCBIN_U32("graphics/object_events/pics/pokemon/vigoroth.4bpp");
-const u16 gObjectEventPalette15[] = INCBIN_U16("graphics/object_events/palettes/15.gbapal");
+const u16 gObjectEventPal_Vigoroth[] = INCBIN_U16("graphics/object_events/palettes/vigoroth.gbapal");
const u32 gObjectEventPic_BirchsBag[] = INCBIN_U32("graphics/object_events/pics/misc/birchs_bag.4bpp");
const u32 gObjectEventPic_EnemyZigzagoon[] = INCBIN_U32("graphics/object_events/pics/pokemon/enemy_zigzagoon.4bpp");
-const u16 gObjectEventPalette16[] = INCBIN_U16("graphics/object_events/palettes/16.gbapal");
+const u16 gObjectEventPal_EnemyZigzagoon[] = INCBIN_U16("graphics/object_events/palettes/enemy_zigzagoon.gbapal");
const u32 gObjectEventPic_Poochyena[] = INCBIN_U32("graphics/object_events/pics/pokemon/poochyena.4bpp");
-const u16 gObjectEventPalette27[] = INCBIN_U16("graphics/object_events/palettes/27.gbapal");
+const u16 gObjectEventPal_Poochyena[] = INCBIN_U16("graphics/object_events/palettes/poochyena.gbapal");
const u32 gObjectEventPic_CableCar[] = INCBIN_U32("graphics/object_events/pics/misc/cable_car.4bpp");
-const u16 gObjectEventPalette20[] = INCBIN_U16("graphics/object_events/palettes/20.gbapal");
+const u16 gObjectEventPal_CableCar[] = INCBIN_U16("graphics/object_events/palettes/cable_car.gbapal");
const u32 gObjectEventPic_SSTidal[] = INCBIN_U32("graphics/object_events/pics/misc/ss_tidal.4bpp");
-const u16 gObjectEventPalette21[] = INCBIN_U16("graphics/object_events/palettes/21.gbapal");
+const u16 gObjectEventPal_SSTidal[] = INCBIN_U16("graphics/object_events/palettes/ss_tidal.gbapal");
const u32 gFieldEffectObjectPic_Sparkle[] = INCBIN_U32("graphics/field_effects/pics/sparkle.4bpp");
const u32 gObjectEventPic_BerryTreeDirtPile[] = INCBIN_U32("graphics/object_events/pics/berry_trees/dirt_pile.4bpp");
const u32 gObjectEventPic_BerryTreeSprout[] = INCBIN_U32("graphics/object_events/pics/berry_trees/sprout.4bpp");
@@ -287,8 +287,8 @@ const u32 gObjectEventPic_DurinBerryTree[] = INCBIN_U32("graphics/object_events/
const u32 gObjectEventPic_TamatoBerryTree[] = INCBIN_U32("graphics/object_events/pics/berry_trees/tamato.4bpp");
const u32 gFieldEffectObjectPic_SurfBlob[] = INCBIN_U32("graphics/field_effects/pics/surf_blob.4bpp");
const u32 gObjectEventPic_QuintyPlump[] = INCBIN_U32("graphics/object_events/pics/people/quinty_plump.4bpp");
-const u16 gObjectEventPalette12[] = INCBIN_U16("graphics/object_events/palettes/12.gbapal");
-const u16 gObjectEventPalette13[] = INCBIN_U16("graphics/object_events/palettes/13.gbapal");
+const u16 gObjectEventPal_QuintyPlump[] = INCBIN_U16("graphics/object_events/palettes/quinty_plump.gbapal");
+const u16 gObjectEventPal_QuintyPlumpReflection[] = INCBIN_U16("graphics/object_events/palettes/quinty_plump_reflection.gbapal");
const u32 gFieldEffectObjectPic_ShadowSmall[] = INCBIN_U32("graphics/field_effects/pics/shadow_small.4bpp");
const u32 gFieldEffectObjectPic_ShadowMedium[] = INCBIN_U32("graphics/field_effects/pics/shadow_medium.4bpp");
const u32 gFieldEffectObjectPic_ShadowLarge[] = INCBIN_U32("graphics/field_effects/pics/shadow_large.4bpp");
@@ -339,15 +339,15 @@ const u32 gObjectEventPic_Dusclops[] = INCBIN_U32("graphics/object_events/pics/p
const u32 gObjectEventPic_MysteryEventDeliveryman[] = INCBIN_U32("graphics/object_events/pics/people/mystery_event_deliveryman.4bpp");
const u32 gObjectEventPic_UnionRoomAttendant[] = INCBIN_U32("graphics/object_events/pics/people/union_room_attendant.4bpp");
const u32 gObjectEventPic_MovingBox[] = INCBIN_U32("graphics/object_events/pics/misc/moving_box.4bpp");
-const u16 gObjectEventPalette19[] = INCBIN_U16("graphics/object_events/palettes/19.gbapal");
+const u16 gObjectEventPal_MovingBox[] = INCBIN_U16("graphics/object_events/palettes/moving_box.gbapal");
const u32 gObjectEventPic_Sudowoodo[] = INCBIN_U32("graphics/object_events/pics/pokemon/sudowoodo.4bpp");
const u32 gObjectEventPic_Mew[] = INCBIN_U32("graphics/object_events/pics/pokemon/mew.4bpp");
-const u16 gObjectEventPalette28[] = INCBIN_U16("graphics/object_events/palettes/28.gbapal");
+const u16 gObjectEventPal_RedLeaf[] = INCBIN_U16("graphics/object_events/palettes/red_leaf.gbapal");
const u32 gObjectEventPic_Red[] = INCBIN_U32("graphics/object_events/pics/people/red.4bpp");
const u32 gObjectEventPic_Leaf[] = INCBIN_U32("graphics/object_events/pics/people/leaf.4bpp");
-const u16 gObjectEventPalette30[] = INCBIN_U16("graphics/object_events/palettes/30.gbapal");
+const u16 gObjectEventPal_BirthIslandStone[] = INCBIN_U16("graphics/object_events/palettes/birth_island_stone.gbapal");
const u32 gObjectEventPic_BirthIslandStone[] = INCBIN_U32("graphics/object_events/pics/misc/birth_island_stone.4bpp");
-const u16 gObjectEventPalette29[] = INCBIN_U16("graphics/object_events/palettes/29.gbapal");
+const u16 gObjectEventPal_Deoxys[] = INCBIN_U16("graphics/object_events/palettes/deoxys.gbapal");
const u32 gObjectEventPic_Deoxys[] = INCBIN_U32("graphics/object_events/pics/pokemon/deoxys.4bpp");
const u32 gObjectEventPic_Anabel[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/anabel.4bpp");
const u32 gObjectEventPic_Tucker[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/tucker.4bpp");
@@ -357,6 +357,6 @@ const u32 gObjectEventPic_Noland[] = INCBIN_U32("graphics/object_events/pics/peo
const u32 gObjectEventPic_Lucy[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/lucy.4bpp");
const u32 gObjectEventPic_Brandon[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/brandon.4bpp");
const u32 gObjectEventPic_Lugia[] = INCBIN_U32("graphics/object_events/pics/pokemon/lugia.4bpp");
-const u16 gObjectEventPalette32[] = INCBIN_U16("graphics/object_events/palettes/32.gbapal");
+const u16 gObjectEventPal_Lugia[] = INCBIN_U16("graphics/object_events/palettes/lugia.gbapal");
const u32 gObjectEventPic_HoOh[] = INCBIN_U32("graphics/object_events/pics/pokemon/ho_oh.4bpp");
-const u16 gObjectEventPalette31[] = INCBIN_U16("graphics/object_events/palettes/31.gbapal");
+const u16 gObjectEventPal_HoOh[] = INCBIN_U16("graphics/object_events/palettes/ho_oh.gbapal");
diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h
index bb36c9436..c6c78dca9 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_8, OBJ_EVENT_PAL_TAG_10, 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_8, OBJ_EVENT_PAL_TAG_10, 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_8, OBJ_EVENT_PAL_TAG_10, 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_8, 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_8, OBJ_EVENT_PAL_TAG_10, 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_12, 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_0, 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_1, 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_2, 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_1, 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_0, 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_2, 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_3, 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_1, 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_3, 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_1, 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_2, 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_0, 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_0, 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_1, 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_2, 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_2, 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_3, 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_3, 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_2, 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_1, 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_1, 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_0, 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_2, 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_2, 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_3, 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_2, 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_2, 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_2, 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_1, 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_1, 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_0, 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_0, 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_3, 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_0, 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_3, 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_3, 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_2, 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_0, 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_1, 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_2, 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_2, 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_2, 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_3, 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_2, 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_0, 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_1, 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_3, 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_1, 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_0, 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_1, 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_0, 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_2, 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_0, 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_0, 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_2, 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_0, 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_0, 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_0, 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_2, 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_3, 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_1, 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_3, 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_3, 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_0, 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_1, 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_2, 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_0, 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_1, 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_2, 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_3, 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_2, 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_2, 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_0, 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_2, 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_1, 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_0, 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_2, 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_0, 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_0, 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_0, 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_0, 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_0, 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_2, 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_17, OBJ_EVENT_PAL_TAG_10, 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_17, OBJ_EVENT_PAL_TAG_10, 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_17, OBJ_EVENT_PAL_TAG_10, 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_17, 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_17, OBJ_EVENT_PAL_TAG_10, 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_14, 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_15, 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_15, 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_1, 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_16, 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_27, 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_3, 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_8, OBJ_EVENT_PAL_TAG_10, 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_8, OBJ_EVENT_PAL_TAG_10, 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_8, OBJ_EVENT_PAL_TAG_10, 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_8, 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_8, OBJ_EVENT_PAL_TAG_10, 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_17, OBJ_EVENT_PAL_TAG_10, 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_17, OBJ_EVENT_PAL_TAG_10, 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_17, OBJ_EVENT_PAL_TAG_10, 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_17, 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_17, OBJ_EVENT_PAL_TAG_10, 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_3, 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_11, 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_11, 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_19, 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_20, 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_0, 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_1, 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_3, 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_3, 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_1, 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_1, 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_1, 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_0, 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_1, 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_2, 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_0, 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_2, 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_1, 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_0, 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_3, 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_3, 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_0, 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_0, 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_3, 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_3, 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_0, 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_0, 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_8, OBJ_EVENT_PAL_TAG_10, 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_17, OBJ_EVENT_PAL_TAG_10, 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_3, 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_21, 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_26, 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_1, 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_1, 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_0, 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_2, 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_3, 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_2, 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_0, 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_0, 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_1, 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_0, 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_3, 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_3, 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_2, 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_1, 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_0, 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_3, 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_0, 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_0, 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_2, 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_0, 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_0, 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_0, 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_2, 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_2, 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_2, 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_1, 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_0, 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_3, 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_0, 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_0, 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_3, 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_2, 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_2, 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_1, 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_0, 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_3, 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_3, 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_0, 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_2, 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_1, 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_0, 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_3, 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_0, 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_2, 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_3, 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_1, 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_0, 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_2, 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_2, 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_8, OBJ_EVENT_PAL_TAG_10, 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_17, OBJ_EVENT_PAL_TAG_10, 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_8, OBJ_EVENT_PAL_TAG_10, 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_17, OBJ_EVENT_PAL_TAG_10, 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_0, 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_1, 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_3, 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_2, 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_3, 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_2, 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_0, 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_1, 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_2, 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_3, 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_0, 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_Kecleon1 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, 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_22, 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_24, 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_2, 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_0, 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_1, 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_0, 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_0, 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_Kecleon2 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_10, 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_1, 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_0, 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_3, 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_17, OBJ_EVENT_PAL_TAG_10, 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_17, OBJ_EVENT_PAL_TAG_10, 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_3, 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_0, 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_0, 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_3, 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_2, 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_3, 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_2, 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_28, 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_28, 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_2, 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_0, 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_29, 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_30, 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_3, 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_0, 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_0, 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_0, 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_2, 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_3, 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_2, 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_33, 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_34, 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_32, 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_31, 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, 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};
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 c72b0279d..0ca70fa33 100755
--- a/src/data/object_events/object_event_graphics_info_pointers.h
+++ b/src/data/object_events/object_event_graphics_info_pointers.h
@@ -202,7 +202,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty;
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon1;
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre2;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon2;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza2;
@@ -210,7 +210,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull;
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon2;
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonBridgeShadow;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberMSwimming;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mom;
@@ -451,7 +451,7 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM
[OBJ_EVENT_GFX_REGICE] = &gObjectEventGraphicsInfo_Regice,
[OBJ_EVENT_GFX_REGISTEEL] = &gObjectEventGraphicsInfo_Registeel,
[OBJ_EVENT_GFX_SKITTY] = &gObjectEventGraphicsInfo_Skitty,
- [OBJ_EVENT_GFX_KECLEON_1] = &gObjectEventGraphicsInfo_Kecleon1,
+ [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,
@@ -459,7 +459,7 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM
[OBJ_EVENT_GFX_PIKACHU] = &gObjectEventGraphicsInfo_Pikachu,
[OBJ_EVENT_GFX_AZUMARILL] = &gObjectEventGraphicsInfo_Azumarill,
[OBJ_EVENT_GFX_WINGULL] = &gObjectEventGraphicsInfo_Wingull,
- [OBJ_EVENT_GFX_KECLEON_2] = &gObjectEventGraphicsInfo_Kecleon2,
+ [OBJ_EVENT_GFX_KECLEON_BRIDGE_SHADOW] = &gObjectEventGraphicsInfo_KecleonBridgeShadow,
[OBJ_EVENT_GFX_TUBER_M_SWIMMING] = &gObjectEventGraphicsInfo_TuberMSwimming,
[OBJ_EVENT_GFX_AZURILL] = &gObjectEventGraphicsInfo_Azurill,
[OBJ_EVENT_GFX_MOM] = &gObjectEventGraphicsInfo_Mom,
diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h
index 698d97a43..1ed721e44 100644
--- a/src/data/pokemon/item_effects.h
+++ b/src/data/pokemon/item_effects.h
@@ -26,12 +26,12 @@ const u8 gItemEffect_ParalyzeHeal[6] = {
const u8 gItemEffect_FullRestore[7] = {
[3] = ITEM3_STATUS_ALL,
[4] = ITEM4_HEAL_HP,
- [6] = -1,
+ [6] = ITEM6_HEAL_FULL,
};
const u8 gItemEffect_MaxPotion[7] = {
[4] = ITEM4_HEAL_HP,
- [6] = -1,
+ [6] = ITEM6_HEAL_FULL,
};
const u8 gItemEffect_HyperPotion[7] = {
@@ -50,12 +50,12 @@ const u8 gItemEffect_FullHeal[6] = {
const u8 gItemEffect_Revive[7] = {
[4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
- [6] = -2,
+ [6] = ITEM6_HEAL_HALF,
};
const u8 gItemEffect_MaxRevive[7] = {
[4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
- [6] = -1,
+ [6] = ITEM6_HEAL_FULL,
};
const u8 gItemEffect_FreshWater[7] = {
@@ -107,7 +107,7 @@ const u8 gItemEffect_HealPowder[9] = {
const u8 gItemEffect_RevivalHerb[10] = {
[4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
[5] = ITEM5_FRIENDSHIP_ALL,
- [6] = -1,
+ [6] = ITEM6_HEAL_FULL,
[7] = -15,
[8] = -15,
[9] = -20,
@@ -157,7 +157,7 @@ const u8 gItemEffect_BerryJuice[7] = {
const u8 gItemEffect_SacredAsh[7] = {
[0] = ITEM0_SACRED_ASH,
[4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
- [6] = -1,
+ [6] = ITEM6_HEAL_FULL,
};
const u8 gItemEffect_HPUp[10] = {
@@ -206,7 +206,7 @@ const u8 gItemEffect_RareCandy[10] = {
[3] = ITEM3_LEVEL_UP,
[4] = ITEM4_REVIVE | ITEM4_HEAL_HP,
[5] = ITEM5_FRIENDSHIP_ALL,
- [6] = 0xFD,
+ [6] = ITEM6_HEAL_LVL_UP,
[7] = 5,
[8] = 3,
[9] = 2,
diff --git a/src/data/pokemon/tmhm_learnsets.h b/src/data/pokemon/tmhm_learnsets.h
index 3ad9a97c6..deeeda16f 100644
--- a/src/data/pokemon/tmhm_learnsets.h
+++ b/src/data/pokemon/tmhm_learnsets.h
@@ -3,7 +3,7 @@
// This table determines which TMs and HMs a species is capable of learning.
// Each entry is a 64-bit bit array spread across two 32-bit values, with
-// each bit corresponding to a .
+// each bit corresponding to a TM or HM.
const u32 gTMHMLearnsets[][2] =
{
[SPECIES_NONE] = TMHM_LEARNSET(0),
diff --git a/src/data/region_map/city_map_entries.h b/src/data/region_map/city_map_entries.h
index 09689da5b..d5478c7b4 100644
--- a/src/data/region_map/city_map_entries.h
+++ b/src/data/region_map/city_map_entries.h
@@ -18,7 +18,7 @@ static const struct CityMapEntry sPokenavCityMaps[NUM_CITY_MAPS] =
{
.mapSecId = MAPSEC_LAVARIDGE_TOWN,
.index = 0,
- .tilemap = gPokenavCityMap_Lavarige_0,
+ .tilemap = gPokenavCityMap_Lavaridge_0,
},
{
.mapSecId = MAPSEC_FALLARBOR_TOWN,
diff --git a/src/data/region_map/city_map_tilemaps.h b/src/data/region_map/city_map_tilemaps.h
index 8a8a931f9..fed158935 100644
--- a/src/data/region_map/city_map_tilemaps.h
+++ b/src/data/region_map/city_map_tilemaps.h
@@ -1,4 +1,4 @@
-const u32 gPokenavCityMap_Lavarige_0[] = INCBIN_U32("graphics/pokenav/city_maps/lavaridge_0.bin.lz");
+const u32 gPokenavCityMap_Lavaridge_0[] = INCBIN_U32("graphics/pokenav/city_maps/lavaridge_0.bin.lz");
const u32 gPokenavCityMap_Fallarbor_0[] = INCBIN_U32("graphics/pokenav/city_maps/fallarbor_0.bin.lz");
const u32 gPokenavCityMap_Fortree_0[] = INCBIN_U32("graphics/pokenav/city_maps/fortree_0.bin.lz");
const u32 gPokenavCityMap_Slateport_0[] = INCBIN_U32("graphics/pokenav/city_maps/slateport_0.bin.lz");
diff --git a/src/data/region_map/region_map_entries.h b/src/data/region_map/region_map_entries.h
index 1d503d72f..6b433f90f 100644
--- a/src/data/region_map/region_map_entries.h
+++ b/src/data/region_map/region_map_entries.h
@@ -200,219 +200,219 @@ static const u8 sMapName_DesertUnderpass[] = _("DESERT UNDERPASS");
static const u8 sMapName_TrainerHill[] = _("TRAINER HILL");
const struct RegionMapLocation gRegionMapEntries[] = {
- [MAPSEC_LITTLEROOT_TOWN] = { 4, 11, 1, 1, sMapName_LittlerootTown},
- [MAPSEC_OLDALE_TOWN] = { 4, 9, 1, 1, sMapName_OldaleTown},
- [MAPSEC_DEWFORD_TOWN] = { 2, 14, 1, 1, sMapName_DewfordTown},
- [MAPSEC_LAVARIDGE_TOWN] = { 5, 3, 1, 1, sMapName_LavaridgeTown},
- [MAPSEC_FALLARBOR_TOWN] = { 3, 0, 1, 1, sMapName_FallarborTown},
- [MAPSEC_VERDANTURF_TOWN] = { 4, 6, 1, 1, sMapName_VerdanturfTown},
- [MAPSEC_PACIFIDLOG_TOWN] = {17, 10, 1, 1, sMapName_PacifidlogTown},
- [MAPSEC_PETALBURG_CITY] = { 1, 9, 1, 1, sMapName_PetalburgCity},
- [MAPSEC_SLATEPORT_CITY] = { 8, 10, 1, 2, sMapName_SlateportCity},
- [MAPSEC_MAUVILLE_CITY] = { 8, 6, 2, 1, sMapName_MauvilleCity},
- [MAPSEC_RUSTBORO_CITY] = { 0, 5, 1, 2, sMapName_RustboroCity},
- [MAPSEC_FORTREE_CITY] = {12, 0, 1, 1, sMapName_FortreeCity},
- [MAPSEC_LILYCOVE_CITY] = {18, 3, 2, 1, sMapName_LilycoveCity},
- [MAPSEC_MOSSDEEP_CITY] = {24, 5, 2, 1, sMapName_MossdeepCity},
- [MAPSEC_SOOTOPOLIS_CITY] = {21, 7, 1, 1, sMapName_SootopolisCity},
- [MAPSEC_EVER_GRANDE_CITY] = {27, 8, 1, 2, sMapName_EverGrandeCity},
- [MAPSEC_ROUTE_101] = { 4, 10, 1, 1, sMapName_Route101},
- [MAPSEC_ROUTE_102] = { 2, 9, 2, 1, sMapName_Route102},
- [MAPSEC_ROUTE_103] = { 4, 8, 4, 1, sMapName_Route103},
- [MAPSEC_ROUTE_104] = { 0, 7, 1, 3, sMapName_Route104},
- [MAPSEC_ROUTE_105] = { 0, 10, 1, 3, sMapName_Route105},
- [MAPSEC_ROUTE_106] = { 0, 13, 2, 1, sMapName_Route106},
- [MAPSEC_ROUTE_107] = { 3, 14, 3, 1, sMapName_Route107},
- [MAPSEC_ROUTE_108] = { 6, 14, 2, 1, sMapName_Route108},
- [MAPSEC_ROUTE_109] = { 8, 12, 1, 3, sMapName_Route109},
- [MAPSEC_ROUTE_110] = { 8, 7, 1, 3, sMapName_Route110},
- [MAPSEC_ROUTE_111] = { 8, 0, 1, 6, sMapName_Route111},
- [MAPSEC_ROUTE_112] = { 6, 3, 2, 1, sMapName_Route112},
- [MAPSEC_ROUTE_113] = { 4, 0, 4, 1, sMapName_Route113},
- [MAPSEC_ROUTE_114] = { 1, 0, 2, 3, sMapName_Route114},
- [MAPSEC_ROUTE_115] = { 0, 2, 1, 3, sMapName_Route115},
- [MAPSEC_ROUTE_116] = { 1, 5, 4, 1, sMapName_Route116},
- [MAPSEC_ROUTE_117] = { 5, 6, 3, 1, sMapName_Route117},
- [MAPSEC_ROUTE_118] = {10, 6, 2, 1, sMapName_Route118},
- [MAPSEC_ROUTE_119] = {11, 0, 1, 6, sMapName_Route119},
- [MAPSEC_ROUTE_120] = {13, 0, 1, 4, sMapName_Route120},
- [MAPSEC_ROUTE_121] = {14, 3, 4, 1, sMapName_Route121},
- [MAPSEC_ROUTE_122] = {16, 4, 1, 2, sMapName_Route122},
- [MAPSEC_ROUTE_123] = {12, 6, 5, 1, sMapName_Route123},
- [MAPSEC_ROUTE_124] = {20, 3, 4, 3, sMapName_Route124},
- [MAPSEC_ROUTE_125] = {24, 3, 2, 2, sMapName_Route125},
- [MAPSEC_ROUTE_126] = {20, 6, 3, 3, sMapName_Route126},
- [MAPSEC_ROUTE_127] = {23, 6, 3, 3, sMapName_Route127},
- [MAPSEC_ROUTE_128] = {23, 9, 4, 1, sMapName_Route128},
- [MAPSEC_ROUTE_129] = {24, 10, 2, 1, sMapName_Route129},
- [MAPSEC_ROUTE_130] = {21, 10, 3, 1, sMapName_Route130},
- [MAPSEC_ROUTE_131] = {18, 10, 3, 1, sMapName_Route131},
- [MAPSEC_ROUTE_132] = {15, 10, 2, 1, sMapName_Route132},
- [MAPSEC_ROUTE_133] = {12, 10, 3, 1, sMapName_Route133},
- [MAPSEC_ROUTE_134] = { 9, 10, 3, 1, sMapName_Route134},
- [MAPSEC_UNDERWATER_124] = {20, 3, 4, 3, sMapName_Underwater},
- [MAPSEC_UNDERWATER_125] = {20, 6, 3, 3, sMapName_Underwater},
- [MAPSEC_UNDERWATER_126] = {23, 6, 3, 3, sMapName_Underwater},
- [MAPSEC_UNDERWATER_127] = {23, 9, 4, 1, sMapName_Underwater},
- [MAPSEC_UNDERWATER_SOOTOPOLIS] = {21, 7, 1, 1, sMapName_Underwater},
- [MAPSEC_GRANITE_CAVE] = { 1, 13, 1, 1, sMapName_GraniteCave},
- [MAPSEC_MT_CHIMNEY] = { 6, 2, 1, 1, sMapName_MtChimney},
- [MAPSEC_SAFARI_ZONE] = {16, 2, 1, 1, sMapName_SafariZone},
- [MAPSEC_BATTLE_FRONTIER] = {22, 12, 1, 1, sMapName_BattleFrontier},
- [MAPSEC_PETALBURG_WOODS] = { 0, 8, 1, 1, sMapName_PetalburgWoods},
- [MAPSEC_RUSTURF_TUNNEL] = { 2, 5, 1, 1, sMapName_RusturfTunnel},
- [MAPSEC_ABANDONED_SHIP] = { 6, 14, 1, 1, sMapName_AbandonedShip},
- [MAPSEC_NEW_MAUVILLE] = { 8, 7, 1, 1, sMapName_NewMauville},
- [MAPSEC_METEOR_FALLS] = { 0, 3, 1, 1, sMapName_MeteorFalls},
- [MAPSEC_METEOR_FALLS2] = { 1, 2, 1, 1, sMapName_MeteorFalls},
- [MAPSEC_MT_PYRE] = {16, 4, 1, 1, sMapName_MtPyre},
- [MAPSEC_AQUA_HIDEOUT_OLD] = {19, 3, 1, 1, sMapName_AquaHideoutOld},
- [MAPSEC_SHOAL_CAVE] = {24, 4, 1, 1, sMapName_ShoalCave},
- [MAPSEC_SEAFLOOR_CAVERN] = {24, 9, 1, 1, sMapName_SeafloorCavern},
- [MAPSEC_UNDERWATER_128] = {24, 9, 1, 1, sMapName_Underwater},
- [MAPSEC_VICTORY_ROAD] = {27, 9, 1, 1, sMapName_VictoryRoad},
- [MAPSEC_MIRAGE_ISLAND] = {17, 10, 1, 1, sMapName_MirageIsland},
- [MAPSEC_CAVE_OF_ORIGIN] = {21, 7, 1, 1, sMapName_CaveOfOrigin},
- [MAPSEC_SOUTHERN_ISLAND] = {12, 14, 1, 1, sMapName_SouthernIsland},
- [MAPSEC_FIERY_PATH] = { 6, 3, 1, 1, sMapName_FieryPath},
- [MAPSEC_FIERY_PATH2] = { 7, 3, 1, 1, sMapName_FieryPath},
- [MAPSEC_JAGGED_PASS] = { 6, 3, 1, 1, sMapName_JaggedPass},
- [MAPSEC_JAGGED_PASS2] = { 7, 2, 1, 1, sMapName_JaggedPass},
- [MAPSEC_SEALED_CHAMBER] = {11, 10, 1, 1, sMapName_SealedChamber},
- [MAPSEC_UNDERWATER_SEALED_CHAMBER] = {11, 10, 1, 1, sMapName_Underwater},
- [MAPSEC_SCORCHED_SLAB] = {13, 0, 1, 1, sMapName_ScorchedSlab},
- [MAPSEC_ISLAND_CAVE] = { 0, 10, 1, 1, sMapName_IslandCave},
- [MAPSEC_DESERT_RUINS] = { 8, 3, 1, 1, sMapName_DesertRuins},
- [MAPSEC_ANCIENT_TOMB] = {13, 2, 1, 1, sMapName_AncientTomb},
- [MAPSEC_INSIDE_OF_TRUCK] = { 0, 0, 1, 1, sMapName_InsideOfTruck},
- [MAPSEC_SKY_PILLAR] = {19, 10, 1, 1, sMapName_SkyPillar},
- [MAPSEC_SECRET_BASE] = { 0, 0, 1, 1, sMapName_SecretBase},
- [MAPSEC_DYNAMIC] = { 0, 0, 1, 1, sMapName_None},
- [MAPSEC_PALLET_TOWN] = { 0, 0, 1, 1, sMapName_PalletTown},
- [MAPSEC_VIRIDIAN_CITY] = { 0, 0, 1, 1, sMapName_ViridianCity},
- [MAPSEC_PEWTER_CITY] = { 0, 0, 1, 1, sMapName_PewterCity},
- [MAPSEC_CERULEAN_CITY] = { 0, 0, 1, 1, sMapName_CeruleanCity},
- [MAPSEC_LAVENDER_TOWN] = { 0, 0, 1, 1, sMapName_LavenderTown},
- [MAPSEC_VERMILION_CITY] = { 0, 0, 1, 1, sMapName_VermilionCity},
- [MAPSEC_CELADON_CITY] = { 0, 0, 1, 1, sMapName_CeladonCity},
- [MAPSEC_FUCHSIA_CITY] = { 0, 0, 1, 1, sMapName_FuchsiaCity},
- [MAPSEC_CINNABAR_ISLAND] = { 0, 0, 1, 1, sMapName_CinnabarIsland},
- [MAPSEC_INDIGO_PLATEAU] = { 0, 0, 1, 1, sMapName_IndigoPlateau},
- [MAPSEC_SAFFRON_CITY] = { 0, 0, 1, 1, sMapName_SaffronCity},
- [MAPSEC_ROUTE_4_FLYDUP] = { 0, 0, 1, 1, sMapName_Route4},
- [MAPSEC_ROUTE_10_FLYDUP] = { 0, 0, 1, 1, sMapName_Route10},
- [MAPSEC_ROUTE_1] = { 0, 0, 1, 1, sMapName_Route1},
- [MAPSEC_ROUTE_2] = { 0, 0, 1, 1, sMapName_Route2},
- [MAPSEC_ROUTE_3] = { 0, 0, 1, 1, sMapName_Route3},
- [MAPSEC_ROUTE_4] = { 0, 0, 1, 1, sMapName_Route4_2},
- [MAPSEC_ROUTE_5] = { 0, 0, 1, 1, sMapName_Route5},
- [MAPSEC_ROUTE_6] = { 0, 0, 1, 1, sMapName_Route6},
- [MAPSEC_ROUTE_7] = { 0, 0, 1, 1, sMapName_Route7},
- [MAPSEC_ROUTE_8] = { 0, 0, 1, 1, sMapName_Route8},
- [MAPSEC_ROUTE_9] = { 0, 0, 1, 1, sMapName_Route9},
- [MAPSEC_ROUTE_10] = { 0, 0, 1, 1, sMapName_Route10_2},
- [MAPSEC_ROUTE_11] = { 0, 0, 1, 1, sMapName_Route11},
- [MAPSEC_ROUTE_12] = { 0, 0, 1, 1, sMapName_Route12},
- [MAPSEC_ROUTE_13] = { 0, 0, 1, 1, sMapName_Route13},
- [MAPSEC_ROUTE_14] = { 0, 0, 1, 1, sMapName_Route14},
- [MAPSEC_ROUTE_15] = { 0, 0, 1, 1, sMapName_Route15},
- [MAPSEC_ROUTE_16] = { 0, 0, 1, 1, sMapName_Route16},
- [MAPSEC_ROUTE_17] = { 0, 0, 1, 1, sMapName_Route17},
- [MAPSEC_ROUTE_18] = { 0, 0, 1, 1, sMapName_Route18},
- [MAPSEC_ROUTE_19] = { 0, 0, 1, 1, sMapName_Route19},
- [MAPSEC_ROUTE_20] = { 0, 0, 1, 1, sMapName_Route20},
- [MAPSEC_ROUTE_21] = { 0, 0, 1, 1, sMapName_Route21},
- [MAPSEC_ROUTE_22] = { 0, 0, 1, 1, sMapName_Route22},
- [MAPSEC_ROUTE_23] = { 0, 0, 1, 1, sMapName_Route23},
- [MAPSEC_ROUTE_24] = { 0, 0, 1, 1, sMapName_Route24},
- [MAPSEC_ROUTE_25] = { 0, 0, 1, 1, sMapName_Route25},
- [MAPSEC_VIRIDIAN_FOREST] = { 0, 0, 1, 1, sMapName_ViridianForest},
- [MAPSEC_MT_MOON] = { 0, 0, 1, 1, sMapName_MtMoon},
- [MAPSEC_S_S_ANNE] = { 0, 0, 1, 1, sMapName_SSAnne},
- [MAPSEC_UNDERGROUND_PATH] = { 0, 0, 1, 1, sMapName_UndergroundPath},
- [MAPSEC_UNDERGROUND_PATH_2] = { 0, 0, 1, 1, sMapName_UndergroundPath2},
- [MAPSEC_DIGLETTS_CAVE] = { 0, 0, 1, 1, sMapName_DiglettsCave},
- [MAPSEC_KANTO_VICTORY_ROAD] = { 0, 0, 1, 1, sMapName_KantoVictoryRoad},
- [MAPSEC_ROCKET_HIDEOUT] = { 0, 0, 1, 1, sMapName_RocketHideout},
- [MAPSEC_SILPH_CO] = { 0, 0, 1, 1, sMapName_SilphCo},
- [MAPSEC_POKEMON_MANSION] = { 0, 0, 1, 1, sMapName_PokemonMansion},
- [MAPSEC_KANTO_SAFARI_ZONE] = { 0, 0, 1, 1, sMapName_KantoSafariZone},
- [MAPSEC_POKEMON_LEAGUE] = { 0, 0, 1, 1, sMapName_PokemonLeague},
- [MAPSEC_ROCK_TUNNEL] = { 0, 0, 1, 1, sMapName_RockTunnel},
- [MAPSEC_SEAFOAM_ISLANDS] = { 0, 0, 1, 1, sMapName_SeafoamIslands},
- [MAPSEC_POKEMON_TOWER] = { 0, 0, 1, 1, sMapName_PokemonTower},
- [MAPSEC_CERULEAN_CAVE] = { 0, 0, 1, 1, sMapName_CeruleanCave},
- [MAPSEC_POWER_PLANT] = { 0, 0, 1, 1, sMapName_PowerPlant},
- [MAPSEC_ONE_ISLAND] = { 0, 0, 1, 1, sMapName_OneIsland},
- [MAPSEC_TWO_ISLAND] = { 0, 0, 1, 1, sMapName_TwoIsland},
- [MAPSEC_THREE_ISLAND] = { 0, 0, 1, 1, sMapName_ThreeIsland},
- [MAPSEC_FOUR_ISLAND] = { 0, 0, 1, 1, sMapName_FourIsland},
- [MAPSEC_FIVE_ISLAND] = { 0, 0, 1, 1, sMapName_FiveIsland},
- [MAPSEC_SEVEN_ISLAND] = { 0, 0, 1, 1, sMapName_SevenIsland},
- [MAPSEC_SIX_ISLAND] = { 0, 0, 1, 1, sMapName_SixIsland},
- [MAPSEC_KINDLE_ROAD] = { 0, 0, 1, 1, sMapName_KindleRoad},
- [MAPSEC_TREASURE_BEACH] = { 0, 0, 1, 1, sMapName_TreasureBeach},
- [MAPSEC_CAPE_BRINK] = { 0, 0, 1, 1, sMapName_CapeBrink},
- [MAPSEC_BOND_BRIDGE] = { 0, 0, 1, 1, sMapName_BondBridge},
- [MAPSEC_THREE_ISLE_PORT] = { 0, 0, 1, 1, sMapName_ThreeIslePort},
- [MAPSEC_SEVII_ISLE_6] = { 0, 0, 1, 1, sMapName_SeviiIsle6},
- [MAPSEC_SEVII_ISLE_7] = { 0, 0, 1, 1, sMapName_SeviiIsle7},
- [MAPSEC_SEVII_ISLE_8] = { 0, 0, 1, 1, sMapName_SeviiIsle8},
- [MAPSEC_SEVII_ISLE_9] = { 0, 0, 1, 1, sMapName_SeviiIsle9},
- [MAPSEC_RESORT_GORGEOUS] = { 0, 0, 1, 1, sMapName_ResortGorgeous},
- [MAPSEC_WATER_LABYRINTH] = { 0, 0, 1, 1, sMapName_WaterLabyrinth},
- [MAPSEC_FIVE_ISLE_MEADOW] = { 0, 0, 1, 1, sMapName_FiveIsleMeadow},
- [MAPSEC_MEMORIAL_PILLAR] = { 0, 0, 1, 1, sMapName_MemorialPillar},
- [MAPSEC_OUTCAST_ISLAND] = { 0, 0, 1, 1, sMapName_OutcastIsland},
- [MAPSEC_GREEN_PATH] = { 0, 0, 1, 1, sMapName_GreenPath},
- [MAPSEC_WATER_PATH] = { 0, 0, 1, 1, sMapName_WaterPath},
- [MAPSEC_RUIN_VALLEY] = { 0, 0, 1, 1, sMapName_RuinValley},
- [MAPSEC_TRAINER_TOWER] = { 0, 0, 1, 1, sMapName_TrainerTower},
- [MAPSEC_CANYON_ENTRANCE] = { 0, 0, 1, 1, sMapName_CanyonEntrance},
- [MAPSEC_SEVAULT_CANYON] = { 0, 0, 1, 1, sMapName_SevaultCanyon},
- [MAPSEC_TANOBY_RUINS] = { 0, 0, 1, 1, sMapName_TanobyRuins},
- [MAPSEC_SEVII_ISLE_22] = { 0, 0, 1, 1, sMapName_SeviiIsle22},
- [MAPSEC_SEVII_ISLE_23] = { 0, 0, 1, 1, sMapName_SeviiIsle23},
- [MAPSEC_SEVII_ISLE_24] = { 0, 0, 1, 1, sMapName_SeviiIsle24},
- [MAPSEC_NAVEL_ROCK_FRLG] = { 0, 0, 1, 1, sMapName_NavelRock},
- [MAPSEC_MT_EMBER] = { 0, 0, 1, 1, sMapName_MtEmber},
- [MAPSEC_BERRY_FOREST] = { 0, 0, 1, 1, sMapName_BerryForest},
- [MAPSEC_ICEFALL_CAVE] = { 0, 0, 1, 1, sMapName_IcefallCave},
- [MAPSEC_ROCKET_WAREHOUSE] = { 0, 0, 1, 1, sMapName_RocketWarehouse},
- [MAPSEC_TRAINER_TOWER_2] = { 0, 0, 1, 1, sMapName_TrainerTower2},
- [MAPSEC_DOTTED_HOLE] = { 0, 0, 1, 1, sMapName_DottedHole},
- [MAPSEC_LOST_CAVE] = { 0, 0, 1, 1, sMapName_LostCave},
- [MAPSEC_PATTERN_BUSH] = { 0, 0, 1, 1, sMapName_PatternBush},
- [MAPSEC_ALTERING_CAVE_FRLG] = { 0, 0, 1, 1, sMapName_AlteringCave},
- [MAPSEC_TANOBY_CHAMBERS] = { 0, 0, 1, 1, sMapName_TanobyChambers},
- [MAPSEC_THREE_ISLE_PATH] = { 0, 0, 1, 1, sMapName_ThreeIslePath},
- [MAPSEC_TANOBY_KEY] = { 0, 0, 1, 1, sMapName_TanobyKey},
- [MAPSEC_BIRTH_ISLAND_FRLG] = { 0, 0, 1, 1, sMapName_BirthIsland},
- [MAPSEC_MONEAN_CHAMBER] = { 0, 0, 1, 1, sMapName_MoneanChamber},
- [MAPSEC_LIPTOO_CHAMBER] = { 0, 0, 1, 1, sMapName_LiptooChamber},
- [MAPSEC_WEEPTH_CHAMBER] = { 0, 0, 1, 1, sMapName_WeepthChamber},
- [MAPSEC_DILFORD_CHAMBER] = { 0, 0, 1, 1, sMapName_DilfordChamber},
- [MAPSEC_SCUFIB_CHAMBER] = { 0, 0, 1, 1, sMapName_ScufibChamber},
- [MAPSEC_RIXY_CHAMBER] = { 0, 0, 1, 1, sMapName_RixyChamber},
- [MAPSEC_VIAPOIS_CHAMBER] = { 0, 0, 1, 1, sMapName_ViapoisChamber},
- [MAPSEC_EMBER_SPA] = { 0, 0, 1, 1, sMapName_EmberSpa},
- [MAPSEC_SPECIAL_AREA] = { 0, 0, 1, 1, sMapName_SpecialArea},
- [MAPSEC_AQUA_HIDEOUT] = {19, 3, 1, 1, sMapName_AquaHideout},
- [MAPSEC_MAGMA_HIDEOUT] = { 6, 3, 1, 1, sMapName_MagmaHideout},
- [MAPSEC_MIRAGE_TOWER] = { 8, 2, 1, 1, sMapName_MirageTower},
- [MAPSEC_BIRTH_ISLAND] = { 0, 0, 1, 1, sMapName_BirthIsland},
- [MAPSEC_FARAWAY_ISLAND] = { 0, 0, 1, 1, sMapName_FarawayIsland},
- [MAPSEC_ARTISAN_CAVE] = {22, 12, 1, 1, sMapName_ArtisanCave},
- [MAPSEC_MARINE_CAVE] = { 0, 0, 1, 1, sMapName_MarineCave},
- [MAPSEC_UNDERWATER_MARINE_CAVE] = { 0, 0, 1, 1, sMapName_Underwater},
- [MAPSEC_TERRA_CAVE] = { 0, 0, 1, 1, sMapName_TerraCave},
- [MAPSEC_UNDERWATER_TERRA_CAVE] = { 0, 10, 1, 3, sMapName_Underwater},
- [MAPSEC_UNDERWATER_UNK1] = {24, 3, 2, 2, sMapName_Underwater},
- [MAPSEC_UNDERWATER_129] = {24, 10, 2, 1, sMapName_Underwater},
- [MAPSEC_DESERT_UNDERPASS] = { 2, 0, 1, 1, sMapName_DesertUnderpass},
- [MAPSEC_ALTERING_CAVE] = { 6, 8, 1, 1, sMapName_AlteringCave},
- [MAPSEC_NAVEL_ROCK] = { 0, 0, 1, 1, sMapName_NavelRock},
- [MAPSEC_TRAINER_HILL] = { 8, 4, 1, 1, sMapName_TrainerHill}
+ [MAPSEC_LITTLEROOT_TOWN] = { 4, 11, 1, 1, sMapName_LittlerootTown},
+ [MAPSEC_OLDALE_TOWN] = { 4, 9, 1, 1, sMapName_OldaleTown},
+ [MAPSEC_DEWFORD_TOWN] = { 2, 14, 1, 1, sMapName_DewfordTown},
+ [MAPSEC_LAVARIDGE_TOWN] = { 5, 3, 1, 1, sMapName_LavaridgeTown},
+ [MAPSEC_FALLARBOR_TOWN] = { 3, 0, 1, 1, sMapName_FallarborTown},
+ [MAPSEC_VERDANTURF_TOWN] = { 4, 6, 1, 1, sMapName_VerdanturfTown},
+ [MAPSEC_PACIFIDLOG_TOWN] = {17, 10, 1, 1, sMapName_PacifidlogTown},
+ [MAPSEC_PETALBURG_CITY] = { 1, 9, 1, 1, sMapName_PetalburgCity},
+ [MAPSEC_SLATEPORT_CITY] = { 8, 10, 1, 2, sMapName_SlateportCity},
+ [MAPSEC_MAUVILLE_CITY] = { 8, 6, 2, 1, sMapName_MauvilleCity},
+ [MAPSEC_RUSTBORO_CITY] = { 0, 5, 1, 2, sMapName_RustboroCity},
+ [MAPSEC_FORTREE_CITY] = {12, 0, 1, 1, sMapName_FortreeCity},
+ [MAPSEC_LILYCOVE_CITY] = {18, 3, 2, 1, sMapName_LilycoveCity},
+ [MAPSEC_MOSSDEEP_CITY] = {24, 5, 2, 1, sMapName_MossdeepCity},
+ [MAPSEC_SOOTOPOLIS_CITY] = {21, 7, 1, 1, sMapName_SootopolisCity},
+ [MAPSEC_EVER_GRANDE_CITY] = {27, 8, 1, 2, sMapName_EverGrandeCity},
+ [MAPSEC_ROUTE_101] = { 4, 10, 1, 1, sMapName_Route101},
+ [MAPSEC_ROUTE_102] = { 2, 9, 2, 1, sMapName_Route102},
+ [MAPSEC_ROUTE_103] = { 4, 8, 4, 1, sMapName_Route103},
+ [MAPSEC_ROUTE_104] = { 0, 7, 1, 3, sMapName_Route104},
+ [MAPSEC_ROUTE_105] = { 0, 10, 1, 3, sMapName_Route105},
+ [MAPSEC_ROUTE_106] = { 0, 13, 2, 1, sMapName_Route106},
+ [MAPSEC_ROUTE_107] = { 3, 14, 3, 1, sMapName_Route107},
+ [MAPSEC_ROUTE_108] = { 6, 14, 2, 1, sMapName_Route108},
+ [MAPSEC_ROUTE_109] = { 8, 12, 1, 3, sMapName_Route109},
+ [MAPSEC_ROUTE_110] = { 8, 7, 1, 3, sMapName_Route110},
+ [MAPSEC_ROUTE_111] = { 8, 0, 1, 6, sMapName_Route111},
+ [MAPSEC_ROUTE_112] = { 6, 3, 2, 1, sMapName_Route112},
+ [MAPSEC_ROUTE_113] = { 4, 0, 4, 1, sMapName_Route113},
+ [MAPSEC_ROUTE_114] = { 1, 0, 2, 3, sMapName_Route114},
+ [MAPSEC_ROUTE_115] = { 0, 2, 1, 3, sMapName_Route115},
+ [MAPSEC_ROUTE_116] = { 1, 5, 4, 1, sMapName_Route116},
+ [MAPSEC_ROUTE_117] = { 5, 6, 3, 1, sMapName_Route117},
+ [MAPSEC_ROUTE_118] = {10, 6, 2, 1, sMapName_Route118},
+ [MAPSEC_ROUTE_119] = {11, 0, 1, 6, sMapName_Route119},
+ [MAPSEC_ROUTE_120] = {13, 0, 1, 4, sMapName_Route120},
+ [MAPSEC_ROUTE_121] = {14, 3, 4, 1, sMapName_Route121},
+ [MAPSEC_ROUTE_122] = {16, 4, 1, 2, sMapName_Route122},
+ [MAPSEC_ROUTE_123] = {12, 6, 5, 1, sMapName_Route123},
+ [MAPSEC_ROUTE_124] = {20, 3, 4, 3, sMapName_Route124},
+ [MAPSEC_ROUTE_125] = {24, 3, 2, 2, sMapName_Route125},
+ [MAPSEC_ROUTE_126] = {20, 6, 3, 3, sMapName_Route126},
+ [MAPSEC_ROUTE_127] = {23, 6, 3, 3, sMapName_Route127},
+ [MAPSEC_ROUTE_128] = {23, 9, 4, 1, sMapName_Route128},
+ [MAPSEC_ROUTE_129] = {24, 10, 2, 1, sMapName_Route129},
+ [MAPSEC_ROUTE_130] = {21, 10, 3, 1, sMapName_Route130},
+ [MAPSEC_ROUTE_131] = {18, 10, 3, 1, sMapName_Route131},
+ [MAPSEC_ROUTE_132] = {15, 10, 2, 1, sMapName_Route132},
+ [MAPSEC_ROUTE_133] = {12, 10, 3, 1, sMapName_Route133},
+ [MAPSEC_ROUTE_134] = { 9, 10, 3, 1, sMapName_Route134},
+ [MAPSEC_UNDERWATER_124] = {20, 3, 4, 3, sMapName_Underwater},
+ [MAPSEC_UNDERWATER_126] = {20, 6, 3, 3, sMapName_Underwater},
+ [MAPSEC_UNDERWATER_127] = {23, 6, 3, 3, sMapName_Underwater},
+ [MAPSEC_UNDERWATER_128] = {23, 9, 4, 1, sMapName_Underwater},
+ [MAPSEC_UNDERWATER_SOOTOPOLIS] = {21, 7, 1, 1, sMapName_Underwater},
+ [MAPSEC_GRANITE_CAVE] = { 1, 13, 1, 1, sMapName_GraniteCave},
+ [MAPSEC_MT_CHIMNEY] = { 6, 2, 1, 1, sMapName_MtChimney},
+ [MAPSEC_SAFARI_ZONE] = {16, 2, 1, 1, sMapName_SafariZone},
+ [MAPSEC_BATTLE_FRONTIER] = {22, 12, 1, 1, sMapName_BattleFrontier},
+ [MAPSEC_PETALBURG_WOODS] = { 0, 8, 1, 1, sMapName_PetalburgWoods},
+ [MAPSEC_RUSTURF_TUNNEL] = { 2, 5, 1, 1, sMapName_RusturfTunnel},
+ [MAPSEC_ABANDONED_SHIP] = { 6, 14, 1, 1, sMapName_AbandonedShip},
+ [MAPSEC_NEW_MAUVILLE] = { 8, 7, 1, 1, sMapName_NewMauville},
+ [MAPSEC_METEOR_FALLS] = { 0, 3, 1, 1, sMapName_MeteorFalls},
+ [MAPSEC_METEOR_FALLS2] = { 1, 2, 1, 1, sMapName_MeteorFalls},
+ [MAPSEC_MT_PYRE] = {16, 4, 1, 1, sMapName_MtPyre},
+ [MAPSEC_AQUA_HIDEOUT_OLD] = {19, 3, 1, 1, sMapName_AquaHideoutOld},
+ [MAPSEC_SHOAL_CAVE] = {24, 4, 1, 1, sMapName_ShoalCave},
+ [MAPSEC_SEAFLOOR_CAVERN] = {24, 9, 1, 1, sMapName_SeafloorCavern},
+ [MAPSEC_UNDERWATER_SEAFLOOR_CAVERN] = {24, 9, 1, 1, sMapName_Underwater},
+ [MAPSEC_VICTORY_ROAD] = {27, 9, 1, 1, sMapName_VictoryRoad},
+ [MAPSEC_MIRAGE_ISLAND] = {17, 10, 1, 1, sMapName_MirageIsland},
+ [MAPSEC_CAVE_OF_ORIGIN] = {21, 7, 1, 1, sMapName_CaveOfOrigin},
+ [MAPSEC_SOUTHERN_ISLAND] = {12, 14, 1, 1, sMapName_SouthernIsland},
+ [MAPSEC_FIERY_PATH] = { 6, 3, 1, 1, sMapName_FieryPath},
+ [MAPSEC_FIERY_PATH2] = { 7, 3, 1, 1, sMapName_FieryPath},
+ [MAPSEC_JAGGED_PASS] = { 6, 3, 1, 1, sMapName_JaggedPass},
+ [MAPSEC_JAGGED_PASS2] = { 7, 2, 1, 1, sMapName_JaggedPass},
+ [MAPSEC_SEALED_CHAMBER] = {11, 10, 1, 1, sMapName_SealedChamber},
+ [MAPSEC_UNDERWATER_SEALED_CHAMBER] = {11, 10, 1, 1, sMapName_Underwater},
+ [MAPSEC_SCORCHED_SLAB] = {13, 0, 1, 1, sMapName_ScorchedSlab},
+ [MAPSEC_ISLAND_CAVE] = { 0, 10, 1, 1, sMapName_IslandCave},
+ [MAPSEC_DESERT_RUINS] = { 8, 3, 1, 1, sMapName_DesertRuins},
+ [MAPSEC_ANCIENT_TOMB] = {13, 2, 1, 1, sMapName_AncientTomb},
+ [MAPSEC_INSIDE_OF_TRUCK] = { 0, 0, 1, 1, sMapName_InsideOfTruck},
+ [MAPSEC_SKY_PILLAR] = {19, 10, 1, 1, sMapName_SkyPillar},
+ [MAPSEC_SECRET_BASE] = { 0, 0, 1, 1, sMapName_SecretBase},
+ [MAPSEC_DYNAMIC] = { 0, 0, 1, 1, sMapName_None},
+ [MAPSEC_PALLET_TOWN] = { 0, 0, 1, 1, sMapName_PalletTown},
+ [MAPSEC_VIRIDIAN_CITY] = { 0, 0, 1, 1, sMapName_ViridianCity},
+ [MAPSEC_PEWTER_CITY] = { 0, 0, 1, 1, sMapName_PewterCity},
+ [MAPSEC_CERULEAN_CITY] = { 0, 0, 1, 1, sMapName_CeruleanCity},
+ [MAPSEC_LAVENDER_TOWN] = { 0, 0, 1, 1, sMapName_LavenderTown},
+ [MAPSEC_VERMILION_CITY] = { 0, 0, 1, 1, sMapName_VermilionCity},
+ [MAPSEC_CELADON_CITY] = { 0, 0, 1, 1, sMapName_CeladonCity},
+ [MAPSEC_FUCHSIA_CITY] = { 0, 0, 1, 1, sMapName_FuchsiaCity},
+ [MAPSEC_CINNABAR_ISLAND] = { 0, 0, 1, 1, sMapName_CinnabarIsland},
+ [MAPSEC_INDIGO_PLATEAU] = { 0, 0, 1, 1, sMapName_IndigoPlateau},
+ [MAPSEC_SAFFRON_CITY] = { 0, 0, 1, 1, sMapName_SaffronCity},
+ [MAPSEC_ROUTE_4_FLYDUP] = { 0, 0, 1, 1, sMapName_Route4},
+ [MAPSEC_ROUTE_10_FLYDUP] = { 0, 0, 1, 1, sMapName_Route10},
+ [MAPSEC_ROUTE_1] = { 0, 0, 1, 1, sMapName_Route1},
+ [MAPSEC_ROUTE_2] = { 0, 0, 1, 1, sMapName_Route2},
+ [MAPSEC_ROUTE_3] = { 0, 0, 1, 1, sMapName_Route3},
+ [MAPSEC_ROUTE_4] = { 0, 0, 1, 1, sMapName_Route4_2},
+ [MAPSEC_ROUTE_5] = { 0, 0, 1, 1, sMapName_Route5},
+ [MAPSEC_ROUTE_6] = { 0, 0, 1, 1, sMapName_Route6},
+ [MAPSEC_ROUTE_7] = { 0, 0, 1, 1, sMapName_Route7},
+ [MAPSEC_ROUTE_8] = { 0, 0, 1, 1, sMapName_Route8},
+ [MAPSEC_ROUTE_9] = { 0, 0, 1, 1, sMapName_Route9},
+ [MAPSEC_ROUTE_10] = { 0, 0, 1, 1, sMapName_Route10_2},
+ [MAPSEC_ROUTE_11] = { 0, 0, 1, 1, sMapName_Route11},
+ [MAPSEC_ROUTE_12] = { 0, 0, 1, 1, sMapName_Route12},
+ [MAPSEC_ROUTE_13] = { 0, 0, 1, 1, sMapName_Route13},
+ [MAPSEC_ROUTE_14] = { 0, 0, 1, 1, sMapName_Route14},
+ [MAPSEC_ROUTE_15] = { 0, 0, 1, 1, sMapName_Route15},
+ [MAPSEC_ROUTE_16] = { 0, 0, 1, 1, sMapName_Route16},
+ [MAPSEC_ROUTE_17] = { 0, 0, 1, 1, sMapName_Route17},
+ [MAPSEC_ROUTE_18] = { 0, 0, 1, 1, sMapName_Route18},
+ [MAPSEC_ROUTE_19] = { 0, 0, 1, 1, sMapName_Route19},
+ [MAPSEC_ROUTE_20] = { 0, 0, 1, 1, sMapName_Route20},
+ [MAPSEC_ROUTE_21] = { 0, 0, 1, 1, sMapName_Route21},
+ [MAPSEC_ROUTE_22] = { 0, 0, 1, 1, sMapName_Route22},
+ [MAPSEC_ROUTE_23] = { 0, 0, 1, 1, sMapName_Route23},
+ [MAPSEC_ROUTE_24] = { 0, 0, 1, 1, sMapName_Route24},
+ [MAPSEC_ROUTE_25] = { 0, 0, 1, 1, sMapName_Route25},
+ [MAPSEC_VIRIDIAN_FOREST] = { 0, 0, 1, 1, sMapName_ViridianForest},
+ [MAPSEC_MT_MOON] = { 0, 0, 1, 1, sMapName_MtMoon},
+ [MAPSEC_S_S_ANNE] = { 0, 0, 1, 1, sMapName_SSAnne},
+ [MAPSEC_UNDERGROUND_PATH] = { 0, 0, 1, 1, sMapName_UndergroundPath},
+ [MAPSEC_UNDERGROUND_PATH_2] = { 0, 0, 1, 1, sMapName_UndergroundPath2},
+ [MAPSEC_DIGLETTS_CAVE] = { 0, 0, 1, 1, sMapName_DiglettsCave},
+ [MAPSEC_KANTO_VICTORY_ROAD] = { 0, 0, 1, 1, sMapName_KantoVictoryRoad},
+ [MAPSEC_ROCKET_HIDEOUT] = { 0, 0, 1, 1, sMapName_RocketHideout},
+ [MAPSEC_SILPH_CO] = { 0, 0, 1, 1, sMapName_SilphCo},
+ [MAPSEC_POKEMON_MANSION] = { 0, 0, 1, 1, sMapName_PokemonMansion},
+ [MAPSEC_KANTO_SAFARI_ZONE] = { 0, 0, 1, 1, sMapName_KantoSafariZone},
+ [MAPSEC_POKEMON_LEAGUE] = { 0, 0, 1, 1, sMapName_PokemonLeague},
+ [MAPSEC_ROCK_TUNNEL] = { 0, 0, 1, 1, sMapName_RockTunnel},
+ [MAPSEC_SEAFOAM_ISLANDS] = { 0, 0, 1, 1, sMapName_SeafoamIslands},
+ [MAPSEC_POKEMON_TOWER] = { 0, 0, 1, 1, sMapName_PokemonTower},
+ [MAPSEC_CERULEAN_CAVE] = { 0, 0, 1, 1, sMapName_CeruleanCave},
+ [MAPSEC_POWER_PLANT] = { 0, 0, 1, 1, sMapName_PowerPlant},
+ [MAPSEC_ONE_ISLAND] = { 0, 0, 1, 1, sMapName_OneIsland},
+ [MAPSEC_TWO_ISLAND] = { 0, 0, 1, 1, sMapName_TwoIsland},
+ [MAPSEC_THREE_ISLAND] = { 0, 0, 1, 1, sMapName_ThreeIsland},
+ [MAPSEC_FOUR_ISLAND] = { 0, 0, 1, 1, sMapName_FourIsland},
+ [MAPSEC_FIVE_ISLAND] = { 0, 0, 1, 1, sMapName_FiveIsland},
+ [MAPSEC_SEVEN_ISLAND] = { 0, 0, 1, 1, sMapName_SevenIsland},
+ [MAPSEC_SIX_ISLAND] = { 0, 0, 1, 1, sMapName_SixIsland},
+ [MAPSEC_KINDLE_ROAD] = { 0, 0, 1, 1, sMapName_KindleRoad},
+ [MAPSEC_TREASURE_BEACH] = { 0, 0, 1, 1, sMapName_TreasureBeach},
+ [MAPSEC_CAPE_BRINK] = { 0, 0, 1, 1, sMapName_CapeBrink},
+ [MAPSEC_BOND_BRIDGE] = { 0, 0, 1, 1, sMapName_BondBridge},
+ [MAPSEC_THREE_ISLE_PORT] = { 0, 0, 1, 1, sMapName_ThreeIslePort},
+ [MAPSEC_SEVII_ISLE_6] = { 0, 0, 1, 1, sMapName_SeviiIsle6},
+ [MAPSEC_SEVII_ISLE_7] = { 0, 0, 1, 1, sMapName_SeviiIsle7},
+ [MAPSEC_SEVII_ISLE_8] = { 0, 0, 1, 1, sMapName_SeviiIsle8},
+ [MAPSEC_SEVII_ISLE_9] = { 0, 0, 1, 1, sMapName_SeviiIsle9},
+ [MAPSEC_RESORT_GORGEOUS] = { 0, 0, 1, 1, sMapName_ResortGorgeous},
+ [MAPSEC_WATER_LABYRINTH] = { 0, 0, 1, 1, sMapName_WaterLabyrinth},
+ [MAPSEC_FIVE_ISLE_MEADOW] = { 0, 0, 1, 1, sMapName_FiveIsleMeadow},
+ [MAPSEC_MEMORIAL_PILLAR] = { 0, 0, 1, 1, sMapName_MemorialPillar},
+ [MAPSEC_OUTCAST_ISLAND] = { 0, 0, 1, 1, sMapName_OutcastIsland},
+ [MAPSEC_GREEN_PATH] = { 0, 0, 1, 1, sMapName_GreenPath},
+ [MAPSEC_WATER_PATH] = { 0, 0, 1, 1, sMapName_WaterPath},
+ [MAPSEC_RUIN_VALLEY] = { 0, 0, 1, 1, sMapName_RuinValley},
+ [MAPSEC_TRAINER_TOWER] = { 0, 0, 1, 1, sMapName_TrainerTower},
+ [MAPSEC_CANYON_ENTRANCE] = { 0, 0, 1, 1, sMapName_CanyonEntrance},
+ [MAPSEC_SEVAULT_CANYON] = { 0, 0, 1, 1, sMapName_SevaultCanyon},
+ [MAPSEC_TANOBY_RUINS] = { 0, 0, 1, 1, sMapName_TanobyRuins},
+ [MAPSEC_SEVII_ISLE_22] = { 0, 0, 1, 1, sMapName_SeviiIsle22},
+ [MAPSEC_SEVII_ISLE_23] = { 0, 0, 1, 1, sMapName_SeviiIsle23},
+ [MAPSEC_SEVII_ISLE_24] = { 0, 0, 1, 1, sMapName_SeviiIsle24},
+ [MAPSEC_NAVEL_ROCK_FRLG] = { 0, 0, 1, 1, sMapName_NavelRock},
+ [MAPSEC_MT_EMBER] = { 0, 0, 1, 1, sMapName_MtEmber},
+ [MAPSEC_BERRY_FOREST] = { 0, 0, 1, 1, sMapName_BerryForest},
+ [MAPSEC_ICEFALL_CAVE] = { 0, 0, 1, 1, sMapName_IcefallCave},
+ [MAPSEC_ROCKET_WAREHOUSE] = { 0, 0, 1, 1, sMapName_RocketWarehouse},
+ [MAPSEC_TRAINER_TOWER_2] = { 0, 0, 1, 1, sMapName_TrainerTower2},
+ [MAPSEC_DOTTED_HOLE] = { 0, 0, 1, 1, sMapName_DottedHole},
+ [MAPSEC_LOST_CAVE] = { 0, 0, 1, 1, sMapName_LostCave},
+ [MAPSEC_PATTERN_BUSH] = { 0, 0, 1, 1, sMapName_PatternBush},
+ [MAPSEC_ALTERING_CAVE_FRLG] = { 0, 0, 1, 1, sMapName_AlteringCave},
+ [MAPSEC_TANOBY_CHAMBERS] = { 0, 0, 1, 1, sMapName_TanobyChambers},
+ [MAPSEC_THREE_ISLE_PATH] = { 0, 0, 1, 1, sMapName_ThreeIslePath},
+ [MAPSEC_TANOBY_KEY] = { 0, 0, 1, 1, sMapName_TanobyKey},
+ [MAPSEC_BIRTH_ISLAND_FRLG] = { 0, 0, 1, 1, sMapName_BirthIsland},
+ [MAPSEC_MONEAN_CHAMBER] = { 0, 0, 1, 1, sMapName_MoneanChamber},
+ [MAPSEC_LIPTOO_CHAMBER] = { 0, 0, 1, 1, sMapName_LiptooChamber},
+ [MAPSEC_WEEPTH_CHAMBER] = { 0, 0, 1, 1, sMapName_WeepthChamber},
+ [MAPSEC_DILFORD_CHAMBER] = { 0, 0, 1, 1, sMapName_DilfordChamber},
+ [MAPSEC_SCUFIB_CHAMBER] = { 0, 0, 1, 1, sMapName_ScufibChamber},
+ [MAPSEC_RIXY_CHAMBER] = { 0, 0, 1, 1, sMapName_RixyChamber},
+ [MAPSEC_VIAPOIS_CHAMBER] = { 0, 0, 1, 1, sMapName_ViapoisChamber},
+ [MAPSEC_EMBER_SPA] = { 0, 0, 1, 1, sMapName_EmberSpa},
+ [MAPSEC_SPECIAL_AREA] = { 0, 0, 1, 1, sMapName_SpecialArea},
+ [MAPSEC_AQUA_HIDEOUT] = {19, 3, 1, 1, sMapName_AquaHideout},
+ [MAPSEC_MAGMA_HIDEOUT] = { 6, 3, 1, 1, sMapName_MagmaHideout},
+ [MAPSEC_MIRAGE_TOWER] = { 8, 2, 1, 1, sMapName_MirageTower},
+ [MAPSEC_BIRTH_ISLAND] = { 0, 0, 1, 1, sMapName_BirthIsland},
+ [MAPSEC_FARAWAY_ISLAND] = { 0, 0, 1, 1, sMapName_FarawayIsland},
+ [MAPSEC_ARTISAN_CAVE] = {22, 12, 1, 1, sMapName_ArtisanCave},
+ [MAPSEC_MARINE_CAVE] = { 0, 0, 1, 1, sMapName_MarineCave},
+ [MAPSEC_UNDERWATER_MARINE_CAVE] = { 0, 0, 1, 1, sMapName_Underwater},
+ [MAPSEC_TERRA_CAVE] = { 0, 0, 1, 1, sMapName_TerraCave},
+ [MAPSEC_UNDERWATER_105] = { 0, 10, 1, 3, sMapName_Underwater},
+ [MAPSEC_UNDERWATER_125] = {24, 3, 2, 2, sMapName_Underwater},
+ [MAPSEC_UNDERWATER_129] = {24, 10, 2, 1, sMapName_Underwater},
+ [MAPSEC_DESERT_UNDERPASS] = { 2, 0, 1, 1, sMapName_DesertUnderpass},
+ [MAPSEC_ALTERING_CAVE] = { 6, 8, 1, 1, sMapName_AlteringCave},
+ [MAPSEC_NAVEL_ROCK] = { 0, 0, 1, 1, sMapName_NavelRock},
+ [MAPSEC_TRAINER_HILL] = { 8, 4, 1, 1, sMapName_TrainerHill}
};
#endif //GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H
diff --git a/src/data/trainer_graphics/back_pic_tables.h b/src/data/trainer_graphics/back_pic_tables.h
index 86efd7905..1dbffba42 100644
--- a/src/data/trainer_graphics/back_pic_tables.h
+++ b/src/data/trainer_graphics/back_pic_tables.h
@@ -13,18 +13,22 @@ const struct MonCoords gTrainerBackPicCoords[] =
// this table goes functionally unused, since none of these pics are compressed
// and the place they would get extracted to gets overwritten later anyway
// the casts are so they'll play nice with the strict struct definition
+#define TRAINER_BACK_SPRITE(trainerPic, sprite, size) [TRAINER_BACK_PIC_##trainerPic] = {(const u32 *)sprite, size, TRAINER_BACK_PIC_##trainerPic}
+
const struct CompressedSpriteSheet gTrainerBackPicTable[] =
{
- (const u32 *)gTrainerBackPic_Brendan, 0x2000, TRAINER_BACK_PIC_BRENDAN,
- (const u32 *)gTrainerBackPic_May, 0x2000, TRAINER_BACK_PIC_MAY,
- (const u32 *)gTrainerBackPic_Red, 0x2800, TRAINER_BACK_PIC_RED,
- (const u32 *)gTrainerBackPic_Leaf, 0x2800, TRAINER_BACK_PIC_LEAF,
- (const u32 *)gTrainerBackPic_RubySapphireBrendan, 0x2000, TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN,
- (const u32 *)gTrainerBackPic_RubySapphireMay, 0x2000, TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY,
- (const u32 *)gTrainerBackPic_Wally, 0x2000, TRAINER_BACK_PIC_WALLY,
- (const u32 *)gTrainerBackPic_Steven, 0x2000, TRAINER_BACK_PIC_STEVEN,
+ TRAINER_BACK_SPRITE(BRENDAN, gTrainerBackPic_Brendan, 0x2000),
+ TRAINER_BACK_SPRITE(MAY, gTrainerBackPic_May, 0x2000),
+ TRAINER_BACK_SPRITE(RED, gTrainerBackPic_Red, 0x2800),
+ TRAINER_BACK_SPRITE(LEAF, gTrainerBackPic_Leaf, 0x2800),
+ TRAINER_BACK_SPRITE(RUBY_SAPPHIRE_BRENDAN, gTrainerBackPic_RubySapphireBrendan, 0x2000),
+ TRAINER_BACK_SPRITE(RUBY_SAPPHIRE_MAY, gTrainerBackPic_RubySapphireMay, 0x2000),
+ TRAINER_BACK_SPRITE(WALLY, gTrainerBackPic_Wally, 0x2000),
+ TRAINER_BACK_SPRITE(STEVEN, gTrainerBackPic_Steven, 0x2000),
};
+#define TRAINER_BACK_PAL(trainerPic, pal) [TRAINER_BACK_PIC_##trainerPic] = {pal, TRAINER_BACK_PIC_##trainerPic}
+
const struct CompressedSpritePalette gTrainerBackPicPaletteTable[] =
{
TRAINER_BACK_PAL(BRENDAN, gTrainerPalette_Brendan),
diff --git a/src/data/trainer_graphics/front_pic_tables.h b/src/data/trainer_graphics/front_pic_tables.h
index c3408b4c3..e751f3c1d 100644
--- a/src/data/trainer_graphics/front_pic_tables.h
+++ b/src/data/trainer_graphics/front_pic_tables.h
@@ -95,6 +95,8 @@ const struct MonCoords gTrainerFrontPicCoords[] =
[TRAINER_PIC_RS_MAY] = {.size = 8, .y_offset = 1},
};
+#define TRAINER_SPRITE(trainerPic, sprite, size) [TRAINER_PIC_##trainerPic] = {sprite, size, TRAINER_PIC_##trainerPic}
+
const struct CompressedSpriteSheet gTrainerFrontPicTable[] =
{
TRAINER_SPRITE(HIKER, gTrainerFrontPic_Hiker, 0x800),
@@ -192,6 +194,8 @@ const struct CompressedSpriteSheet gTrainerFrontPicTable[] =
TRAINER_SPRITE(RS_MAY, gTrainerFrontPic_RubySapphireMay, 0x800),
};
+#define TRAINER_PAL(trainerPic, pal) [TRAINER_PIC_##trainerPic] = {pal, TRAINER_PIC_##trainerPic}
+
const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[] =
{
TRAINER_PAL(HIKER, gTrainerPalette_Hiker),
diff --git a/src/data/wild_encounters.json b/src/data/wild_encounters.json
index b27de4513..0b30c0f65 100755
--- a/src/data/wild_encounters.json
+++ b/src/data/wild_encounters.json
@@ -2265,8 +2265,8 @@
}
},
{
- "map": "MAP_UNDERWATER2",
- "base_label": "gUnderwater2",
+ "map": "MAP_UNDERWATER_ROUTE126",
+ "base_label": "gUnderwater_Route126",
"water_mons": {
"encounter_rate": 4,
"mons": [
@@ -9075,8 +9075,8 @@
}
},
{
- "map": "MAP_UNDERWATER1",
- "base_label": "gUnderwater1",
+ "map": "MAP_UNDERWATER_ROUTE124",
+ "base_label": "gUnderwater_Route124",
"water_mons": {
"encounter_rate": 4,
"mons": [
diff --git a/src/daycare.c b/src/daycare.c
index 5d4480403..511fa0551 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -22,7 +22,6 @@
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/region_map_sections.h"
-#include "constants/species.h"
// this file's functions
static void ClearDaycareMonMail(struct DayCareMail *mail);
@@ -548,8 +547,19 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare)
for (i = 0; i < INHERITED_IV_COUNT; i++)
{
// Randomly pick an IV from the available list and stop from being chosen again.
+ // BUG: Instead of removing the IV that was just picked, this
+ // removes position 0 (HP) then position 1 (DEF), then position 2. This is why HP and DEF
+ // have a lower chance to be inherited in Emerald and why the IV picked for inheritance can
+ // be repeated. Amusingly, FRLG and RS also got this wrong. They remove selectedIvs[i], which
+ // is not an index! This means that it can sometimes remove the wrong stat.
+ #ifndef BUGFIX
selectedIvs[i] = availableIVs[Random() % (NUM_STATS - i)];
RemoveIVIndexFromList(availableIVs, i);
+ #else
+ u8 index = Random() % (NUM_STATS - i);
+ selectedIvs[i] = availableIVs[index];
+ RemoveIVIndexFromList(availableIVs, index);
+ #endif
}
// Determine which parent each of the selected IVs should inherit from.
@@ -615,10 +625,7 @@ static u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves)
for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++)
{
if (gEggMoves[eggMoveIdx + i] > EGG_MOVES_SPECIES_OFFSET)
- {
- // TODO: the curly braces around this if statement are required for a matching build.
break;
- }
eggMoves[i] = gEggMoves[eggMoveIdx + i];
numEggMoves++;
@@ -1237,7 +1244,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId)
{
u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuListTaskId);
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
switch (input)
{
@@ -1255,7 +1262,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId)
DestroyTask(taskId);
EnableBothScriptContexts();
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
gSpecialVar_Result = DAYCARE_EXITED_LEVEL_MENU;
DestroyListMenuTask(gTasks[taskId].tMenuListTaskId, NULL, NULL);
diff --git a/src/decompress.c b/src/decompress.c
index c303f214f..007753303 100644
--- a/src/decompress.c
+++ b/src/decompress.c
@@ -4,7 +4,6 @@
#include "decompress.h"
#include "pokemon.h"
#include "text.h"
-#include "constants/species.h"
EWRAM_DATA ALIGNED(4) u8 gDecompressionBuffer[0x4000] = {0};
diff --git a/src/decoration.c b/src/decoration.c
index 40cccbe5e..74dbacdf9 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -917,9 +917,9 @@ static void DecorationItemsMenu_PrintDecorationInUse(u8 windowId, s32 itemIndex,
if (itemIndex != -2)
{
if (IsDecorationIndexInSecretBase(itemIndex + 1) == TRUE)
- blit_move_info_icon(windowId, 0x18, 0x5c, y + 2);
+ BlitMenuInfoIcon(windowId, MENU_INFO_ICON_BALL_RED, 92, y + 2);
else if (IsDecorationIndexInPlayersRoom(itemIndex + 1) == TRUE)
- blit_move_info_icon(windowId, 0x19, 0x5c, y + 2);
+ BlitMenuInfoIcon(windowId, MENU_INFO_ICON_BALL_BLUE, 92, y + 2);
}
}
@@ -1147,7 +1147,7 @@ static void DontTossDecoration(u8 taskId)
static void ReturnToDecorationItemsAfterInvalidSelection(u8 taskId)
{
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
ClearDialogWindowAndFrame(0, 0);
AddDecorationWindow(WINDOW_DECORATION_CATEGORIES);
@@ -1803,7 +1803,7 @@ static bool8 ApplyCursorMovement_IsInvalid(u8 taskId)
static bool8 IsHoldingDirection(void)
{
- u16 heldKeys = gMain.heldKeys & DPAD_ANY;
+ u16 heldKeys = JOY_HELD(DPAD_ANY);
if (heldKeys != DPAD_UP && heldKeys != DPAD_DOWN && heldKeys != DPAD_LEFT && heldKeys != DPAD_RIGHT)
return FALSE;
@@ -1827,13 +1827,14 @@ static void Task_SelectLocation(u8 taskId)
sPlacePutAwayYesNoFunctions[tDecorationItemsMenuCommand].yesFunc(taskId);
return;
}
- else if (tButton == B_BUTTON)
+
+ if (tButton == B_BUTTON)
{
sPlacePutAwayYesNoFunctions[tDecorationItemsMenuCommand].noFunc(taskId);
return;
}
- if ((gMain.heldKeys & DPAD_ANY) == DPAD_UP)
+ if ((JOY_HELD(DPAD_ANY)) == DPAD_UP)
{
sDecorationLastDirectionMoved = DIR_SOUTH;
gSprites[sDecor_CameraSpriteObjectIdx1].data[2] = 0;
@@ -1841,7 +1842,7 @@ static void Task_SelectLocation(u8 taskId)
tCursorY--;
}
- if ((gMain.heldKeys & DPAD_ANY) == DPAD_DOWN)
+ if ((JOY_HELD(DPAD_ANY)) == DPAD_DOWN)
{
sDecorationLastDirectionMoved = DIR_NORTH;
gSprites[sDecor_CameraSpriteObjectIdx1].data[2] = 0;
@@ -1849,7 +1850,7 @@ static void Task_SelectLocation(u8 taskId)
tCursorY++;
}
- if ((gMain.heldKeys & DPAD_ANY) == DPAD_LEFT)
+ if ((JOY_HELD(DPAD_ANY)) == DPAD_LEFT)
{
sDecorationLastDirectionMoved = DIR_WEST;
gSprites[sDecor_CameraSpriteObjectIdx1].data[2] = -2;
@@ -1857,7 +1858,7 @@ static void Task_SelectLocation(u8 taskId)
tCursorX--;
}
- if ((gMain.heldKeys & DPAD_ANY) == DPAD_RIGHT)
+ if ((JOY_HELD(DPAD_ANY)) == DPAD_RIGHT)
{
sDecorationLastDirectionMoved = DIR_EAST;
gSprites[sDecor_CameraSpriteObjectIdx1].data[2] = 2;
@@ -1877,10 +1878,10 @@ static void Task_SelectLocation(u8 taskId)
if (!tButton)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
tButton = A_BUTTON;
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
tButton = B_BUTTON;
}
}
@@ -1895,7 +1896,7 @@ static void ContinueDecorating(u8 taskId)
static void CantPlaceDecorationPrompt(u8 taskId)
{
- if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
ContinueDecorating(taskId);
}
@@ -1928,7 +1929,7 @@ static void CopyTile(u8 *dest, u16 tile)
case BG_TILE_H_FLIP(0) >> 10:
for (i = 0; i < 8; i++)
{
- dest[4 * i] = (buffer[4 * (i + 1) - 1] >> 4) + ((buffer[4 * (i + 1) - 1] & 0x0F) << 4);
+ dest[4 * i + 0] = (buffer[4 * (i + 1) - 1] >> 4) + ((buffer[4 * (i + 1) - 1] & 0x0F) << 4);
dest[4 * i + 1] = (buffer[4 * (i + 1) - 2] >> 4) + ((buffer[4 * (i + 1) - 2] & 0x0F) << 4);
dest[4 * i + 2] = (buffer[4 * (i + 1) - 3] >> 4) + ((buffer[4 * (i + 1) - 3] & 0x0F) << 4);
dest[4 * i + 3] = (buffer[4 * (i + 1) - 4] >> 4) + ((buffer[4 * (i + 1) - 4] & 0x0F) << 4);
@@ -1937,7 +1938,7 @@ static void CopyTile(u8 *dest, u16 tile)
case BG_TILE_V_FLIP(0) >> 10:
for (i = 0; i < 8; i++)
{
- dest[4 * i] = buffer[4 * (7 - i)];
+ dest[4 * i + 0] = buffer[4 * (7 - i) + 0];
dest[4 * i + 1] = buffer[4 * (7 - i) + 1];
dest[4 * i + 2] = buffer[4 * (7 - i) + 2];
dest[4 * i + 3] = buffer[4 * (7 - i) + 3];
@@ -2386,7 +2387,7 @@ static void AttemptPutAwayDecoration_(u8 taskId)
static void ContinuePuttingAwayDecorationsPrompt(u8 taskId)
{
- if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
ContinuePuttingAwayDecorations(taskId);
}
diff --git a/src/dewford_trend.c b/src/dewford_trend.c
index e3b98859c..5c7e50f16 100644
--- a/src/dewford_trend.c
+++ b/src/dewford_trend.c
@@ -222,15 +222,18 @@ void BufferTrendyPhraseString(void)
void TrendyPhraseIsOld(void)
{
u16 result = 0;
-
- if (gSaveBlock1Ptr->easyChatPairs[0].unk0_0 - gSaveBlock1Ptr->easyChatPairs[1].unk0_0 < 2)
+
+ do
{
- #ifndef NONMATCHING
- asm("":::"r2"); //Force the compiler to store address of gSaveBlock1 in r3 instead of r2
- #endif
- if (!gSaveBlock1Ptr->easyChatPairs[0].unk1_6 && gSaveBlock1Ptr->easyChatPairs[1].unk1_6)
- result = 1;
- }
+ if (gSaveBlock1Ptr->easyChatPairs[0].unk0_0 - gSaveBlock1Ptr->easyChatPairs[1].unk0_0 > 1)
+ break;
+ if (gSaveBlock1Ptr->easyChatPairs[0].unk1_6)
+ break;
+ if (!gSaveBlock1Ptr->easyChatPairs[1].unk1_6)
+ break;
+ result = 1;
+ } while (0);
+
gSpecialVar_Result = result;
}
diff --git a/src/diploma.c b/src/diploma.c
index 7eb3b0e81..f243d09f9 100644
--- a/src/diploma.c
+++ b/src/diploma.c
@@ -107,7 +107,7 @@ static void Task_DiplomaFadeIn(u8 taskId)
static void Task_DiplomaWaitForKeyPress(u8 taskId)
{
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
gTasks[taskId].func = Task_DiplomaFadeOut;
diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c
index 34f73126b..66eacc5f9 100644
--- a/src/dodrio_berry_picking.c
+++ b/src/dodrio_berry_picking.c
@@ -24,7 +24,6 @@
#include "window.h"
#include "constants/items.h"
#include "constants/songs.h"
-#include "constants/species.h"
struct DodrioSubstruct_0160
{
@@ -2355,19 +2354,19 @@ static void sub_8027554(void)
{
if (gUnknown_02022C98->unkB0[gUnknown_02022C98->multiplayerId] == 0)
{
- if (gMain.newKeys & DPAD_UP)
+ if (JOY_NEW(DPAD_UP))
{
gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 = 2;
gUnknown_02022C98->unkB0[gUnknown_02022C98->multiplayerId] = 6;
PlaySE(SE_M_CHARM);
}
- else if (gMain.newKeys & DPAD_LEFT)
+ else if (JOY_NEW(DPAD_LEFT))
{
gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 = 3;
gUnknown_02022C98->unkB0[gUnknown_02022C98->multiplayerId] = 6;
PlaySE(SE_M_CHARM);
}
- else if (gMain.newKeys & DPAD_RIGHT)
+ else if (JOY_NEW(DPAD_RIGHT))
{
gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 = 1;
gUnknown_02022C98->unkB0[gUnknown_02022C98->multiplayerId] = 6;
@@ -2653,7 +2652,7 @@ static void Task_ShowDodrioBerryPickingRecords(u8 taskId)
data[0]++;
break;
case 2:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
rbox_fill_rectangle(data[1]);
CopyWindowToVram(data[1], 1);
@@ -4266,7 +4265,7 @@ static void sub_802988C(void)
gUnknown_02022CF8->state++;
break;
case 4:
- if (++gUnknown_02022CF8->unk301C >= 30 && gMain.newKeys & A_BUTTON)
+ if (++gUnknown_02022CF8->unk301C >= 30 && JOY_NEW(A_BUTTON))
{
gUnknown_02022CF8->unk301C = 0;
PlaySE(SE_SELECT);
@@ -4298,7 +4297,7 @@ static void sub_802988C(void)
gUnknown_02022CF8->state++;
break;
case 8:
- if (++gUnknown_02022CF8->unk301C >= 30 && gMain.newKeys & A_BUTTON)
+ if (++gUnknown_02022CF8->unk301C >= 30 && JOY_NEW(A_BUTTON))
{
gUnknown_02022CF8->unk301C = 0;
PlaySE(SE_SELECT);
@@ -4358,7 +4357,7 @@ static void sub_802988C(void)
gUnknown_02022CF8->state++;
break;
case 11:
- if (++gUnknown_02022CF8->unk301C >= 30 && gMain.newKeys & A_BUTTON)
+ if (++gUnknown_02022CF8->unk301C >= 30 && JOY_NEW(A_BUTTON))
{
gUnknown_02022CF8->unk301C = 0;
PlaySE(SE_SELECT);
@@ -4424,14 +4423,14 @@ static void sub_802A010(void)
AddTextPrinterParameterized(gUnknown_02022CF8->unk3008[1], 1, gText_SelectorArrow2, 0, ((y - 1) * 16) + 1, -1, NULL);
CopyWindowToVram(gUnknown_02022CF8->unk3008[1], 3);
// Increment state only if A or B button have been pressed.
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
if (gUnknown_02022CF8->unk3020 == 0)
gUnknown_02022CF8->unk3020 = 1;
gUnknown_02022CF8->state++;
}
- else if (gMain.newKeys & (DPAD_UP | DPAD_DOWN))
+ else if (JOY_NEW(DPAD_UP | DPAD_DOWN))
{
PlaySE(SE_SELECT);
switch (gUnknown_02022CF8->unk3020)
@@ -4447,7 +4446,7 @@ static void sub_802A010(void)
break;
}
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
gUnknown_02022CF8->unk3020 = 2;
diff --git a/src/easy_chat.c b/src/easy_chat.c
index 8e1044591..2590eea1a 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -32,7 +32,6 @@
#include "constants/lilycove_lady.h"
#include "constants/mauville_old_man.h"
#include "constants/songs.h"
-#include "constants/species.h"
#include "constants/rgb.h"
#define EZCHAT_TASK_STATE 0
@@ -1523,7 +1522,7 @@ static u16 sub_811AB68(void)
{
do
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
sub_811BF78();
sEasyChatScreen->state = 2;
@@ -1532,30 +1531,30 @@ static u16 sub_811AB68(void)
sEasyChatScreen->unk_0c = 0;
return 9;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
return sub_811B150();
}
- else if (gMain.newKeys & START_BUTTON)
+ else if (JOY_NEW(START_BUTTON))
{
return sub_811B1B4();
}
- else if (gMain.newKeys & DPAD_UP)
+ else if (JOY_NEW(DPAD_UP))
{
sEasyChatScreen->mainCursorRow--;
break;
}
- else if (gMain.newKeys & DPAD_LEFT)
+ else if (JOY_NEW(DPAD_LEFT))
{
sEasyChatScreen->mainCursorColumn--;
break;
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
sEasyChatScreen->mainCursorRow++;
break;
}
- else if (gMain.newKeys & DPAD_RIGHT)
+ else if (JOY_NEW(DPAD_RIGHT))
{
sEasyChatScreen->mainCursorColumn++;
break;
@@ -1595,7 +1594,7 @@ static u16 sub_811ACDC(void)
{
do
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
switch (sEasyChatScreen->mainCursorColumn)
{
@@ -1610,30 +1609,30 @@ static u16 sub_811ACDC(void)
}
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
return sub_811B150();
}
- else if (gMain.newKeys & START_BUTTON)
+ else if (JOY_NEW(START_BUTTON))
{
return sub_811B1B4();
}
- else if (gMain.newKeys & DPAD_UP)
+ else if (JOY_NEW(DPAD_UP))
{
sEasyChatScreen->mainCursorRow--;
break;
}
- else if (gMain.newKeys & DPAD_LEFT)
+ else if (JOY_NEW(DPAD_LEFT))
{
sEasyChatScreen->mainCursorColumn--;
break;
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
sEasyChatScreen->mainCursorRow = 0;
break;
}
- else if (gMain.newKeys & DPAD_RIGHT)
+ else if (JOY_NEW(DPAD_RIGHT))
{
sEasyChatScreen->mainCursorColumn++;
break;
@@ -1666,10 +1665,10 @@ static u16 sub_811ACDC(void)
static u16 sub_811AE44(void)
{
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
return sub_811B32C();
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
if (sEasyChatScreen->unk_0a != -1)
return sub_811B2B0();
@@ -1685,19 +1684,19 @@ static u16 sub_811AE44(void)
}
}
- if (gMain.newKeys & SELECT_BUTTON)
+ if (JOY_NEW(SELECT_BUTTON))
return sub_811B33C();
- if (gMain.newAndRepeatedKeys & DPAD_UP)
+ if (JOY_REPEAT(DPAD_UP))
return sub_811B528(2);
- if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ if (JOY_REPEAT(DPAD_DOWN))
return sub_811B528(3);
- if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ if (JOY_REPEAT(DPAD_LEFT))
return sub_811B528(1);
- if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ if (JOY_REPEAT(DPAD_RIGHT))
return sub_811B528(0);
return 0;
@@ -1705,31 +1704,31 @@ static u16 sub_811AE44(void)
static u16 sub_811AF00(void)
{
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
sEasyChatScreen->state = 2;
return 14;
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
return sub_811B394();
- if (gMain.newKeys & START_BUTTON)
+ if (JOY_NEW(START_BUTTON))
return sub_811B794(4);
- if (gMain.newKeys & SELECT_BUTTON)
+ if (JOY_NEW(SELECT_BUTTON))
return sub_811B794(5);
- if (gMain.newAndRepeatedKeys & DPAD_UP)
+ if (JOY_REPEAT(DPAD_UP))
return sub_811B794(2);
- if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ if (JOY_REPEAT(DPAD_DOWN))
return sub_811B794(3);
- if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ if (JOY_REPEAT(DPAD_LEFT))
return sub_811B794(1);
- if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ if (JOY_REPEAT(DPAD_RIGHT))
return sub_811B794(0);
return 0;
@@ -1794,10 +1793,10 @@ static u16 sub_811B040(void)
static u16 sub_811B08C(void)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
return 26;
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
return sub_811B150();
return 0;
@@ -1805,7 +1804,7 @@ static u16 sub_811B08C(void)
static u16 sub_811B0BC(void)
{
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
sEasyChatScreen->state = sub_811B2A4();
return 7;
@@ -2537,7 +2536,7 @@ u8 sub_811BBBC(void)
return sEasyChatScreen->unk_0c;
}
-static void sub_811BBC8(s8 *arg0, s8 *arg1)
+void sub_811BBC8(u8 *arg0, u8 *arg1)
{
*arg0 = sEasyChatScreen->unk_10;
*arg1 = sEasyChatScreen->unk_11;
@@ -4529,18 +4528,18 @@ static void sub_811E30C(void)
x = var0 * 13;
x = x * 8 + 28;
y = var1 * 16 + 96;
- sub_811E34C((u8)x, (u8)y);
+ sub_811E34C(x, y);
}
static void sub_811E34C(u8 x, u8 y)
{
- if (!sUnknown_0203A11C->unk2E4)
- return;
-
- sUnknown_0203A11C->unk2E4->pos1.x = (s16)x;
- sUnknown_0203A11C->unk2E4->pos1.y = (s16)y;
- sUnknown_0203A11C->unk2E4->pos2.x = 0;
- sUnknown_0203A11C->unk2E4->data[0] = 0;
+ if (sUnknown_0203A11C->unk2E4)
+ {
+ sUnknown_0203A11C->unk2E4->pos1.x = x;
+ sUnknown_0203A11C->unk2E4->pos1.y = y;
+ sUnknown_0203A11C->unk2E4->pos2.x = 0;
+ sUnknown_0203A11C->unk2E4->data[0] = 0;
+ }
}
static void sub_811E380(void)
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 87f0a13fd..f90441b68 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -434,7 +434,7 @@ static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID, u16* speciesLoc
u16 species = GetMonData(mon, MON_DATA_SPECIES);
u32 pid = GetMonData(mon, MON_DATA_PERSONALITY);
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species],
- gMonSpritesGfxPtr->sprites[(a0 * 2) + 1],
+ gMonSpritesGfxPtr->sprites.ptr [(a0 * 2) + 1],
species, pid);
LoadCompressedSpritePalette(GetMonSpritePalStruct(mon));
*speciesLoc = species;
diff --git a/src/ereader_helpers.c b/src/ereader_helpers.c
index bdfbebf6b..944d1d728 100755
--- a/src/ereader_helpers.c
+++ b/src/ereader_helpers.c
@@ -12,7 +12,6 @@
#include "trainer_hill.h"
#include "constants/easy_chat.h"
#include "constants/trainers.h"
-#include "constants/species.h"
#include "constants/moves.h"
#include "constants/items.h"
diff --git a/src/ereader_screen.c b/src/ereader_screen.c
index b4a9164b3..3f2cf3217 100755
--- a/src/ereader_screen.c
+++ b/src/ereader_screen.c
@@ -137,7 +137,7 @@ static u32 sub_81D4EE4(u8 *arg0, u16 *arg1)
{
*arg0 = 1;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
*arg0 = 0;
return 1;
@@ -158,7 +158,7 @@ static u32 sub_81D4EE4(u8 *arg0, u16 *arg1)
*arg1 = 0;
*arg0 = 3;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
*arg0 = 0;
return 1;
@@ -288,7 +288,7 @@ static void sub_81D5084(u8 taskId)
OpenEReaderLink();
data->unk8 = 6;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
sub_81D505C(&data->unk0);
PlaySE(SE_SELECT);
@@ -296,7 +296,7 @@ static void sub_81D5084(u8 taskId)
}
break;
case 6:
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
CloseLink();
@@ -436,7 +436,7 @@ static void sub_81D5084(u8 taskId)
}
break;
case 19:
- if (IsFanfareTaskInactive() && (gMain.newKeys & (A_BUTTON | B_BUTTON)))
+ if (IsFanfareTaskInactive() && (JOY_NEW(A_BUTTON | B_BUTTON)))
data->unk8 = 26;
break;
case 23:
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index 72de880c8..12ef4acdc 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -401,42 +401,43 @@ const u8 gInitialMovementTypeFacingDirections[] = {
[MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = DIR_EAST,
};
-#define OBJ_EVENT_PAL_TAG_0 0x1103
-#define OBJ_EVENT_PAL_TAG_1 0x1104
-#define OBJ_EVENT_PAL_TAG_2 0x1105
-#define OBJ_EVENT_PAL_TAG_3 0x1106
-#define OBJ_EVENT_PAL_TAG_4 0x1107
-#define OBJ_EVENT_PAL_TAG_5 0x1108
-#define OBJ_EVENT_PAL_TAG_6 0x1109
-#define OBJ_EVENT_PAL_TAG_7 0x110A
-#define OBJ_EVENT_PAL_TAG_8 0x1100
-#define OBJ_EVENT_PAL_TAG_9 0x1101
-#define OBJ_EVENT_PAL_TAG_10 0x1102
-#define OBJ_EVENT_PAL_TAG_11 0x1115
-#define OBJ_EVENT_PAL_TAG_12 0x110B
-#define OBJ_EVENT_PAL_TAG_13 0x110C
-#define OBJ_EVENT_PAL_TAG_14 0x110D
-#define OBJ_EVENT_PAL_TAG_15 0x110E
-#define OBJ_EVENT_PAL_TAG_16 0x110F
-#define OBJ_EVENT_PAL_TAG_17 0x1110
-#define OBJ_EVENT_PAL_TAG_18 0x1111
-#define OBJ_EVENT_PAL_TAG_19 0x1112
-#define OBJ_EVENT_PAL_TAG_20 0x1113
-#define OBJ_EVENT_PAL_TAG_21 0x1114
-#define OBJ_EVENT_PAL_TAG_22 0x1116
-#define OBJ_EVENT_PAL_TAG_23 0x1117
-#define OBJ_EVENT_PAL_TAG_24 0x1118
-#define OBJ_EVENT_PAL_TAG_25 0x1119
-#define OBJ_EVENT_PAL_TAG_26 0x111B
-#define OBJ_EVENT_PAL_TAG_27 0x111C
-#define OBJ_EVENT_PAL_TAG_28 0x111D
-#define OBJ_EVENT_PAL_TAG_29 0x111E
-#define OBJ_EVENT_PAL_TAG_30 0x111F
-#define OBJ_EVENT_PAL_TAG_31 0x1120
-#define OBJ_EVENT_PAL_TAG_32 0x1121
-#define OBJ_EVENT_PAL_TAG_33 0x1122
-#define OBJ_EVENT_PAL_TAG_34 0x1123
-#define OBJ_EVENT_PAL_TAG_NONE 0x11FF
+#define OBJ_EVENT_PAL_TAG_BRENDAN 0x1100
+#define OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION 0x1101
+#define OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION 0x1102
+#define OBJ_EVENT_PAL_TAG_NPC_1 0x1103
+#define OBJ_EVENT_PAL_TAG_NPC_2 0x1104
+#define OBJ_EVENT_PAL_TAG_NPC_3 0x1105
+#define OBJ_EVENT_PAL_TAG_NPC_4 0x1106
+#define OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION 0x1107
+#define OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION 0x1108
+#define OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION 0x1109
+#define OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION 0x110A
+#define OBJ_EVENT_PAL_TAG_QUINTY_PLUMP 0x110B
+#define OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION 0x110C
+#define OBJ_EVENT_PAL_TAG_TRUCK 0x110D
+#define OBJ_EVENT_PAL_TAG_VIGOROTH 0x110E
+#define OBJ_EVENT_PAL_TAG_ZIGZAGOON 0x110F
+#define OBJ_EVENT_PAL_TAG_MAY 0x1110
+#define OBJ_EVENT_PAL_TAG_MAY_REFLECTION 0x1111
+#define OBJ_EVENT_PAL_TAG_MOVING_BOX 0x1112
+#define OBJ_EVENT_PAL_TAG_CABLE_CAR 0x1113
+#define OBJ_EVENT_PAL_TAG_SSTIDAL 0x1114
+#define OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER 0x1115
+#define OBJ_EVENT_PAL_TAG_KYOGRE 0x1116
+#define OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION 0x1117
+#define OBJ_EVENT_PAL_TAG_GROUDON 0x1118
+#define OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION 0x1119
+#define OBJ_EVENT_PAL_TAG_UNUSED 0x111A
+#define OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW 0x111B
+#define OBJ_EVENT_PAL_TAG_POOCHYENA 0x111C
+#define OBJ_EVENT_PAL_TAG_RED_LEAF 0x111D
+#define OBJ_EVENT_PAL_TAG_DEOXYS 0x111E
+#define OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE 0x111F
+#define OBJ_EVENT_PAL_TAG_HO_OH 0x1120
+#define OBJ_EVENT_PAL_TAG_LUGIA 0x1121
+#define OBJ_EVENT_PAL_TAG_RS_BRENDAN 0x1122
+#define OBJ_EVENT_PAL_TAG_RS_MAY 0x1123
+#define OBJ_EVENT_PAL_TAG_NONE 0x11FF
#include "data/object_events/object_event_graphics_info_pointers.h"
#include "data/field_effects/field_effect_object_template_pointers.h"
@@ -446,224 +447,224 @@ const u8 gInitialMovementTypeFacingDirections[] = {
#include "data/object_events/object_event_subsprites.h"
#include "data/object_events/object_event_graphics_info.h"
-const struct SpritePalette sObjectEventSpritePalettes[] = {
- {gObjectEventPalette0, OBJ_EVENT_PAL_TAG_0},
- {gObjectEventPalette1, OBJ_EVENT_PAL_TAG_1},
- {gObjectEventPalette2, OBJ_EVENT_PAL_TAG_2},
- {gObjectEventPalette3, OBJ_EVENT_PAL_TAG_3},
- {gObjectEventPalette4, OBJ_EVENT_PAL_TAG_4},
- {gObjectEventPalette5, OBJ_EVENT_PAL_TAG_5},
- {gObjectEventPalette6, OBJ_EVENT_PAL_TAG_6},
- {gObjectEventPalette7, OBJ_EVENT_PAL_TAG_7},
- {gObjectEventPalette8, OBJ_EVENT_PAL_TAG_8},
- {gObjectEventPalette9, OBJ_EVENT_PAL_TAG_9},
- {gObjectEventPalette10, OBJ_EVENT_PAL_TAG_10},
- {gObjectEventPalette11, OBJ_EVENT_PAL_TAG_11},
- {gObjectEventPalette12, OBJ_EVENT_PAL_TAG_12},
- {gObjectEventPalette13, OBJ_EVENT_PAL_TAG_13},
- {gObjectEventPalette14, OBJ_EVENT_PAL_TAG_14},
- {gObjectEventPalette15, OBJ_EVENT_PAL_TAG_15},
- {gObjectEventPalette16, OBJ_EVENT_PAL_TAG_16},
- {gObjectEventPalette17, OBJ_EVENT_PAL_TAG_17},
- {gObjectEventPalette18, OBJ_EVENT_PAL_TAG_18},
- {gObjectEventPalette19, OBJ_EVENT_PAL_TAG_19},
- {gObjectEventPalette20, OBJ_EVENT_PAL_TAG_20},
- {gObjectEventPalette21, OBJ_EVENT_PAL_TAG_21},
- {gObjectEventPalette22, OBJ_EVENT_PAL_TAG_22},
- {gObjectEventPalette23, OBJ_EVENT_PAL_TAG_23},
- {gObjectEventPalette24, OBJ_EVENT_PAL_TAG_24},
- {gObjectEventPalette25, OBJ_EVENT_PAL_TAG_25},
- {gObjectEventPalette26, OBJ_EVENT_PAL_TAG_26},
- {gObjectEventPalette27, OBJ_EVENT_PAL_TAG_27},
- {gObjectEventPalette28, OBJ_EVENT_PAL_TAG_28},
- {gObjectEventPalette29, OBJ_EVENT_PAL_TAG_29},
- {gObjectEventPalette30, OBJ_EVENT_PAL_TAG_30},
- {gObjectEventPalette31, OBJ_EVENT_PAL_TAG_31},
- {gObjectEventPalette32, OBJ_EVENT_PAL_TAG_32},
- {gObjectEventPalette33, OBJ_EVENT_PAL_TAG_33},
- {gObjectEventPalette34, OBJ_EVENT_PAL_TAG_34},
- {NULL, 0x0000},
+static const struct SpritePalette sObjectEventSpritePalettes[] = {
+ {gObjectEventPal_Npc1, OBJ_EVENT_PAL_TAG_NPC_1},
+ {gObjectEventPal_Npc2, OBJ_EVENT_PAL_TAG_NPC_2},
+ {gObjectEventPal_Npc3, OBJ_EVENT_PAL_TAG_NPC_3},
+ {gObjectEventPal_Npc4, OBJ_EVENT_PAL_TAG_NPC_4},
+ {gObjectEventPal_Npc1Reflection, OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION},
+ {gObjectEventPal_Npc2Reflection, OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION},
+ {gObjectEventPal_Npc3Reflection, OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION},
+ {gObjectEventPal_Npc4Reflection, OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION},
+ {gObjectEventPal_Brendan, OBJ_EVENT_PAL_TAG_BRENDAN},
+ {gObjectEventPal_BrendanReflection, OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION},
+ {gObjectEventPal_BridgeReflection, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION},
+ {gObjectEventPal_PlayerUnderwater, OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER},
+ {gObjectEventPal_QuintyPlump, OBJ_EVENT_PAL_TAG_QUINTY_PLUMP},
+ {gObjectEventPal_QuintyPlumpReflection, OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION},
+ {gObjectEventPal_Truck, OBJ_EVENT_PAL_TAG_TRUCK},
+ {gObjectEventPal_Vigoroth, OBJ_EVENT_PAL_TAG_VIGOROTH},
+ {gObjectEventPal_EnemyZigzagoon, OBJ_EVENT_PAL_TAG_ZIGZAGOON},
+ {gObjectEventPal_May, OBJ_EVENT_PAL_TAG_MAY},
+ {gObjectEventPal_MayReflection, OBJ_EVENT_PAL_TAG_MAY_REFLECTION},
+ {gObjectEventPal_MovingBox, OBJ_EVENT_PAL_TAG_MOVING_BOX},
+ {gObjectEventPal_CableCar, OBJ_EVENT_PAL_TAG_CABLE_CAR},
+ {gObjectEventPal_SSTidal, OBJ_EVENT_PAL_TAG_SSTIDAL},
+ {gObjectEventPal_Kyogre, OBJ_EVENT_PAL_TAG_KYOGRE},
+ {gObjectEventPal_KyogreReflection, OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION},
+ {gObjectEventPal_Groudon, OBJ_EVENT_PAL_TAG_GROUDON},
+ {gObjectEventPal_GroudonReflection, OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION},
+ {gObjectEventPal_SubmarineShadow, OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW},
+ {gObjectEventPal_Poochyena, OBJ_EVENT_PAL_TAG_POOCHYENA},
+ {gObjectEventPal_RedLeaf, OBJ_EVENT_PAL_TAG_RED_LEAF},
+ {gObjectEventPal_Deoxys, OBJ_EVENT_PAL_TAG_DEOXYS},
+ {gObjectEventPal_BirthIslandStone, OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE},
+ {gObjectEventPal_HoOh, OBJ_EVENT_PAL_TAG_HO_OH},
+ {gObjectEventPal_Lugia, OBJ_EVENT_PAL_TAG_LUGIA},
+ {gObjectEventPal_RubySapphireBrendan, OBJ_EVENT_PAL_TAG_RS_BRENDAN},
+ {gObjectEventPal_RubySapphireMay, OBJ_EVENT_PAL_TAG_RS_MAY},
+ {NULL, 0x0000},
};
-const u16 gPlayerReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_9,
- OBJ_EVENT_PAL_TAG_9,
- OBJ_EVENT_PAL_TAG_9,
- OBJ_EVENT_PAL_TAG_9,
+static const u16 sReflectionPaletteTags_Brendan[] = {
+ OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
+ OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
+ OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
+ OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
};
-const u16 Unknown_0850BCF0[] = {
- OBJ_EVENT_PAL_TAG_18,
- OBJ_EVENT_PAL_TAG_18,
- OBJ_EVENT_PAL_TAG_18,
- OBJ_EVENT_PAL_TAG_18,
+static const u16 sReflectionPaletteTags_May[] = {
+ OBJ_EVENT_PAL_TAG_MAY_REFLECTION,
+ OBJ_EVENT_PAL_TAG_MAY_REFLECTION,
+ OBJ_EVENT_PAL_TAG_MAY_REFLECTION,
+ OBJ_EVENT_PAL_TAG_MAY_REFLECTION,
};
-const u16 gPlayerUnderwaterReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_11,
- OBJ_EVENT_PAL_TAG_11,
- OBJ_EVENT_PAL_TAG_11,
- OBJ_EVENT_PAL_TAG_11,
+static const u16 sReflectionPaletteTags_PlayerUnderwater[] = {
+ OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER,
+ OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER,
+ OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER,
+ OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER,
};
-const struct PairedPalettes gPlayerReflectionPaletteSets[] = {
- {OBJ_EVENT_PAL_TAG_8, gPlayerReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_17, Unknown_0850BCF0},
- {OBJ_EVENT_PAL_TAG_11, gPlayerUnderwaterReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_NONE, NULL},
+static const struct PairedPalettes sPlayerReflectionPaletteSets[] = {
+ {OBJ_EVENT_PAL_TAG_BRENDAN, sReflectionPaletteTags_Brendan},
+ {OBJ_EVENT_PAL_TAG_MAY, sReflectionPaletteTags_May},
+ {OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, sReflectionPaletteTags_PlayerUnderwater},
+ {OBJ_EVENT_PAL_TAG_NONE, NULL},
};
-const u16 gQuintyPlumpReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_13,
- OBJ_EVENT_PAL_TAG_13,
- OBJ_EVENT_PAL_TAG_13,
- OBJ_EVENT_PAL_TAG_13,
+static const u16 sReflectionPaletteTags_QuintyPlump[] = {
+ OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION,
+ OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION,
+ OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION,
+ OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION,
};
-const u16 gTruckReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_14,
- OBJ_EVENT_PAL_TAG_14,
- OBJ_EVENT_PAL_TAG_14,
- OBJ_EVENT_PAL_TAG_14,
+static const u16 sReflectionPaletteTags_Truck[] = {
+ OBJ_EVENT_PAL_TAG_TRUCK,
+ OBJ_EVENT_PAL_TAG_TRUCK,
+ OBJ_EVENT_PAL_TAG_TRUCK,
+ OBJ_EVENT_PAL_TAG_TRUCK,
};
-const u16 gVigorothMoverReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_15,
- OBJ_EVENT_PAL_TAG_15,
- OBJ_EVENT_PAL_TAG_15,
- OBJ_EVENT_PAL_TAG_15,
+static const u16 sReflectionPaletteTags_VigorothMover[] = {
+ OBJ_EVENT_PAL_TAG_VIGOROTH,
+ OBJ_EVENT_PAL_TAG_VIGOROTH,
+ OBJ_EVENT_PAL_TAG_VIGOROTH,
+ OBJ_EVENT_PAL_TAG_VIGOROTH,
};
-const u16 gMovingBoxReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_19,
- OBJ_EVENT_PAL_TAG_19,
- OBJ_EVENT_PAL_TAG_19,
- OBJ_EVENT_PAL_TAG_19,
+static const u16 sReflectionPaletteTags_MovingBox[] = {
+ OBJ_EVENT_PAL_TAG_MOVING_BOX,
+ OBJ_EVENT_PAL_TAG_MOVING_BOX,
+ OBJ_EVENT_PAL_TAG_MOVING_BOX,
+ OBJ_EVENT_PAL_TAG_MOVING_BOX,
};
-const u16 gCableCarReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_20,
- OBJ_EVENT_PAL_TAG_20,
- OBJ_EVENT_PAL_TAG_20,
- OBJ_EVENT_PAL_TAG_20,
+static const u16 sReflectionPaletteTags_CableCar[] = {
+ OBJ_EVENT_PAL_TAG_CABLE_CAR,
+ OBJ_EVENT_PAL_TAG_CABLE_CAR,
+ OBJ_EVENT_PAL_TAG_CABLE_CAR,
+ OBJ_EVENT_PAL_TAG_CABLE_CAR,
};
-const u16 gSSTidalReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_21,
- OBJ_EVENT_PAL_TAG_21,
- OBJ_EVENT_PAL_TAG_21,
- OBJ_EVENT_PAL_TAG_21,
+static const u16 sReflectionPaletteTags_SSTidal[] = {
+ OBJ_EVENT_PAL_TAG_SSTIDAL,
+ OBJ_EVENT_PAL_TAG_SSTIDAL,
+ OBJ_EVENT_PAL_TAG_SSTIDAL,
+ OBJ_EVENT_PAL_TAG_SSTIDAL,
};
-const u16 gSubmarineShadowReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_26,
- OBJ_EVENT_PAL_TAG_26,
- OBJ_EVENT_PAL_TAG_26,
- OBJ_EVENT_PAL_TAG_26,
+static const u16 sReflectionPaletteTags_SubmarineShadow[] = {
+ OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW,
+ OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW,
+ OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW,
+ OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW,
};
-const u16 Unknown_0850BD58[] = { // Kyogre2?
- OBJ_EVENT_PAL_TAG_23,
- OBJ_EVENT_PAL_TAG_23,
- OBJ_EVENT_PAL_TAG_23,
- OBJ_EVENT_PAL_TAG_23,
+static const u16 sReflectionPaletteTags_Kyogre[] = {
+ OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION,
+ OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION,
+ OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION,
+ OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION,
};
-const u16 Unknown_0850BD60[] = { // Groudon2?
- OBJ_EVENT_PAL_TAG_25,
- OBJ_EVENT_PAL_TAG_25,
- OBJ_EVENT_PAL_TAG_25,
- OBJ_EVENT_PAL_TAG_25,
+static const u16 sReflectionPaletteTags_Groudon[] = {
+ OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION,
+ OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION,
+ OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION,
+ OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION,
};
-const u16 Unknown_0850BD68[] = { // Invisible Keckleon?
- OBJ_EVENT_PAL_TAG_6,
- OBJ_EVENT_PAL_TAG_6,
- OBJ_EVENT_PAL_TAG_6,
- OBJ_EVENT_PAL_TAG_6,
+static const u16 sReflectionPaletteTags_Npc3[] = { // Only used by the Route 120 bridge Kecleon
+ OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
};
-const u16 gRedLeafReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_28,
- OBJ_EVENT_PAL_TAG_28,
- OBJ_EVENT_PAL_TAG_28,
- OBJ_EVENT_PAL_TAG_28,
+static const u16 sReflectionPaletteTags_RedLeaf[] = {
+ OBJ_EVENT_PAL_TAG_RED_LEAF,
+ OBJ_EVENT_PAL_TAG_RED_LEAF,
+ OBJ_EVENT_PAL_TAG_RED_LEAF,
+ OBJ_EVENT_PAL_TAG_RED_LEAF,
};
-const struct PairedPalettes gSpecialObjectReflectionPaletteSets[] = {
- {OBJ_EVENT_PAL_TAG_8, gPlayerReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_17, Unknown_0850BCF0},
- {OBJ_EVENT_PAL_TAG_12, gQuintyPlumpReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_14, gTruckReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_15, gVigorothMoverReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_19, gMovingBoxReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_20, gCableCarReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_21, gSSTidalReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_22, Unknown_0850BD58},
- {OBJ_EVENT_PAL_TAG_24, Unknown_0850BD60},
- {OBJ_EVENT_PAL_TAG_2, Unknown_0850BD68},
- {OBJ_EVENT_PAL_TAG_26, gSubmarineShadowReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_28, gRedLeafReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_NONE, NULL},
+static const struct PairedPalettes sSpecialObjectReflectionPaletteSets[] = {
+ {OBJ_EVENT_PAL_TAG_BRENDAN, sReflectionPaletteTags_Brendan},
+ {OBJ_EVENT_PAL_TAG_MAY, sReflectionPaletteTags_May},
+ {OBJ_EVENT_PAL_TAG_QUINTY_PLUMP, sReflectionPaletteTags_QuintyPlump},
+ {OBJ_EVENT_PAL_TAG_TRUCK, sReflectionPaletteTags_Truck},
+ {OBJ_EVENT_PAL_TAG_VIGOROTH, sReflectionPaletteTags_VigorothMover},
+ {OBJ_EVENT_PAL_TAG_MOVING_BOX, sReflectionPaletteTags_MovingBox},
+ {OBJ_EVENT_PAL_TAG_CABLE_CAR, sReflectionPaletteTags_CableCar},
+ {OBJ_EVENT_PAL_TAG_SSTIDAL, sReflectionPaletteTags_SSTidal},
+ {OBJ_EVENT_PAL_TAG_KYOGRE, sReflectionPaletteTags_Kyogre},
+ {OBJ_EVENT_PAL_TAG_GROUDON, sReflectionPaletteTags_Groudon},
+ {OBJ_EVENT_PAL_TAG_NPC_3, sReflectionPaletteTags_Npc3},
+ {OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, sReflectionPaletteTags_SubmarineShadow},
+ {OBJ_EVENT_PAL_TAG_RED_LEAF, sReflectionPaletteTags_RedLeaf},
+ {OBJ_EVENT_PAL_TAG_NONE, NULL},
};
-const u16 gObjectPaletteTags0[] = {
- OBJ_EVENT_PAL_TAG_8,
- OBJ_EVENT_PAL_TAG_9,
- OBJ_EVENT_PAL_TAG_0,
- OBJ_EVENT_PAL_TAG_1,
- OBJ_EVENT_PAL_TAG_2,
- OBJ_EVENT_PAL_TAG_3,
- OBJ_EVENT_PAL_TAG_4,
- OBJ_EVENT_PAL_TAG_5,
- OBJ_EVENT_PAL_TAG_6,
- OBJ_EVENT_PAL_TAG_7,
+static const u16 sObjectPaletteTags0[] = {
+ OBJ_EVENT_PAL_TAG_BRENDAN,
+ OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_1,
+ OBJ_EVENT_PAL_TAG_NPC_2,
+ OBJ_EVENT_PAL_TAG_NPC_3,
+ OBJ_EVENT_PAL_TAG_NPC_4,
+ OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION,
};
-const u16 gObjectPaletteTags1[] = {
- OBJ_EVENT_PAL_TAG_8,
- OBJ_EVENT_PAL_TAG_9,
- OBJ_EVENT_PAL_TAG_0,
- OBJ_EVENT_PAL_TAG_1,
- OBJ_EVENT_PAL_TAG_2,
- OBJ_EVENT_PAL_TAG_3,
- OBJ_EVENT_PAL_TAG_4,
- OBJ_EVENT_PAL_TAG_5,
- OBJ_EVENT_PAL_TAG_6,
- OBJ_EVENT_PAL_TAG_7,
+static const u16 sObjectPaletteTags1[] = {
+ OBJ_EVENT_PAL_TAG_BRENDAN,
+ OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_1,
+ OBJ_EVENT_PAL_TAG_NPC_2,
+ OBJ_EVENT_PAL_TAG_NPC_3,
+ OBJ_EVENT_PAL_TAG_NPC_4,
+ OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION,
};
-const u16 gObjectPaletteTags2[] = {
- OBJ_EVENT_PAL_TAG_8,
- OBJ_EVENT_PAL_TAG_9,
- OBJ_EVENT_PAL_TAG_0,
- OBJ_EVENT_PAL_TAG_1,
- OBJ_EVENT_PAL_TAG_2,
- OBJ_EVENT_PAL_TAG_3,
- OBJ_EVENT_PAL_TAG_4,
- OBJ_EVENT_PAL_TAG_5,
- OBJ_EVENT_PAL_TAG_6,
- OBJ_EVENT_PAL_TAG_7,
+static const u16 sObjectPaletteTags2[] = {
+ OBJ_EVENT_PAL_TAG_BRENDAN,
+ OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_1,
+ OBJ_EVENT_PAL_TAG_NPC_2,
+ OBJ_EVENT_PAL_TAG_NPC_3,
+ OBJ_EVENT_PAL_TAG_NPC_4,
+ OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION,
};
-const u16 gObjectPaletteTags3[] = {
- OBJ_EVENT_PAL_TAG_8,
- OBJ_EVENT_PAL_TAG_9,
- OBJ_EVENT_PAL_TAG_0,
- OBJ_EVENT_PAL_TAG_1,
- OBJ_EVENT_PAL_TAG_2,
- OBJ_EVENT_PAL_TAG_3,
- OBJ_EVENT_PAL_TAG_4,
- OBJ_EVENT_PAL_TAG_5,
- OBJ_EVENT_PAL_TAG_6,
- OBJ_EVENT_PAL_TAG_7,
+static const u16 sObjectPaletteTags3[] = {
+ OBJ_EVENT_PAL_TAG_BRENDAN,
+ OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_1,
+ OBJ_EVENT_PAL_TAG_NPC_2,
+ OBJ_EVENT_PAL_TAG_NPC_3,
+ OBJ_EVENT_PAL_TAG_NPC_4,
+ OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION,
};
-const u16 *const gObjectPaletteTagSets[] = {
- gObjectPaletteTags0,
- gObjectPaletteTags1,
- gObjectPaletteTags2,
- gObjectPaletteTags3,
+static const u16 *const sObjectPaletteTagSets[] = {
+ sObjectPaletteTags0,
+ sObjectPaletteTags1,
+ sObjectPaletteTags2,
+ sObjectPaletteTags3,
};
#include "data/object_events/berry_tree_graphics_tables.h"
@@ -1232,23 +1233,23 @@ static u8 InitObjectEventStateFromTemplate(struct ObjectEventTemplate *template,
objectEvent->previousCoords.y = y;
objectEvent->currentElevation = template->elevation;
objectEvent->previousElevation = template->elevation;
- objectEvent->range.as_nybbles.x = template->movementRangeX;
- objectEvent->range.as_nybbles.y = template->movementRangeY;
+ objectEvent->rangeX = template->movementRangeX;
+ objectEvent->rangeY = template->movementRangeY;
objectEvent->trainerType = template->trainerType;
- objectEvent->mapNum = mapNum; //redundant, but needed to match
+ objectEvent->mapNum = mapNum;
objectEvent->trainerRange_berryTreeId = template->trainerRange_berryTreeId;
objectEvent->previousMovementDirection = gInitialMovementTypeFacingDirections[template->movementType];
SetObjectEventDirection(objectEvent, objectEvent->previousMovementDirection);
SetObjectEventDynamicGraphicsId(objectEvent);
if (gRangedMovementTypes[objectEvent->movementType])
{
- if (objectEvent->range.as_nybbles.x == 0)
+ if (objectEvent->rangeX == 0)
{
- objectEvent->range.as_nybbles.x++;
+ objectEvent->rangeX++;
}
- if (objectEvent->range.as_nybbles.y == 0)
+ if (objectEvent->rangeY == 0)
{
- objectEvent->range.as_nybbles.y++;
+ objectEvent->rangeY++;
}
}
return objectEventId;
@@ -1295,22 +1296,19 @@ static bool8 GetAvailableObjectEventId(u16 localId, u8 mapNum, u8 mapGroup, u8 *
{
u8 i = 0;
- for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
+ for (i = 0; i < OBJECT_EVENTS_COUNT && gObjectEvents[i].active; i++)
{
- if (!gObjectEvents[i].active)
- break;
if (gObjectEvents[i].localId == localId && gObjectEvents[i].mapNum == mapNum && gObjectEvents[i].mapGroup == mapGroup)
return TRUE;
}
if (i >= OBJECT_EVENTS_COUNT)
return TRUE;
*objectEventId = i;
- do
+ for (; i < OBJECT_EVENTS_COUNT; i++)
{
if (gObjectEvents[i].active && gObjectEvents[i].localId == localId && gObjectEvents[i].mapNum == mapNum && gObjectEvents[i].mapGroup == mapGroup)
return TRUE;
- i++;
- } while (i < OBJECT_EVENTS_COUNT);
+ }
return FALSE;
}
@@ -1367,16 +1365,16 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl
paletteSlot = graphicsInfo->paletteSlot;
if (paletteSlot == 0)
{
- LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag1, 0);
+ LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, 0);
}
else if (paletteSlot == 10)
{
- LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, 10);
+ LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, 10);
}
else if (paletteSlot >= 16)
{
paletteSlot -= 16;
- sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot);
+ sub_808EAB0(graphicsInfo->paletteTag, paletteSlot);
}
if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE)
@@ -1479,7 +1477,7 @@ static void MakeObjectTemplateFromObjectEventGraphicsInfo(u16 graphicsId, void (
const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(graphicsId);
spriteTemplate->tileTag = graphicsInfo->tileTag;
- spriteTemplate->paletteTag = graphicsInfo->paletteTag1;
+ spriteTemplate->paletteTag = graphicsInfo->paletteTag;
spriteTemplate->oam = graphicsInfo->oam;
spriteTemplate->anims = graphicsInfo->anims;
spriteTemplate->images = graphicsInfo->images;
@@ -1556,11 +1554,11 @@ u8 CreateObjectSprite(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
sprite->data[1] = z;
if (graphicsInfo->paletteSlot == 10)
{
- LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
+ LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot);
}
else if (graphicsInfo->paletteSlot >= 16)
{
- sub_808EAB0(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot | 0xf0);
+ sub_808EAB0(graphicsInfo->paletteTag, graphicsInfo->paletteSlot | 0xf0);
}
if (subspriteTables != NULL)
{
@@ -1696,16 +1694,16 @@ static void sub_808E1B8(u8 objectEventId, s16 x, s16 y)
paletteSlot = graphicsInfo->paletteSlot;
if (paletteSlot == 0)
{
- LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
+ LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot);
}
else if (paletteSlot == 10)
{
- LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
+ LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot);
}
else if (paletteSlot >= 16)
{
paletteSlot -= 16;
- sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot);
+ sub_808EAB0(graphicsInfo->paletteTag, paletteSlot);
}
*(u16 *)&spriteTemplate.paletteTag = 0xFFFF;
spriteId = CreateSprite(&spriteTemplate, 0, 0, 0);
@@ -1772,16 +1770,16 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId)
paletteSlot = graphicsInfo->paletteSlot;
if (paletteSlot == 0)
{
- PatchObjectPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
+ PatchObjectPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot);
}
else if (paletteSlot == 10)
{
- LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
+ LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot);
}
else if (paletteSlot >= 16)
{
paletteSlot -= 16;
- sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot);
+ sub_808EAB0(graphicsInfo->paletteTag, paletteSlot);
}
sprite->oam.shape = graphicsInfo->oam->shape;
sprite->oam.size = graphicsInfo->oam->size;
@@ -2033,11 +2031,11 @@ void LoadPlayerObjectReflectionPalette(u16 tag, u8 slot)
u8 i;
PatchObjectPalette(tag, slot);
- for (i = 0; gPlayerReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++)
+ for (i = 0; sPlayerReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++)
{
- if (gPlayerReflectionPaletteSets[i].tag == tag)
+ if (sPlayerReflectionPaletteSets[i].tag == tag)
{
- PatchObjectPalette(gPlayerReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]);
+ PatchObjectPalette(sPlayerReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]);
return;
}
}
@@ -2049,11 +2047,11 @@ void LoadSpecialObjectReflectionPalette(u16 tag, u8 slot)
sCurrentSpecialObjectPaletteTag = tag;
PatchObjectPalette(tag, slot);
- for (i = 0; gSpecialObjectReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++)
+ for (i = 0; sSpecialObjectReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++)
{
- if (gSpecialObjectReflectionPaletteSets[i].tag == tag)
+ if (sSpecialObjectReflectionPaletteSets[i].tag == tag)
{
- PatchObjectPalette(gSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]);
+ PatchObjectPalette(sSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]);
return;
}
}
@@ -2277,7 +2275,18 @@ u8 CameraObjectGetFollowedObjectId(void)
void CameraObjectReset2(void)
{
+ // UB: Possible null dereference
+#ifdef UBFIX
+ struct Sprite *cameraObject;
+
+ cameraObject = FindCameraObject();
+ if (cameraObject != NULL)
+ {
+ cameraObject->data[1] = 2;
+ }
+#else
FindCameraObject()->data[1] = 2;
+#endif // UBFIX
}
u8 CopySprite(struct Sprite *sprite, s16 x, s16 y, u8 subpriority)
@@ -2504,12 +2513,12 @@ void InitObjectEventPalettes(u8 palSlot)
sCurrentReflectionType = palSlot;
if (palSlot == 1)
{
- PatchObjectPaletteRange(gObjectPaletteTagSets[sCurrentReflectionType], 0, 6);
+ PatchObjectPaletteRange(sObjectPaletteTagSets[sCurrentReflectionType], 0, 6);
gReservedSpritePaletteCount = 8;
}
else
{
- PatchObjectPaletteRange(gObjectPaletteTagSets[sCurrentReflectionType], 0, 10);
+ PatchObjectPaletteRange(sObjectPaletteTagSets[sCurrentReflectionType], 0, 10);
}
}
@@ -2519,13 +2528,13 @@ u16 GetObjectPaletteTag(u8 palSlot)
if (palSlot < 10)
{
- return gObjectPaletteTagSets[sCurrentReflectionType][palSlot];
+ return sObjectPaletteTagSets[sCurrentReflectionType][palSlot];
}
- for (i = 0; gSpecialObjectReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++)
+ for (i = 0; sSpecialObjectReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++)
{
- if (gSpecialObjectReflectionPaletteSets[i].tag == sCurrentSpecialObjectPaletteTag)
+ if (sSpecialObjectReflectionPaletteSets[i].tag == sCurrentSpecialObjectPaletteTag)
{
- return gSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType];
+ return sSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType];
}
}
return OBJ_EVENT_PAL_TAG_NONE;
@@ -4758,19 +4767,19 @@ static bool8 IsCoordOutsideObjectEventMovementRange(struct ObjectEvent *objectEv
s16 top;
s16 bottom;
- if (objectEvent->range.as_nybbles.x != 0)
+ if (objectEvent->rangeX != 0)
{
- left = objectEvent->initialCoords.x - objectEvent->range.as_nybbles.x;
- right = objectEvent->initialCoords.x + objectEvent->range.as_nybbles.x;
+ left = objectEvent->initialCoords.x - objectEvent->rangeX;
+ right = objectEvent->initialCoords.x + objectEvent->rangeX;
if (left > x || right < x)
{
return TRUE;
}
}
- if (objectEvent->range.as_nybbles.y != 0)
+ if (objectEvent->rangeY != 0)
{
- top = objectEvent->initialCoords.y - objectEvent->range.as_nybbles.y;
- bottom = objectEvent->initialCoords.y + objectEvent->range.as_nybbles.y;
+ top = objectEvent->initialCoords.y - objectEvent->rangeY;
+ bottom = objectEvent->initialCoords.y + objectEvent->rangeY;
if (top > y || bottom < y)
{
return TRUE;
@@ -8216,13 +8225,15 @@ bool8 FreezeObjectEvent(struct ObjectEvent *objectEvent)
{
return TRUE;
}
-
- objectEvent->frozen = 1;
- objectEvent->spriteAnimPausedBackup = gSprites[objectEvent->spriteId].animPaused;
- objectEvent->spriteAffineAnimPausedBackup = gSprites[objectEvent->spriteId].affineAnimPaused;
- gSprites[objectEvent->spriteId].animPaused = 1;
- gSprites[objectEvent->spriteId].affineAnimPaused = 1;
- return FALSE;
+ else
+ {
+ objectEvent->frozen = 1;
+ objectEvent->spriteAnimPausedBackup = gSprites[objectEvent->spriteId].animPaused;
+ objectEvent->spriteAffineAnimPausedBackup = gSprites[objectEvent->spriteId].affineAnimPaused;
+ gSprites[objectEvent->spriteId].animPaused = 1;
+ gSprites[objectEvent->spriteId].affineAnimPaused = 1;
+ return FALSE;
+ }
}
void FreezeObjectEvents(void)
@@ -8395,8 +8406,8 @@ bool8 sub_80976EC(struct Sprite *sprite)
if (sprite->data[5] > 15)
return TRUE;
-
- return FALSE;
+ else
+ return FALSE;
}
static const s8 sFigure8XOffsets[FIGURE_8_LENGTH] = {
@@ -8476,15 +8487,15 @@ static bool8 AnimateSpriteInFigure8(struct Sprite *sprite)
return finished;
}
-static const s8 gUnknown_0850E802[16] = {
+static const s8 gUnknown_0850E802[] = {
-4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0
};
-static const s8 gUnknown_0850E812[16] = {
+static const s8 gUnknown_0850E812[] = {
0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0
};
-static const s8 gUnknown_0850E822[16] = {
+static const s8 gUnknown_0850E822[] = {
-2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0
};
@@ -8564,9 +8575,12 @@ static void SetMovementDelay(struct Sprite *sprite, s16 timer)
static bool8 WaitForMovementDelay(struct Sprite *sprite)
{
- if (--sprite->data[3] == 0)
+ sprite->data[3]--;
+
+ if (sprite->data[3] == 0)
return TRUE;
- return FALSE;
+ else
+ return FALSE;
}
void SetAndStartSpriteAnim(struct Sprite *sprite, u8 animNum, u8 animCmdIndex)
@@ -8580,7 +8594,8 @@ bool8 SpriteAnimEnded(struct Sprite *sprite)
{
if (sprite->animEnded)
return TRUE;
- return FALSE;
+ else
+ return FALSE;
}
void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible)
@@ -8759,14 +8774,14 @@ static void UpdateObjectEventSpritePosition(struct Sprite *sprite)
{
switch(sprite->tAnimNum)
{
- case 0:
- break;
case UNION_ROOM_SPAWN_IN:
MoveUnionRoomObjectDown(sprite);
break;
case UNION_ROOM_SPAWN_OUT:
MoveUnionRoomObjectUp(sprite);
break;
+ case 0:
+ break;
default:
sprite->tAnimNum = 0;
break;
@@ -8835,19 +8850,18 @@ u8 (*const gMovementActionFuncs_FlyDown[])(struct ObjectEvent *, struct Sprite *
u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- u32 one;
bool32 ableToStore = FALSE;
if (gLockedAnimObjectEvents == NULL)
{
gLockedAnimObjectEvents = AllocZeroed(sizeof(struct LockedAnimObjectEvents));
gLockedAnimObjectEvents->objectEventIds[0] = objectEvent->localId;
- // needed to match
- gLockedAnimObjectEvents->count = (one = 1);
- ableToStore = one;
+ gLockedAnimObjectEvents->count = 1;
+ ableToStore = TRUE;
}
else
{
- u8 i, firstFreeSlot;
+ u8 i;
+ u8 firstFreeSlot;
bool32 found;
for (firstFreeSlot = 16, found = FALSE, i = 0; i < 16; i++)
{
@@ -8925,7 +8939,7 @@ void CreateLevitateMovementTask(struct ObjectEvent *objectEvent)
u8 taskId = CreateTask(ApplyLevitateMovement, 0xFF);
struct Task *task = &gTasks[taskId];
- StoreWordInTwoHalfwords((u16 *)&task->data[0], (u32)objectEvent);
+ StoreWordInTwoHalfwords(&task->data[0], (u32)objectEvent);
objectEvent->warpArrowSpriteId = taskId;
task->data[3] = 0xFFFF;
}
@@ -8936,7 +8950,7 @@ static void ApplyLevitateMovement(u8 taskId)
struct Sprite *sprite;
struct Task *task = &gTasks[taskId];
- LoadWordFromTwoHalfwords((u16 *)&task->data[0], (u32 *)&objectEvent); // load the map object pointer.
+ LoadWordFromTwoHalfwords(&task->data[0], (u32 *)&objectEvent); // load the map object pointer.
sprite = &gSprites[objectEvent->spriteId];
if(!(task->data[2] & 0x3))
@@ -8953,7 +8967,7 @@ void DestroyExtraMovementTask(u8 taskId)
struct ObjectEvent *objectEvent;
struct Task *task = &gTasks[taskId];
- LoadWordFromTwoHalfwords((u16 *)&task->data[0], (u32 *)&objectEvent); // unused objectEvent
+ LoadWordFromTwoHalfwords(&task->data[0], (u32 *)&objectEvent); // unused objectEvent
DestroyTask(taskId);
}
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 41d4900f7..d41bc5970 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -30,7 +30,6 @@
#include "trade.h"
#include "util.h"
#include "constants/battle_string_ids.h"
-#include "constants/species.h"
#include "constants/songs.h"
#include "constants/rgb.h"
@@ -256,7 +255,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
trainerId = GetMonData(mon, MON_DATA_OT_ID);
personality = GetMonData(mon, MON_DATA_PERSONALITY);
DecompressPicFromTable_2(&gMonFrontPicTable[currSpecies],
- gMonSpritesGfxPtr->sprites[1],
+ gMonSpritesGfxPtr->sprites.ptr[1],
currSpecies);
pokePal = GetMonSpritePalStructFromOtIdPersonality(currSpecies, trainerId, personality);
LoadCompressedPalette(pokePal->data, 0x110, 0x20);
@@ -271,7 +270,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
// postEvo sprite
DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve],
- gMonSpritesGfxPtr->sprites[3],
+ gMonSpritesGfxPtr->sprites.ptr[3],
speciesToEvolve);
pokePal = GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, trainerId, personality);
LoadCompressedPalette(pokePal->data, 0x120, 0x20);
@@ -348,7 +347,7 @@ static void CB2_EvolutionSceneLoadGraphics(void)
gReservedSpritePaletteCount = 4;
DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies],
- gMonSpritesGfxPtr->sprites[3],
+ gMonSpritesGfxPtr->sprites.ptr[3],
postEvoSpecies);
pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality);
@@ -420,7 +419,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
u32 trainerId = GetMonData(Mon, MON_DATA_OT_ID);
u32 personality = GetMonData(Mon, MON_DATA_PERSONALITY);
DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies],
- gMonSpritesGfxPtr->sprites[3],
+ gMonSpritesGfxPtr->sprites.ptr[3],
postEvoSpecies);
pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality);
LoadCompressedPalette(pokePal->data, 0x120, 0x20);
@@ -484,7 +483,7 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpri
sEvoStructPtr->preEvoSpriteID = preEvoSpriteID;
DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve],
- gMonSpritesGfxPtr->sprites[1],
+ gMonSpritesGfxPtr->sprites.ptr[1],
speciesToEvolve);
pokePal = GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, trainerId, personality);
@@ -859,21 +858,21 @@ static void Task_EvolutionScene(u8 taskID)
}
break;
case 4:
- if (gMain.newKeys & DPAD_UP && sEvoCursorPos != 0)
+ if (JOY_NEW(DPAD_UP) && sEvoCursorPos != 0)
{
PlaySE(SE_SELECT);
BattleDestroyYesNoCursorAt(sEvoCursorPos);
sEvoCursorPos = 0;
BattleCreateYesNoCursorAt(0);
}
- if (gMain.newKeys & DPAD_DOWN && sEvoCursorPos == 0)
+ if (JOY_NEW(DPAD_DOWN) && sEvoCursorPos == 0)
{
PlaySE(SE_SELECT);
BattleDestroyYesNoCursorAt(sEvoCursorPos);
sEvoCursorPos = 1;
BattleCreateYesNoCursorAt(1);
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
HandleBattleWindow(0x18, 8, 0x1D, 0xD, WINDOW_CLEAR);
PlaySE(SE_SELECT);
@@ -889,7 +888,7 @@ static void Task_EvolutionScene(u8 taskID)
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
}
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
HandleBattleWindow(0x18, 8, 0x1D, 0xD, WINDOW_CLEAR);
PlaySE(SE_SELECT);
diff --git a/src/field_effect.c b/src/field_effect.c
index b64902c0e..5a18557eb 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -2597,7 +2597,7 @@ static void FieldMoveShowMonOutdoorsEffect_Init(struct Task *task)
{
task->data[11] = REG_WININ;
task->data[12] = REG_WINOUT;
- StoreWordInTwoHalfwords((u16 *)&task->data[13], (u32)gMain.vblankCallback);
+ StoreWordInTwoHalfwords(&task->data[13], (u32)gMain.vblankCallback);
task->tWinHoriz = WIN_RANGE(DISPLAY_WIDTH, DISPLAY_WIDTH + 1);
task->tWinVert = WIN_RANGE(DISPLAY_HEIGHT / 2, DISPLAY_HEIGHT / 2 + 1);
task->tWinIn = WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR;
@@ -3846,7 +3846,6 @@ bool8 FldEff_MoveDeoxysRock(struct Sprite* sprite)
static void Task_MoveDeoxysRock(u8 taskId)
{
- // BUG: Possible divide by zero
s16 *data = gTasks[taskId].data;
struct Sprite *sprite = &gSprites[data[1]];
switch (data[0])
@@ -3854,8 +3853,16 @@ static void Task_MoveDeoxysRock(u8 taskId)
case 0:
data[4] = sprite->pos1.x << 4;
data[5] = sprite->pos1.y << 4;
- data[6] = (data[2] * 16 - data[4]) / data[8];
- data[7] = (data[3] * 16 - data[5]) / data[8];
+
+ // UB: Possible divide by zero
+ #ifdef UBFIX
+ #define DIVISOR (data[8] ? data[8] : 1);
+ #else
+ #define DIVISOR (data[8])
+ #endif
+
+ data[6] = (data[2] * 16 - data[4]) / DIVISOR;
+ data[7] = (data[3] * 16 - data[5]) / DIVISOR;
data[0]++;
case 1:
if (data[8] != 0)
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index 886e023d1..2322232b8 100755
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -81,15 +81,15 @@ static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent,
const struct ObjectEventGraphicsInfo *graphicsInfo;
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
- if (graphicsInfo->paletteTag2 != OBJ_EVENT_PAL_TAG_NONE)
+ if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE)
{
if (graphicsInfo->paletteSlot == 0)
{
- LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag1, paletteIndex);
+ LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, paletteIndex);
}
else if (graphicsInfo->paletteSlot == 10)
{
- LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, paletteIndex);
+ LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, paletteIndex);
}
else
{
@@ -106,9 +106,9 @@ static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *objectEven
const struct ObjectEventGraphicsInfo *graphicsInfo;
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
- if (graphicsInfo->paletteTag2 != OBJ_EVENT_PAL_TAG_NONE)
+ if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE)
{
- PatchObjectPalette(graphicsInfo->paletteTag2, paletteNum);
+ PatchObjectPalette(graphicsInfo->reflectionPaletteTag, paletteNum);
UpdateSpritePaletteWithWeather(paletteNum);
}
}
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index 5fab2489b..f57cc9979 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -29,7 +29,6 @@
#include "constants/maps.h"
#include "constants/moves.h"
#include "constants/songs.h"
-#include "constants/species.h"
#include "constants/trainer_types.h"
static EWRAM_DATA u8 gUnknown_0203734C = 0;
@@ -343,10 +342,6 @@ void PlayerStep(u8 direction, u16 newKeys, u16 heldKeys)
static bool8 TryInterruptObjectEventSpecialAnim(struct ObjectEvent *playerObjEvent, u8 direction)
{
- u8 r5 = direction;
- u8 r6 = direction;
- r6++; r6--;
-
if (ObjectEventIsMovementOverridden(playerObjEvent)
&& !ObjectEventClearHeldMovementIfFinished(playerObjEvent))
{
@@ -358,13 +353,13 @@ static bool8 TryInterruptObjectEventSpecialAnim(struct ObjectEvent *playerObjEve
return TRUE;
}
- if (playerObjEvent->movementDirection != r5)
+ if (playerObjEvent->movementDirection != direction)
{
ObjectEventClearHeldMovement(playerObjEvent);
return FALSE;
}
- if (!sub_808B028(r6))
+ if (!sub_808B028(direction))
{
ObjectEventClearHeldMovement(playerObjEvent);
return FALSE;
@@ -1789,7 +1784,7 @@ static bool8 Fishing_ShowDots(struct Task *task)
AlignFishingAnimationFrames();
task->tFrameCounter++;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
task->tStep = FISHING_NO_BITE;
if (task->tRoundsPlayed != 0)
@@ -1878,7 +1873,7 @@ static bool8 Fishing_WaitForA(struct Task *task)
task->tFrameCounter++;
if (task->tFrameCounter >= reelTimeouts[task->tFishingRod])
task->tStep = FISHING_GOT_AWAY;
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
task->tStep++;
return FALSE;
}
@@ -2086,7 +2081,7 @@ static void sub_808D094(u8 taskId)
sub_808D074(object->facingDirection);
data[1] = 0;
data[2] = 1;
- data[3] = (u16)(sprite->pos1.y + sprite->pos2.y) * 16;
+ data[3] = (u16)(sprite->pos1.y + sprite->pos2.y) << 4;
sprite->pos2.y = 0;
CameraObjectReset2();
object->fixedPriority = TRUE;
diff --git a/src/field_poison.c b/src/field_poison.c
index 9d3ca047c..132ce571e 100644
--- a/src/field_poison.c
+++ b/src/field_poison.c
@@ -16,7 +16,6 @@
#include "trainer_hill.h"
#include "constants/field_poison.h"
#include "constants/party_menu.h"
-#include "constants/species.h"
static bool32 IsMonValidSpecies(struct Pokemon *pokemon)
{
diff --git a/src/field_special_scene.c b/src/field_special_scene.c
index bd6c833af..6b41c5423 100644
--- a/src/field_special_scene.c
+++ b/src/field_special_scene.c
@@ -280,7 +280,7 @@ void Task_HandlePorthole(u8 taskId)
}
break;
case IDLE_CHECK:
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
data[1] = 1;
if (!ScriptMovement_IsObjectMovementFinished(OBJ_EVENT_ID_PLAYER, location->mapNum, location->mapGroup))
return;
diff --git a/src/field_specials.c b/src/field_specials.c
index c1fc92dbe..51030a387 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -16,6 +16,7 @@
#include "field_screen_effect.h"
#include "field_specials.h"
#include "field_weather.h"
+#include "graphics.h"
#include "international_string_util.h"
#include "item_icon.h"
#include "link.h"
@@ -60,7 +61,6 @@
#include "constants/script_menu.h"
#include "constants/slot_machine.h"
#include "constants/songs.h"
-#include "constants/species.h"
#include "constants/moves.h"
#include "constants/party_menu.h"
#include "constants/battle_frontier.h"
@@ -87,11 +87,6 @@ static EWRAM_DATA u32 sBattleTowerMultiBattleTypeFlags = 0;
struct ListMenuTemplate gScrollableMultichoice_ListMenuTemplate;
-extern const u16 gObjectEventPalette8[];
-extern const u16 gObjectEventPalette17[];
-extern const u16 gObjectEventPalette33[];
-extern const u16 gObjectEventPalette34[];
-
void TryLoseFansFromPlayTime(void);
void SetPlayerGotFirstFans(void);
u16 GetNumFansOfPlayerInTrainerFanClub(void);
@@ -622,18 +617,18 @@ static void LoadLinkPartnerObjectEventSpritePalette(u8 graphicsId, u8 localEvent
switch (graphicsId)
{
- case OBJ_EVENT_GFX_LINK_RS_BRENDAN:
- LoadPalette(gObjectEventPalette33, 0x100 + (adjustedPaletteNum << 4), 0x20);
- break;
- case OBJ_EVENT_GFX_LINK_RS_MAY:
- LoadPalette(gObjectEventPalette34, 0x100 + (adjustedPaletteNum << 4), 0x20);
- break;
- case OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL:
- LoadPalette(gObjectEventPalette8, 0x100 + (adjustedPaletteNum << 4), 0x20);
- break;
- case OBJ_EVENT_GFX_RIVAL_MAY_NORMAL:
- LoadPalette(gObjectEventPalette17, 0x100 + (adjustedPaletteNum << 4), 0x20);
- break;
+ case OBJ_EVENT_GFX_LINK_RS_BRENDAN:
+ LoadPalette(gObjectEventPal_RubySapphireBrendan, 0x100 + (adjustedPaletteNum << 4), 0x20);
+ break;
+ case OBJ_EVENT_GFX_LINK_RS_MAY:
+ LoadPalette(gObjectEventPal_RubySapphireMay, 0x100 + (adjustedPaletteNum << 4), 0x20);
+ break;
+ case OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL:
+ LoadPalette(gObjectEventPal_Brendan, 0x100 + (adjustedPaletteNum << 4), 0x20);
+ break;
+ case OBJ_EVENT_GFX_RIVAL_MAY_NORMAL:
+ LoadPalette(gObjectEventPal_May, 0x100 + (adjustedPaletteNum << 4), 0x20);
+ break;
}
}
}
@@ -3649,14 +3644,14 @@ bool8 AbnormalWeatherHasExpired(void)
}
}
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(UNDERWATER3))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(UNDERWATER_ROUTE127))
{
switch (gSaveBlock1Ptr->location.mapNum)
{
- case MAP_NUM(UNDERWATER3):
- case MAP_NUM(UNDERWATER5):
- case MAP_NUM(UNDERWATER6):
- case MAP_NUM(UNDERWATER7):
+ case MAP_NUM(UNDERWATER_ROUTE127):
+ case MAP_NUM(UNDERWATER_ROUTE129):
+ case MAP_NUM(UNDERWATER_ROUTE105):
+ case MAP_NUM(UNDERWATER_ROUTE125):
VarSet(VAR_SHOULD_END_ABNORMAL_WEATHER, 1);
return FALSE;
default:
@@ -3888,12 +3883,14 @@ static void Task_LinkRetireStatusWithBattleTowerPartner(u8 taskId)
void Script_DoRayquazaScene(void)
{
- if (gSpecialVar_0x8004 == 0)
+ if (!gSpecialVar_0x8004)
{
+ // Groudon/Kyogre fight scene
DoRayquazaScene(0, TRUE, CB2_ReturnToFieldContinueScriptPlayMapMusic);
}
else
{
+ // Rayquaza arrives scene
DoRayquazaScene(1, FALSE, CB2_ReturnToFieldContinueScriptPlayMapMusic);
}
}
diff --git a/src/field_tasks.c b/src/field_tasks.c
index 91b4558d5..002977a10 100644
--- a/src/field_tasks.c
+++ b/src/field_tasks.c
@@ -219,13 +219,13 @@ static void DummyPerStepCallback(u8 taskId)
static const struct PacifidlogMetatileOffsets *GetPacifidlogBridgeMetatileOffsets(const struct PacifidlogMetatileOffsets *offsets, u16 metatileBehavior)
{
- if (MetatileBehavior_IsPacifilogVerticalLog1(metatileBehavior))
+ if (MetatileBehavior_IsPacifidlogVerticalLog1(metatileBehavior))
return &offsets[0 * 2];
- else if (MetatileBehavior_IsPacifilogVerticalLog2(metatileBehavior))
+ else if (MetatileBehavior_IsPacifidlogVerticalLog2(metatileBehavior))
return &offsets[1 * 2];
- else if (MetatileBehavior_IsPacifilogHorizontalLog1(metatileBehavior))
+ else if (MetatileBehavior_IsPacifidlogHorizontalLog1(metatileBehavior))
return &offsets[2 * 2];
- else if (MetatileBehavior_IsPacifilogHorizontalLog2(metatileBehavior))
+ else if (MetatileBehavior_IsPacifidlogHorizontalLog2(metatileBehavior))
return &offsets[3 * 2];
else
return NULL;
@@ -265,22 +265,22 @@ static bool32 StandingOnNewPacifidlogBridge(s16 x1, s16 y1, s16 x2, s16 y2)
{
u16 metatileBehavior = MapGridGetMetatileBehaviorAt(x2, y2);
- if (MetatileBehavior_IsPacifilogVerticalLog1(metatileBehavior))
+ if (MetatileBehavior_IsPacifidlogVerticalLog1(metatileBehavior))
{
if (y1 > y2)
return FALSE;
}
- else if (MetatileBehavior_IsPacifilogVerticalLog2(metatileBehavior))
+ else if (MetatileBehavior_IsPacifidlogVerticalLog2(metatileBehavior))
{
if (y1 < y2)
return FALSE;
}
- else if (MetatileBehavior_IsPacifilogHorizontalLog1(metatileBehavior))
+ else if (MetatileBehavior_IsPacifidlogHorizontalLog1(metatileBehavior))
{
if (x1 > x2)
return FALSE;
}
- else if (MetatileBehavior_IsPacifilogHorizontalLog2(metatileBehavior))
+ else if (MetatileBehavior_IsPacifidlogHorizontalLog2(metatileBehavior))
{
if (x1 < x2)
return FALSE;
@@ -292,22 +292,22 @@ static bool32 StandingOnSamePacifidlogBridge(s16 x1, s16 y1, s16 x2, s16 y2)
{
u16 metatileBehavior = MapGridGetMetatileBehaviorAt(x1, y1);
- if (MetatileBehavior_IsPacifilogVerticalLog1(metatileBehavior))
+ if (MetatileBehavior_IsPacifidlogVerticalLog1(metatileBehavior))
{
if (y1 < y2)
return FALSE;
}
- else if (MetatileBehavior_IsPacifilogVerticalLog2(metatileBehavior))
+ else if (MetatileBehavior_IsPacifidlogVerticalLog2(metatileBehavior))
{
if (y1 > y2)
return FALSE;
}
- else if (MetatileBehavior_IsPacifilogHorizontalLog1(metatileBehavior))
+ else if (MetatileBehavior_IsPacifidlogHorizontalLog1(metatileBehavior))
{
if (x1 < x2)
return FALSE;
}
- else if (MetatileBehavior_IsPacifilogHorizontalLog2(metatileBehavior))
+ else if (MetatileBehavior_IsPacifidlogHorizontalLog2(metatileBehavior))
{
if (x1 > x2)
return FALSE;
diff --git a/src/fieldmap.c b/src/fieldmap.c
index 49337ebbe..296c4edf2 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -797,15 +797,33 @@ bool8 CameraMove(int x, int y)
struct MapConnection *sub_8088950(u8 direction, int x, int y)
{
int count;
- struct MapConnection *connection;
int i;
- count = gMapHeader.connections->count;
- connection = gMapHeader.connections->connections;
+ 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
+ count = connections->count;
+ connection = connections->connections;
for (i = 0; i < count; i++, connection++)
{
if (connection->direction == direction && sub_80889A8(direction, x, y, connection) == TRUE)
return connection;
}
+#endif
return NULL;
}
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
index 991617713..0458f7621 100644
--- a/src/fldeff_cut.c
+++ b/src/fldeff_cut.c
@@ -227,9 +227,9 @@ bool8 SetUpFieldMove_Cut(void)
y = gPlayerFacingPosition.y + sHyperCutStruct[i].y;
tileCuttable = TRUE;
- for (j = 0; j < 2; ++j) {
- if (sHyperCutStruct[i].unk2[j] == 0)
- break;
+ for (j = 0; j < 2; ++j)
+ {
+ if (sHyperCutStruct[i].unk2[j] == 0) break; // one line required to match -g
if (cutTiles[(u8)(sHyperCutStruct[i].unk2[j] - 1)] == FALSE)
{
tileCuttable = FALSE;
@@ -251,8 +251,11 @@ bool8 SetUpFieldMove_Cut(void)
sHyperCutTiles[tileArrayId] = TRUE;
ret = TRUE;
}
- else if (MetatileBehavior_IsCuttableGrass(tileBehavior) == TRUE)
- sHyperCutTiles[tileArrayId] = TRUE;
+ else
+ {
+ if (MetatileBehavior_IsCuttableGrass(tileBehavior) == TRUE)
+ sHyperCutTiles[tileArrayId] = TRUE;
+ }
}
}
}
diff --git a/src/frontier_pass.c b/src/frontier_pass.c
index 702f6c098..cf170b350 100644
--- a/src/frontier_pass.c
+++ b/src/frontier_pass.c
@@ -937,14 +937,14 @@ static void Task_HandleFrontierPassInput(u8 taskId)
{
u8 var = FALSE; // Reused, first informs whether the cursor moves, then used as the new cursor area.
- if (gMain.heldKeys & DPAD_UP && sPassGfx->cursorSprite->pos1.y >= 9)
+ if (JOY_HELD(DPAD_UP) && sPassGfx->cursorSprite->pos1.y >= 9)
{
sPassGfx->cursorSprite->pos1.y -= 2;
if (sPassGfx->cursorSprite->pos1.y <= 7)
sPassGfx->cursorSprite->pos1.y = 2;
var = TRUE;
}
- if (gMain.heldKeys & DPAD_DOWN && sPassGfx->cursorSprite->pos1.y <= 135)
+ if (JOY_HELD(DPAD_DOWN) && sPassGfx->cursorSprite->pos1.y <= 135)
{
sPassGfx->cursorSprite->pos1.y += 2;
if (sPassGfx->cursorSprite->pos1.y >= 137)
@@ -952,14 +952,14 @@ static void Task_HandleFrontierPassInput(u8 taskId)
var = TRUE;
}
- if (gMain.heldKeys & DPAD_LEFT && sPassGfx->cursorSprite->pos1.x >= 6)
+ if (JOY_HELD(DPAD_LEFT) && sPassGfx->cursorSprite->pos1.x >= 6)
{
sPassGfx->cursorSprite->pos1.x -= 2;
if (sPassGfx->cursorSprite->pos1.x <= 4)
sPassGfx->cursorSprite->pos1.x = 5;
var = TRUE;
}
- if (gMain.heldKeys & DPAD_RIGHT && sPassGfx->cursorSprite->pos1.x <= 231)
+ if (JOY_HELD(DPAD_RIGHT) && sPassGfx->cursorSprite->pos1.x <= 231)
{
sPassGfx->cursorSprite->pos1.x += 2;
if (sPassGfx->cursorSprite->pos1.x >= 233)
@@ -969,7 +969,7 @@ static void Task_HandleFrontierPassInput(u8 taskId)
if (!var) // Cursor did not change.
{
- if (sPassData->cursorArea != CURSOR_AREA_NOTHING && gMain.newKeys & A_BUTTON)
+ if (sPassData->cursorArea != CURSOR_AREA_NOTHING && JOY_NEW(A_BUTTON))
{
if (sPassData->cursorArea <= CURSOR_AREA_RECORD) // Map, Card, Record
{
@@ -983,10 +983,13 @@ static void Task_HandleFrontierPassInput(u8 taskId)
SetMainCallback2(CB2_HideFrontierPass);
DestroyTask(taskId);
// BUG. The function should return here. Otherwise, it can play the same sound twice and destroy the same task twice.
+ #ifdef BUGFIX
+ return;
+ #endif
}
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_PC_OFF);
SetMainCallback2(CB2_HideFrontierPass);
@@ -1173,75 +1176,47 @@ static void sub_80C5F58(bool8 arg0, bool8 arg1)
static void sub_80C6104(u8 cursorArea, u8 previousCursorArea)
{
- bool32 var;
-
switch (previousCursorArea)
{
case CURSOR_AREA_MAP:
CopyToBgTilemapBufferRect_ChangePalette(1, sPassGfx->unk24, 16, 3, 12, 7, 17);
- var = TRUE;
break;
case CURSOR_AREA_CARD:
CopyToBgTilemapBufferRect_ChangePalette(1, sPassGfx->unk24 + 336, 16, 10, 12, 7, 17);
- var = TRUE;
break;
case CURSOR_AREA_RECORD:
- if (!sPassData->hasBattleRecord)
- {
- var = FALSE;
- }
- else
- {
+ if (sPassData->hasBattleRecord)
CopyToBgTilemapBufferRect_ChangePalette(1, sPassGfx->unk28, 2, 10, 12, 3, 17);
- var = TRUE;
- }
+ else if (cursorArea == CURSOR_AREA_NOTHING || cursorArea > CURSOR_AREA_CANCEL)
+ return;
break;
case CURSOR_AREA_CANCEL:
CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_08DE3350, 21, 0, 9, 2, 17);
- var = TRUE;
break;
default:
- var = FALSE;
- break;
- }
-
- if (!var)
- {
if (cursorArea == CURSOR_AREA_NOTHING || cursorArea > CURSOR_AREA_CANCEL)
return;
+ break;
}
-
+
switch (cursorArea)
{
case CURSOR_AREA_MAP:
CopyToBgTilemapBufferRect_ChangePalette(1, sPassGfx->unk24 + 168, 16, 3, 12, 7, 17);
- var = TRUE;
break;
case CURSOR_AREA_CARD:
CopyToBgTilemapBufferRect_ChangePalette(1, sPassGfx->unk24 + 504, 16, 10, 12, 7, 17);
- var = TRUE;
break;
case CURSOR_AREA_RECORD:
- if (!sPassData->hasBattleRecord)
+ if (sPassData->hasBattleRecord)
+ CopyToBgTilemapBufferRect_ChangePalette(1, sPassGfx->unk28 + 72, 2, 10, 12, 3, 17);
+ else
return;
-
- CopyToBgTilemapBufferRect_ChangePalette(1, sPassGfx->unk28 + 72, 2, 10, 12, 3, 17);
- var = TRUE;
- break;
+ break; //needed to match
case CURSOR_AREA_CANCEL:
CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_08DE3374, 21, 0, 9, 2, 17);
- var = TRUE;
break;
default:
- var = FALSE;
- break;
- }
-
- if (!var)
- {
- #ifndef NONMATCHING
- asm("":::"r4");
- #endif
if (previousCursorArea == CURSOR_AREA_NOTHING || previousCursorArea > CURSOR_AREA_CANCEL)
return;
}
@@ -1471,19 +1446,19 @@ static void Task_HandleFrontierMap(u8 taskId)
break;
return;
case 1:
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_PC_OFF);
data[0] = 4;
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
if (sMapData->cursorPos >= NUM_FRONTIER_FACILITIES - 1)
HandleFrontierMapCursorMove(0);
else
data[0] = 2;
}
- else if (gMain.newKeys & DPAD_UP)
+ else if (JOY_NEW(DPAD_UP))
{
if (sMapData->cursorPos == 0)
HandleFrontierMapCursorMove(1);
diff --git a/src/frontier_util.c b/src/frontier_util.c
index c741a64fe..5955d9bf7 100644
--- a/src/frontier_util.c
+++ b/src/frontier_util.c
@@ -31,7 +31,6 @@
#include "constants/battle_frontier.h"
#include "constants/frontier_util.h"
#include "constants/trainers.h"
-#include "constants/species.h"
#include "constants/game_stat.h"
#include "constants/moves.h"
#include "constants/items.h"
@@ -2384,13 +2383,21 @@ void ClearRankingHallRecords(void)
{
s32 i, j, k;
+ // BUG: Passing 0 as a pointer instead of a pointer holding a value of 0.
+ #ifdef BUGFIX
+ u8 zero = 0;
+ #define ZERO (&zero)
+ #else
+ #define ZERO 0
+ #endif
+
for (i = 0; i < HALL_FACILITIES_COUNT; i++)
{
for (j = 0; j < 2; j++)
{
for (k = 0; k < 3; k++)
{
- CopyTrainerId(gSaveBlock2Ptr->hallRecords1P[i][j][k].id, 0); // BUG: Passing 0 as a pointer instead of a pointer holding a value of 0.
+ CopyTrainerId(gSaveBlock2Ptr->hallRecords1P[i][j][k].id, ZERO);
gSaveBlock2Ptr->hallRecords1P[i][j][k].name[0] = EOS;
gSaveBlock2Ptr->hallRecords1P[i][j][k].winStreak = 0;
}
@@ -2401,8 +2408,8 @@ void ClearRankingHallRecords(void)
{
for (k = 0; k < 3; k++)
{
- CopyTrainerId(gSaveBlock2Ptr->hallRecords2P[j][k].id1, 0); // BUG: Passing 0 as a pointer instead of a pointer holding a value of 0.
- CopyTrainerId(gSaveBlock2Ptr->hallRecords2P[j][k].id2, 0); // BUG: Passing 0 as a pointer instead of a pointer holding a value of 0.
+ CopyTrainerId(gSaveBlock2Ptr->hallRecords2P[j][k].id1, ZERO);
+ CopyTrainerId(gSaveBlock2Ptr->hallRecords2P[j][k].id2, ZERO);
gSaveBlock2Ptr->hallRecords2P[j][k].name1[0] = EOS;
gSaveBlock2Ptr->hallRecords2P[j][k].name2[0] = EOS;
gSaveBlock2Ptr->hallRecords2P[j][k].winStreak = 0;
@@ -2486,7 +2493,6 @@ void SetFrontierBrainObjEventGfx_2(void)
#define FRONTIER_BRAIN_OTID 61226
-#ifdef NONMATCHING
void CreateFrontierBrainPokemon(void)
{
s32 i, j;
@@ -2512,8 +2518,11 @@ void CreateFrontierBrainPokemon(void)
do
{
- j = Random32();
- } while (IsShinyOtIdPersonality(FRONTIER_BRAIN_OTID, j) || sFrontierBrainsMons[facility][symbol][i].nature != GetNatureFromPersonality(j));
+ do
+ {
+ j = Random32(); //should just be one while loop, but that doesn't match
+ } while (IsShinyOtIdPersonality(FRONTIER_BRAIN_OTID, j));
+ } while (sFrontierBrainsMons[facility][symbol][i].nature != GetNatureFromPersonality(j));
CreateMon(&gEnemyParty[monPartyId],
sFrontierBrainsMons[facility][symbol][i].species,
monLevel,
@@ -2535,243 +2544,6 @@ void CreateFrontierBrainPokemon(void)
monPartyId++;
}
}
-#else
-NAKED
-void CreateFrontierBrainPokemon(void)
-{
- asm_unified("\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x44\n\
- ldr r0, =0x000040cf\n\
- bl VarGet\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x20]\n\
- bl GetFronterBrainSymbol\n\
- str r0, [sp, 0x24]\n\
- ldr r0, [sp, 0x20]\n\
- cmp r0, 0x1\n\
- bne _081A4E44\n\
- ldr r0, =0x000003fe\n\
- bl TrainerIdToDomeTournamentId\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- bl GetDomeTrainerSelectedMons\n\
- adds r4, r0, 0\n\
- b _081A4E46\n\
- .pool\n\
-_081A4E44:\n\
- movs r4, 0x7\n\
-_081A4E46:\n\
- bl ZeroEnemyPartyMons\n\
- movs r1, 0\n\
- str r1, [sp, 0x18]\n\
- bl SetFacilityPtrsGetLevel\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x1C]\n\
- movs r2, 0\n\
- str r2, [sp, 0x14]\n\
-_081A4E5C:\n\
- movs r0, 0x1\n\
- ands r0, r4\n\
- asrs r4, 1\n\
- str r4, [sp, 0x30]\n\
- ldr r3, [sp, 0x14]\n\
- adds r3, 0x1\n\
- str r3, [sp, 0x28]\n\
- cmp r0, 0\n\
- bne _081A4E70\n\
- b _081A4FC4\n\
-_081A4E70:\n\
- ldr r4, [sp, 0x14]\n\
- lsls r4, 2\n\
- mov r9, r4\n\
- ldr r0, [sp, 0x24]\n\
- lsls r0, 4\n\
- str r0, [sp, 0x38]\n\
- ldr r1, [sp, 0x20]\n\
- lsls r1, 4\n\
- str r1, [sp, 0x34]\n\
- ldr r2, [sp, 0x1C]\n\
- lsls r2, 24\n\
- str r2, [sp, 0x3C]\n\
- ldr r3, [sp, 0x18]\n\
- adds r3, 0x1\n\
- str r3, [sp, 0x2C]\n\
- ldr r0, [sp, 0x14]\n\
- add r0, r9\n\
- lsls r0, 2\n\
- mov r8, r0\n\
-_081A4E96:\n\
- bl Random\n\
- adds r4, r0, 0\n\
- bl Random\n\
- lsls r4, 16\n\
- lsrs r7, r4, 16\n\
- lsls r0, 16\n\
- orrs r7, r0\n\
- ldr r0, =0x0000ef2a\n\
- adds r1, r7, 0\n\
- bl IsShinyOtIdPersonality\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _081A4E96\n\
- ldr r4, [sp, 0x38]\n\
- ldr r1, [sp, 0x24]\n\
- subs r0, r4, r1\n\
- lsls r5, r0, 2\n\
- mov r2, r8\n\
- adds r4, r2, r5\n\
- ldr r3, [sp, 0x34]\n\
- ldr r1, [sp, 0x20]\n\
- subs r0, r3, r1\n\
- lsls r6, r0, 3\n\
- adds r4, r6\n\
- ldr r2, =sFrontierBrainsMons\n\
- adds r4, r2\n\
- adds r0, r7, 0\n\
- bl GetNatureFromPersonality\n\
- ldrb r1, [r4, 0x5]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r1, r0\n\
- bne _081A4E96\n\
- ldr r4, [sp, 0x18]\n\
- movs r0, 0x64\n\
- adds r3, r4, 0\n\
- muls r3, r0\n\
- mov r8, r3\n\
- ldr r1, =gEnemyParty\n\
- add r1, r8\n\
- mov r10, r1\n\
- ldr r4, [sp, 0x14]\n\
- add r4, r9\n\
- lsls r4, 2\n\
- adds r0, r4, r5\n\
- adds r0, r6\n\
- ldr r2, =sFrontierBrainsMons\n\
- adds r0, r2\n\
- ldrh r1, [r0]\n\
- ldr r3, [sp, 0x3C]\n\
- lsrs r2, r3, 24\n\
- ldrb r3, [r0, 0x4]\n\
- movs r0, 0x1\n\
- str r0, [sp]\n\
- str r7, [sp, 0x4]\n\
- str r0, [sp, 0x8]\n\
- ldr r0, =0x0000ef2a\n\
- str r0, [sp, 0xC]\n\
- mov r0, r10\n\
- bl CreateMon\n\
- ldr r0, =sFrontierBrainsMons\n\
- adds r5, r0\n\
- adds r5, r6, r5\n\
- adds r4, r5, r4\n\
- adds r4, 0x2\n\
- mov r0, r10\n\
- movs r1, 0xC\n\
- adds r2, r4, 0\n\
- bl SetMonData\n\
- movs r7, 0\n\
- mov r6, r8\n\
- ldr r3, =gEnemyParty\n\
-_081A4F32:\n\
- adds r1, r7, 0\n\
- adds r1, 0x1A\n\
- ldr r0, [sp, 0x14]\n\
- add r0, r9\n\
- lsls r4, r0, 2\n\
- adds r2, r5, r4\n\
- adds r0, r7, 0x6\n\
- adds r2, r0\n\
- adds r0, r6, r3\n\
- str r3, [sp, 0x40]\n\
- bl SetMonData\n\
- adds r7, 0x1\n\
- ldr r3, [sp, 0x40]\n\
- cmp r7, 0x5\n\
- ble _081A4F32\n\
- movs r1, 0xFF\n\
- add r0, sp, 0x10\n\
- strb r1, [r0]\n\
- movs r7, 0\n\
- ldr r1, [sp, 0x18]\n\
- movs r2, 0x64\n\
- adds r6, r1, 0\n\
- muls r6, r2\n\
- ldr r3, =sFrontierBrainsMons + 0xC\n\
- mov r8, r3\n\
- ldr r3, =gEnemyParty\n\
- adds r5, r4, 0\n\
-_081A4F6A:\n\
- ldr r4, [sp, 0x38]\n\
- ldr r0, [sp, 0x24]\n\
- subs r1, r4, r0\n\
- lsls r1, 2\n\
- adds r1, r5, r1\n\
- ldr r2, [sp, 0x34]\n\
- ldr r4, [sp, 0x20]\n\
- subs r0, r2, r4\n\
- lsls r0, 3\n\
- adds r1, r0\n\
- add r1, r8\n\
- ldrh r4, [r1]\n\
- lsls r2, r7, 24\n\
- lsrs r2, 24\n\
- adds r0, r6, r3\n\
- adds r1, r4, 0\n\
- str r3, [sp, 0x40]\n\
- bl SetMonMoveSlot\n\
- ldr r3, [sp, 0x40]\n\
- cmp r4, 0xDA\n\
- bne _081A4F9C\n\
- movs r1, 0\n\
- add r0, sp, 0x10\n\
- strb r1, [r0]\n\
-_081A4F9C:\n\
- adds r5, 0x2\n\
- adds r7, 0x1\n\
- cmp r7, 0x3\n\
- ble _081A4F6A\n\
- ldr r0, [sp, 0x18]\n\
- movs r1, 0x64\n\
- adds r4, r0, 0\n\
- muls r4, r1\n\
- ldr r0, =gEnemyParty\n\
- adds r4, r0\n\
- adds r0, r4, 0\n\
- movs r1, 0x20\n\
- add r2, sp, 0x10\n\
- bl SetMonData\n\
- adds r0, r4, 0\n\
- bl CalculateMonStats\n\
- ldr r2, [sp, 0x2C]\n\
- str r2, [sp, 0x18]\n\
-_081A4FC4:\n\
- ldr r4, [sp, 0x30]\n\
- ldr r3, [sp, 0x28]\n\
- str r3, [sp, 0x14]\n\
- cmp r3, 0x2\n\
- bgt _081A4FD0\n\
- b _081A4E5C\n\
-_081A4FD0:\n\
- add sp, 0x44\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n\
-");
-}
-#endif
u16 GetFrontierBrainMonSpecies(u8 monId)
{
diff --git a/src/graphics.c b/src/graphics.c
index 21aa7b50f..3973c1507 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -1217,13 +1217,12 @@ const u32 gBattleAnimSpriteGfx_WhiteFeather[] = INCBIN_U32("graphics/battle_anim
const u32 gBattleAnimSpritePal_Sparkle6[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_6.gbapal.lz");
const u32 gBattleAnimSpriteGfx_Sparkle6[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_6.4bpp.lz");
-const u16 gUnknown_08DBA518[] = INCBIN_U16("graphics/misc/cable_car_bg.gbapal");
-const u16 gCableCar_Pal[] = INCBIN_U16("graphics/misc/cable_car.gbapal");
-
-const u32 gUnknown_08DBA5B8[] = INCBIN_U32("graphics/misc/cable_car_bg.4bpp.lz");
-const u32 gCableCar_Gfx[] = INCBIN_U32("graphics/misc/cable_car.4bpp.lz");
-const u32 gCableCarDoor_Gfx[] = INCBIN_U32("graphics/misc/cable_car_door.4bpp.lz");
-const u32 gCableCarCord_Gfx[] = INCBIN_U32("graphics/misc/cable_car_cord.4bpp.lz");
+const u16 gCableCarBg_Pal[] = INCBIN_U16("graphics/cable_car/bg.gbapal");
+const u16 gCableCar_Pal[] = INCBIN_U16("graphics/cable_car/cable_car.gbapal");
+const u32 gCableCarBg_Gfx[] = INCBIN_U32("graphics/cable_car/bg.4bpp.lz");
+const u32 gCableCar_Gfx[] = INCBIN_U32("graphics/cable_car/cable_car.4bpp.lz");
+const u32 gCableCarDoor_Gfx[] = INCBIN_U32("graphics/cable_car/door.4bpp.lz");
+const u32 gCableCarCable_Gfx[] = INCBIN_U32("graphics/cable_car/cable.4bpp.lz");
// Roulette
const u32 gRouletteMenu_Gfx[] = INCBIN_U32("graphics/roulette/window.4bpp.lz");
@@ -1374,11 +1373,11 @@ const u16 gEasyChatMode_Pal[] = INCBIN_U16("graphics/easy_chat/mode.gbapal");
const u32 gEasyChatWindow_Gfx[] = INCBIN_U32("graphics/easy_chat/window.4bpp.lz"); // uses mode pal
const u32 gEasyChatWindow_Tilemap[] = INCBIN_U32("graphics/easy_chat/window.bin.lz");
-const u16 gWallclockMale_Pal[] = INCBIN_U16("graphics/interface/wallclock_male.gbapal");
-const u16 gWallclockFemale_Pal[] = INCBIN_U16("graphics/interface/wallclock_female.gbapal");
-const u32 gWallclock_Gfx[] = INCBIN_U32("graphics/interface/wallclock.4bpp.lz");
-const u32 gUnknown_08DCC648[] = INCBIN_U32("graphics/interface/wallclock1.bin.lz");
-const u32 gUnknown_08DCC908[] = INCBIN_U32("graphics/interface/wallclock2.bin.lz");
+const u16 gWallClockMale_Pal[] = INCBIN_U16("graphics/wallclock/male.gbapal");
+const u16 gWallClockFemale_Pal[] = INCBIN_U16("graphics/wallclock/female.gbapal");
+const u32 gWallClock_Gfx[] = INCBIN_U32("graphics/wallclock/clock.4bpp.lz");
+const u32 gWallClockStart_Tilemap[] = INCBIN_U32("graphics/wallclock/clock_start.bin.lz");
+const u32 gWallClockView_Tilemap[] = INCBIN_U32("graphics/wallclock/clock_view.bin.lz");
const u16 gUsePokeblockCondition_Pal[] = INCBIN_U16("graphics/pokeblock/use_screen/condition.gbapal");
const u32 gUsePokeblockCondition_Gfx[] = INCBIN_U32("graphics/pokeblock/use_screen/condition.4bpp.lz");
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index 2b548dea2..7b63950d1 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -18,7 +18,6 @@
#include "window.h"
#include "credits.h"
#include "bg.h"
-#include "constants/species.h"
#include "constants/game_stat.h"
#include "util.h"
#include "string_util.h"
@@ -730,7 +729,7 @@ static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId)
static void Task_Hof_ExitOnKeyPressed(u8 taskId)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
FadeOutBGM(4);
gTasks[taskId].func = Task_Hof_HandlePaletteOnExit;
@@ -992,7 +991,7 @@ static void Task_HofPC_HandleInput(u8 taskId)
{
u16 i;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
if (gTasks[taskId].tCurrTeamNo != 0) // prepare another team to view
{
@@ -1020,7 +1019,7 @@ static void Task_HofPC_HandleInput(u8 taskId)
gTasks[taskId].func = Task_HofPC_HandlePaletteOnExit;
}
}
- else if (gMain.newKeys & B_BUTTON) // turn off hall of fame PC
+ else if (JOY_NEW(B_BUTTON)) // turn off hall of fame PC
{
if (IsCryPlayingOrClearCrySongs())
{
@@ -1029,12 +1028,12 @@ static void Task_HofPC_HandleInput(u8 taskId)
}
gTasks[taskId].func = Task_HofPC_HandlePaletteOnExit;
}
- else if (gMain.newKeys & DPAD_UP && gTasks[taskId].tCurrMonId != 0) // change mon -1
+ else if (JOY_NEW(DPAD_UP) && gTasks[taskId].tCurrMonId != 0) // change mon -1
{
gTasks[taskId].tCurrMonId--;
gTasks[taskId].func = Task_HofPC_PrintMonInfo;
}
- else if (gMain.newKeys & DPAD_DOWN && gTasks[taskId].tCurrMonId < gTasks[taskId].tMonNo - 1) // change mon +1
+ else if (JOY_NEW(DPAD_DOWN) && gTasks[taskId].tCurrMonId < gTasks[taskId].tMonNo - 1) // change mon +1
{
gTasks[taskId].tCurrMonId++;
gTasks[taskId].func = Task_HofPC_PrintMonInfo;
@@ -1098,7 +1097,7 @@ static void Task_HofPC_PrintDataIsCorrupted(u8 taskId)
static void Task_HofPC_ExitOnButtonPress(u8 taskId)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
gTasks[taskId].func = Task_HofPC_HandlePaletteOnExit;
}
diff --git a/src/intro.c b/src/intro.c
index eca8b84b1..7dab2ad46 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -21,7 +21,6 @@
#include "intro.h"
#include "graphics.h"
#include "sound.h"
-#include "constants/species.h"
#include "util.h"
#include "title_screen.h"
#include "constants/rgb.h"
diff --git a/src/intro_credits_graphics.c b/src/intro_credits_graphics.c
index 04e2216f6..45cc24e5c 100644
--- a/src/intro_credits_graphics.c
+++ b/src/intro_credits_graphics.c
@@ -824,7 +824,7 @@ void sub_817B1C8(u8 a)
LZ77UnCompVram(gUnknown_085F1398, (void *)(BG_SCREEN_ADDR(6)));
LoadPalette(&gUnknown_085F0CFC, 0, 96);
LoadCompressedSpriteSheet(gUnknown_085F5064);
- LZ77UnCompVram(gUnknown_085F16A8, (void *)(VRAM + 0x10000));
+ LZ77UnCompVram(gUnknown_085F16A8, (void *)(OBJ_VRAM0));
LoadPalette(&gUnknown_085F1668, 256, 32);
sub_817B76C();
break;
@@ -834,7 +834,7 @@ void sub_817B1C8(u8 a)
LZ77UnCompVram(gUnknown_085F1398, (void *)(BG_SCREEN_ADDR(6)));
LoadPalette(&gUnknown_085F0D5C, 0, 96);
LoadCompressedSpriteSheet(gUnknown_085F5064);
- LZ77UnCompVram(gUnknown_085F16A8, (void *)(VRAM + 0x10000));
+ LZ77UnCompVram(gUnknown_085F16A8, (void *)(OBJ_VRAM0));
LoadPalette(&gUnknown_085F1688, 256, 32);
sub_817B76C();
break;
diff --git a/src/item.c b/src/item.c
index 44b73802b..0b6366048 100644
--- a/src/item.c
+++ b/src/item.c
@@ -181,11 +181,12 @@ bool8 HasAtLeastOneBerry(void)
return FALSE;
}
-#ifdef NONMATCHING
-// Refuses to match.
bool8 CheckBagHasSpace(u16 itemId, u16 count)
{
u8 i;
+ u8 pocket;
+ u16 slotCapacity;
+ u16 ownedCount;
if (ItemId_GetPocket(itemId) == POCKET_NONE)
return FALSE;
@@ -194,208 +195,55 @@ bool8 CheckBagHasSpace(u16 itemId, u16 count)
{
return CheckPyramidBagHasSpace(itemId, count);
}
- else
- {
- u8 pocket;
- u16 slotCapacity;
- u16 ownedCount;
- pocket = ItemId_GetPocket(itemId) - 1;
- if (pocket != BERRIES_POCKET)
- slotCapacity = MAX_BAG_ITEM_CAPACITY;
- else
- slotCapacity = MAX_BERRY_CAPACITY;
+ pocket = ItemId_GetPocket(itemId) - 1;
+ if (pocket != BERRIES_POCKET)
+ slotCapacity = MAX_BAG_ITEM_CAPACITY;
+ else
+ slotCapacity = MAX_BERRY_CAPACITY;
- // Check space in any existing item slots that already contain this item
- for (i = 0; i < gBagPockets[pocket].capacity; i++)
+ // Check space in any existing item slots that already contain this item
+ for (i = 0; i < gBagPockets[pocket].capacity; i++)
+ {
+ if (gBagPockets[pocket].itemSlots[i].itemId == itemId)
{
- if (gBagPockets[pocket].itemSlots[i].itemId == itemId)
- {
- ownedCount = GetBagItemQuantity(&gBagPockets[pocket].itemSlots[i].quantity);
- if (ownedCount + count <= slotCapacity)
- return TRUE;
- if (pocket == TMHM_POCKET || pocket == BERRIES_POCKET)
- return FALSE;
- count -= slotCapacity - ownedCount;
- if (count == 0)
- return TRUE;
- }
+ ownedCount = GetBagItemQuantity(&gBagPockets[pocket].itemSlots[i].quantity);
+ if (ownedCount + count <= slotCapacity)
+ return TRUE;
+ if (pocket == TMHM_POCKET || pocket == BERRIES_POCKET)
+ return FALSE;
+ count -= (slotCapacity - ownedCount);
+ if (count == 0)
+ break; //should be return TRUE, but that doesn't match
}
+ }
- // Check space in empty item slots
- if (count > 0)
+ // Check space in empty item slots
+ if (count > 0)
+ {
+ for (i = 0; i < gBagPockets[pocket].capacity; i++)
{
- for (i = 0; i < gBagPockets[pocket].capacity; i++)
+ if (gBagPockets[pocket].itemSlots[i].itemId == 0)
{
- if (gBagPockets[pocket].itemSlots[i].itemId == 0)
+ if (count > slotCapacity)
{
- if (count <= slotCapacity)
- return TRUE;
if (pocket == TMHM_POCKET || pocket == BERRIES_POCKET)
return FALSE;
count -= slotCapacity;
}
+ else
+ {
+ count = 0; //should be return TRUE, but that doesn't match
+ break;
+ }
}
- if (count > 0)
- return FALSE; // No more item slots. The bag is full
}
-
- return TRUE;
+ if (count > 0)
+ return FALSE; // No more item slots. The bag is full
}
+
+ return TRUE;
}
-#else
-NAKED
-bool8 CheckBagHasSpace(u16 itemId, u16 count)
-{
- asm_unified("push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x4\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
- lsls r1, 16\n\
- lsrs r5, r1, 16\n\
- bl ItemId_GetPocket\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080D6906\n\
- bl InBattlePyramid\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _080D6838\n\
- ldr r0, =0x00004004\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- bne _080D684C\n\
-_080D6838:\n\
- mov r0, r8\n\
- adds r1, r5, 0\n\
- bl CheckPyramidBagHasSpace\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- b _080D6916\n\
- .pool\n\
-_080D684C:\n\
- mov r0, r8\n\
- bl ItemId_GetPocket\n\
- subs r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- ldr r7, =0x000003e7\n\
- cmp r2, 0x3\n\
- beq _080D6860\n\
- movs r7, 0x63\n\
-_080D6860:\n\
- movs r6, 0\n\
- ldr r1, =gBagPockets\n\
- lsls r4, r2, 3\n\
- adds r0, r4, r1\n\
- mov r9, r4\n\
- ldrb r0, [r0, 0x4]\n\
- cmp r6, r0\n\
- bcs _080D68BC\n\
- subs r0, r2, 0x2\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
-_080D6878:\n\
- adds r0, r4, r1\n\
- ldr r1, [r0]\n\
- lsls r0, r6, 2\n\
- adds r1, r0, r1\n\
- ldrh r0, [r1]\n\
- cmp r0, r8\n\
- bne _080D68AC\n\
- adds r0, r1, 0x2\n\
- str r2, [sp]\n\
- bl GetBagItemQuantity\n\
- lsls r0, 16\n\
- lsrs r1, r0, 16\n\
- adds r0, r1, r5\n\
- ldr r2, [sp]\n\
- cmp r0, r7\n\
- ble _080D6914\n\
- mov r0, r10\n\
- cmp r0, 0x1\n\
- bls _080D6906\n\
- subs r0, r7, r1\n\
- subs r0, r5, r0\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- cmp r5, 0\n\
- beq _080D6914\n\
-_080D68AC:\n\
- adds r0, r6, 0x1\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- ldr r1, =gBagPockets\n\
- adds r0, r4, r1\n\
- ldrb r0, [r0, 0x4]\n\
- cmp r6, r0\n\
- bcc _080D6878\n\
-_080D68BC:\n\
- cmp r5, 0\n\
- beq _080D6914\n\
- movs r6, 0\n\
- ldr r3, =gBagPockets\n\
- mov r1, r9\n\
- adds r0, r1, r3\n\
- ldrb r0, [r0, 0x4]\n\
- cmp r6, r0\n\
- bcs _080D6902\n\
- adds r4, r3, 0\n\
- subs r0, r2, 0x2\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
-_080D68D6:\n\
- adds r0, r1, r4\n\
- ldr r1, [r0]\n\
- lsls r0, r6, 2\n\
- adds r0, r1\n\
- ldrh r0, [r0]\n\
- cmp r0, 0\n\
- bne _080D68F2\n\
- cmp r5, r7\n\
- bls _080D6914\n\
- cmp r2, 0x1\n\
- bls _080D6906\n\
- subs r0, r5, r7\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
-_080D68F2:\n\
- adds r0, r6, 0x1\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- mov r1, r9\n\
- adds r0, r1, r3\n\
- ldrb r0, [r0, 0x4]\n\
- cmp r6, r0\n\
- bcc _080D68D6\n\
-_080D6902:\n\
- cmp r5, 0\n\
- beq _080D6914\n\
-_080D6906:\n\
- movs r0, 0\n\
- b _080D6916\n\
- .pool\n\
-_080D6914:\n\
- movs r0, 0x1\n\
-_080D6916:\n\
- add sp, 0x4\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1");
-}
-#endif // NONMATCHING
bool8 AddBagItem(u16 itemId, u16 count)
{
diff --git a/src/item_menu.c b/src/item_menu.c
index ace2fd11e..80035b945 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -920,14 +920,14 @@ void BagMenu_ItemPrintCallback(u8 windowId, s32 itemIndex, u8 y)
if (gBagPositionStruct.pocket == BERRIES_POCKET)
{
- ConvertIntToDecimalStringN(gStringVar1, itemQuantity, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ ConvertIntToDecimalStringN(gStringVar1, itemQuantity, STR_CONV_MODE_RIGHT_ALIGN, BERRY_CAPACITY_DIGITS);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
offset = GetStringRightAlignXOffset(7, gStringVar4, 119);
BagMenu_Print(windowId, 7, gStringVar4, offset, y, 0, 0, -1, 0);
}
else if (gBagPositionStruct.pocket != KEYITEMS_POCKET && ItemId_GetImportance(itemId) == FALSE)
{
- ConvertIntToDecimalStringN(gStringVar1, itemQuantity, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ ConvertIntToDecimalStringN(gStringVar1, itemQuantity, STR_CONV_MODE_RIGHT_ALIGN, BAG_ITEM_CAPACITY_DIGITS);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
offset = GetStringRightAlignXOffset(7, gStringVar4, 119);
BagMenu_Print(windowId, 7, gStringVar4, offset, y, 0, 0, -1, 0);
@@ -1134,7 +1134,7 @@ void sub_81ABC3C(u8 a)
void PrintItemDepositAmount(u8 windowId, s16 numDeposited)
{
- u8 numDigits = (gBagPositionStruct.pocket == BERRIES_POCKET) ? 3 : 2;
+ u8 numDigits = (gBagPositionStruct.pocket == BERRIES_POCKET) ? BERRY_CAPACITY_DIGITS : BAG_ITEM_CAPACITY_DIGITS;
ConvertIntToDecimalStringN(gStringVar1, numDeposited, STR_CONV_MODE_LEADING_ZEROS, numDigits);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
AddTextPrinterParameterized(windowId, 1, gStringVar4, GetStringCenterAlignXOffset(1, gStringVar4, 0x28), 2, 0, 0);
@@ -1142,7 +1142,7 @@ void PrintItemDepositAmount(u8 windowId, s16 numDeposited)
void PrintItemSoldAmount(int windowId, int numSold, int moneyEarned)
{
- u8 numDigits = (gBagPositionStruct.pocket == BERRIES_POCKET) ? 3 : 2;
+ u8 numDigits = (gBagPositionStruct.pocket == BERRIES_POCKET) ? BERRY_CAPACITY_DIGITS : BAG_ITEM_CAPACITY_DIGITS;
ConvertIntToDecimalStringN(gStringVar1, numSold, STR_CONV_MODE_LEADING_ZEROS, numDigits);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
AddTextPrinterParameterized(windowId, 1, gStringVar4, 0, 1, -1, 0);
@@ -1167,7 +1167,7 @@ void Task_BagMenu_HandleInput(u8 taskId)
SwitchBagPocket(taskId, MENU_CURSOR_DELTA_RIGHT, 0);
return;
default:
- if (gMain.newKeys & SELECT_BUTTON)
+ if (JOY_NEW(SELECT_BUTTON))
{
if (CanSwapItems() == TRUE)
{
@@ -1229,12 +1229,12 @@ static u8 GetSwitchBagPocketDirection(void)
if (gBagMenu->pocketSwitchDisabled)
return SWITCH_POCKET_NONE;
LRKeys = GetLRKeysPressed();
- if ((gMain.newKeys & DPAD_LEFT) || LRKeys == MENU_L_PRESSED)
+ if ((JOY_NEW(DPAD_LEFT)) || LRKeys == MENU_L_PRESSED)
{
PlaySE(SE_SELECT);
return SWITCH_POCKET_LEFT;
}
- if ((gMain.newKeys & DPAD_RIGHT) || LRKeys == MENU_R_PRESSED)
+ if ((JOY_NEW(DPAD_RIGHT)) || LRKeys == MENU_R_PRESSED)
{
PlaySE(SE_SELECT);
return SWITCH_POCKET_RIGHT;
@@ -1388,7 +1388,7 @@ static void Task_HandleSwappingItemsInput(u8 taskId)
if (MenuHelpers_CallLinkSomething() != TRUE)
{
- if (gMain.newKeys & SELECT_BUTTON)
+ if (JOY_NEW(SELECT_BUTTON))
{
PlaySE(SE_SELECT);
ListMenuGetScrollAndRow(data[0], &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket], &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]);
@@ -1406,7 +1406,7 @@ static void Task_HandleSwappingItemsInput(u8 taskId)
break;
case LIST_CANCEL:
PlaySE(SE_SELECT);
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
sub_81AC498(taskId);
else
sub_81AC590(taskId);
@@ -1645,7 +1645,7 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId)
if (MenuHelpers_CallLinkSomething() != TRUE)
{
s8 cursorPos = Menu_GetCursorPos();
- if (gMain.newKeys & DPAD_UP)
+ if (JOY_NEW(DPAD_UP))
{
if (cursorPos > 0 && sub_81ACDFC(cursorPos - 2))
{
@@ -1653,7 +1653,7 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId)
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_UP);
}
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
if (cursorPos < (gBagMenu->contextMenuNumItems - 2) && sub_81ACDFC(cursorPos + 2))
{
@@ -1661,7 +1661,7 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId)
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_DOWN);
}
}
- else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysPressed() == MENU_L_PRESSED)
+ else if ((JOY_NEW(DPAD_LEFT)) || GetLRKeysPressed() == MENU_L_PRESSED)
{
if ((cursorPos & 1) && sub_81ACDFC(cursorPos - 1))
{
@@ -1669,7 +1669,7 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId)
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_LEFT, MENU_CURSOR_DELTA_NONE);
}
}
- else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysPressed() == MENU_R_PRESSED)
+ else if ((JOY_NEW(DPAD_RIGHT)) || GetLRKeysPressed() == MENU_R_PRESSED)
{
if (!(cursorPos & 1) && sub_81ACDFC(cursorPos + 1))
{
@@ -1677,12 +1677,12 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId)
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_RIGHT, MENU_CURSOR_DELTA_NONE);
}
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
sItemMenuActions[gBagMenu->contextMenuItemsPtr[cursorPos]].func.void_u8(taskId);
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
sItemMenuActions[ITEMMENUACTION_CANCEL].func.void_u8(taskId);
@@ -1762,7 +1762,7 @@ void BagMenu_TossItems(u8 taskId)
s16* data = gTasks[taskId].data;
CopyItemName(gSpecialVar_ItemId, gStringVar1);
- ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, 3);
+ ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, MAX_ITEM_DIGITS);
StringExpandPlaceholders(gStringVar4, gText_ConfirmTossItems);
FillWindowPixelBuffer(1, PIXEL_FILL(0));
BagMenu_Print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
@@ -1786,13 +1786,13 @@ void Task_ChooseHowManyToToss(u8 taskId)
{
PrintItemDepositAmount(gBagMenu->windowPointers[7], tItemCount);
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
BagMenu_RemoveWindow(7);
BagMenu_TossItems(taskId);
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
BagMenu_RemoveWindow(7);
@@ -1805,7 +1805,7 @@ void BagMenu_ConfirmToss(u8 taskId)
s16* data = gTasks[taskId].data;
CopyItemName(gSpecialVar_ItemId, gStringVar1);
- ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, 3);
+ ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, MAX_ITEM_DIGITS);
StringExpandPlaceholders(gStringVar4, gText_ThrewAwayVar2Var1s);
FillWindowPixelBuffer(1, PIXEL_FILL(0));
BagMenu_Print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
@@ -1818,7 +1818,7 @@ void Task_ActuallyToss(u8 taskId)
u16* scrollPos = &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket];
u16* cursorPos = &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket];
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
PlaySE(SE_SELECT);
RemoveBagItem(gSpecialVar_ItemId, tItemCount);
@@ -1886,7 +1886,7 @@ static void BagMenu_PrintItemCantBeHeld(u8 taskId)
void sub_81AD350(u8 taskId)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
BagMenu_InitListsMenu(taskId);
@@ -2060,13 +2060,13 @@ static void Task_SellHowManyDialogueHandleInput(u8 taskId)
{
PrintItemSoldAmount(gBagMenu->windowPointers[8], tItemCount, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * tItemCount);
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
BagMenu_RemoveWindow(8);
DisplaySellItemPriceAndConfirm(taskId);
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
BagMenu_PrintCursor_(data[0], 0);
@@ -2108,7 +2108,7 @@ static void BagMenu_Sell_UpdateItemListAndMoney(u8 taskId)
static void BagMenu_Sell_WaitForABPress(u8 taskId)
{
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
PlaySE(SE_SELECT);
RemoveMoneyWindow();
@@ -2144,13 +2144,13 @@ static void Task_ChooseHowManyToDeposit(u8 taskId)
{
PrintItemDepositAmount(gBagMenu->windowPointers[7], tItemCount);
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
BagMenu_RemoveWindow(7);
BagMenu_TryDepositItem(taskId);
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
BagMenu_PrintDescription(data[1]);
@@ -2173,7 +2173,7 @@ static void BagMenu_TryDepositItem(u8 taskId)
else if (AddPCItem(gSpecialVar_ItemId, tItemCount) == TRUE)
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
- ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, 3);
+ ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, MAX_ITEM_DIGITS);
StringExpandPlaceholders(gStringVar4, gText_DepositedVar2Var1s);
BagMenu_Print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
gTasks[taskId].func = Task_ActuallyToss;
@@ -2189,7 +2189,7 @@ static void BagMenu_Deposit_WaitForABPress(u8 taskId)
{
s16* data = gTasks[taskId].data;
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
PlaySE(SE_SELECT);
BagMenu_PrintDescription(data[1]);
@@ -2457,10 +2457,10 @@ static void RemoveMoneyWindow(void)
void BagMenu_PrepareTMHMMoveWindow(void)
{
FillWindowPixelBuffer(3, PIXEL_FILL(0));
- blit_move_info_icon(3, 19, 0, 0);
- blit_move_info_icon(3, 20, 0, 12);
- blit_move_info_icon(3, 21, 0, 24);
- blit_move_info_icon(3, 22, 0, 36);
+ BlitMenuInfoIcon(3, MENU_INFO_ICON_TYPE, 0, 0);
+ BlitMenuInfoIcon(3, MENU_INFO_ICON_POWER, 0, 12);
+ BlitMenuInfoIcon(3, MENU_INFO_ICON_ACCURACY, 0, 24);
+ BlitMenuInfoIcon(3, MENU_INFO_ICON_PP, 0, 36);
CopyWindowToVram(3, 2);
}
@@ -2480,7 +2480,7 @@ void PrintTMHMMoveData(u16 itemId)
else
{
moveId = ItemIdToBattleMoveId(itemId);
- blit_move_info_icon(4, gBattleMoves[moveId].type + 1, 0, 0);
+ BlitMenuInfoIcon(4, gBattleMoves[moveId].type + 1, 0, 0);
if (gBattleMoves[moveId].power <= 1)
{
text = gText_ThreeDashes;
diff --git a/src/item_use.c b/src/item_use.c
index a9132ae5e..9ab755a5e 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -721,7 +721,7 @@ static void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId)
static bool8 TryToWaterSudowoodo(void)
{
- s16 x, y;
+ u16 x, y;
u8 z;
u8 objId;
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
@@ -792,7 +792,7 @@ static void BootUpSoundTMHM(u8 taskId)
static void Task_ShowTMHMContainedMessage(u8 taskId)
{
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
StringCopy(gStringVar1, gMoveNames[ItemIdToBattleMoveId(gSpecialVar_ItemId)]);
StringExpandPlaceholders(gStringVar4, gText_TMHMContainedVar1);
@@ -956,7 +956,7 @@ void ItemUseInBattle_PokeBall(u8 taskId)
static void Task_CloseStatIncreaseMessage(u8 taskId)
{
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
if (!InBattlePyramid())
Task_FadeAndCloseBagMenu(taskId);
diff --git a/src/link.c b/src/link.c
index cdaf58469..9fd35a10b 100644
--- a/src/link.c
+++ b/src/link.c
@@ -445,27 +445,27 @@ static void TestBlockTransfer(u8 nothing, u8 is, u8 used)
static void LinkTestProcessKeyInput(void)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
gShouldAdvanceLinkState = 1;
}
- if (gMain.heldKeys & B_BUTTON)
+ if (JOY_HELD(B_BUTTON))
{
InitBlockSend(gHeap + 0x4000, 0x00002004);
}
- if (gMain.newKeys & L_BUTTON)
+ if (JOY_NEW(L_BUTTON))
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(2, 0, 0));
}
- if (gMain.newKeys & START_BUTTON)
+ if (JOY_NEW(START_BUTTON))
{
SetSuppressLinkErrorMessage(TRUE);
}
- if (gMain.newKeys & R_BUTTON)
+ if (JOY_NEW(R_BUTTON))
{
TrySavingData(SAVE_LINK);
}
- if (gMain.newKeys & SELECT_BUTTON)
+ if (JOY_NEW(SELECT_BUTTON))
{
SetCloseLinkCallback();
}
@@ -1754,7 +1754,7 @@ static void CB2_PrintErrorMessage(void)
{
if (gWirelessCommType == 1)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_PIN);
gWirelessCommType = 0;
@@ -1764,7 +1764,7 @@ static void CB2_PrintErrorMessage(void)
}
else if (gWirelessCommType == 2)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
rfu_REQ_stopMode();
rfu_waitREQComplete();
diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c
index 1ea6f4fce..5e0ef0aa4 100644
--- a/src/link_rfu_2.c
+++ b/src/link_rfu_2.c
@@ -15,7 +15,6 @@
#include "string_util.h"
#include "task.h"
#include "text.h"
-#include "constants/species.h"
#include "save.h"
#include "mystery_gift.h"
@@ -876,7 +875,8 @@ static void sub_800F498(u16 *a0, u8 *a1)
static bool32 RfuProcessEnqueuedRecvBlock(void)
{
- u8 i, j;
+ u8 i;
+ u8 j;
u8 sp00[MAX_RFU_PLAYERS * (2 * (CMD_LENGTH - 1))];
u8 sp48[2 * (CMD_LENGTH - 1)];
u8 status;
@@ -933,14 +933,13 @@ static void HandleSendFailure(u8 unused, u32 flags)
for (j = 0; j < 7; j++)
{
temp = j << 1;
- sResendBlock16[j + 1] = (r10[i * 12 + temp + 1] << 8) | r10[i * 12 + temp];
+ sResendBlock16[j + 1] = (r10[12 * i + temp + 1] << 8) | r10[12 * i + temp + 0];
}
-
for (j = 0; j < 7; j++)
{
temp = j << 1;
sResendBlock8[temp + 1] = sResendBlock16[j] >> 8;
- sResendBlock8[temp + 0] = sResendBlock16[j] & 0xff;
+ sResendBlock8[temp + 0] = sResendBlock16[j];
}
RfuSendQueue_Enqueue(&Rfu.sendQueue, sResendBlock8);
Rfu.sendBlock.failedFlags |= (1 << i);
@@ -1024,7 +1023,8 @@ void Rfu_SetBerryBlenderLinkCallback(void)
static void RfuHandleReceiveCommand(u8 unused)
{
- u16 i, j;
+ u16 i;
+ u16 j;
for (i = 0; i < MAX_RFU_PLAYERS; i++)
{
@@ -1038,7 +1038,7 @@ static void RfuHandleReceiveCommand(u8 unused)
if (gRfuLinkStatus->parentChild == MODE_CHILD)
{
Rfu.playerCount = gRecvCmds[i][1];
- Rfu.multiplayerId = sub_800F74C((u8 *)(&gRecvCmds[i][2]));
+ Rfu.multiplayerId = sub_800F74C((u8 *)(gRecvCmds[i] + 2));
}
break;
case RFUCMD_0x8800:
@@ -1237,9 +1237,10 @@ void Rfu_SendPacket(void *data)
bool32 Rfu_InitBlockSend(const u8 *src, size_t size)
{
bool8 r4;
- if (Rfu.callback != NULL || gSendCmd[0] != 0)
+ if (Rfu.callback != NULL)
+ return FALSE;
+ if (gSendCmd[0] != 0)
return FALSE;
-
if (Rfu.sendBlock.sending)
{
sRfuDebug.unk_83++;
@@ -1417,12 +1418,16 @@ void Rfu_SetCloseLinkCallback(void)
static void SendReadyExitStandbyUntilAllReady(void)
{
- u8 i, playerCount;
+ u8 playerCount;
+ u8 i;
- if (GetMultiplayerId() != 0 && Rfu.recvQueue.count == 0 && Rfu.resendExitStandbyTimer > 60)
+ if (GetMultiplayerId() != 0)
{
- RfuPrepareSendBuffer(RFUCMD_READY_EXIT_STANDBY);
- Rfu.resendExitStandbyTimer = 0;
+ if (Rfu.recvQueue.count == 0 && Rfu.resendExitStandbyTimer > 60)
+ {
+ RfuPrepareSendBuffer(RFUCMD_READY_EXIT_STANDBY);
+ Rfu.resendExitStandbyTimer = 0;
+ }
}
playerCount = GetLinkPlayerCount();
for (i = 0; i < playerCount; i++)
@@ -1452,7 +1457,8 @@ static void LinkLeaderReadyToExitStandby(void)
// RFU equivalent of LinkCB_Standby and LinkCB_StandbyForAll
static void Rfu_LinkStandby(void)
{
- u8 i, playerCount;
+ u8 i;
+ u8 playerCount;
if (GetMultiplayerId() != 0)
{
@@ -1548,28 +1554,28 @@ static bool8 CheckForLeavingGroupMembers(void)
bool8 memberLeft = FALSE;
for (i = 0; i < RFU_CHILD_MAX; i++)
{
- if (Rfu.partnerSendStatuses[i] == RFU_STATUS_JOIN_GROUP_OK
- || Rfu.partnerSendStatuses[i] == RFU_STATUS_JOIN_GROUP_NO)
+ if (Rfu.partnerSendStatuses[i] < RFU_STATUS_JOIN_GROUP_OK
+ || Rfu.partnerSendStatuses[i] > RFU_STATUS_JOIN_GROUP_NO)
{
- continue;
- }
-
- if (gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS
- || gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN)
- {
- if (Rfu.partnerRecvStatuses[i] == RFU_STATUS_LEAVE_GROUP_NOTICE)
+ if (gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS
+ || gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN)
{
- Rfu.partnerSendStatuses[i] = RFU_STATUS_LEAVE_GROUP;
- Rfu.partnerRecvStatuses[i] = RFU_STATUS_10;
+ if (Rfu.partnerRecvStatuses[i] == RFU_STATUS_LEAVE_GROUP_NOTICE)
+ {
+ Rfu.partnerSendStatuses[i] = RFU_STATUS_LEAVE_GROUP;
+ Rfu.partnerRecvStatuses[i] = RFU_STATUS_10;
+ rfu_clearSlot(TYPE_NI_RECV, i);
+ rfu_NI_setSendData(1 << i, 8, &Rfu.partnerSendStatuses[i], 1);
+ memberLeft = TRUE;
+ }
+
+ }
+ else if (gRfuSlotStatusNI[Rfu.childSlot]->recv.state == SLOT_STATE_RECV_FAILED)
rfu_clearSlot(TYPE_NI_RECV, i);
- rfu_NI_setSendData(1 << i, 8, &Rfu.partnerSendStatuses[i], 1);
- memberLeft = TRUE;
+ {
+
}
}
- else if (gRfuSlotStatusNI[Rfu.childSlot]->recv.state == SLOT_STATE_RECV_FAILED)
- {
- rfu_clearSlot(TYPE_NI_RECV, i);
- }
}
return memberLeft;
}
@@ -2090,7 +2096,8 @@ static void sub_80111FC(void)
static void sub_801120C(u8 msg, u8 paramCount)
{
- u8 i, disconnectFlag = 0;
+ u8 i;
+ u8 disconnectFlag = 0;
switch (msg)
{
case LMAN_MSG_INITIALIZE_COMPLETED:
diff --git a/src/link_rfu_3.c b/src/link_rfu_3.c
index c4c000a6e..c6344f503 100644
--- a/src/link_rfu_3.c
+++ b/src/link_rfu_3.c
@@ -626,32 +626,30 @@ static void ASCIIToPkmnStr(u8 *pkmnStr, const u8 *asciiStr)
static u8 GetConnectedChildStrength(u8 maxFlags)
{
u8 flagCount = 0;
- u8 flags = gRfuLinkStatus->connSlotFlag;
+ u32 flags = gRfuLinkStatus->connSlotFlag;
u8 i;
if (gRfuLinkStatus->parentChild == MODE_PARENT)
{
- for (i = 0; i < 4; i++)
+ for (i = 0; i < 4; flags >>= 1, i++)
{
if (flags & 1)
{
if (maxFlags == flagCount + 1)
{
return gRfuLinkStatus->strength[i];
- break; // This break is needed to match
+ break;
}
flagCount++;
}
- flags >>= 1;
}
}
else
{
- for (i = 0; i < 4; i++)
+ for (i = 0; i < 4; flags >>= 1, i++)
{
if (flags & 1)
return gRfuLinkStatus->strength[i];
- flags >>= 1;
}
}
return 0;
diff --git a/src/list_menu.c b/src/list_menu.c
index ef55f5872..3e5642e4c 100644
--- a/src/list_menu.c
+++ b/src/list_menu.c
@@ -335,11 +335,11 @@ s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const str
break;
case 1:
sMysteryGiftLinkMenu.currItemId = ListMenu_ProcessInput(sMysteryGiftLinkMenu.listTaskId);
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
sMysteryGiftLinkMenu.state = 2;
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
sMysteryGiftLinkMenu.currItemId = LIST_CANCEL;
sMysteryGiftLinkMenu.state = 2;
@@ -410,20 +410,20 @@ s32 ListMenu_ProcessInput(u8 listTaskId)
{
struct ListMenu *list = (void*) gTasks[listTaskId].data;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
return list->template.items[list->scrollOffset + list->selectedRow].id;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
return LIST_CANCEL;
}
- else if (gMain.newAndRepeatedKeys & DPAD_UP)
+ else if (JOY_REPEAT(DPAD_UP))
{
ListMenuChangeSelection(list, TRUE, 1, FALSE);
return LIST_NOTHING_CHOSEN;
}
- else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ else if (JOY_REPEAT(DPAD_DOWN))
{
ListMenuChangeSelection(list, TRUE, 1, TRUE);
return LIST_NOTHING_CHOSEN;
@@ -439,10 +439,12 @@ s32 ListMenu_ProcessInput(u8 listTaskId)
rightButton = FALSE;
break;
case LIST_MULTIPLE_SCROLL_DPAD:
+ // note: JOY_REPEAT won't match here
leftButton = gMain.newAndRepeatedKeys & DPAD_LEFT;
rightButton = gMain.newAndRepeatedKeys & DPAD_RIGHT;
break;
case LIST_MULTIPLE_SCROLL_L_R:
+ // same as above
leftButton = gMain.newAndRepeatedKeys & L_BUTTON;
rightButton = gMain.newAndRepeatedKeys & R_BUTTON;
break;
@@ -1257,17 +1259,17 @@ void ListMenuSetUpRedOutlineCursorSpriteOamTable(u16 rowWidth, u16 rowHeight, st
s32 i, j, id = 0;
subsprites[id] = sSubsprite_RedOutline1;
- subsprites[id].x = -120;
- subsprites[id].y = -120;
+ subsprites[id].x = 136;
+ subsprites[id].y = 136;
id++;
subsprites[id] = sSubsprite_RedOutline2;
subsprites[id].x = rowWidth + 128;
- subsprites[id].y = -120;
+ subsprites[id].y = 136;
id++;
subsprites[id] = sSubsprite_RedOutline7;
- subsprites[id].x = -120;
+ subsprites[id].x = 136;
subsprites[id].y = rowHeight + 128;
id++;
@@ -1297,7 +1299,7 @@ void ListMenuSetUpRedOutlineCursorSpriteOamTable(u16 rowWidth, u16 rowHeight, st
for (j = 8; j < rowHeight - 8; j += 8)
{
subsprites[id] = sSubsprite_RedOutline4;
- subsprites[id].x = -120;
+ subsprites[id].x = 136;
subsprites[id].y = j - 120;
id++;
diff --git a/src/lottery_corner.c b/src/lottery_corner.c
index 5f68ad516..2cbf0a808 100644
--- a/src/lottery_corner.c
+++ b/src/lottery_corner.c
@@ -4,7 +4,6 @@
#include "pokemon.h"
#include "constants/items.h"
#include "random.h"
-#include "constants/species.h"
#include "string_util.h"
#include "text.h"
#include "pokemon_storage_system.h"
diff --git a/src/m4a.c b/src/m4a.c
index b8f9e21c1..e079ba4f6 100644
--- a/src/m4a.c
+++ b/src/m4a.c
@@ -10,7 +10,7 @@ BSS_CODE ALIGNED(4) char SoundMainRAM_Buffer[0x800] = {0};
struct SoundInfo gSoundInfo;
struct PokemonCrySong gPokemonCrySongs[MAX_POKEMON_CRIES];
struct MusicPlayerInfo gPokemonCryMusicPlayers[MAX_POKEMON_CRIES];
-void *gMPlayJumpTable[36];
+MPlayFunc gMPlayJumpTable[36];
struct CgbChannel gCgbChans[4];
struct MusicPlayerTrack gPokemonCryTracks[MAX_POKEMON_CRIES * 2];
struct PokemonCrySong gPokemonCrySong;
@@ -22,7 +22,8 @@ u8 gMPlayMemAccArea[0x10];
u32 MidiKeyToFreq(struct WaveData *wav, u8 key, u8 fineAdjust)
{
- u32 val1, val2;
+ u32 val1;
+ u32 val2;
u32 fineAdjustShifted = fineAdjust << 24;
if (key > 178)
@@ -292,7 +293,7 @@ void MPlayExtender(struct CgbChannel *cgbChans)
gMPlayJumpTable[32] = FadeOutBody;
gMPlayJumpTable[33] = TrkVolPitSet;
- soundInfo->cgbChans = (struct CgbChannel *)cgbChans;
+ soundInfo->cgbChans = cgbChans;
soundInfo->CgbSound = CgbSound;
soundInfo->CgbOscOff = CgbOscOff;
soundInfo->MidiKeyToCgbFreq = MidiKeyToCgbFreq;
@@ -300,13 +301,13 @@ void MPlayExtender(struct CgbChannel *cgbChans)
CpuFill32(0, cgbChans, sizeof(struct CgbChannel) * 4);
- cgbChans[0].ty = 1;
+ cgbChans[0].type = 1;
cgbChans[0].panMask = 0x11;
- cgbChans[1].ty = 2;
+ cgbChans[1].type = 2;
cgbChans[1].panMask = 0x22;
- cgbChans[2].ty = 3;
+ cgbChans[2].type = 3;
cgbChans[2].panMask = 0x44;
- cgbChans[3].ty = 4;
+ cgbChans[3].type = 4;
cgbChans[3].panMask = 0x88;
soundInfo->ident = ident;
@@ -314,7 +315,7 @@ void MPlayExtender(struct CgbChannel *cgbChans)
void MusicPlayerJumpTableCopy(void)
{
- asm("svc 0x2A");
+ asm("swi 0x2A");
}
void ClearChain(void *x)
@@ -351,10 +352,10 @@ void SoundInit(struct SoundInfo *soundInfo)
| SOUND_ALL_MIX_FULL;
REG_SOUNDBIAS_H = (REG_SOUNDBIAS_H & 0x3F) | 0x40;
- REG_DMA1SAD = (u32)soundInfo->pcmBuffer;
- REG_DMA1DAD = (u32)&REG_FIFO_A;
- REG_DMA2SAD = (u32)soundInfo->pcmBuffer + PCM_DMA_BUF_SIZE;
- REG_DMA2DAD = (u32)&REG_FIFO_B;
+ REG_DMA1SAD = (s32)soundInfo->pcmBuffer;
+ REG_DMA1DAD = (s32)&REG_FIFO_A;
+ REG_DMA2SAD = (s32)soundInfo->pcmBuffer + PCM_DMA_BUF_SIZE;
+ REG_DMA2DAD = (s32)&REG_FIFO_B;
SOUND_INFO_PTR = soundInfo;
CpuFill32(0, soundInfo, sizeof(struct SoundInfo));
@@ -363,13 +364,13 @@ void SoundInit(struct SoundInfo *soundInfo)
soundInfo->masterVolume = 15;
soundInfo->plynote = ply_note;
soundInfo->CgbSound = DummyFunc;
- soundInfo->CgbOscOff = (void (*)(u8))DummyFunc;
- soundInfo->MidiKeyToCgbFreq = (u32 (*)(u8, u8, u8))DummyFunc;
- soundInfo->ExtVolPit = (void (*)(struct MusicPlayerInfo *, struct MusicPlayerTrack *))DummyFunc;
+ soundInfo->CgbOscOff = (CgbOscOffFunc)DummyFunc;
+ soundInfo->MidiKeyToCgbFreq = (MidiKeyToCgbFreqFunc)DummyFunc;
+ soundInfo->ExtVolPit = (ExtVolPitFunc)DummyFunc;
MPlayJumpTableCopy(gMPlayJumpTable);
- soundInfo->MPlayJumpTable = (void (**)())gMPlayJumpTable;
+ soundInfo->MPlayJumpTable = gMPlayJumpTable;
SampleFreqSet(SOUND_MODE_FREQ_13379);
@@ -380,7 +381,7 @@ void SampleFreqSet(u32 freq)
{
struct SoundInfo *soundInfo = SOUND_INFO_PTR;
- freq = (freq & SOUND_MODE_FREQ) >> SOUND_MODE_FREQ_SHIFT;
+ freq = (freq & 0xF0000) >> 16;
soundInfo->freq = freq;
soundInfo->pcmSamplesPerVBlank = gPcmSamplesPerVBlankTable[freq - 1];
soundInfo->pcmDmaPeriod = PCM_DMA_BUF_SIZE / soundInfo->pcmSamplesPerVBlank;
@@ -431,9 +432,14 @@ void m4aSoundMode(u32 mode)
soundInfo->maxChans = temp >> SOUND_MODE_MAXCHN_SHIFT;
- for (temp = MAX_DIRECTSOUND_CHANNELS, chan = soundInfo->chans; temp != 0; temp--,chan++)
+ temp = MAX_DIRECTSOUND_CHANNELS;
+ chan = &soundInfo->chans[0];
+
+ while (temp != 0)
{
- chan->status = 0;
+ chan->statusFlags = 0;
+ temp--;
+ chan++;
}
}
@@ -463,28 +469,37 @@ void m4aSoundMode(u32 mode)
void SoundClear(void)
{
- s32 i;
struct SoundInfo *soundInfo = SOUND_INFO_PTR;
- struct SoundChannel *chan;
+ s32 i;
+ void *chan;
if (soundInfo->ident != ID_NUMBER)
return;
soundInfo->ident++;
- for (i = MAX_DIRECTSOUND_CHANNELS, chan = soundInfo->chans; i > 0; i--,chan++)
+ i = MAX_DIRECTSOUND_CHANNELS;
+ chan = &soundInfo->chans[0];
+
+ while (i > 0)
{
- chan->status = 0;
+ ((struct SoundChannel *)chan)->statusFlags = 0;
+ i--;
+ chan = (void *)((s32)chan + sizeof(struct SoundChannel));
}
- chan = (struct SoundChannel *)soundInfo->cgbChans;
+ chan = soundInfo->cgbChans;
if (chan)
{
- for (i=1; i<=4; i++,chan++)
+ i = 1;
+
+ while (i <= 4)
{
soundInfo->CgbOscOff(i);
- chan->status = 0;
+ ((struct CgbChannel *)chan)->statusFlags = 0;
+ i++;
+ chan = (void *)((s32)chan + sizeof(struct CgbChannel));
}
}
@@ -495,20 +510,21 @@ void m4aSoundVSyncOff(void)
{
struct SoundInfo *soundInfo = SOUND_INFO_PTR;
- if (soundInfo->ident < ID_NUMBER || soundInfo->ident > ID_NUMBER + 1)
- return;
- soundInfo->ident += 10;
+ if (soundInfo->ident >= ID_NUMBER && soundInfo->ident <= ID_NUMBER + 1)
+ {
+ soundInfo->ident += 10;
- if (REG_DMA1CNT & (DMA_REPEAT << 16))
- REG_DMA1CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4;
+ if (REG_DMA1CNT & (DMA_REPEAT << 16))
+ REG_DMA1CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4;
- if (REG_DMA2CNT & (DMA_REPEAT << 16))
- REG_DMA2CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4;
+ if (REG_DMA2CNT & (DMA_REPEAT << 16))
+ REG_DMA2CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4;
- REG_DMA1CNT_H = DMA_32BIT;
- REG_DMA2CNT_H = DMA_32BIT;
+ REG_DMA1CNT_H = DMA_32BIT;
+ REG_DMA2CNT_H = DMA_32BIT;
- CpuFill32(0, soundInfo->pcmBuffer, sizeof(soundInfo->pcmBuffer));
+ CpuFill32(0, soundInfo->pcmBuffer, sizeof(soundInfo->pcmBuffer));
+ }
}
void m4aSoundVSyncOn(void)
@@ -556,15 +572,18 @@ void MPlayOpen(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track
tracks++;
}
- if (soundInfo->func != 0)
+ // append music player and MPlayMain to linked list
+
+ if (soundInfo->MPlayMainHead != NULL)
{
- mplayInfo->func = soundInfo->func;
- mplayInfo->intp = soundInfo->intp;
- soundInfo->func = 0;
+ mplayInfo->MPlayMainNext = soundInfo->MPlayMainHead;
+ mplayInfo->musicPlayerNext = soundInfo->musicPlayerHead;
+ // NULL assignment semantically useless, but required for match
+ soundInfo->MPlayMainHead = NULL;
}
- soundInfo->intp = (u32)mplayInfo;
- soundInfo->func = MPlayMain;
+ soundInfo->musicPlayerHead = mplayInfo;
+ soundInfo->MPlayMainHead = MPlayMain;
soundInfo->ident = ID_NUMBER;
mplayInfo->ident = ID_NUMBER;
}
@@ -598,18 +617,25 @@ void MPlayStart(struct MusicPlayerInfo *mplayInfo, struct SongHeader *songHeader
mplayInfo->tempoC = 0;
mplayInfo->fadeOI = 0;
- for (i = 0, track = mplayInfo->tracks; i < songHeader->trackCount && i < mplayInfo->trackCount; i++, track++)
+ i = 0;
+ track = mplayInfo->tracks;
+
+ while (i < songHeader->trackCount && i < mplayInfo->trackCount)
{
TrackStop(mplayInfo, track);
track->flags = MPT_FLG_EXIST | MPT_FLG_START;
track->chan = 0;
track->cmdPtr = songHeader->part[i];
+ i++;
+ track++;
}
- for (; i < mplayInfo->trackCount; i++, track++)
+ while (i < mplayInfo->trackCount)
{
TrackStop(mplayInfo, track);
track->flags = 0;
+ i++;
+ track++;
}
if (songHeader->reverb & SOUND_MODE_REVERB_SET)
@@ -630,9 +656,14 @@ void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo)
mplayInfo->ident++;
mplayInfo->status |= MUSICPLAYER_STATUS_PAUSE;
- for (i = mplayInfo->trackCount, track = mplayInfo->tracks; i > 0; i--, track++)
+ i = mplayInfo->trackCount;
+ track = mplayInfo->tracks;
+
+ while (i > 0)
{
TrackStop(mplayInfo, track);
+ i--;
+ track++;
}
mplayInfo->ident = ID_NUMBER;
@@ -643,28 +674,17 @@ void FadeOutBody(struct MusicPlayerInfo *mplayInfo)
s32 i;
struct MusicPlayerTrack *track;
u16 fadeOV;
-#ifdef NONMATCHING
- u16 mask;
-#else
- register u16 mask asm("r2");
-#endif // NONMATCHING
if (mplayInfo->fadeOI == 0)
return;
-
- mplayInfo->fadeOC--;
- mask = 0xFFFF;
-
- if (mplayInfo->fadeOC != 0)
+ if (--mplayInfo->fadeOC != 0)
return;
mplayInfo->fadeOC = mplayInfo->fadeOI;
if (mplayInfo->fadeOV & FADE_IN)
{
- mplayInfo->fadeOV += (4 << FADE_VOL_SHIFT);
-
- if ((u16)(mplayInfo->fadeOV & mask) >= (64 << FADE_VOL_SHIFT))
+ if ((u16)(mplayInfo->fadeOV += (4 << FADE_VOL_SHIFT)) >= (64 << FADE_VOL_SHIFT))
{
mplayInfo->fadeOV = (64 << FADE_VOL_SHIFT);
mplayInfo->fadeOI = 0;
@@ -672,12 +692,12 @@ void FadeOutBody(struct MusicPlayerInfo *mplayInfo)
}
else
{
- mplayInfo->fadeOV -= (4 << FADE_VOL_SHIFT);
-
- if ((s16)(mplayInfo->fadeOV & mask) <= 0)
+ if ((s16)(mplayInfo->fadeOV -= (4 << FADE_VOL_SHIFT)) <= 0)
{
+ i = mplayInfo->trackCount;
+ track = mplayInfo->tracks;
- for (i = mplayInfo->trackCount, track = mplayInfo->tracks; i > 0; i--, track++)
+ while (i > 0)
{
u32 val;
@@ -689,6 +709,9 @@ void FadeOutBody(struct MusicPlayerInfo *mplayInfo)
if (!val)
track->flags = 0;
+
+ i--;
+ track++;
}
if (mplayInfo->fadeOV & TEMPORARY_FADE)
@@ -701,7 +724,10 @@ void FadeOutBody(struct MusicPlayerInfo *mplayInfo)
}
}
- for (i = mplayInfo->trackCount, track = mplayInfo->tracks; i > 0; i--, track++)
+ i = mplayInfo->trackCount;
+ track = mplayInfo->tracks;
+
+ while (i > 0)
{
if (track->flags & MPT_FLG_EXIST)
{
@@ -710,6 +736,9 @@ void FadeOutBody(struct MusicPlayerInfo *mplayInfo)
track->volX = (fadeOV >> FADE_VOL_SHIFT);
track->flags |= MPT_FLG_VOLCHG;
}
+
+ i--;
+ track++;
}
}
@@ -717,7 +746,7 @@ void TrkVolPitSet(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *tr
{
if (track->flags & MPT_FLG_VOLSET)
{
- u32 x;
+ s32 x;
s32 y;
x = (u32)(track->vol * track->volX) >> 5;
@@ -858,7 +887,7 @@ void CgbModVol(struct CgbChannel *chan)
if ((soundInfo->mode & 1) || !CgbPan(chan))
{
chan->pan = 0xFF;
- chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
+ chan->envelopeGoal = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
}
else
{
@@ -869,12 +898,12 @@ void CgbModVol(struct CgbChannel *chan)
asm("" : : : "memory");
#endif
- chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
- if (chan->eg > 15)
- chan->eg = 15;
+ chan->envelopeGoal = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
+ if (chan->envelopeGoal > 15)
+ chan->envelopeGoal = 15;
}
- chan->sg = (chan->eg * chan->su + 15) >> 4;
+ chan->sustainGoal = (chan->envelopeGoal * chan->sustain + 15) >> 4;
chan->pan &= chan->panMask;
}
@@ -882,7 +911,7 @@ void CgbSound(void)
{
s32 ch;
struct CgbChannel *channels;
- s32 evAdd;
+ s32 envelopeStepTimeAndDir;
s32 prevC15;
struct SoundInfo *soundInfo = SOUND_INFO_PTR;
vu8 *nrx0ptr;
@@ -901,9 +930,10 @@ void CgbSound(void)
for (ch = 1, channels = soundInfo->cgbChans; ch <= 4; ch++, channels++)
{
- if (!(channels->sf & 0xc7))
+ if (!(channels->statusFlags & SOUND_CHANNEL_SF_ON))
continue;
+ /* 1. determine hardware channel registers */
switch (ch)
{
case 1:
@@ -937,243 +967,233 @@ void CgbSound(void)
}
prevC15 = soundInfo->c15;
- evAdd = *nrx2ptr;
+ envelopeStepTimeAndDir = *nrx2ptr;
- if (channels->sf & 0x80)
+ /* 2. calculate envelope volume */
+ if (channels->statusFlags & SOUND_CHANNEL_SF_START)
{
- if (!(channels->sf & 0x40))
+ if (!(channels->statusFlags & SOUND_CHANNEL_SF_STOP))
{
- channels->sf = 3;
- channels->mo = 3;
+ channels->statusFlags = SOUND_CHANNEL_SF_ENV_ATTACK;
+ channels->modify = CGB_CHANNEL_MO_PIT | CGB_CHANNEL_MO_VOL;
CgbModVol(channels);
switch (ch)
{
case 1:
- *nrx0ptr = channels->sw;
+ *nrx0ptr = channels->sweep;
// fallthrough
case 2:
- *nrx1ptr = ((u32)channels->wp << 6) + channels->le;
- goto loc_82E0E30;
+ *nrx1ptr = ((u32)channels->wavePointer << 6) + channels->length;
+ goto init_env_step_time_dir;
case 3:
- if ((u32)channels->wp != channels->cp)
+ if (channels->wavePointer != channels->currentPointer)
{
*nrx0ptr = 0x40;
- REG_WAVE_RAM0 = channels->wp[0];
- REG_WAVE_RAM1 = channels->wp[1];
- REG_WAVE_RAM2 = channels->wp[2];
- REG_WAVE_RAM3 = channels->wp[3];
- channels->cp = (u32)channels->wp;
+ REG_WAVE_RAM0 = channels->wavePointer[0];
+ REG_WAVE_RAM1 = channels->wavePointer[1];
+ REG_WAVE_RAM2 = channels->wavePointer[2];
+ REG_WAVE_RAM3 = channels->wavePointer[3];
+ channels->currentPointer = channels->wavePointer;
}
*nrx0ptr = 0;
- *nrx1ptr = channels->le;
- if (channels->le)
- channels->n4 = -64;
+ *nrx1ptr = channels->length;
+ if (channels->length)
+ channels->n4 = 0xC0;
else
- channels->n4 = -128;
+ channels->n4 = 0x80;
break;
default:
- *nrx1ptr = channels->le;
- *nrx3ptr = (u32)channels->wp << 3;
- loc_82E0E30:
- evAdd = channels->at + 8;
- if (channels->le)
- channels->n4 = 64;
+ *nrx1ptr = channels->length;
+ *nrx3ptr = (u32)channels->wavePointer << 3;
+ init_env_step_time_dir:
+ envelopeStepTimeAndDir = channels->attack + CGB_NRx2_ENV_DIR_INC;
+ if (channels->length)
+ channels->n4 = 0x40;
else
- channels->n4 = 0;
+ channels->n4 = 0x00;
break;
}
- channels->ec = channels->at;
- if ((s8)(channels->at & mask))
+ channels->envelopeCounter = channels->attack;
+ if ((s8)(channels->attack & mask))
{
- channels->ev = 0;
- goto EC_MINUS;
+ channels->envelopeVolume = 0;
+ goto envelope_step_complete;
}
else
{
- goto loc_82E0F96;
+ // skip attack phase if attack is instantaneous (=0)
+ goto envelope_decay_start;
}
}
else
{
- goto loc_82E0E82;
+ goto oscillator_off;
}
}
- else if (channels->sf & 0x04)
+ else if (channels->statusFlags & SOUND_CHANNEL_SF_IEC)
{
- channels->echoLength--;
- if ((s8)(channels->echoLength & mask) <= 0)
+ channels->pseudoEchoLength--;
+ if ((s8)(channels->pseudoEchoLength & mask) <= 0)
{
- loc_82E0E82:
+ oscillator_off:
CgbOscOff(ch);
- channels->sf = 0;
- goto LAST_LABEL;
+ channels->statusFlags = 0;
+ goto channel_complete;
}
- goto loc_82E0FD6;
+ goto envelope_complete;
}
- else if ((channels->sf & 0x40) && (channels->sf & 0x03))
+ else if ((channels->statusFlags & SOUND_CHANNEL_SF_STOP) && (channels->statusFlags & SOUND_CHANNEL_SF_ENV))
{
- channels->sf &= 0xfc;
- channels->ec = channels->re;
- if ((s8)(channels->re & mask))
+ channels->statusFlags &= ~SOUND_CHANNEL_SF_ENV;
+ channels->envelopeCounter = channels->release;
+ if ((s8)(channels->release & mask))
{
- channels->mo |= 1;
+ channels->modify |= CGB_CHANNEL_MO_VOL;
if (ch != 3)
- {
- evAdd = channels->re;
- }
- goto EC_MINUS;
+ envelopeStepTimeAndDir = channels->release | CGB_NRx2_ENV_DIR_DEC;
+ goto envelope_step_complete;
}
else
{
- goto loc_82E0F02;
+ goto envelope_pseudoecho_start;
}
}
else
{
- loc_82E0ED0:
- if (channels->ec == 0)
+ envelope_step_repeat:
+ if (channels->envelopeCounter == 0)
{
if (ch == 3)
- {
- channels->mo |= 1;
- }
+ channels->modify |= CGB_CHANNEL_MO_VOL;
+
CgbModVol(channels);
- if ((channels->sf & 0x3) == 0)
+ if ((channels->statusFlags & SOUND_CHANNEL_SF_ENV) == SOUND_CHANNEL_SF_ENV_RELEASE)
{
- channels->ev--;
- if ((s8)(channels->ev & mask) <= 0)
+ channels->envelopeVolume--;
+ if ((s8)(channels->envelopeVolume & mask) <= 0)
{
- loc_82E0F02:
- channels->ev = ((channels->eg * channels->echoVolume) + 0xFF) >> 8;
- if (channels->ev)
+ envelope_pseudoecho_start:
+ channels->envelopeVolume = ((channels->envelopeGoal * channels->pseudoEchoVolume) + 0xFF) >> 8;
+ if (channels->envelopeVolume)
{
- channels->sf |= 0x4;
- channels->mo |= 1;
+ channels->statusFlags |= SOUND_CHANNEL_SF_IEC;
+ channels->modify |= CGB_CHANNEL_MO_VOL;
if (ch != 3)
- {
- evAdd = 8;
- }
- goto loc_82E0FD6;
+ envelopeStepTimeAndDir = 0 | CGB_NRx2_ENV_DIR_INC;
+ goto envelope_complete;
}
else
{
- goto loc_82E0E82;
+ goto oscillator_off;
}
}
else
{
- channels->ec = channels->re;
+ channels->envelopeCounter = channels->release;
}
}
- else if ((channels->sf & 0x3) == 1)
+ else if ((channels->statusFlags & SOUND_CHANNEL_SF_ENV) == SOUND_CHANNEL_SF_ENV_SUSTAIN)
{
- loc_82E0F3A:
- channels->ev = channels->sg;
- channels->ec = 7;
+ envelope_sustain:
+ channels->envelopeVolume = channels->sustainGoal;
+ channels->envelopeCounter = 7;
}
- else if ((channels->sf & 0x3) == 2)
+ else if ((channels->statusFlags & SOUND_CHANNEL_SF_ENV) == SOUND_CHANNEL_SF_ENV_DECAY)
{
- int ev, sg;
+ int envelopeVolume, sustainGoal;
- channels->ev--;
- ev = (s8)(channels->ev & mask);
- sg = (s8)(channels->sg);
- if (ev <= sg)
+ channels->envelopeVolume--;
+ envelopeVolume = (s8)(channels->envelopeVolume & mask);
+ sustainGoal = (s8)(channels->sustainGoal);
+ if (envelopeVolume <= sustainGoal)
{
- loc_82E0F5A:
- if (channels->su == 0)
+ envelope_sustain_start:
+ if (channels->sustain == 0)
{
- channels->sf &= 0xfc;
- goto loc_82E0F02;
+ channels->statusFlags &= ~SOUND_CHANNEL_SF_ENV;
+ goto envelope_pseudoecho_start;
}
else
{
- channels->sf--;
- channels->mo |= 1;
+ channels->statusFlags--;
+ channels->modify |= CGB_CHANNEL_MO_VOL;
if (ch != 3)
- {
- evAdd = 8;
- }
- goto loc_82E0F3A;
+ envelopeStepTimeAndDir = 0 | CGB_NRx2_ENV_DIR_INC;
+ goto envelope_sustain;
}
}
else
{
- channels->ec = channels->de;
+ channels->envelopeCounter = channels->decay;
}
}
else
{
- channels->ev++;
- if ((u8)(channels->ev & mask) >= channels->eg)
+ channels->envelopeVolume++;
+ if ((u8)(channels->envelopeVolume & mask) >= channels->envelopeGoal)
{
- loc_82E0F96:
- channels->sf--;
- channels->ec = channels->de;
- if ((u8)(channels->ec & mask))
+ envelope_decay_start:
+ channels->statusFlags--;
+ channels->envelopeCounter = channels->decay;
+ if ((u8)(channels->envelopeCounter & mask))
{
- channels->mo |= 1;
- channels->ev = channels->eg;
+ channels->modify |= CGB_CHANNEL_MO_VOL;
+ channels->envelopeVolume = channels->envelopeGoal;
if (ch != 3)
- {
- evAdd = channels->de;
- }
+ envelopeStepTimeAndDir = channels->decay | CGB_NRx2_ENV_DIR_DEC;
}
else
{
- goto loc_82E0F5A;
+ goto envelope_sustain_start;
}
}
else
{
- channels->ec = channels->at;
+ channels->envelopeCounter = channels->attack;
}
}
}
}
- EC_MINUS:
- channels->ec--;
+ envelope_step_complete:
+ // every 15 frames, envelope calculation has to be done twice
+ // to keep up with the hardware envelope rate (1/64 s)
+ channels->envelopeCounter--;
if (prevC15 == 0)
{
prevC15--;
- goto loc_82E0ED0;
+ goto envelope_step_repeat;
}
- loc_82E0FD6:
- if (channels->mo & 0x2)
+ envelope_complete:
+ /* 3. apply pitch to HW registers */
+ if (channels->modify & CGB_CHANNEL_MO_PIT)
{
- if (ch < 4 && (channels->ty & 0x08))
+ if (ch < 4 && (channels->type & TONEDATA_TYPE_FIX))
{
- int biasH = REG_SOUNDBIAS_H;
+ int dac_pwm_rate = REG_SOUNDBIAS_H;
- if (biasH < 64)
- {
- channels->fr = (channels->fr + 2) & 0x7fc;
- }
- else if (biasH < 128)
- {
- channels->fr = (channels->fr + 1) & 0x7fe;
- }
+ if (dac_pwm_rate < 0x40) // if PWM rate = 32768 Hz
+ channels->frequency = (channels->frequency + 2) & 0x7fc;
+ else if (dac_pwm_rate < 0x80) // if PWM rate = 65536 Hz
+ channels->frequency = (channels->frequency + 1) & 0x7fe;
}
+
if (ch != 4)
- {
- *nrx3ptr = channels->fr;
- }
+ *nrx3ptr = channels->frequency;
else
- {
- *nrx3ptr = (*nrx3ptr & 0x08) | channels->fr;
- }
- channels->n4 = (channels->n4 & 0xC0) + (*((u8*)(&channels->fr) + 1));
+ *nrx3ptr = (*nrx3ptr & 0x08) | channels->frequency;
+ channels->n4 = (channels->n4 & 0xC0) + (*((u8*)(&channels->frequency) + 1));
*nrx4ptr = (s8)(channels->n4 & mask);
}
- if (channels->mo & 1)
+ /* 4. apply envelope & volume to HW registers */
+ if (channels->modify & CGB_CHANNEL_MO_VOL)
{
REG_NR51 = (REG_NR51 & ~channels->panMask) | channels->pan;
if (ch == 3)
{
- *nrx2ptr = gCgb3Vol[channels->ev];
+ *nrx2ptr = gCgb3Vol[channels->envelopeVolume];
if (channels->n4 & 0x80)
{
*nrx0ptr = 0x80;
@@ -1183,18 +1203,16 @@ void CgbSound(void)
}
else
{
- evAdd &= 0xf;
- *nrx2ptr = (channels->ev << 4) + evAdd;
+ envelopeStepTimeAndDir &= 0xf;
+ *nrx2ptr = (channels->envelopeVolume << 4) + envelopeStepTimeAndDir;
*nrx4ptr = channels->n4 | 0x80;
if (ch == 1 && !(*nrx0ptr & 0x08))
- {
*nrx4ptr = channels->n4 | 0x80;
- }
}
}
- LAST_LABEL:
- channels->mo = 0;
+ channel_complete:
+ channels->modify = 0;
}
}
@@ -1478,8 +1496,8 @@ void ply_memacc(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *trac
cond_true:
{
- void (*func)(struct MusicPlayerInfo *, struct MusicPlayerTrack *) = *(&gMPlayJumpTable[1]);
- func(mplayInfo, track);
+ // *& is required for matching
+ (*&gMPlayJumpTable[1])(mplayInfo, track);
return;
}
@@ -1497,8 +1515,7 @@ void ply_xcmd(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
void ply_xxx(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
{
- void (*func)(struct MusicPlayerInfo *, struct MusicPlayerTrack *) = *(&gMPlayJumpTable[0]);
- func(mplayInfo, track);
+ gMPlayJumpTable[0](mplayInfo, track);
}
#define READ_XCMD_BYTE(var, n) \
@@ -1554,13 +1571,13 @@ void ply_xrele(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track
void ply_xiecv(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
{
- track->echoVolume = *track->cmdPtr;
+ track->pseudoEchoVolume = *track->cmdPtr;
track->cmdPtr++;
}
void ply_xiecl(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
{
- track->echoLength = *track->cmdPtr;
+ track->pseudoEchoLength = *track->cmdPtr;
track->cmdPtr++;
}
diff --git a/src/m4a_1.s b/src/m4a_1.s
index eace09b05..d72336c18 100644
--- a/src/m4a_1.s
+++ b/src/m4a_1.s
@@ -22,13 +22,13 @@ SoundMain:
ldr r0, lt_SOUND_INFO_PTR
ldr r0, [r0]
ldr r2, lt_ID_NUMBER
- ldr r3, [r0, #o_SoundInfo_ident]
+ ldr r3, [r0, o_SoundInfo_ident]
cmp r2, r3
beq SoundMain_1
bx lr @ Exit the function if ident doesn't match ID_NUMBER.
SoundMain_1:
adds r3, 1
- str r3, [r0, #o_SoundInfo_ident]
+ str r3, [r0, o_SoundInfo_ident]
push {r4-r7,lr}
mov r1, r8
mov r2, r9
@@ -36,7 +36,7 @@ SoundMain_1:
mov r4, r11
push {r0-r4}
sub sp, 0x18
- ldrb r1, [r0, #o_SoundInfo_maxLines]
+ ldrb r1, [r0, o_SoundInfo_maxLines]
cmp r1, 0 @ if maxLines is 0, there is no maximum
beq SoundMain_3
ldr r2, lt_REG_VCOUNT
@@ -48,24 +48,24 @@ SoundMain_2:
adds r1, r2
SoundMain_3:
str r1, [sp, 0x14]
- ldr r3, [r0, #o_SoundInfo_func]
+ ldr r3, [r0, o_SoundInfo_MPlayMainHead]
cmp r3, 0
beq SoundMain_4
- ldr r0, [r0, #o_SoundInfo_intp]
+ ldr r0, [r0, o_SoundInfo_musicPlayerHead]
bl _081DD25E
ldr r0, [sp, 0x18]
SoundMain_4:
- ldr r3, [r0, #o_SoundInfo_CgbSound]
+ ldr r3, [r0, o_SoundInfo_CgbSound]
bl _081DD25E
ldr r0, [sp, 0x18]
- ldr r3, [r0, #o_SoundInfo_pcmSamplesPerVBlank]
+ ldr r3, [r0, o_SoundInfo_pcmSamplesPerVBlank]
mov r8, r3
ldr r5, lt_o_SoundInfo_pcmBuffer
adds r5, r0
- ldrb r4, [r0, #o_SoundInfo_pcmDmaCounter]
+ ldrb r4, [r0, o_SoundInfo_pcmDmaCounter]
subs r7, r4, 1
bls SoundMain_5
- ldrb r1, [r0, #o_SoundInfo_pcmDmaPeriod]
+ ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod]
subs r1, r7
mov r2, r8
muls r2, r1
@@ -87,7 +87,7 @@ lt_PCM_DMA_BUF_SIZE: .word PCM_DMA_BUF_SIZE
thumb_func_start SoundMainRAM
SoundMainRAM:
- ldrb r3, [r0, #o_SoundInfo_reverb]
+ ldrb r3, [r0, o_SoundInfo_reverb]
cmp r3, 0
beq SoundMainRAM_NoReverb
adr r1, SoundMainRAM_Reverb
@@ -95,7 +95,7 @@ SoundMainRAM:
.arm
SoundMainRAM_Reverb:
cmp r4, 0x2
- addeq r7, r0, #o_SoundInfo_pcmBuffer
+ addeq r7, r0, o_SoundInfo_pcmBuffer
addne r7, r5, r8
mov r4, r8
_081DCEC4:
@@ -145,14 +145,14 @@ SoundMainRAM_NoReverb_Loop:
bgt SoundMainRAM_NoReverb_Loop
_081DCF36:
ldr r4, [sp, 0x18]
- ldr r0, [r4, #o_SoundInfo_divFreq]
+ ldr r0, [r4, o_SoundInfo_divFreq]
mov r12, r0
- ldrb r0, [r4, #o_SoundInfo_maxChans]
- adds r4, #o_SoundInfo_chans
+ ldrb r0, [r4, o_SoundInfo_maxChans]
+ adds r4, o_SoundInfo_chans
SoundMainRAM_ChanLoop:
str r0, [sp, 0x4]
- ldr r3, [r4, #o_SoundChannel_wav]
+ ldr r3, [r4, o_SoundChannel_wav]
ldr r0, [sp, 0x14]
cmp r0, 0
beq _081DCF60
@@ -169,145 +169,145 @@ _081DCF54:
.pool
_081DCF60:
- ldrb r6, [r4, #o_SoundChannel_status]
- movs r0, 0xC7
+ ldrb r6, [r4, o_SoundChannel_statusFlags]
+ movs r0, SOUND_CHANNEL_SF_ON
tst r0, r6
bne _081DCF6A
b _081DD240
_081DCF6A:
- movs r0, 0x80
+ movs r0, SOUND_CHANNEL_SF_START
tst r0, r6
beq _081DCFA0
- movs r0, 0x40
+ movs r0, SOUND_CHANNEL_SF_STOP
tst r0, r6
bne _081DCFB0
- movs r6, 0x3
- strb r6, [r4, #o_SoundChannel_status]
+ movs r6, SOUND_CHANNEL_SF_ENV_ATTACK
+ strb r6, [r4, o_SoundChannel_statusFlags]
adds r0, r3, 0
- adds r0, 0x10
- ldr r1, [r4, #o_SoundChannel_ct]
+ adds r0, o_WaveData_data
+ ldr r1, [r4, o_SoundChannel_count]
adds r0, r1
- str r0, [r4, #o_SoundChannel_cp]
- ldr r0, [r3, 0xC]
+ str r0, [r4, o_SoundChannel_currentPointer]
+ ldr r0, [r3, o_WaveData_size]
subs r0, r1
- str r0, [r4, #o_SoundChannel_ct]
+ str r0, [r4, o_SoundChannel_count]
movs r5, 0
- strb r5, [r4, #o_SoundChannel_ev]
- str r5, [r4, #o_SoundChannel_fw]
- ldrb r2, [r3, 0x3]
- movs r0, 0xC0
+ strb r5, [r4, o_SoundChannel_envelopeVolume]
+ str r5, [r4, o_SoundChannel_fw]
+ ldrb r2, [r3, o_WaveData_flags]
+ movs r0, WAVE_DATA_FLAG_LOOP
tst r0, r2
beq _081DCFF8
- movs r0, 0x10
+ movs r0, SOUND_CHANNEL_SF_LOOP
orrs r6, r0
- strb r6, [r4, #o_SoundChannel_status]
+ strb r6, [r4, o_SoundChannel_statusFlags]
b _081DCFF8
_081DCFA0:
- ldrb r5, [r4, #o_SoundChannel_ev]
- movs r0, 0x4
+ ldrb r5, [r4, o_SoundChannel_envelopeVolume]
+ movs r0, SOUND_CHANNEL_SF_IEC
tst r0, r6
beq _081DCFB6
- ldrb r0, [r4, #o_SoundChannel_iel]
+ ldrb r0, [r4, o_SoundChannel_pseudoEchoLength]
subs r0, 1
- strb r0, [r4, #o_SoundChannel_iel]
+ strb r0, [r4, o_SoundChannel_pseudoEchoLength]
bhi _081DD006
_081DCFB0:
movs r0, 0
- strb r0, [r4, #o_SoundChannel_status]
+ strb r0, [r4, o_SoundChannel_statusFlags]
b _081DD240
_081DCFB6:
- movs r0, 0x40
+ movs r0, SOUND_CHANNEL_SF_STOP
tst r0, r6
beq _081DCFD6
- ldrb r0, [r4, #o_SoundChannel_release]
+ ldrb r0, [r4, o_SoundChannel_release]
muls r5, r0
lsrs r5, 8
- ldrb r0, [r4, #o_SoundChannel_iev]
+ ldrb r0, [r4, o_SoundChannel_pseudoEchoVolume]
cmp r5, r0
bhi _081DD006
_081DCFC8:
- ldrb r5, [r4, #o_SoundChannel_iev]
+ ldrb r5, [r4, o_SoundChannel_pseudoEchoVolume]
cmp r5, 0
beq _081DCFB0
- movs r0, 0x4
+ movs r0, SOUND_CHANNEL_SF_IEC
orrs r6, r0
- strb r6, [r4, #o_SoundChannel_status]
+ strb r6, [r4, o_SoundChannel_statusFlags]
b _081DD006
_081DCFD6:
- movs r2, 0x3
+ movs r2, SOUND_CHANNEL_SF_ENV
ands r2, r6
- cmp r2, 0x2
+ cmp r2, SOUND_CHANNEL_SF_ENV_DECAY
bne _081DCFF4
- ldrb r0, [r4, #o_SoundChannel_decay]
+ ldrb r0, [r4, o_SoundChannel_decay]
muls r5, r0
lsrs r5, 8
- ldrb r0, [r4, #o_SoundChannel_sustain]
+ ldrb r0, [r4, o_SoundChannel_sustain]
cmp r5, r0
bhi _081DD006
adds r5, r0, 0
beq _081DCFC8
subs r6, 0x1
- strb r6, [r4, #o_SoundChannel_status]
+ strb r6, [r4, o_SoundChannel_statusFlags]
b _081DD006
_081DCFF4:
- cmp r2, 0x3
+ cmp r2, SOUND_CHANNEL_SF_ENV_ATTACK
bne _081DD006
_081DCFF8:
- ldrb r0, [r4, #o_SoundChannel_attack]
+ ldrb r0, [r4, o_SoundChannel_attack]
adds r5, r0
cmp r5, 0xFF
bcc _081DD006
movs r5, 0xFF
subs r6, 0x1
- strb r6, [r4, #o_SoundChannel_status]
+ strb r6, [r4, o_SoundChannel_statusFlags]
_081DD006:
- strb r5, [r4, #o_SoundChannel_ev]
+ strb r5, [r4, o_SoundChannel_envelopeVolume]
ldr r0, [sp, 0x18]
- ldrb r0, [r0, #o_SoundChannel_release]
+ ldrb r0, [r0, o_SoundChannel_release]
adds r0, 0x1
muls r0, r5
lsrs r5, r0, 4
- ldrb r0, [r4, #o_SoundChannel_rightVolume]
+ ldrb r0, [r4, o_SoundChannel_rightVolume]
muls r0, r5
lsrs r0, 8
- strb r0, [r4, #o_SoundChannel_er]
- ldrb r0, [r4, #o_SoundChannel_leftVolume]
+ strb r0, [r4, o_SoundChannel_envelopeVolumeRight]
+ ldrb r0, [r4, o_SoundChannel_leftVolume]
muls r0, r5
lsrs r0, 8
- strb r0, [r4, #o_SoundChannel_el]
- movs r0, 0x10
+ strb r0, [r4, o_SoundChannel_envelopeVolumeLeft]
+ movs r0, SOUND_CHANNEL_SF_LOOP
ands r0, r6
str r0, [sp, 0x10]
beq _081DD03A
adds r0, r3, 0
- adds r0, 0x10
- ldr r1, [r3, 0x8]
+ adds r0, o_WaveData_data
+ ldr r1, [r3, o_WaveData_loopStart]
adds r0, r1
str r0, [sp, 0xC]
- ldr r0, [r3, 0xC]
+ ldr r0, [r3, o_WaveData_size]
subs r0, r1
str r0, [sp, 0x10]
_081DD03A:
ldr r5, [sp, 0x8]
- ldr r2, [r4, #o_SoundChannel_ct]
- ldr r3, [r4, #o_SoundChannel_cp]
+ ldr r2, [r4, o_SoundChannel_count]
+ ldr r3, [r4, o_SoundChannel_currentPointer]
adr r0, _081DD044
bx r0
.arm
_081DD044:
str r8, [sp]
- ldr r9, [r4, #o_SoundChannel_fw]
- ldrb r10, [r4, #o_SoundChannel_er]
- ldrb r11, [r4, #o_SoundChannel_el]
- ldrb r0, [r4, #o_SoundChannel_type]
- tst r0, 0x30
+ ldr r9, [r4, o_SoundChannel_fw]
+ ldrb r10, [r4, o_SoundChannel_envelopeVolumeRight]
+ ldrb r11, [r4, o_SoundChannel_envelopeVolumeLeft]
+ ldrb r0, [r4, o_SoundChannel_type]
+ tst r0, TONEDATA_TYPE_CMP | TONEDATA_TYPE_REV
beq _081DD068
bl sub_82DF49C
b _081DD228
_081DD068:
mov r10, r10, lsl 16
mov r11, r11, lsl 16
- ldrb r0, [r4, #o_SoundChannel_type]
+ ldrb r0, [r4, o_SoundChannel_type]
tst r0, 0x8
beq _081DD19C
_081DD07C:
@@ -324,7 +324,7 @@ _081DD07C:
moveq r2, 0x4
_081DD0A8:
ldr r6, [r5]
- ldr r7, [r5, 0x630]
+ ldr r7, [r5, PCM_DMA_BUF_SIZE]
_081DD0B0:
ldrsb r0, [r3], 0x1
mul r1, r10, r0
@@ -335,7 +335,7 @@ _081DD0B0:
add r7, r1, r7, ror 8
adds r5, r5, 0x40000000
bcc _081DD0B0
- str r7, [r5, 0x630]
+ str r7, [r5, PCM_DMA_BUF_SIZE]
str r6, [r5], 0x4
subs r8, r8, 0x4
bgt _081DD0A8
@@ -343,7 +343,7 @@ _081DD0B0:
beq _081DD22C
_081DD0EC:
ldr r6, [r5]
- ldr r7, [r5, 0x630]
+ ldr r7, [r5, PCM_DMA_BUF_SIZE]
_081DD0F4:
ldrsb r0, [r3], 0x1
mul r1, r10, r0
@@ -357,7 +357,7 @@ _081DD0F4:
_081DD118:
adds r5, r5, 0x40000000
bcc _081DD0F4
- str r7, [r5, 0x630]
+ str r7, [r5, PCM_DMA_BUF_SIZE]
str r6, [r5], 0x4
subs r8, r8, 0x4
bgt _081DD07C
@@ -383,26 +383,26 @@ _081DD164:
ldrne r3, [sp, 0xC]
bne _081DD118
_081DD174:
- strb r2, [r4, #o_SoundChannel_status]
+ strb r2, [r4, o_SoundChannel_statusFlags]
mov r0, r5, lsr 30
bic r5, r5, 0xC0000000
rsb r0, r0, 0x3
mov r0, r0, lsl 3
mov r6, r6, ror r0
mov r7, r7, ror r0
- str r7, [r5, 0x630]
+ str r7, [r5, PCM_DMA_BUF_SIZE]
str r6, [r5], 0x4
b _081DD234
_081DD19C:
push {r4,r12}
- ldr r1, [r4, #o_SoundChannel_freq]
+ ldr r1, [r4, o_SoundChannel_frequency]
mul r4, r12, r1
ldrsb r0, [r3]
ldrsb r1, [r3, 0x1]!
sub r1, r1, r0
_081DD1B4:
ldr r6, [r5]
- ldr r7, [r5, 0x630]
+ ldr r7, [r5, PCM_DMA_BUF_SIZE]
_081DD1BC:
mul lr, r9, r1
add lr, r0, lr, asr 23
@@ -427,17 +427,17 @@ _081DD1FC:
_081DD208:
adds r5, r5, 0x40000000
bcc _081DD1BC
- str r7, [r5, 0x630]
+ str r7, [r5, PCM_DMA_BUF_SIZE]
str r6, [r5], 0x4
subs r8, r8, 0x4
bgt _081DD1B4
sub r3, r3, 0x1
pop {r4,r12}
_081DD228:
- str r9, [r4, #o_SoundChannel_fw]
+ str r9, [r4, o_SoundChannel_fw]
_081DD22C:
- str r2, [r4, #o_SoundChannel_ct]
- str r3, [r4, #o_SoundChannel_cp]
+ str r2, [r4, o_SoundChannel_count]
+ str r3, [r4, o_SoundChannel_currentPointer]
_081DD234:
ldr r8, [sp]
add r0, pc, 0x1
@@ -467,43 +467,43 @@ _081DD25E:
arm_func_start sub_82DF49C
sub_82DF49C:
- ldr r6, [r4, #o_SoundChannel_wav]
- ldrb r0, [r4, #o_SoundChannel_status]
- tst r0, 0x20
+ ldr r6, [r4, o_SoundChannel_wav]
+ ldrb r0, [r4, o_SoundChannel_statusFlags]
+ tst r0, SOUND_CHANNEL_SF_SPECIAL
bne _081DD2B4
- orr r0, r0, 0x20
- strb r0, [r4, #o_SoundChannel_status]
- ldrb r0, [r4, #o_SoundChannel_type]
- tst r0, 0x10
+ orr r0, r0, SOUND_CHANNEL_SF_SPECIAL
+ strb r0, [r4, o_SoundChannel_statusFlags]
+ ldrb r0, [r4, o_SoundChannel_type]
+ tst r0, TONEDATA_TYPE_REV
beq _081DD29C
- ldr r1, [r6, 0xC]
+ ldr r1, [r6, o_WaveData_size]
add r1, r1, r6, lsl 1
add r1, r1, 0x20
sub r3, r1, r3
- str r3, [r4, #o_SoundChannel_cp]
+ str r3, [r4, o_SoundChannel_currentPointer]
_081DD29C:
- ldrh r0, [r6]
+ ldrh r0, [r6, o_WaveData_type]
cmp r0, 0
beq _081DD2B4
sub r3, r3, r6
sub r3, r3, 0x10
- str r3, [r4, #o_SoundChannel_cp]
+ str r3, [r4, o_SoundChannel_currentPointer]
_081DD2B4:
push {r8,r12,lr}
mov r10, r10, lsl 16
mov r11, r11, lsl 16
- ldr r1, [r4, #o_SoundChannel_freq]
- ldrb r0, [r4, #o_SoundChannel_type]
- tst r0, 0x8
+ ldr r1, [r4, o_SoundChannel_frequency]
+ ldrb r0, [r4, o_SoundChannel_type]
+ tst r0, TONEDATA_TYPE_FIX
movne r8, 0x800000
muleq r8, r12, r1
- ldrh r0, [r6]
+ ldrh r0, [r6, o_WaveData_type]
cmp r0, 0
beq _081DD468
mov r0, 0xFF000000
- str r0, [r4, #o_SoundChannel_xpi]
- ldrb r0, [r4, #o_SoundChannel_type]
- tst r0, 0x10
+ str r0, [r4, o_SoundChannel_xpi]
+ ldrb r0, [r4, o_SoundChannel_type]
+ tst r0, TONEDATA_TYPE_REV
bne _081DD3C0
bl sub_82DF758
mov r0, r1
@@ -512,7 +512,7 @@ _081DD2B4:
sub r1, r1, r0
_081DD308:
ldr r6, [r5]
- ldr r7, [r5, 0x630]
+ ldr r7, [r5, PCM_DMA_BUF_SIZE]
_081DD310:
mul lr, r9, r1
add lr, r0, lr, asr 23
@@ -543,7 +543,7 @@ _081DD364:
_081DD370:
adds r5, r5, 0x40000000
bcc _081DD310
- str r7, [r5, 0x630]
+ str r7, [r5, PCM_DMA_BUF_SIZE]
str r6, [r5], 0x4
ldr r6, [sp]
subs r6, r6, 0x4
@@ -555,8 +555,8 @@ _081DD398:
ldr r0, [sp, 0x1C]
cmp r0, 0
beq _081DD4F4
- ldr r3, [r4, #o_SoundChannel_wav]
- ldr r3, [r3, 0x8]
+ ldr r3, [r4, o_SoundChannel_wav]
+ ldr r3, [r3, o_WaveData_loopStart]
rsb lr, r2, 0
_081DD3B0:
adds r2, r2, r0
@@ -572,7 +572,7 @@ _081DD3C0:
sub r1, r1, r0
_081DD3D8:
ldr r6, [r5]
- ldr r7, [r5, 0x630]
+ ldr r7, [r5, PCM_DMA_BUF_SIZE]
_081DD3E0:
mul lr, r9, r1
add lr, r0, lr, asr 23
@@ -603,7 +603,7 @@ _081DD434:
_081DD440:
adds r5, r5, 0x40000000
bcc _081DD3E0
- str r7, [r5, 0x630]
+ str r7, [r5, PCM_DMA_BUF_SIZE]
str r6, [r5], 0x4
ldr r6, [sp]
subs r6, r6, 0x4
@@ -612,8 +612,8 @@ _081DD440:
add r3, r3, 0x2
b _081DD4F0
_081DD468:
- ldrb r0, [r4, #o_SoundChannel_type]
- tst r0, 0x10
+ ldrb r0, [r4, o_SoundChannel_type]
+ tst r0, TONEDATA_TYPE_REV
beq _081DD4F0
ldrsb r0, [r3, -0x1]!
ldrsb r1, [r3, -0x1]
@@ -653,7 +653,7 @@ _081DD4F0:
pop {r8,r12,pc}
_081DD4F4:
mov r2, 0
- strb r2, [r4, #o_SoundChannel_status]
+ strb r2, [r4, o_SoundChannel_statusFlags]
mov r0, r5, lsr 30
bic r5, r5, 0xC0000000
rsb r0, r0, 0x3
@@ -669,13 +669,13 @@ _081DD4F4:
sub_82DF758:
push {r0,r2,r5-r7,lr}
mov r0, r3, lsr 6
- ldr r1, [r4, #o_SoundChannel_xpi]
+ ldr r1, [r4, o_SoundChannel_xpi]
cmp r0, r1
beq _081DD594
- str r0, [r4, #o_SoundChannel_xpi]
+ str r0, [r4, o_SoundChannel_xpi]
mov r1, 0x21
mul r2, r1, r0
- ldr r1, [r4, #o_SoundChannel_wav]
+ ldr r1, [r4, o_SoundChannel_wav]
add r2, r2, r1
add r2, r2, 0x10
ldr r5, =gUnknown_03001300
@@ -723,24 +723,24 @@ SoundMainBTM:
thumb_func_start RealClearChain
RealClearChain:
- ldr r3, [r0, 0x2C]
+ ldr r3, [r0, o_SoundChannel_track]
cmp r3, 0
beq _081DD5E2
- ldr r1, [r0, 0x34]
- ldr r2, [r0, 0x30]
+ ldr r1, [r0, o_SoundChannel_nextChannelPointer]
+ ldr r2, [r0, o_SoundChannel_prevChannelPointer]
cmp r2, 0
beq _081DD5D6
- str r1, [r2, 0x34]
+ str r1, [r2, o_SoundChannel_nextChannelPointer]
b _081DD5D8
_081DD5D6:
- str r1, [r3, 0x20]
+ str r1, [r3, o_MusicPlayerTrack_chan]
_081DD5D8:
cmp r1, 0
beq _081DD5DE
- str r2, [r1, 0x30]
+ str r2, [r1, o_SoundChannel_prevChannelPointer]
_081DD5DE:
movs r1, 0
- str r1, [r0, 0x2C]
+ str r1, [r0, o_SoundChannel_track]
_081DD5E2:
bx lr
thumb_func_end RealClearChain
@@ -749,26 +749,26 @@ _081DD5E2:
ply_fine:
push {r4,r5,lr}
adds r5, r1, 0
- ldr r4, [r5, #o_MusicPlayerTrack_chan]
+ ldr r4, [r5, o_MusicPlayerTrack_chan]
cmp r4, 0
beq ply_fine_done
ply_fine_loop:
- ldrb r1, [r4]
- movs r0, 0xC7
+ ldrb r1, [r4, o_SoundChannel_statusFlags]
+ movs r0, SOUND_CHANNEL_SF_ON
tst r0, r1
beq ply_fine_ok
- movs r0, 0x40
+ movs r0, SOUND_CHANNEL_SF_STOP
orrs r1, r0
- strb r1, [r4]
+ strb r1, [r4, o_SoundChannel_statusFlags]
ply_fine_ok:
adds r0, r4, 0
bl RealClearChain
- ldr r4, [r4, 0x34]
+ ldr r4, [r4, o_SoundChannel_nextChannelPointer]
cmp r4, 0
bne ply_fine_loop
ply_fine_done:
movs r0, 0
- strb r0, [r5]
+ strb r0, [r5, o_MusicPlayerTrack_flags]
pop {r4,r5}
pop {r0}
bx r0
@@ -818,10 +818,10 @@ lt_MPlayJumpTableTemplate: .word gMPlayJumpTableTemplate
thumb_func_start ld_r3_tp_adr_i
ld_r3_tp_adr_i:
- ldr r2, [r1, 0x40]
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
_081DD64A:
adds r3, r2, 0x1
- str r3, [r1, 0x40]
+ str r3, [r1, o_MusicPlayerTrack_cmdPtr]
ldrb r3, [r2]
b chk_adr_r2
thumb_func_end ld_r3_tp_adr_i
@@ -830,7 +830,7 @@ _081DD64A:
ply_goto:
push {lr}
ply_goto_1:
- ldr r2, [r1, #o_MusicPlayerTrack_cmdPtr]
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
ldrb r0, [r2, 0x3]
lsls r0, 8
ldrb r3, [r2, 0x2]
@@ -841,24 +841,24 @@ ply_goto_1:
lsls r0, 8
bl ldrb_r3_r2
orrs r0, r3
- str r0, [r1, #o_MusicPlayerTrack_cmdPtr]
+ str r0, [r1, o_MusicPlayerTrack_cmdPtr]
pop {r0}
bx r0
thumb_func_end ply_goto
thumb_func_start ply_patt
ply_patt:
- ldrb r2, [r1, #o_MusicPlayerTrack_patternLevel]
+ ldrb r2, [r1, o_MusicPlayerTrack_patternLevel]
cmp r2, 3
bhs ply_patt_done
lsls r2, 2
adds r3, r1, r2
- ldr r2, [r1, #o_MusicPlayerTrack_cmdPtr]
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
adds r2, 0x4
- str r2, [r3, #o_MusicPlayerTrack_patternStack]
- ldrb r2, [r1, #o_MusicPlayerTrack_patternLevel]
+ str r2, [r3, o_MusicPlayerTrack_patternStack]
+ ldrb r2, [r1, o_MusicPlayerTrack_patternLevel]
adds r2, 1
- strb r2, [r1, #o_MusicPlayerTrack_patternLevel]
+ strb r2, [r1, o_MusicPlayerTrack_patternLevel]
b ply_goto
ply_patt_done:
b ply_fine
@@ -866,15 +866,15 @@ ply_patt_done:
thumb_func_start ply_pend
ply_pend:
- ldrb r2, [r1, #o_MusicPlayerTrack_patternLevel]
+ ldrb r2, [r1, o_MusicPlayerTrack_patternLevel]
cmp r2, 0
beq ply_pend_done
subs r2, 1
- strb r2, [r1, #o_MusicPlayerTrack_patternLevel]
+ strb r2, [r1, o_MusicPlayerTrack_patternLevel]
lsls r2, 2
adds r3, r1, r2
- ldr r2, [r3, #o_MusicPlayerTrack_patternStack]
- str r2, [r1, #o_MusicPlayerTrack_cmdPtr]
+ ldr r2, [r3, o_MusicPlayerTrack_patternStack]
+ str r2, [r1, o_MusicPlayerTrack_cmdPtr]
ply_pend_done:
bx lr
thumb_func_end ply_pend
@@ -882,17 +882,17 @@ ply_pend_done:
thumb_func_start ply_rept
ply_rept:
push {lr}
- ldr r2, [r1, #o_MusicPlayerTrack_cmdPtr]
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
ldrb r3, [r2]
cmp r3, 0
bne ply_rept_1
adds r2, 1
- str r2, [r1, #o_MusicPlayerTrack_cmdPtr]
+ str r2, [r1, o_MusicPlayerTrack_cmdPtr]
b ply_goto_1
ply_rept_1:
- ldrb r3, [r1, #o_MusicPlayerTrack_repN]
+ ldrb r3, [r1, o_MusicPlayerTrack_repN]
adds r3, 1
- strb r3, [r1, #o_MusicPlayerTrack_repN]
+ strb r3, [r1, o_MusicPlayerTrack_repN]
mov r12, r3
bl ld_r3_tp_adr_i
cmp r12, r3
@@ -900,9 +900,9 @@ ply_rept_1:
b ply_goto_1
ply_rept_2:
movs r3, 0
- strb r3, [r1, #o_MusicPlayerTrack_repN]
+ strb r3, [r1, o_MusicPlayerTrack_repN]
adds r2, 5
- str r2, [r1, #o_MusicPlayerTrack_cmdPtr]
+ str r2, [r1, o_MusicPlayerTrack_cmdPtr]
pop {r0}
bx r0
thumb_func_end ply_rept
@@ -911,7 +911,7 @@ ply_rept_2:
ply_prio:
mov r12, lr
bl ld_r3_tp_adr_i
- strb r3, [r1, #o_MusicPlayerTrack_priority]
+ strb r3, [r1, o_MusicPlayerTrack_priority]
bx r12
thumb_func_end ply_prio
@@ -920,11 +920,11 @@ ply_tempo:
mov r12, lr
bl ld_r3_tp_adr_i
lsls r3, 1
- strh r3, [r0, #o_MusicPlayerInfo_tempoD]
- ldrh r2, [r0, #o_MusicPlayerInfo_tempoU]
+ strh r3, [r0, o_MusicPlayerInfo_tempoD]
+ ldrh r2, [r0, o_MusicPlayerInfo_tempoU]
muls r3, r2
lsrs r3, 8
- strh r3, [r0, #o_MusicPlayerInfo_tempoI]
+ strh r3, [r0, o_MusicPlayerInfo_tempoI]
bx r12
thumb_func_end ply_tempo
@@ -932,35 +932,35 @@ ply_tempo:
ply_keysh:
mov r12, lr
bl ld_r3_tp_adr_i
- strb r3, [r1, #o_MusicPlayerTrack_keyShift]
- ldrb r3, [r1, #o_MusicPlayerTrack_flags]
+ strb r3, [r1, o_MusicPlayerTrack_keyShift]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
movs r2, 0xC
orrs r3, r2
- strb r3, [r1, #o_MusicPlayerTrack_flags]
+ strb r3, [r1, o_MusicPlayerTrack_flags]
bx r12
thumb_func_end ply_keysh
thumb_func_start ply_voice
ply_voice:
mov r12, lr
- ldr r2, [r1, #o_MusicPlayerTrack_cmdPtr]
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
ldrb r3, [r2]
adds r2, 1
- str r2, [r1, #o_MusicPlayerTrack_cmdPtr]
+ str r2, [r1, o_MusicPlayerTrack_cmdPtr]
lsls r2, r3, 1
adds r2, r3
lsls r2, 2
- ldr r3, [r0, #o_MusicPlayerInfo_tone]
+ ldr r3, [r0, o_MusicPlayerInfo_tone]
adds r2, r3
- ldr r3, [r2]
+ ldr r3, [r2, o_ToneData_type]
bl chk_adr_r2
- str r3, [r1, #o_MusicPlayerTrack_ToneData_type]
- ldr r3, [r2, 0x4]
+ str r3, [r1, o_MusicPlayerTrack_ToneData_type]
+ ldr r3, [r2, o_ToneData_wav]
bl chk_adr_r2
- str r3, [r1, #o_MusicPlayerTrack_ToneData_wav]
- ldr r3, [r2, 0x8]
+ str r3, [r1, o_MusicPlayerTrack_ToneData_wav]
+ ldr r3, [r2, o_ToneData_attack]
bl chk_adr_r2
- str r3, [r1, #o_MusicPlayerTrack_ToneData_attack]
+ str r3, [r1, o_MusicPlayerTrack_ToneData_attack]
bx r12
thumb_func_end ply_voice
@@ -968,11 +968,11 @@ ply_voice:
ply_vol:
mov r12, lr
bl ld_r3_tp_adr_i
- strb r3, [r1, #o_MusicPlayerTrack_vol]
- ldrb r3, [r1, #o_MusicPlayerTrack_flags]
- movs r2, 0x3
+ strb r3, [r1, o_MusicPlayerTrack_vol]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, MPT_FLG_VOLCHG
orrs r3, r2
- strb r3, [r1, #o_MusicPlayerTrack_flags]
+ strb r3, [r1, o_MusicPlayerTrack_flags]
bx r12
thumb_func_end ply_vol
@@ -980,12 +980,12 @@ ply_vol:
ply_pan:
mov r12, lr
bl ld_r3_tp_adr_i
- subs r3, 0x40
- strb r3, [r1, #o_MusicPlayerTrack_pan]
- ldrb r3, [r1, #o_MusicPlayerTrack_flags]
- movs r2, 0x3
+ subs r3, C_V
+ strb r3, [r1, o_MusicPlayerTrack_pan]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, MPT_FLG_VOLCHG
orrs r3, r2
- strb r3, [r1, #o_MusicPlayerTrack_flags]
+ strb r3, [r1, o_MusicPlayerTrack_flags]
bx r12
thumb_func_end ply_pan
@@ -993,12 +993,12 @@ ply_pan:
ply_bend:
mov r12, lr
bl ld_r3_tp_adr_i
- subs r3, 0x40
- strb r3, [r1, #o_MusicPlayerTrack_bend]
- ldrb r3, [r1, #o_MusicPlayerTrack_flags]
- movs r2, 0xC
+ subs r3, C_V
+ strb r3, [r1, o_MusicPlayerTrack_bend]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, MPT_FLG_PITCHG
orrs r3, r2
- strb r3, [r1, #o_MusicPlayerTrack_flags]
+ strb r3, [r1, o_MusicPlayerTrack_flags]
bx r12
thumb_func_end ply_bend
@@ -1006,11 +1006,11 @@ ply_bend:
ply_bendr:
mov r12, lr
bl ld_r3_tp_adr_i
- strb r3, [r1, #o_MusicPlayerTrack_bendRange]
- ldrb r3, [r1, #o_MusicPlayerTrack_flags]
- movs r2, 0xC
+ strb r3, [r1, o_MusicPlayerTrack_bendRange]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, MPT_FLG_PITCHG
orrs r3, r2
- strb r3, [r1, #o_MusicPlayerTrack_flags]
+ strb r3, [r1, o_MusicPlayerTrack_flags]
bx r12
thumb_func_end ply_bendr
@@ -1018,7 +1018,7 @@ ply_bendr:
ply_lfodl:
mov r12, lr
bl ld_r3_tp_adr_i
- strb r3, [r1, #o_MusicPlayerTrack_lfoDelay]
+ strb r3, [r1, o_MusicPlayerTrack_lfoDelay]
bx r12
thumb_func_end ply_lfodl
@@ -1026,14 +1026,14 @@ ply_lfodl:
ply_modt:
mov r12, lr
bl ld_r3_tp_adr_i
- ldrb r0, [r1, #o_MusicPlayerTrack_modT]
+ ldrb r0, [r1, o_MusicPlayerTrack_modT]
cmp r0, r3
beq _081DD7AA
- strb r3, [r1, #o_MusicPlayerTrack_modT]
- ldrb r3, [r1, #o_MusicPlayerTrack_flags]
- movs r2, 0xF
+ strb r3, [r1, o_MusicPlayerTrack_modT]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, MPT_FLG_VOLCHG | MPT_FLG_PITCHG
orrs r3, r2
- strb r3, [r1, #o_MusicPlayerTrack_flags]
+ strb r3, [r1, o_MusicPlayerTrack_flags]
_081DD7AA:
bx r12
thumb_func_end ply_modt
@@ -1042,19 +1042,19 @@ _081DD7AA:
ply_tune:
mov r12, lr
bl ld_r3_tp_adr_i
- subs r3, 0x40
- strb r3, [r1, #o_MusicPlayerTrack_tune]
- ldrb r3, [r1, #o_MusicPlayerTrack_flags]
- movs r2, 0xC
+ subs r3, C_V
+ strb r3, [r1, o_MusicPlayerTrack_tune]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
+ movs r2, MPT_FLG_PITCHG
orrs r3, r2
- strb r3, [r1, #o_MusicPlayerTrack_flags]
+ strb r3, [r1, o_MusicPlayerTrack_flags]
bx r12
thumb_func_end ply_tune
thumb_func_start ply_port
ply_port:
mov r12, lr
- ldr r2, [r1, #o_MusicPlayerTrack_cmdPtr]
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
ldrb r3, [r2]
adds r2, 1
ldr r0, =REG_SOUND1CNT_L @ sound register base address
@@ -1072,20 +1072,20 @@ m4aSoundVSync:
@ Exit the function if ident is not ID_NUMBER or ID_NUMBER+1.
ldr r2, lt2_ID_NUMBER
- ldr r3, [r0, #o_SoundInfo_ident]
+ ldr r3, [r0, o_SoundInfo_ident]
subs r3, r2
cmp r3, 1
bhi m4aSoundVSync_Done
@ Decrement the PCM DMA counter. If it reaches 0, we need to do a DMA.
- ldrb r1, [r0, #o_SoundInfo_pcmDmaCounter]
+ ldrb r1, [r0, o_SoundInfo_pcmDmaCounter]
subs r1, 1
- strb r1, [r0, #o_SoundInfo_pcmDmaCounter]
+ strb r1, [r0, o_SoundInfo_pcmDmaCounter]
bgt m4aSoundVSync_Done
@ Reload the PCM DMA counter.
- ldrb r1, [r0, #o_SoundInfo_pcmDmaPeriod]
- strb r1, [r0, #o_SoundInfo_pcmDmaCounter]
+ ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod]
+ strb r1, [r0, o_SoundInfo_pcmDmaCounter]
ldr r2, =REG_DMA1
@@ -1127,18 +1127,18 @@ m4aSoundVSync_Done:
thumb_func_start MPlayMain
MPlayMain:
ldr r2, lt2_ID_NUMBER
- ldr r3, [r0, #o_MusicPlayerInfo_ident]
+ ldr r3, [r0, o_MusicPlayerInfo_ident]
cmp r2, r3
beq _081DD82E
bx lr
_081DD82E:
adds r3, 0x1
- str r3, [r0, #o_MusicPlayerInfo_ident]
+ str r3, [r0, o_MusicPlayerInfo_ident]
push {r0,lr}
- ldr r3, [r0, #o_MusicPlayerInfo_func]
+ ldr r3, [r0, o_MusicPlayerInfo_func]
cmp r3, 0
beq _081DD840
- ldr r0, [r0, #o_MusicPlayerInfo_intp]
+ ldr r0, [r0, o_MusicPlayerInfo_intp]
bl call_r3
_081DD840:
pop {r0}
@@ -1149,7 +1149,7 @@ _081DD840:
mov r7, r11
push {r4-r7}
adds r7, r0, 0
- ldr r0, [r7, #o_MusicPlayerInfo_status]
+ ldr r0, [r7, o_MusicPlayerInfo_status]
cmp r0, 0
bge _081DD858
b _081DDA6C
@@ -1159,23 +1159,23 @@ _081DD858:
mov r8, r0
adds r0, r7, 0
bl FadeOutBody
- ldr r0, [r7, #o_MusicPlayerInfo_status]
+ ldr r0, [r7, o_MusicPlayerInfo_status]
cmp r0, 0
bge _081DD86C
b _081DDA6C
_081DD86C:
- ldrh r0, [r7, #o_MusicPlayerInfo_tempoC]
- ldrh r1, [r7, #o_MusicPlayerInfo_tempoI]
+ ldrh r0, [r7, o_MusicPlayerInfo_tempoC]
+ ldrh r1, [r7, o_MusicPlayerInfo_tempoI]
adds r0, r1
b _081DD9BC
_081DD874:
- ldrb r6, [r7, #o_MusicPlayerInfo_trackCount]
- ldr r5, [r7, #o_MusicPlayerInfo_tracks]
+ ldrb r6, [r7, o_MusicPlayerInfo_trackCount]
+ ldr r5, [r7, o_MusicPlayerInfo_tracks]
movs r3, 0x1
movs r4, 0
_081DD87C:
- ldrb r0, [r5]
- movs r1, 0x80
+ ldrb r0, [r5, o_MusicPlayerTrack_flags]
+ movs r1, MPT_FLG_EXIST
tst r1, r0
bne _081DD886
b _081DD998
@@ -1183,68 +1183,68 @@ _081DD886:
mov r10, r3
orrs r4, r3
mov r11, r4
- ldr r4, [r5, #o_MusicPlayerTrack_chan]
+ ldr r4, [r5, o_MusicPlayerTrack_chan]
cmp r4, 0
beq _081DD8BA
_081DD892:
- ldrb r1, [r4]
- movs r0, 0xC7
+ ldrb r1, [r4, o_SoundChannel_statusFlags]
+ movs r0, SOUND_CHANNEL_SF_ON
tst r0, r1
beq _081DD8AE
- ldrb r0, [r4, 0x10]
+ ldrb r0, [r4, o_SoundChannel_gateTime]
cmp r0, 0
beq _081DD8B4
subs r0, 0x1
- strb r0, [r4, 0x10]
+ strb r0, [r4, o_SoundChannel_gateTime]
bne _081DD8B4
- movs r0, 0x40
+ movs r0, SOUND_CHANNEL_SF_STOP
orrs r1, r0
- strb r1, [r4]
+ strb r1, [r4, o_SoundChannel_statusFlags]
b _081DD8B4
_081DD8AE:
adds r0, r4, 0
bl ClearChain
_081DD8B4:
- ldr r4, [r4, 0x34]
+ ldr r4, [r4, o_SoundChannel_nextChannelPointer]
cmp r4, 0
bne _081DD892
_081DD8BA:
- ldrb r3, [r5, #o_MusicPlayerTrack_flags]
- movs r0, 0x40
+ ldrb r3, [r5, o_MusicPlayerTrack_flags]
+ movs r0, MPT_FLG_START
tst r0, r3
beq _081DD938
adds r0, r5, 0
bl Clear64byte
- movs r0, 0x80
- strb r0, [r5]
+ movs r0, MPT_FLG_EXIST
+ strb r0, [r5, o_MusicPlayerTrack_flags]
movs r0, 0x2
- strb r0, [r5, #o_MusicPlayerTrack_bendRange]
+ strb r0, [r5, o_MusicPlayerTrack_bendRange]
movs r0, 0x40
- strb r0, [r5, #o_MusicPlayerTrack_volX]
+ strb r0, [r5, o_MusicPlayerTrack_volX]
movs r0, 0x16
- strb r0, [r5, #o_MusicPlayerTrack_lfoSpeed]
+ strb r0, [r5, o_MusicPlayerTrack_lfoSpeed]
movs r0, 0x1
adds r1, r5, 0x6
- strb r0, [r1, #o_MusicPlayerTrack_ToneData_type - 0x6]
+ strb r0, [r1, o_MusicPlayerTrack_ToneData_type - 0x6]
b _081DD938
_081DD8E0:
- ldr r2, [r5, #o_MusicPlayerTrack_cmdPtr]
+ ldr r2, [r5, o_MusicPlayerTrack_cmdPtr]
ldrb r1, [r2]
cmp r1, 0x80
bhs _081DD8EC
- ldrb r1, [r5, #o_MusicPlayerTrack_runningStatus]
+ ldrb r1, [r5, o_MusicPlayerTrack_runningStatus]
b _081DD8F6
_081DD8EC:
adds r2, 0x1
- str r2, [r5, #o_MusicPlayerTrack_cmdPtr]
+ str r2, [r5, o_MusicPlayerTrack_cmdPtr]
cmp r1, 0xBD
bcc _081DD8F6
- strb r1, [r5, #o_MusicPlayerTrack_runningStatus]
+ strb r1, [r5, o_MusicPlayerTrack_runningStatus]
_081DD8F6:
cmp r1, 0xCF
bcc _081DD90C
mov r0, r8
- ldr r3, [r0, #o_SoundInfo_plynote]
+ ldr r3, [r0, o_SoundInfo_plynote]
adds r0, r1, 0
subs r0, 0xCF
adds r1, r7, 0
@@ -1256,15 +1256,15 @@ _081DD90C:
bls _081DD92E
adds r0, r1, 0
subs r0, 0xB1
- strb r0, [r7, #o_MusicPlayerInfo_cmd]
+ strb r0, [r7, o_MusicPlayerInfo_cmd]
mov r3, r8
- ldr r3, [r3, #o_SoundInfo_MPlayJumpTable]
+ ldr r3, [r3, o_SoundInfo_MPlayJumpTable]
lsls r0, 2
ldr r3, [r3, r0]
adds r0, r7, 0
adds r1, r5, 0
bl call_r3
- ldrb r0, [r5, #o_MusicPlayerTrack_flags]
+ ldrb r0, [r5, o_MusicPlayerTrack_flags]
cmp r0, 0
beq _081DD994
b _081DD938
@@ -1273,29 +1273,29 @@ _081DD92E:
subs r1, 0x80
adds r1, r0
ldrb r0, [r1]
- strb r0, [r5, #o_MusicPlayerTrack_wait]
+ strb r0, [r5, o_MusicPlayerTrack_wait]
_081DD938:
- ldrb r0, [r5, #o_MusicPlayerTrack_wait]
+ ldrb r0, [r5, o_MusicPlayerTrack_wait]
cmp r0, 0
beq _081DD8E0
subs r0, 0x1
- strb r0, [r5, #o_MusicPlayerTrack_wait]
- ldrb r1, [r5, #o_MusicPlayerTrack_lfoSpeed]
+ strb r0, [r5, o_MusicPlayerTrack_wait]
+ ldrb r1, [r5, o_MusicPlayerTrack_lfoSpeed]
cmp r1, 0
beq _081DD994
- ldrb r0, [r5, #o_MusicPlayerTrack_mod]
+ ldrb r0, [r5, o_MusicPlayerTrack_mod]
cmp r0, 0
beq _081DD994
- ldrb r0, [r5, #o_MusicPlayerTrack_lfoDelayC]
+ ldrb r0, [r5, o_MusicPlayerTrack_lfoDelayC]
cmp r0, 0
beq _081DD95A
subs r0, 0x1
- strb r0, [r5, #o_MusicPlayerTrack_lfoDelayC]
+ strb r0, [r5, o_MusicPlayerTrack_lfoDelayC]
b _081DD994
_081DD95A:
- ldrb r0, [r5, #o_MusicPlayerTrack_lfoSpeedC]
+ ldrb r0, [r5, o_MusicPlayerTrack_lfoSpeedC]
adds r0, r1
- strb r0, [r5, #o_MusicPlayerTrack_lfoSpeedC]
+ strb r0, [r5, o_MusicPlayerTrack_lfoSpeedC]
adds r1, r0, 0
subs r0, 0x40
lsls r0, 24
@@ -1307,102 +1307,102 @@ _081DD96E:
movs r0, 0x80
subs r2, r0, r1
_081DD972:
- ldrb r0, [r5, #o_MusicPlayerTrack_mod]
+ ldrb r0, [r5, o_MusicPlayerTrack_mod]
muls r0, r2
asrs r2, r0, 6
- ldrb r0, [r5, #o_MusicPlayerTrack_modM]
+ ldrb r0, [r5, o_MusicPlayerTrack_modM]
eors r0, r2
lsls r0, 24
beq _081DD994
- strb r2, [r5, #o_MusicPlayerTrack_modM]
+ strb r2, [r5, o_MusicPlayerTrack_modM]
ldrb r0, [r5]
- ldrb r1, [r5, #o_MusicPlayerTrack_modT]
+ ldrb r1, [r5, o_MusicPlayerTrack_modT]
cmp r1, 0
bne _081DD98E
- movs r1, 0xC
+ movs r1, MPT_FLG_PITCHG
b _081DD990
_081DD98E:
- movs r1, 0x3
+ movs r1, MPT_FLG_VOLCHG
_081DD990:
orrs r0, r1
- strb r0, [r5, #o_MusicPlayerTrack_flags]
+ strb r0, [r5, o_MusicPlayerTrack_flags]
_081DD994:
mov r3, r10
mov r4, r11
_081DD998:
subs r6, 0x1
ble _081DD9A4
- movs r0, 0x50
+ movs r0, MusicPlayerTrack_size
adds r5, r0
lsls r3, 1
b _081DD87C
_081DD9A4:
- ldr r0, [r7, #o_MusicPlayerInfo_clock]
+ ldr r0, [r7, o_MusicPlayerInfo_clock]
adds r0, 0x1
- str r0, [r7, #o_MusicPlayerInfo_clock]
+ str r0, [r7, o_MusicPlayerInfo_clock]
cmp r4, 0
bne _081DD9B6
movs r0, 0x80
lsls r0, 24
- str r0, [r7, #o_MusicPlayerInfo_status]
+ str r0, [r7, o_MusicPlayerInfo_status]
b _081DDA6C
_081DD9B6:
- str r4, [r7, #o_MusicPlayerInfo_status]
- ldrh r0, [r7, #o_MusicPlayerInfo_tempoC]
- subs r0, 0x96
+ str r4, [r7, o_MusicPlayerInfo_status]
+ ldrh r0, [r7, o_MusicPlayerInfo_tempoC]
+ subs r0, 150
_081DD9BC:
- strh r0, [r7, #o_MusicPlayerInfo_tempoC]
- cmp r0, 0x96
+ strh r0, [r7, o_MusicPlayerInfo_tempoC]
+ cmp r0, 150
bcc _081DD9C4
b _081DD874
_081DD9C4:
- ldrb r2, [r7, #o_MusicPlayerInfo_trackCount]
- ldr r5, [r7, #o_MusicPlayerInfo_tracks]
+ ldrb r2, [r7, o_MusicPlayerInfo_trackCount]
+ ldr r5, [r7, o_MusicPlayerInfo_tracks]
_081DD9C8:
- ldrb r0, [r5, #o_MusicPlayerTrack_flags]
+ ldrb r0, [r5, o_MusicPlayerTrack_flags]
movs r1, 0x80
tst r1, r0
beq _081DDA62
- movs r1, 0xF
+ movs r1, MPT_FLG_VOLCHG | MPT_FLG_PITCHG
tst r1, r0
beq _081DDA62
mov r9, r2
adds r0, r7, 0
adds r1, r5, 0
bl TrkVolPitSet
- ldr r4, [r5, #o_MusicPlayerTrack_chan]
+ ldr r4, [r5, o_MusicPlayerTrack_chan]
cmp r4, 0
beq _081DDA58
_081DD9E6:
- ldrb r1, [r4, #o_SoundChannel_status]
- movs r0, 0xC7
+ ldrb r1, [r4, o_SoundChannel_statusFlags]
+ movs r0, SOUND_CHANNEL_SF_ON
tst r0, r1
bne _081DD9F6
adds r0, r4, 0
bl ClearChain
b _081DDA52
_081DD9F6:
- ldrb r0, [r4, #o_SoundChannel_type]
- movs r6, 0x7
+ ldrb r0, [r4, o_SoundChannel_type]
+ movs r6, TONEDATA_TYPE_CGB
ands r6, r0
- ldrb r3, [r5, #o_MusicPlayerTrack_flags]
- movs r0, 0x3
+ ldrb r3, [r5, o_MusicPlayerTrack_flags]
+ movs r0, MPT_FLG_VOLCHG
tst r0, r3
beq _081DDA14
bl ChnVolSetAsm
cmp r6, 0
beq _081DDA14
- ldrb r0, [r4, o_CgbChannel_mo]
+ ldrb r0, [r4, o_CgbChannel_modify]
movs r1, 0x1
orrs r0, r1
- strb r0, [r4, o_CgbChannel_mo]
+ strb r0, [r4, o_CgbChannel_modify]
_081DDA14:
- ldrb r3, [r5, #o_MusicPlayerTrack_flags]
- movs r0, 0xC
+ ldrb r3, [r5, o_MusicPlayerTrack_flags]
+ movs r0, MPT_FLG_PITCHG
tst r0, r3
beq _081DDA52
- ldrb r1, [r4, #o_SoundChannel_ky]
- movs r0, 0x8
+ ldrb r1, [r4, o_SoundChannel_key]
+ movs r0, o_MusicPlayerTrack_keyM
ldrsb r0, [r5, r0]
adds r2, r1, r0
bpl _081DDA28
@@ -1411,42 +1411,42 @@ _081DDA28:
cmp r6, 0
beq _081DDA46
mov r0, r8
- ldr r3, [r0, #o_SoundInfo_MidiKeyToCgbFreq]
+ ldr r3, [r0, o_SoundInfo_MidiKeyToCgbFreq]
adds r1, r2, 0
- ldrb r2, [r5, #o_MusicPlayerTrack_pitM]
+ ldrb r2, [r5, o_MusicPlayerTrack_pitM]
adds r0, r6, 0
bl call_r3
- str r0, [r4, o_CgbChannel_fr]
- ldrb r0, [r4, o_CgbChannel_mo]
- movs r1, 0x2
+ str r0, [r4, o_CgbChannel_frequency]
+ ldrb r0, [r4, o_CgbChannel_modify]
+ movs r1, CGB_CHANNEL_MO_PIT
orrs r0, r1
- strb r0, [r4, o_CgbChannel_mo]
+ strb r0, [r4, o_CgbChannel_modify]
b _081DDA52
_081DDA46:
adds r1, r2, 0
- ldrb r2, [r5, #o_MusicPlayerTrack_pitM]
- ldr r0, [r4, #o_SoundChannel_wav]
+ ldrb r2, [r5, o_MusicPlayerTrack_pitM]
+ ldr r0, [r4, o_SoundChannel_wav]
bl MidiKeyToFreq
- str r0, [r4, #o_SoundChannel_freq]
+ str r0, [r4, o_SoundChannel_frequency]
_081DDA52:
- ldr r4, [r4, #o_SoundChannel_np]
+ ldr r4, [r4, o_SoundChannel_nextChannelPointer]
cmp r4, 0
bne _081DD9E6
_081DDA58:
- ldrb r0, [r5, #o_MusicPlayerTrack_flags]
+ ldrb r0, [r5, o_MusicPlayerTrack_flags]
movs r1, 0xF0
ands r0, r1
- strb r0, [r5, #o_MusicPlayerTrack_flags]
+ strb r0, [r5, o_MusicPlayerTrack_flags]
mov r2, r9
_081DDA62:
subs r2, 0x1
ble _081DDA6C
- movs r0, 0x50
+ movs r0, MusicPlayerTrack_size
adds r5, r0
bgt _081DD9C8
_081DDA6C:
ldr r0, lt2_ID_NUMBER
- str r0, [r7, #o_MusicPlayerInfo_ident]
+ str r0, [r7, o_MusicPlayerInfo_ident]
pop {r0-r7}
mov r8, r0
mov r9, r1
@@ -1467,35 +1467,35 @@ lt2_ID_NUMBER: .word ID_NUMBER
TrackStop:
push {r4-r6,lr}
adds r5, r1, 0
- ldrb r1, [r5, #o_MusicPlayerTrack_flags]
- movs r0, 0x80
+ ldrb r1, [r5, o_MusicPlayerTrack_flags]
+ movs r0, MPT_FLG_EXIST
tst r0, r1
beq TrackStop_Done
- ldr r4, [r5, #o_MusicPlayerTrack_chan]
+ ldr r4, [r5, o_MusicPlayerTrack_chan]
cmp r4, 0
beq TrackStop_3
movs r6, 0
TrackStop_Loop:
- ldrb r0, [r4, #o_SoundChannel_status]
+ ldrb r0, [r4, o_SoundChannel_statusFlags]
cmp r0, 0
beq TrackStop_2
- ldrb r0, [r4, #o_SoundChannel_type]
- movs r3, 0x7
+ ldrb r0, [r4, o_SoundChannel_type]
+ movs r3, TONEDATA_TYPE_CGB
ands r0, r3
beq TrackStop_1
ldr r3, =SOUND_INFO_PTR
ldr r3, [r3]
- ldr r3, [r3, #o_SoundInfo_CgbOscOff]
+ ldr r3, [r3, o_SoundInfo_CgbOscOff]
bl call_r3
TrackStop_1:
- strb r6, [r4, #o_SoundChannel_status]
+ strb r6, [r4, o_SoundChannel_statusFlags]
TrackStop_2:
- str r6, [r4, #o_SoundChannel_track]
- ldr r4, [r4, #o_SoundChannel_np]
+ str r6, [r4, o_SoundChannel_track]
+ ldr r4, [r4, o_SoundChannel_nextChannelPointer]
cmp r4, 0
bne TrackStop_Loop
TrackStop_3:
- str r4, [r5, #o_MusicPlayerTrack_chan]
+ str r4, [r5, o_MusicPlayerTrack_chan]
TrackStop_Done:
pop {r4-r6}
pop {r0}
@@ -1505,31 +1505,31 @@ TrackStop_Done:
thumb_func_start ChnVolSetAsm
ChnVolSetAsm:
- ldrb r1, [r4, 0x12]
- movs r0, 0x14
+ ldrb r1, [r4, o_SoundChannel_velocity]
+ movs r0, o_SoundChannel_rhythmPan
ldrsb r2, [r4, r0]
movs r3, 0x80
adds r3, r2
muls r3, r1
- ldrb r0, [r5, 0x10]
+ ldrb r0, [r5, o_MusicPlayerTrack_volMR]
muls r0, r3
asrs r0, 14
cmp r0, 0xFF
bls _081DDAE8
movs r0, 0xFF
_081DDAE8:
- strb r0, [r4, 0x2]
+ strb r0, [r4, o_SoundChannel_rightVolume]
movs r3, 0x7F
subs r3, r2
muls r3, r1
- ldrb r0, [r5, 0x11]
+ ldrb r0, [r5, o_MusicPlayerTrack_volML]
muls r0, r3
asrs r0, 14
cmp r0, 0xFF
bls _081DDAFC
movs r0, 0xFF
_081DDAFC:
- strb r0, [r4, 0x3]
+ strb r0, [r4, o_SoundChannel_leftVolume]
bx lr
thumb_func_end ChnVolSetAsm
@@ -1550,41 +1550,41 @@ ply_note:
ldr r1, =gClockTable
adds r0, r1
ldrb r0, [r0]
- strb r0, [r5, #o_MusicPlayerTrack_gateTime]
- ldr r3, [r5, #o_MusicPlayerTrack_cmdPtr]
+ strb r0, [r5, o_MusicPlayerTrack_gateTime]
+ ldr r3, [r5, o_MusicPlayerTrack_cmdPtr]
ldrb r0, [r3]
cmp r0, 0x80
bhs _081DDB46
- strb r0, [r5, #o_MusicPlayerTrack_key]
+ strb r0, [r5, o_MusicPlayerTrack_key]
adds r3, 0x1
ldrb r0, [r3]
cmp r0, 0x80
bhs _081DDB44
- strb r0, [r5, #o_MusicPlayerTrack_velocity]
+ strb r0, [r5, o_MusicPlayerTrack_velocity]
adds r3, 0x1
ldrb r0, [r3]
cmp r0, 0x80
bhs _081DDB44
- ldrb r1, [r5, #o_MusicPlayerTrack_gateTime]
+ ldrb r1, [r5, o_MusicPlayerTrack_gateTime]
adds r1, r0
- strb r1, [r5, #o_MusicPlayerTrack_gateTime]
+ strb r1, [r5, o_MusicPlayerTrack_gateTime]
adds r3, 0x1
_081DDB44:
- str r3, [r5, #o_MusicPlayerTrack_cmdPtr]
+ str r3, [r5, o_MusicPlayerTrack_cmdPtr]
_081DDB46:
movs r0, 0
str r0, [sp, 0x14]
adds r4, r5, 0
- adds r4, #o_MusicPlayerTrack_ToneData_type
+ adds r4, o_MusicPlayerTrack_ToneData_type
ldrb r2, [r4]
movs r0, TONEDATA_TYPE_RHY | TONEDATA_TYPE_SPL
tst r0, r2
beq _081DDB98
- ldrb r3, [r5, #o_MusicPlayerTrack_key]
+ ldrb r3, [r5, o_MusicPlayerTrack_key]
movs r0, TONEDATA_TYPE_SPL
tst r0, r2
beq _081DDB66
- ldr r1, [r5, #o_MusicPlayerTrack_ToneData_keySplitTable]
+ ldr r1, [r5, o_MusicPlayerTrack_ToneData_keySplitTable]
adds r1, r3
ldrb r0, [r1]
b _081DDB68
@@ -1594,37 +1594,37 @@ _081DDB68:
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
- ldr r0, [r5, #o_MusicPlayerTrack_ToneData_wav]
+ ldr r0, [r5, o_MusicPlayerTrack_ToneData_wav]
adds r1, r0
mov r9, r1
mov r6, r9
ldrb r1, [r6]
- movs r0, 0xC0
+ movs r0, TONEDATA_TYPE_SPL | TONEDATA_TYPE_RHY
tst r0, r1
beq _081DDB80
b _081DDCEA
_081DDB80:
- movs r0, 0x80
+ movs r0, TONEDATA_TYPE_RHY
tst r0, r2
beq _081DDB9C
- ldrb r1, [r6, 0x3]
+ ldrb r1, [r6, o_ToneData_pan_sweep]
movs r0, 0x80
tst r0, r1
beq _081DDB94
- subs r1, 0xC0
+ subs r1, TONEDATA_P_S_PAN
lsls r1, 1
str r1, [sp, 0x14]
_081DDB94:
- ldrb r3, [r6, 0x1]
+ ldrb r3, [r6, o_SoundChannel_type]
b _081DDB9C
_081DDB98:
mov r9, r4
- ldrb r3, [r5, 0x5]
+ ldrb r3, [r5, o_MusicPlayerTrack_key]
_081DDB9C:
str r3, [sp, 0x8]
ldr r6, [sp]
- ldrb r1, [r6, 0x9]
- ldrb r0, [r5, 0x1D]
+ ldrb r1, [r6, o_MusicPlayerInfo_priority]
+ ldrb r0, [r5, o_MusicPlayerTrack_priority]
adds r0, r1
cmp r0, 0xFF
bls _081DDBAC
@@ -1632,13 +1632,13 @@ _081DDB9C:
_081DDBAC:
str r0, [sp, 0x10]
mov r6, r9
- ldrb r0, [r6]
- movs r6, 0x7
+ ldrb r0, [r6, o_ToneData_type]
+ movs r6, TONEDATA_TYPE_CGB
ands r6, r0
str r6, [sp, 0xC]
beq _081DDBEC
ldr r0, [sp, 0x4]
- ldr r4, [r0, 0x1C]
+ ldr r4, [r0, o_SoundInfo_cgbChans]
cmp r4, 0
bne _081DDBC4
b _081DDCEA
@@ -1646,21 +1646,21 @@ _081DDBC4:
subs r6, 0x1
lsls r0, r6, 6
adds r4, r0
- ldrb r1, [r4]
- movs r0, 0xC7
+ ldrb r1, [r4, o_CgbChannel_statusFlags]
+ movs r0, SOUND_CHANNEL_SF_ON
tst r0, r1
beq _081DDC40
- movs r0, 0x40
+ movs r0, SOUND_CHANNEL_SF_STOP
tst r0, r1
bne _081DDC40
- ldrb r1, [r4, 0x13]
+ ldrb r1, [r4, o_CgbChannel_priority]
ldr r0, [sp, 0x10]
cmp r1, r0
bcc _081DDC40
beq _081DDBE4
b _081DDCEA
_081DDBE4:
- ldr r0, [r4, 0x2C]
+ ldr r0, [r4, o_CgbChannel_track]
cmp r0, r5
bcs _081DDC40
b _081DDCEA
@@ -1670,35 +1670,35 @@ _081DDBEC:
movs r2, 0
mov r8, r2
ldr r4, [sp, 0x4]
- ldrb r3, [r4, 0x6]
- adds r4, 0x50
+ ldrb r3, [r4, o_SoundInfo_maxChans]
+ adds r4, o_SoundInfo_chans
_081DDBFA:
- ldrb r1, [r4]
- movs r0, 0xC7
+ ldrb r1, [r4, o_SoundChannel_statusFlags]
+ movs r0, SOUND_CHANNEL_SF_ON
tst r0, r1
beq _081DDC40
- movs r0, 0x40
+ movs r0, SOUND_CHANNEL_SF_STOP
tst r0, r1
beq _081DDC14
cmp r2, 0
bne _081DDC18
adds r2, 0x1
- ldrb r6, [r4, 0x13]
- ldr r7, [r4, 0x2C]
+ ldrb r6, [r4, o_SoundChannel_priority]
+ ldr r7, [r4, o_SoundChannel_track]
b _081DDC32
_081DDC14:
cmp r2, 0
bne _081DDC34
_081DDC18:
- ldrb r0, [r4, 0x13]
+ ldrb r0, [r4, o_SoundChannel_priority]
cmp r0, r6
bcs _081DDC24
adds r6, r0, 0
- ldr r7, [r4, 0x2C]
+ ldr r7, [r4, o_SoundChannel_track]
b _081DDC32
_081DDC24:
bhi _081DDC34
- ldr r0, [r4, 0x2C]
+ ldr r0, [r4, o_SoundChannel_track]
cmp r0, r7
bls _081DDC30
adds r7, r0, 0
@@ -1708,7 +1708,7 @@ _081DDC30:
_081DDC32:
mov r8, r4
_081DDC34:
- adds r4, 0x40
+ adds r4, SoundChannel_size
subs r3, 0x1
bgt _081DDBFA
mov r4, r8
@@ -1718,17 +1718,17 @@ _081DDC40:
adds r0, r4, 0
bl ClearChain
movs r1, 0
- str r1, [r4, 0x30]
- ldr r3, [r5, 0x20]
- str r3, [r4, 0x34]
+ str r1, [r4, o_SoundChannel_prevChannelPointer]
+ ldr r3, [r5, o_MusicPlayerTrack_chan]
+ str r3, [r4, o_SoundChannel_nextChannelPointer]
cmp r3, 0
beq _081DDC54
- str r4, [r3, 0x30]
+ str r4, [r3, o_SoundChannel_prevChannelPointer]
_081DDC54:
- str r4, [r5, 0x20]
- str r5, [r4, 0x2C]
- ldrb r0, [r5, 0x1B]
- strb r0, [r5, 0x1C]
+ str r4, [r5, o_MusicPlayerTrack_chan]
+ str r5, [r4, o_SoundChannel_track]
+ ldrb r0, [r5, o_MusicPlayerTrack_lfoDelay]
+ strb r0, [r5, o_MusicPlayerTrack_lfoDelayC]
cmp r0, r1
beq _081DDC66
adds r1, r5, 0
@@ -1737,26 +1737,26 @@ _081DDC66:
ldr r0, [sp]
adds r1, r5, 0
bl TrkVolPitSet
- ldr r0, [r5, 0x4]
- str r0, [r4, 0x10]
+ ldr r0, [r5, o_MusicPlayerTrack_gateTime]
+ str r0, [r4, o_SoundChannel_gateTime]
ldr r0, [sp, 0x10]
- strb r0, [r4, 0x13]
+ strb r0, [r4, o_SoundChannel_priority]
ldr r0, [sp, 0x8]
- strb r0, [r4, 0x8]
+ strb r0, [r4, o_SoundChannel_key]
ldr r0, [sp, 0x14]
- strb r0, [r4, 0x14]
+ strb r0, [r4, o_SoundChannel_rhythmPan]
mov r6, r9
- ldrb r0, [r6]
- strb r0, [r4, 0x1]
- ldr r7, [r6, 0x4]
- str r7, [r4, 0x24]
- ldr r0, [r6, 0x8]
- str r0, [r4, 0x4]
- ldrh r0, [r5, 0x1E]
- strh r0, [r4, 0xC]
+ ldrb r0, [r6, o_ToneData_type]
+ strb r0, [r4, o_SoundChannel_type]
+ ldr r7, [r6, o_ToneData_wav]
+ str r7, [r4, o_SoundChannel_wav]
+ ldr r0, [r6, o_ToneData_attack]
+ str r0, [r4, o_SoundChannel_attack]
+ ldrh r0, [r5, o_MusicPlayerTrack_pseudoEchoVolume]
+ strh r0, [r4, o_SoundChannel_pseudoEchoVolume]
bl ChnVolSetAsm
- ldrb r1, [r4, 0x8]
- movs r0, 0x8
+ ldrb r1, [r4, o_SoundChannel_key]
+ movs r0, o_MusicPlayerTrack_keyM
ldrsb r0, [r5, r0]
adds r3, r1, r0
bpl _081DDCA0
@@ -1766,9 +1766,9 @@ _081DDCA0:
cmp r6, 0
beq _081DDCCE
mov r6, r9
- ldrb r0, [r6, 0x2]
- strb r0, [r4, 0x1E]
- ldrb r1, [r6, 0x3]
+ ldrb r0, [r6, o_ToneData_length]
+ strb r0, [r4, o_CgbChannel_length]
+ ldrb r1, [r6, o_ToneData_pan_sweep]
movs r0, 0x80
tst r0, r1
bne _081DDCBA
@@ -1778,29 +1778,29 @@ _081DDCA0:
_081DDCBA:
movs r1, 0x8
_081DDCBC:
- strb r1, [r4, 0x1F]
- ldrb r2, [r5, 0x9]
+ strb r1, [r4, o_CgbChannel_sweep]
+ ldrb r2, [r5, o_MusicPlayerTrack_pitM]
adds r1, r3, 0
ldr r0, [sp, 0xC]
ldr r3, [sp, 0x4]
- ldr r3, [r3, 0x30]
+ ldr r3, [r3, o_SoundInfo_MidiKeyToCgbFreq]
bl call_r3
b _081DDCDC
_081DDCCE:
- ldr r0, [r5, #o_MusicPlayerTrack_unk_3C]
- str r0, [r4, 0x18]
- ldrb r2, [r5, 0x9]
+ ldr r0, [r5, o_MusicPlayerTrack_unk_3C]
+ str r0, [r4, o_SoundChannel_count]
+ ldrb r2, [r5, o_MusicPlayerTrack_pitM]
adds r1, r3, 0
adds r0, r7, 0
bl MidiKeyToFreq
_081DDCDC:
- str r0, [r4, 0x20]
- movs r0, 0x80
- strb r0, [r4]
- ldrb r1, [r5]
+ str r0, [r4, o_SoundChannel_frequency]
+ movs r0, SOUND_CHANNEL_SF_START
+ strb r0, [r4, o_SoundChannel_statusFlags]
+ ldrb r1, [r5, o_MusicPlayerTrack_flags]
movs r0, 0xF0
ands r0, r1
- strb r0, [r5]
+ strb r0, [r5, o_MusicPlayerTrack_flags]
_081DDCEA:
add sp, 0x18
pop {r0-r7}
@@ -1816,37 +1816,37 @@ _081DDCEA:
thumb_func_start ply_endtie
ply_endtie:
push {r4,r5}
- ldr r2, [r1, #o_MusicPlayerTrack_cmdPtr]
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
ldrb r3, [r2]
cmp r3, 0x80
bhs _081DDD16
- strb r3, [r1, #o_MusicPlayerTrack_key]
+ strb r3, [r1, o_MusicPlayerTrack_key]
adds r2, 0x1
- str r2, [r1, #o_MusicPlayerTrack_cmdPtr]
+ str r2, [r1, o_MusicPlayerTrack_cmdPtr]
b _081DDD18
_081DDD16:
- ldrb r3, [r1, #o_MusicPlayerTrack_key]
+ ldrb r3, [r1, o_MusicPlayerTrack_key]
_081DDD18:
- ldr r1, [r1, #o_MusicPlayerTrack_chan]
+ ldr r1, [r1, o_MusicPlayerTrack_chan]
cmp r1, 0
beq _081DDD40
- movs r4, 0x83
- movs r5, 0x40
+ movs r4, SOUND_CHANNEL_SF_START | SOUND_CHANNEL_SF_ENV
+ movs r5, SOUND_CHANNEL_SF_STOP
_081DDD22:
- ldrb r2, [r1, #o_SoundChannel_status]
+ ldrb r2, [r1, o_SoundChannel_statusFlags]
tst r2, r4
beq _081DDD3A
tst r2, r5
bne _081DDD3A
- ldrb r0, [r1, #o_SoundChannel_mk]
+ ldrb r0, [r1, o_SoundChannel_midiKey]
cmp r0, r3
bne _081DDD3A
- movs r0, 0x40
+ movs r0, SOUND_CHANNEL_SF_STOP
orrs r2, r0
- strb r2, [r1, #o_SoundChannel_status]
+ strb r2, [r1, o_SoundChannel_statusFlags]
b _081DDD40
_081DDD3A:
- ldr r1, [r1, #o_SoundChannel_np]
+ ldr r1, [r1, o_SoundChannel_nextChannelPointer]
cmp r1, 0
bne _081DDD22
_081DDD40:
@@ -1857,27 +1857,27 @@ _081DDD40:
thumb_func_start clear_modM
clear_modM:
movs r2, 0
- strb r2, [r1, #o_MusicPlayerTrack_modM]
- strb r2, [r1, #o_MusicPlayerTrack_lfoSpeedC]
- ldrb r2, [r1, #o_MusicPlayerTrack_modT]
+ strb r2, [r1, o_MusicPlayerTrack_modM]
+ strb r2, [r1, o_MusicPlayerTrack_lfoSpeedC]
+ ldrb r2, [r1, o_MusicPlayerTrack_modT]
cmp r2, 0
bne _081DDD54
- movs r2, 0xC
+ movs r2, MPT_FLG_PITCHG
b _081DDD56
_081DDD54:
- movs r2, 0x3
+ movs r2, MPT_FLG_VOLCHG
_081DDD56:
- ldrb r3, [r1, #o_MusicPlayerTrack_flags]
+ ldrb r3, [r1, o_MusicPlayerTrack_flags]
orrs r3, r2
- strb r3, [r1, #o_MusicPlayerTrack_flags]
+ strb r3, [r1, o_MusicPlayerTrack_flags]
bx lr
thumb_func_end clear_modM
thumb_func_start ld_r3_tp_adr_i
ld_r3_tp_adr_i_unchecked:
- ldr r2, [r1, #o_MusicPlayerTrack_cmdPtr]
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
adds r3, r2, 1
- str r3, [r1, #o_MusicPlayerTrack_cmdPtr]
+ str r3, [r1, o_MusicPlayerTrack_cmdPtr]
ldrb r3, [r2]
bx lr
thumb_func_end ld_r3_tp_adr_i
@@ -1886,7 +1886,7 @@ ld_r3_tp_adr_i_unchecked:
ply_lfos:
mov r12, lr
bl ld_r3_tp_adr_i_unchecked
- strb r3, [r1, #o_MusicPlayerTrack_lfoSpeed]
+ strb r3, [r1, o_MusicPlayerTrack_lfoSpeed]
cmp r3, 0
bne _081DDD7C
bl clear_modM
@@ -1898,7 +1898,7 @@ _081DDD7C:
ply_mod:
mov r12, lr
bl ld_r3_tp_adr_i_unchecked
- strb r3, [r1, #o_MusicPlayerTrack_mod]
+ strb r3, [r1, o_MusicPlayerTrack_mod]
cmp r3, 0
bne _081DDD90
bl clear_modM
diff --git a/src/mail.c b/src/mail.c
index 0fc62678a..04464f06b 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -16,7 +16,6 @@
#include "gpu_regs.h"
#include "bg.h"
#include "pokemon_icon.h"
-#include "constants/species.h"
#include "malloc.h"
#include "easy_chat.h"
#include "constants/rgb.h"
@@ -525,7 +524,7 @@ static void CB2_WaitForPaletteExitOnKeyPress(void)
static void CB2_ExitOnKeyPress(void)
{
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
sMailRead->callback2 = CB2_ExitMailReadFreeVars;
diff --git a/src/mail_data.c b/src/mail_data.c
index b0b05e8fe..e0553af99 100644
--- a/src/mail_data.c
+++ b/src/mail_data.c
@@ -3,7 +3,6 @@
#include "constants/items.h"
#include "pokemon.h"
#include "pokemon_icon.h"
-#include "constants/species.h"
#include "text.h"
#include "international_string_util.h"
diff --git a/src/main.c b/src/main.c
index 454fefc5c..9fd1d0a35 100644
--- a/src/main.c
+++ b/src/main.c
@@ -85,25 +85,9 @@ void EnableVCountIntrAtLine150(void);
void AgbMain()
{
-#if MODERN
// Modern compilers are liberal with the stack on entry to this function,
// so RegisterRamReset may crash if it resets IWRAM.
- RegisterRamReset(RESET_ALL & ~RESET_IWRAM);
- asm("mov\tr1, #0xC0\n"
- "\tlsl\tr1, r1, #0x12\n"
- "\tmov r2, #0xFC\n"
- "\tlsl r2, r2, #0x7\n"
- "\tadd\tr2, r1, r2\n"
- "\tmov\tr0, #0\n"
- "\tmov\tr3, r0\n"
- "\tmov\tr4, r0\n"
- "\tmov\tr5, r0\n"
- ".LCU0:\n"
- "\tstmia r1!, {r0, r3, r4, r5}\n"
- "\tcmp\tr1, r2\n"
- "\tbcc\t.LCU0\n"
- );
-#else
+#if !MODERN
RegisterRamReset(RESET_ALL);
#endif //MODERN
*(vu16 *)BG_PLTT = 0x7FFF;
@@ -282,10 +266,10 @@ static void ReadKeys(void)
// Remap L to A if the L=A option is enabled.
if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A)
{
- if (gMain.newKeys & L_BUTTON)
+ if (JOY_NEW(L_BUTTON))
gMain.newKeys |= A_BUTTON;
- if (gMain.heldKeys & L_BUTTON)
+ if (JOY_HELD(L_BUTTON))
gMain.heldKeys |= A_BUTTON;
}
diff --git a/src/main_menu.c b/src/main_menu.c
index f4bf37ce1..5b39b6d45 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -3,7 +3,6 @@
#include "bg.h"
#include "constants/rgb.h"
#include "constants/songs.h"
-#include "constants/species.h"
#include "constants/trainers.h"
#include "decompress.h"
#include "event_data.h"
@@ -696,7 +695,7 @@ static void Task_MainMenuCheckSaveFile(u8 taskId)
static void Task_WaitForSaveFileErrorWindow(u8 taskId)
{
RunTextPrinters();
- if (!IsTextPrinterActive(7) && (gMain.newKeys & A_BUTTON))
+ if (!IsTextPrinterActive(7) && (JOY_NEW(A_BUTTON)))
{
ClearWindowTilemap(7);
ClearMainMenuWindowTilemap(&sWindowTemplates_MainMenu[7]);
@@ -731,7 +730,7 @@ static void Task_MainMenuCheckBattery(u8 taskId)
static void Task_WaitForBatteryDryErrorWindow(u8 taskId)
{
RunTextPrinters();
- if (!IsTextPrinterActive(7) && (gMain.newKeys & A_BUTTON))
+ if (!IsTextPrinterActive(7) && (JOY_NEW(A_BUTTON)))
{
ClearWindowTilemap(7);
ClearMainMenuWindowTilemap(&sWindowTemplates_MainMenu[7]);
@@ -887,14 +886,14 @@ static bool8 HandleMainMenuInput(u8 taskId)
{
s16* data = gTasks[taskId].data;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
IsWirelessAdapterConnected(); // why bother calling this here? debug? Task_HandleMainMenuAPressed will check too
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = Task_HandleMainMenuAPressed;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_WHITEALPHA);
@@ -902,7 +901,7 @@ static bool8 HandleMainMenuInput(u8 taskId)
SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, 160));
gTasks[taskId].func = Task_HandleMainMenuBPressed;
}
- else if ((gMain.newKeys & DPAD_UP) && tCurrItem > 0)
+ else if ((JOY_NEW(DPAD_UP)) && tCurrItem > 0)
{
if (tMenuType == HAS_MYSTERY_EVENTS && tIsScrolled == TRUE && tCurrItem == 1)
{
@@ -914,7 +913,7 @@ static bool8 HandleMainMenuInput(u8 taskId)
sCurrItemAndOptionMenuCheck = tCurrItem;
return TRUE;
}
- else if ((gMain.newKeys & DPAD_DOWN) && tCurrItem < tItemCount - 1)
+ else if ((JOY_NEW(DPAD_DOWN)) && tCurrItem < tItemCount - 1)
{
if (tMenuType == HAS_MYSTERY_EVENTS && tCurrItem == 3 && tIsScrolled == FALSE)
{
@@ -1151,7 +1150,7 @@ static void Task_DisplayMainMenuInvalidActionError(u8 taskId)
gTasks[taskId].tCurrItem++;
break;
case 3:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
PlaySE(SE_SELECT);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
@@ -1594,7 +1593,7 @@ static void Task_NewGameBirchSpeech_WaitForWhatsYourNameToPrint(u8 taskId)
static void Task_NewGameBirchSpeech_WaitPressBeforeNameChoice(u8 taskId)
{
- if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
+ if ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
gTasks[taskId].func = Task_NewGameBirchSpeech_StartNamingScreen;
diff --git a/src/map_name_popup.c b/src/map_name_popup.c
index 32da4d0b4..8939edd90 100644
--- a/src/map_name_popup.c
+++ b/src/map_name_popup.c
@@ -121,9 +121,9 @@ static const u8 gRegionMapSectionId_To_PopUpThemeIdMapping[] =
[MAPSEC_ROUTE_133] = MAPPOPUP_THEME_UNDERWATER,
[MAPSEC_ROUTE_134] = MAPPOPUP_THEME_UNDERWATER,
[MAPSEC_UNDERWATER_124] = MAPPOPUP_THEME_STONE2,
- [MAPSEC_UNDERWATER_125] = MAPPOPUP_THEME_STONE2,
[MAPSEC_UNDERWATER_126] = MAPPOPUP_THEME_STONE2,
[MAPSEC_UNDERWATER_127] = MAPPOPUP_THEME_STONE2,
+ [MAPSEC_UNDERWATER_128] = MAPPOPUP_THEME_STONE2,
[MAPSEC_UNDERWATER_SOOTOPOLIS] = MAPPOPUP_THEME_STONE2,
[MAPSEC_GRANITE_CAVE] = MAPPOPUP_THEME_STONE,
[MAPSEC_MT_CHIMNEY] = MAPPOPUP_THEME_STONE,
@@ -139,7 +139,7 @@ static const u8 gRegionMapSectionId_To_PopUpThemeIdMapping[] =
[MAPSEC_AQUA_HIDEOUT_OLD] = MAPPOPUP_THEME_STONE,
[MAPSEC_SHOAL_CAVE] = MAPPOPUP_THEME_STONE,
[MAPSEC_SEAFLOOR_CAVERN] = MAPPOPUP_THEME_STONE,
- [MAPSEC_UNDERWATER_128] = MAPPOPUP_THEME_STONE2,
+ [MAPSEC_UNDERWATER_SEAFLOOR_CAVERN] = MAPPOPUP_THEME_STONE2,
[MAPSEC_VICTORY_ROAD] = MAPPOPUP_THEME_STONE,
[MAPSEC_MIRAGE_ISLAND] = MAPPOPUP_THEME_WOOD,
[MAPSEC_CAVE_OF_ORIGIN] = MAPPOPUP_THEME_STONE,
@@ -167,8 +167,8 @@ static const u8 gRegionMapSectionId_To_PopUpThemeIdMapping[] =
[MAPSEC_MARINE_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
[MAPSEC_UNDERWATER_MARINE_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE2,
[MAPSEC_TERRA_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
- [MAPSEC_UNDERWATER_TERRA_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE2,
- [MAPSEC_UNDERWATER_UNK1 - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE2,
+ [MAPSEC_UNDERWATER_105 - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE2,
+ [MAPSEC_UNDERWATER_125 - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE2,
[MAPSEC_UNDERWATER_129 - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE2,
[MAPSEC_DESERT_UNDERPASS - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
[MAPSEC_ALTERING_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
diff --git a/src/match_call.c b/src/match_call.c
index 2b3f6df8d..723562ade 100644
--- a/src/match_call.c
+++ b/src/match_call.c
@@ -32,7 +32,6 @@
#include "constants/maps.h"
#include "constants/region_map_sections.h"
#include "constants/songs.h"
-#include "constants/species.h"
#include "constants/trainers.h"
struct MatchCallState
@@ -1253,7 +1252,7 @@ static bool32 sub_81962D8(u8 taskId)
static bool32 sub_8196330(u8 taskId)
{
s16 *taskData = gTasks[taskId].data;
- if (!ExecuteMatchCallTextPrinter(taskData[2]) && !IsSEPlaying() && gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (!ExecuteMatchCallTextPrinter(taskData[2]) && !IsSEPlaying() && JOY_NEW(A_BUTTON | B_BUTTON))
{
FillWindowPixelBuffer(taskData[2], PIXEL_FILL(8));
CopyWindowToVram(taskData[2], 2);
@@ -1346,7 +1345,7 @@ static void InitMatchCallTextPrinter(int windowId, const u8 *str)
static bool32 ExecuteMatchCallTextPrinter(int windowId)
{
- if (gMain.heldKeys & A_BUTTON)
+ if (JOY_HELD(A_BUTTON))
gTextFlags.canABSpeedUpPrint = 1;
else
gTextFlags.canABSpeedUpPrint = 0;
@@ -1818,10 +1817,13 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId)
}
*topicTextId = 3;
break;
+ #ifdef BUGFIX
+ case FRONTIER_FACILITY_PIKE:
+ #else
case FRONTIER_FACILITY_FACTORY:
+ #endif
for (i = 0; i < 2; i++)
{
- // BUG: should be looking at battle factory records.
if (streak < gSaveBlock2Ptr->frontier.pikeRecordStreaks[i])
streak = gSaveBlock2Ptr->frontier.pikeRecordStreaks[i];
}
@@ -1849,12 +1851,15 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId)
}
*topicTextId = 2;
break;
+ #ifdef BUGFIX
+ case FRONTIER_FACILITY_FACTORY:
+ #else
case FRONTIER_FACILITY_PIKE:
+ #endif
for (i = 0; i < 2; i++)
{
for (j = 0; j < 2; j++)
{
- // BUG: should be looking at battle pike records.
if (streak < gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[i][j])
streak = gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[i][j];
}
diff --git a/src/menu.c b/src/menu.c
index f3334919c..4813f7b02 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -25,7 +25,7 @@
#define STD_WINDOW_PALETTE_NUM 14
#define STD_WINDOW_BASE_TILE_NUM 0x214
-struct MoveMenuInfoIcon
+struct MenuInfoIcon
{
u8 width;
u8 height;
@@ -98,34 +98,34 @@ const u16 gUnknown_0860F0B0[] = INCBIN_U16("graphics/interface/860F0B0.gbapal");
const u8 sTextColors[] = { TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY };
// Table of move info icon offsets in graphics/interface_fr/menu.png
-const struct MoveMenuInfoIcon gMoveMenuInfoIcons[] =
+static const struct MenuInfoIcon sMenuInfoIcons[] =
{ // { width, height, offset }
- { 12, 12, 0x00 }, // Unused
- { 32, 12, 0x20 }, // Normal icon
- { 32, 12, 0x64 }, // Fight icon
- { 32, 12, 0x60 }, // Flying icon
- { 32, 12, 0x80 }, // Poison icon
- { 32, 12, 0x48 }, // Ground icon
- { 32, 12, 0x44 }, // Rock icon
- { 32, 12, 0x6C }, // Bug icon
- { 32, 12, 0x68 }, // Ghost icon
- { 32, 12, 0x88 }, // Steel icon
- { 32, 12, 0xA4 }, // ??? (Mystery) icon
- { 32, 12, 0x24 }, // Fire icon
- { 32, 12, 0x28 }, // Water icon
- { 32, 12, 0x2C }, // Grass icon
- { 32, 12, 0x40 }, // Electric icon
- { 32, 12, 0x84 }, // Psychic icon
- { 32, 12, 0x4C }, // Ice icon
- { 32, 12, 0xA0 }, // Dragon icon
- { 32, 12, 0x8C }, // Dark icon
- { 42, 12, 0xA8 }, // -Type- icon
- { 42, 12, 0xC0 }, // -Power- icon
- { 42, 12, 0xC8 }, // -Accuracy- icon
- { 42, 12, 0xE0 }, // -PP- icon
- { 42, 12, 0xE8 }, // -Effect- icon
- { 8, 8, 0xAE }, // Unused (Small white pokeball)
- { 8, 8, 0xAF }, // Unused (Small dark pokeball)
+ { 12, 12, 0x00 }, // Unused
+ [TYPE_NORMAL + 1] = { 32, 12, 0x20 },
+ [TYPE_FIGHTING + 1] = { 32, 12, 0x64 },
+ [TYPE_FLYING + 1] = { 32, 12, 0x60 },
+ [TYPE_POISON + 1] = { 32, 12, 0x80 },
+ [TYPE_GROUND + 1] = { 32, 12, 0x48 },
+ [TYPE_ROCK + 1] = { 32, 12, 0x44 },
+ [TYPE_BUG + 1] = { 32, 12, 0x6C },
+ [TYPE_GHOST + 1] = { 32, 12, 0x68 },
+ [TYPE_STEEL + 1] = { 32, 12, 0x88 },
+ [TYPE_MYSTERY + 1] = { 32, 12, 0xA4 },
+ [TYPE_FIRE + 1] = { 32, 12, 0x24 },
+ [TYPE_WATER + 1] = { 32, 12, 0x28 },
+ [TYPE_GRASS + 1] = { 32, 12, 0x2C },
+ [TYPE_ELECTRIC + 1] = { 32, 12, 0x40 },
+ [TYPE_PSYCHIC + 1] = { 32, 12, 0x84 },
+ [TYPE_ICE + 1] = { 32, 12, 0x4C },
+ [TYPE_DRAGON + 1] = { 32, 12, 0xA0 },
+ [TYPE_DARK + 1] = { 32, 12, 0x8C },
+ [MENU_INFO_ICON_TYPE] = { 42, 12, 0xA8 },
+ [MENU_INFO_ICON_POWER] = { 42, 12, 0xC0 },
+ [MENU_INFO_ICON_ACCURACY] = { 42, 12, 0xC8 },
+ [MENU_INFO_ICON_PP] = { 42, 12, 0xE0 },
+ [MENU_INFO_ICON_EFFECT] = { 42, 12, 0xE8 }, // Unused
+ [MENU_INFO_ICON_BALL_RED] = { 8, 8, 0xAE }, // For placed decorations in Secret Base
+ [MENU_INFO_ICON_BALL_BLUE] = { 8, 8, 0xAF }, // For placed decorations in player's room
};
@@ -981,23 +981,23 @@ u8 Menu_GetCursorPos(void)
s8 Menu_ProcessInput(void)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
if (!sMenu.APressMuted)
PlaySE(SE_SELECT);
return sMenu.cursorPos;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
return MENU_B_PRESSED;
}
- else if (gMain.newKeys & DPAD_UP)
+ else if (JOY_NEW(DPAD_UP))
{
PlaySE(SE_SELECT);
Menu_MoveCursor(-1);
return MENU_NOTHING_CHOSEN;
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
PlaySE(SE_SELECT);
Menu_MoveCursor(1);
@@ -1011,23 +1011,23 @@ s8 Menu_ProcessInputNoWrap(void)
{
u8 oldPos = sMenu.cursorPos;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
if (!sMenu.APressMuted)
PlaySE(SE_SELECT);
return sMenu.cursorPos;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
return MENU_B_PRESSED;
}
- else if (gMain.newKeys & DPAD_UP)
+ else if (JOY_NEW(DPAD_UP))
{
if (oldPos != Menu_MoveCursorNoWrapAround(-1))
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
if (oldPos != Menu_MoveCursorNoWrapAround(1))
PlaySE(SE_SELECT);
@@ -1039,23 +1039,23 @@ s8 Menu_ProcessInputNoWrap(void)
s8 ProcessMenuInput_other(void)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
if (!sMenu.APressMuted)
PlaySE(SE_SELECT);
return sMenu.cursorPos;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
return MENU_B_PRESSED;
}
- else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP)
+ else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_UP)
{
PlaySE(SE_SELECT);
Menu_MoveCursor(-1);
return MENU_NOTHING_CHOSEN;
}
- else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN)
+ else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_DOWN)
{
PlaySE(SE_SELECT);
Menu_MoveCursor(1);
@@ -1069,23 +1069,23 @@ s8 Menu_ProcessInputNoWrapAround_other(void)
{
u8 oldPos = sMenu.cursorPos;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
if (!sMenu.APressMuted)
PlaySE(SE_SELECT);
return sMenu.cursorPos;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
return MENU_B_PRESSED;
}
- else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP)
+ else if (JOY_REPEAT(DPAD_ANY) == DPAD_UP)
{
if (oldPos != Menu_MoveCursorNoWrapAround(-1))
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
- else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN)
+ else if (JOY_REPEAT(DPAD_ANY) == DPAD_DOWN)
{
if (oldPos != Menu_MoveCursorNoWrapAround(1))
PlaySE(SE_SELECT);
@@ -1407,34 +1407,34 @@ u8 ChangeGridMenuCursorPosition(s8 deltaX, s8 deltaY)
s8 sub_8199284(void)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
return sMenu.cursorPos;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
return MENU_B_PRESSED;
}
- else if (gMain.newKeys & DPAD_UP)
+ else if (JOY_NEW(DPAD_UP))
{
PlaySE(SE_SELECT);
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_UP);
return MENU_NOTHING_CHOSEN;
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
PlaySE(SE_SELECT);
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_DOWN);
return MENU_NOTHING_CHOSEN;
}
- else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED)
+ else if (JOY_NEW(DPAD_LEFT) || GetLRKeysPressed() == MENU_L_PRESSED)
{
PlaySE(SE_SELECT);
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_LEFT, MENU_CURSOR_DELTA_NONE);
return MENU_NOTHING_CHOSEN;
}
- else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED)
+ else if (JOY_NEW(DPAD_RIGHT) || GetLRKeysPressed() == MENU_R_PRESSED)
{
PlaySE(SE_SELECT);
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_RIGHT, MENU_CURSOR_DELTA_NONE);
@@ -1448,34 +1448,34 @@ s8 Menu_ProcessInputGridLayout(void)
{
u8 oldPos = sMenu.cursorPos;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
return sMenu.cursorPos;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
return MENU_B_PRESSED;
}
- else if (gMain.newKeys & DPAD_UP)
+ else if (JOY_NEW(DPAD_UP))
{
if (oldPos != ChangeGridMenuCursorPosition(0, -1))
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
if (oldPos != ChangeGridMenuCursorPosition(0, 1))
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
- else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED)
+ else if (JOY_NEW(DPAD_LEFT) || GetLRKeysPressed() == MENU_L_PRESSED)
{
if (oldPos != ChangeGridMenuCursorPosition(-1, 0))
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
- else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED)
+ else if (JOY_NEW(DPAD_RIGHT) || GetLRKeysPressed() == MENU_R_PRESSED)
{
if (oldPos != ChangeGridMenuCursorPosition(1, 0))
PlaySE(SE_SELECT);
@@ -1487,34 +1487,34 @@ s8 Menu_ProcessInputGridLayout(void)
s8 sub_81993D8(void)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
return sMenu.cursorPos;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
return MENU_B_PRESSED;
}
- else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP)
+ else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_UP)
{
PlaySE(SE_SELECT);
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_UP);
return MENU_NOTHING_CHOSEN;
}
- else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN)
+ else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_DOWN)
{
PlaySE(SE_SELECT);
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_DOWN);
return MENU_NOTHING_CHOSEN;
}
- else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT || GetLRKeysPressedAndHeld() == MENU_L_PRESSED)
+ else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_LEFT || GetLRKeysPressedAndHeld() == MENU_L_PRESSED)
{
PlaySE(SE_SELECT);
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_LEFT, MENU_CURSOR_DELTA_NONE);
return MENU_NOTHING_CHOSEN;
}
- else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT || GetLRKeysPressedAndHeld() == MENU_R_PRESSED)
+ else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_RIGHT || GetLRKeysPressedAndHeld() == MENU_R_PRESSED)
{
PlaySE(SE_SELECT);
ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_RIGHT, MENU_CURSOR_DELTA_NONE);
@@ -1529,34 +1529,34 @@ s8 sub_8199484(void)
{
u8 oldPos = sMenu.cursorPos;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
return sMenu.cursorPos;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
return MENU_B_PRESSED;
}
- else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP)
+ else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_UP)
{
if (oldPos != ChangeGridMenuCursorPosition(0, -1))
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
- else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN)
+ else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_DOWN)
{
if (oldPos != ChangeGridMenuCursorPosition(0, 1))
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
- else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT || GetLRKeysPressedAndHeld() == MENU_L_PRESSED)
+ else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_LEFT || GetLRKeysPressedAndHeld() == MENU_L_PRESSED)
{
if (oldPos != ChangeGridMenuCursorPosition(-1, 0))
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
- else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT || GetLRKeysPressedAndHeld() == MENU_R_PRESSED)
+ else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_RIGHT || GetLRKeysPressedAndHeld() == MENU_R_PRESSED)
{
if (oldPos != ChangeGridMenuCursorPosition(1, 0))
PlaySE(SE_SELECT);
@@ -2016,7 +2016,7 @@ void sub_819A080(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 src
{
int loopSrcY, loopDstY, loopSrcX, loopDstX, xEnd, yEnd, multiplierSrcY, multiplierDstY;
const u8 *pixelsSrc;
- u16 *pixelsDst;
+ u8 *pixelsDst;
u16 toOrr;
if (dst->width - dstX < width)
@@ -2037,53 +2037,52 @@ 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);
+ pixelsDst = (void*) dst->pixels + ((loopDstX >> 1) & 3) + ((loopDstX >> 3) << 5) + ((( loopDstY >> 3) * multiplierDstY) << 5) + ((u32)(loopDstY << 0x1d) >> 0x1B);
- if ((uintptr_t )pixelsDst & 0x1)
+ if ((uintptr_t)pixelsDst & 0x1)
{
- pixelsDst = (void*)(pixelsDst) - 1;
+ pixelsDst--;
if (loopDstX & 0x1)
{
- toOrr = *pixelsDst & 0x0fff;
+ toOrr = *(vu16*)pixelsDst;
+ toOrr &= 0x0fff;
if (loopSrcX & 0x1)
- *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 8);
+ toOrr |= ((*pixelsSrc & 0xf0) << 8);
else
- *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 12);
+ toOrr |= ((*pixelsSrc & 0x0f) << 12);
}
else
{
- toOrr = *pixelsDst & 0xf0ff;
+ toOrr = *(vu16*)pixelsDst;
+ toOrr &= 0xf0ff;
if (loopSrcX & 0x1)
- *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 4);
+ toOrr |= ((*pixelsSrc & 0xf0) << 4);
else
- *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 8);
+ toOrr |= ((*pixelsSrc & 0x0f) << 8);
}
}
else
{
if (loopDstX & 1)
{
- toOrr = *pixelsDst & 0xff0f;
+ toOrr = *(vu16*)pixelsDst;
+ toOrr &= 0xff0f;
if (loopSrcX & 1)
- *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 0);
+ toOrr |= ((*pixelsSrc & 0xf0) << 0);
else
- *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 4);
+ toOrr |= ((*pixelsSrc & 0x0f) << 4);
}
else
{
- toOrr = *pixelsDst & 0xfff0;
+ toOrr = *(vu16*)pixelsDst;
+ toOrr &= 0xfff0;
if (loopSrcX & 1)
- *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) >> 4);
+ toOrr |= ((*pixelsSrc & 0xf0) >> 4);
else
- *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) >> 0);
+ toOrr |= ((*pixelsSrc & 0x0f) >> 0);
}
}
-
- // Needed to match, urgh.
- #ifndef NONMATCHING
- asm("":::"r4");
- pixelsDst++;pixelsDst--;
- #endif // NONMATCHING
+ *(vu16*)pixelsDst = toOrr;
}
}
}
@@ -2119,9 +2118,9 @@ void ListMenuLoadStdPalAt(u8 palOffset, u8 palId)
LoadPalette(palette, palOffset, 0x20);
}
-void blit_move_info_icon(u8 windowId, u8 iconId, u16 x, u16 y)
+void BlitMenuInfoIcon(u8 windowId, u8 iconId, u16 x, u16 y)
{
- BlitBitmapRectToWindow(windowId, gFireRedMenuElements_Gfx + gMoveMenuInfoIcons[iconId].offset * 32, 0, 0, 128, 128, x, y, gMoveMenuInfoIcons[iconId].width, gMoveMenuInfoIcons[iconId].height);
+ BlitBitmapRectToWindow(windowId, gFireRedMenuElements_Gfx + sMenuInfoIcons[iconId].offset * 32, 0, 0, 128, 128, x, y, sMenuInfoIcons[iconId].width, sMenuInfoIcons[iconId].height);
}
void BufferSaveMenuText(u8 textId, u8 *dest, u8 color)
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index 69443d309..b31d84a1e 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -183,7 +183,7 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1)
{
s16 valBefore = (*arg0);
- if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP)
+ if ((JOY_REPEAT(DPAD_ANY)) == DPAD_UP)
{
(*arg0)++;
if ((*arg0) > arg1)
@@ -199,7 +199,7 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1)
return TRUE;
}
}
- else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN)
+ else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_DOWN)
{
(*arg0)--;
if ((*arg0) <= 0)
@@ -215,7 +215,7 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1)
return TRUE;
}
}
- else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT)
+ else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_RIGHT)
{
(*arg0) += 10;
if ((*arg0) > arg1)
@@ -231,7 +231,7 @@ bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1)
return TRUE;
}
}
- else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT)
+ else if ((JOY_REPEAT(DPAD_ANY)) == DPAD_LEFT)
{
(*arg0) -= 10;
if ((*arg0) <= 0)
@@ -255,9 +255,9 @@ u8 GetLRKeysPressed(void)
{
if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
{
- if (gMain.newKeys & L_BUTTON)
+ if (JOY_NEW(L_BUTTON))
return MENU_L_PRESSED;
- if (gMain.newKeys & R_BUTTON)
+ if (JOY_NEW(R_BUTTON))
return MENU_R_PRESSED;
}
@@ -268,9 +268,9 @@ u8 GetLRKeysPressedAndHeld(void)
{
if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
{
- if (gMain.newAndRepeatedKeys & L_BUTTON)
+ if (JOY_REPEAT(L_BUTTON))
return MENU_L_PRESSED;
- if (gMain.newAndRepeatedKeys & R_BUTTON)
+ if (JOY_REPEAT(R_BUTTON))
return MENU_R_PRESSED;
}
diff --git a/src/menu_specialized.c b/src/menu_specialized.c
index d402ecb51..7de963893 100644
--- a/src/menu_specialized.c
+++ b/src/menu_specialized.c
@@ -25,7 +25,6 @@
#include "window.h"
#include "constants/berry.h"
#include "constants/songs.h"
-#include "constants/species.h"
#include "gba/io_reg.h"
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
@@ -320,7 +319,7 @@ void sub_81D1EC0(void)
Free(sUnknown_0203CF4C);
}
-void sub_81D1ED4(struct ConditionGraph *a0)
+void InitConditionGraphData(struct ConditionGraph *graph)
{
u8 i, j;
@@ -328,22 +327,22 @@ void sub_81D1ED4(struct ConditionGraph *a0)
{
for (i = 0; i < 10; i++)
{
- a0->unk64[i][j].unk0 = 0;
- a0->unk64[i][j].unk2 = 0;
+ graph->unk64[i][j].unk0 = 0;
+ graph->unk64[i][j].unk2 = 0;
}
for (i = 0; i < 4; i++)
{
- a0->unk0[i][j] = 0;
- a0->unk14[i][j].unk0 = 0x9B;
- a0->unk14[i][j].unk2 = 0x5B;
+ graph->stat[i][j] = 0;
+ graph->unk14[i][j].unk0 = 155;
+ graph->unk14[i][j].unk2 = 91;
}
- a0->unk12C[j].unk0 = 0;
- a0->unk12C[j].unk2 = 0;
+ graph->unk12C[j].unk0 = 0;
+ graph->unk12C[j].unk2 = 0;
}
- a0->unk354 = 0;
- a0->unk352 = 0;
+ graph->unk354 = 0;
+ graph->unk352 = 0;
}
void sub_81D1F84(struct ConditionGraph *graph, struct UnknownSubStruct_81D1ED4 *arg1, struct UnknownSubStruct_81D1ED4 *arg2)
@@ -351,7 +350,7 @@ void sub_81D1F84(struct ConditionGraph *graph, struct UnknownSubStruct_81D1ED4 *
u16 i, j;
s32 r5, r6;
- for (i = 0; i < 5; i++)
+ for (i = 0; i < FLAVOR_COUNT; i++)
{
r5 = arg1[i].unk0 << 8;
r6 = ((arg2[i].unk0 - arg1[i].unk0) << 8) / 10;
@@ -388,25 +387,25 @@ bool32 TransitionConditionGraph(struct ConditionGraph *graph)
}
}
-void sub_81D20AC(struct ConditionGraph *a0)
+void InitConditionGraphState(struct ConditionGraph *graph)
{
- a0->unk355 = 0;
+ graph->state = 0;
}
-bool8 sub_81D20BC(struct ConditionGraph *graph)
+bool8 SetupConditionGraphScanlineParams(struct ConditionGraph *graph)
{
struct ScanlineEffectParams params;
- switch (graph->unk355)
+ switch (graph->state)
{
case 0:
ScanlineEffect_Clear();
- graph->unk355++;
+ graph->state++;
return TRUE;
case 1:
params = sConditionGraphScanline;
ScanlineEffect_SetParams(params);
- graph->unk355++;
+ graph->state++;
return FALSE;
default:
return FALSE;
@@ -432,7 +431,7 @@ void sub_81D2108(struct ConditionGraph *graph)
graph->unk354 = 0;
}
-void sub_81D21DC(u8 bg)
+void SetConditionGraphIOWindows(u8 bg)
{
u32 flags;
@@ -881,34 +880,30 @@ s32 GetBoxOrPartyMonData(u16 boxId, u16 monId, s32 request, u8 *dst)
// Gets the name/gender/level string for the condition menu
static u8 *GetConditionMenuMonString(u8 *dst, u16 boxId, u16 monId)
{
- u16 species, level, gender;
+ u16 box, mon, species, level, gender;
struct BoxPokemon *boxMon;
u8 *str;
+ box = boxId;
+ mon = monId;
*(dst++) = EXT_CTRL_CODE_BEGIN;
*(dst++) = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
*(dst++) = TEXT_COLOR_BLUE;
*(dst++) = TEXT_COLOR_TRANSPARENT;
*(dst++) = TEXT_COLOR_LIGHT_BLUE;
- if (GetBoxOrPartyMonData(boxId, monId, MON_DATA_IS_EGG, NULL))
- {
+ if (GetBoxOrPartyMonData(box, mon, MON_DATA_IS_EGG, NULL))
return StringCopyPadded(dst, gText_EggNickname, 0, 12);
- }
- GetBoxOrPartyMonData(boxId, monId, MON_DATA_NICKNAME, dst);
+ GetBoxOrPartyMonData(box, mon, MON_DATA_NICKNAME, dst);
StringGetEnd10(dst);
- species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES, NULL);
- if (boxId == TOTAL_BOXES_COUNT) // Party mon.
+ species = GetBoxOrPartyMonData(box, mon, MON_DATA_SPECIES, NULL);
+ if (box == TOTAL_BOXES_COUNT) // Party mon.
{
- level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL);
- gender = GetMonGender(&gPlayerParty[monId]);
+ level = GetMonData(&gPlayerParty[mon], MON_DATA_LEVEL);
+ gender = GetMonGender(&gPlayerParty[mon]);
}
else
{
- // Needed to match, feel free to remove.
- boxId++, boxId--;
- monId++, monId--;
-
- boxMon = GetBoxedMonPtr(boxId, monId);
+ boxMon = GetBoxedMonPtr(box, mon);
gender = GetBoxMonGender(boxMon);
level = GetLevelFromBoxMonExp(boxMon);
}
@@ -981,6 +976,8 @@ static u8 *BufferConditionMenuSpacedStringN(u8 *dst, const u8 *src, s16 n)
void GetConditionMenuMonNameAndLocString(u8 *locationDst, u8 *nameDst, u16 boxId, u16 monId, u16 partyId, u16 numMons, bool8 excludesCancel)
{
u16 i;
+ u16 box = boxId;
+ u16 mon = monId;
// In this and the below 2 functions, numMons is passed as the number of menu selections (which includes Cancel)
// To indicate that the Cancel needs to be subtracted they pass an additional bool
@@ -990,21 +987,16 @@ void GetConditionMenuMonNameAndLocString(u8 *locationDst, u8 *nameDst, u16 boxId
if (partyId != numMons)
{
- GetConditionMenuMonString(nameDst, boxId, monId);
+ GetConditionMenuMonString(nameDst, box, mon);
locationDst[0] = EXT_CTRL_CODE_BEGIN;
locationDst[1] = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
locationDst[2] = TEXT_COLOR_BLUE;
locationDst[3] = TEXT_COLOR_TRANSPARENT;
locationDst[4] = TEXT_COLOR_LIGHT_BLUE;
- if (boxId == TOTAL_BOXES_COUNT) // Party mon.
- {
+ if (box == TOTAL_BOXES_COUNT) // Party mon.
BufferConditionMenuSpacedStringN(&locationDst[5], gText_InParty, 8);
- }
else
- {
- boxId++;boxId--; // Again...Someone fix this maybe?
- BufferConditionMenuSpacedStringN(&locationDst[5], GetBoxNamePtr(boxId), 8);
- }
+ BufferConditionMenuSpacedStringN(&locationDst[5], GetBoxNamePtr(box), 8);
}
else
{
@@ -1026,23 +1018,23 @@ void GetConditionMenuMonConditions(struct ConditionGraph *graph, u8 *sheen, u16
if (partyId != numMons)
{
- graph->unk0[id][0] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_COOL, NULL);
- graph->unk0[id][1] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_TOUGH, NULL);
- graph->unk0[id][2] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SMART, NULL);
- graph->unk0[id][3] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_CUTE, NULL);
- graph->unk0[id][4] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_BEAUTY, NULL);
+ graph->stat[id][0] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_COOL, NULL);
+ graph->stat[id][1] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_TOUGH, NULL);
+ graph->stat[id][2] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SMART, NULL);
+ graph->stat[id][3] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_CUTE, NULL);
+ graph->stat[id][4] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_BEAUTY, NULL);
sheen[id] = (GetBoxOrPartyMonData(boxId, monId, MON_DATA_SHEEN, NULL) != 0xFF)
? GetBoxOrPartyMonData(boxId, monId, MON_DATA_SHEEN, NULL) / 29u
: 9;
- sub_81D2754(graph->unk0[id], graph->unk14[id]);
+ sub_81D2754(graph->stat[id], graph->unk14[id]);
}
else
{
for (i = 0; i < FLAVOR_COUNT; i++)
{
- graph->unk0[id][i] = 0;
+ graph->stat[id][i] = 0;
graph->unk14[id][i].unk0 = 155;
graph->unk14[id][i].unk2 = 91;
}
diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c
index 435ad7233..2a9304a4d 100644
--- a/src/metatile_behavior.c
+++ b/src/metatile_behavior.c
@@ -968,8 +968,15 @@ bool8 MetatileBehavior_IsDiveable(u8 metatileBehavior)
bool8 MetatileBehavior_IsUnableToEmerge(u8 metatileBehavior)
{
+ // BUG: The player is unintentionally able to emerge on water doors.
+ // Also the narrower underwater door in the underwater tileset has the wrong metatile behavior. This causes the dive glitch.
+ // To fix change the metatile behavior of the narrower water door with porymap's tileset editor.
if (metatileBehavior == MB_NO_SURFACING
- || metatileBehavior == MB_SEAWEED_NO_SURFACING)
+ || metatileBehavior == MB_SEAWEED_NO_SURFACING
+ #ifdef BUGFIX
+ || metatileBehavior == MB_WATER_DOOR
+ #endif
+ )
return TRUE;
else
return FALSE;
@@ -1107,7 +1114,7 @@ bool8 MetatileBehavior_IsFortreeBridge(u8 metatileBehavior)
return FALSE;
}
-bool8 MetatileBehavior_IsPacifilogVerticalLog1(u8 metatileBehavior)
+bool8 MetatileBehavior_IsPacifidlogVerticalLog1(u8 metatileBehavior)
{
if (metatileBehavior == MB_PACIFIDLOG_VERTICAL_LOG_1)
return TRUE;
@@ -1115,7 +1122,7 @@ bool8 MetatileBehavior_IsPacifilogVerticalLog1(u8 metatileBehavior)
return FALSE;
}
-bool8 MetatileBehavior_IsPacifilogVerticalLog2(u8 metatileBehavior)
+bool8 MetatileBehavior_IsPacifidlogVerticalLog2(u8 metatileBehavior)
{
if (metatileBehavior == MB_PACIFIDLOG_VERTICAL_LOG_2)
return TRUE;
@@ -1123,7 +1130,7 @@ bool8 MetatileBehavior_IsPacifilogVerticalLog2(u8 metatileBehavior)
return FALSE;
}
-bool8 MetatileBehavior_IsPacifilogHorizontalLog1(u8 metatileBehavior)
+bool8 MetatileBehavior_IsPacifidlogHorizontalLog1(u8 metatileBehavior)
{
if (metatileBehavior == MB_PACIFIDLOG_HORIZONTAL_LOG_1)
return TRUE;
@@ -1131,7 +1138,7 @@ bool8 MetatileBehavior_IsPacifilogHorizontalLog1(u8 metatileBehavior)
return FALSE;
}
-bool8 MetatileBehavior_IsPacifilogHorizontalLog2(u8 metatileBehavior)
+bool8 MetatileBehavior_IsPacifidlogHorizontalLog2(u8 metatileBehavior)
{
if (metatileBehavior == MB_PACIFIDLOG_HORIZONTAL_LOG_2)
return TRUE;
diff --git a/src/mevent2.c b/src/mevent2.c
index 7a2edc7f5..3209c585a 100755
--- a/src/mevent2.c
+++ b/src/mevent2.c
@@ -10,7 +10,6 @@
#include "new_game.h"
#include "mevent.h"
#include "constants/mevent.h"
-#include "constants/species.h"
static EWRAM_DATA bool32 gUnknown_02022C70 = FALSE;
diff --git a/src/mevent_801BAAC.c b/src/mevent_801BAAC.c
index 847449c45..d732e3045 100644
--- a/src/mevent_801BAAC.c
+++ b/src/mevent_801BAAC.c
@@ -1,5 +1,4 @@
#include "global.h"
-#include "constants/species.h"
#include "bg.h"
#include "gpu_regs.h"
#include "palette.h"
diff --git a/src/mirage_tower.c b/src/mirage_tower.c
index fb3a0a374..ef7bf7228 100644
--- a/src/mirage_tower.c
+++ b/src/mirage_tower.c
@@ -168,7 +168,7 @@ const struct PulseBlendSettings gMirageTowerPulseBlendSettings = {
.numColors = 15,
.delay = 5,
.numFadeCycles = -1,
- .maxBlendCoeff = -5,
+ .maxBlendCoeff = 11,
.fadeType = 1,
.restorePaletteOnUnload = FALSE,
.unk7_7 = 1,
@@ -412,9 +412,10 @@ void DoMirageTowerCeilingCrumble(void)
static void WaitCeilingCrumble(u8 taskId)
{
- u16 *data = (u16 *)gTasks[taskId].data;
+ u16 *data = gTasks[taskId].data;
+ data[1]++;
// Either wait 1000 frames, or until all 16 crumble sprites and the one screen-shake task are completed.
- if (++data[1] == 1000 || data[0] == 17)
+ if (data[1] == 1000 || data[0] == 17)
gTasks[taskId].func = FinishCeilingCrumbleTask;
}
@@ -690,7 +691,7 @@ static void DoFossilFallAndSink(u8 taskId)
if (gSprites[sUnknown_0203CF0C->spriteId].callback != SpriteCallbackDummy)
return;
DestroySprite(&gSprites[sUnknown_0203CF0C->spriteId]);
- FREE_AND_SET_NULL(sUnknown_0203CF0C->unkC);
+ 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);
@@ -723,145 +724,38 @@ static void sub_81BF248(struct Sprite *sprite)
}
}
-#ifdef NONMATCHING
static void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e)
{
u8 r5, r4, r0, r2;
- u16 var;
+ u16 var, var2;
+ u8 r2_1, r4_1;
+ u8 b2, c2;
- r4 = r5 = b / d;
+ r4 = b / d;
gUnknown_030012A8[0] = r4;
- r0 = r2 = b % d;
+ r2 = b % d;
gUnknown_030012A8[1] = r2;
- r4 &= 7;
- r2 &= 7;
- gUnknown_030012A8[2] = r4;
- gUnknown_030012A8[3] = r2;
-
- r0 /= 8;
- r5 /= 8;
- gUnknown_030012A8[4] = r0;
- gUnknown_030012A8[5] = r5;
-
- var = ((d / 8) * (r5 * 64)) + (r0 * 64);
+ 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;
+
+ 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
+
+ var = (d / 8) * (r5 * 64) + (r0 * 64);
gUnknown_030012A8[6] = var;
-
- var += (r4 * 8) + r2;
- gUnknown_030012A8[7] = var;
-
- // This part is non-matching. 99% sure it IS functionally equivalent, though.
- b = (b & 1) ^ 1;
- c = (c << ((b) << 2)) | (15 << ((b ^ 1) << 2));
-
- a[(var / 2) + (e * 32)] &= c;
-}
-
-#else
-NAKED
-static void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e)
-{
- asm_unified("\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x8\n\
- str r0, [sp]\n\
- mov r10, r1\n\
- adds r6, r2, 0\n\
- mov r8, r3\n\
- ldr r0, [sp, 0x28]\n\
- mov r9, r0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- mov r10, r1\n\
- lsls r6, 24\n\
- lsrs r6, 24\n\
- mov r0, r8\n\
- lsls r0, 24\n\
- mov r8, r0\n\
- lsrs r7, r0, 24\n\
- mov r1, r9\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r9, r1\n\
- mov r0, r10\n\
- adds r1, r7, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- lsls r5, 24\n\
- lsrs r4, r5, 24\n\
- ldr r3, =gUnknown_030012A8\n\
- strh r4, [r3]\n\
- mov r0, r10\n\
- adds r1, r7, 0\n\
- str r3, [sp, 0x4]\n\
- bl __modsi3\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- ldr r3, [sp, 0x4]\n\
- strh r2, [r3, 0x2]\n\
- movs r1, 0x7\n\
- ands r4, r1\n\
- ands r2, r1\n\
- strh r4, [r3, 0x4]\n\
- strh r2, [r3, 0x6]\n\
- lsrs r0, 27\n\
- lsrs r5, 27\n\
- strh r0, [r3, 0x8]\n\
- strh r5, [r3, 0xA]\n\
- mov r1, r8\n\
- lsrs r1, 27\n\
- lsls r1, 6\n\
- mov r8, r1\n\
- mov r1, r8\n\
- muls r1, r5\n\
- lsls r0, 6\n\
- adds r1, r0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- strh r1, [r3, 0xC]\n\
- lsls r4, 3\n\
- adds r4, r2\n\
- adds r1, r4\n\
- lsls r4, r1, 16\n\
- lsrs r4, 17\n\
- strh r1, [r3, 0xE]\n\
- movs r1, 0x1\n\
- mov r0, r10\n\
- ands r1, r0\n\
- movs r2, 0x1\n\
- eors r1, r2\n\
- lsls r0, r1, 2\n\
- lsls r6, r0\n\
- eors r1, r2\n\
- lsls r1, 2\n\
- movs r0, 0xF\n\
- lsls r0, r1\n\
- orrs r6, r0\n\
- lsls r6, 24\n\
- lsrs r6, 24\n\
- mov r1, r9\n\
- lsls r1, 5\n\
- mov r9, r1\n\
- add r9, r4\n\
- ldr r1, [sp]\n\
- add r1, r9\n\
- ldrb r0, [r1]\n\
- ands r6, r0\n\
- strb r6, [r1]\n\
- add sp, 0x8\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n\
- ");
+
+ 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
+
+ b2 = ((b % 2) ^ 1);
+ c2 = (c << (b2 << 2)) | 15 << (((b2 ^ 1) << 2));
+ a[var2 + (e * 32)] &= c2;
}
-#endif // NONMATCHING
diff --git a/src/mon_markings.c b/src/mon_markings.c
index db5df07e8..a819d4f9a 100644
--- a/src/mon_markings.c
+++ b/src/mon_markings.c
@@ -390,11 +390,11 @@ void sub_811FAF8(void)
}
}
-bool8 sub_811FBA4(void)
+bool8 MonMarkingsMenuHandleInput(void)
{
u16 i;
- if (gMain.newKeys & DPAD_UP)
+ if (JOY_NEW(DPAD_UP))
{
s8 pos;
PlaySE(SE_SELECT);
@@ -404,7 +404,7 @@ bool8 sub_811FBA4(void)
return TRUE;
}
- if (gMain.newKeys & DPAD_DOWN)
+ if (JOY_NEW(DPAD_DOWN))
{
s8 pos;
PlaySE(SE_SELECT);
@@ -414,7 +414,7 @@ bool8 sub_811FBA4(void)
return TRUE;
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
@@ -433,7 +433,7 @@ bool8 sub_811FBA4(void)
return TRUE;
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
return FALSE;
@@ -564,7 +564,7 @@ static void sub_811FF7C(struct Sprite *sprite)
sprite->pos1.y = (16 * sMenu->cursorPos) + sprite->data[0];
}
-struct Sprite *sub_811FF94(u16 tileTag, u16 paletteTag, const u16 *palette)
+struct Sprite *CreateMonMarkingsSpriteWithPal(u16 tileTag, u16 paletteTag, const u16 *palette)
{
if (!palette)
palette = gUnknown_0859E65C;
diff --git a/src/move_relearner.c b/src/move_relearner.c
index 3e7caf133..cd4da5835 100644
--- a/src/move_relearner.c
+++ b/src/move_relearner.c
@@ -732,7 +732,7 @@ static void DoMoveRelearnerMain(void)
}
break;
case MENU_STATE_WAIT_FOR_A_BUTTON:
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
sMoveRelearnerStruct->state = MENU_STATE_FADE_AND_RETURN;
@@ -778,7 +778,7 @@ static void HandleInput(bool8 showContest)
switch (itemId)
{
case LIST_NOTHING_CHOSEN:
- if (!(gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) && !GetLRKeysPressed())
+ if (!(JOY_NEW(DPAD_LEFT | DPAD_RIGHT)) && !GetLRKeysPressed())
{
break;
}
diff --git a/src/multiboot.c b/src/multiboot.c
index c7e14392e..19245b5b3 100644
--- a/src/multiboot.c
+++ b/src/multiboot.c
@@ -1,3 +1,4 @@
+#include "global.h"
#include "gba/gba.h"
#include "multiboot.h"
@@ -435,23 +436,23 @@ static int MultiBootHandShake(struct MultiBootParam *mp)
#undef must_data
}
-static NOINLINE void MultiBootWaitCycles(u32 cycles)
+NAKED
+static void MultiBootWaitCycles(u32 cycles)
{
- asm("mov r2, pc");
- asm("lsr r2, #24");
- asm("mov r1, #12");
- asm("cmp r2, #0x02");
- asm("beq MultiBootWaitCyclesLoop");
-
- asm("mov r1, #13");
- asm("cmp r2, #0x08");
- asm("beq MultiBootWaitCyclesLoop");
-
- asm("mov r1, #4");
-
- asm("MultiBootWaitCyclesLoop:");
- asm("sub r0, r1");
- asm("bgt MultiBootWaitCyclesLoop");
+ asm_unified("\
+ mov r2, pc\n\
+ lsrs r2, 24\n\
+ movs r1, 12\n\
+ cmp r2, 2\n\
+ beq MultiBootWaitCyclesLoop\n\
+ movs r1, 13\n\
+ cmp r2, 8\n\
+ beq MultiBootWaitCyclesLoop\n\
+ movs r1, 4\n\
+MultiBootWaitCyclesLoop:\n\
+ subs r0, r1\n\
+ bgt MultiBootWaitCyclesLoop\n\
+ bx lr\n");
}
static void MultiBootWaitSendDone(void)
diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c
index 032cc3340..00dcbf0e3 100644
--- a/src/mystery_event_menu.c
+++ b/src/mystery_event_menu.c
@@ -163,7 +163,7 @@ static void CB2_MysteryEventMenu(void)
PrintMysteryMenuText(0, gText_PressAToLoadEvent, 1, 2, 1);
gMain.state++;
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
CloseLink();
@@ -177,7 +177,7 @@ static void CB2_MysteryEventMenu(void)
case 5:
if (GetLinkPlayerCount_2() == 2)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
CheckShouldAdvanceLinkState();
@@ -187,7 +187,7 @@ static void CB2_MysteryEventMenu(void)
CopyWindowToVram(1, 3);
gMain.state++;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
CloseLink();
@@ -227,7 +227,7 @@ static void CB2_MysteryEventMenu(void)
}
}
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
CloseLink();
@@ -274,7 +274,7 @@ static void CB2_MysteryEventMenu(void)
}
break;
case 14:
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
gMain.state++;
diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c
index 76f340c60..beb1bf45d 100644
--- a/src/mystery_event_script.c
+++ b/src/mystery_event_script.c
@@ -9,7 +9,6 @@
#include "pokemon.h"
#include "pokemon_size_record.h"
#include "script.h"
-#include "constants/species.h"
#include "strings.h"
#include "string_util.h"
#include "text.h"
diff --git a/src/mystery_gift.c b/src/mystery_gift.c
index ca5ab1baf..a23f159b2 100644
--- a/src/mystery_gift.c
+++ b/src/mystery_gift.c
@@ -561,7 +561,7 @@ bool32 MG_PrintTextOnWindow1AndWaitButton(u8 *textState, const u8 *str)
goto inc;
case 1:
DrawDownArrow(1, 0xD0, 0x14, 1, FALSE, &sDownArrowCounterAndYCoordIdx[0], &sDownArrowCounterAndYCoordIdx[1]);
- if (({gMain.newKeys & (A_BUTTON | B_BUTTON);}))
+ if (({JOY_NEW(A_BUTTON | B_BUTTON);}))
{
inc:
(*textState)++;
@@ -595,7 +595,7 @@ bool32 unref_HideDownArrowAndWaitButton(u8 * textState)
{
case 0:
HideDownArrow();
- if (({gMain.newKeys & (A_BUTTON | B_BUTTON);}))
+ if (({JOY_NEW(A_BUTTON | B_BUTTON);}))
{
(*textState)++;
}
@@ -930,7 +930,7 @@ static bool32 mevent_save_game(u8 * state)
(*state)++;
break;
case 3:
- if (({gMain.newKeys & (A_BUTTON | B_BUTTON);}))
+ if (({JOY_NEW(A_BUTTON | B_BUTTON);}))
{
(*state)++;
}
@@ -1458,11 +1458,11 @@ void task00_mystery_gift(u8 taskId)
case 20:
if (data->IsCardOrNews == 0)
{
- if (({gMain.newKeys & A_BUTTON;}))
+ if (({JOY_NEW(A_BUTTON);}))
{
data->state = 21;
}
- if (({gMain.newKeys & B_BUTTON;}))
+ if (({JOY_NEW(B_BUTTON);}))
{
data->state = 27;
}
diff --git a/src/option_menu.c b/src/option_menu.c
index 1cf0bad2e..b6440a89c 100644
--- a/src/option_menu.c
+++ b/src/option_menu.c
@@ -271,16 +271,16 @@ static void Task_OptionMenuFadeIn(u8 taskId)
static void Task_OptionMenuProcessInput(u8 taskId)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
if (gTasks[taskId].data[TD_MENUSELECTION] == MENUITEM_CANCEL)
gTasks[taskId].func = Task_OptionMenuSave;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
gTasks[taskId].func = Task_OptionMenuSave;
}
- else if (gMain.newKeys & DPAD_UP)
+ else if (JOY_NEW(DPAD_UP))
{
if (gTasks[taskId].data[TD_MENUSELECTION] > 0)
gTasks[taskId].data[TD_MENUSELECTION]--;
@@ -288,7 +288,7 @@ static void Task_OptionMenuProcessInput(u8 taskId)
gTasks[taskId].data[TD_MENUSELECTION] = MENUITEM_CANCEL;
HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]);
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
if (gTasks[taskId].data[TD_MENUSELECTION] < MENUITEM_CANCEL)
gTasks[taskId].data[TD_MENUSELECTION]++;
@@ -405,7 +405,7 @@ static void DrawOptionMenuChoice(const u8 *text, u8 x, u8 y, u8 style)
static u8 TextSpeed_ProcessInput(u8 selection)
{
- if (gMain.newKeys & DPAD_RIGHT)
+ if (JOY_NEW(DPAD_RIGHT))
{
if (selection <= 1)
selection++;
@@ -414,7 +414,7 @@ static u8 TextSpeed_ProcessInput(u8 selection)
sArrowPressed = TRUE;
}
- if (gMain.newKeys & DPAD_LEFT)
+ if (JOY_NEW(DPAD_LEFT))
{
if (selection != 0)
selection--;
@@ -451,7 +451,7 @@ static void TextSpeed_DrawChoices(u8 selection)
static u8 BattleScene_ProcessInput(u8 selection)
{
- if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
+ if (JOY_NEW(DPAD_LEFT | DPAD_RIGHT))
{
selection ^= 1;
sArrowPressed = TRUE;
@@ -474,7 +474,7 @@ static void BattleScene_DrawChoices(u8 selection)
static u8 BattleStyle_ProcessInput(u8 selection)
{
- if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
+ if (JOY_NEW(DPAD_LEFT | DPAD_RIGHT))
{
selection ^= 1;
sArrowPressed = TRUE;
@@ -497,7 +497,7 @@ static void BattleStyle_DrawChoices(u8 selection)
static u8 Sound_ProcessInput(u8 selection)
{
- if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
+ if (JOY_NEW(DPAD_LEFT | DPAD_RIGHT))
{
selection ^= 1;
SetPokemonCryStereo(selection);
@@ -521,7 +521,7 @@ static void Sound_DrawChoices(u8 selection)
static u8 FrameType_ProcessInput(u8 selection)
{
- if (gMain.newKeys & DPAD_RIGHT)
+ if (JOY_NEW(DPAD_RIGHT))
{
if (selection < WINDOW_FRAMES_COUNT - 1)
selection++;
@@ -532,7 +532,7 @@ static u8 FrameType_ProcessInput(u8 selection)
LoadPalette(GetWindowFrameTilesPal(selection)->pal, 0x70, 0x20);
sArrowPressed = TRUE;
}
- if (gMain.newKeys & DPAD_LEFT)
+ if (JOY_NEW(DPAD_LEFT))
{
if (selection != 0)
selection--;
@@ -579,7 +579,7 @@ static void FrameType_DrawChoices(u8 selection)
static u8 ButtonMode_ProcessInput(u8 selection)
{
- if (gMain.newKeys & DPAD_RIGHT)
+ if (JOY_NEW(DPAD_RIGHT))
{
if (selection <= 1)
selection++;
@@ -588,7 +588,7 @@ static u8 ButtonMode_ProcessInput(u8 selection)
sArrowPressed = TRUE;
}
- if (gMain.newKeys & DPAD_LEFT)
+ if (JOY_NEW(DPAD_LEFT))
{
if (selection != 0)
selection--;
diff --git a/src/overworld.c b/src/overworld.c
index d18e3d3bc..72aa17929 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -65,7 +65,6 @@
#include "constants/maps.h"
#include "constants/region_map_sections.h"
#include "constants/songs.h"
-#include "constants/species.h"
#include "constants/trainer_hill.h"
#include "constants/weather.h"
@@ -2454,20 +2453,19 @@ static void UpdateHeldKeyCode(u16 key)
static u16 KeyInterCB_ReadButtons(u32 key)
{
- if (gMain.heldKeys & DPAD_UP)
+ if (JOY_HELD(DPAD_UP))
return LINK_KEY_CODE_DPAD_UP;
- else if (gMain.heldKeys & DPAD_DOWN)
+ if (JOY_HELD(DPAD_DOWN))
return LINK_KEY_CODE_DPAD_DOWN;
- else if (gMain.heldKeys & DPAD_LEFT)
+ if (JOY_HELD(DPAD_LEFT))
return LINK_KEY_CODE_DPAD_LEFT;
- else if (gMain.heldKeys & DPAD_RIGHT)
+ if (JOY_HELD(DPAD_RIGHT))
return LINK_KEY_CODE_DPAD_RIGHT;
- else if (gMain.newKeys & START_BUTTON)
+ if (JOY_NEW(START_BUTTON))
return LINK_KEY_CODE_START_BUTTON;
- else if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
return LINK_KEY_CODE_A_BUTTON;
- else
- return LINK_KEY_CODE_EMPTY;
+ return LINK_KEY_CODE_EMPTY;
}
static u16 GetDirectionForDpadKey(u16 a1)
@@ -2574,7 +2572,7 @@ static u16 sub_8087170(u32 keyOrPlayerId)
{
if (sPlayerTradingStates[keyOrPlayerId] == PLAYER_TRADING_STATE_UNK_2)
{
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
SetKeyInterceptCallback(KeyInterCB_DoNothingAndKeepAlive);
return LINK_KEY_CODE_UNK_7;
@@ -2910,7 +2908,14 @@ static void ZeroObjectEvent(struct ObjectEvent *objEvent)
memset(objEvent, 0, sizeof(struct ObjectEvent));
}
-static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 a4)
+// Note: Emerald reuses the direction and range variables during Link mode
+// as special gender and direction values. The types and placement
+// conflict with the usual Event Object struct, thus the definitions.
+#define linkGender(obj) obj->singleMovementActive
+// not even one can reference *byte* aligned bitfield members...
+#define linkDirection(obj) ((u8*)obj)[offsetof(typeof(*obj), fieldEffectSpriteId) - 1] // -> rangeX
+
+static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 gender)
{
u8 objEventId = GetFirstInactiveObjectEventId();
struct LinkPlayerObjectEvent *linkPlayerObjEvent = &gLinkPlayerObjectEvents[linkPlayerId];
@@ -2925,8 +2930,8 @@ static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 a4)
linkPlayerObjEvent->movementMode = MOVEMENT_MODE_FREE;
objEvent->active = 1;
- objEvent->singleMovementActive = a4;
- objEvent->range.as_byte = 2;
+ linkGender(objEvent) = gender;
+ linkDirection(objEvent) = DIR_NORTH;
objEvent->spriteId = 64;
InitLinkPlayerObjectEventPos(objEvent, x, y);
@@ -2943,13 +2948,13 @@ static void InitLinkPlayerObjectEventPos(struct ObjectEvent *objEvent, s16 x, s1
ObjectEventUpdateZCoord(objEvent);
}
-static void sub_80877DC(u8 linkPlayerId, u8 a2)
+static void sub_80877DC(u8 linkPlayerId, u8 dir)
{
if (gLinkPlayerObjectEvents[linkPlayerId].active)
{
u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId;
struct ObjectEvent *objEvent = &gObjectEvents[objEventId];
- objEvent->range.as_byte = a2;
+ linkDirection(objEvent) = dir;
}
}
@@ -2984,7 +2989,7 @@ static u8 GetLinkPlayerFacingDirection(u8 linkPlayerId)
{
u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId;
struct ObjectEvent *objEvent = &gObjectEvents[objEventId];
- return objEvent->range.as_byte;
+ return linkDirection(objEvent);
}
static u8 GetLinkPlayerElevation(u8 linkPlayerId)
@@ -3069,10 +3074,10 @@ static bool8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *linkPlayer
{
s16 x, y;
- objEvent->range.as_byte = FlipVerticalAndClearForced(a3, objEvent->range.as_byte);
- ObjectEventMoveDestCoords(objEvent, objEvent->range.as_byte, &x, &y);
+ linkDirection(objEvent) = FlipVerticalAndClearForced(a3, linkDirection(objEvent));
+ ObjectEventMoveDestCoords(objEvent, linkDirection(objEvent), &x, &y);
- if (LinkPlayerDetectCollision(linkPlayerObjEvent->objEventId, objEvent->range.as_byte, x, y))
+ if (LinkPlayerDetectCollision(linkPlayerObjEvent->objEventId, linkDirection(objEvent), x, y))
{
return FALSE;
}
@@ -3087,7 +3092,7 @@ static bool8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *linkPlayer
static bool8 FacingHandler_ForcedFacingChange(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 a3)
{
- objEvent->range.as_byte = FlipVerticalAndClearForced(a3, objEvent->range.as_byte);
+ linkDirection(objEvent) = FlipVerticalAndClearForced(a3, linkDirection(objEvent));
return FALSE;
}
@@ -3101,7 +3106,7 @@ static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerObjectEvent
{
objEvent->directionSequenceIndex--;
linkPlayerObjEvent->movementMode = MOVEMENT_MODE_FROZEN;
- MoveCoords(objEvent->range.as_byte, &objEvent->initialCoords.x, &objEvent->initialCoords.y);
+ MoveCoords(linkDirection(objEvent), &objEvent->initialCoords.x, &objEvent->initialCoords.y);
if (!objEvent->directionSequenceIndex)
{
ShiftStillObjectEventCoords(objEvent);
@@ -3162,14 +3167,14 @@ static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion)
{
case VERSION_FIRE_RED:
case VERSION_LEAF_GREEN:
- objEvent->spriteId = AddPseudoObjectEvent(GetFRLGAvatarGraphicsIdByGender(objEvent->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
+ objEvent->spriteId = AddPseudoObjectEvent(GetFRLGAvatarGraphicsIdByGender(linkGender(objEvent)), SpriteCB_LinkPlayer, 0, 0, 0);
break;
case VERSION_RUBY:
case VERSION_SAPPHIRE:
- objEvent->spriteId = AddPseudoObjectEvent(GetRSAvatarGraphicsIdByGender(objEvent->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
+ objEvent->spriteId = AddPseudoObjectEvent(GetRSAvatarGraphicsIdByGender(linkGender(objEvent)), SpriteCB_LinkPlayer, 0, 0, 0);
break;
case VERSION_EMERALD:
- objEvent->spriteId = AddPseudoObjectEvent(GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, objEvent->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
+ objEvent->spriteId = AddPseudoObjectEvent(GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, linkGender(objEvent)), SpriteCB_LinkPlayer, 0, 0, 0);
break;
}
@@ -3190,9 +3195,9 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite)
sprite->oam.priority = ZCoordToPriority(objEvent->previousElevation);
if (linkPlayerObjEvent->movementMode == MOVEMENT_MODE_FREE)
- StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objEvent->range.as_byte));
+ StartSpriteAnim(sprite, GetFaceDirectionAnimNum(linkDirection(objEvent)));
else
- StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(objEvent->range.as_byte));
+ StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(linkDirection(objEvent)));
UpdateObjectEventSpriteVisibility(sprite, 0);
if (objEvent->triggerGroundEffectsOnMove)
diff --git a/src/palette.c b/src/palette.c
index eb49ce4c6..320e11ecc 100644
--- a/src/palette.c
+++ b/src/palette.c
@@ -52,7 +52,7 @@ static u8 UpdateFastPaletteFade(void);
static u8 UpdateHardwarePaletteFade(void);
static void UpdateBlendRegisters(void);
static bool8 IsSoftwarePaletteFadeFinishing(void);
-static void sub_80A2D54(u8 taskId);
+static void Task_BlendPalettesGradually(u8 taskId);
// palette buffers require alignment with agbcc because
// unaligned word reads are issued in BlendPalette otherwise
@@ -940,91 +940,105 @@ void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 b
}
}
-void sub_80A2C44(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7)
+#define tCoeff data[0]
+#define tCoeffTarget data[1]
+#define tCoeffDelta data[2]
+#define tDelay data[3]
+#define tDelayTimer data[4]
+#define tPalettes 5 // data[5] and data[6], set/get via Set/GetWordTaskArg
+#define tColor data[7]
+#define tId data[8]
+
+// Blend the selected palettes in a series of steps toward or away from the color.
+// Only used by the Groudon/Kyogre fight scene to flash the screen for lightning
+// One call is used to fade the bg from white, while another fades the duo from black
+void BlendPalettesGradually(u32 selectedPalettes, s8 delay, u8 coeff, u8 coeffTarget, u16 color, u8 priority, u8 id)
{
u8 taskId;
- taskId = CreateTask((void *)sub_80A2D54, a6);
- gTasks[taskId].data[0] = a3;
- gTasks[taskId].data[1] = a4;
+ taskId = CreateTask((void *)Task_BlendPalettesGradually, priority);
+ gTasks[taskId].tCoeff = coeff;
+ gTasks[taskId].tCoeffTarget = coeffTarget;
- if (a2 >= 0)
+ if (delay >= 0)
{
- gTasks[taskId].data[3] = a2;
- gTasks[taskId].data[2] = 1;
+ gTasks[taskId].tDelay = delay;
+ gTasks[taskId].tCoeffDelta = 1;
}
else
{
- gTasks[taskId].data[3] = 0;
- gTasks[taskId].data[2] = -a2 + 1;
+ gTasks[taskId].tDelay = 0;
+ gTasks[taskId].tCoeffDelta = -delay + 1;
}
- if (a4 < a3)
- gTasks[taskId].data[2] *= -1;
+ if (coeffTarget < coeff)
+ gTasks[taskId].tCoeffDelta *= -1;
- SetWordTaskArg(taskId, 5, a1);
- gTasks[taskId].data[7] = a5;
- gTasks[taskId].data[8] = a7;
+ SetWordTaskArg(taskId, tPalettes, selectedPalettes);
+ gTasks[taskId].tColor = color;
+ gTasks[taskId].tId = id;
gTasks[taskId].func(taskId);
}
-bool32 sub_80A2CF8(u8 var)
+// Unused
+static bool32 IsBlendPalettesGraduallyTaskActive(u8 id)
{
int i;
- for (i = 0; i < NUM_TASKS; i++) // check all the tasks.
- if ((gTasks[i].isActive == TRUE) && (gTasks[i].func == sub_80A2D54) && (gTasks[i].data[8] == var))
+ for (i = 0; i < NUM_TASKS; i++)
+ if ((gTasks[i].isActive == TRUE)
+ && (gTasks[i].func == Task_BlendPalettesGradually)
+ && (gTasks[i].tId == id))
return TRUE;
return FALSE;
}
-void sub_80A2D34(void)
+// Unused
+static void DestroyBlendPalettesGraduallyTask(void)
{
u8 taskId;
while (1)
{
- taskId = FindTaskIdByFunc(sub_80A2D54);
+ taskId = FindTaskIdByFunc(Task_BlendPalettesGradually);
if (taskId == 0xFF)
break;
DestroyTask(taskId);
}
}
-void sub_80A2D54(u8 taskId)
+static void Task_BlendPalettesGradually(u8 taskId)
{
- u32 wordVar;
+ u32 palettes;
s16 *data;
- s16 temp;
+ s16 target;
data = gTasks[taskId].data;
- wordVar = GetWordTaskArg(taskId, 5);
+ palettes = GetWordTaskArg(taskId, tPalettes);
- if (++data[4] > data[3])
+ if (++tDelayTimer > tDelay)
{
- data[4] = 0;
- BlendPalettes(wordVar, data[0], data[7]);
- temp = data[1];
- if (data[0] == temp)
+ tDelayTimer = 0;
+ BlendPalettes(palettes, tCoeff, tColor);
+ target = tCoeffTarget;
+ if (tCoeff == target)
{
DestroyTask(taskId);
}
else
{
- data[0] += data[2];
- if (data[2] >= 0)
+ tCoeff += tCoeffDelta;
+ if (tCoeffDelta >= 0)
{
- if (data[0] < temp)
- {
+ if (tCoeff < target)
return;
- }
}
- else if (data[0] > temp)
+ else if (tCoeff > target)
{
return;
}
- data[0] = temp;
+ tCoeff = target;
}
}
}
diff --git a/src/party_menu.c b/src/party_menu.c
index 7514cf545..f045a9a47 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -74,7 +74,6 @@
#include "constants/party_menu.h"
#include "constants/rgb.h"
#include "constants/songs.h"
-#include "constants/species.h"
#define PARTY_PAL_SELECTED (1 << 0)
#define PARTY_PAL_FAINTED (1 << 1)
@@ -1411,7 +1410,7 @@ static u16 PartyMenuButtonHandler(s8 *slotPtr)
break;
}
- if (gMain.newKeys & START_BUTTON)
+ if (JOY_NEW(START_BUTTON))
return 8;
if (movementDir)
@@ -1421,10 +1420,10 @@ static u16 PartyMenuButtonHandler(s8 *slotPtr)
}
// Pressed Cancel
- if ((gMain.newKeys & A_BUTTON) && *slotPtr == PARTY_SIZE + 1)
+ if ((JOY_NEW(A_BUTTON)) && *slotPtr == PARTY_SIZE + 1)
return 2;
- return gMain.newKeys & (A_BUTTON | B_BUTTON);
+ return JOY_NEW(A_BUTTON | B_BUTTON);
}
static void UpdateCurrentPartySelection(s8 *slotPtr, s8 movementDir)
@@ -1862,7 +1861,7 @@ u8 GetMonAilment(struct Pokemon *mon)
static void SetPartyMonsAllowedInMinigame(void)
{
- s16 *ptr;
+ u16 *ptr;
if (gPartyMenu.menuType == PARTY_MENU_TYPE_MINIGAME)
{
@@ -1964,19 +1963,17 @@ static u8 CanMonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor)
if (item >= ITEM_TM01_FOCUS_PUNCH)
{
- if (CanMonLearnTMHM(mon, item - ITEM_TM01_FOCUS_PUNCH))
- move = ItemIdToBattleMoveId(item);
- else
+ if (!CanMonLearnTMHM(mon, item - ITEM_TM01_FOCUS_PUNCH))
return CANNOT_LEARN_MOVE;
- do {} while (0); // :morphon:
- }
- else if (CanLearnTutorMove(GetMonData(mon, MON_DATA_SPECIES), tutor) == FALSE)
- {
- return CANNOT_LEARN_MOVE;
+ else
+ move = ItemIdToBattleMoveId(item);
}
else
{
- move = GetTutorMove(tutor);
+ if (!CanLearnTutorMove(GetMonData(mon, MON_DATA_SPECIES), tutor))
+ return CANNOT_LEARN_MOVE;
+ else
+ move = GetTutorMove(tutor);
}
if (MonKnowsMove(mon, move) == TRUE)
@@ -3765,7 +3762,7 @@ static u16 GetFieldMoveMonSpecies(void)
static void Task_CancelAfterAorBPress(u8 taskId)
{
- if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
+ if ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))
CursorCb_Cancel1(taskId);
}
@@ -4326,9 +4323,13 @@ void ItemUseCB_Medicine(u8 taskId, TaskFunc task)
u16 hp = 0;
struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId];
u16 item = gSpecialVar_ItemId;
- bool8 canHeal;
+ bool8 canHeal, cannotUse;
- if (NotUsingHPEVItemOnShedinja(mon, item))
+ if (NotUsingHPEVItemOnShedinja(mon, item) == FALSE)
+ {
+ cannotUse = TRUE;
+ }
+ else
{
canHeal = IsHPRecoveryItem(item);
if (canHeal == TRUE)
@@ -4337,50 +4338,49 @@ void ItemUseCB_Medicine(u8 taskId, TaskFunc task)
if (hp == GetMonData(mon, MON_DATA_MAX_HP))
canHeal = FALSE;
}
- if (ExecuteTableBasedItemEffect_(gPartyMenu.slotId, item, 0))
- {
- iTriedHonestlyIDid:
- gPartyMenuUseExitCallback = FALSE;
- PlaySE(SE_SELECT);
- DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE);
- ScheduleBgCopyTilemapToVram(2);
- gTasks[taskId].func = task;
- return;
- }
- }
- else
- {
- goto iTriedHonestlyIDid; //TODO: resolve this goto
+ cannotUse = ExecuteTableBasedItemEffect_(gPartyMenu.slotId, item, 0);
}
- gPartyMenuUseExitCallback = TRUE;
- if (!IsItemFlute(item))
- {
- PlaySE(SE_USE_ITEM);
- if (gPartyMenu.action != PARTY_ACTION_REUSABLE_ITEM)
- RemoveBagItem(item, 1);
- }
- else
- {
- PlaySE(SE_GLASS_FLUTE);
- }
- SetPartyMonAilmentGfx(mon, &sPartyMenuBoxes[gPartyMenu.slotId]);
- if (gSprites[sPartyMenuBoxes[gPartyMenu.slotId].statusSpriteId].invisible)
- DisplayPartyPokemonLevelCheck(mon, &sPartyMenuBoxes[gPartyMenu.slotId], 1);
- if (canHeal == TRUE)
+
+ if (cannotUse != FALSE)
{
- if (hp == 0)
- AnimatePartySlot(gPartyMenu.slotId, 1);
- PartyMenuModifyHP(taskId, gPartyMenu.slotId, 1, GetMonData(mon, MON_DATA_HP) - hp, Task_DisplayHPRestoredMessage);
- ResetHPTaskData(taskId, 0, hp);
- return;
+ gPartyMenuUseExitCallback = FALSE;
+ PlaySE(SE_SELECT);
+ DisplayPartyMenuMessage(gText_WontHaveEffect, TRUE);
+ ScheduleBgCopyTilemapToVram(2);
+ gTasks[taskId].func = task;
}
else
{
- GetMonNickname(mon, gStringVar1);
- GetMedicineItemEffectMessage(item);
- DisplayPartyMenuMessage(gStringVar4, TRUE);
- ScheduleBgCopyTilemapToVram(2);
- gTasks[taskId].func = task;
+ gPartyMenuUseExitCallback = TRUE;
+ if (!IsItemFlute(item))
+ {
+ PlaySE(SE_USE_ITEM);
+ if (gPartyMenu.action != PARTY_ACTION_REUSABLE_ITEM)
+ RemoveBagItem(item, 1);
+ }
+ else
+ {
+ PlaySE(SE_GLASS_FLUTE);
+ }
+ SetPartyMonAilmentGfx(mon, &sPartyMenuBoxes[gPartyMenu.slotId]);
+ if (gSprites[sPartyMenuBoxes[gPartyMenu.slotId].statusSpriteId].invisible)
+ DisplayPartyPokemonLevelCheck(mon, &sPartyMenuBoxes[gPartyMenu.slotId], 1);
+ if (canHeal == TRUE)
+ {
+ if (hp == 0)
+ AnimatePartySlot(gPartyMenu.slotId, 1);
+ PartyMenuModifyHP(taskId, gPartyMenu.slotId, 1, GetMonData(mon, MON_DATA_HP) - hp, Task_DisplayHPRestoredMessage);
+ ResetHPTaskData(taskId, 0, hp);
+ return;
+ }
+ else
+ {
+ GetMonNickname(mon, gStringVar1);
+ GetMedicineItemEffectMessage(item);
+ DisplayPartyMenuMessage(gStringVar4, TRUE);
+ ScheduleBgCopyTilemapToVram(2);
+ gTasks[taskId].func = task;
+ }
}
}
@@ -4722,7 +4722,7 @@ static void Task_DoLearnedMoveFanfareAfterText(u8 taskId)
static void Task_LearnNextMoveOrClosePartyMenu(u8 taskId)
{
- if (IsFanfareTaskInactive() && ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)))
+ if (IsFanfareTaskInactive() && ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON))))
{
if (gPartyMenu.learnMoveState == 1)
Task_TryLearningNextMove(taskId);
@@ -4931,7 +4931,7 @@ static void UpdateMonDisplayInfoAfterRareCandy(u8 slot, struct Pokemon *mon)
static void Task_DisplayLevelUpStatsPg1(u8 taskId)
{
- if (WaitFanfare(FALSE) && IsPartyMenuTextPrinterActive() != TRUE && ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)))
+ if (WaitFanfare(FALSE) && IsPartyMenuTextPrinterActive() != TRUE && ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON))))
{
PlaySE(SE_SELECT);
DisplayLevelUpStatsPg1(taskId);
@@ -4941,7 +4941,7 @@ static void Task_DisplayLevelUpStatsPg1(u8 taskId)
static void Task_DisplayLevelUpStatsPg2(u8 taskId)
{
- if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
+ if ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))
{
PlaySE(SE_SELECT);
DisplayLevelUpStatsPg2(taskId);
@@ -4951,9 +4951,9 @@ static void Task_DisplayLevelUpStatsPg2(u8 taskId)
static void DisplayLevelUpStatsPg1(u8 taskId)
{
- u16 *arrayPtr = (u16*)sPartyMenuInternal->data;
+ s16 *arrayPtr = sPartyMenuInternal->data;
- arrayPtr[12] = (u16)CreateLevelUpStatsWindow();
+ arrayPtr[12] = CreateLevelUpStatsWindow();
DrawLevelUpWindowPg1(arrayPtr[12], arrayPtr, &arrayPtr[6], TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY);
CopyWindowToVram(arrayPtr[12], 2);
ScheduleBgCopyTilemapToVram(2);
@@ -4961,7 +4961,7 @@ static void DisplayLevelUpStatsPg1(u8 taskId)
static void DisplayLevelUpStatsPg2(u8 taskId)
{
- u16 *arrayPtr = (u16 *)sPartyMenuInternal->data;
+ s16 *arrayPtr = sPartyMenuInternal->data;
DrawLevelUpWindowPg2(arrayPtr[12], &arrayPtr[6], TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY);
CopyWindowToVram(arrayPtr[12], 2);
@@ -4972,7 +4972,7 @@ static void Task_TryLearnNewMoves(u8 taskId)
{
u16 learnMove;
- if (WaitFanfare(0) && ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)))
+ if (WaitFanfare(0) && ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON))))
{
RemoveLevelUpStatsWindow();
learnMove = MonTryLearningNewMove(&gPlayerParty[gPartyMenu.slotId], TRUE);
@@ -5609,7 +5609,7 @@ static void Task_ValidateChosenHalfParty(u8 taskId)
static void Task_ContinueChoosingHalfParty(u8 taskId)
{
- if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
+ if ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))
{
PlaySE(SE_SELECT);
DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON);
diff --git a/src/player_pc.c b/src/player_pc.c
index 2010d84f8..928aac706 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -327,7 +327,7 @@ void PlayerPC(void)
static void InitPlayerPCMenu(u8 taskId)
{
- s16 *data;
+ u16 *data;
struct WindowTemplate windowTemplate;
data = gTasks[taskId].data;
@@ -346,7 +346,7 @@ static void InitPlayerPCMenu(u8 taskId)
static void PlayerPCProcessMenuInput(u8 taskId)
{
- s16 *data;
+ u16 *data;
s8 inputOptionId;
data = gTasks[taskId].data;
@@ -435,7 +435,7 @@ static void PlayerPC_TurnOff(u8 taskId)
static void InitItemStorageMenu(u8 taskId, u8 var)
{
- s16 *data;
+ u16 *data;
struct WindowTemplate windowTemplate;
data = gTasks[taskId].data;
@@ -548,7 +548,7 @@ static void ItemStorage_Toss(u8 taskId)
static void ItemStorage_WithdrawToss_Helper(u8 taskId, bool8 toss)
{
- s16 *data = gTasks[taskId].data;
+ u16 *data = gTasks[taskId].data;
data[3] = toss;
sub_816B4DC(taskId);
@@ -581,9 +581,9 @@ static void ItemStorage_SetItemAndMailCount(u8 taskId)
static void sub_816B4DC(u8 taskId)
{
- u16 *data = (u16 *)gTasks[taskId].data;
+ u16 *data = gTasks[taskId].data;
- ClearStdWindowAndFrameToTransparent((u8)data[4], FALSE);
+ ClearStdWindowAndFrameToTransparent(data[4], FALSE);
ClearWindowTilemap(data[4]);
RemoveWindow(data[4]);
ScheduleBgCopyTilemapToVram(0);
@@ -1134,7 +1134,7 @@ static void ItemStorage_ProcessInput(u8 taskId)
s32 id;
data = gTasks[taskId].data;
- if (gMain.newKeys & SELECT_BUTTON)
+ if (JOY_NEW(SELECT_BUTTON))
{
ListMenuGetScrollAndRow(data[5], &(playerPCItemPageInfo.itemsAbove), &(playerPCItemPageInfo.cursorPos));
if ((playerPCItemPageInfo.itemsAbove + playerPCItemPageInfo.cursorPos) != (playerPCItemPageInfo.count - 1))
@@ -1212,7 +1212,7 @@ static void sub_816C4FC(u8 taskId)
s32 id;
data = gTasks[taskId].data;
- if (gMain.newKeys & SELECT_BUTTON)
+ if (JOY_NEW(SELECT_BUTTON))
{
ListMenuGetScrollAndRow(data[5], &(playerPCItemPageInfo.itemsAbove), &(playerPCItemPageInfo.cursorPos));
ItemStorage_DoItemSwap(taskId, FALSE);
@@ -1227,7 +1227,7 @@ static void sub_816C4FC(u8 taskId)
case LIST_NOTHING_CHOSEN:
break;
case LIST_CANCEL:
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
ItemStorage_DoItemSwap(taskId, FALSE);
}
@@ -1332,7 +1332,7 @@ static void ItemStorage_HandleQuantityRolling(u8 taskId)
sub_816C6BC(sub_816BC7C(4), data[2], STR_CONV_MODE_LEADING_ZEROS, 8, 1, 3);
else
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
sub_816BCC4(4);
@@ -1341,7 +1341,7 @@ static void ItemStorage_HandleQuantityRolling(u8 taskId)
else
ItemStorage_DoItemToss(taskId);
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
sub_816BCC4(4);
@@ -1380,7 +1380,7 @@ static void ItemStorage_DoItemToss(u8 taskId)
data = gTasks[taskId].data;
b = (playerPCItemPageInfo.cursorPos + playerPCItemPageInfo.itemsAbove);
- if (ItemId_GetImportance(gSaveBlock1Ptr->pcItems[b].itemId) == 0)
+ if (!ItemId_GetImportance(gSaveBlock1Ptr->pcItems[b].itemId))
{
CopyItemName(gSaveBlock1Ptr->pcItems[b].itemId, gStringVar1);
ConvertIntToDecimalStringN(gStringVar2, data[2], STR_CONV_MODE_LEFT_ALIGN, 3);
@@ -1412,7 +1412,7 @@ static void ItemStorage_HandleRemoveItem(u8 taskId)
s16 *data;
data = gTasks[taskId].data;
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
RemovePCItem((playerPCItemPageInfo.cursorPos + playerPCItemPageInfo.itemsAbove), data[2]);
DestroyListMenuTask(data[5], &(playerPCItemPageInfo.itemsAbove), &(playerPCItemPageInfo.cursorPos));
@@ -1429,7 +1429,7 @@ static void ItemStorage_WaitPressHandleResumeProcessInput(u8 taskId)
s16 *data;
data = gTasks[taskId].data;
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
ItemStorage_PrintItemPcResponse(ItemStorage_GetItemPcResponse(gSaveBlock1Ptr->pcItems[(playerPCItemPageInfo.itemsAbove + playerPCItemPageInfo.cursorPos)].itemId));
ItemStorage_StartScrollIndicatorAndProcessInput(taskId);
diff --git a/src/pokeball.c b/src/pokeball.c
index b176677bd..916c86287 100644
--- a/src/pokeball.c
+++ b/src/pokeball.c
@@ -13,7 +13,6 @@
#include "trig.h"
#include "util.h"
#include "constants/songs.h"
-#include "constants/species.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
@@ -1134,6 +1133,11 @@ static void sub_80767D4(struct Sprite *sprite)
AnimateBallOpenParticlesForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r6);
sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, r8, r5);
sprite->callback = sub_807687C;
+#ifdef BUGFIX
+ // FIX: If this is used on a sprite that has previously had an affine animation, it will not
+ // play the shrink anim properly due to being paused. Works together with the fix to `sub_817F77C`.
+ gSprites[r7].affineAnimPaused = FALSE;
+#endif // BUGFIX
StartSpriteAffineAnim(&gSprites[r7], 2);
AnimateSprite(&gSprites[r7]);
gSprites[r7].data[1] = 0;
diff --git a/src/pokeblock.c b/src/pokeblock.c
index 11fe83240..0bfb10632 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -984,7 +984,7 @@ static void Task_HandlePokeblockMenuInput(u8 taskId)
if (!gPaletteFade.active && MenuHelpers_CallLinkSomething() != TRUE)
{
- if (gMain.newKeys & SELECT_BUTTON)
+ if (JOY_NEW(SELECT_BUTTON))
{
ListMenuGetScrollAndRow(data[0], &sSavedPokeblockData.lastItemPage, &sSavedPokeblockData.lastItemPos);
if (sSavedPokeblockData.lastItemPage + sSavedPokeblockData.lastItemPos != sPokeblockMenu->itemsNo - 1)
@@ -1035,7 +1035,7 @@ static void Task_HandlePokeblocksSwapInput(u8 taskId)
if (MenuHelpers_CallLinkSomething() == TRUE)
return;
- if (gMain.newKeys & SELECT_BUTTON)
+ if (JOY_NEW(SELECT_BUTTON))
{
PlaySE(SE_SELECT);
ListMenuGetScrollAndRow(data[0], &sSavedPokeblockData.lastItemPage, &sSavedPokeblockData.lastItemPos);
@@ -1069,7 +1069,7 @@ static void Task_HandlePokeblocksSwapInput(u8 taskId)
break;
case LIST_CANCEL: // same id as STOW CASE field
PlaySE(SE_SELECT);
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
HandlePokeblocksSwap(taskId, FALSE);
else
HandlePokeblocksSwap(taskId, TRUE);
@@ -1193,7 +1193,7 @@ static void TossPokeblockChoice_Yes(u8 taskId)
static void HandleErasePokeblock(u8 taskId)
{
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
s16 *data;
u16 *lastPage, *lastPos;
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index 797771f80..32db6c717 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -646,7 +646,7 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon)
case 0:
species = GetMonData(mon, MON_DATA_SPECIES2);
personality = GetMonData(mon, MON_DATA_PERSONALITY);
- HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality);
+ HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[1], species, personality);
sPokeblockFeed->loadGfxState++;
break;
case 1:
diff --git a/src/pokedex.c b/src/pokedex.c
index a86c22153..691abd649 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -28,7 +28,6 @@
#include "window.h"
#include "constants/rgb.h"
#include "constants/songs.h"
-#include "constants/species.h"
enum
{
@@ -1673,7 +1672,7 @@ static void Task_HandlePokedexInput(u8 taskId)
}
else
{
- if ((gMain.newKeys & A_BUTTON) && sPokedexView->pokedexList[sPokedexView->selectedPokemon].seen)
+ if ((JOY_NEW(A_BUTTON)) && sPokedexView->pokedexList[sPokedexView->selectedPokemon].seen)
{
UpdateSelectedMonSpriteId();
BeginNormalPaletteFade(~(1 << (gSprites[sPokedexView->selectedMonSpriteId].oam.paletteNum + 16)), 0, 0, 0x10, RGB_BLACK);
@@ -1682,7 +1681,7 @@ static void Task_HandlePokedexInput(u8 taskId)
PlaySE(SE_PIN);
FreeWindowAndBgBuffers();
}
- else if (gMain.newKeys & START_BUTTON)
+ else if (JOY_NEW(START_BUTTON))
{
sPokedexView->menuY = 0;
sPokedexView->menuIsOpen = TRUE;
@@ -1690,7 +1689,7 @@ static void Task_HandlePokedexInput(u8 taskId)
gTasks[taskId].func = Task_HandlePokedexStartMenuInput;
PlaySE(SE_SELECT);
}
- else if (gMain.newKeys & SELECT_BUTTON)
+ else if (JOY_NEW(SELECT_BUTTON))
{
PlaySE(SE_SELECT);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
@@ -1704,7 +1703,7 @@ static void Task_HandlePokedexInput(u8 taskId)
PlaySE(SE_PC_LOGIN);
FreeWindowAndBgBuffers();
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = Task_ClosePokedex;
@@ -1737,7 +1736,7 @@ static void Task_HandlePokedexStartMenuInput(u8 taskId)
}
else
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
switch (sPokedexView->menuCursorPos)
{
@@ -1768,18 +1767,18 @@ static void Task_HandlePokedexStartMenuInput(u8 taskId)
}
//Exit menu when Start or B is pressed
- if (gMain.newKeys & (START_BUTTON | B_BUTTON))
+ if (JOY_NEW(START_BUTTON | B_BUTTON))
{
sPokedexView->menuIsOpen = FALSE;
gTasks[taskId].func = Task_HandlePokedexInput;
PlaySE(SE_SELECT);
}
- else if ((gMain.newAndRepeatedKeys & DPAD_UP) && sPokedexView->menuCursorPos != 0)
+ else if ((JOY_REPEAT(DPAD_UP)) && sPokedexView->menuCursorPos != 0)
{
sPokedexView->menuCursorPos--;
PlaySE(SE_SELECT);
}
- else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && sPokedexView->menuCursorPos < 3)
+ else if ((JOY_REPEAT(DPAD_DOWN)) && sPokedexView->menuCursorPos < 3)
{
sPokedexView->menuCursorPos++;
PlaySE(SE_SELECT);
@@ -1873,7 +1872,7 @@ static void Task_HandleSearchResultsInput(u8 taskId)
}
else
{
- if ((gMain.newKeys & A_BUTTON) && sPokedexView->pokedexList[sPokedexView->selectedPokemon].seen)
+ if ((JOY_NEW(A_BUTTON)) && sPokedexView->pokedexList[sPokedexView->selectedPokemon].seen)
{
u32 a;
@@ -1885,7 +1884,7 @@ static void Task_HandleSearchResultsInput(u8 taskId)
PlaySE(SE_PIN);
FreeWindowAndBgBuffers();
}
- else if (gMain.newKeys & START_BUTTON)
+ else if (JOY_NEW(START_BUTTON))
{
sPokedexView->menuY = 0;
sPokedexView->menuIsOpen = TRUE;
@@ -1893,7 +1892,7 @@ static void Task_HandleSearchResultsInput(u8 taskId)
gTasks[taskId].func = Task_HandleSearchResultsStartMenuInput;
PlaySE(SE_SELECT);
}
- else if (gMain.newKeys & SELECT_BUTTON)
+ else if (JOY_NEW(SELECT_BUTTON))
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].tTaskId = LoadSearchMenu();
@@ -1902,7 +1901,7 @@ static void Task_HandleSearchResultsInput(u8 taskId)
PlaySE(SE_PC_LOGIN);
FreeWindowAndBgBuffers();
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = Task_ReturnToPokedexFromSearchResults;
@@ -1934,7 +1933,7 @@ static void Task_HandleSearchResultsStartMenuInput(u8 taskId)
}
else
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
switch (sPokedexView->menuCursorPos)
{
@@ -1970,18 +1969,18 @@ static void Task_HandleSearchResultsStartMenuInput(u8 taskId)
}
//Exit menu when Start or B is pressed
- if (gMain.newKeys & (START_BUTTON | B_BUTTON))
+ if (JOY_NEW(START_BUTTON | B_BUTTON))
{
sPokedexView->menuIsOpen = FALSE;
gTasks[taskId].func = Task_HandleSearchResultsInput;
PlaySE(SE_SELECT);
}
- else if ((gMain.newAndRepeatedKeys & DPAD_UP) && sPokedexView->menuCursorPos)
+ else if ((JOY_REPEAT(DPAD_UP)) && sPokedexView->menuCursorPos)
{
sPokedexView->menuCursorPos--;
PlaySE(SE_SELECT);
}
- else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && sPokedexView->menuCursorPos < 4)
+ else if ((JOY_REPEAT(DPAD_DOWN)) && sPokedexView->menuCursorPos < 4)
{
sPokedexView->menuCursorPos++;
PlaySE(SE_SELECT);
@@ -2060,10 +2059,10 @@ static bool8 LoadPokedexListPage(u8 page)
SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset);
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sPokedex_BgTemplate, ARRAY_COUNT(sPokedex_BgTemplate));
- SetBgTilemapBuffer(3, AllocZeroed(0x800));
- SetBgTilemapBuffer(2, AllocZeroed(0x800));
- SetBgTilemapBuffer(1, AllocZeroed(0x800));
- SetBgTilemapBuffer(0, AllocZeroed(0x800));
+ SetBgTilemapBuffer(3, AllocZeroed(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(2, AllocZeroed(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(1, AllocZeroed(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(0, AllocZeroed(BG_SCREEN_SIZE));
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
CopyToBgTilemapBuffer(1, gPokedexList_Tilemap, 0, 0);
CopyToBgTilemapBuffer(3, gPokedexListUnderlay_Tilemap, 0, 0);
@@ -2590,7 +2589,7 @@ static u16 TryDoPokedexScroll(u16 selectedMon, u16 ignored)
u16 startingPos;
u8 scrollDir = 0;
- if ((gMain.heldKeys & DPAD_UP) && (selectedMon > 0))
+ if ((JOY_HELD(DPAD_UP)) && (selectedMon > 0))
{
scrollDir = 1;
selectedMon = GetNextPosition(1, selectedMon, 0, sPokedexView->pokemonListCount - 1);
@@ -2598,7 +2597,7 @@ static u16 TryDoPokedexScroll(u16 selectedMon, u16 ignored)
CreateMonListEntry(1, selectedMon, ignored);
PlaySE(SE_DEX_SCROLL);
}
- else if ((gMain.heldKeys & DPAD_DOWN) && (selectedMon < sPokedexView->pokemonListCount - 1))
+ else if ((JOY_HELD(DPAD_DOWN)) && (selectedMon < sPokedexView->pokemonListCount - 1))
{
scrollDir = 2;
selectedMon = GetNextPosition(0, selectedMon, 0, sPokedexView->pokemonListCount - 1);
@@ -2606,7 +2605,7 @@ static u16 TryDoPokedexScroll(u16 selectedMon, u16 ignored)
CreateMonListEntry(2, selectedMon, ignored);
PlaySE(SE_DEX_SCROLL);
}
- else if ((gMain.newKeys & DPAD_LEFT) && (selectedMon > 0))
+ else if ((JOY_NEW(DPAD_LEFT)) && (selectedMon > 0))
{
startingPos = selectedMon;
@@ -2617,7 +2616,7 @@ static u16 TryDoPokedexScroll(u16 selectedMon, u16 ignored)
CreateMonSpritesAtPos(selectedMon, 0xE);
PlaySE(SE_DEX_PAGE);
}
- else if ((gMain.newKeys & DPAD_RIGHT) && (selectedMon < sPokedexView->pokemonListCount - 1))
+ else if ((JOY_NEW(DPAD_RIGHT)) && (selectedMon < sPokedexView->pokemonListCount - 1))
{
startingPos = selectedMon;
for (i = 0; i < 7; i++)
@@ -2666,7 +2665,7 @@ static bool8 TryDoInfoScreenScroll(void)
u16 nextPokemon;
u16 selectedPokemon = sPokedexView->selectedPokemon;
- if ((gMain.newKeys & DPAD_UP) && selectedPokemon)
+ if ((JOY_NEW(DPAD_UP)) && selectedPokemon)
{
nextPokemon = selectedPokemon;
while (nextPokemon != 0)
@@ -2689,7 +2688,7 @@ static bool8 TryDoInfoScreenScroll(void)
return TRUE;
}
}
- else if ((gMain.newKeys & DPAD_DOWN) && selectedPokemon < sPokedexView->pokemonListCount - 1)
+ else if ((JOY_NEW(DPAD_DOWN)) && selectedPokemon < sPokedexView->pokemonListCount - 1)
{
nextPokemon = selectedPokemon;
while (nextPokemon < sPokedexView->pokemonListCount - 1)
@@ -3038,7 +3037,15 @@ static void SpriteCB_PokedexListMonSprite(struct Sprite *sprite)
u32 var;
sprite->pos2.y = gSineTable[(u8)sprite->data[5]] * 76 / 256;
+ // UB: possible division by zero
+#ifdef UBFIX
+ if (gSineTable[sprite->data[5] + 64] != 0)
+ var = 0x10000 / gSineTable[sprite->data[5] + 64];
+ else
+ var = 0xFFFF;
+#else
var = 0x10000 / gSineTable[sprite->data[5] + 64];
+#endif //UBFIX
if (var > 0xFFFF)
var = 0xFFFF;
SetOamMatrix(sprite->data[1] + 1, 0x100, 0, 0, var);
@@ -3186,10 +3193,10 @@ static u8 LoadInfoScreen(struct PokedexListItem* item, u8 monSpriteId)
gTasks[taskId].data[5] = 255;
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sInfoScreen_BgTemplate, ARRAY_COUNT(sInfoScreen_BgTemplate));
- SetBgTilemapBuffer(3, AllocZeroed(0x800));
- SetBgTilemapBuffer(2, AllocZeroed(0x800));
- SetBgTilemapBuffer(1, AllocZeroed(0x800));
- SetBgTilemapBuffer(0, AllocZeroed(0x800));
+ SetBgTilemapBuffer(3, AllocZeroed(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(2, AllocZeroed(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(1, AllocZeroed(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(0, AllocZeroed(BG_SCREEN_SIZE));
InitWindows(sInfoScreen_WindowTemplates);
DeactivateAllTextPrinters();
@@ -3356,14 +3363,14 @@ static void Task_HandleInfoScreenInput(u8 taskId)
PlaySE(SE_DEX_SCROLL);
return;
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
gTasks[taskId].func = Task_ExitInfoScreen;
PlaySE(SE_PC_OFF);
return;
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
switch (sPokedexView->selectedScreen)
{
@@ -3400,8 +3407,8 @@ static void Task_HandleInfoScreenInput(u8 taskId)
}
return;
}
- if (((gMain.newKeys & DPAD_LEFT)
- || ((gMain.newKeys & L_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
+ if (((JOY_NEW(DPAD_LEFT))
+ || ((JOY_NEW(L_BUTTON)) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
&& sPokedexView->selectedScreen > 0)
{
sPokedexView->selectedScreen--;
@@ -3409,8 +3416,8 @@ static void Task_HandleInfoScreenInput(u8 taskId)
PlaySE(SE_DEX_PAGE);
return;
}
- if (((gMain.newKeys & DPAD_RIGHT)
- || ((gMain.newKeys & R_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
+ if (((JOY_NEW(DPAD_RIGHT))
+ || ((JOY_NEW(R_BUTTON)) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
&& sPokedexView->selectedScreen < CANCEL_SCREEN)
{
sPokedexView->selectedScreen++;
@@ -3630,7 +3637,7 @@ static void Task_HandleCryScreenInput(u8 taskId)
else
LoadPlayArrowPalette(FALSE);
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
LoadPlayArrowPalette(TRUE);
CryScreenPlayButton(NationalPokedexNumToSpecies(sPokedexListItem->dexNum));
@@ -3638,7 +3645,7 @@ static void Task_HandleCryScreenInput(u8 taskId)
}
else if (!gPaletteFade.active)
{
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK);
m4aMPlayContinue(&gMPlayInfo_BGM);
@@ -3647,8 +3654,8 @@ static void Task_HandleCryScreenInput(u8 taskId)
PlaySE(SE_PC_OFF);
return;
}
- if ((gMain.newKeys & DPAD_LEFT)
- || ((gMain.newKeys & L_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
+ if ((JOY_NEW(DPAD_LEFT))
+ || ((JOY_NEW(L_BUTTON)) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK);
m4aMPlayContinue(&gMPlayInfo_BGM);
@@ -3657,8 +3664,8 @@ static void Task_HandleCryScreenInput(u8 taskId)
PlaySE(SE_DEX_PAGE);
return;
}
- if ((gMain.newKeys & DPAD_RIGHT)
- || ((gMain.newKeys & R_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
+ if ((JOY_NEW(DPAD_RIGHT))
+ || ((JOY_NEW(R_BUTTON)) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
{
if (!sPokedexListItem->owned)
{
@@ -3810,15 +3817,15 @@ static void Task_LoadSizeScreen(u8 taskId)
static void Task_HandleSizeScreenInput(u8 taskId)
{
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK);
sPokedexView->screenSwitchState = 1;
gTasks[taskId].func = Task_SwitchScreensFromSizeScreen;
PlaySE(SE_PC_OFF);
}
- else if ((gMain.newKeys & DPAD_LEFT)
- || ((gMain.newKeys & L_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
+ else if ((JOY_NEW(DPAD_LEFT))
+ || ((JOY_NEW(L_BUTTON)) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK);
sPokedexView->screenSwitchState = 2;
@@ -3951,8 +3958,8 @@ static void Task_DisplayCaughtMonDexPage(u8 taskId)
ResetOtherVideoRegisters(DISPCNT_BG0_ON);
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sNewEntryInfoScreen_BgTemplate, ARRAY_COUNT(sNewEntryInfoScreen_BgTemplate));
- SetBgTilemapBuffer(3, AllocZeroed(0x800));
- SetBgTilemapBuffer(2, AllocZeroed(0x800));
+ SetBgTilemapBuffer(3, AllocZeroed(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(2, AllocZeroed(BG_SCREEN_SIZE));
InitWindows(sNewEntryInfoScreen_WindowTemplates);
DeactivateAllTextPrinters();
gTasks[taskId].tState = 1;
@@ -4010,7 +4017,7 @@ static void Task_DisplayCaughtMonDexPage(u8 taskId)
static void Task_HandleCaughtMonPageInput(u8 taskId)
{
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
BeginNormalPaletteFade(0x0000FFFF, 0, 0, 16, RGB_BLACK);
gSprites[gTasks[taskId].tMonSpriteId].callback = SpriteCB_SlideCaughtMonToCenter;
@@ -4167,21 +4174,17 @@ static void PrintMonHeight(u16 height, u8 left, u8 top)
static void PrintMonWeight(u16 weight, u8 left, u8 top)
{
-#ifndef NONMATCHING
- asm("":::"r9");
-{
-#endif
u8 buffer[16];
bool8 output;
- u8 i = 0;
+ u8 i;
u32 lbs = (weight * 100000) / 4536;
if (lbs % 10u >= 5)
lbs += 10;
+ i = 0;
output = FALSE;
- buffer[i] = (lbs / 100000) + CHAR_0;
- if (buffer[i] == CHAR_0)
+ if ((buffer[i] = (lbs / 100000) + CHAR_0) == CHAR_0 && !output)
{
buffer[i++] = 0x77;
}
@@ -4192,8 +4195,7 @@ static void PrintMonWeight(u16 weight, u8 left, u8 top)
}
lbs %= 100000;
- buffer[i] = (lbs / 10000) + CHAR_0;
- if (buffer[i] == CHAR_0 && !output)
+ if ((buffer[i] = (lbs / 10000) + CHAR_0) == CHAR_0 && !output)
{
buffer[i++] = 0x77;
}
@@ -4204,13 +4206,13 @@ static void PrintMonWeight(u16 weight, u8 left, u8 top)
}
lbs %= 10000;
- buffer[i] = (lbs / 1000) + CHAR_0;
- if (buffer[i] == CHAR_0 && !output)
+ if ((buffer[i] = (lbs / 1000) + CHAR_0) == CHAR_0 && !output)
{
buffer[i++] = 0x77;
}
else
{
+ output = TRUE;
i++;
}
@@ -4226,9 +4228,6 @@ static void PrintMonWeight(u16 weight, u8 left, u8 top)
buffer[i++] = CHAR_PERIOD;
buffer[i++] = EOS;
PrintInfoScreenText(buffer, left, top);
-#ifndef NONMATCHING
-}
-#endif
}
const u8 *GetPokedexCategoryName(u16 dexNum) // unused
@@ -4820,10 +4819,10 @@ static void Task_LoadSearchMenu(u8 taskId)
ResetOtherVideoRegisters(0);
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sSearchMenu_BgTemplate, ARRAY_COUNT(sSearchMenu_BgTemplate));
- SetBgTilemapBuffer(3, AllocZeroed(0x800));
- SetBgTilemapBuffer(2, AllocZeroed(0x800));
- SetBgTilemapBuffer(1, AllocZeroed(0x800));
- SetBgTilemapBuffer(0, AllocZeroed(0x800));
+ SetBgTilemapBuffer(3, AllocZeroed(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(2, AllocZeroed(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(1, AllocZeroed(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(0, AllocZeroed(BG_SCREEN_SIZE));
InitWindows(sSearchMenu_WindowTemplate);
DeactivateAllTextPrinters();
PutWindowTilemap(0);
@@ -4907,13 +4906,13 @@ static void Task_SwitchToSearchMenuTopBar(u8 taskId)
static void Task_HandleSearchTopBarInput(u8 taskId)
{
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_PC_OFF);
gTasks[taskId].func = Task_ExitSearch;
return;
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
switch (gTasks[taskId].tTopBarItem)
{
@@ -4934,7 +4933,7 @@ static void Task_HandleSearchTopBarInput(u8 taskId)
}
return;
}
- if ((gMain.newKeys & DPAD_LEFT) && gTasks[taskId].tTopBarItem > SEARCH_TOPBAR_SEARCH)
+ if ((JOY_NEW(DPAD_LEFT)) && gTasks[taskId].tTopBarItem > SEARCH_TOPBAR_SEARCH)
{
PlaySE(SE_DEX_PAGE);
gTasks[taskId].tTopBarItem--;
@@ -4942,7 +4941,7 @@ static void Task_HandleSearchTopBarInput(u8 taskId)
CopyWindowToVram(0, 2);
CopyBgTilemapBufferToVram(3);
}
- if ((gMain.newKeys & DPAD_RIGHT) && gTasks[taskId].tTopBarItem < SEARCH_TOPBAR_CANCEL)
+ if ((JOY_NEW(DPAD_RIGHT)) && gTasks[taskId].tTopBarItem < SEARCH_TOPBAR_CANCEL)
{
PlaySE(SE_DEX_PAGE);
gTasks[taskId].tTopBarItem++;
@@ -4981,14 +4980,14 @@ static void Task_HandleSearchMenuInput(u8 taskId)
movementMap = sSearchMovementMap_SearchNatDex;
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_BALL);
SetDefaultSearchModeAndOrder(taskId);
gTasks[taskId].func = Task_SwitchToSearchMenuTopBar;
return;
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
if (gTasks[taskId].tMenuItem == SEARCH_OK)
{
@@ -5023,7 +5022,7 @@ static void Task_HandleSearchMenuInput(u8 taskId)
return;
}
- if ((gMain.newKeys & DPAD_LEFT) && movementMap[gTasks[taskId].tMenuItem][0] != 0xFF)
+ if ((JOY_NEW(DPAD_LEFT)) && movementMap[gTasks[taskId].tMenuItem][0] != 0xFF)
{
PlaySE(SE_SELECT);
gTasks[taskId].tMenuItem = movementMap[gTasks[taskId].tMenuItem][0];
@@ -5031,7 +5030,7 @@ static void Task_HandleSearchMenuInput(u8 taskId)
CopyWindowToVram(0, 2);
CopyBgTilemapBufferToVram(3);
}
- if ((gMain.newKeys & DPAD_RIGHT) && movementMap[gTasks[taskId].tMenuItem][1] != 0xFF)
+ if ((JOY_NEW(DPAD_RIGHT)) && movementMap[gTasks[taskId].tMenuItem][1] != 0xFF)
{
PlaySE(SE_SELECT);
gTasks[taskId].tMenuItem = movementMap[gTasks[taskId].tMenuItem][1];
@@ -5039,7 +5038,7 @@ static void Task_HandleSearchMenuInput(u8 taskId)
CopyWindowToVram(0, 2);
CopyBgTilemapBufferToVram(3);
}
- if ((gMain.newKeys & DPAD_UP) && movementMap[gTasks[taskId].tMenuItem][2] != 0xFF)
+ if ((JOY_NEW(DPAD_UP)) && movementMap[gTasks[taskId].tMenuItem][2] != 0xFF)
{
PlaySE(SE_SELECT);
gTasks[taskId].tMenuItem = movementMap[gTasks[taskId].tMenuItem][2];
@@ -5047,7 +5046,7 @@ static void Task_HandleSearchMenuInput(u8 taskId)
CopyWindowToVram(0, 2);
CopyBgTilemapBufferToVram(3);
}
- if ((gMain.newKeys & DPAD_DOWN) && movementMap[gTasks[taskId].tMenuItem][3] != 0xFF)
+ if ((JOY_NEW(DPAD_DOWN)) && movementMap[gTasks[taskId].tMenuItem][3] != 0xFF)
{
PlaySE(SE_SELECT);
gTasks[taskId].tMenuItem = movementMap[gTasks[taskId].tMenuItem][3];
@@ -5091,7 +5090,7 @@ static void Task_WaitAndCompleteSearch(u8 taskId)
static void Task_SearchCompleteWaitForInput(u8 taskId)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
if (sPokedexView->pokemonListCount != 0)
{
@@ -5117,9 +5116,9 @@ static void Task_SelectSearchMenuItem(u8 taskId)
u16 *scrollOffset;
DrawOrEraseSearchParameterBox(FALSE);
- menuItem = (u16)gTasks[taskId].tMenuItem;
- cursorPos = (u16*)&gTasks[taskId].data[sSearchOptions[menuItem].taskDataCursorPos];
- scrollOffset = (u16*)&gTasks[taskId].data[sSearchOptions[menuItem].taskDataScrollOffset];
+ menuItem = gTasks[taskId].tMenuItem;
+ cursorPos = &gTasks[taskId].data[sSearchOptions[menuItem].taskDataCursorPos];
+ scrollOffset = &gTasks[taskId].data[sSearchOptions[menuItem].taskDataScrollOffset];
gTasks[taskId].tCursorPos = *cursorPos;
gTasks[taskId].tScrollOffset = *scrollOffset;
PrintSearchParameterText(taskId);
@@ -5144,7 +5143,7 @@ static void Task_HandleSearchParameterInput(u8 taskId)
cursorPos = &gTasks[taskId].data[sSearchOptions[menuItem].taskDataCursorPos];
scrollOffset = &gTasks[taskId].data[sSearchOptions[menuItem].taskDataScrollOffset];
maxOption = sSearchOptions[menuItem].numOptions - 1;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_PIN);
ClearSearchParameterBoxText();
@@ -5154,7 +5153,7 @@ static void Task_HandleSearchParameterInput(u8 taskId)
CopyBgTilemapBufferToVram(3);
return;
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_BALL);
ClearSearchParameterBoxText();
@@ -5167,7 +5166,7 @@ static void Task_HandleSearchParameterInput(u8 taskId)
return;
}
moved = FALSE;
- if (gMain.newAndRepeatedKeys & DPAD_UP)
+ if (JOY_REPEAT(DPAD_UP))
{
if (*cursorPos != 0)
{
@@ -5193,7 +5192,7 @@ static void Task_HandleSearchParameterInput(u8 taskId)
}
return;
}
- if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ if (JOY_REPEAT(DPAD_DOWN))
{
if (*cursorPos < MAX_SEARCH_PARAM_CURSOR_POS && *cursorPos < maxOption)
{
@@ -5236,84 +5235,25 @@ static void Task_ExitSearchWaitForFade(u8 taskId)
}
}
-#ifdef NONMATCHING
-// This doesn't match because gcc flips the naming of the r7 and r6
-// registers. It also does one of the additions backwards.
void SetSearchRectHighlight(u8 flags, u8 x, u8 y, u8 width)
{
u16 i;
- u16* ptr = GetBgTilemapBuffer(3);
+ u16 temp; //should be a pointer, but does not match as one
+ u32 ptr = (u32)GetBgTilemapBuffer(3); //same as above
- u16* temp;
for (i = 0; i < width; i++)
{
- // This addition is supposed to be done in this order; however,
- // gcc will always do it in ptr + (y * 32) order.
- temp = (y * 32) + ptr;
- temp[x + i] %= 0x1000;
- temp[x + i] |= flags * 0x1000;
-
- temp[x + i + 32] %= 0x1000;
- temp[x + i + 32] |= flags * 0x1000;
+ temp = *(u16 *)(ptr + (y + 0) * 64 + (x + i) * 2);
+ temp &= 0x0fff;
+ temp |= (flags << 12);
+ *(u16 *)(ptr + (y + 0) * 64 + (x + i) * 2) = temp;
+
+ temp = *(u16 *)(ptr + (y + 1) * 64 + (x + i) * 2);
+ temp &= 0x0fff;
+ temp |= (flags << 12);
+ *(u16 *)(ptr + (y + 1) * 64 + (x + i) * 2) = temp;
}
}
-#else
-__attribute__((naked))
-void SetSearchRectHighlight(u8 flags, u8 x, u8 y, u8 width)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- adds r4, r3, 0\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r8, r1\n\
- lsls r2, 24\n\
- lsrs r5, r2, 24\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- movs r0, 0x3\n\
- bl GetBgTilemapBuffer\n\
- adds r2, r0, 0\n\
- movs r3, 0\n\
- cmp r3, r4\n\
- bcs _080C1DEC\n\
- lsls r0, r5, 6\n\
- adds r7, r0, r2\n\
- ldr r5, =0x00000fff\n\
- lsls r2, r6, 12\n\
-_080C1DC8:\n\
- mov r0, r8\n\
- adds r1, r0, r3\n\
- lsls r1, 1\n\
- adds r1, r7\n\
- ldrh r0, [r1]\n\
- ands r0, r5\n\
- orrs r0, r2\n\
- strh r0, [r1]\n\
- adds r1, 0x40\n\
- ldrh r0, [r1]\n\
- ands r0, r5\n\
- orrs r0, r2\n\
- strh r0, [r1]\n\
- adds r0, r3, 0x1\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- cmp r3, r4\n\
- bcc _080C1DC8\n\
-_080C1DEC:\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n\
- .syntax divided\n");
-}
-#endif
#define SEARCH_BG_SEARCH SEARCH_TOPBAR_SEARCH
#define SEARCH_BG_SHIFT SEARCH_TOPBAR_SHIFT
diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c
index 8450f8530..7a3b38dc2 100755
--- a/src/pokedex_area_screen.c
+++ b/src/pokedex_area_screen.c
@@ -20,7 +20,6 @@
#include "constants/region_map_sections.h"
#include "constants/rgb.h"
#include "constants/songs.h"
-#include "constants/species.h"
#define AREA_SCREEN_WIDTH 32
#define AREA_SCREEN_HEIGHT 20
@@ -724,12 +723,12 @@ static void Task_HandlePokedexAreaScreenInput(u8 taskId)
return;
break;
case 1:
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
gTasks[taskId].data[1] = 1;
PlaySE(SE_PC_OFF);
}
- else if (gMain.newKeys & DPAD_RIGHT || (gMain.newKeys & R_BUTTON && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
+ else if (JOY_NEW(DPAD_RIGHT) || (JOY_NEW(R_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
{
gTasks[taskId].data[1] = 2;
PlaySE(SE_DEX_PAGE);
diff --git a/src/pokemon.c b/src/pokemon.c
index 188624d6a..b5eee16b2 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -44,7 +44,6 @@
#include "constants/layouts.h"
#include "constants/moves.h"
#include "constants/songs.h"
-#include "constants/species.h"
#include "constants/trainers.h"
struct SpeciesItem
@@ -58,7 +57,7 @@ static u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon);
static union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 substructType);
static void EncryptBoxMon(struct BoxPokemon *boxMon);
static void DecryptBoxMon(struct BoxPokemon *boxMon);
-static void sub_806E6CC(u8 taskId);
+static void Task_PlayMapChosenOrBattleBGM(u8 taskId);
static bool8 ShouldGetStatBadgeBoost(u16 flagId, u8 battlerId);
static u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
static bool8 ShouldSkipFriendshipChange(void);
@@ -2579,7 +2578,7 @@ void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level,
CalculateMonStats(mon);
}
-void sub_80686FC(struct Pokemon *mon, struct BattleTowerPokemon *dest)
+void ConvertPokemonToBattleTowerPokemon(struct Pokemon *mon, struct BattleTowerPokemon *dest)
{
s32 i;
u16 heldItem;
@@ -2588,7 +2587,7 @@ void sub_80686FC(struct Pokemon *mon, struct BattleTowerPokemon *dest)
heldItem = GetMonData(mon, MON_DATA_HELD_ITEM, NULL);
if (heldItem == ITEM_ENIGMA_BERRY)
- heldItem = 0;
+ heldItem = ITEM_NONE;
dest->heldItem = heldItem;
@@ -2837,9 +2836,9 @@ void CalculateMonStats(struct Pokemon *mon)
newMaxHP = (((n + hpEV / 4) * level) / 100) + level + 10;
}
- gBattleScripting.field_23 = newMaxHP - oldMaxHP;
- if (gBattleScripting.field_23 == 0)
- gBattleScripting.field_23 = 1;
+ gBattleScripting.levelUpHP = newMaxHP - oldMaxHP;
+ if (gBattleScripting.levelUpHP == 0)
+ gBattleScripting.levelUpHP = 1;
SetMonData(mon, MON_DATA_MAX_HP, &newMaxHP);
@@ -2861,7 +2860,12 @@ void CalculateMonStats(struct Pokemon *mon)
if (currentHP == 0 && oldMaxHP == 0)
currentHP = newMaxHP;
else if (currentHP != 0)
+ // BUG: currentHP is unintentionally able to become <= 0 after the instruction below. This causes the pomeg berry glitch.
currentHP += newMaxHP - oldMaxHP;
+ #ifdef BUGFIX
+ if (currentHP <= 0)
+ currentHP = 1;
+ #endif
else
return;
}
@@ -4911,19 +4915,21 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
break;
}
}
+
+ // Get amount of HP to restore
dataUnsigned = itemEffect[var_3C++];
switch (dataUnsigned)
{
- case 0xFF:
+ case ITEM6_HEAL_FULL:
dataUnsigned = GetMonData(mon, MON_DATA_MAX_HP, NULL) - GetMonData(mon, MON_DATA_HP, NULL);
break;
- case 0xFE:
+ case ITEM6_HEAL_HALF:
dataUnsigned = GetMonData(mon, MON_DATA_MAX_HP, NULL) / 2;
if (dataUnsigned == 0)
dataUnsigned = 1;
break;
- case 0xFD:
- dataUnsigned = gBattleScripting.field_23;
+ case ITEM6_HEAL_LVL_UP:
+ dataUnsigned = gBattleScripting.levelUpHP;
break;
}
if (GetMonData(mon, MON_DATA_MAX_HP, NULL) != GetMonData(mon, MON_DATA_HP, NULL))
@@ -5591,8 +5597,8 @@ u16 SpeciesToCryId(u16 species)
void sub_806D544(u16 species, u32 personality, u8 *dest)
{
if (species == SPECIES_SPINDA
- && dest != gMonSpritesGfxPtr->sprites[0]
- && dest != gMonSpritesGfxPtr->sprites[2])
+ && dest != gMonSpritesGfxPtr->sprites.ptr[0]
+ && dest != gMonSpritesGfxPtr->sprites.ptr[2])
{
int i;
for (i = 0; i < 4; i++)
@@ -5746,25 +5752,29 @@ u8 GetTrainerEncounterMusicId(u16 trainerOpponentId)
u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex)
{
- // Dont modify HP, Accuracy, or Evasion by nature
+ u16 retVal;
+ // Don't modify HP, Accuracy, or Evasion by nature
if (statIndex <= STAT_HP || statIndex > NUM_NATURE_STATS)
{
- // Should just be "return n", but it wouldn't match without this.
- u16 retVal = n;
- retVal++;
- retVal--;
- return retVal;
+ return n;
}
switch (gNatureStatTable[nature][statIndex - 1])
{
case 1:
- return (u16)(n * 110) / 100; // NOTE: will overflow for n > 595 because the intermediate value is cast to u16 before the division. Fix by removing (u16) cast
+ retVal = n * 110;
+ retVal /= 100;
+ break;
case -1:
- return (u16)(n * 90) / 100; // NOTE: will overflow for n > 728, see above
+ retVal = n * 90;
+ retVal /= 100;
+ break;
+ default:
+ retVal = n;
+ break;
}
- return n;
+ return retVal;
}
#define IS_LEAGUE_BATTLE \
@@ -6324,26 +6334,31 @@ void PlayMapChosenOrBattleBGM(u16 songId)
PlayNewMapMusic(GetBattleBGM());
}
-void sub_806E694(u16 songId)
+// Identical to PlayMapChosenOrBattleBGM, but uses a task instead
+// Only used by Battle Dome
+#define tSongId data[0]
+void CreateTask_PlayMapChosenOrBattleBGM(u16 songId)
{
u8 taskId;
ResetMapMusic();
m4aMPlayAllStop();
- taskId = CreateTask(sub_806E6CC, 0);
- gTasks[taskId].data[0] = songId;
+ taskId = CreateTask(Task_PlayMapChosenOrBattleBGM, 0);
+ gTasks[taskId].tSongId = songId;
}
-static void sub_806E6CC(u8 taskId)
+static void Task_PlayMapChosenOrBattleBGM(u8 taskId)
{
- if (gTasks[taskId].data[0])
- PlayNewMapMusic(gTasks[taskId].data[0]);
+ if (gTasks[taskId].tSongId)
+ PlayNewMapMusic(gTasks[taskId].tSongId);
else
PlayNewMapMusic(GetBattleBGM());
DestroyTask(taskId);
}
+#undef tSongId
+
const u32 *GetMonFrontSpritePal(struct Pokemon *mon)
{
u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0);
@@ -6804,19 +6819,14 @@ static bool8 ShouldSkipFriendshipChange(void)
return FALSE;
}
-#define FORCE_SIGNED(x)(-(x * (-1)))
-
static void sub_806F160(struct Unknown_806F160_Struct* structPtr)
{
u16 i, j;
- for (i = 0; i < FORCE_SIGNED(structPtr->field_0_0); i++)
+ for (i = 0; i < structPtr->field_0_0; i++)
{
structPtr->templates[i] = gUnknown_08329D98[i];
for (j = 0; j < structPtr->field_1; j++)
{
- #ifndef NONMATCHING
- asm("");
- #endif
structPtr->frameImages[i * structPtr->field_1 + j].data = &structPtr->byteArrays[i][j * 0x800];
}
structPtr->templates[i].images = &structPtr->frameImages[i * structPtr->field_1];
@@ -6826,7 +6836,7 @@ static void sub_806F160(struct Unknown_806F160_Struct* structPtr)
static void sub_806F1FC(struct Unknown_806F160_Struct* structPtr)
{
u16 i, j;
- for (i = 0; i < FORCE_SIGNED(structPtr->field_0_0); i++)
+ for (i = 0; i < structPtr->field_0_0; i++)
{
structPtr->templates[i] = gUnknown_08329F28;
for (j = 0; j < structPtr->field_1; j++)
@@ -6878,7 +6888,7 @@ struct Unknown_806F160_Struct *sub_806F2AC(u8 id, u8 arg1)
}
else
{
- for (i = 0; i < FORCE_SIGNED(structPtr->field_0_0); i++)
+ for (i = 0; i < structPtr->field_0_0; i++)
structPtr->byteArrays[i] = structPtr->bytes + (structPtr->field_3_0 * (i << 0xD));
}
@@ -6974,7 +6984,7 @@ u8 *sub_806F4F8(u8 id, u8 arg1)
}
else
{
- if (arg1 >= FORCE_SIGNED(structPtr->field_0_0))
+ if (arg1 >= structPtr->field_0_0)
arg1 = 0;
return structPtr->byteArrays[arg1];
diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c
index 37abb90e9..c4077aff4 100644
--- a/src/pokemon_animation.c
+++ b/src/pokemon_animation.c
@@ -8,7 +8,6 @@
#include "util.h"
#include "constants/battle_anim.h"
#include "constants/rgb.h"
-#include "constants/species.h"
struct UnkAnimStruct
{
@@ -1042,6 +1041,14 @@ static void sub_817F77C(struct Sprite *sprite)
sprite->oam.matrixNum |= (sprite->hFlip << 3);
sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
}
+#ifdef BUGFIX
+ else
+ {
+ // FIX: Reset these back to normal after they were changed so Poké Ball catch/release
+ // animations without a screen transition in between don't break
+ sprite->affineAnims = gUnknown_082FF694;
+ }
+#endif // BUGFIX
}
static void pokemonanimfunc_01(struct Sprite *sprite)
@@ -2884,13 +2891,9 @@ static void sub_8181C2C(struct Sprite *sprite)
}
else
{
- #ifndef NONMATCHING
- register s32 var asm("r4") = sUnknown_03001240[sprite->data[0]].field_8;
- #else
- s32 var = sUnknown_03001240[sprite->data[0]].field_8;
- #endif
+ s32 var = sUnknown_03001240[sprite->data[0]].field_8;
- sprite->pos2.x = (var << 3) * (counter % 128) / 128 - (sUnknown_03001240[sprite->data[0]].field_8 * 8);
+ sprite->pos2.x = var * ((counter % 128) * 8) / 128 + 8 * -var;
sprite->pos2.y = -(Sin(counter % 128, 8));
}
diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c
index 7d8c65d7c..b85a29151 100644
--- a/src/pokemon_icon.c
+++ b/src/pokemon_icon.c
@@ -4,7 +4,6 @@
#include "palette.h"
#include "pokemon_icon.h"
#include "sprite.h"
-#include "constants/species.h"
#define POKE_ICON_BASE_PAL_TAG 56000
diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c
index 81f3a784f..914752eb4 100755
--- a/src/pokemon_jump.c
+++ b/src/pokemon_jump.c
@@ -29,7 +29,6 @@
#include "pokemon_jump.h"
#include "constants/rgb.h"
#include "constants/songs.h"
-#include "constants/species.h"
struct PokemonJump1_MonInfo
{
@@ -1245,7 +1244,7 @@ static bool32 sub_802B8CC(void)
break;
// fall through
case 1:
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
sub_802C164();
sub_802AE14(3);
@@ -1336,7 +1335,7 @@ static bool32 sub_802BA58(void)
case 2:
case 5:
gUnknown_02022CFC->unk3C++;
- if (gMain.newKeys & (A_BUTTON | B_BUTTON) || gUnknown_02022CFC->unk3C > 180)
+ if (JOY_NEW(A_BUTTON | B_BUTTON) || gUnknown_02022CFC->unk3C > 180)
{
sub_802DA14();
gUnknown_02022CFC->unkA++;
@@ -3922,7 +3921,7 @@ static void Task_ShowPokemonJumpRecords(u8 taskId)
data[0]++;
break;
case 2:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
rbox_fill_rectangle(data[1]);
CopyWindowToVram(data[1], 1);
diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c
index 914d68925..f8b361912 100644
--- a/src/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
@@ -6,7 +6,6 @@
#include "pokemon_size_record.h"
#include "string_util.h"
#include "text.h"
-#include "constants/species.h"
#define DEFAULT_MAX_SIZE 0x8000 // was 0x8100 in Ruby/Sapphire
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index 546f50dce..4be1cf729 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -41,7 +41,6 @@
#include "constants/moves.h"
#include "constants/rgb.h"
#include "constants/songs.h"
-#include "constants/species.h"
struct WallpaperTable
{
@@ -1756,10 +1755,10 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
{
case MENU_NOTHING_CHOSEN:
task->data[3] = task->data[1];
- if (gMain.newKeys & DPAD_UP && --task->data[3] < 0)
+ if (JOY_NEW(DPAD_UP) && --task->data[3] < 0)
task->data[3] = 4;
- if (gMain.newKeys & DPAD_DOWN && ++task->data[3] > 4)
+ if (JOY_NEW(DPAD_DOWN) && ++task->data[3] > 4)
task->data[3] = 0;
if (task->data[1] != task->data[3])
{
@@ -1798,13 +1797,13 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
}
break;
case 3:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ 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;
}
- else if (gMain.newKeys & DPAD_UP)
+ else if (JOY_NEW(DPAD_UP))
{
if (--task->data[1] < 0)
task->data[1] = 4;
@@ -1814,7 +1813,7 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3);
task->data[0] = 2;
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
if (++task->data[1] > 3)
task->data[1] = 0;
@@ -1976,22 +1975,22 @@ static void sub_80C78E4(void)
static u8 HandleBoxChooseSelectionInput(void)
{
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
return 201;
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
return gUnknown_02039D04->curBox;
}
- if (gMain.newKeys & DPAD_LEFT)
+ if (JOY_NEW(DPAD_LEFT))
{
PlaySE(SE_SELECT);
sub_80C7BB4();
}
- else if (gMain.newKeys & DPAD_RIGHT)
+ else if (JOY_NEW(DPAD_RIGHT))
{
PlaySE(SE_SELECT);
sub_80C7B80();
@@ -2393,7 +2392,7 @@ static void Cb_ReshowPSS(u8 taskId)
}
break;
case 2:
- if (!IsDma3ManagerBusyWithBgCopy() && gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (!IsDma3ManagerBusyWithBgCopy() && JOY_NEW(A_BUTTON | B_BUTTON))
{
ClearBottomWindow();
sPSSData->state++;
@@ -2615,7 +2614,7 @@ static void Cb_MainPSS(u8 taskId)
}
break;
case 3:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
sPSSData->state = 0;
@@ -2632,7 +2631,7 @@ static void Cb_MainPSS(u8 taskId)
sPSSData->state = 6;
break;
case 6:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
SetPSSCallback(Cb_MainPSS);
@@ -2858,7 +2857,7 @@ static void Cb_OnSelectedMon(u8 taskId)
sPSSData->state = 6;
break;
case 6:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
SetPSSCallback(Cb_MainPSS);
@@ -2943,7 +2942,7 @@ static void Cb_WithdrawMon(u8 taskId)
}
break;
case 1:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
SetPSSCallback(Cb_MainPSS);
@@ -3034,7 +3033,7 @@ static void Cb_DepositMenu(u8 taskId)
}
break;
case 4:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX);
sPSSData->state = 1;
@@ -3095,14 +3094,14 @@ static void Cb_ReleaseMon(u8 taskId)
sPSSData->state++;
break;
case 4:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
PrintStorageActionText(PC_TEXT_BYE_BYE);
sPSSData->state++;
}
break;
case 5:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
if (sInPartyMenu)
@@ -3134,14 +3133,14 @@ static void Cb_ReleaseMon(u8 taskId)
sPSSData->state++;
break;
case 9:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
PrintStorageActionText(PC_TEXT_SURPRISE);
sPSSData->state++;
}
break;
case 10:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
sub_80CC064();
@@ -3157,14 +3156,14 @@ static void Cb_ReleaseMon(u8 taskId)
}
break;
case 12:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
PrintStorageActionText(PC_TEXT_WORRIED);
sPSSData->state++;
}
break;
case 13:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
SetPSSCallback(Cb_MainPSS);
@@ -3184,7 +3183,7 @@ static void Cb_ShowMarkMenu(u8 taskId)
sPSSData->state++;
break;
case 1:
- if (!sub_811FBA4())
+ if (!MonMarkingsMenuHandleInput())
{
sub_811FAF8();
ClearBottomWindow();
@@ -3257,7 +3256,7 @@ static void Cb_GiveMovingItemToMon(u8 taskId)
}
break;
case 3:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
sPSSData->state++;
@@ -3296,7 +3295,7 @@ static void Cb_ItemToBag(u8 taskId)
}
break;
case 2:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
sub_80CE00C();
@@ -3309,7 +3308,7 @@ static void Cb_ItemToBag(u8 taskId)
SetPSSCallback(Cb_MainPSS);
break;
case 3:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
SetPSSCallback(Cb_MainPSS);
@@ -3349,7 +3348,7 @@ static void Cb_SwitchSelectedItem(u8 taskId)
}
break;
case 3:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
sPSSData->state++;
@@ -3388,7 +3387,7 @@ static void Cb_ShowItemInfo(u8 taskId)
sPSSData->state++;
break;
case 4:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
PlaySE(SE_WIN_OPEN);
sPSSData->state++;
@@ -3438,7 +3437,7 @@ static void Cb_CloseBoxWhileHoldingItem(u8 taskId)
}
break;
case 2:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
sPSSData->state = 5;
@@ -3494,7 +3493,7 @@ static void Cb_PrintCantStoreMail(u8 taskId)
sPSSData->state++;
break;
case 2:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
sPSSData->state++;
@@ -3759,7 +3758,7 @@ static void Cb_OnCloseBoxPressed(u8 taskId)
}
break;
case 1:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
SetPSSCallback(Cb_MainPSS);
@@ -3820,7 +3819,7 @@ static void Cb_OnBPressed(u8 taskId)
}
break;
case 1:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
SetPSSCallback(Cb_MainPSS);
@@ -5462,7 +5461,7 @@ static void sub_80CCA3C(const void *tilemap, s8 direction, u8 arg2)
if (direction == 0)
return;
- else if (direction > 0)
+ if (direction > 0)
x *= 1, x += 0x14; // x * 1 is needed to match, but can be safely removed as it makes no functional difference
else
x -= 4;
@@ -6778,11 +6777,11 @@ static void SetCursorMonData(void *pokemon, u8 mode)
{
u8 *txtPtr;
u16 gender;
- bool8 sanityIsBagEgg;
+ bool8 sanityIsBadEgg;
sPSSData->cursorMonItem = 0;
gender = MON_MALE;
- sanityIsBagEgg = FALSE;
+ sanityIsBadEgg = FALSE;
if (mode == MODE_PARTY)
{
struct Pokemon *mon = (struct Pokemon *)pokemon;
@@ -6790,8 +6789,8 @@ static void SetCursorMonData(void *pokemon, u8 mode)
sPSSData->cursorMonSpecies = GetMonData(mon, MON_DATA_SPECIES2);
if (sPSSData->cursorMonSpecies != SPECIES_NONE)
{
- sanityIsBagEgg = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG);
- if (sanityIsBagEgg)
+ sanityIsBadEgg = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG);
+ if (sanityIsBadEgg)
sPSSData->cursorMonIsEgg = TRUE;
else
sPSSData->cursorMonIsEgg = GetMonData(mon, MON_DATA_IS_EGG);
@@ -6814,8 +6813,8 @@ static void SetCursorMonData(void *pokemon, u8 mode)
if (sPSSData->cursorMonSpecies != SPECIES_NONE)
{
u32 otId = GetBoxMonData(boxMon, MON_DATA_OT_ID);
- sanityIsBagEgg = GetBoxMonData(boxMon, MON_DATA_SANITY_IS_BAD_EGG);
- if (sanityIsBagEgg)
+ sanityIsBadEgg = GetBoxMonData(boxMon, MON_DATA_SANITY_IS_BAD_EGG);
+ if (sanityIsBadEgg)
sPSSData->cursorMonIsEgg = TRUE;
else
sPSSData->cursorMonIsEgg = GetBoxMonData(boxMon, MON_DATA_IS_EGG);
@@ -6847,7 +6846,7 @@ static void SetCursorMonData(void *pokemon, u8 mode)
}
else if (sPSSData->cursorMonIsEgg)
{
- if (sanityIsBagEgg)
+ if (sanityIsBadEgg)
StringCopyPadded(sPSSData->cursorMonNickText, sPSSData->cursorMonNick, CHAR_SPACE, 5);
else
StringCopyPadded(sPSSData->cursorMonNickText, gText_EggNickname, CHAR_SPACE, 8);
@@ -6940,7 +6939,7 @@ static u8 InBoxInput_Normal(void)
sPSSData->field_CD3 = 0;
sPSSData->field_CD7 = 0;
- if (gMain.newAndRepeatedKeys & DPAD_UP)
+ if (JOY_REPEAT(DPAD_UP))
{
retVal = TRUE;
if (sBoxCursorPosition >= IN_BOX_ROWS)
@@ -6954,7 +6953,7 @@ static u8 InBoxInput_Normal(void)
}
break;
}
- else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ else if (JOY_REPEAT(DPAD_DOWN))
{
retVal = TRUE;
cursorPosition += IN_BOX_ROWS;
@@ -6968,7 +6967,7 @@ static u8 InBoxInput_Normal(void)
}
break;
}
- else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ else if (JOY_REPEAT(DPAD_LEFT))
{
retVal = TRUE;
if (sBoxCursorPosition % IN_BOX_ROWS != 0)
@@ -6982,7 +6981,7 @@ static u8 InBoxInput_Normal(void)
}
break;
}
- else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ else if (JOY_REPEAT(DPAD_RIGHT))
{
retVal = TRUE;
if ((sBoxCursorPosition + 1) % IN_BOX_ROWS != 0)
@@ -6996,7 +6995,7 @@ static u8 InBoxInput_Normal(void)
}
break;
}
- else if (gMain.newKeys & START_BUTTON)
+ else if (JOY_NEW(START_BUTTON))
{
retVal = TRUE;
cursorArea = CURSOR_AREA_BOX;
@@ -7004,7 +7003,7 @@ static u8 InBoxInput_Normal(void)
break;
}
- if ((gMain.newKeys & A_BUTTON) && sub_80CFA5C())
+ if ((JOY_NEW(A_BUTTON)) && sub_80CFA5C())
{
if (!sCanOnlyMove)
return 8;
@@ -7038,18 +7037,18 @@ static u8 InBoxInput_Normal(void)
}
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
return 19;
if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
{
- if (gMain.heldKeys & L_BUTTON)
+ if (JOY_HELD(L_BUTTON))
return 10;
- if (gMain.heldKeys & R_BUTTON)
+ if (JOY_HELD(R_BUTTON))
return 9;
}
- if (gMain.newKeys & SELECT_BUTTON)
+ if (JOY_NEW(SELECT_BUTTON))
{
sub_80CFDC4();
return 0;
@@ -7067,9 +7066,9 @@ static u8 InBoxInput_Normal(void)
static u8 InBoxInput_GrabbingMultiple(void)
{
- if (gMain.heldKeys & A_BUTTON)
+ if (JOY_HELD(A_BUTTON))
{
- if (gMain.newAndRepeatedKeys & DPAD_UP)
+ if (JOY_REPEAT(DPAD_UP))
{
if (sBoxCursorPosition / IN_BOX_ROWS != 0)
{
@@ -7081,7 +7080,7 @@ static u8 InBoxInput_GrabbingMultiple(void)
return 24;
}
}
- else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ else if (JOY_REPEAT(DPAD_DOWN))
{
if (sBoxCursorPosition + IN_BOX_ROWS < IN_BOX_COUNT)
{
@@ -7093,7 +7092,7 @@ static u8 InBoxInput_GrabbingMultiple(void)
return 24;
}
}
- else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ else if (JOY_REPEAT(DPAD_LEFT))
{
if (sBoxCursorPosition % IN_BOX_ROWS != 0)
{
@@ -7105,7 +7104,7 @@ static u8 InBoxInput_GrabbingMultiple(void)
return 24;
}
}
- else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ else if (JOY_REPEAT(DPAD_RIGHT))
{
if ((sBoxCursorPosition + 1) % IN_BOX_ROWS != 0)
{
@@ -7142,7 +7141,7 @@ static u8 InBoxInput_GrabbingMultiple(void)
static u8 InBoxInput_MovingMultiple(void)
{
- if (gMain.newAndRepeatedKeys & DPAD_UP)
+ if (JOY_REPEAT(DPAD_UP))
{
if (sub_80D0580(0))
{
@@ -7154,7 +7153,7 @@ static u8 InBoxInput_MovingMultiple(void)
return 24;
}
}
- else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ else if (JOY_REPEAT(DPAD_DOWN))
{
if (sub_80D0580(1))
{
@@ -7166,7 +7165,7 @@ static u8 InBoxInput_MovingMultiple(void)
return 24;
}
}
- else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ else if (JOY_REPEAT(DPAD_LEFT))
{
if (sub_80D0580(2))
{
@@ -7178,7 +7177,7 @@ static u8 InBoxInput_MovingMultiple(void)
return 10;
}
}
- else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ else if (JOY_REPEAT(DPAD_RIGHT))
{
if (sub_80D0580(3))
{
@@ -7190,7 +7189,7 @@ static u8 InBoxInput_MovingMultiple(void)
return 9;
}
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
if (sub_80D0BC0())
{
@@ -7203,7 +7202,7 @@ static u8 InBoxInput_MovingMultiple(void)
return 24;
}
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
return 24;
}
@@ -7211,9 +7210,9 @@ static u8 InBoxInput_MovingMultiple(void)
{
if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
{
- if (gMain.heldKeys & L_BUTTON)
+ if (JOY_HELD(L_BUTTON))
return 10;
- if (gMain.heldKeys & R_BUTTON)
+ if (JOY_HELD(R_BUTTON))
return 9;
}
@@ -7238,7 +7237,7 @@ static u8 HandleInput_InParty(void)
gotoBox = FALSE;
retVal = 0;
- if (gMain.newAndRepeatedKeys & DPAD_UP)
+ if (JOY_REPEAT(DPAD_UP))
{
if (--cursorPosition < 0)
cursorPosition = PARTY_SIZE;
@@ -7246,7 +7245,7 @@ static u8 HandleInput_InParty(void)
retVal = 1;
break;
}
- else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ else if (JOY_REPEAT(DPAD_DOWN))
{
if (++cursorPosition > PARTY_SIZE)
cursorPosition = 0;
@@ -7254,14 +7253,14 @@ static u8 HandleInput_InParty(void)
retVal = 1;
break;
}
- else if (gMain.newAndRepeatedKeys & DPAD_LEFT && sBoxCursorPosition != 0)
+ else if (JOY_REPEAT(DPAD_LEFT) && sBoxCursorPosition != 0)
{
retVal = 1;
sPSSData->field_CD6 = sBoxCursorPosition;
cursorPosition = 0;
break;
}
- else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ else if (JOY_REPEAT(DPAD_RIGHT))
{
if (sBoxCursorPosition == 0)
{
@@ -7277,7 +7276,7 @@ static u8 HandleInput_InParty(void)
break;
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
if (sBoxCursorPosition == PARTY_SIZE)
{
@@ -7313,7 +7312,7 @@ static u8 HandleInput_InParty(void)
}
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
if (sPSSData->boxOption == BOX_OPTION_DEPOSIT)
return 19;
@@ -7327,7 +7326,7 @@ static u8 HandleInput_InParty(void)
cursorArea = CURSOR_AREA_IN_BOX;
cursorPosition = 0;
}
- else if (gMain.newKeys & SELECT_BUTTON)
+ else if (JOY_NEW(SELECT_BUTTON))
{
sub_80CFDC4();
return 0;
@@ -7356,7 +7355,7 @@ static u8 HandleInput_OnBox(void)
sPSSData->field_CD2 = 0;
sPSSData->field_CD7 = 0;
- if (gMain.newAndRepeatedKeys & DPAD_UP)
+ if (JOY_REPEAT(DPAD_UP))
{
retVal = 1;
cursorArea = CURSOR_AREA_BUTTONS;
@@ -7364,7 +7363,7 @@ static u8 HandleInput_OnBox(void)
sPSSData->field_CD7 = 1;
break;
}
- else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ else if (JOY_REPEAT(DPAD_DOWN))
{
retVal = 1;
cursorArea = CURSOR_AREA_IN_BOX;
@@ -7372,30 +7371,30 @@ static u8 HandleInput_OnBox(void)
break;
}
- if (gMain.heldKeys & DPAD_LEFT)
+ if (JOY_HELD(DPAD_LEFT))
return 10;
- if (gMain.heldKeys & DPAD_RIGHT)
+ if (JOY_HELD(DPAD_RIGHT))
return 9;
if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
{
- if (gMain.heldKeys & L_BUTTON)
+ if (JOY_HELD(L_BUTTON))
return 10;
- if (gMain.heldKeys & R_BUTTON)
+ if (JOY_HELD(R_BUTTON))
return 9;
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
sub_80CD1A8(FALSE);
AddBoxMenu();
return 7;
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
return 19;
- if (gMain.newKeys & SELECT_BUTTON)
+ if (JOY_NEW(SELECT_BUTTON))
{
sub_80CFDC4();
return 0;
@@ -7429,7 +7428,7 @@ static u8 HandleInput_OnButtons(void)
sPSSData->field_CD2 = 0;
sPSSData->field_CD7 = 0;
- if (gMain.newAndRepeatedKeys & DPAD_UP)
+ if (JOY_REPEAT(DPAD_UP))
{
retVal = 1;
cursorArea = CURSOR_AREA_IN_BOX;
@@ -7441,7 +7440,8 @@ static u8 HandleInput_OnButtons(void)
sPSSData->field_CD7 = 1;
break;
}
- else if (gMain.newAndRepeatedKeys & (DPAD_DOWN | START_BUTTON))
+
+ if (JOY_REPEAT(DPAD_DOWN | START_BUTTON))
{
retVal = 1;
cursorArea = CURSOR_AREA_BOX;
@@ -7450,14 +7450,14 @@ static u8 HandleInput_OnButtons(void)
break;
}
- if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ if (JOY_REPEAT(DPAD_LEFT))
{
retVal = 1;
if (--cursorPosition < 0)
cursorPosition = 1;
break;
}
- else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ else if (JOY_REPEAT(DPAD_RIGHT))
{
retVal = 1;
if (++cursorPosition > 1)
@@ -7465,12 +7465,12 @@ static u8 HandleInput_OnButtons(void)
break;
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
return (cursorPosition == 0) ? 5 : 4;
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
return 19;
- if (gMain.newKeys & SELECT_BUTTON)
+ if (JOY_NEW(SELECT_BUTTON))
{
sub_80CFDC4();
return 0;
@@ -7919,23 +7919,23 @@ static s16 sub_80D00AC(void)
do
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
textId = Menu_GetCursorPos();
break;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
textId = -1;
}
- if (gMain.newKeys & DPAD_UP)
+ if (JOY_NEW(DPAD_UP))
{
PlaySE(SE_SELECT);
Menu_MoveCursor(-1);
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
PlaySE(SE_SELECT);
Menu_MoveCursor(1);
@@ -8408,8 +8408,13 @@ static void sub_80D08CC(void)
for (j = sMoveMonsPtr->minRow; j < rowCount; 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
monArrayId++;
boxPosition++;
}
@@ -9329,10 +9334,11 @@ u32 GetBoxMonLevelAt(u8 boxId, u8 boxPosition)
{
u32 lvl;
- // BUG: Missed 'else' statement.
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]);
- // else
+ #ifdef BUGFIX
+ else
+ #endif
lvl = 0;
return lvl;
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index d016c455c..fce2a893c 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -46,7 +46,6 @@
#include "constants/region_map_sections.h"
#include "constants/rgb.h"
#include "constants/songs.h"
-#include "constants/species.h"
// Screen titles (upper left)
#define PSS_LABEL_WINDOW_POKEMON_INFO_TITLE 0
@@ -1497,23 +1496,23 @@ static void Task_HandleInput(u8 taskId)
{
if (MenuHelpers_CallLinkSomething() != TRUE && !gPaletteFade.active)
{
- if (gMain.newKeys & DPAD_UP)
+ if (JOY_NEW(DPAD_UP))
{
ChangeSummaryPokemon(taskId, -1);
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
ChangeSummaryPokemon(taskId, 1);
}
- else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysPressed() == MENU_L_PRESSED)
+ else if ((JOY_NEW(DPAD_LEFT)) || GetLRKeysPressed() == MENU_L_PRESSED)
{
ChangePage(taskId, -1);
}
- else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysPressed() == MENU_R_PRESSED)
+ else if ((JOY_NEW(DPAD_RIGHT)) || GetLRKeysPressed() == MENU_R_PRESSED)
{
ChangePage(taskId, 1);
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
if (sMonSummaryScreen->currPageIndex != PSS_PAGE_SKILLS)
{
@@ -1530,7 +1529,7 @@ static void Task_HandleInput(u8 taskId)
}
}
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
StopPokemonAnimations();
PlaySE(SE_SELECT);
@@ -1878,17 +1877,17 @@ static void Task_HandleInput_MoveSelect(u8 taskId)
if (MenuHelpers_CallLinkSomething() != 1)
{
- if (gMain.newKeys & DPAD_UP)
+ if (JOY_NEW(DPAD_UP))
{
data[0] = 4;
ChangeSelectedMove(data, -1, &sMonSummaryScreen->firstMoveIndex);
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
data[0] = 4;
ChangeSelectedMove(data, 1, &sMonSummaryScreen->firstMoveIndex);
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
if (sMonSummaryScreen->lockMovesFlag == TRUE
|| (sMonSummaryScreen->newMove == MOVE_NONE && sMonSummaryScreen->firstMoveIndex == MAX_MON_MOVES))
@@ -1906,7 +1905,7 @@ static void Task_HandleInput_MoveSelect(u8 taskId)
PlaySE(SE_FAILURE);
}
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
CloseMoveSelectMode(taskId);
@@ -2018,24 +2017,24 @@ static void Task_HandleInput_MovePositionSwitch(u8 taskId)
if (MenuHelpers_CallLinkSomething() != TRUE)
{
- if (gMain.newKeys & DPAD_UP)
+ if (JOY_NEW(DPAD_UP))
{
data[0] = 3;
ChangeSelectedMove(&data[0], -1, &sMonSummaryScreen->secondMoveIndex);
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
data[0] = 3;
ChangeSelectedMove(&data[0], 1, &sMonSummaryScreen->secondMoveIndex);
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
if (sMonSummaryScreen->firstMoveIndex == sMonSummaryScreen->secondMoveIndex)
ExitMovePositionSwitchMode(taskId, FALSE);
else
ExitMovePositionSwitchMode(taskId, TRUE);
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
ExitMovePositionSwitchMode(taskId, FALSE);
}
@@ -2161,25 +2160,25 @@ static void Task_HandleReplaceMoveInput(u8 taskId)
{
if (gPaletteFade.active != TRUE)
{
- if (gMain.newKeys & DPAD_UP)
+ if (JOY_NEW(DPAD_UP))
{
data[0] = 4;
ChangeSelectedMove(data, -1, &sMonSummaryScreen->firstMoveIndex);
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
data[0] = 4;
ChangeSelectedMove(data, 1, &sMonSummaryScreen->firstMoveIndex);
}
- else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED)
+ else if (JOY_NEW(DPAD_LEFT) || GetLRKeysPressed() == MENU_L_PRESSED)
{
ChangePage(taskId, -1);
}
- else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED)
+ else if (JOY_NEW(DPAD_RIGHT) || GetLRKeysPressed() == MENU_R_PRESSED)
{
ChangePage(taskId, 1);
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
if (CanReplaceMove() == TRUE)
{
@@ -2195,7 +2194,7 @@ static void Task_HandleReplaceMoveInput(u8 taskId)
ShowCantForgetHMsWindow(taskId);
}
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
StopPokemonAnimations();
PlaySE(SE_SELECT);
@@ -2235,7 +2234,7 @@ static void Task_HandleInputCantForgetHMsMoves(u8 taskId)
u16 move;
if (FuncIsActiveTask(Task_ShowPowerAccWindow) != 1)
{
- if (gMain.newKeys & DPAD_UP)
+ if (JOY_NEW(DPAD_UP))
{
data[1] = 1;
data[0] = 4;
@@ -2243,7 +2242,7 @@ static void Task_HandleInputCantForgetHMsMoves(u8 taskId)
data[1] = 0;
gTasks[taskId].func = Task_HandleReplaceMoveInput;
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
data[1] = 1;
data[0] = 4;
@@ -2251,7 +2250,7 @@ static void Task_HandleInputCantForgetHMsMoves(u8 taskId)
data[1] = 0;
gTasks[taskId].func = Task_HandleReplaceMoveInput;
}
- else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED)
+ else if (JOY_NEW(DPAD_LEFT) || GetLRKeysPressed() == MENU_L_PRESSED)
{
if (sMonSummaryScreen->currPageIndex != PSS_PAGE_BATTLE_MOVES)
{
@@ -2265,7 +2264,7 @@ static void Task_HandleInputCantForgetHMsMoves(u8 taskId)
HandleAppealJamTilemap(9, -2, move);
}
}
- else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED)
+ else if (JOY_NEW(DPAD_RIGHT) || GetLRKeysPressed() == MENU_R_PRESSED)
{
if (sMonSummaryScreen->currPageIndex != PSS_PAGE_CONTEST_MOVES)
{
@@ -2279,7 +2278,7 @@ static void Task_HandleInputCantForgetHMsMoves(u8 taskId)
HandleAppealJamTilemap(9, -2, move);
}
}
- else if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ else if (JOY_NEW(A_BUTTON | B_BUTTON))
{
ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES);
if (!gSprites[sMonSummaryScreen->spriteIds[SPRITE_ARR_ID_STATUS]].invisible)
@@ -2579,7 +2578,7 @@ static void DrawPokerusCuredSymbol(struct Pokemon *mon) // This checks if the mo
ScheduleBgCopyTilemapToVram(3);
}
-static void SetDexNumberColor(bool8 isMonShiny)
+static void SetMonPicBackgroundPalette(bool8 isMonShiny)
{
if (!isMonShiny)
SetBgTilemapPalette(3, 1, 4, 8, 8, 0);
@@ -2716,12 +2715,12 @@ static void PrintNotEggInfo(void)
if (!IsMonShiny(mon))
{
PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, gStringVar1, 0, 1, 0, 1);
- SetDexNumberColor(FALSE);
+ SetMonPicBackgroundPalette(FALSE);
}
else
{
PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, gStringVar1, 0, 1, 0, 7);
- SetDexNumberColor(TRUE);
+ SetMonPicBackgroundPalette(TRUE);
}
PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER);
}
@@ -2729,9 +2728,9 @@ static void PrintNotEggInfo(void)
{
ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER);
if (!IsMonShiny(mon))
- SetDexNumberColor(FALSE);
+ SetMonPicBackgroundPalette(FALSE);
else
- SetDexNumberColor(TRUE);
+ SetMonPicBackgroundPalette(TRUE);
}
StringCopy(gStringVar1, gText_LevelSymbol);
ConvertIntToDecimalStringN(gStringVar2, summary->level, STR_CONV_MODE_LEFT_ALIGN, 3);
@@ -3859,18 +3858,18 @@ static u8 LoadMonGfxAndSprite(struct Pokemon *mon, s16 *state)
if (gMain.inBattle)
{
if (sub_80688F8(3, sMonSummaryScreen->curMonIndex))
- HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid);
+ HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites.ptr[1], summary->species2, summary->pid);
else
- HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid);
+ HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites.ptr[1], summary->species2, summary->pid);
}
else
{
if (gMonSpritesGfxPtr != NULL)
{
if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == PSS_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE)
- HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid);
+ HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites.ptr[1], summary->species2, summary->pid);
else
- HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid);
+ HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites.ptr[1], summary->species2, summary->pid);
}
else
{
@@ -3977,7 +3976,7 @@ static void StopPokemonAnimations(void) // A subtle effect, this function stops
static void CreateMonMarkingsSprite(struct Pokemon *mon)
{
- struct Sprite *sprite = sub_811FF94(TAG_MON_MARKINGS, TAG_MON_MARKINGS, sSummaryMarkingsPalette);
+ struct Sprite *sprite = CreateMonMarkingsSpriteWithPal(TAG_MON_MARKINGS, TAG_MON_MARKINGS, sSummaryMarkingsPalette);
sMonSummaryScreen->markingsSprite = sprite;
if (sprite != NULL)
diff --git a/src/pokenav.c b/src/pokenav.c
index 8ea33575a..eac0c85b4 100644
--- a/src/pokenav.c
+++ b/src/pokenav.c
@@ -14,8 +14,6 @@
#define LOOPED_TASK_PRIMARY_ID(taskId) (taskId & 0xFFFF)
#define LOOPED_TASK_SECONDARY_ID(taskId) (taskId >> 16)
-#define SUBSTRUCT_COUNT 19
-
struct PokenavResources
{
u32 (*currentMenuCb1)(void);
@@ -23,7 +21,7 @@ struct PokenavResources
u16 mode;
u16 conditionSearchId;
bool32 hasAnyRibbons;
- void *field10[SUBSTRUCT_COUNT];
+ void *substructPtrs[POKENAV_SUBSTRUCT_COUNT];
};
struct PokenavCallbacks
@@ -38,7 +36,7 @@ struct PokenavCallbacks
};
static u32 GetCurrentMenuCB(void);
-static u32 sub_81C75D4(void);
+static u32 IsActiveMenuLoopTaskActive_(void);
static bool32 SetActivePokenavMenu(u32 menuId);
static bool32 AnyMonHasRibbon(void);
static void InitPokenavResources(struct PokenavResources *a0);
@@ -126,43 +124,43 @@ const struct PokenavCallbacks PokenavMenuCallbacks[15] =
},
[POKENAV_CONDITION_PARTY - POKENAV_MENU_IDS_START] =
{
- .init = PokenavCallback_Init_7,
- .callback = sub_81CD070,
- .open = sub_81CDDD4,
- .createLoopTask = sub_81CDE2C,
- .isLoopTaskActive = sub_81CDE64,
- .free1 = sub_81CD1C0,
- .free2 = sub_81CECA0,
+ .init = PokenavCallback_Init_PartyCondition,
+ .callback = GetPartyConditionCallback,
+ .open = OpenPartyConditionMenu,
+ .createLoopTask = CreatePartyConditionLoopedTask,
+ .isLoopTaskActive = IsPartyConditionLoopedTaskActive,
+ .free1 = FreePartyConditionSubstruct1,
+ .free2 = FreePartyConditionSubstruct2,
},
[POKENAV_CONDITION_SEARCH_RESULTS - POKENAV_MENU_IDS_START] =
{
- .init = PokenavCallback_Init_8,
- .callback = sub_81CEFDC,
- .open = sub_81CF330,
- .createLoopTask = sub_81CF3A0,
- .isLoopTaskActive = sub_81CF3D0,
- .free1 = sub_81CEFF0,
- .free2 = sub_81CF3F8,
+ .init = PokenavCallback_Init_ConditionSearch,
+ .callback = GetConditionSearchResultsCallback,
+ .open = OpenConditionSearchResults,
+ .createLoopTask = CreateSearchResultsLoopedTask,
+ .isLoopTaskActive = IsSearchResultLoopedTaskActive,
+ .free1 = FreeSearchResultSubstruct1,
+ .free2 = FreeSearchResultSubstruct2,
},
- [POKENAV_MENU_9 - POKENAV_MENU_IDS_START] =
+ [POKENAV_CONDITION_GRAPH_FROM_SEARCH - POKENAV_MENU_IDS_START] =
{
- .init = PokenavCallback_Init_9,
- .callback = sub_81CD070,
- .open = sub_81CDDD4,
- .createLoopTask = sub_81CDE2C,
- .isLoopTaskActive = sub_81CDE64,
- .free1 = sub_81CD1C0,
- .free2 = sub_81CECA0,
+ .init = PokenavCallback_Init_ConditionGraphFromSearch,
+ .callback = GetPartyConditionCallback,
+ .open = OpenPartyConditionMenu,
+ .createLoopTask = CreatePartyConditionLoopedTask,
+ .isLoopTaskActive = IsPartyConditionLoopedTaskActive,
+ .free1 = FreePartyConditionSubstruct1,
+ .free2 = FreePartyConditionSubstruct2,
},
- [POKENAV_MENU_A - POKENAV_MENU_IDS_START] =
+ [POKENAV_RETURN_CONDITION_SEARCH - POKENAV_MENU_IDS_START] =
{
- .init = PokenavCallback_Init_10,
- .callback = sub_81CEFDC,
- .open = sub_81CF368,
- .createLoopTask = sub_81CF3A0,
- .isLoopTaskActive = sub_81CF3D0,
- .free1 = sub_81CEFF0,
- .free2 = sub_81CF3F8,
+ .init = PokenavCallback_Init_ReturnToMonSearchList,
+ .callback = GetConditionSearchResultsCallback,
+ .open = OpenConditionSearchListFromGraph,
+ .createLoopTask = CreateSearchResultsLoopedTask,
+ .isLoopTaskActive = IsSearchResultLoopedTaskActive,
+ .free1 = FreeSearchResultSubstruct1,
+ .free2 = FreeSearchResultSubstruct2,
},
[POKENAV_MATCH_CALL - POKENAV_MENU_IDS_START] =
{
@@ -176,33 +174,33 @@ const struct PokenavCallbacks PokenavMenuCallbacks[15] =
},
[POKENAV_RIBBONS_MON_LIST - POKENAV_MENU_IDS_START] =
{
- .init = PokenavCallback_Init_12,
- .callback = sub_81CFA34,
- .open = sub_81CFDD0,
- .createLoopTask = sub_81CFE40,
- .isLoopTaskActive = sub_81CFE70,
- .free1 = sub_81CFA48,
- .free2 = sub_81CFE98,
+ .init = PokenavCallback_Init_MonRibbonList,
+ .callback = GetRibbonsMonListCallback,
+ .open = OpenRibbonsMonList,
+ .createLoopTask = CreateRibbonsMonListLoopedTask,
+ .isLoopTaskActive = IsRibbonsMonListLoopedTaskActive,
+ .free1 = FreeRibbonsMonList1,
+ .free2 = FreeRibbonsMonList2,
},
- [POKENAV_MENU_D - POKENAV_MENU_IDS_START] =
+ [POKENAV_RIBBONS_SUMMARY_SCREEN - POKENAV_MENU_IDS_START] =
{
- .init = PokenavCallback_Init_13,
- .callback = sub_81D04A0,
- .open = sub_81D0978,
- .createLoopTask = sub_81D09B0,
- .isLoopTaskActive = sub_81D09E0,
- .free1 = sub_81D04B8,
- .free2 = sub_81D09F4,
+ .init = PokenavCallback_Init_RibbonsSummaryMenu,
+ .callback = GetRibbonsSummaryMenuCallback,
+ .open = OpenRibbonsSummaryMenu,
+ .createLoopTask = CreateRibbonsSummaryLoopedTask,
+ .isLoopTaskActive = IsRibbonsSummaryLoopedTaskActive,
+ .free1 = FreeRibbonsSummaryScreen1,
+ .free2 = FreeRibbonsSummaryScreen2,
},
- [POKENAV_MENU_E - POKENAV_MENU_IDS_START] =
+ [POKENAV_RIBBONS_RETURN_TO_MON_LIST - POKENAV_MENU_IDS_START] =
{
- .init = PokenavCallback_Init_14,
- .callback = sub_81CFA34,
- .open = sub_81CFE08,
- .createLoopTask = sub_81CFE40,
- .isLoopTaskActive = sub_81CFE70,
- .free1 = sub_81CFA48,
- .free2 = sub_81CFE98,
+ .init = PokenavCallback_Init_RibbonsMonListFromSummary,
+ .callback = GetRibbonsMonListCallback,
+ .open = OpenRibbonsMonListFromRibbonsSummary,
+ .createLoopTask = CreateRibbonsMonListLoopedTask,
+ .isLoopTaskActive = IsRibbonsMonListLoopedTaskActive,
+ .free1 = FreeRibbonsMonList1,
+ .free2 = FreeRibbonsMonList2,
},
};
@@ -368,24 +366,24 @@ static void FreePokenavResources(void)
{
int i;
- for (i = 0; i < SUBSTRUCT_COUNT; i++)
+ for (i = 0; i < POKENAV_SUBSTRUCT_COUNT; i++)
FreePokenavSubstruct(i);
FREE_AND_SET_NULL(gPokenavResources);
InitKeys();
}
-static void InitPokenavResources(struct PokenavResources *a0)
+static void InitPokenavResources(struct PokenavResources *resources)
{
int i;
- for (i = 0; i < SUBSTRUCT_COUNT; i++)
- a0->field10[i] = NULL;
+ for (i = 0; i < POKENAV_SUBSTRUCT_COUNT; i++)
+ resources->substructPtrs[i] = NULL;
- a0->mode = POKENAV_MODE_NORMAL;
- a0->currentMenuIndex = 0;
- a0->hasAnyRibbons = AnyMonHasRibbon();
- a0->currentMenuCb1 = NULL;
+ resources->mode = POKENAV_MODE_NORMAL;
+ resources->currentMenuIndex = 0;
+ resources->hasAnyRibbons = AnyMonHasRibbon();
+ resources->currentMenuCb1 = NULL;
}
static bool32 AnyMonHasRibbon(void)
@@ -453,12 +451,12 @@ static void Task_Pokenav(u8 taskId)
tState = 4;
break;
case 2:
- if (sub_81C786C())
+ if (IsActiveMenuLoopTaskActive())
break;
tState = 3;
case 3:
menuId = GetCurrentMenuCB();
- if (menuId == -1)
+ if (menuId == POKENAV_MENU_FUNC_EXIT)
{
ShutdownPokenav();
tState = 5;
@@ -479,13 +477,13 @@ static void Task_Pokenav(u8 taskId)
}
else if (menuId != 0)
{
- sub_81C7850(menuId);
- if (sub_81C786C())
+ RunMainMenuLoopedTask(menuId);
+ if (IsActiveMenuLoopTaskActive())
tState = 2;
}
break;
case 4:
- if (!sub_81C75D4())
+ if (!IsActiveMenuLoopTaskActive_())
tState = 3;
break;
case 5:
@@ -516,15 +514,15 @@ static bool32 SetActivePokenavMenu(u32 menuId)
if (!PokenavMenuCallbacks[index].open())
return FALSE;
- sub_81C7834(PokenavMenuCallbacks[index].createLoopTask, PokenavMenuCallbacks[index].isLoopTaskActive);
+ SetActiveMenuLoopTasks(PokenavMenuCallbacks[index].createLoopTask, PokenavMenuCallbacks[index].isLoopTaskActive);
gPokenavResources->currentMenuCb1 = PokenavMenuCallbacks[index].callback;
gPokenavResources->currentMenuIndex = index;
return TRUE;
}
-static u32 sub_81C75D4(void)
+static u32 IsActiveMenuLoopTaskActive_(void)
{
- return sub_81C786C();
+ return IsActiveMenuLoopTaskActive();
}
static u32 GetCurrentMenuCB(void)
@@ -549,19 +547,19 @@ void SetPokenavVBlankCallback(void)
void *AllocSubstruct(u32 index, u32 size)
{
- gPokenavResources->field10[index] = Alloc(size);
- return gPokenavResources->field10[index];
+ gPokenavResources->substructPtrs[index] = Alloc(size);
+ return gPokenavResources->substructPtrs[index];
}
void *GetSubstructPtr(u32 index)
{
- return gPokenavResources->field10[index];
+ return gPokenavResources->substructPtrs[index];
}
void FreePokenavSubstruct(u32 index)
{
- if (gPokenavResources->field10[index] != NULL)
- FREE_AND_SET_NULL(gPokenavResources->field10[index]);
+ if (gPokenavResources->substructPtrs[index] != NULL)
+ FREE_AND_SET_NULL(gPokenavResources->substructPtrs[index]);
}
u32 GetPokenavMode(void)
diff --git a/src/pokenav_conditions_1.c b/src/pokenav_conditions_1.c
index 1c7573a44..c27cd410c 100644
--- a/src/pokenav_conditions_1.c
+++ b/src/pokenav_conditions_1.c
@@ -12,105 +12,104 @@
#include "strings.h"
#include "text.h"
#include "constants/songs.h"
-#include "constants/species.h"
struct PokenavSub11
{
u32 monPal[3][0x20];
u8 fill[0x180];
u32 monPicGfx[3][0x800];
- u8 unk6300;
- s16 unk6302;
- u32 (*unk6304)(struct PokenavSub11 *);
+ u8 searchMode;
+ s16 monIndex;
+ u32 (*callback)(struct PokenavSub11 *);
u8 fill2[0x6320 - 0x6308];
- u8 unk6320[3][24];
- u8 unk6368[3][64];
- struct ConditionGraph unk6428;
- u8 unk6780[3];
- u8 unk6783[3];
- s8 unk6786;
+ u8 searchLocBuffer[3][24];
+ u8 nameBuffer[3][64];
+ struct ConditionGraph conditionData;
+ u8 sheen[3];
+ u8 monMarks[3];
+ s8 mark;
s8 unk6787;
s8 unk6788;
s8 unk6789;
- u8 unk678A;
+ u8 state;
};
-void sub_81CD970(void);
+void InitPartyConditionListParameters(void);
void sub_81CD9F8(void);
-u32 sub_81CD08C(struct PokenavSub11 *structPtr);
-u32 sub_81CD19C(struct PokenavSub11 *structPtr);
-u32 sub_81CD110(struct PokenavSub11 *structPtr);
-u8 sub_81CD1E4(struct PokenavSub11 *structPtr);
-u8 sub_81CD258(u8 arg0);
-void sub_81CD824(s16 arg0, u8 arg1);
-void sub_81CDA1C(s16 arg0, u8 arg1);
-void sub_81CDB98(s16 arg0, u8 arg1);
+u32 HandlePartyConditionInput(struct PokenavSub11 *structPtr);
+u32 GetConditionReturnCallback(struct PokenavSub11 *structPtr);
+u32 ConditionMenu_OpenMarkingsMenu(struct PokenavSub11 *structPtr);
+u8 ConditionGraphHandleDpadInput(struct PokenavSub11 *structPtr);
+u8 SwitchConditionSummaryIndex(u8 moveUp);
+void CopyMonNameGenderLocation(s16 id, u8 arg1);
+void GetMonConditionGraphData(s16 id, u8 arg1);
+void ConditionGraphDrawMonPic(s16 id, u8 arg1);
// code
-bool32 PokenavCallback_Init_7(void)
+bool32 PokenavCallback_Init_PartyCondition(void)
{
- struct PokenavSub11 *structPtr = AllocSubstruct(11, sizeof(struct PokenavSub11));
+ struct PokenavSub11 *structPtr = AllocSubstruct(POKENAV_SUBSTRUCT_CONDITION_GRAPH, sizeof(struct PokenavSub11));
if (structPtr == NULL)
return FALSE;
- sub_81D1ED4(&structPtr->unk6428);
- sub_81CD970();
+ InitConditionGraphData(&structPtr->conditionData);
+ InitPartyConditionListParameters();
gKeyRepeatStartDelay = 20;
- structPtr->unk6304 = sub_81CD08C;
+ structPtr->callback = HandlePartyConditionInput;
return TRUE;
}
-bool32 PokenavCallback_Init_9(void)
+bool32 PokenavCallback_Init_ConditionGraphFromSearch(void)
{
- struct PokenavSub11 *structPtr = AllocSubstruct(11, sizeof(struct PokenavSub11));
+ struct PokenavSub11 *structPtr = AllocSubstruct(POKENAV_SUBSTRUCT_CONDITION_GRAPH, sizeof(struct PokenavSub11));
if (structPtr == NULL)
return FALSE;
- sub_81D1ED4(&structPtr->unk6428);
+ InitConditionGraphData(&structPtr->conditionData);
sub_81CD9F8();
gKeyRepeatStartDelay = 20;
- structPtr->unk6304 = sub_81CD08C;
+ structPtr->callback = HandlePartyConditionInput;
return TRUE;
}
-u32 sub_81CD070(void)
+u32 GetPartyConditionCallback(void)
{
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
- return structPtr->unk6304(structPtr);
+ return structPtr->callback(structPtr);
}
-u32 sub_81CD08C(struct PokenavSub11 *structPtr)
+u32 HandlePartyConditionInput(struct PokenavSub11 *structPtr)
{
- struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
- u32 ret = sub_81CD1E4(structPtr);
+ struct PokenavSub18 *monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
+ u32 ret = ConditionGraphHandleDpadInput(structPtr);
- if (ret == 0)
+ if (ret == PARTY_CONDITION_FUNC_NONE)
{
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
- structPtr->unk6304 = sub_81CD19C;
- ret = 2;
+ structPtr->callback = GetConditionReturnCallback;
+ ret = PARTY_CONDITION_FUNC_RETURN;
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
- if (structPtr->unk6300 == 0)
+ if (structPtr->searchMode == 0)
{
- if (unkPtr->unk2 == unkPtr->unk0 - 1)
+ if (monListPtr->currIndex == monListPtr->listCount - 1)
{
PlaySE(SE_SELECT);
- structPtr->unk6304 = sub_81CD19C;
- ret = 2;
+ structPtr->callback = GetConditionReturnCallback;
+ ret = PARTY_CONDITION_FUNC_RETURN;
}
}
else
{
PlaySE(SE_SELECT);
- ret = 5;
- structPtr->unk6304 = sub_81CD110;
+ ret = PARTY_CONDITION_FUNC_ADD_MARKINGS;
+ structPtr->callback = ConditionMenu_OpenMarkingsMenu;
}
}
}
@@ -118,204 +117,204 @@ u32 sub_81CD08C(struct PokenavSub11 *structPtr)
return ret;
}
-u32 sub_81CD110(struct PokenavSub11 *structPtr)
+u32 ConditionMenu_OpenMarkingsMenu(struct PokenavSub11 *structPtr)
{
- struct PokenavSub18 *unkPtr;
+ struct PokenavSub18 *monListPtr;
u8 markings;
- u32 ret = 0, boxId, monId;
+ u32 ret = PARTY_CONDITION_FUNC_NONE, boxId, monId;
- if (!sub_811FBA4())
+ if (!MonMarkingsMenuHandleInput())
{
- structPtr->unk6783[structPtr->unk6786] = sub_81CEF14();
- unkPtr = GetSubstructPtr(18);
- boxId = unkPtr->unk4[unkPtr->unk2].boxId;
- monId = unkPtr->unk4[unkPtr->unk2].monId;
- markings = structPtr->unk6783[structPtr->unk6786];
+ structPtr->monMarks[structPtr->mark] = GetMonMarkingsData();
+ monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
+ boxId = monListPtr->monData[monListPtr->currIndex].boxId;
+ monId = monListPtr->monData[monListPtr->currIndex].monId;
+ markings = structPtr->monMarks[structPtr->mark];
if (boxId == TOTAL_BOXES_COUNT)
SetMonData(&gPlayerParty[monId], MON_DATA_MARKINGS, &markings);
else
SetBoxMonDataAt(boxId, monId, MON_DATA_MARKINGS, &markings);
- structPtr->unk6304 = sub_81CD08C;
- ret = 6;
+ structPtr->callback = HandlePartyConditionInput;
+ ret = PARTY_CONDITION_FUNC_CLOSE_MARKINGS;
}
return ret;
}
-u32 sub_81CD19C(struct PokenavSub11 *structPtr)
+u32 GetConditionReturnCallback(struct PokenavSub11 *structPtr)
{
- if (structPtr->unk6300 == 0)
+ if (structPtr->searchMode == 0)
return POKENAV_CONDITION_MENU;
else
- return POKENAV_MENU_A;
+ return POKENAV_RETURN_CONDITION_SEARCH;
}
-void sub_81CD1C0(void)
+void FreePartyConditionSubstruct1(void)
{
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
- if (structPtr->unk6300 == 0)
- FreePokenavSubstruct(18);
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
+ if (structPtr->searchMode == 0)
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_MON_LIST);
- FreePokenavSubstruct(11);
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
}
-u8 sub_81CD1E4(struct PokenavSub11 *structPtr)
+u8 ConditionGraphHandleDpadInput(struct PokenavSub11 *structPtr)
{
- struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
+ struct PokenavSub18 *monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
u8 ret = 0;
- if (gMain.heldKeys & DPAD_UP)
+ if (JOY_HELD(DPAD_UP))
{
- if (structPtr->unk6300 == 0 || unkPtr->unk2 != 0)
+ if (structPtr->searchMode == 0 || monListPtr->currIndex != 0)
{
PlaySE(SE_SELECT);
- ret = sub_81CD258(1);
+ ret = SwitchConditionSummaryIndex(1);
}
}
- else if (gMain.heldKeys & DPAD_DOWN)
+ else if (JOY_HELD(DPAD_DOWN))
{
- if (structPtr->unk6300 == 0 || unkPtr->unk2 < unkPtr->unk0 - 1)
+ if (structPtr->searchMode == 0 || monListPtr->currIndex < monListPtr->listCount - 1)
{
PlaySE(SE_SELECT);
- ret = sub_81CD258(0);
+ ret = SwitchConditionSummaryIndex(0);
}
}
return ret;
}
-u8 sub_81CD258(u8 arg0)
+u8 SwitchConditionSummaryIndex(u8 moveUp)
{
u16 r7;
- bool8 r6, r0;
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
- struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
-
- r7 = (arg0) ? structPtr->unk6788 : structPtr->unk6787;
- sub_81D1F84(&structPtr->unk6428, structPtr->unk6428.unk14[structPtr->unk6786], structPtr->unk6428.unk14[r7]);
- r6 = (unkPtr->unk2 != ((sub_81CDD5C() != 0) ? unkPtr->unk0 : unkPtr->unk0 - 1));
- if (arg0)
+ bool8 wasNotLastMon, isNotLastMon;
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
+ struct PokenavSub18 *monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
+
+ r7 = (moveUp) ? structPtr->unk6788 : structPtr->unk6787;
+ sub_81D1F84(&structPtr->conditionData, structPtr->conditionData.unk14[structPtr->mark], structPtr->conditionData.unk14[r7]);
+ wasNotLastMon = (monListPtr->currIndex != ((IsConditionMenuSearchMode() != 0) ? monListPtr->listCount : monListPtr->listCount - 1));
+ if (moveUp)
{
structPtr->unk6788 = structPtr->unk6787;
- structPtr->unk6787 = structPtr->unk6786;
- structPtr->unk6786 = r7;
+ structPtr->unk6787 = structPtr->mark;
+ structPtr->mark = r7;
structPtr->unk6789 = structPtr->unk6788;
- unkPtr->unk2 = (unkPtr->unk2 == 0) ? unkPtr->unk0 - 1 : unkPtr->unk2 - 1;
- structPtr->unk6302 = (unkPtr->unk2 != 0) ? unkPtr->unk2 - 1 : unkPtr->unk0 - 1;
+ monListPtr->currIndex = (monListPtr->currIndex == 0) ? monListPtr->listCount - 1 : monListPtr->currIndex - 1;
+ structPtr->monIndex = (monListPtr->currIndex != 0) ? monListPtr->currIndex - 1 : monListPtr->listCount - 1;
}
else
{
structPtr->unk6787 = structPtr->unk6788;
- structPtr->unk6788 = structPtr->unk6786;
- structPtr->unk6786 = r7;
+ structPtr->unk6788 = structPtr->mark;
+ structPtr->mark = r7;
structPtr->unk6789 = structPtr->unk6787;
- unkPtr->unk2 = (unkPtr->unk2 < unkPtr->unk0 - 1) ? unkPtr->unk2 + 1 : 0;
- structPtr->unk6302 = (unkPtr->unk2 < unkPtr->unk0 - 1) ? unkPtr->unk2 + 1 : 0;
+ monListPtr->currIndex = (monListPtr->currIndex < monListPtr->listCount - 1) ? monListPtr->currIndex + 1 : 0;
+ structPtr->monIndex = (monListPtr->currIndex < monListPtr->listCount - 1) ? monListPtr->currIndex + 1 : 0;
}
- r0 = (unkPtr->unk2 != ((sub_81CDD5C() != 0) ? unkPtr->unk0 : unkPtr->unk0 - 1));
-
- if (!r6)
- return 3;
- else if (!r0)
- return 4;
+ isNotLastMon = (monListPtr->currIndex != ((IsConditionMenuSearchMode() != 0) ? monListPtr->listCount : monListPtr->listCount - 1));
+
+ if (!wasNotLastMon)
+ return PARTY_CONDITION_FUNC_NO_TRANSITION;
+ else if (!isNotLastMon)
+ return PARTY_CONDITION_FUNC_SLIDE_MON_OUT;
else
- return 1;
+ return PARTY_CONDITION_FUNC_SLIDE_MON_IN;
}
-bool32 sub_81CD3C4(void)
+bool32 LoadPartyConditionMenuGfx(void)
{
s32 var;
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
- struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
+ struct PokenavSub18 *monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
- switch (structPtr->unk678A)
+ switch (structPtr->state)
{
case 0:
- sub_81CD824(unkPtr->unk2, 0);
+ CopyMonNameGenderLocation(monListPtr->currIndex, 0);
break;
case 1:
- sub_81CDA1C(unkPtr->unk2, 0);
+ GetMonConditionGraphData(monListPtr->currIndex, 0);
break;
case 2:
- sub_81CDB98(unkPtr->unk2, 0);
+ ConditionGraphDrawMonPic(monListPtr->currIndex, 0);
break;
case 3:
- if (unkPtr->unk0 == 1)
+ if (monListPtr->listCount == 1)
{
- structPtr->unk6786 = 0;
+ structPtr->mark = 0;
structPtr->unk6787 = 0;
structPtr->unk6788 = 0;
- structPtr->unk678A = 0;
+ structPtr->state = 0;
return TRUE;
}
else
{
- structPtr->unk6786 = 0;
+ structPtr->mark = 0;
structPtr->unk6787 = 1;
structPtr->unk6788 = 2;
}
break;
// These were probably ternaries just like cases 7-9, but couldn't match it any other way.
case 4:
- var = unkPtr->unk2 + 1;
- if (var >= unkPtr->unk0)
+ var = monListPtr->currIndex + 1;
+ if (var >= monListPtr->listCount)
var = 0;
- sub_81CD824(var, 1);
+ CopyMonNameGenderLocation(var, 1);
break;
case 5:
- var = unkPtr->unk2 + 1;
- if (var >= unkPtr->unk0)
+ var = monListPtr->currIndex + 1;
+ if (var >= monListPtr->listCount)
var = 0;
- sub_81CDA1C(var, 1);
+ GetMonConditionGraphData(var, 1);
break;
case 6:
- var = unkPtr->unk2 + 1;
- if (var >= unkPtr->unk0)
+ var = monListPtr->currIndex + 1;
+ if (var >= monListPtr->listCount)
var = 0;
- sub_81CDB98(var, 1);
+ ConditionGraphDrawMonPic(var, 1);
break;
case 7:
- sub_81CD824((unkPtr->unk2 - 1 >= 0) ? unkPtr->unk2 - 1 : unkPtr->unk0 - 1, 2);
+ CopyMonNameGenderLocation((monListPtr->currIndex - 1 >= 0) ? monListPtr->currIndex - 1 : monListPtr->listCount - 1, 2);
break;
case 8:
- sub_81CDA1C((unkPtr->unk2 - 1 >= 0) ? unkPtr->unk2 - 1 : unkPtr->unk0 - 1, 2);
+ GetMonConditionGraphData((monListPtr->currIndex - 1 >= 0) ? monListPtr->currIndex - 1 : monListPtr->listCount - 1, 2);
break;
case 9:
- sub_81CDB98((unkPtr->unk2 - 1 >= 0) ? unkPtr->unk2 - 1 : unkPtr->unk0 - 1, 2);
- structPtr->unk678A = 0;
+ ConditionGraphDrawMonPic((monListPtr->currIndex - 1 >= 0) ? monListPtr->currIndex - 1 : monListPtr->listCount - 1, 2);
+ structPtr->state = 0;
return TRUE;
}
- structPtr->unk678A++;
+ structPtr->state++;
return FALSE;
}
-bool32 sub_81CD548(u8 arg0)
+bool32 SetConditionGraphData(u8 mode)
{
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
- switch (arg0)
+ switch (mode)
{
case 0:
- sub_81CD824(structPtr->unk6302, structPtr->unk6789);
+ CopyMonNameGenderLocation(structPtr->monIndex, structPtr->unk6789);
break;
case 1:
- sub_81CDA1C(structPtr->unk6302, structPtr->unk6789);
+ GetMonConditionGraphData(structPtr->monIndex, structPtr->unk6789);
break;
case 2:
- sub_81CDB98(structPtr->unk6302, structPtr->unk6789);
+ ConditionGraphDrawMonPic(structPtr->monIndex, structPtr->unk6789);
return TRUE;
}
return FALSE;
}
-u8 *sub_81CD5CC(u8 *dst, const u8 *src, s16 n)
+u8 *CopyStringLeftAlignedToConditionData(u8 *dst, const u8 *src, s16 n)
{
while (*src != EOS)
*dst++ = *src++, n--;
@@ -327,15 +326,15 @@ u8 *sub_81CD5CC(u8 *dst, const u8 *src, s16 n)
return dst;
}
-u8 *sub_81CD624(u8 *str, u16 id, bool8 arg3)
+u8 *CopyMonConditionNameGender(u8 *str, u16 id, bool8 arg3)
{
u16 boxId, monId, gender, species, level, lvlDigits;
struct BoxPokemon *boxMon;
u8 *txtPtr, *str_;
- struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
+ struct PokenavSub18 *monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
- boxId = unkPtr->unk4[id].boxId;
- monId = unkPtr->unk4[id].monId;
+ boxId = monListPtr->monData[id].boxId;
+ monId = monListPtr->monData[id].monId;
*(str++) = EXT_CTRL_CODE_BEGIN;
*(str++) = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
*(str++) = TEXT_COLOR_BLUE;
@@ -418,115 +417,115 @@ u8 *sub_81CD624(u8 *str, u16 id, bool8 arg3)
return str_;
}
-void sub_81CD824(s16 arg0, u8 arg1)
+void CopyMonNameGenderLocation(s16 id, u8 arg1)
{
u16 boxId, i;
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
- struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
+ struct PokenavSub18 *monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
- if (arg0 != (sub_81CDD5C() != 0 ? unkPtr->unk0 : unkPtr->unk0 - 1))
+ if (id != (IsConditionMenuSearchMode() != 0 ? monListPtr->listCount : monListPtr->listCount - 1))
{
- sub_81CD624(structPtr->unk6368[arg1], arg0, FALSE);
- boxId = unkPtr->unk4[arg0].boxId;
- structPtr->unk6320[arg1][0] = EXT_CTRL_CODE_BEGIN;
- structPtr->unk6320[arg1][1] = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
- structPtr->unk6320[arg1][2] = TEXT_COLOR_BLUE;
- structPtr->unk6320[arg1][3] = TEXT_COLOR_TRANSPARENT;
- structPtr->unk6320[arg1][4] = TEXT_COLOR_LIGHT_BLUE;
+ CopyMonConditionNameGender(structPtr->nameBuffer[arg1], id, FALSE);
+ boxId = monListPtr->monData[id].boxId;
+ structPtr->searchLocBuffer[arg1][0] = EXT_CTRL_CODE_BEGIN;
+ structPtr->searchLocBuffer[arg1][1] = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
+ structPtr->searchLocBuffer[arg1][2] = TEXT_COLOR_BLUE;
+ structPtr->searchLocBuffer[arg1][3] = TEXT_COLOR_TRANSPARENT;
+ structPtr->searchLocBuffer[arg1][4] = TEXT_COLOR_LIGHT_BLUE;
if (boxId == TOTAL_BOXES_COUNT)
- sub_81CD5CC(&structPtr->unk6320[arg1][5], gText_InParty, 8);
+ CopyStringLeftAlignedToConditionData(&structPtr->searchLocBuffer[arg1][5], gText_InParty, 8);
else
- sub_81CD5CC(&structPtr->unk6320[arg1][5], GetBoxNamePtr(boxId), 8);
+ CopyStringLeftAlignedToConditionData(&structPtr->searchLocBuffer[arg1][5], GetBoxNamePtr(boxId), 8);
}
else
{
for (i = 0; i < 12; i++)
- structPtr->unk6368[arg1][i] = CHAR_SPACE;
- structPtr->unk6368[arg1][i] = EOS;
+ structPtr->nameBuffer[arg1][i] = CHAR_SPACE;
+ structPtr->nameBuffer[arg1][i] = EOS;
for (i = 0; i < 8; i++)
- structPtr->unk6320[arg1][i] = CHAR_SPACE;
- structPtr->unk6320[arg1][i] = EOS;
+ structPtr->searchLocBuffer[arg1][i] = CHAR_SPACE;
+ structPtr->searchLocBuffer[arg1][i] = EOS;
}
}
-void sub_81CD970(void)
+void InitPartyConditionListParameters(void)
{
u16 i, count;
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
- struct PokenavSub18 *unkPtr = AllocSubstruct(18, sizeof(struct PokenavSub18));
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
+ struct PokenavSub18 *monListPtr = AllocSubstruct(POKENAV_SUBSTRUCT_MON_LIST, sizeof(struct PokenavSub18));
- structPtr->unk6300 = 0;
+ structPtr->searchMode = 0;
for (i = 0, count = 0; i < CalculatePlayerPartyCount(); i++)
{
if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
{
- unkPtr->unk4[count].boxId = TOTAL_BOXES_COUNT;
- unkPtr->unk4[count].monId = i;
- unkPtr->unk4[count].data = 0;
+ monListPtr->monData[count].boxId = TOTAL_BOXES_COUNT;
+ monListPtr->monData[count].monId = i;
+ monListPtr->monData[count].data = 0;
count++;
}
}
- unkPtr->unk4[count].boxId = 0;
- unkPtr->unk4[count].monId = 0;
- unkPtr->unk4[count].data = 0;
- unkPtr->unk2 = 0;
- unkPtr->unk0 = count + 1;
- structPtr->unk678A = 0;
+ monListPtr->monData[count].boxId = 0;
+ monListPtr->monData[count].monId = 0;
+ monListPtr->monData[count].data = 0;
+ monListPtr->currIndex = 0;
+ monListPtr->listCount = count + 1;
+ structPtr->state = 0;
}
void sub_81CD9F8(void)
{
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
- structPtr->unk6300 = 1;
- structPtr->unk678A = 0;
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
+ structPtr->searchMode = 1;
+ structPtr->state = 0;
}
-void sub_81CDA1C(s16 arg0, u8 arg1)
+void GetMonConditionGraphData(s16 id, u8 arg1)
{
u16 boxId, monId, i;
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
- struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
+ struct PokenavSub18 *monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
- if (arg0 != (sub_81CDD5C() != 0 ? unkPtr->unk0 : unkPtr->unk0 - 1))
+ if (id != (IsConditionMenuSearchMode() != 0 ? monListPtr->listCount : monListPtr->listCount - 1))
{
- boxId = unkPtr->unk4[arg0].boxId;
- monId = unkPtr->unk4[arg0].monId;
- structPtr->unk6428.unk0[arg1][0] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_COOL, NULL);
- structPtr->unk6428.unk0[arg1][1] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_TOUGH, NULL);
- structPtr->unk6428.unk0[arg1][2] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SMART, NULL);
- structPtr->unk6428.unk0[arg1][3] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_CUTE, NULL);
- structPtr->unk6428.unk0[arg1][4] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_BEAUTY, NULL);
- structPtr->unk6780[arg1] = (GetBoxOrPartyMonData(boxId, monId, MON_DATA_SHEEN, NULL) != 255)
+ boxId = monListPtr->monData[id].boxId;
+ monId = monListPtr->monData[id].monId;
+ structPtr->conditionData.stat[arg1][0] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_COOL, NULL);
+ structPtr->conditionData.stat[arg1][1] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_TOUGH, NULL);
+ structPtr->conditionData.stat[arg1][2] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SMART, NULL);
+ structPtr->conditionData.stat[arg1][3] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_CUTE, NULL);
+ structPtr->conditionData.stat[arg1][4] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_BEAUTY, NULL);
+ structPtr->sheen[arg1] = (GetBoxOrPartyMonData(boxId, monId, MON_DATA_SHEEN, NULL) != 255)
? GetBoxOrPartyMonData(boxId, monId, MON_DATA_SHEEN, NULL) / 29u
: 9;
- structPtr->unk6783[arg1] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_MARKINGS, NULL);
- sub_81D2754(structPtr->unk6428.unk0[arg1], structPtr->unk6428.unk14[arg1]);
+ structPtr->monMarks[arg1] = GetBoxOrPartyMonData(boxId, monId, MON_DATA_MARKINGS, NULL);
+ sub_81D2754(structPtr->conditionData.stat[arg1], structPtr->conditionData.unk14[arg1]);
}
else
{
- for (i = 0; i < 5; i++)
+ for (i = 0; i < FLAVOR_COUNT; i++)
{
- structPtr->unk6428.unk0[arg1][i] = 0;
- structPtr->unk6428.unk14[arg1][i].unk0 = 155;
- structPtr->unk6428.unk14[arg1][i].unk2 = 91;
+ structPtr->conditionData.stat[arg1][i] = 0;
+ structPtr->conditionData.unk14[arg1][i].unk0 = 155;
+ structPtr->conditionData.unk14[arg1][i].unk2 = 91;
}
}
}
-void sub_81CDB98(s16 arg0, u8 arg1)
+void ConditionGraphDrawMonPic(s16 index, u8 arg1)
{
u16 boxId, monId, species;
u32 personality, tid;
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
- struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
+ struct PokenavSub18 *monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
- if (arg0 == (sub_81CDD5C() != 0 ? unkPtr->unk0 : unkPtr->unk0 - 1))
+ if (index == (IsConditionMenuSearchMode() != 0 ? monListPtr->listCount : monListPtr->listCount - 1))
return;
- boxId = unkPtr->unk4[arg0].boxId;
- monId = unkPtr->unk4[arg0].monId;
+ boxId = monListPtr->monData[index].boxId;
+ monId = monListPtr->monData[index].monId;
species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES2, NULL);
tid = GetBoxOrPartyMonData(boxId, monId, MON_DATA_OT_ID, NULL);
personality = GetBoxOrPartyMonData(boxId, monId, MON_DATA_PERSONALITY, NULL);
@@ -534,92 +533,92 @@ void sub_81CDB98(s16 arg0, u8 arg1)
LZ77UnCompWram(GetMonSpritePalFromSpeciesAndPersonality(species, tid, personality), structPtr->monPal[arg1]);
}
-u16 sub_81CDC50(void)
+u16 GetMonListCount(void)
{
- struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
- return unkPtr->unk0;
+ struct PokenavSub18 *monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
+ return monListPtr->listCount;
}
-u16 sub_81CDC60(void)
+u16 GetConditionGraphCurrentMonIndex(void)
{
- struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
- return unkPtr->unk2;
+ struct PokenavSub18 *monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
+ return monListPtr->currIndex;
}
-struct ConditionGraph *sub_81CDC70(void)
+struct ConditionGraph *GetConditionGraphDataPtr(void)
{
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
- return &structPtr->unk6428;
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
+ return &structPtr->conditionData;
}
-u8 sub_81CDC84(void)
+u8 GetMonMarkIndex(void)
{
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
- return structPtr->unk6786;
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
+ return structPtr->mark;
}
u8 sub_81CDC9C(void)
{
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
- return structPtr->unk6302;
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
+ return structPtr->monIndex;
}
-void *sub_81CDCB4(u8 id)
+void *GetConditionMonPicGfx(u8 id)
{
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
return structPtr->monPicGfx[id];
}
-void *sub_81CDCD4(u8 id)
+void *GetConditionMonPal(u8 id)
{
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
return structPtr->monPal[id];
}
u8 sub_81CDCEC(void)
{
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
return structPtr->unk6789;
}
-u8 *sub_81CDD04(u8 id)
+u8 *GetConditionMonNameBuffer(u8 id)
{
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
- return structPtr->unk6368[id];
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
+ return structPtr->nameBuffer[id];
}
-u8 *sub_81CDD24(u8 id)
+u8 *GetConditionMonLocationBuffer(u8 id)
{
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
- return structPtr->unk6320[id];
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
+ return structPtr->searchLocBuffer[id];
}
-u16 sub_81CDD48(void)
+u16 GetConditionMonDataBuffer(void)
{
- struct PokenavSub18 *unkPtr = GetSubstructPtr(18);
- return unkPtr->unk4[unkPtr->unk2].data;
+ struct PokenavSub18 *monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
+ return monListPtr->monData[monListPtr->currIndex].data;
}
-bool32 sub_81CDD5C(void)
+bool32 IsConditionMenuSearchMode(void)
{
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
- if (structPtr->unk6300 == 1)
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
+ if (structPtr->searchMode == 1)
return TRUE;
else
return FALSE;
}
-u8 sub_81CDD7C(void)
+u8 TryGetMonMarkId(void)
{
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
- if (structPtr->unk6300 == 1)
- return structPtr->unk6783[structPtr->unk6786];
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
+ if (structPtr->searchMode == 1)
+ return structPtr->monMarks[structPtr->mark];
else
return 0;
}
-u8 sub_81CDDB0(void)
+u8 GetMonSheen(void)
{
- struct PokenavSub11 *structPtr = GetSubstructPtr(11);
- return structPtr->unk6780[structPtr->unk6786];
+ struct PokenavSub11 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH);
+ return structPtr->sheen[structPtr->mark];
}
diff --git a/src/pokenav_conditions_2.c b/src/pokenav_conditions_2.c
index 7c536cd6a..c0e8c7d6d 100644
--- a/src/pokenav_conditions_2.c
+++ b/src/pokenav_conditions_2.c
@@ -15,22 +15,22 @@
#include "strings.h"
#include "text.h"
-u32 sub_81CE37C(s32);
-u32 sub_81CE2D0(s32);
-u32 sub_81CE4D8(s32);
-u32 sub_81CE5E4(s32);
-u32 sub_81CE6BC(s32);
-u32 sub_81CE700(s32);
+u32 LoopedTask_TransitionMons(s32);
+u32 LoopedTask_ExitPartyConditionMenu(s32);
+u32 LoopedTask_MoveCursorNoTransition(s32);
+u32 LoopedTask_SlideMonOut(s32);
+u32 LoopedTask_OpenMonMarkingsWindow(s32);
+u32 LoopedTask_CloseMonMarkingsWindow(s32);
BSS_DATA u8 gUnknown_030012BC;
const u16 gConditionGraphData_Pal[] = INCBIN_U16("graphics/pokenav/condition/graph_data.gbapal");
const u16 gConditionText_Pal[] = INCBIN_U16("graphics/pokenav/condition/text.gbapal");
const u32 gUnknown_08623228[] = INCBIN_U32("graphics/pokenav/8623228.4bpp.lz");
-const u32 gUnknown_0862323C[] = INCBIN_U32("graphics/pokenav/862323C.bin.lz");
-const u16 gUnknown_08623338[] = INCBIN_U16("graphics/pokenav/8623338.gbapal");
+const u32 sConditionGraph_Tilemap[] = INCBIN_U32("graphics/pokenav/862323C.bin.lz");
+const u16 sConditionGraphMonMarkingsPal[] = INCBIN_U16("graphics/pokenav/8623338.gbapal");
-const struct BgTemplate gUnknown_08623358[3] =
+const struct BgTemplate sPartyConditionBgTemplates[3] =
{
{
.bg = 1,
@@ -61,7 +61,7 @@ const struct BgTemplate gUnknown_08623358[3] =
}
};
-const struct WindowTemplate gUnknown_08623364 =
+const struct WindowTemplate sMonNameGenderWindowTemplate =
{
.bg = 1,
.tilemapLeft = 13,
@@ -72,7 +72,7 @@ const struct WindowTemplate gUnknown_08623364 =
.baseBlock = 2
};
-const struct WindowTemplate gUnknown_0862336C =
+const struct WindowTemplate sConditionGraphListIdWindowTemplate =
{
.bg = 1,
.tilemapLeft = 1,
@@ -83,7 +83,7 @@ const struct WindowTemplate gUnknown_0862336C =
.baseBlock = 0x36
};
-const struct WindowTemplate gUnknown_08623374 =
+const struct WindowTemplate sUnusedWindowTemplate1 =
{
.bg = 1,
.tilemapLeft = 1,
@@ -94,7 +94,7 @@ const struct WindowTemplate gUnknown_08623374 =
.baseBlock = 0x44
};
-const struct WindowTemplate gUnknown_0862337C =
+const struct WindowTemplate sUnusedWindowTemplate2 =
{
.bg = 1,
.tilemapLeft = 13,
@@ -105,15 +105,15 @@ const struct WindowTemplate gUnknown_0862337C =
.baseBlock = 0x44
};
-const LoopedTask gUnknown_08623384[] =
+const LoopedTask sPartyConditionLoopedTaskFuncs[] =
{
- NULL,
- sub_81CE37C,
- sub_81CE2D0,
- sub_81CE4D8,
- sub_81CE5E4,
- sub_81CE6BC,
- sub_81CE700
+ [PARTY_CONDITION_FUNC_NONE] = NULL,
+ [PARTY_CONDITION_FUNC_SLIDE_MON_IN] = LoopedTask_TransitionMons,
+ [PARTY_CONDITION_FUNC_RETURN] = LoopedTask_ExitPartyConditionMenu,
+ [PARTY_CONDITION_FUNC_NO_TRANSITION] = LoopedTask_MoveCursorNoTransition,
+ [PARTY_CONDITION_FUNC_SLIDE_MON_OUT] = LoopedTask_SlideMonOut,
+ [PARTY_CONDITION_FUNC_ADD_MARKINGS] = LoopedTask_OpenMonMarkingsWindow,
+ [PARTY_CONDITION_FUNC_CLOSE_MARKINGS] = LoopedTask_CloseMonMarkingsWindow
};
struct Pokenav7Struct
@@ -121,84 +121,84 @@ struct Pokenav7Struct
u32 loopedTaskId;
u8 tilemapBuffers[3][BG_SCREEN_SIZE];
u8 filler[2];
- u8 unk1806[10];
- u32 (*unk1810)(void);
- s16 unk1814;
- u8 unk1816;
- u16 unk1818;
- u16 unk181A;
+ u8 partyPokeballSpriteIds[10];
+ u32 (*callback)(void);
+ s16 monTransitionX;
+ u8 monPicSpriteId;
+ u16 monPalIndex;
+ u16 monGfxTileStart;
void *unk181C;
- u8 unk1820;
- u8 unk1821;
- u8 unk1822;
- u8 unk1823;
+ u8 nameGenderWindowId;
+ u8 listIndexWindowId;
+ u8 unusedWindowId1;
+ u8 unusedWindowId2;
struct PokemonMarkMenu monMarks;
- struct Sprite *unk28dc;
- struct Sprite *unk28e0[MAX_CONDITION_SPARKLES];
- u8 unk2908;
+ struct Sprite *monMarksSprite;
+ struct Sprite *conditionSparkleSprites[MAX_CONDITION_SPARKLES];
+ u8 windowModeState;
u8 filler2[0x38ac - 0x2909];
};
-extern s8 sub_81CDC84(void); // This function's declaration here is different than its definition in pokenav_unk_6. u8/s8
+extern s8 GetMonMarkIndex(void); // This function's declaration here is s8 vs. u8 in pokenav_conditions_1.c
-u32 sub_81CDE94(s32 state);
-u32 sub_81CDE80(void);
-void sub_81CED30(u8 var);
-void sub_81CE9E4(void);
-void sub_81CE934(void);
-bool32 sub_81CE754(u8 a0, u16 a1, bool8 a2);
+u32 LoopedTask_OpenPartyConditionGraph(s32 state);
+u32 GetPartyConditionLoopedTaskActive(void);
+void CreateConditionMonPic(u8 var);
+void CreateMonMarkingsOrPokeballIndicators(void);
+void CopyUnusedConditionWindowsToVram(void);
+bool32 UpdateConditionGraphWindows(u8 a0, u16 a1, bool8 a2);
void sub_81CEE44(void);
-void sub_81CEE90(void);
+void DoConditionGraphTransition(void);
void sub_81CEEC8(void);
void sub_81CEE68(void);
-void sub_81CEE74(bool8 showBg);
+void ToggleBg2(bool8 showBg);
// code
-bool32 sub_81CDDD4(void)
+bool32 OpenPartyConditionMenu(void)
{
- struct Pokenav7Struct *structPtr = AllocSubstruct(0xC, sizeof(struct Pokenav7Struct));
+ struct Pokenav7Struct *structPtr = AllocSubstruct(POKENAV_SUBSTRUCT_MON_MARK_MENU, sizeof(struct Pokenav7Struct));
if (structPtr == NULL)
return FALSE;
- structPtr->unk1816 = 0xFF;
- structPtr->loopedTaskId = CreateLoopedTask(sub_81CDE94, 1);
- structPtr->unk1810 = sub_81CDE80;
- structPtr->unk2908 = 0;
+ structPtr->monPicSpriteId = 0xFF;
+ structPtr->loopedTaskId = CreateLoopedTask(LoopedTask_OpenPartyConditionGraph, 1);
+ structPtr->callback = GetPartyConditionLoopedTaskActive;
+ structPtr->windowModeState = 0;
return TRUE;
}
-void sub_81CDE2C(s32 id)
+void CreatePartyConditionLoopedTask(s32 id)
{
- struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
- structPtr->loopedTaskId = CreateLoopedTask(gUnknown_08623384[id], 1);
- structPtr->unk1810 = sub_81CDE80;
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
+ structPtr->loopedTaskId = CreateLoopedTask(sPartyConditionLoopedTaskFuncs[id], 1);
+ structPtr->callback = GetPartyConditionLoopedTaskActive;
}
-u32 sub_81CDE64(void)
+u32 IsPartyConditionLoopedTaskActive(void)
{
- struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
- return structPtr->unk1810();
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
+ return structPtr->callback();
}
-u32 sub_81CDE80(void)
+u32 GetPartyConditionLoopedTaskActive(void)
{
- struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
return IsLoopedTaskActive(structPtr->loopedTaskId);
}
-u32 sub_81CDE94(s32 state)
+u32 LoopedTask_OpenPartyConditionGraph(s32 state)
{
- struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
switch (state)
{
case 0:
- if (sub_81CD3C4() != TRUE)
+ if (LoadPartyConditionMenuGfx() != TRUE)
return LT_PAUSE;
return LT_INC_AND_PAUSE;
case 1:
- InitBgTemplates(gUnknown_08623358, ARRAY_COUNT(gUnknown_08623358));
+ InitBgTemplates(sPartyConditionBgTemplates, ARRAY_COUNT(sPartyConditionBgTemplates));
ChangeBgX(1, 0, 0);
ChangeBgY(1, 0, 0);
ChangeBgX(2, 0, 0);
@@ -221,23 +221,23 @@ u32 sub_81CDE94(s32 state)
LZ77UnCompVram(gPokenavCondition_Tilemap, structPtr->tilemapBuffers[0]);
SetBgTilemapBuffer(3, structPtr->tilemapBuffers[0]);
- if (sub_81CDD5C() == TRUE)
+ if (IsConditionMenuSearchMode() == TRUE)
CopyToBgTilemapBufferRect(3, gPokenavOptions_Tilemap, 0, 5, 9, 4);
CopyBgTilemapBufferToVram(3);
CopyPaletteIntoBufferUnfaded(gPokenavCondition_Pal, 0x10, 0x20);
CopyPaletteIntoBufferUnfaded(gConditionText_Pal, 0xF0, 0x20);
- structPtr->unk1814 = -80;
+ structPtr->monTransitionX = -80;
return LT_INC_AND_PAUSE;
case 4:
if (FreeTempTileDataBuffersIfPossible())
return LT_PAUSE;
- LZ77UnCompVram(gUnknown_0862323C, structPtr->tilemapBuffers[2]);
+ LZ77UnCompVram(sConditionGraph_Tilemap, structPtr->tilemapBuffers[2]);
SetBgTilemapBuffer(2, structPtr->tilemapBuffers[2]);
CopyBgTilemapBufferToVram(2);
CopyPaletteIntoBufferUnfaded(gConditionGraphData_Pal, 0x30, 0x20);
- sub_81D21DC(2);
+ SetConditionGraphIOWindows(2);
return LT_INC_AND_PAUSE;
case 5:
sub_8199DF0(1, 0, 0, 1);
@@ -249,85 +249,85 @@ u32 sub_81CDE94(s32 state)
if (FreeTempTileDataBuffersIfPossible())
return LT_PAUSE;
- structPtr->unk1820 = AddWindow(&gUnknown_08623364);
- if (sub_81CDD5C() == TRUE)
+ structPtr->nameGenderWindowId = AddWindow(&sMonNameGenderWindowTemplate);
+ if (IsConditionMenuSearchMode() == TRUE)
{
- structPtr->unk1821 = AddWindow(&gUnknown_0862336C);
- structPtr->unk1822 = AddWindow(&gUnknown_08623374);
- structPtr->unk1823 = AddWindow(&gUnknown_0862337C);
+ structPtr->listIndexWindowId = AddWindow(&sConditionGraphListIdWindowTemplate);
+ structPtr->unusedWindowId1 = AddWindow(&sUnusedWindowTemplate1);
+ structPtr->unusedWindowId2 = AddWindow(&sUnusedWindowTemplate2);
}
DeactivateAllTextPrinters();
return LT_INC_AND_PAUSE;
case 7:
- sub_81CED30(0);
+ CreateConditionMonPic(0);
return LT_INC_AND_PAUSE;
case 8:
- sub_81CE9E4();
+ CreateMonMarkingsOrPokeballIndicators();
return LT_INC_AND_PAUSE;
case 9:
- if (sub_81CDD5C() == TRUE)
- sub_81CE934();
+ if (IsConditionMenuSearchMode() == TRUE)
+ CopyUnusedConditionWindowsToVram();
return LT_INC_AND_PAUSE;
case 10:
- sub_81CE754(0, sub_81CDC84(), TRUE);
+ UpdateConditionGraphWindows(0, GetMonMarkIndex(), TRUE);
return LT_INC_AND_PAUSE;
case 11:
- sub_81CE754(1, sub_81CDC84(), TRUE);
+ UpdateConditionGraphWindows(1, GetMonMarkIndex(), TRUE);
return LT_INC_AND_PAUSE;
case 12:
- sub_81CE754(2, sub_81CDC84(), TRUE);
+ UpdateConditionGraphWindows(2, GetMonMarkIndex(), TRUE);
return LT_INC_AND_PAUSE;
case 13:
- if (sub_81CE754(3, sub_81CDC84(), TRUE) != TRUE)
+ if (UpdateConditionGraphWindows(3, GetMonMarkIndex(), TRUE) != TRUE)
return LT_PAUSE;
- PutWindowTilemap(structPtr->unk1820);
- if (sub_81CDD5C() == TRUE)
+ PutWindowTilemap(structPtr->nameGenderWindowId);
+ if (IsConditionMenuSearchMode() == TRUE)
{
- PutWindowTilemap(structPtr->unk1821);
- PutWindowTilemap(structPtr->unk1822);
- PutWindowTilemap(structPtr->unk1823);
+ PutWindowTilemap(structPtr->listIndexWindowId);
+ PutWindowTilemap(structPtr->unusedWindowId1);
+ PutWindowTilemap(structPtr->unusedWindowId2);
}
return LT_INC_AND_PAUSE;
case 14:
ShowBg(1);
HideBg(2);
ShowBg(3);
- if (sub_81CDD5C() == TRUE)
+ if (IsConditionMenuSearchMode() == TRUE)
PrintHelpBarText(HELPBAR_CONDITION_MON_STATUS);
return LT_INC_AND_PAUSE;
case 15:
PokenavFadeScreen(1);
- if (!sub_81CDD5C())
+ if (!IsConditionMenuSearchMode())
{
- LoadLeftHeaderGfxForIndex(6);
- sub_81C7FA0(1, TRUE, 0);
- sub_81C7FA0(6, TRUE, 0);
+ LoadLeftHeaderGfxForIndex(POKENAV_GFX_PARTY_MENU);
+ ShowLeftHeaderGfx(POKENAV_GFX_CONDITION_MENU, TRUE, 0);
+ ShowLeftHeaderGfx(POKENAV_GFX_PARTY_MENU, TRUE, 0);
}
return LT_INC_AND_PAUSE;
case 16:
if (IsPaletteFadeActive())
return LT_PAUSE;
- if (!sub_81CDD5C() && sub_81C8010())
+ if (!IsConditionMenuSearchMode() && AreLeftHeaderSpritesMoving())
return LT_PAUSE;
SetVBlankCallback_(sub_81CEE44);
return LT_INC_AND_PAUSE;
case 17:
- sub_81CEE90();
- sub_81D20AC(sub_81CDC70());
+ DoConditionGraphTransition();
+ InitConditionGraphState(GetConditionGraphDataPtr());
return LT_INC_AND_PAUSE;
case 18:
- if (sub_81D20BC(sub_81CDC70()))
+ if (SetupConditionGraphScanlineParams(GetConditionGraphDataPtr()))
return LT_PAUSE;
return LT_INC_AND_PAUSE;
case 19:
- sub_81CEE74(TRUE);
+ ToggleBg2(TRUE);
return LT_INC_AND_PAUSE;
case 20:
- if (!TryUpdateConditionMonTransitionOn(sub_81CDC70(), &structPtr->unk1814))
+ if (!TryUpdateConditionMonTransitionOn(GetConditionGraphDataPtr(), &structPtr->monTransitionX))
{
- ResetConditionSparkleSprites(structPtr->unk28e0);
- if (sub_81CDD5C() == TRUE || sub_81CDC60() != sub_81CDC50())
- CreateConditionSparkleSprites(structPtr->unk28e0, structPtr->unk1816, sub_81CDDB0());
+ ResetConditionSparkleSprites(structPtr->conditionSparkleSprites);
+ if (IsConditionMenuSearchMode() == TRUE || GetConditionGraphCurrentMonIndex() != GetMonListCount())
+ CreateConditionSparkleSprites(structPtr->conditionSparkleSprites, structPtr->monPicSpriteId, GetMonSheen());
return LT_FINISH;
}
@@ -337,211 +337,211 @@ u32 sub_81CDE94(s32 state)
return LT_FINISH;
}
-u32 sub_81CE2D0(s32 state)
+u32 LoopedTask_ExitPartyConditionMenu(s32 state)
{
- struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
switch (state)
{
case 0:
sub_81CEEC8();
- DestroyConditionSparkleSprites(structPtr->unk28e0);
- return 1;
+ DestroyConditionSparkleSprites(structPtr->conditionSparkleSprites);
+ return LT_INC_AND_CONTINUE;
case 1:
- if (TryUpdateConditionMonTransitionOff(sub_81CDC70(), &structPtr->unk1814))
+ if (TryUpdateConditionMonTransitionOff(GetConditionGraphDataPtr(), &structPtr->monTransitionX))
return 2;
- sub_81CEE74(FALSE);
- return 1;
+ ToggleBg2(FALSE);
+ return LT_INC_AND_CONTINUE;
case 2:
PokenavFadeScreen(0);
- if (!sub_81CDD5C())
- sub_81C78A0();
- return 0;
+ if (!IsConditionMenuSearchMode())
+ SlideMenuHeaderDown();
+ return LT_INC_AND_PAUSE;
case 3:
if (IsPaletteFadeActive() || MainMenuLoopedTaskIsBusy())
- return 2;
- FreeConditionSparkles(structPtr->unk28e0);
+ return LT_PAUSE;
+ FreeConditionSparkles(structPtr->conditionSparkleSprites);
HideBg(1);
HideBg(2);
HideBg(3);
- return 1;
+ return LT_INC_AND_CONTINUE;
}
return LT_FINISH;
}
-u32 sub_81CE37C(s32 state)
+u32 LoopedTask_TransitionMons(s32 state)
{
- struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
- struct ConditionGraph *unkPtr = sub_81CDC70();
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
+ struct ConditionGraph *unkPtr = GetConditionGraphDataPtr();
switch (state)
{
case 0:
- sub_81CD548(0);
- return 1;
+ SetConditionGraphData(0);
+ return LT_INC_AND_CONTINUE;
case 1:
- sub_81CD548(1);
- return 1;
+ SetConditionGraphData(1);
+ return LT_INC_AND_CONTINUE;
case 2:
- sub_81CD548(2);
- DestroyConditionSparkleSprites(structPtr->unk28e0);
- return 1;
+ SetConditionGraphData(2);
+ DestroyConditionSparkleSprites(structPtr->conditionSparkleSprites);
+ return LT_INC_AND_CONTINUE;
case 3:
TransitionConditionGraph(unkPtr);
- return 1;
+ return LT_INC_AND_CONTINUE;
case 4:
- if (!MoveConditionMonOffscreen(&structPtr->unk1814))
+ if (!MoveConditionMonOffscreen(&structPtr->monTransitionX))
{
- sub_81CED30(sub_81CDC84());
- return 1;
+ CreateConditionMonPic(GetMonMarkIndex());
+ return LT_INC_AND_CONTINUE;
}
- return 2;
+ return LT_PAUSE;
case 5:
- sub_81CE754(0, sub_81CDC84(), FALSE);
- return 1;
+ UpdateConditionGraphWindows(0, GetMonMarkIndex(), FALSE);
+ return LT_INC_AND_CONTINUE;
case 6:
- sub_81CE754(1, sub_81CDC84(), FALSE);
- return 1;
+ UpdateConditionGraphWindows(1, GetMonMarkIndex(), FALSE);
+ return LT_INC_AND_CONTINUE;
case 7:
- sub_81CE754(2, sub_81CDC84(), FALSE);
- return 1;
+ UpdateConditionGraphWindows(2, GetMonMarkIndex(), FALSE);
+ return LT_INC_AND_CONTINUE;
case 8:
- if (sub_81CE754(3, sub_81CDC84(), FALSE) == TRUE)
- return 1;
- return 2;
+ if (UpdateConditionGraphWindows(3, GetMonMarkIndex(), FALSE) == TRUE)
+ return LT_INC_AND_CONTINUE;
+ return LT_PAUSE;
case 9:
- unkPtr = sub_81CDC70();
- if (!TryUpdateConditionMonTransitionOn(unkPtr, &structPtr->unk1814))
+ unkPtr = GetConditionGraphDataPtr();
+ if (!TryUpdateConditionMonTransitionOn(unkPtr, &structPtr->monTransitionX))
{
- ResetConditionSparkleSprites(structPtr->unk28e0);
- if (sub_81CDD5C() != TRUE && sub_81CDC60() == sub_81CDC50())
- return 1;
+ ResetConditionSparkleSprites(structPtr->conditionSparkleSprites);
+ if (IsConditionMenuSearchMode() != TRUE && GetConditionGraphCurrentMonIndex() == GetMonListCount())
+ return LT_INC_AND_CONTINUE;
- CreateConditionSparkleSprites(structPtr->unk28e0, structPtr->unk1816, sub_81CDDB0());
- return 1;
+ CreateConditionSparkleSprites(structPtr->conditionSparkleSprites, structPtr->monPicSpriteId, GetMonSheen());
+ return LT_INC_AND_CONTINUE;
}
- return 2;
+ return LT_PAUSE;
}
return LT_FINISH;
}
-u32 sub_81CE4D8(s32 state)
+u32 LoopedTask_MoveCursorNoTransition(s32 state)
{
- struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
switch (state)
{
case 0:
- sub_81CD548(0);
- return 1;
+ SetConditionGraphData(0);
+ return LT_INC_AND_CONTINUE;
case 1:
- sub_81CD548(1);
- return 1;
+ SetConditionGraphData(1);
+ return LT_INC_AND_CONTINUE;
case 2:
- sub_81CD548(2);
- return 1;
+ SetConditionGraphData(2);
+ return LT_INC_AND_CONTINUE;
case 3:
- sub_81CED30(sub_81CDC84());
- return 1;
+ CreateConditionMonPic(GetMonMarkIndex());
+ return LT_INC_AND_CONTINUE;
case 4:
- sub_81CE754(0, sub_81CDC84(), FALSE);
- return 1;
+ UpdateConditionGraphWindows(0, GetMonMarkIndex(), FALSE);
+ return LT_INC_AND_CONTINUE;
case 5:
- sub_81CE754(1, sub_81CDC84(), FALSE);
- return 1;
+ UpdateConditionGraphWindows(1, GetMonMarkIndex(), FALSE);
+ return LT_INC_AND_CONTINUE;
case 6:
- sub_81CE754(2, sub_81CDC84(), FALSE);
- return 1;
+ UpdateConditionGraphWindows(2, GetMonMarkIndex(), FALSE);
+ return LT_INC_AND_CONTINUE;
case 7:
- if (sub_81CE754(3, sub_81CDC84(), FALSE) == TRUE)
- return 1;
- return 2;
+ if (UpdateConditionGraphWindows(3, GetMonMarkIndex(), FALSE) == TRUE)
+ return LT_INC_AND_CONTINUE;
+ return LT_PAUSE;
case 8:
- if (!TryUpdateConditionMonTransitionOn(sub_81CDC70(), &structPtr->unk1814))
+ if (!TryUpdateConditionMonTransitionOn(GetConditionGraphDataPtr(), &structPtr->monTransitionX))
{
- ResetConditionSparkleSprites(structPtr->unk28e0);
- CreateConditionSparkleSprites(structPtr->unk28e0, structPtr->unk1816, sub_81CDDB0());
- return 1;
+ ResetConditionSparkleSprites(structPtr->conditionSparkleSprites);
+ CreateConditionSparkleSprites(structPtr->conditionSparkleSprites, structPtr->monPicSpriteId, GetMonSheen());
+ return LT_INC_AND_CONTINUE;
}
- return 2;
+ return LT_PAUSE;
}
return LT_FINISH;
}
-u32 sub_81CE5E4(s32 state)
+u32 LoopedTask_SlideMonOut(s32 state)
{
- struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
switch (state)
{
case 0:
- sub_81CD548(0);
- return 1;
+ SetConditionGraphData(0);
+ return LT_INC_AND_CONTINUE;
case 1:
- sub_81CD548(1);
- return 1;
+ SetConditionGraphData(1);
+ return LT_INC_AND_CONTINUE;
case 2:
- sub_81CD548(2);
- DestroyConditionSparkleSprites(structPtr->unk28e0);
- return 1;
+ SetConditionGraphData(2);
+ DestroyConditionSparkleSprites(structPtr->conditionSparkleSprites);
+ return LT_INC_AND_CONTINUE;
case 3:
- if (!TryUpdateConditionMonTransitionOff(sub_81CDC70(), &structPtr->unk1814))
- return 1;
- return 2;
+ if (!TryUpdateConditionMonTransitionOff(GetConditionGraphDataPtr(), &structPtr->monTransitionX))
+ return LT_INC_AND_CONTINUE;
+ return LT_PAUSE;
case 4:
- sub_81CE754(0, sub_81CDC84(), FALSE);
- return 1;
+ UpdateConditionGraphWindows(0, GetMonMarkIndex(), FALSE);
+ return LT_INC_AND_CONTINUE;
case 5:
- sub_81CE754(1, sub_81CDC84(), FALSE);
- return 1;
+ UpdateConditionGraphWindows(1, GetMonMarkIndex(), FALSE);
+ return LT_INC_AND_CONTINUE;
case 6:
- sub_81CE754(2, sub_81CDC84(), FALSE);
- return 1;
+ UpdateConditionGraphWindows(2, GetMonMarkIndex(), FALSE);
+ return LT_INC_AND_CONTINUE;
case 7:
- if (sub_81CE754(3, sub_81CDC84(), FALSE) == TRUE)
- return 1;
- return 2;
+ if (UpdateConditionGraphWindows(3, GetMonMarkIndex(), FALSE) == TRUE)
+ return LT_INC_AND_CONTINUE;
+ return LT_PAUSE;
}
return LT_FINISH;
}
-u32 sub_81CE6BC(s32 state)
+u32 LoopedTask_OpenMonMarkingsWindow(s32 state)
{
switch (state)
{
case 0:
- sub_811FAA4(sub_81CDD7C(), 176, 32);
- return 1;
+ sub_811FAA4(TryGetMonMarkId(), 176, 32);
+ return LT_INC_AND_CONTINUE;
case 1:
PrintHelpBarText(HELPBAR_CONDITION_MARKINGS);
- return 1;
+ return LT_INC_AND_CONTINUE;
case 2:
if (WaitForHelpBar() == TRUE)
- return 2;
- return 1;
+ return LT_PAUSE;
+ return LT_INC_AND_CONTINUE;
}
return LT_FINISH;
}
-u32 sub_81CE700(s32 state)
+u32 LoopedTask_CloseMonMarkingsWindow(s32 state)
{
switch (state)
{
case 0:
sub_811FAF8();
- return 1;
+ return LT_INC_AND_CONTINUE;
case 1:
PrintHelpBarText(HELPBAR_CONDITION_MON_STATUS);
- return 1;
+ return LT_INC_AND_CONTINUE;
case 2:
if (WaitForHelpBar() == TRUE)
- return 2;
- return 1;
+ return LT_PAUSE;
+ return LT_INC_AND_CONTINUE;
}
return LT_FINISH;
@@ -555,68 +555,68 @@ static u8 *UnusedPrintNumberString(u8 *dst, u16 num)
return txtPtr;
}
-bool32 sub_81CE754(u8 a0, u16 a1, bool8 a2)
+bool32 UpdateConditionGraphWindows(u8 mode, u16 bufferIndex, bool8 winMode)
{
u8 text[32];
const u8 *str;
- struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
- switch (a0)
+ switch (mode)
{
case 0:
- FillWindowPixelBuffer(structPtr->unk1820, 0);
- if (sub_81CDD5C() == TRUE)
- FillWindowPixelBuffer(structPtr->unk1821, 0);
+ FillWindowPixelBuffer(structPtr->nameGenderWindowId, 0);
+ if (IsConditionMenuSearchMode() == TRUE)
+ FillWindowPixelBuffer(structPtr->listIndexWindowId, 0);
break;
case 1:
- if (sub_81CDC60() != sub_81CDC50() - 1 || sub_81CDD5C() == TRUE)
+ if (GetConditionGraphCurrentMonIndex() != GetMonListCount() - 1 || IsConditionMenuSearchMode() == TRUE)
{
- str = sub_81CDD04(a1);
- AddTextPrinterParameterized(structPtr->unk1820, 1, str, 0, 1, 0, NULL);
+ str = GetConditionMonNameBuffer(bufferIndex);
+ AddTextPrinterParameterized(structPtr->nameGenderWindowId, 1, str, 0, 1, 0, NULL);
}
break;
case 2:
- if (sub_81CDD5C() == TRUE)
+ if (IsConditionMenuSearchMode() == TRUE)
{
- str = sub_81CDD24(a1);
- AddTextPrinterParameterized(structPtr->unk1820, 1, str, 0, 17, 0, NULL);
+ str = GetConditionMonLocationBuffer(bufferIndex);
+ AddTextPrinterParameterized(structPtr->nameGenderWindowId, 1, str, 0, 17, 0, NULL);
text[0] = EXT_CTRL_CODE_BEGIN;
text[1] = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
text[2] = TEXT_COLOR_BLUE;
text[3] = TEXT_COLOR_TRANSPARENT;
text[4] = TEXT_COLOR_LIGHT_BLUE;
StringCopy(text + 5, gText_Number2);
- AddTextPrinterParameterized(structPtr->unk1821, 1, text, 4, 1, 0, NULL);
- ConvertIntToDecimalStringN(text + 5, sub_81CDD48(), STR_CONV_MODE_RIGHT_ALIGN, 4);
- AddTextPrinterParameterized(structPtr->unk1821, 1, text, 28, 1, 0, NULL);
+ AddTextPrinterParameterized(structPtr->listIndexWindowId, 1, text, 4, 1, 0, NULL);
+ ConvertIntToDecimalStringN(text + 5, GetConditionMonDataBuffer(), STR_CONV_MODE_RIGHT_ALIGN, 4);
+ AddTextPrinterParameterized(structPtr->listIndexWindowId, 1, text, 28, 1, 0, NULL);
}
break;
case 3:
- switch (structPtr->unk2908)
+ switch (structPtr->windowModeState)
{
case 0:
- if (a2)
- CopyWindowToVram(structPtr->unk1820, 3);
+ if (winMode)
+ CopyWindowToVram(structPtr->nameGenderWindowId, 3);
else
- CopyWindowToVram(structPtr->unk1820, 2);
+ CopyWindowToVram(structPtr->nameGenderWindowId, 2);
- if (sub_81CDD5C() == TRUE)
+ if (IsConditionMenuSearchMode() == TRUE)
{
- structPtr->unk2908++;
+ structPtr->windowModeState++;
return FALSE;
}
else
{
- structPtr->unk2908 = 0;
+ structPtr->windowModeState = 0;
return TRUE;
}
case 1:
- if (a2)
- CopyWindowToVram(structPtr->unk1821, 3);
+ if (winMode)
+ CopyWindowToVram(structPtr->listIndexWindowId, 3);
else
- CopyWindowToVram(structPtr->unk1821, 2);
+ CopyWindowToVram(structPtr->listIndexWindowId, 2);
- structPtr->unk2908 = 0;
+ structPtr->windowModeState = 0;
return TRUE;
}
}
@@ -624,36 +624,36 @@ bool32 sub_81CE754(u8 a0, u16 a1, bool8 a2)
return FALSE;
}
-void sub_81CE934(void)
+void CopyUnusedConditionWindowsToVram(void)
{
- struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
- CopyWindowToVram(structPtr->unk1822, 3);
- CopyWindowToVram(structPtr->unk1823, 3);
+ CopyWindowToVram(structPtr->unusedWindowId1, 3);
+ CopyWindowToVram(structPtr->unusedWindowId2, 3);
}
void sub_81CE964(struct Sprite *sprite)
{
- if (sprite->data[0] == sub_81CDC60())
+ if (sprite->data[0] == GetConditionGraphCurrentMonIndex())
StartSpriteAnim(sprite, 0);
else
StartSpriteAnim(sprite, 1);
}
-void sub_81CE990(struct Sprite *sprite)
+void HighlightCurrentPartyIndexPokeball(struct Sprite *sprite)
{
- if (sub_81CDC60() == sub_81CDC50() - 1)
+ if (GetConditionGraphCurrentMonIndex() == GetMonListCount() - 1)
sprite->oam.paletteNum = IndexOfSpritePaletteTag(0x65);
else
sprite->oam.paletteNum = IndexOfSpritePaletteTag(0x66);
}
-void sub_81CE9C8(struct Sprite *sprite)
+void MonMarkingsCallback(struct Sprite *sprite)
{
- StartSpriteAnim(sprite, sub_81CDD7C());
+ StartSpriteAnim(sprite, TryGetMonMarkId());
}
-void sub_81CE9E4(void)
+void CreateMonMarkingsOrPokeballIndicators(void)
{
struct SpriteSheet sprSheets[4];
struct SpriteTemplate sprTemplate;
@@ -661,39 +661,40 @@ void sub_81CE9E4(void)
struct SpriteSheet sprSheet;
struct Sprite *sprite;
u16 i, spriteId;
- struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
LoadConditionSelectionIcons(sprSheets, &sprTemplate, sprPals);
- if (sub_81CDD5C() == TRUE)
+ if (IsConditionMenuSearchMode() == TRUE)
{
structPtr->monMarks.baseTileTag = 0x6A;
structPtr->monMarks.basePaletteTag = 0x6A;
sub_811F90C(&structPtr->monMarks);
sub_811FA90();
- sprite = sub_811FF94(0x69, 0x69, gUnknown_08623338);
+ sprite = CreateMonMarkingsSpriteWithPal(0x69, 0x69, sConditionGraphMonMarkingsPal);
sprite->oam.priority = 3;
sprite->pos1.x = 192;
sprite->pos1.y = 32;
- sprite->callback = sub_81CE9C8;
- structPtr->unk28dc = sprite;
- sub_81C7990(IndexOfSpritePaletteTag(0x69), 0);
+ sprite->callback = MonMarkingsCallback;
+ structPtr->monMarksSprite = sprite;
+ PokenavFillPalette(IndexOfSpritePaletteTag(0x69), 0);
}
else
{
+ // party mode -> add pokeballs on right hand side
LoadSpriteSheets(sprSheets);
Pokenav_AllocAndLoadPalettes(sprPals);
- for (i = 0; i < sub_81CDC50() - 1; i++)
+ for (i = 0; i < GetMonListCount() - 1; i++)
{
spriteId = CreateSprite(&sprTemplate, 226, (i * 20) + 8, 0);
if (spriteId != MAX_SPRITES)
{
- structPtr->unk1806[i] = spriteId;
+ structPtr->partyPokeballSpriteIds[i] = spriteId;
gSprites[spriteId].data[0] = i;
gSprites[spriteId].callback = sub_81CE964;
}
else
{
- structPtr->unk1806[i] = 0xFF;
+ structPtr->partyPokeballSpriteIds[i] = 0xFF;
}
}
@@ -704,27 +705,27 @@ void sub_81CE9E4(void)
spriteId = CreateSprite(&sprTemplate, 230, (i * 20) + 8, 0);
if (spriteId != MAX_SPRITES)
{
- structPtr->unk1806[i] = spriteId;
+ structPtr->partyPokeballSpriteIds[i] = spriteId;
gSprites[spriteId].oam.size = 0;
}
else
{
- structPtr->unk1806[i] = 0xFF;
+ structPtr->partyPokeballSpriteIds[i] = 0xFF;
}
}
sprTemplate.tileTag = 0x66;
- sprTemplate.callback = sub_81CE990;
+ sprTemplate.callback = HighlightCurrentPartyIndexPokeball;
spriteId = CreateSprite(&sprTemplate, 222, (i * 20) + 8, 0);
if (spriteId != MAX_SPRITES)
{
- structPtr->unk1806[i] = spriteId;
+ structPtr->partyPokeballSpriteIds[i] = spriteId;
gSprites[spriteId].oam.shape = SPRITE_SHAPE(32x16);
gSprites[spriteId].oam.size = SPRITE_SIZE(32x16);
}
else
{
- structPtr->unk1806[i] = 0xFF;
+ structPtr->partyPokeballSpriteIds[i] = 0xFF;
}
}
@@ -738,9 +739,9 @@ void sub_81CEBF4(struct Pokenav7Struct *structPtr)
{
u8 i;
- if (sub_81CDD5C() == TRUE)
+ if (IsConditionMenuSearchMode() == TRUE)
{
- DestroySprite(structPtr->unk28dc);
+ DestroySprite(structPtr->monMarksSprite);
FreeSpriteTilesByTag(0x6A);
FreeSpriteTilesByTag(0x69);
FreeSpritePaletteByTag(0x6A);
@@ -749,7 +750,7 @@ void sub_81CEBF4(struct Pokenav7Struct *structPtr)
else
{
for (i = 0; i < 7; i++)
- DestroySprite(&gSprites[structPtr->unk1806[i]]);
+ DestroySprite(&gSprites[structPtr->partyPokeballSpriteIds[i]]);
FreeSpriteTilesByTag(0x65);
FreeSpriteTilesByTag(0x66);
@@ -758,83 +759,83 @@ void sub_81CEBF4(struct Pokenav7Struct *structPtr)
FreeSpritePaletteByTag(0x66);
}
- if (structPtr->unk1816 != 0xFF)
+ if (structPtr->monPicSpriteId != 0xFF)
{
- DestroySprite(&gSprites[structPtr->unk1816]);
+ DestroySprite(&gSprites[structPtr->monPicSpriteId]);
FreeSpriteTilesByTag(0x64);
FreeSpritePaletteByTag(0x64);
}
}
-void sub_81CECA0(void)
+void FreePartyConditionSubstruct2(void)
{
- struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
- RemoveWindow(structPtr->unk1820);
- if (sub_81CDD5C() == TRUE)
+ RemoveWindow(structPtr->nameGenderWindowId);
+ if (IsConditionMenuSearchMode() == TRUE)
{
- RemoveWindow(structPtr->unk1821);
- RemoveWindow(structPtr->unk1822);
- RemoveWindow(structPtr->unk1823);
+ RemoveWindow(structPtr->listIndexWindowId);
+ RemoveWindow(structPtr->unusedWindowId1);
+ RemoveWindow(structPtr->unusedWindowId2);
}
else
{
- sub_81C7FDC();
+ SetLeftHeaderSpritesInvisibility();
}
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP);
sub_81CEBF4(structPtr);
sub_81CEE68();
- FreePokenavSubstruct(0xC);
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_MON_MARK_MENU);
}
-void sub_81CED10(struct Sprite *sprite)
+void MonPicGfxSpriteCallback(struct Sprite *sprite)
{
- struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
- sprite->pos1.x = structPtr->unk1814 + 38;
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
+ sprite->pos1.x = structPtr->monTransitionX + 38;
}
-void sub_81CED30(u8 var)
+void CreateConditionMonPic(u8 id)
{
struct SpriteTemplate sprTemplate;
struct SpriteSheet sprSheet;
struct SpritePalette sprPal;
u8 spriteId;
- struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
- if (structPtr->unk1816 == 0xFF)
+ if (structPtr->monPicSpriteId == 0xFF)
{
LoadConditionMonPicTemplate(&sprSheet, &sprTemplate, &sprPal);
- sprSheet.data = sub_81CDCB4(var);
- sprPal.data = sub_81CDCD4(var);
- structPtr->unk1818 = LoadSpritePalette(&sprPal);
- structPtr->unk181A = LoadSpriteSheet(&sprSheet);
+ sprSheet.data = GetConditionMonPicGfx(id);
+ sprPal.data = GetConditionMonPal(id);
+ structPtr->monPalIndex = LoadSpritePalette(&sprPal);
+ structPtr->monGfxTileStart = LoadSpriteSheet(&sprSheet);
spriteId = CreateSprite(&sprTemplate, 38, 104, 0);
- structPtr->unk1816 = spriteId;
+ structPtr->monPicSpriteId = spriteId;
if (spriteId == MAX_SPRITES)
{
FreeSpriteTilesByTag(0x64);
FreeSpritePaletteByTag(0x64);
- structPtr->unk1816 = 0xFF;
+ structPtr->monPicSpriteId = 0xFF;
}
else
{
- structPtr->unk1816 = spriteId;
- gSprites[structPtr->unk1816].callback = sub_81CED10;
- structPtr->unk181C = (void*)(VRAM) + 0x10000 + (structPtr->unk181A * 32);
- structPtr->unk1818 = (structPtr->unk1818 * 16) + 0x100;
+ structPtr->monPicSpriteId = spriteId;
+ gSprites[structPtr->monPicSpriteId].callback = MonPicGfxSpriteCallback;
+ structPtr->unk181C = (void*)(VRAM) + 0x10000 + (structPtr->monGfxTileStart * 32);
+ structPtr->monPalIndex = (structPtr->monPalIndex * 16) + 0x100;
}
}
else
{
- DmaCopy16Defvars(3, sub_81CDCB4(var), structPtr->unk181C, 0x800);
- LoadPalette(sub_81CDCD4(var), structPtr->unk1818, 0x20);
+ DmaCopy16Defvars(3, GetConditionMonPicGfx(id), structPtr->unk181C, 0x800);
+ LoadPalette(GetConditionMonPal(id), structPtr->monPalIndex, 0x20);
}
}
void sub_81CEE44(void)
{
- struct ConditionGraph *unk = sub_81CDC70();
+ struct ConditionGraph *unk = GetConditionGraphDataPtr();
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
@@ -847,7 +848,7 @@ void sub_81CEE68(void)
SetPokenavVBlankCallback();
}
-void sub_81CEE74(bool8 showBg)
+void ToggleBg2(bool8 showBg)
{
if (showBg)
ShowBg(2);
@@ -855,29 +856,29 @@ void sub_81CEE74(bool8 showBg)
HideBg(2);
}
-void sub_81CEE90(void)
+void DoConditionGraphTransition(void)
{
- struct ConditionGraph *unk = sub_81CDC70();
- u8 id = sub_81CDC84();
+ struct ConditionGraph *conditionPtr = GetConditionGraphDataPtr();
+ u8 id = GetMonMarkIndex();
gUnknown_030012BC = id;
- sub_81D1F84(unk, unk->unk14[3], unk->unk14[id]);
- TransitionConditionGraph(unk);
+ sub_81D1F84(conditionPtr, conditionPtr->unk14[3], conditionPtr->unk14[id]);
+ TransitionConditionGraph(conditionPtr);
}
void sub_81CEEC8(void)
{
- struct ConditionGraph *unk = sub_81CDC70();
+ struct ConditionGraph *conditionPtr = GetConditionGraphDataPtr();
- if (sub_81CDD5C() || sub_81CDC60() != sub_81CDC50() - 1)
- sub_81D1F84(unk, unk->unk14[sub_81CDC84()], unk->unk14[3]);
+ if (IsConditionMenuSearchMode() || GetConditionGraphCurrentMonIndex() != GetMonListCount() - 1)
+ sub_81D1F84(conditionPtr, conditionPtr->unk14[GetMonMarkIndex()], conditionPtr->unk14[3]);
}
-u8 sub_81CEF14(void)
+u8 GetMonMarkingsData(void)
{
- struct Pokenav7Struct *structPtr = GetSubstructPtr(0xC);
+ struct Pokenav7Struct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_MARK_MENU);
- if (sub_81CDD5C() == 1)
+ if (IsConditionMenuSearchMode() == 1)
return structPtr->monMarks.markings;
else
return 0;
diff --git a/src/pokenav_conditions_3.c b/src/pokenav_conditions_3.c
index eea4aa397..d02d844d0 100644
--- a/src/pokenav_conditions_3.c
+++ b/src/pokenav_conditions_3.c
@@ -10,67 +10,78 @@
#include "international_string_util.h"
#include "constants/songs.h"
+enum
+{
+ CONDITION_SEARCH_FUNC_NONE,
+ CONDITION_SEARCH_FUNC_MOVE_UP,
+ CONDITION_SEARCH_FUNC_MOVE_DOWN,
+ CONDITION_SEARCH_FUNC_PAGE_UP,
+ CONDITION_SEARCH_FUNC_PAGE_DOWN,
+ CONDITION_SEARCH_FUNC_EXIT,
+ CONDITION_SEARCH_FUNC_SELECT_MON,
+};
+
struct PokenavSub7
{
- u32 (*unk0)(struct PokenavSub7 *);
+ u32 (*callback)(struct PokenavSub7 *);
u32 loopedTaskId;
u8 fill1[4];
- s32 unkC;
- s32 unk10;
- u32 unk14;
- u32 unk18;
- u32 unk1C;
- struct PokenavSub18 *unkPtr;
+ s32 boxId;
+ s32 monId;
+ u32 conditionDataId;
+ u32 returnFromGraph;
+ u32 isPartyCondition;
+ struct PokenavSub18 *monList;
};
struct PokenavSub8
{
bool32 (*callback)(void);
- u32 ltid;
+ u32 ltid; //looped task Id
u16 winid;
- bool32 unkC;
+ bool32 fromGraph;
u8 buff[BG_SCREEN_SIZE];
}; // size: 0x810
-static u32 sub_81CF010(struct PokenavSub7 *structPtr);
-static u32 sub_81CF030(struct PokenavSub7 *structPtr);
-static u32 sub_81CF0B8(struct PokenavSub7 *structPtr);
-static u32 sub_81CF0B0(struct PokenavSub7 *structPtr);
-static u32 sub_81CF11C(s32 state);
-static u32 sub_81CF134(s32 state);
-static u32 sub_81CF1C4(s32 state);
-static u32 sub_81CF1D8(s32 state);
+static u32 HandleConditionSearchInput_WaitSetup(struct PokenavSub7 *structPtr);
+static u32 HandleConditionSearchInput(struct PokenavSub7 *structPtr);
+static u32 OpenConditionGraphFromSearchList(struct PokenavSub7 *structPtr);
+static u32 ReturnToConditionSearchList(struct PokenavSub7 *structPtr);
+static u32 GetConditionSearchLoopedTask(s32 state);
+static u32 BuildPartyMonSearchResults(s32 state);
+static u32 InitBoxMonSearchResults(s32 state);
+static u32 BuildBoxMonSearchResults(s32 state);
static u32 sub_81CF278(s32 state);
-static u32 sub_81CF578(s32 state);
-static u32 sub_81CF5F0(s32 state);
-static u32 sub_81CF668(s32 state);
-static u32 sub_81CF6E0(s32 state);
-static u32 sub_81CF758(s32 state);
-static u32 sub_81CF798(s32 state);
+static u32 LoopedTask_MoveSearchListCursorUp(s32 state);
+static u32 LoopedTask_MoveSearchListCursorDown(s32 state);
+static u32 LoopedTask_MoveSearchListPageUp(s32 state);
+static u32 LoopedTask_MoveSearchListPageDown(s32 state);
+static u32 LoopedTask_ExitConditionSearchMenu(s32 state);
+static u32 LoopedTask_SelectSearchResult(s32 state);
static void sub_81CF2C4(struct PokenavSub7 *structPtr, struct PokenavMonList *item);
-static bool32 sub_81CF3E4(void);
-static u32 sub_81CF418(s32 state);
-static void sub_81CF7C8(struct PokenavSub8 *);
-static void sub_81CF7F4(struct PokenavSub8 *);
-static void sub_81CF88C(void);
-static void sub_81CF8E4(struct PokenavMonList *, u8 *);
+static bool32 GetSearchResultCurrentLoopedTaskActive(void);
+static u32 LoopedTask_OpenConditionSearchResults(s32 state);
+static void AddSearchResultListMenuWindow(struct PokenavSub8 *);
+static void PrintSearchResultListMenuItems(struct PokenavSub8 *);
+static void InitConditionSearchListMenuTemplate(void);
+static void PrintSearchMonListItem(struct PokenavMonList *, u8 *);
-static const u32 gUnknown_086233A0[] = {0x16, 0x17, 0x18, 0x21, 0x2F};
+static const u32 sSearchMonDataIds[] = {MON_DATA_COOL, MON_DATA_BEAUTY, MON_DATA_CUTE, MON_DATA_SMART, MON_DATA_TOUGH};
-static const LoopedTask gUnknown_086233B4[] =
+static const LoopedTask sConditionSearchLoopedTaskFuncs[] =
{
- sub_81CF134,
- sub_81CF1C4,
- sub_81CF1D8,
+ BuildPartyMonSearchResults,
+ InitBoxMonSearchResults,
+ BuildBoxMonSearchResults,
sub_81CF278
};
-static const u16 gUnknown_086233C4[] = INCBIN_U16("graphics/pokenav/condition_search2.gbapal");
-static const u32 gUnknown_086233E4[] = INCBIN_U32("graphics/pokenav/condition_search2.4bpp.lz");
-static const u32 gUnknown_086234AC[] = INCBIN_U32("graphics/pokenav/condition_search2.bin.lz");
+static const u16 sConditionSearchResultFramePal[] = INCBIN_U16("graphics/pokenav/condition_search2.gbapal");
+static const u32 sConditionSearchResultTiles[] = INCBIN_U32("graphics/pokenav/condition_search2.4bpp.lz");
+static const u32 sConditionSearchResultTilemap[] = INCBIN_U32("graphics/pokenav/condition_search2.bin.lz");
static const u16 gUnknown_08623570[] = INCBIN_U16("graphics/pokenav/8623570.gbapal");
-static const struct BgTemplate gUnknown_08623590[] =
+static const struct BgTemplate sConditionSearchResultBgTemplates[] =
{
{
.bg = 1,
@@ -91,18 +102,18 @@ static const struct BgTemplate gUnknown_08623590[] =
}
};
-static const LoopedTask gUnknown_08623598[] =
+static const LoopedTask sSearchResultLoopTaskFuncs[] =
{
- NULL,
- sub_81CF578,
- sub_81CF5F0,
- sub_81CF668,
- sub_81CF6E0,
- sub_81CF758,
- sub_81CF798
+ [CONDITION_SEARCH_FUNC_NONE] = NULL,
+ [CONDITION_SEARCH_FUNC_MOVE_UP] = LoopedTask_MoveSearchListCursorUp,
+ [CONDITION_SEARCH_FUNC_MOVE_DOWN] = LoopedTask_MoveSearchListCursorDown,
+ [CONDITION_SEARCH_FUNC_PAGE_UP] = LoopedTask_MoveSearchListPageUp,
+ [CONDITION_SEARCH_FUNC_PAGE_DOWN] = LoopedTask_MoveSearchListPageDown,
+ [CONDITION_SEARCH_FUNC_EXIT] = LoopedTask_ExitConditionSearchMenu,
+ [CONDITION_SEARCH_FUNC_SELECT_MON] = LoopedTask_SelectSearchResult
};
-static const struct WindowTemplate gUnknown_086235B4 =
+static const struct WindowTemplate sSearchResultListMenuWindowTemplate =
{
.bg = 1,
.tilemapLeft = 1,
@@ -117,138 +128,139 @@ static const u8 sText_MaleSymbol[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHIT
static const u8 sText_FemaleSymbol[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
static const u8 sText_NoGenderSymbol[] = _("{UNK_SPACER}");
-bool32 PokenavCallback_Init_8(void)
+bool32 PokenavCallback_Init_ConditionSearch(void)
{
struct PokenavSub7 *structPtr = AllocSubstruct(7, sizeof(struct PokenavSub7));
if (structPtr == NULL)
return FALSE;
- structPtr->unkPtr = AllocSubstruct(18, sizeof(struct PokenavSub18));
- if (structPtr->unkPtr == NULL)
+ structPtr->monList = AllocSubstruct(POKENAV_SUBSTRUCT_MON_LIST, sizeof(struct PokenavSub18));
+ if (structPtr->monList == NULL)
return FALSE;
- structPtr->unk0 = sub_81CF010;
- structPtr->loopedTaskId = CreateLoopedTask(sub_81CF11C, 1);
- structPtr->unk18 = 0;
- structPtr->unk14 = gUnknown_086233A0[GetSelectedConditionSearch()];
+ structPtr->callback = HandleConditionSearchInput_WaitSetup;
+ structPtr->loopedTaskId = CreateLoopedTask(GetConditionSearchLoopedTask, 1);
+ structPtr->returnFromGraph = 0;
+ structPtr->conditionDataId = sSearchMonDataIds[GetSelectedConditionSearch()];
return TRUE;
}
-bool32 PokenavCallback_Init_10(void)
+// return to search results from condition graph
+bool32 PokenavCallback_Init_ReturnToMonSearchList(void)
{
- struct PokenavSub7 *structPtr = AllocSubstruct(7, sizeof(struct PokenavSub7));
+ struct PokenavSub7 *structPtr = AllocSubstruct(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS, sizeof(struct PokenavSub7));
if (structPtr == NULL)
return FALSE;
- structPtr->unkPtr = GetSubstructPtr(18);
- structPtr->unk0 = sub_81CF030;
- structPtr->unk18 = 1;
- structPtr->unk14 = gUnknown_086233A0[GetSelectedConditionSearch()];
+ structPtr->monList = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
+ structPtr->callback = HandleConditionSearchInput;
+ structPtr->returnFromGraph = 1;
+ structPtr->conditionDataId = sSearchMonDataIds[GetSelectedConditionSearch()];
return TRUE;
}
-u32 sub_81CEFDC(void)
+u32 GetConditionSearchResultsCallback(void)
{
- struct PokenavSub7 *structPtr = GetSubstructPtr(7);
- return structPtr->unk0(structPtr);
+ struct PokenavSub7 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
+ return structPtr->callback(structPtr);
}
-void sub_81CEFF0(void)
+void FreeSearchResultSubstruct1(void)
{
- struct PokenavSub7 *structPtr = GetSubstructPtr(7);
- if (structPtr->unk1C == 0)
- FreePokenavSubstruct(18);
- FreePokenavSubstruct(7);
+ struct PokenavSub7 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
+ if (structPtr->isPartyCondition == 0)
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_MON_LIST);
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
}
-static bool32 sub_81CF010(struct PokenavSub7 *structPtr)
+static bool32 HandleConditionSearchInput_WaitSetup(struct PokenavSub7 *structPtr)
{
if (!IsLoopedTaskActive(structPtr->loopedTaskId))
- structPtr->unk0 = sub_81CF030;
+ structPtr->callback = HandleConditionSearchInput;
return FALSE;
}
-static u32 sub_81CF030(struct PokenavSub7 *structPtr)
+static u32 HandleConditionSearchInput(struct PokenavSub7 *structPtr)
{
- if (gMain.newAndRepeatedKeys & DPAD_UP)
- return 1;
- else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
- return 2;
- else if (gMain.newKeys & DPAD_LEFT)
- return 3;
- else if (gMain.newKeys & DPAD_RIGHT)
- return 4;
- else if (gMain.newKeys & B_BUTTON)
+ if (JOY_REPEAT(DPAD_UP))
+ return CONDITION_SEARCH_FUNC_MOVE_UP;
+ else if (JOY_REPEAT(DPAD_DOWN))
+ return CONDITION_SEARCH_FUNC_MOVE_DOWN;
+ else if (JOY_NEW(DPAD_LEFT))
+ return CONDITION_SEARCH_FUNC_PAGE_UP;
+ else if (JOY_NEW(DPAD_RIGHT))
+ return CONDITION_SEARCH_FUNC_PAGE_DOWN;
+ else if (JOY_NEW(B_BUTTON))
{
- structPtr->unk1C = 0;
- structPtr->unk0 = sub_81CF0B0;
- return 5;
+ structPtr->isPartyCondition = 0;
+ structPtr->callback = ReturnToConditionSearchList;
+ return CONDITION_SEARCH_FUNC_EXIT;
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
- structPtr->unkPtr->unk2 = GetSelectedMatchCall();
- structPtr->unk1C = 1;
- structPtr->unk0 = sub_81CF0B8;
- return 6;
+ structPtr->monList->currIndex = GetSelectedPokenavListIndex();
+ structPtr->isPartyCondition = 1;
+ structPtr->callback = OpenConditionGraphFromSearchList;
+ return CONDITION_SEARCH_FUNC_SELECT_MON;
}
else
- return 0;
+ return CONDITION_SEARCH_FUNC_NONE;
}
-static u32 sub_81CF0B0(struct PokenavSub7 *structPtr)
+static u32 ReturnToConditionSearchList(struct PokenavSub7 *structPtr)
{
return POKENAV_CONDITION_SEARCH_MENU;
}
-static u32 sub_81CF0B8(struct PokenavSub7 *structPtr)
+static u32 OpenConditionGraphFromSearchList(struct PokenavSub7 *structPtr)
{
- return POKENAV_MENU_9;
+ return POKENAV_CONDITION_GRAPH_FROM_SEARCH;
}
static u32 sub_81CF0C0(void)
{
- struct PokenavSub7 *structPtr = GetSubstructPtr(7);
- return structPtr->unk18;
+ struct PokenavSub7 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
+ return structPtr->returnFromGraph;
}
-static struct PokenavMonList * sub_81CF0D0(void)
+static struct PokenavMonList * GetSearchResultsMonDataList(void)
{
- struct PokenavSub7 * ptr = GetSubstructPtr(7);
- return ptr->unkPtr->unk4;
+ struct PokenavSub7 * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
+ return ptr->monList->monData;
}
-static u16 sub_81CF0E0(void)
+static u16 GetSearchResultsMonListCount(void)
{
- struct PokenavSub7 * ptr = GetSubstructPtr(7);
- return ptr->unkPtr->unk0;
+ struct PokenavSub7 * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
+ return ptr->monList->listCount;
}
-static s32 sub_81CF0F0(void)
+static s32 GetSearchResultsSelectedMonData(void)
{
- struct PokenavSub7 * ptr = GetSubstructPtr(7);
- s32 i = GetSelectedMatchCall();
- return ptr->unkPtr->unk4[i].data;
+ struct PokenavSub7 * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
+ s32 i = GetSelectedPokenavListIndex();
+ return ptr->monList->monData[i].data;
}
static u16 sub_81CF10C(void)
{
- struct PokenavSub7 * ptr = GetSubstructPtr(7);
- return ptr->unkPtr->unk2;
+ struct PokenavSub7 * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
+ return ptr->monList->currIndex;
}
-static u32 sub_81CF11C(s32 state)
+static u32 GetConditionSearchLoopedTask(s32 state)
{
- return gUnknown_086233B4[state](state);
+ return sConditionSearchLoopedTaskFuncs[state](state);
}
-static u32 sub_81CF134(s32 state)
+static u32 BuildPartyMonSearchResults(s32 state)
{
s32 i;
struct PokenavMonList item;
- struct PokenavSub7 * ptr = GetSubstructPtr(7);
+ struct PokenavSub7 * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
- ptr->unkPtr->unk0 = 0;
- ptr->unkPtr->unk2 = 0;
+ ptr->monList->listCount = 0;
+ ptr->monList->currIndex = 0;
item.boxId = 14;
for (i = 0; i < PARTY_SIZE; i++)
{
@@ -258,7 +270,7 @@ static u32 sub_81CF134(s32 state)
if (!GetMonData(pokemon, MON_DATA_SANITY_IS_EGG))
{
item.monId = i;
- item.data = GetMonData(pokemon, ptr->unk14);
+ item.data = GetMonData(pokemon, ptr->conditionDataId);
sub_81CF2C4(ptr, &item);
}
}
@@ -266,19 +278,19 @@ static u32 sub_81CF134(s32 state)
return LT_INC_AND_CONTINUE;
}
-static u32 sub_81CF1C4(s32 state)
+static u32 InitBoxMonSearchResults(s32 state)
{
- struct PokenavSub7 * ptr = GetSubstructPtr(7);
- ptr->unk10 = 0;
- ptr->unkC = 0;
+ struct PokenavSub7 * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
+ ptr->monId = 0;
+ ptr->boxId = 0;
return LT_INC_AND_CONTINUE;
}
-static u32 sub_81CF1D8(s32 state)
+static u32 BuildBoxMonSearchResults(s32 state)
{
- struct PokenavSub7 * ptr = GetSubstructPtr(7);
- s32 boxId = ptr->unkC;
- s32 monId = ptr->unk10;
+ struct PokenavSub7 * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
+ s32 boxId = ptr->boxId;
+ s32 monId = ptr->monId;
s32 boxCount = 0;
struct PokenavMonList item;
@@ -290,15 +302,15 @@ static u32 sub_81CF1D8(s32 state)
{
item.boxId = boxId;
item.monId = monId;
- item.data = GetBoxMonDataAt(boxId, monId, ptr->unk14);
+ item.data = GetBoxMonDataAt(boxId, monId, ptr->conditionDataId);
sub_81CF2C4(ptr, &item);
}
boxCount++;
monId++;
if (boxCount > 14)
{
- ptr->unkC = boxId;
- ptr->unk10 = monId;
+ ptr->boxId = boxId;
+ ptr->monId = monId;
return LT_CONTINUE;
}
}
@@ -311,108 +323,108 @@ static u32 sub_81CF1D8(s32 state)
static u32 sub_81CF278(s32 state)
{
- struct PokenavSub7 * ptr = GetSubstructPtr(7);
- s32 r6 = ptr->unkPtr->unk0;
- s32 r4 = ptr->unkPtr->unk4[0].data;
+ struct PokenavSub7 * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULTS);
+ s32 r6 = ptr->monList->listCount;
+ s32 r4 = ptr->monList->monData[0].data;
s32 i;
- ptr->unkPtr->unk4[0].data = 1;
+ ptr->monList->monData[0].data = 1;
for (i = 1; i < r6; i++)
{
- if (ptr->unkPtr->unk4[i].data == r4)
+ if (ptr->monList->monData[i].data == r4)
{
- ptr->unkPtr->unk4[i].data = ptr->unkPtr->unk4[i - 1].data;
+ ptr->monList->monData[i].data = ptr->monList->monData[i - 1].data;
}
else
{
- r4 = ptr->unkPtr->unk4[i].data;
- ptr->unkPtr->unk4[i].data = i + 1;
+ r4 = ptr->monList->monData[i].data;
+ ptr->monList->monData[i].data = i + 1;
}
}
- ptr->unk18 = 1;
+ ptr->returnFromGraph = 1;
return LT_FINISH;
}
static void sub_81CF2C4(struct PokenavSub7 *structPtr, struct PokenavMonList *item)
{
u32 left = 0;
- u32 right = structPtr->unkPtr->unk0;
+ u32 right = structPtr->monList->listCount;
u32 insertionIdx = left + (right - left) / 2;
while (right != insertionIdx)
{
- if (item->data > structPtr->unkPtr->unk4[insertionIdx].data)
+ if (item->data > structPtr->monList->monData[insertionIdx].data)
right = insertionIdx;
else
left = insertionIdx + 1;
insertionIdx = left + (right - left) / 2;
}
- for (right = structPtr->unkPtr->unk0; right > insertionIdx; right--)
- structPtr->unkPtr->unk4[right] = structPtr->unkPtr->unk4[right - 1];
- structPtr->unkPtr->unk4[insertionIdx] = *item;
- structPtr->unkPtr->unk0++;
+ for (right = structPtr->monList->listCount; right > insertionIdx; right--)
+ structPtr->monList->monData[right] = structPtr->monList->monData[right - 1];
+ structPtr->monList->monData[insertionIdx] = *item;
+ structPtr->monList->listCount++;
}
-bool32 sub_81CF330(void)
+bool32 OpenConditionSearchResults(void)
{
- struct PokenavSub8 * unk = AllocSubstruct(8, sizeof(struct PokenavSub8));
- if (unk == NULL)
+ struct PokenavSub8 *searchList = AllocSubstruct(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULT_LIST, sizeof(struct PokenavSub8));
+ if (searchList == NULL)
return FALSE;
- unk->ltid = CreateLoopedTask(sub_81CF418, 1);
- unk->callback = sub_81CF3E4;
- unk->unkC = FALSE;
+ searchList->ltid = CreateLoopedTask(LoopedTask_OpenConditionSearchResults, 1);
+ searchList->callback = GetSearchResultCurrentLoopedTaskActive;
+ searchList->fromGraph = FALSE;
return TRUE;
}
-bool32 sub_81CF368(void)
+bool32 OpenConditionSearchListFromGraph(void)
{
- struct PokenavSub8 * unk = AllocSubstruct(8, sizeof(struct PokenavSub8));
- if (unk == NULL)
+ struct PokenavSub8 *searchList = AllocSubstruct(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULT_LIST, sizeof(struct PokenavSub8));
+ if (searchList == NULL)
return FALSE;
- unk->ltid = CreateLoopedTask(sub_81CF418, 1);
- unk->callback = sub_81CF3E4;
- unk->unkC = TRUE;
+ searchList->ltid = CreateLoopedTask(LoopedTask_OpenConditionSearchResults, 1);
+ searchList->callback = GetSearchResultCurrentLoopedTaskActive;
+ searchList->fromGraph = TRUE;
return TRUE;
}
-void sub_81CF3A0(s32 idx)
+void CreateSearchResultsLoopedTask(s32 idx)
{
- struct PokenavSub8 * unk = GetSubstructPtr(8);
- unk->ltid = CreateLoopedTask(gUnknown_08623598[idx], 1);
- unk->callback = sub_81CF3E4;
+ struct PokenavSub8 *searchList = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULT_LIST);
+ searchList->ltid = CreateLoopedTask(sSearchResultLoopTaskFuncs[idx], 1);
+ searchList->callback = GetSearchResultCurrentLoopedTaskActive;
}
-bool32 sub_81CF3D0(void)
+bool32 IsSearchResultLoopedTaskActive(void)
{
- struct PokenavSub8 * unk = GetSubstructPtr(8);
- return unk->callback();
+ struct PokenavSub8 *searchList = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULT_LIST);
+ return searchList->callback();
}
-bool32 sub_81CF3E4(void)
+bool32 GetSearchResultCurrentLoopedTaskActive(void)
{
- struct PokenavSub8 * unk = GetSubstructPtr(8);
- return IsLoopedTaskActive(unk->ltid);
+ struct PokenavSub8 *searchList = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULT_LIST);
+ return IsLoopedTaskActive(searchList->ltid);
}
-void sub_81CF3F8(void)
+void FreeSearchResultSubstruct2(void)
{
- struct PokenavSub8 * unk = GetSubstructPtr(8);
+ struct PokenavSub8 *searchList = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULT_LIST);
sub_81C8234();
- RemoveWindow(unk->winid);
- FreePokenavSubstruct(8);
+ RemoveWindow(searchList->winid);
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULT_LIST);
}
-static u32 sub_81CF418(s32 state)
+static u32 LoopedTask_OpenConditionSearchResults(s32 state)
{
- struct PokenavSub8 * unk = GetSubstructPtr(8);
+ struct PokenavSub8 *searchList = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULT_LIST);
switch (state)
{
case 0:
- InitBgTemplates(gUnknown_08623590, NELEMS(gUnknown_08623590));
- DecompressAndCopyTileDataToVram(1, gUnknown_086233E4, 0, 0, 0);
- SetBgTilemapBuffer(1, unk->buff);
- CopyToBgTilemapBuffer(1, gUnknown_086234AC, 0, 0);
+ InitBgTemplates(sConditionSearchResultBgTemplates, NELEMS(sConditionSearchResultBgTemplates));
+ DecompressAndCopyTileDataToVram(1, sConditionSearchResultTiles, 0, 0, 0);
+ SetBgTilemapBuffer(1, searchList->buff);
+ CopyToBgTilemapBuffer(1, sConditionSearchResultTilemap, 0, 0);
CopyBgTilemapBufferToVram(1);
- CopyPaletteIntoBufferUnfaded(gUnknown_086233C4, 0x10, 0x20);
+ CopyPaletteIntoBufferUnfaded(sConditionSearchResultFramePal, 0x10, 0x20);
CopyBgTilemapBufferToVram(1);
return LT_INC_AND_PAUSE;
case 1:
@@ -424,13 +436,13 @@ static u32 sub_81CF418(s32 state)
case 2:
if (FreeTempTileDataBuffersIfPossible())
return LT_PAUSE;
- CopyPaletteIntoBufferUnfaded(gUnknown_08623570, 0x20, 0x20);
- sub_81CF88C();
+ CopyPaletteIntoBufferUnfaded(gUnknown_08623570, 0x20, 32);
+ InitConditionSearchListMenuTemplate();
return LT_INC_AND_PAUSE;
case 3:
if (sub_81C8224())
return LT_PAUSE;
- sub_81CF7C8(unk);
+ AddSearchResultListMenuWindow(searchList);
PrintHelpBarText(HELPBAR_CONDITION_MON_LIST);
return LT_INC_AND_PAUSE;
case 4:
@@ -441,28 +453,28 @@ static u32 sub_81CF418(s32 state)
ShowBg(1);
ShowBg(2);
HideBg(3);
- if (!unk->unkC)
+ if (!searchList->fromGraph)
{
- u8 r4 = GetSelectedConditionSearch() + POKENAV_MENUITEM_CONDITION_SEARCH_COOL;
- LoadLeftHeaderGfxForIndex(r4);
- sub_81C7FA0(r4, 1, 0);
- sub_81C7FA0(1, 1, 0);
+ u8 searchGfxId = GetSelectedConditionSearch() + POKENAV_MENUITEM_CONDITION_SEARCH_COOL;
+ LoadLeftHeaderGfxForIndex(searchGfxId);
+ ShowLeftHeaderGfx(searchGfxId, 1, 0);
+ ShowLeftHeaderGfx(POKENAV_GFX_CONDITION_MENU, 1, 0);
}
PokenavFadeScreen(1);
return LT_INC_AND_PAUSE;
case 5:
if (IsPaletteFadeActive())
return LT_PAUSE;
- if (sub_81C8010())
+ if (AreLeftHeaderSpritesMoving())
return LT_PAUSE;
break;
}
return LT_FINISH;
}
-static u32 sub_81CF578(s32 state)
+static u32 LoopedTask_MoveSearchListCursorUp(s32 state)
{
- struct PokenavSub8 * unk = GetSubstructPtr(8);
+ struct PokenavSub8 *searchList = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULT_LIST);
switch (state)
{
case 0:
@@ -479,11 +491,11 @@ static u32 sub_81CF578(s32 state)
}
return LT_INC_AND_PAUSE;
case 1:
- if (sub_81C8630())
+ if (IsMonListLoopedTaskActive())
return LT_PAUSE;
// fallthrough
case 2:
- sub_81CF7F4(unk);
+ PrintSearchResultListMenuItems(searchList);
return LT_INC_AND_PAUSE;
case 3:
if (IsDma3ManagerBusyWithBgCopy())
@@ -493,9 +505,9 @@ static u32 sub_81CF578(s32 state)
return LT_FINISH;
}
-static u32 sub_81CF5F0(s32 state)
+static u32 LoopedTask_MoveSearchListCursorDown(s32 state)
{
- struct PokenavSub8 * unk = GetSubstructPtr(8);
+ struct PokenavSub8 *searchList = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULT_LIST);
switch (state)
{
case 0:
@@ -512,11 +524,11 @@ static u32 sub_81CF5F0(s32 state)
}
return LT_INC_AND_PAUSE;
case 1:
- if (sub_81C8630())
+ if (IsMonListLoopedTaskActive())
return LT_PAUSE;
// fallthrough
case 2:
- sub_81CF7F4(unk);
+ PrintSearchResultListMenuItems(searchList);
return LT_INC_AND_PAUSE;
case 3:
if (IsDma3ManagerBusyWithBgCopy())
@@ -526,9 +538,9 @@ static u32 sub_81CF5F0(s32 state)
return LT_FINISH;
}
-static u32 sub_81CF668(s32 state)
+static u32 LoopedTask_MoveSearchListPageUp(s32 state)
{
- struct PokenavSub8 * unk = GetSubstructPtr(8);
+ struct PokenavSub8 *searchList = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULT_LIST);
switch (state)
{
case 0:
@@ -545,11 +557,11 @@ static u32 sub_81CF668(s32 state)
}
return LT_INC_AND_PAUSE;
case 1:
- if (sub_81C8630())
+ if (IsMonListLoopedTaskActive())
return LT_PAUSE;
// fallthrough
case 2:
- sub_81CF7F4(unk);
+ PrintSearchResultListMenuItems(searchList);
return LT_INC_AND_PAUSE;
case 3:
if (IsDma3ManagerBusyWithBgCopy())
@@ -559,9 +571,9 @@ static u32 sub_81CF668(s32 state)
return LT_FINISH;
}
-static u32 sub_81CF6E0(s32 state)
+static u32 LoopedTask_MoveSearchListPageDown(s32 state)
{
- struct PokenavSub8 * unk = GetSubstructPtr(8);
+ struct PokenavSub8 *searchList = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_SEARCH_RESULT_LIST);
switch (state)
{
case 0:
@@ -578,11 +590,11 @@ static u32 sub_81CF6E0(s32 state)
}
return LT_INC_AND_PAUSE;
case 1:
- if (sub_81C8630())
+ if (IsMonListLoopedTaskActive())
return LT_PAUSE;
// fallthrough
case 2:
- sub_81CF7F4(unk);
+ PrintSearchResultListMenuItems(searchList);
return LT_INC_AND_PAUSE;
case 3:
if (IsDma3ManagerBusyWithBgCopy())
@@ -592,27 +604,27 @@ static u32 sub_81CF6E0(s32 state)
return LT_FINISH;
}
-static u32 sub_81CF758(s32 state)
+static u32 LoopedTask_ExitConditionSearchMenu(s32 state)
{
switch (state)
{
case 0:
PlaySE(SE_SELECT);
PokenavFadeScreen(0);
- sub_81C78A0();
+ SlideMenuHeaderDown();
return LT_INC_AND_PAUSE;
case 1:
if (IsPaletteFadeActive())
return LT_PAUSE;
if (MainMenuLoopedTaskIsBusy())
return LT_PAUSE;
- sub_81C7FDC();
+ SetLeftHeaderSpritesInvisibility();
break;
}
return LT_FINISH;
}
-static u32 sub_81CF798(s32 state)
+static u32 LoopedTask_SelectSearchResult(s32 state)
{
switch (state)
{
@@ -628,46 +640,47 @@ static u32 sub_81CF798(s32 state)
return LT_FINISH;
}
-static void sub_81CF7C8(struct PokenavSub8 * ptr)
+static void AddSearchResultListMenuWindow(struct PokenavSub8 *searchList)
{
- ptr->winid = AddWindow(&gUnknown_086235B4);
- PutWindowTilemap(ptr->winid);
- CopyWindowToVram(ptr->winid, 1);
- sub_81CF7F4(ptr);
+ searchList->winid = AddWindow(&sSearchResultListMenuWindowTemplate);
+ PutWindowTilemap(searchList->winid);
+ CopyWindowToVram(searchList->winid, 1);
+ PrintSearchResultListMenuItems(searchList);
}
-static void sub_81CF7F4(struct PokenavSub8 * ptr)
+static void PrintSearchResultListMenuItems(struct PokenavSub8 *searchList)
{
- s32 r7 = sub_81CF0F0();
+ s32 r7 = GetSearchResultsSelectedMonData();
DynamicPlaceholderTextUtil_Reset();
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
*gStringVar1 = EOS;
DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar2, gText_NumberF700);
- AddTextPrinterParameterized(ptr->winid, 1, gStringVar2, 4, 1, 0xFF, NULL);
+ AddTextPrinterParameterized(searchList->winid, 1, gStringVar2, 4, 1, 0xFF, NULL);
ConvertIntToDecimalStringN(gStringVar1, r7, STR_CONV_MODE_RIGHT_ALIGN, 3);
- AddTextPrinterParameterized(ptr->winid, 1, gStringVar1, 34, 1, 0xFF, NULL);
- CopyWindowToVram(ptr->winid, 2);
+ AddTextPrinterParameterized(searchList->winid, 1, gStringVar1, 34, 1, 0xFF, NULL);
+ CopyWindowToVram(searchList->winid, 2);
}
-static void sub_81CF88C(void)
+static void InitConditionSearchListMenuTemplate(void)
{
struct PokenavListTemplate template;
- template.list.monList = sub_81CF0D0();
- template.unk4 = sub_81CF0E0();
+
+ template.list.monList = GetSearchResultsMonDataList();
+ template.count = GetSearchResultsMonListCount();
template.unk8 = 4;
template.unk6 = sub_81CF10C();
- template.unk9 = 13;
- template.unkA = 17;
- template.unkB = 1;
- template.unkC = 8;
- template.unkD = 2;
- template.unkE = 1;
- template.listFunc.unk10_1 = sub_81CF8E4;
+ template.item_X = 13;
+ template.windowWidth = 17;
+ template.listTop = 1;
+ template.maxShowed = 8;
+ template.fillValue = 2;
+ template.fontId = 1;
+ template.listFunc.printMonFunc = PrintSearchMonListItem;
template.unk14 = NULL;
- sub_81C81D4(&gUnknown_08623590[1], &template, 0);
+ sub_81C81D4(&sConditionSearchResultBgTemplates[1], &template, 0);
}
-static void sub_81CF8E4(struct PokenavMonList * item, u8 * dest)
+static void PrintSearchMonListItem(struct PokenavMonList * item, u8 * dest)
{
u8 gender;
u8 level;
diff --git a/src/pokenav_main_menu.c b/src/pokenav_main_menu.c
index 155e30939..009cf783f 100644
--- a/src/pokenav_main_menu.c
+++ b/src/pokenav_main_menu.c
@@ -15,9 +15,9 @@
struct PokenavMainMenuResources
{
- void (*unk0)(u32);
- u32 (*unk4)(void);
- u32 unk8;
+ void (*loopTask)(u32);
+ u32 (*isLoopTaskActiveFunc)(void);
+ u32 unused;
u32 currentTaskId;
u32 helpBarWindowId;
u32 palettes;
@@ -47,8 +47,8 @@ static void SpriteCB_MoveLeftHeader(struct Sprite *sprite);
static void InitPokenavMainMenuResources(void);
static void InitHoennMapHeaderSprites(void);
static void InitHelpBar(void);
-static u32 LoopedTask_ScrollMenuHeaderDown(s32 a0);
-static u32 LoopedTask_ScrollMenuHeaderUp(s32 a0);
+static u32 LoopedTask_SlideMenuHeaderUp(s32 a0);
+static u32 LoopedTask_SlideMenuHeaderDown(s32 a0);
static void DrawHelpBar(u32 windowId);
static void SpriteCB_SpinningPokenav(struct Sprite* sprite);
static u32 LoopedTask_InitPokenavMenu(s32 a0);
@@ -293,8 +293,8 @@ static const struct SpriteTemplate sUnknown_0861FB44 =
bool32 InitPokenavMainMenu(void)
{
struct PokenavMainMenuResources *structPtr;
-
- structPtr = AllocSubstruct(0, sizeof(struct PokenavMainMenuResources));
+
+ structPtr = AllocSubstruct(POKENAV_SUBSTRUCT_MAIN_MENU, sizeof(struct PokenavMainMenuResources));
if (structPtr == NULL)
return FALSE;
@@ -306,14 +306,14 @@ bool32 InitPokenavMainMenu(void)
u32 PokenavMainMenuLoopedTaskIsActive(void)
{
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
return IsLoopedTaskActive(structPtr->currentTaskId);
}
void ShutdownPokenav(void)
{
PlaySE(SE_POKENAV_OFF);
- sub_81CAADC();
+ ResetBldCnt_();
BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK);
}
@@ -345,7 +345,7 @@ static u32 LoopedTask_InitPokenavMenu(s32 a0)
ResetTempTileDataBuffers();
return LT_INC_AND_CONTINUE;
case 1:
- structPtr = GetSubstructPtr(0);
+ structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
DecompressAndCopyTileDataToVram(0, &gPokenavHeader_Gfx, 0, 0, 0);
SetBgTilemapBuffer(0, structPtr->tilemapBuffer);
CopyToBgTilemapBuffer(0, &gPokenavHeader_Tilemap, 0, 0);
@@ -371,46 +371,46 @@ static u32 LoopedTask_InitPokenavMenu(s32 a0)
}
}
-void sub_81C7834(void *func1, void *func2) // Fix types later.
+void SetActiveMenuLoopTasks(void *createLoopTask, void *isLoopTaskActive) // Fix types later.
{
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
- structPtr->unk0 = func1;
- structPtr->unk4 = func2;
- structPtr->unk8 = 0;
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
+ structPtr->loopTask = createLoopTask;
+ structPtr->isLoopTaskActiveFunc = isLoopTaskActive;
+ structPtr->unused = 0;
}
-void sub_81C7850(u32 a0)
+void RunMainMenuLoopedTask(u32 a0)
{
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
- structPtr->unk8 = 0;
- structPtr->unk0(a0);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
+ structPtr->unused = 0;
+ structPtr->loopTask(a0);
}
-u32 sub_81C786C(void)
+u32 IsActiveMenuLoopTaskActive(void)
{
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
- return structPtr->unk4();
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
+ return structPtr->isLoopTaskActiveFunc();
}
-void sub_81C7880(void)
+void SlideMenuHeaderUp(void)
{
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
- structPtr->currentTaskId = CreateLoopedTask(LoopedTask_ScrollMenuHeaderDown, 4);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
+ structPtr->currentTaskId = CreateLoopedTask(LoopedTask_SlideMenuHeaderUp, 4);
}
-void sub_81C78A0(void)
+void SlideMenuHeaderDown(void)
{
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
- structPtr->currentTaskId = CreateLoopedTask(LoopedTask_ScrollMenuHeaderUp, 4);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
+ structPtr->currentTaskId = CreateLoopedTask(LoopedTask_SlideMenuHeaderDown, 4);
}
bool32 MainMenuLoopedTaskIsBusy(void)
{
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
return IsLoopedTaskActive(structPtr->currentTaskId);
}
-static u32 LoopedTask_ScrollMenuHeaderDown(s32 a0)
+static u32 LoopedTask_SlideMenuHeaderUp(s32 a0)
{
switch (a0)
{
@@ -431,14 +431,14 @@ static u32 LoopedTask_ScrollMenuHeaderDown(s32 a0)
}
}
-static u32 LoopedTask_ScrollMenuHeaderUp(s32 a0)
+static u32 LoopedTask_SlideMenuHeaderDown(s32 a0)
{
if (ChangeBgY(0, 384, 2) <= 0)
{
ChangeBgY(0, 0, 0);
- return 4;
+ return LT_FINISH;
}
- return 2;
+ return LT_PAUSE;
}
void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 bufferOffset, u32 size)
@@ -466,150 +466,51 @@ void Pokenav_AllocAndLoadPalettes(const struct SpritePalette *palettes)
}
}
-void sub_81C7990(u32 a0, u16 a1)
-{
- CpuFill16(a1, gPlttBufferFaded + 0x100 + (a0 * 16), 16 * sizeof(u16));
-}
-
-NAKED
-void sub_81C79BC(const u16 *a0, const u16 *a1, u32 a2, u32 a3, u32 a4, u16 *a5)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0xC\n\
- str r0, [sp]\n\
- str r1, [sp, 0x4]\n\
- mov r10, r2\n\
- str r3, [sp, 0x8]\n\
- ldr r0, [sp, 0x2C]\n\
- cmp r0, 0\n\
- bne _081C79E4\n\
- ldr r2, =0x001fffff\n\
- mov r1, r10\n\
- ands r2, r1\n\
- ldr r0, [sp]\n\
- b _081C79F4\n\
- .pool\n\
-_081C79E4:\n\
- ldr r2, [sp, 0x2C]\n\
- ldr r0, [sp, 0x8]\n\
- cmp r2, r0\n\
- blt _081C7A00\n\
- ldr r2, =0x001fffff\n\
- mov r1, r10\n\
- ands r2, r1\n\
- ldr r0, [sp, 0x4]\n\
-_081C79F4:\n\
- ldr r1, [sp, 0x30]\n\
- bl CpuSet\n\
- b _081C7AAE\n\
- .pool\n\
-_081C7A00:\n\
- movs r2, 0x1\n\
- negs r2, r2\n\
- add r10, r2\n\
- b _081C7AA6\n\
-_081C7A08:\n\
- ldr r1, [sp]\n\
- ldrh r0, [r1]\n\
- movs r2, 0x1F\n\
- mov r9, r2\n\
- mov r1, r9\n\
- ands r1, r0\n\
- mov r9, r1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 21\n\
- movs r1, 0x1F\n\
- ands r1, r2\n\
- mov r8, r1\n\
- lsrs r7, r0, 26\n\
- movs r2, 0x1F\n\
- ands r7, r2\n\
- ldr r0, [sp, 0x4]\n\
- ldrh r4, [r0]\n\
- movs r0, 0x1F\n\
- ands r0, r4\n\
- mov r1, r9\n\
- subs r0, r1\n\
- lsls r0, 8\n\
- ldr r1, [sp, 0x8]\n\
- bl __divsi3\n\
- ldr r2, [sp, 0x2C]\n\
- adds r6, r0, 0\n\
- muls r6, r2\n\
- asrs r6, 8\n\
- lsls r4, 16\n\
- lsrs r0, r4, 21\n\
- movs r1, 0x1F\n\
- ands r0, r1\n\
- mov r2, r8\n\
- subs r0, r2\n\
- lsls r0, 8\n\
- ldr r1, [sp, 0x8]\n\
- bl __divsi3\n\
- ldr r1, [sp, 0x2C]\n\
- adds r5, r0, 0\n\
- muls r5, r1\n\
- asrs r5, 8\n\
- lsrs r4, 26\n\
- movs r2, 0x1F\n\
- ands r4, r2\n\
- subs r4, r7\n\
- lsls r4, 8\n\
- adds r0, r4, 0\n\
- ldr r1, [sp, 0x8]\n\
- bl __divsi3\n\
- ldr r1, [sp, 0x2C]\n\
- muls r0, r1\n\
- asrs r0, 8\n\
- add r6, r9\n\
- movs r2, 0x1F\n\
- ands r6, r2\n\
- add r5, r8\n\
- ands r5, r2\n\
- adds r0, r7, r0\n\
- ands r0, r2\n\
- lsls r0, 10\n\
- lsls r5, 5\n\
- orrs r0, r5\n\
- orrs r0, r6\n\
- ldr r1, [sp, 0x30]\n\
- strh r0, [r1]\n\
- ldr r2, [sp]\n\
- adds r2, 0x2\n\
- str r2, [sp]\n\
- ldr r0, [sp, 0x4]\n\
- adds r0, 0x2\n\
- str r0, [sp, 0x4]\n\
- adds r1, 0x2\n\
- str r1, [sp, 0x30]\n\
- movs r1, 0x1\n\
- negs r1, r1\n\
- add r10, r1\n\
-_081C7AA6:\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- cmp r10, r0\n\
- bne _081C7A08\n\
-_081C7AAE:\n\
- add sp, 0xC\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided");
+void PokenavFillPalette(u32 palIndex, u16 fillValue)
+{
+ CpuFill16(fillValue, gPlttBufferFaded + 0x100 + (palIndex * 16), 16 * sizeof(u16));
+}
+
+void PokenavCopyPalette(const u16 *src, const u16 *dest, int size, int a3, int a4, u16 *palette)
+{
+
+ if (a4 == 0)
+ {
+ CpuCopy16(src, palette, size * 2);
+ }
+ else if (a4 >= a3)
+ {
+ CpuCopy16(dest, palette, size * 2);
+ }
+ else
+ {
+ int r, g, b;
+ int r1, g1, b1;
+ while (size--)
+ {
+ r = GET_R(*src);
+ g = GET_G(*src);
+ b = GET_B(*src);
+
+ r1 = ((((GET_R(*dest) << 8) - (r << 8)) / a3) * a4) >> 8;
+ g1 = ((((GET_G(*dest) << 8) - (g << 8)) / a3) * a4) >> 8;
+ b1 = ((((GET_B(*dest) << 8) - (b << 8)) / a3) * a4) >> 8;
+
+ r = (r + r1) & 0x1F; //_RGB(r + r1, g + g1, b + b1); doesn't match; I have to assign the value of ((r + r1) & 0x1F) to r1
+ g = (g + g1) & 0x1F; //See above
+ b = (b + b1) & 0x1F; //See above
+
+ *palette = RGB2(r, g, b); //See above comment
+
+ src++, dest++;
+ palette++;
+ }
+ }
}
void PokenavFadeScreen(s32 fadeType)
{
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
switch (fadeType)
{
@@ -648,7 +549,7 @@ void InitBgTemplates(const struct BgTemplate *templates, int count)
static void InitHelpBar(void)
{
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
InitWindows(&sHelpBarWindowTemplate[0]);
structPtr->helpBarWindowId = 0;
@@ -659,7 +560,7 @@ static void InitHelpBar(void)
void PrintHelpBarText(u32 textId)
{
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
DrawHelpBar(structPtr->helpBarWindowId);
AddTextPrinterParameterized3(structPtr->helpBarWindowId, 1, 0, 1, sHelpBarTextColors, 0, sHelpBarTexts[textId]);
@@ -680,7 +581,7 @@ static void InitPokenavMainMenuResources(void)
{
s32 i;
u8 spriteId;
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
for (i = 0; i < ARRAY_COUNT(gSpinningPokenavSpriteSheet); i++)
LoadCompressedSpriteSheet(&gSpinningPokenavSpriteSheet[i]);
@@ -693,7 +594,7 @@ static void InitPokenavMainMenuResources(void)
static void CleanupPokenavMainMenuResources(void)
{
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
DestroySprite(structPtr->spinningPokenav);
FreeSpriteTilesByTag(0);
@@ -708,7 +609,7 @@ static void SpriteCB_SpinningPokenav(struct Sprite *sprite)
struct Sprite *PauseSpinningPokenavSprite(void)
{
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
structPtr->spinningPokenav->callback = SpriteCallbackDummy;
return structPtr->spinningPokenav;
@@ -716,7 +617,7 @@ struct Sprite *PauseSpinningPokenavSprite(void)
void ResumeSpinningPokenavSprite(void)
{
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
structPtr->spinningPokenav->pos1.x = 220;
structPtr->spinningPokenav->pos1.y = 12;
@@ -729,7 +630,7 @@ void ResumeSpinningPokenavSprite(void)
static void InitHoennMapHeaderSprites(void)
{
s32 i, spriteId;
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
LoadCompressedSpriteSheet(&sPokenavHoennMapLeftHeaderSpriteSheet);
AllocSpritePalette(1);
@@ -758,9 +659,9 @@ void LoadLeftHeaderGfxForIndex(u32 menuGfxId)
LoadLeftHeaderGfxForSubMenu(menuGfxId - POKENAV_GFX_SUBMENUS_START);
}
-void sub_81C7E14(u32 menuGfxId)
+void UpdateRegionMapRightHeaderTiles(u32 menuGfxId)
{
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
if (menuGfxId == POKENAV_GFX_MAP_MENU_ZOOMED_OUT)
structPtr->leftHeaderSprites[1]->oam.tileNum = GetSpriteTileStartByTag(2) + 32;
@@ -776,12 +677,12 @@ static void LoadLeftHeaderGfxForMenu(u32 menuGfxId)
if (menuGfxId >= POKENAV_GFX_SUBMENUS_START)
return;
- structPtr = GetSubstructPtr(0);
+ structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
tag = sPokenavMenuLeftHeaderSpriteSheets[menuGfxId].tag;
size = GetDecompressedDataSize(sPokenavMenuLeftHeaderSpriteSheets[menuGfxId].data);
LoadPalette(&gPokenavLeftHeader_Pal[tag * 16], (IndexOfSpritePaletteTag(1) * 16) + 0x100, 0x20);
LZ77UnCompWram(sPokenavMenuLeftHeaderSpriteSheets[menuGfxId].data, gDecompressionBuffer);
- RequestDma3Copy(gDecompressionBuffer, (void *)VRAM + 0x10000 + (GetSpriteTileStartByTag(2) * 32), size, 1);
+ RequestDma3Copy(gDecompressionBuffer, (void *)OBJ_VRAM0 + (GetSpriteTileStartByTag(2) * 32), size, 1);
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)
@@ -804,33 +705,33 @@ static void LoadLeftHeaderGfxForSubMenu(u32 menuGfxId)
RequestDma3Copy(&gDecompressionBuffer[0x1000], (void *)VRAM + 0x10800 + (GetSpriteTileStartByTag(2) * 32), size, 1);
}
-void sub_81C7FA0(u32 menuGfxId, bool32 arg1, bool32 arg2)
+void ShowLeftHeaderGfx(u32 menuGfxId, bool32 isMain, bool32 isOnRightSide)
{
- u32 var;
+ u32 tileTop;
- if (!arg1)
- var = 0x30;
+ if (!isMain)
+ tileTop = 0x30;
else
- var = 0x10;
+ tileTop = 0x10;
if (menuGfxId < POKENAV_GFX_SUBMENUS_START)
- ShowLeftHeaderSprites(var, arg2);
+ ShowLeftHeaderSprites(tileTop, isOnRightSide);
else
- ShowLeftHeaderSubmenuSprites(var, arg2);
+ ShowLeftHeaderSubmenuSprites(tileTop, isOnRightSide);
}
-void sub_81C7FC4(u32 arg0, bool32 arg1)
+void HideMainOrSubMenuLeftHeader(u32 id, bool32 onRightSide)
{
- if (arg0 < 6)
- HideLeftHeaderSprites(arg1);
+ if (id < POKENAV_GFX_PARTY_MENU)
+ HideLeftHeaderSprites(onRightSide);
else
- HideLeftHeaderSubmenuSprites(arg1);
+ HideLeftHeaderSubmenuSprites(onRightSide);
}
-void sub_81C7FDC(void)
+void SetLeftHeaderSpritesInvisibility(void)
{
s32 i;
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
for (i = 0; i < (s32)ARRAY_COUNT(structPtr->leftHeaderSprites); i++)
{
@@ -839,9 +740,9 @@ void sub_81C7FDC(void)
}
}
-bool32 sub_81C8010(void)
+bool32 AreLeftHeaderSpritesMoving(void)
{
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
if (structPtr->leftHeaderSprites[0]->callback == SpriteCallbackDummy && structPtr->submenuLeftHeaderSprites[0]->callback == SpriteCallbackDummy)
return FALSE;
@@ -852,7 +753,7 @@ bool32 sub_81C8010(void)
static void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide)
{
s32 start, end, i;
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
if (!isOnRightSide)
start = -96, end = 32;
@@ -869,7 +770,7 @@ static void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide)
static void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide)
{
s32 start, end, i;
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
if (!isOnRightSide)
start = -96, end = 16;
@@ -886,7 +787,7 @@ static void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide)
static void HideLeftHeaderSprites(bool32 isOnRightSide)
{
s32 start, end, i;
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
if (!isOnRightSide)
start = 32, end = -96;
@@ -902,7 +803,7 @@ static void HideLeftHeaderSprites(bool32 isOnRightSide)
static void HideLeftHeaderSubmenuSprites(bool32 isOnRightSide)
{
s32 start, end, i;
- struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
+ struct PokenavMainMenuResources *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU);
if (!isOnRightSide)
start = 16, end = -96;
diff --git a/src/pokenav_match_call_1.c b/src/pokenav_match_call_1.c
index 265259394..fb44aaa87 100755
--- a/src/pokenav_match_call_1.c
+++ b/src/pokenav_match_call_1.c
@@ -53,7 +53,7 @@ static const u8 sMatchCallOptionsHasCheckPage[] =
bool32 PokenavCallback_Init_MatchCall(void)
{
- struct Pokenav3Struct *state = AllocSubstruct(5, sizeof(struct Pokenav3Struct));
+ struct Pokenav3Struct *state = AllocSubstruct(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN, sizeof(struct Pokenav3Struct));
if (!state)
return FALSE;
@@ -66,33 +66,33 @@ bool32 PokenavCallback_Init_MatchCall(void)
u32 GetMatchCallCallback(void)
{
- struct Pokenav3Struct *state = GetSubstructPtr(5);
+ struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
return state->callback(state);
}
void FreeMatchCallSubstruct1(void)
{
- FreePokenavSubstruct(5);
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
}
static u32 CB2_HandleMatchCallInput(struct Pokenav3Struct *state)
{
int selection;
- if (gMain.newAndRepeatedKeys & DPAD_UP)
+ if (JOY_REPEAT(DPAD_UP))
return POKENAV_MC_FUNC_UP;
- if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ if (JOY_REPEAT(DPAD_DOWN))
return POKENAV_MC_FUNC_DOWN;
- if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ if (JOY_REPEAT(DPAD_LEFT))
return POKENAV_MC_FUNC_PG_UP;
- if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ if (JOY_REPEAT(DPAD_RIGHT))
return POKENAV_MC_FUNC_PG_DOWN;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
state->callback = CB2_HandleMatchCallOptionsInput;
state->optionCursorPos = 0;
- selection = GetSelectedMatchCall();
+ selection = GetSelectedPokenavListIndex();
if (!state->matchCallEntries[selection].isSpecialTrainer || MatchCall_HasCheckPage(state->matchCallEntries[selection].headerId))
{
@@ -108,7 +108,7 @@ static u32 CB2_HandleMatchCallInput(struct Pokenav3Struct *state)
return POKENAV_MC_FUNC_SELECT;
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
if (GetPokenavMode() != POKENAV_MODE_FORCE_CALL_READY)
{
@@ -132,19 +132,19 @@ static u32 GetExitMatchCallMenuId(struct Pokenav3Struct *state)
static u32 CB2_HandleMatchCallOptionsInput(struct Pokenav3Struct *state)
{
- if ((gMain.newKeys & DPAD_UP) && state->optionCursorPos)
+ if ((JOY_NEW(DPAD_UP)) && state->optionCursorPos)
{
state->optionCursorPos--;
return POKENAV_MC_FUNC_MOVE_OPTIONS_CURSOR;
}
- if ((gMain.newKeys & DPAD_DOWN) && state->optionCursorPos < state->maxOptionId)
+ if ((JOY_NEW(DPAD_DOWN)) && state->optionCursorPos < state->maxOptionId)
{
state->optionCursorPos++;
return POKENAV_MC_FUNC_MOVE_OPTIONS_CURSOR;
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
switch (state->matchCallOptions[state->optionCursorPos])
{
@@ -166,7 +166,7 @@ static u32 CB2_HandleMatchCallOptionsInput(struct Pokenav3Struct *state)
}
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
state->callback = CB2_HandleMatchCallInput;
return POKENAV_MC_FUNC_CANCEL;
@@ -177,12 +177,12 @@ static u32 CB2_HandleMatchCallOptionsInput(struct Pokenav3Struct *state)
static u32 CB2_HandleCheckPageInput(struct Pokenav3Struct *state)
{
- if (gMain.newAndRepeatedKeys & DPAD_UP)
+ if (JOY_REPEAT(DPAD_UP))
return POKENAV_MC_FUNC_CHECK_PAGE_UP;
- if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ if (JOY_REPEAT(DPAD_DOWN))
return POKENAV_MC_FUNC_CHECK_PAGE_DOWN;
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
state->callback = CB2_HandleMatchCallInput;
return POKENAV_MC_FUNC_EXIT_CHECK_PAGE;
@@ -193,7 +193,7 @@ static u32 CB2_HandleCheckPageInput(struct Pokenav3Struct *state)
static u32 CB2_HandleCallInput(struct Pokenav3Struct *state)
{
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
state->callback = CB2_HandleMatchCallInput;
return POKENAV_MC_FUNC_10;
@@ -205,7 +205,7 @@ static u32 CB2_HandleCallInput(struct Pokenav3Struct *state)
static u32 sub_81CAD20(s32 taskState)
{
int i, j;
- struct Pokenav3Struct *state = GetSubstructPtr(5);
+ struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
switch (taskState)
{
case 0:
@@ -239,7 +239,7 @@ static u32 sub_81CAD20(s32 taskState)
{
state->matchCallEntries[state->numRegistered].headerId = state->headerId;
state->matchCallEntries[state->numRegistered].isSpecialTrainer = FALSE;
- state->matchCallEntries[state->numRegistered].mapSec = sub_81CB0C8(j);
+ state->matchCallEntries[state->numRegistered].mapSec = GetMatchTableMapSectionId(j);
state->numRegistered++;
}
@@ -266,31 +266,31 @@ bool32 IsRematchEntryRegistered(int rematchIndex)
int sub_81CAE28(void)
{
- struct Pokenav3Struct *state = GetSubstructPtr(5);
+ struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
return state->unk10;
}
int GetNumberRegistered(void)
{
- struct Pokenav3Struct *state = GetSubstructPtr(5);
+ struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
return state->numRegistered;
}
int sub_81CAE48(void)
{
- struct Pokenav3Struct *state = GetSubstructPtr(5);
+ struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
return state->unkC;
}
int unref_sub_81CAE58(void)
{
- struct Pokenav3Struct *state = GetSubstructPtr(5);
+ struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
return state->numRegistered - state->unkC;
}
int unref_sub_81CAE6C(int arg0)
{
- struct Pokenav3Struct *state = GetSubstructPtr(5);
+ struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
arg0 += state->unkC;
if (arg0 >= state->numRegistered)
return REMATCH_TABLE_ENTRIES;
@@ -300,19 +300,19 @@ int unref_sub_81CAE6C(int arg0)
struct PokenavMatchCallEntries *sub_81CAE94(void)
{
- struct Pokenav3Struct *state = GetSubstructPtr(5);
+ struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
return state->matchCallEntries;
}
u16 GetMatchCallMapSec(int index)
{
- struct Pokenav3Struct *state = GetSubstructPtr(5);
+ struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
return state->matchCallEntries[index].mapSec;
}
bool32 ShouldDrawRematchPokeballIcon(int index)
{
- struct Pokenav3Struct *state = GetSubstructPtr(5);
+ struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
if (!state->matchCallEntries[index].isSpecialTrainer)
index = state->matchCallEntries[index].headerId;
else
@@ -327,7 +327,7 @@ bool32 ShouldDrawRematchPokeballIcon(int index)
int GetMatchCallTrainerPic(int index)
{
int headerId;
- struct Pokenav3Struct *state = GetSubstructPtr(5);
+ struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
if (!state->matchCallEntries[index].isSpecialTrainer)
{
index = GetTrainerIdxByRematchIdx(state->matchCallEntries[index].headerId);
@@ -348,7 +348,7 @@ int GetMatchCallTrainerPic(int index)
const u8 *GetMatchCallMessageText(int index, u8 *arg1)
{
- struct Pokenav3Struct *state = GetSubstructPtr(5);
+ struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
*arg1 = 0;
if (!Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType))
return gText_CallCantBeMadeHere;
@@ -364,7 +364,7 @@ const u8 *GetMatchCallMessageText(int index, u8 *arg1)
const u8 *GetMatchCallFlavorText(int index, int checkPageEntry)
{
int rematchId;
- struct Pokenav3Struct *state = GetSubstructPtr(5);
+ struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
if (state->matchCallEntries[index].isSpecialTrainer)
{
rematchId = MatchCall_GetRematchTableIdx(state->matchCallEntries[index].headerId);
@@ -381,13 +381,13 @@ const u8 *GetMatchCallFlavorText(int index, int checkPageEntry)
u16 GetMatchCallOptionCursorPos(void)
{
- struct Pokenav3Struct *state = GetSubstructPtr(5);
+ struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
return state->optionCursorPos;
}
u16 GetMatchCallOptionId(int optionId)
{
- struct Pokenav3Struct *state = GetSubstructPtr(5);
+ struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
if (state->maxOptionId < optionId)
return MATCH_CALL_OPTION_COUNT;
@@ -422,7 +422,7 @@ void BufferMatchCallNameAndDesc(struct PokenavMatchCallEntries *matchCallEntry,
}
}
-u8 sub_81CB0C8(int rematchIndex)
+u8 GetMatchTableMapSectionId(int rematchIndex)
{
int mapGroup = gRematchTable[rematchIndex].mapGroup;
int mapNum = gRematchTable[rematchIndex].mapNum;
@@ -431,7 +431,7 @@ u8 sub_81CB0C8(int rematchIndex)
int GetIndexDeltaOfNextCheckPageDown(int index)
{
- struct Pokenav3Struct *state = GetSubstructPtr(5);
+ struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
int count = 1;
while (++index < state->numRegistered)
{
@@ -448,7 +448,7 @@ int GetIndexDeltaOfNextCheckPageDown(int index)
int GetIndexDeltaOfNextCheckPageUp(int index)
{
- struct Pokenav3Struct *state = GetSubstructPtr(5);
+ struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
int count = -1;
while (--index >= 0)
{
@@ -488,8 +488,8 @@ bool32 unref_sub_81CB16C(void)
static bool32 sub_81CB1D0(void)
{
- struct Pokenav3Struct *state = GetSubstructPtr(5);
- int selection = GetSelectedMatchCall();
+ struct Pokenav3Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_MAIN);
+ int selection = GetSelectedPokenavListIndex();
if (!state->matchCallEntries[selection].isSpecialTrainer)
{
if (GetMatchCallMapSec(selection) == gMapHeader.regionMapSectionId)
diff --git a/src/pokenav_match_call_2.c b/src/pokenav_match_call_2.c
index 60091577e..adcd889d3 100755
--- a/src/pokenav_match_call_2.c
+++ b/src/pokenav_match_call_2.c
@@ -23,7 +23,6 @@
#include "constants/game_stat.h"
#include "constants/region_map_sections.h"
#include "constants/songs.h"
-#include "constants/species.h"
struct Pokenav4Struct
{
@@ -37,7 +36,7 @@ struct Pokenav4Struct
u16 msgBoxWindowId;
s16 unk16;
u8 unused18;
- u8 unk19;
+ u8 unused19;
u16 unk1A;
struct Sprite *optionsCursorSprite;
struct Sprite *trainerPicSprite;
@@ -51,9 +50,9 @@ struct Pokenav4Struct
static bool32 GetCurrentLoopedTaskActive(void);
static u32 LoopedTask_OpenMatchCall(s32);
-static void sub_81CBBB8(void);
+static void InitMatchCallPokenavListMenuTemplate(void);
static void sub_81CBC1C(void);
-static void sub_81CC2B4(void);
+static void RemoveMatchCallSprites(void);
static void sub_81CC034(struct Pokenav4Struct *);
static void DrawMatchCallLeftColumnWindows(struct Pokenav4Struct *);
static void UpdateMatchCallInfoBox(struct Pokenav4Struct *);
@@ -120,7 +119,7 @@ static const u16 gUnknown_08622700[] = INCBIN_U16("graphics/pokenav/8622700.gbap
static const u16 gUnknown_08622720[] = INCBIN_U16("graphics/pokenav/pokeball_matchcall.gbapal");
static const u32 gUnknown_08622760[] = INCBIN_U32("graphics/pokenav/pokeball_matchcall.4bpp.lz");
-const struct BgTemplate gUnknown_0862278C[3] =
+const struct BgTemplate sMatchCallBgTemplates[3] =
{
{
.bg = 1,
@@ -153,22 +152,22 @@ const struct BgTemplate gUnknown_0862278C[3] =
static const LoopedTask sMatchCallLoopTaskFuncs[] =
{
- [POKENAV_MC_FUNC_NONE] = NULL,
- [POKENAV_MC_FUNC_DOWN] = MatchCallListCursorDown,
- [POKENAV_MC_FUNC_UP] = MatchCallListCursorUp,
- [POKENAV_MC_FUNC_PG_DOWN] = MatchCallListPageDown,
- [POKENAV_MC_FUNC_PG_UP] = MatchCallListPageUp,
- [POKENAV_MC_FUNC_SELECT] = SelectMatchCallEntry,
+ [POKENAV_MC_FUNC_NONE] = NULL,
+ [POKENAV_MC_FUNC_DOWN] = MatchCallListCursorDown,
+ [POKENAV_MC_FUNC_UP] = MatchCallListCursorUp,
+ [POKENAV_MC_FUNC_PG_DOWN] = MatchCallListPageDown,
+ [POKENAV_MC_FUNC_PG_UP] = MatchCallListPageUp,
+ [POKENAV_MC_FUNC_SELECT] = SelectMatchCallEntry,
[POKENAV_MC_FUNC_MOVE_OPTIONS_CURSOR] = MoveMatchCallOptionsCursor,
- [POKENAV_MC_FUNC_CANCEL] = CancelMatchCallSelection,
- [POKENAV_MC_FUNC_CALL_MSG] = DoMatchCallMessage,
- [POKENAV_MC_FUNC_NEARBY_MSG] = DoTrainerCloseByMessage,
- [POKENAV_MC_FUNC_10] = sub_81CB888,
- [POKENAV_MC_FUNC_SHOW_CHECK_PAGE] = ShowCheckPage,
- [POKENAV_MC_FUNC_CHECK_PAGE_UP] = ShowCheckPageUp,
- [POKENAV_MC_FUNC_CHECK_PAGE_DOWN] = ShowCheckPageDown,
- [POKENAV_MC_FUNC_EXIT_CHECK_PAGE] = ExitCheckPage,
- [POKENAV_MC_FUNC_EXIT] = ExitMatchCall
+ [POKENAV_MC_FUNC_CANCEL] = CancelMatchCallSelection,
+ [POKENAV_MC_FUNC_CALL_MSG] = DoMatchCallMessage,
+ [POKENAV_MC_FUNC_NEARBY_MSG] = DoTrainerCloseByMessage,
+ [POKENAV_MC_FUNC_10] = sub_81CB888,
+ [POKENAV_MC_FUNC_SHOW_CHECK_PAGE] = ShowCheckPage,
+ [POKENAV_MC_FUNC_CHECK_PAGE_UP] = ShowCheckPageUp,
+ [POKENAV_MC_FUNC_CHECK_PAGE_DOWN] = ShowCheckPageDown,
+ [POKENAV_MC_FUNC_EXIT_CHECK_PAGE] = ExitCheckPage,
+ [POKENAV_MC_FUNC_EXIT] = ExitMatchCall
};
static const struct WindowTemplate sMatchCallLocationWindowTemplate =
@@ -276,11 +275,11 @@ static const struct SpriteTemplate sTrainerPicSpriteTemplate =
bool32 OpenMatchCall(void)
{
- struct Pokenav4Struct *state = AllocSubstruct(6, sizeof(struct Pokenav4Struct));
+ struct Pokenav4Struct *state = AllocSubstruct(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN, sizeof(struct Pokenav4Struct));
if (!state)
return FALSE;
- state->unk19 = 0;
+ state->unused19 = 0;
state->loopTaskId = CreateLoopedTask(LoopedTask_OpenMatchCall, 1);
state->isTaskActiveCB = GetCurrentLoopedTaskActive;
return TRUE;
@@ -288,21 +287,21 @@ bool32 OpenMatchCall(void)
void CreateMatchCallLoopedTask(s32 index)
{
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
state->loopTaskId = CreateLoopedTask(sMatchCallLoopTaskFuncs[index], 1);
state->isTaskActiveCB = GetCurrentLoopedTaskActive;
}
bool32 IsMatchCallLoopedTaskActive(void)
{
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
return state->isTaskActiveCB();
}
void FreeMatchCallSubstruct2(void)
{
- struct Pokenav4Struct *state = GetSubstructPtr(6);
- sub_81CC2B4();
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
+ RemoveMatchCallSprites();
sub_81CBC1C();
RemoveWindow(state->infoBoxWindowId);
RemoveWindow(state->locWindowId);
@@ -312,17 +311,17 @@ void FreeMatchCallSubstruct2(void)
static bool32 GetCurrentLoopedTaskActive(void)
{
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
return IsLoopedTaskActive(state->loopTaskId);
}
static u32 LoopedTask_OpenMatchCall(s32 taskState)
{
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
switch (taskState)
{
case 0:
- InitBgTemplates(gUnknown_0862278C, ARRAY_COUNT(gUnknown_0862278C));
+ InitBgTemplates(sMatchCallBgTemplates, ARRAY_COUNT(sMatchCallBgTemplates));
ChangeBgX(2, 0, 0);
ChangeBgY(2, 0, 0);
DecompressAndCopyTileDataToVram(2, sMatchCallUI_Gfx, 0, 0, 0);
@@ -355,7 +354,7 @@ static u32 LoopedTask_OpenMatchCall(s32 taskState)
if (FreeTempTileDataBuffersIfPossible() || !sub_81CAE28())
return LT_PAUSE;
- sub_81CBBB8();
+ InitMatchCallPokenavListMenuTemplate();
return LT_INC_AND_PAUSE;
case 4:
if (sub_81C8224())
@@ -375,11 +374,11 @@ static u32 LoopedTask_OpenMatchCall(s32 taskState)
ShowBg(1);
sub_81CC214();
LoadLeftHeaderGfxForIndex(3);
- sub_81C7FA0(3, 1, 0);
+ ShowLeftHeaderGfx(POKENAV_GFX_MATCH_CALL_MENU, 1, 0);
PokenavFadeScreen(1);
return LT_INC_AND_PAUSE;
case 7:
- if (IsPaletteFadeActive() || sub_81C8010())
+ if (IsPaletteFadeActive() || AreLeftHeaderSpritesMoving())
return LT_PAUSE;
sub_81CBC38(1);
@@ -391,7 +390,7 @@ static u32 LoopedTask_OpenMatchCall(s32 taskState)
u32 MatchCallListCursorDown(s32 taskState)
{
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
switch (taskState)
{
case 0:
@@ -410,7 +409,7 @@ u32 MatchCallListCursorDown(s32 taskState)
}
break;
case 1:
- if (sub_81C8630())
+ if (IsMonListLoopedTaskActive())
return LT_PAUSE;
PrintMatchCallLocation(state, 0);
@@ -428,7 +427,7 @@ u32 MatchCallListCursorDown(s32 taskState)
u32 MatchCallListCursorUp(s32 taskState)
{
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
switch (taskState)
{
case 0:
@@ -447,7 +446,7 @@ u32 MatchCallListCursorUp(s32 taskState)
}
break;
case 1:
- if (sub_81C8630())
+ if (IsMonListLoopedTaskActive())
return LT_PAUSE;
PrintMatchCallLocation(state, 0);
@@ -465,7 +464,7 @@ u32 MatchCallListCursorUp(s32 taskState)
u32 MatchCallListPageDown(s32 taskState)
{
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
switch (taskState)
{
case 0:
@@ -484,7 +483,7 @@ u32 MatchCallListPageDown(s32 taskState)
}
break;
case 1:
- if (sub_81C8630())
+ if (IsMonListLoopedTaskActive())
return LT_PAUSE;
PrintMatchCallLocation(state, 0);
@@ -502,7 +501,7 @@ u32 MatchCallListPageDown(s32 taskState)
u32 MatchCallListPageUp(s32 taskState)
{
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
switch (taskState)
{
case 0:
@@ -521,7 +520,7 @@ u32 MatchCallListPageUp(s32 taskState)
}
break;
case 1:
- if (sub_81C8630())
+ if (IsMonListLoopedTaskActive())
return LT_PAUSE;
PrintMatchCallLocation(state, 0);
@@ -539,7 +538,7 @@ u32 MatchCallListPageUp(s32 taskState)
u32 SelectMatchCallEntry(s32 taskState)
{
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
switch (taskState)
{
case 0:
@@ -562,7 +561,7 @@ u32 MoveMatchCallOptionsCursor(s32 taskState)
u16 cursorPos;
PlaySE(SE_SELECT);
- state = GetSubstructPtr(6);
+ state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
cursorPos = GetMatchCallOptionCursorPos();
UpdateCursorGfxPos(state, cursorPos);
return LT_FINISH;
@@ -570,7 +569,7 @@ u32 MoveMatchCallOptionsCursor(s32 taskState)
u32 CancelMatchCallSelection(s32 taskState)
{
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
switch (taskState)
{
case 0:
@@ -589,7 +588,7 @@ u32 CancelMatchCallSelection(s32 taskState)
u32 DoMatchCallMessage(s32 taskState)
{
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
switch (taskState)
{
case 0:
@@ -621,7 +620,7 @@ u32 DoMatchCallMessage(s32 taskState)
u32 DoTrainerCloseByMessage(s32 taskState)
{
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
switch (taskState)
{
case 0:
@@ -647,7 +646,7 @@ u32 DoTrainerCloseByMessage(s32 taskState)
u32 sub_81CB888(s32 taskState)
{
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
u32 result = LT_INC_AND_PAUSE;
switch (taskState)
@@ -711,7 +710,7 @@ u32 sub_81CB888(s32 taskState)
u32 ShowCheckPage(s32 taskState)
{
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
switch (taskState)
{
case 0:
@@ -720,7 +719,7 @@ u32 ShowCheckPage(s32 taskState)
UpdateWindowsToShowCheckPage(state);
return LT_INC_AND_PAUSE;
case 1:
- if (sub_81C8820() || IsDma3ManagerBusyWithBgCopy1(state))
+ if (IsMatchCallListTaskActive() || IsDma3ManagerBusyWithBgCopy1(state))
return LT_PAUSE;
PrintHelpBarText(HELPBAR_MC_CHECK_PAGE);
@@ -730,7 +729,7 @@ u32 ShowCheckPage(s32 taskState)
LoadCheckPageTrainerPic(state);
return LT_INC_AND_PAUSE;
case 3:
- if (sub_81C8820() || WaitForTrainerPic(state) || WaitForHelpBar())
+ if (IsMatchCallListTaskActive() || WaitForTrainerPic(state) || WaitForHelpBar())
return LT_PAUSE;
break;
}
@@ -742,7 +741,7 @@ u32 ShowCheckPageDown(s32 taskState)
{
int topId;
int delta;
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
switch (taskState)
{
case 0:
@@ -769,7 +768,7 @@ u32 ShowCheckPageDown(s32 taskState)
LoadCheckPageTrainerPic(state);
return LT_INC_AND_PAUSE;
case 4:
- if (sub_81C8820() || WaitForTrainerPic(state))
+ if (IsMatchCallListTaskActive() || WaitForTrainerPic(state))
return LT_PAUSE;
break;
}
@@ -779,7 +778,7 @@ u32 ShowCheckPageDown(s32 taskState)
u32 ExitCheckPage(s32 taskState)
{
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
switch (taskState)
{
case 0:
@@ -788,7 +787,7 @@ u32 ExitCheckPage(s32 taskState)
sub_81C87F0();
return LT_INC_AND_PAUSE;
case 1:
- if (sub_81C8820() || WaitForTrainerPic(state))
+ if (IsMatchCallListTaskActive() || WaitForTrainerPic(state))
return LT_PAUSE;
PrintHelpBarText(HELPBAR_MC_TRAINER_LIST);
@@ -807,7 +806,7 @@ u32 ShowCheckPageUp(s32 taskState)
{
int topId;
int delta;
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
switch (taskState)
{
case 0:
@@ -834,7 +833,7 @@ u32 ShowCheckPageUp(s32 taskState)
LoadCheckPageTrainerPic(state);
return LT_INC_AND_PAUSE;
case 4:
- if (sub_81C8820() || WaitForTrainerPic(state))
+ if (IsMatchCallListTaskActive() || WaitForTrainerPic(state))
return LT_PAUSE;
break;
}
@@ -850,35 +849,35 @@ u32 ExitMatchCall(s32 taskState)
PlaySE(SE_SELECT);
sub_81CBC38(0);
PokenavFadeScreen(0);
- sub_81C78A0();
+ SlideMenuHeaderDown();
return LT_INC_AND_PAUSE;
case 1:
if (IsPaletteFadeActive() || MainMenuLoopedTaskIsBusy())
return LT_PAUSE;
- sub_81C7FDC();
+ SetLeftHeaderSpritesInvisibility();
break;
}
return LT_FINISH;
}
-static void sub_81CBBB8(void)
+static void InitMatchCallPokenavListMenuTemplate(void)
{
struct PokenavListTemplate template;
template.list.matchCallEntries = sub_81CAE94();
- template.unk4 = GetNumberRegistered();
+ template.count = GetNumberRegistered();
template.unk8 = 4;
template.unk6 = 0;
- template.unk9 = 13;
- template.unkA = 16;
- template.unkB = 1;
- template.unkC = 8;
- template.unkD = 3;
- template.unkE = 7;
+ template.item_X = 13;
+ template.windowWidth = 16;
+ template.listTop = 1;
+ template.maxShowed = 8;
+ template.fillValue = 3;
+ template.fontId = 7;
template.listFunc.unk10_2 = BufferMatchCallNameAndDesc;
template.unk14 = TryDrawRematchPokeballIcon;
- sub_81C81D4(&gUnknown_0862278C[2], &template, 2);
+ sub_81C81D4(&sMatchCallBgTemplates[2], &template, 2);
CreateTask(sub_81CBC64, 7);
}
@@ -903,7 +902,7 @@ static void sub_81CBC64(u8 taskId)
taskData[0] += 4;
taskData[0] &= 0x7F;
taskData[1] = gSineTable[taskData[0]] >> 4;
- sub_81C79BC(gUnknown_08622720, gUnknown_08622720 + 0x10, 0x10, 0x10, taskData[1], gPlttBufferUnfaded + 0x50);
+ PokenavCopyPalette(gUnknown_08622720, gUnknown_08622720 + 0x10, 0x10, 0x10, taskData[1], gPlttBufferUnfaded + 0x50);
if (!gPaletteFade.active)
CpuCopy32(gPlttBufferUnfaded + 0x50, gPlttBufferFaded + 0x50, 0x20);
}
@@ -1001,7 +1000,7 @@ static void PrintMatchCallLocation(struct Pokenav4Struct *state, int arg1)
{
u8 mapName[32];
int x;
- int index = GetSelectedMatchCall() + arg1;
+ int index = GetSelectedPokenavListIndex() + arg1;
int mapSec = GetMatchCallMapSec(index);
if (mapSec != MAPSEC_NONE)
GetMapName(mapName, mapSec, 0);
@@ -1118,7 +1117,7 @@ static bool32 WaitForTrainerIsCloseByText(struct Pokenav4Struct *state)
static void PrintMatchCallMessage(struct Pokenav4Struct *state)
{
- int index = GetSelectedMatchCall();
+ int index = GetSelectedPokenavListIndex();
const u8 *str = GetMatchCallMessageText(index, &state->unkF);
u8 speed = GetPlayerTextSpeedDelay();
AddTextPrinterParameterized(state->msgBoxWindowId, 1, str, 32, 1, speed, NULL);
@@ -1126,7 +1125,7 @@ static void PrintMatchCallMessage(struct Pokenav4Struct *state)
static bool32 WaitForMatchCallMessageText(struct Pokenav4Struct *state)
{
- if (gMain.heldKeys & A_BUTTON)
+ if (JOY_HELD(A_BUTTON))
gTextFlags.canABSpeedUpPrint = 1;
else
gTextFlags.canABSpeedUpPrint = 0;
@@ -1152,7 +1151,7 @@ static void sub_81CC214(void)
int i;
u8 paletteNum;
struct SpriteSheet spriteSheet;
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
for (i = 0; i < ARRAY_COUNT(gUnknown_08622810); i++)
LoadCompressedSpriteSheet(&gUnknown_08622810[i]);
@@ -1169,9 +1168,9 @@ static void sub_81CC214(void)
state->trainerPicSprite->invisible = TRUE;
}
-static void sub_81CC2B4(void)
+static void RemoveMatchCallSprites(void)
{
- struct Pokenav4Struct *state = GetSubstructPtr(6);
+ struct Pokenav4Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_OPEN);
if (state->optionsCursorSprite)
DestroySprite(state->optionsCursorSprite);
if (state->trainerPicSprite)
@@ -1222,7 +1221,7 @@ static struct Sprite *CreateTrainerPicSprite(void)
static void LoadCheckPageTrainerPic(struct Pokenav4Struct *state)
{
u16 cursor;
- int trainerPic = GetMatchCallTrainerPic(GetSelectedMatchCall());
+ int trainerPic = GetMatchCallTrainerPic(GetSelectedPokenavListIndex());
if (trainerPic >= 0)
{
DecompressPicFromTable(&gTrainerFrontPicTable[trainerPic], state->unk1828, SPECIES_NONE);
diff --git a/src/pokenav_match_call_data.c b/src/pokenav_match_call_data.c
index 91dbe4005..6610dcb80 100644
--- a/src/pokenav_match_call_data.c
+++ b/src/pokenav_match_call_data.c
@@ -1100,16 +1100,9 @@ const u8 *MatchCall_GetOverrideFlavorText(u32 idx, u32 offset)
{
if (sCheckPageOverrides[i].idx == idx)
{
- while (1)
- {
- if (i + 1 >= ARRAY_COUNT(sCheckPageOverrides))
- break;
- if (sCheckPageOverrides[i + 1].idx != idx)
- break;
- if (!FlagGet(sCheckPageOverrides[i + 1].flag))
- break;
- i++;
- }
+ for (; i + 1 < ARRAY_COUNT(sCheckPageOverrides) &&
+ sCheckPageOverrides[i + 1].idx == idx &&
+ FlagGet(sCheckPageOverrides[i + 1].flag); i++);
return sCheckPageOverrides[i].flavorTexts[offset];
}
}
diff --git a/src/pokenav_match_call_ui.c b/src/pokenav_match_call_ui.c
index 01740fcce..2d89f9c39 100644
--- a/src/pokenav_match_call_ui.c
+++ b/src/pokenav_match_call_ui.c
@@ -9,7 +9,7 @@
// TODO: This UI isnt just for match call, seems to be the general pokenav list UI
-struct UnknownSubSubStruct_0203CF40 {
+struct PokenavListMenuWindow {
u8 bg;
u8 unk1;
u8 unk2;
@@ -38,14 +38,14 @@ struct MatchCallWindowState {
struct PokenavSub17Substruct
{
- struct UnknownSubSubStruct_0203CF40 unk0;
+ struct PokenavListMenuWindow listWindow;
u32 unk10;
u32 unk14;
u32 unk18;
void * unk1C;
s32 unk20;
s32 unk24;
- u32 unk28;
+ u32 loopedTaskId;
s32 unk2C;
u32 unk30;
void (*unk34)(struct PokenavMatchCallEntries *, u8*);
@@ -59,34 +59,34 @@ struct PokenavSub17Substruct
// Generally at index 0x11 (17)
struct PokenavSub17
{
- struct PokenavSub17Substruct unk0;
+ struct PokenavSub17Substruct list;
u8 tilemapBuffer[0x800];
struct MatchCallWindowState unk888;
s32 unk89C;
- u32 unk8A0;
+ u32 loopedTaskId;
};
extern void sub_81DB620(u32 windowId, u32 a1, u32 a2, u32 a3, u32 a4);
-void sub_81C82E4(struct PokenavSub17 *a0);
-bool32 sub_81C91AC(struct PokenavSub17Substruct *a0, const struct BgTemplate *a1, struct PokenavListTemplate *a2, s32 a3);
-void sub_81C9160(struct MatchCallWindowState *a0, struct PokenavListTemplate *a1);
+void sub_81C82E4(struct PokenavSub17 *matchCall);
+bool32 CopyPokenavListMenuTemplate(struct PokenavSub17Substruct *a0, const struct BgTemplate *a1, struct PokenavListTemplate *a2, s32 a3);
+void InitMatchCallWindowState(struct MatchCallWindowState *a0, struct PokenavListTemplate *a1);
void SpriteCB_MatchCallUpArrow(struct Sprite *sprite);
void SpriteCB_MatchCallDownArrow(struct Sprite *sprite);
void SpriteCB_MatchCallRightArrow(struct Sprite *sprite);
void ToggleMatchCallArrows(struct PokenavSub17Substruct *a0, u32 a1);
-void sub_81C8FE0(struct PokenavSub17Substruct *a0);
-void sub_81C8EF8(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *a1);
+void DestroyMatchCallListArrows(struct PokenavSub17Substruct *a0);
+void CreateMatchCallArrowSprites(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *a1);
void sub_81C8ED0(void);
static void PrintMatchCallFlavorText(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *a1, u32 a2);
void PrintMatchCallFieldNames(struct PokenavSub17Substruct *a0, u32 a1);
void sub_81C8D4C(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *a1);
void sub_81C8CB4(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *a1);
-void sub_81C8B70(struct UnknownSubSubStruct_0203CF40 *a0, s32 a1, s32 a2);
+void sub_81C8B70(struct PokenavListMenuWindow *a0, s32 a1, s32 a2);
void sub_81C8568(s32 a0, struct PokenavSub17Substruct *a1);
void sub_81C83AC(void * a0, u32 a1, u32 a2, u32 a3, u32 a4, struct PokenavSub17Substruct *a5);
void sub_81C837C(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *a1);
-void sub_81C835C(struct UnknownSubSubStruct_0203CF40 *a0);
+void sub_81C835C(struct PokenavListMenuWindow *a0);
u32 LoopedTask_sub_81C8254(s32 state);
bool32 sub_81C83E0(void);
u32 LoopedTask_sub_81C83F0(s32 state);
@@ -102,12 +102,12 @@ EWRAM_DATA u32 gUnknown_0203CF44 = 0;
bool32 sub_81C81D4(const struct BgTemplate *arg0, struct PokenavListTemplate *arg1, s32 arg2)
{
- struct PokenavSub17 *structPtr = AllocSubstruct(17, sizeof(struct PokenavSub17));
+ struct PokenavSub17 *structPtr = AllocSubstruct(POKENAV_SUBSTRUCT_MATCH_CALL_LIST, sizeof(struct PokenavSub17));
if (structPtr == NULL)
return FALSE;
- sub_81C9160(&structPtr->unk888, arg1);
- if (!sub_81C91AC(&structPtr->unk0, arg0, arg1, arg2))
+ InitMatchCallWindowState(&structPtr->unk888, arg1);
+ if (!CopyPokenavListMenuTemplate(&structPtr->list, arg0, arg1, arg2))
return FALSE;
CreateLoopedTask(LoopedTask_sub_81C8254, 6);
@@ -123,10 +123,10 @@ void sub_81C8234(void)
{
struct PokenavSub17 *structPtr;
- structPtr = GetSubstructPtr(17);
- sub_81C8FE0(&structPtr->unk0);
- RemoveWindow(structPtr->unk0.unk0.windowId);
- FreePokenavSubstruct(17);
+ structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
+ DestroyMatchCallListArrows(&structPtr->list);
+ RemoveWindow(structPtr->list.listWindow.windowId);
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
}
u32 LoopedTask_sub_81C8254(s32 state)
@@ -134,9 +134,9 @@ u32 LoopedTask_sub_81C8254(s32 state)
struct PokenavSub17 *structPtr;
if (IsDma3ManagerBusyWithBgCopy())
- return 2;
+ return LT_PAUSE;
- structPtr = GetSubstructPtr(17);
+ structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
switch (state)
{
@@ -144,10 +144,10 @@ u32 LoopedTask_sub_81C8254(s32 state)
sub_81C82E4(structPtr);
return LT_INC_AND_PAUSE;
case 1:
- sub_81C835C(&structPtr->unk0.unk0);
+ sub_81C835C(&structPtr->list.listWindow);
return LT_INC_AND_PAUSE;
case 2:
- sub_81C837C(&structPtr->unk888, &structPtr->unk0);
+ sub_81C837C(&structPtr->unk888, &structPtr->list);
return LT_INC_AND_PAUSE;
case 3:
if (sub_81C83E0())
@@ -160,53 +160,53 @@ u32 LoopedTask_sub_81C8254(s32 state)
return LT_INC_AND_CONTINUE;
}
case 4:
- sub_81C8EF8(&structPtr->unk888, &structPtr->unk0);
+ CreateMatchCallArrowSprites(&structPtr->unk888, &structPtr->list);
return LT_FINISH;
default:
return LT_FINISH;
}
}
-void sub_81C82E4(struct PokenavSub17 *a0)
+void sub_81C82E4(struct PokenavSub17 *matchCall)
{
- u16 tileNum = (a0->unk0.unk0.unk1 << 12) | a0->unk0.unk0.unk6;
- sub_8199DF0(a0->unk0.unk0.bg, PIXEL_FILL(1), a0->unk0.unk0.unk6, 1);
- sub_8199DF0(a0->unk0.unk0.bg, PIXEL_FILL(4), a0->unk0.unk0.unk6 + 1, 1);
- SetBgTilemapBuffer(a0->unk0.unk0.bg, a0->tilemapBuffer);
- FillBgTilemapBufferRect_Palette0(a0->unk0.unk0.bg, tileNum, 0, 0, 32, 32);
- ChangeBgY(a0->unk0.unk0.bg, 0, 0);
- ChangeBgX(a0->unk0.unk0.bg, 0, 0);
- ChangeBgY(a0->unk0.unk0.bg, a0->unk0.unk0.unk3 << 11, 2);
- CopyBgTilemapBufferToVram(a0->unk0.unk0.bg);
+ u16 tileNum = (matchCall->list.listWindow.unk1 << 12) | matchCall->list.listWindow.unk6;
+ sub_8199DF0(matchCall->list.listWindow.bg, PIXEL_FILL(1), matchCall->list.listWindow.unk6, 1);
+ sub_8199DF0(matchCall->list.listWindow.bg, PIXEL_FILL(4), matchCall->list.listWindow.unk6 + 1, 1);
+ SetBgTilemapBuffer(matchCall->list.listWindow.bg, matchCall->tilemapBuffer);
+ FillBgTilemapBufferRect_Palette0(matchCall->list.listWindow.bg, tileNum, 0, 0, 32, 32);
+ ChangeBgY(matchCall->list.listWindow.bg, 0, 0);
+ ChangeBgX(matchCall->list.listWindow.bg, 0, 0);
+ ChangeBgY(matchCall->list.listWindow.bg, matchCall->list.listWindow.unk3 << 11, 2);
+ CopyBgTilemapBufferToVram(matchCall->list.listWindow.bg);
}
-void sub_81C835C(struct UnknownSubSubStruct_0203CF40 *a0)
+void sub_81C835C(struct PokenavListMenuWindow *listWindow)
{
- FillWindowPixelBuffer(a0->windowId, PIXEL_FILL(1));
- PutWindowTilemap(a0->windowId);
- CopyWindowToVram(a0->windowId, 1);
+ FillWindowPixelBuffer(listWindow->windowId, PIXEL_FILL(1));
+ PutWindowTilemap(listWindow->windowId);
+ CopyWindowToVram(listWindow->windowId, 1);
}
-void sub_81C837C(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *a1)
+void sub_81C837C(struct MatchCallWindowState *state, struct PokenavSub17Substruct *a1)
{
- s32 arg2 = a0->listLength - a0->windowTopIndex;
- if (arg2 > a0->visibleEntries)
- arg2 = a0->visibleEntries;
+ s32 arg2 = state->listLength - state->windowTopIndex;
+ if (arg2 > state->visibleEntries)
+ arg2 = state->visibleEntries;
- sub_81C83AC(a0->unk10, a0->windowTopIndex, arg2, a0->unkC, 0, a1);
+ sub_81C83AC(state->unk10, state->windowTopIndex, arg2, state->unkC, 0, a1);
}
-void sub_81C83AC(void * a0, u32 a1, u32 a2, u32 a3, u32 a4, struct PokenavSub17Substruct *a5)
+void sub_81C83AC(void * a0, u32 a1, u32 a2, u32 a3, u32 a4, struct PokenavSub17Substruct *list)
{
if (a2 == 0)
return;
- a5->unk1C = a0 + a1 * a3;
- a5->unk18 = a3;
- a5->unk0.unkC = 0;
- a5->unk0.unkE = a2;
- a5->unk14 = a1;
- a5->unk10 = a4;
+ list->unk1C = a0 + a1 * a3;
+ list->unk18 = a3;
+ list->listWindow.unkC = 0;
+ list->listWindow.unkE = a2;
+ list->unk14 = a1;
+ list->unk10 = a4;
CreateLoopedTask(LoopedTask_sub_81C83F0, 5);
}
@@ -218,23 +218,23 @@ bool32 sub_81C83E0(void)
u32 LoopedTask_sub_81C83F0(s32 state)
{
u32 v1;
- struct PokenavSub17Substruct *structPtr = GetSubstructPtr(17);
+ struct PokenavSub17Substruct *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
switch (state)
{
case 0:
- v1 = (structPtr->unk0.unkA + structPtr->unk0.unkC + structPtr->unk10) & 0xF;
+ v1 = (structPtr->listWindow.unkA + structPtr->listWindow.unkC + structPtr->unk10) & 0xF;
structPtr->unk34(structPtr->unk1C, structPtr->unkTextBuffer);
if (structPtr->unk38 != NULL)
- structPtr->unk38(structPtr->unk0.windowId, structPtr->unk14, v1);
+ structPtr->unk38(structPtr->listWindow.windowId, structPtr->unk14, v1);
- AddTextPrinterParameterized(structPtr->unk0.windowId, structPtr->unk0.fontId, structPtr->unkTextBuffer, 8, (v1 << 4) + 1, 255, NULL);
- if (++structPtr->unk0.unkC >= structPtr->unk0.unkE)
+ AddTextPrinterParameterized(structPtr->listWindow.windowId, structPtr->listWindow.fontId, structPtr->unkTextBuffer, 8, (v1 << 4) + 1, 255, NULL);
+ if (++structPtr->listWindow.unkC >= structPtr->listWindow.unkE)
{
if (structPtr->unk38 != NULL)
- CopyWindowToVram(structPtr->unk0.windowId, 3);
+ CopyWindowToVram(structPtr->listWindow.windowId, 3);
else
- CopyWindowToVram(structPtr->unk0.windowId, 2);
+ CopyWindowToVram(structPtr->listWindow.windowId, 2);
return LT_INC_AND_PAUSE;
}
else
@@ -253,14 +253,14 @@ u32 LoopedTask_sub_81C83F0(s32 state)
bool32 ShouldShowUpArrow(void)
{
- struct PokenavSub17 *structPtr = GetSubstructPtr(17);
+ struct PokenavSub17 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
return (structPtr->unk888.windowTopIndex != 0);
}
bool32 ShouldShowDownArrow(void)
{
- struct PokenavSub17 *structPtr = GetSubstructPtr(17);
+ struct PokenavSub17 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
struct MatchCallWindowState *subPtr = &structPtr->unk888;
return (subPtr->windowTopIndex + subPtr->visibleEntries < subPtr->listLength);
@@ -268,7 +268,7 @@ bool32 ShouldShowDownArrow(void)
void MatchCall_MoveWindow(s32 a0, bool32 a1)
{
- struct PokenavSub17 *structPtr = GetSubstructPtr(17);
+ struct PokenavSub17 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
struct MatchCallWindowState *subPtr = &structPtr->unk888;
if (a0 < 0)
@@ -276,7 +276,7 @@ void MatchCall_MoveWindow(s32 a0, bool32 a1)
if (subPtr->windowTopIndex + a0 < 0)
a0 = -1 * subPtr->windowTopIndex;
if (a1)
- sub_81C83AC(subPtr->unk10, subPtr->windowTopIndex + a0, a0 * -1, subPtr->unkC, a0, &structPtr->unk0);
+ sub_81C83AC(subPtr->unk10, subPtr->windowTopIndex + a0, a0 * -1, subPtr->unkC, a0, &structPtr->list);
}
else if (a1)
{
@@ -284,31 +284,31 @@ void MatchCall_MoveWindow(s32 a0, bool32 a1)
if (temp + a0 >= subPtr->listLength)
a0 = subPtr->listLength - temp;
- sub_81C83AC(subPtr->unk10, gUnknown_0203CF44, a0, subPtr->unkC, subPtr->visibleEntries, &structPtr->unk0);
+ sub_81C83AC(subPtr->unk10, gUnknown_0203CF44, a0, subPtr->unkC, subPtr->visibleEntries, &structPtr->list);
}
- sub_81C8568(a0, &structPtr->unk0);
+ sub_81C8568(a0, &structPtr->list);
subPtr->windowTopIndex += a0;
}
-void sub_81C8568(s32 a0, struct PokenavSub17Substruct *a1)
+void sub_81C8568(s32 a0, struct PokenavSub17Substruct *list)
{
- a1->unk20 = GetBgY(a1->unk0.bg);
- a1->unk24 = a1->unk20 + (a0 << 12);
+ list->unk20 = GetBgY(list->listWindow.bg);
+ list->unk24 = list->unk20 + (a0 << 12);
if (a0 > 0)
- a1->unk30 = 1;
+ list->unk30 = 1;
else
- a1->unk30 = 2;
- a1->unk2C = a0;
- a1->unk28 = CreateLoopedTask(LoopedTask_sub_81C85A0, 6);
+ list->unk30 = 2;
+ list->unk2C = a0;
+ list->loopedTaskId = CreateLoopedTask(LoopedTask_sub_81C85A0, 6);
}
u32 LoopedTask_sub_81C85A0(s32 state)
{
s32 y, v1;
bool32 flag;
- struct PokenavSub17 *structPtr = GetSubstructPtr(17);
- struct PokenavSub17Substruct *subPtr = &structPtr->unk0;
+ struct PokenavSub17 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
+ struct PokenavSub17Substruct *subPtr = &structPtr->list;
switch (state)
{
@@ -318,8 +318,8 @@ u32 LoopedTask_sub_81C85A0(s32 state)
return LT_PAUSE;
case 1:
flag = FALSE;
- y = GetBgY(subPtr->unk0.bg);
- v1 = ChangeBgY(subPtr->unk0.bg, 0x1000, subPtr->unk30);
+ y = GetBgY(subPtr->listWindow.bg);
+ v1 = ChangeBgY(subPtr->listWindow.bg, 0x1000, subPtr->unk30);
if (subPtr->unk30 == 2)
{
if ((y > subPtr->unk24 || y <= subPtr->unk20) && v1 <= subPtr->unk24)
@@ -333,8 +333,8 @@ u32 LoopedTask_sub_81C85A0(s32 state)
if (flag)
{
- subPtr->unk0.unkA = (subPtr->unk0.unkA + subPtr->unk2C) & 0xF;
- ChangeBgY(subPtr->unk0.bg, subPtr->unk24, 0);
+ subPtr->listWindow.unkA = (subPtr->listWindow.unkA + subPtr->unk2C) & 0xF;
+ ChangeBgY(subPtr->listWindow.bg, subPtr->unk24, 0);
return LT_FINISH;
}
return LT_PAUSE;
@@ -342,15 +342,15 @@ u32 LoopedTask_sub_81C85A0(s32 state)
return LT_FINISH;
}
-bool32 sub_81C8630(void)
+bool32 IsMonListLoopedTaskActive(void)
{
- struct PokenavSub17 *structPtr = GetSubstructPtr(17);
- return IsLoopedTaskActive(structPtr->unk0.unk28);
+ struct PokenavSub17 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
+ return IsLoopedTaskActive(structPtr->list.loopedTaskId);
}
struct MatchCallWindowState *GetMatchCallWindowStruct(void)
{
- struct PokenavSub17 *structPtr = GetSubstructPtr(17);
+ struct PokenavSub17 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
return &structPtr->unk888;
}
@@ -448,7 +448,7 @@ int MatchCall_PageDown(void)
}
}
-u32 GetSelectedMatchCall(void)
+u32 GetSelectedPokenavListIndex(void)
{
struct MatchCallWindowState *structPtr = GetMatchCallWindowStruct();
@@ -464,53 +464,53 @@ u32 GetMatchCallListTopIndex(void)
void sub_81C877C(void)
{
- struct PokenavSub17 *structPtr = GetSubstructPtr(17);
+ struct PokenavSub17 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
structPtr->unk89C = 0;
- structPtr->unk8A0 = CreateLoopedTask(LoopedTask_sub_81C8870, 6);
+ structPtr->loopedTaskId = CreateLoopedTask(LoopedTask_sub_81C8870, 6);
}
void PrintCheckPageInfo(s16 a0)
{
- struct PokenavSub17 *structPtr = GetSubstructPtr(17);
+ struct PokenavSub17 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
structPtr->unk888.windowTopIndex += a0;
structPtr->unk89C = 0;
- structPtr->unk8A0 = CreateLoopedTask(LoopedTask_PrintCheckPageInfo, 6);
+ structPtr->loopedTaskId = CreateLoopedTask(LoopedTask_PrintCheckPageInfo, 6);
}
void sub_81C87F0(void)
{
- struct PokenavSub17 *structPtr = GetSubstructPtr(17);
+ struct PokenavSub17 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
structPtr->unk89C = 0;
- structPtr->unk8A0 = CreateLoopedTask(LoopedTask_sub_81C8A28, 6);
+ structPtr->loopedTaskId = CreateLoopedTask(LoopedTask_sub_81C8A28, 6);
}
-bool32 sub_81C8820(void)
+bool32 IsMatchCallListTaskActive(void)
{
- struct PokenavSub17 *structPtr = GetSubstructPtr(17);
- return IsLoopedTaskActive(structPtr->unk8A0);
+ struct PokenavSub17 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
+ return IsLoopedTaskActive(structPtr->loopedTaskId);
}
void sub_81C8838(void)
{
- struct PokenavSub17 *structPtr = GetSubstructPtr(17);
+ struct PokenavSub17 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
struct MatchCallWindowState *subPtr = &structPtr->unk888;
- structPtr->unk0.unk38(structPtr->unk0.unk0.windowId, subPtr->windowTopIndex + subPtr->selectedIndexOffset, (structPtr->unk0.unk0.unkA + subPtr->selectedIndexOffset) & 0xF);
- CopyWindowToVram(structPtr->unk0.unk0.windowId, 1);
+ structPtr->list.unk38(structPtr->list.listWindow.windowId, subPtr->windowTopIndex + subPtr->selectedIndexOffset, (structPtr->list.listWindow.unkA + subPtr->selectedIndexOffset) & 0xF);
+ CopyWindowToVram(structPtr->list.listWindow.windowId, 1);
}
// TODO:
u32 LoopedTask_sub_81C8870(s32 state)
{
- struct PokenavSub17 *structPtr = GetSubstructPtr(17);
+ struct PokenavSub17 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
switch (state)
{
case 0:
- ToggleMatchCallArrows(&structPtr->unk0, 1);
+ ToggleMatchCallArrows(&structPtr->list, 1);
// fall-through
case 1:
if (structPtr->unk89C != structPtr->unk888.selectedIndexOffset)
- sub_81C8B70(&structPtr->unk0.unk0, structPtr->unk89C, 1);
+ sub_81C8B70(&structPtr->list.listWindow, structPtr->unk89C, 1);
structPtr->unk89C++;
return LT_INC_AND_PAUSE;
@@ -520,7 +520,7 @@ u32 LoopedTask_sub_81C8870(s32 state)
if (structPtr->unk89C != structPtr->unk888.visibleEntries)
return 6;
if (structPtr->unk888.selectedIndexOffset != 0)
- sub_81C8B70(&structPtr->unk0.unk0, structPtr->unk89C, structPtr->unk888.selectedIndexOffset);
+ sub_81C8B70(&structPtr->list.listWindow, structPtr->unk89C, structPtr->unk888.selectedIndexOffset);
return LT_INC_AND_PAUSE;
}
@@ -537,7 +537,7 @@ u32 LoopedTask_sub_81C8870(s32 state)
}
return LT_PAUSE;
case 4:
- if (sub_81C8630())
+ if (IsMonListLoopedTaskActive())
return LT_PAUSE;
structPtr->unk888.selectedIndexOffset = 0;
@@ -548,35 +548,35 @@ u32 LoopedTask_sub_81C8870(s32 state)
u32 LoopedTask_PrintCheckPageInfo(s32 state)
{
- struct PokenavSub17 *structPtr = GetSubstructPtr(17);
+ struct PokenavSub17 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
if (IsDma3ManagerBusyWithBgCopy())
return LT_PAUSE;
switch (state)
{
case 0:
- sub_81C8CB4(&structPtr->unk888, &structPtr->unk0);
+ sub_81C8CB4(&structPtr->unk888, &structPtr->list);
break;
case 1:
- PrintMatchCallFieldNames(&structPtr->unk0, 0);
+ PrintMatchCallFieldNames(&structPtr->list, 0);
break;
case 2:
- PrintMatchCallFlavorText(&structPtr->unk888, &structPtr->unk0, CHECK_PAGE_STRATEGY);
+ PrintMatchCallFlavorText(&structPtr->unk888, &structPtr->list, CHECK_PAGE_STRATEGY);
break;
case 3:
- PrintMatchCallFieldNames(&structPtr->unk0, 1);
+ PrintMatchCallFieldNames(&structPtr->list, 1);
break;
case 4:
- PrintMatchCallFlavorText(&structPtr->unk888, &structPtr->unk0, CHECK_PAGE_POKEMON);
+ PrintMatchCallFlavorText(&structPtr->unk888, &structPtr->list, CHECK_PAGE_POKEMON);
break;
case 5:
- PrintMatchCallFieldNames(&structPtr->unk0, 2);
+ PrintMatchCallFieldNames(&structPtr->list, 2);
break;
case 6:
- PrintMatchCallFlavorText(&structPtr->unk888, &structPtr->unk0, CHECK_PAGE_INTRO_1);
+ PrintMatchCallFlavorText(&structPtr->unk888, &structPtr->list, CHECK_PAGE_INTRO_1);
break;
case 7:
- PrintMatchCallFlavorText(&structPtr->unk888, &structPtr->unk0, CHECK_PAGE_INTRO_2);
+ PrintMatchCallFlavorText(&structPtr->unk888, &structPtr->list, CHECK_PAGE_INTRO_2);
break;
default:
return LT_FINISH;
@@ -594,9 +594,9 @@ u32 LoopedTask_sub_81C8A28(s32 state)
if (IsDma3ManagerBusyWithBgCopy())
return LT_PAUSE;
- structPtr = GetSubstructPtr(17);
+ structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
subPtr888 = &structPtr->unk888;
- subPtr0 = &structPtr->unk0;
+ subPtr0 = &structPtr->list;
switch (state)
{
@@ -607,7 +607,7 @@ u32 LoopedTask_sub_81C8A28(s32 state)
ptr = &structPtr->unk89C;
if (++(*ptr) < structPtr->unk888.visibleEntries)
{
- sub_81C8B70(&subPtr0->unk0, *ptr, 1);
+ sub_81C8B70(&subPtr0->listWindow, *ptr, 1);
return LT_PAUSE;
}
@@ -618,7 +618,7 @@ u32 LoopedTask_sub_81C8A28(s32 state)
{
s32 r4 = subPtr888->windowTopIndex;
r5 = -r4;
- sub_81C8B70(&subPtr0->unk0, r5, r4);
+ sub_81C8B70(&subPtr0->listWindow, r5, r4);
subPtr888->selectedIndexOffset = r4;
*ptr = r5;
return LT_INC_AND_PAUSE;
@@ -630,7 +630,7 @@ u32 LoopedTask_sub_81C8A28(s32 state)
{
s32 r4 = subPtr888->windowTopIndex + subPtr888->visibleEntries - subPtr888->listLength;
r5 = -r4;
- sub_81C8B70(&subPtr0->unk0, r5, r4);
+ sub_81C8B70(&subPtr0->listWindow, r5, r4);
subPtr888->selectedIndexOffset = r4;
*ptr = r5;
return LT_INC_AND_PAUSE;
@@ -641,14 +641,14 @@ u32 LoopedTask_sub_81C8A28(s32 state)
MatchCall_MoveWindow(structPtr->unk89C, FALSE);
return LT_INC_AND_PAUSE;
case 3:
- if (!sub_81C8630())
+ if (!IsMonListLoopedTaskActive())
{
structPtr->unk89C = 0;
return 1;
}
return 2;
case 4:
- sub_81C83AC(subPtr888->unk10, subPtr888->windowTopIndex + structPtr->unk89C, 1, subPtr888->unkC, structPtr->unk89C, &structPtr->unk0);
+ sub_81C83AC(subPtr888->unk10, subPtr888->windowTopIndex + structPtr->unk89C, 1, subPtr888->unkC, structPtr->unk89C, &structPtr->list);
return LT_INC_AND_PAUSE;
case 5:
if (sub_81C83E0())
@@ -664,16 +664,16 @@ u32 LoopedTask_sub_81C8A28(s32 state)
return LT_FINISH;
}
-void sub_81C8B70(struct UnknownSubSubStruct_0203CF40 *a0, s32 a1, s32 a2)
+void sub_81C8B70(struct PokenavListMenuWindow *listWindow, s32 a1, s32 a2)
{
- u8 *v1 = (u8*)GetWindowAttribute(a0->windowId, WINDOW_TILE_DATA);
- u32 v2 = a0->unk4 * 64;
+ u8 *v1 = (u8*)GetWindowAttribute(listWindow->windowId, WINDOW_TILE_DATA);
+ u32 v2 = listWindow->unk4 * 64;
- a1 = (a0->unkA + a1) & 0xF;
+ a1 = (listWindow->unkA + a1) & 0xF;
if (a1 + a2 <= 16)
{
CpuFastFill8(PIXEL_FILL(1), v1 + a1 * v2, a2 * v2);
- CopyWindowToVram(a0->windowId, 2);
+ CopyWindowToVram(listWindow->windowId, 2);
}
else
{
@@ -682,63 +682,63 @@ void sub_81C8B70(struct UnknownSubSubStruct_0203CF40 *a0, s32 a1, s32 a2)
CpuFastFill8(PIXEL_FILL(1), v1 + a1 * v2, v3 * v2);
CpuFastFill8(PIXEL_FILL(1), v1, v4 * v2);
- CopyWindowToVram(a0->windowId, 2);
+ CopyWindowToVram(listWindow->windowId, 2);
}
for (a2--; a2 != -1; a1 = (a1 + 1) & 0xF, a2--)
- ClearRematchPokeballIcon(a0->windowId, a1);
+ ClearRematchPokeballIcon(listWindow->windowId, a1);
- CopyWindowToVram(a0->windowId, 1);
+ CopyWindowToVram(listWindow->windowId, 1);
}
-void sub_81C8C64(struct UnknownSubSubStruct_0203CF40 *a0, u32 a1)
+void sub_81C8C64(struct PokenavListMenuWindow *listWindow, u32 a1)
{
u16 var;
- u16 *v1 = (u16*)GetBgTilemapBuffer(GetWindowAttribute(a0->windowId, WINDOW_BG));
- v1 += ((a0->unkA << 6) + a0->unk2) - 1;
+ u16 *v1 = (u16*)GetBgTilemapBuffer(GetWindowAttribute(listWindow->windowId, WINDOW_BG));
+ v1 += ((listWindow->unkA << 6) + listWindow->unk2) - 1;
if (a1 != 0)
- var = (a0->unk1 << 12) | (a0->unk6 + 1);
+ var = (listWindow->unk1 << 12) | (listWindow->unk6 + 1);
else
- var = (a0->unk1 << 12) | (a0->unk6);
+ var = (listWindow->unk1 << 12) | (listWindow->unk6);
v1[0] = var;
v1[0x20] = var;
}
-void sub_81C8CB4(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *a1)
+void sub_81C8CB4(struct MatchCallWindowState *state, struct PokenavSub17Substruct *list)
{
u8 colors[3] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_RED};
- a1->unk34(a0->unk10 + a0->unkC * a0->windowTopIndex, a1->unkTextBuffer);
- a1->unk38(a1->unk0.windowId, a0->windowTopIndex, a1->unk0.unkA);
- FillWindowPixelRect(a1->unk0.windowId, PIXEL_FILL(4), 0, a1->unk0.unkA * 16, a1->unk0.unk4 * 8, 16);
- AddTextPrinterParameterized3(a1->unk0.windowId, a1->unk0.fontId, 8, (a1->unk0.unkA * 16) + 1, colors, TEXT_SPEED_FF, a1->unkTextBuffer);
- sub_81C8C64(&a1->unk0, 1);
- CopyWindowRectToVram(a1->unk0.windowId, 3, 0, a1->unk0.unkA * 2, a1->unk0.unk4, 2);
+ list->unk34(state->unk10 + state->unkC * state->windowTopIndex, list->unkTextBuffer);
+ list->unk38(list->listWindow.windowId, state->windowTopIndex, list->listWindow.unkA);
+ FillWindowPixelRect(list->listWindow.windowId, PIXEL_FILL(4), 0, list->listWindow.unkA * 16, list->listWindow.unk4 * 8, 16);
+ AddTextPrinterParameterized3(list->listWindow.windowId, list->listWindow.fontId, 8, (list->listWindow.unkA * 16) + 1, colors, TEXT_SPEED_FF, list->unkTextBuffer);
+ sub_81C8C64(&list->listWindow, 1);
+ CopyWindowRectToVram(list->listWindow.windowId, 3, 0, list->listWindow.unkA * 2, list->listWindow.unk4, 2);
}
-void sub_81C8D4C(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *a1)
+void sub_81C8D4C(struct MatchCallWindowState *state, struct PokenavSub17Substruct *list)
{
- a1->unk34(a0->unk10 + a0->unkC * a0->windowTopIndex, a1->unkTextBuffer);
- FillWindowPixelRect(a1->unk0.windowId, PIXEL_FILL(1), 0, a1->unk0.unkA * 16, a1->unk0.unk4 * 8, 16);
- AddTextPrinterParameterized(a1->unk0.windowId, a1->unk0.fontId, a1->unkTextBuffer, 8, a1->unk0.unkA * 16 + 1, TEXT_SPEED_FF, NULL);
- sub_81C8C64(&a1->unk0, 0);
- CopyWindowToVram(a1->unk0.windowId, 3);
+ list->unk34(state->unk10 + state->unkC * state->windowTopIndex, list->unkTextBuffer);
+ FillWindowPixelRect(list->listWindow.windowId, PIXEL_FILL(1), 0, list->listWindow.unkA * 16, list->listWindow.unk4 * 8, 16);
+ AddTextPrinterParameterized(list->listWindow.windowId, list->listWindow.fontId, list->unkTextBuffer, 8, list->listWindow.unkA * 16 + 1, TEXT_SPEED_FF, NULL);
+ sub_81C8C64(&list->listWindow, 0);
+ CopyWindowToVram(list->listWindow.windowId, 3);
}
-void PrintMatchCallFieldNames(struct PokenavSub17Substruct *a0, u32 fieldId)
+void PrintMatchCallFieldNames(struct PokenavSub17Substruct *list, u32 fieldId)
{
const u8 *fieldNames[] = {gText_PokenavMatchCall_Strategy, gText_PokenavMatchCall_TrainerPokemon, gText_PokenavMatchCall_SelfIntroduction};
u8 colors[3] = {TEXT_COLOR_WHITE, TEXT_COLOR_RED, TEXT_COLOR_LIGHT_RED};
- u32 top = (a0->unk0.unkA + 1 + (fieldId * 2)) & 0xF;
+ u32 top = (list->listWindow.unkA + 1 + (fieldId * 2)) & 0xF;
- FillWindowPixelRect(a0->unk0.windowId, PIXEL_FILL(1), 0, top << 4, a0->unk0.unk4, 16);
- AddTextPrinterParameterized3(a0->unk0.windowId, 7, 2, (top << 4) + 1, colors, -1, fieldNames[fieldId]);
- CopyWindowRectToVram(a0->unk0.windowId, 2, 0, top << 1, a0->unk0.unk4, 2);
+ FillWindowPixelRect(list->listWindow.windowId, PIXEL_FILL(1), 0, top << 4, list->listWindow.unk4, 16);
+ AddTextPrinterParameterized3(list->listWindow.windowId, 7, 2, (top << 4) + 1, colors, -1, fieldNames[fieldId]);
+ CopyWindowRectToVram(list->listWindow.windowId, 2, 0, top << 1, list->listWindow.unk4, 2);
}
-static void PrintMatchCallFlavorText(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *a1, u32 checkPageEntry)
+static void PrintMatchCallFlavorText(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *list, u32 checkPageEntry)
{
// lines 1, 3, and 5 are the field names printed by PrintMatchCallFieldNames
static const u8 lineOffsets[CHECK_PAGE_ENTRY_COUNT] =
@@ -749,14 +749,14 @@ static void PrintMatchCallFlavorText(struct MatchCallWindowState *a0, struct Pok
[CHECK_PAGE_INTRO_2] = 7
};
- u32 r6 = (a1->unk0.unkA + lineOffsets[checkPageEntry]) & 0xF;
+ u32 r6 = (list->listWindow.unkA + lineOffsets[checkPageEntry]) & 0xF;
const u8 *str = GetMatchCallFlavorText(a0->windowTopIndex, checkPageEntry);
if (str != NULL)
{
- sub_81DB620(a1->unk0.windowId, 1, r6 * 2, a1->unk0.unk4 - 1, 2);
- AddTextPrinterParameterized(a1->unk0.windowId, 7, str, 2, (r6 << 4) + 1, TEXT_SPEED_FF, NULL);
- CopyWindowRectToVram(a1->unk0.windowId, 2, 0, r6 * 2, a1->unk0.unk4, 2);
+ sub_81DB620(list->listWindow.windowId, 1, r6 * 2, list->listWindow.unk4 - 1, 2);
+ AddTextPrinterParameterized(list->listWindow.windowId, 7, str, 2, (r6 << 4) + 1, TEXT_SPEED_FF, NULL);
+ CopyWindowRectToVram(list->listWindow.windowId, 2, 0, r6 * 2, list->listWindow.unk4, 2);
}
}
@@ -839,57 +839,57 @@ void sub_81C8ED0(void)
Pokenav_AllocAndLoadPalettes(sMatchcallArrowPalettes);
}
-void sub_81C8EF8(struct MatchCallWindowState *a0, struct PokenavSub17Substruct *a1)
+void CreateMatchCallArrowSprites(struct MatchCallWindowState *windowState, struct PokenavSub17Substruct *list)
{
u32 spriteId;
s16 x;
- spriteId = CreateSprite(&sMatchCallRightArrowSprite, a1->unk0.unk2 * 8 + 3, (a1->unk0.unk3 + 1) * 8, 7);
- a1->rightArrow = &gSprites[spriteId];
+ spriteId = CreateSprite(&sMatchCallRightArrowSprite, list->listWindow.unk2 * 8 + 3, (list->listWindow.unk3 + 1) * 8, 7);
+ list->rightArrow = &gSprites[spriteId];
- x = a1->unk0.unk2 * 8 + (a1->unk0.unk4 - 1) * 4;
- spriteId = CreateSprite(&sMatchCallUpDownArrowSprite, x, a1->unk0.unk3 * 8 + a0->visibleEntries * 16, 7);
- a1->downArrow = &gSprites[spriteId];
- a1->downArrow->oam.tileNum += 2;
- a1->downArrow->callback = SpriteCB_MatchCallDownArrow;
+ x = list->listWindow.unk2 * 8 + (list->listWindow.unk4 - 1) * 4;
+ spriteId = CreateSprite(&sMatchCallUpDownArrowSprite, x, list->listWindow.unk3 * 8 + windowState->visibleEntries * 16, 7);
+ list->downArrow = &gSprites[spriteId];
+ list->downArrow->oam.tileNum += 2;
+ list->downArrow->callback = SpriteCB_MatchCallDownArrow;
- spriteId = CreateSprite(&sMatchCallUpDownArrowSprite, x, a1->unk0.unk3 * 8, 7);
- a1->upArrow = &gSprites[spriteId];
- a1->upArrow->oam.tileNum += 4;
- a1->upArrow->callback = SpriteCB_MatchCallUpArrow;
+ spriteId = CreateSprite(&sMatchCallUpDownArrowSprite, x, list->listWindow.unk3 * 8, 7);
+ list->upArrow = &gSprites[spriteId];
+ list->upArrow->oam.tileNum += 4;
+ list->upArrow->callback = SpriteCB_MatchCallUpArrow;
}
-void sub_81C8FE0(struct PokenavSub17Substruct *a0)
+void DestroyMatchCallListArrows(struct PokenavSub17Substruct *list)
{
- DestroySprite(a0->rightArrow);
- DestroySprite(a0->upArrow);
- DestroySprite(a0->downArrow);
+ DestroySprite(list->rightArrow);
+ DestroySprite(list->upArrow);
+ DestroySprite(list->downArrow);
FreeSpriteTilesByTag(0xA);
FreeSpritePaletteByTag(0x14);
}
-void ToggleMatchCallArrows(struct PokenavSub17Substruct *a0, bool32 shouldHide)
+void ToggleMatchCallArrows(struct PokenavSub17Substruct *list, bool32 shouldHide)
{
if (shouldHide)
{
- a0->rightArrow->callback = SpriteCallbackDummy;
- a0->upArrow->callback = SpriteCallbackDummy;
- a0->downArrow->callback = SpriteCallbackDummy;
+ list->rightArrow->callback = SpriteCallbackDummy;
+ list->upArrow->callback = SpriteCallbackDummy;
+ list->downArrow->callback = SpriteCallbackDummy;
}
else
{
- a0->rightArrow->callback = SpriteCB_MatchCallRightArrow;
- a0->upArrow->callback = SpriteCB_MatchCallUpArrow;
- a0->downArrow->callback = SpriteCB_MatchCallDownArrow;
+ list->rightArrow->callback = SpriteCB_MatchCallRightArrow;
+ list->upArrow->callback = SpriteCB_MatchCallUpArrow;
+ list->downArrow->callback = SpriteCB_MatchCallDownArrow;
}
- a0->rightArrow->invisible = shouldHide;
- a0->upArrow->invisible = shouldHide;
- a0->downArrow->invisible = shouldHide;
+ list->rightArrow->invisible = shouldHide;
+ list->upArrow->invisible = shouldHide;
+ list->downArrow->invisible = shouldHide;
}
void SpriteCB_MatchCallRightArrow(struct Sprite *sprite)
{
- struct PokenavSub17 *structPtr = GetSubstructPtr(17);
+ struct PokenavSub17 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
sprite->pos2.y = structPtr->unk888.selectedIndexOffset << 4;
}
@@ -931,68 +931,68 @@ void SpriteCB_MatchCallUpArrow(struct Sprite *sprite)
void ToggleMatchCallVerticalArrows(bool32 shouldHide)
{
- struct PokenavSub17 *structPtr = GetSubstructPtr(17);
- structPtr->unk0.upArrow->data[7] = shouldHide;
- structPtr->unk0.downArrow->data[7] = shouldHide;
+ struct PokenavSub17 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MATCH_CALL_LIST);
+ structPtr->list.upArrow->data[7] = shouldHide;
+ structPtr->list.downArrow->data[7] = shouldHide;
}
-void sub_81C9160(struct MatchCallWindowState *a0, struct PokenavListTemplate *a1)
+void InitMatchCallWindowState(struct MatchCallWindowState *dst, struct PokenavListTemplate *template)
{
- a0->unk10 = a1->list.matchCallEntries;
- a0->windowTopIndex = a1->unk6;
- a0->listLength = a1->unk4;
- a0->unkC = a1->unk8;
- a0->visibleEntries = a1->unkC;
- if (a0->visibleEntries >= a0->listLength)
+ dst->unk10 = template->list.matchCallEntries;
+ dst->windowTopIndex = template->unk6;
+ dst->listLength = template->count;
+ dst->unkC = template->unk8;
+ dst->visibleEntries = template->maxShowed;
+ if (dst->visibleEntries >= dst->listLength)
{
- a0->windowTopIndex = 0;
- a0->unk4 = 0;
- a0->selectedIndexOffset = a1->unk6;
+ dst->windowTopIndex = 0;
+ dst->unk4 = 0;
+ dst->selectedIndexOffset = template->unk6;
}
else
{
- a0->unk4 = a0->listLength - a0->visibleEntries;
- if (a0->windowTopIndex + a0->visibleEntries > a0->listLength)
+ dst->unk4 = dst->listLength - dst->visibleEntries;
+ if (dst->windowTopIndex + dst->visibleEntries > dst->listLength)
{
- a0->selectedIndexOffset = a0->windowTopIndex + a0->visibleEntries - a0->listLength;
- a0->windowTopIndex = a1->unk6 - a0->selectedIndexOffset;
+ dst->selectedIndexOffset = dst->windowTopIndex + dst->visibleEntries - dst->listLength;
+ dst->windowTopIndex = template->unk6 - dst->selectedIndexOffset;
}
else
{
- a0->selectedIndexOffset = 0;
+ dst->selectedIndexOffset = 0;
}
}
}
-bool32 sub_81C91AC(struct PokenavSub17Substruct *a0, const struct BgTemplate *a1, struct PokenavListTemplate *a2, s32 a3)
+bool32 CopyPokenavListMenuTemplate(struct PokenavSub17Substruct *dest, const struct BgTemplate *bgTemplate, struct PokenavListTemplate *template, s32 a3)
{
struct WindowTemplate window;
- a0->unk0.bg = a1->bg;
- a0->unk0.unk6 = a3;
- a0->unk34 = a2->listFunc.unk10_2;
- a0->unk38 = a2->unk14;
- a0->unk0.unk1 = a2->unkD;
- a0->unk0.unk2 = a2->unk9;
- a0->unk0.unk3 = a2->unkB;
- a0->unk0.unk4 = a2->unkA;
- a0->unk0.fontId = a2->unkE;
-
- window.bg = a1->bg;
- window.tilemapLeft = a2->unk9;
+ dest->listWindow.bg = bgTemplate->bg;
+ dest->listWindow.unk6 = a3;
+ dest->unk34 = template->listFunc.unk10_2;
+ dest->unk38 = template->unk14;
+ dest->listWindow.unk1 = template->fillValue;
+ dest->listWindow.unk2 = template->item_X;
+ dest->listWindow.unk3 = template->listTop;
+ dest->listWindow.unk4 = template->windowWidth;
+ dest->listWindow.fontId = template->fontId;
+
+ window.bg = bgTemplate->bg;
+ window.tilemapLeft = template->item_X;
window.tilemapTop = 0;
- window.width = a2->unkA;
+ window.width = template->windowWidth;
window.height = 32;
- window.paletteNum = a2->unkD;
+ window.paletteNum = template->fillValue;
window.baseBlock = a3 + 2;
- a0->unk0.windowId = AddWindow(&window);
- if (a0->unk0.windowId == 0xFF)
+ dest->listWindow.windowId = AddWindow(&window);
+ if (dest->listWindow.windowId == 0xFF)
return FALSE;
- a0->unk0.unkA = 0;
- a0->rightArrow = NULL;
- a0->upArrow = NULL;
- a0->downArrow = NULL;
+ dest->listWindow.unkA = 0;
+ dest->rightArrow = NULL;
+ dest->upArrow = NULL;
+ dest->downArrow = NULL;
return 1;
}
diff --git a/src/pokenav_menu_handler_1.c b/src/pokenav_menu_handler_1.c
index d8d8e1509..4792756c1 100644
--- a/src/pokenav_menu_handler_1.c
+++ b/src/pokenav_menu_handler_1.c
@@ -32,53 +32,53 @@ static u32 (*GetMainMenuInputHandler(void))(struct Pokenav1Struct*);
static void SetMenuInputHandler(struct Pokenav1Struct *state);
// Number of entries - 1 for that menu type
-static const u8 sLastCursorPositions[] =
+static const u8 sLastCursorPositions[] =
{
- [POKENAV_MENU_TYPE_DEFAULT] = 2,
- [POKENAV_MENU_TYPE_UNLOCK_MC] = 3,
- [POKENAV_MENU_TYPE_UNLOCK_MC_RIBBONS] = 4,
- [POKENAV_MENU_TYPE_CONDITION] = 2,
+ [POKENAV_MENU_TYPE_DEFAULT] = 2,
+ [POKENAV_MENU_TYPE_UNLOCK_MC] = 3,
+ [POKENAV_MENU_TYPE_UNLOCK_MC_RIBBONS] = 4,
+ [POKENAV_MENU_TYPE_CONDITION] = 2,
[POKENAV_MENU_TYPE_CONDITION_SEARCH] = 5
};
static const u8 sMenuItems[][6] =
{
- [POKENAV_MENU_TYPE_DEFAULT] =
- {
- POKENAV_MENUITEM_MAP,
- POKENAV_MENUITEM_CONDITION,
+ [POKENAV_MENU_TYPE_DEFAULT] =
+ {
+ POKENAV_MENUITEM_MAP,
+ POKENAV_MENUITEM_CONDITION,
[2 ... 5] = POKENAV_MENUITEM_SWITCH_OFF
},
- [POKENAV_MENU_TYPE_UNLOCK_MC] =
- {
- POKENAV_MENUITEM_MAP,
- POKENAV_MENUITEM_CONDITION,
- POKENAV_MENUITEM_MATCH_CALL,
+ [POKENAV_MENU_TYPE_UNLOCK_MC] =
+ {
+ POKENAV_MENUITEM_MAP,
+ POKENAV_MENUITEM_CONDITION,
+ POKENAV_MENUITEM_MATCH_CALL,
[3 ... 5] = POKENAV_MENUITEM_SWITCH_OFF
},
- [POKENAV_MENU_TYPE_UNLOCK_MC_RIBBONS] =
- {
- POKENAV_MENUITEM_MAP,
- POKENAV_MENUITEM_CONDITION,
- POKENAV_MENUITEM_MATCH_CALL,
- POKENAV_MENUITEM_RIBBONS,
+ [POKENAV_MENU_TYPE_UNLOCK_MC_RIBBONS] =
+ {
+ POKENAV_MENUITEM_MAP,
+ POKENAV_MENUITEM_CONDITION,
+ POKENAV_MENUITEM_MATCH_CALL,
+ POKENAV_MENUITEM_RIBBONS,
[4 ... 5] = POKENAV_MENUITEM_SWITCH_OFF
},
- [POKENAV_MENU_TYPE_CONDITION] =
- {
- POKENAV_MENUITEM_CONDITION_PARTY,
- POKENAV_MENUITEM_CONDITION_SEARCH,
- POKENAV_MENUITEM_CONDITION_CANCEL,
+ [POKENAV_MENU_TYPE_CONDITION] =
+ {
+ POKENAV_MENUITEM_CONDITION_PARTY,
+ POKENAV_MENUITEM_CONDITION_SEARCH,
+ POKENAV_MENUITEM_CONDITION_CANCEL,
[3 ... 5] = POKENAV_MENUITEM_SWITCH_OFF
},
- [POKENAV_MENU_TYPE_CONDITION_SEARCH] =
- {
- POKENAV_MENUITEM_CONDITION_SEARCH_COOL,
- POKENAV_MENUITEM_CONDITION_SEARCH_BEAUTY,
- POKENAV_MENUITEM_CONDITION_SEARCH_CUTE,
- POKENAV_MENUITEM_CONDITION_SEARCH_SMART,
- POKENAV_MENUITEM_CONDITION_SEARCH_TOUGH,
- POKENAV_MENUITEM_CONDITION_SEARCH_CANCEL
+ [POKENAV_MENU_TYPE_CONDITION_SEARCH] =
+ {
+ POKENAV_MENUITEM_CONDITION_SEARCH_COOL,
+ POKENAV_MENUITEM_CONDITION_SEARCH_BEAUTY,
+ POKENAV_MENUITEM_CONDITION_SEARCH_CUTE,
+ POKENAV_MENUITEM_CONDITION_SEARCH_SMART,
+ POKENAV_MENUITEM_CONDITION_SEARCH_TOUGH,
+ POKENAV_MENUITEM_CONDITION_SEARCH_CANCEL
},
};
@@ -87,24 +87,24 @@ static u8 GetPokenavMainMenuType(void)
u8 menuType = POKENAV_MENU_TYPE_DEFAULT;
if (FlagGet(FLAG_ADDED_MATCH_CALL_TO_POKENAV))
- {
+ {
menuType = POKENAV_MENU_TYPE_UNLOCK_MC;
if (FlagGet(FLAG_SYS_RIBBON_GET))
menuType = POKENAV_MENU_TYPE_UNLOCK_MC_RIBBONS;
}
-
+
return menuType;
}
bool32 PokenavCallback_Init_MainMenuCursorOnMap(void)
{
- struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
+ struct Pokenav1Struct *state = AllocSubstruct(POKENAV_SUBSTRUCT_MAIN_MENU_HANDLER, sizeof(struct Pokenav1Struct));
if (!state)
return FALSE;
-
+
state->menuType = GetPokenavMainMenuType();
- state->cursorPos = 0;
+ state->cursorPos = POKENAV_MENUITEM_MAP;
state->currMenuItem = POKENAV_MENUITEM_MAP;
state->helpBarIndex = HELPBAR_NONE;
SetMenuInputHandler(state);
@@ -113,12 +113,12 @@ bool32 PokenavCallback_Init_MainMenuCursorOnMap(void)
bool32 PokenavCallback_Init_MainMenuCursorOnMatchCall(void)
{
- struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
+ struct Pokenav1Struct *state = AllocSubstruct(POKENAV_SUBSTRUCT_MAIN_MENU_HANDLER, sizeof(struct Pokenav1Struct));
if (!state)
return FALSE;
-
+
state->menuType = GetPokenavMainMenuType();
- state->cursorPos = 2;
+ state->cursorPos = POKENAV_MENUITEM_MATCH_CALL;
state->currMenuItem = POKENAV_MENUITEM_MATCH_CALL;
state->helpBarIndex = HELPBAR_NONE;
SetMenuInputHandler(state);
@@ -127,12 +127,12 @@ bool32 PokenavCallback_Init_MainMenuCursorOnMatchCall(void)
bool32 PokenavCallback_Init_MainMenuCursorOnRibbons(void)
{
- struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
+ struct Pokenav1Struct *state = AllocSubstruct(POKENAV_SUBSTRUCT_MAIN_MENU_HANDLER, sizeof(struct Pokenav1Struct));
if (!state)
return FALSE;
-
+
state->menuType = GetPokenavMainMenuType();
- state->cursorPos = 3;
+ state->cursorPos = POKENAV_MENUITEM_RIBBONS;
state->currMenuItem = POKENAV_MENUITEM_RIBBONS;
SetMenuInputHandler(state);
return TRUE;
@@ -140,12 +140,12 @@ bool32 PokenavCallback_Init_MainMenuCursorOnRibbons(void)
bool32 PokenavCallback_Init_ConditionMenu(void)
{
- struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
+ struct Pokenav1Struct *state = AllocSubstruct(POKENAV_SUBSTRUCT_MAIN_MENU_HANDLER, sizeof(struct Pokenav1Struct));
if (!state)
return FALSE;
-
+
state->menuType = POKENAV_MENU_TYPE_CONDITION;
- state->cursorPos = 0;
+ state->cursorPos = 0; //party
state->currMenuItem = POKENAV_MENUITEM_CONDITION_PARTY;
state->helpBarIndex = HELPBAR_NONE;
SetMenuInputHandler(state);
@@ -154,10 +154,10 @@ bool32 PokenavCallback_Init_ConditionMenu(void)
bool32 PokenavCallback_Init_ConditionSearchMenu(void)
{
- struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
+ struct Pokenav1Struct *state = AllocSubstruct(POKENAV_SUBSTRUCT_MAIN_MENU_HANDLER, sizeof(struct Pokenav1Struct));
if (!state)
return FALSE;
-
+
state->menuType = POKENAV_MENU_TYPE_CONDITION_SEARCH;
state->cursorPos = GetSelectedConditionSearch();
state->currMenuItem = state->cursorPos + POKENAV_MENUITEM_CONDITION_SEARCH_COOL;
@@ -202,13 +202,13 @@ static u32 (*GetMainMenuInputHandler(void))(struct Pokenav1Struct*)
u32 GetMenuHandlerCallback(void)
{
- struct Pokenav1Struct *state = GetSubstructPtr(1);
+ struct Pokenav1Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU_HANDLER);
return state->callback(state);
}
void FreeMenuHandlerSubstruct1(void)
{
- FreePokenavSubstruct(1);
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_MAIN_MENU_HANDLER);
}
static u32 HandleMainMenuInput(struct Pokenav1Struct *state)
@@ -216,7 +216,7 @@ static u32 HandleMainMenuInput(struct Pokenav1Struct *state)
if (UpdateMenuCursorPos(state))
return POKENAV_MENU_FUNC_MOVE_CURSOR;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
switch (sMenuItems[state->menuType][state->cursorPos])
{
@@ -247,12 +247,12 @@ static u32 HandleMainMenuInput(struct Pokenav1Struct *state)
return POKENAV_MENU_FUNC_NO_RIBBON_WINNERS;
}
case POKENAV_MENUITEM_SWITCH_OFF:
- return -1;
+ return POKENAV_MENU_FUNC_EXIT;
}
}
-
- if (gMain.newKeys & B_BUTTON)
- return -1;
+
+ if (JOY_NEW(B_BUTTON))
+ return POKENAV_MENU_FUNC_EXIT;
return POKENAV_MENU_FUNC_NONE;
}
@@ -262,8 +262,8 @@ static u32 HandleMainMenuInputTutorial(struct Pokenav1Struct *state)
{
if (UpdateMenuCursorPos(state))
return POKENAV_MENU_FUNC_MOVE_CURSOR;
-
- if (gMain.newKeys & A_BUTTON)
+
+ if (JOY_NEW(A_BUTTON))
{
if (sMenuItems[state->menuType][state->cursorPos] == POKENAV_MENUITEM_MATCH_CALL)
{
@@ -277,13 +277,13 @@ static u32 HandleMainMenuInputTutorial(struct Pokenav1Struct *state)
return POKENAV_MENU_FUNC_NONE;
}
}
-
- if (gMain.newKeys & B_BUTTON)
+
+ if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_FAILURE);
return POKENAV_MENU_FUNC_NONE;
}
-
+
return POKENAV_MENU_FUNC_NONE;
}
@@ -292,8 +292,8 @@ static u32 HandleMainMenuInputEndTutorial(struct Pokenav1Struct *state)
{
if (UpdateMenuCursorPos(state))
return POKENAV_MENU_FUNC_MOVE_CURSOR;
-
- if (gMain.newKeys & A_BUTTON)
+
+ if (JOY_NEW(A_BUTTON))
{
u32 menuItem = sMenuItems[state->menuType][state->cursorPos];
if (menuItem != POKENAV_MENUITEM_MATCH_CALL && menuItem != POKENAV_MENUITEM_SWITCH_OFF)
@@ -312,7 +312,7 @@ static u32 HandleMainMenuInputEndTutorial(struct Pokenav1Struct *state)
return -1;
}
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
return -1;
}
@@ -329,7 +329,7 @@ static u32 HandleCantOpenRibbonsInput(struct Pokenav1Struct *state)
return POKENAV_MENU_FUNC_MOVE_CURSOR;
}
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
state->callback = GetMainMenuInputHandler();
return POKENAV_MENU_FUNC_RESHOW_DESCRIPTION;
@@ -342,8 +342,8 @@ static u32 HandleConditionMenuInput(struct Pokenav1Struct *state)
{
if (UpdateMenuCursorPos(state))
return POKENAV_MENU_FUNC_MOVE_CURSOR;
-
- if (gMain.newKeys & A_BUTTON)
+
+ if (JOY_NEW(A_BUTTON))
{
switch (sMenuItems[state->menuType][state->cursorPos])
{
@@ -363,7 +363,7 @@ static u32 HandleConditionMenuInput(struct Pokenav1Struct *state)
return POKENAV_MENU_FUNC_RETURN_TO_MAIN;
}
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
if (state->cursorPos != sLastCursorPositions[state->menuType])
{
@@ -386,8 +386,8 @@ static u32 HandleConditionSearchMenuInput(struct Pokenav1Struct *state)
{
if (UpdateMenuCursorPos(state))
return POKENAV_MENU_FUNC_MOVE_CURSOR;
-
- if (gMain.newKeys & A_BUTTON)
+
+ if (JOY_NEW(A_BUTTON))
{
u8 menuItem = sMenuItems[state->menuType][state->cursorPos];
if (menuItem != POKENAV_MENUITEM_CONDITION_SEARCH_CANCEL)
@@ -404,7 +404,7 @@ static u32 HandleConditionSearchMenuInput(struct Pokenav1Struct *state)
return POKENAV_MENU_FUNC_RETURN_TO_CONDITION;
}
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
if (state->cursorPos != sLastCursorPositions[state->menuType])
{
@@ -463,7 +463,7 @@ static void ReturnToConditionMenu(struct Pokenav1Struct *state)
static bool32 UpdateMenuCursorPos(struct Pokenav1Struct *state)
{
- if (gMain.newKeys & DPAD_UP)
+ if (JOY_NEW(DPAD_UP))
{
if (--state->cursorPos < 0)
state->cursorPos = sLastCursorPositions[state->menuType];
@@ -471,7 +471,7 @@ static bool32 UpdateMenuCursorPos(struct Pokenav1Struct *state)
state->currMenuItem = sMenuItems[state->menuType][state->cursorPos];
return TRUE;
}
- else if (gMain.newKeys & DPAD_DOWN)
+ else if (JOY_NEW(DPAD_DOWN))
{
state->cursorPos++;
if (state->cursorPos > sLastCursorPositions[state->menuType])
@@ -488,26 +488,26 @@ static bool32 UpdateMenuCursorPos(struct Pokenav1Struct *state)
int GetPokenavMenuType(void)
{
- struct Pokenav1Struct *state = GetSubstructPtr(1);
+ struct Pokenav1Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU_HANDLER);
return state->menuType;
}
// Position of cursor relative to number of current menu options
int GetPokenavCursorPos(void)
{
- struct Pokenav1Struct *state = GetSubstructPtr(1);
+ struct Pokenav1Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU_HANDLER);
return state->cursorPos;
}
// ID of menu item the cursor is currently on
int GetCurrentMenuItemId(void)
{
- struct Pokenav1Struct *state = GetSubstructPtr(1);
+ struct Pokenav1Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU_HANDLER);
return state->currMenuItem;
}
u16 GetHelpBarTextId(void)
{
- struct Pokenav1Struct *state = GetSubstructPtr(1);
+ struct Pokenav1Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_MAIN_MENU_HANDLER);
return state->helpBarIndex;
}
diff --git a/src/pokenav_menu_handler_2.c b/src/pokenav_menu_handler_2.c
index 2be92013f..3fcd41dc9 100644
--- a/src/pokenav_menu_handler_2.c
+++ b/src/pokenav_menu_handler_2.c
@@ -27,7 +27,7 @@ struct Pokenav2Struct
bool8 otherIconsInMotion;
bool8 pokenavAlreadyOpen;
bool32 iconVisible[MAX_POKENAV_MENUITEMS];
- struct Sprite * field_028;
+ struct Sprite * blueLightSpriteId;
struct Sprite * iconSprites[MAX_POKENAV_MENUITEMS][4];
u16 bg1TilemapBuffer[0x400];
};
@@ -43,54 +43,54 @@ static u32 LoopedTask_ReturnToConditionMenu(s32 state);
static u32 LoopedTask_SelectRibbonsNoWinners(s32 state);
static u32 LoopedTask_ReShowDescription(s32 state);
static u32 LoopedTask_OpenPokenavFeature(s32 state);
-static void sub_81C9FC4(void);
-static void sub_81C9FEC(void);
+static void LoadPokenavOptionPalettes(void);
+static void FreeAndDestroyMainMenuSprites(void);
static void CreateMenuOptionSprites(void);
-static void sub_81CA094(void);
+static void DestroyMenuOptionSprites(void);
static void sub_81CA0C8(void);
-static void sub_81CA0EC(const u16 *const * a0, s32 a1, s32 a2);
-static void sub_81CA20C(void);
-static void sub_81CA278(void);
-static void sub_81CA35C(struct Sprite ** sprites, s32 a1, s32 a2, s32 a3);
-static void sub_81CA3B4(struct Sprite ** sprites);
-static void sub_81CA2DC(void);
+static void DrawOptionLabelGfx(const u16 *const * a0, s32 yPos, s32 a2);
+static void SetupCurrentMenuOptionsGfx(void);
+static void SetMenuOptionGfxParams_CursorMoved(void);
+static void SetMenuOptionGfxParamsInactive(struct Sprite ** sprites, s32 x, s32 a2, s32 a3);
+static void SetMenuOptionGfxParamsActive(struct Sprite ** sprites);
+static void SetupPokenavMenuOptions(void);
static bool32 AreMenuOptionSpritesMoving(void);
-static void sub_81CA448(struct Sprite ** sprites, bool32 a1);
+static void SetMenuOptionGfxInvisibility(struct Sprite ** sprites, bool32 a1);
static void sub_81CA474(struct Sprite * sprite);
static void sub_81CA4AC(struct Sprite * sprite);
static void sub_81CA580(u8 taskId);
-static void sub_81CA640(void);
-static void sub_81CA6AC(struct Sprite * sprite);
-static void sub_81CA698(void);
+static void CreateMatchCallBlueLightSprite(void);
+static void SpriteCB_BlinkingBlueLight(struct Sprite * sprite);
+static void DestroyRematchBlueLightSpriteId(void);
static void AddOptionDescriptionWindow(void);
static void PrintCurrentOptionDescription(void);
static void PrintNoRibbonWinners(void);
-static bool32 sub_81CA7C4(void);
-static void sub_81CA7D4(void);
-static void sub_81CA7F4(void);
-static void sub_81CA808(u8 taskId);
-static void sub_81CA818(void);
-static void sub_81CA850(void);
-static void sub_81CA864(void);
-static bool32 sub_81CA89C(void);
-static void sub_81CA8B0(u8 taskId);
-static void sub_81CA92C(void);
-static void sub_81CA994(void);
-static void sub_81CA9C8(void);
-static void sub_81CA9D8(void);
-static void sub_81CA9EC(u8 taskId);
-static void sub_81CAA3C(void);
-
-static const u16 gUnknown_0861FC78[] = INCBIN_U16("graphics/pokenav/bg.gbapal");
-static const u32 gUnknown_0861FC98[] = INCBIN_U32("graphics/pokenav/bg.4bpp.lz");
-static const u32 gUnknown_0861FCAC[] = INCBIN_U32("graphics/pokenav/bg.bin.lz");
-static const u16 gUnknown_0861FD4C[] = INCBIN_U16("graphics/pokenav/outline.gbapal");
-static const u32 gUnknown_0861FD6C[] = INCBIN_U32("graphics/pokenav/outline.4bpp.lz");
-static const u32 gUnknown_0861FFF4[] = INCBIN_U32("graphics/pokenav/outline_map.bin.lz");
-static const u16 gUnknown_08620104[] = INCBIN_U16("graphics/pokenav/blue_light.gbapal");
-static const u32 gUnknown_08620124[] = INCBIN_U32("graphics/pokenav/blue_light.4bpp.lz");
-
-static const struct BgTemplate gUnknown_08620194[] = {
+static bool32 IsDma3ManagerBusyWithBgCopy_(void);
+static void CreateMovingBgDotsTask(void);
+static void DestroyMovingDotsBgTask(void);
+static void Task_MoveBgDots(u8 taskId);
+static void CreateBgDotPurplePalTask(void);
+static void ChangeBgDotsColorToPurple(void);
+static void CreateBgDotLightBluePalTask(void);
+static bool32 IsTaskActive_UpdateBgDotsPalette(void);
+static void Task_UpdateBgDotsPalette(u8 taskId);
+static void SetupPokenavMenuScanlineEffects(void);
+static void DestroyMenuOptionGlowTask(void);
+static void ResetBldCnt(void);
+static void InitMenuOptionGlow(void);
+static void Task_CurrentMenuOptionGlow(u8 taskId);
+static void SetMenuOptionGlow(void);
+
+static const u16 sPokenavBgDotsPal[] = INCBIN_U16("graphics/pokenav/bg_dots.gbapal");
+static const u32 sPokenavBgDotsTiles[] = INCBIN_U32("graphics/pokenav/bg_dots.4bpp.lz");
+static const u32 sPokenavBgDotsTilemap[] = INCBIN_U32("graphics/pokenav/bg_dots.bin.lz");
+static const u16 sPokenavDeviceBgPal[] = INCBIN_U16("graphics/pokenav/device_outline.gbapal");
+static const u32 sPokenavDeviceBgTiles[] = INCBIN_U32("graphics/pokenav/device_outline.4bpp.lz");
+static const u32 sPokenavDeviceBgTilemap[] = INCBIN_U32("graphics/pokenav/device_outline_map.bin.lz");
+static const u16 sMatchCallBlueLightPal[] = INCBIN_U16("graphics/pokenav/blue_light.gbapal");
+static const u32 sMatchCallBlueLightTiles[] = INCBIN_U32("graphics/pokenav/blue_light.4bpp.lz");
+
+static const struct BgTemplate sPokenavMainMenuBgTemplates[] = {
{
.bg = 1,
.charBaseIndex = 1,
@@ -118,7 +118,8 @@ static const struct BgTemplate gUnknown_08620194[] = {
}
};
-static const LoopedTask sMenuHandlerLoopTaskFuncs[] = {
+static const LoopedTask sMenuHandlerLoopTaskFuncs[] =
+{
[POKENAV_MENU_FUNC_NONE] = NULL,
[POKENAV_MENU_FUNC_MOVE_CURSOR] = LoopedTask_MoveMenuCursor,
[POKENAV_MENU_FUNC_OPEN_CONDITION] = LoopedTask_OpenConditionMenu,
@@ -130,7 +131,7 @@ static const LoopedTask sMenuHandlerLoopTaskFuncs[] = {
[POKENAV_MENU_FUNC_OPEN_FEATURE] = LoopedTask_OpenPokenavFeature
};
-static const struct CompressedSpriteSheet gUnknown_086201C4[] =
+static const struct CompressedSpriteSheet sPokenavOptionsSpriteSheets[] =
{
{
.data = gPokenavOptions_Gfx,
@@ -138,76 +139,75 @@ static const struct CompressedSpriteSheet gUnknown_086201C4[] =
.tag = 0x0003
},
{
- .data = gUnknown_08620124,
+ .data = sMatchCallBlueLightTiles,
.size = 0x0100,
.tag = 0x0001
}
};
-static const struct SpritePalette gUnknown_086201D4[] =
+static const struct SpritePalette sPokenavOptionsSpritePalettes[] =
{
{gPokenavOptions_Pal + 0x00, 4},
{gPokenavOptions_Pal + 0x10, 5},
{gPokenavOptions_Pal + 0x20, 6},
{gPokenavOptions_Pal + 0x30, 7},
{gPokenavOptions_Pal + 0x40, 8},
- {gUnknown_08620104, 3},
+ {sMatchCallBlueLightPal, 3},
{}
};
-static const u16 gUnknown_0862020C[] = {0, 0};
-static const u16 gUnknown_08620210[] = {0x20, 1};
-static const u16 gUnknown_08620214[] = {0x40, 4};
-static const u16 gUnknown_08620218[] = {0x60, 2};
-static const u16 gUnknown_0862021C[] = {0x80, 3};
-static const u16 gUnknown_08620220[] = {0xA0, 1};
-static const u16 gUnknown_08620224[] = {0xC0, 1};
-static const u16 gUnknown_08620228[] = {0xE0, 4};
-static const u16 gUnknown_0862022C[] = {0x100, 1};
-static const u16 gUnknown_08620230[] = {0x120, 2};
-static const u16 gUnknown_08620234[] = {0x140, 0};
-static const u16 gUnknown_08620238[] = {0x160, 0};
-static const u16 gUnknown_0862023C[] = {0x180, 3};
-
-struct UnkStruct_08620240
-{
- u16 unk0;
- u16 unk2;
- const u16 *unk4[MAX_POKENAV_MENUITEMS];
+static const u16 sOptionsLabelGfx_RegionMap[] = {0, 0};
+static const u16 sOptionsLabelGfx_Condition[] = {0x20, 1};
+static const u16 sOptionsLabelGfx_MatchCall[] = {0x40, 4};
+static const u16 sOptionsLabelGfx_Ribbons[] = {0x60, 2};
+static const u16 sOptionsLabelGfx_SwitchOff[] = {0x80, 3};
+static const u16 sOptionsLabelGfx_Party[] = {0xA0, 1};
+static const u16 sOptionsLabelGfx_Search[] = {0xC0, 1};
+static const u16 sOptionsLabelGfx_Cool[] = {0xE0, 4};
+static const u16 sOptionsLabelGfx_Beauty[] = {0x100, 1};
+static const u16 sOptionsLabelGfx_Cute[] = {0x120, 2};
+static const u16 sOptionsLabelGfx_Smart[] = {0x140, 0};
+static const u16 sOptionsLabelGfx_Tough[] = {0x160, 0};
+static const u16 sOptionsLabelGfx_Cancel[] = {0x180, 3};
+
+struct OptionsLabelGfx
+{
+ u16 yStart;
+ u16 deltaY;
+ const u16 *tiles[MAX_POKENAV_MENUITEMS];
};
-// TODO
-static const struct UnkStruct_08620240 gUnknown_08620240[POKENAV_MENU_TYPE_COUNT] =
+static const struct OptionsLabelGfx sPokenavMenuOptionLabelGfx[POKENAV_MENU_TYPE_COUNT] =
{
[POKENAV_MENU_TYPE_DEFAULT] =
{
- 0x2A,
- 0x14,
- {gUnknown_0862020C, gUnknown_08620210, gUnknown_0862021C}
+ .yStart = 42,
+ .deltaY = 20,
+ {sOptionsLabelGfx_RegionMap, sOptionsLabelGfx_Condition, sOptionsLabelGfx_SwitchOff}
},
[POKENAV_MENU_TYPE_UNLOCK_MC] =
{
- 0x2A,
- 0x14,
- {gUnknown_0862020C, gUnknown_08620210, gUnknown_08620214, gUnknown_0862021C}
+ .yStart = 42,
+ .deltaY = 20,
+ {sOptionsLabelGfx_RegionMap, sOptionsLabelGfx_Condition, sOptionsLabelGfx_MatchCall, sOptionsLabelGfx_SwitchOff}
},
[POKENAV_MENU_TYPE_UNLOCK_MC_RIBBONS] =
{
- 0x2A,
- 0x14,
- {gUnknown_0862020C, gUnknown_08620210, gUnknown_08620214, gUnknown_08620218, gUnknown_0862021C}
+ .yStart = 42,
+ .deltaY = 20,
+ {sOptionsLabelGfx_RegionMap, sOptionsLabelGfx_Condition, sOptionsLabelGfx_MatchCall, sOptionsLabelGfx_Ribbons, sOptionsLabelGfx_SwitchOff}
},
[POKENAV_MENU_TYPE_CONDITION] =
{
- 0x38,
- 0x14,
- {gUnknown_08620220, gUnknown_08620224, gUnknown_0862023C}
+ .yStart = 56,
+ .deltaY = 20,
+ {sOptionsLabelGfx_Party, sOptionsLabelGfx_Search, sOptionsLabelGfx_Cancel}
},
[POKENAV_MENU_TYPE_CONDITION_SEARCH] =
{
- 0x28,
- 0x10,
- {gUnknown_08620228, gUnknown_0862022C, gUnknown_08620230, gUnknown_08620234, gUnknown_08620238, gUnknown_0862023C}
+ .yStart = 40,
+ .deltaY = 16,
+ {sOptionsLabelGfx_Cool, sOptionsLabelGfx_Beauty, sOptionsLabelGfx_Cute, sOptionsLabelGfx_Smart, sOptionsLabelGfx_Tough, sOptionsLabelGfx_Cancel}
},
};
@@ -287,7 +287,7 @@ static const struct SpriteTemplate sMenuOptionSpriteTemplate =
.callback = SpriteCallbackDummy,
};
-static const struct OamData gUnknown_08620364 =
+static const struct OamData sBlueLightOamData =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -301,18 +301,18 @@ static const struct OamData gUnknown_08620364 =
.paletteNum = 0,
};
-static const struct SpriteTemplate gUnknown_0862036C =
+static const struct SpriteTemplate sMatchCallBlueLightSpriteTemplate =
{
.tileTag = 1,
.paletteTag = 3,
- .oam = &gUnknown_08620364,
+ .oam = &sBlueLightOamData,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct ScanlineEffectParams gUnknown_08620384 =
+static const struct ScanlineEffectParams sPokenavMainMenuScanlineEffectParams =
{
(void *)REG_ADDR_WIN0H,
((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
@@ -320,13 +320,13 @@ static const struct ScanlineEffectParams gUnknown_08620384 =
0
};
-static bool32 sub_81C98D4(void)
+static bool32 PlayerHasTrainerRematches(void)
{
s32 i;
for (i = 0; i < REMATCH_TABLE_ENTRIES; i++)
{
- if (sub_81CB0C8(i) == gMapHeader.regionMapSectionId
+ if (GetMatchTableMapSectionId(i) == gMapHeader.regionMapSectionId
&& IsRematchEntryRegistered(i)
&& gSaveBlock1Ptr->trainerRematches[i])
return TRUE;
@@ -373,43 +373,43 @@ static struct Pokenav2Struct * OpenPokenavMenu(void)
void CreateMenuHandlerLoopedTask(s32 ltIdx)
{
- struct Pokenav2Struct * state = GetSubstructPtr(2);
+ struct Pokenav2Struct * state = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
state->loopedTaskId = CreateLoopedTask(sMenuHandlerLoopTaskFuncs[ltIdx], 1);
state->isTaskActiveCB = GetCurrentLoopedTaskActive;
}
bool32 IsMenuHandlerLoopedTaskActive(void)
{
- struct Pokenav2Struct * state = GetSubstructPtr(2);
+ struct Pokenav2Struct * state = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
return state->isTaskActiveCB();
}
void FreeMenuHandlerSubstruct2(void)
{
- struct Pokenav2Struct * unk = GetSubstructPtr(2);
+ struct Pokenav2Struct * unk = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
- sub_81CA7F4();
+ DestroyMovingDotsBgTask();
RemoveWindow(unk->optionDescWindowId);
- sub_81C9FEC();
- sub_81CA994();
- FreePokenavSubstruct(2);
+ FreeAndDestroyMainMenuSprites();
+ DestroyMenuOptionGlowTask();
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_MENU_ICONS);
}
static bool32 GetCurrentLoopedTaskActive(void)
{
- struct Pokenav2Struct * unk = GetSubstructPtr(2);
+ struct Pokenav2Struct * unk = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
return IsLoopedTaskActive(unk->loopedTaskId);
}
static u32 LoopedTask_OpenMenu(s32 state)
{
- struct Pokenav2Struct * unk = GetSubstructPtr(2);
+ struct Pokenav2Struct * unk = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
switch (state)
{
case 0:
- InitBgTemplates(gUnknown_08620194, ARRAY_COUNT(gUnknown_08620194));
+ InitBgTemplates(sPokenavMainMenuBgTemplates, ARRAY_COUNT(sPokenavMainMenuBgTemplates));
DecompressAndCopyTileDataToVram(1, gPokenavMessageBox_Gfx, 0, 0, 0);
SetBgTilemapBuffer(1, unk->bg1TilemapBuffer);
CopyToBgTilemapBuffer(1, gPokenavMessageBox_Tilemap, 0, 0);
@@ -425,36 +425,36 @@ static u32 LoopedTask_OpenMenu(s32 state)
case 1:
if (FreeTempTileDataBuffersIfPossible())
return LT_PAUSE;
- DecompressAndCopyTileDataToVram(2, gUnknown_0861FD6C, 0, 0, 0);
- DecompressAndCopyTileDataToVram(2, gUnknown_0861FFF4, 0, 0, 1);
- CopyPaletteIntoBufferUnfaded(gUnknown_0861FD4C, 0x20, 0x20);
+ DecompressAndCopyTileDataToVram(2, sPokenavDeviceBgTiles, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(2, sPokenavDeviceBgTilemap, 0, 0, 1);
+ CopyPaletteIntoBufferUnfaded(sPokenavDeviceBgPal, 0x20, 0x20);
return LT_INC_AND_PAUSE;
case 2:
if (FreeTempTileDataBuffersIfPossible())
return LT_PAUSE;
- DecompressAndCopyTileDataToVram(3, gUnknown_0861FC98, 0, 0, 0);
- DecompressAndCopyTileDataToVram(3, gUnknown_0861FCAC, 0, 0, 1);
- CopyPaletteIntoBufferUnfaded(gUnknown_0861FC78, 0x30, 0x20);
+ DecompressAndCopyTileDataToVram(3, sPokenavBgDotsTiles, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(3, sPokenavBgDotsTilemap, 0, 0, 1);
+ CopyPaletteIntoBufferUnfaded(sPokenavBgDotsPal, 0x30, 0x20);
if (GetPokenavMenuType() == POKENAV_MENU_TYPE_CONDITION || GetPokenavMenuType() == POKENAV_MENU_TYPE_CONDITION_SEARCH)
- sub_81CA850();
+ ChangeBgDotsColorToPurple();
return LT_INC_AND_PAUSE;
case 3:
if (FreeTempTileDataBuffersIfPossible())
return LT_PAUSE;
AddOptionDescriptionWindow();
- sub_81CA7D4();
+ CreateMovingBgDotsTask();
return LT_INC_AND_CONTINUE;
case 4:
- sub_81C9FC4();
+ LoadPokenavOptionPalettes();
return LT_INC_AND_CONTINUE;
case 5:
PrintCurrentOptionDescription();
CreateMenuOptionSprites();
- sub_81CA640();
+ CreateMatchCallBlueLightSprite();
sub_81CA0C8();
return LT_INC_AND_PAUSE;
case 6:
- if (sub_81CA7C4())
+ if (IsDma3ManagerBusyWithBgCopy_())
return LT_PAUSE;
return LT_INC_AND_CONTINUE;
case 7:
@@ -487,22 +487,22 @@ static u32 LoopedTask_OpenMenu(s32 state)
switch (GetPokenavMenuType())
{
case POKENAV_MENU_TYPE_CONDITION_SEARCH:
- sub_81C7FA0(7, FALSE, FALSE);
+ ShowLeftHeaderGfx(7, FALSE, FALSE);
// fallthrough
case POKENAV_MENU_TYPE_CONDITION:
- sub_81C7FA0(1, FALSE, FALSE);
+ ShowLeftHeaderGfx(1, FALSE, FALSE);
break;
default:
- sub_81C7FA0(0, FALSE, FALSE);
+ ShowLeftHeaderGfx(0, FALSE, FALSE);
break;
}
- sub_81CA20C();
- sub_81CA92C();
+ SetupCurrentMenuOptionsGfx();
+ SetupPokenavMenuScanlineEffects();
return LT_INC_AND_CONTINUE;
case 9:
if (AreMenuOptionSpritesMoving())
return LT_PAUSE;
- if (sub_81C8010())
+ if (AreLeftHeaderSpritesMoving())
return LT_PAUSE;
break;
}
@@ -514,15 +514,15 @@ static u32 LoopedTask_MoveMenuCursor(s32 state)
switch (state)
{
case 0:
- sub_81CAA3C();
- sub_81CA278();
+ SetMenuOptionGlow();
+ SetMenuOptionGfxParams_CursorMoved();
PrintCurrentOptionDescription();
PlaySE(SE_SELECT);
return LT_INC_AND_PAUSE;
case 1:
if (AreMenuOptionSpritesMoving())
return LT_PAUSE;
- if (sub_81CA7C4())
+ if (IsDma3ManagerBusyWithBgCopy_())
return LT_PAUSE;
break;
}
@@ -534,35 +534,35 @@ static u32 LoopedTask_OpenConditionMenu(s32 state)
switch (state)
{
case 0:
- sub_81CA9C8();
- sub_81CA2DC();
- sub_81C7FC4(0, 0);
+ ResetBldCnt();
+ SetupPokenavMenuOptions();
+ HideMainOrSubMenuLeftHeader(POKENAV_GFX_MAIN_MENU, 0);
PlaySE(SE_SELECT);
return LT_INC_AND_PAUSE;
case 1:
if (AreMenuOptionSpritesMoving())
return LT_PAUSE;
- if (sub_81C8010())
+ if (AreLeftHeaderSpritesMoving())
return LT_PAUSE;
sub_81CA0C8();
LoadLeftHeaderGfxForIndex(1);
return LT_INC_AND_PAUSE;
case 2:
- sub_81CA20C();
- sub_81C7FA0(1, FALSE, FALSE);
- sub_81CA818();
+ SetupCurrentMenuOptionsGfx();
+ ShowLeftHeaderGfx(1, FALSE, FALSE);
+ CreateBgDotPurplePalTask();
PrintCurrentOptionDescription();
return LT_INC_AND_PAUSE;
case 3:
if (AreMenuOptionSpritesMoving())
return LT_PAUSE;
- if (sub_81C8010())
+ if (AreLeftHeaderSpritesMoving())
return LT_PAUSE;
- if (sub_81CA89C())
+ if (IsTaskActive_UpdateBgDotsPalette())
return LT_PAUSE;
- if (sub_81CA7C4())
+ if (IsDma3ManagerBusyWithBgCopy_())
return LT_PAUSE;
- sub_81CA9D8();
+ InitMenuOptionGlow();
break;
}
return LT_FINISH;
@@ -573,34 +573,34 @@ static u32 LoopedTask_ReturnToMainMenu(s32 state)
switch (state)
{
case 0:
- sub_81CA9C8();
- sub_81CA2DC();
- sub_81C7FC4(1, 0);
+ ResetBldCnt();
+ SetupPokenavMenuOptions();
+ HideMainOrSubMenuLeftHeader(POKENAV_GFX_CONDITION_MENU, 0);
return LT_INC_AND_PAUSE;
case 1:
if (AreMenuOptionSpritesMoving())
return LT_PAUSE;
- if (sub_81C8010())
+ if (AreLeftHeaderSpritesMoving())
return LT_PAUSE;
sub_81CA0C8();
LoadLeftHeaderGfxForIndex(0);
return LT_INC_AND_PAUSE;
case 2:
- sub_81CA20C();
- sub_81C7FA0(0, FALSE, FALSE);
- sub_81CA864();
+ SetupCurrentMenuOptionsGfx();
+ ShowLeftHeaderGfx(0, FALSE, FALSE);
+ CreateBgDotLightBluePalTask();
PrintCurrentOptionDescription();
return LT_INC_AND_PAUSE;
case 3:
if (AreMenuOptionSpritesMoving())
return LT_PAUSE;
- if (sub_81C8010())
+ if (AreLeftHeaderSpritesMoving())
return LT_PAUSE;
- if (sub_81CA89C())
+ if (IsTaskActive_UpdateBgDotsPalette())
return LT_PAUSE;
- if (sub_81CA7C4())
+ if (IsDma3ManagerBusyWithBgCopy_())
return LT_PAUSE;
- sub_81CA9D8();
+ InitMenuOptionGlow();
break;
}
return LT_FINISH;
@@ -611,8 +611,8 @@ static u32 LoopedTask_OpenConditionSearchMenu(s32 state)
switch (state)
{
case 0:
- sub_81CA9C8();
- sub_81CA2DC();
+ ResetBldCnt();
+ SetupPokenavMenuOptions();
PlaySE(SE_SELECT);
return LT_INC_AND_PAUSE;
case 1:
@@ -622,18 +622,18 @@ static u32 LoopedTask_OpenConditionSearchMenu(s32 state)
sub_81CA0C8();
return LT_INC_AND_PAUSE;
case 2:
- sub_81CA20C();
- sub_81C7FA0(7, FALSE, FALSE);
+ SetupCurrentMenuOptionsGfx();
+ ShowLeftHeaderGfx(7, FALSE, FALSE);
PrintCurrentOptionDescription();
return LT_INC_AND_PAUSE;
case 3:
if (AreMenuOptionSpritesMoving())
return LT_PAUSE;
- if (sub_81C8010())
+ if (AreLeftHeaderSpritesMoving())
return LT_PAUSE;
- if (sub_81CA89C())
+ if (IsTaskActive_UpdateBgDotsPalette())
return LT_PAUSE;
- sub_81CA9D8();
+ InitMenuOptionGlow();
break;
}
return LT_FINISH;
@@ -644,27 +644,27 @@ static u32 LoopedTask_ReturnToConditionMenu(s32 state)
switch (state)
{
case 0:
- sub_81CA9C8();
- sub_81CA2DC();
- sub_81C7FC4(7, 0);
+ ResetBldCnt();
+ SetupPokenavMenuOptions();
+ HideMainOrSubMenuLeftHeader(POKENAV_GFX_SEARCH_MENU, 0);
return LT_INC_AND_PAUSE;
case 1:
if (AreMenuOptionSpritesMoving())
return LT_PAUSE;
- if (sub_81C8010())
+ if (AreLeftHeaderSpritesMoving())
return LT_PAUSE;
sub_81CA0C8();
return LT_INC_AND_PAUSE;
case 2:
- sub_81CA20C();
+ SetupCurrentMenuOptionsGfx();
PrintCurrentOptionDescription();
return LT_INC_AND_PAUSE;
case 3:
if (AreMenuOptionSpritesMoving())
return LT_PAUSE;
- if (sub_81CA89C())
+ if (IsTaskActive_UpdateBgDotsPalette())
return LT_PAUSE;
- sub_81CA9D8();
+ InitMenuOptionGlow();
break;
}
return LT_FINISH;
@@ -714,19 +714,19 @@ static u32 LoopedTask_OpenPokenavFeature(s32 state)
case 1:
if (WaitForHelpBar())
return LT_PAUSE;
- sub_81C7880();
- sub_81CA9C8();
- sub_81CA2DC();
+ SlideMenuHeaderUp();
+ ResetBldCnt();
+ SetupPokenavMenuOptions();
switch (GetPokenavMenuType())
{
case POKENAV_MENU_TYPE_CONDITION_SEARCH:
- sub_81C7FC4(7, FALSE);
+ HideMainOrSubMenuLeftHeader(POKENAV_GFX_SEARCH_MENU, FALSE);
// fallthrough
case POKENAV_MENU_TYPE_CONDITION:
- sub_81C7FC4(1, FALSE);
+ HideMainOrSubMenuLeftHeader(POKENAV_GFX_CONDITION_MENU, FALSE);
break;
default:
- sub_81C7FC4(0, FALSE);
+ HideMainOrSubMenuLeftHeader(POKENAV_GFX_MAIN_MENU, FALSE);
break;
}
PlaySE(SE_SELECT);
@@ -734,7 +734,7 @@ static u32 LoopedTask_OpenPokenavFeature(s32 state)
case 2:
if (AreMenuOptionSpritesMoving())
return LT_PAUSE;
- if (sub_81C8010())
+ if (AreLeftHeaderSpritesMoving())
return LT_PAUSE;
PokenavFadeScreen(0);
return LT_INC_AND_PAUSE;
@@ -746,16 +746,16 @@ static u32 LoopedTask_OpenPokenavFeature(s32 state)
return LT_FINISH;
}
-static void sub_81C9FC4(void)
+static void LoadPokenavOptionPalettes(void)
{
s32 i;
- for (i = 0; i < NELEMS(gUnknown_086201C4); i++)
- LoadCompressedSpriteSheet(&gUnknown_086201C4[i]);
- Pokenav_AllocAndLoadPalettes(gUnknown_086201D4);
+ for (i = 0; i < NELEMS(sPokenavOptionsSpriteSheets); i++)
+ LoadCompressedSpriteSheet(&sPokenavOptionsSpriteSheets[i]);
+ Pokenav_AllocAndLoadPalettes(sPokenavOptionsSpritePalettes);
}
-static void sub_81C9FEC(void)
+static void FreeAndDestroyMainMenuSprites(void)
{
FreeSpriteTilesByTag(3);
FreeSpriteTilesByTag(1);
@@ -765,14 +765,14 @@ static void sub_81C9FEC(void)
FreeSpritePaletteByTag(7);
FreeSpritePaletteByTag(8);
FreeSpritePaletteByTag(3);
- sub_81CA094();
- sub_81CA698();
+ DestroyMenuOptionSprites();
+ DestroyRematchBlueLightSpriteId();
}
static void CreateMenuOptionSprites(void)
{
s32 i, j;
- struct Pokenav2Struct * unk = GetSubstructPtr(2);
+ struct Pokenav2Struct * unk = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
for (i = 0; i < MAX_POKENAV_MENUITEMS; i++)
{
@@ -786,10 +786,10 @@ static void CreateMenuOptionSprites(void)
}
}
-static void sub_81CA094(void)
+static void DestroyMenuOptionSprites(void)
{
s32 i, j;
- struct Pokenav2Struct * unk = GetSubstructPtr(2);
+ struct Pokenav2Struct * unk = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
for (i = 0; i < MAX_POKENAV_MENUITEMS; i++)
{
@@ -804,25 +804,25 @@ static void sub_81CA094(void)
static void sub_81CA0C8(void)
{
s32 menuType = GetPokenavMenuType();
- sub_81CA0EC(gUnknown_08620240[menuType].unk4, gUnknown_08620240[menuType].unk0, gUnknown_08620240[menuType].unk2);
+ DrawOptionLabelGfx(sPokenavMenuOptionLabelGfx[menuType].tiles, sPokenavMenuOptionLabelGfx[menuType].yStart, sPokenavMenuOptionLabelGfx[menuType].deltaY);
}
-static void sub_81CA0EC(const u16 *const *a0, s32 a1, s32 a2)
+static void DrawOptionLabelGfx(const u16 *const *tiles, s32 yPos, s32 deltaY)
{
s32 i, j;
- struct Pokenav2Struct * unk = GetSubstructPtr(2);
+ struct Pokenav2Struct * unk = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
s32 sp04 = GetSpriteTileStartByTag(3);
for (i = 0; i < MAX_POKENAV_MENUITEMS; i++)
{
- if (*a0 != NULL)
+ if (*tiles != NULL)
{
for (j = 0; j < 4; j++)
{
- unk->iconSprites[i][j]->oam.tileNum = (*a0)[0] + sp04 + 8 * j;
- unk->iconSprites[i][j]->oam.paletteNum = IndexOfSpritePaletteTag((*a0)[1] + 4);
+ 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 = a1;
+ unk->iconSprites[i][j]->pos1.y = yPos;
unk->iconSprites[i][j]->pos1.x = 0x8c;
unk->iconSprites[i][j]->pos2.x = 32 * j;
}
@@ -836,76 +836,78 @@ static void sub_81CA0EC(const u16 *const *a0, s32 a1, s32 a2)
}
unk->iconVisible[i] = FALSE;
}
- a0++;
- a1 += a2;
+ tiles++;
+ yPos += deltaY;
}
}
-static void sub_81CA20C(void)
+static void SetupCurrentMenuOptionsGfx(void)
{
s32 i;
- struct Pokenav2Struct * unk = GetSubstructPtr(2);
+ struct Pokenav2Struct *icons = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
s32 r8 = GetPokenavCursorPos();
s32 r7 = 0;
s32 r2;
for (i = 0; i < MAX_POKENAV_MENUITEMS; i++)
{
- if (unk->iconVisible[i])
+ if (icons->iconVisible[i])
{
if (r7++ == r8)
{
r2 = 0x82;
- unk->cursorPos = i;
+ icons->cursorPos = i;
}
else
r2 = 0x8c;
- sub_81CA35C(unk->iconSprites[i], 0x100, r2, 0xC);
- sub_81CA448(unk->iconSprites[i], FALSE);
+ SetMenuOptionGfxParamsInactive(icons->iconSprites[i], 0x100, r2, 0xC);
+ SetMenuOptionGfxInvisibility(icons->iconSprites[i], FALSE);
}
else
- sub_81CA448(unk->iconSprites[i], TRUE);
+ {
+ SetMenuOptionGfxInvisibility(icons->iconSprites[i], TRUE);
+ }
}
}
-static void sub_81CA278(void)
+static void SetMenuOptionGfxParams_CursorMoved(void)
{
s32 i;
- struct Pokenav2Struct * unk = GetSubstructPtr(2);
- s32 r3 = GetPokenavCursorPos();
- s32 r5;
+ struct Pokenav2Struct *icons = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
+ s32 prevPos = GetPokenavCursorPos();
+ s32 newPos;
- for (i = 0, r5 = 0; i < MAX_POKENAV_MENUITEMS; i++)
+ for (i = 0, newPos = 0; i < MAX_POKENAV_MENUITEMS; i++)
{
- if (unk->iconVisible[i])
+ if (icons->iconVisible[i])
{
- if (r5 == r3)
+ if (newPos == prevPos)
{
- r5 = i;
+ newPos = i;
break;
}
- r5++;
+ newPos++;
}
}
- sub_81CA35C(unk->iconSprites[unk->cursorPos], 0x82, 0x8c, 0x4);
- sub_81CA35C(unk->iconSprites[r5], 0x8c, 0x82, 0x4);
- unk->cursorPos = r5;
+ SetMenuOptionGfxParamsInactive(icons->iconSprites[icons->cursorPos], 0x82, 0x8c, 0x4);
+ SetMenuOptionGfxParamsInactive(icons->iconSprites[newPos], 0x8c, 0x82, 0x4);
+ icons->cursorPos = newPos;
}
-static void sub_81CA2DC(void)
+static void SetupPokenavMenuOptions(void)
{
s32 i;
- struct Pokenav2Struct * unk = GetSubstructPtr(2);
+ struct Pokenav2Struct *optionIcons = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
for (i = 0; i < MAX_POKENAV_MENUITEMS; i++)
{
- if (unk->iconVisible[i])
+ if (optionIcons->iconVisible[i])
{
- if (unk->cursorPos != i)
- sub_81CA35C(unk->iconSprites[i], 0x8C, 0x100, 0x8);
+ if (optionIcons->cursorPos != i)
+ SetMenuOptionGfxParamsInactive(optionIcons->iconSprites[i], 0x8C, 0x100, 0x8);
else
- sub_81CA3B4(unk->iconSprites[i]);
+ SetMenuOptionGfxParamsActive(optionIcons->iconSprites[i]);
}
}
}
@@ -913,40 +915,40 @@ static void sub_81CA2DC(void)
static bool32 AreMenuOptionSpritesMoving(void)
{
s32 i;
- struct Pokenav2Struct * unk = GetSubstructPtr(2);
+ struct Pokenav2Struct *icons = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
for (i = 0; i < MAX_POKENAV_MENUITEMS; i++)
{
- if (unk->iconSprites[i][0]->callback != SpriteCallbackDummy)
+ if (icons->iconSprites[i][0]->callback != SpriteCallbackDummy)
return TRUE;
}
- if (unk->otherIconsInMotion)
+ if (icons->otherIconsInMotion)
return TRUE;
return FALSE;
}
-static void sub_81CA35C(struct Sprite ** sprites, s32 a1, s32 a2, s32 a3)
+static void SetMenuOptionGfxParamsInactive(struct Sprite ** sprites, s32 x, s32 a2, s32 a3)
{
s32 i;
for (i = 0; i < 4; i++)
{
- (*sprites)->pos1.x = a1;
+ (*sprites)->pos1.x = x;
(*sprites)->data[0] = a3;
- (*sprites)->data[1] = 16 * (a2 - a1) / a3;
- (*sprites)->data[2] = 16 * a1;
+ (*sprites)->data[1] = 16 * (a2 - x) / a3;
+ (*sprites)->data[2] = 16 * x;
(*sprites)->data[7] = a2;
(*sprites)->callback = sub_81CA474;
sprites++;
}
}
-static void sub_81CA3B4(struct Sprite ** sprites)
+static void SetMenuOptionGfxParamsActive(struct Sprite ** sprites)
{
s32 i;
- struct Pokenav2Struct * unk = GetSubstructPtr(2);
+ struct Pokenav2Struct * unk = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
u8 taskId;
for (i = 0; i < 4; i++)
@@ -968,13 +970,13 @@ static void sub_81CA3B4(struct Sprite ** sprites)
unk->otherIconsInMotion++;
}
-static void sub_81CA448(struct Sprite ** sprites, bool32 a1)
+static void SetMenuOptionGfxInvisibility(struct Sprite ** sprites, bool32 invisible)
{
s32 i;
for (i = 0; i < 4; i++)
{
- (*sprites)->invisible = a1;
+ (*sprites)->invisible = invisible;
sprites++;
}
}
@@ -1078,7 +1080,7 @@ static void sub_81CA580(u8 taskId)
data[4]++;
if (data[4] == 12)
{
- ((struct Pokenav2Struct *)GetSubstructPtr(2))->otherIconsInMotion--;
+ ((struct Pokenav2Struct *)GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS))->otherIconsInMotion--;
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0x00, 0x10));
DestroyTask(taskId);
}
@@ -1089,24 +1091,24 @@ static void sub_81CA580(u8 taskId)
data[0]--;
}
-static void sub_81CA640(void)
+static void CreateMatchCallBlueLightSprite(void)
{
- struct Pokenav2Struct * ptr = GetSubstructPtr(2);
- u8 spriteId = CreateSprite(&gUnknown_0862036C, 0x10, 0x60, 4);
- ptr->field_028 = &gSprites[spriteId];
- if (sub_81C98D4())
- ptr->field_028->callback = sub_81CA6AC;
+ struct Pokenav2Struct * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
+ u8 spriteId = CreateSprite(&sMatchCallBlueLightSpriteTemplate, 0x10, 0x60, 4);
+ ptr->blueLightSpriteId = &gSprites[spriteId];
+ if (PlayerHasTrainerRematches())
+ ptr->blueLightSpriteId->callback = SpriteCB_BlinkingBlueLight;
else
- ptr->field_028->invisible = TRUE;
+ ptr->blueLightSpriteId->invisible = TRUE;
}
-static void sub_81CA698(void)
+static void DestroyRematchBlueLightSpriteId(void)
{
- struct Pokenav2Struct * ptr = GetSubstructPtr(2);
- DestroySprite(ptr->field_028);
+ struct Pokenav2Struct *ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
+ DestroySprite(ptr->blueLightSpriteId);
}
-static void sub_81CA6AC(struct Sprite * sprite)
+static void SpriteCB_BlinkingBlueLight(struct Sprite * sprite)
{
sprite->data[0]++;
if (sprite->data[0] > 8)
@@ -1118,7 +1120,7 @@ static void sub_81CA6AC(struct Sprite * sprite)
static void AddOptionDescriptionWindow(void)
{
- struct Pokenav2Struct * ptr = GetSubstructPtr(2);
+ struct Pokenav2Struct * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
ptr->optionDescWindowId = AddWindow(&sOptionDescWindowTemplate);
PutWindowTilemap(ptr->optionDescWindowId);
@@ -1128,7 +1130,7 @@ static void AddOptionDescriptionWindow(void)
static void PrintCurrentOptionDescription(void)
{
- struct Pokenav2Struct * ptr = GetSubstructPtr(2);
+ struct Pokenav2Struct * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
int menuItem = GetCurrentMenuItemId();
const u8 * s = sPageDescriptions[menuItem];
u32 width = GetStringWidth(1, s, -1);
@@ -1140,73 +1142,73 @@ static void PrintCurrentOptionDescription(void)
// Can occur by obtaining a mon with a ribbon and then releasing all ribbon winners
static void PrintNoRibbonWinners(void)
{
- struct Pokenav2Struct * ptr = GetSubstructPtr(2);
+ struct Pokenav2Struct * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
const u8 * s = gText_NoRibbonWinners;
u32 width = GetStringWidth(1, s, -1);
FillWindowPixelBuffer(ptr->optionDescWindowId, PIXEL_FILL(6));
AddTextPrinterParameterized3(ptr->optionDescWindowId, 1, (192 - width) / 2, 1, sOptionDescTextColors2, 0, s);
}
-static bool32 sub_81CA7C4(void)
+static bool32 IsDma3ManagerBusyWithBgCopy_(void)
{
return IsDma3ManagerBusyWithBgCopy();
}
-static void sub_81CA7D4(void)
+static void CreateMovingBgDotsTask(void)
{
- struct Pokenav2Struct * ptr = GetSubstructPtr(2);
- ptr->bg3ScrollTaskId = CreateTask(sub_81CA808, 2);
+ struct Pokenav2Struct * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
+ ptr->bg3ScrollTaskId = CreateTask(Task_MoveBgDots, 2);
}
-static void sub_81CA7F4(void)
+static void DestroyMovingDotsBgTask(void)
{
- struct Pokenav2Struct * ptr = GetSubstructPtr(2);
+ struct Pokenav2Struct * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_MENU_ICONS);
DestroyTask(ptr->bg3ScrollTaskId);
}
-static void sub_81CA808(u8 taskId)
+static void Task_MoveBgDots(u8 taskId)
{
ChangeBgX(3, 0x80, 1);
}
-static void sub_81CA818(void)
+static void CreateBgDotPurplePalTask(void)
{
- u8 taskId = CreateTask(sub_81CA8B0, 3);
- SetWordTaskArg(taskId, 1, (uintptr_t)(gUnknown_0861FC78 + 1));
- SetWordTaskArg(taskId, 3, (uintptr_t)(gUnknown_0861FC78 + 7));
+ u8 taskId = CreateTask(Task_UpdateBgDotsPalette, 3);
+ SetWordTaskArg(taskId, 1, (uintptr_t)(sPokenavBgDotsPal + 1));
+ SetWordTaskArg(taskId, 3, (uintptr_t)(sPokenavBgDotsPal + 7));
}
-static void sub_81CA850(void)
+static void ChangeBgDotsColorToPurple(void)
{
- CopyPaletteIntoBufferUnfaded(gUnknown_0861FC78 + 7, 0x31, 4);
+ CopyPaletteIntoBufferUnfaded(sPokenavBgDotsPal + 7, 0x31, 4);
}
-static void sub_81CA864(void)
+static void CreateBgDotLightBluePalTask(void)
{
- u8 taskId = CreateTask(sub_81CA8B0, 3);
- SetWordTaskArg(taskId, 1, (uintptr_t)(gUnknown_0861FC78 + 7));
- SetWordTaskArg(taskId, 3, (uintptr_t)(gUnknown_0861FC78 + 1));
+ u8 taskId = CreateTask(Task_UpdateBgDotsPalette, 3);
+ SetWordTaskArg(taskId, 1, (uintptr_t)(sPokenavBgDotsPal + 7));
+ SetWordTaskArg(taskId, 3, (uintptr_t)(sPokenavBgDotsPal + 1));
}
-static bool32 sub_81CA89C(void)
+static bool32 IsTaskActive_UpdateBgDotsPalette(void)
{
- return FuncIsActiveTask(sub_81CA8B0);
+ return FuncIsActiveTask(Task_UpdateBgDotsPalette);
}
-static void sub_81CA8B0(u8 taskId)
+static void Task_UpdateBgDotsPalette(u8 taskId)
{
u16 sp8[2];
s16 * data = gTasks[taskId].data;
const u16 * pal1 = (const u16 *)GetWordTaskArg(taskId, 1);
const u16 * pal2 = (const u16 *)GetWordTaskArg(taskId, 3);
- sub_81C79BC(pal1, pal2, 2, 12, ++data[0], sp8);
+ PokenavCopyPalette(pal1, pal2, 2, 12, ++data[0], sp8);
LoadPalette(sp8, 0x31, 4);
if (data[0] == 12)
DestroyTask(taskId);
}
-static void sub_81CA914(void)
+static void VBlankCB_PokenavMainMenu(void)
{
TransferPlttBuffer();
LoadOam();
@@ -1214,7 +1216,7 @@ static void sub_81CA914(void)
ScanlineEffect_InitHBlankDmaTransfer();
}
-static void sub_81CA92C(void)
+static void SetupPokenavMenuScanlineEffects(void)
{
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_OBJ | BLDCNT_EFFECT_LIGHTEN);
SetGpuReg(REG_OFFSET_BLDY, 0);
@@ -1223,33 +1225,33 @@ static void sub_81CA92C(void)
SetGpuRegBits(REG_OFFSET_WINOUT, 0x1F);
SetGpuRegBits(REG_OFFSET_WIN0V, 0xA0);
ScanlineEffect_Stop();
- sub_81CAA3C();
- ScanlineEffect_SetParams(gUnknown_08620384);
- SetVBlankCallback_(sub_81CA914);
- CreateTask(sub_81CA9EC, 3);
+ SetMenuOptionGlow();
+ ScanlineEffect_SetParams(sPokenavMainMenuScanlineEffectParams);
+ SetVBlankCallback_(VBlankCB_PokenavMainMenu);
+ CreateTask(Task_CurrentMenuOptionGlow, 3);
}
-static void sub_81CA994(void)
+static void DestroyMenuOptionGlowTask(void)
{
SetGpuReg(REG_OFFSET_BLDCNT, 0);
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
ScanlineEffect_Stop();
- DestroyTask(FindTaskIdByFunc(sub_81CA9EC));
+ DestroyTask(FindTaskIdByFunc(Task_CurrentMenuOptionGlow));
SetPokenavVBlankCallback();
}
-static void sub_81CA9C8(void)
+static void ResetBldCnt(void)
{
SetGpuReg(REG_OFFSET_BLDCNT, 0);
}
-static void sub_81CA9D8(void)
+static void InitMenuOptionGlow(void)
{
- sub_81CAA3C();
+ SetMenuOptionGlow();
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_OBJ | BLDCNT_EFFECT_LIGHTEN);
}
-static void sub_81CA9EC(u8 taskId)
+static void Task_CurrentMenuOptionGlow(u8 taskId)
{
s16 * data = gTasks[taskId].data;
data[0]++;
@@ -1262,18 +1264,18 @@ static void sub_81CA9EC(u8 taskId)
}
}
-static void sub_81CAA3C(void)
+static void SetMenuOptionGlow(void)
{
int menuType = GetPokenavMenuType();
int cursorPos = GetPokenavCursorPos();
- int r4 = gUnknown_08620240[menuType].unk2 * cursorPos + gUnknown_08620240[menuType].unk0 - 8;
+ int r4 = sPokenavMenuOptionLabelGfx[menuType].deltaY * cursorPos + sPokenavMenuOptionLabelGfx[menuType].yStart - 8;
CpuFill16(0, gScanlineEffectRegBuffers[0], 0x140);
CpuFill16(0, gScanlineEffectRegBuffers[1], 0x140);
CpuFill16(RGB(16, 23, 28), &gScanlineEffectRegBuffers[0][r4], 0x20);
CpuFill16(RGB(16, 23, 28), &gScanlineEffectRegBuffers[1][r4], 0x20);
}
-void sub_81CAADC(void)
+void ResetBldCnt_(void)
{
- sub_81CA9C8();
+ ResetBldCnt();
}
diff --git a/src/pokenav_region_map.c b/src/pokenav_region_map.c
index e858fad4a..2dd2e4408 100755
--- a/src/pokenav_region_map.c
+++ b/src/pokenav_region_map.c
@@ -170,11 +170,11 @@ static const struct SpriteTemplate sCityZoomTextSpriteTemplate =
u32 PokenavCallback_Init_RegionMap(void)
{
- struct Pokenav5Struct *state = AllocSubstruct(3, sizeof(struct Pokenav5Struct));
+ struct Pokenav5Struct *state = AllocSubstruct(POKENAV_SUBSTRUCT_REGION_MAP_STATE, sizeof(struct Pokenav5Struct));
if (!state)
return FALSE;
- if (!AllocSubstruct(16, sizeof(struct RegionMap)))
+ if (!AllocSubstruct(POKENAV_SUBSTRUCT_REGION_MAP, sizeof(struct RegionMap)))
return FALSE;
state->zoomDisabled = IsEventIslandMapSecId(gMapHeader.regionMapSectionId);
@@ -189,13 +189,13 @@ u32 PokenavCallback_Init_RegionMap(void)
void FreeRegionMapSubstruct1(void)
{
gSaveBlock2Ptr->regionMapZoom = IsRegionMapZoomed();
- FreePokenavSubstruct(16);
- FreePokenavSubstruct(3);
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_REGION_MAP);
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_REGION_MAP_STATE);
}
u32 GetRegionMapCallback(void)
{
- struct Pokenav5Struct *state = GetSubstructPtr(3);
+ struct Pokenav5Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_REGION_MAP_STATE);
return state->callback(state);
}
@@ -219,7 +219,7 @@ static u32 HandleRegionMapInput(struct Pokenav5Struct *state)
static u32 HandleRegionMapInputZoomDisabled(struct Pokenav5Struct *state)
{
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
state->callback = GetExitRegionMapMenuId;
return POKENAV_MAP_FUNC_EXIT;
@@ -235,13 +235,13 @@ static u32 GetExitRegionMapMenuId(struct Pokenav5Struct *state)
bool32 GetZoomDisabled(void)
{
- struct Pokenav5Struct *state = GetSubstructPtr(3);
+ struct Pokenav5Struct *state = GetSubstructPtr(POKENAV_SUBSTRUCT_REGION_MAP_STATE);
return state->zoomDisabled;
}
bool32 OpenPokenavRegionMap(void)
{
- struct Pokenav5Struct_2 *state = AllocSubstruct(4, sizeof(struct Pokenav5Struct_2));
+ struct Pokenav5Struct_2 *state = AllocSubstruct(POKENAV_SUBSTRUCT_REGION_MAP_ZOOM, sizeof(struct Pokenav5Struct_2));
if (!state)
return FALSE;
@@ -252,25 +252,25 @@ bool32 OpenPokenavRegionMap(void)
void CreateRegionMapLoopedTask(s32 index)
{
- struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(POKENAV_SUBSTRUCT_REGION_MAP_ZOOM);
state->loopTaskId = CreateLoopedTask(sRegionMapLoopTaskFuncs[index], 1);
state->isTaskActiveCB = GetCurrentLoopedTaskActive;
}
bool32 IsRegionMapLoopedTaskActive(void)
{
- struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(POKENAV_SUBSTRUCT_REGION_MAP_ZOOM);
return state->isTaskActiveCB();
}
void FreeRegionMapSubstruct2(void)
{
- struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(POKENAV_SUBSTRUCT_REGION_MAP_ZOOM);
FreeRegionMapIconResources();
FreeCityZoomViewGfx();
RemoveWindow(state->infoWindowId);
- FreePokenavSubstruct(16);
- FreePokenavSubstruct(4);
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_REGION_MAP);
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_REGION_MAP_ZOOM);
SetPokenavVBlankCallback();
SetBgMode(0);
}
@@ -285,7 +285,7 @@ static void VBlankCB_RegionMap(void)
static bool32 GetCurrentLoopedTaskActive(void)
{
- struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(POKENAV_SUBSTRUCT_REGION_MAP_ZOOM);
return IsLoopedTaskActive(state->loopTaskId);
}
@@ -301,7 +301,7 @@ static u32 LoopedTask_OpenRegionMap(s32 taskState)
{
int menuGfxId;
struct RegionMap *regionMap;
- struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(POKENAV_SUBSTRUCT_REGION_MAP_ZOOM);
switch (taskState)
{
case 0:
@@ -311,7 +311,7 @@ static u32 LoopedTask_OpenRegionMap(s32 taskState)
HideBg(3);
SetBgMode(1);
InitBgTemplates(sRegionMapBgTemplates, ARRAY_COUNT(sRegionMapBgTemplates) - 1);
- regionMap = GetSubstructPtr(16);
+ regionMap = GetSubstructPtr(POKENAV_SUBSTRUCT_REGION_MAP);
InitRegionMapData(regionMap, &sRegionMapBgTemplates[1], ShouldOpenRegionMapZoomed());
LoadCityZoomViewGfx();
return LT_INC_AND_PAUSE;
@@ -361,11 +361,11 @@ static u32 LoopedTask_OpenRegionMap(s32 taskState)
menuGfxId = POKENAV_GFX_MAP_MENU_ZOOMED_IN;
LoadLeftHeaderGfxForIndex(menuGfxId);
- sub_81C7FA0(menuGfxId, 1, 1);
+ ShowLeftHeaderGfx(menuGfxId, 1, 1);
PokenavFadeScreen(1);
return LT_INC_AND_PAUSE;
case 7:
- if (IsPaletteFadeActive() || sub_81C8010())
+ if (IsPaletteFadeActive() || AreLeftHeaderSpritesMoving())
return LT_PAUSE;
return LT_INC_AND_CONTINUE;
default:
@@ -375,7 +375,7 @@ static u32 LoopedTask_OpenRegionMap(s32 taskState)
static u32 LoopedTask_UpdateInfoAfterCursorMove(s32 taskState)
{
- struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(POKENAV_SUBSTRUCT_REGION_MAP_ZOOM);
switch (taskState)
{
case 0:
@@ -409,7 +409,7 @@ static u32 LoopedTask_RegionMapZoomOut(s32 taskState)
if (WaitForHelpBar())
return LT_PAUSE;
- sub_81C7E14(POKENAV_GFX_MAP_MENU_ZOOMED_OUT);
+ UpdateRegionMapRightHeaderTiles(POKENAV_GFX_MAP_MENU_ZOOMED_OUT);
break;
}
@@ -418,7 +418,7 @@ static u32 LoopedTask_RegionMapZoomOut(s32 taskState)
static u32 LoopedTask_RegionMapZoomIn(s32 taskState)
{
- struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(POKENAV_SUBSTRUCT_REGION_MAP_ZOOM);
switch (taskState)
{
case 0:
@@ -442,7 +442,7 @@ static u32 LoopedTask_RegionMapZoomIn(s32 taskState)
if (WaitForHelpBar())
return LT_PAUSE;
- sub_81C7E14(POKENAV_GFX_MAP_MENU_ZOOMED_IN);
+ UpdateRegionMapRightHeaderTiles(POKENAV_GFX_MAP_MENU_ZOOMED_IN);
break;
}
@@ -461,8 +461,8 @@ static u32 LoopedTask_ExitRegionMap(s32 taskState)
if (IsPaletteFadeActive())
return LT_PAUSE;
- sub_81C7FDC();
- sub_81C78A0();
+ SetLeftHeaderSpritesInvisibility();
+ SlideMenuHeaderDown();
return LT_INC_AND_PAUSE;
case 2:
if (MainMenuLoopedTaskIsBusy())
@@ -490,7 +490,7 @@ static void LoadCityZoomViewGfx(void)
static void FreeCityZoomViewGfx(void)
{
int i;
- struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(POKENAV_SUBSTRUCT_REGION_MAP_ZOOM);
FreeSpriteTilesByTag(6);
FreeSpritePaletteByTag(11);
for (i = 0; i < (int)ARRAY_COUNT(state->cityZoomTextSprites); i++)
@@ -527,7 +527,7 @@ static bool32 TryFreeTempTileDataBuffers(void)
static void UpdateMapSecInfoWindow(struct Pokenav5Struct_2 *state)
{
- struct RegionMap *regionMap = GetSubstructPtr(16);
+ struct RegionMap *regionMap = GetSubstructPtr(POKENAV_SUBSTRUCT_REGION_MAP);
switch (regionMap->mapSecType)
{
case MAPSECTYPE_CITY_CANFLY:
@@ -619,7 +619,7 @@ static bool32 IsDecompressCityMapsActive(void)
static u32 LoopedTask_DecompressCityMaps(s32 taskState)
{
- struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(POKENAV_SUBSTRUCT_REGION_MAP_ZOOM);
if (taskState < NUM_CITY_MAPS)
{
LZ77UnCompWram(sPokenavCityMaps[taskState].tilemap, state->cityZoomPics[taskState]);
@@ -662,7 +662,7 @@ static void CreateCityZoomTextSprites(void)
int i;
int y;
struct Sprite *sprite;
- struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(POKENAV_SUBSTRUCT_REGION_MAP_ZOOM);
// When not zoomed in the text is still created but its pushed off screen
if (!IsRegionMapZoomed())
@@ -722,7 +722,7 @@ static void SpriteCB_CityZoomText(struct Sprite *sprite)
static void UpdateCityZoomTextPosition(void)
{
int i;
- struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ 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;
@@ -731,7 +731,7 @@ static void UpdateCityZoomTextPosition(void)
static void SetCityZoomTextInvisibility(bool32 invisible)
{
int i;
- struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
+ struct Pokenav5Struct_2 *state = GetSubstructPtr(POKENAV_SUBSTRUCT_REGION_MAP_ZOOM);
for (i = 0; i < (int)ARRAY_COUNT(state->cityZoomTextSprites); i++)
state->cityZoomTextSprites[i]->invisible = invisible;
}
diff --git a/src/pokenav_ribbons_1.c b/src/pokenav_ribbons_1.c
index aad0053a8..9c171dd45 100644
--- a/src/pokenav_ribbons_1.c
+++ b/src/pokenav_ribbons_1.c
@@ -8,16 +8,28 @@
#include "international_string_util.h"
#include "constants/songs.h"
+enum
+{
+ RIBBONS_MON_LIST_FUNC_NONE,
+ RIBBONS_MON_LIST_FUNC_MOVE_UP,
+ RIBBONS_MON_LIST_FUNC_MOVE_DOWN,
+ RIBBONS_MON_LIST_FUNC_PAGE_UP,
+ RIBBONS_MON_LIST_FUNC_PAGE_DOWN,
+ RIBBONS_MON_LIST_FUNC_EXIT,
+ RIBBONS_MON_LIST_FUNC_OPEN_RIBBONS_SUMMARY
+};
+
+
struct PokenavSub9
{
- u32 (*unk0)(struct PokenavSub9*);
+ u32 (*callback)(struct PokenavSub9*);
u32 loopedTaskId;
u16 winid;
- s32 unkC;
- s32 unk10;
- u32 unk14;
- u32 unk18;
- struct PokenavSub18 *unk1C;
+ s32 boxId;
+ s32 monId;
+ u32 changeBgs;
+ u32 saveMonList;
+ struct PokenavSub18 *monList;
};
struct PokenavSub10
@@ -25,46 +37,46 @@ struct PokenavSub10
bool32 (*callback)(void);
u32 ltid;
u16 winid;
- bool32 unkC;
+ bool32 fromSummary;
u8 buff[BG_SCREEN_SIZE];
};
-static u32 sub_81CFA68(struct PokenavSub9 *structPtr);
-static u32 sub_81CFA88(struct PokenavSub9 *structPtr);
-static u32 sub_81CFB08(struct PokenavSub9 *structPtr);
+static u32 HandleRibbonsMonListInput_WaitListInit(struct PokenavSub9 *structPtr);
+static u32 HandleRibbonsMonListInput(struct PokenavSub9 *structPtr);
+static u32 RibbonsMonMenu_ReturnToMainMenu(struct PokenavSub9 *structPtr);
static u32 sub_81CFB10(struct PokenavSub9 *structPtr);
-static u32 sub_81CFB8C(s32 state);
-static u32 sub_81CFC2C(s32 state);
-static u32 sub_81CFC40(s32 state);
-static u32 sub_81CFB74(s32 state);
+static u32 BuildPartyMonRibbonList(s32 state);
+static u32 InitBoxMonRibbonList(s32 state);
+static u32 BuildBoxMonRibbonList(s32 state);
+static u32 GetMonRibbonListLoopTaskFunc(s32 state);
static void sub_81CFCEC(struct PokenavSub9 *structPtr, struct PokenavMonList *item);
-static u32 sub_81CFEB8(s32 state);
-static bool32 sub_81CFE84(void);
-static u32 sub_81CFFFC(s32 state);
-static u32 sub_81D0074(s32 state);
-static u32 sub_81D00EC(s32 state);
-static u32 sub_81D0164(s32 state);
-static u32 sub_81D01DC(s32 state);
-static u32 sub_81D021C(s32 state);
+static u32 LoopedTask_OpenRibbonsMonList(s32 state);
+static bool32 GetRibbonsMonCurrentLoopedTaskActive(void);
+static u32 LoopedTask_RibbonsListMoveCursorUp(s32 state);
+static u32 LoopedTask_RibbonsListMoveCursorDown(s32 state);
+static u32 LoopedTask_RibbonsListMovePageUp(s32 state);
+static u32 LoopedTask_RibbonsListMovePageDown(s32 state);
+static u32 LoopedTask_RibbonsListReturnToMainMenu(s32 state);
+static u32 LoopedTask_RibbonsListOpenSummary(s32 state);
static void sub_81D02B0(s32 windowId, s32 val1, s32 val2);
-static void sub_81D024C(struct PokenavSub10 *ptr);
+static void AddRibbonsMonListWindow(struct PokenavSub10 *ptr);
static void sub_81D0288(struct PokenavSub10 *ptr);
-static void sub_81D0304(void);
+static void InitMonRibbonPokenavListMenuTemplate(void);
static void BufferRibbonMonInfoText(struct PokenavMonList *, u8 *);
-static const LoopedTask gUnknown_086235D8[] =
+static const LoopedTask sMonRibbonListLoopTaskFuncs[] =
{
- sub_81CFB8C,
- sub_81CFC2C,
- sub_81CFC40
+ BuildPartyMonRibbonList,
+ InitBoxMonRibbonList,
+ BuildBoxMonRibbonList
};
-static const u16 gUnknown_086235E4[] = INCBIN_U16("graphics/pokenav/ui_ribbons.gbapal");
-static const u32 gUnknown_08623604[] = INCBIN_U32("graphics/pokenav/ui_ribbons.4bpp.lz");
-static const u32 gUnknown_086236CC[] = INCBIN_U32("graphics/pokenav/ui_ribbons.bin.lz");
+static const u16 sMonRibbonListFramePal[] = INCBIN_U16("graphics/pokenav/ui_ribbons.gbapal");
+static const u32 sMonRibbonListFrameTiles[] = INCBIN_U32("graphics/pokenav/ui_ribbons.4bpp.lz");
+static const u32 sMonRibbonListFrameTilemap[] = INCBIN_U32("graphics/pokenav/ui_ribbons.bin.lz");
static const u16 gUnknown_08623790[] = INCBIN_U16("graphics/pokenav/8623790.gbapal");
-static const struct BgTemplate gUnknown_086237B0[] =
+static const struct BgTemplate sMonRibbonListBgTemplates[] =
{
{
.bg = 1,
@@ -85,18 +97,18 @@ static const struct BgTemplate gUnknown_086237B0[] =
}
};
-static const LoopedTask gUnknown_086237B8[] =
+static const LoopedTask sRibbonsMonMenuLoopTaskFuncs[] =
{
- NULL,
- sub_81CFFFC,
- sub_81D0074,
- sub_81D00EC,
- sub_81D0164,
- sub_81D01DC,
- sub_81D021C
+ [RIBBONS_MON_LIST_FUNC_NONE] = NULL,
+ [RIBBONS_MON_LIST_FUNC_MOVE_UP] = LoopedTask_RibbonsListMoveCursorUp,
+ [RIBBONS_MON_LIST_FUNC_MOVE_DOWN] = LoopedTask_RibbonsListMoveCursorDown,
+ [RIBBONS_MON_LIST_FUNC_PAGE_UP] = LoopedTask_RibbonsListMovePageUp,
+ [RIBBONS_MON_LIST_FUNC_PAGE_DOWN] = LoopedTask_RibbonsListMovePageDown,
+ [RIBBONS_MON_LIST_FUNC_EXIT] = LoopedTask_RibbonsListReturnToMainMenu,
+ [RIBBONS_MON_LIST_FUNC_OPEN_RIBBONS_SUMMARY] = LoopedTask_RibbonsListOpenSummary
};
-static const struct WindowTemplate gUnknown_086237D4 =
+static const struct WindowTemplate sRibbonsMonListWindowTemplate =
{
.bg = 1,
.tilemapLeft = 1,
@@ -111,135 +123,136 @@ static const u8 sText_MaleSymbol[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_RED}{WHIT
static const u8 sText_FemaleSymbol[] = _("{COLOR_HIGHLIGHT_SHADOW}{LIGHT_GREEN}{WHITE}{BLUE}♀{COLOR_HIGHLIGHT_SHADOW}{DARK_GREY}{WHITE}{LIGHT_GREY}");
static const u8 sText_NoGenderSymbol[] = _("{UNK_SPACER}");
-bool32 PokenavCallback_Init_12(void)
+bool32 PokenavCallback_Init_MonRibbonList(void)
{
- struct PokenavSub9 *structPtr = AllocSubstruct(9, sizeof(struct PokenavSub9));
+ struct PokenavSub9 *structPtr = AllocSubstruct(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST, sizeof(struct PokenavSub9));
if (structPtr == NULL)
return FALSE;
- structPtr->unk1C = AllocSubstruct(18, sizeof(struct PokenavSub18));
- if (structPtr->unk1C == NULL)
+ structPtr->monList = AllocSubstruct(POKENAV_SUBSTRUCT_MON_LIST, sizeof(struct PokenavSub18));
+ if (structPtr->monList == NULL)
return FALSE;
- structPtr->unk0 = sub_81CFA68;
- structPtr->loopedTaskId = CreateLoopedTask(sub_81CFB74, 1);
- structPtr->unk14 = 0;
+ structPtr->callback = HandleRibbonsMonListInput_WaitListInit;
+ structPtr->loopedTaskId = CreateLoopedTask(GetMonRibbonListLoopTaskFunc, 1);
+ structPtr->changeBgs = 0;
return TRUE;
}
-bool32 PokenavCallback_Init_14(void)
+bool32 PokenavCallback_Init_RibbonsMonListFromSummary(void)
{
- struct PokenavSub9 *structPtr = AllocSubstruct(9, sizeof(struct PokenavSub9));
+ struct PokenavSub9 *structPtr = AllocSubstruct(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST, sizeof(struct PokenavSub9));
if (structPtr == NULL)
return FALSE;
- structPtr->unk1C = GetSubstructPtr(18);
- structPtr->unk0 = sub_81CFA88;
- structPtr->unk14 = 1;
+ structPtr->monList = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
+ structPtr->callback = HandleRibbonsMonListInput;
+ structPtr->changeBgs = 1;
return TRUE;
}
-u32 sub_81CFA34(void)
+u32 GetRibbonsMonListCallback(void)
{
- struct PokenavSub9 *structPtr = GetSubstructPtr(9);
- return structPtr->unk0(structPtr);
+ struct PokenavSub9 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
+ return structPtr->callback(structPtr);
}
-void sub_81CFA48(void)
+void FreeRibbonsMonList1(void)
{
- struct PokenavSub9 *structPtr = GetSubstructPtr(9);
- if (!structPtr->unk18)
- FreePokenavSubstruct(18);
- FreePokenavSubstruct(9);
+ struct PokenavSub9 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
+ if (!structPtr->saveMonList)
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_MON_LIST);
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
}
-static u32 sub_81CFA68(struct PokenavSub9 *structPtr)
+static u32 HandleRibbonsMonListInput_WaitListInit(struct PokenavSub9 *structPtr)
{
if (!IsLoopedTaskActive(structPtr->loopedTaskId))
- structPtr->unk0 = sub_81CFA88;
+ structPtr->callback = HandleRibbonsMonListInput;
return 0;
}
-static u32 sub_81CFA88(struct PokenavSub9 *structPtr)
+static u32 HandleRibbonsMonListInput(struct PokenavSub9 *structPtr)
{
- if (gMain.newAndRepeatedKeys & DPAD_UP)
- return 1;
- if (gMain.newAndRepeatedKeys & DPAD_DOWN)
- return 2;
- if (gMain.newKeys & DPAD_LEFT)
- return 3;
- if (gMain.newKeys & DPAD_RIGHT)
- return 4;
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_REPEAT(DPAD_UP))
+ return RIBBONS_MON_LIST_FUNC_MOVE_UP;
+ if (JOY_REPEAT(DPAD_DOWN))
+ return RIBBONS_MON_LIST_FUNC_MOVE_DOWN;
+ if (JOY_NEW(DPAD_LEFT))
+ return RIBBONS_MON_LIST_FUNC_PAGE_UP;
+ if (JOY_NEW(DPAD_RIGHT))
+ return RIBBONS_MON_LIST_FUNC_PAGE_DOWN;
+ if (JOY_NEW(B_BUTTON))
{
- structPtr->unk18 = 0;
- structPtr->unk0 = sub_81CFB08;
- return 5;
+ structPtr->saveMonList = 0;
+ structPtr->callback = RibbonsMonMenu_ReturnToMainMenu;
+ return RIBBONS_MON_LIST_FUNC_EXIT;
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
- structPtr->unk1C->unk2 = GetSelectedMatchCall();
- structPtr->unk18 = 1;
- structPtr->unk0 = sub_81CFB10;
- return 6;
+ structPtr->monList->currIndex = GetSelectedPokenavListIndex();
+ structPtr->saveMonList = 1;
+ structPtr->callback = sub_81CFB10;
+ return RIBBONS_MON_LIST_FUNC_OPEN_RIBBONS_SUMMARY;
}
- return 0;
+ return RIBBONS_MON_LIST_FUNC_NONE;
}
-static u32 sub_81CFB08(struct PokenavSub9 *structPtr)
+static u32 RibbonsMonMenu_ReturnToMainMenu(struct PokenavSub9 *structPtr)
{
return POKENAV_MAIN_MENU_CURSOR_ON_RIBBONS;
}
static u32 sub_81CFB10(struct PokenavSub9 *structPtr)
{
- return POKENAV_MENU_D;
+ return POKENAV_RIBBONS_SUMMARY_SCREEN;
}
-static u32 sub_81CFB18(void)
+static u32 UpdateMonListBgs(void)
{
- struct PokenavSub9 *structPtr = GetSubstructPtr(9);
- return structPtr->unk14;
+ struct PokenavSub9 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
+ return structPtr->changeBgs;
}
-static struct PokenavMonList * sub_81CFB28(void)
+static struct PokenavMonList *GetMonRibbonMonListData(void)
{
- struct PokenavSub9 * ptr = GetSubstructPtr(9);
- return ptr->unk1C->unk4;
+ struct PokenavSub9 * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
+ return ptr->monList->monData;
}
-static s32 sub_81CFB38(void)
+static s32 GetRibbonsMonListCount(void)
{
- struct PokenavSub9 * ptr = GetSubstructPtr(9);
- return ptr->unk1C->unk0;
+ struct PokenavSub9 * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
+ return ptr->monList->listCount;
}
-static s32 sub_81CFB48(void)
+//unused
+static s32 GetMonRibbonSelectedMonData(void)
{
- struct PokenavSub9 * ptr = GetSubstructPtr(9);
- s32 idx = GetSelectedMatchCall();
- return ptr->unk1C->unk4[idx].data;
+ struct PokenavSub9 * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
+ s32 idx = GetSelectedPokenavListIndex();
+ return ptr->monList->monData[idx].data;
}
-static s32 sub_81CFB64(void)
+static s32 GetRibbonListMenuCurrIndex(void)
{
- struct PokenavSub9 * ptr = GetSubstructPtr(9);
- return ptr->unk1C->unk2;
+ struct PokenavSub9 * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
+ return ptr->monList->currIndex;
}
-static u32 sub_81CFB74(s32 state)
+static u32 GetMonRibbonListLoopTaskFunc(s32 state)
{
- return gUnknown_086235D8[state](state);
+ return sMonRibbonListLoopTaskFuncs[state](state);
}
-static u32 sub_81CFB8C(s32 state)
+static u32 BuildPartyMonRibbonList(s32 state)
{
s32 i;
struct PokenavMonList item;
- struct PokenavSub9 * ptr = GetSubstructPtr(9);
+ struct PokenavSub9 * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
- ptr->unk1C->unk0 = 0;
- ptr->unk1C->unk2 = 0;
+ ptr->monList->listCount = 0;
+ ptr->monList->currIndex = 0;
item.boxId = TOTAL_BOXES_COUNT;
for (i = 0; i < PARTY_SIZE; i++)
{
@@ -261,19 +274,19 @@ static u32 sub_81CFB8C(s32 state)
return LT_INC_AND_CONTINUE;
}
-static u32 sub_81CFC2C(s32 state)
+static u32 InitBoxMonRibbonList(s32 state)
{
- struct PokenavSub9 * ptr = GetSubstructPtr(9);
- ptr->unk10 = 0;
- ptr->unkC = 0;
+ struct PokenavSub9 *ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
+ ptr->monId = 0;
+ ptr->boxId = 0;
return LT_INC_AND_CONTINUE;
}
-static u32 sub_81CFC40(s32 state)
+static u32 BuildBoxMonRibbonList(s32 state)
{
- struct PokenavSub9 * ptr = GetSubstructPtr(9);
- s32 boxId = ptr->unkC;
- s32 monId = ptr->unk10;
+ struct PokenavSub9 * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_LIST);
+ s32 boxId = ptr->boxId;
+ s32 monId = ptr->monId;
s32 boxCount = 0;
struct PokenavMonList item;
@@ -296,8 +309,8 @@ static u32 sub_81CFC40(s32 state)
monId++;
if (boxCount > TOTAL_BOXES_COUNT)
{
- ptr->unkC = boxId;
- ptr->unk10 = monId;
+ ptr->boxId = boxId;
+ ptr->monId = monId;
return LT_CONTINUE;
}
}
@@ -305,37 +318,38 @@ static u32 sub_81CFC40(s32 state)
boxId++;
}
- ptr->unk14 = 1;
+ ptr->changeBgs = 1;
return LT_FINISH;
}
static void sub_81CFCEC(struct PokenavSub9 *structPtr, struct PokenavMonList *item)
{
u32 left = 0;
- u32 right = structPtr->unk1C->unk0;
+ u32 right = structPtr->monList->listCount;
u32 insertionIdx = left + (right - left) / 2;
while (right != insertionIdx)
{
- if (item->data > structPtr->unk1C->unk4[insertionIdx].data)
+ if (item->data > structPtr->monList->monData[insertionIdx].data)
right = insertionIdx;
else
left = insertionIdx + 1;
insertionIdx = left + (right - left) / 2;
}
- for (right = structPtr->unk1C->unk0; right > insertionIdx; right--)
- structPtr->unk1C->unk4[right] = structPtr->unk1C->unk4[right - 1];
- structPtr->unk1C->unk4[insertionIdx] = *item;
- structPtr->unk1C->unk0++;
+ for (right = structPtr->monList->listCount; right > insertionIdx; right--)
+ structPtr->monList->monData[right] = structPtr->monList->monData[right - 1];
+ structPtr->monList->monData[insertionIdx] = *item;
+ structPtr->monList->listCount++;
}
-static bool32 sub_81CFD58(void)
+//unused
+static bool32 Unused_PlayerHasRibbonsMon(void)
{
s32 i, j;
for (i = 0; i < PARTY_SIZE; i++)
{
- struct Pokemon * mon = &gPlayerParty[i];
+ struct Pokemon *mon = &gPlayerParty[i];
if (!GetMonData(mon, MON_DATA_SANITY_HAS_SPECIES))
continue;
if (GetMonData(mon, MON_DATA_SANITY_IS_EGG))
@@ -358,72 +372,72 @@ static bool32 sub_81CFD58(void)
return FALSE;
}
-bool32 sub_81CFDD0(void)
+bool32 OpenRibbonsMonList(void)
{
- struct PokenavSub10 * ptr = AllocSubstruct(10, sizeof(struct PokenavSub10));
+ struct PokenavSub10 *ptr = AllocSubstruct(POKENAV_SUBSTRUCT_RIBBONS_MON_MENU, sizeof(struct PokenavSub10));
if (ptr == NULL)
return FALSE;
- ptr->ltid = CreateLoopedTask(sub_81CFEB8, 1);
- ptr->callback = sub_81CFE84;
- ptr->unkC = FALSE;
+ ptr->ltid = CreateLoopedTask(LoopedTask_OpenRibbonsMonList, 1);
+ ptr->callback = GetRibbonsMonCurrentLoopedTaskActive;
+ ptr->fromSummary = FALSE;
return TRUE;
}
-bool32 sub_81CFE08(void)
+bool32 OpenRibbonsMonListFromRibbonsSummary(void)
{
- struct PokenavSub10 * ptr = AllocSubstruct(10, sizeof(struct PokenavSub10));
- if (ptr == NULL)
+ struct PokenavSub10 *monMenu = AllocSubstruct(POKENAV_SUBSTRUCT_RIBBONS_MON_MENU, sizeof(struct PokenavSub10));
+ if (monMenu == NULL)
return FALSE;
- ptr->ltid = CreateLoopedTask(sub_81CFEB8, 1);
- ptr->callback = sub_81CFE84;
- ptr->unkC = TRUE;
+ monMenu->ltid = CreateLoopedTask(LoopedTask_OpenRibbonsMonList, 1);
+ monMenu->callback = GetRibbonsMonCurrentLoopedTaskActive;
+ monMenu->fromSummary = TRUE;
return TRUE;
}
-void sub_81CFE40(s32 idx)
+void CreateRibbonsMonListLoopedTask(s32 idx)
{
- struct PokenavSub10 * ptr = GetSubstructPtr(10);
- ptr->ltid = CreateLoopedTask(gUnknown_086237B8[idx], 1);
- ptr->callback = sub_81CFE84;
+ struct PokenavSub10 *monMenu = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_MENU);
+ monMenu->ltid = CreateLoopedTask(sRibbonsMonMenuLoopTaskFuncs[idx], 1);
+ monMenu->callback = GetRibbonsMonCurrentLoopedTaskActive;
}
-bool32 sub_81CFE70(void)
+bool32 IsRibbonsMonListLoopedTaskActive(void)
{
- struct PokenavSub10 * ptr = GetSubstructPtr(10);
- return ptr->callback();
+ struct PokenavSub10 *monMenu = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_MENU);
+ return monMenu->callback();
}
-bool32 sub_81CFE84(void)
+bool32 GetRibbonsMonCurrentLoopedTaskActive(void)
{
- struct PokenavSub10 * ptr = GetSubstructPtr(10);
+ struct PokenavSub10 * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_MENU);
return IsLoopedTaskActive(ptr->ltid);
}
-void sub_81CFE98(void)
+void FreeRibbonsMonList2(void)
{
- struct PokenavSub10 * ptr = GetSubstructPtr(10);
+ struct PokenavSub10 * ptr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_MENU);
sub_81C8234();
RemoveWindow(ptr->winid);
- FreePokenavSubstruct(10);
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_RIBBONS_MON_MENU);
}
-static u32 sub_81CFEB8(s32 state)
+static u32 LoopedTask_OpenRibbonsMonList(s32 state)
{
- struct PokenavSub10 * unk = GetSubstructPtr(10);
+ struct PokenavSub10 *monMenu = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_MENU);
switch (state)
{
case 0:
- InitBgTemplates(gUnknown_086237B0, NELEMS(gUnknown_086237B0));
- DecompressAndCopyTileDataToVram(1, gUnknown_08623604, 0, 0, 0);
- SetBgTilemapBuffer(1, unk->buff);
- CopyToBgTilemapBuffer(1, gUnknown_086236CC, 0, 0);
- CopyPaletteIntoBufferUnfaded(gUnknown_086235E4, 0x10, 0x20);
+ InitBgTemplates(sMonRibbonListBgTemplates, NELEMS(sMonRibbonListBgTemplates));
+ DecompressAndCopyTileDataToVram(1, sMonRibbonListFrameTiles, 0, 0, 0);
+ SetBgTilemapBuffer(1, monMenu->buff);
+ CopyToBgTilemapBuffer(1, sMonRibbonListFrameTilemap, 0, 0);
+ CopyPaletteIntoBufferUnfaded(sMonRibbonListFramePal, 0x10, 0x20);
CopyBgTilemapBufferToVram(1);
return LT_INC_AND_PAUSE;
case 1:
if (FreeTempTileDataBuffersIfPossible())
return LT_PAUSE;
- if (!sub_81CFB18())
+ if (!UpdateMonListBgs())
return LT_PAUSE;
ChangeBgX(1, 0, 0);
ChangeBgY(1, 0, 0);
@@ -433,12 +447,12 @@ static u32 sub_81CFEB8(s32 state)
if (FreeTempTileDataBuffersIfPossible())
return LT_PAUSE;
CopyPaletteIntoBufferUnfaded(gUnknown_08623790, 0x20, 0x20);
- sub_81D0304();
+ InitMonRibbonPokenavListMenuTemplate();
return LT_INC_AND_PAUSE;
case 3:
if (sub_81C8224())
return LT_PAUSE;
- sub_81D024C(unk);
+ AddRibbonsMonListWindow(monMenu);
return LT_INC_AND_PAUSE;
case 4:
if (FreeTempTileDataBuffersIfPossible())
@@ -447,25 +461,25 @@ static u32 sub_81CFEB8(s32 state)
HideBg(3);
PrintHelpBarText(HELPBAR_RIBBONS_MON_LIST);
PokenavFadeScreen(1);
- if (!unk->unkC)
+ if (!monMenu->fromSummary)
{
- LoadLeftHeaderGfxForIndex(2);
- sub_81C7FA0(2, 1, 0);
+ LoadLeftHeaderGfxForIndex(POKENAV_GFX_RIBBONS_MENU);
+ ShowLeftHeaderGfx(POKENAV_GFX_RIBBONS_MENU, 1, 0);
}
return LT_INC_AND_PAUSE;
case 5:
if (IsPaletteFadeActive())
return LT_PAUSE;
- if (sub_81C8010())
+ if (AreLeftHeaderSpritesMoving())
return LT_PAUSE;
break;
}
return LT_FINISH;
}
-static u32 sub_81CFFFC(s32 state)
+static u32 LoopedTask_RibbonsListMoveCursorUp(s32 state)
{
- struct PokenavSub10 * unk = GetSubstructPtr(10);
+ struct PokenavSub10 *monMenu = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_MENU);
switch (state)
{
case 0:
@@ -482,11 +496,11 @@ static u32 sub_81CFFFC(s32 state)
}
return LT_INC_AND_PAUSE;
case 1:
- if (sub_81C8630())
+ if (IsMonListLoopedTaskActive())
return LT_PAUSE;
// fallthrough
case 2:
- sub_81D0288(unk);
+ sub_81D0288(monMenu);
return LT_INC_AND_PAUSE;
case 3:
if (IsDma3ManagerBusyWithBgCopy())
@@ -496,9 +510,9 @@ static u32 sub_81CFFFC(s32 state)
return LT_FINISH;
}
-static u32 sub_81D0074(s32 state)
+static u32 LoopedTask_RibbonsListMoveCursorDown(s32 state)
{
- struct PokenavSub10 * unk = GetSubstructPtr(10);
+ struct PokenavSub10 *monMenu = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_MENU);
switch (state)
{
case 0:
@@ -515,11 +529,11 @@ static u32 sub_81D0074(s32 state)
}
return LT_INC_AND_PAUSE;
case 1:
- if (sub_81C8630())
+ if (IsMonListLoopedTaskActive())
return LT_PAUSE;
// fallthrough
case 2:
- sub_81D0288(unk);
+ sub_81D0288(monMenu);
return LT_INC_AND_PAUSE;
case 3:
if (IsDma3ManagerBusyWithBgCopy())
@@ -529,9 +543,9 @@ static u32 sub_81D0074(s32 state)
return LT_FINISH;
}
-static u32 sub_81D00EC(s32 state)
+static u32 LoopedTask_RibbonsListMovePageUp(s32 state)
{
- struct PokenavSub10 * unk = GetSubstructPtr(10);
+ struct PokenavSub10 *monMenu = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_MENU);
switch (state)
{
case 0:
@@ -548,11 +562,11 @@ static u32 sub_81D00EC(s32 state)
}
return LT_INC_AND_PAUSE;
case 1:
- if (sub_81C8630())
+ if (IsMonListLoopedTaskActive())
return LT_PAUSE;
// fallthrough
case 2:
- sub_81D0288(unk);
+ sub_81D0288(monMenu);
return LT_INC_AND_PAUSE;
case 3:
if (IsDma3ManagerBusyWithBgCopy())
@@ -562,9 +576,9 @@ static u32 sub_81D00EC(s32 state)
return LT_FINISH;
}
-static u32 sub_81D0164(s32 state)
+static u32 LoopedTask_RibbonsListMovePageDown(s32 state)
{
- struct PokenavSub10 * unk = GetSubstructPtr(10);
+ struct PokenavSub10 *monMenu = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_MON_MENU);
switch (state)
{
case 0:
@@ -581,11 +595,11 @@ static u32 sub_81D0164(s32 state)
}
return LT_INC_AND_PAUSE;
case 1:
- if (sub_81C8630())
+ if (IsMonListLoopedTaskActive())
return LT_PAUSE;
// fallthrough
case 2:
- sub_81D0288(unk);
+ sub_81D0288(monMenu);
return LT_INC_AND_PAUSE;
case 3:
if (IsDma3ManagerBusyWithBgCopy())
@@ -595,27 +609,27 @@ static u32 sub_81D0164(s32 state)
return LT_FINISH;
}
-static u32 sub_81D01DC(s32 state)
+static u32 LoopedTask_RibbonsListReturnToMainMenu(s32 state)
{
switch (state)
{
case 0:
PlaySE(SE_SELECT);
PokenavFadeScreen(0);
- sub_81C78A0();
+ SlideMenuHeaderDown();
return LT_INC_AND_PAUSE;
case 1:
if (IsPaletteFadeActive())
return LT_PAUSE;
if (MainMenuLoopedTaskIsBusy())
return LT_PAUSE;
- sub_81C7FDC();
+ SetLeftHeaderSpritesInvisibility();
break;
}
return LT_FINISH;
}
-static u32 sub_81D021C(s32 state)
+static u32 LoopedTask_RibbonsListOpenSummary(s32 state)
{
switch (state)
{
@@ -631,23 +645,23 @@ static u32 sub_81D021C(s32 state)
return LT_FINISH;
}
-static void sub_81D024C(struct PokenavSub10 * ptr)
+static void AddRibbonsMonListWindow(struct PokenavSub10 *monMenu)
{
s32 r2;
- ptr->winid = AddWindow(&gUnknown_086237D4);
- PutWindowTilemap(ptr->winid);
- r2 = sub_81CFB38();
- sub_81D02B0(ptr->winid, 0, r2);
- CopyWindowToVram(ptr->winid, 1);
- sub_81D0288(ptr);
+ monMenu->winid = AddWindow(&sRibbonsMonListWindowTemplate);
+ PutWindowTilemap(monMenu->winid);
+ r2 = GetRibbonsMonListCount();
+ sub_81D02B0(monMenu->winid, 0, r2);
+ CopyWindowToVram(monMenu->winid, 1);
+ sub_81D0288(monMenu);
}
-static void sub_81D0288(struct PokenavSub10 * ptr)
+static void sub_81D0288(struct PokenavSub10 *monMenu)
{
- s32 r4 = GetSelectedMatchCall();
- s32 r2 = sub_81CFB38();
- sub_81D02B0(ptr->winid, r4 + 1, r2);
- CopyWindowToVram(ptr->winid, 2);
+ s32 r4 = GetSelectedPokenavListIndex();
+ s32 r2 = GetRibbonsMonListCount();
+ sub_81D02B0(monMenu->winid, r4 + 1, r2);
+ CopyWindowToVram(monMenu->winid, 2);
}
static void sub_81D02B0(s32 windowId, s32 val1, s32 val2)
@@ -663,22 +677,22 @@ static void sub_81D02B0(s32 windowId, s32 val1, s32 val2)
AddTextPrinterParameterized(windowId, 1, strbuf, x, 1, 0xFF, NULL);
}
-static void sub_81D0304(void)
+static void InitMonRibbonPokenavListMenuTemplate(void)
{
struct PokenavListTemplate template;
- template.list.monList = sub_81CFB28();
- template.unk4 = sub_81CFB38();
+ template.list.monList = GetMonRibbonMonListData();
+ template.count = GetRibbonsMonListCount();
template.unk8 = 4;
- template.unk6 = sub_81CFB64();
- template.unk9 = 13;
- template.unkA = 17;
- template.unkB = 1;
- template.unkC = 8;
- template.unkD = 2;
- template.unkE = 1;
- template.listFunc.unk10_1 = BufferRibbonMonInfoText;
+ template.unk6 = GetRibbonListMenuCurrIndex();
+ template.item_X = 13;
+ template.windowWidth = 17;
+ template.listTop = 1;
+ template.maxShowed = 8;
+ template.fillValue = 2;
+ template.fontId = 1;
+ template.listFunc.printMonFunc = BufferRibbonMonInfoText;
template.unk14 = NULL;
- sub_81C81D4(&gUnknown_086237B0[1], &template, 0);
+ sub_81C81D4(&sMonRibbonListBgTemplates[1], &template, 0);
}
// Buffers the "Nickname gender/level" text for the ribbon mon list
diff --git a/src/pokenav_ribbons_2.c b/src/pokenav_ribbons_2.c
index e5a89acad..203aa19e5 100644
--- a/src/pokenav_ribbons_2.c
+++ b/src/pokenav_ribbons_2.c
@@ -13,28 +13,38 @@
#include "window.h"
#include "constants/songs.h"
+enum
+{
+ RIBBONS_SUMMARY_FUNC_NONE,
+ RIBBONS_SUMMARY_FUNC_MOVED_CURSOR,
+ RIBBONS_SUMMARY_FUNC_SELECT_RIBBON,
+ RIBBONS_SUMMARY_FUNC_EXPANDED_CURSOR_MOVE,
+ RIBBONS_SUMMARY_FUNC_EXPANDED_CANCEL,
+ RIBBONS_SUMMARY_FUNC_EXIT,
+};
+
struct PokenavSub13
{
u8 filler0[0x8];
- struct PokenavSub18 *field_8;
+ struct PokenavSub18 *monList;
u16 field_C;
u16 field_E;
u16 field_10;
u16 field_12;
u32 field_14[25];
u32 field_78[8];
- u32 (*field_98)(struct PokenavSub13 *structPtr);
+ u32 (*callback)(struct PokenavSub13 *structPtr);
};
struct PokenavSub14
{
- u32 (*field_0)(void);
+ u32 (*callback)(void);
u32 loopedTaskId;
- u16 field_8;
- u16 field_A;
- u16 field_C;
+ u16 nameWindowId;
+ u16 ribbonCountWindowId;
+ u16 listIdxWindowId;
u16 field_E;
- u16 field_10;
+ u16 monSpriteId;
struct Sprite *field_14;
u32 filler;
u8 tilemapBuffers[2][BG_SCREEN_SIZE];
@@ -43,48 +53,48 @@ struct PokenavSub14
static u32 gUnknown_030012C0;
static u32 gUnknown_030012C4;
-void sub_81D0E84(struct PokenavSub14 *structPtr);
-void sub_81D0FF0(struct PokenavSub14 *structPtr);
-void sub_81D10D0(struct PokenavSub14 *structPtr);
+void PrintCurrentMonRibbonCount(struct PokenavSub14 *structPtr);
+void PrintRibbbonsSummaryMonInfo(struct PokenavSub14 *structPtr);
+void PrintRibbonsMonListIndex(struct PokenavSub14 *structPtr);
void sub_81D1500(struct PokenavSub14 *structPtr);
void sub_81D0EFC(struct PokenavSub14 *structPtr);
-void sub_81D1148(struct PokenavSub14 *structPtr);
-void sub_81D10A4(struct PokenavSub14 *structPtr);
-void sub_81D1178(struct PokenavSub14 *structPtr);
+void ResetSpritesAndDrawRibbonsMonFrontPic(struct PokenavSub14 *structPtr);
+void AddRibbonListIndexWindow(struct PokenavSub14 *structPtr);
+void DestroyRibbonsMonFrontPic(struct PokenavSub14 *structPtr);
void sub_81D11D8(struct PokenavSub14 *structPtr);
void sub_81D11FC(struct PokenavSub14 *structPtr);
-void sub_81D0E60(struct PokenavSub14 *structPtr);
+void AddRibbonCountWindow(struct PokenavSub14 *structPtr);
void sub_81D1448(struct PokenavSub14 *structPtr);
void sub_81D13FC(struct PokenavSub14 *structPtr);
-void sub_81D0FCC(struct PokenavSub14 *structPtr);
+void AddRibbonSummaryMonNameWindow(struct PokenavSub14 *structPtr);
void sub_81D12D8(struct PokenavSub14 *structPtr);
bool32 sub_81D1524(struct PokenavSub14 *structPtr);
bool32 sub_81D1234(struct PokenavSub14 *structPtr);
void sub_81D0814(struct PokenavSub13 *structPtr);
-u32 sub_81D0548(struct PokenavSub13 *structPtr);
-u32 sub_81D04C4(struct PokenavSub13 *structPtr);
-u32 sub_81D05D4(struct PokenavSub13 *structPtr);
+u32 HandleExpandedRibbonInput(struct PokenavSub13 *structPtr);
+u32 RibbonsSummaryHandleInput(struct PokenavSub13 *structPtr);
+u32 ReturnToRibbonsListFromSummary(struct PokenavSub13 *structPtr);
bool32 sub_81D05DC(struct PokenavSub13 *structPtr);
bool32 sub_81D0688(struct PokenavSub13 *structPtr);
bool32 sub_81D0664(struct PokenavSub13 *structPtr);
bool32 sub_81D061C(struct PokenavSub13 *structPtr);
bool32 sub_81D0688(struct PokenavSub13 *structPtr);
-bool32 sub_81D0A58(void);
-u32 sub_81D06C4(void);
-u32 sub_81D06D4(void);
-u16 sub_81D1184(s32 unused0, s32 unused1);
+bool32 GetCurrentLoopedTaskActive(void);
+u32 GetRibbonsSummaryCurrentIndex(void);
+u32 GetRibbonsSummaryMonListCount(void);
+u16 DrawRibbonsMonFrontPic(s32 unused0, s32 unused1);
void sub_81D1258(struct Sprite *sprite, s32 arg1, s32 arg2, s32 arg3);
void sub_81D1284(struct Sprite *sprite);
void sub_81D1350(void);
void sub_81D13BC(u16 *dst, u32 id);
void sub_81D1370(u32 arg0, u32 id);
void sub_81D1538(struct Sprite *sprite);
-u32 sub_81D0A6C(s32 state);
-u32 sub_81D0C84(s32 state);
-u32 sub_81D0D2C(s32 state);
-u32 sub_81D0D8C(s32 state);
-u32 sub_81D0E00(s32 state);
-u32 sub_81D0C54(s32 state);
+u32 LoopedTask_OpenRibbonsSummaryMenu(s32 state);
+u32 LoopedTask_UpdateRibbonsSummaryInfo(s32 state);
+u32 LoopedTask_ExpandSelectedRibbon(s32 state);
+u32 LoopedTask_MoveRibbonsCursorExpanded(s32 state);
+u32 LoopedTask_ShrinkExpandedRibbon(s32 state);
+u32 LoopedTask_ExitRibbonsSummaryMenu(s32 state);
struct
{
@@ -147,95 +157,95 @@ static const struct BgTemplate gUnknown_08624B98[] =
}
};
-static const LoopedTask gUnknown_08624BA0[] =
+static const LoopedTask sRibbonsSummaryMenuLoopTaskFuncs[] =
{
- NULL,
- sub_81D0C84,
- sub_81D0D2C,
- sub_81D0D8C,
- sub_81D0E00,
- sub_81D0C54
+ [RIBBONS_SUMMARY_FUNC_NONE] = NULL,
+ [RIBBONS_SUMMARY_FUNC_MOVED_CURSOR] = LoopedTask_UpdateRibbonsSummaryInfo,
+ [RIBBONS_SUMMARY_FUNC_SELECT_RIBBON] = LoopedTask_ExpandSelectedRibbon,
+ [RIBBONS_SUMMARY_FUNC_EXPANDED_CURSOR_MOVE] = LoopedTask_MoveRibbonsCursorExpanded,
+ [RIBBONS_SUMMARY_FUNC_EXPANDED_CANCEL] = LoopedTask_ShrinkExpandedRibbon,
+ [RIBBONS_SUMMARY_FUNC_EXIT] = LoopedTask_ExitRibbonsSummaryMenu
};
// code
-bool32 PokenavCallback_Init_13(void)
+bool32 PokenavCallback_Init_RibbonsSummaryMenu(void)
{
- struct PokenavSub13 *structPtr = AllocSubstruct(13, sizeof(struct PokenavSub13));
+ struct PokenavSub13 *structPtr = AllocSubstruct(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_LIST, sizeof(struct PokenavSub13));
if (structPtr == NULL)
return FALSE;
- structPtr->field_8 = GetSubstructPtr(18);
- if (structPtr->field_8 == NULL)
+ structPtr->monList = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST);
+ if (structPtr->monList == NULL)
return FALSE;
sub_81D0814(structPtr);
- structPtr->field_98 = sub_81D04C4;
+ structPtr->callback = RibbonsSummaryHandleInput;
gKeyRepeatContinueDelay = 3;
gKeyRepeatStartDelay = 10;
return TRUE;
}
-u32 sub_81D04A0(void)
+u32 GetRibbonsSummaryMenuCallback(void)
{
- struct PokenavSub13 *structPtr = GetSubstructPtr(13);
- return structPtr->field_98(structPtr);
+ struct PokenavSub13 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_LIST);
+ return structPtr->callback(structPtr);
}
-void sub_81D04B8(void)
+void FreeRibbonsSummaryScreen1(void)
{
- FreePokenavSubstruct(13);
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_LIST);
}
-u32 sub_81D04C4(struct PokenavSub13 *structPtr)
+u32 RibbonsSummaryHandleInput(struct PokenavSub13 *structPtr)
{
- if (gMain.newAndRepeatedKeys & DPAD_UP && structPtr->field_8->unk2 != 0)
+ if (JOY_REPEAT(DPAD_UP) && structPtr->monList->currIndex != 0)
{
- structPtr->field_8->unk2--;
+ structPtr->monList->currIndex--;
structPtr->field_C = 0;
sub_81D0814(structPtr);
- return 1;
+ return RIBBONS_SUMMARY_FUNC_MOVED_CURSOR;
}
- else if (gMain.newAndRepeatedKeys & DPAD_DOWN && structPtr->field_8->unk2 < structPtr->field_8->unk0 - 1)
+ if (JOY_REPEAT(DPAD_DOWN) && structPtr->monList->currIndex < structPtr->monList->listCount - 1)
{
- structPtr->field_8->unk2++;
+ structPtr->monList->currIndex++;
structPtr->field_C = 0;
sub_81D0814(structPtr);
- return 1;
+ return RIBBONS_SUMMARY_FUNC_MOVED_CURSOR;
}
- else if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
- structPtr->field_98 = sub_81D0548;
- return 2;
+ structPtr->callback = HandleExpandedRibbonInput;
+ return RIBBONS_SUMMARY_FUNC_SELECT_RIBBON;
}
- else if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
- structPtr->field_98 = sub_81D05D4;
- return 5;
+ structPtr->callback = ReturnToRibbonsListFromSummary;
+ return RIBBONS_SUMMARY_FUNC_EXIT;
}
- return 0;
+ return RIBBONS_SUMMARY_FUNC_NONE;
}
-u32 sub_81D0548(struct PokenavSub13 *structPtr)
-{
- if (gMain.newAndRepeatedKeys & DPAD_UP && sub_81D05DC(structPtr))
- return 3;
- else if (gMain.newAndRepeatedKeys & DPAD_DOWN && sub_81D061C(structPtr))
- return 3;
- else if (gMain.newAndRepeatedKeys & DPAD_LEFT && sub_81D0664(structPtr))
- return 3;
- else if (gMain.newAndRepeatedKeys & DPAD_RIGHT && sub_81D0688(structPtr))
- return 3;
- else if (gMain.newKeys & B_BUTTON)
+u32 HandleExpandedRibbonInput(struct PokenavSub13 *structPtr)
+{
+ if (JOY_REPEAT(DPAD_UP) && sub_81D05DC(structPtr))
+ return RIBBONS_SUMMARY_FUNC_EXPANDED_CURSOR_MOVE;
+ if (JOY_REPEAT(DPAD_DOWN) && sub_81D061C(structPtr))
+ return RIBBONS_SUMMARY_FUNC_EXPANDED_CURSOR_MOVE;
+ if (JOY_REPEAT(DPAD_LEFT) && sub_81D0664(structPtr))
+ return RIBBONS_SUMMARY_FUNC_EXPANDED_CURSOR_MOVE;
+ if (JOY_REPEAT(DPAD_RIGHT) && sub_81D0688(structPtr))
+ return RIBBONS_SUMMARY_FUNC_EXPANDED_CURSOR_MOVE;
+ if (JOY_NEW(B_BUTTON))
{
- structPtr->field_98 = sub_81D04C4;
- return 4;
+ structPtr->callback = RibbonsSummaryHandleInput;
+ return RIBBONS_SUMMARY_FUNC_EXPANDED_CANCEL;
}
- return 0;
+ return RIBBONS_SUMMARY_FUNC_NONE;
}
-u32 sub_81D05D4(struct PokenavSub13 *structPtr)
+u32 ReturnToRibbonsListFromSummary(struct PokenavSub13 *structPtr)
{
- return POKENAV_MENU_E;
+ return POKENAV_RIBBONS_RETURN_TO_MON_LIST;
}
bool32 sub_81D05DC(struct PokenavSub13 *structPtr)
@@ -320,23 +330,23 @@ bool32 sub_81D0688(struct PokenavSub13 *structPtr)
return FALSE;
}
-u32 sub_81D06C4(void)
+u32 GetRibbonsSummaryCurrentIndex(void)
{
- struct PokenavSub13 *structPtr = GetSubstructPtr(13);
- return structPtr->field_8->unk2;
+ struct PokenavSub13 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_LIST);
+ return structPtr->monList->currIndex;
}
-u32 sub_81D06D4(void)
+u32 GetRibbonsSummaryMonListCount(void)
{
- struct PokenavSub13 *structPtr = GetSubstructPtr(13);
- return structPtr->field_8->unk0;
+ struct PokenavSub13 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_LIST);
+ return structPtr->monList->listCount;
}
static void GetCurrMonInfo1(u8 *nick, u8 *level, u8 *gender)
{
- struct PokenavSub13 *structPtr = GetSubstructPtr(13);
- struct PokenavSub18 *mons = structPtr->field_8;
- struct PokenavMonList *monInfo = &mons->unk4[mons->unk2];
+ struct PokenavSub13 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_LIST);
+ struct PokenavSub18 *mons = structPtr->monList;
+ struct PokenavMonList *monInfo = &mons->monData[mons->currIndex];
if (monInfo->boxId == TOTAL_BOXES_COUNT)
{
@@ -357,9 +367,9 @@ static void GetCurrMonInfo1(u8 *nick, u8 *level, u8 *gender)
static void GetCurrMonInfo2(u16 *species, u32 *personality, u32 *otId)
{
- struct PokenavSub13 *structPtr = GetSubstructPtr(13);
- struct PokenavSub18 *mons = structPtr->field_8;
- struct PokenavMonList *monInfo = &mons->unk4[mons->unk2];
+ struct PokenavSub13 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_LIST);
+ struct PokenavSub18 *mons = structPtr->monList;
+ struct PokenavMonList *monInfo = &mons->monData[mons->currIndex];
if (monInfo->boxId == TOTAL_BOXES_COUNT)
{
@@ -379,9 +389,9 @@ static void GetCurrMonInfo2(u16 *species, u32 *personality, u32 *otId)
static u32 GetCurrMonRibbonCount(void)
{
- struct PokenavSub13 *structPtr = GetSubstructPtr(13);
- struct PokenavSub18 *mons = structPtr->field_8;
- struct PokenavMonList *monInfo = &mons->unk4[mons->unk2];
+ struct PokenavSub13 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_LIST);
+ struct PokenavSub18 *mons = structPtr->monList;
+ struct PokenavMonList *monInfo = &mons->monData[mons->currIndex];
if (monInfo->boxId == TOTAL_BOXES_COUNT)
return GetMonData(&gPlayerParty[monInfo->monId], MON_DATA_RIBBON_COUNT);
@@ -393,8 +403,8 @@ void sub_81D0814(struct PokenavSub13 *structPtr)
{
u32 ribbons;
s32 i, j;
- struct PokenavSub18 *mons = structPtr->field_8;
- struct PokenavMonList *monInfo = &mons->unk4[mons->unk2];
+ struct PokenavSub18 *mons = structPtr->monList;
+ struct PokenavMonList *monInfo = &mons->monData[mons->currIndex];
if (monInfo->boxId == TOTAL_BOXES_COUNT)
ribbons = GetMonData(&gPlayerParty[monInfo->monId], MON_DATA_RIBBONS);
@@ -433,27 +443,27 @@ void sub_81D0814(struct PokenavSub13 *structPtr)
u32 *sub_81D0914(u32 *arg0)
{
- struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ struct PokenavSub13 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_LIST);
*arg0 = structPtr->field_10;
return structPtr->field_14;
}
u32 *sub_81D092C(u32 *arg0)
{
- struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ struct PokenavSub13 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_LIST);
*arg0 = structPtr->field_12;
return structPtr->field_78;
}
u16 sub_81D0944(void)
{
- struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ struct PokenavSub13 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_LIST);
return structPtr->field_C;
}
u32 sub_81D0954(void)
{
- struct PokenavSub13 *structPtr = GetSubstructPtr(13);
+ struct PokenavSub13 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_LIST);
int var = structPtr->field_C;
if (var <= 24)
return structPtr->field_14[var];
@@ -461,38 +471,38 @@ u32 sub_81D0954(void)
return structPtr->field_78[var - 27];
}
-bool32 sub_81D0978(void)
+bool32 OpenRibbonsSummaryMenu(void)
{
- struct PokenavSub14 *structPtr = AllocSubstruct(14, sizeof(struct PokenavSub14));
+ struct PokenavSub14 *structPtr = AllocSubstruct(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_MENU, sizeof(struct PokenavSub14));
if (structPtr == NULL)
return FALSE;
- structPtr->loopedTaskId = CreateLoopedTask(sub_81D0A6C, 1);
- structPtr->field_0 = sub_81D0A58;
+ structPtr->loopedTaskId = CreateLoopedTask(LoopedTask_OpenRibbonsSummaryMenu, 1);
+ structPtr->callback = GetCurrentLoopedTaskActive;
return TRUE;
}
-void sub_81D09B0(s32 id)
+void CreateRibbonsSummaryLoopedTask(s32 id)
{
- struct PokenavSub14 *structPtr = GetSubstructPtr(14);
- structPtr->loopedTaskId = CreateLoopedTask(gUnknown_08624BA0[id], 1);
- structPtr->field_0 = sub_81D0A58;
+ struct PokenavSub14 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_MENU);
+ structPtr->loopedTaskId = CreateLoopedTask(sRibbonsSummaryMenuLoopTaskFuncs[id], 1);
+ structPtr->callback = GetCurrentLoopedTaskActive;
}
-u32 sub_81D09E0(void)
+u32 IsRibbonsSummaryLoopedTaskActive(void)
{
- struct PokenavSub14 *structPtr = GetSubstructPtr(14);
- return structPtr->field_0();
+ struct PokenavSub14 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_MENU);
+ return structPtr->callback();
}
-void sub_81D09F4(void)
+void FreeRibbonsSummaryScreen2(void)
{
- struct PokenavSub14 *structPtr = GetSubstructPtr(14);
- RemoveWindow(structPtr->field_A);
- RemoveWindow(structPtr->field_8);
- RemoveWindow(structPtr->field_C);
+ struct PokenavSub14 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_MENU);
+ RemoveWindow(structPtr->ribbonCountWindowId);
+ RemoveWindow(structPtr->nameWindowId);
+ RemoveWindow(structPtr->listIdxWindowId);
RemoveWindow(structPtr->field_E);
- sub_81D1178(structPtr);
+ DestroyRibbonsMonFrontPic(structPtr);
FreeSpriteTilesByTag(9);
FreeSpritePaletteByTag(0xF);
FreeSpritePaletteByTag(0x10);
@@ -501,18 +511,18 @@ void sub_81D09F4(void)
FreeSpritePaletteByTag(0x13);
FreeSpriteOamMatrix(structPtr->field_14);
DestroySprite(structPtr->field_14);
- FreePokenavSubstruct(14);
+ FreePokenavSubstruct(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_MENU);
}
-bool32 sub_81D0A58(void)
+bool32 GetCurrentLoopedTaskActive(void)
{
- struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ struct PokenavSub14 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_MENU);
return IsLoopedTaskActive(structPtr->loopedTaskId);
}
-u32 sub_81D0A6C(s32 state)
+u32 LoopedTask_OpenRibbonsSummaryMenu(s32 state)
{
- struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ struct PokenavSub14 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_MENU);
switch (state)
{
case 0:
@@ -539,21 +549,21 @@ u32 sub_81D0A6C(s32 state)
case 2:
if (!FreeTempTileDataBuffersIfPossible())
{
- sub_81D0E60(structPtr);
+ AddRibbonCountWindow(structPtr);
return LT_INC_AND_PAUSE;
}
return LT_PAUSE;
case 3:
if (!FreeTempTileDataBuffersIfPossible())
{
- sub_81D0FCC(structPtr);
+ AddRibbonSummaryMonNameWindow(structPtr);
return LT_INC_AND_PAUSE;
}
return LT_PAUSE;
case 4:
if (!FreeTempTileDataBuffersIfPossible())
{
- sub_81D10A4(structPtr);
+ AddRibbonListIndexWindow(structPtr);
return LT_INC_AND_PAUSE;
}
return LT_PAUSE;
@@ -567,7 +577,7 @@ u32 sub_81D0A6C(s32 state)
case 6:
if (!IsDma3ManagerBusyWithBgCopy())
{
- sub_81D1148(structPtr);
+ ResetSpritesAndDrawRibbonsMonFrontPic(structPtr);
return LT_INC_AND_CONTINUE;
}
return LT_PAUSE;
@@ -598,7 +608,7 @@ u32 sub_81D0A6C(s32 state)
return LT_FINISH;
}
-u32 sub_81D0C54(s32 state)
+u32 LoopedTask_ExitRibbonsSummaryMenu(s32 state)
{
switch (state)
{
@@ -614,9 +624,9 @@ u32 sub_81D0C54(s32 state)
return LT_FINISH;
}
-u32 sub_81D0C84(s32 state)
+u32 LoopedTask_UpdateRibbonsSummaryInfo(s32 state)
{
- struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ struct PokenavSub14 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_MENU);
switch (state)
{
case 0:
@@ -626,7 +636,7 @@ u32 sub_81D0C84(s32 state)
case 1:
if (!sub_81D1234(structPtr))
{
- sub_81D0FF0(structPtr);
+ PrintRibbbonsSummaryMonInfo(structPtr);
return LT_INC_AND_CONTINUE;
}
return LT_PAUSE;
@@ -634,10 +644,10 @@ u32 sub_81D0C84(s32 state)
sub_81D12D8(structPtr);
return LT_INC_AND_CONTINUE;
case 3:
- sub_81D10D0(structPtr);
+ PrintRibbonsMonListIndex(structPtr);
return LT_INC_AND_CONTINUE;
case 4:
- sub_81D0E84(structPtr);
+ PrintCurrentMonRibbonCount(structPtr);
return LT_INC_AND_CONTINUE;
case 5:
if (!IsDma3ManagerBusyWithBgCopy())
@@ -654,9 +664,9 @@ u32 sub_81D0C84(s32 state)
return LT_FINISH;
}
-u32 sub_81D0D2C(s32 state)
+u32 LoopedTask_ExpandSelectedRibbon(s32 state)
{
- struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ struct PokenavSub14 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_MENU);
switch (state)
{
case 0:
@@ -678,9 +688,9 @@ u32 sub_81D0D2C(s32 state)
return LT_FINISH;
}
-u32 sub_81D0D8C(s32 state)
+u32 LoopedTask_MoveRibbonsCursorExpanded(s32 state)
{
- struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ struct PokenavSub14 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_MENU);
switch (state)
{
case 0:
@@ -708,9 +718,9 @@ u32 sub_81D0D8C(s32 state)
return LT_FINISH;
}
-u32 sub_81D0E00(s32 state)
+u32 LoopedTask_ShrinkExpandedRibbon(s32 state)
{
- struct PokenavSub14 *structPtr = GetSubstructPtr(14);
+ struct PokenavSub14 *structPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_MENU);
switch (state)
{
case 0:
@@ -720,7 +730,7 @@ u32 sub_81D0E00(s32 state)
case 1:
if (!sub_81D1524(structPtr))
{
- sub_81D0E84(structPtr);
+ PrintCurrentMonRibbonCount(structPtr);
PrintHelpBarText(HELPBAR_RIBBONS_LIST);
return LT_INC_AND_PAUSE;
}
@@ -732,7 +742,7 @@ u32 sub_81D0E00(s32 state)
return LT_FINISH;
}
-static const struct WindowTemplate gUnknown_08624BB8 =
+static const struct WindowTemplate sRibbonCountWindowTemplate =
{
.bg = 2,
.tilemapLeft = 12,
@@ -743,14 +753,14 @@ static const struct WindowTemplate gUnknown_08624BB8 =
.baseBlock = 0x14,
};
-void sub_81D0E60(struct PokenavSub14 *structPtr)
+void AddRibbonCountWindow(struct PokenavSub14 *structPtr)
{
- structPtr->field_A = AddWindow(&gUnknown_08624BB8);
- PutWindowTilemap(structPtr->field_A);
- sub_81D0E84(structPtr);
+ structPtr->ribbonCountWindowId = AddWindow(&sRibbonCountWindowTemplate);
+ PutWindowTilemap(structPtr->ribbonCountWindowId);
+ PrintCurrentMonRibbonCount(structPtr);
}
-void sub_81D0E84(struct PokenavSub14 *structPtr)
+void PrintCurrentMonRibbonCount(struct PokenavSub14 *structPtr)
{
u8 color[] = {TEXT_COLOR_RED, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY};
@@ -758,9 +768,9 @@ void sub_81D0E84(struct PokenavSub14 *structPtr)
DynamicPlaceholderTextUtil_Reset();
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1);
DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_RibbonsF700);
- FillWindowPixelBuffer(structPtr->field_A, PIXEL_FILL(4));
- AddTextPrinterParameterized3(structPtr->field_A, 1, 0, 1, color, -1, gStringVar4);
- CopyWindowToVram(structPtr->field_A, 2);
+ FillWindowPixelBuffer(structPtr->ribbonCountWindowId, PIXEL_FILL(4));
+ AddTextPrinterParameterized3(structPtr->ribbonCountWindowId, 1, 0, 1, color, -1, gStringVar4);
+ CopyWindowToVram(structPtr->ribbonCountWindowId, 2);
}
void sub_81D0EFC(struct PokenavSub14 *structPtr)
@@ -769,11 +779,11 @@ void sub_81D0EFC(struct PokenavSub14 *structPtr)
u32 ribbonId = sub_81D0954();
u8 color[] = {TEXT_COLOR_RED, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY};
- FillWindowPixelBuffer(structPtr->field_A, PIXEL_FILL(4));
+ FillWindowPixelBuffer(structPtr->ribbonCountWindowId, PIXEL_FILL(4));
if (ribbonId < 25)
{
for (i = 0; i < 2; i++)
- AddTextPrinterParameterized3(structPtr->field_A, 1, 0, (i * 16) + 1, color, -1, gRibbonDescriptionPointers[ribbonId][i]);
+ AddTextPrinterParameterized3(structPtr->ribbonCountWindowId, 1, 0, (i * 16) + 1, color, -1, gRibbonDescriptionPointers[ribbonId][i]);
}
else
{
@@ -783,13 +793,13 @@ void sub_81D0EFC(struct PokenavSub14 *structPtr)
ribbonId--;
for (i = 0; i < 2; i++)
- AddTextPrinterParameterized3(structPtr->field_A, 1, 0, (i * 16) + 1, color, -1, gGiftRibbonDescriptionPointers[ribbonId][i]);
+ AddTextPrinterParameterized3(structPtr->ribbonCountWindowId, 1, 0, (i * 16) + 1, color, -1, gGiftRibbonDescriptionPointers[ribbonId][i]);
}
- CopyWindowToVram(structPtr->field_A, 2);
+ CopyWindowToVram(structPtr->ribbonCountWindowId, 2);
}
-static const struct WindowTemplate gUnknown_08624BC4 =
+static const struct WindowTemplate sRibbonSummaryMonNameWindowTemplate =
{
.bg = 2,
.tilemapLeft = 14,
@@ -800,23 +810,23 @@ static const struct WindowTemplate gUnknown_08624BC4 =
.baseBlock = 0x54,
};
-void sub_81D0FCC(struct PokenavSub14 *structPtr)
+void AddRibbonSummaryMonNameWindow(struct PokenavSub14 *structPtr)
{
- structPtr->field_8 = AddWindow(&gUnknown_08624BC4);
- PutWindowTilemap(structPtr->field_8);
- sub_81D0FF0(structPtr);
+ structPtr->nameWindowId = AddWindow(&sRibbonSummaryMonNameWindowTemplate);
+ PutWindowTilemap(structPtr->nameWindowId);
+ 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 sGenderlessIconString[] = _("{UNK_SPACER}");
-void sub_81D0FF0(struct PokenavSub14 *structPtr)
+void PrintRibbbonsSummaryMonInfo(struct PokenavSub14 *structPtr)
{
const u8 *genderTxt;
u8 *txtPtr;
u8 level, gender;
- u16 windowId = structPtr->field_8;
+ u16 windowId = structPtr->nameWindowId;
FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
GetCurrMonInfo1(gStringVar3, &level, &gender);
@@ -843,7 +853,7 @@ void sub_81D0FF0(struct PokenavSub14 *structPtr)
CopyWindowToVram(windowId, 2);
}
-static const struct WindowTemplate gUnknown_08624BE8[] =
+static const struct WindowTemplate sRibbonMonListIndexWindowTemplate[] =
{
{
.bg = 2,
@@ -857,46 +867,46 @@ static const struct WindowTemplate gUnknown_08624BE8[] =
{},
};
-void sub_81D10A4(struct PokenavSub14 *structPtr)
+void AddRibbonListIndexWindow(struct PokenavSub14 *structPtr)
{
- structPtr->field_C = AddWindow(gUnknown_08624BE8);
- FillWindowPixelBuffer(structPtr->field_C, PIXEL_FILL(1));
- PutWindowTilemap(structPtr->field_C);
- sub_81D10D0(structPtr);
+ structPtr->listIdxWindowId = AddWindow(sRibbonMonListIndexWindowTemplate);
+ FillWindowPixelBuffer(structPtr->listIdxWindowId, PIXEL_FILL(1));
+ PutWindowTilemap(structPtr->listIdxWindowId);
+ PrintRibbonsMonListIndex(structPtr);
}
-void sub_81D10D0(struct PokenavSub14 *structPtr)
+void PrintRibbonsMonListIndex(struct PokenavSub14 *structPtr)
{
s32 x;
u8 *txtPtr;
- u32 id = sub_81D06C4() + 1;
- u32 count = sub_81D06D4();
+ u32 id = GetRibbonsSummaryCurrentIndex() + 1;
+ u32 count = GetRibbonsSummaryMonListCount();
txtPtr = ConvertIntToDecimalStringN(gStringVar1, id, STR_CONV_MODE_RIGHT_ALIGN, 3);
*(txtPtr++) = CHAR_SLASH;
ConvertIntToDecimalStringN(txtPtr, count, STR_CONV_MODE_RIGHT_ALIGN, 3);
x = GetStringCenterAlignXOffset(1, gStringVar1, 56);
- AddTextPrinterParameterized(structPtr->field_C, 1, gStringVar1, x, 1, TEXT_SPEED_FF, NULL);
- CopyWindowToVram(structPtr->field_C, 2);
+ AddTextPrinterParameterized(structPtr->listIdxWindowId, 1, gStringVar1, x, 1, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(structPtr->listIdxWindowId, 2);
}
-void sub_81D1148(struct PokenavSub14 *structPtr)
+void ResetSpritesAndDrawRibbonsMonFrontPic(struct PokenavSub14 *structPtr)
{
u16 species;
u32 personality, otId;
GetCurrMonInfo2(&species, &personality, &otId);
ResetAllPicSprites();
- structPtr->field_10 = sub_81D1184(40, 104);
- sub_81C7990(15, 0);
+ structPtr->monSpriteId = DrawRibbonsMonFrontPic(40, 104);
+ PokenavFillPalette(15, 0);
}
-void sub_81D1178(struct PokenavSub14 *structPtr)
+void DestroyRibbonsMonFrontPic(struct PokenavSub14 *structPtr)
{
- FreeAndDestroyMonPicSprite(structPtr->field_10);
+ FreeAndDestroyMonPicSprite(structPtr->monSpriteId);
}
-u16 sub_81D1184(s32 unused0, s32 unused1)
+u16 DrawRibbonsMonFrontPic(s32 unused0, s32 unused1)
{
u16 species, spriteId;
u32 personality, otId;
@@ -909,19 +919,19 @@ u16 sub_81D1184(s32 unused0, s32 unused1)
void sub_81D11D8(struct PokenavSub14 *structPtr)
{
- sub_81D1258(&gSprites[structPtr->field_10], 40, -32, 6);
+ sub_81D1258(&gSprites[structPtr->monSpriteId], 40, -32, 6);
}
void sub_81D11FC(struct PokenavSub14 *structPtr)
{
- FreeAndDestroyMonPicSprite(structPtr->field_10);
- structPtr->field_10 = sub_81D1184(-32, 104);
- sub_81D1258(&gSprites[structPtr->field_10], -32, 40, 6);
+ FreeAndDestroyMonPicSprite(structPtr->monSpriteId);
+ structPtr->monSpriteId = DrawRibbonsMonFrontPic(-32, 104);
+ sub_81D1258(&gSprites[structPtr->monSpriteId], -32, 40, 6);
}
bool32 sub_81D1234(struct PokenavSub14 *structPtr)
{
- return (gSprites[structPtr->field_10].callback != SpriteCallbackDummy);
+ return (gSprites[structPtr->monSpriteId].callback != SpriteCallbackDummy);
}
void sub_81D1258(struct Sprite *sprite, s32 arg1, s32 arg2, s32 arg3)
diff --git a/src/rayquaza_scene.c b/src/rayquaza_scene.c
index f47ab5e89..bc6758cae 100644
--- a/src/rayquaza_scene.c
+++ b/src/rayquaza_scene.c
@@ -14,91 +14,142 @@
#include "decompress.h"
#include "sound.h"
#include "constants/songs.h"
-#include "constants/species.h"
#include "constants/rgb.h"
#include "random.h"
-struct RaySceneStruct
-{
- MainCallback callback;
- u8 tilemapBuffers[4][0x800];
- u16 field_2004; // set but unused
+/*
+ This file handles the cutscene showing Rayquaza arriving to settle the Groudon/Kyogre fight
+ It consists of 5 separate scenes:
+ - Groudon and Kyogre facing one another in a thunderstorm (RAY_ANIM_DUO_FIGHT)
+ - Over-the-shoulder of Rayquaza flying (RAY_ANIM_TAKES_FLIGHT)
+ - Rayquaza emerging from a spotlight down through the clouds (RAY_ANIM_DESCENDS)
+ - A close-up of Rayquaza flying down (RAY_ANIM_CHARGES)
+ - Rayquaza floating above Groudon/Kyogre as they back away offscreen (RAY_ANIM_CHASES_AWAY)
+
+ A shortened version of the first scene is used when the player first arrives
+ in Sootopolis during the Groudon/Kyogre conflict, before awakening Rayquaza (RAY_ANIM_DUO_FIGHT_PRE)
+ This is indicated with the first two arguments to DoRayquazaScene
+*/
+
+enum
+{
+ RAY_ANIM_DUO_FIGHT_PRE,
+ RAY_ANIM_DUO_FIGHT,
+ RAY_ANIM_TAKES_FLIGHT,
+ RAY_ANIM_DESCENDS,
+ RAY_ANIM_CHARGES,
+ RAY_ANIM_CHASES_AWAY,
+ RAY_ANIM_END
+};
+
+#define TAG_DUOFIGHT_GROUDON 30505
+#define TAG_DUOFIGHT_GROUDON_SHOULDER 30506
+#define TAG_DUOFIGHT_GROUDON_CLAW 30507
+#define TAG_DUOFIGHT_KYOGRE 30508
+#define TAG_DUOFIGHT_KYOGRE_PECTORAL_FIN 30509
+#define TAG_DUOFIGHT_KYOGRE_DORSAL_FIN 30510
+#define TAG_FLIGHT_SMOKE 30555
+#define TAG_DESCENDS_RAYQUAZA 30556
+#define TAG_DESCENDS_RAYQUAZA_TAIL 30557
+#define TAG_CHASE_GROUDON 30565
+#define TAG_CHASE_GROUDON_TAIL 30566
+#define TAG_CHASE_KYOGRE 30568
+#define TAG_CHASE_RAYQUAZA 30569
+#define TAG_CHASE_RAYQUAZA_TAIL 30570
+#define TAG_CHASE_SPLASH 30571
+
+#define MAX_SMOKE 10
+
+struct RayquazaScene
+{
+ MainCallback exitCallback;
+ u8 tilemapBuffers[4][BG_SCREEN_SIZE];
+ u16 unk; // never read
u8 animId;
- bool8 onlyOneAnim;
- s16 field_2008;
- s16 field_200A;
- u8 unusedFields[12]; // completely unused
-};
-
-// EWRAM vars
-static EWRAM_DATA struct RaySceneStruct *sRayScene = NULL;
-
-// this file's functions
-static void Task_DuoFightAnim(u8 taskId);
-static void Task_RayTakesFlightAnim(u8 taskId);
-static void Task_RayDescendsAnim(u8 taskId);
-static void Task_RayChargesAnim(u8 taskId);
-static void Task_RayChasesAwayAnim(u8 taskId);
-static void Task_HandleRayDescends(u8 taskId);
-static void Task_RayDescendsEnd(u8 taskId);
-static void Task_HandleRayCharges(u8 taskId);
-static void sub_81D8AD8(u8 taskId);
-static void sub_81D8B2C(u8 taskId);
-static void Task_RayChargesEnd(u8 taskId);
-static void Task_HandleRayChasesAway(u8 taskId);
-static void sub_81D8FB0(u8 taskId);
-static void sub_81D7228(u8 taskId);
-static void Task_HandleDuoFight(u8 taskId);
-static void sub_81D752C(u8 taskId);
-static void Task_DuoFightEnd(u8 taskId);
-static void Task_HandleRayTakesFlight(u8 taskId);
-static void sub_81D81A4(u8 taskId);
-static void Task_RayTakesFlightEnd(u8 taskId);
-static void sub_81D94D4(u8 taskId);
-static void sub_81D93D8(u8 taskId);
-static void Task_RayChasesAwayEnd(u8 taskId);
-static void sub_81D90A8(u8 taskId);
-static void sub_81D98B4(u8 taskId);
-static void Task_EndAfterFadeScreen(u8 taskId);
+ bool8 endEarly;
+ s16 revealedLightLine;
+ s16 revealedLightTimer;
+ u8 unused[12];
+};
+
+static EWRAM_DATA struct RayquazaScene *sRayScene = NULL;
+
static void CB2_InitRayquazaScene(void);
static void CB2_RayquazaScene(void);
-static void sub_81D750C(void);
-static void sub_81D7438(void);
-static void sub_81D7480(void);
-static void sub_81D74C8(void);
-static void sub_81D8BB4(void);
-static void sub_81D6A20(struct Sprite *sprite);
-static void sub_81D6D20(struct Sprite *sprite);
-static void sub_81D7860(struct Sprite *sprite);
-static void sub_81D7D14(struct Sprite *sprite);
-static void sub_81D7700(struct Sprite *sprite);
-static void sub_81D7A60(struct Sprite *sprite);
-static void sub_81D874C(struct Sprite *sprite);
-static void sub_81D9338(struct Sprite *sprite);
-static void sub_81D9420(struct Sprite *sprite);
-static void sub_81D8260(struct Sprite *sprite);
-static void sub_81D961C(struct Sprite *sprite);
-static void sub_81D97E0(struct Sprite *sprite);
-static void sub_81D9528(struct Sprite *sprite);
-static u8 sub_81D7664(void);
-static u8 sub_81D78BC(void);
-static u8 sub_81D86CC(void);
-static void DuoFightEnd(u8 taskId, s8 palDelay);
-static void sub_81D9868(struct Sprite *sprite, u8 animNum, s16 x, s16 y);
-
-// const rom data
+static void Task_EndAfterFadeScreen(u8);
+
+// RAY_ANIM_DUO_FIGHT_PRE / RAY_ANIM_DUO_FIGHT
+static void Task_DuoFightAnim(u8);
+static void Task_HandleDuoFight(u8);
+static void Task_DuoFightEnd(u8);
+static void DuoFightEnd(u8, s8);
+static void Task_DuoFight_AnimateClouds(u8);
+static void DuoFight_PanOffScene(u8);
+static void DuoFight_AnimateRain(void);
+static void DuoFight_Lightning1(void);
+static void DuoFight_Lightning2(void);
+static void DuoFight_LightningLong(void);
+static u8 DuoFightPre_CreateGroudonSprites(void);
+static u8 DuoFightPre_CreateKyogreSprites(void);
+static u8 DuoFight_CreateGroudonSprites(void);
+static u8 DuoFight_CreateKyogreSprites(void);
+static void SpriteCB_DuoFightPre_Groudon(struct Sprite *);
+static void SpriteCB_DuoFightPre_Kyogre(struct Sprite *);
+static void SpriteCB_DuoFight_Groudon(struct Sprite *);
+static void SpriteCB_DuoFight_Kyogre(struct Sprite *);
+static void DuoFight_SlideGroudonDown(struct Sprite *);
+static void DuoFight_SlideKyogreDown(struct Sprite *);
+
+// RAY_ANIM_TAKES_FLIGHT
+static void Task_RayTakesFlightAnim(u8);
+static void Task_HandleRayTakesFlight(u8);
+static void Task_RayTakesFlightEnd(u8);
+static void Task_TakesFlight_CreateSmoke(u8);
+static void SpriteCB_TakesFlight_Smoke(struct Sprite *);
+
+// RAY_ANIM_DESCENDS
+static void Task_RayDescendsAnim(u8);
+static void Task_HandleRayDescends(u8);
+static void Task_RayDescendsEnd(u8);
+static u8 CreateDescendsRayquazaSprite(void);
+static void SpriteCB_Descends_Rayquaza(struct Sprite *);
+
+// RAY_ANIM_CHARGES
+static void Task_RayChargesAnim(u8);
+static void Task_HandleRayCharges(u8);
+static void Task_RayChargesEnd(u8);
+static void Task_RayCharges_ShakeRayquaza(u8);
+static void Task_RayCharges_FlyOffscreen(u8);
+static void RayCharges_AnimateBg(void);
+
+// RAY_ANIM_CHASES_AWAY
+static void Task_RayChasesAwayAnim(u8);
+static void Task_HandleRayChasesAway(u8);
+static void Task_RayChasesAwayEnd(u8);
+static void Task_ChasesAway_AnimateBg(u8);
+static void ChasesAway_KyogreStartLeave(u8);
+static void ChasesAway_GroudonStartLeave(u8);
+static void ChasesAway_CreateTrioSprites(u8);
+static void Task_ChasesAway_AnimateRing(u8);
+static void SpriteCB_ChasesAway_GroudonLeave(struct Sprite *);
+static void SpriteCB_ChasesAway_KyogreLeave(struct Sprite *);
+static void SpriteCB_ChasesAway_RayquazaFloat(struct Sprite *);
+static void SpriteCB_ChasesAway_Rayquaza(struct Sprite *);
+static void SpriteCB_ChasesAway_DuoRingPush(struct Sprite *);
+static void ChasesAway_SetRayquazaAnim(struct Sprite *, u8, s16, s16);
+
static const TaskFunc sTasksForAnimations[] =
{
[RAY_ANIM_DUO_FIGHT_PRE] = Task_DuoFightAnim,
- [RAY_ANIM_DUO_FIGHT] = Task_DuoFightAnim,
- [RAY_ANIM_TAKES_FLIGHT] = Task_RayTakesFlightAnim,
- [RAY_ANIM_DESCENDS] = Task_RayDescendsAnim,
- [RAY_ANIM_CHARGES] = Task_RayChargesAnim,
- [RAY_ANIM_CHACES_AWAY] = Task_RayChasesAwayAnim,
- [RAY_ANIM_END] = Task_EndAfterFadeScreen,
+ [RAY_ANIM_DUO_FIGHT] = Task_DuoFightAnim,
+ [RAY_ANIM_TAKES_FLIGHT] = Task_RayTakesFlightAnim,
+ [RAY_ANIM_DESCENDS] = Task_RayDescendsAnim,
+ [RAY_ANIM_CHARGES] = Task_RayChargesAnim,
+ [RAY_ANIM_CHASES_AWAY] = Task_RayChasesAwayAnim,
+ [RAY_ANIM_END] = Task_EndAfterFadeScreen,
};
-static const struct OamData sOamData_862A6BC =
+static const struct OamData sOam_64x64 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -115,7 +166,7 @@ static const struct OamData sOamData_862A6BC =
.affineParam = 0
};
-static const struct OamData sOamData_862A6C4 =
+static const struct OamData sOam_32x32 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -132,7 +183,7 @@ static const struct OamData sOamData_862A6C4 =
.affineParam = 0
};
-static const struct OamData sOamData_862A6CC =
+static const struct OamData sOam_64x32 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -149,7 +200,7 @@ static const struct OamData sOamData_862A6CC =
.affineParam = 0
};
-static const struct OamData sOamData_862A6D4 =
+static const struct OamData sOam_32x16 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -166,7 +217,7 @@ static const struct OamData sOamData_862A6D4 =
.affineParam = 0
};
-static const struct OamData sOamData_862A6DC =
+static const struct OamData sOam_16x8 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -183,7 +234,7 @@ static const struct OamData sOamData_862A6DC =
.affineParam = 0
};
-static const struct OamData sOamData_862A6E4 =
+static const struct OamData sOam_16x32 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -200,7 +251,7 @@ static const struct OamData sOamData_862A6E4 =
.affineParam = 0
};
-static const struct OamData sOamData_862A6EC =
+static const struct OamData sOam_16x16 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -217,7 +268,7 @@ static const struct OamData sOamData_862A6EC =
.affineParam = 0
};
-static const struct OamData sOamData_862A6F4 =
+static const struct OamData sOam_32x8 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -234,7 +285,7 @@ static const struct OamData sOamData_862A6F4 =
.affineParam = 0
};
-static const union AnimCmd sSpriteAnim_862A6FC[] =
+static const union AnimCmd sAnim_DuoFightPre_Groudon_Head[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(64, 30),
@@ -243,7 +294,7 @@ static const union AnimCmd sSpriteAnim_862A6FC[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd sSpriteAnim_862A710[] =
+static const union AnimCmd sAnim_DuoFightPre_Groudon_Body[] =
{
ANIMCMD_FRAME(192, 30),
ANIMCMD_FRAME(256, 30),
@@ -252,104 +303,104 @@ static const union AnimCmd sSpriteAnim_862A710[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sSpriteAnimTable_862A724[] =
+static const union AnimCmd *const sAnims_DuoFightPre_Groudon[] =
{
- sSpriteAnim_862A6FC,
- sSpriteAnim_862A710
+ sAnim_DuoFightPre_Groudon_Head,
+ sAnim_DuoFightPre_Groudon_Body
};
-static const struct SpriteTemplate sUnknown_0862A72C =
+static const struct SpriteTemplate sSpriteTemplate_DuoFightPre_Groudon =
{
- .tileTag = 30505,
- .paletteTag = 30505,
- .oam = &sOamData_862A6BC,
- .anims = sSpriteAnimTable_862A724,
+ .tileTag = TAG_DUOFIGHT_GROUDON,
+ .paletteTag = TAG_DUOFIGHT_GROUDON,
+ .oam = &sOam_64x64,
+ .anims = sAnims_DuoFightPre_Groudon,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const union AnimCmd sSpriteAnim_862A744[] =
+static const union AnimCmd sAnim_DuoFightPre_GroudonShoulderKyogreDorsalFin[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_862A74C[] =
+static const union AnimCmd *const sAnims_DuoFightPre_GroudonShoulderKyogreDorsalFin[] =
{
- sSpriteAnim_862A744
+ sAnim_DuoFightPre_GroudonShoulderKyogreDorsalFin
};
-static const struct SpriteTemplate sUnknown_0862A750 =
+static const struct SpriteTemplate sSpriteTemplate_DuoFightPre_GroudonShoulder =
{
- .tileTag = 30506,
- .paletteTag = 30505,
- .oam = &sOamData_862A6C4,
- .anims = sSpriteAnimTable_862A74C,
+ .tileTag = TAG_DUOFIGHT_GROUDON_SHOULDER,
+ .paletteTag = TAG_DUOFIGHT_GROUDON,
+ .oam = &sOam_32x32,
+ .anims = sAnims_DuoFightPre_GroudonShoulderKyogreDorsalFin,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const union AnimCmd sSpriteAnim_862A768[] =
+static const union AnimCmd sAnim_DuoFightPre_GroudonClaw[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_862A770[] =
+static const union AnimCmd *const sAnims_DuoFightPre_GroudonClaw[] =
{
- sSpriteAnim_862A768
+ sAnim_DuoFightPre_GroudonClaw
};
-static const struct SpriteTemplate sUnknown_0862A774 =
+static const struct SpriteTemplate sSpriteTemplate_DuoFightPre_GroudonClaw =
{
- .tileTag = 30507,
- .paletteTag = 30505,
- .oam = &sOamData_862A6CC,
- .anims = sSpriteAnimTable_862A770,
+ .tileTag = TAG_DUOFIGHT_GROUDON_CLAW,
+ .paletteTag = TAG_DUOFIGHT_GROUDON,
+ .oam = &sOam_64x32,
+ .anims = sAnims_DuoFightPre_GroudonClaw,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const union AnimCmd sSpriteAnim_862A78C[] =
+static const union AnimCmd sAnim_DuoFightPre_Kyogre_TopLeft[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862A794[] =
+static const union AnimCmd sAnim_DuoFightPre_Kyogre_TopRight[] =
{
ANIMCMD_FRAME(8, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862A79C[] =
+static const union AnimCmd sAnim_DuoFightPre_Kyogre_FaceLeft[] =
{
ANIMCMD_FRAME(16, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862A7A4[] =
+static const union AnimCmd sAnim_DuoFightPre_Kyogre_FaceRight[] =
{
ANIMCMD_FRAME(24, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862A7AC[] =
+static const union AnimCmd sAnim_DuoFightPre_Kyogre_ChinLeft[] =
{
ANIMCMD_FRAME(32, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862A7B4[] =
+static const union AnimCmd sAnim_DuoFightPre_Kyogre_ChinRight[] =
{
ANIMCMD_FRAME(40, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862A7BC[] =
+static const union AnimCmd sAnim_DuoFightPre_Kyogre_LeftPectoralFin[] =
{
ANIMCMD_FRAME(48, 36),
ANIMCMD_FRAME(64, 36),
@@ -358,7 +409,7 @@ static const union AnimCmd sSpriteAnim_862A7BC[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd sSpriteAnim_862A7D0[] =
+static const union AnimCmd sAnim_DuoFightPre_Kyogre_LeftShoulder[] =
{
ANIMCMD_FRAME(56, 36),
ANIMCMD_FRAME(72, 36),
@@ -367,7 +418,7 @@ static const union AnimCmd sSpriteAnim_862A7D0[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd sSpriteAnim_862A7E4[] =
+static const union AnimCmd sAnim_DuoFightPre_Kyogre_RightShoulder[] =
{
ANIMCMD_FRAME(96, 36),
ANIMCMD_FRAME(104, 36),
@@ -376,31 +427,32 @@ static const union AnimCmd sSpriteAnim_862A7E4[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sSpriteAnimTable_862A7F8[] =
+// Edge of the right pectoral fin is its own sprite (see KyogrePectoralFin)
+static const union AnimCmd *const sAnims_DuoFightPre_Kyogre[] =
{
- sSpriteAnim_862A78C,
- sSpriteAnim_862A794,
- sSpriteAnim_862A79C,
- sSpriteAnim_862A7A4,
- sSpriteAnim_862A7AC,
- sSpriteAnim_862A7B4,
- sSpriteAnim_862A7BC,
- sSpriteAnim_862A7D0,
- sSpriteAnim_862A7E4
+ sAnim_DuoFightPre_Kyogre_TopLeft,
+ sAnim_DuoFightPre_Kyogre_TopRight,
+ sAnim_DuoFightPre_Kyogre_FaceLeft,
+ sAnim_DuoFightPre_Kyogre_FaceRight,
+ sAnim_DuoFightPre_Kyogre_ChinLeft,
+ sAnim_DuoFightPre_Kyogre_ChinRight,
+ sAnim_DuoFightPre_Kyogre_LeftPectoralFin,
+ sAnim_DuoFightPre_Kyogre_LeftShoulder,
+ sAnim_DuoFightPre_Kyogre_RightShoulder
};
-static const struct SpriteTemplate sUnknown_0862A81C =
+static const struct SpriteTemplate sSpriteTemplate_DuoFightPre_Kyogre =
{
- .tileTag = 30508,
- .paletteTag = 30508,
- .oam = &sOamData_862A6D4,
- .anims = sSpriteAnimTable_862A7F8,
+ .tileTag = TAG_DUOFIGHT_KYOGRE,
+ .paletteTag = TAG_DUOFIGHT_KYOGRE,
+ .oam = &sOam_32x16,
+ .anims = sAnims_DuoFightPre_Kyogre,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const union AnimCmd sSpriteAnim_862A834[] =
+static const union AnimCmd sAnim_DuoFightPre_KyogrePectoralFin[] =
{
ANIMCMD_FRAME(0, 36),
ANIMCMD_FRAME(2, 36),
@@ -409,41 +461,41 @@ static const union AnimCmd sSpriteAnim_862A834[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sSpriteAnimTable_862A848[] =
+static const union AnimCmd *const sAnims_DuoFightPre_KyogrePectoralFin[] =
{
- sSpriteAnim_862A834
+ sAnim_DuoFightPre_KyogrePectoralFin
};
-static const struct SpriteTemplate sUnknown_0862A84C =
+static const struct SpriteTemplate sSpriteTemplate_DuoFightPre_KyogrePectoralFin =
{
- .tileTag = 30509,
- .paletteTag = 30508,
- .oam = &sOamData_862A6DC,
- .anims = sSpriteAnimTable_862A848,
+ .tileTag = TAG_DUOFIGHT_KYOGRE_PECTORAL_FIN,
+ .paletteTag = TAG_DUOFIGHT_KYOGRE,
+ .oam = &sOam_16x8,
+ .anims = sAnims_DuoFightPre_KyogrePectoralFin,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct SpriteTemplate sUnknown_0862A864 =
+static const struct SpriteTemplate sSpriteTemplate_DuoFightPre_KyogreDorsalFin =
{
- .tileTag = 30510,
- .paletteTag = 30508,
- .oam = &sOamData_862A6C4,
- .anims = sSpriteAnimTable_862A74C,
+ .tileTag = TAG_DUOFIGHT_KYOGRE_DORSAL_FIN,
+ .paletteTag = TAG_DUOFIGHT_KYOGRE,
+ .oam = &sOam_32x32,
+ .anims = sAnims_DuoFightPre_GroudonShoulderKyogreDorsalFin,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct ScanlineEffectParams sUnknown_0862A87C =
+static const struct ScanlineEffectParams sScanlineParams_DuoFight_Clouds =
{
.dmaDest = (vu16 *)REG_ADDR_BG1HOFS,
- .dmaControl = 0xA2600001,
+ .dmaControl = SCANLINE_EFFECT_DMACNT_16BIT,
.initState = 1
};
-static const struct BgTemplate sUnknown_0862A888[] =
+static const struct BgTemplate sBgTemplates_DuoFight[] =
{
{
.bg = 0,
@@ -474,7 +526,7 @@ static const struct BgTemplate sUnknown_0862A888[] =
},
};
-static const union AnimCmd sSpriteAnim_862A894[] =
+static const union AnimCmd sAnim_DuoFight_Groudon_Head[] =
{
ANIMCMD_FRAME(0, 20),
ANIMCMD_FRAME(64, 20),
@@ -483,7 +535,7 @@ static const union AnimCmd sSpriteAnim_862A894[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd sSpriteAnim_862A8A8[] =
+static const union AnimCmd sAnim_DuoFight_Groudon_Body[] =
{
ANIMCMD_FRAME(192, 20),
ANIMCMD_FRAME(256, 20),
@@ -492,124 +544,124 @@ static const union AnimCmd sSpriteAnim_862A8A8[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sSpriteAnimTable_862A8BC[] =
+static const union AnimCmd *const sAnims_DuoFight_Groudon[] =
{
- sSpriteAnim_862A894,
- sSpriteAnim_862A8A8
+ sAnim_DuoFight_Groudon_Head,
+ sAnim_DuoFight_Groudon_Body
};
-static const struct CompressedSpriteSheet sUnknown_0862A8C4 =
+static const struct CompressedSpriteSheet sSpriteSheet_DuoFight_Groudon =
{
- gRaySceneGroudon_Gfx, 0x3000, 30505
+ gRaySceneDuoFight_Groudon_Gfx, 0x3000, TAG_DUOFIGHT_GROUDON
};
-static const struct CompressedSpritePalette sUnknown_0862A8CC =
+static const struct CompressedSpritePalette sSpritePal_DuoFight_Groudon =
{
- gRaySceneGroudon_Pal, 30505
+ gRaySceneDuoFight_Groudon_Pal, TAG_DUOFIGHT_GROUDON
};
-static const struct SpriteTemplate sUnknown_0862A8D4 =
+static const struct SpriteTemplate sSpriteTemplate_DuoFight_Groudon =
{
- .tileTag = 30505,
- .paletteTag = 30505,
- .oam = &sOamData_862A6BC,
- .anims = sSpriteAnimTable_862A8BC,
+ .tileTag = TAG_DUOFIGHT_GROUDON,
+ .paletteTag = TAG_DUOFIGHT_GROUDON,
+ .oam = &sOam_64x64,
+ .anims = sAnims_DuoFight_Groudon,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const union AnimCmd sSpriteAnim_862A8EC[] =
+static const union AnimCmd sAnim_DuoFight_GroudonShoulderKyogreDorsalFin[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_862A8F4[] =
+static const union AnimCmd *const sAnims_DuoFight_GroudonShoulderKyogreDorsalFin[] =
{
- sSpriteAnim_862A8EC
+ sAnim_DuoFight_GroudonShoulderKyogreDorsalFin
};
-static const struct CompressedSpriteSheet sUnknown_0862A8F8 =
+static const struct CompressedSpriteSheet sSpriteSheet_DuoFight_GroudonShoulder =
{
- gRaySceneGroudon2_Gfx, 0x200, 30506
+ gRaySceneDuoFight_GroudonShoulder_Gfx, 0x200, TAG_DUOFIGHT_GROUDON_SHOULDER
};
-static const struct SpriteTemplate sUnknown_0862A900 =
+static const struct SpriteTemplate sSpriteTemplate_DuoFight_GroudonShoulder =
{
- .tileTag = 30506,
- .paletteTag = 30505,
- .oam = &sOamData_862A6C4,
- .anims = sSpriteAnimTable_862A8F4,
+ .tileTag = TAG_DUOFIGHT_GROUDON_SHOULDER,
+ .paletteTag = TAG_DUOFIGHT_GROUDON,
+ .oam = &sOam_32x32,
+ .anims = sAnims_DuoFight_GroudonShoulderKyogreDorsalFin,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const union AnimCmd sSpriteAnim_862A918[] =
+static const union AnimCmd sAnim_DuoFight_GroudonClaw[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_862A920[] =
+static const union AnimCmd *const sAnims_DuoFight_GroudonClaw[] =
{
- sSpriteAnim_862A918
+ sAnim_DuoFight_GroudonClaw
};
-static const struct CompressedSpriteSheet sUnknown_0862A924 =
+static const struct CompressedSpriteSheet sSpriteSheet_DuoFight_GroudonClaw =
{
- gRaySceneGroudon3_Gfx, 0x400, 30507
+ gRaySceneDuoFight_GroudonClaw_Gfx, 0x400, TAG_DUOFIGHT_GROUDON_CLAW
};
-static const struct SpriteTemplate sUnknown_0862A92C =
+static const struct SpriteTemplate sSpriteTemplate_DuoFight_GroudonClaw =
{
- .tileTag = 30507,
- .paletteTag = 30505,
- .oam = &sOamData_862A6CC,
- .anims = sSpriteAnimTable_862A920,
+ .tileTag = TAG_DUOFIGHT_GROUDON_CLAW,
+ .paletteTag = TAG_DUOFIGHT_GROUDON,
+ .oam = &sOam_64x32,
+ .anims = sAnims_DuoFight_GroudonClaw,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const union AnimCmd sSpriteAnim_862A944[] =
+static const union AnimCmd sAnim_DuoFight_Kyogre_TopLeft[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862A94C[] =
+static const union AnimCmd sAnim_DuoFight_Kyogre_TopRight[] =
{
ANIMCMD_FRAME(8, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862A954[] =
+static const union AnimCmd sAnim_DuoFight_Kyogre_FaceLeft[] =
{
ANIMCMD_FRAME(16, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862A95C[] =
+static const union AnimCmd sAnim_DuoFight_Kyogre_FaceRight[] =
{
ANIMCMD_FRAME(24, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862A964[] =
+static const union AnimCmd sAnim_DuoFight_Kyogre_ChinLeft[] =
{
ANIMCMD_FRAME(32, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862A96C[] =
+static const union AnimCmd sAnim_DuoFight_Kyogre_ChinRight[] =
{
ANIMCMD_FRAME(40, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862A974[] =
+static const union AnimCmd sAnim_DuoFight_Kyogre_LeftPectoralFin[] =
{
ANIMCMD_FRAME(48, 24),
ANIMCMD_FRAME(64, 24),
@@ -618,7 +670,7 @@ static const union AnimCmd sSpriteAnim_862A974[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd sSpriteAnim_862A988[] =
+static const union AnimCmd sAnim_DuoFight_Kyogre_LeftShoulder[] =
{
ANIMCMD_FRAME(56, 24),
ANIMCMD_FRAME(72, 24),
@@ -627,7 +679,7 @@ static const union AnimCmd sSpriteAnim_862A988[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd sSpriteAnim_862A99C[] =
+static const union AnimCmd sAnim_DuoFight_Kyogre_RightShoulder[] =
{
ANIMCMD_FRAME(96, 24),
ANIMCMD_FRAME(104, 24),
@@ -636,41 +688,41 @@ static const union AnimCmd sSpriteAnim_862A99C[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sSpriteAnimTable_862A9B0[] =
+static const union AnimCmd *const sAnims_DuoFight_Kyogre[] =
{
- sSpriteAnim_862A944,
- sSpriteAnim_862A94C,
- sSpriteAnim_862A954,
- sSpriteAnim_862A95C,
- sSpriteAnim_862A964,
- sSpriteAnim_862A96C,
- sSpriteAnim_862A974,
- sSpriteAnim_862A988,
- sSpriteAnim_862A99C
+ sAnim_DuoFight_Kyogre_TopLeft,
+ sAnim_DuoFight_Kyogre_TopRight,
+ sAnim_DuoFight_Kyogre_FaceLeft,
+ sAnim_DuoFight_Kyogre_FaceRight,
+ sAnim_DuoFight_Kyogre_ChinLeft,
+ sAnim_DuoFight_Kyogre_ChinRight,
+ sAnim_DuoFight_Kyogre_LeftPectoralFin,
+ sAnim_DuoFight_Kyogre_LeftShoulder,
+ sAnim_DuoFight_Kyogre_RightShoulder
};
-static const struct CompressedSpriteSheet sUnknown_0862A9D4 =
+static const struct CompressedSpriteSheet sSpriteSheet_DuoFight_Kyogre =
{
- gRaySceneKyogre_Gfx, 0xF00, 30508
+ gRaySceneDuoFight_Kyogre_Gfx, 0xF00, TAG_DUOFIGHT_KYOGRE
};
-static const struct CompressedSpritePalette sUnknown_0862A9DC =
+static const struct CompressedSpritePalette sSpritePal_DuoFight_Kyogre =
{
- gRaySceneKyogre_Pal, 30508
+ gRaySceneDuoFight_Kyogre_Pal, TAG_DUOFIGHT_KYOGRE
};
-static const struct SpriteTemplate sUnknown_0862A9E4 =
+static const struct SpriteTemplate sSpriteTemplate_DuoFight_Kyogre =
{
- .tileTag = 30508,
- .paletteTag = 30508,
- .oam = &sOamData_862A6D4,
- .anims = sSpriteAnimTable_862A9B0,
+ .tileTag = TAG_DUOFIGHT_KYOGRE,
+ .paletteTag = TAG_DUOFIGHT_KYOGRE,
+ .oam = &sOam_32x16,
+ .anims = sAnims_DuoFight_Kyogre,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const union AnimCmd sSpriteAnim_862A9FC[] =
+static const union AnimCmd sAnim_DuoFight_KyogrePectoralFin[] =
{
ANIMCMD_FRAME(0, 24),
ANIMCMD_FRAME(2, 24),
@@ -679,44 +731,44 @@ static const union AnimCmd sSpriteAnim_862A9FC[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sSpriteAnimTable_862AA10[] =
+static const union AnimCmd *const sAnims_DuoFight_KyogrePectoralFin[] =
{
- sSpriteAnim_862A9FC
+ sAnim_DuoFight_KyogrePectoralFin
};
-static const struct CompressedSpriteSheet sUnknown_0862AA14 =
+static const struct CompressedSpriteSheet sSpriteSheet_DuoFight_KyogrePectoralFin =
{
- gRaySceneKyogre2_Gfx, 0xC0, 30509
+ gRaySceneDuoFight_KyogrePectoralFin_Gfx, 0xC0, TAG_DUOFIGHT_KYOGRE_PECTORAL_FIN
};
-static const struct SpriteTemplate sUnknown_0862AA1C =
+static const struct SpriteTemplate sSpriteTemplate_DuoFight_KyogrePectoralFin =
{
- .tileTag = 30509,
- .paletteTag = 30508,
- .oam = &sOamData_862A6DC,
- .anims = sSpriteAnimTable_862AA10,
+ .tileTag = TAG_DUOFIGHT_KYOGRE_PECTORAL_FIN,
+ .paletteTag = TAG_DUOFIGHT_KYOGRE,
+ .oam = &sOam_16x8,
+ .anims = sAnims_DuoFight_KyogrePectoralFin,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct CompressedSpriteSheet sUnknown_0862AA34 =
+static const struct CompressedSpriteSheet sSpriteSheet_DuoFight_KyogreDorsalFin =
{
- gRaySceneKyogre3_Gfx, 0x200, 30510
+ gRaySceneDuoFight_KyogreDorsalFin_Gfx, 0x200, TAG_DUOFIGHT_KYOGRE_DORSAL_FIN
};
-static const struct SpriteTemplate sUnknown_0862AA3C =
+static const struct SpriteTemplate sSpriteTemplate_DuoFight_KyogreDorsalFin =
{
- .tileTag = 30510,
- .paletteTag = 30508,
- .oam = &sOamData_862A6C4,
- .anims = sSpriteAnimTable_862A8F4,
+ .tileTag = TAG_DUOFIGHT_KYOGRE_DORSAL_FIN,
+ .paletteTag = TAG_DUOFIGHT_KYOGRE,
+ .oam = &sOam_32x32,
+ .anims = sAnims_DuoFight_GroudonShoulderKyogreDorsalFin,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct BgTemplate sUnknown_0862AA54[] =
+static const struct BgTemplate sBgTemplates_TakesFlight[] =
{
{
.bg = 0,
@@ -747,18 +799,18 @@ static const struct BgTemplate sUnknown_0862AA54[] =
}
};
-static const union AnimCmd sSpriteAnim_862AA60[] =
+static const union AnimCmd sAnim_TakesFlight_Smoke[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_862AA68[] =
+static const union AnimCmd *const sAnims_TakesFlight_Smoke[] =
{
- sSpriteAnim_862AA60
+ sAnim_TakesFlight_Smoke
};
-static const union AffineAnimCmd sSpriteAffineAnim_862AA6C[] =
+static const union AffineAnimCmd sAffineAnim_TakesFlight_Smoke[] =
{
AFFINEANIMCMD_FRAME(-64, -64, 0, 1),
AFFINEANIMCMD_FRAME(32, 32, 0, 14),
@@ -766,47 +818,47 @@ static const union AffineAnimCmd sSpriteAffineAnim_862AA6C[] =
AFFINEANIMCMD_JUMP(0)
};
-static const union AffineAnimCmd *const sSpriteAffineAnimTable_862AA8C[] =
+static const union AffineAnimCmd *const sAffineAnims_TakesFlight_Smoke[] =
{
- sSpriteAffineAnim_862AA6C
+ sAffineAnim_TakesFlight_Smoke
};
-static const struct CompressedSpriteSheet sUnknown_0862AA90 =
+static const struct CompressedSpriteSheet sSpriteSheet_TakesFlight_Smoke =
{
- gRaySceneSmoke_Gfx, 0x100, 30555
+ gRaySceneTakesFlight_Smoke_Gfx, 0x100, TAG_FLIGHT_SMOKE
};
-static const struct CompressedSpritePalette sUnknown_0862AA98 =
+static const struct CompressedSpritePalette sSpritePal_TakesFlight_Smoke =
{
- gRaySceneSmoke_Pal, 30555
+ gRaySceneTakesFlight_Smoke_Pal, TAG_FLIGHT_SMOKE
};
-static const struct SpriteTemplate sUnknown_0862AAA0 =
+static const struct SpriteTemplate sSpriteTemplate_TakesFlight_Smoke =
{
- .tileTag = 30555,
- .paletteTag = 30555,
- .oam = &sOamData_862A6D4,
- .anims = sSpriteAnimTable_862AA68,
+ .tileTag = TAG_FLIGHT_SMOKE,
+ .paletteTag = TAG_FLIGHT_SMOKE,
+ .oam = &sOam_32x16,
+ .anims = sAnims_TakesFlight_Smoke,
.images = NULL,
- .affineAnims = sSpriteAffineAnimTable_862AA8C,
- .callback = sub_81D8260,
+ .affineAnims = sAffineAnims_TakesFlight_Smoke,
+ .callback = SpriteCB_TakesFlight_Smoke,
};
-static const s8 sUnknown_0862AAB8[][2] =
+static const s8 sTakesFlight_SmokeCoords[MAX_SMOKE][2] =
{
- {-1, 5},
- {-3, -4},
- {5, -3},
- {-7, 2},
- {-9, -1},
- {1, -5},
- {3, 4},
- {-5, 3},
- {7, -2},
- {9, 1}
+ {-1, 5},
+ {-3, -4},
+ { 5, -3},
+ {-7, 2},
+ {-9, -1},
+ { 1, -5},
+ { 3, 4},
+ {-5, 3},
+ { 7, -2},
+ { 9, 1}
};
-static const struct BgTemplate sUnknown_0862AACC[] =
+static const struct BgTemplate sBgTemplates_Descends[] =
{
{
.bg = 0,
@@ -846,68 +898,68 @@ static const struct BgTemplate sUnknown_0862AACC[] =
}
};
-static const union AnimCmd sSpriteAnim_862AADC[] =
+static const union AnimCmd sAnim_Descends_Rayquaza[] =
{
ANIMCMD_FRAME(0, 32),
ANIMCMD_FRAME(64, 32),
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sSpriteAnimTable_862AAE8[] =
+static const union AnimCmd *const sAnims_Descends_Rayquaza[] =
{
- sSpriteAnim_862AADC
+ sAnim_Descends_Rayquaza
};
-static const union AnimCmd sSpriteAnim_862AAEC[] =
+static const union AnimCmd sAnim_Descends_RayquazaTail[] =
{
ANIMCMD_FRAME(0, 32),
ANIMCMD_FRAME(8, 32),
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const sSpriteAnimTable_862AAF8[] =
+static const union AnimCmd *const sAnims_Descends_RayquazaTail[] =
{
- sSpriteAnim_862AAEC
+ sAnim_Descends_RayquazaTail
};
-static const struct CompressedSpriteSheet sUnknown_0862AAFC =
+static const struct CompressedSpriteSheet sSpriteSheet_Descends_Rayquaza =
{
- gRaySceneRayquazaFly1_Gfx, 0x1000, 30556
+ gRaySceneDescends_Rayquaza_Gfx, 0x1000, TAG_DESCENDS_RAYQUAZA
};
-static const struct CompressedSpriteSheet sUnknown_0862AB04 =
+static const struct CompressedSpriteSheet sSpriteSheet_Descends_RayquazaTail =
{
- gRaySceneRayquazaTail_Gfx, 0x200, 30557
+ gRaySceneDescends_RayquazaTail_Gfx, 0x200, TAG_DESCENDS_RAYQUAZA_TAIL
};
-static const struct CompressedSpritePalette sUnknown_0862AB0C =
+static const struct CompressedSpritePalette sSpritePal_Descends_Rayquaza =
{
- gRaySceneRayquaza_Pal, 30556
+ gRaySceneTakesFlight_Rayquaza_Pal, TAG_DESCENDS_RAYQUAZA // "Takes flight" palette re-used here
};
-static const struct SpriteTemplate sUnknown_0862AB14 =
+static const struct SpriteTemplate sSpriteTemplate_Descends_Rayquaza =
{
- .tileTag = 30556,
- .paletteTag = 30556,
- .oam = &sOamData_862A6BC,
- .anims = sSpriteAnimTable_862AAE8,
+ .tileTag = TAG_DESCENDS_RAYQUAZA,
+ .paletteTag = TAG_DESCENDS_RAYQUAZA,
+ .oam = &sOam_64x64,
+ .anims = sAnims_Descends_Rayquaza,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct SpriteTemplate sUnknown_0862AB2C =
+static const struct SpriteTemplate sSpriteTemplate_Descends_RayquazaTail =
{
- .tileTag = 30557,
- .paletteTag = 30556,
- .oam = &sOamData_862A6E4,
- .anims = sSpriteAnimTable_862AAF8,
+ .tileTag = TAG_DESCENDS_RAYQUAZA_TAIL,
+ .paletteTag = TAG_DESCENDS_RAYQUAZA,
+ .oam = &sOam_16x32,
+ .anims = sAnims_Descends_RayquazaTail,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct BgTemplate sUnknown_0862AB44[] =
+static const struct BgTemplate sBgTemplates_Charges[] =
{
{
.bg = 0,
@@ -947,13 +999,13 @@ static const struct BgTemplate sUnknown_0862AB44[] =
}
};
-static const union AnimCmd sSpriteAnim_862AB54[] =
+static const union AnimCmd sAnim_ChasesAway_Groudon_Still[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862AB5C[] =
+static const union AnimCmd sAnim_ChasesAway_Groudon_Moving[] =
{
ANIMCMD_FRAME(0, 48),
ANIMCMD_FRAME(64, 32),
@@ -962,113 +1014,113 @@ static const union AnimCmd sSpriteAnim_862AB5C[] =
ANIMCMD_JUMP(0)
};
-static const union AnimCmd *const sSpriteAnimTable_862AB70[] =
+static const union AnimCmd *const sAnims_ChasesAway_Groudon[] =
{
- sSpriteAnim_862AB54,
- sSpriteAnim_862AB5C
+ sAnim_ChasesAway_Groudon_Still,
+ sAnim_ChasesAway_Groudon_Moving
};
-static const union AnimCmd sSpriteAnim_862AB78[] =
+static const union AnimCmd sAnim_ChasesAway_GroudonTail[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_862AB80[] =
+static const union AnimCmd *const sAnims_ChasesAway_GroudonTail[] =
{
- sSpriteAnim_862AB78,
+ sAnim_ChasesAway_GroudonTail,
};
-static const union AnimCmd sSpriteAnim_862AB84[] =
+static const union AnimCmd sAnim_ChasesAway_Kyogre_Front[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862AB8C[] =
+static const union AnimCmd sAnim_ChasesAway_Kyogre_Back[] =
{
ANIMCMD_FRAME(16, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862AB94[] =
+static const union AnimCmd sAnim_ChasesAway_Kyogre_Tail[] =
{
ANIMCMD_FRAME(32, 1),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_862AB9C[] =
+static const union AnimCmd *const sAnims_ChasesAway_Kyogre[] =
{
- sSpriteAnim_862AB84,
- sSpriteAnim_862AB8C,
- sSpriteAnim_862AB94
+ sAnim_ChasesAway_Kyogre_Front,
+ sAnim_ChasesAway_Kyogre_Back,
+ sAnim_ChasesAway_Kyogre_Tail
};
-static const union AnimCmd sSpriteAnim_862ABA8[] =
+static const union AnimCmd sAnim_ChasesAway_Rayquaza_FlyingDown[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862ABB0[] =
+static const union AnimCmd sAnim_ChasesAway_Rayquaza_Arriving[] =
{
ANIMCMD_FRAME(64, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862ABB8[] =
+static const union AnimCmd sAnim_ChasesAway_Rayquaza_Floating[] =
{
ANIMCMD_FRAME(128, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862ABC0[] =
+static const union AnimCmd sAnim_ChasesAway_Rayquaza_Shouting[] =
{
ANIMCMD_FRAME(192, 1),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_862ABC8[] =
+static const union AnimCmd *const sAnims_ChasesAway_Rayquaza[] =
{
- sSpriteAnim_862ABA8,
- sSpriteAnim_862ABB0,
- sSpriteAnim_862ABB8,
- sSpriteAnim_862ABC0
+ sAnim_ChasesAway_Rayquaza_FlyingDown,
+ sAnim_ChasesAway_Rayquaza_Arriving,
+ sAnim_ChasesAway_Rayquaza_Floating,
+ sAnim_ChasesAway_Rayquaza_Shouting
};
-static const union AnimCmd sSpriteAnim_862ABD8[] =
+static const union AnimCmd sAnim_ChasesAway_RayquazaTail_FlyingDown[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862ABE0[] =
+static const union AnimCmd sAnim_ChasesAway_RayquazaTail_Arriving[] =
{
ANIMCMD_FRAME(16, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862ABE8[] =
+static const union AnimCmd sAnim_ChasesAway_RayquazaTail_Floating[] =
{
ANIMCMD_FRAME(32, 1),
ANIMCMD_END
};
-static const union AnimCmd sSpriteAnim_862ABF0[] =
+static const union AnimCmd sAnim_ChasesAway_RayquazaTail_Shouting[] =
{
ANIMCMD_FRAME(48, 1),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_862ABF8[] =
+static const union AnimCmd *const sAnims_ChasesAway_RayquazaTail[] =
{
- sSpriteAnim_862ABD8,
- sSpriteAnim_862ABE0,
- sSpriteAnim_862ABE8,
- sSpriteAnim_862ABF0
+ sAnim_ChasesAway_RayquazaTail_FlyingDown,
+ sAnim_ChasesAway_RayquazaTail_Arriving,
+ sAnim_ChasesAway_RayquazaTail_Floating,
+ sAnim_ChasesAway_RayquazaTail_Shouting
};
-static const union AnimCmd sSpriteAnim_862AC08[] =
+static const union AnimCmd sAnim_ChasesAway_KyogreSplash[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(4, 8),
@@ -1079,128 +1131,128 @@ static const union AnimCmd sSpriteAnim_862AC08[] =
ANIMCMD_JUMP(0)
};
-static const union AnimCmd *const sSpriteAnimTable_862AC24[] =
+static const union AnimCmd *const sAnims_ChasesAway_KyogreSplash[] =
{
- sSpriteAnim_862AC08
+ sAnim_ChasesAway_KyogreSplash
};
-static const struct CompressedSpriteSheet sUnknown_0862AC28 =
+static const struct CompressedSpriteSheet sSpriteSheet_ChasesAway_Groudon =
{
- gRaySceneGroudonLeft_Gfx, 0x1800, 30565
+ gRaySceneChasesAway_Groudon_Gfx, 0x1800, TAG_CHASE_GROUDON
};
-static const struct CompressedSpriteSheet sUnknown_0862AC30 =
+static const struct CompressedSpriteSheet sSpriteSheet_ChasesAway_GroudonTail =
{
- gRaySceneGroudonTail_Gfx, 0x80, 30566
+ gRaySceneChasesAway_GroudonTail_Gfx, 0x80, TAG_CHASE_GROUDON_TAIL
};
-static const struct CompressedSpriteSheet sUnknown_0862AC38 =
+static const struct CompressedSpriteSheet sSpriteSheet_ChasesAway_Kyogre =
{
- gRaySceneKyogreRight_Gfx, 0x600, 30568
+ gRaySceneChasesAway_Kyogre_Gfx, 0x600, TAG_CHASE_KYOGRE
};
-static const struct CompressedSpriteSheet sUnknown_0862AC40 =
+static const struct CompressedSpriteSheet sSpriteSheet_ChasesAway_Rayquaza =
{
- gRaySceneRayquazaHover_Gfx, 0x2000, 30569
+ gRaySceneChasesAway_Rayquaza_Gfx, 0x2000, TAG_CHASE_RAYQUAZA
};
-static const struct CompressedSpriteSheet sUnknown_0862AC48 =
+static const struct CompressedSpriteSheet sSpriteSheet_ChasesAway_RayquazaTail =
{
- gRaySceneRayquazaFlyIn_Gfx, 0x800, 30570
+ gRaySceneChasesAway_RayquazaTail_Gfx, 0x800, TAG_CHASE_RAYQUAZA_TAIL
};
-static const struct CompressedSpriteSheet sUnknown_0862AC50 =
+static const struct CompressedSpriteSheet sSpriteSheet_ChasesAway_KyogreSplash =
{
- gRaySceneSplash_Gfx, 0x300, 30571
+ gRaySceneChasesAway_KyogreSplash_Gfx, 0x300, TAG_CHASE_SPLASH
};
-static const struct CompressedSpritePalette sUnknown_0862AC58 =
+static const struct CompressedSpritePalette sSpritePal_ChasesAway_Groudon =
{
- gRaySceneGroudonLeft_Pal, 30565
+ gRaySceneChasesAway_Groudon_Pal, TAG_CHASE_GROUDON
};
-static const struct CompressedSpritePalette sUnknown_0862AC60 =
+static const struct CompressedSpritePalette sSpritePal_ChasesAway_Kyogre =
{
- gRaySceneKyogreRight_Pal, 30568
+ gRaySceneChasesAway_Kyogre_Pal, TAG_CHASE_KYOGRE
};
-static const struct CompressedSpritePalette sUnknown_0862AC68 =
+static const struct CompressedSpritePalette sSpritePal_ChasesAway_Rayquaza =
{
- gRaySceneRayquazaHover_Pal, 30569
+ gRaySceneChasesAway_Rayquaza_Pal, TAG_CHASE_RAYQUAZA
};
-static const struct CompressedSpritePalette sUnknown_0862AC70 =
+static const struct CompressedSpritePalette sSpritePal_ChasesAway_KyogreSplash =
{
- gRaySceneSplash_Pal, 30571
+ gRaySceneChasesAway_KyogreSplash_Pal, TAG_CHASE_SPLASH
};
-static const struct SpriteTemplate sUnknown_0862AC78 =
+static const struct SpriteTemplate sSpriteTemplate_ChasesAway_Groudon =
{
- .tileTag = 30565,
- .paletteTag = 30565,
- .oam = &sOamData_862A6BC,
- .anims = sSpriteAnimTable_862AB70,
+ .tileTag = TAG_CHASE_GROUDON,
+ .paletteTag = TAG_CHASE_GROUDON,
+ .oam = &sOam_64x64,
+ .anims = sAnims_ChasesAway_Groudon,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct SpriteTemplate sUnknown_0862AC90 =
+static const struct SpriteTemplate sSpriteTemplate_ChasesAway_GroudonTail =
{
- .tileTag = 30566,
- .paletteTag = 30565,
- .oam = &sOamData_862A6EC,
- .anims = sSpriteAnimTable_862AB80,
+ .tileTag = TAG_CHASE_GROUDON_TAIL,
+ .paletteTag = TAG_CHASE_GROUDON,
+ .oam = &sOam_16x16,
+ .anims = sAnims_ChasesAway_GroudonTail,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct SpriteTemplate sUnknown_0862ACA8 =
+static const struct SpriteTemplate sSpriteTemplate_ChasesAway_Kyogre =
{
- .tileTag = 30568,
- .paletteTag = 30568,
- .oam = &sOamData_862A6C4,
- .anims = sSpriteAnimTable_862AB9C,
+ .tileTag = TAG_CHASE_KYOGRE,
+ .paletteTag = TAG_CHASE_KYOGRE,
+ .oam = &sOam_32x32,
+ .anims = sAnims_ChasesAway_Kyogre,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct SpriteTemplate sUnknown_0862ACC0 =
+static const struct SpriteTemplate sSpriteTemplate_ChasesAway_Rayquaza =
{
- .tileTag = 30569,
- .paletteTag = 30569,
- .oam = &sOamData_862A6BC,
- .anims = sSpriteAnimTable_862ABC8,
+ .tileTag = TAG_CHASE_RAYQUAZA,
+ .paletteTag = TAG_CHASE_RAYQUAZA,
+ .oam = &sOam_64x64,
+ .anims = sAnims_ChasesAway_Rayquaza,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81D961C,
+ .callback = SpriteCB_ChasesAway_Rayquaza,
};
-static const struct SpriteTemplate sUnknown_0862ACD8 =
+static const struct SpriteTemplate sSpriteTemplate_ChasesAway_RayquazaTail =
{
- .tileTag = 30570,
- .paletteTag = 30569,
- .oam = &sOamData_862A6C4,
- .anims = sSpriteAnimTable_862ABF8,
+ .tileTag = TAG_CHASE_RAYQUAZA_TAIL,
+ .paletteTag = TAG_CHASE_RAYQUAZA,
+ .oam = &sOam_32x32,
+ .anims = sAnims_ChasesAway_RayquazaTail,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct SpriteTemplate sUnknown_0862ACF0 =
+static const struct SpriteTemplate sSpriteTemplate_ChasesAway_KyogreSplash =
{
- .tileTag = 30571,
- .paletteTag = 30571,
- .oam = &sOamData_862A6F4,
- .anims = sSpriteAnimTable_862AC24,
+ .tileTag = TAG_CHASE_SPLASH,
+ .paletteTag = TAG_CHASE_SPLASH,
+ .oam = &sOam_32x8,
+ .anims = sAnims_ChasesAway_KyogreSplash,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct BgTemplate sUnknown_0862AD08[] =
+static const struct BgTemplate sBgTemplates_ChasesAway[] =
{
{
.bg = 0,
@@ -1231,13 +1283,12 @@ static const struct BgTemplate sUnknown_0862AD08[] =
}
};
-// code
-void DoRayquazaScene(u8 animId, bool8 onlyOneAnim, void (*callback)(void))
+void DoRayquazaScene(u8 animId, bool8 endEarly, void (*exitCallback)(void))
{
sRayScene = AllocZeroed(sizeof(*sRayScene));
sRayScene->animId = animId;
- sRayScene->callback = callback;
- sRayScene->onlyOneAnim = onlyOneAnim;
+ sRayScene->exitCallback = exitCallback;
+ sRayScene->endEarly = endEarly;
SetMainCallback2(CB2_InitRayquazaScene);
}
@@ -1250,7 +1301,7 @@ static void CB2_InitRayquazaScene(void)
ResetPaletteFade();
ResetSpriteData();
ResetTasks();
- FillPalette(0, 0xF0, 0x20);
+ FillPalette(RGB_BLACK, 0xF0, 32);
CreateTask(sTasksForAnimations[sRayScene->animId], 0);
SetMainCallback2(CB2_RayquazaScene);
}
@@ -1277,7 +1328,7 @@ static void Task_EndAfterFadeScreen(u8 taskId)
{
ResetSpriteData();
FreeAllSpritePalettes();
- SetMainCallback2(sRayScene->callback);
+ SetMainCallback2(sRayScene->exitCallback);
Free(sRayScene);
DestroyTask(taskId);
}
@@ -1287,83 +1338,97 @@ static void Task_SetNextAnim(u8 taskId)
{
if (!gPaletteFade.active)
{
- if (sRayScene->onlyOneAnim == TRUE)
+ if (sRayScene->endEarly == TRUE)
{
gTasks[taskId].func = Task_EndAfterFadeScreen;
}
else
{
sRayScene->animId++;
- sRayScene->field_2004 = 0;
+ sRayScene->unk = 0;
gTasks[taskId].func = sTasksForAnimations[sRayScene->animId];
}
}
}
-static void sub_81D68C8(void)
+// The cutscene window is cropped to a narrower view, with black borders on each vertical edge
+// This function is used in scenes where sprites in these borders need to be hidden
+static void SetWindowsHideVertBorders(void)
{
- SetGpuReg(REG_OFFSET_WININ, 0x3F);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_ALL);
SetGpuReg(REG_OFFSET_WINOUT, 0);
- SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
- SetGpuReg(REG_OFFSET_WIN0V, 0x1888);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, DISPLAY_WIDTH));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(24, DISPLAY_HEIGHT - 24));
gPlttBufferUnfaded[0] = 0;
gPlttBufferFaded[0] = 0;
}
-static void sub_81D6904(void)
+static void ResetWindowDimensions(void)
{
- SetGpuReg(REG_OFFSET_WININ, 0x3F);
- SetGpuReg(REG_OFFSET_WINOUT, 0x3F);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_ALL);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_ALL);
}
+
+// RAY_ANIM_DUO_FIGHT / RAY_ANIM_DUO_FIGHT_PRE
+
+#define tTimer data[0]
+#define tHelperTaskId data[1]
+#define tGroudonSpriteId data[2]
+#define tKyogreSpriteId data[3]
+
+#define sGroudonBodySpriteId data[0]
+#define sGroudonShoulderSpriteId data[1]
+#define sGroudonClawSpriteId data[2]
+
static void Task_HandleDuoFightPre(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_81D750C();
+ DuoFight_AnimateRain();
if (!gPaletteFade.active)
{
- s16 counter = data[0];
- if (counter == 64)
+ s16 frame = tTimer;
+ if (frame == 64)
{
- sub_81D7438();
+ DuoFight_Lightning1();
}
- else if (counter == 144)
+ else if (frame == 144)
{
- sub_81D7480();
+ DuoFight_Lightning2();
}
else
{
- switch (counter)
+ switch (frame)
{
case 328:
DuoFightEnd(taskId, 0);
return;
case 148:
- sub_81D74C8();
+ DuoFight_LightningLong();
break;
}
}
- data[0]++;
+ tTimer++;
}
}
-static u8 sub_81D6984(void)
+static u8 DuoFightPre_CreateGroudonSprites(void)
{
u8 spriteId;
s16 *data;
- spriteId = CreateSprite(&sUnknown_0862A72C, 88, 72, 3);
- gSprites[spriteId].callback = sub_81D6A20;
+ spriteId = CreateSprite(&sSpriteTemplate_DuoFightPre_Groudon, 88, 72, 3);
+ gSprites[spriteId].callback = SpriteCB_DuoFightPre_Groudon;
data = gSprites[spriteId].data;
- data[0] = CreateSprite(&sUnknown_0862A72C, 56, 104, 3);
- data[1] = CreateSprite(&sUnknown_0862A750, 75, 101, 0);
- data[2] = CreateSprite(&sUnknown_0862A774, 109, 114, 1);
- StartSpriteAnim(&gSprites[data[0]], 1);
+ sGroudonBodySpriteId = CreateSprite(&sSpriteTemplate_DuoFightPre_Groudon, 56, 104, 3);
+ sGroudonShoulderSpriteId = CreateSprite(&sSpriteTemplate_DuoFightPre_GroudonShoulder, 75, 101, 0);
+ sGroudonClawSpriteId = CreateSprite(&sSpriteTemplate_DuoFightPre_GroudonClaw, 109, 114, 1);
+ StartSpriteAnim(&gSprites[sGroudonBodySpriteId], 1);
return spriteId;
}
-static void sub_81D6A20(struct Sprite *sprite)
+static void SpriteCB_DuoFightPre_Groudon(struct Sprite *sprite)
{
s16 *data = sprite->data;
data[5]++;
@@ -1371,54 +1436,54 @@ static void sub_81D6A20(struct Sprite *sprite)
if (data[5] == 0 && sprite->pos1.x != 72)
{
sprite->pos1.x--;
- gSprites[sprite->data[0]].pos1.x--;
- gSprites[data[1]].pos1.x--;
- gSprites[data[2]].pos1.x--;
+ gSprites[sprite->sGroudonBodySpriteId].pos1.x--;
+ gSprites[sGroudonShoulderSpriteId].pos1.x--;
+ gSprites[sGroudonClawSpriteId].pos1.x--;
}
switch (sprite->animCmdIndex)
{
case 0:
- gSprites[data[1]].pos2.x = 0;
- gSprites[data[1]].pos2.y = 0;
- gSprites[data[2]].pos2.x = 0;
- gSprites[data[2]].pos2.y = 0;
+ gSprites[sGroudonShoulderSpriteId].pos2.x = 0;
+ gSprites[sGroudonShoulderSpriteId].pos2.y = 0;
+ gSprites[sGroudonClawSpriteId].pos2.x = 0;
+ gSprites[sGroudonClawSpriteId].pos2.y = 0;
break;
case 1:
case 3:
- gSprites[data[1]].pos2.x = -1;
- gSprites[data[1]].pos2.y = 0;
- gSprites[data[2]].pos2.x = -1;
- gSprites[data[2]].pos2.y = 0;
+ gSprites[sGroudonShoulderSpriteId].pos2.x = -1;
+ gSprites[sGroudonShoulderSpriteId].pos2.y = 0;
+ gSprites[sGroudonClawSpriteId].pos2.x = -1;
+ gSprites[sGroudonClawSpriteId].pos2.y = 0;
break;
case 2:
- gSprites[data[1]].pos2.x = -1;
- gSprites[data[1]].pos2.y = 1;
- gSprites[data[2]].pos2.x = -2;
- gSprites[data[2]].pos2.y = 1;
+ gSprites[sGroudonShoulderSpriteId].pos2.x = -1;
+ gSprites[sGroudonShoulderSpriteId].pos2.y = 1;
+ gSprites[sGroudonClawSpriteId].pos2.x = -2;
+ gSprites[sGroudonClawSpriteId].pos2.y = 1;
break;
}
}
-static u8 sub_81D6B7C(void)
+static u8 DuoFightPre_CreateKyogreSprites(void)
{
u8 spriteId;
s16 *data;
- spriteId = CreateSprite(&sUnknown_0862A81C, 136, 96, 1);
- gSprites[spriteId].callback = sub_81D6D20;
+ spriteId = CreateSprite(&sSpriteTemplate_DuoFightPre_Kyogre, 136, 96, 1);
+ gSprites[spriteId].callback = SpriteCB_DuoFightPre_Kyogre;
data = gSprites[spriteId].data;
- data[0] = CreateSprite(&sUnknown_0862A81C, 168, 96, 1) << 8;
- data[0] |= CreateSprite(&sUnknown_0862A81C, 136, 112, 1);
- data[1] = CreateSprite(&sUnknown_0862A81C, 168, 112, 1) << 8;
- data[1] |= CreateSprite(&sUnknown_0862A81C, 136, 128, 1);
- data[2] = CreateSprite(&sUnknown_0862A81C, 168, 128, 1) << 8;
- data[2] |= CreateSprite(&sUnknown_0862A81C, 104, 128, 2);
- data[3] = CreateSprite(&sUnknown_0862A81C, 136, 128, 2) << 8;
- data[3] |= CreateSprite(&sUnknown_0862A81C, 184, 128, 0);
- data[4] = CreateSprite(&sUnknown_0862A84C, 208, 132, 0) << 8;
- data[4] |= CreateSprite(&sUnknown_0862A864, 200, 120, 1);
+ data[0] = CreateSprite(&sSpriteTemplate_DuoFightPre_Kyogre, 168, 96, 1) << 8;
+ data[0] |= CreateSprite(&sSpriteTemplate_DuoFightPre_Kyogre, 136, 112, 1);
+ data[1] = CreateSprite(&sSpriteTemplate_DuoFightPre_Kyogre, 168, 112, 1) << 8;
+ data[1] |= CreateSprite(&sSpriteTemplate_DuoFightPre_Kyogre, 136, 128, 1);
+ data[2] = CreateSprite(&sSpriteTemplate_DuoFightPre_Kyogre, 168, 128, 1) << 8;
+ data[2] |= CreateSprite(&sSpriteTemplate_DuoFightPre_Kyogre, 104, 128, 2);
+ data[3] = CreateSprite(&sSpriteTemplate_DuoFightPre_Kyogre, 136, 128, 2) << 8;
+ data[3] |= CreateSprite(&sSpriteTemplate_DuoFightPre_Kyogre, 184, 128, 0);
+ data[4] = CreateSprite(&sSpriteTemplate_DuoFightPre_KyogrePectoralFin, 208, 132, 0) << 8;
+ data[4] |= CreateSprite(&sSpriteTemplate_DuoFightPre_KyogreDorsalFin, 200, 120, 1);
StartSpriteAnim(&gSprites[data[0] >> 8], 1);
StartSpriteAnim(&gSprites[data[0] & 0xFF], 2);
@@ -1432,7 +1497,7 @@ static u8 sub_81D6B7C(void)
return spriteId;
}
-static void sub_81D6D20(struct Sprite *sprite)
+static void SpriteCB_DuoFightPre_Kyogre(struct Sprite *sprite)
{
s16 *data = sprite->data;
data[5]++;
@@ -1499,11 +1564,11 @@ static void VBlankCB_DuoFight(void)
ScanlineEffect_InitHBlankDmaTransfer();
}
-static void sub_81D6FE0(void)
+static void InitDuoFightSceneBgs(void)
{
ResetVramOamAndBgCntRegs();
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, sUnknown_0862A888, ARRAY_COUNT(sUnknown_0862A888));
+ InitBgsFromTemplates(0, sBgTemplates_DuoFight, ARRAY_COUNT(sBgTemplates_DuoFight));
SetBgTilemapBuffer(0, sRayScene->tilemapBuffers[0]);
SetBgTilemapBuffer(1, sRayScene->tilemapBuffers[1]);
SetBgTilemapBuffer(2, sRayScene->tilemapBuffers[2]);
@@ -1518,46 +1583,46 @@ static void sub_81D6FE0(void)
SetGpuReg(REG_OFFSET_BLDCNT, 0);
}
-static void sub_81D706C(void)
+static void LoadDuoFightSceneGfx(void)
{
ResetTempTileDataBuffers();
- DecompressAndCopyTileDataToVram(0, gRaySceneClouds_Gfx, 0, 0, 0);
- while (FreeTempTileDataBuffersIfPossible());
-
- LZDecompressWram(gRaySceneClouds2_Tilemap, sRayScene->tilemapBuffers[0]);
- LZDecompressWram(gRaySceneClouds1_Tilemap, sRayScene->tilemapBuffers[1]);
- LZDecompressWram(gRaySceneClouds3_Tilemap, sRayScene->tilemapBuffers[2]);
- LoadCompressedPalette(gRaySceneClouds_Pal, 0, 0x40);
- LoadCompressedSpriteSheet(&sUnknown_0862A8C4);
- LoadCompressedSpriteSheet(&sUnknown_0862A8F8);
- LoadCompressedSpriteSheet(&sUnknown_0862A924);
- LoadCompressedSpriteSheet(&sUnknown_0862A9D4);
- LoadCompressedSpriteSheet(&sUnknown_0862AA14);
- LoadCompressedSpriteSheet(&sUnknown_0862AA34);
- LoadCompressedSpritePalette(&sUnknown_0862A8CC);
- LoadCompressedSpritePalette(&sUnknown_0862A9DC);
+ DecompressAndCopyTileDataToVram(0, gRaySceneDuoFight_Clouds_Gfx, 0, 0, 0);
+ while (FreeTempTileDataBuffersIfPossible())
+ ;
+ LZDecompressWram(gRaySceneDuoFight_Clouds2_Tilemap, sRayScene->tilemapBuffers[0]);
+ LZDecompressWram(gRaySceneDuoFight_Clouds1_Tilemap, sRayScene->tilemapBuffers[1]);
+ LZDecompressWram(gRaySceneDuoFight_Clouds3_Tilemap, sRayScene->tilemapBuffers[2]);
+ LoadCompressedPalette(gRaySceneDuoFight_Clouds_Pal, 0, 0x40);
+ LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_Groudon);
+ LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_GroudonShoulder);
+ LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_GroudonClaw);
+ LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_Kyogre);
+ LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_KyogrePectoralFin);
+ LoadCompressedSpriteSheet(&sSpriteSheet_DuoFight_KyogreDorsalFin);
+ LoadCompressedSpritePalette(&sSpritePal_DuoFight_Groudon);
+ LoadCompressedSpritePalette(&sSpritePal_DuoFight_Kyogre);
}
static void Task_DuoFightAnim(u8 taskId)
{
s16 *data = gTasks[taskId].data;
ScanlineEffect_Clear();
- sub_81D6FE0();
- sub_81D706C();
+ InitDuoFightSceneBgs();
+ LoadDuoFightSceneGfx();
CpuFastFill16(0, gScanlineEffectRegBuffers, sizeof(gScanlineEffectRegBuffers));
- ScanlineEffect_SetParams(sUnknown_0862A87C);
- data[0] = 0;
- data[1] = CreateTask(sub_81D7228, 0);
+ ScanlineEffect_SetParams(sScanlineParams_DuoFight_Clouds);
+ tTimer = 0;
+ tHelperTaskId = CreateTask(Task_DuoFight_AnimateClouds, 0);
if (sRayScene->animId == RAY_ANIM_DUO_FIGHT_PRE)
{
- data[2] = sub_81D6984();
- data[3] = sub_81D6B7C();
+ tGroudonSpriteId = DuoFightPre_CreateGroudonSprites();
+ tKyogreSpriteId = DuoFightPre_CreateKyogreSprites();
gTasks[taskId].func = Task_HandleDuoFightPre;
}
else
{
- data[2] = sub_81D7664();
- data[3] = sub_81D78BC();
+ tGroudonSpriteId = DuoFight_CreateGroudonSprites();
+ tKyogreSpriteId = DuoFight_CreateKyogreSprites();
gTasks[taskId].func = Task_HandleDuoFight;
StopMapMusic();
}
@@ -1568,7 +1633,7 @@ static void Task_DuoFightAnim(u8 taskId)
PlaySE(SE_DOWNPOUR);
}
-static void sub_81D7228(u8 taskId)
+static void Task_DuoFight_AnimateClouds(u8 taskId)
{
s16 i;
u16 *data = gTasks[taskId].data;
@@ -1630,85 +1695,89 @@ static void sub_81D7228(u8 taskId)
static void Task_HandleDuoFight(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_81D750C();
+ DuoFight_AnimateRain();
if (!gPaletteFade.active)
{
- s16 counter = data[0];
- if (counter == 32 || counter == 112)
+ s16 frame = tTimer;
+ if (frame == 32 || frame == 112)
{
- sub_81D7438();
+ DuoFight_Lightning1();
}
- else if (counter == 216)
+ else if (frame == 216)
{
- sub_81D7480();
+ DuoFight_Lightning2();
}
- else if (counter == 220)
+ else if (frame == 220)
{
- sub_81D74C8();
+ DuoFight_LightningLong();
}
else
{
- switch (counter)
+ switch (frame)
{
case 412:
DuoFightEnd(taskId, 2);
return;
case 380:
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_TGT2_BG1 | BLDCNT_EFFECT_BLEND);
- gTasks[data[1]].func = sub_81D752C;
- gTasks[data[1]].data[0] = 0;
- gTasks[data[1]].data[2] = data[2];
- gTasks[data[1]].data[3] = data[3];
+ gTasks[tHelperTaskId].func = DuoFight_PanOffScene;
+ gTasks[tHelperTaskId].data[0] = 0;
+ gTasks[tHelperTaskId].data[2] = data[2];
+ gTasks[tHelperTaskId].data[3] = data[3];
ScanlineEffect_Stop();
break;
}
}
- data[0]++;
+ tTimer++;
}
}
-static void sub_81D7438(void)
+// In the below functions, BlendPalettesGradually flashes the bg white and the duo black
+// and gradually fades them back to original color to simulate lightning
+static void DuoFight_Lightning1(void)
{
PlaySE(SE_THUNDER);
- sub_80A2C44(0x7FFF, 0, 0x10, 0, -1, 0, 0);
- sub_80A2C44(0xFFFF0000, 0, 0x10, 0, 0, 0, 1);
+ BlendPalettesGradually(0x00007FFF, 0, 16, 0, RGB_WHITEALPHA, 0, 0);
+ BlendPalettesGradually(0xFFFF0000, 0, 16, 0, RGB_BLACK, 0, 1);
}
-static void sub_81D7480(void)
+static void DuoFight_Lightning2(void)
{
PlaySE(SE_THUNDER);
- sub_80A2C44(0x7FFF, 0, 0x10, 0x10, -1, 0, 0);
- sub_80A2C44(0xFFFF0000, 0, 0x10, 0x10, 0, 0, 1);
+ BlendPalettesGradually(0x00007FFF, 0, 16, 16, RGB_WHITEALPHA, 0, 0);
+ BlendPalettesGradually(0xFFFF0000, 0, 16, 16, RGB_BLACK, 0, 1);
}
-static void sub_81D74C8(void)
+static void DuoFight_LightningLong(void)
{
- sub_80A2C44(0x7FFF, 4, 0x10, 0, -1, 0, 0);
- sub_80A2C44(0xFFFF0000, 4, 0x10, 0, 0, 0, 1);
+ BlendPalettesGradually(0x00007FFF, 4, 16, 0, RGB_WHITEALPHA, 0, 0);
+ BlendPalettesGradually(0xFFFF0000, 4, 16, 0, RGB_BLACK, 0, 1);
}
-static void sub_81D750C(void)
+static void DuoFight_AnimateRain(void)
{
ChangeBgX(2, 0x400, 1);
ChangeBgY(2, 0x800, 2);
}
-static void sub_81D752C(u8 taskId)
+// Only used by the full version, which pans up at the end (so scene objects move down)
+// DuoFightPre just fades to black with no pan
+static void DuoFight_PanOffScene(u8 taskId)
{
u16 bgY;
s16 *data = gTasks[taskId].data;
- sub_81D7860(&gSprites[data[2]]);
- sub_81D7D14(&gSprites[data[3]]);
+ DuoFight_SlideGroudonDown(&gSprites[tGroudonSpriteId]);
+ DuoFight_SlideKyogreDown(&gSprites[tKyogreSpriteId]);
bgY = GetBgY(1);
if (GetBgY(1) == 0 || bgY > 0x8000)
ChangeBgY(1, 0x400, 2);
- if (data[0] != 16)
+ if (tTimer != 16)
{
- data[0]++;
- SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - data[0], data[0]));
+ tTimer++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - tTimer, tTimer));
}
}
@@ -1722,36 +1791,36 @@ static void DuoFightEnd(u8 taskId, s8 palDelay)
static void Task_DuoFightEnd(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_81D750C();
+ DuoFight_AnimateRain();
if (!gPaletteFade.active)
{
- DestroyTask(data[1]);
+ DestroyTask(tHelperTaskId);
ChangeBgY(1, 0, 0);
SetVBlankCallback(NULL);
ScanlineEffect_Stop();
ResetSpriteData();
FreeAllSpritePalettes();
- data[0] = 0;
+ tTimer = 0;
gTasks[taskId].func = Task_SetNextAnim;
}
}
-static u8 sub_81D7664(void)
+static u8 DuoFight_CreateGroudonSprites(void)
{
u8 spriteId;
s16 *data;
- spriteId = CreateSprite(&sUnknown_0862A8D4, 98, 72, 3);
- gSprites[spriteId].callback = sub_81D7700;
+ spriteId = CreateSprite(&sSpriteTemplate_DuoFight_Groudon, 98, 72, 3);
+ gSprites[spriteId].callback = SpriteCB_DuoFight_Groudon;
data = gSprites[spriteId].data;
- data[0] = CreateSprite(&sUnknown_0862A8D4, 66, 104, 3);
- data[1] = CreateSprite(&sUnknown_0862A900, 85, 101, 0);
- data[2] = CreateSprite(&sUnknown_0862A92C, 119, 114, 1);
- StartSpriteAnim(&gSprites[data[0]], 1);
+ sGroudonBodySpriteId = CreateSprite(&sSpriteTemplate_DuoFight_Groudon, 66, 104, 3);
+ sGroudonShoulderSpriteId = CreateSprite(&sSpriteTemplate_DuoFight_GroudonShoulder, 85, 101, 0);
+ sGroudonClawSpriteId = CreateSprite(&sSpriteTemplate_DuoFight_GroudonClaw, 119, 114, 1);
+ StartSpriteAnim(&gSprites[sGroudonBodySpriteId], 1);
return spriteId;
}
-static void sub_81D7700(struct Sprite *sprite)
+static void SpriteCB_DuoFight_Groudon(struct Sprite *sprite)
{
s16 *data = sprite->data;
data[5]++;
@@ -1759,66 +1828,66 @@ static void sub_81D7700(struct Sprite *sprite)
if (!(data[5] & 7) && sprite->pos1.x != 72)
{
sprite->pos1.x--;
- gSprites[sprite->data[0]].pos1.x--;
- gSprites[data[1]].pos1.x--;
- gSprites[data[2]].pos1.x--;
+ gSprites[sprite->sGroudonBodySpriteId].pos1.x--;
+ gSprites[sGroudonShoulderSpriteId].pos1.x--;
+ gSprites[sGroudonClawSpriteId].pos1.x--;
}
switch (sprite->animCmdIndex)
{
case 0:
- gSprites[data[1]].pos2.x = 0;
- gSprites[data[1]].pos2.y = 0;
- gSprites[data[2]].pos2.x = 0;
- gSprites[data[2]].pos2.y = 0;
+ gSprites[sGroudonShoulderSpriteId].pos2.x = 0;
+ gSprites[sGroudonShoulderSpriteId].pos2.y = 0;
+ gSprites[sGroudonClawSpriteId].pos2.x = 0;
+ gSprites[sGroudonClawSpriteId].pos2.y = 0;
break;
case 1:
case 3:
- gSprites[data[1]].pos2.x = -1;
- gSprites[data[1]].pos2.y = 0;
- gSprites[data[2]].pos2.x = -1;
- gSprites[data[2]].pos2.y = 0;
+ gSprites[sGroudonShoulderSpriteId].pos2.x = -1;
+ gSprites[sGroudonShoulderSpriteId].pos2.y = 0;
+ gSprites[sGroudonClawSpriteId].pos2.x = -1;
+ gSprites[sGroudonClawSpriteId].pos2.y = 0;
break;
case 2:
- gSprites[data[1]].pos2.x = -1;
- gSprites[data[1]].pos2.y = 1;
- gSprites[data[2]].pos2.x = -2;
- gSprites[data[2]].pos2.y = 1;
+ gSprites[sGroudonShoulderSpriteId].pos2.x = -1;
+ gSprites[sGroudonShoulderSpriteId].pos2.y = 1;
+ gSprites[sGroudonClawSpriteId].pos2.x = -2;
+ gSprites[sGroudonClawSpriteId].pos2.y = 1;
break;
}
}
-static void sub_81D7860(struct Sprite *sprite)
+static void DuoFight_SlideGroudonDown(struct Sprite *sprite)
{
s16 *data = sprite->data;
if (sprite->pos1.y <= 160)
{
sprite->pos1.y += 8;
- gSprites[sprite->data[0]].pos1.y += 8;
- gSprites[data[1]].pos1.y += 8;
- gSprites[data[2]].pos1.y += 8;
+ gSprites[sprite->sGroudonBodySpriteId].pos1.y += 8;
+ gSprites[sGroudonShoulderSpriteId].pos1.y += 8;
+ gSprites[sGroudonClawSpriteId].pos1.y += 8;
}
}
-static u8 sub_81D78BC(void)
+static u8 DuoFight_CreateKyogreSprites(void)
{
u8 spriteId;
s16 *data;
- spriteId = CreateSprite(&sUnknown_0862A9E4, 126, 96, 1);
- gSprites[spriteId].callback = sub_81D7A60;
+ spriteId = CreateSprite(&sSpriteTemplate_DuoFight_Kyogre, 126, 96, 1);
+ gSprites[spriteId].callback = SpriteCB_DuoFight_Kyogre;
data = gSprites[spriteId].data;
- data[0] = CreateSprite(&sUnknown_0862A9E4, 158, 96, 1) << 8;
- data[0] |= CreateSprite(&sUnknown_0862A9E4, 126, 112, 1);
- data[1] = CreateSprite(&sUnknown_0862A9E4, 158, 112, 1) << 8;
- data[1] |= CreateSprite(&sUnknown_0862A9E4, 126, 128, 1);
- data[2] = CreateSprite(&sUnknown_0862A9E4, 158, 128, 1) << 8;
- data[2] |= CreateSprite(&sUnknown_0862A9E4, 94, 128, 2);
- data[3] = CreateSprite(&sUnknown_0862A9E4, 126, 128, 2) << 8;
- data[3] |= CreateSprite(&sUnknown_0862A9E4, 174, 128, 0);
- data[4] = CreateSprite(&sUnknown_0862AA1C, 198, 132, 0) << 8;
- data[4] |= CreateSprite(&sUnknown_0862AA3C, 190, 120, 1);
+ data[0] = CreateSprite(&sSpriteTemplate_DuoFight_Kyogre, 158, 96, 1) << 8;
+ data[0] |= CreateSprite(&sSpriteTemplate_DuoFight_Kyogre, 126, 112, 1);
+ data[1] = CreateSprite(&sSpriteTemplate_DuoFight_Kyogre, 158, 112, 1) << 8;
+ data[1] |= CreateSprite(&sSpriteTemplate_DuoFight_Kyogre, 126, 128, 1);
+ data[2] = CreateSprite(&sSpriteTemplate_DuoFight_Kyogre, 158, 128, 1) << 8;
+ data[2] |= CreateSprite(&sSpriteTemplate_DuoFight_Kyogre, 94, 128, 2);
+ data[3] = CreateSprite(&sSpriteTemplate_DuoFight_Kyogre, 126, 128, 2) << 8;
+ data[3] |= CreateSprite(&sSpriteTemplate_DuoFight_Kyogre, 174, 128, 0);
+ data[4] = CreateSprite(&sSpriteTemplate_DuoFight_KyogrePectoralFin, 198, 132, 0) << 8;
+ data[4] |= CreateSprite(&sSpriteTemplate_DuoFight_KyogreDorsalFin, 190, 120, 1);
StartSpriteAnim(&gSprites[data[0] >> 8], 1);
StartSpriteAnim(&gSprites[data[0] & 0xFF], 2);
@@ -1832,7 +1901,7 @@ static u8 sub_81D78BC(void)
return spriteId;
}
-static void sub_81D7A60(struct Sprite *sprite)
+static void SpriteCB_DuoFight_Kyogre(struct Sprite *sprite)
{
s16 *data = sprite->data;
data[5]++;
@@ -1893,7 +1962,7 @@ static void sub_81D7A60(struct Sprite *sprite)
}
}
-static void sub_81D7D14(struct Sprite *sprite)
+static void DuoFight_SlideKyogreDown(struct Sprite *sprite)
{
s16 *data = sprite->data;
if (sprite->pos1.y <= 160)
@@ -1912,11 +1981,32 @@ static void sub_81D7D14(struct Sprite *sprite)
}
}
-static void sub_81D7E10(void)
+#undef tTimer
+#undef tHelperTaskId
+#undef tGroudonSpriteId
+#undef tKyogreSpriteId
+
+#undef sGroudonBodySpriteId
+#undef sGroudonShoulderSpriteId
+#undef sGroudonClawSpriteId
+
+
+// RAY_ANIM_TAKES_FLIGHT
+
+#define tState data[0]
+#define tTimer data[1]
+#define tScale data[2]
+#define tScaleSpeed data[3]
+#define tYCoord data[4]
+#define tYSpeed data[5]
+#define tYOffset data[6]
+#define tYOffsetDir data[7]
+
+static void InitTakesFlightSceneBgs(void)
{
ResetVramOamAndBgCntRegs();
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(1, sUnknown_0862AA54, ARRAY_COUNT(sUnknown_0862AA54));
+ InitBgsFromTemplates(1, sBgTemplates_TakesFlight, ARRAY_COUNT(sBgTemplates_TakesFlight));
SetBgTilemapBuffer(0, sRayScene->tilemapBuffers[0]);
SetBgTilemapBuffer(1, sRayScene->tilemapBuffers[1]);
SetBgTilemapBuffer(2, sRayScene->tilemapBuffers[2]);
@@ -1931,99 +2021,117 @@ static void sub_81D7E10(void)
SetGpuReg(REG_OFFSET_BLDCNT, 0);
}
-static void sub_81D7E9C(void)
+static void LoadTakesFlightSceneGfx(void)
{
ResetTempTileDataBuffers();
- DecompressAndCopyTileDataToVram(0, gRaySceneClouds_Gfx, 0, 0, 0);
- DecompressAndCopyTileDataToVram(1, gRaySceneOvercast_Gfx, 0, 0, 0);
- DecompressAndCopyTileDataToVram(2, gRaySceneRayquaza_Gfx, 0, 0, 0);
- while (FreeTempTileDataBuffersIfPossible());
-
- LZDecompressWram(gRaySceneClouds2_Tilemap, sRayScene->tilemapBuffers[0]);
- LZDecompressWram(gRaySceneOvercast_Tilemap, sRayScene->tilemapBuffers[1]);
- LZDecompressWram(gRaySceneRayquaza_Tilemap, sRayScene->tilemapBuffers[2]);
- LoadCompressedPalette(gRaySceneRayquaza_Pal, 0, 0x40);
- LoadCompressedSpriteSheet(&sUnknown_0862AA90);
- LoadCompressedSpritePalette(&sUnknown_0862AA98);
+ DecompressAndCopyTileDataToVram(0, gRaySceneDuoFight_Clouds_Gfx, 0, 0, 0); // Re-uses clouds from previous scene
+ DecompressAndCopyTileDataToVram(1, gRaySceneTakesFlight_Bg_Gfx, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(2, gRaySceneTakesFlight_Rayquaza_Gfx, 0, 0, 0);
+ while (FreeTempTileDataBuffersIfPossible())
+ ;
+ LZDecompressWram(gRaySceneDuoFight_Clouds2_Tilemap, sRayScene->tilemapBuffers[0]);
+ LZDecompressWram(gRaySceneTakesFlight_Bg_Tilemap, sRayScene->tilemapBuffers[1]);
+ LZDecompressWram(gRaySceneTakesFlight_Rayquaza_Tilemap, sRayScene->tilemapBuffers[2]);
+ LoadCompressedPalette(gRaySceneTakesFlight_Rayquaza_Pal, 0, 64);
+ LoadCompressedSpriteSheet(&sSpriteSheet_TakesFlight_Smoke);
+ LoadCompressedSpritePalette(&sSpritePal_TakesFlight_Smoke);
}
static void Task_RayTakesFlightAnim(u8 taskId)
{
s16 *data = gTasks[taskId].data;
PlayNewMapMusic(MUS_RAYQUAZA_APPEARS);
- sub_81D7E10();
- sub_81D7E9C();
+ InitTakesFlightSceneBgs();
+ LoadTakesFlightSceneGfx();
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_OBJ | BLDCNT_TGT2_BG1 | BLDCNT_EFFECT_BLEND);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 8));
- BlendPalettes(-1, 0x10, 0);
+ BlendPalettes(-1, 16, 0);
SetVBlankCallback(VBlankCB_RayquazaScene);
- CreateTask(sub_81D81A4, 0);
- data[0] = 0;
- data[1] = 0;
+ CreateTask(Task_TakesFlight_CreateSmoke, 0);
+ tState = 0;
+ tTimer = 0;
gTasks[taskId].func = Task_HandleRayTakesFlight;
}
+// Animate Rayquaza (flying up and down, and changing size as it gets further from the screen)
+// In this scene Rayquaza is a bg tilemap on bg 2, not a sprite
static void Task_HandleRayTakesFlight(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- switch (data[0])
+ switch (tState)
{
case 0:
- if (data[1] == 8)
+ // Delay, then fade in
+ if (tTimer == 8)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
- data[2] = 0;
- data[3] = 30;
- data[4] = 0;
- data[5] = 7;
- data[1] = 0;
- data[0]++;
+ tScale = 0;
+ tScaleSpeed = 30;
+ tYCoord = 0;
+ tYSpeed = 7;
+ tTimer = 0;
+ tState++;
}
else
{
- data[1]++;
+ tTimer++;
}
break;
case 1:
- data[2] += data[3];
- data[4] += data[5];
- if (data[3] > 3)
- data[3] -= 3;
- if (data[5] != 0)
- data[5]--;
- if (data[2] > 255)
+ // Fly in
+ tScale += tScaleSpeed;
+ tYCoord += tYSpeed;
+
+ if (tScaleSpeed > 3)
+ tScaleSpeed -= 3;
+
+ if (tYSpeed != 0)
+ tYSpeed--;
+
+ if (tScale > 255)
{
- data[2] = 256;
- data[3] = 0;
- data[6] = 12;
- data[7] = -1;
- data[1] = 0;
- data[0]++;
+ tScale = 256;
+ tScaleSpeed = 0;
+ tYOffset = 12;
+ tYOffsetDir = -1;
+ tTimer = 0;
+ tState++;
}
- SetBgAffine(2, 0x7800, 0x1800, 0x78, data[4] + 32, data[2], data[2], 0);
+ SetBgAffine(2, 0x7800, 0x1800, 120, tYCoord + 32, tScale, tScale, 0);
break;
case 2:
- data[1]++;
- SetBgAffine(2, 0x7800, 0x1800, 0x78, data[4] + 32 + (data[6] >> 2), data[2], data[2], 0);
- data[6] += data[7];
- if (data[6] == 12 || data[6] == -12)
+ // Float up and down
+ tTimer++;
+ SetBgAffine(2, 0x7800, 0x1800, 120, tYCoord + 32 + (tYOffset >> 2), tScale, tScale, 0);
+ tYOffset += tYOffsetDir;
+ if (tYOffset == 12 || tYOffset == -12)
{
- data[7] *= -1;
- if (data[1] > 295)
+ tYOffsetDir *= -1;
+ if (tTimer > 295)
{
- data[0]++;
+ tState++;
BeginNormalPaletteFade(0xFFFFFFFF, 6, 0, 0x10, RGB_BLACK);
}
}
break;
case 3:
- data[2] += 16;
- SetBgAffine(2, 0x7800, 0x1800, 0x78, data[4] + 32, data[2], data[2], 0);
+ // Fly away, fade out
+ tScale += 16;
+ SetBgAffine(2, 0x7800, 0x1800, 120, tYCoord + 32, tScale, tScale, 0);
Task_RayTakesFlightEnd(taskId);
break;
}
}
+#undef tState
+#undef tTimer
+#undef tScale
+#undef tScaleSpeed
+#undef tYCoord
+#undef tYSpeed
+#undef tYOffset
+#undef tYOffsetDir
+
static void Task_RayTakesFlightEnd(u8 taskId)
{
if (!gPaletteFade.active)
@@ -2035,56 +2143,71 @@ static void Task_RayTakesFlightEnd(u8 taskId)
}
}
-static void sub_81D81A4(u8 taskId)
+#define tSmokeId data[0]
+#define tTimer data[1]
+
+#define sSmokeId data[0]
+#define sTimer data[1]
+
+static void Task_TakesFlight_CreateSmoke(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if ((data[1] & 3) == 0)
+ if ((tTimer & 3) == 0)
{
- u8 spriteId = CreateSprite(&sUnknown_0862AAA0,
- (sUnknown_0862AAB8[data[0]][0] * 4) + 120,
- (sUnknown_0862AAB8[data[0]][1] * 4) + 80,
+ u8 spriteId = CreateSprite(&sSpriteTemplate_TakesFlight_Smoke,
+ (sTakesFlight_SmokeCoords[tSmokeId][0] * 4) + 120,
+ (sTakesFlight_SmokeCoords[tSmokeId][1] * 4) + 80,
0);
- gSprites[spriteId].data[0] = (s8)(data[0]);
+ gSprites[spriteId].sSmokeId = (s8)(tSmokeId);
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
gSprites[spriteId].oam.priority = 2;
InitSpriteAffineAnim(&gSprites[spriteId]);
- if (data[0] == 9)
+ if (tSmokeId == MAX_SMOKE - 1)
{
DestroyTask(taskId);
return;
}
else
{
- data[0]++;
+ tSmokeId++;
}
}
- data[1]++;
+ tTimer++;
}
-static void sub_81D8260(struct Sprite *sprite)
+#undef tSmokeId
+#undef tTimer
+
+static void SpriteCB_TakesFlight_Smoke(struct Sprite *sprite)
{
- if (sprite->data[1] == 0)
+ if (sprite->sTimer == 0)
{
sprite->pos2.x = 0;
sprite->pos2.y = 0;
}
else
{
- sprite->pos2.x += sUnknown_0862AAB8[sprite->data[0]][0];
- sprite->pos2.y += sUnknown_0862AAB8[sprite->data[0]][1];
+ sprite->pos2.x += sTakesFlight_SmokeCoords[sprite->sSmokeId][0];
+ sprite->pos2.y += sTakesFlight_SmokeCoords[sprite->sSmokeId][1];
}
- sprite->data[1]++;
- sprite->data[1] &= 0xF;
+ sprite->sTimer++;
+ sprite->sTimer &= 0xF;
}
-static void sub_81D82B0(void)
+#undef sSmokeId
+#undef sTimer
+
+
+// RAY_ANIM_DESCENDS
+
+static void InitDescendsSceneBgs(void)
{
ResetVramOamAndBgCntRegs();
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, sUnknown_0862AACC, ARRAY_COUNT(sUnknown_0862AACC));
+ InitBgsFromTemplates(0, sBgTemplates_Descends, ARRAY_COUNT(sBgTemplates_Descends));
SetBgTilemapBuffer(0, sRayScene->tilemapBuffers[0]);
SetBgTilemapBuffer(1, sRayScene->tilemapBuffers[1]);
SetBgTilemapBuffer(2, sRayScene->tilemapBuffers[2]);
@@ -2102,65 +2225,72 @@ static void sub_81D82B0(void)
SetGpuReg(REG_OFFSET_BLDCNT, 0);
}
-static void sub_81D8358(void)
+static void LoadDescendsSceneGfx(void)
{
ResetTempTileDataBuffers();
- DecompressAndCopyTileDataToVram(0, gRaySceneRayquazaLight_Gfx, 0, 0, 0);
- DecompressAndCopyTileDataToVram(1, gRaySceneOvercast2_Gfx, 0, 0, 0);
- while (FreeTempTileDataBuffersIfPossible());
-
- LZDecompressWram(gRaySceneRayquazaLight_Tilemap, sRayScene->tilemapBuffers[0]);
- LZDecompressWram(gRaySceneOvercast2_Tilemap, sRayScene->tilemapBuffers[3]);
- CpuFastFill16(0, sRayScene->tilemapBuffers[2], 0x800);
- CpuFastCopy(sRayScene->tilemapBuffers[3], sRayScene->tilemapBuffers[1], 0x800);
+ DecompressAndCopyTileDataToVram(0, gRaySceneDescends_Light_Gfx, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(1, gRaySceneDescends_Bg_Gfx, 0, 0, 0);
+ while (FreeTempTileDataBuffersIfPossible())
+ ;
+ LZDecompressWram(gRaySceneDescends_Light_Tilemap, sRayScene->tilemapBuffers[0]);
+ LZDecompressWram(gRaySceneDescends_Bg_Tilemap, sRayScene->tilemapBuffers[3]);
+ CpuFastFill16(0, sRayScene->tilemapBuffers[2], BG_SCREEN_SIZE);
+ CpuFastCopy(sRayScene->tilemapBuffers[3], sRayScene->tilemapBuffers[1], BG_SCREEN_SIZE);
CpuFastFill16(0, &sRayScene->tilemapBuffers[1][0x100], 0x340);
- LoadCompressedPalette(gRaySceneOvercast2_Pal, 0, 0x40);
+ LoadCompressedPalette(gRaySceneDescends_Bg_Pal, 0, 0x40);
gPlttBufferUnfaded[0] = RGB_WHITE;
gPlttBufferFaded[0] = RGB_WHITE;
- LoadCompressedSpriteSheet(&sUnknown_0862AAFC);
- LoadCompressedSpriteSheet(&sUnknown_0862AB04);
- LoadCompressedSpritePalette(&sUnknown_0862AB0C);
+ LoadCompressedSpriteSheet(&sSpriteSheet_Descends_Rayquaza);
+ LoadCompressedSpriteSheet(&sSpriteSheet_Descends_RayquazaTail);
+ LoadCompressedSpritePalette(&sSpritePal_Descends_Rayquaza);
}
-static void sub_81D844C(void)
+// Draw ray of light emerging from the clouds
+static void HBlankCB_RayDescends(void)
{
- u16 VCOUNT = GetGpuReg(REG_OFFSET_VCOUNT);
- if (VCOUNT >= 24 && VCOUNT <= 135 && VCOUNT - 24 <= sRayScene->field_2008)
- REG_BLDALPHA = 0xD08;
+ u16 vcount = GetGpuReg(REG_OFFSET_VCOUNT);
+ if (vcount >= 24 && vcount <= 135 && vcount - 24 <= sRayScene->revealedLightLine)
+ REG_BLDALPHA = 0xD08; // This line is above where light has been revealed, draw it
else
- REG_BLDALPHA = 0x1000;
+ REG_BLDALPHA = 0x1000; // Below where light has been revealed, hide it
- if (VCOUNT == 0)
+ if (vcount == 0)
{
- if (sRayScene->field_2008 <= 0x1FFF)
+ if (sRayScene->revealedLightLine <= 0x1FFF)
{
- if (sRayScene->field_2008 <= 39)
- sRayScene->field_2008 += 4;
- else if (sRayScene->field_2008 <= 79)
- sRayScene->field_2008 += 2;
+ // Increase the number of pixel rows of the light that have been revealed
+ // Gradually slows as it reaches the bottom
+ if (sRayScene->revealedLightLine <= 39)
+ sRayScene->revealedLightLine += 4;
+ else if (sRayScene->revealedLightLine <= 79)
+ sRayScene->revealedLightLine += 2;
else
- sRayScene->field_2008 += 1;
+ sRayScene->revealedLightLine += 1;
}
- sRayScene->field_200A++;
+ // Pointless
+ sRayScene->revealedLightTimer++;
}
}
+#define tState data[0]
+#define tTimer data[1]
+
static void Task_RayDescendsAnim(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_81D82B0();
- sub_81D8358();
+ InitDescendsSceneBgs();
+ LoadDescendsSceneGfx();
SetGpuRegBits(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_EFFECT_BLEND);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16));
BlendPalettes(-1, 0x10, 0);
SetVBlankCallback(VBlankCB_RayquazaScene);
- sRayScene->field_2008 = 0;
- sRayScene->field_200A = 0;
- data[0] = 0;
- data[1] = 0;
- data[2] = 0;
+ sRayScene->revealedLightLine = 0;
+ sRayScene->revealedLightTimer = 0;
+ tState = 0;
+ tTimer = 0;
+ data[2] = 0; // Below data assignments do nothing
data[3] = 0;
data[4] = 0x1000;
gTasks[taskId].func = Task_HandleRayDescends;
@@ -2169,56 +2299,61 @@ static void Task_RayDescendsAnim(u8 taskId)
static void Task_HandleRayDescends(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- switch (data[0])
+ switch (tState)
{
case 0:
- if (data[1] == 8)
+ // Delay, then fade in
+ if (tTimer == 8)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
- data[1] = 0;
- data[0]++;
+ tTimer = 0;
+ tState++;
}
else
{
- data[1]++;
+ tTimer++;
}
break;
case 1:
if (!gPaletteFade.active)
{
- if (data[1] == 10)
+ // Delay, then start ray of light
+ if (tTimer == 10)
{
- data[1] = 0;
- data[0]++;
- SetHBlankCallback(sub_81D844C);
+ tTimer = 0;
+ tState++;
+ SetHBlankCallback(HBlankCB_RayDescends);
EnableInterrupts(INTR_FLAG_HBLANK | INTR_FLAG_VBLANK);
}
else
{
- data[1]++;
+ tTimer++;
}
}
break;
case 2:
- if (data[1] == 80)
+ // Delay, then start Rayquaza emerging from clouds
+ if (tTimer == 80)
{
- data[1] = 0;
- data[0]++;
- sub_81D86CC();
+ tTimer = 0;
+ tState++;
+ CreateDescendsRayquazaSprite();
}
else
{
- data[1]++;
+ tTimer++;
}
break;
case 3:
- if (++data[1] == 368)
+ // Wait while Rayquaza descends
+ if (++tTimer == 368)
{
- data[1] = 0;
- data[0]++;
+ tTimer = 0;
+ tState++;
}
break;
case 4:
+ // Fade out
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = Task_RayDescendsEnd;
break;
@@ -2237,76 +2372,92 @@ static void Task_RayDescendsEnd(u8 taskId)
}
}
-static u8 sub_81D86CC(void)
+#define sTailSpriteId data[0]
+#define sTimer data[2]
+#define sXMovePeriod data[3]
+#define sYMovePeriod data[4]
+
+static u8 CreateDescendsRayquazaSprite(void)
{
- u8 spriteId = CreateSprite(&sUnknown_0862AB14, 160, 0, 0);
+ u8 spriteId = CreateSprite(&sSpriteTemplate_Descends_Rayquaza, 160, 0, 0);
s16 *data = gSprites[spriteId].data;
- data[0] = CreateSprite(&sUnknown_0862AB2C, 184, -48, 0);
- gSprites[spriteId].callback = sub_81D874C;
+ sTailSpriteId = CreateSprite(&sSpriteTemplate_Descends_RayquazaTail, 184, -48, 0);
+ gSprites[spriteId].callback = SpriteCB_Descends_Rayquaza;
gSprites[spriteId].oam.priority = 3;
- gSprites[data[0]].oam.priority = 3;
+ gSprites[sTailSpriteId].oam.priority = 3;
return spriteId;
}
-static void sub_81D874C(struct Sprite *sprite)
+static void SpriteCB_Descends_Rayquaza(struct Sprite *sprite)
{
s16 *data = sprite->data;
- s16 counter = data[2];
- if (counter == 0)
+ s16 frame = sTimer;
+
+ // Updates to Rayquaza's coords occur more frequently
+ // as time goes on (it accelerates as it emerges)
+ if (frame == 0)
{
- data[3] = 12;
- data[4] = 8;
+ sXMovePeriod = 12;
+ sYMovePeriod = 8;
}
- else if (counter == 256)
+ else if (frame == 256)
{
- data[3] = 9;
- data[4] = 7;
+ sXMovePeriod = 9;
+ sYMovePeriod = 7;
}
- else if (counter == 268)
+ else if (frame == 268)
{
- data[3] = 8;
- data[4] = 6;
+ sXMovePeriod = 8;
+ sYMovePeriod = 6;
}
- else if (counter == 280)
+ else if (frame == 280)
{
- data[3] = 7;
- data[4] = 5;
+ sXMovePeriod = 7;
+ sYMovePeriod = 5;
}
- else if (counter == 292)
+ else if (frame == 292)
{
- data[3] = 6;
- data[4] = 4;
+ sXMovePeriod = 6;
+ sYMovePeriod = 4;
}
- else if (counter == 304)
+ else if (frame == 304)
{
- data[3] = 5;
- data[4] = 3;
+ sXMovePeriod = 5;
+ sYMovePeriod = 3;
}
- else if (counter == 320)
+ else if (frame == 320)
{
- data[3] = 4;
- data[4] = 2;
+ sXMovePeriod = 4;
+ sYMovePeriod = 2;
}
- if (data[2] % data[3] == 0)
+ if (sTimer % sXMovePeriod == 0)
{
sprite->pos2.x--;
- gSprites[data[0]].pos2.x--;
+ gSprites[sTailSpriteId].pos2.x--;
}
- if (data[2] % data[4] == 0)
+ if (sTimer % sYMovePeriod == 0)
{
sprite->pos2.y++;
- gSprites[data[0]].pos2.y++;
+ gSprites[sTailSpriteId].pos2.y++;
}
- data[2]++;
+ sTimer++;
}
-static void sub_81D8828(void)
+#undef sTailSpriteId
+#undef sTimer
+#undef sXMovePeriod
+#undef sYMovePeriod
+
+
+// RAY_ANIM_CHARGES
+
+static void InitChargesSceneBgs(void)
{
ResetVramOamAndBgCntRegs();
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, sUnknown_0862AB44, ARRAY_COUNT(sUnknown_0862AB44));
+ InitBgsFromTemplates(0, sBgTemplates_Charges, ARRAY_COUNT(sBgTemplates_Charges));
SetBgTilemapBuffer(0, sRayScene->tilemapBuffers[0]);
SetBgTilemapBuffer(1, sRayScene->tilemapBuffers[1]);
SetBgTilemapBuffer(2, sRayScene->tilemapBuffers[2]);
@@ -2324,124 +2475,151 @@ static void sub_81D8828(void)
SetGpuReg(REG_OFFSET_BLDCNT, 0);
}
-static void sub_81D88D0(void)
+static void LoadChargesSceneGfx(void)
{
ResetTempTileDataBuffers();
- DecompressAndCopyTileDataToVram(1, gRaySceneRayquazaChase_Gfx, 0, 0, 0);
- DecompressAndCopyTileDataToVram(2, gRaySceneChaseStreaks_Gfx, 0, 0, 0);
- DecompressAndCopyTileDataToVram(3, gRaySceneChaseBg_Gfx, 0, 0, 0);
- while (FreeTempTileDataBuffersIfPossible());
-
- LZDecompressWram(gRayChaseRayquazaChase2_Tilemap, sRayScene->tilemapBuffers[0]);
- LZDecompressWram(gRayChaseRayquazaChase_Tilemap, sRayScene->tilemapBuffers[1]);
- LZDecompressWram(gRaySceneChaseStreaks_Tilemap, sRayScene->tilemapBuffers[2]);
- LZDecompressWram(gRaySceneChaseBg_Tilemap, sRayScene->tilemapBuffers[3]);
- LoadCompressedPalette(gRaySceneChase_Pal, 0, 0x80);
-}
+ DecompressAndCopyTileDataToVram(1, gRaySceneCharges_Rayquaza_Gfx, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(2, gRaySceneCharges_Streaks_Gfx, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(3, gRaySceneCharges_Bg_Gfx, 0, 0, 0);
+ while (FreeTempTileDataBuffersIfPossible())
+ ;
+ LZDecompressWram(gRaySceneCharges_Orbs_Tilemap, sRayScene->tilemapBuffers[0]);
+ LZDecompressWram(gRaySceneCharges_Rayquaza_Tilemap, sRayScene->tilemapBuffers[1]);
+ LZDecompressWram(gRaySceneCharges_Streaks_Tilemap, sRayScene->tilemapBuffers[2]);
+ LZDecompressWram(gRaySceneCharges_Bg_Tilemap, sRayScene->tilemapBuffers[3]);
+ LoadCompressedPalette(gRaySceneCharges_Bg_Pal, 0, 0x80);
+}
+
+#define tState data[0]
+#define tTimer data[1]
+#define tRayquazaTaskId data[2]
+#define tSoundTimer data[3]
static void Task_RayChargesAnim(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_81D8828();
- sub_81D88D0();
- sub_81D68C8();
+ InitChargesSceneBgs();
+ LoadChargesSceneGfx();
+ SetWindowsHideVertBorders();
BlendPalettes(-1, 0x10, 0);
SetVBlankCallback(VBlankCB_RayquazaScene);
- data[0] = 0;
- data[1] = 0;
- data[2] = CreateTask(sub_81D8AD8, 0);
+ tState = 0;
+ tTimer = 0;
+ tRayquazaTaskId = CreateTask(Task_RayCharges_ShakeRayquaza, 0);
gTasks[taskId].func = Task_HandleRayCharges;
}
static void Task_HandleRayCharges(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_81D8BB4();
- if ((data[3] & 7) == 0 && data[0] <= 1 && data[1] <= 89)
+ RayCharges_AnimateBg();
+ if ((tSoundTimer & 7) == 0 && tState <= 1 && tTimer <= 89)
PlaySE(SE_INTRO_BLAST);
- data[3]++;
- switch (data[0])
+ tSoundTimer++;
+ switch (tState)
{
case 0:
- if (data[1] == 8)
+ // Delay, then fade in
+ if (tTimer == 8)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
- data[1] = 0;
- data[0]++;
+ tTimer = 0;
+ tState++;
}
else
{
- data[1]++;
+ tTimer++;
}
break;
case 1:
- if (data[1] == 127)
+ // Delay while Rayquaza shakes, then start Rayquaza moving offscreen
+ if (tTimer == 127)
{
- data[1] = 0;
- data[0]++;
- gTasks[data[2]].func = sub_81D8B2C;
+ tTimer = 0;
+ tState++;
+ gTasks[tRayquazaTaskId].func = Task_RayCharges_FlyOffscreen;
}
else
{
- data[1]++;
+ tTimer++;
}
break;
case 2:
- if (data[1] == 12)
+ // Delay for Rayquaza's flying animation
+ if (tTimer == 12)
{
- data[1] = 0;
- data[0]++;
+ tTimer = 0;
+ tState++;
}
else
{
- data[1]++;
+ tTimer++;
}
break;
case 3:
+ // Fade out
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = Task_RayChargesEnd;
break;
}
}
-static void sub_81D8AD8(u8 taskId)
+#undef tState
+#undef tTimer
+#undef tSoundTimer
+
+#define tState data[0]
+#define tOffset data[1]
+#define tShakeDir data[2]
+#define tTimer data[15]
+
+static void Task_RayCharges_ShakeRayquaza(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if ((data[15] & 3) == 0)
+ if ((tTimer & 3) == 0)
{
ChangeBgX(1, (Random() % 8 - 4) << 8, 0);
ChangeBgY(1, (Random() % 8 - 4) << 8, 0);
}
- data[15]++;
+ tTimer++;
}
-static void sub_81D8B2C(u8 taskId)
+// Rayquaza backs up then launches forward
+static void Task_RayCharges_FlyOffscreen(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if (data[0] == 0)
+ if (tState == 0)
{
ChangeBgX(1, 0, 0);
ChangeBgY(1, 0, 0);
- data[0]++;
- data[1] = 10;
- data[2] = -1;
+ tState++;
+ tOffset = 10;
+ tShakeDir = -1;
}
- else if (data[0] == 1)
+ else if (tState == 1)
{
- ChangeBgX(1, data[1] << 8, 2);
- ChangeBgY(1, data[1] << 8, 1);
- data[1] += data[2];
- if (data[1] == -10)
- data[2] *= -1;
+ ChangeBgX(1, tOffset << 8, 2);
+ ChangeBgY(1, tOffset << 8, 1);
+ tOffset += tShakeDir;
+ if (tOffset == -10)
+ tShakeDir *= -1;
}
}
-static void sub_81D8BB4(void)
+#undef tState
+#undef tOffset
+#undef tShakeDir
+#undef tTimer
+
+static void RayCharges_AnimateBg(void)
{
+ // Update yellow orbs
ChangeBgX(2, 0x400, 2);
ChangeBgY(2, 0x400, 1);
+
+ // Update blue streaks
ChangeBgX(0, 0x800, 2);
ChangeBgY(0, 0x800, 1);
}
@@ -2449,21 +2627,26 @@ static void sub_81D8BB4(void)
static void Task_RayChargesEnd(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_81D8BB4();
+ RayCharges_AnimateBg();
if (!gPaletteFade.active)
{
SetVBlankCallback(NULL);
- sub_81D6904();
- DestroyTask(data[2]);
+ ResetWindowDimensions();
+ DestroyTask(tRayquazaTaskId);
gTasks[taskId].func = Task_SetNextAnim;
}
}
-static void sub_81D8C38(void)
+#undef tRayquazaTaskId
+
+
+// RAY_ANIM_CHASES_AWAY
+
+static void InitChasesAwaySceneBgs(void)
{
ResetVramOamAndBgCntRegs();
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(1, sUnknown_0862AD08, ARRAY_COUNT(sUnknown_0862AD08));
+ InitBgsFromTemplates(1, sBgTemplates_ChasesAway, ARRAY_COUNT(sBgTemplates_ChasesAway));
SetBgTilemapBuffer(0, sRayScene->tilemapBuffers[0]);
SetBgTilemapBuffer(1, sRayScene->tilemapBuffers[1]);
SetBgTilemapBuffer(2, sRayScene->tilemapBuffers[2]);
@@ -2478,237 +2661,287 @@ static void sub_81D8C38(void)
SetGpuReg(REG_OFFSET_BLDCNT, 0);
}
-static void sub_81D8CC4(void)
+static void LoadChasesAwaySceneGfx(void)
{
ResetTempTileDataBuffers();
- DecompressAndCopyTileDataToVram(2, gRaySceneHushRing_Gfx, 0, 0, 0);
- DecompressAndCopyTileDataToVram(0, gRaySceneHushBg_Gfx, 0, 0, 0);
- while (FreeTempTileDataBuffersIfPossible());
-
- LZDecompressWram(gRaySceneHushRing_Tilemap, sRayScene->tilemapBuffers[1]);
- LZDecompressWram(gRaySceneHushBg_Tilemap, sRayScene->tilemapBuffers[0]);
- LZDecompressWram(gRaySceneHushRing_Map, sRayScene->tilemapBuffers[2]);
- LoadCompressedPalette(gRaySceneHushBg_Pal, 0, 0x60);
- LoadCompressedSpriteSheet(&sUnknown_0862AC28);
- LoadCompressedSpriteSheet(&sUnknown_0862AC30);
- LoadCompressedSpriteSheet(&sUnknown_0862AC38);
- LoadCompressedSpriteSheet(&sUnknown_0862AC40);
- LoadCompressedSpriteSheet(&sUnknown_0862AC48);
- LoadCompressedSpriteSheet(&sUnknown_0862AC50);
- LoadCompressedSpritePalette(&sUnknown_0862AC58);
- LoadCompressedSpritePalette(&sUnknown_0862AC60);
- LoadCompressedSpritePalette(&sUnknown_0862AC68);
- LoadCompressedSpritePalette(&sUnknown_0862AC70);
-}
+ DecompressAndCopyTileDataToVram(2, gRaySceneChasesAway_Ring_Gfx, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(0, gRaySceneChasesAway_Light_Gfx, 0, 0, 0);
+ while (FreeTempTileDataBuffersIfPossible())
+ ;
+ LZDecompressWram(gRaySceneChasesAway_Bg_Tilemap, sRayScene->tilemapBuffers[1]);
+ LZDecompressWram(gRaySceneChasesAway_Light_Tilemap, sRayScene->tilemapBuffers[0]);
+ LZDecompressWram(gRaySceneChasesAway_Ring_Tilemap, sRayScene->tilemapBuffers[2]);
+ LoadCompressedPalette(gRaySceneChasesAway_Bg_Pal, 0, 0x60);
+ LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_Groudon);
+ LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_GroudonTail);
+ LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_Kyogre);
+ LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_Rayquaza);
+ LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_RayquazaTail);
+ LoadCompressedSpriteSheet(&sSpriteSheet_ChasesAway_KyogreSplash);
+ LoadCompressedSpritePalette(&sSpritePal_ChasesAway_Groudon);
+ LoadCompressedSpritePalette(&sSpritePal_ChasesAway_Kyogre);
+ LoadCompressedSpritePalette(&sSpritePal_ChasesAway_Rayquaza);
+ LoadCompressedSpritePalette(&sSpritePal_ChasesAway_KyogreSplash);
+}
+
+#define tState data[0]
+#define tTimer data[1]
+#define tBgTaskId data[2]
static void Task_RayChasesAwayAnim(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_81D8C38();
- sub_81D8CC4();
- sub_81D68C8();
+ InitChasesAwaySceneBgs();
+ LoadChasesAwaySceneGfx();
+ SetWindowsHideVertBorders();
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_EFFECT_BLEND);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(9, 14));
BlendPalettes(-1, 0x10, 0);
SetVBlankCallback(VBlankCB_RayquazaScene);
- data[0] = 0;
- data[1] = 0;
+ tState = 0;
+ tTimer = 0;
gTasks[taskId].func = Task_HandleRayChasesAway;
- data[2] = CreateTask(sub_81D8FB0, 0);
- gTasks[data[2]].data[0] = 0;
- gTasks[data[2]].data[1] = 0;
- gTasks[data[2]].data[2] = 0;
- gTasks[data[2]].data[3] = 1;
- gTasks[data[2]].data[4] = 1;
+ tBgTaskId = CreateTask(Task_ChasesAway_AnimateBg, 0);
+ gTasks[tBgTaskId].data[0] = 0;
+ gTasks[tBgTaskId].data[1] = 0;
+ gTasks[tBgTaskId].data[2] = 0;
+ gTasks[tBgTaskId].data[3] = 1;
+ gTasks[tBgTaskId].data[4] = 1;
}
static void Task_HandleRayChasesAway(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- switch (data[0])
+ switch (tState)
{
case 0:
- if (data[1] == 8)
+ // Delay, then fade in
+ if (tTimer == 8)
{
- sub_81D90A8(taskId);
+ ChasesAway_CreateTrioSprites(taskId);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
- data[1] = 0;
- data[0]++;
+ tTimer = 0;
+ tState++;
}
else
{
- data[1]++;
+ tTimer++;
}
break;
case 1:
- if (gSprites[data[5]].callback == sub_81D97E0)
+ // Wait for Rayquaza to enter and finish shout anim
+ if (gSprites[data[5]].callback == SpriteCB_ChasesAway_RayquazaFloat)
{
- if (data[1] == 64)
+ // Delay, then start Groudon/Kyogre leaving
+ if (tTimer == 64)
{
- sub_81D94D4(taskId);
- sub_81D93D8(taskId);
- data[1] = 0;
- data[0]++;
+ ChasesAway_KyogreStartLeave(taskId);
+ ChasesAway_GroudonStartLeave(taskId);
+ tTimer = 0;
+ tState++;
}
else
{
- data[1]++;
+ tTimer++;
}
}
break;
case 2:
- if (data[1] == 448)
+ // Wait for Groudon/Kyogre to leave
+ if (tTimer == 448)
{
- data[1] = 0;
- data[0]++;
+ tTimer = 0;
+ tState++;
}
else
{
- data[1]++;
- if (data[1] % 144 == 0)
+ // Flash bg white and trio black a few times
+ tTimer++;
+ if (tTimer % 144 == 0)
{
- sub_80A2C44(0xFFFE, 0, 0x10, 0, -1, 0, 0);
- sub_80A2C44(0xFFFF0000, 0, 0x10, 0, 0, 0, 1);
+ BlendPalettesGradually(0x0000FFFE, 0, 16, 0, RGB_WHITEALPHA, 0, 0);
+ BlendPalettesGradually(0xFFFF0000, 0, 16, 0, RGB_BLACK, 0, 1);
}
}
break;
case 3:
+ // Fade out
BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = Task_RayChasesAwayEnd;
break;
}
}
-static void sub_81D8FB0(u8 taskId)
+#undef tState
+#undef tTimer
+
+#define tTimer data[0]
+#define tBlendHi data[1]
+#define tBlendLo data[2]
+#define tBlendHiDir data[3]
+#define tBlendLoDir data[4]
+
+// Flickers the ray of light behind Rayquaza
+static void Task_ChasesAway_AnimateBg(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if ((data[0] & 0xF) == 0)
+ if ((tTimer & 0xF) == 0)
{
- SetGpuReg(REG_OFFSET_BLDALPHA, ((data[1] + 14) << 8 & 0x1F00) | ((data[2] + 9) & 0xF));
- data[1] -= data[3];
- data[2] += data[4];
- if (data[1] == -3 || data[1] == 0)
- data[3] *= -1;
- if (data[2] == 3 || data[2] == 0)
- data[4] *= -1;
+ SetGpuReg(REG_OFFSET_BLDALPHA, ((tBlendHi + 14) << 8 & 0x1F00) | ((tBlendLo + 9) & 0xF));
+ tBlendHi -= tBlendHiDir;
+ tBlendLo += tBlendLoDir;
+ if (tBlendHi == -3 || tBlendHi == 0)
+ tBlendHiDir *= -1;
+ if (tBlendLo == 3 || tBlendLo == 0)
+ tBlendLoDir *= -1;
}
- data[0]++;
+ tTimer++;
}
+#undef tTimer
+#undef tBlendHi
+#undef tBlendLo
+#undef tBlendHiDir
+#undef tBlendLoDir
+
+#define tTimer data[1]
+
static void Task_RayChasesAwayEnd(u8 taskId)
{
s16 *data = gTasks[taskId].data;
if (!gPaletteFade.active)
{
StopMapMusic();
- if (data[1] == 0)
+ if (tTimer == 0)
{
SetVBlankCallback(NULL);
- sub_81D6904();
+ ResetWindowDimensions();
ResetSpriteData();
FreeAllSpritePalettes();
- DestroyTask(data[2]);
+ DestroyTask(tBgTaskId);
}
- if (data[1] == 32)
+ if (tTimer == 32)
{
- data[1] = 0;
+ tTimer = 0;
gTasks[taskId].func = Task_SetNextAnim;
}
else
{
- data[1]++;
+ tTimer++;
}
}
}
-static void sub_81D90A8(u8 taskId)
+#undef tTimer
+#undef tBgTaskId
+
+#define tGroudonSpriteId taskData[3]
+#define tKyogreSpriteId taskData[4]
+#define tRayquazaSpriteId taskData[5]
+
+static void ChasesAway_CreateTrioSprites(u8 taskId)
{
s16 *taskData, *spriteData;
taskData = gTasks[taskId].data;
- taskData[3] = CreateSprite(&sUnknown_0862AC78, 64, 120, 0);
- spriteData = gSprites[taskData[3]].data;
- spriteData[0] = CreateSprite(&sUnknown_0862AC90, 16, 130, 0);
- gSprites[taskData[3]].oam.priority = 1;
+ tGroudonSpriteId = CreateSprite(&sSpriteTemplate_ChasesAway_Groudon, 64, 120, 0);
+ spriteData = gSprites[tGroudonSpriteId].data;
+ spriteData[0] = CreateSprite(&sSpriteTemplate_ChasesAway_GroudonTail, 16, 130, 0);
+ gSprites[tGroudonSpriteId].oam.priority = 1;
gSprites[spriteData[0]].oam.priority = 1;
- taskData[4] = CreateSprite(&sUnknown_0862ACA8, 160, 128, 1);
- spriteData = gSprites[taskData[4]].data;
- spriteData[0] = CreateSprite(&sUnknown_0862ACA8, 192, 128, 1);
- spriteData[1] = CreateSprite(&sUnknown_0862ACA8, 224, 128, 1);
- gSprites[taskData[4]].oam.priority = 1;
+ tKyogreSpriteId = CreateSprite(&sSpriteTemplate_ChasesAway_Kyogre, 160, 128, 1);
+ spriteData = gSprites[tKyogreSpriteId].data;
+ spriteData[0] = CreateSprite(&sSpriteTemplate_ChasesAway_Kyogre, 192, 128, 1);
+ spriteData[1] = CreateSprite(&sSpriteTemplate_ChasesAway_Kyogre, 224, 128, 1);
+ gSprites[tKyogreSpriteId].oam.priority = 1;
gSprites[spriteData[0]].oam.priority = 1;
gSprites[spriteData[1]].oam.priority = 1;
StartSpriteAnim(&gSprites[spriteData[0]], 1);
StartSpriteAnim(&gSprites[spriteData[1]], 2);
- taskData[5] = CreateSprite(&sUnknown_0862ACC0, 120, -65, 0);
- spriteData = gSprites[taskData[5]].data;
- spriteData[0] = CreateSprite(&sUnknown_0862ACD8, 120, -113, 0);
- gSprites[taskData[5]].oam.priority = 1;
+ tRayquazaSpriteId = CreateSprite(&sSpriteTemplate_ChasesAway_Rayquaza, 120, -65, 0);
+ spriteData = gSprites[tRayquazaSpriteId].data;
+ spriteData[0] = CreateSprite(&sSpriteTemplate_ChasesAway_RayquazaTail, 120, -113, 0);
+ gSprites[tRayquazaSpriteId].oam.priority = 1;
gSprites[spriteData[0]].oam.priority = 1;
}
-static void sub_81D9274(u8 taskId)
+#define sBodyPartSpriteId1 data[0]
+#define sBodyPartSpriteId2 data[1]
+#define sTimer data[4]
+#define sDecel data[5]
+#define sSpeed data[6]
+#define sIsKyogre data[7]
+
+static void ChasesAway_PushDuoBack(u8 taskId)
{
s16 *taskData = gTasks[taskId].data;
- gSprites[taskData[3]].callback = sub_81D9338;
- gSprites[taskData[3]].data[4] = 0;
- gSprites[taskData[3]].data[5] = 0;
- gSprites[taskData[3]].data[6] = 4;
- gSprites[taskData[3]].data[7] = 0;
+ gSprites[tGroudonSpriteId].callback = SpriteCB_ChasesAway_DuoRingPush;
+ gSprites[tGroudonSpriteId].sTimer = 0;
+ gSprites[tGroudonSpriteId].sDecel = 0;
+ gSprites[tGroudonSpriteId].sSpeed = 4;
+ gSprites[tGroudonSpriteId].sIsKyogre = FALSE;
- gSprites[taskData[4]].callback = sub_81D9338;
- gSprites[taskData[4]].data[4] = 0;
- gSprites[taskData[4]].data[5] = 0;
- gSprites[taskData[4]].data[6] = 4;
- gSprites[taskData[4]].data[7] = 1;
+ gSprites[tKyogreSpriteId].callback = SpriteCB_ChasesAway_DuoRingPush;
+ gSprites[tKyogreSpriteId].sTimer = 0;
+ gSprites[tKyogreSpriteId].sDecel = 0;
+ gSprites[tKyogreSpriteId].sSpeed = 4;
+ gSprites[tKyogreSpriteId].sIsKyogre = TRUE;
}
-static void sub_81D9338(struct Sprite *sprite)
+// Pushes Groudon/Kyogre back slightly, for when Rayquaza's hyper voice ring comes out
+static void SpriteCB_ChasesAway_DuoRingPush(struct Sprite *sprite)
{
- if ((sprite->data[4] & 7) == 0)
+ if ((sprite->sTimer & 7) == 0)
{
- if (sprite->data[7] == 0)
+ if (!sprite->sIsKyogre)
{
- sprite->pos1.x -= sprite->data[6];
- gSprites[sprite->data[0]].pos1.x -= sprite->data[6];
+ sprite->pos1.x -= sprite->sSpeed;
+ gSprites[sprite->sBodyPartSpriteId1].pos1.x -= sprite->sSpeed;
}
else
{
- sprite->pos1.x += sprite->data[6];
- gSprites[sprite->data[0]].pos1.x += sprite->data[6];
- gSprites[sprite->data[1]].pos1.x += sprite->data[6];
+ sprite->pos1.x += sprite->sSpeed;
+ gSprites[sprite->sBodyPartSpriteId1].pos1.x += sprite->sSpeed;
+ gSprites[sprite->sBodyPartSpriteId2].pos1.x += sprite->sSpeed;
}
- sprite->data[5]++;
- sprite->data[6] -= sprite->data[5];
- if (sprite->data[5] == 3)
+ sprite->sDecel++;
+ sprite->sSpeed -= sprite->sDecel;
+ if (sprite->sDecel == 3)
{
- sprite->data[4] = 0;
- sprite->data[5] = 0;
- sprite->data[6] = 0;
+ sprite->sTimer = 0;
+ sprite->sDecel = 0;
+ sprite->sSpeed = 0;
sprite->callback = SpriteCallbackDummy;
return;
}
}
- sprite->data[4]++;
+ sprite->sTimer++;
}
-static void sub_81D93D8(u8 taskId)
+#undef sBodyPartSpriteId1
+#undef sBodyPartSpriteId2
+#undef sTimer
+#undef sDecel
+#undef sSpeed
+#undef sIsKyogre
+
+static void ChasesAway_GroudonStartLeave(u8 taskId)
{
s16 *taskData = gTasks[taskId].data;
- gSprites[taskData[3]].callback = sub_81D9420;
- StartSpriteAnim(&gSprites[taskData[3]], 1);
+ gSprites[tGroudonSpriteId].callback = SpriteCB_ChasesAway_GroudonLeave;
+ StartSpriteAnim(&gSprites[tGroudonSpriteId], 1);
}
-static void sub_81D9420(struct Sprite *sprite)
+static void SpriteCB_ChasesAway_GroudonLeave(struct Sprite *sprite)
{
switch (sprite->animCmdIndex)
{
@@ -2733,19 +2966,19 @@ static void sub_81D9420(struct Sprite *sprite)
}
}
-static void sub_81D94D4(u8 taskId)
+static void ChasesAway_KyogreStartLeave(u8 taskId)
{
s16 *taskData, *spriteData;
taskData = gTasks[taskId].data;
- spriteData = gSprites[taskData[4]].data;
+ spriteData = gSprites[tKyogreSpriteId].data;
- gSprites[taskData[4]].callback = sub_81D9528;
- gSprites[spriteData[0]].callback = sub_81D9528;
- gSprites[spriteData[1]].callback = sub_81D9528;
+ gSprites[tKyogreSpriteId].callback = SpriteCB_ChasesAway_KyogreLeave;
+ gSprites[spriteData[0]].callback = SpriteCB_ChasesAway_KyogreLeave;
+ gSprites[spriteData[1]].callback = SpriteCB_ChasesAway_KyogreLeave;
}
-static void sub_81D9528(struct Sprite *sprite)
+static void SpriteCB_ChasesAway_KyogreLeave(struct Sprite *sprite)
{
if ((sprite->data[4] & 3) == 0)
{
@@ -2756,9 +2989,9 @@ static void sub_81D9528(struct Sprite *sprite)
}
if (sprite->data[5] == 128)
{
- sprite->data[7] = CreateSprite(&sUnknown_0862ACF0, 152, 132, 0);
+ sprite->data[7] = CreateSprite(&sSpriteTemplate_ChasesAway_KyogreSplash, 152, 132, 0);
gSprites[sprite->data[7]].oam.priority = 1;
- sprite->data[7] = CreateSprite(&sUnknown_0862ACF0, 224, 132, 0);
+ sprite->data[7] = CreateSprite(&sSpriteTemplate_ChasesAway_KyogreSplash, 224, 132, 0);
gSprites[sprite->data[7]].oam.priority = 1;
gSprites[sprite->data[7]].hFlip = 1;
sprite->data[5]++;
@@ -2782,145 +3015,169 @@ static void sub_81D9528(struct Sprite *sprite)
sprite->data[4]++;
}
-static void sub_81D961C(struct Sprite *sprite)
+#define sTailSpriteId data[0]
+#define sYOffset data[4]
+#define sYOffsetDir data[5]
+#define sFloatTimer data[6]
+#define sTimer data[7]
+
+#define sTailFloatDelay data[4]
+#define sTailFloatPeak data[5]
+
+static void SpriteCB_ChasesAway_Rayquaza(struct Sprite *sprite)
{
- s16 counter = sprite->data[7];
- if (counter <= 64)
+ s16 frame = sprite->sTimer;
+ if (frame <= 64)
{
sprite->pos2.y += 2;
- gSprites[sprite->data[0]].pos2.y += 2;
- if (sprite->data[7] == 64)
+ gSprites[sprite->sTailSpriteId].pos2.y += 2;
+ if (sprite->sTimer == 64)
{
- sub_81D9868(sprite, 1, 0, -48);
- sprite->data[4] = 5;
- sprite->data[5] = -1;
- gSprites[sprite->data[0]].data[4] = 3;
- gSprites[sprite->data[0]].data[5] = 5;
+ ChasesAway_SetRayquazaAnim(sprite, 1, 0, -48);
+ sprite->sYOffset = 5;
+ sprite->sYOffsetDir = -1;
+ gSprites[sprite->sTailSpriteId].sTailFloatDelay = 3;
+ gSprites[sprite->sTailSpriteId].sTailFloatPeak = 5;
}
}
- else if (counter <= 111)
+ else if (frame <= 111)
{
- sub_81D97E0(sprite);
- if (sprite->data[4] == 0)
+ SpriteCB_ChasesAway_RayquazaFloat(sprite);
+ if (sprite->sYOffset == 0)
PlaySE(SE_MUGSHOT);
- if (sprite->data[4] == -3)
- sub_81D9868(sprite, 2, 48, 16);
+ if (sprite->sYOffset == -3)
+ ChasesAway_SetRayquazaAnim(sprite, 2, 48, 16);
}
- else if (counter == 112)
+ else if (frame == 112)
{
- gSprites[sprite->data[0]].data[4] = 7;
- gSprites[sprite->data[0]].data[5] = 3;
- sub_81D97E0(sprite);
+ gSprites[sprite->sTailSpriteId].sTailFloatDelay = 7;
+ gSprites[sprite->sTailSpriteId].sTailFloatPeak = 3;
+ SpriteCB_ChasesAway_RayquazaFloat(sprite);
}
- else if (counter <= 327)
+ else if (frame <= 327)
{
- sub_81D97E0(sprite);
+ SpriteCB_ChasesAway_RayquazaFloat(sprite);
}
- else if (counter == 328)
+ else if (frame == 328)
{
- sub_81D97E0(sprite);
- sub_81D9868(sprite, 3, 48, 16);
+ SpriteCB_ChasesAway_RayquazaFloat(sprite);
+ ChasesAway_SetRayquazaAnim(sprite, 3, 48, 16);
sprite->pos2.x = 1;
- gSprites[sprite->data[0]].pos2.x = 1;
+ gSprites[sprite->sTailSpriteId].pos2.x = 1;
PlayCry1(SPECIES_RAYQUAZA, 0);
- CreateTask(sub_81D98B4, 0);
+ CreateTask(Task_ChasesAway_AnimateRing, 0);
}
else
{
- switch (counter)
+ switch (frame)
{
case 376:
sprite->pos2.x = 0;
- gSprites[sprite->data[0]].pos2.x = 0;
- sub_81D97E0(sprite);
- sub_81D9868(sprite, 2, 48, 16);
- sprite->callback = sub_81D97E0;
+ gSprites[sprite->sTailSpriteId].pos2.x = 0;
+ SpriteCB_ChasesAway_RayquazaFloat(sprite);
+ ChasesAway_SetRayquazaAnim(sprite, 2, 48, 16);
+ sprite->callback = SpriteCB_ChasesAway_RayquazaFloat;
return;
case 352:
- sub_81D9274(FindTaskIdByFunc(Task_HandleRayChasesAway));
+ ChasesAway_PushDuoBack(FindTaskIdByFunc(Task_HandleRayChasesAway));
break;
}
}
- if (sprite->data[7] > 328 && (sprite->data[7] & 1) == 0)
+ if (sprite->sTimer > 328 && (sprite->sTimer & 1) == 0)
{
sprite->pos2.x *= -1;
- gSprites[sprite->data[0]].pos2.x = sprite->pos2.x;
+ gSprites[sprite->sTailSpriteId].pos2.x = sprite->pos2.x;
}
- sprite->data[7]++;
+ sprite->sTimer++;
}
-static void sub_81D97E0(struct Sprite *sprite)
+static void SpriteCB_ChasesAway_RayquazaFloat(struct Sprite *body)
{
- struct Sprite *sprite2 = &gSprites[sprite->data[0]];
- if (!(sprite->data[6] & sprite2->data[4]))
+ struct Sprite *tail = &gSprites[body->sTailSpriteId];
+ if (!(body->sFloatTimer & tail->sTailFloatDelay))
{
- sprite->pos2.y += sprite->data[4];
- gSprites[sprite->data[0]].pos2.y += sprite->data[4];
- sprite->data[4] += sprite->data[5];
- if (sprite->data[4] >= sprite2->data[5] || sprite->data[4] <= -sprite2->data[5])
+ body->pos2.y += body->sYOffset;
+ gSprites[body->sTailSpriteId].pos2.y += body->sYOffset; // why access gSprites again? tail->pos2.y would be sufficient
+ body->sYOffset += body->sYOffsetDir;
+ if (body->sYOffset >= tail->sTailFloatPeak || body->sYOffset <= -tail->sTailFloatPeak)
{
- if (sprite->data[4] > sprite2->data[5])
- sprite->data[4] = sprite2->data[5];
- else if (sprite->data[4] < -sprite2->data[5])
- sprite->data[4] = -sprite2->data[5];
+ if (body->sYOffset > tail->sTailFloatPeak)
+ body->sYOffset = tail->sTailFloatPeak;
+ else if (body->sYOffset < -tail->sTailFloatPeak)
+ body->sYOffset = -tail->sTailFloatPeak;
- sprite->data[5] *= -1;
+ body->sYOffsetDir *= -1;
}
}
- sprite->data[6]++;
+ body->sFloatTimer++;
}
-static void sub_81D9868(struct Sprite *sprite, u8 animNum, s16 x, s16 y)
+static void ChasesAway_SetRayquazaAnim(struct Sprite *body, u8 animNum, s16 x, s16 y)
{
- struct Sprite *sprite2 = &gSprites[sprite->data[0]];
+ struct Sprite *tail = &gSprites[body->sTailSpriteId];
- sprite2->pos1.x = sprite->pos1.x + x;
- sprite2->pos1.y = sprite->pos1.y + y;
+ tail->pos1.x = body->pos1.x + x;
+ tail->pos1.y = body->pos1.y + y;
- sprite2->pos2.x = sprite->pos2.x;
- sprite2->pos2.y = sprite->pos2.y;
+ tail->pos2.x = body->pos2.x;
+ tail->pos2.y = body->pos2.y;
- StartSpriteAnim(sprite, animNum);
- StartSpriteAnim(sprite2, animNum);
+ StartSpriteAnim(body, animNum);
+ StartSpriteAnim(tail, animNum);
}
-static void sub_81D98B4(u8 taskId)
+#undef sTailSpriteId
+#undef sYOffset
+#undef sYOffsetDir
+#undef sFloatTimer
+#undef sTimer
+#undef sTailFloatDelay
+#undef sTailFloatPeak
+
+#define tState data[0]
+#define tScale data[1]
+#define tNumRings data[2]
+#define tScaleTimer data[3]
+#define tScaleSpeed data[4]
+#define tSoundTimer data[5]
+
+static void Task_ChasesAway_AnimateRing(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- switch (data[0])
+ switch (tState)
{
case 0:
- SetBgAffine(2, 0x4000, 0x4000, 0x78, 0x40, 0x100, 0x100, 0);
+ SetBgAffine(2, 0x4000, 0x4000, 120, 64, 256, 256, 0);
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
- data[4] = 16;
- data[0]++;
+ tScaleSpeed = 16;
+ tState++;
break;
case 1:
- if (data[5] == 8)
+ if (tSoundTimer == 8)
PlaySE(SE_SLIDING_DOOR);
- if (data[2] == 2)
+ if (tNumRings == 2)
{
- data[0]++;
+ tState++;
}
else
{
- data[1] += data[4];
- data[5]++;
- if (data[3] % 3 == 0 && data[4] != 4)
- data[4] -= 2;
-
- data[3]++;
- SetBgAffine(2, 0x4000, 0x4000, 0x78, 0x40, 0x100 - data[1], 0x100 - data[1], 0);
- if (data[1] > 255)
+ tScale += tScaleSpeed;
+ tSoundTimer++;
+ if (tScaleTimer % 3 == 0 && tScaleSpeed != 4)
+ tScaleSpeed -= 2;
+
+ tScaleTimer++;
+ SetBgAffine(2, 0x4000, 0x4000, 120, 64, 256 - tScale, 256 - tScale, 0);
+ if (tScale > 255)
{
- data[1] = 0;
- data[3] = 0;
- data[5] = 0;
- data[4] = 16;
- data[2]++;
+ tScale = 0;
+ tScaleTimer = 0;
+ tSoundTimer = 0;
+ tScaleSpeed = 16;
+ tNumRings++;
}
}
break;
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 6c0a02d8c..898459c0a 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -5,7 +5,6 @@
#include "text.h"
#include "item.h"
#include "task.h"
-#include "constants/species.h"
#include "save.h"
#include "load_save.h"
#include "pokemon.h"
@@ -870,23 +869,18 @@ static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t r
sp24[j][0] = i;
var1 = sub_80E7A9C(&_src->mail[0]);
var2 = sub_80E7A9C(&_src->mail[1]);
- if (!var1 && var2)
+ if (!(var1 || var2) || (var1 && var2))
{
- #ifndef NONMATCHING
- register u8 one asm("r0") = 1; // boo, a fakematch
- sp24[j][1] = one;
- #else
- sp24[j][1] = 1;
- #endif
- }
- else if ((var1 && var2) || (!var1 && !var2))
- {
- sp24[j][1] = Random2() % 2;
+ sp24[j][1] = Random2() % 2;
}
else if (var1 && !var2)
{
sp24[j][1] = 0;
}
+ else if (!var1 && var2)
+ {
+ sp24[j][1] = 1;
+ }
j++;
}
}
diff --git a/src/recorded_battle.c b/src/recorded_battle.c
index 5a0579f70..881c2d3ec 100644
--- a/src/recorded_battle.c
+++ b/src/recorded_battle.c
@@ -846,7 +846,7 @@ bool8 sub_8186450(void)
return (sUnknown_0203CCD0 == 0);
}
-void sub_8186468(u8 *dst)
+void GetRecordedBattleRecordMixFriendName(u8 *dst)
{
s32 i;
diff --git a/src/region_map.c b/src/region_map.c
index de3b04cb2..c2a5b4e9c 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -129,30 +129,34 @@ static const u8 sRegionMap_MapSectionLayout[] = INCBIN_U8("graphics/pokenav/regi
static const u16 sRegionMap_SpecialPlaceLocations[][2] =
{
- {MAPSEC_UNDERWATER_TERRA_CAVE, MAPSEC_ROUTE_105},
- {MAPSEC_UNDERWATER_124, MAPSEC_ROUTE_124},
- {MAPSEC_UNDERWATER_UNK1, MAPSEC_ROUTE_129},
- {MAPSEC_UNDERWATER_125, MAPSEC_ROUTE_126},
- {MAPSEC_UNDERWATER_126, MAPSEC_ROUTE_127},
- {MAPSEC_UNDERWATER_127, MAPSEC_ROUTE_128},
- {MAPSEC_UNDERWATER_129, MAPSEC_ROUTE_129},
- {MAPSEC_UNDERWATER_SOOTOPOLIS, MAPSEC_SOOTOPOLIS_CITY},
- {MAPSEC_UNDERWATER_128, MAPSEC_ROUTE_128},
- {MAPSEC_AQUA_HIDEOUT, MAPSEC_LILYCOVE_CITY},
- {MAPSEC_AQUA_HIDEOUT_OLD, MAPSEC_LILYCOVE_CITY},
- {MAPSEC_MAGMA_HIDEOUT, MAPSEC_ROUTE_112},
- {MAPSEC_UNDERWATER_SEALED_CHAMBER, MAPSEC_ROUTE_134},
- {MAPSEC_PETALBURG_WOODS, MAPSEC_ROUTE_104},
- {MAPSEC_JAGGED_PASS, MAPSEC_ROUTE_112},
- {MAPSEC_MT_PYRE, MAPSEC_ROUTE_122},
- {MAPSEC_SKY_PILLAR, MAPSEC_ROUTE_131},
- {MAPSEC_MIRAGE_TOWER, MAPSEC_ROUTE_111},
- {MAPSEC_TRAINER_HILL, MAPSEC_ROUTE_111},
- {MAPSEC_DESERT_UNDERPASS, MAPSEC_ROUTE_114},
- {MAPSEC_ALTERING_CAVE, MAPSEC_ROUTE_103},
- {MAPSEC_ARTISAN_CAVE, MAPSEC_ROUTE_103},
- {MAPSEC_ABANDONED_SHIP, MAPSEC_ROUTE_108},
- {MAPSEC_NONE, MAPSEC_NONE}
+ {MAPSEC_UNDERWATER_105, MAPSEC_ROUTE_105},
+ {MAPSEC_UNDERWATER_124, MAPSEC_ROUTE_124},
+ #ifdef BUGFIX
+ {MAPSEC_UNDERWATER_125, MAPSEC_ROUTE_125},
+ #else
+ {MAPSEC_UNDERWATER_125, MAPSEC_ROUTE_129}, // BUG: Map will incorrectly display the name of Route 129 when diving on Route 125 (for Marine Cave only)
+ #endif
+ {MAPSEC_UNDERWATER_126, MAPSEC_ROUTE_126},
+ {MAPSEC_UNDERWATER_127, MAPSEC_ROUTE_127},
+ {MAPSEC_UNDERWATER_128, MAPSEC_ROUTE_128},
+ {MAPSEC_UNDERWATER_129, MAPSEC_ROUTE_129},
+ {MAPSEC_UNDERWATER_SOOTOPOLIS, MAPSEC_SOOTOPOLIS_CITY},
+ {MAPSEC_UNDERWATER_SEAFLOOR_CAVERN, MAPSEC_ROUTE_128},
+ {MAPSEC_AQUA_HIDEOUT, MAPSEC_LILYCOVE_CITY},
+ {MAPSEC_AQUA_HIDEOUT_OLD, MAPSEC_LILYCOVE_CITY},
+ {MAPSEC_MAGMA_HIDEOUT, MAPSEC_ROUTE_112},
+ {MAPSEC_UNDERWATER_SEALED_CHAMBER, MAPSEC_ROUTE_134},
+ {MAPSEC_PETALBURG_WOODS, MAPSEC_ROUTE_104},
+ {MAPSEC_JAGGED_PASS, MAPSEC_ROUTE_112},
+ {MAPSEC_MT_PYRE, MAPSEC_ROUTE_122},
+ {MAPSEC_SKY_PILLAR, MAPSEC_ROUTE_131},
+ {MAPSEC_MIRAGE_TOWER, MAPSEC_ROUTE_111},
+ {MAPSEC_TRAINER_HILL, MAPSEC_ROUTE_111},
+ {MAPSEC_DESERT_UNDERPASS, MAPSEC_ROUTE_114},
+ {MAPSEC_ALTERING_CAVE, MAPSEC_ROUTE_103},
+ {MAPSEC_ARTISAN_CAVE, MAPSEC_ROUTE_103},
+ {MAPSEC_ABANDONED_SHIP, MAPSEC_ROUTE_108},
+ {MAPSEC_NONE, MAPSEC_NONE}
};
static const u16 sMarineCaveMapSecIds[] =
@@ -651,31 +655,31 @@ static u8 ProcessRegionMapInput_Full(void)
input = MAP_INPUT_NONE;
gRegionMap->cursorDeltaX = 0;
gRegionMap->cursorDeltaY = 0;
- if (gMain.heldKeys & DPAD_UP && gRegionMap->cursorPosY > MAPCURSOR_Y_MIN)
+ if (JOY_HELD(DPAD_UP) && gRegionMap->cursorPosY > MAPCURSOR_Y_MIN)
{
gRegionMap->cursorDeltaY = -1;
input = MAP_INPUT_MOVE_START;
}
- if (gMain.heldKeys & DPAD_DOWN && gRegionMap->cursorPosY < MAPCURSOR_Y_MAX)
+ if (JOY_HELD(DPAD_DOWN) && gRegionMap->cursorPosY < MAPCURSOR_Y_MAX)
{
gRegionMap->cursorDeltaY = +1;
input = MAP_INPUT_MOVE_START;
}
- if (gMain.heldKeys & DPAD_LEFT && gRegionMap->cursorPosX > MAPCURSOR_X_MIN)
+ if (JOY_HELD(DPAD_LEFT) && gRegionMap->cursorPosX > MAPCURSOR_X_MIN)
{
gRegionMap->cursorDeltaX = -1;
input = MAP_INPUT_MOVE_START;
}
- if (gMain.heldKeys & DPAD_RIGHT && gRegionMap->cursorPosX < MAPCURSOR_X_MAX)
+ if (JOY_HELD(DPAD_RIGHT) && gRegionMap->cursorPosX < MAPCURSOR_X_MAX)
{
gRegionMap->cursorDeltaX = +1;
input = MAP_INPUT_MOVE_START;
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
input = MAP_INPUT_A_BUTTON;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
input = MAP_INPUT_B_BUTTON;
}
@@ -730,31 +734,31 @@ static u8 ProcessRegionMapInput_Zoomed(void)
input = MAP_INPUT_NONE;
gRegionMap->zoomedCursorDeltaX = 0;
gRegionMap->zoomedCursorDeltaY = 0;
- if (gMain.heldKeys & DPAD_UP && gRegionMap->scrollY > -0x34)
+ if (JOY_HELD(DPAD_UP) && gRegionMap->scrollY > -0x34)
{
gRegionMap->zoomedCursorDeltaY = -1;
input = MAP_INPUT_MOVE_START;
}
- if (gMain.heldKeys & DPAD_DOWN && gRegionMap->scrollY < 0x3c)
+ if (JOY_HELD(DPAD_DOWN) && gRegionMap->scrollY < 0x3c)
{
gRegionMap->zoomedCursorDeltaY = +1;
input = MAP_INPUT_MOVE_START;
}
- if (gMain.heldKeys & DPAD_LEFT && gRegionMap->scrollX > -0x2c)
+ if (JOY_HELD(DPAD_LEFT) && gRegionMap->scrollX > -0x2c)
{
gRegionMap->zoomedCursorDeltaX = -1;
input = MAP_INPUT_MOVE_START;
}
- if (gMain.heldKeys & DPAD_RIGHT && gRegionMap->scrollX < 0xac)
+ if (JOY_HELD(DPAD_RIGHT) && gRegionMap->scrollX < 0xac)
{
gRegionMap->zoomedCursorDeltaX = +1;
input = MAP_INPUT_MOVE_START;
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
input = MAP_INPUT_A_BUTTON;
}
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
input = MAP_INPUT_B_BUTTON;
}
@@ -998,7 +1002,7 @@ static void InitMapBasedOnPlayerLocation(void)
mapHeight = gMapHeader.mapLayout->height;
x = gSaveBlock1Ptr->pos.x;
y = gSaveBlock1Ptr->pos.y;
- if (gRegionMap->mapSecId == MAPSEC_UNDERWATER_128 || gRegionMap->mapSecId == MAPSEC_UNDERWATER_MARINE_CAVE)
+ if (gRegionMap->mapSecId == MAPSEC_UNDERWATER_SEAFLOOR_CAVERN || gRegionMap->mapSecId == MAPSEC_UNDERWATER_MARINE_CAVE)
gRegionMap->playerIsInCave = TRUE;
break;
case MAP_TYPE_UNDERGROUND:
@@ -1089,7 +1093,7 @@ static void InitMapBasedOnPlayerLocation(void)
x = 0;
break;
case MAPSEC_ROUTE_126:
- case MAPSEC_UNDERWATER_125:
+ case MAPSEC_UNDERWATER_126:
x = 0;
if (gSaveBlock1Ptr->pos.x > 32)
x++;
diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c
index 204eb6733..d0e815816 100644
--- a/src/reset_rtc_screen.c
+++ b/src/reset_rtc_screen.c
@@ -380,7 +380,7 @@ static void Task_ResetRtc_1(u8 taskId)
u8 selection = data[2];
const struct ResetRtcStruct *selectionInfo = &sUnknown_08510428[selection - 1];
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
gTasks[taskId].func = Task_ResetRtc_2;
data[1] = 0;
@@ -389,7 +389,7 @@ static void Task_ResetRtc_1(u8 taskId)
return;
}
- if (gMain.newKeys & DPAD_RIGHT)
+ if (JOY_NEW(DPAD_RIGHT))
{
if (selectionInfo->right)
{
@@ -399,7 +399,7 @@ static void Task_ResetRtc_1(u8 taskId)
}
}
- if (gMain.newKeys & DPAD_LEFT)
+ if (JOY_NEW(DPAD_LEFT))
{
if (selectionInfo->left)
{
@@ -411,7 +411,7 @@ static void Task_ResetRtc_1(u8 taskId)
if (selection == 5)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
gLocalTime.days = data[3];
gLocalTime.hours = data[4];
@@ -423,7 +423,7 @@ static void Task_ResetRtc_1(u8 taskId)
data[2] = 6;
}
}
- else if (MoveTimeUpDown(&data[selectionInfo->dataIndex], selectionInfo->minVal, selectionInfo->maxVal, gMain.newAndRepeatedKeys & (DPAD_UP | DPAD_DOWN)))
+ else if (MoveTimeUpDown(&data[selectionInfo->dataIndex], selectionInfo->minVal, selectionInfo->maxVal, JOY_REPEAT(DPAD_UP | DPAD_DOWN)))
{
PlaySE(SE_SELECT);
PrintTime(data[8], 0, 1, data[3], data[4], data[5], data[6]);
@@ -532,12 +532,12 @@ static void Task_ShowResetRtcPrompt(u8 taskId)
ScheduleBgCopyTilemapToVram(0);
data[0]++;
case 1:
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
DestroyTask(taskId);
DoSoftReset();
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
DestroyTask(taskId);
@@ -620,7 +620,7 @@ static void Task_ResetRtcScreen(u8 taskId)
}
data[0] = 5;
case 5:
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
BeginNormalPaletteFade(0xFFFFFFFF, 1, 0, 0x10, RGB_WHITEALPHA);
data[0] = 6;
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
index 46fc4cd41..d8d75a0e0 100644
--- a/src/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
@@ -11,7 +11,6 @@
#include "battle_controllers.h"
#include "link.h"
#include "sprite.h"
-#include "constants/species.h"
#include "constants/trainers.h"
#include "battle_interface.h"
#include "battle_anim.h"
diff --git a/src/roamer.c b/src/roamer.c
index 8a67234e3..d053e5b25 100644
--- a/src/roamer.c
+++ b/src/roamer.c
@@ -4,7 +4,6 @@
#include "random.h"
#include "roamer.h"
#include "constants/maps.h"
-#include "constants/species.h"
enum
{
diff --git a/src/roulette.c b/src/roulette.c
index a0d1a7dc0..4173edcdb 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -30,7 +30,6 @@
#include "constants/coins.h"
#include "constants/rgb.h"
#include "constants/roulette.h"
-#include "constants/species.h"
#include "constants/songs.h"
#define BALLS_PER_ROUND 6
@@ -464,8 +463,9 @@ static const struct WindowTemplate sWindowTemplates[] =
.paletteNum = 15,
.baseBlock = 0xC5
},
- // BUG: Array not terminated properly
- //DUMMY_WIN_TEMPLATE
+ #ifdef UBFIX
+ DUMMY_WIN_TEMPLATE,
+ #endif
};
static const struct GridSelection sGridSelections[NUM_GRID_SELECTIONS + 1] =
diff --git a/src/save.c b/src/save.c
index 3ae2f6fd5..680f33de0 100644
--- a/src/save.c
+++ b/src/save.c
@@ -648,12 +648,10 @@ static void UpdateSaveAddresses(void)
gRamSaveSectionLocations[i].size = sSaveSectionOffsets[i].size;
}
- for (i = SECTOR_ID_PKMN_STORAGE_START; i <= SECTOR_ID_PKMN_STORAGE_END; i++)
+ for (; i <= SECTOR_ID_PKMN_STORAGE_END; i++) //setting i to SECTOR_ID_PKMN_STORAGE_START does not match
{
gRamSaveSectionLocations[i].data = (void*)(gPokemonStoragePtr) + sSaveSectionOffsets[i].toAdd;
gRamSaveSectionLocations[i].size = sSaveSectionOffsets[i].size;
-
- i++;i--; // needed to match
}
}
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
index 7c824e82d..9bf0e7ed4 100644
--- a/src/save_failed_screen.c
+++ b/src/save_failed_screen.c
@@ -306,7 +306,7 @@ static void CB2_GameplayCannotBeContinued(void)
{
gSaveFailedClockInfo[CLOCK_RUNNING] = FALSE;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1));
SaveFailedScreenTextPrint(gText_GamePlayCannotBeContinued, 1, 0);
@@ -319,7 +319,7 @@ static void CB2_FadeAndReturnToTitleScreen(void)
{
gSaveFailedClockInfo[CLOCK_RUNNING] = FALSE;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
SetVBlankCallback(VBlankCB);
diff --git a/src/scanline_effect.c b/src/scanline_effect.c
index 0a4b0b8fd..1d5814429 100644
--- a/src/scanline_effect.c
+++ b/src/scanline_effect.c
@@ -100,16 +100,16 @@ void ScanlineEffect_InitHBlankDmaTransfer(void)
static void CopyValue16Bit(void)
{
- u16 *dest = (u16 *)gScanlineEffect.dmaDest;
- u16 *src = (u16 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer];
+ vu16 *dest = (vu16 *)gScanlineEffect.dmaDest;
+ vu16 *src = (vu16 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer];
*dest = *src;
}
static void CopyValue32Bit(void)
{
- u32 *dest = (u32 *)gScanlineEffect.dmaDest;
- u32 *src = (u32 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer];
+ vu32 *dest = (vu32 *)gScanlineEffect.dmaDest;
+ vu32 *src = (vu32 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer];
*dest = *src;
}
diff --git a/src/scrcmd.c b/src/scrcmd.c
index d2ebcbb85..ef0b3f86b 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -788,8 +788,8 @@ bool8 ScrCmd_warphole(struct ScriptContext *ctx)
{
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
- s16 x;
- s16 y;
+ u16 x;
+ u16 y;
PlayerGetDestCoords(&x, &y);
if (mapGroup == 0xFF && mapNum == 0xFF)
@@ -1325,9 +1325,9 @@ bool8 ScrCmd_closemessage(struct ScriptContext *ctx)
static bool8 WaitForAorBPress(void)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
return TRUE;
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
return TRUE;
return FALSE;
}
diff --git a/src/script.c b/src/script.c
index 889c25765..9ba1a7429 100644
--- a/src/script.c
+++ b/src/script.c
@@ -26,9 +26,9 @@ void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTable
s32 i;
ctx->mode = 0;
- ctx->scriptPtr = NULL;
+ ctx->scriptPtr = 0;
ctx->stackDepth = 0;
- ctx->nativePtr = NULL;
+ ctx->nativePtr = 0;
ctx->cmdTable = cmdTable;
ctx->cmdTableEnd = cmdTableEnd;
@@ -55,7 +55,7 @@ void SetupNativeScript(struct ScriptContext *ctx, bool8 (*ptr)(void))
void StopScript(struct ScriptContext *ctx)
{
ctx->mode = 0;
- ctx->scriptPtr = NULL;
+ ctx->scriptPtr = 0;
}
bool8 RunScriptCommand(struct ScriptContext *ctx)
diff --git a/src/script_menu.c b/src/script_menu.c
index 2b135e301..425cdc251 100644
--- a/src/script_menu.c
+++ b/src/script_menu.c
@@ -170,7 +170,7 @@ static void Task_HandleMultichoiceInput(u8 taskId)
else
selection = Menu_ProcessInput();
- if (gMain.newKeys & (DPAD_UP | DPAD_DOWN))
+ if (JOY_NEW(DPAD_UP | DPAD_DOWN))
{
DrawLinkServicesMultichoiceMenu(tMultichoiceId);
}
diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c
index a7b5433f0..c9a2127ac 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/species.h"
#include "constants/tv.h"
#include "constants/battle_frontier.h"
diff --git a/src/secret_base.c b/src/secret_base.c
index 3f69e0419..8e0929593 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -46,7 +46,6 @@
#include "constants/moves.h"
#include "constants/secret_bases.h"
#include "constants/songs.h"
-#include "constants/species.h"
#include "constants/trainers.h"
#include "constants/tv.h"
@@ -964,7 +963,7 @@ static void HandleRegistryMenuInput(u8 taskId)
data = gTasks[taskId].data;
input = ListMenu_ProcessInput(data[5]);
- ListMenuGetScrollAndRow(data[5], (u16 *)&data[2], (u16 *)&data[1]);
+ ListMenuGetScrollAndRow(data[5], &data[2], &data[1]);
switch (input)
{
case LIST_NOTHING_CHOSEN:
@@ -1045,10 +1044,10 @@ void DeleteRegistry_Yes_Callback(u8 taskId)
{
s16 *data = gTasks[taskId].data;
ClearDialogWindowAndFrame(0, 0);
- DestroyListMenuTask((u8)data[5], (u16 *)&data[2], (u16 *)&data[1]);
+ DestroyListMenuTask(data[5], &data[2], &data[1]);
gSaveBlock1Ptr->secretBases[data[4]].registryStatus = 0;
BuildRegistryMenuItems(taskId);
- sub_812225C((u16 *)&data[2], (u16 *)&data[1], (u16)data[3], (u16)data[0]);
+ sub_812225C(&data[2], &data[1], data[3], data[0]);
FinalizeRegistryMenu(taskId);
gTasks[taskId].func = HandleRegistryMenuInput;
}
@@ -1062,7 +1061,7 @@ static void DeleteRegistry_No(u8 taskId)
{
s16 *data = gTasks[taskId].data;
ClearDialogWindowAndFrame(0, 0);
- DestroyListMenuTask((u8)data[5], (u16 *)&data[2], (u16 *)&data[1]);
+ DestroyListMenuTask(data[5], &data[2], &data[1]);
FinalizeRegistryMenu(taskId);
gTasks[taskId].func = HandleRegistryMenuInput;
}
diff --git a/src/shop.c b/src/shop.c
index 5cba2767d..44ab0885c 100755
--- a/src/shop.c
+++ b/src/shop.c
@@ -984,7 +984,7 @@ static void Task_BuyHowManyDialogueInit(u8 taskId)
u16 maxQuantity;
DrawStdFrameWithCustomTileAndPalette(3, FALSE, 1, 13);
- ConvertIntToDecimalStringN(gStringVar1, quantityInBag, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ ConvertIntToDecimalStringN(gStringVar1, quantityInBag, STR_CONV_MODE_RIGHT_ALIGN, MAX_ITEM_DIGITS + 1);
StringExpandPlaceholders(gStringVar4, gText_InBagVar1);
BuyMenuPrint(3, gStringVar4, 0, 1, 0, 0);
tItemCount = 1;
@@ -1017,7 +1017,7 @@ static void Task_BuyHowManyDialogueHandleInput(u8 taskId)
}
else
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
ClearStdWindowAndFrameToTransparent(4, 0);
@@ -1026,11 +1026,11 @@ static void Task_BuyHowManyDialogueHandleInput(u8 taskId)
ClearWindowTilemap(3);
PutWindowTilemap(1);
CopyItemName(tItemId, gStringVar1);
- ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, 2);
+ ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, BAG_ITEM_CAPACITY_DIGITS);
ConvertIntToDecimalStringN(gStringVar3, gShopDataPtr->totalCost, STR_CONV_MODE_LEFT_ALIGN, 6);
BuyMenuDisplayMessage(taskId, gText_Var1AndYouWantedVar2, BuyMenuConfirmPurchase);
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
ClearStdWindowAndFrameToTransparent(4, 0);
@@ -1106,7 +1106,7 @@ static void Task_ReturnToItemListAfterItemPurchase(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
PlaySE(SE_SELECT);
if (tItemId == ITEM_POKE_BALL && tItemCount > 9 && AddBagItem(ITEM_PREMIER_BALL, 1) == TRUE)
@@ -1122,7 +1122,7 @@ static void Task_ReturnToItemListAfterItemPurchase(u8 taskId)
static void Task_ReturnToItemListAfterDecorationPurchase(u8 taskId)
{
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
PlaySE(SE_SELECT);
BuyMenuReturnToItemList(taskId);
@@ -1148,7 +1148,7 @@ static void BuyMenuPrintItemQuantityAndPrice(u8 taskId)
FillWindowPixelBuffer(4, PIXEL_FILL(1));
PrintMoneyAmount(4, 38, 1, gShopDataPtr->totalCost, TEXT_SPEED_FF);
- ConvertIntToDecimalStringN(gStringVar1, tItemCount, STR_CONV_MODE_LEADING_ZEROS, 2);
+ ConvertIntToDecimalStringN(gStringVar1, tItemCount, STR_CONV_MODE_LEADING_ZEROS, BAG_ITEM_CAPACITY_DIGITS);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
BuyMenuPrint(4, gStringVar4, 0, 1, 0, 0);
}
diff --git a/src/slot_machine.c b/src/slot_machine.c
index 9d19fc9a7..7cfd7d22e 100644
--- a/src/slot_machine.c
+++ b/src/slot_machine.c
@@ -985,7 +985,7 @@ static void PlaySlotMachine_Internal(u8 slotMachineIndex, MainCallback exitCallb
{
struct Task *task = &gTasks[CreateTask(SlotMachineDummyTask, 0xFF)];
task->data[0] = slotMachineIndex;
- StoreWordInTwoHalfwords((u16 *)&task->data[1], (intptr_t)exitCallback);
+ StoreWordInTwoHalfwords(&task->data[1], (intptr_t)exitCallback);
}
@@ -1945,7 +1945,7 @@ static bool8 AwardPayoutAction_GivePayoutToPlayer(struct Task *task)
if (sSlotMachine->coins < MAX_COINS)
sSlotMachine->coins++;
task->data[1] = 8;
- if (gMain.heldKeys & A_BUTTON)
+ if (JOY_HELD(A_BUTTON))
task->data[1] = 4;
}
if (IsFanfareTaskInactive() && JOY_NEW(START_BUTTON))
diff --git a/src/sound.c b/src/sound.c
index 361624b44..ee1753bb3 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -41,24 +41,24 @@ static void Task_DuckBGMForPokemonCry(u8 taskId);
static void RestoreBGMVolumeAfterPokemonCry(void);
static const struct Fanfare sFanfares[] = {
- { MUS_LEVEL_UP, 80 },
- { MUS_OBTAIN_ITEM, 160 },
- { MUS_EVOLVED, 220 },
- { MUS_OBTAIN_TMHM, 220 },
- { MUS_HEAL, 160 },
- { MUS_OBTAIN_BADGE, 340 },
- { MUS_MOVE_DELETED, 180 },
- { MUS_OBTAIN_BERRY, 120 },
- { MUS_AWAKEN_LEGEND, 710 },
- { MUS_SLOTS_JACKPOT, 250 },
- { MUS_SLOTS_WIN, 150 },
- { MUS_TOO_BAD, 160 },
- { MUS_RG_POKE_FLUTE, 450 },
- { MUS_RG_OBTAIN_KEY_ITEM, 170 },
- { MUS_RG_DEX_RATING, 196 },
- { MUS_OBTAIN_B_POINTS, 313 },
- { MUS_OBTAIN_SYMBOL, 318 },
- { MUS_REGISTER_MATCH_CALL, 135 },
+ { MUS_LEVEL_UP, 80 },
+ { MUS_OBTAIN_ITEM, 160 },
+ { MUS_EVOLVED, 220 },
+ { MUS_OBTAIN_TMHM, 220 },
+ { MUS_HEAL, 160 },
+ { MUS_OBTAIN_BADGE, 340 },
+ { MUS_MOVE_DELETED, 180 },
+ { MUS_OBTAIN_BERRY, 120 },
+ { MUS_AWAKEN_LEGEND, 710 },
+ { MUS_SLOTS_JACKPOT, 250 },
+ { MUS_SLOTS_WIN, 150 },
+ { MUS_TOO_BAD, 160 },
+ { MUS_RG_POKE_FLUTE, 450 },
+ { MUS_RG_OBTAIN_KEY_ITEM, 170 },
+ { MUS_RG_DEX_RATING, 196 },
+ { MUS_OBTAIN_B_POINTS, 313 },
+ { MUS_OBTAIN_SYMBOL, 318 },
+ { MUS_REGISTER_MATCH_CALL, 135 },
};
#define CRY_VOLUME 120 // was 125 in R/S
diff --git a/src/start_menu.c b/src/start_menu.c
index 68a316185..35eb53475 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -43,7 +43,6 @@
#include "trainer_card.h"
#include "window.h"
#include "constants/songs.h"
-#include "rom_8011DC0.h"
#include "union_room.h"
#include "constants/rgb.h"
@@ -463,7 +462,7 @@ static bool32 InitStartMenuStep(void)
sInitStartMenuData[0]++;
break;
case 4:
- if (PrintStartMenuActions((s8 *)&sInitStartMenuData[1], 2))
+ if (PrintStartMenuActions(&sInitStartMenuData[1], 2))
sInitStartMenuData[0]++;
break;
case 5:
@@ -551,19 +550,19 @@ void ShowStartMenu(void)
static bool8 HandleStartMenuInput(void)
{
- if (gMain.newKeys & DPAD_UP)
+ if (JOY_NEW(DPAD_UP))
{
PlaySE(SE_SELECT);
sStartMenuCursorPos = Menu_MoveCursor(-1);
}
- if (gMain.newKeys & DPAD_DOWN)
+ if (JOY_NEW(DPAD_DOWN))
{
PlaySE(SE_SELECT);
sStartMenuCursorPos = Menu_MoveCursor(1);
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
if (sStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].func.u8_void == StartMenuPokedexCallback)
@@ -585,7 +584,7 @@ static bool8 HandleStartMenuInput(void)
return FALSE;
}
- if (gMain.newKeys & (START_BUTTON | B_BUTTON))
+ if (JOY_NEW(START_BUTTON | B_BUTTON))
{
RemoveExtraStartMenuWindows();
HideStartMenu();
@@ -907,12 +906,12 @@ static bool8 SaveSuccesTimer(void)
{
sSaveDialogTimer--;
- if (gMain.heldKeys & A_BUTTON)
+ if (JOY_HELD(A_BUTTON))
{
PlaySE(SE_SELECT);
return TRUE;
}
- else if (sSaveDialogTimer == 0)
+ if (sSaveDialogTimer == 0)
{
return TRUE;
}
@@ -926,7 +925,7 @@ static bool8 SaveErrorTimer(void)
{
sSaveDialogTimer--;
}
- else if (gMain.heldKeys & A_BUTTON)
+ else if (JOY_HELD(A_BUTTON))
{
return TRUE;
}
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 2585f3408..771db961e 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -22,7 +22,6 @@
#include "trig.h"
#include "window.h"
#include "constants/songs.h"
-#include "constants/species.h"
#include "constants/rgb.h"
#define STARTER_MON_COUNT 3
diff --git a/src/task.c b/src/task.c
index a2df66de8..a97496009 100644
--- a/src/task.c
+++ b/src/task.c
@@ -200,7 +200,7 @@ u8 GetTaskCount(void)
void SetWordTaskArg(u8 taskId, u8 dataElem, u32 value)
{
- if (dataElem <= 14)
+ if (dataElem < NUM_TASK_DATA - 1)
{
gTasks[taskId].data[dataElem] = value;
gTasks[taskId].data[dataElem + 1] = value >> 16;
@@ -209,7 +209,7 @@ void SetWordTaskArg(u8 taskId, u8 dataElem, u32 value)
u32 GetWordTaskArg(u8 taskId, u8 dataElem)
{
- if (dataElem <= 14)
+ if (dataElem < NUM_TASK_DATA - 1)
return (u16)gTasks[taskId].data[dataElem] | (gTasks[taskId].data[dataElem + 1] << 16);
else
return 0;
diff --git a/src/title_screen.c b/src/title_screen.c
index 108601685..1d6f90d74 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -727,24 +727,24 @@ static void Task_TitleScreenPhase2(u8 taskId)
// Show Rayquaza silhouette and process main title screen input
static void Task_TitleScreenPhase3(u8 taskId)
{
- if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & START_BUTTON))
+ if ((JOY_NEW(A_BUTTON)) || (JOY_NEW(START_BUTTON)))
{
FadeOutBGM(4);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_WHITEALPHA);
SetMainCallback2(CB2_GoToMainMenu);
}
- else if ((gMain.heldKeys & CLEAR_SAVE_BUTTON_COMBO) == CLEAR_SAVE_BUTTON_COMBO)
+ else if (JOY_HELD(CLEAR_SAVE_BUTTON_COMBO) == CLEAR_SAVE_BUTTON_COMBO)
{
SetMainCallback2(CB2_GoToClearSaveDataScreen);
}
- else if ((gMain.heldKeys & RESET_RTC_BUTTON_COMBO) == RESET_RTC_BUTTON_COMBO
+ else if (JOY_HELD(RESET_RTC_BUTTON_COMBO) == RESET_RTC_BUTTON_COMBO
&& CanResetRTC() == TRUE)
{
FadeOutBGM(4);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
SetMainCallback2(CB2_GoToResetRtcScreen);
}
- else if ((gMain.heldKeys & BERRY_UPDATE_BUTTON_COMBO) == BERRY_UPDATE_BUTTON_COMBO)
+ else if (JOY_HELD(BERRY_UPDATE_BUTTON_COMBO) == BERRY_UPDATE_BUTTON_COMBO)
{
FadeOutBGM(4);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
diff --git a/src/trade.c b/src/trade.c
index 6480f3594..6696c23eb 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -30,7 +30,6 @@
#include "pokemon_summary_screen.h"
#include "pokemon_storage_system.h"
#include "random.h"
-#include "rom_8011DC0.h"
#include "save.h"
#include "script.h"
#include "sound.h"
@@ -50,7 +49,6 @@
#include "constants/moves.h"
#include "constants/region_map_sections.h"
#include "constants/rgb.h"
-#include "constants/species.h"
#include "constants/songs.h"
#include "constants/union_room.h"
@@ -1354,24 +1352,24 @@ static void SetReadyToTrade(void)
static void TradeMenuProcessInput(void)
{
- if (gMain.newAndRepeatedKeys & DPAD_UP)
+ if (JOY_REPEAT(DPAD_UP))
{
TradeMenuMoveCursor(&sTradeMenuData->cursorPosition, 0);
}
- else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ else if (JOY_REPEAT(DPAD_DOWN))
{
TradeMenuMoveCursor(&sTradeMenuData->cursorPosition, 1);
}
- else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ else if (JOY_REPEAT(DPAD_LEFT))
{
TradeMenuMoveCursor(&sTradeMenuData->cursorPosition, 2);
}
- else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ else if (JOY_REPEAT(DPAD_RIGHT))
{
TradeMenuMoveCursor(&sTradeMenuData->cursorPosition, 3);
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
@@ -1452,7 +1450,7 @@ static void TradeMenuProcessInput_SelectedMon(void)
static void ChooseMonAfterButtonPress(void)
{
- if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
+ if ((JOY_NEW(A_BUTTON)) || (JOY_NEW(B_BUTTON)))
{
PlaySE(SE_SELECT);
TradeMenuChooseMon();
@@ -1627,7 +1625,7 @@ static void RedrawTradeMenuAfterPressA(void)
{
int i;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
rbox_fill_rectangle(0);
@@ -1699,7 +1697,7 @@ static void LinkTradeWaitForQueue(void)
static void PartnersMonWasInvalid(void)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
SetLinkData(LINKCMD_READY_CANCEL_TRADE, 0);
sTradeMenuData->tradeMenuFunc = TRADEMENUFUNC_STANDBY;
@@ -2726,9 +2724,9 @@ static void LoadTradeMonPic(u8 whichParty, u8 state)
personality = GetMonData(mon, MON_DATA_PERSONALITY);
if (whichParty == TRADE_PLAYER)
- HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality);
+ HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[1], species, personality);
else
- HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[whichParty * 2 + 1], species, personality);
+ HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[whichParty * 2 + 1], species, personality);
LoadCompressedSpritePalette(GetMonSpritePalStruct(mon));
sTradeData->monSpecies[whichParty] = species;
@@ -3661,7 +3659,7 @@ static bool8 AnimateTradeSequenceCable(void)
case 65:
if (gSprites[sTradeData->unk_D3].callback == SpriteCallbackDummy)
{
- HandleLoadSpecialPokePic_2(&gMonFrontPicTable[sTradeData->monSpecies[TRADE_PARTNER]], gMonSpritesGfxPtr->sprites[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;
@@ -3729,7 +3727,7 @@ static bool8 AnimateTradeSequenceCable(void)
{
return TRUE;
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
sTradeData->state++;
}
@@ -4176,7 +4174,7 @@ static bool8 AnimateTradeSequenceWireless(void)
case 65:
if (gSprites[sTradeData->unk_D3].callback == SpriteCallbackDummy)
{
- HandleLoadSpecialPokePic_2(&gMonFrontPicTable[sTradeData->monSpecies[TRADE_PARTNER]], gMonSpritesGfxPtr->sprites[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;
@@ -4244,7 +4242,7 @@ static bool8 AnimateTradeSequenceWireless(void)
{
return TRUE;
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
sTradeData->state++;
}
diff --git a/src/trainer_card.c b/src/trainer_card.c
index 9d6838176..2d9ec2b09 100755
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -438,13 +438,13 @@ static void Task_TrainerCard(u8 taskId)
DrawTrainerCardWindow(1);
sData->timeColonNeedDraw = FALSE;
}
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
FlipTrainerCard();
PlaySE(SE_RG_CARD_FLIP);
sData->mainState = STATE_WAIT_FLIP_TO_BACK;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
if (gReceivedRemoteLinkPlayers && sData->isLink && InUnionRoom() == TRUE)
{
@@ -465,7 +465,7 @@ static void Task_TrainerCard(u8 taskId)
}
break;
case STATE_HANDLE_INPUT_BACK:
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
if (gReceivedRemoteLinkPlayers && sData->isLink && InUnionRoom() == TRUE)
{
@@ -483,7 +483,7 @@ static void Task_TrainerCard(u8 taskId)
PlaySE(SE_RG_CARD_FLIP);
}
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
if (gReceivedRemoteLinkPlayers && sData->isLink && InUnionRoom() == TRUE)
{
diff --git a/src/trainer_hill.c b/src/trainer_hill.c
index bed8df2e0..18d56723c 100644
--- a/src/trainer_hill.c
+++ b/src/trainer_hill.c
@@ -29,7 +29,6 @@
#include "constants/layouts.h"
#include "constants/moves.h"
#include "constants/maps.h"
-#include "constants/species.h"
#include "constants/trainers.h"
#include "constants/easy_chat.h"
#include "constants/trainer_hill.h"
@@ -356,7 +355,7 @@ static void SetUpDataStruct(void)
{
if (sHillData == NULL)
{
- sHillData = AllocZeroed(sizeof(struct TrHillStruct2));
+ sHillData = AllocZeroed(sizeof(*sHillData));
sHillData->floorId = gMapHeader.mapLayoutId - LAYOUT_TRAINER_HILL_1F;
CpuCopy32(sDataPerTag[gSaveBlock1Ptr->trainerHill.tag], &sHillData->tag, sizeof(sHillData->tag) + 4 * sizeof(struct TrHillFloor));
nullsub_2();
@@ -672,22 +671,17 @@ bool32 LoadTrainerHillFloorObjectEventScripts(void)
return TRUE;
}
-static u32 sub_81D5F58(u8 floorId, u32 bit, u32 arg2, u32 arg3)
+static u16 GetMetatileForFloor(u8 floorId, u32 x, u32 y, u32 stride) // stride is always 16
{
- u16 var0, var1;
- #ifndef NONMATCHING
- register u16 var2 asm("r3"); //compiler keeps wanting to "mov r3, 0x80" instead of "mov r2 0x80" and then later "add r3, r2, 0"
- #else
- u16 var2;
- #endif
- u16 var3;
+ bool8 impassable;
+ u16 metatile;
+ u16 elevation;
- var0 = (sHillData->floors[floorId].display.unk3A0[arg2] >> (15 - bit) & 1);
- var1 = sHillData->floors[floorId].display.data[arg3 * arg2 + bit];
- var2 = 0x200;
- var3 = 0x3000;
+ impassable = (sHillData->floors[floorId].display.collisionData[y] >> (15 - x) & 1);
+ metatile = sHillData->floors[floorId].display.metatileData[stride * y + x] + 0x200;
+ elevation = 0x3000;
- return ((var0 << 10) | var3) | (var1 | var2);
+ return (((impassable << 10) & METATILE_COLLISION_MASK) | elevation) | (metatile & METATILE_ID_MASK);
}
void GenerateTrainerHillFloorLayout(u16 *mapArg)
@@ -727,7 +721,7 @@ void GenerateTrainerHillFloorLayout(u16 *mapArg)
for (i = 0; i < 16; i++)
{
for (j = 0; j < 16; j++)
- dst[j] = sub_81D5F58(mapId, j, i, 0x10);
+ dst[j] = GetMetatileForFloor(mapId, j, i, 0x10);
dst += 31;
}
diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c
index d2cb634f0..c23047b01 100644
--- a/src/trainer_pokemon_sprites.c
+++ b/src/trainer_pokemon_sprites.c
@@ -2,7 +2,6 @@
#include "sprite.h"
#include "window.h"
#include "malloc.h"
-#include "constants/species.h"
#include "palette.h"
#include "decompress.h"
#include "trainer_pokemon_sprites.h"
diff --git a/src/trainer_see.c b/src/trainer_see.c
index c37f37262..46fafa7e3 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -377,15 +377,15 @@ static u8 CheckPathBetweenTrainerAndPlayer(struct ObjectEvent *trainerObj, u8 ap
}
// preserve mapobj_unk_19 before clearing.
- unk19_temp = trainerObj->range.as_nybbles.x;
- unk19b_temp = trainerObj->range.as_nybbles.y;
- trainerObj->range.as_nybbles.x = 0;
- trainerObj->range.as_nybbles.y = 0;
+ unk19_temp = trainerObj->rangeX;
+ unk19b_temp = trainerObj->rangeY;
+ trainerObj->rangeX = 0;
+ trainerObj->rangeY = 0;
collision = GetCollisionAtCoords(trainerObj, x, y, direction);
- trainerObj->range.as_nybbles.x = unk19_temp;
- trainerObj->range.as_nybbles.y = unk19b_temp;
+ trainerObj->rangeX = unk19_temp;
+ trainerObj->rangeY = unk19b_temp;
if (collision == 4)
return approachDistance;
@@ -603,7 +603,7 @@ static void sub_80B44C8(u8 taskId)
struct ObjectEvent *objEvent;
// another objEvent loaded into by loadword?
- LoadWordFromTwoHalfwords((u16*)&task->data[1], (u32 *)&objEvent);
+ LoadWordFromTwoHalfwords(&task->data[1], (u32 *)&objEvent);
if (!task->data[7])
{
ObjectEventClearHeldMovement(objEvent);
@@ -624,7 +624,7 @@ static void sub_80B44C8(u8 taskId)
void sub_80B4578(struct ObjectEvent *var)
{
- StoreWordInTwoHalfwords((u16 *)&gTasks[CreateTask(sub_80B44C8, 0)].data[1], (u32)var);
+ StoreWordInTwoHalfwords(&gTasks[CreateTask(sub_80B44C8, 0)].data[1], (u32)var);
}
void EndTrainerApproach(void)
diff --git a/src/tv.c b/src/tv.c
index 3a0e78fd4..748915c7a 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -32,6 +32,7 @@
#include "decoration.h"
#include "secret_base.h"
#include "tv.h"
+#include "pokeball.h"
#include "data.h"
#include "constants/battle_frontier.h"
#include "constants/contest.h"
@@ -42,7 +43,6 @@
#include "constants/moves.h"
#include "constants/region_map_sections.h"
#include "constants/script_menu.h"
-#include "constants/species.h"
#include "constants/tv.h"
// Static type declarations
@@ -529,7 +529,7 @@ static const u8 *const sTVFindThatGamerTextGroup[] = {
gTVFindThatGamerText03
};
-static const u8 *const sTVBreakinsNewsTextGroup[] = {
+static const u8 *const sTVBreakingNewsTextGroup[] = {
gTVBreakingNewsText00,
gTVBreakingNewsText01,
gTVBreakingNewsText02,
@@ -964,7 +964,7 @@ void GabbyAndTyBeforeInterview(void)
}
if (!gBattleResults.usedMasterBall)
{
- for (i = 0; i < 11; i ++)
+ for (i = 0; i < POKEBALL_COUNT - 1; i ++)
{
if (gBattleResults.catchAttempts[i])
{
@@ -1136,7 +1136,7 @@ void PutPokemonTodayCaughtOnAir(void)
sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_POKEMON_TODAY_CAUGHT, FALSE) != TRUE)
{
- for (i = 0; i < 11; i ++)
+ for (i = 0; i < POKEBALL_COUNT - 1; i ++)
{
ct += gBattleResults.catchAttempts[i];
}
@@ -1153,7 +1153,7 @@ void PutPokemonTodayCaughtOnAir(void)
}
else
{
- for (i = 0; i < 11; i ++)
+ for (i = 0; i < POKEBALL_COUNT - 1; i ++)
{
ct += gBattleResults.catchAttempts[i];
}
@@ -1204,7 +1204,7 @@ void PutPokemonTodayFailedOnTheAir(void)
if (!rbernoulli(1, 1))
{
- for (i = 0, ct = 0; i < 11; i ++)
+ for (i = 0, ct = 0; i < POKEBALL_COUNT - 1; i ++)
{
ct += gBattleResults.catchAttempts[i];
}
@@ -2229,7 +2229,7 @@ void sub_80EE184(void)
show->breakingNews.kind = TVSHOW_BREAKING_NEWS;
show->breakingNews.active = FALSE;
balls = 0;
- for (i = 0; i < 11; i ++)
+ for (i = 0; i < POKEBALL_COUNT - 1; i ++)
{
balls += gBattleResults.catchAttempts[i];
}
@@ -6253,7 +6253,7 @@ static void DoTVShowBreakingNewsTV(void)
TVShowDone();
break;
}
- ShowFieldMessage(sTVBreakinsNewsTextGroup[state]);
+ ShowFieldMessage(sTVBreakingNewsTextGroup[state]);
}
static void DoTVShowSecretBaseVisit(void)
diff --git a/src/union_room.c b/src/union_room.c
index 1bac3678c..479792a7c 100644
--- a/src/union_room.c
+++ b/src/union_room.c
@@ -52,7 +52,6 @@
#include "constants/party_menu.h"
#include "constants/rgb.h"
#include "constants/songs.h"
-#include "constants/species.h"
// States for Task_RunUnionRoom
enum {
@@ -445,7 +444,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
break;
case LL_STATE_AWAIT_PLAYERS:
Leader_SetStateIfMemberListChanged(data, LL_STATE_ACCEPT_NEW_MEMBER_PROMPT, LL_STATE_MEMBER_LEFT);
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
if (data->playerCount == 1)
data->state = LL_STATE_SHUTDOWN_AND_FAIL;
@@ -458,7 +457,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
&& data->playerCount > GROUP_MIN(sPlayerActivityGroupSize) - 1
&& GROUP_MAX(sPlayerActivityGroupSize) != 0
&& sub_8012240()
- && gMain.newKeys & START_BUTTON)
+ && JOY_NEW(START_BUTTON))
{
data->state = LL_STATE_MEMBERS_OK_PROMPT;
LinkRfu_StopManagerAndFinalizeSlots();
@@ -479,7 +478,11 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
// BUG: sPlayerActivityGroupSize was meant below, not gPlayerCurrActivity
// This will be false for all but ACTIVITY_BATTLE_DOUBLE and ACTIVITY_DECLINE
// All this changes is which of two texts gets printed
+ #ifdef BUGFIX
+ id = (GROUP_MAX(sPlayerActivityGroupSize) == 2) ? 0 : 1;
+ #else
id = (GROUP_MAX(gPlayerCurrActivity) == 2) ? 1 : 0;
+ #endif
if (PrintOnTextbox(&data->textState, sPlayerUnavailableTexts[id]))
{
data->playerCount = sub_8013398(data->field_0);
@@ -1005,7 +1008,7 @@ static void Task_TryJoinLinkGroup(u8 taskId)
break;
case 0:
id = ListMenu_ProcessInput(data->listTaskId);
- if (gMain.newKeys & A_BUTTON && id != -1)
+ if (JOY_NEW(A_BUTTON) && id != -1)
{
// this unused variable along with the assignment is needed to match
u32 activity = data->field_0->arr[id].gname_uname.gname.activity;
@@ -1032,7 +1035,7 @@ static void Task_TryJoinLinkGroup(u8 taskId)
PlaySE(SE_WALL_HIT);
}
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
data->state = LG_STATE_CANCEL_CHOOSE_LEADER;
}
@@ -1135,7 +1138,7 @@ static void Task_TryJoinLinkGroup(u8 taskId)
break;
}
- if (RfuGetStatus() == RFU_STATUS_OK && gMain.newKeys & B_BUTTON)
+ if (RfuGetStatus() == RFU_STATUS_OK && JOY_NEW(B_BUTTON))
data->state = LG_STATE_ASK_LEAVE_GROUP;
break;
case LG_STATE_ASK_LEAVE_GROUP:
@@ -1321,7 +1324,11 @@ static bool32 IsPartnerActivityAcceptable(u32 activity, u32 linkGroup)
if (linkGroup == 0xFF)
return TRUE;
- if (linkGroup <= ARRAY_COUNT(sAcceptedActivityIds)) // UB: <= may access data outside the array
+ #ifdef UBFIX
+ if (linkGroup < ARRAY_COUNT(sAcceptedActivityIds))
+ #else
+ if (linkGroup <= ARRAY_COUNT(sAcceptedActivityIds))
+ #endif
{
const u8 *bytes = sAcceptedActivityIds[linkGroup];
@@ -1889,7 +1896,7 @@ static void Task_MEvent_Leader(u8 taskId)
break;
case 4:
Leader_SetStateIfMemberListChanged(data, 5, 6);
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
{
data->state = 13;
DestroyWirelessStatusIndicatorSprite();
@@ -2104,7 +2111,7 @@ static void Task_CardOrNewsWithFriend(u8 taskId)
break;
case 0:
id = ListMenu_ProcessInput(data->listTaskId);
- if (gMain.newKeys & A_BUTTON && id != -1)
+ if (JOY_NEW(A_BUTTON) && id != -1)
{
// this unused variable along with the assignment is needed to match
u32 unusedVar;
@@ -2126,7 +2133,7 @@ static void Task_CardOrNewsWithFriend(u8 taskId)
PlaySE(SE_WALL_HIT);
}
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
data->state = 6;
}
@@ -2289,7 +2296,7 @@ static void Task_CardOrNewsOverWireless(u8 taskId)
}
}
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
data->state = 6;
data->refreshTimer = 0;
@@ -2547,7 +2554,7 @@ static void Task_RunUnionRoom(u8 taskId)
}
else if (ScriptContext2_IsEnabled() != TRUE)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
if (TryInteractWithUnionRoomMember(uroom->field_0, &taskData[0], &taskData[1], uroom->spriteIds))
{
@@ -2881,7 +2888,7 @@ static void Task_RunUnionRoom(u8 taskId)
break;
case UR_STATE_HANDLE_CONTACT_DATA:
ReceiveUnionRoomActivityPacket(uroom);
- if (UnionRoom_HandleContactFromOtherPlayer(uroom) && gMain.newKeys & B_BUTTON)
+ if (UnionRoom_HandleContactFromOtherPlayer(uroom) && JOY_NEW(B_BUTTON))
{
sub_8011DE0(1);
StringCopy(gStringVar4, sText_ChatEnded);
@@ -4077,14 +4084,14 @@ static void TradeBoardPrintItemInfo(u8 windowId, u8 y, struct GFtgtGname * gname
UR_AddTextPrinterParameterized(windowId, 1, uname, 8, y, colorIdx);
if (species == SPECIES_EGG)
{
- UR_AddTextPrinterParameterized(windowId, 1, sText_EggTrade, 0x44, y, colorIdx);
+ UR_AddTextPrinterParameterized(windowId, 1, sText_EggTrade, 68, y, colorIdx);
}
else
{
- blit_move_info_icon(windowId, type + 1, 0x44, y);
- UR_AddTextPrinterParameterized(windowId, 1, gSpeciesNames[species], 0x76, y, colorIdx);
+ BlitMenuInfoIcon(windowId, type + 1, 68, y);
+ UR_AddTextPrinterParameterized(windowId, 1, gSpeciesNames[species], 118, y, colorIdx);
ConvertIntToDecimalStringN(levelStr, level, STR_CONV_MODE_RIGHT_ALIGN, 3);
- UR_AddTextPrinterParameterized(windowId, 1, levelStr, 0xC6, y, colorIdx);
+ UR_AddTextPrinterParameterized(windowId, 1, levelStr, 198, y, colorIdx);
}
}
diff --git a/src/union_room_chat.c b/src/union_room_chat.c
index fd2a95791..75464529f 100755
--- a/src/union_room_chat.c
+++ b/src/union_room_chat.c
@@ -1017,12 +1017,12 @@ static void Chat_HandleInput(void)
switch (sChat->funcState)
{
case 0:
- if (gMain.newKeys & START_BUTTON)
+ if (JOY_NEW(START_BUTTON))
{
if (sChat->bufferCursorPos)
SetChatFunction(CHAT_FUNC_SEND);
}
- else if (gMain.newKeys & SELECT_BUTTON)
+ else if (JOY_NEW(SELECT_BUTTON))
{
SetChatFunction(CHAT_FUNC_SWITCH);
}
@@ -1039,14 +1039,14 @@ static void Chat_HandleInput(void)
SetChatFunction(CHAT_FUNC_ASK_QUIT);
}
}
- else if (gMain.newKeys & A_BUTTON)
+ else if (JOY_NEW(A_BUTTON))
{
AppendTextToMessage();
StartDisplaySubtask(CHATDISPLAY_FUNC_UPDATE_MSG, 0);
StartDisplaySubtask(CHATDISPLAY_FUNC_CURSOR_BLINK, 1);
sChat->funcState = 1;
}
- else if (gMain.newKeys & R_BUTTON)
+ else if (JOY_NEW(R_BUTTON))
{
if (sChat->currentPage != UNION_ROOM_KB_PAGE_REGISTER)
{
@@ -1100,7 +1100,7 @@ static void Chat_Switch(void)
shouldSwitchPages = FALSE;
break;
case MENU_NOTHING_CHOSEN:
- if (gMain.newKeys & SELECT_BUTTON)
+ if (JOY_NEW(SELECT_BUTTON))
{
PlaySE(SE_SELECT);
Menu_MoveCursor(1);
@@ -1420,13 +1420,13 @@ static void Chat_Register(void)
}
break;
case 1:
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
RegisterTextAtRow();
StartDisplaySubtask(CHATDISPLAY_FUNC_RETURN_TO_KB, 0);
sChat->funcState = 3;
}
- else if (gMain.newKeys & B_BUTTON)
+ else if (JOY_NEW(B_BUTTON))
{
StartDisplaySubtask(CHATDISPLAY_FUNC_CANCEL_REGISTER, 0);
sChat->funcState = 4;
@@ -1457,7 +1457,7 @@ static void Chat_Register(void)
sChat->funcState = 6;
break;
case 6:
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
StartDisplaySubtask(CHATDISPLAY_FUNC_DESTROY_YESNO, 0);
sChat->funcState = 4;
@@ -1591,7 +1591,7 @@ static bool32 HandleDPadInput(void)
{
do
{
- if (gMain.newAndRepeatedKeys & DPAD_UP)
+ if (JOY_REPEAT(DPAD_UP))
{
if (sChat->currentRow > 0)
sChat->currentRow--;
@@ -1599,7 +1599,7 @@ static bool32 HandleDPadInput(void)
sChat->currentRow = sKeyboardPageMaxRow[sChat->currentPage];
break;
}
- if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ if (JOY_REPEAT(DPAD_DOWN))
{
if (sChat->currentRow < sKeyboardPageMaxRow[sChat->currentPage])
sChat->currentRow++;
@@ -1609,7 +1609,7 @@ static bool32 HandleDPadInput(void)
}
if (sChat->currentPage != UNION_ROOM_KB_PAGE_REGISTER)
{
- if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ if (JOY_REPEAT(DPAD_LEFT))
{
if (sChat->currentCol > 0)
sChat->currentCol--;
@@ -1617,7 +1617,7 @@ static bool32 HandleDPadInput(void)
sChat->currentCol = 4;
break;
}
- else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ else if (JOY_REPEAT(DPAD_RIGHT))
{
if (sChat->currentCol < 4)
sChat->currentCol++;
diff --git a/src/unk_text_util_2.c b/src/unk_text_util_2.c
index 2ff8c6507..b92b34fbd 100644
--- a/src/unk_text_util_2.c
+++ b/src/unk_text_util_2.c
@@ -19,14 +19,14 @@ u16 Font6Func(struct TextPrinter *textPrinter)
switch (textPrinter->state)
{
case 0:
- if (gMain.heldKeys & (A_BUTTON | B_BUTTON) && subStruct->hasPrintBeenSpedUp)
+ if (JOY_HELD(A_BUTTON | B_BUTTON) && subStruct->hasPrintBeenSpedUp)
{
textPrinter->delayCounter = 0;
}
if (textPrinter->delayCounter && textPrinter->textSpeed)
{
textPrinter->delayCounter --;
- if (gTextFlags.canABSpeedUpPrint && gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (gTextFlags.canABSpeedUpPrint && JOY_NEW(A_BUTTON | B_BUTTON))
{
subStruct->hasPrintBeenSpedUp = TRUE;
textPrinter->delayCounter = 0;
@@ -135,7 +135,7 @@ u16 Font6Func(struct TextPrinter *textPrinter)
}
DecompressGlyphFont6(char_);
CopyGlyphToWindow(textPrinter);
- textPrinter->printerTemplate.currentX += gUnknown_03002F90.unk80 + textPrinter->printerTemplate.letterSpacing;
+ textPrinter->printerTemplate.currentX += gUnknown_03002F90.width + textPrinter->printerTemplate.letterSpacing;
return 0;
case 1:
if (TextPrinterWait(textPrinter))
@@ -210,8 +210,8 @@ static void DecompressGlyphFont6(u16 glyph)
DecompressGlyphTile(glyphs + 0x8, (u16 *)(gUnknown_03002F90.unk20));
DecompressGlyphTile(glyphs + 0x80, (u16 *)(gUnknown_03002F90.unk40));
DecompressGlyphTile(glyphs + 0x88, (u16 *)(gUnknown_03002F90.unk60));
- gUnknown_03002F90.unk80 = 0x10;
- gUnknown_03002F90.unk81 = 0x10;
+ gUnknown_03002F90.width = 0x10;
+ gUnknown_03002F90.height = 0x10;
}
u32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese)
diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c
index ebb237d54..b4ccbfe06 100644
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "main.h"
+#include "dma3.h"
#include "pokeblock.h"
#include "malloc.h"
#include "decompress.h"
@@ -486,7 +487,7 @@ static void LoadUsePokeblockMenu(void)
{
case 0:
sMenu->curMonSpriteId = 0xFF;
- sub_81D1ED4(&sMenu->graph);
+ InitConditionGraphData(&sMenu->graph);
sInfo->mainState++;
break;
case 1:
@@ -536,12 +537,12 @@ static void LoadUsePokeblockMenu(void)
sInfo->mainState++;
break;
case 11:
- sub_81D2754(sMenu->graph.unk0[0], sMenu->graph.unk14[0]);
- sub_81D20AC(&sMenu->graph);
+ sub_81D2754(sMenu->graph.stat[0], sMenu->graph.unk14[0]);
+ InitConditionGraphState(&sMenu->graph);
sInfo->mainState++;
break;
case 12:
- if (!sub_81D20BC(&sMenu->graph))
+ if (!SetupConditionGraphScanlineParams(&sMenu->graph))
{
sub_81D1F84(&sMenu->graph, sMenu->graph.unk14[0], sMenu->graph.unk14[0]);
sInfo->mainState++;
@@ -1240,8 +1241,7 @@ static void UpdateMonPic(u8 loadId)
}
else
{
- do {} while(0); // Only needed to match, feel free to remove.
- DmaCopy16Defvars(3, sMenu->partySheets[loadId], sMenu->curMonTileStart, 0x800);
+ Dma3CopyLarge16_(sMenu->partySheets[loadId], sMenu->curMonTileStart, 0x800);
LoadPalette(sMenu->partyPalettes[loadId], sMenu->curMonPalette, 32);
}
}
@@ -1368,7 +1368,7 @@ static bool8 LoadUsePokeblockMenuGfx(void)
LoadBgTilemap(2, sMenu->tilemapBuffer, 1280, 0);
LoadPalette(gConditionGraphData_Pal, 48, 32);
LoadPalette(gConditionText_Pal, 240, 32);
- sub_81D21DC(2);
+ SetConditionGraphIOWindows(2);
break;
default:
sMenu->info.helperState = 0;
diff --git a/src/walda_phrase.c b/src/walda_phrase.c
index 4b617e3b8..18fb2791b 100644
--- a/src/walda_phrase.c
+++ b/src/walda_phrase.c
@@ -173,14 +173,12 @@ static void sub_81D9C90(u8 *array, s32 arg1, s32 arg2)
{
var1 = (array[0] & 0x80) >> 7;
- var1++; var1--; // needed to match
-
for (j = arg1 - 1; j >= 0; j--)
{
- var2 = array[j] & 0x80;
+ var2 = (array[j] & 0x80) >> 7;
array[j] <<= 1;
array[j] |= var1;
- var1 = var2 >> 7;
+ var1 = var2;
}
}
}
diff --git a/src/wallclock.c b/src/wallclock.c
index aa2bd8019..c38dd99e3 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -21,38 +21,37 @@
#include "constants/rgb.h"
#include "constants/songs.h"
-// static declarations
-
-static void WallClockMainCallback(void);
-static void Task_SetClock1(u8 taskId);
-static void Task_SetClock2(u8 taskId);
-static void Task_SetClock3(u8 taskId);
-static void Task_SetClock4(u8 taskId);
-static void Task_SetClock5(u8 taskId);
-static void Task_SetClock6(u8 taskId);
-static void Task_ViewClock1(u8 taskId);
-static void Task_ViewClock2(u8 taskId);
-static void Task_ViewClock3(u8 taskId);
-static void Task_ViewClock4(u8 taskId);
+static void CB2_WallClock(void);
+static void Task_SetClock_WaitFadeIn(u8 taskId);
+static void Task_SetClock_HandleInput(u8 taskId);
+static void Task_SetClock_AskConfirm(u8 taskId);
+static void Task_SetClock_HandleConfirmInput(u8 taskId);
+static void Task_SetClock_Confirmed(u8 taskId);
+static void Task_SetClock_Exit(u8 taskId);
+static void Task_ViewClock_WaitFadeIn(u8 taskId);
+static void Task_ViewClock_HandleInput(u8 taskId);
+static void Task_ViewClock_FadeOut(u8 taskId);
+static void Task_ViewClock_Exit(u8 taskId);
static u16 CalcNewMinHandAngle(u16 angle, u8 direction, u8 speed);
static bool32 AdvanceClock(u8 taskId, u8 direction);
static void UpdateClockPeriod(u8 taskId, u8 direction);
static void InitClockWithRtc(u8 taskId);
static void SpriteCB_MinuteHand(struct Sprite *sprite);
static void SpriteCB_HourHand(struct Sprite *sprite);
-static void SpriteCB_AMIndicator(struct Sprite *sprite);
static void SpriteCB_PMIndicator(struct Sprite *sprite);
+static void SpriteCB_AMIndicator(struct Sprite *sprite);
#define tMinuteHandAngle data[0]
#define tHourHandAngle data[1]
#define tHours data[2]
#define tMinutes data[3]
-#define tMvmtDir data[4]
+#define tMoveDir data[4]
#define tPeriod data[5]
-#define tMvmtSpeed data[6]
+#define tMoveSpeed data[6]
-#define TAG_GFX_WALL_CLOCK_HAND 0x1000
-#define TAG_PAL_WALL_CLOCK_HAND 0x1000
+#define GFXTAG_WALL_CLOCK_HAND 0x1000
+#define PALTAG_WALL_CLOCK_MALE 0x1000
+#define PALTAG_WALL_CLOCK_FEMALE 0x1001
enum
{
@@ -62,17 +61,15 @@ enum
enum
{
- MVMT_NONE,
- MVMT_BACKWARD,
- MVMT_FORWARD,
+ MOVE_NONE,
+ MOVE_BACKWARD,
+ MOVE_FORWARD,
};
-// rodata
+static const u32 sHand_Gfx[] = INCBIN_U32("graphics/wallclock/hand.4bpp.lz");
+static const u16 sTextPrompt_Pal[] = INCBIN_U16("graphics/wallclock/text_prompt.gbapal"); // for "Cancel" or "Confirm"
-static const u32 sUnknown_085B1F58[] = INCBIN_U32("graphics/wallclock/graphics_85b1f58.4bpp.lz");
-static const u16 sUnknown_085B21D4[] = INCBIN_U16("graphics/wallclock/palette_85b21d4.gbapal");
-
-static const struct WindowTemplate gUnknown_085B21DC[] =
+static const struct WindowTemplate sWindowTemplates[] =
{
{
.bg = 0,
@@ -95,7 +92,7 @@ static const struct WindowTemplate gUnknown_085B21DC[] =
DUMMY_WIN_TEMPLATE
};
-static const struct WindowTemplate gUnknown_085B21F4 =
+static const struct WindowTemplate sWindowTemplate_ConfirmYesNo =
{
.bg = 0,
.tilemapLeft = 24,
@@ -106,7 +103,7 @@ static const struct WindowTemplate gUnknown_085B21F4 =
.baseBlock = 572
};
-static const struct BgTemplate gUnknown_085B21FC[] =
+static const struct BgTemplate sBgTemplates[] =
{
{
.bg = 0,
@@ -128,27 +125,27 @@ static const struct BgTemplate gUnknown_085B21FC[] =
}
};
-static const struct CompressedSpriteSheet gUnknown_085B2208 =
+static const struct CompressedSpriteSheet sSpriteSheet_ClockHand =
{
- sUnknown_085B1F58, 0x2000, TAG_GFX_WALL_CLOCK_HAND
+ sHand_Gfx, 0x2000, GFXTAG_WALL_CLOCK_HAND
};
-static const u8 filler_85B2210[8] = {0};
+static const u8 sUnused[8] = {0};
-static const struct SpritePalette gUnknown_085B2218[] =
+static const struct SpritePalette sSpritePalettes_Clock[] =
{
{
- .data = gWallclockMale_Pal,
- .tag = TAG_PAL_WALL_CLOCK_HAND
+ .data = gWallClockMale_Pal,
+ .tag = PALTAG_WALL_CLOCK_MALE
},
{
- .data = gWallclockFemale_Pal,
- .tag = 0x1001
+ .data = gWallClockFemale_Pal,
+ .tag = PALTAG_WALL_CLOCK_FEMALE
},
{}
};
-static const struct OamData Unknown_085B2230 =
+static const struct OamData sOam_ClockHand =
{
.y = 160,
.shape = SPRITE_SHAPE(64x64),
@@ -156,51 +153,51 @@ static const struct OamData Unknown_085B2230 =
.priority = 1,
};
-static const union AnimCmd Unknown_085B2238[] =
+static const union AnimCmd sAnim_MinuteHand[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_END,
};
-static const union AnimCmd Unknown_085B2240[] =
+static const union AnimCmd sAnim_HourHand[] =
{
ANIMCMD_FRAME(64, 30),
ANIMCMD_END,
};
-static const union AnimCmd *const gUnknown_085B2248[] =
+static const union AnimCmd *const sAnims_MinuteHand[] =
{
- Unknown_085B2238
+ sAnim_MinuteHand
};
-static const union AnimCmd *const gUnknown_085B224C[] =
+static const union AnimCmd *const sAnims_HourHand[] =
{
- Unknown_085B2240
+ sAnim_HourHand
};
-static const struct SpriteTemplate gUnknown_085B2250 =
+static const struct SpriteTemplate sSpriteTemplate_MinuteHand =
{
- .tileTag = TAG_GFX_WALL_CLOCK_HAND,
- .paletteTag = TAG_PAL_WALL_CLOCK_HAND,
- .oam = &Unknown_085B2230,
- .anims = gUnknown_085B2248,
+ .tileTag = GFXTAG_WALL_CLOCK_HAND,
+ .paletteTag = PALTAG_WALL_CLOCK_MALE,
+ .oam = &sOam_ClockHand,
+ .anims = sAnims_MinuteHand,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_MinuteHand,
};
-static const struct SpriteTemplate gUnknown_085B2268 =
+static const struct SpriteTemplate sSpriteTemplate_HourHand =
{
- .tileTag = TAG_GFX_WALL_CLOCK_HAND,
- .paletteTag = TAG_PAL_WALL_CLOCK_HAND,
- .oam = &Unknown_085B2230,
- .anims = gUnknown_085B224C,
+ .tileTag = GFXTAG_WALL_CLOCK_HAND,
+ .paletteTag = PALTAG_WALL_CLOCK_MALE,
+ .oam = &sOam_ClockHand,
+ .anims = sAnims_HourHand,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_HourHand,
};
-static const struct OamData Unknown_085B2280 =
+static const struct OamData sOam_PeriodIndicator =
{
.y = 160,
.shape = SPRITE_SHAPE(16x16),
@@ -208,48 +205,48 @@ static const struct OamData Unknown_085B2280 =
.priority = 3,
};
-static const union AnimCmd Unknown_085B2288[] =
+static const union AnimCmd sAnim_PM[] =
{
ANIMCMD_FRAME(132, 30),
ANIMCMD_END,
};
-static const union AnimCmd Unknown_085B2290[] =
+static const union AnimCmd sAnim_AM[] =
{
ANIMCMD_FRAME(128, 30),
ANIMCMD_END,
};
-static const union AnimCmd *const gUnknown_085B2298[] =
+static const union AnimCmd *const sAnims_PM[] =
{
- Unknown_085B2288
+ sAnim_PM
};
-static const union AnimCmd *const gUnknown_085B229C[] =
+static const union AnimCmd *const sAnims_AM[] =
{
- Unknown_085B2290
+ sAnim_AM
};
-static const struct SpriteTemplate gUnknown_085B22A0 =
+static const struct SpriteTemplate sSpriteTemplate_PM =
{
- .tileTag = TAG_GFX_WALL_CLOCK_HAND,
- .paletteTag = TAG_PAL_WALL_CLOCK_HAND,
- .oam = &Unknown_085B2280,
- .anims = gUnknown_085B2298,
+ .tileTag = GFXTAG_WALL_CLOCK_HAND,
+ .paletteTag = PALTAG_WALL_CLOCK_MALE,
+ .oam = &sOam_PeriodIndicator,
+ .anims = sAnims_PM,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCB_AMIndicator
+ .callback = SpriteCB_PMIndicator
};
-static const struct SpriteTemplate gUnknown_085B22B8 =
+static const struct SpriteTemplate sSpriteTemplate_AM =
{
- .tileTag = TAG_GFX_WALL_CLOCK_HAND,
- .paletteTag = TAG_PAL_WALL_CLOCK_HAND,
- .oam = &Unknown_085B2280,
- .anims = gUnknown_085B229C,
+ .tileTag = GFXTAG_WALL_CLOCK_HAND,
+ .paletteTag = PALTAG_WALL_CLOCK_MALE,
+ .oam = &sOam_PeriodIndicator,
+ .anims = sAnims_AM,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCB_PMIndicator
+ .callback = SpriteCB_AMIndicator
};
static const s8 sClockHandCoords[][2] =
@@ -616,9 +613,7 @@ static const s8 sClockHandCoords[][2] =
{ 0x00, -0x19}
};
-// text
-
-static void WallClockVblankCallback(void)
+static void VBlankCB_WallClock(void)
{
LoadOam();
ProcessSpriteCopyRequests();
@@ -644,20 +639,18 @@ static void LoadWallClockGraphics(void)
DmaFillLarge16(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000);
DmaClear32(3, (void *)OAM, OAM_SIZE);
DmaClear16(3, (void *)PLTT, PLTT_SIZE);
- LZ77UnCompVram(gWallclock_Gfx, (void *)VRAM);
- if (gSpecialVar_0x8004 == 0)
- {
- LoadPalette(gWallclockMale_Pal, 0x00, 0x20);
- }
+ LZ77UnCompVram(gWallClock_Gfx, (void *)VRAM);
+
+ if (gSpecialVar_0x8004 == MALE)
+ LoadPalette(gWallClockMale_Pal, 0, 32);
else
- {
- LoadPalette(gWallclockFemale_Pal, 0x00, 0x20);
- }
- LoadPalette(GetOverworldTextboxPalettePtr(), 0xe0, 0x20);
- LoadPalette(sUnknown_085B21D4, 0xc0, 0x08);
+ LoadPalette(gWallClockFemale_Pal, 0, 32);
+
+ LoadPalette(GetOverworldTextboxPalettePtr(), 0xe0, 32);
+ LoadPalette(sTextPrompt_Pal, 0xc0, 8);
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_085B21FC, 3);
- InitWindows(gUnknown_085B21DC);
+ InitBgsFromTemplates(0, sBgTemplates, ARRAY_COUNT(sBgTemplates));
+ InitWindows(sWindowTemplates);
DeactivateAllTextPrinters();
LoadUserWindowBorderGfx(0, 0x250, 0xd0);
ClearScheduledBgCopiesToVram();
@@ -666,16 +659,16 @@ static void LoadWallClockGraphics(void)
ResetSpriteData();
ResetPaletteFade();
FreeAllSpritePalettes();
- LoadCompressedSpriteSheet(&gUnknown_085B2208);
- LoadSpritePalettes(gUnknown_085B2218);
+ LoadCompressedSpriteSheet(&sSpriteSheet_ClockHand);
+ LoadSpritePalettes(sSpritePalettes_Clock);
}
static void WallClockInit(void)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
EnableInterrupts(INTR_FLAG_VBLANK);
- SetVBlankCallback(WallClockVblankCallback);
- SetMainCallback2(WallClockMainCallback);
+ SetVBlankCallback(VBlankCB_WallClock);
+ SetMainCallback2(CB2_WallClock);
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
SetGpuReg(REG_OFFSET_BLDY, 0);
@@ -691,32 +684,32 @@ void CB2_StartWallClock(void)
u8 spriteId;
LoadWallClockGraphics();
- LZ77UnCompVram(gUnknown_08DCC648, (u16 *)BG_SCREEN_ADDR(7));
+ LZ77UnCompVram(gWallClockStart_Tilemap, (u16 *)BG_SCREEN_ADDR(7));
- taskId = CreateTask(Task_SetClock1, 0);
+ taskId = CreateTask(Task_SetClock_WaitFadeIn, 0);
gTasks[taskId].tHours = 10;
gTasks[taskId].tMinutes = 0;
- gTasks[taskId].tMvmtDir = 0;
+ gTasks[taskId].tMoveDir = 0;
gTasks[taskId].tPeriod = 0;
- gTasks[taskId].tMvmtSpeed = 0;
+ gTasks[taskId].tMoveSpeed = 0;
gTasks[taskId].tMinuteHandAngle = 0;
gTasks[taskId].tHourHandAngle = 300;
- spriteId = CreateSprite(&gUnknown_085B2250, 120, 80, 1);
+ spriteId = CreateSprite(&sSpriteTemplate_MinuteHand, 120, 80, 1);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 0;
- spriteId = CreateSprite(&gUnknown_085B2268, 120, 80, 0);
+ spriteId = CreateSprite(&sSpriteTemplate_HourHand, 120, 80, 0);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 1;
- spriteId = CreateSprite(&gUnknown_085B22A0, 120, 80, 2);
+ spriteId = CreateSprite(&sSpriteTemplate_PM, 120, 80, 2);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].data[1] = 45;
- spriteId = CreateSprite(&gUnknown_085B22B8, 120, 80, 2);
+ spriteId = CreateSprite(&sSpriteTemplate_AM, 120, 80, 2);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].data[1] = 90;
@@ -735,11 +728,11 @@ void CB2_ViewWallClock(void)
u8 angle2;
LoadWallClockGraphics();
- LZ77UnCompVram(gUnknown_08DCC908, (u16 *)BG_SCREEN_ADDR(7));
+ LZ77UnCompVram(gWallClockView_Tilemap, (u16 *)BG_SCREEN_ADDR(7));
- taskId = CreateTask(Task_ViewClock1, 0);
+ taskId = CreateTask(Task_ViewClock_WaitFadeIn, 0);
InitClockWithRtc(taskId);
- if (gTasks[taskId].tPeriod == 0)
+ if (gTasks[taskId].tPeriod == PERIOD_AM)
{
angle1 = 45;
angle2 = 90;
@@ -750,21 +743,21 @@ void CB2_ViewWallClock(void)
angle2 = 135;
}
- spriteId = CreateSprite(&gUnknown_085B2250, 120, 80, 1);
+ spriteId = CreateSprite(&sSpriteTemplate_MinuteHand, 120, 80, 1);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 0;
- spriteId = CreateSprite(&gUnknown_085B2268, 120, 80, 0);
+ spriteId = CreateSprite(&sSpriteTemplate_HourHand, 120, 80, 0);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 1;
- spriteId = CreateSprite(&gUnknown_085B22A0, 120, 80, 2);
+ spriteId = CreateSprite(&sSpriteTemplate_PM, 120, 80, 2);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].data[1] = angle1;
- spriteId = CreateSprite(&gUnknown_085B22B8, 120, 80, 2);
+ spriteId = CreateSprite(&sSpriteTemplate_AM, 120, 80, 2);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].data[1] = angle2;
@@ -775,7 +768,7 @@ void CB2_ViewWallClock(void)
ScheduleBgCopyTilemapToVram(2);
}
-static void WallClockMainCallback(void)
+static void CB2_WallClock(void)
{
RunTasks();
AnimateSprites();
@@ -784,92 +777,90 @@ static void WallClockMainCallback(void)
UpdatePaletteFade();
}
-static void Task_SetClock1(u8 taskId)
+static void Task_SetClock_WaitFadeIn(u8 taskId)
{
if (!gPaletteFade.active)
{
- gTasks[taskId].func = Task_SetClock2;
+ gTasks[taskId].func = Task_SetClock_HandleInput;
}
}
-static void Task_SetClock2(u8 taskId)
+static void Task_SetClock_HandleInput(u8 taskId)
{
if (gTasks[taskId].tMinuteHandAngle % 6)
{
- gTasks[taskId].tMinuteHandAngle = CalcNewMinHandAngle(gTasks[taskId].tMinuteHandAngle, gTasks[taskId].tMvmtDir, gTasks[taskId].tMvmtSpeed);
+ gTasks[taskId].tMinuteHandAngle = CalcNewMinHandAngle(gTasks[taskId].tMinuteHandAngle, gTasks[taskId].tMoveDir, gTasks[taskId].tMoveSpeed);
}
else
{
gTasks[taskId].tMinuteHandAngle = gTasks[taskId].tMinutes * 6;
gTasks[taskId].tHourHandAngle = (gTasks[taskId].tHours % 12) * 30 + (gTasks[taskId].tMinutes / 10) * 5;
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
- gTasks[taskId].func = Task_SetClock3;
+ gTasks[taskId].func = Task_SetClock_AskConfirm;
}
else
{
- gTasks[taskId].tMvmtDir = 0;
- if (gMain.heldKeys & DPAD_LEFT)
- {
- gTasks[taskId].tMvmtDir = MVMT_BACKWARD;
- }
- if (gMain.heldKeys & DPAD_RIGHT)
- {
- gTasks[taskId].tMvmtDir = MVMT_FORWARD;
- }
- if (gTasks[taskId].tMvmtDir != 0)
+ gTasks[taskId].tMoveDir = MOVE_NONE;
+
+ if (JOY_HELD(DPAD_LEFT))
+ gTasks[taskId].tMoveDir = MOVE_BACKWARD;
+
+ if (JOY_HELD(DPAD_RIGHT))
+ gTasks[taskId].tMoveDir = MOVE_FORWARD;
+
+ if (gTasks[taskId].tMoveDir != MOVE_NONE)
{
- if (gTasks[taskId].tMvmtSpeed < 0xFF)
- {
- gTasks[taskId].tMvmtSpeed++;
- }
- gTasks[taskId].tMinuteHandAngle = CalcNewMinHandAngle(gTasks[taskId].tMinuteHandAngle, gTasks[taskId].tMvmtDir, gTasks[taskId].tMvmtSpeed);
- AdvanceClock(taskId, gTasks[taskId].tMvmtDir);
+ if (gTasks[taskId].tMoveSpeed < 0xFF)
+ gTasks[taskId].tMoveSpeed++;
+
+ gTasks[taskId].tMinuteHandAngle = CalcNewMinHandAngle(gTasks[taskId].tMinuteHandAngle, gTasks[taskId].tMoveDir, gTasks[taskId].tMoveSpeed);
+ AdvanceClock(taskId, gTasks[taskId].tMoveDir);
}
else
{
- gTasks[taskId].tMvmtSpeed = 0;
+ gTasks[taskId].tMoveSpeed = 0;
}
}
}
}
-static void Task_SetClock3(u8 taskId)
+static void Task_SetClock_AskConfirm(u8 taskId)
{
DrawStdFrameWithCustomTileAndPalette(0, FALSE, 0x250, 0x0d);
AddTextPrinterParameterized(0, 1, gText_IsThisTheCorrectTime, 0, 1, 0, NULL);
PutWindowTilemap(0);
ScheduleBgCopyTilemapToVram(0);
- CreateYesNoMenu(&gUnknown_085B21F4, 0x250, 0x0d, 1);
- gTasks[taskId].func = Task_SetClock4;
+ CreateYesNoMenu(&sWindowTemplate_ConfirmYesNo, 0x250, 0x0d, 1);
+ gTasks[taskId].func = Task_SetClock_HandleConfirmInput;
}
-static void Task_SetClock4(u8 taskId)
+static void Task_SetClock_HandleConfirmInput(u8 taskId)
{
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- case 0: //YES
- PlaySE(SE_SELECT);
- gTasks[taskId].func = Task_SetClock5;
- break;
- case 1: //B button
- case -1: //NO
- PlaySE(SE_SELECT);
- ClearStdWindowAndFrameToTransparent(0, FALSE);
- ClearWindowTilemap(0);
- gTasks[taskId].func = Task_SetClock2;
- break;
+ case 0: // YES
+ PlaySE(SE_SELECT);
+ gTasks[taskId].func = Task_SetClock_Confirmed;
+ break;
+ case 1: // NO
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ ClearStdWindowAndFrameToTransparent(0, FALSE);
+ ClearWindowTilemap(0);
+ gTasks[taskId].func = Task_SetClock_HandleInput;
+ break;
}
}
-static void Task_SetClock5(u8 taskId)
+static void Task_SetClock_Confirmed(u8 taskId)
{
RtcInitLocalTimeOffset(gTasks[taskId].tHours, gTasks[taskId].tMinutes);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
- gTasks[taskId].func = Task_SetClock6;
+ gTasks[taskId].func = Task_SetClock_Exit;
}
-static void Task_SetClock6(u8 taskId)
+static void Task_SetClock_Exit(u8 taskId)
{
if (!gPaletteFade.active)
{
@@ -878,51 +869,40 @@ static void Task_SetClock6(u8 taskId)
}
}
-static void Task_ViewClock1(u8 taskId)
+static void Task_ViewClock_WaitFadeIn(u8 taskId)
{
if (!gPaletteFade.active)
- {
- gTasks[taskId].func = Task_ViewClock2;
- }
+ gTasks[taskId].func = Task_ViewClock_HandleInput;
}
-static void Task_ViewClock2(u8 taskId)
+static void Task_ViewClock_HandleInput(u8 taskId)
{
InitClockWithRtc(taskId);
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
- {
- gTasks[taskId].func = Task_ViewClock3;
- }
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
+ gTasks[taskId].func = Task_ViewClock_FadeOut;
}
-static void Task_ViewClock3(u8 taskId)
+static void Task_ViewClock_FadeOut(u8 taskId)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
- gTasks[taskId].func = Task_ViewClock4;
+ gTasks[taskId].func = Task_ViewClock_Exit;
}
-static void Task_ViewClock4(u8 taskId)
+static void Task_ViewClock_Exit(u8 taskId)
{
if (!gPaletteFade.active)
- {
SetMainCallback2(gMain.savedCallback);
- }
}
static u8 CalcMinHandDelta(u16 speed)
{
if (speed > 60)
- {
return 6;
- }
if (speed > 30)
- {
return 3;
- }
if (speed > 10)
- {
return 2;
- }
+
return 1;
}
@@ -931,18 +911,18 @@ static u16 CalcNewMinHandAngle(u16 angle, u8 direction, u8 speed)
u8 delta = CalcMinHandDelta(speed);
switch (direction)
{
- case MVMT_BACKWARD:
- if (angle)
- angle -= delta;
- else
- angle = 360 - delta;
- break;
- case MVMT_FORWARD:
- if (angle < 360 - delta)
- angle += delta;
- else
- angle = 0;
- break;
+ case MOVE_BACKWARD:
+ if (angle)
+ angle -= delta;
+ else
+ angle = 360 - delta;
+ break;
+ case MOVE_FORWARD:
+ if (angle < 360 - delta)
+ angle += delta;
+ else
+ angle = 0;
+ break;
}
return angle;
}
@@ -951,44 +931,40 @@ static bool32 AdvanceClock(u8 taskId, u8 direction)
{
switch (direction)
{
- case MVMT_BACKWARD:
- if (gTasks[taskId].tMinutes > 0)
- {
- gTasks[taskId].tMinutes--;
- }
+ case MOVE_BACKWARD:
+ if (gTasks[taskId].tMinutes > 0)
+ {
+ gTasks[taskId].tMinutes--;
+ }
+ else
+ {
+ gTasks[taskId].tMinutes = 59;
+
+ if (gTasks[taskId].tHours > 0)
+ gTasks[taskId].tHours--;
else
- {
- gTasks[taskId].tMinutes = 59;
- if (gTasks[taskId].tHours > 0)
- {
- gTasks[taskId].tHours--;
- }
- else
- {
- gTasks[taskId].tHours = 23;
- }
- UpdateClockPeriod(taskId, direction);
- }
- break;
- case MVMT_FORWARD:
- if (gTasks[taskId].tMinutes < 59)
- {
- gTasks[taskId].tMinutes++;
- }
+ gTasks[taskId].tHours = 23;
+
+ UpdateClockPeriod(taskId, direction);
+ }
+ break;
+ case MOVE_FORWARD:
+ if (gTasks[taskId].tMinutes < 59)
+ {
+ gTasks[taskId].tMinutes++;
+ }
+ else
+ {
+ gTasks[taskId].tMinutes = 0;
+
+ if (gTasks[taskId].tHours < 23)
+ gTasks[taskId].tHours++;
else
- {
- gTasks[taskId].tMinutes = 0;
- if (gTasks[taskId].tHours < 23)
- {
- gTasks[taskId].tHours++;
- }
- else
- {
- gTasks[taskId].tHours = 0;
- }
- UpdateClockPeriod(taskId, direction);
- }
- break;
+ gTasks[taskId].tHours = 0;
+
+ UpdateClockPeriod(taskId, direction);
+ }
+ break;
}
return FALSE;
}
@@ -998,28 +974,28 @@ static void UpdateClockPeriod(u8 taskId, u8 direction)
u8 hours = gTasks[taskId].tHours;
switch (direction)
{
- case MVMT_BACKWARD:
- switch (hours)
- {
- case 11:
- gTasks[taskId].tPeriod = PERIOD_AM;
- break;
- case 23:
- gTasks[taskId].tPeriod = PERIOD_PM;
- break;
- }
+ case MOVE_BACKWARD:
+ switch (hours)
+ {
+ case 11:
+ gTasks[taskId].tPeriod = PERIOD_AM;
break;
- case MVMT_FORWARD:
- switch (hours)
- {
- case 0:
- gTasks[taskId].tPeriod = PERIOD_AM;
- break;
- case 12:
- gTasks[taskId].tPeriod = PERIOD_PM;
- break;
- }
+ case 23:
+ gTasks[taskId].tPeriod = PERIOD_PM;
+ break;
+ }
+ break;
+ case MOVE_FORWARD:
+ switch (hours)
+ {
+ case 0:
+ gTasks[taskId].tPeriod = PERIOD_AM;
+ break;
+ case 12:
+ gTasks[taskId].tPeriod = PERIOD_PM;
break;
+ }
+ break;
}
}
@@ -1030,14 +1006,11 @@ static void InitClockWithRtc(u8 taskId)
gTasks[taskId].tMinutes = gLocalTime.minutes;
gTasks[taskId].tMinuteHandAngle = gTasks[taskId].tMinutes * 6;
gTasks[taskId].tHourHandAngle = (gTasks[taskId].tHours % 12) * 30 + (gTasks[taskId].tMinutes / 10) * 5;
+
if (gLocalTime.hours < 12)
- {
gTasks[taskId].tPeriod = PERIOD_AM;
- }
else
- {
gTasks[taskId].tPeriod = PERIOD_PM;
- }
}
static void SpriteCB_MinuteHand(struct Sprite *sprite)
@@ -1045,22 +1018,19 @@ static void SpriteCB_MinuteHand(struct Sprite *sprite)
u16 angle = gTasks[sprite->data[0]].tMinuteHandAngle;
s16 sin = Sin2(angle) / 16;
s16 cos = Cos2(angle) / 16;
- u16 xhat, yhat;
+ u16 x, y;
SetOamMatrix(0, cos, sin, -sin, cos);
- xhat = sClockHandCoords[angle][0];
- yhat = sClockHandCoords[angle][1];
+ x = sClockHandCoords[angle][0];
+ y = sClockHandCoords[angle][1];
- if (xhat > 0x80)
- {
- xhat |= 0xff00;
- }
- if (yhat > 0x80)
- {
- yhat |= 0xff00;
- }
- sprite->pos2.x = xhat;
- sprite->pos2.y = yhat;
+ if (x > 128)
+ x |= 0xff00;
+ if (y > 128)
+ y |= 0xff00;
+
+ sprite->pos2.x = x;
+ sprite->pos2.y = y;
}
static void SpriteCB_HourHand(struct Sprite *sprite)
@@ -1068,26 +1038,24 @@ static void SpriteCB_HourHand(struct Sprite *sprite)
u16 angle = gTasks[sprite->data[0]].tHourHandAngle;
s16 sin = Sin2(angle) / 16;
s16 cos = Cos2(angle) / 16;
- u16 xhat, yhat;
+ u16 x, y;
SetOamMatrix(1, cos, sin, -sin, cos);
- xhat = sClockHandCoords[angle][0];
- yhat = sClockHandCoords[angle][1];
- if (xhat > 0x80)
- {
- xhat |= 0xff00;
- }
- if (yhat > 0x80)
- {
- yhat |= 0xff00;
- }
- sprite->pos2.x = xhat;
- sprite->pos2.y = yhat;
+ x = sClockHandCoords[angle][0];
+ y = sClockHandCoords[angle][1];
+
+ if (x > 128)
+ x |= 0xff00;
+ if (y > 128)
+ y |= 0xff00;
+
+ sprite->pos2.x = x;
+ sprite->pos2.y = y;
}
-static void SpriteCB_AMIndicator(struct Sprite *sprite)
+static void SpriteCB_PMIndicator(struct Sprite *sprite)
{
- if (gTasks[sprite->data[0]].tPeriod)
+ if (gTasks[sprite->data[0]].tPeriod != PERIOD_AM)
{
if (sprite->data[1] >= 60 && sprite->data[1] < 90)
{
@@ -1113,9 +1081,9 @@ static void SpriteCB_AMIndicator(struct Sprite *sprite)
sprite->pos2.y = Sin2(sprite->data[1]) * 30 / 0x1000;
}
-static void SpriteCB_PMIndicator(struct Sprite *sprite)
+static void SpriteCB_AMIndicator(struct Sprite *sprite)
{
- if (gTasks[sprite->data[0]].tPeriod)
+ if (gTasks[sprite->data[0]].tPeriod != PERIOD_AM)
{
if (sprite->data[1] >= 105 && sprite->data[1] < 135)
{
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index 492a10101..9f81a3b3e 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -21,7 +21,6 @@
#include "constants/items.h"
#include "constants/layouts.h"
#include "constants/maps.h"
-#include "constants/species.h"
#include "constants/weather.h"
extern const u8 EventScript_RepelWoreOff[];