- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Removed individual card shortcuts for dungeon and graphics categories to prevent hash table overflow, consolidating functionality into a Card Browser.
- Introduced a context-sensitive card control feature that dynamically displays relevant cards based on the active editor.
- Updated PaletteEditor to clarify its use of internal tabs instead of separate cards.
- Registered multiple cards in MessageEditor and OverworldEditor, improving visibility and management of editor functionalities.
- Introduced new shortcut categories for graphics, screen, and sprite editors, improving accessibility and organization.
- Updated DungeonEditorV2 and other editor classes to register cards with the EditorCardManager, allowing for better control and visibility management.
- Refactored shortcut registration for dungeon, graphics, screen, and sprite editors, ensuring consistent user experience across the application.
- Improved initialization processes to handle dynamic card visibility and shortcuts effectively.
- Added EditorCardManager to handle registration, visibility, and management of editor cards.
- Integrated card shortcuts and dynamic menu sections for improved user experience in the dungeon editor.
- Registered multiple dungeon-related cards with associated shortcuts for quick access.
- Enhanced DungeonEditorV2 to utilize the new card management system, allowing independent control of editor cards.
- Updated UI components to support card-based editors, improving layout and usability.
- Introduced ManualObjectRenderer class to facilitate manual rendering of dungeon objects for debugging purposes.
- Integrated manual renderer initialization in DungeonEditorV2, allowing for testing and debugging of object rendering.
- Added methods for rendering simple blocks, test patterns, and debugging graphics sheets.
- Updated dungeon_editor_v2.cc and dungeon_editor_v2.h to include the new manual renderer functionality.
- Updated DungeonCanvasViewer and DungeonEditor to render room objects as primitives temporarily for debugging purposes.
- Enhanced object interaction with new context menu options for deleting, copying, and pasting selected objects.
- Implemented drag-and-drop functionality for moving selected objects within the dungeon.
- Added texture processing for background layers and deferred texture commands to optimize rendering performance.
- Refactored code for clarity and maintainability, ensuring better handling of object interactions and rendering logic.
- 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.
- Changed the type of dictionary variable from int to int8_t for better type safety.
- Updated the handling of dictionary entries in message parsing to ensure correct formatting and prevent parsing errors with command arguments.
- Refactored message data parsing logic to use index-based loops, improving clarity and correctness in handling command arguments.
- Enhanced the documentation in message_data.h to provide a comprehensive overview of the message data system and its components.
- Added new tests to validate the correct parsing of messages with commands and arguments, ensuring robustness against previous bugs.
- Eliminated the kLogInstructions flag and associated logging functionality, as the DisassemblyViewer is now always active and utilizes a more efficient sparse address-map recording method.
- Updated relevant code across multiple files to reflect the removal of the deprecated feature, ensuring cleaner and more maintainable code.
- Adjusted UI elements and serialization methods to remove references to the obsolete logging feature, streamlining the user experience.
- Replaced direct calls to GetConfigDirectory with PlatformPaths::GetConfigDirectory across multiple files to standardize configuration directory access.
- Updated RecentFilesManager, EditorManager, and various agent components to handle potential errors when retrieving the configuration directory.
- Enhanced file loading functions to utilize the new LoadFileFromConfigDir method for improved clarity and error handling.
- Introduced new methods in file_util.h for better file management practices, leveraging std::filesystem for cross-platform consistency.
- Updated Emulator to support optional lazy initialization of the renderer, enhancing flexibility during runtime.
- Introduced a new method in IRenderer for creating textures with specific pixel formats, improving texture management for the emulator.
- Refactored texture command processing in Arena to handle empty queues more gracefully.
- Enhanced SDL2Renderer to support the new texture creation method, ensuring compatibility with emulator requirements.
- Updated the testing guide to clarify the testing framework's organization and execution methods, improving user understanding.
- Refactored CMakeLists to include new platform-specific files, ensuring proper integration of the rendering backend.
- Modified main application files to utilize the new IRenderer interface, enhancing flexibility in rendering operations.
- Implemented deferred texture management in various components, allowing for more efficient graphics handling and improved performance.
- Introduced new methods for texture creation and updates, streamlining the rendering process across the application.
- Enhanced logging and error handling in the rendering pipeline to facilitate better debugging and diagnostics.
- Added a custom assertion handler for ImGui to log assertion failures instead of crashing the application.
- Implemented a mechanism to back up and reset ImGui workspace settings after multiple assertion failures.
- Updated the window creation process to set the custom assertion handler conditionally based on build configuration.
- Enhanced the welcome screen to truncate project names for better display in the UI.
- Introduced ObjectEditorCard to consolidate object selection, emulator preview, and interaction controls into a single interface.
- Updated DungeonCanvasViewer to support object interaction context and handle mouse input for object selection and placement.
- Enhanced DungeonEditorV2 with new room graphics card for visualizing room graphics and improved layout for better user experience.
- Refactored existing components to accommodate the new unified editor, streamlining the workflow for managing dungeon objects.
- Added JumpToDungeonRoom and JumpToOverworldMap methods to facilitate quick navigation between dungeon and overworld editors.
- Introduced SwitchToEditor method to manage editor tab activation based on the selected editor type.
- Enhanced DungeonEditorV2 with room and entrance selection capabilities, improving user experience and workflow efficiency.
- Updated header files to declare new methods and ensure proper integration within the editor management system.
- Added critical logging for graphics buffer management in LoadAllGraphicsData to prevent data corruption during ROM loads.
- Updated logging levels from INFO to DEBUG across various components for consistency and to reduce log verbosity.
- Refactored texture creation and palette application logic to allow editors to manage their own rendering, improving flexibility and user experience.
- Improved background buffer handling to ensure fresh bitmap creation only when necessary, optimizing performance.
- Enhanced debugging output for canvas and performance tracking, aiding in better diagnostics during development.
- Introduced a new PaletteEditorWidget for visual editing of dungeon palettes, allowing users to select and modify colors.
- Integrated palette editor into DungeonEditorV2, enabling real-time updates and re-rendering of rooms upon palette changes.
- Enhanced GUI layout to include a dedicated palette editor card, improving user experience and accessibility.
- Implemented callback functionality to notify when palette changes occur, ensuring seamless integration with room rendering.
- Updated DungeonCanvasViewer to check and render room-specific graphics, improving rendering efficiency.
- Enhanced LoadAndRenderRoomGraphics to include detailed logging for better debugging.
- Refactored room rendering methods to utilize individual background buffers instead of global arena buffers, ensuring accurate graphics representation.
- Improved room diagnostic functionality to verify background buffer states specific to each room.
- Added critical checks and logging in BackgroundBuffer to ensure proper tile rendering and bitmap management.
- Added DungeonObjectEmulatorPreview for rendering dungeon objects using the SNES emulator, allowing real-time visualization of object graphics.
- Implemented ObjectDrawer class to handle drawing of various object types to background buffers, utilizing game-specific patterns.
- Updated DungeonCanvasViewer to integrate object rendering and improve background layer management.
- Enhanced DungeonEditorV2 to support the new emulator preview, providing a more interactive editing experience.
- Improved error handling and logging for better debugging during object rendering operations.
- Introduced a new editor type for the emulator, allowing users to access emulator functionalities directly from the editor manager.
- Updated the editor selection dialog to include the emulator option with appropriate descriptions and shortcuts.
- Enhanced the emulator interface with modern theming and improved layout for better user experience.
- Implemented various UI components for performance monitoring, AI agent integration, and save state management, enriching the emulator's capabilities.
- Added TimingManager class to provide precise timing for animations and frame pacing, addressing issues with ImGui::GetIO().DeltaTime.
- Updated event handling in the window management to use SDL_PollEvent for improved responsiveness.
- Integrated TimingManager into EditorManager, BackgroundRenderer, and WelcomeScreen for consistent delta time usage across the application.
- Enhanced animation updates to utilize accurate frame timing, improving visual performance and user experience.
- Introduced retro-style animations including pulsing borders, scanline effects, and glitch animations to the Agent Chat History Popup, enhancing visual appeal.
- Updated message display with terminal-inspired styling, including color-coded sender labels and retro separators.
- Improved header design with a pulsing glow effect and animated status indicators for unread messages, enriching user interaction.
- Refactored drawing methods to accommodate new visual effects while maintaining existing functionality.
- Integrated SDL for image loading in the Agent Chat Widget, allowing for dynamic screenshot previews.
- Updated the screenshot capture functionality to save selected regions and display previews, improving user interaction.
- Refactored theme color usage to utilize the new text_secondary_color for consistent styling across the widget.
- Added error handling for image loading and rendering processes, enhancing robustness and user feedback.
- Introduced a new Automation Panel in the Agent Chat Widget, providing users with real-time automation status, quick action buttons, and a list of recent automation actions.
- Implemented connection status indicators and refresh functionality for automation state, enhancing user interaction and feedback.
- Updated the header file to declare the new RenderAutomationPanel method, ensuring proper integration within the widget's UI structure.
- Added new command handlers for dialogue inspection tools: `dialogue-list`, `dialogue-read`, and `dialogue-search`, allowing users to interact with dialogue messages in the ROM.
- Introduced music data tools: `music-list`, `music-info`, and `music-tracks`, enabling users to retrieve information about music tracks and their properties.
- Implemented sprite property tools: `sprite-list`, `sprite-properties`, and `sprite-palette`, providing access to sprite details and color palettes.
- Updated the command dispatcher to support the new tools, enhancing the functionality and usability of the CLI for users working with ROM data.
- Added a helper method, MakeCardTitle, to generate session-aware titles for editor cards based on the current session context.
- Updated various editor files to utilize the new MakeCardTitle method, ensuring consistent card naming across multiple sessions.
- Refactored card initialization in AssemblyEditor, GraphicsEditor, DungeonEditorV2, OverworldEditor, and SpriteEditor to support dynamic session titles, enhancing user experience and clarity.
- Removed PushID and PopID calls in EditorManager to prevent ID stack corruption, relying on window titles for uniqueness.
- Updated ImGui window size and position settings to use FirstUseEver for maximizing on first open, enhancing user experience.
- Replaced AgentUI::PopPanelStyle with ImGui::PopStyleColor in multiple locations for consistency in style management.
- Ensured all EditorCard instances consistently call End after Begin, improving code clarity and preventing potential rendering issues.
- Implemented Canvas Automation API integration in OverworldEditor, allowing for automated tile operations and enhanced control.
- Simplified editing modes in the toolbar, consolidating functionality for a more intuitive user experience.
- Updated entity editing shortcuts and context menu interactions to streamline entity management.
- Adjusted drawing methods to ensure consistent rendering without scale application, improving performance and clarity.
- Added comments for future enhancements regarding entity operations submenu.
- Introduced a new language definition for the 65816 assembly language, improving syntax highlighting and code editing capabilities.
- Updated the AssemblyEditor to utilize the new language definition and integrated a toolset for file management actions, enhancing user experience.
- Refactored the file handling logic to support dynamic file opening and saving, ensuring better resource management within the editor.
- Removed deprecated tab view code, transitioning to a more modular card-based layout for active files, improving UI responsiveness and organization.
- Replaced static context menu setup in OverworldEditor with dynamic configuration based on the current map state, improving usability and responsiveness.
- Introduced TileSelectorWidget for better tile selection management, allowing for a more intuitive user experience when selecting tiles.
- Updated canvas controls to include zoom in and zoom out functionalities, enhancing the editor's navigation capabilities.
- Cleaned up legacy context menu code and improved overall organization for better maintainability and clarity.
- Added file utility header for improved resource path management.
- Enhanced ASM file handling by utilizing GetResourcePath for better compatibility across deployment scenarios.
- Cleaned up code formatting and comments for clarity, ensuring consistent indentation and readability.
- Deprecated feature flag for ZSCustomOverworld ASM application, simplifying the logic for version gating.
- Changed static asm_version declarations to non-static to ensure fresh reads from ROM, reflecting upgrades accurately.
- Improved comments to clarify the importance of reading the asm_version dynamically.
- Enhanced the DrawToolset method in OverworldEditor to include a new ROM Upgrade Popup for applying ASM patches, improving user experience and functionality.
- Updated MapPropertiesSystem to support area size selection for all ROM versions, introducing logic for Wide and Tall options in v3+.
- Improved UI elements with tooltips and organized layouts for better user experience when configuring map sizes.
- Added ConfigureMultiAreaMap method in Overworld class to manage sibling relationships and update ROM data based on area size.
- Implemented safety checks for palette setting in OverworldEditor to ensure valid bitmap surfaces before applying changes.
- Cleaned up related code and comments for clarity and maintainability.
- Deleted OverworldEditorManager and OverworldGraphicsManager classes to streamline the codebase and reduce complexity in the overworld editor.
- Updated CMake configuration to remove references to the deleted files, ensuring a clean build environment.
- Adjusted OverworldEditor to handle graphics management directly, improving maintainability and reducing the number of dependencies.
- Enhanced the initialization and update methods in OverworldEditor to accommodate the removal of the manager classes, ensuring continued functionality.
- Cleaned up related header files to reflect the removal of obsolete classes and methods, enhancing clarity and organization.
- Introduced OverworldGraphicsManager to handle graphics loading, refreshing, and texture management for the overworld editor.
- Updated MapPropertiesSystem to integrate new graphics management features, ensuring proper refresh order for map properties and graphics.
- Added methods for forcing graphics refresh and handling sibling map graphics, improving the responsiveness of the editor.
- Enhanced UI elements in the MapPropertiesSystem for better user experience, including tooltips and organized layouts.
- Updated CMake configuration to include new graphics manager files, ensuring proper integration into the build system.
- Added OverworldEntityRenderer class to separate entity rendering logic from OverworldEditor, improving maintainability and testability.
- Updated OverworldEditor to utilize the new entity renderer, removing legacy drawing functions for entrances, exits, items, and sprites.
- Enhanced initialization and drawing methods to streamline entity visualization and interaction within the editor.
- Updated CMake configuration to include the new renderer files, ensuring proper integration into the build system.
- Removed the DrawTileSelector function, transitioning to an individual card system for tile selection.
- Eliminated unused functions related to custom background color and overlay editing, simplifying the codebase.
- Updated header file to reflect the removal of obsolete methods and constants, enhancing clarity and maintainability.
- Improved overall organization of the OverworldEditor class for better readability and performance.
- Updated the MapPropertiesSystem to enhance the user interface with icons and tooltips for better accessibility and clarity.
- Renamed UI elements for consistency, changing "Map Properties" to "Area Configuration" and "Overlay Editor" to "Visual Effects Editor."
- Improved the layout and organization of the properties panel, ensuring a more intuitive user experience.
- Added detailed tooltips and help sections to guide users in configuring visual effects and overlays.
- Removed legacy window code, consolidating all editor functionalities into a streamlined system for better performance and maintainability.
- Introduced callback mechanisms in MapPropertiesSystem for refreshing map properties, overworld map, and palette, improving modularity and flexibility.
- Updated UI elements in map properties to include icons and tooltips for better user experience and accessibility.
- Refactored drawing methods to utilize a more organized layout, enhancing readability and maintainability of the code.
- Adjusted table structures in the UI to improve visual density and usability, ensuring a more compact and efficient interface.
- Removed unused includes and cleaned up code for better performance and clarity.
- Added InitializeForTesting method in Rom class to facilitate testing setup.
- Updated DungeonCanvasViewer to adjust object and sprite sizes from 16x16 to 8x8, improving rendering accuracy.
- Modified rendering logic for various dungeon objects (chests, doors, walls, pots) to reflect new size calculations.
- Adjusted object position calculations in ObjectRenderer to align with the new size metrics, ensuring consistent rendering across the application.
- Updated integration tests to verify the new initialization method for ROM objects.
- Added AgentChatHistoryPopup class to provide a sidebar for displaying recent chat messages, improving user accessibility to chat history.
- Integrated the new popup into the editor's source files, ensuring proper inclusion and functionality within the existing UI framework.
- Refactored related files to accommodate the new popup, enhancing code organization and maintainability.
- Updated CMake configuration to include the new source files, ensuring a seamless build process.