Mario Kart 64 Fast Music by ugetab at 6:02 PM EDT on September 27, 2006
I managed to figure out a way to make the USF set play tracks the way the game does on the last lap of a track. The files are just a collection of additional miniusfs that can go in with the original miniusf tracks. All tracks have the faster versions, not just the race track themes.
One thing that would make the addition of these tracks a little easier is if you would add the letter a after the track number for the faster tracks. The way that they show up in a folder now is:
Mario Kart 64 - 01 - Mario Kart 64 Theme (Fast).miniusf Mario Kart 64 - 01 - Mario Kart 64 Theme.miniusf
Adding the "a" would result in:
Mario Kart 64 - 01 - Mario Kart 64 Theme.miniusf Mario Kart 64 - 01a - Mario Kart 64 Theme (Fast).miniusf
This way the "real" track comes first. That may be a personal preference deal for me, but there is my opinion.
Thanks again for the additional tracks.
edited 6:12 PM EDT September 27, 2006
by Tanookirby at 6:18 PM EDT on September 27, 2006
That is interesting. Did you know that the music - normal or fast - plays faster in the game than in the USF set? Maybe you should try correcting that problem too.
On my computer, the music has an issue of rythm, but not base speed. I'd have to duplicate the problem in an emulator to have any chance of fixing it in the set.
Updated the set with new filenames so original tracks come first.
I determined that the music was using different speed values between different normal tracks, and since I would need the normal values anyways, I explicitly defined the normal speed from the game in the normal speed tracks, and the fast speed was calculated when neccesary for the rest of the tracks.
If they still don't sound right, then it's probably something I won't be fixing.
Added split-apart Banjo-Kazooie tracks. If there's anything wrong, tell me. Since there's 85 resulting tracks that I had to micro-manage on several levels, I'd be surprised if I didn't do something wrong.
I am listening to the tracks as I type. They're really good. I'm also changing the order and names of some of the songs so that they are consistent enough.
BTW, Thanks a lot. Many rippers have struggled and failed to do what you have done.
I found one problem in the Banjo-Kazooie set. The file called "Rusty Bucket Bay (Normal with a few extra clicks)" is not supposed to have the whistles.
Banjo-Tooie Channel Muting Information: 8007A424 = Channels Active At Any Given Time (C5038 in USFLIB, 07A90C in miniusf)
Set instruments used: 800230C0 = 240A???? miniusf (04000000 1C380200 ????0A24)
The set is still preliminary, but I'm sure the first notes can be made to work by someone who has the right tools, I think. My guess is calling the play routine once or twice with the dynamic sound values correct could get the first notes right, but I'm not in the mood to go that far at the moment.
If you use Project64 1.6, then you can use save-states that aren't compressed, save a state where you want music info, and check address 7AB80 in the save state file for the value to use for specific dynamic music values for the miniusfs.
If the information isn't at that spot in the save for you, search for the string 28 0E 06 80, and subtract 0x30 from the address to get to the info. There should only be 1 of these, but if there's more, it shouldn't be hard to test changing the values you spot to see if it mutes any channel.
edit: it also seems to be freezing a short time into songs that have muted channels. It is beyond my current ability to fix this problem.
I just got done playing Banjo-Kazooie all the way through. Confirmed some of the guesses I made, and fixed the 'Whistle Puzzle' music, as well as the Spiral Mountain (Normal) track.
801D72F0 = Theme currently active. Go to a place with a different dynamic theme, then change this value to get a different them than normal
The current rip is missing a few samples from some variations. You can listen for those missing samples between the game and the USF set using the GS address. Plug in the variation number as the code value. #9 is missing some drum samples.
If there are other places with variants on music, the address changes for toad town may be able to select those alternate themes as well.
There does appear to be a speed variable in the memory near the channels. 8007A418, or 0C bytes behind the channel info. It does change for some songs, but until the data can be used in the USF set, I don't feel there's a need to hurry up with getting it done.
I put together a USFLib with all the samples needed to play the Toad Town variations correctly. I'm not familiar enough with Paper Mario's coding to be able to optimize the rip like HCS did, so I just included all samples I could manage. This almost tripled the size of the usflib, but it does work, and I did use an optimized reduction routine, so I doubt the same sample data could be made any smaller with the current USF compression technique.
There are tracks left in Banjo-Kazooie that need splitting, which are are Grunty's Lament and Tooty's theme. Both have a nasty bubbling lava instrument in the background, and the Rusty Bucket Bay engine room tracks (aquatic and normal) have the machinery sounds in it.
Grunty's Lament and Tooty's theme(if you're refering to the Furnace Fun themes for winning) are supposed to have those sound effects. I just checked with a warp code and a mere 2 questions on the Furnace Fun board.
Rusty Bucket Bay engine room - 1. What track number (56?) 2. If it's 56, how did you get underwater music to play?
by nensondubois at 5:59 PM EST on November 7, 2007
Grunty's Lament and Tooty's theme have those bubbling instruments playing in the background, sure, but it doesn't really work with the music. It's much like having the original BK rip, with all the world music mashed together, with every area's instruments playing at once. It should really be separated.
In fact, some things like the wind blowing instrument should be cut from other tracks, like the Final Battle, but they aren't nearly as intrusive upon the actual song as the bubbling is on those two, so it doesn't matter quite as much, and could probably be let go.
As for the RBB engine room, I was wrong; it's just the main theme, not the aquatic theme, that has the machinery effects. The aquatic theme was included in the final version. Apparently, it was unused, but the instruments were left in.
Tanookirby: Read the comments in the USFs themselves. The lava instruments have been cut, but the tracks without the lava instruments don't play in the game. The person just wanted versions of them without the lava, which is why it's not an update, just an unofficial addition.
Nenson: I just checked, it's not my problem if there is one.
Note that b/c/d versions of tracks can be changed with a hex editor already. Just copy the b/c/d base files, then look for this with a hex editor.
04000000 44E22500 ????0F24
The above string is used to block out channels for alternate themes. Using the original track as a basis, you can isolate the value used to play only the instruments you don't want, then subtract that from the originally used value.
If you don't understand that, then you'll be at the mercy of people who do understand it.
by nensondubois at 4:53 PM EST on November 9, 2007
"@ ugetab: It was an error with the program pacemaker I was using on winamp." Time for me to take the time fix it.
Holy fish tanks, Ugetab, that code there is awesome! I've been wanting something like this for ages. Thanks a bundle! :D now I can finally have a chance at completing my Banjo-Kazooie SF2 soundfont ... not likely though with it so low on my priority list, but it's great to be able to play around with channel muting. Being a MIDI sequencer this could have a lot of potential practical use for me. :)
Not to sound greedy, but would you by any chance have something like that for Banjo-Tooie, or perhaps Donkey Kong 64 (I'm guessing not as the music save the tag barrel theme is not dynamic)? Or maybe even Conker? I've wanted things like this for those games for ages but never thought such a thing could exist ...
Thanks again for putting that up! :)
EDIT: May have found it for conker on my own (04000000 9C880100 ????0924 is what I found when messing with Windy and Co.), but it's unstable ... meh. You people have inspired me to look into this stuff. :p
(Yes, I know these codes were found by other people before me, and I'm only re-finding them in the files that they put them together in, but I've never had a success in hex editing like this before, so I wanna have a little personal feeling of victory, I guess. ;))
The concept seems straightforward enough, but I'm not sure of the identification of the instruments. Hex editing has always been interesting to me, so I might compare these files to see what I can learn.
I noticed, when listening on headphones, that Grunty's Furnace Fun, Grunty's Defeat, and Tooty's Theme all seem to have a low bass effect still in them associated with the heat from the lava. If I can figure this out, I'll see if I can remove those last few effects that have been bothering me.
I checked the conker channel switch code. There's a simple pattern to use once you have the sound channel code in place in the miniusf.
04000000 9C880100 XXYY0924
In XX, try FF. If sound plays, go to YY. If not, try these sequentially until there's a failure. You'll know the difference between working and failing by the fact that the song won't play any notes, despite previously-playing channels working before the change. 01 03 07 0F 1F 3F 7F FF
Try sticking an FF into the YY slot. If that fails, try the above with the YY slot.
You should be able to build up the maximum channel list this way for your own use.
Notice that each of the changes involves a single bit being added to the amount. 1, 2, 4, 8, 10, 20, 40, and 80 are all individual channel bits. Since you need an instrument to play to test if the USF crashes, it's better to start from 1, and add bits from there.
Everything's actually playing fine now, it just cuts out any and all silence before an instrument comes in and occasionally plays a little weird during the song (i.e. the strings in Windy that usually start at 1:43 or so come in right at the start when made to play solo, the bass loses a couple notes off the intro when playing solo, the lead banjo skips as it starts up, etc). I think my only playing issues were with me occasionally forgetting to close the file in the hex editor, which forbids Winamp from reading it.