savebuffer: extended read/write to accept 64 bits, renamed a function, removed an unused function

This commit is contained in:
Raf committed 2025-03-31 10:10:13 +08:00
1 parent a1d6916871
commit 4d4fa8f681
6 files changed
+26 -46

No files matched your search

+1 -5
View File
@@ -138,8 +138,6 @@ void bossfileLoad(void)
g_BossFile.usingmultipletunes = savebufferReadBits(&buffer, 1);
g_AltTitleUnlocked = savebufferReadBits(&buffer, 1);
g_AltTitleEnabled = savebufferReadBits(&buffer, 1);
func0f0d54c4(&buffer);
}
if (failed) {
@@ -168,7 +166,7 @@ void bossfileSave(void)
savebufferOr(&buffer, g_Vars.language, 4);
for (i = 0; i < ARRAYCOUNT(g_BossFile.teamnames); i++) {
func0f0d55a4(&buffer, g_BossFile.teamnames[i]);
savebufferWriteString(&buffer, g_BossFile.teamnames[i]);
}
if (g_BossFile.tracknum == -1) {
@@ -185,8 +183,6 @@ void bossfileSave(void)
savebufferOr(&buffer, g_AltTitleUnlocked, 1);
savebufferOr(&buffer, g_AltTitleEnabled, 1);
func0f0d54c4(&buffer);
fileid = bossfileFindFileId();
if (fileid == 0) {
+1 -5
View File
@@ -395,8 +395,6 @@ s32 gamefileLoad(s32 device)
frSetWeaponFound(WEAPON_REMOTEMINE);
}
#endif
func0f0d54c4(&buffer);
gamefileApplyOptions(&g_GameFile);
return 0;
@@ -499,7 +497,7 @@ s32 gamefileSave(s32 device, s32 fileid, u16 deviceserial)
if (device >= 0) {
savebufferClear(&buffer);
func0f0d55a4(&buffer, g_GameFile.name);
savebufferWriteString(&buffer, g_GameFile.name);
savebufferOr(&buffer, g_GameFile.thumbnail, 5);
savebufferOr(&buffer, g_GameFile.totaltime, 32);
@@ -556,8 +554,6 @@ s32 gamefileSave(s32 device, s32 fileid, u16 deviceserial)
savebufferOr(&buffer, g_GameFile.weaponsfound[i], 8);
}
func0f0d54c4(&buffer);
ret = pakSaveAtGuid(device, fileid, PAKFILETYPE_GAME, buffer.bytes, &newfileid, 0);
g_FilemgrLastPakError = ret;
+5 -9
View File
@@ -3533,7 +3533,7 @@ void mpplayerfileSaveWad(s32 playernum, struct savebuffer *buffer)
s32 j;
u32 stack;
func0f0d55a4(buffer, g_PlayerConfigsArray[playernum].base.name);
savebufferWriteString(buffer, g_PlayerConfigsArray[playernum].base.name);
if (g_PlayerConfigsArray[playernum].time > 0x0fffffff) { // over 3106 days
g_PlayerConfigsArray[playernum].time = 0x0fffffff;
@@ -3684,8 +3684,6 @@ s32 mpplayerfileSave(s32 playernum, s32 device, s32 fileid, u16 deviceserial)
if (device >= 0) {
savebufferClear(&buffer);
mpplayerfileSaveWad(playernum, &buffer);
func0f0d54c4(&buffer);
var80075bd0[2] = true;
ret = pakSaveAtGuid(device, fileid, PAKFILETYPE_MPPLAYER, buffer.bytes, &newfileid, 0);
@@ -3718,8 +3716,6 @@ s32 mpplayerfileLoad(s32 playernum, s32 device, s32 fileid, u16 deviceserial)
g_PlayerConfigsArray[playernum].fileguid.deviceserial = deviceserial;
mpplayerfileLoadWad(playernum, &buffer, 1);
func0f0d54c4(&buffer);
g_PlayerConfigsArray[playernum].handicap = 0x80;
return 0;
}
@@ -3917,7 +3913,7 @@ static u64 packWeaponSetRandomFilters()
{
u64 packed = 0;
for (int i = 0; i < NUM_MPWEAPONS; ++i) {
packed |= g_MpWeaponSetRandomFilters[i] != 0 ? (1 << i) : 0;
packed |= g_MpWeaponSetRandomFilters[i] != 0 ? (1LL << i) : 0;
}
return packed;
@@ -3926,11 +3922,11 @@ static u64 packWeaponSetRandomFilters()
static void unpackWeaponSetRandomFilters(u64 packed)
{
for (int i = 0; i < NUM_MPWEAPONS; ++i) {
g_MpWeaponSetRandomFilters[i] = (packed & (1 << i)) >> i;
g_MpWeaponSetRandomFilters[i] = (packed & (1LL << i)) != 0;
}
}
void mpsetupfileLoadWad(struct savebuffer *buffer)
void mpsetupfileLoadWad(struct savebuffer *buffer, u8 version)
{
s32 i;
s32 j;
@@ -3993,7 +3989,7 @@ void mpsetupfileSaveWad(struct savebuffer *buffer)
s32 mpbodynum;
s32 i;
func0f0d55a4_ext(buffer, g_MpSetup.name, MPSETUP_MAXNAME+1);
savebufferWriteString_ext(buffer, g_MpSetup.name, MPSETUP_MAXNAME + 1);
for (i = 0; i < MAX_BOTS; i++) {
if (g_MpSetup.chrslots & (1 << (i + 4))) {
+13 -20
View File
@@ -374,13 +374,13 @@ Gfx *menugfxDrawPlane(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2, u32 colour1, u32
/**
* Write the specified amount of bits to the buffer, advancing the internal pointer.
*
* numbits is expected to be 32 or less.
* numbits is expected to be 64 or less.
*
* This function only sets bits to on and does not unset them.
*/
void savebufferOr(struct savebuffer *buffer, u32 value, s32 numbits)
void savebufferOr(struct savebuffer *buffer, u64 value, s32 numbits)
{
u32 bit = 1 << (numbits - 1);
u64 bit = 1LL << (numbits - 1LL);
for (; bit; bit >>= 1) {
if (bit & value) {
@@ -399,11 +399,11 @@ void savebufferOr(struct savebuffer *buffer, u32 value, s32 numbits)
/**
* Write the specified amount of bits to the buffer, advancing the internal pointer.
*
* numbits is expected to be 32 or less.
* numbits is expected to be 64 or less.
*/
void savebufferWriteBits(struct savebuffer *buffer, u32 value, s32 numbits, u8 *dst)
void savebufferWriteBits(struct savebuffer *buffer, u64 value, s32 numbits, u8 *dst)
{
u32 bit = 1 << (numbits - 1);
u64 bit = 1LL << (numbits - 1);
for (; bit; bit >>= 1) {
s32 bitindex = buffer->bitpos % 8;
@@ -425,12 +425,12 @@ void savebufferWriteBits(struct savebuffer *buffer, u32 value, s32 numbits, u8 *
* Read the specified amount of bits from the buffer and return it as an
* integer, advancing the internal pointer.
*
* numbits is expected to be 32 or less.
* numbits is expected to be 64 or less.
*/
u32 savebufferReadBits(struct savebuffer *buffer, s32 numbits)
u64 savebufferReadBits(struct savebuffer *buffer, s32 numbits)
{
u32 bit = 1 << (numbits - 1);
u32 value = 0;
u64 bit = 1LL << (numbits - 1);
u64 value = 0;
for (; bit; bit >>= 1) {
s32 bitindex = buffer->bitpos % 8;
@@ -470,13 +470,6 @@ void savebufferWriteData(struct savebuffer *buffer, u8 *data, u8 len)
}
}
void func0f0d54c4(struct savebuffer *buffer)
{
s32 tmp = buffer->bitpos;
if (tmp / 8 && buffer->bitpos);
}
/**
* Read a zero-terminated string from the buffer and move the buffer's internal
* pointer past the end of the string.
@@ -514,7 +507,7 @@ void savebufferReadString(struct savebuffer *buffer, char *dst, bool addlinebrea
savebufferReadString_ext(buffer, dst, addlinebreak, 10);
}
void func0f0d55a4_ext(struct savebuffer *buffer, char *src, u8 len)
void savebufferWriteString_ext(struct savebuffer *buffer, char *src, u8 len)
{
bool done = false;
s32 i;
@@ -537,9 +530,9 @@ void func0f0d55a4_ext(struct savebuffer *buffer, char *src, u8 len)
}
}
void func0f0d55a4(struct savebuffer *buffer, char *src)
void savebufferWriteString(struct savebuffer *buffer, char *src)
{
func0f0d55a4_ext(buffer, src, 10);
savebufferWriteString_ext(buffer, src, 10);
}
void func0f0d564c_ext(u8 *data, char *dst, bool addlinebreak, u8 len)
+1 -1
View File
@@ -118,7 +118,7 @@ s32 mpGetNumUnlockedPresets(void);
char *mpGetPresetNameBySlot(s32 slot);
void mpApplyConfig(struct mpconfigfull *mpconfig);
void mp0f18dec4(s32 arg0);
void mpsetupfileLoadWad(struct savebuffer *buffer);
void mpsetupfileLoadWad(struct savebuffer *buffer, u8 version);
void mpsetupfileSaveWad(struct savebuffer *buffer);
void mpsetupfileGetOverview(char *arg0, char *filename, u16 *numsims, u16 *stagenum, u16 *scenarionum);
s32 mpsetupfileSave(s32 device, s32 filenum, u16 deviceserial);
+5 -6
View File
@@ -11,16 +11,15 @@ Gfx *func0f0d49c8(Gfx *gdl);
Gfx *func0f0d4a3c(Gfx *gdl, s32 arg1);
Gfx *func0f0d4c80(Gfx *gdl);
Gfx *menugfxDrawPlane(Gfx *gdl, s32 x1, s32 y1, s32 x2, s32 y2, u32 colour1, u32 colour2, s32 type);
void savebufferOr(struct savebuffer *buffer, u32 arg1, s32 arg2);
void savebufferWriteBits(struct savebuffer *buffer, u32 value, s32 numbits, u8 *dst);
u32 savebufferReadBits(struct savebuffer *buffer, s32 offset);
void savebufferOr(struct savebuffer *buffer, u64 arg1, s32 arg2);
void savebufferWriteBits(struct savebuffer *buffer, u64 value, s32 numbits, u8 *dst);
u64 savebufferReadBits(struct savebuffer *buffer, s32 offset);
void savebufferClear(struct savebuffer *buffer);
void savebufferWriteData(struct savebuffer *buffer, u8 *data, u8 len);
void func0f0d54c4(struct savebuffer *buffer);
void savebufferReadString_ext(struct savebuffer *buffer, char *dst, bool addlinebreak, u8 len);
void savebufferReadString(struct savebuffer *buffer, char *dst, bool addlinebreak);
void func0f0d55a4_ext(struct savebuffer *buffer, char *src, u8 len);
void func0f0d55a4(struct savebuffer *buffer, char *src);
void savebufferWriteString_ext(struct savebuffer *buffer, char *src, u8 len);
void savebufferWriteString(struct savebuffer *buffer, char *src);
void func0f0d564c_ext(u8 *data, char *dst, bool addlinebreak, u8 len);
void func0f0d564c(u8 *data, char *dst, bool addlinebreak);
void func0f0d5690(u8 *dst, char *buffer);