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);
