summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokenav.s62
-rw-r--r--ld_script.txt2
-rw-r--r--src/pokenav.c45
3 files changed, 48 insertions, 61 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s
index 966285ab3..757a2a5a2 100644
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -22849,67 +22849,7 @@ sub_80F6FFC: @ 80F6FFC
_080F7008: .4byte REG_BLDCNT
thumb_func_end sub_80F6FFC
- thumb_func_start sub_80F700C
-sub_80F700C: @ 80F700C
- push {r4,r5,lr}
- lsls r1, 16
- lsrs r1, 16
- ldr r2, _080F7078 @ =gUnknown_083DFEC4
- ldr r4, [r2]
- lsls r2, r1, 3
- adds r2, r4, r2
- ldr r3, _080F707C @ =0x0000cee8
- adds r2, r3
- ldrh r3, [r2]
- lsls r2, r3, 2
- adds r2, r3
- lsls r2, 3
- ldr r3, _080F7080 @ =gTrainers
- adds r5, r2, r3
- adds r3, r0, 0
- ldr r0, _080F7084 @ =0x0000d158
- adds r4, r0
- ldrh r4, [r4]
- cmp r1, r4
- bcs _080F7060
- ldrb r1, [r5, 0x1]
- movs r0, 0xD
- muls r1, r0
- ldr r0, _080F7088 @ =gTrainerClassNames
- adds r1, r0
- adds r0, r3, 0
- bl StringCopy
- adds r3, r0, 0
- movs r0, 0xFC
- strb r0, [r3]
- movs r0, 0x13
- strb r0, [r3, 0x1]
- movs r0, 0x4B
- strb r0, [r3, 0x2]
- adds r3, 0x3
- adds r1, r5, 0x4
- adds r0, r3, 0
- bl StringCopy
- adds r3, r0, 0
-_080F7060:
- movs r0, 0xFC
- strb r0, [r3]
- movs r0, 0x13
- strb r0, [r3, 0x1]
- movs r0, 0x80
- strb r0, [r3, 0x2]
- movs r0, 0xFF
- strb r0, [r3, 0x3]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F7078: .4byte gUnknown_083DFEC4
-_080F707C: .4byte 0x0000cee8
-_080F7080: .4byte gTrainers
-_080F7084: .4byte 0x0000d158
-_080F7088: .4byte gTrainerClassNames
- thumb_func_end sub_80F700C
+.section .text_80F708C
thumb_func_start sub_80F708C
sub_80F708C: @ 80F708C
diff --git a/ld_script.txt b/ld_script.txt
index bc820c4d3..25f5460a0 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -193,6 +193,8 @@ SECTIONS {
asm/easy_chat.o(.text);
src/easy_chat.o(.text);
asm/pokenav.o(.text);
+ src/pokenav.o(.text);
+ asm/pokenav.o(.text_80F708C);
asm/mon_markings.o(.text);
src/mauville_old_man.o(.text);
asm/mauville_old_man.o(.text);
diff --git a/src/pokenav.c b/src/pokenav.c
new file mode 100644
index 000000000..60e7c73e1
--- /dev/null
+++ b/src/pokenav.c
@@ -0,0 +1,45 @@
+#include "global.h"
+#include "battle.h"
+#include "string_util.h"
+
+struct UnkPokenavStruct_Sub {
+ /*0x0*/ u16 unk0;
+ /*0x2*/ u8 filler2[6];
+};
+
+
+struct UnkPokenavStruct {
+ /*0x0000*/ u8 filler0000[0xCEE8];
+ /*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78];
+ /*0xD158*/ u16 unkD158;
+
+};
+
+extern struct UnkPokenavStruct *gUnknown_083DFEC4;
+
+extern const struct Trainer gTrainers[];
+extern const u8 gTrainerClassNames[][13];
+
+void sub_80F700C(u8 *arg0, u16 arg1) {
+ struct Trainer *trainer;
+ u8 *ptr;
+
+ trainer = (struct Trainer *) &gTrainers[gUnknown_083DFEC4->unkCEE8[arg1].unk0];
+
+ ptr = arg0;
+ if (arg1 < gUnknown_083DFEC4->unkD158)
+ {
+ ptr = StringCopy(ptr, gTrainerClassNames[trainer->trainerClass]);
+
+ ptr[0] = 0xFC;
+ ptr[1] = 0x13;
+ ptr[2] = 0x4B;
+ ptr += 3;
+ ptr = StringCopy(ptr, trainer->trainerName);
+ }
+
+ ptr[0] = 0xFC;
+ ptr[1] = 0x13;
+ ptr[2] = 0x80;
+ ptr[3] = 0xFF;
+}