Commit Graph

2141 Commits

Author SHA1 Message Date
scawful
6bdcfe95ec Update CMake configuration and CI/CD workflows
- Upgraded CMake minimum version requirement to 3.16 and updated project version to 0.3.0.
- Introduced new CMake presets for build configurations, including default, debug, and release options.
- Added CI/CD workflows for continuous integration and release management, enhancing automated testing and deployment processes.
- Integrated Asar assembler support with new wrapper classes and CLI commands for patching ROMs.
- Implemented comprehensive tests for Asar integration, ensuring robust functionality and error handling.
- Enhanced packaging configuration for cross-platform support, including Windows, macOS, and Linux.
- Updated documentation and added test assets for improved clarity and usability.
2025-09-25 08:59:59 -04:00
scawful
7014d73e7b Add Comprehensive Dungeon Editor Design Plan
- Introduced a detailed design plan document for the Yaze Dungeon Editor, outlining the current architecture, main components, and core systems.
- Documented identified issues and applied fixes, including crash prevention and UI simplification, along with a roadmap for future development phases.
- Enhanced clarity on the implementation guidelines, testing strategies, and performance considerations to support ongoing development efforts.
- Established a structured approach for new developers to understand the codebase and contribute effectively to the project.
2025-09-24 23:53:29 -04:00
scawful
a71f1e02c9 Add Dungeon Room and Object Selection Features
- Introduced new classes for DungeonRoomSelector and DungeonObjectSelector to enhance room and object management within the dungeon editor.
- Implemented UI components for selecting rooms and entrances, allowing users to easily navigate and manage dungeon layouts.
- Added functionality for rendering room graphics and object previews, improving the visual editing experience.
- Updated the DungeonEditor class to integrate the new selectors, streamlining the overall editing workflow.
- Enhanced error handling and validation in room and object management processes to ensure robust functionality.
2025-09-24 23:39:50 -04:00
scawful
4ae9dc9e0c Enhance Dungeon Editor with Room Graphics Management
- Refactored the DungeonEditor class to include new methods for loading and rendering room graphics, improving the overall graphics management system.
- Introduced LoadAndRenderRoomGraphics and ReloadAllRoomGraphics methods to streamline the loading process for room graphics.
- Updated the UI to provide buttons for loading room graphics and reloading all graphics, enhancing user interaction.
- Improved background rendering logic by adding RenderRoomBackgroundLayers, ensuring proper layering of graphics.
- Adjusted data types in UI text displays for better accuracy and consistency in rendering information.
2025-09-24 23:10:45 -04:00
scawful
04909dc3d0 Add Comprehensive Guide for Yaze Dungeon Editor
- Introduced a new documentation file detailing the Yaze Dungeon Editor, covering its architecture, core components, coordinate system, object rendering system, user interface, and integration with ZScream.
- Included sections on usage examples, testing and validation strategies, and future enhancements to provide a complete overview of the editor's capabilities.
- Removed the outdated dungeon object rendering refactor documentation to streamline resources and focus on the comprehensive guide.
- Enhanced clarity and organization of the documentation to support both novice and expert users in effectively utilizing the dungeon editing tools.
2025-09-24 23:00:44 -04:00
scawful
ccd4e8cf4b Integrate Dungeon Editor System and Object Editor for Enhanced Dungeon Management
- Introduced a new DungeonEditorSystem to streamline dungeon editing functionalities, including room properties management and object editing.
- Enhanced the DungeonEditor class to initialize the new editor system and manage room properties effectively.
- Added comprehensive object editing capabilities with a dedicated DungeonObjectEditor, supporting object insertion, deletion, and real-time preview.
- Implemented improved UI components for editing dungeon settings, including integrated editing panels for various object types.
- Enhanced error handling and validation throughout the dungeon editing process to ensure robust functionality.
- Updated integration tests to cover new features and validate the overall performance of the dungeon editing system.
2025-09-24 22:48:47 -04:00
scawful
b9a4d07745 Refactor MapPropertiesSystem for Improved UI and Functionality
- Updated the DrawSimplifiedMapSettings method to streamline the layout and enhance usability with new UI constants for table and button dimensions.
- Removed the Tools popup from the MapPropertiesSystem, consolidating editing functionalities for a cleaner interface.
- Enhanced the DrawGraphicsPopup and DrawPalettesPopup methods with custom input widths for better alignment and user experience.
- Improved the organization of map properties sections, adding clear headers for Basic Properties, Area Configuration, and Visual Effects.
- Adjusted button functionalities and hover hints for better user guidance and interaction.
2025-09-24 21:28:10 -04:00
scawful
e8afc764a0 Enhance Overworld Editor and Map Properties System
- Updated the DrawOverworldEntrancePopup to include new options for deleting entrances and improved UI labels for better clarity.
- Integrated new UI constants for consistent styling across the editor.
- Refactored MapPropertiesSystem to support additional toolset functionalities, including editing tools and view controls.
- Improved overlay handling in OverworldMap, consolidating vanilla and custom overlay loading logic.
- Enhanced user interaction with new buttons and streamlined layout for better usability in the editor.
2025-09-24 21:10:37 -04:00
scawful
912cc3fb56 Update overworld map properties and overlay functionality
- Changed the included assembly file for custom overworld to version 3 for improved features.
- Enhanced documentation in the overworld loading guide to clarify overlay effects and configurations.
- Refactored MapPropertiesSystem to support overlay previews and improved mosaic controls.
- Added functionality for loading vanilla overlays and displaying overlay descriptions in the editor.
- Updated UI components in OverworldEditor to integrate new overlay settings and preview options.
2025-09-24 20:16:53 -04:00
scawful
25f8a550b6 Fix Overworld sprite drawing system
- Updated the MapPropertiesSystem to improve the layout of the simplified map settings table, increasing column widths for better visibility and usability.
- Adjusted button sizes in the OverworldEditor for Graphics, Palettes, Overlays, and Properties to enhance user interaction.
- Implemented filtering of sprites in the OverworldEditor based on the current world, ensuring only relevant sprites are displayed.
- Refactored sprite drawing logic to utilize global coordinates directly, improving accuracy in sprite rendering.
2025-09-24 18:37:39 -04:00
scawful
8b1b058fea Add MapPropertiesSystem for enhanced overworld map management
- Introduced MapPropertiesSystem class to manage map properties, including settings for area size, graphics, palettes, and overlays.
- Implemented UI components for drawing map properties, allowing users to customize map settings through a dedicated panel.
- Enhanced OverworldEditor to integrate map properties functionality, providing quick access to map settings via context menus and UI interactions.
- Added support for custom background colors and overlays, improving the overall customization experience for users.
2025-09-24 17:01:48 -04:00
scawful
12bb5dc3d5 Enhance OverworldEditor with new customization features
- Updated OverworldEditor to include new table columns for CopyMap, MapLock, CustomBG, and Overlay, improving user interaction and customization options.
- Implemented DrawCustomBackgroundColorEditor and DrawOverlayEditor methods for managing custom background colors and overlay settings, respectively.
- Added context menu functionality for map locking and quick access to map properties, enhancing usability.
- Refactored OverworldMap to support new features related to animated graphics and subscreen overlays, ensuring compatibility with ZScreamCustomOverworld v3.
2025-09-24 15:58:46 -04:00
scawful
49b4f6d677 Add ZScreamCustomOverworld ASM v3 and integrate area size support
- Introduced ZScream Custom Overworld ASM to enhance customization of the ALTTP overworld, allowing users to modify various aspects such as palettes, backgrounds, and transitions.
- Updated OverworldEditor to include area size selection for v3 support, enabling users to choose between different area sizes (Small, Large, Wide, Tall).
- Enhanced OverworldMap to load area size information based on the applied ASM version, ensuring compatibility with expanded features.
- Implemented SaveAreaSizes method in Overworld to persist area size settings in the ROM, supporting the new customization capabilities.
- Refactored related classes and methods to accommodate the new area size logic and ensure seamless integration with existing functionalities.
2025-09-24 15:36:29 -04:00
scawful
3ab82a9567 Add dungeon object parser and room layout files to CMake configuration
- Included object_parser.cc and room_layout.cc in the CMakeLists.txt for the Zelda 3 project, enhancing the build configuration to support new dungeon functionalities.
- Ensured proper inclusion of necessary source files for improved object handling and room layout management in the dungeon editor.
2025-09-24 13:00:52 -04:00
scawful
3734884ba3 Refactor Snes class and enhance Apu functionality
- Updated Snes constructor to initialize CPU callbacks directly, improving readability and maintainability.
- Removed unnecessary CpuCallbacks parameter from Cpu constructor, streamlining the class design.
- Added new methods in Apu for retrieving cycles, status, control, and handling DMA transfers, enhancing audio processing capabilities.
- Introduced unit tests for Apu to validate initialization, sample generation, and handshake timing, ensuring robust audio functionality.
2025-09-24 12:51:29 -04:00
scawful
f1b1c91986 Update ios project files 2025-09-24 12:48:05 -04:00
scawful
f00cf768d1 Update TUI and Tile16Transfer for improved functionality
- Added inclusion of file_dialog.h in TUI for enhanced file handling capabilities.
- Fixed syntax errors in Tile16Transfer by replacing commas with semicolons in assignment statements, ensuring proper execution of tile16 data comparisons.
2025-09-24 12:45:39 -04:00
scawful
8bc896265f Refactor BackgroundBuffer tile access methods for improved validation and performance
- Updated SetTileAt and GetTileAt methods to enhance boundary checks, ensuring valid tile coordinates are used.
- Simplified buffer resizing logic in DrawBackground to accurately reflect the number of tiles based on width and height.
- Improved tile drawing logic to prevent unnecessary operations when the tile value is 0xFFFF, enhancing rendering efficiency.
2025-09-23 22:01:43 -04:00
scawful
223544fa01 Add copy and move constructors to Bitmap class for better resource management
- Implemented a copy constructor and copy assignment operator to enable deep copying of Bitmap objects.
- Added move constructor and move assignment operator to optimize resource handling and prevent unnecessary data duplication.
- Introduced SetPixel method for modifying individual pixels in the bitmap.
- Added Resize method to adjust bitmap dimensions while preserving existing pixel data, enhancing flexibility in bitmap manipulation.
2025-09-23 22:01:06 -04:00
scawful
edaf6427c8 Enhance Dungeon Editor with Object Rendering and Layout Management
- Introduced new object rendering features in DungeonEditor, allowing for improved visualization of dungeon objects with options to show outlines, render objects, and display object information.
- Implemented a caching mechanism for rendered objects to optimize performance.
- Added functionality to load and manage room layouts, including walls, floors, and other structural elements, enhancing the overall editing experience.
- Refactored object handling in Room and RoomObject classes to support new rendering logic and ensure compatibility with the updated layout system.
- Introduced ObjectParser for efficient parsing of object data directly from ROM, improving reliability and performance in object rendering.
2025-09-23 22:00:54 -04:00
scawful
8da8014170 Implement dungeon map screen drawing functionality in ScreenEditor
- Added DrawDungeonMapScreen method to encapsulate the logic for rendering the dungeon map, improving code organization and readability.
- Refactored DrawDungeonMapsTabs to utilize the new DrawDungeonMapScreen method, reducing code duplication.
- Updated various drawing operations for better clarity and efficiency, including adjustments to tile rendering and grid display.
- Removed commented-out code to clean up the implementation.
2025-09-23 21:38:54 -04:00
scawful
0920fcc1fb Add comparison function for OverworldItem class
- Introduced CompareOverworldItems function to compare two vectors of OverworldItem objects for equality based on their properties (x, y, id).
- Included necessary header for algorithm functions to support the new comparison logic.
2025-09-21 12:41:10 -04:00
scawful
b530d4a58b Refactor window creation and enhance file dialog functionality
- Removed unnecessary ImGui frame initialization calls in CreateWindow function to streamline window setup.
- Updated FileDialogWrapper to restrict file types in the open file dialog, allowing only specific extensions (sfc, smc, yaze) for improved user experience.
2025-09-13 11:46:17 -04:00
scawful
e2aab3f2e4 Add transaction management for atomic ROM operations with rollback
- Introduced a Transaction class to handle atomic write operations to ROM, allowing for rollback on failure.
- Implemented methods for writing bytes, words, longs, vectors, and colors, with status checks and operation logging.
- Added a rollback mechanism to restore original values in case of write failures.
- Enhanced unit tests to verify transaction rollback functionality and ensure data integrity after failed operations.
2025-09-13 11:45:29 -04:00
scawful
9d1845f997 Refactor ROM data handling and improve file saving logic
- Removed redundant copy operation in SaveAllGraphicsData.
- Updated SaveToFile to truncate existing content instead of appending, ensuring a clean write.
- Simplified error handling for file operations.
- Introduced dirty flag management in Write methods to track unsaved changes.
- Added getter and setter for dirty state in the Rom class.
2025-09-13 11:16:47 -04:00
scawful
339741fe35 Add clipboard functionality for overworld tile16 selection in OverworldEditor
- Introduced SharedClipboard struct in EditorContext to manage cross-session clipboard data.
- Implemented Copy and Paste methods in OverworldEditor to handle tile16 selections and transfers.
- Enhanced clipboard management to support both rectangular selections and single tile copies.
- Added error handling for clipboard operations to ensure robust functionality.
2025-09-13 10:59:57 -04:00
scawful
e77786ea6c Implement user settings and workspace preset management in EditorManager
- Added LoadUserSettings and SaveUserSettings methods to handle user preferences such as font scaling and autosave settings.
- Introduced RefreshWorkspacePresets, SaveWorkspacePreset, and LoadWorkspacePreset methods for managing workspace layout presets.
- Integrated autosave functionality with a timer and user notifications via ToastManager.
- Enhanced the UI with options for saving/loading workspace presets and adjusting autosave settings.
2025-09-13 10:58:21 -04:00
scawful
6d8c56744f Add ToastManager class for displaying notifications in the editor
- Implemented ToastManager to manage and display toast notifications with different types (info, success, warning, error).
- Introduced a Toast struct to encapsulate message details and time-to-live (TTL) for each notification.
- Integrated ImGui for rendering notifications on the screen, allowing for dynamic updates and automatic removal based on TTL.
2025-09-13 10:57:08 -04:00
scawful
a04f8ecdb4 windows housekeeping 2025-08-21 19:18:50 -04:00
scawful
9cbae49cb0 housekeeping 2025-08-21 19:00:12 -04:00
scawful
8b168864f3 Remove Python build option and update contributing documentation for clarity and structure 2025-08-21 18:58:56 -04:00
scawful
3898b443f4 Refactor yaze_init to accept ROM filename as a parameter and remove unused project loading function 2025-08-17 11:51:31 -04:00
scawful
c567cef978 Refactor header files to remove unused includes and improve code clarity 2025-08-17 11:45:05 -04:00
scawful
c5ed249857 Add LoadExpandedMessages function to handle loading and parsing of expanded messages from a BIN file 2025-08-17 11:43:50 -04:00
scawful
b8542cf50c Refactor yaze.h and project.h to remove unused project structure and update ROM size type for improved memory handling 2025-08-17 11:43:37 -04:00
scawful
b012bd1404 Refactor EditorManager to utilize RomSession for improved ROM handling
- Replaced the previous ROM management system with a RomSession structure to encapsulate ROM and editor set data.
- Streamlined the initialization and loading processes for ROMs, reducing memory overhead and improving clarity.
- Updated methods to reference the new RomSession structure, enhancing maintainability and readability.
- Removed unused editor set management code, simplifying the overall architecture of the EditorManager.
2025-08-12 18:42:14 -04:00
scawful
dacd9551f0 Add message loading functionality and refactor message data handling
- Introduced yaze_load_messages function to load messages from ROM data, enhancing message management.
- Updated message data structures to use std::string_view for improved performance and clarity.
- Refactored message parsing logic to utilize modern C++ features like ranges and optional, improving readability.
- Adjusted various functions to streamline message handling and ensure consistency across the codebase.
2025-08-03 17:55:11 -04:00
scawful
c9921c91bf Refactor editor manager and dungeon editor for improved clarity and performance
- Removed unused functions and streamlined shortcut registration in EditorManager for better readability.
- Updated lambda captures to use 'this' pointer for consistency and clarity.
- Refactored DungeonEditor to utilize ranges for sorting and filling operations, enhancing performance and readability.
- Simplified table setup in DungeonEditor by using a static array for tool names, improving maintainability.
2025-08-03 17:53:34 -04:00
scawful
fdda77c172 Refactor ROM handling and remove SharedRom singleton for improved architecture
- Eliminated the SharedRom class to enhance modularity and reduce global state management.
- Updated various classes to directly manage ROM instances, improving clarity and encapsulation.
- Added new functions for loading messages and colors from ROM, enhancing functionality.
- Refactored Canvas and Editor classes to utilize direct ROM references, streamlining interactions.
- Improved documentation and comments for better code understanding and maintainability.
2025-08-03 17:52:02 -04:00
scawful
a9a9cc888b Refactor event handling and controller initialization for improved clarity
- Moved event handling logic from the Controller class to a new HandleEvents function in the Window class, enhancing separation of concerns.
- Simplified the OnEntry method by removing the Initialize function call and directly initializing the editor manager.
- Updated the OnLoad method to check for window activity, improving the logic for managing the controller's active state.
- Cleaned up the controller header by removing the obsolete Initialize method, streamlining the interface.
2025-08-03 16:42:06 -04:00
scawful
b5f6930d38 Refactor window management and renderer integration for improved structure
- Replaced platform backend references with a dedicated Window class for better encapsulation of window and audio device management.
- Updated various files to include the new window header, enhancing clarity and reducing dependencies on the platform backend.
- Removed obsolete platform backend code to streamline the codebase and improve maintainability.
- Refactored controller and editor classes to utilize the new window management system, ensuring consistent handling of window creation and rendering.
2025-08-03 16:09:51 -04:00
scawful
e05e59fb14 Refactor color conversion logic for improved accuracy and consistency
- Updated color channel assignments in ConvertRgbToSnes and SnesColor constructor to remove unnecessary static_cast, enhancing clarity and ensuring correct value usage.
- Simplified namespace declaration in snes_palette.cc for better readability.
- Changed Paletteset constructor parameters to use const references, improving performance and consistency in object handling.
2025-05-26 13:55:38 -04:00
scawful
006624c0d8 Refactor assembly and overworld editor code for improved readability and performance
- Updated namespace usage to yaze::editor for consistency.
- Replaced string search methods with contains and ranges::find for better clarity and performance.
- Simplified Load function in AssemblyEditor for conciseness.
- Enhanced OverworldEditor by consolidating GUI element bindings and improving input handling.
- Refactored toolset drawing logic to streamline the editor interface and improve user experience.
2025-05-26 13:54:58 -04:00
scawful
3c734207be Enhance Dungeon Map functionality and refactor code structure
- Added dungeon_map.cc to the build configuration for improved organization.
- Refactored namespace usage to yaze::zelda3 for better clarity.
- Updated LoadDungeonMaps and SaveDungeonMaps functions to use kNumRooms constant for room handling.
- Improved error handling in LoadDungeonMapGfxFromBinary function and added comments for better documentation.
2025-05-19 17:28:45 -04:00
scawful
095b3df27e Refactor graphics loading and decompression for consistency
- Updated various graphics loading functions to ensure consistent use of semicolons in ASSIGN_OR_RETURN statements.
- Changed set_filename method in Rom class to accept std::string_view for improved efficiency.
- Enhanced code readability and maintainability across multiple files by standardizing syntax.
2025-05-19 17:15:15 -04:00
scawful
30f0ae37a3 Add Save/Load for Dungeon Maps and Dungeon Map Tile16 2025-05-18 16:46:20 -04:00
scawful
a682ea9553 Port ScreenEditor to use Tilemap, remove Tilesheet class 2025-05-18 16:46:04 -04:00
scawful
7cc808918d Enhance Bitmap class with error handling and code improvements
- Introduced BitmapError class for more specific error handling in the Bitmap class.
- Updated data checks to use `empty()` for clarity and consistency.
- Improved pixel data handling by ensuring proper type usage and modifying loop constructs for better performance.
- Refactored constructor and method implementations for improved readability and maintainability.
2025-05-18 16:44:15 -04:00
scawful
f632650568 Update SnesColor constructor and add SnesTile tests
- Changed SnesColor constructor to remove constexpr, improving compatibility with non-constant expressions.
- Added new tests for SnesTile functionality, including unpacking, packing, and conversion between different bit depths.
- Enhanced TileInfo and Tile32 tests to verify construction, operations, and bit manipulation for better coverage.
2025-05-15 23:05:25 -04:00
scawful
ceab496226 Refactor Bitmap class for improved data handling
- Removed unused data_size_ member and updated size() method to return the size of data_ directly.
- Simplified data size checks in Create method to enhance clarity.
- Updated UpdateTexture method to use memcpy for pixel data assignment, improving performance.
- Ensured WriteToPixel method updates both pixel_data_ and data_ for consistency in modifications.
2025-05-15 23:01:03 -04:00