[Anything that has Smps2asm]: Use Vgm2smps to port music

Discussion in 'Tutorials' started by Red2010 is now, Apr 26, 2024.

  1. Red2010 is now

    Red2010 is now Active Member Member

    Apr 24, 2023
    Somewhere in Spain
    It's been a while since I've written something (the last time I did it I felt like it wasn't quite right to do so)

    But this time I won't teach you how to port your disgusting (good) rom hack from sonic 1 to the Sega CD/Mega CD, forget about that (threatens Devon to explain to you)...This time we will port music!

    I have nothing against the original guide, but for those addicted who want to play more specific Soundrivers/Sound Source music, they will find that Music Pointer Fixer does not let you open the music files from the valley bell package

    And if it does, you will most likely be bitterly surprised that the music is wrong at all.

    The guide would have ended here if I had written this about 6 years ago but that is not the case.

    A few years ago, someone created a way to transfer vgm (VGZ too) to Sonic 1's soundriver

    I would put a super detailed introduction but the truth is you should already know what exactly the program does and if not, then. I don't know what you've been doing with music these last few years.

    Attention: this guide should be used if you have difficulty porting music or using it to port music from more specific Sound Drivers, otherwise use the original guide for more normal formats

    List of tools we require:

    The smps Rips/Smps Research V5 Package From Valley Bell, any other game outside of this one can rule out a perfect port

    SmpsPlay 2.20
    (I hope the link doesn't go down in the near future)


    I do not recommend Natsumi's Smps2asm Version for this guide, mainly because I do not know how to use it and the steps were built from the original smps2asm

    Step 1: Find the game to choose

    This explains itself, with SmpsPlay and the Smps rips that you should have, look for the game that interests you the most (for this guide I will use MJ Moonwalker), as long as it is not hell to fix it or that the program gives you broken music it should be enough

    Step 2: Search for the music

    Now with the game that interests you, open the tracks with SmpsPlay and look for one that catches your attention or that you recognize from a rom hack. In this case I will use Smooth Criminal

    Step 3: Record them in VGM

    Hey, don't get smart and access some page that has the vgm of the music you want, no.

    In order to use the vgm2smps DAC detection, you must record them yourself

    And how do I do it? Well, at least for me, press "Enter" and almost instantly "V" on your keyboard. For recording, only the song (if it has a loop) is already finished or close to the moment of repetition,

    Optional: check that everything is fine

    This is optional but opens the .vgm of the music in the "dumps" folder that is automatically created when you open a file with SmpsPlay for the first time. Now open your reference vgm player and open the file, if it repeats correctly it should be an indication that you stopped the recording at the right time

    Step 4: Transfer it to .bin

    It is as easy as dragging the file to the vgm2smps program and you will have the bin, but. If the music is very long or complex you will see the weight it has, and this will become larger when passing it to .asm, so if your music is very large then you should reduce its weight. Here is the program

    Step 5: Convert it to .asm

    To do this use Smps2asm. And if you see that nothing happens with dragging the song then put the .bin in the same folder as smps2asm, create a .bat file and insert this inside the bat:

    smps2asm -v 1 -o $8000 NameofyourMusic.bin NameofyourMusic.asm name
    If the program generated the .asm file then it is time to add it to your hack (those who do not have smps2asm discover for themselves how to transfer the music to .bin again)

    Final Step: Putting it in, Fixing it, etc.

    Now if the music doesn't lose weight even by optimizing it, it will be time to put it in your hack.

    You try it and you see that there are some defects in it... The advantage of having the music in .asm is that it is easier to modify it inside...

    You will have to fix the DAC, PSG or in more extreme cases part of the FM channels

    And if everything went well then you will have well-ported music to your hack just using VGM.

    And if you wonder. Yes, you can carry music from gems, but at the time of writing this there are still no disassemblies with music from games that use gems. You can use whatever vgm they have taken from those games, but 99% of the time it will mess up parts of the song or it just won't play.

    For now, settle for the Smps music and then you'll see how to play Gems music.


    Me: Creator of this Guide
    Flamewing: Smps2asm
    Ivan Yo: Vgm2smps
    Valley Bell: Smps Rips and SmpsPlay
    Dark Shamil Khan likes this.
  2. Red2010 is now

    Red2010 is now Active Member Member

    Apr 24, 2023
    Somewhere in Spain
    I'm late but here's a late update:

    1. The weight of the song, even lowering the weight, is excessive, so if you don't want to use mappers for your rom hack, try porting the music yourself with music pointer fixer
    2. I have noticed that from the loop of the song in question, the music begins to break little by little
    3. Music is simply rebellious with Vgm2smps
  3. Dark Shamil Khan

    Dark Shamil Khan TASer lol Member

    Nov 7, 2021
    (apologies for this being too long)
    While I do appreciate the effort put on this. However I have to say, some of the stuff you put, didn't mention the looping issue. As well as the volume issue, specifically the PSGs being the most noticeable ones. And possibly the DAC ones with the looping issue. It happens alot with vgms made from furnace or Deflemask ported to smps form.

    However this issue is very easy to fix, albeit it requires a bit of maths (okay not entirely) and knowledge to fix it. But it's mostly easy. You basically check and see when it jumps back, and what volume it was set on. And if it was the same one as when the song starts from, then you basically leave that as it is. Otherwise you have to change the value, although changing that isn't the problem. It's when it's about to jump back, you'll see that it might have some volume changes, but just have to calculate what value it was on before it jumps.

    To check that, you can go for Clownacy's Emulator, as it shows the volume of the PSG, in the PSG section of the emulator that is. And that way you can then edit or remove the line that you think is cause it. That's how my ports were from furnace or vgms gotten online were added to the sonic 1 sound driver.

    And for the drums, unless you're some sort of genius or you have the time to do everything and anything, with the vgms having no drum or pcm sample being recognised. Then you can most probably do this. However if your vgm does have a pcm or drum channel and it's working fine but it's looping is screwed. Try looking for the first dac sample when it's loop point starts, and looks for the last dac sample before it jumps back to the loop. If you see anything missing, like dac sample or a note missing. Then you can fix it.

    Usually for when before the loop point is, the last DAC sample before the loop point is the sample being used. And for the last DAC sample before the jump to the loop, check and see what sample did you put or do you see before the song loops in your tracker. That's just how I fixed it, but there can be much much easier ways to fix or resolve these issues.
    Nik Pi and Red2010 is now like this.