add ROM::SaveToFile

This commit is contained in:
Justin Scofield
2022-08-07 00:28:49 -04:00
parent ebe586c7ae
commit 07c9ab83f8
2 changed files with 16 additions and 0 deletions

View File

@@ -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