mirror of https://github.com/zeldaret/tmc.git
gentari.c OK
This commit is contained in:
parent
d429f7f9cb
commit
6aba97697b
108
asm/gentari.s
108
asm/gentari.s
|
@ -6,114 +6,6 @@
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
|
|
||||||
thumb_func_start Gentari
|
|
||||||
Gentari: @ 0x0805FD24
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldrb r0, [r4, #0xc]
|
|
||||||
cmp r0, #1
|
|
||||||
beq _0805FD72
|
|
||||||
cmp r0, #1
|
|
||||||
bgt _0805FD38
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0805FD3E
|
|
||||||
b _0805FDBC
|
|
||||||
_0805FD38:
|
|
||||||
cmp r0, #2
|
|
||||||
beq _0805FDAE
|
|
||||||
b _0805FDBC
|
|
||||||
_0805FD3E:
|
|
||||||
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
|
|
||||||
movs r1, #2
|
|
||||||
bl sub_0805E3A0
|
|
||||||
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
|
|
||||||
b _0805FDBC
|
|
||||||
_0805FD72:
|
|
||||||
adds r2, r4, #0
|
|
||||||
adds r2, #0x39
|
|
||||||
movs r1, #0
|
|
||||||
ldrsb r1, [r2, r1]
|
|
||||||
cmp r1, #2
|
|
||||||
bne _0805FDA4
|
|
||||||
movs r0, #0
|
|
||||||
strb r1, [r4, #0xc]
|
|
||||||
strb r0, [r2]
|
|
||||||
ldr r1, _0805FDA0 @ =gLinkEntity
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl GetFacingDirection
|
|
||||||
bl sub_0806F5A4
|
|
||||||
adds r1, r0, #0
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl InitAnimationForceUpdate
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0806F118
|
|
||||||
b _0805FDBC
|
|
||||||
.align 2, 0
|
|
||||||
_0805FDA0: .4byte gLinkEntity
|
|
||||||
_0805FDA4:
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #0
|
|
||||||
bl sub_0807DD94
|
|
||||||
b _0805FDBC
|
|
||||||
_0805FDAE:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl UpdateFuseInteraction
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0805FDBC
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
_0805FDBC:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start Gentari_Fusion
|
|
||||||
Gentari_Fusion: @ 0x0805FDC0
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldrb r0, [r4, #0xc]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _0805FDEE
|
|
||||||
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, #2
|
|
||||||
bl sub_0805E3A0
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #0xa
|
|
||||||
bl InitAnimationForceUpdate
|
|
||||||
b _0805FDF4
|
|
||||||
_0805FDEE:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl UpdateAnimationSingleFrame
|
|
||||||
_0805FDF4:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start Festari
|
thumb_func_start Festari
|
||||||
Festari: @ 0x0805FDF8
|
Festari: @ 0x0805FDF8
|
||||||
push {lr}
|
push {lr}
|
||||||
|
|
|
@ -160,6 +160,12 @@ typedef struct Entity {
|
||||||
((((entity->x.HALF.HI - xOff - gRoomControls.roomOriginX) >> 4) & 0x3fU) | \
|
((((entity->x.HALF.HI - xOff - gRoomControls.roomOriginX) >> 4) & 0x3fU) | \
|
||||||
(((entity->y.HALF.HI - yOff - gRoomControls.roomOriginY) >> 4) & 0x3fU) << 6)
|
(((entity->y.HALF.HI - yOff - gRoomControls.roomOriginY) >> 4) & 0x3fU) << 6)
|
||||||
|
|
||||||
|
extern Entity* CreateEnemy(u32 subtype, u32 form);
|
||||||
|
extern Entity* CreateObject(u32 subtype, u32 form, u32 parameter);
|
||||||
|
extern Entity* CreateNPC(u32 subtype, u32 form, u32 parameter);
|
||||||
|
extern Entity* CreateObjectWithParent(Entity* parent, u32 subtype, u32 form, u32 parameter);
|
||||||
|
extern Entity* CreateFx(Entity* parent, u32 form, u32 parameter);
|
||||||
|
|
||||||
extern void InitializeAnimation(Entity*, u32);
|
extern void InitializeAnimation(Entity*, u32);
|
||||||
extern void InitAnimationForceUpdate(Entity*, u32);
|
extern void InitAnimationForceUpdate(Entity*, u32);
|
||||||
extern void UpdateAnimationSingleFrame(Entity*);
|
extern void UpdateAnimationSingleFrame(Entity*);
|
||||||
|
@ -170,11 +176,7 @@ extern void SetExtraSpriteFrame(Entity*, u32, u32);
|
||||||
extern void SetSpriteSubEntryOffsetData1(Entity*, u32, u32);
|
extern void SetSpriteSubEntryOffsetData1(Entity*, u32, u32);
|
||||||
extern void SetSpriteSubEntryOffsetData2(Entity*, u32, u32);
|
extern void SetSpriteSubEntryOffsetData2(Entity*, u32, u32);
|
||||||
|
|
||||||
extern Entity* CreateEnemy(u32 subtype, u32 form);
|
extern u32 GetFacingDirection(Entity*, Entity*);
|
||||||
extern Entity* CreateObject(u32 subtype, u32 form, u32 parameter);
|
|
||||||
extern Entity* CreateNPC(u32 subtype, u32 form, u32 parameter);
|
|
||||||
extern Entity* CreateObjectWithParent(Entity* parent, u32 subtype, u32 form, u32 parameter);
|
|
||||||
extern Entity* CreateFx(Entity* parent, u32 form, u32 parameter);
|
|
||||||
|
|
||||||
extern void DeleteThisEntity();
|
extern void DeleteThisEntity();
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -533,6 +533,7 @@ SECTIONS {
|
||||||
asm/getEmptyEntity.o(.text);
|
asm/getEmptyEntity.o(.text);
|
||||||
asm/code_0805E744.o(.text);
|
asm/code_0805E744.o(.text);
|
||||||
/* npcs */
|
/* npcs */
|
||||||
|
src/gentari.o(.text);
|
||||||
asm/gentari.o(.text);
|
asm/gentari.o(.text);
|
||||||
asm/festari.o(.text);
|
asm/festari.o(.text);
|
||||||
asm/forestMinish.o(.text);
|
asm/forestMinish.o(.text);
|
||||||
|
|
|
@ -9,8 +9,7 @@
|
||||||
|
|
||||||
extern void sub_0805E3A0(Entity*, u32);
|
extern void sub_0805E3A0(Entity*, u32);
|
||||||
extern void sub_0807DD50(Entity*);
|
extern void sub_0807DD50(Entity*);
|
||||||
extern void GetFacingDirection(Entity*, Entity*);
|
extern u32 sub_0806F5A4(u32);
|
||||||
extern u32 sub_0806F5A4(void);
|
|
||||||
extern void sub_0806F118(Entity*);
|
extern void sub_0806F118(Entity*);
|
||||||
extern void sub_0807DD94(Entity*, u32);
|
extern void sub_0807DD94(Entity*, u32);
|
||||||
extern u32 sub_0801E99C(void);
|
extern u32 sub_0801E99C(void);
|
||||||
|
@ -37,8 +36,7 @@ void Dampe(Entity* this) {
|
||||||
if (this->interactType == 2) {
|
if (this->interactType == 2) {
|
||||||
this->action = 2;
|
this->action = 2;
|
||||||
this->interactType = 0;
|
this->interactType = 0;
|
||||||
GetFacingDirection(this, &gLinkEntity);
|
InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gLinkEntity)) + 4);
|
||||||
InitAnimationForceUpdate(this, sub_0806F5A4() + 4);
|
|
||||||
sub_0806F118(this);
|
sub_0806F118(this);
|
||||||
} else {
|
} else {
|
||||||
sub_0807DD94(this, 0);
|
sub_0807DD94(this, 0);
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
#include "global.h"
|
||||||
|
#include "entity.h"
|
||||||
|
#include "npc.h"
|
||||||
|
#include "link.h"
|
||||||
|
|
||||||
|
extern void sub_0805E3A0(Entity*, u32);
|
||||||
|
extern u32 sub_0801E99C(Entity*);
|
||||||
|
extern void sub_08078784(Entity*, u32);
|
||||||
|
extern void sub_0807DD50(Entity*);
|
||||||
|
extern u32 sub_0806F5A4(u32);
|
||||||
|
extern void sub_0806F118(Entity*);
|
||||||
|
extern void sub_0807DD94(Entity*, u32);
|
||||||
|
|
||||||
|
void Gentari(Entity *this)
|
||||||
|
{
|
||||||
|
switch (this->action) {
|
||||||
|
case 0:
|
||||||
|
this->action = 1;
|
||||||
|
this->spriteSettings.b.draw = TRUE;
|
||||||
|
sub_0805E3A0(this, 2);
|
||||||
|
this->field_0x68 = sub_0801E99C(this);
|
||||||
|
sub_08078784(this, this->field_0x68);
|
||||||
|
sub_0807DD50(this);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if (this->interactType == 2) {
|
||||||
|
this->action = 2;
|
||||||
|
this->interactType = 0;
|
||||||
|
InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gLinkEntity)));
|
||||||
|
sub_0806F118(this);
|
||||||
|
} else {
|
||||||
|
sub_0807DD94(this, 0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (UpdateFuseInteraction(this)) {
|
||||||
|
this->action = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Gentari_Fusion(Entity *this)
|
||||||
|
{
|
||||||
|
if (this->action == 0) {
|
||||||
|
this->action++;
|
||||||
|
this->spriteSettings.b.draw = TRUE;
|
||||||
|
sub_0805E3A0(this, 2);
|
||||||
|
InitAnimationForceUpdate(this, 10);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
UpdateAnimationSingleFrame(this);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue