Remaining N64 Midi Tool games by SubDrag at 8:59 PM EST on January 27, 2022
The N64 Sound Tool (https://github.com/jombo23/N64-Tools/tree/master/N64%20Sound%20Tool/N64SoundListToolUpdated/Release) should be able to rip sound from 100% of the games. If you notice anything missing that are not instruments/from the music, please let me know.
However, music is not as simple, and though most are known, there are still a bunch of games without music rippable by the N64 Midi Tool (https://github.com/jombo23/N64-Tools/tree/master/N64%20Midi%20Tool/Release). Just throwing this out there, especially as some of these titles are cross-platform, to see if anyone knows if this any of this music is known on N64 due to the other platforms?
It is possible some don't have music or they are fully contained in sound bank.
Giving this a shot, even identifying one remaining would be nice.
Current list left of music: Dezaemon 3D (J) [!] - Note this format is known, and game has a music editor, it's just...not easily translatable to midi Fighting Force 64 (E) [!] Fighting Force 64 (U) [!] - Sequences are 8C7CC4, filename, size, #samples, sample offset/flags, 8 is looping Kobe Bryant in NBA Courtside (E) [!] - SQ3 Kobe Bryant's NBA Courtside (U) [!] - SQ3 NBA Courtside 2 - Featuring Kobe Bryant (U) [!] - MUS Nightmare Creatures (U) [!] - Unknown .xm format (not fast tracker) Space Invaders (U) [!] Stunt Racer 64 (U) [!] - Challenging Pattern format World Driver Championship (E) (M5) [!] - Challenging Pattern format World Driver Championship (U) [!] - Challenging Pattern format
The one that jumps out at me is the .xm from Nightmare Creatures. It's not FastTracker, but has to be a standard...
Also feel like the EA games probably are music shared among different platforms? And South Park Rally likely is too, but no one ever decoded rbh for music.
Nightmare Creatures .xm 0xF23D20 bin U_XMGOTHIK1B.XM 0xF2C480 bin U_XMGOTHIK2B.XM 0xF366C0 bin U_XMGOTHIK3B.XM 0xF3EE00 bin U_XMGOTHIK4B.XM 0xF48380 bin U_XMBONUS.XM 0xF496A0 bin U_XMBOSS1.XM 0xF4E960 bin U_XMBOSS2.XM 0xF543A0 bin U_XMBOSS3.XM 0xF57CA0 bin U_XMBOSS4.XM
Unfortunately I know none of those games except Shadowman. It uses streamed music which is not ADPCM-based. You can clearly hear the MP3-like compression artifacts. There's actually no point to rip audio from the N64 version because not only is the sound quality absolutely devastating compared to the PC version but the music is also incomplete, which is only logical considering the PC music is over 270 MB in size (ADPCM 44100 Hz stereo).
Thanks that was actually really helpful, I found Shadowman and it's a format I already have decoded. Anyone know of a sound format that includes sin/cos, from the 2000 era, with a table of like 8 shorts it uses with it that it decodes first? It's that. I have it decoding from assembly but would be nice to know what it is.
None of the remaining games were Konami as far as I know? They weren't for sound at least.
Any help identifying music would be appreciated.
Also note: Found out Turok 2, Turok 3, All-Star Baseball, NFL QB Club 99, 2000, 2001 (not 98), South Park Chef's Luv Shack use the same format as Shadow Man's "Streaming Audio as Music", so they're off the list.
Robotech Crystal Dreams off too since just Compressed N64 Midi.
You're right, I missed two Konami games (Perfect Striker 2 and Jikkyou Stable). Any more in the list?
Think the Madden/Knockout King games music is fully in sound bank.
Current list left of music: Dezaemon 3D (J) [!] Fighting Force 64 (E) [!] Fighting Force 64 (U) [!] Kobe Bryant in NBA Courtside (E) [!] Kobe Bryant's NBA Courtside (U) [!] NBA Courtside 2 - Featuring Kobe Bryant (U) [!] Nightmare Creatures (U) [!] South Park Rally (E) [!] South Park Rally (U) [!] Space Invaders (U) [!] Spider-Man (U) [!] Stunt Racer 64 (U) [!] Super Bowling (J) [!] Super Bowling 64 (U) [!] World Driver Championship (E) (M5) [!] World Driver Championship (U) [!]
40 Winks (Alpha) (Fixed) 40 Winks (E) 40 Winks (USA) Die Hard 64 Prototype - 1 Die Hard 64 Prototype - 2 Die Hard 64 Prototype - 3 Frogger 2 Milestone 4 Mortal Kombat Trilogy (USA) (Proto).5-13-1996 South Park Rally PAL Prototype - Music in rbh
Can someone (Punk7890?) identify the commands in South Park Rally US version. It's super simple. Just keep hitting A till get into level, and when timer hits 1 it starts music. Function 8004E6EC parses.
Debug from program below (RAM addresses slightly vary just use ASM, breakpoint at 8004E6EC)
Debug https://pastebin.com/BX0Y5Mv9
C++ of Music Parse Function (breaks and goes back after seeing a 00 in parse)
Basically has a bitflag of 8 possible commands, that's it.
Yeah it was the best I could do. It's just really slapping together wavs, but I never was able to figure out the timing properly. You can mess with the timing interval to see if you can get it better.
Oh dang, you're right...I never noticed that, sorry. I don't think it's a dropout, it's an accidental gap. It's fixed in latest N64 Sound Tool...
Now as for Sng. It's an ultra simple format...basically timestamp + sample # over and over (though can play up to 4 simultaneously), but I can't figure out the timestamp to samples formula... I set to 32 before. I changed to 128, I think that sounds better for some songs (but weirdly some songs still have spots with no sound, not sure why, even at lower amounts). Maybe you can help me out and compare what I'm putting out to the songs somewhere.
Try again please on latest! And if you can give me the most problematic song and a youtube video or captured output to compare..
Re-Volt has sequenced music for sure. I used N64 Sound Tool on it and it has instrument samples of the main menu music (which is streamed on every other platform).
I made the first post in this thread permanently editable in case you want to keep the list in one place, here's an edit link (do a test edit first before investing much time in case I messed up)
Took some time to take a look at ExciteBike 64 and take some notes. I used the USA rom (U).
For the “SFX†files, it looks like they have extra samples at the end, from the same file, not the following file. (Here i'll referring to each Instrument, as each Instrument has only one Sound). Instrument 0000 has 512 extra samples, Instrument 0001 has 256 extra samples, Instrument 0008 has 128 extra samples, Instrument 001C has 384 extra samples. I wouldn't know if this was on the encoding or decoding side of things. Aside from this, all of the Instruments play at the proper sample rate.
Addressing SNG now: Banks 00 and 05 are the only ones which use 11.025 Hz samples, which play at double speed. 00 only uses one sample at 11.025, but 05 uses 11.025 and 22.050 samples together. Instruments 0052, 0059, and 005A should be 11.025, while 0053-0058 should be 22.050. I don't know how the SNG structure works so I can't say what would be do-able on your end. All of the other Banks (songs) use only 22.050 samples which play at the proper speed. Here I'll be using SNG Bank 02 as an example: At the very beginning, Instruments 4D (bass line) and 4E (drum break) play together, but 4D cuts off halfway through (sample is 2 measures, but plays only 1 measure). Instrument 4E is one measure, and is followed by 43 (another drum break) which is also one measure. This could be an issue with Instruments of different lengths cutting off longer Instruments that are still playing. This also happens at 41 seconds where the fourth beat of the guitar line is a separate Instrument and cuts off the drum break Instrument. At 1:01 in SNG Bank 02 there is an extra 13.7 seconds where nothing plays. Cutting out that gap (using an audio editor), the Instruments that do play again (starting at 1:15) line up with the original song (comparing it to the USF version). Again, though, there is the cut-off issue with Instruments of different lengths. Comparing the N64 Sound Tool SNG and the USF version, it sounds like some of the Sounds could be slightly off 22.050, for example 22.049 or 22.051. It's hard to say. I would be interested in knowing how the SNG structure works, whether it's based on musical tempo or sample offsets. I'm not a programmer so trying to look at the source code is beyond me
Check it out again. It's really close. Just not sure about the 11025 hz samples...they may be half the size...can you scrutinize it one more time - it's much closer. Not sure if they should be stretched out to double the size, so they playback at 22050 hz fully, or what.
The 11.025 samples (Instruments 00, 52, 59, and 5A) should simply play at that rate with no other alterations. see this for reference: https://www.youtube.com/watch?v=U4ccAi35REI
I'm getting confused on how to handle the samples. So instruments 58 and 5A are both 00007634 samples. However, 58 is 22050 hz and 5A is 11025 hz.
In Song 5, they are both reporting, when it plays the sound, to play time range of 0x378. That's what confuses me. So if you do multiplier of 128, it cuts off half of the 11025 hz sound if it is extended to match the 22050 playback rate.
If you grab latest sound tool can you tell me if it sounds off, or what you make of it? I think it is sounding the same, but I could be missing something subtle.
The three instruments in song 05 that are 11.025 are the two main drum/bass loops and the scream. all of the rest are 22.050. Those three sounds are 8 beats long and the whistle melody sounds are 4 beats
These sound great. The sample playback speed is right, the instrument overlap works, and I notice that volume levels have changed a bit. The only problem that all of the tracks stop at the halfway point
Noticed two more problems. Songs 03 and 04 are missing a loop in the last 2 seconds (it's currently silent), which should be Instrument 14. Songs 06 and 07 are missing another instance Instrument 5E at the end. Song 01 is missing Instrument 2F
Another issue: Songs 03 and 04 are identical except for the animal sounds in Song 03, and Song 04 has loud clicks that are probably associated with those animal samples that don't play, at 0.725 seconds, 4.725, 8.103, 9.351. These loud clicks were not present in the previous build, where the Songs only played half length.
Similarly, Song 06 has a loud click at 2.555, and Songs 06 and 07 are identical except for the first 7 seconds. That click however was present in the half length build.
I would still also like to know how the SNG format works, and if there's a sequence of a events similar to MIDI
Not hearing those clicks? It looks to me like Song 3 and 4 are identical, except Song 4 only has 1 track, and track 0 is sound 0x66 which is empty? In a previous version it probably accidentally parsed extra data and had sound when shouldn't? While Song 3 has the same track + animal noises track. What is it supposed to sound like for song 4.
SNG format is ultra simple. It has in beginning table of instrument offsets into the instrument idx table. Then there are basically a series of 4 byte values, which are 2-byte timestamp, 1 byte instrument table index, and 1 byte track # (0-3).
The clicks are easy to see if you invert cancel the rendered output with an audio editor. Invert Song 04 and mix/paste over Song 03 so only the difference remains. I can provide some FLAC files if we're getting different outputs or something. Looking at the half-length build from a couple days ago, Song 04 does have the clicks at the times i described that aren't in the Instrument sounds (11, 19, 1A, and 1B) but they're quieter
Yeah I'm using the newest version. the first click in Song 04 is at 15999 samples: https://gyazo.com/8cafb91f1d7408441d1061365af52ffd
The big click in Song 06 is at 56355 samples: https://gyazo.com/ac8584b13e0c604f209689fdac844b2f
and like my previous post, some of the songs are missing instruments at the very end: https://gyazo.com/136cace147d4e80118f2e026adc20570
Also I noticed that, while i'm pretty certain I was using the same build, I got slightly different output this time. The click is lower than when I used the program yesterday. Could it have something to do with an installed library on my computer or something?
I think there's something wrong with Sound 0x66 ingame? For some reason it's empty too which doesn't make sense. Like the last little bit throws up a random value due to algorithm.
Are you sure there's something missing at end? Maybe it's just supposed to be cutoff earlier.
No, they're definitely missing. The last four measures of 03 and 04 are three instances of Instrument 13 and one of 14, but 14 doesn't play. The last measure of 01 is four instances of 2A concurrently with 2F, and 2F doesn't play. The last four measures of 06 and 07 is two instances of 5E concurrently with two instances of 63, but the second instance of 5E doesn't play. I'm pretty sure the rest are fine
And I'd love to be able to get my hands on the SNG files, even just as a list of timestamps and instrument triggers
The source code is public for sound tool. This is the file that contains SNG (search SNG in hex editor) for US version: https://www.mediafire.com/file/85o08wggr92hivl/eb.bin/file