Checksum check. Good or bad idea?

Discussion in 'Discussion & Q&A' started by FireRat, Nov 30, 2017.

Thread Status:
Not open for further replies.
  1. FireRat

    FireRat "The grand imitator..." Member

    Joined:
    Oct 31, 2009
    Messages:
    528
    I'll begin with an extreeeme example, in the worst possible case: Imagine that a S3k cartridge has a slight ROM corruption in such a place you wouldn't notice at first glance, while the game apparently plays fine. At Sky Sanctuary Zone, an average player transforms into Hyper Sonic at the same time an Eggrobo is zooming into the screen. I don't know specifics, but according to a video made by Orkal, doing this causes such a VRAM clash, that either this badnik or the surrounding stars mess up. When that happens, the player says "uh, I have just glitched the game, dem programmers". Later, the player beats the zone, and when Death Egg Zone begins, the whole tileset appears like a broken mess!!, but, because he glitched some sprites earlier, to him it will look like this is a similar issue again. However, there's no known bug that affects the tileset loading, so chances are it's fault from the tileset itself being corrupt instead. How will the player know the difference?

    This community has proven me that every single thing, is questionable. Thinking in Murphy's Law, checking the checksum is useful to ensure the ROM's integrity, in case the file's download has been corrupted or the flashcart didn't flash the file correctly and doesn't do any integrity checks afterwards. The idea is to avoid the scenario from above. Then if the check is seriously THAT annoying for some, it could skip any subsequent checks with a flag on SRAM.
    Earlier, I was randomly looking for opinions on a checksum check routine I wrote. However.. the answer? That it's all useless, and at any cost that I should drop it. The reasons, in case of any issues, "the fault should lie with the person flashing the rom not the hacker of the game except for when said hackers make the hack buggy", "they complain then you tell them to reflash it", "for data integrity checksum is bullshit - an LFSR is much better (to not go into complicated stuff like SHA or CRCs)" and most importantly, that flashcarts are stable enough, even though someone else claims it failed once.


    Personally, I don't think it's fair to get reports of bugs that haven't been our/mine fault, nor waste time on something I can avoid, with ease. What's your opinion on the matter, though?
     
    Last edited: Nov 30, 2017
    ProjectFM and Natsumi like this.
  2. Natsumi

    Natsumi Markey's Member

    Joined:
    Oct 7, 2011
    Messages:
    647
    Location:
    Otter's lap
    From my experience with Mega Everdrive, it hasnt once flashed a ROM incorrectly and none of my Mega Drives ever had problems either. Furthermore any actual cart has never shown me that red screen. Only corruptions Ive ever got was from dirty connectors or the game not inserted properly, but then the whole game was always a broken mess and clearly not the game program's fault.

    Now can carts be flashed incorrectly despite having proper contac Absolutely, and sometimes corruptions can be so minor you dont realize its hardware issue. However, it seems very very rare on Mega Drives that work correctly. While checksum checks can help you catch these errors, it may also not, and it takes incredibly long anyway. This is why I remove them from any hack I create. If I do get reports that I can not recreate, I will assume either its super rare and fixing it is not a priority, or that its a quirk of the specific machine its being run on.
     
    ProjectFM and Ashuro like this.
  3. MarkeyJester

    MarkeyJester !%#@ Member

    Joined:
    Jun 27, 2009
    Messages:
    2,660
    My opinion is, and always has been; always keep a checksum in, just in case.

    So there's a slow bootup time, it's not such a big deal, a few seconds. If it's impeding your production, then remove it temporarily, but reapply it on release, or after the time consuming workload is done.
     
  4. Clownacy

    Clownacy UP - ON - CPU Staff

    Joined:
    Aug 15, 2014
    Messages:
    842
    Correction: Mine has failed multiple times. It's an Everdrive v3, so I can't speak for other flashcarts.

    Anyhow, using SRAM wouldn't really work, since (on my flashcart at least) flashing a newer version of a ROM doesn't erase its SRAM.
     
    FireRat likes this.
  5. redhotsonic

    redhotsonic Also known as RHS Retired Staff

    Joined:
    Aug 10, 2007
    Messages:
    2,967
    Location:
    England
    I have the exact same cart as you, and it's never failed once. Get a refund =P
     
    AkumaYin likes this.
  6. Clownacy

    Clownacy UP - ON - CPU Staff

    Joined:
    Aug 15, 2014
    Messages:
    842
    I'm willing to bet you don't use yours nearly as much as I do =P
     
    redhotsonic likes this.
  7. Novedicus

    Novedicus Well-Known Member Member

    Joined:
    Aug 26, 2013
    Messages:
    853
    My opinion on this is the same as Markey's here.

    There's also the fact that I do not have the patience to deal with people who would blame me for any bugs when it was the fact that the ROM they got was corrupted or something. I don't want to end up having to waste my time trying to a fix a bug that wasn't even there normally and was just the result of a bad ROM.
     
    TheInvisibleSun and FireRat like this.
  8. Nat The Porcupine

    Nat The Porcupine Newcomer Member

    Joined:
    Jun 23, 2017
    Messages:
    23
    Location:
    Harrisburg, Pennsylvania (USA)
    I second this. In fact, the only time I'd recommend disabling the checksum check is if you're still developing the hack and need to be able test minor code adjustments quickly. If you're constantly making small tweaks or troubleshooting a bug in a hack that builds to be larger than 2 MB, then I can understand the boot time in addition to the build time getting a little annoying.

    Just make sure that you re-enable the checksum once you're done, otherwise you might forget and end up releasing the hack without it, which isn't optimal. Personally, I don't trust myself to remember to re-enable it, so I just leave it enabled all the time.
     
Thread Status:
Not open for further replies.