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

Add CBitStreamReader

This commit is contained in:
2016-03-19 21:10:29 -07:00
parent 4960f683fd
commit 193e21943d
4 changed files with 92 additions and 12 deletions

View File

@@ -77,34 +77,50 @@ CPlayerState::CPlayerState(CBitStreamReader& in)
in.readBytesToBuf(save, 0x3AC);
{
CBitStreamReader stream(save, 0x3AC);
std::string filename = athena::utility::sprintf("Game%i.dat", k + 1);
CBitStreamWriter w{filename};
printf("Game State\n");
for (u32 i = 0; i < 0x80; i++)
printf("%i\n", stream.ReadEncoded(8));
{
u32 tmp = stream.ReadEncoded(8);
printf("%i\n", tmp);
w.WriteEncoded(tmp, 8);
}
s32 tmp = stream.ReadEncoded(32);
w.WriteEncoded(tmp, 0x20);
printf("%i\n", tmp);
tmp = stream.ReadEncoded(1);
w.WriteEncoded(tmp, 1);
printf("%i\n", tmp);
tmp = stream.ReadEncoded(1);
w.WriteEncoded(tmp, 1);
printf("%i\n", tmp);
tmp = stream.ReadEncoded(32);
w.WriteEncoded(tmp, 0x20);
printf("%f\n", *reinterpret_cast<float*>(&tmp));
tmp = stream.ReadEncoded(32);
w.WriteEncoded(tmp, 0x20);
printf("%f\n", *reinterpret_cast<float*>(&tmp));
tmp = stream.ReadEncoded(32);
printf("%x\n", tmp);
w.WriteEncoded(tmp, 0x20);
printf("PlayerState\n");
x4_ = stream.ReadEncoded(0x20);
w.WriteEncoded(x4_, 0x20);
printf("%x\n", tmp);
tmp = stream.ReadEncoded(0x20);
printf("Base health %f\n", *reinterpret_cast<float*>(&tmp));
xc_baseHealth = *reinterpret_cast<float*>(&tmp);
w.WriteEncoded(tmp, 0x20);
x8_ = stream.ReadEncoded(CBitStreamReader::GetBitCount(5));
printf("%i\n", x8_);
w.WriteEncoded(x8_, CBitStreamReader::GetBitCount(5));
x20_ = stream.ReadEncoded(CBitStreamReader::GetBitCount(4));
printf("%i\n", x20_);
w.WriteEncoded(x20_, CBitStreamReader::GetBitCount(4));
x24_powerups.resize(41);
printf("Powerups\n");
for (u32 i = 0; i < x24_powerups.size(); ++i)
@@ -114,20 +130,27 @@ CPlayerState::CPlayerState(CBitStreamReader& in)
u32 a = stream.ReadEncoded(CBitStreamReader::GetBitCount(PowerUpMaxes[i]));
u32 b = stream.ReadEncoded(CBitStreamReader::GetBitCount(PowerUpMaxes[i]));
w.WriteEncoded(a, CBitStreamReader::GetBitCount(PowerUpMaxes[i]));
w.WriteEncoded(b, CBitStreamReader::GetBitCount(PowerUpMaxes[i]));
x24_powerups[i] = CPowerUp(a, b);
printf("%2i(%15s): a=%i b=%i\n", i, PowerUpNames[i], a, b);
}
for (u32 i = 0; i < 0x34e; i++)
for (u32 i = 0; i < 0x304 * 8; i++)
{
u32 tmp = stream.ReadEncoded(1);
printf("%i\n", tmp);
w.WriteEncoded(tmp, 1);
}
tmp = stream.ReadEncoded(CBitStreamReader::GetBitCount(0x100));
printf("%i\n", tmp);
w.WriteEncoded(tmp, CBitStreamReader::GetBitCount(0x100));
tmp = stream.ReadEncoded(CBitStreamReader::GetBitCount(0x100));
printf("%i\n", tmp);
w.WriteEncoded(tmp, CBitStreamReader::GetBitCount(0x100));
w.save();
}
}
}