2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 05:07:43 +00:00

ANIM fixes and explicit-endian refactor

This commit is contained in:
Jack Andersen
2015-08-13 17:00:51 -10:00
parent 5b38596595
commit b5d96f7040
20 changed files with 858 additions and 246 deletions

View File

@@ -43,9 +43,9 @@ struct ANIM : BigDNA
Value<atUint32> unk0;
Value<float> interval;
Value<atUint32> unk1;
Value<atUint32> boneSlotCount;
Value<atUint32> unk2;
Value<atUint32> keyCount;
Value<atUint32> unk2;
Value<atUint32> boneSlotCount;
};
};
@@ -92,43 +92,43 @@ struct ANIM : BigDNA
void read(Athena::io::IStreamReader& reader)
{
id = reader.readUint32();
keyCount1 = reader.readUint16();
initRX = reader.readUint16();
id = reader.readUint32Big();
keyCount1 = reader.readUint16Big();
initRX = reader.readUint16Big();
qRX = reader.readUByte();
initRY = reader.readUint16();
initRY = reader.readUint16Big();
qRY = reader.readUByte();
initRZ = reader.readUint16();
initRZ = reader.readUint16Big();
qRZ = reader.readUByte();
keyCount2 = reader.readUint16();
keyCount2 = reader.readUint16Big();
if (keyCount2)
{
initTX = reader.readUint16();
initTX = reader.readUint16Big();
qTX = reader.readUByte();
initTY = reader.readUint16();
initTY = reader.readUint16Big();
qTY = reader.readUByte();
initTZ = reader.readUint16();
initTZ = reader.readUint16Big();
qTZ = reader.readUByte();
}
}
void write(Athena::io::IStreamWriter& writer) const
{
writer.writeUint32(id);
writer.writeUint16(keyCount1);
writer.writeUint16(initRX);
writer.writeUint32Big(id);
writer.writeUint16Big(keyCount1);
writer.writeUint16Big(initRX);
writer.writeUByte(qRX);
writer.writeUint16(initRY);
writer.writeUint16Big(initRY);
writer.writeUByte(qRY);
writer.writeUint16(initRZ);
writer.writeUint16Big(initRZ);
writer.writeUByte(qRZ);
writer.writeUint16(keyCount2);
writer.writeUint16Big(keyCount2);
if (keyCount2)
{
writer.writeUint16(initTX);
writer.writeUint16Big(initTX);
writer.writeUByte(qTX);
writer.writeUint16(initTY);
writer.writeUint16Big(initTY);
writer.writeUByte(qTY);
writer.writeUint16(initTZ);
writer.writeUint16Big(initTZ);
writer.writeUByte(qTZ);
}
}
@@ -138,8 +138,7 @@ struct ANIM : BigDNA
std::unique_ptr<IANIM> m_anim;
void read(Athena::io::IStreamReader& reader)
{
reader.setEndian(Athena::BigEndian);
atUint32 version = reader.readUint32();
atUint32 version = reader.readUint32Big();
switch (version)
{
case 0:
@@ -158,8 +157,7 @@ struct ANIM : BigDNA
void write(Athena::io::IStreamWriter& writer) const
{
writer.setEndian(Athena::BigEndian);
writer.writeUint32(m_anim->m_version);
writer.writeUint32Big(m_anim->m_version);
m_anim->write(writer);
}