mirror of
https://github.com/hedge-dev/UnleashedRecomp.git
synced 2025-10-30 07:11:05 +00:00
80 lines
1.9 KiB
C++
80 lines
1.9 KiB
C++
#include "app.h"
|
|
#include <api/SWA.h>
|
|
#include <gpu/video.h>
|
|
#include <install/installer.h>
|
|
#include <kernel/function.h>
|
|
#include <os/process.h>
|
|
#include <patches/audio_patches.h>
|
|
#include <patches/inspire_patches.h>
|
|
#include <ui/game_window.h>
|
|
#include <user/config.h>
|
|
#include <user/paths.h>
|
|
#include <user/registry.h>
|
|
|
|
void App::Restart(std::vector<std::string> restartArgs)
|
|
{
|
|
os::process::StartProcess(os::process::GetExecutablePath(), restartArgs, os::process::GetWorkingDirectory());
|
|
Exit();
|
|
}
|
|
|
|
void App::Exit()
|
|
{
|
|
Config::Save();
|
|
|
|
#ifdef _WIN32
|
|
timeEndPeriod(1);
|
|
#endif
|
|
|
|
std::_Exit(0);
|
|
}
|
|
|
|
// SWA::CApplication
|
|
PPC_FUNC_IMPL(__imp__sub_824EB490);
|
|
PPC_FUNC(sub_824EB490)
|
|
{
|
|
App::s_isInit = true;
|
|
App::s_isMissingDLC = !Installer::checkAllDLC(GetGamePath());
|
|
App::s_language = Config::Language;
|
|
|
|
SWA::SGlobals::Init();
|
|
Registry::Save();
|
|
|
|
__imp__sub_824EB490(ctx, base);
|
|
}
|
|
|
|
static std::thread::id g_mainThreadId = std::this_thread::get_id();
|
|
|
|
// SWA::CApplication::Update
|
|
PPC_FUNC_IMPL(__imp__sub_822C1130);
|
|
PPC_FUNC(sub_822C1130)
|
|
{
|
|
Video::WaitOnSwapChain();
|
|
|
|
// Correct small delta time errors.
|
|
if (Config::FPS >= FPS_MIN && Config::FPS < FPS_MAX)
|
|
{
|
|
double targetDeltaTime = 1.0 / Config::FPS;
|
|
|
|
if (abs(ctx.f1.f64 - targetDeltaTime) < 0.00001)
|
|
ctx.f1.f64 = targetDeltaTime;
|
|
}
|
|
|
|
App::s_deltaTime = ctx.f1.f64;
|
|
|
|
// This function can also be called by the loading thread,
|
|
// which SDL does not like. To prevent the OS from thinking
|
|
// the process is unresponsive, we will flush while waiting
|
|
// for the pipelines to finish compiling in video.cpp.
|
|
if (std::this_thread::get_id() == g_mainThreadId)
|
|
{
|
|
SDL_PumpEvents();
|
|
SDL_FlushEvents(SDL_FIRSTEVENT, SDL_LASTEVENT);
|
|
GameWindow::Update();
|
|
}
|
|
|
|
AudioPatches::Update(App::s_deltaTime);
|
|
InspirePatches::Update();
|
|
|
|
__imp__sub_822C1130(ctx, base);
|
|
}
|
|
|