From c7e32cbbd2526ca4fbf070a5baf01f148fd6e958 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Tue, 17 Jan 2012 23:59:23 +0100 Subject: [PATCH 1/5] (PS3) Some more work on PS3 menu front --- general.h | 7 ++++-- ps3/pkg/ICON0.PNG | Bin 44183 -> 56445 bytes ps3/ps3_video_psgl.c | 54 +++++++++++++++++++++++++++++++++++++++++++ wii/pkg/icon.png | Bin 0 -> 9087 bytes wii/pkg/meta.xml | 10 ++++++++ 5 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 wii/pkg/icon.png create mode 100644 wii/pkg/meta.xml diff --git a/general.h b/general.h index cee025dd8b..84228c516b 100644 --- a/general.h +++ b/general.h @@ -173,9 +173,12 @@ struct settings struct console_settings { bool block_config_read; -#ifdef __CELLOS_LV2__ bool return_to_multiman_enable; -#endif + uint32_t * supported_resolutions; + uint32_t supported_resolutions_count; + uint32_t current_resolution_index; + uint32_t current_resolution_id; + uint32_t initial_resolution_id; bool screenshots_enable; }; #endif diff --git a/ps3/pkg/ICON0.PNG b/ps3/pkg/ICON0.PNG index 7daca7efee757d516398ac47307350eea1d21307..92bbb49b5c138c3a62e1f24f886680f3f33b1ad0 100644 GIT binary patch literal 56445 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

f}kVxCu*Guq+PC@3`+uwq-#+| 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 diff --git a/ps3/ps3_video_psgl.c b/ps3/ps3_video_psgl.c index 709c45867e..61f1db8aaf 100644 --- a/ps3/ps3_video_psgl.c +++ b/ps3/ps3_video_psgl.c @@ -85,6 +85,8 @@ bool g_quitting; unsigned g_frame_count; void *g_gl; +static CellVideoOutState g_video_state; + typedef struct gl { GLuint pbo; @@ -993,6 +995,56 @@ const video_driver_t video_gl = { .ident = "gl" }; +static void get_all_available_resolutions (void) +{ + bool defaultresolution; + uint32_t i, resolution_count; + uint16_t num_videomodes; + + defaultresolution = true; + + uint32_t videomode[] = { + CELL_VIDEO_OUT_RESOLUTION_480, CELL_VIDEO_OUT_RESOLUTION_576, + CELL_VIDEO_OUT_RESOLUTION_960x1080, CELL_VIDEO_OUT_RESOLUTION_720, + CELL_VIDEO_OUT_RESOLUTION_1280x1080, CELL_VIDEO_OUT_RESOLUTION_1440x1080, + CELL_VIDEO_OUT_RESOLUTION_1600x1080, CELL_VIDEO_OUT_RESOLUTION_1080}; + + num_videomodes = sizeof(videomode)/sizeof(uint32_t); + + resolution_count = 0; + for (i = 0; i < num_videomodes; i++) + if (cellVideoOutGetResolutionAvailability(CELL_VIDEO_OUT_PRIMARY, videomode[i], CELL_VIDEO_OUT_ASPECT_AUTO,0)) + resolution_count++; + + g_console.supported_resolutions = (uint32_t*)malloc(resolution_count * sizeof(uint32_t)); + + g_console.supported_resolutions_count = 0; + for (i = 0; i < num_videomodes; i++) + { + if (cellVideoOutGetResolutionAvailability(CELL_VIDEO_OUT_PRIMARY, videomode[i], CELL_VIDEO_OUT_ASPECT_AUTO,0)) + { + g_console.supported_resolutions[g_console.supported_resolutions_count++] = videomode[i]; + g_console.initial_resolution_id = videomode[i]; + + if (g_console.current_resolution_id == videomode[i]) + { + defaultresolution = false; + g_console.current_resolution_index = g_console.supported_resolutions_count-1; + } + } + } + + /* In case we didn't specify a resolution - make the last resolution*/ + /* that was added to the list (the highest resolution) the default resolution*/ + if (g_console.current_resolution_id > num_videomodes || defaultresolution) + g_console.current_resolution_index = g_console.supported_resolutions_count-1; +} + +void ps3_set_resolution (void) +{ + cellVideoOutGetState(CELL_VIDEO_OUT_PRIMARY, 0, &g_video_state); +} + // PS3 needs a working graphics stack before SSNES even starts. // To deal with this main.c, // the top level module owns the instance, and is created beforehand. @@ -1007,6 +1059,8 @@ void ps3_video_init(void) video_info.smooth = true; video_info.input_scale = 2; g_gl = gl_init(&video_info, NULL, NULL); + get_all_available_resolutions(); + ps3_set_resolution(); } void ps3_video_deinit(void) diff --git a/wii/pkg/icon.png b/wii/pkg/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8238b90e20f83b3571572c923f0285ce9a078e31 GIT binary patch literal 9087 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 literal 0 HcmV?d00001 diff --git a/wii/pkg/meta.xml b/wii/pkg/meta.xml new file mode 100644 index 0000000000..a1893a0749 --- /dev/null +++ b/wii/pkg/meta.xml @@ -0,0 +1,10 @@ + + + SSNES + Themaister + 0.9.4 + 2012 + Multi-system emulator + A port of SSNES to the Wii. + + From 5453cc0448fefc083697baaf0ac8648bd375ffc0 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Wed, 18 Jan 2012 00:18:23 +0100 Subject: [PATCH 2/5] (PS3) Added preliminary resolution switching options --- ps3/menu.c | 37 +++++++++++++++++++++++++++++++++ ps3/ps3_video_psgl.c | 49 ++++++++++++++++++++++++++++++++++++++++++++ ps3/ps3_video_psgl.h | 6 ++++++ 3 files changed, 92 insertions(+) diff --git a/ps3/menu.c b/ps3/menu.c index 3197eefadb..2e2359b0df 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -525,6 +525,12 @@ static void set_setting_label(menu * menu_obj, int currentsetting) switch(currentsetting) { case SETTING_CHANGE_RESOLUTION: + if(g_console.initial_resolution_id == g_console.supported_resolutions[g_console.current_resolution_index]) + menu_obj->items[currentsetting].text_color = GREEN; + else + menu_obj->items[currentsetting].text_color = ORANGE; + + snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), ps3_get_resolution_label(g_console.supported_resolutions[g_console.current_resolution_index])); break; case SETTING_SHADER_PRESETS: /* add a comment */ @@ -805,6 +811,37 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue) switch(switchvalue) { case SETTING_CHANGE_RESOLUTION: + if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) ) + { + ps3_next_resolution(); + set_text_message("", 7); + } + if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) ) + { + ps3_previous_resolution(); + set_text_message("", 7); + } + if(CTRL_CROSS(state)) + { + if (g_console.supported_resolutions[g_console.current_resolution_index] == CELL_VIDEO_OUT_RESOLUTION_576) + { + if(ps3_check_resolution(CELL_VIDEO_OUT_RESOLUTION_576)) + { + //ps3graphics_set_pal60hz(Settings.PS3PALTemporalMode60Hz); + //ps3graphics_switch_resolution(ps3graphics_get_current_resolution(), Settings.PS3PALTemporalMode60Hz, Settings.TripleBuffering, Settings.ScaleEnabled, Settings.ScaleFactor); + //ps3graphics_set_vsync(Settings.Throttled); + //apply_scaling(); + } + } + else + { + //ps3graphics_set_pal60hz(0); + //ps3graphics_switch_resolution(ps3graphics_get_current_resolution(), 0, Settings.TripleBuffering, Settings.ScaleEnabled, Settings.ScaleFactor); + //ps3graphics_set_vsync(Settings.Throttled); + //apply_scaling(); + //emulator_implementation_set_texture(Settings.PS3CurrentBorder); + } + } break; /* case SETTING_PAL60_MODE: diff --git a/ps3/ps3_video_psgl.c b/ps3/ps3_video_psgl.c index 61f1db8aaf..df80353472 100644 --- a/ps3/ps3_video_psgl.c +++ b/ps3/ps3_video_psgl.c @@ -1045,6 +1045,55 @@ void ps3_set_resolution (void) cellVideoOutGetState(CELL_VIDEO_OUT_PRIMARY, 0, &g_video_state); } +void ps3_next_resolution (void) +{ + if(g_console.current_resolution_index+1 < g_console.supported_resolutions_count) + { + g_console.current_resolution_index++; + g_console.current_resolution_id = g_console.supported_resolutions[g_console.current_resolution_index]; + } +} + +void ps3_previous_resolution (void) +{ + if(g_console.current_resolution_index > 0) + { + g_console.current_resolution_index--; + g_console.current_resolution_id = g_console.supported_resolutions[g_console.current_resolution_index]; + } +} + +int ps3_check_resolution(uint32_t resolution_id) +{ + return cellVideoOutGetResolutionAvailability(CELL_VIDEO_OUT_PRIMARY, resolution_id, \ + CELL_VIDEO_OUT_ASPECT_AUTO,0); +} + +const char * ps3_get_resolution_label(uint32_t resolution) +{ + switch(resolution) + { + case CELL_VIDEO_OUT_RESOLUTION_480: + return "720x480 (480p)"; + case CELL_VIDEO_OUT_RESOLUTION_576: + return "720x576 (576p)"; + case CELL_VIDEO_OUT_RESOLUTION_720: + return "1280x720 (720p)"; + case CELL_VIDEO_OUT_RESOLUTION_960x1080: + return "960x1080"; + case CELL_VIDEO_OUT_RESOLUTION_1280x1080: + return "1280x1080"; + case CELL_VIDEO_OUT_RESOLUTION_1440x1080: + return "1440x1080"; + case CELL_VIDEO_OUT_RESOLUTION_1600x1080: + return "1600x1080"; + case CELL_VIDEO_OUT_RESOLUTION_1080: + return "1920x1080 (1080p)"; + default: + return "Unknown"; + } +} + // PS3 needs a working graphics stack before SSNES even starts. // To deal with this main.c, // the top level module owns the instance, and is created beforehand. diff --git a/ps3/ps3_video_psgl.h b/ps3/ps3_video_psgl.h index 96ab01c601..855aa191d2 100644 --- a/ps3/ps3_video_psgl.h +++ b/ps3/ps3_video_psgl.h @@ -26,6 +26,12 @@ void ps3_video_init(void); void ps3_video_deinit(void); + +void ps3_next_resolution (void); +void ps3_previous_resolution (void); +const char * ps3_get_resolution_label(uint32_t resolution); +int ps3_check_resolution(uint32_t resolution_id); + extern void *g_gl; #endif From 3c99021b6033bd4ddf86c557f16812086da83630 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Wed, 18 Jan 2012 00:59:35 +0100 Subject: [PATCH 3/5] (PS3) custom image.c (for PNG/JPEG decoding) --- Makefile.ps3 | 4 +- ps3/image.c | 249 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 251 insertions(+), 2 deletions(-) create mode 100644 ps3/image.c diff --git a/Makefile.ps3 b/Makefile.ps3 index d1fdf6b415..979dbf8243 100644 --- a/Makefile.ps3 +++ b/Makefile.ps3 @@ -43,9 +43,9 @@ INCDIRS = -I. -Icommon MAKE_FSELF_NPDRM = $(CELL_SDK)/$(HOST_DIR)/bin/make_fself_npdrm MAKE_PACKAGE_NPDRM = $(CELL_SDK)/$(HOST_DIR)/bin/make_package_npdrm -OBJ = fifo_buffer.o ps3/cellframework2/fileio/file_browser.o ps3/ps3_audio.o ps3/menu.o ps3/ps3_input.o ps3/cellframework2/input/pad_input.o getopt.o ssnes.o driver.o file.o settings.o message.o rewind.o movie.o gfx/gfx_common.o ps3/ps3_video_psgl.o gfx/shader_cg.o gfx/snes_state.o ups.o bps.o strl.o screenshot.o audio/hermite.o dynamic.o ps3/main.o audio/utils.o conf/config_file.o gfx/image.o +OBJ = fifo_buffer.o ps3/cellframework2/fileio/file_browser.o ps3/ps3_audio.o ps3/menu.o ps3/ps3_input.o ps3/cellframework2/input/pad_input.o getopt.o ssnes.o driver.o file.o settings.o message.o rewind.o movie.o gfx/gfx_common.o ps3/ps3_video_psgl.o gfx/shader_cg.o gfx/snes_state.o ups.o bps.o strl.o screenshot.o audio/hermite.o dynamic.o ps3/main.o audio/utils.o conf/config_file.o ps3/image.o -LIBS = -ldbgfont -lPSGL -lPSGLcgc -lcgc -lgcm_cmd -lgcm_sys_stub -lsnes -lresc_stub -lm -lio_stub -lfs_stub -lsysutil_stub -lsysutil_game_stub -lsysutil_screenshot_stub -lsysmodule_stub -laudio_stub -lnet_stub -lpthread +LIBS = -ldbgfont -lPSGL -lPSGLcgc -lcgc -lgcm_cmd -lgcm_sys_stub -lsnes -lresc_stub -lm -lio_stub -lfs_stub -lsysutil_stub -lsysutil_game_stub -lsysutil_screenshot_stub -lpngdec_stub -ljpgdec_stub -lsysmodule_stub -laudio_stub -lnet_stub -lpthread DEFINES = -DSSNES_CONSOLE -DHAVE_OPENGL=1 -DHAVE_CG=1 -DHAVE_FBO=1 -D__CELLOS_LV2__ -DHAVE_CONFIGFILE=1 -DPACKAGE_VERSION=\"0.9.4\" -Dmain=ssnes_main diff --git a/ps3/image.c b/ps3/image.c new file mode 100644 index 0000000000..a6920c01ad --- /dev/null +++ b/ps3/image.c @@ -0,0 +1,249 @@ +#ifdef HAVE_CONFIG_H +#include "../config.h" +#endif + +#include "../gfx/image.h" + +#include +#include +#include +#include "../general.h" + +#include + +/******************************************************************************* + Image decompression - structs +********************************************************************************/ + +typedef struct CtrlMallocArg +{ + uint32_t mallocCallCounts; +} CtrlMallocArg; + +typedef struct CtrlFreeArg +{ + uint32_t freeCallCounts; +} CtrlFreeArg; + +void *img_malloc(uint32_t size, void * a) +{ + CtrlMallocArg *arg; + arg = (CtrlMallocArg *) a; + arg->mallocCallCounts++; + return malloc(size); +} + +static int img_free(void *ptr, void * a) +{ + CtrlFreeArg *arg; + arg = (CtrlFreeArg *) a; + arg->freeCallCounts++; + free(ptr); + return 0; +} + +/******************************************************************************* + Image decompression - libJPEG +********************************************************************************/ + +static bool ps3graphics_load_jpeg(const char * path, struct texture_image *out_img) +{ + CtrlMallocArg MallocArg; + CtrlFreeArg FreeArg; + CellJpgDecMainHandle mHandle = NULL; + CellJpgDecSubHandle sHandle = NULL; + CellJpgDecThreadInParam InParam; + CellJpgDecThreadOutParam OutParam; + CellJpgDecSrc src; + CellJpgDecOpnInfo opnInfo; + CellJpgDecInfo info; + CellJpgDecInParam inParam; + CellJpgDecOutParam outParam; + CellJpgDecDataOutInfo dOutInfo; + CellJpgDecDataCtrlParam dCtrlParam; + + MallocArg.mallocCallCounts = 0; + FreeArg.freeCallCounts = 0; + InParam.spuThreadEnable = CELL_JPGDEC_SPU_THREAD_ENABLE; + InParam.ppuThreadPriority = 1001; + InParam.spuThreadPriority = 250; + InParam.cbCtrlMallocFunc = img_malloc; + InParam.cbCtrlMallocArg = &MallocArg; + InParam.cbCtrlFreeFunc = img_free; + InParam.cbCtrlFreeArg = &FreeArg; + + int ret_jpeg, ret = -1; + ret_jpeg = cellJpgDecCreate(&mHandle, &InParam, &OutParam); + + if (ret_jpeg != CELL_OK) + { + goto error; + } + + memset(&src, 0, sizeof(CellJpgDecSrc)); + src.srcSelect = CELL_JPGDEC_FILE; + src.fileName = path; + src.fileOffset = 0; + src.fileSize = 0; + src.streamPtr = NULL; + src.streamSize = 0; + + src.spuThreadEnable = CELL_JPGDEC_SPU_THREAD_ENABLE; + + ret = cellJpgDecOpen(mHandle, &sHandle, &src, &opnInfo); + + if (ret != CELL_OK) + { + goto error; + } + + ret = cellJpgDecReadHeader(mHandle, sHandle, &info); + + if (ret != CELL_OK) + { + goto error; + } + + inParam.commandPtr = NULL; + inParam.method = CELL_JPGDEC_FAST; + inParam.outputMode = CELL_JPGDEC_TOP_TO_BOTTOM; + inParam.outputColorSpace = CELL_JPG_ARGB; + inParam.downScale = 1; + inParam.outputColorAlpha = 0xfe; + ret = cellJpgDecSetParameter(mHandle, sHandle, &inParam, &outParam); + + if (ret != CELL_OK) + { + sys_process_exit(0); + goto error; + } + + dCtrlParam.outputBytesPerLine = outParam.outputWidth * 4; + ret = cellJpgDecDecodeData(mHandle, sHandle, (uint8_t*)out_img->pixels, &dCtrlParam, &dOutInfo); + + if (ret != CELL_OK || dOutInfo.status != CELL_JPGDEC_DEC_STATUS_FINISH) + { + sys_process_exit(0); + goto error; + } + + out_img->width = outParam.outputWidth; + out_img->height = outParam.outputHeight; + + cellJpgDecClose(mHandle, sHandle); + cellJpgDecDestroy(mHandle); + + return true; + +error: + if (mHandle && sHandle) + cellJpgDecClose(mHandle, sHandle); + if (mHandle) + cellJpgDecDestroy(mHandle); + return false; +} + +/******************************************************************************* + Image decompression - libPNG +********************************************************************************/ + +static bool ps3graphics_load_png(const char * path, struct texture_image *out_img) +{ + CtrlMallocArg MallocArg; + CtrlFreeArg FreeArg; + CellPngDecMainHandle mHandle = NULL; + CellPngDecSubHandle sHandle = NULL; + CellPngDecThreadInParam InParam; + CellPngDecThreadOutParam OutParam; + CellPngDecSrc src; + CellPngDecOpnInfo opnInfo; + CellPngDecInfo info; + CellPngDecInParam inParam; + CellPngDecOutParam outParam; + CellPngDecDataOutInfo dOutInfo; + CellPngDecDataCtrlParam dCtrlParam; + + MallocArg.mallocCallCounts = 0; + FreeArg.freeCallCounts = 0; + InParam.spuThreadEnable = CELL_PNGDEC_SPU_THREAD_ENABLE; + InParam.ppuThreadPriority = 512; + InParam.spuThreadPriority = 200; + InParam.cbCtrlMallocFunc = img_malloc; + InParam.cbCtrlMallocArg = &MallocArg; + InParam.cbCtrlFreeFunc = img_free; + InParam.cbCtrlFreeArg = &FreeArg; + + int ret_png, ret = -1; + ret_png = cellPngDecCreate(&mHandle, &InParam, &OutParam); + + if (ret_png != CELL_OK) + goto error; + + memset(&src, 0, sizeof(CellPngDecSrc)); + src.srcSelect = CELL_PNGDEC_FILE; + src.fileName = path; + src.fileOffset = 0; + src.fileSize = 0; + src.streamPtr = 0; + src.streamSize = 0; + + src.spuThreadEnable = CELL_PNGDEC_SPU_THREAD_ENABLE; + + ret = cellPngDecOpen(mHandle, &sHandle, &src, &opnInfo); + + if (ret != CELL_OK) + goto error; + + ret = cellPngDecReadHeader(mHandle, sHandle, &info); + + if (ret != CELL_OK) + goto error; + + inParam.commandPtr = NULL; + inParam.outputMode = CELL_PNGDEC_TOP_TO_BOTTOM; + inParam.outputColorSpace = CELL_PNGDEC_ARGB; + inParam.outputBitDepth = 8; + inParam.outputPackFlag = CELL_PNGDEC_1BYTE_PER_1PIXEL; + inParam.outputAlphaSelect = CELL_PNGDEC_STREAM_ALPHA; + ret = cellPngDecSetParameter(mHandle, sHandle, &inParam, &outParam); + + if (ret != CELL_OK) + goto error; + + dCtrlParam.outputBytesPerLine = outParam.outputWidth * 4; + ret = cellPngDecDecodeData(mHandle, sHandle, (uint8_t*)out_img->pixels, &dCtrlParam, &dOutInfo); + + if (ret != CELL_OK || dOutInfo.status != CELL_PNGDEC_DEC_STATUS_FINISH) + goto error; + + out_img->width = outParam.outputWidth; + out_img->height = outParam.outputHeight; + + cellPngDecClose(mHandle, sHandle); + cellPngDecDestroy(mHandle); + + return true; + +error: + if (mHandle && sHandle) + cellPngDecClose(mHandle, sHandle); + if (mHandle) + cellPngDecDestroy(mHandle); + return false; +} + +bool texture_image_load(const char *path, struct texture_image *out_img) +{ + if(strstr(path, ".PNG") != NULL || strstr(path, ".png") != NULL) + { + if (!ps3graphics_load_png(path, out_img)) + return false; + } + else + { + if (!ps3graphics_load_jpeg(path, out_img)) + return false; + } + + return true; +} From 955c0e85c830437dd693082642588cd74a6276b9 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Wed, 18 Jan 2012 01:02:34 +0100 Subject: [PATCH 4/5] (PS3) image.c - added header --- ps3/image.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ps3/image.c b/ps3/image.c index a6920c01ad..44e5f0d2d5 100644 --- a/ps3/image.c +++ b/ps3/image.c @@ -1,3 +1,21 @@ +/* SSNES - A Super Nintendo Entertainment System (SNES) Emulator frontend for libsnes. + * Copyright (C) 2010-2012 - Hans-Kristian Arntzen + * Copyright (C) 2011-2012 - Daniel De Matteis + * + * Some code herein may be based on code found in BSNES. + * + * SSNES is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * SSNES is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with SSNES. + * If not, see . + */ + #ifdef HAVE_CONFIG_H #include "../config.h" #endif From d9a72ea0766c5b3016df781cee00156ddf4a6bd3 Mon Sep 17 00:00:00 2001 From: TwinAphex51224 Date: Fri, 20 Jan 2012 18:00:33 +0100 Subject: [PATCH 5/5] (PS3) Implemented SSNES control flow --- ps3/main.c | 58 ++++++++++++++++++++++++++++++++++++++++------------ ps3/menu.c | 4 ++++ ps3/shared.h | 12 +++++++++++ 3 files changed, 61 insertions(+), 13 deletions(-) diff --git a/ps3/main.c b/ps3/main.c index f6cce562e2..2f58b000c0 100644 --- a/ps3/main.c +++ b/ps3/main.c @@ -66,10 +66,13 @@ if(!(config_get_array(currentconfig, charstring, setting, sizeof(setting)))) \ strncpy(setting,defaultvalue, sizeof(setting)); + uint32_t g_emulator_initialized = 0; char special_action_msg[256]; /* message which should be overlaid on top of the screen*/ uint32_t special_action_msg_expired; /* time at which the message no longer needs to be overlaid onscreen*/ +uint32_t mode_switch = MODE_MENU; +bool init_ssnes = false; char contentInfoPath[MAX_PATH_LENGTH]; char usrDirPath[MAX_PATH_LENGTH]; @@ -200,7 +203,6 @@ static void callback_sysutil_exit(uint64_t status, uint64_t param, void *userdat case CELL_SYSUTIL_REQUEST_EXITGAME: menu_is_running = 0; g_quitting = true; - sys_process_exit(0); break; } } @@ -252,23 +254,53 @@ int main(int argc, char *argv[]) ps3_input_init(); menu_init(); - menu_loop(); - char arg1[] = "ssnes"; - char arg2[PATH_MAX]; - - snprintf(arg2, sizeof(arg2), g_extern.system.fullpath); - char arg3[] = "-v"; - char arg4[] = "-c"; - char arg5[MAX_PATH_LENGTH]; +begin_loop: + if(mode_switch == MODE_EMULATION) + { + while(ssnes_main_iterate()); + ssnes_main_deinit(); + } + else if(mode_switch == MODE_MENU) + { + menu_loop(); + if(init_ssnes) + { + char arg1[] = "ssnes"; + char arg2[PATH_MAX]; - snprintf(arg5, sizeof(arg5), SYS_CONFIG_FILE); - char *argv_[] = { arg1, arg2, arg3, arg4, arg5, NULL }; + snprintf(arg2, sizeof(arg2), g_extern.system.fullpath); + char arg3[] = "-v"; + char arg4[] = "-c"; + char arg5[MAX_PATH_LENGTH]; - g_emulator_initialized = 1; + snprintf(arg5, sizeof(arg5), SYS_CONFIG_FILE); + char *argv_[] = { arg1, arg2, arg3, arg4, arg5, NULL }; - return ssnes_main(sizeof(argv_) / sizeof(argv_[0]) - 1, argv_); + g_emulator_initialized = 1; + int argc = sizeof(argv_) / sizeof(argv_[0]) - 1; + int init_ret = ssnes_main_init(argc, argv_); + printf("init_ret: %d\n", init_ret); + if(init_ret) + { + mode_switch = MODE_MENU; + ssnes_main_deinit(); + } + init_ssnes = 0; + } + } +#ifdef MULTIMAN_SUPPORT + else if(mode_switch == MODE_MULTIMAN_STARTUP) + { + } +#endif + else + goto begin_shutdown; + goto begin_loop; + +begin_shutdown: ps3_input_deinit(); ps3_video_deinit(); + sys_process_exit(0); } diff --git a/ps3/menu.c b/ps3/menu.c index 2e2359b0df..91e73bd6a9 100644 --- a/ps3/menu.c +++ b/ps3/menu.c @@ -279,6 +279,7 @@ static void browser_update(filebrowser_t * b) if (g_emulator_initialized) { menu_is_running = 0; + mode_switch = MODE_EMULATION; set_text_message("", 15); } } @@ -1197,6 +1198,7 @@ static void select_setting(menu * menu_obj) if (g_emulator_initialized) { menu_is_running = 0; + mode_switch = MODE_EMULATION; set_text_message("", 15); } old_state = state; @@ -1277,6 +1279,8 @@ static void select_rom(void) menu_is_running = 0; snprintf(g_extern.system.fullpath, sizeof(g_extern.system.fullpath), "%s/%s", FILEBROWSER_GET_CURRENT_DIRECTORY_NAME(browser), FILEBROWSER_GET_CURRENT_FILENAME(browser)); + init_ssnes = 1; + mode_switch = MODE_EMULATION; old_state = state; return; diff --git a/ps3/shared.h b/ps3/shared.h index d737f5d3bb..b903f5a6fd 100644 --- a/ps3/shared.h +++ b/ps3/shared.h @@ -18,10 +18,22 @@ #define MAX_PATH_LENGTH 1024 +enum +{ + MODE_EMULATION, + MODE_MENU, +#ifdef MULTIMAN_SUPPORT + MODE_MULTIMAN_STARTUP, +#endif + MODE_EXIT +}; + extern char special_action_msg[256]; extern uint32_t g_emulator_initialized; extern uint32_t special_action_msg_expired; +extern uint32_t mode_switch; extern unsigned g_frame_count; +extern bool init_ssnes; extern bool g_quitting; extern char contentInfoPath[MAX_PATH_LENGTH];