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();
}
absl::Status Rom::LoadFromPointer(uchar* data, size_t length) {
absl::Status Rom::LoadFromPointer(uchar* data, size_t length, bool z3_load) {
if (!data)
return absl::InvalidArgumentError(
"Could not load ROM: parameter `data` is empty.");
@@ -228,17 +228,19 @@ absl::Status Rom::LoadFromPointer(uchar* data, size_t length) {
size_ = length;
// Copy ROM title
constexpr uint32_t kTitleStringOffset = 0x7FC0;
constexpr uint32_t kTitleStringLength = 20;
memcpy(title_, rom_data_.data() + kTitleStringOffset, kTitleStringLength);
if (rom_data_[kTitleStringOffset + 0x19] == 0) {
version_ = Z3_Version::JP;
} else {
version_ = Z3_Version::US;
if (z3_load) {
// Copy ROM title
constexpr uint32_t kTitleStringOffset = 0x7FC0;
constexpr uint32_t kTitleStringLength = 20;
memcpy(title_, rom_data_.data() + kTitleStringOffset, kTitleStringLength);
if (rom_data_[kTitleStringOffset + 0x19] == 0) {
version_ = Z3_Version::JP;
} 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
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 LoadFromPointer(uchar* data, size_t length);
absl::Status LoadFromPointer(uchar* data, size_t length, bool z3_load = true);
absl::Status LoadFromBytes(const Bytes& data);
/**

View File

@@ -33,7 +33,7 @@ using ::testing::TypedEq;
namespace {
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());
auto compression_status = CompressV3(rom.vector(), 0, in_size);
EXPECT_TRUE(compression_status.ok());
@@ -51,7 +51,7 @@ Bytes ExpectDecompressBytesOk(Rom& rom, Bytes& in) {
}
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());
auto decompression_status = DecompressV2(rom.data(), 0, in_size);
EXPECT_TRUE(decompression_status.ok());