diff --git a/libultraship/libultraship/libultraship.vcxproj b/libultraship/libultraship/libultraship.vcxproj
index 077a44031..27006aec0 100644
--- a/libultraship/libultraship/libultraship.vcxproj
+++ b/libultraship/libultraship/libultraship.vcxproj
@@ -352,7 +352,6 @@
-
diff --git a/libultraship/libultraship/libultraship.vcxproj.filters b/libultraship/libultraship/libultraship.vcxproj.filters
index 927c96bc9..8cc7aed54 100644
--- a/libultraship/libultraship/libultraship.vcxproj.filters
+++ b/libultraship/libultraship/libultraship.vcxproj.filters
@@ -653,9 +653,6 @@
Header Files\Resources\Factories
-
- Source Files\Lib\dr_libs
-
Source Files\Lib\dr_libs
diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp
index 7de923610..35de6c140 100644
--- a/soh/soh/OTRGlobals.cpp
+++ b/soh/soh/OTRGlobals.cpp
@@ -56,7 +56,6 @@ OTRGlobals::~OTRGlobals() {
struct ExtensionEntry {
std::string path;
- std::string raw;
std::string ext;
};
@@ -81,14 +80,14 @@ extern "C" void OTRAudio_Init()
extern "C" void OTRExtScanner() {
auto lst = *OTRGlobals::Instance->context->GetResourceManager()->ListFiles("*.*").get();
-
+
for (auto& rPath : lst) {
std::vector raw = StringHelper::Split(rPath, ".");
std::string ext = raw[raw.size() - 1];
std::string nPath = rPath.substr(0, rPath.size() - (ext.size() + 1));
replace(nPath.begin(), nPath.end(), '\\', '/');
-
- ExtensionCache[nPath] = { rPath, rPath, ext };
+
+ ExtensionCache[nPath] = { rPath, ext };
}
}
@@ -613,39 +612,40 @@ extern "C" SequenceData ResourceMgr_LoadSeqByName(const char* path)
std::map cachedCustomSFs;
-extern "C" SoundFontSample* ReadCustomSample(ExtensionEntry entry) {
-
+extern "C" SoundFontSample* ReadCustomSample(const char* path) {
+
+ if (!ExtensionCache.contains(path))
+ return nullptr;
+
+ ExtensionEntry entry = ExtensionCache[path];
+
auto sampleRaw = OTRGlobals::Instance->context->GetResourceManager()->LoadFile(entry.path);
uint32_t* strem = (uint32_t*)sampleRaw->buffer.get();
uint8_t* strem2 = (uint8_t*)strem;
SoundFontSample* sampleC = new SoundFontSample;
-
- if (entry.ext == "wav") {
- drwav wav;
- drwav_init_memory_with_metadata(&wav, strem2, sampleRaw->dwBufferSize, DRWAV_SEQUENTIAL, NULL);
+ if (entry.ext == "wav") {
drwav_uint32 channels;
drwav_uint32 sampleRate;
drwav_uint64 totalPcm;
- drmp3_int16* pcmData = drwav_open_memory_and_read_pcm_frames_s16(strem2, sampleRaw->dwBufferSize, &channels,
- &sampleRate, &totalPcm, NULL);
-
+ 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;
sampleC->codec = CODEC_S16;
- sampleC->loop = (AdpcmLoop*)malloc(sizeof(AdpcmLoop));
+ sampleC->loop = new AdpcmLoop;
sampleC->loop->start = 0;
sampleC->loop->end = sampleC->size - 1;
sampleC->loop->count = 0;
sampleC->sampleRateMagicValue = 'RIFF';
sampleC->sampleRate = sampleRate;
- cachedCustomSFs[entry.raw] = sampleC;
+ cachedCustomSFs[path] = sampleC;
return sampleC;
} else if (entry.ext == "mp3") {
-
+
drmp3_config mp3Info;
drmp3_uint64 totalPcm;
drmp3_int16* pcmData =
@@ -655,17 +655,17 @@ extern "C" SoundFontSample* ReadCustomSample(ExtensionEntry entry) {
sampleC->sampleAddr = (uint8_t*)pcmData;
sampleC->codec = CODEC_S16;
- sampleC->loop = (AdpcmLoop*)malloc(sizeof(AdpcmLoop));
+ sampleC->loop = new AdpcmLoop;
sampleC->loop->start = 0;
sampleC->loop->end = sampleC->size;
sampleC->loop->count = 0;
sampleC->sampleRateMagicValue = 'RIFF';
sampleC->sampleRate = mp3Info.sampleRate;
- cachedCustomSFs[entry.raw] = sampleC;
+ cachedCustomSFs[path] = sampleC;
return sampleC;
}
-
+
return nullptr;
}
@@ -676,13 +676,11 @@ extern "C" SoundFontSample* ResourceMgr_LoadAudioSample(const char* path)
if (cachedCustomSFs.find(path) != cachedCustomSFs.end())
return cachedCustomSFs[path];
-
- if (ExtensionCache.contains(path)) {
- SoundFontSample* sample = ReadCustomSample(ExtensionCache[path]);
-
- if (sample != nullptr)
- return sample;
- }
+
+ SoundFontSample* cSample = ReadCustomSample(path);
+
+ if (cSample != nullptr)
+ return cSample;
auto sample = std::static_pointer_cast(
OTRGlobals::Instance->context->GetResourceManager()->LoadResource(path));
@@ -697,7 +695,7 @@ extern "C" SoundFontSample* ResourceMgr_LoadAudioSample(const char* path)
}
else
{
- SoundFontSample* sampleC = (SoundFontSample*)malloc(sizeof(SoundFontSample));
+ SoundFontSample* sampleC = new SoundFontSample;
sampleC->sampleAddr = sample->data.data();
@@ -707,14 +705,14 @@ extern "C" SoundFontSample* ResourceMgr_LoadAudioSample(const char* path)
sampleC->unk_bit26 = sample->unk_bit26;
sampleC->unk_bit25 = sample->unk_bit25;
- sampleC->book = (AdpcmBook*)malloc(sizeof(AdpcmBook) + (sample->book.books.size() * sizeof(int16_t)));
+ sampleC->book = new AdpcmBook[sample->book.books.size() * sizeof(int16_t)];
sampleC->book->npredictors = sample->book.npredictors;
sampleC->book->order = sample->book.order;
for (int i = 0; i < sample->book.books.size(); i++)
sampleC->book->book[i] = sample->book.books[i];
- sampleC->loop = (AdpcmLoop*)malloc(sizeof(AdpcmLoop));
+ sampleC->loop = new AdpcmLoop;
sampleC->loop->start = sample->loop.start;
sampleC->loop->end = sample->loop.end;
sampleC->loop->count = sample->loop.count;