yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
gfx_sheet_inventory.h File Reference

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
 

Detailed Description

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.