summaryrefslogtreecommitdiff
path: root/src/code_80118A4.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/code_80118A4.c')
-rw-r--r--src/code_80118A4.c62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/code_80118A4.c b/src/code_80118A4.c
index c809bdb..aedcb2e 100644
--- a/src/code_80118A4.c
+++ b/src/code_80118A4.c
@@ -25,18 +25,31 @@ extern void nullsub_31(void);
extern void nullsub_32(void);
extern void nullsub_28(void);
+extern int sprintf(char *, const char *, ...);
+
struct UnkStructType
{
/* 0x0 */ s16 unk0;
};
+
+struct unkFileStruct
+{
+ u32 unk0;
+ u32 unk4;
+ u32 unk8;
+};
+
+
extern u16 gUnknown_80D4144[];
extern struct UnkStructType gUnknown_202DE20;
extern struct UnkStructType gUnknown_202DE22;
extern struct UnkStructType gUnknown_202DE24;
extern u32 gUnknown_202DE1C;
extern u32 gUnknown_203B14C;
+extern const char gNotEntryText;
+extern const char gUnknown_80D418C;
void sub_8011760(void)
{
@@ -281,3 +294,52 @@ void nullsub_25(void)
void nullsub_26(void)
{
}
+
+#ifndef NONMATCHING
+NAKED
+#endif
+// Unused
+void PrintFuncFileLineOrNotEntry(char * r0, struct unkFileStruct *r1)
+{
+#ifdef NONMATCHING
+ u32 temp;
+ if(r1 != 0)
+ {
+ // TODO fix regswap here.. otherwise looks good
+ temp = r1->unk4;
+ sprintf(r0, &gUnknown_80D418C, r1->unk8, r1->unk0, temp);
+ }
+ else
+ {
+ sprintf(r0, &gNotEntryText);
+ }
+#else
+ asm_unified("\tpush {r4,lr}\n"
+ "\tsub sp, 0x4\n"
+ "\tadds r4, r0, 0\n"
+ "\tadds r0, r1, 0\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08011A90\n"
+ "\tldr r1, _08011A8C\n"
+ "\tldr r2, [r0, 0x8]\n"
+ "\tldr r3, [r0]\n"
+ "\tldr r0, [r0, 0x4]\n"
+ "\tstr r0, [sp]\n"
+ "\tadds r0, r4, 0\n"
+ "\tbl sprintf\n"
+ "\tb _08011A98\n"
+ "\t.align 2, 0\n"
+"_08011A8C: .4byte gUnknown_80D418C\n"
+"_08011A90:\n"
+ "\tldr r1, _08011AA0\n"
+ "\tadds r0, r4, 0\n"
+ "\tbl sprintf\n"
+"_08011A98:\n"
+ "\tadd sp, 0x4\n"
+ "\tpop {r4}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+"_08011AA0: .4byte gNotEntryText");
+#endif
+}