summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--berry_fix/payload/include/global.fieldmap.h17
-rw-r--r--common_syms/battle_factory_screen.txt2
-rw-r--r--data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc2
-rw-r--r--data/script_cmd_table.inc2
-rw-r--r--docs/bugs_and_glitches.md8
-rw-r--r--graphics/battle_anims/sprites/substitute.binbin2048 -> 0 bytes
-rw-r--r--graphics/battle_anims/sprites/substitute_back.pngbin0 -> 405 bytes
-rw-r--r--graphics/battle_frontier/factory_screen/action_box_left.pngbin0 -> 156 bytes
-rw-r--r--graphics/battle_frontier/factory_screen/action_box_right.pngbin0 -> 134 bytes
-rw-r--r--graphics/battle_frontier/factory_screen/action_highlight_left.pngbin0 -> 165 bytes
-rw-r--r--graphics/battle_frontier/factory_screen/action_highlight_middle.pngbin0 -> 139 bytes
-rw-r--r--graphics/battle_frontier/factory_screen/action_highlight_right.pngbin0 -> 139 bytes
-rw-r--r--graphics/battle_frontier/factory_screen/arrow.pngbin0 -> 167 bytes
-rw-r--r--graphics/battle_frontier/factory_screen/interface.pal (renamed from graphics/unknown/unknown_60F17C.pal)0
-rw-r--r--graphics/battle_frontier/factory_screen/menu_highlight_left.pngbin0 -> 135 bytes
-rw-r--r--graphics/battle_frontier/factory_screen/menu_highlight_right.pngbin0 -> 132 bytes
-rw-r--r--graphics/battle_frontier/factory_screen/mon_pic_bg.bin (renamed from graphics/unknown/unknown_61023C.bin)bin256 -> 256 bytes
-rw-r--r--graphics/battle_frontier/factory_screen/mon_pic_bg.pngbin0 -> 138 bytes
-rw-r--r--graphics/battle_frontier/factory_screen/mon_pic_bg_anim.pngbin0 -> 158 bytes
-rw-r--r--graphics/battle_frontier/factory_screen/pokeball.pngbin0 -> 263 bytes
-rw-r--r--graphics/battle_frontier/factory_screen/pokeball_gray.pal (renamed from graphics/unknown/unknown_60F13C.pal)0
-rw-r--r--graphics/battle_frontier/factory_screen/pokeball_selected.pal (renamed from graphics/unknown/unknown_60F15C.pal)0
-rw-r--r--graphics/battle_frontier/factory_screen/text.pal (renamed from graphics/unknown/unknown_61046C.pal)0
-rw-r--r--graphics/unknown/unknown_60F1BC.pngbin211 -> 0 bytes
-rw-r--r--graphics/unknown/unknown_60F3BC.pngbin115 -> 0 bytes
-rw-r--r--graphics/unknown/unknown_60F43C.pngbin75 -> 0 bytes
-rw-r--r--graphics/unknown/unknown_60F53C.pngbin72 -> 0 bytes
-rw-r--r--graphics/unknown/unknown_60F63C.pngbin99 -> 0 bytes
-rw-r--r--graphics/unknown/unknown_60F6BC.pngbin77 -> 0 bytes
-rw-r--r--graphics/unknown/unknown_60F7BC.pngbin110 -> 0 bytes
-rw-r--r--graphics/unknown/unknown_60F83C.pngbin82 -> 0 bytes
-rw-r--r--graphics/unknown/unknown_60F93C.pngbin82 -> 0 bytes
-rw-r--r--graphics/unknown/unknown_60FA3C.pngbin98 -> 0 bytes
-rw-r--r--graphics/unknown/unknown_61033C.pngbin78 -> 0 bytes
-rw-r--r--graphics/unknown/unknown_61039C.pal19
-rw-r--r--include/battle_controllers.h26
-rw-r--r--include/field_player_avatar.h10
-rw-r--r--include/field_screen_effect.h8
-rw-r--r--include/graphics.h9
-rw-r--r--include/strings.h27
-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.c140
-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.c138
-rw-r--r--src/battle_controller_recorded_player.c138
-rw-r--r--src/battle_controller_safari.c130
-rw-r--r--src/battle_controller_wally.c130
-rw-r--r--src/battle_controllers.c40
-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_setup.c2
-rw-r--r--src/data/decoration/header.h2543
-rw-r--r--src/data/decoration/tilemaps.h171
-rw-r--r--src/data/decoration/tiles.h2
-rw-r--r--src/decoration.c16
-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/graphics.c4
-rwxr-xr-xsrc/item_menu.c1
-rwxr-xr-xsrc/item_use.c14
-rw-r--r--src/main_menu.c1
-rw-r--r--src/safari_zone.c2
-rw-r--r--src/scrcmd.c8
-rw-r--r--tools/gbafix/gbafix.c8
69 files changed, 4135 insertions, 3563 deletions
diff --git a/berry_fix/payload/include/global.fieldmap.h b/berry_fix/payload/include/global.fieldmap.h
index f876e5a56..d5ab0812e 100644
--- a/berry_fix/payload/include/global.fieldmap.h
+++ b/berry_fix/payload/include/global.fieldmap.h
@@ -79,23 +79,16 @@ struct CoordEvent
struct BgEvent
{
- /*0x00*/u16 x;
- /*0x02*/u16 y;
- /*0x04*/u8 elevation;
- /*0x05*/u8 kind;
- /*0x08*/union { // carried over from diego's FR/LG work, seems to be the same struct
- // in gen 3, "kind" (0x3 in BgEvent struct) determines the method to read the union.
+ u16 x, y;
+ u8 elevation;
+ u8 kind; // The "kind" field determines how to access bgUnion union below.
+ union {
u8 *script;
-
- // hidden item type
struct {
u16 item;
- u16 hiddenItemId; // flag offset to determine flag lookup
+ u16 hiddenItemId;
} hiddenItem;
-
- // secret base type
u32 secretBaseId;
-
} bgUnion;
};
diff --git a/common_syms/battle_factory_screen.txt b/common_syms/battle_factory_screen.txt
index 9f6868139..3ddeb6d3b 100644
--- a/common_syms/battle_factory_screen.txt
+++ b/common_syms/battle_factory_screen.txt
@@ -1 +1 @@
-gUnknown_030062E8
+gFactorySelect_CurrentOptionFunc
diff --git a/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc
index 48d2bcc3a..e85697146 100644
--- a/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleFactoryPreBattleRoom/scripts.inc
@@ -168,7 +168,7 @@ BattleFrontier_BattleFactoryPreBattleRoom_EventScript_SwapMons:: @ 8259DF2
fadescreen FADE_TO_BLACK
factory_swapmons
waitstate
- compare VAR_RESULT, 1
+ compare VAR_RESULT, TRUE @ Did player keep current pokemon
goto_if_eq BattleFrontier_BattleFactoryPreBattleRoom_EventScript_EnterBattleRoom
factory_setswapped
msgbox BattleFrontier_BattleFactoryPreBattleRoom_Text_YourSwapIsComplete, MSGBOX_DEFAULT
diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc
index 0971358a1..7edb5c4b7 100644
--- a/data/script_cmd_table.inc
+++ b/data/script_cmd_table.inc
@@ -209,7 +209,7 @@ gScriptCmdTable:: @ 81DB67C
.4byte ScrCmd_checkmonobedience @ 0xce
.4byte ScrCmd_gotoram @ 0xcf
.4byte ScrCmd_nop1 @ 0xd0
- .4byte ScrCmd_warpD1 @ 0xd1
+ .4byte ScrCmd_warpspinenter @ 0xd1
.4byte ScrCmd_setmonmetlocation @ 0xd2
.4byte ScrCmd_moverotatingtileobjects @ 0xd3
.4byte ScrCmd_turnrotatingtileobjects @ 0xd4
diff --git a/docs/bugs_and_glitches.md b/docs/bugs_and_glitches.md
index 285718598..07955ecd5 100644
--- a/docs/bugs_and_glitches.md
+++ b/docs/bugs_and_glitches.md
@@ -89,10 +89,10 @@ Then edit `BagMenu_MoveCursorCallback` in [src/item_menu.c](https://github.com/p
```diff
...
{
-- RemoveBagItemIconSprite(1 ^ gBagMenu->unk81B_1);
-+ HideBagItemIconSprite(gBagMenu->unk81B_1 ^ 1);
-+ RemoveBagItemIconSprite(gBagMenu->unk81B_1);
- if (a != -2)
+- RemoveBagItemIconSprite(1 ^ gBagMenu->itemIconSlot);
++ HideBagItemIconSprite(gBagMenu->itemIconSlot ^ 1);
++ RemoveBagItemIconSprite(gBagMenu->itemIconSlot);
+ if (itemIndex != LIST_CANCEL)
...
```
diff --git a/graphics/battle_anims/sprites/substitute.bin b/graphics/battle_anims/sprites/substitute.bin
deleted file mode 100644
index d30c07d4e..000000000
--- a/graphics/battle_anims/sprites/substitute.bin
+++ /dev/null
Binary files differ
diff --git a/graphics/battle_anims/sprites/substitute_back.png b/graphics/battle_anims/sprites/substitute_back.png
new file mode 100644
index 000000000..8ea1f7ff8
--- /dev/null
+++ b/graphics/battle_anims/sprites/substitute_back.png
Binary files differ
diff --git a/graphics/battle_frontier/factory_screen/action_box_left.png b/graphics/battle_frontier/factory_screen/action_box_left.png
new file mode 100644
index 000000000..c4c943a15
--- /dev/null
+++ b/graphics/battle_frontier/factory_screen/action_box_left.png
Binary files differ
diff --git a/graphics/battle_frontier/factory_screen/action_box_right.png b/graphics/battle_frontier/factory_screen/action_box_right.png
new file mode 100644
index 000000000..984244660
--- /dev/null
+++ b/graphics/battle_frontier/factory_screen/action_box_right.png
Binary files differ
diff --git a/graphics/battle_frontier/factory_screen/action_highlight_left.png b/graphics/battle_frontier/factory_screen/action_highlight_left.png
new file mode 100644
index 000000000..873049e64
--- /dev/null
+++ b/graphics/battle_frontier/factory_screen/action_highlight_left.png
Binary files differ
diff --git a/graphics/battle_frontier/factory_screen/action_highlight_middle.png b/graphics/battle_frontier/factory_screen/action_highlight_middle.png
new file mode 100644
index 000000000..e2bebe11b
--- /dev/null
+++ b/graphics/battle_frontier/factory_screen/action_highlight_middle.png
Binary files differ
diff --git a/graphics/battle_frontier/factory_screen/action_highlight_right.png b/graphics/battle_frontier/factory_screen/action_highlight_right.png
new file mode 100644
index 000000000..e2bebe11b
--- /dev/null
+++ b/graphics/battle_frontier/factory_screen/action_highlight_right.png
Binary files differ
diff --git a/graphics/battle_frontier/factory_screen/arrow.png b/graphics/battle_frontier/factory_screen/arrow.png
new file mode 100644
index 000000000..d0ec83dee
--- /dev/null
+++ b/graphics/battle_frontier/factory_screen/arrow.png
Binary files differ
diff --git a/graphics/unknown/unknown_60F17C.pal b/graphics/battle_frontier/factory_screen/interface.pal
index 7f6b43f35..7f6b43f35 100644
--- a/graphics/unknown/unknown_60F17C.pal
+++ b/graphics/battle_frontier/factory_screen/interface.pal
diff --git a/graphics/battle_frontier/factory_screen/menu_highlight_left.png b/graphics/battle_frontier/factory_screen/menu_highlight_left.png
new file mode 100644
index 000000000..1c39f7250
--- /dev/null
+++ b/graphics/battle_frontier/factory_screen/menu_highlight_left.png
Binary files differ
diff --git a/graphics/battle_frontier/factory_screen/menu_highlight_right.png b/graphics/battle_frontier/factory_screen/menu_highlight_right.png
new file mode 100644
index 000000000..9e6800733
--- /dev/null
+++ b/graphics/battle_frontier/factory_screen/menu_highlight_right.png
Binary files differ
diff --git a/graphics/unknown/unknown_61023C.bin b/graphics/battle_frontier/factory_screen/mon_pic_bg.bin
index c4e7c913d..c4e7c913d 100644
--- a/graphics/unknown/unknown_61023C.bin
+++ b/graphics/battle_frontier/factory_screen/mon_pic_bg.bin
Binary files differ
diff --git a/graphics/battle_frontier/factory_screen/mon_pic_bg.png b/graphics/battle_frontier/factory_screen/mon_pic_bg.png
new file mode 100644
index 000000000..b72da6f44
--- /dev/null
+++ b/graphics/battle_frontier/factory_screen/mon_pic_bg.png
Binary files differ
diff --git a/graphics/battle_frontier/factory_screen/mon_pic_bg_anim.png b/graphics/battle_frontier/factory_screen/mon_pic_bg_anim.png
new file mode 100644
index 000000000..324063d0d
--- /dev/null
+++ b/graphics/battle_frontier/factory_screen/mon_pic_bg_anim.png
Binary files differ
diff --git a/graphics/battle_frontier/factory_screen/pokeball.png b/graphics/battle_frontier/factory_screen/pokeball.png
new file mode 100644
index 000000000..b3426fc72
--- /dev/null
+++ b/graphics/battle_frontier/factory_screen/pokeball.png
Binary files differ
diff --git a/graphics/unknown/unknown_60F13C.pal b/graphics/battle_frontier/factory_screen/pokeball_gray.pal
index 1f6d1400e..1f6d1400e 100644
--- a/graphics/unknown/unknown_60F13C.pal
+++ b/graphics/battle_frontier/factory_screen/pokeball_gray.pal
diff --git a/graphics/unknown/unknown_60F15C.pal b/graphics/battle_frontier/factory_screen/pokeball_selected.pal
index a25d0d910..a25d0d910 100644
--- a/graphics/unknown/unknown_60F15C.pal
+++ b/graphics/battle_frontier/factory_screen/pokeball_selected.pal
diff --git a/graphics/unknown/unknown_61046C.pal b/graphics/battle_frontier/factory_screen/text.pal
index 40d83bc59..40d83bc59 100644
--- a/graphics/unknown/unknown_61046C.pal
+++ b/graphics/battle_frontier/factory_screen/text.pal
diff --git a/graphics/unknown/unknown_60F1BC.png b/graphics/unknown/unknown_60F1BC.png
deleted file mode 100644
index 185b93d57..000000000
--- a/graphics/unknown/unknown_60F1BC.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/unknown_60F3BC.png b/graphics/unknown/unknown_60F3BC.png
deleted file mode 100644
index 3114f2eb8..000000000
--- a/graphics/unknown/unknown_60F3BC.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/unknown_60F43C.png b/graphics/unknown/unknown_60F43C.png
deleted file mode 100644
index 3c2c1d5cd..000000000
--- a/graphics/unknown/unknown_60F43C.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/unknown_60F53C.png b/graphics/unknown/unknown_60F53C.png
deleted file mode 100644
index 65450c7b3..000000000
--- a/graphics/unknown/unknown_60F53C.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/unknown_60F63C.png b/graphics/unknown/unknown_60F63C.png
deleted file mode 100644
index 01fcea2fa..000000000
--- a/graphics/unknown/unknown_60F63C.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/unknown_60F6BC.png b/graphics/unknown/unknown_60F6BC.png
deleted file mode 100644
index bda46587f..000000000
--- a/graphics/unknown/unknown_60F6BC.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/unknown_60F7BC.png b/graphics/unknown/unknown_60F7BC.png
deleted file mode 100644
index 487b428bd..000000000
--- a/graphics/unknown/unknown_60F7BC.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/unknown_60F83C.png b/graphics/unknown/unknown_60F83C.png
deleted file mode 100644
index 2a44e9455..000000000
--- a/graphics/unknown/unknown_60F83C.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/unknown_60F93C.png b/graphics/unknown/unknown_60F93C.png
deleted file mode 100644
index 2a44e9455..000000000
--- a/graphics/unknown/unknown_60F93C.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/unknown_60FA3C.png b/graphics/unknown/unknown_60FA3C.png
deleted file mode 100644
index c4ae096d0..000000000
--- a/graphics/unknown/unknown_60FA3C.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/unknown_61033C.png b/graphics/unknown/unknown_61033C.png
deleted file mode 100644
index ec874f98c..000000000
--- a/graphics/unknown/unknown_61033C.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/unknown_61039C.pal b/graphics/unknown/unknown_61039C.pal
deleted file mode 100644
index 89f527ce4..000000000
--- a/graphics/unknown/unknown_61039C.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-213 255 238
-213 255 238
-213 255 238
-213 255 238
-213 255 238
-213 255 238
-213 255 238
-213 255 238
-213 255 238
-213 255 238
-213 255 238
-213 255 238
-213 255 238
-213 255 238
-213 255 238
diff --git a/include/battle_controllers.h b/include/battle_controllers.h
index 32918fefb..5b1ada11a 100644
--- a/include/battle_controllers.h
+++ b/include/battle_controllers.h
@@ -85,8 +85,8 @@ enum
struct UnusedControllerStruct
{
- u8 field_0:7;
- u8 flag_x80:1;
+ u8 unk:7;
+ u8 flag:1;
};
struct HpAndStatus
@@ -145,19 +145,19 @@ enum
CONTROLLER_STATUSXOR,
CONTROLLER_DATATRANSFER,
CONTROLLER_DMA3TRANSFER,
- CONTROLLER_31,
+ CONTROLLER_PLAYBGM,
CONTROLLER_32,
CONTROLLER_TWORETURNVALUES,
CONTROLLER_CHOSENMONRETURNVALUE,
CONTROLLER_ONERETURNVALUE,
CONTROLLER_ONERETURNVALUE_DUPLICATE,
- CONTROLLER_37,
- CONTROLLER_38,
- CONTROLLER_39,
- CONTROLLER_40,
+ CONTROLLER_CLEARUNKVAR,
+ CONTROLLER_SETUNKVAR,
+ CONTROLLER_CLEARUNKFLAG,
+ CONTROLLER_TOGGLEUNKFLAG,
CONTROLLER_HITANIMATION,
CONTROLLER_42,
- CONTROLLER_EFFECTIVENESSSOUND,
+ CONTROLLER_PLAYSE,
CONTROLLER_PLAYFANFAREORBGM,
CONTROLLER_FAINTINGCRY,
CONTROLLER_INTROSLIDE,
@@ -175,7 +175,7 @@ enum
CONTROLLER_CMDS_COUNT
};
-extern struct UnusedControllerStruct gUnknown_02022D0C;
+extern struct UnusedControllerStruct gUnusedControllerStruct;
// general functions
void HandleLinkBattleSetup(void);
@@ -222,10 +222,10 @@ void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2);
void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c);
void BtlController_EmitOneReturnValue(u8 bufferId, u16 arg1);
void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 b);
-void BtlController_EmitCmd37(u8 bufferId); // unused
-void BtlController_EmitCmd38(u8 bufferId, u8 b); // unused
-void BtlController_EmitCmd39(u8 bufferId); // unused
-void BtlController_EmitCmd40(u8 bufferId); // unused
+void BtlController_EmitClearUnkVar(u8 bufferId); // unused
+void BtlController_EmitSetUnkVar(u8 bufferId, u8 b); // unused
+void BtlController_EmitClearUnkFlag(u8 bufferId); // unused
+void BtlController_EmitToggleUnkFlag(u8 bufferId); // unused
void BtlController_EmitHitAnimation(u8 bufferId);
void BtlController_EmitCmd42(u8 bufferId);
void BtlController_EmitPlaySE(u8 bufferId, u16 songId);
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index 722fe4444..aa1a2e0dc 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -36,7 +36,7 @@ void sub_808BCE8(void);
void InitPlayerAvatar(s16 a, s16 b, u8 c, u8 d);
void sub_808B864(void);
void sub_808BCF4(void);
-void sub_808D074(u8);
+void SetSpinStartFacingDir(u8);
void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr);
u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8);
void SetPlayerAvatarFieldMove(void);
@@ -57,10 +57,10 @@ void PlayerWheelieMove(u8 direction);
void PlayerPopWheelieWhileMoving(u8 direction);
void PlayerUseAcroBikeOnBumpySlope(u8 direction);
void PlayerEndWheelieWhileMoving(u8 direction);
-void sub_808D194(void);
-void sub_808D1C8(void);
-bool32 sub_808D1B4(void);
-bool32 sub_808D1E8(void);
+void DoPlayerSpinEntrance(void);
+void DoPlayerSpinExit(void);
+bool32 IsPlayerSpinEntranceActive(void);
+bool32 IsPlayerSpinExitActive(void);
void SetPlayerInvisibility(bool8 invisible);
u8 player_get_pos_including_state_based_drift(s16 *x, s16 *y);
void StartFishing(u8 rod);
diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h
index 951bf0788..4e4725041 100644
--- a/include/field_screen_effect.h
+++ b/include/field_screen_effect.h
@@ -18,8 +18,8 @@ void FieldCB_WarpExitFadeFromBlack(void);
void FieldCB_WarpExitFadeFromWhite(void);
bool8 FieldCB_ReturnToFieldOpenStartMenu(void);
void ReturnToFieldOpenStartMenu(void);
-void sub_80AF6D4(void);
-void sub_80AF6F0(void);
+void FieldCB_ReturnToFieldNoScript(void);
+void FieldCB_ReturnToFieldNoScriptCheckMusic(void);
void DoWarp(void);
void DoDiveWarp(void);
void DoSootopolisLegendWarp(void);
@@ -35,8 +35,8 @@ void DoCableClubWarp(void);
void DoContestHallWarp(void);
void AnimateFlash(u8 flashLevel);
void WriteBattlePyramidViewScanlineEffectBuffer(void);
-void sub_80B0244(void);
-void sub_80B0268(void);
+void DoSpinEnterWarp(void);
+void DoSpinExitWarp(void);
void DoOrbEffect(void);
void FadeOutOrbEffect(void);
void sub_80B05B4(void);
diff --git a/include/graphics.h b/include/graphics.h
index 936f95aa8..d3d01bc57 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4087,8 +4087,8 @@ extern const u32 gConfetti_Gfx[];
extern const u32 gConfetti_Pal[];
extern const u32 gUnknown_08C093F0[];
-extern const u32 gSubstituteDollTilemap[];
-extern const u32 gSubstituteDollGfx[];
+extern const u32 gSubstituteDollBackGfx[];
+extern const u32 gSubstituteDollFrontGfx[];
extern const u32 gSubstituteDollPal[];
extern const u32 gHealthboxSinglesPlayerGfx[];
extern const u32 gHealthboxSinglesOpponentGfx[];
@@ -5014,6 +5014,11 @@ extern const u16 gPokenavMessageBox_Pal[];
extern const u32 gPokenavOptions_Gfx[];
extern const u16 gPokenavOptions_Pal[];
+// Battle Factory Screen
+extern const u8 gFrontierFactorySelectMenu_Gfx[];
+extern const u8 gFrontierFactorySelectMenu_Tilemap[];
+extern const u16 gFrontierFactorySelectMenu_Pal[];
+
// Object event pals
extern const u16 gObjectEventPal_Brendan[];
extern const u16 gObjectEventPal_May[];
diff --git a/include/strings.h b/include/strings.h
index 7018f9e0d..294ab8aa6 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -2988,4 +2988,31 @@ extern const u8 gText_SavingDontTurnOff2[];
extern const u8 gText_BlenderMaxSpeedRecord[];
extern const u8 gText_234Players[];
+// Battle Factory Screen
+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[];
+
#endif // GUARD_STRINGS_H
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..9fe8caf63 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)
{
@@ -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..63e1ff7a0 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)
@@ -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..3d4faf0cd 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)
@@ -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();
}
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..a95bb2f6a 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
@@ -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_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_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/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/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/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/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/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/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/tools/gbafix/gbafix.c b/tools/gbafix/gbafix.c
index 598e43aa0..d62a9c661 100644
--- a/tools/gbafix/gbafix.c
+++ b/tools/gbafix/gbafix.c
@@ -28,14 +28,14 @@
// gbafix.c
//---------------------------------------------------------------------------------
/*
- Gameboy Advance ROM fixer (by Dark Fader / BlackThunder / WinterMute / Diegoisawesome)
+ Gameboy Advance ROM fixer (by Dark Fader / BlackThunder / WinterMute / Sierraffinity)
Validates header of GBA roms.
History
-------
v1.07 - added support for ELF input, (PikalaxALT)
- v1.06 - added output silencing, (Diegoisawesome)
- v1.05 - added debug offset argument, (Diegoisawesome)
+ v1.06 - added output silencing, (Sierraffinity)
+ v1.05 - added debug offset argument, (Sierraffinity)
v1.04 - converted to plain C, (WinterMute)
v1.03 - header.fixed, header.device_type
v1.02 - redefined the options (rgbfix style), checksum=0
@@ -146,7 +146,7 @@ int main(int argc, char *argv[])
// show syntax
if (argc <= 1)
{
- printf("GBA ROM fixer v"VER" by Dark Fader / BlackThunder / WinterMute / Diegoisawesome \n");
+ printf("GBA ROM fixer v"VER" by Dark Fader / BlackThunder / WinterMute / Sierraffinity \n");
printf("Syntax: gbafix <rom.gba> [-p] [-t[title]] [-c<game_code>] [-m<maker_code>] [-r<version>] [-d<debug>] [--silent]\n");
printf("\n");
printf("parameters:\n");