diff --git a/360/main.c b/360/main.c index 3f4426a93a..1eac150535 100644 --- a/360/main.c +++ b/360/main.c @@ -209,6 +209,7 @@ int main(int argc, char *argv[]) begin_loop: if(g_console.mode_switch == MODE_EMULATION) { + input_xdk360.poll(NULL); while(ssnes_main_iterate()); } else if(g_console.mode_switch == MODE_MENU) @@ -220,12 +221,9 @@ begin_loop: if(g_emulator_initialized) ssnes_main_deinit(); - struct ssnes_main_wrap args; - args.verbose = g_extern.verbose; - args.sram_path = NULL; - args.state_path = NULL; - args.config_path = NULL; + struct ssnes_main_wrap args = {0}; + args.verbose = g_extern.verbose; args.rom_path = g_console.rom_path; int init_ret = ssnes_main_init_wrap(&args); diff --git a/360/menu.cpp b/360/menu.cpp index 72bd0b5ecf..077facce11 100644 --- a/360/menu.cpp +++ b/360/menu.cpp @@ -124,6 +124,7 @@ HRESULT CSSNESFileBrowser::OnNotifyPress( HXUIOBJ hObjPressed, BOOL& bHandled ) { memset(strbuffer, 0, sizeof(strbuffer)); wcstombs(strbuffer, (const wchar_t *)m_romlist.GetText(index), sizeof(strbuffer)); + memset(g_console.rom_path, 0, sizeof(g_console.rom_path)); sprintf(g_console.rom_path, "%s%s", g_console.default_rom_startup_dir, strbuffer); g_console.menu_enable = false; g_console.mode_switch = MODE_EMULATION; diff --git a/360/xdk360_input.cpp b/360/xdk360_input.cpp index 67af2ae8d5..d60dd8ff1c 100644 --- a/360/xdk360_input.cpp +++ b/360/xdk360_input.cpp @@ -20,7 +20,9 @@ #include #include #include "../driver.h" +#include "../general.h" #include "../libsnes.hpp" +#include "shared.h" static XINPUT_STATE state[4]; @@ -109,7 +111,17 @@ static void* xdk360_input_init(void) static bool xdk360_key_pressed(void *data, int key) { (void)data; - (void)key; + + switch(key) + { + case SSNES_QUIT_KEY: + g_console.menu_enable = ((state[0].Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB) + && (state[0].Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB)); + g_console.mode_switch = g_console.menu_enable ? MODE_MENU : MODE_EMULATION; + return g_console.menu_enable; + default: + return false; + } return false; }