diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2021-07-07 11:39:34 -0500 |
---|---|---|
committer | Seth Barberee <seth.barberee@gmail.com> | 2021-07-07 11:39:34 -0500 |
commit | 6aa475c6310c609743a9a2005e7942050c396865 (patch) | |
tree | 18be7369829badfef35a6c337005e875049027e5 /src | |
parent | f308c79eba1ba8e6bc2134529a2e4f4f21c9c2c2 (diff) |
Sese's vacation work
Diffstat (limited to 'src')
33 files changed, 827 insertions, 246 deletions
diff --git a/src/adventure_log.c b/src/adventure_log.c index f7c2250..41419f6 100644 --- a/src/adventure_log.c +++ b/src/adventure_log.c @@ -50,7 +50,7 @@ const u8 fill_adven[] = "pksdir0"; void sub_8032084(); void DisplayAdventureLog(); extern void sub_8013818(void *, u32, u32, u32); -extern u8 sub_8013938(void *); +extern bool8 sub_8013938(void *); extern void sub_8013660(void *); extern void PlayMenuSoundEffect(u32); extern u32 GetKeyPress(void *); @@ -98,7 +98,7 @@ u32 HandleAdventureLogInput(u8 param_1) PlayMenuSoundEffect(0); return 3; default: - if (sub_8013938(gAdventureLog) != '\0') { + if (sub_8013938(gAdventureLog)) { sub_8032084(); DisplayAdventureLog(); return 1; diff --git a/src/code_2.c b/src/code_2.c index 55f802b..9ed43f9 100644 --- a/src/code_2.c +++ b/src/code_2.c @@ -1,6 +1,7 @@ #include "global.h" #include "bg.h" #include "constants/bg_music.h" +#include "debug.h" #include "file_system.h" #include "friend_area.h" #include "input.h" @@ -14,7 +15,6 @@ #include "pokemon.h" #include "rescue_team_info.h" -extern void NDS_DebugInit(void); extern void sub_801180C(void); extern void NDS_LoadOverlay_GroundMain(void); extern void sub_8014144(void); diff --git a/src/code_801AFA4.c b/src/code_801AFA4.c index 47db0a0..4ad68a8 100644 --- a/src/code_801AFA4.c +++ b/src/code_801AFA4.c @@ -1,6 +1,7 @@ #include "global.h" #include "memory.h" #include "text.h" +#include "item.h" #include "gUnknown_203B460.h" extern struct unkStruct_203B460 *gUnknown_203B460; diff --git a/src/code_801B3C0.c b/src/code_801B3C0.c index 3d24376..da993d5 100644 --- a/src/code_801B3C0.c +++ b/src/code_801B3C0.c @@ -2,27 +2,21 @@ #include "text.h" #include "input.h" #include "memory.h" +#include "item.h" +#include "gUnknown_203B460.h" struct subStruct_203B240 { - char * unk0; + char * pokeName; char * unk4; }; -struct unkStruct_41C -{ - u8 unk41C; - u8 unk41D; - u8 unk41E; - u8 unk41F; -}; - // based off of 203B240.. struct unkStruct_203B230 { // size: 0x94 s32 state; - struct unkStruct_41C unk4; + struct ItemStruct_203B460 unk4; s32 unk8; s32 unkC; struct subStruct_203B240 *unk10[2]; @@ -46,7 +40,7 @@ extern void sub_8014FF0(u32, u32, u8 *, u32, u32); extern void PlayMenuSoundEffect(u32); extern void sub_8013F84(void); extern u32 sub_8012A64(u32 *, u32); -extern s32 sub_80913E0(struct unkStruct_41C *, u32, struct subStruct_203B240 **); +extern s32 sub_80913E0(struct ItemStruct_203B460 *, u32, struct subStruct_203B240 **); extern void sub_801317C(u32 *); extern void sub_80140B4(struct UnkTextStruct2 *); @@ -58,7 +52,7 @@ void sub_801B590(); void sub_801B480(); -u32 sub_801B3C0(struct unkStruct_41C *param_1) +u32 sub_801B3C0(struct ItemStruct_203B460 *param_1) { ResetSprites(1); gUnknown_203B230 = MemoryAlloc(sizeof(struct unkStruct_203B230),8); @@ -120,7 +114,7 @@ void sub_801B480(void) sub_8008C54(gUnknown_203B230->unk24); sub_80073B8(gUnknown_203B230->unk24); preload = gUnknown_203B230->unk10[gUnknown_203B230->unk8]; - strcpy(gAvailablePokemonNames, preload->unk0); + strcpy(gAvailablePokemonNames, preload->pokeName); sub_8014FF0(16, 0, gUnknown_80DBA4C, gUnknown_203B230->unk24, 0); // $m0 sub_8014FF0(4, 16, gUnknown_203B230->unk10[gUnknown_203B230->unk8]->unk4, gUnknown_203B230->unk24, 0); sub_80073E0(gUnknown_203B230->unk24); diff --git a/src/code_801D760.c b/src/code_801D760.c index db034a7..e499d47 100644 --- a/src/code_801D760.c +++ b/src/code_801D760.c @@ -2,6 +2,7 @@ #include "friend_area.h" #include "constants/friend_area.h" #include "file_system.h" +#include "item.h" #include "gUnknown_203B460.h" #include "memory.h" #include "input.h" diff --git a/src/code_8092334.c b/src/code_8092334.c new file mode 100644 index 0000000..e5a8334 --- /dev/null +++ b/src/code_8092334.c @@ -0,0 +1,160 @@ +#include "global.h" +#include "memory.h" +#include "item.h" + +struct unkStruct_8094924 +{ + // size: 0x10? + u8 *unk0; // head? + u8 *unk4; // tail? + u32 unk8; + u32 unkC; +}; + +s16 sub_8094828(u16 r0, u8 itemIndex) +{ + if(itemIndex != 0) + { + if(GetItemType(itemIndex) == ITEM_TYPE_ORB) + return 0x223; + else + return 0x224; + } + else + { + return r0; + } +} + +void sub_809485C(struct unkStruct_8094924 *r0, u8 *r1, s32 size) +{ + r0->unk0 = r1; + r0->unk8 = 0; + r0->unkC = 0; + r0->unk4 = &r1[size]; +} + +void sub_809486C(struct unkStruct_8094924 *r0, u8 *r1, s32 size) +{ + r0->unk0 = r1; + r0->unk8 = 0; + r0->unkC = 0; + r0->unk4 = &r1[size]; + MemoryClear8(r1, size); +} + +void nullsub_102(struct unkStruct_8094924 *r0) +{ + +} + +void sub_809488C(struct unkStruct_8094924 *r0, u8 *r1, s32 size) +{ + s32 r5; + u8 *r6; + + r5 = 0; + r6 = r1; + + + if(size != 0) + { + while(size != 0) + { + if(( *(r6) >> r5) & 1) + { + *r0->unk0 |= (1 << r0->unk8); + } + r5++; + if(r5 == 8) + { + r6++; + r5 = 0; + } + r0->unk8++; + if(r0->unk8 == 8) + { + r0->unk0++; + r0->unk8 = 0; + } + r0->unkC++; + size--; + } + } +} + +// Unused +NAKED +void sub_80948E4(struct unkStruct_8094924 *r0, u8 *r1, s32 size) +{ + asm_unified("\tpush {r4-r6,lr}\n" + "\tadds r4, r0, 0\n" + "\tadds r5, r2, 0\n" + "\tadds r6, r1, 0\n" + "\tcmp r5, 0\n" + "\tbeq _0809491C\n" +"_080948F0:\n" + "\tldrb r1, [r6]\n" + "\tldr r0, [r4, 0x8]\n" + "\tlsls r1, r0\n" + "\tldr r3, [r4]\n" + "\tldrb r2, [r3]\n" + "\tadds r0, r1, 0\n" + "\torrs r0, r2\n" + "\tstrb r0, [r3]\n" + "\tldr r2, [r4]\n" + "\tadds r0, r2, 0x1\n" + "\tstr r0, [r4]\n" + "\tasrs r1, 8\n" + "\tldrb r0, [r2, 0x1]\n" + "\torrs r1, r0\n" + "\tstrb r1, [r2, 0x1]\n" + "\tadds r6, 0x1\n" + "\tldr r0, [r4, 0xC]\n" + "\tadds r0, 0x8\n" + "\tstr r0, [r4, 0xC]\n" + "\tsubs r5, 0x1\n" + "\tcmp r5, 0\n" + "\tbne _080948F0\n" +"_0809491C:\n" + "\tpop {r4-r6}\n" + "\tpop {r0}\n" + "\tbx r0"); +} + +void sub_8094924(struct unkStruct_8094924 *r0, u8 *r1, s32 size) +{ + s32 r6; + u8 *r2; + + r6 = 0; + r2 = r1; + + + if(size != 0) + { + while(size != 0) + { + if(r6 == 0) + *r2 = 0; + if(( *(r0->unk0) >> r0->unk8) & 1) + { + *r2 |= (1 << r6); + } + r6++; + if(r6 == 8) + { + r2++; + r6 = 0; + } + r0->unk8++; + if(r0->unk8 == 8) + { + r0->unk0++; + r0->unk8 = 0; + } + r0->unkC++; + size--; + } + } +} diff --git a/src/code_80958E8.c b/src/code_80958E8.c index 462b408..457da51 100644 --- a/src/code_80958E8.c +++ b/src/code_80958E8.c @@ -1,5 +1,6 @@ #include "global.h" #include "memory.h" +#include "item.h" #include "friend_area.h" #include "constants/friend_area.h" #include "wonder_mail.h" @@ -10,7 +11,6 @@ struct subStruct_203B490 // size: 0xC u8 unk0; u8 unk1; - u8 fill2[2]; u32 unk4; u32 unk8; }; @@ -29,14 +29,13 @@ struct unkStruct_203B490 }; -extern u8 sub_809095C(u8); +extern bool8 sub_809095C(u8); extern s32 sub_8090298(u8); -extern u8 sub_809017C(u8 *); +extern bool8 sub_809017C(u8 *); extern s16 sub_808E770(s16); -extern u8 sub_8092040(u8); +extern bool8 sub_8092040(u8); extern u8 sub_803C1D0(u8 *, u8); -extern u8 sub_8090A60(u8); -extern u8 sub_8091524(u8); +extern bool8 sub_8091524(u8); extern u8 sub_8091E60(u8 ,u8 ); extern u32 GetMaxItemCount(u8); extern u8 sub_803C0DC(s16); @@ -82,7 +81,7 @@ void sub_8095900(void) MemoryClear8(gUnknown_203B490->unk1B8, sizeof(gUnknown_203B490->unk1B8)); for(iVar2 = 0; iVar2 < 16; iVar2++) { - gUnknown_203B490->unk230[iVar2].unk0 = 0x63; + gUnknown_203B490->unk230[iVar2].unk0 = 99; gUnknown_203B490->unk230[iVar2].unk1 = 1; gUnknown_203B490->unk230[iVar2].unk4 = 0; gUnknown_203B490->unk230[iVar2].unk8 = 0; @@ -117,11 +116,11 @@ bool8 ValidateWonderMail(struct WonderMail *data) if(data->unk2 > 9) return FALSE; - if(sub_809095C(data->dungeon) != 0) + if(sub_809095C(data->dungeon)) return FALSE; if(data->floor >= sub_8090298(data->dungeon)) return FALSE; - if(sub_809017C(&(data->dungeon)) != 0) + if(sub_809017C(&(data->dungeon))) return FALSE; if(data->clientPoke == SPECIES_NONE) @@ -145,11 +144,11 @@ bool8 ValidateWonderMail(struct WonderMail *data) if(data->targetPoke != data->clientPoke) return FALSE; - if(sub_8092040(data->targetItem) != 0) + if(sub_8092040(data->targetItem)) return FALSE; - if(sub_8090A60(data->targetItem) != 0) + if(sub_8090A60(data->targetItem)) return FALSE; - if(sub_8091524(data->targetItem) == 0) + if(!sub_8091524(data->targetItem)) return FALSE; // Item finding @@ -159,7 +158,7 @@ bool8 ValidateWonderMail(struct WonderMail *data) if(data->rewardType == BLANK_4 || data->rewardType == END_REWARDS || data->rewardType > END_REWARDS) return FALSE; - if(sub_8092040(data->itemReward) != 0) + if(sub_8092040(data->itemReward)) return FALSE; // Friend Area Reward diff --git a/src/code_8097670.c b/src/code_8097670.c index d9af468..75a788a 100644 --- a/src/code_8097670.c +++ b/src/code_8097670.c @@ -9,7 +9,7 @@ struct unkDungeonStruct struct unkStruct_203B494 { // size: 0xC8? - u32 unk0; + u32 unk0; // 32 bit bitfield, I think s32 numAdventures; s32 unk8; s32 unkC; @@ -20,10 +20,7 @@ struct unkStruct_203B494 u32 unk1C[0xE]; u8 fill54[0x8C - 0x54]; u32 unk8C[0xD]; - union UNKC0{ - s32 unkC0; - s16 unkC0_16; - } UNKC0; + s32 unkC0; }; extern struct unkStruct_203B494 *gUnknown_203B494; @@ -59,7 +56,7 @@ void sub_80976A8(void) gUnknown_203B494->unk14 = 0; gUnknown_203B494->unk16 = 0; gUnknown_203B494->unk18 = 0; - gUnknown_203B494->UNKC0.unkC0 = 0; + gUnknown_203B494->unkC0 = 0; gUnknown_203B494->unk8 = 0; gUnknown_203B494->unkC = 0; @@ -81,7 +78,7 @@ void sub_80976F8(u8 r0) u8 sub_8097710(u8 r0) { - if((gUnknown_203B494->unk0 & (1 << r0)) != 0) + if(gUnknown_203B494->unk0 & (1 << r0)) return 1; else return 0; @@ -181,12 +178,12 @@ s16 sub_8097880(void) void sub_8097890(void) { - if(gUnknown_203B494->UNKC0.unkC0 < 99999) - gUnknown_203B494->UNKC0.unkC0++; + if(gUnknown_203B494->unkC0 < 99999) + gUnknown_203B494->unkC0++; sub_80976F8(12); } s16 sub_80978B8(void) { - return gUnknown_203B494->UNKC0.unkC0_16; + return gUnknown_203B494->unkC0; } diff --git a/src/code_8098BDC.c b/src/code_8098BDC.c index c060642..6047dfa 100644 --- a/src/code_8098BDC.c +++ b/src/code_8098BDC.c @@ -1,6 +1,7 @@ #include "global.h" #include "play_time.h" #include "input.h" +#include "debug.h" extern struct PlayTimeStruct *gPlayTimeRef; extern u32 gUnknown_20398A8; @@ -21,8 +22,6 @@ extern const char gUnknown_8115FA4; extern const char gUnknown_8115FC8; extern const char gUnknown_8115FE8; -extern void Log(u8 *, const char*, ...); - extern void sub_809B57C(); extern void GroundScript_Unlock(); extern void sub_809D25C(); diff --git a/src/debug.c b/src/debug.c index aeccbe8..6b9e8e8 100644 --- a/src/debug.c +++ b/src/debug.c @@ -5,7 +5,7 @@ #include "debug.h" extern void Hang(); -void FatalErrorHang(void) __attribute__((noreturn)); +static void FatalErrorHang(void) __attribute__((noreturn)); extern bool32 gNDS_DebugEnabled; extern u8 gUnknown_203B150; @@ -143,7 +143,7 @@ void nullsub_137(void) } -void FatalErrorPrintFuncFileLine(const char *r0, struct DebugLocation *debug) +static void FatalErrorPrintFuncFileLine(const char *r0, struct DebugLocation *debug) { char buf[0x100]; if(r0 != NULL){ @@ -155,7 +155,7 @@ void FatalErrorPrintFuncFileLine(const char *r0, struct DebugLocation *debug) } } -void FatalErrorFormatMessage(const char *text, ...) +static void FatalErrorFormatMessage(const char *text, ...) { char bufPrint[0x100]; va_list vArgv; @@ -190,7 +190,7 @@ u32 sub_8011BA8(void) } // Unused -const char *sub_8011BAC(void) +const char *GetNotMountText(void) { return gNotMountText; } @@ -232,7 +232,7 @@ void nullsub_32() { } -void FatalErrorHang() +static void FatalErrorHang() { Hang(); } diff --git a/src/debug_menu_mid.c b/src/debug_menu_mid.c index 995a30a..3ed684c 100644 --- a/src/debug_menu_mid.c +++ b/src/debug_menu_mid.c @@ -1,5 +1,6 @@ #include "global.h" #include "input.h" +#include "item.h" #include "gUnknown_203B460.h" #include "memory.h" #include "menu.h" @@ -49,8 +50,7 @@ extern struct unkStruct_203B3F4 *gUnknown_203B3F4; extern struct unkStruct_203B460 *gUnknown_203B460; -extern void sub_801B3C0(u8 *); -extern void sub_8090A8C(u8 *, u8, u32); +extern void sub_801B3C0(struct ItemStruct_203B460 *); extern void sub_8013AA0(u32 *); extern struct UnkTextStruct2 gUnknown_80E7E34; @@ -181,7 +181,7 @@ void sub_803A51C(void) void sub_803A5A0(void) { - u8 auStack8 [4]; + struct ItemStruct_203B460 auStack8; switch(gUnknown_203B3F0->state) { case 0: @@ -208,8 +208,8 @@ void sub_803A5A0(void) sub_803A690(); break; case 4: - sub_8090A8C(auStack8,gUnknown_203B3F0->itemIndex,0); - sub_801B3C0(auStack8); + sub_8090A8C(&auStack8,gUnknown_203B3F0->itemIndex,0); + sub_801B3C0(&auStack8); break; case 5: break; diff --git a/src/exclusive_pokemon_1.c b/src/exclusive_pokemon_1.c new file mode 100644 index 0000000..37b4dfe --- /dev/null +++ b/src/exclusive_pokemon_1.c @@ -0,0 +1,125 @@ +#include "global.h" +#include "exclusive_pokemon.h" + +extern struct ExclusivePokemonData *gUnknown_203B498; +extern struct ExclusivePokemon gExclusivePokemon[NUM_EXCLUSIVE_POKEMON]; + +void sub_8094924(u32 *, u8 *, u32); +void sub_80980B4(s16); +void sub_8097FA8(u8); +void sub_8098170(s32); +void sub_8097FF8(void); + +u8 sub_8098100(u8); +u8 sub_8098134(s16); +u8 sub_80981A0(s32); +void sub_809488C(u32 *, u8 *, s32); + +bool8 IsExclusivePokemonUnlocked(s16 pokeID) +{ + s32 iVar2; + s32 pokeID_s32; + + pokeID_s32 = pokeID; + + for(iVar2 = 0; iVar2 < NUM_EXCLUSIVE_POKEMON; iVar2++) + { + if(gExclusivePokemon[iVar2].poke_id == pokeID_s32) + return gUnknown_203B498->Exclusives[iVar2]; + } + return TRUE; +} + +void UnlockExclusivePokemon(s16 pokeID) +{ + s32 iVar2; + s32 pokeID_s32; + + pokeID_s32 = pokeID; + + for(iVar2 = 0; iVar2 < NUM_EXCLUSIVE_POKEMON; iVar2++) + { + if(gExclusivePokemon[iVar2].poke_id == pokeID_s32) + gUnknown_203B498->Exclusives[iVar2] = 1; + } +} + +void WriteExclusivePokemon(u32 *r0) +{ + s32 iVar2; + u8 *puVar2; + + u8 stack_0; + u8 stack_1; + u8 stack_2; + u8 neg_1; + u8 zero; + + neg_1 = -1; + zero = 0; + + + sub_809488C(r0, (u8 *)gUnknown_203B498, 1); + for(iVar2 = 0; iVar2 < 424; iVar2++) + { + stack_0 = sub_8098134(iVar2); + sub_809488C(r0, &stack_0, 1); + } + for(iVar2 = 0; iVar2 < 64; iVar2++) + { + stack_1 = sub_8098100(iVar2); + sub_809488C(r0, &stack_1, 1); + } + for(iVar2 = 0; iVar2 < 31; iVar2++) + { + stack_2 = sub_80981A0(iVar2); + sub_809488C(r0, &stack_2, 1); + } + for(iVar2 = 0; iVar2 < NUM_EXCLUSIVE_POKEMON; iVar2++) + { + if(gUnknown_203B498->Exclusives[iVar2]) + puVar2 = &neg_1; + else + puVar2 = &zero; + sub_809488C(r0, puVar2, 1); + } +} + +void ReadExclusivePokemon(u32 *r0) +{ + s32 iVar2; + u8 stack_0; + u8 stack_1; + u8 stack_2; + u8 stack_3; + + memset(gUnknown_203B498, 0, sizeof(struct ExclusivePokemonData)); + sub_8094924(r0, (u8 *)gUnknown_203B498, 1); + for(iVar2 = 0; iVar2 < 424; iVar2++) + { + sub_8094924(r0, &stack_0, 1); + if(stack_0) + sub_80980B4(iVar2); + } + for(iVar2 = 0; iVar2 < 64; iVar2++) + { + sub_8094924(r0, &stack_1, 1); + if(stack_1) + sub_8097FA8(iVar2); + } + for(iVar2 = 0; iVar2 < 31; iVar2++) + { + sub_8094924(r0, &stack_2, 1); + if(stack_2) + sub_8098170(iVar2); + } + for(iVar2 = 0; iVar2 < NUM_EXCLUSIVE_POKEMON; iVar2++) + { + sub_8094924(r0, &stack_3, 1); + + do; while(0); // do/while needed for matching - jiang + + gUnknown_203B498->Exclusives[iVar2] = 1 & stack_3; + } + sub_8097FF8(); +} diff --git a/src/felicity_bank_1.c b/src/felicity_bank_1.c index 171397b..be46eb1 100644 --- a/src/felicity_bank_1.c +++ b/src/felicity_bank_1.c @@ -1,4 +1,5 @@ #include "global.h" +#include "item.h" #include "gUnknown_203B460.h" #include "felicity_bank.h" diff --git a/src/flash.c b/src/flash.c index 11520b4..c27a45e 100644 --- a/src/flash.c +++ b/src/flash.c @@ -5,13 +5,13 @@ extern u8 gFlashEnabled; -extern FlashIntrFunc *sub_800B6E8(s32); +extern FlashIntrFunc *GetInterruptCallback(s32); static u8 TryProgramSector(s32, u8 *); void InitFlash(void) { - if (!IdentifyFlash() && !SetFlashTimerIntr(2, sub_800B6E8(3))) + if (!IdentifyFlash() && !SetFlashTimerIntr(2, GetInterruptCallback(3))) gFlashEnabled = TRUE; } diff --git a/src/friend_area_1.c b/src/friend_area_1.c index bd089c0..44f00a8 100644 --- a/src/friend_area_1.c +++ b/src/friend_area_1.c @@ -2,18 +2,18 @@ #include "constants/friend_area.h" extern bool8 *gFriendAreas; -extern void sub_809485C(u32 *r0, u8 *r1, u32 r2); +extern void sub_809485C(u32 *r0, u8 *r1, u32 size); extern void sub_8094924(u32 *r0, u32 *r1, u32); extern void nullsub_102(u32 *r0); extern void sub_809488C(u32 *r0, u32 *r1, u32 r2); -extern void sub_809486C(u32 *r0, u8 *r1, u32 r2); +extern void sub_809486C(u32 *r0, u8 *r1, u32 size); -u32 SaveFriendAreas(u8 *r0, u32 r1) +u32 SaveFriendAreas(u8 *r0, u32 size) { u32 temp[5]; s32 counter; - sub_809486C(temp, r0, r1); + sub_809486C(temp, r0, size); for(counter = 0; counter < NUM_FRIEND_AREAS; counter++) { if(gFriendAreas[counter] != 0) @@ -26,12 +26,12 @@ u32 SaveFriendAreas(u8 *r0, u32 r1) return temp[2]; } -u32 ReadSavedFriendAreas(u8 *r0, s32 r1) +u32 ReadSavedFriendAreas(u8 *r0, s32 size) { u32 temp[5]; s32 counter; - sub_809485C(temp, r0, r1); + sub_809485C(temp, r0, size); for(counter = 0; counter < NUM_FRIEND_AREAS; counter++) { sub_8094924(temp, &(temp[4]), 1); diff --git a/src/friend_area_action_menu.c b/src/friend_area_action_menu.c index 04896d2..71e424b 100644 --- a/src/friend_area_action_menu.c +++ b/src/friend_area_action_menu.c @@ -3,6 +3,8 @@ #include "text.h" #include "input.h" #include "menu.h" +#include "item.h" +#include "gUnknown_203B460.h" #include "friend_area_action_menu.h" extern struct unkStruct_203B2BC *gUnknown_203B2BC; @@ -31,8 +33,7 @@ extern void sub_801A5D8(u32, u32, u32, u32); extern void sub_801A8D0(u32); extern void sub_801A9E0(); extern void sub_801F1B0(u32, u32); -extern void sub_8090B64(u8 *, u8 *); -extern void sub_801B3C0(u8 *); +extern void sub_801B3C0(struct ItemStruct_203B460 *); extern void sub_809401C(u32 *, u32 *); extern void sub_801EE10(u32, s16, u32 *, u32, u32, u32); @@ -166,7 +167,7 @@ void sub_802719C(void) void sub_8027274(void) { - u8 auStack12 [4]; + struct ItemStruct_203B460 auStack12; switch(gUnknown_203B2BC->state) { case 0: @@ -200,8 +201,8 @@ void sub_8027274(void) sub_8012D60(&gUnknown_203B2BC->unk7C,gUnknown_203B2BC->menuItems,0,&gUnknown_203B2BC->unk16C,gUnknown_203B2BC->unk74,2); break; case 0xd: - sub_8090B64(auStack12,&gUnknown_203B2BC->unk10); - sub_801B3C0(auStack12); + sub_8090B64(&auStack12,&gUnknown_203B2BC->unk10); + sub_801B3C0(&auStack12); break; case 0xe: sub_809401C(&gUnknown_203B2BC->unk28,&gUnknown_203B2BC->unk18->unk2C); diff --git a/src/friend_area_action_menu_1.c b/src/friend_area_action_menu_1.c index a6a84ba..86f7430 100644 --- a/src/friend_area_action_menu_1.c +++ b/src/friend_area_action_menu_1.c @@ -2,6 +2,7 @@ #include "text.h" #include "input.h" #include "menu.h" +#include "item.h" #include "gUnknown_203B460.h" #include "friend_area_action_menu.h" @@ -23,7 +24,7 @@ extern void nullsub_104(); extern void sub_8091274(u8 *); extern void sub_801A928(); extern void sub_8099690(u32); -extern void sub_808D800(s16, u8 *); +extern void sub_808D800(s16, struct ItemStruct_203B460_ALT *); extern u32 sub_801A8AC(); extern u32 sub_801A6E8(u32); @@ -56,14 +57,14 @@ void sub_8027B28(void) { case 3: gUnknown_203B2BC->unkC = sub_801A8AC(); - gUnknown_203B2BC->unk10 = gUnknown_203B460->fill0[gUnknown_203B2BC->unkC].itemIndex; - gUnknown_203B2BC->unk11 = gUnknown_203B460->fill0[gUnknown_203B2BC->unkC].numItems; + gUnknown_203B2BC->unk10.itemIndex = gUnknown_203B460->fill0[gUnknown_203B2BC->unkC].itemIndex; + gUnknown_203B2BC->unk10.numItems = gUnknown_203B460->fill0[gUnknown_203B2BC->unkC].numItems; sub_8027184(0xc); break; case 4: gUnknown_203B2BC->unkC = sub_801A8AC(); - gUnknown_203B2BC->unk10 = gUnknown_203B460->fill0[gUnknown_203B2BC->unkC].itemIndex; - gUnknown_203B2BC->unk11 = gUnknown_203B460->fill0[gUnknown_203B2BC->unkC].numItems; + gUnknown_203B2BC->unk10.itemIndex = gUnknown_203B460->fill0[gUnknown_203B2BC->unkC].itemIndex; + gUnknown_203B2BC->unk10.numItems = gUnknown_203B460->fill0[gUnknown_203B2BC->unkC].numItems; sub_8099690(0); sub_8027184(0xd); break; diff --git a/src/friend_rescue.c b/src/friend_rescue.c index 73e937e..15919d1 100644 --- a/src/friend_rescue.c +++ b/src/friend_rescue.c @@ -1,8 +1,10 @@ #include "global.h" +#include "text.h" +#include "item.h" +#include "gUnknown_203B460.h" #include "friend_rescue.h" #include "pokemon.h" #include "memory.h" -#include "text.h" extern void sub_80338C4(u32); extern s32 sub_80144A4(s32 *); diff --git a/src/friend_rescue_1.c b/src/friend_rescue_1.c index 7c0509a..ea33bb8 100644 --- a/src/friend_rescue_1.c +++ b/src/friend_rescue_1.c @@ -1,6 +1,14 @@ #include "global.h" -#include "friend_rescue.h" +#include "text.h" #include "pokemon.h" +#include "save.h" +#include "memory.h" +#include "input.h" +#include "gUnknown_203B460.h" +#include "friend_rescue.h" +#include "sub_8095228.h" + +extern struct unkStruct_203B460 *gUnknown_203B460; extern void sub_80338C4(u32); extern s32 sub_80144A4(s32 *); @@ -14,6 +22,380 @@ extern char gAvailablePokemonNames[0x50]; extern struct WonderMailStruct_203B33C *gUnknown_203B33C; +u8 sub_80953D4(u32); +u8 sub_801CF14(u32); + +extern u8 gUnknown_80E48A8[]; +extern u32 gUnknown_80E2440; +extern u8 gUnknown_80E49C4[]; +extern u8 gUnknown_80E4704[]; + +u8 sub_809539C(u32, u32); +u32 sub_8039068(u32, u8 *, u8 *); +extern u32 sub_80154F0(); +extern void sub_80155F0(); +struct unkStruct_8095228 *sub_8095228(u8); +extern void sub_80141B4(u8 *r0, u32, u32 *r1, u32); +extern void sub_8014248(const char *r0, u32, u32, u32 *r4, u32, u32, u32, u32 *r5, u32); + +void sub_8034D54(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_80338C4(0x65); + PrepareSavePakWrite(SPECIES_NONE); + } +} + +void sub_8034D74(void) +{ + u32 return_var; + struct unkStruct_8095228 temp; + struct unkStruct_8095228 *temp2; + + return_var = sub_80154F0(); + MemoryFill8((u8 *)&temp, 0, sizeof(struct unkStruct_8095228)); + switch(return_var) + { + case 3: + switch(sub_8039068(0x20, (gUnknown_203B33C->unk8), &temp.unk0)) + { + case 17: + sub_8014248(gUnknown_80E48A8, 0, 6, &gUnknown_80E2440, 0, 4, 0, 0, 0x101); + sub_80338C4(0x74); + break; + case 20: + sub_80141B4(gUnknown_80E49C4, 0, 0, 0x101); + sub_80338C4(0x6B); + break; + case 11: + sub_80141B4(gUnknown_80E4704, 0, 0, 0x101); + sub_80338C4(0x6B); + break; + case 24: + temp2 = sub_8095228(sub_809539C(4, temp.unk10)); + *temp2 = temp; + temp2->unk0 = 6; // Some sort of Ack? + gUnknown_203B33C->unk420 = temp.unk10; + sub_80338C4(0x6D); + break; + case 7: + default: + break; + } + sub_80155F0(); + break; + case 2: + sub_80155F0(); + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B33C->unk3BC, 1, 1); + sub_80338C4(1); + break; + default: + break; + } +} + +void sub_8034EC8(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + if(!WriteSavePak()) + { + FinishWriteSavePak(); + sub_80338C4(2); + } + } +} + +void sub_8034EF0(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + if(!WriteSavePak()) + { + FinishWriteSavePak(); + sub_80338C4(2); + } + } +} + +void sub_8034F18(void) +{ + s32 temp; + + if(sub_80144A4(&temp) == 0) + { + sub_80338C4(0x65); + PrepareSavePakWrite(SPECIES_NONE); + } +} + +void sub_8034F38(void) +{ + s32 temp; + + if(sub_80144A4(&temp) == 0) + { + sub_80338C4(0x71); + PrepareSavePakWrite(SPECIES_NONE); + } +} + +void sub_8034F58(void) +{ + s32 temp; + + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 6: + sub_80338C4(0x62); + break; + case 8: + sub_80338C4(0x1); + break; + } + } +} + +void sub_8034F88(void) +{ + s32 temp; + struct unkStruct_8095228 *temp2; + + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 6: + temp2 = sub_8095228(gUnknown_203B33C->unk218); + if(gUnknown_203B33C->unk41C.itemIndex != 0) + temp2->unk20 = gUnknown_203B33C->unk41C; + gUnknown_203B460->unk50[gUnknown_203B33C->unk41C.itemIndex]--; + sub_80338C4(0x75); + break; + case 7: + sub_80338C4(0x57); + break; + case 8: + sub_80338C4(0x1); + break; + } + } +} + +void sub_8035018(void) +{ + s32 temp; + + if(sub_80144A4(&temp) == 0) + { + sub_80338C4(0x76); + PrepareSavePakWrite(SPECIES_NONE); + } +} + +void sub_8035038(void) +{ + s32 temp; + + if(sub_80144A4(&temp) == 0) + { + if(!WriteSavePak()){ + FinishWriteSavePak(); + // Dumb cast to get unsigned switch + switch((u32)gUnknown_203B33C->unk524) + { + default: + break; + case 0xB: + case 0xC: + sub_80338C4(0x69); + break; + case 0xD: + sub_80338C4(0x66); + break; + case 0xE: + sub_80338C4(0x4B); + break; + } + } + } +} + +void sub_8035094(void) +{ + s32 temp; + + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 0x16: + // Dumb cast to get unsigned switch + switch((u32)gUnknown_203B33C->unk524) + { + default: + break; + case 0xB: + case 0xC: + sub_80338C4(0x69); + break; + case 0xD: + sub_80338C4(0x66); + break; + case 0xE: + sub_80338C4(0x4B); + break; + } + break; + case 8: + sub_80338C4(0x1); + break; + default: + break; + } + } +} + +void sub_80350F4(void) +{ + s32 temp; + + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 0x15: + if(sub_801CF14(0) != 0) + sub_80338C4(0x56); + else + sub_80338C4(0x57); + break; + case 0x16: + // Dumb cast to get unsigned switch + switch((u32)gUnknown_203B33C->unk524) + { + default: + break; + case 0xB: + case 0xC: + sub_80338C4(0x69); + break; + case 0xD: + sub_80338C4(0x66); + break; + case 0xE: + sub_80338C4(0x4B); + break; + } + break; + case 8: + sub_80338C4(0x1); + break; + default: + break; + } + } +} + +void sub_803517C(void) +{ + s32 temp; + + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 6: + // Dumb cast to get unsigned switch + switch((u32)gUnknown_203B33C->unk524) + { + default: + break; + case 0xB: + case 0xC: + sub_80338C4(0x69); + break; + case 0xD: + sub_80338C4(0x66); + break; + case 0xE: + sub_80338C4(0x4B); + break; + } + break; + case 8: + sub_80338C4(0x1); + break; + default: + break; + } + } +} + +void sub_80351E0(void) +{ + s32 temp; + + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 6: + sub_80338C4(0x72); + break; + case 8: + sub_80338C4(0x1); + break; + default: + break; + } + } +} + +void sub_8035210(void) +{ + s32 temp; + struct unkStruct_8095228 *temp2; + + if(sub_80144A4(&temp) == 0) + { + // NOTE: this is why unk524 can't be changed to u32.. + gUnknown_203B33C->unk524 = temp; + switch(gUnknown_203B33C->unk524) + { + case 0xB: + case 0xC: + case 0xD: + if(gUnknown_203B33C->unk528 == 0x13) + { + temp2 = sub_8095228(sub_80953D4(5)); + if(temp2->unk20.itemIndex != 0) + sub_80338C4(0x53); + else + sub_80338C4(0x55); + } + else if(gUnknown_203B33C->unk524 != 0xD) + sub_80338C4(0x69); + else + sub_80338C4(0x72); + break; + case 8: + sub_80338C4(1); + break; + case 0xE: + default: + break; + } + } +} + void nullsub_46(void) { } diff --git a/src/items.c b/src/items.c index 22aa62b..1ddd5b4 100644 --- a/src/items.c +++ b/src/items.c @@ -1,8 +1,8 @@ #include "global.h" #include "file_system.h" +#include "item.h" #include "gUnknown_203B460.h" #include "random.h" -#include "item.h" extern struct unkStruct_203B460 *gUnknown_203B460; extern struct unkStruct_203B460 gUnknown_20389A8; @@ -110,14 +110,13 @@ void sub_8090A8C(struct ItemStruct_203B460 *param_1,u8 itemIndex,u8 param_3) } } -// TODO is this a struct one too? -void sub_8090B08(struct ItemStruct_203B460 *param_1,u8 itemIndex) +void sub_8090B08(struct ItemStruct_203B460_ALT *param_1,u8 itemIndex) { u32 uVar2; u32 uVar3; if (itemIndex != 0) { - param_1->unk0 = itemIndex; + param_1->itemIndex = itemIndex; if (sub_8090A60(itemIndex)) { uVar2 = GetItemUnkThrow(itemIndex,0); uVar3 = GetItemUnkThrow(itemIndex,1); @@ -132,19 +131,19 @@ void sub_8090B08(struct ItemStruct_203B460 *param_1,u8 itemIndex) } } else { - param_1->unk0 = 0; + param_1->itemIndex = 0; param_1->numItems = 0; } } -void sub_8090B64(struct ItemStruct_203B460 *param_1,struct ItemStruct_203B460 *param_2) +void sub_8090B64(struct ItemStruct_203B460 *param_1, struct ItemStruct_203B460_ALT *param_2) { u8 r6; - if(param_2->unk0 != 0) + if(param_2->itemIndex != 0) { param_1->unk0 = 1; - param_1->itemIndex = param_2->unk0; + param_1->itemIndex = param_2->itemIndex; r6 = sub_8090A60(param_1->itemIndex); if(r6 != 0 || GetItemType(param_1->itemIndex) == ITEM_TYPE_MONEY) { @@ -170,14 +169,14 @@ void sub_8090B64(struct ItemStruct_203B460 *param_1,struct ItemStruct_203B460 *p } } -void sub_8090BB0(struct ItemStruct_203B460 *param_1,struct ItemStruct_203B460 *param_2) +void sub_8090BB0(struct ItemStruct_203B460_ALT *param_1,struct ItemStruct_203B460 *param_2) { if ((param_2->unk0 & 1) != 0) { - param_1->unk0 = param_2->itemIndex; + param_1->itemIndex = param_2->itemIndex; param_1->numItems = param_2->numItems; } else { - param_1->unk0 = 0; + param_1->itemIndex = 0; } } @@ -188,7 +187,7 @@ u8 GetItemType(u8 index) s32 sub_8090BE4(struct ItemStruct_203B460 *param_1) { - if (param_1->itemIndex == 0x69) { + if (param_1->itemIndex == 105) { return sub_80915D4(param_1); } else { @@ -203,7 +202,7 @@ s32 sub_8090BE4(struct ItemStruct_203B460 *param_1) s32 sub_8090C30(struct ItemStruct_203B460 *param_1) { - if (param_1->itemIndex == 0x69) { + if (param_1->itemIndex == 105) { return sub_80915D4(param_1); } else { diff --git a/src/kangaskhan_storage.c b/src/kangaskhan_storage.c index e23fe89..28ab5c9 100644 --- a/src/kangaskhan_storage.c +++ b/src/kangaskhan_storage.c @@ -2,6 +2,7 @@ #include "file_system.h" #include "pokemon.h" #include "input.h" +#include "item.h" #include "kangaskhan_storage.h" #include "memory.h" diff --git a/src/kangaskhan_storage_1.c b/src/kangaskhan_storage_1.c index 61bcf08..539788b 100644 --- a/src/kangaskhan_storage_1.c +++ b/src/kangaskhan_storage_1.c @@ -2,6 +2,7 @@ #include "file_system.h" #include "pokemon.h" #include "input.h" +#include "item.h" #include "kangaskhan_storage.h" extern struct unkStruct_203B208 *gUnknown_203B208; diff --git a/src/kangaskhan_storage_2.c b/src/kangaskhan_storage_2.c index e3dcd70..6b30882 100644 --- a/src/kangaskhan_storage_2.c +++ b/src/kangaskhan_storage_2.c @@ -3,9 +3,9 @@ #include "memory.h" #include "text.h" #include "item.h" +#include "gUnknown_203B460.h" #include "input.h" #include "kangaskhan_storage.h" -#include "gUnknown_203B460.h" extern struct unkStruct_203B208 *gUnknown_203B208; extern struct unkStruct_203B460 *gUnknown_203B460; @@ -14,10 +14,7 @@ struct unkStruct_203B20C { u32 state; u8 unk4[4]; - u8 unk8; - u8 unk9; - u8 unkA; - u8 unkB; + struct ItemStruct_203B460 unk8; u8 fillC[0x14 - 0xC]; u32 unk14; u32 unk18; @@ -64,8 +61,8 @@ extern u8 sub_8012FD8(u32 *r0); extern void sub_8013114(u32 *, s32 *); extern void sub_801CBB8(); -extern u8 sub_8091524(u8); -extern u8 sub_801ADA0(u32); +extern bool8 sub_8091524(u8); +extern bool8 sub_801ADA0(u32); extern void sub_8099690(u32); extern u32 sub_8013BBC(u32 *); extern void sub_8017598(void); @@ -73,7 +70,6 @@ extern void sub_8017598(void); extern u32 sub_801CA08(u32); extern u32 sub_801CFB8(void); extern u8 sub_801CB24(); -extern void sub_8090A8C(struct ItemStruct_203B460 *, u8, u32); extern void sub_801AD34(u32); extern u32 sub_801A6E8(u32); extern u32 sub_801AEA8(void); @@ -88,7 +84,7 @@ extern void sub_801CCD8(); extern void sub_80184D4(); extern void sub_8018280(); extern void sub_8013AA0(u32 *); -extern void sub_801B3C0(u8 *); +extern void sub_801B3C0(struct ItemStruct_203B460 *); extern void sub_801A5D8(u32, u32, u32, u32); extern void sub_801C8C4(u32, u32, u32, u32); extern void sub_8012D60(u32 *, u32 *, u32, u32 *, u32, u32); @@ -140,15 +136,15 @@ void sub_8017B88(void) } else { - gUnknown_203B208->unk14 = sub_801CB24(); - sub_8090A8C(&gUnknown_203B208->unkC, gUnknown_203B208->unk14, 0); + gUnknown_203B208->itemIndex = sub_801CB24(); + sub_8090A8C(&gUnknown_203B208->unkC, gUnknown_203B208->itemIndex, 0); gUnknown_203B208->unkC.numItems = 1; UpdateKangaskhanStorageState(0x19); } break; case 4: - gUnknown_203B208->unk14 = sub_801CB24(); - sub_8090A8C(&gUnknown_203B208->unkC, gUnknown_203B208->unk14, 0); + gUnknown_203B208->itemIndex = sub_801CB24(); + sub_8090A8C(&gUnknown_203B208->unkC, gUnknown_203B208->itemIndex, 0); gUnknown_203B208->unkC.numItems = 1; UpdateKangaskhanStorageState(0x1A); break; @@ -198,21 +194,13 @@ void sub_8017C7C(void) { case 2: sub_8099690(0); - if(sub_8091524(gUnknown_203B208->unkC.itemIndex) == 0) - { + if(!sub_8091524(gUnknown_203B208->unkC.itemIndex)) UpdateKangaskhanStorageState(9); - } else - { - if(sub_801ADA0(gUnknown_203B208->unk10) == 0) - { + if(!sub_801ADA0(gUnknown_203B208->unk10)) UpdateKangaskhanStorageState(0xA); - } else - { UpdateKangaskhanStorageState(0x11); - } - } break; case 6: sub_8099690(0); @@ -304,7 +292,7 @@ u32 sub_8017E1C(void) { ResetUnusedInputStruct(); sub_800641C(NULL, 1, 1); - gUnknown_203B20C = MemoryAlloc(0x150, 8); + gUnknown_203B20C = MemoryAlloc(sizeof(struct unkStruct_203B20C), 8); gUnknown_203B20C->unk14 = 0; gUnknown_203B20C->unk18 = 0; gUnknown_203B20C->unk1C = 0; @@ -449,10 +437,10 @@ void sub_8018100(void) case 12: gUnknown_203B20C->unkD0 = 2; gUnknown_203B20C->unkC8 = 1; - if(gUnknown_203B460->unk50[gUnknown_203B20C->unkA] > 0x63) - gUnknown_203B20C->unkCC = 0x63; + if(gUnknown_203B460->unk50[gUnknown_203B20C->unk8.itemIndex] > 99) + gUnknown_203B20C->unkCC = 99; else - gUnknown_203B20C->unkCC = gUnknown_203B460->unk50[gUnknown_203B20C->unkA]; + gUnknown_203B20C->unkCC = gUnknown_203B460->unk50[gUnknown_203B20C->unk8.itemIndex]; gUnknown_203B20C->unkC4 = gUnknown_203B20C->unkCC; gUnknown_203B20C->unkD4 = 1; gUnknown_203B20C->unkD8 = &gUnknown_203B20C->unkF0[1]; diff --git a/src/kecleon_items.c b/src/kecleon_items.c index da049a2..58fead3 100644 --- a/src/kecleon_items.c +++ b/src/kecleon_items.c @@ -2,6 +2,7 @@ #include "file_system.h" #include "pokemon.h" #include "input.h" +#include "item.h" #include "kecleon_items.h" #include "memory.h" diff --git a/src/kecleon_items_1.c b/src/kecleon_items_1.c index 0746f3b..c05e8b9 100644 --- a/src/kecleon_items_1.c +++ b/src/kecleon_items_1.c @@ -2,6 +2,7 @@ #include "file_system.h" #include "pokemon.h" #include "input.h" +#include "item.h" #include "kecleon_items.h" #include "gUnknown_203B460.h" @@ -232,9 +232,9 @@ void InitIntrTable(const u32 *interrupt_table) INTR_VECTOR = IntrMain_Buffer; } -u32 *sub_800B6E8(u32 r0) +u32 *GetInterruptCallback(u32 index) { - return &gIntrTable[r0]; + return &gIntrTable[index]; } void *SetInterruptCallback(u32 index, void * new_callback) diff --git a/src/music_pre.c b/src/music_pre.c index 80968a6..034fe93 100644 --- a/src/music_pre.c +++ b/src/music_pre.c @@ -96,10 +96,8 @@ void VBlankIntr(void) if (gIntrCallbacks[1] != NULL) { gIntrCallbacks[1](); } - index = 0; - while (index < gUnknown_203B0AA) { + for(index = 0; index < gUnknown_203B0AA; index++) { gUnknown_202D648[index] = gUnknown_202D608[index]; - index++; } gUnknown_203B0AC = gUnknown_203B0AA; gUnknown_203B0AE = -1; diff --git a/src/other_menus.c b/src/other_menus.c index 0cfe949..99c8df9 100644 --- a/src/other_menus.c +++ b/src/other_menus.c @@ -1,6 +1,7 @@ #include "global.h" #include "input.h" #include "main_menu.h" +#include "item.h" #include "gUnknown_203B460.h" #include "menu.h" #include "memory.h" diff --git a/src/rescue_team_info.c b/src/rescue_team_info.c index 0f3b0f9..c2a2c8f 100644 --- a/src/rescue_team_info.c +++ b/src/rescue_team_info.c @@ -131,7 +131,7 @@ u8 sub_80921B8(void) return gRescueTeamInfoRef->unk10; } -u32 SaveRescueTeamInfo(u8 *param_1, u32 param_2) +u32 SaveRescueTeamInfo(u8 *param_1, u32 size) { u32 auStack36[4]; @@ -142,7 +142,7 @@ u32 SaveRescueTeamInfo(u8 *param_1, u32 param_2) neg1 = -1; zero = 0; - sub_809486C(auStack36, param_1, param_2); + sub_809486C(auStack36, param_1, size); sub_809488C(auStack36, gRescueTeamInfoRef->teamName, 0x58); sub_809488C(auStack36, (u8 *)&gRescueTeamInfoRef->teamRankPts, 0x20); gRescueTeamInfoRef->unk10 = sub_80023E4(0); @@ -160,12 +160,12 @@ u32 SaveRescueTeamInfo(u8 *param_1, u32 param_2) return auStack36[2]; } -u32 ReadRescueTeamInfo(u8 *param_1, u32 param_2) +u32 ReadRescueTeamInfo(u8 *param_1, u32 size) { u32 auStack32 [4]; u8 byteArray[4]; - sub_809485C(auStack32, param_1, param_2); + sub_809485C(auStack32, param_1, size); sub_8094924(auStack32, gRescueTeamInfoRef->teamName, 0x58); sub_8094924(auStack32, (u8 *)&gRescueTeamInfoRef->teamRankPts, 0x20); sub_8094924(auStack32, byteArray, 1); @@ -89,56 +89,56 @@ ALIGNED(4) const char fill_save1[] = _("pksdir0"); ALIGNED(4) const char fill_save2[] = _("pksdir0"); ALIGNED(4) const char fill_save3[] = _("pksdir0"); -ALIGNED(4) const char gSaveCorrupted[] = _("#+The game data is corrupted.\n" - "#+Your data will be erased."); +ALIGNED(4) const char gSaveCorrupted[] = _("{CENTER_ALIGN}The game data is corrupted.\n" + "{CENTER_ALIGN}Your data will be erased."); ALIGNED(4) const char fill_save4[] = _("pksdir0"); -ALIGNED(4) const char gSavingAdventure[] = _("#+Saving your adventure...\n" - "#+Please don~27t turn off the power."); +ALIGNED(4) const char gSavingAdventure[] = _("{CENTER_ALIGN}Saving your adventure...\n" + "{CENTER_ALIGN}Please don~27t turn off the power."); -ALIGNED(4) const char gWriteGamePak[] = _("#+Writing to GBA Game Pak.\n" - "#+Do not remove the GBA Game Pak.\n" - "#+Please wait with the power on."); +ALIGNED(4) const char gWriteGamePak[] = _("{CENTER_ALIGN}Writing to GBA Game Pak.\n" + "{CENTER_ALIGN}Do not remove the GBA Game Pak.\n" + "{CENTER_ALIGN}Please wait with the power on."); -ALIGNED(4) const char gSaveCompleted[] = _("#+Save completed!"); +ALIGNED(4) const char gSaveCompleted[] = _("{CENTER_ALIGN}Save completed!"); -ALIGNED(4) const char gSaveNotWritten[] = _("#+The data could not be written.\n" - "#+Please turn off the power and remove\n" - "#+and reinsert the DS Card."); +ALIGNED(4) const char gSaveNotWritten[] = _("{CENTER_ALIGN}The data could not be written.\n" + "{CENTER_ALIGN}Please turn off the power and remove\n" + "{CENTER_ALIGN}and reinsert the DS Card."); -ALIGNED(4) const char gSaveFailed[] = _("#+Save failed."); +ALIGNED(4) const char gSaveFailed[] = _("{CENTER_ALIGN}Save failed."); ALIGNED(4) const char fill_save5[] = _("pksdir0"); -ALIGNED(4) const char gUnknown_80D44C8[] = _("#+Your data was not properly saved~2c\n" - "#+so your game cannot be resumed\n" - "#+from your last spot.#P" - "#+Your last outing is considered a defeat.\n" - "#+Before shutting down~2c save in your\n" - "#+team base~2c or quicksave in a dungeon."); +ALIGNED(4) const char gUnknown_80D44C8[] = _("{CENTER_ALIGN}Your data was not properly saved~2c\n" + "{CENTER_ALIGN}so your game cannot be resumed\n" + "{CENTER_ALIGN}from your last spot.{EXTRA_MSG}" + "{CENTER_ALIGN}Your last outing is considered a defeat.\n" + "{CENTER_ALIGN}Before shutting down~2c save in your\n" + "{CENTER_ALIGN}team base~2c or quicksave in a dungeon."); ALIGNED(4) const char fill_save6[] = _("pksdir0"); -ALIGNED(4) const char gUnknown_80D45AC[] = _("#+Quicksaving your adventure...\n" - "#+Please don~27t turn off the power."); +ALIGNED(4) const char gUnknown_80D45AC[] = _("{CENTER_ALIGN}Quicksaving your adventure...\n" + "{CENTER_ALIGN}Please don~27t turn off the power."); -ALIGNED(4) const char gUnknown_80D45F4[] = _("#+Your adventure has been saved.\n" - "#+When you are in a dungeon~2c quicksave\n" - "#+your progress before ending the game."); +ALIGNED(4) const char gUnknown_80D45F4[] = _("{CENTER_ALIGN}Your adventure has been saved.\n" + "{CENTER_ALIGN}When you are in a dungeon~2c quicksave\n" + "{CENTER_ALIGN}your progress before ending the game."); -ALIGNED(4) const char gUnknown_80D4668[] = _("#+Your adventure has been saved.\n" - "#+When you resume play~2c the quicksave\n" - "#+data will be deleted.#P" - "#+When you are shutting down the game~2c\n" - "#+save your progress in your team base~2c\n" - "#+or quicksave in a dungeon."); +ALIGNED(4) const char gUnknown_80D4668[] = _("{CENTER_ALIGN}Your adventure has been saved.\n" + "{CENTER_ALIGN}When you resume play~2c the quicksave\n" + "{CENTER_ALIGN}data will be deleted.{EXTRA_MSG}" + "{CENTER_ALIGN}When you are shutting down the game~2c\n" + "{CENTER_ALIGN}save your progress in your team base~2c\n" + "{CENTER_ALIGN}or quicksave in a dungeon."); -ALIGNED(4) const char gSaveNotWritten2[] = _("#+The data could not be written.\n" - "#+Please turn off the power and remove\n" - "#+and reinsert the DS Card."); +ALIGNED(4) const char gSaveNotWritten2[] = _("{CENTER_ALIGN}The data could not be written.\n" + "{CENTER_ALIGN}Please turn off the power and remove\n" + "{CENTER_ALIGN}and reinsert the DS Card."); -ALIGNED(4) const char gSaveFailed2[] = _("#+Save failed."); +ALIGNED(4) const char gSaveFailed2[] = _("{CENTER_ALIGN}Save failed."); ALIGNED(4) const char fill_save7[] = _("pksdir0"); extern volatile struct UnkStruct_203B184 *gUnknown_203B184; diff --git a/src/trade_items_menu.c b/src/trade_items_menu.c index da5abbc..8d20d6c 100644 --- a/src/trade_items_menu.c +++ b/src/trade_items_menu.c @@ -1,6 +1,7 @@ #include "global.h" #include "input.h" #include "trade_items_menu.h" +#include "item.h" #include "gUnknown_203B460.h" #include "memory.h" #include "save.h" @@ -1047,14 +1048,6 @@ void PrintTradeItemsLinkError(u32 errorNum) sub_80141B4(&gUnknown_80E64AC, 0, 0, 0x101); break; default: - case 0x6: - case 0x7: - case 0x8: - case 0x9: - case 0xA: - case 0xB: - case 0xC: - case 0xD: sub_80141B4(&gTradeItemsCommunicationError, 0, 0, 0x101); break; } diff --git a/src/wonder_mail.c b/src/wonder_mail.c index 770a1ff..af16acb 100644 --- a/src/wonder_mail.c +++ b/src/wonder_mail.c @@ -2,32 +2,17 @@ #include "save.h" #include "pokemon.h" #include "file_system.h" +#include "item.h" #include "wonder_mail.h" #include "memory.h" #include "text.h" +#include "sub_8095228.h" #include "gUnknown_203B460.h" extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0; extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4; extern struct unkStruct_203B460 *gUnknown_203B460; -struct unkStruct_8095228 -{ - u8 unk0; - u8 unk1; - u8 unk2; - u8 unk3; - u8 unk4; - u8 padding[0x10 - 0x5]; - u32 unk10; - u8 padding2[0x20 - 0x14]; - struct unkStruct_41C unk20; - u8 padding3[0x28 - 0x24]; - u32 unk28; - s8 unk2C; - u8 padding4[0x30 - 0x2D]; -}; - extern u32 sub_80144A4(s32 *r0); extern void sub_8011C28(u32); extern void sub_8095240(u8); @@ -40,14 +25,13 @@ extern u32 sub_8095350(); extern u8 sub_801CF14(u32); extern u32 sub_802F298(); -extern struct unkStruct_8095228 *sub_8095228(u8); extern u8 sub_80A2824(u32); #include "data/wonder_mail_1.h" -const struct unkStruct_41C gUnknown_80DED44 = +const struct ItemStruct_203B460 gUnknown_80DED44 = { - 1, 0, 0, 0 + 1, 0, 0 }; @@ -186,7 +170,7 @@ extern void sub_803092C(); extern void sub_8035CF4(u32 *, u32, u32); extern u32 sub_801CA08(u32); extern void sub_801CBB8(); -extern void sub_801B3C0(struct unkStruct_41C *); +extern void sub_801B3C0(struct ItemStruct_203B460 *); extern u8 sub_801CB24(); extern void sub_801B450(); extern u32 sub_801B410(); @@ -302,13 +286,6 @@ void sub_8028BF0(void) case 3: sub_8028B04(11); break; - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - break; case 10: sub_8028B04(2); break; @@ -890,16 +867,6 @@ void sub_80293F4(void) case 3: switch(sub_8039068(0x1C, (gUnknown_203B2C0->passwordBuffer), &temp.unk0)) { - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - break; case 17: sub_8014248(gWonderMailPasswordIncorrectText, 0, 8, &gUnknown_80DDA48, 0, 4, 0, (u32 *)&gUnknown_203B2C0->faceFile, 0xC); sub_8028B04(40); @@ -912,10 +879,6 @@ void sub_80293F4(void) sub_80141B4(gWonderMailDuplicateText, 0, (u32 *)&gUnknown_203B2C0->faceFile, 0x10d); sub_8028B04(7); break; - case 19: - case 20: - case 21: - break; case 22: sub_8095274(temp.unk10); temp.unk0 = 2; // Some sort of Ack? @@ -1573,11 +1536,8 @@ void PrintWonderMailLinkError(u32 param_1) sub_80141B4(gUnknown_80DF138,0,(u32 *)&gUnknown_203B2C4->faceFile, 0x10d); break; case 0: - case 8: - case 10: - case 12: default: - return; + break; } } @@ -1588,10 +1548,10 @@ void sub_8029F98(void) if (sub_80144A4(&auStack20) != 0) { return; } - MemoryFill8((u8 *)&gUnknown_203B2C4->unk41C, 0, sizeof(struct unkStruct_41C)); - gUnknown_203B2C4->unk41C.unk41E = 0; - gUnknown_203B2C4->unk41C.unk41D = 1; - gUnknown_203B2C4->unk41C.unk41C = 0; + MemoryFill8((u8 *)&gUnknown_203B2C4->unk41C, 0, sizeof(struct ItemStruct_203B460)); + gUnknown_203B2C4->unk41C.itemIndex = 0; + gUnknown_203B2C4->unk41C.numItems = 1; + gUnknown_203B2C4->unk41C.unk0 = 0; if (gUnknown_203B2C4->linkError == 0) { switch(gUnknown_203B2C4->unk40) { @@ -1757,9 +1717,9 @@ void sub_802A230(void) void sub_802A28C(void) { - gUnknown_203B2C4->unk41C.unk41E = 0; - gUnknown_203B2C4->unk41C.unk41D = 1; - gUnknown_203B2C4->unk41C.unk41C = 0; + gUnknown_203B2C4->unk41C.itemIndex = 0; + gUnknown_203B2C4->unk41C.numItems = 1; + gUnknown_203B2C4->unk41C.unk0 = 0; switch(sub_801CA08(1)) { @@ -1768,12 +1728,12 @@ void sub_802A28C(void) sub_802B2BC(1); break; case 3: - gUnknown_203B2C4->unk41C.unk41E = sub_801CB24(); + gUnknown_203B2C4->unk41C.itemIndex = sub_801CB24(); sub_802B2BC(0x14); break; case 4: gUnknown_203B2C4->unk4 = 0x13; - gUnknown_203B2C4->unk41C.unk41E = sub_801CB24(); + gUnknown_203B2C4->unk41C.itemIndex = sub_801CB24(); sub_8006518(gUnknown_203B2C4->unk3BC); ResetUnusedInputStruct(); sub_800641C(0,1,1); @@ -1911,15 +1871,6 @@ void sub_802A50C(void) case 3: switch(sub_8039068(0x20,gUnknown_203B2C4->passwordBuffer,&temp.unk0)) { - case 7: - case 8: - case 9: - case 0xA: - case 0xD: - case 0xE: - case 0xF: - case 0x10: - break; case 0x11: // Wrong password sub_8014248(gUnknown_80DF1C0,0,7,&gUnknown_80DEE44,0,4,0,(u32 *)&gUnknown_203B2C4->faceFile,0xc); @@ -1945,6 +1896,7 @@ void sub_802A50C(void) sub_802B2BC(0x21); break; default: + case 7: break; } sub_80155F0(); @@ -2051,11 +2003,11 @@ void sub_802A798(void) { case 7: return_var = sub_8095228(gUnknown_203B2C4->unk218); - if(gUnknown_203B2C4->unk41C.unk41E != 0) + if(gUnknown_203B2C4->unk41C.itemIndex != 0) { return_var->unk20 = gUnknown_203B2C4->unk41C; } - gUnknown_203B460->unk50[gUnknown_203B2C4->unk41C.unk41E]--; + gUnknown_203B460->unk50[gUnknown_203B2C4->unk41C.itemIndex]--; sub_802B2BC(0x29); break; case 8: @@ -2240,7 +2192,7 @@ void sub_802AA28(void) { case 1: return_var = sub_8095228(sub_80953D4(5)); - if(return_var->unk20.unk41E != 0) + if(return_var->unk20.itemIndex != 0) { sub_802B2BC(7); } diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c index 62e4b00..25e5df0 100644 --- a/src/wonder_mail_2.c +++ b/src/wonder_mail_2.c @@ -6,6 +6,7 @@ #include "text.h" #include "save.h" #include "wonder_mail.h" +#include "sub_8095228.h" extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4; @@ -43,26 +44,8 @@ struct unkStruct_203B2C8 extern struct unkStruct_203B2C8 *gUnknown_203B2C8; -struct unkStruct_8095228 -{ - u8 unk0; - u8 unk1; - u8 unk2; - u8 unk3; - u8 unk4; - u8 padding[0x10 - 0x5]; - u32 unk10; - u8 padding2[0x20 - 0x14]; - u32 unk20; - u8 padding3[0x28 - 0x24]; - u32 unk28; - s8 unk2C; - u8 padding4[0x30 - 0x2D]; -}; - extern void sub_80920D8(u8 *buffer); extern void sub_8097790(); -extern struct unkStruct_8095228 *sub_8095228(u8); extern char gUnknown_202E5D8[0x50]; extern char gAvailablePokemonNames[0x50]; extern u32 sub_802F298(); |