diff options
| author | Jeod <47716344+JeodC@users.noreply.github.com> | 2026-06-20 19:03:36 -0400 |
|---|---|---|
| committer | Lywx <kiritodev01@gmail.com> | 2026-06-29 18:48:27 -0600 |
| commit | d91a56479c0615231c93bb1623ca0ed8b771b831 (patch) | |
| tree | 05d60044555e2c09ca5f7167f11190087666848a /src/factories/DisplayListOverrides.cpp | |
| parent | d0042dc6bfa12a6bee5702aa6b67f9a65873509c (diff) | |
Add BK64 asset extraction
Diffstat (limited to 'src/factories/DisplayListOverrides.cpp')
| -rw-r--r-- | src/factories/DisplayListOverrides.cpp | 20 |
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()) { |
