1#ifndef YAZE_APP_CORE_ASAR_WRAPPER_H
2#define YAZE_APP_CORE_ASAR_WRAPPER_H
10#include "absl/status/status.h"
11#include "absl/status/statusor.h"
98 const std::string& patch_path,
99 std::vector<uint8_t>& rom_data,
100 const std::vector<std::string>& include_paths = {});
110 const std::string& patch_content,
111 std::vector<uint8_t>& rom_data,
112 const std::string& base_path =
"");
121 const std::string& asm_path,
122 const std::vector<std::string>& include_paths = {});
135 std::optional<AsarSymbol>
FindSymbol(
const std::string& name)
const;
169 const std::vector<uint8_t>& original_rom,
170 const std::vector<uint8_t>& modified_rom,
171 const std::string& patch_path);
Modern C++ wrapper for Asar 65816 assembler integration.
absl::StatusOr< AsarPatchResult > ApplyPatchFromString(const std::string &patch_content, std::vector< uint8_t > &rom_data, const std::string &base_path="")
Apply an assembly patch from string content.
AsarSymbol ConvertAsarSymbol(const void *asar_symbol_data) const
Convert Asar symbol data to AsarSymbol struct.
std::vector< std::string > GetLastWarnings() const
Get the last warning messages.
std::vector< std::string > GetLastErrors() const
Get the last error messages.
bool IsInitialized() const
Check if Asar is initialized and ready.
absl::Status CreatePatch(const std::vector< uint8_t > &original_rom, const std::vector< uint8_t > &modified_rom, const std::string &patch_path)
Create a patch that can be applied to transform one ROM to another.
void ProcessWarnings()
Process warnings from Asar and store them.
std::vector< std::string > last_warnings_
absl::Status ValidateAssembly(const std::string &asm_path)
Validate an assembly file for syntax errors.
std::optional< AsarSymbol > FindSymbol(const std::string &name) const
Find a symbol by name.
std::string GetVersion() const
Get Asar version information.
void ExtractSymbolsFromLastOperation()
Extract symbols from the last Asar operation.
void Shutdown()
Clean up and close the Asar library.
std::map< std::string, AsarSymbol > symbol_table_
void Reset()
Reset the Asar state (clear errors, warnings, symbols)
absl::Status Initialize()
Initialize the Asar library.
absl::StatusOr< AsarPatchResult > ApplyPatch(const std::string &patch_path, std::vector< uint8_t > &rom_data, const std::vector< std::string > &include_paths={})
Apply an assembly patch to a ROM.
std::vector< std::string > last_errors_
AsarWrapper(AsarWrapper &&)=default
int GetApiVersion() const
Get Asar API version.
absl::StatusOr< std::vector< AsarSymbol > > ExtractSymbols(const std::string &asm_path, const std::vector< std::string > &include_paths={})
Extract symbols from an assembly file without patching.
AsarWrapper & operator=(const AsarWrapper &)=delete
void ProcessErrors()
Process errors from Asar and store them.
std::vector< AsarSymbol > GetSymbolsAtAddress(uint32_t address) const
Get symbols at a specific address.
AsarWrapper(const AsarWrapper &)=delete
std::map< std::string, AsarSymbol > GetSymbolTable() const
Get all available symbols from the last patch operation.
AsarWrapper & operator=(AsarWrapper &&)=default
Main namespace for the application.
Asar patch result information.
std::vector< std::string > errors
std::vector< AsarSymbol > symbols
std::vector< std::string > warnings
Symbol information extracted from Asar assembly.