trade through sub_804E944
This commit is contained in:
+1
-1
@@ -8681,7 +8681,7 @@ _08122D8C:
|
||||
ldr r3, _08122DB8 @ =sub_8122DBC
|
||||
movs r4, 0
|
||||
str r4, [sp]
|
||||
bl sub_81344F8
|
||||
bl ShowPokemonSummaryScreen
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
|
||||
@@ -6561,7 +6561,7 @@ _0808EE78:
|
||||
mov r0, r8
|
||||
adds r1, r6, 0
|
||||
adds r2, r5, 0
|
||||
bl sub_81344F8
|
||||
bl ShowPokemonSummaryScreen
|
||||
b _0808EEF6
|
||||
.align 2, 0
|
||||
_0808EEAC: .4byte gUnknown_20397B0
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_81344F8
|
||||
sub_81344F8: @ 81344F8
|
||||
thumb_func_start ShowPokemonSummaryScreen
|
||||
ShowPokemonSummaryScreen: @ 81344F8
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
@@ -268,7 +268,7 @@ _08134728: .4byte 0x0000322c
|
||||
_0813472C: .4byte 0x00003290
|
||||
_08134730: .4byte 0x00003204
|
||||
_08134734: .4byte sub_8135C34
|
||||
thumb_func_end sub_81344F8
|
||||
thumb_func_end ShowPokemonSummaryScreen
|
||||
|
||||
thumb_func_start ShowSelectMovePokemonSummaryScreen
|
||||
ShowSelectMovePokemonSummaryScreen: @ 8134738
|
||||
@@ -283,7 +283,7 @@ ShowSelectMovePokemonSummaryScreen: @ 8134738
|
||||
lsrs r5, 16
|
||||
movs r4, 0x2
|
||||
str r4, [sp]
|
||||
bl sub_81344F8
|
||||
bl ShowPokemonSummaryScreen
|
||||
ldr r0, _08134764 @ =gUnknown_203B140
|
||||
ldr r0, [r0]
|
||||
ldr r1, _08134768 @ =0x00003260
|
||||
@@ -14091,7 +14091,7 @@ sub_813B854: @ 813B854
|
||||
str r0, [sp]
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl sub_81344F8
|
||||
bl ShowPokemonSummaryScreen
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
|
||||
-1796
File diff suppressed because it is too large
Load Diff
@@ -142,5 +142,6 @@ bool32 sub_8058318(void);
|
||||
|
||||
void CB2_ReturnToStartMenu(void);
|
||||
void CB2_WhiteOut(void);
|
||||
void c2_8056854(void);
|
||||
|
||||
#endif //GUARD_OVERWORLD_H
|
||||
|
||||
@@ -8,7 +8,6 @@ extern u8 gLastViewedMonIndex;
|
||||
extern const u8 *const gMoveDescriptionPointers[];
|
||||
extern const u8 *const gNatureNamePointers[];
|
||||
|
||||
void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
|
||||
void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16);
|
||||
void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
|
||||
u8 sub_8138B2C(void);
|
||||
@@ -34,5 +33,6 @@ enum PokemonSummaryScreenPage
|
||||
};
|
||||
|
||||
s32 sub_8138B20(void);
|
||||
void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, void (*callback)(void), u8 a4);
|
||||
|
||||
#endif // GUARD_POKEMON_SUMMARY_SCREEN_H
|
||||
|
||||
@@ -660,4 +660,7 @@ extern const u8 gText_FiveIsland[];
|
||||
extern const u8 gText_SixIsland[];
|
||||
extern const u8 gText_SevenIsland[];
|
||||
|
||||
// trade
|
||||
extern const u8 gUnknown_841E0A5[];
|
||||
|
||||
#endif //GUARD_STRINGS_H
|
||||
|
||||
+3
-3
@@ -8,11 +8,11 @@ u32 gRngValue;
|
||||
|
||||
u16 Random(void)
|
||||
{
|
||||
gRngValue = 1103515245 * gRngValue + 24691;
|
||||
return gRngValue >> 16;
|
||||
gRngValue = 1103515245 * gRngValue + 24691;
|
||||
return gRngValue >> 16;
|
||||
}
|
||||
|
||||
void SeedRng(u16 seed)
|
||||
{
|
||||
gRngValue = seed;
|
||||
gRngValue = seed;
|
||||
}
|
||||
|
||||
+570
-1
@@ -16,6 +16,9 @@
|
||||
#include "data.h"
|
||||
#include "sound.h"
|
||||
#include "string_util.h"
|
||||
#include "strings.h"
|
||||
#include "menu.h"
|
||||
#include "overworld.h"
|
||||
#include "party_menu.h"
|
||||
#include "pokemon_summary_screen.h"
|
||||
#include "pokemon_storage_system.h"
|
||||
@@ -79,12 +82,16 @@ void sub_804D4F8(void);
|
||||
void sub_804D638(void);
|
||||
void sub_804D694(u8 state);
|
||||
void sub_804D764(void);
|
||||
u8 shedinja_maker_maybe(void);
|
||||
void sub_804DFF0(void);
|
||||
void sub_804E9E4(void);
|
||||
void sub_804EAAC(u8 a0);
|
||||
void sub_804EAE4(u8 side);
|
||||
u8 shedinja_maker_maybe(void);
|
||||
void sub_804F020(u8 side);
|
||||
void sub_804F284(u8 side);
|
||||
void sub_804F3B4(void);
|
||||
void sub_804F3C8(u8 a0);
|
||||
void sub_804F488(u16 a0, u8 a1);
|
||||
void sub_804F4DC(void);
|
||||
void sub_804F5BC(u8 str_idx);
|
||||
bool8 sub_804F610(void);
|
||||
@@ -93,6 +100,7 @@ void sub_804F748(u8 side);
|
||||
void sub_804F890(u8 side);
|
||||
void sub_804F964(void);
|
||||
void sub_804F9D8(void);
|
||||
u32 sub_804FA14(struct Pokemon * party, u8 partyCount, u8 cursorPos);
|
||||
void LoadHeldItemIcons(void);
|
||||
void sub_8050138(void);
|
||||
|
||||
@@ -106,6 +114,7 @@ extern const u8 gTradeUnknownSpriteCoords[][4];
|
||||
extern const struct SpriteTemplate gUnknown_8261CB0;
|
||||
extern const struct SpriteTemplate gUnknown_8261CC8;
|
||||
extern const u8 gJPText_Shedinja[];
|
||||
extern const u8 gUnknown_8261D08[][4][6];
|
||||
|
||||
void sub_804C600(void)
|
||||
{
|
||||
@@ -2513,3 +2522,563 @@ bool8 shedinja_maker_maybe(void)
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_804DBAC(void)
|
||||
{
|
||||
sub_804F728(gUnknown_841E0A5, (u8 *)OBJ_VRAM0 + gUnknown_2031DA8->unk_72 * 32, 0x18);
|
||||
}
|
||||
|
||||
void sub_804DBD4(u8 a0, u8 a1)
|
||||
{
|
||||
if (a1 & 1)
|
||||
{
|
||||
switch (gBlockRecvBuffer[0][0])
|
||||
{
|
||||
case 0xEEAA:
|
||||
gUnknown_2031DA8->unk_78 = 2;
|
||||
break;
|
||||
case 0xAABB:
|
||||
gUnknown_2031DA8->unk_78 = 1;
|
||||
break;
|
||||
case 0xBBBB:
|
||||
gUnknown_2031DA8->unk_7A = 1;
|
||||
break;
|
||||
case 0xBBCC:
|
||||
gUnknown_2031DA8->unk_7A = 2;
|
||||
break;
|
||||
}
|
||||
ResetBlockReceivedFlag(0);
|
||||
}
|
||||
|
||||
if (a1 & 2)
|
||||
{
|
||||
switch (gBlockRecvBuffer[1][0])
|
||||
{
|
||||
case 0xEEAA:
|
||||
gUnknown_2031DA8->unk_79 = 2;
|
||||
break;
|
||||
case 0xAABB:
|
||||
gUnknown_2031DA8->unk_7E = gBlockRecvBuffer[1][1] + 6;
|
||||
gUnknown_2031DA8->unk_79 = 1;
|
||||
break;
|
||||
case 0xBBBB:
|
||||
gUnknown_2031DA8->unk_7B = 1;
|
||||
break;
|
||||
case 0xBBCC:
|
||||
gUnknown_2031DA8->unk_7B = 2;
|
||||
break;
|
||||
}
|
||||
ResetBlockReceivedFlag(1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804DCF4(u8 a0, u8 a1)
|
||||
{
|
||||
if (a1 & 1)
|
||||
{
|
||||
switch (gBlockRecvBuffer[0][0])
|
||||
{
|
||||
case 0xEEBB:
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||
sub_804F5BC(4);
|
||||
gUnknown_2031DA8->unk_6F = 11;
|
||||
break;
|
||||
case 0xEECC:
|
||||
sub_804F5BC(5);
|
||||
gUnknown_2031DA8->unk_6F = 8;
|
||||
break;
|
||||
case 0xDDDD:
|
||||
gUnknown_2031DA8->unk_7E = gBlockRecvBuffer[0][1] + 6;
|
||||
rbox_fill_rectangle(0);
|
||||
sub_804EAAC(gUnknown_2031DA8->tradeMenuCursorPosition);
|
||||
sub_804EAAC(gUnknown_2031DA8->unk_7E);
|
||||
gUnknown_2031DA8->unk_6F = 7;
|
||||
break;
|
||||
case 0xCCDD:
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||
gUnknown_2031DA8->unk_6F = 10;
|
||||
break;
|
||||
case 0xDDEE:
|
||||
sub_804F5BC(1);
|
||||
gUnknown_2031DA8->unk_6F = 8;
|
||||
}
|
||||
ResetBlockReceivedFlag(0);
|
||||
}
|
||||
|
||||
if (a1 & 2)
|
||||
ResetBlockReceivedFlag(1);
|
||||
}
|
||||
|
||||
void sub_804DDF0(void)
|
||||
{
|
||||
if (gUnknown_2031DA8->unk_78 && gUnknown_2031DA8->unk_79)
|
||||
{
|
||||
if (gUnknown_2031DA8->unk_78 == 1 && gUnknown_2031DA8->unk_79 == 1)
|
||||
{
|
||||
gUnknown_2031DA8->unk_6F = 6;
|
||||
gUnknown_2031DA8->linkData[0] = 0xDDDD;
|
||||
gUnknown_2031DA8->linkData[1] = gUnknown_2031DA8->tradeMenuCursorPosition;
|
||||
sub_804F488(5, 0);
|
||||
gUnknown_2031DA8->unk_78 = gUnknown_2031DA8->unk_79 = 0;
|
||||
}
|
||||
else if (gUnknown_2031DA8->unk_78 == 1 && gUnknown_2031DA8->unk_79 == 2)
|
||||
{
|
||||
sub_804F5BC(1);
|
||||
gUnknown_2031DA8->linkData[0] = 0xEECC;
|
||||
gUnknown_2031DA8->linkData[1] = 0;
|
||||
sub_804F488(5, 0);
|
||||
gUnknown_2031DA8->unk_7A = gUnknown_2031DA8->unk_7B = 0;
|
||||
gUnknown_2031DA8->unk_78 = gUnknown_2031DA8->unk_79 = 0;
|
||||
gUnknown_2031DA8->unk_6F = 8;
|
||||
}
|
||||
else if (gUnknown_2031DA8->unk_78 == 2 && gUnknown_2031DA8->unk_79 == 1)
|
||||
{
|
||||
sub_804F5BC(5);
|
||||
gUnknown_2031DA8->linkData[0] = 0xDDEE;
|
||||
gUnknown_2031DA8->linkData[1] = 0;
|
||||
sub_804F488(5, 0);
|
||||
gUnknown_2031DA8->unk_7A = gUnknown_2031DA8->unk_7B = 0;
|
||||
gUnknown_2031DA8->unk_78 = gUnknown_2031DA8->unk_79 = 0;
|
||||
gUnknown_2031DA8->unk_6F = 8;
|
||||
}
|
||||
else if (gUnknown_2031DA8->unk_78 == 2 && gUnknown_2031DA8->unk_79 == 2)
|
||||
{
|
||||
gUnknown_2031DA8->linkData[0] = 0xEEBB;
|
||||
gUnknown_2031DA8->linkData[1] = 0;
|
||||
sub_804F488(5, 0);
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||
gUnknown_2031DA8->unk_78 = gUnknown_2031DA8->unk_79 = 0;
|
||||
gUnknown_2031DA8->unk_6F = 11;
|
||||
}
|
||||
}
|
||||
|
||||
if (gUnknown_2031DA8->unk_7A && gUnknown_2031DA8->unk_7B)
|
||||
{
|
||||
if (gUnknown_2031DA8->unk_7A == 1 && gUnknown_2031DA8->unk_7B == 1)
|
||||
{
|
||||
gUnknown_2031DA8->linkData[0] = 0xCCDD;
|
||||
gUnknown_2031DA8->linkData[1] = 0;
|
||||
sub_804F488(5, 0);
|
||||
gUnknown_2031DA8->unk_7A = 0;
|
||||
gUnknown_2031DA8->unk_7B = 0;
|
||||
gUnknown_2031DA8->unk_6F = 9;
|
||||
}
|
||||
|
||||
if (gUnknown_2031DA8->unk_7A == 2 || gUnknown_2031DA8->unk_7B == 2)
|
||||
{
|
||||
sub_804F5BC(1);
|
||||
gUnknown_2031DA8->linkData[0] = 0xDDEE;
|
||||
gUnknown_2031DA8->linkData[1] = 0;
|
||||
sub_804F488(5, 0);
|
||||
gUnknown_2031DA8->unk_7A = 0;
|
||||
gUnknown_2031DA8->unk_7B = 0;
|
||||
gUnknown_2031DA8->unk_6F = 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804DFF0(void)
|
||||
{
|
||||
u8 mpId = GetMultiplayerId();
|
||||
u8 status;
|
||||
if ((status = GetBlockReceivedStatus()))
|
||||
{
|
||||
if (mpId == 0)
|
||||
sub_804DBD4(0, status);
|
||||
else
|
||||
sub_804DCF4(mpId, status);
|
||||
}
|
||||
if (mpId == 0)
|
||||
sub_804DDF0();
|
||||
}
|
||||
|
||||
u8 sub_804E028(u8 oldPosition, u8 direction)
|
||||
{
|
||||
int i;
|
||||
u8 newPosition = 0;
|
||||
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (gUnknown_2031DA8->tradeMenuOptionsActive[gUnknown_8261D08[oldPosition][direction][i]] == TRUE)
|
||||
{
|
||||
newPosition = gUnknown_8261D08[oldPosition][direction][i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return newPosition;
|
||||
}
|
||||
|
||||
|
||||
void TradeMenuMoveCursor(u8 *tradeMenuCursorPosition, u8 direction)
|
||||
{
|
||||
u8 newPosition = sub_804E028(*tradeMenuCursorPosition, direction);
|
||||
|
||||
if (newPosition == 12) // CANCEL
|
||||
{
|
||||
StartSpriteAnim(&gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx], 1);
|
||||
gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].pos1.x = 224;
|
||||
gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].pos1.y = 160;
|
||||
}
|
||||
else
|
||||
{
|
||||
StartSpriteAnim(&gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx], 0);
|
||||
gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].pos1.x = gTradeMonSpriteCoords[newPosition][0] * 8 + 32;
|
||||
gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].pos1.y = gTradeMonSpriteCoords[newPosition][1] * 8;
|
||||
}
|
||||
|
||||
if (*tradeMenuCursorPosition != newPosition)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
}
|
||||
|
||||
*tradeMenuCursorPosition = newPosition;
|
||||
}
|
||||
|
||||
void sub_804E134(void)
|
||||
{
|
||||
sub_804F5BC(0);
|
||||
gUnknown_2031DA8->unk_6F = 5;
|
||||
|
||||
if (GetMultiplayerId() == 1)
|
||||
{
|
||||
gUnknown_2031DA8->linkData[0] = 0xAABB;
|
||||
gUnknown_2031DA8->linkData[1] = gUnknown_2031DA8->tradeMenuCursorPosition;
|
||||
SendBlock(bitmask_all_link_players_but_self(), gUnknown_2031DA8->linkData, 0x14);
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_2031DA8->unk_78 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
extern const struct MenuAction gUnknown_8261EE4[];
|
||||
extern const struct WindowTemplate gUnknown_8261FC4;
|
||||
|
||||
void sub_804E194(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (JOY_REPT(DPAD_UP))
|
||||
{
|
||||
TradeMenuMoveCursor(&gUnknown_2031DA8->tradeMenuCursorPosition, 0);
|
||||
}
|
||||
else if (JOY_REPT(DPAD_DOWN))
|
||||
{
|
||||
TradeMenuMoveCursor(&gUnknown_2031DA8->tradeMenuCursorPosition, 1);
|
||||
}
|
||||
else if (JOY_REPT(DPAD_LEFT))
|
||||
{
|
||||
TradeMenuMoveCursor(&gUnknown_2031DA8->tradeMenuCursorPosition, 2);
|
||||
}
|
||||
else if (JOY_REPT(DPAD_RIGHT))
|
||||
{
|
||||
TradeMenuMoveCursor(&gUnknown_2031DA8->tradeMenuCursorPosition, 3);
|
||||
}
|
||||
|
||||
if (JOY_NEW(A_BUTTON))
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
|
||||
if (gUnknown_2031DA8->tradeMenuCursorPosition < 6) // PlayerParty
|
||||
{
|
||||
DrawTextBorderOuter(1, 1, 14);
|
||||
FillWindowPixelBuffer(1, PIXEL_FILL(1));
|
||||
UnionRoomAndTradeMenuPrintOptions(1, 3, 16, 2, gUnknown_8261EE4);
|
||||
Menu_InitCursor(1, 3, 0, 0, 16, 2, 0);
|
||||
PutWindowTilemap(1);
|
||||
CopyWindowToVram(1, 3);
|
||||
gUnknown_2031DA8->unk_6F = 1;
|
||||
}
|
||||
else if (gUnknown_2031DA8->tradeMenuCursorPosition < 12)
|
||||
{
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||
gUnknown_2031DA8->unk_6F = 2;
|
||||
}
|
||||
else if (gUnknown_2031DA8->tradeMenuCursorPosition == 12)
|
||||
{
|
||||
CreateYesNoMenu(&gUnknown_8261FC4, 3, 0, 2, 0x001, 14, 0);
|
||||
gUnknown_2031DA8->unk_6F = 4;
|
||||
sub_804F728(gUnknown_8261ECC[4], (void *)OBJ_VRAM0 + gUnknown_2031DA8->unk_72 * 32, 24);
|
||||
}
|
||||
}
|
||||
if (JOY_NEW(R_BUTTON))
|
||||
{
|
||||
for (i = 0; i < 10; i++)
|
||||
gUnknown_2031DA8->linkData[i] = i;
|
||||
SendBlock(bitmask_all_link_players_but_self(), gUnknown_2031DA8->linkData, 20);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804E330(void)
|
||||
{
|
||||
sub_804F3B4();
|
||||
gUnknown_2031DA8->unk_6F = 0;
|
||||
gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].invisible = FALSE;
|
||||
sub_804F728(gUnknown_8261ECC[1], (void *)OBJ_VRAM0 + gUnknown_2031DA8->unk_72 * 32, 24);
|
||||
}
|
||||
|
||||
void sub_804E388(void)
|
||||
{
|
||||
switch (Menu_ProcessInputNoWrapAround())
|
||||
{
|
||||
case MENU_B_PRESSED:
|
||||
PlaySE(SE_SELECT);
|
||||
sub_804E330();
|
||||
break;
|
||||
case MENU_NOTHING_CHOSEN:
|
||||
break;
|
||||
case 0:
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||
gUnknown_2031DA8->unk_6F = 2;
|
||||
break;
|
||||
case 1:
|
||||
switch (sub_804FA14(gPlayerParty, gPlayerPartyCount, gUnknown_2031DA8->tradeMenuCursorPosition))
|
||||
{
|
||||
case 0:
|
||||
sub_804E134();
|
||||
gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].invisible = TRUE;
|
||||
break;
|
||||
case 1:
|
||||
sub_804F488(3, 3);
|
||||
gUnknown_2031DA8->unk_6F = 8;
|
||||
break;
|
||||
case 2:
|
||||
case 4:
|
||||
sub_804F488(3, 6);
|
||||
gUnknown_2031DA8->unk_6F = 8;
|
||||
break;
|
||||
case 3:
|
||||
case 5:
|
||||
sub_804F488(3, 7);
|
||||
gUnknown_2031DA8->unk_6F = 8;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804E46C(void)
|
||||
{
|
||||
if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
sub_804E330();
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804E494(void)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
if (gUnknown_2031DA8->tradeMenuCursorPosition < 6)
|
||||
ShowPokemonSummaryScreen(gPlayerParty, gUnknown_2031DA8->tradeMenuCursorPosition, gUnknown_2031DA8->partyCounts[0] - 1, sub_804CF14, 4);
|
||||
else
|
||||
ShowPokemonSummaryScreen(gEnemyParty, gUnknown_2031DA8->tradeMenuCursorPosition - 6, gUnknown_2031DA8->partyCounts[1] - 1, sub_804CF14, 4);
|
||||
FreeAllWindowBuffers();
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_804E50C(u8 *a0, u8 a1, u8 a2)
|
||||
{
|
||||
s32 i;
|
||||
u16 species;
|
||||
u8 r4 = 0;
|
||||
for (i = 0; i < a1; i++)
|
||||
{
|
||||
if (a2 != i)
|
||||
r4 += a0[i];
|
||||
}
|
||||
species = GetMonData(&gEnemyParty[gUnknown_2031DA8->unk_7E % 6], MON_DATA_SPECIES);
|
||||
if ((species == SPECIES_DEOXYS || species == SPECIES_MEW) && !GetMonData(&gEnemyParty[gUnknown_2031DA8->unk_7E % 6], MON_DATA_OBEDIENCE))
|
||||
return 2;
|
||||
if (r4 != 0)
|
||||
r4 = 1;
|
||||
return r4;
|
||||
}
|
||||
|
||||
void sub_804E5A0(void)
|
||||
{
|
||||
int i;
|
||||
u8 arr[12];
|
||||
|
||||
for (i = 0; i < gUnknown_2031DA8->partyCounts[0]; i++)
|
||||
{
|
||||
arr[i] = gUnknown_2031DA8->unk_45[0][i];
|
||||
}
|
||||
|
||||
switch (sub_804E50C(arr, gUnknown_2031DA8->partyCounts[0], gUnknown_2031DA8->tradeMenuCursorPosition))
|
||||
{
|
||||
case 0:
|
||||
sub_804F488(3, 3);
|
||||
gUnknown_2031DA8->linkData[0] = 0xBBCC;
|
||||
sub_804F488(0xB4, 0);
|
||||
break;
|
||||
case 1:
|
||||
sub_804F488(3, 1);
|
||||
gUnknown_2031DA8->linkData[0] = 0xBBBB;
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
SendBlock(bitmask_all_link_players_but_self(), gUnknown_2031DA8->linkData, 20);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
sub_804F488(3, 8);
|
||||
gUnknown_2031DA8->linkData[0] = 0xBBCC;
|
||||
sub_804F488(0xB4, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804E674(void)
|
||||
{
|
||||
switch (Menu_ProcessInputNoWrapClearOnChoose())
|
||||
{
|
||||
case 0:
|
||||
sub_804E5A0();
|
||||
gUnknown_2031DA8->unk_6F = 100;
|
||||
PutWindowTilemap(17);
|
||||
break;
|
||||
case 1:
|
||||
case MENU_B_PRESSED:
|
||||
sub_804F488(3, 1);
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
gUnknown_2031DA8->linkData[0] = 0xBBCC;
|
||||
SendBlock(bitmask_all_link_players_but_self(), gUnknown_2031DA8->linkData, 20);
|
||||
}
|
||||
gUnknown_2031DA8->unk_6F = 100;
|
||||
PutWindowTilemap(17);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804E6FC(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < gUnknown_2031DA8->partyCounts[1] - 4; i++)
|
||||
{
|
||||
PutWindowTilemap(i + 12);
|
||||
CopyWindowToVram(i + 12, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804E744(void)
|
||||
{
|
||||
switch (Menu_ProcessInputNoWrapClearOnChoose())
|
||||
{
|
||||
case 0:
|
||||
sub_804F5BC(4);
|
||||
gUnknown_2031DA8->linkData[0] = 0xEEAA;
|
||||
gUnknown_2031DA8->linkData[1] = 0;
|
||||
sub_804F488(5, 0);
|
||||
gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].invisible = TRUE;
|
||||
gUnknown_2031DA8->unk_6F = 100;
|
||||
sub_804E6FC();
|
||||
break;
|
||||
case 1:
|
||||
case MENU_B_PRESSED:
|
||||
PlaySE(SE_SELECT);
|
||||
sub_804E330();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804E7C8(void)
|
||||
{
|
||||
if (GetMultiplayerId() == 0)
|
||||
{
|
||||
rbox_fill_rectangle(0);
|
||||
sub_804EAAC(gUnknown_2031DA8->tradeMenuCursorPosition);
|
||||
sub_804EAAC(gUnknown_2031DA8->unk_7E);
|
||||
}
|
||||
gUnknown_2031DA8->unk_6F = 7;
|
||||
}
|
||||
|
||||
void sub_804E804(void)
|
||||
{
|
||||
if (gUnknown_2031DA8->unk_74[0] == 5 && gUnknown_2031DA8->unk_74[1] == 5)
|
||||
{
|
||||
sub_804DBAC();
|
||||
gUnknown_2031DA8->unk_6F = 14;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804E830(void)
|
||||
{
|
||||
gUnknown_2031DA8->unk_A8++;
|
||||
|
||||
if (gUnknown_2031DA8->unk_A8 > 120)
|
||||
{
|
||||
CreateYesNoMenu(&gUnknown_8261FC4, 3, 0, 2, 1, 14, 0);
|
||||
gUnknown_2031DA8->unk_A8 = 0;
|
||||
gUnknown_2031DA8->unk_6F = 3;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804E880(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
rbox_fill_rectangle(0);
|
||||
rbox_fill_rectangle(1);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
FillWindowPixelBuffer(i + 14, PIXEL_FILL(0));
|
||||
rbox_fill_rectangle(i + 14);
|
||||
}
|
||||
|
||||
sub_804F3C8(0);
|
||||
sub_804F3C8(1);
|
||||
gUnknown_2031DA8->unk_6F = 0;
|
||||
gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].invisible = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804E908(void)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
if (gWirelessCommType)
|
||||
{
|
||||
sub_800AB9C();
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_800AA80(12);
|
||||
}
|
||||
|
||||
gUnknown_2031DA8->unk_6F = 12;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_804E944(void)
|
||||
{
|
||||
if (gWirelessCommType)
|
||||
{
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
Free(gUnknown_2031C90);
|
||||
Free(gUnknown_2031DA8);
|
||||
FreeAllWindowBuffers();
|
||||
DestroyWirelessStatusIndicatorSprite();
|
||||
SetMainCallback2(c2_8056854);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!gReceivedRemoteLinkPlayers)
|
||||
{
|
||||
Free(gUnknown_2031C90);
|
||||
Free(gUnknown_2031DA8);
|
||||
FreeAllWindowBuffers();
|
||||
SetMainCallback2(c2_8056854);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user