Commit Graph

2978 Commits

Author SHA1 Message Date
scawful
f538775954 refactor: Organize Canvas Utilities and BPP Format Management
- Moved canvas utility functions into a dedicated `canvas_utils` module for better structure and maintainability.
- Introduced a new `BppFormatUI` class for managing BPP format selection and conversion, enhancing the user interface for format management.
- Updated CMake configuration to include new source and header files for the canvas utilities and BPP format UI.
- Adjusted file paths in the project structure to reflect the new organization, ensuring proper integration across components.
2025-10-10 12:02:33 -04:00
scawful
33335782e7 wandoze :( 2025-10-10 11:41:37 -04:00
scawful
b2701c8cec refactor: Update Test Status Enum and Compiler Options
- Changed the enum values in GetTestStatusResponse from STATUS_* to TEST_STATUS_* for consistency and clarity.
- Updated corresponding references in imgui_test_harness_service.cc and gui_automation_client.cc to reflect the new enum naming.
- Added /EHsc compiler option in CMakeLists.txt for MSVC to enable C++ exception handling.
2025-10-10 10:55:28 -04:00
scawful
b64ef74b10 feat: Introduce Layout Override Feature in DungeonCanvasViewer
- Added a new "Layout Override" section in the DungeonCanvasViewer, allowing users to enable or disable layout overrides for dungeon rooms.
- Implemented a checkbox to toggle the override and a slider to select the layout ID when enabled.
- Removed the previously disabled room layout drawing code to streamline the rendering process.
- Updated the layout management to ensure proper handling of layout IDs and visibility settings.
- Enhanced the overall user interface for better control over dungeon layout visualization.
2025-10-10 10:14:50 -04:00
scawful
db517abbb3 refactor: Update Performance File Paths and Cleanup Integration
- Refactored file paths for performance-related headers to reflect the new directory structure under `app/gfx/performance/`.
- Updated references in the `Canvas` class to align with the new paths, ensuring proper integration of performance monitoring components.
- Cleaned up unnecessary prefixes in performance integration checks to enhance code readability and maintainability.
2025-10-10 10:12:44 -04:00
scawful
cbcf1e40be refactor: Update Performance Header Includes and Add Emulator Test Suite
- Refactored header includes for Performance Profiler and Dashboard to reflect new directory structure under `app/gfx/performance/`.
- Introduced a new `EmulatorTestSuite` class to validate core emulator components, including APU, SPC700, and debugging features.
- Enhanced test suite with detailed test cases for APU handshake, SPC700 cycle accuracy, breakpoint management, and audio backend functionality.
- Removed outdated `test_dungeon_objects.cc` file from the test suite to streamline testing focus.
2025-10-10 10:07:35 -04:00
scawful
411f842b20 refactor: Restructure Performance Profiler and Dashboard Integration
- Updated file paths for performance-related headers to reflect new directory structure under `app/gfx/performance/`.
- Introduced new `PerformanceDashboard` and `PerformanceProfiler` classes for comprehensive performance monitoring and reporting.
- Enhanced performance metrics collection and visualization capabilities, including real-time updates and detailed reports.
- Improved memory usage tracking and optimization status analysis within the graphics system.
- Ensured compatibility with existing components by updating include directives across multiple files.
2025-10-10 10:05:21 -04:00
scawful
a2de6ba7d1 feat: Add Static Room Layout Pointers to Dungeon ROM Addresses
- Introduced a static array of pointers for the 8 predefined room layouts, enhancing the structure and accessibility of room layout data.
- Included the necessary header for std::array to support the new data structure.
2025-10-10 09:06:15 -04:00
scawful
6c6bb67a87 fix: Restore Windows macro definitions to prevent conflicts with protobuf generated code
- Added preprocessor directives to push and pop the DWORD and ERROR macros in widget_discovery_service.h, rom_service_impl.h, and gui_automation_client.h.
- This change ensures compatibility with protobuf generated code in a Windows environment, preventing potential compilation issues.
2025-10-10 08:44:01 -04:00
scawful
78b7d38359 feat: Implement Downwards Drawing Routines in ObjectDrawer
- Added multiple downwards drawing routines for various object types, enhancing the rendering capabilities of the ObjectDrawer.
- Implemented methods for drawing 2x2 and 4x2 tiles with specific patterns and sizes, including edge cases for certain object IDs.
- Updated the initialization logic to map new object IDs to their respective drawing routines, ensuring comprehensive coverage for downwards rendering.
- Introduced debug logging for object drawing to facilitate troubleshooting and performance monitoring.
2025-10-10 02:40:59 -04:00
scawful
a8dfda856e chore: Update CMake configuration for Windows compatibility
- Added a preprocessor directive to undefine the DWORD macro in CMake configuration for both CI and release workflows, ensuring compatibility with protobuf generated code.
- This change addresses potential compilation issues when using gRPC and protobuf in a Windows environment.
2025-10-10 02:25:41 -04:00
scawful
0bcad79d06 refactor: Improve Rendering Logic and Debugging in Dungeon Components
- Updated DungeonCanvasViewer to disable room layout drawing to reduce visual clutter, enhancing clarity during object placement.
- Enhanced BackgroundBuffer to skip empty and floor tiles, preventing overwriting of drawn elements and improving rendering efficiency.
- Refined Bitmap palette application to ensure correct transparency handling and marked bitmaps as modified for texture updates.
- Streamlined ObjectDrawer by removing unnecessary debug logs and simplifying object drawing logic, improving performance and readability.
- Adjusted Room rendering methods to utilize palette indirection for accurate color application, ensuring consistent visual output across rooms.
2025-10-10 02:20:22 -04:00
scawful
6f3c9ba81b feat: Enhance DungeonCanvasViewer with Object Outline Filters and Context Menu Improvements
- Added a sub-menu for toggling visibility of object outlines based on type and layer, allowing for more granular control over displayed objects in the dungeon canvas.
- Implemented checkboxes for filtering object outlines by type (Type 1, Type 2, Type 3) and layer (Layer 0, Layer 1, Layer 2) in the debug menu.
- Updated the drawing logic to respect the new filtering options, ensuring only the selected objects are rendered on the canvas.
- Improved the visibility of object ID labels by making them smaller and less obtrusive, enhancing the overall clarity of the canvas display.
2025-10-10 01:11:39 -04:00
scawful
9f0b503ada feat: Enhance DungeonCanvasViewer with Debugging Features and Canvas Configuration
- Added detailed comments to clarify the canvas coordinate system and scaling model for dungeon rendering.
- Implemented persistent debug overlays for room and texture information, allowing real-time visibility of room properties and texture states.
- Introduced a context menu with options for debugging, including toggling visibility of room info, texture info, and object bounds.
- Updated canvas drawing methods to ensure correct handling of unsized dimensions and scaling, improving rendering accuracy.
- Refactored coordinate conversion functions to return unsized pixel coordinates, preventing double-scaling issues.
2025-10-10 00:45:59 -04:00
scawful
8481cd9366 refactor: Update Dungeon Rendering Logic for Enhanced Tile Management (WIP)
- Refactored DungeonCanvasViewer to utilize LoadLayoutTilesToBuffer for rendering layout tiles, improving the separation of concerns in the rendering process.
- Updated ObjectDrawer to draw using 8x8 tiles instead of 16x16, enhancing tile rendering accuracy and efficiency.
- Modified Room and RoomLayoutObject classes to support room-specific graphics buffers, ensuring correct tile usage during rendering.
- Removed legacy methods and classes related to tile handling, streamlining the codebase and improving maintainability.
2025-10-09 23:50:12 -04:00
scawful
3f2ef7f523 fix: Undefine Windows macros to prevent conflicts with protobuf generated code
- Added preprocessor directives to undefine the DWORD and ERROR macros on Windows, ensuring compatibility with protobuf generated code in imgui_test_harness_service.h and gui_automation_client.h.
- This change prevents potential compilation issues when using gRPC and protobuf in a Windows environment.
2025-10-09 23:33:47 -04:00
scawful
d371dbc2d7 feat: Add log category filtering for enhanced logging control
- Introduced a new command-line flag for specifying log categories, allowing users to filter logs based on selected categories.
- Implemented parsing of the comma-separated log categories string in the main application.
- Enhanced the LogManager to support category-specific logging and added console output to indicate which categories are enabled for debugging.
2025-10-09 22:50:45 -04:00
scawful
81ef43f2e4 refactor: Remove unused room diagnostic files and update CMake configuration
- Deleted the room_diagnostic.cc and room_visual_diagnostic.cc files, along with their corresponding header files, to clean up the codebase.
- Updated zelda3_library.cmake to remove references to the deleted diagnostic files, streamlining the build process.
- Removed the inclusion of room_diagnostic.h in room.cc as it is no longer needed.
2025-10-09 22:35:01 -04:00
scawful
f9753532a4 feat: Enhance Dungeon Editor with Advanced Room Properties and Layout Visualization
- Introduced advanced room properties UI in the Dungeon Editor, allowing users to set effects and tags for rooms through dropdown menus.
- Updated the rendering logic to visualize room layouts, including walls, floors, pits, water, and doors, with appropriate color coding for clarity.
- Improved texture management by processing texture updates immediately to ensure objects appear correctly in the editor.
- Organized ROM address constants into a new header file for better maintainability and clarity in the codebase.
- Refactored existing code to utilize the new constants, ensuring a cleaner and more consistent naming convention.
2025-10-09 22:14:33 -04:00
scawful
c1e69ce03e feat: Add Debug Controls Card to Dungeon Editor V2
- Introduced a new Debug Controls card in the Dungeon Editor V2, allowing runtime control over debug logging and log levels.
- Implemented UI elements for enabling/disabling debug logs, selecting log levels, and managing room rendering and texture processing.
- Updated the DungeonEditorV2 class to include visibility management for the Debug Controls card and integrated it into the control panel.
- Enhanced logging functionality in the LogManager to support runtime adjustments for debug logging.
2025-10-09 21:43:27 -04:00
scawful
66061652b1 refactor: Consolidate and update Dungeon Editor documentation
- Deleted outdated DUNGEON_EDITOR_COMPLETE_GUIDE.md and DUNGEON_EDITOR_GUIDE.md files to streamline documentation.
- Introduced a new F2-dungeon-editor-v2-guide.md that consolidates features, architecture, and usage instructions for the Dungeon Editor V2.
- Documented recent refactoring efforts, including critical bug fixes and architectural improvements.
- Enhanced the guide with structured sections for quick start, testing, and troubleshooting, reflecting the current production-ready status of the Dungeon Editor.
- Updated related source files to support new documentation structure and features.
2025-10-09 21:24:48 -04:00
scawful
0491781dd5 refactor: Rename GetTestStatusResponse enum for clarity
- Changed the enum name from Status to TestStatus in GetTestStatusResponse to improve clarity and better reflect its purpose.
- Updated the corresponding function ConvertHarnessStatus to align with the new enum name, ensuring consistency across the codebase.
2025-10-09 21:24:06 -04:00
scawful
74a5144128 chore: Update submodule references for imgui and imgui_test_engine
- Updated the submodule commit references for imgui and imgui_test_engine to the latest versions, ensuring compatibility and access to recent improvements.
2025-10-09 20:57:07 -04:00
scawful
46f078beed feat: Introduce TextureAtlas for efficient texture management
- Added TextureAtlas class to manage multiple textures packed into a single large texture, improving rendering performance and reducing GPU state changes.
- Implemented methods for allocating regions, packing bitmaps, and drawing regions from the atlas.
- Removed the DrawDungeonTabView function from DungeonCanvasViewer as it is no longer needed with the new EditorCard system.
- Updated CMake configuration to include texture_atlas.cc in the build process.
- Refactored Room class to eliminate dependency on Arena graphics sheets, transitioning to per-room graphics for rendering.
2025-10-09 20:56:56 -04:00
scawful
51342b02e3 docs: Add APU Timing and Handshake Bug Analysis & Refactoring Plan
- Introduced a new document detailing the APU timing issue that prevents music playback due to handshake failures between the CPU and APU.
- Analyzed the CPU-APU handshake process, identifying points of failure and root causes related to cycle inaccuracies in SPC700 emulation.
- Proposed a comprehensive refactoring plan to implement cycle-accurate instruction execution, centralize the APU execution loop, and use integer-based cycle ratios to eliminate floating-point errors.
- This document serves as a critical resource for developers addressing audio emulation challenges.
2025-10-09 20:50:24 -04:00
scawful
0ba767d6fe docs: Enhance tracker.cc and tracker.h with detailed function and struct documentation
- Added comprehensive Doxygen-style comments for key functions in tracker.cc, including AllocSpcBlock, GetSpcAddr, and LoadSpcCommand, to improve code readability and maintainability.
- Documented the purpose and parameters of various structs in tracker.h, such as SongSpcBlock, SongRange, and SpcCommand, providing clarity on their roles in the music data handling process.
- Improved overall documentation quality to assist developers in understanding the music tracking system's architecture and functionality.
2025-10-09 20:50:03 -04:00
scawful
c33a9c9635 docs: Add comprehensive Dungeon Editor technical guide
- Introduced a new DUNGEON_EDITOR_COMPLETE_GUIDE.md that details the features, architecture, and usage of the Dungeon Editor.
- Documented critical bug fixes, including segfaults and loading order issues, along with their resolutions.
- Enhanced the guide with a structured overview, quick start instructions, and troubleshooting tips for users.
- Updated the architecture section to reflect the new card-based system and self-contained room management.
- Included detailed testing commands and expected outputs to assist developers in verifying functionality.
2025-10-09 20:49:10 -04:00
scawful
c512dd7f35 refactor: Replace deprecated dungeon editor guide with updated documentation
- Deleted the old D1-dungeon-editor-guide.md and F1-dungeon-editor-guide.md files to streamline documentation.
- Introduced a new DUNGEON_EDITOR_GUIDE.md that consolidates features, architecture, and usage instructions for the Dungeon Editor.
- Updated the development guide to include new naming conventions and clarified rendering processes.
- Enhanced the overall structure and content of the documentation to reflect the current production-ready status of the Dungeon Editor.
2025-10-09 20:48:07 -04:00
scawful
6c7f301177 refactor: Simplify CMake configuration for consistent builds
- Removed conditional feature flags for minimal builds, ensuring all features (JSON, gRPC, AI) are enabled for both CI and release configurations.
- Updated CI and release workflows to reflect the change from minimal build to full build mode, enhancing consistency across environments.
- Adjusted summary outputs in CI workflows to clarify the build mode being used.
2025-10-09 18:34:37 -04:00
scawful
418695188a refactor: Migrate DungeonEditor to V2 and update related components
- Replaced the deprecated DungeonEditor with DungeonEditorV2, implementing a card-based architecture for improved UI management.
- Updated CMakeLists.txt to reflect changes in source file organization, including renaming dungeon_editor files to their V2 counterparts.
- Refactored DungeonCanvasViewer to support per-room layer visibility settings and updated related methods for rendering and layer management.
- Enhanced testing framework to accommodate the new DungeonEditorV2 structure, including updates to smoke tests and integration tests.
- Removed legacy dungeon_editor files to streamline the codebase and prevent confusion with the new implementation.
2025-10-09 18:00:27 -04:00
scawful
9675050b78 fix: Adjust CMake configuration and improve room loading logic
- Indented the inclusion of the net library in CMake for better readability.
- Updated room ID validation in DungeonEditorV2 to use a constant value for room limits.
- Enhanced the LoadDoors, LoadTorches, LoadBlocks, and LoadPits methods in the Room class to include detailed logging and improved data handling from ROM, preparing for future implementations of door, torch, block, and pit loading.
2025-10-09 17:42:14 -04:00
scawful
e769cea1d9 feat: Introduce Debugging and Testing Guide with enhanced startup options
- Added a new document, E5-debugging-guide.md, providing comprehensive strategies for debugging and testing the `yaze` application, including logging practices and testing frameworks.
- Updated E2-development-guide.md to include a new section on debugging and testing, detailing quick debugging methods using command-line flags for specific editors and UI cards.
- Enhanced the main application to support command-line flags for opening specific editors and cards on startup, improving the developer experience.
- Refactored the Controller class to handle startup editor and card initialization based on command-line inputs.
2025-10-09 17:19:36 -04:00
scawful
b3c6fd6e12 chore: Update CMake configuration to enable application build
- Changed CMake flags in the CI workflow to enable building the application instead of Z3ED for Windows and Linux configurations.
- Added undefinitions for Windows macros in imgui_test_harness_service.cc and screenshot_utils.cc to prevent conflicts with protobuf generated code.
2025-10-09 16:32:06 -04:00
scawful
b135948ba2 feat: Add layer visibility controls and BG2 layer type selection in DungeonCanvasViewer
- Implemented controls for toggling visibility of background layers BG1 and BG2 in the DungeonCanvasViewer.
- Added a dropdown for selecting the type of BG2 layer, allowing for different rendering effects (Normal, Translucent, Addition, Dark, Off).
- Updated rendering logic to respect visibility settings and apply the selected alpha values for BG2 layer rendering.
- Enhanced debug logging to provide detailed information about bitmap states and rendering processes for both background layers.
2025-10-09 16:25:05 -04:00
scawful
9d0b6737cd refactor: Remove manual object renderer and dungeon renderer from the editor
- Deleted the ManualObjectRenderer and DungeonRenderer classes to streamline the codebase and reduce redundancy.
- Updated DungeonCanvasViewer and DungeonEditorV2 to remove references to the deleted renderers, ensuring proper functionality without them.
- Enhanced the rendering logic in DungeonCanvasViewer to directly handle object rendering and background layers, improving performance and maintainability.
- Added debug logging to track rendering processes and ensure proper graphics loading.
2025-10-09 15:47:15 -04:00
scawful
44800ceccc chore: Update CMake and CI workflow for improved build configurations
- Added an option to conditionally build development tools in CMake, enhancing flexibility for local development.
- Improved error handling in the CI workflow for packaging artifacts across Windows, macOS, and Linux, ensuring binaries and assets are correctly identified and managed.
- Refactored test manager methods to return appropriate errors when gRPC features are not enabled, improving clarity in feature availability.
- Included filesystem header in dungeon test harness for enhanced file operations.
2025-10-09 13:13:48 -04:00
scawful
83ad27e6a0 chore: Refactor vcpkg.json and update CMake configurations
- Removed the abseil dependency from vcpkg.json for Windows platform.
- Updated CMake configuration to prevent finding system-installed protobuf and abseil, ensuring gRPC uses bundled versions.
- Modified todo_manager.cc to convert paths to strings for consistency.
- Updated vision_action_refiner.cc to explicitly convert stripped whitespace strings to std::string.
- Added undefinitions for Windows macros in z3ed_network_client.cc to avoid conflicts with method names.
2025-10-09 12:44:07 -04:00
scawful
2d9a2d11f4 chore: Update vcpkg.json and CI workflow for improved platform-specific configurations
- Updated the builtin-baseline in vcpkg.json to '01f602195983451bc83e72f4214af2cbc495aa94' for consistency with the latest vcpkg release.
- Enhanced the CI workflow by separating CMake configuration steps for Windows, macOS, and Linux, improving clarity and error handling.
- Improved error reporting for CMake configuration failures across different platforms, ensuring better diagnostics in CI logs.
2025-10-09 12:24:27 -04:00
scawful
6539f8fb42 chore: Update vcpkg commit ID in CI and release workflows
- Changed vcpkgGitCommitId to '01f602195983451bc83e72f4214af2cbc495aa94' for both CI and release workflows, reflecting the latest vcpkg release (2024.10.21).
- Ensured consistency across workflows by updating the vcpkg commit ID in all relevant sections.
2025-10-09 12:06:32 -04:00
scawful
793a0b798d feat: Refactor CI workflow for platform-specific CMake configuration
- Separated CMake configuration steps for Windows and Unix environments, enhancing clarity and error handling.
- Improved error reporting for CMake configuration failures, ensuring better diagnostics in CI logs.
- Updated the reporting mechanism for configuration outcomes to reflect the success or failure of both Windows and Unix configurations.
2025-10-09 11:51:24 -04:00
scawful
3e1334d567 chore: Update changelog for version 0.3.2 with CI/CD improvements and graphics system enhancements
- Documented fixes for CI/CD workflows, including artifact management and build diagnostics for Windows.
- Highlighted improvements in the graphics editor, including palette management and synchronization across editors.
- Updated system requirements for Windows, macOS, and Linux to reflect recent changes.
- Enhanced the Tile16 editor with new palette coordination and performance optimizations.
2025-10-09 11:47:39 -04:00
scawful
0d8dbddf67 feat: Enhance CI workflow with diagnostics and artifact management
- Added workflow_dispatch inputs for customizable build types and artifact uploads.
- Implemented detailed diagnostics for vcpkg setup, build processes, and post-build checks on Windows.
- Enhanced error handling and reporting for vcpkg-related issues during builds.
- Improved artifact upload conditions and added summary information for better visibility in CI results.
2025-10-09 11:39:24 -04:00
scawful
760bd5fd33 feat: Update CI/CD workflow for artifact handling and packaging
- Enhanced the release workflow to better manage artifacts for Windows, macOS, and Linux, ensuring correct paths and improved error handling.
- Added environment variable settings for package paths to streamline subsequent steps.
- Improved artifact size reporting based on successful builds, providing clearer feedback in the CI process.
- Refactored artifact download steps to organize and list release artifacts more effectively.
2025-10-09 11:35:40 -04:00
scawful
417816a854 feat: Enhance documentation with CI/CD improvements and editor status updates
- Added detailed CI/CD reliability improvements, including retry mechanisms and enhanced error reporting for Windows vcpkg setup and dependency installation.
- Updated Dungeon Editor status to EXPERIMENTAL, highlighting the need for thorough testing and outlining implemented features.
- Introduced a comprehensive A Link to the Past ROM reference, detailing graphics systems, palette management, and memory mapping.
- Improved changelog to reflect recent fixes and ongoing development status across various editors.
2025-10-09 11:30:58 -04:00
scawful
9e5820a338 feat: Enhance graphics loading and editor synchronization
- Implemented default palette application during graphics data loading to ensure immediate visibility of graphics sheets.
- Refactored GraphicsEditor to queue texture creation without palette management, improving performance and clarity.
- Introduced NotifySheetModified method in Arena to handle texture updates across all editors, ensuring consistency in graphics rendering.
- Enhanced logging for better tracking of graphics sheet modifications and texture operations.
2025-10-09 11:18:43 -04:00
scawful
fdb0f18d6a feat: Enhance emulator functionality with card registration and UI improvements
- Registered multiple emulator cards (CPU Debugger, Memory Viewer, PPU Viewer, Audio Mixer) with the EditorCardManager for improved access and organization.
- Updated EditorManager to support the new Emulator editor type in context-sensitive card controls.
- Improved GraphicsEditor loading process with enhanced logging and palette management for graphics sheets.
- Refactored MessageEditor to streamline font bitmap creation and texture queuing, ensuring better performance and clarity in the rendering loop.
2025-10-09 10:54:11 -04:00
scawful
0b0be64d2b feat: Add vcpkg configuration and update dependencies in vcpkg.json
- Introduced a new vcpkg-configuration.json file to define the default registry and baseline for vcpkg.
- Updated vcpkg.json to include a schema reference, a new builtin-baseline, and refined dependency specifications for SDL2, abseil, yaml-cpp, and zlib, ensuring compatibility with Windows platform.
2025-10-09 10:24:13 -04:00
scawful
45d1905469 chore: Enhance CMake and CI configurations for improved vcpkg integration
- Updated CMakeLists.txt to provide clearer logging and error messages for vcpkg integration, including detailed status reports for toolchain and triplet settings.
- Modified CI workflows to utilize manifest mode for vcpkg installations, improving dependency management and build reliability.
- Enhanced SDL2 and gRPC configurations to prioritize vcpkg packages, ensuring faster builds and clearer fallback mechanisms.
- Improved overall CMake structure for better readability and maintainability, including updated messages for build configurations and warnings.
2025-10-09 10:22:11 -04:00
scawful
aac82ae12d move agent policy yaml 2025-10-09 10:03:28 -04:00
scawful
4ddfe900e4 chore: Refactor CMake and CI workflows for improved build management
- Updated CMakeLists.txt to conditionally enable features based on the build type, optimizing for minimal builds in CI.
- Enhanced CI workflows with retry logic for vcpkg setup and dependency installation, improving reliability.
- Added detailed logging and error reporting for CMake configuration and build steps to facilitate troubleshooting.
- Streamlined the installation of dependencies across platforms, removing unnecessary packages and ensuring compatibility.
- Introduced a summary report for build status and artifacts, enhancing visibility into the CI process.
2025-10-09 10:01:07 -04:00