mirror of
https://github.com/zeldaret/tmc
synced 2026-07-11 15:28:41 -04:00
Merge pull request #1 from zeldaret:master
leever.c, partially decomped code_08077B98.s
This commit is contained in:
-122
@@ -1,122 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start Anju
|
||||
Anju: @ 0x0806C2C4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #1
|
||||
beq _0806C2FA
|
||||
cmp r0, #1
|
||||
bgt _0806C2D8
|
||||
cmp r0, #0
|
||||
beq _0806C2DE
|
||||
b _0806C350
|
||||
_0806C2D8:
|
||||
cmp r0, #2
|
||||
beq _0806C342
|
||||
b _0806C350
|
||||
_0806C2DE:
|
||||
movs r2, #1
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r1, [r4, #0x18]
|
||||
subs r0, #5
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
strb r0, [r4, #0x18]
|
||||
ldrb r0, [r4, #0xe]
|
||||
strb r0, [r4, #0x14]
|
||||
adds r0, r4, #0
|
||||
bl sub_0807DD50
|
||||
b _0806C350
|
||||
_0806C2FA:
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x39
|
||||
movs r1, #0
|
||||
ldrsb r1, [r2, r1]
|
||||
cmp r1, #2
|
||||
bne _0806C338
|
||||
movs r0, #0
|
||||
strb r1, [r4, #0xc]
|
||||
strb r0, [r2]
|
||||
ldr r1, _0806C334 @ =gLinkEntity
|
||||
adds r0, r4, #0
|
||||
bl GetFacingDirection
|
||||
bl sub_0806F5A4
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x58
|
||||
ldrb r1, [r1]
|
||||
movs r2, #4
|
||||
rsbs r2, r2, #0
|
||||
ands r1, r2
|
||||
adds r1, r1, r0
|
||||
adds r0, r4, #0
|
||||
bl InitializeAnimation
|
||||
adds r0, r4, #0
|
||||
bl sub_0806F118
|
||||
b _0806C350
|
||||
.align 2, 0
|
||||
_0806C334: .4byte gLinkEntity
|
||||
_0806C338:
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl sub_0807DD94
|
||||
b _0806C350
|
||||
_0806C342:
|
||||
adds r0, r4, #0
|
||||
bl UpdateFuseInteraction
|
||||
cmp r0, #0
|
||||
beq _0806C350
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
_0806C350:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0806C354
|
||||
sub_0806C354: @ 0x0806C354
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0801E99C
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x68
|
||||
strb r0, [r1]
|
||||
ldrb r1, [r1]
|
||||
adds r0, r4, #0
|
||||
bl sub_08078784
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start Anju_Fusion
|
||||
Anju_Fusion: @ 0x0806C36C
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldrb r0, [r2, #0xc]
|
||||
cmp r0, #0
|
||||
bne _0806C392
|
||||
adds r0, #1
|
||||
strb r0, [r2, #0xc]
|
||||
ldrb r1, [r2, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r2, #0x18]
|
||||
adds r0, r2, #0
|
||||
movs r1, #6
|
||||
bl InitAnimationForceUpdate
|
||||
b _0806C398
|
||||
_0806C392:
|
||||
adds r0, r2, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
_0806C398:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
-581
@@ -1,581 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start Keaton
|
||||
Keaton: @ 0x080323BC
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r1, _080323D8 @ =gUnk_080CE7B0
|
||||
bl EnemyFunctionHandler
|
||||
movs r3, #0x12
|
||||
rsbs r3, r3, #0
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
movs r2, #1
|
||||
bl SetChildOffset
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_080323D8: .4byte gUnk_080CE7B0
|
||||
|
||||
thumb_func_start sub_080323DC
|
||||
sub_080323DC: @ 0x080323DC
|
||||
push {lr}
|
||||
ldr r2, _080323F0 @ =gUnk_080CE7C8
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_080323F0: .4byte gUnk_080CE7C8
|
||||
|
||||
thumb_func_start sub_080323F4
|
||||
sub_080323F4: @ 0x080323F4
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xc]
|
||||
subs r0, #3
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #1
|
||||
bls _0803242C
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0xc
|
||||
strb r0, [r4, #0xe]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x3e
|
||||
ldrb r1, [r0]
|
||||
adds r1, #4
|
||||
movs r0, #0x18
|
||||
ands r1, r0
|
||||
movs r0, #0x10
|
||||
eors r1, r0
|
||||
strb r1, [r4, #0x15]
|
||||
lsrs r1, r1, #3
|
||||
adds r0, r4, #0
|
||||
bl InitAnimationForceUpdate
|
||||
adds r5, r4, #0
|
||||
adds r5, #0x43
|
||||
b _08032446
|
||||
_0803242C:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x41
|
||||
ldrb r0, [r0]
|
||||
adds r5, r4, #0
|
||||
adds r5, #0x43
|
||||
cmp r0, #0xcc
|
||||
bne _08032446
|
||||
ldrb r0, [r5]
|
||||
cmp r0, #0
|
||||
bne _0803244C
|
||||
adds r0, r4, #0
|
||||
bl sub_0803275C
|
||||
_08032446:
|
||||
ldrb r0, [r5]
|
||||
cmp r0, #0
|
||||
beq _08032454
|
||||
_0803244C:
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x1c
|
||||
bl sub_0804A9FC
|
||||
_08032454:
|
||||
ldr r1, _08032460 @ =gUnk_080CE7B0
|
||||
adds r0, r4, #0
|
||||
bl sub_0804AA30
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_08032460: .4byte gUnk_080CE7B0
|
||||
|
||||
thumb_func_start nullsub_155
|
||||
nullsub_155: @ 0x08032464
|
||||
bx lr
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08032468
|
||||
sub_08032468: @ 0x08032468
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0804A720
|
||||
movs r0, #0
|
||||
strb r0, [r4, #0x14]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl InitAnimationForceUpdate
|
||||
adds r0, r4, #0
|
||||
bl sub_080326FC
|
||||
adds r0, r4, #0
|
||||
bl sub_08032740
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0803248C
|
||||
sub_0803248C: @ 0x0803248C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_080325E8
|
||||
cmp r0, #0
|
||||
bne _080324C8
|
||||
adds r0, r4, #0
|
||||
bl sub_0803271C
|
||||
cmp r0, #0
|
||||
bne _080324C8
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _080324B4
|
||||
adds r0, r4, #0
|
||||
bl sub_08032650
|
||||
_080324B4:
|
||||
adds r0, r4, #0
|
||||
bl sub_080AEF88
|
||||
cmp r0, #0
|
||||
bne _080324C2
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
_080324C2:
|
||||
adds r0, r4, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
_080324C8:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080324CC
|
||||
sub_080324CC: @ 0x080324CC
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_080325E8
|
||||
cmp r0, #0
|
||||
bne _080324F8
|
||||
adds r0, r4, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _080324F8
|
||||
adds r0, r4, #0
|
||||
bl sub_080326FC
|
||||
adds r0, r4, #0
|
||||
bl sub_08032740
|
||||
_080324F8:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080324FC
|
||||
sub_080324FC: @ 0x080324FC
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xe]
|
||||
cmp r0, #0
|
||||
beq _08032524
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _08032572
|
||||
movs r0, #0x1e
|
||||
strb r0, [r4, #0xf]
|
||||
ldrb r0, [r4, #0x15]
|
||||
lsrs r0, r0, #3
|
||||
strb r0, [r4, #0x14]
|
||||
ldrb r1, [r4, #0x14]
|
||||
adds r1, #4
|
||||
adds r0, r4, #0
|
||||
bl InitAnimationForceUpdate
|
||||
_08032524:
|
||||
adds r0, r4, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
adds r0, r4, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
ldrb r0, [r4, #0xf]
|
||||
subs r1, r0, #1
|
||||
strb r1, [r4, #0xf]
|
||||
lsls r0, r1, #0x18
|
||||
lsrs r3, r0, #0x18
|
||||
cmp r3, #0
|
||||
bne _08032564
|
||||
movs r0, #4
|
||||
strb r0, [r4, #0xc]
|
||||
movs r1, #0
|
||||
movs r0, #0xf0
|
||||
lsls r0, r0, #1
|
||||
strh r0, [r4, #0x24]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x76
|
||||
movs r0, #0x46
|
||||
strh r0, [r2]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x78
|
||||
strh r3, [r0]
|
||||
adds r0, #3
|
||||
strb r1, [r0]
|
||||
adds r0, r4, #0
|
||||
bl sub_080327C8
|
||||
b _08032572
|
||||
_08032564:
|
||||
movs r0, #3
|
||||
ands r1, r0
|
||||
cmp r1, #0
|
||||
bne _08032572
|
||||
adds r0, r4, #0
|
||||
bl sub_08032794
|
||||
_08032572:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_08032574
|
||||
sub_08032574: @ 0x08032574
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r0, [r4, #0x54]
|
||||
cmp r0, #0
|
||||
beq _0803258A
|
||||
adds r0, #0x41
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080325A4
|
||||
_0803258A:
|
||||
adds r5, r4, #0
|
||||
adds r5, #0x76
|
||||
ldrh r0, [r5]
|
||||
subs r0, #1
|
||||
strh r0, [r5]
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
beq _080325A4
|
||||
adds r0, r4, #0
|
||||
bl sub_080AEFE0
|
||||
cmp r0, #0
|
||||
bne _080325AC
|
||||
_080325A4:
|
||||
adds r0, r4, #0
|
||||
bl sub_0803275C
|
||||
b _080325C2
|
||||
_080325AC:
|
||||
adds r0, r4, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
ldrh r1, [r5]
|
||||
movs r0, #7
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080325C2
|
||||
adds r0, r4, #0
|
||||
bl sub_08032794
|
||||
_080325C2:
|
||||
pop {r4, r5, pc}
|
||||
|
||||
thumb_func_start sub_080325C4
|
||||
sub_080325C4: @ 0x080325C4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _080325E4
|
||||
adds r0, r4, #0
|
||||
bl sub_080325E8
|
||||
cmp r0, #0
|
||||
bne _080325E4
|
||||
adds r0, r4, #0
|
||||
bl sub_08032784
|
||||
_080325E4:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080325E8
|
||||
sub_080325E8: @ 0x080325E8
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_08049FA0
|
||||
cmp r0, #0
|
||||
beq _0803264C
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl sub_08049FDC
|
||||
cmp r0, #0
|
||||
beq _0803264C
|
||||
ldr r5, _08032648 @ =gUnk_020000B0
|
||||
ldr r1, [r5]
|
||||
adds r0, r4, #0
|
||||
movs r2, #0x68
|
||||
movs r3, #0x40
|
||||
bl sub_080041A0
|
||||
cmp r0, #0
|
||||
beq _0803264C
|
||||
ldr r1, [r5]
|
||||
adds r0, r4, #0
|
||||
bl GetFacingDirection
|
||||
adds r3, r4, #0
|
||||
adds r3, #0x5a
|
||||
ldrb r2, [r3]
|
||||
movs r5, #0x18
|
||||
adds r1, r5, #0
|
||||
ands r1, r2
|
||||
subs r0, r0, r1
|
||||
adds r0, #2
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
cmp r0, #4
|
||||
bhi _0803264C
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0xc
|
||||
strb r0, [r4, #0xe]
|
||||
ldrb r1, [r3]
|
||||
adds r0, r5, #0
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x15]
|
||||
movs r0, #1
|
||||
b _0803264E
|
||||
.align 2, 0
|
||||
_08032648: .4byte gUnk_020000B0
|
||||
_0803264C:
|
||||
movs r0, #0
|
||||
_0803264E:
|
||||
pop {r4, r5, pc}
|
||||
|
||||
thumb_func_start sub_08032650
|
||||
sub_08032650: @ 0x08032650
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
bl Random
|
||||
adds r5, r0, #0
|
||||
ldr r1, _08032680 @ =gUnk_080CE7E0
|
||||
movs r0, #0xf
|
||||
ands r0, r5
|
||||
adds r0, r0, r1
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r4, #0xe]
|
||||
adds r0, r4, #0
|
||||
bl sub_08049FA0
|
||||
cmp r0, #0
|
||||
bne _0803267A
|
||||
lsrs r0, r5, #8
|
||||
movs r1, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08032684
|
||||
_0803267A:
|
||||
lsrs r0, r5, #0x10
|
||||
b _0803268C
|
||||
.align 2, 0
|
||||
_08032680: .4byte gUnk_080CE7E0
|
||||
_08032684:
|
||||
adds r0, r4, #0
|
||||
bl sub_08049EE4
|
||||
adds r0, #4
|
||||
_0803268C:
|
||||
movs r1, #0x18
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x15]
|
||||
ldrb r1, [r4, #0x15]
|
||||
adds r0, r4, #0
|
||||
bl sub_0803269C
|
||||
pop {r4, r5, pc}
|
||||
|
||||
thumb_func_start sub_0803269C
|
||||
sub_0803269C: @ 0x0803269C
|
||||
push {lr}
|
||||
adds r3, r0, #0
|
||||
adds r2, r1, #0
|
||||
subs r0, r2, #3
|
||||
movs r1, #7
|
||||
ands r0, r1
|
||||
cmp r0, #2
|
||||
bhi _080326D6
|
||||
adds r0, r2, #4
|
||||
movs r1, #0x18
|
||||
ands r0, r1
|
||||
lsrs r2, r0, #3
|
||||
ldrb r0, [r3, #0x14]
|
||||
subs r0, r0, r2
|
||||
movs r1, #3
|
||||
ands r0, r1
|
||||
cmp r0, #1
|
||||
bls _080326F8
|
||||
strb r2, [r3, #0x14]
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x58
|
||||
ldrb r0, [r0]
|
||||
movs r1, #0xfc
|
||||
ands r1, r0
|
||||
adds r1, r1, r2
|
||||
adds r0, r3, #0
|
||||
bl InitAnimationForceUpdate
|
||||
b _080326F8
|
||||
_080326D6:
|
||||
adds r0, r2, #4
|
||||
movs r1, #0x18
|
||||
ands r0, r1
|
||||
lsrs r2, r0, #3
|
||||
ldrb r0, [r3, #0x14]
|
||||
cmp r2, r0
|
||||
beq _080326F8
|
||||
strb r2, [r3, #0x14]
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x58
|
||||
ldrb r0, [r0]
|
||||
movs r1, #0xfc
|
||||
ands r1, r0
|
||||
adds r1, r1, r2
|
||||
adds r0, r3, #0
|
||||
bl InitAnimationForceUpdate
|
||||
_080326F8:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080326FC
|
||||
sub_080326FC: @ 0x080326FC
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl Random
|
||||
ldr r2, _08032718 @ =gUnk_080CE7F0
|
||||
movs r1, #0xf
|
||||
ands r1, r0
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r2
|
||||
ldrh r0, [r1]
|
||||
adds r4, #0x74
|
||||
strh r0, [r4]
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_08032718: .4byte gUnk_080CE7F0
|
||||
|
||||
thumb_func_start sub_0803271C
|
||||
sub_0803271C: @ 0x0803271C
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x74
|
||||
ldrh r0, [r1]
|
||||
subs r0, #1
|
||||
strh r0, [r1]
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
beq _08032734
|
||||
movs r0, #0
|
||||
b _0803273C
|
||||
_08032734:
|
||||
adds r0, r2, #0
|
||||
bl sub_08032784
|
||||
movs r0, #1
|
||||
_0803273C:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08032740
|
||||
sub_08032740: @ 0x08032740
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0x80
|
||||
strh r0, [r4, #0x24]
|
||||
ldrb r1, [r4, #0x14]
|
||||
adds r0, r4, #0
|
||||
bl InitializeAnimation
|
||||
adds r0, r4, #0
|
||||
bl sub_08032650
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_0803275C
|
||||
sub_0803275C: @ 0x0803275C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r0, #5
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0x2d
|
||||
strb r0, [r4, #0xe]
|
||||
movs r0, #0x80
|
||||
strh r0, [r4, #0x24]
|
||||
ldrb r1, [r4, #0x14]
|
||||
adds r0, r4, #0
|
||||
bl InitAnimationForceUpdate
|
||||
ldrb r1, [r4, #0x15]
|
||||
adds r0, r4, #0
|
||||
bl sub_0803269C
|
||||
adds r0, r4, #0
|
||||
bl sub_080327E0
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_08032784
|
||||
sub_08032784: @ 0x08032784
|
||||
push {lr}
|
||||
movs r1, #2
|
||||
strb r1, [r0, #0xc]
|
||||
ldrb r1, [r0, #0x14]
|
||||
adds r1, #8
|
||||
bl InitAnimationForceUpdate
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_08032794
|
||||
sub_08032794: @ 0x08032794
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
movs r1, #0x11
|
||||
movs r2, #0x40
|
||||
bl CreateFx
|
||||
adds r5, r0, #0
|
||||
cmp r5, #0
|
||||
beq _080327C2
|
||||
ldrb r0, [r4, #0x14]
|
||||
lsls r0, r0, #1
|
||||
ldr r1, _080327C4 @ =gUnk_080CE810
|
||||
adds r0, r0, r1
|
||||
movs r2, #0
|
||||
ldrsb r2, [r0, r2]
|
||||
lsls r2, r2, #0x10
|
||||
movs r3, #1
|
||||
ldrsb r3, [r0, r3]
|
||||
lsls r3, r3, #0x10
|
||||
adds r0, r4, #0
|
||||
adds r1, r5, #0
|
||||
bl PositionRelative
|
||||
_080327C2:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_080327C4: .4byte gUnk_080CE810
|
||||
|
||||
thumb_func_start sub_080327C8
|
||||
sub_080327C8: @ 0x080327C8
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r1, #0xb
|
||||
movs r2, #0
|
||||
bl sub_0804A98C
|
||||
cmp r0, #0
|
||||
beq _080327DC
|
||||
str r4, [r0, #0x50]
|
||||
str r0, [r4, #0x54]
|
||||
_080327DC:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080327E0
|
||||
sub_080327E0: @ 0x080327E0
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldr r1, [r2, #0x54]
|
||||
cmp r1, #0
|
||||
beq _080327F0
|
||||
movs r0, #0
|
||||
str r0, [r1, #0x50]
|
||||
str r0, [r2, #0x54]
|
||||
_080327F0:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
@@ -0,0 +1,50 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r0, [r4, #0x54]
|
||||
cmp r0, #0
|
||||
beq _0803258A
|
||||
adds r0, #0x41
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080325A4
|
||||
_0803258A:
|
||||
adds r5, r4, #0
|
||||
adds r5, #0x76
|
||||
ldrh r0, [r5]
|
||||
subs r0, #1
|
||||
strh r0, [r5]
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
beq _080325A4
|
||||
adds r0, r4, #0
|
||||
bl sub_080AEFE0
|
||||
cmp r0, #0
|
||||
bne _080325AC
|
||||
_080325A4:
|
||||
adds r0, r4, #0
|
||||
bl sub_0803275C
|
||||
b _080325C2
|
||||
_080325AC:
|
||||
adds r0, r4, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
ldrh r1, [r5]
|
||||
movs r0, #7
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080325C2
|
||||
adds r0, r4, #0
|
||||
bl sub_08032794
|
||||
_080325C2:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
+13
-2
@@ -22,6 +22,8 @@ extern void LoadRoomEntityList();
|
||||
void CopyPosition(Entity*, Entity*);
|
||||
extern u32* StartCutscene(Entity*, u8*);
|
||||
extern void ResolveEntityOnTop(Entity*, Entity*);
|
||||
extern void EnemyFunctionHandler(Entity*, void (*const funcs[])(Entity*));
|
||||
extern void SetChildOffset(Entity*, s32, s32, s32);
|
||||
extern u32 GetFacingDirection(Entity*, Entity*);
|
||||
Entity* CreatePlayerItem(u32, u32, u32, u32);
|
||||
extern Entity* GetEmptyEntity(void);
|
||||
@@ -33,7 +35,8 @@ extern void sub_0806920C(Entity*);
|
||||
extern u32 sub_0805ACC0(Entity*);
|
||||
extern u32 sub_0801E99C(Entity*);
|
||||
extern void sub_0806924C(Entity*);
|
||||
extern void sub_080AEF88(Entity*);
|
||||
extern u32 sub_080AEF88(Entity*);
|
||||
extern Entity* sub_080873AC(Entity*, u32, u32);
|
||||
extern void sub_08078778(Entity*);
|
||||
extern void sub_080787A8(Entity*, u32);
|
||||
extern void sub_0806F118(Entity*);
|
||||
@@ -73,6 +76,15 @@ extern void sub_0807DD94(Entity*, u32);
|
||||
extern void sub_0805ED14(u32*);
|
||||
extern void sub_080A7C18(u32, u32, u32);
|
||||
extern void sub_08068BEC(Entity*, u32);
|
||||
extern void sub_0804AA30(Entity*, void (*const funcs[])(Entity*));
|
||||
extern void sub_0804A9FC(Entity*, u32);
|
||||
extern void sub_0804A720(Entity*);
|
||||
extern u32 sub_080AEFE0(Entity*);
|
||||
extern u32 sub_08049FA0(Entity*);
|
||||
extern u32 sub_08049FDC(Entity*, u32);
|
||||
extern u32 sub_080041A0(Entity *, Entity *, u32, u32);
|
||||
extern u32 sub_08049EE4(Entity*);
|
||||
extern Entity *sub_0804A98C(Entity *, u32, u32);
|
||||
void sub_08077E54(Entity*);
|
||||
extern void sub_080042BA(Entity*);
|
||||
extern void sub_0801D630(void*, u32);
|
||||
@@ -82,5 +94,4 @@ void sub_08077F50(ItemBehavior *beh, u32 arg1);
|
||||
extern void sub_0807AA80(Entity*);
|
||||
extern s32 sub_0807887C(Entity*, u32, u32);
|
||||
extern s32 sub_08078904();
|
||||
|
||||
#endif
|
||||
|
||||
@@ -375,7 +375,7 @@ SECTIONS {
|
||||
asm/smallPesto.o(.text);
|
||||
asm/acroBandits.o(.text);
|
||||
src/enemy/bladeTrap.o(.text);
|
||||
asm/keaton.o(.text);
|
||||
src/enemy/keaton.o(.text);
|
||||
asm/crow.o(.text);
|
||||
asm/mulldozer.o(.text);
|
||||
asm/bombarossa.o(.text);
|
||||
@@ -607,7 +607,7 @@ SECTIONS {
|
||||
asm/kingGustaf.o(.text);
|
||||
asm/gina.o(.text);
|
||||
src/npc/simon.o(.text);
|
||||
asm/anju.o(.text);
|
||||
src/npc/anju.o(.text);
|
||||
asm/mama.o(.text);
|
||||
src/npc/emma.o(.text);
|
||||
src/npc/teachers.o(.text);
|
||||
|
||||
@@ -0,0 +1,250 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern Entity* gUnk_020000B0;
|
||||
|
||||
extern void (*const gUnk_080CE7B0[])(Entity*);
|
||||
extern void (*const gUnk_080CE7C8[])(Entity*);
|
||||
extern u8 gUnk_080CE7E0[];
|
||||
extern u16 gUnk_080CE7F0[];
|
||||
extern s8 gUnk_080CE810[];
|
||||
|
||||
u32 sub_080325E8(Entity* this);
|
||||
void sub_08032650(Entity* this);
|
||||
void sub_0803269C(Entity* this, u32 direction);
|
||||
void sub_080326FC(Entity* this);
|
||||
u32 sub_0803271C(Entity* this);
|
||||
void sub_08032740(Entity* this);
|
||||
void sub_0803275C(Entity* this);
|
||||
void sub_08032784(Entity* this);
|
||||
void sub_08032794(Entity* this);
|
||||
void sub_080327C8(Entity* this);
|
||||
void sub_080327E0(Entity* this);
|
||||
|
||||
void Keaton(Entity* this) {
|
||||
EnemyFunctionHandler(this, gUnk_080CE7B0);
|
||||
SetChildOffset(this, 0, 1, -18);
|
||||
}
|
||||
|
||||
void sub_080323DC(Entity* this) {
|
||||
gUnk_080CE7C8[this->action](this);
|
||||
}
|
||||
|
||||
void sub_080323F4(Entity* this) {
|
||||
u32 var;
|
||||
|
||||
if ((u8)(this->action - 3) >= 2) {
|
||||
this->action = 3;
|
||||
this->actionDelay = 0xC;
|
||||
var = ((this->field_0x3e + 4) & 0x18) ^ 0x10;
|
||||
this->direction = var;
|
||||
InitAnimationForceUpdate(this, var >> 3);
|
||||
} else if (this->bitfield == 0xCC) {
|
||||
if (this->field_0x43 == 0) {
|
||||
sub_0803275C(this);
|
||||
}
|
||||
}
|
||||
if (this->field_0x43 != 0) {
|
||||
sub_0804A9FC(this, 0x1C);
|
||||
}
|
||||
sub_0804AA30(this, gUnk_080CE7B0);
|
||||
}
|
||||
|
||||
void nullsub_155(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_08032468(Entity* this) {
|
||||
sub_0804A720(this);
|
||||
this->animationState = 0;
|
||||
InitAnimationForceUpdate(this, 0);
|
||||
sub_080326FC(this);
|
||||
sub_08032740(this);
|
||||
}
|
||||
|
||||
void sub_0803248C(Entity* this) {
|
||||
if (sub_080325E8(this) == 0) {
|
||||
if (sub_0803271C(this) == 0) {
|
||||
this->actionDelay--;
|
||||
if (this->actionDelay == 0) {
|
||||
sub_08032650(this);
|
||||
}
|
||||
if (sub_080AEF88(this) == 0) {
|
||||
this->actionDelay = 1;
|
||||
}
|
||||
UpdateAnimationSingleFrame(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080324CC(Entity* this) {
|
||||
if (sub_080325E8(this) == 0) {
|
||||
UpdateAnimationSingleFrame(this);
|
||||
if (this->frames.all & 0x80) {
|
||||
sub_080326FC(this);
|
||||
sub_08032740(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080324FC(Entity* this) {
|
||||
if (this->actionDelay != 0) {
|
||||
this->actionDelay--;
|
||||
if (this->actionDelay == 0) {
|
||||
this->field_0xf = 0x1E;
|
||||
this->animationState = this->direction / 8;
|
||||
InitAnimationForceUpdate(this, this->animationState + 4);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
UpdateAnimationSingleFrame(this);
|
||||
UpdateAnimationSingleFrame(this);
|
||||
this->field_0xf--;
|
||||
if (this->field_0xf == 0) {
|
||||
this->action = 4;
|
||||
this->nonPlanarMovement = 0x1E0;
|
||||
this->field_0x76 = 0x46;
|
||||
this->field_0x78.HWORD = 0;
|
||||
*(((u8*)&this->field_0x7a) + 1) = 0;
|
||||
sub_080327C8(this);
|
||||
} else {
|
||||
if ((this->field_0xf & 0x3) == 0) {
|
||||
sub_08032794(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if NON_MATCHING // r4-r5 register swap
|
||||
void sub_08032574(Entity* this) {
|
||||
if (this->attachedEntity == NULL || !(this->attachedEntity->bitfield & 0x80)) {
|
||||
(this->field_0x76)--;
|
||||
if ((this->field_0x76 == 0) || (sub_080AEFE0(this) == 0)) {
|
||||
sub_0803275C(this);
|
||||
} else {
|
||||
UpdateAnimationSingleFrame(this);
|
||||
if (!(this->field_0x76 & 0x7)) {
|
||||
sub_08032794(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void sub_08032574(Entity* this) {
|
||||
asm(".include \"asm/non_matching/keaton/sub_08032574.inc\"");
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_080325C4(Entity* this) {
|
||||
this->actionDelay--;
|
||||
if ((this->actionDelay == 0) && (sub_080325E8(this) == 0)) {
|
||||
sub_08032784(this);
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_080325E8(Entity* this) {
|
||||
if (((sub_08049FA0(this) != 0) && (sub_08049FDC(this, 1) != 0)) &&
|
||||
(sub_080041A0(this, gUnk_020000B0, 0x68, 0x40) != 0)) {
|
||||
if (((GetFacingDirection(this, gUnk_020000B0) - ((this->frames.all & 0x18)) + 2) & 0x1F) < 5) {
|
||||
this->action = 3;
|
||||
this->actionDelay = 0xC;
|
||||
this->direction = this->frames.all & 0x18;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_08032650(Entity* this) {
|
||||
u32 uVar3;
|
||||
|
||||
uVar3 = Random();
|
||||
this->actionDelay = gUnk_080CE7E0[uVar3 & 0xf];
|
||||
if (!((sub_08049FA0(this) == 0) && ((uVar3 >> 8 & 1) == 0))) {
|
||||
this->direction = (uVar3 >> 0x10) & 0x18;
|
||||
} else {
|
||||
this->direction = (sub_08049EE4(this) + 4) & 0x18;
|
||||
}
|
||||
sub_0803269C(this, this->direction);
|
||||
}
|
||||
|
||||
void sub_0803269C(Entity* this, u32 param_2) {
|
||||
u32 uVar1;
|
||||
|
||||
if (((param_2 - 3) & 7) < 3) {
|
||||
uVar1 = ((param_2 + 4) & 0x18) >> 3;
|
||||
if (((this->animationState - uVar1) & 3) > 1) {
|
||||
this->animationState = uVar1;
|
||||
InitAnimationForceUpdate(this, (this->animIndex & 0xFC) + uVar1);
|
||||
}
|
||||
} else {
|
||||
uVar1 = ((param_2 + 4) & 0x18) >> 3;
|
||||
if (uVar1 != this->animationState) {
|
||||
this->animationState = uVar1;
|
||||
InitAnimationForceUpdate(this, (this->animIndex & 0xFC) + uVar1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080326FC(Entity* this) {
|
||||
this->field_0x74 = gUnk_080CE7F0[Random() & 0xF];
|
||||
}
|
||||
|
||||
u32 sub_0803271C(Entity* this) {
|
||||
this->field_0x74--;
|
||||
if (this->field_0x74 == 0) {
|
||||
sub_08032784(this);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_08032740(Entity* this) {
|
||||
this->action = 1;
|
||||
this->nonPlanarMovement = 0x80;
|
||||
InitializeAnimation(this, this->animationState);
|
||||
sub_08032650(this);
|
||||
}
|
||||
|
||||
void sub_0803275C(Entity* this) {
|
||||
this->action = 5;
|
||||
this->actionDelay = 0x2D;
|
||||
this->nonPlanarMovement = 0x80;
|
||||
InitAnimationForceUpdate(this, this->animationState);
|
||||
sub_0803269C(this, this->direction);
|
||||
sub_080327E0(this);
|
||||
}
|
||||
|
||||
void sub_08032784(Entity* this) {
|
||||
this->action = 2;
|
||||
InitAnimationForceUpdate(this, this->animationState + 8);
|
||||
}
|
||||
|
||||
void sub_08032794(Entity* this) {
|
||||
Entity* target;
|
||||
s8* temp;
|
||||
|
||||
target = CreateFx(this, 0x11, 0x40);
|
||||
if (target != NULL) {
|
||||
temp = &gUnk_080CE810[this->animationState * 2];
|
||||
PositionRelative(this, target, temp[0] << 0x10, temp[1] << 0x10);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080327C8(Entity* this) {
|
||||
Entity* child;
|
||||
|
||||
child = sub_0804A98C(this, 11, 0);
|
||||
if (child != NULL) {
|
||||
child->parent = this;
|
||||
this->attachedEntity = child;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080327E0(Entity* this) {
|
||||
if (this->attachedEntity != NULL) {
|
||||
this->attachedEntity->parent = NULL;
|
||||
this->attachedEntity = NULL;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "link.h"
|
||||
#include "room.h"
|
||||
#include "flags.h"
|
||||
#include "sprite.h"
|
||||
#include "textbox.h"
|
||||
#include "npc.h"
|
||||
|
||||
extern void sub_0805E3A0(Entity*, u32);
|
||||
extern void sub_0807DD50(Entity*);
|
||||
extern u32 sub_0806F5A4(u32);
|
||||
extern void sub_0806F118(Entity*);
|
||||
extern void sub_0807DD94(Entity*, u32);
|
||||
extern u32 sub_0801E99C(void);
|
||||
extern void sub_08078784(Entity*, u32);
|
||||
|
||||
void Anju(Entity *this)
|
||||
{
|
||||
switch (this->action) {
|
||||
case 0:
|
||||
this->action = 1;
|
||||
this->spriteSettings.b.draw = 1;
|
||||
this->animationState = this->actionDelay;
|
||||
sub_0807DD50(this);
|
||||
return;
|
||||
case 1:
|
||||
if (this->interactType == 2) {
|
||||
this->action = 2;
|
||||
this->interactType = 0;
|
||||
InitializeAnimation(this,(this->animIndex & -4) + sub_0806F5A4(GetFacingDirection(this, &gLinkEntity)));
|
||||
sub_0806F118(this);
|
||||
} else {
|
||||
sub_0807DD94(this, 0);
|
||||
}
|
||||
return;
|
||||
case 2:
|
||||
if (UpdateFuseInteraction(this)) {
|
||||
this->action = 1;
|
||||
}
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0806C354(Entity *this)
|
||||
{
|
||||
this->field_0x68 = sub_0801E99C();
|
||||
sub_08078784(this,this->field_0x68);
|
||||
}
|
||||
|
||||
void Anju_Fusion(Entity *this)
|
||||
{
|
||||
if (this->action == 0) {
|
||||
this->action++;
|
||||
this->spriteSettings.b.draw = 1;
|
||||
InitAnimationForceUpdate(this,6);
|
||||
}
|
||||
else {
|
||||
UpdateAnimationSingleFrame(this);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user