Finish trade code
This commit is contained in:
-1095
File diff suppressed because it is too large
Load Diff
@@ -1636,7 +1636,7 @@ _08129144:
|
|||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
bne _08129206
|
bne _08129206
|
||||||
bl sub_804C1C0
|
bl SetContinueGameWarpStatusToDynamicWarp
|
||||||
movs r0, 0
|
movs r0, 0
|
||||||
bl TrySavingData
|
bl TrySavingData
|
||||||
ldr r0, _08129164 @ =gUnknown_203B0E0
|
ldr r0, _08129164 @ =gUnknown_203B0E0
|
||||||
@@ -1665,7 +1665,7 @@ _08129180:
|
|||||||
bne _08129206
|
bne _08129206
|
||||||
movs r0, 0x30
|
movs r0, 0x30
|
||||||
bl PlaySE
|
bl PlaySE
|
||||||
bl sav2_gender2_inplace_and_xFE
|
bl ClearContinueGameWarpStatus2
|
||||||
ldr r0, _081291A0 @ =gUnknown_203B0E0
|
ldr r0, _081291A0 @ =gUnknown_203B0E0
|
||||||
ldr r1, [r0]
|
ldr r1, [r0]
|
||||||
movs r0, 0xA
|
movs r0, 0xA
|
||||||
|
|||||||
@@ -8,17 +8,6 @@
|
|||||||
.section .rodata
|
.section .rodata
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
|
|
||||||
@ unknown
|
|
||||||
gUnknown_8260814:: @ 8260814
|
|
||||||
.4byte 0x00000f24 @ sizeof(struct SaveBlock2)
|
|
||||||
.4byte 0x00003d68 @ sizeof(struct SaveBlock1)
|
|
||||||
.4byte 0x0000001c @ sizeof(struct MapData)
|
|
||||||
.4byte 0x00000530 @ unk
|
|
||||||
.4byte 0x00000034 @ unk
|
|
||||||
.4byte 0x00000024 @ sizeof(struct MailStruct)
|
|
||||||
.4byte 0x00000064 @ sizeof(struct Pokemon)
|
|
||||||
.4byte 0x00000528
|
|
||||||
|
|
||||||
gTradeMovesBoxTilemap:: @ 8260834
|
gTradeMovesBoxTilemap:: @ 8260834
|
||||||
.incbin "data/trade/unk_8260834.bin"
|
.incbin "data/trade/unk_8260834.bin"
|
||||||
|
|
||||||
|
|||||||
@@ -1310,11 +1310,7 @@
|
|||||||
#define FLAG_TRAINER_FLAG_START 0x500
|
#define FLAG_TRAINER_FLAG_START 0x500
|
||||||
|
|
||||||
// Vanilla: SYS_FLAGS = 0x800
|
// Vanilla: SYS_FLAGS = 0x800
|
||||||
#if (NUM_TRAINERS) & 31
|
|
||||||
#define SYS_FLAGS (FLAG_TRAINER_FLAG_START + ((NUM_TRAINERS) + 31) / 32 * 32)
|
#define SYS_FLAGS (FLAG_TRAINER_FLAG_START + ((NUM_TRAINERS) + 31) / 32 * 32)
|
||||||
#else
|
|
||||||
#define SYS_FLAGS (FLAG_TRAINER_FLAG_START + (NUM_TRAINERS))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// SYSTEM FLAGS
|
// SYSTEM FLAGS
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -26,7 +26,7 @@ void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey);
|
|||||||
void ApplyNewEncryptionKeyToBagItems(u32 encryptionKey);
|
void ApplyNewEncryptionKeyToBagItems(u32 encryptionKey);
|
||||||
void ApplyNewEncryptionKeyToWord(u32 * word, u32 encryptionKey);
|
void ApplyNewEncryptionKeyToWord(u32 * word, u32 encryptionKey);
|
||||||
void ApplyNewEncryptionKeyToHword(u16 * hword, u32 encryptionKey);
|
void ApplyNewEncryptionKeyToHword(u16 * hword, u32 encryptionKey);
|
||||||
void sav2_gender2_inplace_and_xFE(void);
|
void ClearContinueGameWarpStatus2(void);
|
||||||
void sub_804C1C0(void);
|
void SetContinueGameWarpStatusToDynamicWarp(void);
|
||||||
|
|
||||||
#endif // GUARD_LOAD_SAVE_H
|
#endif // GUARD_LOAD_SAVE_H
|
||||||
|
|||||||
@@ -68,5 +68,6 @@ bool32 WonderCard_Test_Unk_08_6(void);
|
|||||||
u32 MENews_GetInput(u16 input);
|
u32 MENews_GetInput(u16 input);
|
||||||
void sub_8143D24(void);
|
void sub_8143D24(void);
|
||||||
u16 sub_81445C0(u32 command);
|
u16 sub_81445C0(u32 command);
|
||||||
|
void sub_8144714(u32 a0, u32 a1);
|
||||||
|
|
||||||
#endif //GUARD_MEVENT_H
|
#endif //GUARD_MEVENT_H
|
||||||
|
|||||||
@@ -87,5 +87,6 @@ void PartyMenuInit_FromPlayerPc(void);
|
|||||||
void CB2_PartyMenuFromStartMenu(void);
|
void CB2_PartyMenuFromStartMenu(void);
|
||||||
void sub_8128198(void);
|
void sub_8128198(void);
|
||||||
void sub_8127FF4(u8 slot, u8 slot2);
|
void sub_8127FF4(u8 slot, u8 slot2);
|
||||||
|
void LoadHeldItemIcons(void);
|
||||||
|
|
||||||
#endif // GUARD_PARTY_MENU_H
|
#endif // GUARD_PARTY_MENU_H
|
||||||
|
|||||||
@@ -666,5 +666,6 @@ extern const u8 gText_XWillBeSentToY[];
|
|||||||
extern const u8 gText_ByeByeVar1[];
|
extern const u8 gText_ByeByeVar1[];
|
||||||
extern const u8 gText_XSentOverY[];
|
extern const u8 gText_XSentOverY[];
|
||||||
extern const u8 gText_TakeGoodCareOfX[];
|
extern const u8 gText_TakeGoodCareOfX[];
|
||||||
|
extern const u8 gUnknown_841E325[];
|
||||||
|
|
||||||
#endif //GUARD_STRINGS_H
|
#endif //GUARD_STRINGS_H
|
||||||
|
|||||||
+1
-1
@@ -86,7 +86,6 @@ SECTIONS {
|
|||||||
asm/pokeball.o(.text);
|
asm/pokeball.o(.text);
|
||||||
src/load_save.o(.text);
|
src/load_save.o(.text);
|
||||||
src/trade.o(.text);
|
src/trade.o(.text);
|
||||||
asm/trade.o(.text);
|
|
||||||
src/play_time.o(.text);
|
src/play_time.o(.text);
|
||||||
src/new_game.o(.text);
|
src/new_game.o(.text);
|
||||||
asm/overworld.o(.text);
|
asm/overworld.o(.text);
|
||||||
@@ -400,6 +399,7 @@ SECTIONS {
|
|||||||
src/battle_gfx_sfx_util.o(.rodata);
|
src/battle_gfx_sfx_util.o(.rodata);
|
||||||
data/battle_interface.o(.rodata);
|
data/battle_interface.o(.rodata);
|
||||||
data/pokeball.o(.rodata);
|
data/pokeball.o(.rodata);
|
||||||
|
src/trade.o(.rodata);
|
||||||
data/trade.o(.rodata);
|
data/trade.o(.rodata);
|
||||||
data/overworld.o(.rodata);
|
data/overworld.o(.rodata);
|
||||||
data/tilesets.o(.rodata);
|
data/tilesets.o(.rodata);
|
||||||
|
|||||||
+2
-2
@@ -146,13 +146,13 @@ void sub_804C1AC(void)
|
|||||||
gSaveBlock2Ptr->specialSaveWarpFlags |= CONTINUE_GAME_WARP;
|
gSaveBlock2Ptr->specialSaveWarpFlags |= CONTINUE_GAME_WARP;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_804C1C0(void)
|
void SetContinueGameWarpStatusToDynamicWarp(void)
|
||||||
{
|
{
|
||||||
sub_8055778(0);
|
sub_8055778(0);
|
||||||
gSaveBlock2Ptr->specialSaveWarpFlags |= CONTINUE_GAME_WARP;
|
gSaveBlock2Ptr->specialSaveWarpFlags |= CONTINUE_GAME_WARP;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sav2_gender2_inplace_and_xFE(void)
|
void ClearContinueGameWarpStatus2(void)
|
||||||
{
|
{
|
||||||
gSaveBlock2Ptr->specialSaveWarpFlags &= ~CONTINUE_GAME_WARP;
|
gSaveBlock2Ptr->specialSaveWarpFlags &= ~CONTINUE_GAME_WARP;
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -70,8 +70,8 @@ extern void DoSaveFailedScreen(u8 saveType); // save_failed_screen
|
|||||||
extern void sub_800AB9C(void); // link
|
extern void sub_800AB9C(void); // link
|
||||||
extern bool8 IsLinkTaskFinished(void); // link
|
extern bool8 IsLinkTaskFinished(void); // link
|
||||||
extern void save_serialize_map(void); // fieldmap
|
extern void save_serialize_map(void); // fieldmap
|
||||||
extern void sub_804C1C0(void); // load_save
|
extern void SetContinueGameWarpStatusToDynamicWarp(void); // load_save
|
||||||
extern void sav2_gender2_inplace_and_xFE(void); // load_save
|
extern void ClearContinueGameWarpStatus2(void); // load_save
|
||||||
|
|
||||||
// Sector num to begin writing save data. Sectors are rotated each time the game is saved. (possibly to avoid wear on flash memory?)
|
// Sector num to begin writing save data. Sectors are rotated each time the game is saved. (possibly to avoid wear on flash memory?)
|
||||||
u16 gFirstSaveSector;
|
u16 gFirstSaveSector;
|
||||||
@@ -872,7 +872,7 @@ void sub_80DA634(u8 taskId)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
sub_804C1C0();
|
SetContinueGameWarpStatusToDynamicWarp();
|
||||||
sub_80DA3AC();
|
sub_80DA3AC();
|
||||||
gTasks[taskId].data[0] = 4;
|
gTasks[taskId].data[0] = 4;
|
||||||
break;
|
break;
|
||||||
@@ -894,7 +894,7 @@ void sub_80DA634(u8 taskId)
|
|||||||
gTasks[taskId].data[0] = 7;
|
gTasks[taskId].data[0] = 7;
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
sav2_gender2_inplace_and_xFE();
|
ClearContinueGameWarpStatus2();
|
||||||
sub_800AB9C();
|
sub_800AB9C();
|
||||||
gTasks[taskId].data[0] = 8;
|
gTasks[taskId].data[0] = 8;
|
||||||
break;
|
break;
|
||||||
|
|||||||
+2
-2
@@ -923,14 +923,14 @@ static void task50_after_link_battle_save(u8 taskId)
|
|||||||
data[0] = 1;
|
data[0] = 1;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
sub_804C1C0();
|
SetContinueGameWarpStatusToDynamicWarp();
|
||||||
sub_80DA45C();
|
sub_80DA45C();
|
||||||
data[0] = 2;
|
data[0] = 2;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (sub_80DA4A0())
|
if (sub_80DA4A0())
|
||||||
{
|
{
|
||||||
sav2_gender2_inplace_and_xFE();
|
ClearContinueGameWarpStatus2();
|
||||||
data[0] = 3;
|
data[0] = 3;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
+359
-4
@@ -15,6 +15,12 @@
|
|||||||
#include "mail_data.h"
|
#include "mail_data.h"
|
||||||
#include "graphics.h"
|
#include "graphics.h"
|
||||||
#include "link.h"
|
#include "link.h"
|
||||||
|
#include "random.h"
|
||||||
|
#include "save.h"
|
||||||
|
#include "load_save.h"
|
||||||
|
#include "quest_log.h"
|
||||||
|
#include "field_fadetransition.h"
|
||||||
|
#include "mevent.h"
|
||||||
#include "help_system.h"
|
#include "help_system.h"
|
||||||
#include "link_rfu.h"
|
#include "link_rfu.h"
|
||||||
#include "cable_club.h"
|
#include "cable_club.h"
|
||||||
@@ -29,6 +35,7 @@
|
|||||||
#include "party_menu.h"
|
#include "party_menu.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "daycare.h"
|
#include "daycare.h"
|
||||||
|
#include "script.h"
|
||||||
#include "event_data.h"
|
#include "event_data.h"
|
||||||
#include "battle_interface.h"
|
#include "battle_interface.h"
|
||||||
#include "pokemon_summary_screen.h"
|
#include "pokemon_summary_screen.h"
|
||||||
@@ -137,9 +144,14 @@ struct TradeAnimationResources {
|
|||||||
/*0xF6*/ u8 unk_F6;
|
/*0xF6*/ u8 unk_F6;
|
||||||
/*0xF8*/ u16 monSpecies[2];
|
/*0xF8*/ u16 monSpecies[2];
|
||||||
/*0xFC*/ u8 unk_FC[7];
|
/*0xFC*/ u8 unk_FC[7];
|
||||||
/*0x103*/ u8 filler_103[5];
|
/*0x103*/ u8 filler_103[1];
|
||||||
|
/*0x104*/ u8 textColor[3];
|
||||||
|
/*0x107*/ u8 filler_107[1];
|
||||||
/*0x108*/ u8 isCableTrade;
|
/*0x108*/ u8 isCableTrade;
|
||||||
/*0x109*/ u8 filler_109[7];
|
/*0x109*/ u8 win0left;
|
||||||
|
/*0x10A*/ u8 win0top;
|
||||||
|
/*0x10B*/ u8 win0right;
|
||||||
|
/*0x10C*/ u8 win0bottom;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum TradeStatusMsg
|
enum TradeStatusMsg
|
||||||
@@ -210,13 +222,25 @@ static void GetInGameTradeMail(struct MailStruct * mail, const struct InGameTrad
|
|||||||
void CB2_RunTradeAnim_LinkTrade(void);
|
void CB2_RunTradeAnim_LinkTrade(void);
|
||||||
void sub_8053E1C(void);
|
void sub_8053E1C(void);
|
||||||
void sub_8053E8C(void);
|
void sub_8053E8C(void);
|
||||||
void LoadHeldItemIcons(void);
|
void sub_80543C4(void);
|
||||||
void DrawTextOnTradeWindow(u8 windowId, const u8 *str, s8 speed);
|
void sub_8054470(u8 taskId);
|
||||||
void CheckPartnersMonForRibbons(void);
|
void CheckPartnersMonForRibbons(void);
|
||||||
|
void DrawTextOnTradeWindow(u8 windowId, const u8 *str, s8 speed);
|
||||||
void Task_AnimateWirelessSignal(u8 taskId);
|
void Task_AnimateWirelessSignal(u8 taskId);
|
||||||
void c3_0805465C(u8 taskId);
|
void c3_0805465C(u8 taskId);
|
||||||
void sub_8054734(u8 taskId);
|
void sub_8054734(u8 taskId);
|
||||||
|
|
||||||
|
static const size_t gUnknown_8260814[] = {
|
||||||
|
sizeof(struct SaveBlock2),
|
||||||
|
sizeof(struct SaveBlock1),
|
||||||
|
sizeof(struct MapData),
|
||||||
|
0x530, // unk
|
||||||
|
0x34, // unk
|
||||||
|
sizeof(struct MailStruct),
|
||||||
|
sizeof(struct Pokemon),
|
||||||
|
0x528 // unk
|
||||||
|
};
|
||||||
|
|
||||||
extern const u16 gUnknown_8260C30[];
|
extern const u16 gUnknown_8260C30[];
|
||||||
extern const u16 gUnknown_8261430[];
|
extern const u16 gUnknown_8261430[];
|
||||||
extern const struct BgTemplate gUnknown_8261F1C[4];
|
extern const struct BgTemplate gUnknown_8261F1C[4];
|
||||||
@@ -251,6 +275,8 @@ extern const u16 gUnknown_8269A5C[];
|
|||||||
extern const u32 gUnknown_3379A0Bin[];
|
extern const u32 gUnknown_3379A0Bin[];
|
||||||
extern const u16 gUnknown_826407C[];
|
extern const u16 gUnknown_826407C[];
|
||||||
extern const u16 gUnknown_826601C[];
|
extern const u16 gUnknown_826601C[];
|
||||||
|
extern const u16 gUnknown_826BB5C[];
|
||||||
|
extern const u16 gUnknown_826BD5C[];
|
||||||
extern const u16 gUnknown_826BF5C[];
|
extern const u16 gUnknown_826BF5C[];
|
||||||
extern const u16 gUnknown_826701C[];
|
extern const u16 gUnknown_826701C[];
|
||||||
extern const u16 gUnknown_826985C[];
|
extern const u16 gUnknown_826985C[];
|
||||||
@@ -273,6 +299,7 @@ extern const union AffineAnimCmd *const gUnknown_826CF88[];
|
|||||||
extern const struct SpriteTemplate gUnknown_826CF48;
|
extern const struct SpriteTemplate gUnknown_826CF48;
|
||||||
extern const s8 gUnknown_826D1E4[];
|
extern const s8 gUnknown_826D1E4[];
|
||||||
extern const u16 sInGameTradeMailMessages[][10];
|
extern const u16 sInGameTradeMailMessages[][10];
|
||||||
|
extern const u8 gUnknown_826D250[][2];
|
||||||
|
|
||||||
void sub_804C600(void)
|
void sub_804C600(void)
|
||||||
{
|
{
|
||||||
@@ -6034,3 +6061,331 @@ void sub_8053E1C(void)
|
|||||||
BuildOamBuffer();
|
BuildOamBuffer();
|
||||||
UpdatePaletteFade();
|
UpdatePaletteFade();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sub_8053E8C(void)
|
||||||
|
{
|
||||||
|
switch (gMain.state)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
gMain.state++;
|
||||||
|
StringExpandPlaceholders(gStringVar4, gUnknown_841E325);
|
||||||
|
DrawTextOnTradeWindow(0, gStringVar4, 0);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
sub_800AB9C();
|
||||||
|
gMain.state = 100;
|
||||||
|
sTradeData->timer = 0;
|
||||||
|
break;
|
||||||
|
case 100:
|
||||||
|
if (++sTradeData->timer > 180)
|
||||||
|
{
|
||||||
|
gMain.state = 101;
|
||||||
|
sTradeData->timer = 0;
|
||||||
|
}
|
||||||
|
if (IsLinkTaskFinished())
|
||||||
|
{
|
||||||
|
gMain.state = 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 101:
|
||||||
|
if (IsLinkTaskFinished())
|
||||||
|
{
|
||||||
|
gMain.state = 2;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
gMain.state = 50;
|
||||||
|
StringExpandPlaceholders(gStringVar4, gText_SavingDontTurnOffThePower2);
|
||||||
|
DrawTextOnTradeWindow(0, gStringVar4, 0);
|
||||||
|
break;
|
||||||
|
case 50:
|
||||||
|
if (InUnionRoom())
|
||||||
|
{
|
||||||
|
sub_8113550(18, sTradeData->monSpecies);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sub_8113550(12, sTradeData->monSpecies);
|
||||||
|
IncrementGameStat(GAME_STAT_POKEMON_TRADES);
|
||||||
|
}
|
||||||
|
if (gWirelessCommType)
|
||||||
|
{
|
||||||
|
sub_8144714(2, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId);
|
||||||
|
}
|
||||||
|
SetContinueGameWarpStatusToDynamicWarp();
|
||||||
|
sub_80DA3AC();
|
||||||
|
gMain.state++;
|
||||||
|
sTradeData->timer = 0;
|
||||||
|
break;
|
||||||
|
case 51:
|
||||||
|
if (++sTradeData->timer == 5)
|
||||||
|
{
|
||||||
|
gMain.state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 52:
|
||||||
|
if (sub_80DA3D8())
|
||||||
|
{
|
||||||
|
ClearContinueGameWarpStatus2();
|
||||||
|
gMain.state = 4;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sTradeData->timer = 0;
|
||||||
|
gMain.state = 51;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
sub_80DA40C();
|
||||||
|
gMain.state = 40;
|
||||||
|
sTradeData->timer = 0;
|
||||||
|
break;
|
||||||
|
case 40:
|
||||||
|
if (++sTradeData->timer > 50)
|
||||||
|
{
|
||||||
|
if (GetMultiplayerId() == 0)
|
||||||
|
{
|
||||||
|
sTradeData->timer = Random() % 30;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sTradeData->timer = 0;
|
||||||
|
}
|
||||||
|
gMain.state = 41;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 41:
|
||||||
|
if (sTradeData->timer == 0)
|
||||||
|
{
|
||||||
|
sub_800AB9C();
|
||||||
|
gMain.state = 42;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sTradeData->timer--;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 42:
|
||||||
|
if (IsLinkTaskFinished())
|
||||||
|
{
|
||||||
|
sub_80DA434();
|
||||||
|
gMain.state = 5;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
if (++sTradeData->timer > 60)
|
||||||
|
{
|
||||||
|
gMain.state++;
|
||||||
|
sub_800AB9C();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
if (IsLinkTaskFinished())
|
||||||
|
{
|
||||||
|
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||||
|
gMain.state ++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
if (!gPaletteFade.active)
|
||||||
|
{
|
||||||
|
FadeOutBGM(3);
|
||||||
|
gMain.state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
if (IsBGMStopped() == TRUE)
|
||||||
|
{
|
||||||
|
if (gWirelessCommType && gMain.savedCallback == sub_804C718)
|
||||||
|
{
|
||||||
|
sub_800AB9C();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sub_800AAC0();
|
||||||
|
}
|
||||||
|
gMain.state++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
if (gWirelessCommType && gMain.savedCallback == sub_804C718)
|
||||||
|
{
|
||||||
|
if (IsLinkRfuTaskFinished())
|
||||||
|
{
|
||||||
|
gSoftResetDisabled = FALSE;
|
||||||
|
SetMainCallback2(sub_80543C4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!gReceivedRemoteLinkPlayers)
|
||||||
|
{
|
||||||
|
gSoftResetDisabled = FALSE;
|
||||||
|
SetMainCallback2(sub_80543C4);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (!HasLinkErrorOccurred())
|
||||||
|
{
|
||||||
|
RunTasks();
|
||||||
|
}
|
||||||
|
AnimateSprites();
|
||||||
|
BuildOamBuffer();
|
||||||
|
UpdatePaletteFade();
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80543C4(void)
|
||||||
|
{
|
||||||
|
if (!gPaletteFade.active)
|
||||||
|
{
|
||||||
|
FreeAllWindowBuffers();
|
||||||
|
Free(GetBgTilemapBuffer(3));
|
||||||
|
Free(GetBgTilemapBuffer(1));
|
||||||
|
Free(GetBgTilemapBuffer(0));
|
||||||
|
FreeMonSpritesGfx();
|
||||||
|
FREE_AND_SET_NULL(sTradeData);
|
||||||
|
if (gWirelessCommType != 0)
|
||||||
|
DestroyWirelessStatusIndicatorSprite();
|
||||||
|
SetMainCallback2(gMain.savedCallback);
|
||||||
|
}
|
||||||
|
RunTasks();
|
||||||
|
AnimateSprites();
|
||||||
|
BuildOamBuffer();
|
||||||
|
UpdatePaletteFade();
|
||||||
|
}
|
||||||
|
|
||||||
|
void DoInGameTradeScene(void)
|
||||||
|
{
|
||||||
|
ScriptContext2_Enable();
|
||||||
|
CreateTask(sub_8054470, 10);
|
||||||
|
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||||
|
HelpSystem_Disable();
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8054470(u8 taskId)
|
||||||
|
{
|
||||||
|
if (!gPaletteFade.active)
|
||||||
|
{
|
||||||
|
SetMainCallback2(CB2_InitTradeAnim_InGameTrade);
|
||||||
|
gFieldCallback = FieldCallback_ReturnToEventScript2;
|
||||||
|
DestroyTask(taskId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheckPartnersMonForRibbons(void)
|
||||||
|
{
|
||||||
|
u8 nRibbons = 0;
|
||||||
|
u8 i;
|
||||||
|
for (i = 0; i < 12; i++)
|
||||||
|
{
|
||||||
|
nRibbons += GetMonData(&gEnemyParty[gSelectedTradeMonPositions[1] % 6], MON_DATA_CHAMPION_RIBBON + i);
|
||||||
|
}
|
||||||
|
if (nRibbons != 0)
|
||||||
|
FlagSet(FLAG_SYS_RIBBON_GET);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80544FC(void)
|
||||||
|
{
|
||||||
|
TradeAnimInit_LoadGfx();
|
||||||
|
}
|
||||||
|
|
||||||
|
void DrawTextOnTradeWindow(u8 windowId, const u8 *str, s8 speed)
|
||||||
|
{
|
||||||
|
FillWindowPixelBuffer(windowId, PIXEL_FILL(15));
|
||||||
|
sTradeData->textColor[0] = 15;
|
||||||
|
sTradeData->textColor[1] = 1;
|
||||||
|
sTradeData->textColor[2] = 6;
|
||||||
|
AddTextPrinterParameterized4(windowId, 2, 0, 2, 0, 2, sTradeData->textColor, speed, str);
|
||||||
|
CopyWindowToVram(windowId, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Task_AnimateWirelessSignal(u8 taskId)
|
||||||
|
{
|
||||||
|
s16 *data = gTasks[taskId].data;
|
||||||
|
u16 r2 = 16 * gUnknown_826D250[data[0]][0];
|
||||||
|
if (data[2] == 0)
|
||||||
|
{
|
||||||
|
if (r2 == 0x100)
|
||||||
|
LoadPalette(gUnknown_826BF5C, 0x30, 0x20);
|
||||||
|
else
|
||||||
|
LoadPalette(&gUnknown_826BB5C[r2], 0x30, 0x20);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (r2 == 0x100)
|
||||||
|
LoadPalette(gUnknown_826BF5C, 0x30, 0x20);
|
||||||
|
else
|
||||||
|
LoadPalette(&gUnknown_826BD5C[r2], 0x30, 0x20);
|
||||||
|
}
|
||||||
|
if (gUnknown_826D250[data[0]][0] == 0 && data[1] == 0)
|
||||||
|
PlaySE(SE_W215);
|
||||||
|
if (data[1] == gUnknown_826D250[data[0]][1])
|
||||||
|
{
|
||||||
|
data[0]++;
|
||||||
|
data[1] = 0;
|
||||||
|
if (gUnknown_826D250[data[0]][1] == 0xFF)
|
||||||
|
DestroyTask(taskId);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
data[1]++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void c3_0805465C(u8 taskId)
|
||||||
|
{
|
||||||
|
s16 *data = gTasks[taskId].data;
|
||||||
|
|
||||||
|
if (data[0] == 0)
|
||||||
|
{
|
||||||
|
sTradeData->win0left = sTradeData->win0right = 120;
|
||||||
|
sTradeData->win0top = 0;
|
||||||
|
sTradeData->win0bottom = 160;
|
||||||
|
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
|
||||||
|
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_OBJ);
|
||||||
|
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 |
|
||||||
|
WININ_WIN0_BG1 |
|
||||||
|
WININ_WIN0_OBJ);
|
||||||
|
}
|
||||||
|
|
||||||
|
SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE2(sTradeData->win0left, sTradeData->win0right));
|
||||||
|
SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE2(sTradeData->win0top, sTradeData->win0bottom));
|
||||||
|
|
||||||
|
data[0]++;
|
||||||
|
sTradeData->win0left -= 5;
|
||||||
|
sTradeData->win0right += 5;
|
||||||
|
|
||||||
|
if (sTradeData->win0left < 80)
|
||||||
|
{
|
||||||
|
DestroyTask(taskId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8054734(u8 taskId)
|
||||||
|
{
|
||||||
|
s16 *data = gTasks[taskId].data;
|
||||||
|
|
||||||
|
if (data[0] == 0)
|
||||||
|
{
|
||||||
|
sTradeData->win0left = 80;
|
||||||
|
sTradeData->win0right = 160;
|
||||||
|
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_OBJ);
|
||||||
|
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 |
|
||||||
|
WININ_WIN0_BG1 |
|
||||||
|
WININ_WIN0_OBJ);
|
||||||
|
}
|
||||||
|
|
||||||
|
SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE2(sTradeData->win0left, sTradeData->win0right));
|
||||||
|
SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE2(sTradeData->win0top, sTradeData->win0bottom));
|
||||||
|
|
||||||
|
if (sTradeData->win0left != 120)
|
||||||
|
{
|
||||||
|
data[0]++;
|
||||||
|
sTradeData->win0left += 5;
|
||||||
|
sTradeData->win0right -= 5;
|
||||||
|
|
||||||
|
if (sTradeData->win0left >= 116)
|
||||||
|
BlendPalettes(0x8, 0, RGB_WHITEALPHA);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
|
||||||
|
DestroyTask(taskId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user