X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=drivers%2Fgp2x%2Fmain.c;h=e9223f2b1d817f8008cc5192c6a68c55aac93b9d;hp=4437dc6ec541b6aa415c888e8b2d7a6a4d7a9c31;hb=b2b95d2e0d1fd5e52d03c2152605b09b024c1d0e;hpb=e1591a12a775a600572ffccb2d6f8f4d6343b7dd diff --git a/drivers/gp2x/main.c b/drivers/gp2x/main.c index 4437dc6..e9223f2 100644 --- a/drivers/gp2x/main.c +++ b/drivers/gp2x/main.c @@ -37,6 +37,8 @@ #include "main.h" #include "throttle.h" +#include "menu.h" +#include "gp2x.h" #include "../common/config.h" #include "../common/args.h" @@ -49,6 +51,12 @@ #include "../../fce.h" #include "../../ines.h" +// internals +extern char lastLoadedGameName[2048]; +extern uint8 Exit; // exit emu loop flag +void CloseGame(void); + +FCEUGI *fceugi = NULL; static int ntsccol=0,ntschue=-1,ntsctint=-1; int soundvol=70; int inited=0; @@ -56,9 +64,7 @@ int swapbuttons=0; int showfps=0; int srendlinev[2]={0,0}; -//int srendlinev[2]={0,0}; int erendlinev[2]={239,239}; -//int erendlinev[2]={231,239}; int srendline,erendline; @@ -123,6 +129,7 @@ static CFGSTRUCT fceuconfig[]={ AC(eoptions), ACA(srendlinev), ACA(erendlinev), + ACA(lastLoadedGameName), ADDCFGSTRUCT(DriverConfig), ENDCFGSTRUCT }; @@ -193,7 +200,7 @@ static void CloseStuff(int signum) exit(1); } -static void DoArgs(int argc, char *argv[]) +static int DoArgs(int argc, char *argv[]) { static char *cortab[5]={"none","gamepad","zapper","powerpad","arkanoid"}; static int cortabi[5]={SI_NONE,SI_GAMEPAD, @@ -202,7 +209,7 @@ static void DoArgs(int argc, char *argv[]) static int fccortabi[5]={SIFC_NONE,SIFC_ARKANOID,SIFC_SHADOW, SIFC_4PLAYER,SIFC_FKB}; - int x; + int x, ret; static char *inputa[2]={0,0}; static char *fcexp=0; static int docheckie[4]; @@ -232,7 +239,7 @@ static void DoArgs(int argc, char *argv[]) }; memset(docheckie,0,sizeof(docheckie)); - ParseArguments(argc, argv, FCEUArgs); + ret=ParseArguments(argc, argv, FCEUArgs); if(cpalette) { if(cpalette[0]=='0') @@ -299,62 +306,97 @@ static void DoArgs(int argc, char *argv[]) } } } + return ret; } #include "usage.h" int CLImain(int argc, char *argv[]) { - FCEUGI *tmp; - int ret; - - if(argc<=1) + int last_arg_parsed; + /* TODO if(argc<=1) { ShowUsage(argv[0]); return 1; - } + }*/ if(!DriverInitialize()) { return 1; } - if(!(ret=FCEUI_Initialize())) + if(!FCEUI_Initialize()) return(1); GetBaseDirectory(BaseDirectory); FCEUI_SetBaseDirectory(BaseDirectory); + lastLoadedGameName[0] = 0; CreateDirs(); LoadConfig(); - DoArgs(argc-2,&argv[1]); + gp2x_opt_setup(); + last_arg_parsed=DoArgs(argc-1,&argv[1]); if(cpalette) LoadCPalette(); if(InitSound()) inited|=1; - if(!(tmp=FCEUI_LoadGame(argv[argc-1]))) - { - ret=0; - goto dk; - } - ParseGI(tmp); - //RefreshThrottleFPS(); - InitOtherInput(); - - // additional print for gpfce + if (argc > 1 && !last_arg_parsed) { - int MapperNo; - iNES_HEADER *head = iNESGetHead(); - MapperNo = (head->ROM_type>>4); - MapperNo|=(head->ROM_type2&0xF0); - FCEU_DispMessage("%s, Mapper: %d%s%s", PAL?"PAL":"NTSC", MapperNo, (head->ROM_type&2)?", BB":"", (head->ROM_type&4)?", T":""); + strncpy(lastLoadedGameName, argv[argc-1], sizeof(lastLoadedGameName)); + lastLoadedGameName[sizeof(lastLoadedGameName)-1] = 0; + Exit = 0; + } + else + { + lastLoadedGameName[0] = 0; + Exit = 1; } - FCEUI_Emulate(); + while (1) + { + if(!Exit) + { + if (fceugi) + CloseGame(); + fceugi=FCEUI_LoadGame(lastLoadedGameName); + if (fceugi) + { + ParseGI(fceugi); + //RefreshThrottleFPS(); + InitOtherInput(); + + // additional print for gpfce + // TODO: handlers for other formats then iNES + { + int MapperNo; + iNES_HEADER *head = iNESGetHead(); + MapperNo = (head->ROM_type>>4); + MapperNo|=(head->ROM_type2&0xF0); + FCEU_DispMessage("%s, Mapper: %d%s%s", PAL?"PAL":"NTSC", MapperNo, (head->ROM_type&2)?", BB":"", (head->ROM_type&4)?", T":""); + } + } + else + strcpy(menuErrorMsg, "failed to load ROM"); + } + if(Exit || !fceugi) + { + int ret; + ret = gp2x_menu_do(); + if (ret == 1) break; // exit emu + if (ret == 2) { // reload ROM + Exit = 0; + continue; + } + } + + gp2x_video_changemode(Settings.scaling == 3 ? 15 : 8); + gp2x_video_RGB_setscaling(0, 320, 240); + gp2x_start_sound(22050, 16, 0); + FCEUI_Emulate(); + } - dk: DriverKill(); - return(ret?0:1); + return 0; } static int DriverInitialize(void)