Example #1
0
int GetPatchFilename(WCHAR *patch_name, const WCHAR *game_name, const int patch_index)
{
	WIN32_FIND_DATAW ffd;
	HANDLE hFile;
	WCHAR szFilename[MAX_PATH];

	swprintf(szFilename, TEXT("%s\\%s\\*.dat"), GetIPSDir(), game_name);
	hFile = FindFirstFileW(szFilename, &ffd);
	if (hFile != INVALID_HANDLE_VALUE)
	{
		int Done = 0;
		int Count = 0;

		while (!Done )
		{
			if (Count == patch_index)
			{
				wcscpy(patch_name, ffd.cFileName);
				patch_name[wcslen(patch_name) - 4] = '\0';	// To trim the ext ".dat"
				break;
			}
			Count++;
			Done = !FindNextFileW(hFile, &ffd);
		}
		FindClose(hFile);
		return -1;
	}
	return 0;
}
Example #2
0
int GetPatchCount(const WCHAR *game_name, const WCHAR *patch_name)
{
	int Count = 0;

	if (game_name && patch_name)
	{
		WCHAR szFilename[MAX_PATH];
		WIN32_FIND_DATAW ffd;
		HANDLE hFile;

		swprintf(szFilename, TEXT("%s\\%s\\%s.dat"), GetIPSDir(), game_name, patch_name);
		hFile = FindFirstFileW(szFilename, &ffd);
		if (hFile != INVALID_HANDLE_VALUE)
		{
			int Done = 0;

			while (!Done)
			{
				Count++;
				Done = !FindNextFileW(hFile, &ffd);
			}
			FindClose(hFile);
		}
	}
	return Count;
}
Example #3
0
LPWSTR GetPatchDesc(const WCHAR *game_name, const WCHAR *patch_name)
{
	FILE *fp;
	LPWSTR desc = NULL;
	WCHAR szFilename[MAX_PATH];

	swprintf(szFilename, TEXT("%s\\%s\\%s.dat"), GetIPSDir(), game_name, patch_name);

	if ((fp = wfopen(szFilename, TEXT("r"))) != NULL)
	{
		/* Get localized desc */
		desc = GetPatchDescByLangcode(fp, GetLangcode());

		/* Get English desc if localized version is not found */
		if (desc == NULL)
			desc = GetPatchDescByLangcode(fp, UI_LANG_EN_US);

		fclose(fp);
	}

	return desc;
}
Example #4
0
BOOL LoadDIB(const WCHAR *filename, HGLOBAL *phDIB, HPALETTE *pPal, int pic_type)
{
	file_error filerr;
	core_file *file = NULL;
	BOOL success = FALSE;
	const WCHAR *zip_name;
	const WCHAR *dir_name;
	void *buffer = NULL;
	char *utf8filename;
	char *utf8zip_name;
	char *utf8dir_name;
	if (pPal != NULL ) {
		DeletePalette(pPal);
	}

	switch (pic_type)
	{
	case TAB_SCREENSHOT :
		dir_name = GetImgDir();
		zip_name = TEXT("snap");
		break;
	case TAB_FLYER :
		dir_name = GetFlyerDir();
		zip_name = TEXT("flyers");
		break;
	case TAB_CABINET :
		dir_name = GetCabinetDir();
		zip_name = TEXT("cabinets");
		break;
	case TAB_MARQUEE :
		dir_name = GetMarqueeDir();
		zip_name = TEXT( "marquees");
		break;
	case TAB_TITLE :
		dir_name = GetTitlesDir();
		zip_name = TEXT("titles");
		break;
	case TAB_CONTROL_PANEL :
		dir_name = GetControlPanelDir();
		zip_name = TEXT("cpanel");
		break;
        case TAB_PCB :
		dir_name = GetPcbDir();
		zip_name = TEXT("pcb");
		break;
	case BACKGROUND :
		dir_name = GetBgDir();
		zip_name = TEXT("bkground");
		break;
#ifdef USE_IPS
	case TAB_IPS :
		dir_name = GetIPSDir();
		zip_name = TEXT("ips");
		break;
#endif /* USE_IPS */
	default :
		// in case a non-image tab gets here, which can happen
		return FALSE;
	}

	utf8filename = utf8_from_wstring(filename);
	utf8zip_name = utf8_from_wstring(zip_name);
	utf8dir_name = utf8_from_wstring(dir_name);

	//Add handling for the displaying of all the different supported snapshot patterntypes
	//%g
	astring fname(utf8filename, ".png");
	filerr = OpenDIBFile(utf8dir_name, utf8zip_name, fname, &file, &buffer);
	if (filerr != FILERR_NONE)
	{
		//%g/%i
		astring fname(utf8filename, PATH_SEPARATOR, "0000.png");
		filerr = OpenDIBFile(utf8dir_name, utf8zip_name, fname, &file, &buffer);
	}
	if (filerr != FILERR_NONE)
	{
		//%g%i
		astring fname(utf8filename, "0000.png");
		filerr = OpenDIBFile(utf8dir_name, utf8zip_name, fname, &file, &buffer);
	}
	if (filerr != FILERR_NONE)
	{
		//%g/%g
		astring fname(utf8filename, PATH_SEPARATOR, utf8filename, ".png");
		filerr = OpenDIBFile(utf8dir_name, utf8zip_name, fname, &file, &buffer);
	}
	if (filerr != FILERR_NONE)
	{
		//%g/%g%i
		astring fname(utf8filename, PATH_SEPARATOR, utf8filename, ".png");
		filerr = OpenDIBFile(utf8dir_name, utf8zip_name, fname, &file, &buffer);
	}

	if (filerr == FILERR_NONE)
	{
		success = png_read_bitmap_gui(file, phDIB, pPal);
		core_fclose(file);
	}

	// free the buffer if we have to
	if (buffer != NULL)
	{
		free(buffer);
	}

	osd_free(utf8filename);
	osd_free(utf8zip_name);
	osd_free(utf8dir_name);

	return success;
}