summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/mid2agb/midi.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/tools/mid2agb/midi.cpp b/tools/mid2agb/midi.cpp
index 744ef42e8..1458a32b3 100644
--- a/tools/mid2agb/midi.cpp
+++ b/tools/mid2agb/midi.cpp
@@ -773,14 +773,16 @@ void CalculateWaits(std::vector<Event>& events)
}
}
+// This code is (purposely) buggy as shit, to mimic how the real mid2agb worked
int CalculateCompressionScore(std::vector<Event>& events, int index)
{
int score = 0;
- std::uint8_t lastParam1 = events[index].param1;
+ std::uint8_t lastParam1 = (std::uint8_t)events[index].type;
std::uint8_t lastVelocity = 0x80u;
EventType lastType = events[index].type;
std::int32_t lastDuration = 0x80000000;
std::uint8_t lastNote = 0x80u;
+ std::int32_t lastParam2;
if (events[index].time > 0)
score++;
@@ -791,10 +793,11 @@ int CalculateCompressionScore(std::vector<Event>& events, int index)
{
int val = 0;
- if (events[i].note != lastNote)
+ // BUG: uses type instead of note
+ if ((std::uint8_t)events[i].type != lastNote)
{
val++;
- lastNote = events[i].note;
+ lastNote = (std::uint8_t)events[i].type;
}
if (events[i].param1 != lastVelocity)
@@ -840,7 +843,10 @@ int CalculateCompressionScore(std::vector<Event>& events, int index)
}
}
- lastParam1 = events[i].param1;
+ // BUG: uses type instead of param1
+ lastParam1 = (std::uint8_t)events[i].type;
+ // unused
+ lastParam2 = events[i].param2;
lastType = events[i].type;
if (events[i].time)