void real_main (int argc, char **argv) { FILE *hf; #ifdef USE_SDL SDL_Init (SDL_INIT_EVERYTHING | SDL_INIT_NOPARACHUTE); #endif default_prefs (&currprefs); #ifdef SYSTEM_CFGDIR scan_configs (SYSTEM_CFGDIR); #endif /* Can be overriden in graphics_setup, although there's not much of a point. Fullscreen modes are filled in by graphics_setup. */ gfx_windowed_modes = default_windowed_modes; n_windowed_modes = sizeof default_windowed_modes / sizeof *default_windowed_modes; if (! graphics_setup ()) { exit (1); } rtarea_init (); hardfile_install (); scsidev_install (); parse_cmdline_and_init_file (argc, argv); machdep_init (); init_gtod (); if (! setup_sound ()) { write_log ("Sound driver unavailable: Sound output disabled\n"); currprefs.produce_sound = 0; } inputdevice_init (); changed_prefs = currprefs; no_gui = ! currprefs.start_gui; if (! no_gui) { int err = gui_init (1); currprefs = changed_prefs; if (err == -1) { write_log ("Failed to initialize the GUI\n"); } else if (err == -2) { exit (0); } } if (sound_available && currprefs.produce_sound > 1 && ! init_audio ()) { write_log ("Sound driver unavailable: Sound output disabled\n"); currprefs.produce_sound = 0; } fixup_prefs (&currprefs); changed_prefs = currprefs; #ifdef SYSTEM_ROMDIR scan_roms (SYSTEM_ROMDIR, ROMLOC_SYSTEM); #endif scan_roms (currprefs.path_rom, ROMLOC_USER); /* Install resident module to get 8MB chipmem, if requested */ rtarea_setup (); keybuf_init (); /* Must come after init_joystick */ expansion_init (); memory_init (); filesys_install (); bsdlib_install (); emulib_install (); uaeexe_install (); native2amiga_install (); custom_init (); /* Must come after memory_init */ serial_init (); DISK_init (); reset_frame_rate_hack (); init_m68k(); /* must come after reset_frame_rate_hack (); */ gui_update (); if (graphics_init ()) { reset_drawing (); setup_brkhandler (); if (currprefs.start_debugger && debuggable ()) activate_debugger (); start_program (); } leave_program (); }
int main (int argc, char **argv) { #ifdef GEKKO printf("\x1b[2;0H"); //initialize libfat library if (fatInitDefault()) printf("FAT subsytem initialized\n\n"); else { printf("Couldn't initialize FAT subsytem\n\n"); sleep(3); exit(0); } DIR *dp; dp = opendir ("sd:/"); if (dp) sdismount = 1; else sdismount = 0; if (sdismount) printf("SD FAT subsytem initialized\n\n"); else printf("Couldn't initialize SD fat subsytem\n\n"); if (sdismount) closedir (dp); usbismount = InitUSB(); default_prefs (&currprefs, 0); cfgfile_load (&currprefs, SMBFILENAME, 0); printf("\n"); if (currprefs.smb_enable) networkisinit = InitNetwork(); if (networkisinit && currprefs.smb_enable) ConnectShare(); sleep(2); if (!(log_quiet = !currprefs.write_logfile)) set_logfile("/uae/uae.log"); #endif write_log("main started\n"); init_sdl (); write_log("sdl inited\n"); gui_init (argc, argv); write_log("Starting real main\n"); real_main (argc, argv); #ifdef GEKKO if (smbismount) CloseShare (); DeInitUSB(); fatUnmount(0); #endif return 0; }
static void scan_configs (const char *path) { DIR *dir; int pathlen = strlen (path); int bufsz = pathlen + 256; char *buffer; uae_u8 *data; predef_configs_space = 20; predef_configs = malloc (sizeof (struct config_list) * 20); n_predef_configs = 0; dir = opendir (path); if (!dir) return; buffer = malloc (bufsz); if (!buffer) goto out; data = malloc (1024 * 1024); if (!data) goto out1; strcpy (buffer, path); buffer[pathlen++] = '/'; buffer[pathlen] = '\0'; for (;;) { struct uae_prefs p; struct zfile *f; struct dirent *ent = readdir (dir); int len; struct romdata *rd; long size; if (!ent) break; len = strlen (ent->d_name); if (len + pathlen + 1 >= bufsz) { bufsz = len + pathlen + 200; buffer = realloc (buffer, bufsz); if (!buffer) { free (data); goto out; } } strcpy (buffer + pathlen, ent->d_name); if (n_predef_configs >= predef_configs_space) { predef_configs_space += 20; predef_configs = realloc (predef_configs, sizeof (struct config_list) * predef_configs_space); } default_prefs (&p); strcpy (p.description, ""); strcpy (p.sortstr, ""); cfgfile_load (&p, buffer); if (strlen (p.description) > 0) { predef_configs[n_predef_configs].filename = strdup (buffer); predef_configs[n_predef_configs].description = strdup (p.description); predef_configs[n_predef_configs++].sortstr = strdup (p.sortstr); } } qsort (predef_configs, n_predef_configs, sizeof *predef_configs, sortfn); free (data); out1: free (buffer); out: closedir (dir); }
static int real_main2 (int argc, TCHAR **argv) { #ifdef USE_SDL SDL_Init (SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK | SDL_INIT_NOPARACHUTE); #endif set_config_changed (); if (restart_config[0]) { default_prefs (&currprefs, 0); fixup_prefs (&currprefs); } if (! graphics_setup ()) { exit (1); } #ifdef NATMEM_OFFSET #ifdef FSUAE preinit_shm (); #else //preinit_shm (); #endif #endif if (restart_config[0]) parse_cmdline_and_init_file (argc, argv); else currprefs = changed_prefs; if (!machdep_init ()) { restart_program = 0; return -1; } if (console_emulation) { consolehook_config (&currprefs); fixup_prefs (&currprefs); } if (! setup_sound ()) { write_log (_T("Sound driver unavailable: Sound output disabled\n")); currprefs.produce_sound = 0; } inputdevice_init (); changed_prefs = currprefs; no_gui = ! currprefs.start_gui; if (restart_program == 2) no_gui = 1; else if (restart_program == 3) no_gui = 0; restart_program = 0; if (! no_gui) { int err = gui_init (); currprefs = changed_prefs; set_config_changed (); if (err == -1) { write_log (_T("Failed to initialize the GUI\n")); return -1; } else if (err == -2) { return 1; } } memset (&gui_data, 0, sizeof gui_data); gui_data.cd = -1; gui_data.hd = -1; gui_data.md = (currprefs.cs_cd32nvram || currprefs.cs_cdtvram) ? 0 : -1; logging_init (); /* Yes, we call this twice - the first case handles when the user has loaded a config using the cmd-line. This case handles loads through the GUI. */ #ifdef NATMEM_OFFSET init_shm (); #endif #ifdef WITH_LUA uae_lua_init (); #endif #ifdef PICASSO96 picasso_reset (); #endif #if 0 #ifdef JIT if (!(currprefs.cpu_model >= 68020 && currprefs.address_space_24 == 0 && currprefs.cachesize)) canbang = 0; #endif #endif fixup_prefs (&currprefs); #ifdef RETROPLATFORM rp_fixup_options (&currprefs); #endif changed_prefs = currprefs; target_run (); /* force sound settings change */ currprefs.produce_sound = 0; savestate_init (); keybuf_init (); /* Must come after init_joystick */ memory_hardreset (2); memory_reset (); #ifdef AUTOCONFIG native2amiga_install (); #endif custom_init (); /* Must come after memory_init */ #ifdef SERIAL_PORT serial_init (); #endif DISK_init (); #ifdef WITH_PPC uae_ppc_reset(true); #endif reset_frame_rate_hack (); init_m68k (); /* must come after reset_frame_rate_hack (); */ gui_update (); if (graphics_init (true)) { setup_brkhandler (); if (currprefs.start_debugger && debuggable ()) activate_debugger (); if (!init_audio ()) { if (sound_available && currprefs.produce_sound > 1) { write_log (_T("Sound driver unavailable: Sound output disabled\n")); } currprefs.produce_sound = 0; } start_program (); } return 0; }