mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 03:34:15 +01:00
Continue trade doc
This commit is contained in:
parent
dadb1cb9f1
commit
66a68159b1
Before Width: | Height: | Size: 464 B After Width: | Height: | Size: 464 B |
@ -9,8 +9,6 @@
|
|||||||
#define INGAME_TRADE_HORSEA 2
|
#define INGAME_TRADE_HORSEA 2
|
||||||
#define INGAME_TRADE_MEOWTH 3
|
#define INGAME_TRADE_MEOWTH 3
|
||||||
|
|
||||||
#define INGAME_TRADE_MAIL_LENGTH 9
|
|
||||||
|
|
||||||
#define PLAYER_MON_INVALID 0
|
#define PLAYER_MON_INVALID 0
|
||||||
#define PLAYER_MON_VALID 1
|
#define PLAYER_MON_VALID 1
|
||||||
#define PARTNER_MON_INVALID 2
|
#define PARTNER_MON_INVALID 2
|
||||||
@ -26,15 +24,15 @@
|
|||||||
#define MENU_ACTION_TRADE 1
|
#define MENU_ACTION_TRADE 1
|
||||||
|
|
||||||
// Message indexes for sTradeMessages
|
// Message indexes for sTradeMessages
|
||||||
#define TRADE_MSG_STANDBY 0
|
#define TRADE_MSG_STANDBY 0
|
||||||
#define TRADE_MSG_CANCELED 1
|
#define TRADE_MSG_CANCELED 1
|
||||||
#define TRADE_MSG_ONLY_MON1 2
|
#define TRADE_MSG_ONLY_MON1 2
|
||||||
#define TRADE_MSG_ONLY_MON2 3
|
#define TRADE_MSG_ONLY_MON2 3
|
||||||
#define TRADE_MSG_WAITING_FOR_FRIEND 4
|
#define TRADE_MSG_WAITING_FOR_FRIEND 4
|
||||||
#define TRADE_MSG_FRIEND_WANTS_TO_TRADE 5
|
#define TRADE_MSG_FRIEND_WANTS_TO_TRADE 5
|
||||||
#define TRADE_MSG_MON_CANT_BE_TRADED 6
|
#define TRADE_MSG_MON_CANT_BE_TRADED 6
|
||||||
#define TRADE_MSG_EGG_CANT_BE_TRADED 7
|
#define TRADE_MSG_EGG_CANT_BE_TRADED 7
|
||||||
#define TRADE_MSG_FRIENDS_MON_CANT_BE_TRADED 8
|
#define TRADE_MSG_FRIENDS_MON_CANT_BE_TRADED 8
|
||||||
|
|
||||||
// Message indexes for sUnionRoomTradeMessages
|
// Message indexes for sUnionRoomTradeMessages
|
||||||
#define UR_TRADE_MSG_NONE 0
|
#define UR_TRADE_MSG_NONE 0
|
||||||
@ -53,5 +51,7 @@
|
|||||||
#define CANT_REGISTER_MON 1
|
#define CANT_REGISTER_MON 1
|
||||||
#define CANT_REGISTER_EGG 2
|
#define CANT_REGISTER_EGG 2
|
||||||
|
|
||||||
|
#define LINK_TRADE_TIMEOUT 300
|
||||||
|
|
||||||
|
|
||||||
#endif //GUARD_CONSTANTS_TRADE_H
|
#endif //GUARD_CONSTANTS_TRADE_H
|
||||||
|
@ -128,7 +128,7 @@ struct UnkRfuStruct_Sub_Unused
|
|||||||
|
|
||||||
struct UnkRfuStruct_2
|
struct UnkRfuStruct_2
|
||||||
{
|
{
|
||||||
/* 0x000 */ void (*unk_00)(void);
|
/* 0x000 */ void (*linkRfuCallback)(void);
|
||||||
/* 0x004 */ u16 unk_04;
|
/* 0x004 */ u16 unk_04;
|
||||||
/* 0x006 */ u8 filler_06[4];
|
/* 0x006 */ u8 filler_06[4];
|
||||||
/* 0x00a */ u16 unk_0a;
|
/* 0x00a */ u16 unk_0a;
|
||||||
@ -224,7 +224,7 @@ void sub_800F804(void);
|
|||||||
void sub_800F850(void);
|
void sub_800F850(void);
|
||||||
u8 sub_800FCD8(void);
|
u8 sub_800FCD8(void);
|
||||||
bool32 sub_800FE84(const u8 *src, size_t size);
|
bool32 sub_800FE84(const u8 *src, size_t size);
|
||||||
void Rfu_set_zero(void);
|
void ClearLinkRfuCallback(void);
|
||||||
u8 sub_80104F4(void);
|
u8 sub_80104F4(void);
|
||||||
u8 rfu_get_multiplayer_id(void);
|
u8 rfu_get_multiplayer_id(void);
|
||||||
bool8 sub_8010100(u8 a0);
|
bool8 sub_8010100(u8 a0);
|
||||||
|
@ -15,13 +15,13 @@ extern const struct WindowTemplate gUnknown_0833900C;
|
|||||||
|
|
||||||
s32 sub_807A728(void);
|
s32 sub_807A728(void);
|
||||||
void sub_80773AC(void);
|
void sub_80773AC(void);
|
||||||
void sub_807AE50(void);
|
void CB2_LinkTrade(void);
|
||||||
int CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct a0, u16, u16, u8);
|
int CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct a0, u16, u16, u8);
|
||||||
int GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuStruct_02022B14Substruct a1, u16 a2, u16 a3, u8 a4, u16 a5, u8 a6);
|
int GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuStruct_02022B14Substruct a1, u16 a2, u16 a3, u8 a4, u16 a5, u8 a6);
|
||||||
int sub_807A918(struct Pokemon*, u16);
|
int sub_807A918(struct Pokemon*, u16);
|
||||||
void sub_807B140(void);
|
void sub_807B140(void);
|
||||||
void sub_807B154(void);
|
void sub_807B154(void);
|
||||||
void sub_807F19C(void);
|
void InitTradeBg(void);
|
||||||
void DrawTextOnTradeWindow(u8, const u8 *, u8);
|
void DrawTextOnTradeWindow(u8, const u8 *, u8);
|
||||||
|
|
||||||
#endif //GUARD_TRADE_H
|
#endif //GUARD_TRADE_H
|
||||||
|
@ -346,7 +346,6 @@ static void sub_80B2918(u8 taskId)
|
|||||||
HideFieldMessageBox();
|
HideFieldMessageBox();
|
||||||
gTasks[taskId].func = sub_80B2CB0;
|
gTasks[taskId].func = sub_80B2CB0;
|
||||||
}
|
}
|
||||||
// EXCHANGE_STAT_4 or EXCHANGE_STAT_5 in sub_80B2478
|
|
||||||
else if (gSpecialVar_Result == 7 || gSpecialVar_Result == 9)
|
else if (gSpecialVar_Result == 7 || gSpecialVar_Result == 9)
|
||||||
{
|
{
|
||||||
CloseLink();
|
CloseLink();
|
||||||
@ -394,7 +393,6 @@ static void sub_80B2A08(u8 taskId)
|
|||||||
HideFieldMessageBox();
|
HideFieldMessageBox();
|
||||||
gTasks[taskId].func = sub_80B2CB0;
|
gTasks[taskId].func = sub_80B2CB0;
|
||||||
}
|
}
|
||||||
// EXCHANGE_STAT_4 or EXCHANGE_STAT_5 in sub_80B2478
|
|
||||||
else if (gSpecialVar_Result == 7 || gSpecialVar_Result == 9)
|
else if (gSpecialVar_Result == 7 || gSpecialVar_Result == 9)
|
||||||
{
|
{
|
||||||
CloseLink();
|
CloseLink();
|
||||||
@ -1111,7 +1109,7 @@ static void sub_80B3894(u8 taskId)
|
|||||||
case 0:
|
case 0:
|
||||||
ScriptContext2_Enable();
|
ScriptContext2_Enable();
|
||||||
FadeScreen(1, 0);
|
FadeScreen(1, 0);
|
||||||
Rfu_set_zero();
|
ClearLinkRfuCallback();
|
||||||
data[0]++;
|
data[0]++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
|
@ -71,7 +71,7 @@ static const union AnimCmd *const gSpriteAnimTable_832DC34[] =
|
|||||||
gSpriteAnim_832DC2C
|
gSpriteAnim_832DC2C
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct SpriteSheet gUnknown_0832DC3C =
|
static const struct SpriteSheet sTradeButtonsSpriteSheet =
|
||||||
{
|
{
|
||||||
.data = gTradeButtons_Gfx,
|
.data = gTradeButtons_Gfx,
|
||||||
.size = 0x800,
|
.size = 0x800,
|
||||||
@ -168,7 +168,7 @@ static const struct SpritePalette gSpritePalette_TradeScreenText =
|
|||||||
// 2 3 8 9
|
// 2 3 8 9
|
||||||
// 4 5 10 11
|
// 4 5 10 11
|
||||||
// 12
|
// 12
|
||||||
static const u8 gTradeNextSelectedMonTable[][4][6] =
|
static const u8 gTradeNextSelectedMonTable[(PARTY_SIZE * 2) + 1][4][6] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
{4, 2, 12, 12, 0, 0},
|
{4, 2, 12, 12, 0, 0},
|
||||||
@ -250,7 +250,7 @@ static const u8 gTradeNextSelectedMonTable[][4][6] =
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u8 gTradeMonSpriteCoords[][2] =
|
static const u8 gTradeMonSpriteCoords[(PARTY_SIZE * 2) + 1][2] =
|
||||||
{
|
{
|
||||||
// Your party
|
// Your party
|
||||||
{1, 5 },
|
{1, 5 },
|
||||||
@ -271,7 +271,7 @@ static const u8 gTradeMonSpriteCoords[][2] =
|
|||||||
{23, 18} // CANCEL
|
{23, 18} // CANCEL
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u8 gTradeLevelDisplayCoords[][6][2] =
|
static const u8 gTradeLevelDisplayCoords[][PARTY_SIZE][2] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
// Your party
|
// Your party
|
||||||
@ -293,7 +293,7 @@ static const u8 gTradeLevelDisplayCoords[][6][2] =
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u8 gTradeMonBoxCoords[][6][2] =
|
static const u8 gTradeMonBoxCoords[][PARTY_SIZE][2] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
// Your party
|
// Your party
|
||||||
@ -598,8 +598,8 @@ static const u8 sTradeMenuPartyMonBoxDimensions[3][2] =
|
|||||||
[TRADE_PARTNER] = {19, 3}
|
[TRADE_PARTNER] = {19, 3}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u16 sTradePal_Ball[] = INCBIN_U16("graphics/trade/ball.gbapal");
|
static const u16 sTradePal_PokeBall[] = INCBIN_U16("graphics/trade/pokeball.gbapal");
|
||||||
static const u8 sTradeGfx_Ball[] = INCBIN_U8("graphics/trade/ball.4bpp");
|
static const u8 sTradeGfx_PokeBall[] = INCBIN_U8("graphics/trade/pokeball.4bpp");
|
||||||
static const u8 sTradeGfx_PokeBallSymbol[] = INCBIN_U8("graphics/trade/pokeball_symbol.8bpp"); // unused?
|
static const u8 sTradeGfx_PokeBallSymbol[] = INCBIN_U8("graphics/trade/pokeball_symbol.8bpp"); // unused?
|
||||||
static const u16 sTradeTilemap_Cable[] = INCBIN_U16("graphics/trade/cable_closeup_map.bin");
|
static const u16 sTradeTilemap_Cable[] = INCBIN_U16("graphics/trade/cable_closeup_map.bin");
|
||||||
static const u16 sTradeTilemap_PokeBallSymbol[] = INCBIN_U16("graphics/trade/pokeball_symbol_map.bin"); // unused?
|
static const u16 sTradeTilemap_PokeBallSymbol[] = INCBIN_U16("graphics/trade/pokeball_symbol_map.bin"); // unused?
|
||||||
@ -704,16 +704,16 @@ static const union AffineAnimCmd *const gSpriteAffineAnimTable_8338D0C[] =
|
|||||||
gSpriteAffineAnim_8338CEC
|
gSpriteAffineAnim_8338CEC
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct SpriteSheet gUnknown_08338D18 =
|
static const struct SpriteSheet sPokeBallSpriteSheet =
|
||||||
{
|
{
|
||||||
.data = sTradeGfx_Ball,
|
.data = sTradeGfx_PokeBall,
|
||||||
.size = 0x600,
|
.size = 0x600,
|
||||||
.tag = 5557
|
.tag = 5557
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct SpritePalette gUnknown_08338D20 =
|
static const struct SpritePalette sPokeBallSpritePalette =
|
||||||
{
|
{
|
||||||
.data = sTradePal_Ball,
|
.data = sTradePal_PokeBall,
|
||||||
.tag = 5558
|
.tag = 5558
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -760,20 +760,20 @@ static const union AffineAnimCmd *const gSpriteAffineAnimTable_8338D6C[] =
|
|||||||
gSpriteAffineAnim_8338D54
|
gSpriteAffineAnim_8338D54
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct SpriteSheet gUnknown_08338D70 =
|
static const struct SpriteSheet sGlow1SpriteSheet =
|
||||||
{
|
{
|
||||||
.data = sTradeGfx_Glow1,
|
.data = sTradeGfx_Glow1,
|
||||||
.size = 0x200,
|
.size = 0x200,
|
||||||
.tag = 5550
|
.tag = 5550
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct SpritePalette gUnknown_08338D78 =
|
static const struct SpritePalette sMiscTradeSpritePalette =
|
||||||
{
|
{
|
||||||
.data = sTradePal_Misc,
|
.data = sTradePal_Misc,
|
||||||
.tag = 5551
|
.tag = 5551
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct SpritePalette gUnknown_08338D80 =
|
static const struct SpritePalette sGbaSpritePalette =
|
||||||
{
|
{
|
||||||
.data = sTradePal_Gba,
|
.data = sTradePal_Gba,
|
||||||
.tag = 5555
|
.tag = 5555
|
||||||
@ -815,7 +815,7 @@ static const union AnimCmd *const gSpriteAnimTable_8338DB8[] =
|
|||||||
gSpriteAnim_8338DB0
|
gSpriteAnim_8338DB0
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct SpriteSheet gUnknown_08338DC0 =
|
static const struct SpriteSheet sGlow2SpriteSheet =
|
||||||
{
|
{
|
||||||
.data = sTradeGfx_Glow2,
|
.data = sTradeGfx_Glow2,
|
||||||
.size = 0x300,
|
.size = 0x300,
|
||||||
@ -851,7 +851,7 @@ static const union AnimCmd *const gSpriteAnimTable_8338DF0[] =
|
|||||||
gSpriteAnim_8338DE8
|
gSpriteAnim_8338DE8
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct SpriteSheet gUnknown_08338DF4 =
|
static const struct SpriteSheet sCableEndSpriteSheet =
|
||||||
{
|
{
|
||||||
.data = sTradeGfx_CableEnd,
|
.data = sTradeGfx_CableEnd,
|
||||||
.size = 0x100,
|
.size = 0x100,
|
||||||
@ -912,7 +912,7 @@ static const union AnimCmd *const gSpriteAnimTable_8338E68[] =
|
|||||||
gSpriteAnim_8338E40
|
gSpriteAnim_8338E40
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct SpriteSheet gUnknown_08338E6C =
|
static const struct SpriteSheet sGbaScreenSpriteSheet =
|
||||||
{
|
{
|
||||||
.data = sTradeGfx_GbaScreen,
|
.data = sTradeGfx_GbaScreen,
|
||||||
.size = 0x1000,
|
.size = 0x1000,
|
||||||
@ -1022,7 +1022,7 @@ static const struct InGameTrade sIngameTrades[] =
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u16 sIngameTradeMail[][INGAME_TRADE_MAIL_LENGTH + 1] =
|
static const u16 sIngameTradeMail[][MAIL_WORDS_COUNT + 1] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
EC_WORD_BE,
|
EC_WORD_BE,
|
||||||
@ -1122,7 +1122,7 @@ static const struct BgTemplate gUnknown_08339014[] =
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const s8 gTradeBallVerticalVelocityTable[] =
|
static const s8 sTradeBallVerticalVelocityTable[] =
|
||||||
{
|
{
|
||||||
0, 0, 1, 0,
|
0, 0, 1, 0,
|
||||||
1, 0, 1, 1,
|
1, 0, 1, 1,
|
||||||
|
@ -406,7 +406,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
|
|||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
sub_807F19C();
|
InitTradeBg();
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
|
@ -739,7 +739,7 @@ void ClearLinkCallback(void)
|
|||||||
{
|
{
|
||||||
if (gWirelessCommType)
|
if (gWirelessCommType)
|
||||||
{
|
{
|
||||||
Rfu_set_zero();
|
ClearLinkRfuCallback();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -751,7 +751,7 @@ void ClearLinkCallback_2(void)
|
|||||||
{
|
{
|
||||||
if (gWirelessCommType)
|
if (gWirelessCommType)
|
||||||
{
|
{
|
||||||
Rfu_set_zero();
|
ClearLinkRfuCallback();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -3169,7 +3169,7 @@ bool32 sub_800F4F0(void)
|
|||||||
sub_8011A64(2, 0x9000);
|
sub_8011A64(2, 0x9000);
|
||||||
rfu_clearAllSlot();
|
rfu_clearAllSlot();
|
||||||
gReceivedRemoteLinkPlayers = FALSE;
|
gReceivedRemoteLinkPlayers = FALSE;
|
||||||
gUnknown_03005000.unk_00 = 0;
|
gUnknown_03005000.linkRfuCallback = NULL;
|
||||||
if (gUnknown_03005000.unk_ce4 == 1)
|
if (gUnknown_03005000.unk_ce4 == 1)
|
||||||
{
|
{
|
||||||
sub_8011A64(2, 0x9000);
|
sub_8011A64(2, 0x9000);
|
||||||
@ -3264,17 +3264,17 @@ struct UnkLinkRfuStruct_02022B14 *sub_800F7DC(void)
|
|||||||
|
|
||||||
bool32 IsSendingKeysToRfu(void)
|
bool32 IsSendingKeysToRfu(void)
|
||||||
{
|
{
|
||||||
return gUnknown_03005000.unk_00 == rfu_func_080F97B8;
|
return gUnknown_03005000.linkRfuCallback == rfu_func_080F97B8;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_800F804(void)
|
void sub_800F804(void)
|
||||||
{
|
{
|
||||||
gUnknown_03005000.unk_00 = rfu_func_080F97B8;
|
gUnknown_03005000.linkRfuCallback = rfu_func_080F97B8;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Rfu_set_zero(void)
|
void ClearLinkRfuCallback(void)
|
||||||
{
|
{
|
||||||
gUnknown_03005000.unk_00 = NULL;
|
gUnknown_03005000.linkRfuCallback = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_800F820(void)
|
void sub_800F820(void)
|
||||||
@ -3287,8 +3287,8 @@ void sub_800F820(void)
|
|||||||
|
|
||||||
void sub_800F850(void)
|
void sub_800F850(void)
|
||||||
{
|
{
|
||||||
if (gUnknown_03005000.unk_00 == NULL)
|
if (gUnknown_03005000.linkRfuCallback == NULL)
|
||||||
gUnknown_03005000.unk_00 = sub_800F820;
|
gUnknown_03005000.linkRfuCallback = sub_800F820;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_800F86C(u8 unused)
|
static void sub_800F86C(u8 unused)
|
||||||
@ -3507,7 +3507,7 @@ void sub_800FE50(void *a0)
|
|||||||
bool32 sub_800FE84(const u8 *src, size_t size)
|
bool32 sub_800FE84(const u8 *src, size_t size)
|
||||||
{
|
{
|
||||||
bool8 r4;
|
bool8 r4;
|
||||||
if (gUnknown_03005000.unk_00 != NULL)
|
if (gUnknown_03005000.linkRfuCallback != NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (gSendCmd[0] != 0)
|
if (gSendCmd[0] != 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -3530,7 +3530,7 @@ bool32 sub_800FE84(const u8 *src, size_t size)
|
|||||||
gUnknown_03005000.unk_6c.unk_04 = gBlockSendBuffer;
|
gUnknown_03005000.unk_6c.unk_04 = gBlockSendBuffer;
|
||||||
}
|
}
|
||||||
sub_800FD14(0x8800);
|
sub_800FD14(0x8800);
|
||||||
gUnknown_03005000.unk_00 = rfufunc_80F9F44;
|
gUnknown_03005000.linkRfuCallback = rfufunc_80F9F44;
|
||||||
gUnknown_03005000.unk_5b = 0;
|
gUnknown_03005000.unk_5b = 0;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -3543,12 +3543,12 @@ static void rfufunc_80F9F44(void)
|
|||||||
if (gUnknown_03005000.unk_0c == 1)
|
if (gUnknown_03005000.unk_0c == 1)
|
||||||
{
|
{
|
||||||
if (++gUnknown_03005000.unk_5b > 2)
|
if (++gUnknown_03005000.unk_5b > 2)
|
||||||
gUnknown_03005000.unk_00 = sub_800FFB0;
|
gUnknown_03005000.linkRfuCallback = sub_800FFB0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ((gRecvCmds[GetMultiplayerId()][0] & 0xff00) == 0x8800)
|
if ((gRecvCmds[GetMultiplayerId()][0] & 0xff00) == 0x8800)
|
||||||
gUnknown_03005000.unk_00 = sub_800FFB0;
|
gUnknown_03005000.linkRfuCallback = sub_800FFB0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3564,7 +3564,7 @@ static void sub_800FFB0(void)
|
|||||||
if (gUnknown_03005000.unk_6c.unk_02 <= gUnknown_03005000.unk_6c.unk_00)
|
if (gUnknown_03005000.unk_6c.unk_02 <= gUnknown_03005000.unk_6c.unk_00)
|
||||||
{
|
{
|
||||||
gUnknown_03005000.unk_6c.unk_10 = 0;
|
gUnknown_03005000.unk_6c.unk_10 = 0;
|
||||||
gUnknown_03005000.unk_00 = rfufunc_80FA020;
|
gUnknown_03005000.linkRfuCallback = rfufunc_80FA020;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3586,11 +3586,11 @@ static void rfufunc_80FA020(void)
|
|||||||
gUnknown_02022B44.unk_64++;
|
gUnknown_02022B44.unk_64++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
gUnknown_03005000.unk_00 = NULL;
|
gUnknown_03005000.linkRfuCallback = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
gUnknown_03005000.unk_00 = NULL;
|
gUnknown_03005000.linkRfuCallback = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sub_8010100(u8 a0)
|
bool8 sub_8010100(u8 a0)
|
||||||
@ -3606,7 +3606,7 @@ void sub_801011C(void)
|
|||||||
sub_800C048();
|
sub_800C048();
|
||||||
gReceivedRemoteLinkPlayers = 0;
|
gReceivedRemoteLinkPlayers = 0;
|
||||||
gUnknown_03005000.unk_ef = 1;
|
gUnknown_03005000.unk_ef = 1;
|
||||||
gUnknown_03005000.unk_00 = NULL;
|
gUnknown_03005000.linkRfuCallback = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8010148(void)
|
void sub_8010148(void)
|
||||||
@ -3624,7 +3624,7 @@ void sub_8010168(void)
|
|||||||
gUnknown_03005000.unk_ce4 = 2;
|
gUnknown_03005000.unk_ce4 = 2;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
gUnknown_03005000.unk_00 = sub_8010148;
|
gUnknown_03005000.linkRfuCallback = sub_8010148;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LinkRfu_FatalError(void)
|
void LinkRfu_FatalError(void)
|
||||||
@ -3654,7 +3654,7 @@ void sub_80101CC(void)
|
|||||||
sub_8010168();
|
sub_8010168();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
gUnknown_03005000.unk_00 = sub_8010168;
|
gUnknown_03005000.linkRfuCallback = sub_8010168;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3663,16 +3663,16 @@ void sub_801022C(void)
|
|||||||
if (gSendCmd[0] == 0 && gUnknown_03005000.unk_ce8 == 0)
|
if (gSendCmd[0] == 0 && gUnknown_03005000.unk_ce8 == 0)
|
||||||
{
|
{
|
||||||
sub_800FD14(0x5f00);
|
sub_800FD14(0x5f00);
|
||||||
gUnknown_03005000.unk_00 = sub_80101CC;
|
gUnknown_03005000.linkRfuCallback = sub_80101CC;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8010264(u8 taskId)
|
void sub_8010264(u8 taskId)
|
||||||
{
|
{
|
||||||
if (gUnknown_03005000.unk_00 == NULL)
|
if (gUnknown_03005000.linkRfuCallback == NULL)
|
||||||
{
|
{
|
||||||
gUnknown_03005000.unk_cd9 = 1;
|
gUnknown_03005000.unk_cd9 = 1;
|
||||||
gUnknown_03005000.unk_00 = sub_801022C;
|
gUnknown_03005000.linkRfuCallback = sub_801022C;
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3708,7 +3708,7 @@ void sub_80102B8(void)
|
|||||||
for (i = 0; i < MAX_RFU_PLAYERS; i++)
|
for (i = 0; i < MAX_RFU_PLAYERS; i++)
|
||||||
gUnknown_03005000.unk_e9[i] = 0;
|
gUnknown_03005000.unk_e9[i] = 0;
|
||||||
gUnknown_03005000.unk_100++;
|
gUnknown_03005000.unk_100++;
|
||||||
gUnknown_03005000.unk_00 = NULL;
|
gUnknown_03005000.linkRfuCallback = NULL;
|
||||||
}
|
}
|
||||||
gUnknown_03005000.unk_fe++;
|
gUnknown_03005000.unk_fe++;
|
||||||
}
|
}
|
||||||
@ -3718,7 +3718,7 @@ void sub_8010358(void)
|
|||||||
if (gUnknown_03005000.unk_124.unk_8c2 == 0 && gSendCmd[0] == 0)
|
if (gUnknown_03005000.unk_124.unk_8c2 == 0 && gSendCmd[0] == 0)
|
||||||
{
|
{
|
||||||
sub_800FD14(0x6600);
|
sub_800FD14(0x6600);
|
||||||
gUnknown_03005000.unk_00 = sub_80102B8;
|
gUnknown_03005000.linkRfuCallback = sub_80102B8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3732,7 +3732,7 @@ void sub_8010390(void)
|
|||||||
if (gUnknown_03005000.unk_124.unk_8c2 == 0 && gSendCmd[0] == 0)
|
if (gUnknown_03005000.unk_124.unk_8c2 == 0 && gSendCmd[0] == 0)
|
||||||
{
|
{
|
||||||
sub_800FD14(0x6600);
|
sub_800FD14(0x6600);
|
||||||
gUnknown_03005000.unk_00 = sub_80102B8;
|
gUnknown_03005000.linkRfuCallback = sub_80102B8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -3748,7 +3748,7 @@ void sub_8010390(void)
|
|||||||
if (gUnknown_03005000.unk_124.unk_8c2 == 0 && gSendCmd[0] == 0)
|
if (gUnknown_03005000.unk_124.unk_8c2 == 0 && gSendCmd[0] == 0)
|
||||||
{
|
{
|
||||||
sub_800FD14(0x6600);
|
sub_800FD14(0x6600);
|
||||||
gUnknown_03005000.unk_00 = sub_8010358;
|
gUnknown_03005000.linkRfuCallback = sub_8010358;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3756,9 +3756,9 @@ void sub_8010390(void)
|
|||||||
|
|
||||||
void sub_8010434(void)
|
void sub_8010434(void)
|
||||||
{
|
{
|
||||||
if (gUnknown_03005000.unk_00 == NULL)
|
if (gUnknown_03005000.linkRfuCallback == NULL)
|
||||||
{
|
{
|
||||||
gUnknown_03005000.unk_00 = sub_8010390;
|
gUnknown_03005000.linkRfuCallback = sub_8010390;
|
||||||
gUnknown_03005000.unk_fe = 0;
|
gUnknown_03005000.unk_fe = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3804,13 +3804,13 @@ bool8 sub_8010500(void)
|
|||||||
{
|
{
|
||||||
if (gUnknown_03005000.unk_f1 == 2)
|
if (gUnknown_03005000.unk_f1 == 2)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
return gUnknown_03005000.unk_00 ? FALSE : TRUE;
|
return gUnknown_03005000.linkRfuCallback ? FALSE : TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8010528(void)
|
static void sub_8010528(void)
|
||||||
{
|
{
|
||||||
if (gUnknown_03005000.unk_00)
|
if (gUnknown_03005000.linkRfuCallback)
|
||||||
gUnknown_03005000.unk_00();
|
gUnknown_03005000.linkRfuCallback();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sub_8010540(void)
|
bool8 sub_8010540(void)
|
||||||
@ -4345,12 +4345,12 @@ void sub_80111B0(bool32 a0)
|
|||||||
void sub_80111DC(void)
|
void sub_80111DC(void)
|
||||||
{
|
{
|
||||||
sub_8011E94(gUnknown_03004140.unk_00, 1);
|
sub_8011E94(gUnknown_03004140.unk_00, 1);
|
||||||
gUnknown_03005000.unk_00 = NULL;
|
gUnknown_03005000.linkRfuCallback = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_80111FC(void)
|
void sub_80111FC(void)
|
||||||
{
|
{
|
||||||
gUnknown_03005000.unk_00 = sub_80111DC;
|
gUnknown_03005000.linkRfuCallback = sub_80111DC;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_801120C(u8 a0, u8 unused1)
|
void sub_801120C(u8 a0, u8 unused1)
|
||||||
|
@ -179,7 +179,7 @@ static void DisplayPartyPokemonGenderNidoranCheck(struct Pokemon *, struct Struc
|
|||||||
static void DisplayPartyPokemonHPCheck(struct Pokemon *, struct Struct203CEDC *, u8);
|
static void DisplayPartyPokemonHPCheck(struct Pokemon *, struct Struct203CEDC *, u8);
|
||||||
static void DisplayPartyPokemonMaxHPCheck(struct Pokemon *, struct Struct203CEDC *, u8);
|
static void DisplayPartyPokemonMaxHPCheck(struct Pokemon *, struct Struct203CEDC *, u8);
|
||||||
static void DisplayPartyPokemonHPBarCheck(struct Pokemon *, struct Struct203CEDC *);
|
static void DisplayPartyPokemonHPBarCheck(struct Pokemon *, struct Struct203CEDC *);
|
||||||
static void DisplayPartyPokemonOtherText(u8, struct Struct203CEDC *, u8);
|
static void DisplayPartyPokemonSelectionText(u8, struct Struct203CEDC *, u8);
|
||||||
static u8 sub_81B8830(void);
|
static u8 sub_81B8830(void);
|
||||||
static bool8 GetBattleEntryEligibility(struct Pokemon *);
|
static bool8 GetBattleEntryEligibility(struct Pokemon *);
|
||||||
static bool8 sub_81B218C(u8);
|
static bool8 sub_81B218C(u8);
|
||||||
@ -1988,7 +1988,7 @@ static void DisplayPartyPokemonSelectData(u8 slot, u8 stringID)
|
|||||||
DisplayPartyPokemonLevelCheck(mon, &gUnknown_0203CEDC[slot], 0);
|
DisplayPartyPokemonLevelCheck(mon, &gUnknown_0203CEDC[slot], 0);
|
||||||
DisplayPartyPokemonGenderNidoranCheck(mon, &gUnknown_0203CEDC[slot], 0);
|
DisplayPartyPokemonGenderNidoranCheck(mon, &gUnknown_0203CEDC[slot], 0);
|
||||||
}
|
}
|
||||||
DisplayPartyPokemonOtherText(stringID, &gUnknown_0203CEDC[slot], 0);
|
DisplayPartyPokemonSelectionText(stringID, &gUnknown_0203CEDC[slot], 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void DisplayPartyPokemonSelectForBattle(u8 slot)
|
static void DisplayPartyPokemonSelectForBattle(u8 slot)
|
||||||
@ -3531,7 +3531,7 @@ static void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct Struct203CEDC *pt
|
|||||||
CopyWindowToVram(ptr->windowId, 2);
|
CopyWindowToVram(ptr->windowId, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void DisplayPartyPokemonOtherText(u8 stringID, struct Struct203CEDC *ptr, u8 c)
|
static void DisplayPartyPokemonSelectionText(u8 stringID, struct Struct203CEDC *ptr, u8 c)
|
||||||
{
|
{
|
||||||
if (c != 0)
|
if (c != 0)
|
||||||
{
|
{
|
||||||
@ -4305,9 +4305,9 @@ static void sub_81B469C(u8 taskId)
|
|||||||
if (gUnknown_0203CEC8.unk8_0 == 12)
|
if (gUnknown_0203CEC8.unk8_0 == 12)
|
||||||
{
|
{
|
||||||
if (GetMonData(mon, MON_DATA_HELD_ITEM) != ITEM_NONE)
|
if (GetMonData(mon, MON_DATA_HELD_ITEM) != ITEM_NONE)
|
||||||
DisplayPartyPokemonOtherText(11, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId], 1);
|
DisplayPartyPokemonSelectionText(11, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId], 1);
|
||||||
else
|
else
|
||||||
DisplayPartyPokemonOtherText(12, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId], 1);
|
DisplayPartyPokemonSelectionText(12, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId], 1);
|
||||||
}
|
}
|
||||||
sub_81B1C1C(taskId);
|
sub_81B1C1C(taskId);
|
||||||
}
|
}
|
||||||
@ -4403,7 +4403,7 @@ static void sub_81B4988(u8 taskId)
|
|||||||
|
|
||||||
SetMonData(mon, MON_DATA_HELD_ITEM, &item);
|
SetMonData(mon, MON_DATA_HELD_ITEM, &item);
|
||||||
sub_81B5C94(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId]);
|
sub_81B5C94(mon, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId]);
|
||||||
DisplayPartyPokemonOtherText(12, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId], 1);
|
DisplayPartyPokemonSelectionText(12, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId], 1);
|
||||||
gTasks[taskId].func = sub_81B1C1C;
|
gTasks[taskId].func = sub_81B1C1C;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4572,7 +4572,7 @@ static void CursorCb_Enter(u8 taskId)
|
|||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
gSelectedOrderFromParty[i] = gUnknown_0203CEC8.slotId + 1;
|
gSelectedOrderFromParty[i] = gUnknown_0203CEC8.slotId + 1;
|
||||||
DisplayPartyPokemonOtherText(i + 2, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId], 1);
|
DisplayPartyPokemonSelectionText(i + 2, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId], 1);
|
||||||
if (i == (unk - 1))
|
if (i == (unk - 1))
|
||||||
sub_81B4F88();
|
sub_81B4F88();
|
||||||
DisplayPartyMenuStdMessage(0);
|
DisplayPartyMenuStdMessage(0);
|
||||||
@ -4613,11 +4613,11 @@ static void CursorCb_NoEntry(u8 taskId)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DisplayPartyPokemonOtherText(1, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId], 1);
|
DisplayPartyPokemonSelectionText(1, &gUnknown_0203CEDC[gUnknown_0203CEC8.slotId], 1);
|
||||||
for (i = 0; i < (unk - 1); i++)
|
for (i = 0; i < (unk - 1); i++)
|
||||||
{
|
{
|
||||||
if (gSelectedOrderFromParty[i] != 0)
|
if (gSelectedOrderFromParty[i] != 0)
|
||||||
DisplayPartyPokemonOtherText(i + 2, &gUnknown_0203CEDC[gSelectedOrderFromParty[i] - 1], 1);
|
DisplayPartyPokemonSelectionText(i + 2, &gUnknown_0203CEDC[gSelectedOrderFromParty[i] - 1], 1);
|
||||||
}
|
}
|
||||||
DisplayPartyMenuStdMessage(0);
|
DisplayPartyMenuStdMessage(0);
|
||||||
gTasks[taskId].func = sub_81B1370;
|
gTasks[taskId].func = sub_81B1370;
|
||||||
|
@ -1559,8 +1559,8 @@ void sub_80C6D80(const u8 *string, void *dst, u8 zero1, u8 zero2, s32 arg4)
|
|||||||
txtColor[0] = TEXT_COLOR_TRANSPARENT;
|
txtColor[0] = TEXT_COLOR_TRANSPARENT;
|
||||||
else
|
else
|
||||||
txtColor[0] = zero2;
|
txtColor[0] = zero2;
|
||||||
txtColor[1] = 0xF;
|
txtColor[1] = TEXT_DYNAMIC_COLOR_6;
|
||||||
txtColor[2] = 0xE;
|
txtColor[2] = TEXT_DYNAMIC_COLOR_5;
|
||||||
AddTextPrinterParameterized4(windowId, 1, 0, 1, 0, 0, txtColor, -1, string);
|
AddTextPrinterParameterized4(windowId, 1, 0, 1, 0, 0, txtColor, -1, string);
|
||||||
|
|
||||||
val = arg4;
|
val = arg4;
|
||||||
|
234
src/trade.c
234
src/trade.c
@ -71,8 +71,14 @@ struct InGameTrade {
|
|||||||
/*0x38*/ u16 requestedSpecies;
|
/*0x38*/ u16 requestedSpecies;
|
||||||
};
|
};
|
||||||
|
|
||||||
static EWRAM_DATA u8 *sTradeStringAllocBuffer = NULL;
|
static EWRAM_DATA u8 *sMessageBoxAllocBuffer = NULL;
|
||||||
static EWRAM_DATA u8 *sTradeStringBuffer[14] = {NULL};
|
|
||||||
|
// Bytes 0-2 are used for the player's name box
|
||||||
|
// Bytes 3-5 are used for the partner's name box
|
||||||
|
// Bytes 6-7 are used for the Cancel box
|
||||||
|
// Bytes 8-13 are used for the Choose a Pokemon box
|
||||||
|
static EWRAM_DATA u8 *sMessageBoxTileBuffers[14] = {NULL};
|
||||||
|
|
||||||
EWRAM_DATA struct MailStruct gTradeMail[PARTY_SIZE] = {0};
|
EWRAM_DATA struct MailStruct gTradeMail[PARTY_SIZE] = {0};
|
||||||
EWRAM_DATA u8 gSelectedTradeMonPositions[2] = {0};
|
EWRAM_DATA u8 gSelectedTradeMonPositions[2] = {0};
|
||||||
static EWRAM_DATA struct {
|
static EWRAM_DATA struct {
|
||||||
@ -104,7 +110,7 @@ static EWRAM_DATA struct {
|
|||||||
/*0x007E*/ u8 partnerCursorPosition;
|
/*0x007E*/ u8 partnerCursorPosition;
|
||||||
/*0x007F*/ u8 unused_7F;
|
/*0x007F*/ u8 unused_7F;
|
||||||
/*0x0080*/ u16 linkData[20];
|
/*0x0080*/ u16 linkData[20];
|
||||||
/*0x00A8*/ u8 unk_A8; //state var for sub_807A1F0
|
/*0x00A8*/ u8 unk_A8; // used as a timer and state var for sub_807A1F0
|
||||||
/*0x00A9*/ u8 unk_A9[11]; //ribbons
|
/*0x00A9*/ u8 unk_A9[11]; //ribbons
|
||||||
/*0x00B4*/ u8 filler_B4[0x8D0-0xB4];
|
/*0x00B4*/ u8 filler_B4[0x8D0-0xB4];
|
||||||
/*0x08D0*/ struct {
|
/*0x08D0*/ struct {
|
||||||
@ -122,9 +128,9 @@ static EWRAM_DATA struct {
|
|||||||
/*0x72*/ u8 unk_72;
|
/*0x72*/ u8 unk_72;
|
||||||
/*0x73*/ u8 unk_73;
|
/*0x73*/ u8 unk_73;
|
||||||
/*0x74*/ u16 linkData[10];
|
/*0x74*/ u16 linkData[10];
|
||||||
/*0x88*/ u8 unk_88;
|
/*0x88*/ u8 alwaysZero_88;
|
||||||
/*0x89*/ u8 unk_89;
|
/*0x89*/ u8 alwaysZero_89;
|
||||||
/*0x8A*/ u16 unk_8A;
|
/*0x8A*/ u16 linkTimeoutCounter;
|
||||||
/*0x8C*/ u16 neverRead_8C;
|
/*0x8C*/ u16 neverRead_8C;
|
||||||
/*0x8E*/ u8 pokePicSpriteIdxs[2];
|
/*0x8E*/ u8 pokePicSpriteIdxs[2];
|
||||||
/*0x90*/ u8 unk_90; //sprite id
|
/*0x90*/ u8 unk_90; //sprite id
|
||||||
@ -153,7 +159,7 @@ static EWRAM_DATA struct {
|
|||||||
/*0xF4*/ u16 cachedMapMusic;
|
/*0xF4*/ u16 cachedMapMusic;
|
||||||
/*0xF6*/ u8 textColors[3];
|
/*0xF6*/ u8 textColors[3];
|
||||||
/*0xF9*/ u8 filler_F9;
|
/*0xF9*/ u8 filler_F9;
|
||||||
/*0xFA*/ bool8 isCableLink;
|
/*0xFA*/ bool8 isCableTrade;
|
||||||
/*0xFB*/ u8 unk_FB;
|
/*0xFB*/ u8 unk_FB;
|
||||||
/*0xFC*/ u8 unk_FC;
|
/*0xFC*/ u8 unk_FC;
|
||||||
/*0xFD*/ u8 unk_FD;
|
/*0xFD*/ u8 unk_FD;
|
||||||
@ -199,19 +205,19 @@ static void sub_807AA7C(struct Sprite *sprite);
|
|||||||
static void sub_807AABC(struct Sprite *sprite);
|
static void sub_807AABC(struct Sprite *sprite);
|
||||||
static void sub_807AAE0(struct Sprite *sprite);
|
static void sub_807AAE0(struct Sprite *sprite);
|
||||||
static void sub_807AB04(struct Sprite *sprite);
|
static void sub_807AB04(struct Sprite *sprite);
|
||||||
static void sub_807B170(void);
|
static void InitTradeBgInternal(void);
|
||||||
static void sub_807B60C(void);
|
static void sub_807B60C(void);
|
||||||
static void sub_807B62C(u8);
|
static void sub_807B62C(u8);
|
||||||
static void sub_807BA94(void);
|
static void LoadTradeSequenceSpriteSheetsAndPalettes(void);
|
||||||
static void SetTradeSceneStrings(void);
|
static void SetTradeSceneStrings(void);
|
||||||
static bool8 sub_807BBC8(void);
|
static bool8 AnimateTradeSequence(void);
|
||||||
static bool8 sub_807BBEC(void);
|
static bool8 AnimateTradeSequenceCable(void);
|
||||||
static bool8 sub_807CFC8(void);
|
static bool8 AnimateTradeSequenceWireless(void);
|
||||||
static void sub_807E55C(struct Sprite *sprite);
|
static void sub_807E55C(struct Sprite *sprite);
|
||||||
static void sub_807E5D8(struct Sprite *sprite);
|
static void sub_807E5D8(struct Sprite *sprite);
|
||||||
static void sub_807E64C(struct Sprite *sprite);
|
static void sub_807E64C(struct Sprite *sprite);
|
||||||
static void sub_807E6AC(struct Sprite *sprite);
|
static void sub_807E6AC(struct Sprite *sprite);
|
||||||
static void sub_807E784(void);
|
static void BuffeInGameTradeMonName(void);
|
||||||
static void SetInGameTradeMail(struct MailStruct *mail, const struct InGameTrade *trade);
|
static void SetInGameTradeMail(struct MailStruct *mail, const struct InGameTrade *trade);
|
||||||
static void sub_807EA2C(void);
|
static void sub_807EA2C(void);
|
||||||
static void sub_807EACC(void);
|
static void sub_807EACC(void);
|
||||||
@ -376,11 +382,11 @@ static void sub_80773D0(void)
|
|||||||
case 0:
|
case 0:
|
||||||
sTradeData = AllocZeroed(sizeof(*sTradeData));
|
sTradeData = AllocZeroed(sizeof(*sTradeData));
|
||||||
InitTradeMenu();
|
InitTradeMenu();
|
||||||
sTradeStringAllocBuffer = AllocZeroed(14 * 256);
|
sMessageBoxAllocBuffer = AllocZeroed(14 * 256);
|
||||||
|
|
||||||
for (i = 0; i < 14; i++)
|
for (i = 0; i < (int)ARRAY_COUNT(sMessageBoxTileBuffers); i++)
|
||||||
{
|
{
|
||||||
sTradeStringBuffer[i] = &sTradeStringAllocBuffer[i * 256];
|
sMessageBoxTileBuffers[i] = &sMessageBoxAllocBuffer[i * 256];
|
||||||
}
|
}
|
||||||
|
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
@ -522,11 +528,11 @@ static void sub_80773D0(void)
|
|||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
sub_80C6D80(gSaveBlock2Ptr->playerName, sTradeStringBuffer[0], 0, 0, 3);
|
sub_80C6D80(gSaveBlock2Ptr->playerName, sMessageBoxTileBuffers[0], 0, 0, 3);
|
||||||
id = GetMultiplayerId();
|
id = GetMultiplayerId();
|
||||||
sub_80C6D80(gLinkPlayers[id ^ 1].name, sTradeStringBuffer[3], 0, 0, 3);
|
sub_80C6D80(gLinkPlayers[id ^ 1].name, sMessageBoxTileBuffers[3], 0, 0, 3);
|
||||||
sub_80C6D80(sTradeActionTexts[TRADE_ACTION_TEXT_CANCEL], sTradeStringBuffer[6], 0, 0, 2);
|
sub_80C6D80(sTradeActionTexts[TRADE_ACTION_TEXT_CANCEL], sMessageBoxTileBuffers[6], 0, 0, 2);
|
||||||
sub_807A308(sTradeActionTexts[TRADE_ACTION_TEXT_CHOOSE_MON], sTradeStringBuffer[8], 24);
|
sub_807A308(sTradeActionTexts[TRADE_ACTION_TEXT_CHOOSE_MON], sMessageBoxTileBuffers[8], 24);
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
sTradeData->unk_A8 = 0;
|
sTradeData->unk_A8 = 0;
|
||||||
break;
|
break;
|
||||||
@ -709,11 +715,11 @@ static void sub_8077B74(void)
|
|||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
sub_80C6D80(gSaveBlock2Ptr->playerName, sTradeStringBuffer[0], 0, 0, 3);
|
sub_80C6D80(gSaveBlock2Ptr->playerName, sMessageBoxTileBuffers[0], 0, 0, 3);
|
||||||
id = GetMultiplayerId();
|
id = GetMultiplayerId();
|
||||||
sub_80C6D80(gLinkPlayers[id ^ 1].name, sTradeStringBuffer[3], 0, 0, 3);
|
sub_80C6D80(gLinkPlayers[id ^ 1].name, sMessageBoxTileBuffers[3], 0, 0, 3);
|
||||||
sub_80C6D80(sTradeActionTexts[TRADE_ACTION_TEXT_CANCEL], sTradeStringBuffer[6], 0, 0, 2);
|
sub_80C6D80(sTradeActionTexts[TRADE_ACTION_TEXT_CANCEL], sMessageBoxTileBuffers[6], 0, 0, 2);
|
||||||
sub_807A308(sTradeActionTexts[TRADE_ACTION_TEXT_CHOOSE_MON], sTradeStringBuffer[8], 24);
|
sub_807A308(sTradeActionTexts[TRADE_ACTION_TEXT_CHOOSE_MON], sMessageBoxTileBuffers[8], 24);
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
sTradeData->unk_A8 = 0;
|
sTradeData->unk_A8 = 0;
|
||||||
break;
|
break;
|
||||||
@ -844,27 +850,29 @@ static void sub_80781C8(void)
|
|||||||
{
|
{
|
||||||
gMain.savedCallback = sub_80773AC;
|
gMain.savedCallback = sub_80773AC;
|
||||||
|
|
||||||
|
// Wireless Link Trade
|
||||||
if (gWirelessCommType)
|
if (gWirelessCommType)
|
||||||
{
|
{
|
||||||
if (sub_8010500())
|
if (sub_8010500())
|
||||||
{
|
{
|
||||||
Free(sTradeStringAllocBuffer);
|
Free(sMessageBoxAllocBuffer);
|
||||||
FreeAllWindowBuffers();
|
FreeAllWindowBuffers();
|
||||||
Free(sTradeData);
|
Free(sTradeData);
|
||||||
gMain.callback1 = NULL;
|
gMain.callback1 = NULL;
|
||||||
DestroyWirelessStatusIndicatorSprite();
|
DestroyWirelessStatusIndicatorSprite();
|
||||||
SetMainCallback2(sub_807AE50);
|
SetMainCallback2(CB2_LinkTrade);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Cable Link Trade
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!gReceivedRemoteLinkPlayers)
|
if (!gReceivedRemoteLinkPlayers)
|
||||||
{
|
{
|
||||||
Free(sTradeStringAllocBuffer);
|
Free(sMessageBoxAllocBuffer);
|
||||||
FreeAllWindowBuffers();
|
FreeAllWindowBuffers();
|
||||||
Free(sTradeData);
|
Free(sTradeData);
|
||||||
gMain.callback1 = NULL;
|
gMain.callback1 = NULL;
|
||||||
SetMainCallback2(sub_807AE50);
|
SetMainCallback2(CB2_LinkTrade);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1299,7 +1307,7 @@ static void sub_8078C34(void)
|
|||||||
sub_80789FC();
|
sub_80789FC();
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 sub_8078C6C(u8 oldPosition, u8 direction)
|
static u8 GetNewTradeMenuPosition(u8 oldPosition, u8 direction)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
u8 newPosition = 0;
|
u8 newPosition = 0;
|
||||||
@ -1318,9 +1326,9 @@ static u8 sub_8078C6C(u8 oldPosition, u8 direction)
|
|||||||
|
|
||||||
static void TradeMenuMoveCursor(u8 *cursorPosition, u8 direction)
|
static void TradeMenuMoveCursor(u8 *cursorPosition, u8 direction)
|
||||||
{
|
{
|
||||||
u8 newPosition = sub_8078C6C(*cursorPosition, direction);
|
u8 newPosition = GetNewTradeMenuPosition(*cursorPosition, direction);
|
||||||
|
|
||||||
if (newPosition == 12) // CANCEL
|
if (newPosition == (PARTY_SIZE * 2)) // CANCEL
|
||||||
{
|
{
|
||||||
StartSpriteAnim(&gSprites[sTradeData->cursorSpriteIdx], 1);
|
StartSpriteAnim(&gSprites[sTradeData->cursorSpriteIdx], 1);
|
||||||
gSprites[sTradeData->cursorSpriteIdx].pos1.x = 224;
|
gSprites[sTradeData->cursorSpriteIdx].pos1.x = 224;
|
||||||
@ -1356,7 +1364,7 @@ static void sub_8078D78(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8078DBC(void)
|
static void TradeMenuProcessInput(void)
|
||||||
{
|
{
|
||||||
if (gMain.newAndRepeatedKeys & DPAD_UP)
|
if (gMain.newAndRepeatedKeys & DPAD_UP)
|
||||||
{
|
{
|
||||||
@ -1406,7 +1414,7 @@ static void sub_8078DBC(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8078EF8(void)
|
static void ReturnToTradeMenu(void)
|
||||||
{
|
{
|
||||||
sub_8079F74();
|
sub_8079F74();
|
||||||
sTradeData->unk_6F = 0;
|
sTradeData->unk_6F = 0;
|
||||||
@ -1420,7 +1428,7 @@ static void TradeMenuProcessInput_SelectedMon(void)
|
|||||||
{
|
{
|
||||||
case MENU_B_PRESSED:
|
case MENU_B_PRESSED:
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8078EF8();
|
ReturnToTradeMenu();
|
||||||
break;
|
break;
|
||||||
case MENU_NOTHING_CHOSEN:
|
case MENU_NOTHING_CHOSEN:
|
||||||
break;
|
break;
|
||||||
@ -1454,12 +1462,12 @@ static void TradeMenuProcessInput_SelectedMon(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8079034(void)
|
static void ReturnToTradeMenuAfterButtonPress(void)
|
||||||
{
|
{
|
||||||
if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
|
if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8078EF8();
|
ReturnToTradeMenu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1582,7 +1590,7 @@ static void sub_807929C(void)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < sTradeData->partyCounts[TRADE_PARTNER] - 4; i++)
|
for (i = 0; i < sTradeData->partyCounts[1] - 4; i++)
|
||||||
{
|
{
|
||||||
PutWindowTilemap(i + 12);
|
PutWindowTilemap(i + 12);
|
||||||
CopyWindowToVram(i + 12, 1);
|
CopyWindowToVram(i + 12, 1);
|
||||||
@ -1603,7 +1611,7 @@ static void sub_80792E4(void)
|
|||||||
case 1:
|
case 1:
|
||||||
case MENU_B_PRESSED:
|
case MENU_B_PRESSED:
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8078EF8();
|
ReturnToTradeMenu();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1687,7 +1695,7 @@ static void sub_80794CC(void)
|
|||||||
{
|
{
|
||||||
if (sub_80771BC() && sub_807A09C() == 0)
|
if (sub_80771BC() && sub_807A09C() == 0)
|
||||||
{
|
{
|
||||||
Free(sTradeStringAllocBuffer);
|
Free(sMessageBoxAllocBuffer);
|
||||||
Free(sTradeData);
|
Free(sTradeData);
|
||||||
FreeAllWindowBuffers();
|
FreeAllWindowBuffers();
|
||||||
DestroyWirelessStatusIndicatorSprite();
|
DestroyWirelessStatusIndicatorSprite();
|
||||||
@ -1698,7 +1706,7 @@ static void sub_80794CC(void)
|
|||||||
{
|
{
|
||||||
if (!gReceivedRemoteLinkPlayers)
|
if (!gReceivedRemoteLinkPlayers)
|
||||||
{
|
{
|
||||||
Free(sTradeStringAllocBuffer);
|
Free(sMessageBoxAllocBuffer);
|
||||||
Free(sTradeData);
|
Free(sTradeData);
|
||||||
FreeAllWindowBuffers();
|
FreeAllWindowBuffers();
|
||||||
SetMainCallback2(CB2_ReturnToFieldFromMultiplayer);
|
SetMainCallback2(CB2_ReturnToFieldFromMultiplayer);
|
||||||
@ -1730,7 +1738,7 @@ static void sub_80795AC(void)
|
|||||||
switch (sTradeData->unk_6F)
|
switch (sTradeData->unk_6F)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
sub_8078DBC();
|
TradeMenuProcessInput();
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
TradeMenuProcessInput_SelectedMon();
|
TradeMenuProcessInput_SelectedMon();
|
||||||
@ -1772,7 +1780,7 @@ static void sub_80795AC(void)
|
|||||||
Wait2SecondsAndCreateYesNoMenu();
|
Wait2SecondsAndCreateYesNoMenu();
|
||||||
break;
|
break;
|
||||||
case 15:
|
case 15:
|
||||||
sub_8079034();
|
ReturnToTradeMenuAfterButtonPress();
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
sub_8079550();
|
sub_8079550();
|
||||||
@ -2015,7 +2023,11 @@ static void sub_8079E44(u8 whichParty)
|
|||||||
|
|
||||||
for (i = 0; i < sTradeData->partyCounts[whichParty]; i++)
|
for (i = 0; i < sTradeData->partyCounts[whichParty]; i++)
|
||||||
{
|
{
|
||||||
DrawTradeMenuPartyMonInfo(whichParty, i, gTradeLevelDisplayCoords[whichParty][i][0], gTradeLevelDisplayCoords[whichParty][i][1], gTradeMonBoxCoords[whichParty][i][0], gTradeMonBoxCoords[whichParty][i][1]);
|
DrawTradeMenuPartyMonInfo(whichParty, i,
|
||||||
|
gTradeLevelDisplayCoords[whichParty][i][0],
|
||||||
|
gTradeLevelDisplayCoords[whichParty][i][1],
|
||||||
|
gTradeMonBoxCoords[whichParty][i][0],
|
||||||
|
gTradeMonBoxCoords[whichParty][i][1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@ -2203,9 +2215,9 @@ static bool8 sub_807A1F0(void)
|
|||||||
{
|
{
|
||||||
struct SpriteSheet sheet;
|
struct SpriteSheet sheet;
|
||||||
|
|
||||||
if (sTradeData->unk_A8 < 14)
|
if (sTradeData->unk_A8 < (int)ARRAY_COUNT(sMessageBoxTileBuffers))
|
||||||
{
|
{
|
||||||
sheet.data = sTradeStringBuffer[sTradeData->unk_A8];
|
sheet.data = sMessageBoxTileBuffers[sTradeData->unk_A8];
|
||||||
sheet.size = 0x100;
|
sheet.size = 0x100;
|
||||||
sheet.tag = 200 + sTradeData->unk_A8;
|
sheet.tag = 200 + sTradeData->unk_A8;
|
||||||
}
|
}
|
||||||
@ -2233,7 +2245,7 @@ static bool8 sub_807A1F0(void)
|
|||||||
sTradeData->unk_A8++;
|
sTradeData->unk_A8++;
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
LoadSpriteSheet(&gUnknown_0832DC3C);
|
LoadSpriteSheet(&sTradeButtonsSpriteSheet);
|
||||||
sTradeData->unk_A8++;
|
sTradeData->unk_A8++;
|
||||||
break;
|
break;
|
||||||
case 17:
|
case 17:
|
||||||
@ -2350,6 +2362,7 @@ static void sub_807A5B0(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO:
|
||||||
static u32 sub_807A5F4(struct Pokemon *playerParty, int partyCount, int monIdx)
|
static u32 sub_807A5F4(struct Pokemon *playerParty, int partyCount, int monIdx)
|
||||||
{
|
{
|
||||||
int i, sum;
|
int i, sum;
|
||||||
@ -2860,7 +2873,7 @@ static void sub_807AB04(struct Sprite *sprite)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_807AB28(void)
|
static void SetTradeBGAffine(void)
|
||||||
{
|
{
|
||||||
struct BgAffineDstData affine;
|
struct BgAffineDstData affine;
|
||||||
|
|
||||||
@ -2875,7 +2888,7 @@ static void sub_807AB28(void)
|
|||||||
SetGpuReg(REG_OFFSET_BG2Y_H, affine.dy >> 16);
|
SetGpuReg(REG_OFFSET_BG2Y_H, affine.dy >> 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_807ABCC(void)
|
static void SetTradeGpuRegs(void)
|
||||||
{
|
{
|
||||||
u16 dispcnt;
|
u16 dispcnt;
|
||||||
|
|
||||||
@ -2890,42 +2903,42 @@ static void sub_807ABCC(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sub_807AB28();
|
SetTradeBGAffine();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_807AC24(void)
|
static void VBlankCB_Trade(void)
|
||||||
{
|
{
|
||||||
sub_807ABCC();
|
SetTradeGpuRegs();
|
||||||
LoadOam();
|
LoadOam();
|
||||||
ProcessSpriteCopyRequests();
|
ProcessSpriteCopyRequests();
|
||||||
TransferPlttBuffer();
|
TransferPlttBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_807AC3C(void)
|
static void ClearLinkTimeoutCounter(void)
|
||||||
{
|
{
|
||||||
sTradeWindowData->unk_8A = 0;
|
sTradeWindowData->linkTimeoutCounter = 0;
|
||||||
sTradeWindowData->unk_88 = 0;
|
sTradeWindowData->alwaysZero_88 = 0;
|
||||||
sTradeWindowData->unk_89 = 0;
|
sTradeWindowData->alwaysZero_89 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_807AC64(void)
|
static void CheckForLinkTimeout(void)
|
||||||
{
|
{
|
||||||
if (sTradeWindowData->unk_88 == sTradeWindowData->unk_89)
|
if (sTradeWindowData->alwaysZero_88 == sTradeWindowData->alwaysZero_89)
|
||||||
sTradeWindowData->unk_8A++;
|
sTradeWindowData->linkTimeoutCounter++;
|
||||||
else
|
else
|
||||||
sTradeWindowData->unk_8A = 0;
|
sTradeWindowData->linkTimeoutCounter = 0;
|
||||||
|
|
||||||
if (sTradeWindowData->unk_8A > 300)
|
if (sTradeWindowData->linkTimeoutCounter > LINK_TRADE_TIMEOUT)
|
||||||
{
|
{
|
||||||
CloseLink();
|
CloseLink();
|
||||||
SetMainCallback2(CB2_LinkError);
|
SetMainCallback2(CB2_LinkError);
|
||||||
sTradeWindowData->unk_8A = 0;
|
sTradeWindowData->linkTimeoutCounter = 0;
|
||||||
sTradeWindowData->unk_89 = 0;
|
sTradeWindowData->alwaysZero_89 = 0;
|
||||||
sTradeWindowData->unk_88 = 0;
|
sTradeWindowData->alwaysZero_88 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
sTradeWindowData->unk_89 = sTradeWindowData->unk_88;
|
sTradeWindowData->alwaysZero_89 = sTradeWindowData->alwaysZero_88;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u32 TradeGetMultiplayerId(void)
|
static u32 TradeGetMultiplayerId(void)
|
||||||
@ -2978,7 +2991,7 @@ static void sub_807ACFC(u8 whichParty, u8 a1)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_807AE50(void)
|
void CB2_LinkTrade(void)
|
||||||
{
|
{
|
||||||
switch (gMain.state)
|
switch (gMain.state)
|
||||||
{
|
{
|
||||||
@ -2993,9 +3006,9 @@ void sub_807AE50(void)
|
|||||||
ResetTasks();
|
ResetTasks();
|
||||||
ResetSpriteData();
|
ResetSpriteData();
|
||||||
FreeAllSpritePalettes();
|
FreeAllSpritePalettes();
|
||||||
SetVBlankCallback(sub_807AC24);
|
SetVBlankCallback(VBlankCB_Trade);
|
||||||
sub_807B170();
|
InitTradeBgInternal();
|
||||||
sub_807AC3C();
|
ClearLinkTimeoutCounter();
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
sTradeWindowData->neverRead_8C = 0;
|
sTradeWindowData->neverRead_8C = 0;
|
||||||
sTradeWindowData->state = 0;
|
sTradeWindowData->state = 0;
|
||||||
@ -3012,7 +3025,7 @@ void sub_807AE50(void)
|
|||||||
case 1:
|
case 1:
|
||||||
if (!gReceivedRemoteLinkPlayers)
|
if (!gReceivedRemoteLinkPlayers)
|
||||||
{
|
{
|
||||||
sTradeWindowData->isCableLink = TRUE;
|
sTradeWindowData->isCableTrade = TRUE;
|
||||||
OpenLink();
|
OpenLink();
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
sTradeWindowData->timer = 0;
|
sTradeWindowData->timer = 0;
|
||||||
@ -3042,7 +3055,7 @@ void sub_807AE50(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sub_807AC64();
|
CheckForLinkTimeout();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -3051,7 +3064,7 @@ void sub_807AE50(void)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
sub_807AC64();
|
CheckForLinkTimeout();
|
||||||
if (gReceivedRemoteLinkPlayers == TRUE && IsLinkPlayerDataExchangeComplete() == TRUE)
|
if (gReceivedRemoteLinkPlayers == TRUE && IsLinkPlayerDataExchangeComplete() == TRUE)
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
@ -3076,9 +3089,9 @@ void sub_807AE50(void)
|
|||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
sub_807BA94();
|
LoadTradeSequenceSpriteSheetsAndPalettes();
|
||||||
LoadSpriteSheet(&gUnknown_08338D18);
|
LoadSpriteSheet(&sPokeBallSpriteSheet);
|
||||||
LoadSpritePalette(&gUnknown_08338D20);
|
LoadSpritePalette(&sPokeBallSpritePalette);
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
@ -3123,7 +3136,7 @@ void sub_807B154(void)
|
|||||||
CopyWindowToVram(0, 3);
|
CopyWindowToVram(0, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_807B170(void)
|
static void InitTradeBgInternal(void)
|
||||||
{
|
{
|
||||||
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||||
ResetBgsAndClearDma3BusyFlags(0);
|
ResetBgsAndClearDma3BusyFlags(0);
|
||||||
@ -3164,8 +3177,8 @@ static void CB2_InGameTrade(void)
|
|||||||
ResetTasks();
|
ResetTasks();
|
||||||
ResetSpriteData();
|
ResetSpriteData();
|
||||||
FreeAllSpritePalettes();
|
FreeAllSpritePalettes();
|
||||||
SetVBlankCallback(sub_807AC24);
|
SetVBlankCallback(VBlankCB_Trade);
|
||||||
sub_807B170();
|
InitTradeBgInternal();
|
||||||
sTradeWindowData->isLinkTrade = FALSE;
|
sTradeWindowData->isLinkTrade = FALSE;
|
||||||
sTradeWindowData->neverRead_8C = 0;
|
sTradeWindowData->neverRead_8C = 0;
|
||||||
sTradeWindowData->state = 0;
|
sTradeWindowData->state = 0;
|
||||||
@ -3201,9 +3214,9 @@ static void CB2_InGameTrade(void)
|
|||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
sub_807BA94();
|
LoadTradeSequenceSpriteSheetsAndPalettes();
|
||||||
LoadSpriteSheet(&gUnknown_08338D18);
|
LoadSpriteSheet(&sPokeBallSpriteSheet);
|
||||||
LoadSpritePalette(&gUnknown_08338D20);
|
LoadSpritePalette(&sPokeBallSpritePalette);
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
@ -3299,7 +3312,7 @@ static void sub_807B5B8(void)
|
|||||||
|
|
||||||
static void sub_807B60C(void)
|
static void sub_807B60C(void)
|
||||||
{
|
{
|
||||||
sub_807BBC8();
|
AnimateTradeSequence();
|
||||||
RunTasks();
|
RunTasks();
|
||||||
RunTextPrinters();
|
RunTextPrinters();
|
||||||
AnimateSprites();
|
AnimateSprites();
|
||||||
@ -3343,7 +3356,7 @@ static void sub_807B62C(u8 a0)
|
|||||||
BGCNT_SCREENBASE(18) |
|
BGCNT_SCREENBASE(18) |
|
||||||
BGCNT_TXT256x512);
|
BGCNT_TXT256x512);
|
||||||
|
|
||||||
if (sTradeWindowData->isCableLink)
|
if (sTradeWindowData->isCableTrade)
|
||||||
{
|
{
|
||||||
DmaCopy16Defvars(3, sTradeTilemap_GbaCable, (void *) BG_SCREEN_ADDR(5), 0x1000);
|
DmaCopy16Defvars(3, sTradeTilemap_GbaCable, (void *) BG_SCREEN_ADDR(5), 0x1000);
|
||||||
}
|
}
|
||||||
@ -3361,7 +3374,7 @@ static void sub_807B62C(u8 a0)
|
|||||||
case 2:
|
case 2:
|
||||||
sTradeWindowData->bg1vofs = 0;
|
sTradeWindowData->bg1vofs = 0;
|
||||||
sTradeWindowData->bg1hofs = 0;
|
sTradeWindowData->bg1hofs = 0;
|
||||||
if (!sTradeWindowData->isCableLink)
|
if (!sTradeWindowData->isCableTrade)
|
||||||
{
|
{
|
||||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 |
|
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 |
|
||||||
DISPCNT_OBJ_1D_MAP |
|
DISPCNT_OBJ_1D_MAP |
|
||||||
@ -3409,7 +3422,7 @@ static void sub_807B62C(u8 a0)
|
|||||||
|
|
||||||
DmaCopyLarge16(3, sTradeAffine_Gba, (void *) BG_CHAR_ADDR(1), 0x2840, 0x1000);
|
DmaCopyLarge16(3, sTradeAffine_Gba, (void *) BG_CHAR_ADDR(1), 0x2840, 0x1000);
|
||||||
|
|
||||||
if (sTradeWindowData->isCableLink)
|
if (sTradeWindowData->isCableTrade)
|
||||||
{
|
{
|
||||||
DmaCopy16Defvars(3, sTradeAffineMap_GbaCable, (void *) BG_SCREEN_ADDR(18), 0x100);
|
DmaCopy16Defvars(3, sTradeAffineMap_GbaCable, (void *) BG_SCREEN_ADDR(18), 0x100);
|
||||||
}
|
}
|
||||||
@ -3442,7 +3455,7 @@ static void sub_807B62C(u8 a0)
|
|||||||
|
|
||||||
DmaCopyLarge16(3, sTradeAffine_Gba, (void *) BG_CHAR_ADDR(1), 0x2840, 0x1000);
|
DmaCopyLarge16(3, sTradeAffine_Gba, (void *) BG_CHAR_ADDR(1), 0x2840, 0x1000);
|
||||||
|
|
||||||
if (sTradeWindowData->isCableLink)
|
if (sTradeWindowData->isCableTrade)
|
||||||
{
|
{
|
||||||
DmaCopy16Defvars(3, sTradeAffineMap_GbaCable, (void *) BG_SCREEN_ADDR(18), 0x100);
|
DmaCopy16Defvars(3, sTradeAffineMap_GbaCable, (void *) BG_SCREEN_ADDR(18), 0x100);
|
||||||
}
|
}
|
||||||
@ -3467,14 +3480,14 @@ static void sub_807B62C(u8 a0)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_807BA94(void)
|
static void LoadTradeSequenceSpriteSheetsAndPalettes(void)
|
||||||
{
|
{
|
||||||
LoadSpriteSheet(&gUnknown_08338D70);
|
LoadSpriteSheet(&sGlow1SpriteSheet);
|
||||||
LoadSpriteSheet(&gUnknown_08338DC0);
|
LoadSpriteSheet(&sGlow2SpriteSheet);
|
||||||
LoadSpriteSheet(&gUnknown_08338DF4);
|
LoadSpriteSheet(&sCableEndSpriteSheet);
|
||||||
LoadSpriteSheet(&gUnknown_08338E6C);
|
LoadSpriteSheet(&sGbaScreenSpriteSheet);
|
||||||
LoadSpritePalette(&gUnknown_08338D78);
|
LoadSpritePalette(&sMiscTradeSpritePalette);
|
||||||
LoadSpritePalette(&gUnknown_08338D80);
|
LoadSpritePalette(&sGbaSpritePalette);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Buffers "[Pokemon] will be sent to [Trainer]" strings
|
/// Buffers "[Pokemon] will be sent to [Trainer]" strings
|
||||||
@ -3503,19 +3516,20 @@ static void SetTradeSceneStrings(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool8 sub_807BBC8(void)
|
// returns TRUE if it was a link trade, FALSE if it was an in-game trade
|
||||||
|
static bool8 AnimateTradeSequence(void)
|
||||||
{
|
{
|
||||||
if (sTradeWindowData->isCableLink)
|
if (sTradeWindowData->isCableTrade)
|
||||||
{
|
{
|
||||||
return sub_807BBEC();
|
return AnimateTradeSequenceCable();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return sub_807CFC8();
|
return AnimateTradeSequenceWireless();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool8 sub_807BBEC(void)
|
static bool8 AnimateTradeSequenceCable(void)
|
||||||
{
|
{
|
||||||
u16 evoTarget;
|
u16 evoTarget;
|
||||||
|
|
||||||
@ -3615,7 +3629,7 @@ static bool8 sub_807BBEC(void)
|
|||||||
case 24:
|
case 24:
|
||||||
if (++sTradeWindowData->timer > 20)
|
if (++sTradeWindowData->timer > 20)
|
||||||
{
|
{
|
||||||
sub_807AB28();
|
SetTradeBGAffine();
|
||||||
sTradeWindowData->unk_91 = CreateSprite(&gSpriteTemplate_8338E74, 120, 80, 0);
|
sTradeWindowData->unk_91 = CreateSprite(&gSpriteTemplate_8338E74, 120, 80, 0);
|
||||||
sTradeWindowData->state++;
|
sTradeWindowData->state++;
|
||||||
}
|
}
|
||||||
@ -3822,7 +3836,7 @@ static bool8 sub_807BBEC(void)
|
|||||||
sTradeWindowData->bg1vofs = 348;
|
sTradeWindowData->bg1vofs = 348;
|
||||||
sTradeWindowData->state++;
|
sTradeWindowData->state++;
|
||||||
}
|
}
|
||||||
if (sTradeWindowData->bg1vofs == 328 && sTradeWindowData->isCableLink)
|
if (sTradeWindowData->bg1vofs == 328 && sTradeWindowData->isCableTrade)
|
||||||
{
|
{
|
||||||
sTradeWindowData->unk_92 = CreateSprite(&gSpriteTemplate_8338DFC, 128, 65, 0);
|
sTradeWindowData->unk_92 = CreateSprite(&gSpriteTemplate_8338DFC, 128, 65, 0);
|
||||||
gSprites[sTradeWindowData->unk_92].callback = sub_807AAE0;
|
gSprites[sTradeWindowData->unk_92].callback = sub_807AAE0;
|
||||||
@ -4000,14 +4014,14 @@ static bool8 sub_807BBEC(void)
|
|||||||
FREE_AND_SET_NULL(sTradeWindowData);
|
FREE_AND_SET_NULL(sTradeWindowData);
|
||||||
}
|
}
|
||||||
SetMainCallback2(CB2_ReturnToField);
|
SetMainCallback2(CB2_ReturnToField);
|
||||||
sub_807E784();
|
BuffeInGameTradeMonName();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool8 sub_807CFC8(void)
|
static bool8 AnimateTradeSequenceWireless(void)
|
||||||
{
|
{
|
||||||
u16 evoTarget;
|
u16 evoTarget;
|
||||||
|
|
||||||
@ -4515,7 +4529,7 @@ static bool8 sub_807CFC8(void)
|
|||||||
FREE_AND_SET_NULL(sTradeWindowData);
|
FREE_AND_SET_NULL(sTradeWindowData);
|
||||||
}
|
}
|
||||||
SetMainCallback2(CB2_ReturnToField);
|
SetMainCallback2(CB2_ReturnToField);
|
||||||
sub_807E784();
|
BuffeInGameTradeMonName();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -4600,7 +4614,7 @@ static void sub_807E55C(struct Sprite *sprite)
|
|||||||
|
|
||||||
static void sub_807E5D8(struct Sprite *sprite)
|
static void sub_807E5D8(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
sprite->pos2.y += gTradeBallVerticalVelocityTable[sprite->data[0]];
|
sprite->pos2.y += sTradeBallVerticalVelocityTable[sprite->data[0]];
|
||||||
if (sprite->data[0] == 22)
|
if (sprite->data[0] == 22)
|
||||||
PlaySE(SE_KON);
|
PlaySE(SE_KON);
|
||||||
if (++ sprite->data[0] == 44)
|
if (++ sprite->data[0] == 44)
|
||||||
@ -4618,7 +4632,7 @@ static void sub_807E64C(struct Sprite *sprite)
|
|||||||
StartSpriteAffineAnim(sprite, 1);
|
StartSpriteAffineAnim(sprite, 1);
|
||||||
if (++ sprite->data[1] > 20)
|
if (++ sprite->data[1] > 20)
|
||||||
{
|
{
|
||||||
sprite->pos2.y -= gTradeBallVerticalVelocityTable[sprite->data[0]];
|
sprite->pos2.y -= sTradeBallVerticalVelocityTable[sprite->data[0]];
|
||||||
if (++ sprite->data[0] == 23)
|
if (++ sprite->data[0] == 23)
|
||||||
{
|
{
|
||||||
DestroySprite(sprite);
|
DestroySprite(sprite);
|
||||||
@ -4646,7 +4660,7 @@ static void sub_807E6AC(struct Sprite *sprite)
|
|||||||
PlaySE(SE_KON3);
|
PlaySE(SE_KON3);
|
||||||
if (sprite->data[0] == 0x6b)
|
if (sprite->data[0] == 0x6b)
|
||||||
PlaySE(SE_KON4);
|
PlaySE(SE_KON4);
|
||||||
sprite->pos2.y += gTradeBallVerticalVelocityTable[sprite->data[0]];
|
sprite->pos2.y += sTradeBallVerticalVelocityTable[sprite->data[0]];
|
||||||
if (++sprite->data[0] == 0x6c)
|
if (++sprite->data[0] == 0x6c)
|
||||||
sprite->callback = SpriteCallbackDummy;
|
sprite->callback = SpriteCallbackDummy;
|
||||||
}
|
}
|
||||||
@ -4660,7 +4674,7 @@ u16 GetInGameTradeSpeciesInfo(void)
|
|||||||
return inGameTrade->requestedSpecies;
|
return inGameTrade->requestedSpecies;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_807E784(void)
|
static void BuffeInGameTradeMonName(void)
|
||||||
{
|
{
|
||||||
u8 nickname[32];
|
u8 nickname[32];
|
||||||
const struct InGameTrade *inGameTrade = &sIngameTrades[gSpecialVar_0x8004];
|
const struct InGameTrade *inGameTrade = &sIngameTrades[gSpecialVar_0x8004];
|
||||||
@ -4720,7 +4734,7 @@ static void _CreateInGameTradePokemon(u8 whichPlayerMon, u8 whichInGameTrade)
|
|||||||
static void SetInGameTradeMail(struct MailStruct *mail, const struct InGameTrade *trade) {
|
static void SetInGameTradeMail(struct MailStruct *mail, const struct InGameTrade *trade) {
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
for (i = 0; i < INGAME_TRADE_MAIL_LENGTH; i++)
|
for (i = 0; i < MAIL_WORDS_COUNT; i++)
|
||||||
{
|
{
|
||||||
mail->words[i] = sIngameTradeMail[trade->mailNum][i];
|
mail->words[i] = sIngameTradeMail[trade->mailNum][i];
|
||||||
}
|
}
|
||||||
@ -4750,7 +4764,7 @@ void CreateInGameTradePokemon(void)
|
|||||||
|
|
||||||
static void sub_807EA2C(void)
|
static void sub_807EA2C(void)
|
||||||
{
|
{
|
||||||
if (sub_807BBC8() == TRUE)
|
if (AnimateTradeSequence() == TRUE)
|
||||||
{
|
{
|
||||||
DestroySprite(&gSprites[sTradeWindowData->pokePicSpriteIdxs[TRADE_PLAYER]]);
|
DestroySprite(&gSprites[sTradeWindowData->pokePicSpriteIdxs[TRADE_PLAYER]]);
|
||||||
FreeSpriteOamMatrix(&gSprites[sTradeWindowData->pokePicSpriteIdxs[TRADE_PARTNER]]);
|
FreeSpriteOamMatrix(&gSprites[sTradeWindowData->pokePicSpriteIdxs[TRADE_PARTNER]]);
|
||||||
@ -5007,9 +5021,9 @@ static void CheckPartnersMonForRibbons(void)
|
|||||||
FlagSet(FLAG_SYS_RIBBON_GET);
|
FlagSet(FLAG_SYS_RIBBON_GET);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_807F19C(void)
|
void InitTradeBg(void)
|
||||||
{
|
{
|
||||||
sub_807B170();
|
InitTradeBgInternal();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawTextOnTradeWindow(u8 windowId, const u8 *str, u8 speed)
|
void DrawTextOnTradeWindow(u8 windowId, const u8 *str, u8 speed)
|
||||||
|
@ -1312,7 +1312,7 @@ void sub_8013F90(u8 taskId)
|
|||||||
gSelectedTradeMonPositions[TRADE_PLAYER] = monId;
|
gSelectedTradeMonPositions[TRADE_PLAYER] = monId;
|
||||||
gSelectedTradeMonPositions[TRADE_PARTNER] = PARTY_SIZE;
|
gSelectedTradeMonPositions[TRADE_PARTNER] = PARTY_SIZE;
|
||||||
gMain.savedCallback = CB2_ReturnToField;
|
gMain.savedCallback = CB2_ReturnToField;
|
||||||
SetMainCallback2(sub_807AE50);
|
SetMainCallback2(CB2_LinkTrade);
|
||||||
ResetUnionRoomTrade(&sUnionRoomTrade);
|
ResetUnionRoomTrade(&sUnionRoomTrade);
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user