Improve hardware filtering in sel.cpp

This commit is contained in:
Barry Harris 2011-12-28 21:20:07 +00:00
parent 101b9ee478
commit d154b269b1
2 changed files with 59 additions and 50 deletions

View File

@ -297,24 +297,24 @@ void IpsApplyPatches(UINT8* base, char* rom_name);
#define HARDWARE_PREFIX_CARTRIDGE (0x80000000)
#define HARDWARE_PREFIX_MISC_PRE90S (0x00000000)
#define HARDWARE_PREFIX_CAPCOM (0x01000000)
#define HARDWARE_PREFIX_SEGA (0x02000000)
#define HARDWARE_PREFIX_KONAMI (0x03000000)
#define HARDWARE_PREFIX_TOAPLAN (0x04000000)
#define HARDWARE_PREFIX_SNK (0x05000000)
#define HARDWARE_PREFIX_CAVE (0x06000000)
#define HARDWARE_PREFIX_CPS2 (0x07000000)
#define HARDWARE_PREFIX_IGS_PGM (0x08000000)
#define HARDWARE_PREFIX_CPS3 (0x09000000)
#define HARDWARE_PREFIX_MISC_POST90S (0x0a000000)
#define HARDWARE_PREFIX_TAITO (0x0b000000)
#define HARDWARE_PREFIX_SEGA_MEGADRIVE (0x0c000000)
#define HARDWARE_PREFIX_PSIKYO (0x0d000000)
//#define HARDWARE_PREFIX_KANEKO16 (0x0e000000) // spare
#define HARDWARE_PREFIX_PACMAN (0x0f000000)
#define HARDWARE_PREFIX_GALAXIAN (0x10000000)
#define HARDWARE_PREFIX_IREM (0x20000000)
#define HARDWARE_PREFIX_MISC_PRE90S (0x01000000)
#define HARDWARE_PREFIX_CAPCOM (0x02000000)
#define HARDWARE_PREFIX_SEGA (0x03000000)
#define HARDWARE_PREFIX_KONAMI (0x04000000)
#define HARDWARE_PREFIX_TOAPLAN (0x05000000)
#define HARDWARE_PREFIX_SNK (0x06000000)
#define HARDWARE_PREFIX_CAVE (0x07000000)
#define HARDWARE_PREFIX_CPS2 (0x08000000)
#define HARDWARE_PREFIX_IGS_PGM (0x09000000)
#define HARDWARE_PREFIX_CPS3 (0x0a000000)
#define HARDWARE_PREFIX_MISC_POST90S (0x0b000000)
#define HARDWARE_PREFIX_TAITO (0x0c000000)
#define HARDWARE_PREFIX_SEGA_MEGADRIVE (0x0d000000)
#define HARDWARE_PREFIX_PSIKYO (0x0e000000)
//#define HARDWARE_PREFIX_KANEKO16 (0x0f000000) // spare
#define HARDWARE_PREFIX_PACMAN (0x10000000)
#define HARDWARE_PREFIX_GALAXIAN (0x11000000)
#define HARDWARE_PREFIX_IREM (0x12000000)
#define HARDWARE_MISC_PRE90S (HARDWARE_PREFIX_MISC_PRE90S)
#define HARDWARE_MISC_POST90S (HARDWARE_PREFIX_MISC_POST90S)

View File

@ -114,29 +114,46 @@ HTREEITEM hHardware = NULL;
#define DISABLE_NON_AVAILABLE_SELECT 0 // Disable selecting non-available sets
#define NON_WORKING_PROMPT_ON_LOAD 1 // Prompt user on loading non-working sets
#define MASKCPS (1 << (HARDWARE_PREFIX_CAPCOM >> 24))
#define MASKCPS2 (1 << (HARDWARE_PREFIX_CPS2 >> 24))
#define MASKCPS3 (1 << (HARDWARE_PREFIX_CPS3 >> 24))
#define MASKNEOGEO (1 << (HARDWARE_PREFIX_SNK >> 24))
#define MASKSEGA (1 << (HARDWARE_PREFIX_SEGA >> 24))
#define MASKTOAPLAN (1 << (HARDWARE_PREFIX_TOAPLAN >> 24))
#define MASKCAVE (1 << (HARDWARE_PREFIX_CAVE >> 24))
#define MASKPGM (1 << (HARDWARE_PREFIX_IGS_PGM >> 24))
#define MASKMEGADRIVE (1 << (HARDWARE_PREFIX_SEGA_MEGADRIVE >> 24))
#define MASKTAITO (1 << (HARDWARE_PREFIX_TAITO >> 24))
#define MASKPSIKYO (1 << (HARDWARE_PREFIX_PSIKYO >> 24))
#define MASKKONAMI (1 << (HARDWARE_PREFIX_KONAMI >> 24))
#define MASKPACMAN (1 << (HARDWARE_PREFIX_PACMAN >> 24))
#define MASKGALAXIAN (1 << (HARDWARE_PREFIX_GALAXIAN >> 24))
#define MASKIREM (0x1000 * (HARDWARE_PREFIX_IREM >> 24))
#define MASKMISCPRE90S (1 << (HARDWARE_PREFIX_MISC_PRE90S >> 24))
#define MASKMISCPOST90S (1 << (HARDWARE_PREFIX_MISC_POST90S >> 24))
#define MASKALL (MASKCPS | MASKCPS2 | MASKCPS3 | MASKNEOGEO | MASKSEGA | MASKTOAPLAN | MASKCAVE | MASKPGM | MASKTAITO | MASKPSIKYO | MASKKONAMI | MASKPACMAN | MASKGALAXIAN | MASKIREM | MASKMEGADRIVE | MASKMISCPRE90S | MASKMISCPOST90S)
static int CpsValue = HARDWARE_PREFIX_CAPCOM >> 24;
static int MASKCPS = 1 << CpsValue;
static int Cps2Value = HARDWARE_PREFIX_CPS2 >> 24;
static int MASKCPS2 = 1 << Cps2Value;
static int Cps3Value = HARDWARE_PREFIX_CPS3 >> 24;
static int MASKCPS3 = 1 << Cps3Value;
static int NeogeoValue = HARDWARE_PREFIX_SNK >> 24;
static int MASKNEOGEO = 1 << NeogeoValue;
static int SegaValue = HARDWARE_PREFIX_SEGA >> 24;
static int MASKSEGA = 1 << SegaValue;
static int ToaplanValue = HARDWARE_PREFIX_TOAPLAN >> 24;
static int MASKTOAPLAN = 1 << ToaplanValue;
static int CaveValue = HARDWARE_PREFIX_CAVE >> 24;
static int MASKCAVE = 1 << CaveValue;
static int PgmValue = HARDWARE_PREFIX_IGS_PGM >> 24;
static int MASKPGM = 1 << PgmValue;
static int MegadriveValue = HARDWARE_PREFIX_SEGA_MEGADRIVE >> 24;
static int MASKMEGADRIVE = 1 << MegadriveValue;
static int TaitoValue = HARDWARE_PREFIX_TAITO >> 24;
static int MASKTAITO = 1 << TaitoValue;
static int PsikyoValue = HARDWARE_PREFIX_PSIKYO >> 24;
static int MASKPSIKYO = 1 << PsikyoValue;
static int KonamiValue = HARDWARE_PREFIX_KONAMI >> 24;
static int MASKKONAMI = 1 << KonamiValue;
static int PacmanValue = HARDWARE_PREFIX_PACMAN >> 24;
static int MASKPACMAN = 1 << PacmanValue;
static int GalaxianValue = HARDWARE_PREFIX_GALAXIAN >> 24;
static int MASKGALAXIAN = 1 << GalaxianValue;
static int IremValue = HARDWARE_PREFIX_IREM >> 24;
static int MASKIREM = 1 << IremValue;
static int MiscPre90sValue = HARDWARE_PREFIX_MISC_PRE90S >> 24;
static int MASKMISCPRE90S = 1 << MiscPre90sValue;
static int MiscPost90sValue = HARDWARE_PREFIX_MISC_POST90S >> 24;
static int MASKMISCPOST90S = 1 << MiscPost90sValue;
static int MASKALL = MASKCPS | MASKCPS2 | MASKCPS3 | MASKNEOGEO | MASKSEGA | MASKTOAPLAN | MASKCAVE | MASKPGM | MASKTAITO | MASKPSIKYO | MASKKONAMI | MASKPACMAN | MASKGALAXIAN | MASKIREM | MASKMEGADRIVE | MASKMISCPRE90S | MASKMISCPOST90S;
#define AVAILONLY (1 << 18)
#define AUTOEXPAND (1 << 19)
#define SHOWSHORT (1 << 20)
#define ASCIIONLY (1 << 21)
#define AVAILONLY (1 << 24)
#define AUTOEXPAND (1 << 25)
#define SHOWSHORT (1 << 26)
#define ASCIIONLY (1 << 27)
#define MASKBOARDTYPEGENUINE (1)
#define MASKFAMILYOTHER 0x10000000
@ -278,7 +295,7 @@ static int SelListMake()
{
unsigned int i, j;
unsigned int nMissingDrvCount = 0;
if (nBurnDrv) {
free(nBurnDrv);
nBurnDrv = NULL;
@ -306,12 +323,8 @@ static int SelListMake()
if (BurnDrvGetText(DRV_PARENT) != NULL && (BurnDrvGetFlags() & BDF_CLONE)) { // Skip clones
continue;
}
//if (avOk && (nLoadMenuShowX & AVAILONLY) && !gameAv[i]) { // Skip non-available games if needed
// continue;
//}
int nHardware = 1 << (BurnDrvGetHardwareCode() >> 24);
if ((BurnDrvGetHardwareCode() >> 24) == (HARDWARE_PREFIX_IREM >> 24)) nHardware = MASKIREM;
if ((nHardware & MASKALL) && ((nHardware & nLoadMenuShowX) || (nHardware & MASKALL) == 0)) {
continue;
}
@ -365,12 +378,8 @@ static int SelListMake()
if (BurnDrvGetTextA(DRV_PARENT) == NULL || !(BurnDrvGetFlags() & BDF_CLONE)) { // Skip parents
continue;
}
//if (avOk && (nLoadMenuShowX & AVAILONLY) && !gameAv[i]) { // Skip non-available games if needed
// continue;
//}
int nHardware = 1 << (BurnDrvGetHardwareCode() >> 24);
if ((BurnDrvGetHardwareCode() >> 24) == (HARDWARE_PREFIX_IREM >> 24)) nHardware = MASKIREM;
if ((nHardware & MASKALL) && ((nHardware & nLoadMenuShowX) || ((nHardware & MASKALL) == 0))) {
continue;
}
@ -1053,7 +1062,7 @@ static INT_PTR CALLBACK DialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lP
_TreeView_SetCheckState(hFilterList, hFilterMiscPost90s, TRUE);
_TreeView_SetCheckState(hFilterList, hFilterMegadrive, TRUE);
nLoadMenuShowX &= 0xfffc0000;
nLoadMenuShowX &= 0xff000000;
}
}