Decompile smallPesto.c

This commit is contained in:
TauNeutrino
2020-10-29 16:39:13 +01:00
parent f1bfe499de
commit fbf7f49146
3 changed files with 84 additions and 184 deletions
+83
View File
@@ -8,11 +8,22 @@ extern u32 sub_0806F3E4();
extern void sub_0804A7D4(Entity*);
extern void sub_0804A720(Entity*);
extern void sub_080317F8(Entity*);
extern u32 sub_08049FA0(Entity*);
extern u32 Random();
extern u32 sub_08049EE4(Entity*);
extern void sub_0806F69C(Entity*);
extern void (*gUnk_080CE530[])(Entity*);
extern void (*gUnk_080CE548[])(Entity*);
extern void (*gUnk_080CE554[])(Entity*);
void sub_080317B4(Entity*);
void sub_080317E0(Entity*);
void sub_080317F8(Entity*);
void sub_08031840(Entity*);
extern BoundingBox gUnk_080CE560;
void SmallPesto(Entity *this)
{
gUnk_080CE530[GetNextFunction(this)](this);
@@ -66,3 +77,75 @@ void sub_08031704(Entity *this)
sub_0804A720(this);
sub_080317F8(this);
}
void sub_08031714(Entity* entity){
u8 newDirection;
sub_080317B4(entity);
if(--entity->field_0xf == 0){
entity->field_0xf = (Random() & 0xf) + 0x10;
if(sub_08049FA0(entity) == 0){
if((entity->field_0xf & 1) != 0){
entity->direction = sub_08049EE4(entity);
goto _08031766;
}
}
entity->direction += 0x18;
entity->direction = ((Random() & 0xe) + entity->direction) & 0x1f;
_08031766:
sub_080317E0(entity);
}
}
void sub_08031770(Entity* entity){
if(entity->field_0x80.HWORD != 0){
if(--entity->field_0x80.HWORD == 0){
sub_08031840(entity);
}
}else if(entity->attachedEntity == NULL){
entity->field_0x80.HWORD = (Random() & 0x7f) | (0x80 << 2);
}else{
if(entity->attachedEntity->next == NULL){
entity->attachedEntity = NULL;
}
}
return;
}
void sub_080317B4(Entity* entity){
entity->height.HALF.HI = ((Random() & 0x30) != 0) ? -0xc : -0xd;
sub_0806F69C(entity);
GetNextFrame(entity);
}
void sub_080317E0(Entity *entity){
entity->animationState = ((u8)(entity->direction + 2) & 0x1c) >> 2;
InitializeAnimation(entity, entity->animationState);
}
void sub_080317F8(Entity *entity){
u8 newDirection = Random() & 0x18;
entity->action = 1;
entity->height.HALF.HI = 0x0000FFF4;
entity->collisionLayer = 1;
entity->field_0x3c |= 0x10;
entity->field_0x1c = 1;
entity->direction = newDirection;
entity->boundingBox = &gUnk_080CE560;
sub_080317E0(entity);
entity->actionDelay = 0;
entity->field_0xf = 0x20;
}
void sub_08031840(Entity* entity){
Entity *enemy = CreateEnemy(0x2d, entity->entityType.form);
if(enemy!= NULL){
CopyPosition(entity, enemy);
enemy->parent = entity;
entity->attachedEntity = enemy;
enemy->entityType.parameter = 1;
}
}