mirror of
https://github.com/izzy2lost/Torch.git
synced 2026-07-06 00:18:35 -07:00
Added support to extract banks on each sequence
This commit is contained in:
+35
-36
@@ -1086,45 +1086,44 @@
|
||||
"sound/sequences/sh/20_cutscene_ending.m64": [1887,{"sh":[7981824]}],
|
||||
"sound/sequences/sh/21_menu_file_select.m64": [786,{"sh":[7983712]}],
|
||||
"sound/sequences/sh/22_cutscene_lakitu.m64": [317,{"sh":[7984512]}],
|
||||
"sound/sequences/us/00_sound_player.m64": [13452,{"us":[8063360]}],
|
||||
"sound/sequences/us/01_cutscene_collect_star.m64": [619,{"us":[8076816]}],
|
||||
"sound/sequences/us/02_menu_title_screen.m64": [8254,{"us":[8077440]}],
|
||||
"sound/sequences/us/03_level_grass.m64": [5122,{"us":[8085696]}],
|
||||
"sound/sequences/us/04_level_inside_castle.m64": [2494,{"us":[8090832]}],
|
||||
"sound/sequences/us/05_level_water.m64": [4780,{"us":[8093328]}],
|
||||
"sound/sequences/us/06_level_hot.m64": [2451,{"us":[8098112]}],
|
||||
"sound/sequences/us/07_level_boss_koopa.m64": [3418,{"us":[8100576]}],
|
||||
"sound/sequences/us/08_level_snow.m64": [8143,{"us":[8104000]}],
|
||||
"sound/sequences/us/09_level_slide.m64": [7432,{"us":[8112144]}],
|
||||
"sound/sequences/us/0A_level_spooky.m64": [5674,{"us":[8119584]}],
|
||||
"sound/sequences/us/0B_event_piranha_plant.m64": [1395,{"us":[8125264]}],
|
||||
"sound/sequences/us/0C_level_underground.m64": [4887,{"us":[8126672]}],
|
||||
"sound/sequences/us/0D_menu_star_select.m64": [134,{"us":[8131568]}],
|
||||
"sound/sequences/us/0E_event_powerup.m64": [3129,{"us":[8131712]}],
|
||||
"sound/sequences/us/0F_event_metal_cap.m64": [2770,{"us":[8134848]}],
|
||||
"sound/sequences/us/10_event_koopa_message.m64": [552,{"us":[8137632]}],
|
||||
"sound/sequences/us/11_level_koopa_road.m64": [4741,{"us":[8138192]}],
|
||||
"sound/sequences/us/12_event_high_score.m64": [271,{"us":[8142944]}],
|
||||
"sound/sequences/us/13_event_merry_go_round.m64": [1657,{"us":[8143216]}],
|
||||
"sound/sequences/us/14_event_race.m64": [197,{"us":[8144880]}],
|
||||
"sound/sequences/us/15_cutscene_star_spawn.m64": [644,{"us":[8145088]}],
|
||||
"sound/sequences/us/16_event_boss.m64": [3435,{"us":[8145744]}],
|
||||
"sound/sequences/us/17_cutscene_collect_key.m64": [671,{"us":[8149184]}],
|
||||
"sound/sequences/us/18_event_endless_stairs.m64": [1777,{"us":[8149856]}],
|
||||
"sound/sequences/us/19_level_boss_koopa_final.m64": [3515,{"us":[8151648]}],
|
||||
"sound/sequences/us/1A_cutscene_credits.m64": [14313,{"us":[8155168]}],
|
||||
"sound/sequences/us/1B_event_solve_puzzle.m64": [216,{"us":[8169488]}],
|
||||
"sound/sequences/us/1C_event_toad_message.m64": [208,{"us":[8169712]}],
|
||||
"sound/sequences/us/1D_event_peach_message.m64": [432,{"us":[8169920]}],
|
||||
"sound/sequences/us/1E_cutscene_intro.m64": [1764,{"us":[8170352]}],
|
||||
"sound/sequences/us/1F_cutscene_victory.m64": [2058,{"us":[8172128]}],
|
||||
"sound/sequences/us/20_cutscene_ending.m64": [1882,{"us":[8174192]}],
|
||||
"sound/sequences/us/21_menu_file_select.m64": [781,{"us":[8176080]}],
|
||||
"sound/sequences/us/22_cutscene_lakitu.m64": [313,{"us":[8176864]}],
|
||||
"sound/sequences/us/00_sound_player.m64": [13452,{"us":[8063360], "banks": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]}],
|
||||
"sound/sequences/us/01_cutscene_collect_star.m64": [619,{"us":[8076816], "banks": [34]}],
|
||||
"sound/sequences/us/02_menu_title_screen.m64": [8254,{"us":[8077440], "banks": [17]}],
|
||||
"sound/sequences/us/03_level_grass.m64": [5122,{"us":[8085696], "banks": [34]}],
|
||||
"sound/sequences/us/04_level_inside_castle.m64": [2494,{"us":[8090832], "banks": [14]}],
|
||||
"sound/sequences/us/05_level_water.m64": [4780,{"us":[8093328], "banks": [19]}],
|
||||
"sound/sequences/us/06_level_hot.m64": [2451,{"us":[8098112], "banks": [15]}],
|
||||
"sound/sequences/us/07_level_boss_koopa.m64": [3418,{"us":[8100576], "banks": [18]}],
|
||||
"sound/sequences/us/08_level_snow.m64": [8143,{"us":[8104000], "banks": [11]}],
|
||||
"sound/sequences/us/09_level_slide.m64": [7432,{"us":[8112144], "banks": [13]}],
|
||||
"sound/sequences/us/0A_level_spooky.m64": [5674,{"us":[8119584], "banks": [33, 16]}],
|
||||
"sound/sequences/us/0B_event_piranha_plant.m64": [1395,{"us":[8125264], "banks": [20]}],
|
||||
"sound/sequences/us/0C_level_underground.m64": [4887,{"us":[8126672], "banks": [21]}],
|
||||
"sound/sequences/us/0D_menu_star_select.m64": [134,{"us":[8131568], "banks": [22]}],
|
||||
"sound/sequences/us/0E_event_powerup.m64": [3129,{"us":[8131712], "banks": [23]}],
|
||||
"sound/sequences/us/0F_event_metal_cap.m64": [2770,{"us":[8134848], "banks": [24]}],
|
||||
"sound/sequences/us/10_event_koopa_message.m64": [552,{"us":[8137632], "banks": [18]}],
|
||||
"sound/sequences/us/11_level_koopa_road.m64": [4741,{"us":[8138192], "banks": [25]}],
|
||||
"sound/sequences/us/12_event_high_score.m64": [271,{"us":[8142944], "banks": [31]}],
|
||||
"sound/sequences/us/13_event_merry_go_round.m64": [1657,{"us":[8143216], "banks": [33]}],
|
||||
"sound/sequences/us/14_event_race.m64": [197,{"us":[8144880], "banks": [26]}],
|
||||
"sound/sequences/us/15_cutscene_star_spawn.m64": [644,{"us":[8145088], "banks": [14]}],
|
||||
"sound/sequences/us/16_event_boss.m64": [3435,{"us":[8145744], "banks": [27]}],
|
||||
"sound/sequences/us/17_cutscene_collect_key.m64": [671,{"us":[8149184], "banks": [26]}],
|
||||
"sound/sequences/us/18_event_endless_stairs.m64": [1777,{"us":[8149856], "banks": [28]}],
|
||||
"sound/sequences/us/19_level_boss_koopa_final.m64": [3515,{"us":[8151648], "banks": [29]}],
|
||||
"sound/sequences/us/1A_cutscene_credits.m64": [14313,{"us":[8155168], "banks": [37]}],
|
||||
"sound/sequences/us/1B_event_solve_puzzle.m64": [216,{"us":[8169488], "banks": [20]}],
|
||||
"sound/sequences/us/1C_event_toad_message.m64": [208,{"us":[8169712], "banks": [32]}],
|
||||
"sound/sequences/us/1D_event_peach_message.m64": [432,{"us":[8169920], "banks": [30]}],
|
||||
"sound/sequences/us/1E_cutscene_intro.m64": [1764,{"us":[8170352], "banks": [27]}],
|
||||
"sound/sequences/us/1F_cutscene_victory.m64": [2058,{"us":[8172128], "banks": [26]}],
|
||||
"sound/sequences/us/20_cutscene_ending.m64": [1882,{"us":[8174192], "banks": [35]}],
|
||||
"sound/sequences/us/21_menu_file_select.m64": [781,{"us":[8176080], "banks": [36]}],
|
||||
"sound/sequences/us/22_cutscene_lakitu.m64": [313,{"us":[8176864], "banks": [27]}],
|
||||
"sound/bank_sets.bset": [159, { "us": [8177185] }],
|
||||
"@sound_data": {
|
||||
"us": {
|
||||
"bank_sets": [8177184, 160],
|
||||
"sound_ctl": [5748512, 97856],
|
||||
"sound_tbl": [5846368, 2216704]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"00_sound_player": ["00", "01_terrain", "02_water", "03", "04", "05", "06", "07", "08_mario", "09", "0A_mario_peach"],
|
||||
"01_cutscene_collect_star": ["22"],
|
||||
"02_menu_title_screen": ["11"],
|
||||
"03_level_grass": ["22"],
|
||||
"04_level_inside_castle": ["0E"],
|
||||
"05_level_water": ["13"],
|
||||
"06_level_hot": ["0F"],
|
||||
"07_level_boss_koopa": ["12"],
|
||||
"08_level_snow": ["0B"],
|
||||
"09_level_slide": ["0D"],
|
||||
"0A_level_spooky": ["10", "21"],
|
||||
"0B_event_piranha_plant": ["14_piranha_music_box"],
|
||||
"0C_level_underground": ["15"],
|
||||
"0D_menu_star_select": ["16_course_start"],
|
||||
"0E_event_powerup": ["17"],
|
||||
"0F_event_metal_cap": ["18"],
|
||||
"10_event_koopa_message": ["12"],
|
||||
"11_level_koopa_road": ["19"],
|
||||
"12_event_high_score": ["1F"],
|
||||
"13_event_merry_go_round": ["21"],
|
||||
"14_event_race": ["1A"],
|
||||
"15_cutscene_star_spawn": ["0E"],
|
||||
"16_event_boss": ["1B"],
|
||||
"17_cutscene_collect_key": ["1A"],
|
||||
"18_event_endless_stairs": ["1C_endless_stairs"],
|
||||
"19_level_boss_koopa_final": ["1D_bowser_organ"],
|
||||
"1A_cutscene_credits": ["25"],
|
||||
"1B_event_solve_puzzle": ["14_piranha_music_box"],
|
||||
"1C_event_toad_message": ["20"],
|
||||
"1D_event_peach_message": ["1E"],
|
||||
"1E_cutscene_intro": ["1B"],
|
||||
"1F_cutscene_victory": ["1A"],
|
||||
"20_cutscene_ending": ["23"],
|
||||
"21_menu_file_select": ["24"],
|
||||
"22_cutscene_lakitu": ["1B"]
|
||||
}
|
||||
+1
-1
@@ -23,8 +23,8 @@ static const std::unordered_map<std::string, RawFactory*> gFactories = {
|
||||
{ ".aiff", new AudioFactory() },
|
||||
{ ".bnk", new AudioFactory() },
|
||||
{ ".bset", new AudioFactory() },
|
||||
{ ".m64", new AudioFactory() },
|
||||
{ ".bin", new BlobFactory(LUS::ResourceType::Blob) },
|
||||
{ ".m64", new BlobFactory(LUS::ResourceType::Blob) },
|
||||
{ ".sbox", new BlobFactory(LUS::ResourceType::Blob, true) },
|
||||
};
|
||||
|
||||
|
||||
@@ -335,7 +335,6 @@ AdpcmLoop AudioManager::parse_loop(uint32_t addr, std::vector<uint8_t>& bankData
|
||||
int32_t count = reader.ReadInt32();
|
||||
uint32_t pad = reader.ReadUInt32();
|
||||
|
||||
std::cout << "Loop End: " << end << '\n';
|
||||
if(count != 0){
|
||||
state = std::vector<int16_t>();
|
||||
for (size_t i = 0; i < 16; ++i) {
|
||||
@@ -433,6 +432,7 @@ TBLFile AudioManager::parse_tbl(std::vector<uint8_t>& data, std::vector<Entry>&
|
||||
void AudioManager::initialize(std::vector<uint8_t>& buffer) {
|
||||
auto assets = nlohmann::json::parse(std::ifstream( "assets.json" ));
|
||||
auto sound_data = assets["@sound_data"]["us"];
|
||||
|
||||
auto sound_tbl = sound_data["sound_tbl"];
|
||||
auto sound_ctl = sound_data["sound_ctl"];
|
||||
|
||||
@@ -661,4 +661,4 @@ uint32_t AudioManager::get_index(AudioBankSample* entry) {
|
||||
|
||||
std::map<uint32_t, Bank> AudioManager::get_banks() {
|
||||
return this->banks;
|
||||
}
|
||||
}
|
||||
@@ -33,10 +33,6 @@ bool AudioFactory::process(LUS::BinaryWriter* writer, nlohmann::json& data, std:
|
||||
|
||||
WRITE_HEADER(LUS::ResourceType::Bank, 0);
|
||||
|
||||
if(path.find("sound/banks/us/20_bank") != std::string::npos){
|
||||
int bp = 0;
|
||||
}
|
||||
|
||||
WRITE_U32(bank.insts.size());
|
||||
for(auto &instrument : bank.insts){
|
||||
WRITE_U8(instrument.valid);
|
||||
@@ -119,7 +115,29 @@ bool AudioFactory::process(LUS::BinaryWriter* writer, nlohmann::json& data, std:
|
||||
return true;
|
||||
}
|
||||
|
||||
if(metadata.size() < 2 || !metadata[1].contains("us")){
|
||||
if(path.find("sound/sequences") != std::string::npos){
|
||||
|
||||
if(!metadata[1].contains("us")){
|
||||
return false;
|
||||
}
|
||||
|
||||
WRITE_HEADER(LUS::ResourceType::Sequence, 0);
|
||||
|
||||
size_t size = metadata[0];
|
||||
auto offsets = metadata[1]["us"];
|
||||
|
||||
std::vector<uint8_t> bank = metadata[1]["banks"];
|
||||
|
||||
WRITE_U32(bank.size());
|
||||
WRITE_ARRAY(bank.data(), bank.size());
|
||||
|
||||
WRITE_U32(size);
|
||||
WRITE_ARRAY(buffer.data() + (size_t)offsets[0], size);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if(path.find("sound/samples") == std::string::npos || metadata.size() < 2 || !metadata[1].contains("us")){
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -132,14 +150,10 @@ bool AudioFactory::process(LUS::BinaryWriter* writer, nlohmann::json& data, std:
|
||||
write_aiff(aifcData, *writer);
|
||||
*/
|
||||
|
||||
WRITE_HEADER(LUS::ResourceType::Audio, 0);
|
||||
WRITE_HEADER(LUS::ResourceType::Sample, 0);
|
||||
|
||||
AudioBankSample entry = AudioManager::Instance->get_aifc(metadata[1]["us"][1]);
|
||||
|
||||
if(path.find("00_mario_waaaooow") != std::string::npos){
|
||||
int bp = 0;
|
||||
}
|
||||
|
||||
// Write AdpcmLoop
|
||||
WRITE_U32(entry.loop.start);
|
||||
WRITE_U32(entry.loop.end);
|
||||
|
||||
@@ -20,6 +20,7 @@ enum class ResourceType {
|
||||
Skybox = 0x534B5942, // SKYB
|
||||
Anim = 0x414E494D, // ANIM
|
||||
Bank = 0x42414E4B, // BANK
|
||||
Audio = 0x41554643, // AIFC
|
||||
Sample = 0x41554643, // AIFC
|
||||
Sequence = 0x53455143, // SEQC
|
||||
};
|
||||
} // namespace LUS
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
const fs = require('fs');
|
||||
const data = require('../sequences.json');
|
||||
|
||||
const header = [
|
||||
'#pragma once',
|
||||
'',
|
||||
]
|
||||
const bankset = []
|
||||
|
||||
async function main(){
|
||||
// header.push('static const uint8_t gBankIdxMap[][16] = {');
|
||||
let idx = 0;
|
||||
for(const values of Object.values(data)){
|
||||
const indices = values.map(v => `${parseInt(v.split('_')[0], 16)}`);
|
||||
// header.push(` // Bank: ${Object.keys(data)[idx++]}`);
|
||||
header.push(`[${indices.join(', ')}],`);
|
||||
}
|
||||
// header.push('};\n');
|
||||
|
||||
fs.writeFileSync('./bankset_table.h', header.join('\n'));
|
||||
}
|
||||
|
||||
main();
|
||||
Reference in New Issue
Block a user