mirror of https://github.com/zeldaret/oot.git
Merge branch 'main' into commit_object_link_boy
This commit is contained in:
commit
58bef926b6
12
format.py
12
format.py
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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())
|
||||||
|
|
|
@ -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}]"
|
||||||
|
|
|
@ -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
Loading…
Reference in New Issue