Update 60fps patch so it works with latest refresh
This commit is contained in:
parent
e7ac0ec4cf
commit
6117ab9e4c
1 changed files with 46 additions and 45 deletions
91
enhancements/60fps.patch
Executable file → Normal file
91
enhancements/60fps.patch
Executable file → Normal file
|
@ -1,8 +1,8 @@
|
||||||
diff --git a/include/types.h b/include/types.h
|
diff --git a/include/types.h b/include/types.h
|
||||||
index a33dc721..18887a45 100644
|
index 5132a4ed..f5a441df 100644
|
||||||
--- a/include/types.h
|
--- a/include/types.h
|
||||||
+++ b/include/types.h
|
+++ b/include/types.h
|
||||||
@@ -118,6 +118,10 @@ struct GraphNodeObject_sub
|
@@ -117,6 +117,10 @@ struct AnimInfo
|
||||||
/*0x0A 0x42*/ u16 animTimer;
|
/*0x0A 0x42*/ u16 animTimer;
|
||||||
/*0x0C 0x44*/ s32 animFrameAccelAssist;
|
/*0x0C 0x44*/ s32 animFrameAccelAssist;
|
||||||
/*0x10 0x48*/ s32 animAccel;
|
/*0x10 0x48*/ s32 animAccel;
|
||||||
|
@ -13,8 +13,8 @@ index a33dc721..18887a45 100644
|
||||||
};
|
};
|
||||||
|
|
||||||
struct GraphNodeObject
|
struct GraphNodeObject
|
||||||
@@ -128,11 +132,22 @@ struct GraphNodeObject
|
@@ -127,11 +131,22 @@ struct GraphNodeObject
|
||||||
/*0x19*/ s8 unk19;
|
/*0x19*/ s8 activeAreaIndex;
|
||||||
/*0x1A*/ Vec3s angle;
|
/*0x1A*/ Vec3s angle;
|
||||||
/*0x20*/ Vec3f pos;
|
/*0x20*/ Vec3f pos;
|
||||||
+ Vec3s prevAngle;
|
+ Vec3s prevAngle;
|
||||||
|
@ -25,7 +25,7 @@ index a33dc721..18887a45 100644
|
||||||
/*0x2C*/ Vec3f scale;
|
/*0x2C*/ Vec3f scale;
|
||||||
+ Vec3f prevScale;
|
+ Vec3f prevScale;
|
||||||
+ u32 prevScaleTimestamp;
|
+ u32 prevScaleTimestamp;
|
||||||
/*0x38*/ struct GraphNodeObject_sub unk38;
|
/*0x38*/ struct AnimInfo animInfo;
|
||||||
/*0x4C*/ struct SpawnInfo *unk4C;
|
/*0x4C*/ struct SpawnInfo *unk4C;
|
||||||
/*0x50*/ Mat4 *throwMatrix; // matrix ptr
|
/*0x50*/ Mat4 *throwMatrix; // matrix ptr
|
||||||
+ Mat4 prevThrowMatrix;
|
+ Mat4 prevThrowMatrix;
|
||||||
|
@ -36,7 +36,7 @@ index a33dc721..18887a45 100644
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ObjectNode
|
struct ObjectNode
|
||||||
@@ -243,6 +258,10 @@ struct Surface
|
@@ -242,6 +257,10 @@ struct Surface
|
||||||
} normal;
|
} normal;
|
||||||
/*0x28*/ f32 originOffset;
|
/*0x28*/ f32 originOffset;
|
||||||
/*0x2C*/ struct Object *object;
|
/*0x2C*/ struct Object *object;
|
||||||
|
@ -48,7 +48,7 @@ index a33dc721..18887a45 100644
|
||||||
|
|
||||||
struct MarioBodyState
|
struct MarioBodyState
|
||||||
diff --git a/src/engine/graph_node.h b/src/engine/graph_node.h
|
diff --git a/src/engine/graph_node.h b/src/engine/graph_node.h
|
||||||
index a680f70e..a31bb8ae 100644
|
index 22ab70ce..cf566a1c 100644
|
||||||
--- a/src/engine/graph_node.h
|
--- a/src/engine/graph_node.h
|
||||||
+++ b/src/engine/graph_node.h
|
+++ b/src/engine/graph_node.h
|
||||||
@@ -109,6 +109,8 @@ struct GraphNodePerspective
|
@@ -109,6 +109,8 @@ struct GraphNodePerspective
|
||||||
|
@ -112,7 +112,7 @@ index a680f70e..a31bb8ae 100644
|
||||||
|
|
||||||
/** A node that allows an object to specify a different culling radius than the
|
/** A node that allows an object to specify a different culling radius than the
|
||||||
diff --git a/src/engine/surface_collision.c b/src/engine/surface_collision.c
|
diff --git a/src/engine/surface_collision.c b/src/engine/surface_collision.c
|
||||||
index 9aff62f9..9c062cf4 100644
|
index 69f40c9c..9118d885 100644
|
||||||
--- a/src/engine/surface_collision.c
|
--- a/src/engine/surface_collision.c
|
||||||
+++ b/src/engine/surface_collision.c
|
+++ b/src/engine/surface_collision.c
|
||||||
@@ -7,6 +7,7 @@
|
@@ -7,6 +7,7 @@
|
||||||
|
@ -232,7 +232,7 @@ index 9aff62f9..9c062cf4 100644
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
diff --git a/src/engine/surface_load.c b/src/engine/surface_load.c
|
diff --git a/src/engine/surface_load.c b/src/engine/surface_load.c
|
||||||
index 6936d8a1..b2b7b37a 100644
|
index b447dc24..005cbd0f 100644
|
||||||
--- a/src/engine/surface_load.c
|
--- a/src/engine/surface_load.c
|
||||||
+++ b/src/engine/surface_load.c
|
+++ b/src/engine/surface_load.c
|
||||||
@@ -14,6 +14,7 @@
|
@@ -14,6 +14,7 @@
|
||||||
|
@ -243,7 +243,7 @@ index 6936d8a1..b2b7b37a 100644
|
||||||
|
|
||||||
s32 unused8038BE90;
|
s32 unused8038BE90;
|
||||||
|
|
||||||
@@ -359,6 +360,11 @@ static struct Surface *read_surface_data(s16 *vertexData, s16 **vertexIndices) {
|
@@ -383,6 +384,11 @@ static struct Surface *read_surface_data(s16 *vertexData, s16 **vertexIndices) {
|
||||||
|
|
||||||
surface = alloc_surface();
|
surface = alloc_surface();
|
||||||
|
|
||||||
|
@ -256,7 +256,7 @@ index 6936d8a1..b2b7b37a 100644
|
||||||
surface->vertex2[0] = x2;
|
surface->vertex2[0] = x2;
|
||||||
surface->vertex3[0] = x3;
|
surface->vertex3[0] = x3;
|
||||||
diff --git a/src/game/camera.c b/src/game/camera.c
|
diff --git a/src/game/camera.c b/src/game/camera.c
|
||||||
index 60bfb865..fd910268 100644
|
index 8082ef5e..fb569826 100644
|
||||||
--- a/src/game/camera.c
|
--- a/src/game/camera.c
|
||||||
+++ b/src/game/camera.c
|
+++ b/src/game/camera.c
|
||||||
@@ -483,6 +483,10 @@ CameraTransition sModeTransitions[] = {
|
@@ -483,6 +483,10 @@ CameraTransition sModeTransitions[] = {
|
||||||
|
@ -658,7 +658,7 @@ index 8d4daa54..7ce2b222 100644
|
||||||
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(mtx++),
|
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(mtx++),
|
||||||
G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_PUSH);
|
G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_PUSH);
|
||||||
diff --git a/src/game/ingame_menu.c b/src/game/ingame_menu.c
|
diff --git a/src/game/ingame_menu.c b/src/game/ingame_menu.c
|
||||||
index b9a43df2..281e0f3f 100644
|
index 35df1cf9..7b82744a 100644
|
||||||
--- a/src/game/ingame_menu.c
|
--- a/src/game/ingame_menu.c
|
||||||
+++ b/src/game/ingame_menu.c
|
+++ b/src/game/ingame_menu.c
|
||||||
@@ -111,6 +111,41 @@ u8 gMenuHoldKeyIndex = 0;
|
@@ -111,6 +111,41 @@ u8 gMenuHoldKeyIndex = 0;
|
||||||
|
@ -741,7 +741,7 @@ index b9a43df2..281e0f3f 100644
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
diff --git a/src/game/level_geo.c b/src/game/level_geo.c
|
diff --git a/src/game/level_geo.c b/src/game/level_geo.c
|
||||||
index 4c98e705..abc51213 100644
|
index 1fc4b88e..088a679d 100644
|
||||||
--- a/src/game/level_geo.c
|
--- a/src/game/level_geo.c
|
||||||
+++ b/src/game/level_geo.c
|
+++ b/src/game/level_geo.c
|
||||||
@@ -34,12 +34,16 @@ Gfx *geo_envfx_main(s32 callContext, struct GraphNode *node, Mat4 mtxf) {
|
@@ -34,12 +34,16 @@ Gfx *geo_envfx_main(s32 callContext, struct GraphNode *node, Mat4 mtxf) {
|
||||||
|
@ -762,10 +762,10 @@ index 4c98e705..abc51213 100644
|
||||||
}
|
}
|
||||||
SET_HIGH_U16_OF_32(*params, gAreaUpdateCounter);
|
SET_HIGH_U16_OF_32(*params, gAreaUpdateCounter);
|
||||||
diff --git a/src/game/object_helpers.c b/src/game/object_helpers.c
|
diff --git a/src/game/object_helpers.c b/src/game/object_helpers.c
|
||||||
index 2cc02248..41a26bfc 100644
|
index 9b5e4795..8468483d 100644
|
||||||
--- a/src/game/object_helpers.c
|
--- a/src/game/object_helpers.c
|
||||||
+++ b/src/game/object_helpers.c
|
+++ b/src/game/object_helpers.c
|
||||||
@@ -1554,6 +1554,7 @@ void cur_obj_set_pos_to_home(void) {
|
@@ -1549,6 +1549,7 @@ void cur_obj_set_pos_to_home(void) {
|
||||||
o->oPosX = o->oHomeX;
|
o->oPosX = o->oHomeX;
|
||||||
o->oPosY = o->oHomeY;
|
o->oPosY = o->oHomeY;
|
||||||
o->oPosZ = o->oHomeZ;
|
o->oPosZ = o->oHomeZ;
|
||||||
|
@ -774,7 +774,7 @@ index 2cc02248..41a26bfc 100644
|
||||||
|
|
||||||
void cur_obj_set_pos_to_home_and_stop(void) {
|
void cur_obj_set_pos_to_home_and_stop(void) {
|
||||||
diff --git a/src/game/paintings.c b/src/game/paintings.c
|
diff --git a/src/game/paintings.c b/src/game/paintings.c
|
||||||
index 205a9eac..9583c64e 100644
|
index 83bd2ce9..f39836d4 100644
|
||||||
--- a/src/game/paintings.c
|
--- a/src/game/paintings.c
|
||||||
+++ b/src/game/paintings.c
|
+++ b/src/game/paintings.c
|
||||||
@@ -189,6 +189,32 @@ struct Painting **sPaintingGroups[] = {
|
@@ -189,6 +189,32 @@ struct Painting **sPaintingGroups[] = {
|
||||||
|
@ -851,7 +851,7 @@ index 205a9eac..9583c64e 100644
|
||||||
// Update the ripple, may automatically reset the painting's state.
|
// Update the ripple, may automatically reset the painting's state.
|
||||||
painting_update_ripple_state(painting);
|
painting_update_ripple_state(painting);
|
||||||
diff --git a/src/game/rendering_graph_node.c b/src/game/rendering_graph_node.c
|
diff --git a/src/game/rendering_graph_node.c b/src/game/rendering_graph_node.c
|
||||||
index 80dbfca4..b083717f 100644
|
index 1f94b564..b2a711d7 100644
|
||||||
--- a/src/game/rendering_graph_node.c
|
--- a/src/game/rendering_graph_node.c
|
||||||
+++ b/src/game/rendering_graph_node.c
|
+++ b/src/game/rendering_graph_node.c
|
||||||
@@ -39,6 +39,8 @@
|
@@ -39,6 +39,8 @@
|
||||||
|
@ -1208,7 +1208,7 @@ index 80dbfca4..b083717f 100644
|
||||||
if (node->displayList != NULL) {
|
if (node->displayList != NULL) {
|
||||||
geo_append_display_list(node->displayList, node->node.flags >> 8);
|
geo_append_display_list(node->displayList, node->node.flags >> 8);
|
||||||
}
|
}
|
||||||
@@ -508,13 +675,39 @@ static void geo_process_generated_list(struct GraphNodeGenerated *node) {
|
@@ -508,13 +675,40 @@ static void geo_process_generated_list(struct GraphNodeGenerated *node) {
|
||||||
*/
|
*/
|
||||||
static void geo_process_background(struct GraphNodeBackground *node) {
|
static void geo_process_background(struct GraphNodeBackground *node) {
|
||||||
Gfx *list = NULL;
|
Gfx *list = NULL;
|
||||||
|
@ -1242,14 +1242,15 @@ index 80dbfca4..b083717f 100644
|
||||||
+ vec3f_copy(gLakituState.pos, posCopy);
|
+ vec3f_copy(gLakituState.pos, posCopy);
|
||||||
+ vec3f_copy(gLakituState.focus, focusCopy);
|
+ vec3f_copy(gLakituState.focus, focusCopy);
|
||||||
}
|
}
|
||||||
if (list != 0) {
|
+
|
||||||
|
if (list != NULL) {
|
||||||
- geo_append_display_list((void *) VIRTUAL_TO_PHYSICAL(list), node->fnNode.node.flags >> 8);
|
- geo_append_display_list((void *) VIRTUAL_TO_PHYSICAL(list), node->fnNode.node.flags >> 8);
|
||||||
+ geo_append_display_list2((void *) VIRTUAL_TO_PHYSICAL(list),
|
+ geo_append_display_list2((void *) VIRTUAL_TO_PHYSICAL(list),
|
||||||
+ (void *) VIRTUAL_TO_PHYSICAL(listInterpolated), node->fnNode.node.flags >> 8);
|
+ (void *) VIRTUAL_TO_PHYSICAL(listInterpolated), node->fnNode.node.flags >> 8);
|
||||||
} else if (gCurGraphNodeMasterList != NULL) {
|
} else if (gCurGraphNodeMasterList != NULL) {
|
||||||
#ifndef F3DEX_GBI_2E
|
#ifndef F3DEX_GBI_2E
|
||||||
Gfx *gfxStart = alloc_display_list(sizeof(Gfx) * 7);
|
Gfx *gfxStart = alloc_display_list(sizeof(Gfx) * 7);
|
||||||
@@ -539,61 +732,81 @@ static void geo_process_background(struct GraphNodeBackground *node) {
|
@@ -539,61 +733,81 @@ static void geo_process_background(struct GraphNodeBackground *node) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1365,7 +1366,7 @@ index 80dbfca4..b083717f 100644
|
||||||
if (node->displayList != NULL) {
|
if (node->displayList != NULL) {
|
||||||
geo_append_display_list(node->displayList, node->node.flags >> 8);
|
geo_append_display_list(node->displayList, node->node.flags >> 8);
|
||||||
}
|
}
|
||||||
@@ -625,6 +838,17 @@ void geo_set_animation_globals(struct GraphNodeObject_sub *node, s32 hasAnimatio
|
@@ -625,6 +839,17 @@ void geo_set_animation_globals(struct AnimInfo *node, s32 hasAnimation) {
|
||||||
}
|
}
|
||||||
|
|
||||||
gCurrAnimFrame = node->animFrame;
|
gCurrAnimFrame = node->animFrame;
|
||||||
|
@ -1383,7 +1384,7 @@ index 80dbfca4..b083717f 100644
|
||||||
gCurAnimEnabled = (anim->flags & ANIM_FLAG_5) == 0;
|
gCurAnimEnabled = (anim->flags & ANIM_FLAG_5) == 0;
|
||||||
gCurrAnimAttribute = segmented_to_virtual((void *) anim->index);
|
gCurrAnimAttribute = segmented_to_virtual((void *) anim->index);
|
||||||
gCurAnimData = segmented_to_virtual((void *) anim->values);
|
gCurAnimData = segmented_to_virtual((void *) anim->values);
|
||||||
@@ -643,8 +867,10 @@ void geo_set_animation_globals(struct GraphNodeObject_sub *node, s32 hasAnimatio
|
@@ -643,8 +868,10 @@ void geo_set_animation_globals(struct AnimInfo *node, s32 hasAnimation) {
|
||||||
*/
|
*/
|
||||||
static void geo_process_shadow(struct GraphNodeShadow *node) {
|
static void geo_process_shadow(struct GraphNodeShadow *node) {
|
||||||
Gfx *shadowList;
|
Gfx *shadowList;
|
||||||
|
@ -1394,7 +1395,7 @@ index 80dbfca4..b083717f 100644
|
||||||
Vec3f animOffset;
|
Vec3f animOffset;
|
||||||
f32 objScale;
|
f32 objScale;
|
||||||
f32 shadowScale;
|
f32 shadowScale;
|
||||||
@@ -652,6 +878,7 @@ static void geo_process_shadow(struct GraphNodeShadow *node) {
|
@@ -652,6 +879,7 @@ static void geo_process_shadow(struct GraphNodeShadow *node) {
|
||||||
f32 cosAng;
|
f32 cosAng;
|
||||||
struct GraphNode *geo;
|
struct GraphNode *geo;
|
||||||
Mtx *mtx;
|
Mtx *mtx;
|
||||||
|
@ -1402,7 +1403,7 @@ index 80dbfca4..b083717f 100644
|
||||||
|
|
||||||
if (gCurGraphNodeCamera != NULL && gCurGraphNodeObject != NULL) {
|
if (gCurGraphNodeCamera != NULL && gCurGraphNodeObject != NULL) {
|
||||||
if (gCurGraphNodeHeldObject != NULL) {
|
if (gCurGraphNodeHeldObject != NULL) {
|
||||||
@@ -690,21 +917,57 @@ static void geo_process_shadow(struct GraphNodeShadow *node) {
|
@@ -690,21 +918,57 @@ static void geo_process_shadow(struct GraphNodeShadow *node) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1449,7 +1450,7 @@ index 80dbfca4..b083717f 100644
|
||||||
+ mtxf_to_mtx(mtxInterpolated, gMatStackInterpolated[gMatStackIndex]);
|
+ mtxf_to_mtx(mtxInterpolated, gMatStackInterpolated[gMatStackIndex]);
|
||||||
+ gMatStackInterpolatedFixed[gMatStackIndex] = mtxInterpolated;
|
+ gMatStackInterpolatedFixed[gMatStackIndex] = mtxInterpolated;
|
||||||
+
|
+
|
||||||
if (gShadowAboveWaterOrLava == 1) {
|
if (gShadowAboveWaterOrLava == TRUE) {
|
||||||
- geo_append_display_list((void *) VIRTUAL_TO_PHYSICAL(shadowList), 4);
|
- geo_append_display_list((void *) VIRTUAL_TO_PHYSICAL(shadowList), 4);
|
||||||
+ geo_append_display_list2((void *) VIRTUAL_TO_PHYSICAL(shadowList),
|
+ geo_append_display_list2((void *) VIRTUAL_TO_PHYSICAL(shadowList),
|
||||||
+ (void *) VIRTUAL_TO_PHYSICAL(shadowListInterpolated), 4);
|
+ (void *) VIRTUAL_TO_PHYSICAL(shadowListInterpolated), 4);
|
||||||
|
@ -1464,7 +1465,7 @@ index 80dbfca4..b083717f 100644
|
||||||
}
|
}
|
||||||
gMatStackIndex--;
|
gMatStackIndex--;
|
||||||
}
|
}
|
||||||
@@ -803,28 +1066,87 @@ static int obj_is_in_view(struct GraphNodeObject *node, Mat4 matrix) {
|
@@ -803,28 +1067,87 @@ static s32 obj_is_in_view(struct GraphNodeObject *node, Mat4 matrix) {
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1485,7 +1486,7 @@ index 80dbfca4..b083717f 100644
|
||||||
s32 hasAnimation = (node->header.gfx.node.flags & GRAPH_RENDER_HAS_ANIMATION) != 0;
|
s32 hasAnimation = (node->header.gfx.node.flags & GRAPH_RENDER_HAS_ANIMATION) != 0;
|
||||||
+ Vec3f scaleInterpolated;
|
+ Vec3f scaleInterpolated;
|
||||||
|
|
||||||
if (node->header.gfx.unk18 == gCurGraphNodeRoot->areaIndex) {
|
if (node->header.gfx.areaIndex == gCurGraphNodeRoot->areaIndex) {
|
||||||
if (node->header.gfx.throwMatrix != NULL) {
|
if (node->header.gfx.throwMatrix != NULL) {
|
||||||
mtxf_mul(gMatStack[gMatStackIndex + 1], *node->header.gfx.throwMatrix,
|
mtxf_mul(gMatStack[gMatStackIndex + 1], *node->header.gfx.throwMatrix,
|
||||||
gMatStack[gMatStackIndex]);
|
gMatStack[gMatStackIndex]);
|
||||||
|
@ -1552,7 +1553,7 @@ index 80dbfca4..b083717f 100644
|
||||||
node->header.gfx.cameraToObject[0] = gMatStack[gMatStackIndex][3][0];
|
node->header.gfx.cameraToObject[0] = gMatStack[gMatStackIndex][3][0];
|
||||||
node->header.gfx.cameraToObject[1] = gMatStack[gMatStackIndex][3][1];
|
node->header.gfx.cameraToObject[1] = gMatStack[gMatStackIndex][3][1];
|
||||||
node->header.gfx.cameraToObject[2] = gMatStack[gMatStackIndex][3][2];
|
node->header.gfx.cameraToObject[2] = gMatStack[gMatStackIndex][3][2];
|
||||||
@@ -835,9 +1157,12 @@ static void geo_process_object(struct Object *node) {
|
@@ -835,9 +1158,12 @@ static void geo_process_object(struct Object *node) {
|
||||||
}
|
}
|
||||||
if (obj_is_in_view(&node->header.gfx, gMatStack[gMatStackIndex])) {
|
if (obj_is_in_view(&node->header.gfx, gMatStack[gMatStackIndex])) {
|
||||||
Mtx *mtx = alloc_display_list(sizeof(*mtx));
|
Mtx *mtx = alloc_display_list(sizeof(*mtx));
|
||||||
|
@ -1565,7 +1566,7 @@ index 80dbfca4..b083717f 100644
|
||||||
if (node->header.gfx.sharedChild != NULL) {
|
if (node->header.gfx.sharedChild != NULL) {
|
||||||
gCurGraphNodeObject = (struct GraphNodeObject *) node;
|
gCurGraphNodeObject = (struct GraphNodeObject *) node;
|
||||||
node->header.gfx.sharedChild->parent = &node->header.gfx.node;
|
node->header.gfx.sharedChild->parent = &node->header.gfx.node;
|
||||||
@@ -848,11 +1173,16 @@ static void geo_process_object(struct Object *node) {
|
@@ -848,11 +1174,16 @@ static void geo_process_object(struct Object *node) {
|
||||||
if (node->header.gfx.node.children != NULL) {
|
if (node->header.gfx.node.children != NULL) {
|
||||||
geo_process_node_and_siblings(node->header.gfx.node.children);
|
geo_process_node_and_siblings(node->header.gfx.node.children);
|
||||||
}
|
}
|
||||||
|
@ -1582,7 +1583,7 @@ index 80dbfca4..b083717f 100644
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -879,6 +1209,8 @@ void geo_process_held_object(struct GraphNodeHeldObject *node) {
|
@@ -879,6 +1210,8 @@ void geo_process_held_object(struct GraphNodeHeldObject *node) {
|
||||||
Mat4 mat;
|
Mat4 mat;
|
||||||
Vec3f translation;
|
Vec3f translation;
|
||||||
Mtx *mtx = alloc_display_list(sizeof(*mtx));
|
Mtx *mtx = alloc_display_list(sizeof(*mtx));
|
||||||
|
@ -1591,7 +1592,7 @@ index 80dbfca4..b083717f 100644
|
||||||
|
|
||||||
#ifdef F3DEX_GBI_2
|
#ifdef F3DEX_GBI_2
|
||||||
gSPLookAt(gDisplayListHead++, &lookAt);
|
gSPLookAt(gDisplayListHead++, &lookAt);
|
||||||
@@ -894,6 +1226,14 @@ void geo_process_held_object(struct GraphNodeHeldObject *node) {
|
@@ -894,6 +1227,14 @@ void geo_process_held_object(struct GraphNodeHeldObject *node) {
|
||||||
translation[1] = node->translation[1] / 4.0f;
|
translation[1] = node->translation[1] / 4.0f;
|
||||||
translation[2] = node->translation[2] / 4.0f;
|
translation[2] = node->translation[2] / 4.0f;
|
||||||
|
|
||||||
|
@ -1606,7 +1607,7 @@ index 80dbfca4..b083717f 100644
|
||||||
mtxf_translate(mat, translation);
|
mtxf_translate(mat, translation);
|
||||||
mtxf_copy(gMatStack[gMatStackIndex + 1], *gCurGraphNodeObject->throwMatrix);
|
mtxf_copy(gMatStack[gMatStackIndex + 1], *gCurGraphNodeObject->throwMatrix);
|
||||||
gMatStack[gMatStackIndex + 1][3][0] = gMatStack[gMatStackIndex][3][0];
|
gMatStack[gMatStackIndex + 1][3][0] = gMatStack[gMatStackIndex][3][0];
|
||||||
@@ -902,6 +1242,13 @@ void geo_process_held_object(struct GraphNodeHeldObject *node) {
|
@@ -902,6 +1243,13 @@ void geo_process_held_object(struct GraphNodeHeldObject *node) {
|
||||||
mtxf_mul(gMatStack[gMatStackIndex + 1], mat, gMatStack[gMatStackIndex + 1]);
|
mtxf_mul(gMatStack[gMatStackIndex + 1], mat, gMatStack[gMatStackIndex + 1]);
|
||||||
mtxf_scale_vec3f(gMatStack[gMatStackIndex + 1], gMatStack[gMatStackIndex + 1],
|
mtxf_scale_vec3f(gMatStack[gMatStackIndex + 1], gMatStack[gMatStackIndex + 1],
|
||||||
node->objNode->header.gfx.scale);
|
node->objNode->header.gfx.scale);
|
||||||
|
@ -1620,7 +1621,7 @@ index 80dbfca4..b083717f 100644
|
||||||
if (node->fnNode.func != NULL) {
|
if (node->fnNode.func != NULL) {
|
||||||
node->fnNode.func(GEO_CONTEXT_HELD_OBJ, &node->fnNode.node,
|
node->fnNode.func(GEO_CONTEXT_HELD_OBJ, &node->fnNode.node,
|
||||||
(struct AllocOnlyPool *) gMatStack[gMatStackIndex + 1]);
|
(struct AllocOnlyPool *) gMatStack[gMatStackIndex + 1]);
|
||||||
@@ -909,12 +1256,15 @@ void geo_process_held_object(struct GraphNodeHeldObject *node) {
|
@@ -909,12 +1257,15 @@ void geo_process_held_object(struct GraphNodeHeldObject *node) {
|
||||||
gMatStackIndex++;
|
gMatStackIndex++;
|
||||||
mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]);
|
mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]);
|
||||||
gMatStackFixed[gMatStackIndex] = mtx;
|
gMatStackFixed[gMatStackIndex] = mtx;
|
||||||
|
@ -1635,8 +1636,8 @@ index 80dbfca4..b083717f 100644
|
||||||
+ gGeoTempState.prevFrame = gPrevAnimFrame;
|
+ gGeoTempState.prevFrame = gPrevAnimFrame;
|
||||||
gCurAnimType = 0;
|
gCurAnimType = 0;
|
||||||
gCurGraphNodeHeldObject = (void *) node;
|
gCurGraphNodeHeldObject = (void *) node;
|
||||||
if (node->objNode->header.gfx.unk38.curAnim != NULL) {
|
if (node->objNode->header.gfx.animInfo.curAnim != NULL) {
|
||||||
@@ -929,6 +1279,7 @@ void geo_process_held_object(struct GraphNodeHeldObject *node) {
|
@@ -929,6 +1280,7 @@ void geo_process_held_object(struct GraphNodeHeldObject *node) {
|
||||||
gCurAnimTranslationMultiplier = gGeoTempState.translationMultiplier;
|
gCurAnimTranslationMultiplier = gGeoTempState.translationMultiplier;
|
||||||
gCurrAnimAttribute = gGeoTempState.attribute;
|
gCurrAnimAttribute = gGeoTempState.attribute;
|
||||||
gCurAnimData = gGeoTempState.data;
|
gCurAnimData = gGeoTempState.data;
|
||||||
|
@ -1644,15 +1645,15 @@ index 80dbfca4..b083717f 100644
|
||||||
gMatStackIndex--;
|
gMatStackIndex--;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1050,6 +1401,7 @@ void geo_process_root(struct GraphNodeRoot *node, Vp *b, Vp *c, s32 clearColor)
|
@@ -1050,6 +1402,7 @@ void geo_process_root(struct GraphNodeRoot *node, Vp *b, Vp *c, s32 clearColor)
|
||||||
if (node->node.flags & GRAPH_RENDER_ACTIVE) {
|
if (node->node.flags & GRAPH_RENDER_ACTIVE) {
|
||||||
Mtx *initialMatrix;
|
Mtx *initialMatrix;
|
||||||
Vp *viewport = alloc_display_list(sizeof(*viewport));
|
Vp *viewport = alloc_display_list(sizeof(*viewport));
|
||||||
+ Vp *viewportInterpolated = viewport;
|
+ Vp *viewportInterpolated = viewport;
|
||||||
|
|
||||||
gDisplayListHeap = alloc_only_pool_init(main_pool_available() - sizeof(struct AllocOnlyPool),
|
#ifdef USE_SYSTEM_MALLOC
|
||||||
MEMORY_POOL_LEFT);
|
gDisplayListHeap = alloc_only_pool_init();
|
||||||
@@ -1060,7 +1412,12 @@ void geo_process_root(struct GraphNodeRoot *node, Vp *b, Vp *c, s32 clearColor)
|
@@ -1064,7 +1417,12 @@ void geo_process_root(struct GraphNodeRoot *node, Vp *b, Vp *c, s32 clearColor)
|
||||||
vec3s_set(viewport->vp.vscale, node->width * 4, node->height * 4, 511);
|
vec3s_set(viewport->vp.vscale, node->width * 4, node->height * 4, 511);
|
||||||
if (b != NULL) {
|
if (b != NULL) {
|
||||||
clear_frame_buffer(clearColor);
|
clear_frame_buffer(clearColor);
|
||||||
|
@ -1666,7 +1667,7 @@ index 80dbfca4..b083717f 100644
|
||||||
*viewport = *b;
|
*viewport = *b;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1068,11 +1425,16 @@ void geo_process_root(struct GraphNodeRoot *node, Vp *b, Vp *c, s32 clearColor)
|
@@ -1072,11 +1430,16 @@ void geo_process_root(struct GraphNodeRoot *node, Vp *b, Vp *c, s32 clearColor)
|
||||||
clear_frame_buffer(clearColor);
|
clear_frame_buffer(clearColor);
|
||||||
make_viewport_clip_rect(c);
|
make_viewport_clip_rect(c);
|
||||||
}
|
}
|
||||||
|
@ -1685,7 +1686,7 @@ index 80dbfca4..b083717f 100644
|
||||||
G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH);
|
G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH);
|
||||||
gCurGraphNodeRoot = node;
|
gCurGraphNodeRoot = node;
|
||||||
diff --git a/src/game/screen_transition.c b/src/game/screen_transition.c
|
diff --git a/src/game/screen_transition.c b/src/game/screen_transition.c
|
||||||
index 3673a1a8..e65c3bde 100644
|
index 5d36905c..36e9c92e 100644
|
||||||
--- a/src/game/screen_transition.c
|
--- a/src/game/screen_transition.c
|
||||||
+++ b/src/game/screen_transition.c
|
+++ b/src/game/screen_transition.c
|
||||||
@@ -16,6 +16,19 @@
|
@@ -16,6 +16,19 @@
|
||||||
|
@ -1802,7 +1803,7 @@ index 3673a1a8..e65c3bde 100644
|
||||||
+
|
+
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
int render_screen_transition(s8 fadeTimer, s8 transType, u8 transTime, struct WarpTransitionData *transData) {
|
s32 render_screen_transition(s8 fadeTimer, s8 transType, u8 transTime, struct WarpTransitionData *transData) {
|
||||||
switch (transType) {
|
switch (transType) {
|
||||||
case WARP_TRANSITION_FADE_FROM_COLOR:
|
case WARP_TRANSITION_FADE_FROM_COLOR:
|
||||||
diff --git a/src/menu/intro_geo.c b/src/menu/intro_geo.c
|
diff --git a/src/menu/intro_geo.c b/src/menu/intro_geo.c
|
||||||
|
@ -1930,10 +1931,10 @@ index 05f1a5ad..bb8ea052 100644
|
||||||
Uint32 elapsed = SDL_GetTicks() - last_time;
|
Uint32 elapsed = SDL_GetTicks() - last_time;
|
||||||
|
|
||||||
diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c
|
diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c
|
||||||
index 4fb25fa2..46cf6653 100644
|
index f4467a11..ccc048b7 100644
|
||||||
--- a/src/pc/pc_main.c
|
--- a/src/pc/pc_main.c
|
||||||
+++ b/src/pc/pc_main.c
|
+++ b/src/pc/pc_main.c
|
||||||
@@ -75,6 +75,25 @@ void send_display_list(struct SPTask *spTask) {
|
@@ -76,6 +76,25 @@ void send_display_list(struct SPTask *spTask) {
|
||||||
#define SAMPLES_LOW 528
|
#define SAMPLES_LOW 528
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1959,7 +1960,7 @@ index 4fb25fa2..46cf6653 100644
|
||||||
void produce_one_frame(void) {
|
void produce_one_frame(void) {
|
||||||
gfx_start_frame();
|
gfx_start_frame();
|
||||||
game_loop_one_iteration();
|
game_loop_one_iteration();
|
||||||
@@ -94,6 +113,11 @@ void produce_one_frame(void) {
|
@@ -95,6 +114,11 @@ void produce_one_frame(void) {
|
||||||
audio_api->play((u8 *)audio_buffer, 2 * num_audio_samples * 4);
|
audio_api->play((u8 *)audio_buffer, 2 * num_audio_samples * 4);
|
||||||
|
|
||||||
gfx_end_frame();
|
gfx_end_frame();
|
||||||
|
|
Loading…
Add table
Reference in a new issue