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) {
|
absl::Status ROM::LoadFromFile(const absl::string_view& filename) {
|
||||||
|
filename_ = filename;
|
||||||
std::ifstream file(filename.data(), std::ios::binary);
|
std::ifstream file(filename.data(), std::ios::binary);
|
||||||
if (!file.is_open()) {
|
if (!file.is_open()) {
|
||||||
return absl::InternalError(
|
return absl::InternalError(
|
||||||
@@ -607,6 +608,18 @@ absl::Status ROM::LoadFromBytes(Bytes data) {
|
|||||||
return absl::OkStatus();
|
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
|
// 0-112 -> compressed 3bpp bgr -> (decompressed each) 0x600 chars
|
||||||
// 113-114 -> compressed 2bpp -> (decompressed each) 0x800 chars
|
// 113-114 -> compressed 2bpp -> (decompressed each) 0x800 chars
|
||||||
// 115-126 -> uncompressed 3bpp sprites -> (each) 0x600 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 LoadFromPointer(uchar* data, size_t length);
|
||||||
absl::Status LoadFromBytes(Bytes data);
|
absl::Status LoadFromBytes(Bytes data);
|
||||||
|
|
||||||
|
absl::Status SaveToFile();
|
||||||
|
|
||||||
auto GetSize() const { return size_; }
|
auto GetSize() const { return size_; }
|
||||||
auto GetTitle() const { return title; }
|
auto GetTitle() const { return title; }
|
||||||
auto GetGraphicsBin() const { return graphics_bin_; }
|
auto GetGraphicsBin() const { return graphics_bin_; }
|
||||||
@@ -112,6 +114,7 @@ class ROM {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
long size_ = 0;
|
long size_ = 0;
|
||||||
|
std::string filename_;
|
||||||
uchar title[21] = "ROM Not Loaded";
|
uchar title[21] = "ROM Not Loaded";
|
||||||
bool is_loaded_ = false;
|
bool is_loaded_ = false;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user