16 auto *config_group = app.add_option_group(
"Config Options",
"Override configuration values");
17 config_group->footer(
"");
20 config_group->add_option(
21 "--num-tiles-in-primary",
23 "Number Of Tiles In Primary - The NUM_TILES_IN_PRIMARY setting from include/fieldmap.h.");
26 config_group->add_option(
29 "Number Of Tiles Total - The NUM_TILES_TOTAL setting from include/fieldmap.h.");
32 config_group->add_option(
33 "--num-metatiles-in-primary",
35 "Number Of Metatiles In Primary - The NUM_METATILES_IN_PRIMARY setting from include/fieldmap.h.");
38 config_group->add_option(
39 "--num-metatiles-total",
41 "Number Of Metatiles Total - The NUM_METATILES_TOTAL setting from include/fieldmap.h.");
44 config_group->add_option(
45 "--num-pals-in-primary",
47 "Number Of Palettes In Primary - The NUM_PALS_IN_PRIMARY setting from include/fieldmap.h.");
50 config_group->add_option(
53 "Number Of Palettes Total - The NUM_PALS_TOTAL setting from include/fieldmap.h.");
56 config_group->add_option(
57 "--max-map-data-size",
59 "Max Map Data Size - The MAX_MAP_DATA_SIZE setting from include/fieldmap.h.");
62 config_group->add_option(
63 "--num-tiles-per-metatile",
65 "Number Of Tiles Per Metatile - The NUM_TILES_PER_METATILE setting from include/fieldmap.h.");
68 config_group->add_option(
69 "--extrinsic-transparency",
71 "Extrinsic Transparency - The RGB color to treat as transparent during compilation. (format: R,G,B or R,G,B,A, values 0-255)")
72 ->type_name(
"R,G,B[,A]");
75 config_group->add_option(
78 "Tiles Edit Mode - The allowed edit mode for the tiles.png artifact.")
79 ->type_name(
"{locked|patch|optimize}");
82 config_group->add_option(
85 "Palettes Edit Mode - The allowed edit mode for the palettes/ artifacts.")
86 ->type_name(
"{locked|patch|optimize}");
89 config_group->add_flag(
90 "--pal-hints-enabled,!--no-pal-hints-enabled",
91 [&storage](std::int64_t count) {
100 "Palette Hints Enabled - Enable configured palette hints.");
103 config_group->add_option(
104 "--packing-strategy",
106 "Packing Strategy - The palette packing algorithm to use during compilation.")
107 ->type_name(
"{best-fusion|backtracking|overload-and-remove}");
110 config_group->add_option(
111 "--tile-sharing-packing",
113 "Tile Sharing Packing - Controls whether palette packing considers tile sharing.")
114 ->type_name(
"{off|biased|optimal}");
117 config_group->add_option(
118 "--tile-sharing-alignment",
120 "Tile Sharing Alignment - Controls palette slot alignment strategy for tile sharing.")
121 ->type_name(
"{off|greedy|optimal}");
124 config_group->add_option(
127 "Tiles Palette Mode - The color mode to use when saving the tiles.png artifact.")
128 ->type_name(
"{true-color|greyscale}");
131 config_group->add_option(
132 "--anim-pal-resolution-strategy",
134 "Global Animation Palette Resolution Strategy - The global strategy for determining which palette to use when decompiling animation tiles.")
135 ->type_name(
"{scan-local-metatiles|palette-00|palette-01|palette-02|palette-03|palette-04|palette-05|palette-06|palette-07|palette-08|palette-09|palette-10|palette-11|palette-12|palette-13|palette-14|palette-15|internal-png-pal|scan-all-tilesets}");
138 config_group->add_option(
139 "--anim-key-frame-resolution-strategy",
141 "Global Animation Key Frame Resolution Strategy - The strategy to use when decompilation encounters duplicate key frame subtiles.")
142 ->type_name(
"{error|warning|mangle}");
145 config_group->add_option(
146 "--anim-multi-pal-subtile-resolution-strategy",
148 "Global Animation Multi-Pal Subtile Resolution Strategy - The strategy for handling animation subtiles referenced with multiple palettes.")
149 ->type_name(
"{error|warning|split}");
152 config_group->add_option(
155 "Global Frame Linking - The global default frame linking mode for animations.")
156 ->type_name(
"{automatic|manual|hybrid}");
159 config_group->add_flag(
160 "--cross-tileset-anim-linking,!--no-cross-tileset-anim-linking",
161 [&storage](std::int64_t count) {
165 else if (count < 0) {
170 "Cross-Tileset Animation Linking - Enable automatic matching of secondary tiles against primary animation key frames.");
173 config_group->add_flag(
174 "--verify-checksums,!--no-verify-checksums",
175 [&storage](std::int64_t count) {
179 else if (count < 0) {
184 "Verify Checksums - Enable or disable artifact checksum verification.");
187 config_group->add_option(
188 "--primary-pairing-mode",
190 "Primary Pairing Mode - How a secondary tileset resolves its partner primary for compilation.")
191 ->type_name(
"{off|manual|automatic}");
194 config_group->add_option(
195 "--primary-pairing-partners",
197 "Primary Pairing Partners - Tileset names to use as partner primaries in manual pairing mode.");
200 config_group->add_option(
201 "--diagnostic-warnings-exclude",
203 "Diagnostic Warnings Exclude - Regex patterns for warning tags to exclude.");
206 config_group->add_option(
207 "--diagnostic-warnings-include",
209 "Diagnostic Warnings Include - Regex patterns for warning tags to include (overrides excludes).");
212 config_group->add_option(
213 "--diagnostic-remarks-exclude",
215 "Diagnostic Remarks Exclude - Regex patterns for remark tags to exclude.");
218 config_group->add_option(
219 "--diagnostic-remarks-include",
221 "Diagnostic Remarks Include - Regex patterns for remark tags to include (overrides excludes).");
224 config_group->add_option(
225 "--tileset-paths-primary-src",
227 "Tileset Paths Primary Source - The directory for primary tileset Porytiles component assets.");
230 config_group->add_option(
231 "--tileset-paths-primary-bin",
233 "Tileset Paths Primary Bin - The directory for primary tileset Porymap component assets.");
236 config_group->add_option(
237 "--tileset-paths-secondary-src",
239 "Tileset Paths Secondary Source - The directory for secondary tileset Porytiles component assets.");
242 config_group->add_option(
243 "--tileset-paths-secondary-bin",
245 "Tileset Paths Secondary Bin - The directory for secondary tileset Porymap component assets.");
248 config_group->add_option(
249 "--metatile-attr-size",
251 "Metatile Attribute Size - The size in bytes of each metatile attribute entry (2 for Emerald/Ruby, 4 for FireRed).");
254 config_group->add_flag(
255 "--tileset-animations-wire-anim-code,!--no-tileset-animations-wire-anim-code",
256 [&storage](std::int64_t count) {
260 else if (count < 0) {
265 "Tileset Animations Wire Anim Code - Enable or disable automatic animation code wiring.");
void register_config_options(CLI::App &app, CliOptionStorage &storage)
Registers all config options with a CLI11 App.
Storage struct for CLI option values.
std::optional< std::string > num_pals_in_primary
std::vector< std::string > diagnostic_remarks_include
std::optional< std::string > num_metatiles_in_primary
std::optional< std::string > num_pals_total
std::optional< std::string > tileset_paths_primary_bin
std::optional< std::string > packing_strategy
std::optional< std::string > cross_tileset_anim_linking
std::optional< std::string > tiles_edit_mode
std::optional< std::string > pals_edit_mode
std::optional< std::string > num_tiles_total
std::optional< std::string > tileset_paths_secondary_bin
std::optional< std::string > tileset_animations_wire_anim_code
std::optional< std::string > num_tiles_per_metatile
std::optional< std::string > max_map_data_size
std::optional< std::string > tileset_paths_primary_src
std::optional< std::string > tiles_pal_mode
std::optional< std::string > tileset_paths_secondary_src
std::optional< std::string > tile_sharing_packing
std::optional< std::string > num_tiles_in_primary
std::optional< std::string > pal_hints_enabled
std::vector< std::string > diagnostic_warnings_include
std::optional< std::string > global_frame_linking
std::optional< std::string > metatile_attr_size
std::optional< std::string > global_anim_multi_pal_subtile_resolution_strategy
std::optional< std::string > global_anim_key_frame_resolution_strategy
std::vector< std::string > diagnostic_remarks_exclude
std::optional< std::string > num_metatiles_total
std::optional< std::string > extrinsic_transparency
std::vector< std::string > diagnostic_warnings_exclude
std::optional< std::string > tile_sharing_alignment
std::optional< std::string > primary_pairing_mode
std::optional< std::string > global_anim_pal_resolution_strategy
std::optional< std::string > verify_checksums
std::vector< std::string > primary_pairing_partners