summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-10-01 10:11:39 -0400
committerhuderlem <huderlem@gmail.com>2019-04-06 08:16:13 -0500
commit50be36be3ff73ca95249e684f7b8f7f27e622f32 (patch)
treea2a7b87e16d0d6a76ed69e59a1d5ce30a50357e9
parent3e3fa6f622d0be19e7e86936286872f6415f4f16 (diff)
through sub_80F567C
-rw-r--r--asm/pokenav.s120
-rw-r--r--data/pokenav.s4
-rw-r--r--include/pokenav.h4
-rw-r--r--ld_script.txt2
-rw-r--r--src/pokenav.c41
-rw-r--r--src/use_pokeblock.c2
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;