Which graphics sheets exist, which tables use them, and which 16x16 blocks are free. More...
#include <array>#include <cstdint>#include <map>#include <optional>#include <set>#include <string>#include <vector>#include "absl/status/statusor.h"#include "nlohmann/json_fwd.hpp"#include "rom/rom.h"#include "zelda3/gfx_sheet_storage.h"Go to the source code of this file.
Classes | |
| struct | yaze::zelda3::OverworldAreaGfxInfo |
| struct | yaze::zelda3::RoomGfxInfo |
| struct | yaze::zelda3::GfxSheetUsage |
| struct | yaze::zelda3::GfxSheetInventoryEntry |
| struct | yaze::zelda3::GfxSheetInventoryOptions |
| struct | yaze::zelda3::GfxSheetInventory |
| struct | yaze::zelda3::GfxGroupUsage |
| Where one spriteset or roomset is used. More... | |
| struct | yaze::zelda3::RoomsetUsageReport |
| struct | yaze::zelda3::MainGroupUsageReport |
Namespaces | |
| namespace | yaze |
| namespace | yaze::zelda3 |
| Zelda 3 specific classes and functions. | |
Functions | |
| absl::StatusOr< GfxSheetInventory > | yaze::zelda3::BuildGfxSheetInventory (const Rom &rom, const std::map< int, OverworldAreaGfxInfo > &areas, const std::map< int, RoomGfxInfo > &rooms, const GfxSheetInventoryOptions &options) |
| std::map< int, OverworldAreaGfxInfo > | yaze::zelda3::CollectOverworldAreaGfx (Rom &rom, GameData *game_data) |
| std::map< int, RoomGfxInfo > | yaze::zelda3::CollectRoomGfx (const Rom &rom) |
| GfxGroupUsage | yaze::zelda3::FindSpritesetUsage (int spriteset, const std::map< int, OverworldAreaGfxInfo > &areas, const std::map< int, RoomGfxInfo > &rooms) |
| GfxGroupUsage | yaze::zelda3::FindRoomsetUsage (int roomset, const std::map< int, OverworldAreaGfxInfo > &areas, const std::map< int, RoomGfxInfo > &rooms) |
| absl::StatusOr< RoomsetUsageReport > | yaze::zelda3::DescribeRoomsetUsage (Rom &rom, GameData &game_data, int roomset, const std::map< int, RoomGfxInfo > &rooms, const Overworld *live_overworld) |
| absl::StatusOr< MainGroupUsageReport > | yaze::zelda3::DescribeMainGroupUsage (Rom &rom, GameData &game_data, int group, int slot, const std::map< int, RoomGfxInfo > &rooms, const std::map< int, uint8_t > &explicit_room_main, const Overworld *live_overworld) |
| nlohmann::json | yaze::zelda3::GfxSheetInventoryToJson (const GfxSheetInventory &inventory) |
| const char * | yaze::zelda3::GfxSheetInventoryKindName (GfxSheetStorageKind kind) |
| std::map< uint8_t, std::set< std::string > > | yaze::zelda3::ParseSpritesetLabelCsv (const std::string &csv_text) |
Variables | |
| constexpr uint16_t | yaze::zelda3::kSpriteSheetBase = 0x73 |
| constexpr uint16_t | yaze::zelda3::kSpriteSheetValueCount = 0x67 |
| constexpr uint16_t | yaze::zelda3::kDungeonSpritesetBase = 0x40 |
| constexpr int | yaze::zelda3::kNumOverworldAreas = 0xA0 |
| constexpr int | yaze::zelda3::kNumDungeonRooms = 0x128 |
Which graphics sheets exist, which tables use them, and which 16x16 blocks are free.
Mirrors Oracle's Scripts/Analysis/gfx_sheet_inventory.py: a sprite sheet is spriteset value + 0x73, a dungeon room's spriteset is its header value + 0x40, and a 16x16 block is free when its four 3bpp 8x8 tiles are all zero. Raw (115-126) and 2bpp sheets are loaded by engine code, never by the group tables, so they are never offered as free space.
Definition in file gfx_sheet_inventory.h.