mirror of
https://github.com/zeldaret/oot.git
synced 2024-12-27 07:07:09 +00:00
Documentation pass centered on z_player_lib (#1230)
This commit is contained in:
parent
e68f321777
commit
d39ce02458
6 changed files with 220 additions and 191 deletions
|
@ -73,10 +73,10 @@ extern s16 gSpoilingItems[3];
|
|||
extern s16 gSpoilingItemReverts[3];
|
||||
extern FlexSkeletonHeader* gPlayerSkelHeaders[2];
|
||||
extern u8 gPlayerModelTypes[PLAYER_MODELGROUP_MAX][PLAYER_MODELGROUPENTRY_MAX];
|
||||
extern Gfx* D_80125DE8[];
|
||||
extern Gfx* D_80125E08[];
|
||||
extern Gfx* D_80125E18[];
|
||||
extern Gfx* D_80125EF8[];
|
||||
extern Gfx* gPlayerLeftHandBgsDLs[];
|
||||
extern Gfx* gPlayerLeftHandOpenDLs[];
|
||||
extern Gfx* gPlayerLeftHandClosedDLs[];
|
||||
extern Gfx* gPlayerLeftHandBoomerangDLs[];
|
||||
extern Gfx gCullBackDList[];
|
||||
extern Gfx gCullFrontDList[];
|
||||
extern Gfx gEmptyDL[];
|
||||
|
|
|
@ -254,7 +254,7 @@ typedef enum {
|
|||
/* 0x00 */ PLAYER_MODELTYPE_LH_OPEN, // empty open hand
|
||||
/* 0x01 */ PLAYER_MODELTYPE_LH_CLOSED, // empty closed hand
|
||||
/* 0x02 */ PLAYER_MODELTYPE_LH_SWORD, // holding kokiri/master sword
|
||||
/* 0x03 */ PLAYER_MODELTYPE_3, // unused, same as PLAYER_MODELTYPE_LH_SWORD
|
||||
/* 0x03 */ PLAYER_MODELTYPE_LH_SWORD_2, // unused, same as PLAYER_MODELTYPE_LH_SWORD
|
||||
/* 0x04 */ PLAYER_MODELTYPE_LH_BGS, // holding bgs/broken giant knife (child: master sword)
|
||||
/* 0x05 */ PLAYER_MODELTYPE_LH_HAMMER, // holding hammer (child: empty hand)
|
||||
/* 0x06 */ PLAYER_MODELTYPE_LH_BOOMERANG, // holding boomerang (adult: empty hand)
|
||||
|
@ -264,7 +264,7 @@ typedef enum {
|
|||
/* 0x09 */ PLAYER_MODELTYPE_RH_CLOSED, // empty closed hand
|
||||
/* 0x0A */ PLAYER_MODELTYPE_RH_SHIELD, // holding a shield (including no shield)
|
||||
/* 0x0B */ PLAYER_MODELTYPE_RH_BOW_SLINGSHOT, // holding bow/slingshot
|
||||
/* 0x0C */ PLAYER_MODELTYPE_12, // unused, same as PLAYER_MODELTYPE_RH_BOW_SLINGSHOT
|
||||
/* 0x0C */ PLAYER_MODELTYPE_RH_BOW_SLINGSHOT_2, // unused, same as PLAYER_MODELTYPE_RH_BOW_SLINGSHOT
|
||||
/* 0x0D */ PLAYER_MODELTYPE_RH_OCARINA, // holding ocarina (child: fairy ocarina, adult: OoT)
|
||||
/* 0x0E */ PLAYER_MODELTYPE_RH_OOT, // holding OoT
|
||||
/* 0x0F */ PLAYER_MODELTYPE_RH_HOOKSHOT, // holding hookshot (child: empty hand)
|
||||
|
|
|
@ -101,7 +101,7 @@ typedef struct {
|
|||
|
||||
typedef struct {
|
||||
/* 0x0000 */ s32 entranceIndex; // start of `save` substruct, originally called "memory"
|
||||
/* 0x0004 */ s32 linkAge;
|
||||
/* 0x0004 */ s32 linkAge; // 0: Adult; 1: Child (see enum `LinkAge`)
|
||||
/* 0x0008 */ s32 cutsceneIndex;
|
||||
/* 0x000C */ u16 dayTime; // "zelda_time"
|
||||
/* 0x0010 */ s32 nightFlag;
|
||||
|
|
|
@ -9,9 +9,9 @@ typedef struct {
|
|||
} TextTriggerEntry; // size = 0x04
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ void* dList;
|
||||
/* 0x00 */ Gfx* dList;
|
||||
/* 0x04 */ Vec3f pos;
|
||||
} BowStringData; // size = 0x10
|
||||
} BowSlingshotStringData; // size = 0x10
|
||||
|
||||
FlexSkeletonHeader* gPlayerSkelHeaders[] = { &gLinkAdultSkel, &gLinkChildSkel };
|
||||
|
||||
|
@ -26,73 +26,73 @@ s16 sBootData[PLAYER_BOOTS_MAX][17] = {
|
|||
|
||||
// Used to map action params to model groups
|
||||
u8 sActionModelGroups[PLAYER_AP_MAX] = {
|
||||
/* PLAYER_AP_NONE */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_LAST_USED */ PLAYER_MODELGROUP_15,
|
||||
/* PLAYER_AP_FISHING_POLE */ PLAYER_MODELGROUP_10,
|
||||
/* PLAYER_AP_SWORD_MASTER */ PLAYER_MODELGROUP_SWORD,
|
||||
/* PLAYER_AP_SWORD_KOKIRI */ PLAYER_MODELGROUP_SWORD,
|
||||
/* PLAYER_AP_SWORD_BGS */ PLAYER_MODELGROUP_BGS,
|
||||
/* PLAYER_AP_STICK */ PLAYER_MODELGROUP_10,
|
||||
/* PLAYER_AP_HAMMER */ PLAYER_MODELGROUP_HAMMER,
|
||||
/* PLAYER_AP_BOW */ PLAYER_MODELGROUP_BOW_SLINGSHOT,
|
||||
/* PLAYER_AP_BOW_FIRE */ PLAYER_MODELGROUP_BOW_SLINGSHOT,
|
||||
/* PLAYER_AP_BOW_ICE */ PLAYER_MODELGROUP_BOW_SLINGSHOT,
|
||||
/* PLAYER_AP_BOW_LIGHT */ PLAYER_MODELGROUP_BOW_SLINGSHOT,
|
||||
/* PLAYER_AP_BOW_0C */ PLAYER_MODELGROUP_BOW_SLINGSHOT,
|
||||
/* PLAYER_AP_BOW_0D */ PLAYER_MODELGROUP_BOW_SLINGSHOT,
|
||||
/* PLAYER_AP_BOW_0E */ PLAYER_MODELGROUP_BOW_SLINGSHOT,
|
||||
/* PLAYER_AP_SLINGSHOT */ PLAYER_MODELGROUP_BOW_SLINGSHOT,
|
||||
/* PLAYER_AP_HOOKSHOT */ PLAYER_MODELGROUP_HOOKSHOT,
|
||||
/* PLAYER_AP_LONGSHOT */ PLAYER_MODELGROUP_HOOKSHOT,
|
||||
/* PLAYER_AP_BOMB */ PLAYER_MODELGROUP_EXPLOSIVES,
|
||||
/* PLAYER_AP_BOMBCHU */ PLAYER_MODELGROUP_EXPLOSIVES,
|
||||
/* PLAYER_AP_BOOMERANG */ PLAYER_MODELGROUP_BOOMERANG,
|
||||
/* PLAYER_AP_MAGIC_SPELL_15 */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_MAGIC_SPELL_16 */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_MAGIC_SPELL_17 */ PLAYER_MODELGROUP_BOW_SLINGSHOT,
|
||||
/* PLAYER_AP_FARORES_WIND */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_NAYRUS_LOVE */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_DINS_FIRE */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_NUT */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_OCARINA_FAIRY */ PLAYER_MODELGROUP_OCARINA,
|
||||
/* PLAYER_AP_OCARINA_TIME */ PLAYER_MODELGROUP_OOT,
|
||||
/* PLAYER_AP_BOTTLE */ PLAYER_MODELGROUP_BOTTLE,
|
||||
/* PLAYER_AP_BOTTLE_FISH */ PLAYER_MODELGROUP_BOTTLE,
|
||||
/* PLAYER_AP_BOTTLE_FIRE */ PLAYER_MODELGROUP_BOTTLE,
|
||||
/* PLAYER_AP_BOTTLE_BUG */ PLAYER_MODELGROUP_BOTTLE,
|
||||
/* PLAYER_AP_BOTTLE_POE */ PLAYER_MODELGROUP_BOTTLE,
|
||||
/* PLAYER_AP_BOTTLE_BIG_POE */ PLAYER_MODELGROUP_BOTTLE,
|
||||
/* PLAYER_AP_BOTTLE_LETTER */ PLAYER_MODELGROUP_BOTTLE,
|
||||
/* PLAYER_AP_BOTTLE_POTION_RED */ PLAYER_MODELGROUP_BOTTLE,
|
||||
/* PLAYER_AP_BOTTLE_POTION_BLUE */ PLAYER_MODELGROUP_BOTTLE,
|
||||
/* PLAYER_AP_BOTTLE_POTION_GREEN */ PLAYER_MODELGROUP_BOTTLE,
|
||||
/* PLAYER_AP_BOTTLE_MILK */ PLAYER_MODELGROUP_BOTTLE,
|
||||
/* PLAYER_AP_BOTTLE_MILK_HALF */ PLAYER_MODELGROUP_BOTTLE,
|
||||
/* PLAYER_AP_BOTTLE_FAIRY */ PLAYER_MODELGROUP_BOTTLE,
|
||||
/* PLAYER_AP_LETTER_ZELDA */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_WEIRD_EGG */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_CHICKEN */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_BEAN */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_POCKET_EGG */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_POCKET_CUCCO */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_COJIRO */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_ODD_MUSHROOM */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_ODD_POTION */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_SAW */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_SWORD_BROKEN */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_PRESCRIPTION */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_FROG */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_EYEDROPS */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_CLAIM_CHECK */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_MASK_KEATON */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_MASK_SKULL */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_MASK_SPOOKY */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_MASK_BUNNY */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_MASK_GORON */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_MASK_ZORA */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_MASK_GERUDO */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_MASK_TRUTH */ PLAYER_MODELGROUP_DEFAULT,
|
||||
/* PLAYER_AP_LENS */ PLAYER_MODELGROUP_DEFAULT,
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_NONE
|
||||
PLAYER_MODELGROUP_15, // PLAYER_AP_LAST_USED
|
||||
PLAYER_MODELGROUP_10, // PLAYER_AP_FISHING_POLE
|
||||
PLAYER_MODELGROUP_SWORD, // PLAYER_AP_SWORD_MASTER
|
||||
PLAYER_MODELGROUP_SWORD, // PLAYER_AP_SWORD_KOKIRI
|
||||
PLAYER_MODELGROUP_BGS, // PLAYER_AP_SWORD_BGS
|
||||
PLAYER_MODELGROUP_10, // PLAYER_AP_STICK
|
||||
PLAYER_MODELGROUP_HAMMER, // PLAYER_AP_HAMMER
|
||||
PLAYER_MODELGROUP_BOW_SLINGSHOT, // PLAYER_AP_BOW
|
||||
PLAYER_MODELGROUP_BOW_SLINGSHOT, // PLAYER_AP_BOW_FIRE
|
||||
PLAYER_MODELGROUP_BOW_SLINGSHOT, // PLAYER_AP_BOW_ICE
|
||||
PLAYER_MODELGROUP_BOW_SLINGSHOT, // PLAYER_AP_BOW_LIGHT
|
||||
PLAYER_MODELGROUP_BOW_SLINGSHOT, // PLAYER_AP_BOW_0C
|
||||
PLAYER_MODELGROUP_BOW_SLINGSHOT, // PLAYER_AP_BOW_0D
|
||||
PLAYER_MODELGROUP_BOW_SLINGSHOT, // PLAYER_AP_BOW_0E
|
||||
PLAYER_MODELGROUP_BOW_SLINGSHOT, // PLAYER_AP_SLINGSHOT
|
||||
PLAYER_MODELGROUP_HOOKSHOT, // PLAYER_AP_HOOKSHOT
|
||||
PLAYER_MODELGROUP_HOOKSHOT, // PLAYER_AP_LONGSHOT
|
||||
PLAYER_MODELGROUP_EXPLOSIVES, // PLAYER_AP_BOMB
|
||||
PLAYER_MODELGROUP_EXPLOSIVES, // PLAYER_AP_BOMBCHU
|
||||
PLAYER_MODELGROUP_BOOMERANG, // PLAYER_AP_BOOMERANG
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MAGIC_SPELL_15
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MAGIC_SPELL_16
|
||||
PLAYER_MODELGROUP_BOW_SLINGSHOT, // PLAYER_AP_MAGIC_SPELL_17
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_FARORES_WIND
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_NAYRUS_LOVE
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_DINS_FIRE
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_NUT
|
||||
PLAYER_MODELGROUP_OCARINA, // PLAYER_AP_OCARINA_FAIRY
|
||||
PLAYER_MODELGROUP_OOT, // PLAYER_AP_OCARINA_TIME
|
||||
PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE
|
||||
PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_FISH
|
||||
PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_FIRE
|
||||
PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_BUG
|
||||
PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_POE
|
||||
PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_BIG_POE
|
||||
PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_LETTER
|
||||
PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_POTION_RED
|
||||
PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_POTION_BLUE
|
||||
PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_POTION_GREEN
|
||||
PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_MILK
|
||||
PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_MILK_HALF
|
||||
PLAYER_MODELGROUP_BOTTLE, // PLAYER_AP_BOTTLE_FAIRY
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_LETTER_ZELDA
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_WEIRD_EGG
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_CHICKEN
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_BEAN
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_POCKET_EGG
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_POCKET_CUCCO
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_COJIRO
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_ODD_MUSHROOM
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_ODD_POTION
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_SAW
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_SWORD_BROKEN
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_PRESCRIPTION
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_FROG
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_EYEDROPS
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_CLAIM_CHECK
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_KEATON
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_SKULL
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_SPOOKY
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_BUNNY
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_GORON
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_ZORA
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_GERUDO
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_MASK_TRUTH
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_AP_LENS
|
||||
};
|
||||
|
||||
TextTriggerEntry sTextTriggers[] = {
|
||||
|
@ -154,7 +154,7 @@ u8 gPlayerModelTypes[PLAYER_MODELGROUP_MAX][PLAYER_MODELGROUPENTRY_MAX] = {
|
|||
PLAYER_MODELTYPE_WAIST },
|
||||
};
|
||||
|
||||
Gfx* D_80125CE8[PLAYER_SHIELD_MAX * 4] = {
|
||||
Gfx* sPlayerRightHandShieldDLs[PLAYER_SHIELD_MAX * 4] = {
|
||||
// PLAYER_SHIELD_NONE
|
||||
gLinkAdultRightHandClosedNearDL,
|
||||
gLinkChildRightHandClosedNearDL,
|
||||
|
@ -177,7 +177,7 @@ Gfx* D_80125CE8[PLAYER_SHIELD_MAX * 4] = {
|
|||
gLinkChildRightHandClosedFarDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125D28[PLAYER_SHIELD_MAX * 4] = {
|
||||
Gfx* D_80125D28[(PLAYER_SHIELD_MAX + 2) * 4] = {
|
||||
// PLAYER_SHIELD_NONE
|
||||
gLinkAdultMasterSwordAndSheathNearDL,
|
||||
gLinkChildSwordAndSheathNearDL,
|
||||
|
@ -198,10 +198,16 @@ Gfx* D_80125D28[PLAYER_SHIELD_MAX * 4] = {
|
|||
gLinkChildSwordAndSheathNearDL,
|
||||
gLinkAdultMirrorShieldSwordAndSheathFarDL,
|
||||
gLinkChildSwordAndSheathFarDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125D68[] = {
|
||||
NULL, NULL, NULL, NULL, NULL, gLinkChildDekuShieldWithMatrixDL, NULL, gLinkChildDekuShieldWithMatrixDL,
|
||||
// PLAYER_SHIELD_NONE (child, no sword)
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
// PLAYER_SHIELD_DEKU (child, no sword)
|
||||
NULL,
|
||||
gLinkChildDekuShieldWithMatrixDL,
|
||||
NULL,
|
||||
gLinkChildDekuShieldWithMatrixDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125D88[(PLAYER_SHIELD_MAX + 2) * 4] = {
|
||||
|
@ -237,7 +243,7 @@ Gfx* D_80125D88[(PLAYER_SHIELD_MAX + 2) * 4] = {
|
|||
gLinkChildDekuShieldWithMatrixDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125DE8[] = {
|
||||
Gfx* gPlayerLeftHandBgsDLs[] = {
|
||||
// biggoron sword
|
||||
gLinkAdultLeftHandHoldingBgsNearDL,
|
||||
gLinkChildLeftHandHoldingMasterSwordDL,
|
||||
|
@ -250,49 +256,50 @@ Gfx* D_80125DE8[] = {
|
|||
gLinkChildLeftHandHoldingMasterSwordDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125E08[] = {
|
||||
Gfx* gPlayerLeftHandOpenDLs[] = {
|
||||
gLinkAdultLeftHandNearDL,
|
||||
gLinkChildLeftHandNearDL,
|
||||
gLinkAdultLeftHandFarDL,
|
||||
gLinkChildLeftHandFarDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125E18[] = {
|
||||
Gfx* gPlayerLeftHandClosedDLs[] = {
|
||||
gLinkAdultLeftHandClosedNearDL,
|
||||
gLinkChildLeftFistNearDL,
|
||||
gLinkAdultLeftHandClosedFarDL,
|
||||
gLinkChildLeftFistFarDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125E28[] = {
|
||||
// Identical to `sPlayerLeftHandSwordDLs` and unused
|
||||
Gfx* sPlayerLeftHandSwordDLs2[] = {
|
||||
gLinkAdultLeftHandHoldingMasterSwordNearDL,
|
||||
gLinkChildLeftFistAndKokiriSwordNearDL,
|
||||
gLinkAdultLeftHandHoldingMasterSwordFarDL,
|
||||
gLinkChildLeftFistAndKokiriSwordFarDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125E38[] = {
|
||||
Gfx* sPlayerLeftHandSwordDLs[] = {
|
||||
gLinkAdultLeftHandHoldingMasterSwordNearDL,
|
||||
gLinkChildLeftFistAndKokiriSwordNearDL,
|
||||
gLinkAdultLeftHandHoldingMasterSwordFarDL,
|
||||
gLinkChildLeftFistAndKokiriSwordFarDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125E48[] = {
|
||||
Gfx* sPlayerRightHandOpenDLs[] = {
|
||||
gLinkAdultRightHandNearDL,
|
||||
gLinkChildRightHandNearDL,
|
||||
gLinkAdultRightHandFarDL,
|
||||
gLinkChildRightHandFarDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125E58[] = {
|
||||
Gfx* sPlayerRightHandClosedDLs[] = {
|
||||
gLinkAdultRightHandClosedNearDL,
|
||||
gLinkChildRightHandClosedNearDL,
|
||||
gLinkAdultRightHandClosedFarDL,
|
||||
gLinkChildRightHandClosedFarDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125E68[] = {
|
||||
Gfx* sPlayerRightHandBowSlingshotDLs[] = {
|
||||
gLinkAdultRightHandHoldingBowNearDL,
|
||||
gLinkChildRightHandHoldingSlingshotNearDL,
|
||||
gLinkAdultRightHandHoldingBowFarDL,
|
||||
|
@ -313,110 +320,111 @@ Gfx* D_80125E88[] = {
|
|||
gLinkChildSheathFarDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125E98[] = {
|
||||
Gfx* sPlayerWaistDLs[] = {
|
||||
gLinkAdultWaistNearDL,
|
||||
gLinkChildWaistNearDL,
|
||||
gLinkAdultWaistFarDL,
|
||||
gLinkChildWaistFarDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125EA8[] = {
|
||||
// Identical to `sPlayerRightHandBowSlingshotDLs` and unused
|
||||
Gfx* sPlayerRightHandBowSlingshotDLs2[] = {
|
||||
gLinkAdultRightHandHoldingBowNearDL,
|
||||
gLinkChildRightHandHoldingSlingshotNearDL,
|
||||
gLinkAdultRightHandHoldingBowFarDL,
|
||||
gLinkChildRightHandHoldingSlingshotFarDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125EB8[] = {
|
||||
Gfx* sPlayerRightHandOcarinaDLs[] = {
|
||||
gLinkAdultRightHandHoldingOotNearDL,
|
||||
gLinkChildRightHandHoldingFairyOcarinaNearDL,
|
||||
gLinkAdultRightHandHoldingOotFarDL,
|
||||
gLinkChildRightHandHoldingFairyOcarinaFarDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125EC8[] = {
|
||||
Gfx* sPlayerRightHandOotDLs[] = {
|
||||
gLinkAdultRightHandHoldingOotNearDL,
|
||||
gLinkChildRightHandAndOotNearDL,
|
||||
gLinkAdultRightHandHoldingOotFarDL,
|
||||
gLinkChildRightHandHoldingOOTFarDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125ED8[] = {
|
||||
Gfx* sPlayerRightHandHookshotDLs[] = {
|
||||
gLinkAdultRightHandHoldingHookshotNearDL,
|
||||
gLinkChildRightHandNearDL,
|
||||
gLinkAdultRightHandHoldingHookshotNearDL, // The 'far' display list exists but is not used
|
||||
gLinkChildRightHandFarDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125EE8[] = {
|
||||
Gfx* sPlayerLeftHandHammerDLs[] = {
|
||||
gLinkAdultLeftHandHoldingHammerNearDL,
|
||||
gLinkChildLeftHandNearDL,
|
||||
gLinkAdultLeftHandHoldingHammerFarDL,
|
||||
gLinkChildLeftHandFarDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125EF8[] = {
|
||||
Gfx* gPlayerLeftHandBoomerangDLs[] = {
|
||||
gLinkAdultLeftHandNearDL,
|
||||
gLinkChildLeftFistAndBoomerangNearDL,
|
||||
gLinkAdultLeftHandFarDL,
|
||||
gLinkChildLeftFistAndBoomerangFarDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125F08[] = {
|
||||
Gfx* sPlayerLeftHandBottleDLs[] = {
|
||||
gLinkAdultLeftHandOutNearDL,
|
||||
gLinkChildLeftHandUpNearDL,
|
||||
gLinkAdultLeftHandOutNearDL,
|
||||
gLinkChildLeftHandUpNearDL,
|
||||
};
|
||||
|
||||
Gfx* sArmOutDLs[] = {
|
||||
Gfx* sFirstPersonLeftForearmDLs[] = {
|
||||
gLinkAdultRightArmOutNearDL,
|
||||
NULL,
|
||||
};
|
||||
|
||||
Gfx* sHandOutDLs[] = {
|
||||
Gfx* sFirstPersonLeftHandDLs[] = {
|
||||
gLinkAdultRightHandOutNearDL,
|
||||
NULL,
|
||||
};
|
||||
|
||||
Gfx* sRightShoulderNearDLs[] = {
|
||||
Gfx* sFirstPersonRightShoulderDLs[] = {
|
||||
gLinkAdultRightShoulderNearDL,
|
||||
gLinkChildRightShoulderNearDL,
|
||||
};
|
||||
|
||||
Gfx* D_80125F30[] = {
|
||||
Gfx* sFirstPersonForearmDLs[] = {
|
||||
gLinkAdultLeftArmOutNearDL,
|
||||
NULL,
|
||||
};
|
||||
|
||||
Gfx* sHoldingFirstPersonWeaponDLs[] = {
|
||||
Gfx* sFirstPersonRightHandHoldingWeaponDLs[] = {
|
||||
gLinkAdultRightHandHoldingBowFirstPersonDL,
|
||||
gLinkChildRightArmStretchedSlingshotDL,
|
||||
};
|
||||
|
||||
// Indexed by model types (left hand, right hand, sheath or waist)
|
||||
Gfx** sPlayerDListGroups[PLAYER_MODELTYPE_MAX] = {
|
||||
/* PLAYER_MODELTYPE_LH_OPEN */ D_80125E08,
|
||||
/* PLAYER_MODELTYPE_LH_CLOSED */ D_80125E18,
|
||||
/* PLAYER_MODELTYPE_LH_SWORD */ D_80125E38,
|
||||
/* PLAYER_MODELTYPE_3 */ D_80125E28,
|
||||
/* PLAYER_MODELTYPE_LH_BGS */ D_80125DE8,
|
||||
/* PLAYER_MODELTYPE_LH_HAMMER */ D_80125EE8,
|
||||
/* PLAYER_MODELTYPE_LH_BOOMERANG */ D_80125EF8,
|
||||
/* PLAYER_MODELTYPE_LH_BOTTLE */ D_80125F08,
|
||||
/* PLAYER_MODELTYPE_RH_OPEN */ D_80125E48,
|
||||
/* PLAYER_MODELTYPE_RH_CLOSED */ D_80125E58,
|
||||
/* PLAYER_MODELTYPE_RH_SHIELD */ D_80125CE8,
|
||||
/* PLAYER_MODELTYPE_RH_BOW_SLINGSHOT */ D_80125E68,
|
||||
/* PLAYER_MODELTYPE_12 */ D_80125EA8,
|
||||
/* PLAYER_MODELTYPE_RH_OCARINA */ D_80125EB8,
|
||||
/* PLAYER_MODELTYPE_RH_OOT */ D_80125EC8,
|
||||
/* PLAYER_MODELTYPE_RH_HOOKSHOT */ D_80125ED8,
|
||||
/* PLAYER_MODELTYPE_SHEATH_16 */ D_80125E78,
|
||||
/* PLAYER_MODELTYPE_SHEATH_17 */ D_80125E88,
|
||||
/* PLAYER_MODELTYPE_SHEATH_18 */ D_80125D28,
|
||||
/* PLAYER_MODELTYPE_SHEATH_19 */ D_80125D88,
|
||||
/* PLAYER_MODELTYPE_WAIST */ D_80125E98,
|
||||
gPlayerLeftHandOpenDLs, // PLAYER_MODELTYPE_LH_OPEN
|
||||
gPlayerLeftHandClosedDLs, // PLAYER_MODELTYPE_LH_CLOSED
|
||||
sPlayerLeftHandSwordDLs, // PLAYER_MODELTYPE_LH_SWORD
|
||||
sPlayerLeftHandSwordDLs2, // PLAYER_MODELTYPE_LH_SWORD_2
|
||||
gPlayerLeftHandBgsDLs, // PLAYER_MODELTYPE_LH_BGS
|
||||
sPlayerLeftHandHammerDLs, // PLAYER_MODELTYPE_LH_HAMMER
|
||||
gPlayerLeftHandBoomerangDLs, // PLAYER_MODELTYPE_LH_BOOMERANG
|
||||
sPlayerLeftHandBottleDLs, // PLAYER_MODELTYPE_LH_BOTTLE
|
||||
sPlayerRightHandOpenDLs, // PLAYER_MODELTYPE_RH_OPEN
|
||||
sPlayerRightHandClosedDLs, // PLAYER_MODELTYPE_RH_CLOSED
|
||||
sPlayerRightHandShieldDLs, // PLAYER_MODELTYPE_RH_SHIELD
|
||||
sPlayerRightHandBowSlingshotDLs, // PLAYER_MODELTYPE_RH_BOW_SLINGSHOT
|
||||
sPlayerRightHandBowSlingshotDLs2, // PLAYER_MODELTYPE_RH_BOW_SLINGSHOT_2
|
||||
sPlayerRightHandOcarinaDLs, // PLAYER_MODELTYPE_RH_OCARINA
|
||||
sPlayerRightHandOotDLs, // PLAYER_MODELTYPE_RH_OOT
|
||||
sPlayerRightHandHookshotDLs, // PLAYER_MODELTYPE_RH_HOOKSHOT
|
||||
D_80125E78, // PLAYER_MODELTYPE_SHEATH_16
|
||||
D_80125E88, // PLAYER_MODELTYPE_SHEATH_17
|
||||
D_80125D28, // PLAYER_MODELTYPE_SHEATH_18
|
||||
D_80125D88, // PLAYER_MODELTYPE_SHEATH_19
|
||||
sPlayerWaistDLs, // PLAYER_MODELTYPE_WAIST
|
||||
};
|
||||
|
||||
Gfx gCullBackDList[] = {
|
||||
|
@ -517,13 +525,13 @@ void Player_SetModelsForHoldingShield(Player* this) {
|
|||
((this->itemActionParam < 0) || (this->itemActionParam == this->heldItemActionParam))) {
|
||||
if (!Player_HoldsTwoHandedWeapon(this) && !Player_IsChildWithHylianShield(this)) {
|
||||
this->rightHandType = PLAYER_MODELTYPE_RH_SHIELD;
|
||||
this->rightHandDLists = &sPlayerDListGroups[PLAYER_MODELTYPE_RH_SHIELD][(void)0, gSaveContext.linkAge];
|
||||
this->rightHandDLists = sPlayerDListGroups[PLAYER_MODELTYPE_RH_SHIELD] + ((void)0, gSaveContext.linkAge);
|
||||
if (this->sheathType == PLAYER_MODELTYPE_SHEATH_18) {
|
||||
this->sheathType = PLAYER_MODELTYPE_SHEATH_16;
|
||||
} else if (this->sheathType == PLAYER_MODELTYPE_SHEATH_19) {
|
||||
this->sheathType = PLAYER_MODELTYPE_SHEATH_17;
|
||||
}
|
||||
this->sheathDLists = &sPlayerDListGroups[this->sheathType][(void)0, gSaveContext.linkAge];
|
||||
this->sheathDLists = sPlayerDListGroups[this->sheathType] + ((void)0, gSaveContext.linkAge);
|
||||
this->modelAnimType = PLAYER_ANIMTYPE_2;
|
||||
this->itemActionParam = -1;
|
||||
}
|
||||
|
@ -535,14 +543,14 @@ void Player_SetModels(Player* this, s32 modelGroup) {
|
|||
this->rightHandType = gPlayerModelTypes[modelGroup][PLAYER_MODELGROUPENTRY_RIGHT_HAND];
|
||||
this->sheathType = gPlayerModelTypes[modelGroup][PLAYER_MODELGROUPENTRY_SHEATH];
|
||||
|
||||
this->leftHandDLists = &sPlayerDListGroups[gPlayerModelTypes[modelGroup][PLAYER_MODELGROUPENTRY_LEFT_HAND]]
|
||||
[(void)0, gSaveContext.linkAge];
|
||||
this->rightHandDLists = &sPlayerDListGroups[gPlayerModelTypes[modelGroup][PLAYER_MODELGROUPENTRY_RIGHT_HAND]]
|
||||
[(void)0, gSaveContext.linkAge];
|
||||
this->sheathDLists = &sPlayerDListGroups[gPlayerModelTypes[modelGroup][PLAYER_MODELGROUPENTRY_SHEATH]]
|
||||
[(void)0, gSaveContext.linkAge];
|
||||
this->waistDLists =
|
||||
&sPlayerDListGroups[gPlayerModelTypes[modelGroup][PLAYER_MODELGROUPENTRY_WAIST]][(void)0, gSaveContext.linkAge];
|
||||
this->leftHandDLists = sPlayerDListGroups[gPlayerModelTypes[modelGroup][PLAYER_MODELGROUPENTRY_LEFT_HAND]] +
|
||||
((void)0, gSaveContext.linkAge);
|
||||
this->rightHandDLists = sPlayerDListGroups[gPlayerModelTypes[modelGroup][PLAYER_MODELGROUPENTRY_RIGHT_HAND]] +
|
||||
((void)0, gSaveContext.linkAge);
|
||||
this->sheathDLists = sPlayerDListGroups[gPlayerModelTypes[modelGroup][PLAYER_MODELGROUPENTRY_SHEATH]] +
|
||||
((void)0, gSaveContext.linkAge);
|
||||
this->waistDLists = sPlayerDListGroups[gPlayerModelTypes[modelGroup][PLAYER_MODELGROUPENTRY_WAIST]] +
|
||||
((void)0, gSaveContext.linkAge);
|
||||
|
||||
Player_SetModelsForHoldingShield(this);
|
||||
}
|
||||
|
@ -702,10 +710,10 @@ s32 func_8008F128(Player* this) {
|
|||
}
|
||||
|
||||
s32 Player_ActionToMeleeWeapon(s32 actionParam) {
|
||||
s32 sword = actionParam - PLAYER_AP_FISHING_POLE;
|
||||
s32 meleeWeapon = actionParam - PLAYER_AP_FISHING_POLE;
|
||||
|
||||
if ((sword > 0) && (sword < 6)) {
|
||||
return sword;
|
||||
if ((meleeWeapon > 0) && (meleeWeapon < 6)) {
|
||||
return meleeWeapon;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
|
@ -1102,7 +1110,6 @@ s32 Player_OverrideLimbDrawGameplayCommon(PlayState* play, s32 limbIndex, Gfx**
|
|||
} else if (limbIndex == PLAYER_LIMB_R_THIGH) {
|
||||
func_8008F87C(play, this, &this->skelAnime, pos, rot, PLAYER_LIMB_R_THIGH, PLAYER_LIMB_R_SHIN,
|
||||
PLAYER_LIMB_R_FOOT);
|
||||
return false;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
@ -1122,15 +1129,15 @@ s32 Player_OverrideLimbDrawGameplayDefault(PlayState* play, s32 limbIndex, Gfx**
|
|||
if ((sLeftHandType == PLAYER_MODELTYPE_LH_BGS) && (gSaveContext.swordHealth <= 0.0f)) {
|
||||
dLists += 4;
|
||||
} else if ((sLeftHandType == PLAYER_MODELTYPE_LH_BOOMERANG) && (this->stateFlags1 & PLAYER_STATE1_25)) {
|
||||
dLists = &D_80125E08[gSaveContext.linkAge];
|
||||
dLists = gPlayerLeftHandOpenDLs + gSaveContext.linkAge;
|
||||
sLeftHandType = PLAYER_MODELTYPE_LH_OPEN;
|
||||
} else if ((this->leftHandType == PLAYER_MODELTYPE_LH_OPEN) && (this->actor.speedXZ > 2.0f) &&
|
||||
!(this->stateFlags1 & PLAYER_STATE1_27)) {
|
||||
dLists = &D_80125E18[gSaveContext.linkAge];
|
||||
dLists = gPlayerLeftHandClosedDLs + gSaveContext.linkAge;
|
||||
sLeftHandType = PLAYER_MODELTYPE_LH_CLOSED;
|
||||
}
|
||||
|
||||
*dList = dLists[sDListsLodOffset];
|
||||
*dList = *(dLists + sDListsLodOffset);
|
||||
} else if (limbIndex == PLAYER_LIMB_R_HAND) {
|
||||
Gfx** dLists = this->rightHandDLists;
|
||||
|
||||
|
@ -1138,11 +1145,11 @@ s32 Player_OverrideLimbDrawGameplayDefault(PlayState* play, s32 limbIndex, Gfx**
|
|||
dLists += this->currentShield * 4;
|
||||
} else if ((this->rightHandType == PLAYER_MODELTYPE_RH_OPEN) && (this->actor.speedXZ > 2.0f) &&
|
||||
!(this->stateFlags1 & PLAYER_STATE1_27)) {
|
||||
dLists = &D_80125E58[gSaveContext.linkAge];
|
||||
dLists = sPlayerRightHandClosedDLs + gSaveContext.linkAge;
|
||||
sRightHandType = PLAYER_MODELTYPE_RH_CLOSED;
|
||||
}
|
||||
|
||||
*dList = dLists[sDListsLodOffset];
|
||||
*dList = *(dLists + sDListsLodOffset);
|
||||
} else if (limbIndex == PLAYER_LIMB_SHEATH) {
|
||||
Gfx** dLists = this->sheathDLists;
|
||||
|
||||
|
@ -1156,12 +1163,12 @@ s32 Player_OverrideLimbDrawGameplayDefault(PlayState* play, s32 limbIndex, Gfx**
|
|||
((this->sheathType == PLAYER_MODELTYPE_SHEATH_16) ||
|
||||
(this->sheathType == PLAYER_MODELTYPE_SHEATH_17)) &&
|
||||
(gSaveContext.equips.buttonItems[0] != ITEM_SWORD_KOKIRI)) {
|
||||
dLists = D_80125D68;
|
||||
dLists = D_80125D28 + PLAYER_SHIELD_MAX * 4;
|
||||
}
|
||||
|
||||
*dList = dLists[sDListsLodOffset];
|
||||
*dList = *(dLists + sDListsLodOffset);
|
||||
} else if (limbIndex == PLAYER_LIMB_WAIST) {
|
||||
*dList = this->waistDLists[sDListsLodOffset];
|
||||
*dList = *(this->waistDLists + sDListsLodOffset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1176,16 +1183,16 @@ s32 Player_OverrideLimbDrawGameplayFirstPerson(PlayState* play, s32 limbIndex, G
|
|||
if (this->unk_6AD != 2) {
|
||||
*dList = NULL;
|
||||
} else if (limbIndex == PLAYER_LIMB_L_FOREARM) {
|
||||
*dList = sArmOutDLs[(void)0, gSaveContext.linkAge];
|
||||
*dList = sFirstPersonLeftForearmDLs[(void)0, gSaveContext.linkAge];
|
||||
} else if (limbIndex == PLAYER_LIMB_L_HAND) {
|
||||
*dList = sHandOutDLs[(void)0, gSaveContext.linkAge];
|
||||
*dList = sFirstPersonLeftHandDLs[(void)0, gSaveContext.linkAge];
|
||||
} else if (limbIndex == PLAYER_LIMB_R_SHOULDER) {
|
||||
*dList = sRightShoulderNearDLs[(void)0, gSaveContext.linkAge];
|
||||
*dList = sFirstPersonRightShoulderDLs[(void)0, gSaveContext.linkAge];
|
||||
} else if (limbIndex == PLAYER_LIMB_R_FOREARM) {
|
||||
*dList = D_80125F30[(void)0, gSaveContext.linkAge];
|
||||
*dList = sFirstPersonForearmDLs[(void)0, gSaveContext.linkAge];
|
||||
} else if (limbIndex == PLAYER_LIMB_R_HAND) {
|
||||
*dList = Player_HoldsHookshot(this) ? gLinkAdultRightHandHoldingHookshotFarDL
|
||||
: sHoldingFirstPersonWeaponDLs[(void)0, gSaveContext.linkAge];
|
||||
: sFirstPersonRightHandHoldingWeaponDLs[(void)0, gSaveContext.linkAge];
|
||||
} else {
|
||||
*dList = NULL;
|
||||
}
|
||||
|
@ -1211,14 +1218,14 @@ u8 func_80090480(PlayState* play, ColliderQuad* collider, WeaponInfo* weaponInfo
|
|||
Math_Vec3f_Copy(&weaponInfo->tip, newTip);
|
||||
Math_Vec3f_Copy(&weaponInfo->base, newBase);
|
||||
weaponInfo->active = 1;
|
||||
return 1;
|
||||
return true;
|
||||
} else if ((weaponInfo->tip.x == newTip->x) && (weaponInfo->tip.y == newTip->y) &&
|
||||
(weaponInfo->tip.z == newTip->z) && (weaponInfo->base.x == newBase->x) &&
|
||||
(weaponInfo->base.y == newBase->y) && (weaponInfo->base.z == newBase->z)) {
|
||||
if (collider != NULL) {
|
||||
Collider_ResetQuadAT(play, &collider->base);
|
||||
}
|
||||
return 0;
|
||||
return false;
|
||||
} else {
|
||||
if (collider != NULL) {
|
||||
Collider_SetQuadVertices(collider, newBase, newTip, &weaponInfo->base, &weaponInfo->tip);
|
||||
|
@ -1227,11 +1234,11 @@ u8 func_80090480(PlayState* play, ColliderQuad* collider, WeaponInfo* weaponInfo
|
|||
Math_Vec3f_Copy(&weaponInfo->base, newBase);
|
||||
Math_Vec3f_Copy(&weaponInfo->tip, newTip);
|
||||
weaponInfo->active = 1;
|
||||
return 1;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80090604(PlayState* play, Player* this, ColliderQuad* collider, Vec3f* quadSrc) {
|
||||
void Player_UpdateShieldCollider(PlayState* play, Player* this, ColliderQuad* collider, Vec3f* quadSrc) {
|
||||
static u8 shieldColTypes[PLAYER_SHIELD_MAX] = {
|
||||
COLTYPE_METAL,
|
||||
COLTYPE_WOOD,
|
||||
|
@ -1367,28 +1374,45 @@ void Player_DrawHookshotReticle(PlayState* play, Player* this, f32 arg2) {
|
|||
}
|
||||
}
|
||||
|
||||
Vec3f D_801260D4 = { 1100.0f, -700.0f, 0.0f };
|
||||
// Coordinates of the player focus position, in the head limb's own model space.
|
||||
Vec3f sPlayerFocusHeadLimbModelPos = { 1100.0f, -700.0f, 0.0f };
|
||||
|
||||
f32 sMeleeWeaponLengths[] = {
|
||||
0.0f, 4000.0f, 3000.0f, 5500.0f, 0.0f, 2500.0f,
|
||||
0.0f, // not a melee weapon
|
||||
4000.0f, // Master Sword
|
||||
3000.0f, // Kokiri Sword
|
||||
5500.0f, // Biggoron's Sword
|
||||
0.0f, // Deku Stick
|
||||
2500.0f, // Hammer
|
||||
};
|
||||
|
||||
Gfx* sBottleDLists[] = { gLinkAdultBottleDL, gLinkChildBottleDL };
|
||||
|
||||
Color_RGB8 sBottleColors[] = {
|
||||
{ 255, 255, 255 }, { 80, 80, 255 }, { 255, 100, 255 }, { 0, 0, 255 }, { 255, 0, 255 },
|
||||
{ 255, 0, 255 }, { 200, 200, 100 }, { 255, 0, 0 }, { 0, 0, 255 }, { 0, 255, 0 },
|
||||
{ 255, 255, 255 }, { 255, 255, 255 }, { 80, 80, 255 },
|
||||
{ 255, 255, 255 }, // Empty
|
||||
{ 80, 80, 255 }, // Fish
|
||||
{ 255, 100, 255 }, // Fire
|
||||
{ 0, 0, 255 }, // Bug
|
||||
{ 255, 0, 255 }, // Poe
|
||||
{ 255, 0, 255 }, // Big Poe
|
||||
{ 200, 200, 100 }, // Letter
|
||||
{ 255, 0, 0 }, // Red Potion
|
||||
{ 0, 0, 255 }, // Blue Potion
|
||||
{ 0, 255, 0 }, // Green Potion
|
||||
{ 255, 255, 255 }, // Milk
|
||||
{ 255, 255, 255 }, // Half Milk
|
||||
{ 80, 80, 255 }, // Fairy
|
||||
};
|
||||
|
||||
Vec3f D_80126128 = { 398.0f, 1419.0f, 244.0f };
|
||||
|
||||
BowStringData sBowStringData[] = {
|
||||
{ gLinkAdultBowStringDL, { 0.0f, -360.4f, 0.0f } }, // bow
|
||||
{ gLinkChildSlinghotStringDL, { 606.0f, 236.0f, 0.0f } }, // slingshot
|
||||
BowSlingshotStringData sBowSlingshotStringData[] = {
|
||||
{ gLinkAdultBowStringDL, { 0.0f, -360.4f, 0.0f } }, // Bow
|
||||
{ gLinkChildSlinghotStringDL, { 606.0f, 236.0f, 0.0f } }, // Slingshot
|
||||
};
|
||||
|
||||
Vec3f D_80126154[] = {
|
||||
// Coordinates of the shield quad collider vertices, in the right hand limb's own model space.
|
||||
Vec3f sRightHandLimbModelShieldQuadVertices[] = {
|
||||
{ -4500.0f, -3000.0f, -600.0f },
|
||||
{ 1500.0f, -3000.0f, -600.0f },
|
||||
{ -4500.0f, 3000.0f, -600.0f },
|
||||
|
@ -1398,17 +1422,20 @@ Vec3f D_80126154[] = {
|
|||
Vec3f D_80126184 = { 100.0f, 1500.0f, 0.0f };
|
||||
Vec3f D_80126190 = { 100.0f, 1640.0f, 0.0f };
|
||||
|
||||
Vec3f D_8012619C[] = {
|
||||
// Coordinates of the shield quad collider vertices, in the sheath limb's own model space.
|
||||
Vec3f sSheathLimbModelShieldQuadVertices[] = {
|
||||
{ -3000.0f, -3000.0f, -900.0f },
|
||||
{ 3000.0f, -3000.0f, -900.0f },
|
||||
{ -3000.0f, 3000.0f, -900.0f },
|
||||
{ 3000.0f, 3000.0f, -900.0f },
|
||||
};
|
||||
|
||||
Vec3f D_801261CC = { 630.0f, 100.0f, -30.0f };
|
||||
Vec3s D_801261D8 = { 0, 0, 0x7FFF };
|
||||
// Position and rotation of the shield on Link's back, in the sheath limb's own model space.
|
||||
Vec3f sSheathLimbModelShieldOnBackPos = { 630.0f, 100.0f, -30.0f };
|
||||
Vec3s sSheathLimbModelShieldOnBackZyxRot = { 0, 0, 0x7FFF };
|
||||
|
||||
Vec3f D_801261E0[] = {
|
||||
// Position of Link's foot, in the foot limb's own model space.
|
||||
Vec3f sLeftRightFootLimbModelFootPos[] = {
|
||||
{ 200.0f, 300.0f, 0.0f },
|
||||
{ 200.0f, 200.0f, 0.0f },
|
||||
};
|
||||
|
@ -1505,8 +1532,8 @@ void Player_PostLimbDrawGameplay(PlayState* play, s32 limbIndex, Gfx** dList, Ve
|
|||
if (this->rightHandType == PLAYER_MODELTYPE_RH_FF) {
|
||||
Matrix_Get(&this->shieldMf);
|
||||
} else if ((this->rightHandType == PLAYER_MODELTYPE_RH_BOW_SLINGSHOT) ||
|
||||
(this->rightHandType == PLAYER_MODELTYPE_12)) {
|
||||
BowStringData* stringData = &sBowStringData[gSaveContext.linkAge];
|
||||
(this->rightHandType == PLAYER_MODELTYPE_RH_BOW_SLINGSHOT_2)) {
|
||||
BowSlingshotStringData* stringData = &sBowSlingshotStringData[gSaveContext.linkAge];
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx, "../z_player_lib.c", 2783);
|
||||
|
||||
|
@ -1548,7 +1575,7 @@ void Player_PostLimbDrawGameplay(PlayState* play, s32 limbIndex, Gfx** dList, Ve
|
|||
CLOSE_DISPS(play->state.gfxCtx, "../z_player_lib.c", 2809);
|
||||
} else if ((this->actor.scale.y >= 0.0f) && (this->rightHandType == PLAYER_MODELTYPE_RH_SHIELD)) {
|
||||
Matrix_Get(&this->shieldMf);
|
||||
func_80090604(play, this, &this->shieldQuad, D_80126154);
|
||||
Player_UpdateShieldCollider(play, this, &this->shieldQuad, sRightHandLimbModelShieldQuadVertices);
|
||||
}
|
||||
|
||||
if (this->actor.scale.y >= 0.0f) {
|
||||
|
@ -1594,18 +1621,20 @@ void Player_PostLimbDrawGameplay(PlayState* play, s32 limbIndex, Gfx** dList, Ve
|
|||
if ((this->rightHandType != PLAYER_MODELTYPE_RH_SHIELD) &&
|
||||
(this->rightHandType != PLAYER_MODELTYPE_RH_FF)) {
|
||||
if (Player_IsChildWithHylianShield(this)) {
|
||||
func_80090604(play, this, &this->shieldQuad, D_8012619C);
|
||||
Player_UpdateShieldCollider(play, this, &this->shieldQuad, sSheathLimbModelShieldQuadVertices);
|
||||
}
|
||||
|
||||
Matrix_TranslateRotateZYX(&D_801261CC, &D_801261D8);
|
||||
Matrix_TranslateRotateZYX(&sSheathLimbModelShieldOnBackPos, &sSheathLimbModelShieldOnBackZyxRot);
|
||||
Matrix_Get(&this->shieldMf);
|
||||
}
|
||||
} else if (limbIndex == PLAYER_LIMB_HEAD) {
|
||||
Matrix_MultVec3f(&D_801260D4, &this->actor.focus.pos);
|
||||
Matrix_MultVec3f(&sPlayerFocusHeadLimbModelPos, &this->actor.focus.pos);
|
||||
} else {
|
||||
Vec3f* vec = &D_801261E0[((void)0, gSaveContext.linkAge)];
|
||||
Vec3f* footPos = &sLeftRightFootLimbModelFootPos[((void)0, gSaveContext.linkAge)];
|
||||
|
||||
Actor_SetFeetPos(&this->actor, limbIndex, PLAYER_LIMB_L_FOOT, vec, PLAYER_LIMB_R_FOOT, vec);
|
||||
// The same model position is used for both feet,
|
||||
// but the resulting world position will be different for each limb.
|
||||
Actor_SetFeetPos(&this->actor, limbIndex, PLAYER_LIMB_L_FOOT, footPos, PLAYER_LIMB_R_FOOT, footPos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1636,7 +1665,7 @@ u32 func_80091738(PlayState* play, u8* segment, SkelAnime* skelAnime) {
|
|||
sizeof(Vec3s[PLAYER_LIMB_BUF_COUNT]);
|
||||
}
|
||||
|
||||
u8 D_801261F8[] = {
|
||||
u8 sPauseModelGroupBySword[] = {
|
||||
PLAYER_MODELGROUP_SWORD, // PLAYER_SWORD_KOKIRI
|
||||
PLAYER_MODELGROUP_SWORD, // PLAYER_SWORD_MASTER
|
||||
PLAYER_MODELGROUP_BGS, // PLAYER_SWORD_BGS
|
||||
|
@ -1644,9 +1673,9 @@ u8 D_801261F8[] = {
|
|||
|
||||
s32 Player_OverrideLimbDrawPause(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* arg) {
|
||||
u8* playerSwordAndShield = arg;
|
||||
//! @bug `playerSwordAndShield[0]` can be 0 (`PLAYER_SWORD_NONE`), which indexes `D_801261F8[-1]`. The result
|
||||
//! happens to be 0 (`PLAYER_MODELGROUP_0`) in vanilla, but weird values are likely to cause a crash
|
||||
u8 modelGroup = D_801261F8[playerSwordAndShield[0] - PLAYER_SWORD_KOKIRI];
|
||||
//! @bug `playerSwordAndShield[0]` can be 0 (`PLAYER_SWORD_NONE`), which indexes `sPauseModelGroupBySword[-1]`.
|
||||
//! The result happens to be 0 (`PLAYER_MODELGROUP_0`) in vanilla, but weird values are likely to cause a crash.
|
||||
u8 modelGroup = sPauseModelGroupBySword[playerSwordAndShield[0] - PLAYER_SWORD_KOKIRI];
|
||||
s32 type;
|
||||
s32 dListOffset = 0;
|
||||
Gfx** dLists;
|
||||
|
@ -1676,13 +1705,13 @@ s32 Player_OverrideLimbDrawPause(PlayState* play, s32 limbIndex, Gfx** dList, Ve
|
|||
} else if (limbIndex == PLAYER_LIMB_WAIST) {
|
||||
type = gPlayerModelTypes[modelGroup][PLAYER_MODELGROUPENTRY_WAIST];
|
||||
} else {
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
dLists = &sPlayerDListGroups[type][(void)0, gSaveContext.linkAge];
|
||||
*dList = dLists[dListOffset];
|
||||
dLists = sPlayerDListGroups[type] + ((void)0, gSaveContext.linkAge);
|
||||
*dList = *(dLists + dListOffset);
|
||||
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
void Player_DrawPauseImpl(PlayState* play, void* gameplayKeep, void* linkObject, SkelAnime* skelAnime, Vec3f* pos,
|
||||
|
|
|
@ -261,7 +261,7 @@ void EnBoom_Draw(Actor* thisx, PlayState* play) {
|
|||
Matrix_MultVec3f(&sMultVec1, &vec1);
|
||||
Matrix_MultVec3f(&sMultVec2, &vec2);
|
||||
|
||||
if (func_80090480(play, &this->collider, &this->boomerangInfo, &vec1, &vec2) != 0) {
|
||||
if (func_80090480(play, &this->collider, &this->boomerangInfo, &vec1, &vec2)) {
|
||||
EffectBlure_AddVertex(Effect_GetByIndex(this->effectIndex), &vec1, &vec2);
|
||||
}
|
||||
|
||||
|
|
|
@ -2667,7 +2667,7 @@ s32 func_808356E8(Player* this, PlayState* play) {
|
|||
}
|
||||
|
||||
void func_808357E8(Player* this, Gfx** dLists) {
|
||||
this->leftHandDLists = &dLists[gSaveContext.linkAge];
|
||||
this->leftHandDLists = dLists + gSaveContext.linkAge;
|
||||
}
|
||||
|
||||
s32 func_80835800(Player* this, PlayState* play) {
|
||||
|
@ -2754,7 +2754,7 @@ s32 func_80835B60(Player* this, PlayState* play) {
|
|||
if (!(this->stateFlags1 & PLAYER_STATE1_25)) {
|
||||
func_80833638(this, func_80835C08);
|
||||
LinkAnimation_PlayOnce(play, &this->skelAnime2, &gPlayerAnim_0025F8);
|
||||
func_808357E8(this, D_80125EF8);
|
||||
func_808357E8(this, gPlayerLeftHandBoomerangDLs);
|
||||
func_8002F7DC(&this->actor, NA_SE_PL_CATCH_BOOMERANG);
|
||||
func_80832698(this, NA_SE_VO_LI_SWORD_N);
|
||||
return 1;
|
||||
|
@ -13805,11 +13805,11 @@ void func_80851A50(PlayState* play, Player* this, CsCmdActorAction* arg2) {
|
|||
this->interactRangeActor->parent = &this->actor;
|
||||
|
||||
if (!LINK_IS_ADULT) {
|
||||
dLists = D_80125DE8;
|
||||
dLists = gPlayerLeftHandBgsDLs;
|
||||
} else {
|
||||
dLists = D_80125E18;
|
||||
dLists = gPlayerLeftHandClosedDLs;
|
||||
}
|
||||
this->leftHandDLists = &dLists[gSaveContext.linkAge];
|
||||
this->leftHandDLists = dLists + gSaveContext.linkAge;
|
||||
|
||||
func_8002F7DC(&this->actor, sp2C->unk_00);
|
||||
if (!LINK_IS_ADULT) {
|
||||
|
@ -14119,7 +14119,7 @@ void func_80852648(PlayState* play, Player* this, CsCmdActorAction* arg2) {
|
|||
this->heldItemActionParam = this->itemActionParam = PLAYER_AP_NONE;
|
||||
this->heldItemId = ITEM_NONE;
|
||||
this->modelGroup = this->nextModelGroup = Player_ActionToModelGroup(this, PLAYER_AP_NONE);
|
||||
this->leftHandDLists = D_80125E08;
|
||||
this->leftHandDLists = gPlayerLeftHandOpenDLs;
|
||||
Inventory_ChangeEquipment(EQUIP_TYPE_SWORD, EQUIP_VALUE_SWORD_MASTER);
|
||||
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_MASTER;
|
||||
Inventory_DeleteEquipment(play, EQUIP_TYPE_SWORD);
|
||||
|
|
Loading…
Reference in a new issue