summaryrefslogtreecommitdiff
path: root/src/factories/DisplayListOverrides.cpp
diff options
context:
space:
mode:
authorJeod <47716344+JeodC@users.noreply.github.com>2026-06-20 19:03:36 -0400
committerLywx <kiritodev01@gmail.com>2026-06-29 18:48:27 -0600
commitd91a56479c0615231c93bb1623ca0ed8b771b831 (patch)
tree05d60044555e2c09ca5f7167f11190087666848a /src/factories/DisplayListOverrides.cpp
parentd0042dc6bfa12a6bee5702aa6b67f9a65873509c (diff)
Add BK64 asset extraction
Diffstat (limited to 'src/factories/DisplayListOverrides.cpp')
-rw-r--r--src/factories/DisplayListOverrides.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/factories/DisplayListOverrides.cpp b/src/factories/DisplayListOverrides.cpp
index 45bd1a9..2c82481 100644
--- a/src/factories/DisplayListOverrides.cpp
+++ b/src/factories/DisplayListOverrides.cpp
@@ -73,6 +73,26 @@ int Vtx(uint32_t ptr, int32_t num) {
return 1;
}
+ if (IS_SEGMENTED(ptr) && Companion::Instance->GetCompressedSegmentOffset(&ptr)) {
+ vtx = GetVtxOverlap(ptr);
+ if (vtx.has_value()) {
+ auto symbol = std::get<0>(vtx.value());
+ auto node = std::get<1>(vtx.value());
+
+ auto offset = GetSafeNode<uint32_t>(node, "offset");
+ auto count = GetSafeNode<uint32_t>(node, "count");
+ auto idx = (ptr - offset) / sizeof(N64Vtx_t);
+
+ SPDLOG_INFO("Replaced Vtx Overlapped: 0x{:X} Symbol: {}", ptr, symbol);
+ gfxd_puts("&");
+ gfxd_puts(symbol.c_str());
+ gfxd_puts("[");
+ gfxd_puts(std::to_string(idx).c_str());
+ gfxd_puts("]");
+ return 1;
+ }
+ }
+
auto dec = Companion::Instance->GetSafeNodeByAddr(ptr, "VTX");
if (dec.has_value()) {