1#ifndef YAZE_CLI_AUTOMATION_ROM_AUTOMATION_API_H
2#define YAZE_CLI_AUTOMATION_ROM_AUTOMATION_API_H
8#include "absl/status/status.h"
9#include "absl/status/statusor.h"
11#include "nlohmann/json.hpp"
37 absl::StatusOr<std::vector<uint8_t>>
ReadBytes(uint32_t address,
47 absl::Status
WriteBytes(uint32_t address,
const std::vector<uint8_t>& data,
58 const std::vector<uint8_t>& pattern,
59 uint32_t start_address = 0,
60 size_t max_results = 100)
const;
84 bool compress =
true);
141 const std::vector<std::string>& regions)
const;
159 absl::Status
ApplyPatch(
const std::vector<uint8_t>& patch_data,
160 const std::string& patch_format);
169 const Rom& target_rom,
170 const std::string& patch_format)
const;
184 const std::string& region_name,
185 uint32_t start_address = 0,
186 uint32_t end_address = 0)
const;
196 const std::vector<uint8_t>& data,
221 const std::vector<BatchOperation>& operations,
222 bool stop_on_error =
true);
270 size_t min_size = 16)
const;
278 std::vector<uint8_t>
CompressData(
const std::vector<uint8_t>& data)
const;
280 bool VerifyWrite(uint32_t address,
const std::vector<uint8_t>& expected)
const;
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
High-level API for ROM manipulation and automation.
RomAutomationAPI(Rom *rom)
absl::StatusOr< RomSnapshot > CreateSnapshot(const std::string &name, bool compress=true)
Create a snapshot of current ROM state.
bool VerifyWrite(uint32_t address, const std::vector< uint8_t > &expected) const
absl::Status CommitTransaction(const std::string &transaction_id)
Commit a ROM modification transaction.
ValidationResult ValidateHeaders() const
Validate ROM headers.
absl::Status RollbackTransaction(const std::string &transaction_id)
Rollback a ROM modification transaction.
std::string BeginTransaction()
Begin a ROM modification transaction.
nlohmann::json AnalyzePatterns() const
Analyze ROM for common patterns.
std::vector< std::pair< uint32_t, size_t > > FindFreeSpace(size_t min_size=16) const
Find unused space in ROM.
absl::StatusOr< std::vector< nlohmann::json > > ExecuteBatch(const std::vector< BatchOperation > &operations, bool stop_on_error=true)
Execute multiple ROM operations atomically.
absl::StatusOr< std::vector< uint8_t > > ExportRegion(const std::string ®ion_name, uint32_t start_address=0, uint32_t end_address=0) const
Export a region of ROM to file.
std::vector< nlohmann::json > ListSnapshots() const
List all available snapshots.
std::vector< uint8_t > DecompressData(const std::vector< uint8_t > &data) const
std::map< std::string, RomSnapshot > snapshots_
absl::Status WriteBytes(uint32_t address, const std::vector< uint8_t > &data, bool verify=true)
Write bytes to ROM at specified address.
std::vector< uint8_t > CompressData(const std::vector< uint8_t > &data) const
absl::StatusOr< std::vector< uint8_t > > ReadBytes(uint32_t address, size_t length) const
Read bytes from ROM at specified address.
ValidationResult ValidateFull() const
Comprehensive ROM validation.
ValidationResult ValidateRegions(const std::vector< std::string > ®ions) const
Validate specific ROM regions.
nlohmann::json GetStatistics() const
Get ROM statistics.
absl::StatusOr< std::vector< uint8_t > > GeneratePatch(const Rom &target_rom, const std::string &patch_format) const
Generate patch between current ROM and target.
absl::StatusOr< nlohmann::json > CompareWithSnapshot(const RomSnapshot &snapshot) const
Compare current ROM with snapshot.
absl::StatusOr< std::vector< uint32_t > > FindPattern(const std::vector< uint8_t > &pattern, uint32_t start_address=0, size_t max_results=100) const
Find pattern in ROM.
absl::Status RestoreSnapshot(const RomSnapshot &snapshot, bool verify=true)
Restore ROM to a previous snapshot.
absl::Status ImportRegion(const std::string ®ion_name, const std::vector< uint8_t > &data, uint32_t address)
Import data to a ROM region.
absl::Status ApplyPatch(const std::vector< uint8_t > &patch_data, const std::string &patch_format)
Apply IPS/BPS patch to ROM.
std::map< std::string, std::unique_ptr< class Transaction > > transactions_
ValidationResult ValidateChecksums() const
Validate ROM checksums.
Batch operation for multiple ROM modifications.
std::vector< uint8_t > data
Snapshot of ROM state at a point in time.
std::vector< uint8_t > data
Validation result for ROM integrity checks.
std::vector< std::string > errors
std::vector< std::string > warnings