Commit Graph

2898 Commits

Author SHA1 Message Date
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
scawful
328302335f enable z3ed on release 2025-09-28 20:18:47 -04:00
scawful
7a5446e6cc Enable testing in CMake configuration for YAZE build process
- Updated the CMake configuration in `release.yml` to enable the building of tests by setting `YAZE_BUILD_TESTS` to ON.
- This change allows for the inclusion of test frameworks in the build, enhancing the testing capabilities of the project.
2025-09-28 20:15:54 -04:00
scawful
b02f1fbb7d Enable conditional compilation for testing frameworks in EditorManager
- Added preprocessor directives to include testing-related headers and initialize test suites only when YAZE_ENABLE_TESTING is defined.
- This change enhances the modularity of the code by allowing for optional testing features based on the build configuration.
2025-09-28 20:08:26 -04:00
scawful
947c5be06d Refactor asset copying in CMake configuration for yaze target
- Removed the custom target for copying assets and integrated post-build commands directly into the yaze target.
- Updated commands to create necessary directories and copy asset files (fonts, themes, layouts, libraries) to the output directory, streamlining the build process for Windows and Linux.
2025-09-28 20:03:57 -04:00
scawful
89d0938e89 Enhance CMake configuration for asset management across platforms
- Updated `CMakeLists.txt` to configure asset deployment for macOS, Windows, and Linux, ensuring proper handling of resource files based on the target platform.
- Added custom build steps in `app.cmake` to copy asset files (fonts, themes, layouts, libraries) to the output directory for Windows and Linux builds, improving the build process and asset accessibility.
- Organized asset files into source groups for better project structure and clarity.
2025-09-28 20:02:36 -04:00
scawful
2b50678cc5 Refactor test environment setup to use SDL's cross-platform environment variable function
- Updated the `SetupTestEnvironment` function in `yaze_test.cc` to replace `setenv` with `SDL_setenv` for setting environment variables, enhancing cross-platform compatibility for test configurations.
2025-09-28 19:59:36 -04:00
scawful
2c1c7df987 Update GitHub Actions workflow for improved CMake configuration and packaging
- Changed the vcpkg Git commit ID to a specific version for consistency in builds.
- Refactored the CMake configuration steps to use PowerShell syntax, enhancing readability and maintainability.
- Improved the packaging process for Windows, macOS, and Linux by utilizing PowerShell commands and ensuring proper handling of binaries, assets, and documentation.
- Added checks for the existence of required files and directories, providing clearer error messages and improving the robustness of the workflow.
2025-09-28 19:44:02 -04:00
scawful
c8cafe30e1 Remove Visual Studio project files and filters for YAZE
- Deleted `YAZE.sln`, `YAZE.vcxproj`, and `YAZE.vcxproj.filters` to streamline the project structure and transition to a CMake-based build system.
- This change enhances maintainability and simplifies the build process by relying solely on CMake for project configuration and management.
2025-09-28 19:34:55 -04:00
scawful
a1baa747e1 Enhance CMake and vcpkg integration for Windows ARM64 builds
- Updated `CMakeLists.txt` to improve vcpkg integration by adding checks for the existence of the toolchain file and providing warnings if it is not found.
- Introduced new CMake presets for Windows ARM64 configurations (debug, release, and development) in `CMakePresets.json`, ensuring proper setup for ARM64 architecture.
- Modified `setup-vcpkg-windows.ps1` to auto-detect ARM64 architecture, enhancing the setup script's usability for different environments.
2025-09-28 19:32:37 -04:00
scawful
cbe6c92da7 Enhance CMake configuration for yaze_config.h integration
- Updated `CMakeLists.txt` to improve the generation and inclusion of `yaze_config.h` by specifying source and binary directories.
- Added include directories in various CMake files to ensure proper access to generated headers, enhancing build reliability and maintainability.
- Set properties for the generated header to improve IDE integration and organization within the project structure.
2025-09-28 19:18:36 -04:00
scawful
64f3589563 Add additional library dependencies and directories in YAZE project configuration
- Updated `YAZE.vcxproj` to include multiple additional library directories and dependencies for various build configurations (Debug and Release) across multiple platforms (Win32, x64, ARM64).
- This enhancement improves the project's build configuration by ensuring all necessary libraries are linked, facilitating better integration of external components and improving overall build reliability.
2025-09-28 18:50:34 -04:00
scawful
dc9cd97994 Add pre-build event for yaze_config.h generation in YAZE project
- Introduced a pre-build event in `YAZE.vcxproj` to automatically create the `yaze_config.h` file, defining versioning macros for the project.
- This change enhances the build process by ensuring the configuration header is generated in the appropriate build directory, improving maintainability and version tracking.
2025-09-28 18:40:15 -04:00
scawful
99eee4f6c8 Add custom build step for yaze_config.h generation in YAZE project
- Introduced a custom build step in `YAZE.vcxproj` to generate the `yaze_config.h` file, defining versioning macros for different build configurations (Debug and Release) across multiple platforms (Win32, x64, ARM64).
- This enhancement streamlines the build process by automating the creation of configuration headers, improving maintainability and version tracking.
2025-09-28 18:36:11 -04:00
scawful
7a887d96fd Add additional include directories in YAZE project configuration
- Updated `YAZE.vcxproj` to include multiple source and library directories in the `AdditionalIncludeDirectories` section, enhancing the project's build configuration and improving code accessibility for IntelliSense.
- This change supports better organization of project files and facilitates easier integration of external libraries and modules.
2025-09-28 18:34:45 -04:00
scawful
5a3f8057dd Update YAZE project configuration for improved CMake integration
- Modified build and configure targets in `YAZE.vcxproj` to use platform-specific build directories, enhancing compatibility with multiple architectures.
- Added comprehensive source and header file inclusions for Visual Studio IntelliSense, improving development experience and code navigation.
- Included resource, image, and content files in the project structure, ensuring all necessary assets are accounted for in the build process.
2025-09-28 18:32:16 -04:00
scawful
3fffdb81db omg 2025-09-28 18:26:46 -04:00
scawful
4d9f3091dc Refactor project structure and enhance CMake integration
- Renamed the main project from "YAZE" to "YAZE_CMake" in the solution file for clarity.
- Updated project configurations to ensure proper handling of Debug and Release builds for x86 and x64 platforms.
- Introduced a new CMake-based build target in `YAZE.vcxproj`, streamlining the build process and improving compatibility with CMake.
- Cleaned up unnecessary import groups and added comments for better maintainability.
2025-09-28 18:25:56 -04:00
scawful
a54fff4639 Update vcpkg configuration and GitHub Actions workflow with new commit ID
- Updated the `builtin-baseline` in `vcpkg.json` to `4bee3f5aae7aefbc129ca81c33d6a062b02fcf3b`, ensuring accurate dependency management.
- Modified the GitHub Actions workflow to reflect the new `vcpkgGitCommitId`, enhancing the reliability of the build process.
2025-09-28 18:25:14 -04:00
scawful
d50dc25677 Enhance CMake configuration for Windows x64 builds
- Added a custom command to generate the Windows resource file `yaze.res` from `yaze.rc` and `yaze.ico`, ensuring proper resource management for x64 builds.
- Introduced a custom target to ensure the resource file is built before linking, improving the build process for Windows targets.
2025-09-28 18:18:02 -04:00
scawful
8ea0daa9c8 Update vcpkg configuration and GitHub Actions workflow with new commit ID
- Changed the `builtin-baseline` in `vcpkg.json` to a specific commit ID `d18b2e4129c1ff667b1e660528d6d2678f38c6fc`, ensuring precise dependency management.
- Updated the GitHub Actions workflow to reflect the new `vcpkgGitCommitId`, enhancing the reliability of the build process.
2025-09-28 18:14:16 -04:00
scawful
baedab91c8 Add include for stdlib in YAZE test file
- Added `<cstdlib>` header to `yaze_test.cc`, enabling the use of standard library functions.
- This change enhances the functionality of the test suite by allowing for additional features from the C++ standard library.
2025-09-28 18:12:04 -04:00
scawful
831a8dcb82 Enhance CMake configuration for Windows builds
- Added conditional linking of the Windows resource file for x64 architecture in `CMakeLists.txt`, improving build specificity for Windows targets.
- This change ensures that the resource file is only linked when building for 64-bit Windows, enhancing the project's compatibility and build process.
2025-09-28 18:10:36 -04:00
scawful
72dbfc537f Update vcpkg configuration and GitHub Actions workflow with new baseline
- Set the `builtin-baseline` in `vcpkg.json` to `2024.12.18`, ensuring compatibility with the latest dependencies.
- Updated the GitHub Actions workflow to include the new `vcpkgGitCommitId`, improving the build process reliability.
2025-09-28 18:00:29 -04:00