From 279940b1d2a74c1840eae20143c0d3010ea4ab13 Mon Sep 17 00:00:00 2001 From: scawful Date: Fri, 20 Oct 2023 20:34:19 -0400 Subject: [PATCH] update infra docs --- docs/infrastructure.md | 59 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 52 insertions(+), 7 deletions(-) diff --git a/docs/infrastructure.md b/docs/infrastructure.md index 87c3ae27..b732ce14 100644 --- a/docs/infrastructure.md +++ b/docs/infrastructure.md @@ -88,8 +88,8 @@ For developers to reference. - [app/editor/master_editor.cc](../src/app/editor/master_editor.cc) - Handles the main menu bar. - File - - Open - [app::ROM::LoadFromFile](../src/app/rom.cc&l=90) - - Save - [app::ROM::SaveToFile](../src/app/rom.cc&l=301) + - Open - [app::ROM::LoadFromFile](../src/app/rom.cc#l=90) + - Save - [app::ROM::SaveToFile](../src/app/rom.cc#l=301) - Edit - View - Emulator @@ -112,6 +112,34 @@ For developers to reference. - [app/editor/screen_editor.cc](../src/app/editor/screen_editor.cc) - [app/editor/sprite_editor.cc](../src/app/editor/sprite_editor.cc) +## ROM +- [app/rom.cc](../src/app/rom.cc) +- [app/rom.h](../src/app/rom.h) +--- + +This `ROM` class provides methods to manipulate and access data from a ROM. + +- **Key Methods**: + - `Load2BppGraphics()`: Loads 2BPP graphics data from specified sheets. + - `LoadAllGraphicsData()`: Loads all graphics data, both compressed and uncompressed, converting where necessary. + - `LoadFromFile(const absl::string_view& filename, bool z3_load)`: Loads ROM data from a file. It also handles headers and Zelda 3 specific data if requested. + - `LoadFromPointer(uchar* data, size_t length)`: Loads ROM data from a provided pointer. + - `LoadFromBytes(const Bytes& data)`: Loads ROM data from bytes. + - `LoadAllPalettes()`: Loads all color palettes used in the ROM. This includes palettes for various elements like sprites, shields, swords, etc. + - `UpdatePaletteColor(...)`: Updates a specific color within a named palette group. + +- **Internal Data Structures**: + - `rom_data_`: A container that holds the ROM data. + - `graphics_bin_`: Holds the graphics data. + - `palette_groups_`: A map containing various palette groups, each having its own set of color palettes. + +- **Special Notes**: + - The class interacts with various external functionalities, such as decompression algorithms (`gfx::DecompressV2`) and color conversion (`gfx::SnesTo8bppSheet`). + - Headers in the ROM data, if present, are identified and removed. + - Specific Zelda 3 data can be loaded if specified. + - Palettes are categorized into multiple groups (e.g., `ow_main`, `ow_aux`, `hud`, etc.) and loaded accordingly. + + ## Overworld - [app/zelda3/overworld.cc](../src/app/zelda3/overworld.cc) @@ -133,11 +161,28 @@ For developers to reference. - [app/gfx/bitmap.h](../src/app/gfx/bitmap.cc) --- -- **Initialization**: Offers multiple constructors to create bitmaps using different data types. -- **Palette Application**: Provides grayscale palettes and can convert `SNESPalette` to `SDL_Palette`. -- **Texture Handling**: Can create and update textures based on SDL surfaces. -- **SDL Surface Management**: Allows for the creation, modification, and saving of SDL surfaces. -- **Memory Management**: Uses smart pointers for efficient memory utilization and cleanup. +This class is responsible for creating, managing, and manipulating bitmap data, which can be displayed on the screen using the ImGui library. + +### Key Attributes: + +1. **Width, Height, Depth, and Data Size**: These represent the dimensions and data size of the bitmap. +2. **Pixel Data**: Points to the raw data of the bitmap. +3. **Texture and Surface**: Use SDL to manage the graphical representation of the bitmap data. Both these attributes have custom deleters, ensuring proper resource management. + +### Main Functions: + +1. **Constructors**: Multiple constructors allow for different ways to create a Bitmap instance, like specifying width, height, depth, and data. +2. **Create**: This set of overloaded functions provides ways to create a bitmap from different data sources. +3. **CreateFromSurface**: Allows for the creation of a bitmap from an SDL_Surface. +4. **Apply**: Changes the bitmap's data to a new set of Bytes. +5. **Texture Operations**: + - **CreateTexture**: Creates an SDL_Texture from the bitmap's data for rendering. + - **UpdateTexture**: Updates the SDL_Texture with the latest bitmap data. +6. **SaveSurfaceToFile**: Saves the SDL_Surface to a file. +7. **SetSurface**: Assigns a new SDL_Surface to the bitmap. +8. **Palette Functions**: + - **ApplyPalette (Overloaded)**: This allows for the application of a SNESPalette or a standard SDL_Color palette to the bitmap. +9. **WriteToPixel**: Directly writes a value to a specified position in the pixel data. ## Z3ED cli