2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2026-06-17 14:02:12 +00:00

Add dumping support for PS3, Wii U and Xenon server fast files (#826)

Co-authored-by: hindercanrun <109132519+meowica@users.noreply.github.com>
This commit is contained in:
Ash
2026-06-16 16:45:03 +08:00
committed by GitHub
parent 8dba13f913
commit 040826b1f3
3 changed files with 42 additions and 1 deletions
+2 -1
View File
@@ -42,7 +42,8 @@ enum class GamePlatform : std::uint8_t
{ {
PC, PC,
XBOX, XBOX,
PS3 PS3,
WIIU
}; };
static constexpr const char* GameId_Names[]{ static constexpr const char* GameId_Names[]{
+2
View File
@@ -24,7 +24,9 @@ namespace T6
static_assert(std::char_traits<char>::length(MAGIC_UNSIGNED) == sizeof(ZoneHeader::m_magic)); static_assert(std::char_traits<char>::length(MAGIC_UNSIGNED) == sizeof(ZoneHeader::m_magic));
static_assert(std::char_traits<char>::length(MAGIC_UNSIGNED_SERVER) == sizeof(ZoneHeader::m_magic)); static_assert(std::char_traits<char>::length(MAGIC_UNSIGNED_SERVER) == sizeof(ZoneHeader::m_magic));
static constexpr unsigned ZONE_VERSION_WIIU = 148;
static constexpr unsigned ZONE_VERSION_PC = 147; static constexpr unsigned ZONE_VERSION_PC = 147;
static constexpr unsigned ZONE_VERSION_PS3 = 146;
static constexpr unsigned ZONE_VERSION_XENON = 146; static constexpr unsigned ZONE_VERSION_XENON = 146;
static constexpr unsigned STREAM_COUNT = 4; static constexpr unsigned STREAM_COUNT = 4;
@@ -155,6 +155,44 @@ namespace
}; };
} }
} }
else if (endianness::FromLittleEndian(header.m_version) == ZoneConstants::ZONE_VERSION_PS3)
{
if (!memcmp(header.m_magic, ZoneConstants::MAGIC_UNSIGNED_SERVER, 8))
{
return ZoneLoaderInspectionResultT6{
.m_generic_result =
ZoneLoaderInspectionResult{
.m_game_id = GameId::T6,
.m_endianness = GameEndianness::LE,
.m_word_size = GameWordSize::ARCH_32,
.m_platform = GamePlatform::PS3,
.m_is_official = true,
.m_is_signed = false,
.m_is_encrypted = false,
},
.m_compression_type = ZoneCompressionTypeT6::DEFLATE,
};
}
}
else if (endianness::FromLittleEndian(header.m_version) == ZoneConstants::ZONE_VERSION_WIIU)
{
if (!memcmp(header.m_magic, ZoneConstants::MAGIC_UNSIGNED_SERVER, 8))
{
return ZoneLoaderInspectionResultT6{
.m_generic_result =
ZoneLoaderInspectionResult{
.m_game_id = GameId::T6,
.m_endianness = GameEndianness::LE,
.m_word_size = GameWordSize::ARCH_32,
.m_platform = GamePlatform::WIIU,
.m_is_official = true,
.m_is_signed = false,
.m_is_encrypted = false,
},
.m_compression_type = ZoneCompressionTypeT6::DEFLATE,
};
}
}
return std::nullopt; return std::nullopt;
} }