From f475bd9fa097437c478c9afd3e1a888ad12222f7 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Thu, 18 Feb 2021 17:58:42 +0100 Subject: [PATCH] nonmatch sub_0807CF88 --- .../code_0807CC3C/sub_0807CF88.inc} | 4 +- .../code_0807CC3C/sub_0807D008.inc | 3 -- include/functions.h | 2 +- linker.ld | 1 - src/code_0807CC3C.c | 43 +++++++++++++++++-- 5 files changed, 43 insertions(+), 10 deletions(-) rename asm/{code_0807CC3C.s => non_matching/code_0807CC3C/sub_0807CF88.inc} (94%) diff --git a/asm/code_0807CC3C.s b/asm/non_matching/code_0807CC3C/sub_0807CF88.inc similarity index 94% rename from asm/code_0807CC3C.s rename to asm/non_matching/code_0807CC3C/sub_0807CF88.inc index 5436febf..18546c4a 100644 --- a/asm/code_0807CC3C.s +++ b/asm/non_matching/code_0807CC3C/sub_0807CF88.inc @@ -1,12 +1,11 @@ .include "asm/macros.inc" + .include "constants/constants.inc" .syntax unified .text - thumb_func_start sub_0807CF88 -sub_0807CF88: @ 0x0807CF88 push {r4, r5, r6, r7, lr} sub sp, #8 adds r7, r1, #0 @@ -69,3 +68,4 @@ _0807CFFE: .align 2, 0 _0807D004: .4byte 0x4D435A33 + .syntax divided diff --git a/asm/non_matching/code_0807CC3C/sub_0807D008.inc b/asm/non_matching/code_0807CC3C/sub_0807D008.inc index c4761416..d5d00ffd 100644 --- a/asm/non_matching/code_0807CC3C/sub_0807D008.inc +++ b/asm/non_matching/code_0807CC3C/sub_0807D008.inc @@ -1,6 +1,3 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" .syntax unified diff --git a/include/functions.h b/include/functions.h index 4866a847..e6be13bc 100644 --- a/include/functions.h +++ b/include/functions.h @@ -224,7 +224,7 @@ extern u32 sub_0807D24C(u32, const char*, u32); extern void sub_0807CF68(u32); extern u32 sub_0807D20C(u32, const char*, u32); extern u32 sub_0807CF88(u32, u8*); -extern void sub_0807D184(u32, const char*); +extern u32 sub_0807D184(u32, const char*); extern u32 sub_0806F520(); extern void sub_0806F4E8(Entity*); extern u32 sub_0806F3E4(Entity*); diff --git a/linker.ld b/linker.ld index 8b282a19..8ac8a325 100644 --- a/linker.ld +++ b/linker.ld @@ -675,7 +675,6 @@ SECTIONS { asm/code_0807CAA0.o(.text); src/flags.o(.text); src/save.o(.text); - asm/code_0807CC3C.o(.text); src/code_0807CC3C.o(.text); src/executeScriptCommandSet.o(.text); asm/code_0807F0D8.o(.text); diff --git a/src/code_0807CC3C.c b/src/code_0807CC3C.c index 5c4220cb..484fe575 100644 --- a/src/code_0807CC3C.c +++ b/src/code_0807CC3C.c @@ -32,6 +32,39 @@ u16 sub_0807D1A4(u16* unk_1, u32 unk_2); u32 sub_0807D0A0(u16* unk_1, u16* unk_2, u32 unk_3); u32 sub_0807D0EC(u32 unk_1, const char* unk_2); +NONMATCH("asm/non_matching/code_0807CC3C/sub_0807CF88.inc", u32 sub_0807CF88(u32 arg0, u8* arg1)) { + u32 signature; + s16 local1[2]; + + u32 retval; + struct_0807D1C4* ptr; + u32 e0, e1; + u16 l1prep; + + ptr = sub_0807D1C4(arg0); + + signature = 'MCZ3'; + l1prep = sub_0807D1A4((u16*)&signature, 4); + l1prep += sub_0807D1A4((u16*)arg1, ptr->field_0x0); + local1[0] = l1prep; + local1[1] = -(u32)l1prep; + e0 = sub_0807D20C(ptr->field_0x6, (const char*)arg1, ptr->field_0x0); + if (e0) { + e0 = sub_0807D184(ptr->field_0x2, (const char*)local1); + } + e1 = sub_0807D20C(ptr->field_0x8, (const char*)arg1, ptr->field_0x0); + if (e1) { + e1 = sub_0807D184(ptr->field_0x4, (const char*)local1); + } + + retval = 0; + if (e0 || e1) { + retval = 1; + } + return retval; +} +END_NONMATCH + NONMATCH("asm/non_matching/code_0807CC3C/sub_0807D008.inc", u32 sub_0807D008(u32 param_1, SaveFile* saveFile)) { u32 set_0; char auStack32[8]; @@ -138,10 +171,14 @@ u32 sub_0807D128(u16* unk_1) { 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); +u32 sub_0807D184(u32 param_1, const char* param_2) { + u32 uVar1; + + uVar1 = sub_0807D20C(param_1, param_2, 8); + if (uVar1 == 0) { + uVar1 = sub_0807D20C(param_1 + 8, param_2, 8); } + return uVar1; } u16 sub_0807D1A4(u16* unk_1, u32 unk_2) {