diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/code_8048480.c | 4 | ||||
-rw-r--r-- | src/code_80521D0_1.c | 13 | ||||
-rw-r--r-- | src/credits.c | 107 | ||||
-rw-r--r-- | src/main_menu.c | 8 | ||||
-rw-r--r-- | src/music_pre.c | 195 | ||||
-rw-r--r-- | src/personality_test_pre.c | 16 | ||||
-rw-r--r-- | src/wonder_mail.c | 579 | ||||
-rw-r--r-- | src/wonder_mail_1.c | 30 | ||||
-rw-r--r-- | src/wonder_mail_mid.c | 399 |
9 files changed, 1121 insertions, 230 deletions
diff --git a/src/code_8048480.c b/src/code_8048480.c index 7860fa8..880bf05 100644 --- a/src/code_8048480.c +++ b/src/code_8048480.c @@ -7,7 +7,7 @@ struct unkDungeon_8041D5C }; extern u32 gUnknown_80F89F4; -extern u32 gUnknown_202DF98; +extern u32 gAvailablePokemonNames; extern u32 gUnknown_80FB580; extern s16 gUnknown_80F4FB6; extern s16 gUnknown_80F4FB8; @@ -162,6 +162,6 @@ void sub_80484E8(u32 r0, struct unkDungeon_8041D5C *r1) sub_807A290(r0, r1); return; } - sub_8045B94(&gUnknown_202DF98, r1, 0); + sub_8045B94(&gAvailablePokemonNames, r1, 0); sub_80522F4(r0, r1, gUnknown_80FB580); } diff --git a/src/code_80521D0_1.c b/src/code_80521D0_1.c index dd6dc7c..8be3be6 100644 --- a/src/code_80521D0_1.c +++ b/src/code_80521D0_1.c @@ -1,8 +1,9 @@ #include "global.h" +#include "constants/species.h" extern s16 *sub_8085480(void); extern u32 sub_8085680(u32); -extern u32 gUnknown_202E038; +extern char gUnknown_202E038[0x50]; extern u8* gUnknown_203B418; extern u32 gUnknown_8106778; @@ -15,7 +16,7 @@ extern u32 gUnknown_8106918; extern u32 gUnknown_8106934; extern void sub_8086A3C(void); -extern void sub_808D8BC(u32 *r0, u32 r1); +extern void CopySpeciesNametoBuffer(char *r0, u32 r1); extern void sub_8083E88(u32); extern void sub_80854D4(void); extern void sub_80855E4(void *); @@ -51,7 +52,7 @@ void sub_808C9C4(void) sub_80855E4(sub_8086A3C); sub_8085918(temp_2, 0); sub_8085860(array[2], array[3] - 3); - sub_808D8BC(&gUnknown_202E038, 0x14d); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_MEDICHAM); } void sub_808CA1C(void) @@ -112,7 +113,7 @@ void sub_808CB5C(void) sub_8085930(0x4); sub_8068FE0(temp_2, 0x87 << 2, 0); sub_8085860(array[2], array[3]); - sub_808D8BC(&gUnknown_202E038, 0x14d); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_MEDICHAM); } void nullsub_101(void) @@ -132,7 +133,7 @@ void sub_808CBB0(void) sub_80855E4(sub_8086A3C); sub_8085918(temp_2, 0); sub_8085860(array[2], array[3] - 3); - sub_808D8BC(&gUnknown_202E038, 0x82 << 1); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_SMEARGLE); } void sub_808CC04(void) @@ -195,6 +196,6 @@ void sub_808CD44(void) sub_80855E4(sub_8086A3C); sub_8068FE0(temp_2, 0x87 << 2, 0); sub_8085860(array[2], array[3] - 3); - sub_808D8BC(&gUnknown_202E038, 0x82 << 1); + CopySpeciesNametoBuffer(gUnknown_202E038, SPECIES_SMEARGLE); } diff --git a/src/credits.c b/src/credits.c index 2f499fb..2329bd4 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1,33 +1,108 @@ #include "global.h" +#include "input.h" -extern s32 sub_80144A4(s32 *); -extern void sub_80338C4(u32); -extern void sub_80338C4(u32); +extern struct Inputs gRealInputs; -void sub_8035404(u32 param_1) +struct unkStruct_203B344 { - s32 iVar1; + u32 unk0; // state variable + u32 unk4; // timer?? +}; - if(sub_80144A4(&iVar1) == 0){ - sub_80338C4(param_1); - } -} +struct unkStruct_203B340 +{ + // size: 0x84 + u32 unk0; +}; + +extern void MemoryFree(void *); +extern void* MemoryAlloc(u32, u32); +extern void sub_80015C0(u32, u32); -void sub_8035424(void) +extern u16 gUnknown_80E5990[]; +extern struct unkStruct_203B344 *gUnknown_203B344; +extern struct unkStruct_203B340 *gUnknown_203B340; +extern s32 sub_8001658(u32, u32); + +void sub_803565C(void) { - sub_80338C4(6); + if(gUnknown_203B340 != NULL) + { + MemoryFree(gUnknown_203B340); + gUnknown_203B340 = NULL; + } } -void sub_8035430(void) + +u32 sub_8035678(void) { - sub_80338C4(0x4F); + gUnknown_203B344 = MemoryAlloc(sizeof(struct unkStruct_203B344), 8); + gUnknown_203B344->unk0 = 0; + gUnknown_203B344->unk4 = 0; + sub_80015C0(0, 0x39); + return 1; } -void nullsub_50(void) +u32 sub_80356A0(void) { + u16 uVar1; + u16 held_input; + + held_input = gRealInputs.held; + uVar1 = gUnknown_80E5990[gUnknown_203B344->unk4]; + + switch(gUnknown_203B344->unk0) { + case 0: + gUnknown_203B344->unk0 = 3; + break; + case 1: + if (uVar1 == 0) + gUnknown_203B344->unk0 = 4; + else { + if (held_input == uVar1) + gUnknown_203B344->unk0 = 2; + else { + // NOTE: couldn't match with OR'd condition so split up to match + if ((uVar1 & held_input) != held_input) + gUnknown_203B344->unk0 = 3; + else + { + if (gUnknown_203B344->unk4 == 0) + gUnknown_203B344->unk0 = 3; + } + } + } + break; + case 2: + if (held_input == 0) { + gUnknown_203B344->unk0 = 1; + gUnknown_203B344->unk4++; + } + else { + if ((uVar1 & held_input) != held_input) + gUnknown_203B344->unk0 = 3; + } + break; + case 3: + return 2; + case 4: + return 3; // sub_809C478 clears the flash data when this is returned + } + + if (sub_8001658(0,0x39) != 0) { + gUnknown_203B344->unk0 = 3; + return 2; + } + else { + return 0; + } } -void nullsub_51(void) +void sub_8035758(void) { + if(gUnknown_203B344 != NULL) + { + MemoryFree(gUnknown_203B344); + gUnknown_203B344 = NULL; + } } - diff --git a/src/main_menu.c b/src/main_menu.c index 0302550..d0a8f36 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -39,7 +39,7 @@ extern void sub_803225C(void); extern void sub_803A1D8(void); extern void sub_80398AC(void); extern void sub_80382A0(void); -extern void sub_8039254(u32); +extern void CreateLoadScreen(u32); extern void sub_8035DB4(u32); extern void sub_8038900(u32); extern void sub_803850C(u32); @@ -57,7 +57,7 @@ extern s32 sub_8038630(void); extern s32 sub_803A2A4(void); extern void CleanMainMenu(void); -extern void sub_80393F0(void); +extern void CleanLoadScreen(void); extern void sub_8036B04(void); extern void sub_80370D4(void); extern void sub_80327E4(void); @@ -109,7 +109,7 @@ void SetUpMenu(void) case 7: case 8: case 9: - sub_8039254(gUnknown_203B348->unk4); + CreateLoadScreen(gUnknown_203B348->unk4); break; case 0xc: sub_8036400(); @@ -248,7 +248,7 @@ void CleanUpMenu(void) case 7: case 8: case 9: - sub_80393F0(); + CleanLoadScreen(); break; case 0xc: sub_8036B04(); diff --git a/src/music_pre.c b/src/music_pre.c index edb00cd..53c5688 100644 --- a/src/music_pre.c +++ b/src/music_pre.c @@ -19,6 +19,15 @@ extern void sub_800C298(u16 r0); typedef void (*IntrCallback)(void); extern IntrCallback gUnknown_202D5F0[]; +struct unkStruct_202D648 +{ + s16 unk0; + s16 unk2; // Vcount?? + IntrCallback unk4; // some function... just making it IntrCallback for now +}; +extern struct unkStruct_202D648 gUnknown_202D648[8]; +extern struct unkStruct_202D648 gUnknown_202D608[8]; + extern struct MusicPlayerInfo gUnknown_20008F0; // BGM?? extern u32 gUnknown_203B0A0; extern u32 gUnknown_203B0A4; @@ -34,6 +43,13 @@ extern u8 gUnknown_203B09B; extern u32 gUnknown_203B09C; extern u8 gUnknown_203B09A; +extern u32 gUnknown_203B0A0; +extern s16 gUnknown_203B0AA; +extern s16 gUnknown_203B0AC; +extern s16 gUnknown_203B0AE; +extern s16 gUnknown_203B0B0; +extern s16 gUnknown_203B0B2; + struct unkStruct_3000FD8 { u16 unk0; @@ -51,9 +67,188 @@ extern struct BGControlStruct gBG1Control; extern struct BGControlStruct gBG2Control; extern struct BGControlStruct gBG3Control; +extern void SoundVSync(); +extern void BlinkSavingIcon(); + void sub_800BF80(void); void xxx_update_bg_sound_input(void); +void UnusedIntrFunc(void) +{ +} + +void VBlankIntr(void) +{ + int index; + + gUnknown_203B0A0++; + SoundVSync(); + BlinkSavingIcon(); + if (gUnknown_202D5F0[1] != NULL) { + gUnknown_202D5F0[1](); + } + index = 0; + while (index < gUnknown_203B0AA) { + gUnknown_202D648[index] = gUnknown_202D608[index]; + index++; + } + gUnknown_203B0AC = gUnknown_203B0AA; + gUnknown_203B0AE = -1; + gUnknown_203B0B0 = -1; + gUnknown_203B0B2 = -1; + REG_DISPSTAT = DISPSTAT_VBLANK_INTR | DISPSTAT_VCOUNT_INTR; + if (gUnknown_203B099 == 0) { + UpdateSound(); + } + SetInterruptFlag(INTR_FLAG_VBLANK); +} + +// Registers are a little off.. seems to be around the while loop +#ifdef NONMATCHING +void VCountIntr(void) +{ + s32 sVar1; + s32 sVar2; + + // Hack to get the lsr/asr shifts + sVar2 = REG_VCOUNT << 16; + sVar2 = sVar2 >> 16; + + if (gUnknown_203B0AE < 0) { + if (gUnknown_202D5F0[2] != 0) { + gUnknown_202D5F0[2](); + } + gUnknown_203B0AE = 0; + } + if (gUnknown_203B0AE < gUnknown_203B0AC) { + sVar1 = gUnknown_202D648[gUnknown_203B0AE].unk2; + while (sVar1 <= sVar2) { + if ( gUnknown_202D648[gUnknown_203B0AE].unk4 != NULL) { + gUnknown_202D648[gUnknown_203B0AE].unk4(); + } + gUnknown_203B0AE++; + if (gUnknown_203B0AC >= gUnknown_203B0AE) break; + sVar1 = gUnknown_202D648[gUnknown_203B0AE].unk2; + } + if (gUnknown_203B0AE < gUnknown_203B0AC) { + REG_DISPSTAT = gUnknown_202D648[gUnknown_203B0AE].unk2 << 8 | DISPSTAT_VBLANK_INTR | DISPSTAT_VCOUNT_INTR; + } + } + SetInterruptFlag(INTR_FLAG_VCOUNT); +} +#else +NAKED +void VCountIntr(void) +{ + asm_unified( + "\tpush {r4-r7,lr}\n" + "\tmov r7, r8\n" + "\tpush {r7}\n" + "\tldr r0, _0800BA44\n" + "\tldrh r0, [r0]\n" + "\tlsls r0, 16\n" + "\tasrs r6, r0, 16\n" + "\tldr r0, _0800BA48\n" + "\tmovs r2, 0\n" + "\tldrsh r1, [r0, r2]\n" + "\tadds r7, r0, 0\n" + "\tcmp r1, 0\n" + "\tbge _0800B9B2\n" + "\tldr r0, _0800BA4C\n" + "\tldr r0, [r0, 0x8]\n" + "\tcmp r0, 0\n" + "\tbeq _0800B9AE\n" + "\tbl _call_via_r0\n" +"_0800B9AE:\n" + "\tmovs r0, 0\n" + "\tstrh r0, [r7]\n" +"_0800B9B2:\n" + "\tldr r0, _0800BA50\n" + "\tmovs r3, 0\n" + "\tldrsh r2, [r7, r3]\n" + "\tmovs r3, 0\n" + "\tldrsh r1, [r0, r3]\n" + "\tmov r8, r0\n" + "\tcmp r2, r1\n" + "\tbge _0800BA34\n" + "\tldr r1, _0800BA54\n" + "\tadds r0, r2, 0\n" + "\tlsls r0, 3\n" + "\tadds r0, r1\n" + "\tmovs r3, 0x2\n" + "\tldrsh r0, [r0, r3]\n" + "\tcmp r0, r6\n" + "\tbgt _0800BA10\n" + "\tadds r5, r1, 0\n" + "\tadds r4, r7, 0\n" +"_0800B9D6:\n" + "\tmovs r1, 0\n" + "\tldrsh r0, [r4, r1]\n" + "\tlsls r0, 3\n" + "\tadds r1, r5, 0x4\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbeq _0800B9EA\n" + "\tbl _call_via_r0\n" +"_0800B9EA:\n" + "\tldrh r0, [r4]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r4]\n" + "\tldr r1, _0800BA50\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tmovs r2, 0\n" + "\tldrsh r1, [r1, r2]\n" + "\tcmp r0, r1\n" + "\tbge _0800BA34\n" + "\tmovs r3, 0\n" + "\tldrsh r0, [r4, r3]\n" + "\tlsls r0, 3\n" + "\tadds r0, r5\n" + "\tmovs r1, 0x2\n" + "\tldrsh r0, [r0, r1]\n" + "\tldr r7, _0800BA48\n" + "\tcmp r0, r6\n" + "\tble _0800B9D6\n" +"_0800BA10:\n" + "\tmovs r2, 0\n" + "\tldrsh r1, [r7, r2]\n" + "\tmov r3, r8\n" + "\tmovs r2, 0\n" + "\tldrsh r0, [r3, r2]\n" + "\tcmp r1, r0\n" + "\tbge _0800BA34\n" + "\tldr r2, _0800BA58\n" + "\tldr r1, _0800BA54\n" + "\tmovs r3, 0\n" + "\tldrsh r0, [r7, r3]\n" + "\tlsls r0, 3\n" + "\tadds r0, r1\n" + "\tldrh r0, [r0, 0x2]\n" + "\tlsls r0, 8\n" + "\tmovs r1, 0x28\n" + "\torrs r0, r1\n" + "\tstrh r0, [r2]\n" +"_0800BA34:\n" + "\tmovs r0, 0x4\n" + "\tbl SetInterruptFlag\n" + "\tpop {r3}\n" + "\tmov r8, r3\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" +"_0800BA44: .4byte 0x04000006\n" +"_0800BA48: .4byte gUnknown_203B0AE\n" +"_0800BA4C: .4byte gUnknown_202D5F0\n" +"_0800BA50: .4byte gUnknown_203B0AC\n" +"_0800BA54: .4byte gUnknown_202D648\n" +"_0800BA58: .4byte 0x04000004" + ); +} +#endif + void sub_800BA5C(void) { if(gUnknown_203B09A != 0) diff --git a/src/personality_test_pre.c b/src/personality_test_pre.c index 27a55a8..5c5f85e 100644 --- a/src/personality_test_pre.c +++ b/src/personality_test_pre.c @@ -50,14 +50,14 @@ extern void sub_8014248(const char *text, u32, u32, u32 *r0, u32, u32, u32, u32, extern u32 sub_80144A4(s32 *); extern void sub_803CE6C(void); -extern u32 sub_808D994(u32); -extern void sub_80922F4(s32 *r0, u32); +extern char* GetMonSpecies(u32); +extern void CopyStringtoBuffer(s32 *r0, char *r1); extern void sub_801602C(u32, s32 *r0); extern u32 sub_8016080(void); extern void sub_80160D8(void); extern void sub_8099690(u32); -extern void sub_808D8BC(u32 *r0, u32); +extern void CopySpeciesNametoBuffer(char *r0, u32); extern void sub_8006518(void *); extern void sub_800641C(void *, u32, u32); @@ -89,7 +89,7 @@ extern u32 gGenderMenu; extern u8 gNatureQuestionTable[NUM_QUIZ_QUESTIONS]; extern const char *gPersonalityTypeDescriptionTable[]; -extern u32 gUnknown_202DF98; +extern char gAvailablePokemonNames[0x50]; struct unkData gUnknown_80F4244 = @@ -503,12 +503,12 @@ void sub_803CB5C(void) void sub_803CB7C(void) { - u32 uVar1; + char *monName; s32 *iVar2; iVar2 = &gUnknown_203B400->unk20; - uVar1 = sub_808D994(gUnknown_203B400->PartnerID); - sub_80922F4(iVar2,uVar1); + monName = GetMonSpecies(gUnknown_203B400->PartnerID); + CopyStringtoBuffer(iVar2, monName); sub_801602C(3, &gUnknown_203B400->unk20); gUnknown_203B400->TestState = 13; } @@ -567,7 +567,7 @@ void PromptNewQuestion(void) void PrintPersonalityTypeDescription(void) { - sub_808D8BC(&gUnknown_202DF98,gUnknown_203B400->StarterID); + CopySpeciesNametoBuffer(gAvailablePokemonNames, gUnknown_203B400->StarterID); sub_80141B4(gPersonalityTypeDescriptionTable[gUnknown_203B400->playerNature],0, 0,0x101); } diff --git a/src/wonder_mail.c b/src/wonder_mail.c index 274625c..e2daaa6 100644 --- a/src/wonder_mail.c +++ b/src/wonder_mail.c @@ -1,12 +1,16 @@ #include "global.h" #include "save.h" +#include "pokemon.h" +#include "file_system.h" +#include "constants/species.h" // Wonder Mail Related struct WonderMailStruct_203B2C0 { + // size: 0x548 u32 unk0; u32 unk4; - u8 padding2[0x38]; + u8 unk8[0x38]; u32 unk40; u32 unk44; u16 unk48[232]; @@ -22,7 +26,7 @@ struct WonderMailStruct_203B2C0 u8 padding5[0x5C]; u32 unk3BC; u8 padding4[0x60]; - u32 unk420; + u32 unk420; // Is this supposed to be a File like 203B2C4? u8 padding3[0x110]; u32 unk534; s32 unk538; // A7 << 3 @@ -31,29 +35,65 @@ struct WonderMailStruct_203B2C0 s16 unk544; }; +struct unkStruct_203B2C4 +{ + // size: 0x564 + u8 unk0; + u8 padding[3]; + u32 unk4; // wonder mail link status?? + u8 unk8[0x36]; + u8 unk3E; + u32 unk40; + u32 unk44; // another link status + u8 filler48[0x218 - 0x48]; + s8 unk218; + u32 unk21C; + u8 filler220[0x30C - 0x220]; + u32 unk30C; + u8 filler310[0x35C - 0x310]; + u32 unk35C; + u8 filler360[0x3BC - 0x360]; + u32 unk3BC; + u8 filler3C0[0x41C - 0x3C0]; + u8 *unk41C; + /* 0x420 */ struct OpenedFile *faceFile; + /* 0x424 */ u8 *faceData; + u16 unk428; + u16 unk42A; + u8 unk42C; + u8 unk42D; + u8 unk42E; + u32 unk430; + u8 padding3[0x534 - 0x434]; + s32 unk534; + u32 unk538; +}; +extern struct unkStruct_203B2C4 *gUnknown_203B2C4; + struct unkStruct_8095228 { u32 unk0; u8 unk4; - u8 padding[0x27]; + u8 padding[0x10 - 0x5]; + u32 unk10; + u8 padding2[0x20 - 0x14]; + u8 *unk20; + u8 padding3[0x2C - 0x24]; + s8 unk2C; + u8 padding4[0x30 - 0x2D]; s8 unk30; }; +// Used as a temp storage when receiveing A-OK Mail struct unkStruct_80293F4 { - // size of 0x44 - u32 unk0; - u32 unk4; - u32 unk8; - u32 *unkC; + u8 unkArray[0x10]; u32 unk10; - u8 unk14[0xA]; // very unsure about this one - u32 unk20; - u32 unk24; - u32 padding[7]; + u8 padding[0x30 - 0x14]; }; + extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0; extern u32 sub_80144A4(s32 *r0); @@ -81,6 +121,19 @@ extern u32 gWonderMailPasswordIncorrectText; extern u32 gWonderMailSOSPasswordIncorrectText; extern u32 gWonderMailDuplicateText; extern u32 gWonderMailAOKMailReceivedText; +extern u32 gUnknown_80DDA48; +extern u32 gUnknown_80DEF04; +extern u32 gUnknown_80DEF28; +extern u32 gUnknown_80DEF80; +extern u32 gUnknown_80DEFDC; +extern u32 gUnknown_80DF044; +extern u32 gUnknown_80DF0A0; +extern u32 gUnknown_80DF0E0; +extern u32 gUnknown_80DF138; +extern u32 gUnknown_80DF194; +extern char gUnknown_202E5D8[0x50]; +extern char gAvailablePokemonNames[0x50]; +extern u8 *gUnknown_80DED44; extern s32 sub_8095190(void); extern u32 sub_8095324(u32); @@ -91,7 +144,7 @@ extern void sub_800641C(void *r0, u8, u8); extern void ResetUnusedInputStruct(); extern void sub_803084C(); extern u32 sub_8030768(u32); -extern u8 sub_80307EC(); +extern s8 sub_80307EC(); extern void sub_8030D40(u8, u32); extern void sub_8006518(u32 *r0); extern u8 sub_8012FD8(u32 *r0); @@ -104,11 +157,13 @@ extern void sub_803092C(void); extern void sub_8011C28(u32); +extern void MemoryFill8(u8 *dest, u8 value, s32 size); +extern void* MemoryAlloc(u32, u32); +extern void MemoryFree(void *); + extern u32 sub_80154F0(); -void MemoryFill8(u8 *dest, u8 value, s32 size); -extern u32 sub_8039068(u32, u32 *r1, u8 *r0); -extern u32 gUnknown_80DDA48; -extern void sub_8014248(u32 *r0, u32, u32, u32 *r1); +extern u32 sub_8039068(u32, u8 *r1, u8 *r0); +extern void sub_8014248(u32 *r0, u32, u32, u32 *r4, u32, u32, u32, u32 *r5, u32); extern void sub_8095274(u32); extern void sub_80155F0(); extern void sub_80951BC(u8 *r0); @@ -126,6 +181,61 @@ extern u8 sub_8024108(u32); extern u32 sub_8031DCC(); extern void sub_8031E10(); extern void sub_8031E00(); +void sub_808D8E0(u8 *, u32); +extern char* GetMonSpecies(u32); +extern s32 sub_80953D4(u32); +extern void sub_802B2BC(u32); + +extern void sub_802AAE4(); +extern void sub_802AAC8(); +extern void sub_802AAAC(); +extern void sub_802AB7C(); +extern void sub_802AA28(); +extern void sub_802A98C(); +extern void sub_802A9A8(); +extern void sub_802A910(); +extern void sub_802A8BC(); +extern void sub_802A8A0(); +extern void sub_802A798(); +extern void sub_802A474(); +extern void sub_802A090(); +extern void sub_802A158(); +extern void sub_802A0C8(); +extern void sub_802A174(); +extern void sub_802A230(); +extern void sub_802A28C(); +extern void sub_802A39C(); +extern void sub_802A33C(); +extern void sub_802A740(); +extern void sub_802A6F0(); +extern void sub_802A68C(); +extern void sub_802A4D4(); +extern void sub_802A050(); +extern void sub_802A4AC(); +extern void sub_802A458(); +extern void sub_802A75C(); +extern void sub_8029F98(); +extern void sub_8029EA8(); +extern void sub_802A490(); +extern void sub_802AB60(); +extern void sub_802AB98(); +extern void sub_802A718(); +extern void sub_802A6B4(); +extern void sub_802A4F0(); +extern void sub_802A50C(); +extern void sub_802A9FC(); +extern void sub_802A828(); +extern void sub_802A850(); +extern void sub_8030DE4(); +extern void sub_801B450(); +extern void sub_803084C(); +extern void sub_801CBB8(); +extern void sub_80155F0(); +extern void sub_8031E10(); +extern void sub_802F2C0(); + + + void sub_8028B04(u32 r0) { @@ -546,7 +656,7 @@ void sub_8028FDC(void) } else { - if(return_var->unk30 <= 0) + if(return_var->unk2C <= 0) { sub_8028B04(0x1D); } @@ -817,24 +927,20 @@ void sub_80293D8(void) sub_8028B04(0x27); } -#ifndef NONMATCHING -NAKED -#endif +// TODO: pls someone fix this madness of a match - Sese +// This is definitely a fake match with the casting and switch could probably be cleaned up too.. +// void sub_80293F4(void) { -#ifdef NONMATCHING u32 return_var; - u32 temp_var; struct unkStruct_80293F4 temp; + return_var = sub_80154F0(); - MemoryFill8(temp.unk14, 0, 0x30); + MemoryFill8((u8 *)temp.unkArray, 0, 0x30); switch(return_var) { case 3: - return_var = sub_8039068(0x1C, &(gUnknown_203B2C0->unk8), temp.unk14) - 7; - if(return_var <= 0x11) - { - switch(return_var) + switch(sub_8039068(0x1C, (gUnknown_203B2C0->unk8), temp.unkArray) - 7) { case 1: case 2: @@ -847,13 +953,7 @@ void sub_80293F4(void) case 9: break; case 10: - // TODO one register off from matching - temp.unk0 = 0; - temp.unk4 = 4; - temp.unk8 = 0; - temp.unkC = &(gUnknown_203B2C0->unk420); - temp.unk10 = 0xC; - sub_8014248(&gWonderMailPasswordIncorrectText, 0, 8, &gUnknown_80DDA48); + sub_8014248(&gWonderMailPasswordIncorrectText, 0, 8, &gUnknown_80DDA48, 0, 4, 0, &gUnknown_203B2C0->unk420, 0xC); sub_8028B04(0x28); break; case 11: @@ -869,10 +969,9 @@ void sub_80293F4(void) case 14: break; case 15: - sub_8095274(temp.unk24); - // This one is iffy.. not sure - temp.unk14[0] = 2; - sub_80951BC(temp.unk14); + sub_8095274(temp.unk10); + temp.unkArray[0] = 2; // Some sort of Ack? + sub_80951BC(temp.unkArray); sub_80141B4(&gWonderMailAOKMailReceivedText, 0, &gUnknown_203B2C0->unk420, 0x101); sub_8028B04(0x23); break; @@ -881,7 +980,6 @@ void sub_80293F4(void) default: break; } - } sub_80155F0(); break; case 2: @@ -893,158 +991,6 @@ void sub_80293F4(void) default: break; } -#else - asm_unified("\tpush {r4,lr}\n" - "\tsub sp, 0x44\n" - "\tbl sub_80154F0\n" - "\tadds r4, r0, 0\n" - "\tadd r0, sp, 0x14\n" - "\tmovs r1, 0\n" - "\tmovs r2, 0x30\n" - "\tbl MemoryFill8\n" - "\tcmp r4, 0x2\n" - "\tbne _0802940E\n" - "\tb _08029530\n" -"_0802940E:\n" - "\tcmp r4, 0x3\n" - "\tbeq _08029414\n" - "\tb _08029550\n" -"_08029414:\n" - "\tldr r0, _08029434\n" - "\tldr r1, [r0]\n" - "\tadds r1, 0x8\n" - "\tmovs r0, 0x1C\n" - "\tadd r2, sp, 0x14\n" - "\tbl sub_8039068\n" - "\tsubs r0, 0x7\n" - "\tcmp r0, 0x11\n" - "\tbls _0802942A\n" - "\tb _0802951C\n" -"_0802942A:\n" - "\tlsls r0, 2\n" - "\tldr r1, _08029438\n" - "\tadds r0, r1\n" - "\tldr r0, [r0]\n" - "\tmov pc, r0\n" - "\t.align 2, 0\n" -"_08029434: .4byte gUnknown_203B2C0\n" -"_08029438: .4byte _0802943C\n" - "\t.align 2, 0\n" -"_0802943C:\n" - "\t.4byte _080294C8\n" - "\t.4byte _0802951C\n" - "\t.4byte _0802951C\n" - "\t.4byte _0802951C\n" - "\t.4byte _0802951C\n" - "\t.4byte _0802951C\n" - "\t.4byte _0802951C\n" - "\t.4byte _0802951C\n" - "\t.4byte _0802951C\n" - "\t.4byte _0802951C\n" - "\t.4byte _08029484\n" - "\t.4byte _080294C0\n" - "\t.4byte _0802951C\n" - "\t.4byte _0802951C\n" - "\t.4byte _0802951C\n" - "\t.4byte _080294F0\n" - "\t.4byte _0802951C\n" - "\t.4byte _0802951C\n" -"_08029484:\n" - "\tldr r0, _080294B4\n" - "\tldr r3, _080294B8\n" - "\tmovs r2, 0\n" - "\tstr r2, [sp]\n" - "\tmovs r1, 0x4\n" - "\tstr r1, [sp, 0x4]\n" - "\tstr r2, [sp, 0x8]\n" - "\tldr r1, _080294BC\n" - "\tldr r1, [r1]\n" - "\tmovs r2, 0x84\n" - "\tlsls r2, 3\n" - "\tadds r1, r2\n" - "\tstr r1, [sp, 0xC]\n" - "\tmovs r1, 0xC\n" - "\tstr r1, [sp, 0x10]\n" - "\tmovs r1, 0\n" - "\tmovs r2, 0x8\n" - "\tbl sub_8014248\n" - "\tmovs r0, 0x28\n" - "\tbl sub_8028B04\n" - "\tb _0802951C\n" - "\t.align 2, 0\n" -"_080294B4: .4byte gWonderMailPasswordIncorrectText\n" -"_080294B8: .4byte gUnknown_80DDA48\n" -"_080294BC: .4byte gUnknown_203B2C0\n" -"_080294C0:\n" - "\tldr r0, _080294C4\n" - "\tb _080294CA\n" - "\t.align 2, 0\n" -"_080294C4: .4byte gWonderMailSOSPasswordIncorrectText\n" -"_080294C8:\n" - "\tldr r0, _080294E4\n" -"_080294CA:\n" - "\tldr r1, _080294E8\n" - "\tldr r2, [r1]\n" - "\tmovs r1, 0x84\n" - "\tlsls r1, 3\n" - "\tadds r2, r1\n" - "\tldr r3, _080294EC\n" - "\tmovs r1, 0\n" - "\tbl sub_80141B4\n" - "\tmovs r0, 0x7\n" - "\tbl sub_8028B04\n" - "\tb _0802951C\n" - "\t.align 2, 0\n" -"_080294E4: .4byte gWonderMailDuplicateText\n" -"_080294E8: .4byte gUnknown_203B2C0\n" -"_080294EC: .4byte 0x0000010d\n" -"_080294F0:\n" - "\tldr r0, [sp, 0x24]\n" - "\tbl sub_8095274\n" - "\tadd r1, sp, 0x14\n" - "\tmovs r0, 0x2\n" - "\tstrb r0, [r1]\n" - "\tadds r0, r1, 0\n" - "\tbl sub_80951BC\n" - "\tldr r0, _08029524\n" - "\tldr r1, _08029528\n" - "\tldr r2, [r1]\n" - "\tmovs r1, 0x84\n" - "\tlsls r1, 3\n" - "\tadds r2, r1\n" - "\tldr r3, _0802952C\n" - "\tmovs r1, 0\n" - "\tbl sub_80141B4\n" - "\tmovs r0, 0x23\n" - "\tbl sub_8028B04\n" -"_0802951C:\n" - "\tbl sub_80155F0\n" - "\tb _08029550\n" - "\t.align 2, 0\n" -"_08029524: .4byte gWonderMailAOKMailReceivedText\n" -"_08029528: .4byte gUnknown_203B2C0\n" -"_0802952C: .4byte 0x00000101\n" -"_08029530:\n" - "\tbl sub_80155F0\n" - "\tbl ResetUnusedInputStruct\n" - "\tldr r0, _08029558\n" - "\tldr r0, [r0]\n" - "\tmovs r2, 0xEF\n" - "\tlsls r2, 2\n" - "\tadds r0, r2\n" - "\tmovs r1, 0x1\n" - "\tmovs r2, 0x1\n" - "\tbl sub_800641C\n" - "\tmovs r0, 0x1\n" - "\tbl sub_8028B04\n" -"_08029550:\n" - "\tadd sp, 0x44\n" - "\tpop {r4}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" -"_08029558: .4byte gUnknown_203B2C0\n"); -#endif } void sub_802955C(void) @@ -1436,3 +1382,252 @@ void sub_8029B34(void) } sub_8028B04(3); } + +u32 sub_8029B50(void) +{ + char *monName; + struct OpenedFile *faceFile; + s32 uVar2; + int counter; + struct unkStruct_8095228 *temp; + + ResetUnusedInputStruct(); + sub_800641C(0,1,1); + gUnknown_203B2C4 = MemoryAlloc(0x564, 8); + MemoryFill8((u8 *)gUnknown_203B2C4, 0, 0x564); + + sub_808D8E0(gUnknown_202E5D8, SPECIES_PELIPPER); + monName = GetMonSpecies(SPECIES_PELIPPER); + strcpy(gAvailablePokemonNames, monName); + faceFile = GetDialogueSpriteDataPtr(SPECIES_PELIPPER); + + gUnknown_203B2C4->faceFile = faceFile; + gUnknown_203B2C4->faceData = faceFile->data; + gUnknown_203B2C4->unk42C = 0; + gUnknown_203B2C4->unk42D = 0; + gUnknown_203B2C4->unk42E = 0; + gUnknown_203B2C4->unk428 = 2; + gUnknown_203B2C4->unk42A = 8; + + for(counter = 0; counter < 0x36; counter++){ + gUnknown_203B2C4->unk8[counter] = 0; + } + + gUnknown_203B2C4->unk534 = 3; + gUnknown_203B2C4->unk538 = 1; + + uVar2 = sub_80953D4(6); + if (uVar2 != -1) { + temp = sub_8095228(uVar2); + gUnknown_203B2C4->unk41C = temp->unk20; + gUnknown_203B2C4->unk218 = uVar2; + gUnknown_203B2C4->unk430 = temp->unk10; + sub_802B2BC(5); + } + else { + gUnknown_203B2C4->unk41C = gUnknown_80DED44; + gUnknown_203B2C4->unk218 = -1; + sub_802B2BC(0); + } + gUnknown_203B2C4->unk4 = 0x2b; + return 1; +} + +u32 sub_8029C98(void) +{ + + switch(gUnknown_203B2C4->unk0) { + case 5: + sub_802AB7C(); + break; + case 0x1e: + sub_8029F98(); + break; + case 0x1f: + sub_8029EA8(); + break; + case 0xe: + sub_802A090(); + break; + case 0xf: + sub_802A158(); + break; + case 0x11: + sub_802A174(); + break; + case 0x12: + sub_802A230(); + break; + case 0x10: + sub_802A0C8(); + break; + case 0x13: + sub_802A28C(); + break; + case 0x14: + sub_802A39C(); + break; + case 0x15: + sub_802A33C(); + break; + case 0x1c: + sub_802A458(); + break; + case 0x1b: + sub_802A4AC(); + break; + case 0x19: + sub_802A4D4(); + break; + case 0x1a: + sub_802A050(); + break; + case 0x28: + sub_802A9FC(); + break; + case 0x26: + sub_802A4F0(); + break; + case 0x27: + sub_802A50C(); + break; + case 0x25: + sub_802A6B4(); + break; + case 0x24: + sub_802A718(); + break; + case 0x21: + sub_802AB60(); + break; + case 0x22: + sub_802AB98(); + break; + case 0x16: + sub_802A740(); + break; + case 0x18: + sub_802A68C(); + break; + case 0x17: + sub_802A6F0(); + break; + case 0x1d: + sub_802A75C(); + break; + case 0x20: + sub_802A490(); + break; + case 0xd: + sub_802A474(); + break; + case 0xc: + sub_802A798(); + break; + case 0x29: + sub_802A828(); + break; + case 0x2a: + sub_802A850(); + break; + case 0xb: + sub_802A8A0(); + break; + case 10: + sub_802A8BC(); + break; + case 9: + sub_802A910(); + break; + case 7: + sub_802A98C(); + break; + case 8: + sub_802A9A8(); + break; + case 6: + sub_802AA28(); + break; + case 4: + sub_802AAAC(); + break; + case 0: + case 1: + sub_802AAE4(); + break; + case 2: + sub_802AAC8(); + break; + case 3: + return 3; + } + return 0; +} + +void sub_8029E60(void) +{ + if(gUnknown_203B2C4 != NULL) + { + CloseFile(gUnknown_203B2C4->faceFile); + MemoryFree(gUnknown_203B2C4); + gUnknown_203B2C4 = NULL; + sub_8030DE4(); + sub_801B450(); + sub_803084C(); + sub_801CBB8(); + sub_80155F0(); + sub_8031E10(); + sub_802F2C0(); + } +} + +void sub_8029EA8(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(1); + } +} + +void sub_8029EC4(u32 param_1) +{ + switch(param_1) { + case 3: + sub_80141B4(&gUnknown_80DEF28, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d); + break; + case 4: + sub_80141B4(&gUnknown_80DEF80, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d); + break; + case 6: + sub_80141B4(&gUnknown_80DEFDC, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d); + break; + case 7: + sub_80141B4(&gUnknown_80DF044, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d); + break; + case 9: + sub_80141B4(&gUnknown_80DF0A0, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d); + break; + case 11: + sub_80141B4(&gUnknown_80DF0A0, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d); + break; + case 13: + sub_80141B4(&gUnknown_80DF0E0, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d); + break; + case 1: + case 2: + case 5: + case 14: + sub_80141B4(&gUnknown_80DEF04, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d); + break; + case 15: + sub_80141B4(&gUnknown_80DF138,0,(u32 *)&gUnknown_203B2C4->faceFile, 0x10d); + break; + case 0: + case 8: + case 10: + case 12: + default: + return; + } +} diff --git a/src/wonder_mail_1.c b/src/wonder_mail_1.c index e8ca386..20f901c 100644 --- a/src/wonder_mail_1.c +++ b/src/wonder_mail_1.c @@ -2,8 +2,7 @@ extern void sub_80338C4(u32); extern u32 *gUnknown_203B33C; - -u32 sub_80144A4(s32 *); +extern s32 sub_80144A4(s32 *); void sub_8035374(void) { @@ -45,3 +44,30 @@ void sub_80353BC(void) break; } } + +void sub_8035404(u32 param_1) +{ + s32 iVar1; + + if(sub_80144A4(&iVar1) == 0){ + sub_80338C4(param_1); + } +} + +void sub_8035424(void) +{ + sub_80338C4(6); +} + +void sub_8035430(void) +{ + sub_80338C4(0x4F); +} + +void nullsub_50(void) +{ +} + +void nullsub_51(void) +{ +} diff --git a/src/wonder_mail_mid.c b/src/wonder_mail_mid.c new file mode 100644 index 0000000..93b2f5e --- /dev/null +++ b/src/wonder_mail_mid.c @@ -0,0 +1,399 @@ +#include "global.h" +#include "file_system.h" + +struct unkStruct_203B2C4 +{ + // size: 0x564 + u8 unk0; + u8 padding[3]; + u32 unk4; // wonder mail link status?? + u8 unk8[0x36]; + u8 unk3E; + u32 unk40; + u32 unk44; // another link status + u8 filler48[0x218 - 0x48]; + s8 unk218; + u32 unk21C; + u8 filler220[0x30C - 0x220]; + u32 unk30C; + u8 filler310[0x35C - 0x310]; + u32 unk35C; + u8 filler360[0x3BC - 0x360]; + u32 unk3BC; + u8 filler3C0[0x41C - 0x3C0]; + u8 unk41C[4]; // TODO: unify this with wonder_mail.c + struct OpenedFile *faceFile; + u8 *faceData; + u16 unk428; + u16 unk42A; + u8 unk42C; + u8 unk42D; + u8 unk42E; + u32 unk430; + u8 filler434[0x534 - 0x434]; + s32 unk534; + u32 unk538; +}; +extern struct unkStruct_203B2C4 *gUnknown_203B2C4; + + +extern u16 gUnknown_80E5990[]; +extern struct unkStruct_203B340 *gUnknown_203B340; +extern s32 sub_8001658(u32, u32); +extern u32 gUnknown_80E4A40[]; +extern u8 sub_8099B94(); + +extern void sub_8099A5C(u32, u32, u32*); +extern void sub_8099AFC(u32, u32, u32*); +extern void sub_800641C(void *, u32, u32); +extern void ResetUnusedInputStruct(); +extern void sub_8099690(u32); +extern void sub_80141B4(u32 *r0, u32, u32 *r1, u32); + + +extern void MemoryFill8(u8 *dest, u8 value, s32 size); +extern u32 gUnknown_80DF194; +extern void sub_8029EC4(u32 param_1); + +extern void sub_802B2BC(u32); +extern u32 sub_80144A4(s32 *r0); +extern u32 sub_8031DCC(void); +extern void sub_8031E00(void); +extern void sub_8031E10(void); +extern void sub_8030D40(u8, u32); +extern u32 sub_8030768(u32); +extern void sub_803084C(void); +extern s8 sub_80307EC(void); +extern void sub_8006518(u32 *); +extern u8 sub_8012FD8(u32 *r0); +extern void sub_8013114(u32 *, s32 *); +extern void sub_8035CC0(u32 *, u32); +extern void sub_8030810(u32); +extern u32 sub_8030DA0(); +extern void sub_8030DE4(); +extern void sub_803092C(); +extern void sub_8035CF4(u32 *, u32, u32); +extern u32 sub_801CA08(u32); +extern void sub_801CBB8(); +extern void sub_801B3C0(u8 *); +extern u8 sub_801CB24(); +extern void sub_801B450(); +extern u32 sub_801B410(); +extern void sub_801CB5C(u32); +extern void sub_801CCD8(); +extern void sub_8011C28(u32); +extern void sub_8012574(u32); + +void sub_8029F98(void) +{ + s32 auStack20; + + if (sub_80144A4(&auStack20) != 0) { + return; + } + MemoryFill8(gUnknown_203B2C4->unk41C, 0, 4); + gUnknown_203B2C4->unk41C[2] = 0; + gUnknown_203B2C4->unk41C[1] = 1; + gUnknown_203B2C4->unk41C[0] = 0; + if (gUnknown_203B2C4->unk44 == 0) { + switch(gUnknown_203B2C4->unk40) + { + case 6: + switch(gUnknown_203B2C4->unk534) + { + case 3: + case 5: + case 6: + sub_80141B4(&gUnknown_80DF194, 0, (u32 *)&gUnknown_203B2C4->faceFile, 0x10d); + break; + case 4: + default: + break; + } + sub_802B2BC(0xD); + return; + case 7: + sub_802B2BC(0x21); + return; + default: + return; + } + } + else + { + sub_8029EC4(gUnknown_203B2C4->unk44); + sub_802B2BC(0x1F); + } +} + +void sub_802A050(void) +{ + switch(sub_8031DCC()) + { + + case 3: + case 2: + sub_8031E10(); + ResetUnusedInputStruct(); + sub_800641C(&gUnknown_203B2C4->unk3BC, 1, 1); + sub_802B2BC(0x1B); + break; + case 1: + sub_8031E00(); + break; + default: + return; + } +} + +void sub_802A090(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 7: + sub_802B2BC(6); + break; + case 8: + case 0: + sub_802B2BC(1); + break; + default: + break; + } + } +} + +void sub_802A0C8(void) +{ + switch(sub_8030768(1)) + { + case 2: + sub_803084C(); + sub_802B2BC(1); + break; + case 3: + gUnknown_203B2C4->unk218 = sub_80307EC(); + sub_802B2BC(0x11); + break; + case 4: + gUnknown_203B2C4->unk4 = 0x10; + gUnknown_203B2C4->unk218 = sub_80307EC(); + sub_8006518(&gUnknown_203B2C4->unk3BC); + ResetUnusedInputStruct(); + sub_800641C(0,1,1); + sub_8030D40(gUnknown_203B2C4->unk218,0); + sub_802B2BC(0x12); + } +} + +void sub_802A158(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(0x10); + } +} + +void sub_802A174(void) +{ + s32 temp; + + temp = -1; + sub_8030768(0); + if (sub_8012FD8(&gUnknown_203B2C4->unk30C) == 0) { + sub_8013114(&gUnknown_203B2C4->unk30C, &temp); + } + + switch(temp) + { + case 0xB: + sub_803084C(); + sub_802B2BC(0xe); + break; + case 0xC: + gUnknown_203B2C4->unk4 = 0x2b; + sub_8006518(&gUnknown_203B2C4->unk3BC); + ResetUnusedInputStruct(); + sub_800641C(0,1,1); + sub_8030D40(gUnknown_203B2C4->unk218,0); + sub_802B2BC(0x12); + break; + case 0: + case 0xD: + sub_8035CC0(&gUnknown_203B2C4->unk35C,2); + sub_8030810(1); + sub_802B2BC(0x10); + default: + break; + } +} + +void sub_802A230(void) +{ + switch(sub_8030DA0()) + { + case 2: + case 3: + sub_8030DE4(); + ResetUnusedInputStruct(); + sub_800641C(&gUnknown_203B2C4->unk3BC, 1, 1); + sub_803092C(); + if (gUnknown_203B2C4->unk4 == 0x2b) { + sub_8035CF4(&gUnknown_203B2C4->unk21C, 3, 1); + sub_802B2BC(0x11); + } + else { + sub_802B2BC(gUnknown_203B2C4->unk4); + } + break; + default: + break; + } +} + +void sub_802A28C(void) +{ + + gUnknown_203B2C4->unk41C[2] = 0; + gUnknown_203B2C4->unk41C[1] = 1; + gUnknown_203B2C4->unk41C[0] = 0; + + switch(sub_801CA08(1)) + { + case 2: + sub_801CBB8(); + sub_802B2BC(1); + break; + case 3: + gUnknown_203B2C4->unk41C[2] = sub_801CB24(); + sub_802B2BC(0x14); + break; + case 4: + gUnknown_203B2C4->unk4 = 0x13; + gUnknown_203B2C4->unk41C[2] = sub_801CB24(); + sub_8006518(&gUnknown_203B2C4->unk3BC); + ResetUnusedInputStruct(); + sub_800641C(0,1,1); + sub_801B3C0(gUnknown_203B2C4->unk41C); + sub_802B2BC(0x15); + break; + } +} + +void sub_802A33C(void) +{ + switch(sub_801B410()) + { + case 2: + case 3: + sub_801B450(); + ResetUnusedInputStruct(); + sub_800641C(&gUnknown_203B2C4->unk3BC,1,1); + sub_801CB5C(1); + if (gUnknown_203B2C4->unk4 == 0x2b) { + sub_8035CF4(&gUnknown_203B2C4->unk21C,3,1); + sub_802B2BC(0x14); + } + else { + sub_802B2BC(gUnknown_203B2C4->unk4); + } + break; + case 1: + default: + break; + } +} + +void sub_802A39C(void) +{ + s32 temp; + + temp = -1; + sub_801CA08(0); + if (sub_8012FD8(&gUnknown_203B2C4->unk30C) == 0) { + sub_8013114(&gUnknown_203B2C4->unk30C, &temp); + } + + switch(temp) + { + case 0xB: + sub_801CBB8(); + sub_802B2BC(0xC); + break; + case 0xC: + gUnknown_203B2C4->unk4 = 0x2b; + sub_8006518(&gUnknown_203B2C4->unk3BC); + ResetUnusedInputStruct(); + sub_800641C(0,1,1); + sub_801B3C0(gUnknown_203B2C4->unk41C); + sub_802B2BC(0x15); + break; + case 0: + case 0xD: + sub_8035CC0(&gUnknown_203B2C4->unk35C, 3); + sub_801CCD8(); + sub_802B2BC(0x13); + default: + break; + } +} + +void sub_802A458(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(0xD); + } +} + +void sub_802A474(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(0x3); + } +} + +void sub_802A490(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(0x3); + } +} + +void sub_802A4AC(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(0x18); + sub_8011C28(1); + sub_8012574(0); + } +} + +void sub_802A4D4(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(0x1A); + } +} + +void sub_802A4F0(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(0x27); + } +} |