- Introduced a new `yaze_grpc_support` library to centralize all gRPC and protobuf usage, addressing Windows linker errors and improving build stability.
- Updated CMake configurations across various components to link against the new support library instead of individual protobuf targets, simplifying the linking process.
- Removed legacy whole-archive linking logic, ensuring a cleaner and more maintainable build setup.
Benefits:
- Reduces complexity in CMake files and enhances compatibility across platforms.
- Prevents potential linker errors by consolidating gRPC and protobuf dependencies into a single library.
- Enhanced CMake configuration to conditionally apply /WHOLEARCHIVE linking for protobuf targets, ensuring only library targets are included.
- Updated linking logic across multiple components including `yaze`, `yaze_emu`, `z3ed`, and test suites to improve compatibility and prevent linker errors.
Benefits:
- Increases build stability and clarity by ensuring only relevant targets are linked, reducing potential conflicts during the build process.
- Modified CMakeLists.txt for test helper executables to use PRIVATE visibility for linked libraries, ensuring encapsulation of dependencies.
- This change enhances build clarity and prevents unintended linkage of libraries in other targets.
Benefits:
- Improves modularity and maintainability of the build configuration for test helpers.
- Adjusted CMake files to conditionally link protobuf using /WHOLEARCHIVE on Windows to include internal symbols while avoiding LNK1241 errors.
- Updated linking logic for `yaze`, `yaze_editor`, `yaze_emu`, `z3ed`, and test suites to ensure compatibility across platforms.
Benefits:
- Improves build stability and compatibility for Windows users by ensuring proper symbol inclusion without resource duplication issues.
- Added /WHOLEARCHIVE linking for protobuf in various CMake files to ensure internal symbols are included while preventing resource duplication.
- Updated linking options for `yaze`, `yaze_emu`, `z3ed`, and test suites to apply this option conditionally on Windows with MSVC.
Benefits:
- Ensures proper inclusion of protobuf symbols in executables, improving compatibility and functionality across platforms.
- 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.
- Added new UI components for the emulator, including dedicated panels for CPU and APU debugging, improving user interaction and debugging capabilities.
- Implemented a caching mechanism for rendered objects in the DungeonCanvasViewer to optimize performance and reduce rendering time.
- Updated the CMake configuration to include new UI source files, ensuring proper organization and build management.
- Enhanced the theme manager with improved color definitions for better visibility and consistency across the UI.
- Refactored the emulator interface to delegate rendering tasks to the UI layer, streamlining the codebase and improving maintainability.
- Updated gRPC configuration to use version 1.67.1, improving compatibility with modern compilers and fixing MSVC template issues.
- Enhanced warning messages for missing vcpkg gRPC installation, providing clearer instructions for faster builds.
- Introduced a new dungeon test harness tool to capture and dump the state of WRAM and CPU/PPU registers, aiding in emulator testing and development.
- Organized source groups in CMake for better structure and clarity in the input and UI systems.
- Added a new `tools` directory to house various utility tools, including the `overworld_golden_data_extractor`, `extract_vanilla_values`, and `rom_patch_utility`.
- Introduced comprehensive integration tests for dungeon and overworld functionalities, ensuring compatibility with existing ROM data.
- Refactored existing test files to improve organization and maintainability, moving deprecated tests to a dedicated directory.
- Updated CMake configuration to include new tools and tests, enhancing the build process for development and CI environments.
- Improved test coverage for dungeon object rendering and room integration, validating core functionalities against expected behaviors.