From 9e1c048e206d4e91d03ef8978bf61a6af654fc3b Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 12 Feb 2021 01:49:09 +0300 Subject: [PATCH] Remove version text, add toggleable debug info(with commit hash!) --- .gitignore | 2 ++ premake5.lua | 6 ++++- printHash.bat | 26 ++++++++++++++++++++ printHash.sh | 14 +++++++++++ src/core/config.h | 6 ++++- src/core/main.cpp | 56 ++++++++++++++++++++++++++++++++++++++++-- src/core/re3.cpp | 13 +++++++++- src/extras/GitSHA1.cpp | 2 ++ src/extras/GitSHA1.h | 1 + 9 files changed, 121 insertions(+), 5 deletions(-) create mode 100644 printHash.bat create mode 100644 printHash.sh create mode 100644 src/extras/GitSHA1.cpp create mode 100644 src/extras/GitSHA1.h diff --git a/.gitignore b/.gitignore index 44d3eb0b..b4f221f2 100644 --- a/.gitignore +++ b/.gitignore @@ -358,3 +358,5 @@ sdk/ codewarrior/re3_Data/ codewarrior/Release/ codewarrior/Debug/ + +src/extras/GitSHA1.cpp \ No newline at end of file diff --git a/premake5.lua b/premake5.lua index a0d54ea7..64dc8767 100644 --- a/premake5.lua +++ b/premake5.lua @@ -313,7 +313,7 @@ project "re3" filter {} if(os.getenv("GTA_III_RE_DIR")) then - setpaths("$(GTA_III_RE_DIR)/", "%(cfg.buildtarget.name)") + setpaths(os.getenv("GTA_III_RE_DIR") .. "/", "%(cfg.buildtarget.name)") end filter "platforms:win*" @@ -327,6 +327,10 @@ project "re3" -- external librw is dynamic staticruntime "on" end + prebuildcommands { '"%{prj.location}..\\printHash.bat" "%{prj.location}..\\src\\extras\\GitSHA1.cpp"' } + + filter "platforms:not win*" + prebuildcommands { '"%{prj.location}../printHash.sh" "%{prj.location}../src/extras/GitSHA1.cpp"' } filter "platforms:win*glfw*" staticruntime "off" diff --git a/printHash.bat b/printHash.bat new file mode 100644 index 00000000..ef1cd9d6 --- /dev/null +++ b/printHash.bat @@ -0,0 +1,26 @@ +@echo off + +REM creates version.h with HEAD commit hash +REM params: $1=full path to output file (usually points version.h) + +setlocal enableextensions enabledelayedexpansion + +cd /d "%~dp0" + +break> %1 + + %1 + +where git +if "%errorlevel%" == "0" ( goto :havegit ) else ( goto :writeending ) + +:havegit +for /f %%v in ('git rev-parse --short HEAD') do set version=%%v +> %1 + +:writeending + +echo ^" >> %1 +echo const char* g_GIT_SHA1 = GIT_SHA1; >> %1 + +EXIT /B \ No newline at end of file diff --git a/printHash.sh b/printHash.sh new file mode 100644 index 00000000..7b4453a1 --- /dev/null +++ b/printHash.sh @@ -0,0 +1,14 @@ +#!/usr/bin/bash + +> $1 + +echo -n "#define GIT_SHA1 \"" > $1 + +git --version 2>&1 >/dev/null +GIT_IS_AVAILABLE=$? +if [ $GIT_IS_AVAILABLE -ne 0 ]; then +git rev-parse --short HEAD | tr -d '\n' >> $1 +fi + +echo "\"" >> $1 +echo "const char* g_GIT_SHA1 = GIT_SHA1;" >> $1 \ No newline at end of file diff --git a/src/core/config.h b/src/core/config.h index 73c29f15..87c31a0f 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -183,7 +183,11 @@ enum Config { // those infamous texts #define DRAW_GAME_VERSION_TEXT -#define DRAW_MENU_VERSION_TEXT +#ifdef DRAW_GAME_VERSION_TEXT + #define TOGGLEABLE_VERSION_TEXT + #define USE_OUR_VERSIONING // If you disable this then game will fetch version peds.col, as R* did while in development +#endif +//#define DRAW_MENU_VERSION_TEXT // Memory allocation and compression // #define USE_CUSTOM_ALLOCATOR // use CMemoryHeap for allocation. use with care, not finished yet diff --git a/src/core/main.cpp b/src/core/main.cpp index af0d556a..363087c0 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -70,6 +70,9 @@ #include "custompipes.h" #include "screendroplets.h" #include "MemoryHeap.h" +#ifdef USE_OUR_VERSIONING +#include "GitSHA1.h" +#endif GlobalScene Scene; @@ -86,6 +89,9 @@ bool gbModelViewer; #ifdef TIMEBARS bool gbShowTimebars; #endif +#ifdef TOGGLEABLE_VERSION_TEXT +bool gDrawVersionText; +#endif volatile int32 frameCount; @@ -1089,13 +1095,58 @@ DisplayGameDebugText() #ifdef DRAW_GAME_VERSION_TEXT wchar ver[200]; - + +#ifdef TOGGLEABLE_VERSION_TEXT + if(gDrawVersionText) +#endif + { + +#ifdef USE_OUR_VERSIONING + char verA[200]; + sprintf(verA, +#if defined _WIN32 + "Win " +#elif defined __linux__ + "Linux " +#elif defined __APPLE__ + "Mac OS X " +#elif defined __FreeBSD__ + "FreeBSD " +#else + "Posix-compliant " +#endif +#if defined __LP64__ || defined _WIN64 + "64-bit " +#else + "32-bit " +#endif +#if defined RW_D3D9 + "D3D9 " +#elif defined RWLIBS + "D3D8 " +#elif defined RW_GL3 + "OpenGL " +#endif +#if defined AUDIO_OAL + "OAL " +#elif defined AUDIO_MSS + "MSS " +#endif +#if defined _DEBUG || defined DEBUG + "DEBUG " +#endif + "%.8s", + g_GIT_SHA1); + AsciiToUnicode(verA, ver); + CFont::SetScale(SCREEN_SCALE_X(0.5f), SCREEN_SCALE_Y(0.7f)); +#else AsciiToUnicode(version_name, ver); + CFont::SetScale(SCREEN_SCALE_X(0.5f), SCREEN_SCALE_Y(0.5f)); +#endif CFont::SetPropOn(); CFont::SetBackgroundOff(); CFont::SetFontStyle(FONT_BANK); - CFont::SetScale(SCREEN_SCALE_X(0.5f), SCREEN_SCALE_Y(0.5f)); CFont::SetCentreOff(); CFont::SetRightJustifyOff(); CFont::SetWrapx(SCREEN_WIDTH); @@ -1107,6 +1158,7 @@ DisplayGameDebugText() #else CFont::PrintString(10.0f, 10.0f, ver); #endif + } #endif // #ifdef DRAW_GAME_VERSION_TEXT FrameSamples++; diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 3584e226..80e89ca4 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -508,6 +508,10 @@ bool LoadINISettings() #ifdef FIX_SPRITES ReadIniIfExists("Draw", "FixSprites", &CDraw::ms_bFixSprites); #endif +#ifdef TOGGLEABLE_VERSION_TEXT + extern bool gDrawVersionText; + ReadIniIfExists("General", "DrawVersionText", &gDrawVersionText); +#endif #ifdef CUSTOM_FRONTEND_OPTIONS bool migrate = cfg.category_size("FrontendOptions") != 0; @@ -595,6 +599,10 @@ void SaveINISettings() #ifdef FIX_SPRITES StoreIni("Draw", "FixSprites", CDraw::ms_bFixSprites); #endif +#ifdef TOGGLEABLE_VERSION_TEXT + extern bool gDrawVersionText; + StoreIni("General", "DrawVersionText", gDrawVersionText); +#endif #ifdef CUSTOM_FRONTEND_OPTIONS for (int i = 0; i < MENUPAGES; i++) { for (int j = 0; j < NUM_MENUROWS; j++) { @@ -985,7 +993,10 @@ extern bool gbRenderWorld2; #endif - +#ifdef TOGGLEABLE_VERSION_TEXT + extern bool gDrawVersionText; + DebugMenuAddVarBool8("Debug", "Version Text", &gDrawVersionText, nil); +#endif #ifndef FINAL DebugMenuAddVarBool8("Debug", "Print Memory Usage", &gbPrintMemoryUsage, nil); #ifdef USE_CUSTOM_ALLOCATOR diff --git a/src/extras/GitSHA1.cpp b/src/extras/GitSHA1.cpp new file mode 100644 index 00000000..3d1cd73e --- /dev/null +++ b/src/extras/GitSHA1.cpp @@ -0,0 +1,2 @@ +#define GIT_SHA1 "" +const char* g_GIT_SHA1 = GIT_SHA1; diff --git a/src/extras/GitSHA1.h b/src/extras/GitSHA1.h new file mode 100644 index 00000000..359bfaff --- /dev/null +++ b/src/extras/GitSHA1.h @@ -0,0 +1 @@ +extern const char* g_GIT_SHA1; \ No newline at end of file