From bfacc33a3be71fa6a561f4f3e1129bb051028e2f Mon Sep 17 00:00:00 2001 From: tmaul Date: Thu, 8 Apr 2021 21:50:32 +0100 Subject: [PATCH] first pass on cheat menu --- src/burner/sdl/main.cpp | 7 ++-- src/burner/sdl/sdl2_gui_ingame.cpp | 58 ++++++++++++++++++++++++------ 2 files changed, 52 insertions(+), 13 deletions(-) diff --git a/src/burner/sdl/main.cpp b/src/burner/sdl/main.cpp index fe360738a..1eb30e52d 100644 --- a/src/burner/sdl/main.cpp +++ b/src/burner/sdl/main.cpp @@ -36,7 +36,7 @@ char videofiltering[3]; #ifdef BUILD_SDL2 SDL_Window* sdlWindow = NULL; - + static char* szSDLeepromPath = NULL; static char* szSDLhiscorePath = NULL; static char* szSDLHDDPath = NULL; @@ -64,7 +64,7 @@ int parseSwitches(int argc, char* argv[]) if (strcmp(argv[i] + 1, "menu") == 0) { set_commandline_option_not_config(usemenu, 1) - + } if (strcmp(argv[i] + 1, "novsync") == 0) @@ -225,6 +225,7 @@ void generateDats() void DoGame(int gameToRun) { + if (!DrvInit(gameToRun, 0)) { MediaInit(); @@ -332,7 +333,7 @@ int main(int argc, char* argv[]) } // Do these bits before override via ConfigAppLoad - bCheatsAllowed = false; + bCheatsAllowed = 1; nAudDSPModule[0] = 0; EnableHiscores = 1; diff --git a/src/burner/sdl/sdl2_gui_ingame.cpp b/src/burner/sdl/sdl2_gui_ingame.cpp index 307f8c019..95f336530 100644 --- a/src/burner/sdl/sdl2_gui_ingame.cpp +++ b/src/burner/sdl/sdl2_gui_ingame.cpp @@ -41,11 +41,17 @@ struct MenuItem #define LOADSTATE 4 #define SCREENSHOT 5 #define RESET 6 +#define CHEATMENU 7 // menu item tracking static UINT16 current_menu = MAINMENU; static UINT16 current_selected_item = 0; +static INT32 cheatcount = 0; + +struct MenuItem cheatMenu[255]; + + int QuickSave() { QuickState(1); @@ -65,6 +71,32 @@ int MainMenuSelected() return 0; } +int CheatMenuSelected() +{ + current_selected_item = 0; + current_menu = CHEATMENU; + cheatcount = 0; + int i = 0; + CheatInfo* pCurrentCheat = pCheatInfo; + + while (pCurrentCheat) { + pCurrentCheat = pCurrentCheat->pNext; + i++; + } + int c = 0; + pCurrentCheat = pCheatInfo; + while (pCurrentCheat) + { + cheatMenu[c] = {pCurrentCheat->szCheatName, MainMenuSelected, NULL}; + pCurrentCheat = pCurrentCheat->pNext; + c++; + } + i++; + cheatMenu[i] = {"BACK \0", MainMenuSelected, NULL}; + cheatcount = i; + return 0; +} + int ControllerMenuSelected() { current_selected_item = 0; @@ -86,12 +118,13 @@ int BackToGameSelected() return 1; } -#define MAINMENU_COUNT 6 +#define MAINMENU_COUNT 7 struct MenuItem mainMenu[MAINMENU_COUNT] = { {"DIP Switches\0", DIPMenuSelected, NULL}, {"Controller Options\0", ControllerMenuSelected, NULL}, + {"Cheats\0", CheatMenuSelected, NULL}, {"Save State\0", QuickSave, NULL}, {"Load State\0", QuickLoad, NULL}, {"Save Screenshot\0", MakeScreenShot, NULL}, @@ -119,6 +152,7 @@ static UINT16 current_item_count = MAINMENU_COUNT; void ingame_gui_init() { AudSoundStop(); + cheatcount = 0; } void ingame_gui_exit() @@ -143,14 +177,18 @@ void ingame_gui_render() current_item_count = MAINMENU_COUNT; current_menu_items = mainMenu; break; - case DIPMENU: - current_item_count = DIPMENU_COUNT; - current_menu_items = dipMenu; - break; - case CONTROLLERMENU: - current_item_count = CONTROLLERMENU_COUNT; - current_menu_items = controllerMenu; - break; + case DIPMENU: + current_item_count = DIPMENU_COUNT; + current_menu_items = dipMenu; + break; + case CONTROLLERMENU: + current_item_count = CONTROLLERMENU_COUNT; + current_menu_items = controllerMenu; + break; + case CHEATMENU: + current_item_count = cheatcount; + current_menu_items = cheatMenu; + break; } for(int i=0; i < current_item_count; i ++) @@ -239,7 +277,7 @@ void ingame_gui_start(SDL_Renderer* renderer) while (!finished) { - starting_stick = SDL_GetTicks(); + starting_stick = SDL_GetTicks(); finished = ingame_gui_process(); ingame_gui_render();