summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-11-21 08:52:01 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2018-11-21 08:52:01 -0500
commit6bcabeab1ec976284da95c34b57615fc9fa44970 (patch)
tree6d6547f5c86f71f44691296ea000c96c51c8bb4f
parenteb98d02443e7433dd594e35e92edda3b8fa5d499 (diff)
Complete decomp of quest_log
-rw-r--r--asm/quest_log.s367
-rw-r--r--ld_script.txt1
-rw-r--r--src/quest_log.c181
3 files changed, 179 insertions, 370 deletions
diff --git a/asm/quest_log.s b/asm/quest_log.s
deleted file mode 100644
index f5992a824..000000000
--- a/asm/quest_log.s
+++ /dev/null
@@ -1,367 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_81155A4
-sub_81155A4: @ 81155A4
- push {r4,lr}
- adds r2, r0, 0
- adds r4, r1, 0
- movs r0, 0x26
- adds r1, r2, 0
- bl sub_8113DE0
- adds r2, r0, 0
- cmp r2, 0
- beq _081155D6
- ldrh r0, [r4, 0x4]
- strh r0, [r2]
- ldrh r0, [r4, 0x6]
- strh r0, [r2, 0x2]
- ldr r1, [r4]
- lsrs r0, r1, 16
- strh r0, [r2, 0x4]
- strh r1, [r2, 0x6]
- ldrb r0, [r4, 0x8]
- strb r0, [r2, 0x8]
- ldrb r0, [r4, 0x9]
- strb r0, [r2, 0x9]
- adds r0, r2, 0
- adds r0, 0xA
- b _081155D8
-_081155D6:
- movs r0, 0
-_081155D8:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81155A4
-
- thumb_func_start sub_81155E0
-sub_81155E0: @ 81155E0
- push {r4-r7,lr}
- adds r1, r0, 0
- movs r0, 0x26
- bl sub_8113E88
- adds r5, r0, 0
- adds r7, r5, 0
- adds r7, 0x8
- ldrh r0, [r5, 0x4]
- lsls r0, 16
- ldrh r1, [r5, 0x6]
- adds r6, r0, r1
- bl UnkTextUtil_Reset
- ldr r4, _0811563C @ =gStringVar1
- ldrb r1, [r5, 0x8]
- adds r0, r4, 0
- bl sub_80C4DF8
- ldrb r0, [r7, 0x1]
- cmp r0, 0
- bne _08115690
- ldr r0, _08115640 @ =gSaveBlock2Ptr
- ldr r1, [r0]
- movs r0, 0
- bl UnkTextUtil_SetPtrI
- movs r0, 0x1
- adds r1, r4, 0
- bl UnkTextUtil_SetPtrI
- ldrh r0, [r5]
- bl ItemId_GetItem
- adds r1, r0, 0
- movs r0, 0x2
- bl UnkTextUtil_SetPtrI
- ldrh r0, [r5, 0x2]
- cmp r0, 0x1
- bne _08115648
- ldr r1, _08115644 @ =gUnknown_841A8D4
- movs r0, 0x3
- bl UnkTextUtil_SetPtrI
- b _08115670
- .align 2, 0
-_0811563C: .4byte gStringVar1
-_08115640: .4byte gSaveBlock2Ptr
-_08115644: .4byte gUnknown_841A8D4
-_08115648:
- ldr r4, _0811567C @ =gStringVar2
- ldrh r1, [r5, 0x2]
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- movs r0, 0x4
- adds r1, r4, 0
- bl UnkTextUtil_SetPtrI
- ldr r4, _08115680 @ =gStringVar3
- ldr r1, _08115684 @ =gUnknown_841A8DD
- adds r0, r4, 0
- bl UnkTextUtil_StringExpandPlaceholders
- movs r0, 0x3
- adds r1, r4, 0
- bl UnkTextUtil_SetPtrI
-_08115670:
- ldr r0, _08115688 @ =gStringVar4
- ldr r1, _0811568C @ =gUnknown_841A858
- bl UnkTextUtil_StringExpandPlaceholders
- b _081156C4
- .align 2, 0
-_0811567C: .4byte gStringVar2
-_08115680: .4byte gStringVar3
-_08115684: .4byte gUnknown_841A8DD
-_08115688: .4byte gStringVar4
-_0811568C: .4byte gUnknown_841A858
-_08115690:
- movs r0, 0
- adds r1, r4, 0
- bl UnkTextUtil_SetPtrI
- ldrh r0, [r5]
- bl ItemId_GetItem
- adds r1, r0, 0
- movs r0, 0x1
- bl UnkTextUtil_SetPtrI
- ldr r4, _081156CC @ =gStringVar2
- adds r0, r4, 0
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0x6
- bl ConvertIntToDecimalStringN
- movs r0, 0x2
- adds r1, r4, 0
- bl UnkTextUtil_SetPtrI
- ldr r0, _081156D0 @ =gStringVar4
- ldr r1, _081156D4 @ =gUnknown_841A896
- bl UnkTextUtil_StringExpandPlaceholders
-_081156C4:
- adds r0, r7, 0x2
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081156CC: .4byte gStringVar2
-_081156D0: .4byte gStringVar4
-_081156D4: .4byte gUnknown_841A896
- thumb_func_end sub_81155E0
-
- thumb_func_start sub_81156D8
-sub_81156D8: @ 81156D8
- push {r4,lr}
- adds r2, r0, 0
- adds r4, r1, 0
- movs r0, 0x28
- adds r1, r2, 0
- bl sub_8113DE0
- adds r2, r0, 0
- cmp r2, 0
- beq _081156F8
- ldrh r0, [r4]
- strh r0, [r2]
- ldrb r0, [r4, 0x2]
- strb r0, [r2, 0x2]
- adds r0, r2, 0x4
- b _081156FA
-_081156F8:
- movs r0, 0
-_081156FA:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81156D8
-
- thumb_func_start sub_8115700
-sub_8115700: @ 8115700
- push {r4-r6,lr}
- adds r1, r0, 0
- movs r0, 0x28
- bl sub_8113E88
- adds r4, r0, 0
- adds r5, r4, 0x2
- ldr r0, _08115738 @ =gStringVar1
- ldrb r1, [r4, 0x2]
- bl sub_80C4DF8
- ldr r6, _0811573C @ =gStringVar2
- ldrh r0, [r4]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r6, 0
- bl StringCopy
- ldr r0, _08115740 @ =gStringVar4
- ldr r1, _08115744 @ =gUnknown_841B03F
- bl StringExpandPlaceholders
- adds r5, 0x2
- adds r0, r5, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08115738: .4byte gStringVar1
-_0811573C: .4byte gStringVar2
-_08115740: .4byte gStringVar4
-_08115744: .4byte gUnknown_841B03F
- thumb_func_end sub_8115700
-
- thumb_func_start sub_8115748
-sub_8115748: @ 8115748
- push {r4,lr}
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r0, _08115764 @ =gUnknown_203ADFA
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _08115792
- movs r1, 0
- ldr r4, _08115768 @ =gUnknown_203B049
- ldr r0, _0811576C @ =gUnknown_8456C50
- b _08115778
- .align 2, 0
-_08115764: .4byte gUnknown_203ADFA
-_08115768: .4byte gUnknown_203B049
-_0811576C: .4byte gUnknown_8456C50
-_08115770:
- movs r0, 0
- b _08115790
-_08115774:
- adds r0, 0x2
- adds r1, 0x1
-_08115778:
- cmp r1, 0x10
- bgt _08115792
- ldrh r3, [r0]
- cmp r2, r3
- bne _08115774
- adds r0, r2, 0
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _08115770
- movs r0, 0x1
-_08115790:
- strb r0, [r4]
-_08115792:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8115748
-
- thumb_func_start sub_8115798
-sub_8115798: @ 8115798
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _081157D0 @ =gUnknown_203ADFA
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _081157C6
- ldr r4, _081157D4 @ =gUnknown_203B049
- ldrb r0, [r4]
- cmp r0, 0
- beq _081157C6
- ldr r0, _081157D8 @ =gMapHeader
- ldrb r1, [r0, 0x14]
- mov r0, sp
- strh r1, [r0]
- movs r0, 0x2A
- mov r1, sp
- bl sub_8113550
- movs r0, 0
- strb r0, [r4]
-_081157C6:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081157D0: .4byte gUnknown_203ADFA
-_081157D4: .4byte gUnknown_203B049
-_081157D8: .4byte gMapHeader
- thumb_func_end sub_8115798
-
- thumb_func_start sub_81157DC
-sub_81157DC: @ 81157DC
- push {r4,lr}
- adds r2, r0, 0
- adds r4, r1, 0
- movs r0, 0x2A
- adds r1, r2, 0
- bl sub_8113DE0
- adds r2, r0, 0
- cmp r2, 0
- beq _081157F8
- ldrh r0, [r4]
- strh r0, [r2]
- adds r0, r2, 0x2
- b _081157FA
-_081157F8:
- movs r0, 0
-_081157FA:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81157DC
-
- thumb_func_start sub_8115800
-sub_8115800: @ 8115800
- push {r4,lr}
- adds r1, r0, 0
- movs r0, 0x2A
- bl sub_8113E88
- adds r4, r0, 0
- ldr r0, _08115828 @ =gStringVar1
- ldrb r1, [r4]
- bl sub_80C4DF8
- ldr r0, _0811582C @ =gStringVar4
- ldr r1, _08115830 @ =gUnknown_841B064
- bl StringExpandPlaceholders
- adds r4, 0x2
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08115828: .4byte gStringVar1
-_0811582C: .4byte gStringVar4
-_08115830: .4byte gUnknown_841B064
- thumb_func_end sub_8115800
-
- thumb_func_start sub_8115834
-sub_8115834: @ 8115834
- push {lr}
- adds r1, r0, 0
- ldrb r0, [r1]
- adds r1, 0x1
- cmp r0, 0xFC
- bne _08115868
- ldrb r0, [r1]
- adds r1, 0x1
- cmp r0, 0x15
- bne _08115868
- movs r2, 0
- b _08115854
-_0811584C:
- adds r1, 0x1
- adds r2, 0x1
- cmp r2, 0x4
- bgt _0811585A
-_08115854:
- ldrb r0, [r1]
- cmp r0, 0xFC
- bne _0811584C
-_0811585A:
- movs r0, 0xFC
- strb r0, [r1]
- adds r1, 0x1
- movs r0, 0x16
- strb r0, [r1]
- movs r0, 0xFF
- strb r0, [r1, 0x1]
-_08115868:
- pop {r0}
- bx r0
- thumb_func_end sub_8115834
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/ld_script.txt b/ld_script.txt
index 2087ea35b..c1a32fcbf 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -220,7 +220,6 @@ SECTIONS {
asm/mailbox_pc.o(.text);
asm/menu.o(.text);
src/quest_log.o(.text);
- asm/quest_log.o(.text);
asm/link_rfu_3.o(.text);
asm/pokemon_special_anim.o(.text);
asm/party_menu.o(.text);
diff --git a/src/quest_log.c b/src/quest_log.c
index eac9486d2..ed7214bdd 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -261,6 +261,8 @@ u16 * sub_81151C0(u16 *, const u16 *);
const u16 * sub_81151DC(const u16 *);
u16 * sub_8115280(u16 *, const u16 *);
const u16 * sub_81152BC(const u16 *);
+bool8 sub_81153A8(u16, u16 *);
+bool8 sub_81153E4(u16, u16 *);
u16 * sub_8115410(u16 *, const u16 *);
const u16 * sub_8115460(const u16 *);
u16 * sub_81154DC(u16 *, const u16 *);
@@ -272,8 +274,6 @@ const u16 * sub_8115700(const u16 *);
u16 * sub_81157DC(u16 *, const u16 *);
const u16 * sub_8115800(const u16 *);
void sub_8115834(u8 *);
-bool8 sub_81153A8(u16, u16 *);
-bool8 sub_81153E4(u16, u16 *);
extern const u8 gUnknown_841A155[];
extern const u8 gUnknown_841A16F[];
@@ -4829,6 +4829,72 @@ const u16 * sub_8115518(const u16 * a0)
return (const u16 *)(r7 + 2);
}
+u16 * sub_81155A4(u16 * a0, const u16 * a1)
+{
+ a0 = sub_8113DE0(38, a0);
+ if (a0 == NULL)
+ return NULL;
+ a0[0] = a1[2];
+ a0[1] = a1[3];
+ a0[2] = *((const u32 *)a1) >> 16;
+ a0[3] = *((const u32 *)a1);
+ *((u8 *)a0 + 8) = *((const u8 *)a1 + 8);
+ *((u8 *)a0 + 9) = *((const u8 *)a1 + 9);
+ return a0 + 5;
+}
+
+const u16 * sub_81155E0(const u16 * a0) {
+ const u16 *r5 = sub_8113E88(38, a0);
+ const u8 *r7 = (const u8 *) r5 + 8;
+ u32 r6 = (r5[2] << 16) + r5[3];
+ UnkTextUtil_Reset();
+ sub_80C4DF8(gStringVar1, r7[0]);
+ if (r7[1] == 0) {
+ UnkTextUtil_SetPtrI(0, gSaveBlock2Ptr->playerName);
+ UnkTextUtil_SetPtrI(1, gStringVar1);
+ UnkTextUtil_SetPtrI(2, ItemId_GetItem(r5[0])->name);
+ if (r5[1] == 1)
+ UnkTextUtil_SetPtrI(3, gUnknown_841A8D4);
+ else
+ {
+ ConvertIntToDecimalStringN(gStringVar2, r5[1], STR_CONV_MODE_LEFT_ALIGN, 3);
+ UnkTextUtil_SetPtrI(4, gStringVar2);
+ UnkTextUtil_StringExpandPlaceholders(gStringVar3, gUnknown_841A8DD);
+ UnkTextUtil_SetPtrI(3, gStringVar3);
+ }
+ UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A858);
+ }
+ else
+ {
+ UnkTextUtil_SetPtrI(0, gStringVar1);
+ UnkTextUtil_SetPtrI(1, ItemId_GetItem(r5[0])->name);
+ ConvertIntToDecimalStringN(gStringVar2, r6, STR_CONV_MODE_LEFT_ALIGN, 6);
+ UnkTextUtil_SetPtrI(2, gStringVar2);
+ UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A896);
+ }
+ return (const u16 *)(r7 + 2);
+}
+
+u16 * sub_81156D8(u16 * a0, const u16 * a1)
+{
+ a0 = sub_8113DE0(40, a0);
+ if (a0 == NULL)
+ return NULL;
+ a0[0] = a1[0];
+ *((u8 *)a0 + 2) = *((const u8 *)a1 + 2);
+ return a0 + 2;
+}
+
+const u16 * sub_8115700(const u16 * a0)
+{
+ const u16 * r4 = sub_8113E88(40, a0);
+ const u8 * r5 = (const u8 *)r4 + 2;
+ sub_80C4DF8(gStringVar1, r5[0]);
+ StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name);
+ StringExpandPlaceholders(gStringVar4, gUnknown_841B03F);
+ return (const u16 *)(r5 + 2);
+}
+
const u16 gUnknown_8456C50[] = {
0x0891,
0x0892,
@@ -4848,3 +4914,114 @@ const u16 gUnknown_8456C50[] = {
0x08a0,
0x08a1
};
+
+#ifdef NONMATCHING
+void sub_8115748(u16 a0)
+{
+ s32 i;
+ if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3)
+ return;
+ for (i = 0; i < 17; i++)
+ {
+ if (a0 != gUnknown_8456C50[i])
+ continue;
+ if (!FlagGet(a0))
+ gUnknown_203B049 = TRUE;
+ else
+ gUnknown_203B049 = FALSE;
+ break;
+ }
+}
+#else
+NAKED
+void sub_8115748(u16 a0)
+{
+ asm_unified("\tpush {r4,lr}\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r2, r0, 16\n"
+ "\tldr r0, =gUnknown_203ADFA\n"
+ "\tldrb r0, [r0]\n"
+ "\tsubs r0, 0x2\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0x1\n"
+ "\tbls _08115792\n"
+ "\tmovs r1, 0\n"
+ "\tldr r4, =gUnknown_203B049\n"
+ "\tldr r0, =gUnknown_8456C50\n"
+ "\tb _08115778\n"
+ "\t.pool\n"
+ "_08115770:\n"
+ "\tmovs r0, 0\n"
+ "\tb _08115790\n"
+ "_08115774:\n"
+ "\tadds r0, 0x2\n"
+ "\tadds r1, 0x1\n"
+ "_08115778:\n"
+ "\tcmp r1, 0x10\n"
+ "\tbgt _08115792\n"
+ "\tldrh r3, [r0]\n"
+ "\tcmp r2, r3\n"
+ "\tbne _08115774\n"
+ "\tadds r0, r2, 0\n"
+ "\tbl FlagGet\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbne _08115770\n"
+ "\tmovs r0, 0x1\n"
+ "_08115790:\n"
+ "\tstrb r0, [r4]\n"
+ "_08115792:\n"
+ "\tpop {r4}\n"
+ "\tpop {r0}\n"
+ "\tbx r0");
+}
+#endif // NONMATCHING
+
+void sub_8115798(void)
+{
+ u16 sp0;
+ if (gUnknown_203ADFA != 2 && gUnknown_203ADFA != 3)
+ {
+ if (gUnknown_203B049)
+ {
+ sp0 = gMapHeader.regionMapSectionId;
+ sub_8113550(42, &sp0);
+ gUnknown_203B049 = FALSE;
+ }
+ }
+}
+
+u16 * sub_81157DC(u16 * a0, const u16 * a1)
+{
+ a0 = sub_8113DE0(42, a0);
+ if (a0 == NULL)
+ return NULL;
+ a0[0] = a1[0];
+ return a0 + 1;
+}
+
+const u16 * sub_8115800(const u16 * a0)
+{
+ const u16 * r4 = sub_8113E88(42, a0);
+ sub_80C4DF8(gStringVar1, r4[0]);
+ StringExpandPlaceholders(gStringVar4, gUnknown_841B064);
+ return r4 + 1;
+}
+
+void sub_8115834(u8 * a0)
+{
+ s32 i;
+ if (*a0++ == EXT_CTRL_CODE_BEGIN && *a0++ == EXT_CTRL_CODE_JPN)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (*a0 == EXT_CTRL_CODE_BEGIN)
+ break;
+ a0++;
+ }
+ *a0++ = EXT_CTRL_CODE_BEGIN;
+ *a0++ = EXT_CTRL_CODE_ENG;
+ *a0++ = EOS;
+ }
+}