\r
static bind_action_t emuctrl_actions[] =\r
{\r
- { "Save State ", 1<<31 },\r
- { "Load State ", 1<<30 },\r
- { "Next State Slot", 1<<29 },\r
+ { "Save State ", 1<<31 },\r
+ { "Load State ", 1<<30 },\r
+ { "Next State Slot ", 1<<29 },\r
+ { "Prev State Slot ", 1<<28 },\r
+ { "FDS Insert/Eject ", 1<<27 },\r
+ { "FDS Select Disk ", 1<<26 },\r
+ { "VSUni Insert Coin", 1<<25 },\r
};\r
\r
static void kc_sel_loop(void)\r
\r
// --------- FCEU options ----------\r
\r
+extern int ntsccol,ntschue,ntsctint;\r
+extern int srendlinev[2];\r
+extern int erendlinev[2];\r
+extern int eoptions;\r
+\r
+\r
+static void int_incdec(int *p, int inc, int min, int max)\r
+{\r
+ *p += inc;\r
+ if (*p < min) *p = min;\r
+ else if (*p > max) *p = max;\r
+}\r
+\r
static void draw_fcemenu_options(int menu_sel)\r
{\r
int tl_x = 25, tl_y = 60, y;\r
y = tl_y;\r
gp2x_fceu_copy_bg();\r
\r
- gp2x_text_out15(tl_x, y, " %s", "OFF"); // 0\r
- gp2x_text_out15(tl_x, (y+=10), "Done");\r
+ gp2x_text_out15(tl_x, y, "NTSC Color Emulation %s", ntsccol?"ON":"OFF"); // 0\r
+ gp2x_text_out15(tl_x, (y+=10), " Tint (default: 56) %i", ntsctint);\r
+ gp2x_text_out15(tl_x, (y+=10), " Hue (default: 72) %i", ntschue);\r
+ gp2x_text_out15(tl_x, (y+=10), "First visible line (NTSC) %i", srendlinev[0]);\r
+ gp2x_text_out15(tl_x, (y+=10), "Last visible line (NTSC) %i", erendlinev[0]);\r
+ gp2x_text_out15(tl_x, (y+=10), "First visible line (PAL) %i", srendlinev[1]); // 5\r
+ gp2x_text_out15(tl_x, (y+=10), "Last visible line (PAL) %i", erendlinev[1]);\r
+ gp2x_text_out15(tl_x, (y+=10), "Clip 8 left/right columns %s", (eoptions&EO_CLIPSIDES)?"ON":"OFF");\r
+ gp2x_text_out15(tl_x, (y+=10), "Disable 8 sprite limit %s", "TODO");\r
+ gp2x_text_out15(tl_x, (y+=10), "Done"); // 9\r
\r
// draw cursor\r
gp2x_text_out15(tl_x - 16, tl_y + menu_sel*10, ">");\r
\r
static void fcemenu_loop_options(void)\r
{\r
- int menu_sel = 0, menu_sel_max = 1;\r
+ int menu_sel = 0, menu_sel_max = 9, i;\r
unsigned long inp = 0;\r
\r
+ FCEUI_GetNTSCTH(&ntsctint, &ntschue);\r
+\r
for(;;)\r
{\r
draw_fcemenu_options(menu_sel);\r
if(inp & GP2X_DOWN) { menu_sel++; if (menu_sel > menu_sel_max) menu_sel = 0; }\r
if((inp& GP2X_B)||(inp&GP2X_LEFT)||(inp&GP2X_RIGHT)) { // toggleable options\r
switch (menu_sel) {\r
- case 0: break;\r
- case 1: return;\r
+ case 0: ntsccol = !ntsccol; break;\r
+ case 7: eoptions^=EO_CLIPSIDES; break;\r
+ case 9: return;\r
+ }\r
+ }\r
+ if(inp & (GP2X_X|GP2X_A)) {\r
+ for(i=0;i<2;i++)\r
+ {\r
+ if(srendlinev[i]<0 || srendlinev[i]>239) srendlinev[i]=0;\r
+ if(erendlinev[i]<srendlinev[i] || erendlinev[i]>239) erendlinev[i]=239;\r
}\r
+ FCEUI_SetNTSCTH(ntsccol, ntsctint, ntschue);\r
+ FCEUI_SetRenderedLines(srendlinev[0],erendlinev[0],srendlinev[1],erendlinev[1]);\r
+ return;\r
}\r
- if(inp & (GP2X_X|GP2X_A)) return;\r
if(inp & (GP2X_LEFT|GP2X_RIGHT)) { // multi choise\r
switch (menu_sel) {\r
- case 0:\r
- break;\r
+ case 1: int_incdec(&ntsctint, (inp & GP2X_LEFT) ? -1 : 1, 0, 128); break;\r
+ case 2: int_incdec(&ntschue, (inp & GP2X_LEFT) ? -1 : 1, 0, 128); break;\r
+ case 3: int_incdec(&srendlinev[0], (inp & GP2X_LEFT) ? -1 : 1, 0, 239); break;\r
+ case 4: int_incdec(&erendlinev[0], (inp & GP2X_LEFT) ? -1 : 1, 0, 239); break;\r
+ case 5: int_incdec(&srendlinev[1], (inp & GP2X_LEFT) ? -1 : 1, 0, 239); break;\r
+ case 6: int_incdec(&erendlinev[1], (inp & GP2X_LEFT) ? -1 : 1, 0, 239); break;\r
}\r
}\r
}\r
return rates[i];\r
}\r
\r
-static void int_incdec(int *p, int inc, int min, int max)\r
-{\r
- *p += inc;\r
- if (*p < min) *p = min;\r
- else if (*p > max) *p = max;\r
-}\r
-\r
static void config_commit(void)\r
{\r
gp2x_cpuclock_gamma_update();\r
selfname = romsel_loop(curr_path);\r
if (selfname) {\r
printf("selected file: %s\n", selfname);\r
+ while (gp2x_joystick_read(1) & GP2X_B) usleep(50*1000);\r
return 2;\r
}\r
break;\r