mirror of https://github.com/zeldaret/tmc.git
commit
5ce91f97bc
398
asm/talon.s
398
asm/talon.s
|
@ -1,398 +0,0 @@
|
||||||
.include "asm/macros.inc"
|
|
||||||
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
|
|
||||||
thumb_func_start sub_08065534
|
|
||||||
sub_08065534: @ 0x08065534
|
|
||||||
push {lr}
|
|
||||||
adds r2, r0, #0
|
|
||||||
ldrb r1, [r2, #0x10]
|
|
||||||
movs r0, #2
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _08065558
|
|
||||||
ldr r0, _08065554 @ =gUnk_0810FEC4
|
|
||||||
ldrb r1, [r2, #0xc]
|
|
||||||
lsls r1, r1, #2
|
|
||||||
adds r1, r1, r0
|
|
||||||
ldr r1, [r1]
|
|
||||||
adds r0, r2, #0
|
|
||||||
bl _call_via_r1
|
|
||||||
b _08065568
|
|
||||||
.align 2, 0
|
|
||||||
_08065554: .4byte gUnk_0810FEC4
|
|
||||||
_08065558:
|
|
||||||
ldr r0, _0806556C @ =gUnk_0810FEBC
|
|
||||||
ldrb r1, [r2, #0xc]
|
|
||||||
lsls r1, r1, #2
|
|
||||||
adds r1, r1, r0
|
|
||||||
ldr r1, [r1]
|
|
||||||
adds r0, r2, #0
|
|
||||||
bl _call_via_r1
|
|
||||||
_08065568:
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0806556C: .4byte gUnk_0810FEBC
|
|
||||||
|
|
||||||
thumb_func_start sub_08065570
|
|
||||||
sub_08065570: @ 0x08065570
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldr r1, _08065598 @ =gUnk_0810FEB0
|
|
||||||
bl sub_0806FDEC
|
|
||||||
cmp r0, #0
|
|
||||||
beq _08065596
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #0
|
|
||||||
bl InitializeAnimation
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_08078778
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
strb r0, [r4, #0xf]
|
|
||||||
movs r0, #2
|
|
||||||
strb r0, [r4, #0x14]
|
|
||||||
_08065596:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_08065598: .4byte gUnk_0810FEB0
|
|
||||||
|
|
||||||
thumb_func_start sub_0806559C
|
|
||||||
sub_0806559C: @ 0x0806559C
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldrb r0, [r4, #0xe]
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r4, #0xe]
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
lsrs r0, r0, #0x18
|
|
||||||
cmp r0, #8
|
|
||||||
bls _080655D0
|
|
||||||
movs r0, #0
|
|
||||||
strb r0, [r4, #0xe]
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #0x20
|
|
||||||
movs r2, #0x20
|
|
||||||
bl sub_0806ED9C
|
|
||||||
cmp r0, #0
|
|
||||||
bge _080655C6
|
|
||||||
ldrb r0, [r4, #0x14]
|
|
||||||
adds r1, r0, #4
|
|
||||||
b _080655CA
|
|
||||||
_080655C6:
|
|
||||||
strb r0, [r4, #0x14]
|
|
||||||
adds r1, r0, #0
|
|
||||||
_080655CA:
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x58
|
|
||||||
b _080655D6
|
|
||||||
_080655D0:
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x58
|
|
||||||
ldrb r1, [r0]
|
|
||||||
_080655D6:
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r0, r1
|
|
||||||
beq _080655E4
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl InitializeAnimation
|
|
||||||
b _080655EA
|
|
||||||
_080655E4:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_08004274
|
|
||||||
_080655EA:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0806ED78
|
|
||||||
adds r1, r4, #0
|
|
||||||
adds r1, #0x39
|
|
||||||
movs r0, #0
|
|
||||||
ldrsb r0, [r1, r0]
|
|
||||||
cmp r0, #0
|
|
||||||
beq _08065604
|
|
||||||
movs r0, #0
|
|
||||||
strb r0, [r1]
|
|
||||||
bl sub_080791D0
|
|
||||||
_08065604:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_08065608
|
|
||||||
sub_08065608: @ 0x08065608
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldr r1, _08065644 @ =gUnk_0810FEB0
|
|
||||||
bl sub_0806FDEC
|
|
||||||
cmp r0, #0
|
|
||||||
beq _08065640
|
|
||||||
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]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0801E99C
|
|
||||||
adds r1, r4, #0
|
|
||||||
adds r1, #0x68
|
|
||||||
strb r0, [r1]
|
|
||||||
ldrb r1, [r1]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_08078784
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0807DD50
|
|
||||||
_08065640:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_08065644: .4byte gUnk_0810FEB0
|
|
||||||
|
|
||||||
thumb_func_start sub_08065648
|
|
||||||
sub_08065648: @ 0x08065648
|
|
||||||
push {lr}
|
|
||||||
adds r2, r0, #0
|
|
||||||
movs r0, #0x39
|
|
||||||
adds r0, r0, r2
|
|
||||||
mov ip, r0
|
|
||||||
ldrb r0, [r0]
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
asrs r0, r0, #0x18
|
|
||||||
cmp r0, #2
|
|
||||||
bne _08065676
|
|
||||||
ldrb r0, [r2, #0xc]
|
|
||||||
adds r3, r2, #0
|
|
||||||
adds r3, #0x69
|
|
||||||
movs r1, #0
|
|
||||||
strb r0, [r3]
|
|
||||||
movs r0, #4
|
|
||||||
strb r0, [r2, #0xc]
|
|
||||||
mov r0, ip
|
|
||||||
strb r1, [r0]
|
|
||||||
adds r0, r2, #0
|
|
||||||
bl sub_0806F118
|
|
||||||
b _0806567E
|
|
||||||
_08065676:
|
|
||||||
adds r0, r2, #0
|
|
||||||
movs r1, #0
|
|
||||||
bl sub_0807DD94
|
|
||||||
_0806567E:
|
|
||||||
pop {pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_08065680
|
|
||||||
sub_08065680: @ 0x08065680
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
bl UpdateFuseInteraction
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080656A0
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x69
|
|
||||||
ldrb r0, [r0]
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x6a
|
|
||||||
ldrb r1, [r0]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl InitAnimationForceUpdate
|
|
||||||
_080656A0:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_080656A4
|
|
||||||
sub_080656A4: @ 0x080656A4
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldr r0, _080656D0 @ =gTextBox
|
|
||||||
ldrb r1, [r0]
|
|
||||||
movs r0, #0x7f
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
bne _080656C8
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x69
|
|
||||||
ldrb r0, [r0]
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x6a
|
|
||||||
ldrb r1, [r0]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl InitAnimationForceUpdate
|
|
||||||
_080656C8:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl UpdateAnimationSingleFrame
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_080656D0: .4byte gTextBox
|
|
||||||
|
|
||||||
thumb_func_start sub_080656D4
|
|
||||||
sub_080656D4: @ 0x080656D4
|
|
||||||
push {r4, r5, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
adds r5, r4, #0
|
|
||||||
adds r5, #0x39
|
|
||||||
movs r0, #0
|
|
||||||
ldrsb r0, [r5, r0]
|
|
||||||
cmp r0, #2
|
|
||||||
bne _080656FC
|
|
||||||
ldrb r0, [r4, #0xc]
|
|
||||||
adds r2, r4, #0
|
|
||||||
adds r2, #0x69
|
|
||||||
movs r1, #0
|
|
||||||
strb r0, [r2]
|
|
||||||
movs r0, #4
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
strb r1, [r5]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0806F118
|
|
||||||
b _08065738
|
|
||||||
_080656FC:
|
|
||||||
cmp r0, #0
|
|
||||||
beq _08065740
|
|
||||||
movs r0, #0x37
|
|
||||||
bl GetInventoryValue
|
|
||||||
adds r2, r0, #0
|
|
||||||
cmp r2, #0
|
|
||||||
beq _0806571C
|
|
||||||
ldr r1, _08065718 @ =gUnk_0800B41C
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0807DAD0
|
|
||||||
b _08065740
|
|
||||||
.align 2, 0
|
|
||||||
_08065718: .4byte gUnk_0800B41C
|
|
||||||
_0806571C:
|
|
||||||
ldrb r0, [r4, #0xc]
|
|
||||||
adds r1, r4, #0
|
|
||||||
adds r1, #0x69
|
|
||||||
strb r0, [r1]
|
|
||||||
movs r0, #3
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
strb r2, [r5]
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x84
|
|
||||||
ldr r0, [r0]
|
|
||||||
ldr r0, [r0, #4]
|
|
||||||
adds r1, r4, #0
|
|
||||||
bl TextboxNoOverlap
|
|
||||||
_08065738:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0806574C
|
|
||||||
b _08065748
|
|
||||||
_08065740:
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #0
|
|
||||||
bl sub_0807DD94
|
|
||||||
_08065748:
|
|
||||||
pop {r4, r5, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_0806574C
|
|
||||||
sub_0806574C: @ 0x0806574C
|
|
||||||
push {r4, r5, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldr r1, _0806577C @ =gLinkEntity
|
|
||||||
bl sub_080045C4
|
|
||||||
bl sub_0806F5A4
|
|
||||||
adds r5, r4, #0
|
|
||||||
adds r5, #0x58
|
|
||||||
ldrb r2, [r5]
|
|
||||||
movs r1, #4
|
|
||||||
rsbs r1, r1, #0
|
|
||||||
ands r1, r2
|
|
||||||
adds r1, r1, r0
|
|
||||||
cmp r2, r1
|
|
||||||
beq _08065772
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl InitAnimationForceUpdate
|
|
||||||
_08065772:
|
|
||||||
ldrb r1, [r5]
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x6a
|
|
||||||
strb r1, [r0]
|
|
||||||
pop {r4, r5, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0806577C: .4byte gLinkEntity
|
|
||||||
|
|
||||||
thumb_func_start sub_08065780
|
|
||||||
sub_08065780: @ 0x08065780
|
|
||||||
push {r4, r5, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
adds r5, r1, #0
|
|
||||||
bl Random
|
|
||||||
movs r2, #6
|
|
||||||
adds r1, r0, #0
|
|
||||||
ands r1, r2
|
|
||||||
strb r1, [r4, #0x14]
|
|
||||||
ldr r2, _080657A4 @ =gUnk_0810FED8
|
|
||||||
lsrs r0, r0, #8
|
|
||||||
movs r1, #7
|
|
||||||
ands r0, r1
|
|
||||||
adds r0, r0, r2
|
|
||||||
ldrb r0, [r0]
|
|
||||||
strh r0, [r5, #0x10]
|
|
||||||
pop {r4, r5, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_080657A4: .4byte gUnk_0810FED8
|
|
||||||
|
|
||||||
thumb_func_start sub_080657A8
|
|
||||||
sub_080657A8: @ 0x080657A8
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
adds r0, #0x5a
|
|
||||||
ldrb r0, [r0]
|
|
||||||
movs r2, #7
|
|
||||||
ands r2, r0
|
|
||||||
adds r2, #0xb
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #0
|
|
||||||
bl sub_0806FF60
|
|
||||||
ldrb r2, [r4, #0x1e]
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #1
|
|
||||||
bl sub_0806FF60
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #1
|
|
||||||
movs r2, #0
|
|
||||||
bl sub_0806FF88
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0807000C
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_080657DC
|
|
||||||
sub_080657DC: @ 0x080657DC
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldrb r0, [r4, #0xc]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _08065814
|
|
||||||
ldr r1, _08065810 @ =gUnk_0810FEB0
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0806FDEC
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0806581A
|
|
||||||
ldrb r0, [r4, #0xc]
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
ldrb r1, [r4, #0x18]
|
|
||||||
movs r0, #4
|
|
||||||
rsbs r0, r0, #0
|
|
||||||
ands r0, r1
|
|
||||||
movs r1, #1
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r4, #0x18]
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #6
|
|
||||||
bl InitializeAnimation
|
|
||||||
b _0806581A
|
|
||||||
.align 2, 0
|
|
||||||
_08065810: .4byte gUnk_0810FEB0
|
|
||||||
_08065814:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_08004274
|
|
||||||
_0806581A:
|
|
||||||
pop {r4, pc}
|
|
206
include/enemy.h
206
include/enemy.h
|
@ -4,107 +4,107 @@
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "entity.h"
|
#include "entity.h"
|
||||||
|
|
||||||
extern void Octorok(Entity*);
|
extern void Octorok(Entity*);
|
||||||
extern void Chuchu(Entity*);
|
extern void Chuchu(Entity*);
|
||||||
extern void Leever(Entity*);
|
extern void Leever(Entity*);
|
||||||
extern void Peahat(Entity*);
|
extern void Peahat(Entity*);
|
||||||
extern void Rollobite(Entity*);
|
extern void Rollobite(Entity*);
|
||||||
extern void DarkNut(Entity*);
|
extern void DarkNut(Entity*);
|
||||||
extern void HangingSeed(Entity*);
|
extern void HangingSeed(Entity*);
|
||||||
extern void Beetle(Entity*);
|
extern void Beetle(Entity*);
|
||||||
extern void Keese(Entity*);
|
extern void Keese(Entity*);
|
||||||
extern void DoorMimic(Entity*);
|
extern void DoorMimic(Entity*);
|
||||||
extern void RockChuchu(Entity*);
|
extern void RockChuchu(Entity*);
|
||||||
extern void SpinyChuchu(Entity*);
|
extern void SpinyChuchu(Entity*);
|
||||||
extern void CuccoChickAggr(Entity*);
|
extern void CuccoChickAggr(Entity*);
|
||||||
extern void Moldorm(Entity*);
|
extern void Moldorm(Entity*);
|
||||||
extern void EnemyE(Entity*);
|
extern void EnemyE(Entity*);
|
||||||
extern void Moldworm(Entity*);
|
extern void Moldworm(Entity*);
|
||||||
extern void Sluggula(Entity*);
|
extern void Sluggula(Entity*);
|
||||||
extern void Pesto(Entity*);
|
extern void Pesto(Entity*);
|
||||||
extern void Puffstool(Entity*);
|
extern void Puffstool(Entity*);
|
||||||
extern void ChuchuBoss(Entity*);
|
extern void ChuchuBoss(Entity*);
|
||||||
extern void LikeLike(Entity*);
|
extern void LikeLike(Entity*);
|
||||||
extern void SpearMoblin(Entity*);
|
extern void SpearMoblin(Entity*);
|
||||||
extern void BusinessScrub(Entity*);
|
extern void BusinessScrub(Entity*);
|
||||||
extern void RupeeLike(Entity*);
|
extern void RupeeLike(Entity*);
|
||||||
extern void Madderpillar(Entity*);
|
extern void Madderpillar(Entity*);
|
||||||
extern void WaterDrop(Entity*);
|
extern void WaterDrop(Entity*);
|
||||||
extern void WallMaster(Entity*);
|
extern void WallMaster(Entity*);
|
||||||
extern void BombPeahat(Entity*);
|
extern void BombPeahat(Entity*);
|
||||||
extern void Spark(Entity*);
|
extern void Spark(Entity*);
|
||||||
extern void Chaser(Entity*);
|
extern void Chaser(Entity*);
|
||||||
extern void SpikedBeetle(Entity*);
|
extern void SpikedBeetle(Entity*);
|
||||||
extern void SensorBladeTrap(Entity*);
|
extern void SensorBladeTrap(Entity*);
|
||||||
extern void Helmasaur(Entity*);
|
extern void Helmasaur(Entity*);
|
||||||
extern void FallingBoulder(Entity*);
|
extern void FallingBoulder(Entity*);
|
||||||
extern void Bobomb(Entity*);
|
extern void Bobomb(Entity*);
|
||||||
extern void WallMaster2(Entity*);
|
extern void WallMaster2(Entity*);
|
||||||
extern void Gleerok(Entity*);
|
extern void Gleerok(Entity*);
|
||||||
extern void VaatiEyesMacro(Entity*);
|
extern void VaatiEyesMacro(Entity*);
|
||||||
extern void Tektite(Entity*);
|
extern void Tektite(Entity*);
|
||||||
extern void WizzrobeWind(Entity*);
|
extern void WizzrobeWind(Entity*);
|
||||||
extern void WizzrobeFire(Entity*);
|
extern void WizzrobeFire(Entity*);
|
||||||
extern void WizzrobeIce(Entity*);
|
extern void WizzrobeIce(Entity*);
|
||||||
extern void Armos(Entity*);
|
extern void Armos(Entity*);
|
||||||
extern void Eyegore(Entity*);
|
extern void Eyegore(Entity*);
|
||||||
extern void Rope(Entity*);
|
extern void Rope(Entity*);
|
||||||
extern void SmallPesto(Entity*);
|
extern void SmallPesto(Entity*);
|
||||||
extern void AcroBandit(Entity*);
|
extern void AcroBandit(Entity*);
|
||||||
extern void BladeTrap(Entity*);
|
extern void BladeTrap(Entity*);
|
||||||
extern void Keaton(Entity*);
|
extern void Keaton(Entity*);
|
||||||
extern void Crow(Entity*);
|
extern void Crow(Entity*);
|
||||||
extern void Mulldozer(Entity*);
|
extern void Mulldozer(Entity*);
|
||||||
extern void Bombarossa(Entity*);
|
extern void Bombarossa(Entity*);
|
||||||
extern void Wisp(Entity*);
|
extern void Wisp(Entity*);
|
||||||
extern void SpinyBeetle(Entity*);
|
extern void SpinyBeetle(Entity*);
|
||||||
extern void MazaalHead(Entity*);
|
extern void MazaalHead(Entity*);
|
||||||
extern void MazaalMacro(Entity*);
|
extern void MazaalMacro(Entity*);
|
||||||
extern void MazaalHand(Entity*);
|
extern void MazaalHand(Entity*);
|
||||||
extern void OctorokBoss(Entity*);
|
extern void OctorokBoss(Entity*);
|
||||||
extern void FlyingPot(Entity*);
|
extern void FlyingPot(Entity*);
|
||||||
extern void Gibdo(Entity*);
|
extern void Gibdo(Entity*);
|
||||||
extern void OctorokGolden(Entity*);
|
extern void OctorokGolden(Entity*);
|
||||||
extern void TektiteGolden(Entity*);
|
extern void TektiteGolden(Entity*);
|
||||||
extern void RopeGolden(Entity*);
|
extern void RopeGolden(Entity*);
|
||||||
extern void CloudPiranha(Entity*);
|
extern void CloudPiranha(Entity*);
|
||||||
extern void ScissorsBeetle(Entity*);
|
extern void ScissorsBeetle(Entity*);
|
||||||
extern void CuccoAggr(Entity*);
|
extern void CuccoAggr(Entity*);
|
||||||
extern void Stalfos(Entity*);
|
extern void Stalfos(Entity*);
|
||||||
extern void FlyingSkull(Entity*);
|
extern void FlyingSkull(Entity*);
|
||||||
extern void MazaalBracelet(Entity*);
|
extern void MazaalBracelet(Entity*);
|
||||||
extern void Takkuri(Entity*);
|
extern void Takkuri(Entity*);
|
||||||
extern void BowMoblin(Entity*);
|
extern void BowMoblin(Entity*);
|
||||||
extern void Lakitu(Entity*);
|
extern void Lakitu(Entity*);
|
||||||
extern void LakituCloud(Entity*);
|
extern void LakituCloud(Entity*);
|
||||||
extern void Enemy49(Entity*);
|
extern void Enemy49(Entity*);
|
||||||
extern void VaatiRebornEnemy(Entity*);
|
extern void VaatiRebornEnemy(Entity*);
|
||||||
extern void VaatiProjectile(Entity*);
|
extern void VaatiProjectile(Entity*);
|
||||||
extern void BallChainSoldier(Entity*);
|
extern void BallChainSoldier(Entity*);
|
||||||
extern void Enemy4D(Entity*);
|
extern void Enemy4D(Entity*);
|
||||||
extern void Ghini(Entity*);
|
extern void Ghini(Entity*);
|
||||||
extern void VaatiTransfigured(Entity*);
|
extern void VaatiTransfigured(Entity*);
|
||||||
extern void Enemy50(Entity*);
|
extern void Enemy50(Entity*);
|
||||||
extern void VaatiWrath(Entity*);
|
extern void VaatiWrath(Entity*);
|
||||||
extern void VaatiArm(Entity*);
|
extern void VaatiArm(Entity*);
|
||||||
extern void Dust(Entity*);
|
extern void Dust(Entity*);
|
||||||
extern void VaatiBall(Entity*);
|
extern void VaatiBall(Entity*);
|
||||||
extern void Octorok(Entity*);
|
extern void Octorok(Entity*);
|
||||||
extern void Slime(Entity*);
|
extern void Slime(Entity*);
|
||||||
extern void MiniSlime(Entity*);
|
extern void MiniSlime(Entity*);
|
||||||
extern void FireballGuy(Entity*);
|
extern void FireballGuy(Entity*);
|
||||||
extern void MiniFireballGuy(Entity*);
|
extern void MiniFireballGuy(Entity*);
|
||||||
extern void Enemy5A(Entity*);
|
extern void Enemy5A(Entity*);
|
||||||
extern void BusinessScrubPrologue(Entity*);
|
extern void BusinessScrubPrologue(Entity*);
|
||||||
extern void GyorgFemale(Entity*);
|
extern void GyorgFemale(Entity*);
|
||||||
extern void GyorgMale(Entity*);
|
extern void GyorgMale(Entity*);
|
||||||
extern void Curtain(Entity*);
|
extern void Curtain(Entity*);
|
||||||
extern void Enemy5F(Entity*);
|
extern void Enemy5F(Entity*);
|
||||||
extern void GyorgChild(Entity*);
|
extern void GyorgChild(Entity*);
|
||||||
extern void GyorgFemaleEye(Entity*);
|
extern void GyorgFemaleEye(Entity*);
|
||||||
extern void Enemy62(Entity*);
|
extern void Enemy62(Entity*);
|
||||||
extern void GyorgFemaleMouth(Entity*);
|
extern void GyorgFemaleMouth(Entity*);
|
||||||
extern void Enemy64(Entity*);
|
extern void Enemy64(Entity*);
|
||||||
extern void TreeItem(Entity*);
|
extern void TreeItem(Entity*);
|
||||||
extern void Enemy66(Entity*);
|
extern void Enemy66(Entity*);
|
||||||
#endif
|
#endif
|
|
@ -28,7 +28,7 @@ union SplitHWord {
|
||||||
struct {
|
struct {
|
||||||
u8 LO, HI;
|
u8 LO, HI;
|
||||||
} PACKED HALF;
|
} PACKED HALF;
|
||||||
};
|
} PACKED;
|
||||||
|
|
||||||
typedef struct Entity {
|
typedef struct Entity {
|
||||||
u32* field_0x0;
|
u32* field_0x0;
|
||||||
|
@ -130,7 +130,7 @@ typedef struct Entity {
|
||||||
u32* otherEntity;
|
u32* otherEntity;
|
||||||
u8 field_0x68;
|
u8 field_0x68;
|
||||||
u8 field_0x69;
|
u8 field_0x69;
|
||||||
u16 field_0x6a;
|
union SplitHWord field_0x6a;
|
||||||
u8 field_0x6c;
|
u8 field_0x6c;
|
||||||
u8 field_0x6d;
|
u8 field_0x6d;
|
||||||
u8 filler4[6];
|
u8 filler4[6];
|
||||||
|
|
|
@ -19,6 +19,7 @@ extern void DeleteEntity(Entity*);
|
||||||
extern u32 __modsi3(u32, u32);
|
extern u32 __modsi3(u32, u32);
|
||||||
extern void DoFade(u32, u32);
|
extern void DoFade(u32, u32);
|
||||||
extern void UpdateAnimationSingleFrame(Entity*);
|
extern void UpdateAnimationSingleFrame(Entity*);
|
||||||
|
extern u32 GetInventoryValue(u32);
|
||||||
|
|
||||||
// Unidentified
|
// Unidentified
|
||||||
extern void sub_0806ED78(Entity*);
|
extern void sub_0806ED78(Entity*);
|
||||||
|
@ -52,15 +53,10 @@ extern void sub_0807DD50(Entity*);
|
||||||
extern void sub_0807DD94(Entity*, u32);
|
extern void sub_0807DD94(Entity*, u32);
|
||||||
extern Entity* sub_0805EB00(u32, u32, u32);
|
extern Entity* sub_0805EB00(u32, u32, u32);
|
||||||
extern Entity* sub_0805EB2C(u32, u32, u32, u32, u32);
|
extern Entity* sub_0805EB2C(u32, u32, u32, u32, u32);
|
||||||
|
extern u32 sub_0806FDEC(Entity*, u32*);
|
||||||
extern u32 sub_080045C4(Entity*, Entity*);
|
extern s32 sub_0806ED9C(Entity*, u32, u32);
|
||||||
extern u32 sub_0801E99C(Entity*);
|
extern s32* sub_0807DAD0(Entity*, u8*);
|
||||||
extern void sub_0805E3A0(Entity*, u32);
|
extern void sub_0806FF60(Entity*, u32, u32);
|
||||||
extern Entity* sub_0805EB00(u32, u32, u32);
|
extern void sub_0806FF88(Entity*, u32, u32);
|
||||||
extern u32 sub_0806F5A4(u32);
|
extern void sub_0807000C(Entity*);
|
||||||
extern void sub_08078778(Entity*);
|
|
||||||
extern void sub_08078784(Entity*, u32);
|
|
||||||
extern void sub_0807DD50(Entity*);
|
|
||||||
extern void sub_0807DD94(Entity*, u32);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -18,4 +18,6 @@ typedef struct {
|
||||||
|
|
||||||
extern TextBox gTextBox;
|
extern TextBox gTextBox;
|
||||||
|
|
||||||
|
void TextboxNoOverlap(u32 index, Entity* ent);
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -489,7 +489,7 @@ SECTIONS {
|
||||||
asm/sturgeon.o(.text);
|
asm/sturgeon.o(.text);
|
||||||
asm/tingleSiblings.o(.text);
|
asm/tingleSiblings.o(.text);
|
||||||
asm/stockwell.o(.text);
|
asm/stockwell.o(.text);
|
||||||
asm/talon.o(.text);
|
src/talon.o(.text);
|
||||||
asm/malon.o(.text);
|
asm/malon.o(.text);
|
||||||
src/epona.o(.text);
|
src/epona.o(.text);
|
||||||
src/milkCart.o(.text);
|
src/milkCart.o(.text);
|
||||||
|
|
|
@ -33,123 +33,110 @@ extern struct_030010A0 gUnk_030010A0;
|
||||||
extern u16 gUnk_081115DC[];
|
extern u16 gUnk_081115DC[];
|
||||||
extern Entity gLinkEntity;
|
extern Entity gLinkEntity;
|
||||||
|
|
||||||
void sub_080689C0(Entity *this)
|
void sub_080689C0(Entity* this) {
|
||||||
{
|
|
||||||
|
|
||||||
if ((this->flags & 2) != 0) {
|
|
||||||
gUnk_081115D0[this->action](this);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
gUnk_081115C0[this->action](this);
|
|
||||||
sub_0806ED78(this);
|
|
||||||
}
|
|
||||||
if ((this->frames.all & 1) != 0) {
|
|
||||||
this->frames.all &= 0xfe;
|
|
||||||
sub_08068BEC(this, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void sub_08068A1C(Entity *this)
|
if ((this->flags & 2) != 0) {
|
||||||
{
|
gUnk_081115D0[this->action](this);
|
||||||
u8 bVar1;
|
} else {
|
||||||
int offset;
|
gUnk_081115C0[this->action](this);
|
||||||
|
sub_0806ED78(this);
|
||||||
(this->entityType).parameter2 = (this->entityType).parameter1;
|
|
||||||
if (gUnk_030010A0.unk != 0) {
|
|
||||||
offset = 6;
|
|
||||||
bVar1 = 3;
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sub_08078778(this);
|
|
||||||
offset = 2;
|
|
||||||
bVar1 = 1;
|
|
||||||
}
|
|
||||||
this->action = bVar1;
|
|
||||||
InitializeAnimation(this, offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
void sub_08068A4C(Entity *this)
|
|
||||||
{
|
|
||||||
s32 uVar1;
|
|
||||||
s32 iVar2;
|
|
||||||
|
|
||||||
uVar1 = sub_0806ED9C(this, 0x28, 0x28);
|
|
||||||
if (uVar1 < 0) {
|
|
||||||
uVar1 = 2;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (this->field_0xf == 0) {
|
|
||||||
this->field_0xf = 0x10;
|
|
||||||
}
|
}
|
||||||
else {
|
if ((this->frames.all & 1) != 0) {
|
||||||
this->field_0xf--;
|
this->frames.all &= 0xfe;
|
||||||
uVar1 = (u32)this->field_0x58;
|
sub_08068BEC(this, 0);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
iVar2 = sub_0806F078(this,uVar1);
|
|
||||||
if (iVar2 == 0) {
|
|
||||||
sub_08004274(this);
|
|
||||||
}
|
|
||||||
if (this->interactType != 0) {
|
|
||||||
this->interactType = 0;
|
|
||||||
this->action = 2;
|
|
||||||
TextboxNoOverlapFollow(0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_08068AA4(Entity *this)
|
void sub_08068A1C(Entity* this) {
|
||||||
{
|
u8 bVar1;
|
||||||
u8 bVar1;
|
int offset;
|
||||||
|
|
||||||
this->action = 1;
|
(this->entityType).parameter2 = (this->entityType).parameter1;
|
||||||
if (this->entityType.parameter1 != 0) {
|
if (gUnk_030010A0.unk != 0) {
|
||||||
this->entityType.parameter2++;
|
offset = 6;
|
||||||
this->entityType.parameter2 &= 7;
|
bVar1 = 3;
|
||||||
if (this->entityType.parameter2 == 0) {
|
|
||||||
this->entityType.parameter2 += 1;
|
} else {
|
||||||
|
sub_08078778(this);
|
||||||
|
offset = 2;
|
||||||
|
bVar1 = 1;
|
||||||
}
|
}
|
||||||
sub_0801D2B4(this, gUnk_081115DC[this->entityType.parameter2]);
|
this->action = bVar1;
|
||||||
}
|
InitializeAnimation(this, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_08068ADC(Entity *this)
|
void sub_08068A4C(Entity* this) {
|
||||||
{
|
s32 uVar1;
|
||||||
if (gUnk_030010A0.unk == 2) {
|
s32 iVar2;
|
||||||
sub_08004274(this);
|
|
||||||
}
|
uVar1 = sub_0806ED9C(this, 0x28, 0x28);
|
||||||
sub_0806FD3C(this);
|
if (uVar1 < 0) {
|
||||||
|
uVar1 = 2;
|
||||||
|
} else {
|
||||||
|
if (this->field_0xf == 0) {
|
||||||
|
this->field_0xf = 0x10;
|
||||||
|
} else {
|
||||||
|
this->field_0xf--;
|
||||||
|
uVar1 = (u32)this->field_0x58;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
iVar2 = sub_0806F078(this, uVar1);
|
||||||
|
if (iVar2 == 0) {
|
||||||
|
sub_08004274(this);
|
||||||
|
}
|
||||||
|
if (this->interactType != 0) {
|
||||||
|
this->interactType = 0;
|
||||||
|
this->action = 2;
|
||||||
|
TextboxNoOverlapFollow(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_08068AFC(Entity *this)
|
void sub_08068AA4(Entity* this) {
|
||||||
{
|
u8 bVar1;
|
||||||
this->action = 1;
|
|
||||||
this->spriteSettings.b.ss0 = 1;
|
|
||||||
*(u8*)&this->field_0x68 = sub_0801E99C(this);
|
|
||||||
sub_08078784(this, *(u8*)&this->field_0x68);
|
|
||||||
sub_0807DD50(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FUN_08068b2c(Entity *this)
|
|
||||||
{
|
|
||||||
u32 uVar1;
|
|
||||||
|
|
||||||
if (this->interactType == '\x02') {
|
|
||||||
this->action = 2;
|
|
||||||
this->interactType = '\0';
|
|
||||||
sub_080045C4(this,&gLinkEntity);
|
|
||||||
uVar1 = sub_0806F5A4();
|
|
||||||
InitAnimationForceUpdate(this, uVar1);
|
|
||||||
sub_0806F118(this);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
sub_0807DD94(this, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void sub_08068B70(Entity *this)
|
|
||||||
{
|
|
||||||
if (UpdateFuseInteraction()) {
|
|
||||||
this->action = 1;
|
this->action = 1;
|
||||||
}
|
if (this->entityType.parameter1 != 0) {
|
||||||
|
this->entityType.parameter2++;
|
||||||
|
this->entityType.parameter2 &= 7;
|
||||||
|
if (this->entityType.parameter2 == 0) {
|
||||||
|
this->entityType.parameter2 += 1;
|
||||||
|
}
|
||||||
|
sub_0801D2B4(this, gUnk_081115DC[this->entityType.parameter2]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08068ADC(Entity* this) {
|
||||||
|
if (gUnk_030010A0.unk == 2) {
|
||||||
|
sub_08004274(this);
|
||||||
|
}
|
||||||
|
sub_0806FD3C(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08068AFC(Entity* this) {
|
||||||
|
this->action = 1;
|
||||||
|
this->spriteSettings.b.ss0 = 1;
|
||||||
|
*(u8*)&this->field_0x68 = sub_0801E99C(this);
|
||||||
|
sub_08078784(this, *(u8*)&this->field_0x68);
|
||||||
|
sub_0807DD50(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FUN_08068b2c(Entity* this) {
|
||||||
|
u32 uVar1;
|
||||||
|
|
||||||
|
if (this->interactType == '\x02') {
|
||||||
|
this->action = 2;
|
||||||
|
this->interactType = '\0';
|
||||||
|
sub_080045C4(this, &gLinkEntity);
|
||||||
|
uVar1 = sub_0806F5A4();
|
||||||
|
InitAnimationForceUpdate(this, uVar1);
|
||||||
|
sub_0806F118(this);
|
||||||
|
} else {
|
||||||
|
sub_0807DD94(this, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08068B70(Entity* this) {
|
||||||
|
if (UpdateFuseInteraction()) {
|
||||||
|
this->action = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,12 +46,12 @@ void sub_08068FC0(Entity* ent) {
|
||||||
*(u16*)&ent->field_0x68 = x;
|
*(u16*)&ent->field_0x68 = x;
|
||||||
|
|
||||||
y = ent->y.HALF.HI;
|
y = ent->y.HALF.HI;
|
||||||
ent->field_0x6a = y;
|
ent->field_0x6a.HWORD = y;
|
||||||
} else {
|
} else {
|
||||||
u32 var1 = r2 >> 16;
|
u32 var1 = r2 >> 16;
|
||||||
// 0x68+0x69 probably a SplitWord
|
// 0x68+0x69 probably a SplitWord
|
||||||
*(u16*)&ent->field_0x68 = var1;
|
*(u16*)&ent->field_0x68 = var1;
|
||||||
ent->field_0x6a = r2;
|
ent->field_0x6a.HWORD = r2;
|
||||||
}
|
}
|
||||||
ent->field_0x6c = sub_0801E99C(ent);
|
ent->field_0x6c = sub_0801E99C(ent);
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ void sub_08069068(Entity* ent) {
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
s32 y = ent->y.HALF.HI;
|
s32 y = ent->y.HALF.HI;
|
||||||
s16* y2 = &ent->field_0x6a;
|
s16* y2 = &ent->field_0x6a.HWORD;
|
||||||
y -= *y2;
|
y -= *y2;
|
||||||
if (y > 16) {
|
if (y > 16) {
|
||||||
ent->y.HALF.HI = *y2 + 16;
|
ent->y.HALF.HI = *y2 + 16;
|
||||||
|
|
208
src/enemy.c
208
src/enemy.c
|
@ -2,108 +2,106 @@
|
||||||
#include "entity.h"
|
#include "entity.h"
|
||||||
#include "enemy.h"
|
#include "enemy.h"
|
||||||
|
|
||||||
void (*const gEnemyFunctions[])(Entity* ent) = {
|
void (*const gEnemyFunctions[])(Entity* ent) = { Octorok,
|
||||||
Octorok,
|
Chuchu,
|
||||||
Chuchu,
|
Leever,
|
||||||
Leever,
|
Peahat,
|
||||||
Peahat,
|
Rollobite,
|
||||||
Rollobite,
|
DarkNut,
|
||||||
DarkNut,
|
HangingSeed,
|
||||||
HangingSeed,
|
Beetle,
|
||||||
Beetle,
|
Keese,
|
||||||
Keese,
|
DoorMimic,
|
||||||
DoorMimic,
|
RockChuchu,
|
||||||
RockChuchu,
|
SpinyChuchu,
|
||||||
SpinyChuchu,
|
CuccoChickAggr,
|
||||||
CuccoChickAggr,
|
Moldorm,
|
||||||
Moldorm,
|
EnemyE,
|
||||||
EnemyE,
|
Moldworm,
|
||||||
Moldworm,
|
Sluggula,
|
||||||
Sluggula,
|
Pesto,
|
||||||
Pesto,
|
Puffstool,
|
||||||
Puffstool,
|
ChuchuBoss,
|
||||||
ChuchuBoss,
|
LikeLike,
|
||||||
LikeLike,
|
SpearMoblin,
|
||||||
SpearMoblin,
|
BusinessScrub,
|
||||||
BusinessScrub,
|
RupeeLike,
|
||||||
RupeeLike,
|
Madderpillar,
|
||||||
Madderpillar,
|
WaterDrop,
|
||||||
WaterDrop,
|
WallMaster,
|
||||||
WallMaster,
|
BombPeahat,
|
||||||
BombPeahat,
|
Spark,
|
||||||
Spark,
|
Chaser,
|
||||||
Chaser,
|
SpikedBeetle,
|
||||||
SpikedBeetle,
|
SensorBladeTrap,
|
||||||
SensorBladeTrap,
|
Helmasaur,
|
||||||
Helmasaur,
|
FallingBoulder,
|
||||||
FallingBoulder,
|
Bobomb,
|
||||||
Bobomb,
|
WallMaster2,
|
||||||
WallMaster2,
|
Gleerok,
|
||||||
Gleerok,
|
VaatiEyesMacro,
|
||||||
VaatiEyesMacro,
|
Tektite,
|
||||||
Tektite,
|
WizzrobeWind,
|
||||||
WizzrobeWind,
|
WizzrobeFire,
|
||||||
WizzrobeFire,
|
WizzrobeIce,
|
||||||
WizzrobeIce,
|
Armos,
|
||||||
Armos,
|
Eyegore,
|
||||||
Eyegore,
|
Rope,
|
||||||
Rope,
|
SmallPesto,
|
||||||
SmallPesto,
|
AcroBandit,
|
||||||
AcroBandit,
|
BladeTrap,
|
||||||
BladeTrap,
|
Keaton,
|
||||||
Keaton,
|
Crow,
|
||||||
Crow,
|
Mulldozer,
|
||||||
Mulldozer,
|
Bombarossa,
|
||||||
Bombarossa,
|
Wisp,
|
||||||
Wisp,
|
SpinyBeetle,
|
||||||
SpinyBeetle,
|
MazaalHead,
|
||||||
MazaalHead,
|
MazaalMacro,
|
||||||
MazaalMacro,
|
MazaalHand,
|
||||||
MazaalHand,
|
OctorokBoss,
|
||||||
OctorokBoss,
|
FlyingPot,
|
||||||
FlyingPot,
|
Gibdo,
|
||||||
Gibdo,
|
OctorokGolden,
|
||||||
OctorokGolden,
|
TektiteGolden,
|
||||||
TektiteGolden,
|
RopeGolden,
|
||||||
RopeGolden,
|
CloudPiranha,
|
||||||
CloudPiranha,
|
ScissorsBeetle,
|
||||||
ScissorsBeetle,
|
CuccoAggr,
|
||||||
CuccoAggr,
|
Stalfos,
|
||||||
Stalfos,
|
FlyingSkull,
|
||||||
FlyingSkull,
|
MazaalBracelet,
|
||||||
MazaalBracelet,
|
Takkuri,
|
||||||
Takkuri,
|
BowMoblin,
|
||||||
BowMoblin,
|
Lakitu,
|
||||||
Lakitu,
|
LakituCloud,
|
||||||
LakituCloud,
|
Enemy49,
|
||||||
Enemy49,
|
VaatiRebornEnemy,
|
||||||
VaatiRebornEnemy,
|
VaatiProjectile,
|
||||||
VaatiProjectile,
|
BallChainSoldier,
|
||||||
BallChainSoldier,
|
Enemy4D,
|
||||||
Enemy4D,
|
Ghini,
|
||||||
Ghini,
|
VaatiTransfigured,
|
||||||
VaatiTransfigured,
|
Enemy50,
|
||||||
Enemy50,
|
VaatiWrath,
|
||||||
VaatiWrath,
|
VaatiArm,
|
||||||
VaatiArm,
|
Dust,
|
||||||
Dust,
|
VaatiBall,
|
||||||
VaatiBall,
|
Octorok,
|
||||||
Octorok,
|
Slime,
|
||||||
Slime,
|
MiniSlime,
|
||||||
MiniSlime,
|
FireballGuy,
|
||||||
FireballGuy,
|
MiniFireballGuy,
|
||||||
MiniFireballGuy,
|
Enemy5A,
|
||||||
Enemy5A,
|
BusinessScrubPrologue,
|
||||||
BusinessScrubPrologue,
|
GyorgFemale,
|
||||||
GyorgFemale,
|
GyorgMale,
|
||||||
GyorgMale,
|
Curtain,
|
||||||
Curtain,
|
Enemy5F,
|
||||||
Enemy5F,
|
GyorgChild,
|
||||||
GyorgChild,
|
GyorgFemaleEye,
|
||||||
GyorgFemaleEye,
|
Enemy62,
|
||||||
Enemy62,
|
GyorgFemaleMouth,
|
||||||
GyorgFemaleMouth,
|
Enemy64,
|
||||||
Enemy64,
|
TreeItem,
|
||||||
TreeItem,
|
Enemy66 };
|
||||||
Enemy66
|
|
||||||
};
|
|
||||||
|
|
|
@ -18,14 +18,12 @@ void sub_080631E8(Entity* this) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_08063210(Entity* this)
|
void sub_08063210(Entity* this) {
|
||||||
{
|
|
||||||
this->action = 1;
|
this->action = 1;
|
||||||
InitAnimationForceUpdate(this, 0);
|
InitAnimationForceUpdate(this, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_08063220(Entity* this)
|
void sub_08063220(Entity* this) {
|
||||||
{
|
|
||||||
u8 bVar1;
|
u8 bVar1;
|
||||||
|
|
||||||
if (this->interactType != 0) {
|
if (this->interactType != 0) {
|
||||||
|
@ -42,8 +40,7 @@ void sub_08063220(Entity* this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_08063254(Entity* this, u32 unused)
|
void sub_08063254(Entity* this, u32 unused) {
|
||||||
{
|
|
||||||
sub_08063280(this, unused);
|
sub_08063280(this, unused);
|
||||||
if ((this->frames.all & 0x80) != 0) {
|
if ((this->frames.all & 0x80) != 0) {
|
||||||
this->action = 3;
|
this->action = 3;
|
||||||
|
@ -51,13 +48,11 @@ void sub_08063254(Entity* this, u32 unused)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_08063278(Entity* this, u32 unused)
|
void sub_08063278(Entity* this, u32 unused) {
|
||||||
{
|
|
||||||
sub_08063280(this, unused);
|
sub_08063280(this, unused);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_08063280(Entity* this, u32 unused)
|
void sub_08063280(Entity* this, u32 unused) {
|
||||||
{
|
|
||||||
Entity* e; // r4@1
|
Entity* e; // r4@1
|
||||||
u8 var; // r2@1
|
u8 var; // r2@1
|
||||||
|
|
||||||
|
|
|
@ -197,4 +197,4 @@ void (*const gObjectFunctions[])(Entity*) = {
|
||||||
ObjectBF,
|
ObjectBF,
|
||||||
EnemyItem,
|
EnemyItem,
|
||||||
ObjectC1,
|
ObjectC1,
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,163 @@
|
||||||
|
#include "global.h"
|
||||||
|
#include "entity.h"
|
||||||
|
#include "textbox.h"
|
||||||
|
#include "functions.h"
|
||||||
|
#include "link.h"
|
||||||
|
|
||||||
|
extern Entity gLinkEntity;
|
||||||
|
|
||||||
|
extern void (*gUnk_0810FEC4[])(Entity* this);
|
||||||
|
extern void (*gUnk_0810FEBC[])(Entity* this);
|
||||||
|
extern u32 gUnk_0810FEB0;
|
||||||
|
extern u8 gUnk_0800B41C;
|
||||||
|
extern u8 gUnk_0810FED8[];
|
||||||
|
|
||||||
|
void sub_0806574C(Entity* this);
|
||||||
|
|
||||||
|
void sub_08065534(Entity* this) {
|
||||||
|
if (this->flags & 2) {
|
||||||
|
gUnk_0810FEC4[this->action](this);
|
||||||
|
} else {
|
||||||
|
gUnk_0810FEBC[this->action](this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08065570(Entity* this) {
|
||||||
|
if (sub_0806FDEC(this, &gUnk_0810FEB0) != 0) {
|
||||||
|
InitializeAnimation(this, 0);
|
||||||
|
sub_08078778(this);
|
||||||
|
this->action = 1;
|
||||||
|
this->field_0xf = 1;
|
||||||
|
this->animationState = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_0806559C(Entity* this) {
|
||||||
|
s32 offset;
|
||||||
|
s32 result;
|
||||||
|
|
||||||
|
this->parameter3++;
|
||||||
|
if (this->parameter3 >= 9) {
|
||||||
|
this->parameter3 = 0;
|
||||||
|
result = sub_0806ED9C(this, 0x20, 0x20);
|
||||||
|
if (result < 0) {
|
||||||
|
offset = this->animationState + 4;
|
||||||
|
} else {
|
||||||
|
this->animationState = result;
|
||||||
|
offset = result;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
offset = this->field_0x58;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this->field_0x58 != offset) {
|
||||||
|
InitializeAnimation(this, offset);
|
||||||
|
} else {
|
||||||
|
sub_08004274(this);
|
||||||
|
}
|
||||||
|
sub_0806ED78(this);
|
||||||
|
if (this->interactType != 0) {
|
||||||
|
this->interactType = 0;
|
||||||
|
sub_080791D0();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08065608(Entity* this) {
|
||||||
|
if (sub_0806FDEC(this, &gUnk_0810FEB0) != 0) {
|
||||||
|
this->action = 1;
|
||||||
|
this->spriteSettings.b.ss0 = 1;
|
||||||
|
this->field_0x68 = sub_0801E99C(this);
|
||||||
|
sub_08078784(this, this->field_0x68);
|
||||||
|
sub_0807DD50(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08065648(Entity* this) {
|
||||||
|
if (this->interactType == 2) {
|
||||||
|
this->field_0x69 = this->action;
|
||||||
|
this->action = 4;
|
||||||
|
this->interactType = 0;
|
||||||
|
sub_0806F118(this);
|
||||||
|
} else {
|
||||||
|
sub_0807DD94(this, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08065680(Entity* this) {
|
||||||
|
if (UpdateFuseInteraction() != 0) {
|
||||||
|
this->action = this->field_0x69;
|
||||||
|
InitAnimationForceUpdate(this, this->field_0x6a.HALF.LO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_080656A4(Entity* this) {
|
||||||
|
if ((gTextBox.doTextBox & 0x7F) == 0) {
|
||||||
|
this->action = this->field_0x69;
|
||||||
|
InitAnimationForceUpdate(this, this->field_0x6a.HALF.LO);
|
||||||
|
}
|
||||||
|
UpdateAnimationSingleFrame(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_080656D4(Entity* this) {
|
||||||
|
if (this->interactType == 2) {
|
||||||
|
this->field_0x69 = this->action;
|
||||||
|
this->action = 4;
|
||||||
|
this->interactType = 0;
|
||||||
|
sub_0806F118(this);
|
||||||
|
goto label;
|
||||||
|
} else {
|
||||||
|
if (this->interactType != 0) {
|
||||||
|
if (GetInventoryValue(0x37) != 0) { // keyLonLon
|
||||||
|
sub_0807DAD0(this, &gUnk_0800B41C);
|
||||||
|
goto label2;
|
||||||
|
} else {
|
||||||
|
this->field_0x69 = this->action;
|
||||||
|
this->action = 3;
|
||||||
|
this->interactType = 0;
|
||||||
|
TextboxNoOverlap(*(u32*)(*(u32*)&this->cutsceneBeh.HWORD + 4), this);
|
||||||
|
label:
|
||||||
|
sub_0806574C(this);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
label2:
|
||||||
|
sub_0807DD94(this, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_0806574C(Entity* this) {
|
||||||
|
u32 j;
|
||||||
|
|
||||||
|
j = (this->field_0x58 & ~3) + sub_0806F5A4(sub_080045C4(this, &gLinkEntity));
|
||||||
|
if (this->field_0x58 != j) {
|
||||||
|
InitAnimationForceUpdate(this, j);
|
||||||
|
}
|
||||||
|
this->field_0x6a.HALF.LO = this->field_0x58;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08065780(Entity* this, u16* param_2) {
|
||||||
|
u32 rand;
|
||||||
|
|
||||||
|
rand = Random();
|
||||||
|
this->animationState = rand & 6;
|
||||||
|
param_2[8] = gUnk_0810FED8[rand >> 8 & 7];
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_080657A8(Entity* this) {
|
||||||
|
sub_0806FF60(this, 0, ((this->frames.all & 7) + 0xB));
|
||||||
|
sub_0806FF60(this, 1, this->animationList);
|
||||||
|
sub_0806FF88(this, 1, 0);
|
||||||
|
sub_0807000C(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_080657DC(Entity* this) {
|
||||||
|
if (this->action == 0) {
|
||||||
|
if (sub_0806FDEC(this, &gUnk_0810FEB0) != 0) {
|
||||||
|
this->action++;
|
||||||
|
this->spriteSettings.b.ss0 = 1;
|
||||||
|
InitializeAnimation(this, 6);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sub_08004274(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,7 +3,6 @@
|
||||||
#include "entity.h"
|
#include "entity.h"
|
||||||
#include "textbox.h"
|
#include "textbox.h"
|
||||||
|
|
||||||
void TextboxNoOverlap(u32 index, Entity* ent);
|
|
||||||
void sub_0801D630();
|
void sub_0801D630();
|
||||||
void ShowTextbox();
|
void ShowTextbox();
|
||||||
void TextboxAtPosition();
|
void TextboxAtPosition();
|
||||||
|
|
Loading…
Reference in New Issue