Commit Graph

2343 Commits

Author SHA1 Message Date
scawful
997092390a Add theme management and background rendering features
- Introduced a comprehensive theme management system, allowing users to load, save, and switch between multiple themes.
- Added support for various built-in themes, enhancing the visual customization of the application.
- Implemented a background renderer for improved visual effects in docking windows, including grid backgrounds and subtle animations.
- Enhanced the EditorManager UI with themed elements, providing a more cohesive and engaging user experience.
- Updated CMake configuration to include new theme and background renderer source files, ensuring proper integration into the build system.
2025-09-26 19:32:19 -04:00
scawful
dedbe078d3 Refactor Windows packaging configuration in CMake
- Updated the CMake packaging script to conditionally set the CPACK_GENERATOR based on the environment, differentiating between CI/CD builds and local builds.
- Enhanced NSIS-specific configuration to only apply for local builds, improving clarity and maintainability.
- Adjusted package file naming conventions for Windows builds to reflect the environment, ensuring consistency across different build scenarios.
2025-09-26 18:04:27 -04:00
scawful
281fc84499 Refactor project structure and enhance project management features
- Updated the Rom class to use core::ResourceLabelManager for better namespace clarity.
- Introduced a comprehensive YazeProject structure consolidating project metadata, settings, and resource management.
- Enhanced project management capabilities with methods for creating, opening, saving, and validating projects.
- Implemented support for ZScream project format import and export, improving compatibility with existing projects.
- Added workspace settings and feature flags to streamline user configurations and project setup.
2025-09-26 18:02:04 -04:00
scawful
d21df011ae Enhance EditorManager UI with detailed ROM and session information
- Updated the ROM status display to include a clickable button that opens a detailed popup with metadata.
- Improved tooltips for ROM information, providing enhanced visibility on hover.
- Redesigned the session switcher and manager to include session metadata and improved styling for better user experience.
- Added animated background effects and enhanced button styles on the welcome screen for a more engaging interface.
2025-09-26 17:47:51 -04:00
scawful
9e3a5778aa Enhance CMake configuration for macOS and emulator build
- Added checks to conditionally set the DMG background image and DS Store setup script only if the files exist, improving robustness in packaging.
- Updated the emulator build configuration to skip unnecessary steps in minimal builds, ensuring cleaner builds and better resource management.
- Streamlined target include directories and linking for the emulator, maintaining modularity and clarity in the CMake setup.
2025-09-26 17:37:49 -04:00
scawful
a53e759043 Implement multi-session support and welcome screen in EditorManager
- Removed the homepage display logic and replaced it with a welcome screen that appears when no ROM is loaded or no active editors are present.
- Enhanced session management by iterating through all sessions to check for active editors, allowing for better multi-session docking.
- Introduced new methods for generating unique editor titles based on session context and added feature flags for per-session configurations.
- Added safeguards for ROM loading state checks in editor methods to prevent operations on unloaded ROMs.
2025-09-26 17:32:21 -04:00
scawful
0f37061299 Refactor release notes generation in CI workflow
- Updated the GitHub Actions workflow to utilize a dedicated Python script for extracting changelog information based on the release version.
- Removed the previous inline changelog generation logic, streamlining the process and improving maintainability.
- Added a new script, `extract_changelog.py`, to handle changelog extraction from the documentation, ensuring accurate release notes for each version.
2025-09-26 17:01:39 -04:00
scawful
e3eb37395d Update CI workflow to improve test execution and remove obsolete CMake configuration
- Modified the core test execution command in the CI workflow to run tests sequentially with a single job (-j1) for better stability.
- Removed the outdated CMake workflow file, streamlining the CI configuration and eliminating redundancy.
2025-09-26 16:51:47 -04:00
scawful
a7ada79e80 Enhance AsarWrapper patch file handling
- Added filesystem support to ensure the base directory exists before creating a temporary patch file.
- Improved error reporting by including the path of the failed temporary patch file creation in the error message.
2025-09-26 16:49:24 -04:00
scawful
a868b32a48 Enhance ImGui library integration and CMake configuration
- Added backend source files for ImGui, improving functionality with SDL2.
- Updated CMakeLists.txt to conditionally create the yaze_c library as static or shared based on the YAZE_MINIMAL_BUILD flag.
- Streamlined test linking by ensuring yaze_test links against yaze_core instead of yaze_c, enhancing modularity.
2025-09-26 16:47:47 -04:00
scawful
004c9ce585 Add asar-static library linkage in emu CMake configuration 2025-09-26 15:58:23 -04:00
scawful
0958dffdca imgui test engine build emu 2025-09-26 15:30:46 -04:00
scawful
857e75e7fe Refactor CMake configuration for core library and testing
- Updated CMakeLists.txt to create a separate core library (yaze_core) for testing, enhancing modularity.
- Adjusted source file organization for yaze_c and yaze_core, ensuring proper inclusion of essential components.
- Modified test CMakeLists.txt to link against yaze_core instead of yaze_c, streamlining dependencies for test targets.
- Disabled installation of the library in minimal builds while maintaining the ability to build for testing purposes.
2025-09-26 15:14:52 -04:00
scawful
caffe59800 Update README and build instructions for clarity and organization
- Revised README to enhance feature descriptions and streamline sections for better readability.
- Updated build instructions to clarify platform-specific setup and improve the overall structure.
- Added new documentation files for platform compatibility and build presets, detailing native file dialog support and build configuration options.
- Removed outdated documentation related to overworld expansion to maintain relevance.
2025-09-26 15:00:57 -04:00
scawful
78579d2934 Update CMake include directories for improved modularity and organization
- Refactored target_include_directories in app.cmake, emu.cmake, and z3ed.cmake to use absolute paths for better clarity and maintainability.
- Updated test_manager.cc and test_manager.h to simplify ImGui header inclusion.
- Enhanced test CMakeLists.txt to conditionally include directories for the extract_vanilla_values utility, ensuring proper integration with the new structure.
2025-09-26 14:46:41 -04:00
scawful
cbce2730b6 Update CMake configuration and .clangd settings for improved build management
- 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.
2025-09-26 13:51:02 -04:00
scawful
53787872b2 Add .clangd configuration and update CMakePresets.json for compile commands
- 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.
2025-09-26 13:14:04 -04:00
scawful
ffb88a2902 Refactor platform initialization in GetConfigDirectory function
- Simplified platform variable initialization by removing redundant declarations and ensuring a default case for macOS.
- Improved code clarity and maintainability in the GetConfigDirectory function.
2025-09-26 12:57:44 -04:00
scawful
22c960eaf3 Add code quality checks and formatting configuration
- 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.
2025-09-26 12:57:20 -04:00
scawful
ec207cae06 Refactor CI workflow and CMake configuration for Windows builds
- 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.
2025-09-26 12:47:10 -04:00
scawful
a28ca03cba Refactor main function and improve file dialog implementation
- 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.
2025-09-26 12:43:42 -04:00
scawful
41a5b952e4 Refactor CMake configuration for ImGuiTestEngine and feature flags
- 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.
2025-09-26 12:26:01 -04:00
scawful
d728ed37aa Implement conditional CRC32 calculation based on zlib availability
- 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.
2025-09-26 12:08:09 -04:00
scawful
9b43c2b4e4 Enhance CMake configuration for UI tests and SDL2 linking
- 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.
2025-09-26 12:06:39 -04:00
scawful
6bfecb475e Update SDL2 CMake configuration to include WIN32 support
- Modified the preprocessor directive to include WIN32 in the condition for adding the SDL subdirectory, ensuring compatibility across additional Windows platforms.
2025-09-26 11:54:43 -04:00
scawful
626dbbe0d7 Enhance CMake configuration for Abseil and SDL2 dependencies
- 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.
2025-09-26 11:51:29 -04:00
scawful
832d0b0cb7 Refactor hex formatting in utility functions for consistency
- 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.
2025-09-26 11:47:12 -04:00
scawful
f0fa93fa2b Refactor CMake configuration and improve emulation timing calculations
- 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.
2025-09-26 11:33:15 -04:00
scawful
7c90b2b6ba Update CI workflow for Windows builds and refactor room object handling
- 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.
2025-09-26 11:19:24 -04:00
scawful
132823701b Enhance NFD support in file dialog implementation for Linux and macOS
- 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.
2025-09-26 11:12:41 -04:00
scawful
7e08601970 Add NFD support for file and folder dialogs on macOS
- 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.
2025-09-26 10:53:16 -04:00
scawful
f055d9ec88 housekeeping 2025-09-26 10:22:50 -04:00
scawful
f59a0b5abf Refactor CMake configuration to streamline Abseil dependencies
- 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.
2025-09-26 10:14:10 -04:00
scawful
edafa79dea Add macOS app icon and bundle properties; remove deprecated settings
- 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.
2025-09-26 10:04:29 -04:00
scawful
8d66dbc0e4 Update CI workflow and add header inclusion in bps.cc
- 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.
2025-09-26 09:32:42 -04:00
scawful
907e29a495 Update CMake configuration and CI workflows for improved compatibility and testing
- 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.
2025-09-26 09:23:53 -04:00
scawful
50f83e818c Update README and documentation for YAZE v0.3.0 release
- 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.
2025-09-25 21:10:35 -04:00
scawful
7ca841d6a5 Refactor DungeonCanvasViewer for enhanced rendering and object management
- 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.
2025-09-25 20:58:40 -04:00
scawful
e63bcf3202 Remove deprecated macOS file type handling from FileDialogWrapper for cleaner code and improved compatibility. This change simplifies the file dialog implementation by eliminating legacy checks for older macOS versions. 2025-09-25 20:15:13 -04:00
scawful
bfcf54e271 Refactor DungeonEditor and introduce new components for enhanced dungeon 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.
2025-09-25 19:56:39 -04:00
scawful
8389989ab3 Implement object selection rectangle functionality in DungeonEditor
- 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.
2025-09-25 19:30:12 -04:00
scawful
fd538b8f31 Remove outdated dungeon integration tests documentation and introduce new dungeon object system documentation
- 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.
2025-09-25 19:19:32 -04:00
scawful
1964d31930 Refactor DungeonEditor and related components for improved object management and UI enhancements
- 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.
2025-09-25 18:56:30 -04:00
scawful
dd73ea080b Implement ASM patch application and version marker updates in OverworldEditor
- 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.
2025-09-25 18:05:07 -04:00
scawful
e924529944 Enhance EditorManager and input handling with performance logging and UI improvements
- 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.
2025-09-25 17:36:04 -04:00
scawful
015a5600c5 Enhance EditorManager with session management and workspace preset improvements
- 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.
2025-09-25 17:22:48 -04:00
scawful
aaa7af9f07 Add Native File Dialog support and enhance file dialog 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.
2025-09-25 17:07:44 -04:00
scawful
a5ed2f4d27 Enhance EditorManager and TestManager with improved ROM handling and testing features
- 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.
2025-09-25 16:41:15 -04:00
scawful
4231c3f2d7 Enhance EditorManager and TestManager with new ROM testing features and UI improvements
- 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.
2025-09-25 16:29:36 -04:00
scawful
205ea6f695 Refactor EditorManager and TestManager for improved UI and testing functionality
- 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.
2025-09-25 16:12:13 -04:00