mirror of
https://github.com/zeldaret/mm.git
synced 2026-06-28 02:13:03 -04:00
[Audio 8/?] Check-in handwritten sequences, build sequences, automate various sfx arrays (#1679)
* [Audio 8/?] Check-in handwritten sequences, build sequences, automate various sfx arrays * Fix whitespace in aseq.h * Suggested changes, adjust some MML syntax and add more instruction descriptions * Special case progress script (#9) * Hack progress script * Small adjustment to text fileSectionFixer * Add the dir of the input .seq file to the list of includes to sequence assembling so that assembler-level includes like .include or .incbin work intuitively * Remove old comment that was missed before * aseq.h tweaks * Review suggestions, aseq.h adjustments --------- Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
This commit is contained in:
+32
-130
@@ -179,12 +179,37 @@ u16 sCustomSequencePc;
|
||||
|
||||
// Sfx Data
|
||||
// If the Sfx Bank has more than 255 values (max value of u8)
|
||||
u8 gIsLargeSfxBank[] = {
|
||||
true, false, true, true, false, false, true,
|
||||
#define DEFINE_SFX(_0, _1, _2, _3, _4, _5, _6) 1 +
|
||||
u8 gIsLargeSfxBank[7] = {
|
||||
(
|
||||
#include "tables/sfx/playerbank_table.h"
|
||||
0) > UINT8_MAX,
|
||||
(
|
||||
#include "tables/sfx/itembank_table.h"
|
||||
0) > UINT8_MAX,
|
||||
(
|
||||
#include "tables/sfx/environmentbank_table.h"
|
||||
0) > UINT8_MAX,
|
||||
(
|
||||
#include "tables/sfx/enemybank_table.h"
|
||||
0) > UINT8_MAX,
|
||||
(
|
||||
#include "tables/sfx/systembank_table.h"
|
||||
0) > UINT8_MAX,
|
||||
(
|
||||
#include "tables/sfx/ocarinabank_table.h"
|
||||
0) > UINT8_MAX,
|
||||
(
|
||||
#include "tables/sfx/voicebank_table.h"
|
||||
0) > UINT8_MAX,
|
||||
};
|
||||
#undef DEFINE_SFX
|
||||
|
||||
// TODO generate this similarly to above?
|
||||
u8 D_801D6608[] = {
|
||||
true, true, true, true, true, false, true,
|
||||
};
|
||||
|
||||
u8 gChannelsPerBank[4][7] = {
|
||||
{ 3, 2, 3, 3, 2, 1, 2 },
|
||||
{ 3, 2, 2, 2, 2, 2, 2 },
|
||||
@@ -279,136 +304,13 @@ u8 sObjSoundMainBgmSeqId = NA_BGM_GENERAL_SFX;
|
||||
// Unused, repurposed for SubBgm
|
||||
#define SEQ_FLAG_NO_AMBIENCE (1 << 7)
|
||||
|
||||
#define DEFINE_SEQUENCE(name, seqId, storageMedium, cachePolicy, seqFlags) seqFlags,
|
||||
#define DEFINE_SEQUENCE_PTR(seqIdReal, seqId, storageMediumReal, cachePolicyReal, seqFlags) seqFlags,
|
||||
u8 sSeqFlags[] = {
|
||||
SEQ_FLAG_FANFARE | SEQ_FLAG_ENEMY, // NA_BGM_GENERAL_SFX
|
||||
SEQ_FLAG_ENEMY, // NA_BGM_AMBIENCE
|
||||
SEQ_FLAG_ENEMY, // NA_BGM_TERMINA_FIELD
|
||||
SEQ_FLAG_RESTORE, // NA_BGM_CHASE
|
||||
0, // NA_BGM_MAJORAS_THEME
|
||||
0, // NA_BGM_CLOCK_TOWER
|
||||
SEQ_FLAG_ENEMY, // NA_BGM_STONE_TOWER_TEMPLE
|
||||
SEQ_FLAG_ENEMY, // NA_BGM_INV_STONE_TOWER_TEMPLE
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_FAILURE_0
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_FAILURE_1
|
||||
0, // NA_BGM_HAPPY_MASK_SALESMAN
|
||||
0, // NA_BGM_SONG_OF_HEALING
|
||||
SEQ_FLAG_ENEMY, // NA_BGM_SWAMP_REGION
|
||||
0, // NA_BGM_ALIEN_INVASION
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_SWAMP_CRUISE
|
||||
0, // NA_BGM_SHARPS_CURSE
|
||||
SEQ_FLAG_ENEMY, // NA_BGM_GREAT_BAY_REGION
|
||||
SEQ_FLAG_ENEMY, // NA_BGM_IKANA_REGION
|
||||
0, // NA_BGM_DEKU_PALACE
|
||||
SEQ_FLAG_ENEMY, // NA_BGM_MOUNTAIN_REGION
|
||||
0, // NA_BGM_PIRATES_FORTRESS
|
||||
0, // NA_BGM_CLOCK_TOWN_DAY_1
|
||||
0, // NA_BGM_CLOCK_TOWN_DAY_2
|
||||
0, // NA_BGM_CLOCK_TOWN_DAY_3
|
||||
SEQ_FLAG_SKIP_HARP_INTRO, // NA_BGM_FILE_SELECT
|
||||
SEQ_FLAG_RESUME, // NA_BGM_CLEAR_EVENT
|
||||
0, // NA_BGM_ENEMY
|
||||
SEQ_FLAG_RESTORE, // NA_BGM_BOSS
|
||||
SEQ_FLAG_ENEMY, // NA_BGM_WOODFALL_TEMPLE
|
||||
0, // NA_BGM_CLOCK_TOWN_MAIN_SEQUENCE
|
||||
0, // NA_BGM_OPENING
|
||||
SEQ_FLAG_RESUME_PREV, // NA_BGM_INSIDE_A_HOUSE
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_GAME_OVER
|
||||
0, // NA_BGM_CLEAR_BOSS
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_GET_ITEM
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_CLOCK_TOWN_DAY_2_PTR
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_GET_HEART
|
||||
SEQ_FLAG_RESTORE, // NA_BGM_TIMED_MINI_GAME
|
||||
0, // NA_BGM_GORON_RACE
|
||||
0, // NA_BGM_MUSIC_BOX_HOUSE
|
||||
0, // NA_BGM_FAIRY_FOUNTAIN
|
||||
0, // NA_BGM_ZELDAS_LULLABY
|
||||
0, // NA_BGM_ROSA_SISTERS
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_OPEN_CHEST
|
||||
0, // NA_BGM_MARINE_RESEARCH_LAB
|
||||
SEQ_FLAG_SKIP_HARP_INTRO, // NA_BGM_GIANTS_THEME
|
||||
0, // NA_BGM_SONG_OF_STORMS
|
||||
0, // NA_BGM_ROMANI_RANCH
|
||||
0, // NA_BGM_GORON_VILLAGE
|
||||
0, // NA_BGM_MAYORS_OFFICE
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_OCARINA_EPONA
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_OCARINA_SUNS
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_OCARINA_TIME
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_OCARINA_STORM
|
||||
SEQ_FLAG_RESUME, // NA_BGM_ZORA_HALL
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_GET_NEW_MASK
|
||||
SEQ_FLAG_RESTORE, // NA_BGM_MINI_BOSS
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_GET_SMALL_ITEM
|
||||
0, // NA_BGM_ASTRAL_OBSERVATORY
|
||||
SEQ_FLAG_ENEMY, // NA_BGM_CAVERN
|
||||
SEQ_FLAG_RESUME | SEQ_FLAG_ENEMY, // NA_BGM_MILK_BAR
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_ZELDA_APPEAR
|
||||
0, // NA_BGM_SARIAS_SONG
|
||||
0, // NA_BGM_GORON_GOAL
|
||||
0, // NA_BGM_HORSE
|
||||
0, // NA_BGM_HORSE_GOAL
|
||||
0, // NA_BGM_INGO
|
||||
0, // NA_BGM_KOTAKE_POTION_SHOP
|
||||
SEQ_FLAG_RESUME_PREV, // NA_BGM_SHOP
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_OWL
|
||||
SEQ_FLAG_RESUME_PREV, // NA_BGM_SHOOTING_GALLERY
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_OCARINA_SOARING
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_OCARINA_HEALING
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_INVERTED_SONG_OF_TIME
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_SONG_OF_DOUBLE_TIME
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_SONATA_OF_AWAKENING
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_GORON_LULLABY
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_NEW_WAVE_BOSSA_NOVA
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_ELEGY_OF_EMPTINESS
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_OATH_TO_ORDER
|
||||
0, // NA_BGM_SWORD_TRAINING_HALL
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_OCARINA_LULLABY_INTRO
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_LEARNED_NEW_SONG
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_BREMEN_MARCH
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_BALLAD_OF_THE_WIND_FISH
|
||||
SEQ_FLAG_RESTORE, // NA_BGM_SONG_OF_SOARING
|
||||
0, // NA_BGM_MILK_BAR_DUPLICATE
|
||||
0, // NA_BGM_FINAL_HOURS
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_MIKAU_RIFF
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_MIKAU_FINALE
|
||||
0, // NA_BGM_FROG_SONG
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_OCARINA_SONATA
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_OCARINA_LULLABY
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_OCARINA_NEW_WAVE
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_OCARINA_ELEGY
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_OCARINA_OATH
|
||||
0, // NA_BGM_MAJORAS_LAIR
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_OCARINA_LULLABY_INTRO_PTR
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_OCARINA_GUITAR_BASS_SESSION
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_PIANO_SESSION
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_INDIGO_GO_SESSION
|
||||
SEQ_FLAG_ENEMY, // NA_BGM_SNOWHEAD_TEMPLE
|
||||
SEQ_FLAG_ENEMY, // NA_BGM_GREAT_BAY_TEMPLE
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_NEW_WAVE_SAXOPHONE
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_NEW_WAVE_VOCAL
|
||||
0, // NA_BGM_MAJORAS_WRATH
|
||||
0, // NA_BGM_MAJORAS_INCARNATION
|
||||
0, // NA_BGM_MAJORAS_MASK
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_BASS_PLAY
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_DRUMS_PLAY
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_PIANO_PLAY
|
||||
SEQ_FLAG_ENEMY, // NA_BGM_IKANA_CASTLE
|
||||
0, // NA_BGM_GATHERING_GIANTS
|
||||
SEQ_FLAG_FANFARE_KAMARO, // NA_BGM_KAMARO_DANCE
|
||||
0, // NA_BGM_CREMIA_CARRIAGE
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_KEATON_QUIZ
|
||||
0, // NA_BGM_END_CREDITS_1
|
||||
0, // NA_BGM_OPENING_LOOP
|
||||
0, // NA_BGM_TITLE_THEME
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_DUNGEON_APPEAR
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_WOODFALL_CLEAR
|
||||
SEQ_FLAG_FANFARE, // NA_BGM_SNOWHEAD_CLEAR
|
||||
0, //
|
||||
0, // NA_BGM_INTO_THE_MOON
|
||||
0, // NA_BGM_GOODBYE_GIANT
|
||||
0, // NA_BGM_TATL_AND_TAEL
|
||||
0, // NA_BGM_MOONS_DESTRUCTION
|
||||
0, // NA_BGM_END_CREDITS_SECOND_HALF
|
||||
#include "tables/sequence_table.h"
|
||||
};
|
||||
#undef DEFINE_SEQUENCE
|
||||
#undef DEFINE_SEQUENCE_PTR
|
||||
|
||||
s8 sSpecReverbs[] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "global.h"
|
||||
|
||||
#define DEFINE_SFX(_0, importance, distParam, randParam, flags2, flags1) \
|
||||
#define DEFINE_SFX(_0, _1, importance, distParam, randParam, flags2, flags1) \
|
||||
{ importance, flags2, \
|
||||
((((distParam) << SFX_PARAM_DIST_RANGE_SHIFT) & SFX_PARAM_DIST_RANGE_MASK) | \
|
||||
(((randParam) << SFX_PARAM_RAND_FREQ_RAISE_SHIFT) & SFX_PARAM_RAND_FREQ_RAISE_MASK) | (flags1)) },
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
#include "attributes.h"
|
||||
#include "z64audio.h"
|
||||
|
||||
// Symbol definition
|
||||
|
||||
extern AudioTable gSequenceTable;
|
||||
#pragma weak gSequenceTable = sSequenceTableHeader
|
||||
|
||||
// Externs for table
|
||||
|
||||
#define DEFINE_SEQUENCE(name, seqId, storageMedium, cachePolicy, seqFlags) \
|
||||
extern u8 name##_Start[]; \
|
||||
extern u8 name##_Size[];
|
||||
#define DEFINE_SEQUENCE_PTR(seqIdReal, seqId, storageMediumReal, cachePolicyReal, seqFlags) /*empty*/
|
||||
|
||||
#include "tables/sequence_table.h"
|
||||
|
||||
#undef DEFINE_SEQUENCE
|
||||
#undef DEFINE_SEQUENCE_PTR
|
||||
|
||||
// Table header
|
||||
|
||||
NO_REORDER AudioTableHeader sSequenceTableHeader = {
|
||||
// The table contains the number of sequences, count them with the preprocessor
|
||||
#define DEFINE_SEQUENCE(name, seqId, storageMedium, cachePolicy, seqFlags) 1 +
|
||||
#define DEFINE_SEQUENCE_PTR(seqIdReal, seqId, storageMediumReal, cachePolicyReal, seqFlags) 1 +
|
||||
|
||||
#include "tables/sequence_table.h"
|
||||
|
||||
#undef DEFINE_SEQUENCE
|
||||
#undef DEFINE_SEQUENCE_PTR
|
||||
0,
|
||||
|
||||
0,
|
||||
0x00000000,
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0 },
|
||||
};
|
||||
|
||||
// Table body
|
||||
|
||||
NO_REORDER AudioTableEntry sSequenceTableEntries[] = {
|
||||
#define DEFINE_SEQUENCE(name, seqId, storageMedium, cachePolicy, seqFlags) \
|
||||
{ (u32)name##_Start, (u32)name##_Size, (storageMedium), (cachePolicy), 0, 0, 0 },
|
||||
#define DEFINE_SEQUENCE_PTR(seqIdReal, seqId, storageMediumReal, cachePolicyReal, seqFlags) \
|
||||
{ (seqIdReal), 0, (storageMediumReal), (cachePolicyReal), 0, 0, 0 },
|
||||
|
||||
#include "tables/sequence_table.h"
|
||||
|
||||
#undef DEFINE_SEQUENCE
|
||||
#undef DEFINE_SEQUENCE_PTR
|
||||
};
|
||||
Reference in New Issue
Block a user