add z3_load arg to Rom::LoadFromPointer

This commit is contained in:
scawful
2024-08-07 15:22:27 -04:00
parent 69f1286f2b
commit 47461a567d
3 changed files with 16 additions and 14 deletions

View File

@@ -219,7 +219,7 @@ absl::Status Rom::LoadFromFile(const std::string& filename, bool z3_load) {
return absl::OkStatus(); return absl::OkStatus();
} }
absl::Status Rom::LoadFromPointer(uchar* data, size_t length) { absl::Status Rom::LoadFromPointer(uchar* data, size_t length, bool z3_load) {
if (!data) if (!data)
return absl::InvalidArgumentError( return absl::InvalidArgumentError(
"Could not load ROM: parameter `data` is empty."); "Could not load ROM: parameter `data` is empty.");
@@ -228,17 +228,19 @@ absl::Status Rom::LoadFromPointer(uchar* data, size_t length) {
size_ = length; size_ = length;
// Copy ROM title if (z3_load) {
constexpr uint32_t kTitleStringOffset = 0x7FC0; // Copy ROM title
constexpr uint32_t kTitleStringLength = 20; constexpr uint32_t kTitleStringOffset = 0x7FC0;
memcpy(title_, rom_data_.data() + kTitleStringOffset, kTitleStringLength); constexpr uint32_t kTitleStringLength = 20;
if (rom_data_[kTitleStringOffset + 0x19] == 0) { memcpy(title_, rom_data_.data() + kTitleStringOffset, kTitleStringLength);
version_ = Z3_Version::JP; if (rom_data_[kTitleStringOffset + 0x19] == 0) {
} else { version_ = Z3_Version::JP;
version_ = Z3_Version::US; } else {
version_ = Z3_Version::US;
}
RETURN_IF_ERROR(gfx::LoadAllPalettes(rom_data_, palette_groups_));
LoadGfxGroups();
} }
RETURN_IF_ERROR(gfx::LoadAllPalettes(rom_data_, palette_groups_));
LoadGfxGroups();
// Set is_loaded_ flag and return success // Set is_loaded_ flag and return success
is_loaded_ = true; is_loaded_ = true;

View File

@@ -171,7 +171,7 @@ class Rom : public core::ExperimentFlags {
* *
*/ */
absl::Status LoadFromFile(const std::string& filename, bool z3_load = true); absl::Status LoadFromFile(const std::string& filename, bool z3_load = true);
absl::Status LoadFromPointer(uchar* data, size_t length); absl::Status LoadFromPointer(uchar* data, size_t length, bool z3_load = true);
absl::Status LoadFromBytes(const Bytes& data); absl::Status LoadFromBytes(const Bytes& data);
/** /**

View File

@@ -33,7 +33,7 @@ using ::testing::TypedEq;
namespace { namespace {
Bytes ExpectCompressOk(Rom& rom, uchar* in, int in_size) { Bytes ExpectCompressOk(Rom& rom, uchar* in, int in_size) {
auto load_status = rom.LoadFromPointer(in, in_size); auto load_status = rom.LoadFromPointer(in, in_size, false);
EXPECT_TRUE(load_status.ok()); EXPECT_TRUE(load_status.ok());
auto compression_status = CompressV3(rom.vector(), 0, in_size); auto compression_status = CompressV3(rom.vector(), 0, in_size);
EXPECT_TRUE(compression_status.ok()); EXPECT_TRUE(compression_status.ok());
@@ -51,7 +51,7 @@ Bytes ExpectDecompressBytesOk(Rom& rom, Bytes& in) {
} }
Bytes ExpectDecompressOk(Rom& rom, uchar* in, int in_size) { Bytes ExpectDecompressOk(Rom& rom, uchar* in, int in_size) {
auto load_status = rom.LoadFromPointer(in, in_size); auto load_status = rom.LoadFromPointer(in, in_size, false);
EXPECT_TRUE(load_status.ok()); EXPECT_TRUE(load_status.ok());
auto decompression_status = DecompressV2(rom.data(), 0, in_size); auto decompression_status = DecompressV2(rom.data(), 0, in_size);
EXPECT_TRUE(decompression_status.ok()); EXPECT_TRUE(decompression_status.ok());