summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorDragorn421 <Dragorn421@users.noreply.github.com>2025-05-21 02:48:47 +0200
committerGitHub <noreply@github.com>2025-05-20 20:48:47 -0400
commitf456bc6bf8b211d132d07678ae0c2a53f00d396b (patch)
tree7892f5f24ca9d0611e561735c0383497317ebdaa /tools
parenta6162dc8e7c2604a3eb436019ab93e794e01d078 (diff)
Assets system utilities (#2529)
Diffstat (limited to 'tools')
-rw-r--r--tools/assets/extract/extase/__init__.py27
-rw-r--r--tools/assets/extract/extase_oot64/dlist_resources.py6
2 files changed, 32 insertions, 1 deletions
diff --git a/tools/assets/extract/extase/__init__.py b/tools/assets/extract/extase/__init__.py
index 301ec4eb4..d39988203 100644
--- a/tools/assets/extract/extase/__init__.py
+++ b/tools/assets/extract/extase/__init__.py
@@ -20,6 +20,11 @@ if TYPE_CHECKING:
VERBOSE_FILE_TRY_PARSE_DATA = 0
VERBOSE_REPORT_RESBUF = False
+DUMP_REPORTERS_IN_SOURCE = False
+DUMP_XML_IN_SOURCE = False
+
+DONT_MERGE_RESOURCE_BUFFERS_FROM_DIFFERENT_USERS = False
+
#
# file
#
@@ -446,7 +451,11 @@ class File:
else:
assert i > 0
prev = resource_buffer_markers[i - 1]
- if prev.file_end < rbm.file_start:
+ if prev.file_end < rbm.file_start or (
+ DONT_MERGE_RESOURCE_BUFFERS_FROM_DIFFERENT_USERS
+ and prev.file_end == rbm.file_start
+ and prev.users != rbm.users
+ ):
# disjointed
if do_fuse(stride_first_i, i):
return True
@@ -967,11 +976,27 @@ class Resource(abc.ABC):
"""
...
+ def get_as_xml(self) -> str:
+ raise NotImplementedError()
+
def write_c_definition(self, c: io.TextIOBase) -> bool:
"""
Returns True if something was written
"""
+ if DUMP_REPORTERS_IN_SOURCE:
+ c.write(f"//R: {' '.join(_r.name for _r in self.reporters)}\n")
+ if DUMP_XML_IN_SOURCE:
+ try:
+ xml = self.get_as_xml()
+ except NotImplementedError:
+ pass
+ else:
+ c.write("/*\n")
+ c.write(xml)
+ c.write("\n")
+ c.write("*/\n")
+
if hasattr(self, "HACK_IS_STATIC_ON"):
c.write("static ")
c.write(self.get_c_declaration_base())
diff --git a/tools/assets/extract/extase_oot64/dlist_resources.py b/tools/assets/extract/extase_oot64/dlist_resources.py
index f5fb29dc1..c67597f67 100644
--- a/tools/assets/extract/extase_oot64/dlist_resources.py
+++ b/tools/assets/extract/extase_oot64/dlist_resources.py
@@ -143,6 +143,12 @@ class VtxArrayResource(CDataResource):
self.cdata_ext = CDataExt_Array(self.element_cdata_ext, num)
super().__init__(file, range_start, name)
+ def get_as_xml(self):
+ return f"""\
+ <Array Name="{self.symbol_name}" Count="{(self.range_end - self.range_start) // self.element_cdata_ext.size}" Offset="0x{self.range_start:X}">
+ <Vtx/>
+ </Array>"""
+
def get_c_declaration_base(self):
if hasattr(self, "HACK_IS_STATIC_ON"):
return f"Vtx {self.symbol_name}[{self.cdata_ext.length}]"