split songs into separate files, match some midi files, more scripts

This commit is contained in:
Oliver Bell committed 2022-04-24 02:42:27 +01:00
1 parent 1fa0bbb2f6
commit a35fb59993
536 files changed
+191910 -200041

No files matched your search

+1
View File
@@ -55,6 +55,7 @@ Temporary Items
*.elf
*.map
*.bin
*.hex
*.o
*.dump
build
+1 -1
View File
@@ -87,7 +87,7 @@ compare: $(ROM)
$(SHA1) checksum.sha1
clean:
$(RM) $(ROM) $(ELF) $(MAP) $(OBJS) $(SAMPLE_SUBDIR)/*.bin src/*.s
$(RM) $(ROM) $(ELF) $(MAP) $(OBJS) $(SAMPLE_SUBDIR)/*.bin $(MID_SUBDIR)/*.s src/*.s
tidy:
rm -f $(ROM) $(ELF) $(MAP)
Executable
+3
View File
@@ -0,0 +1,3 @@
xxd baserom.gba > baserom.hex
xxd sa2.gba > sa2.hex
git diff --no-index baserom.hex sa2.hex
-5
View File
@@ -1,5 +0,0 @@
.section .rodata
.include "asm/macros/m4a.inc"
.include "asm/macros/music_voice.inc"
.include "sound/songs.inc"
+257 -1
View File
@@ -74,7 +74,263 @@ SECTIONS
build/sa2/src/m4a_tables.o(.rodata);
build/sa2/data/sound_data.o(.rodata);
build/sa2/sound/songs/midi/song0001.o(.rodata);
build/sa2/data/sound_data2.o(.rodata);
build/sa2/sound/songs/midi/song0002.o(.rodata);
build/sa2/sound/songs/midi/song0003.o(.rodata);
build/sa2/sound/songs/midi/song0004.o(.rodata);
build/sa2/sound/songs/midi/song0005.o(.rodata);
build/sa2/sound/songs/midi/song0006.o(.rodata);
build/sa2/sound/songs/midi/song0007.o(.rodata);
build/sa2/sound/songs/song0009.o(.rodata);
build/sa2/sound/songs/song0013.o(.rodata);
build/sa2/sound/songs/song0014.o(.rodata);
build/sa2/sound/songs/song0015.o(.rodata);
build/sa2/sound/songs/song0016.o(.rodata);
build/sa2/sound/songs/song0017.o(.rodata);
build/sa2/sound/songs/song0018.o(.rodata);
build/sa2/sound/songs/song0019.o(.rodata);
build/sa2/sound/songs/song0020.o(.rodata);
build/sa2/sound/songs/song0021.o(.rodata);
build/sa2/sound/songs/song0022.o(.rodata);
build/sa2/sound/songs/song0023.o(.rodata);
build/sa2/sound/songs/song0024.o(.rodata);
build/sa2/sound/songs/song0025.o(.rodata);
build/sa2/sound/songs/song0026.o(.rodata);
build/sa2/sound/songs/song0027.o(.rodata);
build/sa2/sound/songs/song0028.o(.rodata);
build/sa2/sound/songs/song0029.o(.rodata);
build/sa2/sound/songs/song0031.o(.rodata);
build/sa2/sound/songs/song0032.o(.rodata);
build/sa2/sound/songs/song0033.o(.rodata);
build/sa2/sound/songs/song0034.o(.rodata);
build/sa2/sound/songs/song0035.o(.rodata);
build/sa2/sound/songs/song0036.o(.rodata);
build/sa2/sound/songs/song0037.o(.rodata);
build/sa2/sound/songs/song0038.o(.rodata);
build/sa2/sound/songs/song0041.o(.rodata);
build/sa2/sound/songs/song0042.o(.rodata);
build/sa2/sound/songs/song0043.o(.rodata);
build/sa2/sound/songs/song0044.o(.rodata);
build/sa2/sound/songs/song0045.o(.rodata);
build/sa2/sound/songs/song0046.o(.rodata);
build/sa2/sound/songs/song0048.o(.rodata);
build/sa2/sound/songs/song0049.o(.rodata);
build/sa2/sound/songs/song0050.o(.rodata);
build/sa2/sound/songs/song0051.o(.rodata);
build/sa2/sound/songs/song0052.o(.rodata);
build/sa2/sound/songs/song0053.o(.rodata);
build/sa2/sound/songs/song0054.o(.rodata);
build/sa2/sound/songs/song0055.o(.rodata);
build/sa2/sound/songs/song0056.o(.rodata);
build/sa2/sound/songs/song0057.o(.rodata);
build/sa2/sound/songs/song0058.o(.rodata);
build/sa2/sound/songs/song0059.o(.rodata);
build/sa2/sound/songs/song0061.o(.rodata);
build/sa2/sound/songs/song0064.o(.rodata);
build/sa2/sound/songs/song0066.o(.rodata);
build/sa2/sound/songs/song0102.o(.rodata);
build/sa2/sound/songs/song0103.o(.rodata);
build/sa2/sound/songs/song0104.o(.rodata);
build/sa2/sound/songs/song0105.o(.rodata);
build/sa2/sound/songs/song0106.o(.rodata);
build/sa2/sound/songs/song0107.o(.rodata);
build/sa2/sound/songs/song0108.o(.rodata);
build/sa2/sound/songs/song0109.o(.rodata);
build/sa2/sound/songs/song0110.o(.rodata);
build/sa2/sound/songs/song0111.o(.rodata);
build/sa2/sound/songs/song0112.o(.rodata);
build/sa2/sound/songs/song0113.o(.rodata);
build/sa2/sound/songs/song0114.o(.rodata);
build/sa2/sound/songs/song0115.o(.rodata);
build/sa2/sound/songs/song0116.o(.rodata);
build/sa2/sound/songs/song0117.o(.rodata);
build/sa2/sound/songs/song0118.o(.rodata);
build/sa2/sound/songs/song0119.o(.rodata);
build/sa2/sound/songs/song0120.o(.rodata);
build/sa2/sound/songs/song0121.o(.rodata);
build/sa2/sound/songs/song0125.o(.rodata);
build/sa2/sound/songs/song0126.o(.rodata);
build/sa2/sound/songs/song0127.o(.rodata);
build/sa2/sound/songs/song0128.o(.rodata);
build/sa2/sound/songs/song0129.o(.rodata);
build/sa2/sound/songs/song0131.o(.rodata);
build/sa2/sound/songs/song0135.o(.rodata);
build/sa2/sound/songs/song0138.o(.rodata);
build/sa2/sound/songs/song0139.o(.rodata);
build/sa2/sound/songs/song0140.o(.rodata);
build/sa2/sound/songs/song0141.o(.rodata);
build/sa2/sound/songs/song0142.o(.rodata);
build/sa2/sound/songs/song0143.o(.rodata);
build/sa2/sound/songs/song0144.o(.rodata);
build/sa2/sound/songs/song0145.o(.rodata);
build/sa2/sound/songs/song0146.o(.rodata);
build/sa2/sound/songs/song0147.o(.rodata);
build/sa2/sound/songs/song0148.o(.rodata);
build/sa2/sound/songs/song0149.o(.rodata);
build/sa2/sound/songs/song0150.o(.rodata);
build/sa2/sound/songs/song0151.o(.rodata);
build/sa2/sound/songs/song0152.o(.rodata);
build/sa2/sound/songs/song0153.o(.rodata);
build/sa2/sound/songs/song0154.o(.rodata);
build/sa2/sound/songs/song0155.o(.rodata);
build/sa2/sound/songs/song0156.o(.rodata);
build/sa2/sound/songs/song0157.o(.rodata);
build/sa2/sound/songs/song0158.o(.rodata);
build/sa2/sound/songs/song0159.o(.rodata);
build/sa2/sound/songs/song0160.o(.rodata);
build/sa2/sound/songs/song0161.o(.rodata);
build/sa2/sound/songs/song0162.o(.rodata);
build/sa2/sound/songs/song0163.o(.rodata);
build/sa2/sound/songs/song0164.o(.rodata);
build/sa2/sound/songs/song0165.o(.rodata);
build/sa2/sound/songs/song0166.o(.rodata);
build/sa2/sound/songs/song0167.o(.rodata);
build/sa2/sound/songs/song0168.o(.rodata);
build/sa2/sound/songs/song0169.o(.rodata);
build/sa2/sound/songs/song0170.o(.rodata);
build/sa2/sound/songs/song0201.o(.rodata);
build/sa2/sound/songs/song0202.o(.rodata);
build/sa2/sound/songs/song0203.o(.rodata);
build/sa2/sound/songs/song0204.o(.rodata);
build/sa2/sound/songs/song0205.o(.rodata);
build/sa2/sound/songs/song0206.o(.rodata);
build/sa2/sound/songs/song0208.o(.rodata);
build/sa2/sound/songs/song0209.o(.rodata);
build/sa2/sound/songs/song0210.o(.rodata);
build/sa2/sound/songs/song0211.o(.rodata);
build/sa2/sound/songs/song0212.o(.rodata);
build/sa2/sound/songs/song0213.o(.rodata);
build/sa2/sound/songs/song0214.o(.rodata);
build/sa2/sound/songs/song0215.o(.rodata);
build/sa2/sound/songs/song0216.o(.rodata);
build/sa2/sound/songs/song0217.o(.rodata);
build/sa2/sound/songs/song0218.o(.rodata);
build/sa2/sound/songs/song0219.o(.rodata);
build/sa2/sound/songs/song0220.o(.rodata);
build/sa2/sound/songs/song0221.o(.rodata);
build/sa2/sound/songs/song0222.o(.rodata);
build/sa2/sound/songs/song0223.o(.rodata);
build/sa2/sound/songs/song0224.o(.rodata);
build/sa2/sound/songs/song0225.o(.rodata);
build/sa2/sound/songs/song0226.o(.rodata);
build/sa2/sound/songs/song0227.o(.rodata);
build/sa2/sound/songs/song0228.o(.rodata);
build/sa2/sound/songs/song0229.o(.rodata);
build/sa2/sound/songs/song0230.o(.rodata);
build/sa2/sound/songs/song0231.o(.rodata);
build/sa2/sound/songs/song0232.o(.rodata);
build/sa2/sound/songs/song0234.o(.rodata);
build/sa2/sound/songs/song0235.o(.rodata);
build/sa2/sound/songs/song0236.o(.rodata);
build/sa2/sound/songs/song0237.o(.rodata);
build/sa2/sound/songs/song0238.o(.rodata);
build/sa2/sound/songs/song0239.o(.rodata);
build/sa2/sound/songs/song0241.o(.rodata);
build/sa2/sound/songs/song0242.o(.rodata);
build/sa2/sound/songs/song0243.o(.rodata);
build/sa2/sound/songs/song0244.o(.rodata);
build/sa2/sound/songs/song0245.o(.rodata);
build/sa2/sound/songs/song0246.o(.rodata);
build/sa2/sound/songs/song0248.o(.rodata);
build/sa2/sound/songs/song0249.o(.rodata);
build/sa2/sound/songs/song0250.o(.rodata);
build/sa2/sound/songs/song0251.o(.rodata);
build/sa2/sound/songs/song0252.o(.rodata);
build/sa2/sound/songs/song0253.o(.rodata);
build/sa2/sound/songs/song0254.o(.rodata);
build/sa2/sound/songs/song0255.o(.rodata);
build/sa2/sound/songs/song0256.o(.rodata);
build/sa2/sound/songs/song0257.o(.rodata);
build/sa2/sound/songs/song0258.o(.rodata);
build/sa2/sound/songs/song0259.o(.rodata);
build/sa2/sound/songs/song0260.o(.rodata);
build/sa2/sound/songs/song0261.o(.rodata);
build/sa2/sound/songs/song0262.o(.rodata);
build/sa2/sound/songs/song0263.o(.rodata);
build/sa2/sound/songs/song0264.o(.rodata);
build/sa2/sound/songs/song0265.o(.rodata);
build/sa2/sound/songs/song0266.o(.rodata);
build/sa2/sound/songs/song0267.o(.rodata);
build/sa2/sound/songs/song0268.o(.rodata);
build/sa2/sound/songs/song0269.o(.rodata);
build/sa2/sound/songs/song0270.o(.rodata);
build/sa2/sound/songs/song0271.o(.rodata);
build/sa2/sound/songs/song0272.o(.rodata);
build/sa2/sound/songs/song0273.o(.rodata);
build/sa2/sound/songs/song0274.o(.rodata);
build/sa2/sound/songs/song0275.o(.rodata);
build/sa2/sound/songs/song0276.o(.rodata);
build/sa2/sound/songs/song0277.o(.rodata);
build/sa2/sound/songs/song0278.o(.rodata);
build/sa2/sound/songs/song0279.o(.rodata);
build/sa2/sound/songs/song0280.o(.rodata);
build/sa2/sound/songs/song0281.o(.rodata);
build/sa2/sound/songs/song0282.o(.rodata);
build/sa2/sound/songs/song0283.o(.rodata);
build/sa2/sound/songs/song0284.o(.rodata);
build/sa2/sound/songs/song0285.o(.rodata);
build/sa2/sound/songs/song0286.o(.rodata);
build/sa2/sound/songs/song0287.o(.rodata);
build/sa2/sound/songs/song0288.o(.rodata);
build/sa2/sound/songs/song0289.o(.rodata);
build/sa2/sound/songs/song0290.o(.rodata);
build/sa2/sound/songs/song0291.o(.rodata);
build/sa2/sound/songs/song0292.o(.rodata);
build/sa2/sound/songs/song0293.o(.rodata);
build/sa2/sound/songs/song0294.o(.rodata);
build/sa2/sound/songs/song0295.o(.rodata);
build/sa2/sound/songs/song0296.o(.rodata);
build/sa2/sound/songs/song0297.o(.rodata);
build/sa2/sound/songs/song0298.o(.rodata);
build/sa2/sound/songs/song0300.o(.rodata);
build/sa2/sound/songs/song0301.o(.rodata);
build/sa2/sound/songs/song0302.o(.rodata);
build/sa2/sound/songs/song0303.o(.rodata);
build/sa2/sound/songs/song0304.o(.rodata);
build/sa2/sound/songs/song0305.o(.rodata);
build/sa2/sound/songs/song0306.o(.rodata);
build/sa2/sound/songs/song0307.o(.rodata);
build/sa2/sound/songs/song0308.o(.rodata);
build/sa2/sound/songs/song0309.o(.rodata);
build/sa2/sound/songs/song0310.o(.rodata);
build/sa2/sound/songs/song0311.o(.rodata);
build/sa2/sound/songs/song0312.o(.rodata);
build/sa2/sound/songs/song0313.o(.rodata);
build/sa2/sound/songs/song0314.o(.rodata);
build/sa2/sound/songs/song0315.o(.rodata);
build/sa2/sound/songs/song0316.o(.rodata);
build/sa2/sound/songs/song0317.o(.rodata);
build/sa2/sound/songs/song0318.o(.rodata);
build/sa2/sound/songs/song0319.o(.rodata);
build/sa2/sound/songs/song0320.o(.rodata);
build/sa2/sound/songs/song0321.o(.rodata);
build/sa2/sound/songs/song0322.o(.rodata);
build/sa2/sound/songs/song0323.o(.rodata);
build/sa2/sound/songs/song0324.o(.rodata);
build/sa2/sound/songs/song0325.o(.rodata);
build/sa2/sound/songs/song0326.o(.rodata);
build/sa2/sound/songs/song0327.o(.rodata);
build/sa2/sound/songs/song0328.o(.rodata);
build/sa2/sound/songs/song0329.o(.rodata);
build/sa2/sound/songs/song0331.o(.rodata);
build/sa2/sound/songs/song0332.o(.rodata);
build/sa2/sound/songs/song0333.o(.rodata);
build/sa2/sound/songs/song0401.o(.rodata);
build/sa2/sound/songs/song0402.o(.rodata);
build/sa2/sound/songs/song0403.o(.rodata);
build/sa2/sound/songs/song0404.o(.rodata);
build/sa2/sound/songs/song0405.o(.rodata);
build/sa2/sound/songs/song0406.o(.rodata);
build/sa2/sound/songs/song0407.o(.rodata);
build/sa2/sound/songs/song0408.o(.rodata);
build/sa2/sound/songs/song0410.o(.rodata);
build/sa2/sound/songs/song0411.o(.rodata);
build/sa2/sound/songs/song0412.o(.rodata);
build/sa2/sound/songs/song0413.o(.rodata);
build/sa2/sound/songs/song0414.o(.rodata);
build/sa2/sound/songs/song0415.o(.rodata);
build/sa2/sound/songs/song0504.o(.rodata);
build/sa2/sound/songs/song0505.o(.rodata);
build/sa2/sound/songs/song0506.o(.rodata);
build/sa2/src/agb_flash.o(.rodata);
build/sa2/src/agb_flash_512k.o(.rodata);
build/sa2/src/agb_flash_le_512k.o(.rodata);
+15 -3
View File
@@ -937,7 +937,7 @@ namespace dump_sound
{
var sb = new StringBuilder();
var sbt = new StringBuilder();
var currName = String.Format("song{0:d3}", id);
var currName = String.Format("song{0:d4}", id);
var realName = currName;
if (soundInfo.ContainsKey(ofs))
{
@@ -1007,8 +1007,20 @@ namespace dump_sound
if (String.Compare(realName, currName) == 0)
{
Directory.CreateDirectory("sound/songs/");
File.WriteAllText(outfilename, sbt.ToString() + sb.ToString());
// int[] goodSongs = {
// 114, 228, 244, 273, 282,
// 286, 296, 222, 231, 259,
// 280, 283, 288, 224, 237,
// 270, 281, 285, 290
// };
int[] goodSongs = {
5
};
if (goodSongs.Contains(id)) {
Directory.CreateDirectory("sound/songs/");
File.WriteAllText(outfilename, sbt.ToString() + sb.ToString());
}
}
return sbt.ToString() + sb.ToString();
+33
View File
@@ -0,0 +1,33 @@
ids = [ 9, 13, 14, 15, 16 ]
exclude = [1,2,3,4,5,6,7]
header = """
.align 2
@********************** Track 1 **********************@
"""
with open('songs_reference_data.inc') as songs:
data = "".join(songs.readlines())
for section in data.split(header):
if " .global" not in section:
continue
section_song_name = section.split(" .global ")[1].split("_1")[0]
print(section_song_name)
no_process = False
for id in exclude:
id_song_name = f"song{id:04d}"
if section_song_name == id_song_name:
no_process = True
break
if no_process:
continue
with open("songs/" + section_song_name + ".s", "w") as f_song:
f_song.write('\t.include "MPlayDef.s"\n')
f_song.write("\t.section .rodata")
f_song.write(header)
f_song.write(section)
+5 -2
View File
@@ -75,9 +75,10 @@ $(MID_SUBDIR)/{name}.s: %.s: %.mid
def extract_from_song_table(rom: BufferedReader):
song_addr_to_name = {}
song_files = []
with open("songs.inc", "w") as f_song_table:
with open('songs.mk', "w") as f_songs_config:
with open("new_songs.inc", "w") as f_song_table:
with open('new_songs.mk', "w") as f_songs_config:
f_song_table.write("\t.align 2\n")
f_song_table.write("\t.global gSongTable\n")
song_table_addr = hex(rom.tell() + 0x08000000).split("0x")[1]
@@ -100,6 +101,7 @@ def extract_from_song_table(rom: BufferedReader):
if track_count != 0:
f_songs_config.write(extract_song_compiler_config(rom, song_name))
song_files.append(f"build/sa2/sound/songs/midi/{song_name}.o(.rodata);")
else:
song_addr_to_name[song_addr] = "dummy_song_header"
@@ -113,6 +115,7 @@ def extract_from_song_table(rom: BufferedReader):
f_song_table.write("\t.byte 0, 0, 0, 0\n")
print(song_addr_to_name)
print("\n".join(song_files))
with open('baserom.gba', 'rb') as rom:
rom.seek(addr_to_offset(song_table_addr))
+45
View File
@@ -0,0 +1,45 @@
import os
tone_to_vg = {
'8AD1544': 'voicegroup013',
'8ACF510': 'voicegroup007',
'8ACF384': 'voicegroup006',
'8AD1160': 'voicegroup012',
'8ACEBD4': 'voicegroup004',
'8AD0710': 'voicegroup010',
'8AD0D10': 'voicegroup011',
'8ACED90': 'voicegroup005',
'8ACE3A0': 'voicegroup001',
'8AD1F94': 'voicegroup015',
'8AD1B44': 'voicegroup014',
'8ACDF50': 'voicegroup000',
'8AD2108': 'voicegroup016',
'8ACE550': 'voicegroup002',
'8ACE784': 'voicegroup003',
'8AD2558': 'voicegroup017',
'8AD2ABC': 'voicegroup019',
'8AD2948': 'voicegroup018',
'8AD42BC': 'voicegroup023',
'8ACFB10': 'voicegroup008',
'8AD30BC': 'voicegroup020',
'8AD36BC': 'voicegroup021',
'8AD0110': 'voicegroup009',
'8AD3CBC': 'voicegroup022',
'8AD470C': 'voicegroup024'
}
for song_file in os.listdir('songs'):
if not song_file.endswith('.s'):
continue
print("sound/songs/" + song_file)
data = ""
with open('songs/' + song_file) as f_song:
data = "".join(f_song.readlines())
for addr in tone_to_vg:
data = data.replace(f"gUnknown_0{addr}", tone_to_vg[addr])
with open('songs/' + song_file, "w") as f_song:
f_song.write(data)
-200029
View File
File diff suppressed because it is too large. Load diff
+1
View File
@@ -0,0 +1 @@
* GOTO in middle of track doesn't handle the ending for some reason
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loaded 100 of 536 files, more files were not shown because too many files have changed in this diff. Show more