Decompile no0 func_us_801D0718 + func_us_801D0898 (#1930)
Some checks are pending
Format code / format (push) Waiting to run
Build C code / extract-assets (push) Waiting to run
Build C code / build-linux (x86_64, Debug, clang, custom) (push) Blocked by required conditions
Build C code / build-linux (x86_64, Debug, clang, lle) (push) Blocked by required conditions
Build C code / build-linux (x86_64, Debug, gcc, custom) (push) Blocked by required conditions
Build C code / build-linux (x86_64, Debug, gcc, lle) (push) Blocked by required conditions
Build C code / build-linux (x86_64, RelWithDebInfo, clang, custom) (push) Blocked by required conditions
Build C code / build-linux (x86_64, RelWithDebInfo, clang, lle) (push) Blocked by required conditions
Build C code / build-linux (x86_64, RelWithDebInfo, gcc, custom) (push) Blocked by required conditions
Build C code / build-linux (x86_64, RelWithDebInfo, gcc, lle) (push) Blocked by required conditions
Build C code / build-macos (Debug, custom) (push) Blocked by required conditions
Build C code / build-macos (Debug, lle) (push) Blocked by required conditions
Build C code / build-macos (RelWithDebInfo, custom) (push) Blocked by required conditions
Build C code / build-macos (RelWithDebInfo, lle) (push) Blocked by required conditions
Build C code / build-windows (Debug, custom) (push) Blocked by required conditions
Build C code / build-windows (Debug, lle) (push) Blocked by required conditions
Build C code / build-windows (RelWithDebInfo, custom) (push) Blocked by required conditions
Build C code / build-windows (RelWithDebInfo, lle) (push) Blocked by required conditions
Build Saturn version / build-and-test-saturn (push) Waiting to run
Build Saturn version / function-finder-saturn (push) Waiting to run
Build Debug Module tool / build (push) Waiting to run
Build PSX and PSP version / build-and-test (pspeu, hd) (push) Waiting to run
Build PSX and PSP version / build-and-test (pspeu, pspeu) (push) Waiting to run
Build PSX and PSP version / build-and-test (us, us) (push) Waiting to run
Build PSX and PSP version / generate-progress-report (pspeu, hd) (push) Blocked by required conditions
Build PSX and PSP version / generate-progress-report (pspeu, pspeu) (push) Blocked by required conditions
Build PSX and PSP version / generate-progress-report (us, us) (push) Blocked by required conditions
Build PSX and PSP version / generate-duplicates-report (us, us) (push) Blocked by required conditions
Build PSX and PSP version / generate-duplicates-report-psp (pspeu, pspeu) (push) Blocked by required conditions

Couple of smaller Diplo functions and a little bit of clean up for the
earlier function I did

`func_us_801D0718`
PSX: https://decomp.me/scratch/NkB3j
PSP: https://decomp.me/scratch/xz0Oi

`func_us_801D0898`
PSX: https://decomp.me/scratch/7GFMG
PSP: https://decomp.me/scratch/aHDvP
This commit is contained in:
Josh Schreuder 2024-11-23 07:06:26 +11:00 committed by GitHub
parent e883d78be3
commit e0c36018a7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 72 additions and 8 deletions

View File

@ -2113,17 +2113,21 @@ typedef struct {
} ET_Skelerang;
typedef struct {
/* 0x7C */ s32 : 32;
/* 0x80 */ s32 : 32;
/* 0x7C */ struct Entity* parent;
/* 0x80 */ struct Entity* entity;
/* 0x84 */ s32 : 32;
/* 0x88 */ s32 : 32;
/* 0x8C */ s32 : 32;
/* 0x90 */ s32 : 32;
/* 0x90 */ Point32* unk90;
/* 0x94 */ s32 : 32;
/* 0x98 */ u32 velocityY;
/* 0x98 */ s32 velocityY;
/* 0x9C */ s16 : 16;
/* 0x9E */ u8 unk9E;
/* 0x9F */ u8 unk9F;
/* 0xA0 */ u32 : 32;
/* 0xA4 */ s32 posX;
/* 0xA8 */ s32 posY;
/* 0xAC */ s32 unkAC;
} ET_Diplocephalus;
typedef struct {

View File

@ -68,7 +68,7 @@ void EntityDiplocephalusFoot(Entity* self) {
self->animCurFrame++;
if (self->ext.diplocephalus.unk9E < 3) {
if (g_CurrentEntity->facingLeft ^
(LOHU(self->ext.prim->x3) % 2)) {
(self->ext.diplocephalus.parent->step % 2)) {
EntityGreyPuffSpawner(self, 6, 3, 6, 16, 0, -4);
} else {
EntityGreyPuffSpawner(self, 6, 3, -6, 16, 0, 4);
@ -86,15 +86,75 @@ void EntityDiplocephalusFoot(Entity* self) {
INCLUDE_ASM("st/no0/nonmatchings/e_diplocephalus", func_us_801CF910);
// Main entity?
INCLUDE_ASM("st/no0/nonmatchings/e_diplocephalus", func_us_801CFBE8);
INCLUDE_ASM("st/no0/nonmatchings/e_diplocephalus", func_us_801D0718);
// Likely the torso entity that player can stand on top of
void func_us_801D0718(Entity* self) {
Entity* parent;
Entity* player;
s32 step;
s32 collision;
s32 posX;
s32 posY;
if (!self->step) {
InitializeEntity(g_EInitInteractable);
self->ext.diplocephalus.posX = self->posX.i.hi + g_Tilemap.scrollX.i.hi;
self->ext.diplocephalus.posY = self->posY.i.hi + g_Tilemap.scrollY.i.hi;
}
player = &PLAYER;
parent = self->ext.diplocephalus.parent;
self->posX.i.hi = parent->posX.i.hi;
self->posY.i.hi = parent->posY.i.hi;
posX =
self->posX.i.hi + g_Tilemap.scrollX.i.hi - self->ext.diplocephalus.posX;
posY =
self->posY.i.hi + g_Tilemap.scrollY.i.hi - self->ext.diplocephalus.posY;
collision = 0;
step = parent->step;
if (step < 13) {
collision = GetPlayerCollisionWith(self, 8, 18, 4) & 0xFF;
if (collision) {
player->posX.i.hi += posX;
player->posY.i.hi += 2;
D_80097488.x.i.hi += posX;
D_80097488.y.i.hi += 2;
}
}
self->ext.diplocephalus.posX = self->posX.i.hi + g_Tilemap.scrollX.i.hi;
self->ext.diplocephalus.posY = self->posY.i.hi + g_Tilemap.scrollY.i.hi;
// Parent is func_us_801CFBE8 (self - 1)
if (parent->entityId != 0x21) {
DestroyEntity(self);
}
}
// Death explosion
INCLUDE_ASM("st/no0/nonmatchings/e_diplocephalus", func_us_801D0898);
void func_us_801D0898(Entity* self, s32 count) {
Entity* newEntity;
s32 i;
s8 randomX;
s8 randomY;
for (i = 0; i < count; i++) {
randomX = (Random() & 0x3F) - 0x20;
randomY = (Random() & 0x1F) - 0xF;
newEntity = AllocEntity(&g_Entities[160], &g_Entities[192]);
if (newEntity != NULL) {
CreateEntityFromEntity(E_EXPLOSION, self, newEntity);
newEntity->params = 1;
newEntity->posX.i.hi += randomX;
newEntity->posY.i.hi += randomY;
newEntity->zPriority = self->zPriority + 2;
}
}
}
// Fireball
INCLUDE_ASM("st/no0/nonmatchings/e_diplocephalus", func_us_801D0990);
// Main entity?
// Tail entity
INCLUDE_ASM("st/no0/nonmatchings/e_diplocephalus", func_us_801D0E7C);