// Function throws an Exception void runtimeThrow(const char* file, int line, const char* function, long error) { ASSERT(NULL != file, "runtimeThrow"); ASSERT(0 < line, "runtimeThrow"); ASSERT(NULL != function, "runtimeThrow"); ASSERT(0 != error, "runtimeThrow"); while (runtimeLast && runtimeLast->autorelease) runtimeCleanup(runtimeLast); if (!runtimeLast) { char buffer[128]; StrPrintF(buffer, "%s: Unhandled " "exception %08lX " "(%s:%i)", function, error, file, line); ErrAlertCustom(0, buffer, "", ""); SysReset(); } runtimeLast->file = file; runtimeLast->line = line; runtimeLast->error = error; runtimeLast->function = function; ErrLongJump(runtimeLast->jumpbuf, 1); };
// 5秒任务处理短信和联动 void SmsMsgHandle(void) { static BYTE ret; if (NewMsgRec()) { DebugMsg(); //Clear_Sms_buf(); //接收短信 ret = ReceiveSMS(); if (ret == TRUE) { if (SmsContent[0] != 0) { DealSmsContent(); } } else if (ret == TIMEOUT) { // 模块异常,对模块进行复位 Del_all_SMS(); DebugMsg(); SetLastError(ERR_GSMFAIL); SysReset(); //NetModulState = InitState; } } }
// returns true if the new state was loaded, or false if nothing happened. void States_Load( const string& file ) { try { _loadStateOrExcept( file ); HostGui::Notice( fmt_string(_("*PCSX2*: Loaded State %hs"), &file) ); } catch( Exception::StateLoadError_Recoverable& ex) { Console::Notice( "Could not load savestate file: %hs.\n\n%s", params &file, ex.cMessage() ); // At this point the cpu hasn't been reset, so we can return // control to the user safely... (that's why we use a console notice instead of a popup) return; } catch( Exception::BaseException& ex ) { // The emulation state is ruined. Might as well give them a popup and start the gui. string message( fmt_string( "Encountered an error while loading savestate from file: %hs.\n", &file ) ); if( g_EmulationInProgress ) message += "Since the savestate load was incomplete, the emulator must reset.\n"; message += "\nError: " + ex.Message(); Msgbox::Alert( message.c_str() ); SysReset(); return; } HostGui::BeginExecution(); }
int GprsDail(void) { static int cnt_dailerr = 0;//拨号失败次数 int rtn; GprsDevDailState = GSTAT_DIAL_OFF; rtn = GprsDialOn(); if(rtn == SUCCEED) { srand(UTimeReadCurrent()); cnt_dailerr = 0; PrintLog(LOGTYPE_DEBUG,"\033[1;32;40mGprs dail successed.\033[0m\n"); GprsDevDailState = GSTAT_DIAL_ON; } else{ cnt_dailerr++; if(cnt_dailerr > 100){ PrintLog(LOGTYPE_DEBUG,"GPRS dail fail times(%d)..,reboot\n", cnt_dailerr); SysReset(); } PrintLog(LOGTYPE_DEBUG,"Gprs dail failed.\n"); } return rtn; }
void task_run(void *arg) { SysTick_init(); mutex_init(); if(__init_GlobalLock()!=0) SysReset(); __GlobalLock(); platpara_init(); printf("\r\nstart runing...\r\n"); printf("platform make at:\033[1;31;40m%s \033[0m\r\n",MKTIME); printf("Sysetm \033[1;32;40m%s\033[0m start at:%s\r\n",SYSTEM_NAME,UTimeFormat(UTimeReadCurrent())); RunAppTask(); while(1) { rtc_update(1); if(UTimeReadCurrent()%300 == 0) printf("\r\nTime:%s\r\n",UTimeFormat(UTimeReadCurrent())); watchdog_feed(); #ifdef BIG_CONCENT shining_led(); #endif SysCheckTaskState(); sleep(50); } }
//1小时任务 void Task_1h(void) { static BYTE h=0; //检测网络情况 if (!Check_Net(0)) { SetLastError(ERR_GSMFAIL); SysReset(); } //静态IP时,一个小时注销一下网络,防止网络无法工作 if (SysParam[SP_DEVIPMODE] == IPMODE_FIXED) { Close_TcpIpLink(); } /* //检测电表 if (SysParam[SP_ENABLESOCKET] == 0) { ret = GetCurrentPower(); if (!ret) { SetLastError(ERR_EMFAIL); SysReset(); } } */ //24小时校时一次系统时间 h ++; if (h >= 24) { h = 0; if (Get_Modul_Time()) { SetSysTime(); } else { SetLastError(ERR_RTCFAIL); } } }
// Shutdown or reboot the PC bool wxShutdown(wxShutdownFlags wFlags) { switch (wFlags) { case wxSHUTDOWN_POWEROFF: // TODO: turn off lamps #ifdef __WXPALMOS6__ //extern void SysReset (void); //extern UInt32 SysTaskID (void); #define SysReset() #define SysTaskID() (0) SysSleep (); #else //SysSleep (false, false);// undocument API SysDoze (true); #endif break; case wxSHUTDOWN_REBOOT: SysReset (); break; } return false; }
void SetUserInfo() { static BYTE i,j; if (SmsLength-3 < 65) { j = 0; while(SmsContent[j+3] != ';') { j++; if (j > SmsLength-3) { goto Fail2; // 没有发现";"者返回错误 } } for (j=SP_NETUSERNAME;j<SP_NETUSERNAME+32;j++) { SysParam[j] = 0; } for (j=SP_NETPASSWORD;j<SP_NETPASSWORD+32;j++) { SysParam[j] = 0; } j = 0; while(SmsContent[j+3] != ';') { SysParam[j+SP_NETUSERNAME] = SmsContent[j+3]; j++; if (j > SmsLength-3) { goto Fail2; } } j++; i = 0; for (;j<SmsLength-3;j++) { SysParam[i+SP_NETPASSWORD] = SmsContent[j+3]; i++; } SaveSysParam(); if ((SmsLength + 6) > SMSMSGCOUNT) { SmsLength -= 6; } mcpy(&SmsContent[SmsLength],"(Ok)\r\n",6); SmsLength += 6; //Send_Pdu_SMS(); //Send_Txt_SMS(SmsNumber, SmsContent); if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } SysReset(); } Fail2: { if ((SmsLength + 8) > SMSMSGCOUNT) { SmsLength -= 8; } mcpy(&SmsContent[SmsLength],"(Fail)\r\n",8); SmsLength += 8; //Send_Pdu_SMS(); //Send_Txt_SMS(SmsNumber, SmsContent); if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } } }
//F9:设置服务器IP地址和端口 void SetServerAddr(void) { static BYTE i,loc; i = 0; while(i<SmsLength) { if (SmsContent[i] == ',') { break; } i++; } mset(IpAddrStr,0,16); mset(PortStr,0,6); mcpy(IpAddrStr,&SmsContent[3],i-3); // Ip Address if (!CheckValidIpAddr()) { goto Fail; } if (!StrToIpAdd((BYTE*)&SysParam[SP_SERVERIP])) { goto Fail; } loc = i; i++; while(i<SmsLength) { if (SmsContent[i] == ',') { break; } i++; } mcpy(PortStr,&SmsContent[loc+1],i-loc-1); // Server Port if (!CheckValidPort()) { goto Fail; } if (!StrToPort((BYTE*)&SysParam[SP_SERVERPORT])) { goto Fail; } loc = i; mcpy(PortStr,&SmsContent[loc+1],SmsLength-loc-1); // Local Port if (!CheckValidPort()) { goto Fail; } if (!StrToPort((BYTE*)&SysParam[SP_LOCALPORT])) { goto Fail; } SaveSysParam(); mcpy(&SmsContent[SmsLength],"(Ok)\r\n",6); SmsLength += 6; if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } SysReset(); Fail: mcpy(&SmsContent[SmsLength],"(Fail)\r\n",8); SmsLength += 8; if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } }
//F7: 系统配置-- 系统复位,启动/关闭HTTP, 恢复默认参数,SOCKET使能[可选],IP地址模式 // CDMA暂时不支持HTTP方式 void SysConfig(void) // F7:0[,0,0,0,0] { static BYTE NeedReboot; // 至少一个参数 // check Param if (SmsLength < 4) { goto Error; } if ((SmsContent[3] != '0') && (SmsContent[3] != '1')) { goto Error; } if (SmsLength >= 6) { if ((SmsContent[5] != '0') && (SmsContent[5] != '1')) { goto Error; } } if (SmsLength >= 8) { if ((SmsContent[7] != '0') && (SmsContent[7] != '1')) { goto Error; } } if (SmsLength >= 10) { if ((SmsContent[9] != '0') && (SmsContent[9] != '1')) { goto Error; } } if (SmsLength >= 12) { if ((SmsContent[11] != '1') && (SmsContent[11] != '2') && (SmsContent[11] != '3')) { goto Error; } } NeedReboot = 0; //恢复默认参数 if (SmsLength >= 8) { if (SmsContent[7] == '1') { setParamToDefault(); NeedReboot = 1; } } //HTTP mode -- 该参数变了要重启 if (SmsLength >= 6) { if (SysParam[SP_ENABLEHTTP] != (SmsContent[5] - 0x30)) { NeedReboot = 1; } if (SmsContent[5] == '0') { SysParam[SP_ENABLEHTTP] = 0; } else if (SmsContent[5] == '1') { SysParam[SP_ENABLEHTTP] = 1; } } //是否启动南京高兴模式 Socket Mode -- 该参数变了要重启 if (SmsLength >= 10) { if (SysParam[SP_ENABLESOCKET] != (SmsContent[9] - 0x30)) { NeedReboot = 1; } if (SmsContent[9] == '1') { SysParam[SP_ENABLESOCKET] = 1; } else if (SmsContent[9] == '0') { SysParam[SP_ENABLESOCKET] = 0; } } //IP地址模式 -- 该参数变了要重启 if (SmsLength >= 12) { if (SysParam[SP_DEVIPMODE] != (SmsContent[11] - 0x30)) { NeedReboot = 1; } if (SmsContent[11] == '1') { SysParam[SP_DEVIPMODE] = IPMODE_FIXED; } else if (SmsContent[11] == '2') { SysParam[SP_DEVIPMODE] = IPMODE_DHCP; } else if (SmsContent[11] == '3') { SysParam[SP_DEVIPMODE] = IPMODE_PPPOE; } } SaveSysParam(); if (SmsContent[3] == '1') { NeedReboot = 1; } mcpy(&SmsContent[SmsLength],"(Ok)\r\n",6); SmsLength += 6; if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } Sleep(2000); //WDog(); Sleep(3000); //WDog(); //系统复位 if (NeedReboot == 1) { printf("Sys Resetting...\r\n"); SysReset(); } return; Error: Clear_Sms_Content(); mcpy(&SmsContent[0],"F7:Param Error. e.g. F7:0,0,0\r\n",31); SmsLength = 31; if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } }
// F6 设置串口参数: 波特率,校验(只支持8位数据位和1位停止位,无需设置) // 150,300,600,1200,2400,4800,9600,19200,38400,57600, 115200 // E(偶校验),O(奇校验) // 如9600E(波特率9600,偶校验); 1200(波特率1200,无校验) void SetUartParam(void) { static BYTE ChkBit,BaudRt,BaudLen; static BYTE NeedReboot; if (SmsContent[SmsLength-1] != '0') { if (SmsContent[SmsLength-1] == 'E') { ChkBit = CHECK_EVEN; } else if (SmsContent[SmsLength-1] == 'O') { ChkBit = CHECK_ODD; } else { ChkBit = 0xFF; } BaudLen = SmsLength - 4; } else { ChkBit = CHECK_NONE; BaudLen = SmsLength - 3; } if (BaudLen == 3) { if (mcmp(&SmsContent[3], "150", BaudLen)) { BaudRt = BAUDRATE_150; } else if (mcmp(&SmsContent[3], "300", BaudLen)) { BaudRt = BAUDRATE_300; } else if (mcmp(&SmsContent[3], "600", BaudLen)) { BaudRt = BAUDRATE_600; } else { BaudRt = 0xFF; } } else if (BaudLen == 4) { if (mcmp(&SmsContent[3], "1200", BaudLen)) { BaudRt = BAUDRATE_1200; } else if (mcmp(&SmsContent[3], "2400", BaudLen)) { BaudRt = BAUDRATE_2400; } else if (mcmp(&SmsContent[3], "4800", BaudLen)) { BaudRt = BAUDRATE_4800; } else if (mcmp(&SmsContent[3], "9600", BaudLen)) { BaudRt = BAUDRATE_9600; } else { BaudRt = 0xFF; } } else if (BaudLen == 5) { if (mcmp(&SmsContent[3], "19200", BaudLen)) { BaudRt = BAUDRATE_19200; } else if (mcmp(&SmsContent[3], "38400", BaudLen)) { BaudRt = BAUDRATE_38400; } else if (mcmp(&SmsContent[3], "57600", BaudLen)) { BaudRt = BAUDRATE_57600; } else { BaudRt = 0xFF; } } else if (BaudLen == 6) { if (mcmp(&SmsContent[3], "115200", BaudLen)) { BaudRt = BAUDRATE_115200; } else { BaudRt = 0xFF; } } else { BaudRt = 0xFF; } if ((BaudRt != 0xFF) && (ChkBit != 0xFF)) { SysParam[SP_CHECKBIT] = ChkBit; SysParam[SP_BAUDRATE] = BaudRt; SaveSysParam(); mcpy(&SmsContent[SmsLength],"(Ok)\r\n",6); SmsLength += 6; NeedReboot = 1; } else { mcpy(&SmsContent[SmsLength],"(Fail)\r\n",8); SmsLength += 8; NeedReboot = 0; } if (SysParam[SP_MODTYPE] == GSM_MG323) { Send_Pdu_SMS(); } else if (SysParam[SP_MODTYPE] == CDMA_MC323) { Send_Txt_SMS(SmsNumber, SmsContent); } Sleep(2000); //WDog(); Sleep(3000); //WDog(); if (NeedReboot) { SysReset(); } }
/*************************************************************************** * Function: cryptSwitch * Description: handles changing the system password based upon the * password change screen. Basically checks that current password is correct, * checks that the new password was entered correctly, then re-encrypts the * databases based upon the new password. * ************************************************************************/ static void cryptSwitch (int v) { // total number of records to re-write UInt16 totalAItems = DmNumRecordsInCategory (AccountDB, dmAllCategories); UInt16 totalSItems = DmNumRecordsInCategory (SystemDB, dmAllCategories); MemPtr pac = NULL, scratch = NULL, scratch2 = NULL; UInt16 i = 0, senc = 0, aenc = 0; MemHandle rH; char s[5], a[5]; StripPrefType prefs; UInt16 prefsSize, prefsVersion; FormType *preF = FrmGetActiveForm (); FormType *f = FrmInitForm (pleaseWait); FrmDrawForm (f); // re-encrypt the password if ((rH = DmGetRecord (PasswordDB, 0))) { if ((scratch = MemPtrNew (getSCSize(sizeof(md_hash))))) { PackPassword (scratch, &NewSysPass); writeRecord (scratch, rH); MemPtrFree (scratch); } DmReleaseRecord (PasswordDB, 0, true); } // loop through the systems and re-encrypt for (i = 0; i < totalSItems; i++) { System_old sys; if ((rH = DmGetRecord (SystemDB, i))) { pac = MemHandleLock (rH); if ((scratch = MemPtrNew (MemPtrSize (pac)))) { // decrypt the system with old password switch (v) { case 0: UnpackSystem_old (&sys, pac, scratch, SysPass, MemHandleSize (rH), true, 1); scratch2 = MemPtrNew (getSystemSize((System *)&sys, true)); break; case 1: UnpackSystem_old (&sys, pac, scratch, SysPass, MemHandleSize (rH), true, 2); scratch2 = MemPtrNew (getSystemSize ((System *)&sys,true) ); break; case 2: UnpackSystem_old (&sys, pac, scratch, SysPass, MemHandleSize (rH), true, 0); scratch2 = MemPtrNew (getSystemSize ((System *)&sys, true )); break; } if (scratch2) { PackSystem(scratch2, *((System *) &sys), &NewSysPass, true); MemHandleUnlock (rH); writeRecord (scratch2, rH); senc++; MemPtrFree (scratch2); } MemPtrFree (scratch); } DmReleaseRecord (SystemDB, i, true); } } // loop through the accounts and re-encrypt for (i = 0; i < totalAItems; i++) { Account_old ac; Account ac_new; if ((rH = DmGetRecord (AccountDB, i))) { pac = MemHandleLock (rH); if ((scratch = MemPtrNew (MemPtrSize (pac)))) { // decrypt the system with old password switch (v) { case 0: UnpackAccount_old(&ac, pac, scratch, SysPass, MemHandleSize (rH), true, true, 1); ChangeAccountFormat(i, &ac, &ac_new); scratch2 = MemPtrNew (getAccountSize(&ac_new, true)); break; case 1: UnpackAccount_old (&ac, pac, scratch, SysPass, MemHandleSize (rH), true, true, 2); ChangeAccountFormat(i, &ac, &ac_new); scratch2 = MemPtrNew (getAccountSize(&ac_new, true)); break; case 2: UnpackAccount_old(&ac, pac, scratch, SysPass, MemHandleSize (rH), true, true, 0); ChangeAccountFormat(i, &ac, &ac_new); scratch2 = MemPtrNew (getAccountSize(&ac_new,true)); break; } if (scratch2) { PackAccount(scratch2, ac_new, &NewSysPass, true); MemHandleUnlock (rH); writeRecord (scratch2, rH); aenc++; MemPtrFree (scratch2); } MemPtrFree (scratch); } DmReleaseRecord (AccountDB, i, true); } } FrmEraseForm (f); FrmDeleteForm (f); FrmSetActiveForm (preF); // close databases. DmCloseDatabase (SystemDB); DmCloseDatabase (AccountDB); DmCloseDatabase (PasswordDB); { UInt16 cardNo; UInt32 type; LocalID dbID; DmSearchStateType search; type = systemDBType; DmGetNextDatabaseByTypeCreator(true, &search, systemDBTypeOld, StripCreator, true, &cardNo, &dbID); DmSetDatabaseInfo(cardNo, dbID, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &type, NULL); type = accountDBType; DmGetNextDatabaseByTypeCreator(true, &search, accountDBTypeOld, StripCreator, true, &cardNo, &dbID); DmSetDatabaseInfo(cardNo, dbID, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &type, NULL); type = passwordDBType; DmGetNextDatabaseByTypeCreator(true, &search, passwordDBTypeOld, StripCreator, true, &cardNo, &dbID); DmSetDatabaseInfo(cardNo, dbID, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &type, NULL); } prefsSize = sizeof (StripPrefType); prefsVersion = PrefGetAppPreferences (StripCreator, StripPrefID, &prefs, &prefsSize, true); if (prefsVersion != StripVersionNumber) { prefs.smart_beaming = false; PrefSetAppPreferences (StripCreator, StripPrefID, StripVersionNumber, &prefs, sizeof (StripPrefType), true); prefsVersion = PrefGetAppPreferences (StripCreator, StripPrefID, &prefs, &prefsSize, true); } StrIToA (s, senc); StrIToA (a, aenc); FrmCustomAlert (infoDialog, s, a, NULL); StopApplication (); SysReset (); }
int main(int argc, char **argv) { if (argc == 1 || (argc == 2 && (!strcmp(argv[1], "--help") || !strcmp(argv[1], "-help") || !strcmp(argv[1], "-h")))) { PrintHelp(); return 0; } emu_core_preinit(); ChangeWorkingDirectory("c"); char file[MAXPATHLEN] = ""; char path[MAXPATHLEN]; const char *cdfile = NULL; int loadst = 0; int i; int getst = -1; int discNumber = 0; g_menuscreen_w = 800; g_menuscreen_h = 480; strcpy(Config.Gpu, "builtin_gpu"); strcpy(Config.Spu, "builtin_spu"); strcpy(Config.BiosDir, "/home/user/MyDocs"); strcpy(Config.PluginsDir, "/opt/maemo/usr/games/plugins"); snprintf(Config.PatchesDir, sizeof(Config.PatchesDir), "/opt/maemo/usr/games" PATCHES_DIR); Config.PsxAuto = 1; pl_rearmed_cbs.frameskip = -1; strcpy(Config.Bios, "HLE"); iUseReverb = 0; iUseInterpolation = 0; in_type1 = PSE_PAD_TYPE_STANDARD; in_type2 = PSE_PAD_TYPE_STANDARD; accelOptions.sens = 150; accelOptions.y_def = 500; accelOptions.maxValue = 500.0; // read command line options for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "-psxout")) Config.PsxOut = 1; else if (!strcmp(argv[i], "-load")) loadst = atol(argv[++i]); else if (!strcmp(argv[i], "-cdfile")) { char isofilename[MAXPATHLEN]; if (i+1 >= argc) break; strncpy(isofilename, argv[++i], MAXPATHLEN); if (isofilename[0] != '/') { getcwd(path, MAXPATHLEN); if (strlen(path) + strlen(isofilename) + 1 < MAXPATHLEN) { strcat(path, "/"); strcat(path, isofilename); strcpy(isofilename, path); } else isofilename[0] = 0; } cdfile = isofilename; } else if (!strcmp(argv[i],"-frameskip")) { int tv_reg = atol(argv[++i]); if (tv_reg < -1) pl_rearmed_cbs.frameskip = -1; else pl_rearmed_cbs.frameskip = tv_reg; } else if (!strcmp(argv[i],"-region")) { int psx_reg = atol(argv[++i]); if (psx_reg == 0 || psx_reg == 1){ Config.PsxAuto = 0; Config.PsxType = psx_reg; } } else if (!strcmp(argv[i],"-get_sstatename")) getst = atol(argv[++i]); else if (!strcmp(argv[i], "-fullscreen")) g_maemo_opts |= 2; else if (!strcmp(argv[i], "-accel")) g_maemo_opts |= 4; else if (!strcmp(argv[i], "-nosound")) strcpy(Config.Spu, "spunull.so"); else if (!strcmp(argv[i], "-bdir")) sprintf(Config.BiosDir, "%s", argv[++i]); else if (!strcmp(argv[i], "-pdir")) sprintf(Config.PluginsDir, "%s", argv[++i]); else if (!strcmp(argv[i], "-bios")) sprintf(Config.Bios, "%s", argv[++i]); else if (!strcmp(argv[i], "-gles")) { strcpy(Config.Gpu, "gpu_gles.so"); g_maemo_opts |= 8 ;} else if (!strcmp(argv[i], "-oldgpu")) strcpy(Config.Gpu, "gpu_peops.so"); else if (!strcmp(argv[i], "-unai")) strcpy(Config.Gpu, "gpu_unai.so"); else if (!strcmp(argv[i], "-cdda")) Config.Cdda = 1; else if (!strcmp(argv[i], "-xa")) Config.Xa = 1; else if (!strcmp(argv[i], "-rcnt")) Config.RCntFix = 1 ; else if (!strcmp(argv[i], "-sio")) Config.Sio = 1; else if (!strcmp(argv[i], "-spuirq")) Config.SpuIrq = 1; else if (!strcmp(argv[i], "-vsync")) Config.VSyncWA = 1; else if (!strcmp(argv[i], "-fps")) g_opts |=OPT_SHOWFPS; else if (!strcmp(argv[i], "-cpu")) g_opts |=OPT_SHOWCPU; else if (!strcmp(argv[i], "-spu")) g_opts |=OPT_SHOWSPU; else if (!strcmp(argv[i], "-nofl")) g_opts |=OPT_NO_FRAMELIM; else if (!strcmp(argv[i], "-mcd1")) sprintf(Config.Mcd1, "%s", argv[++i]); else if (!strcmp(argv[i], "-mcd2")) sprintf(Config.Mcd2, "%s", argv[++i]); else if (!strcmp(argv[i], "-cpuclock")) cycle_multiplier = 10000 / atol(argv[++i]); else if (!strcmp(argv[i], "-guncon")) in_type1 = PSE_PAD_TYPE_GUNCON; else if (!strcmp(argv[i], "-gunnotrigger")) g_opts |= OPT_TSGUN_NOTRIGGER; else if (!strcmp(argv[i], "-analog")) in_type1 = PSE_PAD_TYPE_ANALOGPAD; else if (!strcmp(argv[i], "-vibration")) { in_type1 = PSE_PAD_TYPE_ANALOGPAD; in_enable_vibration = 1; } else if (!strcmp(argv[i], "-sens")) accelOptions.sens = atol(argv[++i]); else if (!strcmp(argv[i], "-ydef")) accelOptions.y_def = atol(argv[++i]); else if (!strcmp(argv[i], "-max")) accelOptions.maxValue = atol(argv[++i]); else if (!strcmp(argv[i], "-displayon")) bKeepDisplayOn = TRUE; else if (!strcmp(argv[i], "-keys")) sprintf(keys_config_file, "%s", argv[++i]); else if (!strcmp(argv[i], "-autosave")) bAutosaveOnExit = TRUE; else if (!strcmp(argv[i], "-disc")) discNumber = atol(argv[++i]); else if (!strcmp(argv[i], "-corners")){ int j = 0; i++; char num[2]; for (j=0; j<strlen(argv[i]); j++){ strncpy(num, argv[i] + j, 1); cornerActions[j] = atoi(num); } } else if (!strcmp(argv[i], "-spu_reverb")) { if (atol(argv[++i]) > 0) iUseReverb = 2; } else if (!strcmp(argv[i], "-spu_interpolation")) iUseInterpolation = atol(argv[++i]); else if (!strcmp(argv[i],"-interlace")) { int interlace = atol(argv[++i]); if (interlace >= 0 && interlace <= 2) pl_rearmed_cbs.gpu_neon.allow_interlace = interlace; } else if (!strcmp(argv[i], "-enhance")) pl_rearmed_cbs.gpu_neon.enhancement_enable = 1; else if (!strcmp(argv[i], "-enhancehack")) pl_rearmed_cbs.gpu_neon.enhancement_no_main = 1; else if (!strcmp(argv[i], "-gles_dithering")) pl_rearmed_cbs.gpu_peopsgl.bDrawDither = atol(argv[++i]); else if (!strcmp(argv[i], "-gles_mask")) pl_rearmed_cbs.gpu_peopsgl.iUseMask = atol(argv[++i]); else if (!strcmp(argv[i], "-gles_filtering")) pl_rearmed_cbs.gpu_peopsgl.iFilterType = atol(argv[++i]); else if (!strcmp(argv[i], "-gles_fbtex")) pl_rearmed_cbs.gpu_peopsgl.iFrameTexType = atol(argv[++i]); else if (!strcmp(argv[i], "-gles_vram")) pl_rearmed_cbs.gpu_peopsgl.iVRamSize = atol(argv[++i]); else if (!strcmp(argv[i], "-gles_fastmdec")) pl_rearmed_cbs.gpu_peopsgl.bUseFastMdec = atol(argv[++i]); else if (!strcmp(argv[i], "-gles_advblend")) pl_rearmed_cbs.gpu_peopsgl.bAdvancedBlend = atol(argv[++i]); else if (!strcmp(argv[i], "-gles_opaque")) pl_rearmed_cbs.gpu_peopsgl.bOpaquePass = atol(argv[++i]); else { fprintf(stderr, "Unknown option: %s\n", argv[i]); return 1; } } pl_init(); if (emu_core_init() == -1) return 1; if (cdfile) { set_cd_image(cdfile); strcpy(file_name, strrchr(cdfile,'/')); } if (LoadPlugins() == -1) { SysMessage("Failed loading plugins!"); return 1; } if (discNumber > 0) cdrIsoMultidiskSelect = discNumber - 1; if (OpenPlugins() == -1) { return 1; } plugin_call_rearmed_cbs(); CheckCdrom(); if (getst >= 0){ char fname[MAXPATHLEN]; get_state_filename(fname, sizeof(fname), getst); printf("SAVESTATE: %s\n", fname); if (cdrIsoMultidiskCount > 1){ int i = 0; for (i=1; i<cdrIsoMultidiskCount; i++){ cdrIsoMultidiskSelect = i; CdromId[0] = '\0'; CdromLabel[0] = '\0'; CDR_close(); if (CDR_open() == 0){ CheckCdrom(); get_state_filename(fname, sizeof(fname), getst); printf("SAVESTATE: %s\n", fname); } } } return 0; } SysReset(); if (file[0] != '\0') { if (Load(file) != -1) ready_to_go = 1; } else { if (cdfile) { if (LoadCdrom() == -1) { ClosePlugins(); printf(_("Could not load CD-ROM!\n")); return -1; } emu_on_new_cd(0); ready_to_go = 1; } } if (!ready_to_go) { printf ("something goes wrong, maybe you forgot -cdfile ? \n"); return 1; } if (cdrIsoMultidiskCount > 1) printf ("Loaded a multidisc image: %i discs.\n", cdrIsoMultidiskCount); // If a state has been specified, then load that if (loadst) { int ret = emu_load_state(loadst - 1); printf("%s state %d\n", ret ? "Failed to load" : "Loaded", loadst); state_slot = loadst - 1; } if (maemo_init(&argc, &argv)) return 1; if (GPU_open != NULL) { int ret = GPU_open(&gpuDisp, "PCSX", NULL); if (ret){ fprintf(stderr, "Warning: GPU_open returned %d\n", ret); gpuDisp=ret; } } if (Config.HLE) printf("Note: running without BIOS, expect compatibility problems\n"); dfinput_activate(); pl_timing_prepare(Config.PsxType); while (1) { stop = 0; emu_action = SACTION_NONE; psxCpu->Execute(); if (emu_action != SACTION_NONE) do_emu_action(); } maemo_finish(); return 0; }
// loadISO loads an ISO, resets the system and loads the save. int loadISO(fileBrowser_file* file) { // Refresh file pointers memset(&isoFile, 0, sizeof(fileBrowser_file)); memset(&cddaFile, 0, sizeof(fileBrowser_file)); memset(&subFile, 0, sizeof(fileBrowser_file)); memcpy(&isoFile, file, sizeof(fileBrowser_file) ); if(hasLoadedISO) { SysClose(); hasLoadedISO = FALSE; } SetIsoFile(&file->name[0]); if(SysInit() < 0) return -1; hasLoadedISO = TRUE; SysReset(); char *tempStr = &file->name[0]; if((strstr(tempStr,".EXE")!=NULL) || (strstr(tempStr,".exe")!=NULL)) { Load(file); } else { CheckCdrom(); LoadCdrom(); } if(autoSave==AUTOSAVE_ENABLE) { switch (nativeSaveDevice) { case NATIVESAVEDEVICE_SD: case NATIVESAVEDEVICE_USB: // Adjust saveFile pointers saveFile_dir = (nativeSaveDevice==NATIVESAVEDEVICE_SD) ? &saveDir_libfat_Default:&saveDir_libfat_USB; saveFile_readFile = fileBrowser_libfat_readFile; saveFile_writeFile = fileBrowser_libfat_writeFile; saveFile_init = fileBrowser_libfat_init; saveFile_deinit = fileBrowser_libfat_deinit; break; case NATIVESAVEDEVICE_CARDA: case NATIVESAVEDEVICE_CARDB: // Adjust saveFile pointers saveFile_dir = (nativeSaveDevice==NATIVESAVEDEVICE_CARDA) ? &saveDir_CARD_SlotA:&saveDir_CARD_SlotB; saveFile_readFile = fileBrowser_CARD_readFile; saveFile_writeFile = fileBrowser_CARD_writeFile; saveFile_init = fileBrowser_CARD_init; saveFile_deinit = fileBrowser_CARD_deinit; break; } // Try loading everything int result = 0; saveFile_init(saveFile_dir); result += LoadMcd(1,saveFile_dir); result += LoadMcd(2,saveFile_dir); saveFile_deinit(saveFile_dir); switch (nativeSaveDevice) { case NATIVESAVEDEVICE_SD: if (result) autoSaveLoaded = NATIVESAVEDEVICE_SD; break; case NATIVESAVEDEVICE_USB: if (result) autoSaveLoaded = NATIVESAVEDEVICE_USB; break; case NATIVESAVEDEVICE_CARDA: if (result) autoSaveLoaded = NATIVESAVEDEVICE_CARDA; break; case NATIVESAVEDEVICE_CARDB: if (result) autoSaveLoaded = NATIVESAVEDEVICE_CARDB; break; } } return 0; }
s32 SelectGame() { u32 keys; s32 loadst = 0; s32 menu_state = 0; s32 menu_pos = 0; s8* newpackfile = NULL; gp2x_video_RGB_clearscreen16(); gp2x_video_flip(); #if 1 for(;;) { gp2x_video_RGB_clearscreen16(); backg(); //exems(); //gp2x_timer_delay(500000); keys = gp2x_joystick_read(); gp2x_printf(NULL, 10, (menu_pos * 10) + PSX4ALL_MENU_START_POS, PSX4ALL_ROW2); if( keys & GP2X_UP ) { if( menu_pos > 0 ) menu_pos--; } switch(menu_state) { case PSX4ALL_MENU_DEFAULT_STATE: if( keys & GP2X_DOWN ) { if (psx4all_emulating) { if( menu_pos < 4 ) menu_pos++; }else{ if( menu_pos < 3 ) menu_pos++; } } break; case PSX4ALL_MENU_OPTIONS_STATE: if( keys & GP2X_DOWN ) { if( menu_pos < 2 ) menu_pos++; } break; case PSX4ALL_MENU_GPU_STATE: if( keys & GP2X_DOWN ) { if( menu_pos < 15 ) menu_pos++; } break; case PSX4ALL_MENU_SPU_STATE: if( keys & GP2X_DOWN ) { if( menu_pos < 1 ) menu_pos++; } break; /*case PSX4ALL_MENU_ABOUT_STATE: if( keys & GP2X_B ) { if( menu_pos < 0 ) menu_pos++; } break;*/ case PSX4ALL_MENU_GAMESTATE_STATE: if( keys & GP2X_DOWN ) { if( menu_pos < 4 ) menu_pos++; } break; } switch(menu_state) { case PSX4ALL_MENU_DEFAULT_STATE: gp2x_printf(NULL, 100, PSX4ALL_MENU_START_POS + 0, PSX4ALL_OPT); gp2x_printf(NULL, 100, PSX4ALL_MENU_START_POS + 10, PSX4ALL_FO); gp2x_printf(NULL, 100, PSX4ALL_MENU_START_POS + 20, PSX4ALL_ABOUT); if (psx4all_emulating) { gp2x_printf(NULL, 100, PSX4ALL_MENU_START_POS + 30, PSX4ALL_RES); if(psx4all_emulating){ gp2x_printf(NULL, 100, PSX4ALL_MENU_START_POS + 40, PSX4ALL_QT); break; } }else { gp2x_printf(NULL, 100, PSX4ALL_MENU_START_POS + 30, PSX4ALL_QT); } break; case PSX4ALL_MENU_OPTIONS_STATE: gp2x_printf(NULL, 100, PSX4ALL_MENU_START_POS + 0, PSX4ALL_GS); gp2x_printf(NULL, 100, PSX4ALL_MENU_START_POS + 10, PSX4ALL_SS); gp2x_printf(NULL, 100, PSX4ALL_MENU_START_POS + 20, PSX4ALL_BK); break; case PSX4ALL_MENU_GPU_STATE: gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 0, PSX4ALL_FPS, (displayFrameInfo == false ? "OFF" : "ON")); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 10, PSX4ALL_GPU, (displayGpuStats == false ? "OFF" : "ON")); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 20, PSX4ALL_MEM, (displayVideoMemory == false ? "OFF" : "ON")); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 30, PSX4ALL_GPUS, (activeNullGPU == false ? "OFF" : "ON")); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 40, PSX4ALL_IC, linesInterlace_user ); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 50, PSX4ALL_FL, (enableFrameLimit == false ? "OFF" : "ON")); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 60, PSX4ALL_SKIP, skipCount, skipRate); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 70, PSX4ALL_HACK, (enableAbbeyHack == false ? "OFF" : "ON")); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 80, PSX4ALL_CM, PsxCycleMult); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 90, PSX4ALL_FRL, hardframeskip_line ? "ON" : "OFF"); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 100, PSX4ALL_FPL, hardframeskip_poly ? "ON" : "OFF"); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 110, PSX4ALL_FST, hardframeskip_sprite ? "ON" : "OFF"); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 120, PSX4ALL_FIM, hardframeskip_image ? "ON" : "OFF"); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 130, PSX4ALL_FBT, hardframeskip_blit ? "ON" : "OFF"); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 140, PSX4ALL_WTM, use_wall_clock_time ? "ON" : "OFF"); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 150, PSX4ALL_BK); break; case PSX4ALL_MENU_SPU_STATE: gp2x_printf(NULL, 100, PSX4ALL_MENU_START_POS + 0, PSX4ALL_SND, (iSoundMuted == 0 ? "ON" : "OFF")); gp2x_printf(NULL, 100, PSX4ALL_MENU_START_POS + 10, PSX4ALL_BK); break; case PSX4ALL_MENU_GAMESTATE_STATE: gp2x_printf(NULL, 100, PSX4ALL_MENU_START_POS + 0, PSX4ALL_SST); gp2x_printf(NULL, 100, PSX4ALL_MENU_START_POS + 10, PSX4ALL_LST); gp2x_printf(NULL, 100, PSX4ALL_MENU_START_POS + 20, PSX4ALL_LG); gp2x_printf(NULL, 100, PSX4ALL_MENU_START_POS + 30, PSX4ALL_LGW); gp2x_printf(NULL, 100, PSX4ALL_MENU_START_POS + 40, PSX4ALL_BK); break; case PSX4ALL_MENU_ABOUT_STATE: gp2x_printf(NULL, 0, 50, PSX4ALL_NAME " V " PSX4ALL_VERSION "." PSX4ALL_BUILD " By " PSX4ALL_BY); gp2x_printf(NULL, 0, 60, PSX4ALL_CREDITS); gp2x_printf(NULL, 0, 70, PSX4ALL_PORT); gp2x_printf(NULL, 0, 80, PSX4ALL_PTI " " PSX4ALL_PLAT); gp2x_printf(NULL, 0, 100, PSX4ALL_PRM); break; } switch(menu_state) { case PSX4ALL_MENU_DEFAULT_STATE: if (psx4all_emulating) { if( keys & GP2X_B ) { switch(menu_pos) { case 0: menu_state = PSX4ALL_MENU_OPTIONS_STATE; menu_pos = 0; break; case 1: menu_state = PSX4ALL_MENU_GAMESTATE_STATE; menu_pos = 0; break; case 2: menu_state = PSX4ALL_MENU_ABOUT_STATE; menu_pos = 0; break; case 3: gp2x_video_RGB_clearscreen16(); return 0; case 4: SDL_Quit(); default: break; } } }else{ if( keys & GP2X_B ) { switch(menu_pos) { case 0: menu_state = PSX4ALL_MENU_OPTIONS_STATE; menu_pos = 0; break; case 1: menu_state = PSX4ALL_MENU_GAMESTATE_STATE; menu_pos = 0; break; case 2: menu_state = PSX4ALL_MENU_ABOUT_STATE; menu_pos = 0; break; case 3: gp2x_video_RGB_clearscreen16(); return 0; default: break; } } } if (keys & GP2X_L && psx4all_emulating) { gp2x_video_RGB_clearscreen16(); return 0; } break; case PSX4ALL_MENU_OPTIONS_STATE: switch(menu_pos) { case 0: if (keys & GP2X_B){ menu_state = PSX4ALL_MENU_GPU_STATE; menu_pos = 0; }break; case 1: if( keys & GP2X_B){ menu_state = PSX4ALL_MENU_SPU_STATE; menu_pos = 0; } break; case 2: if( keys & GP2X_B ) { menu_state = PSX4ALL_MENU_DEFAULT_STATE; menu_pos = 0; } break; default: break; } if (keys & GP2X_L) { menu_state = PSX4ALL_MENU_DEFAULT_STATE; menu_pos = 0; } break; case PSX4ALL_MENU_GPU_STATE: switch(menu_pos) { case 0: if( keys & GP2X_B || keys & GP2X_LEFT || keys & GP2X_RIGHT ) { displayFrameInfo = !displayFrameInfo; } break; case 1: if( keys & GP2X_B || keys & GP2X_LEFT || keys & GP2X_RIGHT ) { displayGpuStats = !displayGpuStats; } break; case 2: if( keys & GP2X_B ) { displayVideoMemory = !displayVideoMemory; } break; case 3: if( keys & GP2X_B || keys & GP2X_LEFT || keys & GP2X_RIGHT ) { activeNullGPU = !activeNullGPU; } break; case 4: if ( keys & GP2X_LEFT && linesInterlace_user > 0) linesInterlace_user--; if ( keys & GP2X_RIGHT && linesInterlace_user < 7) linesInterlace_user++; break; case 5: if( keys & GP2X_B ) { enableFrameLimit = !enableFrameLimit; } break; case 6: if( keys & GP2X_LEFT ) { if( skipValue > 0 ) { skipValue--; skipCount = skipCountTable[skipValue]; skipRate = skipRateTable[skipValue]; } } if( keys & GP2X_RIGHT ) { if( skipValue < 8 ) { skipValue++; skipCount = skipCountTable[skipValue]; skipRate = skipRateTable[skipValue]; } } break; case 7: if( keys & GP2X_B || keys & GP2X_LEFT || keys & GP2X_RIGHT ) { enableAbbeyHack = !enableAbbeyHack; } break; case 8: if ( keys & GP2X_LEFT && PsxCycleMult > 1) PsxCycleMult--; if ( keys & GP2X_RIGHT && PsxCycleMult < 10) PsxCycleMult++; break; case 9: if( keys & GP2X_B || keys & GP2X_LEFT || keys & GP2X_RIGHT ) { hardframeskip_line = !hardframeskip_line; } break; case 10: if( keys & GP2X_B || keys & GP2X_LEFT || keys & GP2X_RIGHT ) { hardframeskip_poly = !hardframeskip_poly; } break; case 11: if( keys & GP2X_B || keys & GP2X_LEFT || keys & GP2X_RIGHT ) { hardframeskip_sprite = !hardframeskip_sprite; } break; case 12: if( keys & GP2X_B || keys & GP2X_LEFT || keys & GP2X_RIGHT ) { hardframeskip_image = !hardframeskip_image; } break; case 13: if( keys & GP2X_B || keys & GP2X_LEFT || keys & GP2X_RIGHT ) { hardframeskip_blit = !hardframeskip_blit; } break; case 14: if( keys & GP2X_B || keys & GP2X_LEFT || keys & GP2X_RIGHT ) { use_wall_clock_time = !use_wall_clock_time; } break; case 15: if( keys & GP2X_B ) { menu_state = PSX4ALL_MENU_OPTIONS_STATE; menu_pos = 0; } break; default: break; } if (keys & GP2X_L) { menu_state = PSX4ALL_MENU_OPTIONS_STATE; menu_pos = 0; } break; case PSX4ALL_MENU_SPU_STATE: switch(menu_pos) { case 0: if( keys & GP2X_B || keys & GP2X_LEFT || keys & GP2X_RIGHT ) { #ifndef NOSOUND iSoundMuted = !iSoundMuted; #endif } break; case 1: if( keys & GP2X_B ) { menu_state = PSX4ALL_MENU_OPTIONS_STATE; menu_pos = 0; } break; default: break; } if (keys & GP2X_L) { menu_state = PSX4ALL_MENU_OPTIONS_STATE; menu_pos = 0; } break; case PSX4ALL_MENU_GAMESTATE_STATE: switch(menu_pos) { case 0: if( keys & GP2X_B ) { #ifndef IPHONE if( 1 == psx4all_emulating ) { s32 ret; char buffer[360]; char filename[260]; struct stat s; for(int count = 1;; count++) { sprintf(filename, "%s-%04d.svs", packfile, count); if (stat(filename, &s)) break; } gp2x_printf(NULL, 100, 130, PSX4ALL_SV); gp2x_video_flip(); GPU_freeze(2, NULL); ret = SaveState(filename); if (ret == 0) sprintf(buffer, PSX4ALL_SVD); else sprintf(buffer, PSX4ALL_ESV); gp2x_printf(NULL, 100, 140, PSX4ALL_STR, buffer); gp2x_video_flip(); gp2x_timer_delay(900); } #endif } break; case 1: if( keys & GP2X_B ) { #ifndef IPHONE gp2x_timer_delay(500); newpackfile = FileReq(NULL, FORMAT_SV); #endif } break; case 2: if( keys & GP2X_B ) { #ifndef IPHONE Config.HLE = 0; gp2x_timer_delay(500); newpackfile = FileReq(NULL, NULL); #endif } break; case 3: if( keys & GP2X_B ) { #ifndef IPHONE Config.HLE = 1; gp2x_timer_delay(500); newpackfile = FileReq(NULL, NULL); #endif } break; case 4: if( keys & GP2X_B ) { menu_state = PSX4ALL_MENU_DEFAULT_STATE; menu_pos = 0; } break; default: break; } if (keys & GP2X_L) { menu_state = PSX4ALL_MENU_DEFAULT_STATE; menu_pos = 0; } break; case PSX4ALL_MENU_ABOUT_STATE: switch(menu_pos) { case 0: if( keys & GP2X_B ) { menu_state = PSX4ALL_MENU_DEFAULT_STATE; menu_pos = 0; } break; default: break; } if (keys & GP2X_L) { menu_state = PSX4ALL_MENU_DEFAULT_STATE; menu_pos = 0; } break; } if( newpackfile != NULL ) { break; } gp2x_video_flip(); gp2x_timer_delay(90); if(keys & (GP2X_A|GP2X_B|GP2X_X|GP2X_Y|GP2X_L|GP2X_R|GP2X_PUSH| GP2X_LEFT|GP2X_RIGHT|GP2X_UP|GP2X_DOWN) ) { gp2x_timer_delay(50); } } #else Config.HLE = 1; //newpackfile = "Cotton Jap.cbn"; #endif DEBUGF("loaded "PSX4ALL_STR, newpackfile); packfile = newpackfile; gp2x_video_RGB_clearscreen16(); keys = gp2x_joystick_read(); backg(); LoadCdBios = 0; if( (!strcasecmp(packfile + (strlen(packfile)-4), FORMAT_SV)) ) { char *pos; loadst = 1; sprintf(svsfilename, PSX4ALL_STR, packfile); pos = strrchr(packfile, '-'); if (pos) *pos = '\0'; } else { loadst = 0; } if( loadst > 0 ) { gp2x_printf(NULL, 120, 90, PSX4ALL_LDG); } else { gp2x_printf(NULL, 120, 90, PSX4ALL_LDB); } gp2x_video_flip(); if( 1 == psx4all_emulating ) { psxShutdown(); CloseComponents(); } if (SysInit() == -1) { gp2x_deinit(); return 0; } if (InitComponents() == -1) { gp2x_deinit(); return 0; } SysReset(); CheckCdrom(); if( Config.HLE ) { LoadCdBios = 0; if( LoadCdrom() == -1 ) { gp2x_printf(NULL, 120, 120, PSX4ALL_LDD); gp2x_video_flip(); gp2x_timer_delay(2000); gp2x_video_RGB_clearscreen16(); backg(); return 0; } } else { gp2x_printf(NULL, 120, 120, PSX4ALL_LDY); gp2x_video_flip(); gp2x_timer_delay(90); backg(); } if (loadst) { if( LoadState(svsfilename) == -1 ) { gp2x_printf(NULL, 120, 120, PSX4ALL_LSF); gp2x_video_flip(); gp2x_timer_delay(2000); gp2x_video_RGB_clearscreen16(); return 0; } } return 1; }
int main(int argc, char *argv[]) #endif { #ifndef IPHONE #if defined(ARM_ARCH) ChangeWorkingDirectory(argv[0]); getcwd(gamepath, 256); #else #if defined(__WIN32__) if(argc == 1) strncpy(gamepath,"E:\\ps1",256); else strncpy(gamepath,argv[1],256); #else strncpy(gamepath,ROM_PREFIX,256); #endif #endif #endif #ifdef PSP sprintf(gamepath,""); #endif #ifdef IPHONE sprintf(gamepath,""); #endif memset(&Config, 0, sizeof(PsxConfig)); Config.PsxAuto = 1; Config.Cdda = 1; Config.Xa = 0; #ifdef DYNAREC Config.Cpu = 0; #else Config.Cpu = 1; #endif #ifdef WITH_HLE Config.HLE = 1; #else Config.HLE = 0; #endif Config.Mdec = 0; Config.PsxOut = 0; Config.PsxType = 0; Config.QKeys = 0; Config.RCntFix = 0; Config.Sio = 0; Config.SpuIrq = 1; Config.VSyncWA = 0; #if defined(PSP) || defined(SDL) || defined(IPHONE) sprintf(Config.BiosDir, "%s/Media/ROMs/PSX/", appworkdir); sprintf(Config.Bios, "scph1001.bin"); sprintf(Config.Mcd1, "mcd001.mcr"); sprintf(Config.Mcd2, "mcd002.mcr"); #else sprintf(Config.BiosDir, PSX4ALL_STR, gamepath); sprintf(Config.Bios, "/bios/scph1000.bin"); sprintf(Config.Mcd1, "%s/memory_card/mcd001.mcr", gamepath); sprintf(Config.Mcd2, "%s/memory_card/mcd002.mcr", gamepath); #endif gp2x_init(900, 16, 11025, 16, 1, 60, 1); #ifndef GP2X gp2x_video_flip_single(); #endif #ifdef IPHONE u32 loadsvs = 0; linesInterlace_user = preferences.interlace; skipCount = skipCountTablePhone[preferences.frameSkip]; skipRate = skipRateTablePhone[preferences.frameSkip]; iSoundMuted = preferences.muted; Config.Cdda = preferences.muted; Config.Xa = preferences.muted; #ifdef WITH_HLE Config.HLE = !preferences.bios; #else Config.HLE = 0; #endif if( (!strcasecmp(filename + (strlen(filename)-4), FORMAT_SV )) ) { u32 pos; loadsvs = 1; sprintf(svsfilename, PSX4ALL_STR, filename); sprintf(iphonefile, PSX4ALL_STR, filename); pos = strlen(iphonefile)-18; iphonefile[pos] = '\0'; packfile = iphonefile; } else { loadsvs = 0; sprintf(iphonefile, PSX4ALL_STR, filename); packfile = iphonefile; } gp2x_video_RGB_clearscreen16(); LoadCdBios = 0; if (SysInit() == -1) { gp2x_deinit(); return 0; } if (InitComponents() == -1) { gp2x_deinit(); return 0; } SysReset(); CheckCdrom(); if( Config.HLE ) { LoadCdBios = 0; if( LoadCdrom() == -1 ) { gp2x_printf(NULL, 120, 120, PSX4ALL_LDD); gp2x_video_flip(); gp2x_timer_delay(2000); gp2x_video_RGB_clearscreen16(); return 0; } } if (loadsvs) { if( LoadState(svsfilename) == -1 ) { gp2x_printf(NULL, 120, 120, PSX4ALL_LSF); gp2x_video_flip(); gp2x_timer_delay(2000); gp2x_video_RGB_clearscreen16(); psxShutdown(); CloseComponents(); gp2x_deinit(); pthread_exit(NULL); } } psx4all_emulating=1; psx4all_prof_start(PROFILER_TOTAL); psxCpu->Execute(); psx4all_prof_end(PROFILER_TOTAL); psx4all_emulating=0; psx4all_prof_show(); #else if( 0 != SelectGame() ) { psx4all_emulating=1; psx4all_prof_start(PROFILER_TOTAL); psxCpu->Execute(); psx4all_prof_end(PROFILER_TOTAL); psx4all_emulating=0; psx4all_prof_show(); } #endif gp2x_deinit(); return 0; }
int maemo_main(int argc, char **argv) { ChangeWorkingDirectory("c"); char file[MAXPATHLEN] = ""; char path[MAXPATHLEN]; const char *cdfile = NULL; int loadst = 0; int i; strcpy(Config.BiosDir, "/home/user/MyDocs"); strcpy(Config.PluginsDir, "/opt/maemo/usr/games/plugins"); snprintf(Config.PatchesDir, sizeof(Config.PatchesDir), "/opt/maemo/usr/games" PATCHES_DIR); Config.PsxAuto = 1; // read command line options for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "-psxout")) Config.PsxOut = 1; else if (!strcmp(argv[i], "-load")) loadst = atol(argv[++i]); else if (!strcmp(argv[i], "-cdfile")) { char isofilename[MAXPATHLEN]; if (i+1 >= argc) break; strncpy(isofilename, argv[++i], MAXPATHLEN); if (isofilename[0] != '/') { getcwd(path, MAXPATHLEN); if (strlen(path) + strlen(isofilename) + 1 < MAXPATHLEN) { strcat(path, "/"); strcat(path, isofilename); strcpy(isofilename, path); } else isofilename[0] = 0; } cdfile = isofilename; } else if (!strcmp(argv[i],"-frameskip")){ int tv_reg=atol(argv[++i]); if (tv_reg>0){ UseFrameSkip=1; fFrameRateHz = (tv_reg==1)?50.0f: 59.94f; dwFrameRateTicks = (100000*100 / (unsigned long)(fFrameRateHz*100)); } } else if (!strcmp(argv[i],"-sputhreaded")){ iUseTimer=1; } else if (!strcmp(argv[i],"-nosound")){ strcpy(Config.Spu, "spunull.so"); } else if(!strcmp(argv[i], "-bdir")) sprintf(Config.BiosDir, "%s", argv[++i]); else if(!strcmp(argv[i], "-bios")) sprintf(Config.Bios, "%s", argv[++i]); else if (!strcmp(argv[i],"-gles")){ strcpy(Config.Gpu, "gpuGLES.so"); } else if (!strcmp(argv[i], "-cdda")) Config.Cdda = 1; else if (!strcmp(argv[i], "-xa")) Config.Xa = 1; else if (!strcmp(argv[i], "-rcnt")) Config.RCntFix = 1 ; else if (!strcmp(argv[i], "-sio")) Config.Sio = 1; else if (!strcmp(argv[i], "-spuirq")) Config.SpuIrq = 1; else if (!strcmp(argv[i], "-vsync")) Config.VSyncWA = 1; else if (!strcmp(argv[i], "-h") || !strcmp(argv[i], "-help") || !strcmp(argv[i], "--help")) { printf(PACKAGE_NAME " " PACKAGE_VERSION "\n"); printf("%s\n", _( " pcsx [options] [file]\n" "\toptions:\n" "\t-cdfile FILE\tRuns a CD image file\n" "\t-psxout\t\tEnable PSX output\n" "\t-nosound\t\tDisable sound using spunull plugin\n" "\t-sputhreaded\t\tMove sound to separate thread\n" "\t-frameskip\t\tEnable frameskip\n" "\t-load STATENUM\tLoads savestate STATENUM (1-5)\n" "\t-h -help\tDisplay this message\n" "\tfile\t\tLoads file\n")); return 0; } else { strncpy(file, argv[i], MAXPATHLEN); if (file[0] != '/') { getcwd(path, MAXPATHLEN); if (strlen(path) + strlen(file) + 1 < MAXPATHLEN) { strcat(path, "/"); strcat(path, file); strcpy(file, path); } else file[0] = 0; } } } hildon_init(&argc, &argv); if (cdfile) set_cd_image(cdfile); if (SysInit() == -1) return 1; if (LoadPlugins() == -1) { SysMessage("Failed loading plugins!"); return 1; } if (OpenPlugins() == -1) { return 1; } plugin_call_rearmed_cbs(); CheckCdrom(); SysReset(); if (file[0] != '\0') { if (Load(file) != -1) ready_to_go = 1; } else { if (cdfile) { if (LoadCdrom() == -1) { ClosePlugins(); printf(_("Could not load CD-ROM!\n")); return -1; } ready_to_go = 1; } } // If a state has been specified, then load that if (loadst) { int ret = emu_load_state(loadst - 1); printf("%s state %d\n", ret ? "failed to load" : "loaded", loadst); } if (ready_to_go) maemo_init(); else { printf ("somethings goes wrong, maybe you forgot -cdfile ? \n"); return 0; } while (1) { stop = 0; emu_action = SACTION_NONE; psxCpu->Execute(); if (emu_action != SACTION_NONE) do_emu_action(); } return 0; }
int main(int argc, char **argv) { char file[MAXPATHLEN] = ""; char path[MAXPATHLEN]; const char *cdfile = NULL; int loadst = 0; int i; emu_core_preinit(); ChangeWorkingDirectory("c"); strcpy(Config.BiosDir, "/home/user/MyDocs"); strcpy(Config.PluginsDir, "/opt/maemo/usr/games/plugins"); snprintf(Config.PatchesDir, sizeof(Config.PatchesDir), "/opt/maemo/usr/games" PATCHES_DIR); Config.PsxAuto = 1; g_menuscreen_w = 800; g_menuscreen_h = 480; pl_init(); emu_core_init(); // read command line options for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "-psxout")) Config.PsxOut = 1; else if (!strcmp(argv[i], "-load")) loadst = atol(argv[++i]); else if (!strcmp(argv[i], "-cdfile")) { char isofilename[MAXPATHLEN]; if (i+1 >= argc) break; strncpy(isofilename, argv[++i], MAXPATHLEN); if (isofilename[0] != '/') { getcwd(path, MAXPATHLEN); if (strlen(path) + strlen(isofilename) + 1 < MAXPATHLEN) { strcat(path, "/"); strcat(path, isofilename); strcpy(isofilename, path); } else isofilename[0] = 0; } cdfile = isofilename; } else if (!strcmp(argv[i],"-frameskip")) { int tv_reg = atol(argv[++i]); if (tv_reg > 0) pl_rearmed_cbs.frameskip = -1; } else if (!strcmp(argv[i],"-fullscreen")) g_maemo_opts |= 2; else if (!strcmp(argv[i],"-accel")) g_maemo_opts |= 4; else if (!strcmp(argv[i],"-nosound")) strcpy(Config.Spu, "spunull.so"); else if (!strcmp(argv[i], "-bdir")) sprintf(Config.BiosDir, "%s", argv[++i]); else if (!strcmp(argv[i], "-bios")) sprintf(Config.Bios, "%s", argv[++i]); else if (!strcmp(argv[i], "-gles")) strcpy(Config.Gpu, "gpuGLES.so"); else if (!strcmp(argv[i], "-cdda")) Config.Cdda = 1; else if (!strcmp(argv[i], "-xa")) Config.Xa = 1; else if (!strcmp(argv[i], "-rcnt")) Config.RCntFix = 1 ; else if (!strcmp(argv[i], "-sio")) Config.Sio = 1; else if (!strcmp(argv[i], "-spuirq")) Config.SpuIrq = 1; else if (!strcmp(argv[i], "-vsync")) Config.VSyncWA = 1; } hildon_init(&argc, &argv); if (cdfile) { set_cd_image(cdfile); strcpy(file_name, strrchr(cdfile,'/')); } if (LoadPlugins() == -1) { SysMessage("Failed loading plugins!"); return 1; } if (OpenPlugins() == -1) { return 1; } plugin_call_rearmed_cbs(); CheckCdrom(); SysReset(); if (file[0] != '\0') { if (Load(file) != -1) ready_to_go = 1; } else { if (cdfile) { if (LoadCdrom() == -1) { ClosePlugins(); printf(_("Could not load CD-ROM!\n")); return -1; } emu_on_new_cd(0); ready_to_go = 1; } } if (!ready_to_go) { printf ("something goes wrong, maybe you forgot -cdfile ? \n"); return 1; } // If a state has been specified, then load that if (loadst) { int ret = emu_load_state(loadst - 1); printf("%s state %d\n", ret ? "failed to load" : "loaded", loadst); } maemo_init(&argc, &argv); if (GPU_open != NULL) { int ret = GPU_open(&gpuDisp, "PCSX", NULL); if (ret) fprintf(stderr, "Warning: GPU_open returned %d\n", ret); } dfinput_activate(); pl_timing_prepare(Config.PsxType); while (1) { stop = 0; emu_action = SACTION_NONE; psxCpu->Execute(); if (emu_action != SACTION_NONE) do_emu_action(); } return 0; }
void ErrDisplayFileLineMsg(const Char * const filename, UInt16 lineNo, const Char * const msg) { #if (EMULATION_LEVEL != EMULATION_NONE) StubErrDisplayFileLineMsg(filename, lineNo, msg); #else UInt16 fatalAlertResult; Char text[textBufferLen + 1]; SysEventType event; // Form the error message. Use PrvStrNCat everywhere to reduce the // number of utility routines we need to copy into this file. text[0] = '\0'; PrvStrNCat(text, filename, maxErrFilenameLen + 1); PrvStrNCat(text, ", Line:", textBufferLen + 1); StrIToA(text + StrLen(text), lineNo); PrvStrNCat(text, ", ", textBufferLen + 1); PrvStrNCat(text, msg, textBufferLen + 1); // If the UI has not been initialized yet, we can't put up an alert // so we'll force entry into the Debugger. // DOLATER kwk - shouldn't this check be in SysFatalAlert? Also // check for interrupt level; currently AMX kernal generates fatal // alert if 68K vector checksum has changed, but you can't safely // draw at that time. if (!(GSysMiscFlags & sysMiscFlagUIInitialized)) { GDbgWasEntered |= dbgEnteredFlagTrue; DbgBreak(); } // If the debugger was entered already, go to it if (GDbgWasEntered & dbgEnteredFlagTrue) { DbgMessage(text); DbgMessage("\n"); DbgBreak(); } // Else, show a fatal alert else { // If we re-entered, something terrible is wrong so just loop indefinitely so that // we don't eat up stack space. if (GSysMiscFlags & sysMiscFlagInFatalAlert) while(1) ; // Set flag to detect re-entry GSysMiscFlags |= sysMiscFlagInFatalAlert; // Display alert and reset if the first button (0) is pressed. if ( (fatalAlertResult = SysFatalAlert(text)) == fatalReset ) { #ifdef _DEBUG_ERROR_MGR DbgMessage("Reset Pressed\n"); #endif SysReset(); } // If the the second button(1) is pressed (can only happen with // full error checking on) go into Debugger. else if ( fatalAlertResult != fatalDoNothing ) { #ifdef _DEBUG_ERROR_MGR DbgMessage("Debug Pressed\n"); #endif DbgBreak(); } #ifdef _DEBUG_ERROR_MGR else DbgMessage("Continue Pressed\n"); #endif // Flush all events out. do { SysEventGet(&event, 1); } while (event.eType != nilEvent); // Clear re-entry detector GSysMiscFlags &= ~sysMiscFlagInFatalAlert; } #endif }
s32 SelectGame() { u32 keys; s32 loadst = 0; s32 menu_state = 0; s32 menu_pos = 0; s8* newpackfile = NULL; gp2x_video_RGB_clearscreen16(); gp2x_video_flip(); #if 1 // pick a game for(;;) { gp2x_video_RGB_clearscreen16(); gp2x_printf(NULL, 0, 10, "psx4all http://github.com/uli/psx4all-dingoo"); gp2x_printf(NULL, 0, 20, "CREDITS: UNAI - ZODTTD - HLIDE - CHUI - TINNUS"); gp2x_printf(NULL, 0, 30, "Dingoo/MIPS port by Ulrich Hecht"); keys = gp2x_joystick_read(); // draw arrow gp2x_printf(NULL, 10, (menu_pos * 10) + PSX4ALL_MENU_START_POS, "----> "); // read key input for up and down for menu position if( keys & GP2X_UP ) { if( menu_pos > 0 ) menu_pos--; } switch(menu_state) { case PSX4ALL_MENU_DEFAULT_STATE: if( keys & GP2X_DOWN ) { if( menu_pos < 4 ) menu_pos++; } break; case PSX4ALL_MENU_GPU_STATE: if( keys & GP2X_DOWN ) { if( menu_pos < 15 ) menu_pos++; } break; case PSX4ALL_MENU_SPU_STATE: if( keys & GP2X_DOWN ) { if( menu_pos < 1 ) menu_pos++; } break; case PSX4ALL_MENU_BIOS_STATE: if( keys & GP2X_DOWN ) { if( menu_pos < 1 ) menu_pos++; } break; case PSX4ALL_MENU_GAMESTATE_STATE: if( keys & GP2X_DOWN ) { if( menu_pos < 4 ) menu_pos++; } break; } // text to display for each option switch(menu_state) { case PSX4ALL_MENU_DEFAULT_STATE: gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 0, "GRAPHICS OPTIONS"); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 10, "SOUND OPTIONS"); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 20, "BIOS OPTIONS"); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 30, "FILE OPTIONS"); if (psx4all_emulating) gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 40, "RESUME EMULATION"); else gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 40, "QUIT"); break; case PSX4ALL_MENU_GPU_STATE: gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 0, "Show FPS %s", (displayFrameInfo == false ? "OFF" : "ON")); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 10, "Show GPU Stats %s", (displayGpuStats == false ? "OFF" : "ON")); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 20, "Display Video Memory %s", (displayVideoMemory == false ? "OFF" : "ON")); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 30, "Set NULL GPU %s", (activeNullGPU == false ? "OFF" : "ON")); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 40, "Interlace Count %d", linesInterlace_user ); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 50, "Frame Limit %s", (enableFrameLimit == false ? "OFF" : "ON")); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 60, "Frame Skip %d/%d", skipCount, skipRate); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 70, "Abe's Oddysee Fix %s", (enableAbbeyHack == false ? "OFF" : "ON")); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 80, "Cycle Multiplier %d", PsxCycleMult); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 90, "Frameskip: Line %s", hardframeskip_line ? "ON" : "OFF"); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 100, "Frameskip: Poly %s", hardframeskip_poly ? "ON" : "OFF"); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 110, "Frameskip: Sprite %s", hardframeskip_sprite ? "ON" : "OFF"); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 120, "Frameskip: Image %s", hardframeskip_image ? "ON" : "OFF"); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 130, "Frameskip: Blit %s", hardframeskip_blit ? "ON" : "OFF"); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 140, "Wall Clock Timing %s", use_wall_clock_time ? "ON" : "OFF"); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 150, "<-Back"); break; case PSX4ALL_MENU_SPU_STATE: gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 0, "SOUND IS %s", (iSoundMuted == 0 ? "ON" : "OFF")); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 10, "BACK"); break; case PSX4ALL_MENU_BIOS_STATE: switch(biosVersion) { case 0: gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 0, "Bios file: scph1000 (Japanese)"); break; case 1: gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 0, "Bios file: scph1001 (North American)"); break; case 2: gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 0, "Bios file: scph1002 (European)"); break; case 3: gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 0, "Bios file: scph5500 (Japanese)"); break; case 4: gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 0, "Bios file: scph5501 (North American)"); break; case 5: gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 0, "Bios file: scph5502 (European)"); break; case 6: gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 0, "Bios file: scph7001 (North American)"); break; case 7: gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 0, "Bios file: scph7002 (European)"); break; case 8: gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 0, "Bios file: scph7003 (Asian)"); break; case 9: gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 0, "Bios file: scph7500 (Japanese)"); break; case 10: gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 0, "Bios file: scph7501 (North American)"); break; case 11: gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 0, "Bios file: scph7502 (European)"); break; case 12: gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 0, "Bios file: scph7503 (Japanese updated)"); break; default: break; } gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 10, "BACK"); break; case PSX4ALL_MENU_GAMESTATE_STATE: gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 0, "SAVE GAME STATE" ); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 10, "LOAD GAME STATE"); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 20, "LOAD A GAME"); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 30, "LOAD A GAME WITHOUT BIOS"); gp2x_printf(NULL, 80, PSX4ALL_MENU_START_POS + 40, "BACK"); break; } // logic for each option switch(menu_state) { case PSX4ALL_MENU_DEFAULT_STATE: if( keys & GP2X_B ) { switch(menu_pos) { case 0: menu_state = PSX4ALL_MENU_GPU_STATE; menu_pos = 0; break; case 1: menu_state = PSX4ALL_MENU_SPU_STATE; menu_pos = 0; break; case 2: menu_state = PSX4ALL_MENU_BIOS_STATE; menu_pos = 0; break; case 3: menu_state = PSX4ALL_MENU_GAMESTATE_STATE; menu_pos = 0; break; case 4: // clear screen so interlaced screens look ok gp2x_video_RGB_clearscreen16(); return 0; default: break; } } if (keys & GP2X_L && psx4all_emulating) { gp2x_video_RGB_clearscreen16(); return 0; } break; case PSX4ALL_MENU_GPU_STATE: switch(menu_pos) { case 0: if( keys & GP2X_B || keys & GP2X_LEFT || keys & GP2X_RIGHT ) { displayFrameInfo = !displayFrameInfo; } break; case 1: if( keys & GP2X_B || keys & GP2X_LEFT || keys & GP2X_RIGHT ) { displayGpuStats = !displayGpuStats; } break; case 2: if( keys & GP2X_B ) { displayVideoMemory = !displayVideoMemory; } break; case 3: if( keys & GP2X_B ) { activeNullGPU = !activeNullGPU; } break; case 4: if( keys & GP2X_LEFT ) { switch( linesInterlace_user ) { case 0: linesInterlace_user = 7; break; case 1: linesInterlace_user = 0; break; case 3: linesInterlace_user = 1; break; case 7: linesInterlace_user = 3; break; } } if( keys & GP2X_RIGHT ) { switch( linesInterlace_user ) { case 0: linesInterlace_user = 1; break; case 1: linesInterlace_user = 3; break; case 3: linesInterlace_user = 7; break; case 7: linesInterlace_user = 0; break; } } break; case 5: if( keys & GP2X_B ) { enableFrameLimit = !enableFrameLimit; } break; case 6: if( keys & GP2X_LEFT ) { if( skipValue > 0 ) { skipValue--; skipCount = skipCountTable[skipValue]; skipRate = skipRateTable[skipValue]; } } if( keys & GP2X_RIGHT ) { if( skipValue < 8 ) { skipValue++; skipCount = skipCountTable[skipValue]; skipRate = skipRateTable[skipValue]; } } break; case 7: if( keys & GP2X_B ) { enableAbbeyHack = !enableAbbeyHack; } break; case 8: if (keys & GP2X_LEFT && PsxCycleMult > 1) PsxCycleMult--; if (keys & GP2X_RIGHT && PsxCycleMult < 10) PsxCycleMult++; break; case 9: if( keys & GP2X_B ) { hardframeskip_line = !hardframeskip_line; } break; case 10: if( keys & GP2X_B ) { hardframeskip_poly = !hardframeskip_poly; } break; case 11: if( keys & GP2X_B ) { hardframeskip_sprite = !hardframeskip_sprite; } break; case 12: if( keys & GP2X_B ) { hardframeskip_image = !hardframeskip_image; } break; case 13: if( keys & GP2X_B ) { hardframeskip_blit = !hardframeskip_blit; } break; case 14: if( keys & GP2X_B ) { use_wall_clock_time = !use_wall_clock_time; } break; case 15: if( keys & GP2X_B ) { menu_state = PSX4ALL_MENU_DEFAULT_STATE; menu_pos = 0; } break; default: break; } if (keys & GP2X_L) { menu_state = PSX4ALL_MENU_DEFAULT_STATE; menu_pos = 0; } break; case PSX4ALL_MENU_SPU_STATE: switch(menu_pos) { case 0: if( keys & GP2X_B || keys & GP2X_LEFT || keys & GP2X_RIGHT ) { #ifndef NOSOUND iSoundMuted = !iSoundMuted; #endif } break; case 1: if( keys & GP2X_B ) { menu_state = PSX4ALL_MENU_DEFAULT_STATE; menu_pos = 0; } break; } if (keys & GP2X_L) { menu_state = PSX4ALL_MENU_DEFAULT_STATE; menu_pos = 0; } break; case PSX4ALL_MENU_BIOS_STATE: switch(menu_pos) { case 0: if( keys & GP2X_B || keys & GP2X_RIGHT ) { biosVersion++; } else if( keys & GP2X_LEFT) { biosVersion--; } if(biosVersion < 0) biosVersion = 12; if(biosVersion > 12) biosVersion = 0; switch(biosVersion) { case 0: sprintf(Config.Bios, "/scph1000.bin"); break; case 1: sprintf(Config.Bios, "/scph1001.bin"); break; case 2: sprintf(Config.Bios, "/scph1002.bin"); break; case 3: sprintf(Config.Bios, "/scph5500.bin"); break; case 4: sprintf(Config.Bios, "/scph5501.bin"); break; case 5: sprintf(Config.Bios, "/scph5502.bin"); break; case 6: sprintf(Config.Bios, "/scph7001.bin"); break; case 7: sprintf(Config.Bios, "/scph7002.bin"); break; case 8: sprintf(Config.Bios, "/scph7003.bin"); break; case 9: sprintf(Config.Bios, "/scph7500.bin"); break; case 10: sprintf(Config.Bios, "/scph7501.bin"); break; case 11: sprintf(Config.Bios, "/scph7502.bin"); break; case 12: sprintf(Config.Bios, "/scph7503.bin"); break; default: break; } break; case 1: if( keys & GP2X_B ) { menu_state = PSX4ALL_MENU_DEFAULT_STATE; menu_pos = 0; } break; } if (keys & GP2X_L) { menu_state = PSX4ALL_MENU_DEFAULT_STATE; menu_pos = 0; } break; case PSX4ALL_MENU_GAMESTATE_STATE: switch(menu_pos) { case 0: if( keys & GP2X_B ) { #ifndef IPHONE if( 1 == psx4all_emulating ) { s32 ret; char buffer[360]; char filename[260]; struct stat s; for(int count = 1;; count++) { sprintf(filename, "%s-%04d.svs", packfile, count); if (stat(filename, &s)) break; } gp2x_printf(NULL, 80, 130, "Saving..."); gp2x_video_flip(); GPU_freeze(2, NULL); ret = SaveState(filename); if (ret == 0) sprintf(buffer, "Saved!"); else sprintf(buffer, "Error Saving!"); gp2x_printf(NULL, 80, 140, "%s", buffer); gp2x_video_flip(); gp2x_timer_delay(1000); } #endif } break; case 1: if( keys & GP2X_B ) { #ifndef IPHONE // pause so keys won't be accidently inputted in FileReq gp2x_timer_delay(500); newpackfile = FileReq(NULL, ".svs"); #endif } break; case 2: if( keys & GP2X_B ) { #ifndef IPHONE Config.HLE = 0; // pause so keys won't be accidently inputted in FileReq gp2x_timer_delay(500); newpackfile = FileReq(NULL, NULL); #endif } break; case 3: if( keys & GP2X_B ) { #ifndef IPHONE Config.HLE = 1; // pause so keys won't be accidently inputted in FileReq gp2x_timer_delay(500); newpackfile = FileReq(NULL, NULL); #endif } break; case 4: if( keys & GP2X_B ) { menu_state = PSX4ALL_MENU_DEFAULT_STATE; menu_pos = 0; } break; } if (keys & GP2X_L) { menu_state = PSX4ALL_MENU_DEFAULT_STATE; menu_pos = 0; } break; } if( newpackfile != NULL ) { break; } gp2x_video_flip(); gp2x_timer_delay(100); if(keys & (GP2X_A|GP2X_B|GP2X_X|GP2X_Y|GP2X_L|GP2X_R|GP2X_PUSH| GP2X_LEFT|GP2X_RIGHT|GP2X_UP|GP2X_DOWN) ) { //gp2x_video_flip(); gp2x_timer_delay(50); } } #else //newpackfile = "Einhander.bin"; //newpackfile = "Einhander.cbn"; Config.HLE = 1; //newpackfile = "Cotton Jap.bin"; newpackfile = "Cotton Jap.cbn"; #endif DEBUGF("loaded %s", newpackfile); packfile = newpackfile; // clear screen gp2x_video_RGB_clearscreen16(); keys = gp2x_joystick_read(); LoadCdBios = 0; if( (!strcasecmp(packfile + (strlen(packfile)-4), ".svs")) ) { char *pos; loadst = 1; sprintf(svsfilename, "%s", packfile); pos = strrchr(packfile, '-'); if (pos) *pos = '\0'; } else { loadst = 0; } if( loadst > 0 ) { gp2x_printf(NULL, 120, 100, "LOADING SAVE STATE"); } else { gp2x_printf(NULL, 120, 100, "LOADING BIOS"); } gp2x_video_flip(); if( 1 == psx4all_emulating ) { psxShutdown(); CloseComponents(); } if (SysInit() == -1) { gp2x_deinit(); return 0; } if (InitComponents() == -1) { gp2x_deinit(); return 0; } SysReset(); CheckCdrom(); if( Config.HLE ) { LoadCdBios = 0; if( LoadCdrom() == -1 ) { gp2x_printf(NULL, 120, 120, "LOAD FAILED"); gp2x_video_flip(); gp2x_timer_delay(2000); // clear screen gp2x_video_RGB_clearscreen16(); return 0; } } else { gp2x_printf(NULL, 120, 120, "LOADED!"); gp2x_video_flip(); gp2x_timer_delay(100); } if (loadst) { if( LoadState(svsfilename) == -1 ) { gp2x_printf(NULL, 120, 120, "LOAD SAVE FAILED"); gp2x_video_flip(); gp2x_timer_delay(2000); // clear screen gp2x_video_RGB_clearscreen16(); return 0; } } return 1; }
int main(int argc, char *argv[]) { char file[MAXPATHLEN] = ""; char path[MAXPATHLEN]; int runcd = RUN; int loadst = 0; int i; #ifdef ENABLE_NLS setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); #endif memset(&Config, 0, sizeof(PcsxConfig)); // what is the name of the config file? // it may be redefined by -cfg on the command line strcpy(cfgfile_basename, "pcsxr.cfg"); // read command line options for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "-runcd")) runcd = RUN_CD; else if (!strcmp(argv[i], "-nogui")) UseGui = FALSE; else if (!strcmp(argv[i], "-psxout")) Config.PsxOut = TRUE; else if (!strcmp(argv[i], "-slowboot")) Config.SlowBoot = TRUE; else if (!strcmp(argv[i], "-load")) loadst = atol(argv[++i]); else if (!strcmp(argv[i], "-cfg")) { if (i+1 >= argc) break; strncpy(cfgfile_basename, argv[++i], MAXPATHLEN-100); /* TODO buffer overruns */ printf("Using config file %s.\n", cfgfile_basename); } else if (!strcmp(argv[i], "-cdfile")) { char isofilename[MAXPATHLEN]; if (i+1 >= argc) break; strncpy(isofilename, argv[++i], MAXPATHLEN); if (isofilename[0] != '/') { getcwd(path, MAXPATHLEN); if (strlen(path) + strlen(isofilename) + 1 < MAXPATHLEN) { strcat(path, "/"); strcat(path, isofilename); strcpy(isofilename, path); } else isofilename[0] = 0; } SetIsoFile(isofilename); runcd = RUN_CD; } else if (!strcmp(argv[i], "-h") || !strcmp(argv[i], "-help") || !strcmp(argv[i], "--help")) { printf(PACKAGE_STRING "\n"); printf("%s\n", _( " pcsxr [options] [file]\n" "\toptions:\n" "\t-runcd\t\tRuns CD-ROM\n" "\t-cdfile FILE\tRuns a CD image file\n" "\t-nogui\t\tDon't open the GTK GUI\n" "\t-cfg FILE\tLoads desired configuration file (default: ~/.pcsxr/pcsxr.cfg)\n" "\t-psxout\t\tEnable PSX output\n" "\t-slowboot\tEnable BIOS Logo\n" "\t-load STATENUM\tLoads savestate STATENUM (1-9)\n" "\t-h -help\tDisplay this message\n" "\tfile\t\tLoads file\n")); return 0; } else { strncpy(file, argv[i], MAXPATHLEN); if (file[0] != '/') { getcwd(path, MAXPATHLEN); if (strlen(path) + strlen(file) + 1 < MAXPATHLEN) { strcat(path, "/"); strcat(path, file); strcpy(file, path); } else file[0] = 0; } } } strcpy(Config.Net, "Disabled"); if (UseGui) gtk_init(NULL, NULL); CheckSubDir(); ScanAllPlugins(); // try to load config // if the config file doesn't exist if (LoadConfig() == -1) { if (!UseGui) { printf(_("PCSXR cannot be configured without using the GUI -- you should restart without -nogui.\n")); return 1; } // Uh oh, no config file found, use some defaults Config.PsxAuto = 1; gchar *str_bios_dir = g_strconcat(getenv("HOME"), BIOS_DIR, NULL); strcpy(Config.BiosDir, str_bios_dir); g_free(str_bios_dir); gchar *str_plugin_dir = g_strconcat(getenv("HOME"), PLUGINS_DIR, NULL); strcpy(Config.PluginsDir, str_plugin_dir); g_free(str_plugin_dir); gtk_init(NULL, NULL); // Update available plugins, but not GUI UpdatePluginsBIOS(); // Pick some defaults, if they're available set_default_plugin(GpuConfS.plist[0], Config.Gpu); set_default_plugin(SpuConfS.plist[0], Config.Spu); set_default_plugin(CdrConfS.plist[0], Config.Cdr); set_default_plugin(Pad1ConfS.plist[0], Config.Pad1); set_default_plugin(Pad2ConfS.plist[0], Config.Pad2); set_default_plugin(BiosConfS.plist[0], Config.Bios); // create & load default memcards if they don't exist CreateMemcard("card1.mcd", Config.Mcd1); CreateMemcard("card2.mcd", Config.Mcd2); LoadMcds(Config.Mcd1, Config.Mcd2); SaveConfig(); } gchar *str_patches_dir = g_strconcat(getenv("HOME"), PATCHES_DIR, NULL); strcpy(Config.PatchesDir, str_patches_dir); g_free(str_patches_dir); // switch to plugin dotdir // this lets plugins work without modification! gchar *plugin_default_dir = g_build_filename(getenv("HOME"), PLUGINS_DIR, NULL); chdir(plugin_default_dir); g_free(plugin_default_dir); if (UseGui && runcd != RUN_CD) SetIsoFile(NULL); if (SysInit() == -1) return 1; if (UseGui && runcd != RUN_CD) { StartGui(); } else { // the following only occurs if the gui isn't started if (LoadPlugins() == -1) { SysErrorMessage(_("Error"), _("Failed loading plugins!")); return 1; } if (OpenPlugins() == -1 || plugins_configured() == FALSE) { return 1; } CheckCdrom(); // Auto-detect: get region first, then rcnt-bios reset SysReset(); if (file[0] != '\0') { Load(file); } else { if (runcd == RUN_CD) { if (LoadCdrom() == -1) { ClosePlugins(); printf(_("Could not load CD-ROM!\n")); return -1; } } } // If a state has been specified, then load that if (loadst) { StatesC = loadst - 1; gchar *state_filename = get_state_filename(StatesC); LoadState(state_filename); g_free(state_filename); } psxCpu->Execute(); } return 0; }
int main(int argc, char *argv[]) { char file[MAXPATHLEN] = ""; char path[MAXPATHLEN]; const char *cdfile = NULL; const char *loadst_f = NULL; int psxout = 0; int loadst = 0; int i; emu_core_preinit(); // read command line options for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "-psxout")) psxout = 1; else if (!strcmp(argv[i], "-load")) loadst = atol(argv[++i]); else if (!strcmp(argv[i], "-cfg")) { if (i+1 >= argc) break; strncpy(cfgfile_basename, argv[++i], MAXPATHLEN-100); /* TODO buffer overruns */ SysPrintf("Using config file %s.\n", cfgfile_basename); } else if (!strcmp(argv[i], "-cdfile")) { char isofilename[MAXPATHLEN]; if (i+1 >= argc) break; strncpy(isofilename, argv[++i], MAXPATHLEN); if (isofilename[0] != '/') { getcwd(path, MAXPATHLEN); if (strlen(path) + strlen(isofilename) + 1 < MAXPATHLEN) { strcat(path, "/"); strcat(path, isofilename); strcpy(isofilename, path); } else isofilename[0] = 0; } cdfile = isofilename; } else if (!strcmp(argv[i], "-loadf")) { if (i+1 >= argc) break; loadst_f = argv[++i]; } else if (!strcmp(argv[i], "-h") || !strcmp(argv[i], "-help") || !strcmp(argv[i], "--help")) { printf("PCSX-ReARMed " REV "\n"); printf("%s\n", _( " pcsx [options] [file]\n" "\toptions:\n" "\t-cdfile FILE\tRuns a CD image file\n" "\t-cfg FILE\tLoads desired configuration file (default: ~/.pcsx/pcsx.cfg)\n" "\t-psxout\t\tEnable PSX output\n" "\t-load STATENUM\tLoads savestate STATENUM (1-5)\n" "\t-h -help\tDisplay this message\n" "\tfile\t\tLoads a PSX EXE file\n")); return 0; } else { strncpy(file, argv[i], MAXPATHLEN); if (file[0] != '/') { getcwd(path, MAXPATHLEN); if (strlen(path) + strlen(file) + 1 < MAXPATHLEN) { strcat(path, "/"); strcat(path, file); strcpy(file, path); } else file[0] = 0; } } } if (cdfile) set_cd_image(cdfile); // frontend stuff // init input but leave probing to platform code, // they add input drivers and may need to modify them after probe in_init(); pl_init(); plat_init(); menu_init(); // loads config if (emu_core_init() != 0) return 1; if (psxout) Config.PsxOut = 1; if (LoadPlugins() == -1) { // FIXME: this recovery doesn't work, just delete bad config and bail out // SysMessage("could not load plugins, retrying with defaults\n"); set_default_paths(); snprintf(path, sizeof(path), "." PCSX_DOT_DIR "%s", cfgfile_basename); remove(path); SysMessage("Failed loading plugins!"); return 1; } pcnt_hook_plugins(); if (OpenPlugins() == -1) { return 1; } plugin_call_rearmed_cbs(); CheckCdrom(); SysReset(); if (file[0] != '\0') { if (Load(file) != -1) ready_to_go = 1; } else { if (cdfile) { if (LoadCdrom() == -1) { ClosePlugins(); SysPrintf(_("Could not load CD-ROM!\n")); return -1; } emu_on_new_cd(!loadst); ready_to_go = 1; } } if (loadst_f) { int ret = LoadState(loadst_f); SysPrintf("%s state file: %s\n", ret ? "failed to load" : "loaded", loadst_f); ready_to_go |= ret == 0; } if (ready_to_go) { menu_prepare_emu(); // If a state has been specified, then load that if (loadst) { int ret = emu_load_state(loadst - 1); SysPrintf("%s state %d\n", ret ? "failed to load" : "loaded", loadst); } } else menu_loop(); pl_start_watchdog(); while (!g_emu_want_quit) { stop = 0; emu_action = SACTION_NONE; psxCpu->Execute(); if (emu_action != SACTION_NONE) do_emu_action(); } printf("Exit..\n"); ClosePlugins(); SysClose(); menu_finish(); plat_finish(); return 0; }
int main() { printf("main\n"); xenos_init(VIDEO_MODE_HDMI_720P); xenon_make_it_faster(XENON_SPEED_FULL); xenon_sound_init(); //xenos_init(VIDEO_MODE_YUV_720P); //console_init(); usb_init(); usb_do_poll(); xenon_ata_init(); xenon_atapi_init(); //fatInitDefault(); //char mount[10]; //sprintf(mount, "uda0"); //fatMount(mount, &usb2mass_ops_0, 0, 2, 64); ntfs_md *mounts; //ntfsMountAll (&mounts, NTFS_READ_ONLY); XTAFMount(); findDevices(); init_miss(); time_t rawtime; time ( &rawtime ); printf ( "The current local time is: %s", ctime (&rawtime) ); /* */ memset(&Config, 0, sizeof (PcsxConfig)); // network_init(); // network_print_config(); //console_close(); xenon_smc_start_bootanim(); // tell me that telnet or http are ready // telnet_console_init(); // mdelay(5000); //httpd_start(); // uart speed patch 115200 - jtag/freeboot // *(volatile uint32_t*)(0xea001000+0x1c) = 0xe6010000; //memset(&Config, 0, sizeof (PcsxConfig)); strcpy(Config.Net, "Disabled"); strcpy(Config.Cdr, "CDR"); strcpy(Config.Gpu, "GPU"); strcpy(Config.Spu, "SPU"); strcpy(Config.Pad1, "PAD1"); strcpy(Config.Pad2, "PAD2"); strcpy(Config.Bios, "SCPH1001.BIN"); // Use actual BIOS //strcpy(Config.Bios, "scph7502.bin"); // Use actual BIOS //strcpy(Config.Bios, "HLE"); // Use HLE strcpy(Config.BiosDir, "sda0:/devkit/pcsxr/bios"); strcpy(Config.PatchesDir, "sda0:/devkit/pcsxr/patches_/"); Config.PsxAuto = 1; // autodetect system Config.Cpu = CPU_DYNAREC; //Config.Cpu = CPU_INTERPRETER; strcpy(Config.Mcd1, "sda0:/devkit/pcsxr/memcards/card1.mcd"); strcpy(Config.Mcd2, "sda0:/devkit/pcsxr/memcards/card2.mcd"); // useSoftGpu(); /* strcpy(Config.Mcd1, "sda:/hdd1/xenon/memcards/card1.mcd"); strcpy(Config.Mcd2, "sda:/hdd1/xenon/memcards/card2.mcd"); */ //InitVideo(); SetIso(cdfile); if (LoadPlugins() == 0) { if (OpenPlugins() == 0) { if (SysInit() == -1) { printf("SysInit() Error!\n"); return -1; } SysReset(); // Check for hle ... if (Config.HLE == 1) { printf("Can't continue ... bios not found ...\r\n"); //exit(0); } CheckCdrom(); LoadCdrom(); psxCpu->Execute(); } } printf("Pcsx exit ...\r\n"); return 0; }