Refactor LC_LZ2 and expand GraphicsEditor

Add CompressV2 and DecompressV2
Add PortablePalette to PaletteEditor
This commit is contained in:
scawful
2023-07-22 15:24:34 -04:00
parent 82dd9dde1b
commit 01802d1a73
9 changed files with 564 additions and 27 deletions

View File

@@ -239,8 +239,9 @@ absl::StatusOr<Bytes> ROM::Load2bppGraphics() {
const uint8_t sheets[] = {113, 114, 218, 219, 220, 221};
for (const auto& sheet_id : sheets) {
auto offset = GetGraphicsAddress(rom_data_.data(), sheet_id);
ASSIGN_OR_RETURN(auto decomp_sheet, Decompress(offset))
auto offset = GetGraphicsAddress(data(), sheet_id);
ASSIGN_OR_RETURN(auto decomp_sheet,
gfx::lc_lz2::DecompressV2(data(), offset))
auto converted_sheet = gfx::SnesTo8bppSheet(decomp_sheet, 2);
for (const auto& each_pixel : converted_sheet) {
sheet.push_back(each_pixel);
@@ -263,7 +264,7 @@ absl::Status ROM::LoadAllGraphicsData() {
for (int i = 0; i < core::NumberOfSheets; i++) {
if (i >= 115 && i <= 126) { // uncompressed sheets
sheet.resize(core::Uncompressed3BPPSize);
auto offset = GetGraphicsAddress(rom_data_.data(), i);
auto offset = GetGraphicsAddress(data(), i);
for (int j = 0; j < core::Uncompressed3BPPSize; j++) {
sheet[j] = rom_data_[j + offset];
}
@@ -271,8 +272,8 @@ absl::Status ROM::LoadAllGraphicsData() {
} else if (i == 113 || i == 114 || i >= 218) {
bpp3 = false;
} else {
auto offset = GetGraphicsAddress(rom_data_.data(), i);
ASSIGN_OR_RETURN(sheet, Decompress(offset))
auto offset = GetGraphicsAddress(data(), i);
ASSIGN_OR_RETURN(sheet, gfx::lc_lz2::DecompressV2(data(), offset))
bpp3 = true;
}
@@ -297,7 +298,8 @@ absl::Status ROM::LoadAllGraphicsData() {
// ============================================================================
absl::Status ROM::LoadFromFile(const absl::string_view& filename) {
absl::Status ROM::LoadFromFile(const absl::string_view& filename,
bool z3_load) {
filename_ = filename;
std::ifstream file(filename.data(), std::ios::binary);
if (!file.is_open()) {
@@ -317,7 +319,9 @@ absl::Status ROM::LoadFromFile(const absl::string_view& filename) {
memcpy(title_, rom_data_.data() + kTitleStringOffset, kTitleStringLength);
file.close();
LoadAllPalettes();
if (z3_load) {
LoadAllPalettes();
}
is_loaded_ = true;
return absl::OkStatus();
}