X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=frontend%2Fplat_sdl.c;h=61f904da60c44b345112467527d2458a4b72b576;hp=015450d80bccff17ea5f68ac741a34ed90c1d7f4;hb=456f1b86b44a631e7c58e42ae72ce07970843944;hpb=7badc9353b9570fd1c67827cfb477cef07974ddb diff --git a/frontend/plat_sdl.c b/frontend/plat_sdl.c index 015450d8..61f904da 100644 --- a/frontend/plat_sdl.c +++ b/frontend/plat_sdl.c @@ -10,18 +10,44 @@ #include #include -#include "common/input.h" -#include "common/in_sdl.h" -#include "common/menu.h" + +#include "libpicofe/input.h" +#include "libpicofe/in_sdl.h" +#include "libpicofe/menu.h" +#include "plugin_lib.h" +#include "main.h" #include "plat.h" #include "revision.h" -// XXX -struct in_default_bind in_evdev_defbinds[] = { - { 0, 0, 0 } +static const struct in_default_bind in_sdl_defbinds[] = { + { SDLK_UP, IN_BINDTYPE_PLAYER12, DKEY_UP }, + { SDLK_DOWN, IN_BINDTYPE_PLAYER12, DKEY_DOWN }, + { SDLK_LEFT, IN_BINDTYPE_PLAYER12, DKEY_LEFT }, + { SDLK_RIGHT, IN_BINDTYPE_PLAYER12, DKEY_RIGHT }, + { SDLK_d, IN_BINDTYPE_PLAYER12, DKEY_TRIANGLE }, + { SDLK_z, IN_BINDTYPE_PLAYER12, DKEY_CROSS }, + { SDLK_x, IN_BINDTYPE_PLAYER12, DKEY_CIRCLE }, + { SDLK_s, IN_BINDTYPE_PLAYER12, DKEY_SQUARE }, + { SDLK_v, IN_BINDTYPE_PLAYER12, DKEY_START }, + { SDLK_c, IN_BINDTYPE_PLAYER12, DKEY_SELECT }, + { SDLK_w, IN_BINDTYPE_PLAYER12, DKEY_L1 }, + { SDLK_r, IN_BINDTYPE_PLAYER12, DKEY_R1 }, + { SDLK_e, IN_BINDTYPE_PLAYER12, DKEY_L2 }, + { SDLK_t, IN_BINDTYPE_PLAYER12, DKEY_R2 }, + { SDLK_ESCAPE, IN_BINDTYPE_EMU, SACTION_ENTER_MENU }, + { SDLK_F1, IN_BINDTYPE_EMU, SACTION_SAVE_STATE }, + { SDLK_F2, IN_BINDTYPE_EMU, SACTION_LOAD_STATE }, + { SDLK_F3, IN_BINDTYPE_EMU, SACTION_PREV_SSLOT }, + { SDLK_F4, IN_BINDTYPE_EMU, SACTION_NEXT_SSLOT }, + { SDLK_F5, IN_BINDTYPE_EMU, SACTION_TOGGLE_FSKIP }, + { SDLK_F6, IN_BINDTYPE_EMU, SACTION_SCREENSHOT }, + { SDLK_F7, IN_BINDTYPE_EMU, SACTION_FAST_FORWARD }, + { SDLK_F8, IN_BINDTYPE_EMU, SACTION_SWITCH_DISPMODE }, + { 0, 0, 0 } }; static SDL_Surface *screen; +static void *menubg_img; static int change_video_mode(int w, int h) { @@ -62,8 +88,13 @@ void plat_init(void) } SDL_WM_SetCaption("PCSX-ReARMed " REV, NULL); - in_sdl_init(); + menubg_img = malloc(640 * 512 * 2); + if (menubg_img == NULL) + goto fail; + + in_sdl_init(in_sdl_defbinds); in_probe(); + pl_rearmed_cbs.only_16bpp = 1; return; fail: @@ -73,10 +104,12 @@ fail: void plat_finish(void) { + free(menubg_img); + menubg_img = NULL; SDL_Quit(); } -void plat_gvideo_open(void) +void plat_gvideo_open(int is_pal) { } @@ -86,6 +119,7 @@ void *plat_gvideo_set_mode(int *w, int *h, int *bpp) return screen->pixels; } +/* XXX: missing SDL_LockSurface() */ void *plat_gvideo_flip(void) { SDL_Flip(screen); @@ -98,6 +132,10 @@ void plat_gvideo_close(void) void plat_video_menu_enter(int is_rom_loaded) { + /* surface will be lost, must adjust pl_vout_buf for menu bg */ + memcpy(menubg_img, screen->pixels, screen->w * screen->h * 2); + pl_vout_buf = menubg_img; + change_video_mode(g_menuscreen_w, g_menuscreen_h); }