Skip to content

Weird issues with SMPS2MID (sorry this is the second time)

Technical discussion about the VGM format, and all the software you need to handle VGM files.

Moderator: Staff

Weird issues with SMPS2MID (sorry this is the second time)

Post by birdmanager6 »

Sorry this is the second time I have asked to fix problems this month, but I couldn't think of any other way to do this...

SMPS2MID works fine for most games, provided the pointers are correctly specified, but this program seems to be having trouble with a few ROMs...

Dynamite Headdy (UE) [c][!] - "Run-time error '9': subscript out of range" followed by application closing when trying to convert song 21. Same thing happens with Dynamite Headdy (J) [c][!].
Ristar (UE) [!] - "Music Pointers not found!" upon loading ROM. When loading the (J) [!] version, doesn't recognize ROM. However, both versions work when setting it to "Generic SMPS Type 68k" and specifying the correct pointer offset (0C852A).
Sonic the Hedgehog 3 (E) [!] - Song 21 (apparently file select theme, which I really like) causes same error as Dynamite Headdy. Also fails to convert last song (all stage clear?) when trying to convert last song (song 31). These both also happen with the (J) [!] and the (U) [!] versions.
Sonic and Knuckles (W) [!] - "Error opening file!" on opening ROM. It just doesn't work.
Mega Man - The Wily Wars (E) - Not supported due to a different music pointer format (specified in the SMPS Research Pack). Rockman Megaworld (J) [!] doesn't work, either, for the same reason.
Michael Jackson's Moonwalker (W) (REV 00) [!] - Trying to convert song 05 causes same error as Dynamite Headdy. Also doesn't seem to work with dance attack song table (possibly different pointer format?). Same things happen with (REV 01) [!] version. Also possibly sound channels out of sync? I can't really tell.
Golden Axe III (JE) [!] - Converter only comes up with one song. Are there multiple music pointer tables?

Sonic the Hedgehog (U) (V1.1) [!] {GG} - Fails to recognize this Game Gear version 1.1 even though it recognizes 1.0.


Additionally, I am also unable to find the correct offsets for Mickey Mouse - Castle of Illusion (U) [!]. Could you specify them, and see if they work? When I try to insert what I think is the right address, it only comes up with 0C songs and crashes when I try to convert a song.
  • User avatar
  • ValleyBell Offline
  • Posts: 4937
  • Joined: 2011-12-01, 20:20:07
  • Location: Germany

Post by ValleyBell »

Apparently I made a slightly more stable v0.4.31 of smps2mid that I uploaded to the FTP, but I only posted it in the SSRG IRC.
(That build mainly fixes 8-bit and Sonic CD SMPS conversions.)

The ROMs that it recognises are:
  • MegaDrive: Sonic 1, Sonic 2 Simon Wai Beta, Sonic 2 final, Sonic 3, Sonic & Knuckles, Sonic 3D, Sonic Crackers, Chaotix, Ristar (detection broken, see below)
  • Master System/Game Gear: Sonic 1, Sonic 2, Sonic Chaos, Sonic Triple Trouble, Sonic Blast, Sonic Labyrinth
  • MegaCD: SNCBNK??.BIN files from Sonic CD
All other ROMs require you to manually enter pointer list offsets.

Sonic 1 GG v1.1 detection fails, because they removed the "Developed By" text from the beginning of the ROM. Unfortunately SMS/GG ROMs don't have a header that allows for reliable checks.

For Sonic 3/K/3D the pointer list detection is really unstable, resulting in some wrong pointers. The S3 file select song (2F) is one of them - smps2mid shows 0C7027 while the Sonic Retro wiki shows the correct offset 0D7027.
Sonic & Knuckles is especially unstable, because it reads the pointer list from the compressed sound driver.
If you take the pre-extracted song from the SMPS research pack, load it into smps2mid and set the correct Z80 offset (F027 for S3 file select), then the conversion works.
The same method works pretty well with Mega Man too. (Type: Gen. Z80 b, Z80 offset: 1002 for all songs)

Mickey Mouse: Castle of Illusion: SMPS type: Gen. Z80 a, pointer list: 07008D, base offset: 070000
Unfortunately, its format features some major modifications that make smps2mid unable to convert the songs properly. (All of the Disney games that use SMPS have the sound driver and format modified in some way. And it's different modifications for each game.)

Michael Jackson's Moonwalker: It uses a format that is a mix between the one of Sonic 1 and the "generic 68k SMPS" format used by later games. That's why it doesn't convert properly. There is no workaround/quick fix right now.
What smps2mid understands as "Generic 68k SMPS" is listed as "SMPS 68k/Type 2" on the Sonic Retro wiki. There will be issues with 68k/Type 1 songs.

Ristar: The music pointer detection fails due to a bug/too strict checking. The (J) version isn't recognised, because the MegaDrive ROM header has the "RISTAR" text at another offset. (oops)

Golden Axe III: It assumes that the songs are stored "in order" in the ROM. For this game, they aren't. Just put 0F011A into the Pointer List field and press "Add to List" to add the remaining songs.

Dynamite Headdy song 21: I investigated this and there is a bug in the song itself that causes smps2mid to read invalid data. They forgot the "track end" command for the drum channel.
In order to fix this, search for the byte sequence 10 8C 08 F7 01 03 FE 8C in the ROM (or the extracted song) and replace the following byte 2A with F2.
Then it converts properly and without crashing.

Post by birdmanager6 »

Thank you for helping me with these games! Some of the games are a bit of a hack to get working - had to paste the Ancient text from the GG v1.0 ROM to v1.1 to get it to work - but I have MIDIs from most of the games working now!
So sorry to see that some of the games are not working now. :( Hope that support for the slightly different sequence format versions will be included with the program sometime though (Pre-SMPS support would also be nice in the future). I'm not demanding you to add it now, though. Guess until then I'll just have to use VGM logging and VGM2MID to get MIDIs from those few games (although Moonwalker is partially working).
Post Reply