sf2000/tools/firmwareVersionChecker.htm
vonmillhausen 06d2126247 Updated for October 7th/1.7 BIOS version
Looks like there's a new official firmware version out, and it's got a critical bug with SNES save states - avoid this one!

Updated the tools I host to support the new firmware, complete with warnings about it. Also updated the main Github document with the first details about the firmware, more will come later when my own download of it has completed.
2023-10-12 11:24:01 +01:00

108 lines
5.2 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Data Frog SF2000 Firmware Version Checker</title>
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" href="tools.css">
</head>
<body>
<h1>Data Frog SF2000 Firmware Version Checker</h1>
<p>This simple tool will just check an SF2000 firmware/BIOS file against a list of known versions, and tell you which version it is. You can <a href="https://vonmillhausen.github.io/sf2000/#firmwarebios-bisrvasd">learn more about firmware revisions for the SF2000 here</a>.</p>
<hr>
<div id="steps">
<section id="bisrvSection">
<h2>Select Your <code>bisrv.asd</code></h2>
<p>Select the <code>bisrv.asd</code> firmware file whose version you want to check. You can find the <code>bisrv.asd</code> file in the <code>bios</code> folder on your microSD card.</p>
<div id="bisrvMessages"></div>
<div class="controlContainer">
<label class="control">Open <code>bisrv.asd</code>: <input id="bisrvSelector" type="file" accept=".asd" onchange="bisrvLoad(event.target.files[0])"></label>
</div>
</section>
</div>
<script src="tools.js"></script>
<script type="text/javascript">
// Global variables...
var bisrvData; // Used to store the binary data from the bisrv.asd file
// This function is triggered when the person selects a file...
function bisrvLoad(file) {
// Read in the contents of the selected file as array buffer...
var frBisrv = new FileReader();
frBisrv.readAsArrayBuffer(file);
frBisrv.onload = function(event) {
// Clear any old messages...
document.getElementById("bisrvMessages").innerHTML = "";
// Read the provided file's data into an array...
bisrvData = new Uint8Array(event.target.result);
// We'll do a hash-check against it...
hashResult = getFirmwareHash(bisrvData);
// The result could be either a Promise if it had a bisrv.asd-like structure and we got
// a hash, or false otherwise... let's check!
if (hashResult instanceof Promise) {
// We got a Promise! Wait for it to finish so we get our bisrv.asd hash...
hashResult.then(function(dataHash) {
// Check the hash against all the known good ones...
switch (knownHash(dataHash)) {
// Mid-March BIOS...
case "03.15":
setMessage("warning", "bisrvMessages", "Mid-March <code>bisrv.asd</code> detected. Newer firmware is available, see the link above for more information.");
break;
// April 20th BIOS...
case "04.20":
setMessage("warning", "bisrvMessages", "April 20th <code>bisrv.asd</code> detected. Newer firmware is available, see the link above for more information.");
break;
// May 15th BIOS...
case "05.15":
setMessage("warning", "bisrvMessages", "May 15th <code>bisrv.asd</code> detected. Newer firmware is available, see the link above for more information.");
break;
// May 22nd BIOS...
case "05.22":
setMessage("warning", "bisrvMessages", "May 22nd <code>bisrv.asd</code> detected. Newer firmware is available, see the link above for more information.");
break;
// August 3rd BIOS...
case "08.03":
setMessage("info", "bisrvMessages", "August 3rd <code>bisrv.asd</code> detected. This is the latest known <em>stable</em> official firmware version.");
break;
// October 7th BIOS...
case "10.07":
setMessage("error", "bisrvMessages", "October 7th <code>bisrv.asd</code> detected. While this is the latest known official firmware version, it has a critical issue with SNES save states, and is not recommended for use. Current recommended official firmware version is August 3rd/1.6. See the link above for more information.");
break;
default:
// Huh... wasn't false so had bisrv.asd structure, but didn't return
// a known hash... a new BIOS version? Unknown anyway!
console.log(dataHash);
setMessage("error", "bisrvMessages", "While the file you've selected does appear to be generally structured like the SF2000's <code>bisrv.asd</code> firmware file, the specifics of your file don't match any known SF2000 firmware version.");
return;
}
});
}
else {
// We got false, so whatever it was, it wasn't a bisrv.asd...
setMessage("error", "bisrvMessages", "The file you've selected doesn't appear to have the same data structure as expected for a <code>bisrv.asd</code> file.");
return;
}
};
}
</script>
<hr>
<p><a rel="license" href="https://creativecommons.org/publicdomain/zero/1.0/">CC0</a>: public domain. Version 1.1, 20231012.1</p>
</body>
</html>