x64 and hsfload improvements, build every REL (#582)

* Port some of hsfload.c

* More byteswaps in hsfload.c

* Finish hsfload besides cenv

* hsfload fixes

* Some x64 improvements

* More x64 improvements

* 64 bit improvements

* Link in lots of files

* Fix armem bug

* Fix dll killing, load modeseldll

* Fixes, clearing TODOs

* Tons of warning/error fixes

* Linux build fixes

* Add -fPIC flag to fix build on x64 linux

* GXSETARRAY sizes and misc fixes

* More fixes

* Build all RELs

* Implement C_Quat functions

* Fix PAL build
This commit is contained in:
Dávid Balatoni 2025-04-14 18:02:42 +02:00 committed by GitHub
parent bc19d2263b
commit 34cf507e3f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
186 changed files with 3256 additions and 1540 deletions

View file

@ -215,12 +215,7 @@ AnimData *HuSprAnimRead(void *data)
AnimBmpData *bmp;
AnimBankData *bank;
AnimPatData *pat;
#ifdef TARGET_PC
AnimBmpData *bmp2;
AnimBankData *bank2;
AnimPatData *pat2;
#endif
#ifdef TARGET_PC
AnimData *anim = HuMemDirectMallocNum(HEAP_DATA, sizeof(AnimData), MEMORY_DEFAULT_NUM);
byteswap_animdata(data, anim);
@ -231,25 +226,28 @@ AnimData *HuSprAnimRead(void *data)
anim->useNum++;
return anim;
}
bank = (AnimBankData *)((uintptr_t)anim->bank+(uintptr_t)data);
bank = (void *)((uintptr_t)anim->bank+(uintptr_t)data);
#ifdef TARGET_PC
bank2 = HuMemDirectMallocNum(HEAP_DATA, sizeof(AnimBankData), MEMORY_DEFAULT_NUM);
byteswap_animbankdata(bank, bank2);
bank = bank2;
bank = HuMemDirectMallocNum(HEAP_DATA, anim->bankNum * sizeof(AnimBankData), MEMORY_DEFAULT_NUM);
for(i=0; i<anim->bankNum; i++) {
byteswap_animbankdata(&((AnimBankData32b*)((uintptr_t)anim->bank+(uintptr_t)data))[i], &bank[i]);
}
#endif
anim->bank = bank;
pat = (AnimPatData *)((uintptr_t)anim->pat+(uintptr_t)data);
pat = (void *)((uintptr_t)anim->pat+(uintptr_t)data);
#ifdef TARGET_PC
pat2 = HuMemDirectMallocNum(HEAP_DATA, sizeof(AnimPatData), MEMORY_DEFAULT_NUM);
byteswap_animpatdata(pat, pat2);
pat = pat2;
pat = HuMemDirectMallocNum(HEAP_DATA, anim->patNum * sizeof(AnimPatData), MEMORY_DEFAULT_NUM);
for(i=0; i<anim->patNum; i++) {
byteswap_animpatdata(&((AnimPatData32b*)((uintptr_t)anim->pat+(uintptr_t)data))[i], &pat[i]);
}
#endif
anim->pat = pat;
bmp = (AnimBmpData *)((uintptr_t)anim->bmp+(uintptr_t)data);
bmp = (void *)((uintptr_t)anim->bmp+(uintptr_t)data);
#ifdef TARGET_PC
bmp2 = HuMemDirectMallocNum(HEAP_DATA, sizeof(AnimBmpData), MEMORY_DEFAULT_NUM);
byteswap_animbmpdata(bmp, bmp2);
bmp = bmp2;
bmp = HuMemDirectMallocNum(HEAP_DATA, anim->bmpNum * sizeof(AnimBmpData), MEMORY_DEFAULT_NUM);
for(i=0; i<anim->bmpNum; i++) {
byteswap_animbmpdata(&((AnimBmpData32b*)((uintptr_t)anim->bmp+(uintptr_t)data))[i], &bmp[i]);
}
#endif
anim->bmp = bmp;
for(i=0; i<anim->bankNum; i++, bank++) {
@ -754,7 +752,7 @@ void AnimDebug(AnimData *anim)
bank++;
}
bmp = anim->bmp;
for(i=0; i<anim->bmpNum & ANIM_BMP_NUM_MASK; i++) {
for(i = 0; i < anim->bmpNum & ANIM_BMP_NUM_MASK; i++) {
OSReport("BMP%d:\n", i);
OSReport("\tpixSize %d,palNum %d,size (%d,%d)\n", bmp->pixSize, bmp->palNum, bmp->sizeX, bmp->sizeY);
bmp++;