diff --git a/Makefile b/Makefile index 2ff839d..7cefdbc 100644 --- a/Makefile +++ b/Makefile @@ -18,8 +18,7 @@ USE_GPULIB ?= 1 GPU = gpu_unai SPU = spu_pcsxrearmed -RECOMPILER = lightrec - +#RECOMPILER = lightrec RM = rm -f MD = mkdir -p CC = gcc @@ -27,24 +26,26 @@ CXX = g++ LD = g++ SYSROOT := $(shell $(CC) --print-sysroot) -SDL_CONFIG := sdl2-config +SDL_CONFIG := /usr/bin/sdl2-config SDL_CFLAGS := $(shell $(SDL_CONFIG) --cflags) SDL_LIBS := $(shell $(SDL_CONFIG) --libs) LDFLAGS = $(SDL_LIBS) -lpthread -lz # We want the GCW Zero handheld's keybindings (for dev testing purposes) -C_ARCH = -march=native -DGCW_ZERO +C_ARCH = -march=atom -mtune=atom -mssse3 -mfpmath=sse -fomit-frame-pointer -DGCW_ZERO -CFLAGS = $(C_ARCH) -ggdb3 -O3 -ftree-vectorize \ +CFLAGS = $(C_ARCH) -ggdb3 -O3 -ftree-vectorize -ffast-math \ -Wall -Wunused -Wpointer-arith \ -Wno-sign-compare -Wno-cast-align \ -Isrc -Isrc/spu/$(SPU) -D$(SPU) -Isrc/gpu/$(GPU) \ -Isrc/port/$(PORT) \ -Isrc/plugin_lib \ -DXA_HACK \ + -DGPU_UNAI_USE_INT_DIV_MULTINV \ -DINLINE="static __inline__" -Dasm="__asm__ __volatile__" \ - $(SDL_CFLAGS) + -flto $(SDL_CFLAGS) + # Convert plugin names to uppercase and make them CFLAG defines CFLAGS += -D$(shell echo $(GPU) | tr a-z A-Z) @@ -56,8 +57,10 @@ OBJDIRS = \ obj/plugin_lib ifdef RECOMPILER -CFLAGS += -DPSXREC -D$(RECOMPILER) -OBJDIRS += obj/recompiler/$(RECOMPILER) +#CFLAGS += -DPSXREC -D$(RECOMPILER) +#OBJDIRS += obj/recompiler/$(RECOMPILER) +CFLAGS += +OBJDIRS += endif all: maketree $(TARGET) @@ -73,8 +76,10 @@ OBJS = \ obj/sio.o obj/pad.o ifeq ($(RECOMPILER),lightrec) - LDFLAGS += -llightrec -lrt - OBJS += obj/recompiler/lightrec/lightrec.o obj/recompiler/lightrec/mem.o +# LDFLAGS += -llightrec -lrt +# OBJS += obj/recompiler/lightrec/lightrec.o obj/recompiler/lightrec/mem.o +LDFLAGS += +OBJS += endif ###################################################################### diff --git a/src/gpu/gpu_unai/gpu_unai.h b/src/gpu/gpu_unai/gpu_unai.h index e8c83ad..04da033 100644 --- a/src/gpu/gpu_unai/gpu_unai.h +++ b/src/gpu/gpu_unai/gpu_unai.h @@ -39,7 +39,7 @@ //#define GPU_UNAI_USE_FLOATMATH // Use float math in poly routines //#define GPU_UNAI_USE_FLOAT_DIV_MULTINV // If GPU_UNAI_USE_FLOATMATH is defined, // use multiply-by-inverse for division -//#define GPU_UNAI_USE_INT_DIV_MULTINV // If GPU_UNAI_USE_FLOATMATH is *not* +#define GPU_UNAI_USE_INT_DIV_MULTINV // If GPU_UNAI_USE_FLOATMATH is *not* // defined, use old inaccurate division diff --git a/src/port/sdl/frontend.cpp b/src/port/sdl/frontend.cpp index ff1a229..438bcf1 100644 --- a/src/port/sdl/frontend.cpp +++ b/src/port/sdl/frontend.cpp @@ -55,44 +55,44 @@ static unsigned int key_read(void) switch (event.type) { case SDL_KEYDOWN: switch (event.key.keysym.sym) { - case SDLK_UP: ret |= KEY_UP; break; - case SDLK_DOWN: ret |= KEY_DOWN; break; - case SDLK_LEFT: ret |= KEY_LEFT; break; - case SDLK_RIGHT: ret |= KEY_RIGHT; break; + case SDLK_e: ret |= KEY_UP; break; + case SDLK_d: ret |= KEY_DOWN; break; + case SDLK_s: ret |= KEY_LEFT; break; + case SDLK_f: ret |= KEY_RIGHT; break; - case SDLK_LCTRL: ret |= KEY_A; break; - case SDLK_LALT: ret |= KEY_B; break; - case SDLK_SPACE: ret |= KEY_X; break; - case SDLK_LSHIFT: ret |= KEY_Y; break; + case SDLK_l: ret |= KEY_A; break; + case SDLK_k: ret |= KEY_B; break; + case SDLK_i: ret |= KEY_X; break; + case SDLK_j: ret |= KEY_Y; break; - case SDLK_TAB: ret |= KEY_L; break; - case SDLK_BACKSPACE: ret |= KEY_R; break; + case SDLK_w: ret |= KEY_L; break; + case SDLK_r: ret |= KEY_R; break; - case SDLK_RETURN: ret |= KEY_START; break; - case SDLK_ESCAPE: ret |= KEY_SELECT; break; - case SDLK_m: ret |= KEY_SELECT | KEY_Y; break; + case SDLK_m: ret |= KEY_START; break; + case SDLK_n: ret |= KEY_SELECT; break; + case SDLK_b: ret |= KEY_SELECT | KEY_Y; break; default: break; } break; case SDL_KEYUP: switch(event.key.keysym.sym) { - case SDLK_UP: ret &= ~KEY_UP; break; - case SDLK_DOWN: ret &= ~KEY_DOWN; break; - case SDLK_LEFT: ret &= ~KEY_LEFT; break; - case SDLK_RIGHT: ret &= ~KEY_RIGHT; break; + case SDLK_e: ret &= ~KEY_UP; break; + case SDLK_d: ret &= ~KEY_DOWN; break; + case SDLK_s: ret &= ~KEY_LEFT; break; + case SDLK_f: ret &= ~KEY_RIGHT; break; - case SDLK_LCTRL: ret &= ~KEY_A; break; - case SDLK_LALT: ret &= ~KEY_B; break; - case SDLK_SPACE: ret &= ~KEY_X; break; - case SDLK_LSHIFT: ret &= ~KEY_Y; break; + case SDLK_l: ret &= ~KEY_A; break; + case SDLK_k: ret &= ~KEY_B; break; + case SDLK_i: ret &= ~KEY_X; break; + case SDLK_j: ret &= ~KEY_Y; break; - case SDLK_TAB: ret &= ~KEY_L; break; - case SDLK_BACKSPACE: ret &= ~KEY_R; break; + case SDLK_w: ret &= ~KEY_L; break; + case SDLK_r: ret &= ~KEY_R; break; - case SDLK_RETURN: ret &= ~KEY_START; break; - case SDLK_ESCAPE: ret &= ~KEY_SELECT; break; - case SDLK_m: ret &= ~(KEY_SELECT | KEY_Y); break; + case SDLK_m: ret &= ~KEY_START; break; + case SDLK_n: ret &= ~KEY_SELECT; break; + case SDLK_b: ret &= ~(KEY_SELECT | KEY_Y); break; default: break; } @@ -1891,3 +1891,4 @@ int GameMenu() return gui_RunMenu(&gui_GameMenu); } + diff --git a/src/port/sdl/port.cpp b/src/port/sdl/port.cpp index ad8f196..ed3e23b 100644 --- a/src/port/sdl/port.cpp +++ b/src/port/sdl/port.cpp @@ -59,10 +59,13 @@ static bool emu_running = false; char *argv0; + +/* extern bool lightrec_debug; extern bool lightrec_very_debug; extern bool use_lightrec_interpreter; -extern u32 lightrec_begin_cycles; +extern u32 lightrec_begin_cycles; */ + void config_load(); void config_save(); @@ -442,30 +445,30 @@ static struct { int key; int bit; } keymap[] = { - { SDLK_UP, DKEY_UP }, - { SDLK_DOWN, DKEY_DOWN }, - { SDLK_LEFT, DKEY_LEFT }, - { SDLK_RIGHT, DKEY_RIGHT }, + { SDLK_e, DKEY_UP }, + { SDLK_s, DKEY_DOWN }, + { SDLK_s, DKEY_LEFT }, + { SDLK_f, DKEY_RIGHT }, #ifdef GCW_ZERO - { SDLK_LSHIFT, DKEY_SQUARE }, - { SDLK_LCTRL, DKEY_CIRCLE }, - { SDLK_SPACE, DKEY_TRIANGLE }, - { SDLK_LALT, DKEY_CROSS }, - { SDLK_TAB, DKEY_L1 }, - { SDLK_BACKSPACE, DKEY_R1 }, + { SDLK_j, DKEY_SQUARE }, + { SDLK_l, DKEY_CIRCLE }, + { SDLK_i, DKEY_TRIANGLE }, + { SDLK_k, DKEY_CROSS }, + { SDLK_w, DKEY_L1 }, + { SDLK_u, DKEY_R1 }, //{ SDLK_ESCAPE, DKEY_SELECT }, #else - { SDLK_a, DKEY_SQUARE }, - { SDLK_x, DKEY_CIRCLE }, - { SDLK_s, DKEY_TRIANGLE }, - { SDLK_z, DKEY_CROSS }, - { SDLK_q, DKEY_L1 }, - { SDLK_w, DKEY_R1 }, - { SDLK_e, DKEY_L2 }, - { SDLK_r, DKEY_R2 }, - { SDLK_BACKSPACE, DKEY_SELECT }, + { SDLK_j, DKEY_SQUARE }, + { SDLK_l, DKEY_CIRCLE }, + { SDLK_i, DKEY_TRIANGLE }, + { SDLK_k, DKEY_CROSS }, + { SDLK_w, DKEY_L1 }, + { SDLK_r, DKEY_R1 }, + { SDLK_u, DKEY_L2 }, + { SDLK_o, DKEY_R2 }, + { SDLK_n, DKEY_SELECT }, #endif - { SDLK_RETURN, DKEY_START }, + { SDLK_m, DKEY_START }, { 0, 0 } }; @@ -474,6 +477,7 @@ static unsigned short pad2 = 0xffff; void pad_update(void) { + SDL_Event event; while (SDL_PollEvent(&event)) { @@ -483,100 +487,108 @@ void pad_update(void) break; case SDL_KEYDOWN: switch (event.key.keysym.sym) { - case SDLK_x: + case SDLK_F10: + emu_running = false; + SelectGame(); + break; + case SDLK_F11: + emu_running = false; + GameMenu(); + break; + case SDLK_k: pad1 &= ~(1 << DKEY_CROSS); break; - case SDLK_a: + case SDLK_i: pad1 &= ~(1 << DKEY_TRIANGLE); break; - case SDLK_s: + case SDLK_l: pad1 &= ~(1 << DKEY_CIRCLE); break; - case SDLK_z: + case SDLK_j: pad1 &= ~(1 << DKEY_SQUARE); break; - case SDLK_UP: + case SDLK_e: pad1 &= ~(1 << DKEY_UP); break; - case SDLK_DOWN: + case SDLK_d: pad1 &= ~(1 << DKEY_DOWN); break; - case SDLK_LEFT: + case SDLK_s: pad1 &= ~(1 << DKEY_LEFT); break; - case SDLK_RIGHT: + case SDLK_f: pad1 &= ~(1 << DKEY_RIGHT); break; - case SDLK_RETURN: + case SDLK_m: pad1 &= ~(1 << DKEY_START); break; - case SDLK_LALT: + case SDLK_n: pad1 &= ~(1 << DKEY_SELECT); break; - case SDLK_q: + case SDLK_w: pad1 &= ~(1 << DKEY_L1); break; - case SDLK_1: + case SDLK_r: pad1 &= ~(1 << DKEY_L2); break; - case SDLK_w: + case SDLK_u: pad1 &= ~(1 << DKEY_R1); break; - case SDLK_2: + case SDLK_o: pad1 &= ~(1 << DKEY_R2); break; } break; case SDL_KEYUP: switch (event.key.keysym.sym) { - case SDLK_x: + case SDLK_k: pad1 |= (1 << DKEY_CROSS); break; - case SDLK_a: + case SDLK_i: pad1 |= (1 << DKEY_TRIANGLE); break; - case SDLK_s: + case SDLK_l: pad1 |= (1 << DKEY_CIRCLE); break; - case SDLK_z: + case SDLK_j: pad1 |= (1 << DKEY_SQUARE); break; - case SDLK_UP: + case SDLK_e: pad1 |= (1 << DKEY_UP); break; - case SDLK_DOWN: + case SDLK_d: pad1 |= (1 << DKEY_DOWN); break; - case SDLK_LEFT: + case SDLK_s: pad1 |= (1 << DKEY_LEFT); break; - case SDLK_RIGHT: + case SDLK_f: pad1 |= (1 << DKEY_RIGHT); break; - case SDLK_RETURN: + case SDLK_m: pad1 |= (1 << DKEY_START); printf("start\n"); break; - case SDLK_LALT: + case SDLK_n: pad1 |= (1 << DKEY_SELECT); break; - case SDLK_q: + case SDLK_w: pad1 |= (1 << DKEY_L1); break; - case SDLK_1: + case SDLK_r: pad1 |= (1 << DKEY_L2); break; - case SDLK_w: + case SDLK_u: pad1 |= (1 << DKEY_R1); break; - case SDLK_2: + case SDLK_o: pad1 |= (1 << DKEY_R2); break; case SDLK_ESCAPE: event.type = SDL_QUIT; SDL_PushEvent(&event); break; - case SDLK_v: { Config.ShowFps=!Config.ShowFps; } break; + case SDLK_p: { Config.ShowFps=!Config.ShowFps; } break; default: break; } @@ -632,25 +644,6 @@ void pad_update(void) default: break; } } - - // SELECT+START for menu - /*if (keys[SDLK_ESCAPE] && keys[SDLK_RETURN] && !keys[SDLK_LALT]) { - //Sync and close any memcard files opened for writing - //TODO: Disallow entering menu until they are synced/closed - // automatically, displaying message that write is in progress. - sioSyncMcds(); - - emu_running = false; - pl_pause(); // Tell plugin_lib we're pausing emu - GameMenu(); - emu_running = true; - pad1 |= (1 << DKEY_START); - pad1 |= (1 << DKEY_CROSS); - video_clear(); - video_flip(); - video_clear(); - pl_resume(); // Tell plugin_lib we're reentering emu - }*/ } unsigned short pad_read(int num) @@ -1136,20 +1129,20 @@ int main (int argc, char **argv) #endif //!SPU_NULL if (strcmp(argv[i],"-lightrec-debug") == 0) { - lightrec_debug = true; + /* lightrec_debug = true; */ } if (strcmp(argv[i],"-lightrec-very-debug") == 0) { - lightrec_very_debug = true; +/* lightrec_very_debug = true; /* } if (strcmp(argv[i],"-lightrec-interpreter") == 0) { - use_lightrec_interpreter = true; +/* use_lightrec_interpreter = true; */ } if (strcmp(argv[i],"-lightrec-begin-cycles") == 0) { - lightrec_begin_cycles = (unsigned int) strtol( - argv[++i], NULL, 0); +/* lightrec_begin_cycles = (unsigned int) strtol( + argv[++i], NULL, 0); */ } } @@ -1163,7 +1156,7 @@ int main (int argc, char **argv) atexit(pcsx4all_exit); - //SDL_CreateWindowAndRenderer(0, 0, SDL_WINDOW_FULLSCREEN_DESKTOP, &SDLWINDOW, &SDLRENDERER); + //SDL_CreateWindowAndRenderer(0, 0, SDL_WINDOW_FULLSCREEN, &SDLWINDOW, &SDLRENDERER); SDL_CreateWindowAndRenderer(640, 480, 0, &SDLWINDOW, &SDLRENDERER); if (!SDLWINDOW) { @@ -1188,6 +1181,7 @@ int main (int argc, char **argv) SDL_RenderSetLogicalSize(SDLRENDERER, 320, 240); SDLTEXTURE = SDL_CreateTexture(SDLRENDERER, +/* SDL_PIXELFORMAT_RGB565, */ SDL_PIXELFORMAT_RGB565, SDL_TEXTUREACCESS_STREAMING, 320, 240);