From a4889a17899a7a4c8b61c07d65fad584ed51acd1 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Tue, 16 Feb 2021 18:58:30 +0100 Subject: [PATCH] match sub_0807D128 --- asm/code_0807CC3C.s | 53 --------------------------------------------- src/code_0807CC3C.c | 24 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 53 deletions(-) diff --git a/asm/code_0807CC3C.s b/asm/code_0807CC3C.s index 9e7e4d8a..9a9ab84d 100644 --- a/asm/code_0807CC3C.s +++ b/asm/code_0807CC3C.s @@ -219,56 +219,3 @@ _0807D124: adds r0, r5, #0 pop {r4, r5, r6, pc} - thumb_func_start sub_0807D128 -sub_0807D128: @ 0x0807D128 - push {lr} - adds r2, r0, #0 - ldr r1, [r2, #4] - ldr r0, _0807D13C @ =0x4D435A33 - cmp r1, r0 - beq _0807D150 - cmp r1, r0 - bhi _0807D144 - ldr r0, _0807D140 @ =0x466C6544 - b _0807D146 - .align 2, 0 -_0807D13C: .4byte 0x4D435A33 -_0807D140: .4byte 0x466C6544 -_0807D144: - ldr r0, _0807D14C @ =0x54494E49 -_0807D146: - cmp r1, r0 - beq _0807D164 - b _0807D17C - .align 2, 0 -_0807D14C: .4byte 0x54494E49 -_0807D150: - ldrh r0, [r2] - ldrh r1, [r2, #2] - adds r0, r0, r1 - movs r1, #0x80 - lsls r1, r1, #9 - movs r3, #0 - cmp r0, r1 - bne _0807D17E - movs r3, #2 - b _0807D17E -_0807D164: - movs r3, #0 - ldrh r0, [r2] - ldrh r1, [r2, #2] - ands r1, r0 - ldr r0, _0807D178 @ =0x0000FFFF - cmp r1, r0 - bne _0807D17E - movs r3, #1 - b _0807D17E - .align 2, 0 -_0807D178: .4byte 0x0000FFFF -_0807D17C: - movs r3, #0 -_0807D17E: - adds r0, r3, #0 - pop {pc} - .align 2, 0 - diff --git a/src/code_0807CC3C.c b/src/code_0807CC3C.c index c3b71781..35513d3b 100644 --- a/src/code_0807CC3C.c +++ b/src/code_0807CC3C.c @@ -26,6 +26,30 @@ extern u16 sub_080B18DC(u16, const char*); void sub_0807DB88(ScriptExecutionContext* context, u32 unk1); void sub_0807DAF0(Entity* entity, ScriptExecutionContext* context, u32 unk1); +u32 sub_0807D128(u16* unk_1) { + u32 ret; + switch (((u32*)(unk_1))[1]) { + case 'MCZ3': + if (unk_1[0] + unk_1[1] == 0x10000) { + ret = 2; + } else { + ret = 0; + } + break; + case 'FleD': + case 'TINI': + ret = 0; + if ((unk_1[0] & unk_1[1]) == 0xffff) { + ret = 1; + } + break; + default: + ret = 0; + break; + } + return ret; +} + void sub_0807D184(u32 param_1, const char* param_2) { if (sub_0807D20C(param_1, param_2, 8) == 0) { sub_0807D20C(param_1 + 8, param_2, 8);