void RSManager::initResources() { SDLOG(0, "RenderstateManager resource initialization started\n"); unsigned rw = Settings::get().getRenderWidth(), rh = Settings::get().getRenderHeight(); unsigned dofRes = Settings::get().getDOFOverrideResolution(); if(Settings::get().getAAQuality()) { if(Settings::get().getAAType() == "SMAA") { smaa = new SMAA(d3ddev, rw, rh, (SMAA::Preset)(Settings::get().getAAQuality()-1)); } else { fxaa = new FXAA(d3ddev, rw, rh, (FXAA::Quality)(Settings::get().getAAQuality()-1)); } } if(Settings::get().getSsaoStrength()) ssao = new SSAO(d3ddev, rw, rh, Settings::get().getSsaoStrength()-1, (Settings::get().getSsaoType() == "VSSAO") ? SSAO::VSSAO : ((Settings::get().getSsaoType() == "HBAO") ? SSAO::HBAO : SSAO::SCAO) ); if(Settings::get().getDOFBlurAmount()) gauss = new GAUSS(d3ddev, dofRes*16/9, dofRes); if(Settings::get().getEnableHudMod()) hud = new HUD(d3ddev, rw, rh); d3ddev->CreateTexture(rw, rh, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &rgbaBuffer1Tex, NULL); rgbaBuffer1Tex->GetSurfaceLevel(0, &rgbaBuffer1Surf); d3ddev->CreateDepthStencilSurface(rw, rh, D3DFMT_D24S8, D3DMULTISAMPLE_NONE, 0, false, &depthStencilSurf, NULL); d3ddev->CreateStateBlock(D3DSBT_ALL, &prevStateBlock); if (Settings::get().getEnableTextureOverride() && Settings::get().getEnableTexturePrefetch()) prefetchTextures(); if (Settings::get().getEnableShaderDumping()) { createDirectory(PIXEL_SHADER_DUMP_DIR); createDirectory(VERTEX_SHADER_DUMP_DIR); } SDLOG(0, "RenderstateManager resource initialization completed\n"); if(!inited) startDetour(); // on first init only inited = true; }
LRESULT CALLBACK GeDoSaToHook(_In_ int nCode, _In_ WPARAM wParam, _In_ LPARAM lParam) { if(g_active) { SDLOG(18, "GeDoSaToHook called\n"); if(Settings::get().getDelayDetouring() && !g_detoured) { g_detoured = true; startDetour(); } } return CallNextHookEx(NULL, nCode, wParam, lParam); }
extern "C" __declspec(dllexport) void GeDoSaToInit() { // read install location from registry getInstallDirectory(); OutputDebugString("GeDoSaTo: Got install dir"); // loaded in GeDoSaToTool, stay in memory if(getExeFileName() == "GeDoSaToTool") { OutputDebugString("GeDoSaTo: Tool mode"); g_tool = true; return; } g_active = true; OutputDebugString(format("GeDoSaTo: Active on %s", getExeFileName()).c_str()); // initialize log string logFn = format("logs\\%s_%s.log", getExeFileName().c_str(), getTimeString().c_str()); std::replace(logFn.begin(), logFn.end(), ':', '-'); std::replace(logFn.begin(), logFn.end(), ' ', '_'); logFn = getInstalledFileName(logFn); fopen_s(&g_oFile, logFn.c_str(), "w"); if(!g_oFile) OutputDebugString(format("GeDoSaTo: Error opening log fn %s", logFn.c_str()).c_str()); else OutputDebugString(format("GeDoSaTo: Opening log fn %s, handle: %p", logFn.c_str(), g_oFile).c_str()); OutputDebugString("GeDoSaTo: Log file initialized, let that take over"); // startup SDLOG(-1, "===== %s =====\n", getTimeString().c_str()); SDLOG(-1, "===== start "INTERCEPTOR_NAME" %s = fn: %s\n", GeDoSaToVersion(), getExeFileName().c_str()); SDLOG(-1, "===== installation directory: %s\n", getInstallDirectory().c_str()); // load settings Settings::get().load(); Settings::get().report(); KeyActions::get().load(); KeyActions::get().report(); // early steam dll loading if(!Settings::get().getPreventSteamOverlay() && Settings::get().getLoadSteamOverlayEarly()) { SDLOG(2, "Attempting to pre-load Steam overlay dll.\n"); LoadLibrary("gameoverlayrenderer.dll"); } // early d3d loading if(Settings::get().getLoadD3DEarly()) { SDLOG(2, "Early d3d loading.\n"); auto dllname = getSystemDllName("d3d9.dll"); LoadLibrary(dllname.c_str()); } // detour startDetour(); }
BOOL WINAPI DllMain(HMODULE hDll, DWORD dwReason, PVOID pvReserved) { if(dwReason == DLL_PROCESS_ATTACH) { OutputDebugString("GeDoSaTo: startup"); // read install location from registry getInstallDirectory(); OutputDebugString("GeDoSaTo: Got install dir"); // don't attach to processes on the blacklist / not on the whitelist if(getUseBlacklist() ? onList(getExeFileName(), "blacklist.txt") : !onList(getExeFileName(), "whitelist.txt")) { OutputDebugString("GeDoSaTo: blacklisted / not whitelisted"); if(getExeFileName() == "GeDoSaToTool") return true; return true; } g_active = true; OutputDebugString("GeDoSaTo: Active"); // initialize log string logFn = format("logs\\%s_%s.log", getExeFileName().c_str(), getTimeString().c_str()); std::replace(logFn.begin(), logFn.end(), ':', '-'); std::replace(logFn.begin(), logFn.end(), ' ', '_'); logFn = getInstalledFileName(logFn); fopen_s(&g_oFile, logFn.c_str(), "w"); if(!g_oFile) OutputDebugString(format("GeDoSaTo: Error opening log fn %s", logFn.c_str()).c_str()); else OutputDebugString(format("GeDoSaTo: Opening log fn %s, handle: %p", logFn.c_str(), g_oFile).c_str()); OutputDebugString("GeDoSaTo: Log file initialized, let that take over"); // startup sdlogtime(-1); SDLOG(-1, "===== start "INTERCEPTOR_NAME" %s = fn: %s\n", GeDoSaToVersion(), getExeFileName().c_str()); SDLOG(-1, "===== installation directory: %s\n", getInstallDirectory().c_str()); // load settings Settings::get().load(); Settings::get().report(); KeyActions::get().load(); KeyActions::get().report(); if(!Settings::get().getPreventSteamOverlay() && Settings::get().getLoadSteamOverlayEarly()) { SDLOG(2, "Attempting to pre-load Steam overlay dll.\n"); LoadLibrary("gameoverlayrenderer.dll"); } if(Settings::get().getLoadD3DEarly()) { SDLOG(2, "Early d3d loading.\n"); auto dllname = getSystemDllName("d3d9.dll"); LoadLibrary(dllname.c_str()); } // detour startDetour(); return true; } if(dwReason == DLL_PROCESS_DETACH && g_active) { Settings::get().shutdown(); endDetour(); SDLOG(-1, "===== end =\n"); fclose(g_oFile); } return false; }