mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-22 23:17:44 -05:00
111 lines
2.0 KiB
C
111 lines
2.0 KiB
C
#include "global.h"
|
|
#include "globaldata.h"
|
|
#include "data_serializer.h"
|
|
#include "memory.h"
|
|
#include "items.h"
|
|
|
|
// arm9.bin::02064998
|
|
void InitBitReader(DataSerializer *r0, u8 *buffer, s32 bufLen)
|
|
{
|
|
r0->stream = buffer;
|
|
r0->count = 0;
|
|
r0->unkC = 0;
|
|
r0->end = buffer + bufLen;
|
|
}
|
|
|
|
// arm9.bin::0206496C
|
|
void InitBitWriter(DataSerializer *r0, u8 *buffer, s32 bufLen)
|
|
{
|
|
r0->stream = buffer;
|
|
r0->count = 0;
|
|
r0->unkC = 0;
|
|
r0->end = buffer + bufLen;
|
|
MemoryClear8(buffer, bufLen);
|
|
}
|
|
|
|
// arm9.bin::02064968
|
|
void FinishBitSerializer(DataSerializer *seri)
|
|
{
|
|
}
|
|
|
|
// arm9.bin::020648D0
|
|
void WriteBits(DataSerializer *r0, void *src, s32 numBits)
|
|
{
|
|
s32 curBit;
|
|
u8 *curByte;
|
|
|
|
curBit = 0;
|
|
curByte = src;
|
|
|
|
while (numBits != 0) {
|
|
if ((*curByte >> curBit) & 1)
|
|
*r0->stream |= (1 << r0->count);
|
|
|
|
curBit++;
|
|
if (curBit == 8) {
|
|
curByte++;
|
|
curBit = 0;
|
|
}
|
|
|
|
r0->count++;
|
|
if (r0->count == 8) {
|
|
r0->stream++;
|
|
r0->count = 0;
|
|
}
|
|
|
|
r0->unkC++;
|
|
numBits--;
|
|
}
|
|
}
|
|
|
|
static UNUSED void sub_80948E4(DataSerializer *seri, void *src, s32 numBytes)
|
|
{
|
|
s32 iVar1;
|
|
u8 *curByte;
|
|
|
|
curByte = src;
|
|
|
|
while (numBytes != 0) {
|
|
iVar1 = (*curByte << seri->count);
|
|
*seri->stream |= iVar1;
|
|
seri->stream++;
|
|
*seri->stream |= iVar1 >> 8;
|
|
curByte++;
|
|
seri->unkC += 8;
|
|
numBytes--;
|
|
}
|
|
}
|
|
|
|
// arm9.bin::0206482C
|
|
void ReadBits(DataSerializer *r0, void *dst, s32 numBits)
|
|
{
|
|
s32 curBit;
|
|
u8 *curByte;
|
|
|
|
curBit = 0;
|
|
curByte = dst;
|
|
|
|
while (numBits != 0) {
|
|
if (curBit == 0)
|
|
*curByte = 0;
|
|
|
|
if ((*r0->stream >> r0->count) & 1)
|
|
*curByte |= (1 << curBit);
|
|
|
|
curBit++;
|
|
if (curBit == 8) {
|
|
curByte++;
|
|
curBit = 0;
|
|
}
|
|
|
|
r0->count++;
|
|
if (r0->count == 8) {
|
|
r0->stream++;
|
|
r0->count = 0;
|
|
}
|
|
|
|
r0->unkC++;
|
|
numBits--;
|
|
}
|
|
}
|