mirror of
https://github.com/zeldaret/oot.git
synced 2025-08-06 06:10:21 +00:00
Volvagia (ovl_Boss_Fd) and related actors (#352)
* Darkmeiro decompilation Bg_Gnd_Darkmeiro decompiled, matched, and documented. * Lots of functions matched. Some big ones are close. * Five left unmatched, one close. * Merged data and decompiled the giant function into something readable. Its branch structure has yet to be matched. * Three unmatched, one essentially matched, the rest matched. * More fixes. * Documented more of the structure and cleaned up a bit. * BossFd2, BgVbSima, and EnVbBall matched and documented * Also removed unneeded .s files * And need to name EnVbBall's functions * give this a shot * fix conflict * one more try * removing darkmeiro changes * and again * now OK from make clean * minor cleanup * One more matching function for BossFd * which means it doesn't need its .s * splitting * splitting * splitting * forgot some .s * fancy new names * fancy new names * trying again * sneaky .s files * sound effects and some hex to decimal conversions * Sound effects and static variable cleanup * format.sh and clean up static variables * sfx and formatting * ZAP and cleanup * small cleanup * cleanup and ZAP * ZAP * looking at the giant function again * looking at the giant function again * Only the big function left. * Those .s files aren't mine, officer * float literals might be fixed. regalloc still a nightmare * almost done with the big function * should make now * not much of a change * all functions match. rodata somehow doesn't. * forgot some things * lots of cleanup * and a little more * small error * large cleanup. Also BossFd has function names and inlined variable declarations * still more cleanup * the quest for 0.1f continues * forgot to put NON_MATCHING back in * Data structures fully documented. Still more cleanup. * DECR now works with BossFd2 * should match now * cleanup * small cleanup * cleanup and names * tiny thing * particles and headers and stuff * now with more enums * merge * test * end test * update * cleanup * object 2 * object 1 * doc object_fd2 * git subrepo pull --force tools/ZAPD subrepo: subdir: "tools/ZAPD" merged: "6f874af4a" upstream: origin: "https://github.com/zeldaret/ZAPD.git" branch: "master" commit: "6f874af4a" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * formatting * .s * merge actor * vertex arrays * a little more * formatting * merge opd * fixed damage check * cleanup * fixes * effect struct * review Co-authored-by: petrie911 <pmontag@DESKTOP-LG8A167.localdomain> Co-authored-by: fig02 <fig02srl@gmail.com>
This commit is contained in:
parent
7306d13897
commit
7b2b88d552
95 changed files with 4290 additions and 11359 deletions
File diff suppressed because it is too large
Load diff
|
@ -6,9 +6,87 @@
|
|||
|
||||
struct BossFd2;
|
||||
|
||||
typedef void (*BossFd2ActionFunc)(struct BossFd2*, GlobalContext*);
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ FD2_SIGNAL_NONE,
|
||||
/* 1 */ FD2_SIGNAL_FLY,
|
||||
/* 2 */ FD2_SIGNAL_DEATH,
|
||||
/* 100 */ FD2_SIGNAL_GROUND = 100
|
||||
} BossFd2Signal;
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ Vec3f rot[10];
|
||||
/* 0x078 */ Vec3f pos[10];
|
||||
/* 0x0F0 */ Vec3f pull[10];
|
||||
/* 0x168 */ f32 scale[10];
|
||||
/* 0x190 */ Vec3f head;
|
||||
} BossFd2Mane; // size = 0x19C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f eye;
|
||||
/* 0x0C */ Vec3f at;
|
||||
/* 0x18 */ Vec3f pad[2];
|
||||
/* 0x30 */ Vec3f eyeVel;
|
||||
/* 0x3C */ Vec3f atVel;
|
||||
/* 0x48 */ Vec3f nextEye;
|
||||
/* 0x54 */ Vec3f eyeMaxVel;
|
||||
/* 0x60 */ Vec3f nextAt;
|
||||
/* 0x6C */ Vec3f atMaxVel;
|
||||
/* 0x78 */ f32 speedMod;
|
||||
/* 0x7C */ f32 accel;
|
||||
/* 0x80 */ f32 yMod;
|
||||
/* 0x84 */ f32 shake;
|
||||
} BossFd2Cam; // size = 0x88
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ FD2_TURN_TO_LINK,
|
||||
/* 1 */ FD2_ACTION_STATE,
|
||||
/* 2 */ FD2_UNK_TIMER,
|
||||
/* 3 */ FD2_VAR_TIMER,
|
||||
/* 4 */ FD2_UNUSED_4,
|
||||
/* 5 */ FD2_UNUSED_5,
|
||||
/* 6 */ FD2_BLINK_TIMER,
|
||||
/* 7 */ FD2_SCREAM_TIMER,
|
||||
/* 8 */ FD2_DAMAGE_FLASH_TIMER,
|
||||
/* 9 */ FD2_HOLE_COUNTER,
|
||||
/* 10 */ FD2_INVINC_TIMER,
|
||||
/* 11 */ FD2_FAKEOUT_COUNT,
|
||||
/* 19 */ FD2_SHORT_COUNT = 19
|
||||
} BossFd2S16Var;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ FD2_TEX1_SCROLL_X,
|
||||
/* 1 */ FD2_TEX1_SCROLL_Y,
|
||||
/* 2 */ FD2_TEX2_SCROLL_X,
|
||||
/* 3 */ FD2_TEX2_SCROLL_Y,
|
||||
/* 10 */ FD2_END_FRAME = 10,
|
||||
/* 18 */ FD2_FLOAT_COUNT = 18
|
||||
} BossFd2F32Var;
|
||||
|
||||
typedef struct BossFd2 {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ char unk_14C[0x1530];
|
||||
/* 0x014C */ SkelAnime skelAnime;
|
||||
/* 0x0190 */ BossFd2ActionFunc actionFunc;
|
||||
/* 0x0194 */ u8 disableAT;
|
||||
/* 0x0196 */ s16 work[FD2_SHORT_COUNT];
|
||||
/* 0x01BC */ s16 timers[5];
|
||||
/* 0x01C8 */ f32 fwork[FD2_FLOAT_COUNT];
|
||||
/* 0x0210 */ Vec3f headPos;
|
||||
/* 0x021C */ Vec3s headRot;
|
||||
/* 0x0222 */ char unk_222;
|
||||
/* 0x0223 */ u8 eyeState;
|
||||
/* 0x0224 */ char unk_224[0xC90]; // despite its size, seems to be unused.
|
||||
/* 0x0EB4 */ BossFd2Mane centerMane;
|
||||
/* 0x1050 */ BossFd2Mane rightMane;
|
||||
/* 0x11EC */ BossFd2Mane leftMane;
|
||||
/* 0x1388 */ char unk_1388[4];
|
||||
/* 0x138C */ f32 jawOpening;
|
||||
/* 0x1390 */ s16 deathState;
|
||||
/* 0x1392 */ s16 deathCamera;
|
||||
/* 0x1394 */ BossFd2Cam camData;
|
||||
/* 0x141C */ ColliderJntSph collider;
|
||||
/* 0x143C */ ColliderJntSphElement elements[9];
|
||||
} BossFd2; // size = 0x167C
|
||||
|
||||
extern const ActorInit Boss_Fd2_InitVars;
|
||||
|
|
116
src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2_colchk.c
Normal file
116
src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2_colchk.c
Normal file
|
@ -0,0 +1,116 @@
|
|||
#include "global.h"
|
||||
|
||||
static ColliderJntSphElementInit sJntSphElementsInit[9] = {
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK3,
|
||||
{ 0xFFCFFFFF, 0x00, 0x20 },
|
||||
{ 0xFFCDFFFE, 0x00, 0x00 },
|
||||
TOUCH_NONE,
|
||||
BUMP_ON | BUMP_HOOKABLE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 35, { { 6000, 0, 0 }, 21 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
{ 0xFFCFFFFF, 0x00, 0x20 },
|
||||
{ 0xFFCDFFFE, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 18, { { 4000, 0, 0 }, 13 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
{ 0xFFCFFFFF, 0x00, 0x20 },
|
||||
{ 0xFFCDFFFE, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 19, { { 3000, 0, 0 }, 13 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
{ 0xFFCFFFFF, 0x00, 0x20 },
|
||||
{ 0xFFCDFFFE, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 20, { { 4000, 0, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
{ 0xFFCFFFFF, 0x00, 0x20 },
|
||||
{ 0xFFCDFFFE, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 24, { { 4000, 0, 0 }, 13 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
{ 0xFFCFFFFF, 0x00, 0x20 },
|
||||
{ 0xFFCDFFFE, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 25, { { 3000, 0, 0 }, 13 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
{ 0xFFCFFFFF, 0x00, 0x20 },
|
||||
{ 0xFFCDFFFE, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 26, { { 3500, 1500, 0 }, 15 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
{ 0xFFCFFFFF, 0x00, 0x20 },
|
||||
{ 0xFFCDFFFE, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 17, { { 0, 0, 0 }, 26 }, 100 },
|
||||
},
|
||||
{
|
||||
{
|
||||
ELEMTYPE_UNK2,
|
||||
{ 0xFFCFFFFF, 0x00, 0x20 },
|
||||
{ 0xFFCDFFFE, 0x00, 0x00 },
|
||||
TOUCH_ON | TOUCH_SFX_NORMAL,
|
||||
BUMP_NONE,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 30, { { 0, 0, 0 }, 17 }, 100 },
|
||||
},
|
||||
};
|
||||
|
||||
static ColliderJntSphInit sJntSphInit = {
|
||||
{
|
||||
COLTYPE_METAL,
|
||||
AT_ON | AT_TYPE_ENEMY,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_PLAYER,
|
||||
OC2_TYPE_1,
|
||||
COLSHAPE_JNTSPH,
|
||||
},
|
||||
9,
|
||||
sJntSphElementsInit,
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue