System: Add "fast boot" option (skip boot logo)

This commit is contained in:
Connor McLaughlin
2019-11-16 01:04:51 +10:00
parent 30fd7a6683
commit a47492382c
4 changed files with 45 additions and 14 deletions

View File

@ -45,6 +45,8 @@ void Settings::Load(const char* filename)
display_linear_filtering = ini.GetBoolValue("Display", "LinearFiltering", true);
bios_path = ini.GetValue("BIOS", "Path", "scph1001.bin");
bios_patch_tty_enable = ini.GetBoolValue("BIOS", "PatchTTYEnable", true);
bios_patch_fast_boot = ini.GetBoolValue("BIOS", "PatchFastBoot", false);
memory_card_a_path = ini.GetValue("MemoryCard", "CardAPath", "memory_card_a.mcd");
memory_card_b_path = ini.GetValue("MemoryCard", "CardBPath", "");
@ -66,6 +68,8 @@ bool Settings::Save(const char* filename) const
ini.SetBoolValue("Display", "LinearFiltering", display_linear_filtering);
ini.SetValue("BIOS", "Path", bios_path.c_str());
ini.SetBoolValue("BIOS", "PatchTTYEnable", bios_patch_tty_enable);
ini.SetBoolValue("BIOS", "PatchFastBoot", bios_patch_fast_boot);
if (!memory_card_a_path.empty())
ini.SetValue("MemoryCard", "CardAPath", memory_card_a_path.c_str());

View File

@ -42,6 +42,9 @@ struct Settings
// TODO: Controllers, memory cards, etc.
std::string bios_path;
bool bios_patch_tty_enable = true;
bool bios_patch_fast_boot = false;
std::string memory_card_a_path;
std::string memory_card_b_path;

View File

@ -155,14 +155,25 @@ bool System::LoadBIOS()
bios_hash_string == BIOSHashes::SCPH_1002 || bios_hash_string == BIOSHashes::SCPH_5500 ||
bios_hash_string == BIOSHashes::SCPH_5501 || bios_hash_string == BIOSHashes::SCPH_5502)
{
// Patch to enable TTY.
Log_InfoPrintf("Patching BIOS to enable TTY/printf");
m_bus->PatchBIOS(0x1FC06F0C, 0x24010001);
m_bus->PatchBIOS(0x1FC06F14, 0xAF81A9C0);
if (GetSettings().bios_patch_tty_enable)
{
Log_InfoPrintf("Patching BIOS to enable TTY/printf");
m_bus->PatchBIOS(0x1FC06F0C, 0x24010001);
m_bus->PatchBIOS(0x1FC06F14, 0xAF81A9C0);
}
if (GetSettings().bios_patch_fast_boot)
{
Log_InfoPrintf("Patching BIOS for fast boot");
// Replace the shell entry point with a return back to the bootstrap.
m_bus->PatchBIOS(0x1FC18000, 0x03E00008);
m_bus->PatchBIOS(0x1FC18004, 0x00000000);
}
}
else
{
Log_WarningPrintf("Unknown BIOS version, not patching TTY/printf");
Log_WarningPrintf("Unknown BIOS version, not applying patches");
}
return true;