1#ifndef YAZE_APP_GUI_FEATURE_FLAGS_MENU_H
2#define YAZE_APP_GUI_FEATURE_FLAGS_MENU_H
6#include "imgui/imgui.h"
17using ImGui::BeginMenu;
21using ImGui::Separator;
26 Checkbox(tr(
"Enable Overworld Sprites"),
29 Checkbox(tr(
"Save Overworld Maps"),
31 Checkbox(tr(
"Save Overworld Entrances"),
33 Checkbox(tr(
"Save Overworld Exits"),
35 Checkbox(tr(
"Save Overworld Items"),
37 Checkbox(tr(
"Save Overworld Sprites"),
39 Checkbox(tr(
"Save Overworld Properties"),
41 Checkbox(tr(
"Enable Custom Overworld Features"),
44 if (ImGui::Button(
"?")) {
45 ImGui::OpenPopup(
"CustomOverworldHelp");
47 if (ImGui::BeginPopup(
"CustomOverworldHelp")) {
48 ImGui::Text(tr(
"This flag enables ZSCustomOverworld features."));
50 tr(
"If ZSCustomOverworld ASM is already applied to the ROM,"));
51 ImGui::Text(tr(
"features are auto-enabled regardless of this flag."));
52 ImGui::Text(tr(
"For vanilla ROMs, enable this to use custom features."));
55 Checkbox(tr(
"Apply ZSCustomOverworld ASM"),
61 Checkbox(tr(
"Enable Special World Tail (0xA0-0xBF)"),
64 if (ImGui::Button(
"?##TailHelp")) {
65 ImGui::OpenPopup(
"TailExpansionHelp");
67 if (ImGui::BeginPopup(
"TailExpansionHelp")) {
69 tr(
"EXPERIMENTAL FEATURE"));
71 ImGui::Text(tr(
"Enables access to special world tail maps (0xA0-0xBF)."));
72 ImGui::Text(tr(
"These are unused map slots that can be made editable."));
75 ImGui::BulletText(tr(
"ZSCustomOverworld v3 ASM"));
76 ImGui::BulletText(tr(
"Pointer table expansion ASM patch"));
78 ImGui::Text(tr(
"Without proper ASM patches, tail maps will show"));
79 ImGui::Text(tr(
"blank tiles (safe fallback behavior)."));
86 Checkbox(tr(
"Save Dungeon Maps"),
90 tr(
"Dungeon Save Controls"));
91 Checkbox(tr(
"Save Objects"),
93 Checkbox(tr(
"Save Sprites"),
95 Checkbox(tr(
"Save Room Headers"),
97 Checkbox(tr(
"Save Torches"),
101 Checkbox(tr(
"Save Collision"),
104 Checkbox(tr(
"Save Pot Items"),
106 Checkbox(tr(
"Save Palettes"),
109 Checkbox(tr(
"Enable Custom Objects"),
112 if (ImGui::Button(
"?##CustomObjHelp")) {
113 ImGui::OpenPopup(
"CustomObjectsHelp");
115 if (ImGui::BeginPopup(
"CustomObjectsHelp")) {
116 ImGui::Text(tr(
"Enables custom dungeon object support:"));
117 ImGui::BulletText(tr(
"Minecart track editor panel"));
118 ImGui::BulletText(tr(
"Registered custom object graphics"));
121 ImGui::BulletText(tr(
"custom_objects_folder set in project file"));
122 ImGui::BulletText(tr(
"Custom object .bin files in that folder"));
128 Checkbox(tr(
"Save All Palettes"),
131 Checkbox(tr(
"Save Graphics Sheets"),
137 Checkbox(tr(
"Enable Console Logging"),
139 Checkbox(tr(
"Enable Performance Monitoring"),
141 Checkbox(tr(
"Enable Tiered GFX Architecture"),
145 Checkbox(tr(
"Use Native File Dialog (NFD)"),
153 tr(
"Load a ROM to configure ZSCustomOverworld flags"));
160 tr(
"ROM does not support ZSCustomOverworld (v2+ required)"));
165 tr(
"These flags globally enable/disable ZSCustomOverworld features. "
166 "When disabled, the game uses vanilla behavior."));
172 if (Checkbox(tr(
"Area Background Colors"), &bg_enabled)) {
174 bg_enabled ? 0x01 : 0x00;
176 if (ImGui::IsItemHovered()) {
177 ImGui::SetTooltip(tr(
"Enable per-area custom background color (v2+)"));
181 bool main_pal_enabled =
183 if (Checkbox(tr(
"Custom Main Palette"), &main_pal_enabled)) {
185 main_pal_enabled ? 0x01 : 0x00;
187 if (ImGui::IsItemHovered()) {
188 ImGui::SetTooltip(tr(
"Enable per-area custom main palette (v2+)"));
193 if (Checkbox(tr(
"Custom Mosaic Effects"), &mosaic_enabled)) {
195 mosaic_enabled ? 0x01 : 0x00;
197 if (ImGui::IsItemHovered()) {
198 ImGui::SetTooltip(tr(
"Enable per-area mosaic effect control (v2+)"));
204 if (Checkbox(tr(
"Custom Animated GFX"), &anim_enabled)) {
206 anim_enabled ? 0x01 : 0x00;
208 if (ImGui::IsItemHovered()) {
209 ImGui::SetTooltip(tr(
"Enable per-area animated tile graphics (v3+)"));
213 bool overlay_enabled =
215 if (Checkbox(tr(
"Custom Subscreen Overlay"), &overlay_enabled)) {
217 overlay_enabled ? 0x01 : 0x00;
219 if (ImGui::IsItemHovered()) {
220 ImGui::SetTooltip(tr(
"Enable per-area visual effect overlays (v3+)"));
224 bool tile_gfx_enabled =
226 if (Checkbox(tr(
"Custom Tile GFX Groups"), &tile_gfx_enabled)) {
228 tile_gfx_enabled ? 0x01 : 0x00;
230 if (ImGui::IsItemHovered()) {
232 tr(
"Enable per-area custom tile graphics groups (v3+)"));
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
const Theme & GetCurrentTheme() const
static ThemeManager & Get()
static bool SupportsCustomBGColors(OverworldVersion version)
Check if ROM supports custom background colors per area (v2+)
static OverworldVersion GetVersion(const Rom &rom)
Detect ROM version from ASM marker byte.
ImVec4 ConvertColorToImVec4(const Color &color)
constexpr int OverworldCustomTileGFXGroupEnabled
constexpr int OverworldCustomAreaSpecificBGEnabled
constexpr int OverworldCustomAnimatedGFXEnabled
constexpr int OverworldCustomMainPaletteEnabled
constexpr int OverworldCustomMosaicEnabled
constexpr int OverworldCustomSubscreenOverlayEnabled