summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/code_80118A4.c18
-rw-r--r--src/code_80A7714.c38
-rw-r--r--src/pokemon_1.c33
-rw-r--r--src/save_mid.c71
4 files changed, 131 insertions, 29 deletions
diff --git a/src/code_80118A4.c b/src/code_80118A4.c
index eca4558..3229ea5 100644
--- a/src/code_80118A4.c
+++ b/src/code_80118A4.c
@@ -50,6 +50,7 @@ extern u32 gUnknown_202DE1C;
extern u32 gUnknown_203B14C;
extern const char gNotEntryText;
extern const char gUnknown_80D418C;
+extern char gUnknown_80D41C4;
void sub_8011760(void)
{
@@ -343,3 +344,20 @@ void PrintFuncFileLineOrNotEntry(char * r0, struct unkFileStruct *r1)
"_08011AA0: .4byte gNotEntryText");
#endif
}
+
+void PrintFuncFileLine(char *r0, struct unkFileStruct *r1, u32 r2)
+{
+ volatile u32 temp;
+ volatile u32 temp2;
+ u32 r3;
+ u32 r4;
+ char *preload;
+
+ preload = &gUnknown_80D41C4;
+ r3 = r1->unk8;
+ r4 = r1->unk0;
+ temp = r4;
+ temp2 = r1->unk4;
+
+ sprintf(r0, preload, r2, r3);
+}
diff --git a/src/code_80A7714.c b/src/code_80A7714.c
index ae8798a..035f58b 100644
--- a/src/code_80A7714.c
+++ b/src/code_80A7714.c
@@ -6,6 +6,9 @@ extern void sub_80A7310(u32 r0, u32 r1, u32 r2, u32 r3);
extern void sub_80A7784();
extern s16 gUnknown_2039DE0;
+extern u32 gUnknown_8117EFC;
+extern u32 *gUnknown_811E258[];
+
void sub_80A7714(void)
{
sub_80A68A0();
@@ -44,3 +47,38 @@ void sub_80A7784(void)
gUnknown_2039DE0 = -1;
}
}
+
+u8 sub_80A77A0(s16 r0, u32 r1)
+{
+ s32 temp;
+ s32 temp2;
+ temp = r0;
+ temp2 = temp;
+ if(gUnknown_2039DE0 != temp)
+ {
+ if(temp < 0)
+ {
+ sub_80A7784();
+
+ }
+ else
+ {
+ sub_80A7764(temp2);
+ }
+ return 1;
+ }
+ return 0;
+}
+
+// TODO review this later
+u32 *sub_80A77D0(s16 r0)
+{
+ if(r0 != -1)
+ {
+ return gUnknown_811E258[r0];
+ }
+ else
+ {
+ return &gUnknown_8117EFC;
+ }
+}
diff --git a/src/pokemon_1.c b/src/pokemon_1.c
index c2434e1..5a1eb88 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -45,44 +45,19 @@ void sub_808DD48(s16 r0, struct unkEvolve *r1)
#endif
}
-#ifndef NONMATCHING
-NAKED
-#endif
-// Pretty confided args are correct yet compiler disagrees
u8 sub_808DD68(s16 r0, u32 r1)
{
-#ifdef NONMATCHING
+ // Had to have this cast to match
+ u32 temp;
+ temp = r0;
if (r1 != 0)
{
return 0xA;
}
else
{
- return gMonsterParameters[r0].overworld_sprite;
+ return gMonsterParameters[temp].overworld_sprite;
}
-#else
- asm_unified("\tpush {lr}\n"
- "\tlsls r0, 16\n"
- "\tasrs r2, r0, 16\n"
- "\tcmp r1, 0\n"
- "\tbne _0808DD88\n"
- "\tldr r0, _0808DD84\n"
- "\tldr r1, [r0]\n"
- "\tlsls r0, r2, 3\n"
- "\tadds r0, r2\n"
- "\tlsls r0, 3\n"
- "\tadds r0, r1\n"
- "\tldrb r0, [r0, 0x8]\n"
- "\tb _0808DD8A\n"
- "\t.align 2, 0\n"
-"_0808DD84: .4byte gMonsterParameters\n"
-"_0808DD88:\n"
- "\tmovs r0, 0xA\n"
-"_0808DD8A:\n"
- "\tpop {r1}\n"
- "\tbx r1");
-
-#endif
}
#ifndef NONMATCHING
diff --git a/src/save_mid.c b/src/save_mid.c
index 13e9cbf..ddf6d4d 100644
--- a/src/save_mid.c
+++ b/src/save_mid.c
@@ -37,6 +37,7 @@ extern u32 *gUnknown_203B48C;
extern u32 gUnknown_203B490;
extern u32 gUnknown_203B494;
extern u8 *gUnknown_203B498;
+extern u32 gUnknown_80D4354;
extern void sub_800135C(void);
extern u32 *sub_808CE00(void);
@@ -80,13 +81,19 @@ extern u32 *sub_809769C(void);
u32 *sub_8011C4C(void);
extern void sub_80958E4(u8 *a, u32 b);
extern s32 WriteSaveSector(s32 *a, u8 *src, s32 size);
+extern u32 sub_8011DAC(u32 *a);
+extern u32 sub_80144A4(u32 *a);
+extern bool8 sub_8011FF8(void);
+extern void sub_80141B4(u32 *r0, u32 r1, u32 r2, u16 r3);
+void sub_8012298();
void sub_80122D0();
void sub_80122F4();
void sub_8012300();
void sub_80976A8();
void sub_80122A8();
+
s32 sub_80121D4(s32 *a, u8 *src, s32 size)
{
return WriteSaveSector(a, src, size);
@@ -238,3 +245,67 @@ void sub_8012468(void)
gUnknown_203B188->unk0 = 1;
}
+
+u8 sub_8012484(void)
+{
+ u32 temp;
+ u32 temp2;
+ switch(gUnknown_203B188->unk0)
+ {
+ case 0:
+ gUnknown_203B188->unk0 = 1;
+ break;
+ case 1:
+ temp = 0;
+ gUnknown_203B188->unk4 = sub_8011DAC(&temp);
+ gUnknown_203B188->unk0 = 2;
+ break;
+ case 2:
+ if(gUnknown_203B188->unk4 != 0)
+ {
+ if(sub_8011FF8())
+ {
+ sub_80141B4(&gUnknown_80D4354, 0, 0, 0x301);
+ gUnknown_203B188->unk0 = 3;
+ break;
+ }
+ else
+ {
+ gUnknown_203B188->unk0 = 4;
+ break;
+ }
+ }
+ else
+ {
+ gUnknown_203B188->unk0 = 6;
+ break;
+ }
+ case 3:
+ if(sub_80144A4(&temp2) == 0)
+ {
+ gUnknown_203B188->unk0 = 4;
+ break;
+ }
+ else
+ {
+ break;
+ }
+ case 4:
+ sub_8012298();
+ gUnknown_203B188->unk0 = 6;
+ case 5:
+ break;
+ case 6:
+ return 0;
+ }
+ return 1;
+}
+
+void sub_8012558(void)
+{
+ if(gUnknown_203B188 != NULL)
+ {
+ MemoryFree(gUnknown_203B188);
+ gUnknown_203B188 = NULL;
+ }
+}