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 Properties"),
39 Checkbox(tr(
"Enable Custom Overworld Features"),
42 if (ImGui::Button(
"?")) {
43 ImGui::OpenPopup(
"CustomOverworldHelp");
45 if (ImGui::BeginPopup(
"CustomOverworldHelp")) {
46 ImGui::Text(tr(
"This flag enables ZSCustomOverworld features."));
48 tr(
"If ZSCustomOverworld ASM is already applied to the ROM,"));
49 ImGui::Text(tr(
"features are auto-enabled regardless of this flag."));
50 ImGui::Text(tr(
"For vanilla ROMs, enable this to use custom features."));
53 Checkbox(tr(
"Apply ZSCustomOverworld ASM"),
59 Checkbox(tr(
"Enable Special World Tail (0xA0-0xBF)"),
62 if (ImGui::Button(
"?##TailHelp")) {
63 ImGui::OpenPopup(
"TailExpansionHelp");
65 if (ImGui::BeginPopup(
"TailExpansionHelp")) {
67 tr(
"EXPERIMENTAL FEATURE"));
69 ImGui::Text(tr(
"Enables access to special world tail maps (0xA0-0xBF)."));
70 ImGui::Text(tr(
"These are unused map slots that can be made editable."));
73 ImGui::BulletText(tr(
"ZSCustomOverworld v3 ASM"));
74 ImGui::BulletText(tr(
"Pointer table expansion ASM patch"));
76 ImGui::Text(tr(
"Without proper ASM patches, tail maps will show"));
77 ImGui::Text(tr(
"blank tiles (safe fallback behavior)."));
84 Checkbox(tr(
"Save Dungeon Maps"),
88 tr(
"Dungeon Save Controls"));
89 Checkbox(tr(
"Save Objects"),
91 Checkbox(tr(
"Save Sprites"),
93 Checkbox(tr(
"Save Room Headers"),
95 Checkbox(tr(
"Save Torches"),
99 Checkbox(tr(
"Save Collision"),
102 Checkbox(tr(
"Save Pot Items"),
104 Checkbox(tr(
"Save Palettes"),
107 Checkbox(tr(
"Enable Custom Objects"),
110 if (ImGui::Button(
"?##CustomObjHelp")) {
111 ImGui::OpenPopup(
"CustomObjectsHelp");
113 if (ImGui::BeginPopup(
"CustomObjectsHelp")) {
114 ImGui::Text(tr(
"Enables custom dungeon object support:"));
115 ImGui::BulletText(tr(
"Minecart track editor panel"));
116 ImGui::BulletText(tr(
"Custom object graphics (0x31, 0x32)"));
119 ImGui::BulletText(tr(
"custom_objects_folder set in project file"));
120 ImGui::BulletText(tr(
"Custom object .bin files in that folder"));
126 Checkbox(tr(
"Save All Palettes"),
129 Checkbox(tr(
"Save Graphics Sheets"),
135 Checkbox(tr(
"Enable Console Logging"),
137 Checkbox(tr(
"Enable Performance Monitoring"),
139 Checkbox(tr(
"Enable Tiered GFX Architecture"),
143 Checkbox(tr(
"Use Native File Dialog (NFD)"),
151 tr(
"Load a ROM to configure ZSCustomOverworld flags"));
158 tr(
"ROM does not support ZSCustomOverworld (v2+ required)"));
163 tr(
"These flags globally enable/disable ZSCustomOverworld features. "
164 "When disabled, the game uses vanilla behavior."));
170 if (Checkbox(tr(
"Area Background Colors"), &bg_enabled)) {
172 bg_enabled ? 0x01 : 0x00;
174 if (ImGui::IsItemHovered()) {
175 ImGui::SetTooltip(tr(
"Enable per-area custom background color (v2+)"));
179 bool main_pal_enabled =
181 if (Checkbox(tr(
"Custom Main Palette"), &main_pal_enabled)) {
183 main_pal_enabled ? 0x01 : 0x00;
185 if (ImGui::IsItemHovered()) {
186 ImGui::SetTooltip(tr(
"Enable per-area custom main palette (v2+)"));
191 if (Checkbox(tr(
"Custom Mosaic Effects"), &mosaic_enabled)) {
193 mosaic_enabled ? 0x01 : 0x00;
195 if (ImGui::IsItemHovered()) {
196 ImGui::SetTooltip(tr(
"Enable per-area mosaic effect control (v2+)"));
202 if (Checkbox(tr(
"Custom Animated GFX"), &anim_enabled)) {
204 anim_enabled ? 0x01 : 0x00;
206 if (ImGui::IsItemHovered()) {
207 ImGui::SetTooltip(tr(
"Enable per-area animated tile graphics (v3+)"));
211 bool overlay_enabled =
213 if (Checkbox(tr(
"Custom Subscreen Overlay"), &overlay_enabled)) {
215 overlay_enabled ? 0x01 : 0x00;
217 if (ImGui::IsItemHovered()) {
218 ImGui::SetTooltip(tr(
"Enable per-area visual effect overlays (v3+)"));
222 bool tile_gfx_enabled =
224 if (Checkbox(tr(
"Custom Tile GFX Groups"), &tile_gfx_enabled)) {
226 tile_gfx_enabled ? 0x01 : 0x00;
228 if (ImGui::IsItemHovered()) {
230 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