- Adjusted the order of method calls in BuildModernMenu to improve readability and maintainability.
- Moved the separator method call to follow the item addition for better logical flow.
Benefits:
- Enhances code clarity and organization within the menu building logic of the EditorManager.
- Updated CMake files to conditionally link against libprotobuf based on the YAZE_PROTOBUF_TARGET variable across various modules (core, net, agent, z3ed).
- Ensured consistent use of the static MSVC runtime to align with vcpkg static triplets.
- Improved clarity in build logs by adding status messages for whole-archive linking conditions.
Benefits:
- Enhances modularity and compatibility of the build system with protobuf.
- Streamlines the build process for different platforms by ensuring appropriate linking based on configuration options.
- Modified CMake settings to ensure consistent use of the Homebrew LLVM/Clang installation on macOS.
- Added a new toolchain file to specify the correct compiler and header search paths, resolving potential conflicts.
- Updated CMake presets to enable the EMU build and set appropriate compiler flags.
Benefits:
- Enhances build reliability and compatibility on macOS by utilizing the Homebrew LLVM toolchain.
- Streamlines the build process with improved configuration management.
- Updated CMake configuration to align Windows static builds (MSVC, clang-cl) with vcpkg's /MT runtime.
- Added conditional linking for libprotobuf when YAZE_WITH_GRPC is enabled, enhancing modularity.
- Addressed potential macro conflicts by undefining SendMessage in the conversational agent service files.
Benefits:
- Improves compatibility and reliability of builds on Windows platforms.
- Enhances the flexibility of the build system by conditionally linking libraries based on configuration options.
- Updated CMake configurations across core, net, agent, and z3ed to conditionally apply /WHOLEARCHIVE linking for libprotobuf based on the compiler ID.
- Added status messages to indicate when /WHOLEARCHIVE linking is skipped for clang-cl, improving clarity in build logs.
Benefits:
- Improves compatibility and clarity in the build process for Windows environments using different compilers.
- Ensures that necessary symbols are included when using MSVC, enhancing build reliability.
- Created a comprehensive document detailing the implementation status of the Screen Editor, including sections for Title Screen, Overworld Map, and Dungeon Map editors.
- Document outlines current statuses, functionalities, issues, and next steps for each editor, providing clarity on ongoing development efforts.
- Highlights critical issues with vanilla ROM tilemap loading and outlines priorities for future work.
Benefits:
- Enhances project documentation, aiding developers in understanding the current state and challenges of the Screen Editor.
- Serves as a reference for future development and troubleshooting efforts.
- Added a new composite bitmap to render BG1 and BG2 layers with transparency.
- Enhanced the Create method to initialize the composite bitmap and set its metadata.
- Updated the LoadTitleScreen method to include the composite bitmap in texture creation.
- Introduced RenderCompositeLayer method to manage the layering of background graphics.
Benefits:
- Improves visual fidelity of the title screen by allowing both background layers to be rendered together.
- Enhances the flexibility of rendering options for the title screen, supporting dynamic visibility of layers.
- Enhanced the discover_cmake_libraries function to identify decomposed libraries and handle special cases for source variables.
- Updated gui_library.cmake to utilize auto-maintenance markers, streamlining the management of source lists for GUI components.
- Commented out hardcoded CMake source blocks, allowing for dynamic discovery of source files.
Benefits:
- Simplifies the maintenance of GUI library sources by automating updates and reducing manual configuration.
- Improves clarity and efficiency in the build process for GUI components.
- Updated the discover_cmake_libraries function to support new marker comments for auto-maintenance.
- Improved variable extraction logic to handle decomposed libraries and subdirectory detection.
- Removed hardcoded CMake source blocks in favor of auto-discovery, streamlining the management of graphics library sources.
Benefits:
- Simplifies the maintenance of CMake files by automating source list updates.
- Enhances build efficiency and clarity by reducing manual configuration requirements.
- Added checkboxes for toggling visibility of title screen background layers (BG1 and BG2).
- Implemented a new method for rendering the composite view of the title screen.
- Introduced functionality for loading and saving custom maps from external binary files, enhancing user flexibility in map management.
Benefits:
- Improves user experience by allowing dynamic control over layer visibility during title screen editing.
- Expands the capabilities of the ScreenEditor with custom map handling, facilitating easier map modifications and sharing.
- Changed the bitmap depth for message previews from 64 to 8 to support indexed palette mode.
- Updated logging to reflect the new depth in message preview creation.
- Enhanced Bitmap class with a new method to update surface pixels, ensuring proper pixel data handling in rendering.
Benefits:
- Improves compatibility with indexed palette formats in message rendering.
- Enhances the clarity of logging for bitmap creation processes.
- Added methods for applying palettes based on metadata, allowing for flexible palette handling in different bitmap types.
- Introduced a new BitmapMetadata struct to track source format and palette requirements.
- Enhanced ApplyStoredPalette and SetPaletteWithTransparent methods for improved palette application and transparency handling.
- Updated SDL surface pixel management with a new UpdateSurfacePixels method for better pixel data handling.
Benefits:
- Improves the rendering capabilities of the Bitmap class by supporting various palette formats.
- Enhances user experience with more intuitive palette management in graphics operations.
- Added functionality for managing the overworld map, including loading, rendering, and saving map data for both Light and Dark Worlds.
- Introduced new canvas components for overworld map editing, allowing users to select and paint tiles directly onto the map.
- Enhanced the ScreenEditor with controls for tile flipping and palette selection, improving the user interface for overworld map management.
Benefits:
- Expands the capabilities of the ScreenEditor, providing users with tools to edit and manage the overworld map effectively.
- Improves user experience by enabling intuitive tile editing and visual feedback during map modifications.
- Added yaze_core_lib to the target_link_libraries for the yaze_emulator in emu_library.cmake, ensuring proper linkage of core functionalities.
- Updated Arena constructor to initialize background layers directly, improving clarity and performance.
Benefits:
- Enhances the emulator's build configuration by ensuring all necessary libraries are linked.
- Improves the initialization process in the Arena class for better resource management.
- Implemented a new tilemap system for 8x8 tiles in the ScreenEditor, allowing for on-demand texture creation and caching of tiles.
- Combined multiple sheets into a single tilemap, improving memory efficiency and rendering performance.
- Updated tile drawing logic to extract and cache tiles from the atlas, ensuring textures are created only when needed.
Benefits:
- Enhances performance by reducing unnecessary texture creation.
- Improves user experience with faster tile rendering and management in the editor.
- Refactored multiple editor classes to ensure that ImGui::End() is always called after ImGui::Begin(), enhancing state management and preventing potential rendering issues.
- Updated the DungeonEditor, GraphicsEditor, ScreenEditor, MessageEditor, MusicEditor, and SpriteEditor to follow this pattern, improving code consistency and reliability.
Benefits:
- Improves the stability of the editor UI by ensuring proper handling of ImGui state.
- Enhances code readability and maintainability by standardizing the usage of ImGui functions across different editor components.
- Implemented title screen editing capabilities, including loading and rendering of title screen layers.
- Added inventory item icon management, allowing for the display and selection of item icons within the inventory menu.
- Updated the inventory creation process to ensure proper ROM loading and error handling.
- Introduced new canvas components for title screen and inventory item icons, improving the user interface for editing.
Benefits:
- Enhances the functionality of the screen editor, providing users with tools to edit title screens and manage inventory icons effectively.
- Improves user experience by ensuring robust error handling and visual feedback during inventory management.
- Added functionality to enable SDL audio streaming in the Emulator class, allowing for improved audio handling.
- Introduced environment variable checks to configure audio streaming on initialization.
- Updated audio backend to support native audio frame queuing and resampling, enhancing audio performance and flexibility.
Benefits:
- Enhances audio playback quality and responsiveness in the emulator.
- Provides users with the option to utilize SDL audio streaming for better audio management.
- Modified CMake configurations across multiple files to use `$<TARGET_FILE:libprotobuf>` for whole-archive linking on Windows, ensuring all symbols are included correctly.
- This change enhances compatibility and reliability of the build process when using gRPC.
Benefits:
- Improves build stability on Windows platforms by ensuring proper linking of the protobuf library.
- Deleted the `agent.sh` script, which provided background agent functionality for YAZE, as it is no longer needed.
- Removed the `create_release.sh` script used for creating release tags, streamlining the release process.
- Eliminated the `test_apu_boot.sh` script for APU/SPC700 boot sequence testing, as it is outdated.
Benefits:
- Cleans up the scripts directory by removing unused and deprecated scripts, improving project maintainability.
- Added support for .gitignore patterns to the build_cleaner script, allowing it to respect ignored files during maintenance tasks.
- Implemented auto-discovery of CMake libraries marked for auto-maintenance, improving the automation of source list updates.
- Introduced functions for extracting includes and symbols from source files to suggest missing headers based on usage.
- Updated README to reflect new features and usage instructions.
Benefits:
- Streamlines the build process by automating maintenance tasks and ensuring proper header management.
- Enhances code organization and maintainability by integrating with existing project structures.
- Changed include paths for SNES color and palette headers to reflect new organization under the 'types' and 'util' directories.
- Ensured consistency in include paths across the graphics subsystem.
Benefits:
- Improves code organization and maintainability by adhering to the updated project structure.
- Modified CI configuration to use the D-Bus portal for file dialogs on Linux for improved reliability.
- Updated CMake commands in both CI and release workflows to include the NFD_PORTAL option.
- Removed OpenSSL from vcpkg.json to streamline dependencies.
Benefits:
- Enhances build reliability across different platforms.
- Simplifies dependency management in the project.
- Updated include paths for various GUI-related headers to improve organization and clarity.
- Introduced new components for better modularity, including PaletteEditorWidget and EditorCardManager.
- Refactored existing code to utilize the new components, ensuring consistency across the GUI subsystem.
Benefits:
- Enhances maintainability and readability of the GUI code.
- Facilitates future enhancements and optimizations within the GUI subsystem.
- Updated include paths for various graphics-related headers to improve organization and clarity.
- Introduced new types for SNES color, palette, and tile management, enhancing the structure of the graphics subsystem.
- Refactored existing code to utilize the new types, ensuring consistency across the codebase.
Benefits:
- Improves maintainability and readability of the graphics code.
- Facilitates future enhancements and optimizations within the graphics subsystem.
- Introduced PaletteManager to handle all palette-related operations, including color modifications, undo/redo functionality, and batch processing.
- Updated PaletteEditor and PaletteGroupCard to utilize PaletteManager for managing palette states and modifications, streamlining the editing process.
- Enhanced user interface with confirmation popups for discard actions and error notifications for save failures.
Benefits:
- Centralizes palette management, improving consistency and reducing code duplication across editors.
- Enhances user experience by providing clear feedback on unsaved changes and simplifying color operations.
- Implemented initialization for music-related editor cards, including Music Tracker and Instrument Editor, with appropriate registration and default visibility settings.
- Updated MusicEditor to manage card visibility dynamically and added methods for drawing specific editor views.
- Improved EditorCardManager to handle recent category tracking, enhancing user navigation through editor categories.
Benefits:
- Streamlines access to music editing tools, improving user experience and workflow efficiency within the editor environment.
- Updated EditorManager to pass visibility flags directly to memory and assembly editors, enhancing the responsiveness of the editor interface.
- Simplified visibility checks by retrieving flags from the EditorCardManager, ensuring accurate updates based on user interactions.
Benefits:
- Streamlines the editor update process, improving user experience by ensuring editors reflect their visibility state accurately.
- Updated EditorManager to support new card-based editors, including Emulator, Hex, and Assembly editors.
- Added centralized registration of editor cards with EditorCardManager, improving visibility management.
- Implemented methods to retrieve editor types from categories and manage card visibility dynamically.
- Enhanced initialization processes for various editors to ensure proper card registration and default visibility settings.
Benefits:
- Improved user experience by organizing editor cards and providing quick access to new editor functionalities.
- Streamlined editor management, making it easier to switch between different editing contexts and enhancing overall workflow efficiency.
- Updated EditorManager to handle sidebar drawing for card-based editors, improving consistency across editor types.
- Removed individual toolbar implementations from GraphicsEditor, ScreenEditor, and SpriteEditor, as sidebar functionality is now centralized.
- Enhanced EditorCardManager to manage card visibility and selection more effectively, including improved UI feedback for empty card categories.
Benefits:
- Streamlined editor interface and improved user experience by consolidating sidebar management, making it easier to navigate and manage editor cards.
- Introduced methods to determine if an editor is card-based and to retrieve its category.
- Implemented a sidebar toggle shortcut (Ctrl+B) for managing card visibility.
- Added functionality to hide current editor cards when switching editors.
- Updated editor initialization to register global shortcuts for activating specific editors.
- Enhanced the Update method to draw a sidebar for the current category editor.
Benefits:
- Improved user experience by organizing editor cards and providing quick access to editor categories.
- Streamlined editor management, making it easier to switch between different editing contexts.
- Moved palette_editor and palette_group_card files to a dedicated palette directory for better organization.
- Updated CMake configuration to link the new palette editor files and added support for the yaze_agent library when not in minimal build.
- Refactored include paths in various editor files to reflect the new structure, ensuring proper linkage and modularity.
Benefits:
- Improved code organization and maintainability by grouping related files.
- Enhanced functionality with the integration of AI features through the yaze_agent library.
- Added a step to free disk space on Linux runners, removing unnecessary software and displaying disk usage before and after cleanup.
- Improved build logging by adding status messages indicating the build configuration and the number of parallel jobs used.
- Updated test suite execution messages for better clarity during CI runs.
Benefits:
- Optimized CI resource usage and improved visibility into the build process, aiding in troubleshooting and efficiency.
- Updated CMake configurations to conditionally link OpenSSL only when gRPC is not enabled, preventing duplicate symbol errors.
- Added support for whole-archive linking of protobuf on Windows across core, net, agent, and z3ed components to ensure all symbols are included.
- Improved status messages to reflect the use of gRPC's OpenSSL when applicable.
Benefits:
- Enhanced compatibility and stability of the build process across different platforms and configurations.
- Added new source files for test commands and conversation tests to the agent's command handling structure.
- Removed the obsolete GUI command handler, redirecting users to the command registry for GUI automation commands.
Benefits:
- Enhanced testing capabilities and modularity within the agent's command management, facilitating future feature additions.
- Added FTXUI components (screen, dom, component) to the agent's CMake configuration, enabling advanced UI capabilities.
- Removed unnecessary include statement from general_commands.cc to streamline the code.
Benefits:
- Improved modularity and extensibility of the agent's UI features, facilitating future enhancements.
- Introduced a new source file for general commands in the agent's command handling structure.
- This addition enhances the command management capabilities of the CLI, allowing for more comprehensive command processing.
Benefits:
- Improved modularity and extensibility of command handling within the agent, facilitating future feature additions.
- Rearranged the order of include statements in themed_widgets.h for better organization and readability.
- Simplified the definition of StatusType by removing redundant braces, enhancing clarity in the code structure.
- Adjusted formatting in function declarations for consistency.
Benefits:
- Improved code maintainability and readability through better organization and formatting.
- Changed the include path for Hyrule Magic from "app/zelda3/hyrule_magic.h" to "util/hyrule_magic.h" in tracker.cc.
- This adjustment improves the modularity of the codebase by aligning the include structure with the new organization of utility headers.
- Removed the DYAZE_USE_MODULAR_BUILD option from build presets documentation.
- Updated the agent guide to reflect the recent completion of version 0.2.2-alpha, highlighting new emulator debugging infrastructure and its benefits for AI agents.
- Enhanced the CLI help output to include a more structured command summary and improved descriptions for better user understanding.
- Replaced direct command handling in ModernCLI with a centralized CommandRegistry singleton.
- Removed SetupCommands method and associated command handler logic, simplifying command execution and registration.
- Updated ShowHelp and ShowCommandSummary methods to utilize CommandRegistry for fetching command metadata and descriptions.
Benefits:
- Streamlined command management, enhancing maintainability and clarity in the CLI structure.
- Improved command registration and execution consistency through a unified registry approach.
- Introduced a new hierarchical WhichKey feature that allows users to navigate commands using a Spacemacs-style interface.
- Added functionality for breadcrumb navigation and auto-close after a specified duration.
- Implemented keyboard input handling for prefix keys to enter submenus or execute commands.
- Updated the CommandManager header to include new methods and state variables for managing WhichKey navigation.
Benefits:
- Improved user experience by providing a more intuitive command navigation system.
- Enhanced accessibility of commands through visual grouping and structured navigation.
- Added methods for managing breakpoints, including adding, removing, listing, and enabling/disabling breakpoints.
- Introduced watchpoint management methods, although integration is pending.
- Implemented execution control features such as stepping through instructions and running to breakpoints.
- Enhanced disassembly capabilities to retrieve and display instruction details from memory.
- Updated header file to include new debugging functionalities, ensuring clarity and modularity.
Benefits:
- Improved debugging capabilities for the emulator, facilitating better development and testing workflows.
- Enhanced user experience by providing detailed control over execution and memory analysis.
- Moved background rendering functionality from the editor to a dedicated GUI module, enhancing modularity and separation of concerns.
- Introduced layout helpers for consistent theme-aware sizing across the GUI, improving UI consistency and maintainability.
- Updated CMake configuration to reflect the new structure, ensuring proper linkage of the background renderer and layout helpers.
Benefits:
- Improved organization of GUI components, facilitating easier updates and enhancements.
- Enhanced user interface consistency through theme-aware layout management.
- Added support for advanced features in the ConversationalAgentService, including learned knowledge and TODO management, conditional on Z3ED_AI being enabled.
- Implemented methods for injecting learned context and pretraining prompts into user messages, enhancing the conversational experience.
- Updated header files to include necessary components for advanced features, ensuring modularity and clarity in the service's capabilities.
Benefits:
- Improved user interaction by providing contextually relevant responses.
- Enhanced maintainability and extensibility of the agent's functionality.
- Updated CMake configuration to conditionally link the yaze_test_support library when tests are enabled, alongside the existing ImGuiTestEngine.
- Improved status messages to provide clearer feedback on linked libraries during the build process.
Benefits:
- Enhanced testing capabilities for the editor by integrating additional support libraries.
- Improved clarity in build output regarding linked test infrastructure.