summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/data/ingame_trades.h144
-rw-r--r--src/trade_scene.c641
2 files changed, 664 insertions, 121 deletions
diff --git a/src/data/ingame_trades.h b/src/data/ingame_trades.h
new file mode 100644
index 000000000..102b6865f
--- /dev/null
+++ b/src/data/ingame_trades.h
@@ -0,0 +1,144 @@
+const struct InGameTrade gInGameTrades[] = {
+ {
+ .nickname = _("MIMIEN"),
+ .species = SPECIES_MR_MIME,
+ .ivs = {20, 15, 17, 24, 23, 22},
+ .abilityNum = FALSE,
+ .otId = 1985,
+ .conditions = {5, 5, 5, 30, 5},
+ .personality = 0x00009cae,
+ .heldItem = ITEM_NONE,
+ .mailNum = 255,
+ .otName = _("REYLEY"),
+ .otGender = MALE,
+ .sheen = 10,
+ .requestedSpecies = SPECIES_ABRA
+ }, {
+ .nickname = _("ZYNX"),
+ .species = SPECIES_JYNX,
+ .ivs = {18, 17, 18, 22, 25, 21},
+ .abilityNum = FALSE,
+ .otId = 36728,
+ .conditions = {5, 30, 5, 5, 5},
+ .personality = 0x498a2e1d,
+ .heldItem = ITEM_FAB_MAIL,
+ .mailNum = 0,
+ .otName = _("DONTAE"),
+ .otGender = MALE,
+ .sheen = 10,
+ .requestedSpecies = SPECIES_POLIWHIRL
+ }, {
+ .nickname = _("MS. NIDO"),
+ .species = SPECIES_NIDORAN_F,
+ .ivs = {22, 18, 25, 19, 15, 22},
+ .abilityNum = FALSE,
+ .otId = 63184,
+ .conditions = {5, 5, 5, 5, 30},
+ .personality = 0x4c970b89,
+ .heldItem = ITEM_TINY_MUSHROOM,
+ .mailNum = 255,
+ .otName = _("SAIGE"),
+ .otGender = FEMALE,
+ .sheen = 10,
+ .requestedSpecies = SPECIES_NIDORAN_M
+ }, {
+ .nickname = _("CH'DING"),
+ .species = SPECIES_FARFETCHD,
+ .ivs = {20, 25, 21, 24, 15, 20},
+ .abilityNum = FALSE,
+ .otId = 8810,
+ .conditions = {30, 5, 5, 5, 5},
+ .personality = 0x151943d7,
+ .heldItem = ITEM_STICK,
+ .mailNum = 255,
+ .otName = _("ELYSSA"),
+ .otGender = MALE,
+ .sheen = 10,
+ .requestedSpecies = SPECIES_SPEAROW
+ }, {
+ .nickname = _("NINA"),
+ .species = SPECIES_NIDORINA,
+ .ivs = {22, 25, 18, 19, 22, 15},
+ .abilityNum = FALSE,
+ .otId = 13637,
+ .conditions = {5, 5, 30, 5, 5},
+ .personality = 0x00eeca15,
+ .heldItem = ITEM_NONE,
+ .mailNum = 255,
+ .otName = _("TURNER"),
+ .otGender = MALE,
+ .sheen = 10,
+ .requestedSpecies = SPECIES_NIDORINO
+ }, {
+ .nickname = _("MARC"),
+ .species = SPECIES_LICKITUNG,
+ .ivs = {24, 19, 21, 15, 23, 21},
+ .abilityNum = FALSE,
+ .otId = 1239,
+ .conditions = {5, 5, 5, 5, 30},
+ .personality = 0x451308ab,
+ .heldItem = ITEM_NONE,
+ .mailNum = 255,
+ .otName = _("HADEN"),
+ .otGender = MALE,
+ .sheen = 10,
+ .requestedSpecies = SPECIES_GOLDUCK
+ }, {
+ .nickname = _("ESPHERE"),
+ .species = SPECIES_ELECTRODE,
+ .ivs = {19, 16, 18, 25, 25, 19},
+ .abilityNum = TRUE,
+ .otId = 50298,
+ .conditions = {30, 5, 5, 5, 5},
+ .personality = 0x06341016,
+ .heldItem = ITEM_NONE,
+ .mailNum = 255,
+ .otName = _("CLIFTON"),
+ .otGender = MALE,
+ .sheen = 10,
+ .requestedSpecies = SPECIES_RAICHU
+ }, {
+ .nickname = _("TANGENY"),
+ .species = SPECIES_TANGELA,
+ .ivs = {22, 17, 25, 16, 23, 20},
+ .abilityNum = FALSE,
+ .otId = 60042,
+ .conditions = {5, 5, 30, 5, 5},
+ .personality = 0x5c77ecfa,
+ .heldItem = ITEM_STARDUST,
+ .mailNum = 255,
+ .otName = _("NORMA"),
+ .otGender = FEMALE,
+ .sheen = 10,
+ .requestedSpecies = SPECIES_VENONAT
+ },
+ {
+ .nickname = _("SEELOR"),
+ .species = SPECIES_SEEL,
+ .ivs = {24, 15, 22, 16, 23, 22},
+ .abilityNum = FALSE,
+ .otId = 9853,
+ .conditions = {5, 5, 5, 5, 30},
+ .personality = 0x482cac89,
+ .heldItem = ITEM_NONE,
+ .mailNum = 255,
+ .otName = _("GARETT"),
+ .otGender = MALE,
+ .sheen = 10,
+ .requestedSpecies = SPECIES_PONYTA
+ }
+};
+
+const u16 sInGameTradeMailMessages[][10] = {
+ {
+ EC_WORD_THAT_S,
+ EC_WORD_A,
+ EC_WORD_HEALTHY,
+ EC_POKEMON2(JYNX),
+ EC_WORD_EXCL,
+ EC_WORD_BE,
+ EC_WORD_KIND,
+ EC_WORD_TO,
+ EC_WORD_IT
+ }
+};
diff --git a/src/trade_scene.c b/src/trade_scene.c
index 3a80ba3de..bcde7a55d 100644
--- a/src/trade_scene.c
+++ b/src/trade_scene.c
@@ -35,6 +35,7 @@
#include "save.h"
#include "load_save.h"
#include "random.h"
+#include "trade_scene.h"
#include "constants/species.h"
#include "constants/items.h"
#include "constants/easy_chat.h"
@@ -108,90 +109,488 @@ struct TradeAnimationResources {
/*0x10C*/ u8 win0bottom;
};
-EWRAM_DATA struct TradeAnimationResources * sTradeData = NULL;
-
-void CB2_InitTradeAnim_LinkTrade(void);
-void sub_805049C(void);
-void sub_80504B0(void);
-void TradeAnimInit_LoadGfx(void);
-void CB2_RunTradeAnim_InGameTrade(void);
-void SetTradeSequenceBgGpuRegs(u8 idx);
-void sub_8050DE0(void);
-void sub_8050E24(void);
-u8 sub_8050F14(void);
-u8 sub_8050F3C(void);
-u8 sub_805232C(void);
-void SpriteCB_TradePokeball_Outbound(struct Sprite * sprite);
-void SpriteCB_TradePokeball_Outbound2(struct Sprite * sprite);
-void SpriteCB_TradePokeball_Inbound(struct Sprite * sprite);
-void BufferInGameTradeMonName(void);
+static EWRAM_DATA struct TradeAnimationResources * sTradeData = NULL;
+
+static void SpriteCB_TradeGlowCable(struct Sprite * sprite);
+static void SpriteCB_TradeGlowWireless(struct Sprite * sprite);
+static void SpriteCB_TradeGlowCore(struct Sprite * sprite);
+static void SpriteCB_GameLinkCableEnd_Outbound(struct Sprite * sprite);
+static void SpriteCB_GameLinkCableEnd_Inbound(struct Sprite * sprite);
+static void sub_804FE00(struct Sprite * sprite);
+static void TradeAnimInit_LoadGfx(void);
+static void CB2_RunTradeAnim_InGameTrade(void);
+static void SetTradeSequenceBgGpuRegs(u8 idx);
+static void sub_8050DE0(void);
+static void sub_8050E24(void);
+static u8 sub_8050F14(void);
+static u8 sub_8050F3C(void);
+static u8 sub_805232C(void);
+static void SpriteCB_TradePokeball_Default(struct Sprite * sprite);
+static void SpriteCB_TradePokeball_Outbound(struct Sprite * sprite);
+static void SpriteCB_TradePokeball_Outbound2(struct Sprite * sprite);
+static void SpriteCB_TradePokeball_Inbound(struct Sprite * sprite);
+static void BufferInGameTradeMonName(void);
static void GetInGameTradeMail(struct MailStruct * mail, const struct InGameTrade * inGameTrade);
-void CB2_RunTradeAnim_LinkTrade(void);
-void sub_8053E1C(void);
-void sub_8053E8C(void);
-void sub_80543C4(void);
-void sub_8054470(u8 taskId);
-void CheckPartnersMonForRibbons(void);
-void DrawTextOnTradeWindow(u8 windowId, const u8 *str, s8 speed);
-void Task_AnimateWirelessSignal(u8 taskId);
-void c3_0805465C(u8 taskId);
-void sub_8054734(u8 taskId);
-
-const u16 gTradeBallPalette[] = INCBIN_U16("graphics/trade/ball.gbapal");
-const u8 gTradeBallTiles[] = INCBIN_U8("graphics/trade/ball.4bpp");
-const u8 gUnknown_826267C[] = INCBIN_U8("graphics/trade/pokeball_symbol.8bpp");
-const u16 gUnknown_826407C[] = INCBIN_U16("graphics/trade/cable_closeup_map.bin");
-const u16 gUnknown_083307C0[] = INCBIN_U16("graphics/trade/pokeball_symbol_map.bin");
-const u16 sUnref_083308C0[] = INCBIN_U16("graphics/trade/unknown_3308C0.gbapal");
-const u16 gUnknown_826499C[] = INCBIN_U16("graphics/trade/gba.gbapal");
-const u16 gUnref_08330900[] = INCBIN_U16("graphics/trade/shadow.gbapal");
-const u16 gUnref_08330920[] = INCBIN_U16("graphics/trade/black.gbapal");
-const u16 gUnknown_82649FC[] = INCBIN_U16("graphics/trade/misc.gbapal");
-const u8 gTradeGlow1Tiles[] = INCBIN_U8("graphics/trade/glow1.4bpp");
-const u8 gTradeGlow2Tiles[] = INCBIN_U8("graphics/trade/glow2.4bpp");
-const u8 gTradeCableEndTiles[] = INCBIN_U8("graphics/trade/cable_end.4bpp");
-const u8 gTradeGBAScreenTiles[] = INCBIN_U8("graphics/trade/gba_screen.4bpp");
+static void CB2_RunTradeAnim_LinkTrade(void);
+static void sub_8053E1C(void);
+static void sub_8053E8C(void);
+static void sub_80543C4(void);
+static void sub_8054470(u8 taskId);
+static void CheckPartnersMonForRibbons(void);
+static void Task_AnimateWirelessSignal(u8 taskId);
+static void c3_0805465C(u8 taskId);
+static void sub_8054734(u8 taskId);
+
+static const u16 gTradeBallPalette[] = INCBIN_U16("graphics/trade/ball.gbapal");
+static const u8 gTradeBallTiles[] = INCBIN_U8("graphics/trade/ball.4bpp");
+static const u8 gUnknown_826267C[] = INCBIN_U8("graphics/trade/pokeball_symbol.8bpp");
+static const u16 gUnknown_826407C[] = INCBIN_U16("graphics/trade/cable_closeup_map.bin");
+static const u16 gUnknown_083307C0[] = INCBIN_U16("graphics/trade/pokeball_symbol_map.bin");
+static const u16 sUnref_083308C0[] = INCBIN_U16("graphics/trade/unknown_3308C0.gbapal");
+static const u16 gUnknown_826499C[] = INCBIN_U16("graphics/trade/gba.gbapal");
+static const u16 gUnref_08330900[] = INCBIN_U16("graphics/trade/shadow.gbapal");
+static const u16 gUnref_08330920[] = INCBIN_U16("graphics/trade/black.gbapal");
+static const u16 gUnknown_82649FC[] = INCBIN_U16("graphics/trade/misc.gbapal");
+static const u8 gTradeGlow1Tiles[] = INCBIN_U8("graphics/trade/glow1.4bpp");
+static const u8 gTradeGlow2Tiles[] = INCBIN_U8("graphics/trade/glow2.4bpp");
+static const u8 gTradeCableEndTiles[] = INCBIN_U8("graphics/trade/cable_end.4bpp");
+static const u8 gTradeGBAScreenTiles[] = INCBIN_U8("graphics/trade/gba_screen.4bpp");
const u16 gUnknown_826601C[] = INCBIN_U16("graphics/trade/shadow_map.bin");
-const u8 gUnknown_826701C[] = INCBIN_U8("graphics/trade/gba_affine.8bpp");
-const u8 sFiller_08335760[64] = {};
-const u8 gUnknown_826985C[] = INCBIN_U8("graphics/trade/gba_affine_map_cable.bin");
-const u8 gUnknown_826995C[] = INCBIN_U8("graphics/trade/gba_affine_map_wireless.bin");
-const u16 gUnknown_8269A5C[] = INCBIN_U16("graphics/trade/gba_map_wireless.bin");
-const u16 gUnknown_826AA5C[] = INCBIN_U16("graphics/trade/gba_map_cable.bin");
-const u32 gUnknown_3379A0Bin[] = INCBIN_U32("graphics/trade/unknown_3379A0.bin.lz");
-const u16 gUnknown_826BB5C[] = INCBIN_U16("graphics/trade/wireless_signal_send.gbapal");
-const u16 gUnknown_826BD5C[] = INCBIN_U16("graphics/trade/wireless_signal_receive.gbapal");
-const u16 gUnknown_826BF5C[] = INCBIN_U16("graphics/trade/black.gbapal");
-const u32 gWirelessSignal4bpp[] = INCBIN_U32("graphics/trade/wireless_signal.4bpp.lz");
-const u32 gUnknown_826C60C[] = INCBIN_U32("graphics/trade/wireless_signal.bin.lz");
-
-extern const u8 gUnknown_8261EC7[];
-extern const u8 *const sTradeErrorOrStatusMessagePtrs[];
-extern const u16 gTradeGlow2PaletteAnimTable[];
-extern const struct SpriteSheet gUnknown_826CDD4;
-extern const struct SpritePalette gUnknown_826CDDC;
-extern const struct BgTemplate gUnknown_826D1D4[4];
-extern const struct WindowTemplate gUnknown_826D1BC[];
-extern const struct SpriteSheet gUnknown_826CE2C;
-extern const struct SpriteSheet gUnknown_826CE7C;
-extern const struct SpriteSheet gUnknown_826CEB0;
-extern const struct SpriteSheet gUnknown_826CF28;
-extern const struct SpritePalette gUnknown_826CE34;
-extern const struct SpritePalette gUnknown_826CE3C;
-extern const struct InGameTrade gInGameTrades[];
-extern const struct SpriteTemplate sTradePokeballSpriteTemplate;
-extern const struct SpriteTemplate gUnknown_826CF30;
-extern const struct SpriteTemplate sGameLinkCableEndSpriteTemplate;
-extern const struct SpriteTemplate gUnknown_826CE44;
-extern const struct SpriteTemplate sGlowBallSpriteTemplate;
-extern const union AffineAnimCmd *const gUnknown_826CF88[];
-extern const struct SpriteTemplate gUnknown_826CF48;
-extern const s8 gUnknown_826D1E4[];
-extern const u16 sInGameTradeMailMessages[][10];
-extern const u8 gUnknown_826D250[][2];
+static const u8 gUnknown_826701C[] = INCBIN_U8("graphics/trade/gba_affine.8bpp");
+static const u8 sFiller_08335760[64] = {};
+static const u8 gUnknown_826985C[] = INCBIN_U8("graphics/trade/gba_affine_map_cable.bin");
+static const u8 gUnknown_826995C[] = INCBIN_U8("graphics/trade/gba_affine_map_wireless.bin");
+static const u16 gUnknown_8269A5C[] = INCBIN_U16("graphics/trade/gba_map_wireless.bin");
+static const u16 gUnknown_826AA5C[] = INCBIN_U16("graphics/trade/gba_map_cable.bin");
+static const u32 gUnknown_3379A0Bin[] = INCBIN_U32("graphics/trade/unknown_3379A0.bin.lz");
+static const u16 gUnknown_826BB5C[] = INCBIN_U16("graphics/trade/wireless_signal_send.gbapal");
+static const u16 gUnknown_826BD5C[] = INCBIN_U16("graphics/trade/wireless_signal_receive.gbapal");
+static const u16 gUnknown_826BF5C[] = INCBIN_U16("graphics/trade/black.gbapal");
+static const u32 gWirelessSignal4bpp[] = INCBIN_U32("graphics/trade/wireless_signal.4bpp.lz");
+static const u32 gUnknown_826C60C[] = INCBIN_U32("graphics/trade/wireless_signal.bin.lz");
+
+static const struct OamData gOamData_826CD00 = {
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16)
+};
+
+static const union AnimCmd gAnimCmd_826CD08[] = {
+ ANIMCMD_FRAME(0x00, 3),
+ ANIMCMD_FRAME(0x04, 3),
+ ANIMCMD_FRAME(0x08, 3),
+ ANIMCMD_FRAME(0x0c, 3),
+ ANIMCMD_FRAME(0x10, 3),
+ ANIMCMD_FRAME(0x14, 3),
+ ANIMCMD_FRAME(0x18, 3),
+ ANIMCMD_FRAME(0x1c, 3),
+ ANIMCMD_FRAME(0x20, 3),
+ ANIMCMD_FRAME(0x24, 3),
+ ANIMCMD_FRAME(0x28, 3),
+ ANIMCMD_FRAME(0x2c, 3),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME(0x00, 3),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gAnimCmd_826CD44[] = {
+ ANIMCMD_FRAME(0x00, 3),
+ ANIMCMD_FRAME(0x04, 3),
+ ANIMCMD_FRAME(0x08, 3),
+ ANIMCMD_FRAME(0x0c, 3),
+ ANIMCMD_FRAME(0x10, 3),
+ ANIMCMD_FRAME(0x14, 3),
+ ANIMCMD_FRAME(0x18, 3),
+ ANIMCMD_FRAME(0x1c, 3),
+ ANIMCMD_FRAME(0x20, 3),
+ ANIMCMD_FRAME(0x24, 3),
+ ANIMCMD_FRAME(0x28, 3),
+ ANIMCMD_FRAME(0x2c, 3),
+ ANIMCMD_LOOP(2),
+ ANIMCMD_FRAME(0x00, 3),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gSpriteAnimTable_826CD80[] = {
+ gAnimCmd_826CD08,
+ gAnimCmd_826CD44
+};
+
+static const union AffineAnimCmd gAffineAnimCmd_826CD88[] = {
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd gAffineAnimCmd_826CD98[] = {
+ AFFINEANIMCMD_FRAME(-8, 0, 0, 20),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd gAffineAnimCmd_826CDA8[] = {
+ AFFINEANIMCMD_FRAME(96, 256, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 5),
+ AFFINEANIMCMD_FRAME(8, 0, 0, 20),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_826CDC8[] = {
+ gAffineAnimCmd_826CD88,
+ gAffineAnimCmd_826CD98,
+ gAffineAnimCmd_826CDA8
+};
+
+static const struct SpriteSheet gUnknown_826CDD4 = {
+ gTradeBallTiles,
+ 0x600,
+ 5557
+};
+
+static const struct SpritePalette gUnknown_826CDDC = {
+ gTradeBallPalette,
+ 5558
+};
+
+static const struct SpriteTemplate sTradePokeballSpriteTemplate = {
+ .tileTag = 5557,
+ .paletteTag = 5558,
+ .oam = &gOamData_826CD00,
+ .anims = gSpriteAnimTable_826CD80,
+ .affineAnims = gSpriteAffineAnimTable_826CDC8,
+ .callback = SpriteCB_TradePokeball_Default
+};
+
+static const struct OamData gOamData_826CDFC = {
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
+ .priority = 1
+};
+
+static const union AnimCmd gAnimCmd_826CE04[] = {
+ ANIMCMD_FRAME(0, 5, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gSpriteAnimTable_826CE0C[] = {
+ gAnimCmd_826CE04
+};
+
+static const union AffineAnimCmd gAffineAnimCmd_826CE10[] = {
+ AFFINEANIMCMD_FRAME(-10, -10, 0, 5),
+ AFFINEANIMCMD_FRAME( 10, 10, 0, 5),
+ AFFINEANIMCMD_JUMP(0)
+};
+
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_826CE28[] = {
+ gAffineAnimCmd_826CE10
+};
+
+static const struct SpriteSheet gUnknown_826CE2C = {
+ gTradeGlow1Tiles,
+ 0x200,
+ 5550
+};
+
+static const struct SpritePalette gUnknown_826CE34 = {
+ gUnknown_82649FC,
+ 5551
+};
+
+static const struct SpritePalette gUnknown_826CE3C = {
+ gUnknown_826499C,
+ 5555
+};
+
+static const struct SpriteTemplate gUnknown_826CE44 = {
+ .tileTag = 5550,
+ .paletteTag = 5551,
+ .oam = &gOamData_826CDFC,
+ .anims = gSpriteAnimTable_826CE0C,
+ .affineAnims = gSpriteAffineAnimTable_826CE28,
+ .callback = SpriteCB_TradeGlowCable
+};
+
+static const struct OamData gOamData_826CE5C = {
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
+ .priority = 1
+};
+
+static const union AnimCmd gAnimCmd_826CE64[] = {
+ ANIMCMD_FRAME(0, 5, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gAnimCmd_826CE6C[] = {
+ ANIMCMD_FRAME(8, 5, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gSpriteAnimTable_826CE74[] = {
+ gAnimCmd_826CE64,
+ gAnimCmd_826CE6C
+};
+
+static const struct SpriteSheet gUnknown_826CE7C = {
+ gTradeGlow2Tiles,
+ 0x300,
+ 5552
+};
+
+static const struct SpriteTemplate sGlowBallSpriteTemplate = {
+ .tileTag = 5552,
+ .paletteTag = 5551,
+ .oam = &gOamData_826CE5C,
+ .anims = gSpriteAnimTable_826CE74,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_TradeGlowCore
+};
+
+static const struct OamData gOamData_826CE9C = {
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
+ .priority = 1
+};
+
+static const union AnimCmd gAnimCmd_826CEA4[] = {
+ ANIMCMD_FRAME(0, 10),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gSpriteAnimTable_826CEAC[] = {
+ gAnimCmd_826CEA4
+};
+
+static const struct SpriteSheet gUnknown_826CEB0 = {
+ gTradeCableEndTiles,
+ 0x100,
+ 5554
+};
+
+static const struct SpriteTemplate sGameLinkCableEndSpriteTemplate = {
+ .tileTag = 5554,
+ .paletteTag = 5555,
+ .oam = &gOamData_826CE9C,
+ .anims = gSpriteAnimTable_826CEAC,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_GameLinkCableEnd_Outbound
+};
+
+static const struct OamData gOamData_826CED0 = {
+ .shape = SPRITE_SHAPE(64x32),
+ .size = SPRITE_SIZE(64x32),
+ .priority = 1
+};
+
+static const union AnimCmd gAnimCmd_826CED8[] = {
+ ANIMCMD_FRAME(0x00, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x20, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x40, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x60, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x40, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x20, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x00, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_LOOP(8),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gAnimCmd_826CEFC[] = {
+ ANIMCMD_FRAME(0x00, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x20, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x40, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x60, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x40, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x20, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x00, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_LOOP(2),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gSpriteAnimTable_826CF20[] = {
+ gAnimCmd_826CED8
+};
+
+static const union AnimCmd *const gSpriteAnimTable_826CF24[] = {
+ gAnimCmd_826CEFC
+};
+
+static const struct SpriteSheet gUnknown_826CF28 = {
+ gTradeGBAScreenTiles,
+ 0x1000,
+ 5556
+};
+
+static const struct SpriteTemplate gUnknown_826CF30 = {
+ .tileTag = 5556,
+ .paletteTag = 5555,
+ .oam = &gOamData_826CED0,
+ .anims = gSpriteAnimTable_826CF20,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_804FE00
+};
+
+static const struct SpriteTemplate gUnknown_826CF48 = {
+ .tileTag = 5556,
+ .paletteTag = 5555,
+ .oam = &gOamData_826CED0,
+ .anims = gSpriteAnimTable_826CF24,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_804FE00
+};
+
+static const u16 gTradeGlow2PaletteAnimTable[] = {
+ RGB(18, 24, 31),
+ RGB(18, 24, 31),
+ RGB(18, 24, 31),
+ RGB(31, 31, 31),
+ RGB(31, 31, 31),
+ RGB(31, 31, 31),
+ RGB(18, 24, 31),
+ RGB(18, 24, 31),
+ RGB(18, 24, 31),
+ RGB(31, 31, 31),
+ RGB(31, 31, 31),
+ RGB(31, 31, 31)
+};
+
+static const union AffineAnimCmd gAffineAnimCmd_826CF78[] = {
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_JUMP(0)
+};
+
+static const union AffineAnimCmd *const gUnknown_826CF88[] = {
+ gAffineAnimCmd_826CF78
+};
+
+#include "data/ingame_trades.h"
+
+static const struct WindowTemplate gUnknown_826D1BC[] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 15,
+ .width = 26,
+ .height = 4,
+ .paletteNum = 0,
+ .baseBlock = 0x040
+ }, DUMMY_WIN_TEMPLATE
+};
+
+const struct WindowTemplate gUnknown_826D1CC = {
+ .bg = 0,
+ .tilemapLeft = 21,
+ .tilemapTop = 9,
+ .width = 6,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x0bc
+};
+
+static const struct BgTemplate gUnknown_826D1D4[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000
+ }, {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 5,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x000
+ }, {
+ .bg = 2,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 18,
+ .screenSize = 1,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x000
+ }, {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 6,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0x000
+ }
+};
+
+static const s8 gTradeBallVerticalVelocityTable[] = {
+ 0, 0, 1, 0,
+ 1, 0, 1, 1,
+ 1, 1, 2, 2,
+ 2, 2, 3, 3,
+ 3, 3, 4, 4,
+ 4, 4, -4, -4,
+ -4, -3, -3, -3,
+ -3, -2, -2, -2,
+ -2, -1, -1, -1,
+ -1, 0, -1, 0,
+ -1, 0, 0, 0,
+ 0, 0, 1, 0,
+ 1, 0, 1, 1,
+ 1, 1, 2, 2,
+ 2, 2, 3, 3,
+ 3, 3, 4, 4,
+ 4, 4, -4, -3,
+ -3, -2, -2, -1,
+ -1, -1, 0, -1,
+ 0, 0, 0, 0,
+ 0, 0, 1, 0,
+ 1, 1, 1, 2,
+ 2, 3, 3, 4,
+ -4, -3, -2, -1,
+ -1, -1, 0, 0,
+ 0, 0, 1, 0,
+ 1, 1, 2, 3
+};
+
+static const u8 gUnknown_826D250[][2] = {
+ {0, 1},
+ {1, 1},
+ {2, 1},
+ {3, 1},
+ {4, 1},
+ {5, 2},
+ {6, 2},
+ {7, 2},
+ {8, 2},
+ {9, 2},
+ {10, 3},
+ {11, 3},
+ {12, 3},
+ {13, 4},
+ {14, 5},
+ {15, 2},
+ {0, 1},
+ {1, 1},
+ {2, 1},
+ {3, 1},
+ {4, 1},
+ {5, 2},
+ {6, 2},
+ {7, 2},
+ {8, 2},
+ {9, 2},
+ {10, 3},
+ {11, 3},
+ {12, 3},
+ {13, 4},
+ {14, 5},
+ {16, 1},
+ {16, -1}
+};
// Sprite callback for link cable trade glow
-void SpriteCB_TradeGlowCable(struct Sprite * sprite)
+static void SpriteCB_TradeGlowCable(struct Sprite * sprite)
{
sprite->data[0]++;
if (sprite->data[0] == 10)
@@ -202,7 +601,7 @@ void SpriteCB_TradeGlowCable(struct Sprite * sprite)
}
// Sprite callback for wireless trade glow
-void SpriteCB_TradeGlowWireless(struct Sprite * sprite)
+static void SpriteCB_TradeGlowWireless(struct Sprite * sprite)
{
if (!sprite->invisible)
{
@@ -216,7 +615,7 @@ void SpriteCB_TradeGlowWireless(struct Sprite * sprite)
}
// Palette flash for trade glow core
-void SpriteCB_TradeGlowCore(struct Sprite * sprite)
+static void SpriteCB_TradeGlowCore(struct Sprite * sprite)
{
if (sprite->data[1] == 0)
{
@@ -227,7 +626,7 @@ void SpriteCB_TradeGlowCore(struct Sprite * sprite)
}
}
-void SpriteCB_GameLinkCableEnd_Outbound(struct Sprite * sprite)
+static void SpriteCB_GameLinkCableEnd_Outbound(struct Sprite * sprite)
{
sprite->data[0]++;
sprite->pos2.y++;
@@ -235,7 +634,7 @@ void SpriteCB_GameLinkCableEnd_Outbound(struct Sprite * sprite)
DestroySprite(sprite);
}
-void SpriteCB_GameLinkCableEnd_Inbound(struct Sprite * sprite)
+static void SpriteCB_GameLinkCableEnd_Inbound(struct Sprite * sprite)
{
sprite->data[0]++;
sprite->pos2.y--;
@@ -243,7 +642,7 @@ void SpriteCB_GameLinkCableEnd_Inbound(struct Sprite * sprite)
DestroySprite(sprite);
}
-void sub_804FE00(struct Sprite * sprite)
+static void sub_804FE00(struct Sprite * sprite)
{
sprite->data[0]++;
if (sprite->data[0] == 15)
@@ -253,7 +652,7 @@ void sub_804FE00(struct Sprite * sprite)
}
}
-void SetTradeBGAffine(void)
+static void SetTradeBGAffine(void)
{
struct BgAffineDstData affine;
DoBgAffineSet(&affine, sTradeData->bg2texX * 0x100, sTradeData->bg2texY * 0x100, sTradeData->bg2srcX, sTradeData->bg2srcY, sTradeData->sXY, sTradeData->sXY, sTradeData->bg2alpha);
@@ -292,14 +691,14 @@ static void VBlankCB_TradeAnim(void)
TransferPlttBuffer();
}
-void sub_804FF24(void)
+static void sub_804FF24(void)
{
sTradeData->unk_8A = 0;
sTradeData->unk_88 = 0;
sTradeData->unk_89 = 0;
}
-void sub_804FF4C(void)
+static void sub_804FF4C(void)
{
if (sTradeData->unk_88 == sTradeData->unk_89)
sTradeData->unk_8A++;
@@ -318,14 +717,14 @@ void sub_804FF4C(void)
sTradeData->unk_89 = sTradeData->unk_88;
}
-u32 sub_804FFC4(void)
+static u32 sub_804FFC4(void)
{
if (gReceivedRemoteLinkPlayers)
return GetMultiplayerId();
return 0;
}
-void sub_804FFE4(u8 whichParty, u8 a1)
+static void sub_804FFE4(u8 whichParty, u8 a1)
{
int pos = 0;
struct Pokemon *mon = NULL;
@@ -520,7 +919,7 @@ void sub_80504B0(void)
CopyWindowToVram(0, 3);
}
-void TradeAnimInit_LoadGfx(void)
+static void TradeAnimInit_LoadGfx(void)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
ResetBgsAndClearDma3BusyFlags(FALSE);
@@ -544,7 +943,7 @@ void TradeAnimInit_LoadGfx(void)
LoadCompressedPalette(gBattleTextboxPalette, 0x000, 0x20);
}
-void CB2_InitTradeAnim_InGameTrade(void)
+static void CB2_InitTradeAnim_InGameTrade(void)
{
u8 otName[11];
@@ -647,7 +1046,7 @@ static void RS_TryEnableNationalPokedex(void)
EnableNationalPokedex();*/
}
-void TradeMons(u8 playerPartyIdx, u8 partnerPartyIdx)
+static void TradeMons(u8 playerPartyIdx, u8 partnerPartyIdx)
{
u8 friendship;
@@ -681,7 +1080,7 @@ void TradeMons(u8 playerPartyIdx, u8 partnerPartyIdx)
RS_TryEnableNationalPokedex();
}
-void sub_80508F4(void)
+static void sub_80508F4(void)
{
switch (sTradeData->unk_93)
{
@@ -697,7 +1096,7 @@ void sub_80508F4(void)
}
}
-void CB2_RunTradeAnim_InGameTrade(void)
+static void CB2_RunTradeAnim_InGameTrade(void)
{
sub_8050F14();
RunTasks();
@@ -707,7 +1106,7 @@ void CB2_RunTradeAnim_InGameTrade(void)
UpdatePaletteFade();
}
-void SetTradeSequenceBgGpuRegs(u8 state)
+static void SetTradeSequenceBgGpuRegs(u8 state)
{
switch (state)
{
@@ -814,7 +1213,7 @@ void SetTradeSequenceBgGpuRegs(u8 state)
}
}
-void sub_8050DE0(void)
+static void sub_8050DE0(void)
{
LoadSpriteSheet(&gUnknown_826CE2C);
LoadSpriteSheet(&gUnknown_826CE7C);
@@ -824,7 +1223,7 @@ void sub_8050DE0(void)
LoadSpritePalette(&gUnknown_826CE3C);
}
-void sub_8050E24(void)
+static void sub_8050E24(void)
{
u8 nickname[20];
u8 mpId;
@@ -848,7 +1247,7 @@ void sub_8050E24(void)
}
}
-bool8 sub_8050F14(void)
+static bool8 sub_8050F14(void)
{
if (sTradeData->isCableTrade)
return sub_8050F3C();
@@ -856,7 +1255,7 @@ bool8 sub_8050F14(void)
return sub_805232C();
}
-bool8 sub_8050F3C(void)
+static bool8 sub_8050F3C(void)
{
u16 evoTarget;
@@ -1353,7 +1752,7 @@ bool8 sub_8050F3C(void)
return FALSE;
}
-bool8 sub_805232C(void)
+static bool8 sub_805232C(void)
{
u16 evoTarget;
@@ -1874,7 +2273,7 @@ bool8 sub_805232C(void)
return FALSE;
}
-void sub_8053788(void)
+static void sub_8053788(void)
{
u16 evoSpecies;
switch (gMain.state)
@@ -1900,7 +2299,7 @@ void sub_8053788(void)
UpdatePaletteFade();
}
-void sub_805383C(void)
+static void sub_805383C(void)
{
u8 recvStatus;
sub_804FFC4();
@@ -1921,7 +2320,7 @@ void sub_805383C(void)
}
}
-void SpriteCB_TradePokeball_Default(struct Sprite * sprite)
+static void SpriteCB_TradePokeball_Default(struct Sprite * sprite)
{
sprite->pos1.y += sprite->data[0] / 10;
sprite->data[5] += sprite->data[1];
@@ -1942,9 +2341,9 @@ void SpriteCB_TradePokeball_Default(struct Sprite * sprite)
}
}
-void SpriteCB_TradePokeball_Outbound(struct Sprite * sprite)
+static void SpriteCB_TradePokeball_Outbound(struct Sprite * sprite)
{
- sprite->pos2.y += gUnknown_826D1E4[sprite->data[0]];
+ sprite->pos2.y += gTradeBallVerticalVelocityTable[sprite->data[0]];
if (sprite->data[0] == 22)
PlaySE(SE_KON);
sprite->data[0]++;
@@ -1957,14 +2356,14 @@ void SpriteCB_TradePokeball_Outbound(struct Sprite * sprite)
}
}
-void SpriteCB_TradePokeball_Outbound2(struct Sprite * sprite)
+static void SpriteCB_TradePokeball_Outbound2(struct Sprite * sprite)
{
if (sprite->data[1] == 20)
StartSpriteAffineAnim(sprite, 1);
sprite->data[1]++;
if (sprite->data[1] > 20)
{
- sprite->pos2.y -= gUnknown_826D1E4[sprite->data[0]];
+ sprite->pos2.y -= gTradeBallVerticalVelocityTable[sprite->data[0]];
sprite->data[0]++;
if (sprite->data[0] == 23)
{
@@ -1974,7 +2373,7 @@ void SpriteCB_TradePokeball_Outbound2(struct Sprite * sprite)
}
}
-void SpriteCB_TradePokeball_Inbound(struct Sprite * sprite)
+static void SpriteCB_TradePokeball_Inbound(struct Sprite * sprite)
{
if (sprite->data[2] == 0)
{
@@ -1994,7 +2393,7 @@ void SpriteCB_TradePokeball_Inbound(struct Sprite * sprite)
PlaySE(SE_KON3);
if (sprite->data[0] == 107)
PlaySE(SE_KON4);
- sprite->pos2.y += gUnknown_826D1E4[sprite->data[0]];
+ sprite->pos2.y += gTradeBallVerticalVelocityTable[sprite->data[0]];
sprite->data[0]++;
if (sprite->data[0] == 108)
sprite->callback = SpriteCallbackDummy;
@@ -2012,7 +2411,7 @@ u16 GetInGameTradeSpeciesInfo(void)
return inGameTrade->requestedSpecies;
}
-void BufferInGameTradeMonName(void)
+static void BufferInGameTradeMonName(void)
{
// Populates gStringVar1 with the nickname of the sent Pokemon and
// gStringVar2 with the name of the offered species.
@@ -2023,7 +2422,7 @@ void BufferInGameTradeMonName(void)
StringCopy(gStringVar2, gSpeciesNames[inGameTrade->species]);
}
-void CreateInGameTradePokemonInternal(u8 playerSlot, u8 inGameTradeIdx)
+static void CreateInGameTradePokemonInternal(u8 playerSlot, u8 inGameTradeIdx)
{
const struct InGameTrade *inGameTrade = &gInGameTrades[inGameTradeIdx];
u8 level = GetMonData(&gPlayerParty[playerSlot], MON_DATA_LEVEL);
@@ -2094,7 +2493,7 @@ void CreateInGameTradePokemon(void)
CreateInGameTradePokemonInternal(gSpecialVar_0x8005, gSpecialVar_0x8004);
}
-void CB2_RunTradeAnim_LinkTrade(void)
+static void CB2_RunTradeAnim_LinkTrade(void)
{
if (sub_8050F14() == TRUE)
{
@@ -2114,7 +2513,7 @@ void CB2_RunTradeAnim_LinkTrade(void)
UpdatePaletteFade();
}
-void sub_8053E1C(void)
+static void sub_8053E1C(void)
{
u8 mpId = sub_804FFC4();
sub_805383C();
@@ -2131,7 +2530,7 @@ void sub_8053E1C(void)
UpdatePaletteFade();
}
-void sub_8053E8C(void)
+static void sub_8053E8C(void)
{
switch (gMain.state)
{
@@ -2301,7 +2700,7 @@ void sub_8053E8C(void)
UpdatePaletteFade();
}
-void sub_80543C4(void)
+static void sub_80543C4(void)
{
if (!gPaletteFade.active)
{
@@ -2329,7 +2728,7 @@ void DoInGameTradeScene(void)
HelpSystem_Disable();
}
-void sub_8054470(u8 taskId)
+static void sub_8054470(u8 taskId)
{
if (!gPaletteFade.active)
{
@@ -2339,7 +2738,7 @@ void sub_8054470(u8 taskId)
}
}
-void CheckPartnersMonForRibbons(void)
+static void CheckPartnersMonForRibbons(void)
{
u8 nRibbons = 0;
u8 i;
@@ -2366,7 +2765,7 @@ void DrawTextOnTradeWindow(u8 windowId, const u8 *str, s8 speed)
CopyWindowToVram(windowId, 3);
}
-void Task_AnimateWirelessSignal(u8 taskId)
+static void Task_AnimateWirelessSignal(u8 taskId)
{
s16 *data = gTasks[taskId].data;
u16 r2 = 16 * gUnknown_826D250[data[0]][0];
@@ -2397,7 +2796,7 @@ void Task_AnimateWirelessSignal(u8 taskId)
data[1]++;
}
-void c3_0805465C(u8 taskId)
+static void c3_0805465C(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -2426,7 +2825,7 @@ void c3_0805465C(u8 taskId)
}
}
-void sub_8054734(u8 taskId)
+static void sub_8054734(u8 taskId)
{
s16 *data = gTasks[taskId].data;