From 25ff0c93c4c743f88bfdab768e53ae4f8a18aec7 Mon Sep 17 00:00:00 2001 From: Isaac0-dev <62234577+Isaac0-dev@users.noreply.github.com> Date: Thu, 17 Apr 2025 11:49:04 +1000 Subject: [PATCH] fix scrolling textures again now that only vanilla vertices are duplicated --- data/dynos.c.h | 1 - data/dynos.cpp.h | 2 -- data/dynos_c.cpp | 4 ---- data/dynos_mgr_gfx.cpp | 1 - data/dynos_misc.cpp | 41 ++++++--------------------------------- src/game/scroll_targets.c | 1 - 6 files changed, 6 insertions(+), 44 deletions(-) diff --git a/data/dynos.c.h b/data/dynos.c.h index aa50611c0..46b719759 100644 --- a/data/dynos.c.h +++ b/data/dynos.c.h @@ -97,7 +97,6 @@ bool dynos_vtx_delete(Vtx *vtx); // -- other -- // void dynos_mod_shutdown(void); -void dynos_pending_scroll_targets_clear(void); void dynos_add_scroll_target(u32 index, const char *name, u32 offset, u32 size); // -- smlua -- // diff --git a/data/dynos.cpp.h b/data/dynos.cpp.h index d8fa549de..16d36bf62 100644 --- a/data/dynos.cpp.h +++ b/data/dynos.cpp.h @@ -1120,8 +1120,6 @@ bool DynOS_Bin_IsCompressed(const SysPath &aFilename); bool DynOS_Bin_Compress(const SysPath &aFilename); BinFile *DynOS_Bin_Decompress(const SysPath &aFilename); -void DynOS_Find_Pending_Scroll_Target(Vtx *data, Vtx *newData); -void DynOS_Pending_Scroll_Targets_Clear(); void DynOS_Add_Scroll_Target(u32 index, const char *name, u32 offset, u32 size); #endif diff --git a/data/dynos_c.cpp b/data/dynos_c.cpp index 2ac11970c..57568a8cc 100644 --- a/data/dynos_c.cpp +++ b/data/dynos_c.cpp @@ -318,8 +318,4 @@ void dynos_add_scroll_target(u32 index, const char *name, u32 offset, u32 size) DynOS_Add_Scroll_Target(index, name, offset, size); } -void dynos_pending_scroll_targets_clear(void) { - DynOS_Pending_Scroll_Targets_Clear(); -} - } diff --git a/data/dynos_mgr_gfx.cpp b/data/dynos_mgr_gfx.cpp index 84833b389..d8e0d68d9 100644 --- a/data/dynos_mgr_gfx.cpp +++ b/data/dynos_mgr_gfx.cpp @@ -25,7 +25,6 @@ static Vtx *DynOS_Vtx_Duplicate(Vtx *aVtx, u32 vtxCount, bool shouldDuplicate) { size_t vtxSize = vtxCount * sizeof(Vtx); Vtx *vtxDuplicate = vtx_allocate_internal(vtxCount); memcpy(vtxDuplicate, aVtx, vtxSize); - DynOS_Find_Pending_Scroll_Target(aVtx, vtxDuplicate); sRomToRamGfxVtxMap[aVtx] = { (void *) vtxDuplicate, vtxSize }; return vtxDuplicate; } diff --git a/data/dynos_misc.cpp b/data/dynos_misc.cpp index cb3def737..44728de9c 100644 --- a/data/dynos_misc.cpp +++ b/data/dynos_misc.cpp @@ -1,8 +1,4 @@ #include "dynos.cpp.h" -#ifdef max -#undef max -#endif -#include extern "C" { #include "game/scroll_targets.h" } @@ -105,41 +101,16 @@ s32 DynOS_String_Width(const u8 *aStr64) { // Scroll Targets // -struct PendingScrollTarget { - u32 mIndex; - u32 mOffset; - u32 mSize; - Vtx *mData; -}; - -static std::vector sPendingScrollTargets; - -// Finds a pending scroll target and registers it with the new vtx buffer -void DynOS_Find_Pending_Scroll_Target(Vtx *data, Vtx *newData) { - for (auto it = sPendingScrollTargets.begin(); it != sPendingScrollTargets.end(); ++it) { - if (it->mData == data) { - add_vtx_scroll_target(it->mIndex, &newData[it->mOffset], it->mSize, it->mOffset > 0); - sPendingScrollTargets.erase(it); - break; - } - } -} - -void DynOS_Pending_Scroll_Targets_Clear() { - sPendingScrollTargets.clear(); -} - void DynOS_Add_Scroll_Target(u32 index, const char* name, u32 offset, u32 size) { for (auto& lvlPair : DynOS_Lvl_GetArray()) { for (auto& node : lvlPair.second->mVertices) { if (node->mName.Find(name) >= 0) { - struct PendingScrollTarget scroll = { - .mIndex = index, - .mOffset = offset, - .mSize = (size > 0 && size < node->mSize) ? size : node->mSize, - .mData = node->mData, - }; - sPendingScrollTargets.push_back(scroll); + add_vtx_scroll_target( + index, + &node->mData[offset], + (size > 0 && size < node->mSize) ? size : node->mSize, + offset > 0 + ); } } } diff --git a/src/game/scroll_targets.c b/src/game/scroll_targets.c index 9bd5b4aea..5f34aec21 100644 --- a/src/game/scroll_targets.c +++ b/src/game/scroll_targets.c @@ -108,7 +108,6 @@ void free_vtx_scroll_targets(void) { } hmap_destroy(sScrollTargets); sScrollTargets = NULL; - dynos_pending_scroll_targets_clear(); } void patch_scroll_targets_before(void) {