add ROM::SaveToFile
This commit is contained in:
@@ -570,6 +570,7 @@ absl::StatusOr<Bytes> ROM::SNES3bppTo8bppSheet(Bytes sheet, int size) {
|
||||
}
|
||||
|
||||
absl::Status ROM::LoadFromFile(const absl::string_view& filename) {
|
||||
filename_ = filename;
|
||||
std::ifstream file(filename.data(), std::ios::binary);
|
||||
if (!file.is_open()) {
|
||||
return absl::InternalError(
|
||||
@@ -607,6 +608,18 @@ absl::Status ROM::LoadFromBytes(Bytes data) {
|
||||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
absl::Status ROM::SaveToFile() {
|
||||
std::fstream file(filename_.data(), std::ios::binary | std::ios::out);
|
||||
if (!file.is_open()) {
|
||||
return absl::InternalError(
|
||||
absl::StrCat("Could not open ROM file: ", filename_));
|
||||
}
|
||||
for (auto i = 0; i < size_; ++i) {
|
||||
file << rom_data_[i];
|
||||
}
|
||||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
// 0-112 -> compressed 3bpp bgr -> (decompressed each) 0x600 chars
|
||||
// 113-114 -> compressed 2bpp -> (decompressed each) 0x800 chars
|
||||
// 115-126 -> uncompressed 3bpp sprites -> (each) 0x600 chars
|
||||
|
||||
@@ -83,6 +83,8 @@ class ROM {
|
||||
absl::Status LoadFromPointer(uchar* data, size_t length);
|
||||
absl::Status LoadFromBytes(Bytes data);
|
||||
|
||||
absl::Status SaveToFile();
|
||||
|
||||
auto GetSize() const { return size_; }
|
||||
auto GetTitle() const { return title; }
|
||||
auto GetGraphicsBin() const { return graphics_bin_; }
|
||||
@@ -112,6 +114,7 @@ class ROM {
|
||||
|
||||
private:
|
||||
long size_ = 0;
|
||||
std::string filename_;
|
||||
uchar title[21] = "ROM Not Loaded";
|
||||
bool is_loaded_ = false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user