don't click here

SEGA Sound Driver Collection

Discussion in 'Engineering & Reverse Engineering' started by TheBlad768, Oct 4, 2019.

  1. TheBlad768

    TheBlad768

    Member
    35
    150
    33
    Russia
    Finally I can present to you a project I've been working on for the past few years.

    Work began in 2017, and while I wanted to finish by the end of the year I encountered real life problems and had to postpone the release several times. But after all that I finally was able to finish what I started, and I am glad this finally happened.

    Why did I make this? It's simple. I like listening to SMD music during evenings, but I didn't want to keep loads on mp3 files on my disk.
    Of course I can use the games' Sound Tests, but not every game has one, and I wanted all my music to be in one place and I also didn't want to constantly rewrite my flash cart.
    That's why I wanted to make one huge player ROM with all of the music I liked, one I could run basically everywhere on emulators and real hardware.

    As of now the ROM has 81 game soundtracks included. Regrettably I couldn't add all the games I wanted due to file size restrictions. In the future I want to make a second player with all the music I couldn't fit here.

    During the disassembly process I found that several games had unused songs. I am sure I'm not the first person to find these, but I'm surprised to find project2612.org doesn't have them.
    Here you can find unused songs from Dragon Slayer - Eiyuu Densetsu, Dragon Slayer - Eiyuu Densetsu II, Streets of Rage 3 and Twinkle Tale as well as other games I've possibly missed.

    I don't know if anyone'd be interested in the player, but I would be glad if at least one person would. I would be happy if I knew I wasn't making this just for myself. Thank you! :)


    Tested on my sega genesis:
    [​IMG]
    [​IMG]

    Game list:
    1. Adventures of Batman and Robin.
    2. Aero the acro-bat.
    3. Aero the acro-bat 2.
    4. Aladdin.
    5. Alien 3.
    6. Aws Pro Moves Soccer.
    7. Batman Returns.
    8. Battletoads and Double Dragon.
    9. Battle Mania Daiginjou.
    10. Beyond oasis (Story of thor).
    11. Body count.
    12. Boogerman.
    13. Castlevania - Bloodlines.
    14. Chinese Fighter.
    15. Comix Zone.
    16. Comix Zone(Beta).
    17. Daze Before Christmas.
    18. Devilish (Bad Omen).
    19. Doom Troopers - The Mutant Chronicles.
    20. Double Dragon II: The revenge.
    21. Dragon Slayer - Eiyuu Densetsu.
    22. Dragon Slayer - Eiyuu Densetsu II.
    23. Dragon's fury.
    24. Earnest Evans.
    25. Elemental master.
    26. Eliminate down.
    27. Garfield - Caught in the Act.
    28. High seas havoc.
    29. Home Alone 2.
    30. James bond 007: The duel.
    31. Langrisser II.
    32. Magic Girl.
    33. Master of Monsters.
    34. Mega Bomberman.
    35. Mega Turrican.
    36. Mickey Mania (Mickey Mania - Timeless Adventures of Mickey Mouse).
    37. Mickey Mouse - Great Circus Mystery.
    38. Midnight Resistance.
    39. Monster World IV.
    40. Mortal Kombat II.
    41. Mortal Kombat V (Sub-Zero).
    42. Mr.Nutz.
    43. M.U.S.H.A.
    44. Panorama Cotton.
    45. The Pirates of Dark Water.
    46. Prince of Persia.
    47. Red-Zone.
    48. Rock n' Roll Racing.
    49. Rocket Knight Adventures.
    50. Shaq-Fu.
    51. Shi-Kin-Jou.
    52. Shui hu - Feng Yun Zhuan.
    53. Socket (Time Dominator).
    54. Sol-Deace.
    55. Sonic The Hedgehog.
    56. Sonic The Hedgehog 2.
    57. Sonic the hedgehog (SMS).
    58. Sonic Spinball.
    59. Spider-Man and Venom - Maximum Carnage.
    60. Splatterhouse 2.
    61. Splatterhouse 3.
    62. Streets of Rage.
    63. Streets of Rage 2.
    64. Streets of Rage 2(Beta).
    65. Streets of Rage 3.
    66. Sub-Terrania.
    67. The Ooze.
    68. Thunder Force III.
    69. Thunder Force IV.
    70. Time Trax.
    71. Tinhead.
    72. True Lies.
    73. Tiny Toon Adventures - Buster's Hidden Treasure.
    74. Twinkle Tale.
    75. Two Crude Dudes.
    76. Undead Line.
    77. Vectorman 1
    78. Vectorman 2
    79. Verytex.
    80. X-Men-(32X).
    81. Zero The Kamikaze Squirrel.

    Controls:

    Select Menu:
    Up/Down - Game selection
    Start/ABC - Game Selection Confirmation

    Music Test Menu:
    Up/Down - Next/Previous Track
    Left/Right - Play the Next/Previous Track
    A/C - Replay Track
    B - Stop Track

    Video:


    Download:
    http://www.mediafire.com/file/hn3tabbf5l94kpt/SEGA_SOUND_DRIVER_COLLECTION.bin/file

    Source:
    http://www.mediafire.com/file/vd236d3wxth9yur/JukeBox_v3.0.zip/file


    Credits:
    TheBlad768 - Idea and implementation.
    Mr.Cat - Thanks for speaker gfx.
    FoxConED - Thanks for fonts and HW testing.
    Vladikcomper - Big thanks for helping with development :) EQ display. Improved Kosinski, Nemesis algorithms. Advanced Error Handler and many other things.
    Valet2 - Thanks for support and HW testing.
    Valley Bell - Thanks for Data East sound driver source code.
    R57shell - Thanks for GEMS driver tools! (Gems Combine, Gems Spit)
    Clownacy - Thanks for Sonic 2 Clone Driver v2.
    MarkeyJester - Thanks for JMPLABFIX.

    Also big thanks to people from project2612. Thanks to this site I was able to find the right names for all the tracks.

    Sorry if I forgot anyone...
     
    • Like Like x 7
    • Useful Useful x 1
    • List
  2. Dulappy

    Dulappy

    koronesuki Member
    49
    7
    8
    Greece
    sonic
    Looks very good! The effort you put in this really seems to have paid off.
     
  3. Wafer

    Wafer

    Find me on Twitter instead Member
    255
    75
    28
    This looks great! I especially like the visualizer, that's a nice touch. I'd be tempted to build on this myself some time in the future when I've cleared my project list, it'd be cool to have a tool to add and remove tracks, and maybe an optional second layer menu to drill down and play a specific track without skipping forward to it.

    I know what I'm listening to for the next few weeks.
     
    • Like Like x 1
    • Useful Useful x 1
    • List
  4. MainMemory

    MainMemory

    Kate the Wolf Tech Member
    4,742
    338
    63
    SonLVL
    I appreciate all the work that went into this, but like, couldn't you have just used a VGM player? Then you'd be able to listen to music from any MD game.
     
  5. TheBlad768

    TheBlad768

    Member
    35
    150
    33
    Russia
    Yes, but I wanted to make my player with original drivers. I want all the music in one place. But I also got a lot of experience disassembling games and sound drivers. I enjoyed doing this, so I will continue to work on the player in the future.
     
  6. nineko

    nineko

    I am the Holy Cat Tech Member
    6,308
    486
    63
    italy
    Also, vgm files can get huge, this is the best approach to cram so much stuff, well done. Too bad that you didn't include the Cube driver, I never remember how much of the research about it has been made public or not...
     
  7. TheBlad768

    TheBlad768

    Member
    35
    150
    33
    Russia
    In my player there is a game Langrisser II and it uses the Cube driver.
     
  8. nineko

    nineko

    I am the Holy Cat Tech Member
    6,308
    486
    63
    italy
    Ha, I admit I missed it, I'm sorry.
     
  9. Wafer

    Wafer

    Find me on Twitter instead Member
    255
    75
    28
    Another feature that would be nice would be to hook the drivers to progress to the next track on stop, but I don't know all the drivers well enough to know how hard that would be. Also a 5 minute timer for the same (for looping tracks).

    Edit: holy moly, the source file really demonstrates how much you crammed in here!

    Edit again:

    In Control.asm insert the following at lines 50, 56 and 73 (actually, probably just 73 I'm guessing):
    Code (Text):
    1.         move.w  #0,(Progression_Countdown).w

    In Controller.asm at line 21 insert:
    Code (Text):
    1.         add.w   #1,(Progression_Countdown).w

    And again in Controller.asm at line 37 insert (replace 18000 with seconds * 60):
    Code (Text):
    1.         cmpi.w  #18000,(Progression_Countdown).w
    2.         bne.s   +
    3.         or.b    #8,d0
    4. +

    In Variables.asm at line 50 insert:
    Code (Text):
    1.                             ds.b 1
    2. Progression_Countdown:      ds.w 1

    Yes it's a countup instead of a countdown, rename if it bothers you.

    I guess if someone wanted to figure out a good loop length for each song(!), they could flip the logic over and set Progression_Countdown to reference a value from a table when a track starts. And add a memory entry to turn the behaviour on and off and all the other niceties, but I just did this real quick so I can get on with hacking other stuff whilst I listen to some tunes.
     
    Last edited: Oct 5, 2019
  10. Dracula

    Dracula

    Oldbie
    605
    0
    16
    I'm watching you!
    Converting NES Mappers to MMC5
    Wow! I will give this a try!

    Edit:
    OMG! Thank you very much! Now I can easily use this to test out my current music restoration for Thunder Force II.
     
    Last edited: Oct 6, 2019
  11. biggestsonicfan

    biggestsonicfan

    Model2wannaB Tech Member
    1,612
    417
    63
    ALWAYS Sonic the Fighters
    Exodus really chugs hard trying to run this...
     
  12. ICEknight

    ICEknight

    Researcher Researcher
    Wow, this is really cool! I'm putting this in my flash cart right now.

    Awesome work!


    EDIT: Just have to say that the choice of controls is a bit... odd?

    I'd just never change the current track unless the C/A button is pressed, not sure why the need of auto-playing when changing games or pressing Left/Right.
     
    Last edited: Oct 6, 2019
  13. Wafer

    Wafer

    Find me on Twitter instead Member
    255
    75
    28
    Having a look around the code earlier, it looks as though at one point it was set up to just play the whole library continuously for testing purposes, and the controls were grown out of that. Just an educated guess, not a criticism at all.

    Often when I've been working on something for a long time and running the same controls over and over, I forget that they might not seem as intuitive to others. So I can relate.

    From what I could tell from my brief look at the code, once you get beyond the controls, the different drivers are really well integrated. Makes my last major assembly project look like some kind of disaster scenario.
     
  14. TheBlad768

    TheBlad768

    Member
    35
    150
    33
    Russia
    You're the first to complain about the controls... While working on the player, I let people test it and no one complained about the controls. Now I'm used to the controls, and I don't want to change them. I sorry.
     
  15. Devon

    Devon

    I'm a loser, baby, so why don't you kill me? Tech Member
    1,245
    1,415
    93
    your mom
    I'm gonna have to agree with ICEknight here. Usually, just being able to press left or right and then pressing A works fine for me.

    Not to discredit your efforts, though. Really nice shit here.
     
  16. eskayelle

    eskayelle

    NBA Jam 2KTE / TMNT of Rage / Pong de las TMNT Dev Member
    22
    0
    1
    I think the player's pretty awesome! I'd love to see a second one with TMNT Hyperstone Heist, Moonwalker, Street Fighter II CE, and NBA Jam / NBA Jam TE! I'd also love to understand if there's a way to leverage the source code to add drivers and music to expanded rom in other games and point over to them. Thanks for sharing this project!