summaryrefslogtreecommitdiff
path: root/src/friend_rescue_1.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/friend_rescue_1.c')
-rw-r--r--src/friend_rescue_1.c384
1 files changed, 383 insertions, 1 deletions
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)
{
}