diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-10-01 10:11:39 -0400 |
---|---|---|
committer | huderlem <huderlem@gmail.com> | 2019-04-06 08:16:13 -0500 |
commit | 50be36be3ff73ca95249e684f7b8f7f27e622f32 (patch) | |
tree | a2a7b87e16d0d6a76ed69e59a1d5ce30a50357e9 | |
parent | 3e3fa6f622d0be19e7e86936286872f6415f4f16 (diff) |
through sub_80F567C
-rw-r--r-- | asm/pokenav.s | 120 | ||||
-rw-r--r-- | data/pokenav.s | 4 | ||||
-rw-r--r-- | include/pokenav.h | 4 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/pokenav.c | 41 | ||||
-rw-r--r-- | src/use_pokeblock.c | 2 |
6 files changed, 47 insertions, 126 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s index 562211a00..3e6270302 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -5,126 +5,6 @@ .text - thumb_func_start sub_80F55AC -sub_80F55AC: @ 80F55AC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r6, r0, 0 - mov r8, r1 - ldr r1, _080F5674 @ =gUnknown_083E4890 - ldrb r0, [r6] - adds r0, r1 - ldrb r2, [r0] - adds r6, 0x1 - movs r0, 0x9B - mov r3, r8 - strh r0, [r3] - movs r0, 0x5B - subs r0, r2 - strh r0, [r3, 0x2] - movs r7, 0x40 - movs r0, 0 - mov r12, r0 - movs r2, 0x1 - mov r9, r2 - ldr r3, _080F5678 @ =gSineTable - mov r10, r3 -_080F55DE: - adds r0, r7, 0 - adds r0, 0x33 - lsls r0, 24 - lsrs r7, r0, 24 - mov r1, r12 - lsls r0, r1, 24 - movs r2, 0xFF - lsls r2, 24 - adds r0, r2 - lsrs r3, r0, 24 - mov r12, r3 - cmp r0, 0 - bge _080F55FC - movs r0, 0x4 - mov r12, r0 -_080F55FC: - mov r1, r12 - lsls r0, r1, 24 - asrs r4, r0, 24 - cmp r4, 0x2 - bne _080F560C - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 -_080F560C: - ldrb r0, [r6] - ldr r2, _080F5674 @ =gUnknown_083E4890 - adds r0, r2 - ldrb r2, [r0] - adds r6, 0x1 - lsls r0, r4, 2 - mov r1, r8 - adds r3, r0, r1 - adds r0, r7, 0 - adds r0, 0x40 - lsls r0, 1 - add r0, r10 - movs r1, 0 - ldrsh r0, [r0, r1] - muls r0, r2 - asrs r5, r0, 8 - adds r0, r5, 0 - adds r0, 0x9B - strh r0, [r3] - lsls r0, r7, 1 - add r0, r10 - movs r1, 0 - ldrsh r0, [r0, r1] - adds r1, r2, 0 - muls r1, r0 - asrs r1, 8 - movs r0, 0x5B - subs r0, r1 - strh r0, [r3, 0x2] - cmp r4, 0x2 - bgt _080F5658 - cmp r2, 0x20 - bne _080F5652 - cmp r4, 0x2 - beq _080F5658 -_080F5652: - adds r0, r5, 0 - adds r0, 0x9C - strh r0, [r3] -_080F5658: - mov r0, r9 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - cmp r0, 0x4 - bls _080F55DE - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F5674: .4byte gUnknown_083E4890 -_080F5678: .4byte gSineTable - thumb_func_end sub_80F55AC - - thumb_func_start sub_80F567C -sub_80F567C: @ 80F567C - push {lr} - bl sub_80F55AC - pop {r0} - bx r0 - thumb_func_end sub_80F567C - thumb_func_start sub_80F5688 sub_80F5688: @ 80F5688 push {r4-r7,lr} diff --git a/data/pokenav.s b/data/pokenav.s index 485568157..4361e2f14 100644 --- a/data/pokenav.s +++ b/data/pokenav.s @@ -4,10 +4,6 @@ .section .rodata .align 2 -gUnknown_083DFEC4:: @ 83DFEC4 - .4byte gSharedMem - - .align 2 gUnknown_083DFEC8:: @ 83DFEC8 .4byte gTileBuffer diff --git a/include/pokenav.h b/include/pokenav.h index a72cea9c4..c89db2051 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -1,6 +1,7 @@ #ifndef GUARD_POKENAV_H #define GUARD_POKENAV_H +#include "main.h" #include "region_map.h" #include "mon_markings.h" @@ -217,7 +218,8 @@ void sub_80F3C94(void); void sub_80F3D00(void); void sub_80F4BD0(void); void sub_80F556C(struct UnkPokenav11*); -void sub_80F567C(void *, void *); +void sub_80F55AC(u8 *a0, struct UnkPokenav11 a1[]); +void sub_80F567C(u8 *, struct UnkPokenav11 *); void sub_80F5B38(void); bool8 sub_80F5B50(void); void sub_80F5CDC(u8); diff --git a/ld_script.txt b/ld_script.txt index b86ed6df8..4cae078bf 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -295,6 +295,7 @@ SECTIONS { src/easy_chat_1.o(.text); src/easy_chat_2.o(.text); src/pokenav_before.o(.text); + src/pokenav.o(.text); asm/pokenav.o(.text); src/pokenav_after.o(.text); asm/pokenav.o(.text_80F708C); @@ -696,6 +697,7 @@ SECTIONS { src/easy_chat_1.o(.rodata); src/easy_chat_2.o(.rodata); src/easy_chat_2.o(.data); + src/pokenav.o(.rodata); data/pokenav.o(.rodata); src/mon_markings.o(.rodata); src/mauville_man.o(.rodata); diff --git a/src/pokenav.c b/src/pokenav.c index f57a98df6..7e15d3469 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -1,6 +1,9 @@ // Includes #include "global.h" +#include "ewram.h" +#include "trig.h" +#include "pokenav.h" // Static type declarations @@ -13,4 +16,42 @@ EWRAM_DATA u16 gUnknown_020388B4 = 0; // .rodata +struct UnkPokenavStruct *const gUnknown_083DFEC4 = (struct UnkPokenavStruct *)gSharedMem; + +extern const u8 gUnknown_083E4890[]; + // .text + +void sub_80F55AC(u8 *a0, struct UnkPokenav11 a1[]) +{ + u16 i; + u8 r2 = gUnknown_083E4890[*a0++]; + u8 r7; + s8 r12; + + a1[0].unk0 = 0x9b; + a1[0].unk2 = 0x5b - r2; + + r7 = 0x40; + r12 = 0; + for (i = 1; i < 5; i++) + { + r7 += 0x33; + r12--; + if (r12 < 0) + r12 = 4; + if (r12 == 2) + r7++; + r2 = gUnknown_083E4890[*a0++]; + a1[r12].unk0 = ((r2 * gSineTable[r7 + 0x40]) >> 8) + 0x9b; + a1[r12].unk2 = 0x5b - ((r2 * gSineTable[r7]) >> 8); + + if (r12 <= 2 && (r2 != 0x20 || r12 != 2)) + a1[r12].unk0 = ((r2 * gSineTable[r7 + 0x40]) >> 8) + 0x9c; + } +} + +void sub_80F567C(u8 *a0, struct UnkPokenav11 a1[]) +{ + sub_80F55AC(a0, a1); +} diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index c8506fbcf..5bfe47845 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -306,7 +306,7 @@ static void sub_8136294(void) gUnknown_02039304->unk50++; break; case 17: - sub_80F567C(&gUnknown_083DFEC4->unk8ff0, gUnknown_083DFEC4->unk9004); + sub_80F567C(gUnknown_083DFEC4->unk8ff0[0], gUnknown_083DFEC4->unk9004[0]); sub_80F5B38(); gUnknown_02039304->unk50++; break; |