libeuropa/structs/yatf: Tweak structs a bit

This commit is contained in:
Lily Tsuru 2025-01-19 13:48:21 -05:00
parent 322de73c64
commit 035f6a040f
2 changed files with 18 additions and 8 deletions

View file

@ -11,7 +11,6 @@
#include <europa/structs/ImHexAdapter.hpp> #include <europa/structs/ImHexAdapter.hpp>
#include <europa/util/FourCC.hpp> #include <europa/util/FourCC.hpp>
#include <type_traits>
namespace europa::structs { namespace europa::structs {
@ -33,13 +32,20 @@ namespace europa::structs {
kTextureFormatV2_4Bpp = 5 kTextureFormatV2_4Bpp = 5
}; };
// For some reason Jedi Starfighter YATFs use a different fourcc. ??? enum class Version : u16 {
constexpr static auto ValidMagicSF = util::FourCC<"YATF", std::endian::big>(); Invalid = 0xffff,
constexpr static auto ValidMagicJSF = util::FourCC<"YATF", std::endian::little>(); Version1 = 1,
Version2 = 2,
};
// For some reason Jedi Starfighter (V2) YATFs use a different fourcc endianness than V1.
// When writing we should use the appropiate one.
constexpr static auto ValidMagic_V1 = util::FourCC<"YATF", std::endian::big>();
constexpr static auto ValidMagic_V2 = util::FourCC<"YATF", std::endian::little>();
u32 magic; u32 magic;
u16 version; // 0x1 for starfighter, 0x2 for new jsf files Version version;
TextureFormat format; TextureFormat format;
@ -52,7 +58,11 @@ namespace europa::structs {
u32 width; u32 width;
[[nodiscard]] constexpr bool IsValid() const { [[nodiscard]] constexpr bool IsValid() const {
return magic == ValidMagicSF || magic == ValidMagicJSF; if(auto magicValid = magic == ValidMagic_V1 || magic == ValidMagic_V2; !magicValid)
return false;
// Make sure version is sensical
return version == Version::Version1 || version == Version::Version2;
} }
}; };

View file

@ -122,11 +122,11 @@ namespace europa::io::yatf {
}; };
switch(header.version) { switch(header.version) {
case 1: case structs::YatfHeader::Version::Version1:
v1(); v1();
break; break;
case 2: case structs::YatfHeader::Version::Version2:
v2(); v2();
break; break;