Adventures in BMS (Reboot) by Yoshimaster96_2 at 5:31 PM EDT on August 30, 2016
Looking to crack, yet again, the monster that is the BMS file format.

In case you are new, the BMS format is a sequenced format found in several first-party Nintendo games for the GameCube and Wii, such as Sunshine, Pikmin 1/2, Luigi's Mansion, some Double Dash tracks, Zelda, Galaxy, and a few more.

I'm specifically looking for sound effects, as well as looking for some things that were previously missed. So far I found some interesting things:

* A note can have a PPID of 8, in which case it is a 5-byte event rather than a 3-byte event. I think I found 4-byte events too (maybe, verify?)
* Some jump and loop events were inadequately described.
* Other minor oddities I cannot recall ATM.
by AnonRunzes at 1:35 PM EDT on September 3, 2016
Let's hope this doesn't get abandoned again.
But does anyone agree about developing a new format similar to the xSF formats(like .psf, .dsf, etc.)?
by jimbo1qaz at 4:06 PM EDT on September 3, 2016
what happened to yoshimaster96 account?

Also this is what I know about BMS right now: https://gist.github.com/jimbo1qaz/21cb5e742eb89fb854c93623514b94de

Is there any bms to midi/etc converter that handles call/jump/loop?
by Yoshimaster96_2 at 1:08 PM EDT on September 4, 2016
@jimbo1qaz
Forgot my password.

Also, do you know how the jumps work and can't implement it, or do you not know how they work at all.

On an unrelated note (no pun intended), it seems the PPID of 8 on a note only does 5 byte events after all. Its format is:

NN 08 VV ?? ??

NN is the note, VV is the volume, and the two ??s are two values related to note length, though IDK which does what. It DOES turn the note on then off though, and is used extensively in sound effects (found in se.scom, pikise.jam, etc.)
by jimbo1qaz at 3:56 PM EDT on September 4, 2016
So you've been researching BMS further? Do you have any code about it? Online or not?

EDIT: It looks like BMS_DE~1.C supports-ish calls and jumps, but you use C3 and C5 or something, which aren't present in Wind Waker (so I didn't implement).

----

I have a basic implementation of jumps. Arookas has a list of different jump modes, but I don't know if it's complete, nor how different modes work.

I'm trying to maintain the linked-list structure of the original BMS file, while converting note-off events into pitches. This assumes subroutines with note-off events turn the same pitches off every time the subroutine is called. That way, it's easier to convert into other video game formats.

My software is pretty much broken right now.

----

Control (volume) change events have u8, u16, and s16 value. Do you know if the results are relative to magnitude, maximum value, or full swing?

For example: Volume u8(255) vs s16(255) vs s16(32767) vs u16(32767) vs u16(65535)?

I could figure out myself... Once I get my BMS tool *working* again...

edited 4:02 PM EDT September 4, 2016

edited 4:07 PM EDT September 4, 2016
by Uikri at 7:54 PM EDT on October 29, 2016
Hoping this doesn't get abandoned. We got Crystal Chronicles. Hopefully we can get Pikmin 1, 2, and Mario Sunshine, too!
by jimbo1qaz at 4:35 AM EDT on October 30, 2016
Why do we have two threads, anyway?

derselbst posted some code in the other thread: https://hcs64.com/mboard/forum.php?showthread=37639&showpage=7#post_47338


Go to Page 0

Search this thread

Show all threads

Reply to this thread:

User Name Tags:

bold: [b]bold[/b]
italics: [i]italics[/i]
emphasis: [em]emphasis[/em]
underline: [u]underline[/u]
small: [small]small[/small]
Link: [url=http://www.google.com]Link[/url]

[img=https://www.hcs64.com/images/mm1.png]
Password
Subject
Message

HCS Forum Index
Halley's Comet Software
forum source