17 constexpr uint32_t kBaseAddress = 0x7EF000;
18 constexpr uint16_t kStartOffset =
20 constexpr uint16_t kEndOffset =
22 constexpr size_t kReadLength = kEndOffset - kStartOffset + 1;
23 constexpr uint32_t kReadAddress = kBaseAddress + kStartOffset;
25 auto bytes_or = client.
ReadBlock(kReadAddress, kReadLength);
27 return bytes_or.status();
29 if (bytes_or->size() < kReadLength) {
30 return absl::DataLossError(
"SRAM read returned truncated data");
34 const auto read_byte = [&](uint16_t offset) -> uint8_t {
35 return (*bytes_or)[offset - kStartOffset];
58 Rom* rom_context)
const {
69 auto status = handler.
Run(args, rom_context, &result.
raw_output);
71 status.ok() || status.code() == absl::StatusCode::kFailedPrecondition;
74 status.code() != absl::StatusCode::kFailedPrecondition) {
93 auto status = handler.
Run(args, rom_context, &result.
raw_output);
95 status.ok() || status.code() == absl::StatusCode::kFailedPrecondition;
97 if (!status.ok() && status.code() != absl::StatusCode::kFailedPrecondition) {
104 result.
smoke = *parsed;
119std::optional<core::OracleProgressionState>
136absl::StatusOr<core::OracleProgressionState>
138 const std::string& filepath)
const {
142absl::StatusOr<core::OracleProgressionState>
145 return ReadOracleProgressionState(client);
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
absl::Status Run(const std::vector< std::string > &args, Rom *rom_context, std::string *captured_output=nullptr)
Execute the command.
Loads and queries the hack manifest JSON for yaze-ASM integration.
void ClearOracleProgressionState()
const ProjectRegistry & project_registry() const
bool HasProjectRegistry() const
std::optional< OracleProgressionState > oracle_progression_state() const
bool loaded() const
Check if the manifest has been loaded.
void SetOracleProgressionState(const OracleProgressionState &state)
The complete Oracle narrative progression graph.
oracle_validation::OracleRunResult RunValidation(oracle_validation::RunMode mode, const oracle_validation::SmokeOptions &smoke_options, const oracle_validation::PreflightOptions &preflight_options, Rom *rom_context) const override
core::HackManifest * ResolveManifest(project::YazeProject *project) const override
void SetProgressionState(core::HackManifest &manifest, const core::OracleProgressionState &state) const override
const core::StoryEventGraph * GetStoryGraph(const core::HackManifest &manifest) const override
std::optional< core::OracleProgressionState > GetProgressionState(const core::HackManifest &manifest) const override
absl::StatusOr< core::OracleProgressionState > LoadProgressionStateFromFile(const std::string &filepath) const override
absl::StatusOr< core::OracleProgressionState > ReadProgressionStateFromLiveSram(emu::mesen::MesenSocketClient &client) const override
std::string GetBackendId() const override
void ClearProgressionState(core::HackManifest &manifest) const override
Unix socket client for Mesen2-OoS fork.
absl::StatusOr< std::vector< uint8_t > > ReadBlock(uint32_t addr, size_t len)
Read a block of bytes from memory.
absl::StatusOr< OracleProgressionState > LoadOracleProgressionFromSrmFile(const std::string &srm_path)
absl::StatusOr< core::OracleProgressionState > ReadOracleProgressionState(emu::mesen::MesenSocketClient &client)
std::vector< std::string > BuildSmokeArgs(const SmokeOptions &opts)
std::vector< std::string > BuildPreflightArgs(const PreflightOptions &opts)
std::string CurrentTimestamp()
std::string BuildCliCommand(const std::string &command_name, const std::vector< std::string > &args)
absl::StatusOr< SmokeResult > ParseSmokeCheckOutput(const std::string &json_str)
absl::StatusOr< PreflightResult > ParsePreflightOutput(const std::string &json_str)
Editors are the view controllers for the application.
Oracle of Secrets game progression state parsed from SRAM.
static constexpr uint16_t kSideQuestOffset
static constexpr uint16_t kPendantOffset
static constexpr uint16_t kGameStateOffset
static constexpr uint16_t kOosProgOffset
static constexpr uint16_t kOosProg2Offset
static constexpr uint16_t kCrystalOffset
StoryEventGraph story_events
std::string error_message
std::optional< SmokeResult > smoke
absl::StatusCode status_code
std::optional< PreflightResult > preflight
Modern project structure with comprehensive settings consolidation.
core::HackManifest hack_manifest