gentari.c OK

This commit is contained in:
theo3 2020-07-12 22:58:48 -07:00
parent d429f7f9cb
commit 6aba97697b
5 changed files with 63 additions and 117 deletions

View File

@ -6,114 +6,6 @@
.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
Festari: @ 0x0805FDF8
push {lr}

View File

@ -160,6 +160,12 @@ typedef struct Entity {
((((entity->x.HALF.HI - xOff - gRoomControls.roomOriginX) >> 4) & 0x3fU) | \
(((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 InitAnimationForceUpdate(Entity*, u32);
extern void UpdateAnimationSingleFrame(Entity*);
@ -170,11 +176,7 @@ extern void SetExtraSpriteFrame(Entity*, u32, u32);
extern void SetSpriteSubEntryOffsetData1(Entity*, u32, u32);
extern void SetSpriteSubEntryOffsetData2(Entity*, u32, u32);
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 u32 GetFacingDirection(Entity*, Entity*);
extern void DeleteThisEntity();
#endif

View File

@ -533,6 +533,7 @@ SECTIONS {
asm/getEmptyEntity.o(.text);
asm/code_0805E744.o(.text);
/* npcs */
src/gentari.o(.text);
asm/gentari.o(.text);
asm/festari.o(.text);
asm/forestMinish.o(.text);

View File

@ -9,8 +9,7 @@
extern void sub_0805E3A0(Entity*, u32);
extern void sub_0807DD50(Entity*);
extern void GetFacingDirection(Entity*, Entity*);
extern u32 sub_0806F5A4(void);
extern u32 sub_0806F5A4(u32);
extern void sub_0806F118(Entity*);
extern void sub_0807DD94(Entity*, u32);
extern u32 sub_0801E99C(void);
@ -37,8 +36,7 @@ void Dampe(Entity* this) {
if (this->interactType == 2) {
this->action = 2;
this->interactType = 0;
GetFacingDirection(this, &gLinkEntity);
InitAnimationForceUpdate(this, sub_0806F5A4() + 4);
InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gLinkEntity)) + 4);
sub_0806F118(this);
} else {
sub_0807DD94(this, 0);

53
src/gentari.c Normal file
View File

@ -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);
}
}