diff --git a/assets/xml/objects/object_dog.xml b/assets/xml/objects/object_dog.xml
index 151a208f36..ef00442b60 100644
--- a/assets/xml/objects/object_dog.xml
+++ b/assets/xml/objects/object_dog.xml
@@ -1,41 +1,41 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_kz.xml b/assets/xml/objects/object_kz.xml
index fe9ac5c06e..20aeec4d92 100644
--- a/assets/xml/objects/object_kz.xml
+++ b/assets/xml/objects/object_kz.xml
@@ -1,43 +1,45 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
diff --git a/assets/xml/objects/object_link_boy.xml b/assets/xml/objects/object_link_boy.xml
new file mode 100644
index 0000000000..82642a7ba6
--- /dev/null
+++ b/assets/xml/objects/object_link_boy.xml
@@ -0,0 +1,271 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/xml/objects/object_link_child.xml b/assets/xml/objects/object_link_child.xml
index 0e0bd8be36..97f3246489 100644
--- a/assets/xml/objects/object_link_child.xml
+++ b/assets/xml/objects/object_link_child.xml
@@ -7,60 +7,60 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
@@ -91,12 +91,12 @@
-
+
-
-
+
+
@@ -120,105 +120,105 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/include/variables.h b/include/variables.h
index d1be043240..24bac80210 100644
--- a/include/variables.h
+++ b/include/variables.h
@@ -5,14 +5,6 @@
#include "segment_symbols.h"
extern Mtx D_01000000;
-extern Gfx D_06025218[];
-extern Gfx D_060252D8[];
-extern Gfx D_06025438[];
-extern Gfx D_06025598[];
-extern Gfx D_06025658[];
-extern Gfx D_060257B8[];
-extern Gfx D_0602A738[];
-extern Gfx D_0602CB48[];
extern u32 osTvType;
extern u32 osRomBase;
diff --git a/spec b/spec
index 8ab5104392..b1d7b628c7 100644
--- a/spec
+++ b/spec
@@ -3396,7 +3396,7 @@ endseg
beginseg
name "object_link_boy"
romalign 0x1000
- include "build/baserom/object_link_boy.o"
+ include "build/assets/objects/object_link_boy/object_link_boy.o"
number 6
endseg
diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c
index 7392222b8e..7db5569dc2 100644
--- a/src/code/z_player_lib.c
+++ b/src/code/z_player_lib.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "objects/gameplay_keep/gameplay_keep.h"
+#include "objects/object_link_boy/object_link_boy.h"
#include "objects/object_link_child/object_link_child.h"
typedef struct {
@@ -12,7 +13,7 @@ typedef struct {
/* 0x04 */ Vec3f pos;
} BowStringData; // size = 0x10
-FlexSkeletonHeader* gPlayerSkelHeaders[] = { 0x060377F4, &gLinkChildSkel };
+FlexSkeletonHeader* gPlayerSkelHeaders[] = { &gLinkAdultSkel, &gLinkChildSkel };
s16 sBootData[PLAYER_BOOTS_MAX][17] = {
{ 200, 1000, 300, 700, 550, 270, 600, 350, 800, 600, -100, 600, 590, 750, 125, 200, 130 },
@@ -45,21 +46,33 @@ u8 gPlayerModelTypes[][5] = {
};
Gfx* D_80125CE8[] = {
- 0x060226E0, gLinkChildRightHandClosedNearDL, 0x06027690, gLinkChildRightHandClosedFarDL,
- 0x060226E0, gLinkChildRightFistAndDekuShieldNearDL, 0x06027690, gLinkChildRightFistAndDekuShieldFarDL,
- 0x06022970, gLinkChildRightHandClosedNearDL, 0x06027918, gLinkChildRightHandClosedFarDL,
- 0x060241C0, gLinkChildRightHandClosedNearDL, 0x06028B40, gLinkChildRightHandClosedFarDL,
+ gLinkAdultRightHandClosedNearDL,
+ gLinkChildRightHandClosedNearDL,
+ gLinkAdultRightHandClosedFarDL,
+ gLinkChildRightHandClosedFarDL,
+ gLinkAdultRightHandClosedNearDL,
+ gLinkChildRightFistAndDekuShieldNearDL,
+ gLinkAdultRightHandClosedFarDL,
+ gLinkChildRightFistAndDekuShieldFarDL,
+ gLinkAdultRightHandHoldingHylianShieldNearDL,
+ gLinkChildRightHandClosedNearDL,
+ gLinkAdultRightHandHoldingHylianShieldFarDL,
+ gLinkChildRightHandClosedFarDL,
+ gLinkAdultRightHandHoldingMirrorShieldNearDL,
+ gLinkChildRightHandClosedNearDL,
+ gLinkAdultRightHandHoldingMirrorShieldFarDL,
+ gLinkChildRightHandClosedFarDL,
};
Gfx* D_80125D28[] = {
- 0x06023160, gLinkChildSwordAndSheathNearDL,
- 0x06027F00, gLinkChildSwordAndSheathFarDL,
- 0x06023160, gLinkChildDekuShieldSwordAndSheathNearDL,
- 0x06027F00, gLinkChildDekuShieldSwordAndSheathFarDL,
- 0x06020A78, gLinkChildHylianShieldSwordAndSheathNearDL,
- 0x06025FB8, gLinkChildHylianShieldSwordAndSheathFarDL,
- 0x060211B8, gLinkChildSwordAndSheathNearDL,
- 0x060264F0, gLinkChildSwordAndSheathFarDL,
+ gLinkAdultMasterSwordAndSheathNearDL, gLinkChildSwordAndSheathNearDL,
+ gLinkAdultMasterSwordAndSheathFarDL, gLinkChildSwordAndSheathFarDL,
+ gLinkAdultMasterSwordAndSheathNearDL, gLinkChildDekuShieldSwordAndSheathNearDL,
+ gLinkAdultMasterSwordAndSheathFarDL, gLinkChildDekuShieldSwordAndSheathFarDL,
+ gLinkAdultHylianShieldSwordAndSheathNearDL, gLinkChildHylianShieldSwordAndSheathNearDL,
+ gLinkAdultHylianShieldSwordAndSheathFarDL, gLinkChildHylianShieldSwordAndSheathFarDL,
+ gLinkAdultMirrorShieldSwordAndSheathNearDL, gLinkChildSwordAndSheathNearDL,
+ gLinkAdultMirrorShieldSwordAndSheathFarDL, gLinkChildSwordAndSheathFarDL,
};
Gfx* D_80125D68[] = {
@@ -67,166 +80,180 @@ Gfx* D_80125D68[] = {
};
Gfx* D_80125D88[] = {
- 0x060249D8, gLinkChildSheathNearDL,
- 0x06028150, gLinkChildSheathFarDL,
- 0x060249D8, gLinkChildDekuShieldAndSheathNearDL,
- 0x06028150, gLinkChildDekuShieldAndSheathFarDL,
- 0x06020E70, gLinkChildHylianShieldAndSheathNearDL,
- 0x060262B8, gLinkChildHylianShieldAndSheathFarDL,
- 0x060216B0, gLinkChildSheathNearDL,
- 0x06026910, gLinkChildSheathFarDL,
- NULL, NULL,
- NULL, NULL,
- 0x060249D8, gLinkChildDekuShieldWithMatrixDL,
- 0x060249D8, gLinkChildDekuShieldWithMatrixDL,
+ gLinkAdultSheathNearDL,
+ gLinkChildSheathNearDL,
+ gLinkAdultSheathFarDL,
+ gLinkChildSheathFarDL,
+ gLinkAdultSheathNearDL,
+ gLinkChildDekuShieldAndSheathNearDL,
+ gLinkAdultSheathFarDL,
+ gLinkChildDekuShieldAndSheathFarDL,
+ gLinkAdultHylianShieldAndSheathNearDL,
+ gLinkChildHylianShieldAndSheathNearDL,
+ gLinkAdultHylianShieldAndSheathFarDL,
+ gLinkChildHylianShieldAndSheathFarDL,
+ gLinkAdultMirrorShieldAndSheathNearDL,
+ gLinkChildSheathNearDL,
+ gLinkAdultMirrorShieldAndSheathFarDL,
+ gLinkChildSheathFarDL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ gLinkAdultSheathNearDL,
+ gLinkChildDekuShieldWithMatrixDL,
+ gLinkAdultSheathNearDL,
+ gLinkChildDekuShieldWithMatrixDL,
};
Gfx* D_80125DE8[] = {
- 0x060238C8, gLinkChildLeftHandHoldingMasterSwordDL, 0x060286B8, gLinkChildLeftHandHoldingMasterSwordDL,
- 0x06023D50, gLinkChildLeftHandHoldingMasterSwordDL, 0x060291E8, gLinkChildLeftHandHoldingMasterSwordDL,
+ gLinkAdultLeftHandHoldingBgsNearDL, gLinkChildLeftHandHoldingMasterSwordDL,
+ gLinkAdultLeftHandHoldingBgsFarDL, gLinkChildLeftHandHoldingMasterSwordDL,
+ gLinkAdultHandHoldingBrokenGiantsKnifeDL, gLinkChildLeftHandHoldingMasterSwordDL,
+ gLinkAdultHandHoldingBrokenGiantsKnifeFarDL, gLinkChildLeftHandHoldingMasterSwordDL,
};
Gfx* D_80125E08[] = {
- 0x06021AA8,
+ gLinkAdultLeftHandNearDL,
gLinkChildLeftHandNearDL,
- 0x06026C58,
+ gLinkAdultLeftHandFarDL,
gLinkChildLeftHandFarDL,
};
Gfx* D_80125E18[] = {
- 0x06021CE8,
+ gLinkAdultLeftHandClosedNearDL,
gLinkChildLeftFistNearDL,
- 0x06026DF0,
+ gLinkAdultLeftHandClosedFarDL,
gLinkChildLeftFistFarDL,
};
Gfx* D_80125E28[] = {
- 0x06021F78,
+ gLinkAdultLeftHandHoldingMasterSwordNearDL,
gLinkChildLeftFistAndKokiriSwordNearDL,
- 0x06027078,
+ gLinkAdultLeftHandHoldingMasterSwordFarDL,
gLinkChildLeftFistAndKokiriSwordFarDL,
};
Gfx* D_80125E38[] = {
- 0x06021F78,
+ gLinkAdultLeftHandHoldingMasterSwordNearDL,
gLinkChildLeftFistAndKokiriSwordNearDL,
- 0x06027078,
+ gLinkAdultLeftHandHoldingMasterSwordFarDL,
gLinkChildLeftFistAndKokiriSwordFarDL,
};
Gfx* D_80125E48[] = {
- 0x06022498,
+ gLinkAdultRightHandNearDL,
gLinkChildRightHandNearDL,
- 0x060274F8,
+ gLinkAdultRightHandFarDL,
gLinkChildRightHandFarDL,
};
Gfx* D_80125E58[] = {
- 0x060226E0,
+ gLinkAdultRightHandClosedNearDL,
gLinkChildRightHandClosedNearDL,
- 0x06027690,
+ gLinkAdultRightHandClosedFarDL,
gLinkChildRightHandClosedFarDL,
};
Gfx* D_80125E68[] = {
- 0x06022DA8,
- gLinkChildRightHandHoldingFairySlingshotNearDL,
- 0x06027B88,
- gLinkChildRightHandHoldingFairySlingshotFarDL,
+ gLinkAdultRightHandHoldingBowNearDL,
+ gLinkChildRightHandHoldingSlingshotNearDL,
+ gLinkAdultRightHandHoldingBowFarDL,
+ gLinkChildRightHandHoldingSlingshotFarDL,
};
Gfx* D_80125E78[] = {
- 0x06023160,
+ gLinkAdultMasterSwordAndSheathNearDL,
gLinkChildSwordAndSheathNearDL,
- 0x06027F00,
+ gLinkAdultMasterSwordAndSheathFarDL,
gLinkChildSwordAndSheathFarDL,
};
Gfx* D_80125E88[] = {
- 0x060249D8,
+ gLinkAdultSheathNearDL,
gLinkChildSheathNearDL,
- 0x06028150,
+ gLinkAdultSheathFarDL,
gLinkChildSheathFarDL,
};
Gfx* D_80125E98[] = {
- 0x06035330,
+ gLinkAdultWaistNearDL,
gLinkChildWaistNearDL,
- 0x0602F530,
+ gLinkAdultWaistFarDL,
gLinkChildWaistFarDL,
};
Gfx* D_80125EA8[] = {
- 0x06022DA8,
- gLinkChildRightHandHoldingFairySlingshotNearDL,
- 0x06027B88,
- gLinkChildRightHandHoldingFairySlingshotFarDL,
+ gLinkAdultRightHandHoldingBowNearDL,
+ gLinkChildRightHandHoldingSlingshotNearDL,
+ gLinkAdultRightHandHoldingBowFarDL,
+ gLinkChildRightHandHoldingSlingshotFarDL,
};
Gfx* D_80125EB8[] = {
- 0x06024698,
+ gLinkAdultRightHandHoldingOotNearDL,
gLinkChildRightHandHoldingFairyOcarinaNearDL,
- 0x06028F58,
+ gLinkAdultRightHandHoldingOotFarDL,
gLinkChildRightHandHoldingFairyOcarinaFarDL,
};
Gfx* D_80125EC8[] = {
- 0x06024698,
- gLinkChildRightHandAndOOTNearDL,
- 0x06028F58,
+ gLinkAdultRightHandHoldingOotNearDL,
+ gLinkChildRightHandAndOotNearDL,
+ gLinkAdultRightHandHoldingOotFarDL,
gLinkChildRightHandHoldingOOTFarDL,
};
Gfx* D_80125ED8[] = {
- 0x06024D70,
+ gLinkAdultRightHandHoldingHookshotNearDL,
gLinkChildRightHandNearDL,
- 0x06024D70,
+ gLinkAdultRightHandHoldingHookshotNearDL, // The 'far' display list exists but is not used
gLinkChildRightHandFarDL,
};
Gfx* D_80125EE8[] = {
- 0x060233E0,
+ gLinkAdultLeftHandHoldingHammerNearDL,
gLinkChildLeftHandNearDL,
- 0x06028288,
+ gLinkAdultLeftHandHoldingHammerFarDL,
gLinkChildLeftHandFarDL,
};
Gfx* D_80125EF8[] = {
- 0x06021AA8,
+ gLinkAdultLeftHandNearDL,
gLinkChildLeftFistAndBoomerangNearDL,
- 0x06026C58,
+ gLinkAdultLeftHandFarDL,
gLinkChildLeftFistAndBoomerangFarDL,
};
Gfx* D_80125F08[] = {
- 0x06024B58,
+ gLinkAdultLeftHandOutNearDL,
gLinkChildLeftHandUpNearDL,
- 0x06024B58,
+ gLinkAdultLeftHandOutNearDL,
gLinkChildLeftHandUpNearDL,
};
-Gfx* D_80125F18[] = {
- 0x06029918,
+Gfx* sArmOutDLs[] = {
+ gLinkAdultRightArmOutNearDL,
NULL,
};
-Gfx* D_80125F20[] = {
- 0x06029C20,
+Gfx* sHandOutDLs[] = {
+ gLinkAdultRightHandOutNearDL,
NULL,
};
-Gfx* D_80125F28[] = {
- 0x06036E58,
- gLinkChildLeftShoulderNearDL,
+Gfx* sRightShoulderNearDLs[] = {
+ gLinkAdultRightShoulderNearDL,
+ gLinkChildRightShoulderNearDL,
};
Gfx* D_80125F30[] = {
- 0x06029FA0,
+ gLinkAdultLeftArmOutNearDL,
NULL,
};
-Gfx* D_80125F38[] = {
- 0x0602A248,
+Gfx* sHoldingFirstPersonWeaponDLs[] = {
+ gLinkAdultRightHandHoldingBowFirstPersonDL,
gLinkChildRightArmStretchedSlingshotDL,
};
@@ -625,14 +652,15 @@ u8 sEyeMouthIndexes[][2] = {
* from adult Link's object are used here.
*/
void* sEyeTextures[] = {
- 0x06000000, 0x06000800, 0x06001000, 0x06001800, 0x06002000, 0x06002800, 0x06003000, 0x06003800,
+ gLinkAdultEyesOpenTex, gLinkAdultEyesHalfTex, gLinkAdultEyesClosedfTex, gLinkAdultEyesRollLeftTex,
+ gLinkAdultEyesRollRightTex, gLinkAdultEyesShockTex, gLinkAdultEyesUnk1Tex, gLinkAdultEyesUnk2Tex,
};
void* sMouthTextures[] = {
- 0x06004000,
- 0x06004400,
- 0x06004800,
- 0x06004C00,
+ gLinkAdultMouth1Tex,
+ gLinkAdultMouth2Tex,
+ gLinkAdultMouth3Tex,
+ gLinkAdultMouth4Tex,
};
Color_RGB8 sTunicColors[] = {
@@ -647,8 +675,8 @@ Color_RGB8 sGauntletColors[] = {
};
Gfx* sBootDListGroups[][2] = {
- { 0x06025918, 0x06025A60 },
- { 0x06025BA8, 0x06025DB0 },
+ { gLinkAdultLeftIronBootDL, gLinkAdultRightIronBootDL },
+ { gLinkAdultLeftHoverBootDL, gLinkAdultRightHoverBootDL },
};
void func_8008F470(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount, s32 lod, s32 tunic,
@@ -689,10 +717,12 @@ void func_8008F470(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable,
color = &sGauntletColors[strengthUpgrade - 2];
gDPSetEnvColor(POLY_OPA_DISP++, color->r, color->g, color->b, 0);
- gSPDisplayList(POLY_OPA_DISP++, D_06025218);
- gSPDisplayList(POLY_OPA_DISP++, D_06025598);
- gSPDisplayList(POLY_OPA_DISP++, (D_80160014 == 0) ? D_060252D8 : D_06025438);
- gSPDisplayList(POLY_OPA_DISP++, (D_80160018 == 8) ? D_06025658 : D_060257B8);
+ gSPDisplayList(POLY_OPA_DISP++, gLinkAdultLeftGauntletPlate1DL);
+ gSPDisplayList(POLY_OPA_DISP++, gLinkAdultRightGauntletPlate1DL);
+ gSPDisplayList(POLY_OPA_DISP++,
+ (D_80160014 == 0) ? gLinkAdultLeftGauntletPlate2DL : gLinkAdultLeftGauntletPlate3DL);
+ gSPDisplayList(POLY_OPA_DISP++,
+ (D_80160018 == 8) ? gLinkAdultRightGauntletPlate2DL : gLinkAdultRightGauntletPlate3DL);
}
if (boots != 0) {
@@ -943,15 +973,16 @@ s32 func_800902F0(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* p
if (this->unk_6AD != 2) {
*dList = NULL;
} else if (limbIndex == PLAYER_LIMB_L_FOREARM) {
- *dList = D_80125F18[(void)0, gSaveContext.linkAge];
+ *dList = sArmOutDLs[(void)0, gSaveContext.linkAge];
} else if (limbIndex == PLAYER_LIMB_L_HAND) {
- *dList = D_80125F20[(void)0, gSaveContext.linkAge];
+ *dList = sHandOutDLs[(void)0, gSaveContext.linkAge];
} else if (limbIndex == PLAYER_LIMB_R_SHOULDER) {
- *dList = D_80125F28[(void)0, gSaveContext.linkAge];
+ *dList = sRightShoulderNearDLs[(void)0, gSaveContext.linkAge];
} else if (limbIndex == PLAYER_LIMB_R_FOREARM) {
*dList = D_80125F30[(void)0, gSaveContext.linkAge];
} else if (limbIndex == PLAYER_LIMB_R_HAND) {
- *dList = Player_HoldsHookshot(this) ? D_0602A738 : D_80125F38[(void)0, gSaveContext.linkAge];
+ *dList = Player_HoldsHookshot(this) ? gLinkAdultRightHandHoldingHookshotFarDL
+ : sHoldingFirstPersonWeaponDLs[(void)0, gSaveContext.linkAge];
} else {
*dList = NULL;
}
@@ -1093,7 +1124,7 @@ void func_80090A28(Player* this, Vec3f* vecs) {
Matrix_MultVec3f(&D_80126098, &vecs[2]);
}
-void func_80090AFC(GlobalContext* globalCtx, Player* this, f32 arg2) {
+void Player_DrawHookshotReticle(GlobalContext* globalCtx, Player* this, f32 arg2) {
static Vec3f D_801260C8 = { -500.0f, -100.0f, 0.0f };
CollisionPoly* sp9C;
s32 bgId;
@@ -1126,7 +1157,7 @@ void func_80090AFC(GlobalContext* globalCtx, Player* this, f32 arg2) {
gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_player_lib.c", 2587),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPSegment(OVERLAY_DISP++, 0x06, globalCtx->objectCtx.status[this->actor.objBankIndex].segment);
- gSPDisplayList(OVERLAY_DISP++, D_0602CB48);
+ gSPDisplayList(OVERLAY_DISP++, gLinkAdultHookshotReticleDL);
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_player_lib.c", 2592);
}
@@ -1138,7 +1169,7 @@ f32 sSwordLengths[] = {
0.0f, 4000.0f, 3000.0f, 5500.0f, 0.0f, 2500.0f,
};
-Gfx* sBottleDLists[] = { 0x0602AD58, gLinkChildBottleDL };
+Gfx* sBottleDLists[] = { gLinkAdultBottleDL, gLinkChildBottleDL };
Color_RGB8 sBottleColors[] = {
{ 255, 255, 255 }, { 80, 80, 255 }, { 255, 100, 255 }, { 0, 0, 255 }, { 255, 0, 255 },
@@ -1149,8 +1180,8 @@ Color_RGB8 sBottleColors[] = {
Vec3f D_80126128 = { 398.0f, 1419.0f, 244.0f };
BowStringData sBowStringData[] = {
- { 0x0602B108, { 0.0f, -360.4f, 0.0f } }, // bow
- { 0x060221A8, { 606.0f, 236.0f, 0.0f } }, // slingshot
+ { gLinkAdultBowStringDL, { 0.0f, -360.4f, 0.0f } }, // bow
+ { gLinkChildSlinghotStringDL, { 606.0f, 236.0f, 0.0f } }, // slingshot
};
Vec3f D_80126154[] = {
@@ -1332,8 +1363,8 @@ void func_80090D20(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s*
if (func_8002DD78(this) != 0) {
Matrix_Translate(500.0f, 300.0f, 0.0f, MTXMODE_APPLY);
- func_80090AFC(globalCtx, this,
- (this->heldItemActionParam == PLAYER_AP_HOOKSHOT) ? 38600.0f : 77600.0f);
+ Player_DrawHookshotReticle(
+ globalCtx, this, (this->heldItemActionParam == PLAYER_AP_HOOKSHOT) ? 38600.0f : 77600.0f);
}
}
}
diff --git a/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c b/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c
index ab79b9f1b5..bb85a9416e 100644
--- a/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c
+++ b/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c
@@ -1,4 +1,5 @@
#include "z_arms_hook.h"
+#include "objects/object_link_boy/object_link_boy.h"
#define FLAGS (ACTOR_FLAG_4 | ACTOR_FLAG_5)
@@ -57,9 +58,6 @@ static Vec3f D_80865B94 = { 0.0f, -500.0f, -3000.0f };
static Vec3f D_80865BA0 = { 0.0f, 500.0f, 1200.0f };
static Vec3f D_80865BAC = { 0.0f, -500.0f, 1200.0f };
-extern Gfx D_0602B288[];
-extern Gfx D_0602AFF0[];
-
void ArmsHook_SetupAction(ArmsHook* this, ArmsHookActionFunc actionFunc) {
this->actionFunc = actionFunc;
}
@@ -324,7 +322,7 @@ void ArmsHook_Draw(Actor* thisx, GlobalContext* globalCtx) {
func_80093D18(globalCtx->state.gfxCtx);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_arms_hook.c", 895),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
- gSPDisplayList(POLY_OPA_DISP++, D_0602B288);
+ gSPDisplayList(POLY_OPA_DISP++, gLinkAdultHookshotTipDL);
Matrix_Translate(this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, MTXMODE_NEW);
Math_Vec3f_Diff(&player->unk_3C8, &this->actor.world.pos, &sp78);
sp58 = SQ(sp78.x) + SQ(sp78.z);
@@ -334,7 +332,7 @@ void ArmsHook_Draw(Actor* thisx, GlobalContext* globalCtx) {
Matrix_Scale(0.015f, 0.015f, sqrtf(SQ(sp78.y) + sp58) * 0.01f, MTXMODE_APPLY);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_arms_hook.c", 910),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
- gSPDisplayList(POLY_OPA_DISP++, D_0602AFF0);
+ gSPDisplayList(POLY_OPA_DISP++, gLinkAdultHookshotChainDL);
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_arms_hook.c", 913);
}
diff --git a/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c b/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c
index 6845dd9b69..96b3f1aedb 100644
--- a/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c
+++ b/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c
@@ -774,7 +774,7 @@ void DemoEc_DrawDancingZora(DemoEc* this, GlobalContext* globalCtx) {
void DemoEc_InitKingZora(DemoEc* this, GlobalContext* globalCtx) {
DemoEc_UseDrawObject(this, globalCtx);
- DemoEc_InitSkelAnime(this, globalCtx, &object_kz_Skel_0086D0);
+ DemoEc_InitSkelAnime(this, globalCtx, &gKzSkel);
DemoEc_UseAnimationObject(this, globalCtx);
DemoEc_ChangeAnimation(this, &gDemoEcKingZoraAnim, 0, 0.0f, false);
func_8096D5D4(this, globalCtx);
@@ -850,7 +850,7 @@ void func_8096F3D4(DemoEc* this, GlobalContext* globalCtx) {
}
void DemoEc_DrawKingZora(DemoEc* this, GlobalContext* globalCtx) {
- static void* eyeTextures[] = { 0x06001470, 0x06001870, 0x06001C70, 0x06002070 };
+ static void* eyeTextures[] = { gKzEyeOpenTex, gKzEyeHalfTex, gKzEyeClosedTex, gKzEyeOpen2Tex };
s32 eyeTexIndex = this->eyeTexIndex;
void* eyeTexture = eyeTextures[eyeTexIndex];
diff --git a/src/overlays/actors/ovl_En_Dog/z_en_dog.c b/src/overlays/actors/ovl_En_Dog/z_en_dog.c
index 9c4a5c804b..1bf0364132 100644
--- a/src/overlays/actors/ovl_En_Dog/z_en_dog.c
+++ b/src/overlays/actors/ovl_En_Dog/z_en_dog.c
@@ -16,7 +16,7 @@ void EnDog_Draw(Actor* thisx, GlobalContext* globalCtx);
void EnDog_FollowPath(EnDog* this, GlobalContext* globalCtx);
void EnDog_ChooseMovement(EnDog* this, GlobalContext* globalCtx);
-void EnDog_FollowLink(EnDog* this, GlobalContext* globalCtx);
+void EnDog_FollowPlayer(EnDog* this, GlobalContext* globalCtx);
void EnDog_RunAway(EnDog* this, GlobalContext* globalCtx);
void EnDog_FaceLink(EnDog* this, GlobalContext* globalCtx);
void EnDog_Wait(EnDog* this, GlobalContext* globalCtx);
@@ -56,14 +56,14 @@ static ColliderCylinderInit sCylinderInit = {
static CollisionCheckInfoInit2 sColChkInfoInit = { 0, 0, 0, 0, 50 };
static struct_80034EC0_Entry sAnimations[] = {
- { &object_dog_Anim_001368, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
- { &object_dog_Anim_001368, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -6.0f },
- { &object_dog_Anim_000D78, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -6.0f },
- { &object_dog_Anim_000278, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -6.0f },
- { &object_dog_Anim_001150, 1.0f, 0.0f, 4.0f, ANIMMODE_ONCE, -6.0f },
- { &object_dog_Anim_001150, 1.0f, 5.0f, 25.0f, ANIMMODE_LOOP_PARTIAL, -6.0f },
- { &object_dog_Anim_000928, 1.0f, 0.0f, 6.0f, ANIMMODE_ONCE, -6.0f },
- { &object_dog_Anim_000C28, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -6.0f },
+ { &gDogWalkAnim, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ { &gDogWalkAnim, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -6.0f },
+ { &gDogRunAnim, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -6.0f },
+ { &gDogBarkAnim, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -6.0f },
+ { &gDogSitAnim, 1.0f, 0.0f, 4.0f, ANIMMODE_ONCE, -6.0f },
+ { &gDogSitAnim, 1.0f, 5.0f, 25.0f, ANIMMODE_LOOP_PARTIAL, -6.0f },
+ { &gDogBowAnim, 1.0f, 0.0f, 6.0f, ANIMMODE_ONCE, -6.0f },
+ { &gDogBow2Anim, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -6.0f },
};
typedef enum {
@@ -77,7 +77,7 @@ typedef enum {
} DogBehavior;
void EnDog_PlayWalkSFX(EnDog* this) {
- AnimationHeader* walk = &object_dog_Anim_001368;
+ AnimationHeader* walk = &gDogWalkAnim;
if (this->skelAnime.animation == walk) {
if ((this->skelAnime.curFrame == 1.0f) || (this->skelAnime.curFrame == 7.0f)) {
@@ -87,7 +87,7 @@ void EnDog_PlayWalkSFX(EnDog* this) {
}
void EnDog_PlayRunSFX(EnDog* this) {
- AnimationHeader* run = &object_dog_Anim_000D78;
+ AnimationHeader* run = &gDogRunAnim;
if (this->skelAnime.animation == run) {
if ((this->skelAnime.curFrame == 2.0f) || (this->skelAnime.curFrame == 4.0f)) {
@@ -97,7 +97,7 @@ void EnDog_PlayRunSFX(EnDog* this) {
}
void EnDog_PlayBarkSFX(EnDog* this) {
- AnimationHeader* bark = &object_dog_Anim_000278;
+ AnimationHeader* bark = &gDogBarkAnim;
if (this->skelAnime.animation == bark) {
if ((this->skelAnime.curFrame == 13.0f) || (this->skelAnime.curFrame == 19.0f)) {
@@ -140,13 +140,13 @@ s32 EnDog_PlayAnimAndSFX(EnDog* this) {
switch (this->behavior) {
case DOG_SIT:
- if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame) != 0) {
+ if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
func_80034EC0(&this->skelAnime, sAnimations, 5);
this->behavior = this->nextBehavior = DOG_SIT_2;
}
break;
case DOG_BOW:
- if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame) != 0) {
+ if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
func_80034EC0(&this->skelAnime, sAnimations, 7);
this->behavior = this->nextBehavior = DOG_BOW_2;
}
@@ -159,7 +159,6 @@ s32 EnDog_PlayAnimAndSFX(EnDog* this) {
break;
case DOG_BARK:
EnDog_PlayBarkSFX(this);
- if (this) {} // needed for regalloc
break;
}
return 0;
@@ -235,8 +234,7 @@ void EnDog_Init(Actor* thisx, GlobalContext* globalCtx) {
s32 pad;
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 24.0f);
- SkelAnime_InitFlex(globalCtx, &this->skelAnime, &object_dog_Skel_007290, NULL, this->jointTable, this->morphTable,
- 13);
+ SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gDogSkel, NULL, this->jointTable, this->morphTable, 13);
func_80034EC0(&this->skelAnime, sAnimations, 0);
if ((this->actor.params & 0x8000) == 0) {
@@ -264,7 +262,7 @@ void EnDog_Init(Actor* thisx, GlobalContext* globalCtx) {
}
break;
case SCENE_IMPA: // Richard's Home
- if ((u32)(this->actor.params & 0x8000) == 0) {
+ if (!(this->actor.params & 0x8000)) {
if (!gSaveContext.dogIsLost) {
this->nextBehavior = DOG_SIT;
this->actionFunc = EnDog_Wait;
@@ -278,9 +276,9 @@ void EnDog_Init(Actor* thisx, GlobalContext* globalCtx) {
break;
}
- if ((u32)(this->actor.params & 0x8000) != 0) {
+ if (this->actor.params & 0x8000) {
this->nextBehavior = DOG_WALK;
- this->actionFunc = EnDog_FollowLink;
+ this->actionFunc = EnDog_FollowPlayer;
} else {
this->nextBehavior = DOG_SIT;
this->actionFunc = EnDog_ChooseMovement;
@@ -299,7 +297,7 @@ void EnDog_FollowPath(EnDog* this, GlobalContext* globalCtx) {
s32 frame;
if (EnDog_CanFollow(this, globalCtx) == 1) {
- this->actionFunc = EnDog_FollowLink;
+ this->actionFunc = EnDog_FollowPlayer;
}
if (DECR(this->behaviorTimer) != 0) {
@@ -332,7 +330,7 @@ void EnDog_FollowPath(EnDog* this, GlobalContext* globalCtx) {
void EnDog_ChooseMovement(EnDog* this, GlobalContext* globalCtx) {
if (EnDog_CanFollow(this, globalCtx) == 1) {
- this->actionFunc = EnDog_FollowLink;
+ this->actionFunc = EnDog_FollowPlayer;
}
if (DECR(this->behaviorTimer) == 0) {
@@ -351,7 +349,7 @@ void EnDog_ChooseMovement(EnDog* this, GlobalContext* globalCtx) {
Math_SmoothStepToF(&this->actor.speedXZ, 0.0f, 0.4f, 1.0f, 0.0f);
}
-void EnDog_FollowLink(EnDog* this, GlobalContext* globalCtx) {
+void EnDog_FollowPlayer(EnDog* this, GlobalContext* globalCtx) {
f32 speed;
if (gSaveContext.dogParams == 0) {
diff --git a/src/overlays/actors/ovl_En_Kz/z_en_kz.c b/src/overlays/actors/ovl_En_Kz/z_en_kz.c
index f9a262e713..6d6c98bf25 100644
--- a/src/overlays/actors/ovl_En_Kz/z_en_kz.c
+++ b/src/overlays/actors/ovl_En_Kz/z_en_kz.c
@@ -57,9 +57,9 @@ static ColliderCylinderInit sCylinderInit = {
static CollisionCheckInfoInit2 sColChkInfoInit = { 0, 0, 0, 0, MASS_IMMOVABLE };
static struct_80034EC0_Entry sAnimations[] = {
- { &object_kz_Anim_00075C, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
- { &object_kz_Anim_00075C, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -10.0f },
- { &object_kz_Anim_00046C, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -10.0f },
+ { &gKzIdleAnim, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ { &gKzIdleAnim, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -10.0f },
+ { &gKzMweepAnim, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -10.0f },
};
u16 EnKz_GetTextNoMaskChild(GlobalContext* globalCtx, EnKz* this) {
@@ -313,7 +313,7 @@ void EnKz_Init(Actor* thisx, GlobalContext* globalCtx) {
EnKz* this = (EnKz*)thisx;
s32 pad;
- SkelAnime_InitFlex(globalCtx, &this->skelanime, &object_kz_Skel_0086D0, NULL, this->jointTable, this->morphTable,
+ SkelAnime_InitFlex(globalCtx, &this->skelanime, &gKzSkel, NULL, this->jointTable, this->morphTable,
12);
ActorShape_Init(&this->actor.shape, 0.0, NULL, 0.0);
Collider_InitCylinder(globalCtx, &this->collider);
@@ -484,9 +484,9 @@ void EnKz_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec
void EnKz_Draw(Actor* thisx, GlobalContext* globalCtx) {
static void* sEyeSegments[] = {
- object_kz_Tex_001470,
- object_kz_Tex_001870,
- object_kz_Tex_001C70,
+ gKzEyeOpenTex,
+ gKzEyeHalfTex,
+ gKzEyeClosedTex,
};
EnKz* this = (EnKz*)thisx;
diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c
index 15036bee57..1c831e8aab 100644
--- a/src/overlays/actors/ovl_player_actor/z_player.c
+++ b/src/overlays/actors/ovl_player_actor/z_player.c
@@ -9024,7 +9024,6 @@ void Player_InitCommon(Player* this, GlobalContext* globalCtx, FlexSkeletonHeade
Effect_Add(globalCtx, &this->swordEffectIndex, EFFECT_BLURE2, 0, 0, &D_8085470C);
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawFeet, this->ageProperties->unk_04);
this->unk_46C = SUBCAM_NONE;
-
Collider_InitCylinder(globalCtx, &this->cylinder);
Collider_SetCylinder(globalCtx, &this->cylinder, &this->actor, &D_80854624);
Collider_InitQuad(globalCtx, &this->swordQuads[0]);
diff --git a/src/overlays/effects/ovl_Effect_Ss_Stick/z_eff_ss_stick.c b/src/overlays/effects/ovl_Effect_Ss_Stick/z_eff_ss_stick.c
index ccdea46688..3c57312fda 100644
--- a/src/overlays/effects/ovl_Effect_Ss_Stick/z_eff_ss_stick.c
+++ b/src/overlays/effects/ovl_Effect_Ss_Stick/z_eff_ss_stick.c
@@ -5,6 +5,8 @@
*/
#include "z_eff_ss_stick.h"
+#include "objects/object_link_boy/object_link_boy.h"
+#include "objects/object_link_child/object_link_child.h"
#define rObjBankIdx regs[0]
#define rYaw regs[1]
@@ -25,8 +27,8 @@ typedef struct {
u32 EffectSsStick_Init(GlobalContext* globalCtx, u32 index, EffectSs* this, void* initParamsx) {
StickDrawInfo drawInfo[] = {
- { OBJECT_LINK_BOY, 0x0602BA38 }, // adult, broken sword
- { OBJECT_LINK_CHILD, 0x06006CC0 }, // child, broken stick
+ { OBJECT_LINK_BOY, gLinkAdultBrokenGiantsKnifeBladeDL }, // adult, broken sword
+ { OBJECT_LINK_CHILD, gLinkChildLinkDekuStickDL }, // child, broken stick
};
StickDrawInfo* ageInfoEntry = gSaveContext.linkAge + drawInfo;
EffectSsStickInitParams* initParams = (EffectSsStickInitParams*)initParamsx;
diff --git a/undefined_syms.txt b/undefined_syms.txt
index 9dd0496ead..432ecc381b 100644
--- a/undefined_syms.txt
+++ b/undefined_syms.txt
@@ -58,23 +58,9 @@ object_ahg_Skel_0000F0 = 0x060000F0;
object_bji_Skel_0000F0 = 0x060000F0;
object_boj_Skel_0000F0 = 0x060000F0;
-// z_player_lib
-D_06025218 = 0x06025218;
-D_060252D8 = 0x060252D8;
-D_06025438 = 0x06025438;
-D_06025598 = 0x06025598;
-D_06025658 = 0x06025658;
-D_060257B8 = 0x060257B8;
-D_0602A738 = 0x0602A738;
-D_0602CB48 = 0x0602CB48;
-
// z_kankyo, z_demo_kankyo, z_en_viewer, z_object_kankyo, z_eff_ss_dead_dd
D_01000000 = 0x01000000;
-// z_arms_hook
-D_0602B288 = 0x0602B288;
-D_0602AFF0 = 0x0602AFF0;
-
// code_800AD920
D_0E000000 = 0x0E000000;