コード例 #1
0
ファイル: main.cpp プロジェクト: Akira-28/gedosato
string getAssetFileName(string filename) {
	string fn = getInstallDirectory() + "assets\\" + filename;
	if(boost::filesystem::exists(fn)) return fn;
	fn = getInstallDirectory() + "assets\\dx9\\" + filename;
	if(boost::filesystem::exists(fn)) return fn;
	fn = getInstallDirectory() + "assets\\dx11\\" + filename;
	if(boost::filesystem::exists(fn)) return fn;
	SDLOG(-1, "ERROR: couldn't find asset file %s\n", filename);
	return filename;
}
コード例 #2
0
ファイル: main.cpp プロジェクト: Kaldaien/gedosato
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();
}
コード例 #3
0
void RSManager::dumpSurface(const char* name, IDirect3DSurface9* surface) {
	auto dirname = format("%s\\tmp\\%s", getInstallDirectory().c_str(), getExeFileName().c_str());
	CreateDirectory(dirname.c_str(), NULL);
	auto fullname = format("%s\\dump%03d_%s_%p.tga", dirname.c_str(), dumpCaptureIndex++, name, surface);
	SDLOG(1, "!! dumped RT %p to %s\n", surface, fullname.c_str());
	D3DXSaveSurfaceToFile(fullname.c_str(), D3DXIFF_TGA, surface, NULL, NULL);
}
コード例 #4
0
void RSManager::captureRTScreen(const string& stype) {
	SDLOG(0, "Capturing screenshot\n");
	char timebuf[128], dirbuff[512], buffer[512];
	time_t ltime;
	time(&ltime);
	struct tm *timeinfo;
	timeinfo = localtime(&ltime);
	strftime(timebuf, 128, "screenshot_%Y-%m-%d_%H-%M-%S.bmp", timeinfo);
	sprintf(dirbuff, "%sscreens\\%s", getInstallDirectory().c_str(), getExeFileName().c_str());
	CreateDirectory(dirbuff, NULL);
	sprintf(buffer, "%s\\%s", dirbuff, timebuf);
	SDLOG(0, " - to %s\n", buffer);
		
	IDirect3DSurface9 *render = NULL;
	d3ddev->GetRenderTarget(0, &render);
	if(render) {
		D3DXSaveSurfaceToFile(buffer, D3DXIFF_BMP, render, NULL, NULL);
		Console::get().add(format("Captured %s screenshot to %s", stype.c_str(), buffer));
	}
	SAFERELEASE(render);
}
コード例 #5
0
void RSManagerDX9::captureRTScreen(const string& stype, IDirect3DSurface9 *rtArg) {
	SDLOG(0, "Capturing screenshot\n");
	static unsigned index = 0;
	char timebuf[128], dirbuff[512], buffer[512];
	time_t ltime;
	time(&ltime);
	struct tm *timeinfo;
	timeinfo = localtime(&ltime);
	strftime(timebuf, 128, "screenshot_%Y-%m-%d_%H-%M-%S", timeinfo);
	sprintf(dirbuff, "%sscreens\\%s", getInstallDirectory().c_str(), getExeFileName().c_str());
	CreateDirectory(dirbuff, NULL);
	sprintf(buffer, "%s\\%s_%u.png", dirbuff, timebuf, index++);
	SDLOG(0, " - to %s\n", buffer);

	IDirect3DSurface9 *render = rtArg;
	if(rtArg == NULL) d3ddev->GetRenderTarget(0, &render);
	if(render) {
		imgWriter->writeSurface(buffer, render);
		Console::get().add(format("Captured %s screenshot to %s", stype.c_str(), buffer));
	}
	if(rtArg == NULL) SAFERELEASE(render);
}
コード例 #6
0
ファイル: main.cpp プロジェクト: Baboonanza/gedosato
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;
}
コード例 #7
0
ファイル: main.cpp プロジェクト: Baboonanza/gedosato
string getConfigFileName(string filename) {
	return getInstallDirectory() + "config\\" + filename;
}
コード例 #8
0
ファイル: main.cpp プロジェクト: Baboonanza/gedosato
string getAssetFileName(string filename) {
	return getInstallDirectory() + "assets\\" + filename;
}
コード例 #9
0
ファイル: main.cpp プロジェクト: Baboonanza/gedosato
string getInstalledFileName(string filename) {
	return getInstallDirectory() + filename;
}