From 73db5cb6d811ab43053bfb0883622cb434f0faab Mon Sep 17 00:00:00 2001 From: Mr-Wiseguy Date: Sun, 17 Dec 2023 15:39:46 -0500 Subject: [PATCH] Fixed saving lockup caused by incorrect fields in message queue struct, updated RT64 --- lib/RT64-HLE | 2 +- patches/transform_tagging.c | 4 ++-- ultramodern/ultra64.h | 4 +--- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/RT64-HLE b/lib/RT64-HLE index a6b71d8..a475f5a 160000 --- a/lib/RT64-HLE +++ b/lib/RT64-HLE @@ -1 +1 @@ -Subproject commit a6b71d8697aec4f27204d1b6928d92e443eeb51e +Subproject commit a475f5ad6fc8328cf995366ee80eb5ba80f8ee20 diff --git a/patches/transform_tagging.c b/patches/transform_tagging.c index 530b32d..54f15ca 100644 --- a/patches/transform_tagging.c +++ b/patches/transform_tagging.c @@ -87,8 +87,8 @@ void Actor_Draw(PlayState* play, Actor* actor) { u32 cur_transform_id = (actorIdByte0(actor) << 0) | (actorIdByte1(actor) << 8); - gEXMatrixGroup(POLY_OPA_DISP++, cur_transform_id, G_EX_PUSH, G_MTX_MODELVIEW, G_EX_COMPONENT_INTERPOLATE, G_EX_COMPONENT_INTERPOLATE, G_EX_COMPONENT_INTERPOLATE); - gEXMatrixGroup(POLY_XLU_DISP++, cur_transform_id, G_EX_PUSH, G_MTX_MODELVIEW, G_EX_COMPONENT_INTERPOLATE, G_EX_COMPONENT_INTERPOLATE, G_EX_COMPONENT_INTERPOLATE); + gEXMatrixGroup(POLY_OPA_DISP++, cur_transform_id, G_EX_PUSH, G_MTX_MODELVIEW, G_EX_COMPONENT_INTERPOLATE, G_EX_COMPONENT_INTERPOLATE, G_EX_COMPONENT_INTERPOLATE, G_EX_COMPONENT_SKIP,G_EX_ORDER_AUTO); + gEXMatrixGroup(POLY_XLU_DISP++, cur_transform_id, G_EX_PUSH, G_MTX_MODELVIEW, G_EX_COMPONENT_INTERPOLATE, G_EX_COMPONENT_INTERPOLATE, G_EX_COMPONENT_INTERPOLATE, G_EX_COMPONENT_SKIP,G_EX_ORDER_AUTO); if (actor->colorFilterTimer != 0) { s32 colorFlag = COLORFILTER_GET_COLORFLAG(actor->colorFilterParams); diff --git a/ultramodern/ultra64.h b/ultramodern/ultra64.h index 7fa0333..4ee53f3 100644 --- a/ultramodern/ultra64.h +++ b/ultramodern/ultra64.h @@ -106,9 +106,7 @@ typedef struct OSMesgQueue { PTR(OSThread) blocked_on_send; /* Linked list of threads blocked on sending to this queue */ s32 validCount; /* Number of messages in the queue */ s32 first; /* Index of the first message in the ring buffer */ - uint8_t lock; /* Lock flag used to implement a spinlock */ - uint8_t pad; /* Explicit padding (would be compiler-inserted otherwise) */ - s16 msgCount; /* Size of message buffer (s32 in the original libultra, but s16 here to make room for the lock flag) */ + s32 msgCount; /* Size of message buffer */ PTR(OSMesg) msg; /* Pointer to circular buffer to store messages */ } OSMesgQueue;