Compare commits

...

5 Commits

10 changed files with 351 additions and 31 deletions

View File

@ -342,10 +342,10 @@ project "reVC"
libdirs { "vendor/openal-soft/libs/Win64" }
filter "platforms:linux*oal"
links { "openal", "mpg123", "sndfile", "pthread" }
links { "openal", "mpg123", "sndfile", "pthread", "X11" }
filter "platforms:bsd*oal"
links { "openal", "mpg123", "sndfile", "pthread" }
links { "openal", "mpg123", "sndfile", "pthread", "X11" }
filter "platforms:macosx*oal"
links { "openal", "mpg123", "sndfile", "pthread" }

View File

@ -3097,11 +3097,10 @@ CMenuManager::LoadSettings()
#ifdef LOAD_INI_SETTINGS
if (LoadINISettings()) {
LoadINIControllerSettings();
} else {
// no re3.ini, create it
SaveINISettings();
SaveINIControllerSettings();
}
// if no reVC.ini, create it, or update it with new values
SaveINISettings();
SaveINIControllerSettings();
#endif
#ifdef FIX_BUGS

View File

@ -232,7 +232,6 @@ enum Config {
// not in master builds
#define VALIDATE_SAVE_SIZE
#define NO_MOVIES // disable intro videos
#define DEBUGMENU
#endif
@ -251,6 +250,8 @@ enum Config {
#define LOAD_INI_SETTINGS // as the name suggests. fundamental for CUSTOM_FRONTEND_OPTIONS
#define FIX_HIGH_FPS_BUGS_ON_FRONTEND
#define NO_MOVIES // add option to disable intro videos
#if defined(__LP64__) || defined(_WIN64)
#define FIX_BUGS_64 // Must have fixes to be able to run 64 bit build
#endif

View File

@ -95,7 +95,10 @@ bool gbModelViewer;
bool gbShowTimebars;
#endif
#ifdef DRAW_GAME_VERSION_TEXT
bool gDrawVersionText; // Our addition, we think it was always enabled on !MASTER builds
bool gbDrawVersionText; // Our addition, we think it was always enabled on !MASTER builds
#endif
#ifdef NO_MOVIES
bool gbNoMovies;
#endif
volatile int32 frameCount;
@ -1068,7 +1071,7 @@ DisplayGameDebugText()
#ifdef DRAW_GAME_VERSION_TEXT
wchar ver[200];
if(gDrawVersionText) // This realtime switch is our thing
if(gbDrawVersionText) // This realtime switch is our thing
{
#ifdef USE_OUR_VERSIONING

View File

@ -66,3 +66,11 @@ void SaveINIControllerSettings();
extern bool gbNewRenderer;
bool FredIsInFirstPersonCam(void);
#endif
#ifdef DRAW_GAME_VERSION_TEXT
extern bool gbDrawVersionText;
#endif
#ifdef NO_MOVIES
extern bool gbNoMovies;
#endif

View File

@ -533,8 +533,10 @@ bool LoadINISettings()
ReadIniIfExists("Draw", "FixSprites", &CDraw::ms_bFixSprites);
#endif
#ifdef DRAW_GAME_VERSION_TEXT
extern bool gDrawVersionText;
ReadIniIfExists("General", "DrawVersionText", &gDrawVersionText);
ReadIniIfExists("General", "DrawVersionText", &gbDrawVersionText);
#endif
#ifdef NO_MOVIES
ReadIniIfExists("General", "NoMovies", &gbNoMovies);
#endif
#ifdef CUSTOM_FRONTEND_OPTIONS
@ -630,8 +632,10 @@ void SaveINISettings()
StoreIni("Draw", "FixSprites", CDraw::ms_bFixSprites);
#endif
#ifdef DRAW_GAME_VERSION_TEXT
extern bool gDrawVersionText;
StoreIni("General", "DrawVersionText", gDrawVersionText);
StoreIni("General", "DrawVersionText", gbDrawVersionText);
#endif
#ifdef NO_MOVIES
StoreIni("General", "NoMovies", gbNoMovies);
#endif
#ifdef CUSTOM_FRONTEND_OPTIONS
for (int i = 0; i < MENUPAGES; i++) {
@ -1061,8 +1065,7 @@ extern bool gbRenderWorld2;
#ifdef DRAW_GAME_VERSION_TEXT
extern bool gDrawVersionText;
DebugMenuAddVarBool8("Debug", "Version Text", &gDrawVersionText, nil);
DebugMenuAddVarBool8("Debug", "Version Text", &gbDrawVersionText, nil);
#endif
DebugMenuAddVarBool8("Debug", "Show DebugStuffInRelease", &gbDebugStuffInRelease, nil);
#ifdef TIMEBARS
@ -1174,7 +1177,7 @@ void re3_assert(const char *expr, const char *filename, unsigned int lineno, con
strcat_s(re3_buff, re3_buffsize, "(Press Retry to debug the application)");
nCode = ::MessageBoxA(nil, re3_buff, "RE3 Assertion Failed!",
nCode = ::MessageBoxA(nil, re3_buff, "REVC Assertion Failed!",
MB_ABORTRETRYIGNORE|MB_ICONHAND|MB_SETFOREGROUND|MB_TASKMODAL);
if (nCode == IDABORT)
@ -1195,7 +1198,7 @@ void re3_assert(const char *expr, const char *filename, unsigned int lineno, con
abort();
#else
// TODO
printf("\nRE3 ASSERT FAILED\n\tFile: %s\n\tLine: %d\n\tFunction: %s\n\tExpression: %s\n",filename,lineno,func,expr);
printf("\nREVC ASSERT FAILED\n\tFile: %s\n\tLine: %d\n\tFunction: %s\n\tExpression: %s\n",filename,lineno,func,expr);
assert(false);
#endif
}
@ -1247,14 +1250,14 @@ void re3_usererror(const char *format, ...)
vsprintf_s(re3_buff, re3_buffsize, format, va);
va_end(va);
::MessageBoxA(nil, re3_buff, "RE3 Error!",
::MessageBoxA(nil, re3_buff, "REVC Error!",
MB_OK|MB_ICONHAND|MB_SETFOREGROUND|MB_TASKMODAL);
raise(SIGABRT);
_exit(3);
#else
vsprintf(re3_buff, format, va);
printf("\nRE3 Error!\n\t%s\n",re3_buff);
printf("\nREVC Error!\n\t%s\n",re3_buff);
assert(false);
#endif
}

View File

@ -107,7 +107,8 @@ void
PushRendergroup(const char *name)
{
#if defined(RW_OPENGL)
glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, -1, name);
if(GLAD_GL_KHR_debug)
glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, -1, name);
#elif defined(RW_D3D9)
static WCHAR tmp[256];
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, name, -1, tmp, sizeof(tmp));
@ -119,7 +120,8 @@ void
PopRendergroup(void)
{
#if defined(RW_OPENGL)
glPopDebugGroup();
if(GLAD_GL_KHR_debug)
glPopDebugGroup();
#elif defined(RW_D3D9)
D3DPERF_EndEvent();
#endif

View File

@ -50,16 +50,30 @@ long _dwOperatingSystemVersion;
#include "Font.h"
#include "MemoryMgr.h"
#define MAX_SUBSYSTEMS (16)
// We found out that GLFW's keyboard input handling is still pretty delayed/not stable, so now we fetch input from X11 directly on Linux.
#if !defined _WIN32 && !defined __APPLE__ && !defined __SWITCH__ // && !defined WAYLAND
#define GET_KEYBOARD_INPUT_FROM_X11
#endif
#ifdef GET_KEYBOARD_INPUT_FROM_X11
#include <X11/Xlib.h>
#include <X11/XKBlib.h>
#define GLFW_EXPOSE_NATIVE_X11
#include <GLFW/glfw3native.h>
#endif
#ifdef _WIN32
#define GLFW_EXPOSE_NATIVE_WIN32
#include <GLFW/glfw3native.h>
#endif
#define MAX_SUBSYSTEMS (16)
rw::EngineOpenParams openParams;
static RwBool ForegroundApp = TRUE;
static RwBool WindowIconified = FALSE;
static RwBool WindowFocused = TRUE;
static RwBool RwInitialised = FALSE;
@ -325,7 +339,9 @@ psInitialize(void)
RsGlobal.ps = &PsGlobal;
PsGlobal.fullScreen = FALSE;
PsGlobal.cursorIsInWindow = TRUE;
PsGlobal.cursorIsInWindow = FALSE;
WindowFocused = TRUE;
WindowIconified = FALSE;
PsGlobal.joy1id = -1;
PsGlobal.joy2id = -1;
@ -849,11 +865,15 @@ psSelectDevice()
return TRUE;
}
#ifndef GET_KEYBOARD_INPUT_FROM_X11
void keypressCB(GLFWwindow* window, int key, int scancode, int action, int mods);
#endif
void resizeCB(GLFWwindow* window, int width, int height);
void scrollCB(GLFWwindow* window, double xoffset, double yoffset);
void cursorCB(GLFWwindow* window, double xpos, double ypos);
void cursorEnterCB(GLFWwindow* window, int entered);
void windowFocusCB(GLFWwindow* window, int focused);
void windowIconifyCB(GLFWwindow* window, int iconified);
void joysChangeCB(int jid, int event);
bool IsThisJoystickBlacklisted(int i)
@ -962,11 +982,15 @@ void psPostRWinit(void)
RwVideoMode vm;
RwEngineGetVideoModeInfo(&vm, GcurSelVM);
#ifndef GET_KEYBOARD_INPUT_FROM_X11
glfwSetKeyCallback(PSGLOBAL(window), keypressCB);
#endif
glfwSetFramebufferSizeCallback(PSGLOBAL(window), resizeCB);
glfwSetScrollCallback(PSGLOBAL(window), scrollCB);
glfwSetCursorPosCallback(PSGLOBAL(window), cursorCB);
glfwSetCursorEnterCallback(PSGLOBAL(window), cursorEnterCB);
glfwSetWindowIconifyCallback(PSGLOBAL(window), windowIconifyCB);
glfwSetWindowFocusCallback(PSGLOBAL(window), windowFocusCB);
glfwSetJoystickCallback(joysChangeCB);
_InputInitialiseJoys();
@ -1318,6 +1342,10 @@ void scrollCB(GLFWwindow* window, double xoffset, double yoffset) {
PSGLOBAL(mouseWheel) = yoffset;
}
bool lshiftStatus = false;
bool rshiftStatus = false;
#ifndef GET_KEYBOARD_INPUT_FROM_X11
int keymap[GLFW_KEY_LAST + 1];
static void
@ -1448,9 +1476,6 @@ initkeymap(void)
keymap[GLFW_KEY_MENU] = rsNULL;
}
bool lshiftStatus = false;
bool rshiftStatus = false;
void
keypressCB(GLFWwindow* window, int key, int scancode, int action, int mods)
{
@ -1468,6 +1493,266 @@ keypressCB(GLFWwindow* window, int key, int scancode, int action, int mods)
}
}
#else
uint32 keymap[512]; // 256 ascii + 256 KeySyms between 0xff00 - 0xffff
bool keyStates[512];
uint32 keyCodeToKeymapIndex[256]; // cache for physical keys
#define KEY_MAP_OFFSET (0xff00 - 256)
static void
initkeymap(void)
{
Display *display = glfwGetX11Display();
int i;
for (i = 0; i < ARRAY_SIZE(keymap); i++)
keymap[i] = rsNULL;
// You can add new ASCII mappings to here freely (but beware that if right hand side of assignment isn't supported on CFont, it'll be blank/won't work on binding screen)
// Right hand side of assigments should always be uppercase counterpart of character
keymap[XK_space] = ' ';
keymap[XK_apostrophe] = '\'';
keymap[XK_ampersand] = '&';
keymap[XK_percent] = '%';
keymap[XK_dollar] = '$';
keymap[XK_comma] = ',';
keymap[XK_minus] = '-';
keymap[XK_period] = '.';
keymap[XK_slash] = '/';
keymap[XK_question] = '?';
keymap[XK_exclam] = '!';
keymap[XK_quotedbl] = '"';
keymap[XK_colon] = ':';
keymap[XK_semicolon] = ';';
keymap[XK_equal] = '=';
keymap[XK_bracketleft] = '[';
keymap[XK_backslash] = '\\';
keymap[XK_bracketright] = ']';
keymap[XK_grave] = '`';
keymap[XK_0] = '0';
keymap[XK_1] = '1';
keymap[XK_2] = '2';
keymap[XK_3] = '3';
keymap[XK_4] = '4';
keymap[XK_5] = '5';
keymap[XK_6] = '6';
keymap[XK_7] = '7';
keymap[XK_8] = '8';
keymap[XK_9] = '9';
keymap[XK_a] = 'A';
keymap[XK_b] = 'B';
keymap[XK_c] = 'C';
keymap[XK_d] = 'D';
keymap[XK_e] = 'E';
keymap[XK_f] = 'F';
keymap[XK_g] = 'G';
keymap[XK_h] = 'H';
keymap[XK_i] = 'I';
keymap[XK_I] = 'I'; // Turkish I problem
keymap[XK_j] = 'J';
keymap[XK_k] = 'K';
keymap[XK_l] = 'L';
keymap[XK_m] = 'M';
keymap[XK_n] = 'N';
keymap[XK_o] = 'O';
keymap[XK_p] = 'P';
keymap[XK_q] = 'Q';
keymap[XK_r] = 'R';
keymap[XK_s] = 'S';
keymap[XK_t] = 'T';
keymap[XK_u] = 'U';
keymap[XK_v] = 'V';
keymap[XK_w] = 'W';
keymap[XK_x] = 'X';
keymap[XK_y] = 'Y';
keymap[XK_z] = 'Z';
// Some of regional but ASCII characters that GTA supports
keymap[XK_agrave] = 0x00c0;
keymap[XK_aacute] = 0x00c1;
keymap[XK_acircumflex] = 0x00c2;
keymap[XK_adiaeresis] = 0x00c4;
keymap[XK_ae] = 0x00c6;
keymap[XK_egrave] = 0x00c8;
keymap[XK_eacute] = 0x00c9;
keymap[XK_ecircumflex] = 0x00ca;
keymap[XK_ediaeresis] = 0x00cb;
keymap[XK_igrave] = 0x00cc;
keymap[XK_iacute] = 0x00cd;
keymap[XK_icircumflex] = 0x00ce;
keymap[XK_idiaeresis] = 0x00cf;
keymap[XK_ccedilla] = 0x00c7;
keymap[XK_odiaeresis] = 0x00d6;
keymap[XK_udiaeresis] = 0x00dc;
// These are 0xff00 - 0xffff range of KeySym's, and subtracting KEY_MAP_OFFSET is needed
keymap[XK_Escape - KEY_MAP_OFFSET] = rsESC;
keymap[XK_Return - KEY_MAP_OFFSET] = rsENTER;
keymap[XK_Tab - KEY_MAP_OFFSET] = rsTAB;
keymap[XK_BackSpace - KEY_MAP_OFFSET] = rsBACKSP;
keymap[XK_Insert - KEY_MAP_OFFSET] = rsINS;
keymap[XK_Delete - KEY_MAP_OFFSET] = rsDEL;
keymap[XK_Right - KEY_MAP_OFFSET] = rsRIGHT;
keymap[XK_Left - KEY_MAP_OFFSET] = rsLEFT;
keymap[XK_Down - KEY_MAP_OFFSET] = rsDOWN;
keymap[XK_Up - KEY_MAP_OFFSET] = rsUP;
keymap[XK_Page_Up - KEY_MAP_OFFSET] = rsPGUP;
keymap[XK_Page_Down - KEY_MAP_OFFSET] = rsPGDN;
keymap[XK_Home - KEY_MAP_OFFSET] = rsHOME;
keymap[XK_End - KEY_MAP_OFFSET] = rsEND;
keymap[XK_Caps_Lock - KEY_MAP_OFFSET] = rsCAPSLK;
keymap[XK_Scroll_Lock - KEY_MAP_OFFSET] = rsSCROLL;
keymap[XK_Num_Lock - KEY_MAP_OFFSET] = rsNUMLOCK;
keymap[XK_Pause - KEY_MAP_OFFSET] = rsPAUSE;
keymap[XK_F1 - KEY_MAP_OFFSET] = rsF1;
keymap[XK_F2 - KEY_MAP_OFFSET] = rsF2;
keymap[XK_F3 - KEY_MAP_OFFSET] = rsF3;
keymap[XK_F4 - KEY_MAP_OFFSET] = rsF4;
keymap[XK_F5 - KEY_MAP_OFFSET] = rsF5;
keymap[XK_F6 - KEY_MAP_OFFSET] = rsF6;
keymap[XK_F7 - KEY_MAP_OFFSET] = rsF7;
keymap[XK_F8 - KEY_MAP_OFFSET] = rsF8;
keymap[XK_F9 - KEY_MAP_OFFSET] = rsF9;
keymap[XK_F10 - KEY_MAP_OFFSET] = rsF10;
keymap[XK_F11 - KEY_MAP_OFFSET] = rsF11;
keymap[XK_F12 - KEY_MAP_OFFSET] = rsF12;
keymap[XK_F13 - KEY_MAP_OFFSET] = rsNULL;
keymap[XK_F14 - KEY_MAP_OFFSET] = rsNULL;
keymap[XK_F15 - KEY_MAP_OFFSET] = rsNULL;
keymap[XK_F16 - KEY_MAP_OFFSET] = rsNULL;
keymap[XK_F17 - KEY_MAP_OFFSET] = rsNULL;
keymap[XK_F18 - KEY_MAP_OFFSET] = rsNULL;
keymap[XK_F19 - KEY_MAP_OFFSET] = rsNULL;
keymap[XK_F20 - KEY_MAP_OFFSET] = rsNULL;
keymap[XK_F21 - KEY_MAP_OFFSET] = rsNULL;
keymap[XK_F22 - KEY_MAP_OFFSET] = rsNULL;
keymap[XK_F23 - KEY_MAP_OFFSET] = rsNULL;
keymap[XK_F24 - KEY_MAP_OFFSET] = rsNULL;
keymap[XK_F25 - KEY_MAP_OFFSET] = rsNULL;
keymap[XK_KP_0 - KEY_MAP_OFFSET] = rsPADINS;
keymap[XK_KP_1 - KEY_MAP_OFFSET] = rsPADEND;
keymap[XK_KP_2 - KEY_MAP_OFFSET] = rsPADDOWN;
keymap[XK_KP_3 - KEY_MAP_OFFSET] = rsPADPGDN;
keymap[XK_KP_4 - KEY_MAP_OFFSET] = rsPADLEFT;
keymap[XK_KP_5 - KEY_MAP_OFFSET] = rsPAD5;
keymap[XK_KP_6 - KEY_MAP_OFFSET] = rsPADRIGHT;
keymap[XK_KP_7 - KEY_MAP_OFFSET] = rsPADHOME;
keymap[XK_KP_8 - KEY_MAP_OFFSET] = rsPADUP;
keymap[XK_KP_9 - KEY_MAP_OFFSET] = rsPADPGUP;
keymap[XK_KP_Insert - KEY_MAP_OFFSET] = rsPADINS;
keymap[XK_KP_End - KEY_MAP_OFFSET] = rsPADEND;
keymap[XK_KP_Down - KEY_MAP_OFFSET] = rsPADDOWN;
keymap[XK_KP_Page_Down - KEY_MAP_OFFSET] = rsPADPGDN;
keymap[XK_KP_Left - KEY_MAP_OFFSET] = rsPADLEFT;
keymap[XK_KP_Begin - KEY_MAP_OFFSET] = rsPAD5;
keymap[XK_KP_Right - KEY_MAP_OFFSET] = rsPADRIGHT;
keymap[XK_KP_Home - KEY_MAP_OFFSET] = rsPADHOME;
keymap[XK_KP_Up - KEY_MAP_OFFSET] = rsPADUP;
keymap[XK_KP_Page_Up - KEY_MAP_OFFSET] = rsPADPGUP;
keymap[XK_KP_Decimal - KEY_MAP_OFFSET] = rsPADDEL;
keymap[XK_KP_Divide - KEY_MAP_OFFSET] = rsDIVIDE;
keymap[XK_KP_Multiply - KEY_MAP_OFFSET] = rsTIMES;
keymap[XK_KP_Subtract - KEY_MAP_OFFSET] = rsMINUS;
keymap[XK_KP_Add - KEY_MAP_OFFSET] = rsPLUS;
keymap[XK_KP_Enter - KEY_MAP_OFFSET] = rsPADENTER;
keymap[XK_KP_Equal - KEY_MAP_OFFSET] = rsNULL;
keymap[XK_Shift_L - KEY_MAP_OFFSET] = rsLSHIFT;
keymap[XK_Control_L - KEY_MAP_OFFSET] = rsLCTRL;
keymap[XK_Alt_L - KEY_MAP_OFFSET] = rsLALT;
keymap[XK_Super_L - KEY_MAP_OFFSET] = rsLWIN;
keymap[XK_Shift_R - KEY_MAP_OFFSET] = rsRSHIFT;
keymap[XK_Control_R - KEY_MAP_OFFSET] = rsRCTRL;
keymap[XK_Alt_R - KEY_MAP_OFFSET] = rsRALT;
keymap[XK_Super_R - KEY_MAP_OFFSET] = rsRWIN;
keymap[XK_Menu - KEY_MAP_OFFSET] = rsNULL;
// Cache the key codes' key symbol equivelants, otherwise we will have to do it on each frame
// KeyCode is always in [0,255], and represents a physical key
int min_keycode, max_keycode, keysyms_per_keycode;
KeySym *keymap, *origkeymap;
char *keyboardLang = setlocale (LC_CTYPE, NULL);
setlocale(LC_CTYPE, "");
XDisplayKeycodes(display, &min_keycode, &max_keycode);
origkeymap = XGetKeyboardMapping(display, min_keycode, (max_keycode - min_keycode + 1), &keysyms_per_keycode);
keymap = origkeymap;
for (int i = min_keycode; i <= max_keycode; i++) {
int j, lastKeysym;
lastKeysym = keysyms_per_keycode - 1;
while ((lastKeysym >= 0) && (keymap[lastKeysym] == NoSymbol))
lastKeysym--;
for (j = 0; j <= lastKeysym; j++) {
KeySym ks = keymap[j];
if (ks == NoSymbol)
continue;
if (ks < 256) {
keyCodeToKeymapIndex[i] = ks;
break;
} else if (ks >= 0xff00 && ks < 0xffff) {
keyCodeToKeymapIndex[i] = ks - KEY_MAP_OFFSET;
break;
}
}
keymap += keysyms_per_keycode;
}
XFree(origkeymap);
setlocale(LC_CTYPE, keyboardLang);
}
#undef KEY_MAP_OFFSET
void checkKeyPresses()
{
Display *display = glfwGetX11Display();
char keys[32];
XQueryKeymap(display, keys);
for (int i = 0; i < sizeof(keys); i++) {
for (int j = 0; j < 8; j++) {
KeyCode keycode = 8 * i + j;
uint32 keymapIndex = keyCodeToKeymapIndex[keycode];
if (keymapIndex != 0) {
int rsCode = keymap[keymapIndex];
if (rsCode == rsNULL)
continue;
bool pressed = WindowFocused && !!(keys[i] & (1 << j));
// idk why R* does that
if (rsCode == rsLSHIFT)
lshiftStatus = pressed;
else if (rsCode == rsRSHIFT)
rshiftStatus = pressed;
if (keyStates[keymapIndex] != pressed) {
if (pressed) {
RsKeyboardEventHandler(rsKEYDOWN, &rsCode);
} else {
RsKeyboardEventHandler(rsKEYUP, &rsCode);
}
}
keyStates[keymapIndex] = pressed;
}
}
}
}
#endif
// R* calls that in ControllerConfig, idk why
void
_InputTranslateShiftKeyUpDown(RsKeyCodes *rs) {
@ -1492,6 +1777,16 @@ cursorEnterCB(GLFWwindow* window, int entered) {
PSGLOBAL(cursorIsInWindow) = !!entered;
}
void
windowFocusCB(GLFWwindow* window, int focused) {
WindowFocused = !!focused;
}
void
windowIconifyCB(GLFWwindow* window, int iconified) {
WindowIconified = !!iconified;
}
/*
*****************************************************************************
*/
@ -1744,6 +2039,9 @@ main(int argc, char *argv[])
#endif
{
glfwPollEvents();
#ifdef GET_KEYBOARD_INPUT_FROM_X11
checkKeyPresses();
#endif
#ifndef MASTER
if (gbModelViewer) {
// This is TheModelViewerCore in LCS
@ -1882,7 +2180,7 @@ main(int argc, char *argv[])
case GS_FRONTEND:
{
if(!glfwGetWindowAttrib(PSGLOBAL(window), GLFW_ICONIFIED))
if(!WindowIconified)
RsEventHandler(rsFRONTENDIDLE, nil);
#ifdef PS2_MENU

View File

@ -2273,7 +2273,7 @@ WinMain(HINSTANCE instance,
case GS_START_UP:
{
#ifdef NO_MOVIES
gGameState = GS_INIT_ONCE;
gGameState = gbNoMovies ? GS_INIT_ONCE : GS_INIT_LOGO_MPEG;
#else
gGameState = GS_INIT_LOGO_MPEG;
#endif
@ -2314,8 +2314,11 @@ WinMain(HINSTANCE instance,
case GS_INIT_INTRO_MPEG:
{
#ifndef NO_MOVIES
#ifdef NO_MOVIES
if (!gbNoMovies)
#endif
CloseClip();
#ifndef FIX_BUGS
CoUninitialize();
#endif
@ -2353,8 +2356,11 @@ WinMain(HINSTANCE instance,
case GS_INIT_ONCE:
{
#ifndef NO_MOVIES
#ifdef NO_MOVIES
if (!gbNoMovies)
#endif
CloseClip();
#ifndef FIX_BUGS
CoUninitialize();
#endif

2
vendor/librw vendored

@ -1 +1 @@
Subproject commit 65c619b3e7dcec6f5dbd05d3203b530d667ba90f
Subproject commit cc550ff69c06ec03aae9ac7ac1f634703800660f