more menu decomp and merging of files

This commit is contained in:
Seth Barberee
2023-05-19 10:50:27 -07:00
parent 2d01cbd025
commit fae8e0cbfb
19 changed files with 344 additions and 569 deletions

View File

@@ -1,297 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_802D5A4
sub_802D5A4:
push {r4-r7,lr}
ldr r4, _0802D630
ldr r0, [r4]
movs r5, 0xCC
lsls r5, 1
adds r0, r5
movs r1, 0
movs r2, 0x10
bl MemoryFill16
ldr r0, [r4]
mov r12, r0
movs r3, 0
movs r1, 0x8C
lsls r1, 1
add r1, r12
ldr r0, _0802D634
ldr r0, [r0]
str r0, [r1]
movs r1, 0x8E
lsls r1, 1
add r1, r12
movs r0, 0x2
str r0, [r1]
movs r2, 0x1
movs r1, 0x90
lsls r1, 1
add r1, r12
ldr r0, _0802D638
ldr r0, [r0]
str r0, [r1]
movs r1, 0x92
lsls r1, 1
add r1, r12
movs r0, 0x5
str r0, [r1]
movs r7, 0x2
movs r0, 0x94
lsls r0, 1
add r0, r12
str r3, [r0]
movs r0, 0x96
lsls r0, 1
add r0, r12
str r2, [r0]
movs r6, 0
movs r3, 0x8E
lsls r3, 1
add r3, r12
mov r0, r12
adds r2, r0, r5
_0802D60A:
ldrh r0, [r2]
cmp r0, 0
bne _0802D61A
ldr r1, [r3]
mov r5, r12
ldr r0, [r5, 0x6C]
cmp r1, r0
beq _0802D62A
_0802D61A:
adds r3, 0x8
adds r2, 0x2
adds r6, 0x1
cmp r6, r7
blt _0802D60A
ldr r1, [r4]
movs r0, 0x2
str r0, [r1, 0x6C]
_0802D62A:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802D630: .4byte gUnknown_203B2F8
_0802D634: .4byte gUnknown_80D494C
_0802D638: .4byte gUnknown_80D4970
thumb_func_end sub_802D5A4
thumb_func_start sub_802D63C
sub_802D63C:
ldr r0, _0802D684
ldr r0, [r0]
mov r12, r0
movs r3, 0
movs r1, 0xAC
lsls r1, 1
add r1, r12
ldr r0, _0802D688
ldr r0, [r0]
str r0, [r1]
movs r1, 0xAE
lsls r1, 1
add r1, r12
movs r0, 0x3
str r0, [r1]
movs r2, 0x1
movs r1, 0xB0
lsls r1, 1
add r1, r12
ldr r0, _0802D68C
ldr r0, [r0]
str r0, [r1]
movs r1, 0xB2
lsls r1, 1
add r1, r12
movs r0, 0x4
str r0, [r1]
movs r0, 0xB4
lsls r0, 1
add r0, r12
str r3, [r0]
movs r0, 0xB6
lsls r0, 1
add r0, r12
str r2, [r0]
bx lr
.align 2, 0
_0802D684: .4byte gUnknown_203B2F8
_0802D688: .4byte gUnknown_80D4920
_0802D68C: .4byte gUnknown_80D4928
thumb_func_end sub_802D63C
thumb_func_start sub_802D690
sub_802D690:
push {r4,r5,lr}
ldr r2, _0802D728
ldr r0, [r2]
mov r12, r0
movs r4, 0
movs r1, 0xAC
lsls r1, 1
add r1, r12
ldr r0, _0802D72C
ldr r0, [r0]
str r0, [r1]
movs r1, 0xAE
lsls r1, 1
add r1, r12
movs r0, 0x3
str r0, [r1]
movs r3, 0x1
movs r1, 0xB0
lsls r1, 1
add r1, r12
ldr r0, _0802D730
ldr r0, [r0]
str r0, [r1]
movs r1, 0xB2
lsls r1, 1
add r1, r12
movs r0, 0x4
str r0, [r1]
movs r1, 0xB4
lsls r1, 1
add r1, r12
ldr r0, _0802D734
str r0, [r1]
movs r1, 0xB6
lsls r1, 1
add r1, r12
movs r0, 0x6
str r0, [r1]
movs r1, 0xB8
lsls r1, 1
add r1, r12
ldr r0, _0802D738
str r0, [r1]
movs r1, 0xBA
lsls r1, 1
add r1, r12
movs r0, 0x7
str r0, [r1]
movs r5, 0x4
movs r0, 0xBC
lsls r0, 1
add r0, r12
str r4, [r0]
movs r0, 0xBE
lsls r0, 1
add r0, r12
str r3, [r0]
movs r3, 0
mov r0, r12
ldr r4, [r0, 0x74]
movs r1, 0xAE
lsls r1, 1
add r1, r12
_0802D70E:
ldr r0, [r1]
cmp r0, r4
beq _0802D722
adds r1, 0x8
adds r3, 0x1
cmp r3, r5
blt _0802D70E
ldr r1, [r2]
movs r0, 0x4
str r0, [r1, 0x74]
_0802D722:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802D728: .4byte gUnknown_203B2F8
_0802D72C: .4byte gUnknown_80D4920
_0802D730: .4byte gUnknown_80D4928
_0802D734: .4byte gUnknown_80E014C
_0802D738: .4byte gUnknown_80E0158
thumb_func_end sub_802D690
thumb_func_start sub_802D73C
sub_802D73C:
push {r4,r5,lr}
ldr r3, _0802D7C0
ldr r0, [r3]
mov r12, r0
movs r4, 0
movs r1, 0xAC
lsls r1, 1
add r1, r12
ldr r0, _0802D7C4
ldr r0, [r0]
str r0, [r1]
movs r1, 0xAE
lsls r1, 1
add r1, r12
movs r0, 0x3
str r0, [r1]
movs r2, 0x1
movs r1, 0xB0
lsls r1, 1
add r1, r12
ldr r0, _0802D7C8
ldr r0, [r0]
str r0, [r1]
movs r1, 0xB2
lsls r1, 1
add r1, r12
movs r0, 0x4
str r0, [r1]
movs r1, 0xB4
lsls r1, 1
add r1, r12
ldr r0, _0802D7CC
str r0, [r1]
movs r1, 0xB6
lsls r1, 1
add r1, r12
movs r0, 0x6
str r0, [r1]
movs r5, 0x3
movs r0, 0xB8
lsls r0, 1
add r0, r12
str r4, [r0]
movs r0, 0xBA
lsls r0, 1
add r0, r12
str r2, [r0]
movs r2, 0
mov r0, r12
ldr r4, [r0, 0x70]
movs r1, 0xAE
lsls r1, 1
add r1, r12
_0802D7A6:
ldr r0, [r1]
cmp r0, r4
beq _0802D7BA
adds r1, 0x8
adds r2, 0x1
cmp r2, r5
blt _0802D7A6
ldr r1, [r3]
movs r0, 0x4
str r0, [r1, 0x70]
_0802D7BA:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802D7C0: .4byte gUnknown_203B2F8
_0802D7C4: .4byte gUnknown_80D4920
_0802D7C8: .4byte gUnknown_80D4928
_0802D7CC: .4byte gUnknown_80E014C
thumb_func_end sub_802D73C
.align 2,0

View File

@@ -5,7 +5,7 @@ struct unkStruct_802C39C
/* 0xC */ u8 *playerName;
/* 0x10 */ s16 clientSpecies;
/* 0x12 */ s16 targetSpecies;
/* 0x14 */ u8 unk14;
/* 0x14 */ u8 targetItem;
/* 0x15 */ u8 fill15[0x2E - 0x15];
u8 unk2E;
u8 fill2F[0x34 - 0x2F];

View File

@@ -4,6 +4,7 @@
#include "menu.h"
#include "text.h"
#include "constants/mailbox.h"
#include "code_802C39C.h"
struct unkStruct_203B304
{
@@ -12,10 +13,7 @@ struct unkStruct_203B304
u32 fallbackState;
u8 mailboxIndex;
u8 mailIndex;
u32 unkC;
u8 fill10[0x50 - 0x10];
u8 unk50;
u8 fill51[0x64 - 0x51];
struct unkStruct_802C39C unkC;
u32 menuAction1;
u32 menuAction2;
struct MenuStruct unk6C;

View File

@@ -6,10 +6,7 @@ struct unkStruct_203B308
u32 state;
u32 unk4;
u8 jobIndex;
u32 unkC;
u8 fill10[0x50 - 0x10];
u8 unk50;
u8 fill51[0x64 - 0x51];
struct unkStruct_802C39C unkC;
u32 menuAction1;
u32 menuAction2;
struct MenuStruct unk6C;

View File

@@ -12,15 +12,14 @@
struct unkStruct_802F204
{
/* 0x0 */ u8 clientName[POKEMON_NAME_LENGTH]; // client name?
/* 0x0 */ u8 clientName[POKEMON_NAME_LENGTH];
/* 0xA */ u8 name2[POKEMON_NAME_LENGTH]; // target name?
/* 0x14 */ s16 unk14; // poke species (client??)
/* 0x14 */ s16 clientSpecies;
/* 0x16 */ u8 unk16;
/* 0x18 */ s32 moneyReward;
/* 0x1C */ u8 itemRewards[MAX_ITEM_REWARDS];
/* 0x1F */ u8 quantity;
/* 0x20 */ u8 friendAreaReward;
u8 fill21[0x24 - 0x21];
/* 0x24 */ u32 teamRankPtsReward;
};

View File

@@ -25,9 +25,7 @@ struct unkStruct_203B2F0
u32 state;
u8 unk8[0xC - 0x8];
u8 unkC;
u8 fillD[0x10 - 0xD];
u32 unk10;
u8 fill14[0x68 - 0x14];
struct unkStruct_802C39C unk10;
u32 menuAction;
struct MenuStruct unk6C;
struct MenuStruct unkBC;

View File

@@ -44,12 +44,7 @@ struct unkStruct_203B2F8
struct unkSubStruct_203B2F8 *mail;
u8 jobSlotIndex;
u8 fill11[0x14 - 0x11];
u32 unk14;
u8 fill18[0x58 - 0x18];
u8 unk58;
u8 fill59[0x64 - 0x59];
u8 *unk64;
u32 unk68;
struct unkStruct_802C39C unk14;
u32 menuAction1;
u32 menuAction2;
u32 menuAction3;

View File

@@ -136,7 +136,6 @@ SECTIONS {
src/wonder_mail_2_1.o(.text);
asm/wonder_mail_802C860.o(.text);
src/wonder_mail_3.o(.text);
asm/wonder_mail_3.o(.text);
src/wonder_mail_802DF88.o(.text);
src/mailbox.o(.text);
src/pelipper_board.o(.text);

View File

@@ -82,8 +82,8 @@ extern void sub_802BD14(u32, u32, u32);
extern void sub_802BE94(u32);
extern void CreateMailMenu(void);
extern void CreateMailAcceptedStatusBox(u32);
extern void sub_803B35C(struct WonderMail *, u32 *);
extern void sub_802DE84(u32 *);
extern void sub_803B35C(struct WonderMail *, struct unkStruct_802C39C *);
extern void sub_802DE84(struct unkStruct_802C39C *);
extern void InitializeJobListMenu(u32);
extern void sub_802B640(u32, u32, u32);
extern void sub_802B7D0(u32);
@@ -236,8 +236,8 @@ void sub_802E1AC(void)
break;
case MAIL_INFO:
sub_803B35C(GetMailboxSlotInfo(gUnknown_203B304->mailboxIndex), &gUnknown_203B304->unkC);
gUnknown_203B304->unkC = 3;
gUnknown_203B304->unk50 = 0;
gUnknown_203B304->unkC.unk0[0] = 3;
gUnknown_203B304->unkC.unk44 = 0;
sub_802DE84(&gUnknown_203B304->unkC);
break;
case JOB_LIST_MENU:
@@ -265,7 +265,7 @@ void CreateMailboxMenu(void)
s32 loopMax;
loopMax = 0;
MemoryFill16(gUnknown_203B304->unkFC,0,0x10);
MemoryFill16(gUnknown_203B304->unkFC,0,sizeof(gUnknown_203B304->unkFC));
gUnknown_203B304->menuItems[0].text = gMailboxCheckMail;
gUnknown_203B304->menuItems[0].menuAction = 2;
if ((HasNoMailinMailbox())) {

View File

@@ -23,7 +23,7 @@ void MoveMenuCursorUp(u32 *);
void MoveMenuCursorDown(u32 *);
extern void sub_80073B8(u32);
extern s32 sub_8008ED0(const u8 *);
extern void xxx_format_and_draw(u32, u32, u8 *, u32, u32);
extern void xxx_format_and_draw(u32, u32, const u8 *, u32, u32);
extern s32 sub_8013800(u32 *, s32);
extern void sub_80073E0(u32);
extern void sub_8013660(u32 *);
@@ -316,7 +316,7 @@ void sub_8012EBC(struct MenuStruct *param_1)
sub_8006518(textStack);
x = sub_8008ED0(param_1->unk0);
xxx_format_and_draw((((ptr_text2->unk14[2]) * 8 - x) /2) + 8,
0,*(u8 **)param_1, param_1->index, 0);
0,param_1->unk0, param_1->index, 0);
}
colorArray = param_1->menuTextColorArray;
menuItemsPtr = param_1->menuItems;

View File

@@ -75,8 +75,8 @@ extern void sub_802C10C(u32, u32, u32);
extern void sub_802C28C(u32);
extern void DrawPelipperBoardJobMenu(void);
extern void CreatePelipperAcceptedStatusBox(u32);
extern void sub_803B35C(struct WonderMail *, u32 *);
extern void sub_802DE84(u32 *);
extern void sub_803B35C(struct WonderMail *, struct unkStruct_802C39C *);
extern void sub_802DE84(struct unkStruct_802C39C *);
extern void InitializeJobListMenu(u32);
extern void xxx_call_draw_string(s32 x, u32 y, const u8 *, u32 , u32);
@@ -223,8 +223,8 @@ void sub_802EA58(void)
break;
case PELIPPER_JOB_INFO:
sub_803B35C(GetPelipperBoardSlotInfo(gPelipperBoard->jobIndex), &gPelipperBoard->unkC);
gPelipperBoard->unkC = 3;
gPelipperBoard->unk50 = 0;
gPelipperBoard->unkC.unk0[0] = 3;
gPelipperBoard->unkC.unk44 = 0;
sub_802DE84(&gPelipperBoard->unkC);
break;
case PELIPPER_JOB_LIST_MENU:
@@ -243,7 +243,7 @@ void CreatePelipperBoardMenu(void)
s32 loopMax;
loopMax = 0;
MemoryFill16(gPelipperBoard->unkFC,0,0x10);
MemoryFill16(gPelipperBoard->unkFC,0,sizeof(gPelipperBoard->unkFC));
gPelipperBoard->menuItems[0].text = gPelipperBoard_BulletinBoard;
gPelipperBoard->menuItems[0].menuAction = 2;
if ((HasNoPelipperBoardJobs())) {

View File

@@ -1404,7 +1404,7 @@ void UpdateThankYouMailText(void)
case 0x22:
monName = GetMonSpecies(MONSTER_PELIPPER);
strcpy(gUnknown_203B2C4->unk53C.clientName,monName); // 0x53C
gUnknown_203B2C4->unk53C.unk14 = MONSTER_PELIPPER; // 0x550
gUnknown_203B2C4->unk53C.clientSpecies = MONSTER_PELIPPER; // 0x550
gUnknown_203B2C4->unk53C.unk16 = 2; // 0x552
gUnknown_203B2C4->unk53C.moneyReward = 0; // 0x554
mailIndex = GetMailIndex(6,gUnknown_203B2C4->unk430);

View File

@@ -176,7 +176,7 @@ void sub_802B3E0(void)
case 1:
monName = GetMonSpecies(MONSTER_PELIPPER);
strcpy(gUnknown_203B2C8->unk114.clientName, monName);
gUnknown_203B2C8->unk114.unk14 = MONSTER_PELIPPER;
gUnknown_203B2C8->unk114.clientSpecies = MONSTER_PELIPPER;
gUnknown_203B2C8->unk114.unk16 = 2;
gUnknown_203B2C8->unk114.moneyReward = 0;
sub_8097790();

View File

@@ -102,7 +102,7 @@ extern void sub_8013C68(u32 *);
extern void sub_80073E0(u32);
extern struct WonderMail* GetJobSlotInfo(u8);
extern s32 sub_8013800(void *, u32);
extern void sub_803B35C(void *, u32 *);
extern void sub_803B35C(struct WonderMail *, struct unkStruct_802C39C *);
extern void xxx_call_draw_string(u32, u32, const u8 *, u32, u32);
extern void CreateRescueTitle(struct unkStruct_802C39C *);
@@ -123,7 +123,7 @@ extern void sub_802CD38(void);
extern void sub_802CDB8(void);
extern void sub_802C928(void);
extern void sub_802C9D8(void);
extern void sub_802DE84(u32 *);
extern void sub_802DE84(struct unkStruct_802C39C *);
extern void sub_802CBAC(void);
s32 CountAcceptedJobs(void);
@@ -328,7 +328,7 @@ void DrawJobListMenu(void)
mail = GetJobSlotInfo(gUnknown_203B2E8->pelipperBoardSlots[gUnknown_203B2E8->unk26 * gUnknown_203B2E8->unk24 + index]);
local.unk0[0] = gUnknown_203B2E8->unk3C;
local.y = sub_8013800(&gUnknown_203B2E8->unk8,index);
sub_803B35C(mail,local.unk0);
sub_803B35C(mail,&local);
CreateRescueTitle(&local);
}
sub_80073E0(gUnknown_203B2E8->unk3C);
@@ -463,7 +463,7 @@ void sub_802C9D8(void)
break;
case 4:
sub_803B35C(GetJobSlotInfo(gUnknown_203B2F0->unkC), &gUnknown_203B2F0->unk10);
gUnknown_203B2F0->unk10 = 3;
gUnknown_203B2F0->unk10.unk0[0] = 3;
sub_802DE84(&gUnknown_203B2F0->unk10);
break;
case 5:

View File

@@ -9,11 +9,10 @@
#include "menu.h"
#include "wonder_mail.h"
#include "wonder_mail_3.h"
#include "code_802C39C.h"
#include "menu_input.h"
#include "code_80958E8.h"
#include "wonder_mail_2_1.h"
const struct UnkTextStruct2 gUnknown_80DFDD4 =
{
0x00, 0x00, 0x00, 0x00,
@@ -135,8 +134,8 @@ extern u8 *sub_8096DD8(void);
extern u8 sub_8096C08(u8 *);
extern void DrawJobListMenu(void);
extern struct WonderMail* GetJobSlotInfo(u8);
extern void sub_803B35C(void *, u32*);
extern void sub_802DE84(u32 *);
extern void sub_803B35C(struct WonderMail *, struct unkStruct_802C39C*);
extern void sub_802DE84(struct unkStruct_802C39C *);
extern void sub_802D73C(void);
extern void sub_802C640(u32);
extern void sub_802C4C8(u32, u32, u32);
@@ -183,6 +182,8 @@ extern struct unkStruct_203B2F0 *gUnknown_203B2F0;
extern u8 *gUnknown_80D4920[];
extern u8 *gUnknown_80D4928[];
extern u8 *gUnknown_80D494C[];
extern u8 *gUnknown_80D4970[];
void sub_802CBAC(void)
{
@@ -464,7 +465,7 @@ void sub_802CFD0(void)
iVar1 = sub_803B344(gUnknown_203B2F4->unk1E * gUnknown_203B2F4->unk1C + r5);
local.unk0[0] = gUnknown_203B2F4->unk34;
local.y = sub_8013800(gUnknown_203B2F4, r5);
sub_803B35C(iVar1,local.unk0);
sub_803B35C(&iVar1->mail,&local);
local.unk43 = 1;
local.unk4C = iVar1->unk14;
CreateRescueTitle(&local);
@@ -682,15 +683,316 @@ void sub_802D2A8(void)
break;
case 0xf:
sub_803B35C(GetJobSlotInfo(gUnknown_203B2F8->jobSlotIndex),&gUnknown_203B2F8->unk14);
gUnknown_203B2F8->unk14 = 3;
gUnknown_203B2F8->unk14.unk0[0] = 3;
sub_802DE84(&gUnknown_203B2F8->unk14);
break;
case 0x10:
sub_803B35C(gUnknown_203B2F8->mail,&gUnknown_203B2F8->unk14);
gUnknown_203B2F8->unk14 = 3;
gUnknown_203B2F8->unk58 = 0;
gUnknown_203B2F8->unk64 = gUnknown_203B2F8->mail->unk18;
sub_803B35C(&gUnknown_203B2F8->mail->wonderMail,&gUnknown_203B2F8->unk14);
gUnknown_203B2F8->unk14.unk0[0] = 3;
gUnknown_203B2F8->unk14.unk44 = 0;
gUnknown_203B2F8->unk14.unk50[0] = gUnknown_203B2F8->mail->unk18;
sub_802DE84(&gUnknown_203B2F8->unk14);
break;
}
}
void sub_802D5A4(void) {
s32 loopMax;
s32 index;
loopMax = 0;
MemoryFill16(gUnknown_203B2F8->unk198, 0, sizeof(gUnknown_203B2F8->unk198));
gUnknown_203B2F8->unk118[loopMax].text = *gUnknown_80D494C;
gUnknown_203B2F8->unk118[loopMax].menuAction = 2;
loopMax += 1;
gUnknown_203B2F8->unk118[loopMax].text = *gUnknown_80D4970;
gUnknown_203B2F8->unk118[loopMax].menuAction = 5;
loopMax += 1;
gUnknown_203B2F8->unk118[loopMax].text = NULL;
gUnknown_203B2F8->unk118[loopMax].menuAction = 1;
for(index = 0; index < loopMax; index++)
{
if (gUnknown_203B2F8->unk198[index] == 0) {
if(gUnknown_203B2F8->unk118[index].menuAction == gUnknown_203B2F8->menuAction1)
return;
}
}
gUnknown_203B2F8->menuAction1 = 2;
}
void sub_802D63C(void) {
s32 loopMax = 0;
gUnknown_203B2F8->unk158[loopMax].text = *gUnknown_80D4920;
gUnknown_203B2F8->unk158[loopMax].menuAction = 3;
loopMax += 1;
gUnknown_203B2F8->unk158[loopMax].text = *gUnknown_80D4928;
gUnknown_203B2F8->unk158[loopMax].menuAction = 4;
loopMax += 1;
gUnknown_203B2F8->unk158[loopMax].text = NULL;
gUnknown_203B2F8->unk158[loopMax].menuAction = 1;
}
void sub_802D690(void) {
s32 loopMax;
s32 index;
loopMax = 0;
gUnknown_203B2F8->unk158[loopMax].text = *gUnknown_80D4920;
gUnknown_203B2F8->unk158[loopMax].menuAction = 3;
loopMax += 1;
gUnknown_203B2F8->unk158[loopMax].text = *gUnknown_80D4928;
gUnknown_203B2F8->unk158[loopMax].menuAction = 4;
loopMax += 1;
gUnknown_203B2F8->unk158[loopMax].text = gUnknown_80E014C;
gUnknown_203B2F8->unk158[loopMax].menuAction = 6;
loopMax += 1;
gUnknown_203B2F8->unk158[loopMax].text = gUnknown_80E0158;
gUnknown_203B2F8->unk158[loopMax].menuAction = 7;
loopMax += 1;
gUnknown_203B2F8->unk158[loopMax].text = NULL;
gUnknown_203B2F8->unk158[loopMax].menuAction = 1;
for(index = 0; index < loopMax; index++)
{
if(gUnknown_203B2F8->unk158[index].menuAction == gUnknown_203B2F8->menuAction3)
return;
}
gUnknown_203B2F8->menuAction3 = 4;
}
void sub_802D73C(void) {
s32 loopMax;
s32 index;
loopMax = 0;
gUnknown_203B2F8->unk158[loopMax].text = *gUnknown_80D4920;
gUnknown_203B2F8->unk158[loopMax].menuAction = 3;
loopMax += 1;
gUnknown_203B2F8->unk158[loopMax].text = *gUnknown_80D4928;
gUnknown_203B2F8->unk158[loopMax].menuAction = 4;
loopMax += 1;
gUnknown_203B2F8->unk158[loopMax].text = gUnknown_80E014C;
gUnknown_203B2F8->unk158[loopMax].menuAction = 6;
loopMax += 1;
gUnknown_203B2F8->unk158[loopMax].text = NULL;
gUnknown_203B2F8->unk158[loopMax].menuAction = 1;
for(index = 0; index < loopMax; index++)
{
if(gUnknown_203B2F8->unk158[index].menuAction == gUnknown_203B2F8->menuAction2)
return;
}
gUnknown_203B2F8->menuAction2 = 4;
}
extern s32 sub_80144A4(s32 *);
void sub_802D7D0(void)
{
s32 menuAction;
if (sub_80144A4(&menuAction) == 0) {
if (menuAction != 1) {
gUnknown_203B2F8->menuAction2 = menuAction;
}
switch(menuAction) {
// Yes
case 3:
sub_802D1A0(WONDER_MAIL_EXIT);
break;
// New Mail
case 6:
gUnknown_203B2F8->fallbackState = 1;
sub_802D1A0(0x10);
break;
// No
case 4:
case 2:
default:
sub_802D1A0(INITIAL_WONDER_MAIL_CHECK);
break;
}
}
}
void sub_802D82C(void)
{
s32 menuAction;
if (sub_80144A4(&menuAction) == 0) {
if (menuAction != 1) {
gUnknown_203B2F8->menuAction3 = menuAction;
}
switch(menuAction) {
// Yes
case 3:
ResetJobSlot(gUnknown_203B2F8->jobSlotIndex);
sub_8096C80();
sub_802D1A0(RECEIVE_WONDER_MAIL);
break;
// New Mail
case 6:
gUnknown_203B2F8->fallbackState = 9;
sub_802D1A0(0x10);
break;
// Old Mail
case 7:
gUnknown_203B2F8->fallbackState = 9;
sub_802D1A0(0xf);
break;
// No
default:
case 1:
case 2:
case 4:
sub_802D1A0(1);
break;
}
}
}
void sub_802D8CC(void)
{
switch(sub_802C598(1)) {
case 0:
case 1:
break;
case 3:
gUnknown_203B2F8->jobSlotIndex = GetPelipperBoardSlotIndex();
sub_802D1A0(0xd);
break;
case 4:
gUnknown_203B2F8->jobSlotIndex = GetPelipperBoardSlotIndex();
gUnknown_203B2F8->fallbackState = DRAW_JOB_LIST_1;
sub_802D1A0(0xf);
break;
case 2:
sub_802C688();
sub_802D1A0(1);
break;
}
}
void sub_802D940(void)
{
struct WonderMail *mail;
s32 menuAction;
menuAction = 0;
sub_802C598(0);
if ((sub_8012FD8(&gUnknown_203B2F8->unk78) == 0) && (sub_8013114(&gUnknown_203B2F8->unk78,&menuAction), menuAction != 1)) {
gUnknown_203B2F8->menuAction1 = menuAction;
}
switch(menuAction)
{
// Delete
case 2:
if ((gUnknown_203B2F8->unk9) && (((mail = &gUnknown_203B490->jobSlots[gUnknown_203B2F8->jobSlotIndex]), mail->mailType > 5) && (gUnknown_203B2F8->dungeonID == mail->dungeon.id)))
{
sub_802D1A0(7);
}
else {
sub_802D1A0(0xE);
}
break;
// Info
case 5:
gUnknown_203B2F8->fallbackState = DRAW_JOB_LIST_1;
sub_802D1A0(0xf);
break;
case 1:
sub_802D1A0(DRAW_JOB_LIST_1);
break;
}
}
void sub_802D9F0(void)
{
s32 menuAction;
menuAction = 0;
sub_802C598(0);
sub_8012FD8(&gUnknown_203B2F8->unk78);
if (sub_8012FD8(&gUnknown_203B2F8->unkC8) == 0) {
sub_8013114(&gUnknown_203B2F8->unkC8,&menuAction);
}
switch(menuAction)
{
// No
case 1:
case 4:
sub_802D1A0(DRAW_JOB_LIST_1);
break;
// Yes
case 3:
sub_802C688();
ResetJobSlot(gUnknown_203B2F8->jobSlotIndex);
sub_8096C80();
sub_802D1A0(RECEIVE_WONDER_MAIL);
break;
}
}
void sub_802DA60(void)
{
switch(sub_802DEE0())
{
case 2:
case 3:
sub_802DF24();
sub_802D1A0(gUnknown_203B2F8->fallbackState);
break;
case 0:
case 1:
break;
}
}
void AdvancetoFallbackWonderMailRescueState(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_802D1A0(gUnknown_203B2F8->fallbackState);
}
}
bool8 sub_802DAA8(void)
{
struct WonderMail *mail;
mail = GetJobSlotInfo(gUnknown_203B2F8->jobSlotIndex);
if (!gUnknown_203B2F8->unk9) {
return TRUE;
}
else {
if ( (mail->mailType != WONDER_MAIL_TYPE_THANK_YOU) && (gUnknown_203B2F8->dungeonID == mail->dungeon.id)) return FALSE;
return TRUE;
}
}
bool8 sub_802DADC(void)
{
u8 mailType;
struct WonderMail *mail;
s32 counter;
if (!gUnknown_203B2F8->unk9) {
_0802DAE8:
return TRUE;
}
else {
for( mail = &gUnknown_203B490->jobSlots[0], counter = 0; counter < MAX_ACCEPTED_JOBS; mail++, counter++)
{
mailType = mail->mailType;
if (((mailType == 0) || (mailType == WONDER_MAIL_TYPE_THANK_YOU)) ||
((WONDER_MAIL_TYPE_THANK_YOU < mailType && (gUnknown_203B2F8->dungeonID != mail->dungeon.id)))) goto _0802DAE8;
}
return FALSE;
}
}

View File

@@ -470,7 +470,7 @@ u32 sub_802F204(struct unkStruct_802F204 *r0, bool8 displayClientSprite)
strcpy(gUnknown_202E5D8, preload->unk10->clientName);
PrintPokeNameToBuffer(gAvailablePokemonNames, GetPlayerPokemonStruct());
gUnknown_203B310->faceFile = GetDialogueSpriteDataPtr(gUnknown_203B310->unk10->unk14);
gUnknown_203B310->faceFile = GetDialogueSpriteDataPtr(gUnknown_203B310->unk10->clientSpecies);
gUnknown_203B310->faceData = NULL;
gUnknown_203B310->unk20 = 0;

View File

@@ -294,9 +294,9 @@ void sub_803092C(void)
local.dungeon = &mail->dungeon;
local.playerName = mail->playerName;
local.clientSpecies = (mail->clientSpecies);
local.targetSpecies = (mail->clientSpecies);
local.unk14 = 0;
local.clientSpecies = mail->clientSpecies;
local.targetSpecies = mail->clientSpecies;
local.targetItem = ITEM_NOTHING;
local.unk2E = 5;
switch(mail->mailType)

View File

@@ -127,7 +127,7 @@ void sub_8030E48(void)
stack.playerName = mail->playerName;
stack.clientSpecies = mail->clientSpecies;
stack.targetSpecies = mail->clientSpecies;
stack.unk14 = 0;
stack.targetItem = ITEM_NOTHING;
if (mail->unk20.id == ITEM_NOTHING) {
stack.unk2E = 5;
}

View File

@@ -1,16 +1,9 @@
#include "global.h"
#include "constants/wonder_mail.h"
#include "exclusive_pokemon.h"
#include "input.h"
#include "item.h"
#include "memory.h"
#include "menu.h"
#include "text.h"
#include "wonder_mail.h"
#include "wonder_mail_3.h"
#include "code_80958E8.h"
#include "menu_input.h"
#include "code_802C39C.h"
#include "wonder_mail.h"
struct unkStruct_203B2FC
{
@@ -141,215 +134,6 @@ void sub_802D1A0(u32);
u32 sub_802DEE0(void);
void sub_802DF24(void);
void sub_802D7D0(void)
{
s32 menuAction;
if (sub_80144A4(&menuAction) == 0) {
if (menuAction != 1) {
gUnknown_203B2F8->menuAction2 = menuAction;
}
switch(menuAction) {
// Yes
case 3:
sub_802D1A0(WONDER_MAIL_EXIT);
break;
// New Mail
case 6:
gUnknown_203B2F8->fallbackState = 1;
sub_802D1A0(0x10);
break;
// No
case 4:
case 2:
default:
sub_802D1A0(INITIAL_WONDER_MAIL_CHECK);
break;
}
}
}
void sub_802D82C(void)
{
s32 menuAction;
if (sub_80144A4(&menuAction) == 0) {
if (menuAction != 1) {
gUnknown_203B2F8->menuAction3 = menuAction;
}
switch(menuAction) {
// Yes
case 3:
ResetJobSlot(gUnknown_203B2F8->jobSlotIndex);
sub_8096C80();
sub_802D1A0(RECEIVE_WONDER_MAIL);
break;
// New Mail
case 6:
gUnknown_203B2F8->fallbackState = 9;
sub_802D1A0(0x10);
break;
// Old Mail
case 7:
gUnknown_203B2F8->fallbackState = 9;
sub_802D1A0(0xf);
break;
// No
default:
case 1:
case 2:
case 4:
sub_802D1A0(1);
break;
}
}
}
void sub_802D8CC(void)
{
switch(sub_802C598(1)) {
case 0:
case 1:
break;
case 3:
gUnknown_203B2F8->jobSlotIndex = GetPelipperBoardSlotIndex();
sub_802D1A0(0xd);
break;
case 4:
gUnknown_203B2F8->jobSlotIndex = GetPelipperBoardSlotIndex();
gUnknown_203B2F8->fallbackState = DRAW_JOB_LIST_1;
sub_802D1A0(0xf);
break;
case 2:
sub_802C688();
sub_802D1A0(1);
break;
}
}
void sub_802D940(void)
{
struct WonderMail *mail;
s32 menuAction;
menuAction = 0;
sub_802C598(0);
if ((sub_8012FD8(&gUnknown_203B2F8->unk78) == 0) && (sub_8013114(&gUnknown_203B2F8->unk78,&menuAction), menuAction != 1)) {
gUnknown_203B2F8->menuAction1 = menuAction;
}
switch(menuAction)
{
// Delete
case 2:
if ((gUnknown_203B2F8->unk9) && (((mail = &gUnknown_203B490->jobSlots[gUnknown_203B2F8->jobSlotIndex]), mail->mailType > 5) && (gUnknown_203B2F8->dungeonID == mail->dungeon.id)))
{
sub_802D1A0(7);
}
else {
sub_802D1A0(0xE);
}
break;
// Info
case 5:
gUnknown_203B2F8->fallbackState = DRAW_JOB_LIST_1;
sub_802D1A0(0xf);
break;
case 1:
sub_802D1A0(DRAW_JOB_LIST_1);
break;
}
}
void sub_802D9F0(void)
{
s32 menuAction;
menuAction = 0;
sub_802C598(0);
sub_8012FD8(&gUnknown_203B2F8->unk78);
if (sub_8012FD8(&gUnknown_203B2F8->unkC8) == 0) {
sub_8013114(&gUnknown_203B2F8->unkC8,&menuAction);
}
switch(menuAction)
{
// No
case 1:
case 4:
sub_802D1A0(DRAW_JOB_LIST_1);
break;
// Yes
case 3:
sub_802C688();
ResetJobSlot(gUnknown_203B2F8->jobSlotIndex);
sub_8096C80();
sub_802D1A0(RECEIVE_WONDER_MAIL);
break;
}
}
void sub_802DA60(void)
{
switch(sub_802DEE0())
{
case 2:
case 3:
sub_802DF24();
sub_802D1A0(gUnknown_203B2F8->fallbackState);
break;
case 0:
case 1:
break;
}
}
void AdvancetoFallbackWonderMailRescueState(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_802D1A0(gUnknown_203B2F8->fallbackState);
}
}
bool8 sub_802DAA8(void)
{
struct WonderMail *mail;
mail = GetJobSlotInfo(gUnknown_203B2F8->jobSlotIndex);
if (!gUnknown_203B2F8->unk9) {
return TRUE;
}
else {
if ( (mail->mailType != WONDER_MAIL_TYPE_THANK_YOU) && (gUnknown_203B2F8->dungeonID == mail->dungeon.id)) return FALSE;
return TRUE;
}
}
bool8 sub_802DADC(void)
{
u8 mailType;
struct WonderMail *mail;
s32 counter;
if (!gUnknown_203B2F8->unk9) {
_0802DAE8:
return TRUE;
}
else {
for( mail = &gUnknown_203B490->jobSlots[0], counter = 0; counter < 8; mail++, counter++)
{
mailType = mail->mailType;
if (((mailType == 0) || (mailType == WONDER_MAIL_TYPE_THANK_YOU)) ||
((WONDER_MAIL_TYPE_THANK_YOU < mailType && (gUnknown_203B2F8->dungeonID != mail->dungeon.id)))) goto _0802DAE8;
}
return FALSE;
}
}
// TODO: merge above with wonder_mail_3.c
bool8 sub_802DB28(u8 jobSlotIndex, u8 dungeon)
{
char local_18 [8];