mirror of https://github.com/zeldaret/tmc.git
Fix last music conversion issues
This commit is contained in:
parent
bc858317ec
commit
a46697c2d0
98
assets.yaml
98
assets.yaml
|
@ -62388,8 +62388,10 @@
|
|||
group: 4
|
||||
priority: 0
|
||||
reverb: 0x28
|
||||
nominator: 7
|
||||
denominator: 4
|
||||
timeChanges:
|
||||
nominator: 4
|
||||
denominator: 4
|
||||
time: 168
|
||||
- path: sounds/bgmElementGet.s
|
||||
start: 0xDCCD40
|
||||
type: midi
|
||||
|
@ -63707,6 +63709,10 @@
|
|||
options:
|
||||
group: 13
|
||||
reverb: 0x1e
|
||||
timeChanges:
|
||||
nominator: 4
|
||||
denominator: 4
|
||||
time: 912
|
||||
- path: sounds/bgmStory.s
|
||||
start: 0xdd0a94
|
||||
type: midi
|
||||
|
@ -68691,6 +68697,23 @@
|
|||
- path: sounds/gUnk_08DD955A_1.bin
|
||||
start: 0xdd95f9
|
||||
size: 0xb
|
||||
- path: sounds/bgmRoyalCrypt.s
|
||||
start: 0xdd9604
|
||||
type: midi
|
||||
comment: Crazy timeChanges to avoid pattern creation by mid2agb.
|
||||
options:
|
||||
group: 40
|
||||
reverb: 0x3c
|
||||
timeChanges:
|
||||
- nominator: 8
|
||||
denominator: 4
|
||||
time: 960
|
||||
- nominator: 4
|
||||
denominator: 4
|
||||
time: 1080
|
||||
- nominator: 12
|
||||
denominator: 4
|
||||
time: 1560
|
||||
- path: sounds/bgmElementalSanctuary_track0.bin
|
||||
start: 0xdd9620
|
||||
size: 0x6b
|
||||
|
@ -69105,6 +69128,16 @@
|
|||
- path: sounds/gUnk_08DD9F29_2.bin
|
||||
start: 0xdd9f4c
|
||||
size: 0x4
|
||||
- path: sounds/bgmFightTheme.s
|
||||
start: 0xdd9f50
|
||||
type: midi
|
||||
options:
|
||||
group: 42
|
||||
reverb: 0x28
|
||||
timeChanges:
|
||||
nominator: 2
|
||||
denominator: 4
|
||||
time: 96
|
||||
- path: sounds/bgmBossTheme_track0.bin
|
||||
start: 0xdd9f74
|
||||
size: 0xc
|
||||
|
@ -70360,6 +70393,19 @@
|
|||
- path: sounds/gUnk_08DDBFE9_6.bin
|
||||
start: 0xddc06d
|
||||
size: 0x3
|
||||
- path: sounds/bgmVaatiWrath.s
|
||||
start: 0xddc070
|
||||
type: midi
|
||||
options:
|
||||
group: 47
|
||||
reverb: 0x28
|
||||
timeChanges:
|
||||
- nominator: 3
|
||||
denominator: 4
|
||||
time: 108
|
||||
- nominator: 4
|
||||
denominator: 4
|
||||
time: 540
|
||||
- path: sounds/bgmFightTheme2_track0.bin
|
||||
start: 0xddc09c
|
||||
size: 0xc
|
||||
|
@ -70441,6 +70487,16 @@
|
|||
- path: sounds/gUnk_08DDC233_1.bin
|
||||
start: 0xddc24e
|
||||
size: 0x2
|
||||
- path: sounds/bgmFightTheme2.s
|
||||
start: 0xddc250
|
||||
type: midi
|
||||
options:
|
||||
group: 48
|
||||
reverb: 0x28
|
||||
timeChanges:
|
||||
nominator: 4
|
||||
denominator: 4
|
||||
time: 48
|
||||
- path: sounds/bgmDiggingCave_track0.bin
|
||||
start: 0xddc274
|
||||
size: 0xb
|
||||
|
@ -70495,6 +70551,16 @@
|
|||
- path: sounds/gUnk_08DDC35F_1.bin
|
||||
start: 0xddc391
|
||||
size: 0x3
|
||||
- path: sounds/bgmDiggingCave.s
|
||||
start: 0xddc394
|
||||
type: midi
|
||||
options:
|
||||
group: 49
|
||||
reverb: 0x32
|
||||
timeChanges:
|
||||
nominator: 4
|
||||
denominator: 4
|
||||
time: 108
|
||||
- path: sounds/bgmSwiftbladeDojo_track0_EU.bin
|
||||
variants:
|
||||
- EU
|
||||
|
@ -71047,6 +71113,22 @@
|
|||
- path: sounds/gUnk_08DDCEA2_6.bin
|
||||
start: 0xddcf24
|
||||
size: 0x4
|
||||
- path: sounds/bgmMinishCap.s
|
||||
start: 0xddcf28
|
||||
type: midi
|
||||
options:
|
||||
group: 51
|
||||
reverb: 0x32
|
||||
timeChanges:
|
||||
- nominator: 3
|
||||
denominator: 4
|
||||
time: 96
|
||||
- nominator: 4
|
||||
denominator: 4
|
||||
time: 2952
|
||||
- nominator: 3
|
||||
denominator: 4
|
||||
time: 3144
|
||||
- path: sounds/bgmMtCrenel_track0.bin
|
||||
start: 0xddcf4c
|
||||
size: 0xf
|
||||
|
@ -71335,6 +71417,12 @@
|
|||
- path: sounds/gUnk_08DDD4A1_4.bin
|
||||
start: 0xddd50e
|
||||
size: 0x2
|
||||
- path: sounds/bgmMtCrenel.s
|
||||
start: 0xddd510
|
||||
type: midi
|
||||
options:
|
||||
group: 52
|
||||
reverb: 0x32
|
||||
- path: sounds/bgmPicoriFestival_track0.bin
|
||||
start: 0xddd534
|
||||
size: 0x8
|
||||
|
@ -72208,6 +72296,12 @@
|
|||
starts:
|
||||
EU: 0xeea30b
|
||||
size: 0x1
|
||||
- path: sounds/bgmWindRuins.s
|
||||
start: 0xddec38
|
||||
type: midi
|
||||
options:
|
||||
group: 56
|
||||
reverb: 0x28
|
||||
- path: sounds/bgmLearnScroll_track0_USA-JP-DEMO_USA-DEMO_JP.bin
|
||||
variants:
|
||||
- USA
|
||||
|
|
1550
data/sounds.s
1550
data/sounds.s
File diff suppressed because it is too large
Load Diff
|
@ -152,7 +152,7 @@ void ReadAgbTracks() {
|
|||
|
||||
|
||||
|
||||
int addedPadding = 0;
|
||||
int addedPadding = 8;
|
||||
|
||||
// TODO configurable???
|
||||
g_midiTimeDiv = 24;
|
||||
|
@ -180,19 +180,27 @@ void ReadAgbTracks() {
|
|||
int loopStartTime = 0;
|
||||
|
||||
unsigned int trackEnd =
|
||||
(trackPointers.size() > count ? trackPointers[count] : (g_fileStartOffset + REDUCE_POINTERS)) - 10 -
|
||||
addedPadding; // Use offset to header as end for last track
|
||||
(trackPointers.size() > count ? trackPointers[count] : (g_fileStartOffset + REDUCE_POINTERS)) ; // Use offset to header as end for last track
|
||||
if (g_verbose)
|
||||
std::printf("End of track: %X\n", trackEnd);
|
||||
Seek(FILE_OFFSET + trackEnd - REDUCE_POINTERS);
|
||||
|
||||
// search for a few bytes whether there is a loop end
|
||||
for (int i = 0; i < 5 + addedPadding; i++) {
|
||||
for (int i = 5; i < 10 + addedPadding; i++) {
|
||||
if (trackEnd - i < trackPointer) {
|
||||
// Ignore GOTOs from the previous track.
|
||||
continue;
|
||||
}
|
||||
Seek(FILE_OFFSET + trackEnd - REDUCE_POINTERS -i);
|
||||
if (ReadInt8() == GOTO) {
|
||||
if (g_verbose)
|
||||
std::printf("Has loop: %d\n", i);
|
||||
hasLoop = true;
|
||||
loopAddress = lReadInt32() + FILE_OFFSET - REDUCE_POINTERS;
|
||||
if (loopAddress > 0x1000000) {
|
||||
// The 0xB1 was probably part of the pointer or something.
|
||||
continue;
|
||||
}
|
||||
hasLoop = true;
|
||||
if (g_verbose) {
|
||||
std::printf("Addr: %X\n", GetCurrentPtr());
|
||||
std::printf("Addr: %X\n", loopAddress);
|
||||
|
@ -266,6 +274,17 @@ void ReadAgbTracks() {
|
|||
|
||||
while (!endOfTrack) {
|
||||
// std::printf("type: %X\n", type);
|
||||
if (hasLoop && !foundLoop && GetCurrentPtr()-1 == loopAddress) {
|
||||
if (g_verbose)
|
||||
std::printf("<<<< inserted loop start\n");
|
||||
//foundLoop = true;
|
||||
loopStartTime = currentTime;
|
||||
Event event;
|
||||
event.time = loopStartTime;
|
||||
event.type = EventType::LoopBegin;
|
||||
events.push_back(event);
|
||||
}
|
||||
|
||||
if (g_verbose)
|
||||
std::printf("%X|@%d\t ", GetCurrentPtr() - 1, currentTime);
|
||||
if (type < 0x80) {
|
||||
|
@ -449,6 +468,7 @@ void ReadAgbTracks() {
|
|||
} else {
|
||||
type = note;
|
||||
note = lastNote;
|
||||
velocity = lastVelocity;
|
||||
lastNoteUsed = true;
|
||||
lastVelocityUsed = true;
|
||||
}
|
||||
|
@ -769,16 +789,7 @@ void ReadAgbTracks() {
|
|||
break;
|
||||
}
|
||||
|
||||
if (hasLoop && !foundLoop && GetCurrentPtr() == loopAddress) {
|
||||
if (g_verbose)
|
||||
std::printf("<<<< inserted loop start\n");
|
||||
//foundLoop = true;
|
||||
loopStartTime = currentTime;
|
||||
Event event;
|
||||
event.time = loopStartTime;
|
||||
event.type = EventType::LoopBegin;
|
||||
events.push_back(event);
|
||||
}
|
||||
|
||||
|
||||
// TODO notes, waits,
|
||||
type = ReadInt8();
|
||||
|
|
|
@ -472,7 +472,8 @@ void PrintAgbTrack(std::vector<Event>& events)
|
|||
case EventType::LoopEnd:
|
||||
PrintByte("GOTO");
|
||||
PrintWord("%s_%u_B%u", g_asmLabel.c_str(), g_agbTrack, loopEndBlockNum);
|
||||
PrintSeqLoopLabel(event);
|
||||
//PrintSeqLoopLabel(event); // Breaks same note in EOT bgmCrenelStorm 0xDD4356
|
||||
PrintWait(event.time); // instead just print the wait
|
||||
break;
|
||||
case EventType::LoopEndBegin:
|
||||
PrintByte("GOTO");
|
||||
|
|
Loading…
Reference in New Issue