diff options
-rw-r--r-- | asm/quest_log.s | 91 | ||||
-rw-r--r-- | src/quest_log.c | 40 |
2 files changed, 40 insertions, 91 deletions
diff --git a/asm/quest_log.s b/asm/quest_log.s index 95cd834b7..3c4845ae6 100644 --- a/asm/quest_log.s +++ b/asm/quest_log.s @@ -5,97 +5,6 @@ .text - thumb_func_start sub_8113DE0 -sub_8113DE0: @ 8113DE0 - push {r4-r7,lr} - adds r4, r1, 0 - lsls r0, 16 - lsrs r7, r0, 16 - ldr r0, _08113DF8 @ =gUnknown_203B044 - ldrb r0, [r0, 0x1] - cmp r0, 0 - bne _08113E00 - ldr r0, _08113DFC @ =gUnknown_8456AA0 - adds r0, r7, r0 - ldrb r6, [r0] - b _08113E0C - .align 2, 0 -_08113DF8: .4byte gUnknown_203B044 -_08113DFC: .4byte gUnknown_8456AA0 -_08113E00: - ldr r0, _08113E20 @ =gUnknown_8456AA0 - adds r0, r7, r0 - ldrb r0, [r0] - subs r0, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 -_08113E0C: - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_8110944 - lsls r0, 24 - cmp r0, 0 - bne _08113E24 - movs r0, 0 - b _08113E7C - .align 2, 0 -_08113E20: .4byte gUnknown_8456AA0 -_08113E24: - adds r5, r4, 0 - ldr r2, _08113E60 @ =gUnknown_203B044 - ldrb r1, [r2, 0x1] - cmp r1, 0 - beq _08113E36 - adds r0, r1, 0 - muls r0, r6 - adds r0, 0x4 - subs r5, r0 -_08113E36: - cmp r1, 0x5 - bne _08113E64 - movs r4, 0 -_08113E3C: - adds r0, r4, 0 - muls r0, r6 - adds r0, r5 - adds r0, 0x4 - adds r4, 0x1 - adds r1, r4, 0 - muls r1, r6 - adds r1, r5 - adds r1, 0x4 - adds r2, r6, 0 - bl memcpy - lsls r4, 24 - lsrs r4, 24 - cmp r4, 0x3 - bls _08113E3C - movs r1, 0x4 - b _08113E66 - .align 2, 0 -_08113E60: .4byte gUnknown_203B044 -_08113E64: - ldrb r1, [r2, 0x1] -_08113E66: - lsls r0, r1, 12 - adds r0, r7, r0 - strh r0, [r5] - ldr r0, _08113E84 @ =gUnknown_203AF98 - ldrh r0, [r0] - strh r0, [r5, 0x2] - adds r0, r1, 0 - muls r0, r6 - adds r0, 0x4 - adds r5, r0 - adds r0, r5, 0 -_08113E7C: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08113E84: .4byte gUnknown_203AF98 - thumb_func_end sub_8113DE0 - thumb_func_start sub_8113E88 sub_8113E88: @ 8113E88 lsls r0, 16 diff --git a/src/quest_log.c b/src/quest_log.c index 1d6951485..6e2767a1e 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -3464,3 +3464,43 @@ u16 * sub_8113D94(u16 * a0, struct UnkStruct_203AE98 * a1) a1->unk_3 = r6[3]; return (u16 *)(r6 + 4); } + +u16 * sub_8113DE0(u16 a0, u16 * a1) +{ + u8 r6; + u16 * r5; + u8 r4; + u8 r1; + + if (gUnknown_203B044.unk_1 == 0) + r6 = gUnknown_8456AA0[a0]; + else + r6 = gUnknown_8456AA0[a0] - 4; + if (!sub_8110944(a1, r6)) + return NULL; + + r5 = (void *)a1; + + if (gUnknown_203B044.unk_1 != 0) + r5 = (void *)r5 - (gUnknown_203B044.unk_1 * r6 + 4); + + if (gUnknown_203B044.unk_1 == 5) + { + for (r4 = 0; r4 < 4; r4++) + { + memcpy( + (void *)r5 + (r4 * r6 + 4), + (void *)r5 + ((r4 + 1) * r6 + 4), + r6 + ); + } + r1 = 4; + } + else + r1 = gUnknown_203B044.unk_1; + + r5[0] = a0 + (r1 << 12); + r5[1] = gUnknown_203AF98; + r5 = (void *)r5 + (r1 * r6 + 4); + return r5; +} |