Decompile func_8018F510 and similar across all overlays

This commit is contained in:
Luciano Ciccariello 2023-01-21 14:13:45 +00:00
parent b994edcc98
commit a0ab232493
11 changed files with 279 additions and 74 deletions

View File

@ -1 +1,5 @@
Random = 0x80190E4C;
DestroyEntity = 0x80194264;
AllocEntity = 0x80194AD4;
InitializeEntity = 0x80194F74;
EntityExplosion = 0x801964F8;

View File

@ -1,8 +1,10 @@
c_GoldPrizes = 0x80181D14;
c_HeartPrizes = 0x80181DA4;
Random = 0x801B94D4;
CreateEntity = 0x801BB0C4;
SpawnExplosionEntity = 0x801BBB4C;
EntityRedDoor = 0x801BBCB4;
DestroyEntity = 0x801BC8EC;
Random = 0x801B94D4;
SpawnExplosionEntity = 0x801BBB4C;
PreventEntityFromRespawning = 0x801BC9D4;
AnimateEntity = 0x801BCA1C;
MoveEntity = 0x801BCCA0;
@ -10,15 +12,14 @@ FallEntity = 0x801BCCD0;
AllocEntity = 0x801BD15C;
InitializeEntity = 0x801BD5FC;
CollectHeart = 0x801BDF7C;
c_HeartPrizes = 0x80181DA4;
CollectGold = 0x801BDFFC;
CollectHeartVessel = 0x801BE1F0;
CollectLifeVessel = 0x801BE294;
EntityBreakable = 0x801BE30C;
EntityExplosion = 0x801BEB80;
EntityInventoryDrop = 0x801BED20;
EntityAbsorbOrb = 0x801C2AA8;
EntityRoomForeground = 0x801C32EC;
EntityBoneScimitar = 0x801C37E4;
EntityBloodSkeleton = 0x801C7958;
EntityStageNamePopup = 0x801C8CAC;
c_GoldPrizes = 0x80181D14;

View File

@ -31,6 +31,7 @@ FallEntity = 0x801B4CEC;
AllocEntity = 0x801B53CC;
InitializeEntity = 0x801B584C;
EntityDummy = 0x801B5948;
EntityExplosion = 0x801B6B60;
EntityIntenseExplosion = 0x801B89B4;
EntityAbsorbOrb = 0x801B9EA8;
EntityRoomForeground = 0x801BA6EC;

View File

@ -170,13 +170,14 @@ INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", func_80193410);
INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", func_801934C4);
void func_8018A8D4(u16 objectId, Entity* source, Entity* entity);
INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", func_80193538);
INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", func_801935B4);
INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", func_8019362C);
void func_80194264(Entity* entity) {
void DestroyEntity(Entity* entity) {
s32 i;
s32 length;
u32* ptr;
@ -254,7 +255,7 @@ INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", func_80194674);
INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", func_801948EC);
INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", func_80194AD4);
INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", AllocEntity);
s32 func_80194B34(u8 arg0, s16 arg1) { return D_80180BBC[arg0] * arg1; }
@ -268,15 +269,15 @@ u8 func_80194C20(Entity* arg0, Entity* arg1) {
u16 x;
u16 y;
x = arg1->posX.Data.high - arg0->posX.Data.high;
y = arg1->posY.Data.high - arg0->posY.Data.high;
x = arg1->posX.i.hi - arg0->posX.i.hi;
y = arg1->posY.i.hi - arg0->posY.i.hi;
return func_80194BE8(x, y);
}
u16 func_80194C68(s16 x, s16 y) {
x -= g_CurrentEntity->posX.Data.high;
y -= g_CurrentEntity->posY.Data.high;
x -= g_CurrentEntity->posX.i.hi;
y -= g_CurrentEntity->posY.i.hi;
return func_80194BE8(x, y);
}
@ -342,7 +343,7 @@ void func_80194EC4(u8 arg0) {
INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", func_80194EE0);
INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", func_80194F74);
INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", InitializeEntity);
void func_80195070(Entity* entity) {
if (entity->step == 0) {
@ -373,14 +374,14 @@ INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", func_80195B68);
void func_80195C0C(void) {
g_pfnPlaySfx(0x67A);
D_8003C848(5, 0x8000);
func_80194264(g_CurrentEntity);
DestroyEntity(g_CurrentEntity);
}
void func_80195C5C(void) { func_80194264(g_CurrentEntity); }
void func_80195C5C(void) { DestroyEntity(g_CurrentEntity); }
INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", func_80195C84);
INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", func_801964F8);
INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", EntityExplosion);
INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", func_801965F4);
@ -396,7 +397,32 @@ INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", func_80197B28);
INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", func_80198084);
INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", func_80198174);
extern u16 D_80180440[];
void func_80198174(Entity* entity) {
switch (entity->step) {
case 0:
InitializeEntity(D_80180440);
entity->unk8C.modeU16.unk0 = entity->unk80.entityPtr->objectId;
case 1:
if (entity->unk7C.U8.unk0++ >= 5) {
Entity* newEntity =
AllocEntity(D_8007D858, &D_8007D858[MaxEntityCount]);
if (newEntity != NULL) {
func_80193538(ENTITY_EXPLOSION, entity, newEntity);
newEntity->objectId = ENTITY_EXPLOSION;
newEntity->pfnUpdate = EntityExplosion;
newEntity->subId = entity->subId;
}
entity->unk7C.U8.unk0 = 0;
}
entity->posX.i.hi = entity->unk80.entityPtr->posX.i.hi;
entity->posY.i.hi = entity->unk80.entityPtr->posY.i.hi;
if (entity->unk80.entityPtr->objectId != entity->unk8C.modeU16.unk0) {
DestroyEntity(entity);
}
break;
}
}
INCLUDE_ASM("config/../asm/st/cen/nonmatchings/D600", func_80198284);
@ -510,12 +536,12 @@ void func_8019C540(POLY_GT4* poly) {
((POLY_GT4*)poly->tag)->y2 = 0;
}
void func_8019C620(unkStruct3* arg0) {
func_8019C540(arg0);
arg0->unk2B = 8;
arg0->unk0->unk2B = 1;
arg0->unk0->unk7 = 2;
arg0->unk0->unk32 = 0xA;
void func_8019C620(POLY_GT4* poly) {
func_8019C540(poly);
poly->p3 = 8;
((POLY_GT4*)poly->tag)->p3 = 1;
((POLY_GT4*)poly->tag)->code = 2;
((POLY_GT4*)poly->tag)->pad3 = 0xA;
}
void func_8019C674(POLY_GT4* poly) {

View File

@ -23,6 +23,7 @@ void func_8019A78C(void);
Entity* func_8019AC18(Entity*, Entity*);
void func_8019E5E0(Entity* entity);
extern u16 D_80180494[];
extern s16 D_80180D80[];
extern LayoutObject* D_801A32C4;
extern LayoutObject* D_801A32C8;
@ -341,12 +342,12 @@ void SpawnExplosionEntity(u16 objectId, Entity* entity) {
entity->posY.i.hi = g_CurrentEntity->posY.i.hi;
}
void func_8019967C(u16 objectId, Entity* a, Entity* b) {
DestroyEntity(b);
b->objectId = objectId;
b->pfnUpdate = D_801803C4[objectId];
b->posX.i.hi = a->posX.i.hi;
b->posY.i.hi = a->posY.i.hi;
void func_8019967C(u16 objectId, Entity* source, Entity* entity) {
DestroyEntity(entity);
entity->objectId = objectId;
entity->pfnUpdate = D_801803C4[objectId];
entity->posX.i.hi = source->posX.i.hi;
entity->posY.i.hi = source->posY.i.hi;
}
s32 func_801996F8(Unkstruct5* arg0) {
@ -907,8 +908,31 @@ INCLUDE_ASM("asm/st/dre/nonmatchings/11A64", func_8019DC6C);
INCLUDE_ASM("asm/st/dre/nonmatchings/11A64", func_8019E1C8);
// https://decomp.me/scratch/LpjYl 92.57%
INCLUDE_ASM("asm/st/dre/nonmatchings/11A64", func_8019E2B8);
void func_8019E2B8(Entity* entity) {
switch (entity->step) {
case 0:
InitializeEntity(D_80180494);
entity->unk8C.modeU16.unk0 = entity->unk80.entityPtr->objectId;
case 1:
if (entity->unk7C.U8.unk0++ >= 5) {
Entity* newEntity =
AllocEntity(D_8007D858, &D_8007D858[MaxEntityCount]);
if (newEntity != NULL) {
func_8019967C(ENTITY_EXPLOSION, entity, newEntity);
newEntity->objectId = ENTITY_EXPLOSION;
newEntity->pfnUpdate = EntityExplosion;
newEntity->subId = entity->subId;
}
entity->unk7C.U8.unk0 = 0;
}
entity->posX.i.hi = entity->unk80.entityPtr->posX.i.hi;
entity->posY.i.hi = entity->unk80.entityPtr->posY.i.hi;
if (entity->unk80.entityPtr->objectId != entity->unk8C.modeU16.unk0) {
DestroyEntity(entity);
}
break;
}
}
// https://decomp.me/scratch/lcx4I
INCLUDE_ASM("asm/st/dre/nonmatchings/11A64", func_8019E3C8);

View File

@ -1112,9 +1112,31 @@ void EntityHeartDrop(Entity* entity, u32 arg1) {
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019563C);
// https://decomp.me/scratch/CrGOA MATCHED but we need to figure out
// the correct member for the Entity struct yet
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019572C);
void func_8019572C(Entity* entity) {
switch (entity->step) {
case 0:
InitializeEntity(D_8018052C);
entity->unk8C.modeU16.unk0 = entity->unk80.entityPtr->objectId;
case 1:
if (entity->unk7C.U8.unk0++ >= 5) {
Entity* newEntity =
AllocEntity(D_8007D308, &D_8007D308[MaxEntityCount]);
if (newEntity != NULL) {
func_8019102C(ENTITY_EXPLOSION, entity, newEntity);
newEntity->objectId = ENTITY_EXPLOSION;
newEntity->pfnUpdate = EntityExplosion;
newEntity->subId = entity->subId;
}
entity->unk7C.U8.unk0 = 0;
}
entity->posX.i.hi = entity->unk80.entityPtr->posX.i.hi;
entity->posY.i.hi = entity->unk80.entityPtr->posY.i.hi;
if (entity->unk80.entityPtr->objectId != entity->unk8C.modeU16.unk0) {
DestroyEntity(entity);
}
break;
}
}
INCLUDE_ASM("asm/st/mad/nonmatchings/D8C8", func_8019583C);

View File

@ -10,6 +10,7 @@ void SpawnExplosionEntity(u16, Entity*);
void ReplaceBreakableWithItemDrop(Entity*);
extern u8* D_80180850;
extern u16 D_80180AE8[];
extern u16 D_80180B00[];
extern ObjInit2 D_80180BFC[];
extern s16 D_801820C4[];
@ -689,7 +690,31 @@ INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", EntityUnkId0E);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C8A84);
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C8B74);
void func_801C8B74(Entity* entity) {
switch (entity->step) {
case 0:
InitializeEntity(D_80180AE8);
entity->unk8C.modeU16.unk0 = entity->unk80.entityPtr->objectId;
case 1:
if (entity->unk7C.U8.unk0++ >= 5) {
Entity* newEntity =
AllocEntity(D_8007D858, &D_8007D858[MaxEntityCount]);
if (newEntity != NULL) {
func_801C3F38(ENTITY_EXPLOSION, entity, newEntity);
newEntity->objectId = ENTITY_EXPLOSION;
newEntity->pfnUpdate = EntityExplosion;
newEntity->subId = entity->subId;
}
entity->unk7C.U8.unk0 = 0;
}
entity->posX.i.hi = entity->unk80.entityPtr->posX.i.hi;
entity->posY.i.hi = entity->unk80.entityPtr->posY.i.hi;
if (entity->unk80.entityPtr->objectId != entity->unk8C.modeU16.unk0) {
DestroyEntity(entity);
}
break;
}
}
INCLUDE_ASM("asm/st/no3/nonmatchings/377D4", func_801C8C84);

View File

@ -12,6 +12,7 @@ int func_801CD658();
void EntityPriceDrop(Entity* entity);
void EntityInventoryDrop(Entity* entity);
extern u16 D_80180A78[];
extern u16 D_80180A90[];
extern ObjInit2 D_80180C10[];
extern PfnEntityUpdate PfnEntityUpdates[];
@ -518,7 +519,31 @@ INCLUDE_ASM("asm/st/np3/nonmatchings/3246C", EntityUnkId0E);
INCLUDE_ASM("asm/st/np3/nonmatchings/3246C", func_801C02F4);
INCLUDE_ASM("asm/st/np3/nonmatchings/3246C", func_801C03E4);
void func_801C03E4(Entity* entity) {
switch (entity->step) {
case 0:
InitializeEntity(D_80180A78);
entity->unk8C.modeU16.unk0 = entity->unk80.entityPtr->objectId;
case 1:
if (entity->unk7C.U8.unk0++ >= 5) {
Entity* newEntity =
AllocEntity(D_8007D858, &D_8007D858[MaxEntityCount]);
if (newEntity != NULL) {
func_801BB7A8(ENTITY_EXPLOSION, entity, newEntity);
newEntity->objectId = ENTITY_EXPLOSION;
newEntity->pfnUpdate = EntityExplosion;
newEntity->subId = entity->subId;
}
entity->unk7C.U8.unk0 = 0;
}
entity->posX.i.hi = entity->unk80.entityPtr->posX.i.hi;
entity->posY.i.hi = entity->unk80.entityPtr->posY.i.hi;
if (entity->unk80.entityPtr->objectId != entity->unk8C.modeU16.unk0) {
DestroyEntity(entity);
}
break;
}
}
INCLUDE_ASM("asm/st/np3/nonmatchings/3246C", func_801C04F4);

View File

@ -12,7 +12,7 @@ void func_8019B858(void);
void func_801BDD9C(void);
s32 func_801BCF74(s32*);
s32 func_801BD720(s32*, s32);
void func_801BEB80(Entity*);
void EntityExplosion(Entity*);
void func_801C29B0(s32);
void func_801C33D8(const u32*, s32);
void func_801C0B24(Entity* entity);
@ -55,7 +55,7 @@ extern const u16 D_80180CA0[];
extern u32 D_80182488[];
extern const u16* D_80180C58;
extern s16 D_801820E4[];
extern const u16 D_80180C04;
extern const u16 D_80180C04[];
extern u8 D_801825F0;
extern s32 D_80180C70;
extern u32 D_801822BC[];
@ -423,7 +423,7 @@ void func_801BD568(u16 arg0, u16 arg1) {
}
g_CurrentEntity->objectId = ENTITY_EXPLOSION;
g_CurrentEntity->pfnUpdate = (PfnEntityUpdate)func_801BEB80;
g_CurrentEntity->pfnUpdate = (PfnEntityUpdate)EntityExplosion;
g_CurrentEntity->subId = arg0;
g_CurrentEntity->animationFrame = 0;
g_CurrentEntity->unk19 = 0;
@ -621,7 +621,7 @@ void func_801BE2E4(void) { DestroyEntity(g_CurrentEntity); }
INCLUDE_ASM("config/../asm/st/nz0/nonmatchings/394D4", EntityBreakable);
void func_801BEB80(Entity* entity) {
void EntityExplosion(Entity* entity) {
u32 temp_v0;
if (entity->step == 0) {
@ -696,33 +696,28 @@ INCLUDE_ASM("config/../asm/st/nz0/nonmatchings/394D4", func_801C01B0);
INCLUDE_ASM("config/../asm/st/nz0/nonmatchings/394D4", func_801C070C);
void func_801C07FC(Entity* entity) {
Entity* newEntity;
u8 temp_v0;
switch (entity->step) {
case 0:
InitializeEntity(&D_80180C04);
InitializeEntity(D_80180C04);
entity->unk8C.modeU16.unk0 = entity->unk80.entityPtr->objectId;
case 1:
temp_v0 = entity->unk7C.U8.unk0++;
if (temp_v0 >= 5) {
newEntity = AllocEntity(D_8007D858, &D_8007D858[32]);
if (entity->unk7C.U8.unk0++ >= 5) {
Entity* newEntity =
AllocEntity(D_8007D858, &D_8007D858[MaxEntityCount]);
if (newEntity != NULL) {
func_801BBBC0(2, entity, newEntity);
func_801BBBC0(ENTITY_EXPLOSION, entity, newEntity);
newEntity->objectId = ENTITY_EXPLOSION;
newEntity->pfnUpdate = func_801BEB80;
newEntity->pfnUpdate = EntityExplosion;
newEntity->subId = entity->subId;
}
entity->unk7C.U8.unk0 = 0;
}
entity->posX.i.hi = entity->unk80.entityPtr->posX.i.hi;
entity->posY.i.hi = entity->unk80.entityPtr->posY.i.hi;
if (entity->unk80.entityPtr->objectId != entity->unk8C.modeU16.unk0) {
DestroyEntity(entity);
}
break;
}
}
@ -995,7 +990,7 @@ void func_801C3E94(Entity* entity) {
return;
}
entity->objectId = ENTITY_EXPLOSION;
entity->pfnUpdate = func_801BEB80;
entity->pfnUpdate = EntityExplosion;
entity->subId = 0;
entity->step = 0;
return;
@ -1127,7 +1122,7 @@ void func_801C6494(Entity* entity) {
}
entity->objectId = ENTITY_EXPLOSION;
entity->pfnUpdate = (PfnEntityUpdate)func_801BEB80;
entity->pfnUpdate = (PfnEntityUpdate)EntityExplosion;
entity->subId = 0;
entity->step = 0;
return;

View File

@ -18,10 +18,12 @@ void func_801B3BDC(u16 objectId, Entity* source, Entity* entity);
s16 func_801B4C78();
void MoveEntity();
void func_801B5794(u8);
void func_801B6B60(Entity*);
void EntityExplosion(Entity*);
extern u16 D_801805A4[];
extern u16 D_801805BC[];
extern ObjInit2 D_80180638[];
void func_801A7D64(Entity* arg0) {
s32 temp_v0;
ObjInit2* temp_s0 = &D_80180638[arg0->subId];
@ -365,7 +367,7 @@ void EntityDraculaFireball(Entity* entity) {
}
if (entity->unk34 & 0x100) {
entity->pfnUpdate = (PfnEntityUpdate)func_801B6B60;
entity->pfnUpdate = (PfnEntityUpdate)EntityExplosion;
entity->step = 0;
entity->subId = 2;
return;
@ -413,7 +415,7 @@ void EntityDraculaMeteorball(Entity* entity) {
if (g_isDraculaFirstFormDefeated) {
entity->objectId = ENTITY_EXPLOSION;
entity->pfnUpdate = func_801B6B60;
entity->pfnUpdate = EntityExplosion;
entity->step = 0;
entity->unk2E = 0;
entity->subId = 1;
@ -987,14 +989,14 @@ INCLUDE_ASM("asm/st/st0/nonmatchings/27D64", func_801B633C);
INCLUDE_ASM("asm/st/st0/nonmatchings/27D64", func_801B6358);
#ifndef NON_MATCHING
INCLUDE_ASM("asm/st/st0/nonmatchings/27D64", func_801B6B60);
void func_801B6B60(Entity* entity);
INCLUDE_ASM("asm/st/st0/nonmatchings/27D64", EntityExplosion);
void EntityExplosion(Entity* entity);
#else
extern u16 D_8018058C[];
extern u32 D_80181D7C[];
extern u16 D_80181E28[][2];
void func_801B6B60(Entity* entity) {
void EntityExplosion(Entity* entity) {
if (entity->step == 0) {
u32 zPriority;
@ -1035,7 +1037,31 @@ INCLUDE_ASM("asm/st/st0/nonmatchings/27D64", func_801B7308);
INCLUDE_ASM("asm/st/st0/nonmatchings/27D64", func_801B7B0C);
INCLUDE_ASM("asm/st/st0/nonmatchings/27D64", func_801B7BFC);
void func_801B7BFC(Entity* entity) {
switch (entity->step) {
case 0:
InitializeEntity(D_801805A4);
entity->unk8C.modeU16.unk0 = entity->unk80.entityPtr->objectId;
case 1:
if (entity->unk7C.U8.unk0++ >= 5) {
Entity* newEntity =
AllocEntity(D_8007D858, &D_8007D858[MaxEntityCount]);
if (newEntity != NULL) {
func_801B3BDC(ENTITY_EXPLOSION, entity, newEntity);
newEntity->objectId = ENTITY_EXPLOSION;
newEntity->pfnUpdate = EntityExplosion;
newEntity->subId = entity->subId;
}
entity->unk7C.U8.unk0 = 0;
}
entity->posX.i.hi = entity->unk80.entityPtr->posX.i.hi;
entity->posY.i.hi = entity->unk80.entityPtr->posY.i.hi;
if (entity->unk80.entityPtr->objectId != entity->unk8C.modeU16.unk0) {
DestroyEntity(entity);
}
break;
}
}
INCLUDE_ASM("asm/st/st0/nonmatchings/27D64", func_801B7D0C);

View File

@ -4059,9 +4059,65 @@ INCLUDE_ASM("asm/st/wrp/nonmatchings/6FD0", EntityHeartDrop);
INCLUDE_ASM("asm/st/wrp/nonmatchings/6FD0", EntityUnkId0E);
#ifndef NON_MATCHING
INCLUDE_ASM("asm/st/wrp/nonmatchings/6FD0", func_8018F420);
#else
u8 func_8018F420(s16* arg0, s32 facing) {
s16* var_s0_2;
s32 facing_;
CollisionResult res;
s16 x;
s16* var_s0;
u16 var_s1;
s32 new_var;
var_s0 = arg0;
facing_ = facing;
var_s1 = 0;
while (*var_s0 != 0xFF) {
var_s1 *= 2;
if (facing_ != 0) {
x = g_CurrentEntity->posX.i.hi + *var_s0++;
} else {
x = g_CurrentEntity->posX.i.hi - *var_s0++;
}
g_pfnCheckCollision(x, (s16)(g_CurrentEntity->posY.i.hi + *var_s0++),
&res, 0);
if (res.unk0 & 1) {
var_s1 |= 1;
new_var = 0xFF;
}
new_var = 0xFF;
}
INCLUDE_ASM("asm/st/wrp/nonmatchings/6FD0", func_8018F510);
return var_s1;
}
#endif
void func_8018F510(Entity* entity) {
switch (entity->step) {
case 0:
InitializeEntity(D_8018047C);
entity->unk8C.modeU16.unk0 = entity->unk80.entityPtr->objectId;
case 1:
if (entity->unk7C.U8.unk0++ >= 5) {
Entity* newEntity =
AllocEntity(D_8007D858, &D_8007D858[MaxEntityCount]);
if (newEntity != NULL) {
func_8018A8D4(ENTITY_EXPLOSION, entity, newEntity);
newEntity->objectId = ENTITY_EXPLOSION;
newEntity->pfnUpdate = EntityExplosion;
newEntity->subId = entity->subId;
}
entity->unk7C.U8.unk0 = 0;
}
entity->posX.i.hi = entity->unk80.entityPtr->posX.i.hi;
entity->posY.i.hi = entity->unk80.entityPtr->posY.i.hi;
if (entity->unk80.entityPtr->objectId != entity->unk8C.modeU16.unk0) {
DestroyEntity(entity);
}
break;
}
}
INCLUDE_ASM("asm/st/wrp/nonmatchings/6FD0", func_8018F620);
@ -4403,20 +4459,20 @@ void func_801938DC(POLY_GT4* arg0) {
((POLY_GT4*)arg0->tag)->y2 = 0;
}
void func_801939BC(POLY_GT4* arg0) {
func_801938DC(arg0);
arg0->p3 = 8;
((POLY_GT4*)arg0->tag)->p3 = 1;
((POLY_GT4*)arg0->tag)->code = 2;
((POLY_GT4*)arg0->tag)->pad3 = 0xA;
void func_801939BC(POLY_GT4* poly) {
func_801938DC(poly);
poly->p3 = 8;
((POLY_GT4*)poly->tag)->p3 = 1;
((POLY_GT4*)poly->tag)->code = 2;
((POLY_GT4*)poly->tag)->pad3 = 0xA;
}
void func_80193A10(POLY_GT4* arg0) {
arg0->p3 = 0;
arg0->pad3 = 8;
((POLY_GT4*)arg0->tag)->p3 = 0;
((POLY_GT4*)arg0->tag)->code = 4;
((POLY_GT4*)arg0->tag)->pad3 = 8;
void func_80193A10(POLY_GT4* poly) {
poly->p3 = 0;
poly->pad3 = 8;
((POLY_GT4*)poly->tag)->p3 = 0;
((POLY_GT4*)poly->tag)->code = 4;
((POLY_GT4*)poly->tag)->pad3 = 8;
}
s32 func_80193A3C(u8* arg0, u8 value) {