15#include "absl/status/status.h"
26 if (!
status_.ok())
return *
this;
27 auto original =
rom_.ReadByte(address);
40 if (!
status_.ok())
return *
this;
41 auto original =
rom_.ReadWord(address);
54 if (!
status_.ok())
return *
this;
55 auto original =
rom_.ReadLong(address);
68 if (!
status_.ok())
return *
this;
69 auto original =
rom_.ReadByteVector(address,
static_cast<uint32_t
>(data.size()));
82 if (!
status_.ok())
return *
this;
84 auto original_word =
rom_.ReadWord(address);
85 if (!original_word.ok()) {
86 status_ = original_word.status();
105 const auto &op = *it;
108 (void)
rom_.WriteByte(op.address, std::get<uint8_t>(op.original_value));
111 (void)
rom_.WriteWord(op.address, std::get<uint16_t>(op.original_value));
114 (void)
rom_.WriteLong(op.address, std::get<uint32_t>(op.original_value));
117 (void)
rom_.WriteVector(op.address, std::get<std::vector<uint8_t>>(op.original_value));
120 (void)
rom_.WriteWord(op.address, std::get<uint16_t>(op.original_value));
The Rom class is used to load, save, and modify Rom data.
Transaction & WriteVector(int address, const std::vector< uint8_t > &data)
std::vector< Operation > operations_
Transaction & WriteLong(int address, uint32_t value)
Transaction & WriteWord(int address, uint16_t value)
Transaction & WriteByte(int address, uint8_t value)
Transaction & WriteColor(int address, const gfx::SnesColor &color)
Main namespace for the application.
std::variant< uint8_t, uint16_t, uint32_t, std::vector< uint8_t > > original_value