add z3_load arg to Rom::LoadFromPointer
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
Reference in New Issue
Block a user