static int load_rom_gfx1(void) { int i, res; char fname[32], *parent; if ((memory_region_gfx1 = memalign(MEM_ALIGN, memory_length_gfx1)) == NULL) { error_memory("REGION_GFX1"); return 0; } memset(memory_region_gfx1, 0, memory_length_gfx1); parent = strlen(parent_name) ? parent_name : NULL; for (i = 0; i < num_gfx1rom; ) { strcpy(fname, gfx1rom[i].name); if ((res = file_open(game_name, parent, gfx1rom[i].crc, fname)) < 0) { if (res == -2) error_crc(fname); else error_file(fname); return 0; } msg_printf(TEXT(LOADING), fname); i = rom_load(gfx1rom, memory_region_gfx1, i, num_gfx1rom); file_close(); } return 1; }
int loader_init(char *romfile) { char *name, *p; sprintf(rtcfile, "%s.rtc", romfile); if (!rom_load(romfile)) return 0; //init rtc /*if (rtc)*/ { struct tm *Tm; unsigned long i; //february is always 28,.... unsigned long month_len[12]={31,28,31,30,31,30,31,31,30,31,30,31}; rtc.last=time(NULL); Tm=localtime(&rtc.last); rtc.d=(int)Tm->tm_wday; for (i=0;i<Tm->tm_mon;i++) { rtc.d+=month_len[i]; } rtc.h=(int)Tm->tm_hour; rtc.m=(int)Tm->tm_min; rtc.s=(int)Tm->tm_sec; rtc.t=(int)0; } rtc_load(); return 1; }
bool mem_load_rom(memory_t *mem, const char *filename) { memset(&(mem->meta), 0, sizeof(mem->meta)); if (mem->rom != NULL) { free(mem->rom); } mem->rom = rom_load(&(mem->meta), filename); if (mem->rom == NULL) { return false; } assert(mem->meta.cart_type < 0x02); if (memory_controllers[mem->meta.cart_type].init != NULL) { memory_controllers[mem->meta.cart_type].init(mem); mem->controller = memory_controllers[mem->meta.cart_type].handler; } else { return false; } // TODO: Check minimum number of banks? change_mappings(mem, 0, 4, mem->rom); return true; }
void loader_init(char *s) { char *name, *p; romfile = s; rom_load(); vid_settitle(rom.name); name = strdup(base(romfile)); p = (char *) strchr(name, '.'); if (p) *p = 0; sramfile = malloc(strlen(savedir) + strlen(name) + 7); sprintf(sramfile, "%s%s.sav", savedir, name); rtcfile = malloc(strlen(savedir) + strlen(name) + 7); sprintf(rtcfile, "%s%s.rtc", savedir, name); printf("Loading sramfile: %s\n", sramfile); printf("Loading rtcfile: %s\n", rtcfile); sram_load(); rtc_load(); }
bool WabbitemuApp::OnInit() { wxImage::AddHandler(new wxPNGHandler); //stolen from the windows version ParseCommandLineArgs(); memset(frames, 0, sizeof(frames)); LPCALC lpCalc = calc_slot_new(); LoadSettings(lpCalc); WabbitemuFrame *frame; int result = rom_load(lpCalc, lpCalc->rom_path); if (result == TRUE) { frame = gui_frame(lpCalc); } else { calc_slot_free(lpCalc); BOOL loadedRom = FALSE; if (parsedArgs.num_rom_files > 0) { for (int i = 0; i < parsedArgs.num_rom_files; i++) { if (rom_load(lpCalc, parsedArgs.rom_files[i])) { gui_frame(lpCalc); loadedRom = TRUE; break; } } } if (!loadedRom) { bool success = DoRomWizard(); if (!success) { return FALSE; } } } LoadCommandlineFiles((INT_PTR) lpCalc, LoadToLPCALC); timer = new wxTimer(); timer->Connect(wxEVT_TIMER, (wxObjectEventFunction) &WabbitemuApp::OnTimer); timer->Start(TPF, false); return TRUE; }
void loader_init(char *s) { char *name, *p; DIR* dir; printf("%s - %s\n",s,savedir); // sys_checkdir(savedir, 1); /* needs to be writable */ dir=opendir(savedir); if(!dir) { mkdir(savedir,0); printf("Savedir created!"); } else closedir(dir); romfile = s; printf("Loading rom...\n"); rom_load(); printf("Rom loaded!\n"); vid_settitle(rom.name); if (savename && *savename) { if (savename[0] == '-' && savename[1] == 0) name = ldup(rom.name); else name = strdup(savename); } else if (romfile && *base(romfile) && strcmp(romfile, "-")) { name = strdup(base(romfile)); p = strchr(name, '.'); if (p) *p = 0; } else name = ldup(rom.name); // name=rom.name; saveprefix = malloc(strlen(savedir) + strlen(name) + 2); sprintf(saveprefix, "%s/%s", savedir, name); sramfile = malloc(strlen(saveprefix) + 5); strcpy(sramfile, saveprefix); strcat(sramfile, ".sav"); rtcfile = malloc(strlen(saveprefix) + 5); strcpy(rtcfile, saveprefix); strcat(rtcfile, ".rtc"); printf("before sram / rtc load ..."); sram_load(); rtc_load(); printf(" done\n"); // atexit(cleanup); }
int loadrom(char *fn) { log_message("loadrom: loading rom '%s'\n",fn); unloadrom(); if(((rom = rom_load(fn)) == 0) || (nes_load(rom) != 0)) { log_message("loadrom: error loading rom '%s'\n",fn); return(1); } if(rom->diskdata) loaddiskstate(); // if(config.autostates) // loadstate(); nes_reset(1); //perform hard reset add_recent(fn); return(0); }
void loader_init(char *s) { char *name, *p; sys_checkdir(savedir, 1); /* needs to be writable */ romfile = s; rom_load(); vid_settitle(rom.name); if (savename && *savename) { if (savename[0] == '-' && savename[1] == 0) name = ldup(rom.name); else name = strdup(savename); } else if (romfile && *base(romfile) && strcmp(romfile, "-")) { name = strdup(base(romfile)); p = strchr(name, '.'); if (p) *p = 0; } else name = ldup(rom.name); saveprefix = malloc(strlen(savedir) + strlen(name) + 2); sprintf(saveprefix, "%s/%s", savedir, name); sramfile = malloc(strlen(saveprefix) + 5); strcpy(sramfile, saveprefix); strcat(sramfile, ".sav"); rtcfile = malloc(strlen(saveprefix) + 5); strcpy(rtcfile, saveprefix); strcat(rtcfile, ".rtc"); sram_load(); rtc_load(); atexit(cleanup); }
static LINK_ERR SendFile(const LPCALC lpCalc, LPCTSTR lpszFileName, SEND_FLAG Destination) { TIFILE_t *var = importvar(lpszFileName, FALSE); BOOL exec_vio_backup = break_on_exe_violation; break_on_exe_violation = false; LINK_ERR result; if (var != NULL) { switch(var->type) { case GROUP_TYPE: case VAR_TYPE: case FLASH_TYPE: { if (lpCalc->cpu.pio.link == NULL) { result = LERR_MODEL; //81 for now break; } lpCalc->cpu.pio.link->vlink_size = var->length; lpCalc->cpu.pio.link->vlink_send = 0; BOOL running_backup = lpCalc->running; // if we just started running, calc_turn_on may be running while (lpCalc->fake_running) { } lpCalc->fake_running = TRUE; result = link_send_var(&lpCalc->cpu, var, (SEND_FLAG) Destination); if (var->type == FLASH_TYPE) { if (var->flash->type == FLASH_TYPE_OS) { calc_reset(lpCalc); //calc_turn_on(lpCalc); } else { // Rebuild the app list applist_t applist; state_build_applist(&lpCalc->cpu, &applist); u_int i; for (i = 0; i < applist.count; i++) { if (_tcsncmp((TCHAR *) var->flash->name, applist.apps[i].name, 8) == 0) { lpCalc->last_transferred_app = applist.apps[i]; break; } } } } lpCalc->fake_running = FALSE; lpCalc->running = running_backup; break; } case BACKUP_TYPE: lpCalc->cpu.pio.link->vlink_size = var->length; lpCalc->cpu.pio.link->vlink_send = 0; result = link_send_backup(&lpCalc->cpu, var); break; case ZIP_TYPE: { WIN32_FIND_DATA FindFileData; HANDLE hFind; TCHAR path[MAX_PATH]; TCHAR search[MAX_PATH]; GetStorageString(path, sizeof(path)); StringCbCat(path, sizeof(path), _T("Zip\\")); StringCbCopy(search, sizeof(search), path); StringCbCat(search, sizeof(search), _T("*")); hFind = FindFirstFile(search, &FindFileData); if (hFind == INVALID_HANDLE_VALUE) { result = LERR_FILE; break; } else if (!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { TCHAR filename[MAX_PATH]; StringCbCopy(filename, sizeof(filename), path); StringCbCat(filename, sizeof(filename), FindFileData.cFileName); SendFileToCalc(NULL, lpCalc, filename, FALSE, Destination); SendFileToCalc(NULL, lpCalc, filename, FALSE, Destination); } while (FindNextFile(hFind, &FindFileData)) { if (!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { TCHAR filename[MAX_PATH]; StringCbCopy(filename, sizeof(filename), path); StringCbCat(filename, sizeof(filename), FindFileData.cFileName); SendFileToCalc(NULL, lpCalc, filename, FALSE, Destination); DeleteFile(filename); } } FindClose(hFind); DeleteFile(path); result = LERR_SUCCESS; break; } case ROM_TYPE: case SAV_TYPE: { if (rom_load(lpCalc, lpszFileName) == TRUE) { result = LERR_SUCCESS; } else { result = LERR_LINK; } FreeTiFile(var); var = NULL; break; } case LABEL_TYPE: { VoidLabels(lpCalc); labels_app_load(lpCalc, lpszFileName); result = LERR_SUCCESS; break; } case BREAKPOINT_TYPE: break; } if (var) { FreeTiFile(var); } break_on_exe_violation = exec_vio_backup; return result; } else { break_on_exe_violation = exec_vio_backup; return LERR_FILE; } }
void loader_init(char *s) { char *name, *p; #ifndef __PALM__ // sys_checkdir(savedir, 1); /* needs to be writable */ #endif sprintf(rtcfile, "%s.rtc", s); romfile = s; rom_load(); #if 0 //ndef __PALM__ vid_settitle(rom.name); if (savename && *savename) { if (savename[0] == '-' && savename[1] == 0) name = ldup(rom.name); else name = strdup(savename); } else if (romfile && *base(romfile) && strcmp(romfile, "-")) { name = strdup(base(romfile)); p = (char*)strchr(name, '.'); if (p) *p = 0; } else name = ldup(rom.name); saveprefix = ljz_malloc(strlen(savedir) + strlen(name) + 2); sprintf(saveprefix, "%s/%s", savedir, name); sramfile = ljz_malloc(strlen(saveprefix) + 5); strcpy(sramfile, saveprefix); strcat(sramfile, ".sav"); rtcfile = ljz_malloc(strlen(saveprefix) + 5); strcpy(rtcfile, saveprefix); strcat(rtcfile, ".rtc"); #endif // sram_load(); #ifndef __PALM__ //init rtc /*if (rtc)*/ { time_t ltime; struct tm *Tm; unsigned long i; //february is always 28,.... unsigned long month_len[12]={31,28,31,30,31,30,31,31,30,31,30,31}; ltime=time(NULL); Tm=localtime(<ime); rtc.d=(int)Tm->tm_wday; for (i=0;i<Tm->tm_mon;i++) { rtc.d+=month_len[i]; } rtc.h=(int)Tm->tm_hour; rtc.m=(int)Tm->tm_min; rtc.s=(int)Tm->tm_sec; rtc.t=(int)0; /* { char tmp[16]; sprintf(tmp,"%d-%d-%d-%d-%d",rtc.d,rtc.h,rtc.m,rtc.s,rtc.t); menu_inform(tmp); }*/ } rtc_load(); //atexit(cleanup); #else if (rtc.batt) { /* struct tm *localTime; time_t long_time; //Get the system time time(&long_time); localTime = localtime(&long_time); //date is an ofs from 01 Jan 1900 00:00:00 rtc.d=localTime->tm_yday; rtc.h=localTime->tm_hour; rtc.m=localTime->tm_min; rtc.s=localTime->tm_sec;*/ rtc.t=0; rtc.stop=0; rtc.carry=0; while (rtc.t >= 60) rtc.t -= 60; while (rtc.s >= 60) rtc.s -= 60; while (rtc.m >= 60) rtc.m -= 60; while (rtc.h >= 24) rtc.h -= 24; while (rtc.d >= 365) rtc.d -= 365; rtc.stop &= 1; rtc.carry &= 1; //if (rt) rt = (time(0) - rt) * 60; //if (syncrtc) while (rt-- > 0) rtc_tick(); } #endif }