splat64 0.33.2__tar.gz → 0.34.1__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.
Files changed (149) hide show
  1. {splat64-0.33.2 → splat64-0.34.1}/CHANGELOG.md +7 -0
  2. {splat64-0.33.2 → splat64-0.34.1}/PKG-INFO +2 -2
  3. {splat64-0.33.2 → splat64-0.34.1}/README.md +1 -1
  4. {splat64-0.33.2 → splat64-0.34.1}/docs/Configuration.md +15 -0
  5. {splat64-0.33.2 → splat64-0.34.1}/docs/General-Workflow.md +2 -0
  6. {splat64-0.33.2 → splat64-0.34.1}/pyproject.toml +1 -1
  7. {splat64-0.33.2 → splat64-0.34.1}/src/splat/__init__.py +1 -1
  8. {splat64-0.33.2 → splat64-0.34.1}/src/splat/scripts/split.py +7 -3
  9. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/segment.py +16 -8
  10. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/log.py +12 -1
  11. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/options.py +13 -1
  12. {splat64-0.33.2 → splat64-0.34.1}/.gitattributes +0 -0
  13. {splat64-0.33.2 → splat64-0.34.1}/.github/workflows/black.yml +0 -0
  14. {splat64-0.33.2 → splat64-0.34.1}/.github/workflows/mypy.yml +0 -0
  15. {splat64-0.33.2 → splat64-0.34.1}/.github/workflows/publish_docs_to_wiki.yml +0 -0
  16. {splat64-0.33.2 → splat64-0.34.1}/.github/workflows/pypi.yml +0 -0
  17. {splat64-0.33.2 → splat64-0.34.1}/.github/workflows/test_lib.yml +0 -0
  18. {splat64-0.33.2 → splat64-0.34.1}/.github/workflows/unit_tests.yml +0 -0
  19. {splat64-0.33.2 → splat64-0.34.1}/.gitignore +0 -0
  20. {splat64-0.33.2 → splat64-0.34.1}/LICENSE +0 -0
  21. {splat64-0.33.2 → splat64-0.34.1}/create_config.py +0 -0
  22. {splat64-0.33.2 → splat64-0.34.1}/docs/Adding-Symbols.md +0 -0
  23. {splat64-0.33.2 → splat64-0.34.1}/docs/Advanced.md +0 -0
  24. {splat64-0.33.2 → splat64-0.34.1}/docs/Examples.md +0 -0
  25. {splat64-0.33.2 → splat64-0.34.1}/docs/Home.md +0 -0
  26. {splat64-0.33.2 → splat64-0.34.1}/docs/Quickstart.md +0 -0
  27. {splat64-0.33.2 → splat64-0.34.1}/docs/Segments.md +0 -0
  28. {splat64-0.33.2 → splat64-0.34.1}/docs/VramClasses.md +0 -0
  29. {splat64-0.33.2 → splat64-0.34.1}/mypy.ini +0 -0
  30. {splat64-0.33.2 → splat64-0.34.1}/requirements.txt +0 -0
  31. {splat64-0.33.2 → splat64-0.34.1}/split.py +0 -0
  32. {splat64-0.33.2 → splat64-0.34.1}/src/splat/__main__.py +0 -0
  33. {splat64-0.33.2 → splat64-0.34.1}/src/splat/disassembler/__init__.py +0 -0
  34. {splat64-0.33.2 → splat64-0.34.1}/src/splat/disassembler/disassembler.py +0 -0
  35. {splat64-0.33.2 → splat64-0.34.1}/src/splat/disassembler/disassembler_instance.py +0 -0
  36. {splat64-0.33.2 → splat64-0.34.1}/src/splat/disassembler/disassembler_section.py +0 -0
  37. {splat64-0.33.2 → splat64-0.34.1}/src/splat/disassembler/null_disassembler.py +0 -0
  38. {splat64-0.33.2 → splat64-0.34.1}/src/splat/disassembler/spimdisasm_disassembler.py +0 -0
  39. {splat64-0.33.2 → splat64-0.34.1}/src/splat/platforms/__init__.py +0 -0
  40. {splat64-0.33.2 → splat64-0.34.1}/src/splat/platforms/n64.py +0 -0
  41. {splat64-0.33.2 → splat64-0.34.1}/src/splat/platforms/ps2.py +0 -0
  42. {splat64-0.33.2 → splat64-0.34.1}/src/splat/platforms/psp.py +0 -0
  43. {splat64-0.33.2 → splat64-0.34.1}/src/splat/platforms/psx.py +0 -0
  44. {splat64-0.33.2 → splat64-0.34.1}/src/splat/py.typed +0 -0
  45. {splat64-0.33.2 → splat64-0.34.1}/src/splat/scripts/__init__.py +0 -0
  46. {splat64-0.33.2 → splat64-0.34.1}/src/splat/scripts/capy.py +0 -0
  47. {splat64-0.33.2 → splat64-0.34.1}/src/splat/scripts/create_config.py +0 -0
  48. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/__init__.py +0 -0
  49. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/__init__.py +0 -0
  50. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/asm.py +0 -0
  51. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/asmtu.py +0 -0
  52. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/bin.py +0 -0
  53. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/bss.py +0 -0
  54. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/c.py +0 -0
  55. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/code.py +0 -0
  56. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/codesubsegment.py +0 -0
  57. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/cpp.py +0 -0
  58. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/data.py +0 -0
  59. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/databin.py +0 -0
  60. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/eh_frame.py +0 -0
  61. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/gcc_except_table.py +0 -0
  62. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/group.py +0 -0
  63. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/hasm.py +0 -0
  64. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/header.py +0 -0
  65. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/lib.py +0 -0
  66. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/linker_offset.py +0 -0
  67. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/pad.py +0 -0
  68. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/rdata.py +0 -0
  69. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/rodata.py +0 -0
  70. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/rodatabin.py +0 -0
  71. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/sbss.py +0 -0
  72. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/sdata.py +0 -0
  73. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/segment.py +0 -0
  74. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/common/textbin.py +0 -0
  75. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/linker_entry.py +0 -0
  76. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/__init__.py +0 -0
  77. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/ci.py +0 -0
  78. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/ci4.py +0 -0
  79. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/ci8.py +0 -0
  80. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/decompressor.py +0 -0
  81. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/gfx.py +0 -0
  82. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/header.py +0 -0
  83. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/i1.py +0 -0
  84. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/i4.py +0 -0
  85. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/i8.py +0 -0
  86. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/ia16.py +0 -0
  87. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/ia4.py +0 -0
  88. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/ia8.py +0 -0
  89. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/img.py +0 -0
  90. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/ipl3.py +0 -0
  91. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/mio0.py +0 -0
  92. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/palette.py +0 -0
  93. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/rgba16.py +0 -0
  94. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/rgba32.py +0 -0
  95. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/rsp.py +0 -0
  96. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/vtx.py +0 -0
  97. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/n64/yay0.py +0 -0
  98. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/ps2/__init__.py +0 -0
  99. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/ps2/ctor.py +0 -0
  100. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/ps2/lit4.py +0 -0
  101. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/ps2/lit8.py +0 -0
  102. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/ps2/vtables.py +0 -0
  103. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/psp/__init__.py +0 -0
  104. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/psx/__init__.py +0 -0
  105. {splat64-0.33.2 → splat64-0.34.1}/src/splat/segtypes/psx/header.py +0 -0
  106. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/__init__.py +0 -0
  107. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/cache_handler.py +0 -0
  108. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/color.py +0 -0
  109. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/compiler.py +0 -0
  110. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/conf.py +0 -0
  111. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/n64/__init__.py +0 -0
  112. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/n64/find_code_length.py +0 -0
  113. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/n64/rominfo.py +0 -0
  114. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/palettes.py +0 -0
  115. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/progress_bar.py +0 -0
  116. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/psx/__init__.py +0 -0
  117. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/psx/psxexeinfo.py +0 -0
  118. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/relocs.py +0 -0
  119. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/statistics.py +0 -0
  120. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/symbols.py +0 -0
  121. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/utils.py +0 -0
  122. {splat64-0.33.2 → splat64-0.34.1}/src/splat/util/vram_classes.py +0 -0
  123. {splat64-0.33.2 → splat64-0.34.1}/test/Dockerfile +0 -0
  124. {splat64-0.33.2 → splat64-0.34.1}/test/README.md +0 -0
  125. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/.gitignore +0 -0
  126. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/Makefile +0 -0
  127. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/build/basic_app.bin +0 -0
  128. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/dummy_ipl3.s +0 -0
  129. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/expected/.splache +0 -0
  130. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/expected/asm/data/main.bss.s +0 -0
  131. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/expected/asm/data/main.data.s +0 -0
  132. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/expected/asm/data/main.rodata.s +0 -0
  133. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/expected/asm/handwritten.s +0 -0
  134. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/expected/asm/header.s +0 -0
  135. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/expected/asm/main.s +0 -0
  136. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/expected/asm/nonmatchings/main/D_80000510.s +0 -0
  137. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/expected/asm/nonmatchings/main/func_80000400.s +0 -0
  138. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/expected/asm/nonmatchings/main/func_800004A0.s +0 -0
  139. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/expected/assets/dummy_ipl3.bin +0 -0
  140. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/expected/basic_app.d +0 -0
  141. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/expected/build/test/basic_app/split/src/main.asmproc.d +0 -0
  142. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/expected/src/main.c +0 -0
  143. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/expected/undefined_funcs_auto.txt +0 -0
  144. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/expected/undefined_syms_auto.txt +0 -0
  145. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/handwritten.s +0 -0
  146. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/header.s +0 -0
  147. {splat64-0.33.2 → splat64-0.34.1}/test/basic_app/main.c +0 -0
  148. {splat64-0.33.2 → splat64-0.34.1}/test/test_gen_expected.sh +0 -0
  149. {splat64-0.33.2 → splat64-0.34.1}/test.py +0 -0
@@ -1,5 +1,12 @@
1
1
  # splat Release Notes
2
2
 
3
+ ### 0.34.1
4
+ * Deprecate `--stdout-only` cli flag. Changed output such that errors and warnings go to stderr and all other output goes to stdout.
5
+
6
+ ### 0.34.0
7
+ * Add new global option `is_unsupported_platform`. If enabled, disable checks on platform option.
8
+ * Add new global option `allow_segment_overrides`. If enabled, allows to take precedence over the splat builtin platform segments via splat extension.
9
+
3
10
  ### 0.33.2
4
11
  * Change `make_full_disasm_for_code` to output other sections for the TU in addition to .text.
5
12
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: splat64
3
- Version: 0.33.2
3
+ Version: 0.34.1
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.2,<1.0.0
79
+ splat64[mips]>=0.34.1,<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.2,<1.0.0
24
+ splat64[mips]>=0.34.1,<1.0.0
25
25
  ```
26
26
 
27
27
  ### Optional dependencies
@@ -154,6 +154,21 @@ check_consecutive_segment_types: False
154
154
  ```
155
155
 
156
156
 
157
+ ### is_unsupported_platform
158
+
159
+ Disable checks on `platform` option.
160
+
161
+ Defaults to `False`.
162
+
163
+
164
+ ### allow_segment_overrides
165
+
166
+ Allows to take precedence over the splat builtin platform segments via splat extension.
167
+
168
+ Setting it to `True` tells splat to look for platorm segments in `extensions_path`.
169
+
170
+ Defaults to `False`.
171
+
157
172
  ## Paths
158
173
 
159
174
 
@@ -124,6 +124,8 @@ For a GCC example, see the [include.h](https://github.com/AngheloAlf/drmario64/b
124
124
 
125
125
  For IDO, you will need to use [asm-processor](https://github.com/simonlindholm/asm-processor) in order to include assembly code within the c files.
126
126
 
127
+ For MWCC, you will need [mwccgap](https://github.com/mkst/mwccgap) to include assembly code in the c files, similar to asm-processor.
128
+
127
129
  ## Assembly macros
128
130
 
129
131
  splat relies on some assembly macros for the asm generation. They usually live on the `include/macro.inc` file. Without these macros then an assembler would not be able to build our disassemblies.
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "splat64"
3
3
  # Should be synced with src/splat/__init__.py
4
- version = "0.33.2"
4
+ version = "0.34.1"
5
5
  description = "A binary splitting tool to assist with decompilation and modding projects"
6
6
  readme = "README.md"
7
7
  license = {file = "LICENSE"}
@@ -1,7 +1,7 @@
1
1
  __package_name__ = __name__
2
2
 
3
3
  # Should be synced with pyproject.toml
4
- __version__ = "0.33.2"
4
+ __version__ = "0.34.1"
5
5
  __author__ = "ethteck"
6
6
 
7
7
  from . import util as util
@@ -452,7 +452,8 @@ def main(
452
452
  make_full_disasm_for_code=False,
453
453
  ):
454
454
  if stdout_only:
455
- progress_bar.out_file = sys.stdout
455
+ log.write("--stdout-only flag is deprecated", status="warn")
456
+ progress_bar.out_file = sys.stdout
456
457
 
457
458
  # Load config
458
459
  global config
@@ -475,7 +476,8 @@ def main(
475
476
 
476
477
  cache = cache_handler.Cache(config, use_cache, verbose)
477
478
 
478
- initialize_platform(rom_bytes)
479
+ if not options.opts.is_unsupported_platform:
480
+ initialize_platform(rom_bytes)
479
481
 
480
482
  # Initialize segments
481
483
  all_segments = initialize_segments(config["segments"])
@@ -537,7 +539,9 @@ def add_arguments_to_parser(parser: argparse.ArgumentParser):
537
539
  help="Skips the disassembler's version check",
538
540
  )
539
541
  parser.add_argument(
540
- "--stdout-only", help="Print all output to stdout", action="store_true"
542
+ "--stdout-only",
543
+ help="Print all output to stdout (deprecated)",
544
+ action="store_true",
541
545
  )
542
546
  parser.add_argument(
543
547
  "--disassemble-all",
@@ -99,10 +99,21 @@ class Segment:
99
99
  if seg_type.startswith("."):
100
100
  seg_type = seg_type[1:]
101
101
 
102
- segment_class = Segment.get_base_segment_class(seg_type)
103
- if segment_class == None:
104
- # Look in extensions
102
+ if options.opts.allow_segment_overrides:
105
103
  segment_class = Segment.get_extension_segment_class(seg_type)
104
+ if segment_class == None:
105
+ segment_class = Segment.get_base_segment_class(seg_type)
106
+ else:
107
+ segment_class = Segment.get_base_segment_class(seg_type)
108
+ if segment_class == None:
109
+ # Look in extensions
110
+ segment_class = Segment.get_extension_segment_class(seg_type)
111
+
112
+ if segment_class == None:
113
+ log.error(
114
+ f"could not load segment type '{seg_type}'\n(hint: confirm your extension directory is configured correctly)"
115
+ )
116
+
106
117
  return segment_class
107
118
 
108
119
  @staticmethod
@@ -147,11 +158,8 @@ class Segment:
147
158
  ext_mod = importlib.util.module_from_spec(ext_spec)
148
159
  assert ext_spec.loader is not None
149
160
  ext_spec.loader.exec_module(ext_mod)
150
- except Exception as err:
151
- log.write(err, status="error")
152
- log.error(
153
- f"could not load segment type '{seg_type}'\n(hint: confirm your extension directory is configured correctly)"
154
- )
161
+ except Exception:
162
+ return None
155
163
 
156
164
  return getattr(
157
165
  ext_mod, f"{platform.upper()}Seg{seg_type[0].upper()}{seg_type[1:]}"
@@ -18,7 +18,12 @@ def write(*args, status=None, **kwargs):
18
18
  print("")
19
19
  newline = True
20
20
 
21
- print(status_to_ansi(status) + str(args[0]), *args[1:], **kwargs)
21
+ print(
22
+ status_to_ansi(status) + str(args[0]),
23
+ *args[1:],
24
+ **kwargs,
25
+ file=output_file(status),
26
+ )
22
27
 
23
28
 
24
29
  def error(*args, **kwargs) -> NoReturn:
@@ -44,3 +49,9 @@ def status_to_ansi(status: Status):
44
49
  return Style.DIM
45
50
  else:
46
51
  return ""
52
+
53
+
54
+ def output_file(status: Status):
55
+ if status == "warn" or status == "error":
56
+ return sys.stderr
57
+ return sys.stdout
@@ -41,6 +41,10 @@ class SplatOpts:
41
41
  gp: Optional[int]
42
42
  # Checks and errors if there are any non consecutive segment types
43
43
  check_consecutive_segment_types: bool
44
+ # Disable checks on `platform` option.
45
+ is_unsupported_platform: bool
46
+ # Allows to take precedence over the splat builtin platform segments via splat extension.
47
+ allow_segment_overrides: bool
44
48
 
45
49
  # Paths
46
50
  asset_path: Path
@@ -355,7 +359,13 @@ def _parse_yaml(
355
359
  p = OptParser(yaml)
356
360
 
357
361
  basename = p.parse_opt("basename", str)
358
- platform = p.parse_opt_within("platform", str, ["n64", "psx", "ps2", "psp"])
362
+ is_unsupported_platform = p.parse_opt("is_unsupported_platform", bool, False)
363
+
364
+ if is_unsupported_platform:
365
+ platform = p.parse_opt("platform", str)
366
+ else:
367
+ platform = p.parse_opt_within("platform", str, ["n64", "psx", "ps2", "psp"])
368
+
359
369
  comp = compiler.for_name(p.parse_opt("compiler", str, "IDO"))
360
370
 
361
371
  base_path = Path(
@@ -399,6 +409,8 @@ def _parse_yaml(
399
409
  target_path=p.parse_path(base_path, "target_path"),
400
410
  elf_path=p.parse_optional_path(base_path, "elf_path"),
401
411
  platform=platform,
412
+ is_unsupported_platform=is_unsupported_platform,
413
+ allow_segment_overrides=p.parse_opt("allow_segment_overrides", bool, False),
402
414
  compiler=comp,
403
415
  endianness=parse_endianness(),
404
416
  section_order=p.parse_opt(
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