summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2021-07-07 11:39:34 -0500
committerSeth Barberee <seth.barberee@gmail.com>2021-07-07 11:39:34 -0500
commit6aa475c6310c609743a9a2005e7942050c396865 (patch)
tree18be7369829badfef35a6c337005e875049027e5 /src
parentf308c79eba1ba8e6bc2134529a2e4f4f21c9c2c2 (diff)
Sese's vacation work
Diffstat (limited to 'src')
-rw-r--r--src/adventure_log.c4
-rw-r--r--src/code_2.c2
-rw-r--r--src/code_801AFA4.c1
-rw-r--r--src/code_801B3C0.c20
-rw-r--r--src/code_801D760.c1
-rw-r--r--src/code_8092334.c160
-rw-r--r--src/code_80958E8.c25
-rw-r--r--src/code_8097670.c17
-rw-r--r--src/code_8098BDC.c3
-rw-r--r--src/debug.c10
-rw-r--r--src/debug_menu_mid.c10
-rw-r--r--src/exclusive_pokemon_1.c125
-rw-r--r--src/felicity_bank_1.c1
-rw-r--r--src/flash.c4
-rw-r--r--src/friend_area_1.c12
-rw-r--r--src/friend_area_action_menu.c11
-rw-r--r--src/friend_area_action_menu_1.c11
-rw-r--r--src/friend_rescue.c4
-rw-r--r--src/friend_rescue_1.c384
-rw-r--r--src/items.c25
-rw-r--r--src/kangaskhan_storage.c1
-rw-r--r--src/kangaskhan_storage_1.c1
-rw-r--r--src/kangaskhan_storage_2.c42
-rw-r--r--src/kecleon_items.c1
-rw-r--r--src/kecleon_items_1.c1
-rw-r--r--src/main.c4
-rw-r--r--src/music_pre.c4
-rw-r--r--src/other_menus.c1
-rw-r--r--src/rescue_team_info.c8
-rw-r--r--src/save.c66
-rw-r--r--src/trade_items_menu.c9
-rw-r--r--src/wonder_mail.c86
-rw-r--r--src/wonder_mail_2.c19
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"
diff --git a/src/main.c b/src/main.c
index d18d0de..7890a1a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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);
diff --git a/src/save.c b/src/save.c
index ef09572..f679cbd 100644
--- a/src/save.c
+++ b/src/save.c
@@ -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();