mirror of https://github.com/zeldaret/tmc.git
code_08049D30, 17/20 functions matched
Split other functions into separate files.
This commit is contained in:
parent
a0f7b73e66
commit
d5c34a023d
|
|
@ -0,0 +1,155 @@
|
|||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
sub sp, #4
|
||||
adds r7, r0, #0
|
||||
mov r8, r1
|
||||
mov r0, r8
|
||||
adds r0, #0x38
|
||||
movs r1, #0x38
|
||||
adds r1, r1, r7
|
||||
mov sl, r1
|
||||
ldrb r1, [r0]
|
||||
mov r3, sl
|
||||
ldrb r0, [r3]
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0804A15A
|
||||
movs r5, #0
|
||||
mov r0, r8
|
||||
movs r3, #0x2e
|
||||
ldrsh r1, [r0, r3]
|
||||
ldr r0, [r0, #0x48]
|
||||
mov ip, r0
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
adds r1, r1, r0
|
||||
movs r3, #0x2e
|
||||
ldrsh r0, [r7, r3]
|
||||
subs r1, r1, r0
|
||||
ldr r4, [r7, #0x48]
|
||||
movs r0, #0
|
||||
ldrsb r0, [r4, r0]
|
||||
subs r6, r1, r0
|
||||
lsrs r3, r2, #1
|
||||
adds r0, r6, r3
|
||||
cmp r2, r0
|
||||
blo _0804A096
|
||||
movs r5, #1
|
||||
_0804A096:
|
||||
lsls r0, r2, #1
|
||||
mov sb, r0
|
||||
adds r0, r6, r2
|
||||
cmp sb, r0
|
||||
blo _0804A0A4
|
||||
movs r0, #2
|
||||
orrs r5, r0
|
||||
_0804A0A4:
|
||||
mov r1, r8
|
||||
movs r0, #0x32
|
||||
ldrsh r1, [r1, r0]
|
||||
str r1, [sp]
|
||||
mov r1, ip
|
||||
ldrb r1, [r1, #1]
|
||||
lsls r1, r1, #0x18
|
||||
asrs r1, r1, #0x18
|
||||
mov ip, r1
|
||||
ldr r0, [sp]
|
||||
add r0, ip
|
||||
str r0, [sp]
|
||||
movs r0, #0x32
|
||||
ldrsh r1, [r7, r0]
|
||||
ldr r0, [sp]
|
||||
subs r0, r0, r1
|
||||
movs r1, #1
|
||||
ldrsb r1, [r4, r1]
|
||||
subs r4, r0, r1
|
||||
adds r0, r4, r3
|
||||
cmp r2, r0
|
||||
blo _0804A0D4
|
||||
movs r0, #4
|
||||
orrs r5, r0
|
||||
_0804A0D4:
|
||||
adds r0, r4, r2
|
||||
cmp sb, r0
|
||||
blo _0804A0DE
|
||||
movs r0, #8
|
||||
orrs r5, r0
|
||||
_0804A0DE:
|
||||
cmp r5, #0
|
||||
beq _0804A15A
|
||||
movs r0, #5
|
||||
ands r0, r5
|
||||
cmp r0, #0xa
|
||||
beq _0804A15A
|
||||
mov r1, sl
|
||||
ldrb r0, [r1]
|
||||
bl GetLayerByIndex
|
||||
mov sb, r0
|
||||
cmp r6, #0
|
||||
bge _0804A0FA
|
||||
rsbs r6, r6, #0
|
||||
_0804A0FA:
|
||||
cmp r4, #0
|
||||
bge _0804A100
|
||||
rsbs r4, r4, #0
|
||||
_0804A100:
|
||||
cmp r6, r4
|
||||
bge _0804A12E
|
||||
movs r0, #1
|
||||
ands r0, r5
|
||||
cmp r0, #0
|
||||
beq _0804A11A
|
||||
adds r0, r7, #0
|
||||
mov r1, r8
|
||||
mov r2, sb
|
||||
bl sub_0804A168
|
||||
cmp r0, #0xff
|
||||
bne _0804A15C
|
||||
_0804A11A:
|
||||
movs r0, #4
|
||||
ands r5, r0
|
||||
cmp r5, #0
|
||||
beq _0804A15A
|
||||
adds r0, r7, #0
|
||||
mov r1, r8
|
||||
mov r2, sb
|
||||
bl sub_0804A318
|
||||
b _0804A156
|
||||
_0804A12E:
|
||||
movs r0, #4
|
||||
ands r0, r5
|
||||
cmp r0, #0
|
||||
beq _0804A144
|
||||
adds r0, r7, #0
|
||||
mov r1, r8
|
||||
mov r2, sb
|
||||
bl sub_0804A318
|
||||
cmp r0, #0xff
|
||||
bne _0804A15C
|
||||
_0804A144:
|
||||
movs r0, #1
|
||||
ands r5, r0
|
||||
cmp r5, #0
|
||||
beq _0804A15A
|
||||
adds r0, r7, #0
|
||||
mov r1, r8
|
||||
mov r2, sb
|
||||
bl sub_0804A168
|
||||
_0804A156:
|
||||
cmp r0, #0xff
|
||||
bne _0804A15C
|
||||
_0804A15A:
|
||||
movs r0, #0xff
|
||||
_0804A15C:
|
||||
add sp, #4
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.syntax divided
|
||||
|
|
@ -0,0 +1,217 @@
|
|||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
sub sp, #4
|
||||
adds r4, r0, #0
|
||||
mov sb, r1
|
||||
adds r5, r2, #0
|
||||
movs r0, #0x32
|
||||
ldrsh r1, [r1, r0]
|
||||
movs r2, #0x32
|
||||
ldrsh r0, [r4, r2]
|
||||
cmp r1, r0
|
||||
ble _0804A248
|
||||
movs r3, #0x2e
|
||||
ldrsh r0, [r4, r3]
|
||||
subs r2, r0, #4
|
||||
movs r0, #0xf
|
||||
mov sl, r0
|
||||
adds r0, r2, #0
|
||||
mov r1, sl
|
||||
ands r0, r1
|
||||
movs r7, #5
|
||||
cmp r0, #7
|
||||
bhi _0804A19E
|
||||
movs r7, #0xa
|
||||
_0804A19E:
|
||||
ldr r3, _0804A240 @ =gRoomControls
|
||||
mov r8, r3
|
||||
ldrh r1, [r3, #6]
|
||||
subs r1, r2, r1
|
||||
lsrs r1, r1, #4
|
||||
movs r6, #0x3f
|
||||
ands r1, r6
|
||||
movs r2, #0x32
|
||||
ldrsh r0, [r4, r2]
|
||||
ldrh r3, [r3, #8]
|
||||
mov ip, r3
|
||||
mov r2, ip
|
||||
subs r2, #0xa
|
||||
subs r0, r0, r2
|
||||
asrs r0, r0, #4
|
||||
ands r0, r6
|
||||
lsls r0, r0, #6
|
||||
orrs r0, r1
|
||||
mov r2, sb
|
||||
movs r3, #0x32
|
||||
ldrsh r2, [r2, r3]
|
||||
mov r3, ip
|
||||
subs r2, r2, r3
|
||||
asrs r2, r2, #4
|
||||
ands r2, r6
|
||||
lsls r2, r2, #6
|
||||
orrs r1, r2
|
||||
ldr r2, _0804A244 @ =0x00002004
|
||||
adds r0, r0, r2
|
||||
adds r0, r5, r0
|
||||
adds r1, r1, r2
|
||||
adds r1, r5, r1
|
||||
movs r2, #0x40
|
||||
adds r3, r7, #0
|
||||
bl sub_0804A4BC
|
||||
cmp r0, #0
|
||||
bne _0804A1EC
|
||||
b _0804A308
|
||||
_0804A1EC:
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r4, r1]
|
||||
adds r2, r0, #4
|
||||
mov r3, sl
|
||||
eors r7, r3
|
||||
mov r0, r8
|
||||
ldrh r1, [r0, #6]
|
||||
subs r1, r2, r1
|
||||
lsrs r1, r1, #4
|
||||
ands r1, r6
|
||||
movs r2, #0x32
|
||||
ldrsh r0, [r4, r2]
|
||||
mov r4, r8
|
||||
ldrh r3, [r4, #8]
|
||||
adds r2, r3, #0
|
||||
subs r2, #0xa
|
||||
subs r0, r0, r2
|
||||
asrs r0, r0, #4
|
||||
ands r0, r6
|
||||
lsls r0, r0, #6
|
||||
orrs r0, r1
|
||||
mov r2, sb
|
||||
movs r4, #0x32
|
||||
ldrsh r2, [r2, r4]
|
||||
subs r2, r2, r3
|
||||
asrs r2, r2, #4
|
||||
ands r2, r6
|
||||
lsls r2, r2, #6
|
||||
orrs r1, r2
|
||||
ldr r2, _0804A244 @ =0x00002004
|
||||
adds r0, r0, r2
|
||||
adds r0, r5, r0
|
||||
adds r1, r1, r2
|
||||
adds r1, r5, r1
|
||||
movs r2, #0x40
|
||||
adds r3, r7, #0
|
||||
bl sub_0804A4BC
|
||||
cmp r0, #0
|
||||
beq _0804A308
|
||||
movs r0, #0x10
|
||||
b _0804A30A
|
||||
.align 2, 0
|
||||
_0804A240: .4byte gRoomControls
|
||||
_0804A244: .4byte 0x00002004
|
||||
_0804A248:
|
||||
movs r3, #0x2e
|
||||
ldrsh r0, [r4, r3]
|
||||
subs r2, r0, #4
|
||||
adds r0, r2, #0
|
||||
movs r1, #0xf
|
||||
ands r0, r1
|
||||
movs r7, #5
|
||||
cmp r0, #7
|
||||
bhi _0804A25C
|
||||
movs r7, #0xa
|
||||
_0804A25C:
|
||||
ldr r3, _0804A300 @ =gRoomControls
|
||||
mov r8, r3
|
||||
ldrh r1, [r3, #6]
|
||||
subs r1, r2, r1
|
||||
lsrs r1, r1, #4
|
||||
movs r6, #0x3f
|
||||
ands r1, r6
|
||||
movs r2, #0x32
|
||||
ldrsh r0, [r4, r2]
|
||||
ldrh r3, [r3, #8]
|
||||
mov sl, r3
|
||||
mov r2, sl
|
||||
adds r2, #0xa
|
||||
subs r0, r0, r2
|
||||
asrs r0, r0, #4
|
||||
ands r0, r6
|
||||
lsls r0, r0, #6
|
||||
orrs r0, r1
|
||||
mov r2, sb
|
||||
movs r3, #0x32
|
||||
ldrsh r2, [r2, r3]
|
||||
mov r3, sl
|
||||
subs r2, r2, r3
|
||||
asrs r2, r2, #4
|
||||
ands r2, r6
|
||||
lsls r2, r2, #6
|
||||
orrs r1, r2
|
||||
ldr r2, _0804A304 @ =0x00002004
|
||||
adds r0, r0, r2
|
||||
adds r0, r5, r0
|
||||
adds r1, r1, r2
|
||||
adds r1, r5, r1
|
||||
movs r2, #0x40
|
||||
rsbs r2, r2, #0
|
||||
mov sl, r2
|
||||
adds r3, r7, #0
|
||||
bl sub_0804A4BC
|
||||
cmp r0, #0
|
||||
beq _0804A308
|
||||
movs r3, #0x2e
|
||||
ldrsh r0, [r4, r3]
|
||||
adds r2, r0, #4
|
||||
movs r0, #0xf
|
||||
eors r7, r0
|
||||
mov r3, r8
|
||||
ldrh r1, [r3, #6]
|
||||
subs r1, r2, r1
|
||||
lsrs r1, r1, #4
|
||||
ands r1, r6
|
||||
movs r2, #0x32
|
||||
ldrsh r0, [r4, r2]
|
||||
ldrh r3, [r3, #8]
|
||||
adds r2, r3, #0
|
||||
adds r2, #0xa
|
||||
subs r0, r0, r2
|
||||
asrs r0, r0, #4
|
||||
ands r0, r6
|
||||
lsls r0, r0, #6
|
||||
orrs r0, r1
|
||||
mov r4, sb
|
||||
movs r2, #0x32
|
||||
ldrsh r4, [r4, r2]
|
||||
subs r2, r4, r3
|
||||
asrs r2, r2, #4
|
||||
ands r2, r6
|
||||
lsls r2, r2, #6
|
||||
orrs r1, r2
|
||||
ldr r3, _0804A304 @ =0x00002004
|
||||
adds r0, r0, r3
|
||||
adds r0, r5, r0
|
||||
adds r1, r1, r3
|
||||
adds r1, r5, r1
|
||||
mov r2, sl
|
||||
adds r3, r7, #0
|
||||
bl sub_0804A4BC
|
||||
cmp r0, #0
|
||||
beq _0804A308
|
||||
movs r0, #0
|
||||
b _0804A30A
|
||||
.align 2, 0
|
||||
_0804A300: .4byte gRoomControls
|
||||
_0804A304: .4byte 0x00002004
|
||||
_0804A308:
|
||||
movs r0, #0xff
|
||||
_0804A30A:
|
||||
add sp, #4
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
|
|
@ -0,0 +1,211 @@
|
|||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
adds r5, r0, #0
|
||||
mov sl, r1
|
||||
adds r6, r2, #0
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r1, r0]
|
||||
movs r2, #0x2e
|
||||
ldrsh r0, [r5, r2]
|
||||
cmp r1, r0
|
||||
ble _0804A3F0
|
||||
movs r4, #0x32
|
||||
ldrsh r0, [r5, r4]
|
||||
subs r4, r0, #4
|
||||
adds r0, r4, #0
|
||||
movs r1, #0xf
|
||||
ands r0, r1
|
||||
movs r2, #3
|
||||
mov r8, r2
|
||||
cmp r0, #7
|
||||
bhi _0804A34C
|
||||
movs r0, #0xc
|
||||
mov r8, r0
|
||||
_0804A34C:
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r5, r1]
|
||||
ldr r2, _0804A3E8 @ =gRoomControls
|
||||
mov sb, r2
|
||||
ldrh r3, [r2, #6]
|
||||
adds r1, r3, #0
|
||||
subs r1, #0xa
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
movs r7, #0x3f
|
||||
ands r0, r7
|
||||
ldrh r2, [r2, #8]
|
||||
subs r2, r4, r2
|
||||
lsrs r2, r2, #4
|
||||
ands r2, r7
|
||||
lsls r2, r2, #6
|
||||
orrs r0, r2
|
||||
mov r4, sl
|
||||
movs r1, #0x2e
|
||||
ldrsh r4, [r4, r1]
|
||||
subs r1, r4, r3
|
||||
asrs r1, r1, #4
|
||||
ands r1, r7
|
||||
orrs r1, r2
|
||||
ldr r2, _0804A3EC @ =0x00002004
|
||||
adds r0, r0, r2
|
||||
adds r0, r6, r0
|
||||
adds r1, r1, r2
|
||||
adds r1, r6, r1
|
||||
movs r2, #1
|
||||
mov r3, r8
|
||||
bl sub_0804A4BC
|
||||
cmp r0, #0
|
||||
bne _0804A394
|
||||
b _0804A4B0
|
||||
_0804A394:
|
||||
movs r2, #0x32
|
||||
ldrsh r0, [r5, r2]
|
||||
adds r4, r0, #4
|
||||
mov r0, r8
|
||||
movs r1, #0xf
|
||||
eors r0, r1
|
||||
mov r8, r0
|
||||
movs r2, #0x2e
|
||||
ldrsh r0, [r5, r2]
|
||||
mov r5, sb
|
||||
ldrh r3, [r5, #6]
|
||||
adds r1, r3, #0
|
||||
subs r1, #0xa
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
ands r0, r7
|
||||
ldrh r2, [r5, #8]
|
||||
subs r2, r4, r2
|
||||
lsrs r2, r2, #4
|
||||
ands r2, r7
|
||||
lsls r2, r2, #6
|
||||
orrs r0, r2
|
||||
mov r4, sl
|
||||
movs r5, #0x2e
|
||||
ldrsh r1, [r4, r5]
|
||||
subs r1, r1, r3
|
||||
asrs r1, r1, #4
|
||||
ands r1, r7
|
||||
orrs r1, r2
|
||||
ldr r2, _0804A3EC @ =0x00002004
|
||||
adds r0, r0, r2
|
||||
adds r0, r6, r0
|
||||
adds r1, r1, r2
|
||||
adds r1, r6, r1
|
||||
movs r2, #1
|
||||
mov r3, r8
|
||||
bl sub_0804A4BC
|
||||
cmp r0, #0
|
||||
beq _0804A4B0
|
||||
movs r0, #8
|
||||
b _0804A4B2
|
||||
.align 2, 0
|
||||
_0804A3E8: .4byte gRoomControls
|
||||
_0804A3EC: .4byte 0x00002004
|
||||
_0804A3F0:
|
||||
movs r4, #0x32
|
||||
ldrsh r0, [r5, r4]
|
||||
subs r4, r0, #4
|
||||
adds r0, r4, #0
|
||||
movs r1, #0xf
|
||||
ands r0, r1
|
||||
movs r2, #3
|
||||
mov r8, r2
|
||||
cmp r0, #7
|
||||
bhi _0804A408
|
||||
movs r0, #0xc
|
||||
mov r8, r0
|
||||
_0804A408:
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r5, r1]
|
||||
ldr r2, _0804A4A8 @ =gRoomControls
|
||||
mov sb, r2
|
||||
ldrh r3, [r2, #6]
|
||||
adds r1, r3, #0
|
||||
adds r1, #0xa
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
movs r7, #0x3f
|
||||
ands r0, r7
|
||||
ldrh r2, [r2, #8]
|
||||
subs r2, r4, r2
|
||||
lsrs r2, r2, #4
|
||||
ands r2, r7
|
||||
lsls r2, r2, #6
|
||||
orrs r0, r2
|
||||
mov r4, sl
|
||||
movs r1, #0x2e
|
||||
ldrsh r4, [r4, r1]
|
||||
subs r1, r4, r3
|
||||
asrs r1, r1, #4
|
||||
ands r1, r7
|
||||
orrs r1, r2
|
||||
ldr r2, _0804A4AC @ =0x00002004
|
||||
adds r0, r0, r2
|
||||
adds r0, r6, r0
|
||||
adds r1, r1, r2
|
||||
adds r1, r6, r1
|
||||
movs r2, #1
|
||||
rsbs r2, r2, #0
|
||||
mov r3, r8
|
||||
bl sub_0804A4BC
|
||||
cmp r0, #0
|
||||
beq _0804A4B0
|
||||
movs r2, #0x32
|
||||
ldrsh r0, [r5, r2]
|
||||
adds r4, r0, #4
|
||||
mov r0, r8
|
||||
movs r1, #0xf
|
||||
eors r0, r1
|
||||
mov r8, r0
|
||||
movs r2, #0x2e
|
||||
ldrsh r0, [r5, r2]
|
||||
mov r5, sb
|
||||
ldrh r3, [r5, #6]
|
||||
adds r1, r3, #0
|
||||
adds r1, #0xa
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
ands r0, r7
|
||||
ldrh r2, [r5, #8]
|
||||
subs r2, r4, r2
|
||||
lsrs r2, r2, #4
|
||||
ands r2, r7
|
||||
lsls r2, r2, #6
|
||||
orrs r0, r2
|
||||
mov r4, sl
|
||||
movs r5, #0x2e
|
||||
ldrsh r1, [r4, r5]
|
||||
subs r1, r1, r3
|
||||
asrs r1, r1, #4
|
||||
ands r1, r7
|
||||
orrs r1, r2
|
||||
ldr r2, _0804A4AC @ =0x00002004
|
||||
adds r0, r0, r2
|
||||
adds r0, r6, r0
|
||||
adds r1, r1, r2
|
||||
adds r1, r6, r1
|
||||
movs r2, #1
|
||||
rsbs r2, r2, #0
|
||||
mov r3, r8
|
||||
bl sub_0804A4BC
|
||||
cmp r0, #0
|
||||
beq _0804A4B0
|
||||
movs r0, #0x18
|
||||
b _0804A4B2
|
||||
.align 2, 0
|
||||
_0804A4A8: .4byte gRoomControls
|
||||
_0804A4AC: .4byte 0x00002004
|
||||
_0804A4B0:
|
||||
movs r0, #0xff
|
||||
_0804A4B2:
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.syntax divided
|
||||
|
|
@ -428,7 +428,7 @@ SECTIONS {
|
|||
src/enemy/enemy66.o(.text);
|
||||
/* END enemies */
|
||||
src/code_08049CD4.o(.text); /* enemyUtils.c */
|
||||
asm/code_08049D30.o(.text);
|
||||
src/code_08049D30.o(.text);
|
||||
src/enemyUtils.o(.text);
|
||||
src/createEnemy.o(.text);
|
||||
src/enterPortalSubtask.o(.text);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,227 @@
|
|||
#define NENT_DEPRECATED
|
||||
#include "asm.h"
|
||||
#include "entity.h"
|
||||
#include "functions.h"
|
||||
#include "player.h"
|
||||
#include "room.h"
|
||||
|
||||
extern Entity* gUnk_020000B0;
|
||||
extern Entity* (*const gUnk_080D3BE8[])(void);
|
||||
|
||||
extern void ReplaceMonitoredEntity(Entity*, Entity*);
|
||||
|
||||
void sub_08049DCC(RoomMemory*);
|
||||
RoomMemory* sub_08049D88(void);
|
||||
|
||||
void UpdateRoomTracker(void) {
|
||||
gUnk_020354B0 = gRoomMemory;
|
||||
|
||||
do {
|
||||
if (gUnk_020354B0->area == gRoomControls.area && gUnk_020354B0->room == gRoomControls.room) {
|
||||
sub_08049DCC(gUnk_020354B0);
|
||||
return;
|
||||
}
|
||||
gUnk_020354B0++;
|
||||
|
||||
} while (gUnk_020354B0 < gRoomMemory + 8);
|
||||
gUnk_020354B0 = sub_08049D88();
|
||||
}
|
||||
|
||||
RoomMemory* sub_08049D88(void) {
|
||||
RoomMemory* r4 = gRoomMemory;
|
||||
RoomMemory* r1 = r4 + 1;
|
||||
|
||||
do {
|
||||
if (r1->unk_02 > r4->unk_02) {
|
||||
r4 = r1;
|
||||
}
|
||||
r1++;
|
||||
} while (r1 < gRoomMemory + 8);
|
||||
|
||||
r4->area = gRoomControls.area;
|
||||
r4->room = gRoomControls.room;
|
||||
|
||||
r4->unk_02 = 0xFFFF;
|
||||
r4->unk_04 = 0;
|
||||
|
||||
sub_08049DCC(r4);
|
||||
|
||||
return r4;
|
||||
}
|
||||
|
||||
void sub_08049DCC(RoomMemory* rm) {
|
||||
RoomMemory* r1 = gRoomMemory;
|
||||
|
||||
do {
|
||||
if (r1->unk_02 < rm->unk_02) {
|
||||
r1->unk_02++;
|
||||
}
|
||||
r1++;
|
||||
} while (r1 < gRoomMemory + 8);
|
||||
|
||||
rm->unk_02 = 0;
|
||||
}
|
||||
|
||||
Entity* sub_08049DF4(u32 arg0) {
|
||||
if (gUnk_020000B0 != NULL) {
|
||||
return gUnk_020000B0;
|
||||
}
|
||||
return gUnk_080D3BE8[arg0]();
|
||||
}
|
||||
|
||||
Entity* sub_08049E18(void) {
|
||||
if ((gPlayerState.field_0x3c[0] == 0) && !(gPlayerState.flags & 0x22189b75)) {
|
||||
gUnk_020000B0 = &gPlayerEntity;
|
||||
return &gPlayerEntity;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Entity* sub_08049E4C(void) {
|
||||
if ((gPlayerState.field_0x3c[0] == 0) && !(gPlayerState.flags & 0x22189bf5)) {
|
||||
gUnk_020000B0 = &gPlayerEntity;
|
||||
return &gPlayerEntity;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Entity* sub_08049E80(void) {
|
||||
if ((gPlayerState.field_0x3c[0] != 0) || !(gPlayerState.flags & 0x80)) {
|
||||
return NULL;
|
||||
}
|
||||
gUnk_020000B0 = &gPlayerEntity;
|
||||
return &gPlayerEntity;
|
||||
}
|
||||
|
||||
Entity* sub_08049EB0(void) {
|
||||
if ((gPlayerState.field_0x3c[0] == 0) && !(gPlayerState.flags & 0x80190)) {
|
||||
gUnk_020000B0 = &gPlayerEntity;
|
||||
return &gPlayerEntity;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
u32 sub_08049EE4(Entity* ent) {
|
||||
GenericEntity* genEnt = (GenericEntity*)ent;
|
||||
|
||||
u16 tempLO = genEnt->field_0x70.HALF.LO + 4 * genEnt->field_0x6e.HALF.LO;
|
||||
u16 tempHI = genEnt->field_0x70.HALF.HI + 4 * genEnt->field_0x6e.HALF.HI;
|
||||
|
||||
return CalculateDirectionTo(genEnt->base.x.HALF.HI, genEnt->base.y.HALF.HI, tempLO, tempHI);
|
||||
}
|
||||
|
||||
bool32 sub_08049F1C(Entity* entA, Entity* entB, s32 maxDist) {
|
||||
if ((entA->collisionLayer & entB->collisionLayer) != 0) {
|
||||
s32 xDiff = entB->x.HALF.HI - entA->x.HALF.HI;
|
||||
s32 yDiff = entB->y.HALF.HI - entA->y.HALF.HI;
|
||||
s32 maxDistSq = maxDist * maxDist;
|
||||
s32 distSq = xDiff * xDiff + yDiff * yDiff;
|
||||
|
||||
if (maxDistSq >= distSq) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 PlayerInRange(Entity* ent, u32 arg1, s32 maxDist) {
|
||||
Entity* tempEnt = sub_08049DF4(arg1);
|
||||
if (tempEnt == NULL) {
|
||||
return FALSE;
|
||||
} else {
|
||||
return sub_08049F1C(ent, tempEnt, maxDist);
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_08049F84(Entity* ent, s32 arg2) {
|
||||
Entity* target = sub_08049DF4(arg2);
|
||||
|
||||
if (target == NULL) {
|
||||
return 0xFF;
|
||||
} else {
|
||||
return GetFacingDirection(ent, target);
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_08049FA0(Entity* ent) {
|
||||
GenericEntity* genEnt = (GenericEntity*)ent;
|
||||
u32 temp = 8 * genEnt->field_0x6e.HALF.LO;
|
||||
|
||||
if (temp >= genEnt->base.x.HALF.HI - genEnt->field_0x70.HALF_U.LO) {
|
||||
temp = 8 * genEnt->field_0x6e.HALF.HI;
|
||||
if (temp >= genEnt->base.y.HALF.HI - genEnt->field_0x70.HALF_U.HI) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 sub_08049FDC(Entity* ent, u32 arg1) {
|
||||
u32 temp;
|
||||
GenericEntity* genEnt = (GenericEntity*)ent;
|
||||
GenericEntity* tempEnt = (GenericEntity*)sub_08049DF4(arg1);
|
||||
|
||||
if (tempEnt != NULL) {
|
||||
temp = 8 * genEnt->field_0x6e.HALF.LO;
|
||||
if (temp >= tempEnt->base.x.HALF.HI - genEnt->field_0x70.HALF_U.LO) {
|
||||
temp = 8 * genEnt->field_0x6e.HALF.HI;
|
||||
if (temp >= tempEnt->base.y.HALF.HI - genEnt->field_0x70.HALF_U.HI) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u32 sub_0804A024(Entity* ent, u32 arg1, u32 arg2) {
|
||||
Entity* tempEnt = sub_08049DF4(arg1);
|
||||
if (tempEnt == NULL) {
|
||||
return 0xFF;
|
||||
} else {
|
||||
return sub_0804A044(ent, tempEnt, arg2);
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/code_08048D30/sub_0804A044.s", u32 sub_0804A044(Entity* entA, Entity* entB, u32 arg2));
|
||||
|
||||
ASM_FUNC("asm/non_matching/code_08048D30/sub_0804A168.s", void sub_0804A168(void)); // ?
|
||||
|
||||
ASM_FUNC("asm/non_matching/code_08048D30/sub_0804A318.s", void sub_0804A318(void)); // ?
|
||||
|
||||
bool32 sub_0804A4BC(u8* arg0, u8* arg1, s32 arg2, u32 arg3) {
|
||||
while (arg0 != arg1) {
|
||||
u8 r0 = *arg0;
|
||||
|
||||
if (r0 != 0) {
|
||||
if (r0 > 0xF) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
r0 &= arg3;
|
||||
if (r0 != 0) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
arg0 += arg2;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_0804A4E4(Entity* entA, Entity* entB) {
|
||||
GenericEntity* r5 = (GenericEntity*)entA;
|
||||
GenericEntity* r6 = (GenericEntity*)entB;
|
||||
|
||||
r6->field_0x6c.HALF.HI = (r5->field_0x6c.HALF.HI & 0x40) | 4;
|
||||
r6->field_0x6c.HALF.LO = r5->field_0x6c.HALF.LO;
|
||||
r6->field_0x70.HALF.LO = r5->field_0x70.HALF.LO;
|
||||
r6->field_0x70.HALF.HI = r5->field_0x70.HALF.HI;
|
||||
r6->field_0x6e.HALF.LO = r5->field_0x6e.HALF.LO;
|
||||
r6->field_0x6e.HALF.HI = r5->field_0x6e.HALF.HI;
|
||||
|
||||
CopyPositionAndSpriteOffset(&r5->base, &r6->base);
|
||||
|
||||
if (r5->field_0x6c.HALF.HI & 0x40) {
|
||||
ReplaceMonitoredEntity(&r5->base, &r6->base);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue