Register - Login
Views: 99385203
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
04-24-22 03:45:55 AM
Jul - The Cutting Room Floor - How do I rip Sega Genesis music? New poll - New thread - New reply
Next newer thread | Next older thread
AttackedbyGlitch
Member
Level: 15


Posts: 11/38
EXP: 14535
For next: 1849

Since: 10-08-11


Since last post: 8.4 years
Last activity: 6.3 years

Posted on 11-19-11 12:13:02 AM Link | Quote
I would like to know how to manually rip music from Sega Genesis ROMs, because I think the title theme from Super Donkey Kong '99 is longer than what plays ingame. Could someone please tell me how to rip Genesis music?



paulguy

Green Birdo
Level: 93


Posts: 1906/2294
EXP: 8025497
For next: 27313

Since: 09-14-07

From: Buffalo, NY

Since last post: 9.7 years
Last activity: 9.6 years

Posted on 11-19-11 03:59:36 AM Link | Quote
Paulguy's Post configuration
I imagine some emulators have an option for this, right?

____________________
Aoi
Member
Level: 30


Posts: 170/181
EXP: 159643
For next: 6226

Since: 07-18-10


Since last post: 9.9 years
Last activity: 9.9 years

Posted on 11-19-11 04:37:00 AM (last edited by Aoi at 11-19-11 03:29 AM) Link | Quote
Don't most of those (if not all) just basically copy what's being played, rather than rip the actual sound/music data from within the game? (Or, at least, that's the way it was the last time I looked into what the emulators could do with VGM/GYM...)

paulguy

Green Birdo
Level: 93


Posts: 1907/2294
EXP: 8025497
For next: 27313

Since: 09-14-07

From: Buffalo, NY

Since last post: 9.7 years
Last activity: 9.6 years

Posted on 11-19-11 01:53:18 PM Link | Quote
Paulguy's Post configuration
Well, that's pretty much all you can do. It basically makes a saved state with the bare essentials required to play the music. You can't really universally rip a game's pattern and sample data since different games will store things differently.

____________________
ICEknight
Member
Level: 26


Posts: 1/135
EXP: 97118
For next: 5157

Since: 10-25-11


Since last post: 4.1 years
Last activity: 3.9 years

Posted on 11-19-11 04:29:32 PM Link | Quote
Originally posted by paulguy
Well, that's pretty much all you can do. It basically makes a saved state with the bare essentials required to play the music. You can't really universally rip a game's pattern and sample data since different games will store things differently.

Not universally, but there's many Mega Drive sound drivers that have been documented to the point that it's possible to rip their music by extracting it from the ROM rather than logging it with an emulator.

It's something that sadly has never had much support from the communities, in favor of logged music formats like VGM but, for example,the "M1" player supports reading music directly from many Genesis ROMs (and arcade games, for that matter).
paulguy

Green Birdo
Level: 93


Posts: 1910/2294
EXP: 8025497
For next: 27313

Since: 09-14-07

From: Buffalo, NY

Since last post: 9.7 years
Last activity: 9.6 years

Posted on 11-19-11 09:15:44 PM Link | Quote
Paulguy's Post configuration
It's impractical to reverse engineer every video game's music engine, especially when the same music engine can have different variations for every game that uses it. And beyond that, just getting 1 music engine reverse engineered and handling every little quirk is a huge undertaking. People even find errors in stuff like mature MOD or XM playback engines that aren't based on the original code to this day. Better to just have a file with the contents of memory that contains the music engine and music data and interpret that. Much more practical, and assuming you have an accurate emulator, it should be bit-exact output, and having something like an accurate emulator for all sega genesis games is much more useful than an accurate emulator to play music for a handful of games.

____________________
Rachel Mae

Creature of Chaos
Level: 141


Posts: 4608/5929
EXP: 33575602
For next: 544412

Since: 07-03-07

Pronouns: she/her
From: Foxglen

Since last post: 12 days
Last activity: 53 min.

Posted on 11-19-11 10:09:04 PM Link | Quote
Originally posted by paulguy
Better to just have a file with the contents of memory that contains the music engine and music data and interpret that.
Except VGM has neither of those. It is literally just a log of the data that is sent to the sound chips in real time. This means it has to be looped and timed manually, and many bugs and quirks in the music data or sound engine cannot be easily reproduced (e.g. a channel going out of sync, tempo or pitch gradually increasing, instruments changing in subsequent loops).

____________________
Xkeeper

Level: 263


Posts: 19841/25343
EXP: 296714737
For next: 2245716

Since: 07-03-07

Pronouns: they/them/????????

Since last post: 9 days
Last activity: 3 days

Posted on 11-19-11 11:46:00 PM Link | Quote
I was under the impression VGM was a bit more than that, because I'm pretty sure that leaving things infinitely looping does reveal some of those things (like the slipping backing track in Flying Battery Zone, StH3).

Your best bet would be to find a sound test or music modifier code so that you can play the music on an area that won't interrupt it.

____________________
You might think that this layout is specifically EarthBound themed, but it might just be a reference to one of my favorite games.
paulguy

Green Birdo
Level: 93


Posts: 1911/2294
EXP: 8025497
For next: 27313

Since: 09-14-07

From: Buffalo, NY

Since last post: 9.7 years
Last activity: 9.6 years

Posted on 11-20-11 03:01:54 AM Link | Quote
Paulguy's Post configuration
.gym is the one that just records the data written to the ym data ports. As far as I know a .vgm is more involved, along the lines of a .nsf.

____________________
ICEknight
Member
Level: 26


Posts: 2/135
EXP: 97118
For next: 5157

Since: 10-25-11


Since last post: 4.1 years
Last activity: 3.9 years

Posted on 11-20-11 06:30:10 PM (last edited by ICEknight at 11-20-11 03:46 PM) Link | Quote
Originally posted by paulguy
.gym is the one that just records the data written to the ym data ports. As far as I know a .vgm is more involved, along the lines of a .nsf.

Both GYMs and VGMs are logged formats, while NSFs are made out of data directly taken from the ROM. It's just that GYMs don't loop, while VGMs do, after doing some trimming and manually setting the looping point.

VGMs are useful as smaller MP3s that require an emulator, but not for preservation or research purposes.


Some stuff you can find in music read from ROM data, but not in logged music:
  • Any music that's not referenced within the game's code (like Sonic 4's boss music in Sonic 3D Blast, I think).
  • Any undocumented behavior the music tracks might feature after a specific number of loops (Sonic 3's music getting out of sync, Totaka's song in any of the many games it's been featured).




EDIT: Kind of relevant, here's a topic at SMSpower where I had a go at comparing some Master System VGM rips with their respective ROM data. Unsurprisingly, I started finding tons of unused stuff that VGM rippers never knew about (nor seem to care much about, either).
AttackedbyGlitch
Member
Level: 15


Posts: 12/38
EXP: 14535
For next: 1849

Since: 10-08-11


Since last post: 8.4 years
Last activity: 6.3 years

Posted on 11-20-11 07:04:08 PM Link | Quote
It appears that Super Donkey Kong '99's sound engine is also used in other games. See here: http://forums.sonicretro.org/index.php?showtopic=26350
ICEknight
Member
Level: 26


Posts: 3/135
EXP: 97118
For next: 5157

Since: 10-25-11


Since last post: 4.1 years
Last activity: 3.9 years

Posted on 11-20-11 07:07:16 PM Link | Quote
Originally posted by AttackedbyGlitch
It appears that Super Donkey Kong '99's sound engine is also used in other games. See here: http://forums.sonicretro.org/index.php?showtopic=26350


...You're linking to this very topic. =P


Here's a list of all the known sound drivers for the Mega Drive.
Mike
I'M THE BADASS, THANKS!
-cpu

(The admins have spoken. It's time for you to go.)
Level: 25


Posts: 70/118
EXP: 81995
For next: 7625

Since: 02-09-11


Since last post: 10.1 years
Last activity: 9.8 years

Posted on 11-20-11 07:42:55 PM Link | Quote
Try Kega, Xega or use Gens+, if the authors are still active active in the sega emulation area it will already have this feature implanted.
Check under the preference tabs or options menu and see if it has it.


____________________
Destkop screenshots are not signatures
Next newer thread | Next older thread
Jul - The Cutting Room Floor - How do I rip Sega Genesis music? New poll - New thread - New reply


Rusted Logic

Acmlmboard - commit 47be4dc [2021-08-23]
©2000-2022 Acmlm, Xkeeper, Kaito Sinclaire, et al.

32 database queries, 6 query cache hits.
Query execution time:  0.089410 seconds
Script execution time:  0.019861 seconds
Total render time:  0.109271 seconds


TidyHTML vomit below
line 1 column 1 - Warning: missing <!DOCTYPE> declaration
line 2 column 301 - Warning: unescaped & or unknown entity "&page"
line 119 column 11 - Warning: <form> isn't allowed in <table> elements
line 118 column 10 - Info: <table> previously mentioned
line 120 column 11 - Warning: missing <tr>
line 120 column 119 - Warning: missing </font> before </td>
line 124 column 16 - Warning: plain text isn't allowed in <tr> elements
line 120 column 11 - Info: <tr> previously mentioned
line 125 column 68 - Warning: missing </nobr> before </td>
line 141 column 68 - Warning: missing </nobr> before <tr>
line 147 column 35 - Warning: missing <tr>
line 147 column 50 - Warning: missing </font> before </td>
line 148 column 37 - Warning: unescaped & or unknown entity "&id"
line 147 column 203 - Warning: missing </font> before </table>
line 149 column 35 - Warning: missing <tr>
line 149 column 50 - Warning: missing </font> before </td>
line 149 column 91 - Warning: missing </font> before </table>
line 156 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 158 column 9 - Warning: missing <tr>
line 176 column 13 - Warning: missing <tr>
line 177 column 102 - Warning: unescaped & or unknown entity "&postid"
line 186 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 188 column 9 - Warning: missing <tr>
line 206 column 13 - Warning: missing <tr>
line 207 column 102 - Warning: unescaped & or unknown entity "&postid"
line 209 column 74 - Warning: <style> isn't allowed in <td> elements
line 209 column 9 - Info: <td> previously mentioned
line 212 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 214 column 9 - Warning: missing <tr>
line 232 column 13 - Warning: missing <tr>
line 233 column 102 - Warning: unescaped & or unknown entity "&postid"
line 240 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 242 column 9 - Warning: missing <tr>
line 260 column 13 - Warning: missing <tr>
line 261 column 102 - Warning: unescaped & or unknown entity "&postid"
line 263 column 74 - Warning: <style> isn't allowed in <td> elements
line 263 column 9 - Info: <td> previously mentioned
line 266 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 268 column 9 - Warning: missing <tr>
line 286 column 13 - Warning: missing <tr>
line 287 column 102 - Warning: unescaped & or unknown entity "&postid"
line 295 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 297 column 9 - Warning: missing <tr>
line 315 column 13 - Warning: missing <tr>
line 316 column 102 - Warning: unescaped & or unknown entity "&postid"
line 318 column 74 - Warning: <style> isn't allowed in <td> elements
line 318 column 9 - Info: <td> previously mentioned
line 321 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 323 column 9 - Warning: missing <tr>
line 341 column 13 - Warning: missing <tr>
line 342 column 102 - Warning: unescaped & or unknown entity "&postid"
line 344 column 74 - Warning: <link> isn't allowed in <td> elements
line 344 column 9 - Info: <td> previously mentioned
line 347 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 349 column 9 - Warning: missing <tr>
line 367 column 13 - Warning: missing <tr>
line 368 column 102 - Warning: unescaped & or unknown entity "&postid"
line 370 column 74 - Warning: <style> isn't allowed in <td> elements
line 370 column 9 - Info: <td> previously mentioned
line 375 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 377 column 9 - Warning: missing <tr>
line 395 column 13 - Warning: missing <tr>
line 396 column 102 - Warning: unescaped & or unknown entity "&postid"
line 398 column 74 - Warning: <style> isn't allowed in <td> elements
line 398 column 9 - Info: <td> previously mentioned
line 401 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 403 column 9 - Warning: missing <tr>
line 421 column 13 - Warning: missing <tr>
line 422 column 102 - Warning: unescaped & or unknown entity "&postid"
line 425 column 520 - Warning: unescaped & or unknown entity "&t"
line 425 column 526 - Warning: unescaped & or unknown entity "&p"
line 431 column 1 - Warning: missing <li>
line 437 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 439 column 9 - Warning: missing <tr>
line 457 column 13 - Warning: missing <tr>
line 458 column 102 - Warning: unescaped & or unknown entity "&postid"
line 464 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 466 column 9 - Warning: missing <tr>
line 484 column 13 - Warning: missing <tr>
line 485 column 102 - Warning: unescaped & or unknown entity "&postid"
line 495 column 9 - Warning: <div> isn't allowed in <table> elements
line 152 column 17 - Info: <table> previously mentioned
line 497 column 9 - Warning: missing <tr>
line 515 column 13 - Warning: missing <tr>
line 516 column 102 - Warning: unescaped & or unknown entity "&postid"
line 523 column 17 - Warning: missing <tr>
line 523 column 17 - Warning: discarding unexpected <table>
line 526 column 35 - Warning: missing <tr>
line 526 column 50 - Warning: missing </font> before </td>
line 526 column 91 - Warning: missing </font> before </table>
line 528 column 35 - Warning: missing <tr>
line 528 column 50 - Warning: missing </font> before </td>
line 529 column 37 - Warning: unescaped & or unknown entity "&id"
line 528 column 203 - Warning: missing </font> before </table>
line 530 column 17 - Warning: discarding unexpected </textarea>
line 530 column 28 - Warning: discarding unexpected </form>
line 530 column 35 - Warning: discarding unexpected </embed>
line 530 column 43 - Warning: discarding unexpected </noembed>
line 530 column 53 - Warning: discarding unexpected </noscript>
line 530 column 64 - Warning: discarding unexpected </noembed>
line 530 column 74 - Warning: discarding unexpected </embed>
line 530 column 82 - Warning: discarding unexpected </table>
line 530 column 90 - Warning: discarding unexpected </table>
line 532 column 9 - Warning: missing </font> before <table>
line 544 column 25 - Warning: discarding unexpected </font>
line 553 column 57 - Warning: discarding unexpected </font>
line 531 column 1 - Warning: missing </center>
line 120 column 63 - Warning: <img> lacks "alt" attribute
line 125 column 19 - Warning: <td> attribute "width" has invalid value "120px"
line 125 column 93 - Warning: <img> lacks "alt" attribute
line 141 column 19 - Warning: <td> attribute "width" has invalid value "120px"
line 141 column 98 - Warning: <img> lacks "alt" attribute
line 148 column 44 - Warning: <img> proprietary attribute value "absmiddle"
line 148 column 142 - Warning: <img> proprietary attribute value "absmiddle"
line 148 column 246 - Warning: <img> proprietary attribute value "absmiddle"
line 161 column 22 - Warning: <img> lacks "alt" attribute
line 161 column 63 - Warning: <img> lacks "alt" attribute
line 161 column 112 - Warning: <img> lacks "alt" attribute
line 161 column 162 - Warning: <img> lacks "alt" attribute
line 172 column 15 - Warning: <img> lacks "alt" attribute
line 190 column 11 - Warning: <img> lacks "alt" attribute
line 191 column 22 - Warning: <img> lacks "alt" attribute
line 191 column 63 - Warning: <img> lacks "alt" attribute
line 191 column 112 - Warning: <img> lacks "alt" attribute
line 191 column 161 - Warning: <img> lacks "alt" attribute
line 192 column 11 - Warning: <img> lacks "alt" attribute
line 202 column 15 - Warning: <img> lacks "alt" attribute
line 217 column 22 - Warning: <img> lacks "alt" attribute
line 217 column 63 - Warning: <img> lacks "alt" attribute
line 217 column 112 - Warning: <img> lacks "alt" attribute
line 217 column 162 - Warning: <img> lacks "alt" attribute
line 218 column 11 - Warning: <img> lacks "alt" attribute
line 228 column 15 - Warning: <img> lacks "alt" attribute
line 244 column 11 - Warning: <img> lacks "alt" attribute
line 245 column 22 - Warning: <img> lacks "alt" attribute
line 245 column 63 - Warning: <img> lacks "alt" attribute
line 245 column 112 - Warning: <img> lacks "alt" attribute
line 245 column 161 - Warning: <img> lacks "alt" attribute
line 246 column 11 - Warning: <img> lacks "alt" attribute
line 256 column 15 - Warning: <img> lacks "alt" attribute
line 271 column 22 - Warning: <img> lacks "alt" attribute
line 271 column 63 - Warning: <img> lacks "alt" attribute
line 271 column 112 - Warning: <img> lacks "alt" attribute
line 271 column 162 - Warning: <img> lacks "alt" attribute
line 282 column 15 - Warning: <img> lacks "alt" attribute
line 299 column 11 - Warning: <img> lacks "alt" attribute
line 300 column 22 - Warning: <img> lacks "alt" attribute
line 300 column 63 - Warning: <img> lacks "alt" attribute
line 300 column 112 - Warning: <img> lacks "alt" attribute
line 300 column 161 - Warning: <img> lacks "alt" attribute
line 301 column 11 - Warning: <img> lacks "alt" attribute
line 311 column 15 - Warning: <img> lacks "alt" attribute
line 325 column 11 - Warning: <img> lacks "alt" attribute
line 326 column 23 - Warning: <img> lacks "alt" attribute
line 326 column 64 - Warning: <img> lacks "alt" attribute
line 326 column 113 - Warning: <img> lacks "alt" attribute
line 326 column 163 - Warning: <img> lacks "alt" attribute
line 327 column 11 - Warning: <img> lacks "alt" attribute
line 337 column 15 - Warning: <img> lacks "alt" attribute
line 352 column 23 - Warning: <img> lacks "alt" attribute
line 352 column 64 - Warning: <img> lacks "alt" attribute
line 352 column 113 - Warning: <img> lacks "alt" attribute
line 352 column 163 - Warning: <img> lacks "alt" attribute
line 353 column 11 - Warning: <img> lacks "alt" attribute
line 363 column 15 - Warning: <img> lacks "alt" attribute
line 379 column 11 - Warning: <img> lacks "alt" attribute
line 380 column 22 - Warning: <img> lacks "alt" attribute
line 380 column 63 - Warning: <img> lacks "alt" attribute
line 380 column 112 - Warning: <img> lacks "alt" attribute
line 380 column 161 - Warning: <img> lacks "alt" attribute
line 381 column 11 - Warning: <img> lacks "alt" attribute
line 391 column 15 - Warning: <img> lacks "alt" attribute
line 406 column 22 - Warning: <img> lacks "alt" attribute
line 406 column 63 - Warning: <img> lacks "alt" attribute
line 406 column 112 - Warning: <img> lacks "alt" attribute
line 406 column 162 - Warning: <img> lacks "alt" attribute
line 417 column 15 - Warning: <img> lacks "alt" attribute
line 442 column 22 - Warning: <img> lacks "alt" attribute
line 442 column 63 - Warning: <img> lacks "alt" attribute
line 442 column 112 - Warning: <img> lacks "alt" attribute
line 442 column 162 - Warning: <img> lacks "alt" attribute
line 453 column 15 - Warning: <img> lacks "alt" attribute
line 460 column 166 - Warning: <a> attribute "href" lacks value
line 469 column 22 - Warning: <img> lacks "alt" attribute
line 469 column 63 - Warning: <img> lacks "alt" attribute
line 469 column 112 - Warning: <img> lacks "alt" attribute
line 469 column 162 - Warning: <img> lacks "alt" attribute
line 480 column 15 - Warning: <img> lacks "alt" attribute
line 487 column 251 - Warning: <a> attribute "href" lacks value
line 500 column 22 - Warning: <img> lacks "alt" attribute
line 500 column 63 - Warning: <img> lacks "alt" attribute
line 500 column 112 - Warning: <img> lacks "alt" attribute
line 500 column 162 - Warning: <img> lacks "alt" attribute
line 501 column 11 - Warning: <img> lacks "alt" attribute
line 511 column 15 - Warning: <img> lacks "alt" attribute
line 529 column 44 - Warning: <img> proprietary attribute value "absmiddle"
line 529 column 142 - Warning: <img> proprietary attribute value "absmiddle"
line 529 column 246 - Warning: <img> proprietary attribute value "absmiddle"
line 538 column 25 - Warning: <img> lacks "alt" attribute
line 543 column 267 - Warning: <img> lacks "alt" attribute
line 149 column 50 - Warning: trimming empty <font>
line 523 column 17 - Warning: trimming empty <tr>
line 526 column 50 - Warning: trimming empty <font>
line 125 column 68 - Warning: <nobr> is not approved by W3C
line 141 column 68 - Warning: <nobr> is not approved by W3C
line 177 column 27 - Warning: <nobr> is not approved by W3C
line 207 column 27 - Warning: <nobr> is not approved by W3C
line 233 column 27 - Warning: <nobr> is not approved by W3C
line 261 column 27 - Warning: <nobr> is not approved by W3C
line 287 column 27 - Warning: <nobr> is not approved by W3C
line 316 column 27 - Warning: <nobr> is not approved by W3C
line 342 column 27 - Warning: <nobr> is not approved by W3C
line 368 column 27 - Warning: <nobr> is not approved by W3C
line 396 column 27 - Warning: <nobr> is not approved by W3C
line 422 column 27 - Warning: <nobr> is not approved by W3C
line 458 column 27 - Warning: <nobr> is not approved by W3C
line 485 column 27 - Warning: <nobr> is not approved by W3C
line 516 column 27 - Warning: <nobr> is not approved by W3C
Info: Document content looks like HTML5
Info: No system identifier in emitted doctype
Tidy found 209 warnings and 0 errors!


The alt attribute should be used to give a short description
of an image; longer descriptions should be given with the
longdesc attribute which takes a URL linked to the description.
These measures are needed for people using non-graphical browsers.

For further advice on how to make your pages accessible
see http://www.w3.org/WAI/GL.
You are recommended to use CSS to specify the font and
properties such as its size and color. This will reduce
the size of HTML files and make them easier to maintain
compared with using <FONT> elements.

You are recommended to use CSS to control line wrapping.
Use "white-space: nowrap" to inhibit wrapping in place
of inserting <NOBR>...</NOBR> into the markup.

About HTML Tidy: https://github.com/htacg/tidy-html5
Bug reports and comments: https://github.com/htacg/tidy-html5/issues
Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/
Latest HTML specification: http://dev.w3.org/html5/spec-author-view/
Validate your HTML documents: http://validator.w3.org/nu/
Lobby your company to join the W3C: http://www.w3.org/Consortium

Do you speak a language other than English, or a different variant of
English? Consider helping us to localize HTML Tidy. For details please see
https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md