Document RIC Vibhuti crash cloud (#1517)

Got away from using `generic`. Only two fields are used, but unk8C was
taken in the main Vibhuti crash, so can't reuse it.

Trying to start using the `s32 : 32` syntax to indicate unused fields
moving forward, may help with figuring out how to handle the problem of
`Ext` and its mysteries.
This commit is contained in:
bismurphy 2024-08-15 14:04:10 -04:00 committed by GitHub
parent eca5393e43
commit 899226c3c3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 21 additions and 9 deletions

View File

@ -1132,6 +1132,15 @@ typedef struct {
u16 unk8C;
} ET_VibhutiCrash;
typedef struct {
s16 unk7C;
s16 : 16;
s32 : 32;
s32 : 32;
s32 : 32;
struct Entity* parent;
} ET_VibhutiCrashCloud;
typedef struct {
PrimLineG2* lines[4];
s16 unk8C;
@ -1370,6 +1379,7 @@ typedef union { // offset=0x7C
ET_AguneaCrash aguneaCrash;
ET_AxeCrash axeCrash;
ET_VibhutiCrash vibhutiCrash;
ET_VibhutiCrashCloud vibCrashCloud;
ET_RicRevivalColumn ricColumn;
ET_GiantSpinningCross giantcross;
ET_EquipItemDrop equipItemDrop;

View File

@ -1369,7 +1369,7 @@ PfnEntityUpdate g_RicEntityTbl[] = {
RicEntitySubwpnAgunea,
RicEntityAguneaHitEnemy,
EntitySubwpnCrashVibhuti,
func_8016D328,
RicEntityVibhutiCrashCloud,
func_8016E324,
func_8016D9C4,
func_8016DF74,

View File

@ -2279,7 +2279,8 @@ void RicEntityAguneaHitEnemy(Entity* self) {
}
}
void func_8016D328(Entity* entity) {
// White cloud that comes out of Richter's finger with the Vibhuti crash
void RicEntityVibhutiCrashCloud(Entity* entity) {
s16 primIndex;
s32 newVelocity;
@ -2290,12 +2291,12 @@ void func_8016D328(Entity* entity) {
if (primIndex != -1) {
entity->flags = FLAG_UNK_08000000 | FLAG_HAS_PRIMS;
entity->posX.val =
entity->ext.generic.unk8C.entityPtr->ext.generic.unk84.unk;
entity->ext.vibCrashCloud.parent->ext.vibhutiCrash.unk84;
entity->posY.val =
entity->ext.generic.unk8C.entityPtr->ext.generic.unk88.unk;
entity->facingLeft = entity->ext.generic.unk8C.entityPtr->ext
.generic.unk8C.modeU16.unk0;
entity->ext.generic.unkB0 = 0x18;
entity->ext.vibCrashCloud.parent->ext.vibhutiCrash.unk88;
entity->facingLeft =
entity->ext.vibCrashCloud.parent->ext.vibhutiCrash.unk8C;
entity->ext.factory.unkB0 = 0x18;
RicSetSubweaponParams(entity);
entity->unk5A = 0x79;
entity->animSet = ANIMSET_DRA(14);
@ -2317,7 +2318,7 @@ void func_8016D328(Entity* entity) {
break;
case 1:
if (++entity->ext.generic.unk7C.s >= 39) {
if (++entity->ext.vibCrashCloud.unk7C >= 39) {
DestroyEntity(entity);
} else {
entity->posX.val += entity->velocityX;
@ -2396,6 +2397,7 @@ void EntitySubwpnCrashVibhuti(Entity* self) {
self->ext.vibhutiCrash.unk84 = prim->posX.val;
self->ext.vibhutiCrash.unk88 = prim->posY.val;
self->ext.vibhutiCrash.unk8C = prim->velocityX.val < 1;
// Creates RicEntityVibhutiCrashCloud
RicCreateEntFactoryFromEntity(self, FACTORY(0, 55), 0);
} else {
prim->posX.val += prim->velocityX.val;

View File

@ -147,7 +147,7 @@ void RicEntitySubwpnThrownVibhuti(Entity* self);
void RicEntitySubwpnAgunea(Entity* self);
void RicEntityAguneaHitEnemy(Entity* self);
void EntitySubwpnCrashVibhuti(Entity* self);
void func_8016D328(Entity* self);
void RicEntityVibhutiCrashCloud(Entity* self);
void func_8016E324(Entity* self);
void func_8016D9C4(Entity* self);
void func_8016DF74(Entity* self);