splat64 0.33.1__tar.gz → 0.33.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {splat64-0.33.1 → splat64-0.33.2}/CHANGELOG.md +3 -0
- {splat64-0.33.1 → splat64-0.33.2}/PKG-INFO +2 -2
- {splat64-0.33.1 → splat64-0.33.2}/README.md +1 -1
- {splat64-0.33.1 → splat64-0.33.2}/docs/Configuration.md +1 -1
- {splat64-0.33.1 → splat64-0.33.2}/pyproject.toml +1 -1
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/__init__.py +1 -1
- splat64-0.33.2/src/splat/segtypes/common/asmtu.py +15 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/c.py +4 -4
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/codesubsegment.py +64 -7
- splat64-0.33.1/src/splat/segtypes/common/asmtu.py +0 -65
- {splat64-0.33.1 → splat64-0.33.2}/.gitattributes +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/.github/workflows/black.yml +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/.github/workflows/mypy.yml +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/.github/workflows/publish_docs_to_wiki.yml +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/.github/workflows/pypi.yml +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/.github/workflows/test_lib.yml +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/.github/workflows/unit_tests.yml +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/.gitignore +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/LICENSE +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/create_config.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/docs/Adding-Symbols.md +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/docs/Advanced.md +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/docs/Examples.md +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/docs/General-Workflow.md +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/docs/Home.md +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/docs/Quickstart.md +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/docs/Segments.md +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/docs/VramClasses.md +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/mypy.ini +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/requirements.txt +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/split.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/__main__.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/disassembler/__init__.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/disassembler/disassembler.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/disassembler/disassembler_instance.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/disassembler/disassembler_section.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/disassembler/null_disassembler.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/disassembler/spimdisasm_disassembler.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/platforms/__init__.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/platforms/n64.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/platforms/ps2.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/platforms/psp.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/platforms/psx.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/py.typed +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/scripts/__init__.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/scripts/capy.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/scripts/create_config.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/scripts/split.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/__init__.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/__init__.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/asm.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/bin.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/bss.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/code.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/cpp.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/data.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/databin.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/eh_frame.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/gcc_except_table.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/group.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/hasm.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/header.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/lib.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/linker_offset.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/pad.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/rdata.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/rodata.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/rodatabin.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/sbss.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/sdata.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/segment.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/common/textbin.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/linker_entry.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/__init__.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/ci.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/ci4.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/ci8.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/decompressor.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/gfx.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/header.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/i1.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/i4.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/i8.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/ia16.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/ia4.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/ia8.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/img.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/ipl3.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/mio0.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/palette.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/rgba16.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/rgba32.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/rsp.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/vtx.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/n64/yay0.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/ps2/__init__.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/ps2/ctor.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/ps2/lit4.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/ps2/lit8.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/ps2/vtables.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/psp/__init__.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/psx/__init__.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/psx/header.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/segtypes/segment.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/__init__.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/cache_handler.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/color.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/compiler.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/conf.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/log.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/n64/__init__.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/n64/find_code_length.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/n64/rominfo.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/options.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/palettes.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/progress_bar.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/psx/__init__.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/psx/psxexeinfo.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/relocs.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/statistics.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/symbols.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/utils.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/src/splat/util/vram_classes.py +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/Dockerfile +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/README.md +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/.gitignore +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/Makefile +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/build/basic_app.bin +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/dummy_ipl3.s +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/.splache +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/asm/data/main.bss.s +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/asm/data/main.data.s +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/asm/data/main.rodata.s +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/asm/handwritten.s +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/asm/header.s +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/asm/main.s +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/asm/nonmatchings/main/D_80000510.s +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/asm/nonmatchings/main/func_80000400.s +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/asm/nonmatchings/main/func_800004A0.s +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/assets/dummy_ipl3.bin +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/basic_app.d +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/build/test/basic_app/split/src/main.asmproc.d +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/src/main.c +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/undefined_funcs_auto.txt +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/undefined_syms_auto.txt +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/handwritten.s +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/header.s +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/basic_app/main.c +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test/test_gen_expected.sh +0 -0
- {splat64-0.33.1 → splat64-0.33.2}/test.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: splat64
|
|
3
|
-
Version: 0.33.
|
|
3
|
+
Version: 0.33.2
|
|
4
4
|
Summary: A binary splitting tool to assist with decompilation and modding projects
|
|
5
5
|
Project-URL: Repository, https://github.com/ethteck/splat
|
|
6
6
|
Project-URL: Issues, https://github.com/ethteck/splat/issues
|
|
@@ -76,7 +76,7 @@ The brackets corresponds to the optional dependencies to install while installin
|
|
|
76
76
|
If you use a `requirements.txt` file in your repository, then you can add this library with the following line:
|
|
77
77
|
|
|
78
78
|
```txt
|
|
79
|
-
splat64[mips]>=0.33.
|
|
79
|
+
splat64[mips]>=0.33.2,<1.0.0
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
### Optional dependencies
|
|
@@ -21,7 +21,7 @@ The brackets corresponds to the optional dependencies to install while installin
|
|
|
21
21
|
If you use a `requirements.txt` file in your repository, then you can add this library with the following line:
|
|
22
22
|
|
|
23
23
|
```txt
|
|
24
|
-
splat64[mips]>=0.33.
|
|
24
|
+
splat64[mips]>=0.33.2,<1.0.0
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
### Optional dependencies
|
|
@@ -729,7 +729,7 @@ Don't skip disassembling already matched functions and migrated sections
|
|
|
729
729
|
|
|
730
730
|
### make_full_disasm_for_code
|
|
731
731
|
|
|
732
|
-
Emit a full `.s` file for each `c`/`cpp` segment
|
|
732
|
+
Emit a full `.s` file for each `c`/`cpp` segment containing disassembly of .text and any available sibling sections, in addition to the normally-generated `nonmatchings` individual functions.
|
|
733
733
|
|
|
734
734
|
Can be used to generate "target" or "expected" objects for asm diffing.
|
|
735
735
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from .asm import CommonSegAsm
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class CommonSegAsmtu(CommonSegAsm):
|
|
5
|
+
def split(self, rom_bytes: bytes):
|
|
6
|
+
if self.rom_start == self.rom_end:
|
|
7
|
+
return
|
|
8
|
+
|
|
9
|
+
if self.spim_section is None:
|
|
10
|
+
return
|
|
11
|
+
|
|
12
|
+
out_path = self.out_path()
|
|
13
|
+
assert out_path is not None, str(self)
|
|
14
|
+
|
|
15
|
+
self.split_as_asmtu_file(out_path)
|
|
@@ -250,7 +250,7 @@ class CommonSegC(CommonSegCodeSubsegment):
|
|
|
250
250
|
assert func_sym is not None
|
|
251
251
|
|
|
252
252
|
if (
|
|
253
|
-
|
|
253
|
+
entry.function.getName() not in self.global_asm_funcs
|
|
254
254
|
and options.opts.disassemble_all
|
|
255
255
|
and not is_new_c_file
|
|
256
256
|
):
|
|
@@ -281,7 +281,7 @@ class CommonSegC(CommonSegCodeSubsegment):
|
|
|
281
281
|
section = self.spim_section.get_section()
|
|
282
282
|
old_value = section.getGpRelHack()
|
|
283
283
|
section.setGpRelHack(False)
|
|
284
|
-
self.
|
|
284
|
+
self.split_as_asmtu_file(self.asm_out_path())
|
|
285
285
|
section.setGpRelHack(old_value)
|
|
286
286
|
|
|
287
287
|
def get_c_preamble(self):
|
|
@@ -304,7 +304,7 @@ class CommonSegC(CommonSegCodeSubsegment):
|
|
|
304
304
|
|
|
305
305
|
if rodata_sym.vramEnd != next_rodata_sym.vram:
|
|
306
306
|
log.write(
|
|
307
|
-
|
|
307
|
+
"\nA gap was detected in migrated rodata symbols!", status="warn"
|
|
308
308
|
)
|
|
309
309
|
log.write(
|
|
310
310
|
f"\t In function '{func.getName()}' (0x{func.vram:08X}), gap detected between '{rodata_sym.getName()}' (0x{rodata_sym.vram:08X}) and '{next_rodata_sym.getName()}' (0x{next_rodata_sym.vram:08X})"
|
|
@@ -313,7 +313,7 @@ class CommonSegC(CommonSegCodeSubsegment):
|
|
|
313
313
|
f"\t The address of the missing rodata symbol is 0x{rodata_sym.vramEnd:08X}"
|
|
314
314
|
)
|
|
315
315
|
log.write(
|
|
316
|
-
|
|
316
|
+
"\t Try to force the migration of that symbol with `force_migration:True` in the symbol_addrs.txt file; or avoid the migration of symbols around this address with `force_not_migration:True`"
|
|
317
317
|
)
|
|
318
318
|
|
|
319
319
|
def create_c_asm_file(
|
|
@@ -238,12 +238,69 @@ class CommonSegCodeSubsegment(Segment):
|
|
|
238
238
|
if self.spim_section is None:
|
|
239
239
|
return
|
|
240
240
|
|
|
241
|
-
if out_path:
|
|
242
|
-
|
|
241
|
+
if not out_path:
|
|
242
|
+
return
|
|
243
|
+
|
|
244
|
+
out_path.parent.mkdir(parents=True, exist_ok=True)
|
|
245
|
+
|
|
246
|
+
self.print_file_boundaries()
|
|
247
|
+
|
|
248
|
+
with open(out_path, "w", newline="\n") as f:
|
|
249
|
+
# Write `.text` contents
|
|
250
|
+
for line in self.get_asm_file_header():
|
|
251
|
+
f.write(line + "\n")
|
|
252
|
+
f.write(self.spim_section.disassemble())
|
|
243
253
|
|
|
244
|
-
|
|
254
|
+
# Same as above but write all sections from siblings
|
|
255
|
+
def split_as_asmtu_file(self, out_path: Optional[Path]):
|
|
256
|
+
if self.spim_section is None:
|
|
257
|
+
return
|
|
258
|
+
|
|
259
|
+
if not out_path:
|
|
260
|
+
return
|
|
245
261
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
262
|
+
out_path.parent.mkdir(parents=True, exist_ok=True)
|
|
263
|
+
|
|
264
|
+
self.print_file_boundaries()
|
|
265
|
+
|
|
266
|
+
with open(out_path, "w", newline="\n") as f:
|
|
267
|
+
# Write `.text` contents
|
|
268
|
+
for line in self.get_asm_file_header():
|
|
269
|
+
f.write(line + "\n")
|
|
270
|
+
f.write(self.spim_section.disassemble())
|
|
271
|
+
|
|
272
|
+
# Disassemble the siblings to this file by respecting the `section_order`
|
|
273
|
+
for sect in self.section_order:
|
|
274
|
+
if sect == self.get_linker_section_linksection():
|
|
275
|
+
continue
|
|
276
|
+
|
|
277
|
+
sibling = self.siblings.get(sect)
|
|
278
|
+
if sibling is None:
|
|
279
|
+
continue
|
|
280
|
+
|
|
281
|
+
if (
|
|
282
|
+
isinstance(sibling, CommonSegCodeSubsegment)
|
|
283
|
+
and sibling.spim_section is not None
|
|
284
|
+
and not sibling.should_self_split()
|
|
285
|
+
):
|
|
286
|
+
f.write("\n")
|
|
287
|
+
f.write(f"{sibling.get_section_asm_line()}\n\n")
|
|
288
|
+
f.write(sibling.spim_section.disassemble())
|
|
289
|
+
|
|
290
|
+
# Another loop to check anything that somehow may not be present on the `section_order`
|
|
291
|
+
for sect, sibling in self.siblings.items():
|
|
292
|
+
if sect == self.get_linker_section_linksection():
|
|
293
|
+
continue
|
|
294
|
+
|
|
295
|
+
if sect in self.section_order:
|
|
296
|
+
# Already handled on the above loop
|
|
297
|
+
continue
|
|
298
|
+
|
|
299
|
+
if (
|
|
300
|
+
isinstance(sibling, CommonSegCodeSubsegment)
|
|
301
|
+
and sibling.spim_section is not None
|
|
302
|
+
and not sibling.should_self_split()
|
|
303
|
+
):
|
|
304
|
+
f.write("\n")
|
|
305
|
+
f.write(f"{sibling.get_section_asm_line()}\n\n")
|
|
306
|
+
f.write(sibling.spim_section.disassemble())
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
from pathlib import Path
|
|
2
|
-
from typing import Optional, TextIO
|
|
3
|
-
|
|
4
|
-
from ...util import log, options
|
|
5
|
-
|
|
6
|
-
from .asm import CommonSegAsm
|
|
7
|
-
from .codesubsegment import CommonSegCodeSubsegment
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class CommonSegAsmtu(CommonSegAsm):
|
|
11
|
-
def split(self, rom_bytes: bytes):
|
|
12
|
-
if self.rom_start == self.rom_end:
|
|
13
|
-
return
|
|
14
|
-
|
|
15
|
-
if self.spim_section is None:
|
|
16
|
-
return
|
|
17
|
-
|
|
18
|
-
out_path = self.out_path()
|
|
19
|
-
assert out_path is not None, str(self)
|
|
20
|
-
|
|
21
|
-
out_path.parent.mkdir(parents=True, exist_ok=True)
|
|
22
|
-
|
|
23
|
-
self.print_file_boundaries()
|
|
24
|
-
|
|
25
|
-
with open(out_path, "w", newline="\n") as f:
|
|
26
|
-
# Write `.text` contents
|
|
27
|
-
for line in self.get_asm_file_header():
|
|
28
|
-
f.write(line + "\n")
|
|
29
|
-
f.write(self.spim_section.disassemble())
|
|
30
|
-
|
|
31
|
-
# Disassemble the siblings to this file by respecting the `section_order`
|
|
32
|
-
for sect in self.section_order:
|
|
33
|
-
if sect == self.get_linker_section_linksection():
|
|
34
|
-
continue
|
|
35
|
-
|
|
36
|
-
sibling = self.siblings.get(sect)
|
|
37
|
-
if sibling is None:
|
|
38
|
-
continue
|
|
39
|
-
|
|
40
|
-
if (
|
|
41
|
-
isinstance(sibling, CommonSegCodeSubsegment)
|
|
42
|
-
and sibling.spim_section is not None
|
|
43
|
-
and not sibling.should_self_split()
|
|
44
|
-
):
|
|
45
|
-
f.write("\n")
|
|
46
|
-
f.write(f"{sibling.get_section_asm_line()}\n\n")
|
|
47
|
-
f.write(sibling.spim_section.disassemble())
|
|
48
|
-
|
|
49
|
-
# Another loop to check anything that somehow may not be present on the `section_order`
|
|
50
|
-
for sect, sibling in self.siblings.items():
|
|
51
|
-
if sect == self.get_linker_section_linksection():
|
|
52
|
-
continue
|
|
53
|
-
|
|
54
|
-
if sect in self.section_order:
|
|
55
|
-
# Already handled on the above loop
|
|
56
|
-
continue
|
|
57
|
-
|
|
58
|
-
if (
|
|
59
|
-
isinstance(sibling, CommonSegCodeSubsegment)
|
|
60
|
-
and sibling.spim_section is not None
|
|
61
|
-
and not sibling.should_self_split()
|
|
62
|
-
):
|
|
63
|
-
f.write("\n")
|
|
64
|
-
f.write(f"{sibling.get_section_asm_line()}\n\n")
|
|
65
|
-
f.write(sibling.spim_section.disassemble())
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/asm/nonmatchings/main/D_80000510.s
RENAMED
|
File without changes
|
{splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/asm/nonmatchings/main/func_80000400.s
RENAMED
|
File without changes
|
{splat64-0.33.1 → splat64-0.33.2}/test/basic_app/expected/asm/nonmatchings/main/func_800004A0.s
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|