summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorDragorn421 <Dragorn421@users.noreply.github.com>2025-05-25 18:33:24 +0200
committerGitHub <noreply@github.com>2025-05-25 12:33:24 -0400
commiteeeaa77d3fb1d5c428ab2ace8f88f415192c6060 (patch)
tree3f7d06cabd0c95b452829b1c4f50ac299de83437 /tools
parentb44ff69ded55eeda1f17a6d3989bc350a10d4543 (diff)
Introduce TEX_LEN macro for texture arrays lengths (#2541)
Diffstat (limited to 'tools')
-rw-r--r--tools/assets/extract/extase_oot64/dlist_resources.py18
1 files changed, 14 insertions, 4 deletions
diff --git a/tools/assets/extract/extase_oot64/dlist_resources.py b/tools/assets/extract/extase_oot64/dlist_resources.py
index 63e8635a6..ad470c33a 100644
--- a/tools/assets/extract/extase_oot64/dlist_resources.py
+++ b/tools/assets/extract/extase_oot64/dlist_resources.py
@@ -275,12 +275,19 @@ class TextureResource(Resource):
self.width_name = f"{self.symbol_name}_WIDTH"
self.height_name = f"{self.symbol_name}_HEIGHT"
+ def check_declare_length(self):
+ return (
+ hasattr(self, "HACK_IS_STATIC_ON") or EXPLICIT_DL_AND_TEX_SIZES
+ ) and not self.is_tlut()
+
def get_c_declaration_base(self):
if hasattr(self, "HACK_IS_STATIC_ON") and self.is_tlut():
raise NotImplementedError
- if hasattr(self, "HACK_IS_STATIC_ON") or EXPLICIT_DL_AND_TEX_SIZES:
- if not self.is_tlut():
- return f"{self.elem_type} {self.symbol_name}[{self.height_name} * {self.width_name} * {self.siz.bpp} / 8 / sizeof({self.elem_type})]"
+ if self.check_declare_length():
+ return (
+ f"{self.elem_type} {self.symbol_name}"
+ f"[TEX_LEN({self.elem_type}, {self.width_name}, {self.height_name}, {self.siz.bpp})]"
+ )
return f"{self.elem_type} {self.symbol_name}[]"
def get_c_reference(self, resource_offset: int):
@@ -518,7 +525,10 @@ class TextureResource(Resource):
super().write_c_declaration(h)
def get_h_includes(self):
- return ("ultra64.h",)
+ return (
+ "ultra64.h",
+ *(("tex_len.h",) if self.check_declare_length() else ()),
+ )
@reprlib.recursive_repr()
def __repr__(self):