mirror of https://github.com/zeldaret/tmc.git
nonmatch sub_0807D008
This commit is contained in:
parent
3f54062fa5
commit
809a903207
|
@ -69,80 +69,3 @@ _0807CFFE:
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_0807D004: .4byte 0x4D435A33
|
_0807D004: .4byte 0x4D435A33
|
||||||
|
|
||||||
thumb_func_start sub_0807D008
|
|
||||||
sub_0807D008: @ 0x0807D008
|
|
||||||
push {r4, r5, r6, r7, lr}
|
|
||||||
mov r7, r8
|
|
||||||
push {r7}
|
|
||||||
sub sp, #0xc
|
|
||||||
adds r7, r1, #0
|
|
||||||
bl sub_0807D1C4
|
|
||||||
adds r5, r0, #0
|
|
||||||
ldrh r0, [r5, #2]
|
|
||||||
add r4, sp, #4
|
|
||||||
adds r1, r4, #0
|
|
||||||
bl sub_0807D0EC
|
|
||||||
adds r6, r0, #0
|
|
||||||
mov r8, r4
|
|
||||||
cmp r6, #2
|
|
||||||
bne _0807D048
|
|
||||||
ldrh r0, [r5, #6]
|
|
||||||
ldrh r2, [r5]
|
|
||||||
adds r1, r7, #0
|
|
||||||
bl sub_0807D1D8
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0807D046
|
|
||||||
ldrh r2, [r5]
|
|
||||||
mov r0, r8
|
|
||||||
adds r1, r7, #0
|
|
||||||
bl sub_0807D0A0
|
|
||||||
cmp r0, #0
|
|
||||||
bne _0807D072
|
|
||||||
_0807D046:
|
|
||||||
movs r6, #0
|
|
||||||
_0807D048:
|
|
||||||
ldrh r0, [r5, #4]
|
|
||||||
mov r1, r8
|
|
||||||
bl sub_0807D0EC
|
|
||||||
adds r4, r0, #0
|
|
||||||
cmp r4, #2
|
|
||||||
bne _0807D078
|
|
||||||
ldrh r0, [r5, #8]
|
|
||||||
ldrh r2, [r5]
|
|
||||||
adds r1, r7, #0
|
|
||||||
bl sub_0807D1D8
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0807D076
|
|
||||||
ldrh r2, [r5]
|
|
||||||
mov r0, r8
|
|
||||||
adds r1, r7, #0
|
|
||||||
bl sub_0807D0A0
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0807D076
|
|
||||||
_0807D072:
|
|
||||||
movs r0, #1
|
|
||||||
b _0807D098
|
|
||||||
_0807D076:
|
|
||||||
movs r4, #0
|
|
||||||
_0807D078:
|
|
||||||
movs r0, #0
|
|
||||||
str r0, [sp]
|
|
||||||
ldrh r2, [r5]
|
|
||||||
lsrs r2, r2, #2
|
|
||||||
movs r0, #0xa0
|
|
||||||
lsls r0, r0, #0x13
|
|
||||||
orrs r2, r0
|
|
||||||
mov r0, sp
|
|
||||||
adds r1, r7, #0
|
|
||||||
bl CpuSet
|
|
||||||
orrs r6, r4
|
|
||||||
movs r0, #0
|
|
||||||
cmp r6, #0
|
|
||||||
bne _0807D098
|
|
||||||
subs r0, #1
|
|
||||||
_0807D098:
|
|
||||||
add sp, #0xc
|
|
||||||
pop {r3}
|
|
||||||
mov r8, r3
|
|
||||||
pop {r4, r5, r6, r7, pc}
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,84 @@
|
||||||
|
.include "asm/macros.inc"
|
||||||
|
|
||||||
|
.include "constants/constants.inc"
|
||||||
|
|
||||||
|
.syntax unified
|
||||||
|
|
||||||
|
.text
|
||||||
|
|
||||||
|
push {r4, r5, r6, r7, lr}
|
||||||
|
mov r7, r8
|
||||||
|
push {r7}
|
||||||
|
sub sp, #0xc
|
||||||
|
adds r7, r1, #0
|
||||||
|
bl sub_0807D1C4
|
||||||
|
adds r5, r0, #0
|
||||||
|
ldrh r0, [r5, #2]
|
||||||
|
add r4, sp, #4
|
||||||
|
adds r1, r4, #0
|
||||||
|
bl sub_0807D0EC
|
||||||
|
adds r6, r0, #0
|
||||||
|
mov r8, r4
|
||||||
|
cmp r6, #2
|
||||||
|
bne _0807D048
|
||||||
|
ldrh r0, [r5, #6]
|
||||||
|
ldrh r2, [r5]
|
||||||
|
adds r1, r7, #0
|
||||||
|
bl sub_0807D1D8
|
||||||
|
cmp r0, #0
|
||||||
|
beq _0807D046
|
||||||
|
ldrh r2, [r5]
|
||||||
|
mov r0, r8
|
||||||
|
adds r1, r7, #0
|
||||||
|
bl sub_0807D0A0
|
||||||
|
cmp r0, #0
|
||||||
|
bne _0807D072
|
||||||
|
_0807D046:
|
||||||
|
movs r6, #0
|
||||||
|
_0807D048:
|
||||||
|
ldrh r0, [r5, #4]
|
||||||
|
mov r1, r8
|
||||||
|
bl sub_0807D0EC
|
||||||
|
adds r4, r0, #0
|
||||||
|
cmp r4, #2
|
||||||
|
bne _0807D078
|
||||||
|
ldrh r0, [r5, #8]
|
||||||
|
ldrh r2, [r5]
|
||||||
|
adds r1, r7, #0
|
||||||
|
bl sub_0807D1D8
|
||||||
|
cmp r0, #0
|
||||||
|
beq _0807D076
|
||||||
|
ldrh r2, [r5]
|
||||||
|
mov r0, r8
|
||||||
|
adds r1, r7, #0
|
||||||
|
bl sub_0807D0A0
|
||||||
|
cmp r0, #0
|
||||||
|
beq _0807D076
|
||||||
|
_0807D072:
|
||||||
|
movs r0, #1
|
||||||
|
b _0807D098
|
||||||
|
_0807D076:
|
||||||
|
movs r4, #0
|
||||||
|
_0807D078:
|
||||||
|
movs r0, #0
|
||||||
|
str r0, [sp]
|
||||||
|
ldrh r2, [r5]
|
||||||
|
lsrs r2, r2, #2
|
||||||
|
movs r0, #0xa0
|
||||||
|
lsls r0, r0, #0x13
|
||||||
|
orrs r2, r0
|
||||||
|
mov r0, sp
|
||||||
|
adds r1, r7, #0
|
||||||
|
bl CpuSet
|
||||||
|
orrs r6, r4
|
||||||
|
movs r0, #0
|
||||||
|
cmp r6, #0
|
||||||
|
bne _0807D098
|
||||||
|
subs r0, #1
|
||||||
|
_0807D098:
|
||||||
|
add sp, #0xc
|
||||||
|
pop {r3}
|
||||||
|
mov r8, r3
|
||||||
|
pop {r4, r5, r6, r7, pc}
|
||||||
|
|
||||||
|
.syntax divided
|
|
@ -1,6 +1,3 @@
|
||||||
.include "asm/macros.inc"
|
|
||||||
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
.syntax unified
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
#include "script.h"
|
#include "script.h"
|
||||||
#include "entity.h"
|
#include "entity.h"
|
||||||
|
#include "save.h"
|
||||||
|
|
||||||
extern u8 gUnk_0811E514[];
|
extern u8 gUnk_0811E514[];
|
||||||
extern u8 gUnk_0811E510[];
|
extern u8 gUnk_0811E510[];
|
||||||
|
@ -28,6 +29,47 @@ void sub_0807DAF0(Entity* entity, ScriptExecutionContext* context, u32 unk1);
|
||||||
u32 sub_0807D1D8(u32 unk_1, const char* unk_2, u32 unk_3);
|
u32 sub_0807D1D8(u32 unk_1, const char* unk_2, u32 unk_3);
|
||||||
u32 sub_0807D128(u16* unk_1);
|
u32 sub_0807D128(u16* unk_1);
|
||||||
u16 sub_0807D1A4(u16* unk_1, u32 unk_2);
|
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_0807D008.inc", u32 sub_0807D008(u32 param_1, SaveFile* saveFile)) {
|
||||||
|
u32 set_0;
|
||||||
|
char auStack32[8];
|
||||||
|
|
||||||
|
struct_0807D1C4* thing;
|
||||||
|
u32 t1;
|
||||||
|
u32 t2;
|
||||||
|
u32 ret;
|
||||||
|
u32 temp;
|
||||||
|
|
||||||
|
thing = sub_0807D1C4(param_1);
|
||||||
|
t1 = sub_0807D0EC(thing->field_0x2, auStack32);
|
||||||
|
if (t1 == 2) {
|
||||||
|
if ((sub_0807D1D8(thing->field_0x6, (char*)saveFile, thing->field_0x0) == 0) ||
|
||||||
|
(sub_0807D0A0((u16*)auStack32, (u16*)saveFile, (u32)thing->field_0x0) == 0)) {
|
||||||
|
t1 = 0;
|
||||||
|
} else {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
t2 = sub_0807D0EC(thing->field_0x4, auStack32);
|
||||||
|
if (t2 == 2) {
|
||||||
|
if ((sub_0807D1D8(thing->field_0x8, (char*)saveFile, thing->field_0x0) != 0) &&
|
||||||
|
(sub_0807D0A0((u16*)auStack32, (u16*)saveFile, (u32)thing->field_0x0) != 0)) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
t2 = 0;
|
||||||
|
}
|
||||||
|
set_0 = 0;
|
||||||
|
CpuSet(&set_0, saveFile, thing->field_0x0 >> 2 | CPU_SET_SRC_FIXED | CPU_SET_32BIT);
|
||||||
|
temp = t1 | t2;
|
||||||
|
ret = 0;
|
||||||
|
if (temp == 0) {
|
||||||
|
ret = -1;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
END_NONMATCH
|
||||||
|
|
||||||
NONMATCH("asm/non_matching/code_0807CC3C/sub_0807D0A0.inc", u32 sub_0807D0A0(u16* unk_1, u16* unk_2, u32 unk_3)) {
|
NONMATCH("asm/non_matching/code_0807CC3C/sub_0807D0A0.inc", u32 sub_0807D0A0(u16* unk_1, u16* unk_2, u32 unk_3)) {
|
||||||
u32 r0;
|
u32 r0;
|
||||||
|
@ -114,6 +156,7 @@ u16 sub_0807D1A4(u16* unk_1, u32 unk_2) {
|
||||||
return uVar1;
|
return uVar1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO properly type this array
|
||||||
struct_0807D1C4* sub_0807D1C4(u32 unk_1) {
|
struct_0807D1C4* sub_0807D1C4(u32 unk_1) {
|
||||||
return (struct_0807D1C4*)(gUnk_0811E4BC + unk_1 * 0xc);
|
return (struct_0807D1C4*)(gUnk_0811E4BC + unk_1 * 0xc);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue