1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-08-29 18:31:19 +00:00

wip: New assets system tm

Builds gc-eu-mq-dbg OK from clean after
1) make setup
2) python3 -m tools.assets.extract -j
3) replace 0x80A8E610 with sShadowTex in extracted/gc-eu-mq-dbg/assets/overlays/ovl_En_Jsjutan/sShadowMaterialDL.inc.c
4) make various symbols in extracted data like sTex static
This commit is contained in:
Dragorn421 2025-02-05 16:31:29 +01:00
parent 748859595a
commit 8411c34b38
No known key found for this signature in database
GPG key ID: 381AEBAF3D429335
80 changed files with 535882 additions and 112 deletions

View file

@ -93,7 +93,7 @@ void EnArrow_Init(Actor* thisx, PlayState* play) {
if (this->actor.params <= ARROW_SEED) {
if (this->actor.params <= ARROW_0E) {
SkelAnime_Init(play, &this->skelAnime, &gArrowSkel, &gArrow2Anim, NULL, NULL, 0);
SkelAnime_Init(play, &this->skelAnime, (void*)&gArrowSkel, &gArrow2Anim, NULL, NULL, 0);
}
if (this->actor.params <= ARROW_NORMAL) {

View file

@ -5,6 +5,26 @@
#include "global.h"
#include "assets/objects/object_cow/object_cow.h"
typedef enum CowLimb {
/* 0x00 */ COW_LIMB_NONE,
/* 0x01 */ COW_LIMB_ROOT,
/* 0x02 */ COW_LIMB_HEAD,
/* 0x03 */ COW_LIMB_JAW,
/* 0x04 */ COW_LIMB_NOSE,
/* 0x05 */ COW_LIMB_NOSE_RING,
/* 0x06 */ COW_LIMB_MAX
} CowLimb;
typedef enum CowTailLimb {
/* 0x00 */ COW_TAIL_LIMB_NONE,
/* 0x01 */ COW_TAIL_LIMB_ROOT,
/* 0x02 */ COW_TAIL_LIMB_UPPER,
/* 0x03 */ COW_TAIL_LIMB_MIDDLE,
/* 0x04 */ COW_TAIL_LIMB_LOWER,
/* 0x05 */ COW_TAIL_LIMB_END,
/* 0x06 */ COW_TAIL_LIMB_MAX
} CowTailLimb;
#define COW_FLAG_PLAYER_NEARBY (1 << 1)
#define COW_FLAG_FAILED_TO_GIVE_MILK (1 << 2)

View file

@ -5,6 +5,28 @@
#include "global.h"
#include "assets/objects/object_shopnuts/object_shopnuts.h"
typedef enum BusinessScrubLimb {
/* 0x00 */ BUSINESS_SCRUB_LIMB_NONE,
/* 0x01 */ BUSINESS_SCRUB_LIMB_ROOT,
/* 0x02 */ BUSINESS_SCRUB_LIMB_LEFT_THIGH,
/* 0x03 */ BUSINESS_SCRUB_LIMB_LEFT_SHIN,
/* 0x04 */ BUSINESS_SCRUB_LIMB_LEFT_FOOT,
/* 0x05 */ BUSINESS_SCRUB_LIMB_RIGHT_THIGH,
/* 0x06 */ BUSINESS_SCRUB_LIMB_RIGHT_SHIN,
/* 0x07 */ BUSINESS_SCRUB_LIMB_RIGHT_FOOT,
/* 0x08 */ BUSINESS_SCRUB_LIMB_TOP_LEAF,
/* 0x09 */ BUSINESS_SCRUB_LIMB_NOSE,
/* 0x0A */ BUSINESS_SCRUB_LIMB_LEFT_UPPER_ARM,
/* 0x0B */ BUSINESS_SCRUB_LIMB_LEFT_FOREARM,
/* 0x0C */ BUSINESS_SCRUB_LIMB_LEFT_HAND,
/* 0x0D */ BUSINESS_SCRUB_LIMB_RIGHT_UPPER_ARM,
/* 0x0E */ BUSINESS_SCRUB_LIMB_RIGHT_FOREARM,
/* 0x0F */ BUSINESS_SCRUB_LIMB_RIGHT_HAND,
/* 0x10 */ BUSINESS_SCRUB_LIMB_EYES,
/* 0x11 */ BUSINESS_SCRUB_LIMB_BODY,
/* 0x12 */ BUSINESS_SCRUB_LIMB_MAX
} BusinessScrubLimb;
#define DNS_GET_TYPE(thisx) ((thisx)->params)
typedef enum EnDnsType {

View file

@ -67,7 +67,7 @@ static AnimationHeader** sAnimationHeaders[] = { sEponaAnimHeaders, sHniAnimHead
static f32 sPlaybackSpeeds[] = { 2.0f / 3.0f, 2.0f / 3.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 2.0f / 3.0f, 2.0f / 3.0f };
static SkeletonHeader* sSkeletonHeaders[] = { &gEponaSkel, &gHorseIngoSkel };
static SkeletonHeader* sSkeletonHeaders[] = { (void*)&gEponaSkel, (void*)&gHorseIngoSkel };
ActorProfile En_Horse_Profile = {
/**/ ACTOR_EN_HORSE,

View file

@ -177,7 +177,7 @@ void EnHorseGanon_Init(Actor* thisx, PlayState* play) {
this->actor.focus.pos = this->actor.world.pos;
this->action = 0;
this->actor.focus.pos.y += 70.0f;
Skin_Init(play, &this->skin, &gHorseGanonSkel, &gHorseGanonIdleAnim);
Skin_Init(play, &this->skin, (void*)&gHorseGanonSkel, &gHorseGanonIdleAnim);
this->currentAnimation = 0;
Animation_PlayOnce(&this->skin.skelAnime, sAnimations[0]);

View file

@ -162,7 +162,7 @@ void EnHorseLinkChild_Init(Actor* thisx, PlayState* play) {
this->action = 1;
this->actor.focus.pos = this->actor.world.pos;
this->actor.focus.pos.y += 70.0f;
Skin_Init(play, &this->skin, &gChildEponaSkel, &gChildEponaGallopingAnim);
Skin_Init(play, &this->skin, (void*)&gChildEponaSkel, &gChildEponaGallopingAnim);
this->animationIdx = 0;
Animation_PlayOnce(&this->skin.skelAnime, sAnimations[0]);
Collider_InitCylinder(play, &this->bodyCollider);

View file

@ -226,7 +226,7 @@ void EnHorseNormal_Init(Actor* thisx, PlayState* play) {
return;
}
this->actor.home.rot.z = this->actor.world.rot.z = this->actor.shape.rot.z = 0;
Skin_Init(play, &this->skin, &gHorseNormalSkel, &gHorseNormalIdleAnim);
Skin_Init(play, &this->skin, (void*)&gHorseNormalSkel, &gHorseNormalIdleAnim);
Animation_PlayOnce(&this->skin.skelAnime, sAnimations[this->animationIdx]);
if ((this->actor.world.pos.x == -730.0f && this->actor.world.pos.y == 0.0f &&
this->actor.world.pos.z == -1100.0f) ||
@ -240,7 +240,7 @@ void EnHorseNormal_Init(Actor* thisx, PlayState* play) {
Actor_Kill(&this->actor);
return;
} else {
Skin_Init(play, &this->skin, &gHorseNormalSkel, &gHorseNormalIdleAnim);
Skin_Init(play, &this->skin, (void*)&gHorseNormalSkel, &gHorseNormalIdleAnim);
Animation_PlayOnce(&this->skin.skelAnime, sAnimations[this->animationIdx]);
func_80A6C6B0(this);
return;
@ -248,15 +248,15 @@ void EnHorseNormal_Init(Actor* thisx, PlayState* play) {
} else if (play->sceneId == SCENE_GERUDOS_FORTRESS) {
if (this->actor.world.pos.x == 3707.0f && this->actor.world.pos.y == 1413.0f &&
this->actor.world.pos.z == -665.0f) {
Skin_Init(play, &this->skin, &gHorseNormalSkel, &gHorseNormalIdleAnim);
Skin_Init(play, &this->skin, (void*)&gHorseNormalSkel, &gHorseNormalIdleAnim);
Animation_PlayOnce(&this->skin.skelAnime, sAnimations[this->animationIdx]);
func_80A6C4CC(this);
return;
}
Skin_Init(play, &this->skin, &gHorseNormalSkel, &gHorseNormalIdleAnim);
Skin_Init(play, &this->skin, (void*)&gHorseNormalSkel, &gHorseNormalIdleAnim);
Animation_PlayOnce(&this->skin.skelAnime, sAnimations[this->animationIdx]);
} else {
Skin_Init(play, &this->skin, &gHorseNormalSkel, &gHorseNormalIdleAnim);
Skin_Init(play, &this->skin, (void*)&gHorseNormalSkel, &gHorseNormalIdleAnim);
Animation_PlayOnce(&this->skin.skelAnime, sAnimations[this->animationIdx]);
}
if (PARAMS_GET_NOSHIFT(this->actor.params, 4, 4) == 0x10 && PARAMS_GET_U(this->actor.params, 0, 4) != 0xF) {

View file

@ -158,7 +158,7 @@ void EnHorseZelda_Init(Actor* thisx, PlayState* play) {
this->actor.focus.pos = this->actor.world.pos;
this->action = 0;
this->actor.focus.pos.y += 70.0f;
Skin_Init(play, &this->skin, &gHorseZeldaSkel, &gHorseZeldaGallopingAnim);
Skin_Init(play, &this->skin, (void*)&gHorseZeldaSkel, &gHorseZeldaGallopingAnim);
this->animationIndex = 0;
Animation_PlayOnce(&this->skin.skelAnime, sAnimationHeaders[0]);
Collider_InitCylinder(play, &this->colliderCylinder);

View file

@ -7,6 +7,29 @@
#include "z_en_ma1.h"
#include "assets/objects/object_ma1/object_ma1.h"
typedef enum ChildMalonLimb {
/* 0x00 */ CHILD_MALON_LIMB_NONE,
/* 0x01 */ CHILD_MALON_ROOT,
/* 0x02 */ CHILD_MALON_LIMB_LEFT_THIGH,
/* 0x03 */ CHILD_MALON_LIMB_LEFT_SHIN,
/* 0x04 */ CHILD_MALON_LIMB_LEFT_FOOT,
/* 0x05 */ CHILD_MALON_LIMB_RIGHT_THIGH,
/* 0x06 */ CHILD_MALON_LIMB_RIGHT_SHIN,
/* 0x07 */ CHILD_MALON_LIMB_RIGHT_FOOT,
/* 0x08 */ CHILD_MALON_LIMB_CHEST,
/* 0x09 */ CHILD_MALON_LIMB_LEFT_SHOULDER,
/* 0x0A */ CHILD_MALON_LIMB_LEFT_ARM,
/* 0x0B */ CHILD_MALON_LIMB_LEFT_HAND,
/* 0x0C */ CHILD_MALON_LIMB_RIGHT_SHOULDER,
/* 0x0D */ CHILD_MALON_LIMB_RIGHT_ARM,
/* 0x0E */ CHILD_MALON_LIMB_RIGHT_HAND,
/* 0x0F */ CHILD_MALON_LIMB_HEAD,
/* 0x10 */ CHILD_MALON_LIMB_DRESS_UPPER,
/* 0x11 */ CHILD_MALON_LIMB_DRESS_MIDDLE,
/* 0x12 */ CHILD_MALON_LIMB_DRESS_LOWER,
/* 0x13 */ CHILD_MALON_LIMB_MAX
} ChildMalonLimb;
#define FLAGS \
(ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \
ACTOR_FLAG_DRAW_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA)

View file

@ -102,7 +102,7 @@ void EnTorch2_Init(Actor* thisx, PlayState* play2) {
this->currentShield = PLAYER_SHIELD_HYLIAN;
this->heldItemAction = this->heldItemId = PLAYER_IA_SWORD_MASTER;
Player_SetModelGroup(this, PLAYER_MODELGROUP_SWORD_AND_SHIELD);
play->playerInit(this, play, &gDarkLinkSkel);
play->playerInit(this, play, (void*)&gDarkLinkSkel); //! FIXME
this->actor.naviEnemyId = NAVI_ENEMY_DARK_LINK;
this->cylinder.base.acFlags = AC_ON | AC_TYPE_PLAYER;
this->meleeWeaponQuads[0].base.atFlags = this->meleeWeaponQuads[1].base.atFlags = AT_ON | AT_TYPE_ENEMY;

View file

@ -80,7 +80,7 @@ void EnfHG_Init(Actor* thisx, PlayState* play2) {
this->actor.speed = 0.0f;
this->actor.focus.pos = this->actor.world.pos;
this->actor.focus.pos.y += 70.0f;
Skin_Init(play, &this->skin, &gPhantomHorseSkel, &gPhantomHorseRunningAnim);
Skin_Init(play, &this->skin, (void*)&gPhantomHorseSkel, &gPhantomHorseRunningAnim);
if (this->actor.params >= GND_FAKE_BOSS) {
EnfHG_SetupApproach(this, play, this->actor.params - GND_FAKE_BOSS);