Merge branch 'main' into commit_object_link_boy

This commit is contained in:
Dragorn421 2025-05-21 09:55:12 +02:00
commit 58bef926b6
No known key found for this signature in database
GPG Key ID: 381AEBAF3D429335
5 changed files with 1126 additions and 3 deletions

View File

@ -154,12 +154,22 @@ def format_files(src_files: List[str], extra_files: List[str], nb_jobs: int):
def list_files_to_format(): def list_files_to_format():
files = glob.glob("src/**/*.c", recursive=True) files = (
glob.glob("src/**/*.c", recursive=True)
+ glob.glob("assets/**/*.c", recursive=True)
)
extra_files = ( extra_files = (
glob.glob("assets/**/*.xml", recursive=True) glob.glob("assets/**/*.xml", recursive=True)
+ glob.glob("include/**/*.h", recursive=True) + glob.glob("include/**/*.h", recursive=True)
+ glob.glob("src/**/*.h", recursive=True) + glob.glob("src/**/*.h", recursive=True)
+ glob.glob("assets/**/*.h", recursive=True)
) )
# Do not format assets/text/ files
for assets_text_f in glob.glob("assets/text/**/*.c", recursive=True):
if assets_text_f in files:
files.remove(assets_text_f)
return files, extra_files return files, extra_files

View File

@ -20,6 +20,11 @@ if TYPE_CHECKING:
VERBOSE_FILE_TRY_PARSE_DATA = 0 VERBOSE_FILE_TRY_PARSE_DATA = 0
VERBOSE_REPORT_RESBUF = False VERBOSE_REPORT_RESBUF = False
DUMP_REPORTERS_IN_SOURCE = False
DUMP_XML_IN_SOURCE = False
DONT_MERGE_RESOURCE_BUFFERS_FROM_DIFFERENT_USERS = False
# #
# file # file
# #
@ -446,7 +451,11 @@ class File:
else: else:
assert i > 0 assert i > 0
prev = resource_buffer_markers[i - 1] 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 # disjointed
if do_fuse(stride_first_i, i): if do_fuse(stride_first_i, i):
return True 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: def write_c_definition(self, c: io.TextIOBase) -> bool:
""" """
Returns True if something was written 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"): if hasattr(self, "HACK_IS_STATIC_ON"):
c.write("static ") c.write("static ")
c.write(self.get_c_declaration_base()) c.write(self.get_c_declaration_base())

View File

@ -143,6 +143,12 @@ class VtxArrayResource(CDataResource):
self.cdata_ext = CDataExt_Array(self.element_cdata_ext, num) self.cdata_ext = CDataExt_Array(self.element_cdata_ext, num)
super().__init__(file, range_start, name) 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): def get_c_declaration_base(self):
if hasattr(self, "HACK_IS_STATIC_ON"): if hasattr(self, "HACK_IS_STATIC_ON"):
return f"Vtx {self.symbol_name}[{self.cdata_ext.length}]" return f"Vtx {self.symbol_name}[{self.cdata_ext.length}]"

View File

@ -51,6 +51,8 @@ class ExtractionContext:
baserom_path: Path baserom_path: Path
build_path: Path build_path: Path
extracted_path: Path extracted_path: Path
write_source: set[str]
"""Paths of source .c files to write"""
def get_baserom_file_data(self, baserom_file_name: str): def get_baserom_file_data(self, baserom_file_name: str):
return memoryview((self.baserom_path / baserom_file_name).read_bytes()) return memoryview((self.baserom_path / baserom_file_name).read_bytes())
@ -289,7 +291,10 @@ def process_pool(
file.write_resources_extracted(file_memctx) file.write_resources_extracted(file_memctx)
# "source" refers to the main .c and .h `#include`ing all the extracted resources # "source" refers to the main .c and .h `#include`ing all the extracted resources
if WRITE_SOURCE: if WRITE_SOURCE and (
str(file.source_c_path.relative_to(extraction_ctx.extracted_path))
in extraction_ctx.write_source
):
file.write_source() file.write_source()
@ -404,6 +409,7 @@ def main():
args.baserom_segments_dir, args.baserom_segments_dir,
Path("build") / args.oot_version, Path("build") / args.oot_version,
args.output_dir, args.output_dir,
set((Path(__file__).parent / "write_source.txt").read_text().splitlines()),
) )
z64_resource_handlers.register_resource_handlers() z64_resource_handlers.register_resource_handlers()

File diff suppressed because it is too large Load Diff