int cli_frontend_init (int argc, char **argv) { machine_config drv; char buffer[128]; char *cmd_name; int game_index; int i; gamename = NULL; game_index = -1; /* clear all core options */ memset(&options,0,sizeof(options)); /* create the rc object */ rc = cli_rc_create(); if (!rc) { osd_die ("error on rc creation\n"); } /* parse the commandline */ got_gamename = 0; if (rc_parse_commandline(rc, argc, argv, 2, config_handle_arg)) { osd_die ("error while parsing cmdline\n"); } /* determine global configfile name */ cmd_name = win_strip_extension(win_basename(argv[0])); if (!cmd_name) { osd_die ("who am I? cannot determine the name I was called with\n"); } sprintf (buffer, "%s.ini", cmd_name); /* parse mame.ini/mess.ini even if called with another name */ if (mame_stricmp(cmd_name, APPNAME) != 0) { if (parse_config (APPNAME".ini", NULL)) exit(1); } /* parse cmd_name.ini */ if (parse_config (buffer, NULL)) exit(1); #ifdef MAME_DEBUG if (parse_config( "debug.ini", NULL)) exit(1); #endif /* if requested, write out cmd_name.ini (normally "mame.ini") */ if (createconfig) { rc_save(rc, buffer, 0); exit(0); } if (showconfig) { sprintf (buffer, " %s running parameters", cmd_name); rc_write(rc, stdout, buffer); exit(0); } if (showusage) { fprintf(stdout, "Usage: %s [" GAMENOUN "] [options]\n" "Options:\n", cmd_name); /* actual help message */ rc_print_help(rc, stdout); exit(0); } /* no longer needed */ free(cmd_name); /* handle playback */ if (playbackname != NULL) { options.playback = mame_fopen(playbackname,0,FILETYPE_INPUTLOG,0); if (!options.playback) { osd_die("failed to open %s for playback\n", playbackname); } } /* check for game name embedded in .inp header */ if (options.playback) { inp_header inp_header; /* read playback header */ mame_fread(options.playback, &inp_header, sizeof(inp_header)); if (!isalnum(inp_header.name[0])) /* If first byte is not alpha-numeric */ mame_fseek(options.playback, 0, SEEK_SET); /* old .inp file - no header */ else { for (i = 0; (drivers[i] != 0); i++) /* find game and play it */ { if (strcmp(drivers[i]->name, inp_header.name) == 0) { game_index = i; gamename = (char *)drivers[i]->name; printf("Playing back previously recorded " GAMENOUN " %s (%s) [press return]\n", drivers[game_index]->name,drivers[game_index]->description); getchar(); break; } } } } /* check for frontend options, horrible 1234 hack */ if (frontend_help(gamename) != 1234) exit(0); gamename = win_basename(gamename); gamename = win_strip_extension(gamename); /* if not given by .inp file yet */ if (game_index == -1) { /* do we have a driver for this? */ for (i = 0; drivers[i]; i++) if (mame_stricmp(gamename,drivers[i]->name) == 0) { game_index = i; break; } } #ifdef MAME_DEBUG if (game_index == -1) { /* pick a random game */ if (strcmp(gamename,"random") == 0) { i = 0; while (drivers[i]) i++; /* count available drivers */ srand(time(0)); /* call rand() once to get away from the seed */ rand(); game_index = rand() % i; fprintf(stderr, "running %s (%s) [press return]",drivers[game_index]->name,drivers[game_index]->description); getchar(); } } #endif /* we give up. print a few approximate matches */ if (game_index == -1) { fprintf(stderr, "\n\"%s\" approximately matches the following\n" "supported " GAMESNOUN " (best match first):\n\n", gamename); show_approx_matches(); exit(1); } /* ok, got a gamename */ /* if this is a vector game, parse vector.ini first */ expand_machine_driver(drivers[game_index]->drv, &drv); if (drv.video_attributes & VIDEO_TYPE_VECTOR) if (parse_config ("vector.ini", NULL)) exit(1); /* nice hack: load source_file.ini (omit if referenced later any) */ { const game_driver *tmp_gd; const char *start; /* remove the path and the .c suffix from the source file name */ start = strrchr(drivers[game_index]->source_file, '/'); if (!start) start = strrchr(drivers[game_index]->source_file, '\\'); if (!start) start = drivers[game_index]->source_file - 1; sprintf(buffer, "%s", start + 1); buffer[strlen(buffer) - 2] = 0; tmp_gd = drivers[game_index]; while (tmp_gd != NULL) { if (strcmp(tmp_gd->name, buffer) == 0) break; tmp_gd = tmp_gd->clone_of; } if (tmp_gd == NULL) /* not referenced later, so load it here */ { strcat(buffer, ".ini"); if (parse_config (buffer, NULL)) exit(1); } } /* now load gamename.ini */ /* this possibly checks for clonename.ini recursively! */ if (parse_config (NULL, drivers[game_index])) exit(1); /* handle record option */ if (recordname) { options.record = mame_fopen(recordname,0,FILETYPE_INPUTLOG,1); if (!options.record) { osd_die("failed to open %s for recording\n", recordname); } } if (options.record) { inp_header inp_header; memset(&inp_header, '\0', sizeof(inp_header)); strcpy(inp_header.name, drivers[game_index]->name); /* MAME32 stores the MAME version numbers at bytes 9 - 11 * MAME DOS keeps this information in a string, the * Windows code defines them in the Makefile. */ /* inp_header.version[0] = 0; inp_header.version[1] = VERSION; inp_header.version[2] = BETA_VERSION; */ mame_fwrite(options.record, &inp_header, sizeof(inp_header)); } if (statename) options.savegame = statename; #if defined(MAME_DEBUG) && defined(NEW_DEBUGGER) if (debugscript) debug_source_script(debugscript); #endif /* need a decent default for debug width/height */ if (options.debug_width == 0) options.debug_width = 640; if (options.debug_height == 0) options.debug_height = 480; options.debug_depth = 8; /* no sound is indicated by a 0 samplerate */ if (!enable_sound) options.samplerate = 0; /* set the artwork options */ options.use_artwork = ARTWORK_USE_ALL; if (use_backdrops == 0) options.use_artwork &= ~ARTWORK_USE_BACKDROPS; if (use_overlays == 0) options.use_artwork &= ~ARTWORK_USE_OVERLAYS; if (use_bezels == 0) options.use_artwork &= ~ARTWORK_USE_BEZELS; if (!use_artwork) options.use_artwork = ARTWORK_USE_NONE; { /* first start with the game's built in orientation */ int orientation = drivers[game_index]->flags & ORIENTATION_MASK; options.ui_orientation = orientation; if (options.ui_orientation & ORIENTATION_SWAP_XY) { /* if only one of the components is inverted, switch them */ if ((options.ui_orientation & ROT180) == ORIENTATION_FLIP_X || (options.ui_orientation & ROT180) == ORIENTATION_FLIP_Y) options.ui_orientation ^= ROT180; } /* override if no rotation requested */ if (video_norotate) orientation = options.ui_orientation = ROT0; /* rotate right */ if (video_ror) { /* if only one of the components is inverted, switch them */ if ((orientation & ROT180) == ORIENTATION_FLIP_X || (orientation & ROT180) == ORIENTATION_FLIP_Y) orientation ^= ROT180; orientation ^= ROT90; } /* rotate left */ if (video_rol) { /* if only one of the components is inverted, switch them */ if ((orientation & ROT180) == ORIENTATION_FLIP_X || (orientation & ROT180) == ORIENTATION_FLIP_Y) orientation ^= ROT180; orientation ^= ROT270; } /* auto-rotate right (e.g. for rotating lcds), based on original orientation */ if (video_autoror && (drivers[game_index]->flags & ORIENTATION_SWAP_XY) ) { /* if only one of the components is inverted, switch them */ if ((orientation & ROT180) == ORIENTATION_FLIP_X || (orientation & ROT180) == ORIENTATION_FLIP_Y) orientation ^= ROT180; orientation ^= ROT90; } /* auto-rotate left (e.g. for rotating lcds), based on original orientation */ if (video_autorol && (drivers[game_index]->flags & ORIENTATION_SWAP_XY) ) { /* if only one of the components is inverted, switch them */ if ((orientation & ROT180) == ORIENTATION_FLIP_X || (orientation & ROT180) == ORIENTATION_FLIP_Y) orientation ^= ROT180; orientation ^= ROT270; } /* flip X/Y */ if (video_flipx) orientation ^= ORIENTATION_FLIP_X; if (video_flipy) orientation ^= ORIENTATION_FLIP_Y; blit_flipx = ((orientation & ORIENTATION_FLIP_X) != 0); blit_flipy = ((orientation & ORIENTATION_FLIP_Y) != 0); blit_swapxy = ((orientation & ORIENTATION_SWAP_XY) != 0); if( options.vector_width == 0 && options.vector_height == 0 ) { options.vector_width = 640; options.vector_height = 480; } if( blit_swapxy ) { int temp; temp = options.vector_width; options.vector_width = options.vector_height; options.vector_height = temp; } } return game_index; }
int main (int argc, char **argv) { int res, i, j = 0, game_index; char *playbackname = NULL; int use_cyclone=0; int use_drz80=0; int use_drz80_snd=0; extern int video_scale; extern int video_border; extern int video_aspect; extern int throttle; extern int wiz_ram_tweaks; extern int wiz_rotated_video; memset(&options,0,sizeof(options)); /* these two are not available in mame.cfg */ errorlog = 0; game_index = -1; for (i = 1;i < argc;i++) /* V.V_121997 */ { if (strcasecmp(argv[i],"-log") == 0) errorlog = fopen("error.log","wa"); if (strcasecmp(argv[i],"-cyclone") == 0) use_cyclone=1; if (strcasecmp(argv[i],"-drz80") == 0) use_drz80=1; if (strcasecmp(argv[i],"-drz80_snd") == 0) use_drz80_snd=1; if (strcasecmp(argv[i],"-scale") == 0) video_scale=1; if (strcasecmp(argv[i],"-border") == 0) video_border=1; if (strcasecmp(argv[i],"-aspect") == 0) video_aspect=1; if (strcasecmp(argv[i],"-nothrottle") == 0) throttle=0; if (strcasecmp(argv[i],"-ramtweaks") == 0) wiz_ram_tweaks=1; if ((strcasecmp(argv[i],"-clock") == 0) && (i<argc-1)) wiz_clock=atoi(argv[i+1]); if (strcasecmp(argv[i],"-wiz_rotated_video") == 0) wiz_rotated_video=1; if (strcasecmp(argv[i],"-playback") == 0) { i++; if (i < argc) /* point to inp file name */ playbackname = argv[i]; } } /* WIZ Initialization */ wiz_init(8,22050,16,0); /* check for frontend options */ res = frontend_help (argc, argv); /* if frontend options were used, return to DOS with the error code */ if (res != 1234) { wiz_deinit(); execl("mame.gpe", "mame.gpe", "cache", NULL); exit (res); } /* handle playback which is not available in mame.cfg */ init_inpdir(); /* Init input directory for opening .inp for playback */ if (playbackname != NULL) options.playback = osd_fopen(playbackname,0,OSD_FILETYPE_INPUTLOG,0); /* check for game name embedded in .inp header */ if (options.playback) { INP_HEADER inp_header; /* read playback header */ osd_fread(options.playback, &inp_header, sizeof(INP_HEADER)); if (!isalnum(inp_header.name[0])) /* If first byte is not alpha-numeric */ osd_fseek(options.playback, 0, SEEK_SET); /* old .inp file - no header */ else { for (i = 0; (drivers[i] != 0); i++) /* find game and play it */ { if (strcmp(drivers[i]->name, inp_header.name) == 0) { game_index = i; printf("Playing back previously recorded game %s (%s) [press return]\n", drivers[game_index]->name,drivers[game_index]->description); getchar(); break; } } } } /* If not playing back a new .inp file */ if (game_index == -1) { /* take the first commandline argument without "-" as the game name */ for (j = 1; j < argc; j++) { if (argv[j][0] != '-') break; } { for (i = 0; drivers[i] && (game_index == -1); i++) { if (strcasecmp(argv[j],drivers[i]->name) == 0) { game_index = i; break; } } /* educated guess on what the user wants to play */ if (game_index == -1) { int fuzz = 9999; /* best fuzz factor so far */ for (i = 0; (drivers[i] != 0); i++) { int tmp; tmp = fuzzycmp(argv[j], drivers[i]->description); /* continue if the fuzz index is worse */ if (tmp > fuzz) continue; /* on equal fuzz index, we prefer working, original games */ if (tmp == fuzz) { /* game is a clone */ if (drivers[i]->clone_of != 0 && !(drivers[i]->clone_of->flags & NOT_A_DRIVER)) { /* if the game we already found works, why bother. */ /* and broken clones aren't very helpful either */ if ((!drivers[game_index]->flags & GAME_NOT_WORKING) || (drivers[i]->flags & GAME_NOT_WORKING)) continue; } else continue; } /* we found a better match */ game_index = i; fuzz = tmp; } if (game_index != -1) printf("fuzzy name compare, running %s\n",drivers[game_index]->name); } } if (game_index == -1) { printf("Game \"%s\" not supported\n", argv[j]); return 1; } } /* parse generic (os-independent) options */ parse_cmdline (argc, argv, game_index); { /* Mish: I need sample rate initialised _before_ rom loading for optional rom regions */ extern int soundcard; if (soundcard == 0) { /* silence, this would be -1 if unknown in which case all roms are loaded */ Machine->sample_rate = 0; /* update the Machine structure to show that sound is disabled */ options.samplerate=0; } } /* handle record which is not available in mame.cfg */ for (i = 1; i < argc; i++) { if (strcasecmp(argv[i],"-record") == 0) { i++; if (i < argc) options.record = osd_fopen(argv[i],0,OSD_FILETYPE_INPUTLOG,1); } } if (options.record) { INP_HEADER inp_header; memset(&inp_header, '\0', sizeof(INP_HEADER)); strcpy(inp_header.name, drivers[game_index]->name); /* MAME32 stores the MAME version numbers at bytes 9 - 11 * MAME DOS keeps this information in a string, the * Windows code defines them in the Makefile. */ /* inp_header.version[0] = 0; inp_header.version[1] = VERSION; inp_header.version[2] = BETA_VERSION; */ osd_fwrite(options.record, &inp_header, sizeof(INP_HEADER)); } /* Replace M68000 by CYCLONE */ if (use_cyclone) { for (i=0;i<MAX_CPU;i++) { int *type=(int*)&(drivers[game_index]->drv->cpu[i].cpu_type); #ifdef NEOMAME if (((*type)&0xff)==CPU_M68000) #else if (((*type)&0xff)==CPU_M68000 || ((*type)&0xff)==CPU_M68010 ) #endif { *type=((*type)&(~0xff))|CPU_CYCLONE; } } } /* Replace Z80 by DRZ80 */ if (use_drz80) { for (i=0;i<MAX_CPU;i++) { int *type=(int*)&(drivers[game_index]->drv->cpu[i].cpu_type); if (((*type)&0xff)==CPU_Z80) { *type=((*type)&(~0xff))|CPU_DRZ80; } } } /* Replace Z80 with DRZ80 only for sound CPUs */ if (use_drz80_snd) { for (i=0;i<MAX_CPU;i++) { int *type=(int*)&(drivers[game_index]->drv->cpu[i].cpu_type); if ((((*type)&0xff)==CPU_Z80) && ((*type)&CPU_AUDIO_CPU)) { *type=((*type)&(~0xff))|CPU_DRZ80; } } } /* for (i=0;i<MAX_CPU;i++) { int *type=(int*)&(drivers[game_index]->drv->cpu[i].cpu_type); if (((*type)&0xff)==CPU_V30) { *type=((*type)&(~0xff))|CPU_ARMV30; } } for (i=0;i<MAX_CPU;i++) { int *type=(int*)&(drivers[game_index]->drv->cpu[i].cpu_type); if (((*type)&0xff)==CPU_V33) { *type=((*type)&(~0xff))|CPU_ARMV33; } } */ // Remove the mouse usage for certain games if ( (strcasecmp(drivers[game_index]->name,"hbarrel")==0) || (strcasecmp(drivers[game_index]->name,"hbarrelw")==0) || (strcasecmp(drivers[game_index]->name,"midres")==0) || (strcasecmp(drivers[game_index]->name,"midresu")==0) || (strcasecmp(drivers[game_index]->name,"midresj")==0) || (strcasecmp(drivers[game_index]->name,"tnk3")==0) || (strcasecmp(drivers[game_index]->name,"tnk3j")==0) || (strcasecmp(drivers[game_index]->name,"ikari")==0) || (strcasecmp(drivers[game_index]->name,"ikarijp")==0) || (strcasecmp(drivers[game_index]->name,"ikarijpb")==0) || (strcasecmp(drivers[game_index]->name,"victroad")==0) || (strcasecmp(drivers[game_index]->name,"dogosoke")==0) || (strcasecmp(drivers[game_index]->name,"gwar")==0) || (strcasecmp(drivers[game_index]->name,"gwarj")==0) || (strcasecmp(drivers[game_index]->name,"gwara")==0) || (strcasecmp(drivers[game_index]->name,"gwarb")==0) || (strcasecmp(drivers[game_index]->name,"bermudat")==0) || (strcasecmp(drivers[game_index]->name,"bermudaj")==0) || (strcasecmp(drivers[game_index]->name,"bermudaa")==0) || (strcasecmp(drivers[game_index]->name,"mplanets")==0) || (strcasecmp(drivers[game_index]->name,"forgottn")==0) || (strcasecmp(drivers[game_index]->name,"lostwrld")==0) || (strcasecmp(drivers[game_index]->name,"gondo")==0) || (strcasecmp(drivers[game_index]->name,"makyosen")==0) || (strcasecmp(drivers[game_index]->name,"topgunr")==0) || (strcasecmp(drivers[game_index]->name,"topgunbl")==0) || (strcasecmp(drivers[game_index]->name,"tron")==0) || (strcasecmp(drivers[game_index]->name,"tron2")==0) || (strcasecmp(drivers[game_index]->name,"kroozr")==0) ||(strcasecmp(drivers[game_index]->name,"crater")==0) || (strcasecmp(drivers[game_index]->name,"dotron")==0) || (strcasecmp(drivers[game_index]->name,"dotrone")==0) || (strcasecmp(drivers[game_index]->name,"zwackery")==0) || (strcasecmp(drivers[game_index]->name,"ikari3")==0) || (strcasecmp(drivers[game_index]->name,"searchar")==0) || (strcasecmp(drivers[game_index]->name,"sercharu")==0) || (strcasecmp(drivers[game_index]->name,"timesold")==0) || (strcasecmp(drivers[game_index]->name,"timesol1")==0) || (strcasecmp(drivers[game_index]->name,"btlfield")==0) || (strcasecmp(drivers[game_index]->name,"aztarac")==0)) { extern int use_mouse; use_mouse=0; } /* go for it */ printf ("%s (%s)...\n",drivers[game_index]->description,drivers[game_index]->name); res = run_game (game_index); /* close open files */ if (errorlog) fclose (errorlog); if (options.playback) osd_fclose (options.playback); if (options.record) osd_fclose (options.record); if (options.language_file) osd_fclose (options.language_file); if (res!=0) { /* wait a key press */ wiz_video_flip_single(); wiz_joystick_press(0); } wiz_deinit(); #ifndef PROFILE_GENERATE execl("mame.gpe", "mame.gpe", "cache", NULL); #endif exit (res); }
int main (int argc, char **argv) { int res, i, j = 0, game_index; char *playbackname = NULL; char gamenameselection[32]; int use_cyclone=1; int use_drz80_save=0; int use_drz80_snd_save=1; int use_drz80; int use_drz80_snd; extern int video_scale; extern int video_border; extern int video_aspect; extern int throttle; extern int soundcard; int use_gui=0; int first_run=1; kiosk_mode=0; { char *abspath = (char*)malloc(PATH_MAX); if (!abspath) { logerror("Out of memory\n"); } realpath(argv[0], abspath); char *dirsep = strrchr(abspath, '/'); if( dirsep != 0 ) *dirsep = 0; chdir(abspath); free(abspath); } memset(&options,0,sizeof(options)); /* these two are not available in mame.cfg */ errorlog = 0; game_index = -1; soundcard=-1; for (i = 1;i < argc;i++) /* V.V_121997 */ { if (strcasecmp(argv[i],"-log") == 0) errorlog = fopen("error.log","wa"); if (strcasecmp(argv[i],"-nocyclone") == 0) use_cyclone=0; if (strcasecmp(argv[i],"-drz80") == 0) use_drz80_save=1; if (strcasecmp(argv[i],"-nodrz80_snd") == 0) use_drz80_snd_save=0; if (strcasecmp(argv[i],"-scale") == 0) video_scale=1; if (strcasecmp(argv[i],"-border") == 0) video_border=1; if (strcasecmp(argv[i],"-aspect") == 0) video_aspect=1; if (strcasecmp(argv[i],"-nothrottle") == 0) throttle=0; if (strcasecmp(argv[i],"-nosound") == 0) soundcard=0; if (strcasecmp(argv[i],"-playback") == 0) { i++; if (i < argc) /* point to inp file name */ playbackname = argv[i]; } } if (argc == 1) use_gui=1; /* check for frontend options */ if(!use_gui) { res = frontend_help (argc, argv); /* if frontend options were used, return to DOS with the error code */ if (res != 1234) { exit (res); } } for (j = 1; j < argc; j++) { if (argv[j][0] != '-') { strcpy(gamenameselection, argv[j]); break; } } if(init_SDL()==0) { exit(1); }; gui_loop: if(use_gui) { usleep(1000000/2); gp2x_joystick_clear(); //Normally read in the game start but we need some vars //setting for the frontend. parse_cmdline (argc, argv, 1); frontend_gui(gamenameselection, first_run); first_run=0; usleep(1000000/2); //Clear input queue gp2x_joystick_clear(); } /* handle playback which is not available in mame.cfg */ init_inpdir(); /* Init input directory for opening .inp for playback */ if (playbackname != NULL) options.playback = osd_fopen(playbackname,0,OSD_FILETYPE_INPUTLOG,0); /* check for game name embedded in .inp header */ if (options.playback) { INP_HEADER inp_header; /* read playback header */ osd_fread(options.playback, &inp_header, sizeof(INP_HEADER)); if (!isalnum(inp_header.name[0])) /* If first byte is not alpha-numeric */ osd_fseek(options.playback, 0, SEEK_SET); /* old .inp file - no header */ else { for (i = 0; (drivers[i] != 0); i++) /* find game and play it */ { if (strcmp(drivers[i]->name, inp_header.name) == 0) { game_index = i; printf("Playing back previously recorded game %s (%s) [press return]\n", drivers[game_index]->name,drivers[game_index]->description); getchar(); break; } } } } /* If not playing back a new .inp file */ if (game_index == -1) { /* do we have a driver for this? */ { for (i = 0; drivers[i] && (game_index == -1); i++) { if (strcasecmp(gamenameselection,drivers[i]->name) == 0) { game_index = i; break; } } } if (game_index == -1) { printf("Game \"%s\" not supported\n", argv[j]); return 1; } } /* parse generic (os-independent) options */ parse_cmdline (argc, argv, game_index); { /* Mish: I need sample rate initialised _before_ rom loading for optional rom regions */ extern int soundcard; if (soundcard == 0) { /* silence, this would be -1 if unknown in which case all roms are loaded */ Machine->sample_rate = 0; /* update the Machine structure to show that sound is disabled */ options.samplerate=0; } } /* handle record which is not available in mame.cfg */ for (i = 1; i < argc; i++) { if (strcasecmp(argv[i],"-record") == 0) { i++; if (i < argc) options.record = osd_fopen(argv[i],0,OSD_FILETYPE_INPUTLOG,1); } } if (options.record) { INP_HEADER inp_header; memset(&inp_header, '\0', sizeof(INP_HEADER)); strcpy(inp_header.name, drivers[game_index]->name); /* MAME32 stores the MAME version numbers at bytes 9 - 11 * MAME DOS keeps this information in a string, the * Windows code defines them in the Makefile. */ /* inp_header.version[0] = 0; inp_header.version[1] = VERSION; inp_header.version[2] = BETA_VERSION; */ osd_fwrite(options.record, &inp_header, sizeof(INP_HEADER)); } /* Replace M68000 by CYCLONE */ if (use_cyclone) { for (i=0;i<MAX_CPU;i++) { int *type=(int*)&(drivers[game_index]->drv->cpu[i].cpu_type); if (((*type)&0xff)==CPU_M68000 || ((*type)&0xff)==CPU_M68010 ) { *type=((*type)&(~0xff))|CPU_CYCLONE; } } } use_drz80_snd = use_drz80_snd_save; use_drz80 = use_drz80_save; // Do not use the DrZ80 core for games that are listed as not compatible // in the frontend list for (i=0;i<NUMGAMES;i++) { if (strcmp(drivers[game_index]->name,fe_drivers[i].name)==0) { /* ASM cores: 0=None,1=Cyclone,2=DrZ80,3=Cyclone+DrZ80,4=DrZ80(snd),5=Cyclone+DrZ80(snd) */ if(fe_drivers[i].cores == 0 || fe_drivers[i].cores == 1) { use_drz80_snd=0; use_drz80=0; break; } } } #if (HAS_DRZ80) /* Replace Z80 by DRZ80 */ if (use_drz80) { for (i=0;i<MAX_CPU;i++) { int *type=(int*)&(drivers[game_index]->drv->cpu[i].cpu_type); if (((*type)&0xff)==CPU_Z80) { *type=((*type)&(~0xff))|CPU_DRZ80; } } } /* Replace Z80 with DRZ80 only for sound CPUs */ if (use_drz80_snd) { for (i=0;i<MAX_CPU;i++) { int *type=(int*)&(drivers[game_index]->drv->cpu[i].cpu_type); if ((((*type)&0xff)==CPU_Z80) && ((*type)&CPU_AUDIO_CPU)) { *type=((*type)&(~0xff))|CPU_DRZ80; } } } #endif /* for (i=0;i<MAX_CPU;i++) { int *type=(int*)&(drivers[game_index]->drv->cpu[i].cpu_type); if (((*type)&0xff)==CPU_V30) { *type=((*type)&(~0xff))|CPU_ARMV30; } } for (i=0;i<MAX_CPU;i++) { int *type=(int*)&(drivers[game_index]->drv->cpu[i].cpu_type); if (((*type)&0xff)==CPU_V33) { *type=((*type)&(~0xff))|CPU_ARMV33; } } */ // Remove the mouse usage for certain games if ( (strcasecmp(drivers[game_index]->name,"hbarrel")==0) || (strcasecmp(drivers[game_index]->name,"hbarrelw")==0) || (strcasecmp(drivers[game_index]->name,"midres")==0) || (strcasecmp(drivers[game_index]->name,"midresu")==0) || (strcasecmp(drivers[game_index]->name,"midresj")==0) || (strcasecmp(drivers[game_index]->name,"tnk3")==0) || (strcasecmp(drivers[game_index]->name,"tnk3j")==0) || (strcasecmp(drivers[game_index]->name,"ikari")==0) || (strcasecmp(drivers[game_index]->name,"ikarijp")==0) || (strcasecmp(drivers[game_index]->name,"ikarijpb")==0) || (strcasecmp(drivers[game_index]->name,"victroad")==0) || (strcasecmp(drivers[game_index]->name,"dogosoke")==0) || (strcasecmp(drivers[game_index]->name,"gwar")==0) || (strcasecmp(drivers[game_index]->name,"gwarj")==0) || (strcasecmp(drivers[game_index]->name,"gwara")==0) || (strcasecmp(drivers[game_index]->name,"gwarb")==0) || (strcasecmp(drivers[game_index]->name,"bermudat")==0) || (strcasecmp(drivers[game_index]->name,"bermudaj")==0) || (strcasecmp(drivers[game_index]->name,"bermudaa")==0) || (strcasecmp(drivers[game_index]->name,"mplanets")==0) || (strcasecmp(drivers[game_index]->name,"forgottn")==0) || (strcasecmp(drivers[game_index]->name,"lostwrld")==0) || (strcasecmp(drivers[game_index]->name,"gondo")==0) || (strcasecmp(drivers[game_index]->name,"makyosen")==0) || (strcasecmp(drivers[game_index]->name,"topgunr")==0) || (strcasecmp(drivers[game_index]->name,"topgunbl")==0) || (strcasecmp(drivers[game_index]->name,"tron")==0) || (strcasecmp(drivers[game_index]->name,"tron2")==0) || (strcasecmp(drivers[game_index]->name,"kroozr")==0) ||(strcasecmp(drivers[game_index]->name,"crater")==0) || (strcasecmp(drivers[game_index]->name,"dotron")==0) || (strcasecmp(drivers[game_index]->name,"dotrone")==0) || (strcasecmp(drivers[game_index]->name,"zwackery")==0) || (strcasecmp(drivers[game_index]->name,"ikari3")==0) || (strcasecmp(drivers[game_index]->name,"searchar")==0) || (strcasecmp(drivers[game_index]->name,"sercharu")==0) || (strcasecmp(drivers[game_index]->name,"timesold")==0) || (strcasecmp(drivers[game_index]->name,"timesol1")==0) || (strcasecmp(drivers[game_index]->name,"btlfield")==0) || (strcasecmp(drivers[game_index]->name,"aztarac")==0)) { extern int use_mouse; use_mouse=0; } /* go for it */ printf ("%s (%s)...\n",drivers[game_index]->description,drivers[game_index]->name); res = run_game (game_index); /* close open files */ if (errorlog) fclose (errorlog); if (options.playback) osd_fclose (options.playback); if (options.record) osd_fclose (options.record); if (options.language_file) osd_fclose (options.language_file); gp2x_deinit(); game_index = -1; if(use_gui) goto gui_loop; deinit_SDL(); exit (res); }