Points of Required Attention™
Please chime in on a proposed restructuring of the ROM hacking sections.
Views: 88,477,987
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search 04-24-24 02:10 PM
Guest: Register | Login

0 users currently in ROM Hacking | 1 guest

Main - ROM Hacking - SMB3 Music Inserter - WIP Release (beta 1.3) New thread | New reply

Pages: 1 2 3

JaSp
Posted on 11-07-09 03:06 PM (rev. 6 of 11-22-09 05:56 PM) Link | Quote | ID: 118974


Shyguy
Level: 24

Posts: 34/95
EXP: 73277
Next: 4848

Since: 03-02-07
From: Paris, France

Last post: 4348 days
Last view: 4143 days
Hello people!

Here is a WIP release of SMB3 Music Inserter.
As its name suggests, it is an utility to insert new songs into a SMB3 ROM.

How it works :
Using an expanded ROM, it basically overload the game's song loading format to a custom one which can determine an associated prg-rom bank number along with the song index.
This means that you can add up to roughly 189 new songs of the same length as the original ones to your hack ( 7 new banks * 27 original songs = 189 new songs ).

Update:
For now, you can only load the new songs for your levels into a Reuben ROM; I couldn't find an easy and flexible enough way to load song into the original game without screwing everything up. Since a first release of Reuben should be coming soon, you'll just have to wait a little!
An ips patch is still included to add the new system to an original smb3 ROM (after having expanded it with smb3mi) so that you can preview the program's capabilities (by manually loading your song at RAM address $4F5)
Moreover, ASM hackers may create a custom hack to load new songs into the game.


Usage:
The utility can save/load projects. A project is just a list of .smb3song files to be inserted in the game.
Simply add the songs to the list, select another bank if necessary (if you ran out of space for the current bank).
Once you're done, select "Insert to ROM" to insert the new songs into your hack.
Yeah, that simple!

This utility is NOT made to create new songs; this process has to be done separately to create .smb3song files.
Please read the provided .txt files to learn how to write your own songs, or use the included MusicXML to smb3song converter.

There are no instructions provided as to the usage of the utility itself; this way I'll see if it is really self-understandable or if you're having a lot of trouble with the current GUI (although I just explained it a little).

Current release here (beta 1.3 - 2009/11/22)
Requires .NET 3.5 (I think...)
2009/11/22 : Now including a MusicXML to smb3song converter!

Screenshot:


I haven't posted this in the releases board because it is still work in progress.

Please use this thread for suggestions/bug reports.

Planned features :
- XSD validation for .smb3song files (this will allow to exactly locate the errors made in a song file) *DONE*
- Decrypt entirely smb3 music format (some note durations aren't supported for now) *DONE*
- edit instruments for each bank
- auto-adjust parts duration according to each track (fill with silences if tracks aren't set at the same durations and are likely to glitch)
- add human understandable XML entities for values (such as &allegro; to determine a tempo value for example)
- progress bar and log text box for songs insertion into ROM
- wav references of all the rhythm sounds, and possibly make a rhythm pattern editor
- write a MusicXML converter to be able to use trackers/music editors that support this format (kinda midi conversion for instance) *BETA*

Note for ASM hackers : the IPS patch uses free space at $9F10, $E240 (fixed PRG ROM banks)

zbyte
Posted on 11-07-09 05:26 PM (rev. 2 of 11-09-09 04:24 AM) Link | Quote | ID: 118977


Boomerang Brother
Z is Superior!
Level: 66

Posts: 532/1016
EXP: 2386739
Next: 75112

Since: 06-10-09

Last post: 4430 days
Last view: 2909 days
Cool! Well, how will I make more smb3songs out of other music? I patched the normal patch to one of my backup hacks, and I didn't get new music; how do I set this? Also, I opened my backup hack in SMB3 Workshop, and the items disappeared!

____________________
No quotes found; we apologize for the inconvenience. Commas, question marks, and semicolons are available, though.








CKY-9K
Posted on 11-08-09 05:13 AM Link | Quote | ID: 118993


Pokey
Level: 57

Posts: 602/693
EXP: 1430252
Next: 55676

Since: 06-27-07
From: cKy

Last post: 208 days
Last view: 116 days
I did everything and set sprite 0f to X 21, unless you mean 21 in hexidecimal, but then it still doesn't work.

____________________








JaSp
Posted on 11-08-09 01:34 PM Link | Quote | ID: 119007


Shyguy
Level: 24

Posts: 35/95
EXP: 73277
Next: 4848

Since: 03-02-07
From: Paris, France

Last post: 4348 days
Last view: 4143 days
@zbyte: you need to place a sprite #0F in your level to play the new musics
as for the disappearing items, it seems like a bug; what are you referring to exactly by "items" ?
The smb3song format is explained in a text file, it has to be done manually for now.

@cky: yes, it is in hex; can you detail exactly the steps you did please ? which song you added, when did you apply the ips patch, etc.

zbyte
Posted on 11-08-09 03:46 PM (rev. 2 of 11-08-09 03:47 PM) Link | Quote | ID: 119016


Boomerang Brother
Z is Superior!
Level: 66

Posts: 536/1016
EXP: 2386739
Next: 75112

Since: 06-10-09

Last post: 4430 days
Last view: 2909 days
Posted by JaSp
@zbyte: you need to place a sprite #0F in your level to play the new musics
as for the disappearing items, it seems like a bug; what are you referring to exactly by "items" ?
The smb3song format is explained in a text file, it has to be done manually for now.
Whoa. I placed sprite $OF in my level, and the first time, I got Giant Land music (which is set to World 1 in my hack). The second time, I shifted it over to the right side of the screen, and got Plains music. Then I moved it to X: 13 and Y: 22 and got Castle mucis (the king has been transformed). As for the "disappearing items", they're not gone; when SMB3 Workshop is set to use ROM graphics, the objects look clear, but they're still there.

____________________
No quotes found; we apologize for the inconvenience. Commas, question marks, and semicolons are available, though.








JaSp
Posted on 11-08-09 06:28 PM Link | Quote | ID: 119022


Shyguy
Level: 24

Posts: 36/95
EXP: 73277
Next: 4848

Since: 03-02-07
From: Paris, France

Last post: 4348 days
Last view: 4143 days
yeah, basically, when there's a sprite 0F in the level, it will load its x-position value as the new music for the level; you should place it at y = 0 though if you don't want to risk screwing things up.
The new song loading byte format is : bbba aaaa , bbb = bank index, aaaaa = song index (so if b = 0, you can load all original songs into your level, including map songs for example)
Make sure to look at the hexadecimal value of the x-position (lower right corner in smb3ws) and to make it the same as what is written in smb3mi.

So has anyone succeeded in adding a song yet ? I'm starting to get worried here... :/

CKY-9K
Posted on 11-08-09 10:27 PM Link | Quote | ID: 119027


Pokey
Level: 57

Posts: 603/693
EXP: 1430252
Next: 55676

Since: 06-27-07
From: cKy

Last post: 208 days
Last view: 116 days
Posted by JaSp
yeah, basically, when there's a sprite 0F in the level, it will load its x-position value as the new music for the level; you should place it at y = 0 though if you don't want to risk screwing things up.
The new song loading byte format is : bbba aaaa , bbb = bank index, aaaaa = song index (so if b = 0, you can load all original songs into your level, including map songs for example)
Make sure to look at the hexadecimal value of the x-position (lower right corner in smb3ws) and to make it the same as what is written in smb3mi.

So has anyone succeeded in adding a song yet ? I'm starting to get worried here... :/


Should I use the PRG 1 ROM of SMB3?

I patch that rom with the smb3_new-music-format file, then I insert a song with all things on default.

Song is the NSMB song at position 21.

Then I put a 0F sprite at position $21.
It's still the regular plains song.

Maybe it's too far away from the beginning of the screen so it doesn't load the sprite?

____________________








zbyte
Posted on 11-08-09 11:05 PM Link | Quote | ID: 119032


Boomerang Brother
Z is Superior!
Level: 66

Posts: 539/1016
EXP: 2386739
Next: 75112

Since: 06-10-09

Last post: 4430 days
Last view: 2909 days
Posted by CKY-9K
Posted by JaSp
yeah, basically, when there's a sprite 0F in the level, it will load its x-position value as the new music for the level; you should place it at y = 0 though if you don't want to risk screwing things up.
The new song loading byte format is : bbba aaaa , bbb = bank index, aaaaa = song index (so if b = 0, you can load all original songs into your level, including map songs for example)
Make sure to look at the hexadecimal value of the x-position (lower right corner in smb3ws) and to make it the same as what is written in smb3mi.

So has anyone succeeded in adding a song yet ? I'm starting to get worried here... :/

I patch that rom with the smb3_new-music-format file, then I insert a song with all things on default.

Song is the NSMB song at position 21.

Then I put a 0F sprite at position $21.
It's still the regular plains song.

Maybe it's too far away from the beginning of the screen so it doesn't load the sprite?
That's what I did. At first I had put that at both decimal and hex positions, then I just played around with the sprite.

I tried again, and used another backup to test this on. This time, all my graphics were gone, and I started out-of position. Fortunately, the tile I was on allowed me to enter the level below it. Still didn't work. Hm...

____________________
No quotes found; we apologize for the inconvenience. Commas, question marks, and semicolons are available, though.








JaSp
Posted on 11-11-09 07:32 PM Link | Quote | ID: 119191


Shyguy
Level: 24

Posts: 37/95
EXP: 73277
Next: 4848

Since: 03-02-07
From: Paris, France

Last post: 4348 days
Last view: 4143 days
Ok, I looked into it, and it seems that using so-called "unused sprites" would easily mess things up. So I couldn't find a flexible enough way to load custom songs into the game yet.
You'll just have to wait for Reuben at the moment, because things will be MUCH simpler with it!
Sorry for that

I also updated the program so that it will allow you to expand the ROM while conserving your new graphics and such (ips patching is really bad when it comes to using it to expand ROMs).
You can still preview the program's capabilities by manually setting the song index at $4F5 (RAM) with FCEUXD's hex editor.

KP9000
Posted on 11-11-09 07:47 PM Link | Quote | ID: 119194


Boomboom

Level: 90

Posts: 1081/1975
EXP: 6952318
Next: 236291

Since: 02-19-07

Last post: 3578 days
Last view: 3202 days


Would there be a way to export the old original songs from the ROM? I'd like to do a remix of a couple of songs from the original as well as use some parts of them as a base for new ones. Is this possible or will it become possible in the future? Or, could you provide the songs in the XML format in a future release?

____________________

JaSp
Posted on 11-11-09 10:04 PM Link | Quote | ID: 119206


Shyguy
Level: 24

Posts: 38/95
EXP: 73277
Next: 4848

Since: 03-02-07
From: Paris, France

Last post: 4348 days
Last view: 4143 days
I've only written the conversion from string to hex so far and I didn't plan this, but it could be doable in a few hours I guess... however, the XML format isn't very read/edit-friendly, so would that be really useful ?
Wouldn't it be simpler to get a MIDI version of the song, remix it in your favorite tracker, and then write down the score to an xml smb3song ?
I'll see what I can do if you really want it anyway

KP9000
Posted on 11-11-09 11:14 PM Link | Quote | ID: 119211


Boomboom

Level: 90

Posts: 1083/1975
EXP: 6952318
Next: 236291

Since: 02-19-07

Last post: 3578 days
Last view: 3202 days


The GUI is no problem, by the way. Figured it out pretty easily.

I didn't think MIDI would be involved at all in this due to how different the code is, but then I realized that's how you got your Dire Dire Docks track in. I suppose that would be easiest considering there's decent support out there for editing and constructing MIDI files out there.

But yes, I would definitely appreciate a good way to edit and create these files, to help make this program's existence just a bit more worth it on top of how much it already is worth alone.

____________________

CKY-9K
Posted on 11-12-09 02:34 AM Link | Quote | ID: 119225


Pokey
Level: 57

Posts: 604/693
EXP: 1430252
Next: 55676

Since: 06-27-07
From: cKy

Last post: 208 days
Last view: 116 days
Oh cool I really like the NSMB song.

____________________








KP9000
Posted on 11-12-09 08:13 AM Link | Quote | ID: 119236


Boomboom

Level: 90

Posts: 1084/1975
EXP: 6952318
Next: 236291

Since: 02-19-07

Last post: 3578 days
Last view: 3202 days


I am thinking about porting a couple of the Cave Story songs over to here and I was thinking about how the MMC5 mapper had extra sound channels... How hard would it be to take advantage of this and hack it in? I'm thinking it's not very easy to do since you have to tie it in to the music engine and whatnot...

Hell, the Level Format has been rewritten, and Music hacking has been a sort of popular topic. I sure as hell would use it, and contribute several tracks.

____________________

JaSp
Posted on 11-12-09 01:42 PM (rev. 2 of 11-12-09 01:54 PM) Link | Quote | ID: 119238


Shyguy
Level: 24

Posts: 40/95
EXP: 73277
Next: 4848

Since: 03-02-07
From: Paris, France

Last post: 4348 days
Last view: 4143 days
I can see two problems with using these new channels :
- it would require to rewrite the music engine, and adjust all existing songs so that they don't crash with the new engine; not impossible, but it would probably require a lot of time to figure things out and code them in, and I'm not sure it's worth the effort if it is only used by a few persons
- it would 'denature' SMB3's music style, which may or may not be a problem depending on opinions, but personally I think that you need to keep a minimal amount of aspects from the original game when hacking it; else you might just as well create a brand new game
That's more of a personal opinion of course, but the first reason is enough for me to not implement it, at least not for a long time seeing I've got a lot of stuff to finish first.

So, no new channels, but I do plan to include an instrument editor, so that you could change instruments data for each new bank (for square1, square2 and triangle only, probably).

As for editing/creating music files, it is kinda planned.
Several options here :
- create a specific new tracker which would play exactly as it would sound in-game : very long option, since I don't have enough sound and GUI programming knowledge to actually make such as program, so it would require a lot of time for me to figure things out
- create a small tool to convert other formats to this one : much likely, and planned; I still don't know for which format I'll go. I've seen this MusicXML format which seems to be used by many programs (including free ones), and writing a conversion tool doesn't seem that hard to do
This way you could actually convert a MIDI file into the smb3song format, the process would be like that :
MIDI -> MusicXML (using an existing tracker/program) -> smb3song (using a future tool)
You would still need to adjust the MIDI file to make it sound right, because smb3 music format has a LOT of restrictions compared to MIDI; and it would output just one part at a time, you'd probably have to rearrange parts by hand in your smb3song XML.
EDIT: I've just looked a little into the MusicXML specifications, and it seems that a tool to output complete smb3song files from a MusicXML file can be doable!

I have also planned to make a basic rhythm editor (to edit noise & dmc), since I can't see that part being handled very easily with MIDI/MusicXML (this tool shouldn't be too hard to do, it would just output a repeatable pattern as string to include in the smb3song XML).

KP9000
Posted on 11-12-09 08:45 PM Link | Quote | ID: 119258


Boomboom

Level: 90

Posts: 1085/1975
EXP: 6952318
Next: 236291

Since: 02-19-07

Last post: 3578 days
Last view: 3202 days


Sweet. I'm excited for this. I'm pretty sure this is going to be like the MML format in the aspect of learning the note pitches in relation to the letters and whatnot. The only way for me to make any headway though with this is when I was using MML I had been testing often to see if I was on the right track with the notes and all... so I can only hope that there will be a quick and easy way of hearing my work thus far even if its launching an emulator with a test rom...

Thanks, Jaspile, for all your hard work to finally make this happen.

____________________

JaSp
Posted on 11-13-09 12:31 PM Link | Quote | ID: 119290


Shyguy
Level: 24

Posts: 41/95
EXP: 73277
Next: 4848

Since: 03-02-07
From: Paris, France

Last post: 4348 days
Last view: 4143 days
I believe I can make an "Export to NSF" for quick preview purpose, that would replace the first track of smb3 Nsf file and so you would hear the actual track you're working on.

KP9000
Posted on 11-14-09 09:48 AM Link | Quote | ID: 119386


Boomboom

Level: 90

Posts: 1090/1975
EXP: 6952318
Next: 236291

Since: 02-19-07

Last post: 3578 days
Last view: 3202 days


Awesome. That's all that's really ideal. Not having a fancy tracker or piano roll or something like that is really necessary when music hacking finally becomes possible in a much easier way. I hacked the sequence data by hand and it was pretty damn difficult. I am sure that the ability to add several new tracks on top of the old ones is an amazing accomplishment.

Would it be too hard to have the editor launch a user-supplied emulator like FCEUXD for quick load of the nsf's? Also, what is the possibility of adding new DMC samples to the ROM? Whether it be over the existing ones or alongside them?

Thanks again for this JaSp. Really bringing this underrated portion of hacking out of obscurity here, it is much appreciated.

____________________

JaSp
Posted on 11-16-09 12:14 AM (rev. 2 of 11-16-09 12:24 AM) Link | Quote | ID: 119473


Shyguy
Level: 24

Posts: 42/95
EXP: 73277
Next: 4848

Since: 03-02-07
From: Paris, France

Last post: 4348 days
Last view: 4143 days
New version!
- Added XSD validation for smb3song XML files (it will check if the specified file is well-formatted, please let me know if you encounter an error and think that it was not an error!)
- Added NSF exporting : select a song in the list and click on NSF; it will replace the first song of the file with the one selected; you can open the nsf file with the default opener when exporting by checking "Open NSF"
Link is on the first post.
- Added support for all note durations used by the game (new durations are 0.3, 0.55, 0.75, 3.33)

As for the new DMC samples, I'm afraid it might just be too difficult and time-consuming to do. I need to keep some free time for my future smb3 hack

KP9000
Posted on 11-16-09 01:37 AM Link | Quote | ID: 119475


Boomboom

Level: 90

Posts: 1099/1975
EXP: 6952318
Next: 236291

Since: 02-19-07

Last post: 3578 days
Last view: 3202 days


Posted by JaSp
my future smb3 hack
Hearing this gets me all hot and bothered. Seriously, I've played SMB3: SUD. Good stuff. Have it on my Wii.

But I'm going to try to bring some Cave Story tracks over... I don't intend on making them all horrible sounding. You did great with your Dire Dire Docks conversion, and that's what kind of quality I have in mind when I want to transfer over.

____________________
Pages: 1 2 3


Main - ROM Hacking - SMB3 Music Inserter - WIP Release (beta 1.3) New thread | New reply

Acmlmboard 2.1+4δ (2023-01-15)
© 2005-2023 Acmlm, blackhole89, Xkeeper et al.

Page rendered in 0.721 seconds. (348KB of memory used)
MySQL - queries: 135, rows: 174/178, time: 0.711 seconds.