diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2020-11-22 17:37:48 -0600 |
---|---|---|
committer | Seth Barberee <seth.barberee@gmail.com> | 2020-11-22 17:37:48 -0600 |
commit | fc7f14ab66ff8e23cd758a9435f8ac48e99ae75f (patch) | |
tree | 019034cb352fb592ede2f54fff60f003357789ef | |
parent | 0c3daaaabd4c940986950b3e6dae315e20eafd95 (diff) |
random assortment of decomp work and fix of nonmatchings
-rw-r--r-- | asm/code_80118A4.s | 20 | ||||
-rw-r--r-- | asm/code_80A7714.s | 55 | ||||
-rw-r--r-- | asm/save1.s | 123 | ||||
-rw-r--r-- | src/code_80118A4.c | 18 | ||||
-rw-r--r-- | src/code_80A7714.c | 38 | ||||
-rw-r--r-- | src/pokemon_1.c | 33 | ||||
-rw-r--r-- | src/save_mid.c | 71 |
7 files changed, 131 insertions, 227 deletions
diff --git a/asm/code_80118A4.s b/asm/code_80118A4.s index 4fbfa06..5a097ed 100644 --- a/asm/code_80118A4.s +++ b/asm/code_80118A4.s @@ -5,26 +5,6 @@ .text - thumb_func_start PrintFuncFileLine -PrintFuncFileLine: - push {r4,r5,lr} - sub sp, 0x8 - ldr r5, _08011AC4 - ldr r3, [r1, 0x8] - ldr r4, [r1] - str r4, [sp] - ldr r1, [r1, 0x4] - str r1, [sp, 0x4] - adds r1, r5, 0 - bl sprintf - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08011AC4: .4byte gUnknown_80D41C4 - thumb_func_end PrintFuncFileLine - @ Unused thumb_func_start PrintMessageWithFuncFileLine PrintMessageWithFuncFileLine: diff --git a/asm/code_80A7714.s b/asm/code_80A7714.s index ea1c722..48ee9ba 100644 --- a/asm/code_80A7714.s +++ b/asm/code_80A7714.s @@ -5,61 +5,6 @@ .text - thumb_func_start sub_80A77A0 -sub_80A77A0: - push {lr} - lsls r0, 16 - asrs r1, r0, 16 - adds r2, r1, 0 - ldr r0, _080A77BC - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r0, r1 - beq _080A77CA - cmp r1, 0 - bge _080A77C0 - bl sub_80A7784 - b _080A77C6 - .align 2, 0 -_080A77BC: .4byte gUnknown_2039DE0 -_080A77C0: - adds r0, r2, 0 - bl sub_80A7764 -_080A77C6: - movs r0, 0x1 - b _080A77CC -_080A77CA: - movs r0, 0 -_080A77CC: - pop {r1} - bx r1 - thumb_func_end sub_80A77A0 - - thumb_func_start sub_80A77D0 -sub_80A77D0: - push {lr} - lsls r0, 16 - asrs r1, r0, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _080A77E8 - ldr r0, _080A77E4 - b _080A77F0 - .align 2, 0 -_080A77E4: .4byte gUnknown_8117EFC -_080A77E8: - ldr r0, _080A77F4 - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] -_080A77F0: - pop {r1} - bx r1 - .align 2, 0 -_080A77F4: .4byte gUnknown_811E258 - thumb_func_end sub_80A77D0 - thumb_func_start sub_80A77F8 sub_80A77F8: push {r4,r5,lr} diff --git a/asm/save1.s b/asm/save1.s index 543552e..52eb5c8 100644 --- a/asm/save1.s +++ b/asm/save1.s @@ -5,129 +5,6 @@ .text - thumb_func_start sub_8012484 -sub_8012484: - push {r4,r5,lr} - sub sp, 0x8 - ldr r1, _080124A0 - ldr r0, [r1] - ldr r0, [r0] - adds r4, r1, 0 - cmp r0, 0x6 - bhi _0801254C - lsls r0, 2 - ldr r1, _080124A4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080124A0: .4byte gUnknown_203B188 -_080124A4: .4byte _080124A8 - .align 2, 0 -_080124A8: - .4byte _080124C4 - .4byte _080124CC - .4byte _080124E8 - .4byte _0801251C - .4byte _08012534 - .4byte _0801254C - .4byte _08012548 -_080124C4: - ldr r1, [r4] - movs r0, 0x1 - str r0, [r1] - b _0801254C -_080124CC: - movs r0, 0 - str r0, [sp] - mov r0, sp - bl sub_8011DAC - ldr r1, _080124E4 - ldr r1, [r1] - str r0, [r1, 0x4] - movs r0, 0x2 - str r0, [r1] - b _0801254C - .align 2, 0 -_080124E4: .4byte gUnknown_203B188 -_080124E8: - adds r5, r4, 0 - ldr r1, [r5] - ldr r0, [r1, 0x4] - cmp r0, 0 - beq _0801253C - bl sub_8011FF8 - lsls r0, 24 - cmp r0, 0 - beq _08012518 - ldr r0, _08012510 - ldr r3, _08012514 - movs r1, 0 - movs r2, 0 - bl sub_80141B4 - ldr r1, [r5] - movs r0, 0x3 - str r0, [r1] - b _0801254C - .align 2, 0 -_08012510: .4byte gUnknown_80D4354 -_08012514: .4byte 0x00000301 -_08012518: - ldr r1, [r4] - b _0801252A -_0801251C: - add r0, sp, 0x4 - bl sub_80144A4 - cmp r0, 0 - bne _0801254C - ldr r0, _08012530 - ldr r1, [r0] -_0801252A: - movs r0, 0x4 - str r0, [r1] - b _0801254C - .align 2, 0 -_08012530: .4byte gUnknown_203B188 -_08012534: - bl sub_8012298 - ldr r0, _08012544 - ldr r1, [r0] -_0801253C: - movs r0, 0x6 - str r0, [r1] - b _0801254C - .align 2, 0 -_08012544: .4byte gUnknown_203B188 -_08012548: - movs r0, 0 - b _0801254E -_0801254C: - movs r0, 0x1 -_0801254E: - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8012484 - - thumb_func_start sub_8012558 -sub_8012558: - push {r4,lr} - ldr r4, _08012570 - ldr r0, [r4] - cmp r0, 0 - beq _0801256A - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0801256A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08012570: .4byte gUnknown_203B188 - thumb_func_end sub_8012558 - thumb_func_start sub_8012574 sub_8012574: push {r4-r6,lr} 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; + } +} |