From 651cbcdf55d4d368f394315be0417919969b2980 Mon Sep 17 00:00:00 2001 From: jracek Date: Thu, 3 Apr 2025 17:51:36 +0200 Subject: [PATCH] Updated splashpack structure --- output.bin | Bin 441556 -> 411048 bytes src/gameobject.hh | 7 ++++--- src/splashpack.cpp | 3 ++- src/splashpack.hh | 5 ++--- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/output.bin b/output.bin index e80ce2ce6376450b56b72a70c0bb8a920c66f156..30e0b6b061bc3db2175e4c54caaed16bfa045cab 100644 GIT binary patch delta 32944 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 HlxX-L4D7av delta 63145 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 W3sLkZn*PMlpV;qw?uEFRyZ>K3q{znr diff --git a/src/gameobject.hh b/src/gameobject.hh index 12ad5a9..ae762a0 100644 --- a/src/gameobject.hh +++ b/src/gameobject.hh @@ -10,13 +10,14 @@ namespace psxsplash { class GameObject final { public: - psyqo::Vec3 position; - psyqo::Matrix33 rotation; union { Tri *polygons; uint32_t polygonsOffset; }; - int polyCount; + psyqo::Vec3 position; + psyqo::Matrix33 rotation; + uint16_t polyCount; + uint16_t reserved; }; static_assert(sizeof(GameObject) == 56, "GameObject is not 56 bytes"); } // namespace psxsplash \ No newline at end of file diff --git a/src/splashpack.cpp b/src/splashpack.cpp index 1c18532..a4922cd 100644 --- a/src/splashpack.cpp +++ b/src/splashpack.cpp @@ -38,7 +38,8 @@ eastl::vector LoadSplashpack(uint8_t *data) { for (uint16_t i = 0; i < header->clutCount; i++) { psxsplash::SPLASHPACKClut *clut = reinterpret_cast(curentPointer); - psxsplash::Renderer::getInstance().vramUpload(clut->clut, clut->clutPackingX * 16, clut->clutPackingY, clut->length, 1); + uint8_t* clutOffset = data + clut->clutOffset; + psxsplash::Renderer::getInstance().vramUpload((uint16_t*) clutOffset, clut->clutPackingX * 16, clut->clutPackingY, clut->length, 1); curentPointer += sizeof(psxsplash::SPLASHPACKClut); } diff --git a/src/splashpack.hh b/src/splashpack.hh index 2237e52..f2fa068 100644 --- a/src/splashpack.hh +++ b/src/splashpack.hh @@ -14,7 +14,7 @@ struct SPLASHPACKFileHeader { uint16_t gameObjectCount; uint16_t textureAtlasCount; uint16_t clutCount; - uint16_t pad; + uint16_t pad[3]; }; struct SPLASHPACKTextureAtlas { @@ -24,8 +24,7 @@ struct SPLASHPACKTextureAtlas { }; struct SPLASHPACKClut { - uint16_t clut[256]; - + uint32_t clutOffset; uint16_t clutPackingX; uint16_t clutPackingY; uint16_t length;