From 3a1d89e39b86788addd3374fbf39ea8f4cfd808a Mon Sep 17 00:00:00 2001 From: gocha Date: Sun, 16 Jan 2011 11:00:12 +0900 Subject: [PATCH 1/3] Add Lua 5.1 script engine (diff only, no additional libs/sources contained) --- win32/CDirect3D.cpp | 3 +- win32/rsrc/resource.h | 12 ++++- win32/rsrc/snes9x.rc | 21 ++++++++ win32/snes9xw.vcproj | 134 ++++++++++++++++++++++++++---------------------- win32/wsnes9x.cpp | 22 ++++++++ 5 files changed, 129 insertions(+), 63 deletions(-) diff --git a/win32/CDirect3D.cpp b/win32/CDirect3D.cpp index e60a2bc..8887850 100644 --- a/win32/CDirect3D.cpp +++ b/win32/CDirect3D.cpp @@ -259,7 +259,8 @@ bool CDirect3D::Initialize(HWND hWnd) HRESULT hr = pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, - D3DCREATE_MIXED_VERTEXPROCESSING, + D3DCREATE_MIXED_VERTEXPROCESSING + | D3DCREATE_FPU_PRESERVE, // for lua &dPresentParams, &pDevice); if(FAILED(hr)) { diff --git a/win32/rsrc/resource.h b/win32/rsrc/resource.h index d6603e0..5c239d9 100644 --- a/win32/rsrc/resource.h +++ b/win32/rsrc/resource.h @@ -20,6 +20,7 @@ #define IDB_CDDRIVE 113 #define IDB_NETDRIVE 114 #define IDB_HARDDRIVE 115 +#define IDD_LUA 116 #define IDD_NEWDISPLAY 123 #define IDD_NETPLAYPROGRESS 124 #define IDD_INPUTCONFIG 125 @@ -350,6 +351,15 @@ #define IDC_SHADER_HLSL_BROWSE 3016 #define IDC_SHADER_GROUP 3017 #define IDC_SHADER_GLSL_BROWSE 3018 +#define IDC_BUTTON_LUARUN 3019 +#define IDC_BUTTON_LUASTOP 3020 +#define IDC_LUACONSOLE 3021 +#define IDC_BUTTON_LUAEDIT 3022 +#define IDC_NOTIFY_SUBSERVIENT 3023 +#define IDC_EDIT_LUAPATH 3024 +#define IDC_BUTTON_LUABROWSE 3025 +#define IDC_NEW_LUA_SCRIPT 3026 +#define IDC_CLOSE_LUA_SCRIPTS 3027 #define ID_FILE_EXIT 40001 #define ID_WINDOW_HIDEMENUBAR 40004 #define ID_FILE_AVI_RECORDING 40005 @@ -488,7 +498,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 151 #define _APS_NEXT_COMMAND_VALUE 40173 -#define _APS_NEXT_CONTROL_VALUE 3018 +#define _APS_NEXT_CONTROL_VALUE 3028 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/win32/rsrc/snes9x.rc b/win32/rsrc/snes9x.rc index d25649f..045c5b4 100644 --- a/win32/rsrc/snes9x.rc +++ b/win32/rsrc/snes9x.rc @@ -536,6 +536,21 @@ BEGIN LTEXT "not found",IDC_MULTICART_BIOSNOTFOUND,280,50,54,8 END +IDD_LUA DIALOGEX 0, 0, 270, 150 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +CAPTION "Lua Script" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + PUSHBUTTON "Browse...",IDC_BUTTON_LUABROWSE,7,31,48,16 + PUSHBUTTON "Run",IDC_BUTTON_LUARUN,213,31,50,16 + PUSHBUTTON "Stop",IDC_BUTTON_LUASTOP,160,31,50,16 + EDITTEXT IDC_EDIT_LUAPATH,7,16,256,14,ES_AUTOHSCROLL + EDITTEXT IDC_LUACONSOLE,7,61,256,81,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL + LTEXT "Output Console",IDC_STATIC,7,51,51,8 + LTEXT "Script File",IDC_STATIC,7,7,32,8 + PUSHBUTTON "Edit",IDC_BUTTON_LUAEDIT,58,31,46,16 +END + ///////////////////////////////////////////////////////////////////////////// // @@ -839,6 +854,12 @@ BEGIN MENUITEM SEPARATOR MENUITEM "AVI Recording", ID_FILE_AVI_RECORDING MENUITEM SEPARATOR + POPUP "Lua Scripting" + BEGIN + MENUITEM "New Lua Script Window...", IDC_NEW_LUA_SCRIPT, GRAYED + MENUITEM "Close All Script Windows", IDC_CLOSE_LUA_SCRIPTS, GRAYED + END + MENUITEM SEPARATOR MENUITEM "&Reset Game", ID_FILE_RESET MENUITEM "E&xit\tAlt+F4", ID_FILE_EXIT END diff --git a/win32/snes9xw.vcproj b/win32/snes9xw.vcproj index 8d59551..3c79f91 100644 --- a/win32/snes9xw.vcproj +++ b/win32/snes9xw.vcproj @@ -1,7 +1,7 @@ + + + + @@ -4393,6 +4401,10 @@ > + + diff --git a/win32/wsnes9x.cpp b/win32/wsnes9x.cpp index cba682b..32dc4b5 100644 --- a/win32/wsnes9x.cpp +++ b/win32/wsnes9x.cpp @@ -276,6 +276,9 @@ INT_PTR CALLBACK DlgCreateMovie(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lPara INT_PTR CALLBACK DlgOpenMovie(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam); HRESULT CALLBACK EnumModesCallback( LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID lpContext); +LRESULT CALLBACK LuaScriptProc(HWND, UINT, WPARAM, LPARAM); +std::vector LuaScriptHWnds; + INT_PTR CALLBACK test(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam); #define NOTKNOWN "Unknown Company " @@ -1575,6 +1578,20 @@ LRESULT CALLBACK WinProc( RestoreSNESDisplay ();// re-enter after dialog } break; + case IDC_NEW_LUA_SCRIPT: + { + if(LuaScriptHWnds.size() < 16) + { + CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_LUA), GUI.hWnd, (DLGPROC) LuaScriptProc); + } + } + break; + case IDC_CLOSE_LUA_SCRIPTS: + { + for(int i=(int)LuaScriptHWnds.size()-1; i>=0; i--) + SendMessage(LuaScriptHWnds[i], WM_CLOSE, 0,0); + } + break; case ID_FILE_MOVIE_RECORD: { RestoreGUIDisplay (); //exit DirectX @@ -3783,6 +3800,11 @@ static void CheckMenuStates () mii.fState = (S9xMovieActive () && !Settings.StopEmulation) ? MFS_ENABLED : MFS_DISABLED; SetMenuItemInfo (GUI.hMenu, ID_FILE_MOVIE_STOP, FALSE, &mii); + mii.fState = 0; + SetMenuItemInfo (GUI.hMenu, IDC_NEW_LUA_SCRIPT, FALSE, &mii); + mii.fState = (LuaScriptHWnds.size() > 0 ? 0 : MFS_DISABLED); + SetMenuItemInfo (GUI.hMenu, IDC_CLOSE_LUA_SCRIPTS, FALSE, &mii); + mii.fState = (GUI.SoundChannelEnable & (1 << 0)) ? MFS_CHECKED : MFS_UNCHECKED; SetMenuItemInfo (GUI.hMenu, ID_CHANNELS_CHANNEL1, FALSE, &mii); mii.fState = (GUI.SoundChannelEnable & (1 << 1)) ? MFS_CHECKED : MFS_UNCHECKED; -- 1.7.3.1.msysgit.0