[Audio 8/?] Check-in handwritten sequences, build sequences, automate various sfx arrays (#2137)

* [Audio 8/?] Check-in handwritten sequences, build sequences, automate various sfx arrays

* Fix whitespace in aseq.h

* Fix sequence 0 sfx id generator

* Suggested changes, adjust some MML syntax and add more instruction descriptions

* Correct some formatting in aseq.h

* 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

* aseq.h tweaks

* MM review suggestions, aseq.h adjustments
This commit is contained in:
Tharo
2024-09-15 23:26:27 +01:00
committed by GitHub
parent 03a1502706
commit dbbeb656f8
34 changed files with 22983 additions and 1657 deletions

4
.gitattributes vendored
View File

@@ -1,2 +1,6 @@
# Auto detect text files and perform LF normalization
* text=auto
# Set browser syntax highlighting for certain files
*.inc linguist-language=gas
*.seq linguist-language=gas
include/audio/aseq.h linguist-language=gas

View File

@@ -210,6 +210,9 @@ SBC := tools/audio/sbc
SFC := tools/audio/sfc
SFPATCH := tools/audio/sfpatch
ATBLGEN := tools/audio/atblgen
# We want linemarkers in sequence assembly files for better assembler error messages
SEQ_CPP := $(CPP) -x assembler-with-cpp -fno-dollars-in-identifiers
SEQ_CPPFLAGS := -D_LANGUAGE_ASEQ -DMML_VERSION=MML_VERSION_OOT -I include -I include/audio -I include/tables/sfx -I $(BUILD_DIR)/assets/audio/soundfonts
SBCFLAGS := --matching
SFCFLAGS := --matching
@@ -282,10 +285,12 @@ ifneq ($(wildcard $(EXTRACTED_DIR)/assets/audio),)
SAMPLE_EXTRACT_DIRS := $(shell find $(EXTRACTED_DIR)/assets/audio/samples -type d)
SAMPLEBANK_EXTRACT_DIRS := $(shell find $(EXTRACTED_DIR)/assets/audio/samplebanks -type d)
SOUNDFONT_EXTRACT_DIRS := $(shell find $(EXTRACTED_DIR)/assets/audio/soundfonts -type d)
SEQUENCE_EXTRACT_DIRS := $(shell find $(EXTRACTED_DIR)/assets/audio/sequences -type d)
else
SAMPLE_EXTRACT_DIRS :=
SAMPLEBANK_EXTRACT_DIRS :=
SOUNDFONT_EXTRACT_DIRS :=
SEQUENCE_EXTRACT_DIRS :=
endif
ifneq ($(wildcard assets/audio/samples),)
@@ -306,6 +311,12 @@ else
SOUNDFONT_DIRS :=
endif
ifneq ($(wildcard assets/audio/sequences),)
SEQUENCE_DIRS := $(shell find assets/audio/sequences -type d)
else
SEQUENCE_DIRS :=
endif
SAMPLE_FILES := $(foreach dir,$(SAMPLE_DIRS),$(wildcard $(dir)/*.wav))
SAMPLE_EXTRACT_FILES := $(foreach dir,$(SAMPLE_EXTRACT_DIRS),$(wildcard $(dir)/*.wav))
AIFC_FILES := $(foreach f,$(SAMPLE_FILES),$(BUILD_DIR)/$(f:.wav=.aifc)) $(foreach f,$(SAMPLE_EXTRACT_FILES:.wav=.aifc),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%))
@@ -323,6 +334,13 @@ SOUNDFONT_O_FILES := $(foreach f,$(SOUNDFONT_BUILD_XMLS),$(f:.xml=.o))
SOUNDFONT_HEADERS := $(foreach f,$(SOUNDFONT_BUILD_XMLS),$(f:.xml=.h))
SOUNDFONT_DEP_FILES := $(foreach f,$(SOUNDFONT_O_FILES),$(f:.o=.d))
SEQUENCE_FILES := $(foreach dir,$(SEQUENCE_DIRS),$(wildcard $(dir)/*.seq))
SEQUENCE_EXTRACT_FILES := $(foreach dir,$(SEQUENCE_EXTRACT_DIRS),$(wildcard $(dir)/*.seq))
SEQUENCE_O_FILES := $(foreach f,$(SEQUENCE_FILES),$(BUILD_DIR)/$(f:.seq=.o)) $(foreach f,$(SEQUENCE_EXTRACT_FILES:.seq=.o),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%))
SEQUENCE_DEP_FILES := $(foreach f,$(SEQUENCE_O_FILES),$(f:.o=.d))
SEQUENCE_TABLE := include/tables/sequence_table.h
# create extracted directory
$(shell mkdir -p $(EXTRACTED_DIR))
@@ -331,7 +349,7 @@ ifneq ($(wildcard $(EXTRACTED_DIR)/assets),)
else
ASSET_BIN_DIRS_EXTRACTED :=
endif
ASSET_BIN_DIRS_COMMITTED := $(shell find assets -type d -not -path "assets/xml*" -not -path assets/text)
ASSET_BIN_DIRS_COMMITTED := $(shell find assets -type d -not -path "assets/xml*" -not -path "assets/audio*" -not -path assets/text)
ASSET_BIN_DIRS := $(ASSET_BIN_DIRS_EXTRACTED) $(ASSET_BIN_DIRS_COMMITTED)
ASSET_FILES_BIN_EXTRACTED := $(foreach dir,$(ASSET_BIN_DIRS_EXTRACTED),$(wildcard $(dir)/*.bin))
@@ -381,6 +399,7 @@ $(shell mkdir -p $(foreach dir, \
$(SAMPLE_DIRS) \
$(SAMPLEBANK_DIRS) \
$(SOUNDFONT_DIRS) \
$(SEQUENCE_DIRS) \
$(ASSET_BIN_DIRS_COMMITTED), \
$(BUILD_DIR)/$(dir)))
ifneq ($(wildcard $(EXTRACTED_DIR)/assets),)
@@ -388,6 +407,7 @@ $(shell mkdir -p $(foreach dir, \
$(SAMPLE_EXTRACT_DIRS) \
$(SAMPLEBANK_EXTRACT_DIRS) \
$(SOUNDFONT_EXTRACT_DIRS) \
$(SEQUENCE_EXTRACT_DIRS) \
$(ASSET_BIN_DIRS_EXTRACTED), \
$(dir:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)))
endif
@@ -594,8 +614,8 @@ $(ROMC): $(ROM) $(ELF) $(BUILD_DIR)/compress_ranges.txt
$(PYTHON) -m ipl3checksum sum --cic 6105 --update $@
$(ELF): $(TEXTURE_FILES_OUT) $(ASSET_FILES_OUT) $(O_FILES) $(OVL_RELOC_FILES) $(LDSCRIPT) $(BUILD_DIR)/undefined_syms.txt \
$(SAMPLEBANK_O_FILES) $(SOUNDFONT_O_FILES) \
$(BUILD_DIR)/assets/audio/audiobank_padding.o
$(SAMPLEBANK_O_FILES) $(SOUNDFONT_O_FILES) $(SEQUENCE_O_FILES) \
$(BUILD_DIR)/assets/audio/sequence_font_table.o $(BUILD_DIR)/assets/audio/audiobank_padding.o
$(LD) -T $(LDSCRIPT) -T $(BUILD_DIR)/undefined_syms.txt --no-check-sections --accept-unknown-input-arch --emit-relocs -Map $(MAP) -o $@
## Order-only prerequisites
@@ -681,6 +701,8 @@ $(BUILD_DIR)/src/code/z_actor_dlftbls.o: include/tables/actor_table.h
$(BUILD_DIR)/src/code/z_effect_soft_sprite_dlftbls.o: include/tables/effect_ss_table.h
$(BUILD_DIR)/src/code/z_game_dlftbls.o: include/tables/gamestate_table.h
$(BUILD_DIR)/src/code/z_scene_table.o: include/tables/scene_table.h include/tables/entrance_table.h
$(BUILD_DIR)/src/audio/general.o: $(SEQUENCE_TABLE) include/tables/sfx/*.h
$(BUILD_DIR)/src/audio/sfx_params.o: include/tables/sfx/*.h
$(BUILD_DIR)/src/%.o: src/%.c
ifneq ($(RUN_CC_CHECK),0)
@@ -814,6 +836,22 @@ ifeq ($(AUDIO_BUILD_DEBUG),1)
@(cmp $(@:.o=.bin) $(patsubst $(BUILD_DIR)/assets/audio/soundfonts/%,$(EXTRACTED_DIR)/baserom_audiotest/audiobank_files/%,$(@:.o=.bin)) && echo "$(<F) OK" || (mkdir -p NONMATCHINGS/soundfonts && cp $(@:.o=.bin) NONMATCHINGS/soundfonts/$(@F:.o=.bin)))
endif
# then assemble the sequences...
$(BUILD_DIR)/assets/audio/sequences/%.o: assets/audio/sequences/%.seq include/audio/aseq.h $(SEQUENCE_TABLE) | $(SOUNDFONT_HEADERS)
$(SEQ_CPP) $(SEQ_CPPFLAGS) $< -o $(@:.o=.s) -MMD -MT $@
$(AS) $(ASFLAGS) -I $(BUILD_DIR)/assets/audio/soundfonts -I include/audio -I $(dir $<) $(@:.o=.s) -o $@
$(BUILD_DIR)/assets/audio/sequences/%.o: $(EXTRACTED_DIR)/assets/audio/sequences/%.seq include/audio/aseq.h $(SEQUENCE_TABLE) | $(SOUNDFONT_HEADERS)
$(SEQ_CPP) $(SEQ_CPPFLAGS) $< -o $(@:.o=.s) -MMD -MT $@
$(AS) $(ASFLAGS) -I $(BUILD_DIR)/assets/audio/soundfonts -I include/audio -I $(dir $<) $(@:.o=.s) -o $@
ifeq ($(AUDIO_BUILD_DEBUG),1)
$(OBJCOPY) -O binary -j.data $@ $(@:.o=.aseq)
@(cmp $(@:.o=.aseq) $(patsubst $(BUILD_DIR)/assets/audio/sequences/%,$(EXTRACTED_DIR)/baserom_audiotest/audioseq_files/%,$(@:.o=.aseq)) && echo "$(<F) OK" || (mkdir -p NONMATCHINGS/sequences && cp $(@:.o=.aseq) NONMATCHINGS/sequences/$(@F:.o=.aseq)))
endif
-include $(SEQUENCE_DEP_FILES)
# put together the tables
$(BUILD_DIR)/assets/audio/samplebank_table.h: $(SAMPLEBANK_BUILD_XMLS)
@@ -822,9 +860,23 @@ $(BUILD_DIR)/assets/audio/samplebank_table.h: $(SAMPLEBANK_BUILD_XMLS)
$(BUILD_DIR)/assets/audio/soundfont_table.h: $(SOUNDFONT_BUILD_XMLS) $(SAMPLEBANK_BUILD_XMLS)
$(ATBLGEN) --fonts $@ $(SOUNDFONT_BUILD_XMLS)
SEQ_ORDER_DEFS := -DDEFINE_SEQUENCE_PTR\(name,seqId,_2,_3,_4\)=*\(name,seqId\) \
-DDEFINE_SEQUENCE\(name,seqId,_2,_3,_4\)=\(name,seqId\)
$(BUILD_DIR)/assets/audio/sequence_order.in: $(SEQUENCE_TABLE)
$(CPP) $(CPPFLAGS) $< $(SEQ_ORDER_DEFS) -o $@
$(BUILD_DIR)/assets/audio/sequence_font_table.s: $(BUILD_DIR)/assets/audio/sequence_order.in $(SEQUENCE_O_FILES)
$(ATBLGEN) --sequences $@ $^
# build the tables into objects, move data -> rodata
$(BUILD_DIR)/src/audio/tables/samplebank_table.o: src/audio/tables/samplebank_table.c $(BUILD_DIR)/assets/audio/samplebank_table.h
$(BUILD_DIR)/src/audio/tables/soundfont_table.o: src/audio/tables/soundfont_table.c $(BUILD_DIR)/assets/audio/soundfont_table.h $(SOUNDFONT_HEADERS)
$(BUILD_DIR)/src/audio/tables/sequence_table.o: src/audio/tables/sequence_table.c $(SEQUENCE_TABLE)
$(BUILD_DIR)/src/audio/tables/sequence_table.o: CFLAGS += -I include/tables
$(BUILD_DIR)/src/audio/tables/%.o: src/audio/tables/%.c
ifneq ($(RUN_CC_CHECK),0)
$(CC_CHECK) $<
endif
@@ -832,13 +884,8 @@ endif
$(LD) -r -T linker_scripts/data_with_rodata.ld $(@:.o=.tmp) -o $@
@$(RM) $(@:.o=.tmp)
$(BUILD_DIR)/src/audio/tables/soundfont_table.o: src/audio/tables/soundfont_table.c $(BUILD_DIR)/assets/audio/soundfont_table.h $(SOUNDFONT_HEADERS)
ifneq ($(RUN_CC_CHECK),0)
$(CC_CHECK) $<
endif
$(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $(@:.o=.tmp) $<
$(LD) -r -T linker_scripts/data_with_rodata.ld $(@:.o=.tmp) -o $@
@$(RM) $(@:.o=.tmp)
$(BUILD_DIR)/assets/audio/sequence_font_table.o: $(BUILD_DIR)/assets/audio/sequence_font_table.s
$(AS) $(ASFLAGS) $< -o $@
# Extra audiobank padding that doesn't belong to any soundfont file
$(BUILD_DIR)/assets/audio/audiobank_padding.o:

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,208 @@
#include "aseq.h"
#include "Soundfont_3.h"
.startseq Sequence_2
.sequence SEQ_0000
/* 0x0000 [0xD3 0x20 ] */ mutebhv 0x20
/* 0x0002 [0xD5 0x46 ] */ mutescale 70
/* 0x0004 [0xD7 0xFF 0xFF ] */ initchan 0b1111111111111111
/* 0x0007 [0xCC 0x00 ] */ ldi 0
/* 0x0009 [0x73 ] */ stio IO_PORT_3
/* 0x000A [0x76 ] */ stio IO_PORT_6
/* 0x000B [0xCC 0xFF ] */ ldi 255
/* 0x000D [0x75 ] */ stio IO_PORT_5
/* 0x000E [0x80 ] */ ldio IO_PORT_0
/* 0x000F [0xC8 0x01 ] */ sub 1
/* 0x0011 [0xF3 0x07 ] */ rbeqz SEQ_001A
/* 0x0013 [0xCC 0x03 ] */ ldi 3
/* 0x0015 [0xFC 0x00 0xC4 ] */ call SEQ_00C4
/* 0x0018 [0xF4 0x05 ] */ rjump SEQ_001F
SEQ_001A:
/* 0x001A [0xCC 0x31 ] */ ldi 49
/* 0x001C [0xFC 0x00 0xC4 ] */ call SEQ_00C4
SEQ_001F:
/* 0x001F [0xCC 0x00 ] */ ldi 0
/* 0x0021 [0x74 ] */ stio IO_PORT_4
/* 0x0022 [0x82 ] */ ldio IO_PORT_2
/* 0x0023 [0xF2 0x0E ] */ rbltz SEQ_0033
/* 0x0025 [0x53 ] */ subio IO_PORT_3
/* 0x0026 [0xF3 0x0B ] */ rbeqz SEQ_0033
/* 0x0028 [0x82 ] */ ldio IO_PORT_2
/* 0x0029 [0x73 ] */ stio IO_PORT_3
/* 0x002A [0xC8 0x01 ] */ sub 1
/* 0x002C [0xF3 0x22 ] */ rbeqz SEQ_0050
/* 0x002E [0x82 ] */ ldio IO_PORT_2
/* 0x002F [0xC8 0x02 ] */ sub 2
/* 0x0031 [0xF3 0x53 ] */ rbeqz SEQ_0086
SEQ_0033:
/* 0x0033 [0xCE 0x0B ] */ rand 11
/* 0x0035 [0x55 ] */ subio IO_PORT_5
/* 0x0036 [0xF3 0x04 ] */ rbeqz SEQ_003C
/* 0x0038 [0xCE 0x0B ] */ rand 11
/* 0x003A [0xF4 0x0C ] */ rjump SEQ_0048
SEQ_003C:
/* 0x003C [0xCE 0x0B ] */ rand 11
/* 0x003E [0xF3 0x04 ] */ rbeqz SEQ_0044
/* 0x0040 [0xC8 0x01 ] */ sub 1
/* 0x0042 [0xF4 0x04 ] */ rjump SEQ_0048
SEQ_0044:
/* 0x0044 [0xCC 0x0B ] */ ldi 11
/* 0x0046 [0xC8 0x01 ] */ sub 1
SEQ_0048:
/* 0x0048 [0x75 ] */ stio IO_PORT_5
/* 0x0049 [0xC8 0xFC ] */ sub 252
/* 0x004B [0xFC 0x00 0xC4 ] */ call SEQ_00C4
/* 0x004E [0xF4 0xCF ] */ rjump SEQ_001F
SEQ_0050:
/* 0x0050 [0xCC 0x01 ] */ ldi 1
/* 0x0052 [0x74 ] */ stio IO_PORT_4
/* 0x0053 [0xCC 0xFF ] */ ldi 255
/* 0x0055 [0x75 ] */ stio IO_PORT_5
/* 0x0056 [0xCC 0x0F ] */ ldi 15
/* 0x0058 [0xFC 0x00 0xC4 ] */ call SEQ_00C4
SEQ_005B:
/* 0x005B [0x82 ] */ ldio IO_PORT_2
/* 0x005C [0xF2 0x0B ] */ rbltz SEQ_0069
/* 0x005E [0x53 ] */ subio IO_PORT_3
/* 0x005F [0xF3 0x08 ] */ rbeqz SEQ_0069
/* 0x0061 [0x82 ] */ ldio IO_PORT_2
/* 0x0062 [0x73 ] */ stio IO_PORT_3
/* 0x0063 [0xF3 0xBA ] */ rbeqz SEQ_001F
/* 0x0065 [0xC8 0x02 ] */ sub 2
/* 0x0067 [0xF3 0x1D ] */ rbeqz SEQ_0086
SEQ_0069:
/* 0x0069 [0xCE 0x04 ] */ rand 4
/* 0x006B [0x55 ] */ subio IO_PORT_5
/* 0x006C [0xF3 0x04 ] */ rbeqz SEQ_0072
/* 0x006E [0xCE 0x04 ] */ rand 4
/* 0x0070 [0xF4 0x0C ] */ rjump SEQ_007E
SEQ_0072:
/* 0x0072 [0xCE 0x04 ] */ rand 4
/* 0x0074 [0xF3 0x04 ] */ rbeqz SEQ_007A
/* 0x0076 [0xC8 0x01 ] */ sub 1
/* 0x0078 [0xF4 0x04 ] */ rjump SEQ_007E
SEQ_007A:
/* 0x007A [0xCC 0x04 ] */ ldi 4
/* 0x007C [0xC8 0x01 ] */ sub 1
SEQ_007E:
/* 0x007E [0x75 ] */ stio IO_PORT_5
/* 0x007F [0xC8 0xF0 ] */ sub 240
/* 0x0081 [0xFC 0x00 0xC4 ] */ call SEQ_00C4
/* 0x0084 [0xF4 0xD5 ] */ rjump SEQ_005B
SEQ_0086:
/* 0x0086 [0xCC 0x02 ] */ ldi 2
/* 0x0088 [0x74 ] */ stio IO_PORT_4
/* 0x0089 [0xCC 0xFF ] */ ldi 255
/* 0x008B [0x75 ] */ stio IO_PORT_5
/* 0x008C [0xCC 0x14 ] */ ldi 20
/* 0x008E [0xFC 0x00 0xC4 ] */ call SEQ_00C4
SEQ_0091:
/* 0x0091 [0x82 ] */ ldio IO_PORT_2
/* 0x0092 [0xF2 0x0B ] */ rbltz SEQ_009F
/* 0x0094 [0x53 ] */ subio IO_PORT_3
/* 0x0095 [0xF3 0x08 ] */ rbeqz SEQ_009F
/* 0x0097 [0x82 ] */ ldio IO_PORT_2
/* 0x0098 [0x73 ] */ stio IO_PORT_3
/* 0x0099 [0xF3 0x84 ] */ rbeqz SEQ_001F
/* 0x009B [0xC8 0x01 ] */ sub 1
/* 0x009D [0xF3 0xB1 ] */ rbeqz SEQ_0050
SEQ_009F:
/* 0x009F [0xCE 0x03 ] */ rand 3
/* 0x00A1 [0x55 ] */ subio IO_PORT_5
/* 0x00A2 [0xF3 0x04 ] */ rbeqz SEQ_00A8
/* 0x00A4 [0xCE 0x03 ] */ rand 3
/* 0x00A6 [0xF4 0x0C ] */ rjump SEQ_00B4
SEQ_00A8:
/* 0x00A8 [0xCE 0x03 ] */ rand 3
/* 0x00AA [0xF3 0x04 ] */ rbeqz SEQ_00B0
/* 0x00AC [0xC8 0x01 ] */ sub 1
/* 0x00AE [0xF4 0x04 ] */ rjump SEQ_00B4
SEQ_00B0:
/* 0x00B0 [0xCC 0x03 ] */ ldi 3
/* 0x00B2 [0xC8 0x01 ] */ sub 1
SEQ_00B4:
/* 0x00B4 [0x75 ] */ stio IO_PORT_5
/* 0x00B5 [0xC8 0xEB ] */ sub 235
/* 0x00B7 [0xFC 0x00 0xC4 ] */ call SEQ_00C4
/* 0x00BA [0xF4 0xD5 ] */ rjump SEQ_0091
.table TABLE_00BC
entry SEQ_00E8
entry SEQ_00F6
.table TABLE_00C0
entry ARRAY_0110
entry ARRAY_1308
.sequence SEQ_00C4
/* 0x00C4 [0x77 ] */ stio IO_PORT_7
/* 0x00C5 [0xCC 0x00 ] */ ldi 0
/* 0x00C7 [0x70 ] */ stio IO_PORT_0
/* 0x00C8 [0x86 ] */ ldio IO_PORT_6
/* 0x00C9 [0xCD 0x00 0xBC ] */ dyncall TABLE_00BC
SEQ_00CC:
/* 0x00CC [0xFE ] */ delay1
/* 0x00CD [0x00 ] */ testchan 0
/* 0x00CE [0xF3 0xFC ] */ rbeqz SEQ_00CC
/* 0x00D0 [0x06 ] */ testchan 6
/* 0x00D1 [0xF3 0xF9 ] */ rbeqz SEQ_00CC
/* 0x00D3 [0x09 ] */ testchan 9
/* 0x00D4 [0xF3 0xF6 ] */ rbeqz SEQ_00CC
/* 0x00D6 [0x0A ] */ testchan 10
/* 0x00D7 [0xF3 0xF3 ] */ rbeqz SEQ_00CC
/* 0x00D9 [0x0C ] */ testchan 12
/* 0x00DA [0xF3 0xF0 ] */ rbeqz SEQ_00CC
/* 0x00DC [0x0E ] */ testchan 14
/* 0x00DD [0xF3 0xED ] */ rbeqz SEQ_00CC
/* 0x00DF [0x86 ] */ ldio IO_PORT_6
/* 0x00E0 [0xCD 0x00 0xC0 ] */ dyncall TABLE_00C0
/* 0x00E3 [0xCC 0x01 ] */ ldi 1
/* 0x00E5 [0x56 ] */ subio IO_PORT_6
/* 0x00E6 [0x76 ] */ stio IO_PORT_6
/* 0x00E7 [0xFF ] */ end
.sequence SEQ_00E8
/* 0x00E8 [0x87 ] */ ldio IO_PORT_7
/* 0x00E9 [0xC7 0x00 0x00 0xF1 ] */ stseq 0, SEQ_00F0 + STSEQ_LDSEQ_SEQ_ID
/* 0x00ED [0xCC 0xFF ] */ ldi 255
/* 0x00EF [0x71 ] */ stio IO_PORT_1
SEQ_00F0:
/* 0x00F0 [0xB1 0x02 0x01 0x10 ] */ ldseq 1, NA_BGM_FIELD_LOGIC, ARRAY_0110
/* 0x00F4 [0xF4 0x0C ] */ rjump SEQ_0102
.sequence SEQ_00F6
/* 0x00F6 [0x87 ] */ ldio IO_PORT_7
/* 0x00F7 [0xC7 0x00 0x00 0xFF ] */ stseq 0, SEQ_00FE + STSEQ_LDSEQ_SEQ_ID
/* 0x00FB [0xCC 0xFF ] */ ldi 255
/* 0x00FD [0x71 ] */ stio IO_PORT_1
SEQ_00FE:
/* 0x00FE [0xB1 0x02 0x13 0x08 ] */ ldseq 1, NA_BGM_FIELD_LOGIC, ARRAY_1308
SEQ_0102:
/* 0x0102 [0xFE ] */ delay1
/* 0x0103 [0x81 ] */ ldio IO_PORT_1
/* 0x0104 [0xF3 0x03 ] */ rbeqz SEQ_0109
/* 0x0106 [0xF2 0xFA ] */ rbltz SEQ_0102
/* 0x0108 [0xFF ] */ end
SEQ_0109:
/* 0x0109 [0xFF ] */ end
.balign 16
.array ARRAY_0110
.fill 4600
.array ARRAY_1308
.fill 4600
.endseq Sequence_2

View File

@@ -29,14 +29,6 @@ incbins:
segment: code
vram: 0x8012A7C0
size: 0x400
- name: gSequenceFontTable
segment: code
vram: 0x80155340
size: 0x1C0
- name: gSequenceTable
segment: code
vram: 0x80155500
size: 0x6F0
- name: aspMainData
segment: code
vram: 0x80155C70

View File

@@ -21,14 +21,6 @@ incbins:
segment: code
vram: 0x800E3A10
size: 0xAF0
- name: gSequenceFontTable
segment: code
vram: 0x801106E0
size: 0x1C0
- name: gSequenceTable
segment: code
vram: 0x801108A0
size: 0x6F0
- name: aspMainData
segment: code
vram: 0x80111010

View File

@@ -21,14 +21,6 @@ incbins:
segment: code
vram: 0x800E3A30
size: 0xAF0
- name: gSequenceFontTable
segment: code
vram: 0x80110700
size: 0x1C0
- name: gSequenceTable
segment: code
vram: 0x801108C0
size: 0x6F0
- name: aspMainData
segment: code
vram: 0x80111030

View File

@@ -21,14 +21,6 @@ incbins:
segment: code
vram: 0x800E60B0
size: 0xAF0
- name: gSequenceFontTable
segment: code
vram: 0x80112EF0
size: 0x1C0
- name: gSequenceTable
segment: code
vram: 0x801130B0
size: 0x6F0
- name: aspMainData
segment: code
vram: 0x80113820

View File

@@ -21,14 +21,6 @@ incbins:
segment: code
vram: 0x800E60B0
size: 0xAF0
- name: gSequenceFontTable
segment: code
vram: 0x80112EF0
size: 0x1C0
- name: gSequenceTable
segment: code
vram: 0x801130B0
size: 0x6F0
- name: aspMainData
segment: code
vram: 0x80113820

View File

@@ -21,14 +21,6 @@ incbins:
segment: code
vram: 0x800E60D0
size: 0xAF0
- name: gSequenceFontTable
segment: code
vram: 0x80112F10
size: 0x1C0
- name: gSequenceTable
segment: code
vram: 0x801130D0
size: 0x6F0
- name: aspMainData
segment: code
vram: 0x80113840

View File

@@ -21,14 +21,6 @@ incbins:
segment: code
vram: 0x800E6090
size: 0xAF0
- name: gSequenceFontTable
segment: code
vram: 0x80112ED0
size: 0x1C0
- name: gSequenceTable
segment: code
vram: 0x80113090
size: 0x6F0
- name: aspMainData
segment: code
vram: 0x80113800

View File

@@ -21,14 +21,6 @@ incbins:
segment: code
vram: 0x800E60B0
size: 0xAF0
- name: gSequenceFontTable
segment: code
vram: 0x80112EF0
size: 0x1C0
- name: gSequenceTable
segment: code
vram: 0x801130B0
size: 0x6F0
- name: aspMainData
segment: code
vram: 0x80113820

View File

@@ -28,14 +28,6 @@ incbins:
segment: code
vram: 0x800E7200
size: 0xAF0
- name: gSequenceFontTable
segment: code
vram: 0x80114060
size: 0x1C0
- name: gSequenceTable
segment: code
vram: 0x80114220
size: 0x6F0
- name: aspMainData
segment: code
vram: 0x80114990

View File

@@ -1,16 +0,0 @@
.include "macro.inc"
/* assembler directives */
.set noat /* allow manual use of $at */
.set noreorder /* don't insert nops after branches */
.set gp=64 /* allow use of 64-bit general purpose registers */
.section .rodata
.balign 16
glabel gSequenceFontTable
.incbin "incbin/gSequenceFontTable"
glabel gSequenceTable
.incbin "incbin/gSequenceTable"

2344
include/audio/aseq.h Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -3,121 +3,18 @@
#include "ultra64.h"
typedef enum SeqId {
/* 0x00 */ NA_BGM_GENERAL_SFX, // General Sound Effects
/* 0x01 */ NA_BGM_NATURE_AMBIENCE, // Environmental nature background sounds
/* 0x02 */ NA_BGM_FIELD_LOGIC, // Hyrule Field
/* 0x03 */ NA_BGM_FIELD_INIT, // Hyrule Field Initial Segment From Loading Area
/* 0x04 */ NA_BGM_FIELD_DEFAULT_1, // Hyrule Field Moving Segment 1
/* 0x05 */ NA_BGM_FIELD_DEFAULT_2, // Hyrule Field Moving Segment 2
/* 0x06 */ NA_BGM_FIELD_DEFAULT_3, // Hyrule Field Moving Segment 3
/* 0x07 */ NA_BGM_FIELD_DEFAULT_4, // Hyrule Field Moving Segment 4
/* 0x08 */ NA_BGM_FIELD_DEFAULT_5, // Hyrule Field Moving Segment 5
/* 0x09 */ NA_BGM_FIELD_DEFAULT_6, // Hyrule Field Moving Segment 6
/* 0x0A */ NA_BGM_FIELD_DEFAULT_7, // Hyrule Field Moving Segment 7
/* 0x0B */ NA_BGM_FIELD_DEFAULT_8, // Hyrule Field Moving Segment 8
/* 0x0C */ NA_BGM_FIELD_DEFAULT_9, // Hyrule Field Moving Segment 9
/* 0x0D */ NA_BGM_FIELD_DEFAULT_A, // Hyrule Field Moving Segment 10
/* 0x0E */ NA_BGM_FIELD_DEFAULT_B, // Hyrule Field Moving Segment 11
/* 0x0F */ NA_BGM_FIELD_ENEMY_INIT, // Hyrule Field Enemy Approaches
/* 0x10 */ NA_BGM_FIELD_ENEMY_1, // Hyrule Field Enemy Near Segment 1
/* 0x11 */ NA_BGM_FIELD_ENEMY_2, // Hyrule Field Enemy Near Segment 2
/* 0x12 */ NA_BGM_FIELD_ENEMY_3, // Hyrule Field Enemy Near Segment 3
/* 0x13 */ NA_BGM_FIELD_ENEMY_4, // Hyrule Field Enemy Near Segment 4
/* 0x14 */ NA_BGM_FIELD_STILL_1, // Hyrule Field Standing Still Segment 1
/* 0x15 */ NA_BGM_FIELD_STILL_2, // Hyrule Field Standing Still Segment 2
/* 0x16 */ NA_BGM_FIELD_STILL_3, // Hyrule Field Standing Still Segment 3
/* 0x17 */ NA_BGM_FIELD_STILL_4, // Hyrule Field Standing Still Segment 4
/* 0x18 */ NA_BGM_DUNGEON, // Dodongo's Cavern
/* 0x19 */ NA_BGM_KAKARIKO_ADULT, // Kakariko Village (Adult)
/* 0x1A */ NA_BGM_ENEMY, // Battle
/* 0x1B */ NA_BGM_BOSS, // Boss Battle "NA_BGM_BOSS00"
/* 0x1C */ NA_BGM_INSIDE_DEKU_TREE, // Inside the Deku Tree "NA_BGM_FAIRY_DUNGEON"
/* 0x1D */ NA_BGM_MARKET, // Market
/* 0x1E */ NA_BGM_TITLE, // Title Theme
/* 0x1F */ NA_BGM_LINK_HOUSE, // House
/* 0x20 */ NA_BGM_GAME_OVER, // Game Over
/* 0x21 */ NA_BGM_BOSS_CLEAR, // Boss Clear
/* 0x22 */ NA_BGM_ITEM_GET, // Obtain Item
/* 0x23 */ NA_BGM_OPENING_GANON, // Enter Ganondorf
/* 0x24 */ NA_BGM_HEART_GET, // Obtain Heart Container
/* 0x25 */ NA_BGM_OCA_LIGHT, // Prelude of Light
/* 0x26 */ NA_BGM_JABU_JABU, // Inside Jabu-Jabu's Belly "NA_BGM_BUYO_DUNGEON"
/* 0x27 */ NA_BGM_KAKARIKO_KID, // Kakariko Village (Child)
/* 0x28 */ NA_BGM_GREAT_FAIRY, // Great Fairy's Fountain "NA_BGM_GODESS"
/* 0x29 */ NA_BGM_ZELDA_THEME, // Zelda's Theme "NA_BGM_HIME"
/* 0x2A */ NA_BGM_FIRE_TEMPLE, // Fire Temple "NA_BGM_FIRE_DUNGEON"
/* 0x2B */ NA_BGM_OPEN_TRE_BOX, // Open Treasure Chest
/* 0x2C */ NA_BGM_FOREST_TEMPLE, // Forest Temple "NA_BGM_FORST_DUNGEON"
/* 0x2D */ NA_BGM_COURTYARD, // Hyrule Castle Courtyard "NA_BGM_HIRAL_GARDEN"
/* 0x2E */ NA_BGM_GANON_TOWER, // Ganondorf's Theme
/* 0x2F */ NA_BGM_LONLON, // Lon Lon Ranch "NA_BGM_RONRON"
/* 0x30 */ NA_BGM_GORON_CITY, // Goron City "NA_BGM_GORON"
/* 0x31 */ NA_BGM_FIELD_MORNING, // Hyrule Field Morning Theme
/* 0x32 */ NA_BGM_SPIRITUAL_STONE, // Spiritual Stone Get "NA_BGM_SPIRIT_STONE"
/* 0x33 */ NA_BGM_OCA_BOLERO, // Bolero of Fire "NA_BGM_OCA_FLAME"
/* 0x34 */ NA_BGM_OCA_MINUET, // Minuet of Forest "NA_BGM_OCA_WIND"
/* 0x35 */ NA_BGM_OCA_SERENADE, // Serenade of Water "NA_BGM_OCA_WATER"
/* 0x36 */ NA_BGM_OCA_REQUIEM, // Requiem of Spirit "NA_BGM_OCA_SOUL"
/* 0x37 */ NA_BGM_OCA_NOCTURNE, // Nocturne of Shadow "NA_BGM_OCA_DARKNESS"
/* 0x38 */ NA_BGM_MINI_BOSS, // Mini-Boss Battle "NA_BGM_MIDDLE_BOSS"
/* 0x39 */ NA_BGM_SMALL_ITEM_GET, // Obtain Small Item "NA_BGM_S_ITEM_GET"
/* 0x3A */ NA_BGM_TEMPLE_OF_TIME, // Temple of Time "NA_BGM_SHRINE_OF_TIME"
/* 0x3B */ NA_BGM_EVENT_CLEAR, // Escape from Lon Lon Ranch
/* 0x3C */ NA_BGM_KOKIRI, // Kokiri Forest
/* 0x3D */ NA_BGM_OCA_FAIRY_GET, // Obtain Fairy Ocarina "NA_BGM_OCA_YOUSEI"
/* 0x3E */ NA_BGM_SARIA_THEME, // Lost Woods "NA_BGM_MAYOIMORI"
/* 0x3F */ NA_BGM_SPIRIT_TEMPLE, // Spirit Temple "NA_BGM_SOUL_DUNGEON"
/* 0x40 */ NA_BGM_HORSE, // Horse Race
/* 0x41 */ NA_BGM_HORSE_GOAL, // Horse Race Goal
/* 0x42 */ NA_BGM_INGO, // Ingo's Theme
/* 0x43 */ NA_BGM_MEDALLION_GET, // Obtain Medallion "NA_BGM_MEDAL_GET"
/* 0x44 */ NA_BGM_OCA_SARIA, // Ocarina Saria's Song
/* 0x45 */ NA_BGM_OCA_EPONA, // Ocarina Epona's Song
/* 0x46 */ NA_BGM_OCA_ZELDA, // Ocarina Zelda's Lullaby
/* 0x47 */ NA_BGM_OCA_SUNS, // Ocarina Sun's Song "NA_BGM_OCA_SUNMOON"
/* 0x48 */ NA_BGM_OCA_TIME, // Ocarina Song of Time
/* 0x49 */ NA_BGM_OCA_STORM, // Ocarina Song of Storms
/* 0x4A */ NA_BGM_NAVI_OPENING, // Fairy Flying "NA_BGM_NAVI"
/* 0x4B */ NA_BGM_DEKU_TREE_CS, // Deku Tree "NA_BGM_DEKUNOKI"
/* 0x4C */ NA_BGM_WINDMILL, // Windmill Hut "NA_BGM_FUSHA"
/* 0x4D */ NA_BGM_HYRULE_CS, // Legend of Hyrule "NA_BGM_HIRAL_DEMO"
/* 0x4E */ NA_BGM_MINI_GAME, // Shooting Gallery
/* 0x4F */ NA_BGM_SHEIK, // Sheik's Theme "NA_BGM_SEAK"
/* 0x50 */ NA_BGM_ZORA_DOMAIN, // Zora's Domain "NA_BGM_ZORA"
/* 0x51 */ NA_BGM_APPEAR, // Enter Zelda
/* 0x52 */ NA_BGM_ADULT_LINK, // Goodbye to Zelda
/* 0x53 */ NA_BGM_MASTER_SWORD, // Master Sword
/* 0x54 */ NA_BGM_INTRO_GANON,
/* 0x55 */ NA_BGM_SHOP, // Shop
/* 0x56 */ NA_BGM_CHAMBER_OF_SAGES, // Chamber of the Sages "NA_BGM_KENJA"
/* 0x57 */ NA_BGM_FILE_SELECT, // File Select
/* 0x58 */ NA_BGM_ICE_CAVERN, // Ice Cavern "NA_BGM_ICE_DUNGEON"
/* 0x59 */ NA_BGM_DOOR_OF_TIME, // Open Door of Temple of Time "NA_BGM_GATE_OPEN"
/* 0x5A */ NA_BGM_OWL, // Kaepora Gaebora's Theme
/* 0x5B */ NA_BGM_SHADOW_TEMPLE, // Shadow Temple "NA_BGM_DARKNESS_DUNGEON"
/* 0x5C */ NA_BGM_WATER_TEMPLE, // Water Temple "NA_BGM_AQUA_DUNGEON"
/* 0x5D */ NA_BGM_BRIDGE_TO_GANONS, // Ganon's Castle Bridge "NA_BGM_BRIDGE"
/* 0x5E */ NA_BGM_OCARINA_OF_TIME, // Ocarina of Time "NA_BGM_SARIA"
/* 0x5F */ NA_BGM_GERUDO_VALLEY, // Gerudo Valley "NA_BGM_GERUDO"
/* 0x60 */ NA_BGM_POTION_SHOP, // Potion Shop "NA_BGM_DRUGSTORE"
/* 0x61 */ NA_BGM_KOTAKE_KOUME, // Kotake & Koume's Theme
/* 0x62 */ NA_BGM_ESCAPE, // Escape from Ganon's Castle
/* 0x63 */ NA_BGM_UNDERGROUND, // Ganon's Castle Under Ground
/* 0x64 */ NA_BGM_GANONDORF_BOSS, // Ganondorf Battle
/* 0x65 */ NA_BGM_GANON_BOSS, // Ganon Battle
/* 0x66 */ NA_BGM_END_DEMO, // Seal of Six Sages
/* 0x67 */ NA_BGM_STAFF_1, // End Credits I
/* 0x68 */ NA_BGM_STAFF_2, // End Credits II
/* 0x69 */ NA_BGM_STAFF_3, // End Credits III
/* 0x6A */ NA_BGM_STAFF_4, // End Credits IV
/* 0x6B */ NA_BGM_FIRE_BOSS, // King Dodongo & Volvagia Boss Battle "NA_BGM_BOSS01"
/* 0x6C */ NA_BGM_TIMED_MINI_GAME, // Mini-Game
/* 0x6D */ NA_BGM_CUTSCENE_EFFECTS, // A small collection of various cutscene sounds
/* 0x7F */ NA_BGM_NO_MUSIC = 0x7F, // No bgm music is played
/* 0x80 */ NA_BGM_NATURE_SFX_RAIN = 0x80, // Related to rain
/* 0xFFFF */ NA_BGM_DISABLED = 0xFFFF
} SeqId;
#define DEFINE_SEQUENCE(_0, seqId, _2, _3, _4) seqId,
#define DEFINE_SEQUENCE_PTR(_0, seqId, _2, _3, _4) seqId,
typedef enum {
#include "tables/sequence_table.h"
NA_BGM_MAX,
NA_BGM_NO_MUSIC = 0x7F,
NA_BGM_NATURE_SFX_RAIN = 0x80,
NA_BGM_DISABLED = 0xFFFF
} NA_BGM;
#undef DEFINE_SEQUENCE
#undef DEFINE_SEQUENCE_PTR
typedef enum SequencePlayerId {
/* 0 */ SEQ_PLAYER_BGM_MAIN,

View File

@@ -55,7 +55,7 @@ typedef struct SfxBankEntry {
* bank 1111000000000000 observed in audio code
*/
#define DEFINE_SFX(enum, _1, _2, _3, _4) enum,
#define DEFINE_SFX(_0, enum, _2, _3, _4, _5) enum,
typedef enum SfxId {
NA_SE_NONE, // Requesting a sfx with this id will play no sound

View File

@@ -0,0 +1,132 @@
/**
* Sequence Table
*
* DEFINE_SEQUENCE should be used to define sequences
* - Argument 0: The name of the sequence, as defined by .startseq in the .seq file
* - Argument 1: The sequence id enum name
* - Argument 2: Storage medium for the sequence (SampleMedium)
* - Argument 3: Cache load policy for the sequence (AudioCacheLoadType)
* - Argument 4: Sequence flags
*
* DEFINE_SEQUENCE_PTR should be used to define pointers to sequences
* - Argument 0: The sequence id enum name of the sequence this entry points to
* - Argument 1: The sequence id enum name for this pointer
* - Argument 2: Storage medium for the sequence (SampleMedium)
* - Argument 3: Cache load policy for the sequence (AudioCacheLoadType)
* - Argument 4: Sequence flags
*/
#if PLATFORM_N64
#define SEQ_0_FLAGS SEQ_FLAG_FANFARE | SEQ_FLAG_ENEMY
#else
#define SEQ_0_FLAGS SEQ_FLAG_FANFARE
#endif
DEFINE_SEQUENCE (Sequence_0, NA_BGM_GENERAL_SFX, MEDIUM_CART, CACHE_LOAD_PERMANENT, SEQ_0_FLAGS ) // general_sfx
DEFINE_SEQUENCE (Sequence_1, NA_BGM_NATURE_AMBIENCE, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_ENEMY ) // nature_ambience
DEFINE_SEQUENCE (Sequence_2, NA_BGM_FIELD_LOGIC, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_logic
DEFINE_SEQUENCE (Sequence_3, NA_BGM_FIELD_INIT, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_init
DEFINE_SEQUENCE (Sequence_4, NA_BGM_FIELD_DEFAULT_1, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_default_1
DEFINE_SEQUENCE (Sequence_5, NA_BGM_FIELD_DEFAULT_2, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_default_2
DEFINE_SEQUENCE (Sequence_6, NA_BGM_FIELD_DEFAULT_3, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_default_3
DEFINE_SEQUENCE (Sequence_7, NA_BGM_FIELD_DEFAULT_4, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_default_4
DEFINE_SEQUENCE (Sequence_8, NA_BGM_FIELD_DEFAULT_5, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_default_5
DEFINE_SEQUENCE (Sequence_9, NA_BGM_FIELD_DEFAULT_6, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_default_6
DEFINE_SEQUENCE (Sequence_10, NA_BGM_FIELD_DEFAULT_7, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_default_7
DEFINE_SEQUENCE (Sequence_11, NA_BGM_FIELD_DEFAULT_8, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_default_8
DEFINE_SEQUENCE (Sequence_12, NA_BGM_FIELD_DEFAULT_9, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_default_9
DEFINE_SEQUENCE (Sequence_13, NA_BGM_FIELD_DEFAULT_A, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_default_a
DEFINE_SEQUENCE (Sequence_14, NA_BGM_FIELD_DEFAULT_B, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_default_b
DEFINE_SEQUENCE (Sequence_15, NA_BGM_FIELD_ENEMY_INIT, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_enemy_init
DEFINE_SEQUENCE (Sequence_16, NA_BGM_FIELD_ENEMY_1, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_enemy_1
DEFINE_SEQUENCE (Sequence_17, NA_BGM_FIELD_ENEMY_2, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_enemy_2
DEFINE_SEQUENCE (Sequence_18, NA_BGM_FIELD_ENEMY_3, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_enemy_3
DEFINE_SEQUENCE (Sequence_19, NA_BGM_FIELD_ENEMY_4, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_enemy_4
DEFINE_SEQUENCE (Sequence_20, NA_BGM_FIELD_STILL_1, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_still_1
DEFINE_SEQUENCE (Sequence_21, NA_BGM_FIELD_STILL_2, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_still_2
DEFINE_SEQUENCE (Sequence_22, NA_BGM_FIELD_STILL_3, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_still_3
DEFINE_SEQUENCE (Sequence_23, NA_BGM_FIELD_STILL_4, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_still_4
DEFINE_SEQUENCE (Sequence_24, NA_BGM_DUNGEON, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_RESUME_PREV | SEQ_FLAG_ENEMY ) // dungeon
DEFINE_SEQUENCE (Sequence_25, NA_BGM_KAKARIKO_ADULT, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_RESUME ) // kakariko_adult
DEFINE_SEQUENCE (Sequence_26, NA_BGM_ENEMY, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // enemy
DEFINE_SEQUENCE (Sequence_27, NA_BGM_BOSS, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_NO_AMBIENCE | SEQ_FLAG_RESTORE) // boss
DEFINE_SEQUENCE (Sequence_28, NA_BGM_INSIDE_DEKU_TREE, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_ENEMY ) // inside_deku_tree
DEFINE_SEQUENCE (Sequence_29, NA_BGM_MARKET, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // market
DEFINE_SEQUENCE (Sequence_30, NA_BGM_TITLE, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // title
DEFINE_SEQUENCE (Sequence_31, NA_BGM_LINK_HOUSE, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_RESUME_PREV ) // link_house
DEFINE_SEQUENCE (Sequence_32, NA_BGM_GAME_OVER, MEDIUM_CART, CACHE_LOAD_PERSISTENT, 0 ) // game_over
DEFINE_SEQUENCE (Sequence_33, NA_BGM_BOSS_CLEAR, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // boss_clear
DEFINE_SEQUENCE (Sequence_34, NA_BGM_ITEM_GET, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // item_get
DEFINE_SEQUENCE (Sequence_35, NA_BGM_OPENING_GANON, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_FANFARE_GANON ) // opening_ganon
DEFINE_SEQUENCE (Sequence_36, NA_BGM_HEART_GET, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // heart_get
DEFINE_SEQUENCE (Sequence_37, NA_BGM_OCA_LIGHT, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // oca_light
DEFINE_SEQUENCE (Sequence_38, NA_BGM_JABU_JABU, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_ENEMY ) // jabu_jabu
DEFINE_SEQUENCE (Sequence_39, NA_BGM_KAKARIKO_KID, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_RESUME ) // kakariko_kid
DEFINE_SEQUENCE (Sequence_40, NA_BGM_GREAT_FAIRY, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // great_fairy
DEFINE_SEQUENCE (Sequence_41, NA_BGM_ZELDA_THEME, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // zelda_theme
DEFINE_SEQUENCE (Sequence_42, NA_BGM_FIRE_TEMPLE, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_ENEMY ) // fire_temple
DEFINE_SEQUENCE (Sequence_43, NA_BGM_OPEN_TRE_BOX, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // open_tre_box
DEFINE_SEQUENCE (Sequence_44, NA_BGM_FOREST_TEMPLE, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_ENEMY ) // forest_temple
DEFINE_SEQUENCE (Sequence_45, NA_BGM_COURTYARD, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // courtyard
DEFINE_SEQUENCE (Sequence_46, NA_BGM_GANON_TOWER, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_NO_AMBIENCE ) // ganon_tower
DEFINE_SEQUENCE (Sequence_47, NA_BGM_LONLON, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // lonlon
DEFINE_SEQUENCE (Sequence_48, NA_BGM_GORON_CITY, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_NO_AMBIENCE ) // goron_city
DEFINE_SEQUENCE (Sequence_49, NA_BGM_FIELD_MORNING, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // field_morning
DEFINE_SEQUENCE (Sequence_50, NA_BGM_SPIRITUAL_STONE, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // spiritual_stone
DEFINE_SEQUENCE (Sequence_51, NA_BGM_OCA_BOLERO, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // oca_bolero
DEFINE_SEQUENCE (Sequence_52, NA_BGM_OCA_MINUET, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // oca_minuet
DEFINE_SEQUENCE (Sequence_53, NA_BGM_OCA_SERENADE, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // oca_serenade
DEFINE_SEQUENCE (Sequence_54, NA_BGM_OCA_REQUIEM, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // oca_requiem
DEFINE_SEQUENCE (Sequence_55, NA_BGM_OCA_NOCTURNE, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // oca_nocturne
DEFINE_SEQUENCE (Sequence_56, NA_BGM_MINI_BOSS, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_NO_AMBIENCE | SEQ_FLAG_RESTORE) // mini_boss
DEFINE_SEQUENCE (Sequence_57, NA_BGM_SMALL_ITEM_GET, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // small_item_get
DEFINE_SEQUENCE (Sequence_58, NA_BGM_TEMPLE_OF_TIME, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // temple_of_time
DEFINE_SEQUENCE (Sequence_59, NA_BGM_EVENT_CLEAR, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // event_clear
DEFINE_SEQUENCE (Sequence_60, NA_BGM_KOKIRI, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_RESUME | SEQ_FLAG_ENEMY ) // kokiri
DEFINE_SEQUENCE (Sequence_61, NA_BGM_OCA_FAIRY_GET, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // oca_fairy_get
DEFINE_SEQUENCE (Sequence_62, NA_BGM_SARIA_THEME, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_ENEMY ) // saria_theme
DEFINE_SEQUENCE (Sequence_63, NA_BGM_SPIRIT_TEMPLE, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_ENEMY ) // spirit_temple
DEFINE_SEQUENCE (Sequence_64, NA_BGM_HORSE, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // horse
DEFINE_SEQUENCE (Sequence_65, NA_BGM_HORSE_GOAL, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // horse_goal
DEFINE_SEQUENCE (Sequence_66, NA_BGM_INGO, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // ingo
DEFINE_SEQUENCE (Sequence_67, NA_BGM_MEDALLION_GET, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // medallion_get
DEFINE_SEQUENCE (Sequence_68, NA_BGM_OCA_SARIA, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // oca_saria
DEFINE_SEQUENCE (Sequence_69, NA_BGM_OCA_EPONA, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // oca_epona
DEFINE_SEQUENCE (Sequence_70, NA_BGM_OCA_ZELDA, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // oca_zelda
DEFINE_SEQUENCE (Sequence_71, NA_BGM_OCA_SUNS, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // oca_suns
DEFINE_SEQUENCE (Sequence_72, NA_BGM_OCA_TIME, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // oca_time
DEFINE_SEQUENCE (Sequence_73, NA_BGM_OCA_STORM, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // oca_storm
DEFINE_SEQUENCE (Sequence_74, NA_BGM_NAVI_OPENING, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // navi_opening
DEFINE_SEQUENCE (Sequence_75, NA_BGM_DEKU_TREE_CS, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // deku_tree_cs
DEFINE_SEQUENCE (Sequence_76, NA_BGM_WINDMILL, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // windmill
DEFINE_SEQUENCE (Sequence_77, NA_BGM_HYRULE_CS, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // hyrule_cs
DEFINE_SEQUENCE (Sequence_78, NA_BGM_MINI_GAME, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_RESUME_PREV ) // mini_game
DEFINE_SEQUENCE (Sequence_79, NA_BGM_SHEIK, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // sheik
DEFINE_SEQUENCE (Sequence_80, NA_BGM_ZORA_DOMAIN, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_RESUME ) // zora_domain
DEFINE_SEQUENCE (Sequence_81, NA_BGM_APPEAR, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // appear
DEFINE_SEQUENCE (Sequence_82, NA_BGM_ADULT_LINK, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // adult_link
DEFINE_SEQUENCE (Sequence_83, NA_BGM_MASTER_SWORD, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // master_sword
DEFINE_SEQUENCE (Sequence_84, NA_BGM_INTRO_GANON, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_FANFARE_GANON ) // intro_ganon
DEFINE_SEQUENCE (Sequence_85, NA_BGM_SHOP, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_RESUME_PREV ) // shop
DEFINE_SEQUENCE (Sequence_86, NA_BGM_CHAMBER_OF_SAGES, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_SKIP_HARP_INTRO ) // chamber_of_sages
DEFINE_SEQUENCE_PTR(NA_BGM_GREAT_FAIRY, NA_BGM_FILE_SELECT, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_SKIP_HARP_INTRO ) // file_select
DEFINE_SEQUENCE (Sequence_88, NA_BGM_ICE_CAVERN, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_ENEMY ) // ice_cavern
DEFINE_SEQUENCE (Sequence_89, NA_BGM_DOOR_OF_TIME, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // door_of_time
DEFINE_SEQUENCE (Sequence_90, NA_BGM_OWL, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // owl
DEFINE_SEQUENCE (Sequence_91, NA_BGM_SHADOW_TEMPLE, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_ENEMY ) // shadow_temple
DEFINE_SEQUENCE (Sequence_92, NA_BGM_WATER_TEMPLE, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_ENEMY ) // water_temple
DEFINE_SEQUENCE (Sequence_93, NA_BGM_BRIDGE_TO_GANONS, MEDIUM_CART, CACHE_LOAD_PERSISTENT, SEQ_FLAG_FANFARE ) // bridge_to_ganons
DEFINE_SEQUENCE (Sequence_94, NA_BGM_OCARINA_OF_TIME, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // ocarina_of_time
DEFINE_SEQUENCE (Sequence_95, NA_BGM_GERUDO_VALLEY, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_RESUME | SEQ_FLAG_ENEMY ) // gerudo_valley
DEFINE_SEQUENCE (Sequence_96, NA_BGM_POTION_SHOP, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // potion_shop
DEFINE_SEQUENCE (Sequence_97, NA_BGM_KOTAKE_KOUME, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // kotake_koume
DEFINE_SEQUENCE (Sequence_98, NA_BGM_ESCAPE, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_NO_AMBIENCE ) // escape
DEFINE_SEQUENCE (Sequence_99, NA_BGM_UNDERGROUND, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // underground
DEFINE_SEQUENCE (Sequence_100, NA_BGM_GANONDORF_BOSS, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_NO_AMBIENCE ) // ganondorf_boss
DEFINE_SEQUENCE (Sequence_101, NA_BGM_GANON_BOSS, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_NO_AMBIENCE ) // ganon_boss
DEFINE_SEQUENCE (Sequence_102, NA_BGM_END_DEMO, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // end_demo
DEFINE_SEQUENCE (Sequence_103, NA_BGM_STAFF_1, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // staff_1
DEFINE_SEQUENCE (Sequence_104, NA_BGM_STAFF_2, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // staff_2
DEFINE_SEQUENCE (Sequence_105, NA_BGM_STAFF_3, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // staff_3
DEFINE_SEQUENCE (Sequence_106, NA_BGM_STAFF_4, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // staff_4
DEFINE_SEQUENCE (Sequence_107, NA_BGM_FIRE_BOSS, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // fire_boss
DEFINE_SEQUENCE (Sequence_108, NA_BGM_TIMED_MINI_GAME, MEDIUM_CART, CACHE_LOAD_TEMPORARY, SEQ_FLAG_RESTORE ) // timed_mini_game
DEFINE_SEQUENCE (Sequence_109, NA_BGM_CUTSCENE_EFFECTS, MEDIUM_CART, CACHE_LOAD_TEMPORARY, 0 ) // cutscene_effects

Some files were not shown because too many files have changed in this diff Show More