mirror of https://github.com/zeldaret/tmc.git
Decompile dust functions (except 2)
This commit is contained in:
parent
2d389321d4
commit
098c0c9bf6
663
asm/enemy/dust.s
663
asm/enemy/dust.s
|
|
@ -1,663 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start Dust
|
||||
Dust: @ 0x08044118
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
ldr r4, _08044130 @ =gUnk_080D1588
|
||||
bl GetNextFunction
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r4
|
||||
ldr r1, [r0]
|
||||
adds r0, r5, #0
|
||||
bl _call_via_r1
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_08044130: .4byte gUnk_080D1588
|
||||
|
||||
thumb_func_start sub_08044134
|
||||
sub_08044134: @ 0x08044134
|
||||
push {lr}
|
||||
ldr r2, _08044148 @ =gUnk_080D15A0
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08044148: .4byte gUnk_080D15A0
|
||||
|
||||
thumb_func_start sub_0804414C
|
||||
sub_0804414C: @ 0x0804414C
|
||||
push {lr}
|
||||
ldr r1, _08044158 @ =gUnk_080D1588
|
||||
bl EnemyFunctionHandlerAfterCollision
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08044158: .4byte gUnk_080D1588
|
||||
|
||||
thumb_func_start sub_0804415C
|
||||
sub_0804415C: @ 0x0804415C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #0
|
||||
bne _0804418E
|
||||
adds r0, r4, #0
|
||||
bl sub_0806F520
|
||||
cmp r0, #0
|
||||
beq _08044188
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _080441BA
|
||||
movs r0, #8
|
||||
strb r0, [r4, #0xe]
|
||||
adds r0, r4, #0
|
||||
bl sub_08044310
|
||||
b _080441BA
|
||||
_08044188:
|
||||
movs r0, #8
|
||||
strb r0, [r4, #0xe]
|
||||
b _080441BA
|
||||
_0804418E:
|
||||
adds r0, r4, #0
|
||||
bl sub_0806F520
|
||||
cmp r0, #0
|
||||
beq _080441B0
|
||||
ldr r0, _080441AC @ =gUnk_080D15A8
|
||||
ldrb r1, [r4, #0xd]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r0
|
||||
ldr r1, [r1]
|
||||
adds r0, r4, #0
|
||||
bl _call_via_r1
|
||||
b _080441BA
|
||||
.align 2, 0
|
||||
_080441AC: .4byte gUnk_080D15A8
|
||||
_080441B0:
|
||||
adds r0, r4, #0
|
||||
bl sub_080445C0
|
||||
bl DeleteThisEntity
|
||||
_080441BA:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_080441BC
|
||||
sub_080441BC: @ 0x080441BC
|
||||
movs r1, #2
|
||||
strb r1, [r0, #0xd]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080441C4
|
||||
sub_080441C4: @ 0x080441C4
|
||||
push {lr}
|
||||
bl sub_0806F4E8
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_080441CC
|
||||
sub_080441CC: @ 0x080441CC
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0806F3E4
|
||||
cmp r0, #0
|
||||
beq _080441DE
|
||||
adds r0, r4, #0
|
||||
bl GenericDeath
|
||||
_080441DE:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_080441E0
|
||||
sub_080441E0: @ 0x080441E0
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r4, r0, #0
|
||||
movs r0, #0x12
|
||||
bl CheckGlobalFlag
|
||||
cmp r0, #0
|
||||
beq _080441F2
|
||||
bl DeleteThisEntity
|
||||
_080441F2:
|
||||
ldrb r7, [r4, #0xa]
|
||||
cmp r7, #0
|
||||
bne _08044284
|
||||
.ifdef EU
|
||||
movs r0, #0xf5
|
||||
lsls r0, r0, #0x1
|
||||
.else
|
||||
ldr r0, _08044244 @ =0x000001EB
|
||||
.endif
|
||||
movs r1, #1
|
||||
bl sub_080AD8F0
|
||||
adds r6, r0, #0
|
||||
ldrb r1, [r6]
|
||||
lsls r0, r1, #2
|
||||
adds r0, r0, r1
|
||||
adds r5, r0, #1
|
||||
adds r0, r5, #0
|
||||
bl zMalloc
|
||||
adds r1, r0, #0
|
||||
str r1, [r4, #0x64]
|
||||
cmp r1, #0
|
||||
beq _0804429A
|
||||
adds r0, r6, #0
|
||||
adds r2, r5, #0
|
||||
bl MemCopy
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x28
|
||||
movs r0, #0xff
|
||||
strb r0, [r1]
|
||||
ldr r0, [r4, #0x64]
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #3
|
||||
adds r0, #0xc
|
||||
bl zMalloc
|
||||
adds r2, r0, #0
|
||||
cmp r2, #0
|
||||
bne _08044248
|
||||
ldr r0, [r4, #0x64]
|
||||
bl zFree
|
||||
b _0804429A
|
||||
.align 2, 0
|
||||
.ifndef EU
|
||||
_08044244: .4byte 0x000001EB
|
||||
.endif
|
||||
_08044248:
|
||||
str r2, [r4, #0x48]
|
||||
ldr r0, _0804427C @ =gHitbox_4
|
||||
ldr r1, [r0, #4]
|
||||
ldr r0, [r0]
|
||||
str r0, [r2]
|
||||
str r1, [r2, #4]
|
||||
adds r0, r4, #0
|
||||
bl sub_080442BC
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0x1e]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #7
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x75
|
||||
strb r7, [r0]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x76
|
||||
ldr r0, _08044280 @ =0x0000FFFF
|
||||
strh r0, [r1]
|
||||
b _08044292
|
||||
.align 2, 0
|
||||
_0804427C: .4byte gHitbox_4
|
||||
_08044280: .4byte 0x0000FFFF
|
||||
_08044284:
|
||||
movs r0, #0
|
||||
strb r0, [r4, #0x1e]
|
||||
strh r0, [r4, #0x24]
|
||||
ldr r0, _0804429C @ =gHitbox_1
|
||||
str r0, [r4, #0x48]
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0x1c]
|
||||
_08044292:
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #8
|
||||
strb r0, [r4, #0xe]
|
||||
_0804429A:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0804429C: .4byte gHitbox_1
|
||||
|
||||
thumb_func_start sub_080442A0
|
||||
sub_080442A0: @ 0x080442A0
|
||||
push {lr}
|
||||
adds r1, r0, #0
|
||||
ldrb r0, [r1, #0xa]
|
||||
cmp r0, #0
|
||||
bne _080442B2
|
||||
adds r0, r1, #0
|
||||
bl sub_08044498
|
||||
b _080442B8
|
||||
_080442B2:
|
||||
adds r0, r1, #0
|
||||
bl sub_08044550
|
||||
_080442B8:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080442BC
|
||||
sub_080442BC: @ 0x080442BC
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r3, r0, #0
|
||||
ldr r5, _0804430C @ =gUnk_080D15B4
|
||||
ldr r0, [r3, #0x64]
|
||||
ldrb r6, [r0]
|
||||
movs r4, #0
|
||||
cmp r4, r6
|
||||
bhs _08044304
|
||||
movs r7, #0
|
||||
_080442CE:
|
||||
ldr r1, [r3, #0x48]
|
||||
lsls r2, r4, #3
|
||||
adds r1, r2, r1
|
||||
ldrb r0, [r5]
|
||||
strb r0, [r1, #0xc]
|
||||
ldr r0, [r3, #0x48]
|
||||
adds r0, r2, r0
|
||||
ldrb r1, [r5, #1]
|
||||
strb r1, [r0, #0xd]
|
||||
ldr r0, [r3, #0x48]
|
||||
adds r0, r2, r0
|
||||
ldrb r1, [r5, #2]
|
||||
strb r1, [r0, #0xe]
|
||||
ldr r0, [r3, #0x48]
|
||||
adds r0, r2, r0
|
||||
ldrb r1, [r5, #3]
|
||||
strb r1, [r0, #0xf]
|
||||
ldr r0, [r3, #0x48]
|
||||
adds r0, r2, r0
|
||||
adds r0, #0xc
|
||||
strb r7, [r0, #4]
|
||||
ldr r0, [r3, #0x48]
|
||||
adds r2, r2, r0
|
||||
strb r4, [r2, #0x11]
|
||||
adds r4, #1
|
||||
cmp r4, r6
|
||||
blo _080442CE
|
||||
_08044304:
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x74
|
||||
strb r6, [r0]
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0804430C: .4byte gUnk_080D15B4
|
||||
|
||||
thumb_func_start sub_08044310
|
||||
sub_08044310: @ 0x08044310
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r5, r0, #0
|
||||
movs r4, #0xff
|
||||
movs r6, #0xff
|
||||
ldr r0, _08044334 @ =gPlayerEntity
|
||||
ldrb r0, [r0, #0x14]
|
||||
lsrs r1, r0, #1
|
||||
movs r0, #3
|
||||
ands r1, r0
|
||||
cmp r1, #1
|
||||
beq _0804436A
|
||||
cmp r1, #1
|
||||
bgt _08044338
|
||||
cmp r1, #0
|
||||
beq _08044342
|
||||
b _080443EA
|
||||
.align 2, 0
|
||||
_08044334: .4byte gPlayerEntity
|
||||
_08044338:
|
||||
cmp r1, #2
|
||||
beq _08044392
|
||||
cmp r1, #3
|
||||
beq _080443C4
|
||||
b _080443EA
|
||||
_08044342:
|
||||
movs r2, #0
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x74
|
||||
ldrb r0, [r0]
|
||||
cmp r2, r0
|
||||
bhs _080443EA
|
||||
adds r3, r0, #0
|
||||
ldr r1, [r5, #0x48]
|
||||
_08044352:
|
||||
ldrb r0, [r1, #0x10]
|
||||
cmp r0, #0
|
||||
bne _08044360
|
||||
ldrb r0, [r1, #0xd]
|
||||
cmp r6, r0
|
||||
bls _08044360
|
||||
adds r4, r2, #0
|
||||
_08044360:
|
||||
adds r1, #8
|
||||
adds r2, #1
|
||||
cmp r2, r3
|
||||
blo _08044352
|
||||
b _080443EA
|
||||
_0804436A:
|
||||
movs r2, #0
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x74
|
||||
ldrb r0, [r0]
|
||||
cmp r2, r0
|
||||
bhs _080443EA
|
||||
adds r3, r0, #0
|
||||
ldr r1, [r5, #0x48]
|
||||
_0804437A:
|
||||
ldrb r0, [r1, #0x10]
|
||||
cmp r0, #0
|
||||
bne _08044388
|
||||
ldrb r0, [r1, #0xe]
|
||||
cmp r6, r0
|
||||
bls _08044388
|
||||
adds r4, r2, #0
|
||||
_08044388:
|
||||
adds r1, #8
|
||||
adds r2, #1
|
||||
cmp r2, r3
|
||||
blo _0804437A
|
||||
b _080443EA
|
||||
_08044392:
|
||||
movs r2, #0
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x74
|
||||
ldrb r0, [r0]
|
||||
cmp r2, r0
|
||||
bhs _080443EA
|
||||
adds r3, r0, #0
|
||||
ldr r1, [r5, #0x48]
|
||||
_080443A2:
|
||||
ldrb r0, [r1, #0x10]
|
||||
cmp r0, #0
|
||||
bne _080443B0
|
||||
ldrb r0, [r1, #0xc]
|
||||
cmp r6, r0
|
||||
bls _080443B0
|
||||
adds r4, r2, #0
|
||||
_080443B0:
|
||||
adds r1, #8
|
||||
adds r2, #1
|
||||
cmp r2, r3
|
||||
blo _080443A2
|
||||
b _080443EA
|
||||
_080443BA:
|
||||
mov r1, r8
|
||||
adds r0, r1, r4
|
||||
ldrb r0, [r0, #0x11]
|
||||
strb r0, [r3, #5]
|
||||
b _08044492
|
||||
_080443C4:
|
||||
movs r2, #0
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x74
|
||||
ldrb r0, [r0]
|
||||
cmp r2, r0
|
||||
bhs _080443EA
|
||||
adds r3, r0, #0
|
||||
ldr r1, [r5, #0x48]
|
||||
_080443D4:
|
||||
ldrb r0, [r1, #0x10]
|
||||
cmp r0, #0
|
||||
bne _080443E2
|
||||
ldrb r0, [r1, #0xf]
|
||||
cmp r6, r0
|
||||
bls _080443E2
|
||||
adds r4, r2, #0
|
||||
_080443E2:
|
||||
adds r1, #8
|
||||
adds r2, #1
|
||||
cmp r2, r3
|
||||
blo _080443D4
|
||||
_080443EA:
|
||||
cmp r4, #0xff
|
||||
beq _08044492
|
||||
ldr r0, [r5, #0x48]
|
||||
lsls r4, r4, #3
|
||||
adds r0, r4, r0
|
||||
movs r1, #1
|
||||
strb r1, [r0, #0x10]
|
||||
ldr r1, [r5, #0x64]
|
||||
ldrb r0, [r1]
|
||||
subs r0, #1
|
||||
strb r0, [r1]
|
||||
ldr r2, [r5, #0x64]
|
||||
ldrb r1, [r2]
|
||||
lsls r0, r1, #2
|
||||
adds r0, r0, r1
|
||||
adds r0, #1
|
||||
adds r7, r2, r0
|
||||
ldr r0, [r5, #0x48]
|
||||
adds r0, r4, r0
|
||||
ldrb r1, [r0, #0x11]
|
||||
lsls r0, r1, #2
|
||||
adds r0, r0, r1
|
||||
adds r0, #1
|
||||
adds r6, r2, r0
|
||||
movs r0, #0x53
|
||||
movs r1, #1
|
||||
bl CreateEnemy
|
||||
adds r1, r0, #0
|
||||
mov r8, r4
|
||||
cmp r1, #0
|
||||
beq _08044440
|
||||
movs r2, #0
|
||||
ldrsb r2, [r6, r2]
|
||||
adds r2, #8
|
||||
lsls r2, r2, #0x10
|
||||
movs r3, #1
|
||||
ldrsb r3, [r6, r3]
|
||||
adds r3, #8
|
||||
lsls r3, r3, #0x10
|
||||
adds r0, r5, #0
|
||||
bl PositionRelative
|
||||
_08044440:
|
||||
ldr r0, [r5, #0x64]
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _08044458
|
||||
movs r0, #0x12
|
||||
bl SetGlobalFlag
|
||||
movs r0, #0x72
|
||||
bl SoundReq
|
||||
bl DeleteThisEntity
|
||||
_08044458:
|
||||
movs r2, #0
|
||||
adds r3, r5, #0
|
||||
adds r3, #0x74
|
||||
_0804445E:
|
||||
adds r0, r6, r2
|
||||
adds r1, r7, r2
|
||||
ldrb r1, [r1]
|
||||
strb r1, [r0]
|
||||
adds r2, #1
|
||||
cmp r2, #4
|
||||
bls _0804445E
|
||||
movs r2, #0
|
||||
ldrb r1, [r3]
|
||||
cmp r2, r1
|
||||
bhs _08044492
|
||||
ldr r4, [r5, #0x48]
|
||||
ldr r0, [r5, #0x64]
|
||||
ldrb r6, [r0]
|
||||
adds r5, r1, #0
|
||||
adds r3, r4, #0
|
||||
adds r3, #0xc
|
||||
adds r1, r4, #0
|
||||
_08044482:
|
||||
ldrb r0, [r1, #0x11]
|
||||
cmp r0, r6
|
||||
beq _080443BA
|
||||
adds r3, #8
|
||||
adds r1, #8
|
||||
adds r2, #1
|
||||
cmp r2, r5
|
||||
blo _08044482
|
||||
_08044492:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
|
||||
thumb_func_start sub_08044498
|
||||
sub_08044498: @ 0x08044498
|
||||
push {r4, r5, r6, lr}
|
||||
mov ip, r0
|
||||
ldr r6, _08044538 @ =gPlayerEntity
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r6, r1]
|
||||
ldr r3, _0804453C @ =gRoomControls
|
||||
ldrh r1, [r3, #6]
|
||||
subs r0, r0, r1
|
||||
asrs r4, r0, #4
|
||||
movs r2, #0x3f
|
||||
ands r4, r2
|
||||
movs r5, #0x32
|
||||
ldrsh r0, [r6, r5]
|
||||
ldrh r1, [r3, #8]
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
ands r0, r2
|
||||
lsls r0, r0, #6
|
||||
orrs r4, r0
|
||||
ldr r0, _08044540 @ =gPlayerState
|
||||
adds r0, #0x92
|
||||
ldrh r0, [r0]
|
||||
movs r1, #0xf0
|
||||
lsls r1, r1, #4
|
||||
ands r1, r0
|
||||
mov r2, ip
|
||||
adds r2, #0x75
|
||||
ldrb r0, [r2]
|
||||
cmp r1, r0
|
||||
bne _080444DE
|
||||
mov r0, ip
|
||||
adds r0, #0x76
|
||||
ldrh r0, [r0]
|
||||
cmp r4, r0
|
||||
beq _0804454C
|
||||
_080444DE:
|
||||
strb r1, [r2]
|
||||
mov r0, ip
|
||||
adds r0, #0x76
|
||||
strh r4, [r0]
|
||||
mov r1, ip
|
||||
ldr r0, [r1, #0x64]
|
||||
adds r2, r0, #1
|
||||
ldrb r4, [r0]
|
||||
movs r3, #0x2e
|
||||
ldrsh r1, [r6, r3]
|
||||
mov r5, ip
|
||||
movs r3, #0x2e
|
||||
ldrsh r0, [r5, r3]
|
||||
subs r5, r1, r0
|
||||
movs r0, #0x32
|
||||
ldrsh r1, [r6, r0]
|
||||
mov r3, ip
|
||||
movs r6, #0x32
|
||||
ldrsh r0, [r3, r6]
|
||||
subs r1, r1, r0
|
||||
movs r3, #0
|
||||
cmp r3, r4
|
||||
bhs _0804454C
|
||||
_0804450C:
|
||||
movs r0, #0
|
||||
ldrsb r0, [r2, r0]
|
||||
subs r0, r5, r0
|
||||
cmp r0, #0xf
|
||||
bhi _08044544
|
||||
movs r0, #1
|
||||
ldrsb r0, [r2, r0]
|
||||
subs r0, r1, r0
|
||||
cmp r0, #0xf
|
||||
bhi _08044544
|
||||
movs r0, #0xf
|
||||
movs r1, #0x11
|
||||
movs r2, #0
|
||||
bl CreateObject
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _0804454C
|
||||
ldr r0, _08044538 @ =gPlayerEntity
|
||||
bl CopyPosition
|
||||
b _0804454C
|
||||
.align 2, 0
|
||||
_08044538: .4byte gPlayerEntity
|
||||
_0804453C: .4byte gRoomControls
|
||||
_08044540: .4byte gPlayerState
|
||||
_08044544:
|
||||
adds r2, #5
|
||||
adds r3, #1
|
||||
cmp r3, r4
|
||||
blo _0804450C
|
||||
_0804454C:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08044550
|
||||
sub_08044550: @ 0x08044550
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r6, r0, #0
|
||||
ldr r0, _080445A8 @ =gPlayerState
|
||||
ldrb r1, [r0, #0x1c]
|
||||
movs r0, #0xf
|
||||
ands r0, r1
|
||||
cmp r0, #1
|
||||
bne _080445B4
|
||||
ldrh r1, [r6, #0x24]
|
||||
movs r2, #0x24
|
||||
ldrsh r0, [r6, r2]
|
||||
cmp r0, #0xff
|
||||
bgt _08044570
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x10
|
||||
strh r0, [r6, #0x24]
|
||||
_08044570:
|
||||
ldr r5, _080445AC @ =gPlayerEntity
|
||||
ldrb r0, [r5, #0x14]
|
||||
movs r4, #0xe
|
||||
ands r4, r0
|
||||
ldr r0, _080445B0 @ =gUnk_08126EE4
|
||||
adds r4, r4, r0
|
||||
movs r3, #0x2e
|
||||
ldrsh r0, [r6, r3]
|
||||
movs r7, #0x32
|
||||
ldrsh r1, [r6, r7]
|
||||
movs r3, #0x2e
|
||||
ldrsh r2, [r5, r3]
|
||||
movs r3, #0
|
||||
ldrsb r3, [r4, r3]
|
||||
adds r2, r2, r3
|
||||
movs r7, #0x32
|
||||
ldrsh r3, [r5, r7]
|
||||
ldrb r4, [r4, #1]
|
||||
lsls r4, r4, #0x18
|
||||
asrs r4, r4, #0x18
|
||||
adds r3, r3, r4
|
||||
bl CalculateDirectionTo
|
||||
strb r0, [r6, #0x15]
|
||||
adds r0, r6, #0
|
||||
bl LinearMoveUpdate
|
||||
b _080445BE
|
||||
.align 2, 0
|
||||
_080445A8: .4byte gPlayerState
|
||||
_080445AC: .4byte gPlayerEntity
|
||||
_080445B0: .4byte gUnk_08126EE4
|
||||
_080445B4:
|
||||
adds r0, r6, #0
|
||||
bl sub_080445C0
|
||||
bl DeleteThisEntity
|
||||
_080445BE:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
|
||||
thumb_func_start sub_080445C0
|
||||
sub_080445C0: @ 0x080445C0
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r0, #0x21
|
||||
movs r1, #1
|
||||
movs r2, #1
|
||||
bl CreateObject
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _080445DA
|
||||
adds r0, r4, #0
|
||||
bl CopyPosition
|
||||
_080445DA:
|
||||
pop {r4, pc}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r3, r0, #0
|
||||
ldr r5, _0804430C @ =gUnk_080D15B4
|
||||
ldr r0, [r3, #0x64]
|
||||
ldrb r6, [r0]
|
||||
movs r4, #0
|
||||
cmp r4, r6
|
||||
bhs _08044304
|
||||
movs r7, #0
|
||||
_080442CE:
|
||||
ldr r1, [r3, #0x48]
|
||||
lsls r2, r4, #3
|
||||
adds r1, r2, r1
|
||||
ldrb r0, [r5]
|
||||
strb r0, [r1, #0xc]
|
||||
ldr r0, [r3, #0x48]
|
||||
adds r0, r2, r0
|
||||
ldrb r1, [r5, #1]
|
||||
strb r1, [r0, #0xd]
|
||||
ldr r0, [r3, #0x48]
|
||||
adds r0, r2, r0
|
||||
ldrb r1, [r5, #2]
|
||||
strb r1, [r0, #0xe]
|
||||
ldr r0, [r3, #0x48]
|
||||
adds r0, r2, r0
|
||||
ldrb r1, [r5, #3]
|
||||
strb r1, [r0, #0xf]
|
||||
ldr r0, [r3, #0x48]
|
||||
adds r0, r2, r0
|
||||
adds r0, #0xc
|
||||
strb r7, [r0, #4]
|
||||
ldr r0, [r3, #0x48]
|
||||
adds r2, r2, r0
|
||||
strb r4, [r2, #0x11]
|
||||
adds r4, #1
|
||||
cmp r4, r6
|
||||
blo _080442CE
|
||||
_08044304:
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x74
|
||||
strb r6, [r0]
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0804430C: .4byte gUnk_080D15B4
|
||||
.syntax divided
|
||||
|
|
@ -0,0 +1,213 @@
|
|||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r5, r0, #0
|
||||
movs r4, #0xff
|
||||
movs r6, #0xff
|
||||
ldr r0, _08044334 @ =gPlayerEntity
|
||||
ldrb r0, [r0, #0x14]
|
||||
lsrs r1, r0, #1
|
||||
movs r0, #3
|
||||
ands r1, r0
|
||||
cmp r1, #1
|
||||
beq _0804436A
|
||||
cmp r1, #1
|
||||
bgt _08044338
|
||||
cmp r1, #0
|
||||
beq _08044342
|
||||
b _080443EA
|
||||
.align 2, 0
|
||||
_08044334: .4byte gPlayerEntity
|
||||
_08044338:
|
||||
cmp r1, #2
|
||||
beq _08044392
|
||||
cmp r1, #3
|
||||
beq _080443C4
|
||||
b _080443EA
|
||||
_08044342:
|
||||
movs r2, #0
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x74
|
||||
ldrb r0, [r0]
|
||||
cmp r2, r0
|
||||
bhs _080443EA
|
||||
adds r3, r0, #0
|
||||
ldr r1, [r5, #0x48]
|
||||
_08044352:
|
||||
ldrb r0, [r1, #0x10]
|
||||
cmp r0, #0
|
||||
bne _08044360
|
||||
ldrb r0, [r1, #0xd]
|
||||
cmp r6, r0
|
||||
bls _08044360
|
||||
adds r4, r2, #0
|
||||
_08044360:
|
||||
adds r1, #8
|
||||
adds r2, #1
|
||||
cmp r2, r3
|
||||
blo _08044352
|
||||
b _080443EA
|
||||
_0804436A:
|
||||
movs r2, #0
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x74
|
||||
ldrb r0, [r0]
|
||||
cmp r2, r0
|
||||
bhs _080443EA
|
||||
adds r3, r0, #0
|
||||
ldr r1, [r5, #0x48]
|
||||
_0804437A:
|
||||
ldrb r0, [r1, #0x10]
|
||||
cmp r0, #0
|
||||
bne _08044388
|
||||
ldrb r0, [r1, #0xe]
|
||||
cmp r6, r0
|
||||
bls _08044388
|
||||
adds r4, r2, #0
|
||||
_08044388:
|
||||
adds r1, #8
|
||||
adds r2, #1
|
||||
cmp r2, r3
|
||||
blo _0804437A
|
||||
b _080443EA
|
||||
_08044392:
|
||||
movs r2, #0
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x74
|
||||
ldrb r0, [r0]
|
||||
cmp r2, r0
|
||||
bhs _080443EA
|
||||
adds r3, r0, #0
|
||||
ldr r1, [r5, #0x48]
|
||||
_080443A2:
|
||||
ldrb r0, [r1, #0x10]
|
||||
cmp r0, #0
|
||||
bne _080443B0
|
||||
ldrb r0, [r1, #0xc]
|
||||
cmp r6, r0
|
||||
bls _080443B0
|
||||
adds r4, r2, #0
|
||||
_080443B0:
|
||||
adds r1, #8
|
||||
adds r2, #1
|
||||
cmp r2, r3
|
||||
blo _080443A2
|
||||
b _080443EA
|
||||
_080443BA:
|
||||
mov r1, r8
|
||||
adds r0, r1, r4
|
||||
ldrb r0, [r0, #0x11]
|
||||
strb r0, [r3, #5]
|
||||
b _08044492
|
||||
_080443C4:
|
||||
movs r2, #0
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x74
|
||||
ldrb r0, [r0]
|
||||
cmp r2, r0
|
||||
bhs _080443EA
|
||||
adds r3, r0, #0
|
||||
ldr r1, [r5, #0x48]
|
||||
_080443D4:
|
||||
ldrb r0, [r1, #0x10]
|
||||
cmp r0, #0
|
||||
bne _080443E2
|
||||
ldrb r0, [r1, #0xf]
|
||||
cmp r6, r0
|
||||
bls _080443E2
|
||||
adds r4, r2, #0
|
||||
_080443E2:
|
||||
adds r1, #8
|
||||
adds r2, #1
|
||||
cmp r2, r3
|
||||
blo _080443D4
|
||||
_080443EA:
|
||||
cmp r4, #0xff
|
||||
beq _08044492
|
||||
ldr r0, [r5, #0x48]
|
||||
lsls r4, r4, #3
|
||||
adds r0, r4, r0
|
||||
movs r1, #1
|
||||
strb r1, [r0, #0x10]
|
||||
ldr r1, [r5, #0x64]
|
||||
ldrb r0, [r1]
|
||||
subs r0, #1
|
||||
strb r0, [r1]
|
||||
ldr r2, [r5, #0x64]
|
||||
ldrb r1, [r2]
|
||||
lsls r0, r1, #2
|
||||
adds r0, r0, r1
|
||||
adds r0, #1
|
||||
adds r7, r2, r0
|
||||
ldr r0, [r5, #0x48]
|
||||
adds r0, r4, r0
|
||||
ldrb r1, [r0, #0x11]
|
||||
lsls r0, r1, #2
|
||||
adds r0, r0, r1
|
||||
adds r0, #1
|
||||
adds r6, r2, r0
|
||||
movs r0, #0x53
|
||||
movs r1, #1
|
||||
bl CreateEnemy
|
||||
adds r1, r0, #0
|
||||
mov r8, r4
|
||||
cmp r1, #0
|
||||
beq _08044440
|
||||
movs r2, #0
|
||||
ldrsb r2, [r6, r2]
|
||||
adds r2, #8
|
||||
lsls r2, r2, #0x10
|
||||
movs r3, #1
|
||||
ldrsb r3, [r6, r3]
|
||||
adds r3, #8
|
||||
lsls r3, r3, #0x10
|
||||
adds r0, r5, #0
|
||||
bl PositionRelative
|
||||
_08044440:
|
||||
ldr r0, [r5, #0x64]
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _08044458
|
||||
movs r0, #0x12
|
||||
bl SetGlobalFlag
|
||||
movs r0, #0x72
|
||||
bl SoundReq
|
||||
bl DeleteThisEntity
|
||||
_08044458:
|
||||
movs r2, #0
|
||||
adds r3, r5, #0
|
||||
adds r3, #0x74
|
||||
_0804445E:
|
||||
adds r0, r6, r2
|
||||
adds r1, r7, r2
|
||||
ldrb r1, [r1]
|
||||
strb r1, [r0]
|
||||
adds r2, #1
|
||||
cmp r2, #4
|
||||
bls _0804445E
|
||||
movs r2, #0
|
||||
ldrb r1, [r3]
|
||||
cmp r2, r1
|
||||
bhs _08044492
|
||||
ldr r4, [r5, #0x48]
|
||||
ldr r0, [r5, #0x64]
|
||||
ldrb r6, [r0]
|
||||
adds r5, r1, #0
|
||||
adds r3, r4, #0
|
||||
adds r3, #0xc
|
||||
adds r1, r4, #0
|
||||
_08044482:
|
||||
ldrb r0, [r1, #0x11]
|
||||
cmp r0, r6
|
||||
beq _080443BA
|
||||
adds r3, #8
|
||||
adds r1, #8
|
||||
adds r2, #1
|
||||
cmp r2, r5
|
||||
blo _08044482
|
||||
_08044492:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.syntax divided
|
||||
|
|
@ -4,22 +4,9 @@
|
|||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_080D1588:: @ 080D1588
|
||||
.4byte sub_08044134
|
||||
.4byte sub_0804414C
|
||||
.4byte GenericKnockback
|
||||
.4byte GenericDeath
|
||||
.4byte GenericConfused
|
||||
.4byte sub_0804415C
|
||||
|
||||
gUnk_080D15A0:: @ 080D15A0
|
||||
.4byte sub_080441E0
|
||||
.4byte sub_080442A0
|
||||
|
||||
gUnk_080D15A8:: @ 080D15A8
|
||||
.4byte sub_080441BC
|
||||
.4byte sub_080441C4
|
||||
.4byte sub_080441CC
|
||||
|
||||
|
||||
gUnk_080D15B4:: @ 080D15B4
|
||||
.incbin "dust/gUnk_080D15B4.bin"
|
||||
|
|
|
|||
|
|
@ -381,7 +381,7 @@ SECTIONS {
|
|||
src/enemy/enemy50.o(.text);
|
||||
src/enemy/vaatiWrath.o(.text);
|
||||
src/enemy/vaatiArm.o(.text);
|
||||
asm/enemy/dust.o(.text);
|
||||
src/enemy/dust.o(.text);
|
||||
src/enemy/vaatiBall.o(.text);
|
||||
src/enemy/slime.o(.text);
|
||||
src/enemy/sub_080451CC.o(.text);
|
||||
|
|
@ -1031,6 +1031,7 @@ SECTIONS {
|
|||
data/animations/enemy/vaatiWrath.o(.rodata);
|
||||
src/enemy/vaatiArm.o(.rodata);
|
||||
data/animations/enemy/vaatiArm.o(.rodata);
|
||||
src/enemy/dust.o(.rodata);
|
||||
data/const/enemy/dust.o(.rodata);
|
||||
src/enemy/vaatiBall.o(.rodata);
|
||||
data/animations/enemy/vaatiBall.o(.rodata);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,327 @@
|
|||
#define NENT_DEPRECATED
|
||||
#include "entity.h"
|
||||
#include "enemy.h"
|
||||
#include "hitbox.h"
|
||||
#include "player.h"
|
||||
#include "physics.h"
|
||||
#include "room.h"
|
||||
#include "asm.h"
|
||||
#include "object.h"
|
||||
|
||||
typedef struct {
|
||||
Entity base;
|
||||
u8 filler[0xc];
|
||||
u8 unk_74;
|
||||
u8 unk_75;
|
||||
u16 unk_76;
|
||||
} DustEntity;
|
||||
|
||||
typedef struct {
|
||||
s8 unk_0;
|
||||
s8 unk_1;
|
||||
u8 unk_2;
|
||||
u8 unk_3;
|
||||
u8 unk_4;
|
||||
} PACKED DustHeapItem;
|
||||
|
||||
typedef struct {
|
||||
u8 unk_0;
|
||||
DustHeapItem items[0];
|
||||
} PACKED DustHeap;
|
||||
|
||||
#define HEAP ((DustHeap*)super->myHeap)
|
||||
|
||||
#ifdef EU
|
||||
#define DUST_SPRITE_INDEX 0x1ea
|
||||
#else
|
||||
#define DUST_SPRITE_INDEX 0x1eb
|
||||
#endif
|
||||
|
||||
void sub_08044134(DustEntity*);
|
||||
void sub_0804414C(DustEntity*);
|
||||
void sub_0804415C(DustEntity*);
|
||||
void sub_080441E0(DustEntity*);
|
||||
void sub_080442A0(DustEntity*);
|
||||
void sub_080441CC(DustEntity*);
|
||||
void sub_080441C4(DustEntity*);
|
||||
void sub_080441BC(DustEntity*);
|
||||
void sub_08044310(DustEntity*);
|
||||
void sub_080445C0(DustEntity*);
|
||||
void sub_080442BC(DustEntity*);
|
||||
void sub_08044498(DustEntity*);
|
||||
void sub_08044550(DustEntity*);
|
||||
|
||||
extern void* sub_080AD8F0(u32, u32);
|
||||
|
||||
extern const s8 gUnk_08126EE4[];
|
||||
|
||||
void (*const Dust_Functions[])(Entity*) = {
|
||||
(EntityActionPtr)sub_08044134, (EntityActionPtr)sub_0804414C, GenericKnockback, GenericDeath, GenericConfused,
|
||||
(EntityActionPtr)sub_0804415C,
|
||||
};
|
||||
|
||||
void Dust(Entity* this) {
|
||||
Dust_Functions[GetNextFunction(this)](this);
|
||||
}
|
||||
|
||||
void sub_08044134(DustEntity* this) {
|
||||
static void (*const Dust_Actions[])(DustEntity*) = {
|
||||
sub_080441E0,
|
||||
sub_080442A0,
|
||||
};
|
||||
Dust_Actions[super->action](this);
|
||||
}
|
||||
|
||||
void sub_0804414C(DustEntity* this) {
|
||||
EnemyFunctionHandlerAfterCollision(super, Dust_Functions);
|
||||
}
|
||||
|
||||
void sub_0804415C(DustEntity* this) {
|
||||
static void (*const Dust_SubActions[])(DustEntity*) = {
|
||||
sub_080441BC,
|
||||
sub_080441C4,
|
||||
sub_080441CC,
|
||||
};
|
||||
|
||||
if (super->type == 0) {
|
||||
if (sub_0806F520(super)) {
|
||||
if (--super->timer == 0) {
|
||||
super->timer = 8;
|
||||
sub_08044310(this);
|
||||
}
|
||||
} else {
|
||||
super->timer = 8;
|
||||
}
|
||||
} else {
|
||||
if (sub_0806F520(super)) {
|
||||
Dust_SubActions[super->subAction](this);
|
||||
} else {
|
||||
sub_080445C0(this);
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080441BC(DustEntity* this) {
|
||||
super->subAction = 2;
|
||||
}
|
||||
|
||||
void sub_080441C4(DustEntity* this) {
|
||||
sub_0806F4E8(super);
|
||||
}
|
||||
|
||||
void sub_080441CC(DustEntity* this) {
|
||||
if (sub_0806F3E4(super)) {
|
||||
GenericDeath(super);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080441E0(DustEntity* this) {
|
||||
int iVar1;
|
||||
u8* pbVar2;
|
||||
u32* puVar3;
|
||||
Hitbox* pHVar4;
|
||||
|
||||
if (CheckGlobalFlag(MACHI_MACHIHOKORI)) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
if (super->type == 0) {
|
||||
pbVar2 = (u8*)sub_080AD8F0(DUST_SPRITE_INDEX, 1);
|
||||
iVar1 = (u32)*pbVar2 * sizeof(DustHeapItem) + 1;
|
||||
puVar3 = (u32*)zMalloc(iVar1);
|
||||
super->myHeap = puVar3;
|
||||
if (puVar3 == NULL) {
|
||||
return;
|
||||
}
|
||||
MemCopy(pbVar2, puVar3, iVar1);
|
||||
super->spriteAnimation[2] = 0xff;
|
||||
pHVar4 = (Hitbox*)zMalloc(HEAP->unk_0 * 8 + 0xc);
|
||||
if (pHVar4 == NULL) {
|
||||
zFree(super->myHeap);
|
||||
return;
|
||||
}
|
||||
super->hitbox = pHVar4;
|
||||
*pHVar4 = gHitbox_4;
|
||||
sub_080442BC(this);
|
||||
super->frameIndex = 1;
|
||||
super->spritePriority.b0 = 7;
|
||||
this->unk_75 = 0;
|
||||
this->unk_76 = 0xffff;
|
||||
} else {
|
||||
super->frameIndex = 0;
|
||||
super->speed = 0;
|
||||
super->hitbox = (Hitbox*)&gHitbox_1;
|
||||
super->gustJarFlags = 1;
|
||||
}
|
||||
super->action = 1;
|
||||
super->timer = 8;
|
||||
}
|
||||
|
||||
void sub_080442A0(DustEntity* this) {
|
||||
if (super->type == 0) {
|
||||
sub_08044498(this);
|
||||
} else {
|
||||
sub_08044550(this);
|
||||
}
|
||||
}
|
||||
|
||||
extern const u8 gUnk_080D15B4[];
|
||||
|
||||
NONMATCH("asm/non_matching/dust/sub_080442BC.inc", void sub_080442BC(DustEntity* this)) {
|
||||
u32 bVar1;
|
||||
u32 i;
|
||||
u32 tmp;
|
||||
const u8* ptr = gUnk_080D15B4;
|
||||
u8* ptr2;
|
||||
|
||||
bVar1 = HEAP->unk_0;
|
||||
|
||||
for (i = 0; i < bVar1; i++) {
|
||||
tmp = 0;
|
||||
super->hitbox[i + 1].unk2[2] = ptr[0];
|
||||
super->hitbox[i + 1].unk2[3] = ptr[1];
|
||||
super->hitbox[i + 1].width = ptr[2];
|
||||
super->hitbox[i + 1].height = ptr[3];
|
||||
// hitbox is probably misused here.
|
||||
super->hitbox[i + 1].offset_x = tmp;
|
||||
super->hitbox[i + 2].offset_y = (s8)i;
|
||||
}
|
||||
this->unk_74 = bVar1;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
// heap and hitbox struct
|
||||
NONMATCH("asm/non_matching/dust/sub_08044310.inc", void sub_08044310(DustEntity* this)) {
|
||||
Entity* iVar1;
|
||||
u32 bVar2;
|
||||
Hitbox* pHVar3;
|
||||
DustHeap* puVar4;
|
||||
u32 i;
|
||||
u8* puVar6;
|
||||
u32 uVar7;
|
||||
Hitbox* pHVar8;
|
||||
u8* pbVar9;
|
||||
u32 tmp;
|
||||
|
||||
uVar7 = 0xff;
|
||||
tmp = 0xff;
|
||||
switch (gPlayerEntity.animationState >> 1 & 3) {
|
||||
case 0:
|
||||
for (i = 0; i < this->unk_74; i++) {
|
||||
if (((u8)super->hitbox[i + 2].offset_x == 0) && (tmp > (u32)super->hitbox[i + 1].unk2[3])) {
|
||||
uVar7 = i;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
for (i = 0; i < this->unk_74; i++) {
|
||||
if (((u8)super->hitbox[i + 2].offset_x == 0) && (tmp > (u8)super->hitbox[i + 1].width)) {
|
||||
uVar7 = i;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for (i = 0; i < this->unk_74; i++) {
|
||||
if ((u8)super->hitbox[i + 2].offset_x == 0 && (tmp > (u8)super->hitbox[i + 1].unk2[2])) {
|
||||
uVar7 = i;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
for (i = 0; i < this->unk_74; i++) {
|
||||
if (((u8)super->hitbox[i + 2].offset_x == 0) && (tmp > super->hitbox[i + 1].height)) {
|
||||
uVar7 = i;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (uVar7 != 0xff) {
|
||||
super->hitbox[uVar7 + 2].offset_x = 1;
|
||||
HEAP->unk_0--;
|
||||
puVar4 = HEAP;
|
||||
bVar2 = puVar4->unk_0;
|
||||
pbVar9 = &puVar4->items[(u32)(u8)super->hitbox[uVar7 + 2].offset_y].unk_1;
|
||||
iVar1 = CreateEnemy(DUST, 1);
|
||||
if (iVar1 != 0) {
|
||||
PositionRelative(super, iVar1, ((s8)*pbVar9 + 8) * 0x10000, ((s8)pbVar9[1] + 8) * 0x10000);
|
||||
}
|
||||
|
||||
if (HEAP->unk_0 == 0) {
|
||||
SetGlobalFlag(MACHI_MACHIHOKORI);
|
||||
SoundReq(SFX_SECRET);
|
||||
DeleteThisEntity();
|
||||
}
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
pbVar9[i] = (&puVar4->unk_0)[i];
|
||||
}
|
||||
|
||||
for (i = 0; i < this->unk_74; i++) {
|
||||
if ((u8)super->hitbox[i + 2].offset_y == HEAP->unk_0) {
|
||||
super->hitbox[i].unk2[3] = super->hitbox[uVar7 + 2].offset_y;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
void sub_08044498(DustEntity* this) {
|
||||
Entity* pEVar1;
|
||||
DustHeapItem* pbVar2;
|
||||
u32 i;
|
||||
u32 tileIndex;
|
||||
u32 uVar4;
|
||||
u32 tmp;
|
||||
u32 xdiff, ydiff;
|
||||
|
||||
uVar4 = COORD_TO_TILE(&gPlayerEntity);
|
||||
tmp = (gPlayerState.field_0x92 & 0xf00);
|
||||
if (tmp != this->unk_75 || uVar4 != this->unk_76) {
|
||||
this->unk_75 = tmp;
|
||||
this->unk_76 = uVar4;
|
||||
pbVar2 = HEAP->items;
|
||||
uVar4 = HEAP->unk_0;
|
||||
xdiff = gPlayerEntity.x.HALF.HI - super->x.HALF.HI;
|
||||
ydiff = gPlayerEntity.y.HALF.HI - super->y.HALF.HI;
|
||||
|
||||
for (i = 0; i < uVar4; i++) {
|
||||
if (xdiff - pbVar2[i].unk_0 < 0x10 && ydiff - pbVar2[i].unk_1 < 0x10) {
|
||||
pEVar1 = CreateObject(SPECIAL_FX, 0x11, 0);
|
||||
if (pEVar1 == NULL) {
|
||||
return;
|
||||
}
|
||||
CopyPosition(&gPlayerEntity, pEVar1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08044550(DustEntity* this) {
|
||||
u8 uVar1;
|
||||
const s8* ptr;
|
||||
|
||||
if ((gPlayerState.field_0x1c & 0xf) == 1) {
|
||||
if (super->speed < 0x100) {
|
||||
super->speed += 0x10;
|
||||
}
|
||||
ptr = &gUnk_08126EE4[gPlayerEntity.animationState & 0xe];
|
||||
super->direction = CalculateDirectionTo(super->x.HALF.HI, super->y.HALF.HI, gPlayerEntity.x.HALF.HI + ptr[0],
|
||||
gPlayerEntity.y.HALF.HI + ptr[1]);
|
||||
LinearMoveUpdate(super);
|
||||
} else {
|
||||
sub_080445C0(this);
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080445C0(DustEntity* this) {
|
||||
Entity* pEVar1;
|
||||
|
||||
pEVar1 = CreateObject(OBJECT_21, 1, 1);
|
||||
if (pEVar1 != NULL) {
|
||||
CopyPosition(super, pEVar1);
|
||||
}
|
||||
}
|
||||
|
|
@ -27,7 +27,7 @@ typedef struct {
|
|||
u8 unk_85;
|
||||
} LilypadLargeEntity;
|
||||
|
||||
extern u8 gUnk_08126EE4[];
|
||||
extern s8 gUnk_08126EE4[];
|
||||
|
||||
void sub_080855E8(LilypadLargeEntity*);
|
||||
void sub_08085CDC(LilypadLargeEntity*);
|
||||
|
|
@ -166,8 +166,8 @@ void sub_080855E8(LilypadLargeEntity* this) {
|
|||
SoundReq(SFX_WATER_WALK);
|
||||
}
|
||||
if ((super->contactFlags & 0x7f) == 0x13) {
|
||||
sVar10 = gPlayerEntity.x.HALF.HI + (s8)gUnk_08126EE4[gPlayerEntity.animationState & 0xe];
|
||||
uVar4 = gPlayerEntity.y.HALF.HI + (s8)gUnk_08126EE4[gPlayerEntity.animationState | 1];
|
||||
sVar10 = gPlayerEntity.x.HALF.HI + gUnk_08126EE4[gPlayerEntity.animationState & 0xe];
|
||||
uVar4 = gPlayerEntity.y.HALF.HI + gUnk_08126EE4[gPlayerEntity.animationState | 1];
|
||||
super->direction = CalculateDirectionTo(super->x.HALF.HI, super->y.HALF.HI, sVar10, uVar4);
|
||||
|
||||
switch (gPlayerState.gustJarSpeed) {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ typedef struct {
|
|||
/*0x7c*/ u32 unk_7c;
|
||||
} PullableMushroomEntity;
|
||||
|
||||
extern const u8 gUnk_08126EE4[];
|
||||
extern const s8 gUnk_08126EE4[];
|
||||
|
||||
void PullableMushroom_Init(PullableMushroomEntity*);
|
||||
void PullableMushroom_Action1(PullableMushroomEntity*);
|
||||
|
|
|
|||
Loading…
Reference in New Issue