mirror of
https://github.com/Xeeynamo/sotn-decomp.git
synced 2024-10-07 02:24:01 +00:00
Decompile func_8018F510 and similar across all overlays
This commit is contained in:
parent
b994edcc98
commit
a0ab232493
@ -1 +1,5 @@
|
||||
Random = 0x80190E4C;
|
||||
DestroyEntity = 0x80194264;
|
||||
AllocEntity = 0x80194AD4;
|
||||
InitializeEntity = 0x80194F74;
|
||||
EntityExplosion = 0x801964F8;
|
||||
|
@ -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;
|
||||
EntityStageNamePopup = 0x801C8CAC;
|
@ -31,6 +31,7 @@ FallEntity = 0x801B4CEC;
|
||||
AllocEntity = 0x801B53CC;
|
||||
InitializeEntity = 0x801B584C;
|
||||
EntityDummy = 0x801B5948;
|
||||
EntityExplosion = 0x801B6B60;
|
||||
EntityIntenseExplosion = 0x801B89B4;
|
||||
EntityAbsorbOrb = 0x801B9EA8;
|
||||
EntityRoomForeground = 0x801BA6EC;
|
||||
@ -40,4 +41,4 @@ EntityCutscenePhotograph = 0x801BB764;
|
||||
EntityCutscenePhotographFire = 0x801BC4D0;
|
||||
func_801BC5C0 = 0x801BC5C0;
|
||||
func_801BD8F0 = 0x801BD8F0;
|
||||
EntityBackgroundVortex = 0x801BE1B4;
|
||||
EntityBackgroundVortex = 0x801BE1B4;
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user