Commit Graph

2671 Commits

Author SHA1 Message Date
scawful
e7d4f5ea02 Enhance CLI command structure and add new functionalities
- Refactored existing CLI commands to follow a more structured naming convention, improving clarity and usability.
- Introduced new commands for dungeon and graphics handling, including `dungeon export`, `gfx export-sheet`, and `gfx import-sheet`, with placeholder implementations.
- Added palette export and import commands, enhancing the CLI's capabilities for managing graphical assets.
- Updated usage examples and help text to reflect the new command structure and improve user guidance.
- Incremented version number in TUI components to reflect the latest changes.
2025-09-30 21:21:19 -04:00
scawful
a346865701 Add Windows compatibility for GUI test command in CLI
- Updated `HandleTestGuiCommand` in `ModernCLI` to return an error message on Windows, indicating that the GUI test command is unsupported.
- Wrapped platform-specific includes and logic with preprocessor directives to ensure compatibility across different operating systems.
- Enhanced code maintainability by clearly separating Windows-specific functionality from other platforms.
2025-09-30 20:18:41 -04:00
scawful
36ad718099 Refactor OverworldEditor copy functionality to use selected points
- Updated the `Copy` method in `OverworldEditor` to utilize selected points instead of tiles for copying tile16 IDs to the clipboard, enhancing the selection mechanism.
- Improved the logic for determining the width and height of the selection based on the selected points, ensuring accurate tile copying.
- Adjusted the `DrawSelectRect` method in `Canvas` to correctly calculate local map indices, refining the tile selection process.
- Added a new configuration option in `Canvas` to control clamping behavior for local maps, providing more flexibility in canvas settings.
2025-09-30 19:52:27 -04:00
scawful
5cc5c08122 Add Overworld accessors and enhance testing framework
- Introduced new methods in `Controller`, `EditorManager`, and `OverworldEditor` to access the `Overworld` instance, improving modularity and interaction with the overworld data.
- Added `GetTile` method in `Overworld` to retrieve tile data based on coordinates, enhancing functionality for tile manipulation.
- Implemented a new testing framework with automated GUI tests, including `CanvasSelectionTest` and `FrameworkSmokeTest`, to validate user interactions and ensure robustness.
- Updated `CMakeLists.txt` to include new test files and dependencies, streamlining the build process for testing.
- Refactored logging behavior to ensure proper file handling during logging operations, improving reliability in logging outputs.
2025-09-30 19:32:34 -04:00
scawful
dcfdcf71d3 Remove outdated performance analysis documents
- Deleted the `dungeon_editor_bottleneck_analysis.md`, `editor_performance_monitoring_setup.md`, `lazy_loading_optimization_summary.md`, and `overworld_optimization_status.md` files as they are no longer relevant to the current optimization strategies and performance monitoring efforts.
- This cleanup helps streamline the documentation and focuses on the most up-to-date performance insights and optimization techniques.
2025-09-30 19:31:18 -04:00
scawful
f461fb63d1 Add comprehensive Canvas guide and refactor documentation
- Introduced a new `CANVAS_GUIDE.md` file detailing the Canvas system, including core concepts, usage patterns, and features such as tile painting, selection, and custom overlays.
- Created `CANVAS_REFACTORING_STATUS.md` to summarize the current state of refactoring efforts, including completed tasks and outstanding issues.
- Enhanced `overworld_editor` functionality by implementing critical fixes for rectangle selection and painting, ensuring proper handling of large map boundaries.
- Updated `canvas_utils.h` to include configuration options for rectangle clamping, preventing wrapping issues during tile selection.
- Refactored `canvas.cc` and `canvas.h` to improve method signatures and documentation, facilitating better understanding and usage of the Canvas API.
- Improved overall documentation structure for clarity and ease of access, consolidating multiple files into focused references.
2025-09-30 16:24:25 -04:00
scawful
991366113e Update canvas system with enhanced interaction and performance tracking features
- Introduced a new CanvasInteractionHandler for managing tile interactions, including painting and selection modes.
- Added CanvasContextMenu for improved user interaction with context-specific options.
- Implemented CanvasPerformanceIntegration to monitor and report performance metrics during canvas operations.
- Developed CanvasUsageTracker to track user interactions and usage patterns within the canvas.
- Refactored existing canvas utilities and integrated new modal systems for enhanced user experience.
- Updated CMake configuration to include new canvas components and ensure proper linking with existing libraries.
2025-09-30 13:10:32 -04:00
scawful
9e0f614ce8 Add BPP format management and optimization features
- Introduced BPPFormatManager for handling various bitmap formats (2BPP, 3BPP, 4BPP, 8BPP) with conversion capabilities.
- Enhanced AtlasRenderer to support bitmap addition with BPP format optimization and added methods for optimized rendering.
- Implemented GraphicsOptimizer for analyzing and optimizing graphics sheets based on BPP formats, including memory and performance considerations.
- Developed BppFormatUI for user interface interactions related to BPP format selection and conversion previews.
- Integrated BPP format management into the canvas system, allowing for format selection and conversion within the GUI.
- Updated CMake configuration to include new source files related to BPP management and optimization.
2025-09-29 21:21:49 -04:00
scawful
100fc23a2e Remove PerformanceMonitor and update references to PerformanceProfiler
- Deleted the PerformanceMonitor implementation and header files as functionality has been fully integrated into gfx::PerformanceProfiler.
- Updated all relevant source files to replace PerformanceMonitor and ScopedTimer with their gfx counterparts, ensuring consistent performance monitoring across the application.
2025-09-29 20:30:31 -04:00
scawful
62230fbe5c Remove Windows ARM64 build configuration and delete unused generate-vs-projects.py script
- Removed the Windows ARM64 configuration from the GitHub Actions release workflow to streamline the build process.
- Deleted the generate-vs-projects.py script as it was no longer needed for project setup, simplifying the codebase.
- Updated the OverworldEditor header to improve clarity by renaming a method parameter for better understanding.
- Refactored the Emulator class to enhance the rendering interface, improving the user experience in the emulator's GUI.
2025-09-29 20:23:17 -04:00
scawful
9db03906fa Refactor area size checks in OverworldEditor for ZSCustomOverworld v3 compatibility
- Simplified logic for determining area size usage by removing unnecessary condition for version check.
- Ensured consistent handling of area sizes across relevant methods in OverworldEditor, enhancing compatibility with different ROM versions.
2025-09-29 19:53:32 -04:00
scawful
bac03ee08e Refactor Performance Monitoring System for Unified Functionality
- Merged the old PerformanceMonitor interface into gfx::PerformanceProfiler, providing a unified performance monitoring system.
- Updated header files to maintain backward compatibility with aliases for PerformanceMonitor and ScopedTimer.
- Removed legacy timer methods and integrated memory pool for efficient data handling in performance profiling.
- Enhanced PerformanceDashboard to utilize the new profiler, including controls for enabling monitoring and clearing data.
- Improved performance reporting with detailed statistics and memory usage insights.
2025-09-29 19:21:31 -04:00
scawful
f6f278bf65 Refactor OverworldEditor and Tile16Editor for enhanced functionality and user experience
- Removed unnecessary build flags for Yaze minimal builds in release.yml.
- Updated version number to 0.3.2 in yaze.h to reflect recent changes.
- Enhanced OverworldEditor with new method to scroll the blockset canvas to the currently selected tile, improving navigation.
- Implemented logic to handle area size checks for ZSCustomOverworld v3, ensuring compatibility with different ROM versions.
- Refactored tile selection and drawing logic in Tile16Editor for improved accuracy and user interaction.
- Updated context menu in OverworldEditor to include a refresh option for map changes, enhancing usability.
2025-09-29 18:56:41 -04:00
scawful
c7d7d2f614 Add scratch space functionality to OverworldEditor
- Introduced a new scratch space feature in OverworldEditor, allowing users to save, load, and clear selections in dedicated slots.
- Implemented methods for transferring selections between the overworld and scratch space, enhancing user interaction and flexibility.
- Added dynamic bitmap handling for scratch spaces, ensuring accurate visual representation of selected tiles.
- Refactored existing drawing methods to accommodate the new scratch space functionality, improving overall usability and performance.
2025-09-29 17:35:18 -04:00
scawful
cfbeef333b Implement file dialog fallback for minimal builds on Windows
- Fixed non-functional file dialogs in minimal builds by implementing a Windows COM-based fallback for file open, save, and folder selection dialogs.
- Ensured dialogs work correctly regardless of NFD (Native File Dialog) availability, enhancing user experience across all Windows builds.
2025-09-29 15:53:49 -04:00
scawful
2b11338e20 Update version to 0.3.2 and enhance stability across platforms
- Bump project version to 0.3.2 in CMakeLists.txt, vcpkg.json, and relevant headers.
- Increase Windows stack size to 8MB to prevent stack overflow during asset loading.
- Isolate development utilities from CI builds to ensure cleaner release artifacts.
- Implement comprehensive bounds checking and fix segmentation faults in the graphics system.
- Update documentation to reflect new build instructions and stability improvements.
2025-09-29 15:47:14 -04:00
scawful
ec42054da2 Enhance CMake configuration for improved stack management and utility separation
- Increased stack size for Windows builds to prevent stack overflow during asset loading and testing.
- Added separate executable for rom_patch_utility to enhance modularity and maintainability.
- Updated target link libraries for both extract_vanilla_values and rom_patch_utility to ensure proper dependencies are included.
- Added conditional checks to prevent building development-only utilities in CI environments.
2025-09-29 15:38:27 -04:00
scawful
7a14612f0e Refactor Tile16Editor and Bitmap palette handling for improved accuracy and stability
- Updated Tile16Editor to utilize a fixed height for the scrollable child window, enhancing user interface consistency.
- Simplified pixel data handling by removing unnecessary remapping for the display tile, ensuring accurate palette representation.
- Enhanced Bitmap palette application logic to directly use the specified index for 8-color palettes, preventing errors in color mapping.
- Improved error handling for palette length validation and ensured the complete palette is retained for compatibility with other editors.
2025-09-29 15:32:37 -04:00
scawful
3b59312b86 Enhance Tile16Editor with improved palette management and user interface updates
- Refactored palette synchronization to ensure consistent application of the complete 256-color overworld palette across all graphics.
- Implemented new methods for accurate palette slot mapping and sheet index retrieval, enhancing color alignment during tile editing.
- Updated the user interface for better visual hierarchy and modern styling, improving the overall user experience in the Tile16Editor.
- Enhanced logging for palette updates and tile interactions to provide clearer feedback and facilitate debugging.
2025-09-29 14:20:38 -04:00
scawful
fe7c65ef8a Implement critical updates to Tile16Editor for enhanced user experience and palette management
- Modified tile16 editing workflow to prevent immediate ROM updates, allowing users to preview changes before saving.
- Improved tile8 selection logic with right-click functionality to pick tiles from tile16, enhancing usability.
- Enhanced palette synchronization to ensure consistent application across all graphics, aligning with the overworld palette.
- Updated logging for tile interactions and palette changes to provide better feedback and debugging insights.
2025-09-29 12:11:15 -04:00
scawful
2d3a615fb4 Refactor Tile16Editor for improved tile selection and palette synchronization
- Adjusted tile8 source canvas dimensions for better scaling in Tile16Editor.
- Enhanced click detection and selection logic for tile editing, ensuring a smoother user experience.
- Implemented critical fixes for palette application consistency, aligning with the overworld palette for accurate color representation.
- Improved logging for tile interactions and palette updates to facilitate debugging and user feedback.
2025-09-29 11:11:27 -04:00
scawful
c7aa0f4409 Implement critical palette synchronization fixes in Tile16Editor and OverworldEditor
- Updated Tile16Editor to ensure consistent palette application across all graphics, aligning with the overworld palette for accurate color representation.
- Added functionality to immediately apply palette changes in Tile16Editor, enhancing visual consistency during editing.
- Implemented critical fixes to refresh all graphics with the correct overworld palette, improving user experience and reducing discrepancies in tile appearance.
- Enhanced logging for palette updates to facilitate debugging and provide user feedback on changes.
2025-09-29 10:58:36 -04:00
scawful
2c4ccc9d0a Refactor tile selection and painting logic in OverworldEditor and Tile16Editor
- Updated tile selection handling in Tile16Editor to prevent conflicts with dragging, ensuring a smoother user experience.
- Improved click detection for tile selection and painting, enhancing accuracy and responsiveness.
- Added logging for tile interactions to facilitate debugging and user feedback.
- Implemented critical fixes to ensure consistent behavior during tile editing operations.
2025-09-29 10:45:25 -04:00
scawful
1432e2c3f9 Enhance tile selection and editing functionality in OverworldEditor and Tile16Editor
- Improved handling of single and double clicks for tile selection and editing in OverworldEditor, allowing for more intuitive user interactions.
- Added logging for tile selection actions to aid debugging and user feedback.
- Updated Tile16Editor to ensure proper synchronization with the overworld editor during tile changes, enhancing workflow reliability.
- Implemented critical fixes in Canvas to prevent ImGui assertions by ensuring minimum canvas size during rendering.
2025-09-29 10:34:28 -04:00
scawful
690f77eea0 Implement critical fixes for tile cache issues and optimize resource management
- Updated Tile16Editor to regenerate blockset atlas directly from ROM data, bypassing problematic tile cache.
- Enhanced clipboard functionality to extract tile data directly from the atlas, improving reliability.
- Refactored Arena class shutdown process to ensure safe cleanup of resources, preventing double-free issues.
- Optimized Canvas rendering logic to utilize pre-calculated values for improved performance with large selections.
2025-09-29 09:42:06 -04:00
scawful
94f5c0ec60 Implement safe multi-area map refresh and critical tile update fixes
- Added RefreshMultiAreaMapsSafely method to handle large, wide, and tall area maps without recursion, preventing segmentation faults.
- Updated tile application logic to directly use the currently selected tile, enhancing stability during rectangle selections.
- Improved logging for tile updates and error handling, ensuring better debugging and user feedback.
- Cleared selection state after applying changes to maintain a clean editor state.
2025-09-29 09:30:18 -04:00
scawful
508489cd0e Enhance OverworldEditor with improved selection handling and critical fix for large maps
- Added logging for rectangle selection and tile processing to aid debugging.
- Implemented bounds checks during tile selection to prevent crashes.
- Disabled sibling refresh for large maps to avoid infinite recursion, addressing segmentation faults.
- Updated comments for clarity and future implementation considerations.
2025-09-29 09:22:14 -04:00
scawful
cfd56d53ee Refactor tile rendering in Canvas to prevent crashes
- Removed pre-rendering of tiles to avoid issues with tile cache.
- Updated tile drawing logic to directly use the atlas texture, enhancing stability and performance.
- Added bounds checks and UV coordinate calculations for improved rendering accuracy.
2025-09-29 09:21:27 -04:00
scawful
4bf4a13dae Enhance graphics editor performance with batch processing and profiling
- Integrated performance profiling using ScopedTimer in GraphicsEditor and ScreenEditor for better timing insights.
- Implemented batch texture updates in GraphicsEditor and ScreenEditor to reduce individual texture update calls, improving rendering efficiency.
- Enhanced tile rendering in ScreenEditor with pre-allocated vectors for batch operations, optimizing drawing performance.
- Added safety checks and validation in various components to prevent crashes and ensure data integrity during rendering operations.
- Updated Bitmap and Arena classes to support improved texture management and synchronization, enhancing overall graphics performance.
2025-09-29 09:04:10 -04:00
scawful
22297402fc Implement comprehensive atlas rendering system and performance optimizations
- Introduced the AtlasRenderer class for efficient texture management and batch rendering, significantly reducing draw calls.
- Added RenderTilesBatch function in Tilemap for rendering multiple tiles in a single operation, enhancing performance.
- Implemented memory management features including automatic atlas defragmentation and UV coordinate mapping.
- Integrated performance monitoring dashboard to track atlas statistics and rendering efficiency.
- Developed a benchmarking suite to validate performance improvements and ensure accuracy in rendering speed.
- Enhanced existing graphics components to utilize the new atlas rendering system, improving overall responsiveness in the YAZE editor.
2025-09-29 00:03:43 -04:00
scawful
1d69729972 Refactor extract_vanilla_values target linking in CMakeLists.txt
- Removed conditional linking of yaze_c library for extract_vanilla_values, clarifying that it operates as a standalone utility.
- Updated comments to reflect the core ROM functionality requirements for the utility, enhancing code clarity.
2025-09-28 23:56:24 -04:00
scawful
a49c31c84b Implement atlas rendering features and performance enhancements
- Added RenderBitmap and GetUVCoordinates methods to AtlasRenderer for improved bitmap rendering capabilities.
- Introduced RenderTilesBatch function in Tilemap for batch rendering of tiles using atlas, reducing draw calls and enhancing performance.
- Updated Clear method in AtlasRenderer to properly clean up SDL textures.
- Enhanced performance monitoring in PerformanceDashboard to include atlas renderer statistics.
- Added unit tests to benchmark atlas rendering performance, confirming efficiency improvements over individual rendering.
2025-09-28 23:40:04 -04:00
scawful
2d10437888 Remove clipboard functionality and enhance performance monitoring features
- Deleted clipboard-related files (clipboard.cc, clipboard.h, clipboard.mm) to streamline the codebase.
- Added a performance dashboard in the EditorManager to monitor performance metrics and improve user experience.
- Integrated performance monitoring capabilities across various editors, allowing for detailed timing of critical operations.
- Updated the graphics system with batch processing for texture updates, significantly improving rendering performance.
- Introduced a memory pool allocator for efficient memory management during graphics operations.
2025-09-28 23:30:32 -04:00
scawful
ce31906c93 Enhance performance profiling and tile caching mechanisms
- Introduced a new PerformanceProfiler class for detailed timing and performance measurement across graphics operations.
- Implemented a smart tile cache with LRU eviction in the TileCache structure to optimize memory usage and improve tile rendering efficiency.
- Updated various graphics components to utilize the new caching system, reducing redundant texture updates and enhancing overall performance.
- Added dirty region tracking in Bitmap for efficient texture updates, minimizing the area that needs to be refreshed during rendering.
- Enhanced existing methods to leverage performance monitoring, providing insights into operation durations and potential bottlenecks.
2025-09-28 23:13:12 -04:00
scawful
5915391467 add comments for gfx classes and editors 2025-09-28 23:00:32 -04:00
scawful
91a6a49d1a Add comprehensive analysis of ZScream vs YAZE overworld implementations
- Introduced a detailed comparison document highlighting the functional equivalence between ZScream (C#) and YAZE (C++) overworld loading logic.
- Verified key areas such as tile loading, expansion detection, map decompression, and coordinate calculations, confirming consistent behavior across both implementations.
- Documented differences and improvements in YAZE, including enhanced error handling and memory management.
- Provided validation results from integration tests ensuring data integrity and compatibility with existing ROMs.
2025-09-28 22:49:29 -04:00
scawful
50c7461e5f Enhance OverworldEditor with on-demand map refresh and texture loading improvements
- Implemented on-demand refresh for overworld maps, optimizing updates based on visibility and modifications.
- Introduced a new method to ensure textures are loaded before drawing, improving user experience with loading indicators.
- Increased the number of textures processed per frame for faster loading times, enhancing performance during map transitions.
- Updated the release workflow to enable additional testing configurations for YAZE builds.
2025-09-28 22:48:56 -04:00
scawful
b82751f9ea Add performance monitoring feature toggle and integration
- Introduced a new feature flag for performance monitoring in the FeatureFlags class, allowing users to enable or disable monitoring.
- Updated the ScopedTimer class to respect the performance monitoring flag, ensuring that timing operations are no-ops when monitoring is disabled.
- Enhanced the PerformanceMonitor class with methods to set and check the enabled state of performance monitoring, improving flexibility for production builds.
2025-09-28 22:42:19 -04:00
scawful
b911256687 Implement multithreaded room loading in DungeonRoomLoader
- Refactored the LoadAllRooms method to utilize multithreading for improved performance during dungeon room loading.
- Introduced thread-safe data structures and a task-based approach to process room loading in parallel, optimizing resource usage.
- Added performance logging to track the number of threads and rooms processed, enhancing monitoring capabilities.
- Ensured thread safety when collecting results for room sizes and palettes, maintaining data integrity.
2025-09-28 22:37:13 -04:00
scawful
f210cd85b4 Integrate performance monitoring across various editors
- Added performance monitoring capabilities using ScopedTimer in the DungeonEditor, PaletteEditor, ScreenEditor, MessageEditor, MusicEditor, SpriteEditor, and SettingsEditor classes to track loading times.
- Enhanced the Load methods in each editor to include timing for critical operations, improving performance analysis and optimization.
- Removed unnecessary debug output in the Sprite class to clean up the codebase.
2025-09-28 22:32:07 -04:00
scawful
cea73affdd Add performance monitoring capabilities with PerformanceMonitor class
- Introduced PerformanceMonitor and ScopedTimer classes for tracking operation durations, enhancing performance analysis during ROM loading and rendering.
- Integrated performance monitoring into the OverworldEditor and Overworld classes, allowing for detailed timing of critical operations.
- Implemented deferred texture creation strategies to optimize loading times and reduce main thread blocking.
- Updated relevant methods to utilize performance monitoring, providing insights into loading efficiency and potential bottlenecks.
2025-09-28 22:21:15 -04:00
scawful
7a7acb71bd Enhance GitHub Actions workflow by adding vcpkg download cache preparation for Windows and macOS
- Introduced steps to prepare a download cache for vcpkg on both Windows and macOS, improving build efficiency and reducing download times.
- Ensured that the cache directories are created conditionally based on the operating system, maintaining compatibility across platforms.
2025-09-28 22:08:52 -04:00
scawful
c967b2be95 Enhance GitHub Actions workflow for macOS builds and artifact management
- Updated the concurrency group in the release workflow to include the event name for better tracking.
- Split macOS builds into separate jobs for arm64 and x86_64 architectures, improving clarity and organization.
- Added a new job to merge macOS slices into a universal binary, streamlining the packaging process.
- Refined the installation steps for macOS dependencies and vcpkg setup for consistency across architectures.
- Improved artifact upload steps to include staged outputs and ensure proper retention.
2025-09-28 21:58:02 -04:00
scawful
c1902687c5 Add comprehensive YAZE Overworld Testing Guide and test scripts
- Introduced a detailed documentation guide for testing the YAZE overworld implementation, covering unit tests, integration tests, end-to-end tests, and golden data validation.
- Added a new script to orchestrate the complete testing workflow, including building the golden data extractor, running tests, and generating reports.
- Implemented new test files for end-to-end testing and integration testing, ensuring compatibility with ZScream logic and validating overworld data integrity.
- Enhanced the Overworld class with additional methods for expanded tile and entrance handling, improving test coverage and functionality.
2025-09-28 21:47:22 -04:00
scawful
18c739d630 fix syntax error 2025-09-28 21:26:06 -04:00
scawful
b463878d6e Refactor GitHub Actions workflow and Tile16Editor for improved functionality
- Updated the concurrency group in the release workflow to use a more consistent reference for tags.
- Enhanced the release notes generation logic for clarity and consistency.
- Improved logging in Tile16Editor to provide better insights during bitmap updates and error handling.
- Refactored the UpdateBlocksetBitmap method to ensure proper handling of active bitmaps and pixel copying, enhancing the editor's responsiveness.
2025-09-28 21:21:38 -04:00
scawful
aeed90090d Refactor release notes generation in GitHub Actions workflow
- Simplified the logic for creating release notes by replacing heredoc syntax with echo commands for better readability.
- Ensured consistent formatting of release notes with clear headers and references to the changelog.
2025-09-28 21:11:14 -04:00
scawful
76cb817f26 Refactor Tile16Editor for improved data handling and bitmap updates
- Changed the storage of current tile16 data from a static variable to an instance variable for better persistence.
- Added a new method to update the blockset bitmap displayed in the editor, ensuring it reflects the current tile16 data.
- Enhanced the DrawToCurrentTile16 method to include updates to the blockset bitmap after drawing.
- Updated the CMake configuration for the tile edit table to ensure proper initialization.
2025-09-28 21:06:57 -04:00
scawful
5a242c8c6f Update vcpkg Git commit ID in release workflow for consistency 2025-09-28 20:49:36 -04:00
scawful
94568e2be2 Enhance GitHub Actions workflow for release process
- Added concurrency control to the release workflow to manage simultaneous runs.
- Improved permissions settings for actions and contents.
- Refactored tag validation logic to streamline the process and ensure semantic versioning compliance.
- Updated job names for clarity and consistency.
- Integrated caching for ccache to speed up builds on Linux and macOS.
- Enhanced packaging steps for Windows, macOS, and Linux, ensuring proper artifact handling and uploads.
- Improved error handling and output messages for better debugging and user experience.
2025-09-28 20:42:24 -04:00