int ConfigCheatLoad() { TCHAR szFilename[MAX_PATH] = _T(""); _stprintf(szFilename, _T("%s%s.ini"), szAppCheatsPath, BurnDrvGetText(DRV_NAME)); if (ConfigParseFile(szFilename)) { _stprintf(szFilename, _T("%s%s.dat"), szAppCheatsPath, BurnDrvGetText(DRV_NAME)); if (ConfigParseNebulaFile(szFilename)) { if (ConfigParseMAMEFile()) { return 1; } } } if (pCheatInfo) { int nCurrentCheat = 0; while (CheatEnable(nCurrentCheat, -1) == 0) { nCurrentCheat++; } CheatUpdate(); } return 0; }
int StatedSave(int nSlot) { TCHAR szFilter[1024]; int nRet; int bOldPause; if (bDrvOkay == 0) { return 1; } if (nSlot) { CreateStateName(nSlot); } else { _stprintf(szChoice, _T("GAME:\\savestates\\%S.fs"), BurnDrvGetText(DRV_NAME)); StateMakeOfn(szFilter); bOldPause = bRunPause; bRunPause = 1; bRunPause = bOldPause; } nRet = BurnStateSave(szChoice, 1); return nRet; }
static TCHAR* GameConfigName() { // Return the path of the config file for this game static TCHAR szName[32]; _stprintf(szName, _T("config\\games\\%.8s.ini"), BurnDrvGetText(DRV_NAME)); return szName; }
void LoadIpsActivePatches() { for (int i = 0; i < MAX_ACTIVE_PATCHES; i++) { _stprintf(szIpsActivePatches[i], _T("")); } FILE* fp = _tfopen(GameIpsConfigName(), _T("rt")); TCHAR szLine[MAX_PATH]; int nActivePatches = 0; if (fp) { while (_fgetts(szLine, sizeof(szLine), fp)) { int nLen = _tcslen(szLine); // Get rid of the linefeed at the end if (szLine[nLen - 1] == 10) { szLine[nLen - 1] = 0; nLen--; } if (!_tcsnicmp(szLine, _T("//"), 2)) continue; if (!_tcsicmp(szLine, _T(""))) continue; _stprintf(szIpsActivePatches[nActivePatches], _T("%s%s\\%s"), szAppIpsPath, BurnDrvGetText(DRV_NAME), szLine); nActivePatches++; } fclose(fp); } }
int patchSettingInit() { // clear active patch index for (int i = 0; i < MAX_ACTIVE_PATCHES; i++) { _stprintf(szActivePatches[i], _T("")); } // Get game full name TCHAR szText[1024] = _T(""); TCHAR* pszFullName = transGameName(BurnDrvGetText(DRV_FULLNAME)); _stprintf(szText, _T("%s") _T(SEPERATOR_1) _T("%s"), FBALoadStringEx(IDS_IPSMANAGER), pszFullName); // Set the window caption SetWindowText(hIpsDlg, szText); // init ips language combobox for (int i = 0; ui_lang_info[i].name; i++) { SendDlgItemMessage(hIpsDlg, IDC_IPS_LANG, CB_ADDSTRING, 0, (LPARAM)AtoW(ui_lang_info[i].name)); } SendDlgItemMessage(hIpsDlg, IDC_IPS_LANG, CB_SETCURSEL, (WPARAM)nPatchLang, 0); CheckDlgButton(hIpsDlg, IDC_IPS_ENFORCE, bEnforceDep ? BST_CHECKED : BST_UNCHECKED); rebuildIpsList(); return 0; }
int GetIpsNumPatches() { WIN32_FIND_DATA wfd; HANDLE hSearch; TCHAR szFilePath[MAX_PATH]; int Count = 0; _stprintf(szFilePath, _T("%s%s\\"), szAppIpsPath, BurnDrvGetText(DRV_NAME)); _tcscat(szFilePath, _T("*.dat")); hSearch = FindFirstFile(szFilePath, &wfd); if (hSearch != INVALID_HANDLE_VALUE) { int Done = 0; while (!Done ) { Count++; Done = !FindNextFile(hSearch, &wfd); } FindClose(hSearch); } return Count; }
void loadActivePatches() { TCHAR szLine[MAX_PATH]; int nActivePatches = 0; size_t nLen; FILE* fp = _tfopen(gameIpsConfigName(), _T("rt")); if (fp) { while (_fgetts(szLine, sizeof(szLine), fp)) { nLen = _tcslen(szLine); // Get rid of the linefeed at the end if (nLen != 0 && (szLine[nLen - 1] == '\r' || szLine[nLen - 1] == '\n')) { szLine[nLen - 1] = 0; nLen--; } if (!_tcsnicmp(szLine, _T("//"), 2)) continue; if (!_tcsicmp(szLine, _T(""))) continue; _stprintf(szActivePatches[nActivePatches], _T("%s%s\\%s"), getMiscPath(PATH_IPS), BurnDrvGetText(DRV_NAME), szLine); nActivePatches++; if (nActivePatches >= MAX_ACTIVE_PATCHES) { break; } } fclose(fp); } }
int StatedLoad(int nSlot) { TCHAR szFilter[1024]; int nRet; int bOldPause; if (bDrvOkay == 0) { return 1; } if (nSlot) { CreateStateName(nSlot); } else { if (bDrvOkay) { _stprintf(szChoice, _T("GAME:\\savestates\\%S.fs"), BurnDrvGetText(DRV_NAME)); } else { _stprintf(szChoice, _T("savestate")); } StateMakeOfn(szFilter); bOldPause = bRunPause; bRunPause = 1; bRunPause = bOldPause; } nRet = BurnStateLoad(szChoice, 1, &DrvInitCallback); if (nSlot) { return nRet; } // Describe any possible errors: if (nRet == 3) { FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_DISK_THIS_STATE)); FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_ERR_DISK_UNAVAIL)); } else { if (nRet == 4) { FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_DISK_THIS_STATE)); FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_ERR_DISK_TOOOLD), _T(APP_TITLE)); } else { if (nRet == 5) { FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_DISK_THIS_STATE)); FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_ERR_DISK_TOONEW), _T(APP_TITLE)); } else { if (nRet && !nSlot) { FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_ERR_DISK_LOAD)); FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_DISK_STATE)); } } } } if (nRet) { FBAPopupDisplay(PUF_TYPE_ERROR); } return nRet; }
static TCHAR* gameIpsConfigName() { // Return the path of the config file for this game static TCHAR szName[64]; _stprintf(szName, _T("config\\ips\\%s.ini"), BurnDrvGetText(DRV_NAME)); return szName; }
int StatedLoad(int nSlot) { TCHAR szFilter[1024]; int nRet; int bOldPause; if (nSlot) { CreateStateName(nSlot); } else { if (bDrvOkay) { _stprintf(szChoice, _T("%s*.fs"), BurnDrvGetText(DRV_NAME)); } else { _stprintf(szChoice, _T("savestate")); } MakeOfn(szFilter); ofn.lpstrTitle = FBALoadStringEx(hAppInst, IDS_STATE_LOAD, true); bOldPause = bRunPause; bRunPause = 1; nRet = GetOpenFileName(&ofn); bRunPause = bOldPause; if (nRet == 0) { // Error return 1; } } nRet = BurnStateLoad(szChoice, 1, &DrvInitCallback); if (nSlot) { return nRet; } // Describe any possible errors: if (nRet == 3) { FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_DISK_THIS_STATE)); FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_ERR_DISK_UNAVAIL)); } else { if (nRet == 4) { FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_DISK_THIS_STATE)); FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_ERR_DISK_TOOOLD), _T(APP_TITLE)); } else { if (nRet == 5) { FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_DISK_THIS_STATE)); FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_ERR_DISK_TOONEW), _T(APP_TITLE)); } else { if (nRet && !nSlot) { FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_ERR_DISK_LOAD)); FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_DISK_STATE)); } } } } if (nRet) { FBAPopupDisplay(PUF_TYPE_ERROR); } return nRet; }
static TCHAR* GameConfigName() { // Return the path of the config file for this game static TCHAR szName[MAX_PATH]; _stprintf(szName, _T("%sconfig\\games\\%s.ini"), szCurrentPath, BurnDrvGetText(DRV_NAME)); return szName; }
static void CreateStateName(int nSlot) { // create dir if dir doesn't exist if (!directoryExists(getMiscPath(PATH_SAVESTATE))) { CreateDirectory(getMiscPath(PATH_SAVESTATE), NULL); } _stprintf(szChoice, _T("%s%s slot %02x.fs"), getMiscPath(PATH_SAVESTATE), BurnDrvGetText(DRV_NAME), nSlot); }
void HiscoreExit() { #if defined FBA_DEBUG if (!Debug_HiscoreInitted) bprintf(PRINT_ERROR, _T("HiscoreExit called without init\n")); #endif if (!CheckHiscoreAllowed() || !HiscoresInUse) { Debug_HiscoreInitted = 0; return; } if (nCpuType == -1) set_cpu_type(); TCHAR szFilename[MAX_PATH]; _stprintf(szFilename, _T("%s%s.hi"), szAppHiscorePath, BurnDrvGetText(DRV_NAME)); FILE *fp = _tfopen(szFilename, _T("w")); if (fp) { for (UINT32 i = 0; i < nHiscoreNumRanges; i++) { UINT8 *Buffer = (UINT8*)malloc(HiscoreMemRange[i].NumBytes); cpu_open(HiscoreMemRange[i].nCpu); for (UINT32 j = 0; j < HiscoreMemRange[i].NumBytes; j++) { Buffer[j] = cpu_read_byte(HiscoreMemRange[i].Address + j); } cpu_close(); fwrite(Buffer, 1, HiscoreMemRange[i].NumBytes, fp); if (Buffer) { free(Buffer); Buffer = NULL; } } } fclose(fp); nCpuType = -1; nHiscoreNumRanges = 0; for (UINT32 i = 0; i < HISCORE_MAX_RANGES; i++) { HiscoreMemRange[i].Loaded = 0; HiscoreMemRange[i].nCpu = 0; HiscoreMemRange[i].Address = 0; HiscoreMemRange[i].NumBytes = 0; HiscoreMemRange[i].StartValue = 0; HiscoreMemRange[i].EndValue = 0; HiscoreMemRange[i].ApplyNextFrame = 0; HiscoreMemRange[i].Applied = 0; free(HiscoreMemRange[i].Data); HiscoreMemRange[i].Data = NULL; } Debug_HiscoreInitted = 0; }
// ==> IPS preview, added by regret, thanks MAME Plus! team int getPatchPrevName(TCHAR* pszName, TCHAR* pszGameName, TCHAR* pszPatchName) { _stprintf(pszName, _T("%s%s\\%s.png"), getMiscPath(PATH_IPS), pszGameName, pszPatchName); FILE* fp = _tfopen(pszName, _T("rb")); if (fp) { fclose(fp); _stprintf(pszName, _T("%s%s\\%s"), getMiscPath(PATH_IPS), pszGameName, pszPatchName); return 1; } else { // if not loaded, see parent's ips folder _stprintf(pszName, _T("%s%s\\%s.png"), getMiscPath(PATH_IPS), BurnDrvGetText(DRV_PARENT), pszPatchName); fp = _tfopen(pszName, _T("rb")); if (fp) { fclose(fp); _stprintf(pszName, _T("%s%s\\%s"), getMiscPath(PATH_IPS), BurnDrvGetText(DRV_PARENT), pszPatchName); return 1; } } return 0; }
void SetFavoritesIcons() { if(nFavDrvCount == 0) { return; } if(nIconsSize == ICON_16x16) nIconsSizeXY = 16; if(nIconsSize == ICON_24x24) nIconsSizeXY = 24; if(nIconsSize == ICON_32x32) nIconsSizeXY = 32; HIMAGELIST hImageList = ImageList_Create(nIconsSizeXY, nIconsSizeXY, ILC_MASK | ILC_COLORDDB, 0, 0); ListView_SetImageList(hFavListView, hImageList, LVSIL_SMALL); for(int nIndex = 0; nIndex < nFavDrvCount; nIndex++) { TCHAR szIcon[MAX_PATH]; _stprintf(szIcon, _T("%s%s.ico"), szAppIconsPath, Favorites[nIndex].szDrvName); if((HICON)LoadImage(hAppInst, szIcon, IMAGE_ICON, nIconsSizeXY, nIconsSizeXY, LR_LOADFROMFILE)){ ImageList_AddIcon(hImageList, (HICON)LoadImage(hAppInst, szIcon, IMAGE_ICON, nIconsSizeXY, nIconsSizeXY, LR_LOADFROMFILE)); } if(!(HICON)LoadImage(hAppInst, szIcon, IMAGE_ICON, nIconsSizeXY, nIconsSizeXY, LR_LOADFROMFILE)) { unsigned int nTemp = nBurnDrvSelect; nBurnDrvSelect = Favorites[nIndex].nDrvNumber; if(BurnDrvGetText(DRV_PARENT)){ _stprintf(szIcon, _T("%s%s.ico"), szAppIconsPath, BurnDrvGetText(DRV_PARENT)); ImageList_AddIcon(hImageList, (HICON)LoadImage(hAppInst, szIcon, IMAGE_ICON, nIconsSizeXY, nIconsSizeXY, LR_LOADFROMFILE)); } nBurnDrvSelect = nTemp; } if(!(HICON)LoadImage(hAppInst, szIcon, IMAGE_ICON, nIconsSizeXY, nIconsSizeXY, LR_LOADFROMFILE)) { ImageList_AddIcon(hImageList, LoadIcon(hAppInst, MAKEINTRESOURCE(IDI_STAR)) ); } } }
unsigned int BurnDrvGetIndexByName(const char* name) { unsigned int ret = ~0U; unsigned int nOldSelect = nBurnDrvSelect; for (unsigned int i = 0; i < nBurnDrvCount; i++) { nBurnDrvSelect = i; if (strcasecmp(BurnDrvGetText(DRV_NAME), name) == 0) { ret = i; break; } } nBurnDrvSelect = nOldSelect; return ret; }
static void savePatches() { // clear active patch index for (int i = 0; i < MAX_ACTIVE_PATCHES; i++) { _stprintf(szActivePatches[i], _T("")); } int nChecked = 0; int nActivePatches = 0; for (int i = 0; i < nNumPatches; i++) { nChecked = _TreeView_GetCheckState(hIpsList, hPatchHandlesIndex[i]); if (nChecked) { _tcscpy(szActivePatches[nActivePatches], szPatchFileNames[i]); nActivePatches++; if (nActivePatches >= MAX_ACTIVE_PATCHES) { break; } } } FILE* fp = _tfopen(gameIpsConfigName(), _T("wt")); if (fp) { _ftprintf(fp, _T("// ") _T(APP_TITLE) _T(" v%s --- IPS Config File for %s (%hs)\n\n"), szAppBurnVer, BurnDrvGetText(DRV_NAME), BurnDrvGetTextA(DRV_FULLNAME)); TCHAR szPatchName[MAX_PATH]; TCHAR szFileName[MAX_PATH]; TCHAR* Tokens = NULL; for (int i = 0; i < nActivePatches; i++) { _tcscpy(szPatchName, szActivePatches[i]); // make a copy, modified by regret Tokens = _tcstok(szPatchName, _T("\\")); while (Tokens != NULL) { szFileName[0] = _T('\0'); _tcscpy(szFileName, Tokens); Tokens = _tcstok(NULL, _T("\\")); } _ftprintf(fp, _T("%s\n"), szFileName); } fclose(fp); } // if no active patch, delete config file if (nActivePatches == 0) { _tremove(gameIpsConfigName()); } }
void HiscoreExit() { if (!CheckHiscoreAllowed() || !HiscoresInUse) return; if (nCpuType == -1) set_cpu_type(); TCHAR szFilename[MAX_PATH]; _stprintf(szFilename, _T("%s%s.hi"), szAppHiscorePath, BurnDrvGetText(DRV_NAME)); FILE *fp = _tfopen(szFilename, _T("w")); if (fp) { for (unsigned int i = 0; i < nHiscoreNumRanges; i++) { unsigned char *Buffer = (unsigned char*)malloc(HiscoreMemRange[i].NumBytes); cpu_open(HiscoreMemRange[i].nCpu); for (unsigned int j = 0; j < HiscoreMemRange[i].NumBytes; j++) { Buffer[j] = cpu_read_byte(HiscoreMemRange[i].Address + j); } cpu_close(); fwrite(Buffer, 1, HiscoreMemRange[i].NumBytes, fp); if (Buffer) { free(Buffer); Buffer = NULL; } } } fclose(fp); nCpuType = -1; nHiscoreNumRanges = 0; for (unsigned int i = 0; i < HISCORE_MAX_RANGES; i++) { HiscoreMemRange[i].Loaded = 0; HiscoreMemRange[i].nCpu = 0; HiscoreMemRange[i].Address = 0; HiscoreMemRange[i].NumBytes = 0; HiscoreMemRange[i].StartValue = 0; HiscoreMemRange[i].EndValue = 0; HiscoreMemRange[i].ApplyNextFrame = 0; HiscoreMemRange[i].Applied = 0; free(HiscoreMemRange[i].Data); HiscoreMemRange[i].Data = NULL; } }
// The automatic save int StatedAuto(int bSave) { static TCHAR szName[32] = _T(""); int nRet; _stprintf(szName, _T("config/games/%s.fs"), BurnDrvGetText(DRV_NAME)); if (bSave == 0) { nRet = BurnStateLoad(szName, bDrvSaveAll, NULL); // Load ram if (nRet && bDrvSaveAll) { nRet = BurnStateLoad(szName, 0, NULL); // Couldn't get all - okay just try the nvram } } else { nRet = BurnStateSave(szName, bDrvSaveAll); // Save ram } return nRet; }
int DrvInit(int nDrvNum, bool bRestore) { DrvExit(); // Make sure exitted // AudSoundInit(); // Init Sound (not critical if it fails) nBurnSoundRate = 0; // Assume no sound pBurnSoundOut = NULL; // if (bAudOkay) { // nBurnSoundRate = nAudSampleRate; // nBurnSoundLen = nAudSegLen; // } nBurnDrvSelect[0] = nDrvNum; // Set the driver number // Define nMaxPlayers early; GameInpInit() needs it (normally defined in DoLibInit()). nMaxPlayers = BurnDrvGetMaxPlayers(); // GameInpInit(); // Init game input // ConfigGameLoad(true); // InputMake(true); // GameInpDefault(); SndInit(); if (DoLibInit()) { // Init the Burn library's driver char szTemp[512]; BurnDrvExit(); // Exit the driver _stprintf (szTemp, _T("There was an error starting '%s'.\n"), BurnDrvGetText(DRV_FULLNAME)); return 1; } BurnExtLoadRom = DrvLoadRom; bDrvOkay = 1; // Okay to use all BurnDrv functions bSaveRAM = false; nBurnLayer = 0xFF; // show all layers // Reset the speed throttling code, so we don't 'jump' after the load RunReset(); return 0; }
int FindDrvByFileName(const char * fn) { char sfn[60] = {0, }; for (int i=strlen(fn)-1; i>=0; i-- ) { if (fn[i] == '/' || fn[i] == '\\' ) { strcpy( sfn, fn + i + 1 ); break; } } if (sfn[0] == 0 ) strcpy( sfn, fn ); char * p = strrchr( sfn, '.' ); if (p) *p = 0; for (nBurnDrvSelect[0]=0; nBurnDrvSelect[0]<nBurnDrvCount; nBurnDrvSelect[0]++) if ( strcasecmp(sfn, BurnDrvGetText(DRV_NAME)) == 0 ) return nBurnDrvSelect[0]; nBurnDrvSelect[0] = 0; return -1; }
// Add a game to Favorites void AddToFavorites() { int nIndex = ListView_GetItemCount(hFavListView); // index of the new favorite listview item TCHAR* ItemRomname = BurnDrvGetText(DRV_NAME); // Romset Name #if defined (_UNICODE) TCHAR* ItemTitle = BurnDrvGetText(DRV_FULLNAME); // Unicode Game Title #else TCHAR* ItemTitle = BurnDrvGetText(DRV_ASCIIONLY | DRV_FULLNAME); // ASCII Game Title #endif TCHAR* ItemHardware = BurnDrvGetText(DRV_SYSTEM); // Game Hardware / System TCHAR* ItemYear = BurnDrvGetText(DRV_DATE); // Year TCHAR* ItemCompany = BurnDrvGetText(DRV_MANUFACTURER); // Manufacturer / Company TCHAR szItemMaxPlayers[5]; _stprintf(szItemMaxPlayers, _T("%i"), BurnDrvGetMaxPlayers()); // Max Players TCHAR* ItemMaxPlayers = szItemMaxPlayers; TCHAR szPlayCounter[5]; _stprintf(szPlayCounter, _T("%i"), 0); // Play Counter (Zero because there isn't another counter in FBA) TCHAR* ItemPlayCounter = szPlayCounter; LVITEM LvItem; memset(&LvItem, 0, sizeof(LvItem)); LvItem.mask = LVIF_TEXT; LvItem.cchTextMax = 256; LvItem.iItem = nIndex; // Add Romname, Title and Hardware of the selected game to the Favorites List for (int nColumn = 0; nColumn < LV_MAX_COLS; nColumn++) { LvItem.iSubItem = nColumn; switch (nColumn) { case 1: LvItem.pszText = ItemTitle; break; case 2: LvItem.pszText = ItemHardware; break; case 3: LvItem.pszText = ItemYear; break; case 4: LvItem.pszText = ItemCompany; break; case 5: LvItem.pszText = ItemMaxPlayers; break; case 6: LvItem.pszText = ItemPlayCounter; break; } if(nColumn == 0) { LvItem.pszText = ItemRomname; SendMessage(hFavListView, LVM_INSERTITEM,0,(LPARAM)&LvItem); SendMessage(hFavListView, LVM_SETITEM, 0, (LPARAM)&LvItem); } else { SendMessage(hFavListView, LVM_SETITEM, 0, (LPARAM)&LvItem); } } SaveFavListAlt(); // Save the Favorite Games List RefreshFavGameList(); // Refresh Favorite Games List }
// The automatic save int StatedAuto(int bSave) { #if 0 static TCHAR szName[MAX_PATH] = _T(""); int nRet; _stprintf(szName, _T("GAME:\\config\\games\\%S.fs"), BurnDrvGetText(DRV_NAME)); if (bSave == 0) { nRet = BurnStateLoad(szName, bDrvSaveAll, NULL); // Load ram if (nRet && bDrvSaveAll) { nRet = BurnStateLoad(szName, 0, NULL); // Couldn't get all - okay just try the nvram } } else { nRet = BurnStateSave(szName, bDrvSaveAll); // Save ram } return nRet; #endif return 0; }
// The automatic save int StatedAuto(int bSave) { static TCHAR szName[512] = ""; int nRet; sprintf(szName, "%s/states/%s.fs", getDataPath(), BurnDrvGetText(DRV_NAME)); if (bSave == 0) { nRet = BurnStateLoad(szName, bDrvSaveAll, NULL); // Load ram if (nRet && bDrvSaveAll) { nRet = BurnStateLoad(szName, 0, NULL); // Couldn't get all - okay just try the nvram } } else { nRet = BurnStateSave(szName, bDrvSaveAll); // Save ram } return nRet; }
int StatedSave(int nSlot) { TCHAR szFilter[1024]; int nRet; int bOldPause; if (bDrvOkay == 0) { return 1; } if (nSlot) { CreateStateName(nSlot); } else { _stprintf(szChoice, _T("%s"), BurnDrvGetText(DRV_NAME)); MakeOfn(szFilter); ofn.lpstrTitle = FBALoadStringEx(hAppInst, IDS_STATE_SAVE, true); ofn.Flags |= OFN_OVERWRITEPROMPT; bOldPause = bRunPause; bRunPause = 1; nRet = GetSaveFileName(&ofn); bRunPause = bOldPause; if (nRet == 0) { // Error return 1; } } nRet = BurnStateSave(szChoice, 1); if (nRet && !nSlot) { FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_ERR_DISK_CREATE)); FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_DISK_STATE)); FBAPopupDisplay(PUF_TYPE_ERROR); } return nRet; }
int getPatchCount() { TCHAR szFilePathName[MAX_PATH]; _stprintf(szFilePathName, _T("%s%s\\"), getMiscPath(PATH_IPS), BurnDrvGetText(DRV_NAME)); if (szFilePathName[_tcslen(szFilePathName) -1] != _T('\\')) { _tcscat(szFilePathName, _T("\\")); } _tcscat(szFilePathName, _T("*.dat")); unsigned int count = 0; WIN32_FIND_DATA wfd; HANDLE hSearch = FindFirstFile(szFilePathName, &wfd); if (hSearch != INVALID_HANDLE_VALUE) { do { count++; } while (FindNextFile(hSearch, &wfd)); FindClose(hSearch); } return count; }
int scrnTitle() { TCHAR szText[1024] = _T(""); // Create window title if (bDrvOkay) { TCHAR* pszPosition = szText; TCHAR* pszName = transGameName(BurnDrvGetText(DRV_FULLNAME)); if (bShowFPS) { extern TCHAR fpsString[]; pszPosition += _sntprintf(szText, sizearray(szText), _T("%s"), pszName); _stprintf(pszPosition, _T(" ") _T("[") _T("%s") _T("]"), fpsString); } else { _stprintf(szText, _T("%s"), pszName); } } else { _stprintf(szText, _T(APP_TITLE) _T( " v%.20s"), szAppBurnVer); } SetWindowText(hScrnWnd, szText); return 0; }
static INT_PTR CALLBACK ProgressProc(HWND hDlg, UINT Msg, WPARAM /*wParam*/, LPARAM /*lParam*/) { if (Msg == WM_INITDIALOG) { TCHAR szText[128] = _T(""); hProgressDlg = hDlg; SendDlgItemMessage(hDlg, IDC_WAIT_PROG, PBM_SETRANGE32, nProgressMin, nProgressMax); _stprintf(szText, FBALoadStringEx(hAppInst, IDS_PROGRESS_LOADING, true), BurnDrvGetText(DRV_NAME)); SendDlgItemMessage(hDlg, IDC_WAIT_LABEL_B1, WM_SETTEXT, 0, (LPARAM)szText); ShowWindow(GetDlgItem(hDlg, IDC_WAIT_LABEL_B1), TRUE); ShowWindow(GetDlgItem(hDlg, IDC_WAIT_LABEL_B2), TRUE); WndInMid(hDlg, hScrnWnd); SetForegroundWindow(hDlg); SetWindowPos(hDlg, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); return TRUE; } return 0; }
// Init game emulation (loading any needed roms) extern "C" INT32 BurnDrvInit() { INT32 nReturnValue; if (nBurnDrvActive >= nBurnDrvCount) { return 1; } #if defined (FBA_DEBUG) { TCHAR szText[1024] = _T(""); TCHAR* pszPosition = szText; TCHAR* pszName = BurnDrvGetText(DRV_FULLNAME); INT32 nName = 1; while ((pszName = BurnDrvGetText(DRV_NEXTNAME | DRV_FULLNAME)) != NULL) { nName++; } // Print the title bprintf(PRINT_IMPORTANT, _T("*** Starting emulation of %s - %s.\n"), BurnDrvGetText(DRV_NAME), BurnDrvGetText(DRV_FULLNAME)); // Then print the alternative titles if (nName > 1) { bprintf(PRINT_IMPORTANT, _T(" Alternative %s "), (nName > 2) ? _T("titles are") : _T("title is")); pszName = BurnDrvGetText(DRV_FULLNAME); nName = 1; while ((pszName = BurnDrvGetText(DRV_NEXTNAME | DRV_FULLNAME)) != NULL) { if (pszPosition + _tcslen(pszName) - 1022 > szText) { break; } if (nName > 1) { bprintf(PRINT_IMPORTANT, _T(SEPERATOR_1)); } bprintf(PRINT_IMPORTANT, _T("%s"), pszName); nName++; } bprintf(PRINT_IMPORTANT, _T(".\n")); } } #endif BurnSetRefreshRate(60.0); CheatInit(); HiscoreInit(); BurnStateInit(); BurnInitMemoryManager(); nReturnValue = pDriver[nBurnDrvActive]->Init(); // Forward to drivers function nMaxPlayers = pDriver[nBurnDrvActive]->Players; #if defined (FBA_DEBUG) if (!nReturnValue) { starttime = clock(); nFramesEmulated = 0; nFramesRendered = 0; nCurrentFrame = 0; } else { starttime = 0; } #endif return nReturnValue; }
// Write out the config file for the game-specific inputs int ConfigGameSave(bool bSave) { FILE* h; if (!bSave) { GameInpBlank(0); ConfigGameLoad(false); } h = _tfopen(GameConfigName(), _T("wt")); if (h == NULL) { return 1; } // Write title _ftprintf(h, _T("// ") _T(APP_TITLE) _T(" v%s --- Config File for %s (%s)\n\n"), szAppBurnVer, BurnDrvGetText(DRV_NAME), BurnDrvGetText(DRV_FULLNAME)); _ftprintf(h, _T("// --- Miscellaneous ----------------------------------------------------------\n\n")); // Write version number _ftprintf(h, _T("version 0x%06X\n\n"), nBurnVer); // Write speed for relative analog controls _ftprintf(h, _T("analog 0x%04X\n"), nAnalogSpeed); // Write CPU speed adjustment _ftprintf(h, _T("cpu 0x%04X\n"), nBurnCPUSpeedAdjust); _ftprintf(h, _T("\n\n\n")); _ftprintf(h, _T("// --- Inputs -----------------------------------------------------------------\n\n")); GameInpWrite(h); fclose(h); return 0; }