diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-11-21 08:52:01 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-11-21 08:52:01 -0500 |
commit | 6bcabeab1ec976284da95c34b57615fc9fa44970 (patch) | |
tree | 6d6547f5c86f71f44691296ea000c96c51c8bb4f | |
parent | eb98d02443e7433dd594e35e92edda3b8fa5d499 (diff) |
Complete decomp of quest_log
-rw-r--r-- | asm/quest_log.s | 367 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/quest_log.c | 181 |
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; + } +} |