summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bard_music.c4
-rw-r--r--src/battle_ai_script_commands.c2
-rw-r--r--src/battle_ai_switch_items.c12
-rw-r--r--src/battle_bg.c10
-rw-r--r--src/battle_controller_link_opponent.c138
-rw-r--r--src/battle_controller_link_partner.c138
-rw-r--r--src/battle_controller_opponent.c146
-rw-r--r--src/battle_controller_player.c140
-rw-r--r--src/battle_controller_player_partner.c140
-rw-r--r--src/battle_controller_recorded_opponent.c140
-rw-r--r--src/battle_controller_recorded_player.c144
-rw-r--r--src/battle_controller_safari.c130
-rw-r--r--src/battle_controller_wally.c130
-rw-r--r--src/battle_controllers.c62
-rw-r--r--src/battle_dome.c2
-rw-r--r--src/battle_factory.c42
-rw-r--r--src/battle_factory_screen.c3124
-rw-r--r--src/battle_gfx_sfx_util.c6
-rw-r--r--src/battle_intro.c2
-rw-r--r--src/battle_main.c66
-rw-r--r--src/battle_message.c36
-rw-r--r--src/battle_script_commands.c26
-rw-r--r--src/battle_setup.c2
-rw-r--r--src/battle_tower.c14
-rw-r--r--src/battle_tv.c2
-rw-r--r--src/battle_util.c6
-rw-r--r--src/cable_club.c2
-rw-r--r--src/data/bard_music/bard_sounds.h46
-rw-r--r--src/data/battle_frontier/trainer_hill.h690
-rw-r--r--src/data/decoration/header.h2543
-rw-r--r--src/data/decoration/tilemaps.h171
-rw-r--r--src/data/decoration/tiles.h2
-rwxr-xr-xsrc/data/easy_chat/easy_chat_groups.h88
-rw-r--r--src/data/party_menu.h116
-rw-r--r--src/daycare.c4
-rw-r--r--src/decoration.c16
-rw-r--r--src/egg_hatch.c2
-rw-r--r--src/field_control_avatar.c3
-rwxr-xr-xsrc/field_message_box.c1
-rw-r--r--src/field_player_avatar.c172
-rw-r--r--src/field_screen_effect.c176
-rw-r--r--src/field_specials.c4
-rw-r--r--src/frontier_util.c48
-rw-r--r--src/graphics.c4
-rwxr-xr-xsrc/item_menu.c1
-rwxr-xr-xsrc/item_use.c14
-rw-r--r--src/link.c4
-rw-r--r--src/link_rfu_2.c2
-rw-r--r--src/main.c22
-rw-r--r--src/main_menu.c1
-rwxr-xr-xsrc/party_menu.c30
-rw-r--r--src/pokeball.c5
-rw-r--r--src/pokedex.c2
-rw-r--r--src/pokemon.c53
-rw-r--r--src/pokemon_animation.c2
-rw-r--r--src/recorded_battle.c29
-rw-r--r--src/safari_zone.c2
-rw-r--r--src/scrcmd.c8
-rwxr-xr-xsrc/script_pokemon_util.c4
-rw-r--r--src/start_menu.c4
-rw-r--r--src/trade.c4
61 files changed, 4759 insertions, 4180 deletions
diff --git a/src/bard_music.c b/src/bard_music.c
index 6c2578071..1a61c25ff 100644
--- a/src/bard_music.c
+++ b/src/bard_music.c
@@ -25,8 +25,8 @@ const struct BardSound *GetWordSounds(u16 word)
{
return gBardSound_InvalidWord;
}
- category = word >> 9;
- subword = word & 0x1ff;
+ category = EC_GROUP(word);
+ subword = EC_INDEX(word);
switch (category)
{
case EC_GROUP_POKEMON:
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index b7679429c..10eb013fe 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -293,7 +293,7 @@ void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves)
if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
&& !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_BATTLE_TOWER
| BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_SECRET_BASE | BATTLE_TYPE_FRONTIER
- | BATTLE_TYPE_INGAME_PARTNER | BATTLE_TYPE_x2000000)
+ | BATTLE_TYPE_INGAME_PARTNER | BATTLE_TYPE_RECORDED_LINK)
)
)
{
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
index 1663c2561..263c1e7cc 100644
--- a/src/battle_ai_switch_items.c
+++ b/src/battle_ai_switch_items.c
@@ -62,7 +62,7 @@ static bool8 ShouldSwitchIfWonderGuard(void)
}
// Get party information.
- if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TOWER_LINK_MULTI))
{
if ((gActiveBattler & BIT_FLANK) == B_FLANK_LEFT)
firstId = 0, lastId = 3;
@@ -158,7 +158,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
if (gBattleMons[gActiveBattler].ability == absorbingTypeAbility)
return FALSE;
- if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TOWER_LINK_MULTI))
{
if ((gActiveBattler & BIT_FLANK) == B_FLANK_LEFT)
firstId = 0, lastId = 3;
@@ -353,7 +353,7 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
battlerIn2 = gActiveBattler;
}
- if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TOWER_LINK_MULTI))
{
if ((gActiveBattler & BIT_FLANK) == 0)
firstId = 0, lastId = 3;
@@ -464,7 +464,7 @@ static bool8 ShouldSwitch(void)
battlerIn2 = *activeBattlerPtr;
}
- if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TOWER_LINK_MULTI))
{
if ((gActiveBattler & BIT_FLANK) == B_FLANK_LEFT)
firstId = 0, lastId = 3;
@@ -555,7 +555,7 @@ void AI_TrySwitchOrUseItem(void)
battlerIn2 = GetBattlerAtPosition(battlerIdentity ^ BIT_FLANK);
}
- if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TOWER_LINK_MULTI))
{
if ((gActiveBattler & BIT_FLANK) == B_FLANK_LEFT)
firstId = 0, lastId = 3;
@@ -661,7 +661,7 @@ u8 GetMostSuitableMonToSwitchInto(void)
battlerIn2 = gActiveBattler;
}
- if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TOWER_LINK_MULTI))
{
if ((gActiveBattler & BIT_FLANK) == B_FLANK_LEFT)
firstId = 0, lastId = 3;
diff --git a/src/battle_bg.c b/src/battle_bg.c
index 7c9b05b25..ad992f7b3 100644
--- a/src/battle_bg.c
+++ b/src/battle_bg.c
@@ -759,7 +759,7 @@ void LoadBattleMenuWindowGfx(void)
void DrawMainBattleBackground(void)
{
- if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_x2000000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_RECORDED_LINK))
{
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
@@ -1140,7 +1140,7 @@ void DrawBattleEntryBackground(void)
gBattle_BG2_Y = 0xFF5C;
LoadCompressedSpriteSheetUsingHeap(&sVsLettersSpriteSheet);
}
- else if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_EREADER_TRAINER))
+ else if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_EREADER_TRAINER))
{
if (!(gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) || gPartnerTrainerId == TRAINER_STEVEN_PARTNER)
{
@@ -1221,7 +1221,7 @@ bool8 LoadChosenBattleElement(u8 caseId)
LoadCompressedPalette(gBattleTextboxPalette, 0, 0x40);
break;
case 3:
- if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_EREADER_TRAINER))
+ if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_EREADER_TRAINER))
{
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(BG_CHAR_ADDR(2)));
}
@@ -1280,7 +1280,7 @@ bool8 LoadChosenBattleElement(u8 caseId)
}
break;
case 4:
- if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_EREADER_TRAINER))
+ if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_EREADER_TRAINER))
{
LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(BG_SCREEN_ADDR(26)));
}
@@ -1342,7 +1342,7 @@ bool8 LoadChosenBattleElement(u8 caseId)
}
break;
case 5:
- if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_EREADER_TRAINER))
+ if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_EREADER_TRAINER))
{
LoadCompressedPalette(gBattleTerrainPalette_Frontier, 0x20, 0x60);
}
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index 1041f6fda..269b4c1b4 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -69,10 +69,10 @@ static void LinkOpponentHandleTwoReturnValues(void);
static void LinkOpponentHandleChosenMonReturnValue(void);
static void LinkOpponentHandleOneReturnValue(void);
static void LinkOpponentHandleOneReturnValue_Duplicate(void);
-static void LinkOpponentHandleCmd37(void);
-static void LinkOpponentHandleCmd38(void);
-static void LinkOpponentHandleCmd39(void);
-static void LinkOpponentHandleCmd40(void);
+static void LinkOpponentHandleClearUnkVar(void);
+static void LinkOpponentHandleSetUnkVar(void);
+static void LinkOpponentHandleClearUnkFlag(void);
+static void LinkOpponentHandleToggleUnkFlag(void);
static void LinkOpponentHandleHitAnimation(void);
static void LinkOpponentHandleCmd42(void);
static void LinkOpponentHandlePlaySE(void);
@@ -104,63 +104,63 @@ static void sub_806782C(void);
static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
{
- LinkOpponentHandleGetMonData,
- LinkOpponentHandleGetRawMonData,
- LinkOpponentHandleSetMonData,
- LinkOpponentHandleSetRawMonData,
- LinkOpponentHandleLoadMonSprite,
- LinkOpponentHandleSwitchInAnim,
- LinkOpponentHandleReturnMonToBall,
- LinkOpponentHandleDrawTrainerPic,
- LinkOpponentHandleTrainerSlide,
- LinkOpponentHandleTrainerSlideBack,
- LinkOpponentHandleFaintAnimation,
- LinkOpponentHandlePaletteFade,
- LinkOpponentHandleSuccessBallThrowAnim,
- LinkOpponentHandleBallThrowAnim,
- LinkOpponentHandlePause,
- LinkOpponentHandleMoveAnimation,
- LinkOpponentHandlePrintString,
- LinkOpponentHandlePrintSelectionString,
- LinkOpponentHandleChooseAction,
- LinkOpponentHandleUnknownYesNoBox,
- LinkOpponentHandleChooseMove,
- LinkOpponentHandleChooseItem,
- LinkOpponentHandleChoosePokemon,
- LinkOpponentHandleCmd23,
- LinkOpponentHandleHealthBarUpdate,
- LinkOpponentHandleExpUpdate,
- LinkOpponentHandleStatusIconUpdate,
- LinkOpponentHandleStatusAnimation,
- LinkOpponentHandleStatusXor,
- LinkOpponentHandleDataTransfer,
- LinkOpponentHandleDMA3Transfer,
- LinkOpponentHandlePlayBGM,
- LinkOpponentHandleCmd32,
- LinkOpponentHandleTwoReturnValues,
- LinkOpponentHandleChosenMonReturnValue,
- LinkOpponentHandleOneReturnValue,
- LinkOpponentHandleOneReturnValue_Duplicate,
- LinkOpponentHandleCmd37,
- LinkOpponentHandleCmd38,
- LinkOpponentHandleCmd39,
- LinkOpponentHandleCmd40,
- LinkOpponentHandleHitAnimation,
- LinkOpponentHandleCmd42,
- LinkOpponentHandlePlaySE,
- LinkOpponentHandlePlayFanfareOrBGM,
- LinkOpponentHandleFaintingCry,
- LinkOpponentHandleIntroSlide,
- LinkOpponentHandleIntroTrainerBallThrow,
- LinkOpponentHandleDrawPartyStatusSummary,
- LinkOpponentHandleHidePartyStatusSummary,
- LinkOpponentHandleEndBounceEffect,
- LinkOpponentHandleSpriteInvisibility,
- LinkOpponentHandleBattleAnimation,
- LinkOpponentHandleLinkStandbyMsg,
- LinkOpponentHandleResetActionMoveSelection,
- LinkOpponentHandleCmd55,
- LinkOpponentCmdEnd
+ [CONTROLLER_GETMONDATA] = LinkOpponentHandleGetMonData,
+ [CONTROLLER_GETRAWMONDATA] = LinkOpponentHandleGetRawMonData,
+ [CONTROLLER_SETMONDATA] = LinkOpponentHandleSetMonData,
+ [CONTROLLER_SETRAWMONDATA] = LinkOpponentHandleSetRawMonData,
+ [CONTROLLER_LOADMONSPRITE] = LinkOpponentHandleLoadMonSprite,
+ [CONTROLLER_SWITCHINANIM] = LinkOpponentHandleSwitchInAnim,
+ [CONTROLLER_RETURNMONTOBALL] = LinkOpponentHandleReturnMonToBall,
+ [CONTROLLER_DRAWTRAINERPIC] = LinkOpponentHandleDrawTrainerPic,
+ [CONTROLLER_TRAINERSLIDE] = LinkOpponentHandleTrainerSlide,
+ [CONTROLLER_TRAINERSLIDEBACK] = LinkOpponentHandleTrainerSlideBack,
+ [CONTROLLER_FAINTANIMATION] = LinkOpponentHandleFaintAnimation,
+ [CONTROLLER_PALETTEFADE] = LinkOpponentHandlePaletteFade,
+ [CONTROLLER_SUCCESSBALLTHROWANIM] = LinkOpponentHandleSuccessBallThrowAnim,
+ [CONTROLLER_BALLTHROWANIM] = LinkOpponentHandleBallThrowAnim,
+ [CONTROLLER_PAUSE] = LinkOpponentHandlePause,
+ [CONTROLLER_MOVEANIMATION] = LinkOpponentHandleMoveAnimation,
+ [CONTROLLER_PRINTSTRING] = LinkOpponentHandlePrintString,
+ [CONTROLLER_PRINTSTRINGPLAYERONLY] = LinkOpponentHandlePrintSelectionString,
+ [CONTROLLER_CHOOSEACTION] = LinkOpponentHandleChooseAction,
+ [CONTROLLER_UNKNOWNYESNOBOX] = LinkOpponentHandleUnknownYesNoBox,
+ [CONTROLLER_CHOOSEMOVE] = LinkOpponentHandleChooseMove,
+ [CONTROLLER_OPENBAG] = LinkOpponentHandleChooseItem,
+ [CONTROLLER_CHOOSEPOKEMON] = LinkOpponentHandleChoosePokemon,
+ [CONTROLLER_23] = LinkOpponentHandleCmd23,
+ [CONTROLLER_HEALTHBARUPDATE] = LinkOpponentHandleHealthBarUpdate,
+ [CONTROLLER_EXPUPDATE] = LinkOpponentHandleExpUpdate,
+ [CONTROLLER_STATUSICONUPDATE] = LinkOpponentHandleStatusIconUpdate,
+ [CONTROLLER_STATUSANIMATION] = LinkOpponentHandleStatusAnimation,
+ [CONTROLLER_STATUSXOR] = LinkOpponentHandleStatusXor,
+ [CONTROLLER_DATATRANSFER] = LinkOpponentHandleDataTransfer,
+ [CONTROLLER_DMA3TRANSFER] = LinkOpponentHandleDMA3Transfer,
+ [CONTROLLER_PLAYBGM] = LinkOpponentHandlePlayBGM,
+ [CONTROLLER_32] = LinkOpponentHandleCmd32,
+ [CONTROLLER_TWORETURNVALUES] = LinkOpponentHandleTwoReturnValues,
+ [CONTROLLER_CHOSENMONRETURNVALUE] = LinkOpponentHandleChosenMonReturnValue,
+ [CONTROLLER_ONERETURNVALUE] = LinkOpponentHandleOneReturnValue,
+ [CONTROLLER_ONERETURNVALUE_DUPLICATE] = LinkOpponentHandleOneReturnValue_Duplicate,
+ [CONTROLLER_CLEARUNKVAR] = LinkOpponentHandleClearUnkVar,
+ [CONTROLLER_SETUNKVAR] = LinkOpponentHandleSetUnkVar,
+ [CONTROLLER_CLEARUNKFLAG] = LinkOpponentHandleClearUnkFlag,
+ [CONTROLLER_TOGGLEUNKFLAG] = LinkOpponentHandleToggleUnkFlag,
+ [CONTROLLER_HITANIMATION] = LinkOpponentHandleHitAnimation,
+ [CONTROLLER_42] = LinkOpponentHandleCmd42,
+ [CONTROLLER_PLAYSE] = LinkOpponentHandlePlaySE,
+ [CONTROLLER_PLAYFANFAREORBGM] = LinkOpponentHandlePlayFanfareOrBGM,
+ [CONTROLLER_FAINTINGCRY] = LinkOpponentHandleFaintingCry,
+ [CONTROLLER_INTROSLIDE] = LinkOpponentHandleIntroSlide,
+ [CONTROLLER_INTROTRAINERBALLTHROW] = LinkOpponentHandleIntroTrainerBallThrow,
+ [CONTROLLER_DRAWPARTYSTATUSSUMMARY] = LinkOpponentHandleDrawPartyStatusSummary,
+ [CONTROLLER_HIDEPARTYSTATUSSUMMARY] = LinkOpponentHandleHidePartyStatusSummary,
+ [CONTROLLER_ENDBOUNCE] = LinkOpponentHandleEndBounceEffect,
+ [CONTROLLER_SPRITEINVISIBILITY] = LinkOpponentHandleSpriteInvisibility,
+ [CONTROLLER_BATTLEANIMATION] = LinkOpponentHandleBattleAnimation,
+ [CONTROLLER_LINKSTANDBYMSG] = LinkOpponentHandleLinkStandbyMsg,
+ [CONTROLLER_RESETACTIONMOVESELECTION] = LinkOpponentHandleResetActionMoveSelection,
+ [CONTROLLER_55] = LinkOpponentHandleCmd55,
+ [CONTROLLER_TERMINATOR_NOP] = LinkOpponentCmdEnd
};
static void nullsub_28(void)
@@ -1604,27 +1604,27 @@ static void LinkOpponentHandleOneReturnValue_Duplicate(void)
LinkOpponentBufferExecCompleted();
}
-static void LinkOpponentHandleCmd37(void)
+static void LinkOpponentHandleClearUnkVar(void)
{
- gUnknown_02022D0C.field_0 = 0;
+ gUnusedControllerStruct.unk = 0;
LinkOpponentBufferExecCompleted();
}
-static void LinkOpponentHandleCmd38(void)
+static void LinkOpponentHandleSetUnkVar(void)
{
- gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBattler][1];
+ gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
LinkOpponentBufferExecCompleted();
}
-static void LinkOpponentHandleCmd39(void)
+static void LinkOpponentHandleClearUnkFlag(void)
{
- gUnknown_02022D0C.flag_x80 = 0;
+ gUnusedControllerStruct.flag = 0;
LinkOpponentBufferExecCompleted();
}
-static void LinkOpponentHandleCmd40(void)
+static void LinkOpponentHandleToggleUnkFlag(void)
{
- gUnknown_02022D0C.flag_x80 ^= 1;
+ gUnusedControllerStruct.flag ^= 1;
LinkOpponentBufferExecCompleted();
}
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index af81b06d5..d3037bb90 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -67,10 +67,10 @@ static void LinkPartnerHandleTwoReturnValues(void);
static void LinkPartnerHandleChosenMonReturnValue(void);
static void LinkPartnerHandleOneReturnValue(void);
static void LinkPartnerHandleOneReturnValue_Duplicate(void);
-static void LinkPartnerHandleCmd37(void);
-static void LinkPartnerHandleCmd38(void);
-static void LinkPartnerHandleCmd39(void);
-static void LinkPartnerHandleCmd40(void);
+static void LinkPartnerHandleClearUnkVar(void);
+static void LinkPartnerHandleSetUnkVar(void);
+static void LinkPartnerHandleClearUnkFlag(void);
+static void LinkPartnerHandleToggleUnkFlag(void);
static void LinkPartnerHandleHitAnimation(void);
static void LinkPartnerHandleCmd42(void);
static void LinkPartnerHandlePlaySE(void);
@@ -101,63 +101,63 @@ static void sub_814DE9C(void);
static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
{
- LinkPartnerHandleGetMonData,
- LinkPartnerHandleGetRawMonData,
- LinkPartnerHandleSetMonData,
- LinkPartnerHandleSetRawMonData,
- LinkPartnerHandleLoadMonSprite,
- LinkPartnerHandleSwitchInAnim,
- LinkPartnerHandleReturnMonToBall,
- LinkPartnerHandleDrawTrainerPic,
- LinkPartnerHandleTrainerSlide,
- LinkPartnerHandleTrainerSlideBack,
- LinkPartnerHandleFaintAnimation,
- LinkPartnerHandlePaletteFade,
- LinkPartnerHandleSuccessBallThrowAnim,
- LinkPartnerHandleBallThrowAnim,
- LinkPartnerHandlePause,
- LinkPartnerHandleMoveAnimation,
- LinkPartnerHandlePrintString,
- LinkPartnerHandlePrintSelectionString,
- LinkPartnerHandleChooseAction,
- LinkPartnerHandleUnknownYesNoBox,
- LinkPartnerHandleChooseMove,
- LinkPartnerHandleChooseItem,
- LinkPartnerHandleChoosePokemon,
- LinkPartnerHandleCmd23,
- LinkPartnerHandleHealthBarUpdate,
- LinkPartnerHandleExpUpdate,
- LinkPartnerHandleStatusIconUpdate,
- LinkPartnerHandleStatusAnimation,
- LinkPartnerHandleStatusXor,
- LinkPartnerHandleDataTransfer,
- LinkPartnerHandleDMA3Transfer,
- LinkPartnerHandlePlayBGM,
- LinkPartnerHandleCmd32,
- LinkPartnerHandleTwoReturnValues,
- LinkPartnerHandleChosenMonReturnValue,
- LinkPartnerHandleOneReturnValue,
- LinkPartnerHandleOneReturnValue_Duplicate,
- LinkPartnerHandleCmd37,
- LinkPartnerHandleCmd38,
- LinkPartnerHandleCmd39,
- LinkPartnerHandleCmd40,
- LinkPartnerHandleHitAnimation,
- LinkPartnerHandleCmd42,
- LinkPartnerHandlePlaySE,
- LinkPartnerHandlePlayFanfareOrBGM,
- LinkPartnerHandleFaintingCry,
- LinkPartnerHandleIntroSlide,
- LinkPartnerHandleIntroTrainerBallThrow,
- LinkPartnerHandleDrawPartyStatusSummary,
- LinkPartnerHandleHidePartyStatusSummary,
- LinkPartnerHandleEndBounceEffect,
- LinkPartnerHandleSpriteInvisibility,
- LinkPartnerHandleBattleAnimation,
- LinkPartnerHandleLinkStandbyMsg,
- LinkPartnerHandleResetActionMoveSelection,
- LinkPartnerHandleCmd55,
- LinkPartnerCmdEnd
+ [CONTROLLER_GETMONDATA] = LinkPartnerHandleGetMonData,
+ [CONTROLLER_GETRAWMONDATA] = LinkPartnerHandleGetRawMonData,
+ [CONTROLLER_SETMONDATA] = LinkPartnerHandleSetMonData,
+ [CONTROLLER_SETRAWMONDATA] = LinkPartnerHandleSetRawMonData,
+ [CONTROLLER_LOADMONSPRITE] = LinkPartnerHandleLoadMonSprite,
+ [CONTROLLER_SWITCHINANIM] = LinkPartnerHandleSwitchInAnim,
+ [CONTROLLER_RETURNMONTOBALL] = LinkPartnerHandleReturnMonToBall,
+ [CONTROLLER_DRAWTRAINERPIC] = LinkPartnerHandleDrawTrainerPic,
+ [CONTROLLER_TRAINERSLIDE] = LinkPartnerHandleTrainerSlide,
+ [CONTROLLER_TRAINERSLIDEBACK] = LinkPartnerHandleTrainerSlideBack,
+ [CONTROLLER_FAINTANIMATION] = LinkPartnerHandleFaintAnimation,
+ [CONTROLLER_PALETTEFADE] = LinkPartnerHandlePaletteFade,
+ [CONTROLLER_SUCCESSBALLTHROWANIM] = LinkPartnerHandleSuccessBallThrowAnim,
+ [CONTROLLER_BALLTHROWANIM] = LinkPartnerHandleBallThrowAnim,
+ [CONTROLLER_PAUSE] = LinkPartnerHandlePause,
+ [CONTROLLER_MOVEANIMATION] = LinkPartnerHandleMoveAnimation,
+ [CONTROLLER_PRINTSTRING] = LinkPartnerHandlePrintString,
+ [CONTROLLER_PRINTSTRINGPLAYERONLY] = LinkPartnerHandlePrintSelectionString,
+ [CONTROLLER_CHOOSEACTION] = LinkPartnerHandleChooseAction,
+ [CONTROLLER_UNKNOWNYESNOBOX] = LinkPartnerHandleUnknownYesNoBox,
+ [CONTROLLER_CHOOSEMOVE] = LinkPartnerHandleChooseMove,
+ [CONTROLLER_OPENBAG] = LinkPartnerHandleChooseItem,
+ [CONTROLLER_CHOOSEPOKEMON] = LinkPartnerHandleChoosePokemon,
+ [CONTROLLER_23] = LinkPartnerHandleCmd23,
+ [CONTROLLER_HEALTHBARUPDATE] = LinkPartnerHandleHealthBarUpdate,
+ [CONTROLLER_EXPUPDATE] = LinkPartnerHandleExpUpdate,
+ [CONTROLLER_STATUSICONUPDATE] = LinkPartnerHandleStatusIconUpdate,
+ [CONTROLLER_STATUSANIMATION] = LinkPartnerHandleStatusAnimation,
+ [CONTROLLER_STATUSXOR] = LinkPartnerHandleStatusXor,
+ [CONTROLLER_DATATRANSFER] = LinkPartnerHandleDataTransfer,
+ [CONTROLLER_DMA3TRANSFER] = LinkPartnerHandleDMA3Transfer,
+ [CONTROLLER_PLAYBGM] = LinkPartnerHandlePlayBGM,
+ [CONTROLLER_32] = LinkPartnerHandleCmd32,
+ [CONTROLLER_TWORETURNVALUES] = LinkPartnerHandleTwoReturnValues,
+ [CONTROLLER_CHOSENMONRETURNVALUE] = LinkPartnerHandleChosenMonReturnValue,
+ [CONTROLLER_ONERETURNVALUE] = LinkPartnerHandleOneReturnValue,
+ [CONTROLLER_ONERETURNVALUE_DUPLICATE] = LinkPartnerHandleOneReturnValue_Duplicate,
+ [CONTROLLER_CLEARUNKVAR] = LinkPartnerHandleClearUnkVar,
+ [CONTROLLER_SETUNKVAR] = LinkPartnerHandleSetUnkVar,
+ [CONTROLLER_CLEARUNKFLAG] = LinkPartnerHandleClearUnkFlag,
+ [CONTROLLER_TOGGLEUNKFLAG] = LinkPartnerHandleToggleUnkFlag,
+ [CONTROLLER_HITANIMATION] = LinkPartnerHandleHitAnimation,
+ [CONTROLLER_42] = LinkPartnerHandleCmd42,
+ [CONTROLLER_PLAYSE] = LinkPartnerHandlePlaySE,
+ [CONTROLLER_PLAYFANFAREORBGM] = LinkPartnerHandlePlayFanfareOrBGM,
+ [CONTROLLER_FAINTINGCRY] = LinkPartnerHandleFaintingCry,
+ [CONTROLLER_INTROSLIDE] = LinkPartnerHandleIntroSlide,
+ [CONTROLLER_INTROTRAINERBALLTHROW] = LinkPartnerHandleIntroTrainerBallThrow,
+ [CONTROLLER_DRAWPARTYSTATUSSUMMARY] = LinkPartnerHandleDrawPartyStatusSummary,
+ [CONTROLLER_HIDEPARTYSTATUSSUMMARY] = LinkPartnerHandleHidePartyStatusSummary,
+ [CONTROLLER_ENDBOUNCE] = LinkPartnerHandleEndBounceEffect,
+ [CONTROLLER_SPRITEINVISIBILITY] = LinkPartnerHandleSpriteInvisibility,
+ [CONTROLLER_BATTLEANIMATION] = LinkPartnerHandleBattleAnimation,
+ [CONTROLLER_LINKSTANDBYMSG] = LinkPartnerHandleLinkStandbyMsg,
+ [CONTROLLER_RESETACTIONMOVESELECTION] = LinkPartnerHandleResetActionMoveSelection,
+ [CONTROLLER_55] = LinkPartnerHandleCmd55,
+ [CONTROLLER_TERMINATOR_NOP] = LinkPartnerCmdEnd
};
static void SpriteCB_Null2(void)
@@ -1428,27 +1428,27 @@ static void LinkPartnerHandleOneReturnValue_Duplicate(void)
LinkPartnerBufferExecCompleted();
}
-static void LinkPartnerHandleCmd37(void)
+static void LinkPartnerHandleClearUnkVar(void)
{
- gUnknown_02022D0C.field_0 = 0;
+ gUnusedControllerStruct.unk = 0;
LinkPartnerBufferExecCompleted();
}
-static void LinkPartnerHandleCmd38(void)
+static void LinkPartnerHandleSetUnkVar(void)
{
- gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBattler][1];
+ gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
LinkPartnerBufferExecCompleted();
}
-static void LinkPartnerHandleCmd39(void)
+static void LinkPartnerHandleClearUnkFlag(void)
{
- gUnknown_02022D0C.flag_x80 = 0;
+ gUnusedControllerStruct.flag = 0;
LinkPartnerBufferExecCompleted();
}
-static void LinkPartnerHandleCmd40(void)
+static void LinkPartnerHandleToggleUnkFlag(void)
{
- gUnknown_02022D0C.flag_x80 ^= 1;
+ gUnusedControllerStruct.flag ^= 1;
LinkPartnerBufferExecCompleted();
}
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index f186bf3ff..2f1153612 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -74,10 +74,10 @@ static void OpponentHandleTwoReturnValues(void);
static void OpponentHandleChosenMonReturnValue(void);
static void OpponentHandleOneReturnValue(void);
static void OpponentHandleOneReturnValue_Duplicate(void);
-static void OpponentHandleCmd37(void);
-static void OpponentHandleCmd38(void);
-static void OpponentHandleCmd39(void);
-static void OpponentHandleCmd40(void);
+static void OpponentHandleClearUnkVar(void);
+static void OpponentHandleSetUnkVar(void);
+static void OpponentHandleClearUnkFlag(void);
+static void OpponentHandleToggleUnkFlag(void);
static void OpponentHandleHitAnimation(void);
static void OpponentHandleCmd42(void);
static void OpponentHandlePlaySE(void);
@@ -109,67 +109,67 @@ static void sub_8062A2C(void);
static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
{
- OpponentHandleGetMonData,
- OpponentHandleGetRawMonData,
- OpponentHandleSetMonData,
- OpponentHandleSetRawMonData,
- OpponentHandleLoadMonSprite,
- OpponentHandleSwitchInAnim,
- OpponentHandleReturnMonToBall,
- OpponentHandleDrawTrainerPic,
- OpponentHandleTrainerSlide,
- OpponentHandleTrainerSlideBack,
- OpponentHandleFaintAnimation,
- OpponentHandlePaletteFade,
- OpponentHandleSuccessBallThrowAnim,
- OpponentHandleBallThrow,
- OpponentHandlePause,
- OpponentHandleMoveAnimation,
- OpponentHandlePrintString,
- OpponentHandlePrintSelectionString,
- OpponentHandleChooseAction,
- OpponentHandleUnknownYesNoBox,
- OpponentHandleChooseMove,
- OpponentHandleChooseItem,
- OpponentHandleChoosePokemon,
- OpponentHandleCmd23,
- OpponentHandleHealthBarUpdate,
- OpponentHandleExpUpdate,
- OpponentHandleStatusIconUpdate,
- OpponentHandleStatusAnimation,
- OpponentHandleStatusXor,
- OpponentHandleDataTransfer,
- OpponentHandleDMA3Transfer,
- OpponentHandlePlayBGM,
- OpponentHandleCmd32,
- OpponentHandleTwoReturnValues,
- OpponentHandleChosenMonReturnValue,
- OpponentHandleOneReturnValue,
- OpponentHandleOneReturnValue_Duplicate,
- OpponentHandleCmd37,
- OpponentHandleCmd38,
- OpponentHandleCmd39,
- OpponentHandleCmd40,
- OpponentHandleHitAnimation,
- OpponentHandleCmd42,
- OpponentHandlePlaySE,
- OpponentHandlePlayFanfareOrBGM,
- OpponentHandleFaintingCry,
- OpponentHandleIntroSlide,
- OpponentHandleIntroTrainerBallThrow,
- OpponentHandleDrawPartyStatusSummary,
- OpponentHandleHidePartyStatusSummary,
- OpponentHandleEndBounceEffect,
- OpponentHandleSpriteInvisibility,
- OpponentHandleBattleAnimation,
- OpponentHandleLinkStandbyMsg,
- OpponentHandleResetActionMoveSelection,
- OpponentHandleCmd55,
- OpponentCmdEnd
+ [CONTROLLER_GETMONDATA] = OpponentHandleGetMonData,
+ [CONTROLLER_GETRAWMONDATA] = OpponentHandleGetRawMonData,
+ [CONTROLLER_SETMONDATA] = OpponentHandleSetMonData,
+ [CONTROLLER_SETRAWMONDATA] = OpponentHandleSetRawMonData,
+ [CONTROLLER_LOADMONSPRITE] = OpponentHandleLoadMonSprite,
+ [CONTROLLER_SWITCHINANIM] = OpponentHandleSwitchInAnim,
+ [CONTROLLER_RETURNMONTOBALL] = OpponentHandleReturnMonToBall,
+ [CONTROLLER_DRAWTRAINERPIC] = OpponentHandleDrawTrainerPic,
+ [CONTROLLER_TRAINERSLIDE] = OpponentHandleTrainerSlide,
+ [CONTROLLER_TRAINERSLIDEBACK] = OpponentHandleTrainerSlideBack,
+ [CONTROLLER_FAINTANIMATION] = OpponentHandleFaintAnimation,
+ [CONTROLLER_PALETTEFADE] = OpponentHandlePaletteFade,
+ [CONTROLLER_SUCCESSBALLTHROWANIM] = OpponentHandleSuccessBallThrowAnim,
+ [CONTROLLER_BALLTHROWANIM] = OpponentHandleBallThrow,
+ [CONTROLLER_PAUSE] = OpponentHandlePause,
+ [CONTROLLER_MOVEANIMATION] = OpponentHandleMoveAnimation,
+ [CONTROLLER_PRINTSTRING] = OpponentHandlePrintString,
+ [CONTROLLER_PRINTSTRINGPLAYERONLY] = OpponentHandlePrintSelectionString,
+ [CONTROLLER_CHOOSEACTION] = OpponentHandleChooseAction,
+ [CONTROLLER_UNKNOWNYESNOBOX] = OpponentHandleUnknownYesNoBox,
+ [CONTROLLER_CHOOSEMOVE] = OpponentHandleChooseMove,
+ [CONTROLLER_OPENBAG] = OpponentHandleChooseItem,
+ [CONTROLLER_CHOOSEPOKEMON] = OpponentHandleChoosePokemon,
+ [CONTROLLER_23] = OpponentHandleCmd23,
+ [CONTROLLER_HEALTHBARUPDATE] = OpponentHandleHealthBarUpdate,
+ [CONTROLLER_EXPUPDATE] = OpponentHandleExpUpdate,
+ [CONTROLLER_STATUSICONUPDATE] = OpponentHandleStatusIconUpdate,
+ [CONTROLLER_STATUSANIMATION] = OpponentHandleStatusAnimation,
+ [CONTROLLER_STATUSXOR] = OpponentHandleStatusXor,
+ [CONTROLLER_DATATRANSFER] = OpponentHandleDataTransfer,
+ [CONTROLLER_DMA3TRANSFER] = OpponentHandleDMA3Transfer,
+ [CONTROLLER_PLAYBGM] = OpponentHandlePlayBGM,
+ [CONTROLLER_32] = OpponentHandleCmd32,
+ [CONTROLLER_TWORETURNVALUES] = OpponentHandleTwoReturnValues,
+ [CONTROLLER_CHOSENMONRETURNVALUE] = OpponentHandleChosenMonReturnValue,
+ [CONTROLLER_ONERETURNVALUE] = OpponentHandleOneReturnValue,
+ [CONTROLLER_ONERETURNVALUE_DUPLICATE] = OpponentHandleOneReturnValue_Duplicate,
+ [CONTROLLER_CLEARUNKVAR] = OpponentHandleClearUnkVar,
+ [CONTROLLER_SETUNKVAR] = OpponentHandleSetUnkVar,
+ [CONTROLLER_CLEARUNKFLAG] = OpponentHandleClearUnkFlag,
+ [CONTROLLER_TOGGLEUNKFLAG] = OpponentHandleToggleUnkFlag,
+ [CONTROLLER_HITANIMATION] = OpponentHandleHitAnimation,
+ [CONTROLLER_42] = OpponentHandleCmd42,
+ [CONTROLLER_PLAYSE] = OpponentHandlePlaySE,
+ [CONTROLLER_PLAYFANFAREORBGM] = OpponentHandlePlayFanfareOrBGM,
+ [CONTROLLER_FAINTINGCRY] = OpponentHandleFaintingCry,
+ [CONTROLLER_INTROSLIDE] = OpponentHandleIntroSlide,
+ [CONTROLLER_INTROTRAINERBALLTHROW] = OpponentHandleIntroTrainerBallThrow,
+ [CONTROLLER_DRAWPARTYSTATUSSUMMARY] = OpponentHandleDrawPartyStatusSummary,
+ [CONTROLLER_HIDEPARTYSTATUSSUMMARY] = OpponentHandleHidePartyStatusSummary,
+ [CONTROLLER_ENDBOUNCE] = OpponentHandleEndBounceEffect,
+ [CONTROLLER_SPRITEINVISIBILITY] = OpponentHandleSpriteInvisibility,
+ [CONTROLLER_BATTLEANIMATION] = OpponentHandleBattleAnimation,
+ [CONTROLLER_LINKSTANDBYMSG] = OpponentHandleLinkStandbyMsg,
+ [CONTROLLER_RESETACTIONMOVESELECTION] = OpponentHandleResetActionMoveSelection,
+ [CONTROLLER_55] = OpponentHandleCmd55,
+ [CONTROLLER_TERMINATOR_NOP] = OpponentCmdEnd
};
// unknown unused data
-static const u8 sUnknown_0831C7AC[] = {0xB0, 0xB0, 0xC8, 0x98, 0x28, 0x28, 0x28, 0x20};
+static const u8 sUnused[] = {0xB0, 0xB0, 0xC8, 0x98, 0x28, 0x28, 0x28, 0x20};
static void nullsub_26(void)
{
@@ -1260,7 +1260,7 @@ static void OpponentHandleDrawTrainerPic(void)
}
else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
- if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TOWER_LINK_MULTI))
{
if (gActiveBattler == 1)
trainerPicId = GetFrontierTrainerFrontSpriteId(gTrainerBattleOpponent_A);
@@ -1344,7 +1344,7 @@ static void OpponentHandleTrainerSlide(void)
}
else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
- if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TOWER_LINK_MULTI))
{
if (gActiveBattler == 1)
trainerPicId = GetFrontierTrainerFrontSpriteId(gTrainerBattleOpponent_A);
@@ -1632,7 +1632,7 @@ static void OpponentHandleChoosePokemon(void)
battler2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
}
- if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TOWER_LINK_MULTI))
{
if (gActiveBattler == 1)
firstId = 0, lastId = 3;
@@ -1769,27 +1769,27 @@ static void OpponentHandleOneReturnValue_Duplicate(void)
OpponentBufferExecCompleted();
}
-static void OpponentHandleCmd37(void)
+static void OpponentHandleClearUnkVar(void)
{
- gUnknown_02022D0C.field_0 = 0;
+ gUnusedControllerStruct.unk = 0;
OpponentBufferExecCompleted();
}
-static void OpponentHandleCmd38(void)
+static void OpponentHandleSetUnkVar(void)
{
- gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBattler][1];
+ gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
OpponentBufferExecCompleted();
}
-static void OpponentHandleCmd39(void)
+static void OpponentHandleClearUnkFlag(void)
{
- gUnknown_02022D0C.flag_x80 = 0;
+ gUnusedControllerStruct.flag = 0;
OpponentBufferExecCompleted();
}
-static void OpponentHandleCmd40(void)
+static void OpponentHandleToggleUnkFlag(void)
{
- gUnknown_02022D0C.flag_x80 ^= 1;
+ gUnusedControllerStruct.flag ^= 1;
OpponentBufferExecCompleted();
}
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 7c34efd44..c1d7fc2a4 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -75,10 +75,10 @@ static void PlayerHandleTwoReturnValues(void);
static void PlayerHandleChosenMonReturnValue(void);
static void PlayerHandleOneReturnValue(void);
static void PlayerHandleOneReturnValue_Duplicate(void);
-static void PlayerHandleCmd37(void);
-static void PlayerHandleCmd38(void);
-static void PlayerHandleCmd39(void);
-static void PlayerHandleCmd40(void);
+static void PlayerHandleClearUnkVar(void);
+static void PlayerHandleSetUnkVar(void);
+static void PlayerHandleClearUnkFlag(void);
+static void PlayerHandleToggleUnkFlag(void);
static void PlayerHandleHitAnimation(void);
static void PlayerHandleCmd42(void);
static void PlayerHandlePlaySE(void);
@@ -125,69 +125,69 @@ static void sub_805CE38(void);
static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
{
- PlayerHandleGetMonData,
- PlayerHandleGetRawMonData,
- PlayerHandleSetMonData,
- PlayerHandleSetRawMonData,
- PlayerHandleLoadMonSprite,
- PlayerHandleSwitchInAnim,
- PlayerHandleReturnMonToBall,
- PlayerHandleDrawTrainerPic,
- PlayerHandleTrainerSlide,
- PlayerHandleTrainerSlideBack,
- PlayerHandleFaintAnimation,
- PlayerHandlePaletteFade,
- PlayerHandleSuccessBallThrowAnim,
- PlayerHandleBallThrowAnim,
- PlayerHandlePause,
- PlayerHandleMoveAnimation,
- PlayerHandlePrintString,
- PlayerHandlePrintSelectionString,
- PlayerHandleChooseAction,
- PlayerHandleUnknownYesNoBox,
- PlayerHandleChooseMove,
- PlayerHandleChooseItem,
- PlayerHandleChoosePokemon,
- PlayerHandleCmd23,
- PlayerHandleHealthBarUpdate,
- PlayerHandleExpUpdate,
- PlayerHandleStatusIconUpdate,
- PlayerHandleStatusAnimation,
- PlayerHandleStatusXor,
- PlayerHandleDataTransfer,
- PlayerHandleDMA3Transfer,
- PlayerHandlePlayBGM,
- PlayerHandleCmd32,
- PlayerHandleTwoReturnValues,
- PlayerHandleChosenMonReturnValue,
- PlayerHandleOneReturnValue,
- PlayerHandleOneReturnValue_Duplicate,
- PlayerHandleCmd37,
- PlayerHandleCmd38,
- PlayerHandleCmd39,
- PlayerHandleCmd40,
- PlayerHandleHitAnimation,
- PlayerHandleCmd42,
- PlayerHandlePlaySE,
- PlayerHandlePlayFanfareOrBGM,
- PlayerHandleFaintingCry,
- PlayerHandleIntroSlide,
- PlayerHandleIntroTrainerBallThrow,
- PlayerHandleDrawPartyStatusSummary,
- PlayerHandleHidePartyStatusSummary,
- PlayerHandleEndBounceEffect,
- PlayerHandleSpriteInvisibility,
- PlayerHandleBattleAnimation,
- PlayerHandleLinkStandbyMsg,
- PlayerHandleResetActionMoveSelection,
- PlayerHandleCmd55,
- PlayerCmdEnd
+ [CONTROLLER_GETMONDATA] = PlayerHandleGetMonData,
+ [CONTROLLER_GETRAWMONDATA] = PlayerHandleGetRawMonData,
+ [CONTROLLER_SETMONDATA] = PlayerHandleSetMonData,
+ [CONTROLLER_SETRAWMONDATA] = PlayerHandleSetRawMonData,
+ [CONTROLLER_LOADMONSPRITE] = PlayerHandleLoadMonSprite,
+ [CONTROLLER_SWITCHINANIM] = PlayerHandleSwitchInAnim,
+ [CONTROLLER_RETURNMONTOBALL] = PlayerHandleReturnMonToBall,
+ [CONTROLLER_DRAWTRAINERPIC] = PlayerHandleDrawTrainerPic,
+ [CONTROLLER_TRAINERSLIDE] = PlayerHandleTrainerSlide,
+ [CONTROLLER_TRAINERSLIDEBACK] = PlayerHandleTrainerSlideBack,
+ [CONTROLLER_FAINTANIMATION] = PlayerHandleFaintAnimation,
+ [CONTROLLER_PALETTEFADE] = PlayerHandlePaletteFade,
+ [CONTROLLER_SUCCESSBALLTHROWANIM] = PlayerHandleSuccessBallThrowAnim,
+ [CONTROLLER_BALLTHROWANIM] = PlayerHandleBallThrowAnim,
+ [CONTROLLER_PAUSE] = PlayerHandlePause,
+ [CONTROLLER_MOVEANIMATION] = PlayerHandleMoveAnimation,
+ [CONTROLLER_PRINTSTRING] = PlayerHandlePrintString,
+ [CONTROLLER_PRINTSTRINGPLAYERONLY] = PlayerHandlePrintSelectionString,
+ [CONTROLLER_CHOOSEACTION] = PlayerHandleChooseAction,
+ [CONTROLLER_UNKNOWNYESNOBOX] = PlayerHandleUnknownYesNoBox,
+ [CONTROLLER_CHOOSEMOVE] = PlayerHandleChooseMove,
+ [CONTROLLER_OPENBAG] = PlayerHandleChooseItem,
+ [CONTROLLER_CHOOSEPOKEMON] = PlayerHandleChoosePokemon,
+ [CONTROLLER_23] = PlayerHandleCmd23,
+ [CONTROLLER_HEALTHBARUPDATE] = PlayerHandleHealthBarUpdate,
+ [CONTROLLER_EXPUPDATE] = PlayerHandleExpUpdate,
+ [CONTROLLER_STATUSICONUPDATE] = PlayerHandleStatusIconUpdate,
+ [CONTROLLER_STATUSANIMATION] = PlayerHandleStatusAnimation,
+ [CONTROLLER_STATUSXOR] = PlayerHandleStatusXor,
+ [CONTROLLER_DATATRANSFER] = PlayerHandleDataTransfer,
+ [CONTROLLER_DMA3TRANSFER] = PlayerHandleDMA3Transfer,
+ [CONTROLLER_PLAYBGM] = PlayerHandlePlayBGM,
+ [CONTROLLER_32] = PlayerHandleCmd32,
+ [CONTROLLER_TWORETURNVALUES] = PlayerHandleTwoReturnValues,
+ [CONTROLLER_CHOSENMONRETURNVALUE] = PlayerHandleChosenMonReturnValue,
+ [CONTROLLER_ONERETURNVALUE] = PlayerHandleOneReturnValue,
+ [CONTROLLER_ONERETURNVALUE_DUPLICATE] = PlayerHandleOneReturnValue_Duplicate,
+ [CONTROLLER_CLEARUNKVAR] = PlayerHandleClearUnkVar,
+ [CONTROLLER_SETUNKVAR] = PlayerHandleSetUnkVar,
+ [CONTROLLER_CLEARUNKFLAG] = PlayerHandleClearUnkFlag,
+ [CONTROLLER_TOGGLEUNKFLAG] = PlayerHandleToggleUnkFlag,
+ [CONTROLLER_HITANIMATION] = PlayerHandleHitAnimation,
+ [CONTROLLER_42] = PlayerHandleCmd42,
+ [CONTROLLER_PLAYSE] = PlayerHandlePlaySE,
+ [CONTROLLER_PLAYFANFAREORBGM] = PlayerHandlePlayFanfareOrBGM,
+ [CONTROLLER_FAINTINGCRY] = PlayerHandleFaintingCry,
+ [CONTROLLER_INTROSLIDE] = PlayerHandleIntroSlide,
+ [CONTROLLER_INTROTRAINERBALLTHROW] = PlayerHandleIntroTrainerBallThrow,
+ [CONTROLLER_DRAWPARTYSTATUSSUMMARY] = PlayerHandleDrawPartyStatusSummary,
+ [CONTROLLER_HIDEPARTYSTATUSSUMMARY] = PlayerHandleHidePartyStatusSummary,
+ [CONTROLLER_ENDBOUNCE] = PlayerHandleEndBounceEffect,
+ [CONTROLLER_SPRITEINVISIBILITY] = PlayerHandleSpriteInvisibility,
+ [CONTROLLER_BATTLEANIMATION] = PlayerHandleBattleAnimation,
+ [CONTROLLER_LINKSTANDBYMSG] = PlayerHandleLinkStandbyMsg,
+ [CONTROLLER_RESETACTIONMOVESELECTION] = PlayerHandleResetActionMoveSelection,
+ [CONTROLLER_55] = PlayerHandleCmd55,
+ [CONTROLLER_TERMINATOR_NOP] = PlayerCmdEnd
};
static const u8 sTargetIdentities[] = {B_POSITION_PLAYER_LEFT, B_POSITION_PLAYER_RIGHT, B_POSITION_OPPONENT_RIGHT, B_POSITION_OPPONENT_LEFT};
// unknown unused data
-static const u8 sUnknown_0831C5FC[] = {0x48, 0x48, 0x20, 0x5a, 0x50, 0x50, 0x50, 0x58};
+static const u8 sUnused[] = {0x48, 0x48, 0x20, 0x5a, 0x50, 0x50, 0x50, 0x58};
void nullsub_21(void)
{
@@ -2822,27 +2822,27 @@ static void PlayerHandleOneReturnValue_Duplicate(void)
PlayerBufferExecCompleted();
}
-static void PlayerHandleCmd37(void)
+static void PlayerHandleClearUnkVar(void)
{
- gUnknown_02022D0C.field_0 = 0;
+ gUnusedControllerStruct.unk = 0;
PlayerBufferExecCompleted();
}
-static void PlayerHandleCmd38(void)
+static void PlayerHandleSetUnkVar(void)
{
- gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBattler][1];
+ gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
PlayerBufferExecCompleted();
}
-static void PlayerHandleCmd39(void)
+static void PlayerHandleClearUnkFlag(void)
{
- gUnknown_02022D0C.flag_x80 = 0;
+ gUnusedControllerStruct.flag = 0;
PlayerBufferExecCompleted();
}
-static void PlayerHandleCmd40(void)
+static void PlayerHandleToggleUnkFlag(void)
{
- gUnknown_02022D0C.flag_x80 ^= 1;
+ gUnusedControllerStruct.flag ^= 1;
PlayerBufferExecCompleted();
}
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c
index af6b739cc..d826d2183 100644
--- a/src/battle_controller_player_partner.c
+++ b/src/battle_controller_player_partner.c
@@ -65,10 +65,10 @@ static void PlayerPartnerHandleTwoReturnValues(void);
static void PlayerPartnerHandleChosenMonReturnValue(void);
static void PlayerPartnerHandleOneReturnValue(void);
static void PlayerPartnerHandleOneReturnValue_Duplicate(void);
-static void PlayerPartnerHandleCmd37(void);
-static void PlayerPartnerHandleCmd38(void);
-static void PlayerPartnerHandleCmd39(void);
-static void PlayerPartnerHandleCmd40(void);
+static void PlayerPartnerHandleClearUnkVar(void);
+static void PlayerPartnerHandleSetUnkVar(void);
+static void PlayerPartnerHandleClearUnkFlag(void);
+static void PlayerPartnerHandleToggleUnkFlag(void);
static void PlayerPartnerHandleHitAnimation(void);
static void PlayerPartnerHandleCmd42(void);
static void PlayerPartnerHandlePlaySE(void);
@@ -105,67 +105,67 @@ static void sub_81BE498(void);
static void (*const sPlayerPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
{
- PlayerPartnerHandleGetMonData,
- PlayerPartnerHandleGetRawMonData,
- PlayerPartnerHandleSetMonData,
- PlayerPartnerHandleSetRawMonData,
- PlayerPartnerHandleLoadMonSprite,
- PlayerPartnerHandleSwitchInAnim,
- PlayerPartnerHandleReturnMonToBall,
- PlayerPartnerHandleDrawTrainerPic,
- PlayerPartnerHandleTrainerSlide,
- PlayerPartnerHandleTrainerSlideBack,
- PlayerPartnerHandleFaintAnimation,
- PlayerPartnerHandlePaletteFade,
- PlayerPartnerHandleSuccessBallThrowAnim,
- PlayerPartnerHandleBallThrowAnim,
- PlayerPartnerHandlePause,
- PlayerPartnerHandleMoveAnimation,
- PlayerPartnerHandlePrintString,
- PlayerPartnerHandlePrintSelectionString,
- PlayerPartnerHandleChooseAction,
- PlayerPartnerHandleUnknownYesNoBox,
- PlayerPartnerHandleChooseMove,
- PlayerPartnerHandleChooseItem,
- PlayerPartnerHandleChoosePokemon,
- PlayerPartnerHandleCmd23,
- PlayerPartnerHandleHealthBarUpdate,
- PlayerPartnerHandleExpUpdate,
- PlayerPartnerHandleStatusIconUpdate,
- PlayerPartnerHandleStatusAnimation,
- PlayerPartnerHandleStatusXor,
- PlayerPartnerHandleDataTransfer,
- PlayerPartnerHandleDMA3Transfer,
- PlayerPartnerHandlePlayBGM,
- PlayerPartnerHandleCmd32,
- PlayerPartnerHandleTwoReturnValues,
- PlayerPartnerHandleChosenMonReturnValue,
- PlayerPartnerHandleOneReturnValue,
- PlayerPartnerHandleOneReturnValue_Duplicate,
- PlayerPartnerHandleCmd37,
- PlayerPartnerHandleCmd38,
- PlayerPartnerHandleCmd39,
- PlayerPartnerHandleCmd40,
- PlayerPartnerHandleHitAnimation,
- PlayerPartnerHandleCmd42,
- PlayerPartnerHandlePlaySE,
- PlayerPartnerHandlePlayFanfareOrBGM,
- PlayerPartnerHandleFaintingCry,
- PlayerPartnerHandleIntroSlide,
- PlayerPartnerHandleIntroTrainerBallThrow,
- PlayerPartnerHandleDrawPartyStatusSummary,
- PlayerPartnerHandleHidePartyStatusSummary,
- PlayerPartnerHandleEndBounceEffect,
- PlayerPartnerHandleSpriteInvisibility,
- PlayerPartnerHandleBattleAnimation,
- PlayerPartnerHandleLinkStandbyMsg,
- PlayerPartnerHandleResetActionMoveSelection,
- PlayerPartnerHandleCmd55,
- PlayerPartnerCmdEnd
+ [CONTROLLER_GETMONDATA] = PlayerPartnerHandleGetMonData,
+ [CONTROLLER_GETRAWMONDATA] = PlayerPartnerHandleGetRawMonData,
+ [CONTROLLER_SETMONDATA] = PlayerPartnerHandleSetMonData,
+ [CONTROLLER_SETRAWMONDATA] = PlayerPartnerHandleSetRawMonData,
+ [CONTROLLER_LOADMONSPRITE] = PlayerPartnerHandleLoadMonSprite,
+ [CONTROLLER_SWITCHINANIM] = PlayerPartnerHandleSwitchInAnim,
+ [CONTROLLER_RETURNMONTOBALL] = PlayerPartnerHandleReturnMonToBall,
+ [CONTROLLER_DRAWTRAINERPIC] = PlayerPartnerHandleDrawTrainerPic,
+ [CONTROLLER_TRAINERSLIDE] = PlayerPartnerHandleTrainerSlide,
+ [CONTROLLER_TRAINERSLIDEBACK] = PlayerPartnerHandleTrainerSlideBack,
+ [CONTROLLER_FAINTANIMATION] = PlayerPartnerHandleFaintAnimation,
+ [CONTROLLER_PALETTEFADE] = PlayerPartnerHandlePaletteFade,
+ [CONTROLLER_SUCCESSBALLTHROWANIM] = PlayerPartnerHandleSuccessBallThrowAnim,
+ [CONTROLLER_BALLTHROWANIM] = PlayerPartnerHandleBallThrowAnim,
+ [CONTROLLER_PAUSE] = PlayerPartnerHandlePause,
+ [CONTROLLER_MOVEANIMATION] = PlayerPartnerHandleMoveAnimation,
+ [CONTROLLER_PRINTSTRING] = PlayerPartnerHandlePrintString,
+ [CONTROLLER_PRINTSTRINGPLAYERONLY] = PlayerPartnerHandlePrintSelectionString,
+ [CONTROLLER_CHOOSEACTION] = PlayerPartnerHandleChooseAction,
+ [CONTROLLER_UNKNOWNYESNOBOX] = PlayerPartnerHandleUnknownYesNoBox,
+ [CONTROLLER_CHOOSEMOVE] = PlayerPartnerHandleChooseMove,
+ [CONTROLLER_OPENBAG] = PlayerPartnerHandleChooseItem,
+ [CONTROLLER_CHOOSEPOKEMON] = PlayerPartnerHandleChoosePokemon,
+ [CONTROLLER_23] = PlayerPartnerHandleCmd23,
+ [CONTROLLER_HEALTHBARUPDATE] = PlayerPartnerHandleHealthBarUpdate,
+ [CONTROLLER_EXPUPDATE] = PlayerPartnerHandleExpUpdate,
+ [CONTROLLER_STATUSICONUPDATE] = PlayerPartnerHandleStatusIconUpdate,
+ [CONTROLLER_STATUSANIMATION] = PlayerPartnerHandleStatusAnimation,
+ [CONTROLLER_STATUSXOR] = PlayerPartnerHandleStatusXor,
+ [CONTROLLER_DATATRANSFER] = PlayerPartnerHandleDataTransfer,
+ [CONTROLLER_DMA3TRANSFER] = PlayerPartnerHandleDMA3Transfer,
+ [CONTROLLER_PLAYBGM] = PlayerPartnerHandlePlayBGM,
+ [CONTROLLER_32] = PlayerPartnerHandleCmd32,
+ [CONTROLLER_TWORETURNVALUES] = PlayerPartnerHandleTwoReturnValues,
+ [CONTROLLER_CHOSENMONRETURNVALUE] = PlayerPartnerHandleChosenMonReturnValue,
+ [CONTROLLER_ONERETURNVALUE] = PlayerPartnerHandleOneReturnValue,
+ [CONTROLLER_ONERETURNVALUE_DUPLICATE] = PlayerPartnerHandleOneReturnValue_Duplicate,
+ [CONTROLLER_CLEARUNKVAR] = PlayerPartnerHandleClearUnkVar,
+ [CONTROLLER_SETUNKVAR] = PlayerPartnerHandleSetUnkVar,
+ [CONTROLLER_CLEARUNKFLAG] = PlayerPartnerHandleClearUnkFlag,
+ [CONTROLLER_TOGGLEUNKFLAG] = PlayerPartnerHandleToggleUnkFlag,
+ [CONTROLLER_HITANIMATION] = PlayerPartnerHandleHitAnimation,
+ [CONTROLLER_42] = PlayerPartnerHandleCmd42,
+ [CONTROLLER_PLAYSE] = PlayerPartnerHandlePlaySE,
+ [CONTROLLER_PLAYFANFAREORBGM] = PlayerPartnerHandlePlayFanfareOrBGM,
+ [CONTROLLER_FAINTINGCRY] = PlayerPartnerHandleFaintingCry,
+ [CONTROLLER_INTROSLIDE] = PlayerPartnerHandleIntroSlide,
+ [CONTROLLER_INTROTRAINERBALLTHROW] = PlayerPartnerHandleIntroTrainerBallThrow,
+ [CONTROLLER_DRAWPARTYSTATUSSUMMARY] = PlayerPartnerHandleDrawPartyStatusSummary,
+ [CONTROLLER_HIDEPARTYSTATUSSUMMARY] = PlayerPartnerHandleHidePartyStatusSummary,
+ [CONTROLLER_ENDBOUNCE] = PlayerPartnerHandleEndBounceEffect,
+ [CONTROLLER_SPRITEINVISIBILITY] = PlayerPartnerHandleSpriteInvisibility,
+ [CONTROLLER_BATTLEANIMATION] = PlayerPartnerHandleBattleAnimation,
+ [CONTROLLER_LINKSTANDBYMSG] = PlayerPartnerHandleLinkStandbyMsg,
+ [CONTROLLER_RESETACTIONMOVESELECTION] = PlayerPartnerHandleResetActionMoveSelection,
+ [CONTROLLER_55] = PlayerPartnerHandleCmd55,
+ [CONTROLLER_TERMINATOR_NOP] = PlayerPartnerCmdEnd
};
// unknown unused data
-static const u8 sUnknown_08617254[] =
+static const u8 sUnused[] =
{
0x83, 0x4d, 0xf3, 0x5f, 0x6f, 0x4f, 0xeb, 0x3e,
0x67, 0x2e, 0x10, 0x46, 0x8c, 0x3d, 0x28, 0x35,
@@ -1679,27 +1679,27 @@ static void PlayerPartnerHandleOneReturnValue_Duplicate(void)
PlayerPartnerBufferExecCompleted();
}
-static void PlayerPartnerHandleCmd37(void)
+static void PlayerPartnerHandleClearUnkVar(void)
{
- gUnknown_02022D0C.field_0 = 0;
+ gUnusedControllerStruct.unk = 0;
PlayerPartnerBufferExecCompleted();
}
-static void PlayerPartnerHandleCmd38(void)
+static void PlayerPartnerHandleSetUnkVar(void)
{
- gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBattler][1];
+ gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
PlayerPartnerBufferExecCompleted();
}
-static void PlayerPartnerHandleCmd39(void)
+static void PlayerPartnerHandleClearUnkFlag(void)
{
- gUnknown_02022D0C.flag_x80 = 0;
+ gUnusedControllerStruct.flag = 0;
PlayerPartnerBufferExecCompleted();
}
-static void PlayerPartnerHandleCmd40(void)
+static void PlayerPartnerHandleToggleUnkFlag(void)
{
- gUnknown_02022D0C.flag_x80 ^= 1;
+ gUnusedControllerStruct.flag ^= 1;
PlayerPartnerBufferExecCompleted();
}
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
index ca7cd4adc..895ca6b39 100644
--- a/src/battle_controller_recorded_opponent.c
+++ b/src/battle_controller_recorded_opponent.c
@@ -69,10 +69,10 @@ static void RecordedOpponentHandleTwoReturnValues(void);
static void RecordedOpponentHandleChosenMonReturnValue(void);
static void RecordedOpponentHandleOneReturnValue(void);
static void RecordedOpponentHandleOneReturnValue_Duplicate(void);
-static void RecordedOpponentHandleCmd37(void);
-static void RecordedOpponentHandleCmd38(void);
-static void RecordedOpponentHandleCmd39(void);
-static void RecordedOpponentHandleCmd40(void);
+static void RecordedOpponentHandleClearUnkVar(void);
+static void RecordedOpponentHandleSetUnkVar(void);
+static void RecordedOpponentHandleClearUnkFlag(void);
+static void RecordedOpponentHandleToggleUnkFlag(void);
static void RecordedOpponentHandleHitAnimation(void);
static void RecordedOpponentHandleCmd42(void);
static void RecordedOpponentHandlePlaySE(void);
@@ -104,63 +104,63 @@ static void sub_818975C(void);
static void (*const sRecordedOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
{
- RecordedOpponentHandleGetMonData,
- RecordedOpponentHandleGetRawMonData,
- RecordedOpponentHandleSetMonData,
- RecordedOpponentHandleSetRawMonData,
- RecordedOpponentHandleLoadMonSprite,
- RecordedOpponentHandleSwitchInAnim,
- RecordedOpponentHandleReturnMonToBall,
- RecordedOpponentHandleDrawTrainerPic,
- RecordedOpponentHandleTrainerSlide,
- RecordedOpponentHandleTrainerSlideBack,
- RecordedOpponentHandleFaintAnimation,
- RecordedOpponentHandlePaletteFade,
- RecordedOpponentHandleSuccessBallThrowAnim,
- RecordedOpponentHandleBallThrowAnim,
- RecordedOpponentHandlePause,
- RecordedOpponentHandleMoveAnimation,
- RecordedOpponentHandlePrintString,
- RecordedOpponentHandlePrintSelectionString,
- RecordedOpponentHandleChooseAction,
- RecordedOpponentHandleUnknownYesNoBox,
- RecordedOpponentHandleChooseMove,
- RecordedOpponentHandleChooseItem,
- RecordedOpponentHandleChoosePokemon,
- RecordedOpponentHandleCmd23,
- RecordedOpponentHandleHealthBarUpdate,
- RecordedOpponentHandleExpUpdate,
- RecordedOpponentHandleStatusIconUpdate,
- RecordedOpponentHandleStatusAnimation,
- RecordedOpponentHandleStatusXor,
- RecordedOpponentHandleDataTransfer,
- RecordedOpponentHandleDMA3Transfer,
- RecordedOpponentHandlePlayBGM,
- RecordedOpponentHandleCmd32,
- RecordedOpponentHandleTwoReturnValues,
- RecordedOpponentHandleChosenMonReturnValue,
- RecordedOpponentHandleOneReturnValue,
- RecordedOpponentHandleOneReturnValue_Duplicate,
- RecordedOpponentHandleCmd37,
- RecordedOpponentHandleCmd38,
- RecordedOpponentHandleCmd39,
- RecordedOpponentHandleCmd40,
- RecordedOpponentHandleHitAnimation,
- RecordedOpponentHandleCmd42,
- RecordedOpponentHandlePlaySE,
- RecordedOpponentHandlePlayFanfareOrBGM,
- RecordedOpponentHandleFaintingCry,
- RecordedOpponentHandleIntroSlide,
- RecordedOpponentHandleIntroTrainerBallThrow,
- RecordedOpponentHandleDrawPartyStatusSummary,
- RecordedOpponentHandleHidePartyStatusSummary,
- RecordedOpponentHandleEndBounceEffect,
- RecordedOpponentHandleSpriteInvisibility,
- RecordedOpponentHandleBattleAnimation,
- RecordedOpponentHandleLinkStandbyMsg,
- RecordedOpponentHandleResetActionMoveSelection,
- RecordedOpponentHandleCmd55,
- RecordedOpponentCmdEnd
+ [CONTROLLER_GETMONDATA] = RecordedOpponentHandleGetMonData,
+ [CONTROLLER_GETRAWMONDATA] = RecordedOpponentHandleGetRawMonData,
+ [CONTROLLER_SETMONDATA] = RecordedOpponentHandleSetMonData,
+ [CONTROLLER_SETRAWMONDATA] = RecordedOpponentHandleSetRawMonData,
+ [CONTROLLER_LOADMONSPRITE] = RecordedOpponentHandleLoadMonSprite,
+ [CONTROLLER_SWITCHINANIM] = RecordedOpponentHandleSwitchInAnim,
+ [CONTROLLER_RETURNMONTOBALL] = RecordedOpponentHandleReturnMonToBall,
+ [CONTROLLER_DRAWTRAINERPIC] = RecordedOpponentHandleDrawTrainerPic,
+ [CONTROLLER_TRAINERSLIDE] = RecordedOpponentHandleTrainerSlide,
+ [CONTROLLER_TRAINERSLIDEBACK] = RecordedOpponentHandleTrainerSlideBack,
+ [CONTROLLER_FAINTANIMATION] = RecordedOpponentHandleFaintAnimation,
+ [CONTROLLER_PALETTEFADE] = RecordedOpponentHandlePaletteFade,
+ [CONTROLLER_SUCCESSBALLTHROWANIM] = RecordedOpponentHandleSuccessBallThrowAnim,
+ [CONTROLLER_BALLTHROWANIM] = RecordedOpponentHandleBallThrowAnim,
+ [CONTROLLER_PAUSE] = RecordedOpponentHandlePause,
+ [CONTROLLER_MOVEANIMATION] = RecordedOpponentHandleMoveAnimation,
+ [CONTROLLER_PRINTSTRING] = RecordedOpponentHandlePrintString,
+ [CONTROLLER_PRINTSTRINGPLAYERONLY] = RecordedOpponentHandlePrintSelectionString,
+ [CONTROLLER_CHOOSEACTION] = RecordedOpponentHandleChooseAction,
+ [CONTROLLER_UNKNOWNYESNOBOX] = RecordedOpponentHandleUnknownYesNoBox,
+ [CONTROLLER_CHOOSEMOVE] = RecordedOpponentHandleChooseMove,
+ [CONTROLLER_OPENBAG] = RecordedOpponentHandleChooseItem,
+ [CONTROLLER_CHOOSEPOKEMON] = RecordedOpponentHandleChoosePokemon,
+ [CONTROLLER_23] = RecordedOpponentHandleCmd23,
+ [CONTROLLER_HEALTHBARUPDATE] = RecordedOpponentHandleHealthBarUpdate,
+ [CONTROLLER_EXPUPDATE] = RecordedOpponentHandleExpUpdate,
+ [CONTROLLER_STATUSICONUPDATE] = RecordedOpponentHandleStatusIconUpdate,
+ [CONTROLLER_STATUSANIMATION] = RecordedOpponentHandleStatusAnimation,
+ [CONTROLLER_STATUSXOR] = RecordedOpponentHandleStatusXor,
+ [CONTROLLER_DATATRANSFER] = RecordedOpponentHandleDataTransfer,
+ [CONTROLLER_DMA3TRANSFER] = RecordedOpponentHandleDMA3Transfer,
+ [CONTROLLER_PLAYBGM] = RecordedOpponentHandlePlayBGM,
+ [CONTROLLER_32] = RecordedOpponentHandleCmd32,
+ [CONTROLLER_TWORETURNVALUES] = RecordedOpponentHandleTwoReturnValues,
+ [CONTROLLER_CHOSENMONRETURNVALUE] = RecordedOpponentHandleChosenMonReturnValue,
+ [CONTROLLER_ONERETURNVALUE] = RecordedOpponentHandleOneReturnValue,
+ [CONTROLLER_ONERETURNVALUE_DUPLICATE] = RecordedOpponentHandleOneReturnValue_Duplicate,
+ [CONTROLLER_CLEARUNKVAR] = RecordedOpponentHandleClearUnkVar,
+ [CONTROLLER_SETUNKVAR] = RecordedOpponentHandleSetUnkVar,
+ [CONTROLLER_CLEARUNKFLAG] = RecordedOpponentHandleClearUnkFlag,
+ [CONTROLLER_TOGGLEUNKFLAG] = RecordedOpponentHandleToggleUnkFlag,
+ [CONTROLLER_HITANIMATION] = RecordedOpponentHandleHitAnimation,
+ [CONTROLLER_42] = RecordedOpponentHandleCmd42,
+ [CONTROLLER_PLAYSE] = RecordedOpponentHandlePlaySE,
+ [CONTROLLER_PLAYFANFAREORBGM] = RecordedOpponentHandlePlayFanfareOrBGM,
+ [CONTROLLER_FAINTINGCRY] = RecordedOpponentHandleFaintingCry,
+ [CONTROLLER_INTROSLIDE] = RecordedOpponentHandleIntroSlide,
+ [CONTROLLER_INTROTRAINERBALLTHROW] = RecordedOpponentHandleIntroTrainerBallThrow,
+ [CONTROLLER_DRAWPARTYSTATUSSUMMARY] = RecordedOpponentHandleDrawPartyStatusSummary,
+ [CONTROLLER_HIDEPARTYSTATUSSUMMARY] = RecordedOpponentHandleHidePartyStatusSummary,
+ [CONTROLLER_ENDBOUNCE] = RecordedOpponentHandleEndBounceEffect,
+ [CONTROLLER_SPRITEINVISIBILITY] = RecordedOpponentHandleSpriteInvisibility,
+ [CONTROLLER_BATTLEANIMATION] = RecordedOpponentHandleBattleAnimation,
+ [CONTROLLER_LINKSTANDBYMSG] = RecordedOpponentHandleLinkStandbyMsg,
+ [CONTROLLER_RESETACTIONMOVESELECTION] = RecordedOpponentHandleResetActionMoveSelection,
+ [CONTROLLER_55] = RecordedOpponentHandleCmd55,
+ [CONTROLLER_TERMINATOR_NOP] = RecordedOpponentCmdEnd
};
static void nullsub_70(void)
@@ -1236,7 +1236,7 @@ static void RecordedOpponentHandleDrawTrainerPic(void)
}
else
{
- trainerPicId = PlayerGenderToFrontTrainerPicId(gLinkPlayers[gUnknown_0203C7B4 ^ BIT_SIDE].gender);
+ trainerPicId = PlayerGenderToFrontTrainerPicId(gLinkPlayers[gRecordedBattleMultiplayerId ^ BIT_SIDE].gender);
}
}
@@ -1544,27 +1544,27 @@ static void RecordedOpponentHandleOneReturnValue_Duplicate(void)
RecordedOpponentBufferExecCompleted();
}
-static void RecordedOpponentHandleCmd37(void)
+static void RecordedOpponentHandleClearUnkVar(void)
{
- gUnknown_02022D0C.field_0 = 0;
+ gUnusedControllerStruct.unk = 0;
RecordedOpponentBufferExecCompleted();
}
-static void RecordedOpponentHandleCmd38(void)
+static void RecordedOpponentHandleSetUnkVar(void)
{
- gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBattler][1];
+ gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
RecordedOpponentBufferExecCompleted();
}
-static void RecordedOpponentHandleCmd39(void)
+static void RecordedOpponentHandleClearUnkFlag(void)
{
- gUnknown_02022D0C.flag_x80 = 0;
+ gUnusedControllerStruct.flag = 0;
RecordedOpponentBufferExecCompleted();
}
-static void RecordedOpponentHandleCmd40(void)
+static void RecordedOpponentHandleToggleUnkFlag(void)
{
- gUnknown_02022D0C.flag_x80 ^= 1;
+ gUnusedControllerStruct.flag ^= 1;
RecordedOpponentBufferExecCompleted();
}
diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c
index 72af27d5e..86e4f8809 100644
--- a/src/battle_controller_recorded_player.c
+++ b/src/battle_controller_recorded_player.c
@@ -65,10 +65,10 @@ static void RecordedPlayerHandleTwoReturnValues(void);
static void RecordedPlayerHandleChosenMonReturnValue(void);
static void RecordedPlayerHandleOneReturnValue(void);
static void RecordedPlayerHandleOneReturnValue_Duplicate(void);
-static void RecordedPlayerHandleCmd37(void);
-static void RecordedPlayerHandleCmd38(void);
-static void RecordedPlayerHandleCmd39(void);
-static void RecordedPlayerHandleCmd40(void);
+static void RecordedPlayerHandleClearUnkVar(void);
+static void RecordedPlayerHandleSetUnkVar(void);
+static void RecordedPlayerHandleClearUnkFlag(void);
+static void RecordedPlayerHandleToggleUnkFlag(void);
static void RecordedPlayerHandleHitAnimation(void);
static void RecordedPlayerHandleCmd42(void);
static void RecordedPlayerHandlePlaySE(void);
@@ -99,63 +99,63 @@ static void sub_818CDF4(void);
static void (*const sRecordedPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
{
- RecordedPlayerHandleGetMonData,
- RecordedPlayerHandleGetRawMonData,
- RecordedPlayerHandleSetMonData,
- RecordedPlayerHandleSetRawMonData,
- RecordedPlayerHandleLoadMonSprite,
- RecordedPlayerHandleSwitchInAnim,
- RecordedPlayerHandleReturnMonToBall,
- RecordedPlayerHandleDrawTrainerPic,
- RecordedPlayerHandleTrainerSlide,
- RecordedPlayerHandleTrainerSlideBack,
- RecordedPlayerHandleFaintAnimation,
- RecordedPlayerHandlePaletteFade,
- RecordedPlayerHandleSuccessBallThrowAnim,
- RecordedPlayerHandleBallThrowAnim,
- RecordedPlayerHandlePause,
- RecordedPlayerHandleMoveAnimation,
- RecordedPlayerHandlePrintString,
- RecordedPlayerHandlePrintSelectionString,
- RecordedPlayerHandleChooseAction,
- RecordedPlayerHandleUnknownYesNoBox,
- RecordedPlayerHandleChooseMove,
- RecordedPlayerHandleChooseItem,
- RecordedPlayerHandleChoosePokemon,
- RecordedPlayerHandleCmd23,
- RecordedPlayerHandleHealthBarUpdate,
- RecordedPlayerHandleExpUpdate,
- RecordedPlayerHandleStatusIconUpdate,
- RecordedPlayerHandleStatusAnimation,
- RecordedPlayerHandleStatusXor,
- RecordedPlayerHandleDataTransfer,
- RecordedPlayerHandleDMA3Transfer,
- RecordedPlayerHandlePlayBGM,
- RecordedPlayerHandleCmd32,
- RecordedPlayerHandleTwoReturnValues,
- RecordedPlayerHandleChosenMonReturnValue,
- RecordedPlayerHandleOneReturnValue,
- RecordedPlayerHandleOneReturnValue_Duplicate,
- RecordedPlayerHandleCmd37,
- RecordedPlayerHandleCmd38,
- RecordedPlayerHandleCmd39,
- RecordedPlayerHandleCmd40,
- RecordedPlayerHandleHitAnimation,
- RecordedPlayerHandleCmd42,
- RecordedPlayerHandlePlaySE,
- RecordedPlayerHandlePlayFanfareOrBGM,
- RecordedPlayerHandleFaintingCry,
- RecordedPlayerHandleIntroSlide,
- RecordedPlayerHandleIntroTrainerBallThrow,
- RecordedPlayerHandleDrawPartyStatusSummary,
- RecordedPlayerHandleHidePartyStatusSummary,
- RecordedPlayerHandleEndBounceEffect,
- RecordedPlayerHandleSpriteInvisibility,
- RecordedPlayerHandleBattleAnimation,
- RecordedPlayerHandleLinkStandbyMsg,
- RecordedPlayerHandleResetActionMoveSelection,
- RecordedPlayerHandleCmd55,
- RecordedPlayerCmdEnd
+ [CONTROLLER_GETMONDATA] = RecordedPlayerHandleGetMonData,
+ [CONTROLLER_GETRAWMONDATA] = RecordedPlayerHandleGetRawMonData,
+ [CONTROLLER_SETMONDATA] = RecordedPlayerHandleSetMonData,
+ [CONTROLLER_SETRAWMONDATA] = RecordedPlayerHandleSetRawMonData,
+ [CONTROLLER_LOADMONSPRITE] = RecordedPlayerHandleLoadMonSprite,
+ [CONTROLLER_SWITCHINANIM] = RecordedPlayerHandleSwitchInAnim,
+ [CONTROLLER_RETURNMONTOBALL] = RecordedPlayerHandleReturnMonToBall,
+ [CONTROLLER_DRAWTRAINERPIC] = RecordedPlayerHandleDrawTrainerPic,
+ [CONTROLLER_TRAINERSLIDE] = RecordedPlayerHandleTrainerSlide,
+ [CONTROLLER_TRAINERSLIDEBACK] = RecordedPlayerHandleTrainerSlideBack,
+ [CONTROLLER_FAINTANIMATION] = RecordedPlayerHandleFaintAnimation,
+ [CONTROLLER_PALETTEFADE] = RecordedPlayerHandlePaletteFade,
+ [CONTROLLER_SUCCESSBALLTHROWANIM] = RecordedPlayerHandleSuccessBallThrowAnim,
+ [CONTROLLER_BALLTHROWANIM] = RecordedPlayerHandleBallThrowAnim,
+ [CONTROLLER_PAUSE] = RecordedPlayerHandlePause,
+ [CONTROLLER_MOVEANIMATION] = RecordedPlayerHandleMoveAnimation,
+ [CONTROLLER_PRINTSTRING] = RecordedPlayerHandlePrintString,
+ [CONTROLLER_PRINTSTRINGPLAYERONLY] = RecordedPlayerHandlePrintSelectionString,
+ [CONTROLLER_CHOOSEACTION] = RecordedPlayerHandleChooseAction,
+ [CONTROLLER_UNKNOWNYESNOBOX] = RecordedPlayerHandleUnknownYesNoBox,
+ [CONTROLLER_CHOOSEMOVE] = RecordedPlayerHandleChooseMove,
+ [CONTROLLER_OPENBAG] = RecordedPlayerHandleChooseItem,
+ [CONTROLLER_CHOOSEPOKEMON] = RecordedPlayerHandleChoosePokemon,
+ [CONTROLLER_23] = RecordedPlayerHandleCmd23,
+ [CONTROLLER_HEALTHBARUPDATE] = RecordedPlayerHandleHealthBarUpdate,
+ [CONTROLLER_EXPUPDATE] = RecordedPlayerHandleExpUpdate,
+ [CONTROLLER_STATUSICONUPDATE] = RecordedPlayerHandleStatusIconUpdate,
+ [CONTROLLER_STATUSANIMATION] = RecordedPlayerHandleStatusAnimation,
+ [CONTROLLER_STATUSXOR] = RecordedPlayerHandleStatusXor,
+ [CONTROLLER_DATATRANSFER] = RecordedPlayerHandleDataTransfer,
+ [CONTROLLER_DMA3TRANSFER] = RecordedPlayerHandleDMA3Transfer,
+ [CONTROLLER_PLAYBGM] = RecordedPlayerHandlePlayBGM,
+ [CONTROLLER_32] = RecordedPlayerHandleCmd32,
+ [CONTROLLER_TWORETURNVALUES] = RecordedPlayerHandleTwoReturnValues,
+ [CONTROLLER_CHOSENMONRETURNVALUE] = RecordedPlayerHandleChosenMonReturnValue,
+ [CONTROLLER_ONERETURNVALUE] = RecordedPlayerHandleOneReturnValue,
+ [CONTROLLER_ONERETURNVALUE_DUPLICATE] = RecordedPlayerHandleOneReturnValue_Duplicate,
+ [CONTROLLER_CLEARUNKVAR] = RecordedPlayerHandleClearUnkVar,
+ [CONTROLLER_SETUNKVAR] = RecordedPlayerHandleSetUnkVar,
+ [CONTROLLER_CLEARUNKFLAG] = RecordedPlayerHandleClearUnkFlag,
+ [CONTROLLER_TOGGLEUNKFLAG] = RecordedPlayerHandleToggleUnkFlag,
+ [CONTROLLER_HITANIMATION] = RecordedPlayerHandleHitAnimation,
+ [CONTROLLER_42] = RecordedPlayerHandleCmd42,
+ [CONTROLLER_PLAYSE] = RecordedPlayerHandlePlaySE,
+ [CONTROLLER_PLAYFANFAREORBGM] = RecordedPlayerHandlePlayFanfareOrBGM,
+ [CONTROLLER_FAINTINGCRY] = RecordedPlayerHandleFaintingCry,
+ [CONTROLLER_INTROSLIDE] = RecordedPlayerHandleIntroSlide,
+ [CONTROLLER_INTROTRAINERBALLTHROW] = RecordedPlayerHandleIntroTrainerBallThrow,
+ [CONTROLLER_DRAWPARTYSTATUSSUMMARY] = RecordedPlayerHandleDrawPartyStatusSummary,
+ [CONTROLLER_HIDEPARTYSTATUSSUMMARY] = RecordedPlayerHandleHidePartyStatusSummary,
+ [CONTROLLER_ENDBOUNCE] = RecordedPlayerHandleEndBounceEffect,
+ [CONTROLLER_SPRITEINVISIBILITY] = RecordedPlayerHandleSpriteInvisibility,
+ [CONTROLLER_BATTLEANIMATION] = RecordedPlayerHandleBattleAnimation,
+ [CONTROLLER_LINKSTANDBYMSG] = RecordedPlayerHandleLinkStandbyMsg,
+ [CONTROLLER_RESETACTIONMOVESELECTION] = RecordedPlayerHandleResetActionMoveSelection,
+ [CONTROLLER_55] = RecordedPlayerHandleCmd55,
+ [CONTROLLER_TERMINATOR_NOP] = RecordedPlayerCmdEnd
};
static void nullsub_120(void)
@@ -1187,12 +1187,12 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
s16 xPos, yPos;
u32 trainerPicId;
- if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
trainerPicId = GetActiveBattlerLinkPlayerGender();
else
- trainerPicId = gLinkPlayers[gUnknown_0203C7B4].gender;
+ trainerPicId = gLinkPlayers[gRecordedBattleMultiplayerId].gender;
}
else
{
@@ -1561,27 +1561,27 @@ static void RecordedPlayerHandleOneReturnValue_Duplicate(void)
RecordedPlayerBufferExecCompleted();
}
-static void RecordedPlayerHandleCmd37(void)
+static void RecordedPlayerHandleClearUnkVar(void)
{
- gUnknown_02022D0C.field_0 = 0;
+ gUnusedControllerStruct.unk = 0;
RecordedPlayerBufferExecCompleted();
}
-static void RecordedPlayerHandleCmd38(void)
+static void RecordedPlayerHandleSetUnkVar(void)
{
- gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBattler][1];
+ gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
RecordedPlayerBufferExecCompleted();
}
-static void RecordedPlayerHandleCmd39(void)
+static void RecordedPlayerHandleClearUnkFlag(void)
{
- gUnknown_02022D0C.flag_x80 = 0;
+ gUnusedControllerStruct.flag = 0;
RecordedPlayerBufferExecCompleted();
}
-static void RecordedPlayerHandleCmd40(void)
+static void RecordedPlayerHandleToggleUnkFlag(void)
{
- gUnknown_02022D0C.flag_x80 ^= 1;
+ gUnusedControllerStruct.flag ^= 1;
RecordedPlayerBufferExecCompleted();
}
@@ -1666,7 +1666,7 @@ static void RecordedPlayerHandleIntroTrainerBallThrow(void)
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
paletteNum = AllocSpritePalette(0xD6F9);
- if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender;
else
trainerPicId = gSaveBlock2Ptr->playerGender;
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index 9cb427e12..b5a8b1bb6 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -62,10 +62,10 @@ static void SafariHandleTwoReturnValues(void);
static void SafariHandleChosenMonReturnValue(void);
static void SafariHandleOneReturnValue(void);
static void SafariHandleOneReturnValue_Duplicate(void);
-static void SafariHandleCmd37(void);
-static void SafariHandleCmd38(void);
-static void SafariHandleCmd39(void);
-static void SafariHandleCmd40(void);
+static void SafariHandleClearUnkVar(void);
+static void SafariHandleSetUnkVar(void);
+static void SafariHandleClearUnkFlag(void);
+static void SafariHandleToggleUnkFlag(void);
static void SafariHandleHitAnimation(void);
static void SafariHandleCmd42(void);
static void SafariHandlePlaySE(void);
@@ -89,63 +89,63 @@ static void CompleteWhenChosePokeblock(void);
static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
{
- SafariHandleGetMonData,
- SafariHandleGetRawMonData,
- SafariHandleSetMonData,
- SafariHandleSetRawMonData,
- SafariHandleLoadMonSprite,
- SafariHandleSwitchInAnim,
- SafariHandleReturnMonToBall,
- SafariHandleDrawTrainerPic,
- SafariHandleTrainerSlide,
- SafariHandleTrainerSlideBack,
- SafariHandleFaintAnimation,
- SafariHandlePaletteFade,
- SafariHandleSuccessBallThrowAnim,
- SafariHandleBallThrowAnim,
- SafariHandlePause,
- SafariHandleMoveAnimation,
- SafariHandlePrintString,
- SafariHandlePrintSelectionString,
- SafariHandleChooseAction,
- SafariHandleUnknownYesNoBox,
- SafariHandleChooseMove,
- SafariHandleChooseItem,
- SafariHandleChoosePokemon,
- SafariHandleCmd23,
- SafariHandleHealthBarUpdate,
- SafariHandleExpUpdate,
- SafariHandleStatusIconUpdate,
- SafariHandleStatusAnimation,
- SafariHandleStatusXor,
- SafariHandleDataTransfer,
- SafariHandleDMA3Transfer,
- SafariHandlePlayBGM,
- SafariHandleCmd32,
- SafariHandleTwoReturnValues,
- SafariHandleChosenMonReturnValue,
- SafariHandleOneReturnValue,
- SafariHandleOneReturnValue_Duplicate,
- SafariHandleCmd37,
- SafariHandleCmd38,
- SafariHandleCmd39,
- SafariHandleCmd40,
- SafariHandleHitAnimation,
- SafariHandleCmd42,
- SafariHandlePlaySE,
- SafariHandlePlayFanfareOrBGM,
- SafariHandleFaintingCry,
- SafariHandleIntroSlide,
- SafariHandleIntroTrainerBallThrow,
- SafariHandleDrawPartyStatusSummary,
- SafariHandleHidePartyStatusSummary,
- SafariHandleEndBounceEffect,
- SafariHandleSpriteInvisibility,
- SafariHandleBattleAnimation,
- SafariHandleLinkStandbyMsg,
- SafariHandleResetActionMoveSelection,
- SafariHandleCmd55,
- SafariCmdEnd
+ [CONTROLLER_GETMONDATA] = SafariHandleGetMonData,
+ [CONTROLLER_GETRAWMONDATA] = SafariHandleGetRawMonData,
+ [CONTROLLER_SETMONDATA] = SafariHandleSetMonData,
+ [CONTROLLER_SETRAWMONDATA] = SafariHandleSetRawMonData,
+ [CONTROLLER_LOADMONSPRITE] = SafariHandleLoadMonSprite,
+ [CONTROLLER_SWITCHINANIM] = SafariHandleSwitchInAnim,
+ [CONTROLLER_RETURNMONTOBALL] = SafariHandleReturnMonToBall,
+ [CONTROLLER_DRAWTRAINERPIC] = SafariHandleDrawTrainerPic,
+ [CONTROLLER_TRAINERSLIDE] = SafariHandleTrainerSlide,
+ [CONTROLLER_TRAINERSLIDEBACK] = SafariHandleTrainerSlideBack,
+ [CONTROLLER_FAINTANIMATION] = SafariHandleFaintAnimation,
+ [CONTROLLER_PALETTEFADE] = SafariHandlePaletteFade,
+ [CONTROLLER_SUCCESSBALLTHROWANIM] = SafariHandleSuccessBallThrowAnim,
+ [CONTROLLER_BALLTHROWANIM] = SafariHandleBallThrowAnim,
+ [CONTROLLER_PAUSE] = SafariHandlePause,
+ [CONTROLLER_MOVEANIMATION] = SafariHandleMoveAnimation,
+ [CONTROLLER_PRINTSTRING] = SafariHandlePrintString,
+ [CONTROLLER_PRINTSTRINGPLAYERONLY] = SafariHandlePrintSelectionString,
+ [CONTROLLER_CHOOSEACTION] = SafariHandleChooseAction,
+ [CONTROLLER_UNKNOWNYESNOBOX] = SafariHandleUnknownYesNoBox,
+ [CONTROLLER_CHOOSEMOVE] = SafariHandleChooseMove,
+ [CONTROLLER_OPENBAG] = SafariHandleChooseItem,
+ [CONTROLLER_CHOOSEPOKEMON] = SafariHandleChoosePokemon,
+ [CONTROLLER_23] = SafariHandleCmd23,
+ [CONTROLLER_HEALTHBARUPDATE] = SafariHandleHealthBarUpdate,
+ [CONTROLLER_EXPUPDATE] = SafariHandleExpUpdate,
+ [CONTROLLER_STATUSICONUPDATE] = SafariHandleStatusIconUpdate,
+ [CONTROLLER_STATUSANIMATION] = SafariHandleStatusAnimation,
+ [CONTROLLER_STATUSXOR] = SafariHandleStatusXor,
+ [CONTROLLER_DATATRANSFER] = SafariHandleDataTransfer,
+ [CONTROLLER_DMA3TRANSFER] = SafariHandleDMA3Transfer,
+ [CONTROLLER_PLAYBGM] = SafariHandlePlayBGM,
+ [CONTROLLER_32] = SafariHandleCmd32,
+ [CONTROLLER_TWORETURNVALUES] = SafariHandleTwoReturnValues,
+ [CONTROLLER_CHOSENMONRETURNVALUE] = SafariHandleChosenMonReturnValue,
+ [CONTROLLER_ONERETURNVALUE] = SafariHandleOneReturnValue,
+ [CONTROLLER_ONERETURNVALUE_DUPLICATE] = SafariHandleOneReturnValue_Duplicate,
+ [CONTROLLER_CLEARUNKVAR] = SafariHandleClearUnkVar,
+ [CONTROLLER_SETUNKVAR] = SafariHandleSetUnkVar,
+ [CONTROLLER_CLEARUNKFLAG] = SafariHandleClearUnkFlag,
+ [CONTROLLER_TOGGLEUNKFLAG] = SafariHandleToggleUnkFlag,
+ [CONTROLLER_HITANIMATION] = SafariHandleHitAnimation,
+ [CONTROLLER_42] = SafariHandleCmd42,
+ [CONTROLLER_PLAYSE] = SafariHandlePlaySE,
+ [CONTROLLER_PLAYFANFAREORBGM] = SafariHandlePlayFanfareOrBGM,
+ [CONTROLLER_FAINTINGCRY] = SafariHandleFaintingCry,
+ [CONTROLLER_INTROSLIDE] = SafariHandleIntroSlide,
+ [CONTROLLER_INTROTRAINERBALLTHROW] = SafariHandleIntroTrainerBallThrow,
+ [CONTROLLER_DRAWPARTYSTATUSSUMMARY] = SafariHandleDrawPartyStatusSummary,
+ [CONTROLLER_HIDEPARTYSTATUSSUMMARY] = SafariHandleHidePartyStatusSummary,
+ [CONTROLLER_ENDBOUNCE] = SafariHandleEndBounceEffect,
+ [CONTROLLER_SPRITEINVISIBILITY] = SafariHandleSpriteInvisibility,
+ [CONTROLLER_BATTLEANIMATION] = SafariHandleBattleAnimation,
+ [CONTROLLER_LINKSTANDBYMSG] = SafariHandleLinkStandbyMsg,
+ [CONTROLLER_RESETACTIONMOVESELECTION] = SafariHandleResetActionMoveSelection,
+ [CONTROLLER_55] = SafariHandleCmd55,
+ [CONTROLLER_TERMINATOR_NOP] = SafariCmdEnd
};
static void SpriteCB_Null4(void)
@@ -553,22 +553,22 @@ static void SafariHandleOneReturnValue_Duplicate(void)
SafariBufferExecCompleted();
}
-static void SafariHandleCmd37(void)
+static void SafariHandleClearUnkVar(void)
{
SafariBufferExecCompleted();
}
-static void SafariHandleCmd38(void)
+static void SafariHandleSetUnkVar(void)
{
SafariBufferExecCompleted();
}
-static void SafariHandleCmd39(void)
+static void SafariHandleClearUnkFlag(void)
{
SafariBufferExecCompleted();
}
-static void SafariHandleCmd40(void)
+static void SafariHandleToggleUnkFlag(void)
{
SafariBufferExecCompleted();
}
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index aa50bc159..83a977073 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -70,10 +70,10 @@ static void WallyHandleTwoReturnValues(void);
static void WallyHandleChosenMonReturnValue(void);
static void WallyHandleOneReturnValue(void);
static void WallyHandleOneReturnValue_Duplicate(void);
-static void WallyHandleCmd37(void);
-static void WallyHandleCmd38(void);
-static void WallyHandleCmd39(void);
-static void WallyHandleCmd40(void);
+static void WallyHandleClearUnkVar(void);
+static void WallyHandleSetUnkVar(void);
+static void WallyHandleClearUnkFlag(void);
+static void WallyHandleToggleUnkFlag(void);
static void WallyHandleHitAnimation(void);
static void WallyHandleCmd42(void);
static void WallyHandlePlaySE(void);
@@ -102,63 +102,63 @@ static void sub_816AC04(u8 taskId);
static void (*const sWallyBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
{
- WallyHandleGetMonData,
- WallyHandleGetRawMonData,
- WallyHandleSetMonData,
- WallyHandleSetRawMonData,
- WallyHandleLoadMonSprite,
- WallyHandleSwitchInAnim,
- WallyHandleReturnMonToBall,
- WallyHandleDrawTrainerPic,
- WallyHandleTrainerSlide,
- WallyHandleTrainerSlideBack,
- WallyHandleFaintAnimation,
- WallyHandlePaletteFade,
- WallyHandleSuccessBallThrowAnim,
- WallyHandleBallThrowAnim,
- WallyHandlePause,
- WallyHandleMoveAnimation,
- WallyHandlePrintString,
- WallyHandlePrintSelectionString,
- WallyHandleChooseAction,
- WallyHandleUnknownYesNoBox,
- WallyHandleChooseMove,
- WallyHandleChooseItem,
- WallyHandleChoosePokemon,
- WallyHandleCmd23,
- WallyHandleHealthBarUpdate,
- WallyHandleExpUpdate,
- WallyHandleStatusIconUpdate,
- WallyHandleStatusAnimation,
- WallyHandleStatusXor,
- WallyHandleDataTransfer,
- WallyHandleDMA3Transfer,
- WallyHandlePlayBGM,
- WallyHandleCmd32,
- WallyHandleTwoReturnValues,
- WallyHandleChosenMonReturnValue,
- WallyHandleOneReturnValue,
- WallyHandleOneReturnValue_Duplicate,
- WallyHandleCmd37,
- WallyHandleCmd38,
- WallyHandleCmd39,
- WallyHandleCmd40,
- WallyHandleHitAnimation,
- WallyHandleCmd42,
- WallyHandlePlaySE,
- WallyHandlePlayFanfareOrBGM,
- WallyHandleFaintingCry,
- WallyHandleIntroSlide,
- WallyHandleIntroTrainerBallThrow,
- WallyHandleDrawPartyStatusSummary,
- WallyHandleHidePartyStatusSummary,
- WallyHandleEndBounceEffect,
- WallyHandleSpriteInvisibility,
- WallyHandleBattleAnimation,
- WallyHandleLinkStandbyMsg,
- WallyHandleResetActionMoveSelection,
- WallyHandleCmd55,
- WallyCmdEnd
+ [CONTROLLER_GETMONDATA] = WallyHandleGetMonData,
+ [CONTROLLER_GETRAWMONDATA] = WallyHandleGetRawMonData,
+ [CONTROLLER_SETMONDATA] = WallyHandleSetMonData,
+ [CONTROLLER_SETRAWMONDATA] = WallyHandleSetRawMonData,
+ [CONTROLLER_LOADMONSPRITE] = WallyHandleLoadMonSprite,
+ [CONTROLLER_SWITCHINANIM] = WallyHandleSwitchInAnim,
+ [CONTROLLER_RETURNMONTOBALL] = WallyHandleReturnMonToBall,
+ [CONTROLLER_DRAWTRAINERPIC] = WallyHandleDrawTrainerPic,
+ [CONTROLLER_TRAINERSLIDE] = WallyHandleTrainerSlide,
+ [CONTROLLER_TRAINERSLIDEBACK] = WallyHandleTrainerSlideBack,
+ [CONTROLLER_FAINTANIMATION] = WallyHandleFaintAnimation,
+ [CONTROLLER_PALETTEFADE] = WallyHandlePaletteFade,
+ [CONTROLLER_SUCCESSBALLTHROWANIM] = WallyHandleSuccessBallThrowAnim,
+ [CONTROLLER_BALLTHROWANIM] = WallyHandleBallThrowAnim,
+ [CONTROLLER_PAUSE] = WallyHandlePause,
+ [CONTROLLER_MOVEANIMATION] = WallyHandleMoveAnimation,
+ [CONTROLLER_PRINTSTRING] = WallyHandlePrintString,
+ [CONTROLLER_PRINTSTRINGPLAYERONLY] = WallyHandlePrintSelectionString,
+ [CONTROLLER_CHOOSEACTION] = WallyHandleChooseAction,
+ [CONTROLLER_UNKNOWNYESNOBOX] = WallyHandleUnknownYesNoBox,
+ [CONTROLLER_CHOOSEMOVE] = WallyHandleChooseMove,
+ [CONTROLLER_OPENBAG] = WallyHandleChooseItem,
+ [CONTROLLER_CHOOSEPOKEMON] = WallyHandleChoosePokemon,
+ [CONTROLLER_23] = WallyHandleCmd23,
+ [CONTROLLER_HEALTHBARUPDATE] = WallyHandleHealthBarUpdate,
+ [CONTROLLER_EXPUPDATE] = WallyHandleExpUpdate,
+ [CONTROLLER_STATUSICONUPDATE] = WallyHandleStatusIconUpdate,
+ [CONTROLLER_STATUSANIMATION] = WallyHandleStatusAnimation,
+ [CONTROLLER_STATUSXOR] = WallyHandleStatusXor,
+ [CONTROLLER_DATATRANSFER] = WallyHandleDataTransfer,
+ [CONTROLLER_DMA3TRANSFER] = WallyHandleDMA3Transfer,
+ [CONTROLLER_PLAYBGM] = WallyHandlePlayBGM,
+ [CONTROLLER_32] = WallyHandleCmd32,
+ [CONTROLLER_TWORETURNVALUES] = WallyHandleTwoReturnValues,
+ [CONTROLLER_CHOSENMONRETURNVALUE] = WallyHandleChosenMonReturnValue,
+ [CONTROLLER_ONERETURNVALUE] = WallyHandleOneReturnValue,
+ [CONTROLLER_ONERETURNVALUE_DUPLICATE] = WallyHandleOneReturnValue_Duplicate,
+ [CONTROLLER_CLEARUNKVAR] = WallyHandleClearUnkVar,
+ [CONTROLLER_SETUNKVAR] = WallyHandleSetUnkVar,
+ [CONTROLLER_CLEARUNKFLAG] = WallyHandleClearUnkFlag,
+ [CONTROLLER_TOGGLEUNKFLAG] = WallyHandleToggleUnkFlag,
+ [CONTROLLER_HITANIMATION] = WallyHandleHitAnimation,
+ [CONTROLLER_42] = WallyHandleCmd42,
+ [CONTROLLER_PLAYSE] = WallyHandlePlaySE,
+ [CONTROLLER_PLAYFANFAREORBGM] = WallyHandlePlayFanfareOrBGM,
+ [CONTROLLER_FAINTINGCRY] = WallyHandleFaintingCry,
+ [CONTROLLER_INTROSLIDE] = WallyHandleIntroSlide,
+ [CONTROLLER_INTROTRAINERBALLTHROW] = WallyHandleIntroTrainerBallThrow,
+ [CONTROLLER_DRAWPARTYSTATUSSUMMARY] = WallyHandleDrawPartyStatusSummary,
+ [CONTROLLER_HIDEPARTYSTATUSSUMMARY] = WallyHandleHidePartyStatusSummary,
+ [CONTROLLER_ENDBOUNCE] = WallyHandleEndBounceEffect,
+ [CONTROLLER_SPRITEINVISIBILITY] = WallyHandleSpriteInvisibility,
+ [CONTROLLER_BATTLEANIMATION] = WallyHandleBattleAnimation,
+ [CONTROLLER_LINKSTANDBYMSG] = WallyHandleLinkStandbyMsg,
+ [CONTROLLER_RESETACTIONMOVESELECTION] = WallyHandleResetActionMoveSelection,
+ [CONTROLLER_55] = WallyHandleCmd55,
+ [CONTROLLER_TERMINATOR_NOP] = WallyCmdEnd
};
static void SpriteCB_Null7(void)
@@ -1346,22 +1346,22 @@ static void WallyHandleOneReturnValue_Duplicate(void)
WallyBufferExecCompleted();
}
-static void WallyHandleCmd37(void)
+static void WallyHandleClearUnkVar(void)
{
WallyBufferExecCompleted();
}
-static void WallyHandleCmd38(void)
+static void WallyHandleSetUnkVar(void)
{
WallyBufferExecCompleted();
}
-static void WallyHandleCmd39(void)
+static void WallyHandleClearUnkFlag(void)
{
WallyBufferExecCompleted();
}
-static void WallyHandleCmd40(void)
+static void WallyHandleToggleUnkFlag(void)
{
WallyBufferExecCompleted();
}
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index 3ebc5d3bd..20e638777 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -17,7 +17,7 @@
static EWRAM_DATA u8 sLinkSendTaskId = 0;
static EWRAM_DATA u8 sLinkReceiveTaskId = 0;
static EWRAM_DATA u8 sUnknown_02022D0A = 0;
-EWRAM_DATA struct UnusedControllerStruct gUnknown_02022D0C = {};
+EWRAM_DATA struct UnusedControllerStruct gUnusedControllerStruct = {}; // Debug? Unused code that writes to it, never read
static EWRAM_DATA u8 sBattleBuffersTransferData[0x100] = {};
// this file's funcionts
@@ -64,7 +64,7 @@ void SetUpBattleVarsAndBirchZigzagoon(void)
if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
{
ZeroEnemyPartyMons();
- CreateMon(&gEnemyParty[0], SPECIES_ZIGZAGOON, 2, 32, 0, 0, OT_ID_PLAYER_ID, 0);
+ CreateMon(&gEnemyParty[0], SPECIES_ZIGZAGOON, 2, USE_RANDOM_IVS, 0, 0, OT_ID_PLAYER_ID, 0);
i = 0;
SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &i);
}
@@ -174,9 +174,9 @@ static void InitSinglePlayerBtlControllers(void)
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
{
- if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
{
- if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_IS_MASTER)
{
gBattleMainFunc = BeginBattleIntro;
@@ -259,9 +259,9 @@ static void InitSinglePlayerBtlControllers(void)
}
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- u8 var; // multiplayer Id in a recorded battle?
+ u8 multiplayerId;
- for (var = gUnknown_0203C7B4, i = 0; i < MAX_BATTLERS_COUNT; i++)
+ for (multiplayerId = gRecordedBattleMultiplayerId, i = 0; i < MAX_BATTLERS_COUNT; i++)
{
switch (gLinkPlayers[i].id)
{
@@ -275,7 +275,7 @@ static void InitSinglePlayerBtlControllers(void)
break;
}
- if (i == var)
+ if (i == multiplayerId)
{
gBattlerControllerFuncs[gLinkPlayers[i].id] = SetControllerToRecordedPlayer;
switch (gLinkPlayers[i].id)
@@ -292,8 +292,8 @@ static void InitSinglePlayerBtlControllers(void)
break;
}
}
- else if ((!(gLinkPlayers[i].id & 1) && !(gLinkPlayers[var].id & 1))
- || ((gLinkPlayers[i].id & 1) && (gLinkPlayers[var].id & 1)))
+ else if ((!(gLinkPlayers[i].id & 1) && !(gLinkPlayers[multiplayerId].id & 1))
+ || ((gLinkPlayers[i].id & 1) && (gLinkPlayers[multiplayerId].id & 1)))
{
gBattlerControllerFuncs[gLinkPlayers[i].id] = SetControllerToRecordedPlayer;
switch (gLinkPlayers[i].id)
@@ -337,7 +337,7 @@ static void InitSinglePlayerBtlControllers(void)
gBattlerControllerFuncs[2] = SetControllerToRecordedPlayer;
gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
- if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
{
gBattlerControllerFuncs[1] = SetControllerToRecordedOpponent;
gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
@@ -362,7 +362,7 @@ static void InitSinglePlayerBtlControllers(void)
gBattlerControllerFuncs[3] = SetControllerToRecordedPlayer;
gBattlerPositions[3] = B_POSITION_PLAYER_RIGHT;
- if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
{
gBattlerControllerFuncs[0] = SetControllerToRecordedOpponent;
gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT;
@@ -825,7 +825,7 @@ void sub_8033648(void)
s32 j;
u8 *recvBuffer;
- if (gReceivedRemoteLinkPlayers != 0 && (gBattleTypeFlags & BATTLE_TYPE_20))
+ if (gReceivedRemoteLinkPlayers != 0 && (gBattleTypeFlags & BATTLE_TYPE_LINK_IN_BATTLE))
{
DestroyTask_RfuIdle();
for (i = 0; i < GetLinkPlayerCount(); i++)
@@ -1282,7 +1282,7 @@ void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataPara
{
s32 i;
- sBattleBuffersTransferData[0] = CONTROLLER_31;
+ sBattleBuffersTransferData[0] = CONTROLLER_PLAYBGM;
sBattleBuffersTransferData[1] = songId;
sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
for (i = 0; i < songId; i++) // ????
@@ -1340,37 +1340,37 @@ void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 b)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void BtlController_EmitCmd37(u8 bufferId)
+void BtlController_EmitClearUnkVar(u8 bufferId)
{
- sBattleBuffersTransferData[0] = CONTROLLER_37;
- sBattleBuffersTransferData[1] = CONTROLLER_37;
- sBattleBuffersTransferData[2] = CONTROLLER_37;
- sBattleBuffersTransferData[3] = CONTROLLER_37;
+ sBattleBuffersTransferData[0] = CONTROLLER_CLEARUNKVAR;
+ sBattleBuffersTransferData[1] = CONTROLLER_CLEARUNKVAR;
+ sBattleBuffersTransferData[2] = CONTROLLER_CLEARUNKVAR;
+ sBattleBuffersTransferData[3] = CONTROLLER_CLEARUNKVAR;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void BtlController_EmitCmd38(u8 bufferId, u8 b)
+void BtlController_EmitSetUnkVar(u8 bufferId, u8 b)
{
- sBattleBuffersTransferData[0] = CONTROLLER_38;
+ sBattleBuffersTransferData[0] = CONTROLLER_SETUNKVAR;
sBattleBuffersTransferData[1] = b;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
}
-void BtlController_EmitCmd39(u8 bufferId)
+void BtlController_EmitClearUnkFlag(u8 bufferId)
{
- sBattleBuffersTransferData[0] = CONTROLLER_39;
- sBattleBuffersTransferData[1] = CONTROLLER_39;
- sBattleBuffersTransferData[2] = CONTROLLER_39;
- sBattleBuffersTransferData[3] = CONTROLLER_39;
+ sBattleBuffersTransferData[0] = CONTROLLER_CLEARUNKFLAG;
+ sBattleBuffersTransferData[1] = CONTROLLER_CLEARUNKFLAG;
+ sBattleBuffersTransferData[2] = CONTROLLER_CLEARUNKFLAG;
+ sBattleBuffersTransferData[3] = CONTROLLER_CLEARUNKFLAG;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void BtlController_EmitCmd40(u8 bufferId)
+void BtlController_EmitToggleUnkFlag(u8 bufferId)
{
- sBattleBuffersTransferData[0] = CONTROLLER_40;
- sBattleBuffersTransferData[1] = CONTROLLER_40;
- sBattleBuffersTransferData[2] = CONTROLLER_40;
- sBattleBuffersTransferData[3] = CONTROLLER_40;
+ sBattleBuffersTransferData[0] = CONTROLLER_TOGGLEUNKFLAG;
+ sBattleBuffersTransferData[1] = CONTROLLER_TOGGLEUNKFLAG;
+ sBattleBuffersTransferData[2] = CONTROLLER_TOGGLEUNKFLAG;
+ sBattleBuffersTransferData[3] = CONTROLLER_TOGGLEUNKFLAG;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
@@ -1394,7 +1394,7 @@ void BtlController_EmitCmd42(u8 bufferId)
void BtlController_EmitPlaySE(u8 bufferId, u16 songId)
{
- sBattleBuffersTransferData[0] = CONTROLLER_EFFECTIVENESSSOUND;
+ sBattleBuffersTransferData[0] = CONTROLLER_PLAYSE;
sBattleBuffersTransferData[1] = songId;
sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
sBattleBuffersTransferData[3] = 0;
diff --git a/src/battle_dome.c b/src/battle_dome.c
index 0d1bee8cf..780721768 100644
--- a/src/battle_dome.c
+++ b/src/battle_dome.c
@@ -2875,7 +2875,7 @@ static u8 GetDomeTrainerMonIvs(u16 trainerId)
else if (trainerId <= FRONTIER_TRAINER_TESS) // 200 - 219
fixedIv = 21;
else // 220+ (- 299)
- fixedIv = 31;
+ fixedIv = MAX_PER_STAT_IVS;
return fixedIv;
}
diff --git a/src/battle_factory.c b/src/battle_factory.c
index a2b1d337a..9ba13b0d3 100644
--- a/src/battle_factory.c
+++ b/src/battle_factory.c
@@ -25,8 +25,8 @@ static void InitFactoryChallenge(void);
static void GetBattleFactoryData(void);
static void SetBattleFactoryData(void);
static void SaveFactoryChallenge(void);
-static void nullsub_75(void);
-static void nullsub_123(void);
+static void FactoryDummy1(void);
+static void FactoryDummy2(void);
static void SelectInitialRentalMons(void);
static void SwapRentalMons(void);
static void SetPerformedRentalSwap(void);
@@ -41,8 +41,16 @@ static void RestorePlayerPartyHeldItems(void);
static u16 GetFactoryMonId(u8 lvlMode, u8 challengeNum, bool8 arg2);
static u8 GetMoveBattleStyle(u16 move);
-// Const rom data.
-static const u8 sRequiredMoveCounts[] = {3, 3, 3, 2, 2, 2, 2};
+// Number of moves needed on the team to be considered using a certain battle style
+static const u8 sRequiredMoveCounts[FACTORY_NUM_STYLES - 1] = {
+ [FACTORY_STYLE_PREPARATION - 1] = 3,
+ [FACTORY_STYLE_SLOW_STEADY - 1] = 3,
+ [FACTORY_STYLE_ENDURANCE - 1] = 3,
+ [FACTORY_STYLE_HIGH_RISK - 1] = 2,
+ [FACTORY_STYLE_WEAKENING - 1] = 2,
+ [FACTORY_STYLE_UNPREDICTABLE - 1] = 2,
+ [FACTORY_STYLE_WEATHER - 1] = 2
+};
static const u16 sMoves_TotalPreparation[] =
{
@@ -119,8 +127,8 @@ static void (* const sBattleFactoryFunctions[])(void) =
[BATTLE_FACTORY_FUNC_GET_DATA] = GetBattleFactoryData,
[BATTLE_FACTORY_FUNC_SET_DATA] = SetBattleFactoryData,
[BATTLE_FACTORY_FUNC_SAVE] = SaveFactoryChallenge,
- [BATTLE_FACTORY_FUNC_NULL] = nullsub_75,
- [BATTLE_FACTORY_FUNC_NULL2] = nullsub_123,
+ [BATTLE_FACTORY_FUNC_NULL] = FactoryDummy1,
+ [BATTLE_FACTORY_FUNC_NULL2] = FactoryDummy2,
[BATTLE_FACTORY_FUNC_SELECT_RENT_MONS] = SelectInitialRentalMons,
[BATTLE_FACTORY_FUNC_SWAP_RENT_MONS] = SwapRentalMons,
[BATTLE_FACTORY_FUNC_SET_SWAPPED] = SetPerformedRentalSwap,
@@ -266,12 +274,12 @@ static void SaveFactoryChallenge(void)
SaveGameFrontier();
}
-static void nullsub_75(void)
+static void FactoryDummy1(void)
{
}
-static void nullsub_123(void)
+static void FactoryDummy2(void)
{
}
@@ -376,10 +384,10 @@ static void SetRentalsToOpponentParty(void)
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
{
- gSaveBlock2Ptr->frontier.rentalMons[i + 3].monId = gFrontierTempParty[i];
- gSaveBlock2Ptr->frontier.rentalMons[i + 3].ivs = GetBoxMonData(&gEnemyParty[i].box, MON_DATA_ATK_IV, NULL);
- gSaveBlock2Ptr->frontier.rentalMons[i + 3].personality = GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY, NULL);
- gSaveBlock2Ptr->frontier.rentalMons[i + 3].abilityNum = GetBoxMonData(&gEnemyParty[i].box, MON_DATA_ABILITY_NUM, NULL);
+ 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[gFrontierTempParty[i]].itemTableId]);
}
}
@@ -455,13 +463,13 @@ static void SetPlayerAndOpponentParties(void)
case 2:
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
{
- monId = gSaveBlock2Ptr->frontier.rentalMons[i + 3].monId;
- ivs = gSaveBlock2Ptr->frontier.rentalMons[i + 3].ivs;
+ monId = gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].monId;
+ ivs = gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].ivs;
CreateMon(&gEnemyParty[i],
gFacilityTrainerMons[monId].species,
monLevel,
ivs,
- TRUE, gSaveBlock2Ptr->frontier.rentalMons[i + 3].personality,
+ TRUE, gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].personality,
OT_ID_PLAYER_ID, 0);
count = 0;
@@ -484,7 +492,7 @@ static void SetPlayerAndOpponentParties(void)
for (k = 0; k < MAX_MON_MOVES; k++)
SetMonMoveAvoidReturn(&gEnemyParty[i], gFacilityTrainerMons[monId].moves[k], k);
SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]);
- SetMonData(&gEnemyParty[i], MON_DATA_ABILITY_NUM, &gSaveBlock2Ptr->frontier.rentalMons[i + 3].abilityNum);
+ SetMonData(&gEnemyParty[i], MON_DATA_ABILITY_NUM, &gSaveBlock2Ptr->frontier.rentalMons[i + FRONTIER_PARTY_SIZE].abilityNum);
}
break;
}
@@ -639,7 +647,7 @@ static void GetOpponentBattleStyle(void)
}
}
- gSpecialVar_Result = 0;
+ gSpecialVar_Result = FACTORY_STYLE_NONE;
for (i = 1; i < FACTORY_NUM_STYLES; i++)
{
if (stylePoints[i] >= sRequiredMoveCounts[i - 1])
diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c
index ba1e39006..86e3b0233 100644
--- a/src/battle_factory_screen.c
+++ b/src/battle_factory_screen.c
@@ -25,52 +25,77 @@
#include "util.h"
#include "trainer_pokemon_sprites.h"
#include "starter_choose.h"
+#include "strings.h"
+#include "graphics.h"
#include "constants/battle_frontier.h"
#include "constants/songs.h"
#include "constants/rgb.h"
-// Select_ refers to the first Pokemon selection screen where you choose 3 Pokemon.
-// Swap_ refers to the consecutive selection screen where you can keep your Pokemon or swap one with beaten trainer's.
+// Select_ refers to the first Pokemon selection screen where you choose your initial 3 rental Pokemon.
+// Swap_ refers to the subsequent selection screens where you can swap a Pokemon with one from the beaten trainer
-#define MENU_SUMMARY 0
-#define MENU_RENT 1
-#define MENU_DESELECT 1
-#define MENU_OTHERS 2
-#define MENU_OPTIONS_COUNT 3
+// Note that, generally, "Action" will refer to the immediate actions that can be taken on each screen,
+// i.e. selecting a pokemon or selecting the Cancel button
+// The "Options menu" will refer to the popup menu that shows when some actions have been selected
+
+#define SWAP_PLAYER_SCREEN 0 // The screen where the player selects which of their pokemon to swap away
+#define SWAP_ENEMY_SCREEN 1 // The screen where the player selects which new pokemon from the defeated party to swap for
#define SELECTABLE_MONS_COUNT 6
-#define TAG_PAL_BALL_GREY 0x64
-#define TAG_PAL_BALL_SELECTED 0x65
-#define TAG_PAL_66 0x66
-#define TAG_PAL_67 0x67
+enum {
+ PALTAG_BALL_GRAY = 100,
+ PALTAG_BALL_SELECTED,
+ PALTAG_INTERFACE,
+ PALTAG_MON_PIC_BG,
+};
-#define TAG_TILE_64 0x64
-#define TAG_TILE_65 0x65
-#define TAG_TILE_66 0x66
-#define TAG_TILE_67 0x67
-#define TAG_TILE_68 0x68
-#define TAG_TILE_69 0x69
-#define TAG_TILE_6A 0x6A
-#define TAG_TILE_6B 0x6B
-#define TAG_TILE_6C 0x6C
-#define TAG_TILE_6D 0x6D
+enum {
+ GFXTAG_BALL = 100,
+ GFXTAG_ARROW,
+ GFXTAG_MENU_HIGHLIGHT_LEFT,
+ GFXTAG_MENU_HIGHLIGHT_RIGHT,
+ GFXTAG_ACTION_BOX_LEFT,
+ GFXTAG_ACTION_BOX_RIGHT,
+ GFXTAG_ACTION_HIGHLIGHT_LEFT,
+ GFXTAG_ACTION_HIGHLIGHT_MIDDLE,
+ GFXTAG_ACTION_HIGHLIGHT_RIGHT,
+ GFXTAG_MON_PIC_BG_ANIM,
+};
-struct FactorySelecteableMon
+// Tasks in this file universally use data[0] as a state for switches
+#define tState data[0]
+
+// States for both Select/Swap versions of Task_FadeSpeciesName
+enum {
+ FADESTATE_INIT,
+ FADESTATE_RUN,
+ FADESTATE_DELAY
+};
+
+// Return states for the Select Actions
+enum {
+ SELECT_SUMMARY,
+ SELECT_CONTINUE_CHOOSING,
+ SELECT_CONFIRM_MONS,
+ SELECT_INVALID_MON,
+};
+
+struct FactorySelectableMon
{
u16 monId;
- u16 spriteId;
+ u16 ballSpriteId;
u8 selectedId; // 0 - not selected, 1 - first pokemon, 2 - second pokemon, 3 - third pokemon
struct Pokemon monData;
};
-struct UnkFactoryStruct
+struct FactoryMonPic
{
- u8 field0;
- u8 field1;
+ u8 monSpriteId;
+ u8 bgSpriteId;
};
-struct FactorySelectMonsStruct
+struct FactorySelectScreen
{
u8 menuCursorPos;
u8 menuCursor1SpriteId;
@@ -80,206 +105,201 @@ struct FactorySelectMonsStruct
u8 selectingMonsState;
bool8 fromSummaryScreen;
u8 yesNoCursorPos;
- u8 unused8;
- struct FactorySelecteableMon mons[SELECTABLE_MONS_COUNT];
- struct UnkFactoryStruct unk294[3];
- bool8 unk2A0;
+ u8 unused;
+ struct FactorySelectableMon mons[SELECTABLE_MONS_COUNT];
+ struct FactoryMonPic monPics[FRONTIER_PARTY_SIZE]; // Array so all chosen mons can be shown at once
+ bool8 monPicAnimating;
u8 fadeSpeciesNameTaskId;
- bool8 unk2A2;
- u16 unk2A4;
- bool8 unk2A6;
- u8 unk2A7;
- u8 unk2A8;
- u8 unk2A9;
+ bool8 fadeSpeciesNameActive;
+ u16 speciesNameColorBackup;
+ bool8 fadeSpeciesNameFadeOut;
+ u8 fadeSpeciesNameCoeffDelay;
+ u8 fadeSpeciesNameCoeff;
+ u8 faceSpeciesNameDelay;
};
-// 'Action' refers to the 3 Selectable mons, Cancel, Pknm for swap windows.
-#define ACTIONS_PLAYER_SCREEN 0
-#define ACTIONS_ENEMY_SCREEN 1
-
-struct SwapActionIdAndFunc
+struct SwapScreenAction
{
u8 id;
void (*func)(u8 taskId);
};
-struct FactorySwapMonsStruct
+struct FactorySwapScreen
{
u8 menuCursorPos;
u8 menuCursor1SpriteId;
u8 menuCursor2SpriteId;
u8 cursorPos;
u8 cursorSpriteId;
- u8 ballSpriteIds[3];
- u8 unk8[2][3];
- u8 unkE[2][2];
+ u8 ballSpriteIds[FRONTIER_PARTY_SIZE];
+ u8 pkmnForSwapButtonSpriteIds[2][3]; // For this and sprite ID array below, [0][i] is the button background, [1][i] is the button highlight
+ u8 cancelButtonSpriteIds[2][2];
u8 playerMonId;
u8 enemyMonId;
bool8 inEnemyScreen;
bool8 fromSummaryScreen;
u8 yesNoCursorPos;
u8 actionsCount;
- const struct SwapActionIdAndFunc *actionsData;
- u8 unused1C[4];
+ const struct SwapScreenAction *actionsData;
+ u8 unused[4];
bool8 monSwapped;
u8 fadeSpeciesNameTaskId;
- bool8 unk22;
- u16 unk24;
- bool8 unk26;
- u8 unk27;
- u8 unk28;
- u8 unk29;
- struct UnkFactoryStruct unk2C;
- bool8 unk30;
+ bool8 fadeSpeciesNameActive;
+ u16 speciesNameColorBackup;
+ bool8 fadeSpeciesNameFadeOut;
+ u8 fadeSpeciesNameCoeffDelay;
+ u8 fadeSpeciesNameCoeff;
+ u8 faceSpeciesNameDelay;
+ struct FactoryMonPic monPic;
+ bool8 monPicAnimating;
};
-// This file's functions.
-static void sub_819A44C(struct Sprite *sprite);
+static void SpriteCB_Pokeball(struct Sprite *);
+static void SpriteCB_OpenMonPic(struct Sprite *);
+static void OpenMonPic(u8 *, bool8 *, bool8);
+static void HideMonPic(struct FactoryMonPic, bool8 *);
+static void CloseMonPic(struct FactoryMonPic, bool8 *, bool8);
+static void Task_OpenMonPic(u8);
+static void Task_CloseMonPic(u8);
+
+// Select screen
static void CB2_InitSelectScreen(void);
-static void Select_SetWinRegs(s16 mWin0H, s16 nWin0H, s16 mWin0V, s16 nWin0V);
+static void Select_SetWinRegs(s16, s16, s16, s16);
static void Select_InitMonsData(void);
static void Select_InitAllSprites(void);
-static void Select_ShowSummaryMonSprite(void);
+static void Select_ReshowMonSprite(void);
static void Select_PrintSelectMonString(void);
static void Select_PrintMonSpecies(void);
static void Select_PrintMonCategory(void);
static void Select_PrintRentalPkmnString(void);
static void Select_CopyMonsToPlayerParty(void);
-static void sub_819C4B4(void);
+static void Select_ShowChosenMons(void);
static void Select_ShowYesNoOptions(void);
-static void sub_819C568(void);
+static void Select_HideChosenMons(void);
static void Select_ShowMenuOptions(void);
static void Select_PrintMenuOptions(void);
static void Select_PrintYesNoOptions(void);
-static void Task_SelectFadeSpeciesName(u8 taskId);
-static void sub_819C1D0(u8 taskId);
-static void Task_HandleSelectionScreenChooseMons(u8 taskId);
-static void Task_HandleSelectionScreenMenu(u8 taskId);
-static void CreateFrontierFactorySelectableMons(u8 firstMonId);
-static void CreateTentFactorySelectableMons(u8 firstMonId);
-static void Select_SetBallSpritePaletteNum(u8 id);
-static void sub_819F444(struct UnkFactoryStruct arg0, bool8 *arg1);
-static void sub_819B958(u8 windowId);
-static void sub_819F2B4(u8 *arg0, bool8 *arg1, bool8 swapScreen);
-static void sub_819F3F8(struct UnkFactoryStruct arg0, bool8 *arg1, bool8 swapScreen);
+static void Select_Task_FadeSpeciesName(u8);
+static void Select_Task_OpenChosenMonPics(u8);
+static void Select_Task_HandleChooseMons(u8);
+static void Select_Task_HandleMenu(u8);
+static void CreateFrontierFactorySelectableMons(u8);
+static void CreateSlateportTentSelectableMons(u8);
+static void Select_SetBallSpritePaletteNum(u8);
+static void Select_ErasePopupMenu(u8);
static u8 Select_RunMenuOptionFunc(void);
-static u8 sub_819BC9C(void);
+static u8 Select_DeclineChosenMons(void);
static u8 Select_OptionSummary(void);
static u8 Select_OptionOthers(void);
static u8 Select_OptionRentDeselect(void);
-static bool32 Select_AreSpeciesValid(u16 monId);
+static bool32 Select_AreSpeciesValid(u16);
+
+// Swap screen
+static void CB2_InitSwapScreen(void);
static void Swap_DestroyAllSprites(void);
static void Swap_ShowYesNoOptions(void);
-static void sub_819E8EC(void);
-static void sub_819EAC0(void);
-static void Swap_UpdateYesNoCursorPosition(s8 direction);
-static void Swap_UpdateMenuCursorPosition(s8 direction);
-static void sub_819EA64(u8 windowId);
-static void sub_819D770(u8 taskId);
-static void Task_HandleSwapScreenChooseMons(u8 taskId);
-static void sub_819D588(u8 taskId);
-static void sub_819F7B4(u8 taskId);
-static void Swap_PrintOnInfoWindow(const u8 *str);
+static void Swap_HideActionButtonHighlights(void);
+static void Swap_EraseSpeciesWindow(void);
+static void Swap_UpdateYesNoCursorPosition(s8);
+static void Swap_UpdateMenuCursorPosition(s8);
+static void Swap_ErasePopupMenu(u8);
+static void Swap_Task_ScreenInfoTransitionIn(u8);
+static void Swap_Task_HandleChooseMons(u8);
+static void Swap_Task_ScreenInfoTransitionOut(u8);
+static void Swap_PrintOnInfoWindow(const u8 *);
static void Swap_ShowMenuOptions(void);
static void Swap_PrintMenuOptions(void);
static void Swap_PrintYesNoOptions(void);
static void Swap_PrintMonSpecies(void);
-static void Swap_PrintMonSpecies2(void);
-static void Swap_PrintMonSpecies3(void);
+static void Swap_PrintMonSpeciesAtFade(void);
+static void Swap_PrintMonSpeciesForTransition(void);
static void Swap_PrintMonCategory(void);
static void Swap_InitAllSprites(void);
static void Swap_PrintPkmnSwap(void);
-static void sub_819EADC(void);
-static void sub_819EAF8(void);
-static void CB2_InitSwapScreen(void);
+static void Swap_EraseSpeciesAtFadeWindow(void);
+static void Swap_EraseActionFadeWindow(void);
static void Swap_ShowSummaryMonSprite(void);
-static void Swap_UpdateActionCursorPosition(s8 direction);
-static void Swap_UpdateBallCursorPosition(s8 direction);
-static void Swap_RunMenuOptionFunc(u8 taskId);
-static void sub_819F0CC(u8 taskId);
-static void sub_819F114(u8 taskId);
-static void sub_819F134(u8 taskId);
-static void Swap_RunActionFunc(u8 taskId);
-static void sub_819F69C(u8 taskId);
-static void Task_SwapCantHaveSameMons(u8 taskId);
-static void Swap_ShowMonSprite(void);
+static void Swap_UpdateActionCursorPosition(s8);
+static void Swap_UpdateBallCursorPosition(s8);
+static void Swap_RunMenuOptionFunc(u8);
+static void Swap_OptionSwap(u8);
+static void Swap_OptionSummary(u8);
+static void Swap_OptionRechoose(u8);
+static void Swap_RunActionFunc(u8);
+static void Swap_TaskCantHaveSameMons(u8);
+static void Swap_CreateMonSprite(void);
static void Swap_PrintActionStrings(void);
static void Swap_PrintActionStrings2(void);
-static void Swap_PrintOneActionString(u8 which);
-static void Swap_InitActions(u8 id);
-static void sub_819E838(u8 arg0);
-static bool8 Swap_AlreadyHasSameSpecies(u8 monId);
-static void sub_819F600(struct Sprite *sprite);
-static void Swap_ActionMon(u8 taskId);
-static void Swap_ActionCancel(u8 taskId);
-static void Swap_ActionPkmnForSwap(u8 taskId);
-
-// Ewram variables
+static void Swap_PrintOneActionString(u8);
+static void Swap_InitActions(u8);
+static void Swap_HighlightActionButton(u8);
+static bool8 Swap_AlreadyHasSameSpecies(u8);
+static void Swap_ActionMon(u8);
+static void Swap_ActionCancel(u8);
+static void Swap_ActionPkmnForSwap(u8);
+
static EWRAM_DATA u8 *sSelectMenuTilesetBuffer = NULL;
-static EWRAM_DATA u8 *sSelectMonCardBgTilesetBuffer = NULL;
+static EWRAM_DATA u8 *sSelectMonPicBgTilesetBuffer = NULL;
static EWRAM_DATA u8 *sSelectMenuTilemapBuffer = NULL;
-static EWRAM_DATA u8 *sSelectMonCardBgTilemapBuffer = NULL;
+static EWRAM_DATA u8 *sSelectMonPicBgTilemapBuffer = NULL;
static EWRAM_DATA struct Pokemon *sFactorySelectMons = NULL;
static EWRAM_DATA u8 *sSwapMenuTilesetBuffer = NULL;
-static EWRAM_DATA u8 *sSwapMonCardBgTilesetBuffer = NULL;
+static EWRAM_DATA u8 *sSwapMonPicBgTilesetBuffer = NULL;
static EWRAM_DATA u8 *sSwapMenuTilemapBuffer = NULL;
-static EWRAM_DATA u8 *sSwapMonCardBgTilemapBuffer = NULL;
-
-// IWRAM bss
-static struct FactorySelectMonsStruct *sFactorySelectScreen;
-static void (*sSwap_CurrentTableFunc)(u8 taskId);
-static struct FactorySwapMonsStruct *sFactorySwapScreen;
-
-// IWRAM common
-u8 (*gUnknown_030062E8)(void);
-
-// Const rom data.
-static const u16 gUnknown_0860F13C[] = INCBIN_U16("graphics/unknown/unknown_60F13C.gbapal");
-static const u16 gUnknown_0860F15C[] = INCBIN_U16("graphics/unknown/unknown_60F15C.gbapal");
-static const u16 gUnknown_0860F17C[] = INCBIN_U16("graphics/unknown/unknown_60F17C.gbapal");
-static const u8 gUnknown_0860F1BC[] = INCBIN_U8("graphics/unknown/unknown_60F1BC.4bpp");
-static const u8 gUnknown_0860F3BC[] = INCBIN_U8("graphics/unknown/unknown_60F3BC.4bpp");
-static const u8 gUnknown_0860F43C[] = INCBIN_U8("graphics/unknown/unknown_60F43C.4bpp");
-static const u8 gUnknown_0860F53C[] = INCBIN_U8("graphics/unknown/unknown_60F53C.4bpp");
-static const u8 gUnknown_0860F63C[] = INCBIN_U8("graphics/unknown/unknown_60F63C.4bpp");
-static const u8 gUnknown_0860F6BC[] = INCBIN_U8("graphics/unknown/unknown_60F6BC.4bpp");
-static const u8 gUnknown_0860F7BC[] = INCBIN_U8("graphics/unknown/unknown_60F7BC.4bpp");
-static const u8 gUnknown_0860F83C[] = INCBIN_U8("graphics/unknown/unknown_60F83C.4bpp");
-static const u8 gUnknown_0860F93C[] = INCBIN_U8("graphics/unknown/unknown_60F93C.4bpp");
-static const u8 gUnknown_0860FA3C[] = INCBIN_U8("graphics/unknown/unknown_60FA3C.4bpp");
-static const u8 gUnknown_0861023C[] = INCBIN_U8("graphics/unknown/unknown_61023C.bin");
-static const u8 gUnknown_0861033C[] = INCBIN_U8("graphics/unknown/unknown_61033C.4bpp");
-static const u16 gUnknown_0861039C[] = INCBIN_U16("graphics/unknown/unknown_61039C.gbapal");
-
-static const struct SpriteSheet gUnknown_086103BC[] =
-{
- {gUnknown_0860F3BC, sizeof(gUnknown_0860F3BC), TAG_TILE_65},
- {gUnknown_0860F43C, sizeof(gUnknown_0860F43C), TAG_TILE_66},
- {gUnknown_0860F53C, sizeof(gUnknown_0860F53C), TAG_TILE_67},
- {gUnknown_0860FA3C, sizeof(gUnknown_0860FA3C), TAG_TILE_6D},
+static EWRAM_DATA u8 *sSwapMonPicBgTilemapBuffer = NULL;
+
+static struct FactorySelectScreen *sFactorySelectScreen;
+static void (*sSwap_CurrentOptionFunc)(u8 taskId);
+static struct FactorySwapScreen *sFactorySwapScreen;
+
+u8 (*gFactorySelect_CurrentOptionFunc)(void);
+
+static const u16 sPokeballGray_Pal[] = INCBIN_U16("graphics/battle_frontier/factory_screen/pokeball_gray.gbapal");
+static const u16 sPokeballSelected_Pal[] = INCBIN_U16("graphics/battle_frontier/factory_screen/pokeball_selected.gbapal");
+static const u16 sInterface_Pal[] = INCBIN_U16("graphics/battle_frontier/factory_screen/interface.gbapal"); // Arrow, menu/action highlights, action box, etc
+static const u8 sPokeball_Gfx[] = INCBIN_U8( "graphics/battle_frontier/factory_screen/pokeball.4bpp"); // Unused, gPokeballSelection_Gfx used instead
+static const u8 sArrow_Gfx[] = INCBIN_U8( "graphics/battle_frontier/factory_screen/arrow.4bpp");
+static const u8 sMenuHighlightLeft_Gfx[] = INCBIN_U8( "graphics/battle_frontier/factory_screen/menu_highlight_left.4bpp");
+static const u8 sMenuHighlightRight_Gfx[] = INCBIN_U8( "graphics/battle_frontier/factory_screen/menu_highlight_right.4bpp");
+static const u8 sActionBoxLeft_Gfx[] = INCBIN_U8( "graphics/battle_frontier/factory_screen/action_box_left.4bpp");
+static const u8 sActionBoxRight_Gfx[] = INCBIN_U8( "graphics/battle_frontier/factory_screen/action_box_right.4bpp");
+static const u8 sActionHighlightLeft_Gfx[] = INCBIN_U8( "graphics/battle_frontier/factory_screen/action_highlight_left.4bpp");
+static const u8 sActionHighlightMiddle_Gfx[] = INCBIN_U8( "graphics/battle_frontier/factory_screen/action_highlight_middle.4bpp");
+static const u8 sActionHighlightRight_Gfx[] = INCBIN_U8( "graphics/battle_frontier/factory_screen/action_highlight_right.4bpp");
+static const u8 sMonPicBgAnim_Gfx[] = INCBIN_U8( "graphics/battle_frontier/factory_screen/mon_pic_bg_anim.4bpp");
+static const u8 sMonPicBg_Tilemap[] = INCBIN_U8( "graphics/battle_frontier/factory_screen/mon_pic_bg.bin");
+static const u8 sMonPicBg_Gfx[] = INCBIN_U8( "graphics/battle_frontier/factory_screen/mon_pic_bg.4bpp");
+static const u16 sMonPicBg_Pal[] = INCBIN_U16("graphics/battle_frontier/factory_screen/mon_pic_bg.gbapal");
+
+static const struct SpriteSheet sSelect_SpriteSheets[] =
+{
+ {sArrow_Gfx, sizeof(sArrow_Gfx), GFXTAG_ARROW},
+ {sMenuHighlightLeft_Gfx, sizeof(sMenuHighlightLeft_Gfx), GFXTAG_MENU_HIGHLIGHT_LEFT},
+ {sMenuHighlightRight_Gfx, sizeof(sMenuHighlightRight_Gfx), GFXTAG_MENU_HIGHLIGHT_RIGHT},
+ {sMonPicBgAnim_Gfx, sizeof(sMonPicBgAnim_Gfx), GFXTAG_MON_PIC_BG_ANIM},
{},
};
-static const struct CompressedSpriteSheet gUnknown_086103E4[] =
+static const struct CompressedSpriteSheet sSelect_BallGfx[] =
{
- {gPokeballSelection_Gfx, 0x800, TAG_TILE_64},
+ {gPokeballSelection_Gfx, 0x800, GFXTAG_BALL},
{},
};
-static const struct SpritePalette gUnknown_086103F4[] =
+static const struct SpritePalette sSelect_SpritePalettes[] =
{
- {gUnknown_0860F13C, TAG_PAL_BALL_GREY},
- {gUnknown_0860F15C, TAG_PAL_BALL_SELECTED},
- {gUnknown_0860F17C, TAG_PAL_66},
- {gUnknown_0861039C, TAG_PAL_67},
+ {sPokeballGray_Pal, PALTAG_BALL_GRAY},
+ {sPokeballSelected_Pal, PALTAG_BALL_SELECTED},
+ {sInterface_Pal, PALTAG_INTERFACE},
+ {sMonPicBg_Pal, PALTAG_MON_PIC_BG},
{},
};
u8 static (* const sSelect_MenuOptionFuncs[])(void) =
{
- [MENU_SUMMARY] = Select_OptionSummary,
- [MENU_RENT] /*Or Deselect*/ = Select_OptionRentDeselect,
- [MENU_OTHERS] = Select_OptionOthers
+ Select_OptionSummary,
+ Select_OptionRentDeselect,
+ Select_OptionOthers
};
static const struct BgTemplate sSelect_BgTemplates[] =
@@ -313,9 +333,18 @@ static const struct BgTemplate sSelect_BgTemplates[] =
},
};
+enum {
+ SELECT_WIN_TITLE,
+ SELECT_WIN_SPECIES,
+ SELECT_WIN_INFO,
+ SELECT_WIN_OPTIONS,
+ SELECT_WIN_YES_NO,
+ SELECT_WIN_MON_CATEGORY,
+};
+
static const struct WindowTemplate sSelect_WindowTemplates[] =
{
- {
+ [SELECT_WIN_TITLE] = {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 2,
@@ -324,7 +353,7 @@ static const struct WindowTemplate sSelect_WindowTemplates[] =
.paletteNum = 15,
.baseBlock = 0x0001,
},
- {
+ [SELECT_WIN_SPECIES] = {
.bg = 0,
.tilemapLeft = 19,
.tilemapTop = 2,
@@ -333,7 +362,7 @@ static const struct WindowTemplate sSelect_WindowTemplates[] =
.paletteNum = 14,
.baseBlock = 0x0019,
},
- {
+ [SELECT_WIN_INFO] = {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 15,
@@ -342,7 +371,7 @@ static const struct WindowTemplate sSelect_WindowTemplates[] =
.paletteNum = 15,
.baseBlock = 0x002f,
},
- {
+ [SELECT_WIN_OPTIONS] = {
.bg = 0,
.tilemapLeft = 22,
.tilemapTop = 14,
@@ -351,7 +380,7 @@ static const struct WindowTemplate sSelect_WindowTemplates[] =
.paletteNum = 15,
.baseBlock = 0x006b,
},
- {
+ [SELECT_WIN_YES_NO] = {
.bg = 0,
.tilemapLeft = 22,
.tilemapTop = 14,
@@ -360,7 +389,7 @@ static const struct WindowTemplate sSelect_WindowTemplates[] =
.paletteNum = 15,
.baseBlock = 0x009b,
},
- {
+ [SELECT_WIN_MON_CATEGORY] = {
.bg = 0,
.tilemapLeft = 15,
.tilemapTop = 0,
@@ -372,12 +401,11 @@ static const struct WindowTemplate sSelect_WindowTemplates[] =
DUMMY_WIN_TEMPLATE,
};
-static const u16 gUnknown_0861046C[] = INCBIN_U16("graphics/unknown/unknown_61046C.gbapal");
-
+static const u16 sSelectText_Pal[] = INCBIN_U16("graphics/battle_frontier/factory_screen/text.gbapal");
static const u8 sMenuOptionTextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_TRANSPARENT};
static const u8 sSpeciesNameTextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_RED, TEXT_COLOR_TRANSPARENT};
-static const struct OamData gUnknown_0861047C =
+static const struct OamData sOam_Select_Pokeball =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -394,7 +422,7 @@ static const struct OamData gUnknown_0861047C =
.affineParam = 0,
};
-static const struct OamData gUnknown_08610484 =
+static const struct OamData sOam_Select_Arrow =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -411,7 +439,7 @@ static const struct OamData gUnknown_08610484 =
.affineParam = 0,
};
-static const struct OamData gUnknown_0861048C =
+static const struct OamData sOam_Select_MenuHighlight =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -428,7 +456,7 @@ static const struct OamData gUnknown_0861048C =
.affineParam = 0,
};
-static const struct OamData gUnknown_08610494 =
+static const struct OamData sOam_Select_MonPicBgAnim =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_DOUBLE,
@@ -445,25 +473,25 @@ static const struct OamData gUnknown_08610494 =
.affineParam = 1,
};
-static const union AnimCmd gUnknown_0861049C[] =
+static const union AnimCmd sAnim_Select_Interface[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_086104A4[] =
+static const union AnimCmd sAnim_Select_MonPicBgAnim[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_086104AC[] =
+static const union AnimCmd sAnim_Select_Pokeball_Still[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_086104B4[] =
+static const union AnimCmd sAnim_Select_Pokeball_Moving[] =
{
ANIMCMD_FRAME(16, 4),
ANIMCMD_FRAME(0, 4),
@@ -485,20 +513,20 @@ static const union AnimCmd gUnknown_086104B4[] =
ANIMCMD_END,
};
-static const union AnimCmd * const gUnknown_086104FC[] =
+static const union AnimCmd * const sAnims_Select_Interface[] =
{
- gUnknown_0861049C,
+ sAnim_Select_Interface,
};
-static const union AnimCmd * const gUnknown_08610500[] =
+static const union AnimCmd * const sAnims_Select_MonPicBgAnim[] =
{
- gUnknown_086104A4,
+ sAnim_Select_MonPicBgAnim,
};
-static const union AnimCmd * const gUnknown_08610504[] =
+static const union AnimCmd * const sAnims_Select_Pokeball[] =
{
- gUnknown_086104AC,
- gUnknown_086104B4,
+ sAnim_Select_Pokeball_Still,
+ sAnim_Select_Pokeball_Moving,
};
static const union AffineAnimCmd gUnknown_0861050C[] =
@@ -537,98 +565,98 @@ static const union AffineAnimCmd gUnknown_086105BC[] =
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd * const gUnknown_086105CC[] =
+static const union AffineAnimCmd * const sAffineAnims_Select_MonPicBgAnim[] =
{
gUnknown_0861050C,
gUnknown_0861056C,
gUnknown_086105BC,
};
-static const struct SpriteTemplate gUnknown_086105D8 =
+static const struct SpriteTemplate sSpriteTemplate_Select_Pokeball =
{
- .tileTag = TAG_TILE_64,
- .paletteTag = TAG_PAL_BALL_GREY,
- .oam = &gUnknown_0861047C,
- .anims = gUnknown_08610504,
+ .tileTag = GFXTAG_BALL,
+ .paletteTag = PALTAG_BALL_GRAY,
+ .oam = &sOam_Select_Pokeball,
+ .anims = sAnims_Select_Pokeball,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_819A44C
+ .callback = SpriteCB_Pokeball
};
-static const struct SpriteTemplate gUnknown_086105F0 =
+static const struct SpriteTemplate sSpriteTemplate_Select_Arrow =
{
- .tileTag = TAG_TILE_65,
- .paletteTag = TAG_PAL_66,
- .oam = &gUnknown_08610484,
- .anims = gUnknown_086104FC,
+ .tileTag = GFXTAG_ARROW,
+ .paletteTag = PALTAG_INTERFACE,
+ .oam = &sOam_Select_Arrow,
+ .anims = sAnims_Select_Interface,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_08610608 =
+static const struct SpriteTemplate sSpriteTemplate_Select_MenuHighlightLeft =
{
- .tileTag = TAG_TILE_66,
- .paletteTag = TAG_PAL_66,
- .oam = &gUnknown_0861048C,
- .anims = gUnknown_086104FC,
+ .tileTag = GFXTAG_MENU_HIGHLIGHT_LEFT,
+ .paletteTag = PALTAG_INTERFACE,
+ .oam = &sOam_Select_MenuHighlight,
+ .anims = sAnims_Select_Interface,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_08610620 =
+static const struct SpriteTemplate sSpriteTemplate_Select_MenuHighlightRight =
{
- .tileTag = TAG_TILE_67,
- .paletteTag = TAG_PAL_66,
- .oam = &gUnknown_0861048C,
- .anims = gUnknown_086104FC,
+ .tileTag = GFXTAG_MENU_HIGHLIGHT_RIGHT,
+ .paletteTag = PALTAG_INTERFACE,
+ .oam = &sOam_Select_MenuHighlight,
+ .anims = sAnims_Select_Interface,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_08610638 =
+static const struct SpriteTemplate sSpriteTemplate_Select_MonPicBgAnim =
{
- .tileTag = TAG_TILE_6D,
- .paletteTag = TAG_PAL_67,
- .oam = &gUnknown_08610494,
- .anims = gUnknown_08610500,
+ .tileTag = GFXTAG_MON_PIC_BG_ANIM,
+ .paletteTag = PALTAG_MON_PIC_BG,
+ .oam = &sOam_Select_MonPicBgAnim,
+ .anims = sAnims_Select_MonPicBgAnim,
.images = NULL,
- .affineAnims = gUnknown_086105CC,
+ .affineAnims = sAffineAnims_Select_MonPicBgAnim,
.callback = SpriteCallbackDummy
};
-static const struct SpriteSheet gUnknown_08610650[] =
-{
- {gUnknown_0860F3BC, sizeof(gUnknown_0860F3BC), TAG_TILE_65},
- {gUnknown_0860F43C, sizeof(gUnknown_0860F43C), TAG_TILE_66},
- {gUnknown_0860F53C, sizeof(gUnknown_0860F53C), TAG_TILE_67},
- {gUnknown_0860F63C, sizeof(gUnknown_0860F63C), TAG_TILE_68},
- {gUnknown_0860F6BC, sizeof(gUnknown_0860F6BC), TAG_TILE_69},
- {gUnknown_0860F7BC, 0x100, TAG_TILE_6A},
- {gUnknown_0860F83C, sizeof(gUnknown_0860F83C), TAG_TILE_6B},
- {gUnknown_0860F93C, sizeof(gUnknown_0860F93C), TAG_TILE_6C},
- {gUnknown_0860FA3C, sizeof(gUnknown_0860FA3C), TAG_TILE_6D},
+static const struct SpriteSheet sSwap_SpriteSheets[] =
+{
+ {sArrow_Gfx, sizeof(sArrow_Gfx), GFXTAG_ARROW},
+ {sMenuHighlightLeft_Gfx, sizeof(sMenuHighlightLeft_Gfx), GFXTAG_MENU_HIGHLIGHT_LEFT},
+ {sMenuHighlightRight_Gfx, sizeof(sMenuHighlightRight_Gfx), GFXTAG_MENU_HIGHLIGHT_RIGHT},
+ {sActionBoxLeft_Gfx, sizeof(sActionBoxLeft_Gfx), GFXTAG_ACTION_BOX_LEFT},
+ {sActionBoxRight_Gfx, sizeof(sActionBoxRight_Gfx), GFXTAG_ACTION_BOX_RIGHT},
+ {sActionHighlightLeft_Gfx, 0x100, GFXTAG_ACTION_HIGHLIGHT_LEFT},
+ {sActionHighlightMiddle_Gfx, sizeof(sActionHighlightMiddle_Gfx), GFXTAG_ACTION_HIGHLIGHT_MIDDLE},
+ {sActionHighlightRight_Gfx, sizeof(sActionHighlightRight_Gfx), GFXTAG_ACTION_HIGHLIGHT_RIGHT},
+ {sMonPicBgAnim_Gfx, sizeof(sMonPicBgAnim_Gfx), GFXTAG_MON_PIC_BG_ANIM},
{},
};
-static const struct CompressedSpriteSheet gUnknown_086106A0[] =
+static const struct CompressedSpriteSheet sSwap_BallGfx[] =
{
- {gPokeballSelection_Gfx, 0x800, TAG_TILE_64},
+ {gPokeballSelection_Gfx, 0x800, GFXTAG_BALL},
{},
};
-static const struct SpritePalette gUnknown_086106B0[] =
+static const struct SpritePalette sSwap_SpritePalettes[] =
{
- {gUnknown_0860F13C, TAG_PAL_BALL_GREY},
- {gUnknown_0860F15C, TAG_PAL_BALL_SELECTED},
- {gUnknown_0860F17C, TAG_PAL_66},
- {gUnknown_0861039C, TAG_PAL_67},
+ {sPokeballGray_Pal, PALTAG_BALL_GRAY},
+ {sPokeballSelected_Pal, PALTAG_BALL_SELECTED},
+ {sInterface_Pal, PALTAG_INTERFACE},
+ {sMonPicBg_Pal, PALTAG_MON_PIC_BG},
{},
};
-static const struct OamData gUnknown_086106D8 =
+static const struct OamData sOam_Swap_Pokeball =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -645,7 +673,7 @@ static const struct OamData gUnknown_086106D8 =
.affineParam = 0,
};
-static const struct OamData gUnknown_086106E0 =
+static const struct OamData sOam_Swap_Arrow =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -662,7 +690,7 @@ static const struct OamData gUnknown_086106E0 =
.affineParam = 0,
};
-static const struct OamData gUnknown_086106E8 =
+static const struct OamData sOam_Swap_MenuHighlight =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -679,7 +707,7 @@ static const struct OamData gUnknown_086106E8 =
.affineParam = 0,
};
-static const struct OamData gUnknown_086106F0 =
+static const struct OamData sOam_Swap_MonPicBgAnim =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_DOUBLE,
@@ -696,25 +724,25 @@ static const struct OamData gUnknown_086106F0 =
.affineParam = 1,
};
-static const union AnimCmd gUnknown_086106F8[] =
+static const union AnimCmd sAnim_Swap_Interface[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_08610700[] =
+static const union AnimCmd sAnim_Swap_MonPicBgAnim[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_08610708[] =
+static const union AnimCmd sAnim_Swap_Pokeball_Still[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_END,
};
-static const union AnimCmd gUnknown_08610710[] =
+static const union AnimCmd sAnim_Swap_Pokeball_Moving[] =
{
ANIMCMD_FRAME(16, 4),
ANIMCMD_FRAME(0, 4),
@@ -736,20 +764,20 @@ static const union AnimCmd gUnknown_08610710[] =
ANIMCMD_END,
};
-static const union AnimCmd * const gUnknown_08610758[] =
+static const union AnimCmd * const sAnims_Swap_Interface[] =
{
- gUnknown_086106F8,
+ sAnim_Swap_Interface,
};
-static const union AnimCmd * const gUnknown_0861075C[] =
+static const union AnimCmd * const sAnims_Swap_MonPicBgAnim[] =
{
- gUnknown_08610700,
+ sAnim_Swap_MonPicBgAnim,
};
-static const union AnimCmd * const gUnknown_08610760[] =
+static const union AnimCmd * const sAnims_Swap_Pokeball[] =
{
- gUnknown_08610708,
- gUnknown_08610710,
+ sAnim_Swap_Pokeball_Still,
+ sAnim_Swap_Pokeball_Moving,
};
static const union AffineAnimCmd gUnknown_08610768[] =
@@ -788,73 +816,73 @@ static const union AffineAnimCmd gUnknown_08610818[] =
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd * const gUnknown_08610828[] =
+static const union AffineAnimCmd * const sAffineAnims_Swap_MonPicBgAnim[] =
{
gUnknown_08610768,
gUnknown_086107C8,
gUnknown_08610818,
};
-static const struct SpriteTemplate gUnknown_08610834 =
+static const struct SpriteTemplate sSpriteTemplate_Swap_Pokeball =
{
- .tileTag = TAG_TILE_64,
- .paletteTag = TAG_PAL_BALL_GREY,
- .oam = &gUnknown_086106D8,
- .anims = gUnknown_08610760,
+ .tileTag = GFXTAG_BALL,
+ .paletteTag = PALTAG_BALL_GRAY,
+ .oam = &sOam_Swap_Pokeball,
+ .anims = sAnims_Swap_Pokeball,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_819A44C
+ .callback = SpriteCB_Pokeball
};
-static const struct SpriteTemplate gUnknown_0861084C =
+static const struct SpriteTemplate sSpriteTemplate_Swap_Arrow =
{
- .tileTag = TAG_TILE_65,
- .paletteTag = TAG_PAL_66,
- .oam = &gUnknown_086106E0,
- .anims = gUnknown_08610758,
+ .tileTag = GFXTAG_ARROW,
+ .paletteTag = PALTAG_INTERFACE,
+ .oam = &sOam_Swap_Arrow,
+ .anims = sAnims_Swap_Interface,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_08610864 =
+static const struct SpriteTemplate sSpriteTemplate_Swap_MenuHighlightLeft =
{
- .tileTag = TAG_TILE_66,
- .paletteTag = TAG_PAL_66,
- .oam = &gUnknown_086106E8,
- .anims = gUnknown_08610758,
+ .tileTag = GFXTAG_MENU_HIGHLIGHT_LEFT,
+ .paletteTag = PALTAG_INTERFACE,
+ .oam = &sOam_Swap_MenuHighlight,
+ .anims = sAnims_Swap_Interface,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_0861087C =
+static const struct SpriteTemplate sSpriteTemplate_Swap_MenuHighlightRight =
{
- .tileTag = TAG_TILE_67,
- .paletteTag = TAG_PAL_66,
- .oam = &gUnknown_086106E8,
- .anims = gUnknown_08610758,
+ .tileTag = GFXTAG_MENU_HIGHLIGHT_RIGHT,
+ .paletteTag = PALTAG_INTERFACE,
+ .oam = &sOam_Swap_MenuHighlight,
+ .anims = sAnims_Swap_Interface,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_08610894 =
+static const struct SpriteTemplate sSpriteTemplate_Swap_MonPicBgAnim =
{
- .tileTag = TAG_TILE_6D,
- .paletteTag = TAG_PAL_67,
- .oam = &gUnknown_086106F0,
- .anims = gUnknown_0861075C,
+ .tileTag = GFXTAG_MON_PIC_BG_ANIM,
+ .paletteTag = PALTAG_MON_PIC_BG,
+ .oam = &sOam_Swap_MonPicBgAnim,
+ .anims = sAnims_Swap_MonPicBgAnim,
.images = NULL,
- .affineAnims = gUnknown_08610828,
+ .affineAnims = sAffineAnims_Swap_MonPicBgAnim,
.callback = SpriteCallbackDummy
};
void static (* const sSwap_MenuOptionFuncs[])(u8 taskId) =
{
- sub_819F114,
- sub_819F0CC,
- sub_819F134,
+ Swap_OptionSummary,
+ Swap_OptionSwap,
+ Swap_OptionRechoose,
};
static const struct BgTemplate sSwap_BgTemplates[4] =
@@ -897,9 +925,21 @@ static const struct BgTemplate sSwap_BgTemplates[4] =
},
};
+enum {
+ SWAP_WIN_TITLE,
+ SWAP_WIN_SPECIES,
+ SWAP_WIN_INFO,
+ SWAP_WIN_OPTIONS,
+ SWAP_WIN_YES_NO,
+ SWAP_WIN_ACTION_FADE, // Used for action text fading out during screen transition
+ SWAP_WIN_UNUSED,
+ SWAP_WIN_SPECIES_AT_FADE, // Used to print species name stopped at current fade level
+ SWAP_WIN_MON_CATEGORY,
+};
+
static const struct WindowTemplate sSwap_WindowTemplates[] =
{
- {
+ [SWAP_WIN_TITLE] = {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 2,
@@ -908,7 +948,7 @@ static const struct WindowTemplate sSwap_WindowTemplates[] =
.paletteNum = 15,
.baseBlock = 0x0001,
},
- {
+ [SWAP_WIN_SPECIES] = {
.bg = 2,
.tilemapLeft = 19,
.tilemapTop = 2,
@@ -917,7 +957,7 @@ static const struct WindowTemplate sSwap_WindowTemplates[] =
.paletteNum = 14,
.baseBlock = 0x0019,
},
- {
+ [SWAP_WIN_INFO] = {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 15,
@@ -926,7 +966,7 @@ static const struct WindowTemplate sSwap_WindowTemplates[] =
.paletteNum = 15,
.baseBlock = 0x002f,
},
- {
+ [SWAP_WIN_OPTIONS] = {
.bg = 0,
.tilemapLeft = 21,
.tilemapTop = 14,
@@ -935,7 +975,7 @@ static const struct WindowTemplate sSwap_WindowTemplates[] =
.paletteNum = 15,
.baseBlock = 0x006b,
},
- {
+ [SWAP_WIN_YES_NO] = {
.bg = 0,
.tilemapLeft = 22,
.tilemapTop = 14,
@@ -944,7 +984,7 @@ static const struct WindowTemplate sSwap_WindowTemplates[] =
.paletteNum = 15,
.baseBlock = 0x00a1,
},
- {
+ [SWAP_WIN_ACTION_FADE] = {
.bg = 2,
.tilemapLeft = 21,
.tilemapTop = 15,
@@ -953,7 +993,7 @@ static const struct WindowTemplate sSwap_WindowTemplates[] =
.paletteNum = 14,
.baseBlock = 0x006b,
},
- {
+ [SWAP_WIN_UNUSED] = {
.bg = 2,
.tilemapLeft = 10,
.tilemapTop = 2,
@@ -962,7 +1002,7 @@ static const struct WindowTemplate sSwap_WindowTemplates[] =
.paletteNum = 14,
.baseBlock = 0x00c1,
},
- {
+ [SWAP_WIN_SPECIES_AT_FADE] = {
.bg = 0,
.tilemapLeft = 19,
.tilemapTop = 2,
@@ -971,7 +1011,7 @@ static const struct WindowTemplate sSwap_WindowTemplates[] =
.paletteNum = 15,
.baseBlock = 0x00c9,
},
- {
+ [SWAP_WIN_MON_CATEGORY] = {
.bg = 0,
.tilemapLeft = 15,
.tilemapTop = 0,
@@ -983,64 +1023,36 @@ static const struct WindowTemplate sSwap_WindowTemplates[] =
DUMMY_WIN_TEMPLATE,
};
-static const u16 gUnknown_08610918[] = {RGB_BLACK, RGB_BLACK, RGB_WHITE, RGB_BLACK, RGB_RED}; // Palette.
+static const u16 sSwapText_Pal[] = INCBIN_U16("graphics/battle_frontier/factory_screen/text.gbapal"); // Identical to sSelectText_Pal
static const u8 sSwapMenuOptionsTextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_TRANSPARENT};
static const u8 sSwapSpeciesNameTextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_RED, TEXT_COLOR_TRANSPARENT};
-static const struct SwapActionIdAndFunc sSwap_PlayerScreenActions[] =
+#define SWAPACTION_MON 1
+#define SWAPACTION_PKMN_FOR_SWAP 2
+#define SWAPACTION_CANCEL 3
+
+static const struct SwapScreenAction sSwap_PlayerScreenActions[] =
{
- {1, Swap_ActionMon},
- {1, Swap_ActionMon},
- {1, Swap_ActionMon},
- {3, Swap_ActionCancel},
+ {.id = SWAPACTION_MON, .func = Swap_ActionMon},
+ {.id = SWAPACTION_MON, .func = Swap_ActionMon},
+ {.id = SWAPACTION_MON, .func = Swap_ActionMon},
+ {.id = SWAPACTION_CANCEL, .func = Swap_ActionCancel},
};
-static const struct SwapActionIdAndFunc sSwap_EnemyScreenActions[] =
+static const struct SwapScreenAction sSwap_EnemyScreenActions[] =
{
- {1, Swap_ActionMon},
- {1, Swap_ActionMon},
- {1, Swap_ActionMon},
- {2, Swap_ActionPkmnForSwap},
- {3, Swap_ActionCancel},
+ {.id = SWAPACTION_MON, .func = Swap_ActionMon},
+ {.id = SWAPACTION_MON, .func = Swap_ActionMon},
+ {.id = SWAPACTION_MON, .func = Swap_ActionMon},
+ {.id = SWAPACTION_PKMN_FOR_SWAP, .func = Swap_ActionPkmnForSwap},
+ {.id = SWAPACTION_CANCEL, .func = Swap_ActionCancel},
};
-// gfx
-extern const u8 gFrontierFactorySelectMenu_Gfx[];
-extern const u8 gFrontierFactorySelectMenu_Tilemap[];
-extern const u16 gFrontierFactorySelectMenu_Pal[];
-
-// text
-extern const u8 gText_RentalPkmn2[];
-extern const u8 gText_SelectFirstPkmn[];
-extern const u8 gText_SelectSecondPkmn[];
-extern const u8 gText_SelectThirdPkmn[];
-extern const u8 gText_TheseThreePkmnOkay[];
-extern const u8 gText_CantSelectSamePkmn[];
-extern const u8 gText_Summary[];
-extern const u8 gText_Rechoose[];
-extern const u8 gText_Deselect[];
-extern const u8 gText_Rent[];
-extern const u8 gText_Others2[];
-extern const u8 gText_Yes2[];
-extern const u8 gText_Yes3[];
-extern const u8 gText_No2[];
-extern const u8 gText_No3[];
-extern const u8 gText_QuitSwapping[];
-extern const u8 gText_AcceptThisPkmn[];
-extern const u8 gText_SelectPkmnToAccept[];
-extern const u8 gText_SelectPkmnToSwap[];
-extern const u8 gText_PkmnSwap[];
-extern const u8 gText_Swap[];
-extern const u8 gText_Summary2[];
-extern const u8 gText_PkmnForSwap[];
-extern const u8 gText_SamePkmnInPartyAlready[];
-extern const u8 gText_Cancel3[];
-
-// code
-static void sub_819A44C(struct Sprite *sprite)
-{
- if (sprite->oam.paletteNum == IndexOfSpritePaletteTag(TAG_PAL_BALL_SELECTED))
+static void SpriteCB_Pokeball(struct Sprite *sprite)
+{
+ if (sprite->oam.paletteNum == IndexOfSpritePaletteTag(PALTAG_BALL_SELECTED))
{
+ // Pokeball selected, do rocking animation
if (sprite->animEnded)
{
if (sprite->data[0] != 0)
@@ -1064,11 +1076,12 @@ static void sub_819A44C(struct Sprite *sprite)
}
else
{
+ // Pokeball not selected, remain still
StartSpriteAnimIfDifferent(sprite, 0);
}
}
-static void Select_CB2(void)
+static void CB2_SelectScreen(void)
{
AnimateSprites();
BuildOamBuffer();
@@ -1077,7 +1090,7 @@ static void Select_CB2(void)
RunTasks();
}
-static void Select_VblankCb(void)
+static void VBlankCB_SelectScreen(void)
{
LoadOam();
ProcessSpriteCopyRequests();
@@ -1090,6 +1103,27 @@ void DoBattleFactorySelectScreen(void)
SetMainCallback2(CB2_InitSelectScreen);
}
+// Main select states
+// States for the main tasks of the Select_ functions after initialization, including:
+// Select_Task_OpenSummaryScreen, Select_Task_HandleYesNo, Select_Task_HandleMenu, and Select_Task_HandleChooseMons
+// Unnecessarily complicated, could easily have just kept states numbered in each task always starting at 0
+// There's only one instance (Select_Task_HandleChooseMons) where a non-initial case is used
+// Select_Task_Exit has its own straightforward states
+#define STATE_CHOOSE_MONS_INIT 0
+#define STATE_CHOOSE_MONS_HANDLE_INPUT 1
+#define STATE_MENU_INIT 2
+#define STATE_MENU_HANDLE_INPUT 3
+#define STATE_YESNO_SHOW_OPTIONS 4
+#define STATE_YESNO_HANDLE_INPUT 5
+#define STATE_SUMMARY_FADE 6
+#define STATE_SUMMARY_CLEAN 7
+#define STATE_SUMMARY_SHOW 8
+#define STATE_MENU_SHOW_OPTIONS 9
+#define STATE_YESNO_SHOW_MONS 10
+#define STATE_CHOOSE_MONS_INVALID 11
+#define STATE_MENU_REINIT 12
+#define STATE_MENU_RESHOW 13
+
static void CB2_InitSelectScreen(void)
{
u8 taskId;
@@ -1110,9 +1144,9 @@ static void CB2_InitSelectScreen(void)
break;
case 1:
sSelectMenuTilesetBuffer = Alloc(0x440);
- sSelectMonCardBgTilesetBuffer = AllocZeroed(0x440);
- sSelectMenuTilemapBuffer = Alloc(0x800);
- sSelectMonCardBgTilemapBuffer = AllocZeroed(0x800);
+ sSelectMonPicBgTilesetBuffer = AllocZeroed(0x440);
+ sSelectMenuTilemapBuffer = Alloc(BG_SCREEN_SIZE);
+ sSelectMonPicBgTilemapBuffer = AllocZeroed(BG_SCREEN_SIZE);
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
ChangeBgX(1, 0, 0);
@@ -1137,45 +1171,45 @@ static void CB2_InitSelectScreen(void)
ResetTasks();
FreeAllSpritePalettes();
CpuCopy16(gFrontierFactorySelectMenu_Gfx, sSelectMenuTilesetBuffer, 0x440);
- CpuCopy16(gUnknown_0861033C, sSelectMonCardBgTilesetBuffer, 0x60);
+ CpuCopy16(sMonPicBg_Gfx, sSelectMonPicBgTilesetBuffer, 0x60);
LoadBgTiles(1, sSelectMenuTilesetBuffer, 0x440, 0);
- LoadBgTiles(3, sSelectMonCardBgTilesetBuffer, 0x60, 0);
- CpuCopy16(gFrontierFactorySelectMenu_Tilemap, sSelectMenuTilemapBuffer, 0x800);
- LoadBgTilemap(1, sSelectMenuTilemapBuffer, 0x800, 0);
+ LoadBgTiles(3, sSelectMonPicBgTilesetBuffer, 0x60, 0);
+ CpuCopy16(gFrontierFactorySelectMenu_Tilemap, sSelectMenuTilemapBuffer, BG_SCREEN_SIZE);
+ LoadBgTilemap(1, sSelectMenuTilemapBuffer, BG_SCREEN_SIZE, 0);
LoadPalette(gFrontierFactorySelectMenu_Pal, 0, 0x40);
- LoadPalette(gUnknown_0861046C, 0xF0, 8);
- LoadPalette(gUnknown_0861046C, 0xE0, 10);
- #if MODERN
+ LoadPalette(sSelectText_Pal, 0xF0, 8);
+ LoadPalette(sSelectText_Pal, 0xE0, 10);
+#ifdef UBFIX
if (sFactorySelectScreen && sFactorySelectScreen->fromSummaryScreen)
- #else
+#else
if (sFactorySelectScreen->fromSummaryScreen == TRUE)
- #endif
- gPlttBufferUnfaded[228] = sFactorySelectScreen->unk2A4;
- LoadPalette(gUnknown_0861039C, 0x20, 4);
+#endif
+ gPlttBufferUnfaded[228] = sFactorySelectScreen->speciesNameColorBackup;
+ LoadPalette(sMonPicBg_Pal, 0x20, 4);
gMain.state++;
break;
case 3:
- SetBgTilemapBuffer(3, sSelectMonCardBgTilemapBuffer);
- CopyToBgTilemapBufferRect(3, gUnknown_0861023C, 11, 4, 8, 8);
- CopyToBgTilemapBufferRect(3, gUnknown_0861023C, 2, 4, 8, 8);
- CopyToBgTilemapBufferRect(3, gUnknown_0861023C, 20, 4, 8, 8);
+ SetBgTilemapBuffer(3, sSelectMonPicBgTilemapBuffer);
+ CopyToBgTilemapBufferRect(3, sMonPicBg_Tilemap, 11, 4, 8, 8);
+ CopyToBgTilemapBufferRect(3, sMonPicBg_Tilemap, 2, 4, 8, 8);
+ CopyToBgTilemapBufferRect(3, sMonPicBg_Tilemap, 20, 4, 8, 8);
CopyBgTilemapBufferToVram(3);
gMain.state++;
break;
case 4:
- LoadSpritePalettes(gUnknown_086103F4);
- LoadSpriteSheets(gUnknown_086103BC);
- LoadCompressedSpriteSheet(gUnknown_086103E4);
+ LoadSpritePalettes(sSelect_SpritePalettes);
+ LoadSpriteSheets(sSelect_SpriteSheets);
+ LoadCompressedSpriteSheet(sSelect_BallGfx);
ShowBg(0);
ShowBg(1);
- SetVBlankCallback(Select_VblankCb);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
+ 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 MODERN
+#ifdef UBFIX
if (sFactorySelectScreen && sFactorySelectScreen->fromSummaryScreen)
- #else
+#else
if (sFactorySelectScreen->fromSummaryScreen == TRUE)
- #endif
+#endif
{
Select_SetWinRegs(88, 152, 32, 96);
ShowBg(3);
@@ -1189,54 +1223,54 @@ static void CB2_InitSelectScreen(void)
gMain.state++;
break;
case 5:
- #if MODERN
+#ifdef UBFIX
if (sFactorySelectScreen && sFactorySelectScreen->fromSummaryScreen)
- #else
+#else
if (sFactorySelectScreen->fromSummaryScreen == TRUE)
- #endif
+#endif
sFactorySelectScreen->cursorPos = gLastViewedMonIndex;
Select_InitMonsData();
Select_InitAllSprites();
if (sFactorySelectScreen->fromSummaryScreen == TRUE)
- Select_ShowSummaryMonSprite();
+ Select_ReshowMonSprite();
gMain.state++;
break;
case 6:
Select_PrintSelectMonString();
- PutWindowTilemap(2);
+ PutWindowTilemap(SELECT_WIN_INFO);
gMain.state++;
break;
case 7:
Select_PrintMonCategory();
- PutWindowTilemap(5);
+ PutWindowTilemap(SELECT_WIN_MON_CATEGORY);
gMain.state++;
break;
case 8:
Select_PrintMonSpecies();
- PutWindowTilemap(1);
+ PutWindowTilemap(SELECT_WIN_SPECIES);
gMain.state++;
break;
case 9:
Select_PrintRentalPkmnString();
- PutWindowTilemap(0);
+ PutWindowTilemap(SELECT_WIN_TITLE);
gMain.state++;
break;
case 10:
- sFactorySelectScreen->fadeSpeciesNameTaskId = CreateTask(Task_SelectFadeSpeciesName, 0);
+ sFactorySelectScreen->fadeSpeciesNameTaskId = CreateTask(Select_Task_FadeSpeciesName, 0);
if (!sFactorySelectScreen->fromSummaryScreen)
{
- gTasks[sFactorySelectScreen->fadeSpeciesNameTaskId].data[0] = 0;
- taskId = CreateTask(Task_HandleSelectionScreenChooseMons, 0);
- gTasks[taskId].data[0] = 0;
+ gTasks[sFactorySelectScreen->fadeSpeciesNameTaskId].tState = FADESTATE_INIT;
+ taskId = CreateTask(Select_Task_HandleChooseMons, 0);
+ gTasks[taskId].tState = STATE_CHOOSE_MONS_INIT;
}
else
{
- gTasks[sFactorySelectScreen->fadeSpeciesNameTaskId].data[0] = 1;
- sFactorySelectScreen->unk2A2 = FALSE;
- taskId = CreateTask(Task_HandleSelectionScreenMenu, 0);
- gTasks[taskId].data[0] = 13;
+ gTasks[sFactorySelectScreen->fadeSpeciesNameTaskId].tState = FADESTATE_RUN;
+ sFactorySelectScreen->fadeSpeciesNameActive = FALSE;
+ taskId = CreateTask(Select_Task_HandleMenu, 0);
+ gTasks[taskId].tState = STATE_MENU_RESHOW;
}
- SetMainCallback2(Select_CB2);
+ SetMainCallback2(CB2_SelectScreen);
break;
}
}
@@ -1258,7 +1292,7 @@ static void Select_InitMonsData(void)
if (gSaveBlock2Ptr->frontier.lvlMode != FRONTIER_LVL_TENT)
CreateFrontierFactorySelectableMons(0);
else
- CreateTentFactorySelectableMons(0);
+ CreateSlateportTentSelectableMons(0);
}
static void Select_InitAllSprites(void)
@@ -1268,15 +1302,15 @@ static void Select_InitAllSprites(void)
for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
{
- sFactorySelectScreen->mons[i].spriteId = CreateSprite(&gUnknown_086105D8, (35 * i) + 32, 64, 1);
- gSprites[sFactorySelectScreen->mons[i].spriteId].data[0] = 0;
+ sFactorySelectScreen->mons[i].ballSpriteId = CreateSprite(&sSpriteTemplate_Select_Pokeball, (35 * i) + 32, 64, 1);
+ gSprites[sFactorySelectScreen->mons[i].ballSpriteId].data[0] = 0;
Select_SetBallSpritePaletteNum(i);
}
cursorPos = sFactorySelectScreen->cursorPos;
- x = gSprites[sFactorySelectScreen->mons[cursorPos].spriteId].pos1.x;
- sFactorySelectScreen->cursorSpriteId = CreateSprite(&gUnknown_086105F0, x, 88, 0);
- sFactorySelectScreen->menuCursor1SpriteId = CreateSprite(&gUnknown_08610608, 176, 112, 0);
- sFactorySelectScreen->menuCursor2SpriteId = CreateSprite(&gUnknown_08610620, 176, 144, 0);
+ x = gSprites[sFactorySelectScreen->mons[cursorPos].ballSpriteId].pos1.x;
+ sFactorySelectScreen->cursorSpriteId = CreateSprite(&sSpriteTemplate_Select_Arrow, x, 88, 0);
+ sFactorySelectScreen->menuCursor1SpriteId = CreateSprite(&sSpriteTemplate_Select_MenuHighlightLeft, 176, 112, 0);
+ sFactorySelectScreen->menuCursor2SpriteId = CreateSprite(&sSpriteTemplate_Select_MenuHighlightRight, 176, 144, 0);
gSprites[sFactorySelectScreen->menuCursor1SpriteId].invisible = TRUE;
gSprites[sFactorySelectScreen->menuCursor2SpriteId].invisible = TRUE;
@@ -1292,7 +1326,7 @@ static void Select_DestroyAllSprites(void)
u8 i;
for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
- DestroySprite(&gSprites[sFactorySelectScreen->mons[i].spriteId]);
+ DestroySprite(&gSprites[sFactorySelectScreen->mons[i].ballSpriteId]);
DestroySprite(&gSprites[sFactorySelectScreen->cursorSpriteId]);
DestroySprite(&gSprites[sFactorySelectScreen->menuCursor1SpriteId]);
@@ -1318,14 +1352,14 @@ static void Select_UpdateBallCursorPosition(s8 direction)
}
cursorPos = sFactorySelectScreen->cursorPos;
- gSprites[sFactorySelectScreen->cursorSpriteId].pos1.x = gSprites[sFactorySelectScreen->mons[cursorPos].spriteId].pos1.x;
+ gSprites[sFactorySelectScreen->cursorSpriteId].pos1.x = gSprites[sFactorySelectScreen->mons[cursorPos].ballSpriteId].pos1.x;
}
static void Select_UpdateMenuCursorPosition(s8 direction)
{
if (direction > 0) // Move cursor down.
{
- if (sFactorySelectScreen->menuCursorPos != MENU_OPTIONS_COUNT - 1)
+ if (sFactorySelectScreen->menuCursorPos != ARRAY_COUNT(sSelect_MenuOptionFuncs) - 1)
sFactorySelectScreen->menuCursorPos++;
else
sFactorySelectScreen->menuCursorPos = 0;
@@ -1335,7 +1369,7 @@ static void Select_UpdateMenuCursorPosition(s8 direction)
if (sFactorySelectScreen->menuCursorPos != 0)
sFactorySelectScreen->menuCursorPos--;
else
- sFactorySelectScreen->menuCursorPos = MENU_OPTIONS_COUNT - 1;
+ sFactorySelectScreen->menuCursorPos = ARRAY_COUNT(sSelect_MenuOptionFuncs) - 1;
}
gSprites[sFactorySelectScreen->menuCursor1SpriteId].pos1.y = (sFactorySelectScreen->menuCursorPos * 16) + 112;
@@ -1369,12 +1403,13 @@ static void Select_HandleMonSelectionChange(void)
u8 cursorPos = sFactorySelectScreen->cursorPos;
if (sFactorySelectScreen->mons[cursorPos].selectedId) // Deselect a mon.
{
- paletteNum = IndexOfSpritePaletteTag(TAG_PAL_BALL_GREY);
- if (sFactorySelectScreen->selectingMonsState == 3 && sFactorySelectScreen->mons[cursorPos].selectedId == 1)
+ paletteNum = IndexOfSpritePaletteTag(PALTAG_BALL_GRAY);
+ if (sFactorySelectScreen->selectingMonsState == FRONTIER_PARTY_SIZE
+ && sFactorySelectScreen->mons[cursorPos].selectedId == 1)
{
for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
{
- if (sFactorySelectScreen->mons[i].selectedId == 2)
+ if (sFactorySelectScreen->mons[i].selectedId == FRONTIER_PARTY_SIZE - 1)
break;
}
if (i == SELECTABLE_MONS_COUNT)
@@ -1387,12 +1422,12 @@ static void Select_HandleMonSelectionChange(void)
}
else // Select a mon.
{
- paletteNum = IndexOfSpritePaletteTag(TAG_PAL_BALL_SELECTED);
+ paletteNum = IndexOfSpritePaletteTag(PALTAG_BALL_SELECTED);
sFactorySelectScreen->mons[cursorPos].selectedId = sFactorySelectScreen->selectingMonsState;
sFactorySelectScreen->selectingMonsState++;
}
- gSprites[sFactorySelectScreen->mons[cursorPos].spriteId].oam.paletteNum = paletteNum;
+ gSprites[sFactorySelectScreen->mons[cursorPos].ballSpriteId].oam.paletteNum = paletteNum;
}
static void Select_SetBallSpritePaletteNum(u8 id)
@@ -1400,191 +1435,196 @@ static void Select_SetBallSpritePaletteNum(u8 id)
u8 palNum;
if (sFactorySelectScreen->mons[id].selectedId)
- palNum = IndexOfSpritePaletteTag(TAG_PAL_BALL_SELECTED);
+ palNum = IndexOfSpritePaletteTag(PALTAG_BALL_SELECTED);
else
- palNum = IndexOfSpritePaletteTag(TAG_PAL_BALL_GREY);
+ palNum = IndexOfSpritePaletteTag(PALTAG_BALL_GRAY);
- gSprites[sFactorySelectScreen->mons[id].spriteId].oam.paletteNum = palNum;
+ gSprites[sFactorySelectScreen->mons[id].ballSpriteId].oam.paletteNum = palNum;
}
-static void Task_FromSelectScreenToSummaryScreen(u8 taskId)
+static void Select_Task_OpenSummaryScreen(u8 taskId)
{
u8 i;
u8 currMonId;
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
- case 6:
+ case STATE_SUMMARY_FADE:
gPlttBufferUnfaded[228] = gPlttBufferFaded[228];
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
- gTasks[taskId].data[0] = 7;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gTasks[taskId].tState = STATE_SUMMARY_CLEAN;
break;
- case 7:
+ case STATE_SUMMARY_CLEAN:
if (!gPaletteFade.active)
{
DestroyTask(sFactorySelectScreen->fadeSpeciesNameTaskId);
- sub_819F444(sFactorySelectScreen->unk294[1], &sFactorySelectScreen->unk2A0);
+ HideMonPic(sFactorySelectScreen->monPics[1], &sFactorySelectScreen->monPicAnimating);
Select_DestroyAllSprites();
FREE_AND_SET_NULL(sSelectMenuTilesetBuffer);
- FREE_AND_SET_NULL(sSelectMonCardBgTilesetBuffer);
+ FREE_AND_SET_NULL(sSelectMonPicBgTilesetBuffer);
FREE_AND_SET_NULL(sSelectMenuTilemapBuffer);
- FREE_AND_SET_NULL(sSelectMonCardBgTilemapBuffer);
+ FREE_AND_SET_NULL(sSelectMonPicBgTilemapBuffer);
FreeAllWindowBuffers();
- gTasks[taskId].data[0] = 8;
+ gTasks[taskId].tState = STATE_SUMMARY_SHOW;
}
break;
- case 8:
- sFactorySelectScreen->unk2A4 = gPlttBufferUnfaded[228];
+ case STATE_SUMMARY_SHOW:
+ sFactorySelectScreen->speciesNameColorBackup = gPlttBufferUnfaded[228];
DestroyTask(taskId);
sFactorySelectScreen->fromSummaryScreen = TRUE;
currMonId = sFactorySelectScreen->cursorPos;
sFactorySelectMons = AllocZeroed(sizeof(struct Pokemon) * SELECTABLE_MONS_COUNT);
for (i = 0; i < SELECTABLE_MONS_COUNT; i++)
sFactorySelectMons[i] = sFactorySelectScreen->mons[i].monData;
- ShowPokemonSummaryScreen(1, sFactorySelectMons, currMonId, SELECTABLE_MONS_COUNT - 1, CB2_InitSelectScreen);
+ ShowPokemonSummaryScreen(PSS_MODE_LOCK_MOVES, sFactorySelectMons, currMonId, SELECTABLE_MONS_COUNT - 1, CB2_InitSelectScreen);
break;
}
}
-static void Task_CloseSelectionScreen(u8 taskId)
+static void Select_Task_Exit(u8 taskId)
{
- if (sFactorySelectScreen->unk2A0 != TRUE)
+ if (sFactorySelectScreen->monPicAnimating == TRUE)
+ return;
+
+ switch (gTasks[taskId].tState)
{
- switch (gTasks[taskId].data[0])
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gTasks[taskId].tState++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
{
- case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
- gTasks[taskId].data[0]++;
- break;
- case 1:
- if (!UpdatePaletteFade())
- {
- Select_CopyMonsToPlayerParty();
- DestroyTask(sFactorySelectScreen->fadeSpeciesNameTaskId);
- Select_DestroyAllSprites();
- FREE_AND_SET_NULL(sSelectMenuTilesetBuffer);
- FREE_AND_SET_NULL(sSelectMenuTilemapBuffer);
- FREE_AND_SET_NULL(sSelectMonCardBgTilemapBuffer);
- FREE_AND_SET_NULL(sFactorySelectScreen);
- FreeAllWindowBuffers();
- SetMainCallback2(CB2_ReturnToFieldContinueScript);
- DestroyTask(taskId);
- }
- break;
+ Select_CopyMonsToPlayerParty();
+ DestroyTask(sFactorySelectScreen->fadeSpeciesNameTaskId);
+ Select_DestroyAllSprites();
+ FREE_AND_SET_NULL(sSelectMenuTilesetBuffer);
+ FREE_AND_SET_NULL(sSelectMenuTilemapBuffer);
+ FREE_AND_SET_NULL(sSelectMonPicBgTilemapBuffer);
+ FREE_AND_SET_NULL(sFactorySelectScreen);
+ FreeAllWindowBuffers();
+ SetMainCallback2(CB2_ReturnToFieldContinueScript);
+ DestroyTask(taskId);
}
+ break;
}
}
-static void Task_HandleSelectionScreenYesNo(u8 taskId)
+// Handles the Yes/No prompt when confirming the 3 selected rental pokemon
+static void Select_Task_HandleYesNo(u8 taskId)
{
- if (sFactorySelectScreen->unk2A0 != TRUE)
+ if (sFactorySelectScreen->monPicAnimating == TRUE)
+ return;
+
+ switch (gTasks[taskId].tState)
{
- switch (gTasks[taskId].data[0])
+ case STATE_YESNO_SHOW_MONS:
+ Select_ShowChosenMons();
+ gTasks[taskId].tState = STATE_YESNO_SHOW_OPTIONS;
+ break;
+ case STATE_YESNO_SHOW_OPTIONS:
+ Select_ShowYesNoOptions();
+ gTasks[taskId].tState = STATE_YESNO_HANDLE_INPUT;
+ break;
+ case STATE_YESNO_HANDLE_INPUT:
+ if (JOY_NEW(A_BUTTON))
{
- case 10:
- sub_819C4B4();
- gTasks[taskId].data[0] = 4;
- break;
- case 4:
- Select_ShowYesNoOptions();
- gTasks[taskId].data[0] = 5;
- break;
- case 5:
- if (JOY_NEW(A_BUTTON))
- {
- PlaySE(SE_SELECT);
- if (sFactorySelectScreen->yesNoCursorPos == 0)
- {
- sub_819C568();
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = Task_CloseSelectionScreen;
- }
- else
- {
- sub_819B958(4);
- sub_819BC9C();
- sFactorySelectScreen->unk2A2 = TRUE;
- gTasks[taskId].data[0] = 1;
- gTasks[taskId].func = Task_HandleSelectionScreenChooseMons;
- }
- }
- else if (JOY_NEW(B_BUTTON))
- {
- PlaySE(SE_SELECT);
- sub_819B958(4);
- sub_819BC9C();
- sFactorySelectScreen->unk2A2 = TRUE;
- gTasks[taskId].data[0] = 1;
- gTasks[taskId].func = Task_HandleSelectionScreenChooseMons;
- }
- else if (JOY_REPEAT(DPAD_UP))
+ PlaySE(SE_SELECT);
+ if (sFactorySelectScreen->yesNoCursorPos == 0)
{
- PlaySE(SE_SELECT);
- Select_UpdateYesNoCursorPosition(-1);
+ // Selected Yes, confirmed selected pokemon
+ Select_HideChosenMons();
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].func = Select_Task_Exit;
}
- else if (JOY_REPEAT(DPAD_DOWN))
+ else
{
- PlaySE(SE_SELECT);
- Select_UpdateYesNoCursorPosition(1);
+ // Selected No, continue choosing pokemon
+ Select_ErasePopupMenu(SELECT_WIN_YES_NO);
+ Select_DeclineChosenMons();
+ sFactorySelectScreen->fadeSpeciesNameActive = TRUE;
+ gTasks[taskId].tState = STATE_CHOOSE_MONS_HANDLE_INPUT;
+ gTasks[taskId].func = Select_Task_HandleChooseMons;
}
- break;
}
+ else if (JOY_NEW(B_BUTTON))
+ {
+ // Pressed B, Continue choosing pokemon
+ PlaySE(SE_SELECT);
+ Select_ErasePopupMenu(SELECT_WIN_YES_NO);
+ Select_DeclineChosenMons();
+ sFactorySelectScreen->fadeSpeciesNameActive = TRUE;
+ gTasks[taskId].tState = STATE_CHOOSE_MONS_HANDLE_INPUT;
+ gTasks[taskId].func = Select_Task_HandleChooseMons;
+ }
+ else if (JOY_REPEAT(DPAD_UP))
+ {
+ PlaySE(SE_SELECT);
+ Select_UpdateYesNoCursorPosition(-1);
+ }
+ else if (JOY_REPEAT(DPAD_DOWN))
+ {
+ PlaySE(SE_SELECT);
+ Select_UpdateYesNoCursorPosition(1);
+ }
+ break;
}
}
-static void Task_HandleSelectionScreenMenu(u8 taskId)
+// Handles the popup menu that shows when a pokemon is selected
+static void Select_Task_HandleMenu(u8 taskId)
{
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
- case 2:
+ case STATE_MENU_INIT:
if (!sFactorySelectScreen->fromSummaryScreen)
- sub_819F2B4(&sFactorySelectScreen->unk294[1].field1, &sFactorySelectScreen->unk2A0, FALSE);
- gTasks[taskId].data[0] = 9;
+ OpenMonPic(&sFactorySelectScreen->monPics[1].bgSpriteId, &sFactorySelectScreen->monPicAnimating, FALSE);
+ gTasks[taskId].tState = STATE_MENU_SHOW_OPTIONS;
break;
- case 9:
- if (sFactorySelectScreen->unk2A0 != TRUE)
+ case STATE_MENU_SHOW_OPTIONS:
+ if (sFactorySelectScreen->monPicAnimating != TRUE)
{
Select_ShowMenuOptions();
sFactorySelectScreen->fromSummaryScreen = FALSE;
- gTasks[taskId].data[0] = 3;
+ gTasks[taskId].tState = STATE_MENU_HANDLE_INPUT;
}
break;
- case 3:
+ case STATE_MENU_HANDLE_INPUT:
if (JOY_NEW(A_BUTTON))
{
u8 retVal;
PlaySE(SE_SELECT);
retVal = Select_RunMenuOptionFunc();
- if (retVal == 1)
+ if (retVal == SELECT_CONTINUE_CHOOSING)
{
- sFactorySelectScreen->unk2A2 = TRUE;
- gTasks[taskId].data[0] = 1;
- gTasks[taskId].func = Task_HandleSelectionScreenChooseMons;
+ sFactorySelectScreen->fadeSpeciesNameActive = TRUE;
+ gTasks[taskId].tState = STATE_CHOOSE_MONS_HANDLE_INPUT;
+ gTasks[taskId].func = Select_Task_HandleChooseMons;
}
- else if (retVal == 2)
+ else if (retVal == SELECT_CONFIRM_MONS)
{
- gTasks[taskId].data[0] = 10;
- gTasks[taskId].func = Task_HandleSelectionScreenYesNo;
+ gTasks[taskId].tState = STATE_YESNO_SHOW_MONS;
+ gTasks[taskId].func = Select_Task_HandleYesNo;
}
- else if (retVal == 3)
+ else if (retVal == SELECT_INVALID_MON)
{
- gTasks[taskId].data[0] = 11;
- gTasks[taskId].func = Task_HandleSelectionScreenChooseMons;
+ gTasks[taskId].tState = STATE_CHOOSE_MONS_INVALID;
+ gTasks[taskId].func = Select_Task_HandleChooseMons;
}
- else
+ else // SELECT_SUMMARY
{
- gTasks[taskId].data[0] = 6;
- gTasks[taskId].func = Task_FromSelectScreenToSummaryScreen;
+ gTasks[taskId].tState = STATE_SUMMARY_FADE;
+ gTasks[taskId].func = Select_Task_OpenSummaryScreen;
}
}
else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
- sub_819F3F8(sFactorySelectScreen->unk294[1], &sFactorySelectScreen->unk2A0, FALSE);
- sub_819B958(3);
- sFactorySelectScreen->unk2A2 = TRUE;
- gTasks[taskId].data[0] = 1;
- gTasks[taskId].func = Task_HandleSelectionScreenChooseMons;
+ CloseMonPic(sFactorySelectScreen->monPics[1], &sFactorySelectScreen->monPicAnimating, FALSE);
+ Select_ErasePopupMenu(SELECT_WIN_OPTIONS);
+ sFactorySelectScreen->fadeSpeciesNameActive = TRUE;
+ gTasks[taskId].tState = STATE_CHOOSE_MONS_HANDLE_INPUT;
+ gTasks[taskId].func = Select_Task_HandleChooseMons;
}
else if (JOY_REPEAT(DPAD_UP))
{
@@ -1597,81 +1637,97 @@ static void Task_HandleSelectionScreenMenu(u8 taskId)
Select_UpdateMenuCursorPosition(1);
}
break;
- case 12:
+ case STATE_MENU_REINIT:
if (!gPaletteFade.active)
{
if (sFactorySelectScreen->fromSummaryScreen == TRUE)
{
- gPlttBufferFaded[228] = sFactorySelectScreen->unk2A4;
+ gPlttBufferFaded[228] = sFactorySelectScreen->speciesNameColorBackup;
gPlttBufferUnfaded[228] = gPlttBufferUnfaded[244];
}
sFactorySelectScreen->fromSummaryScreen = FALSE;
- gTasks[taskId].data[0] = 3;
+ gTasks[taskId].tState = STATE_MENU_HANDLE_INPUT;
}
break;
- case 13:
+ case STATE_MENU_RESHOW:
Select_ShowMenuOptions();
- gTasks[taskId].data[0] = 12;
+ gTasks[taskId].tState = STATE_MENU_REINIT;
break;
}
}
-static void Task_HandleSelectionScreenChooseMons(u8 taskId)
+// Handles input on the main selection screen, when no popup menu is open
+static void Select_Task_HandleChooseMons(u8 taskId)
{
- if (sFactorySelectScreen->unk2A0 != TRUE)
+ if (sFactorySelectScreen->monPicAnimating == TRUE)
+ return;
+
+ switch (gTasks[taskId].tState)
{
- switch (gTasks[taskId].data[0])
+ case STATE_CHOOSE_MONS_INIT:
+ if (!gPaletteFade.active)
{
- case 0:
- if (!gPaletteFade.active)
- {
- gTasks[taskId].data[0] = 1;
- sFactorySelectScreen->unk2A2 = TRUE;
- }
- break;
- case 1:
- if (JOY_NEW(A_BUTTON))
- {
- PlaySE(SE_SELECT);
- sFactorySelectScreen->unk2A2 = FALSE;
- gTasks[taskId].data[0] = 2;
- gTasks[taskId].func = Task_HandleSelectionScreenMenu;
- }
- else if (JOY_REPEAT(DPAD_LEFT))
- {
- PlaySE(SE_SELECT);
- Select_UpdateBallCursorPosition(-1);
- Select_PrintMonCategory();
- Select_PrintMonSpecies();
- }
- else if (JOY_REPEAT(DPAD_RIGHT))
- {
- PlaySE(SE_SELECT);
- Select_UpdateBallCursorPosition(1);
- Select_PrintMonCategory();
- Select_PrintMonSpecies();
- }
- break;
- case 11:
- if (JOY_NEW(A_BUTTON))
- {
- PlaySE(SE_SELECT);
- sub_819F3F8(sFactorySelectScreen->unk294[1], &sFactorySelectScreen->unk2A0, FALSE);
- Select_PrintSelectMonString();
- sFactorySelectScreen->unk2A2 = TRUE;
- gTasks[taskId].data[0] = 1;
- }
- break;
+ gTasks[taskId].tState = STATE_CHOOSE_MONS_HANDLE_INPUT;
+ sFactorySelectScreen->fadeSpeciesNameActive = TRUE;
+ }
+ break;
+ case STATE_CHOOSE_MONS_HANDLE_INPUT:
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sFactorySelectScreen->fadeSpeciesNameActive = FALSE;
+ gTasks[taskId].tState = STATE_MENU_INIT;
+ gTasks[taskId].func = Select_Task_HandleMenu;
+ }
+ else if (JOY_REPEAT(DPAD_LEFT))
+ {
+ PlaySE(SE_SELECT);
+ Select_UpdateBallCursorPosition(-1);
+ Select_PrintMonCategory();
+ Select_PrintMonSpecies();
+ }
+ else if (JOY_REPEAT(DPAD_RIGHT))
+ {
+ PlaySE(SE_SELECT);
+ Select_UpdateBallCursorPosition(1);
+ Select_PrintMonCategory();
+ Select_PrintMonSpecies();
+ }
+ break;
+ case STATE_CHOOSE_MONS_INVALID:
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ CloseMonPic(sFactorySelectScreen->monPics[1], &sFactorySelectScreen->monPicAnimating, FALSE);
+ Select_PrintSelectMonString();
+ sFactorySelectScreen->fadeSpeciesNameActive = TRUE;
+ gTasks[taskId].tState = STATE_CHOOSE_MONS_HANDLE_INPUT;
}
+ break;
}
}
+#undef STATE_CHOOSE_MONS_INIT
+#undef STATE_CHOOSE_MONS_HANDLE_INPUT
+#undef STATE_MENU_INIT
+#undef STATE_MENU_HANDLE_INPUT
+#undef STATE_YESNO_SHOW_OPTIONS
+#undef STATE_YESNO_HANDLE_INPUT
+#undef STATE_SUMMARY_FADE
+#undef STATE_SUMMARY_CLEAN
+#undef STATE_SUMMARY_SHOW
+#undef STATE_MENU_SHOW_OPTIONS
+#undef STATE_YESNO_SHOW_MONS
+#undef STATE_CHOOSE_MONS_INVALID
+#undef STATE_MENU_REINIT
+#undef STATE_MENU_RESHOW
+
static void CreateFrontierFactorySelectableMons(u8 firstMonId)
{
u8 i, j = 0;
u8 ivs = 0;
u8 level = 0;
- u8 happiness = 0;
+ u8 friendship = 0;
u32 otId = 0;
u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
@@ -1702,20 +1758,20 @@ static void CreateFrontierFactorySelectableMons(u8 firstMonId)
ivs,
gFacilityTrainerMons[monId].evSpread,
otId);
- happiness = 0;
+ friendship = 0;
for (j = 0; j < MAX_MON_MOVES; j++)
SetMonMoveAvoidReturn(&sFactorySelectScreen->mons[i + firstMonId].monData, gFacilityTrainerMons[monId].moves[j], j);
- SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_FRIENDSHIP, &happiness);
+ SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_FRIENDSHIP, &friendship);
SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]);
}
}
-static void CreateTentFactorySelectableMons(u8 firstMonId)
+static void CreateSlateportTentSelectableMons(u8 firstMonId)
{
u8 i, j;
u8 ivs = 0;
u8 level = 30;
- u8 happiness = 0;
+ u8 friendship = 0;
u32 otId = 0;
gFacilityTrainerMons = gSlateportBattleTentMons;
@@ -1732,10 +1788,10 @@ static void CreateTentFactorySelectableMons(u8 firstMonId)
ivs,
gFacilityTrainerMons[monId].evSpread,
otId);
- happiness = 0;
+ friendship = 0;
for (j = 0; j < MAX_MON_MOVES; j++)
SetMonMoveAvoidReturn(&sFactorySelectScreen->mons[i + firstMonId].monData, gFacilityTrainerMons[monId].moves[j], j);
- SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_FRIENDSHIP, &happiness);
+ SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_FRIENDSHIP, &friendship);
SetMonData(&sFactorySelectScreen->mons[i + firstMonId].monData, MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]);
}
}
@@ -1744,7 +1800,7 @@ static void Select_CopyMonsToPlayerParty(void)
{
u8 i, j;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
{
for (j = 0; j < SELECTABLE_MONS_COUNT; j++)
{
@@ -1793,7 +1849,7 @@ static void Select_ShowYesNoOptions(void)
Select_PrintYesNoOptions();
}
-static void sub_819B958(u8 windowId)
+static void Select_ErasePopupMenu(u8 windowId)
{
gSprites[sFactorySelectScreen->menuCursor1SpriteId].invisible = TRUE;
gSprites[sFactorySelectScreen->menuCursor2SpriteId].invisible = TRUE;
@@ -1804,9 +1860,9 @@ static void sub_819B958(u8 windowId)
static void Select_PrintRentalPkmnString(void)
{
- FillWindowPixelBuffer(0, PIXEL_FILL(0));
- AddTextPrinterParameterized(0, 1, gText_RentalPkmn2, 2, 1, 0, NULL);
- CopyWindowToVram(0, 3);
+ FillWindowPixelBuffer(SELECT_WIN_TITLE, PIXEL_FILL(0));
+ AddTextPrinterParameterized(SELECT_WIN_TITLE, 1, gText_RentalPkmn2, 2, 1, 0, NULL);
+ CopyWindowToVram(SELECT_WIN_TITLE, 3);
}
static void Select_PrintMonSpecies(void)
@@ -1815,19 +1871,19 @@ static void Select_PrintMonSpecies(void)
u8 x;
u8 monId = sFactorySelectScreen->cursorPos;
- FillWindowPixelBuffer(1, PIXEL_FILL(0));
+ FillWindowPixelBuffer(SELECT_WIN_SPECIES, PIXEL_FILL(0));
species = GetMonData(&sFactorySelectScreen->mons[monId].monData, MON_DATA_SPECIES, NULL);
StringCopy(gStringVar4, gSpeciesNames[species]);
x = GetStringRightAlignXOffset(1, gStringVar4, 86);
- AddTextPrinterParameterized3(1, 1, x, 1, sSpeciesNameTextColors, 0, gStringVar4);
- CopyWindowToVram(1, 2);
+ AddTextPrinterParameterized3(SELECT_WIN_SPECIES, 1, x, 1, sSpeciesNameTextColors, 0, gStringVar4);
+ CopyWindowToVram(SELECT_WIN_SPECIES, 2);
}
static void Select_PrintSelectMonString(void)
{
const u8 *str = NULL;
- FillWindowPixelBuffer(2, PIXEL_FILL(0));
+ FillWindowPixelBuffer(SELECT_WIN_INFO, PIXEL_FILL(0));
if (sFactorySelectScreen->selectingMonsState == 1)
str = gText_SelectFirstPkmn;
else if (sFactorySelectScreen->selectingMonsState == 2)
@@ -1837,46 +1893,46 @@ static void Select_PrintSelectMonString(void)
else
str = gText_TheseThreePkmnOkay;
- AddTextPrinterParameterized(2, 1, str, 2, 5, 0, NULL);
- CopyWindowToVram(2, 2);
+ AddTextPrinterParameterized(SELECT_WIN_INFO, 1, str, 2, 5, 0, NULL);
+ CopyWindowToVram(SELECT_WIN_INFO, 2);
}
static void Select_PrintCantSelectSameMon(void)
{
- FillWindowPixelBuffer(2, PIXEL_FILL(0));
- AddTextPrinterParameterized(2, 1, gText_CantSelectSamePkmn, 2, 5, 0, NULL);
- CopyWindowToVram(2, 2);
+ FillWindowPixelBuffer(SELECT_WIN_INFO, PIXEL_FILL(0));
+ AddTextPrinterParameterized(SELECT_WIN_INFO, 1, gText_CantSelectSamePkmn, 2, 5, 0, NULL);
+ CopyWindowToVram(SELECT_WIN_INFO, 2);
}
static void Select_PrintMenuOptions(void)
{
u8 selectedId = sFactorySelectScreen->mons[sFactorySelectScreen->cursorPos].selectedId;
- PutWindowTilemap(3);
- FillWindowPixelBuffer(3, PIXEL_FILL(0));
- AddTextPrinterParameterized3(3, 1, 7, 1, sMenuOptionTextColors, 0, gText_Summary);
+ PutWindowTilemap(SELECT_WIN_OPTIONS);
+ FillWindowPixelBuffer(SELECT_WIN_OPTIONS, PIXEL_FILL(0));
+ AddTextPrinterParameterized3(SELECT_WIN_OPTIONS, 1, 7, 1, sMenuOptionTextColors, 0, gText_Summary);
if (selectedId != 0)
- AddTextPrinterParameterized3(3, 1, 7, 17, sMenuOptionTextColors, 0, gText_Deselect);
+ AddTextPrinterParameterized3(SELECT_WIN_OPTIONS, 1, 7, 17, sMenuOptionTextColors, 0, gText_Deselect);
else
- AddTextPrinterParameterized3(3, 1, 7, 17, sMenuOptionTextColors, 0, gText_Rent);
+ AddTextPrinterParameterized3(SELECT_WIN_OPTIONS, 1, 7, 17, sMenuOptionTextColors, 0, gText_Rent);
- AddTextPrinterParameterized3(3, 1, 7, 33, sMenuOptionTextColors, 0, gText_Others2);
- CopyWindowToVram(3, 3);
+ AddTextPrinterParameterized3(SELECT_WIN_OPTIONS, 1, 7, 33, sMenuOptionTextColors, 0, gText_Others2);
+ CopyWindowToVram(SELECT_WIN_OPTIONS, 3);
}
static void Select_PrintYesNoOptions(void)
{
- PutWindowTilemap(4);
- FillWindowPixelBuffer(4, PIXEL_FILL(0));
- AddTextPrinterParameterized3(4, 1, 7, 1, sMenuOptionTextColors, 0, gText_Yes2);
- AddTextPrinterParameterized3(4, 1, 7, 17, sMenuOptionTextColors, 0, gText_No2);
- CopyWindowToVram(4, 3);
+ PutWindowTilemap(SELECT_WIN_YES_NO);
+ FillWindowPixelBuffer(SELECT_WIN_YES_NO, PIXEL_FILL(0));
+ AddTextPrinterParameterized3(SELECT_WIN_YES_NO, 1, 7, 1, sMenuOptionTextColors, 0, gText_Yes2);
+ AddTextPrinterParameterized3(SELECT_WIN_YES_NO, 1, 7, 17, sMenuOptionTextColors, 0, gText_No2);
+ CopyWindowToVram(SELECT_WIN_YES_NO, 3);
}
static u8 Select_RunMenuOptionFunc(void)
{
- gUnknown_030062E8 = sSelect_MenuOptionFuncs[sFactorySelectScreen->menuCursorPos];
- return gUnknown_030062E8();
+ gFactorySelect_CurrentOptionFunc = sSelect_MenuOptionFuncs[sFactorySelectScreen->menuCursorPos];
+ return gFactorySelect_CurrentOptionFunc();
}
static u8 Select_OptionRentDeselect(void)
@@ -1886,29 +1942,29 @@ static u8 Select_OptionRentDeselect(void)
if (selectedId == 0 && !Select_AreSpeciesValid(monId))
{
Select_PrintCantSelectSameMon();
- sub_819B958(3);
- return 3;
+ Select_ErasePopupMenu(SELECT_WIN_OPTIONS);
+ return SELECT_INVALID_MON;
}
else
{
- sub_819F3F8(sFactorySelectScreen->unk294[1], &sFactorySelectScreen->unk2A0, FALSE);
+ CloseMonPic(sFactorySelectScreen->monPics[1], &sFactorySelectScreen->monPicAnimating, FALSE);
Select_HandleMonSelectionChange();
Select_PrintSelectMonString();
- sub_819B958(3);
- if (sFactorySelectScreen->selectingMonsState > 3)
- return 2;
+ Select_ErasePopupMenu(SELECT_WIN_OPTIONS);
+ if (sFactorySelectScreen->selectingMonsState > FRONTIER_PARTY_SIZE)
+ return SELECT_CONFIRM_MONS;
else
- return 1;
+ return SELECT_CONTINUE_CHOOSING;
}
}
-static u8 sub_819BC9C(void)
+static u8 Select_DeclineChosenMons(void)
{
- sub_819C568();
+ Select_HideChosenMons();
Select_HandleMonSelectionChange();
Select_PrintSelectMonString();
- sub_819B958(3);
- if (sFactorySelectScreen->selectingMonsState > 3)
+ Select_ErasePopupMenu(SELECT_WIN_OPTIONS);
+ if (sFactorySelectScreen->selectingMonsState > FRONTIER_PARTY_SIZE)
return 2;
else
return 1;
@@ -1916,14 +1972,14 @@ static u8 sub_819BC9C(void)
static u8 Select_OptionSummary(void)
{
- return 0;
+ return SELECT_SUMMARY;
}
static u8 Select_OptionOthers(void)
{
- sub_819F3F8(sFactorySelectScreen->unk294[1], &sFactorySelectScreen->unk2A0, FALSE);
- sub_819B958(3);
- return 1;
+ CloseMonPic(sFactorySelectScreen->monPics[1], &sFactorySelectScreen->monPicAnimating, FALSE);
+ Select_ErasePopupMenu(SELECT_WIN_OPTIONS);
+ return SELECT_CONTINUE_CHOOSING;
}
static void Select_PrintMonCategory(void)
@@ -1934,17 +1990,17 @@ static void Select_PrintMonCategory(void)
u8 monId = sFactorySelectScreen->cursorPos;
if (monId < SELECTABLE_MONS_COUNT)
{
- PutWindowTilemap(5);
- FillWindowPixelBuffer(5, PIXEL_FILL(0));
+ PutWindowTilemap(SELECT_WIN_MON_CATEGORY);
+ FillWindowPixelBuffer(SELECT_WIN_MON_CATEGORY, PIXEL_FILL(0));
species = GetMonData(&sFactorySelectScreen->mons[monId].monData, MON_DATA_SPECIES, NULL);
CopyMonCategoryText(SpeciesToNationalPokedexNum(species), text);
x = GetStringRightAlignXOffset(1, text, 0x76);
- AddTextPrinterParameterized(5, 1, text, x, 1, 0, NULL);
- CopyWindowToVram(5, 2);
+ AddTextPrinterParameterized(SELECT_WIN_MON_CATEGORY, 1, text, x, 1, 0, NULL);
+ CopyWindowToVram(SELECT_WIN_MON_CATEGORY, 2);
}
}
-static void Summary_ShowMonSprite(void)
+static void Select_CreateMonSprite(void)
{
u8 monId = sFactorySelectScreen->cursorPos;
struct Pokemon *mon = &sFactorySelectScreen->mons[monId].monData;
@@ -1952,44 +2008,44 @@ static void Summary_ShowMonSprite(void)
u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
u32 otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
- sFactorySelectScreen->unk294[1].field0 = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, 88, 32, 15, 0xFFFF);
- gSprites[sFactorySelectScreen->unk294[1].field0].centerToCornerVecX = 0;
- gSprites[sFactorySelectScreen->unk294[1].field0].centerToCornerVecY = 0;
+ sFactorySelectScreen->monPics[1].monSpriteId = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, 88, 32, 15, 0xFFFF);
+ gSprites[sFactorySelectScreen->monPics[1].monSpriteId].centerToCornerVecX = 0;
+ gSprites[sFactorySelectScreen->monPics[1].monSpriteId].centerToCornerVecY = 0;
- sFactorySelectScreen->unk2A0 = FALSE;
+ sFactorySelectScreen->monPicAnimating = FALSE;
}
-static void sub_819BE20(bool8 arg0)
+static void Select_SetMonPicAnimating(bool8 animating)
{
- sFactorySelectScreen->unk2A0 = arg0;
+ sFactorySelectScreen->monPicAnimating = animating;
}
-static void Select_ShowSummaryMonSprite(void)
+static void Select_ReshowMonSprite(void)
{
struct Pokemon *mon;
u16 species;
u32 personality, otId;
- sFactorySelectScreen->unk294[1].field1 = CreateSprite(&gUnknown_08610638, 120, 64, 1);
- StartSpriteAffineAnim(&gSprites[sFactorySelectScreen->unk294[1].field1], 2);
+ sFactorySelectScreen->monPics[1].bgSpriteId = CreateSprite(&sSpriteTemplate_Select_MonPicBgAnim, 120, 64, 1);
+ StartSpriteAffineAnim(&gSprites[sFactorySelectScreen->monPics[1].bgSpriteId], 2);
mon = &sFactorySelectScreen->mons[sFactorySelectScreen->cursorPos].monData;
species = GetMonData(mon, MON_DATA_SPECIES, NULL);
personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
- sFactorySelectScreen->unk294[1].field0 = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, 88, 32, 15, 0xFFFF);
- gSprites[sFactorySelectScreen->unk294[1].field0].centerToCornerVecX = 0;
- gSprites[sFactorySelectScreen->unk294[1].field0].centerToCornerVecY = 0;
+ sFactorySelectScreen->monPics[1].monSpriteId = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, 88, 32, 15, 0xFFFF);
+ gSprites[sFactorySelectScreen->monPics[1].monSpriteId].centerToCornerVecX = 0;
+ gSprites[sFactorySelectScreen->monPics[1].monSpriteId].centerToCornerVecY = 0;
- gSprites[sFactorySelectScreen->unk294[1].field1].invisible = TRUE;
+ gSprites[sFactorySelectScreen->monPics[1].bgSpriteId].invisible = TRUE;
}
-static void Select_ShowChosenMonsSprites(void)
+static void Select_CreateChosenMonsSprites(void)
{
u8 i, j;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
{
for (j = 0; j < SELECTABLE_MONS_COUNT; j++)
{
@@ -2000,66 +2056,80 @@ static void Select_ShowChosenMonsSprites(void)
u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
u32 otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
- sFactorySelectScreen->unk294[i].field0 = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, (i * 72) + 16, 32, i + 13, 0xFFFF);
- gSprites[sFactorySelectScreen->unk294[i].field0].centerToCornerVecX = 0;
- gSprites[sFactorySelectScreen->unk294[i].field0].centerToCornerVecY = 0;
+ sFactorySelectScreen->monPics[i].monSpriteId = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, (i * 72) + 16, 32, i + 13, 0xFFFF);
+ gSprites[sFactorySelectScreen->monPics[i].monSpriteId].centerToCornerVecX = 0;
+ gSprites[sFactorySelectScreen->monPics[i].monSpriteId].centerToCornerVecY = 0;
break;
}
}
}
- sFactorySelectScreen->unk2A0 = FALSE;
+ sFactorySelectScreen->monPicAnimating = FALSE;
}
-static void sub_819C040(struct Sprite *sprite)
+static void SpriteCB_OpenChosenMonPics(struct Sprite *sprite)
{
u8 taskId;
+ // Current sprite is monPics[1]
if (sprite->affineAnimEnded
- && gSprites[sFactorySelectScreen->unk294[0].field1].affineAnimEnded
- && gSprites[sFactorySelectScreen->unk294[2].field1].affineAnimEnded)
+ && gSprites[sFactorySelectScreen->monPics[0].bgSpriteId].affineAnimEnded
+ && gSprites[sFactorySelectScreen->monPics[2].bgSpriteId].affineAnimEnded)
{
sprite->invisible = TRUE;
- gSprites[sFactorySelectScreen->unk294[0].field1].invisible = TRUE;
- gSprites[sFactorySelectScreen->unk294[2].field1].invisible = TRUE;
+ gSprites[sFactorySelectScreen->monPics[0].bgSpriteId].invisible = TRUE;
+ gSprites[sFactorySelectScreen->monPics[2].bgSpriteId].invisible = TRUE;
- taskId = CreateTask(sub_819C1D0, 1);
+ taskId = CreateTask(Select_Task_OpenChosenMonPics, 1);
gTasks[taskId].func(taskId);
sprite->callback = SpriteCallbackDummy;
}
}
-static void sub_819C100(struct Sprite *sprite)
+static void SpriteCB_CloseChosenMonPics(struct Sprite *sprite)
{
+ // Current sprite is monPics[1]
if (sprite->affineAnimEnded
- && gSprites[sFactorySelectScreen->unk294[0].field1].affineAnimEnded
- && gSprites[sFactorySelectScreen->unk294[2].field1].affineAnimEnded)
+ && gSprites[sFactorySelectScreen->monPics[0].bgSpriteId].affineAnimEnded
+ && gSprites[sFactorySelectScreen->monPics[2].bgSpriteId].affineAnimEnded)
{
FreeOamMatrix(sprite->oam.matrixNum);
- FreeOamMatrix(gSprites[sFactorySelectScreen->unk294[0].field1].oam.matrixNum);
- FreeOamMatrix(gSprites[sFactorySelectScreen->unk294[2].field1].oam.matrixNum);
+ FreeOamMatrix(gSprites[sFactorySelectScreen->monPics[0].bgSpriteId].oam.matrixNum);
+ FreeOamMatrix(gSprites[sFactorySelectScreen->monPics[2].bgSpriteId].oam.matrixNum);
- sFactorySelectScreen->unk2A0 = FALSE;
+ sFactorySelectScreen->monPicAnimating = FALSE;
- DestroySprite(&gSprites[sFactorySelectScreen->unk294[0].field1]);
- DestroySprite(&gSprites[sFactorySelectScreen->unk294[2].field1]);
+ DestroySprite(&gSprites[sFactorySelectScreen->monPics[0].bgSpriteId]);
+ DestroySprite(&gSprites[sFactorySelectScreen->monPics[2].bgSpriteId]);
DestroySprite(sprite);
}
}
-static void sub_819C1D0(u8 taskId)
+// Task data for Select_Task_OpenChosenMonPics, Select_Task_CloseChosenMonPics, Task_CloseMonPic, and Task_OpenMonPic
+#define tWinLeft data[3]
+#ifndef UBFIX
+#define tWinRight data[24] // UB: Typo? Likely meant data[4], 24 is out of bounds
+#else
+#define tWinRight data[4]
+#endif
+#define tWinTop data[5]
+#define tWinBottom data[8]
+#define tSpriteId data[6] // TODO: Clarify, what sprite
+#define tIsSwapScreen data[7]
+
+static void Select_Task_OpenChosenMonPics(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
- task->data[3] = 16;
- task->data[24] = 224; // BUG: writing outside the array's bounds.
- task->data[5] = 64;
- task->data[8] = 65;
+ task->tWinLeft = 16;
+ task->tWinRight = DISPLAY_WIDTH - 16;
+ task->tWinTop = 64;
+ task->tWinBottom = 65;
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[24]));
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->tWinLeft, task->tWinRight));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->tWinTop, task->tWinBottom));
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ);
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_CLR | WINOUT_WIN01_OBJ);
break;
@@ -2069,97 +2139,97 @@ static void sub_819C1D0(u8 taskId)
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(11, 4));
break;
case 2:
- task->data[5] -= 4;
- task->data[8] += 4;
- if (task->data[5] <= 32 || task->data[8] >= 96)
+ task->tWinTop -= 4;
+ task->tWinBottom += 4;
+ if (task->tWinTop <= 32 || task->tWinBottom >= 96)
{
- task->data[5] = 32;
- task->data[8] = 96;
+ task->tWinTop = 32;
+ task->tWinBottom = 96;
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
}
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
- if (task->data[5] != 32)
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->tWinTop, task->tWinBottom));
+ if (task->tWinTop != 32)
return;
break;
default:
DestroyTask(taskId);
- Select_ShowChosenMonsSprites();
+ Select_CreateChosenMonsSprites();
return;
}
- task->data[0]++;
+ task->tState++;
}
-static void sub_819C2D4(u8 taskId)
+static void Select_Task_CloseChosenMonPics(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
- default:
- HideBg(3);
- gSprites[sFactorySelectScreen->unk294[1].field1].invisible = FALSE;
- gSprites[sFactorySelectScreen->unk294[1].field1].callback = sub_819C100;
- gSprites[sFactorySelectScreen->unk294[0].field1].invisible = FALSE;
- gSprites[sFactorySelectScreen->unk294[0].field1].callback = SpriteCallbackDummy;
- gSprites[sFactorySelectScreen->unk294[2].field1].invisible = FALSE;
- gSprites[sFactorySelectScreen->unk294[2].field1].callback = SpriteCallbackDummy;
- StartSpriteAffineAnim(&gSprites[sFactorySelectScreen->unk294[1].field1], 1);
- StartSpriteAffineAnim(&gSprites[sFactorySelectScreen->unk294[0].field1], 1);
- StartSpriteAffineAnim(&gSprites[sFactorySelectScreen->unk294[2].field1], 1);
- ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- DestroyTask(taskId);
- break;
case 0:
- task->data[3] = 16;
- task->data[24] = 224; // BUG: writing outside the array's bounds.
- task->data[5] = 32;
- task->data[8] = 96;
+ task->tWinLeft = 16;
+ task->tWinRight = DISPLAY_WIDTH - 16;
+ task->tWinTop = 32;
+ task->tWinBottom = 96;
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[24]));
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->tWinLeft, task->tWinRight));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->tWinTop, task->tWinBottom));
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ);
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_CLR | WINOUT_WIN01_OBJ);
- task->data[0]++;
+ task->tState++;
break;
case 1:
- task->data[5] += 4;
- task->data[8] -= 4;
- if (task->data[5] >= 64 || task->data[8] <= 65)
+ task->tWinTop += 4;
+ task->tWinBottom -= 4;
+ if (task->tWinTop >= 64 || task->tWinBottom <= 65)
{
- task->data[5] = 64;
- task->data[8] = 65;
+ task->tWinTop = 64;
+ task->tWinBottom = 65;
}
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
- if (task->data[5] == 64)
- task->data[0]++;
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->tWinTop, task->tWinBottom));
+ if (task->tWinTop == 64)
+ task->tState++;
+ break;
+ default:
+ HideBg(3);
+ gSprites[sFactorySelectScreen->monPics[1].bgSpriteId].invisible = FALSE;
+ gSprites[sFactorySelectScreen->monPics[1].bgSpriteId].callback = SpriteCB_CloseChosenMonPics;
+ gSprites[sFactorySelectScreen->monPics[0].bgSpriteId].invisible = FALSE;
+ gSprites[sFactorySelectScreen->monPics[0].bgSpriteId].callback = SpriteCallbackDummy;
+ gSprites[sFactorySelectScreen->monPics[2].bgSpriteId].invisible = FALSE;
+ gSprites[sFactorySelectScreen->monPics[2].bgSpriteId].callback = SpriteCallbackDummy;
+ StartSpriteAffineAnim(&gSprites[sFactorySelectScreen->monPics[1].bgSpriteId], 1);
+ StartSpriteAffineAnim(&gSprites[sFactorySelectScreen->monPics[0].bgSpriteId], 1);
+ StartSpriteAffineAnim(&gSprites[sFactorySelectScreen->monPics[2].bgSpriteId], 1);
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ DestroyTask(taskId);
break;
}
}
-static void sub_819C4B4(void)
+static void Select_ShowChosenMons(void)
{
- sFactorySelectScreen->unk294[1].field1 = CreateSprite(&gUnknown_08610638, 120, 64, 1);
- sFactorySelectScreen->unk294[0].field1 = CreateSprite(&gUnknown_08610638, 44, 64, 1);
- sFactorySelectScreen->unk294[2].field1 = CreateSprite(&gUnknown_08610638, 196, 64, 1);
+ sFactorySelectScreen->monPics[1].bgSpriteId = CreateSprite(&sSpriteTemplate_Select_MonPicBgAnim, 120, 64, 1);
+ sFactorySelectScreen->monPics[0].bgSpriteId = CreateSprite(&sSpriteTemplate_Select_MonPicBgAnim, 44, 64, 1);
+ sFactorySelectScreen->monPics[2].bgSpriteId = CreateSprite(&sSpriteTemplate_Select_MonPicBgAnim, 196, 64, 1);
- gSprites[sFactorySelectScreen->unk294[1].field1].callback = sub_819C040;
- gSprites[sFactorySelectScreen->unk294[0].field1].callback = SpriteCallbackDummy;
- gSprites[sFactorySelectScreen->unk294[2].field1].callback = SpriteCallbackDummy;
+ gSprites[sFactorySelectScreen->monPics[1].bgSpriteId].callback = SpriteCB_OpenChosenMonPics;
+ gSprites[sFactorySelectScreen->monPics[0].bgSpriteId].callback = SpriteCallbackDummy;
+ gSprites[sFactorySelectScreen->monPics[2].bgSpriteId].callback = SpriteCallbackDummy;
- sFactorySelectScreen->unk2A0 = TRUE;
+ sFactorySelectScreen->monPicAnimating = TRUE;
}
-static void sub_819C568(void)
+static void Select_HideChosenMons(void)
{
u8 taskId;
- FreeAndDestroyMonPicSprite(sFactorySelectScreen->unk294[0].field0);
- FreeAndDestroyMonPicSprite(sFactorySelectScreen->unk294[1].field0);
- FreeAndDestroyMonPicSprite(sFactorySelectScreen->unk294[2].field0);
+ FreeAndDestroyMonPicSprite(sFactorySelectScreen->monPics[0].monSpriteId);
+ FreeAndDestroyMonPicSprite(sFactorySelectScreen->monPics[1].monSpriteId);
+ FreeAndDestroyMonPicSprite(sFactorySelectScreen->monPics[2].monSpriteId);
- taskId = CreateTask(sub_819C2D4, 1);
+ taskId = CreateTask(Select_Task_CloseChosenMonPics, 1);
gTasks[taskId].func(taskId);
- sFactorySelectScreen->unk2A0 = TRUE;
+ sFactorySelectScreen->monPicAnimating = TRUE;
}
static void Select_SetWinRegs(s16 mWin0H, s16 nWin0H, s16 mWin0V, s16 nWin0V)
@@ -2190,60 +2260,59 @@ static bool32 Select_AreSpeciesValid(u16 monId)
}
}
}
-
return TRUE;
}
-static void Task_SelectFadeSpeciesName(u8 taskId)
+static void Select_Task_FadeSpeciesName(u8 taskId)
{
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
- case 0:
- sFactorySelectScreen->unk2A7 = 0;
- sFactorySelectScreen->unk2A8 = 0;
- sFactorySelectScreen->unk2A6 = TRUE;
- gTasks[taskId].data[0] = 1;
+ case FADESTATE_INIT:
+ sFactorySelectScreen->fadeSpeciesNameCoeffDelay = 0;
+ sFactorySelectScreen->fadeSpeciesNameCoeff = 0;
+ sFactorySelectScreen->fadeSpeciesNameFadeOut = TRUE;
+ gTasks[taskId].tState = FADESTATE_RUN;
break;
- case 1:
- if (sFactorySelectScreen->unk2A2)
+ case FADESTATE_RUN:
+ if (sFactorySelectScreen->fadeSpeciesNameActive)
{
- if (sFactorySelectScreen->unk2A9)
+ if (sFactorySelectScreen->faceSpeciesNameDelay)
{
- gTasks[taskId].data[0] = 2;
+ gTasks[taskId].tState = FADESTATE_DELAY;
}
else
{
- sFactorySelectScreen->unk2A7++;
- if (sFactorySelectScreen->unk2A7 > 6)
+ sFactorySelectScreen->fadeSpeciesNameCoeffDelay++;
+ if (sFactorySelectScreen->fadeSpeciesNameCoeffDelay > 6)
{
- sFactorySelectScreen->unk2A7 = 0;
- if (!sFactorySelectScreen->unk2A6)
- sFactorySelectScreen->unk2A8--;
+ sFactorySelectScreen->fadeSpeciesNameCoeffDelay = 0;
+ if (!sFactorySelectScreen->fadeSpeciesNameFadeOut)
+ sFactorySelectScreen->fadeSpeciesNameCoeff--;
else
- sFactorySelectScreen->unk2A8++;
+ sFactorySelectScreen->fadeSpeciesNameCoeff++;
}
- BlendPalettes(0x4000, sFactorySelectScreen->unk2A8, 0);
- if (sFactorySelectScreen->unk2A8 > 5)
+ BlendPalettes(0x4000, sFactorySelectScreen->fadeSpeciesNameCoeff, 0);
+ if (sFactorySelectScreen->fadeSpeciesNameCoeff > 5)
{
- sFactorySelectScreen->unk2A6 = FALSE;
+ sFactorySelectScreen->fadeSpeciesNameFadeOut = FALSE;
}
- else if (sFactorySelectScreen->unk2A8 == 0)
+ else if (sFactorySelectScreen->fadeSpeciesNameCoeff == 0)
{
- gTasks[taskId].data[0] = 2;
- sFactorySelectScreen->unk2A6 = TRUE;
+ gTasks[taskId].tState = FADESTATE_DELAY;
+ sFactorySelectScreen->fadeSpeciesNameFadeOut = TRUE;
}
}
}
break;
- case 2:
- if (sFactorySelectScreen->unk2A9 > 14)
+ case FADESTATE_DELAY:
+ if (sFactorySelectScreen->faceSpeciesNameDelay > 14)
{
- sFactorySelectScreen->unk2A9 = 0;
- gTasks[taskId].data[0] = 1;
+ sFactorySelectScreen->faceSpeciesNameDelay = 0;
+ gTasks[taskId].tState = FADESTATE_RUN;
}
else
{
- sFactorySelectScreen->unk2A9++;
+ sFactorySelectScreen->faceSpeciesNameDelay++;
}
break;
}
@@ -2269,233 +2338,257 @@ static void Swap_VblankCb(void)
static void CopySwappedMonData(void)
{
- u8 happiness;
+ u8 friendship;
gPlayerParty[sFactorySwapScreen->playerMonId] = gEnemyParty[sFactorySwapScreen->enemyMonId];
- happiness = 0;
- SetMonData(&gPlayerParty[sFactorySwapScreen->playerMonId], MON_DATA_FRIENDSHIP, &happiness);
- gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->playerMonId].monId = gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->enemyMonId + 3].monId;
- gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->playerMonId].ivs = gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->enemyMonId + 3].ivs;
+ friendship = 0;
+ SetMonData(&gPlayerParty[sFactorySwapScreen->playerMonId], MON_DATA_FRIENDSHIP, &friendship);
+ gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->playerMonId].monId = gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->enemyMonId + FRONTIER_PARTY_SIZE].monId;
+ gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->playerMonId].ivs = gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->enemyMonId + FRONTIER_PARTY_SIZE].ivs;
gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->playerMonId].personality = GetMonData(&gEnemyParty[sFactorySwapScreen->enemyMonId], MON_DATA_PERSONALITY, NULL);
gSaveBlock2Ptr->frontier.rentalMons[sFactorySwapScreen->playerMonId].abilityNum = GetBoxMonData(&gEnemyParty[sFactorySwapScreen->enemyMonId].box, MON_DATA_ABILITY_NUM, NULL);
}
-static void Task_FromSwapScreenToSummaryScreen(u8 taskId)
-{
- switch (gTasks[taskId].data[0])
+// Main swap states
+// States for the main tasks of the Swap_ functions after initialization, including:
+// Swap_Task_OpenSummaryScreen, Swap_Task_HandleYesNo, Swap_Task_HandleMenu, and Swap_Task_HandleChooseMons
+// Tasks sharing states was unnecessary, see "Main select states"
+#define STATE_CHOOSE_MONS_INIT 0
+#define STATE_CHOOSE_MONS_HANDLE_INPUT 1
+#define STATE_MENU_INIT 2
+#define STATE_MENU_HANDLE_INPUT 3
+#define STATE_YESNO_SHOW 4
+#define STATE_YESNO_HANDLE_INPUT 5
+#define STATE_SUMMARY_FADE 6
+#define STATE_SUMMARY_CLEAN 7
+#define STATE_SUMMARY_SHOW 8
+#define STATE_MENU_SHOW_OPTIONS 9
+
+static void Swap_Task_OpenSummaryScreen(u8 taskId)
+{
+ switch (gTasks[taskId].tState)
{
- case 6:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
- gTasks[taskId].data[0] = 7;
+ case STATE_SUMMARY_FADE:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gTasks[taskId].tState = STATE_SUMMARY_CLEAN;
break;
- case 7:
+ case STATE_SUMMARY_CLEAN:
if (!gPaletteFade.active)
{
DestroyTask(sFactorySwapScreen->fadeSpeciesNameTaskId);
- sub_819F444(sFactorySwapScreen->unk2C, &sFactorySwapScreen->unk30);
+ HideMonPic(sFactorySwapScreen->monPic, &sFactorySwapScreen->monPicAnimating);
Swap_DestroyAllSprites();
FREE_AND_SET_NULL(sSwapMenuTilesetBuffer);
- FREE_AND_SET_NULL(sSwapMonCardBgTilesetBuffer);
+ FREE_AND_SET_NULL(sSwapMonPicBgTilesetBuffer);
FREE_AND_SET_NULL(sSwapMenuTilemapBuffer);
- FREE_AND_SET_NULL(sSwapMonCardBgTilemapBuffer);
+ FREE_AND_SET_NULL(sSwapMonPicBgTilemapBuffer);
FreeAllWindowBuffers();
- gTasks[taskId].data[0] = 8;
+ gTasks[taskId].tState = STATE_SUMMARY_SHOW;
}
break;
- case 8:
+ case STATE_SUMMARY_SHOW:
DestroyTask(taskId);
sFactorySwapScreen->fromSummaryScreen = TRUE;
- sFactorySwapScreen->unk24 = gPlttBufferUnfaded[244];
- ShowPokemonSummaryScreen(0, gPlayerParty, sFactorySwapScreen->cursorPos, 3 - 1, CB2_InitSwapScreen);
+ sFactorySwapScreen->speciesNameColorBackup = gPlttBufferUnfaded[244];
+ ShowPokemonSummaryScreen(PSS_MODE_NORMAL, gPlayerParty, sFactorySwapScreen->cursorPos, FRONTIER_PARTY_SIZE - 1, CB2_InitSwapScreen);
break;
}
}
-static void Task_CloseSwapScreen(u8 taskId)
+static void Swap_Task_Exit(u8 taskId)
{
- if (sFactorySwapScreen->unk30 != TRUE)
+ if (sFactorySwapScreen->monPicAnimating == TRUE)
+ return;
+
+ switch (gTasks[taskId].tState)
{
- switch (gTasks[taskId].data[0])
+ case 0:
+ // Set return value for script
+ // TRUE if player kept their current pokemon
+ if (sFactorySwapScreen->monSwapped == TRUE)
{
- case 0:
- if (sFactorySwapScreen->monSwapped == TRUE)
- {
- gTasks[taskId].data[0]++;
- gSpecialVar_Result = 0;
- }
- else
- {
- gTasks[taskId].data[0] = 2;
- gSpecialVar_Result = 1;
- }
- break;
- case 1:
- if (sFactorySwapScreen->monSwapped == TRUE)
- {
- sFactorySwapScreen->enemyMonId = sFactorySwapScreen->cursorPos;
- CopySwappedMonData();
- }
- gTasks[taskId].data[0]++;
- break;
- case 2:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
- gTasks[taskId].data[0]++;
- break;
- case 3:
- if (!UpdatePaletteFade())
- {
- DestroyTask(sFactorySwapScreen->fadeSpeciesNameTaskId);
- Swap_DestroyAllSprites();
- FREE_AND_SET_NULL(sSwapMenuTilesetBuffer);
- FREE_AND_SET_NULL(sSwapMonCardBgTilesetBuffer);
- FREE_AND_SET_NULL(sSwapMenuTilemapBuffer);
- FREE_AND_SET_NULL(sSwapMonCardBgTilemapBuffer);
- FREE_AND_SET_NULL(sFactorySwapScreen);
- FreeAllWindowBuffers();
- SetMainCallback2(CB2_ReturnToFieldContinueScript);
- DestroyTask(taskId);
- }
- break;
+ gTasks[taskId].tState++;
+ gSpecialVar_Result = FALSE;
+ }
+ else
+ {
+ gTasks[taskId].tState = 2;
+ gSpecialVar_Result = TRUE;
+ }
+ break;
+ case 1:
+ if (sFactorySwapScreen->monSwapped == TRUE)
+ {
+ sFactorySwapScreen->enemyMonId = sFactorySwapScreen->cursorPos;
+ CopySwappedMonData();
}
+ gTasks[taskId].tState++;
+ break;
+ case 2:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gTasks[taskId].tState++;
+ break;
+ case 3:
+ if (!UpdatePaletteFade())
+ {
+ DestroyTask(sFactorySwapScreen->fadeSpeciesNameTaskId);
+ Swap_DestroyAllSprites();
+ FREE_AND_SET_NULL(sSwapMenuTilesetBuffer);
+ FREE_AND_SET_NULL(sSwapMonPicBgTilesetBuffer);
+ FREE_AND_SET_NULL(sSwapMenuTilemapBuffer);
+ FREE_AND_SET_NULL(sSwapMonPicBgTilemapBuffer);
+ FREE_AND_SET_NULL(sFactorySwapScreen);
+ FreeAllWindowBuffers();
+ SetMainCallback2(CB2_ReturnToFieldContinueScript);
+ DestroyTask(taskId);
+ }
+ break;
}
}
-static void Task_HandleSwapScreenYesNo(u8 taskId)
+#define tSaidYes data[1]
+#define tFollowUpTaskState data[5]
+#define tFollowUpTaskPtrHi data[6]
+#define tFollowUpTaskPtrLo data[7]
+
+static void Swap_Task_HandleYesNo(u8 taskId)
{
u16 loPtr, hiPtr;
- if (sFactorySwapScreen->unk30 != TRUE)
+ if (sFactorySwapScreen->monPicAnimating == TRUE)
+ return;
+
+ switch (gTasks[taskId].tState)
{
- switch (gTasks[taskId].data[0])
+ case STATE_YESNO_SHOW:
+ Swap_ShowYesNoOptions();
+ gTasks[taskId].tState = STATE_YESNO_HANDLE_INPUT;
+ break;
+ case STATE_YESNO_HANDLE_INPUT:
+ if (JOY_NEW(A_BUTTON))
{
- case 4:
- Swap_ShowYesNoOptions();
- gTasks[taskId].data[0] = 5;
- break;
- case 5:
- if (JOY_NEW(A_BUTTON))
- {
- PlaySE(SE_SELECT);
- if (sFactorySwapScreen->yesNoCursorPos == 0)
- {
- gTasks[taskId].data[1] = 1;
- hiPtr = gTasks[taskId].data[6];
- loPtr = gTasks[taskId].data[7];
- gTasks[taskId].func = (void*)((hiPtr << 16) | loPtr);
- }
- else
- {
- gTasks[taskId].data[1] = 0;
- sub_819EA64(4);
- hiPtr = gTasks[taskId].data[6];
- loPtr = gTasks[taskId].data[7];
- gTasks[taskId].func = (void*)((hiPtr << 16) | loPtr);
- }
- }
- else if (JOY_NEW(B_BUTTON))
+ PlaySE(SE_SELECT);
+ if (sFactorySwapScreen->yesNoCursorPos == 0)
{
- PlaySE(SE_SELECT);
- gTasks[taskId].data[1] = 0;
- sub_819EA64(4);
- hiPtr = gTasks[taskId].data[6];
- loPtr = gTasks[taskId].data[7];
+ // Selected Yes
+ gTasks[taskId].tSaidYes = TRUE;
+ hiPtr = gTasks[taskId].tFollowUpTaskPtrHi;
+ loPtr = gTasks[taskId].tFollowUpTaskPtrLo;
gTasks[taskId].func = (void*)((hiPtr << 16) | loPtr);
}
- else if (JOY_REPEAT(DPAD_UP))
- {
- PlaySE(SE_SELECT);
- Swap_UpdateYesNoCursorPosition(-1);
- }
- else if (JOY_REPEAT(DPAD_DOWN))
+ else
{
- PlaySE(SE_SELECT);
- Swap_UpdateYesNoCursorPosition(1);
+ // Selected No
+ gTasks[taskId].tSaidYes = FALSE;
+ Swap_ErasePopupMenu(SWAP_WIN_YES_NO);
+ hiPtr = gTasks[taskId].tFollowUpTaskPtrHi;
+ loPtr = gTasks[taskId].tFollowUpTaskPtrLo;
+ gTasks[taskId].func = (void*)((hiPtr << 16) | loPtr);
}
- break;
}
+ else if (JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ gTasks[taskId].tSaidYes = FALSE;
+ Swap_ErasePopupMenu(SWAP_WIN_YES_NO);
+ hiPtr = gTasks[taskId].tFollowUpTaskPtrHi;
+ loPtr = gTasks[taskId].tFollowUpTaskPtrLo;
+ gTasks[taskId].func = (void*)((hiPtr << 16) | loPtr);
+ }
+ else if (JOY_REPEAT(DPAD_UP))
+ {
+ PlaySE(SE_SELECT);
+ Swap_UpdateYesNoCursorPosition(-1);
+ }
+ else if (JOY_REPEAT(DPAD_DOWN))
+ {
+ PlaySE(SE_SELECT);
+ Swap_UpdateYesNoCursorPosition(1);
+ }
+ break;
}
}
-static void sub_819CBDC(u8 taskId)
+static void Swap_HandleQuitSwappingResposne(u8 taskId)
{
- if (gTasks[taskId].data[1] == 1)
+ if (gTasks[taskId].tSaidYes == TRUE)
{
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = Task_CloseSwapScreen;
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].func = Swap_Task_Exit;
}
else
{
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[6] = (u32)(Task_HandleSwapScreenChooseMons) >> 16;
- gTasks[taskId].data[7] = (u32)(Task_HandleSwapScreenChooseMons);
- gTasks[taskId].data[5] = 1;
- gTasks[taskId].func = sub_819D770;
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tFollowUpTaskPtrHi = (u32)(Swap_Task_HandleChooseMons) >> 16;
+ gTasks[taskId].tFollowUpTaskPtrLo = (u32)(Swap_Task_HandleChooseMons);
+ gTasks[taskId].tFollowUpTaskState = STATE_CHOOSE_MONS_HANDLE_INPUT;
+ gTasks[taskId].func = Swap_Task_ScreenInfoTransitionIn;
}
}
-static void sub_819CC24(u8 taskId)
+static void Swap_AskQuitSwapping(u8 taskId)
{
- if (gTasks[taskId].data[0] == 0)
+ if (gTasks[taskId].tState == 0)
{
Swap_PrintOnInfoWindow(gText_QuitSwapping);
sFactorySwapScreen->monSwapped = FALSE;
- gTasks[taskId].data[0] = 4;
- gTasks[taskId].data[6] = (u32)(sub_819CBDC) >> 16;
- gTasks[taskId].data[7] = (u32)(sub_819CBDC);
- gTasks[taskId].func = Task_HandleSwapScreenYesNo;
+ gTasks[taskId].tState = STATE_YESNO_SHOW;
+ gTasks[taskId].tFollowUpTaskPtrHi = (u32)(Swap_HandleQuitSwappingResposne) >> 16;
+ gTasks[taskId].tFollowUpTaskPtrLo = (u32)(Swap_HandleQuitSwappingResposne);
+ gTasks[taskId].func = Swap_Task_HandleYesNo;
}
}
-static void sub_819CC74(u8 taskId)
+static void Swap_HandleAcceptMonResponse(u8 taskId)
{
- sub_819F3F8(sFactorySwapScreen->unk2C, &sFactorySwapScreen->unk30, TRUE);
- if (gTasks[taskId].data[1] == 1)
+ CloseMonPic(sFactorySwapScreen->monPic, &sFactorySwapScreen->monPicAnimating, TRUE);
+ if (gTasks[taskId].tSaidYes == TRUE)
{
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = Task_CloseSwapScreen;
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].func = Swap_Task_Exit;
}
else
{
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[6] = (u32)(Task_HandleSwapScreenChooseMons) >> 16;
- gTasks[taskId].data[7] = (u32)(Task_HandleSwapScreenChooseMons);
- gTasks[taskId].data[5] = 1;
- gTasks[taskId].func = sub_819D770;
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tFollowUpTaskPtrHi = (u32)(Swap_Task_HandleChooseMons) >> 16;
+ gTasks[taskId].tFollowUpTaskPtrLo = (u32)(Swap_Task_HandleChooseMons);
+ gTasks[taskId].tFollowUpTaskState = STATE_CHOOSE_MONS_HANDLE_INPUT;
+ gTasks[taskId].func = Swap_Task_ScreenInfoTransitionIn;
}
}
-static void sub_819CCD4(u8 taskId)
+static void Swap_AskAcceptMon(u8 taskId)
{
- if (gTasks[taskId].data[0] == 0)
+ if (gTasks[taskId].tState == 0)
{
- sub_819F2B4(&sFactorySwapScreen->unk2C.field1, &sFactorySwapScreen->unk30, TRUE);
+ OpenMonPic(&sFactorySwapScreen->monPic.bgSpriteId, &sFactorySwapScreen->monPicAnimating, TRUE);
Swap_PrintOnInfoWindow(gText_AcceptThisPkmn);
sFactorySwapScreen->monSwapped = TRUE;
- gTasks[taskId].data[0] = 4;
- gTasks[taskId].data[6] = (u32)(sub_819CC74) >> 16;
- gTasks[taskId].data[7] = (u32)(sub_819CC74);
- gTasks[taskId].func = Task_HandleSwapScreenYesNo;
+ gTasks[taskId].tState = STATE_YESNO_SHOW;
+ gTasks[taskId].tFollowUpTaskPtrHi = (u32)(Swap_HandleAcceptMonResponse) >> 16;
+ gTasks[taskId].tFollowUpTaskPtrLo = (u32)(Swap_HandleAcceptMonResponse);
+ gTasks[taskId].func = Swap_Task_HandleYesNo;
}
}
-static void Task_HandleSwapScreenMenu(u8 taskId)
+static void Swap_Task_HandleMenu(u8 taskId)
{
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
- case 2:
+ case STATE_MENU_INIT:
if (!sFactorySwapScreen->fromSummaryScreen)
- sub_819F2B4(&sFactorySwapScreen->unk2C.field1, &sFactorySwapScreen->unk30, TRUE);
- gTasks[taskId].data[0] = 9;
+ OpenMonPic(&sFactorySwapScreen->monPic.bgSpriteId, &sFactorySwapScreen->monPicAnimating, TRUE);
+ gTasks[taskId].tState = STATE_MENU_SHOW_OPTIONS;
break;
- case 9:
- if (sFactorySwapScreen->unk30 != TRUE)
+ case STATE_MENU_SHOW_OPTIONS:
+ if (sFactorySwapScreen->monPicAnimating != TRUE)
{
Swap_ShowMenuOptions();
- gTasks[taskId].data[0] = 3;
+ gTasks[taskId].tState = STATE_MENU_HANDLE_INPUT;
}
break;
- case 3:
- if (sFactorySwapScreen->unk30 != TRUE)
+ case STATE_MENU_HANDLE_INPUT:
+ if (sFactorySwapScreen->monPicAnimating != TRUE)
{
if (JOY_NEW(A_BUTTON))
{
@@ -2505,13 +2598,13 @@ static void Task_HandleSwapScreenMenu(u8 taskId)
else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
- sub_819F3F8(sFactorySwapScreen->unk2C, &sFactorySwapScreen->unk30, TRUE);
- sub_819EA64(3);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[6] = (u32)(Task_HandleSwapScreenChooseMons) >> 16;
- gTasks[taskId].data[7] = (u32)(Task_HandleSwapScreenChooseMons);
- gTasks[taskId].data[5] = 1;
- gTasks[taskId].func = sub_819D770;
+ CloseMonPic(sFactorySwapScreen->monPic, &sFactorySwapScreen->monPicAnimating, TRUE);
+ Swap_ErasePopupMenu(SWAP_WIN_OPTIONS);
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tFollowUpTaskPtrHi = (u32)(Swap_Task_HandleChooseMons) >> 16;
+ gTasks[taskId].tFollowUpTaskPtrLo = (u32)(Swap_Task_HandleChooseMons);
+ gTasks[taskId].tFollowUpTaskState = STATE_CHOOSE_MONS_HANDLE_INPUT;
+ gTasks[taskId].func = Swap_Task_ScreenInfoTransitionIn;
}
else if (JOY_REPEAT(DPAD_UP))
{
@@ -2526,37 +2619,40 @@ static void Task_HandleSwapScreenMenu(u8 taskId)
}
}
-static void Task_HandleSwapScreenChooseMons(u8 taskId)
+// Handles input on the two main swap screens (choosing a current pokeon to get rid of, and choosing a new pokemon to receive)
+static void Swap_Task_HandleChooseMons(u8 taskId)
{
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
- case 0:
+ case STATE_CHOOSE_MONS_INIT:
if (!gPaletteFade.active)
{
- sFactorySwapScreen->unk22 = TRUE;
- gTasks[taskId].data[0] = 1;
+ sFactorySwapScreen->fadeSpeciesNameActive = TRUE;
+ gTasks[taskId].tState = STATE_CHOOSE_MONS_HANDLE_INPUT;
}
break;
- case 1:
+ case STATE_CHOOSE_MONS_HANDLE_INPUT:
if (JOY_NEW(A_BUTTON))
{
+ // Run whatever action is currently selected (a pokeball, the Cancel button, etc.)
PlaySE(SE_SELECT);
- sFactorySwapScreen->unk22 = FALSE;
- Swap_PrintMonSpecies2();
- sub_819EAC0();
+ sFactorySwapScreen->fadeSpeciesNameActive = FALSE;
+ Swap_PrintMonSpeciesAtFade();
+ Swap_EraseSpeciesWindow();
Swap_RunActionFunc(taskId);
}
else if (JOY_NEW(B_BUTTON))
{
+ // Ask if player wants to quit swapping
PlaySE(SE_SELECT);
- sFactorySwapScreen->unk22 = FALSE;
- Swap_PrintMonSpecies2();
- sub_819EAC0();
- gTasks[taskId].data[6] = (u32)(sub_819CC24) >> 16;
- gTasks[taskId].data[7] = (u32)(sub_819CC24);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[5] = 0;
- gTasks[taskId].func = sub_819D588;
+ sFactorySwapScreen->fadeSpeciesNameActive = FALSE;
+ Swap_PrintMonSpeciesAtFade();
+ Swap_EraseSpeciesWindow();
+ gTasks[taskId].tFollowUpTaskPtrHi = (u32)(Swap_AskQuitSwapping) >> 16;
+ gTasks[taskId].tFollowUpTaskPtrLo = (u32)(Swap_AskQuitSwapping);
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tFollowUpTaskState = 0;
+ gTasks[taskId].func = Swap_Task_ScreenInfoTransitionOut;
}
else if (JOY_REPEAT(DPAD_LEFT))
{
@@ -2586,116 +2682,121 @@ static void Task_HandleSwapScreenChooseMons(u8 taskId)
}
}
-static void Task_SwapFadeSpeciesName(u8 taskId)
+static void Swap_Task_FadeSpeciesName(u8 taskId)
{
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
- case 0:
- sFactorySwapScreen->unk27 = 0;
- sFactorySwapScreen->unk28 = 0;
- sFactorySwapScreen->unk26 = TRUE;
- gTasks[taskId].data[0] = 1;
+ case FADESTATE_INIT:
+ sFactorySwapScreen->fadeSpeciesNameCoeffDelay = 0;
+ sFactorySwapScreen->fadeSpeciesNameCoeff = 0;
+ sFactorySwapScreen->fadeSpeciesNameFadeOut = TRUE;
+ gTasks[taskId].tState = FADESTATE_RUN;
break;
- case 1:
- if (sFactorySwapScreen->unk22)
+ case FADESTATE_RUN:
+ if (sFactorySwapScreen->fadeSpeciesNameActive)
{
- if (sFactorySwapScreen->unk29)
+ if (sFactorySwapScreen->faceSpeciesNameDelay)
{
- gTasks[taskId].data[0] = 2;
+ gTasks[taskId].tState = FADESTATE_DELAY;
}
else
{
- sFactorySwapScreen->unk27++;
- if (sFactorySwapScreen->unk27 > 6)
+ sFactorySwapScreen->fadeSpeciesNameCoeffDelay++;
+ if (sFactorySwapScreen->fadeSpeciesNameCoeffDelay > 6)
{
- sFactorySwapScreen->unk27 = 0;
- if (!sFactorySwapScreen->unk26)
- sFactorySwapScreen->unk28--;
+ sFactorySwapScreen->fadeSpeciesNameCoeffDelay = 0;
+ if (!sFactorySwapScreen->fadeSpeciesNameFadeOut)
+ sFactorySwapScreen->fadeSpeciesNameCoeff--;
else
- sFactorySwapScreen->unk28++;
+ sFactorySwapScreen->fadeSpeciesNameCoeff++;
}
- BlendPalettes(0x4000, sFactorySwapScreen->unk28, 0);
- if (sFactorySwapScreen->unk28 > 5)
+ BlendPalettes(0x4000, sFactorySwapScreen->fadeSpeciesNameCoeff, 0);
+ if (sFactorySwapScreen->fadeSpeciesNameCoeff > 5)
{
- sFactorySwapScreen->unk26 = FALSE;
+ sFactorySwapScreen->fadeSpeciesNameFadeOut = FALSE;
}
- else if (sFactorySwapScreen->unk28 == 0)
+ else if (sFactorySwapScreen->fadeSpeciesNameCoeff == 0)
{
- gTasks[taskId].data[0] = 2;
- sFactorySwapScreen->unk26 = TRUE;
+ gTasks[taskId].tState = FADESTATE_DELAY;
+ sFactorySwapScreen->fadeSpeciesNameFadeOut = TRUE;
}
}
}
break;
- case 2:
- if (sFactorySwapScreen->unk29 > 14)
+ case FADESTATE_DELAY:
+ if (sFactorySwapScreen->faceSpeciesNameDelay > 14)
{
- sFactorySwapScreen->unk29 = 0;
- gTasks[taskId].data[0] = 1;
+ sFactorySwapScreen->faceSpeciesNameDelay = 0;
+ gTasks[taskId].tState = FADESTATE_RUN;
}
else
{
- sFactorySwapScreen->unk29++;
+ sFactorySwapScreen->faceSpeciesNameDelay++;
}
break;
}
}
-static void Task_SwapFadeSpeciesName2(u8 taskId)
+#define tFadeOutFinished data[4]
+
+static void Swap_Task_FadeOutSpeciesName(u8 taskId)
{
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 0:
- sFactorySwapScreen->unk27 = 0;
- gTasks[taskId].data[4] = 0;
- gTasks[taskId].data[0]++;
+ sFactorySwapScreen->fadeSpeciesNameCoeffDelay = 0;
+ gTasks[taskId].tFadeOutFinished = FALSE;
+ gTasks[taskId].tState++;
break;
case 1:
LoadPalette(&gPlttBufferUnfaded[0xF0], 0xE0, 0xA);
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
break;
case 2:
- if (sFactorySwapScreen->unk28 > 15)
+ if (sFactorySwapScreen->fadeSpeciesNameCoeff > 15)
{
- gTasks[taskId].data[4] = 1;
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tFadeOutFinished = TRUE;
+ gTasks[taskId].tState++;
}
- sFactorySwapScreen->unk27++;
- if (sFactorySwapScreen->unk27 > 3)
+ sFactorySwapScreen->fadeSpeciesNameCoeffDelay++;
+ if (sFactorySwapScreen->fadeSpeciesNameCoeffDelay > 3)
{
- sFactorySwapScreen->unk27 = 0;
+ sFactorySwapScreen->fadeSpeciesNameCoeffDelay = 0;
gPlttBufferUnfaded[244] = gPlttBufferFaded[228];
- sFactorySwapScreen->unk28++;
+ sFactorySwapScreen->fadeSpeciesNameCoeff++;
}
- BlendPalettes(0x4000, sFactorySwapScreen->unk28, 0);
+ BlendPalettes(0x4000, sFactorySwapScreen->fadeSpeciesNameCoeff, 0);
break;
}
}
-static void sub_819D12C(u8 taskId)
+// Slide current pokeballs offscreen to the right and new pokeballs onscreen from
+// the left during transition between player's/enemy's party screens
+#define tBallCycled(i) data[(i) + 1]
+static void Swap_Task_SlideCycleBalls(u8 taskId)
{
s8 i;
- u8 var_2C;
- bool8 destroyTask;
+ u8 lastX;
+ bool8 finished;
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 0:
- gTasks[taskId].data[1] = 0;
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].data[3] = 0;
- gTasks[taskId].data[0] = 1;
+ gTasks[taskId].tBallCycled(0) = FALSE;
+ gTasks[taskId].tBallCycled(1) = FALSE;
+ gTasks[taskId].tBallCycled(2) = FALSE;
+ gTasks[taskId].tState = 1;
break;
case 1:
- var_2C = 0;
- for (i = 2; i >= 0; i--)
+ lastX = 0;
+ for (i = FRONTIER_PARTY_SIZE - 1; i >= 0; i--)
{
- if (i != 2)
+ if (i != FRONTIER_PARTY_SIZE - 1)
{
- u8 posX = var_2C - gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
- if (posX == 16 || gTasks[taskId].data[i + 2] == 1)
+ u8 posX = lastX - gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
+ if (posX == 16 || gTasks[taskId].tBallCycled(i + 1) == TRUE)
{
- var_2C = gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
+ lastX = gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x += 10;
}
else if (posX > 16)
@@ -2705,402 +2806,449 @@ static void sub_819D12C(u8 taskId)
}
else
{
- var_2C = gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
+ lastX = gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x += 10;
}
- if (gTasks[taskId].data[i + 1] == 1)
+ if (gTasks[taskId].tBallCycled(i) == TRUE)
{
+ // New ball coming in from left, check if it has reached dest
if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x > (i * 48) + 72)
{
+ // Overshot dest, set x and finish
gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x = (i * 48) + 72;
- destroyTask = TRUE;
+ finished = TRUE;
}
else if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x == (i * 48) + 72)
{
- destroyTask = TRUE;
+ finished = TRUE;
}
else
{
- destroyTask = FALSE;
+ finished = FALSE;
}
}
else
{
- destroyTask = FALSE;
+ finished = FALSE;
}
- if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x - 16 > 240)
+ if (gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x - 16 > DISPLAY_WIDTH)
{
- var_2C = gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
+ // Ball is offscreen right, cycle its palette and move to left side of screen
+ lastX = gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x;
gSprites[sFactorySwapScreen->ballSpriteIds[i]].pos1.x = -16;
if (sFactorySwapScreen->inEnemyScreen == TRUE)
- gSprites[sFactorySwapScreen->ballSpriteIds[i]].oam.paletteNum = IndexOfSpritePaletteTag(TAG_PAL_BALL_SELECTED);
+ gSprites[sFactorySwapScreen->ballSpriteIds[i]].oam.paletteNum = IndexOfSpritePaletteTag(PALTAG_BALL_SELECTED);
else
- gSprites[sFactorySwapScreen->ballSpriteIds[i]].oam.paletteNum = IndexOfSpritePaletteTag(TAG_PAL_BALL_GREY);
+ gSprites[sFactorySwapScreen->ballSpriteIds[i]].oam.paletteNum = IndexOfSpritePaletteTag(PALTAG_BALL_GRAY);
- gTasks[taskId].data[i + 1] = 1;
+ gTasks[taskId].tBallCycled(i) = TRUE;
}
}
- if (destroyTask == TRUE)
+ if (finished == TRUE)
DestroyTask(taskId);
break;
}
}
-static void sub_819D324(u8 taskId)
+// For sliding the action buttons (Cancel, Pkmn for Swap) on/off screen
+
+#define SLIDE_BUTTON_PKMN 0
+#define SLIDE_BUTTON_CANCEL 1
+
+#define tTaskId data[1]
+#define tSlidingOn data[2]
+#define tXIncrement data[3]
+
+// Data to be used by the task that creates this task
+#define tSecondSlideDelay data[2]
+#define tSlideFinishedPkmn data[3]
+#define tSlideFinishedCancel data[4]
+
+static void Swap_Task_SlideButtonOnOffScreen(u8 taskId)
{
u8 i, j;
s32 posX = 0;
- s8 r4 = gTasks[taskId].data[3];
- bool8 r1;
+ s8 deltaX = gTasks[taskId].tXIncrement;
+ bool8 sliding;
s16 currPosX;
- u8 taskId2;
+ u8 prevTaskId;
- if (gTasks[taskId].data[2] == 1)
- r4 *= -1;
+ if (gTasks[taskId].tSlidingOn == TRUE)
+ deltaX *= -1;
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
- case 0:
- currPosX = gSprites[sFactorySwapScreen->unk8[0][0]].pos1.x;
- if (!gTasks[taskId].data[2])
+ case SLIDE_BUTTON_PKMN:
+ currPosX = gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0][0]].pos1.x;
+ if (!gTasks[taskId].tSlidingOn)
{
- if (currPosX + r4 < 240)
+ // Sliding "Pkmn for Swap" offscreen
+ if (currPosX + deltaX < DISPLAY_WIDTH)
{
- r1 = TRUE;
+ sliding = TRUE;
}
else
{
- r1 = FALSE;
- posX = 240;
+ sliding = FALSE;
+ posX = DISPLAY_WIDTH;
}
}
else
{
- if (currPosX + r4 > 160)
+ // Sliding "Pkmn for Swap" onscreen
+ if (currPosX + deltaX > 160)
{
- r1 = TRUE;
+ sliding = TRUE;
}
else
{
- r1 = FALSE;
+ sliding = FALSE;
posX = 160;
}
}
- if (r1 == TRUE)
+ if (sliding == TRUE)
{
- for (i = 0; i < 3; i++)
+ // Do movement
+ for (i = 0; i < ARRAY_COUNT(sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0]); i++)
{
- for (j = 0; j < 2; j++)
- gSprites[sFactorySwapScreen->unk8[j][i]].pos1.x += r4;
+ for (j = 0; j < ARRAY_COUNT(sFactorySwapScreen->pkmnForSwapButtonSpriteIds); j++)
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][i]].pos1.x += deltaX;
}
}
else
{
- for (j = 0; j < 2; j++)
+ // Set final position
+ for (j = 0; j < ARRAY_COUNT(sFactorySwapScreen->pkmnForSwapButtonSpriteIds); j++)
{
- gSprites[sFactorySwapScreen->unk8[j][0]].pos1.x = posX;
- gSprites[sFactorySwapScreen->unk8[j][1]].pos1.x = posX + 16;
- gSprites[sFactorySwapScreen->unk8[j][2]].pos1.x = posX + 48;
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][0]].pos1.x = posX;
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][1]].pos1.x = posX + 16;
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[j][2]].pos1.x = posX + 48;
}
- taskId2 = gTasks[taskId].data[1];
- gTasks[taskId2].data[3] = 1;
+ prevTaskId = gTasks[taskId].tTaskId;
+ gTasks[prevTaskId].tSlideFinishedPkmn = TRUE;
DestroyTask(taskId);
}
break;
- case 1:
- currPosX = gSprites[sFactorySwapScreen->unkE[0][0]].pos1.x;
- if (!gTasks[taskId].data[2])
+ case SLIDE_BUTTON_CANCEL:
+ currPosX = gSprites[sFactorySwapScreen->cancelButtonSpriteIds[0][0]].pos1.x;
+ if (!gTasks[taskId].tSlidingOn)
{
- if (currPosX + r4 < 240)
+ // Sliding "Cancel" offscreen
+ if (currPosX + deltaX < DISPLAY_WIDTH)
{
- r1 = TRUE;
+ sliding = TRUE;
}
else
{
- r1 = FALSE;
- posX = 240;
+ sliding = FALSE;
+ posX = DISPLAY_WIDTH;
}
}
else
{
- if (currPosX + r4 > 192)
+ // Sliding "Cancel" onscreen
+ if (currPosX + deltaX > 192)
{
- r1 = TRUE;
+ sliding = TRUE;
}
else
{
- r1 = FALSE;
+ sliding = FALSE;
posX = 192;
}
}
- if (r1 == TRUE)
+ if (sliding == TRUE)
{
- for (i = 0; i < 2; i++)
+ // Do movement
+ for (i = 0; i < ARRAY_COUNT(sFactorySwapScreen->cancelButtonSpriteIds); i++)
{
- for (j = 0; j < 2; j++)
- gSprites[sFactorySwapScreen->unkE[j][i]].pos1.x += r4;
+ for (j = 0; j < ARRAY_COUNT(sFactorySwapScreen->cancelButtonSpriteIds[0]); j++)
+ gSprites[sFactorySwapScreen->cancelButtonSpriteIds[j][i]].pos1.x += deltaX;
}
}
else
{
- for (j = 0; j < 2; j++)
+ // Set final position
+ for (j = 0; j < ARRAY_COUNT(sFactorySwapScreen->cancelButtonSpriteIds); j++)
{
- gSprites[sFactorySwapScreen->unkE[j][0]].pos1.x = posX;
- gSprites[sFactorySwapScreen->unkE[j][1]].pos1.x = posX + 16;
+ gSprites[sFactorySwapScreen->cancelButtonSpriteIds[j][0]].pos1.x = posX;
+ gSprites[sFactorySwapScreen->cancelButtonSpriteIds[j][1]].pos1.x = posX + 16;
}
- taskId2 = gTasks[taskId].data[1];
- gTasks[taskId2].data[4] = 1;
+ prevTaskId = gTasks[taskId].tTaskId;
+ gTasks[prevTaskId].tSlideFinishedCancel = TRUE;
DestroyTask(taskId);
}
break;
}
}
-static void sub_819D588(u8 taskId)
+// Slide action buttons offscreen
+static void Swap_Task_ScreenInfoTransitionOut(u8 taskId)
{
- u8 anotherTaskId;
- u16 loPtr, hiPtr;
+ u8 slideTaskId;
+ u16 hiPtr, loPtr;
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 0:
- LoadPalette(gUnknown_08610918, 0xE0, sizeof(gUnknown_08610918));
+ LoadPalette(sSwapText_Pal, 0xE0, sizeof(sSwapText_Pal));
Swap_PrintActionStrings();
- PutWindowTilemap(5);
- gTasks[taskId].data[0]++;
+ PutWindowTilemap(SWAP_WIN_ACTION_FADE);
+ gTasks[taskId].tState++;
break;
case 1:
- sub_819EA64(3);
- gTasks[taskId].data[0]++;
+ Swap_ErasePopupMenu(SWAP_WIN_OPTIONS);
+ gTasks[taskId].tState++;
break;
case 2:
- BeginNormalPaletteFade(0x4000, 0, 0, 0x10, gUnknown_0860F13C[37]);
- gTasks[taskId].data[0]++;
+ BeginNormalPaletteFade(0x4000, 0, 0, 16, sPokeballGray_Pal[37]);
+ gTasks[taskId].tState++;
break;
case 3:
if (!gPaletteFade.active)
{
- FillWindowPixelBuffer(5, PIXEL_FILL(0));
- CopyWindowToVram(5, 2);
+ FillWindowPixelBuffer(SWAP_WIN_ACTION_FADE, PIXEL_FILL(0));
+ CopyWindowToVram(SWAP_WIN_ACTION_FADE, 2);
if (sFactorySwapScreen->inEnemyScreen == TRUE)
{
- anotherTaskId = CreateTask(sub_819D324, 0);
- gTasks[taskId].data[3] = 0;
- gTasks[anotherTaskId].data[1] = taskId;
- gTasks[anotherTaskId].data[0] = 0;
- gTasks[anotherTaskId].data[2] = 0;
- gTasks[anotherTaskId].data[3] = 6;
- gTasks[taskId].data[2] = 5;
- gTasks[taskId].data[0]++;
+ // Start "Pkmn for Swap" button slide offscreen
+ slideTaskId = CreateTask(Swap_Task_SlideButtonOnOffScreen, 0);
+ gTasks[taskId].tSlideFinishedPkmn = FALSE;
+ gTasks[slideTaskId].tTaskId = taskId;
+ gTasks[slideTaskId].tState = SLIDE_BUTTON_PKMN;
+ gTasks[slideTaskId].tSlidingOn = FALSE;
+ gTasks[slideTaskId].tXIncrement = 6;
+ gTasks[taskId].tSecondSlideDelay = 5;
+ gTasks[taskId].tState++;
}
else
{
- anotherTaskId = CreateTask(sub_819D324, 0);
- gTasks[taskId].data[3] = 1;
- gTasks[taskId].data[4] = 0;
- gTasks[anotherTaskId].data[1] = taskId;
- gTasks[anotherTaskId].data[0] = 1;
- gTasks[anotherTaskId].data[2] = 0;
- gTasks[anotherTaskId].data[3] = 6;
- gTasks[taskId].data[0] += 2;
+ // Start "Cancel" button slide offscreen
+ slideTaskId = CreateTask(Swap_Task_SlideButtonOnOffScreen, 0);
+ gTasks[taskId].tSlideFinishedPkmn = TRUE;
+ gTasks[taskId].tSlideFinishedCancel = FALSE;
+ gTasks[slideTaskId].tTaskId = taskId;
+ gTasks[slideTaskId].tState = SLIDE_BUTTON_CANCEL;
+ gTasks[slideTaskId].tSlidingOn = FALSE;
+ gTasks[slideTaskId].tXIncrement = 6;
+ gTasks[taskId].tState += 2;
}
}
break;
case 4:
- if (gTasks[taskId].data[2] == 0)
+ // Start "Cancel" button slide offscreen for screens with both buttons
+ if (gTasks[taskId].tSecondSlideDelay == 0)
{
- anotherTaskId = CreateTask(sub_819D324, 0);
- gTasks[taskId].data[4] = 0;
- gTasks[anotherTaskId].data[1] = taskId;
- gTasks[anotherTaskId].data[0] = 1;
- gTasks[anotherTaskId].data[2] = 0;
- gTasks[anotherTaskId].data[3] = 6;
- gTasks[taskId].data[0]++;
+ slideTaskId = CreateTask(Swap_Task_SlideButtonOnOffScreen, 0);
+ gTasks[taskId].tSlideFinishedCancel = FALSE;
+ gTasks[slideTaskId].tTaskId = taskId;
+ gTasks[slideTaskId].tState = SLIDE_BUTTON_CANCEL;
+ gTasks[slideTaskId].tSlidingOn = FALSE;
+ gTasks[slideTaskId].tXIncrement = 6;
+ gTasks[taskId].tState++;
}
else
{
- gTasks[taskId].data[2]--;
+ gTasks[taskId].tSecondSlideDelay--;
}
break;
case 5:
- if (gTasks[taskId].data[3] == 1 && gTasks[taskId].data[4] == 1)
+ if (gTasks[taskId].tSlideFinishedPkmn == TRUE
+ && gTasks[taskId].tSlideFinishedCancel == TRUE)
{
- gTasks[taskId].data[0] = gTasks[taskId].data[5];
- loPtr = gTasks[taskId].data[6];
- hiPtr = gTasks[taskId].data[7];
- gTasks[taskId].func = (void *)((loPtr << 0x10) | (hiPtr));
+ gTasks[taskId].tState = gTasks[taskId].tFollowUpTaskState;
+ hiPtr = gTasks[taskId].tFollowUpTaskPtrHi;
+ loPtr = gTasks[taskId].tFollowUpTaskPtrLo;
+ gTasks[taskId].func = (void *)((hiPtr << 16) | (loPtr));
}
break;
}
}
-static void sub_819D770(u8 taskId)
+// Slide action buttons onscreen, reprint swap dialogue and mon info
+static void Swap_Task_ScreenInfoTransitionIn(u8 taskId)
{
- u8 anotherTaskId;
- u16 loPtr, hiPtr;
- if (sFactorySwapScreen->unk30 == TRUE)
+ u8 slideTaskId;
+ u16 hiPtr, loPtr;
+ if (sFactorySwapScreen->monPicAnimating == TRUE)
return;
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 0:
if (sFactorySwapScreen->inEnemyScreen == TRUE)
{
- anotherTaskId = CreateTask(sub_819D324, 0);
- gTasks[taskId].data[3] = 0;
- gTasks[anotherTaskId].data[1] = taskId;
- gTasks[anotherTaskId].data[0] = 0;
- gTasks[anotherTaskId].data[2] = 1;
- gTasks[anotherTaskId].data[3] = 6;
- gTasks[taskId].data[2] = 10;
- gTasks[taskId].data[0]++;
+ // Start "Pkmn for Swap" button slide onscreen
+ slideTaskId = CreateTask(Swap_Task_SlideButtonOnOffScreen, 0);
+ gTasks[taskId].tSlideFinishedPkmn = FALSE;
+ gTasks[slideTaskId].tTaskId = taskId;
+ gTasks[slideTaskId].tState = SLIDE_BUTTON_PKMN;
+ gTasks[slideTaskId].tSlidingOn = TRUE;
+ gTasks[slideTaskId].tXIncrement = 6;
+ gTasks[taskId].tSecondSlideDelay = 10;
+ gTasks[taskId].tState++;
}
else
{
- anotherTaskId = CreateTask(sub_819D324, 0);
- gTasks[taskId].data[3] = 1;
- gTasks[taskId].data[4] = 0;
- gTasks[anotherTaskId].data[1] = taskId;
- gTasks[anotherTaskId].data[0] = 1;
- gTasks[anotherTaskId].data[2] = 1;
- gTasks[anotherTaskId].data[3] = 6;
- gTasks[taskId].data[0] += 2;
+ // Start "Cancel" button slide onscreen
+ slideTaskId = CreateTask(Swap_Task_SlideButtonOnOffScreen, 0);
+ gTasks[taskId].tSlideFinishedPkmn = TRUE;
+ gTasks[taskId].tSlideFinishedCancel = FALSE;
+ gTasks[slideTaskId].tTaskId = taskId;
+ gTasks[slideTaskId].tState = SLIDE_BUTTON_CANCEL;
+ gTasks[slideTaskId].tSlidingOn = TRUE;
+ gTasks[slideTaskId].tXIncrement = 6;
+ gTasks[taskId].tState += 2;
}
break;
case 1:
- if (gTasks[taskId].data[2] == 0)
+ // Start "Cancel" button slide onscreen for screens with both buttons
+ if (gTasks[taskId].tSecondSlideDelay == 0)
{
- anotherTaskId = CreateTask(sub_819D324, 0);
- gTasks[taskId].data[4] = 0;
- gTasks[anotherTaskId].data[1] = taskId;
- gTasks[anotherTaskId].data[0] = 1;
- gTasks[anotherTaskId].data[2] = 1;
- gTasks[anotherTaskId].data[3] = 6;
- gTasks[taskId].data[0]++;
+ slideTaskId = CreateTask(Swap_Task_SlideButtonOnOffScreen, 0);
+ gTasks[taskId].tSlideFinishedCancel = FALSE;
+ gTasks[slideTaskId].tTaskId = taskId;
+ gTasks[slideTaskId].tState = SLIDE_BUTTON_CANCEL;
+ gTasks[slideTaskId].tSlidingOn = TRUE;
+ gTasks[slideTaskId].tXIncrement = 6;
+ gTasks[taskId].tState++;
}
else
{
- gTasks[taskId].data[2]--;
+ gTasks[taskId].tSecondSlideDelay--;
}
break;
case 2:
- if (gTasks[taskId].data[3] == 1 && gTasks[taskId].data[4] == 1)
+ if (gTasks[taskId].tSlideFinishedPkmn == TRUE
+ && gTasks[taskId].tSlideFinishedCancel == TRUE)
{
- gPlttBufferFaded[226] = gUnknown_0860F13C[37];
+ gPlttBufferFaded[226] = sPokeballGray_Pal[37];
Swap_PrintActionStrings();
- PutWindowTilemap(5);
- gTasks[taskId].data[0]++;
+ PutWindowTilemap(SWAP_WIN_ACTION_FADE);
+ gTasks[taskId].tState++;
}
break;
case 3:
- BeginNormalPaletteFade(0x4000, 0, 0x10, 0, gUnknown_0860F13C[37]);
- gTasks[taskId].data[0]++;
+ BeginNormalPaletteFade(0x4000, 0, 16, 0, sPokeballGray_Pal[37]);
+ gTasks[taskId].tState++;
break;
case 4:
if (!gPaletteFade.active)
{
Swap_PrintOneActionString(0);
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
}
break;
case 5:
Swap_PrintOneActionString(1);
- PutWindowTilemap(3);
- gTasks[taskId].data[0]++;
+ PutWindowTilemap(SWAP_WIN_OPTIONS);
+ gTasks[taskId].tState++;
break;
case 6:
- FillWindowPixelBuffer(5, PIXEL_FILL(0));
- CopyWindowToVram(5, 2);
- gTasks[taskId].data[0]++;
+ FillWindowPixelBuffer(SWAP_WIN_ACTION_FADE, PIXEL_FILL(0));
+ CopyWindowToVram(SWAP_WIN_ACTION_FADE, 2);
+ gTasks[taskId].tState++;
break;
case 7:
if (!sFactorySwapScreen->inEnemyScreen)
Swap_PrintOnInfoWindow(gText_SelectPkmnToSwap);
else
Swap_PrintOnInfoWindow(gText_SelectPkmnToAccept);
- if (sFactorySwapScreen->cursorPos < 3)
+ if (sFactorySwapScreen->cursorPos < FRONTIER_PARTY_SIZE)
gSprites[sFactorySwapScreen->cursorSpriteId].invisible = FALSE;
Swap_PrintMonCategory();
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
break;
case 8:
- Swap_PrintMonSpecies3();
- sub_819EADC();
- sFactorySwapScreen->unk22 = TRUE;
- gTasks[taskId].data[0] = gTasks[taskId].data[5];
- loPtr = gTasks[taskId].data[6];
- hiPtr = gTasks[taskId].data[7];
- gTasks[taskId].func = (void *)((loPtr << 0x10) | (hiPtr));
+ Swap_PrintMonSpeciesForTransition();
+ Swap_EraseSpeciesAtFadeWindow();
+ sFactorySwapScreen->fadeSpeciesNameActive = TRUE;
+ gTasks[taskId].tState = gTasks[taskId].tFollowUpTaskState;
+ hiPtr = gTasks[taskId].tFollowUpTaskPtrHi;
+ loPtr = gTasks[taskId].tFollowUpTaskPtrLo;
+ gTasks[taskId].func = (void *)((hiPtr << 16) | (loPtr));
break;
}
}
-static void sub_819D9EC(u8 taskId)
+#undef tTaskId
+#undef tSlidingOn
+#undef tXIncrement
+#undef tSlideFinishedPkmn
+#undef tSlideFinishedCancel
+
+// For switching between the swap screens with the player's / enemy's parties
+static void Swap_Task_SwitchPartyScreen(u8 taskId)
{
u8 i;
- if (sFactorySwapScreen->unk30 == TRUE)
+ if (sFactorySwapScreen->monPicAnimating == TRUE)
return;
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 0:
- Swap_PrintMonSpecies3();
- gTasks[taskId].data[0]++;
+ Swap_PrintMonSpeciesForTransition();
+ gTasks[taskId].tState++;
break;
case 1:
- sub_819EADC();
+ Swap_EraseSpeciesAtFadeWindow();
gSprites[sFactorySwapScreen->cursorSpriteId].invisible = TRUE;
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
break;
case 2:
- CreateTask(sub_819D12C, 0);
- gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].func = Task_SwapFadeSpeciesName2;
- gTasks[taskId].data[0]++;
+ CreateTask(Swap_Task_SlideCycleBalls, 0);
+ gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].func = Swap_Task_FadeOutSpeciesName;
+ gTasks[taskId].tState++;
break;
case 3:
- if (!FuncIsActiveTask(sub_819D12C) && gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].data[4] == 1)
+ if (!FuncIsActiveTask(Swap_Task_SlideCycleBalls)
+ && gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].tFadeOutFinished == TRUE)
{
- sub_819EAC0();
+ Swap_EraseSpeciesWindow();
if (!sFactorySwapScreen->inEnemyScreen)
{
- Swap_InitActions(ACTIONS_ENEMY_SCREEN);
+ Swap_InitActions(SWAP_ENEMY_SCREEN);
}
else
{
- Swap_InitActions(ACTIONS_PLAYER_SCREEN);
- for (i = 0; i < 3; i++)
- gSprites[sFactorySwapScreen->unk8[1][i]].invisible = TRUE;
+ Swap_InitActions(SWAP_PLAYER_SCREEN);
+
+ // Hide "Pkmn for Swap" button
+ for (i = 0; i < ARRAY_COUNT(sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0]); i++)
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[1][i]].invisible = TRUE;
}
gSprites[sFactorySwapScreen->cursorSpriteId].pos1.x = gSprites[sFactorySwapScreen->ballSpriteIds[sFactorySwapScreen->cursorPos]].pos1.x;
- gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].func = Task_SwapFadeSpeciesName;
- sFactorySwapScreen->unk27 = 0;
- sFactorySwapScreen->unk28 = 6;
- sFactorySwapScreen->unk26 = FALSE;
- gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].data[0] = 1;
- gTasks[taskId].data[0]++;
+ gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].func = Swap_Task_FadeSpeciesName;
+ sFactorySwapScreen->fadeSpeciesNameCoeffDelay = 0;
+ sFactorySwapScreen->fadeSpeciesNameCoeff = 6;
+ sFactorySwapScreen->fadeSpeciesNameFadeOut = FALSE;
+ gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].tState = FADESTATE_RUN;
+ gTasks[taskId].tState++;
}
break;
case 4:
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[6] = (u32)(Task_HandleSwapScreenChooseMons) >> 0x10;
- gTasks[taskId].data[7] = (u32)(Task_HandleSwapScreenChooseMons);
- gTasks[taskId].data[5] = 1;
- gTasks[taskId].func = sub_819D770;
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tFollowUpTaskPtrHi = (u32)(Swap_Task_HandleChooseMons) >> 16;
+ gTasks[taskId].tFollowUpTaskPtrLo = (u32)(Swap_Task_HandleChooseMons);
+ gTasks[taskId].tFollowUpTaskState = STATE_CHOOSE_MONS_HANDLE_INPUT;
+ gTasks[taskId].func = Swap_Task_ScreenInfoTransitionIn;
break;
}
}
+#undef tFadeOutFinished
+
static void Swap_InitStruct(void)
{
if (sFactorySwapScreen == NULL)
{
sFactorySwapScreen = AllocZeroed(sizeof(*sFactorySwapScreen));
sFactorySwapScreen->cursorPos = 0;
- sFactorySwapScreen->unk30 = FALSE;
+ sFactorySwapScreen->monPicAnimating = FALSE;
sFactorySwapScreen->fromSummaryScreen = FALSE;
}
}
@@ -3129,9 +3277,9 @@ static void CB2_InitSwapScreen(void)
break;
case 1:
sSwapMenuTilesetBuffer = Alloc(0x440);
- sSwapMonCardBgTilesetBuffer = AllocZeroed(0x440);
- sSwapMenuTilemapBuffer = Alloc(0x800);
- sSwapMonCardBgTilemapBuffer = AllocZeroed(0x800);
+ sSwapMonPicBgTilesetBuffer = AllocZeroed(0x440);
+ sSwapMenuTilemapBuffer = Alloc(BG_SCREEN_SIZE);
+ sSwapMonPicBgTilemapBuffer = AllocZeroed(BG_SCREEN_SIZE);
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
ChangeBgX(1, 0, 0);
@@ -3157,36 +3305,36 @@ static void CB2_InitSwapScreen(void)
FreeAllSpritePalettes();
ResetAllPicSprites();
CpuCopy16(gFrontierFactorySelectMenu_Gfx, sSwapMenuTilesetBuffer, 0x440);
- CpuCopy16(gUnknown_0861033C, sSwapMonCardBgTilesetBuffer, 0x60);
+ CpuCopy16(sMonPicBg_Gfx, sSwapMonPicBgTilesetBuffer, 0x60);
LoadBgTiles(1, sSwapMenuTilesetBuffer, 0x440, 0);
- LoadBgTiles(3, sSwapMonCardBgTilesetBuffer, 0x60, 0);
- CpuCopy16(gFrontierFactorySelectMenu_Tilemap, sSwapMenuTilemapBuffer, 0x800);
- LoadBgTilemap(1, sSwapMenuTilemapBuffer, 0x800, 0);
+ LoadBgTiles(3, sSwapMonPicBgTilesetBuffer, 0x60, 0);
+ CpuCopy16(gFrontierFactorySelectMenu_Tilemap, sSwapMenuTilemapBuffer, BG_SCREEN_SIZE);
+ LoadBgTilemap(1, sSwapMenuTilemapBuffer, BG_SCREEN_SIZE, 0);
LoadPalette(gFrontierFactorySelectMenu_Pal, 0, 0x40);
- LoadPalette(gUnknown_08610918, 0xF0, sizeof(gUnknown_08610918));
- LoadPalette(gUnknown_08610918, 0xE0, sizeof(gUnknown_08610918));
- LoadPalette(gUnknown_0861039C, 0x20, 4);
+ LoadPalette(sSwapText_Pal, 0xF0, sizeof(sSwapText_Pal));
+ LoadPalette(sSwapText_Pal, 0xE0, sizeof(sSwapText_Pal));
+ LoadPalette(sMonPicBg_Pal, 0x20, 4);
gMain.state++;
break;
case 3:
- SetBgTilemapBuffer(3, sSwapMonCardBgTilemapBuffer);
- CopyToBgTilemapBufferRect(3, gUnknown_0861023C, 11, 4, 8, 8);
+ SetBgTilemapBuffer(3, sSwapMonPicBgTilemapBuffer);
+ CopyToBgTilemapBufferRect(3, sMonPicBg_Tilemap, 11, 4, 8, 8);
CopyBgTilemapBufferToVram(3);
gMain.state++;
break;
case 4:
- LoadSpritePalettes(gUnknown_086106B0);
- LoadSpriteSheets(gUnknown_08610650);
- LoadCompressedSpriteSheet(gUnknown_086106A0);
+ LoadSpritePalettes(sSwap_SpritePalettes);
+ LoadSpriteSheets(sSwap_SpriteSheets);
+ LoadCompressedSpriteSheet(sSwap_BallGfx);
SetVBlankCallback(Swap_VblankCb);
gMain.state++;
break;
case 5:
- #if MODERN
+#ifdef UBFIX
if (sFactorySwapScreen && sFactorySwapScreen->fromSummaryScreen)
- #else
+#else
if (sFactorySwapScreen->fromSummaryScreen == TRUE)
- #endif
+#endif
sFactorySwapScreen->cursorPos = gLastViewedMonIndex;
gMain.state++;
break;
@@ -3195,28 +3343,28 @@ static void CB2_InitSwapScreen(void)
Swap_InitAllSprites();
if (sFactorySwapScreen->fromSummaryScreen == TRUE)
Swap_ShowSummaryMonSprite();
- Swap_InitActions(ACTIONS_PLAYER_SCREEN);
+ Swap_InitActions(SWAP_PLAYER_SCREEN);
gMain.state++;
break;
case 7:
Swap_PrintOnInfoWindow(gText_SelectPkmnToSwap);
- PutWindowTilemap(2);
+ PutWindowTilemap(SWAP_WIN_INFO);
gMain.state++;
break;
case 8:
Swap_PrintMonCategory();
- PutWindowTilemap(8);
+ PutWindowTilemap(SWAP_WIN_MON_CATEGORY);
gMain.state++;
break;
case 9:
if (!sFactorySwapScreen->fromSummaryScreen)
Swap_PrintMonSpecies();
- PutWindowTilemap(1);
+ PutWindowTilemap(SWAP_WIN_SPECIES);
gMain.state++;
break;
case 10:
Swap_PrintPkmnSwap();
- PutWindowTilemap(0);
+ PutWindowTilemap(SWAP_WIN_TITLE);
gMain.state++;
break;
case 11:
@@ -3224,16 +3372,16 @@ static void CB2_InitSwapScreen(void)
break;
case 12:
if (sFactorySwapScreen->fromSummaryScreen)
- Swap_PrintMonSpecies2();
+ Swap_PrintMonSpeciesAtFade();
gMain.state++;
break;
case 13:
Swap_PrintActionStrings2();
- PutWindowTilemap(3);
+ PutWindowTilemap(SWAP_WIN_OPTIONS);
gMain.state++;
break;
case 14:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
ShowBg(0);
ShowBg(1);
@@ -3251,20 +3399,20 @@ static void CB2_InitSwapScreen(void)
gMain.state++;
break;
case 15:
- sFactorySwapScreen->fadeSpeciesNameTaskId = CreateTask(Task_SwapFadeSpeciesName, 0);
+ sFactorySwapScreen->fadeSpeciesNameTaskId = CreateTask(Swap_Task_FadeSpeciesName, 0);
if (!sFactorySwapScreen->fromSummaryScreen)
{
- gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].data[0] = 0;
- taskId = CreateTask(Task_HandleSwapScreenChooseMons, 0);
- gTasks[taskId].data[0] = 0;
+ gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].tState = FADESTATE_INIT;
+ taskId = CreateTask(Swap_Task_HandleChooseMons, 0);
+ gTasks[taskId].tState = STATE_CHOOSE_MONS_INIT;
}
else
{
- sub_819EAF8();
- gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].data[0] = 1;
- sFactorySwapScreen->unk22 = FALSE;
- taskId = CreateTask(Task_HandleSwapScreenMenu, 0);
- gTasks[taskId].data[0] = 2;
+ Swap_EraseActionFadeWindow();
+ gTasks[sFactorySwapScreen->fadeSpeciesNameTaskId].tState = FADESTATE_RUN;
+ sFactorySwapScreen->fadeSpeciesNameActive = FALSE;
+ taskId = CreateTask(Swap_Task_HandleMenu, 0);
+ gTasks[taskId].tState = STATE_MENU_INIT;
}
SetMainCallback2(Swap_CB2);
break;
@@ -3277,17 +3425,17 @@ static void Swap_InitAllSprites(void)
u8 x;
struct SpriteTemplate spriteTemplate;
- spriteTemplate = gUnknown_08610834;
- spriteTemplate.paletteTag = TAG_PAL_BALL_SELECTED;
+ spriteTemplate = sSpriteTemplate_Swap_Pokeball;
+ spriteTemplate.paletteTag = PALTAG_BALL_SELECTED;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
{
sFactorySwapScreen->ballSpriteIds[i] = CreateSprite(&spriteTemplate, (48 * i) + 72, 64, 1);
gSprites[sFactorySwapScreen->ballSpriteIds[i]].data[0] = 0;
}
- sFactorySwapScreen->cursorSpriteId = CreateSprite(&gUnknown_0861084C, gSprites[sFactorySwapScreen->ballSpriteIds[sFactorySwapScreen->cursorPos]].pos1.x, 88, 0);
- sFactorySwapScreen->menuCursor1SpriteId = CreateSprite(&gUnknown_08610864, 176, 112, 0);
- sFactorySwapScreen->menuCursor2SpriteId = CreateSprite(&gUnknown_0861087C, 176, 144, 0);
+ sFactorySwapScreen->cursorSpriteId = CreateSprite(&sSpriteTemplate_Swap_Arrow, gSprites[sFactorySwapScreen->ballSpriteIds[sFactorySwapScreen->cursorPos]].pos1.x, 88, 0);
+ sFactorySwapScreen->menuCursor1SpriteId = CreateSprite(&sSpriteTemplate_Swap_MenuHighlightLeft, 176, 112, 0);
+ sFactorySwapScreen->menuCursor2SpriteId = CreateSprite(&sSpriteTemplate_Swap_MenuHighlightRight, 176, 144, 0);
gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = TRUE;
gSprites[sFactorySwapScreen->menuCursor2SpriteId].invisible = TRUE;
gSprites[sFactorySwapScreen->menuCursor1SpriteId].centerToCornerVecX = 0;
@@ -3296,105 +3444,110 @@ static void Swap_InitAllSprites(void)
gSprites[sFactorySwapScreen->menuCursor2SpriteId].centerToCornerVecY = 0;
if (sFactorySwapScreen->fromSummaryScreen == TRUE)
- x = 240;
+ x = DISPLAY_WIDTH;
else
- x = 192;
-
- spriteTemplate = gUnknown_0861084C;
- spriteTemplate.tileTag = TAG_TILE_68;
- sFactorySwapScreen->unk8[0][0] = CreateSprite(&spriteTemplate, 240, 120, 10);
-
- spriteTemplate = gUnknown_08610864;
- spriteTemplate.tileTag = TAG_TILE_69;
- sFactorySwapScreen->unk8[0][1] = CreateSprite(&spriteTemplate, 256, 120, 10);
- sFactorySwapScreen->unk8[0][2] = CreateSprite(&spriteTemplate, 288, 120, 10);
-
- spriteTemplate = gUnknown_0861084C;
- spriteTemplate.tileTag = TAG_TILE_6A;
- sFactorySwapScreen->unk8[1][0] = CreateSprite(&spriteTemplate, 240, 120, 1);
-
- spriteTemplate = gUnknown_08610864;
- spriteTemplate.tileTag = TAG_TILE_6B;
- sFactorySwapScreen->unk8[1][1] = CreateSprite(&spriteTemplate, 256, 120, 1);
- spriteTemplate.tileTag = TAG_TILE_6C;
- sFactorySwapScreen->unk8[1][2] = CreateSprite(&spriteTemplate, 288, 120, 1);
-
- spriteTemplate = gUnknown_0861084C;
- spriteTemplate.tileTag = TAG_TILE_68;
- sFactorySwapScreen->unkE[0][0] = CreateSprite(&spriteTemplate, x, 144, 10);
-
- spriteTemplate = gUnknown_08610864;
- spriteTemplate.tileTag = TAG_TILE_69;
- sFactorySwapScreen->unkE[0][1] = CreateSprite(&spriteTemplate, x + 16, 144, 10);
-
- spriteTemplate = gUnknown_0861084C;
- spriteTemplate.tileTag = TAG_TILE_6A;
- sFactorySwapScreen->unkE[1][0] = CreateSprite(&spriteTemplate, x, 144, 1);
-
- spriteTemplate = gUnknown_08610864;
- spriteTemplate.tileTag = TAG_TILE_6C;
- sFactorySwapScreen->unkE[1][1] = CreateSprite(&spriteTemplate, x + 16, 144, 1);
+ x = DISPLAY_WIDTH - 48;
+
+ // Unusual way to create sprites
+ // The sprite template for the selector arrow is re-used
+ // with the tiles swapped out
+ spriteTemplate = sSpriteTemplate_Swap_Arrow;
+ spriteTemplate.tileTag = GFXTAG_ACTION_BOX_LEFT;
+ sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0][0] = CreateSprite(&spriteTemplate, DISPLAY_WIDTH, 120, 10);
+
+ spriteTemplate = sSpriteTemplate_Swap_MenuHighlightLeft;
+ spriteTemplate.tileTag = GFXTAG_ACTION_BOX_RIGHT;
+ sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0][1] = CreateSprite(&spriteTemplate, DISPLAY_WIDTH + 16, 120, 10);
+ sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0][2] = CreateSprite(&spriteTemplate, DISPLAY_WIDTH + 48, 120, 10);
+
+ spriteTemplate = sSpriteTemplate_Swap_Arrow;
+ spriteTemplate.tileTag = GFXTAG_ACTION_HIGHLIGHT_LEFT;
+ sFactorySwapScreen->pkmnForSwapButtonSpriteIds[1][0] = CreateSprite(&spriteTemplate, DISPLAY_WIDTH, 120, 1);
+
+ spriteTemplate = sSpriteTemplate_Swap_MenuHighlightLeft;
+ spriteTemplate.tileTag = GFXTAG_ACTION_HIGHLIGHT_MIDDLE;
+ sFactorySwapScreen->pkmnForSwapButtonSpriteIds[1][1] = CreateSprite(&spriteTemplate, DISPLAY_WIDTH + 16, 120, 1);
+ spriteTemplate.tileTag = GFXTAG_ACTION_HIGHLIGHT_RIGHT;
+ sFactorySwapScreen->pkmnForSwapButtonSpriteIds[1][2] = CreateSprite(&spriteTemplate, DISPLAY_WIDTH + 48, 120, 1);
+
+ spriteTemplate = sSpriteTemplate_Swap_Arrow;
+ spriteTemplate.tileTag = GFXTAG_ACTION_BOX_LEFT;
+ sFactorySwapScreen->cancelButtonSpriteIds[0][0] = CreateSprite(&spriteTemplate, x, 144, 10);
+
+ spriteTemplate = sSpriteTemplate_Swap_MenuHighlightLeft;
+ spriteTemplate.tileTag = GFXTAG_ACTION_BOX_RIGHT;
+ sFactorySwapScreen->cancelButtonSpriteIds[0][1] = CreateSprite(&spriteTemplate, x + 16, 144, 10);
+
+ spriteTemplate = sSpriteTemplate_Swap_Arrow;
+ spriteTemplate.tileTag = GFXTAG_ACTION_HIGHLIGHT_LEFT;
+ sFactorySwapScreen->cancelButtonSpriteIds[1][0] = CreateSprite(&spriteTemplate, x, 144, 1);
+
+ spriteTemplate = sSpriteTemplate_Swap_MenuHighlightLeft;
+ spriteTemplate.tileTag = GFXTAG_ACTION_HIGHLIGHT_RIGHT;
+ sFactorySwapScreen->cancelButtonSpriteIds[1][1] = CreateSprite(&spriteTemplate, x + 16, 144, 1);
for (i = 0; i < 2; i++)
{
- gSprites[sFactorySwapScreen->unk8[i][0]].centerToCornerVecX = 0;
- gSprites[sFactorySwapScreen->unk8[i][0]].centerToCornerVecY = 0;
- gSprites[sFactorySwapScreen->unk8[i][1]].centerToCornerVecX = 0;
- gSprites[sFactorySwapScreen->unk8[i][1]].centerToCornerVecY = 0;
- gSprites[sFactorySwapScreen->unk8[i][2]].centerToCornerVecX = 0;
- gSprites[sFactorySwapScreen->unk8[i][2]].centerToCornerVecY = 0;
- gSprites[sFactorySwapScreen->unkE[i][0]].centerToCornerVecX = 0;
- gSprites[sFactorySwapScreen->unkE[i][0]].centerToCornerVecY = 0;
- gSprites[sFactorySwapScreen->unkE[i][1]].centerToCornerVecX = 0;
- gSprites[sFactorySwapScreen->unkE[i][1]].centerToCornerVecY = 0;
-
- gSprites[sFactorySwapScreen->unk8[i][0]].invisible = TRUE;
- gSprites[sFactorySwapScreen->unk8[i][1]].invisible = TRUE;
- gSprites[sFactorySwapScreen->unk8[i][2]].invisible = TRUE;
- gSprites[sFactorySwapScreen->unkE[i][0]].invisible = TRUE;
- gSprites[sFactorySwapScreen->unkE[i][1]].invisible = TRUE;
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[i][0]].centerToCornerVecX = 0;
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[i][0]].centerToCornerVecY = 0;
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[i][1]].centerToCornerVecX = 0;
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[i][1]].centerToCornerVecY = 0;
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[i][2]].centerToCornerVecX = 0;
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[i][2]].centerToCornerVecY = 0;
+ gSprites[sFactorySwapScreen->cancelButtonSpriteIds[i][0]].centerToCornerVecX = 0;
+ gSprites[sFactorySwapScreen->cancelButtonSpriteIds[i][0]].centerToCornerVecY = 0;
+ gSprites[sFactorySwapScreen->cancelButtonSpriteIds[i][1]].centerToCornerVecX = 0;
+ gSprites[sFactorySwapScreen->cancelButtonSpriteIds[i][1]].centerToCornerVecY = 0;
+
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[i][0]].invisible = TRUE;
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[i][1]].invisible = TRUE;
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[i][2]].invisible = TRUE;
+ gSprites[sFactorySwapScreen->cancelButtonSpriteIds[i][0]].invisible = TRUE;
+ gSprites[sFactorySwapScreen->cancelButtonSpriteIds[i][1]].invisible = TRUE;
}
- gSprites[sFactorySwapScreen->unkE[0][0]].invisible = FALSE;
- gSprites[sFactorySwapScreen->unkE[0][1]].invisible = FALSE;
- gSprites[sFactorySwapScreen->unk8[0][0]].invisible = FALSE;
- gSprites[sFactorySwapScreen->unk8[0][1]].invisible = FALSE;
- gSprites[sFactorySwapScreen->unk8[0][2]].invisible = FALSE;
+ gSprites[sFactorySwapScreen->cancelButtonSpriteIds[0][0]].invisible = FALSE;
+ gSprites[sFactorySwapScreen->cancelButtonSpriteIds[0][1]].invisible = FALSE;
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0][0]].invisible = FALSE;
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0][1]].invisible = FALSE;
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0][2]].invisible = FALSE;
}
static void Swap_DestroyAllSprites(void)
{
u8 i, j;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
DestroySprite(&gSprites[sFactorySwapScreen->ballSpriteIds[i]]);
DestroySprite(&gSprites[sFactorySwapScreen->cursorSpriteId]);
DestroySprite(&gSprites[sFactorySwapScreen->menuCursor1SpriteId]);
DestroySprite(&gSprites[sFactorySwapScreen->menuCursor2SpriteId]);
- for (i = 0; i < 2; i++)
+ for (i = 0; i < ARRAY_COUNT(sFactorySwapScreen->pkmnForSwapButtonSpriteIds); i++)
{
- for (j = 0; j < 3; j++)
- DestroySprite(&gSprites[sFactorySwapScreen->unk8[i][j]]);
+ for (j = 0; j < ARRAY_COUNT(sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0]); j++)
+ DestroySprite(&gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[i][j]]);
}
- for (i = 0; i < 2; i++)
+ for (i = 0; i < ARRAY_COUNT(sFactorySwapScreen->cancelButtonSpriteIds); i++)
{
- for (j = 0; j < 2; j++)
- DestroySprite(&gSprites[sFactorySwapScreen->unkE[i][j]]);
+ for (j = 0; j < ARRAY_COUNT(sFactorySwapScreen->cancelButtonSpriteIds[0]); j++)
+ DestroySprite(&gSprites[sFactorySwapScreen->cancelButtonSpriteIds[i][j]]);
}
}
static void Swap_HandleActionCursorChange(u8 cursorId)
{
- if (cursorId < 3)
+ if (cursorId < FRONTIER_PARTY_SIZE)
{
+ // Cursor is on one of the pokemon
gSprites[sFactorySwapScreen->cursorSpriteId].invisible = FALSE;
- sub_819E8EC();
+ Swap_HideActionButtonHighlights();
gSprites[sFactorySwapScreen->cursorSpriteId].pos1.x = gSprites[sFactorySwapScreen->ballSpriteIds[cursorId]].pos1.x;
}
else
{
+ // Cursor is on an action button
gSprites[sFactorySwapScreen->cursorSpriteId].invisible = TRUE;
- sub_819E838(sFactorySwapScreen->actionsData[cursorId].id);
+ Swap_HighlightActionButton(sFactorySwapScreen->actionsData[cursorId].id);
}
}
@@ -3427,8 +3580,8 @@ static void Swap_UpdateActionCursorPosition(s8 direction)
PlaySE(SE_SELECT);
if (direction > 0) // Move cursor down.
{
- if (sFactorySwapScreen->cursorPos < 3)
- sFactorySwapScreen->cursorPos = 3;
+ if (sFactorySwapScreen->cursorPos < FRONTIER_PARTY_SIZE)
+ sFactorySwapScreen->cursorPos = FRONTIER_PARTY_SIZE;
else if (sFactorySwapScreen->cursorPos + 1 != sFactorySwapScreen->actionsCount)
sFactorySwapScreen->cursorPos++;
else
@@ -3436,7 +3589,7 @@ static void Swap_UpdateActionCursorPosition(s8 direction)
}
else // Move cursor up.
{
- if (sFactorySwapScreen->cursorPos < 3)
+ if (sFactorySwapScreen->cursorPos < FRONTIER_PARTY_SIZE)
sFactorySwapScreen->cursorPos = sFactorySwapScreen->actionsCount - 1;
else if (sFactorySwapScreen->cursorPos != 0)
sFactorySwapScreen->cursorPos--;
@@ -3474,7 +3627,7 @@ static void Swap_UpdateMenuCursorPosition(s8 direction)
PlaySE(SE_SELECT);
if (direction > 0) // Move cursor down.
{
- if (sFactorySwapScreen->menuCursorPos != MENU_OPTIONS_COUNT - 1)
+ if (sFactorySwapScreen->menuCursorPos != ARRAY_COUNT(sSwap_MenuOptionFuncs) - 1)
sFactorySwapScreen->menuCursorPos++;
else
sFactorySwapScreen->menuCursorPos = 0;
@@ -3484,43 +3637,52 @@ static void Swap_UpdateMenuCursorPosition(s8 direction)
if (sFactorySwapScreen->menuCursorPos != 0)
sFactorySwapScreen->menuCursorPos--;
else
- sFactorySwapScreen->menuCursorPos = MENU_OPTIONS_COUNT - 1;
+ sFactorySwapScreen->menuCursorPos = ARRAY_COUNT(sSwap_MenuOptionFuncs) - 1;
}
gSprites[sFactorySwapScreen->menuCursor1SpriteId].pos1.y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
gSprites[sFactorySwapScreen->menuCursor2SpriteId].pos1.y = (sFactorySwapScreen->menuCursorPos * 16) + 112;
}
-static void sub_819E838(u8 arg0)
+static void Swap_HighlightActionButton(u8 actionId)
{
u8 i;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < ARRAY_COUNT(sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0]); i++)
{
- if (arg0 == 2)
+ if (actionId == SWAPACTION_PKMN_FOR_SWAP)
{
- gSprites[sFactorySwapScreen->unk8[1][i]].invisible = FALSE;
- if (i < 2)
- gSprites[sFactorySwapScreen->unkE[1][i]].invisible = TRUE;
+ // Show button highlight on "Pkmn for Swap"
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[1][i]].invisible = FALSE;
+
+ // Hide button highlight on Cancel
+ if (i < ARRAY_COUNT(sFactorySwapScreen->cancelButtonSpriteIds[0]))
+ gSprites[sFactorySwapScreen->cancelButtonSpriteIds[1][i]].invisible = TRUE;
}
- else if (arg0 == 3)
+ else if (actionId == SWAPACTION_CANCEL)
{
- if (i < 2)
- gSprites[sFactorySwapScreen->unkE[1][i]].invisible = FALSE;
- gSprites[sFactorySwapScreen->unk8[1][i]].invisible = TRUE;
+ // Show button highlight on Cancel
+ if (i < ARRAY_COUNT(sFactorySwapScreen->cancelButtonSpriteIds[0]))
+ gSprites[sFactorySwapScreen->cancelButtonSpriteIds[1][i]].invisible = FALSE;
+
+ // Hide button highlight on "Pkmn for Swap"
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[1][i]].invisible = TRUE;
}
}
}
-static void sub_819E8EC(void)
+static void Swap_HideActionButtonHighlights(void)
{
u8 i;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < ARRAY_COUNT(sFactorySwapScreen->pkmnForSwapButtonSpriteIds[0]); i++)
{
- gSprites[sFactorySwapScreen->unk8[1][i]].invisible = TRUE;
- if (i < 2)
- gSprites[sFactorySwapScreen->unkE[1][i]].invisible = TRUE;
+ // Hide button highlight on "Pkmn for Swap"
+ gSprites[sFactorySwapScreen->pkmnForSwapButtonSpriteIds[1][i]].invisible = TRUE;
+
+ // Hide button highlight on Cancel
+ if (i < ARRAY_COUNT(sFactorySwapScreen->cancelButtonSpriteIds[0]))
+ gSprites[sFactorySwapScreen->cancelButtonSpriteIds[1][i]].invisible = TRUE;
}
}
@@ -3557,7 +3719,7 @@ static void Swap_ShowYesNoOptions(void)
Swap_PrintYesNoOptions();
}
-static void sub_819EA64(u8 windowId)
+static void Swap_ErasePopupMenu(u8 windowId)
{
gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = TRUE;
gSprites[sFactorySwapScreen->menuCursor2SpriteId].invisible = TRUE;
@@ -3566,33 +3728,33 @@ static void sub_819EA64(u8 windowId)
ClearWindowTilemap(windowId);
}
-static void sub_819EAC0(void)
+static void Swap_EraseSpeciesWindow(void)
{
- PutWindowTilemap(1);
- FillWindowPixelBuffer(1, PIXEL_FILL(0));
- CopyWindowToVram(1, 2);
+ PutWindowTilemap(SWAP_WIN_SPECIES);
+ FillWindowPixelBuffer(SWAP_WIN_SPECIES, PIXEL_FILL(0));
+ CopyWindowToVram(SWAP_WIN_SPECIES, 2);
}
-static void sub_819EADC(void)
+static void Swap_EraseSpeciesAtFadeWindow(void)
{
- PutWindowTilemap(7);
- FillWindowPixelBuffer(7, PIXEL_FILL(0));
- CopyWindowToVram(7, 2);
+ PutWindowTilemap(SWAP_WIN_SPECIES_AT_FADE);
+ FillWindowPixelBuffer(SWAP_WIN_SPECIES_AT_FADE, PIXEL_FILL(0));
+ CopyWindowToVram(SWAP_WIN_SPECIES_AT_FADE, 2);
}
-static void sub_819EAF8(void)
+static void Swap_EraseActionFadeWindow(void)
{
- sub_819EAC0();
- PutWindowTilemap(5);
- FillWindowPixelBuffer(5, PIXEL_FILL(0));
- CopyWindowToVram(5, 2);
+ Swap_EraseSpeciesWindow();
+ PutWindowTilemap(SWAP_WIN_ACTION_FADE);
+ FillWindowPixelBuffer(SWAP_WIN_ACTION_FADE, PIXEL_FILL(0));
+ CopyWindowToVram(SWAP_WIN_ACTION_FADE, 2);
}
static void Swap_PrintPkmnSwap(void)
{
- FillWindowPixelBuffer(0, PIXEL_FILL(1));
- AddTextPrinterParameterized(0, 1, gText_PkmnSwap, 2, 1, 0, NULL);
- CopyWindowToVram(0, 3);
+ FillWindowPixelBuffer(SWAP_WIN_TITLE, PIXEL_FILL(1));
+ AddTextPrinterParameterized(SWAP_WIN_TITLE, 1, gText_PkmnSwap, 2, 1, 0, NULL);
+ CopyWindowToVram(SWAP_WIN_TITLE, 3);
}
static void Swap_PrintMonSpecies(void)
@@ -3600,10 +3762,10 @@ static void Swap_PrintMonSpecies(void)
u16 species;
u8 x;
- FillWindowPixelBuffer(1, PIXEL_FILL(0));
- if (sFactorySwapScreen->cursorPos > 2)
+ FillWindowPixelBuffer(SWAP_WIN_SPECIES, PIXEL_FILL(0));
+ if (sFactorySwapScreen->cursorPos >= FRONTIER_PARTY_SIZE)
{
- CopyWindowToVram(1, 2);
+ CopyWindowToVram(SWAP_WIN_SPECIES, 2);
}
else
{
@@ -3614,35 +3776,35 @@ static void Swap_PrintMonSpecies(void)
species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, NULL);
StringCopy(gStringVar4, gSpeciesNames[species]);
x = GetStringRightAlignXOffset(1, gStringVar4, 86);
- AddTextPrinterParameterized3(1, 1, x, 1, sSwapSpeciesNameTextColors, 0, gStringVar4);
- CopyWindowToVram(1, 3);
+ AddTextPrinterParameterized3(SWAP_WIN_SPECIES, 1, x, 1, sSwapSpeciesNameTextColors, 0, gStringVar4);
+ CopyWindowToVram(SWAP_WIN_SPECIES, 3);
}
}
static void Swap_PrintOnInfoWindow(const u8 *str)
{
- FillWindowPixelBuffer(2, PIXEL_FILL(0));
- AddTextPrinterParameterized(2, 1, str, 2, 5, 0, NULL);
- CopyWindowToVram(2, 2);
+ FillWindowPixelBuffer(SWAP_WIN_INFO, PIXEL_FILL(0));
+ AddTextPrinterParameterized(SWAP_WIN_INFO, 1, str, 2, 5, 0, NULL);
+ CopyWindowToVram(SWAP_WIN_INFO, 2);
}
static void Swap_PrintMenuOptions(void)
{
- PutWindowTilemap(3);
- FillWindowPixelBuffer(3, PIXEL_FILL(0));
- AddTextPrinterParameterized3(3, 1, 15, 1, sSwapMenuOptionsTextColors, 0, gText_Summary2);
- AddTextPrinterParameterized3(3, 1, 15, 17, sSwapMenuOptionsTextColors, 0, gText_Swap);
- AddTextPrinterParameterized3(3, 1, 15, 33, sSwapMenuOptionsTextColors, 0, gText_Rechoose);
- CopyWindowToVram(3, 3);
+ PutWindowTilemap(SWAP_WIN_OPTIONS);
+ FillWindowPixelBuffer(SWAP_WIN_OPTIONS, PIXEL_FILL(0));
+ AddTextPrinterParameterized3(SWAP_WIN_OPTIONS, 1, 15, 1, sSwapMenuOptionsTextColors, 0, gText_Summary2);
+ AddTextPrinterParameterized3(SWAP_WIN_OPTIONS, 1, 15, 17, sSwapMenuOptionsTextColors, 0, gText_Swap);
+ AddTextPrinterParameterized3(SWAP_WIN_OPTIONS, 1, 15, 33, sSwapMenuOptionsTextColors, 0, gText_Rechoose);
+ CopyWindowToVram(SWAP_WIN_OPTIONS, 3);
}
static void Swap_PrintYesNoOptions(void)
{
- PutWindowTilemap(4);
- FillWindowPixelBuffer(4, PIXEL_FILL(0));
- AddTextPrinterParameterized3(4, 1, 7, 1, sSwapMenuOptionsTextColors, 0, gText_Yes3);
- AddTextPrinterParameterized3(4, 1, 7, 17, sSwapMenuOptionsTextColors, 0, gText_No3);
- CopyWindowToVram(4, 3);
+ PutWindowTilemap(SWAP_WIN_YES_NO);
+ FillWindowPixelBuffer(SWAP_WIN_YES_NO, PIXEL_FILL(0));
+ AddTextPrinterParameterized3(SWAP_WIN_YES_NO, 1, 7, 1, sSwapMenuOptionsTextColors, 0, gText_Yes3);
+ AddTextPrinterParameterized3(SWAP_WIN_YES_NO, 1, 7, 17, sSwapMenuOptionsTextColors, 0, gText_No3);
+ CopyWindowToVram(SWAP_WIN_YES_NO, 3);
}
static void Swap_PrintActionString(const u8 *str, u32 y, u32 windowId)
@@ -3653,30 +3815,30 @@ static void Swap_PrintActionString(const u8 *str, u32 y, u32 windowId)
static void Swap_PrintActionStrings(void)
{
- FillWindowPixelBuffer(5, PIXEL_FILL(0));
+ FillWindowPixelBuffer(SWAP_WIN_ACTION_FADE, PIXEL_FILL(0));
switch (sFactorySwapScreen->inEnemyScreen)
{
case TRUE:
- Swap_PrintActionString(gText_PkmnForSwap, 0, 5);
+ Swap_PrintActionString(gText_PkmnForSwap, 0, SWAP_WIN_ACTION_FADE);
case FALSE:
- Swap_PrintActionString(gText_Cancel3, 24, 5);
+ Swap_PrintActionString(gText_Cancel3, 24, SWAP_WIN_ACTION_FADE);
break;
}
- CopyWindowToVram(5, 3);
+ CopyWindowToVram(SWAP_WIN_ACTION_FADE, 3);
}
static void Swap_PrintActionStrings2(void)
{
- FillWindowPixelBuffer(3, PIXEL_FILL(0));
+ FillWindowPixelBuffer(SWAP_WIN_OPTIONS, PIXEL_FILL(0));
switch (sFactorySwapScreen->inEnemyScreen)
{
case TRUE:
- Swap_PrintActionString(gText_PkmnForSwap, 8, 3);
+ Swap_PrintActionString(gText_PkmnForSwap, 8, SWAP_WIN_OPTIONS);
case FALSE:
- Swap_PrintActionString(gText_Cancel3, 32, 3);
+ Swap_PrintActionString(gText_Cancel3, 32, SWAP_WIN_OPTIONS);
break;
}
- CopyWindowToVram(3, 3);
+ CopyWindowToVram(SWAP_WIN_OPTIONS, 3);
}
static void Swap_PrintOneActionString(u8 which)
@@ -3685,33 +3847,34 @@ static void Swap_PrintOneActionString(u8 which)
{
case 0:
if (sFactorySwapScreen->inEnemyScreen == TRUE)
- Swap_PrintActionString(gText_PkmnForSwap, 8, 3);
+ Swap_PrintActionString(gText_PkmnForSwap, 8, SWAP_WIN_OPTIONS);
break;
case 1:
- Swap_PrintActionString(gText_Cancel3, 32, 3);
+ Swap_PrintActionString(gText_Cancel3, 32, SWAP_WIN_OPTIONS);
break;
}
- CopyWindowToVram(3, 3);
+ CopyWindowToVram(SWAP_WIN_OPTIONS, 3);
}
-static void Swap_PrintMonSpecies2(void)
+// For printing the species name once its selected. Keep the current fade but don't keep fading in and out
+static void Swap_PrintMonSpeciesAtFade(void)
{
u16 species;
u8 x;
u16 pal[5];
- CpuCopy16(gUnknown_08610918, pal, 8);
+ CpuCopy16(sSwapText_Pal, pal, 8);
if (!sFactorySwapScreen->fromSummaryScreen)
pal[4] = gPlttBufferFaded[228];
else
- pal[4] = sFactorySwapScreen->unk24;
- LoadPalette(pal, 0xF0, 0xA);
+ pal[4] = sFactorySwapScreen->speciesNameColorBackup;
+ LoadPalette(pal, 0xF0, sizeof(sSwapText_Pal));
- PutWindowTilemap(7);
- FillWindowPixelBuffer(7, PIXEL_FILL(0));
- if (sFactorySwapScreen->cursorPos > 2)
+ PutWindowTilemap(SWAP_WIN_SPECIES_AT_FADE);
+ FillWindowPixelBuffer(SWAP_WIN_SPECIES_AT_FADE, PIXEL_FILL(0));
+ if (sFactorySwapScreen->cursorPos >= FRONTIER_PARTY_SIZE)
{
- CopyWindowToVram(7, 3);
+ CopyWindowToVram(SWAP_WIN_SPECIES_AT_FADE, 3);
}
else
{
@@ -3722,22 +3885,23 @@ static void Swap_PrintMonSpecies2(void)
species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, NULL);
StringCopy(gStringVar4, gSpeciesNames[species]);
x = GetStringRightAlignXOffset(1, gStringVar4, 86);
- AddTextPrinterParameterized3(7, 1, x, 1, sSwapSpeciesNameTextColors, 0, gStringVar4);
- CopyWindowToVram(7, 3);
+ AddTextPrinterParameterized3(SWAP_WIN_SPECIES_AT_FADE, 1, x, 1, sSwapSpeciesNameTextColors, 0, gStringVar4);
+ CopyWindowToVram(SWAP_WIN_SPECIES_AT_FADE, 3);
}
}
-static void Swap_PrintMonSpecies3(void)
+// Reprints the species name over the faded one after a transition
+static void Swap_PrintMonSpeciesForTransition(void)
{
u16 species;
u8 x;
- LoadPalette(gUnknown_08610918, 0xE0, sizeof(gUnknown_08610918));
- CpuCopy16(gPlttBufferUnfaded + 240, gPlttBufferFaded + 224, 10);
+ LoadPalette(sSwapText_Pal, 0xE0, sizeof(sSwapText_Pal));
+ CpuCopy16(&gPlttBufferUnfaded[240], &gPlttBufferFaded[224], 10);
- if (sFactorySwapScreen->cursorPos > 2)
+ if (sFactorySwapScreen->cursorPos >= FRONTIER_PARTY_SIZE)
{
- CopyWindowToVram(1, 2);
+ CopyWindowToVram(SWAP_WIN_SPECIES, 2);
}
else
{
@@ -3748,8 +3912,8 @@ static void Swap_PrintMonSpecies3(void)
species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, NULL);
StringCopy(gStringVar4, gSpeciesNames[species]);
x = GetStringRightAlignXOffset(1, gStringVar4, 86);
- AddTextPrinterParameterized3(1, 1, x, 1, sSwapSpeciesNameTextColors, 0, gStringVar4);
- CopyWindowToVram(1, 3);
+ AddTextPrinterParameterized3(SWAP_WIN_SPECIES, 1, x, 1, sSwapSpeciesNameTextColors, 0, gStringVar4);
+ CopyWindowToVram(SWAP_WIN_SPECIES, 3);
}
}
@@ -3760,22 +3924,22 @@ static void Swap_PrintMonCategory(void)
u8 x;
u8 monId = sFactorySwapScreen->cursorPos;
- FillWindowPixelBuffer(8, PIXEL_FILL(0));
- if (monId > 2)
+ FillWindowPixelBuffer(SWAP_WIN_MON_CATEGORY, PIXEL_FILL(0));
+ if (monId >= FRONTIER_PARTY_SIZE)
{
- CopyWindowToVram(8, 2);
+ CopyWindowToVram(SWAP_WIN_MON_CATEGORY, 2);
}
else
{
- PutWindowTilemap(8);
+ PutWindowTilemap(SWAP_WIN_MON_CATEGORY);
if (!sFactorySwapScreen->inEnemyScreen)
species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, NULL);
else
species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, NULL);
CopyMonCategoryText(SpeciesToNationalPokedexNum(species), text);
x = GetStringRightAlignXOffset(1, text, 0x76);
- AddTextPrinterParameterized(8, 1, text, x, 1, 0, NULL);
- CopyWindowToVram(8, 2);
+ AddTextPrinterParameterized(SWAP_WIN_MON_CATEGORY, 1, text, x, 1, 0, NULL);
+ CopyWindowToVram(SWAP_WIN_MON_CATEGORY, 2);
}
}
@@ -3785,13 +3949,13 @@ static void Swap_InitActions(u8 id)
{
switch (id)
{
- case ACTIONS_PLAYER_SCREEN:
+ case SWAP_PLAYER_SCREEN:
sFactorySwapScreen->inEnemyScreen = FALSE;
sFactorySwapScreen->cursorPos = 0;
sFactorySwapScreen->actionsCount = ARRAY_COUNT(sSwap_PlayerScreenActions);
sFactorySwapScreen->actionsData = sSwap_PlayerScreenActions;
break;
- case ACTIONS_ENEMY_SCREEN:
+ case SWAP_ENEMY_SCREEN:
sFactorySwapScreen->inEnemyScreen = TRUE;
sFactorySwapScreen->cursorPos = 0;
sFactorySwapScreen->actionsCount = ARRAY_COUNT(sSwap_EnemyScreenActions);
@@ -3803,92 +3967,94 @@ static void Swap_InitActions(u8 id)
static void Swap_RunMenuOptionFunc(u8 taskId)
{
- sSwap_CurrentTableFunc = sSwap_MenuOptionFuncs[sFactorySwapScreen->menuCursorPos];
- sSwap_CurrentTableFunc(taskId);
+ sSwap_CurrentOptionFunc = sSwap_MenuOptionFuncs[sFactorySwapScreen->menuCursorPos];
+ sSwap_CurrentOptionFunc(taskId);
}
-static void sub_819F0CC(u8 taskId)
+static void Swap_OptionSwap(u8 taskId)
{
- sub_819F3F8(sFactorySwapScreen->unk2C, &sFactorySwapScreen->unk30, TRUE);
+ CloseMonPic(sFactorySwapScreen->monPic, &sFactorySwapScreen->monPicAnimating, TRUE);
sFactorySwapScreen->playerMonId = sFactorySwapScreen->cursorPos;
- sub_819EA64(3);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = sub_819D9EC;
+ Swap_ErasePopupMenu(SWAP_WIN_OPTIONS);
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].func = Swap_Task_SwitchPartyScreen;
}
-static void sub_819F114(u8 taskId)
+static void Swap_OptionSummary(u8 taskId)
{
- gTasks[taskId].data[0] = 6;
- gTasks[taskId].func = Task_FromSwapScreenToSummaryScreen;
+ gTasks[taskId].tState = STATE_SUMMARY_FADE;
+ gTasks[taskId].func = Swap_Task_OpenSummaryScreen;
}
-static void sub_819F134(u8 taskId)
+static void Swap_OptionRechoose(u8 taskId)
{
- sub_819F3F8(sFactorySwapScreen->unk2C, &sFactorySwapScreen->unk30, TRUE);
- sub_819EA64(3);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[6] = (u32)(Task_HandleSwapScreenChooseMons) >> 0x10;
- gTasks[taskId].data[7] = (u32)(Task_HandleSwapScreenChooseMons);
- gTasks[taskId].data[5] = 1;
- gTasks[taskId].func = sub_819D770;
+ CloseMonPic(sFactorySwapScreen->monPic, &sFactorySwapScreen->monPicAnimating, TRUE);
+ Swap_ErasePopupMenu(SWAP_WIN_OPTIONS);
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tFollowUpTaskPtrHi = (u32)(Swap_Task_HandleChooseMons) >> 16;
+ gTasks[taskId].tFollowUpTaskPtrLo = (u32)(Swap_Task_HandleChooseMons);
+ gTasks[taskId].tFollowUpTaskState = STATE_CHOOSE_MONS_HANDLE_INPUT;
+ gTasks[taskId].func = Swap_Task_ScreenInfoTransitionIn;
}
static void Swap_RunActionFunc(u8 taskId)
{
- sSwap_CurrentTableFunc = sFactorySwapScreen->actionsData[sFactorySwapScreen->cursorPos].func;
- sSwap_CurrentTableFunc(taskId);
+ sSwap_CurrentOptionFunc = sFactorySwapScreen->actionsData[sFactorySwapScreen->cursorPos].func;
+ sSwap_CurrentOptionFunc(taskId);
}
static void Swap_ActionCancel(u8 taskId)
{
- gTasks[taskId].data[6] = (u32)(sub_819CC24) >> 0x10;
- gTasks[taskId].data[7] = (u32)(sub_819CC24);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[5] = 0;
- gTasks[taskId].func = sub_819D588;
+ gTasks[taskId].tFollowUpTaskPtrHi = (u32)(Swap_AskQuitSwapping) >> 16;
+ gTasks[taskId].tFollowUpTaskPtrLo = (u32)(Swap_AskQuitSwapping);
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tFollowUpTaskState = 0;
+ gTasks[taskId].func = Swap_Task_ScreenInfoTransitionOut;
}
static void Swap_ActionPkmnForSwap(u8 taskId)
{
- gTasks[taskId].data[6] = (u32)(sub_819D9EC) >> 0x10;
- gTasks[taskId].data[7] = (u32)(sub_819D9EC);
- gTasks[taskId].data[5] = 0;
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = sub_819D588;
+ gTasks[taskId].tFollowUpTaskPtrHi = (u32)(Swap_Task_SwitchPartyScreen) >> 16;
+ gTasks[taskId].tFollowUpTaskPtrLo = (u32)(Swap_Task_SwitchPartyScreen);
+ gTasks[taskId].tFollowUpTaskState = 0;
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].func = Swap_Task_ScreenInfoTransitionOut;
}
static void Swap_ActionMon(u8 taskId)
{
if (!sFactorySwapScreen->inEnemyScreen)
{
- gTasks[taskId].data[6] = (u32)(Task_HandleSwapScreenMenu) >> 0x10;
- gTasks[taskId].data[7] = (u32)(Task_HandleSwapScreenMenu);
- gTasks[taskId].data[5] = 2;
+ gTasks[taskId].tFollowUpTaskPtrHi = (u32)(Swap_Task_HandleMenu) >> 16;
+ gTasks[taskId].tFollowUpTaskPtrLo = (u32)(Swap_Task_HandleMenu);
+ gTasks[taskId].tFollowUpTaskState = STATE_MENU_INIT;
}
else if (Swap_AlreadyHasSameSpecies(sFactorySwapScreen->cursorPos) == TRUE)
{
- sub_819F2B4(&sFactorySwapScreen->unk2C.field1, &sFactorySwapScreen->unk30, TRUE);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[5] = 1;
- gTasks[taskId].func = Task_SwapCantHaveSameMons;
+ OpenMonPic(&sFactorySwapScreen->monPic.bgSpriteId, &sFactorySwapScreen->monPicAnimating, TRUE);
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tFollowUpTaskState = STATE_CHOOSE_MONS_HANDLE_INPUT;
+ gTasks[taskId].func = Swap_TaskCantHaveSameMons;
return;
}
else
{
- gTasks[taskId].data[6] = (u32)(sub_819CCD4) >> 0x10;
- gTasks[taskId].data[7] = (u32)(sub_819CCD4);
- gTasks[taskId].data[5] = 0;
+ gTasks[taskId].tFollowUpTaskPtrHi = (u32)(Swap_AskAcceptMon) >> 16;
+ gTasks[taskId].tFollowUpTaskPtrLo = (u32)(Swap_AskAcceptMon);
+ gTasks[taskId].tFollowUpTaskState = 0;
}
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = sub_819D588;
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].func = Swap_Task_ScreenInfoTransitionOut;
}
-static void sub_819F2B4(u8 *arg0, bool8 *arg1, bool8 swapScreen)
+#define sIsSwapScreen data[7]
+
+static void OpenMonPic(u8 *spriteId, bool8 *animating, bool8 swapScreen)
{
- *arg0 = CreateSprite(&gUnknown_08610894, 120, 64, 1);
- gSprites[*arg0].callback = sub_819F600;
- gSprites[*arg0].data[7] = swapScreen;
- *arg1 = TRUE;
+ *spriteId = CreateSprite(&sSpriteTemplate_Swap_MonPicBgAnim, 120, 64, 1);
+ gSprites[*spriteId].callback = SpriteCB_OpenMonPic;
+ gSprites[*spriteId].sIsSwapScreen = swapScreen;
+ *animating = TRUE;
}
static void Swap_ShowSummaryMonSprite(void)
@@ -3897,83 +4063,83 @@ static void Swap_ShowSummaryMonSprite(void)
u16 species;
u32 personality, otId;
- sFactorySwapScreen->unk2C.field1 = CreateSprite(&gUnknown_08610894, 120, 64, 1);
- StartSpriteAffineAnim(&gSprites[sFactorySwapScreen->unk2C.field1], 2);
+ sFactorySwapScreen->monPic.bgSpriteId = CreateSprite(&sSpriteTemplate_Swap_MonPicBgAnim, 120, 64, 1);
+ StartSpriteAffineAnim(&gSprites[sFactorySwapScreen->monPic.bgSpriteId], 2);
mon = &gPlayerParty[sFactorySwapScreen->cursorPos];
species = GetMonData(mon, MON_DATA_SPECIES, NULL);
personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
- #ifdef BUGFIX
- sFactorySwapScreen->unk2C.field0 = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, 88, 32, 15, 0xFFFF);
- #else
- sFactorySwapScreen->unk2C.field0 = CreateMonPicSprite_HandleDeoxys(species, personality, otId, TRUE, 88, 32, 15, 0xFFFF);
- #endif
- gSprites[sFactorySwapScreen->unk2C.field0].centerToCornerVecX = 0;
- gSprites[sFactorySwapScreen->unk2C.field0].centerToCornerVecY = 0;
+#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;
- gSprites[sFactorySwapScreen->unk2C.field1].invisible = TRUE;
+ gSprites[sFactorySwapScreen->monPic.bgSpriteId].invisible = TRUE;
}
-static void sub_819F3F8(struct UnkFactoryStruct arg0, bool8 *arg1, bool8 swapScreen)
+static void CloseMonPic(struct FactoryMonPic pic, bool8 *animating, bool8 swapScreen)
{
u8 taskId;
- FreeAndDestroyMonPicSprite(arg0.field0);
- taskId = CreateTask(sub_819F7B4, 1);
- gTasks[taskId].data[7] = swapScreen;
- gTasks[taskId].data[6] = arg0.field1;
+ FreeAndDestroyMonPicSprite(pic.monSpriteId);
+ taskId = CreateTask(Task_CloseMonPic, 1);
+ gTasks[taskId].tIsSwapScreen = swapScreen;
+ gTasks[taskId].tSpriteId = pic.bgSpriteId;
gTasks[taskId].func(taskId);
- *arg1 = TRUE;
+ *animating = TRUE;
}
-static void sub_819F444(struct UnkFactoryStruct arg0, bool8 *arg1)
+static void HideMonPic(struct FactoryMonPic pic, bool8 *animating)
{
- FreeAndDestroyMonPicSprite(arg0.field0);
- FreeOamMatrix(gSprites[arg0.field1].oam.matrixNum);
- DestroySprite(&gSprites[arg0.field1]);
- *arg1 = FALSE;
+ FreeAndDestroyMonPicSprite(pic.monSpriteId);
+ FreeOamMatrix(gSprites[pic.bgSpriteId].oam.matrixNum);
+ DestroySprite(&gSprites[pic.bgSpriteId]);
+ *animating = FALSE;
}
-static void Task_SwapCantHaveSameMons(u8 taskId)
+static void Swap_TaskCantHaveSameMons(u8 taskId)
{
- if (sFactorySwapScreen->unk30 == TRUE)
+ if (sFactorySwapScreen->monPicAnimating == TRUE)
return;
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 0:
Swap_PrintOnInfoWindow(gText_SamePkmnInPartyAlready);
sFactorySwapScreen->monSwapped = FALSE;
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
break;
case 1:
if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
- sub_819F3F8(sFactorySwapScreen->unk2C, &sFactorySwapScreen->unk30, TRUE);
- gTasks[taskId].data[0]++;
+ CloseMonPic(sFactorySwapScreen->monPic, &sFactorySwapScreen->monPicAnimating, TRUE);
+ gTasks[taskId].tState++;
}
break;
case 2:
- if (sFactorySwapScreen->unk30 != TRUE)
+ if (sFactorySwapScreen->monPicAnimating != TRUE)
{
- FillWindowPixelBuffer(5, PIXEL_FILL(0));
- CopyWindowToVram(5, 2);
- gTasks[taskId].data[0]++;
+ FillWindowPixelBuffer(SWAP_WIN_ACTION_FADE, PIXEL_FILL(0));
+ CopyWindowToVram(SWAP_WIN_ACTION_FADE, 2);
+ gTasks[taskId].tState++;
}
break;
case 3:
Swap_PrintOnInfoWindow(gText_SelectPkmnToAccept);
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
break;
case 4:
- Swap_PrintMonSpecies3();
- sub_819EADC();
- sFactorySwapScreen->unk22 = TRUE;
- gTasks[taskId].data[0] = gTasks[taskId].data[5];
- gTasks[taskId].func = Task_HandleSwapScreenChooseMons;
+ Swap_PrintMonSpeciesForTransition();
+ Swap_EraseSpeciesAtFadeWindow();
+ sFactorySwapScreen->fadeSpeciesNameActive = TRUE;
+ gTasks[taskId].tState = gTasks[taskId].tFollowUpTaskState;
+ gTasks[taskId].func = Swap_Task_HandleChooseMons;
break;
}
}
@@ -3983,7 +4149,7 @@ static bool8 Swap_AlreadyHasSameSpecies(u8 monId)
u8 i;
u16 species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, NULL);
- for (i = 0; i < 3; i++)
+ for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
{
if (i != sFactorySwapScreen->playerMonId && (u16)(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL)) == species)
return TRUE;
@@ -3991,120 +4157,126 @@ static bool8 Swap_AlreadyHasSameSpecies(u8 monId)
return FALSE;
}
-static void sub_819F600(struct Sprite *sprite)
+static void SpriteCB_OpenMonPic(struct Sprite *sprite)
{
u8 taskId;
if (sprite->affineAnimEnded)
{
sprite->invisible = TRUE;
- taskId = CreateTask(sub_819F69C, 1);
- gTasks[taskId].data[7] = sprite->data[7];
+ taskId = CreateTask(Task_OpenMonPic, 1);
+ gTasks[taskId].tIsSwapScreen = sprite->sIsSwapScreen;
gTasks[taskId].func(taskId);
sprite->callback = SpriteCallbackDummy;
}
}
-static void sub_819F654(struct Sprite *sprite)
+static void SpriteCB_CloseMonPic(struct Sprite *sprite)
{
if (sprite->affineAnimEnded)
{
FreeOamMatrix(sprite->oam.matrixNum);
- if (sprite->data[7] == TRUE)
- sFactorySwapScreen->unk30 = FALSE;
+ if (sprite->sIsSwapScreen == TRUE)
+ sFactorySwapScreen->monPicAnimating = FALSE;
else
- sub_819BE20(FALSE);
+ Select_SetMonPicAnimating(FALSE);
DestroySprite(sprite);
}
}
-static void sub_819F69C(u8 taskId)
+static void Task_OpenMonPic(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
- task->data[3] = 88;
- task->data[24] = 152; // BUG: writing outside the array's bounds.
- task->data[5] = 64;
- task->data[8] = 65;
+ // Init
+ task->tWinLeft = 88;
+ task->tWinRight = DISPLAY_WIDTH - 88;
+ task->tWinTop = 64;
+ task->tWinBottom = 65;
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[24]));
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->tWinLeft, task->tWinRight));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->tWinTop, task->tWinBottom));
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ);
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_CLR | WINOUT_WIN01_OBJ);
break;
case 1:
+ // Show mon pic bg
ShowBg(3);
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_OBJ);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(11, 4));
break;
case 2:
- task->data[5] -= 4;
- task->data[8] += 4;
- if (task->data[5] <= 32 || task->data[8] >= 96)
+ // Animate mon pic bg
+ task->tWinTop -= 4;
+ task->tWinBottom += 4;
+ if (task->tWinTop <= 32 || task->tWinBottom >= 96)
{
- task->data[5] = 32;
- task->data[8] = 96;
+ task->tWinTop = 32;
+ task->tWinBottom = 96;
}
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
- if (task->data[5] != 32)
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->tWinTop, task->tWinBottom));
+ if (task->tWinTop != 32)
return;
break;
default:
DestroyTask(taskId);
// UB: Should not use the task after it has been deleted.
- if (gTasks[taskId].data[7] == TRUE)
- Swap_ShowMonSprite();
+ if (gTasks[taskId].tIsSwapScreen == TRUE)
+ Swap_CreateMonSprite();
else
- Summary_ShowMonSprite();
+ Select_CreateMonSprite();
return;
}
- task->data[0]++;
+ task->tState++;
}
-static void sub_819F7B4(u8 taskId)
+static void Task_CloseMonPic(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
- default:
- HideBg(3);
- gSprites[task->data[6]].data[7] = task->data[7];
- gSprites[task->data[6]].invisible = FALSE;
- gSprites[task->data[6]].callback = sub_819F654;
- StartSpriteAffineAnim(&gSprites[task->data[6]], 1);
- ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- DestroyTask(taskId);
- break;
case 0:
- task->data[3] = 88;
- task->data[24] = 152; // BUG: writing outside the array's bounds.
- task->data[5] = 32;
- task->data[8] = 96;
+ // Init
+ task->tWinLeft = 88;
+ task->tWinRight = DISPLAY_WIDTH - 88;
+ task->tWinTop = 32;
+ task->tWinBottom = 96;
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[24]));
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->tWinLeft, task->tWinRight));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->tWinTop, task->tWinBottom));
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ);
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_CLR | WINOUT_WIN01_OBJ);
- task->data[0]++;
+ task->tState++;
break;
case 1:
- task->data[5] += 4;
- task->data[8] -= 4;
- if (task->data[5] >= 64 || task->data[8] <= 65)
+ // Animate bg
+ task->tWinTop += 4;
+ task->tWinBottom -= 4;
+ if (task->tWinTop >= 64 || task->tWinBottom <= 65)
{
- task->data[5] = 64;
- task->data[8] = 65;
+ task->tWinTop = 64;
+ task->tWinBottom = 65;
}
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[8]));
- if (task->data[5] == 64)
- task->data[0]++;
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->tWinTop, task->tWinBottom));
+ if (task->tWinTop == 64)
+ task->tState++;
+ break;
+ default:
+ // Hide bg
+ HideBg(3);
+ gSprites[task->tSpriteId].sIsSwapScreen = task->tIsSwapScreen;
+ gSprites[task->tSpriteId].invisible = FALSE;
+ gSprites[task->tSpriteId].callback = SpriteCB_CloseMonPic;
+ StartSpriteAffineAnim(&gSprites[task->tSpriteId], 1);
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ DestroyTask(taskId);
break;
}
}
-static void Swap_ShowMonSprite(void)
+static void Swap_CreateMonSprite(void)
{
struct Pokemon *mon;
u16 species;
@@ -4119,9 +4291,9 @@ static void Swap_ShowMonSprite(void)
personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
- sFactorySwapScreen->unk2C.field0 = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, 88, 32, 15, 0xFFFF);
- gSprites[sFactorySwapScreen->unk2C.field0].centerToCornerVecX = 0;
- gSprites[sFactorySwapScreen->unk2C.field0].centerToCornerVecY = 0;
+ sFactorySwapScreen->monPic.monSpriteId = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, 88, 32, 15, 0xFFFF);
+ gSprites[sFactorySwapScreen->monPic.monSpriteId].centerToCornerVecX = 0;
+ gSprites[sFactorySwapScreen->monPic.monSpriteId].centerToCornerVecY = 0;
- sFactorySwapScreen->unk30 = FALSE;
+ sFactorySwapScreen->monPicAnimating = FALSE;
}
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index c6db4ad42..77b91f1f4 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -997,11 +997,11 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite)
position = GetBattlerPosition(battlerId);
if (IsContest())
- LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites.ptr[position]);
+ LZDecompressVram(gSubstituteDollBackGfx, gMonSpritesGfxPtr->sprites.ptr[position]);
else if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
- LZDecompressVram(gSubstituteDollGfx, gMonSpritesGfxPtr->sprites.ptr[position]);
+ LZDecompressVram(gSubstituteDollFrontGfx, gMonSpritesGfxPtr->sprites.ptr[position]);
else
- LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites.ptr[position]);
+ LZDecompressVram(gSubstituteDollBackGfx, gMonSpritesGfxPtr->sprites.ptr[position]);
for (i = 1; i < 4; i++)
{
diff --git a/src/battle_intro.c b/src/battle_intro.c
index 36ff325f5..2d5e602d1 100644
--- a/src/battle_intro.c
+++ b/src/battle_intro.c
@@ -357,7 +357,7 @@ static void BattleIntroSlide3(u8 taskId)
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 8));
SetGpuReg(REG_OFFSET_BLDY, 0);
gTasks[taskId].data[4] = BLDALPHA_BLEND(8, 8);
- if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
{
gTasks[taskId].data[2] = 16;
gTasks[taskId].data[0]++;
diff --git a/src/battle_main.c b/src/battle_main.c
index 29a8f560a..7e8966597 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -1109,7 +1109,7 @@ static void CB2_HandleStartBattle(void)
SetMainCallback2(BattleMainCB2);
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- gBattleTypeFlags |= BATTLE_TYPE_20;
+ gBattleTypeFlags |= BATTLE_TYPE_LINK_IN_BATTLE;
}
}
break;
@@ -1363,7 +1363,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
SetMainCallback2(BattleMainCB2);
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- gBattleTypeFlags |= BATTLE_TYPE_20;
+ gBattleTypeFlags |= BATTLE_TYPE_LINK_IN_BATTLE;
}
}
break;
@@ -1816,7 +1816,7 @@ static void CB2_HandleStartMultiBattle(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
gTrainerBattleOpponent_A = TRAINER_LINK_OPPONENT;
- gBattleTypeFlags |= BATTLE_TYPE_20;
+ gBattleTypeFlags |= BATTLE_TYPE_LINK_IN_BATTLE;
}
}
break;
@@ -1969,7 +1969,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
nameHash += gSpeciesNames[partyData[i].species][j];
personalityValue += nameHash << 8;
- fixedIV = partyData[i].iv * 31 / 255;
+ fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255;
CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0);
break;
}
@@ -1981,7 +1981,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
nameHash += gSpeciesNames[partyData[i].species][j];
personalityValue += nameHash << 8;
- fixedIV = partyData[i].iv * 31 / 255;
+ fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255;
CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0);
for (j = 0; j < MAX_MON_MOVES; j++)
@@ -1999,7 +1999,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
nameHash += gSpeciesNames[partyData[i].species][j];
personalityValue += nameHash << 8;
- fixedIV = partyData[i].iv * 31 / 255;
+ fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255;
CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0);
SetMonData(&party[i], MON_DATA_HELD_ITEM, &partyData[i].heldItem);
@@ -2013,7 +2013,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
nameHash += gSpeciesNames[partyData[i].species][j];
personalityValue += nameHash << 8;
- fixedIV = partyData[i].iv * 31 / 255;
+ fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255;
CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0);
SetMonData(&party[i], MON_DATA_HELD_ITEM, &partyData[i].heldItem);
@@ -2180,7 +2180,7 @@ void sub_8038D64(void)
SetHBlankCallback(NULL);
SetVBlankCallback(NULL);
- gBattleTypeFlags &= ~(BATTLE_TYPE_20);
+ gBattleTypeFlags &= ~(BATTLE_TYPE_LINK_IN_BATTLE);
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
@@ -2803,7 +2803,7 @@ void SpriteCb_OpponentMonFromBall(struct Sprite *sprite)
{
if (sprite->affineAnimEnded)
{
- if (!(gHitMarker & HITMARKER_NO_ANIMATIONS) || gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ if (!(gHitMarker & HITMARKER_NO_ANIMATIONS) || gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
{
if (HasTwoFramesAnimation(sprite->sSpeciesId))
StartSpriteAnim(sprite, 1);
@@ -3041,7 +3041,7 @@ static void BattleStartClearSetData(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && gSaveBlock2Ptr->optionsBattleSceneOff == TRUE)
gHitMarker |= HITMARKER_NO_ANIMATIONS;
}
- else if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) && GetBattleSceneInRecordedBattle())
+ else if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)) && GetBattleSceneInRecordedBattle())
gHitMarker |= HITMARKER_NO_ANIMATIONS;
gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle;
@@ -3396,7 +3396,7 @@ static void BattleIntroDrawTrainersOrMonsSprites(void)
&& !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER
| BATTLE_TYPE_FRONTIER
| BATTLE_TYPE_LINK
- | BATTLE_TYPE_x2000000
+ | BATTLE_TYPE_RECORDED_LINK
| BATTLE_TYPE_TRAINER_HILL)))
{
HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality);
@@ -3409,7 +3409,7 @@ static void BattleIntroDrawTrainersOrMonsSprites(void)
if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER
| BATTLE_TYPE_FRONTIER
| BATTLE_TYPE_LINK
- | BATTLE_TYPE_x2000000
+ | BATTLE_TYPE_RECORDED_LINK
| BATTLE_TYPE_TRAINER_HILL)))
{
HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality);
@@ -3544,9 +3544,9 @@ static void BattleIntroPrintOpponentSendsOut(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
position = B_POSITION_OPPONENT_LEFT;
- else if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
{
- if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_IS_MASTER)
position = B_POSITION_OPPONENT_LEFT;
else
position = B_POSITION_PLAYER_LEFT;
@@ -3564,9 +3564,9 @@ static void BattleIntroOpponent2SendsOutMonAnimation(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
position = B_POSITION_OPPONENT_RIGHT;
- else if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
{
- if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_IS_MASTER)
position = B_POSITION_OPPONENT_RIGHT;
else
position = B_POSITION_PLAYER_RIGHT;
@@ -3592,9 +3592,9 @@ static void BattleIntroOpponent1SendsOutMonAnimation(void)
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
{
- if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
{
- if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_IS_MASTER)
position = B_POSITION_OPPONENT_LEFT;
else
position = B_POSITION_PLAYER_LEFT;
@@ -3635,7 +3635,7 @@ static void BattleIntroRecordMonsToDex(void)
&& !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER
| BATTLE_TYPE_FRONTIER
| BATTLE_TYPE_LINK
- | BATTLE_TYPE_x2000000
+ | BATTLE_TYPE_RECORDED_LINK
| BATTLE_TYPE_TRAINER_HILL)))
{
HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality);
@@ -3659,9 +3659,9 @@ static void BattleIntroPrintPlayerSendsOut(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
position = B_POSITION_PLAYER_LEFT;
- else if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
{
- if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_IS_MASTER)
position = B_POSITION_PLAYER_LEFT;
else
position = B_POSITION_OPPONENT_LEFT;
@@ -3682,9 +3682,9 @@ static void BattleIntroPlayer2SendsOutMonAnimation(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
position = B_POSITION_PLAYER_RIGHT;
- else if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
{
- if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_IS_MASTER)
position = B_POSITION_PLAYER_RIGHT;
else
position = B_POSITION_OPPONENT_RIGHT;
@@ -3714,9 +3714,9 @@ static void BattleIntroPlayer1SendsOutMonAnimation(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
position = B_POSITION_PLAYER_LEFT;
- else if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
{
- if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_IS_MASTER)
position = B_POSITION_PLAYER_LEFT;
else
position = B_POSITION_OPPONENT_LEFT;
@@ -4155,7 +4155,7 @@ static void HandleTurnActionSelectionState(void)
if (gBattleTypeFlags & (BATTLE_TYPE_LINK
| BATTLE_TYPE_FRONTIER_NO_PYRAMID
| BATTLE_TYPE_EREADER_TRAINER
- | BATTLE_TYPE_x2000000))
+ | BATTLE_TYPE_RECORDED_LINK))
{
RecordedBattle_ClearBattlerAction(gActiveBattler, 1);
gSelectionBattleScripts[gActiveBattler] = BattleScript_ActionSelectionItemsCantBeUsed;
@@ -4263,7 +4263,7 @@ static void HandleTurnActionSelectionState(void)
return;
}
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER
- && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
&& gBattleBufferB[gActiveBattler][1] == B_ACTION_RUN)
{
BattleScriptExecute(BattleScript_PrintCantRunFromTrainer);
@@ -4574,7 +4574,7 @@ u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves)
}
// badge boost
- if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_FRONTIER))
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_FRONTIER))
&& FlagGet(FLAG_BADGE03_GET)
&& GetBattlerSide(battler1) == B_SIDE_PLAYER)
{
@@ -4608,7 +4608,7 @@ u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves)
}
// badge boost
- if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_FRONTIER))
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_FRONTIER))
&& FlagGet(FLAG_BADGE03_GET)
&& GetBattlerSide(battler2) == B_SIDE_PLAYER)
{
@@ -4892,7 +4892,7 @@ static void HandleEndTurn_BattleWon(void)
{
gCurrentActionFuncId = 0;
- if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
{
gSpecialVar_Result = gBattleOutcome;
gBattleTextBuff1[0] = gBattleOutcome;
@@ -4950,7 +4950,7 @@ static void HandleEndTurn_BattleLost(void)
{
gCurrentActionFuncId = 0;
- if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
{
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
@@ -5031,7 +5031,7 @@ static void HandleEndTurn_FinishBattle(void)
if (gCurrentActionFuncId == B_ACTION_TRY_FINISH || gCurrentActionFuncId == B_ACTION_FINISHED)
{
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK
- | BATTLE_TYPE_x2000000
+ | BATTLE_TYPE_RECORDED_LINK
| BATTLE_TYPE_FIRST_BATTLE
| BATTLE_TYPE_SAFARI
| BATTLE_TYPE_EREADER_TRAINER
@@ -5058,7 +5058,7 @@ static void HandleEndTurn_FinishBattle(void)
}
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK
- | BATTLE_TYPE_x2000000
+ | BATTLE_TYPE_RECORDED_LINK
| BATTLE_TYPE_TRAINER
| BATTLE_TYPE_FIRST_BATTLE
| BATTLE_TYPE_SAFARI
diff --git a/src/battle_message.c b/src/battle_message.c
index e6c1666fc..3f886c196 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -180,7 +180,7 @@ static const u8 sText_PkmnStayedAwakeUsing[] = _("{B_DEF_NAME_WITH_PREFIX} staye
static const u8 sText_PkmnStoringEnergy[] = _("{B_ATK_NAME_WITH_PREFIX} is storing\nenergy!");
static const u8 sText_PkmnUnleashedEnergy[] = _("{B_ATK_NAME_WITH_PREFIX} unleashed\nenergy!");
static const u8 sText_PkmnFatigueConfusion[] = _("{B_ATK_NAME_WITH_PREFIX} became\nconfused due to fatigue!");
-static const u8 sText_PkmnPickedUpItem[] = _("{B_PLAYER_NAME} picked up\n¥{B_BUFF1}!\p");
+static const u8 sText_PlayerPickedUpMoney[] = _("{B_PLAYER_NAME} picked up\n¥{B_BUFF1}!\p");
static const u8 sText_PkmnUnaffected[] = _("{B_DEF_NAME_WITH_PREFIX} is\nunaffected!");
static const u8 sText_PkmnTransformedInto[] = _("{B_ATK_NAME_WITH_PREFIX} transformed\ninto {B_BUFF1}!");
static const u8 sText_PkmnMadeSubstitute[] = _("{B_ATK_NAME_WITH_PREFIX} made\na SUBSTITUTE!");
@@ -340,9 +340,9 @@ static const u8 sText_ButItFailed[] = _("But it failed!");
static const u8 sText_ItHurtConfusion[] = _("It hurt itself in its\nconfusion!");
static const u8 sText_MirrorMoveFailed[] = _("The MIRROR MOVE failed!");
static const u8 sText_StartedToRain[] = _("It started to rain!");
-static const u8 sText_DownpourStarted[] = _("A downpour started!");
+static const u8 sText_DownpourStarted[] = _("A downpour started!"); // corresponds to DownpourText in pokegold and pokecrystal and is used by Rain Dance in GSC
static const u8 sText_RainContinues[] = _("Rain continues to fall.");
-static const u8 sText_DownpourContinues[] = _("The downpour continues.");
+static const u8 sText_DownpourContinues[] = _("The downpour continues."); // unused
static const u8 sText_RainStopped[] = _("The rain stopped.");
static const u8 sText_SandstormBrewed[] = _("A sandstorm brewed!");
static const u8 sText_SandstormRages[] = _("The sandstorm rages.");
@@ -632,7 +632,7 @@ const u8 * const gBattleStringsTable[BATTLESTRINGS_COUNT] =
[STRINGID_PKMNSTORINGENERGY - 12] = sText_PkmnStoringEnergy,
[STRINGID_PKMNUNLEASHEDENERGY - 12] = sText_PkmnUnleashedEnergy,
[STRINGID_PKMNFATIGUECONFUSION - 12] = sText_PkmnFatigueConfusion,
- [STRINGID_PKMNPICKEDUPITEM - 12] = sText_PkmnPickedUpItem,
+ [STRINGID_PLAYERPICKEDUPMONEY - 12] = sText_PlayerPickedUpMoney,
[STRINGID_PKMNUNAFFECTED - 12] = sText_PkmnUnaffected,
[STRINGID_PKMNTRANSFORMEDINTO - 12] = sText_PkmnTransformedInto,
[STRINGID_PKMNMADESUBSTITUTE - 12] = sText_PkmnMadeSubstitute,
@@ -2009,9 +2009,9 @@ void BufferStringBattle(u16 stringID)
case STRINGID_INTROMSG: // first battle msg
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
- if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
{
- if (gBattleTypeFlags & BATTLE_TYPE_x800000)
+ if (gBattleTypeFlags & BATTLE_TYPE_TOWER_LINK_MULTI)
{
stringPtr = sText_TwoTrainersWantToBattle;
}
@@ -2079,18 +2079,18 @@ void BufferStringBattle(u16 stringID)
{
if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
stringPtr = sText_TwoTrainersSentPkmn;
- else if (gBattleTypeFlags & BATTLE_TYPE_x800000)
+ else if (gBattleTypeFlags & BATTLE_TYPE_TOWER_LINK_MULTI)
stringPtr = sText_TwoTrainersSentPkmn;
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
stringPtr = sText_TwoLinkTrainersSentOutPkmn;
- else if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ else if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
stringPtr = sText_LinkTrainerSentOutTwoPkmn;
else
stringPtr = sText_Trainer1SentOutTwoPkmn;
}
else
{
- if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)))
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)))
stringPtr = sText_Trainer1SentOutPkmn;
else if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM)
stringPtr = sText_Trainer1SentOutPkmn;
@@ -2113,7 +2113,7 @@ void BufferStringBattle(u16 stringID)
}
else
{
- if (gTrainerBattleOpponent_A == TRAINER_LINK_OPPONENT || gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ if (gTrainerBattleOpponent_A == TRAINER_LINK_OPPONENT || gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
stringPtr = sText_LinkTrainer2WithdrewPkmn;
@@ -2140,9 +2140,9 @@ void BufferStringBattle(u16 stringID)
}
else
{
- if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
{
- if (gBattleTypeFlags & BATTLE_TYPE_x800000)
+ if (gBattleTypeFlags & BATTLE_TYPE_TOWER_LINK_MULTI)
{
if (gBattleScripting.battler == 1)
stringPtr = sText_Trainer1SentOutPkmn2;
@@ -2210,7 +2210,7 @@ void BufferStringBattle(u16 stringID)
switch (gBattleTextBuff1[0])
{
case B_OUTCOME_WON:
- if (gBattleTypeFlags & BATTLE_TYPE_x800000)
+ if (gBattleTypeFlags & BATTLE_TYPE_TOWER_LINK_MULTI)
stringPtr = sText_TwoInGameTrainersDefeated;
else
stringPtr = sText_TwoLinkTrainersDefeated;
@@ -2336,8 +2336,8 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
u8 multiplayerId;
s32 i;
- if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
- multiplayerId = gUnknown_0203C7B4;
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
+ multiplayerId = gRecordedBattleMultiplayerId;
else
multiplayerId = GetMultiplayerId();
@@ -2477,7 +2477,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
toCpy = gMoveNames[gBattleMsgDataPtr->originallyUsedMove];
break;
case B_TXT_LAST_ITEM: // last used item
- if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
{
if (gLastUsedItem == ITEM_ENIGMA_BERRY)
{
@@ -2858,7 +2858,7 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst)
break;
case B_BUFF_ITEM: // item name
hword = T1_READ_16(&src[srcID + 1]);
- if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
{
if (hword == ITEM_ENIGMA_BERRY)
{
@@ -3018,7 +3018,7 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId)
if (windowId == 0 || windowId == 0x16)
{
- if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
speed = 1;
else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
speed = sRecordedBattleTextSpeeds[GetTextSpeedInRecordedBattle()];
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 6ec9d16b1..f6546ab25 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -2713,7 +2713,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
(BATTLE_TYPE_EREADER_TRAINER
| BATTLE_TYPE_FRONTIER
| BATTLE_TYPE_LINK
- | BATTLE_TYPE_x2000000
+ | BATTLE_TYPE_RECORDED_LINK
| BATTLE_TYPE_SECRET_BASE)))
{
gBattlescriptCurrInstr++;
@@ -2722,7 +2722,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
(BATTLE_TYPE_EREADER_TRAINER
| BATTLE_TYPE_FRONTIER
| BATTLE_TYPE_LINK
- | BATTLE_TYPE_x2000000
+ | BATTLE_TYPE_RECORDED_LINK
| BATTLE_TYPE_SECRET_BASE))
&& (gWishFutureKnock.knockedOffMons[side] & gBitTable[gBattlerPartyIndexes[gBattlerAttacker]]))
{
@@ -3228,7 +3228,7 @@ static void Cmd_getexp(void)
case 0: // check if should receive exp at all
if (GetBattlerSide(gBattlerFainted) != B_SIDE_OPPONENT || (gBattleTypeFlags &
(BATTLE_TYPE_LINK
- | BATTLE_TYPE_x2000000
+ | BATTLE_TYPE_RECORDED_LINK
| BATTLE_TYPE_TRAINER_HILL
| BATTLE_TYPE_FRONTIER
| BATTLE_TYPE_SAFARI
@@ -3533,7 +3533,7 @@ static void Cmd_unknown_24(void)
if (HP_count == 0)
gBattleOutcome |= B_OUTCOME_WON;
- if (gBattleOutcome == 0 && (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)))
+ if (gBattleOutcome == 0 && (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)))
{
s32 foundPlayer = 0;
s32 foundOpponent;
@@ -4634,7 +4634,7 @@ static void Cmd_switchinanim(void)
if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT
&& !(gBattleTypeFlags & (BATTLE_TYPE_LINK
| BATTLE_TYPE_EREADER_TRAINER
- | BATTLE_TYPE_x2000000
+ | BATTLE_TYPE_RECORDED_LINK
| BATTLE_TYPE_TRAINER_HILL
| BATTLE_TYPE_FRONTIER)))
HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality);
@@ -4691,7 +4691,7 @@ static void Cmd_jumpifcantswitch(void)
}
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if (gBattleTypeFlags & BATTLE_TYPE_x800000)
+ if (gBattleTypeFlags & BATTLE_TYPE_TOWER_LINK_MULTI)
{
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
@@ -7137,7 +7137,7 @@ static void Cmd_forcerandomswitch(void)
party = gEnemyParty;
if ((gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER && gBattleTypeFlags & BATTLE_TYPE_LINK)
- || (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER && gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ || (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER && gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
|| (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER))
{
if ((gBattlerTarget & BIT_FLANK) != 0)
@@ -7156,7 +7156,7 @@ static void Cmd_forcerandomswitch(void)
battler1PartyId = gBattlerPartyIndexes[gBattlerTarget ^ BIT_FLANK];
}
else if ((gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK)
- || (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_x2000000))
+ || (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK))
{
if (GetLinkTrainerFlankId(GetBattlerMultiplayerId(gBattlerTarget)) == 1)
{
@@ -7256,8 +7256,8 @@ static void Cmd_forcerandomswitch(void)
if ((gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
|| (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI)
- || (gBattleTypeFlags & BATTLE_TYPE_x2000000 && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
- || (gBattleTypeFlags & BATTLE_TYPE_x2000000 && gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ || (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ || (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
SwitchPartyOrderLinkMulti(gBattlerTarget, i, 0);
SwitchPartyOrderLinkMulti(gBattlerTarget ^ BIT_FLANK, i, 1);
@@ -7337,7 +7337,7 @@ static void Cmd_tryconversiontypechange(void) // randomly changes user's type to
static void Cmd_givepaydaymoney(void)
{
- if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) && gPaydayMoney != 0)
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)) && gPaydayMoney != 0)
{
u32 bonusMoney = gPaydayMoney * gBattleStruct->moneyMultiplier;
AddMoney(&gSaveBlock1Ptr->money, bonusMoney);
@@ -9044,7 +9044,7 @@ static void Cmd_tryswapitems(void) // trick
| BATTLE_TYPE_EREADER_TRAINER
| BATTLE_TYPE_FRONTIER
| BATTLE_TYPE_SECRET_BASE
- | BATTLE_TYPE_x2000000))))
+ | BATTLE_TYPE_RECORDED_LINK))))
{
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
}
@@ -9058,7 +9058,7 @@ static void Cmd_tryswapitems(void) // trick
| BATTLE_TYPE_EREADER_TRAINER
| BATTLE_TYPE_FRONTIER
| BATTLE_TYPE_SECRET_BASE
- | BATTLE_TYPE_x2000000))
+ | BATTLE_TYPE_RECORDED_LINK))
&& (gWishFutureKnock.knockedOffMons[sideAttacker] & gBitTable[gBattlerPartyIndexes[gBattlerAttacker]]
|| gWishFutureKnock.knockedOffMons[sideTarget] & gBitTable[gBattlerPartyIndexes[gBattlerTarget]]))
{
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 40b5993f0..0a5e7e8b4 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -607,7 +607,7 @@ static void CB2_EndWildBattle(void)
else
{
SetMainCallback2(CB2_ReturnToField);
- gFieldCallback = sub_80AF6F0;
+ gFieldCallback = FieldCB_ReturnToFieldNoScriptCheckMusic;
}
}
diff --git a/src/battle_tower.c b/src/battle_tower.c
index ee75feeb4..51d695f9b 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -775,7 +775,7 @@ struct
{
{
.species = SPECIES_METANG,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.level = 42,
.nature = NATURE_BRAVE,
.evs = {0, 252, 252, 0, 6, 0},
@@ -783,7 +783,7 @@ struct
},
{
.species = SPECIES_SKARMORY,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.level = 43,
.nature = NATURE_IMPISH,
.evs = {252, 0, 0, 0, 6, 252},
@@ -791,7 +791,7 @@ struct
},
{
.species = SPECIES_AGGRON,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.level = 44,
.nature = NATURE_ADAMANT,
.evs = {0, 252, 0, 0, 252, 6},
@@ -1854,7 +1854,7 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId)
}
else
{
- fixedIV = 31;
+ fixedIV = MAX_PER_STAT_IVS;
}
level = SetFacilityPtrsGetLevel();
@@ -2024,7 +2024,7 @@ void DoSpecialTrainerBattle(void)
gBattleTypeFlags |= BATTLE_TYPE_DOUBLE | BATTLE_TYPE_INGAME_PARTNER | BATTLE_TYPE_MULTI | BATTLE_TYPE_TWO_OPPONENTS;
break;
case FRONTIER_MODE_LINK_MULTIS:
- gBattleTypeFlags |= BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_MULTI | BATTLE_TYPE_x800000;
+ gBattleTypeFlags |= BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_MULTI | BATTLE_TYPE_TOWER_LINK_MULTI;
FillFrontierTrainersParties(FRONTIER_MULTI_PARTY_SIZE);
break;
}
@@ -3295,7 +3295,7 @@ static u8 GetFrontierTrainerFixedIvs(u16 trainerId)
else if (trainerId <= FRONTIER_TRAINER_TESS) // 200 - 219
fixedIv = 21;
else // 220+ (- 299)
- fixedIv = 31;
+ fixedIv = MAX_PER_STAT_IVS;
return fixedIv;
}
@@ -3521,7 +3521,7 @@ bool32 ValidateBattleTowerRecord(u8 recordId) // unused
void TrySetLinkBattleTowerEnemyPartyLevel(void)
{
- if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
{
s32 i;
u8 enemyLevel = SetFacilityPtrsGetLevel();
diff --git a/src/battle_tv.c b/src/battle_tv.c
index 7e311fdab..7aac51d4f 100644
--- a/src/battle_tv.c
+++ b/src/battle_tv.c
@@ -1065,7 +1065,7 @@ static void TrySetBattleSeminarShow(void)
u16 powerOverride;
u16 currMoveSaved;
- if (gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
return;
else if (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT)
return;
diff --git a/src/battle_util.c b/src/battle_util.c
index e929de091..7ea4566d2 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -452,7 +452,7 @@ void HandleAction_Run(void)
{
gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
- if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
{
gCurrentTurnActionNumber = gBattlersCount;
@@ -2245,7 +2245,7 @@ bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2)
}
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if (gBattleTypeFlags & BATTLE_TYPE_x800000)
+ if (gBattleTypeFlags & BATTLE_TYPE_TOWER_LINK_MULTI)
{
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
{
@@ -3966,7 +3966,7 @@ u8 IsMonDisobedient(void)
s32 calc;
u8 obedienceLevel = 0;
- if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
return 0;
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT)
return 0;
diff --git a/src/cable_club.c b/src/cable_club.c
index f02683c9d..64bc9187a 100644
--- a/src/cable_club.c
+++ b/src/cable_club.c
@@ -993,7 +993,7 @@ static void CB2_ReturnFromUnionRoomBattle(void)
void CB2_ReturnFromCableClubBattle(void)
{
- gBattleTypeFlags &= ~BATTLE_TYPE_20;
+ gBattleTypeFlags &= ~BATTLE_TYPE_LINK_IN_BATTLE;
Overworld_ResetMapMusic();
LoadPlayerParty();
SavePlayerBag();
diff --git a/src/data/bard_music/bard_sounds.h b/src/data/bard_music/bard_sounds.h
index 4a0911726..1ec1f0d97 100644
--- a/src/data/bard_music/bard_sounds.h
+++ b/src/data/bard_music/bard_sounds.h
@@ -24,29 +24,29 @@
#include "events.h"
#include "trendysaying.h"
-const struct BardSound (*const gBardSoundsTable[])[6] = {
- NULL,
- gBardSounds_Trainer,
- gBardSounds_Status,
- gBardSounds_Battle,
- gBardSounds_Greetings,
- gBardSounds_People,
- gBardSounds_Voices,
- gBardSounds_Speech,
- gBardSounds_Endings,
- gBardSounds_Feelings,
- gBardSounds_Conditions,
- gBardSounds_Actions,
- gBardSounds_Lifestyle,
- gBardSounds_Hobbies,
- gBardSounds_Time,
- gBardSounds_Misc,
- gBardSounds_Adjectives,
- gBardSounds_Events,
- NULL,
- NULL,
- gBardSounds_TrendySaying,
- NULL
+const struct BardSound (*const gBardSoundsTable[EC_NUM_GROUPS])[6] = {
+ [EC_GROUP_POKEMON] = NULL, // Handled by gBardSounds_Pokemon
+ [EC_GROUP_TRAINER] = gBardSounds_Trainer,
+ [EC_GROUP_STATUS] = gBardSounds_Status,
+ [EC_GROUP_BATTLE] = gBardSounds_Battle,
+ [EC_GROUP_GREETINGS] = gBardSounds_Greetings,
+ [EC_GROUP_PEOPLE] = gBardSounds_People,
+ [EC_GROUP_VOICES] = gBardSounds_Voices,
+ [EC_GROUP_SPEECH] = gBardSounds_Speech,
+ [EC_GROUP_ENDINGS] = gBardSounds_Endings,
+ [EC_GROUP_FEELINGS] = gBardSounds_Feelings,
+ [EC_GROUP_CONDITIONS] = gBardSounds_Conditions,
+ [EC_GROUP_ACTIONS] = gBardSounds_Actions,
+ [EC_GROUP_LIFESTYLE] = gBardSounds_Lifestyle,
+ [EC_GROUP_HOBBIES] = gBardSounds_Hobbies,
+ [EC_GROUP_TIME] = gBardSounds_Time,
+ [EC_GROUP_MISC] = gBardSounds_Misc,
+ [EC_GROUP_ADJECTIVES] = gBardSounds_Adjectives,
+ [EC_GROUP_EVENTS] = gBardSounds_Events,
+ [EC_GROUP_MOVE_1] = NULL, // Handled by gBardSounds_Moves
+ [EC_GROUP_MOVE_2] = NULL, // Handled by gBardSounds_Moves
+ [EC_GROUP_TRENDY_SAYING] = gBardSounds_TrendySaying,
+ [EC_GROUP_POKEMON_2] = NULL // Handled by gBardSounds_Pokemon
};
#endif //GUARD_BARD_SOUNDS_TABLE_H
diff --git a/src/data/battle_frontier/trainer_hill.h b/src/data/battle_frontier/trainer_hill.h
index 1b41024d0..d8bd57576 100644
--- a/src/data/battle_frontier/trainer_hill.h
+++ b/src/data/battle_frontier/trainer_hill.h
@@ -1244,12 +1244,12 @@ static const struct TrHillFloor sDataTagNormal_Floors[] =
.attackEV = 252,
.speedEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0xCB,
.nickname = _("SKITTY"),
@@ -2717,11 +2717,11 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = {
.spAttackEV = 255,
.otId = TRAINER_HILL_OTID,
.hpIV = 30,
- .attackIV = 31,
+ .attackIV = MAX_PER_STAT_IVS,
.defenseIV = 30,
- .speedIV = 31,
+ .speedIV = MAX_PER_STAT_IVS,
.spAttackIV = 30,
- .spDefenseIV = 31,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x202,
.nickname = _("UNOWN"),
@@ -2738,11 +2738,11 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = {
.spAttackEV = 255,
.otId = TRAINER_HILL_OTID,
.hpIV = 30,
- .attackIV = 31,
- .defenseIV = 31,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
.speedIV = 30,
.spAttackIV = 30,
- .spDefenseIV = 31,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x10001,
.nickname = _("UNOWN"),
@@ -2921,11 +2921,11 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = {
.spAttackEV = 255,
.otId = TRAINER_HILL_OTID,
.hpIV = 30,
- .attackIV = 31,
+ .attackIV = MAX_PER_STAT_IVS,
.defenseIV = 30,
.speedIV = 30,
.spAttackIV = 30,
- .spDefenseIV = 31,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x302,
.nickname = _("UNOWN"),
@@ -2941,10 +2941,10 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = {
.hpEV = 255,
.attackEV = 255,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
.attackIV = 30,
- .defenseIV = 31,
- .speedIV = 31,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
.spAttackIV = 30,
.spDefenseIV = 30,
.abilityNum = 0,
@@ -2962,12 +2962,12 @@ static const struct TrHillFloor sDataTagVariety_Floors[] = {
.hpEV = 255,
.spAttackEV = 255,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
.defenseIV = 30,
.speedIV = 30,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x301,
.nickname = _("UNOWN"),
@@ -3820,12 +3820,12 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = {
.speedEV = 252,
.spAttackEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x32,
.nickname = _("SMOOCHUM"),
@@ -3842,12 +3842,12 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = {
.speedEV = 252,
.spAttackEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0xC8,
.nickname = _("AZURILL"),
@@ -3864,12 +3864,12 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = {
.speedEV = 252,
.spAttackEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x0,
.nickname = _("ELEKID"),
@@ -3886,12 +3886,12 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = {
.attackEV = 252,
.speedEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x0,
.nickname = _("CLEFFA"),
@@ -3908,12 +3908,12 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = {
.defenseEV = 130,
.spDefenseEV = 130,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x84,
.nickname = _("WYNAUT"),
@@ -3930,12 +3930,12 @@ static const struct TrHillFloor sDataTagUnique_Floors[] = {
.speedEV = 252,
.spAttackEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0xF,
.nickname = _("MAGBY"),
@@ -4319,12 +4319,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 252,
.defenseEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x35,
.nickname = _("SNORLAX"),
@@ -4341,12 +4341,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 252,
.speedEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x3,
.nickname = _("MILTANK"),
@@ -4363,12 +4363,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 252,
.spAttackEV = 6,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x7F,
.nickname = _("URSARING"),
@@ -4385,12 +4385,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 252,
.spDefenseEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x80,
.nickname = _("SLAKING"),
@@ -4407,12 +4407,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 252,
.speedEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x3,
.nickname = _("KANGASKHAN"),
@@ -4429,12 +4429,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 252,
.speedEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x80,
.nickname = _("ZANGOOSE"),
@@ -4464,12 +4464,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.defenseEV = 110,
.spAttackEV = 200,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 1,
.personality = 0xF,
.nickname = _("SLOWKING"),
@@ -4486,12 +4486,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.speedEV = 252,
.spAttackEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x28,
.nickname = _("ESPEON"),
@@ -4508,12 +4508,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.speedEV = 252,
.spAttackEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 1,
.personality = 0xF,
.nickname = _("STARMIE"),
@@ -4530,12 +4530,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.speedEV = 252,
.spAttackEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0xF,
.nickname = _("GENGAR"),
@@ -4552,12 +4552,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.speedEV = 252,
.spAttackEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0xF,
.nickname = _("GARDEVOIR"),
@@ -4574,12 +4574,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.speedEV = 252,
.spAttackEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0xF,
.nickname = _("ALAKAZAM"),
@@ -4641,12 +4641,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 252,
.spDefenseEV = 6,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x3,
.nickname = _("SWELLOW"),
@@ -4663,12 +4663,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 252,
.spDefenseEV = 6,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x3,
.nickname = _("MACHAMP"),
@@ -4685,12 +4685,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 252,
.spDefenseEV = 6,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x3,
.nickname = _("URSARING"),
@@ -4707,12 +4707,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 252,
.spDefenseEV = 6,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x80,
.nickname = _("KINGLER"),
@@ -4729,12 +4729,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 252,
.defenseEV = 6,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x80,
.nickname = _("TYRANITAR"),
@@ -4751,12 +4751,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 252,
.spDefenseEV = 6,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x80,
.nickname = _("DRAGONITE"),
@@ -4786,12 +4786,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.speedEV = 252,
.spAttackEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0xA,
.nickname = _("JOLTEON"),
@@ -4808,12 +4808,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.speedEV = 252,
.spAttackEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0xA,
.nickname = _("ALAKAZAM"),
@@ -4830,12 +4830,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.speedEV = 252,
.spAttackEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 1,
.personality = 0xA,
.nickname = _("STARMIE"),
@@ -4852,12 +4852,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.defenseEV = 252,
.spDefenseEV = 6,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x82,
.nickname = _("DUSCLOPS"),
@@ -4874,12 +4874,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.speedEV = 252,
.spAttackEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0xD2,
.nickname = _("NINETALES"),
@@ -4896,12 +4896,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.defenseEV = 252,
.spDefenseEV = 6,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x85,
.nickname = _("BANETTE"),
@@ -4963,12 +4963,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.defenseEV = 130,
.spDefenseEV = 130,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x94,
.nickname = _("WOBBUFFET"),
@@ -4985,12 +4985,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.defenseEV = 130,
.spDefenseEV = 130,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x85,
.nickname = _("EXPLOUD"),
@@ -5007,12 +5007,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.defenseEV = 130,
.spDefenseEV = 130,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x0,
.nickname = _("CROBAT"),
@@ -5029,12 +5029,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 252,
.speedEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 1,
.personality = 0xD,
.nickname = _("DUGTRIO"),
@@ -5051,12 +5051,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.defenseEV = 252,
.spAttackEV = 6,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x5,
.nickname = _("ELECTRODE"),
@@ -5073,12 +5073,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.speedEV = 252,
.spDefenseEV = 6,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x14,
.nickname = _("GENGAR"),
@@ -5108,12 +5108,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.defenseEV = 130,
.spDefenseEV = 130,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x82,
.nickname = _("LAPRAS"),
@@ -5130,12 +5130,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.defenseEV = 6,
.speedEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x8A,
.nickname = _("ABSOL"),
@@ -5152,12 +5152,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.spAttackEV = 6,
.spDefenseEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x0,
.nickname = _("ALTARIA"),
@@ -5174,12 +5174,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.speedEV = 252,
.spAttackEV = 6,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x14,
.nickname = _("DEWGONG"),
@@ -5196,12 +5196,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.spAttackEV = 6,
.spDefenseEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 1,
.personality = 0x14,
.nickname = _("POLITOED"),
@@ -5218,12 +5218,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.speedEV = 6,
.spDefenseEV = 252,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 1,
.personality = 0x17,
.nickname = _("MAROWAK"),
@@ -5285,12 +5285,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 200,
.spDefenseEV = 200,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x3,
.nickname = _("FORRETRESS"),
@@ -5306,12 +5306,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 255,
.spAttackEV = 255,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 1,
.personality = 0xC,
.nickname = _("ELECTRODE"),
@@ -5327,12 +5327,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 255,
.spAttackEV = 255,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x7F,
.nickname = _("EXEGGUTOR"),
@@ -5349,12 +5349,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.defenseEV = 200,
.spDefenseEV = 200,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x93,
.nickname = _("DUSCLOPS"),
@@ -5370,12 +5370,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.speedEV = 255,
.spAttackEV = 255,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0xF,
.nickname = _("NINETALES"),
@@ -5391,12 +5391,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.hpEV = 255,
.spAttackEV = 255,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x96,
.nickname = _("BANETTE"),
@@ -5425,12 +5425,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 255,
.spAttackEV = 255,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x95,
.nickname = _("SALAMENCE"),
@@ -5446,12 +5446,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.speedEV = 255,
.spAttackEV = 255,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x8C,
.nickname = _("GENGAR"),
@@ -5467,12 +5467,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 255,
.speedEV = 255,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x3,
.nickname = _("GYARADOS"),
@@ -5488,12 +5488,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.attackEV = 255,
.speedEV = 255,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x3,
.nickname = _("GENGAR"),
@@ -5510,12 +5510,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.defenseEV = 200,
.spDefenseEV = 200,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x14,
.nickname = _("DUSCLOPS"),
@@ -5532,12 +5532,12 @@ static const struct TrHillFloor sDataTagExpert_Floors[] = {
.defenseEV = 180,
.spDefenseEV = 150,
.otId = TRAINER_HILL_OTID,
- .hpIV = 31,
- .attackIV = 31,
- .defenseIV = 31,
- .speedIV = 31,
- .spAttackIV = 31,
- .spDefenseIV = 31,
+ .hpIV = MAX_PER_STAT_IVS,
+ .attackIV = MAX_PER_STAT_IVS,
+ .defenseIV = MAX_PER_STAT_IVS,
+ .speedIV = MAX_PER_STAT_IVS,
+ .spAttackIV = MAX_PER_STAT_IVS,
+ .spDefenseIV = MAX_PER_STAT_IVS,
.abilityNum = 0,
.personality = 0x85,
.nickname = _("MISDREAVUS"),
diff --git a/src/data/decoration/header.h b/src/data/decoration/header.h
index 55458c7a3..c57498828 100644
--- a/src/data/decoration/header.h
+++ b/src/data/decoration/header.h
@@ -1,1091 +1,1454 @@
-const struct Decoration gDecorations[] = {
- {
- DECOR_NONE,
- _("SMALL DESK"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_DESK,
- 0,
- DecorDesc_SMALL_DESK,
- DecorGfx_SMALL_DESK
- }, {
- DECOR_SMALL_DESK,
- _("SMALL DESK"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_DESK,
- 3000,
- DecorDesc_SMALL_DESK,
- DecorGfx_SMALL_DESK
- }, {
- DECOR_POKEMON_DESK,
- _("POKéMON DESK"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_DESK,
- 3000,
- DecorDesc_POKEMON_DESK,
- DecorGfx_POKEMON_DESK
- }, {
- DECOR_HEAVY_DESK,
- _("HEAVY DESK"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_3x2,
- DECORCAT_DESK,
- 6000,
- DecorDesc_HEAVY_DESK,
- DecorGfx_HEAVY_DESK
- }, {
- DECOR_RAGGED_DESK,
- _("RAGGED DESK"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_3x2,
- DECORCAT_DESK,
- 6000,
- DecorDesc_RAGGED_DESK,
- DecorGfx_RAGGED_DESK
- }, {
- DECOR_COMFORT_DESK,
- _("COMFORT DESK"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_3x2,
- DECORCAT_DESK,
- 6000,
- DecorDesc_COMFORT_DESK,
- DecorGfx_COMFORT_DESK
- }, {
- DECOR_PRETTY_DESK,
- _("PRETTY DESK"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_3x3,
- DECORCAT_DESK,
- 9000,
- DecorDesc_PRETTY_DESK,
- DecorGfx_PRETTY_DESK
- }, {
- DECOR_BRICK_DESK,
- _("BRICK DESK"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_3x3,
- DECORCAT_DESK,
- 9000,
- DecorDesc_BRICK_DESK,
- DecorGfx_BRICK_DESK
- }, {
- DECOR_CAMP_DESK,
- _("CAMP DESK"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_3x3,
- DECORCAT_DESK,
- 9000,
- DecorDesc_CAMP_DESK,
- DecorGfx_CAMP_DESK
- }, {
- DECOR_HARD_DESK,
- _("HARD DESK"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_3x3,
- DECORCAT_DESK,
- 9000,
- DecorDesc_HARD_DESK,
- DecorGfx_HARD_DESK
- }, {
- DECOR_SMALL_CHAIR,
- _("SMALL CHAIR"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_CHAIR,
- 2000,
- DecorDesc_SMALL_CHAIR,
- DecorGfx_SMALL_CHAIR
- }, {
- DECOR_POKEMON_CHAIR,
- _("POKéMON CHAIR"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_CHAIR,
- 2000,
- DecorDesc_POKEMON_CHAIR,
- DecorGfx_POKEMON_CHAIR
- }, {
- DECOR_HEAVY_CHAIR,
- _("HEAVY CHAIR"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_CHAIR,
- 2000,
- DecorDesc_HEAVY_CHAIR,
- DecorGfx_HEAVY_CHAIR
- }, {
- DECOR_PRETTY_CHAIR,
- _("PRETTY CHAIR"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_CHAIR,
- 2000,
- DecorDesc_PRETTY_CHAIR,
- DecorGfx_PRETTY_CHAIR
- }, {
- DECOR_COMFORT_CHAIR,
- _("COMFORT CHAIR"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_CHAIR,
- 2000,
- DecorDesc_COMFORT_CHAIR,
- DecorGfx_COMFORT_CHAIR
- }, {
- DECOR_RAGGED_CHAIR,
- _("RAGGED CHAIR"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_CHAIR,
- 2000,
- DecorDesc_RAGGED_CHAIR,
- DecorGfx_RAGGED_CHAIR
- }, {
- DECOR_BRICK_CHAIR,
- _("BRICK CHAIR"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_CHAIR,
- 2000,
- DecorDesc_BRICK_CHAIR,
- DecorGfx_BRICK_CHAIR
- }, {
- DECOR_CAMP_CHAIR,
- _("CAMP CHAIR"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_CHAIR,
- 2000,
- DecorDesc_CAMP_CHAIR,
- DecorGfx_CAMP_CHAIR
- }, {
- DECOR_HARD_CHAIR,
- _("HARD CHAIR"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_CHAIR,
- 2000,
- DecorDesc_HARD_CHAIR,
- DecorGfx_HARD_CHAIR
- }, {
- DECOR_RED_PLANT,
- _("RED PLANT"),
- DECORPERM_BEHIND_FLOOR,
- DECORSHAPE_1x2,
- DECORCAT_PLANT,
- 3000,
- DecorDesc_RED_PLANT,
- DecorGfx_RED_PLANT
- }, {
- DECOR_TROPICAL_PLANT,
- _("TROPICAL PLANT"),
- DECORPERM_BEHIND_FLOOR,
- DECORSHAPE_1x2,
- DECORCAT_PLANT,
- 3000,
- DecorDesc_TROPICAL_PLANT,
- DecorGfx_TROPICAL_PLANT
- }, {
- DECOR_PRETTY_FLOWERS,
- _("PRETTY FLOWERS"),
- DECORPERM_BEHIND_FLOOR,
- DECORSHAPE_1x2,
- DECORCAT_PLANT,
- 3000,
- DecorDesc_PRETTY_FLOWERS,
- DecorGfx_PRETTY_FLOWERS
- }, {
- DECOR_COLORFUL_PLANT,
- _("COLORFUL PLANT"),
- DECORPERM_BEHIND_FLOOR,
- DECORSHAPE_2x2,
- DECORCAT_PLANT,
- 5000,
- DecorDesc_COLORFUL_PLANT,
- DecorGfx_COLORFUL_PLANT
- }, {
- DECOR_BIG_PLANT,
- _("BIG PLANT"),
- DECORPERM_BEHIND_FLOOR,
- DECORSHAPE_2x2,
- DECORCAT_PLANT,
- 5000,
- DecorDesc_BIG_PLANT,
- DecorGfx_BIG_PLANT
- }, {
- DECOR_GORGEOUS_PLANT,
- _("GORGEOUS PLANT"),
- DECORPERM_BEHIND_FLOOR,
- DECORSHAPE_2x2,
- DECORCAT_PLANT,
- 5000,
- DecorDesc_GORGEOUS_PLANT,
- DecorGfx_GORGEOUS_PLANT
- }, {
- DECOR_RED_BRICK,
- _("RED BRICK"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_1x2,
- DECORCAT_ORNAMENT,
- 500,
- DecorDesc_RED_BRICK,
- DecorGfx_RED_BRICK
- }, {
- DECOR_YELLOW_BRICK,
- _("YELLOW BRICK"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_1x2,
- DECORCAT_ORNAMENT,
- 500,
- DecorDesc_YELLOW_BRICK,
- DecorGfx_YELLOW_BRICK
- }, {
- DECOR_BLUE_BRICK,
- _("BLUE BRICK"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_1x2,
- DECORCAT_ORNAMENT,
- 500,
- DecorDesc_BLUE_BRICK,
- DecorGfx_BLUE_BRICK
- }, {
- DECOR_RED_BALLOON,
- _("RED BALLOON"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_ORNAMENT,
- 500,
- DecorDesc_RED_BALLOON,
- DecorGfx_RED_BALLOON
- }, {
- DECOR_BLUE_BALLOON,
- _("BLUE BALLOON"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_ORNAMENT,
- 500,
- DecorDesc_BLUE_BALLOON,
- DecorGfx_BLUE_BALLOON
- }, {
- DECOR_YELLOW_BALLOON,
- _("YELLOW BALLOON"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_ORNAMENT,
- 500,
- DecorDesc_YELLOW_BALLOON,
- DecorGfx_YELLOW_BALLOON
- }, {
- DECOR_RED_TENT,
- _("RED TENT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_3x3,
- DECORCAT_ORNAMENT,
- 10000,
- DecorDesc_RED_TENT,
- DecorGfx_RED_TENT
- }, {
- DECOR_BLUE_TENT,
- _("BLUE TENT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_3x3,
- DECORCAT_ORNAMENT,
- 10000,
- DecorDesc_BLUE_TENT,
- DecorGfx_BLUE_TENT
- }, {
- DECOR_SOLID_BOARD,
- _("SOLID BOARD"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x2,
- DECORCAT_ORNAMENT,
- 3000,
- DecorDesc_SOLID_BOARD,
- DecorGfx_SOLID_BOARD
- }, {
- DECOR_SLIDE,
- _("SLIDE"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_2x4,
- DECORCAT_ORNAMENT,
- 8000,
- DecorDesc_SLIDE,
- DecorGfx_SLIDE
- }, {
- DECOR_FENCE_LENGTH,
- _("FENCE LENGTH"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_ORNAMENT,
- 500,
- DecorDesc_FENCE_LENGTH,
- DecorGfx_FENCE_LENGTH
- }, {
- DECOR_FENCE_WIDTH,
- _("FENCE WIDTH"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_ORNAMENT,
- 500,
- DecorDesc_FENCE_WIDTH,
- DecorGfx_FENCE_WIDTH
- }, {
- DECOR_TIRE,
- _("TIRE"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_2x2,
- DECORCAT_ORNAMENT,
- 800,
- DecorDesc_TIRE,
- DecorGfx_TIRE
- }, {
- DECOR_STAND,
- _("STAND"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_4x2,
- DECORCAT_ORNAMENT,
- 7000,
- DecorDesc_STAND,
- DecorGfx_STAND
- }, {
- DECOR_MUD_BALL,
- _("MUD BALL"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_ORNAMENT,
- 200,
- DecorDesc_MUD_BALL,
- DecorGfx_MUD_BALL
- }, {
- DECOR_BREAKABLE_DOOR,
- _("BREAKABLE DOOR"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x2,
- DECORCAT_ORNAMENT,
- 3000,
- DecorDesc_BREAKABLE_DOOR,
- DecorGfx_BREAKABLE_DOOR
- }, {
- DECOR_SAND_ORNAMENT,
- _("SAND ORNAMENT"),
- DECORPERM_BEHIND_FLOOR,
- DECORSHAPE_1x2,
- DECORCAT_ORNAMENT,
- 3000,
- DecorDesc_SAND_ORNAMENT,
- DecorGfx_SAND_ORNAMENT
- }, {
- DECOR_SILVER_SHIELD,
- _("SILVER SHIELD"),
- DECORPERM_BEHIND_FLOOR,
- DECORSHAPE_1x2,
- DECORCAT_ORNAMENT,
- 0,
- DecorDesc_SILVER_SHIELD,
- DecorGfx_SILVER_SHIELD
- }, {
- DECOR_GOLD_SHIELD,
- _("GOLD SHIELD"),
- DECORPERM_BEHIND_FLOOR,
- DECORSHAPE_1x2,
- DECORCAT_ORNAMENT,
- 0,
- DecorDesc_GOLD_SHIELD,
- DecorGfx_GOLD_SHIELD
- }, {
- DECOR_GLASS_ORNAMENT,
- _("GLASS ORNAMENT"),
- DECORPERM_BEHIND_FLOOR,
- DECORSHAPE_1x2,
- DECORCAT_ORNAMENT,
- 0,
- DecorDesc_GLASS_ORNAMENT,
- DecorGfx_GLASS_ORNAMENT
- }, {
- DECOR_TV,
- _("TV"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_ORNAMENT,
- 3000,
- DecorDesc_TV,
- DecorGfx_TV
- }, {
- DECOR_ROUND_TV,
- _("ROUND TV"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_ORNAMENT,
- 4000,
- DecorDesc_ROUND_TV,
- DecorGfx_ROUND_TV
- }, {
- DECOR_CUTE_TV,
- _("CUTE TV"),
- DECORPERM_SOLID_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_ORNAMENT,
- 4000,
- DecorDesc_CUTE_TV,
- DecorGfx_CUTE_TV
- }, {
- DECOR_GLITTER_MAT,
- _("GLITTER MAT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_MAT,
- 2000,
- DecorDesc_GLITTER_MAT,
- DecorGfx_GLITTER_MAT
- }, {
- DECOR_JUMP_MAT,
- _("JUMP MAT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_MAT,
- 2000,
- DecorDesc_JUMP_MAT,
- DecorGfx_JUMP_MAT
- }, {
- DECOR_SPIN_MAT,
- _("SPIN MAT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_MAT,
- 2000,
- DecorDesc_SPIN_MAT,
- DecorGfx_SPIN_MAT
- }, {
- DECOR_C_LOW_NOTE_MAT,
- _("C Low NOTE MAT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_MAT,
- 500,
- DecorDesc_C_LOW_NOTE_MAT,
- DecorGfx_C_LOW_NOTE_MAT
- }, {
- DECOR_D_NOTE_MAT,
- _("D NOTE MAT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_MAT,
- 500,
- DecorDesc_D_NOTE_MAT,
- DecorGfx_D_NOTE_MAT
- }, {
- DECOR_E_NOTE_MAT,
- _("E NOTE MAT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_MAT,
- 500,
- DecorDesc_E_NOTE_MAT,
- DecorGfx_E_NOTE_MAT
- }, {
- DECOR_F_NOTE_MAT,
- _("F NOTE MAT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_MAT,
- 500,
- DecorDesc_F_NOTE_MAT,
- DecorGfx_F_NOTE_MAT
- }, {
- DECOR_G_NOTE_MAT,
- _("G NOTE MAT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_MAT,
- 500,
- DecorDesc_G_NOTE_MAT,
- DecorGfx_G_NOTE_MAT
- }, {
- DECOR_A_NOTE_MAT,
- _("A NOTE MAT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_MAT,
- 500,
- DecorDesc_A_NOTE_MAT,
- DecorGfx_A_NOTE_MAT
- }, {
- DECOR_B_NOTE_MAT,
- _("B NOTE MAT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_MAT,
- 500,
- DecorDesc_B_NOTE_MAT,
- DecorGfx_B_NOTE_MAT
- }, {
- DECOR_C_HIGH_NOTE_MAT,
- _("C High NOTE MAT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_1x1,
- DECORCAT_MAT,
- 500,
- DecorDesc_C_HIGH_NOTE_MAT,
- DecorGfx_C_HIGH_NOTE_MAT
- }, {
- DECOR_SURF_MAT,
- _("SURF MAT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_3x3,
- DECORCAT_MAT,
- 4000,
- DecorDesc_SURF_MAT,
- DecorGfx_SURF_MAT
- }, {
- DECOR_THUNDER_MAT,
- _("THUNDER MAT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_3x3,
- DECORCAT_MAT,
- 4000,
- DecorDesc_THUNDER_MAT,
- DecorGfx_THUNDER_MAT
- }, {
- DECOR_FIRE_BLAST_MAT,
- _("FIRE BLAST MAT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_3x3,
- DECORCAT_MAT,
- 4000,
- DecorDesc_FIRE_BLAST_MAT,
- DecorGfx_FIRE_BLAST_MAT
- }, {
- DECOR_POWDER_SNOW_MAT,
- _("POWDER SNOW MAT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_3x3,
- DECORCAT_MAT,
- 4000,
- DecorDesc_POWDER_SNOW_MAT,
- DecorGfx_POWDER_SNOW_MAT
- }, {
- DECOR_ATTRACT_MAT,
- _("ATTRACT MAT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_3x3,
- DECORCAT_MAT,
- 4000,
- DecorDesc_ATTRACT_MAT,
- DecorGfx_ATTRACT_MAT
- }, {
- DECOR_FISSURE_MAT,
- _("FISSURE MAT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_3x3,
- DECORCAT_MAT,
- 4000,
- DecorDesc_FISSURE_MAT,
- DecorGfx_FISSURE_MAT
- }, {
- DECOR_SPIKES_MAT,
- _("SPIKES MAT"),
- DECORPERM_PASS_FLOOR,
- DECORSHAPE_3x3,
- DECORCAT_MAT,
- 4000,
- DecorDesc_SPIKES_MAT,
- DecorGfx_SPIKES_MAT
- }, {
- DECOR_BALL_POSTER,
- _("BALL POSTER"),
- DECORPERM_NA_WALL,
- DECORSHAPE_1x1,
- DECORCAT_POSTER,
- 1000,
- DecorDesc_BALL_POSTER,
- DecorGfx_BALL_POSTER
- }, {
- DECOR_GREEN_POSTER,
- _("GREEN POSTER"),
- DECORPERM_NA_WALL,
- DECORSHAPE_1x1,
- DECORCAT_POSTER,
- 1000,
- DecorDesc_GREEN_POSTER,
- DecorGfx_GREEN_POSTER
- }, {
- DECOR_RED_POSTER,
- _("RED POSTER"),
- DECORPERM_NA_WALL,
- DECORSHAPE_1x1,
- DECORCAT_POSTER,
- 1000,
- DecorDesc_RED_POSTER,
- DecorGfx_RED_POSTER
- }, {
- DECOR_BLUE_POSTER,
- _("BLUE POSTER"),
- DECORPERM_NA_WALL,
- DECORSHAPE_1x1,
- DECORCAT_POSTER,
- 1000,
- DecorDesc_BLUE_POSTER,
- DecorGfx_BLUE_POSTER
- }, {
- DECOR_CUTE_POSTER,
- _("CUTE POSTER"),
- DECORPERM_NA_WALL,
- DECORSHAPE_1x1,
- DECORCAT_POSTER,
- 1000,
- DecorDesc_CUTE_POSTER,
- DecorGfx_CUTE_POSTER
- }, {
- DECOR_PIKA_POSTER,
- _("PIKA POSTER"),
- DECORPERM_NA_WALL,
- DECORSHAPE_2x1,
- DECORCAT_POSTER,
- 1500,
- DecorDesc_PIKA_POSTER,
- DecorGfx_PIKA_POSTER
- }, {
- DECOR_LONG_POSTER,
- _("LONG POSTER"),
- DECORPERM_NA_WALL,
- DECORSHAPE_2x1,
- DECORCAT_POSTER,
- 1500,
- DecorDesc_LONG_POSTER,
- DecorGfx_LONG_POSTER
- }, {
- DECOR_SEA_POSTER,
- _("SEA POSTER"),
- DECORPERM_NA_WALL,
- DECORSHAPE_2x1,
- DECORCAT_POSTER,
- 1500,
- DecorDesc_SEA_POSTER,
- DecorGfx_SEA_POSTER
- }, {
- DECOR_SKY_POSTER,
- _("SKY POSTER"),
- DECORPERM_NA_WALL,
- DECORSHAPE_2x1,
- DECORCAT_POSTER,
- 1500,
- DecorDesc_SKY_POSTER,
- DecorGfx_SKY_POSTER
- }, {
- DECOR_KISS_POSTER,
- _("KISS POSTER"),
- DECORPERM_NA_WALL,
- DECORSHAPE_2x1,
- DECORCAT_POSTER,
- 1500,
- DecorDesc_KISS_POSTER,
- DecorGfx_KISS_POSTER
- }, {
- DECOR_PICHU_DOLL,
- _("PICHU DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_PICHU_DOLL,
- DecorGfx_PICHU_DOLL
- }, {
- DECOR_PIKACHU_DOLL,
- _("PIKACHU DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_PIKACHU_DOLL,
- DecorGfx_PIKACHU_DOLL
- }, {
- DECOR_MARILL_DOLL,
- _("MARILL DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_MARILL_DOLL,
- DecorGfx_MARILL_DOLL
- }, {
- DECOR_TOGEPI_DOLL,
- _("TOGEPI DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_TOGEPI_DOLL,
- DecorGfx_TOGEPI_DOLL
- }, {
- DECOR_CYNDAQUIL_DOLL,
- _("CYNDAQUIL DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_CYNDAQUIL_DOLL,
- DecorGfx_CYNDAQUIL_DOLL
- }, {
- DECOR_CHIKORITA_DOLL,
- _("CHIKORITA DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_CHIKORITA_DOLL,
- DecorGfx_CHIKORITA_DOLL
- }, {
- DECOR_TOTODILE_DOLL,
- _("TOTODILE DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_TOTODILE_DOLL,
- DecorGfx_TOTODILE_DOLL
- }, {
- DECOR_JIGGLYPUFF_DOLL,
- _("JIGGLYPUFF DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_JIGGLYPUFF_DOLL,
- DecorGfx_JIGGLYPUFF_DOLL
- }, {
- DECOR_MEOWTH_DOLL,
- _("MEOWTH DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_MEOWTH_DOLL,
- DecorGfx_MEOWTH_DOLL
- }, {
- DECOR_CLEFAIRY_DOLL,
- _("CLEFAIRY DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_CLEFAIRY_DOLL,
- DecorGfx_CLEFAIRY_DOLL
- }, {
- DECOR_DITTO_DOLL,
- _("DITTO DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_DITTO_DOLL,
- DecorGfx_DITTO_DOLL
- }, {
- DECOR_SMOOCHUM_DOLL,
- _("SMOOCHUM DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_SMOOCHUM_DOLL,
- DecorGfx_SMOOCHUM_DOLL
- }, {
- DECOR_TREECKO_DOLL,
- _("TREECKO DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_TREECKO_DOLL,
- DecorGfx_TREECKO_DOLL
- }, {
- DECOR_TORCHIC_DOLL,
- _("TORCHIC DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_TORCHIC_DOLL,
- DecorGfx_TORCHIC_DOLL
- }, {
- DECOR_MUDKIP_DOLL,
- _("MUDKIP DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_MUDKIP_DOLL,
- DecorGfx_MUDKIP_DOLL
- }, {
- DECOR_DUSKULL_DOLL,
- _("DUSKULL DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_DUSKULL_DOLL,
- DecorGfx_DUSKULL_DOLL
- }, {
- DECOR_WYNAUT_DOLL,
- _("WYNAUT DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_WYNAUT_DOLL,
- DecorGfx_WYNAUT_DOLL
- }, {
- DECOR_BALTOY_DOLL,
- _("BALTOY DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_BALTOY_DOLL,
- DecorGfx_BALTOY_DOLL
- }, {
- DECOR_KECLEON_DOLL,
- _("KECLEON DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_KECLEON_DOLL,
- DecorGfx_KECLEON_DOLL
- }, {
- DECOR_AZURILL_DOLL,
- _("AZURILL DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_AZURILL_DOLL,
- DecorGfx_AZURILL_DOLL
- }, {
- DECOR_SKITTY_DOLL,
- _("SKITTY DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_SKITTY_DOLL,
- DecorGfx_SKITTY_DOLL
- }, {
- DECOR_SWABLU_DOLL,
- _("SWABLU DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_SWABLU_DOLL,
- DecorGfx_SWABLU_DOLL
- }, {
- DECOR_GULPIN_DOLL,
- _("GULPIN DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_GULPIN_DOLL,
- DecorGfx_GULPIN_DOLL
- }, {
- DECOR_LOTAD_DOLL,
- _("LOTAD DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_LOTAD_DOLL,
- DecorGfx_LOTAD_DOLL
- }, {
- DECOR_SEEDOT_DOLL,
- _("SEEDOT DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_DOLL,
- 3000,
- DecorDesc_SEEDOT_DOLL,
- DecorGfx_SEEDOT_DOLL
- }, {
- DECOR_PIKA_CUSHION,
- _("PIKA CUSHION"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_CUSHION,
- 2000,
- DecorDesc_PIKA_CUSHION,
- DecorGfx_PIKA_CUSHION
- }, {
- DECOR_ROUND_CUSHION,
- _("ROUND CUSHION"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_CUSHION,
- 2000,
- DecorDesc_ROUND_CUSHION,
- DecorGfx_ROUND_CUSHION
- }, {
- DECOR_KISS_CUSHION,
- _("KISS CUSHION"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_CUSHION,
- 2000,
- DecorDesc_KISS_CUSHION,
- DecorGfx_KISS_CUSHION
- }, {
- DECOR_ZIGZAG_CUSHION,
- _("ZIGZAG CUSHION"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_CUSHION,
- 2000,
- DecorDesc_ZIGZAG_CUSHION,
- DecorGfx_ZIGZAG_CUSHION
- }, {
- DECOR_SPIN_CUSHION,
- _("SPIN CUSHION"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_CUSHION,
- 2000,
- DecorDesc_SPIN_CUSHION,
- DecorGfx_SPIN_CUSHION
- }, {
- DECOR_DIAMOND_CUSHION,
- _("DIAMOND CUSHION"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_CUSHION,
- 2000,
- DecorDesc_DIAMOND_CUSHION,
- DecorGfx_DIAMOND_CUSHION
- }, {
- DECOR_BALL_CUSHION,
- _("BALL CUSHION"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_CUSHION,
- 2000,
- DecorDesc_BALL_CUSHION,
- DecorGfx_BALL_CUSHION
- }, {
- DECOR_GRASS_CUSHION,
- _("GRASS CUSHION"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_CUSHION,
- 2000,
- DecorDesc_GRASS_CUSHION,
- DecorGfx_GRASS_CUSHION
- }, {
- DECOR_FIRE_CUSHION,
- _("FIRE CUSHION"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_CUSHION,
- 2000,
- DecorDesc_FIRE_CUSHION,
- DecorGfx_FIRE_CUSHION
- }, {
- DECOR_WATER_CUSHION,
- _("WATER CUSHION"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x1,
- DECORCAT_CUSHION,
- 2000,
- DecorDesc_WATER_CUSHION,
- DecorGfx_WATER_CUSHION
- }, {
- DECOR_SNORLAX_DOLL,
- _("SNORLAX DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x2,
- DECORCAT_DOLL,
- 10000,
- DecorDesc_SNORLAX_DOLL,
- DecorGfx_SNORLAX_DOLL
- }, {
- DECOR_RHYDON_DOLL,
- _("RHYDON DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x2,
- DECORCAT_DOLL,
- 10000,
- DecorDesc_RHYDON_DOLL,
- DecorGfx_RHYDON_DOLL
- }, {
- DECOR_LAPRAS_DOLL,
- _("LAPRAS DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x2,
- DECORCAT_DOLL,
- 10000,
- DecorDesc_LAPRAS_DOLL,
- DecorGfx_LAPRAS_DOLL
- }, {
- DECOR_VENUSAUR_DOLL,
- _("VENUSAUR DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x2,
- DECORCAT_DOLL,
- 10000,
- DecorDesc_VENUSAUR_DOLL,
- DecorGfx_VENUSAUR_DOLL
- }, {
- DECOR_CHARIZARD_DOLL,
- _("CHARIZARD DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x2,
- DECORCAT_DOLL,
- 10000,
- DecorDesc_CHARIZARD_DOLL,
- DecorGfx_CHARIZARD_DOLL
- }, {
- DECOR_BLASTOISE_DOLL,
- _("BLASTOISE DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x2,
- DECORCAT_DOLL,
- 10000,
- DecorDesc_BLASTOISE_DOLL,
- DecorGfx_BLASTOISE_DOLL
- }, {
- DECOR_WAILMER_DOLL,
- _("WAILMER DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x2,
- DECORCAT_DOLL,
- 10000,
- DecorDesc_WAILMER_DOLL,
- DecorGfx_WAILMER_DOLL
- }, {
- DECOR_REGIROCK_DOLL,
- _("REGIROCK DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x2,
- DECORCAT_DOLL,
- 10000,
- DecorDesc_REGIROCK_DOLL,
- DecorGfx_REGIROCK_DOLL
- }, {
- DECOR_REGICE_DOLL,
- _("REGICE DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x2,
- DECORCAT_DOLL,
- 10000,
- DecorDesc_REGICE_DOLL,
- DecorGfx_REGICE_DOLL
- }, {
- DECOR_REGISTEEL_DOLL,
- _("REGISTEEL DOLL"),
- DECORPERM_SPRITE,
- DECORSHAPE_1x2,
- DECORCAT_DOLL,
- 10000,
- DecorDesc_REGISTEEL_DOLL,
- DecorGfx_REGISTEEL_DOLL}
+const struct Decoration gDecorations[] =
+{
+ [DECOR_NONE] =
+ {
+ .id = DECOR_NONE,
+ .name = _("SMALL DESK"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DESK,
+ .price = 0,
+ .description = DecorDesc_SMALL_DESK,
+ .tiles = DecorGfx_SMALL_DESK,
+ },
+
+ [DECOR_SMALL_DESK] =
+ {
+ .id = DECOR_SMALL_DESK,
+ .name = _("SMALL DESK"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DESK,
+ .price = 3000,
+ .description = DecorDesc_SMALL_DESK,
+ .tiles = DecorGfx_SMALL_DESK,
+ },
+
+ [DECOR_POKEMON_DESK] =
+ {
+ .id = DECOR_POKEMON_DESK,
+ .name = _("POKéMON DESK"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DESK,
+ .price = 3000,
+ .description = DecorDesc_POKEMON_DESK,
+ .tiles = DecorGfx_POKEMON_DESK,
+ },
+
+ [DECOR_HEAVY_DESK] =
+ {
+ .id = DECOR_HEAVY_DESK,
+ .name = _("HEAVY DESK"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_3x2,
+ .category = DECORCAT_DESK,
+ .price = 6000,
+ .description = DecorDesc_HEAVY_DESK,
+ .tiles = DecorGfx_HEAVY_DESK,
+ },
+
+ [DECOR_RAGGED_DESK] =
+ {
+ .id = DECOR_RAGGED_DESK,
+ .name = _("RAGGED DESK"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_3x2,
+ .category = DECORCAT_DESK,
+ .price = 6000,
+ .description = DecorDesc_RAGGED_DESK,
+ .tiles = DecorGfx_RAGGED_DESK,
+ },
+
+ [DECOR_COMFORT_DESK] =
+ {
+ .id = DECOR_COMFORT_DESK,
+ .name = _("COMFORT DESK"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_3x2,
+ .category = DECORCAT_DESK,
+ .price = 6000,
+ .description = DecorDesc_COMFORT_DESK,
+ .tiles = DecorGfx_COMFORT_DESK,
+ },
+
+ [DECOR_PRETTY_DESK] =
+ {
+ .id = DECOR_PRETTY_DESK,
+ .name = _("PRETTY DESK"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_3x3,
+ .category = DECORCAT_DESK,
+ .price = 9000,
+ .description = DecorDesc_PRETTY_DESK,
+ .tiles = DecorGfx_PRETTY_DESK,
+ },
+
+ [DECOR_BRICK_DESK] =
+ {
+ .id = DECOR_BRICK_DESK,
+ .name = _("BRICK DESK"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_3x3,
+ .category = DECORCAT_DESK,
+ .price = 9000,
+ .description = DecorDesc_BRICK_DESK,
+ .tiles = DecorGfx_BRICK_DESK,
+ },
+
+ [DECOR_CAMP_DESK] =
+ {
+ .id = DECOR_CAMP_DESK,
+ .name = _("CAMP DESK"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_3x3,
+ .category = DECORCAT_DESK,
+ .price = 9000,
+ .description = DecorDesc_CAMP_DESK,
+ .tiles = DecorGfx_CAMP_DESK,
+ },
+
+ [DECOR_HARD_DESK] =
+ {
+ .id = DECOR_HARD_DESK,
+ .name = _("HARD DESK"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_3x3,
+ .category = DECORCAT_DESK,
+ .price = 9000,
+ .description = DecorDesc_HARD_DESK,
+ .tiles = DecorGfx_HARD_DESK,
+ },
+
+ [DECOR_SMALL_CHAIR] =
+ {
+ .id = DECOR_SMALL_CHAIR,
+ .name = _("SMALL CHAIR"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CHAIR,
+ .price = 2000,
+ .description = DecorDesc_SMALL_CHAIR,
+ .tiles = DecorGfx_SMALL_CHAIR,
+ },
+
+ [DECOR_POKEMON_CHAIR] =
+ {
+ .id = DECOR_POKEMON_CHAIR,
+ .name = _("POKéMON CHAIR"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CHAIR,
+ .price = 2000,
+ .description = DecorDesc_POKEMON_CHAIR,
+ .tiles = DecorGfx_POKEMON_CHAIR,
+ },
+
+ [DECOR_HEAVY_CHAIR] =
+ {
+ .id = DECOR_HEAVY_CHAIR,
+ .name = _("HEAVY CHAIR"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CHAIR,
+ .price = 2000,
+ .description = DecorDesc_HEAVY_CHAIR,
+ .tiles = DecorGfx_HEAVY_CHAIR,
+ },
+
+ [DECOR_PRETTY_CHAIR] =
+ {
+ .id = DECOR_PRETTY_CHAIR,
+ .name = _("PRETTY CHAIR"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CHAIR,
+ .price = 2000,
+ .description = DecorDesc_PRETTY_CHAIR,
+ .tiles = DecorGfx_PRETTY_CHAIR,
+ },
+
+ [DECOR_COMFORT_CHAIR] =
+ {
+ .id = DECOR_COMFORT_CHAIR,
+ .name = _("COMFORT CHAIR"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CHAIR,
+ .price = 2000,
+ .description = DecorDesc_COMFORT_CHAIR,
+ .tiles = DecorGfx_COMFORT_CHAIR,
+ },
+
+ [DECOR_RAGGED_CHAIR] =
+ {
+ .id = DECOR_RAGGED_CHAIR,
+ .name = _("RAGGED CHAIR"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CHAIR,
+ .price = 2000,
+ .description = DecorDesc_RAGGED_CHAIR,
+ .tiles = DecorGfx_RAGGED_CHAIR,
+ },
+
+ [DECOR_BRICK_CHAIR] =
+ {
+ .id = DECOR_BRICK_CHAIR,
+ .name = _("BRICK CHAIR"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CHAIR,
+ .price = 2000,
+ .description = DecorDesc_BRICK_CHAIR,
+ .tiles = DecorGfx_BRICK_CHAIR,
+ },
+
+ [DECOR_CAMP_CHAIR] =
+ {
+ .id = DECOR_CAMP_CHAIR,
+ .name = _("CAMP CHAIR"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CHAIR,
+ .price = 2000,
+ .description = DecorDesc_CAMP_CHAIR,
+ .tiles = DecorGfx_CAMP_CHAIR,
+ },
+
+ [DECOR_HARD_CHAIR] =
+ {
+ .id = DECOR_HARD_CHAIR,
+ .name = _("HARD CHAIR"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CHAIR,
+ .price = 2000,
+ .description = DecorDesc_HARD_CHAIR,
+ .tiles = DecorGfx_HARD_CHAIR,
+ },
+
+ [DECOR_RED_PLANT] =
+ {
+ .id = DECOR_RED_PLANT,
+ .name = _("RED PLANT"),
+ .permission = DECORPERM_BEHIND_FLOOR,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_PLANT,
+ .price = 3000,
+ .description = DecorDesc_RED_PLANT,
+ .tiles = DecorGfx_RED_PLANT,
+ },
+
+ [DECOR_TROPICAL_PLANT] =
+ {
+ .id = DECOR_TROPICAL_PLANT,
+ .name = _("TROPICAL PLANT"),
+ .permission = DECORPERM_BEHIND_FLOOR,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_PLANT,
+ .price = 3000,
+ .description = DecorDesc_TROPICAL_PLANT,
+ .tiles = DecorGfx_TROPICAL_PLANT,
+ },
+
+ [DECOR_PRETTY_FLOWERS] =
+ {
+ .id = DECOR_PRETTY_FLOWERS,
+ .name = _("PRETTY FLOWERS"),
+ .permission = DECORPERM_BEHIND_FLOOR,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_PLANT,
+ .price = 3000,
+ .description = DecorDesc_PRETTY_FLOWERS,
+ .tiles = DecorGfx_PRETTY_FLOWERS,
+ },
+
+ [DECOR_COLORFUL_PLANT] =
+ {
+ .id = DECOR_COLORFUL_PLANT,
+ .name = _("COLORFUL PLANT"),
+ .permission = DECORPERM_BEHIND_FLOOR,
+ .shape = DECORSHAPE_2x2,
+ .category = DECORCAT_PLANT,
+ .price = 5000,
+ .description = DecorDesc_COLORFUL_PLANT,
+ .tiles = DecorGfx_COLORFUL_PLANT,
+ },
+
+ [DECOR_BIG_PLANT] =
+ {
+ .id = DECOR_BIG_PLANT,
+ .name = _("BIG PLANT"),
+ .permission = DECORPERM_BEHIND_FLOOR,
+ .shape = DECORSHAPE_2x2,
+ .category = DECORCAT_PLANT,
+ .price = 5000,
+ .description = DecorDesc_BIG_PLANT,
+ .tiles = DecorGfx_BIG_PLANT,
+ },
+
+ [DECOR_GORGEOUS_PLANT] =
+ {
+ .id = DECOR_GORGEOUS_PLANT,
+ .name = _("GORGEOUS PLANT"),
+ .permission = DECORPERM_BEHIND_FLOOR,
+ .shape = DECORSHAPE_2x2,
+ .category = DECORCAT_PLANT,
+ .price = 5000,
+ .description = DecorDesc_GORGEOUS_PLANT,
+ .tiles = DecorGfx_GORGEOUS_PLANT,
+ },
+
+ [DECOR_RED_BRICK] =
+ {
+ .id = DECOR_RED_BRICK,
+ .name = _("RED BRICK"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_ORNAMENT,
+ .price = 500,
+ .description = DecorDesc_RED_BRICK,
+ .tiles = DecorGfx_RED_BRICK,
+ },
+
+ [DECOR_YELLOW_BRICK] =
+ {
+ .id = DECOR_YELLOW_BRICK,
+ .name = _("YELLOW BRICK"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_ORNAMENT,
+ .price = 500,
+ .description = DecorDesc_YELLOW_BRICK,
+ .tiles = DecorGfx_YELLOW_BRICK,
+ },
+
+ [DECOR_BLUE_BRICK] =
+ {
+ .id = DECOR_BLUE_BRICK,
+ .name = _("BLUE BRICK"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_ORNAMENT,
+ .price = 500,
+ .description = DecorDesc_BLUE_BRICK,
+ .tiles = DecorGfx_BLUE_BRICK,
+ },
+
+ [DECOR_RED_BALLOON] =
+ {
+ .id = DECOR_RED_BALLOON,
+ .name = _("RED BALLOON"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_ORNAMENT,
+ .price = 500,
+ .description = DecorDesc_RED_BALLOON,
+ .tiles = DecorGfx_RED_BALLOON,
+ },
+
+ [DECOR_BLUE_BALLOON] =
+ {
+ .id = DECOR_BLUE_BALLOON,
+ .name = _("BLUE BALLOON"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_ORNAMENT,
+ .price = 500,
+ .description = DecorDesc_BLUE_BALLOON,
+ .tiles = DecorGfx_BLUE_BALLOON,
+ },
+
+ [DECOR_YELLOW_BALLOON] =
+ {
+ .id = DECOR_YELLOW_BALLOON,
+ .name = _("YELLOW BALLOON"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_ORNAMENT,
+ .price = 500,
+ .description = DecorDesc_YELLOW_BALLOON,
+ .tiles = DecorGfx_YELLOW_BALLOON,
+ },
+
+ [DECOR_RED_TENT] =
+ {
+ .id = DECOR_RED_TENT,
+ .name = _("RED TENT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_3x3,
+ .category = DECORCAT_ORNAMENT,
+ .price = 10000,
+ .description = DecorDesc_RED_TENT,
+ .tiles = DecorGfx_RED_TENT,
+ },
+
+ [DECOR_BLUE_TENT] =
+ {
+ .id = DECOR_BLUE_TENT,
+ .name = _("BLUE TENT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_3x3,
+ .category = DECORCAT_ORNAMENT,
+ .price = 10000,
+ .description = DecorDesc_BLUE_TENT,
+ .tiles = DecorGfx_BLUE_TENT,
+ },
+
+ [DECOR_SOLID_BOARD] =
+ {
+ .id = DECOR_SOLID_BOARD,
+ .name = _("SOLID BOARD"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_ORNAMENT,
+ .price = 3000,
+ .description = DecorDesc_SOLID_BOARD,
+ .tiles = DecorGfx_SOLID_BOARD,
+ },
+
+ [DECOR_SLIDE] =
+ {
+ .id = DECOR_SLIDE,
+ .name = _("SLIDE"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_2x4,
+ .category = DECORCAT_ORNAMENT,
+ .price = 8000,
+ .description = DecorDesc_SLIDE,
+ .tiles = DecorGfx_SLIDE,
+ },
+
+ [DECOR_FENCE_LENGTH] =
+ {
+ .id = DECOR_FENCE_LENGTH,
+ .name = _("FENCE LENGTH"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_ORNAMENT,
+ .price = 500,
+ .description = DecorDesc_FENCE_LENGTH,
+ .tiles = DecorGfx_FENCE_LENGTH,
+ },
+
+ [DECOR_FENCE_WIDTH] =
+ {
+ .id = DECOR_FENCE_WIDTH,
+ .name = _("FENCE WIDTH"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_ORNAMENT,
+ .price = 500,
+ .description = DecorDesc_FENCE_WIDTH,
+ .tiles = DecorGfx_FENCE_WIDTH,
+ },
+
+ [DECOR_TIRE] =
+ {
+ .id = DECOR_TIRE,
+ .name = _("TIRE"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_2x2,
+ .category = DECORCAT_ORNAMENT,
+ .price = 800,
+ .description = DecorDesc_TIRE,
+ .tiles = DecorGfx_TIRE,
+ },
+
+ [DECOR_STAND] =
+ {
+ .id = DECOR_STAND,
+ .name = _("STAND"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_4x2,
+ .category = DECORCAT_ORNAMENT,
+ .price = 7000,
+ .description = DecorDesc_STAND,
+ .tiles = DecorGfx_STAND,
+ },
+
+ [DECOR_MUD_BALL] =
+ {
+ .id = DECOR_MUD_BALL,
+ .name = _("MUD BALL"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_ORNAMENT,
+ .price = 200,
+ .description = DecorDesc_MUD_BALL,
+ .tiles = DecorGfx_MUD_BALL,
+ },
+
+ [DECOR_BREAKABLE_DOOR] =
+ {
+ .id = DECOR_BREAKABLE_DOOR,
+ .name = _("BREAKABLE DOOR"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_ORNAMENT,
+ .price = 3000,
+ .description = DecorDesc_BREAKABLE_DOOR,
+ .tiles = DecorGfx_BREAKABLE_DOOR,
+ },
+
+ [DECOR_SAND_ORNAMENT] =
+ {
+ .id = DECOR_SAND_ORNAMENT,
+ .name = _("SAND ORNAMENT"),
+ .permission = DECORPERM_BEHIND_FLOOR,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_ORNAMENT,
+ .price = 3000,
+ .description = DecorDesc_SAND_ORNAMENT,
+ .tiles = DecorGfx_SAND_ORNAMENT,
+ },
+
+ [DECOR_SILVER_SHIELD] =
+ {
+ .id = DECOR_SILVER_SHIELD,
+ .name = _("SILVER SHIELD"),
+ .permission = DECORPERM_BEHIND_FLOOR,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_ORNAMENT,
+ .price = 0,
+ .description = DecorDesc_SILVER_SHIELD,
+ .tiles = DecorGfx_SILVER_SHIELD,
+ },
+
+ [DECOR_GOLD_SHIELD] =
+ {
+ .id = DECOR_GOLD_SHIELD,
+ .name = _("GOLD SHIELD"),
+ .permission = DECORPERM_BEHIND_FLOOR,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_ORNAMENT,
+ .price = 0,
+ .description = DecorDesc_GOLD_SHIELD,
+ .tiles = DecorGfx_GOLD_SHIELD,
+ },
+
+ [DECOR_GLASS_ORNAMENT] =
+ {
+ .id = DECOR_GLASS_ORNAMENT,
+ .name = _("GLASS ORNAMENT"),
+ .permission = DECORPERM_BEHIND_FLOOR,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_ORNAMENT,
+ .price = 0,
+ .description = DecorDesc_GLASS_ORNAMENT,
+ .tiles = DecorGfx_GLASS_ORNAMENT,
+ },
+
+ [DECOR_TV] =
+ {
+ .id = DECOR_TV,
+ .name = _("TV"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_ORNAMENT,
+ .price = 3000,
+ .description = DecorDesc_TV,
+ .tiles = DecorGfx_TV,
+ },
+
+ [DECOR_ROUND_TV] =
+ {
+ .id = DECOR_ROUND_TV,
+ .name = _("ROUND TV"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_ORNAMENT,
+ .price = 4000,
+ .description = DecorDesc_ROUND_TV,
+ .tiles = DecorGfx_ROUND_TV,
+ },
+
+ [DECOR_CUTE_TV] =
+ {
+ .id = DECOR_CUTE_TV,
+ .name = _("CUTE TV"),
+ .permission = DECORPERM_SOLID_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_ORNAMENT,
+ .price = 4000,
+ .description = DecorDesc_CUTE_TV,
+ .tiles = DecorGfx_CUTE_TV,
+ },
+
+ [DECOR_GLITTER_MAT] =
+ {
+ .id = DECOR_GLITTER_MAT,
+ .name = _("GLITTER MAT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_MAT,
+ .price = 2000,
+ .description = DecorDesc_GLITTER_MAT,
+ .tiles = DecorGfx_GLITTER_MAT,
+ },
+
+ [DECOR_JUMP_MAT] =
+ {
+ .id = DECOR_JUMP_MAT,
+ .name = _("JUMP MAT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_MAT,
+ .price = 2000,
+ .description = DecorDesc_JUMP_MAT,
+ .tiles = DecorGfx_JUMP_MAT,
+ },
+
+ [DECOR_SPIN_MAT] =
+ {
+ .id = DECOR_SPIN_MAT,
+ .name = _("SPIN MAT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_MAT,
+ .price = 2000,
+ .description = DecorDesc_SPIN_MAT,
+ .tiles = DecorGfx_SPIN_MAT,
+ },
+
+ [DECOR_C_LOW_NOTE_MAT] =
+ {
+ .id = DECOR_C_LOW_NOTE_MAT,
+ .name = _("C Low NOTE MAT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_MAT,
+ .price = 500,
+ .description = DecorDesc_C_LOW_NOTE_MAT,
+ .tiles = DecorGfx_C_LOW_NOTE_MAT,
+ },
+
+ [DECOR_D_NOTE_MAT] =
+ {
+ .id = DECOR_D_NOTE_MAT,
+ .name = _("D NOTE MAT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_MAT,
+ .price = 500,
+ .description = DecorDesc_D_NOTE_MAT,
+ .tiles = DecorGfx_D_NOTE_MAT,
+ },
+
+ [DECOR_E_NOTE_MAT] =
+ {
+ .id = DECOR_E_NOTE_MAT,
+ .name = _("E NOTE MAT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_MAT,
+ .price = 500,
+ .description = DecorDesc_E_NOTE_MAT,
+ .tiles = DecorGfx_E_NOTE_MAT,
+ },
+
+ [DECOR_F_NOTE_MAT] =
+ {
+ .id = DECOR_F_NOTE_MAT,
+ .name = _("F NOTE MAT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_MAT,
+ .price = 500,
+ .description = DecorDesc_F_NOTE_MAT,
+ .tiles = DecorGfx_F_NOTE_MAT,
+ },
+
+ [DECOR_G_NOTE_MAT] =
+ {
+ .id = DECOR_G_NOTE_MAT,
+ .name = _("G NOTE MAT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_MAT,
+ .price = 500,
+ .description = DecorDesc_G_NOTE_MAT,
+ .tiles = DecorGfx_G_NOTE_MAT,
+ },
+
+ [DECOR_A_NOTE_MAT] =
+ {
+ .id = DECOR_A_NOTE_MAT,
+ .name = _("A NOTE MAT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_MAT,
+ .price = 500,
+ .description = DecorDesc_A_NOTE_MAT,
+ .tiles = DecorGfx_A_NOTE_MAT,
+ },
+
+ [DECOR_B_NOTE_MAT] =
+ {
+ .id = DECOR_B_NOTE_MAT,
+ .name = _("B NOTE MAT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_MAT,
+ .price = 500,
+ .description = DecorDesc_B_NOTE_MAT,
+ .tiles = DecorGfx_B_NOTE_MAT,
+ },
+
+ [DECOR_C_HIGH_NOTE_MAT] =
+ {
+ .id = DECOR_C_HIGH_NOTE_MAT,
+ .name = _("C High NOTE MAT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_MAT,
+ .price = 500,
+ .description = DecorDesc_C_HIGH_NOTE_MAT,
+ .tiles = DecorGfx_C_HIGH_NOTE_MAT,
+ },
+
+ [DECOR_SURF_MAT] =
+ {
+ .id = DECOR_SURF_MAT,
+ .name = _("SURF MAT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_3x3,
+ .category = DECORCAT_MAT,
+ .price = 4000,
+ .description = DecorDesc_SURF_MAT,
+ .tiles = DecorGfx_SURF_MAT,
+ },
+
+ [DECOR_THUNDER_MAT] =
+ {
+ .id = DECOR_THUNDER_MAT,
+ .name = _("THUNDER MAT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_3x3,
+ .category = DECORCAT_MAT,
+ .price = 4000,
+ .description = DecorDesc_THUNDER_MAT,
+ .tiles = DecorGfx_THUNDER_MAT,
+ },
+
+ [DECOR_FIRE_BLAST_MAT] =
+ {
+ .id = DECOR_FIRE_BLAST_MAT,
+ .name = _("FIRE BLAST MAT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_3x3,
+ .category = DECORCAT_MAT,
+ .price = 4000,
+ .description = DecorDesc_FIRE_BLAST_MAT,
+ .tiles = DecorGfx_FIRE_BLAST_MAT,
+ },
+
+ [DECOR_POWDER_SNOW_MAT] =
+ {
+ .id = DECOR_POWDER_SNOW_MAT,
+ .name = _("POWDER SNOW MAT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_3x3,
+ .category = DECORCAT_MAT,
+ .price = 4000,
+ .description = DecorDesc_POWDER_SNOW_MAT,
+ .tiles = DecorGfx_POWDER_SNOW_MAT,
+ },
+
+ [DECOR_ATTRACT_MAT] =
+ {
+ .id = DECOR_ATTRACT_MAT,
+ .name = _("ATTRACT MAT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_3x3,
+ .category = DECORCAT_MAT,
+ .price = 4000,
+ .description = DecorDesc_ATTRACT_MAT,
+ .tiles = DecorGfx_ATTRACT_MAT,
+ },
+
+ [DECOR_FISSURE_MAT] =
+ {
+ .id = DECOR_FISSURE_MAT,
+ .name = _("FISSURE MAT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_3x3,
+ .category = DECORCAT_MAT,
+ .price = 4000,
+ .description = DecorDesc_FISSURE_MAT,
+ .tiles = DecorGfx_FISSURE_MAT,
+ },
+
+ [DECOR_SPIKES_MAT] =
+ {
+ .id = DECOR_SPIKES_MAT,
+ .name = _("SPIKES MAT"),
+ .permission = DECORPERM_PASS_FLOOR,
+ .shape = DECORSHAPE_3x3,
+ .category = DECORCAT_MAT,
+ .price = 4000,
+ .description = DecorDesc_SPIKES_MAT,
+ .tiles = DecorGfx_SPIKES_MAT,
+ },
+
+ [DECOR_BALL_POSTER] =
+ {
+ .id = DECOR_BALL_POSTER,
+ .name = _("BALL POSTER"),
+ .permission = DECORPERM_NA_WALL,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_POSTER,
+ .price = 1000,
+ .description = DecorDesc_BALL_POSTER,
+ .tiles = DecorGfx_BALL_POSTER,
+ },
+
+ [DECOR_GREEN_POSTER] =
+ {
+ .id = DECOR_GREEN_POSTER,
+ .name = _("GREEN POSTER"),
+ .permission = DECORPERM_NA_WALL,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_POSTER,
+ .price = 1000,
+ .description = DecorDesc_GREEN_POSTER,
+ .tiles = DecorGfx_GREEN_POSTER,
+ },
+
+ [DECOR_RED_POSTER] =
+ {
+ .id = DECOR_RED_POSTER,
+ .name = _("RED POSTER"),
+ .permission = DECORPERM_NA_WALL,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_POSTER,
+ .price = 1000,
+ .description = DecorDesc_RED_POSTER,
+ .tiles = DecorGfx_RED_POSTER,
+ },
+
+ [DECOR_BLUE_POSTER] =
+ {
+ .id = DECOR_BLUE_POSTER,
+ .name = _("BLUE POSTER"),
+ .permission = DECORPERM_NA_WALL,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_POSTER,
+ .price = 1000,
+ .description = DecorDesc_BLUE_POSTER,
+ .tiles = DecorGfx_BLUE_POSTER,
+ },
+
+ [DECOR_CUTE_POSTER] =
+ {
+ .id = DECOR_CUTE_POSTER,
+ .name = _("CUTE POSTER"),
+ .permission = DECORPERM_NA_WALL,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_POSTER,
+ .price = 1000,
+ .description = DecorDesc_CUTE_POSTER,
+ .tiles = DecorGfx_CUTE_POSTER,
+ },
+
+ [DECOR_PIKA_POSTER] =
+ {
+ .id = DECOR_PIKA_POSTER,
+ .name = _("PIKA POSTER"),
+ .permission = DECORPERM_NA_WALL,
+ .shape = DECORSHAPE_2x1,
+ .category = DECORCAT_POSTER,
+ .price = 1500,
+ .description = DecorDesc_PIKA_POSTER,
+ .tiles = DecorGfx_PIKA_POSTER,
+ },
+
+ [DECOR_LONG_POSTER] =
+ {
+ .id = DECOR_LONG_POSTER,
+ .name = _("LONG POSTER"),
+ .permission = DECORPERM_NA_WALL,
+ .shape = DECORSHAPE_2x1,
+ .category = DECORCAT_POSTER,
+ .price = 1500,
+ .description = DecorDesc_LONG_POSTER,
+ .tiles = DecorGfx_LONG_POSTER,
+ },
+
+ [DECOR_SEA_POSTER] =
+ {
+ .id = DECOR_SEA_POSTER,
+ .name = _("SEA POSTER"),
+ .permission = DECORPERM_NA_WALL,
+ .shape = DECORSHAPE_2x1,
+ .category = DECORCAT_POSTER,
+ .price = 1500,
+ .description = DecorDesc_SEA_POSTER,
+ .tiles = DecorGfx_SEA_POSTER,
+ },
+
+ [DECOR_SKY_POSTER] =
+ {
+ .id = DECOR_SKY_POSTER,
+ .name = _("SKY POSTER"),
+ .permission = DECORPERM_NA_WALL,
+ .shape = DECORSHAPE_2x1,
+ .category = DECORCAT_POSTER,
+ .price = 1500,
+ .description = DecorDesc_SKY_POSTER,
+ .tiles = DecorGfx_SKY_POSTER,
+ },
+
+ [DECOR_KISS_POSTER] =
+ {
+ .id = DECOR_KISS_POSTER,
+ .name = _("KISS POSTER"),
+ .permission = DECORPERM_NA_WALL,
+ .shape = DECORSHAPE_2x1,
+ .category = DECORCAT_POSTER,
+ .price = 1500,
+ .description = DecorDesc_KISS_POSTER,
+ .tiles = DecorGfx_KISS_POSTER,
+ },
+
+ [DECOR_PICHU_DOLL] =
+ {
+ .id = DECOR_PICHU_DOLL,
+ .name = _("PICHU DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_PICHU_DOLL,
+ .tiles = DecorGfx_PICHU_DOLL,
+ },
+
+ [DECOR_PIKACHU_DOLL] =
+ {
+ .id = DECOR_PIKACHU_DOLL,
+ .name = _("PIKACHU DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_PIKACHU_DOLL,
+ .tiles = DecorGfx_PIKACHU_DOLL,
+ },
+
+ [DECOR_MARILL_DOLL] =
+ {
+ .id = DECOR_MARILL_DOLL,
+ .name = _("MARILL DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_MARILL_DOLL,
+ .tiles = DecorGfx_MARILL_DOLL,
+ },
+
+ [DECOR_TOGEPI_DOLL] =
+ {
+ .id = DECOR_TOGEPI_DOLL,
+ .name = _("TOGEPI DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_TOGEPI_DOLL,
+ .tiles = DecorGfx_TOGEPI_DOLL,
+ },
+
+ [DECOR_CYNDAQUIL_DOLL] =
+ {
+ .id = DECOR_CYNDAQUIL_DOLL,
+ .name = _("CYNDAQUIL DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_CYNDAQUIL_DOLL,
+ .tiles = DecorGfx_CYNDAQUIL_DOLL,
+ },
+
+ [DECOR_CHIKORITA_DOLL] =
+ {
+ .id = DECOR_CHIKORITA_DOLL,
+ .name = _("CHIKORITA DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_CHIKORITA_DOLL,
+ .tiles = DecorGfx_CHIKORITA_DOLL,
+ },
+
+ [DECOR_TOTODILE_DOLL] =
+ {
+ .id = DECOR_TOTODILE_DOLL,
+ .name = _("TOTODILE DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_TOTODILE_DOLL,
+ .tiles = DecorGfx_TOTODILE_DOLL,
+ },
+
+ [DECOR_JIGGLYPUFF_DOLL] =
+ {
+ .id = DECOR_JIGGLYPUFF_DOLL,
+ .name = _("JIGGLYPUFF DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_JIGGLYPUFF_DOLL,
+ .tiles = DecorGfx_JIGGLYPUFF_DOLL,
+ },
+
+ [DECOR_MEOWTH_DOLL] =
+ {
+ .id = DECOR_MEOWTH_DOLL,
+ .name = _("MEOWTH DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_MEOWTH_DOLL,
+ .tiles = DecorGfx_MEOWTH_DOLL,
+ },
+
+ [DECOR_CLEFAIRY_DOLL] =
+ {
+ .id = DECOR_CLEFAIRY_DOLL,
+ .name = _("CLEFAIRY DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_CLEFAIRY_DOLL,
+ .tiles = DecorGfx_CLEFAIRY_DOLL,
+ },
+
+ [DECOR_DITTO_DOLL] =
+ {
+ .id = DECOR_DITTO_DOLL,
+ .name = _("DITTO DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_DITTO_DOLL,
+ .tiles = DecorGfx_DITTO_DOLL,
+ },
+
+ [DECOR_SMOOCHUM_DOLL] =
+ {
+ .id = DECOR_SMOOCHUM_DOLL,
+ .name = _("SMOOCHUM DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_SMOOCHUM_DOLL,
+ .tiles = DecorGfx_SMOOCHUM_DOLL,
+ },
+
+ [DECOR_TREECKO_DOLL] =
+ {
+ .id = DECOR_TREECKO_DOLL,
+ .name = _("TREECKO DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_TREECKO_DOLL,
+ .tiles = DecorGfx_TREECKO_DOLL,
+ },
+
+ [DECOR_TORCHIC_DOLL] =
+ {
+ .id = DECOR_TORCHIC_DOLL,
+ .name = _("TORCHIC DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_TORCHIC_DOLL,
+ .tiles = DecorGfx_TORCHIC_DOLL,
+ },
+
+ [DECOR_MUDKIP_DOLL] =
+ {
+ .id = DECOR_MUDKIP_DOLL,
+ .name = _("MUDKIP DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_MUDKIP_DOLL,
+ .tiles = DecorGfx_MUDKIP_DOLL,
+ },
+
+ [DECOR_DUSKULL_DOLL] =
+ {
+ .id = DECOR_DUSKULL_DOLL,
+ .name = _("DUSKULL DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_DUSKULL_DOLL,
+ .tiles = DecorGfx_DUSKULL_DOLL,
+ },
+
+ [DECOR_WYNAUT_DOLL] =
+ {
+ .id = DECOR_WYNAUT_DOLL,
+ .name = _("WYNAUT DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_WYNAUT_DOLL,
+ .tiles = DecorGfx_WYNAUT_DOLL,
+ },
+
+ [DECOR_BALTOY_DOLL] =
+ {
+ .id = DECOR_BALTOY_DOLL,
+ .name = _("BALTOY DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_BALTOY_DOLL,
+ .tiles = DecorGfx_BALTOY_DOLL,
+ },
+
+ [DECOR_KECLEON_DOLL] =
+ {
+ .id = DECOR_KECLEON_DOLL,
+ .name = _("KECLEON DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_KECLEON_DOLL,
+ .tiles = DecorGfx_KECLEON_DOLL,
+ },
+
+ [DECOR_AZURILL_DOLL] =
+ {
+ .id = DECOR_AZURILL_DOLL,
+ .name = _("AZURILL DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_AZURILL_DOLL,
+ .tiles = DecorGfx_AZURILL_DOLL,
+ },
+
+ [DECOR_SKITTY_DOLL] =
+ {
+ .id = DECOR_SKITTY_DOLL,
+ .name = _("SKITTY DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_SKITTY_DOLL,
+ .tiles = DecorGfx_SKITTY_DOLL,
+ },
+
+ [DECOR_SWABLU_DOLL] =
+ {
+ .id = DECOR_SWABLU_DOLL,
+ .name = _("SWABLU DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_SWABLU_DOLL,
+ .tiles = DecorGfx_SWABLU_DOLL,
+ },
+
+ [DECOR_GULPIN_DOLL] =
+ {
+ .id = DECOR_GULPIN_DOLL,
+ .name = _("GULPIN DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_GULPIN_DOLL,
+ .tiles = DecorGfx_GULPIN_DOLL,
+ },
+
+ [DECOR_LOTAD_DOLL] =
+ {
+ .id = DECOR_LOTAD_DOLL,
+ .name = _("LOTAD DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_LOTAD_DOLL,
+ .tiles = DecorGfx_LOTAD_DOLL,
+ },
+
+ [DECOR_SEEDOT_DOLL] =
+ {
+ .id = DECOR_SEEDOT_DOLL,
+ .name = _("SEEDOT DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_DOLL,
+ .price = 3000,
+ .description = DecorDesc_SEEDOT_DOLL,
+ .tiles = DecorGfx_SEEDOT_DOLL,
+ },
+
+ [DECOR_PIKA_CUSHION] =
+ {
+ .id = DECOR_PIKA_CUSHION,
+ .name = _("PIKA CUSHION"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CUSHION,
+ .price = 2000,
+ .description = DecorDesc_PIKA_CUSHION,
+ .tiles = DecorGfx_PIKA_CUSHION,
+ },
+
+ [DECOR_ROUND_CUSHION] =
+ {
+ .id = DECOR_ROUND_CUSHION,
+ .name = _("ROUND CUSHION"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CUSHION,
+ .price = 2000,
+ .description = DecorDesc_ROUND_CUSHION,
+ .tiles = DecorGfx_ROUND_CUSHION,
+ },
+
+ [DECOR_KISS_CUSHION] =
+ {
+ .id = DECOR_KISS_CUSHION,
+ .name = _("KISS CUSHION"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CUSHION,
+ .price = 2000,
+ .description = DecorDesc_KISS_CUSHION,
+ .tiles = DecorGfx_KISS_CUSHION,
+ },
+
+ [DECOR_ZIGZAG_CUSHION] =
+ {
+ .id = DECOR_ZIGZAG_CUSHION,
+ .name = _("ZIGZAG CUSHION"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CUSHION,
+ .price = 2000,
+ .description = DecorDesc_ZIGZAG_CUSHION,
+ .tiles = DecorGfx_ZIGZAG_CUSHION,
+ },
+
+ [DECOR_SPIN_CUSHION] =
+ {
+ .id = DECOR_SPIN_CUSHION,
+ .name = _("SPIN CUSHION"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CUSHION,
+ .price = 2000,
+ .description = DecorDesc_SPIN_CUSHION,
+ .tiles = DecorGfx_SPIN_CUSHION,
+ },
+
+ [DECOR_DIAMOND_CUSHION] =
+ {
+ .id = DECOR_DIAMOND_CUSHION,
+ .name = _("DIAMOND CUSHION"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CUSHION,
+ .price = 2000,
+ .description = DecorDesc_DIAMOND_CUSHION,
+ .tiles = DecorGfx_DIAMOND_CUSHION,
+ },
+
+ [DECOR_BALL_CUSHION] =
+ {
+ .id = DECOR_BALL_CUSHION,
+ .name = _("BALL CUSHION"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CUSHION,
+ .price = 2000,
+ .description = DecorDesc_BALL_CUSHION,
+ .tiles = DecorGfx_BALL_CUSHION,
+ },
+
+ [DECOR_GRASS_CUSHION] =
+ {
+ .id = DECOR_GRASS_CUSHION,
+ .name = _("GRASS CUSHION"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CUSHION,
+ .price = 2000,
+ .description = DecorDesc_GRASS_CUSHION,
+ .tiles = DecorGfx_GRASS_CUSHION,
+ },
+
+ [DECOR_FIRE_CUSHION] =
+ {
+ .id = DECOR_FIRE_CUSHION,
+ .name = _("FIRE CUSHION"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CUSHION,
+ .price = 2000,
+ .description = DecorDesc_FIRE_CUSHION,
+ .tiles = DecorGfx_FIRE_CUSHION,
+ },
+
+ [DECOR_WATER_CUSHION] =
+ {
+ .id = DECOR_WATER_CUSHION,
+ .name = _("WATER CUSHION"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x1,
+ .category = DECORCAT_CUSHION,
+ .price = 2000,
+ .description = DecorDesc_WATER_CUSHION,
+ .tiles = DecorGfx_WATER_CUSHION,
+ },
+
+ [DECOR_SNORLAX_DOLL] =
+ {
+ .id = DECOR_SNORLAX_DOLL,
+ .name = _("SNORLAX DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_DOLL,
+ .price = 10000,
+ .description = DecorDesc_SNORLAX_DOLL,
+ .tiles = DecorGfx_SNORLAX_DOLL,
+ },
+
+ [DECOR_RHYDON_DOLL] =
+ {
+ .id = DECOR_RHYDON_DOLL,
+ .name = _("RHYDON DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_DOLL,
+ .price = 10000,
+ .description = DecorDesc_RHYDON_DOLL,
+ .tiles = DecorGfx_RHYDON_DOLL,
+ },
+
+ [DECOR_LAPRAS_DOLL] =
+ {
+ .id = DECOR_LAPRAS_DOLL,
+ .name = _("LAPRAS DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_DOLL,
+ .price = 10000,
+ .description = DecorDesc_LAPRAS_DOLL,
+ .tiles = DecorGfx_LAPRAS_DOLL,
+ },
+
+ [DECOR_VENUSAUR_DOLL] =
+ {
+ .id = DECOR_VENUSAUR_DOLL,
+ .name = _("VENUSAUR DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_DOLL,
+ .price = 10000,
+ .description = DecorDesc_VENUSAUR_DOLL,
+ .tiles = DecorGfx_VENUSAUR_DOLL,
+ },
+
+ [DECOR_CHARIZARD_DOLL] =
+ {
+ .id = DECOR_CHARIZARD_DOLL,
+ .name = _("CHARIZARD DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_DOLL,
+ .price = 10000,
+ .description = DecorDesc_CHARIZARD_DOLL,
+ .tiles = DecorGfx_CHARIZARD_DOLL,
+ },
+
+ [DECOR_BLASTOISE_DOLL] =
+ {
+ .id = DECOR_BLASTOISE_DOLL,
+ .name = _("BLASTOISE DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_DOLL,
+ .price = 10000,
+ .description = DecorDesc_BLASTOISE_DOLL,
+ .tiles = DecorGfx_BLASTOISE_DOLL,
+ },
+
+ [DECOR_WAILMER_DOLL] =
+ {
+ .id = DECOR_WAILMER_DOLL,
+ .name = _("WAILMER DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_DOLL,
+ .price = 10000,
+ .description = DecorDesc_WAILMER_DOLL,
+ .tiles = DecorGfx_WAILMER_DOLL,
+ },
+
+ [DECOR_REGIROCK_DOLL] =
+ {
+ .id = DECOR_REGIROCK_DOLL,
+ .name = _("REGIROCK DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_DOLL,
+ .price = 10000,
+ .description = DecorDesc_REGIROCK_DOLL,
+ .tiles = DecorGfx_REGIROCK_DOLL,
+ },
+
+ [DECOR_REGICE_DOLL] =
+ {
+ .id = DECOR_REGICE_DOLL,
+ .name = _("REGICE DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_DOLL,
+ .price = 10000,
+ .description = DecorDesc_REGICE_DOLL,
+ .tiles = DecorGfx_REGICE_DOLL,
+ },
+
+ [DECOR_REGISTEEL_DOLL] =
+ {
+ .id = DECOR_REGISTEEL_DOLL,
+ .name = _("REGISTEEL DOLL"),
+ .permission = DECORPERM_SPRITE,
+ .shape = DECORSHAPE_1x2,
+ .category = DECORCAT_DOLL,
+ .price = 10000,
+ .description = DecorDesc_REGISTEEL_DOLL,
+ .tiles = DecorGfx_REGISTEEL_DOLL,
+ }
};
diff --git a/src/data/decoration/tilemaps.h b/src/data/decoration/tilemaps.h
index 12fe31dc0..eebb3acb2 100644
--- a/src/data/decoration/tilemaps.h
+++ b/src/data/decoration/tilemaps.h
@@ -1,37 +1,37 @@
-const u8 Unknown_085A6FB0[] = {
+static const u8 sDecorTilemap_1x1_Tiles[] = {
0x00, 0x01, 0x02, 0x03
};
-const u8 Unknown_085A6FB4[] = {
+static const u8 sDecorTilemap_3x1_Tiles[] = {
0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d
};
-const u8 Unknown_085A6FC0[] = {
+static const u8 sDecorTilemap_2x2_Tiles[] = {
0x00, 0x01, 0x02, 0x03,
0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b,
0x0c, 0x0d, 0x0e, 0x0f
};
-const u8 Unknown_085A6FD0[] = {
+static const u8 sDecorTilemap_1x3_Tiles[] = {
0x00, 0x01, 0x04, 0x05,
0x08, 0x09, 0x0c, 0x0d,
0x10, 0x11, 0x14, 0x15
};
-const u8 Unknown_085A6FDC[] = {
+static const u8 sDecorTilemap_2x1_Tiles[] = {
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
};
-const u8 Unknown_085A6FE4[] = {
+static const u8 sDecorTilemap_4x2_Tiles[] = {
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
};
-const u8 Unknown_085A7004[] = {
+static const u8 sDecorTilemap_3x3_Tiles[] = {
0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15,
@@ -40,60 +40,60 @@ const u8 Unknown_085A7004[] = {
0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d
};
-const u8 Unknown_085A7028[] = {
+static const u8 sDecorTilemap_3x2_Tiles[] = {
0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15,
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d
};
-const u8 Unknown_085A7040[] = {
+static const u8 sDecorTilemap_1x1_Y[] = {
0x00, 0x00, 0x00, 0x00
};
-const u8 Unknown_085A7044[] = {
+static const u8 sDecorTilemap_2x1_Y[] = {
0x00, 0x00, 0x01, 0x01,
0x00, 0x00, 0x01, 0x01
};
-const u8 Unknown_085A704C[] = {
+static const u8 sDecorTilemap_3x1_Y[] = {
0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
0x00, 0x00, 0x01, 0x01, 0x02, 0x02
};
-const u8 Unknown_085A7058[] = {
+static const u8 sDecorTilemap_4x2_Y[] = {
0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03,
0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03,
0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07, 0x07,
0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07, 0x07
};
-const u8 Unknown_085A7078[] = {
+static const u8 sDecorTilemap_2x2_Y[] = {
0x00, 0x00, 0x01, 0x01,
0x00, 0x00, 0x01, 0x01,
0x02, 0x02, 0x03, 0x03,
0x02, 0x02, 0x03, 0x03
};
-const u8 Unknown_085A7088[] = {
+static const u8 sDecorTilemap_1x2_Y[] = {
0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x01, 0x01
};
-const u8 Unknown_085A7090[] = {
+static const u8 sDecorTilemap_1x3_Y[] = {
0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x01, 0x01,
0x02, 0x02, 0x02, 0x02
};
-const u8 Unknown_085A709C[] = {
+static const u8 sDecorTilemap_2x4_Y[] = {
0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01,
0x02, 0x02, 0x03, 0x03, 0x02, 0x02, 0x03, 0x03,
0x04, 0x04, 0x05, 0x05, 0x04, 0x04, 0x05, 0x05,
0x06, 0x06, 0x07, 0x07, 0x06, 0x06, 0x07, 0x07
};
-const u8 Unknown_085A70BC[] = {
+static const u8 sDecorTilemap_3x3_Y[] = {
0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
0x03, 0x03, 0x04, 0x04, 0x05, 0x05,
@@ -102,60 +102,60 @@ const u8 Unknown_085A70BC[] = {
0x06, 0x06, 0x07, 0x07, 0x08, 0x08
};
-const u8 Unknown_085A70E0[] = {
+static const u8 sDecorTilemap_3x2_Y[] = {
0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
0x03, 0x03, 0x04, 0x04, 0x05, 0x05,
0x03, 0x03, 0x04, 0x04, 0x05, 0x05
};
-const u8 Unknown_085A70F8[] = {
+static const u8 sDecorTilemap_1x1_X[] = {
0x04, 0x05, 0x06, 0x07
};
-const u8 Unknown_085A70FC[] = {
+static const u8 sDecorTilemap_2x1_X[] = {
0x04, 0x05, 0x04, 0x05,
0x06, 0x07, 0x06, 0x07
};
-const u8 Unknown_085A7104[] = {
+static const u8 sDecorTilemap_3x1_X[] = {
0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
0x06, 0x07, 0x06, 0x07, 0x06, 0x07
};
-const u8 Unknown_085A7110[] = {
+static const u8 sDecorTilemap_4x2_X[] = {
0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07,
0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07
};
-const u8 Unknown_085A7130[] = {
+static const u8 sDecorTilemap_2x2_X[] = {
0x04, 0x05, 0x04, 0x05,
0x06, 0x07, 0x06, 0x07,
0x04, 0x05, 0x04, 0x05,
0x06, 0x07, 0x06, 0x07
};
-const u8 Unknown_085A7140[] = {
+static const u8 sDecorTilemap_1x2_X[] = {
0x04, 0x05, 0x06, 0x07,
0x04, 0x05, 0x06, 0x07
};
-const u8 Unknown_085A7148[] = {
+static const u8 sDecorTilemap_1x3_X[] = {
0x04, 0x05, 0x06, 0x07,
0x04, 0x05, 0x06, 0x07,
0x04, 0x05, 0x06, 0x07
};
-const u8 Unknown_085A7154[] = {
+static const u8 sDecorTilemap_2x4_X[] = {
0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07,
0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07,
0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07,
0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07
};
-const u8 Unknown_085A7174[] = {
+static const u8 sDecorTilemap_3x3_X[] = {
0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
0x06, 0x07, 0x06, 0x07, 0x06, 0x07,
0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
@@ -164,67 +164,78 @@ const u8 Unknown_085A7174[] = {
0x06, 0x07, 0x06, 0x07, 0x06, 0x07
};
-const u8 Unknown_085A7198[] = {
+static const u8 sDecorTilemap_3x2_X[] = {
0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
0x06, 0x07, 0x06, 0x07, 0x06, 0x07,
0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
0x06, 0x07, 0x06, 0x07, 0x06, 0x07
};
-const struct {
+#define DECORSIZE(width, height)((width) * (height) * 4)
+
+static const struct {
const u8 *tiles;
const u8 *y;
const u8 *x;
u8 size;
-} gUnknown_085A71B0[] = {
- {
- Unknown_085A6FB0,
- Unknown_085A7040,
- Unknown_085A70F8,
- 0x04
- }, {
- Unknown_085A6FDC,
- Unknown_085A7044,
- Unknown_085A70FC,
- 0x08
- }, {
- Unknown_085A6FB4,
- Unknown_085A704C,
- Unknown_085A7104,
- 0x0c
- }, {
- Unknown_085A6FE4,
- Unknown_085A7058,
- Unknown_085A7110,
- 0x20
- }, {
- Unknown_085A6FC0,
- Unknown_085A7078,
- Unknown_085A7130,
- 0x10
- }, {
- Unknown_085A6FDC,
- Unknown_085A7088,
- Unknown_085A7140,
- 0x08
- }, {
- Unknown_085A6FD0,
- Unknown_085A7090,
- Unknown_085A7148,
- 0x0c
- }, {
- Unknown_085A6FE4,
- Unknown_085A709C,
- Unknown_085A7154,
- 0x20
- }, {
- Unknown_085A7004,
- Unknown_085A70BC,
- Unknown_085A7174,
- 0x24
- }, {
- Unknown_085A7028,
- Unknown_085A70E0,
- Unknown_085A7198,
- 0x18
+} sDecorTilemaps[] = {
+ [DECORSHAPE_1x1] = {
+ .tiles = sDecorTilemap_1x1_Tiles,
+ .y = sDecorTilemap_1x1_Y,
+ .x = sDecorTilemap_1x1_X,
+ .size = DECORSIZE(1, 1)
+ },
+ [DECORSHAPE_2x1] = {
+ .tiles = sDecorTilemap_2x1_Tiles,
+ .y = sDecorTilemap_2x1_Y,
+ .x = sDecorTilemap_2x1_X,
+ .size = DECORSIZE(2, 1)
+ },
+ [DECORSHAPE_3x1] = {
+ .tiles = sDecorTilemap_3x1_Tiles,
+ .y = sDecorTilemap_3x1_Y,
+ .x = sDecorTilemap_3x1_X,
+ .size = DECORSIZE(3, 1)
+ },
+ [DECORSHAPE_4x2] = {
+ .tiles = sDecorTilemap_4x2_Tiles,
+ .y = sDecorTilemap_4x2_Y,
+ .x = sDecorTilemap_4x2_X,
+ .size = DECORSIZE(4, 2)
+ },
+ [DECORSHAPE_2x2] = {
+ .tiles = sDecorTilemap_2x2_Tiles,
+ .y = sDecorTilemap_2x2_Y,
+ .x = sDecorTilemap_2x2_X,
+ .size = DECORSIZE(2, 2)
+ },
+ [DECORSHAPE_1x2] = {
+ .tiles = sDecorTilemap_2x1_Tiles,
+ .y = sDecorTilemap_1x2_Y,
+ .x = sDecorTilemap_1x2_X,
+ .size = DECORSIZE(1, 2)
+ },
+ [DECORSHAPE_1x3] = {
+ .tiles = sDecorTilemap_1x3_Tiles,
+ .y = sDecorTilemap_1x3_Y,
+ .x = sDecorTilemap_1x3_X,
+ .size = DECORSIZE(1, 3)
+ },
+ [DECORSHAPE_2x4] = {
+ .tiles = sDecorTilemap_4x2_Tiles,
+ .y = sDecorTilemap_2x4_Y,
+ .x = sDecorTilemap_2x4_X,
+ .size = DECORSIZE(2, 4)
+ },
+ [DECORSHAPE_3x3] = {
+ .tiles = sDecorTilemap_3x3_Tiles,
+ .y = sDecorTilemap_3x3_Y,
+ .x = sDecorTilemap_3x3_X,
+ .size = DECORSIZE(3, 3)
+ },
+ [DECORSHAPE_3x2] = {
+ .tiles = sDecorTilemap_3x2_Tiles,
+ .y = sDecorTilemap_3x2_Y,
+ .x = sDecorTilemap_3x2_X,
+ .size = DECORSIZE(3, 2)
}};
diff --git a/src/data/decoration/tiles.h b/src/data/decoration/tiles.h
index de5c43575..1b25da3d4 100644
--- a/src/data/decoration/tiles.h
+++ b/src/data/decoration/tiles.h
@@ -1,4 +1,4 @@
-#define DECOR_TILE(name) (METATILE_SecretBase_##name - 0x200)
+#define DECOR_TILE(name) (METATILE_SecretBase_##name - NUM_TILES_IN_PRIMARY)
const u16 DecorGfx_SMALL_DESK[] = {
DECOR_TILE(SmallDesk)
diff --git a/src/data/easy_chat/easy_chat_groups.h b/src/data/easy_chat/easy_chat_groups.h
index df114d980..a89f228fe 100755
--- a/src/data/easy_chat/easy_chat_groups.h
+++ b/src/data/easy_chat/easy_chat_groups.h
@@ -26,112 +26,112 @@
const struct EasyChatGroup gEasyChatGroups[] = {
{
.wordData = {.valueList = gEasyChatGroup_Pokemon},
- .numWords = 202,
- .numEnabledWords = 202,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Pokemon),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Pokemon),
},
{
.wordData = {.words = gEasyChatGroup_Trainer},
- .numWords = 27,
- .numEnabledWords = 21,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Trainer),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Trainer) - 6, // Excludes Red, Green, Flame, Gold, Leaf, and Silver
},
{
.wordData = {.words = gEasyChatGroup_Status},
- .numWords = 109,
- .numEnabledWords = 109,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Status),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Status),
},
{
.wordData = {.words = gEasyChatGroup_Battle},
- .numWords = 63,
- .numEnabledWords = 63,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Battle),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Battle),
},
{
.wordData = {.words = gEasyChatGroup_Greetings},
- .numWords = 42,
- .numEnabledWords = 42,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Greetings),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Greetings),
},
{
.wordData = {.words = gEasyChatGroup_People},
- .numWords = 75,
- .numEnabledWords = 75,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_People),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_People),
},
{
.wordData = {.words = gEasyChatGroup_Voices},
- .numWords = 63,
- .numEnabledWords = 63,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Voices),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Voices),
},
{
.wordData = {.words = gEasyChatGroup_Speech},
- .numWords = 60,
- .numEnabledWords = 60,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Speech),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Speech),
},
{
.wordData = {.words = gEasyChatGroup_Endings},
- .numWords = 69,
- .numEnabledWords = 69,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Endings),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Endings),
},
{
.wordData = {.words = gEasyChatGroup_Feelings},
- .numWords = 69,
- .numEnabledWords = 69,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Feelings),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Feelings),
},
{
.wordData = {.words = gEasyChatGroup_Conditions},
- .numWords = 69,
- .numEnabledWords = 69,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Conditions),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Conditions),
},
{
.wordData = {.words = gEasyChatGroup_Actions},
- .numWords = 78,
- .numEnabledWords = 78,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Actions),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Actions),
},
{
.wordData = {.words = gEasyChatGroup_Lifestyle},
- .numWords = 45,
- .numEnabledWords = 45,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Lifestyle),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Lifestyle),
},
{
.wordData = {.words = gEasyChatGroup_Hobbies},
- .numWords = 54,
- .numEnabledWords = 54,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Hobbies),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Hobbies),
},
{
.wordData = {.words = gEasyChatGroup_Time},
- .numWords = 45,
- .numEnabledWords = 45,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Time),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Time),
},
{
.wordData = {.words = gEasyChatGroup_Misc},
- .numWords = 42,
- .numEnabledWords = 42,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Misc),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Misc),
},
{
.wordData = {.words = gEasyChatGroup_Adjectives},
- .numWords = 36,
- .numEnabledWords = 36,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Adjectives),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Adjectives),
},
{
.wordData = {.words = gEasyChatGroup_Events},
- .numWords = 29,
- .numEnabledWords = 29,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Events),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Events),
},
{
.wordData = {.valueList = gEasyChatGroup_Move1},
- .numWords = 154,
- .numEnabledWords = 154,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Move1),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Move1),
},
{
.wordData = {.valueList = gEasyChatGroup_Move2},
- .numWords = 200,
- .numEnabledWords = 200,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Move2),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Move2),
},
{
.wordData = {.words = gEasyChatGroup_TrendySaying},
- .numWords = 33,
- .numEnabledWords = 33,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_TrendySaying),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_TrendySaying),
},
{
.wordData = {.valueList = gEasyChatGroup_Pokemon2},
- .numWords = 251,
- .numEnabledWords = 251,
+ .numWords = ARRAY_COUNT(gEasyChatGroup_Pokemon2),
+ .numEnabledWords = ARRAY_COUNT(gEasyChatGroup_Pokemon2),
},
};
diff --git a/src/data/party_menu.h b/src/data/party_menu.h
index 3c3a3e1ce..daf3f4f6c 100644
--- a/src/data/party_menu.h
+++ b/src/data/party_menu.h
@@ -1194,62 +1194,62 @@ static const u8 *const sUnused_StatStrings[] =
static const u16 sTMHMMoves[] =
{
- MOVE_FOCUS_PUNCH,
- MOVE_DRAGON_CLAW,
- MOVE_WATER_PULSE,
- MOVE_CALM_MIND,
- MOVE_ROAR,
- MOVE_TOXIC,
- MOVE_HAIL,
- MOVE_BULK_UP,
- MOVE_BULLET_SEED,
- MOVE_HIDDEN_POWER,
- MOVE_SUNNY_DAY,
- MOVE_TAUNT,
- MOVE_ICE_BEAM,
- MOVE_BLIZZARD,
- MOVE_HYPER_BEAM,
- MOVE_LIGHT_SCREEN,
- MOVE_PROTECT,
- MOVE_RAIN_DANCE,
- MOVE_GIGA_DRAIN,
- MOVE_SAFEGUARD,
- MOVE_FRUSTRATION,
- MOVE_SOLAR_BEAM,
- MOVE_IRON_TAIL,
- MOVE_THUNDERBOLT,
- MOVE_THUNDER,
- MOVE_EARTHQUAKE,
- MOVE_RETURN,
- MOVE_DIG,
- MOVE_PSYCHIC,
- MOVE_SHADOW_BALL,
- MOVE_BRICK_BREAK,
- MOVE_DOUBLE_TEAM,
- MOVE_REFLECT,
- MOVE_SHOCK_WAVE,
- MOVE_FLAMETHROWER,
- MOVE_SLUDGE_BOMB,
- MOVE_SANDSTORM,
- MOVE_FIRE_BLAST,
- MOVE_ROCK_TOMB,
- MOVE_AERIAL_ACE,
- MOVE_TORMENT,
- MOVE_FACADE,
- MOVE_SECRET_POWER,
- MOVE_REST,
- MOVE_ATTRACT,
- MOVE_THIEF,
- MOVE_STEEL_WING,
- MOVE_SKILL_SWAP,
- MOVE_SNATCH,
- MOVE_OVERHEAT,
- MOVE_CUT,
- MOVE_FLY,
- MOVE_SURF,
- MOVE_STRENGTH,
- MOVE_FLASH,
- MOVE_ROCK_SMASH,
- MOVE_WATERFALL,
- MOVE_DIVE,
+ [ITEM_TM01 - ITEM_TM01] = MOVE_FOCUS_PUNCH,
+ [ITEM_TM02 - ITEM_TM01] = MOVE_DRAGON_CLAW,
+ [ITEM_TM03 - ITEM_TM01] = MOVE_WATER_PULSE,
+ [ITEM_TM04 - ITEM_TM01] = MOVE_CALM_MIND,
+ [ITEM_TM05 - ITEM_TM01] = MOVE_ROAR,
+ [ITEM_TM06 - ITEM_TM01] = MOVE_TOXIC,
+ [ITEM_TM07 - ITEM_TM01] = MOVE_HAIL,
+ [ITEM_TM08 - ITEM_TM01] = MOVE_BULK_UP,
+ [ITEM_TM09 - ITEM_TM01] = MOVE_BULLET_SEED,
+ [ITEM_TM10 - ITEM_TM01] = MOVE_HIDDEN_POWER,
+ [ITEM_TM11 - ITEM_TM01] = MOVE_SUNNY_DAY,
+ [ITEM_TM12 - ITEM_TM01] = MOVE_TAUNT,
+ [ITEM_TM13 - ITEM_TM01] = MOVE_ICE_BEAM,
+ [ITEM_TM14 - ITEM_TM01] = MOVE_BLIZZARD,
+ [ITEM_TM15 - ITEM_TM01] = MOVE_HYPER_BEAM,
+ [ITEM_TM16 - ITEM_TM01] = MOVE_LIGHT_SCREEN,
+ [ITEM_TM17 - ITEM_TM01] = MOVE_PROTECT,
+ [ITEM_TM18 - ITEM_TM01] = MOVE_RAIN_DANCE,
+ [ITEM_TM19 - ITEM_TM01] = MOVE_GIGA_DRAIN,
+ [ITEM_TM20 - ITEM_TM01] = MOVE_SAFEGUARD,
+ [ITEM_TM21 - ITEM_TM01] = MOVE_FRUSTRATION,
+ [ITEM_TM22 - ITEM_TM01] = MOVE_SOLAR_BEAM,
+ [ITEM_TM23 - ITEM_TM01] = MOVE_IRON_TAIL,
+ [ITEM_TM24 - ITEM_TM01] = MOVE_THUNDERBOLT,
+ [ITEM_TM25 - ITEM_TM01] = MOVE_THUNDER,
+ [ITEM_TM26 - ITEM_TM01] = MOVE_EARTHQUAKE,
+ [ITEM_TM27 - ITEM_TM01] = MOVE_RETURN,
+ [ITEM_TM28 - ITEM_TM01] = MOVE_DIG,
+ [ITEM_TM29 - ITEM_TM01] = MOVE_PSYCHIC,
+ [ITEM_TM30 - ITEM_TM01] = MOVE_SHADOW_BALL,
+ [ITEM_TM31 - ITEM_TM01] = MOVE_BRICK_BREAK,
+ [ITEM_TM32 - ITEM_TM01] = MOVE_DOUBLE_TEAM,
+ [ITEM_TM33 - ITEM_TM01] = MOVE_REFLECT,
+ [ITEM_TM34 - ITEM_TM01] = MOVE_SHOCK_WAVE,
+ [ITEM_TM35 - ITEM_TM01] = MOVE_FLAMETHROWER,
+ [ITEM_TM36 - ITEM_TM01] = MOVE_SLUDGE_BOMB,
+ [ITEM_TM37 - ITEM_TM01] = MOVE_SANDSTORM,
+ [ITEM_TM38 - ITEM_TM01] = MOVE_FIRE_BLAST,
+ [ITEM_TM39 - ITEM_TM01] = MOVE_ROCK_TOMB,
+ [ITEM_TM40 - ITEM_TM01] = MOVE_AERIAL_ACE,
+ [ITEM_TM41 - ITEM_TM01] = MOVE_TORMENT,
+ [ITEM_TM42 - ITEM_TM01] = MOVE_FACADE,
+ [ITEM_TM43 - ITEM_TM01] = MOVE_SECRET_POWER,
+ [ITEM_TM44 - ITEM_TM01] = MOVE_REST,
+ [ITEM_TM45 - ITEM_TM01] = MOVE_ATTRACT,
+ [ITEM_TM46 - ITEM_TM01] = MOVE_THIEF,
+ [ITEM_TM47 - ITEM_TM01] = MOVE_STEEL_WING,
+ [ITEM_TM48 - ITEM_TM01] = MOVE_SKILL_SWAP,
+ [ITEM_TM49 - ITEM_TM01] = MOVE_SNATCH,
+ [ITEM_TM50 - ITEM_TM01] = MOVE_OVERHEAT,
+ [ITEM_HM01 - ITEM_TM01] = MOVE_CUT,
+ [ITEM_HM02 - ITEM_TM01] = MOVE_FLY,
+ [ITEM_HM03 - ITEM_TM01] = MOVE_SURF,
+ [ITEM_HM04 - ITEM_TM01] = MOVE_STRENGTH,
+ [ITEM_HM05 - ITEM_TM01] = MOVE_FLASH,
+ [ITEM_HM06 - ITEM_TM01] = MOVE_ROCK_SMASH,
+ [ITEM_HM07 - ITEM_TM01] = MOVE_WATERFALL,
+ [ITEM_HM08 - ITEM_TM01] = MOVE_DIVE,
};
diff --git a/src/daycare.c b/src/daycare.c
index 511fa0551..2a1efefcc 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -838,7 +838,7 @@ void CreateEgg(struct Pokemon *mon, u16 species, bool8 setHotSpringsLocation)
u8 metLocation;
u8 isEgg;
- CreateMon(mon, species, EGG_HATCH_LEVEL, 32, FALSE, 0, OT_ID_PLAYER_ID, 0);
+ CreateMon(mon, species, EGG_HATCH_LEVEL, USE_RANDOM_IVS, FALSE, 0, OT_ID_PLAYER_ID, 0);
metLevel = 0;
ball = ITEM_POKE_BALL;
language = LANGUAGE_JAPANESE;
@@ -865,7 +865,7 @@ static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *
u8 language;
personality = daycare->offspringPersonality;
- CreateMon(mon, species, EGG_HATCH_LEVEL, 32, TRUE, personality, OT_ID_PLAYER_ID, 0);
+ CreateMon(mon, species, EGG_HATCH_LEVEL, USE_RANDOM_IVS, TRUE, personality, OT_ID_PLAYER_ID, 0);
metLevel = 0;
ball = ITEM_POKE_BALL;
language = LANGUAGE_JAPANESE;
diff --git a/src/decoration.c b/src/decoration.c
index 74dbacdf9..b97ab4321 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -1210,7 +1210,7 @@ static void ShowDecorationOnMap_(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight,
for (i = 0; i < decWidth; i++)
{
x = mapX + i;
- behavior = GetBehaviorByMetatileId(0x200 + gDecorations[decoration].tiles[j * decWidth + i]);
+ behavior = GetBehaviorByMetatileId(NUM_TILES_IN_PRIMARY + gDecorations[decoration].tiles[j * decWidth + i]);
if (MetatileBehavior_IsSecretBaseImpassable(behavior) == TRUE || (gDecorations[decoration].permission != DECORPERM_PASS_FLOOR && (behavior >> METATILE_ELEVATION_SHIFT)))
impassableFlag = METATILE_COLLISION_MASK;
else
@@ -1224,9 +1224,9 @@ static void ShowDecorationOnMap_(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight,
elevation = GetDecorationElevation(gDecorations[decoration].id, j * decWidth + i);
if (elevation != 0xFFFF)
- MapGridSetMetatileEntryAt(x, y, (gDecorations[decoration].tiles[j * decWidth + i] + (0x200 | overlapsWall)) | impassableFlag | elevation);
+ MapGridSetMetatileEntryAt(x, y, (gDecorations[decoration].tiles[j * decWidth + i] + (NUM_TILES_IN_PRIMARY | overlapsWall)) | impassableFlag | elevation);
else
- MapGridSetMetatileIdAt(x, y, (gDecorations[decoration].tiles[j * decWidth + i] + (0x200 | overlapsWall)) | impassableFlag);
+ MapGridSetMetatileIdAt(x, y, (gDecorations[decoration].tiles[j * decWidth + i] + (NUM_TILES_IN_PRIMARY | overlapsWall)) | impassableFlag);
}
}
}
@@ -1524,7 +1524,7 @@ static bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration)
{
curX = gTasks[taskId].tCursorX + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK;
+ behaviorBy = GetBehaviorByMetatileId(NUM_TILES_IN_PRIMARY + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK;
if (!IsFloorOrBoardAndHole(behaviorAt, decoration))
return FALSE;
@@ -1545,7 +1545,7 @@ static bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration)
{
curX = gTasks[taskId].tCursorX + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK;
+ behaviorBy = GetBehaviorByMetatileId(NUM_TILES_IN_PRIMARY + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK;
if (!MetatileBehavior_IsNormal(behaviorAt) && !IsNonBlockNonElevated(behaviorAt, behaviorBy))
return FALSE;
@@ -1562,7 +1562,7 @@ static bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration)
{
curX = gTasks[taskId].tCursorX + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
- behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[j]) & METATILE_ELEVATION_MASK;
+ behaviorBy = GetBehaviorByMetatileId(NUM_TILES_IN_PRIMARY + decoration->tiles[j]) & METATILE_ELEVATION_MASK;
if (!MetatileBehavior_IsNormal(behaviorAt) && !MetatileBehavior_IsSecretBaseNorthWall(behaviorAt))
return FALSE;
@@ -1971,9 +1971,9 @@ static void SetDecorSelectionMetatiles(struct PlaceDecorationGraphicsDataBuffer
u8 shape;
shape = data->decoration->shape;
- for (i = 0; i < gUnknown_085A71B0[shape].size; i++)
+ for (i = 0; i < sDecorTilemaps[shape].size; i++)
{
- data->tiles[gUnknown_085A71B0[shape].tiles[i]] = GetMetatile(data->decoration->tiles[gUnknown_085A71B0[shape].y[i]] * 8 + gUnknown_085A71B0[shape].x[i]);
+ data->tiles[sDecorTilemaps[shape].tiles[i]] = GetMetatile(data->decoration->tiles[sDecorTilemaps[shape].y[i]] * 8 + sDecorTilemaps[shape].x[i]);
}
}
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index f90441b68..4e050ce62 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -322,7 +322,7 @@ static void CreateHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
pokerus = GetMonData(egg, MON_DATA_POKERUS);
obedience = GetMonData(egg, MON_DATA_OBEDIENCE);
- CreateMon(temp, species, EGG_HATCH_LEVEL, 32, TRUE, personality, OT_ID_PLAYER_ID, 0);
+ CreateMon(temp, species, EGG_HATCH_LEVEL, USE_RANDOM_IVS, TRUE, personality, OT_ID_PLAYER_ID, 0);
for (i = 0; i < MAX_MON_MOVES; i++)
{
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index fab14c577..a811901a9 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -730,7 +730,8 @@ static bool8 TryStartWarpEventScript(struct MapPosition *position, u16 metatileB
}
if (MetatileBehavior_IsWarpOrBridge(metatileBehavior) == TRUE)
{
- sub_80B0268();
+ // Maybe unused? This MB is used by log bridges, but there's never a warp event on them
+ DoSpinExitWarp();
return TRUE;
}
if (MetatileBehavior_IsMtPyreHole(metatileBehavior) == TRUE)
diff --git a/src/field_message_box.c b/src/field_message_box.c
index 1b760c7df..b98425b66 100755
--- a/src/field_message_box.c
+++ b/src/field_message_box.c
@@ -1,6 +1,5 @@
#include "global.h"
#include "menu.h"
-#include "string.h"
#include "string_util.h"
#include "task.h"
#include "text.h"
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index f57cc9979..cc4c03c9d 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -31,7 +31,7 @@
#include "constants/songs.h"
#include "constants/trainer_types.h"
-static EWRAM_DATA u8 gUnknown_0203734C = 0;
+static EWRAM_DATA u8 sSpinStartFacingDir = 0;
EWRAM_DATA struct ObjectEvent gObjectEvents[OBJECT_EVENTS_COUNT] = {};
EWRAM_DATA struct PlayerAvatar gPlayerAvatar = {};
@@ -138,7 +138,7 @@ static u8 Fishing_PutRodAway(struct Task *task);
static u8 Fishing_EndNoMon(struct Task *task);
static void AlignFishingAnimationFrames(void);
-static u8 sub_808D38C(struct ObjectEvent *object, s16 *a1);
+static u8 TrySpinPlayerForWarp(struct ObjectEvent *object, s16 *a1);
// .rodata
@@ -2050,54 +2050,64 @@ static void AlignFishingAnimationFrames(void)
SetSurfBobWhileFishingState(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 1, playerSprite->pos2.y);
}
-void sub_808D074(u8 a0)
+void SetSpinStartFacingDir(u8 direction)
{
- gUnknown_0203734C = a0;
+ sSpinStartFacingDir = direction;
}
-static u8 sub_808D080(void)
+static u8 GetSpinStartFacingDir(void)
{
- if (gUnknown_0203734C == 0)
- {
- return 1;
- }
- return gUnknown_0203734C;
+ if (sSpinStartFacingDir == DIR_NONE)
+ return DIR_SOUTH;
+
+ return sSpinStartFacingDir;
}
-static void sub_808D094(u8 taskId)
+// Task data for Task_DoPlayerSpinEntrance and Task_DoPlayerSpinExit
+#define tState data[0]
+#define tSpinDelayTimer data[1]
+#define tSpeed data[2]
+#define tCurY data[3]
+#define tDestY data[4]
+#define tStartDir data[5]
+#define tPriority data[6]
+#define tSubpriority data[7]
+#define tGroundTimer data[8]
+
+static void Task_DoPlayerSpinExit(u8 taskId)
{
struct ObjectEvent *object = &gObjectEvents[gPlayerAvatar.objectEventId];
struct Sprite *sprite = &gSprites[object->spriteId];
s16 *data = gTasks[taskId].data;
- switch (data[0])
+ switch (tState)
{
- case 0:
+ case 0: // Init
if (!ObjectEventClearHeldMovementIfFinished(object))
- {
return;
- }
- sub_808D074(object->facingDirection);
- data[1] = 0;
- data[2] = 1;
- data[3] = (u16)(sprite->pos1.y + sprite->pos2.y) << 4;
+ SetSpinStartFacingDir(object->facingDirection);
+ tSpinDelayTimer = 0;
+ tSpeed = 1;
+ tCurY = (u16)(sprite->pos1.y + sprite->pos2.y) << 4;
sprite->pos2.y = 0;
CameraObjectReset2();
object->fixedPriority = TRUE;
sprite->oam.priority = 0;
sprite->subpriority = 0;
sprite->subspriteMode = SUBSPRITES_OFF;
- data[0]++;
- case 1:
- sub_808D38C(object, &data[1]);
- data[3] -= data[2];
- data[2] += 3;
- sprite->pos1.y = data[3] >> 4;
+ tState++;
+ case 1: // Spin while rising
+ TrySpinPlayerForWarp(object, &tSpinDelayTimer);
+
+ // Rise and accelerate
+ tCurY -= tSpeed;
+ tSpeed += 3;
+ sprite->pos1.y = tCurY >> 4;
+
+ // Check if offscreen
if (sprite->pos1.y + (s16)gTotalCameraPixelOffsetY < -32)
- {
- data[0]++;
- }
+ tState++;
break;
case 2:
DestroyTask(taskId);
@@ -2105,84 +2115,86 @@ static void sub_808D094(u8 taskId)
}
}
-static void sub_808D1FC(u8 taskId);
+static void Task_DoPlayerSpinEntrance(u8 taskId);
-void sub_808D194(void)
+void DoPlayerSpinEntrance(void)
{
- sub_808D1FC(CreateTask(sub_808D1FC, 0));
+ Task_DoPlayerSpinEntrance(CreateTask(Task_DoPlayerSpinEntrance, 0));
}
-bool32 sub_808D1B4(void)
+bool32 IsPlayerSpinEntranceActive(void)
{
- return FuncIsActiveTask(sub_808D1FC);
+ return FuncIsActiveTask(Task_DoPlayerSpinEntrance);
}
-void sub_808D1C8(void)
+void DoPlayerSpinExit(void)
{
- sub_808D094(CreateTask(sub_808D094, 0));
+ Task_DoPlayerSpinExit(CreateTask(Task_DoPlayerSpinExit, 0));
}
-bool32 sub_808D1E8(void)
+bool32 IsPlayerSpinExitActive(void)
{
- return FuncIsActiveTask(sub_808D094);
+ return FuncIsActiveTask(Task_DoPlayerSpinExit);
}
-static const u8 gUnknown_084975BC[] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
+static const u8 sSpinDirections[] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
-static void sub_808D1FC(u8 taskId)
+static void Task_DoPlayerSpinEntrance(u8 taskId)
{
struct ObjectEvent *object = &gObjectEvents[gPlayerAvatar.objectEventId];
struct Sprite *sprite = &gSprites[object->spriteId];
s16 *data = gTasks[taskId].data;
- switch (data[0])
+ switch (tState)
{
case 0:
- data[5] = sub_808D080();
- ObjectEventForceSetHeldMovement(object, GetFaceDirectionMovementAction(gUnknown_084975BC[data[5]]));
- data[1] = 0;
- data[2] = 116;
- data[4] = sprite->pos1.y;
- data[6] = sprite->oam.priority;
- data[7] = sprite->subpriority;
- data[3] = -((u16)sprite->pos2.y + 32) * 16;
+ // Because the spin start facing direction is never set for this
+ // warp type, the player will always exit the warp facing South.
+ // This may have been intentional, unclear
+ tStartDir = GetSpinStartFacingDir();
+ ObjectEventForceSetHeldMovement(object, GetFaceDirectionMovementAction(sSpinDirections[tStartDir]));
+ tSpinDelayTimer = 0;
+ tSpeed = 116;
+ tDestY = sprite->pos1.y;
+ tPriority = sprite->oam.priority;
+ tSubpriority = sprite->subpriority;
+ tCurY = -((u16)sprite->pos2.y + 32) * 16;
sprite->pos2.y = 0;
CameraObjectReset2();
object->fixedPriority = TRUE;
sprite->oam.priority = 1;
sprite->subpriority = 0;
sprite->subspriteMode = SUBSPRITES_OFF;
- data[0]++;
- case 1:
- sub_808D38C(object, &data[1]);
- data[3] += data[2];
- data[2] -= 3;
- if (data[2] < 4)
+ tState++;
+ case 1: // Spin while descending
+ TrySpinPlayerForWarp(object, &tSpinDelayTimer);
+
+ // Fall and decelerate
+ tCurY += tSpeed;
+ tSpeed -= 3;
+ if (tSpeed < 4)
+ tSpeed = 4;
+ sprite->pos1.y = tCurY >> 4;
+
+ // Check if reached dest
+ if (sprite->pos1.y >= tDestY)
{
- data[2] = 4;
- }
- sprite->pos1.y = data[3] >> 4;
- if (sprite->pos1.y >= data[4])
- {
- sprite->pos1.y = data[4];
- data[8] = 0;
- data[0]++;
+ sprite->pos1.y = tDestY;
+ tGroundTimer = 0;
+ tState++;
}
break;
- case 2:
- sub_808D38C(object, &data[1]);
- data[8]++;
- if (data[8] > 8)
- {
- data[0]++;
- }
+ case 2: // Spin on ground
+ TrySpinPlayerForWarp(object, &tSpinDelayTimer);
+ if (++tGroundTimer > 8)
+ tState++;
break;
- case 3:
- if (data[5] == sub_808D38C(object, &data[1]))
+ case 3: // Spin until facing original direction
+ if (tStartDir == TrySpinPlayerForWarp(object, &tSpinDelayTimer))
{
object->fixedPriority = 0;
- sprite->oam.priority = data[6];
- sprite->subpriority = data[7];
+ sprite->oam.priority = tPriority;
+ sprite->subpriority = tSubpriority;
CameraObjectReset1();
DestroyTask(taskId);
}
@@ -2190,19 +2202,15 @@ static void sub_808D1FC(u8 taskId)
}
}
-static u8 sub_808D38C(struct ObjectEvent *object, s16 *a1)
+static u8 TrySpinPlayerForWarp(struct ObjectEvent *object, s16 *delayTimer)
{
- if (*a1 < 8 && ++(*a1) < 8)
- {
+ if (*delayTimer < 8 && ++(*delayTimer) < 8)
return object->facingDirection;
- }
if (!ObjectEventCheckHeldMovementStatus(object))
- {
return object->facingDirection;
- }
- ObjectEventForceSetHeldMovement(object, GetFaceDirectionMovementAction(gUnknown_084975BC[object->facingDirection]));
- *a1 = 0;
- return gUnknown_084975BC[object->facingDirection];
+ ObjectEventForceSetHeldMovement(object, GetFaceDirectionMovementAction(sSpinDirections[object->facingDirection]));
+ *delayTimer = 0;
+ return sSpinDirections[object->facingDirection];
}
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
index 9becd2166..db82d667c 100644
--- a/src/field_screen_effect.c
+++ b/src/field_screen_effect.c
@@ -42,11 +42,14 @@ static void Task_DoContestHallWarp(u8);
static void FillPalBufferWhite(void);
static void Task_ExitDoor(u8);
static bool32 WaitForWeatherFadeIn(void);
-static void Task_TeleportTileWarpExit(u8 taskId);
+static void Task_SpinEnterWarp(u8 taskId);
static void Task_WarpAndLoadMap(u8 taskId);
static void Task_DoDoorWarp(u8 taskId);
static void Task_EnableScriptAfterMusicFade(u8 taskId);
+// data[0] is used universally by tasks in this file as a state for switches
+#define tState data[0]
+
// const
static const u16 sFlashLevelPixelRadii[] = { 200, 72, 64, 56, 48, 40, 32, 24, 0 };
const s32 gMaxFlashLevel = ARRAY_COUNT(sFlashLevelPixelRadii) - 1;
@@ -156,17 +159,17 @@ static void Task_ReturnToFieldCableLink(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
task->data[1] = CreateTask_ReestablishCableClubLink();
- task->data[0]++;
+ task->tState++;
break;
case 1:
if (gTasks[task->data[1]].isActive != TRUE)
{
WarpFadeInScreen();
- task->data[0]++;
+ task->tState++;
}
break;
case 2:
@@ -191,11 +194,11 @@ static void Task_ReturnToFieldWirelessLink(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
SetLinkStandbyCallback();
- task->data[0]++;
+ task->tState++;
break;
case 1:
if (!IsLinkTaskFinished())
@@ -206,7 +209,7 @@ static void Task_ReturnToFieldWirelessLink(u8 taskId)
else
{
WarpFadeInScreen();
- task->data[0]++;
+ task->tState++;
}
break;
case 2:
@@ -224,16 +227,16 @@ void Task_ReturnToFieldRecordMixing(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
SetLinkStandbyCallback();
- task->data[0]++;
+ task->tState++;
break;
case 1:
if (IsLinkTaskFinished())
{
- task->data[0]++;
+ task->tState++;
}
break;
case 2:
@@ -295,12 +298,12 @@ void FieldCB_WarpExitFadeFromBlack(void)
ScriptContext2_Enable();
}
-static void FieldCB_TeleportTileWarpExit(void)
+static void FieldCB_SpinEnterWarp(void)
{
Overworld_PlaySpecialMapMusic();
WarpFadeInScreen();
PlaySE(SE_WARP_OUT);
- CreateTask(Task_TeleportTileWarpExit, 10);
+ CreateTask(Task_SpinEnterWarp, 10);
ScriptContext2_Enable();
}
@@ -320,14 +323,14 @@ static void Task_ExitDoor(u8 taskId)
s16 *x = &task->data[2];
s16 *y = &task->data[3];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
SetPlayerVisibility(FALSE);
FreezeObjectEvents();
PlayerGetDestCoords(x, y);
FieldSetDoorOpened(*x, *y);
- task->data[0] = 1;
+ task->tState = 1;
break;
case 1:
if (WaitForWeatherFadeIn())
@@ -336,7 +339,7 @@ static void Task_ExitDoor(u8 taskId)
SetPlayerVisibility(TRUE);
objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0);
ObjectEventSetHeldMovement(&gObjectEvents[objEventId], MOVEMENT_ACTION_WALK_NORMAL_DOWN);
- task->data[0] = 2;
+ task->tState = 2;
}
break;
case 2:
@@ -346,14 +349,14 @@ static void Task_ExitDoor(u8 taskId)
task->data[1] = FieldAnimateDoorClose(*x, *y);
objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0);
ObjectEventClearHeldMovementIfFinished(&gObjectEvents[objEventId]);
- task->data[0] = 3;
+ task->tState = 3;
}
break;
case 3:
if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE)
{
UnfreezeObjectEvents();
- task->data[0] = 4;
+ task->tState = 4;
}
break;
case 4:
@@ -369,13 +372,13 @@ static void Task_ExitNonAnimDoor(u8 taskId)
s16 *x = &task->data[2];
s16 *y = &task->data[3];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
SetPlayerVisibility(FALSE);
FreezeObjectEvents();
PlayerGetDestCoords(x, y);
- task->data[0] = 1;
+ task->tState = 1;
break;
case 1:
if (WaitForWeatherFadeIn())
@@ -384,14 +387,14 @@ static void Task_ExitNonAnimDoor(u8 taskId)
SetPlayerVisibility(TRUE);
objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0);
ObjectEventSetHeldMovement(&gObjectEvents[objEventId], GetWalkNormalMovementAction(GetPlayerFacingDirection()));
- task->data[0] = 2;
+ task->tState = 2;
}
break;
case 2:
if (IsPlayerStandingStill())
{
UnfreezeObjectEvents();
- task->data[0] = 3;
+ task->tState = 3;
}
break;
case 3:
@@ -403,12 +406,12 @@ static void Task_ExitNonAnimDoor(u8 taskId)
static void Task_ExitNonDoor(u8 taskId)
{
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 0:
FreezeObjectEvents();
ScriptContext2_Enable();
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
break;
case 1:
if (WaitForWeatherFadeIn())
@@ -443,7 +446,7 @@ bool8 FieldCB_ReturnToFieldOpenStartMenu(void)
return FALSE;
}
-static void task_mpl_807E3C8(u8 taskId)
+static void Task_ReturnToFieldNoScript(u8 taskId)
{
if (WaitForWeatherFadeIn() == 1)
{
@@ -453,19 +456,19 @@ static void task_mpl_807E3C8(u8 taskId)
}
}
-void sub_80AF6D4(void)
+void FieldCB_ReturnToFieldNoScript(void)
{
ScriptContext2_Enable();
FadeInFromBlack();
- CreateTask(task_mpl_807E3C8, 10);
+ CreateTask(Task_ReturnToFieldNoScript, 10);
}
-void sub_80AF6F0(void)
+void FieldCB_ReturnToFieldNoScriptCheckMusic(void)
{
ScriptContext2_Enable();
Overworld_PlaySpecialMapMusic();
FadeInFromBlack();
- CreateTask(task_mpl_807E3C8, 10);
+ CreateTask(Task_ReturnToFieldNoScript, 10);
}
static bool32 PaletteFadeActive(void)
@@ -543,7 +546,9 @@ void DoLavaridgeGym1FWarp(void)
StartLavaridgeGym1FWarp(10);
}
-// Warp from a teleporting tile, e.g. in Aqua Hideout (For the move Teleport see FldEff_TeleportWarpOut)
+// DoSpinEnterWarp but with a fade out
+// Screen fades out to exit current map, player spins down from top to enter new map
+// Used by teleporting tiles, e.g. in Aqua Hideout (For the move Teleport see FldEff_TeleportWarpOut)
void DoTeleportTileWarp(void)
{
ScriptContext2_Enable();
@@ -551,7 +556,7 @@ void DoTeleportTileWarp(void)
WarpFadeOutScreen();
PlaySE(SE_WARP_IN);
CreateTask(Task_WarpAndLoadMap, 10);
- gFieldCallback = FieldCB_TeleportTileWarpExit;
+ gFieldCallback = FieldCB_SpinEnterWarp;
}
void DoMossdeepGymWarp(void)
@@ -574,8 +579,6 @@ void DoPortholeWarp(void)
gFieldCallback = FieldCB_ShowPortholeView;
}
-#define tState data[0]
-
static void Task_DoCableClubWarp(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -598,8 +601,6 @@ static void Task_DoCableClubWarp(u8 taskId)
}
}
-#undef tState
-
void DoCableClubWarp(void)
{
ScriptContext2_Enable();
@@ -613,20 +614,20 @@ static void Task_ReturnToWorldFromLinkRoom(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- switch (data[0])
+ switch (tState)
{
case 0:
ClearLinkCallback_2();
FadeScreen(FADE_TO_BLACK, 0);
TryFadeOutOldMapMusic();
PlaySE(SE_EXIT);
- data[0]++;
+ tState++;
break;
case 1:
if (!PaletteFadeActive() && BGMusicStopped())
{
SetCloseLinkCallback();
- data[0]++;
+ tState++;
}
break;
case 2:
@@ -649,12 +650,12 @@ static void Task_WarpAndLoadMap(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
FreezeObjectEvents();
ScriptContext2_Enable();
- task->data[0]++;
+ task->tState++;
break;
case 1:
if (!PaletteFadeActive())
@@ -665,7 +666,7 @@ static void Task_WarpAndLoadMap(u8 taskId)
task->data[1] = 1;
}
if (BGMusicStopped())
- task->data[0]++;
+ task->tState++;
}
break;
case 2:
@@ -682,14 +683,14 @@ static void Task_DoDoorWarp(u8 taskId)
s16 *x = &task->data[2];
s16 *y = &task->data[3];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
FreezeObjectEvents();
PlayerGetDestCoords(x, y);
PlaySE(GetDoorSoundEffect(*x, *y - 1));
task->data[1] = FieldAnimateDoorOpen(*x, *y - 1);
- task->data[0] = 1;
+ task->tState = 1;
break;
case 1:
if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE)
@@ -699,7 +700,7 @@ static void Task_DoDoorWarp(u8 taskId)
ObjectEventClearHeldMovementIfActive(&gObjectEvents[objEventId]);
objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0);
ObjectEventSetHeldMovement(&gObjectEvents[objEventId], MOVEMENT_ACTION_WALK_NORMAL_UP);
- task->data[0] = 2;
+ task->tState = 2;
}
break;
case 2:
@@ -710,20 +711,20 @@ static void Task_DoDoorWarp(u8 taskId)
objEventId = GetObjectEventIdByLocalIdAndMap(OBJ_EVENT_ID_PLAYER, 0, 0);
ObjectEventClearHeldMovementIfFinished(&gObjectEvents[objEventId]);
SetPlayerVisibility(FALSE);
- task->data[0] = 3;
+ task->tState = 3;
}
break;
case 3:
if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE)
{
- task->data[0] = 4;
+ task->tState = 4;
}
break;
case 4:
TryFadeOutOldMapMusic();
WarpFadeOutScreen();
PlayRainStoppingSoundEffect();
- task->data[0] = 0;
+ task->tState = 0;
task->func = Task_WarpAndLoadMap;
break;
}
@@ -733,17 +734,17 @@ static void Task_DoContestHallWarp(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
FreezeObjectEvents();
ScriptContext2_Enable();
- task->data[0]++;
+ task->tState++;
break;
case 1:
if (!PaletteFadeActive() && BGMusicStopped())
{
- task->data[0]++;
+ task->tState++;
}
break;
case 2:
@@ -850,22 +851,22 @@ static void UpdateFlashLevelEffect(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- switch (data[0])
+ switch (tState)
{
case 0:
SetFlashScanlineEffectWindowBoundaries(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], tFlashCenterX, tFlashCenterY, tCurFlashRadius);
- data[0] = 1;
+ tState = 1;
break;
case 1:
SetFlashScanlineEffectWindowBoundaries(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], tFlashCenterX, tFlashCenterY, tCurFlashRadius);
- data[0] = 0;
+ tState = 0;
tCurFlashRadius += tFlashRadiusDelta;
if (tCurFlashRadius > tDestFlashRadius)
{
if (tClearScanlineEffect == 1)
{
ScanlineEffect_Stop();
- data[0] = 2;
+ tState = 2;
}
else
{
@@ -884,22 +885,22 @@ static void UpdateOrbFlashEffect(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- switch (data[0])
+ switch (tState)
{
case 0:
SetOrbFlashScanlineEffectWindowBoundaries(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], tFlashCenterX, tFlashCenterY, tCurFlashRadius);
- data[0] = 1;
+ tState = 1;
break;
case 1:
SetOrbFlashScanlineEffectWindowBoundaries(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], tFlashCenterX, tFlashCenterY, tCurFlashRadius);
- data[0] = 0;
+ tState = 0;
tCurFlashRadius += tFlashRadiusDelta;
if (tCurFlashRadius > tDestFlashRadius)
{
if (tClearScanlineEffect == 1)
{
ScanlineEffect_Stop();
- data[0] = 2;
+ tState = 2;
}
else
{
@@ -914,7 +915,7 @@ static void UpdateOrbFlashEffect(u8 taskId)
}
}
-static void sub_80AFF90(u8 taskId)
+static void Task_WaitForFlashUpdate(u8 taskId)
{
if (!FuncIsActiveTask(UpdateFlashLevelEffect))
{
@@ -923,13 +924,13 @@ static void sub_80AFF90(u8 taskId)
}
}
-static void sub_80AFFB8(void)
+static void StartWaitForFlashUpdate(void)
{
- if (!FuncIsActiveTask(sub_80AFF90))
- CreateTask(sub_80AFF90, 80);
+ if (!FuncIsActiveTask(Task_WaitForFlashUpdate))
+ CreateTask(Task_WaitForFlashUpdate, 80);
}
-static u8 sub_80AFFDC(s32 centerX, s32 centerY, s32 initialFlashRadius, s32 destFlashRadius, s32 clearScanlineEffect, u8 delta)
+static u8 StartUpdateFlashLevelEffect(s32 centerX, s32 centerY, s32 initialFlashRadius, s32 destFlashRadius, s32 clearScanlineEffect, u8 delta)
{
u8 taskId = CreateTask(UpdateFlashLevelEffect, 80);
s16 *data = gTasks[taskId].data;
@@ -948,7 +949,7 @@ static u8 sub_80AFFDC(s32 centerX, s32 centerY, s32 initialFlashRadius, s32 dest
return taskId;
}
-static u8 sub_80B003C(s32 centerX, s32 centerY, s32 initialFlashRadius, s32 destFlashRadius, s32 clearScanlineEffect, u8 delta)
+static u8 StartUpdateOrbFlashEffect(s32 centerX, s32 centerY, s32 initialFlashRadius, s32 destFlashRadius, s32 clearScanlineEffect, u8 delta)
{
u8 taskId = CreateTask(UpdateOrbFlashEffect, 80);
s16 *data = gTasks[taskId].data;
@@ -972,14 +973,15 @@ static u8 sub_80B003C(s32 centerX, s32 centerY, s32 initialFlashRadius, s32 dest
#undef tFlashRadiusDelta
#undef tClearScanlineEffect
+// A higher flashLevel value is a smaller flash radius (more darkness). 0 is full brightness
void AnimateFlash(u8 flashLevel)
{
u8 curFlashLevel = Overworld_GetFlashLevel();
- u8 value = 0;
+ bool8 fullBrightness = FALSE;
if (!flashLevel)
- value = 1;
- sub_80AFFDC(DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, sFlashLevelPixelRadii[curFlashLevel], sFlashLevelPixelRadii[flashLevel], value, 1);
- sub_80AFFB8();
+ fullBrightness = TRUE;
+ StartUpdateFlashLevelEffect(DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, sFlashLevelPixelRadii[curFlashLevel], sFlashLevelPixelRadii[flashLevel], fullBrightness, 1);
+ StartWaitForFlashUpdate();
ScriptContext2_Enable();
}
@@ -998,18 +1000,18 @@ void WriteBattlePyramidViewScanlineEffectBuffer(void)
CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480);
}
-static void Task_TeleportTileWarpExit(u8 taskId)
+static void Task_SpinEnterWarp(u8 taskId)
{
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 0:
FreezeObjectEvents();
ScriptContext2_Enable();
- sub_808D194();
- gTasks[taskId].data[0]++;
+ DoPlayerSpinEntrance();
+ gTasks[taskId].tState++;
break;
case 1:
- if (WaitForWeatherFadeIn() && sub_808D1B4() != TRUE)
+ if (WaitForWeatherFadeIn() && IsPlayerSpinEntranceActive() != TRUE)
{
UnfreezeObjectEvents();
ScriptContext2_Disable();
@@ -1019,29 +1021,29 @@ static void Task_TeleportTileWarpExit(u8 taskId)
}
}
-static void sub_80B01BC(u8 taskId)
+static void Task_SpinExitWarp(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
FreezeObjectEvents();
ScriptContext2_Enable();
PlaySE(SE_WARP_IN);
- sub_808D1C8();
- task->data[0]++;
+ DoPlayerSpinExit();
+ task->tState++;
break;
case 1:
- if (!sub_808D1E8())
+ if (!IsPlayerSpinExitActive())
{
WarpFadeOutScreen();
- task->data[0]++;
+ task->tState++;
}
break;
case 2:
if (!PaletteFadeActive() && BGMusicStopped())
- task->data[0]++;
+ task->tState++;
break;
case 3:
WarpIntoMap();
@@ -1051,18 +1053,22 @@ static void sub_80B01BC(u8 taskId)
}
}
-void sub_80B0244(void)
+// Only called by an unused function
+// DoTeleportTileWarp is used instead
+void DoSpinEnterWarp(void)
{
ScriptContext2_Enable();
CreateTask(Task_WarpAndLoadMap, 10);
- gFieldCallback = FieldCB_TeleportTileWarpExit;
+ gFieldCallback = FieldCB_SpinEnterWarp;
}
-void sub_80B0268(void)
+// Opposite of DoSpinEnterWarp / DoTeleportTileWarp
+// Player exits current map by spinning up offscreen, enters new map with a fade in
+void DoSpinExitWarp(void)
{
ScriptContext2_Enable();
gFieldCallback = FieldCB_DefaultWarpExit;
- CreateTask(sub_80B01BC, 10);
+ CreateTask(Task_SpinExitWarp, 10);
}
static void LoadOrbEffectPalette(bool8 blueOrb)
@@ -1109,7 +1115,6 @@ static bool8 sub_80B02C8(u16 shakeDir)
return FALSE;
}
-#define tState data[0]
#define tBlueOrb data[1]
#define tCenterX data[2]
#define tCenterY data[3]
@@ -1148,7 +1153,7 @@ static void Task_OrbEffect(u8 taskId)
case 1:
sub_8199DF0(0, PIXEL_FILL(1), 0, 1);
LoadOrbEffectPalette(tBlueOrb);
- sub_80B003C(tCenterX, tCenterY, 1, 160, 1, 2);
+ StartUpdateOrbFlashEffect(tCenterX, tCenterY, 1, 160, 1, 2);
tState = 2;
break;
case 2:
@@ -1243,7 +1248,6 @@ void FadeOutOrbEffect(void)
gTasks[taskId].tState = 6;
}
-#undef tState
#undef tBlueOrb
#undef tCenterX
#undef tCenterY
diff --git a/src/field_specials.c b/src/field_specials.c
index 51030a387..a6831ec5b 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -1414,7 +1414,7 @@ void GiveLeadMonEffortRibbon(void)
bool8 Special_AreLeadMonEVsMaxedOut(void)
{
- if (GetMonEVCount(&gPlayerParty[GetLeadMonIndex()]) >= 510)
+ if (GetMonEVCount(&gPlayerParty[GetLeadMonIndex()]) >= MAX_TOTAL_EVS)
{
return TRUE;
}
@@ -1449,7 +1449,7 @@ void SetShoalItemFlag(u16 unused)
void PutZigzagoonInPlayerParty(void)
{
u16 monData;
- CreateMon(&gPlayerParty[0], SPECIES_ZIGZAGOON, 7, 32, FALSE, 0, OT_ID_PLAYER_ID, 0);
+ CreateMon(&gPlayerParty[0], SPECIES_ZIGZAGOON, 7, USE_RANDOM_IVS, FALSE, 0, OT_ID_PLAYER_ID, 0);
monData = TRUE;
SetMonData(&gPlayerParty[0], MON_DATA_ABILITY_NUM, &monData);
monData = MOVE_TACKLE;
diff --git a/src/frontier_util.c b/src/frontier_util.c
index 5955d9bf7..db5f86aef 100644
--- a/src/frontier_util.c
+++ b/src/frontier_util.c
@@ -129,7 +129,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_RAIKOU,
.heldItem = ITEM_LUM_BERRY,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_MODEST,
.evs = {158, 0, 252, 100, 0, 0},
.moves = {MOVE_THUNDERBOLT, MOVE_CALM_MIND, MOVE_REFLECT, MOVE_REST},
@@ -137,7 +137,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_LATIOS,
.heldItem = ITEM_BRIGHT_POWDER,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_MODEST,
.evs = {252, 0, 252, 6, 0, 0},
.moves = {MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_RECOVER, MOVE_DRAGON_CLAW},
@@ -145,7 +145,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_SNORLAX,
.heldItem = ITEM_CHESTO_BERRY,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_ADAMANT,
.evs = {252, 252, 0, 0, 6, 0},
.moves = {MOVE_CURSE, MOVE_RETURN, MOVE_REST, MOVE_SHADOW_BALL},
@@ -186,7 +186,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_SWAMPERT,
.heldItem = ITEM_LEFTOVERS,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_BRAVE,
.evs = {252, 252, 6, 0, 0, 0},
.moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_MIRROR_COAT},
@@ -194,7 +194,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_METAGROSS,
.heldItem = ITEM_QUICK_CLAW,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_BRAVE,
.evs = {252, 252, 6, 0, 0, 0},
.moves = {MOVE_PSYCHIC, MOVE_METEOR_MASH, MOVE_EARTHQUAKE, MOVE_PROTECT},
@@ -202,7 +202,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_LATIAS,
.heldItem = ITEM_CHESTO_BERRY,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_MODEST,
.evs = {252, 0, 252, 6, 0, 0},
.moves = {MOVE_THUNDERBOLT, MOVE_PSYCHIC, MOVE_CALM_MIND, MOVE_REST},
@@ -243,7 +243,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_ARCANINE,
.heldItem = ITEM_WHITE_HERB,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_HASTY,
.evs = {6, 252, 252, 0, 0, 0},
.moves = {MOVE_OVERHEAT, MOVE_EXTREME_SPEED, MOVE_ROAR, MOVE_PROTECT},
@@ -251,7 +251,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_SLAKING,
.heldItem = ITEM_SCOPE_LENS,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_HARDY,
.evs = {6, 252, 0, 252, 0, 0},
.moves = {MOVE_HYPER_BEAM, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_YAWN},
@@ -259,7 +259,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_SUICUNE,
.heldItem = ITEM_KINGS_ROCK,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_HASTY,
.evs = {252, 0, 252, 6, 0, 0},
.moves = {MOVE_BLIZZARD, MOVE_SURF, MOVE_BITE, MOVE_CALM_MIND},
@@ -300,7 +300,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_UMBREON,
.heldItem = ITEM_CHESTO_BERRY,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_CALM,
.evs = {252, 0, 0, 0, 252, 6},
.moves = {MOVE_DOUBLE_EDGE, MOVE_CONFUSE_RAY, MOVE_REST, MOVE_PSYCHIC},
@@ -308,7 +308,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_GENGAR,
.heldItem = ITEM_LEFTOVERS,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_MODEST,
.evs = {252, 0, 252, 0, 6, 0},
.moves = {MOVE_PSYCHIC, MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_DESTINY_BOND},
@@ -316,7 +316,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_BRELOOM,
.heldItem = ITEM_LUM_BERRY,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_JOLLY,
.evs = {6, 252, 0, 252, 0, 0},
.moves = {MOVE_SPORE, MOVE_FOCUS_PUNCH, MOVE_GIGA_DRAIN, MOVE_HEADBUTT},
@@ -331,7 +331,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_METANG,
.heldItem = ITEM_SITRUS_BERRY,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_BRAVE,
.evs = {0, 252, 252, 0, 6, 0},
.moves = {MOVE_LIGHT_SCREEN, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_METAL_CLAW},
@@ -339,7 +339,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_SKARMORY,
.heldItem = ITEM_SITRUS_BERRY,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_IMPISH,
.evs = {252, 0, 0, 0, 6, 252},
.moves = {MOVE_TOXIC, MOVE_AERIAL_ACE, MOVE_PROTECT, MOVE_STEEL_WING},
@@ -347,7 +347,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_AGGRON,
.heldItem = ITEM_SITRUS_BERRY,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_ADAMANT,
.evs = {0, 252, 0, 0, 252, 6},
.moves = {MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_SOLAR_BEAM, MOVE_DRAGON_CLAW},
@@ -357,7 +357,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_METANG,
.heldItem = ITEM_SITRUS_BERRY,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_BRAVE,
.evs = {0, 252, 252, 0, 6, 0},
.moves = {MOVE_LIGHT_SCREEN, MOVE_PSYCHIC, MOVE_REFLECT, MOVE_METAL_CLAW},
@@ -365,7 +365,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_SKARMORY,
.heldItem = ITEM_SITRUS_BERRY,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_IMPISH,
.evs = {252, 0, 0, 0, 6, 252},
.moves = {MOVE_TOXIC, MOVE_AERIAL_ACE, MOVE_PROTECT, MOVE_STEEL_WING},
@@ -373,7 +373,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_AGGRON,
.heldItem = ITEM_SITRUS_BERRY,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_ADAMANT,
.evs = {0, 252, 0, 0, 252, 6},
.moves = {MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_SOLAR_BEAM, MOVE_DRAGON_CLAW},
@@ -414,7 +414,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_SEVIPER,
.heldItem = ITEM_FOCUS_BAND,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_BOLD,
.evs = {252, 0, 0, 0, 252, 6},
.moves = {MOVE_SWAGGER, MOVE_CRUNCH, MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN},
@@ -422,7 +422,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_STEELIX,
.heldItem = ITEM_BRIGHT_POWDER,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_BRAVE,
.evs = {252, 0, 0, 0, 6, 252},
.moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_EXPLOSION, MOVE_SCREECH},
@@ -430,7 +430,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_GYARADOS,
.heldItem = ITEM_CHESTO_BERRY,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_ADAMANT,
.evs = {252, 6, 0, 0, 0, 252},
.moves = {MOVE_DRAGON_DANCE, MOVE_RETURN, MOVE_ROAR, MOVE_REST},
@@ -471,7 +471,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_ARTICUNO,
.heldItem = ITEM_SCOPE_LENS,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_MILD,
.evs = {6, 0, 252, 252, 0, 0},
.moves = {MOVE_BLIZZARD, MOVE_WATER_PULSE, MOVE_AERIAL_ACE, MOVE_REFLECT},
@@ -479,7 +479,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_ZAPDOS,
.heldItem = ITEM_LUM_BERRY,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_MILD,
.evs = {6, 0, 252, 252, 0, 0},
.moves = {MOVE_THUNDER, MOVE_DETECT, MOVE_DRILL_PECK, MOVE_LIGHT_SCREEN},
@@ -487,7 +487,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ
{
.species = SPECIES_MOLTRES,
.heldItem = ITEM_BRIGHT_POWDER,
- .fixedIV = 31,
+ .fixedIV = MAX_PER_STAT_IVS,
.nature = NATURE_MILD,
.evs = {6, 0, 252, 252, 0, 0},
.moves = {MOVE_FIRE_BLAST, MOVE_HYPER_BEAM, MOVE_AERIAL_ACE, MOVE_SAFEGUARD},
diff --git a/src/graphics.c b/src/graphics.c
index 3973c1507..aa8d5c249 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -867,8 +867,8 @@ const u32 gBattleAnimSpriteGfx_Confetti[] = INCBIN_U32("graphics/battle_anims/sp
const u32 gBattleAnimSpritePal_Confetti[] = INCBIN_U32("graphics/battle_anims/sprites/confetti.gbapal.lz");
const u32 gSubstituteDollPal[] = INCBIN_U32("graphics/battle_anims/sprites/substitute.gbapal.lz");
-const u32 gSubstituteDollGfx[] = INCBIN_U32("graphics/battle_anims/sprites/substitute.4bpp.lz");
-const u32 gSubstituteDollTilemap[] = INCBIN_U32("graphics/battle_anims/sprites/substitute.bin.lz");
+const u32 gSubstituteDollFrontGfx[] = INCBIN_U32("graphics/battle_anims/sprites/substitute.4bpp.lz");
+const u32 gSubstituteDollBackGfx[] = INCBIN_U32("graphics/battle_anims/sprites/substitute_back.4bpp.lz");
const u32 gBattleAnimSpriteGfx_GreenStar[] = INCBIN_U32("graphics/battle_anims/sprites/green_star.4bpp.lz");
const u32 gBattleAnimSpritePal_GreenStar[] = INCBIN_U32("graphics/battle_anims/sprites/green_star.gbapal.lz");
diff --git a/src/item_menu.c b/src/item_menu.c
index 80035b945..931cba2bf 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -41,7 +41,6 @@
#include "shop.h"
#include "sound.h"
#include "sprite.h"
-#include "string.h"
#include "strings.h"
#include "string_util.h"
#include "task.h"
diff --git a/src/item_use.c b/src/item_use.c
index 9ab755a5e..df6a35bc9 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -53,7 +53,7 @@ static bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *, u8);
static u8 GetDirectionToHiddenItem(s16 distanceX, s16 distanceY);
static void PlayerFaceHiddenItem(u8 a);
static void CheckForHiddenItemsInMapConnection(u8 taskId);
-static void sub_80FDC00(u8 taskId);
+static void Task_OpenRegisteredPokeblockCase(u8 taskId);
static void ItemUseOnFieldCB_Bike(u8 taskId);
static void ItemUseOnFieldCB_Rod(u8);
static void ItemUseOnFieldCB_Itemfinder(u8);
@@ -69,7 +69,7 @@ static void Task_StartUseRepel(u8 taskId);
static void Task_UseRepel(u8 taskId);
static void Task_CloseCantUseKeyItemMessage(u8 taskId);
static void SetDistanceOfClosestHiddenItem(u8 taskId, s16 x, s16 y);
-static void CB2_OpenPokeblockCaseOnField(void);
+static void CB2_OpenPokeblockFromBag(void);
// EWRAM variables
EWRAM_DATA static void(*sItemUseOnFieldCB)(u8 taskId) = NULL;
@@ -615,23 +615,23 @@ void ItemUseOutOfBattle_PokeblockCase(u8 taskId)
}
else if (gTasks[taskId].tUsingRegisteredKeyItem != TRUE)
{
- gBagMenu->exitCallback = CB2_OpenPokeblockCaseOnField;
+ gBagMenu->exitCallback = CB2_OpenPokeblockFromBag;
Task_FadeAndCloseBagMenu(taskId);
}
else
{
- gFieldCallback = sub_80AF6D4;
+ gFieldCallback = FieldCB_ReturnToFieldNoScript;
FadeScreen(FADE_TO_BLACK, 0);
- gTasks[taskId].func = sub_80FDC00;
+ gTasks[taskId].func = Task_OpenRegisteredPokeblockCase;
}
}
-static void CB2_OpenPokeblockCaseOnField(void)
+static void CB2_OpenPokeblockFromBag(void)
{
OpenPokeblockCase(PBLOCK_CASE_FIELD, CB2_ReturnToBagMenuPocket);
}
-static void sub_80FDC00(u8 taskId)
+static void Task_OpenRegisteredPokeblockCase(u8 taskId)
{
if (!gPaletteFade.active)
{
diff --git a/src/link.c b/src/link.c
index 9fd35a10b..dffb5b4cd 100644
--- a/src/link.c
+++ b/src/link.c
@@ -1489,7 +1489,7 @@ static void LinkCB_WaitCloseLink(void)
if (count == linkPlayerCount)
{
// All ready, close link
- gBattleTypeFlags &= ~BATTLE_TYPE_20;
+ gBattleTypeFlags &= ~BATTLE_TYPE_LINK_IN_BATTLE;
gLinkVSyncDisabled = TRUE;
CloseLink();
gLinkCallback = NULL;
@@ -1551,7 +1551,7 @@ static void LinkCB_WaitCloseLinkWithJP(void)
if (count == linkPlayerCount)
{
// All ready, close link
- gBattleTypeFlags &= ~BATTLE_TYPE_20;
+ gBattleTypeFlags &= ~BATTLE_TYPE_LINK_IN_BATTLE;
gLinkVSyncDisabled = TRUE;
CloseLink();
gLinkCallback = NULL;
diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c
index 5e0ef0aa4..b7713fa3f 100644
--- a/src/link_rfu_2.c
+++ b/src/link_rfu_2.c
@@ -1380,7 +1380,7 @@ static void WaitAllReadyToCloseLink(void)
if (count == playerCount)
{
// All ready, close link
- gBattleTypeFlags &= ~BATTLE_TYPE_20;
+ gBattleTypeFlags &= ~BATTLE_TYPE_LINK_IN_BATTLE;
if (Rfu.parentChild == MODE_CHILD)
{
Rfu.errorState = 3;
diff --git a/src/main.c b/src/main.c
index 9fd1d0a35..f0ad4ce94 100644
--- a/src/main.c
+++ b/src/main.c
@@ -75,7 +75,7 @@ static EWRAM_DATA u16 gTrainerId = 0;
static void UpdateLinkAndCallCallbacks(void);
static void InitMainCallbacks(void);
static void CallCallbacks(void);
-//static void SeedRngWithRtc(void);
+static void SeedRngWithRtc(void);
static void ReadKeys(void);
void InitIntrHandlers(void);
static void WaitForVBlank(void);
@@ -102,7 +102,9 @@ void AgbMain()
CheckForFlashMemory();
InitMainCallbacks();
InitMapMusic();
- //SeedRngWithRtc(); see comment at SeedRngWithRtc declaration below
+#ifdef BUGFIX
+ SeedRngWithRtc(); // see comment at SeedRngWithRtc definition below
+#endif
ClearDma3Requests();
ResetBgs();
SetDefaultFontsPointer();
@@ -213,13 +215,15 @@ void EnableVCountIntrAtLine150(void)
EnableInterrupts(INTR_FLAG_VCOUNT);
}
-// oops! FRLG commented this out to remove RTC, however Emerald didnt undo this!
-//static void SeedRngWithRtc(void)
-//{
-// u32 seed = RtcGetMinuteCount();
-// seed = (seed >> 16) ^ (seed & 0xFFFF);
-// SeedRng(seed);
-//}
+// FRLG commented this out to remove RTC, however Emerald didn't undo this!
+#ifdef BUGFIX
+static void SeedRngWithRtc(void)
+{
+ u32 seed = RtcGetMinuteCount();
+ seed = (seed >> 16) ^ (seed & 0xFFFF);
+ SeedRng(seed);
+}
+#endif
void InitKeys(void)
{
diff --git a/src/main_menu.c b/src/main_menu.c
index 5b39b6d45..2c27b673a 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -28,7 +28,6 @@
#include "scanline_effect.h"
#include "sound.h"
#include "sprite.h"
-#include "string.h"
#include "strings.h"
#include "string_util.h"
#include "task.h"
diff --git a/src/party_menu.c b/src/party_menu.c
index f045a9a47..8aca27f47 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -1221,16 +1221,16 @@ static void HandleChooseMonSelection(u8 taskId, s8 *slotPtr)
}
else
{
- switch (gPartyMenu.action - 3)
+ switch (gPartyMenu.action)
{
- case PARTY_ACTION_SOFTBOILED - 3:
+ case PARTY_ACTION_SOFTBOILED:
if (IsSelectedMonNotEgg((u8*)slotPtr))
{
PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]);
Task_TryUseSoftboiledOnPartyMon(taskId);
}
break;
- case PARTY_ACTION_USE_ITEM - 3:
+ case PARTY_ACTION_USE_ITEM:
if (IsSelectedMonNotEgg((u8*)slotPtr))
{
if (gPartyMenu.menuType == PARTY_MENU_TYPE_IN_BATTLE)
@@ -1240,7 +1240,7 @@ static void HandleChooseMonSelection(u8 taskId, s8 *slotPtr)
gItemUseCB(taskId, Task_ClosePartyMenuAfterText);
}
break;
- case PARTY_ACTION_MOVE_TUTOR - 3:
+ case PARTY_ACTION_MOVE_TUTOR:
if (IsSelectedMonNotEgg((u8*)slotPtr))
{
PlaySE(SE_SELECT);
@@ -1248,7 +1248,7 @@ static void HandleChooseMonSelection(u8 taskId, s8 *slotPtr)
TryTutorSelectedMon(taskId);
}
break;
- case PARTY_ACTION_GIVE_MAILBOX_MAIL - 3:
+ case PARTY_ACTION_GIVE_MAILBOX_MAIL:
if (IsSelectedMonNotEgg((u8*)slotPtr))
{
PlaySE(SE_SELECT);
@@ -1256,8 +1256,8 @@ static void HandleChooseMonSelection(u8 taskId, s8 *slotPtr)
TryGiveMailToSelectedMon(taskId);
}
break;
- case PARTY_ACTION_GIVE_ITEM - 3:
- case PARTY_ACTION_GIVE_PC_ITEM - 3:
+ case PARTY_ACTION_GIVE_ITEM:
+ case PARTY_ACTION_GIVE_PC_ITEM:
if (IsSelectedMonNotEgg((u8*)slotPtr))
{
PlaySE(SE_SELECT);
@@ -1265,23 +1265,23 @@ static void HandleChooseMonSelection(u8 taskId, s8 *slotPtr)
TryGiveItemOrMailToSelectedMon(taskId);
}
break;
- case PARTY_ACTION_SWITCH - 3:
+ case PARTY_ACTION_SWITCH:
PlaySE(SE_SELECT);
SwitchSelectedMons(taskId);
break;
- case PARTY_ACTION_CHOOSE_AND_CLOSE - 3:
+ case PARTY_ACTION_CHOOSE_AND_CLOSE:
PlaySE(SE_SELECT);
Task_ClosePartyMenu(taskId);
break;
- case PARTY_ACTION_MINIGAME - 3:
+ case PARTY_ACTION_MINIGAME:
if (IsSelectedMonNotEgg((u8*)slotPtr))
{
TryEnterMonForMinigame(taskId, (u8)*slotPtr);
}
break;
default:
- case PARTY_ACTION_ABILITY_PREVENTS - 3:
- case PARTY_ACTION_SWITCHING - 3:
+ case PARTY_ACTION_ABILITY_PREVENTS:
+ case PARTY_ACTION_SWITCHING:
PlaySE(SE_SELECT);
Task_TryCreateSelectionWindow(taskId);
break;
@@ -1961,9 +1961,9 @@ static u8 CanMonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor)
if (GetMonData(mon, MON_DATA_IS_EGG))
return CANNOT_LEARN_MOVE_IS_EGG;
- if (item >= ITEM_TM01_FOCUS_PUNCH)
+ if (item >= ITEM_TM01)
{
- if (!CanMonLearnTMHM(mon, item - ITEM_TM01_FOCUS_PUNCH))
+ if (!CanMonLearnTMHM(mon, item - ITEM_TM01))
return CANNOT_LEARN_MOVE;
else
move = ItemIdToBattleMoveId(item);
@@ -4612,7 +4612,7 @@ void ItemUseCB_PPUp(u8 taskId, TaskFunc task)
u16 ItemIdToBattleMoveId(u16 item)
{
- u16 tmNumber = item - ITEM_TM01_FOCUS_PUNCH;
+ u16 tmNumber = item - ITEM_TM01;
return sTMHMMoves[tmNumber];
}
diff --git a/src/pokeball.c b/src/pokeball.c
index 92081a296..916c86287 100644
--- a/src/pokeball.c
+++ b/src/pokeball.c
@@ -1133,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/pokedex.c b/src/pokedex.c
index 691abd649..6aa347994 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -3042,7 +3042,7 @@ static void SpriteCB_PokedexListMonSprite(struct Sprite *sprite)
if (gSineTable[sprite->data[5] + 64] != 0)
var = 0x10000 / gSineTable[sprite->data[5] + 64];
else
- var = 0xFFFF;
+ var = 0;
#else
var = 0x10000 / gSineTable[sprite->data[5] + 64];
#endif //UBFIX
diff --git a/src/pokemon.c b/src/pokemon.c
index b5eee16b2..5829bbd0a 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -2247,7 +2247,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV,
SetBoxMonData(boxMon, MON_DATA_POKEBALL, &value);
SetBoxMonData(boxMon, MON_DATA_OT_GENDER, &gSaveBlock2Ptr->playerGender);
- if (fixedIV < 32)
+ if (fixedIV < USE_RANDOM_IVS)
{
SetBoxMonData(boxMon, MON_DATA_HP_IV, &fixedIV);
SetBoxMonData(boxMon, MON_DATA_ATK_IV, &fixedIV);
@@ -2261,20 +2261,20 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV,
u32 iv;
value = Random();
- iv = value & 0x1F;
+ iv = value & MAX_IV_MASK;
SetBoxMonData(boxMon, MON_DATA_HP_IV, &iv);
- iv = (value & 0x3E0) >> 5;
+ iv = (value & (MAX_IV_MASK << 5)) >> 5;
SetBoxMonData(boxMon, MON_DATA_ATK_IV, &iv);
- iv = (value & 0x7C00) >> 10;
+ iv = (value & (MAX_IV_MASK << 10)) >> 10;
SetBoxMonData(boxMon, MON_DATA_DEF_IV, &iv);
value = Random();
- iv = value & 0x1F;
+ iv = value & MAX_IV_MASK;
SetBoxMonData(boxMon, MON_DATA_SPEED_IV, &iv);
- iv = (value & 0x3E0) >> 5;
+ iv = (value & (MAX_IV_MASK << 5)) >> 5;
SetBoxMonData(boxMon, MON_DATA_SPATK_IV, &iv);
- iv = (value & 0x7C00) >> 10;
+ iv = (value & (MAX_IV_MASK << 10)) >> 10;
SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &iv);
}
@@ -2342,7 +2342,7 @@ void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level)
personality = Random32();
}
while (GetGenderFromSpeciesAndPersonality(species, personality) != MON_MALE);
- CreateMon(mon, species, level, 32, 1, personality, OT_ID_PRESET, otId);
+ CreateMon(mon, species, level, USE_RANDOM_IVS, 1, personality, OT_ID_PRESET, otId);
}
void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality)
@@ -2524,7 +2524,7 @@ void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 m
CreateMon(mon,
src->party[monId].species,
GetFrontierEnemyMonLevel(src->lvlMode - 1),
- 0x1F,
+ MAX_PER_STAT_IVS,
TRUE,
personality,
OT_ID_PRESET,
@@ -2685,7 +2685,7 @@ static u16 GetDeoxysStat(struct Pokemon *mon, s32 statId)
u16 statValue = 0;
u8 nature;
- if (gBattleTypeFlags & BATTLE_TYPE_20 || GetMonData(mon, MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS)
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK_IN_BATTLE || GetMonData(mon, MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS)
return 0;
ivVal = GetMonData(mon, MON_DATA_HP_IV + statId, NULL);
@@ -2729,8 +2729,8 @@ u16 GetUnionRoomTrainerPic(void)
u8 linkId;
u32 arrId;
- if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
- linkId = gUnknown_0203C7B4 ^ 1;
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
+ linkId = gRecordedBattleMultiplayerId ^ 1;
else
linkId = GetMultiplayerId() ^ 1;
@@ -2744,8 +2744,8 @@ u16 GetUnionRoomTrainerClass(void)
u8 linkId;
u32 arrId;
- if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
- linkId = gUnknown_0203C7B4 ^ 1;
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
+ linkId = gRecordedBattleMultiplayerId ^ 1;
else
linkId = GetMultiplayerId() ^ 1;
@@ -2761,7 +2761,7 @@ void CreateObedientEnemyMon(void)
s32 itemId = gSpecialVar_0x8006;
ZeroEnemyPartyMons();
- CreateObedientMon(&gEnemyParty[0], species, level, 32, 0, 0, 0, 0);
+ CreateObedientMon(&gEnemyParty[0], species, level, USE_RANDOM_IVS, 0, 0, 0, 0);
if (itemId)
{
u8 heldItem[2];
@@ -2859,13 +2859,14 @@ void CalculateMonStats(struct Pokemon *mon)
{
if (currentHP == 0 && oldMaxHP == 0)
currentHP = newMaxHP;
- else if (currentHP != 0)
+ 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;
}
@@ -3366,7 +3367,7 @@ u8 CountAliveMonsInBattle(u8 caseId)
static bool8 ShouldGetStatBadgeBoost(u16 badgeFlag, u8 battlerId)
{
- if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_x2000000 | BATTLE_TYPE_FRONTIER))
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_FRONTIER))
return FALSE;
else if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
return FALSE;
@@ -4314,12 +4315,12 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg)
case MON_DATA_IVS:
{
u32 ivs = data[0] | (data[1] << 8) | (data[2] << 16) | (data[3] << 24);
- substruct3->hpIV = ivs & 0x1F;
- substruct3->attackIV = (ivs >> 5) & 0x1F;
- substruct3->defenseIV = (ivs >> 10) & 0x1F;
- substruct3->speedIV = (ivs >> 15) & 0x1F;
- substruct3->spAttackIV = (ivs >> 20) & 0x1F;
- substruct3->spDefenseIV = (ivs >> 25) & 0x1F;
+ substruct3->hpIV = ivs & MAX_IV_MASK;
+ substruct3->attackIV = (ivs >> 5) & MAX_IV_MASK;
+ substruct3->defenseIV = (ivs >> 10) & MAX_IV_MASK;
+ substruct3->speedIV = (ivs >> 15) & MAX_IV_MASK;
+ substruct3->spAttackIV = (ivs >> 20) & MAX_IV_MASK;
+ substruct3->spDefenseIV = (ivs >> 25) & MAX_IV_MASK;
break;
}
default:
@@ -6266,7 +6267,7 @@ u16 GetBattleBGM(void)
return MUS_VS_KYOGRE_GROUDON;
else if (gBattleTypeFlags & BATTLE_TYPE_REGI)
return MUS_VS_REGI;
- else if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ else if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
return MUS_VS_TRAINER;
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
@@ -6626,7 +6627,7 @@ static void Task_PokemonSummaryAnimateAfterDelay(u8 taskId)
void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3)
{
- if (gHitMarker & HITMARKER_NO_ANIMATIONS && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)))
+ if (gHitMarker & HITMARKER_NO_ANIMATIONS && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)))
DoMonFrontSpriteAnimation(sprite, species, noCry, arg3 | 0x80);
else
DoMonFrontSpriteAnimation(sprite, species, noCry, arg3);
@@ -6704,7 +6705,7 @@ void StopPokemonAnimationDelayTask(void)
void BattleAnimateBackSprite(struct Sprite* sprite, u16 species)
{
- if (gHitMarker & HITMARKER_NO_ANIMATIONS && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)))
+ if (gHitMarker & HITMARKER_NO_ANIMATIONS && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)))
{
sprite->callback = SpriteCallbackDummy;
}
diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c
index 58c174263..9c8eaca9a 100644
--- a/src/pokemon_animation.c
+++ b/src/pokemon_animation.c
@@ -6,6 +6,7 @@
#include "task.h"
#include "trig.h"
#include "util.h"
+#include "data.h"
#include "constants/battle_anim.h"
#include "constants/rgb.h"
@@ -1046,7 +1047,6 @@ static void sub_817F77C(struct Sprite *sprite)
{
// 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->affineAnimPaused = FALSE;
sprite->affineAnims = gUnknown_082FF694;
}
#endif // BUGFIX
diff --git a/src/recorded_battle.c b/src/recorded_battle.c
index 881c2d3ec..6fcbe04f1 100644
--- a/src/recorded_battle.c
+++ b/src/recorded_battle.c
@@ -55,7 +55,7 @@ struct RecordedBattleSave
u16 opponentA;
u16 opponentB;
u16 partnerId;
- u16 field_4FA;
+ u16 multiplayerId;
u8 lvlMode;
u8 frontierFacility;
u8 frontierBrainSymbol;
@@ -83,7 +83,7 @@ EWRAM_DATA static u8 sLvlMode = 0;
EWRAM_DATA static u8 sFrontierFacility = 0;
EWRAM_DATA static u8 sFrontierBrainSymbol = 0;
EWRAM_DATA static MainCallback sCallback2_AfterRecordedBattle = NULL;
-EWRAM_DATA u8 gUnknown_0203C7B4 = 0;
+EWRAM_DATA u8 gRecordedBattleMultiplayerId = 0;
EWRAM_DATA static u8 sUnknown_0203C7B5 = 0;
EWRAM_DATA static u8 sBattleScene = 0;
EWRAM_DATA static u8 sTextSpeed = 0;
@@ -154,7 +154,7 @@ void sub_8184E58(void)
u8 linkPlayersCount;
u8 text[30];
- gUnknown_0203C7B4 = GetMultiplayerId();
+ gRecordedBattleMultiplayerId = GetMultiplayerId();
linkPlayersCount = GetLinkPlayerCount();
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
@@ -362,11 +362,14 @@ bool32 MoveRecordedBattleToSaveData(void)
if (sBattleFlags & BATTLE_TYPE_LINK)
{
- battleSave->battleFlags = (sBattleFlags & ~(BATTLE_TYPE_LINK | BATTLE_TYPE_20)) | BATTLE_TYPE_x2000000;
+ battleSave->battleFlags = (sBattleFlags & ~(BATTLE_TYPE_LINK | BATTLE_TYPE_LINK_IN_BATTLE)) | BATTLE_TYPE_RECORDED_LINK;
+ // BATTLE_TYPE_RECORDED_IS_MASTER set indicates battle will play
+ // out from player's perspective (i.e. player with back to camera)
+ // Otherwise player will appear on "opponent" side
if (sBattleFlags & BATTLE_TYPE_IS_MASTER)
{
- battleSave->battleFlags |= BATTLE_TYPE_x80000000;
+ battleSave->battleFlags |= BATTLE_TYPE_RECORDED_IS_MASTER;
}
else if (sBattleFlags & BATTLE_TYPE_MULTI)
{
@@ -374,13 +377,13 @@ bool32 MoveRecordedBattleToSaveData(void)
{
case 0:
case 2:
- if (!(sPlayers[gUnknown_0203C7B4].battlerId & 1))
- battleSave->battleFlags |= BATTLE_TYPE_x80000000;
+ if (!(sPlayers[gRecordedBattleMultiplayerId].battlerId & 1))
+ battleSave->battleFlags |= BATTLE_TYPE_RECORDED_IS_MASTER;
break;
case 1:
case 3:
- if ((sPlayers[gUnknown_0203C7B4].battlerId & 1))
- battleSave->battleFlags |= BATTLE_TYPE_x80000000;
+ if ((sPlayers[gRecordedBattleMultiplayerId].battlerId & 1))
+ battleSave->battleFlags |= BATTLE_TYPE_RECORDED_IS_MASTER;
break;
}
}
@@ -393,7 +396,7 @@ bool32 MoveRecordedBattleToSaveData(void)
battleSave->opponentA = gTrainerBattleOpponent_A;
battleSave->opponentB = gTrainerBattleOpponent_B;
battleSave->partnerId = gPartnerTrainerId;
- battleSave->field_4FA = gUnknown_0203C7B4;
+ battleSave->multiplayerId = gRecordedBattleMultiplayerId;
battleSave->lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
battleSave->frontierFacility = sFrontierFacility;
battleSave->frontierBrainSymbol = sFrontierBrainSymbol;
@@ -573,7 +576,7 @@ static void SetVariablesForRecordedBattle(struct RecordedBattleSave *src)
gTrainerBattleOpponent_A = src->opponentA;
gTrainerBattleOpponent_B = src->opponentB;
gPartnerTrainerId = src->partnerId;
- gUnknown_0203C7B4 = src->field_4FA;
+ gRecordedBattleMultiplayerId = src->multiplayerId;
sLvlMode = gSaveBlock2Ptr->frontier.lvlMode;
sFrontierFacility = src->frontierFacility;
sFrontierBrainSymbol = src->frontierBrainSymbol;
@@ -715,7 +718,7 @@ void RecordedBattle_CopyBattlerMoves(void)
if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT)
return;
- if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
return;
if (sUnknown_0203C7AC == 2)
return;
@@ -732,7 +735,7 @@ void sub_818603C(u8 arg0)
{
s32 battlerId, j, k;
- if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
return;
for (battlerId = 0; battlerId < gBattlersCount; battlerId++)
diff --git a/src/safari_zone.c b/src/safari_zone.c
index e8827e124..3b86bc464 100644
--- a/src/safari_zone.c
+++ b/src/safari_zone.c
@@ -107,7 +107,7 @@ void CB2_EndSafariBattle(void)
{
ScriptContext2_RunNewScript(SafariZone_EventScript_OutOfBallsMidBattle);
WarpIntoMap();
- gFieldCallback = sub_80AF6F0;
+ gFieldCallback = FieldCB_ReturnToFieldNoScriptCheckMusic;
SetMainCallback2(CB2_LoadMap);
}
else if (gBattleOutcome == B_OUTCOME_CAUGHT)
diff --git a/src/scrcmd.c b/src/scrcmd.c
index ef0b3f86b..f36a44187 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -2235,7 +2235,9 @@ bool8 ScrCmd_gotoram(struct ScriptContext *ctx)
return FALSE;
}
-bool8 ScrCmd_warpD1(struct ScriptContext *ctx)
+// Unused
+// For the warp used by the Aqua Hideout, see DoTeleportTileWarp
+bool8 ScrCmd_warpspinenter(struct ScriptContext *ctx)
{
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
@@ -2244,8 +2246,8 @@ bool8 ScrCmd_warpD1(struct ScriptContext *ctx)
u16 y = VarGet(ScriptReadHalfword(ctx));
SetWarpDestination(mapGroup, mapNum, warpId, x, y);
- sub_808D074(GetPlayerFacingDirection());
- sub_80B0244();
+ SetSpinStartFacingDir(GetPlayerFacingDirection());
+ DoSpinEnterWarp();
ResetInitialPlayerAvatarState();
return TRUE;
}
diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c
index c9a2127ac..ad1a55230 100755
--- a/src/script_pokemon_util.c
+++ b/src/script_pokemon_util.c
@@ -66,7 +66,7 @@ u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 u
u8 heldItem[2];
struct Pokemon mon;
- CreateMon(&mon, species, level, 32, 0, 0, OT_ID_PLAYER_ID, 0);
+ CreateMon(&mon, species, level, USE_RANDOM_IVS, 0, 0, OT_ID_PLAYER_ID, 0);
heldItem[0] = item;
heldItem[1] = item >> 8;
SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem);
@@ -139,7 +139,7 @@ void CreateScriptedWildMon(u16 species, u8 level, u16 item)
u8 heldItem[2];
ZeroEnemyPartyMons();
- CreateMon(&gEnemyParty[0], species, level, 32, 0, 0, OT_ID_PLAYER_ID, 0);
+ CreateMon(&gEnemyParty[0], species, level, USE_RANDOM_IVS, 0, 0, OT_ID_PLAYER_ID, 0);
if (item)
{
heldItem[0] = item;
diff --git a/src/start_menu.c b/src/start_menu.c
index 35eb53475..bfced1858 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -138,7 +138,7 @@ static bool8 FieldCB_ReturnToFieldStartMenu(void);
static const struct WindowTemplate sSafariBallsWindowTemplate = {0, 1, 1, 9, 4, 0xF, 8};
-static const u8* const sPyramindFloorNames[] =
+static const u8* const sPyramidFloorNames[] =
{
gText_Floor1,
gText_Floor2,
@@ -383,7 +383,7 @@ static void ShowPyramidFloorWindow(void)
PutWindowTilemap(sBattlePyramidFloorWindowId);
DrawStdWindowFrame(sBattlePyramidFloorWindowId, FALSE);
- StringCopy(gStringVar1, sPyramindFloorNames[gSaveBlock2Ptr->frontier.curChallengeBattleNum]);
+ StringCopy(gStringVar1, sPyramidFloorNames[gSaveBlock2Ptr->frontier.curChallengeBattleNum]);
StringExpandPlaceholders(gStringVar4, gText_BattlePyramidFloor);
AddTextPrinterParameterized(sBattlePyramidFloorWindowId, 1, gStringVar4, 0, 1, 0xFF, NULL);
CopyWindowToVram(sBattlePyramidFloorWindowId, 2);
diff --git a/src/trade.c b/src/trade.c
index 6696c23eb..96099cb74 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -379,7 +379,7 @@ static void CB2_CreateTradeMenu(void)
for (i = 0; i < PARTY_SIZE; i++)
{
- CreateMon(&gEnemyParty[i], SPECIES_NONE, 0, 32, FALSE, 0, OT_ID_PLAYER_ID, 0);
+ CreateMon(&gEnemyParty[i], SPECIES_NONE, 0, USE_RANDOM_IVS, FALSE, 0, OT_ID_PLAYER_ID, 0);
}
PrintTradeMessage(TRADE_MSG_STANDBY);
@@ -4436,7 +4436,7 @@ static void _CreateInGameTradePokemon(u8 whichPlayerMon, u8 whichInGameTrade)
u8 isMail;
struct Pokemon *pokemon = &gEnemyParty[0];
- CreateMon(pokemon, inGameTrade->species, level, 32, TRUE, inGameTrade->personality, OT_ID_PRESET, inGameTrade->otId);
+ CreateMon(pokemon, inGameTrade->species, level, USE_RANDOM_IVS, TRUE, inGameTrade->personality, OT_ID_PRESET, inGameTrade->otId);
SetMonData(pokemon, MON_DATA_HP_IV, &inGameTrade->ivs[0]);
SetMonData(pokemon, MON_DATA_ATK_IV, &inGameTrade->ivs[1]);