diff options
-rw-r--r-- | asm/pokenav.s | 62 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/pokenav.c | 45 |
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; +} |