1#ifndef YAZE_APP_GUI_FEATURE_FLAGS_MENU_H
2#define YAZE_APP_GUI_FEATURE_FLAGS_MENU_H
6#include "imgui/imgui.h"
16using ImGui::BeginMenu;
20using ImGui::Separator;
25 Checkbox(
"Enable Overworld Sprites",
28 Checkbox(
"Save Overworld Maps",
30 Checkbox(
"Save Overworld Entrances",
32 Checkbox(
"Save Overworld Exits",
34 Checkbox(
"Save Overworld Items",
36 Checkbox(
"Save Overworld Properties",
38 Checkbox(
"Enable Custom Overworld Features",
41 if (ImGui::Button(
"?")) {
42 ImGui::OpenPopup(
"CustomOverworldHelp");
44 if (ImGui::BeginPopup(
"CustomOverworldHelp")) {
45 ImGui::Text(
"This flag enables ZSCustomOverworld features.");
46 ImGui::Text(
"If ZSCustomOverworld ASM is already applied to the ROM,");
47 ImGui::Text(
"features are auto-enabled regardless of this flag.");
48 ImGui::Text(
"For vanilla ROMs, enable this to use custom features.");
51 Checkbox(
"Apply ZSCustomOverworld ASM",
57 Checkbox(
"Enable Special World Tail (0xA0-0xBF)",
60 if (ImGui::Button(
"?##TailHelp")) {
61 ImGui::OpenPopup(
"TailExpansionHelp");
63 if (ImGui::BeginPopup(
"TailExpansionHelp")) {
65 "EXPERIMENTAL FEATURE");
67 ImGui::Text(
"Enables access to special world tail maps (0xA0-0xBF).");
68 ImGui::Text(
"These are unused map slots that can be made editable.");
71 ImGui::BulletText(
"ZSCustomOverworld v3 ASM");
72 ImGui::BulletText(
"Pointer table expansion ASM patch");
74 ImGui::Text(
"Without proper ASM patches, tail maps will show");
75 ImGui::Text(
"blank tiles (safe fallback behavior).");
85 "Dungeon Save Controls");
88 Checkbox(
"Save Room Headers",
93 Checkbox(
"Save Collision",
96 Checkbox(
"Save Pot Items",
98 Checkbox(
"Save Palettes",
103 if (ImGui::Button(
"?##CustomObjHelp")) {
104 ImGui::OpenPopup(
"CustomObjectsHelp");
106 if (ImGui::BeginPopup(
"CustomObjectsHelp")) {
107 ImGui::Text(
"Enables custom dungeon object support:");
108 ImGui::BulletText(
"Minecart track editor panel");
109 ImGui::BulletText(
"Custom object graphics (0x31, 0x32)");
112 ImGui::BulletText(
"custom_objects_folder set in project file");
113 ImGui::BulletText(
"Custom object .bin files in that folder");
121 Checkbox(
"Save Graphics Sheets",
127 Checkbox(
"Enable Console Logging",
129 Checkbox(
"Enable Performance Monitoring",
131 Checkbox(
"Enable Tiered GFX Architecture",
135 Checkbox(
"Use Native File Dialog (NFD)",
142 ImGui::TextDisabled(
"Load a ROM to configure ZSCustomOverworld flags");
148 ImGui::TextDisabled(
"ROM does not support ZSCustomOverworld (v2+ required)");
153 "These flags globally enable/disable ZSCustomOverworld features. "
154 "When disabled, the game uses vanilla behavior.");
160 if (Checkbox(
"Area Background Colors", &bg_enabled)) {
162 bg_enabled ? 0x01 : 0x00;
164 if (ImGui::IsItemHovered()) {
165 ImGui::SetTooltip(
"Enable per-area custom background color (v2+)");
169 bool main_pal_enabled =
171 if (Checkbox(
"Custom Main Palette", &main_pal_enabled)) {
173 main_pal_enabled ? 0x01 : 0x00;
175 if (ImGui::IsItemHovered()) {
176 ImGui::SetTooltip(
"Enable per-area custom main palette (v2+)");
180 bool mosaic_enabled =
182 if (Checkbox(
"Custom Mosaic Effects", &mosaic_enabled)) {
184 mosaic_enabled ? 0x01 : 0x00;
186 if (ImGui::IsItemHovered()) {
187 ImGui::SetTooltip(
"Enable per-area mosaic effect control (v2+)");
193 if (Checkbox(
"Custom Animated GFX", &anim_enabled)) {
195 anim_enabled ? 0x01 : 0x00;
197 if (ImGui::IsItemHovered()) {
198 ImGui::SetTooltip(
"Enable per-area animated tile graphics (v3+)");
202 bool overlay_enabled =
204 if (Checkbox(
"Custom Subscreen Overlay", &overlay_enabled)) {
206 overlay_enabled ? 0x01 : 0x00;
208 if (ImGui::IsItemHovered()) {
209 ImGui::SetTooltip(
"Enable per-area visual effect overlays (v3+)");
213 bool tile_gfx_enabled =
215 if (Checkbox(
"Custom Tile GFX Groups", &tile_gfx_enabled)) {
217 tile_gfx_enabled ? 0x01 : 0x00;
219 if (ImGui::IsItemHovered()) {
220 ImGui::SetTooltip(
"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