mirror of
https://github.com/izzy2lost/Ghostship.git
synced 2026-06-19 01:17:03 -07:00
Removed audio table files to allow multiversion support
This commit is contained in:
@@ -1,129 +0,0 @@
|
||||
#pragma once
|
||||
#include "align_asset_macro.h"
|
||||
|
||||
#define dgBank00 "__OTR__sound/banks/00_bank"
|
||||
static const ALIGN_ASSET(2) char gBank00[] = dgBank00;
|
||||
|
||||
#define dgBank01 "__OTR__sound/banks/01_bank"
|
||||
static const ALIGN_ASSET(2) char gBank01[] = dgBank01;
|
||||
|
||||
#define dgBank02 "__OTR__sound/banks/02_bank"
|
||||
static const ALIGN_ASSET(2) char gBank02[] = dgBank02;
|
||||
|
||||
#define dgBank03 "__OTR__sound/banks/03_bank"
|
||||
static const ALIGN_ASSET(2) char gBank03[] = dgBank03;
|
||||
|
||||
#define dgBank04 "__OTR__sound/banks/04_bank"
|
||||
static const ALIGN_ASSET(2) char gBank04[] = dgBank04;
|
||||
|
||||
#define dgBank05 "__OTR__sound/banks/05_bank"
|
||||
static const ALIGN_ASSET(2) char gBank05[] = dgBank05;
|
||||
|
||||
#define dgBank06 "__OTR__sound/banks/06_bank"
|
||||
static const ALIGN_ASSET(2) char gBank06[] = dgBank06;
|
||||
|
||||
#define dgBank07 "__OTR__sound/banks/07_bank"
|
||||
static const ALIGN_ASSET(2) char gBank07[] = dgBank07;
|
||||
|
||||
#define dgBank08 "__OTR__sound/banks/08_bank"
|
||||
static const ALIGN_ASSET(2) char gBank08[] = dgBank08;
|
||||
|
||||
#define dgBank09 "__OTR__sound/banks/09_bank"
|
||||
static const ALIGN_ASSET(2) char gBank09[] = dgBank09;
|
||||
|
||||
#define dgBank0A "__OTR__sound/banks/0A_bank"
|
||||
static const ALIGN_ASSET(2) char gBank0A[] = dgBank0A;
|
||||
|
||||
#define dgBank0B "__OTR__sound/banks/0B_bank"
|
||||
static const ALIGN_ASSET(2) char gBank0B[] = dgBank0B;
|
||||
|
||||
#define dgBank0C "__OTR__sound/banks/0C_bank"
|
||||
static const ALIGN_ASSET(2) char gBank0C[] = dgBank0C;
|
||||
|
||||
#define dgBank0D "__OTR__sound/banks/0D_bank"
|
||||
static const ALIGN_ASSET(2) char gBank0D[] = dgBank0D;
|
||||
|
||||
#define dgBank0E "__OTR__sound/banks/0E_bank"
|
||||
static const ALIGN_ASSET(2) char gBank0E[] = dgBank0E;
|
||||
|
||||
#define dgBank0F "__OTR__sound/banks/0F_bank"
|
||||
static const ALIGN_ASSET(2) char gBank0F[] = dgBank0F;
|
||||
|
||||
#define dgBank10 "__OTR__sound/banks/10_bank"
|
||||
static const ALIGN_ASSET(2) char gBank10[] = dgBank10;
|
||||
|
||||
#define dgBank11 "__OTR__sound/banks/11_bank"
|
||||
static const ALIGN_ASSET(2) char gBank11[] = dgBank11;
|
||||
|
||||
#define dgBank12 "__OTR__sound/banks/12_bank"
|
||||
static const ALIGN_ASSET(2) char gBank12[] = dgBank12;
|
||||
|
||||
#define dgBank13 "__OTR__sound/banks/13_bank"
|
||||
static const ALIGN_ASSET(2) char gBank13[] = dgBank13;
|
||||
|
||||
#define dgBank14 "__OTR__sound/banks/14_bank"
|
||||
static const ALIGN_ASSET(2) char gBank14[] = dgBank14;
|
||||
|
||||
#define dgBank15 "__OTR__sound/banks/15_bank"
|
||||
static const ALIGN_ASSET(2) char gBank15[] = dgBank15;
|
||||
|
||||
#define dgBank16 "__OTR__sound/banks/16_bank"
|
||||
static const ALIGN_ASSET(2) char gBank16[] = dgBank16;
|
||||
|
||||
#define dgBank17 "__OTR__sound/banks/17_bank"
|
||||
static const ALIGN_ASSET(2) char gBank17[] = dgBank17;
|
||||
|
||||
#define dgBank18 "__OTR__sound/banks/18_bank"
|
||||
static const ALIGN_ASSET(2) char gBank18[] = dgBank18;
|
||||
|
||||
#define dgBank19 "__OTR__sound/banks/19_bank"
|
||||
static const ALIGN_ASSET(2) char gBank19[] = dgBank19;
|
||||
|
||||
#define dgBank1A "__OTR__sound/banks/1A_bank"
|
||||
static const ALIGN_ASSET(2) char gBank1A[] = dgBank1A;
|
||||
|
||||
#define dgBank1B "__OTR__sound/banks/1B_bank"
|
||||
static const ALIGN_ASSET(2) char gBank1B[] = dgBank1B;
|
||||
|
||||
#define dgBank1C "__OTR__sound/banks/1C_bank"
|
||||
static const ALIGN_ASSET(2) char gBank1C[] = dgBank1C;
|
||||
|
||||
#define dgBank1D "__OTR__sound/banks/1D_bank"
|
||||
static const ALIGN_ASSET(2) char gBank1D[] = dgBank1D;
|
||||
|
||||
#define dgBank1E "__OTR__sound/banks/1E_bank"
|
||||
static const ALIGN_ASSET(2) char gBank1E[] = dgBank1E;
|
||||
|
||||
#define dgBank1F "__OTR__sound/banks/1F_bank"
|
||||
static const ALIGN_ASSET(2) char gBank1F[] = dgBank1F;
|
||||
|
||||
#define dgBank20 "__OTR__sound/banks/20_bank"
|
||||
static const ALIGN_ASSET(2) char gBank20[] = dgBank20;
|
||||
|
||||
#define dgBank21 "__OTR__sound/banks/21_bank"
|
||||
static const ALIGN_ASSET(2) char gBank21[] = dgBank21;
|
||||
|
||||
#define dgBank22 "__OTR__sound/banks/22_bank"
|
||||
static const ALIGN_ASSET(2) char gBank22[] = dgBank22;
|
||||
|
||||
#define dgBank23 "__OTR__sound/banks/23_bank"
|
||||
static const ALIGN_ASSET(2) char gBank23[] = dgBank23;
|
||||
|
||||
#define dgBank24 "__OTR__sound/banks/24_bank"
|
||||
static const ALIGN_ASSET(2) char gBank24[] = dgBank24;
|
||||
|
||||
#define dgBank25 "__OTR__sound/banks/25_bank"
|
||||
static const ALIGN_ASSET(2) char gBank25[] = dgBank25;
|
||||
|
||||
static const char* gBankTable[] = {
|
||||
gBank00, gBank01, gBank02, gBank03,
|
||||
gBank04, gBank05, gBank06, gBank07,
|
||||
gBank08, gBank09, gBank0A, gBank0B,
|
||||
gBank0C, gBank0D, gBank0E, gBank0F,
|
||||
gBank10, gBank11, gBank12, gBank13,
|
||||
gBank14, gBank15, gBank16, gBank17,
|
||||
gBank18, gBank19, gBank1A, gBank1B,
|
||||
gBank1C, gBank1D, gBank1E, gBank1F,
|
||||
gBank20, gBank21, gBank22, gBank23,
|
||||
gBank24, gBank25,
|
||||
};
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,119 +0,0 @@
|
||||
#pragma once
|
||||
#include "align_asset_macro.h"
|
||||
|
||||
#define dgSequence00 "__OTR__sound/sequences/00_sound_player"
|
||||
static const ALIGN_ASSET(2) char gSequence00[] = dgSequence00;
|
||||
|
||||
#define dgSequence01 "__OTR__sound/sequences/01_cutscene_collect_star"
|
||||
static const ALIGN_ASSET(2) char gSequence01[] = dgSequence01;
|
||||
|
||||
#define dgSequence02 "__OTR__sound/sequences/02_menu_title_screen"
|
||||
static const ALIGN_ASSET(2) char gSequence02[] = dgSequence02;
|
||||
|
||||
#define dgSequence03 "__OTR__sound/sequences/03_level_grass"
|
||||
static const ALIGN_ASSET(2) char gSequence03[] = dgSequence03;
|
||||
|
||||
#define dgSequence04 "__OTR__sound/sequences/04_level_inside_castle"
|
||||
static const ALIGN_ASSET(2) char gSequence04[] = dgSequence04;
|
||||
|
||||
#define dgSequence05 "__OTR__sound/sequences/05_level_water"
|
||||
static const ALIGN_ASSET(2) char gSequence05[] = dgSequence05;
|
||||
|
||||
#define dgSequence06 "__OTR__sound/sequences/06_level_hot"
|
||||
static const ALIGN_ASSET(2) char gSequence06[] = dgSequence06;
|
||||
|
||||
#define dgSequence07 "__OTR__sound/sequences/07_level_boss_koopa"
|
||||
static const ALIGN_ASSET(2) char gSequence07[] = dgSequence07;
|
||||
|
||||
#define dgSequence08 "__OTR__sound/sequences/08_level_snow"
|
||||
static const ALIGN_ASSET(2) char gSequence08[] = dgSequence08;
|
||||
|
||||
#define dgSequence09 "__OTR__sound/sequences/09_level_slide"
|
||||
static const ALIGN_ASSET(2) char gSequence09[] = dgSequence09;
|
||||
|
||||
#define dgSequence0A "__OTR__sound/sequences/0A_level_spooky"
|
||||
static const ALIGN_ASSET(2) char gSequence0A[] = dgSequence0A;
|
||||
|
||||
#define dgSequence0B "__OTR__sound/sequences/0B_event_piranha_plant"
|
||||
static const ALIGN_ASSET(2) char gSequence0B[] = dgSequence0B;
|
||||
|
||||
#define dgSequence0C "__OTR__sound/sequences/0C_level_underground"
|
||||
static const ALIGN_ASSET(2) char gSequence0C[] = dgSequence0C;
|
||||
|
||||
#define dgSequence0D "__OTR__sound/sequences/0D_menu_star_select"
|
||||
static const ALIGN_ASSET(2) char gSequence0D[] = dgSequence0D;
|
||||
|
||||
#define dgSequence0E "__OTR__sound/sequences/0E_event_powerup"
|
||||
static const ALIGN_ASSET(2) char gSequence0E[] = dgSequence0E;
|
||||
|
||||
#define dgSequence0F "__OTR__sound/sequences/0F_event_metal_cap"
|
||||
static const ALIGN_ASSET(2) char gSequence0F[] = dgSequence0F;
|
||||
|
||||
#define dgSequence10 "__OTR__sound/sequences/10_event_koopa_message"
|
||||
static const ALIGN_ASSET(2) char gSequence10[] = dgSequence10;
|
||||
|
||||
#define dgSequence11 "__OTR__sound/sequences/11_level_koopa_road"
|
||||
static const ALIGN_ASSET(2) char gSequence11[] = dgSequence11;
|
||||
|
||||
#define dgSequence12 "__OTR__sound/sequences/12_event_high_score"
|
||||
static const ALIGN_ASSET(2) char gSequence12[] = dgSequence12;
|
||||
|
||||
#define dgSequence13 "__OTR__sound/sequences/13_event_merry_go_round"
|
||||
static const ALIGN_ASSET(2) char gSequence13[] = dgSequence13;
|
||||
|
||||
#define dgSequence14 "__OTR__sound/sequences/14_event_race"
|
||||
static const ALIGN_ASSET(2) char gSequence14[] = dgSequence14;
|
||||
|
||||
#define dgSequence15 "__OTR__sound/sequences/15_cutscene_star_spawn"
|
||||
static const ALIGN_ASSET(2) char gSequence15[] = dgSequence15;
|
||||
|
||||
#define dgSequence16 "__OTR__sound/sequences/16_event_boss"
|
||||
static const ALIGN_ASSET(2) char gSequence16[] = dgSequence16;
|
||||
|
||||
#define dgSequence17 "__OTR__sound/sequences/17_cutscene_collect_key"
|
||||
static const ALIGN_ASSET(2) char gSequence17[] = dgSequence17;
|
||||
|
||||
#define dgSequence18 "__OTR__sound/sequences/18_event_endless_stairs"
|
||||
static const ALIGN_ASSET(2) char gSequence18[] = dgSequence18;
|
||||
|
||||
#define dgSequence19 "__OTR__sound/sequences/19_level_boss_koopa_final"
|
||||
static const ALIGN_ASSET(2) char gSequence19[] = dgSequence19;
|
||||
|
||||
#define dgSequence1A "__OTR__sound/sequences/1A_cutscene_credits"
|
||||
static const ALIGN_ASSET(2) char gSequence1A[] = dgSequence1A;
|
||||
|
||||
#define dgSequence1B "__OTR__sound/sequences/1B_event_solve_puzzle"
|
||||
static const ALIGN_ASSET(2) char gSequence1B[] = dgSequence1B;
|
||||
|
||||
#define dgSequence1C "__OTR__sound/sequences/1C_event_toad_message"
|
||||
static const ALIGN_ASSET(2) char gSequence1C[] = dgSequence1C;
|
||||
|
||||
#define dgSequence1D "__OTR__sound/sequences/1D_event_peach_message"
|
||||
static const ALIGN_ASSET(2) char gSequence1D[] = dgSequence1D;
|
||||
|
||||
#define dgSequence1E "__OTR__sound/sequences/1E_cutscene_intro"
|
||||
static const ALIGN_ASSET(2) char gSequence1E[] = dgSequence1E;
|
||||
|
||||
#define dgSequence1F "__OTR__sound/sequences/1F_cutscene_victory"
|
||||
static const ALIGN_ASSET(2) char gSequence1F[] = dgSequence1F;
|
||||
|
||||
#define dgSequence20 "__OTR__sound/sequences/20_cutscene_ending"
|
||||
static const ALIGN_ASSET(2) char gSequence20[] = dgSequence20;
|
||||
|
||||
#define dgSequence21 "__OTR__sound/sequences/21_menu_file_select"
|
||||
static const ALIGN_ASSET(2) char gSequence21[] = dgSequence21;
|
||||
|
||||
#define dgSequence22 "__OTR__sound/sequences/22_cutscene_lakitu"
|
||||
static const ALIGN_ASSET(2) char gSequence22[] = dgSequence22;
|
||||
|
||||
static const char* gSequenceTable[] = {
|
||||
gSequence00, gSequence01, gSequence02, gSequence03,
|
||||
gSequence04, gSequence05, gSequence06, gSequence07,
|
||||
gSequence08, gSequence09, gSequence0A, gSequence0B,
|
||||
gSequence0C, gSequence0D, gSequence0E, gSequence0F,
|
||||
gSequence10, gSequence11, gSequence12, gSequence13,
|
||||
gSequence14, gSequence15, gSequence16, gSequence17,
|
||||
gSequence18, gSequence19, gSequence1A, gSequence1B,
|
||||
gSequence1C, gSequence1D, gSequence1E, gSequence1F,
|
||||
gSequence20, gSequence21, gSequence22,
|
||||
};
|
||||
@@ -222,7 +222,7 @@ struct AudioBank {
|
||||
|
||||
struct CtlEntry {
|
||||
#ifndef VERSION_SH
|
||||
u8 unused;
|
||||
u8 bankId;
|
||||
#endif
|
||||
u8 numInstruments;
|
||||
u8 numDrums;
|
||||
@@ -238,6 +238,7 @@ struct AudioSequenceData {
|
||||
u32 bankCount;
|
||||
u8* banks;
|
||||
u8* data;
|
||||
u8 id;
|
||||
};
|
||||
|
||||
struct M64ScriptState {
|
||||
|
||||
+2
-3
@@ -8,7 +8,6 @@
|
||||
#include "load.h"
|
||||
#include "seqplayer.h"
|
||||
#include "sound/sound_data.h"
|
||||
#include "sequences_table.h"
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
@@ -393,7 +392,7 @@ uint8_t* load_sequence_immediate(s32 seqId, s32 arg1) {
|
||||
|
||||
struct CtlEntry* load_banks_immediate(s32 seqId, u8 *outDefaultBank) {
|
||||
u32 bankId;
|
||||
struct AudioSequenceData *seqData = ResourceGetDataByName(gSequenceTable[seqId]);
|
||||
struct AudioSequenceData *seqData = GameEngine_LoadSequence(seqId);
|
||||
struct CtlEntry *output;
|
||||
for(size_t i = 0; i < seqData->bankCount; i++) {
|
||||
output = GameEngine_LoadBank(bankId = seqData->banks[i]);
|
||||
@@ -538,7 +537,7 @@ void audio_init() {
|
||||
#endif
|
||||
|
||||
// Load headers for sounds and sequences
|
||||
gSequenceCount = sizeof(gSequenceTable) / sizeof(gSequenceTable[0]);
|
||||
gSequenceCount = GameEngine_GetSequenceCount();
|
||||
init_sequence_players();
|
||||
gAudioLoadLock = AUDIO_LOCK_NOT_LOADING;
|
||||
|
||||
|
||||
@@ -954,7 +954,6 @@ u8 audioString107[] = "Error: Your assignchannel is stolen.\n";
|
||||
#else
|
||||
// US/JP version with macros to simulate inlining by copt. Edit if you dare.
|
||||
#include "copt/seq_channel_layer_process_script_copt.inc.c"
|
||||
#include "sequences_table.h"
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1784,7 +1783,7 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
|
||||
loBits = *(sp38 + gAlBankSets);
|
||||
cmd = gAlBankSets[(s32)sp38 + loBits - cmd];
|
||||
#else
|
||||
struct AudioSequenceData *sequence = ResourceGetDataByName(gSequenceTable[seqPlayer->seqId]);
|
||||
struct AudioSequenceData *sequence = GameEngine_LoadSequence(seqPlayer->seqId);
|
||||
cmd = sequence->banks[cmd];
|
||||
#endif
|
||||
#ifdef VERSION_SH
|
||||
|
||||
+46
-12
@@ -4,8 +4,6 @@
|
||||
#include "port/importer/AudioBankFactory.h"
|
||||
#include "port/importer/AudioSampleFactory.h"
|
||||
#include "port/importer/AudioSequenceFactory.h"
|
||||
#include "banks_table.h"
|
||||
#include "sequences_table.h"
|
||||
#include "audio/GameAudio.h"
|
||||
#include "ZAPDUtils/Utils/StringHelper.h"
|
||||
#include "texts_table.h"
|
||||
@@ -53,13 +51,13 @@ GameEngine::GameEngine(){
|
||||
this->context->GetResourceManager()->GetResourceLoader()->RegisterResourceFactory(LUS::ResourceType::Sequence, "Sequence", std::make_shared<CubeOS::AudioSequenceFactory>());
|
||||
this->context->GetResourceManager()->GetResourceLoader()->RegisterResourceFactory(LUS::ResourceType::SDialog, "Dialog", std::make_shared<CubeOS::DialogFactory>());
|
||||
this->context->GetResourceManager()->GetResourceLoader()->RegisterResourceFactory(LUS::ResourceType::Dictionary, "Dictionary", std::make_shared<CubeOS::DictionaryFactory>());
|
||||
GameEngine::AudioInit();
|
||||
this->LoadDictionary();
|
||||
}
|
||||
|
||||
void GameEngine::Create(){
|
||||
GameEngine::Instance = new GameEngine();
|
||||
auto instance = GameEngine::Instance = new GameEngine();
|
||||
GameUI::SetupGuiElements();
|
||||
instance->AudioInit();
|
||||
instance->LoadDictionary();
|
||||
}
|
||||
|
||||
void GameEngine::Destroy(){
|
||||
@@ -160,7 +158,23 @@ void GameEngine::EndAudioFrame(){
|
||||
}
|
||||
|
||||
void GameEngine::AudioInit() {
|
||||
LUS::Context::GetInstance()->GetResourceManager()->LoadDirectory("sound");
|
||||
auto resourceMgr = LUS::Context::GetInstance()->GetResourceManager();
|
||||
resourceMgr->LoadDirectory("sound");
|
||||
auto banksFiles = resourceMgr->GetArchive()->ListFiles("sound/banks/*");
|
||||
|
||||
for(auto& bank : *banksFiles){
|
||||
auto path = "__OTR__" + bank;
|
||||
auto ctl = static_cast<CtlEntry *>(ResourceGetDataByName(path.c_str()));
|
||||
this->bankMapTable[bank] = ctl->bankId;
|
||||
}
|
||||
|
||||
auto sequencesFiles = resourceMgr->GetArchive()->ListFiles("sound/sequences/*");
|
||||
|
||||
for(auto& sequence : *sequencesFiles){
|
||||
auto path = "__OTR__" + sequence;
|
||||
auto seq = static_cast<AudioSequenceData *>(ResourceGetDataByName(path.c_str()));
|
||||
this->sequencesMapTable[seq->id] = path;
|
||||
}
|
||||
|
||||
if (!audio.running) {
|
||||
audio.running = true;
|
||||
@@ -183,6 +197,14 @@ void GameEngine::LoadDictionary() {
|
||||
this->dictionary = static_cast<std::unordered_map<std::string, std::vector<uint8_t>> *>(ResourceGetDataByName("__OTR__texts/strings/global"));
|
||||
}
|
||||
|
||||
uint8_t GameEngine::GetBankIdByName(const std::string& name) {
|
||||
auto engine = GameEngine::Instance;
|
||||
if(engine->bankMapTable.contains(name)){
|
||||
return engine->bankMapTable[name];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
extern "C" uint32_t GameEngine_GetInterpolatedFPS() {
|
||||
return GameEngine::GetInterpolationFPS();
|
||||
}
|
||||
@@ -212,15 +234,20 @@ extern "C" float GameEngine_GetAspectRatio() {
|
||||
|
||||
extern "C" CtlEntry* GameEngine_LoadBank(uint8_t bankId) {
|
||||
auto engine = GameEngine::Instance;
|
||||
if(bankId > (sizeof(gBankTable) / sizeof(gBankTable[0])) - 1){
|
||||
if(bankId >= engine->bankMapTable.size()){
|
||||
return nullptr;
|
||||
}
|
||||
if(engine->banks.contains(bankId)){
|
||||
return engine->banks[bankId];
|
||||
}
|
||||
auto ctl = static_cast<CtlEntry *>(ResourceGetDataByName(gBankTable[bankId]));
|
||||
engine->banks[bankId] = ctl;
|
||||
return ctl;
|
||||
for(auto& bank : engine->bankMapTable){
|
||||
if(bank.second == bankId){
|
||||
auto ctl = static_cast<CtlEntry *>(ResourceGetDataByName(("__OTR__" + bank.first).c_str()));
|
||||
engine->banks[bankId] = ctl;
|
||||
return ctl;
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
extern "C" uint8_t GameEngine_IsBankLoaded(uint8_t bankId) {
|
||||
@@ -238,17 +265,24 @@ extern "C" void GameEngine_UnloadBank(uint8_t bankId) {
|
||||
|
||||
extern "C" AudioSequenceData* GameEngine_LoadSequence(uint8_t seqId) {
|
||||
auto engine = GameEngine::Instance;
|
||||
if(seqId > (sizeof(gSequenceTable) / sizeof(gSequenceTable[0])) - 1){
|
||||
if(!engine->sequencesMapTable.contains(seqId)){
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if(engine->sequences.contains(seqId)){
|
||||
return engine->sequences[seqId];
|
||||
}
|
||||
auto sequences = static_cast<AudioSequenceData *>(ResourceGetDataByName(gSequenceTable[seqId]));
|
||||
|
||||
auto sequences = static_cast<AudioSequenceData *>(ResourceGetDataByName(engine->sequencesMapTable[seqId].c_str()));
|
||||
engine->sequences[seqId] = sequences;
|
||||
return sequences;
|
||||
}
|
||||
|
||||
extern "C" uint32_t GameEngine_GetSequenceCount(){
|
||||
auto engine = GameEngine::Instance;
|
||||
return engine->sequencesMapTable.size();
|
||||
}
|
||||
|
||||
extern "C" uint8_t GameEngine_IsSequenceLoaded(uint8_t seqId) {
|
||||
auto engine = GameEngine::Instance;
|
||||
GameEngine_LoadSequence(seqId);
|
||||
|
||||
+5
-2
@@ -22,10 +22,13 @@ class GameEngine {
|
||||
std::shared_ptr<LUS::Context> context;
|
||||
std::unordered_map<uint8_t, CtlEntry*> banks;
|
||||
std::unordered_map<uint8_t, AudioSequenceData*> sequences;
|
||||
std::unordered_map<std::string, uint8_t> bankMapTable;
|
||||
std::unordered_map<uint8_t, std::string> sequencesMapTable;
|
||||
std::unordered_map<std::string, std::vector<uint8_t>>* dictionary;
|
||||
|
||||
GameEngine();
|
||||
static void Create();
|
||||
void AudioInit();
|
||||
void StartFrame() const;
|
||||
static void RunCommands(Gfx* Commands);
|
||||
void ProcessFrame(void (*run_one_game_iter)()) const;
|
||||
@@ -33,14 +36,13 @@ class GameEngine {
|
||||
static void HandleAudioThread();
|
||||
static void StartAudioFrame();
|
||||
static void EndAudioFrame();
|
||||
static void AudioInit();
|
||||
static void AudioExit();
|
||||
static uint8_t GetBankIdByName(const std::string& name);
|
||||
void LoadDictionary();
|
||||
|
||||
void Destroy();
|
||||
};
|
||||
#else
|
||||
|
||||
uint32_t GameEngine_GetInterpolatedFPS();
|
||||
uint32_t GameEngine_GetSampleRate();
|
||||
uint32_t GameEngine_GetSamplesPerFrame();
|
||||
@@ -49,6 +51,7 @@ struct CtlEntry* GameEngine_LoadBank(uint8_t bankId);
|
||||
uint8_t GameEngine_IsBankLoaded(uint8_t bankId);
|
||||
void GameEngine_UnloadBank(uint8_t bankId);
|
||||
struct AudioSequenceData* GameEngine_LoadSequence(uint8_t seqId);
|
||||
uint32_t GameEngine_GetSequenceCount();
|
||||
uint8_t GameEngine_IsSequenceLoaded(uint8_t seqId);
|
||||
void GameEngine_UnloadSequence(uint8_t seqId);
|
||||
uint32_t GameEngine_GetGameVersion();
|
||||
|
||||
@@ -30,11 +30,11 @@ void CubeOS::AudioBankFactoryV0::ParseFileBinary(std::shared_ptr<LUS::BinaryRead
|
||||
|
||||
ResourceVersionFactory::ParseFileBinary(reader, bank);
|
||||
|
||||
uint8_t bankId = reader->ReadUInt32();
|
||||
uint32_t instrumentCount = reader->ReadUInt32();
|
||||
|
||||
for(size_t i = 0; i < instrumentCount; i++){
|
||||
auto* instrument = new Instrument();
|
||||
// memset(instrument, 0, sizeof(Instrument));
|
||||
bool valid = reader->ReadUByte();
|
||||
if(!valid){
|
||||
bank->instruments.push_back(nullptr);
|
||||
@@ -104,7 +104,7 @@ void CubeOS::AudioBankFactoryV0::ParseFileBinary(std::shared_ptr<LUS::BinaryRead
|
||||
bank->drums.push_back(drum);
|
||||
}
|
||||
|
||||
bank->mData.unused = 1;
|
||||
bank->mData.bankId = bankId;
|
||||
bank->mData.numInstruments = instrumentCount;
|
||||
bank->mData.numDrums = drumCount;
|
||||
bank->mData.instruments = bank->instruments.data();
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#include "AudioSequenceFactory.h"
|
||||
#include "port/importer/types/AudioSequence.h"
|
||||
#include "spdlog/spdlog.h"
|
||||
#include "port/Engine.h"
|
||||
#include "port/importer/types/AudioBank.h"
|
||||
|
||||
std::shared_ptr<LUS::IResource> CubeOS::AudioSequenceFactory::ReadResource(std::shared_ptr<LUS::ResourceInitData> initData, std::shared_ptr<LUS::BinaryReader> reader) {
|
||||
auto resource = std::make_shared<AudioSequence>(initData);
|
||||
@@ -27,9 +29,11 @@ void CubeOS::AudioSequenceFactoryV0::ParseFileBinary(std::shared_ptr<LUS::Binary
|
||||
|
||||
ResourceVersionFactory::ParseFileBinary(reader, bank);
|
||||
|
||||
uint8_t id = reader->ReadUInt32();
|
||||
size_t bankCount = reader->ReadUInt32();
|
||||
for(size_t i = 0; i < bankCount; i++){
|
||||
bank->banks.push_back(reader->ReadUByte());
|
||||
std::string bankName = reader->ReadString();
|
||||
bank->banks.push_back(GameEngine::GetBankIdByName(bankName));
|
||||
}
|
||||
|
||||
size_t sampleSize = reader->ReadUInt32();
|
||||
@@ -40,4 +44,5 @@ void CubeOS::AudioSequenceFactoryV0::ParseFileBinary(std::shared_ptr<LUS::Binary
|
||||
bank->mData.bankCount = bankCount;
|
||||
bank->mData.banks = bank->banks.data();
|
||||
bank->mData.data = bank->sampleData.data();
|
||||
bank->mData.id = id;
|
||||
}
|
||||
@@ -34,7 +34,7 @@ struct Drum {
|
||||
};
|
||||
|
||||
struct CtlEntry {
|
||||
uint8_t unused;
|
||||
uint8_t bankId;
|
||||
uint8_t numInstruments;
|
||||
uint8_t numDrums;
|
||||
struct Instrument **instruments;
|
||||
|
||||
@@ -7,6 +7,7 @@ struct AudioSequenceData {
|
||||
uint32_t bankCount;
|
||||
uint8_t* banks;
|
||||
uint8_t* data;
|
||||
uint8_t id;
|
||||
};
|
||||
|
||||
namespace CubeOS {
|
||||
|
||||
Reference in New Issue
Block a user