Reply 20 of 21, by RyanRX7
realnc wrote on 2022-07-09, 05:00:
OK, so the above method doesn't work. The game hangs when trying to play that MIDI file. […]
OK, so the above method doesn't work. The game hangs when trying to play that MIDI file.
The way I fixed it is by merging the MIDI events from track 8, which contains only 3 notes and 16 events, into track 6, which didn't play any notes at the time the other track did. So track 6 now switches the instrument to what track 8 wanted, plays the note, then switches back to the instrument track 6 normally plays. I then deleted track 8. I kept the copyright tracks intact instead of removing them and simply hex edited the track count to 8 so they get ignored.
But the resulting midi file was too large, because I had to use another MIDI editor to do it instead of QTractor, because it can't cope with the instrument switching of track 6:
What you need to do in that editor, is hide all tracks except Track 7 ("Timp"), then select that track and select all events (ctrl+a), copy them (ctrl+c), then select Track 5 ("Xylo"), made it visible, and then paste the events with ctrl+v at the exact same position they are in Track 7. After pasting, if they are not at the correct position, you can grab one of the notes with the mouse and drag them to the correct position. They will all be draged together since are all selected due to having pasted them. Now delete Track 7. Do not delete the copyright tracks. Save the file.
But that editor generates MIDI data that is too large. It doesn't optimize the MIDI data. So I had to find and download an old DOS utility called MIDCOMPR.EXE (it's shareware,) and run it in dosbox on the MIDI file.
This will reduce the size so it fits into the HOBO_01.MUS file. It's smaller than the required size, so you need to run "truncate -s 19835" on it. Then open it in a hex editor and change the 12th byte (that's position 0x0b) from 0C to 08. Now put it in HOBO_01.MUS with "dd conv=notrunc bs=1 if=fixed.mid of=HOBO_01.MUS seek=377543" (if that is the correct decimal offset of the "Fight 3" MIDI file inside HOBO_01.MUS of your version of the game. If not, adapt as needed.)
The music now correctly plays in-game and sounds exactly the same as when playing the original, unmodified MIDI file in Munt's MIDI player.
Really solid bit of leg work you put in, and I personally appreciate the effort. I'm currently using the original hack that loses the drum track on Fight3 but your guide is a little beyond my skill level. Shame the company releasing the game back on GOG didn't take care of this beforehand. If there is ever a way I could acquire the patched MUS file that'd be awesome.