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