64 bit improvements
This commit is contained in:
parent
3832edba89
commit
f4b023df31
9 changed files with 101 additions and 90 deletions
|
|
@ -2,13 +2,49 @@
|
||||||
#define _SRC_BYTESWAP_H_
|
#define _SRC_BYTESWAP_H_
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C"
|
extern "C" {
|
||||||
{
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "game/animdata.h"
|
#include "game/animdata.h"
|
||||||
#include "game/hsfformat.h"
|
#include "game/hsfformat.h"
|
||||||
|
|
||||||
|
typedef struct AnimData32b {
|
||||||
|
s16 bankNum;
|
||||||
|
s16 patNum;
|
||||||
|
s16 bmpNum;
|
||||||
|
s16 useNum;
|
||||||
|
|
||||||
|
u32 bank;
|
||||||
|
u32 pat;
|
||||||
|
u32 bmp;
|
||||||
|
} AnimData32b;
|
||||||
|
|
||||||
|
typedef struct AnimBankData32b {
|
||||||
|
s16 timeNum;
|
||||||
|
s16 unk;
|
||||||
|
u32 frame;
|
||||||
|
} AnimBankData32b;
|
||||||
|
|
||||||
|
typedef struct AnimPatData32b {
|
||||||
|
s16 layerNum;
|
||||||
|
s16 centerX;
|
||||||
|
s16 centerY;
|
||||||
|
s16 sizeX;
|
||||||
|
s16 sizeY;
|
||||||
|
u32 layer;
|
||||||
|
} AnimPatData32b;
|
||||||
|
|
||||||
|
typedef struct AnimBmpData32b {
|
||||||
|
u8 pixSize;
|
||||||
|
u8 dataFmt;
|
||||||
|
s16 palNum;
|
||||||
|
s16 sizeX;
|
||||||
|
s16 sizeY;
|
||||||
|
u32 dataSize;
|
||||||
|
u32 palData;
|
||||||
|
u32 data;
|
||||||
|
} AnimBmpData32b;
|
||||||
|
|
||||||
typedef struct HsfCluster32b {
|
typedef struct HsfCluster32b {
|
||||||
u32 name[2];
|
u32 name[2];
|
||||||
u32 targetName;
|
u32 targetName;
|
||||||
|
|
@ -236,10 +272,10 @@ void byteswap_s32(s32 *src);
|
||||||
void byteswap_hsfvec3f(HsfVector3f *src);
|
void byteswap_hsfvec3f(HsfVector3f *src);
|
||||||
void byteswap_hsfvec2f(HsfVector2f *src);
|
void byteswap_hsfvec2f(HsfVector2f *src);
|
||||||
|
|
||||||
void byteswap_animdata(void *src, AnimData* dest);
|
void byteswap_animdata(void *src, AnimData *dest);
|
||||||
void byteswap_animbankdata(void *src, AnimBankData *dest);
|
void byteswap_animbankdata(AnimBankData32b *src, AnimBankData *dest);
|
||||||
void byteswap_animpatdata(void *src, AnimPatData *dest);
|
void byteswap_animpatdata(AnimPatData32b *src, AnimPatData *dest);
|
||||||
void byteswap_animbmpdata(void *src, AnimBmpData *dest);
|
void byteswap_animbmpdata(AnimBmpData32b *src, AnimBmpData *dest);
|
||||||
void byteswap_animframedata(AnimFrameData *src);
|
void byteswap_animframedata(AnimFrameData *src);
|
||||||
void byteswap_animlayerdata(AnimLayerData *src);
|
void byteswap_animlayerdata(AnimLayerData *src);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -566,6 +566,8 @@ void ObjectSetup(void)
|
||||||
s16 sprite;
|
s16 sprite;
|
||||||
AnimData *sprite_data;
|
AnimData *sprite_data;
|
||||||
s16 i;
|
s16 i;
|
||||||
|
#ifdef __MWERKS__
|
||||||
|
// TODO PC
|
||||||
titleMdlId[0] = model = Hu3DModelCreateFile(TITLE_CHAR_HSF);
|
titleMdlId[0] = model = Hu3DModelCreateFile(TITLE_CHAR_HSF);
|
||||||
Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF);
|
Hu3DModelAttrSet(model, HU3D_ATTR_DISPOFF);
|
||||||
Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP);
|
Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP);
|
||||||
|
|
@ -577,6 +579,7 @@ void ObjectSetup(void)
|
||||||
Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP);
|
Hu3DModelAttrSet(model, HU3D_MOTATTR_LOOP);
|
||||||
Hu3DModelCameraInfoSet(model, 1);
|
Hu3DModelCameraInfoSet(model, 1);
|
||||||
Hu3DModelLightInfoSet(model, 1);
|
Hu3DModelLightInfoSet(model, 1);
|
||||||
|
#endif
|
||||||
#if VERSION_NTSC
|
#if VERSION_NTSC
|
||||||
bootGrpId = HuSprGrpCreate(4);
|
bootGrpId = HuSprGrpCreate(4);
|
||||||
#else
|
#else
|
||||||
|
|
|
||||||
|
|
@ -77,10 +77,10 @@ static void __DEMOInitMem()
|
||||||
void *arenaHi = OSGetArenaHi();
|
void *arenaHi = OSGetArenaHi();
|
||||||
unsigned long fbSize = ((u16)(rmode->fbWidth + 15) & 0xFFF0) * rmode->xfbHeight * 2;
|
unsigned long fbSize = ((u16)(rmode->fbWidth + 15) & 0xFFF0) * rmode->xfbHeight * 2;
|
||||||
|
|
||||||
DemoFrameBuffer1 = (void *)(((u32)arenaLo + 0x1F) & 0xFFFFFFE0);
|
DemoFrameBuffer1 = (void *)(((uintptr_t)arenaLo + 0x1F) & ~0x1F);
|
||||||
DemoFrameBuffer2 = (void *)(((u32)DemoFrameBuffer1 + fbSize + 0x1F) & 0xFFFFFFE0);
|
DemoFrameBuffer2 = (void *)(((uintptr_t)DemoFrameBuffer1 + fbSize + 0x1F) & ~0x1F);
|
||||||
DemoCurrentBuffer = DemoFrameBuffer2;
|
DemoCurrentBuffer = DemoFrameBuffer2;
|
||||||
arenaLo = (void *)(((u32)DemoFrameBuffer2 + fbSize + 0x1F) & 0xFFFFFFE0);
|
arenaLo = (void *)(((uintptr_t)DemoFrameBuffer2 + fbSize + 0x1F) & ~0x1F);
|
||||||
OSSetArenaLo(arenaLo);
|
OSSetArenaLo(arenaLo);
|
||||||
if (((OSGetConsoleType() + 0xF0000000) == 4U) && ((OSGetPhysicalMemSize() + 0xFFC00000) != 0U)
|
if (((OSGetConsoleType() + 0xF0000000) == 4U) && ((OSGetPhysicalMemSize() + 0xFFC00000) != 0U)
|
||||||
&& (OSGetConsoleSimulatedMemSize() < 0x01800000U)) {
|
&& (OSGetConsoleSimulatedMemSize() < 0x01800000U)) {
|
||||||
|
|
@ -91,9 +91,9 @@ static void __DEMOInitMem()
|
||||||
arenaHi = OSGetArenaHi();
|
arenaHi = OSGetArenaHi();
|
||||||
arenaLo = OSInitAlloc(arenaLo, arenaHi, 1);
|
arenaLo = OSInitAlloc(arenaLo, arenaHi, 1);
|
||||||
OSSetArenaLo(arenaLo);
|
OSSetArenaLo(arenaLo);
|
||||||
arenaLo = (void *)(((u32)arenaLo + 0x1F) & 0xFFFFFFE0);
|
arenaLo = (void *)(((uintptr_t)arenaLo + 0x1F) & ~0x1F);
|
||||||
arenaHi = (void *)((u32)arenaHi & 0xFFFFFFE0);
|
arenaHi = (void *)((uintptr_t)arenaHi & ~0x1F);
|
||||||
OSSetCurrentHeap(OSCreateHeap((void *)(((u32)arenaLo)), arenaHi));
|
OSSetCurrentHeap(OSCreateHeap((void *)(((uintptr_t)arenaLo)), arenaHi));
|
||||||
OSSetArenaLo((arenaLo = arenaHi));
|
OSSetArenaLo((arenaLo = arenaHi));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -210,13 +210,13 @@ static void LoadMemInfo()
|
||||||
arenaHi = OSGetArenaHi();
|
arenaHi = OSGetArenaHi();
|
||||||
arenaLo = OSInitAlloc(arenaLo, arenaHi, 1);
|
arenaLo = OSInitAlloc(arenaLo, arenaHi, 1);
|
||||||
OSSetArenaLo(arenaLo);
|
OSSetArenaLo(arenaLo);
|
||||||
arenaLo = (void *)(((u32)arenaLo + 0x1F) & 0xFFFFFFE0);
|
arenaLo = (void *)(((uintptr_t)arenaLo + 0x1F) & ~0x1F);
|
||||||
arenaHi = (void *)((u32)arenaHi & 0xFFFFFFE0);
|
arenaHi = (void *)((uintptr_t)arenaHi & ~0x1F);
|
||||||
OSSetCurrentHeap(OSCreateHeap((void *)(((u32)arenaLo)), arenaHi));
|
OSSetCurrentHeap(OSCreateHeap((void *)(((u32)arenaLo)), arenaHi));
|
||||||
OSSetArenaLo((arenaLo = arenaHi));
|
OSSetArenaLo((arenaLo = arenaHi));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
memEntry = (void *)((u32)buf + 0x1F & 0xFFFFFFE0);
|
memEntry = (void *)((uintptr_t)buf + 0x1F & ~0x1F);
|
||||||
arenaHiOld = OSGetArenaHi();
|
arenaHiOld = OSGetArenaHi();
|
||||||
simMemEnd = OSPhysicalToCached(OSGetConsoleSimulatedMemSize());
|
simMemEnd = OSPhysicalToCached(OSGetConsoleSimulatedMemSize());
|
||||||
OSSetArenaHi(OSPhysicalToCached(OSGetPhysicalMemSize()));
|
OSSetArenaHi(OSPhysicalToCached(OSGetPhysicalMemSize()));
|
||||||
|
|
@ -224,8 +224,8 @@ static void LoadMemInfo()
|
||||||
arenaHi = OSGetArenaHi();
|
arenaHi = OSGetArenaHi();
|
||||||
arenaLo = OSInitAlloc(arenaLo, arenaHi, 1);
|
arenaLo = OSInitAlloc(arenaLo, arenaHi, 1);
|
||||||
OSSetArenaLo(arenaLo);
|
OSSetArenaLo(arenaLo);
|
||||||
arenaLo = (void *)(((u32)arenaLo + 0x1F) & 0xFFFFFFE0);
|
arenaLo = (void *)(((uintptr_t)arenaLo + 0x1F) & ~0x1F);
|
||||||
arenaHi = (void *)((u32)arenaHi & 0xFFFFFFE0);
|
arenaHi = (void *)((uintptr_t)arenaHi & ~0x1F);
|
||||||
OSSetCurrentHeap(OSCreateHeap((void *)(arenaLo), arenaHi));
|
OSSetCurrentHeap(OSCreateHeap((void *)(arenaLo), arenaHi));
|
||||||
OSSetArenaLo((arenaLo = arenaHi));
|
OSSetArenaLo((arenaLo = arenaHi));
|
||||||
OSAllocFixed(&arenaHiOld, &simMemEnd);
|
OSAllocFixed(&arenaHiOld, &simMemEnd);
|
||||||
|
|
@ -234,7 +234,7 @@ static void LoadMemInfo()
|
||||||
while (length) {
|
while (length) {
|
||||||
OSReport("loop\n");
|
OSReport("loop\n");
|
||||||
transferLength = (length < 0x20) ? length : 0x20;
|
transferLength = (length < 0x20) ? length : 0x20;
|
||||||
if (DVDReadPrio(&fileInfo, memEntry, (transferLength + 0x1F) & 0xFFFFFFE0, offset, 2) < 0) {
|
if (DVDReadPrio(&fileInfo, memEntry, (transferLength + 0x1F) & ~0x1F, offset, 2) < 0) {
|
||||||
OSPanic(__FILE__, 0x49F, "An error occurred when issuing read to /meminfo.bin\n");
|
OSPanic(__FILE__, 0x49F, "An error occurred when issuing read to /meminfo.bin\n");
|
||||||
}
|
}
|
||||||
indexMax = (transferLength / 8);
|
indexMax = (transferLength / 8);
|
||||||
|
|
|
||||||
|
|
@ -155,7 +155,7 @@ void *OSAllocFromHeap(int heap, unsigned long size)
|
||||||
|
|
||||||
hd = &HeapArray[heap];
|
hd = &HeapArray[heap];
|
||||||
size += 0x20;
|
size += 0x20;
|
||||||
size = (size + 0x1F) & 0xFFFFFFE0;
|
size = (size + 0x1F) & ~0x1F;
|
||||||
|
|
||||||
for (cell = hd->free; cell != NULL; cell = cell->next) {
|
for (cell = hd->free; cell != NULL; cell = cell->next) {
|
||||||
if ((signed)size <= (signed)cell->size) {
|
if ((signed)size <= (signed)cell->size) {
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,9 @@ void HuMemInitAll(void)
|
||||||
void *ptr;
|
void *ptr;
|
||||||
u32 free_size;
|
u32 free_size;
|
||||||
for(i=0; i<4; i++) {
|
for(i=0; i<4; i++) {
|
||||||
|
#ifdef TARGET_PC
|
||||||
|
HeapSizeTbl[i] *= 2;
|
||||||
|
#endif
|
||||||
ptr = OSAlloc(HeapSizeTbl[i]);
|
ptr = OSAlloc(HeapSizeTbl[i]);
|
||||||
if(ptr == NULL) {
|
if(ptr == NULL) {
|
||||||
OSReport("HuMem> Failed OSAlloc Size:%d\n", HeapSizeTbl[i]);
|
OSReport("HuMem> Failed OSAlloc Size:%d\n", HeapSizeTbl[i]);
|
||||||
|
|
@ -55,7 +58,7 @@ void *HuMemDirectMalloc(HeapID heap, s32 size)
|
||||||
mflr retaddr
|
mflr retaddr
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
size = (size+31) & 0xFFFFFFE0;
|
size = (size + 31) & ~0x1F;
|
||||||
return HuMemMemoryAlloc(HeapTbl[heap], size, retaddr);
|
return HuMemMemoryAlloc(HeapTbl[heap], size, retaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -69,7 +72,7 @@ void *HuMemDirectMallocNum(HeapID heap, s32 size, uintptr_t num)
|
||||||
mflr retaddr
|
mflr retaddr
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
size = (size+31) & 0xFFFFFFE0;
|
size = (size + 31) & ~0x1F;
|
||||||
return HuMemMemoryAllocNum(HeapTbl[heap], size, num, retaddr);
|
return HuMemMemoryAllocNum(HeapTbl[heap], size, num, retaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,18 @@
|
||||||
#include "game/memory.h"
|
#include "game/memory.h"
|
||||||
#include "dolphin/os.h"
|
#include "dolphin/os.h"
|
||||||
|
|
||||||
|
|
||||||
|
#if INTPTR_MAX == INT32_MAX
|
||||||
|
#define MEM_ALLOC_SIZE(size) (((size) + 63) & ~0x1F)
|
||||||
#define DATA_GET_BLOCK(ptr) ((struct memory_block *)(((char *)(ptr)) - 32))
|
#define DATA_GET_BLOCK(ptr) ((struct memory_block *)(((char *)(ptr)) - 32))
|
||||||
#define BLOCK_GET_DATA(block) (((char *)(block)) + 32)
|
#define BLOCK_GET_DATA(block) (((char *)(block)) + 32)
|
||||||
|
#define BLOCK_ALIGNMENT 32u
|
||||||
#define MEM_ALLOC_SIZE(size) (((size) + 63) & 0xFFFFFFE0)
|
#else
|
||||||
|
#define MEM_ALLOC_SIZE(size) (((size - 1) / 32 + 1) * 32 + 64)
|
||||||
|
#define DATA_GET_BLOCK(ptr) ((struct memory_block *)(((char *)(ptr)) - 64))
|
||||||
|
#define BLOCK_GET_DATA(block) (((char *)(block)) + 64)
|
||||||
|
#define BLOCK_ALIGNMENT 64u
|
||||||
|
#endif
|
||||||
|
|
||||||
struct memory_block {
|
struct memory_block {
|
||||||
s32 size;
|
s32 size;
|
||||||
|
|
@ -47,9 +55,9 @@ static void *HuMemMemoryAlloc2(void *heap_ptr, s32 size, uintptr_t num, uintptr_
|
||||||
struct memory_block *block = heap_ptr;
|
struct memory_block *block = heap_ptr;
|
||||||
do {
|
do {
|
||||||
if (!block->flag && block->size >= alloc_size) {
|
if (!block->flag && block->size >= alloc_size) {
|
||||||
if (block->size - alloc_size > 32u) {
|
if (block->size - alloc_size > BLOCK_ALIGNMENT) {
|
||||||
#ifdef TARGET_PC
|
#ifdef TARGET_PC
|
||||||
struct memory_block *new_block = (struct memory_block *)(((char *)block) + alloc_size);
|
struct memory_block *new_block = (struct memory_block *)((char *)block + alloc_size);
|
||||||
#else
|
#else
|
||||||
struct memory_block *new_block = (struct memory_block *)(((u32)block) + alloc_size);
|
struct memory_block *new_block = (struct memory_block *)(((u32)block) + alloc_size);
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -202,7 +210,7 @@ s32 HuMemMemorySizeGet(void *ptr)
|
||||||
}
|
}
|
||||||
block = DATA_GET_BLOCK(ptr);
|
block = DATA_GET_BLOCK(ptr);
|
||||||
if (block->flag == 1 && block->magic == 165) {
|
if (block->flag == 1 && block->magic == 165) {
|
||||||
return block->size - 32;
|
return block->size - BLOCK_ALIGNMENT;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,9 @@ Process *HuPrcCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_siz
|
||||||
if (stack_size == 0) {
|
if (stack_size == 0) {
|
||||||
stack_size = 2048;
|
stack_size = 2048;
|
||||||
}
|
}
|
||||||
|
#ifdef TARGET_PC
|
||||||
|
stack_size *= 2;
|
||||||
|
#endif
|
||||||
alloc_size = HuMemMemoryAllocSizeGet(sizeof(Process)) + HuMemMemoryAllocSizeGet(stack_size) + HuMemMemoryAllocSizeGet(extra_size);
|
alloc_size = HuMemMemoryAllocSizeGet(sizeof(Process)) + HuMemMemoryAllocSizeGet(stack_size) + HuMemMemoryAllocSizeGet(extra_size);
|
||||||
if (!(heap = HuMemDirectMalloc(HEAP_SYSTEM, alloc_size))) {
|
if (!(heap = HuMemDirectMalloc(HEAP_SYSTEM, alloc_size))) {
|
||||||
OSReport("process> malloc error size %d\n", alloc_size);
|
OSReport("process> malloc error size %d\n", alloc_size);
|
||||||
|
|
|
||||||
|
|
@ -215,12 +215,7 @@ AnimData *HuSprAnimRead(void *data)
|
||||||
AnimBmpData *bmp;
|
AnimBmpData *bmp;
|
||||||
AnimBankData *bank;
|
AnimBankData *bank;
|
||||||
AnimPatData *pat;
|
AnimPatData *pat;
|
||||||
#ifdef TARGET_PC
|
|
||||||
AnimBmpData *bmp2;
|
|
||||||
AnimBankData *bank2;
|
|
||||||
AnimPatData *pat2;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef TARGET_PC
|
#ifdef TARGET_PC
|
||||||
AnimData *anim = HuMemDirectMallocNum(HEAP_DATA, sizeof(AnimData), MEMORY_DEFAULT_NUM);
|
AnimData *anim = HuMemDirectMallocNum(HEAP_DATA, sizeof(AnimData), MEMORY_DEFAULT_NUM);
|
||||||
byteswap_animdata(data, anim);
|
byteswap_animdata(data, anim);
|
||||||
|
|
@ -231,25 +226,28 @@ AnimData *HuSprAnimRead(void *data)
|
||||||
anim->useNum++;
|
anim->useNum++;
|
||||||
return anim;
|
return anim;
|
||||||
}
|
}
|
||||||
bank = (AnimBankData *)((uintptr_t)anim->bank+(uintptr_t)data);
|
bank = (void *)((uintptr_t)anim->bank+(uintptr_t)data);
|
||||||
#ifdef TARGET_PC
|
#ifdef TARGET_PC
|
||||||
bank2 = HuMemDirectMallocNum(HEAP_DATA, sizeof(AnimBankData), MEMORY_DEFAULT_NUM);
|
bank = HuMemDirectMallocNum(HEAP_DATA, anim->bankNum * sizeof(AnimBankData), MEMORY_DEFAULT_NUM);
|
||||||
byteswap_animbankdata(bank, bank2);
|
for(i=0; i<anim->bankNum; i++) {
|
||||||
bank = bank2;
|
byteswap_animbankdata(&((AnimBankData32b*)((uintptr_t)anim->bank+(uintptr_t)data))[i], &bank[i]);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
anim->bank = bank;
|
anim->bank = bank;
|
||||||
pat = (AnimPatData *)((uintptr_t)anim->pat+(uintptr_t)data);
|
pat = (void *)((uintptr_t)anim->pat+(uintptr_t)data);
|
||||||
#ifdef TARGET_PC
|
#ifdef TARGET_PC
|
||||||
pat2 = HuMemDirectMallocNum(HEAP_DATA, sizeof(AnimPatData), MEMORY_DEFAULT_NUM);
|
pat = HuMemDirectMallocNum(HEAP_DATA, anim->patNum * sizeof(AnimPatData), MEMORY_DEFAULT_NUM);
|
||||||
byteswap_animpatdata(pat, pat2);
|
for(i=0; i<anim->patNum; i++) {
|
||||||
pat = pat2;
|
byteswap_animpatdata(&((AnimPatData32b*)((uintptr_t)anim->pat+(uintptr_t)data))[i], &pat[i]);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
anim->pat = pat;
|
anim->pat = pat;
|
||||||
bmp = (AnimBmpData *)((uintptr_t)anim->bmp+(uintptr_t)data);
|
bmp = (void *)((uintptr_t)anim->bmp+(uintptr_t)data);
|
||||||
#ifdef TARGET_PC
|
#ifdef TARGET_PC
|
||||||
bmp2 = HuMemDirectMallocNum(HEAP_DATA, sizeof(AnimBmpData), MEMORY_DEFAULT_NUM);
|
bmp = HuMemDirectMallocNum(HEAP_DATA, anim->bmpNum * sizeof(AnimBmpData), MEMORY_DEFAULT_NUM);
|
||||||
byteswap_animbmpdata(bmp, bmp2);
|
for(i=0; i<anim->bmpNum; i++) {
|
||||||
bmp = bmp2;
|
byteswap_animbmpdata(&((AnimBmpData32b*)((uintptr_t)anim->bmp+(uintptr_t)data))[i], &bmp[i]);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
anim->bmp = bmp;
|
anim->bmp = bmp;
|
||||||
for(i=0; i<anim->bankNum; i++, bank++) {
|
for(i=0; i<anim->bankNum; i++, bank++) {
|
||||||
|
|
|
||||||
|
|
@ -8,43 +8,6 @@
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include "port/byteswap.h"
|
#include "port/byteswap.h"
|
||||||
|
|
||||||
typedef struct AnimData32b {
|
|
||||||
s16 bankNum;
|
|
||||||
s16 patNum;
|
|
||||||
s16 bmpNum;
|
|
||||||
s16 useNum;
|
|
||||||
|
|
||||||
u32 bank;
|
|
||||||
u32 pat;
|
|
||||||
u32 bmp;
|
|
||||||
} AnimData32b;
|
|
||||||
|
|
||||||
typedef struct AnimBankData32b {
|
|
||||||
s16 timeNum;
|
|
||||||
s16 unk;
|
|
||||||
u32 frame;
|
|
||||||
} AnimBankData32b;
|
|
||||||
|
|
||||||
typedef struct AnimPatData32b {
|
|
||||||
s16 layerNum;
|
|
||||||
s16 centerX;
|
|
||||||
s16 centerY;
|
|
||||||
s16 sizeX;
|
|
||||||
s16 sizeY;
|
|
||||||
u32 layer;
|
|
||||||
} AnimPatData32b;
|
|
||||||
|
|
||||||
typedef struct AnimBmpData32b {
|
|
||||||
u8 pixSize;
|
|
||||||
u8 dataFmt;
|
|
||||||
s16 palNum;
|
|
||||||
s16 sizeX;
|
|
||||||
s16 sizeY;
|
|
||||||
u32 dataSize;
|
|
||||||
u32 palData;
|
|
||||||
u32 data;
|
|
||||||
} AnimBmpData32b;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T> [[nodiscard]] constexpr T bswap16(T val) noexcept
|
template <typename T> [[nodiscard]] constexpr T bswap16(T val) noexcept
|
||||||
|
|
@ -796,24 +759,21 @@ void byteswap_animdata(void *src, AnimData *dest)
|
||||||
sVisitedPtrs.clear();
|
sVisitedPtrs.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void byteswap_animbankdata(void *src, AnimBankData *dest)
|
void byteswap_animbankdata(AnimBankData32b *src, AnimBankData *dest)
|
||||||
{
|
{
|
||||||
auto *bank = reinterpret_cast<AnimBankData32b *>(src);
|
bswap(*src, *src, *dest);
|
||||||
bswap(*bank, *bank, *dest);
|
|
||||||
sVisitedPtrs.clear();
|
sVisitedPtrs.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void byteswap_animpatdata(void *src, AnimPatData *dest)
|
void byteswap_animpatdata(AnimPatData32b *src, AnimPatData *dest)
|
||||||
{
|
{
|
||||||
auto *pat = reinterpret_cast<AnimPatData32b *>(src);
|
bswap(*src, *src, *dest);
|
||||||
bswap(*pat, *pat, *dest);
|
|
||||||
sVisitedPtrs.clear();
|
sVisitedPtrs.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void byteswap_animbmpdata(void *src, AnimBmpData *dest)
|
void byteswap_animbmpdata(AnimBmpData32b *src, AnimBmpData *dest)
|
||||||
{
|
{
|
||||||
auto *bmp = reinterpret_cast<AnimBmpData32b *>(src);
|
bswap(*src, *src, *dest);
|
||||||
bswap(*bmp, *bmp, *dest);
|
|
||||||
sVisitedPtrs.clear();
|
sVisitedPtrs.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue