diff --git a/libultraship/libultraship/DisplayList.cpp b/libultraship/libultraship/DisplayList.cpp index 64c578351..14f9f8410 100644 --- a/libultraship/libultraship/DisplayList.cpp +++ b/libultraship/libultraship/DisplayList.cpp @@ -12,12 +12,11 @@ namespace Ship while (reader->GetBaseAddress() % 8 != 0) reader->ReadByte(); - if (sizeof(uintptr_t) < 8) + while (true) { - while (true) - { - uint64_t data = reader->ReadUInt64(); + uint64_t data = reader->ReadUInt64(); + if (sizeof(uintptr_t) < 8){ dl->instructions.push_back(data); uint8_t opcode = data >> 24; @@ -28,13 +27,7 @@ namespace Ship if (opcode == G_ENDDL) break; - } - } - else - { - while (true) - { - uint64_t data = reader->ReadUInt64(); + } else { uint32_t w0 = (uint32_t)data; uint32_t w1 = (uint32_t)(data >> 32); diff --git a/libultraship/libultraship/Lib/Fast3D/U64/PR/ultra64/gbi.h b/libultraship/libultraship/Lib/Fast3D/U64/PR/ultra64/gbi.h index fb85d1fac..2456b9ea2 100644 --- a/libultraship/libultraship/Lib/Fast3D/U64/PR/ultra64/gbi.h +++ b/libultraship/libultraship/Lib/Fast3D/U64/PR/ultra64/gbi.h @@ -1646,8 +1646,6 @@ typedef struct { #ifdef __cplusplus static_assert(sizeof(Gwords) == 2 * sizeof(void*), "Display list size is bad"); -#else -//_Static_assert(sizeof(Gwords) == 2 * sizeof(void*), "fail"); #endif /* diff --git a/libultraship/libultraship/SDLAudioPlayer.cpp b/libultraship/libultraship/SDLAudioPlayer.cpp index a2f679581..3c15f720e 100644 --- a/libultraship/libultraship/SDLAudioPlayer.cpp +++ b/libultraship/libultraship/SDLAudioPlayer.cpp @@ -2,40 +2,40 @@ #include "spdlog/spdlog.h" namespace Ship { - bool SDLAudioPlayer::Init(void) { - if (SDL_Init(SDL_INIT_AUDIO) != 0) { - SPDLOG_ERROR("SDL init error: %s\n", SDL_GetError()); - return false; - } - SDL_AudioSpec want, have; - SDL_zero(want); - want.freq = this->GetSampleRate(); - want.format = AUDIO_S16; - want.channels = 2; - want.samples = 1024; - want.callback = NULL; - Device = SDL_OpenAudioDevice(NULL, 0, &want, &have, 0); - if (Device == 0) { - SPDLOG_ERROR("SDL_OpenAudio error: {}", SDL_GetError()); - return false; - } - SDL_PauseAudioDevice(Device, 0); - return true; - } + bool SDLAudioPlayer::Init(void) { + if (SDL_Init(SDL_INIT_AUDIO) != 0) { + SPDLOG_ERROR("SDL init error: %s\n", SDL_GetError()); + return false; + } + SDL_AudioSpec want, have; + SDL_zero(want); + want.freq = this->GetSampleRate(); + want.format = AUDIO_S16; + want.channels = 2; + want.samples = 1024; + want.callback = NULL; + Device = SDL_OpenAudioDevice(NULL, 0, &want, &have, 0); + if (Device == 0) { + SPDLOG_ERROR("SDL_OpenAudio error: {}", SDL_GetError()); + return false; + } + SDL_PauseAudioDevice(Device, 0); + return true; + } - int SDLAudioPlayer::Buffered(void) { - // 4 is sizeof(int16_t) * num_channels (2 for stereo) - return SDL_GetQueuedAudioSize(Device) / 4; - } + int SDLAudioPlayer::Buffered(void) { + // 4 is sizeof(int16_t) * num_channels (2 for stereo) + return SDL_GetQueuedAudioSize(Device) / 4; + } - int SDLAudioPlayer::GetDesiredBuffered(void) { - return 2480; - } + int SDLAudioPlayer::GetDesiredBuffered(void) { + return 2480; + } - void SDLAudioPlayer::Play(const uint8_t* Buffer, uint32_t BufferLen) { - if (Buffered() < 6000) { - // Don't fill the audio buffer too much in case this happens - SDL_QueueAudio(Device, Buffer, BufferLen); - } - } + void SDLAudioPlayer::Play(const uint8_t* Buffer, uint32_t BufferLen) { + if (Buffered() < 6000) { + // Don't fill the audio buffer too much in case this happens + SDL_QueueAudio(Device, Buffer, BufferLen); + } + } } diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index c9f289c7a..b1e7b30ec 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -356,7 +356,7 @@ extern "C" char** ResourceMgr_ListFiles(const char* searchMask, int* resultSize) auto lst = OTRGlobals::Instance->context->GetResourceManager()->ListFiles(searchMask); char** result = (char**)malloc(lst->size() * sizeof(char*)); - for (int i = 0; i < lst->size(); i++) { + for (size_t i = 0; i < lst->size(); i++) { char* str = (char*)malloc(lst.get()[0][i].size() + 1); memcpy(str, lst.get()[0][i].data(), lst.get()[0][i].size()); str[lst.get()[0][i].size()] = '\0'; @@ -478,7 +478,7 @@ extern "C" char* ResourceMgr_LoadArrayByNameAsVec3s(const char* path) { { Vec3s* data = (Vec3s*)malloc(sizeof(Vec3s) * res->scalars.size()); - for (int i = 0; i < res->scalars.size(); i += 3) { + for (size_t i = 0; i < res->scalars.size(); i += 3) { data[(i / 3)].x = res->scalars[i + 0].s16; data[(i / 3)].y = res->scalars[i + 1].s16; data[(i / 3)].z = res->scalars[i + 2].s16; @@ -510,7 +510,7 @@ extern "C" CollisionHeader* ResourceMgr_LoadColByName(const char* path) colHeader->vtxList = (Vec3s*)malloc(sizeof(Vec3s) * colRes->vertices.size()); colHeader->numVertices = colRes->vertices.size(); - for (int i = 0; i < colRes->vertices.size(); i++) + for (size_t i = 0; i < colRes->vertices.size(); i++) { colHeader->vtxList[i].x = colRes->vertices[i].x; colHeader->vtxList[i].y = colRes->vertices[i].y; @@ -520,7 +520,7 @@ extern "C" CollisionHeader* ResourceMgr_LoadColByName(const char* path) colHeader->polyList = (CollisionPoly*)malloc(sizeof(CollisionPoly) * colRes->polygons.size()); colHeader->numPolygons = colRes->polygons.size(); - for (int i = 0; i < colRes->polygons.size(); i++) + for (size_t i = 0; i < colRes->polygons.size(); i++) { colHeader->polyList[i].type = colRes->polygons[i].type; colHeader->polyList[i].flags_vIA = colRes->polygons[i].vtxA; @@ -534,7 +534,7 @@ extern "C" CollisionHeader* ResourceMgr_LoadColByName(const char* path) colHeader->surfaceTypeList = (SurfaceType*)malloc(colRes->polygonTypes.size() * sizeof(SurfaceType)); - for (int i = 0; i < colRes->polygonTypes.size(); i++) + for (size_t i = 0; i < colRes->polygonTypes.size(); i++) { colHeader->surfaceTypeList[i].data[0] = colRes->polygonTypes[i] >> 32; colHeader->surfaceTypeList[i].data[1] = colRes->polygonTypes[i] & 0xFFFFFFFF; @@ -542,7 +542,7 @@ extern "C" CollisionHeader* ResourceMgr_LoadColByName(const char* path) colHeader->cameraDataList = (CamData*)malloc(sizeof(CamData) * colRes->camData->entries.size()); - for (int i = 0; i < colRes->camData->entries.size(); i++) + for (size_t i = 0; i < colRes->camData->entries.size(); i++) { colHeader->cameraDataList[i].cameraSType = colRes->camData->entries[i]->cameraSType; colHeader->cameraDataList[i].numCameras = colRes->camData->entries[i]->numData; @@ -629,7 +629,7 @@ extern "C" SoundFontSample* ReadCustomSample(const char* path) { drwav_uint32 channels; drwav_uint32 sampleRate; drwav_uint64 totalPcm; - drmp3_int16* pcmData = + drmp3_int16* pcmData = drwav_open_memory_and_read_pcm_frames_s16(strem2, sampleRaw->dwBufferSize, &channels, &sampleRate, &totalPcm, NULL); sampleC->size = totalPcm; sampleC->sampleAddr = (uint8_t*)pcmData; @@ -645,7 +645,6 @@ extern "C" SoundFontSample* ReadCustomSample(const char* path) { cachedCustomSFs[path] = sampleC; return sampleC; } else if (entry.ext == "mp3") { - drmp3_config mp3Info; drmp3_uint64 totalPcm; drmp3_int16* pcmData = @@ -709,7 +708,7 @@ extern "C" SoundFontSample* ResourceMgr_LoadAudioSample(const char* path) sampleC->book->npredictors = sample->book.npredictors; sampleC->book->order = sample->book.order; - for (int i = 0; i < sample->book.books.size(); i++) + for (size_t i = 0; i < sample->book.books.size(); i++) sampleC->book->book[i] = sample->book.books[i]; sampleC->loop = new AdpcmLoop; @@ -720,7 +719,7 @@ extern "C" SoundFontSample* ResourceMgr_LoadAudioSample(const char* path) for (int i = 0; i < 16; i++) sampleC->loop->state[i] = 0; - for (int i = 0; i < sample->loop.states.size(); i++) + for (size_t i = 0; i < sample->loop.states.size(); i++) sampleC->loop->state[i] = sample->loop.states[i]; sample->cachedGameAsset = sampleC; @@ -752,7 +751,7 @@ extern "C" SoundFont* ResourceMgr_LoadAudioSoundFont(const char* path) { soundFontC->drums = (Drum**)malloc(sizeof(Drum*) * soundFont->drums.size()); - for (int i = 0; i < soundFont->drums.size(); i++) + for (size_t i = 0; i < soundFont->drums.size(); i++) { Drum* drum = (Drum*)malloc(sizeof(Drum)); @@ -766,7 +765,7 @@ extern "C" SoundFont* ResourceMgr_LoadAudioSoundFont(const char* path) { { drum->envelope = (AdsrEnvelope*)malloc(sizeof(AdsrEnvelope) * soundFont->drums[i].env.size()); - for (int k = 0; k < soundFont->drums[i].env.size(); k++) + for (size_t k = 0; k < soundFont->drums[i].env.size(); k++) { drum->envelope[k].delay = BOMSWAP16(soundFont->drums[i].env[k]->delay); drum->envelope[k].arg = BOMSWAP16(soundFont->drums[i].env[k]->arg); @@ -781,7 +780,7 @@ extern "C" SoundFont* ResourceMgr_LoadAudioSoundFont(const char* path) { soundFontC->instruments = (Instrument**)malloc(sizeof(Instrument*) * soundFont->instruments.size()); - for (int i = 0; i < soundFont->instruments.size(); i++) { + for (size_t i = 0; i < soundFont->instruments.size(); i++) { if (soundFont->instruments[i].isValidEntry) { @@ -843,7 +842,7 @@ extern "C" SoundFont* ResourceMgr_LoadAudioSoundFont(const char* path) { soundFontC->soundEffects = (SoundFontSound*)malloc(sizeof(SoundFontSound) * soundFont->soundEffects.size()); - for (int i = 0; i < soundFont->soundEffects.size(); i++) + for (size_t i = 0; i < soundFont->soundEffects.size(); i++) { soundFontC->soundEffects[i].sample = ResourceMgr_LoadAudioSample(soundFont->soundEffects[i]->sampleFileName.c_str()); soundFontC->soundEffects[i].tuning = soundFont->soundEffects[i]->tuning; @@ -887,12 +886,12 @@ extern "C" AnimationHeaderCommon* ResourceMgr_LoadAnimByName(const char* path) { animNormal->common.frameCount = res->frameCount; animNormal->frameData = (int16_t*)malloc(res->rotationValues.size() * sizeof(int16_t)); - for (int i = 0; i < res->rotationValues.size(); i++) + for (size_t i = 0; i < res->rotationValues.size(); i++) animNormal->frameData[i] = res->rotationValues[i]; animNormal->jointIndices = (JointIndex*)malloc(res->rotationIndices.size() * sizeof(Vec3s)); - for (int i = 0; i < res->rotationIndices.size(); i++) { + for (size_t i = 0; i < res->rotationIndices.size(); i++) { animNormal->jointIndices[i].x = res->rotationIndices[i].x; animNormal->jointIndices[i].y = res->rotationIndices[i].y; animNormal->jointIndices[i].z = res->rotationIndices[i].z; @@ -908,12 +907,12 @@ extern "C" AnimationHeaderCommon* ResourceMgr_LoadAnimByName(const char* path) { animCurve->copyValues = (s16*)malloc(res->copyValuesArr.size() * sizeof(s16)); - for (int i = 0; i < res->copyValuesArr.size(); i++) + for (size_t i = 0; i < res->copyValuesArr.size(); i++) animCurve->copyValues[i] = res->copyValuesArr[i]; animCurve->transformData = (TransformData*)malloc(res->transformDataArr.size() * sizeof(TransformData)); - for (int i = 0; i < res->transformDataArr.size(); i++) + for (size_t i = 0; i < res->transformDataArr.size(); i++) { animCurve->transformData[i].unk_00 = res->transformDataArr[i].unk_00; animCurve->transformData[i].unk_02 = res->transformDataArr[i].unk_02; @@ -923,7 +922,7 @@ extern "C" AnimationHeaderCommon* ResourceMgr_LoadAnimByName(const char* path) { } animCurve->refIndex = (u8*)malloc(res->refIndexArr.size()); - for (int i = 0; i < res->refIndexArr.size(); i++) + for (size_t i = 0; i < res->refIndexArr.size(); i++) animCurve->refIndex[i] = res->refIndexArr[i]; anim = (AnimationHeaderCommon*)animCurve; @@ -973,7 +972,7 @@ extern "C" SkeletonHeader* ResourceMgr_LoadSkeletonByName(const char* path) { baseHeader->segment = (void**)malloc(sizeof(StandardLimb*) * res->limbTable.size()); } - for (int i = 0; i < res->limbTable.size(); i++) { + for (size_t i = 0; i < res->limbTable.size(); i++) { std::string limbStr = res->limbTable[i]; auto limb = std::static_pointer_cast( OTRGlobals::Instance->context->GetResourceManager()->LoadResource(limbStr.c_str())); @@ -1070,7 +1069,7 @@ extern "C" SkeletonHeader* ResourceMgr_LoadSkeletonByName(const char* path) { animData->limbModifications = new SkinLimbModif[animData->limbModifCount]; animData->dlist = ResourceMgr_LoadGfxByName(limb->skinDList2.c_str()); - for (int i = 0; i < skinDataSize; i++) + for (size_t i = 0; i < skinDataSize; i++) { animData->limbModifications[i].vtxCount = limb->skinData[i].unk_8_arr.size(); animData->limbModifications[i].transformCount = limb->skinData[i].unk_C_arr.size(); @@ -1223,7 +1222,7 @@ extern "C" uint32_t OTRGetCurrentHeight() { extern "C" void OTRControllerCallback(ControllerCallback* controller) { auto controllers = OTRGlobals::Instance->context->GetWindow()->Controllers; - for (int i = 0; i < controllers.size(); i++) { + for (size_t i = 0; i < controllers.size(); i++) { for (int j = 0; j < controllers[i].size(); j++) { OTRGlobals::Instance->context->GetWindow()->Controllers[i][j]->WriteToSource(controller); } diff --git a/soh/src/code/z_bgcheck.c b/soh/src/code/z_bgcheck.c index f305eab23..130351f42 100644 --- a/soh/src/code/z_bgcheck.c +++ b/soh/src/code/z_bgcheck.c @@ -1585,8 +1585,8 @@ void BgCheck_Allocate(CollisionContext* colCtx, GlobalContext* globalCtx, Collis BgCheck_SetSubdivisionDimension(colCtx->minBounds.z, colCtx->subdivAmount.z, &colCtx->maxBounds.z, &colCtx->subdivLength.z, &colCtx->subdivLengthInv.z); -#ifdef _SOH64 - colCtx->memSize *= (sizeof(void*) / 4); +#ifdef _SOH64 // BGCheck needs more memory on 64 bits because it crashes on some areas + colCtx->memSize *= 2; #endif memSize = colCtx->subdivAmount.x * sizeof(StaticLookup) * colCtx->subdivAmount.y * colCtx->subdivAmount.z +