mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-07-13 18:45:52 +00:00
Modify BitsToDouble to take system endianess into account
This commit is contained in:
parent
f57b44a786
commit
87ab1a1f86
@ -8,6 +8,20 @@
|
|||||||
|
|
||||||
namespace urde
|
namespace urde
|
||||||
{
|
{
|
||||||
|
union BitsToDouble
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
#if BYTE_ORDER == __LITTLE_ENDIAN
|
||||||
|
u32 high;
|
||||||
|
u32 low;
|
||||||
|
#else
|
||||||
|
u32 low;
|
||||||
|
u32 high;
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
double doub;
|
||||||
|
};
|
||||||
|
|
||||||
CWorldLayerState::CWorldLayerState(CBitStreamReader& reader, const CSaveWorld& saveWorld)
|
CWorldLayerState::CWorldLayerState(CBitStreamReader& reader, const CSaveWorld& saveWorld)
|
||||||
{
|
{
|
||||||
@ -101,15 +115,7 @@ CGameState::GameFileStateInfo CGameState::LoadGameFileState(const u8* data)
|
|||||||
stream.ReadEncoded(1);
|
stream.ReadEncoded(1);
|
||||||
ret.x8_mlvlId = stream.ReadEncoded(32);
|
ret.x8_mlvlId = stream.ReadEncoded(32);
|
||||||
|
|
||||||
union BitsToDouble
|
BitsToDouble conv;
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
u32 low;
|
|
||||||
u32 high;
|
|
||||||
};
|
|
||||||
double doub;
|
|
||||||
} conv;
|
|
||||||
conv.low = stream.ReadEncoded(32);
|
conv.low = stream.ReadEncoded(32);
|
||||||
conv.high = stream.ReadEncoded(32);
|
conv.high = stream.ReadEncoded(32);
|
||||||
ret.x0_playTime = conv.doub;
|
ret.x0_playTime = conv.doub;
|
||||||
@ -155,15 +161,7 @@ CGameState::CGameState(CBitStreamReader& stream, u32 saveIdx)
|
|||||||
x84_mlvlId = stream.ReadEncoded(32);
|
x84_mlvlId = stream.ReadEncoded(32);
|
||||||
EnsureWorldPakReady(x84_mlvlId);
|
EnsureWorldPakReady(x84_mlvlId);
|
||||||
|
|
||||||
union BitsToDouble
|
BitsToDouble conv;
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
u32 low;
|
|
||||||
u32 high;
|
|
||||||
};
|
|
||||||
double doub;
|
|
||||||
} conv;
|
|
||||||
conv.low = stream.ReadEncoded(32);
|
conv.low = stream.ReadEncoded(32);
|
||||||
conv.high = stream.ReadEncoded(32);
|
conv.high = stream.ReadEncoded(32);
|
||||||
xa0_playTime = conv.doub;
|
xa0_playTime = conv.doub;
|
||||||
@ -231,15 +229,7 @@ void CGameState::PutTo(CBitStreamWriter& writer) const
|
|||||||
writer.WriteEncoded(x228_25_deferPowerupInit, 1);
|
writer.WriteEncoded(x228_25_deferPowerupInit, 1);
|
||||||
writer.WriteEncoded(x84_mlvlId, 32);
|
writer.WriteEncoded(x84_mlvlId, 32);
|
||||||
|
|
||||||
union BitsToDouble
|
BitsToDouble conv;
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
u32 low;
|
|
||||||
u32 high;
|
|
||||||
};
|
|
||||||
double doub;
|
|
||||||
} conv;
|
|
||||||
conv.doub = xa0_playTime;
|
conv.doub = xa0_playTime;
|
||||||
writer.WriteEncoded(conv.low, 32);
|
writer.WriteEncoded(conv.low, 32);
|
||||||
writer.WriteEncoded(conv.high, 32);
|
writer.WriteEncoded(conv.high, 32);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user