SNES/SFC ROM Standardization: Headered or Unheadered?

Started by Josephine Lithius, November 16, 2016, 05:04:28 PM

Previous topic - Next topic

Josephine Lithius

A recent discussion with a friend of mine got me thinking about how over the last 25-some years of Super NES/Famicom ROM dumping and emulation, we still somehow haven't really reached a universal consensus about ROM standardization.  Specifically, it seems like there's still a lot of debate of whether or not headered ROMs are the way to go, rather than unheadered ROMs.  Even here on this site, I see patches for both types of ROMs and, as far as I can tell, SNES/SFC ROMs are the only ones that have this problem.

So, like... what's the deal?  Why is there such confusion with Super ROMs?  And more importantly, what are the real pros and cons of having a header on a ROM?  As far as I've seen it seems easier to edit a ROM which doesn't have a header, despite the fact it usually only just shifts the data over about 1 KB.

It's just so odd that Super ROMs are the only ones I've ever seen where that mattered...  And since it does matter so much, why hasn't it ever been standardized?  It's a read head-scratcher...

Disch

From my understanding:

Emulators pretty much universally ignore headers -- probably because they're completely unreliable (a lot of people add "headers" by just adding a bunch of zeros to the start of the file -- which is completely meaningless).  AFAIK the only time you actually needed a header in the past is if you were using a copier device --- but I'm not even sure modern devices like SD2SNES use them (note I could be wrong about this).  In fact, I'm not aware of anything that actually uses them.

Hence the push to get rid of them.  But it's hard to retroactively get rid of something that's been around so long.  Especially since the SNES ROM file format isn't even really a file format -- it's just a straight ROM dump.  There is literally no file structure -- it's just a straight up dump of the data off the ROM chip(s), with [maybe] a short header.

As for why it's not standardized --- who is going to standardize it?  Nobody has authority over the file format.  And at this point, there are too many programs/patches floating around that expect the ROM to be organized one way or the other --- so to start strictly enforcing one approach now would break all of that.

SunGodPortal

Quote from: Disch on November 16, 2016, 05:39:11 PMAFAIK the only time you actually needed a header in the past is if you were using a copier device --- but I'm not even sure modern devices like SD2SNES use them (note I could be wrong about this).  In fact, I'm not aware of anything that actually uses them.

I can't speak for the SD2SNES but I'm pretty sure the Powerpak completely ignores them and just goes for the internal header instead.

As far as I know, nothing uses copier headers anymore and the only reason why some patches require them them is because some editors were based on ROMs that had headers (like SMW). Even if you abolished ROM headers you would still have hundreds if not thousands of patchs that would still require a headered ROM unless they were remade (which is actually very easy). Anyway, death to SNES ROM headers.
Cigarettes, ice-cream, figurines of the Virgin Mary...

Mugi

powerpack has a detection for rom headers and to my knowledge, it just skips them if found.
i havent used mine in a while but i have a shiny memory of seeing the "headered rom" ....loading
at the top of the screen when you set your rom and hit play.

as such, while it takes both kinds, the result is the same. Im fairly sure such routines were simply added to maintain compatibility with both types of roms insead of binding it to either headered or headerless.
In PSP we trust.

Disch

Also, IIRC byuu actually did try to standardize "no header" ROMs back in the early days of BSNES -- by having the emu refuse to load ROMs that had a header.  Of course it didn't work and people complained about it because it just made you have to jump through an extra hoop to play your ROMs.

SunGodPortal

Quote from: Mugi on November 16, 2016, 09:00:35 PMpowerpack has a detection for rom headers and to my knowledge, it just skips them if found.
i havent used mine in a while but i have a shiny memory of seeing the "headered rom" ....loading
at the top of the screen when you set your rom and hit play.

as such, while it takes both kinds, the result is the same. Im fairly sure such routines were simply added to maintain compatibility with both types of roms insead of binding it to either headered or headerless.

Correction, it doesn't completely ignore them then.

This may have been fixed already but I do recall at some point Game Genie codes wouldn't work on SNES games with headers (presumably because the address contained within the code would be 200 bytes off or whatever). I haven't ran into that lately but that may just be because I stripped said useless headers from every single SNES ROM I have in my possession after I became aware of this. Not sure if I would consider it a bug though since no SNES ROM should rightfully have a copier header.

Quote from: Disch on November 16, 2016, 10:13:36 PM
Also, IIRC byuu actually did try to standardize "no header" ROMs back in the early days of BSNES -- by having the emu refuse to load ROMs that had a header.  Of course it didn't work and people complained about it because it just made you have to jump through an extra hoop to play your ROMs.

Jumping through hoops? No, doesn't sound like BSNES at all. :P
Cigarettes, ice-cream, figurines of the Virgin Mary...

Josephine Lithius

Quote from: SunGodPortal on November 16, 2016, 10:16:41 PMJumping through hoops? No, doesn't sound like BSNES at all. :P
*giggles in amusement*  *ahem*  Anyway...

Quote from: Disch on November 16, 2016, 10:13:36 PM
Also, IIRC byuu actually did try to standardize "no header" ROMs back in the early days of BSNES -- by having the emu refuse to load ROMs that had a header.  Of course it didn't work and people complained about it because it just made you have to jump through an extra hoop to play your ROMs.
Ya know, that's not a bad idea... sort of.  Were it me, I'd personally just have the emulator modify the ROM to remove the header -- with the user's permission, of course.  Kind of like how Temporal Flux (a Swiss Army knife of a Chrono Trigger ROM editor) pops up with "This ROM has a header.  We can't really do much with that.  Would you like us to remove it for you?"

Buuut I'm sure people would have still gotten grumpy about it...

Disch

Quote from: Joseph Lithius on November 16, 2016, 11:55:11 PM
"This ROM has a header.  We can't really do much with that.  Would you like us to remove it for you?"

If you leave it as an option, people will say "no" and you'll accomplish nothing.

If you force it, people will get angry because you'll be breaking their ROM because X editor requires their ROM be headered.

There's no way to win.


EDIT:

Plus, then what do you do about soft patching?  Do you modify the patch and subtract $200 from all the offsets?  What if the patch wasn't supposed to be for a headered ROM in the first place?  Now you've just trashed their patch.

KingMike

Quote from: Disch on November 16, 2016, 10:13:36 PM
Also, IIRC byuu actually did try to standardize "no header" ROMs back in the early days of BSNES -- by having the emu refuse to load ROMs that had a header.  Of course it didn't work and people complained about it because it just made you have to jump through an extra hoop to play your ROMs.
He made a program so you could kill the headers on all your ROMs at once. Like two minutes and my problem is solved forever. (I know later he moved to the "folder" format but that's a completely different thing.)
I did it and I'm glad. As mentioned, headers are completely useless and the only reason they stuck around is because people were too lazy to delete them before uploading. And I'm guessing GoodTools just identified whatever ROM Cowering found first as "good". Luckily No-Intro seems to have surpassed it in usage and they also only identify non-headered ROMs as good. (I think they only permit headers, but don't verify them, on NES but that's only because NES ROMs actually NEED them.)

The only other reason I would even keep a headered ROM around is for like Lunar Magic which clings to the headered requirement.
Patch needs a header? Fine, I'll add the header but I'm deleting it after patching. Though I think someone made an IPS patcher to automatically account for that.

Soft-patching? If I care enough to play the game, I'll take the extra 30 seconds to well... as I just said above...
"My watch says 30 chickens" Google, 2018

Disch

That's all fine and good for you, but emu authors need to be accommodating.  A lot of hacks require headered ROMs, and a lot of people like soft patching those hacks.

2 minutes of extra work is a lot for Casual Joe Emu User.  Why download an emu that requires I take extra steps to modify my entire library and possibly future ROMs I download when I can just use SNES9x that doesn't care and will just run it without giving me a hassle or popping up annoying prompts?

Plus, in the end, the header/headerless issue isn't a big deal for anyone but people applying SNES ROM hacks.  And really, tons of users don't even bother with hacks and have no idea what the difference between a headered or headerless ROM is -- so they really don't care about any of this.  If any emu pushes these people on the subject, they're going to respond negatively to it.

Auditors (like No-Intro) are probably in the best position to shift everything toward a standard.  Or at least, they certainly have a better position than emulators do -- but even they can't wipe the net of headered ROMs.  At some point an emu is going to have to deal with them -- and emu devs have to be kind if they want people to use their emu.

STARWIN

RHDN doesn't touch submissions afterwards, but that would be the best way to "standardize" unheadered. While a modder might still require a headered version while modding because of a tool, we already have tools for adding/removing headers so it doesn't really matter as much.

Without patches it doesn't really matter. It isn't terribly important to most of *us* either as we know that it is a thing.

Chronosplit

The only reason I ever care about headers is either when making an addendum to a hack that requires a header, or when a patch requires a header.

I'd probably say no header is becoming more of the norm these days, but it really doesn't bother me as long as I have TUSH and know which one it is.