<p>This tool can be used to alter the boot logo on an SF2000 handheld gaming console. Please note this tool is provided as-is, and no support will be given if this corrupts your device's bios; make sure you have backups of anything you care about before messing with your device's critical files! 🙂</p>
<hr>
<sectionid="bisrvSection">
<h2>Step 1: Select Original <code>bisrv.asd</code></h2>
<p>Select the <code>bisrv.asd</code> file whose boot logo you want to modify. You should probably make a backup of the file first, just in case! You can find the <code>bisrv.asd</code> file in the <code>bios</code> folder on your microSD card.</p>
<p>Select the image file you want to use as the new boot logo. It must be 256 pixels wide and 100 pixels tall. Only PNG and JPEG image types are supported. For PNG files, transparency is ignored; also, you might want to make sure your PNG image has any embedded gamma or colour profile information removed first using a metadata scrubbing tool, otherwise the colour output from <i>this</i> tool might be incorrect. The image is displayed centred on a black background, so you may want to factor that into your design as well.</p>
<p>Click the download button for the updated <code>bisrv.asd</code> file; use it to replace the one in the <code>bios</code> folder on your SF2000's microSD card.</p>
var bisrvData; // Used to store the binary data from the bisrv.asd file
var logoOffset; // Will contain the offset of the boot logo within the bisrv.asd file
var newLogoData; // Used to store the little-endian RGB565 binary data of the new boot logo
function bisrvLoad(file) {
var frBisrv = new FileReader();
frBisrv.onload = function(event) {
// Read the provided file's data into an array...
var data = new Uint8Array(event.target.result);
// Let's check the data to see if it looks like one of the known bisrv.asd versions...
if (data.length == 12647452) {
// That's the correct length for the original March 28th version of the file
logoOffset = 0x9B9030;
bisrvData = data;
document.getElementById("bisrvOutput").innerHTML = "<pclass=\"infoMessage\">INFO: March 28th bisrv.asd detected</p>";
}
else if (data.length == 12648068) {
// That's the correct length for the April 20th version of the file
logoOffset = 0x9B91D8;
bisrvData = data;
document.getElementById("bisrvOutput").innerHTML = "<pclass=\"infoMessage\">INFO: April 20th bisrv.asd detected</p>";
}
else {
document.getElementById("bisrvOutput").innerHTML = "<pclass=\"errorMessage\">ERROR: The selected file does not appear to be a known bisrv.asd file!</p>";
// First check to make sure the selected file's data URL includes a PNG or JPEG data type...
if (!event.target.result.includes("data:image/png;") && !event.target.result.includes("data:image/jpeg;")) {
document.getElementById("imageOutput").innerHTML = "<pclass=\"errorMessage\">ERROR: The selected file does not appear to be a PNG or JPEG image file!</p>";