1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-03 06:24:30 +00:00

ovl_Boss_Ganon2 (2 nonmatching) (#874)

* Match a few

* Remove cast

* BossGanon2_Destroy

* Some struct layout

* Missed one

* Work on BossGanon2_Update

* Oops missed another

* Work on update more

* Get it to compile

* Work a bit on update

* func_808FD27C

* Cleanup a bit

* Fix incompatible pointer type

* Work more on update

* Multiply

* Fix janky cast regalloc

* Remove some casts

* Move switch case to right spot

* Tiny regalloc

* Fix stack

* Try to fix jump table

* Migrate bss

* Make data match

* Fix minor formatting

* Another minor formatting

* Replace hex with symbols

* Do display lists

* Vertices

* jnt items init

* Split gfx into separate file

* func_808FCF40

* func_808FCF5C

* func_808FD080

* func_808FD4D4

* func_808FF898

* func_808FFA24

* func_808FFAC8

* func_808FFBBC

* func_808FFC84

* use unk_313 as a bool

* func_808FFCFC

* func_808FFDB0

* Add commented static

* func_808FFEBC

* func_808FFFE0

* func_809000A0

* Remove useless cast in func_809000A0

* Remove useless temp

* Fix wrong branch

* BossGanon2_Update

* Fix implicit function declarations

* Type D_8090EB2C to zelda pointer

* Reorder include because why not

* Deduplicate undefined syms

* Add more to struct

* Work on func_808FD5F4

* Major work on func_808FD5F4

* Get func_808FD5F4 to compile

* Make unk_398 unsigned

* Work on func_808FD5F4

* Progress

* func_808FD210

* BossGanon2_Draw

* Make it compile

* Fix compiler warnings

* Fix branches func_808FD5F4

* re-nonmatching func_808FD5F4

* stuff

* fix math functions

* clang format

* more progress

* Replace bit stuff with type

* Merge master

* Add possibly janky things and fix while loop

* Why does this help

* Chained assignment

* Remove dubious thing

* Reorder thing

* Add possibly fake notices

* Use true and false

* Make func_808FD5F4 equivalent

* Massage stack a little

* func_80906AB0

* Correct texture params

* Whitespace is good

* Use decimal line numbers

* func_809069F8

* Work on func_809060E8

* Make funny loop less funny

* Float stuff

* Remove useless cast

* Merge upstream

* Fix compiler error in nonmatchings

* func_809060E8

* Change tex alloc to be full integer

* Add unk_234

* Correct size of unk_2F4

* Make textures u64[]

* Type textures to u64[]

* func_80905DA8

* func_80905674

* Replace some pi

* BossGanon2_PostLimbDraw2

* func_8090523C

* func_80904FC8

* func_80904D88

* BossGanon2_PostLimbDraw

* BossGanon2_OverrideLimbDraw

* func_8090464C

* func_80903F38

* Match func_80900890

* Move func_80906538 prototype

* Work on func_80902348

* Match func_80902348

* Add fake warning to array thing

* Work on func_8090120C

* Remove useless var from func_8090120C

* Work more on func_8090120C

* Move case probably into place func_8090120C

* Work on func_8090120C until 4914

* Add break to switch

* Pass player to startPlayerCutscene

* Work more on func_8090120C

* Work on func_80902524

* Move function prototype

* Match func_80902524

* Clean up sfx ids in func_808FD5F4

* Correct SFX_FLAG in func_8090120C

* Match func_8090120C

* Match func_80904340

* Change tex to u8[]

* Cleanup func_808FD5F4 a bit

* Clean up another inequality func_808FD5F4

* Match func_80904108

* Cleanup for PR

* Cleanup for PR part 2

* Cleanup data a bit and start on func_80906538

* Basically match func_80906538

* Match func_80906538

* Rename tex to shadowTexture

* Work on func_809034E4 a bit

* replace 255 with 0xFF for texture

* Correct NON_MATCHING guard

* Make func_809034E4 equivalent and not ugly!

* Reuse i in func_809034E4

* Minor cleanup in func_809034E4

* Remove unused asm

* Static all the data

* Switch to using assets xml for overlay graphics :)

* Remove now unused undefined syms

* Rename pad to D_809071FC

* Some cleanup

* Cleanup and name more stuff

* Name BossGanon2_DrawShadowTexture

* Rename to sZelda

* Correct array in func_809034E4.s

* Start using proper symbols for assets

* Add morre undefined syms comments

* Cleanup a bit

* Cleanup a bit more

* Use THIS in limb functions

* Update comments

* Use define for actor id

* Remove unnecessary padding in struct

* Rename rand_float to randFloat

* Update src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c

Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>

* Various minor suggestions

* Replace shadowTexture with void* wherever possible

* Update src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c

Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>

* Do multiply

* Name some variables from debug prints

* Update src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c

Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>

* Use ARRAY_COUNT(sParticles) everywhere

* Put data and bss in _data.c

* Remove unecessary @bug s

* Minor suggestions

* Why are there so many timers

Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>
This commit is contained in:
Sirius902 2021-08-06 11:30:31 -07:00 committed by GitHub
parent 0f644b7545
commit bc9ca97086
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
66 changed files with 3596 additions and 9015 deletions

File diff suppressed because it is too large Load diff

View file

@ -6,13 +6,92 @@
struct BossGanon2;
typedef void (*BossGanon2ActionFunc)(struct BossGanon2*, GlobalContext*);
typedef struct BossGanon2 {
/* 0x0000 */ Actor actor;
/* 0x014C */ char unk_14C[0x1C8];
/* 0x014C */ SkelAnime skelAnime;
/* 0x0190 */ BossGanon2ActionFunc actionFunc;
/* 0x0194 */ f32 unk_194;
/* 0x0198 */ f32 unk_198;
/* 0x019C */ s16 unk_19C;
/* 0x019E */ char unk_19E[0x4];
/* 0x01A2 */ s16 unk_1A2[5];
/* 0x01AC */ s16 unk_1AC;
/* 0x01B0 */ f32 unk_1B0;
/* 0x01B4 */ f32 unk_1B4;
/* 0x01B8 */ Vec3f unk_1B8;
/* 0x01C4 */ Vec3f unk_1C4;
/* 0x01D0 */ Vec3f unk_1D0;
/* 0x01D0 */ Vec3f unk_1DC;
/* 0x01E8 */ Vec3f unk_1E8;
/* 0x01F4 */ Vec3f unk_1F4;
/* 0x0200 */ Vec3f unk_200;
/* 0x020C */ Vec3f unk_20C;
/* 0x0218 */ Vec3f unk_218;
/* 0x0224 */ f32 unk_224;
/* 0x0228 */ f32 unk_228;
/* 0x022C */ char unk_22C[0x8];
/* 0x0234 */ Vec3f unk_234[16];
/* 0x02F4 */ s16 unk_2F4[5];
/* 0x02FE */ s16 unk_2FE[5];
/* 0x0308 */ char unk_308[4];
/* 0x030C */ f32 unk_30C;
/* 0x0310 */ u8 unk_310;
/* 0x0311 */ u8 unk_311;
/* 0x0312 */ u8 unk_312;
/* 0x0313 */ u8 unk_313; // "look_on"
/* 0x0314 */ u8 unk_314;
/* 0x0315 */ char unk_315[0x0F];
/* 0x0316 */ s16 unk_316; // "no_hit_time"
/* 0x0318 */ s16 unk_318;
/* 0x031A */ s16 unk_31A;
/* 0x031C */ s16 unk_31C;
/* 0x0320 */ f32 unk_320;
/* 0x0324 */ f32 unk_324;
/* 0x0328 */ char unk_328[0x5BC];
/* 0x0328 */ s16 unk_328;
/* 0x032C */ f32 unk_32C;
/* 0x0330 */ s16 unk_330;
/* 0x0332 */ s16 unk_332;
/* 0x0334 */ u8 unk_334;
/* 0x0335 */ u8 unk_335;
/* 0x0336 */ u8 unk_336;
/* 0x0337 */ u8 unk_337;
/* 0x0338 */ u8 unk_338;
/* 0x0339 */ s8 unk_339;
/* 0x033C */ f32 unk_33C;
/* 0x0340 */ s16 unk_340;
/* 0x0342 */ s16 unk_342;
/* 0x0344 */ s16 unk_344;
/* 0x0346 */ s16 unk_346;
/* 0x0348 */ s16 unk_348[5];
/* 0x0352 */ s16 unk_352[5];
/* 0x035C */ f32 unk_35C;
/* 0x0360 */ Vec3f unk_360;
/* 0x036C */ f32 unk_36C;
/* 0x0370 */ Vec3f unk_370;
/* 0x037C */ f32 unk_37C;
/* 0x0380 */ f32 unk_380;
/* 0x0384 */ f32 unk_384;
/* 0x0388 */ f32 unk_388;
/* 0x038C */ f32 unk_38C;
/* 0x0390 */ s16 unk_390;
/* 0x0392 */ s16 unk_392;
/* 0x0394 */ f32 unk_394;
/* 0x0398 */ u32 unk_398;
/* 0x039C */ s16 unk_39C;
/* 0x039E */ s16 unk_39E;
/* 0x03A0 */ char unk_3A0[0x4];
/* 0x03A4 */ Vec3f unk_3A4;
/* 0x03B0 */ Vec3f unk_3B0;
/* 0x03BC */ Vec3f unk_3BC;
/* 0x03C8 */ char unk_3C8[0x48];
/* 0x0410 */ Vec3f unk_410;
/* 0x041C */ f32 unk_41C;
/* 0x0420 */ f32 unk_420;
/* 0x0424 */ ColliderJntSph unk_424;
/* 0x0444 */ ColliderJntSph unk_444;
/* 0x0464 */ ColliderJntSphElement unk_464[16];
/* 0x0864 */ ColliderJntSphElement unk_864[2];
} BossGanon2; // size = 0x08E4
extern const ActorInit Boss_Ganon2_InitVars;

View file

@ -0,0 +1,360 @@
#include "z_boss_ganon2.h"
#include "overlays/actors/ovl_En_Zl3/z_en_zl3.h"
// object_ganon2
extern u64 D_0601E188[]; // eye open
extern u64 D_0601E988[]; // eye half closed
extern u64 D_0601EA08[]; // eye closed
typedef struct {
/* 0x00 */ u8 type;
/* 0x01 */ u8 unk_01;
/* 0x04 */ Vec3f position;
/* 0x10 */ Vec3f velocity;
/* 0x1C */ Vec3f accel;
/* 0x28 */ char unk_28[0x6];
/* 0x2E */ s16 unk_2E;
/* 0x30 */ char unk_30[0x4];
/* 0x34 */ f32 scale;
/* 0x38 */ Vec3f unk_38;
} BossGanon2Effect; // size = 0x44
static Vec3f D_80906D60 = { 0.0f, 0.0f, 0.0f };
static Vec3f D_80906D6C = { 0.0f, 0.0f, 500.0f };
static u8 D_80906D78 = 0;
static ColliderJntSphElementInit sJntSphItemsInit1[] = {
{
{
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
OCELEM_ON,
},
{ 0, { { 0, 0, 0 }, 30 }, 100 },
},
{
{
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
OCELEM_ON,
},
{ 1, { { 0, 0, 0 }, 30 }, 100 },
},
{
{
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
OCELEM_ON,
},
{ 2, { { 0, 0, 0 }, 30 }, 100 },
},
{
{
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
OCELEM_ON,
},
{ 3, { { 0, 0, 0 }, 20 }, 100 },
},
{
{
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
OCELEM_ON,
},
{ 4, { { 0, 0, 0 }, 20 }, 100 },
},
{
{
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
OCELEM_ON,
},
{ 5, { { 0, 0, 0 }, 20 }, 100 },
},
{
{
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
OCELEM_ON,
},
{ 6, { { 0, 0, 0 }, 20 }, 100 },
},
{
{
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
OCELEM_ON,
},
{ 7, { { 0, 0, 0 }, 20 }, 100 },
},
{
{
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
OCELEM_ON,
},
{ 8, { { 0, 0, 0 }, 20 }, 100 },
},
{
{
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
OCELEM_ON,
},
{ 9, { { 0, 0, 0 }, 20 }, 100 },
},
{
{
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
OCELEM_ON,
},
{ 10, { { 0, 0, 0 }, 20 }, 100 },
},
{
{
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
OCELEM_ON,
},
{ 11, { { 0, 0, 0 }, 20 }, 100 },
},
{
{
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
OCELEM_ON,
},
{ 12, { { 0, 0, 0 }, 20 }, 100 },
},
{
{
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
OCELEM_ON,
},
{ 13, { { 0, 0, 0 }, 20 }, 100 },
},
{
{
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x10 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
OCELEM_ON,
},
{ 14, { { 0, 0, 0 }, 20 }, 100 },
},
{
{
ELEMTYPE_UNK0,
{ 0xFFCFFFFF, 0x00, 0x00 },
{ 0xFFCFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
OCELEM_ON,
},
{ 15, { { 0, 0, 0 }, 30 }, 100 },
},
};
static ColliderJntSphInit sJntSphInit1 = {
{
COLTYPE_METAL,
AT_ON | AT_TYPE_ENEMY,
AC_ON | AC_TYPE_PLAYER,
OC1_ON | OC1_TYPE_PLAYER,
OC2_FIRST_ONLY | OC2_TYPE_1,
COLSHAPE_JNTSPH,
},
ARRAY_COUNT(sJntSphItemsInit1),
sJntSphItemsInit1,
};
static ColliderJntSphElementInit sJntSphItemsInit2[] = {
{
{
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x40 },
{ 0xFFDFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
OCELEM_ON,
},
{ 15, { { 0, 0, 0 }, 45 }, 100 },
},
{
{
ELEMTYPE_UNK2,
{ 0xFFCFFFFF, 0x00, 0x40 },
{ 0xFFDFFFFF, 0x00, 0x00 },
TOUCH_ON | TOUCH_SFX_NORMAL,
BUMP_ON,
OCELEM_ON,
},
{ 16, { { 0, 0, 0 }, 45 }, 100 },
},
};
static ColliderJntSphInit sJntSphInit2 = {
{
COLTYPE_METAL,
AT_ON | AT_TYPE_ENEMY,
AC_ON | AC_TYPE_PLAYER,
OC1_ON | OC1_TYPE_PLAYER,
OC2_TYPE_1,
COLSHAPE_JNTSPH,
},
ARRAY_COUNT(sJntSphItemsInit2),
sJntSphItemsInit2,
};
static Color_RGBA8 sPrimColor = { 0, 120, 0, 255 };
static Color_RGBA8 sEnvColor = { 0, 120, 0, 255 };
static Vec3f D_8090702C[] = {
{ 10.0f, -10.0f, 0.0f },
{ 0.0f, 0.0f, -60.0f },
{ 70.0f, -30.0f, 10.0f },
};
static Vec3f D_80907050[] = {
{ -20.0f, 0.0f, 0.0f },
{ -15.0f, 0.0f, 10.0f },
{ -16.0f, -12.0f, 40.0f },
};
static s16 D_80907074[] = { 0, 1, 2, 2, 1, 0 };
static s16 D_80907080 = 0;
static u8 D_80907084[] = { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 };
static u8 D_80907090[] = { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21 };
static s8 D_8090709C[] = {
0xFF, 0xFF, 0x01, 0xFF, 0x03, 0x04, 0xFF, 0xFF, 0x05, 0xFF, 0x06, 0x07, 0xFF, 0xFF, 0x08, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0xFF, 0xFF, 0x02, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0x00,
};
static s8 D_809070CC[] = {
0xFF, 0xFF, 0x01, 0xFF, 0x03, 0x04, 0xFF, 0xFF, 0x05, 0xFF, 0x06, 0x07, 0xFF, 0xFF, 0x08, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0xFF, 0xFF, 0x02, 0x0C, 0x0D, 0x0E, 0x09, 0x0A, 0x0B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
};
static Vec3f D_809070FC = { 0.0f, 0.0f, 5000.0f };
static Vec3f D_80907108 = { 0.0f, 2000.0f, 0.0f };
static Vec3f D_80907114 = { 0.0f, 2000.0f, 0.0f };
static Vec3f D_80907120 = { 0.0f, 0.0f, 17000.0f };
static Vec3f D_8090712C = { 0.0f, 0.0f, 3000.0f };
static Vec3f D_80907138 = { 0.0f, 0.0f, 0.0f };
static s8 D_80907144[] = {
0xFF, 0xFF, 0x01, 0xFF, 0x03, 0x04, 0x05, 0xFF, 0x06, 0x07, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x02, 0x0C, 0x0D, 0x0E, 0x09, 0x0A, 0x0B, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
};
static Vec3f D_80907164 = { 800.0f, 420.0f, 100.0f };
static void* sEyeTextures[] = {
D_0601E188,
D_0601E988,
D_0601EA08,
};
static Vec3f D_8090717C = { 0.0f, -2000.0f, 0.0f };
static s16 D_80907188[] = { 1, 2, 3, 3, 2, 1 };
static s16 D_80907194[] = { 2, 3, 4, 4, 4, 3, 2 };
static s16 D_809071A4[] = { 2, 3, 4, 4, 4, 4, 3, 2 };
static s16 D_809071B4[] = { 2, 4, 5, 5, 6, 6, 6, 6, 5, 5, 4, 2 };
static s16 D_809071CC[] = { 1, -1, 1, 1, 3, 4, 1, 6, 7, 2, 9, 10, 2, 12, 13 };
static u8 D_809071EC[] = { 3, 2, 2, 1, 3, 3, 1, 3, 3, 1, 0, 3, 1, 0, 3 };
// padding
static u32 D_809071FC[2] = { 0 };
#include "overlays/ovl_Boss_Ganon2/ovl_Boss_Ganon2.c"
static Vec3f D_8090EB20;
static EnZl3* sZelda;
static Actor* D_8090EB30;
// unused
static UNK_TYPE D_8090EB34;
static BossGanon2Effect sParticles[100];
static s32 sSeed1;
static s32 sSeed2;
static s32 sSeed3;
// unused
static UNK_TYPE D_809105DC;
static Vec3f D_809105D8[4];
static Vec3f D_80910608[4];
static s8 D_80910638;

View file

@ -175,7 +175,6 @@ void func_80AF8F60(Player* player, u8* shadowTexture, f32 arg2) {
Vec3f sp7C;
for (i = 0; i < 16; i++) {
//! @bug j is not initialized if arg2 == 0.0f, causing undefined behavior.
if ((arg2 == 0.0f) || ((j = D_80AFA13C[i]) >= 0)) {
if (arg2 > 0.0f) {
lerp.x = D_80AFA660[i].x + (D_80AFA660[j].x - D_80AFA660[i].x) * arg2;