1#ifndef YAZE_ZELDA3_OVERWORLD_OVERWORLD_ALLOCATION_H
2#define YAZE_ZELDA3_OVERWORLD_OVERWORLD_ALLOCATION_H
13#include "absl/status/statusor.h"
91 size_t max_output = 0x4000);
174 std::vector<uint8_t>
blank_high = std::vector<uint8_t>(188, 0x00);
176 std::vector<uint8_t>
blank_low = std::vector<uint8_t>(4, 0x00);
180 0x02F5CF, 0x02F7E4, 0x02F7EA,
183 0x02FB2E, 0x02F94D, 0x02F94E,
186 0x28A641, 0x28A400, 0x28A401,
247 std::function<std::optional<std::pair<std::string, bool>>(uint32_t)>
250 std::function<std::string(uint32_t)>
symbol;
275 const Rom& rom,
const TailMapExpansionPlan& plan = {},
276 const TailCheckAnnotator& annotator = {});
287 const TailMapExpansionCheck* tail_check);
289 const OverworldAllocationReport& report,
290 const TailMapExpansionCheck* tail_check);
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Zelda 3 specific classes and functions.
std::vector< AreaTableInfo > OverworldAreaTableCatalogue(uint8_t asm_version)
constexpr int kAllocationAreaCount
const char * AllocationAreaSizeName(AllocationAreaSize size)
absl::Status TailMapExpansionApplyGuard(const Rom &rom)
TailMapExpansionCheck CheckTailMapExpansion(const Rom &rom, const TailMapExpansionPlan &plan, const TailCheckAnnotator &annotator)
const char * AllocationWorldName(AllocationWorld world)
const char * TailCheckScopeName(TailCheckScope scope)
std::string FormatOverworldAllocationText(const OverworldAllocationReport &report, const TailMapExpansionCheck *tail_check)
const char * TailCheckVerdictName(TailCheckVerdict verdict)
constexpr int kSpecialTailFirstArea
std::string OverworldAllocationToJson(const OverworldAllocationReport &report, const TailMapExpansionCheck *tail_check)
AllocationWorld AllocationWorldForArea(int area)
MapStreamScan ScanMapStream(const uint8_t *data, size_t size, uint32_t pc, size_t max_output)
absl::StatusOr< OverworldAllocationReport > BuildOverworldAllocationReport(Rom *rom, const OverworldAllocationOptions &options)
std::vector< std::string > evidence
std::optional< int > duplicate_of
bool overlay_named_in_code
std::optional< int > parent
std::vector< int > overlay_users
std::optional< int > parent_past_end
std::vector< std::string > uncovered_tables
std::string map_pointer_source
One table the game or yaze indexes with an overworld area ID.
bool Covers(int area) const
bool Misses(int area) const
The game reads this table for area but has no entry for it.
bool Applies(int area) const
std::vector< uint8_t > decoded
std::map< int, std::string > area_names
std::vector< WorldAllocationSummary > summary
std::vector< AreaAllocation > areas
std::vector< std::string > TablesStoppingBeforeTail() const
std::vector< AreaTableInfo > tables
std::function< std::string(uint32_t)> symbol
Returns a symbol for a SNES address (empty when none).
std::function< std::optional< std::pair< std::string, bool > >(uint32_t)> ownership
std::vector< TailStreamCheck > streams
std::vector< TailCheckRegion > regions
std::string BlockingSummary() const
One line per blocking finding, for error messages.
std::vector< TailCheckOperand > operands
int free_bytes_before_marker
std::vector< std::string > tables_stopping_before_tail
uint32_t zs_code_end_snes
std::vector< TailCheckFinding > findings
bool yaze_saves_relocated_tables
std::vector< uint8_t > blank_high
std::array< uint32_t, 8 > operand_snes
std::array< uint32_t, 8 > operand_patched
std::vector< uint8_t > blank_low
std::array< uint32_t, 8 > operand_vanilla
bool terminated_within_stream
int free_without_map_data