- Removed unnecessary compile flags from .clangd to streamline configuration.
- Added YAZE_BUILD_LIB option in CMakeLists.txt for conditional library building in minimal builds.
- Enhanced SDL2 CMake configuration to set include directories for bundled SDL, ensuring proper integration.
- Updated test CMakeLists.txt to conditionally link yaze_c and ImGuiTestEngine based on build options, improving modularity and flexibility.
- Refactored test_editor.cc and test_editor.h to conditionally include ImGuiTestEngine headers and manage engine initialization based on availability.
- Introduced a new .clangd file to specify compile flags, inlay hints, hover options, and diagnostics settings for improved code analysis and development experience.
- Updated CMakePresets.json to enable export of compile commands, enhancing integration with IDEs and tools that rely on compilation information.
- Simplified platform variable initialization by removing redundant declarations and ensuring a default case for macOS.
- Improved code clarity and maintainability in the GetConfigDirectory function.
- Introduced a .clang-format file to enforce Google C++ style guidelines across the codebase.
- Updated CMakeLists.txt to include custom targets for formatting and format-checking using clang-format.
- Added a quality_check.sh script to automate code quality checks, including formatting and static analysis with cppcheck.
- Enhanced CMakePresets.json with new macOS-specific configurations for ARM64 and universal binaries, improving build flexibility and support.
- Updated the CI workflow to conditionally set up vcpkg only for non-CI Windows builds, improving build efficiency.
- Simplified CMake configuration for Windows by consolidating build type checks and ensuring proper handling of resource files based on the YAZE_MINIMAL_BUILD flag.
- Enhanced modularity in file dialog implementation by introducing wrapper methods for better maintainability and clarity in the codebase.
- Cleaned up formatting in main function for better readability.
- Simplified platform initialization in LoadConfigFile and GetConfigDirectory functions.
- Introduced wrapper methods for file dialog operations to enhance modularity and maintainability.
- Improved code clarity by adjusting line breaks and spacing in various functions.
- Updated the CMake configuration to use target_compile_definitions for ImGuiTestEngine, improving clarity and maintainability.
- Introduced IMGUI_TEST_ENGINE_DEFINITIONS to streamline the definition process for targets linking to ImGuiTestEngine.
- Modified feature flags in features.h to conditionally enable the native file dialog based on the YAZE_ENABLE_NFD flag, enhancing flexibility in feature management.
- Added a fallback CRC32 implementation in bps.cc when zlib is not available, ensuring compatibility across different build environments.
- Wrapped zlib inclusion and CRC32 function definition with preprocessor directives to maintain functionality based on the YAZE_LIB_PNG flag.
- Added support for UI tests in the CMake configuration by introducing the YAZE_ENABLE_UI_TESTS option, ensuring proper linking with the ImGuiTestEngine if available.
- Updated SDL2 linking in test CMakeLists to use variable targets for improved flexibility and compatibility across platforms.
- Modified sprite_position_test to check for ROM file existence using std::ifstream for better error handling.
- Modified the preprocessor directive to include WIN32 in the condition for adding the SDL subdirectory, ensuring compatibility across additional Windows platforms.
- Added new Abseil components: absl::str_format, absl::container_memory, absl::memory, and absl::utility to the CMake configuration for improved functionality.
- Updated SDL2 configuration to use static targets when bundled and adjusted the handling of system SDL to ensure proper target usage across platforms.
- Removed static format strings in HexByte, HexWord, HexLong, and HexLongLong functions.
- Replaced them with direct format specifiers in absl::StrFormat calls to enhance code clarity and reduce redundancy.
- Updated CMakeLists.txt to disable additional optional components (EMU and Z3ED) in minimal builds for better build management.
- Refactored emulation timing calculations in emu.cc to use consistent method naming conventions, enhancing code readability and maintainability.
- Modified the CI workflow to conditionally set up vcpkg and configure CMake based on the build type for Windows, enhancing build flexibility.
- Refactored the handling of staircase objects in the Room class to use initializer lists for improved clarity and consistency in object construction.
- Updated chest data handling to utilize modern C++ syntax for better readability.
- Updated preprocessor directives to ensure NFD functionality is only included when YAZE_ENABLE_NFD is defined and enabled.
- Corrected the usage of NFD functions to improve resource management by replacing deprecated calls with the appropriate alternatives.
- Ensured consistent handling of file and folder dialog operations across platforms, enhancing overall user experience.
- Implemented NFD (Native File Dialog) functionality for opening files and folders when YAZE_ENABLE_NFD is defined.
- Enhanced ShowOpenFileDialogNFD and ShowOpenFolderDialogNFD methods to utilize NFD for improved user experience.
- Added necessary initialization and cleanup for NFD to ensure proper resource management.
- Removed several internal Abseil components from the CMake configuration to simplify dependency management.
- Cleaned up the list of required Abseil libraries, enhancing clarity and maintainability of the build configuration.
- Introduced a new app icon file (yaze.icns) for the macOS bundle.
- Updated CMake configuration to set macOS bundle properties, including icon file, bundle name, executable name, and versioning information.
- Removed outdated macOS bundle settings to streamline the configuration process.
- Modified the CI workflow to enable vcpkg installation and specify the vcpkg directory and JSON glob for better dependency management.
- Added <cstring> header inclusion in bps.cc to support string manipulation functionalities.
- Updated minimum CMake version requirement from 3.5 to 3.16 to leverage new features and policies.
- Enhanced CI workflows to include additional build configurations for Ubuntu and macOS, improving cross-platform support.
- Added conditional linking for ImGui Test Engine in the CMakeLists, allowing for UI testing when enabled.
- Refactored CMake commands in CI to ensure consistent policy version handling and streamlined build processes.
- Introduced new constructors for MenuItem in the GUI to enhance menu item management and flexibility.
- Revamped README to reflect the new branding and major features of YAZE, including complete Asar 65816 assembler integration and enhanced CLI tools.
- Added new documentation files for getting started, build instructions, Asar integration, and comprehensive testing guides.
- Removed outdated documentation and streamlined the structure for better navigation.
- Introduced a changelog to track version history and significant updates.
- Updated API reference and added detailed guides for dungeon and overworld editing functionalities.
- Introduced new rendering methods for various object types including stairs, chests, doors, walls, pots, and sprites, improving visual representation in the dungeon canvas.
- Updated the DrawDungeonCanvas method to streamline object rendering and enhance graphics handling.
- Added detailed layer information overlay to provide context on room objects and sprites.
- Implemented object dimension calculations for walls to ensure accurate rendering based on size properties.
- Improved fallback rendering for objects without valid graphics, enhancing user experience during object placement and editing.
- Integrated new components: DungeonToolset, DungeonObjectInteraction, DungeonRenderer, DungeonRoomLoader, and DungeonUsageTracker to streamline dungeon editing functionalities.
- Updated DungeonEditor to utilize the new components for room loading, object interaction, and rendering, improving code organization and maintainability.
- Enhanced object selection and placement features, including drag-and-drop functionality and improved UI interactions.
- Removed legacy methods and refactored existing code to delegate responsibilities to the new components, ensuring a cleaner architecture.
- Added support for usage tracking of blocksets, spritesets, and palettes across dungeon rooms, providing insights for optimization.
- Added methods for object selection rectangle handling, including CheckForObjectSelection, DrawObjectSelectRect, and SelectObjectsInRect.
- Enhanced DungeonEditor to support right-click drag selection for multiple objects, improving user interaction and object management.
- Updated the UI in DungeonObjectSelector to optimize object previews and improve layout for better visibility.
- Refactored various sections of DungeonEditor for code clarity and consistency, including adjustments to object rendering and selection processes.
- Deleted the `dungeon-integration-tests.md` file, which contained comprehensive integration tests for the dungeon object rendering system.
- Added `dungeon-object-system.md`, detailing the architecture, object types, placement processes, rendering pipeline, and user interface components of the YAZE Dungeon Object System.
- Enhanced the DungeonEditor and DungeonObjectSelector with improved UI methods and object selection callbacks for better user interaction and object management.
- Replaced vertical separators with standard separators in the EditorManager's menu bar for consistency.
- Introduced a new room selection callback mechanism in DungeonRoomSelector to facilitate room selection events.
- Enhanced DungeonEditor with drag-and-select functionality for object placement, improving user interaction.
- Added an object browser in DungeonObjectSelector for better object management and preview capabilities.
- Streamlined object rendering and selection processes, ensuring a more intuitive editing experience.
- Enhanced the ApplyZSCustomOverworldASM method to validate target versions, check current ROM status, and apply ASM patches with error handling.
- Introduced UpdateROMVersionMarkers method to update ROM version markers and enable feature flags based on the applied version.
- Added logging for successful patch applications and symbol discoveries, improving traceability during the patching process.
- Included backup and restore functionality for ROM data during ASM application to ensure data integrity.
- Added performance logging to the LoadAssets method in EditorManager, tracking the time taken to load ROM assets.
- Implemented lazy loading of workspace presets in the DrawLayoutPresets method to improve UI responsiveness.
- Refactored menu item handling in the DrawMenu function to streamline the display of subitems and separators, enhancing user interaction.
- Introduced session renaming functionality, allowing users to customize session names for better organization.
- Implemented duplicate session detection to prevent loading the same ROM in multiple sessions.
- Enhanced workspace preset management with improved error handling and validation during loading and saving.
- Updated UI elements to support lazy loading of workspace presets, ensuring they are available when needed.
- Refactored session display logic to provide clearer naming and improved user experience in session management.
- Introduced a feature flag to toggle between Native File Dialog (NFD) and bespoke file dialog implementations.
- Updated FileDialogWrapper to utilize the feature flag for opening files and folders, improving cross-platform compatibility.
- Enhanced the UI to allow users to configure the file dialog mode, providing better user control over file handling.
- Added new methods for testing both NFD and bespoke implementations directly from the UI, improving testing capabilities.
- Updated test management to include options for enabling/disabling individual tests, enhancing flexibility in test execution.
- Added logging to track ROM changes in EditorManager, ensuring TestManager is updated with the current ROM.
- Implemented real-time ROM status checks in TestManager for better debugging and user feedback.
- Introduced a dialog for creating and managing test ROM sessions, allowing users to open modified ROMs easily.
- Enhanced the testing framework with methods for creating test ROM copies and generating filenames with timestamps.
- Improved the overall user interface of the TestManager, including a more informative dashboard and session management options.
- Added new menu options in EditorManager for ROM analysis and testing, including data integrity checks and save/load testing.
- Updated TestManager to include enhanced logging for ROM state and new actions for refreshing the current ROM reference.
- Introduced a dedicated UI for displaying ROM test results and options for running tests on the currently loaded ROM.
- Improved the overall layout and organization of the testing dashboard for better user experience and accessibility.
- Enhanced the DrawMenuBar method in EditorManager to improve the alignment and display of version information and session management.
- Updated the button size in MapPropertiesSystem for better usability.
- Introduced detailed ROM availability checks in RomDependentTestSuite, improving error handling and test coverage.
- Enhanced the TestManager UI to provide a more informative dashboard with detailed ROM status and actions, including a refresh option for the current ROM reference.
- Commented out the ArenaTestSuite registration in EditorManager with a TODO for future implementation.
- Updated the DrawMenuBar method in EditorManager to enhance version display alignment and tooltip functionality.
- Modified OverworldEditor to include error handling for ASM application and commented out the Asar wrapper for build compatibility.
- Enhanced Tile16Editor with additional bounds checks and error handling to ensure robustness during tile operations.
- Introduced new test cases in RomDependentTestSuite for Tile16Editor functionality and comprehensive save operations, improving test coverage.
- Deleted the `canvas-migration.md` and `canvas-refactor-summary.md` files as they are no longer relevant to the current codebase.
- These documents outlined previous strategies and issues related to the Canvas class, which have since been resolved through recent refactoring efforts.
- Added context-aware options in the EditorManager for refreshing overworld and dungeon data, improving user interaction.
- Streamlined the OverworldEditor by removing redundant menu bars and integrating refresh options directly into the context menu.
- Improved the Tile16Editor by scaling tile displays for better visibility and enhancing the blockset canvas functionality.
- Introduced new bitmap property dialogs in the Canvas class, allowing users to view and edit bitmap and palette properties directly from the context menu.
- Refactored various UI elements for consistency and clarity, enhancing overall user experience.
- Introduced a new feature flag to enable the application of ZSCustomOverworld ASM patches when upgrading ROM versions.
- Updated the OverworldEditor to include a dialog for upgrading ROM versions, with options to apply ASM patches based on the feature flag.
- Enhanced the DrawOverworldMapSettings method to dynamically adjust UI elements based on the ROM version and provide upgrade options.
- Implemented the ApplyZSCustomOverworldASM method to handle the patch application process, including error handling and logging.
- Updated feature flags display in the UI to reflect the new ASM patch application option, improving user experience and functionality.
- Added functionality for creating, duplicating, and closing sessions, enhancing user experience with multiple ROMs.
- Integrated session management UI elements, including a session switcher and session manager, for better navigation.
- Introduced workspace layout management features, allowing users to save and load layouts, and reset to defaults.
- Updated popup manager to include workspace help and session limit warnings, improving user guidance.
- Enhanced UI drawing functions to support new session and layout management features, ensuring a cohesive user interface.
- Added a new RomDependentTestSuite to facilitate testing functionalities that rely on the currently loaded ROM, enhancing test coverage.
- Updated EditorManager to register the new test suite and manage the current ROM for dependent tests.
- Enhanced the IntegratedTestSuite to first check for a loaded ROM before proceeding with tests, improving robustness.
- Improved the TestManager UI to indicate ROM loading status and provide feedback for running ROM-dependent tests.
- Updated CMake configuration to include the new test suite header, ensuring proper integration into the build system.
- Conditionally include Google Test support in the build configuration, allowing for integrated testing when enabled.
- Refactor ImGui Test Engine setup to be conditional based on the YAZE_ENABLE_UI_TESTS flag, improving modularity.
- Update EditorManager to register new test suites, including integrated and performance tests, enhancing test coverage.
- Improve the test dashboard UI with additional options for filtering and viewing test results, providing a better user experience.
- Introduce a new integrated test suite for comprehensive testing of core functionalities, ensuring robustness and reliability.
- Added a comprehensive testing framework with support for unit, integration, and UI tests, improving overall test coverage and reliability.
- Integrated ImGui Test Engine for UI testing, allowing for real-time feedback and visualization of test results.
- Updated CMake configuration to conditionally include testing components based on build options, enhancing flexibility for developers.
- Introduced a new command in the CLI for running asset loading tests on ROMs, providing a straightforward way to validate functionality.
- Enhanced error handling and resource management during testing, ensuring stability and clarity in test execution.
- Improved user interface with a dedicated test dashboard for monitoring test progress and results, enhancing developer experience.
- Updated CMakeLists.txt to set a minimum required version of 3.5 and removed older policy settings for improved compatibility.
- Enhanced yaze.h and zelda.h with detailed documentation, including versioning information and API descriptions, to improve clarity for developers.
- Added new functions for version compatibility checks and improved error handling in the YAZE API.
- Refactored existing structures and enums for better readability and maintainability, ensuring a more consistent coding style.
- Initialized the snes_tile8 structure to zero in UnpackBppTile for safety.
- Reordered loops in UnpackBppTile to process rows before columns, improving readability.
- Corrected bit manipulation logic in both UnpackBppTile and PackBppTile to ensure accurate color value handling.
- Enhanced test cases for 2bpp and 4bpp tile unpacking to validate expected results, improving test coverage.
- Introduced conditional compilation for PNG clipboard operations in graphics_editor.cc, providing user feedback when PNG support is disabled.
- Added <cstring> header in file_dialog.cc to support string manipulation functions, enhancing functionality.
- Updated CI workflow in ci.yml to include the -Wno-dev flag for improved CMake output during configuration.
- Modified CMakeLists.txt to conditionally add native file dialog support based on platform checks and GTK3 availability, enhancing compatibility and providing clearer status messages for NFD support.
- Changed the builtin baseline in vcpkg.json to a specific commit hash for better dependency management.
- Updated CI workflow in ci.yml to use GCC-12 and Clang-15, enhancing compiler support and ensuring compatibility with the latest features.
- Added necessary packages for the new compiler versions to the CI setup, improving build reliability.
- Updated CMakeLists.txt to set policies for older submodules, improving compatibility with various CMake versions.
- Modified vcpkg.json to change the SDL2 dependency to a core variant and updated the builtin baseline to the latest version, ensuring better package management.
- Improved file dialog functionality in file_dialog.cc by adding conditional compilation for NFD support, providing fallback behavior when NFD is unavailable.