Merge remote-tracking branch 'upstream/master'

This commit is contained in:
theo3
2020-08-07 22:32:51 -07:00
17 changed files with 575 additions and 1200 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
# The Legend of Zelda: The Minish Cap
**Progress:** [⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜] 5%
**Progress:** [⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜] 10%
```diff
- WARNING! -
+1 -683
View File
@@ -5,688 +5,6 @@
.text
thumb_func_start sub_0805E744
sub_0805E744: @ 0x0805E744
push {lr}
ldr r1, _0805E760 @ =gUnk_030011E8
movs r0, #0xee
lsls r0, r0, #2
adds r2, r1, r0
_0805E74E:
ldr r0, [r1]
cmp r0, #0
beq _0805E764
adds r1, #0x88
cmp r1, r2
blo _0805E74E
movs r0, #0
b _0805E766
.align 2, 0
_0805E760: .4byte gUnk_030011E8
_0805E764:
adds r0, r1, #0
_0805E766:
pop {pc}
thumb_func_start sub_0805E768
sub_0805E768: @ 0x0805E768
push {lr}
ldr r1, _0805E778 @ =GetEmptyEntity
cmp r0, #9
bne _0805E772
ldr r1, _0805E77C @ =sub_0805E8D4
_0805E772:
bl _call_via_r1
pop {pc}
.align 2, 0
_0805E778: .4byte GetEmptyEntity
_0805E77C: .4byte sub_0805E8D4
thumb_func_start DeleteThisEntity
DeleteThisEntity: @ 0x0805E780
push {lr}
ldr r0, _0805E794 @ =gUnk_03003DD0
ldr r0, [r0, #8]
bl sub_0805E79C
ldr r0, _0805E798 @ =gUnk_03005F24
bl _call_via_r0
pop {pc}
.align 2, 0
_0805E794: .4byte gUnk_03003DD0
_0805E798: .4byte gUnk_03005F24
thumb_func_start sub_0805E79C
sub_0805E79C: @ 0x0805E79C
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #8]
ldr r2, _0805E7B4 @ =DeleteEntity
cmp r0, #9
bne _0805E7AA
ldr r2, _0805E7B8 @ =sub_0805E900
_0805E7AA:
adds r0, r1, #0
bl _call_via_r2
pop {pc}
.align 2, 0
_0805E7B4: .4byte DeleteEntity
_0805E7B8: .4byte sub_0805E900
thumb_func_start DeleteEntity
DeleteEntity: @ 0x0805E7BC
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, [r4, #4]
cmp r0, #0
beq _0805E84A
adds r0, r4, #0
bl sub_080AE068
adds r0, r4, #0
bl sub_0801D230
adds r0, r4, #0
bl sub_0806FE84
adds r0, r4, #0
bl sub_080788E0
adds r0, r4, #0
bl sub_08078954
adds r0, r4, #0
bl sub_0805EC60
adds r0, r4, #0
bl sub_08017744
adds r0, r4, #0
bl sub_0805E92C
adds r0, r4, #0
bl sub_0807DB08
adds r0, r4, #0
bl sub_0806FBEC
ldr r0, [r4, #0x64]
bl sub_0801DA0C
movs r5, #0
str r5, [r4, #0x64]
ldrb r0, [r4, #8]
cmp r0, #3
bne _0805E818
adds r0, r4, #0
bl sub_0804AA1C
_0805E818:
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
adds r0, #0x3c
strb r5, [r0]
adds r0, #5
strb r5, [r0]
adds r0, #1
strb r5, [r0]
adds r0, #3
strb r5, [r0]
adds r0, r4, #0
bl sub_0805EA98
str r5, [r4, #4]
movs r0, #1
rsbs r0, r0, #0
str r0, [r4]
_0805E84A:
pop {r4, r5, pc}
thumb_func_start sub_0805E84C
sub_0805E84C: @ 0x0805E84C
push {r4, r5, lr}
ldr r4, _0805E86C @ =gLinkEntity
movs r0, #0xaa
lsls r0, r0, #6
adds r5, r4, r0
_0805E856:
ldr r0, [r4]
cmp r0, #0
bge _0805E862
adds r0, r4, #0
bl sub_0805E870
_0805E862:
adds r4, #0x88
cmp r4, r5
blo _0805E856
pop {r4, r5, pc}
.align 2, 0
_0805E86C: .4byte gLinkEntity
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
sub_0805EC04: @ 0x0805EC04
push {r4, r5, r6, r7, lr}
@@ -2934,4 +2252,4 @@ _0805FD1C:
bl DeleteThisEntity
_0805FD20:
pop {r4, r5, pc}
.align 2, 0
.align 2, 0
-87
View File
@@ -1,87 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_08057CB4
sub_08057CB4: @ 0x08057CB4
push {r4, r5, r6, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _08057CD6
movs r0, #1
strb r0, [r4, #0xc]
ldrb r0, [r4, #0xa]
bl GetCurrentRoomProperty
str r0, [r4, #0x20]
cmp r0, #0
bne _08057CD6
adds r0, r4, #0
bl sub_0805E900
b _08057D42
_08057CD6:
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _08057CE4
ldr r0, _08057D44 @ =gLinkState
ldrb r0, [r0, #0x12]
cmp r0, #0x1e
bne _08057D42
_08057CE4:
ldr r4, [r4, #0x20]
ldrh r0, [r4]
ldr r1, _08057D48 @ =0x0000FFFF
cmp r0, r1
beq _08057D42
ldr r5, _08057D4C @ =gLinkEntity
adds r6, r1, #0
_08057CF2:
ldrb r2, [r4, #7]
movs r0, #3
ands r0, r2
adds r1, r5, #0
adds r1, #0x38
ldrb r1, [r1]
ands r0, r1
cmp r0, #0
beq _08057D3A
ldr r0, _08057D44 @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _08057D18
movs r0, #0x10
ands r0, r2
cmp r0, #0
beq _08057D3A
_08057D18:
ldrh r0, [r4]
ldrh r1, [r4, #2]
ldrb r2, [r4, #4]
ldrb r3, [r4, #5]
bl CheckPlayerInRegion
cmp r0, #0
beq _08057D3A
movs r1, #0x36
ldrsh r0, [r5, r1]
cmp r0, #0
bne _08057D3A
ldrb r0, [r4, #6]
bl GetCurrentRoomProperty
bl DoExitTransition
_08057D3A:
adds r4, #8
ldrh r0, [r4]
cmp r0, r6
bne _08057CF2
_08057D42:
pop {r4, r5, r6, pc}
.align 2, 0
_08057D44: .4byte gLinkState
_08057D48: .4byte 0x0000FFFF
_08057D4C: .4byte gLinkEntity
-115
View File
@@ -1,115 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xc]
cmp r0, #0
bne _0806CF5E
movs r0, #1
strb r0, [r5, #0xc]
strb r0, [r5, #0xd]
ldrh r1, [r5, #0x2e]
adds r0, r5, #0
adds r0, #0x68
strh r1, [r0]
adds r0, r5, #0
movs r1, #2
bl sub_0805E3A0
adds r0, r5, #0
bl sub_0806D0B0
adds r0, r5, #0
bl sub_0807DD64
b _0806CF6C
_0806CF5E:
adds r0, r5, #0
movs r1, #0
bl sub_0807DDAC
adds r0, r5, #0
bl sub_0807DDE4
_0806CF6C:
ldrb r0, [r5, #0xd]
cmp r0, #2
beq _0806CFD4
cmp r0, #2
bgt _0806D000
cmp r0, #0
blt _0806D000
ldr r0, _0806CFCC @ =gScreenTransition
ldr r0, [r0]
movs r1, #3
ands r0, r1
cmp r0, #0
bne _0806D000
ldr r0, _0806CFD0 @ =gLinkEntity
movs r1, #0x2e
ldrsh r2, [r0, r1]
ldrh r3, [r5, #0x2e]
movs r4, #0x2e
ldrsh r1, [r5, r4]
adds r4, r0, #0
cmp r2, r1
bge _0806CFA8
adds r0, r5, #0
adds r0, #0x68
ldrh r0, [r0]
subs r0, #0x20
cmp r0, r1
bge _0806CFA8
subs r0, r3, #1
strh r0, [r5, #0x2e]
_0806CFA8:
movs r3, #0x2e
ldrsh r1, [r4, r3]
ldrh r2, [r5, #0x2e]
movs r4, #0x2e
ldrsh r0, [r5, r4]
cmp r1, r0
ble _0806D000
adds r0, r5, #0
adds r0, #0x68
ldrh r0, [r0]
adds r0, #0x20
movs r3, #0x2e
ldrsh r1, [r5, r3]
cmp r0, r1
ble _0806D000
adds r0, r2, #1
strh r0, [r5, #0x2e]
b _0806D000
.align 2, 0
_0806CFCC: .4byte gScreenTransition
_0806CFD0: .4byte gLinkEntity
_0806CFD4:
ldrb r0, [r5, #0xe]
subs r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0806D000
bl Random
adds r4, r0, #0
ldr r1, _0806D008 @ =gUnk_081140CC
movs r0, #3
ands r0, r4
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
bl PlaySFX
movs r0, #7
ands r4, r0
lsls r4, r4, #4
adds r4, #0x80
strb r4, [r5, #0xe]
_0806D000:
adds r0, r5, #0
bl sub_0806D02C
pop {r4, r5, pc}
.align 2, 0
_0806D008: .4byte gUnk_081140CC
.syntax divided
-45
View File
@@ -1,45 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
push {r4, r5, lr}
adds r5, r0, #0
movs r0, #0xa3
movs r1, #1
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _0809F7B6
adds r0, r5, #0
adds r1, r4, #0
bl PositionEntityOnTop
bl Random
ldrh r2, [r4, #0x2e]
subs r2, #0x10
movs r3, #0x1f
adds r1, r0, #0
ands r1, r3
adds r2, r2, r1
strh r2, [r4, #0x2e]
ldrh r2, [r4, #0x32]
subs r2, #0x10
asrs r1, r0, #8
ands r1, r3
adds r2, r2, r1
strh r2, [r4, #0x32]
asrs r0, r0, #0x10
movs r1, #3
ands r0, r1
strb r0, [r4, #0x1e]
movs r0, #0xff
strb r0, [r4, #0x15]
_0809F7B6:
adds r0, r4, #0
pop {r4, r5, pc}
.align 2, 0
.syntax divided
-110
View File
@@ -1,110 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r2, r5, #0
adds r2, #0x39
movs r1, #0
ldrsb r1, [r2, r1]
cmp r1, #2
bne _0805FE80
movs r0, #0
strb r1, [r5, #0xc]
strb r0, [r2]
ldr r1, _0805FE7C @ =gLinkEntity
adds r0, r5, #0
bl GetFacingDirection
bl sub_0806F5A4
adds r1, r0, #0
adds r0, r5, #0
bl InitAnimationForceUpdate
adds r0, r5, #0
bl sub_0806F118
b _0805FF14
.align 2, 0
_0805FE7C: .4byte gLinkEntity
_0805FE80:
adds r4, r5, #0
adds r4, #0x84
ldr r1, [r4]
adds r0, r5, #0
bl ExecuteScriptCommandSet
ldr r1, [r4]
adds r0, r5, #0
bl sub_0805FF2C
adds r0, r5, #0
adds r0, #0x80
ldrh r3, [r0]
adds r7, r0, #0
adds r6, r5, #0
adds r6, #0x82
cmp r3, #7
bhi _0805FEC6
ldrh r1, [r6]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0805FEBA
movs r1, #0xfc
ands r1, r3
ldrb r0, [r5, #0xf]
lsrs r0, r0, #1
adds r3, r1, r0
b _0805FEC6
_0805FEBA:
movs r0, #0xfc
ands r0, r3
ldrb r2, [r5, #0x14]
lsrs r1, r2, #1
adds r3, r0, r1
strb r2, [r5, #0xf]
_0805FEC6:
adds r4, r5, #0
adds r4, #0x58
ldrb r0, [r4]
cmp r3, r0
beq _0805FED8
adds r0, r5, #0
adds r1, r3, #0
bl InitAnimationForceUpdate
_0805FED8:
adds r0, r5, #0
bl UpdateAnimationSingleFrame
adds r0, r5, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0805FF02
ldrb r0, [r4]
cmp r0, #8
beq _0805FEFE
cmp r0, #8
blt _0805FF02
cmp r0, #0xc
bgt _0805FF02
cmp r0, #0xa
blt _0805FF02
_0805FEFE:
movs r0, #0
strh r0, [r7]
_0805FF02:
ldrh r1, [r6]
mvns r0, r1
adds r0, #1
ands r1, r0
cmp r1, #2
bne _0805FF14
adds r0, r5, #0
bl sub_0806ED78
_0805FF14:
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
-51
View File
@@ -1,51 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
push {r4, r5, lr}
ldr r3, _0806074C @ =gUnk_0810A918
adds r2, r0, #0
adds r2, #0x68
ldrb r2, [r2]
lsls r2, r2, #0x18
asrs r2, r2, #0x18
lsls r2, r2, #2
adds r2, r2, r3
ldr r2, [r2]
adds r3, r0, #0
adds r3, #0x69
ldrb r3, [r3]
lsls r3, r3, #0x18
asrs r3, r3, #0x18
adds r2, r2, r3
movs r3, #0
ldrsb r3, [r2, r3]
lsls r3, r3, #2
ldr r2, _08060750 @ =gUnk_0810A66C
adds r3, r3, r2
ldr r4, _08060754 @ =gRoomControls
movs r5, #0
ldrsh r2, [r3, r5]
ldrh r5, [r4, #6]
adds r2, r2, r5
movs r5, #2
ldrsh r3, [r3, r5]
ldrh r4, [r4, #8]
adds r3, r3, r4
bl sub_0807DEDC
ldr r2, _08060758 @ =gUnk_02033280
ldrb r1, [r2, #7]
movs r0, #1
orrs r0, r1
strb r0, [r2, #7]
pop {r4, r5, pc}
.align 2, 0
_0806074C: .4byte gUnk_0810A918
_08060750: .4byte gUnk_0810A66C
_08060754: .4byte gRoomControls
_08060758: .4byte gUnk_02033280
.syntax divided
+4
View File
@@ -17,6 +17,10 @@ typedef struct {
u8 filler4[0x835];
u32 musicIndex;
u32 pMusicIndex;
u8 filler5[0x20];
u32 unk2;
u32 unk3;
u32 unk4;
} Area;
extern Area gArea;
+1 -1
View File
@@ -26,7 +26,7 @@ typedef struct {
} BoundingBox;
typedef struct Entity {
/*0x00*/ u32* field_0x0;
/*0x00*/ struct Entity* field_0x0;
/*0x04*/ struct Entity* field_0x4;
/*0x08*/ EntityType entityType;
/*0x0c*/ u8 action;
+23
View File
@@ -0,0 +1,23 @@
#ifndef MANAGER_H
#define MANAGER_H
#include "global.h"
typedef struct {
u16 field_0x00;
u16 field_0x02;
u8 field_0x04;
u8 field_0x05;
u8 field_0x06;
union {
u8 all;
struct {
u8 layer : 2;
u8 unk1 : 2;
u8 unk2 : 1;
u8 unk3 : 3;
} PACKED b;
} PACKED field_0x07;
} UnkManagerHelperStruct;
#endif
+3 -2
View File
@@ -472,7 +472,7 @@ SECTIONS {
asm/manager3.o(.text);
asm/manager4.o(.text);
asm/manager5.o(.text);
asm/manager6.o(.text);
src/manager/manager6.o(.text);
asm/manager7.o(.text);
asm/manager8.o(.text);
asm/manager9.o(.text);
@@ -529,7 +529,8 @@ SECTIONS {
src/sub_0805E3A0.o(.text);
asm/code_0805E3B0.o(.text);
asm/getEmptyEntity.o(.text);
asm/code_0805E744.o(.text);
src/entity.o(.text);
asm/code_0805EC04.o(.text);
/* npcs */
src/npc/gentari.o(.text);
src/npc/festari.o(.text);
+423
View File
@@ -0,0 +1,423 @@
#include "global.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];
Entity* sub_0805E744(void)
{
Entity* ent = gUnk_030011E8;
do {
if (ent->field_0x0 == NULL) {
return ent;
}
} while (ent++, ent < &gUnk_030011E8[7]);
return NULL;
}
extern Entity* GetEmptyEntity();
OtherEntity* sub_0805E8D4();
typedef void* (*Getter)(void);
void* sub_0805E768(int type)
{
Getter getter = NULL;
if (type == 9) {
getter = (Getter)sub_0805E8D4;
} else {
getter = (Getter)GetEmptyEntity;
}
return getter();
}
typedef struct {
int field_0x0;
int field_0x4;
Entity* field_0x8;
int field_0xc;
} struct_03003DD0;
extern struct_03003DD0 gUnk_03003DD0;
extern u32 _call_via_r0(u32*);
extern u32 gUnk_03005F24;
extern void sub_0805E79C(Entity*);
void DeleteThisEntity(void)
{
sub_0805E79C(gUnk_03003DD0.field_0x8);
_call_via_r0((u32*)&gUnk_03005F24);
return;
}
void DeleteEntity(Entity*);
void sub_0805E900(OtherEntity*);
typedef void (*Deleter)(void*);
void sub_0805E79C(Entity* ent)
{
Deleter deleter = NULL;
if (ent->entityType.type == 9) {
deleter = (Deleter)sub_0805E900;
} else {
deleter = (Deleter)DeleteEntity;
}
deleter(ent);
}
extern void sub_080AE068();
extern void sub_0801D230();
extern void sub_0806FE84();
extern void sub_080788E0();
extern void sub_08078954();
extern void sub_0805EC60();
extern void sub_08017744();
extern void sub_0805E92C();
extern void sub_0807DB08();
extern void sub_0806FBEC();
extern void sub_0801DA0C();
extern void sub_0804AA1C();
extern void sub_0805EA98(); // Unlink
void DeleteEntity(Entity* ent)
{
if (ent->field_0x4) {
sub_080AE068(ent);
sub_0801D230(ent);
sub_0806FE84(ent);
sub_080788E0(ent);
sub_08078954(ent);
sub_0805EC60(ent);
sub_08017744(ent);
sub_0805E92C(ent);
sub_0807DB08(ent);
sub_0806FBEC(ent);
sub_0801DA0C(ent->otherEntity);
ent->otherEntity = NULL;
if ((ent->entityType).type == '\x03') {
sub_0804AA1C(ent);
}
ent->flags = ent->flags & 0x7f;
ent->spriteSettings.b.draw = 0;
ent->field_0x3c = 0;
ent->bitfield = 0;
ent->field_0x42 = 0;
ent->currentHealth = 0;
sub_0805EA98(ent);
ent->field_0x4 = NULL;
ent->field_0x0 = (Entity*)0xffffffff;
}
}
extern Entity gLinkEntity;
void sub_0805E870(Entity*);
void sub_0805E84C(void)
{
Entity* ent = &gLinkEntity;
do {
if ((int)ent->field_0x0 < 0) {
sub_0805E870(ent);
}
} while (ent++, ent < (&gLinkEntity + 80));
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* ent;
Entity* next;
struct_03003D70* it;
it = gUnk_03003D70;
if (it->field_0x4) {
do {
for (ent = it->field_0x4; (u32)ent != (u32)it; ent = next) {
next = ent->field_0x4;
sub_0805E79C(ent);
}
} while (it++, 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 = it->field_0x4; (u32)entry != (u32)it; entry = entry->field_0x4) {
entry->flags &= 0xfd;
if ((entry->flags & 0x20) == 0) {
entry->flags |= 0x10;
}
}
} while (it++, it < (gUnk_03003D70 + 9));
}
void sub_0805E9F4(void)
{
Entity* ent;
Entity* next;
struct_03003D70* it;
it = gUnk_03003D70;
do {
for (ent = it->field_0x4; (u32)ent != (u32)it; ent = next) {
next = ent->field_0x4;
if (ent->flags & 0x10)
sub_0805E79C(ent);
}
} while (it++, it < (gUnk_03003D70 + 9));
}
extern void sub_0805E374(Entity*);
void sub_0805EA2C(Entity* ent, int kind)
{
Entity* prev;
struct_03003D70* next;
next = (gUnk_03003D70 + kind);
ent->field_0x4 = (Entity*)next;
prev = next->field_0x0;
ent->field_0x0 = prev;
prev->field_0x4 = ent;
next->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* ent2;
struct_03003D70 *it, *end;
it = gUnk_03003D70;
end = (gUnk_03003D70 + 9);
do {
for (ent2 = (Entity*)it->field_0x4; (u32)ent2 != (u32)it; ent2 = ent2->field_0x4) {
if ((u32)ent2 != (u32)ent && ent2->entityType.type == ent->entityType.type &&
ent2->entityType.subtype == ent->entityType.subtype) {
return 1;
}
}
} while (it++, it < end);
return 0;
}
Entity* sub_0805EB00(int type, int subtype, int kind)
{
Entity* it;
struct_03003D70* node;
node = &gUnk_03003D70[kind];
for (it = node->field_0x4; (u32)it != (u32)node; it = it->field_0x4) {
if (type == it->entityType.type && subtype == it->entityType.subtype)
return it;
}
return NULL;
}
Entity* sub_0805EB2C(int type, int subtype, int kind, int form, int parameter)
{
Entity* it;
struct_03003D70* node;
node = &gUnk_03003D70[kind];
node = &gUnk_03003D70[kind];
for (it = node->field_0x4; (u32)it != (u32)node; it = it->field_0x4) {
if (type == it->entityType.type && subtype == it->entityType.subtype && form == it->entityType.form &&
parameter == it->entityType.parameter)
return it;
}
return NULL;
}
Entity* sub_0805EB64(Entity* ent, int kind)
{
Entity* it;
struct_03003D70* end;
end = &gUnk_03003D70[kind];
for (it = ent->field_0x4; (u32)it != (u32)end; it = it->field_0x4) {
if (it->entityType.type == ent->entityType.type && it->entityType.subtype == ent->entityType.subtype)
return it;
}
return NULL;
}
Entity* sub_0805EB9C(int type, int subtype)
{
Entity* it2;
struct_03003D70 *it, *end;
it = gUnk_03003D70;
end = (gUnk_03003D70 + 9);
do {
for (it2 = (Entity*)it->field_0x4; (u32)it2 != (u32)it; it2 = it2->field_0x4) {
if ((type == (it2->entityType).type) && (subtype == (it2->entityType).subtype))
return it2;
}
} while (it++, it < end);
return 0;
}
void sub_0805EBCC(void)
{
Entity* ent;
Entity* next;
struct_03003D70* it;
it = gUnk_03003D70;
do {
for (ent = it->field_0x4; (u32)ent != (u32)it; ent = next) {
next = ent->field_0x4;
if (ent->entityType.type == 3)
DeleteEntity(ent);
}
} while (it++, it < (gUnk_03003D70 + 9));
sub_0805E84C();
}
+33
View File
@@ -0,0 +1,33 @@
#include "global.h"
#include "entity.h"
#include "link.h"
#include "manager.h"
extern void* GetCurrentRoomProperty(u8);
extern u32 CheckPlayerInRegion(u16, u16, u8, u8);
extern void DoExitTransition(void*);
extern void sub_0805E900(Entity*);
void sub_08057CB4(Entity * this) {
u32 tmp;
UnkManagerHelperStruct* i;
if (this->action == 0){
this->action = 1;
this->field_0x20 = (s32) GetCurrentRoomProperty(this->entityType.form);
if (this->field_0x20 == 0) {
sub_0805E900(this);
return;
}
}
if (this->actionDelay == 0 || gLinkState.field_0x10[2] == 0x1e) {
for (i = ((UnkManagerHelperStruct*) this->field_0x20);i->field_0x00 != 0xFFFF; i++) {
tmp = (i->field_0x07.all & 0x3);
if (((tmp & (gLinkEntity.collisionLayer)) != 0) &&
(((gLinkState.flags.all & 0x80) != 0) || ((i->field_0x07.b.unk2) != 0)) &&
(CheckPlayerInRegion(i->field_0x00,i->field_0x02,i->field_0x04,i->field_0x05) != 0) &&
(gLinkEntity.height.HALF.HI == 0)) {
DoExitTransition(GetCurrentRoomProperty(i->field_0x06));
}
}
}
}
+21 -33
View File
@@ -1,11 +1,11 @@
#include "global.h"
#include "entity.h"
#include "link.h"
#include "structures.h"
extern void (*gUnk_081140D4[])(Entity*);
extern u16 gUnk_081140CC[];
extern u32 gScreenTransition;
extern void sub_0805E3A0(Entity*, u32);
extern void sub_0806D0B0(Entity*);
extern void sub_0807DD64(Entity*);
@@ -20,16 +20,11 @@ void BigGoron(Entity* this) {
gUnk_081140D4[this->entityType.form](this);
}
#ifdef NON_MATCHING
void sub_0806CF30(Entity* this) {
u8 bVar1;
u32 uVar2;
int iVar3;
if (this->action == 0) {
this->action = 1;
this->previousActionFlag = 1;
this->field_0x68 = (this->x).HALF.HI;
this->field_0x68.HWORD = this->x.HALF.HI;
sub_0805E3A0(this, 2);
sub_0806D0B0(this);
sub_0807DD64(this);
@@ -37,39 +32,32 @@ void sub_0806CF30(Entity* this) {
sub_0807DDAC(this, 0);
sub_0807DDE4(this);
}
if (this->previousActionFlag != 2) {
if (this->previousActionFlag < 3) {
if ((gScreenTransition & 3) == 0) {
iVar3 = this->x.HALF.HI;
if (gLinkEntity.x.HALF.HI < iVar3) {
if ((this->field_0x68 - 32) < iVar3) {
this->x.HALF.HI = -1;
}
switch (this->previousActionFlag) {
case 0:
case 1:
if (gScreenTransition.frameCount % 4 == 0) {
if (gLinkEntity.x.HALF.HI < this->x.HALF.HI && this->field_0x68.HWORD - 32 < this->x.HALF.HI) {
this->x.HALF.HI--;
}
if (this->x.HALF.HI > gLinkEntity.x.HALF.HI) {
if (this->x.HALF.HI < (this->field_0x68 + 32)) {
this->x.HALF.HI += 1;
}
if (gLinkEntity.x.HALF.HI > this->x.HALF.HI && this->field_0x68.HWORD + 32 > this->x.HALF.HI) {
this->x.HALF.HI++;
}
}
}
} else {
bVar1 = this->actionDelay -= 1;
if (bVar1 == 0) {
uVar2 = Random();
PlaySFX(gUnk_081140CC[uVar2 & 3]);
this->actionDelay = ((u8)uVar2 & 7) * 10 + 128;
}
break;
case 2:
if (--this->actionDelay == 0) {
u32 uVar2 = Random();
PlaySFX(gUnk_081140CC[uVar2 % 4]);
this->actionDelay = ((u8)uVar2 & 7) * 16;
this->actionDelay += 128;
}
break;
case 3:
break;
}
sub_0806D02C(this);
}
#else
NAKED
void sub_0806CF30(Entity* this) {
asm(".include \"asm/non_matching/bigGoron/sub_0806CF30.inc\"");
}
#endif
void sub_0806D00C(Entity* this) {
Entity* pEVar1;
+40 -44
View File
@@ -1,5 +1,6 @@
#include "global.h"
#include "entity.h"
#include "functions.h"
#include "npc.h"
#include "link.h"
@@ -30,58 +31,53 @@ void sub_0805FE10(Entity *this)
sub_0807DD50(this);
}
#if NON_MATCHING
void sub_0805FE48(Entity *this)
{
u8 bVar1;
u16 uVar2;
u32 uVar3;
u32 uVar4;
u8 bVar1;
u16 uVar2;
u32 uVar3;
u32 uVar4;
if (this->interactType == 2) {
this->action = 2;
this->interactType = 0;
InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gLinkEntity)));
sub_0806F118(this);
}
else {
ExecuteScriptCommandSet(this, *(void **)&this->cutsceneBeh);
sub_0805FF2C(this, *(void **)&this->cutsceneBeh);
if (this->field_0x80 < 8) {
if ((this->field_0x82 & 1) != 0) {
uVar4 = (uVar4 & 0xfc) + (this->field_0xf >> 1);
}
else {
uVar4 = (uVar4 & 0xfc) + (this->animationState >> 1);
this->field_0xf = this->animationState;
}
if (this->interactType == 2) {
this->action = 2;
this->interactType = 0;
InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gLinkEntity)));
sub_0806F118(this);
}
if (uVar4 != this->animIndex) {
InitAnimationForceUpdate(this, uVar4);
}
UpdateAnimationSingleFrame(this);
else {
ExecuteScriptCommandSet(this, *(void **)&this->cutsceneBeh);
sub_0805FF2C(this, *(void **)&this->cutsceneBeh);
uVar4 = this->field_0x80.HWORD;
if (uVar4 < 8) {
if ((this->field_0x82.HWORD & 1) != 0) {
uVar4 = (uVar4 & 0xfc) + (this->field_0xf >> 1);
}
else {
uVar4 = (uVar4 & 0xfc) + (this->animationState >> 1);
this->field_0xf = this->animationState;
}
}
if (uVar4 != this->animIndex) {
InitAnimationForceUpdate(this, uVar4);
}
UpdateAnimationSingleFrame(this);
if (this->frames.b.f3)
{
switch (this->animIndex) {
case 8:
case 10:
case 11:
case 12:
this->field_0x80 = 0;
if (this->frames.b.f3)
{
switch (this->animIndex) {
case 8:
case 10:
case 11:
case 12:
this->field_0x80.HWORD = 0;
break;
}
}
if ((this->field_0x82.HWORD & (~this->field_0x82.HWORD + 1)) == 2) {
sub_0806ED78(this);
}
}
if ((this->field_0x82 & (~this->field_0x82 + 1)) == 2) {
sub_0806ED78(this);
}
}
}
#else
NAKED
void sub_0805FE48(Entity *this) {
asm(".include \"asm/non_matching/festari/sub_0805FE48.inc\"");
}
#endif
void sub_0805FF18(Entity *this)
{
+19 -15
View File
@@ -4,6 +4,7 @@
#include "npc.h"
#include "textbox.h"
#include "link.h"
#include "room.h"
#include "structures.h"
typedef struct {
@@ -34,10 +35,16 @@ extern void sub_0800451C(Entity*);
extern void sub_08078784(Entity*, u32);
extern void sub_0807DEDC(Entity*, u32, u32, u32);
typedef struct {
s16 x;
s16 y;
} Coords16;
extern Coords16 gUnk_0810A66C[];
extern s8* gUnk_0810A918[];
extern void (*const gUnk_0810AA24[])(Entity*);
extern u32 gUnk_0810AA30[];
extern u32** gUnk_0810A66C;
extern u32 gUnk_0810A918[];
extern struct_02033280 gUnk_02033280;
void Postman(Entity* this) {
@@ -208,21 +215,18 @@ void sub_080606D8(Entity* this)
ShowNPCDialogue(this, &gUnk_0810AA30[iVar1 * 2]);
}
#if 0
void sub_08060700(Entity *arg0, u32 arg1)
void sub_08060700(Entity *entity, u32 arg1)
{
sub_0807DEDC(arg0,arg1,
gUnk_0810A918[gUnk_0810A66C[arg0->field_0x68.HALF.HI][arg0->field_0x68.HALF.LO] * 4 + gRoomControls.roomOriginX],
gUnk_0810A918[gUnk_0810A66C[arg0->field_0x68.HALF.HI][arg0->field_0x68.HALF.LO] * 4 + gRoomControls.roomOriginY + 2]);
gUnk_02033280.unk |= 1;
}
#endif
NAKED void sub_08060700(Entity *arg0, u32 arg1) {
asm(".include \"asm/non_matching/postman/sub_08060700.inc\"");
s8* var0 = gUnk_0810A918[(s8)entity->field_0x68.HALF.LO];
Coords16* coords = &gUnk_0810A66C[var0[(s8)entity->field_0x68.HALF.HI]];
u32 x = coords->x + gRoomControls.roomOriginX;
u32 y = coords->y + gRoomControls.roomOriginY;
sub_0807DEDC(entity, arg1, x, y);
gUnk_02033280.unk |= 1;
}
void sub_0806075C(Entity *this)
{
this->field_0x68.HALF.LO = 0xb;
this->field_0x68.HALF.HI = 0xff;
}
this->field_0x68.HALF.LO = 0xb;
this->field_0x68.HALF.HI = 0xff;
}
+6 -13
View File
@@ -156,28 +156,21 @@ void sub_0809F700(Entity* this) {
}
}
#ifdef NON_MATCHING
Entity* sub_0809F770(Entity* this) {
Entity* cloud;
s32 uVar1;
int uVar1;
cloud = CreateObject(163, 1, 0);
if (cloud != NULL) {
if (cloud) {
PositionEntityOnTop(this, cloud);
uVar1 = Random();
cloud->x.HALF.HI = ((cloud->x.HALF.HI - 16) + (uVar1 >> 0)) & 31;
cloud->y.HALF.HI = ((cloud->y.HALF.HI - 16) + (uVar1 >> 8)) & 31;
cloud->animationList = (u8)(uVar1 >> 16) & 3;
cloud->direction = 255;
cloud->x.HALF.HI += ((uVar1 >> 0) & 31) - 16;
cloud->y.HALF.HI += ((uVar1 >> 8) & 31) - 16;
cloud->frameIndex = (uVar1 >> 16) & 3;
cloud->direction = 0xFF;
}
return cloud;
}
#else
NAKED
Entity* sub_0809F770(Entity* this) {
asm(".include \"asm/non_matching/cloud/sub_0809F770.inc\"");
}
#endif
void sub_0809F7BC(Entity* this) {
Entity* cloud;