SNES Online: Findings

Saturday, November 30, 2019

As you should be easily aware of, I've shifted my research over from SNES Classic to SNES Switch Online. I'm still interested in SNES Classic, there's just more to figure out and work on right now with the Switch.

After I released CaVE I started getting back to work on the Switch .sfrom footer format. I got the basics documented and supported in SFROM Tool. But there's several unused parameters that have not been figured out.

Looking in the code, you can generate a full list of the params by value. And you can figure out which ones use a single byte value, and which use multi bytes. For some params, I had the convenience of there being support for the familiar SNESC sfrom format headers, and I could tell when a value is shared between the 2 and figure out the purpose for the one in the NSO .sfrom format. This is how I figured out how to use param 44, and get SFA2 and Star Ocean supported.

After that though, I had other things to focus on, so progress stopped. Now though I've been back to work! And I've figured out a few more params!

First up, we have...

Release: SFROM Tool v1.2.0.0

Saturday, November 30, 2019

This release is long overdue!

Originally, I avoided it in favor of unofficial builds as I wanted the next version to be completely cross platform. But, as I have gotten no feedback on the Mac/Linux builds... I just haven't cared to try keeping them up-to-date with the Windows version. Avalonia, the WPF alternative UI library I use for those, is also a limited annoying pain in the ass to work with too. So I don't much care for working on those atm...

Anyway. The major changes in this build include. Drag and Drop support. Zipped ROM support. Switch SFROM support. And 3DS data.bin support.

The Switch .sfrom support is the biggest thing. As soon as the SNES Switch Online app came out I did my best to figure it out asap. I released a un-offical build as soon as I could, but as I had not figured out most of the params, I didn't want to release the real build yet. But now things are different! And while I may not have a perfect understanding of every parameter... I think I have a suitable enough grasp for a release.

I'll be posting a write up of my journey to figure out and document the new format soon.

Additionally, the 3DS support is important. It was always something I "could" do. And in the case of importing, I DID do it for my debugging/development code. But I never though there was a need for it until a couple months ago. I was asked about it, and told of the need. I was already working on support for the new .sfrom format... so it was nothing much to additionally work on support for the 3DS too.

Here's the changelog...

Release: CaVE Database Manager v1.0

Sunday, November 03, 2019



Today I've released a new tool. In my efforts to translate my SNES Classic work over to supporting the Switch's SNES Online, I saw a empty space that could use filling in that of a tool to help users properly manage their custom databases. Not only for SNES, but nothing really existed like it for NES Online either despite that being out for awhile.

I wanted people to be able to mod their SNES Online installation as easily as possible. I wanted it to be as newbie friendly, and approachable by as many people as possible. Editing text files where one minor typo could render things completely unusable, was not that in the slightest!

SNES Classic & Switch: Update

Monday, September 30, 2019

I was waiting for the Switch's SNES Online app to come out for a while. I new it was going to bring some new answers/verifications based on lists found in the files. Mainly I was waiting to get Stunt Race FX/Wild Trax verified, as I already deduced their ID's and posted them as guesses a while ago. I was right!

We got some new ID's too. Sadly, those ID are unlikely to work any different than 0x0000 on the SNESC. But its still worth documenting.

It took me a bit to get around to trying to solve the Switches new version of the .sfrom format, but it's coming along. Code was found that alluded to SNESC format .sfroms being supported, which would be good because all my current work would translate to the switch. But attempts to use them failed.

Focusing on the switch .sfroms for the time being, we ran into a roadblock of the fact that it just seemed like only the PresetIDs for the games officially released on the switch worked. That would render my PresetID list work completely useless for the switch.


Well, after a couple weeks of trying various things, I finally got my hands dirty and poked around the asm myself. After a few tries... I finally got a hack working to enable all other Preset ID's! And incidently, that same hack also happened to get SNESC .sfrom working!

Now for SNESC type .sfrom's made with my tool, there should only be 2 stipulations. Don't use PCM audio, and make sure the first byte of the Product ID is a capital W in the Advanced window. There's no evidence to suggest that PCM audio is supported anymore. It's been completely dropped from the official ROMs. And there appears to be a new check in the code to check that character of the Product ID. That was not a thing on the SNESC.

Whats more, SFA2 and even my custom Star Ocean patch have already proven to run on the switch app now. Pics courtesy of user RadMcFist of the GBATemp forums.












As for the hack. I've posted the code on a thread there. I'll likely have to be updating it from time to time as the app is updated itself. And I may try to improve upon it, so there no point in posting it here. Maybe I'll figure out a better home page to post it later. Like on my unofficial WIP release page.

I'll likely ad a disclaimer to the sfrom Tool page too for switch users.

SNES Classic: Some New Stuff & Changes

Saturday, May 25, 2019

I've been trying to nitpick some things lately. Finding ways to improve the SFROM Tool page mostly. I updated the page to include a basic usage guide, because even though the tool is so simple to use, that doesn't mean that new users would naturally realize as much. So a simple "How To" can kind of teach them that.

SNES Classic: What's left? What's next?

Monday, May 13, 2019

Now that I've basically completed the Preset ID list, and as a result my .sfrom header database efforts... there's really not much left. I didn't even feel a need to update SFROM Tool for the better part of a year because that too was complete enough. There's minor things I can pick away at here and there, but nothing important and meaningful.

Lets first talk about "What's left?". Mysteries I haven't solved. Work I haven't done, etc.

SNES Classic: Big Update!

Saturday, April 13, 2019

Out of nowhere here comes a big update for my SNES Classic efforts!

I never thought I'd get here, but the Preset ID list... is basically complete! I've updated the list with 69 new verified Preset ID's. This will largely not effect most people, as my previous efforts to make educated guesses have proven to have around a 99% accuracy rate. But its nice to now know they are no longer guesses at all.

In addition to Preset IDs, this update will see a handful of new VC patches. PCM patches as well. There are also some header data amendments. The full change log will be posted below.

Naturally, SFROM Tool will see an update too.

With this update, its hard to see this being anything other then a "Final" candidate. There is very little that can be done from here with Preset IDs, VC patches and header data. All my effort has been on cataloging and predicting the official stuff relating to that. If all the official stuff is now verified, there's nothing left to catalog or predict.

The only things remaining are a select few things. E-PAL, and to some extent D-PAL/F-PAL games on the list have Preset IDs legitimately meant for that version of the game, but went unused. So they can never be truly verified. Korean versions, I don't know if they will ever be dumped and proven not to be the same as above. 2 games, Super Mario All-Stars and Stunt Race FX I strongly feel have ID's, and for one of them I have patches for. But while they can not be verified at this point, they possibly can be in the future with rumored Switch releases. Then there's the list of rumored games ripped from a 3DS ROM. Those likely have Preset IDs, but cant be verified because they were never released. Again, maybe in the future on Switch.


69 new verified Preset IDs (181 total now)
1 wrong guessed Preset ID among those 69
2 additional guessed Preset IDs moved as a result
2 fixed Preset ID set wrongly by typo
6 real PAL releases verified among the 69 (E-PAL, D-PAL, F-PAL.)
13 new VC patches
I didn't bother counting the total header info amendments, just a couple specifics
3 games with a new MaxInput value of 4 (up from the normal 2)
15 adjustments to h2_unknown3  among games (from 1 to 0)
8 or so header Product IDs moved from being 3DS based to WiiU based
2 fixed typoed Product IDs
1 new game added that I concluded didn't even exist
1 missed game I verified late last year but forgot to record.

You can get the patches in the "all-in-one" package. I silently posted the package before, but its now been updated. For now the individual patches are out of date/missing some. I may be removing those.

Preset ID List
SFROM Tool
Patches

Release: SFROM Tool v1.1.2.0

Tuesday, March 05, 2019

Contrary to recent conclusions, I have NOT abandoned SFROM Tool. The fact is that it is simply doing its job well enough as is. There's little left to do with it, so there's little point working on it. I've been contacted several times on the basis of people making this assumption in a misguided effort to get me to make it open source. Not because anyone would want to maintain or update SFROM Tool, but instead just to take what they want from my code and put it in other projects...

I'll set the record strait right now. If I truly felt that there was more to be done with the tool, but didn't feel I wanted to do it myself. Than yea. I might consider releasing it as open source. But that's it. In general I don't care for and have zero interest in open source projects. I enjoy the freedom of not having to maintain presentable code, I enjoy having a project to work on myself, and the idea of having the source open for other people to work on reduces what work I can do. I got a bad taste early on for people effectively stealing my projects, renaming their edit and trying to remove credit from me.

On this project in particular I've felt that last one is an issue, as I've given a LOT to the SNESClassic modding community, more so than probably anyone else. Yet people have tried to erase me from history and downplay my work.

Anyway, if there's something more to do with SFROM Tool, I'll do it. It isn't abandoned. Hence this update.

I was made aware only now that my .srm <--> .sram conversion feature didn't work with all games. So I updated it. It should now be able to make Mario RPG, Yoshis Island, Starfox 2 and Kirby Superstar .srams.You just have to choose the PresetID of the sfrom that you plan to use the .sram with. (Thanks goes to u/tunapizza for discovering how to get these working.)

I corrected a minor mistake with the compression code used for the patches.

I updated the SuperFX byte in the Advanced panel to the Special Chip byte, based on Bosco's findings.

And I fixed detection of a couple games.

As usual, you can find the link over on the SFROM Tool page, or via the self update checker.

News: The Bad Side of Doing Projects on the Internet

Thursday, September 13, 2018

Hey! It's been a few months!

I've currently moved on to working on more official projects to expand my profession portfollio rather than hobby projects, so there hasn't been much to post about here. I've stepped back from the SNESClassic hacking and development community almost entirely. I don't keep up with the day to day stuff anymore. But a few days ago I was brought back. At first for a good reason, but it quickly turn bad.

Dev Log: Star Ocean Canoe Patch

Monday, April 02, 2018

When I started the development of the Star Ocean canoe patch, for some reason I thought to try and keep a reasonable log of my point of view at that time as I thought that some people may find it interesting what goes into developing something like it. I planned to post it in a more broken up multi part post series, posting each part shortly after that part of development took place. But I ended up deciding against that as, I didn't know when the final patch would be released, and I didn't want to generate any extra hype for the patch that would feed any impatience. Doing so felt like it would just be an unfair teaser to people. So I held it off, thinking that I might post them shortly before I released the patch. But even then, I just wanted the patch out and elected to post it after, if at all.

Due to some recent unjust slander against me, causing me to have to defend myself against bogus claims, I'm now feeling more need to post my log. Originally this log would have made up 3 long posts, but I'm going to try and edit it and condense it down into this 1.