diff options
-rw-r--r-- | asm/quest_log.s | 184 | ||||
-rw-r--r-- | src/quest_log.c | 259 |
2 files changed, 257 insertions, 186 deletions
diff --git a/asm/quest_log.s b/asm/quest_log.s index e4947d79c..2bfc14dd1 100644 --- a/asm/quest_log.s +++ b/asm/quest_log.s @@ -5,190 +5,6 @@ .text - thumb_func_start sub_8112B3C -sub_8112B3C: @ 8112B3C - push {r4-r7,lr} - ldr r0, _08112B54 @ =gUnknown_3005E88 - ldrb r0, [r0] - cmp r0, 0x4 - bls _08112B48 - b _08112C84 -_08112B48: - lsls r0, 2 - ldr r1, _08112B58 @ =_08112B5C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08112B54: .4byte gUnknown_3005E88 -_08112B58: .4byte _08112B5C - .align 2, 0 -_08112B5C: - .4byte _08112C84 - .4byte _08112B70 - .4byte _08112C5E - .4byte _08112C84 - .4byte _08112C84 -_08112B70: - bl sub_8112CEC - lsls r0, 24 - cmp r0, 0 - beq _08112B7C - b _08112C72 -_08112B7C: - ldr r0, _08112B8C @ =gUnknown_203B01A - ldrh r1, [r0] - adds r7, r0, 0 - cmp r1, 0 - beq _08112B90 - subs r0, r1, 0x1 - strh r0, [r7] - b _08112C84 - .align 2, 0 -_08112B8C: .4byte gUnknown_203B01A -_08112B90: - ldr r5, _08112B98 @ =gUnknown_3005E88 - ldr r4, _08112B9C @ =gUnknown_203AF98 - ldr r6, _08112BA0 @ =gUnknown_3005E94 - b _08112BD4 - .align 2, 0 -_08112B98: .4byte gUnknown_3005E88 -_08112B9C: .4byte gUnknown_203AF98 -_08112BA0: .4byte gUnknown_3005E94 -_08112BA4: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - ldr r1, _08112BF0 @ =gUnknown_3005E8C - lsls r0, 16 - lsrs r0, 16 - ldrh r1, [r1] - cmp r0, r1 - bcs _08112C58 - ldrh r0, [r4] - ldr r1, [r6] - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x4] - strh r0, [r7] - cmp r2, 0x3 - beq _08112C84 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _08112BD4 - ldr r0, _08112BF4 @ =0x0000ffff - cmp r1, r0 - bne _08112C84 -_08112BD4: - ldrh r0, [r4] - ldr r1, [r6] - lsls r0, 3 - adds r3, r0, r1 - ldrb r0, [r3, 0x6] - cmp r0, 0x2 - beq _08112C2C - cmp r0, 0x2 - bgt _08112BF8 - cmp r0, 0 - beq _08112C0C - cmp r0, 0x1 - beq _08112C18 - b _08112C50 - .align 2, 0 -_08112BF0: .4byte gUnknown_3005E8C -_08112BF4: .4byte 0x0000ffff -_08112BF8: - cmp r0, 0xFE - beq _08112C50 - cmp r0, 0xFE - bgt _08112C06 - cmp r0, 0x3 - beq _08112C4E - b _08112C50 -_08112C06: - cmp r0, 0xFF - beq _08112C4C - b _08112C50 -_08112C0C: - ldr r0, _08112C14 @ =gUnknown_203AF9A - ldrb r1, [r3] - lsls r1, 1 - b _08112C20 - .align 2, 0 -_08112C14: .4byte gUnknown_203AF9A -_08112C18: - ldr r0, _08112C28 @ =gUnknown_203AF9A - ldrb r1, [r3] - lsls r1, 1 - adds r0, 0x1 -_08112C20: - adds r1, r0 - ldrb r0, [r3, 0x3] - strb r0, [r1] - b _08112C50 - .align 2, 0 -_08112C28: .4byte gUnknown_203AF9A -_08112C2C: - ldr r2, _08112C48 @ =gUnknown_3005E90 - ldrb r1, [r3, 0x3] - lsls r1, 24 - ldrb r0, [r3, 0x2] - lsls r0, 16 - orrs r1, r0 - ldrb r0, [r3, 0x1] - lsls r0, 8 - orrs r1, r0 - ldrb r0, [r3] - orrs r1, r0 - str r1, [r2] - b _08112C50 - .align 2, 0 -_08112C48: .4byte gUnknown_3005E90 -_08112C4C: - movs r0, 0 -_08112C4E: - strb r0, [r5] -_08112C50: - ldrb r2, [r5] - cmp r2, 0 - bne _08112BA4 - b _08112C84 -_08112C58: - movs r0, 0 - strb r0, [r5] - b _08112C84 -_08112C5E: - bl ScriptContext2_IsEnabled - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08112C84 - ldr r1, _08112C8C @ =gUnknown_203B01A - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_08112C72: - ldr r0, _08112C90 @ =gUnknown_203AF98 - ldr r1, _08112C94 @ =gUnknown_3005E8C - ldrh r0, [r0] - ldrh r1, [r1] - cmp r0, r1 - bcc _08112C84 - ldr r1, _08112C98 @ =gUnknown_3005E88 - movs r0, 0 - strb r0, [r1] -_08112C84: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08112C8C: .4byte gUnknown_203B01A -_08112C90: .4byte gUnknown_203AF98 -_08112C94: .4byte gUnknown_3005E8C -_08112C98: .4byte gUnknown_3005E88 - thumb_func_end sub_8112B3C - thumb_func_start sub_8112C9C sub_8112C9C: @ 8112C9C ldr r1, _08112CA8 @ =gUnknown_203B01A diff --git a/src/quest_log.c b/src/quest_log.c index 49e0db836..61b1e66d6 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -1550,11 +1550,11 @@ void sub_811278C(u8 a0, u8 a1) } } -void sub_81127F8(u32 * a0) +void sub_81127F8(struct UnkStruct_3005E90 * a0) { if (gUnknown_203AF98 < gUnknown_3005E8C) { - u32 r2 = *a0 & 0x00FF00F3; + u32 r2 = *(u32 *)a0 & 0x00FF00F3; gUnknown_3005E94[gUnknown_203AF98].unk_4 = gUnknown_203B01A; gUnknown_3005E94[gUnknown_203AF98].unk_6 = 2; gUnknown_3005E94[gUnknown_203AF98].unk_0 = r2; @@ -1677,3 +1677,258 @@ void sub_8112940(u8 a0, struct UnkStruct_203AE98 *a1, u16 a2) break; } } + +#ifdef NONMATCHING +void sub_8112B3C(void) +{ + switch (gUnknown_3005E88) + { + case 0: + break; + case 1: + if (sub_8112CEC()) + { + if (gUnknown_203B01A != 0) + gUnknown_203B01A--; + else + { + while (1) + { + switch (gUnknown_3005E94[gUnknown_203AF98].unk_6) + { + case 0: + gUnknown_203AF9A[gUnknown_3005E94[gUnknown_203AF98].unk_0][0] = gUnknown_3005E94[gUnknown_203AF98].unk_3; + break; + case 1: + gUnknown_203AF9A[gUnknown_3005E94[gUnknown_203AF98].unk_0][1] = gUnknown_3005E94[gUnknown_203AF98].unk_3; + break; + case 2: + *(u32 *)&gUnknown_3005E90 = ((gUnknown_3005E94[gUnknown_203AF98].unk_3 << 24) | (gUnknown_3005E94[gUnknown_203AF98].unk_2 << 16) | (gUnknown_3005E94[gUnknown_203AF98].unk_1 << 8) | (gUnknown_3005E94[gUnknown_203AF98].unk_0 << 0)); + break; + case 3: + gUnknown_3005E88 = 3; + break; + case 0xFE: + break; + case 0xFF: + gUnknown_3005E88 = 0; + break; + } + if (gUnknown_3005E88 == 0) + break; + if (++gUnknown_203AF98 >= gUnknown_3005E8C) + { + gUnknown_3005E88 = 0; + break; + } + gUnknown_203B01A = gUnknown_3005E94[gUnknown_203AF98].unk_4; + if (gUnknown_3005E88 == 3) + break; + if (gUnknown_203B01A == 0) + continue; + if (gUnknown_203B01A == 0xFFFF) + break; + } + } + } + else if (gUnknown_203AF98 >= gUnknown_3005E8C) + gUnknown_3005E88 = 0; + break; + case 2: + if (ScriptContext2_IsEnabled() != 1) + gUnknown_203B01A++; + if (gUnknown_203AF98 >= gUnknown_3005E8C) + gUnknown_3005E88 = 0; + break; + case 3: + break; + case 4: + break; + } +} +#else +NAKED +void sub_8112B3C(void) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tldr r0, _08112B54 @ =gUnknown_3005E88\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0x4\n" + "\tbls _08112B48\n" + "\tb _08112C84\n" + "_08112B48:\n" + "\tlsls r0, 2\n" + "\tldr r1, _08112B58 @ =_08112B5C\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_08112B54: .4byte gUnknown_3005E88\n" + "_08112B58: .4byte _08112B5C\n" + "\t.align 2, 0\n" + "_08112B5C:\n" + "\t.4byte _08112C84\n" + "\t.4byte _08112B70\n" + "\t.4byte _08112C5E\n" + "\t.4byte _08112C84\n" + "\t.4byte _08112C84\n" + "_08112B70:\n" + "\tbl sub_8112CEC\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _08112B7C\n" + "\tb _08112C72\n" + "_08112B7C:\n" + "\tldr r0, _08112B8C @ =gUnknown_203B01A\n" + "\tldrh r1, [r0]\n" + "\tadds r7, r0, 0\n" + "\tcmp r1, 0\n" + "\tbeq _08112B90\n" + "\tsubs r0, r1, 0x1\n" + "\tstrh r0, [r7]\n" + "\tb _08112C84\n" + "\t.align 2, 0\n" + "_08112B8C: .4byte gUnknown_203B01A\n" + "_08112B90:\n" + "\tldr r5, _08112B98 @ =gUnknown_3005E88\n" + "\tldr r4, _08112B9C @ =gUnknown_203AF98\n" + "\tldr r6, _08112BA0 @ =gUnknown_3005E94\n" + "\tb _08112BD4\n" + "\t.align 2, 0\n" + "_08112B98: .4byte gUnknown_3005E88\n" + "_08112B9C: .4byte gUnknown_203AF98\n" + "_08112BA0: .4byte gUnknown_3005E94\n" + "_08112BA4:\n" + "\tldrh r0, [r4]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r4]\n" + "\tldr r1, _08112BF0 @ =gUnknown_3005E8C\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldrh r1, [r1]\n" + "\tcmp r0, r1\n" + "\tbcs _08112C58\n" + "\tldrh r0, [r4]\n" + "\tldr r1, [r6]\n" + "\tlsls r0, 3\n" + "\tadds r0, r1\n" + "\tldrh r0, [r0, 0x4]\n" + "\tstrh r0, [r7]\n" + "\tcmp r2, 0x3\n" + "\tbeq _08112C84\n" + "\tlsls r0, 16\n" + "\tlsrs r1, r0, 16\n" + "\tcmp r1, 0\n" + "\tbeq _08112BD4\n" + "\tldr r0, _08112BF4 @ =0x0000ffff\n" + "\tcmp r1, r0\n" + "\tbne _08112C84\n" + "_08112BD4:\n" + "\tldrh r0, [r4]\n" + "\tldr r1, [r6]\n" + "\tlsls r0, 3\n" + "\tadds r3, r0, r1\n" + "\tldrb r0, [r3, 0x6]\n" + "\tcmp r0, 0x2\n" + "\tbeq _08112C2C\n" + "\tcmp r0, 0x2\n" + "\tbgt _08112BF8\n" + "\tcmp r0, 0\n" + "\tbeq _08112C0C\n" + "\tcmp r0, 0x1\n" + "\tbeq _08112C18\n" + "\tb _08112C50\n" + "\t.align 2, 0\n" + "_08112BF0: .4byte gUnknown_3005E8C\n" + "_08112BF4: .4byte 0x0000ffff\n" + "_08112BF8:\n" + "\tcmp r0, 0xFE\n" + "\tbeq _08112C50\n" + "\tcmp r0, 0xFE\n" + "\tbgt _08112C06\n" + "\tcmp r0, 0x3\n" + "\tbeq _08112C4E\n" + "\tb _08112C50\n" + "_08112C06:\n" + "\tcmp r0, 0xFF\n" + "\tbeq _08112C4C\n" + "\tb _08112C50\n" + "_08112C0C:\n" + "\tldr r0, _08112C14 @ =gUnknown_203AF9A\n" + "\tldrb r1, [r3]\n" + "\tlsls r1, 1\n" + "\tb _08112C20\n" + "\t.align 2, 0\n" + "_08112C14: .4byte gUnknown_203AF9A\n" + "_08112C18:\n" + "\tldr r0, _08112C28 @ =gUnknown_203AF9A\n" + "\tldrb r1, [r3]\n" + "\tlsls r1, 1\n" + "\tadds r0, 0x1\n" + "_08112C20:\n" + "\tadds r1, r0\n" + "\tldrb r0, [r3, 0x3]\n" + "\tstrb r0, [r1]\n" + "\tb _08112C50\n" + "\t.align 2, 0\n" + "_08112C28: .4byte gUnknown_203AF9A\n" + "_08112C2C:\n" + "\tldr r2, _08112C48 @ =gUnknown_3005E90\n" + "\tldrb r1, [r3, 0x3]\n" + "\tlsls r1, 24\n" + "\tldrb r0, [r3, 0x2]\n" + "\tlsls r0, 16\n" + "\torrs r1, r0\n" + "\tldrb r0, [r3, 0x1]\n" + "\tlsls r0, 8\n" + "\torrs r1, r0\n" + "\tldrb r0, [r3]\n" + "\torrs r1, r0\n" + "\tstr r1, [r2]\n" + "\tb _08112C50\n" + "\t.align 2, 0\n" + "_08112C48: .4byte gUnknown_3005E90\n" + "_08112C4C:\n" + "\tmovs r0, 0\n" + "_08112C4E:\n" + "\tstrb r0, [r5]\n" + "_08112C50:\n" + "\tldrb r2, [r5]\n" + "\tcmp r2, 0\n" + "\tbne _08112BA4\n" + "\tb _08112C84\n" + "_08112C58:\n" + "\tmovs r0, 0\n" + "\tstrb r0, [r5]\n" + "\tb _08112C84\n" + "_08112C5E:\n" + "\tbl ScriptContext2_IsEnabled\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1\n" + "\tbeq _08112C84\n" + "\tldr r1, _08112C8C @ =gUnknown_203B01A\n" + "\tldrh r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r1]\n" + "_08112C72:\n" + "\tldr r0, _08112C90 @ =gUnknown_203AF98\n" + "\tldr r1, _08112C94 @ =gUnknown_3005E8C\n" + "\tldrh r0, [r0]\n" + "\tldrh r1, [r1]\n" + "\tcmp r0, r1\n" + "\tbcc _08112C84\n" + "\tldr r1, _08112C98 @ =gUnknown_3005E88\n" + "\tmovs r0, 0\n" + "\tstrb r0, [r1]\n" + "_08112C84:\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_08112C8C: .4byte gUnknown_203B01A\n" + "_08112C90: .4byte gUnknown_203AF98\n" + "_08112C94: .4byte gUnknown_3005E8C\n" + "_08112C98: .4byte gUnknown_3005E88"); +} +#endif |