Example #1
0
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;
}
Example #2
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;
}
Example #3
0
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;
}
Example #4
0
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);
	}
}
Example #5
0
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;
}
Example #6
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;
}
Example #7
0
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);
	}
}
Example #8
0
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;
}
Example #9
0
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;
}
Example #10
0
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;
}
Example #11
0
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;
}
Example #12
0
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);
}
Example #13
0
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;
}
Example #14
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;
}
Example #15
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)) );
		}
	}
}
Example #16
0
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;
}
Example #17
0
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());
	}
}
Example #18
0
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;
	}
}
Example #19
0
// 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;
}
Example #20
0
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;
}
Example #21
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;
}
Example #22
0
// 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	
}
Example #23
0
// 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;
}
Example #24
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;
}
Example #25
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("%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;
}
Example #26
0
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;
}
Example #27
0
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;
}
Example #28
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;
}
Example #29
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;
}
Example #30
0
// 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;
}