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
|
||||
_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
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "functions.h"
|
||||
#include "script.h"
|
||||
#include "entity.h"
|
||||
#include "save.h"
|
||||
|
||||
extern u8 gUnk_0811E514[];
|
||||
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_0807D128(u16* unk_1);
|
||||
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)) {
|
||||
u32 r0;
|
||||
|
@ -114,6 +156,7 @@ u16 sub_0807D1A4(u16* unk_1, u32 unk_2) {
|
|||
return uVar1;
|
||||
}
|
||||
|
||||
// TODO properly type this array
|
||||
struct_0807D1C4* sub_0807D1C4(u32 unk_1) {
|
||||
return (struct_0807D1C4*)(gUnk_0811E4BC + unk_1 * 0xc);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue