mirror of https://github.com/zeldaret/tmc.git
more entity stuff
This commit is contained in:
parent
08784153ef
commit
6250d7ce72
|
@ -5,536 +5,6 @@
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_0805E870
|
|
||||||
sub_0805E870: @ 0x0805E870
|
|
||||||
sub sp, #4
|
|
||||||
movs r1, #0
|
|
||||||
str r1, [sp]
|
|
||||||
ldr r1, _0805E890 @ =0x040000D4
|
|
||||||
mov r2, sp
|
|
||||||
str r2, [r1]
|
|
||||||
str r0, [r1, #4]
|
|
||||||
ldr r0, _0805E894 @ =0x85000022
|
|
||||||
str r0, [r1, #8]
|
|
||||||
ldr r0, [r1, #8]
|
|
||||||
ldr r1, _0805E898 @ =gUnk_03003DBC
|
|
||||||
ldrb r0, [r1]
|
|
||||||
subs r0, #1
|
|
||||||
strb r0, [r1]
|
|
||||||
add sp, #4
|
|
||||||
bx lr
|
|
||||||
.align 2, 0
|
|
||||||
_0805E890: .4byte 0x040000D4
|
|
||||||
_0805E894: .4byte 0x85000022
|
|
||||||
_0805E898: .4byte gUnk_03003DBC
|
|
||||||
|
|
||||||
thumb_func_start sub_0805E89C
|
|
||||||
sub_0805E89C: @ 0x0805E89C
|
|
||||||
push {r4, r5, r6, lr}
|
|
||||||
ldr r5, _0805E8CC @ =gUnk_03003D70
|
|
||||||
ldr r0, [r5, #4]
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0805E8C8
|
|
||||||
_0805E8A6:
|
|
||||||
ldr r0, [r5, #4]
|
|
||||||
adds r6, r5, #0
|
|
||||||
adds r6, #8
|
|
||||||
cmp r0, r5
|
|
||||||
beq _0805E8BC
|
|
||||||
_0805E8B0:
|
|
||||||
ldr r4, [r0, #4]
|
|
||||||
bl sub_0805E79C
|
|
||||||
adds r0, r4, #0
|
|
||||||
cmp r0, r5
|
|
||||||
bne _0805E8B0
|
|
||||||
_0805E8BC:
|
|
||||||
adds r5, r6, #0
|
|
||||||
ldr r0, _0805E8D0 @ =gUnk_03003DB8
|
|
||||||
cmp r5, r0
|
|
||||||
blo _0805E8A6
|
|
||||||
bl sub_0805E84C
|
|
||||||
_0805E8C8:
|
|
||||||
pop {r4, r5, r6, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0805E8CC: .4byte gUnk_03003D70
|
|
||||||
_0805E8D0: .4byte gUnk_03003DB8
|
|
||||||
|
|
||||||
thumb_func_start sub_0805E8D4
|
|
||||||
sub_0805E8D4: @ 0x0805E8D4
|
|
||||||
push {lr}
|
|
||||||
ldr r1, _0805E8F0 @ =gUnk_02033290
|
|
||||||
movs r2, #0x80
|
|
||||||
lsls r2, r2, #4
|
|
||||||
adds r0, r1, r2
|
|
||||||
cmp r1, r0
|
|
||||||
bhs _0805E8FA
|
|
||||||
adds r2, r0, #0
|
|
||||||
_0805E8E4:
|
|
||||||
ldr r0, [r1]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _0805E8F4
|
|
||||||
adds r0, r1, #0
|
|
||||||
b _0805E8FC
|
|
||||||
.align 2, 0
|
|
||||||
_0805E8F0: .4byte gUnk_02033290
|
|
||||||
_0805E8F4:
|
|
||||||
adds r1, #0x40
|
|
||||||
cmp r1, r2
|
|
||||||
blo _0805E8E4
|
|
||||||
_0805E8FA:
|
|
||||||
movs r0, #0
|
|
||||||
_0805E8FC:
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_0805E900
|
|
||||||
sub_0805E900: @ 0x0805E900
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldr r0, [r4, #4]
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0805E926
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0805E92C
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0805EA98
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #0x40
|
|
||||||
bl _DmaZero
|
|
||||||
ldr r1, _0805E928 @ =gUnk_020354B4
|
|
||||||
ldrb r0, [r1]
|
|
||||||
subs r0, #1
|
|
||||||
strb r0, [r1]
|
|
||||||
_0805E926:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0805E928: .4byte gUnk_020354B4
|
|
||||||
|
|
||||||
thumb_func_start sub_0805E92C
|
|
||||||
sub_0805E92C: @ 0x0805E92C
|
|
||||||
push {lr}
|
|
||||||
ldr r2, _0805E94C @ =gArea
|
|
||||||
ldr r1, _0805E950 @ =0x00000888
|
|
||||||
adds r3, r2, r1
|
|
||||||
ldr r1, [r3]
|
|
||||||
cmp r0, r1
|
|
||||||
bne _0805E94A
|
|
||||||
movs r0, #0
|
|
||||||
str r0, [r3]
|
|
||||||
ldr r3, _0805E954 @ =0x0000088C
|
|
||||||
adds r1, r2, r3
|
|
||||||
str r0, [r1]
|
|
||||||
adds r3, #4
|
|
||||||
adds r1, r2, r3
|
|
||||||
str r0, [r1]
|
|
||||||
_0805E94A:
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0805E94C: .4byte gArea
|
|
||||||
_0805E950: .4byte 0x00000888
|
|
||||||
_0805E954: .4byte 0x0000088C
|
|
||||||
|
|
||||||
thumb_func_start sub_0805E958
|
|
||||||
sub_0805E958: @ 0x0805E958
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _0805E96C @ =gUnk_03003D70
|
|
||||||
ldr r1, _0805E970 @ =gUnk_020369F0
|
|
||||||
movs r2, #0x48
|
|
||||||
bl sub_0801D66C
|
|
||||||
bl sub_0805E98C
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0805E96C: .4byte gUnk_03003D70
|
|
||||||
_0805E970: .4byte gUnk_020369F0
|
|
||||||
|
|
||||||
thumb_func_start sub_0805E974
|
|
||||||
sub_0805E974: @ 0x0805E974
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _0805E984 @ =gUnk_020369F0
|
|
||||||
ldr r1, _0805E988 @ =gUnk_03003D70
|
|
||||||
movs r2, #0x48
|
|
||||||
bl sub_0801D66C
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0805E984: .4byte gUnk_020369F0
|
|
||||||
_0805E988: .4byte gUnk_03003D70
|
|
||||||
|
|
||||||
thumb_func_start sub_0805E98C
|
|
||||||
sub_0805E98C: @ 0x0805E98C
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _0805E9A4 @ =gUnk_03003D70
|
|
||||||
adds r1, r0, #0
|
|
||||||
adds r1, #0x48
|
|
||||||
cmp r0, r1
|
|
||||||
bhs _0805E9A2
|
|
||||||
_0805E998:
|
|
||||||
str r0, [r0]
|
|
||||||
str r0, [r0, #4]
|
|
||||||
adds r0, #8
|
|
||||||
cmp r0, r1
|
|
||||||
blo _0805E998
|
|
||||||
_0805E9A2:
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0805E9A4: .4byte gUnk_03003D70
|
|
||||||
|
|
||||||
thumb_func_start sub_0805E9A8
|
|
||||||
sub_0805E9A8: @ 0x0805E9A8
|
|
||||||
push {r4, r5, r6, r7, lr}
|
|
||||||
mov r7, r8
|
|
||||||
push {r7}
|
|
||||||
ldr r3, _0805E9F0 @ =gUnk_03003D70
|
|
||||||
movs r7, #0x10
|
|
||||||
movs r0, #0x48
|
|
||||||
adds r0, r0, r3
|
|
||||||
mov r8, r0
|
|
||||||
_0805E9B8:
|
|
||||||
ldr r2, [r3, #4]
|
|
||||||
adds r4, r3, #0
|
|
||||||
adds r4, #8
|
|
||||||
cmp r2, r3
|
|
||||||
beq _0805E9E2
|
|
||||||
movs r6, #0xfd
|
|
||||||
movs r5, #0x20
|
|
||||||
_0805E9C6:
|
|
||||||
ldrb r0, [r2, #0x10]
|
|
||||||
adds r1, r6, #0
|
|
||||||
ands r1, r0
|
|
||||||
strb r1, [r2, #0x10]
|
|
||||||
adds r0, r1, #0
|
|
||||||
ands r0, r5
|
|
||||||
cmp r0, #0
|
|
||||||
bne _0805E9DC
|
|
||||||
adds r0, r1, #0
|
|
||||||
orrs r0, r7
|
|
||||||
strb r0, [r2, #0x10]
|
|
||||||
_0805E9DC:
|
|
||||||
ldr r2, [r2, #4]
|
|
||||||
cmp r2, r3
|
|
||||||
bne _0805E9C6
|
|
||||||
_0805E9E2:
|
|
||||||
adds r3, r4, #0
|
|
||||||
cmp r3, r8
|
|
||||||
blo _0805E9B8
|
|
||||||
pop {r3}
|
|
||||||
mov r8, r3
|
|
||||||
pop {r4, r5, r6, r7, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0805E9F0: .4byte gUnk_03003D70
|
|
||||||
|
|
||||||
thumb_func_start sub_0805E9F4
|
|
||||||
sub_0805E9F4: @ 0x0805E9F4
|
|
||||||
push {r4, r5, r6, lr}
|
|
||||||
ldr r5, _0805EA24 @ =gUnk_03003D70
|
|
||||||
_0805E9F8:
|
|
||||||
ldr r2, [r5, #4]
|
|
||||||
adds r6, r5, #0
|
|
||||||
adds r6, #8
|
|
||||||
cmp r2, r5
|
|
||||||
beq _0805EA1A
|
|
||||||
_0805EA02:
|
|
||||||
ldr r4, [r2, #4]
|
|
||||||
ldrb r1, [r2, #0x10]
|
|
||||||
movs r0, #0x10
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0805EA14
|
|
||||||
adds r0, r2, #0
|
|
||||||
bl sub_0805E79C
|
|
||||||
_0805EA14:
|
|
||||||
adds r2, r4, #0
|
|
||||||
cmp r2, r5
|
|
||||||
bne _0805EA02
|
|
||||||
_0805EA1A:
|
|
||||||
adds r5, r6, #0
|
|
||||||
ldr r0, _0805EA28 @ =gUnk_03003DB8
|
|
||||||
cmp r5, r0
|
|
||||||
blo _0805E9F8
|
|
||||||
pop {r4, r5, r6, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0805EA24: .4byte gUnk_03003D70
|
|
||||||
_0805EA28: .4byte gUnk_03003DB8
|
|
||||||
|
|
||||||
thumb_func_start sub_0805EA2C
|
|
||||||
sub_0805EA2C: @ 0x0805EA2C
|
|
||||||
push {lr}
|
|
||||||
adds r2, r0, #0
|
|
||||||
lsls r1, r1, #3
|
|
||||||
ldr r0, _0805EA5C @ =gUnk_03003D70
|
|
||||||
adds r1, r1, r0
|
|
||||||
str r1, [r2, #4]
|
|
||||||
ldr r0, [r1]
|
|
||||||
str r0, [r2]
|
|
||||||
str r2, [r0, #4]
|
|
||||||
str r2, [r1]
|
|
||||||
ldrb r0, [r2, #8]
|
|
||||||
cmp r0, #9
|
|
||||||
beq _0805EA64
|
|
||||||
adds r3, r2, #0
|
|
||||||
adds r3, #0x29
|
|
||||||
ldrb r1, [r3]
|
|
||||||
movs r0, #8
|
|
||||||
rsbs r0, r0, #0
|
|
||||||
ands r0, r1
|
|
||||||
movs r1, #4
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r3]
|
|
||||||
ldr r1, _0805EA60 @ =gUnk_03003DBC
|
|
||||||
b _0805EA66
|
|
||||||
.align 2, 0
|
|
||||||
_0805EA5C: .4byte gUnk_03003D70
|
|
||||||
_0805EA60: .4byte gUnk_03003DBC
|
|
||||||
_0805EA64:
|
|
||||||
ldr r1, _0805EA74 @ =gUnk_020354B4
|
|
||||||
_0805EA66:
|
|
||||||
ldrb r0, [r1]
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r1]
|
|
||||||
adds r0, r2, #0
|
|
||||||
bl sub_0805E374
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0805EA74: .4byte gUnk_020354B4
|
|
||||||
|
|
||||||
thumb_func_start sub_0805EA78
|
|
||||||
sub_0805EA78: @ 0x0805EA78
|
|
||||||
push {r4, r5, lr}
|
|
||||||
adds r5, r0, #0
|
|
||||||
adds r4, r1, #0
|
|
||||||
bl sub_0805EA98
|
|
||||||
lsls r4, r4, #3
|
|
||||||
ldr r0, _0805EA94 @ =gUnk_03003D70
|
|
||||||
adds r4, r4, r0
|
|
||||||
str r4, [r5]
|
|
||||||
ldr r0, [r4, #4]
|
|
||||||
str r0, [r5, #4]
|
|
||||||
str r5, [r0]
|
|
||||||
str r5, [r4, #4]
|
|
||||||
pop {r4, r5, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0805EA94: .4byte gUnk_03003D70
|
|
||||||
|
|
||||||
thumb_func_start sub_0805EA98
|
|
||||||
sub_0805EA98: @ 0x0805EA98
|
|
||||||
push {lr}
|
|
||||||
adds r2, r0, #0
|
|
||||||
ldr r1, _0805EAB8 @ =gUnk_03003DD0
|
|
||||||
ldr r0, [r1, #8]
|
|
||||||
cmp r2, r0
|
|
||||||
bne _0805EAA8
|
|
||||||
ldr r0, [r2]
|
|
||||||
str r0, [r1, #8]
|
|
||||||
_0805EAA8:
|
|
||||||
ldr r1, [r2]
|
|
||||||
ldr r0, [r2, #4]
|
|
||||||
str r0, [r1, #4]
|
|
||||||
ldr r1, [r2, #4]
|
|
||||||
ldr r0, [r2]
|
|
||||||
str r0, [r1]
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0805EAB8: .4byte gUnk_03003DD0
|
|
||||||
|
|
||||||
thumb_func_start sub_0805EABC
|
|
||||||
sub_0805EABC: @ 0x0805EABC
|
|
||||||
push {r4, r5, r6, r7, lr}
|
|
||||||
adds r6, r0, #0
|
|
||||||
ldr r4, _0805EAE8 @ =gUnk_03003D70
|
|
||||||
adds r7, r4, #0
|
|
||||||
adds r7, #0x48
|
|
||||||
_0805EAC6:
|
|
||||||
ldr r3, [r4, #4]
|
|
||||||
cmp r3, r4
|
|
||||||
beq _0805EAF6
|
|
||||||
ldr r5, _0805EAEC @ =0x0000FFFF
|
|
||||||
_0805EACE:
|
|
||||||
cmp r3, r6
|
|
||||||
beq _0805EAF0
|
|
||||||
ldrh r0, [r3, #8]
|
|
||||||
ldrh r2, [r6, #8]
|
|
||||||
adds r1, r5, #0
|
|
||||||
ands r1, r0
|
|
||||||
adds r0, r5, #0
|
|
||||||
ands r0, r2
|
|
||||||
cmp r1, r0
|
|
||||||
bne _0805EAF0
|
|
||||||
movs r0, #1
|
|
||||||
b _0805EAFE
|
|
||||||
.align 2, 0
|
|
||||||
_0805EAE8: .4byte gUnk_03003D70
|
|
||||||
_0805EAEC: .4byte 0x0000FFFF
|
|
||||||
_0805EAF0:
|
|
||||||
ldr r3, [r3, #4]
|
|
||||||
cmp r3, r4
|
|
||||||
bne _0805EACE
|
|
||||||
_0805EAF6:
|
|
||||||
adds r4, #8
|
|
||||||
cmp r4, r7
|
|
||||||
blo _0805EAC6
|
|
||||||
movs r0, #0
|
|
||||||
_0805EAFE:
|
|
||||||
pop {r4, r5, r6, r7, pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_0805EB00
|
|
||||||
sub_0805EB00: @ 0x0805EB00
|
|
||||||
push {r4, lr}
|
|
||||||
adds r3, r0, #0
|
|
||||||
lsls r2, r2, #3
|
|
||||||
ldr r0, _0805EB28 @ =gUnk_03003D70
|
|
||||||
adds r2, r2, r0
|
|
||||||
ldr r0, [r2, #4]
|
|
||||||
cmp r0, r2
|
|
||||||
beq _0805EB22
|
|
||||||
_0805EB10:
|
|
||||||
ldrb r4, [r0, #8]
|
|
||||||
cmp r3, r4
|
|
||||||
bne _0805EB1C
|
|
||||||
ldrb r4, [r0, #9]
|
|
||||||
cmp r1, r4
|
|
||||||
beq _0805EB24
|
|
||||||
_0805EB1C:
|
|
||||||
ldr r0, [r0, #4]
|
|
||||||
cmp r0, r2
|
|
||||||
bne _0805EB10
|
|
||||||
_0805EB22:
|
|
||||||
movs r0, #0
|
|
||||||
_0805EB24:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0805EB28: .4byte gUnk_03003D70
|
|
||||||
|
|
||||||
thumb_func_start sub_0805EB2C
|
|
||||||
sub_0805EB2C: @ 0x0805EB2C
|
|
||||||
push {r4, r5, r6, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldr r5, [sp, #0x10]
|
|
||||||
lsls r2, r2, #3
|
|
||||||
ldr r0, _0805EB60 @ =gUnk_03003D70
|
|
||||||
adds r2, r2, r0
|
|
||||||
ldr r0, [r2, #4]
|
|
||||||
cmp r0, r2
|
|
||||||
beq _0805EB5C
|
|
||||||
_0805EB3E:
|
|
||||||
ldrb r6, [r0, #8]
|
|
||||||
cmp r4, r6
|
|
||||||
bne _0805EB56
|
|
||||||
ldrb r6, [r0, #9]
|
|
||||||
cmp r1, r6
|
|
||||||
bne _0805EB56
|
|
||||||
ldrb r6, [r0, #0xa]
|
|
||||||
cmp r3, r6
|
|
||||||
bne _0805EB56
|
|
||||||
ldrb r6, [r0, #0xb]
|
|
||||||
cmp r5, r6
|
|
||||||
beq _0805EB5E
|
|
||||||
_0805EB56:
|
|
||||||
ldr r0, [r0, #4]
|
|
||||||
cmp r0, r2
|
|
||||||
bne _0805EB3E
|
|
||||||
_0805EB5C:
|
|
||||||
movs r0, #0
|
|
||||||
_0805EB5E:
|
|
||||||
pop {r4, r5, r6, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0805EB60: .4byte gUnk_03003D70
|
|
||||||
|
|
||||||
thumb_func_start sub_0805EB64
|
|
||||||
sub_0805EB64: @ 0x0805EB64
|
|
||||||
push {r4, r5, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
lsls r1, r1, #3
|
|
||||||
ldr r0, _0805EB88 @ =gUnk_03003D70
|
|
||||||
adds r3, r1, r0
|
|
||||||
ldr r2, [r4, #4]
|
|
||||||
cmp r2, r3
|
|
||||||
beq _0805EB96
|
|
||||||
ldr r5, _0805EB8C @ =0x0000FFFF
|
|
||||||
ldrh r4, [r4, #8]
|
|
||||||
_0805EB78:
|
|
||||||
ldrh r1, [r2, #8]
|
|
||||||
adds r0, r5, #0
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, r4
|
|
||||||
bne _0805EB90
|
|
||||||
adds r0, r2, #0
|
|
||||||
b _0805EB98
|
|
||||||
.align 2, 0
|
|
||||||
_0805EB88: .4byte gUnk_03003D70
|
|
||||||
_0805EB8C: .4byte 0x0000FFFF
|
|
||||||
_0805EB90:
|
|
||||||
ldr r2, [r2, #4]
|
|
||||||
cmp r2, r3
|
|
||||||
bne _0805EB78
|
|
||||||
_0805EB96:
|
|
||||||
movs r0, #0
|
|
||||||
_0805EB98:
|
|
||||||
pop {r4, r5, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_0805EB9C
|
|
||||||
sub_0805EB9C: @ 0x0805EB9C
|
|
||||||
push {r4, r5, lr}
|
|
||||||
adds r3, r0, #0
|
|
||||||
ldr r2, _0805EBC8 @ =gUnk_03003D70
|
|
||||||
adds r4, r2, #0
|
|
||||||
adds r4, #0x48
|
|
||||||
_0805EBA6:
|
|
||||||
ldr r0, [r2, #4]
|
|
||||||
cmp r0, r2
|
|
||||||
beq _0805EBBE
|
|
||||||
_0805EBAC:
|
|
||||||
ldrb r5, [r0, #8]
|
|
||||||
cmp r3, r5
|
|
||||||
bne _0805EBB8
|
|
||||||
ldrb r5, [r0, #9]
|
|
||||||
cmp r1, r5
|
|
||||||
beq _0805EBC6
|
|
||||||
_0805EBB8:
|
|
||||||
ldr r0, [r0, #4]
|
|
||||||
cmp r0, r2
|
|
||||||
bne _0805EBAC
|
|
||||||
_0805EBBE:
|
|
||||||
adds r2, #8
|
|
||||||
cmp r2, r4
|
|
||||||
blo _0805EBA6
|
|
||||||
movs r0, #0
|
|
||||||
_0805EBC6:
|
|
||||||
pop {r4, r5, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0805EBC8: .4byte gUnk_03003D70
|
|
||||||
|
|
||||||
thumb_func_start sub_0805EBCC
|
|
||||||
sub_0805EBCC: @ 0x0805EBCC
|
|
||||||
push {r4, r5, r6, lr}
|
|
||||||
ldr r5, _0805EBFC @ =gUnk_03003D70
|
|
||||||
_0805EBD0:
|
|
||||||
ldr r1, [r5, #4]
|
|
||||||
adds r6, r5, #0
|
|
||||||
adds r6, #8
|
|
||||||
cmp r1, r5
|
|
||||||
beq _0805EBEE
|
|
||||||
_0805EBDA:
|
|
||||||
ldr r4, [r1, #4]
|
|
||||||
ldrb r0, [r1, #8]
|
|
||||||
cmp r0, #3
|
|
||||||
bne _0805EBE8
|
|
||||||
adds r0, r1, #0
|
|
||||||
bl DeleteEntity
|
|
||||||
_0805EBE8:
|
|
||||||
adds r1, r4, #0
|
|
||||||
cmp r1, r5
|
|
||||||
bne _0805EBDA
|
|
||||||
_0805EBEE:
|
|
||||||
adds r5, r6, #0
|
|
||||||
ldr r0, _0805EC00 @ =gUnk_03003DB8
|
|
||||||
cmp r5, r0
|
|
||||||
blo _0805EBD0
|
|
||||||
bl sub_0805E84C
|
|
||||||
pop {r4, r5, r6, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0805EBFC: .4byte gUnk_03003D70
|
|
||||||
_0805EC00: .4byte gUnk_03003DB8
|
|
||||||
|
|
||||||
thumb_func_start sub_0805EC04
|
thumb_func_start sub_0805EC04
|
||||||
sub_0805EC04: @ 0x0805EC04
|
sub_0805EC04: @ 0x0805EC04
|
||||||
push {r4, r5, r6, r7, lr}
|
push {r4, r5, r6, r7, lr}
|
||||||
|
|
|
@ -17,6 +17,10 @@ typedef struct {
|
||||||
u8 filler4[0x835];
|
u8 filler4[0x835];
|
||||||
u32 musicIndex;
|
u32 musicIndex;
|
||||||
u32 pMusicIndex;
|
u32 pMusicIndex;
|
||||||
|
u8 filler5[0x20];
|
||||||
|
u32 unk2;
|
||||||
|
u32 unk3;
|
||||||
|
u32 unk4;
|
||||||
} Area;
|
} Area;
|
||||||
|
|
||||||
extern Area gArea;
|
extern Area gArea;
|
||||||
|
|
|
@ -26,7 +26,7 @@ typedef struct {
|
||||||
} BoundingBox;
|
} BoundingBox;
|
||||||
|
|
||||||
typedef struct Entity {
|
typedef struct Entity {
|
||||||
/*0x00*/ u32* field_0x0;
|
/*0x00*/ struct Entity* field_0x0;
|
||||||
/*0x04*/ struct Entity* field_0x4;
|
/*0x04*/ struct Entity* field_0x4;
|
||||||
/*0x08*/ EntityType entityType;
|
/*0x08*/ EntityType entityType;
|
||||||
/*0x0c*/ u8 action;
|
/*0x0c*/ u8 action;
|
||||||
|
|
|
@ -531,7 +531,7 @@ SECTIONS {
|
||||||
asm/code_0805E3B0.o(.text);
|
asm/code_0805E3B0.o(.text);
|
||||||
asm/getEmptyEntity.o(.text);
|
asm/getEmptyEntity.o(.text);
|
||||||
src/entity.o(.text);
|
src/entity.o(.text);
|
||||||
asm/code_0805E84C.o(.text);
|
asm/code_0805E744.o(.text);
|
||||||
/* npcs */
|
/* npcs */
|
||||||
src/npc/gentari.o(.text);
|
src/npc/gentari.o(.text);
|
||||||
src/npc/festari.o(.text);
|
src/npc/festari.o(.text);
|
||||||
|
|
339
src/entity.c
339
src/entity.c
|
@ -1,6 +1,13 @@
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "entity.h"
|
#include "entity.h"
|
||||||
|
|
||||||
|
typedef struct OtherEntity {
|
||||||
|
struct OtherEntity* prev;
|
||||||
|
struct OtherEntity* next;
|
||||||
|
Entity* field_0x8;
|
||||||
|
u8 field_0xC[0x34];
|
||||||
|
} OtherEntity;
|
||||||
|
|
||||||
extern Entity gUnk_030011E8[7];
|
extern Entity gUnk_030011E8[7];
|
||||||
|
|
||||||
Entity* sub_0805E744(void)
|
Entity* sub_0805E744(void)
|
||||||
|
@ -19,16 +26,18 @@ Entity* sub_0805E744(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
extern Entity* GetEmptyEntity();
|
extern Entity* GetEmptyEntity();
|
||||||
extern Entity* sub_0805E8D4();
|
OtherEntity* sub_0805E8D4();
|
||||||
|
|
||||||
Entity* sub_0805E768(int type)
|
typedef void* (*Getter)(void);
|
||||||
|
|
||||||
|
void* sub_0805E768(int type)
|
||||||
|
|
||||||
{
|
{
|
||||||
Entity* (*getter)(void) = NULL;
|
Getter getter = NULL;
|
||||||
if (type == 9) {
|
if (type == 9) {
|
||||||
getter = sub_0805E8D4;
|
getter = (Getter)sub_0805E8D4;
|
||||||
} else {
|
} else {
|
||||||
getter = GetEmptyEntity;
|
getter = (Getter)GetEmptyEntity;
|
||||||
}
|
}
|
||||||
return getter();
|
return getter();
|
||||||
}
|
}
|
||||||
|
@ -41,7 +50,7 @@ typedef struct {
|
||||||
|
|
||||||
extern struct_03003DD0 gUnk_03003DD0;
|
extern struct_03003DD0 gUnk_03003DD0;
|
||||||
extern u32 _call_via_r0(u32*);
|
extern u32 _call_via_r0(u32*);
|
||||||
extern void gUnk_03005F24();
|
extern u32 gUnk_03005F24;
|
||||||
extern void sub_0805E79C(Entity*);
|
extern void sub_0805E79C(Entity*);
|
||||||
|
|
||||||
void DeleteThisEntity(void)
|
void DeleteThisEntity(void)
|
||||||
|
@ -52,17 +61,19 @@ void DeleteThisEntity(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void DeleteEntity(Entity*);
|
void DeleteEntity(Entity*);
|
||||||
extern void sub_0805E900(Entity*);
|
void sub_0805E900(OtherEntity*);
|
||||||
|
|
||||||
|
typedef void (*Deleter)(void*);
|
||||||
|
|
||||||
void sub_0805E79C(Entity* ent)
|
void sub_0805E79C(Entity* ent)
|
||||||
|
|
||||||
{
|
{
|
||||||
void (*deleter)(Entity*) = NULL;
|
Deleter deleter = NULL;
|
||||||
if (ent->entityType.type == 9) {
|
if (ent->entityType.type == 9) {
|
||||||
deleter = sub_0805E900;
|
deleter = (Deleter)sub_0805E900;
|
||||||
} else {
|
} else {
|
||||||
deleter = DeleteEntity;
|
deleter = (Deleter)DeleteEntity;
|
||||||
}
|
}
|
||||||
deleter(ent);
|
deleter(ent);
|
||||||
}
|
}
|
||||||
|
@ -109,7 +120,7 @@ void DeleteEntity(Entity* ent)
|
||||||
ent->currentHealth = 0;
|
ent->currentHealth = 0;
|
||||||
sub_0805EA98(ent);
|
sub_0805EA98(ent);
|
||||||
ent->field_0x4 = NULL;
|
ent->field_0x4 = NULL;
|
||||||
ent->field_0x0 = (u32*)0xffffffff;
|
ent->field_0x0 = (Entity*)0xffffffff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,3 +139,307 @@ void sub_0805E84C(void)
|
||||||
} while (pEVar1 < (&gLinkEntity + 80));
|
} while (pEVar1 < (&gLinkEntity + 80));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern u8 gUnk_03003DBC;
|
||||||
|
|
||||||
|
void sub_0805E870(Entity* ent)
|
||||||
|
|
||||||
|
{
|
||||||
|
DmaClear32(3, ent, sizeof(Entity));
|
||||||
|
gUnk_03003DBC--;
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef struct struct_03003D70 {
|
||||||
|
void* field_0x0;
|
||||||
|
void* field_0x4;
|
||||||
|
} struct_03003D70;
|
||||||
|
|
||||||
|
extern struct_03003D70 gUnk_03003D70[9];
|
||||||
|
extern EntityType gUnk_03003DB8;
|
||||||
|
|
||||||
|
void sub_0805E89C(void)
|
||||||
|
|
||||||
|
{
|
||||||
|
Entity* pEVar1;
|
||||||
|
Entity* next;
|
||||||
|
struct_03003D70* it;
|
||||||
|
|
||||||
|
it = gUnk_03003D70;
|
||||||
|
if (it->field_0x4 != 0) {
|
||||||
|
do {
|
||||||
|
next = it->field_0x4;
|
||||||
|
while (pEVar1 = next, (u32)pEVar1 != (u32)it) {
|
||||||
|
next = pEVar1->field_0x4;
|
||||||
|
sub_0805E79C(pEVar1);
|
||||||
|
}
|
||||||
|
it++;
|
||||||
|
} while (it < (gUnk_03003D70 + 9));
|
||||||
|
sub_0805E84C();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extern OtherEntity gUnk_02033290;
|
||||||
|
|
||||||
|
OtherEntity* sub_0805E8D4(void)
|
||||||
|
|
||||||
|
{
|
||||||
|
OtherEntity* it;
|
||||||
|
for (it = &gUnk_02033290; it < (&gUnk_02033290 + 32); it++) {
|
||||||
|
if (it->prev == 0) {
|
||||||
|
return it;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern void _DmaZero(void*, u32);
|
||||||
|
extern u8 gUnk_020354B4;
|
||||||
|
|
||||||
|
void sub_0805E900(OtherEntity* ent)
|
||||||
|
|
||||||
|
{
|
||||||
|
if (!ent->next)
|
||||||
|
return;
|
||||||
|
|
||||||
|
sub_0805E92C(ent);
|
||||||
|
sub_0805EA98(ent);
|
||||||
|
_DmaZero(ent, 0x40);
|
||||||
|
gUnk_020354B4--;
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "area.h"
|
||||||
|
|
||||||
|
void sub_0805E92C(u32 param_1)
|
||||||
|
|
||||||
|
{
|
||||||
|
if (param_1 == gArea.unk2) {
|
||||||
|
gArea.unk2 = 0;
|
||||||
|
gArea.unk3 = 0;
|
||||||
|
gArea.unk4 = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extern Entity gUnk_020369F0;
|
||||||
|
extern void sub_0801D66C(void* dst, void* src, size_t size); // dma copy
|
||||||
|
extern void sub_0805E98C(void);
|
||||||
|
|
||||||
|
void sub_0805E958(void)
|
||||||
|
|
||||||
|
{
|
||||||
|
sub_0801D66C(&gUnk_03003D70, &gUnk_020369F0, 0x48);
|
||||||
|
sub_0805E98C();
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_0805E974(void)
|
||||||
|
|
||||||
|
{
|
||||||
|
sub_0801D66C(&gUnk_020369F0, &gUnk_03003D70, 0x48);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_0805E98C(void)
|
||||||
|
|
||||||
|
{
|
||||||
|
struct_03003D70* it;
|
||||||
|
|
||||||
|
for (it = gUnk_03003D70; it < &gUnk_03003D70[9]; it++) {
|
||||||
|
it->field_0x0 = it;
|
||||||
|
it->field_0x4 = (Entity*)it;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_0805E9A8(void)
|
||||||
|
|
||||||
|
{
|
||||||
|
Entity* entry;
|
||||||
|
struct_03003D70* it;
|
||||||
|
|
||||||
|
it = gUnk_03003D70;
|
||||||
|
do {
|
||||||
|
for (entry = (Entity*)it->field_0x4; (u32)entry != (u32)it; entry = entry->field_0x4) {
|
||||||
|
entry->flags &= 0xfd;
|
||||||
|
if ((entry->flags & 0x20) == 0) {
|
||||||
|
entry->flags |= 0x10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
it++;
|
||||||
|
} while (it < (gUnk_03003D70 + 9));
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_0805E9F4(void)
|
||||||
|
|
||||||
|
{
|
||||||
|
Entity* pEVar1;
|
||||||
|
Entity* next;
|
||||||
|
struct_03003D70* it;
|
||||||
|
|
||||||
|
it = gUnk_03003D70;
|
||||||
|
do {
|
||||||
|
next = it->field_0x4;
|
||||||
|
while (pEVar1 = next, (u32)pEVar1 != (u32)it) {
|
||||||
|
next = pEVar1->field_0x4;
|
||||||
|
if ((pEVar1->flags & 0x10) != 0) {
|
||||||
|
sub_0805E79C(pEVar1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
it++;
|
||||||
|
} while (it < (gUnk_03003D70 + 9));
|
||||||
|
}
|
||||||
|
|
||||||
|
extern void sub_0805E374(Entity*);
|
||||||
|
|
||||||
|
void sub_0805EA2C(Entity* ent, int kind)
|
||||||
|
|
||||||
|
{
|
||||||
|
Entity* pEVar1;
|
||||||
|
struct_03003D70* pEVar2;
|
||||||
|
|
||||||
|
pEVar2 = (gUnk_03003D70 + kind);
|
||||||
|
ent->field_0x4 = (Entity*)pEVar2;
|
||||||
|
pEVar1 = pEVar2->field_0x0;
|
||||||
|
ent->field_0x0 = pEVar1;
|
||||||
|
pEVar1->field_0x4 = ent;
|
||||||
|
pEVar2->field_0x0 = ent;
|
||||||
|
if ((ent->entityType).type != 9) {
|
||||||
|
ent->spritePriority.b0 = 4;
|
||||||
|
gUnk_03003DBC++;
|
||||||
|
} else {
|
||||||
|
gUnk_020354B4++;
|
||||||
|
}
|
||||||
|
sub_0805E374(ent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_0805EA78(Entity* ent, int kind)
|
||||||
|
|
||||||
|
{
|
||||||
|
struct_03003D70* it;
|
||||||
|
|
||||||
|
sub_0805EA98(ent);
|
||||||
|
it = &gUnk_03003D70[kind];
|
||||||
|
ent->field_0x0 = (Entity*)it;
|
||||||
|
ent->field_0x4 = it->field_0x4;
|
||||||
|
((Entity*)it->field_0x4)->field_0x0 = ent;
|
||||||
|
it->field_0x4 = ent;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_0805EA98(Entity* ent)
|
||||||
|
|
||||||
|
{
|
||||||
|
if (ent == gUnk_03003DD0.field_0x8) {
|
||||||
|
gUnk_03003DD0.field_0x8 = ent->field_0x0;
|
||||||
|
}
|
||||||
|
ent->field_0x0->field_0x4 = ent->field_0x4;
|
||||||
|
ent->field_0x4->field_0x0 = ent->field_0x0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int sub_0805EABC(Entity* ent)
|
||||||
|
|
||||||
|
{
|
||||||
|
Entity* psVar1;
|
||||||
|
struct_03003D70 *it, *end;
|
||||||
|
|
||||||
|
it = gUnk_03003D70;
|
||||||
|
end = (gUnk_03003D70 + 9);
|
||||||
|
do {
|
||||||
|
psVar1 = (Entity*)it->field_0x4;
|
||||||
|
while ((u32)psVar1 != (u32)it) {
|
||||||
|
if ((u32)psVar1 != (u32)ent && psVar1->entityType.type == ent->entityType.type &&
|
||||||
|
psVar1->entityType.subtype == ent->entityType.subtype) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
psVar1 = psVar1->field_0x4;
|
||||||
|
}
|
||||||
|
it++;
|
||||||
|
} while (it < end);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Entity* sub_0805EB00(int type, int subtype, int kind)
|
||||||
|
|
||||||
|
{
|
||||||
|
Entity* it;
|
||||||
|
struct_03003D70* node;
|
||||||
|
|
||||||
|
node = &gUnk_03003D70[kind];
|
||||||
|
it = (Entity*)node->field_0x4;
|
||||||
|
while ((u32)it != (u32)node) {
|
||||||
|
if ((type == (it->entityType).type) && (subtype == (it->entityType).subtype))
|
||||||
|
return it;
|
||||||
|
it = it->field_0x4;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
Entity* sub_0805EB2C(int type, int subtype, int kind, int form, int parameter)
|
||||||
|
|
||||||
|
{
|
||||||
|
Entity* it;
|
||||||
|
struct_03003D70* node;
|
||||||
|
|
||||||
|
node = &gUnk_03003D70[kind];
|
||||||
|
it = (Entity*)node->field_0x4;
|
||||||
|
while ((u32)it != (u32)node) {
|
||||||
|
if (type == it->entityType.type && subtype == it->entityType.subtype && form == it->entityType.form &&
|
||||||
|
parameter == it->entityType.parameter)
|
||||||
|
return it;
|
||||||
|
it = it->field_0x4;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
Entity* sub_0805EB64(Entity* ent, int kind)
|
||||||
|
|
||||||
|
{
|
||||||
|
Entity* it;
|
||||||
|
struct_03003D70* end;
|
||||||
|
|
||||||
|
end = &gUnk_03003D70[kind];
|
||||||
|
it = ent->field_0x4;
|
||||||
|
while ((u32)it != (u32)end) {
|
||||||
|
if (it->entityType.type == ent->entityType.type && it->entityType.subtype == ent->entityType.subtype)
|
||||||
|
return it;
|
||||||
|
it = it->field_0x4;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
Entity* sub_0805EB9C(int type, int subtype)
|
||||||
|
|
||||||
|
{
|
||||||
|
Entity* it2;
|
||||||
|
struct_03003D70 *it, *end;
|
||||||
|
|
||||||
|
it = gUnk_03003D70;
|
||||||
|
end = (gUnk_03003D70 + 9);
|
||||||
|
do {
|
||||||
|
it2 = (Entity*)it->field_0x4;
|
||||||
|
while ((u32)it2 != (u32)it) {
|
||||||
|
if ((type == (it2->entityType).type) && (subtype == (it2->entityType).subtype))
|
||||||
|
return it2;
|
||||||
|
it2 = it2->field_0x4;
|
||||||
|
}
|
||||||
|
it++;
|
||||||
|
} while (it < end);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_0805EBCC(void)
|
||||||
|
|
||||||
|
{
|
||||||
|
Entity* pEVar1;
|
||||||
|
Entity* next;
|
||||||
|
struct_03003D70* it;
|
||||||
|
|
||||||
|
it = gUnk_03003D70;
|
||||||
|
do {
|
||||||
|
next = it->field_0x4;
|
||||||
|
while (pEVar1 = next, (u32)pEVar1 != (u32)it) {
|
||||||
|
next = pEVar1->field_0x4;
|
||||||
|
if (pEVar1->entityType.type == 3)
|
||||||
|
DeleteEntity(pEVar1);
|
||||||
|
}
|
||||||
|
it++;
|
||||||
|
} while (it < (gUnk_03003D70 + 9));
|
||||||
|
sub_0805E84C();
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue