X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=drivers%2Fgp2x%2Fgp2x.c;h=92103c0cc7c658b9051ccf8c65082fa05a268749;hp=0ff378f6c376bf03c7301771de5d587aa5898be1;hb=7b356ee3dc5d7e54d9dc06c413f84380d1044441;hpb=b547bda76671cf9c99973dd3faad97804949ced3 diff --git a/drivers/gp2x/gp2x.c b/drivers/gp2x/gp2x.c index 0ff378f..92103c0 100644 --- a/drivers/gp2x/gp2x.c +++ b/drivers/gp2x/gp2x.c @@ -15,17 +15,20 @@ #include "cpuctrl.h" #include "squidgehack.h" -int CLImain(int argc, char *argv[]); +int GP2X_PORT_REV = +#include "rev.h" +; -//#define SOUND_RATE 44100 -#define SOUND_RATE 22050 +extern uint8 PAL; + +int CLImain(int argc, char *argv[]); DSETTINGS Settings; CFGSTRUCT DriverConfig[]={ ACA(Settings.KeyBinds), ACA(Settings.JoyBinds), AC(Settings.turbo_rate_add), - AC(Settings.sound), + AC(Settings.sound_rate), AC(Settings.showfps), AC(Settings.scaling), AC(Settings.frameskip), @@ -60,7 +63,7 @@ char *DriverUsage= static int docheckie[2]={0,0}; #endif ARGPSTRUCT DriverArgs[]={ - {"-sound",0,&Settings.sound,0}, + {"-sound",0,&Settings.sound_rate,0}, {"-showfps",0,&Settings.showfps,0}, {"-mmuhack",0,&Settings.mmuhack,0}, {"-ramtimings",0,&Settings.ramtimings,0}, @@ -87,7 +90,10 @@ static void SetDefaults(void) Settings.cpuclock = 150; Settings.frameskip = -1; // auto Settings.mmuhack = 1; - Settings.sound = SOUND_RATE; + Settings.sound_rate = 22050; + Settings.turbo_rate_add = (8*2 << 24) / 60 + 1; // 8Hz turbofire + Settings.gamma = 100; + Settings.sstate_confirm = 1; // default controls, RLDU SEBA Settings.KeyBinds[ 0] = 0x010; // GP2X_UP Settings.KeyBinds[ 4] = 0x020; // GP2X_DOWN @@ -95,10 +101,13 @@ static void SetDefaults(void) Settings.KeyBinds[ 6] = 0x080; // GP2X_RIGHT Settings.KeyBinds[13] = 0x001; // GP2X_B Settings.KeyBinds[14] = 0x002; // GP2X_X - Settings.KeyBinds[15] = 0x100; // GP2X_Y - Settings.KeyBinds[12] = 0x200; // GP2X_A + Settings.KeyBinds[12] = 0x100; // GP2X_A + Settings.KeyBinds[15] = 0x200; // GP2X_Y Settings.KeyBinds[ 8] = 0x008; // GP2X_START Settings.KeyBinds[ 9] = 0x004; // GP2X_SELECT + Settings.KeyBinds[10] = 0x80000000; // GP2X_L + Settings.KeyBinds[11] = 0x40000000; // GP2X_R + Settings.KeyBinds[27] = 0xc0000000; // GP2X_PUSH } void DoDriverArgs(void) @@ -114,37 +123,6 @@ void DoDriverArgs(void) #endif } -int InitMouse(void) -{ - return(0); -} - -void KillMouse(void){} - -void GetMouseData(uint32 *d) -{ -} - -int InitKeyboard(void) -{ - return(1); -} - -int UpdateKeyboard(void) -{ - return(1); -} - -void KillKeyboard(void) -{ - -} - -char *GetKeyboard(void) -{ - return NULL; -} - char **g_argv; int mmuhack_status = 0; @@ -156,10 +134,10 @@ int main(int argc, char *argv[]) int ret; g_argv = argv; - puts("Starting GPFCE - Port version " GP2X_PORT_VERSION " (" __DATE__ ")"); - puts("Based on FCE Ultra "VERSION_STRING"..."); - puts("Ported by Zheng Zhu"); - puts("Additional optimization/misc work by notaz\n"); + printf("Starting GPFCE - Port version " GP2X_PORT_VERSION " r%i (" __DATE__ ")\n", GP2X_PORT_REV); + puts("Based on FCE Ultra "VERSION_STRING" and 0.98.1x versions"); + puts("Original port by Zheng Zhu"); + puts("Menu/optimization/misc work by notaz\n"); gp2x_init(); cpuctrl_init(); @@ -168,12 +146,13 @@ int main(int argc, char *argv[]) ret = CLImain(argc,argv); - // unscale the screen, in case this is bad. - gp2x_video_RGB_setscaling(0, 320, 240); + // unscale the screen, in case it is bad. + gp2x_video_RGB_setscaling(320, 240); if (mmuhack_status > 0) mmuunhack(); + set_gamma(100); cpuctrl_deinit(); gp2x_deinit(); @@ -198,14 +177,34 @@ void gp2x_opt_setup(void) } } -void gp2x_cpuclock_update(void) +void gp2x_opt_update(void) { - static int prev_cpuclock = 200; + static int prev_cpuclock = 200, prev_gamma = 100, prev_vsync = 0, prev_pal = 0; if (Settings.cpuclock != 0 && Settings.cpuclock != prev_cpuclock) { set_FCLK(Settings.cpuclock); prev_cpuclock = Settings.cpuclock; } + + if (Settings.gamma != 0 && Settings.gamma != prev_gamma) + { + set_gamma(Settings.gamma); + prev_gamma = Settings.gamma; + } + + if (Settings.perfect_vsync != prev_vsync || (Settings.perfect_vsync && prev_pal != PAL)) + { + if (Settings.perfect_vsync) + { + set_LCD_custom_rate(PAL ? LCDR_100_02 : LCDR_120_20); + prev_pal = PAL; + } + else + { + unset_LCD_custom_rate(); + } + prev_vsync = Settings.perfect_vsync; + } }