1#ifndef YAZE_APP_ZELDA3_OVERWORLD_MAP_H
2#define YAZE_APP_ZELDA3_OVERWORLD_MAP_H
11#include "absl/status/status.h"
12#include "absl/status/statusor.h"
25static constexpr int kTileOffsets[] = {0, 8, 4096, 4104};
218 return overlay_id == 0x0095 || overlay_id == 0x0096 || overlay_id == 0x009C;
225 return (index & 0x07) == 0;
263 std::map<uint16_t, std::vector<uint8_t>> overrides) {
272 std::vector<gfx::Tile16>& tiles16,
280 int count,
int game_state,
int world, std::vector<gfx::Tile16>& tiles16,
282 const std::vector<uint8_t>* cached_tileset,
283 const std::vector<uint8_t>* cached_tile16_blockset =
nullptr);
292 absl::Status
BuildTiles16Gfx(std::vector<gfx::Tile16>& tiles16,
int count);
307 bool background, std::vector<uint8_t>* out)
const;
515 bool skip_legacy_data =
false);
542 const uint8_t* all_gfx);
544 int index,
int previous_index,
546 int* resolved_index =
nullptr);
551 : zelda3_version::US);
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
static RomSettings & Get()
uint32_t GetAddressOr(const std::string &key, uint32_t default_value) const
Shared graphical context across editors.
Represents a palette of colors for the Super Nintendo Entertainment System (SNES).
Represents a single Overworld map screen.
auto set_area_palette(uint8_t value)
void CopyAnimatedSheetIntoSlot7()
void SetAsLargeMap(int parent_index, int quadrant)
friend ResolvedGraphicsContext DescribeOverworldGraphicsContext(const OverworldMap &map, const GraphicsContextIdentity &identity)
OverworldMainSlotProvenance MainSlotProvenance(int slot) const
void ProcessGraphicsBuffer(int index, int static_graphics_offset, int size, const uint8_t *all_gfx)
const gfx::SnesPalette & current_palette() const
zelda3_version_pointers version_constants() const
void set_main_palette(uint8_t palette)
int ComputeMainBlocksetId() const
auto mutable_area_music(int i)
const rom::LyraLayoutInspection * descriptor_layout_
auto is_large_map() const
uint8_t render_main_palette() const
std::array< uint8_t, 8 > raw_area_info_
std::vector< uint8_t > current_gfx_
std::array< uint64_t, kNumSourceSheets > source_sheet_revisions_
auto animated_gfx() const
std::vector< uint8_t > current_blockset_
std::array< bool, 4 > mosaic_expanded_
void RecordSourceSheetRevisions()
absl::Status LoadVanillaOverlayData()
std::vector< uint8_t > bitmap_data_
void SetGraphicsSheetOverrides(std::map< uint16_t, std::vector< uint8_t > > overrides)
void Destroy()
Free memory-heavy data while preserving map identity.
bool UsesSessionAreaGraphicsGroup() const
bool has_inherited_area_properties() const
auto mutable_static_graphics(int i)
std::array< uint8_t, 8 > loaded_area_info_
const std::array< bool, 4 > & mosaic_expanded() const
auto mutable_sprite_palette(int i)
auto mutable_subscreen_overlay()
auto area_graphics() const
bool HasGraphicsPreview() const
void SetAsSmallMap(int index=-1)
auto set_message_id(uint16_t value)
std::map< uint16_t, std::vector< uint8_t > > graphics_sheet_overrides_
void SetGameData(GameData *game_data)
std::array< uint8_t, 16 > ResolveStaticGraphics() const
absl::Status LoadOverlay()
auto set_sprite_palette(int i, uint8_t value)
uint8_t sprite_palette_for_save(int state) const
void set_custom_tileset(int index, uint8_t value)
void set_area_specific_bg_color(uint16_t color)
const auto & overlay_data() const
const std::vector< uint8_t > & current_graphics() const
auto mutable_animated_gfx()
std::array< uint8_t, 4 > ResolveSpriteGraphicsGroup() const
void SetupCustomTileset(uint8_t asm_version)
auto sprite_graphics(int i) const
auto is_initialized() const
absl::Status BuildTiles16Gfx(std::vector< gfx::Tile16 > &tiles16, int count)
OverworldMapTiles map_tiles_
bool UsesSessionSpriteGraphicsGroup() const
absl::Status BuildMap(int count, int game_state, int world, std::vector< gfx::Tile16 > &tiles16, OverworldBlockset &world_blockset)
std::array< uint8_t, 3 > sprite_graphics_
void SetParent(int parent_index)
bool UsesSessionMainGraphicsGroup() const
absl::Status BuildTileset()
bool source_assignments_recorded_
auto static_graphics(int i) const
static constexpr int kNumSourceSheets
auto area_palette() const
auto mutable_sprite_graphics(int i)
void LoadDeathMountainGFX()
OverworldRoomsetSource roomset_source() const
void SetAreaSize(AreaSizeEnum size)
auto custom_tileset(int index) const
auto subscreen_overlay() const
auto area_music(int i) const
uint8_t ComputeWorldBasedMainPalette() const
absl::Status BuildBitmap(OverworldBlockset &world_blockset)
std::array< uint8_t, 3 > sprite_palette_
uint8_t AreaInfoForSave(size_t field, uint8_t value) const
const std::vector< uint8_t > & current_tile16_blockset() const
std::array< uint8_t, 4 > area_music_
uint16_t render_subscreen_overlay() const
auto mutable_area_palette()
static absl::StatusOr< OverworldMap > CreateLyraPreview(int index, Rom *rom, GameData *game_data, const rom::LyraLayoutInspection *layout)
std::array< uint8_t, 16 > static_graphics_
uint16_t subscreen_overlay_
std::array< uint8_t, 8 > custom_gfx_ids_
const GameData * game_data() const
void set_animated_gfx(uint8_t gfx)
auto mutable_message_id()
absl::Status LoadPalette()
auto set_area_graphics(uint8_t value)
void LoadMainBlocksetId()
bool area_info_baseline_valid_
auto main_palette() const
void set_game_state(int state)
const std::vector< uint8_t > & bitmap_data() const
uint8_t animated_sheet() const
auto mutable_current_palette()
absl::Status BuildMapWithCache(int count, int game_state, int world, std::vector< gfx::Tile16 > &tiles16, OverworldBlockset &world_blockset, const std::vector< uint8_t > *cached_tileset, const std::vector< uint8_t > *cached_tile16_blockset=nullptr)
Build map with optional cached tileset for performance.
absl::Status LoadLyraPreviewProperties()
PaletteAddressMap palette_addresses_
uint8_t area_graphics_for_save() const
const PaletteAddressMap & palette_addresses() const
int loaded_area_info_parent_
auto mutable_current_graphics()
std::array< uint8_t, 4 > ResolveAreaGraphicsGroup() const
void InheritAreaProperties(const OverworldMap &area_parent)
void set_subscreen_overlay(uint16_t overlay)
OverworldTilesetKey tileset_key() const
std::vector< uint8_t > overlay_data_
void UseCachedTileset(const std::vector< uint8_t > &cached_gfx)
Use a pre-computed tileset from cache instead of rebuilding.
std::optional< AreaRenderProperties > inherited_area_
auto area_specific_bg_color() const
auto sprite_palette(int i) const
uint8_t sprite_graphics_for_save(int state) const
bool SourceSheetsChanged() const
gfx::SnesPalette current_palette_
uint64_t bitmap_serial() const
uint16_t SourceSheetForRevision(int i) const
auto mutable_main_palette()
void set_mosaic_expanded(int index, bool value)
void LoadCustomOverworldData()
void CaptureAreaInfoBaseline()
uint8_t * mutable_custom_tileset(int index)
absl::Status BuildSubscreenOverlayLayer(const OverworldBlockset &overlay_world_blockset, int overlay_screen, bool background, std::vector< uint8_t > *out) const
Build this area's subscreen overlay layer (512x512, 8bpp).
auto mutable_area_graphics()
absl::StatusOr< gfx::SnesPalette > GetPalette(const gfx::PaletteGroup &group, int index, int previous_index, int limit, int *resolved_index=nullptr)
void SetGraphicsPreview(const AreaGraphicsPreview &preview)
AreaGraphicsPreview graphics_preview_
uint16_t area_specific_bg_color_
std::array< uint8_t, 8 > ResolveMainGraphicsGroup() const
void ClearInheritedAreaProperties()
auto set_sprite_graphics(int i, uint8_t value)
AreaRenderProperties area_render_properties() const
uint8_t area_palette_for_save() const
constexpr char kOverworldTransitionPosYExpanded[]
constexpr char kOverworldScreenChange4Expanded[]
constexpr char kOverworldMapParentExpanded[]
constexpr char kOverworldScreenChange1Expanded[]
constexpr char kOverworldMessagesExpanded[]
constexpr char kOverworldScreenChange2Expanded[]
constexpr char kOverworldScreenChange3Expanded[]
constexpr char kOverworldTransitionPosXExpanded[]
int GetOverworldMapParentIdExpanded()
constexpr int OverworldCustomTileGFXGroupEnabled
constexpr int OverworldCustomAreaSpecificBGEnabled
std::map< uint16_t, PreviewTile8 > AreaGraphicsPreview
int GetOverworldScreenChange3Expanded()
int GetOverworldScreenChange4Expanded()
constexpr int kOverworldScreenTileMapChangeByScreen2Expanded
constexpr int kOverlayData1
constexpr int kSpecialWorldMapIdStart
constexpr int OverworldCustomMosaicArray
constexpr int kOverworldTransitionPositionXExpanded
void ApplyGraphicsPreview(const AreaGraphicsPreview &preview, std::vector< uint8_t > &graphics)
constexpr int OverworldCustomDefaultGFXGroups
constexpr int OverworldCustomAnimatedGFXEnabled
constexpr int OverworldCustomMainPaletteEnabled
constexpr int OverworldCustomMainPaletteArray
constexpr int kAnimatedSheetSlotBytes
constexpr int kOverworldTransitionPositionYExpanded
constexpr int kOverworldSpecialSpritePaletteExpandedTemp
constexpr int kOverworldMapParentIdExpanded
constexpr int kOverworldSpecialSpriteGfxGroupExpandedTemp
std::vector< std::vector< uint16_t > > OverworldBlockset
Represents tile32 data for the overworld.
AreaSizeEnum
Area size enumeration for v3+ ROMs.
constexpr int kOverlayPointersBank
std::array< uint8_t, 17 > OverworldTilesetKey
constexpr int transition_target_westExpanded
int GetOverworldScreenChange1Expanded()
bool IsOverworldBackdropPixel(uint8_t index)
constexpr int kOverworldSpecialPALGroup
struct yaze::zelda3::OverworldMapTiles OverworldMapTiles
Overworld map tile32 data.
int GetOverworldTransitionPositionXExpanded()
constexpr int kOverworldPalettesScreenToSetNew
constexpr int kOverworldMessagesExpanded
constexpr int kOverworldScreenTileMapChangeByScreen3Expanded
constexpr int kOverlayData2
constexpr int transition_target_northExpanded
constexpr int kOverworldSpecialSpritePalette
constexpr int OverworldCustomAnimatedGFXArray
constexpr int kDarkWorldMapIdStart
constexpr int OverworldCustomMosaicEnabled
constexpr int kOverworldScreenTileMapChangeByScreen4Expanded
bool IsBackgroundSubscreenOverlay(uint16_t overlay_id)
constexpr int kOverworldSpecialSpriteGFXGroup
constexpr int kOverworldScreenTileMapChangeByScreen1Expanded
constexpr int OverworldCustomTileGFXGroupArray
int SubscreenOverlayScreen(uint16_t overlay_id)
constexpr int OverworldCustomSubscreenOverlayEnabled
constexpr int OverworldCustomAreaSpecificBGPalette
int GetOverworldMessagesExpanded()
constexpr int kOverlayPointers
int GetOverworldScreenChange2Expanded()
constexpr int kOverlayCodeStart
int GetOverworldTransitionPositionYExpanded()
constexpr int kOverworldSpecialGFXGroup
constexpr int OverworldCustomSubscreenOverlayArray
std::array< std::optional< PaletteColorAddress >, 128 > PaletteAddressMap
Represents a group of palettes.
Per-area render settings the game reads with the area id ($8A).
std::array< uint8_t, 8 > custom_gfx_ids
uint16_t subscreen_overlay
uint16_t area_specific_bg_color
OverworldMainSlotSource source
Overworld map tile32 data.
OverworldBlockset dark_world
OverworldBlockset special_world
OverworldBlockset light_world
ROM data pointers for different game versions.