implemented/enabled Lua functions: savestate.create/save/load, stylus.set, gui.box/line/text/pixel/getpixel/opacity/transparency/gdscreenshot/gdoverlay
This commit is contained in:
parent
41a10c95f5
commit
50665860b3
File diff suppressed because it is too large
Load Diff
|
@ -169,7 +169,7 @@ MovieData::MovieData()
|
||||||
: version(MOVIE_VERSION)
|
: version(MOVIE_VERSION)
|
||||||
, emuVersion(DESMUME_VERSION_NUMERIC)
|
, emuVersion(DESMUME_VERSION_NUMERIC)
|
||||||
, romChecksum(0)
|
, romChecksum(0)
|
||||||
, rerecordCount(1)
|
, rerecordCount(0)
|
||||||
, binaryFlag(false)
|
, binaryFlag(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -898,7 +898,7 @@ static void savestate_WriteChunk(EMUFILE* os, int type, void (*saveproc)(EMUFILE
|
||||||
|
|
||||||
static void writechunks(EMUFILE* os);
|
static void writechunks(EMUFILE* os);
|
||||||
|
|
||||||
static bool savestate_save(EMUFILE* outstream, int compressionLevel)
|
bool savestate_save(EMUFILE* outstream, int compressionLevel)
|
||||||
{
|
{
|
||||||
#ifndef HAVE_LIBZ
|
#ifndef HAVE_LIBZ
|
||||||
compressionLevel = Z_NO_COMPRESSION;
|
compressionLevel = Z_NO_COMPRESSION;
|
||||||
|
@ -1070,7 +1070,7 @@ static void loadstate()
|
||||||
SetupMMU(nds.debugConsole);
|
SetupMMU(nds.debugConsole);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool savestate_load(EMUFILE* is)
|
bool savestate_load(EMUFILE* is)
|
||||||
{
|
{
|
||||||
SAV_silent_fail_flag = false;
|
SAV_silent_fail_flag = false;
|
||||||
char header[16];
|
char header[16];
|
||||||
|
@ -1104,7 +1104,7 @@ static bool savestate_load(EMUFILE* is)
|
||||||
return false;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
is->fread((char*)&buf[0],len);
|
is->fread((char*)&buf[0],len-32);
|
||||||
}
|
}
|
||||||
|
|
||||||
//GO!! READ THE SAVESTATE
|
//GO!! READ THE SAVESTATE
|
||||||
|
|
|
@ -66,6 +66,9 @@ bool savestate_save (const char *file_name);
|
||||||
void savestate_slot(int num);
|
void savestate_slot(int num);
|
||||||
void loadstate_slot(int num);
|
void loadstate_slot(int num);
|
||||||
|
|
||||||
|
bool savestate_load(class EMUFILE* is);
|
||||||
|
bool savestate_save(class EMUFILE* outstream, int compressionLevel);
|
||||||
|
|
||||||
void dorewind();
|
void dorewind();
|
||||||
void rewindsave();
|
void rewindsave();
|
||||||
|
|
||||||
|
|
|
@ -186,6 +186,8 @@ LPDIRECTDRAWCLIPPER lpDDClipBack=NULL;
|
||||||
#define WM_CUSTKEYDOWN (WM_USER+50)
|
#define WM_CUSTKEYDOWN (WM_USER+50)
|
||||||
#define WM_CUSTKEYUP (WM_USER+51)
|
#define WM_CUSTKEYUP (WM_USER+51)
|
||||||
|
|
||||||
|
#define WM_CUSTINVOKE (WM_USER+52)
|
||||||
|
|
||||||
|
|
||||||
inline bool IsDlgCheckboxChecked(HWND hDlg, int id)
|
inline bool IsDlgCheckboxChecked(HWND hDlg, int id)
|
||||||
{
|
{
|
||||||
|
@ -916,6 +918,7 @@ HANDLE display_invoke_done_event = INVALID_HANDLE_VALUE;
|
||||||
DWORD display_invoke_timeout = 500;
|
DWORD display_invoke_timeout = 500;
|
||||||
CRITICAL_SECTION display_invoke_handler_cs;
|
CRITICAL_SECTION display_invoke_handler_cs;
|
||||||
|
|
||||||
|
static void InvokeOnMainThread(void (*function)(DWORD), DWORD argument);
|
||||||
|
|
||||||
static void DoDisplay_DrawHud()
|
static void DoDisplay_DrawHud()
|
||||||
{
|
{
|
||||||
|
@ -957,11 +960,8 @@ static void DoDisplay(bool firstTime)
|
||||||
{
|
{
|
||||||
if(g_thread_self() == display_thread)
|
if(g_thread_self() == display_thread)
|
||||||
{
|
{
|
||||||
ResetEvent(display_invoke_ready_event);
|
InvokeOnMainThread((void(*)(DWORD))
|
||||||
display_invoke_argument = LUACALL_AFTEREMULATIONGUI;
|
CallRegisteredLuaFunctions, LUACALL_AFTEREMULATIONGUI);
|
||||||
display_invoke_function = (void(*)(DWORD))CallRegisteredLuaFunctions;
|
|
||||||
SignalObjectAndWait(display_invoke_ready_event, display_invoke_done_event, display_invoke_timeout, FALSE);
|
|
||||||
display_invoke_function = NULL;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -977,7 +977,7 @@ static void DoDisplay(bool firstTime)
|
||||||
//draw and composite the OSD (but not if we are drawing osd straight to screen)
|
//draw and composite the OSD (but not if we are drawing osd straight to screen)
|
||||||
DoDisplay_DrawHud();
|
DoDisplay_DrawHud();
|
||||||
T_AGG_RGBA target((u8*)video.finalBuffer(), video.width,video.height,video.width*4);
|
T_AGG_RGBA target((u8*)video.finalBuffer(), video.width,video.height,video.width*4);
|
||||||
target.transformImage(aggDraw.hud->image<T_AGG_PF_RGBA>(), 0,0,video.width-1,video.height-1);
|
target.transformImage(aggDraw.hud->image<T_AGG_PF_RGBA>(), 0,0,video.width,video.height);
|
||||||
aggDraw.hud->clear();
|
aggDraw.hud->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1089,6 +1089,15 @@ void CheckMessages()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void InvokeOnMainThread(void (*function)(DWORD), DWORD argument)
|
||||||
|
{
|
||||||
|
ResetEvent(display_invoke_ready_event);
|
||||||
|
display_invoke_argument = argument;
|
||||||
|
display_invoke_function = function;
|
||||||
|
PostMessage(MainWindow->getHWnd(), WM_CUSTINVOKE, 0, 0); // in case a modal dialog or menu is open
|
||||||
|
SignalObjectAndWait(display_invoke_ready_event, display_invoke_done_event, display_invoke_timeout, FALSE);
|
||||||
|
display_invoke_function = NULL;
|
||||||
|
}
|
||||||
static void _ServiceDisplayThreadInvocation()
|
static void _ServiceDisplayThreadInvocation()
|
||||||
{
|
{
|
||||||
Lock lock (display_invoke_handler_cs);
|
Lock lock (display_invoke_handler_cs);
|
||||||
|
@ -3260,6 +3269,11 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
|
||||||
EndPaint(hwnd, &ps);
|
EndPaint(hwnd, &ps);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
case WM_CUSTINVOKE:
|
||||||
|
ServiceDisplayThreadInvocations();
|
||||||
|
return 0;
|
||||||
|
|
||||||
case WM_DROPFILES:
|
case WM_DROPFILES:
|
||||||
{
|
{
|
||||||
char filename[MAX_PATH] = "";
|
char filename[MAX_PATH] = "";
|
||||||
|
|
Loading…
Reference in New Issue