I'm back? In more ways than one.

Sunday, November 12, 2017

Just realized its been almost a year since I posted anything here. My professional projects started taking so much of a focus, I basically forgot I even had a hobby project blog. Not that I really had anything to post about here.

But things have changed now! A couple months ago I got into SNES communities again, though this time related to the then upcoming SNES Classic. It was nice to feed an old passion again, for the SNES. I found I had a ton of knowledge to share about it on places like reddit, that others could use. After the SNESC was released and I got mine I found myself delving deep into the modding portion of the community, to the point that I was made a mod on r/miniSNES which I happily accepted to help control the spread of proper true information.

Soon after I found myself diving into my own little subsection of the modding community, with my own efforts to get S-DD1 games running on the SNESC. That lead to me learning so much about canoe (the emu on the SNESC), VC emulators/ROMs and such that I became probably thee most knowledgeable person about such stuff to the point that I had to start analyzing everything I knew and start sharing it, as no one else was going to, and it would be a waste if I didn't do anything.

I started focusing on the biggest mystery of the SNESC modding scene, in a header value known as a preset id. There seemed to be little sense to be made of it. But one thing was certain, games required the correct preset id value to work properly or at all. How does one figure out that value? They just looked like 2 random bytes! So I set out to catalog all known official preset id values, the games they belonged to, and various ROM details that might be related. Once I cataloged a total of 96 I could clearly see what I already suspected. There was an order to them. The order didn't make sense, but it was clear that the IDs were an index value. So I placed them in their hex order and... well, that was the next step.

The order made little sense. How could I make sense of it? I noticed a common sub pattern where the different region versions of a game would be placed in a common order. That could help predict where unknown region versions of known games could be placed, but that only went so far. Eventually I figured out that the order was based on the product ID order of the games on the original Wii. Sadly, this put a nail in the coffin for most games getting a "proper id" as most of the SNES library was not released on the Wii. But still, this was a big help because many of the best games were! And many of those were not officially released on the WiiU/3DS/Classic, but still had a preset id reserved.

I filled out the list as best as I could with educated guesses, marking the degree of error as I could. The lists line up VERY WELL. But not 100% perfect, so I can't label anything from the Wii VC list as 100% verified. Outside of maybe 1 game as 99% verified.

After I finished the list, it didn't feel like things were done, so I had to figure out what the next step was. Both because I was enjoying doing SNES stuff as a hobby again, and because I feel there's still more to do with the preset id compatibility stuff. Namely, the guesses I made could stand to be tested manually to zero in on the correct game+preset id matches. I thought the community would do that now that they had all the info I shared, but while some have, most won't. If further work is going to be done, I'm going to have to do it myself. I think I'm expected to atm...

I have noticed that canoe/preset ids are very picky, and expected very specific versions of games. Not just game+region+version number, but version numbers never before released on cartridge, and versions that are just hacks of the versions released on cart. What games on the list require such versions/hacks needs to be cataloged, and patches to be made. I already made some patches for the 3 versions of SFA2. And a PCM patch for MMX2, just to see if anyone saw a difference. Those patches are more unique though, and can't be applied via a simple IPS. I tried to reach out and discuss such patches with the creator of the main modding program for the Classic units, but he just brushed me off and just ignored me...

So I concluded that the next thing I need to do is make a program that uses all the data I cataloged, to make proper, non-buggy, 100% capable, compatible ROMs for the SNESC. The program would install the unique SFA2 patches, PCM patches, the unique Virtual Console patches, allow users to fully adjust the header settings for the games, and experiment with the unknown ones to help figure out what they are for. All using a custom updateable database so that all that most users will have to do is click 2 buttons. Select their SNES ROM, and Save as a canoe ROM (.sfrom).

That's where I'm at right now. Trying to put the finishing touches on that program. Once done I can resume work on fine tuning the official canoe compatibility list by testing each game one by one to find its preset id, and making VC patches as needed.


Post a Comment