Just a tweak really - re-ordered the zeroing-out checks in getFirmwareHash() to match the expected order of each section within the BIOS file. This may help to avoid a theoretical issue where bytes in user-substituted content (e.g., a boot logo) accidentally matches against some other blob of binary we're searching for using findSequence(). Doing the search-and-replace in the expected ordering should help to avoid that... I think? Won't hurt anyway!
Added support for checking firmwares that have modified the two byte-pairs `bnister` identified as a workaround for the whole "start-SNES-games-twice" issue that cropped up in firmware versions after March
Updated CFW FAQ with the latest details. Corrected a detail about the relationship between arcade `.zfb` files and the `.zip` files they point to (thanks `.ericgoldstein`!). Added a note to the Firmware section about the official firmware update process wiping the microSD card, and a note to the Save States section about how to back up game saves (thanks for the suggestion @uli42! Closes#10). Added a simple firmware version checking tool, so that folks don't have to use the boot logo changer to check (which always seemed clunky to me). Added a link to `dteyn`'s silent sounds pack. Fixed some small typos.
Some recent work by `dteyn` and `bnister` now allows for the bytes responsible for power monitoring on the SF2000 to be changed to more sensible values. I've updated the BIOS version checking details to account for these bytes, so that `bisrv.asd` file versions can still be detected correctly even if the user has altered their power monitoring bytes
There's a new BIOS revision floating around (MD5 hash first posted in Discord on August 3rd); no official announcement from Data Frog about it yet, but I've gone ahead and added support for it to the Boot Logo Changer and the Button Mapping Changer tools
There was a lot of repeated JS across all my tools (e.g., image conversion, BIOS hash checking, etc.), and so I decided to move all shared code out to its own separate library. This will improve scalability and maintainability at the cost of portability - a fair trade in my opinion.
This work also involved large-scale refactoring of all of the tools. There's no actual functional difference (all the tools should behave exactly the same), bar some UI improvements for the oldest tools as a result of moving to the same codebase used by the more recent tools.
Added some functionality to search for and strip Retroarch save state headers if they're found in the input data when converting to SF2000 format. See Javascript comments on function `stripRetroarchHeaders` for more details
Added a new tool for extracting and creating SF2000 save state files. Also added details to the main page about the save state file format, and about the mysterious arcade `.skp` files
Added a new tool, the Generic Image Tool - allows you to convert SF2000 images to PNG, and PNG/JPEG images to SF2000 formats with several options.
Also added a large amount of arcade-specific information thanks to some heroic work by `adcockm#8175`, fixed some typos thanks to `Luke#4448`, and tracked down where an "unused" image was actually being used thanks to `kid_sinn#9691`
Substantially re-written in light of the May 22nd firmware, which had a `bisrv.asd` of the same length as the May 15th firmware, but different in operation - the byte order in `KeyMapInfo.kmp` has been flipped for SNES and Genesis. As there's no way to tell from just looking at a `KeyMapInfo.kmp` what the byte order should be, users must now provide both `bisrv.asd` AND `KeyMapInfo.kmp` files - the `bisrv.asd` is now hash-checked against known versions, and that's used to inform which byte order to use for the `KeyMapInfo.kmp`
Updated to support the new May 15th firmware. Also took the opportunity to make a few tweaks, including presenting the button tables in a more standard "ABXYLR" order, regardless of the byte-order in the actual SF2000 data files
Seems like there may be some more significant changes to the data format for the button mappings; I haven't had time to dive into the details yet, so just updating the tool to indicate it knows about the new firmware, but doesn't support it yet