Cemu/src/mainLLE.cpp
SSimco 67de63bed6
Some checks are pending
Build check / build (push) Waiting to run
Generate translation template / generate-pot (push) Waiting to run
UI+build: Isolate wxWidgets code from non-GUI code (#1633)
2025-07-15 04:28:41 +02:00

49 lines
1.1 KiB
C++

#include "util/crypto/aes128.h"
#include "WindowSystem.h"
#include "Common/FileStream.h"
void CemuCommonInit();
typedef struct
{
/* +0x000 */ uint32be magic;
}ppcAncastHeader_t;
void loadEncryptedPPCAncastKernel()
{
auto kernelData = FileStream::LoadIntoMemory("kernel.img");
if (!kernelData)
exit(-1);
// check header
ppcAncastHeader_t* ancastHeader = (ppcAncastHeader_t*)kernelData->data();
if(ancastHeader->magic != (uint32be)0xEFA282D9)
assert_dbg(); // invalid magic
memcpy(memory_getPointerFromPhysicalOffset(0x08000000), kernelData->data(), kernelData->size());
}
void loadPPCBootrom()
{
auto bootromData = FileStream::LoadIntoMemory("bootrom.bin");
if (!bootromData)
exit(-1);
memcpy(memory_getPointerFromPhysicalOffset(0x00000000), bootromData->data(), bootromData->size());
}
void mainEmulatorLLE()
{
CemuCommonInit();
// memory init
memory_initPhysicalLayout();
// start GUI thread
WindowSystem::Create();
// load kernel ancast image
loadPPCBootrom();
loadEncryptedPPCAncastKernel();
PPCTimer_waitForInit();
// begin execution
PPCCoreLLE_startSingleCoreScheduler(0x00000100);
}