From 48cf9eb80552798f22986c60d9c66c5b74e46aab Mon Sep 17 00:00:00 2001 From: StapleButter Date: Thu, 21 Sep 2017 04:08:03 +0200 Subject: [PATCH] make it a menu option while we're at it --- src/GPU.cpp | 5 +++++ src/GPU.h | 1 + src/NDS.cpp | 1 + src/libui_sdl/main.cpp | 13 +++++++++++++ 4 files changed, 20 insertions(+) diff --git a/src/GPU.cpp b/src/GPU.cpp index af8c5d8c..8ac3e742 100644 --- a/src/GPU.cpp +++ b/src/GPU.cpp @@ -151,6 +151,11 @@ void Reset() GPU2D_B->SetFramebuffer(&Framebuffer[256*0]); } +void Stop() +{ + memset(Framebuffer, 0, 256*192*2*4); +} + // VRAM mapping notes // diff --git a/src/GPU.h b/src/GPU.h index 4624495e..d45f3832 100644 --- a/src/GPU.h +++ b/src/GPU.h @@ -70,6 +70,7 @@ extern GPU2D* GPU2D_B; bool Init(); void DeInit(); void Reset(); +void Stop(); void MapVRAM_AB(u32 bank, u8 cnt); void MapVRAM_CD(u32 bank, u8 cnt); diff --git a/src/NDS.cpp b/src/NDS.cpp index 9b096b82..bee3a8de 100644 --- a/src/NDS.cpp +++ b/src/NDS.cpp @@ -347,6 +347,7 @@ void Stop() { printf("Stopping: shutdown\n"); Platform::StopEmu(); + GPU::Stop(); SPU::Stop(); } diff --git a/src/libui_sdl/main.cpp b/src/libui_sdl/main.cpp index 1068f922..c61cebe4 100644 --- a/src/libui_sdl/main.cpp +++ b/src/libui_sdl/main.cpp @@ -37,6 +37,7 @@ uiArea* MainDrawArea; uiMenuItem* MenuItem_Pause; uiMenuItem* MenuItem_Reset; +uiMenuItem* MenuItem_Stop; SDL_Thread* EmuThread; int EmuRunning; @@ -261,6 +262,7 @@ void Run() uiMenuItemEnable(MenuItem_Pause); uiMenuItemEnable(MenuItem_Reset); + uiMenuItemEnable(MenuItem_Stop); uiMenuItemSetChecked(MenuItem_Pause, 0); } @@ -271,6 +273,7 @@ void Stop() uiMenuItemDisable(MenuItem_Pause); uiMenuItemDisable(MenuItem_Reset); + uiMenuItemDisable(MenuItem_Stop); uiMenuItemSetChecked(MenuItem_Pause, 0); memset(ScreenBuffer, 256*384*4, 0); @@ -355,6 +358,13 @@ void OnReset(uiMenuItem* item, uiWindow* window, void* blarg) Run(); } +void OnStop(uiMenuItem* item, uiWindow* window, void* blarg) +{ + if (!RunningSomething) return; + + Stop(); +} + int main(int argc, char** argv) { @@ -404,6 +414,9 @@ int main(int argc, char** argv) menuitem = uiMenuAppendItem(menu, "Reset"); uiMenuItemOnClicked(menuitem, OnReset, NULL); MenuItem_Reset = menuitem; + menuitem = uiMenuAppendItem(menu, "Stop"); + uiMenuItemOnClicked(menuitem, OnStop, NULL); + MenuItem_Stop = menuitem; MainWindow = uiNewWindow("melonDS " MELONDS_VERSION, 256, 384, 1); uiWindowOnClosing(MainWindow, OnCloseWindow, NULL);