From 82c8b76a58a19ff1f87b4bdadbaef169c4b37f46 Mon Sep 17 00:00:00 2001 From: kichikuou Date: Wed, 23 Sep 2026 07:51:47 +0900 Subject: [PATCH] Fix missing equipment gauges in Rance 5D This fixes #83. **CG_GRAPH checks the source CG's type before drawing, but SACT.CG_QueryType only checked CGs already loaded into memory. The gauge images had not been loaded yet, so they were reported as unused. Check the ALD link table for unloaded CGs, then load them when querying their dimensions. --- modules/lib/sactcg.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/modules/lib/sactcg.c b/modules/lib/sactcg.c index ed8a474..bc92c48 100644 --- a/modules/lib/sactcg.c +++ b/modules/lib/sactcg.c @@ -35,6 +35,7 @@ #include "ags.h" #include "variable.h" #include "sactcg.h" +#include "ald_manager.h" #include "cg.h" #include "gfx.h" @@ -328,24 +329,27 @@ void scg_free(int no) { // CGの種類を取得 int scg_querytype(int wNumCG) { if (wNumCG >= (CGMAX -1)) return CG_NOTUSED; - if (!cg_store || !cg_store[wNumCG]) return CG_NOTUSED; - return cg_store[wNumCG]->type; + if (cg_store && cg_store[wNumCG]) + return cg_store[wNumCG]->type; + // Linked CGs are valid even before they are loaded into cg_store. + return ald_is_linked(DRIFILE_CG, wNumCG - 1) ? CG_LINKED : CG_NOTUSED; } // CGの大きさを取得 bool scg_querysize(int wNumCG, vmvar_t *w, vmvar_t *h) { - if (wNumCG >= (CGMAX -1)) goto errexit; - if (!cg_store || !cg_store[wNumCG]) goto errexit; - if (cg_store[wNumCG]->sf == NULL) goto errexit; - - *w = cg_store[wNumCG]->sf->w; - *h = cg_store[wNumCG]->sf->h; - - return true; - - errexit: *w = *h = 0; - return false; + + if (wNumCG >= (CGMAX - 1)) + return false; + cginfo_t *cg = cg_store ? cg_store[wNumCG] : NULL; + if (!cg && ald_is_linked(DRIFILE_CG, wNumCG - 1)) + cg = scg_get(wNumCG); + if (!cg || !cg->sf) + return false; + + *w = cg->sf->w; + *h = cg->sf->h; + return true; } // CGのBPPを取得