Fixed more even things

This commit is contained in:
KiritoDv
2024-11-10 09:07:58 -06:00
parent ecc6a49f90
commit 304a0a5288
9 changed files with 208 additions and 141 deletions
+1
View File
@@ -7,6 +7,7 @@
typedef struct {
s32 msgId;
u16* msgPtr;
const char* path;
} MsgLookup;
u16* Message_PtrFromId(u16 msgId);
+3 -2
View File
@@ -1131,11 +1131,11 @@ void func_80015FD4(SequencePlayer* seqPlayer) {
return;
}
seqPlayer->tempoAcc += seqPlayer->tempo;
seqPlayer->tempoAcc = seqPlayer->tempoAcc + (s16) seqPlayer->tempoChange;
seqPlayer->tempoAcc += seqPlayer->tempoChange;
if (seqPlayer->tempoAcc < gMaxTempo) {
return;
}
seqPlayer->tempoAcc = (seqPlayer->tempoAcc - gMaxTempo) & 0xFFFF; // fake?
seqPlayer->tempoAcc -= (u16) gMaxTempo;
if (seqPlayer->delay > 1) {
seqPlayer->delay--;
} else {
@@ -1214,6 +1214,7 @@ void func_80015FD4(SequencePlayer* seqPlayer) {
seqPlayer->transposition += (s8) func_800146C0(temp_s0);
break;
case 0xDD:
// LTODO: The original tempo is 0x30 but you can change it to 0x19
seqPlayer->tempo = func_800146C0(temp_s0) * 0x30;
if (seqPlayer->tempo > gMaxTempo) {
seqPlayer->tempo = gMaxTempo;
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -401,7 +401,7 @@ void AudioThread_ProcessCmds(u32 msg) {
case AUDIOCMD_OP_SEQPLAYER_SET_TRANSPOSITION:
player->transposition = cmd->asSbyte;
break;
case 0x46: // AUDIOCMD_OP_SEQPLAYER_SET_IO?
case AUDIOCMD_OP_SEQPLAYER_SET_IO:
player->unk_07[cmd->arg2] = cmd->asSbyte;
break;
}
+9 -3
View File
@@ -7,7 +7,7 @@ u16* Message_PtrFromId(u16 msgId) {
while (lookup->msgId != -1) {
if (lookup->msgId == msgId) {
return lookup->msgPtr;
return lookup->path;
}
lookup++;
}
@@ -19,8 +19,14 @@ u16 Message_IdFromPtr(u16* msgPtr) {
MsgLookup* lookup = (MsgLookup*) LOAD_ASSET(gMsgLookup);
while (lookup->msgPtr != NULL) {
if (lookup->msgPtr == msgPtr) {
return lookup->msgId;
if(GameEngine_OTRSigCheck(msgPtr)){
if(strcmp(((char*) msgPtr) + 7, lookup->path) == 0){
return lookup->msgId;
}
} else {
if (lookup->msgPtr == msgPtr) {
return lookup->msgId;
}
}
lookup++;
}
+2 -2
View File
@@ -57,9 +57,9 @@ void Radio_PlayMessage(u16* msg, RadioCharacterId character) {
TeamId teamId;
s32 pad;
s32 priority;
msg = LOAD_ASSET(msg);
u16* lmsg = LOAD_ASSET(msg);
switch (msg[0]) {
switch (lmsg[0]) {
default:
case MSGCHAR_PRI0:
priority = 0;
@@ -17,9 +17,11 @@ std::shared_ptr<Ship::IResource> ResourceFactoryBinaryMessageLookupV0::ReadResou
for (uint32_t i = 0; i < count - 1; i++) {
SPDLOG_INFO("Reading message lookup table entry {}", i);
auto id = reader->ReadInt32();
auto crc = reader->ReadUInt64();
uint16_t* ptr = LoadChild<uint16_t*>(reader->ReadUInt64());
table->mLookupTable.push_back({ id, ptr });
uint16_t* ptr = LoadChild<uint16_t*>(crc);
const char* name = ResourceGetNameByCrc(crc);
table->mLookupTable.push_back({ id, ptr, strdup(name) });
}
return table;
+17
View File
@@ -10,6 +10,14 @@
namespace fs = std::filesystem;
std::unordered_map<uint32_t, void*> gAudioCache;
void* StoreOnCache(uint32_t addr){
if(gAudioCache.contains(addr)){
return gAudioCache[addr];
}
}
Ship::BinaryReader Audio_MakeReader(const char* resource, u32 offset){
auto data = (char*)ResourceGetDataByName(resource);
auto size = ResourceGetSizeByName(resource);
@@ -51,6 +59,10 @@ EnvelopePoint* Audio_LoadEnvelope(uint32_t addr) {
extern "C" SoundFont* Audio_LoadFont(AudioTableEntry entry) {
auto reader = Audio_MakeReader(gAudioBank, entry.romAddr);
if(gAudioCache.contains(entry.romAddr)){
return (SoundFont*) gAudioCache[entry.romAddr];
}
SoundFont* font = memalloc(SoundFont);
font->numInstruments = (entry.shortData2 >> 8) & 0xFFu;
@@ -80,6 +92,7 @@ extern "C" SoundFont* Audio_LoadFont(AudioTableEntry entry) {
gSampleFontLoadStatus[font->sampleBankId1] = 2;
gAudioCache[entry.romAddr] = font;
return font;
}
@@ -181,6 +194,10 @@ extern "C" Instrument* Audio_LoadInstrument(uint32_t addr, AudioTableEntry entry
}
extern "C" Drum* Audio_LoadDrum(uint32_t addr, AudioTableEntry entry, uint32_t sampleBankID) {
if(addr == 0){
return nullptr;
}
auto reader = Audio_MakeReader(gAudioBank, entry.romAddr + addr);
Drum* drum = memalloc(Drum);
+1
View File
@@ -8,6 +8,7 @@ namespace SF64 {
typedef struct {
s32 msgId;
u16* msgPtr;
const char* path;
} MsgLookup;
class Message : public Ship::Resource<void> {