diff options
author | Marcus Huderle <huderlem@gmail.com> | 2017-11-03 22:35:38 -0700 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2017-11-03 22:35:38 -0700 |
commit | a5754b95e8a1803c87641e5bc485a3690fbcaef7 (patch) | |
tree | cfe2fa3e45384d5bf643a7c5e13a6f8810aa8f34 | |
parent | 34fad4a4556cddf8a6416ab11cd18927ebdb3228 (diff) |
Fix non-matching sub_80EEF34 and start more decomp
-rw-r--r-- | asm/pokenav.s | 40 | ||||
-rw-r--r-- | include/pokenav.h | 13 | ||||
-rw-r--r-- | src/field/use_pokeblock.c | 2 | ||||
-rw-r--r-- | src/pokenav_before.c | 91 |
4 files changed, 44 insertions, 102 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s index 14f4a97ac..d228ac443 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -6,46 +6,6 @@ .text - thumb_func_start sub_80EEF78 -sub_80EEF78: @ 80EEF78 - push {r4,lr} - movs r3, 0x1 - ldr r0, _080EEF94 @ =gUnknown_083DFEC4 - ldr r0, [r0] - movs r1, 0xC3 - lsls r1, 2 - adds r2, r0, r1 - ldrh r1, [r2] - movs r4, 0 - ldrsh r0, [r2, r4] - cmp r0, 0 - bne _080EEF98 - movs r0, 0 - b _080EEFB0 - .align 2, 0 -_080EEF94: .4byte gUnknown_083DFEC4 -_080EEF98: - subs r0, r1, 0x2 - strh r0, [r2] - lsls r0, 16 - cmp r0, 0 - bgt _080EEFA8 - movs r0, 0 - strh r0, [r2] - movs r3, 0 -_080EEFA8: - ldr r1, _080EEFB8 @ =REG_BG1VOFS - ldrh r0, [r2] - strh r0, [r1] - adds r0, r3, 0 -_080EEFB0: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080EEFB8: .4byte REG_BG1VOFS - thumb_func_end sub_80EEF78 - thumb_func_start sub_80EEFBC sub_80EEFBC: @ 80EEFBC push {r4-r7,lr} diff --git a/include/pokenav.h b/include/pokenav.h index 70cc4135f..98806983c 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -30,15 +30,22 @@ struct UnkPokenavStruct_Sub2 { /*0x26*/ u16 unk26; }; +struct UnkPokenavStruct_Sub3 { + /*0x00*/s16 unk0; +}; + struct UnkUsePokeblockSub { /*0*/ u8 fil0[2]; /*2*/ u8 partyIdx:5; }; struct UnkPokenavStruct { - /*0x0000*/ u8 filler0000[0x30c]; - /*0x0000*/ u16 unk030C; - /*0x0000*/ u8 filler030E[0x6a9e]; + /*0x0000*/ u8 filler0000[0x30C]; + /*0x030C*/ union { // TODO: what? + u16 val; + struct UnkPokenavStruct_Sub3 unk030C; + } unk030C; + /*0x0310*/ u8 filler030E[0x6a9c]; /*0x6DAC*/ u8 unk6DAC; /*0x6DAD*/ u8 filler6DAD[0x8fd]; /*0x76AA*/ u8 unk76AA; diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index e946a9cfc..bac231856 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -244,7 +244,7 @@ static void sub_8136294(void) case 6: gUnknown_083DFEC4->unk76AA = 0; gUnknown_083DFEC4->unk87E0 = NULL; - gUnknown_083DFEC4->unk030C = 0x20; + gUnknown_083DFEC4->unk030C.val = 0x20; gUnknown_02039304->unk50++; break; case 7: diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 783d42326..dfac1328b 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -2897,7 +2897,7 @@ bool8 sub_80EEE54() { sub_80EF58C(2); break; case 4: - gUnknown_083DFEC4->unk030C = 0; + gUnknown_083DFEC4->unk030C.unk030C.unk0 = 0; REG_BG1HOFS = 0; REG_BG1VOFS = 0; REG_BG1CNT = 0x1B0C; @@ -2909,66 +2909,41 @@ bool8 sub_80EEE54() { return 1; } -#if 0 -// not matches because of register differences bool8 sub_80EEF34() { - bool8 ret = 0x1; - if ((s8)gUnknown_083DFEC4->unk030C == 0x20) { - return 0; + bool8 retVal = TRUE; + + if (gUnknown_083DFEC4->unk030C.unk030C.unk0 == 32) + { + return FALSE; } - else { - gUnknown_083DFEC4->unk030C += 2; - if (gUnknown_083DFEC4->unk030C > 0x1F) { - gUnknown_083DFEC4->unk030C = 0x20; - ret = 0; - } - REG_BG1VOFS = gUnknown_083DFEC4->unk030C; - return ret; + + gUnknown_083DFEC4->unk030C.unk030C.unk0 += 2; + if (gUnknown_083DFEC4->unk030C.unk030C.unk0 > 31) + { + gUnknown_083DFEC4->unk030C.unk030C.unk0 = 32; + retVal = FALSE; } + + REG_BG1VOFS = gUnknown_083DFEC4->unk030C.unk030C.unk0; + return retVal; } -#else -__attribute__((naked)) -bool8 sub_80EEF34() { - asm(".text\n" - ".include \"constants/gba_constants.inc\""); - asm_unified( - "push {r4,lr}\n\ - movs r3, 0x1\n\ - ldr r0, _080EEF50 @ =gUnknown_083DFEC4\n\ - ldr r0, [r0]\n\ - movs r1, 0xC3\n\ - lsls r1, 2\n\ - adds r2, r0, r1\n\ - ldrh r1, [r2]\n\ - movs r4, 0\n\ - ldrsh r0, [r2, r4]\n\ - cmp r0, 0x20\n\ - bne _080EEF54\n\ - movs r0, 0\n\ - b _080EEF6E\n\ - .align 2, 0\n\ -_080EEF50: .4byte gUnknown_083DFEC4\n\ -_080EEF54:\n\ - adds r0, r1, 0x2\n\ - strh r0, [r2]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x1F\n\ - ble _080EEF66\n\ - movs r0, 0x20\n\ - strh r0, [r2]\n\ - movs r3, 0\n\ -_080EEF66:\n\ - ldr r1, _080EEF74 @ =REG_BG1VOFS\n\ - ldrh r0, [r2]\n\ - strh r0, [r1]\n\ - adds r0, r3, 0\n\ -_080EEF6E:\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_080EEF74: .4byte REG_BG1VOFS"); +bool8 sub_80EEF78(void) +{ + bool8 retVal = TRUE; + + if (gUnknown_083DFEC4->unk030C.unk030C.unk0 == 0) + { + return FALSE; + } + + gUnknown_083DFEC4->unk030C.unk030C.unk0 -= 2; + if (gUnknown_083DFEC4->unk030C.unk030C.unk0 <= 0) + { + gUnknown_083DFEC4->unk030C.unk030C.unk0 = 0; + retVal = FALSE; + } + + REG_BG1VOFS = gUnknown_083DFEC4->unk030C.unk030C.unk0; + return retVal; } -#endif |