port: 64-bit: shrink audio bank allocation after loading

This commit is contained in:
fgsfds committed 2024-11-12 13:53:52 +01:00
1 parent d5482f3453
commit 3f887b2ecf
4 files changed
+21 -4

No files matched your search

+1
View File
@@ -32,6 +32,7 @@ void sysGetHomePath(char *outPath, const u32 outLen);
void *sysMemAlloc(const u32 size);
void *sysMemZeroAlloc(const u32 size);
void *sysMemRealloc(void *ptr, const u32 newSize);
void sysMemFree(void *ptr);
// hns is specified in 100ns units
+1 -1
View File
@@ -31,7 +31,7 @@ static int getNumStrings(u8 *src, size_t len)
return 1;
}
u32 convertLangFile(u8 *dst, u8 *src, size_t srclen)
static u32 convertLangFile(u8 *dst, u8 *src, size_t srclen)
{
// Convert it
u32 *src_offsets = (u32 *) src;
+14 -3
View File
@@ -316,11 +316,22 @@ static u32 convertAudioBankFile(u8 *dst, u8 *src)
u8 *preprocessALBankFile(u8 *src, u32 size, u32 *outSize)
{
ptrReset();
u32 dstlen = size * 3;
const u32 dstlen = size * 3; // this should overshoot any possible bank size, but * 2 also works for vanilla banks
u8 *dst = sysMemZeroAlloc(dstlen);
*outSize = convertAudioBankFile(dst, src);
*outSize = ALIGN16(*outSize);
u32 reallen = convertAudioBankFile(dst, src);
if (reallen > dstlen || ALIGN16(reallen) > dstlen) {
sysFatalError("overflow when trying to preprocess an ALBankFile, size %u dstlen %u reallen %u", size, dstlen, reallen);
}
reallen = ALIGN16(reallen);
if (reallen < dstlen) {
dst = sysMemRealloc(dst, reallen);
}
*outSize = reallen;
return dst;
}
+5
View File
@@ -288,6 +288,11 @@ void *sysMemZeroAlloc(const u32 size)
return calloc(1, size);
}
void *sysMemRealloc(void *ptr, const u32 newSize)
{
return realloc(ptr, newSize);
}
void sysMemFree(void *ptr)
{
free(ptr);