public static void ToggleNoSignalPopup(bool enabled, byte[] firmware, Firmware detectedFirmware) { if (enabled) { firmware[detectedFirmware.NoSignalOffset] = 0x12; // LCALL } else { firmware[detectedFirmware.NoSignalOffset] = 0x22; // RET } }
public static void ToggleHdmiPopup(bool enabled, byte[] firmware, Firmware detectedFirmware) { if (enabled) { firmware[detectedFirmware.ShowNoteOffset] = 0xE4; // CLR A } else { firmware[detectedFirmware.ShowNoteOffset] = 0x22; // RET } }
public static Firmware DetectFirmware(byte[] firmware) { Firmware detectedFirmware = null; foreach (Firmware fw in Firmware.KnownFirmwares) { if (fw.CheckHash(firmware)) { detectedFirmware = fw; break; } } return(detectedFirmware); }
public static void ReplaceHdmiPopup(string hdmiReplacement, byte[] firmware, Firmware detectedFirmware) { int offset = 0; foreach (char chr in hdmiReplacement) { byte[] bytes = _osdCharacters[chr]; foreach (byte b in bytes) { firmware[detectedFirmware.HdmiStringOffset + offset] = b; offset++; } } firmware[detectedFirmware.HdmiStringOffset + offset] = 0x00; }
public static void ChangeBackgroundColor(Color color, byte[] firmware, Firmware detectedFirmware) { firmware[detectedFirmware.AdjustBackgroundColorOffset + 0x1D] = 0x7D; // MOV R5 firmware[detectedFirmware.AdjustBackgroundColorOffset + 0x1E] = color.R; firmware[detectedFirmware.AdjustBackgroundColorOffset + 0x1F] = 0x00; // NOP firmware[detectedFirmware.AdjustBackgroundColorOffset + 0x23] = 0x7D; // MOV R5 firmware[detectedFirmware.AdjustBackgroundColorOffset + 0x24] = color.G; firmware[detectedFirmware.AdjustBackgroundColorOffset + 0x25] = 0x00; // NOP firmware[detectedFirmware.AdjustBackgroundColorOffset + 0x29] = 0x7D; // MOV R5 firmware[detectedFirmware.AdjustBackgroundColorOffset + 0x2A] = color.B; firmware[detectedFirmware.AdjustBackgroundColorOffset + 0x2B] = 0x00; // NOP firmware[detectedFirmware.AdjustBackgroundColorOffset + 0x2C] = 0x00; // NOP firmware[detectedFirmware.AdjustBackgroundColorOffset + 0x2D] = 0x00; // NOP firmware[detectedFirmware.AdjustBackgroundColorOffset + 0x3C] = 0x00; // NOP firmware[detectedFirmware.AdjustBackgroundColorOffset + 0x3D] = 0x00; // NOP }
public static bool ChangeLogo(string logoFileName, byte[] firmware, Firmware detectedFirmware, out string error) { error = string.Empty; FontCoder logo = new FontCoder(FontCoder.FontWidthKedei, FontCoder.FontHeightKedei); if (!logo.LoadImage(logoFileName)) { error = $"Error! Cannot load logo from \"{logoFileName}\"."; return(false); } byte[] logoBytes = logo.Encode(); if (logoBytes.Length > detectedFirmware.MaxLogoLength) { error = "Error! Encoded logo is too long and would overwrite other firmware parts."; return(false); } Array.Copy(logoBytes, 0, firmware, detectedFirmware.LogoOffset, logoBytes.Length); return(true); }
public static void ChangeLogoForegroundColor(Color color, byte[] firmware, Firmware detectedFirmware) { firmware[detectedFirmware.PaletteOffset + 12] = color.R; firmware[detectedFirmware.PaletteOffset + 13] = color.G; firmware[detectedFirmware.PaletteOffset + 14] = color.B; }