diff --git a/makefile.libretro b/makefile.libretro index 444a900..d426c71 100755 --- a/makefile.libretro +++ b/makefile.libretro @@ -44,7 +44,7 @@ GRIFFIN_DIR = griffin-libretro # TARGET TARGET_NAME := fbalpha2012_neogeo -FBA_DEFINES += -DTARGET=\"\ Neo\ Geo\" -DNEOGEO_ONLY +FBA_DEFINES += -DTARGET=\"\ Neo\ Geo\" SPACE := SPACE := $(SPACE) $(SPACE) diff --git a/src/burn/bitswap.h b/src/burn/bitswap.h index cfe0133..6032529 100644 --- a/src/burn/bitswap.h +++ b/src/burn/bitswap.h @@ -101,21 +101,4 @@ #define BIT(x,n) (((x)>>(n))&1) -/* ----- macros for accessing bytes and words within larger chunks ----- */ -#ifdef MSB_FIRST - #define BYTE_XOR_BE(a) (a) - #define BYTE_XOR_LE(a) ((a) ^ 1) /* read/write a byte to a 16-bit space */ - #define BYTE4_XOR_BE(a) (a) - #define BYTE4_XOR_LE(a) ((a) ^ 3) /* read/write a byte to a 32-bit space */ - #define WORD_XOR_BE(a) (a) - #define WORD_XOR_LE(a) ((a) ^ 2) /* read/write a word to a 32-bit space */ -#else - #define BYTE_XOR_BE(a) ((a) ^ 1) /* read/write a byte to a 16-bit space */ - #define BYTE_XOR_LE(a) (a) - #define BYTE4_XOR_BE(a) ((a) ^ 3) /* read/write a byte to a 32-bit space */ - #define BYTE4_XOR_LE(a) (a) - #define WORD_XOR_BE(a) ((a) ^ 2) /* read/write a word to a 32-bit space */ - #define WORD_XOR_LE(a) (a) -#endif - #endif diff --git a/src/burn/burn.cpp b/src/burn/burn.cpp index 2b401c1..4621edd 100644 --- a/src/burn/burn.cpp +++ b/src/burn/burn.cpp @@ -19,7 +19,6 @@ bool bBurnUseASMCPUEmulation = false; UINT32 nCurrentFrame; // Framecount for emulated game -bool bForce60Hz = false; INT32 nBurnFPS = 6000; INT32 nBurnCPUSpeedAdjust = 0x0100; // CPU speed adjustment (clock * nBurnCPUSpeedAdjust / 0x0100) @@ -119,7 +118,6 @@ INT32 BurnGetZipName(char** pszName, UINT32 i) // ---------------------------------------------------------------------------- // Static functions which forward to each driver's data and functions -INT32 BurnStateMAMEScan(INT32 nAction, INT32* pnMin); void BurnStateExit(); INT32 BurnStateInit(); @@ -539,45 +537,8 @@ extern "C" INT32 BurnDrvInit() { INT32 nReturnValue; - if (nBurnDrvActive >= nBurnDrvCount) { + 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); @@ -604,10 +565,6 @@ extern "C" INT32 BurnDrvExit() INT32 nRet = pDriver[nBurnDrvActive]->Exit(); // Forward to drivers function BurnExitMemoryManager(); -#if defined FBA_DEBUG - DebugTrackerExit(); -#endif - return nRet; } @@ -615,31 +572,22 @@ INT32 (__cdecl* BurnExtCartridgeSetupCallback)(BurnCartrigeCommand nCommand) = N INT32 BurnDrvCartridgeSetup(BurnCartrigeCommand nCommand) { - if (nBurnDrvActive >= nBurnDrvCount || BurnExtCartridgeSetupCallback == NULL) { + if (nBurnDrvActive >= nBurnDrvCount || BurnExtCartridgeSetupCallback == NULL) return 1; - } - if (nCommand == CART_EXIT) { + if (nCommand == CART_EXIT) return pDriver[nBurnDrvActive]->Exit(); - } - if (nCommand != CART_INIT_END && nCommand != CART_INIT_START) { + if (nCommand != CART_INIT_END && nCommand != CART_INIT_START) return 1; - } BurnExtCartridgeSetupCallback(CART_INIT_END); -#if defined FBA_DEBUG - bprintf(PRINT_NORMAL, _T(" * Loading")); -#endif - - if (BurnExtCartridgeSetupCallback(CART_INIT_START)) { + if (BurnExtCartridgeSetupCallback(CART_INIT_START)) return 1; - } - if (nCommand == CART_INIT_START) { + if (nCommand == CART_INIT_START) return pDriver[nBurnDrvActive]->Init(); - } return 0; } @@ -690,10 +638,7 @@ INT32 BurnUpdateProgress(double fProgress, const TCHAR* pszText, bool bAbs) INT32 BurnSetRefreshRate(double dFrameRate) { - if (!bForce60Hz) { - nBurnFPS = (INT32)(100.0 * dFrameRate); - } - + nBurnFPS = (INT32)(100.0 * dFrameRate); return 0; } @@ -724,48 +669,10 @@ UINT32 (__cdecl *BurnHighCol) (INT32 r, INT32 g, INT32 b, INT32 i) = BurnHighCol static INT32 __cdecl DefAcb (struct BurnArea* /* pba */) { return 1; } INT32 (__cdecl *BurnAcb) (struct BurnArea* pba) = DefAcb; -// Scan driver data -INT32 BurnAreaScan(INT32 nAction, INT32* pnMin) -{ - INT32 nRet = 0; - - // Handle any MAME-style variables - if (nAction & ACB_DRIVER_DATA) { - nRet = BurnStateMAMEScan(nAction, pnMin); - } - - // Forward to the driver - if (pDriver[nBurnDrvActive]->AreaScan) { - nRet |= pDriver[nBurnDrvActive]->AreaScan(nAction, pnMin); - } - - return nRet; -} - // ---------------------------------------------------------------------------- // Wrappers for MAME-specific function calls - #include "driver.h" -// ---------------------------------------------------------------------------- -// Wrapper for MAME logerror calls - -#if defined (FBA_DEBUG) && defined (MAME_USE_LOGERROR) -void logerror(char* szFormat, ...) -{ - static char szLogMessage[1024]; - - va_list vaFormat; - va_start(vaFormat, szFormat); - - _vsnprintf(szLogMessage, 1024, szFormat, vaFormat); - - va_end(vaFormat); - - bprintf(PRINT_ERROR, _T("%hs"), szLogMessage); -} -#endif - // ---------------------------------------------------------------------------- // Wrapper for MAME state_save_register_* calls @@ -775,21 +682,68 @@ static BurnStateEntry* pStateEntryAnchor = NULL; typedef void (*BurnPostloadFunction)(); static BurnPostloadFunction BurnPostload[8]; +static INT32 BurnStateMAMEScan(INT32 nAction, INT32* pnMin) +{ + if (nAction & ACB_VOLATILE) + { + if (pnMin && *pnMin < 0x029418) // Return minimum compatible version + *pnMin = 0x029418; + + if (pStateEntryAnchor) + { + struct BurnArea ba; + BurnStateEntry* pCurrentEntry = pStateEntryAnchor; + + do { + ba.Data = pCurrentEntry->pValue; + ba.nLen = pCurrentEntry->nSize; + ba.nAddress = 0; + ba.szName = pCurrentEntry->szName; + BurnAcb(&ba); + + } while ((pCurrentEntry = pCurrentEntry->pNext) != 0); + } + + if (nAction & ACB_WRITE) + { + for (INT32 i = 0; i < 8; i++) + { + if (BurnPostload[i]) + BurnPostload[i](); + } + } + } + + return 0; +} + + +// Scan driver data +INT32 BurnAreaScan(INT32 nAction, INT32* pnMin) +{ + INT32 nRet = 0; + // Handle any MAME-style variables + if (nAction & ACB_DRIVER_DATA) + nRet = BurnStateMAMEScan(nAction, pnMin); + // Forward to the driver + if (pDriver[nBurnDrvActive]->AreaScan) + nRet |= pDriver[nBurnDrvActive]->AreaScan(nAction, pnMin); + return nRet; +} + static void BurnStateRegister(const char* module, INT32 instance, const char* name, void* val, UINT32 size) { // Allocate new node BurnStateEntry* pNewEntry = (BurnStateEntry*)malloc(sizeof(BurnStateEntry)); - if (pNewEntry == NULL) { + if (pNewEntry == NULL) return; - } memset(pNewEntry, 0, sizeof(BurnStateEntry)); // Link the new node pNewEntry->pNext = pStateEntryAnchor; - if (pStateEntryAnchor) { + if (pStateEntryAnchor) pStateEntryAnchor->pPrev = pNewEntry; - } pStateEntryAnchor = pNewEntry; sprintf(pNewEntry->szName, "%s:%s %i", module, name, instance); @@ -798,74 +752,41 @@ static void BurnStateRegister(const char* module, INT32 instance, const char* na pNewEntry->nSize = size; } -void BurnStateExit() +void BurnStateExit(void) { - if (pStateEntryAnchor) { - BurnStateEntry* pCurrentEntry = pStateEntryAnchor; - BurnStateEntry* pNextEntry; + if (pStateEntryAnchor) + { + BurnStateEntry* pCurrentEntry = pStateEntryAnchor; + BurnStateEntry* pNextEntry; - do { - pNextEntry = pCurrentEntry->pNext; - if (pCurrentEntry) { - free(pCurrentEntry); - } - } while ((pCurrentEntry = pNextEntry) != 0); - } + do { + pNextEntry = pCurrentEntry->pNext; + if (pCurrentEntry) + free(pCurrentEntry); + } while ((pCurrentEntry = pNextEntry) != 0); + } pStateEntryAnchor = NULL; - for (INT32 i = 0; i < 8; i++) { + for (INT32 i = 0; i < 8; i++) BurnPostload[i] = NULL; - } } -INT32 BurnStateInit() +INT32 BurnStateInit(void) { BurnStateExit(); return 0; } -INT32 BurnStateMAMEScan(INT32 nAction, INT32* pnMin) -{ - if (nAction & ACB_VOLATILE) { - - if (pnMin && *pnMin < 0x029418) { // Return minimum compatible version - *pnMin = 0x029418; - } - - if (pStateEntryAnchor) { - struct BurnArea ba; - BurnStateEntry* pCurrentEntry = pStateEntryAnchor; - - do { - ba.Data = pCurrentEntry->pValue; - ba.nLen = pCurrentEntry->nSize; - ba.nAddress = 0; - ba.szName = pCurrentEntry->szName; - BurnAcb(&ba); - - } while ((pCurrentEntry = pCurrentEntry->pNext) != 0); - } - - if (nAction & ACB_WRITE) { - for (INT32 i = 0; i < 8; i++) { - if (BurnPostload[i]) { - BurnPostload[i](); - } - } - } - } - - return 0; -} - // wrapper functions extern "C" void state_save_register_func_postload(void (*pFunction)()) { - for (INT32 i = 0; i < 8; i++) { - if (BurnPostload[i] == NULL) { + for (INT32 i = 0; i < 8; i++) + { + if (BurnPostload[i] == NULL) + { BurnPostload[i] = pFunction; break; } diff --git a/src/burn/burn.h b/src/burn/burn.h index be9c578..0b02610 100644 --- a/src/burn/burn.h +++ b/src/burn/burn.h @@ -26,47 +26,6 @@ #include -extern TCHAR szAppSamplesPath[MAX_PATH]; - -// Enable the MAME logerror() function in debug builds -// #define MAME_USE_LOGERROR - -// Give access to the CPUID function for various compilers -#if defined (__GNUC__) - #define CPUID(f,ra,rb,rc,rd) __asm__ __volatile__ ("cpuid" \ - : "=a" (ra), "=b" (rb), "=c" (rc), "=d" (rd) \ - : "a" (f) \ - ); -#elif defined (_MSC_VER) - #define CPUID(f,ra,rb,rc,rd) __asm { __asm mov eax, f \ - __asm cpuid \ - __asm mov ra, eax \ - __asm mov rb, ebx \ - __asm mov rc, ecx \ - __asm mov rd, edx } -#else - #define CPUID(f,ra,rb,rc,rd) -#endif - -#ifndef BUILD_X86_ASM - #undef CPUID - #define CPUID(f,ra,rb,rc,rd) -#endif - -#ifdef _UNICODE - #define SEPERATOR_1 " \u2022 " - #define SEPERATOR_2 " \u25E6 " -#else - #define SEPERATOR_1 " ~ " - #define SEPERATOR_2 " ~ " -#endif - -#ifdef _UNICODE - #define WRITE_UNICODE_BOM(file) { UINT16 BOM[] = { 0xFEFF }; fwrite(BOM, 2, 1, file); } -#else - #define WRITE_UNICODE_BOM(file) -#endif - typedef unsigned char UINT8; typedef signed char INT8; typedef unsigned short UINT16; @@ -175,8 +134,6 @@ struct BurnDIPInfo { extern bool bBurnUseASMCPUEmulation; -extern bool bForce60Hz; - extern INT32 nBurnFPS; extern INT32 nBurnCPUSpeedAdjust; @@ -206,10 +163,6 @@ extern INT32 nFMInterpolation; // Desired interpolation level for FM sound #define PRINT_IMPORTANT (2) #define PRINT_ERROR (3) -#ifndef bprintf -extern INT32 (__cdecl *bprintf) (INT32 nStatus, TCHAR* szFormat, ...); -#endif - INT32 BurnLibInit(); INT32 BurnLibExit(); @@ -267,9 +220,6 @@ INT32 BurnDrvGetFamilyFlags(); INT32 BurnDrvGetSampleInfo(struct BurnSampleInfo *pri, UINT32 i); INT32 BurnDrvGetSampleName(char** pszName, UINT32 i, INT32 nAka); -extern bool bDoIpsPatch; -void IpsApplyPatches(UINT8* base, char* rom_name); - // --------------------------------------------------------------------------- // Flags used with the Burndriver structure diff --git a/src/burn/devices/eeprom.cpp b/src/burn/devices/eeprom.cpp index adec79a..1834224 100644 --- a/src/burn/devices/eeprom.cpp +++ b/src/burn/devices/eeprom.cpp @@ -50,10 +50,16 @@ static INT32 eeprom_command_match(const char *buf, const char *cmd, INT32 len) { case '0': case '1': - if (b == c) { cmd++; } - else { buf++; len--; } + if (b == c) + cmd++; + else + { + buf++; + len--; + } break; - default: return 0; + default: + return 0; } } } @@ -67,67 +73,57 @@ INT32 EEPROMAvailable(void) void EEPROMInit(const eeprom_interface *interface) { - intf = interface; - - if ((1 << intf->address_bits) * intf->data_bits / 8 > MEMORY_SIZE) - { - bprintf(0, _T("EEPROM larger than eeprom allows")); - } + char output[128]; +#ifdef _WIN32 + char slash = '\\'; +#else + char slash = '/'; +#endif + intf = interface; memset(eeprom_data,0xff,(1 << intf->address_bits) * intf->data_bits / 8); - serial_count = 0; - latch = 0; - reset_line = EEPROM_ASSERT_LINE; - clock_line = EEPROM_ASSERT_LINE; + serial_count = 0; + latch = 0; + reset_line = EEPROM_ASSERT_LINE; + clock_line = EEPROM_ASSERT_LINE; eeprom_read_address = 0; - sending = 0; - if (intf->cmd_unlock) locked = 1; - else locked = 0; - - char output[128]; -#ifdef __LIBRETRO__ -#ifdef _WIN32 - char slash = '\\'; -#else - char slash = '/'; -#endif + sending = 0; + if (intf->cmd_unlock) + locked = 1; + else + locked = 0; snprintf (output, sizeof(output), "%s%c%s.nv", g_save_dir, slash, BurnDrvGetTextA(DRV_NAME)); -#else - snprintf (output, sizeof(output), "config/games/%s.nv", BurnDrvGetTextA(DRV_NAME)); -#endif - neeprom_available = 0; + neeprom_available = 0; INT32 len = ((1 << intf->address_bits) * (intf->data_bits >> 3)) & (MEMORY_SIZE-1); FILE *fz = fopen(output, "rb"); - if (fz != NULL) { + if (fz != NULL) + { neeprom_available = 1; fread (eeprom_data, len, 1, fz); fclose (fz); } } -void EEPROMExit() +void EEPROMExit(void) { char output[128]; -#ifdef __LIBRETRO__ #ifdef _WIN32 char slash = '\\'; #else char slash = '/'; #endif snprintf (output, sizeof(output), "%s%c%s.nv", g_save_dir, slash, BurnDrvGetTextA(DRV_NAME)); -#else - snprintf (output, sizeof(output), "config/games/%s.nv", BurnDrvGetTextA(DRV_NAME)); -#endif neeprom_available = 0; INT32 len = ((1 << intf->address_bits) * (intf->data_bits >> 3)) & (MEMORY_SIZE-1); FILE *fz = fopen(output, "wb"); - if (fz) { + if (fz) + { fwrite (eeprom_data, len, 1, fz); fclose (fz); } @@ -136,10 +132,7 @@ void EEPROMExit() static void eeprom_write(INT32 bit) { if (serial_count >= SERIAL_BUFFER_LENGTH-1) - { - bprintf(0, _T("error: EEPROM serial buffer overflow\n")); return; - } serial_buffer[serial_count++] = (bit ? '1' : '0'); serial_buffer[serial_count] = 0; @@ -310,11 +303,10 @@ void EEPROMScan(INT32 nAction, INT32* pnMin) { struct BurnArea ba; - if (nAction & ACB_DRIVER_DATA) { - - if (pnMin && *pnMin < 0x020902) { + if (nAction & ACB_DRIVER_DATA) + { + if (pnMin && *pnMin < 0x020902) *pnMin = 0x029705; - } memset(&ba, 0, sizeof(ba)); ba.Data = serial_buffer; @@ -333,17 +325,4 @@ void EEPROMScan(INT32 nAction, INT32* pnMin) SCAN_VAR(locked); SCAN_VAR(reset_delay); } - -// if (nAction & ACB_NVRAM) { -// -// if (pnMin && (nAction & ACB_TYPEMASK) == ACB_NVRAM) { -// *pnMin = 0x02705; -// } -// -// memset(&ba, 0, sizeof(ba)); -// ba.Data = eeprom_data; -// ba.nLen = MEMORY_SIZE; -// ba.szName = "EEPROM memory"; -// BurnAcb(&ba); -// } } diff --git a/src/burn/driver.h b/src/burn/driver.h index 4362ab2..568ed6c 100644 --- a/src/burn/driver.h +++ b/src/burn/driver.h @@ -71,12 +71,6 @@ enum { typedef UINT8 (*read8_handler)(UINT32 offset); typedef void (*write8_handler)(UINT32 offset, UINT32 data); - - #ifdef MAME_USE_LOGERROR - void __cdecl logerror(char* szFormat, ...); - #else - #define logerror - #endif #ifdef __cplusplus } #endif diff --git a/src/burn/drv/neogeo/d_neogeo.cpp b/src/burn/drv/neogeo/d_neogeo.cpp index e997fe1..13f9c19 100755 --- a/src/burn/drv/neogeo/d_neogeo.cpp +++ b/src/burn/drv/neogeo/d_neogeo.cpp @@ -3,11 +3,6 @@ #include "neogeo.h" #include "bitswap.h" -#if !defined ROM_VERIFY - // enable to match Neo Geo BIOS to MAME's (also affects dipswitches -- leaves only the MVS BIOS option) - // #define ROM_VERIFY -#endif - static struct BurnRomInfo emptyRomDesc[] = { { "", 0, 0, 0 }, }; @@ -17,7 +12,6 @@ static struct BurnRomInfo emptyRomDesc[] = { static struct BurnInputInfo neogeoInputList[] = { {"P1 Coin", BIT_DIGITAL, NeoButton2 + 0, "p1 coin"}, // 0 -// {"P1 Coin 2", BIT_DIGITAL, NeoButton2 + 3, "p1 coin 2"}, {"P1 Start", BIT_DIGITAL, NeoButton1 + 0, "p1 start"}, // 1 {"P1 Select", BIT_DIGITAL, NeoButton1 + 1, "p1 select"}, // 2 @@ -31,7 +25,6 @@ static struct BurnInputInfo neogeoInputList[] = { {"P1 Button D", BIT_DIGITAL, NeoJoy1 + 7, "p1 fire 4"}, // A {"P2 Coin", BIT_DIGITAL, NeoButton2 + 1, "p2 coin"}, // B -// {"P2 Coin 2", BIT_DIGITAL, NeoButton2 + 4, "p2 coin 2"}, {"P2 Start", BIT_DIGITAL, NeoButton1 + 2, "p2 start"}, // C {"P2 Select", BIT_DIGITAL, NeoButton1 + 3, "p2 select"}, // D @@ -61,7 +54,6 @@ STDINPUTINFO(neogeo) static struct BurnInputInfo neoMVSInputList[] = { {"P1 Coin", BIT_DIGITAL, NeoButton2 + 0, "p1 coin"}, // 0 -// {"P1 Coin 2", BIT_DIGITAL, NeoButton2 + 3, "p1 coin 2"}, {"P1 Start", BIT_DIGITAL, NeoButton1 + 0, "p1 start"}, // 1 {"P1 Select", BIT_DIGITAL, NeoButton1 + 1, "p1 select"}, // 2 @@ -75,7 +67,6 @@ static struct BurnInputInfo neoMVSInputList[] = { {"P1 Button D", BIT_DIGITAL, NeoJoy1 + 7, "p1 fire 4"}, // A {"P2 Coin", BIT_DIGITAL, NeoButton2 + 1, "p2 coin"}, // B -// {"P2 Coin 2", BIT_DIGITAL, NeoButton2 + 4, "p2 coin 2"}, {"P2 Start", BIT_DIGITAL, NeoButton1 + 2, "p2 start"}, // C {"P2 Select", BIT_DIGITAL, NeoButton1 + 3, "p2 select"}, // D @@ -846,19 +837,6 @@ static struct BurnDIPInfo neoCDDIPList[] = { {0x00, 0x01, 0x03, 0x01, "USA"}, {0x00, 0x01, 0x03, 0x02, "Europe"}, {0x00, 0x01, 0x03, 0x03, "Portugese"}, - -#if 0 - - // Memory card - {0, 0xFD, 0, 2, "Memory card"}, - {0x00, 0x01, 0x80, 0x80, "Writable"}, - {0x00, 0x01, 0x80, 0x00, "Write-protected"}, - {0, 0xFD, 0, 2, "New card type"}, - {0x00, 0x01, 0x40, 0x40, "1 Megabit"}, - {0x00, 0x01, 0x40, 0x00, "Normal"}, - -#endif - }; STDDIPINFO(neoCD) @@ -932,15 +910,9 @@ static struct BurnRomInfo neogeoRomDesc[] = { { "sp1.jipan.1024", 0x20000, 0x9fb0abe4, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 7 MVS Japan ver. 3 (4 slot) { "sp-45.sp1", 0x80000, 0x03cc9f6a, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 8 NEO-MVH MV1C { "japan-j3.bin", 0x20000, 0xdff6d41f, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 9 MVS Japan (J3) -#if !defined (ROM_VERIFY) { "neo-po.bin", 0x20000, 0x16d0c132, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 10 AES Japan { "neo-epo.bin", 0x20000, 0xd27a71f1, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 11 AES Asia { "neodebug.bin", 0x20000, 0x698ebb7d, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 12 Development Kit -#else - { "", 0x00000, 0x00000000, 0 }, // 10 - { "", 0x00000, 0x00000000, 0 }, // 11 - { "", 0x00000, 0x00000000, 0 }, // 12 -#endif { "sp-1v1_3db8c.bin", 0x20000, 0x162f0ebe, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 13 Deck ver. 6 (Git Ver 1.3) { "uni-bios_4_0.rom", 0x20000, 0xa7aab458, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 14 Universe BIOS ver. 4.0 { "uni-bios_3_3.rom", 0x20000, 0x24858466, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 15 Universe BIOS ver. 3.3 @@ -957,11 +929,7 @@ static struct BurnRomInfo neogeoRomDesc[] = { { "uni-bios_1_2o.rom", 0x20000, 0xe19d3ce9, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 26 Universe BIOS ver. 1.2 (alt) { "uni-bios_1_1.rom", 0x20000, 0x5dda0d84, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 27 Universe BIOS ver. 1.1 { "uni-bios_1_0.rom", 0x20000, 0x0ce453a0, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 28 Universe BIOS ver. 1.0 -#if !defined (ROM_VERIFY) { "neopen.sp1", 0x20000, 0xcb915e76, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 29 NeoOpen BIOS v0.1 beta -#else - { "", 0x00000, 0x00000000, 0 }, // 29 -#endif { "", 0x00000, 0x00000000, 0 }, // 30 Trackball BIOS loaded here { "", 0x00000, 0x00000000, 0 }, // 31 PCB BIOS loaded here @@ -1236,26 +1204,17 @@ void NeoSMABankswitch() // Extra protection UINT16 __fastcall neogeoReadWordSMA9A37(UINT32 sekAddress) { -// bprintf(PRINT_NORMAL, " -- SMA9A37 0x%08X (word)\n", sekAddress); - - if (sekAddress == 0x2FE446) { + if (sekAddress == 0x2FE446) return 0x9A37; - } - return *((UINT16*)(Neo68KROMActive + nNeo68KROMBank + sekAddress - 0x200000)); } UINT8 __fastcall neogeoReadByteSMA9A37(UINT32 sekAddress) { -// bprintf(PRINT_NORMAL, " -- SMA9A37 0x%08X (byte)\n", sekAddress); - - if (sekAddress == 0x2FE446) { + if (sekAddress == 0x2FE446) return 0x9A; - } - if (sekAddress == 0x2FE447) { + if (sekAddress == 0x2FE447) return 0x37; - } - return Neo68KROMActive[(nNeo68KROMBank + sekAddress - 0x200000) ^ 1]; } @@ -1321,8 +1280,6 @@ INT32 NeoSMAScan(INT32 nAction, INT32* /*pnMin*/) static void NeoSMAInstallHanders() { -// bprintf(PRINT_NORMAL, _T(" Installing handlers for slot %i\n"), nNeoActiveSlot); - SekMapHandler(8, 0x2FFC00, 0x2FFFFF, SM_WRITE); // Bankswitch SekSetWriteWordHandler(8, pSMABankswitchHandler[nNeoActiveSlot]); @@ -3591,10 +3548,8 @@ static INT32 prot_data; UINT8 __fastcall fatfury2ReadByteProtection(UINT32 sekAddress) { UINT16 res = (prot_data >> 24) & 0xFF; - -// bprintf(PRINT_NORMAL, _T(" - prot 0x%06X read byte (PC: 0x%06X)\n"), sekAddress, SekGetPC(-1)); - - switch (sekAddress) { + switch (sekAddress) + { case 0x255551: case 0x2FFFF1: case 0x200001: @@ -3602,16 +3557,11 @@ UINT8 __fastcall fatfury2ReadByteProtection(UINT32 sekAddress) case 0x236001: case 0x236009: -// bprintf(PRINT_NORMAL, _T(" - prot read byte: 0x%02X (PC: 0x%06X)\n"), res, SekGetPC(-1)); return res; case 0x236005: case 0x23600D: -// bprintf(PRINT_NORMAL, _T(" - prot read byte: 0x%02X (PC: 0x%06X)\n"), ((res & 0xF0) >> 4) | ((res & 0x0F) << 4), SekGetPC(-1)); return ((res & 0xF0) >> 4) | ((res & 0x0F) << 4); - -// default: -// bprintf(PRINT_NORMAL, _T(" - prot 0x%06X read byte (PC: 0x%06X)\n"), sekAddress, SekGetPC(-1)); } return 0; @@ -3620,10 +3570,8 @@ UINT8 __fastcall fatfury2ReadByteProtection(UINT32 sekAddress) UINT16 __fastcall fatfury2ReadWordProtection(UINT32 sekAddress) { UINT16 res = (prot_data >> 24) & 0xFF; - -// bprintf(PRINT_NORMAL, _T(" - prot 0x%06X read word (PC: 0x%06X)\n"), sekAddress, SekGetPC(-1)); - - switch (sekAddress) { + switch (sekAddress) + { case 0x255550: case 0x2FFFF0: case 0x200000: @@ -3631,16 +3579,11 @@ UINT16 __fastcall fatfury2ReadWordProtection(UINT32 sekAddress) case 0x236000: case 0x236008: -// bprintf(PRINT_NORMAL, _T(" - prot read word: 0x%02X (PC: 0x%06X)\n"), res, SekGetPC(-1)); return res; case 0x236004: case 0x23600C: -// bprintf(PRINT_NORMAL, _T(" - prot read word: 0x%02X (PC: 0x%06X)\n"), ((res & 0xF0) >> 4) | ((res & 0x0F) << 4), SekGetPC(-1)); return ((res & 0xF0) >> 4) | ((res & 0x0F) << 4); - -// default: -// bprintf(PRINT_NORMAL, _T(" - prot 0x%06X read word (PC: 0x%06X)\n"), sekAddress, SekGetPC(-1)); } return 0; @@ -3648,9 +3591,8 @@ UINT16 __fastcall fatfury2ReadWordProtection(UINT32 sekAddress) void __fastcall fatfury2WriteByteProtection(UINT32 sekAddress, UINT8 /*byteValue*/) { -// bprintf(PRINT_NORMAL, _T(" - prot 0x%06X -> 0x%02X (PC: 0x%06X)\n"), sekAddress, byteValue, SekGetPC(-1)); - - switch (sekAddress) { + switch (sekAddress) + { case 0x255551: case 0x2FFFF1: case 0x2FF001: @@ -3661,50 +3603,23 @@ void __fastcall fatfury2WriteByteProtection(UINT32 sekAddress, UINT8 /*byteValue case 0x23600D: prot_data <<= 8; break; - -// default: -// bprintf(PRINT_NORMAL, _T(" - prot 0x%06X -> 0x%02X\n"), sekAddress, byteValue); } } void __fastcall fatfury2WriteWordProtection(UINT32 sekAddress, UINT16 /*wordValue*/) { -// bprintf(PRINT_NORMAL, _T(" - prot 0x%06X -> 0x%04X (PC: 0x%06X)\n"), sekAddress, wordValue, SekGetPC(-1)); - - switch (sekAddress) { + switch (sekAddress) + { case 0x211112: // data = 0x1111, expects 0xFF000000 back prot_data = 0xFF000000; -/* - prot_data = (wordValue & 0x1000) << 19; - prot_data |= (wordValue & 0x0100) << 22; - prot_data |= (wordValue & 0x0010) << 25; - prot_data |= (wordValue & 0x0001) << 28; - - prot_data |= prot_data >> 4; -*/ -// bprintf(PRINT_NORMAL, _T(" prot data -> 0x%08X\n"), prot_data); break; case 0x233332: // data = 0x3333, expects 0x0000FFFF back prot_data = 0x0000FFFF; -/* - prot_data = wordValue << 0; - prot_data |= wordValue << 2; -*/ -// bprintf(PRINT_NORMAL, _T(" prot data -> 0x%08X\n"), prot_data); break; case 0x244442: // data = 0x4444, expects 0x00FF0000 back prot_data = 0x00FF0000; -/* - prot_data = (wordValue & 0x4000) << 9; - prot_data |= (wordValue & 0x0400) << 12; - prot_data |= (wordValue & 0x0040) << 15; - prot_data |= (wordValue & 0x0004) << 18; - - prot_data |= prot_data >> 4; -*/ -// bprintf(PRINT_NORMAL, _T(" prot data -> 0x%08X\n"), prot_data); break; case 0x255552: // data == 0x5555; read back from 55550, ffff0, 00000, ff000 @@ -3718,9 +3633,6 @@ void __fastcall fatfury2WriteWordProtection(UINT32 sekAddress, UINT16 /*wordValu case 0x242812: // data == 0x1824; read back from 36008 *or* 3600c prot_data = 0x81422418; break; - -// default: -// bprintf(PRINT_NORMAL, _T(" - prot 0x%06X -> 0x%02X\n"), sekAddress, wordValue); } } @@ -6534,9 +6446,6 @@ static void mslug3SMADecrypt() void __fastcall mslug3WriteWordBankswitch(UINT32 sekAddress, UINT16 wordValue) { - -// bprintf(PRINT_NORMAL, " -- bankswitch: 0x%08X -> 0x%04X\n", sekAddress, wordValue); - if (sekAddress == 0x2FFFE4) { static UINT32 bankoffset[64] = { 0x100000, 0x120000, 0x140000, 0x160000, // 00 diff --git a/src/burn/drv/neogeo/neo_decrypt.cpp b/src/burn/drv/neogeo/neo_decrypt.cpp index 3c74ec5..3f1d4e4 100644 --- a/src/burn/drv/neogeo/neo_decrypt.cpp +++ b/src/burn/drv/neogeo/neo_decrypt.cpp @@ -445,35 +445,26 @@ const UINT8 kof2000_address_0_7_xor[256] = 0x32, 0x3e, 0x45, 0xaf, 0x1e, 0x43, 0x44, 0x8c, 0x53, 0x86, 0x6b, 0xee, 0xa8, 0x8a, 0x8f, 0x17, }; - - - - void NeoCMCExtractSData(UINT8* rom, UINT8* sdata, INT32 rom_size, INT32 sdata_size) { -#if 0 - /* the S data comes from the end fo the C data */ - rom += rom_size - sdata_size; - - for (INT32 i = 0; i < sdata_size; i++) { - sdata[i] = rom[(i & ~0x1F) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4)]; - } -#endif INT32 i; // the S data comes from the end fo the C data - if (sdata_size == 0x100000) { + if (sdata_size == 0x100000) + { // 1 MB of data, special for kf2k3pcb rom += rom_size - sdata_size /2; - for (i = 0; i < sdata_size / 2; i++) { - sdata[i + 0] = rom[(i & ~0x1F) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4) - 0x1000000 ]; + for (i = 0; i < sdata_size / 2; i++) + { + sdata[i + 0] = rom[(i & ~0x1F) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4) - 0x1000000 ]; sdata[i + sdata_size / 2] = rom[(i & ~0x1F) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4)]; } - } else { + } + else + { // Normal data extraction rom += rom_size - sdata_size; - for (i = 0; i < sdata_size; i++) { + for (i = 0; i < sdata_size; i++) sdata[i] = rom[(i & ~0x1F) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4)]; - } } } @@ -485,19 +476,19 @@ inline static void cmc_xor(UINT8 *r0, UINT8 *r1, INT32 invert) { - UINT8 c0, c1, tmp, xor0, xor1; + UINT8 tmp = table1[(base & 0xff) ^ address_0_7_xor[(base >> 8) & 0xff]]; + UINT8 xor0 = (table0hi[(base >> 8) & 0xff] & 0xfe) | (tmp & 0x01); + UINT8 xor1 = (tmp & 0xfe) | (table0lo[(base >> 8) & 0xff] & 0x01); + UINT8 c0 = *r0; + UINT8 c1 = *r1; - tmp = table1[(base & 0xff) ^ address_0_7_xor[(base >> 8) & 0xff]]; - xor0 = (table0hi[(base >> 8) & 0xff] & 0xfe) | (tmp & 0x01); - xor1 = (tmp & 0xfe) | (table0lo[(base >> 8) & 0xff] & 0x01); - - c0 = *r0; - c1 = *r1; - - if (invert) { + if (invert) + { *r0 = c1 ^ xor0; *r1 = c0 ^ xor1; - } else { + } + else + { *r0 = c0 ^ xor0; *r1 = c1 ^ xor1; } @@ -548,7 +539,7 @@ void NeoCMCDecrypt(INT32 extra_xor, UINT8* rom, UINT8* buf, INT32 offset, INT32 } /* CMC42 protection chip */ -void NeoCMC42Init() +void NeoCMC42Init(void) { type0_t03 = kof99_type0_t03; type0_t12 = kof99_type0_t12; @@ -562,7 +553,7 @@ void NeoCMC42Init() } /* CMC50 protection chip */ -void NeoCMC50Init() +void NeoCMC50Init(void) { type0_t03 = kof2000_type0_t03; type0_t12 = kof2000_type0_t12; @@ -618,9 +609,8 @@ static UINT16 generate_cs16(UINT8 *rom, INT32 size) { UINT16 cs16; cs16 = 0x0000; - for (INT32 i = 0; i < size; i++) { + for (INT32 i = 0; i < size; i++) cs16 += rom[i]; - } return cs16 & 0xffff; } @@ -656,7 +646,7 @@ static INT32 m1_address_scramble(INT32 address, UINT16 key) return (block << 16) | aux; } -void neogeo_cmc50_m1_decrypt() +void neogeo_cmc50_m1_decrypt(void) { UINT8 *rom = NeoZ80ROMActive; UINT8 *buffer = (UINT8*)BurnMalloc(0x80000); @@ -670,4 +660,3 @@ void neogeo_cmc50_m1_decrypt() memcpy(rom, buffer, 0x80000); BurnFree(buffer); } - diff --git a/src/burn/drv/neogeo/neo_palette.cpp b/src/burn/drv/neogeo/neo_palette.cpp index fd5b7d5..06076a4 100644 --- a/src/burn/drv/neogeo/neo_palette.cpp +++ b/src/burn/drv/neogeo/neo_palette.cpp @@ -10,15 +10,14 @@ static UINT16* NeoPaletteCopy[2] = {NULL, NULL}; UINT8 NeoRecalcPalette; -INT32 NeoInitPalette() +INT32 NeoInitPalette(void) { - for (INT32 i = 0; i < 2; i++) { - if (NeoPaletteData[i]) { + for (INT32 i = 0; i < 2; i++) + { + if (NeoPaletteData[i]) BurnFree(NeoPaletteData[i]); - } - if (NeoPaletteCopy[i]) { + if (NeoPaletteCopy[i]) BurnFree(NeoPaletteCopy[i]); - } NeoPaletteData[i] = (UINT32*)BurnMalloc(4096 * sizeof(UINT32)); NeoPaletteCopy[i] = (UINT16*)BurnMalloc(4096 * sizeof(UINT16)); } @@ -28,9 +27,10 @@ INT32 NeoInitPalette() return 0; } -void NeoExitPalette() +void NeoExitPalette(void) { - for (INT32 i = 0; i < 2; i++) { + for (INT32 i = 0; i < 2; i++) + { BurnFree(NeoPaletteData[i]); BurnFree(NeoPaletteCopy[i]); } @@ -52,17 +52,20 @@ inline static UINT32 CalcCol(UINT16 nColour) return BurnHighCol(r, g, b, 0); } -INT32 NeoUpdatePalette() +INT32 NeoUpdatePalette(void) { - if (NeoRecalcPalette) { + if (NeoRecalcPalette) + { INT32 i; UINT16* ps; UINT16* pc; UINT32* pd; // Update both palette banks - for (INT32 j = 0; j < 2; j++) { - for (i = 0, ps = (UINT16*)NeoPalSrc[j], pc = NeoPaletteCopy[j], pd = NeoPaletteData[j]; i < 4096; i++, ps++, pc++, pd++) { + for (INT32 j = 0; j < 2; j++) + { + for (i = 0, ps = (UINT16*)NeoPalSrc[j], pc = NeoPaletteCopy[j], pd = NeoPaletteData[j]; i < 4096; i++, ps++, pc++, pd++) + { *pc = *ps; *pd = CalcCol(BURN_ENDIAN_SWAP_INT16(*ps)); } @@ -75,7 +78,7 @@ INT32 NeoUpdatePalette() return 0; } -void NeoSetPalette() +void NeoSetPalette(void) { NeoPalette = NeoPaletteData[nNeoPaletteBank]; } @@ -106,4 +109,3 @@ void __fastcall NeoPalWriteWord(UINT32 nAddress, UINT16 wordValue) NeoPaletteData[nNeoPaletteBank][nAddress] = CalcCol(wordValue); } } - diff --git a/src/burn/drv/neogeo/neo_run.cpp b/src/burn/drv/neogeo/neo_run.cpp index f29b4af..c628868 100755 --- a/src/burn/drv/neogeo/neo_run.cpp +++ b/src/burn/drv/neogeo/neo_run.cpp @@ -1,43 +1,3 @@ -/* - -struct NeoMediaInfo { - UINT8* p68KROM; - UINT8* pVector; - UINT8* pZ80ROM; - UINT8* pSpriteROM; - UINT8* pTextROM; - UINT8* pADPCMROM; - UINT8* pDeltaTROM; - - INT32 n68KBankOffset; - INT32 nVectorOffset; - - INT32 n68KROMSize; - INT32 nZ80ROMSize; - INT32 nSpriteROMSize; - INT32 nTextROMSize; - INT32 nADPCMROMSize; - INT32 nADeltaROMSize; - - // Function callbacks - - void (*pLoadCallback)(); - void (*pUnloadCallback)(); - void (*pInstallCallback)(); - void (*pUnnstallCallback)(); - void (*pBankswitchCallback)(); - INT32 (*pScan)(int, int*); - - // Private data - - INT32 nSRAMProtectionOffset; - - void* pCustomData; - void* pTextData; -}; - -*/ - /* * FB Alpha Neo Geo module * @@ -118,19 +78,12 @@ extern int get_cache_path(char *path); // #undef USE_SPEEDHACKS -// #define LOG_IRQ -// #define LOG_DRAW - #define NEO_HREFRESH (15625.0) #define NEO_VREFRESH (NEO_HREFRESH / 264.0) -// #define NEO_VREFRESH (NEO_HREFRESH / 312.0) // If defined, enable emulation of the watchdog timer (timing doesn't match real hardware 100%) #define EMULATE_WATCHDOG -// If defined, reset the Z80 when switching between the Z80 BIOS/cartridge ROM -//#define Z80_RESET_ON_BANKSWITCH - // If defined, adjust the Z80 speed along with the 68000 when overclocking #define Z80_SPEED_ADJUST @@ -141,9 +94,9 @@ extern int get_cache_path(char *path); // #define RASTERS_OPTIONAL #if defined Z80_SPEED_ADJUST - static INT32 nZ80Clockspeed; +static INT32 nZ80Clockspeed; #else - static const INT32 nZ80Clockspeed = 4000000; +static const INT32 nZ80Clockspeed = 4000000; #endif #if defined RASTER_KLUDGE @@ -647,337 +600,306 @@ static INT32 ReadSoundCache(UINT8* Audio) } #endif -static INT32 LoadRoms() +static INT32 LoadRoms(void) { - NeoGameInfo info; - NeoGameInfo* pInfo = &info; + NeoGameInfo info; + NeoGameInfo* pInfo = &info; - { - struct BurnRomInfo ri; + { + struct BurnRomInfo ri; - ri.nType = 0; - ri.nLen = 0; + ri.nType = 0; + ri.nLen = 0; - // Find 'P' ROMs - FindROMs(1, &pInfo->nCodeOffset, &pInfo->nCodeNum); - // Find 'S' ROM - FindROMs(2, &pInfo->nTextOffset, NULL); - // Find 'C' ROMs - FindROMs(3, &pInfo->nSpriteOffset, &pInfo->nSpriteNum); - // Find 'M' ROM - FindROMs(4, &pInfo->nSoundOffset, NULL); - // Find 'V' ROMs - FindROMs(5, &pInfo->nADPCMOffset, &pInfo->nADPCMANum); - FindROMs(6, NULL, &pInfo->nADPCMBNum); + // Find 'P' ROMs + FindROMs(1, &pInfo->nCodeOffset, &pInfo->nCodeNum); + // Find 'S' ROM + FindROMs(2, &pInfo->nTextOffset, NULL); + // Find 'C' ROMs + FindROMs(3, &pInfo->nSpriteOffset, &pInfo->nSpriteNum); + // Find 'M' ROM + FindROMs(4, &pInfo->nSoundOffset, NULL); + // Find 'V' ROMs + FindROMs(5, &pInfo->nADPCMOffset, &pInfo->nADPCMANum); + FindROMs(6, NULL, &pInfo->nADPCMBNum); - if (pInfo->nADPCMBNum < 0) { - pInfo->nADPCMBNum = 0; - } + if (pInfo->nADPCMBNum < 0) + pInfo->nADPCMBNum = 0; -#if 1 && defined FBA_DEBUG - bprintf(PRINT_IMPORTANT, _T(" - P: %i (%i);"), pInfo->nCodeOffset, pInfo->nCodeNum); - if (pInfo->nTextOffset >= 0) { - bprintf(PRINT_IMPORTANT, _T(" S: %i;"), pInfo->nTextOffset); - } else { - bprintf(PRINT_IMPORTANT, _T(" S: unused;")); - } - bprintf(PRINT_IMPORTANT, _T(" C: %i (%i); M: %i"), pInfo->nSpriteOffset, pInfo->nSpriteNum, pInfo->nSoundOffset); - if (pInfo->nADPCMOffset >= 0) { - bprintf(PRINT_IMPORTANT, _T(" V: %i (%i, %i)"), pInfo->nADPCMOffset, pInfo->nADPCMANum, pInfo->nADPCMBNum); - } else { - bprintf(PRINT_IMPORTANT, _T(" V: unused")); - } - bprintf(PRINT_IMPORTANT,_T("\n")); -#endif + nCodeSize[nNeoActiveSlot] = 0; + for (INT32 i = 0; i < pInfo->nCodeNum; i++) { + BurnDrvGetRomInfo(&ri, pInfo->nCodeOffset + i); + nCodeSize[nNeoActiveSlot] += ri.nLen; + } + nCodeSize[nNeoActiveSlot] = (nCodeSize[nNeoActiveSlot] + 0x0FFFFF) & ~0x0FFFFF; - nCodeSize[nNeoActiveSlot] = 0; - for (INT32 i = 0; i < pInfo->nCodeNum; i++) { - BurnDrvGetRomInfo(&ri, pInfo->nCodeOffset + i); - nCodeSize[nNeoActiveSlot] += ri.nLen; - } - nCodeSize[nNeoActiveSlot] = (nCodeSize[nNeoActiveSlot] + 0x0FFFFF) & ~0x0FFFFF; + nSpriteSize[nNeoActiveSlot] = 0; - nSpriteSize[nNeoActiveSlot] = 0; + if (BurnDrvGetHardwareCode() & HARDWARE_SNK_SWAPC) { + BurnDrvGetRomInfo(&ri, pInfo->nSpriteOffset); + // for viewpoint, aof, ssideki + if (pInfo->nSpriteNum == 2) { + nSpriteSize[nNeoActiveSlot] = 0x600000; + } + // for kotm2 + if (pInfo->nSpriteNum == 4) { + BurnDrvGetRomInfo(&ri, pInfo->nSpriteOffset + 2); + if (ri.nLen == 0x080000) { + nSpriteSize[nNeoActiveSlot] = 0x600000; + } + } + } - if (BurnDrvGetHardwareCode() & HARDWARE_SNK_SWAPC) { - BurnDrvGetRomInfo(&ri, pInfo->nSpriteOffset); - // for viewpoin, aof, ssideki - if (pInfo->nSpriteNum == 2) { - nSpriteSize[nNeoActiveSlot] = 0x600000; - } - // for kotm2 - if (pInfo->nSpriteNum == 4) { - BurnDrvGetRomInfo(&ri, pInfo->nSpriteOffset + 2); - if (ri.nLen == 0x080000) { - nSpriteSize[nNeoActiveSlot] = 0x600000; - } - } - } + if (nSpriteSize[nNeoActiveSlot] == 0) { - if (nSpriteSize[nNeoActiveSlot] == 0) { + // Compute correct size taking gaps into account (kizuna) + for (INT32 i = 0; i < pInfo->nSpriteNum - 2; i += 2) { + BurnDrvGetRomInfo(&ri, pInfo->nSpriteOffset + i); + if (ri.nLen > nSpriteSize[nNeoActiveSlot]) { + nSpriteSize[nNeoActiveSlot] = ri.nLen; + } + } + nSpriteSize[nNeoActiveSlot] *= pInfo->nSpriteNum - 2; - // Compute correct size taking gaps into account (kizuna) - for (INT32 i = 0; i < pInfo->nSpriteNum - 2; i += 2) { - BurnDrvGetRomInfo(&ri, pInfo->nSpriteOffset + i); - if (ri.nLen > nSpriteSize[nNeoActiveSlot]) { - nSpriteSize[nNeoActiveSlot] = ri.nLen; - } - } - nSpriteSize[nNeoActiveSlot] *= pInfo->nSpriteNum - 2; + if (!strcmp("kof97oro", BurnDrvGetTextA(DRV_NAME))) nSpriteSize[nNeoActiveSlot] = 0x2400000; - if (!strcmp("kof97oro", BurnDrvGetTextA(DRV_NAME))) nSpriteSize[nNeoActiveSlot] = 0x2400000; + // The final 2 ROMs may have a different size + BurnDrvGetRomInfo(&ri, pInfo->nSpriteOffset + pInfo->nSpriteNum - 2); + nSpriteSize[nNeoActiveSlot] += ri.nLen * 2; + } - // The final 2 ROMs may have a different size - BurnDrvGetRomInfo(&ri, pInfo->nSpriteOffset + pInfo->nSpriteNum - 2); - nSpriteSize[nNeoActiveSlot] += ri.nLen * 2; - } + { + UINT32 nSize = nSpriteSize[nNeoActiveSlot]; - { - UINT32 nSize = nSpriteSize[nNeoActiveSlot]; -// if (nSize > 0x4000000) { -// nSize = 0x4000000; -// } + for (nNeoTileMask[nNeoActiveSlot] = 1; nNeoTileMask[nNeoActiveSlot] < nSize; nNeoTileMask[nNeoActiveSlot] <<= 1) { } + nNeoTileMask[nNeoActiveSlot] = (nNeoTileMask[nNeoActiveSlot] >> 7) - 1; + nNeoMaxTile[nNeoActiveSlot] = nSize >> 7; + } - for (nNeoTileMask[nNeoActiveSlot] = 1; nNeoTileMask[nNeoActiveSlot] < nSize; nNeoTileMask[nNeoActiveSlot] <<= 1) { } - nNeoTileMask[nNeoActiveSlot] = (nNeoTileMask[nNeoActiveSlot] >> 7) - 1; - nNeoMaxTile[nNeoActiveSlot] = nSize >> 7; - } + if (nNeoTextROMSize[nNeoActiveSlot] == 0) { + if (pInfo->nTextOffset > 0) { + BurnDrvGetRomInfo(&ri, pInfo->nTextOffset); + nNeoTextROMSize[nNeoActiveSlot] = ri.nLen; + } else { + nNeoTextROMSize[nNeoActiveSlot] = 0x080000; + } + } - if (nNeoTextROMSize[nNeoActiveSlot] == 0) { - if (pInfo->nTextOffset > 0) { - BurnDrvGetRomInfo(&ri, pInfo->nTextOffset); - nNeoTextROMSize[nNeoActiveSlot] = ri.nLen; - } else { - nNeoTextROMSize[nNeoActiveSlot] = 0x080000; - } - } + nYM2610ADPCMASize[nNeoActiveSlot] = nYM2610ADPCMBSize[nNeoActiveSlot] = 0; + if (pInfo->nADPCMOffset >= 0) { + char* pName; + BurnDrvGetRomInfo(&ri, pInfo->nADPCMOffset); + BurnDrvGetRomName(&pName, pInfo->nADPCMOffset, 0); + nYM2610ADPCMASize[nNeoActiveSlot] = ri.nLen; - nYM2610ADPCMASize[nNeoActiveSlot] = nYM2610ADPCMBSize[nNeoActiveSlot] = 0; - if (pInfo->nADPCMOffset >= 0) { - char* pName; - BurnDrvGetRomInfo(&ri, pInfo->nADPCMOffset); - BurnDrvGetRomName(&pName, pInfo->nADPCMOffset, 0); - nYM2610ADPCMASize[nNeoActiveSlot] = ri.nLen; + if (pInfo->nADPCMANum > 1) { + BurnDrvGetRomInfo(&ri, pInfo->nADPCMOffset + pInfo->nADPCMANum - 1); + BurnDrvGetRomName(&pName, pInfo->nADPCMOffset + pInfo->nADPCMANum - 1, 0); + if (pInfo->nADPCMBNum == 0) { + nYM2610ADPCMASize[nNeoActiveSlot] *= pName[FindType(pName) + 1] - '1'; + } else { + nYM2610ADPCMASize[nNeoActiveSlot] *= pName[FindType(pName) + 2] - '1'; + } + nYM2610ADPCMASize[nNeoActiveSlot] += ri.nLen; + } - if (pInfo->nADPCMANum > 1) { - BurnDrvGetRomInfo(&ri, pInfo->nADPCMOffset + pInfo->nADPCMANum - 1); - BurnDrvGetRomName(&pName, pInfo->nADPCMOffset + pInfo->nADPCMANum - 1, 0); - if (pInfo->nADPCMBNum == 0) { - nYM2610ADPCMASize[nNeoActiveSlot] *= pName[FindType(pName) + 1] - '1'; - } else { - nYM2610ADPCMASize[nNeoActiveSlot] *= pName[FindType(pName) + 2] - '1'; - } - nYM2610ADPCMASize[nNeoActiveSlot] += ri.nLen; - } + if (pInfo->nADPCMBNum) { + BurnDrvGetRomInfo(&ri, pInfo->nADPCMOffset + pInfo->nADPCMANum); + nYM2610ADPCMBSize[nNeoActiveSlot] = ri.nLen * (pInfo->nADPCMBNum - 1); + BurnDrvGetRomInfo(&ri, pInfo->nADPCMOffset + pInfo->nADPCMANum + pInfo->nADPCMBNum - 1); + nYM2610ADPCMBSize[nNeoActiveSlot] += ri.nLen; + } + } + } - if (pInfo->nADPCMBNum) { - BurnDrvGetRomInfo(&ri, pInfo->nADPCMOffset + pInfo->nADPCMANum); - nYM2610ADPCMBSize[nNeoActiveSlot] = ri.nLen * (pInfo->nADPCMBNum - 1); - BurnDrvGetRomInfo(&ri, pInfo->nADPCMOffset + pInfo->nADPCMANum + pInfo->nADPCMBNum - 1); - nYM2610ADPCMBSize[nNeoActiveSlot] += ri.nLen; - } - } - } - - if (!strcmp("kof2k4se", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] += 0x800000; - if (!strcmp("kf2k4pls", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] += 0x800000; - if (!strcmp("svcboot", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] += 0x400000; - if (!strcmp("svcplus", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] += 0x400000; - if (!strcmp("svcplusa", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] += 0x400000; - if (!strcmp("svcsplus", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] += 0x400000; - if (!strcmp("pbobblenb", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] = 0x380000; - if (!strcmp("alpham2p", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] = 0x200000; - if (!strcmp("burningfp", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] = 0x180000; - if (!strcmp("kotm2p", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] = 0x300000; - if (!strcmp("sbp", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] = 0x800000; - if (!strcmp("lasthope", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] = 0x600000; - -// bprintf(PRINT_NORMAL, _T("%x\n"), nYM2610ADPCMASize[nNeoActiveSlot]); - - // The kof2k3 PCB has 96MB of graphics ROM, however the last 16MB are unused, and the protection/decryption hardware does not see them -// if (nSpriteSize[nNeoActiveSlot] > 0x4000000) { -// nSpriteSize[nNeoActiveSlot] = 0x5000000; -// } + if (!strcmp("kof2k4se", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] += 0x800000; + if (!strcmp("kf2k4pls", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] += 0x800000; + if (!strcmp("svcboot", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] += 0x400000; + if (!strcmp("svcplus", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] += 0x400000; + if (!strcmp("svcplusa", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] += 0x400000; + if (!strcmp("svcsplus", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] += 0x400000; + if (!strcmp("pbobblenb", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] = 0x380000; + if (!strcmp("alpham2p", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] = 0x200000; + if (!strcmp("burningfp", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] = 0x180000; + if (!strcmp("kotm2p", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] = 0x300000; + if (!strcmp("sbp", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] = 0x800000; + if (!strcmp("lasthope", BurnDrvGetTextA(DRV_NAME))) nYM2610ADPCMASize[nNeoActiveSlot] = 0x600000; + + + // The kof2k3 PCB has 96MB of graphics ROM, however the last 16MB are unused, and the protection/decryption hardware does not see them + // if (nSpriteSize[nNeoActiveSlot] > 0x4000000) { + // nSpriteSize[nNeoActiveSlot] = 0x5000000; + // } #ifdef WII_VM - InitCache(); - if(!BurnUseCache) + InitCache(); + if(!BurnUseCache) #endif - { - NeoSpriteROM[nNeoActiveSlot] = (UINT8*)BurnMalloc(nSpriteSize[nNeoActiveSlot] < (nNeoTileMask[nNeoActiveSlot] << 7) ? ((nNeoTileMask[nNeoActiveSlot] + 1) << 7) : nSpriteSize[nNeoActiveSlot]); - if (NeoSpriteROM[nNeoActiveSlot] == NULL) { - return 1; - } + { + NeoSpriteROM[nNeoActiveSlot] = (UINT8*)BurnMalloc(nSpriteSize[nNeoActiveSlot] < (nNeoTileMask[nNeoActiveSlot] << 7) ? ((nNeoTileMask[nNeoActiveSlot] + 1) << 7) : nSpriteSize[nNeoActiveSlot]); + if (NeoSpriteROM[nNeoActiveSlot] == NULL) { + return 1; + } -/* if ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_DEDICATED_PCB) { - BurnSetProgressRange(1.0 / ((double)nSpriteSize[nNeoActiveSlot] / 0x800000 / 12)); - } else if (BurnDrvGetHardwareCode() & (HARDWARE_SNK_CMC42 | HARDWARE_SNK_CMC50)) { - BurnSetProgressRange(1.0 / ((double)nSpriteSize[nNeoActiveSlot] / 0x800000 / 9)); - } else { - BurnSetProgressRange(1.0 / ((double)nSpriteSize[nNeoActiveSlot] / 0x800000 / 3)); - }*/ - - if (BurnDrvGetHardwareCode() & (HARDWARE_SNK_CMC42 | HARDWARE_SNK_CMC50)) { - double fRange = (double)pInfo->nSpriteNum / 4.0; - if (fRange < 1.5) { - fRange = 1.5; - } - BurnSetProgressRange(1.0 / fRange); - } else { - BurnSetProgressRange(1.0 / pInfo->nSpriteNum); - } + if (BurnDrvGetHardwareCode() & (HARDWARE_SNK_CMC42 | HARDWARE_SNK_CMC50)) { + double fRange = (double)pInfo->nSpriteNum / 4.0; + if (fRange < 1.5) { + fRange = 1.5; + } + BurnSetProgressRange(1.0 / fRange); + } else { + BurnSetProgressRange(1.0 / pInfo->nSpriteNum); + } - // Load sprite data - NeoLoadSprites(pInfo->nSpriteOffset, pInfo->nSpriteNum, NeoSpriteROM[nNeoActiveSlot], nSpriteSize[nNeoActiveSlot]); + // Load sprite data + NeoLoadSprites(pInfo->nSpriteOffset, pInfo->nSpriteNum, NeoSpriteROM[nNeoActiveSlot], nSpriteSize[nNeoActiveSlot]); - NeoTextROM[nNeoActiveSlot] = (UINT8*)BurnMalloc(nNeoTextROMSize[nNeoActiveSlot]); - if (NeoTextROM[nNeoActiveSlot] == NULL) { - return 1; - } + NeoTextROM[nNeoActiveSlot] = (UINT8*)BurnMalloc(nNeoTextROMSize[nNeoActiveSlot]); + if (NeoTextROM[nNeoActiveSlot] == NULL) { + return 1; + } - // Load Text layer tiledata - { - if (pInfo->nTextOffset != -1) { - // Load S ROM data - BurnLoadRom(NeoTextROM[nNeoActiveSlot], pInfo->nTextOffset, 1); - } else { - // Extract data from the end of C ROMS - BurnUpdateProgress(0.0, _T("Decrypting text layer graphics...")/*, BST_DECRYPT_TXT*/, 0); + // Load Text layer tiledata + { + if (pInfo->nTextOffset != -1) { + // Load S ROM data + BurnLoadRom(NeoTextROM[nNeoActiveSlot], pInfo->nTextOffset, 1); + } else { + // Extract data from the end of C ROMS + BurnUpdateProgress(0.0, _T("Decrypting text layer graphics...")/*, BST_DECRYPT_TXT*/, 0); #ifndef WII_VM - NeoCMCExtractSData(NeoSpriteROM[nNeoActiveSlot], NeoTextROM[nNeoActiveSlot], nSpriteSize[nNeoActiveSlot], nNeoTextROMSize[nNeoActiveSlot]); + NeoCMCExtractSData(NeoSpriteROM[nNeoActiveSlot], NeoTextROM[nNeoActiveSlot], nSpriteSize[nNeoActiveSlot], nNeoTextROMSize[nNeoActiveSlot]); #endif - if ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_DEDICATED_PCB) { - for (INT32 i = 0; i < nNeoTextROMSize[nNeoActiveSlot]; i++) { - NeoTextROM[nNeoActiveSlot][i] = BITSWAP08(NeoTextROM[nNeoActiveSlot][i] ^ 0xd2, 4, 0, 7, 2, 5, 1, 6, 3); - } - } - } - } -} + if ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_DEDICATED_PCB) { + for (INT32 i = 0; i < nNeoTextROMSize[nNeoActiveSlot]; i++) { + NeoTextROM[nNeoActiveSlot][i] = BITSWAP08(NeoTextROM[nNeoActiveSlot][i] ^ 0xd2, 4, 0, 7, 2, 5, 1, 6, 3); + } + } + } + } + } - Neo68KROM[nNeoActiveSlot] = (UINT8*)BurnMalloc(nCodeSize[nNeoActiveSlot]); // 68K cartridge ROM - if (Neo68KROM[nNeoActiveSlot] == NULL) { + Neo68KROM[nNeoActiveSlot] = (UINT8*)BurnMalloc(nCodeSize[nNeoActiveSlot]); // 68K cartridge ROM + if (Neo68KROM[nNeoActiveSlot] == NULL) + { #ifdef WII_VM - printf("Loading Neo68KROM failed. Not enough memory! exiting...\r"); - sleep(5); - exit(0); -#endif - return 1; - } - Neo68KROMActive = Neo68KROM[nNeoActiveSlot]; - Neo68KFix[nNeoActiveSlot] = Neo68KROM[nNeoActiveSlot]; - - // Load the roms into memory - if (BurnDrvGetHardwareCode() & HARDWARE_SNK_SMA_PROTECTION) { - BurnLoadRom(Neo68KROMActive + 0x0C0000, 0, 1); - NeoLoadCode(pInfo->nCodeOffset + 1, pInfo->nCodeNum - 1, Neo68KROMActive + 0x100000); - } else { - NeoLoadCode(pInfo->nCodeOffset, pInfo->nCodeNum, Neo68KROMActive); - } - - NeoZ80ROM[nNeoActiveSlot] = (UINT8*)BurnMalloc(0x080000); // Z80 cartridge ROM - if (NeoZ80ROM[nNeoActiveSlot] == NULL) { -#ifdef WII_VM - printf("Loading NeoZ80ROM failed. Not enough memory! exiting...\r"); + printf("Loading Neo68KROM failed. Not enough memory! exiting...\r"); sleep(5); exit(0); #endif - return 1; - } - NeoZ80ROMActive = NeoZ80ROM[nNeoActiveSlot]; + return 1; + } + Neo68KROMActive = Neo68KROM[nNeoActiveSlot]; + Neo68KFix[nNeoActiveSlot] = Neo68KROM[nNeoActiveSlot]; - BurnLoadRom(NeoZ80ROMActive, pInfo->nSoundOffset, 1); - if (BurnDrvGetHardwareCode() & HARDWARE_SNK_ENCRYPTED_M1) { - neogeo_cmc50_m1_decrypt(); - } - - if (NeoCallbackActive && NeoCallbackActive->pInitialise) { - NeoCallbackActive->pInitialise(); - } + // Load the roms into memory + if (BurnDrvGetHardwareCode() & HARDWARE_SNK_SMA_PROTECTION) { + BurnLoadRom(Neo68KROMActive + 0x0C0000, 0, 1); + NeoLoadCode(pInfo->nCodeOffset + 1, pInfo->nCodeNum - 1, Neo68KROMActive + 0x100000); + } else { + NeoLoadCode(pInfo->nCodeOffset, pInfo->nCodeNum, Neo68KROMActive); + } + + NeoZ80ROM[nNeoActiveSlot] = (UINT8*)BurnMalloc(0x080000); // Z80 cartridge ROM + if (NeoZ80ROM[nNeoActiveSlot] == NULL) + { +#ifdef WII_VM + printf("Loading NeoZ80ROM failed. Not enough memory! exiting...\r"); + sleep(5); + exit(0); +#endif + return 1; + } + NeoZ80ROMActive = NeoZ80ROM[nNeoActiveSlot]; + + BurnLoadRom(NeoZ80ROMActive, pInfo->nSoundOffset, 1); + if (BurnDrvGetHardwareCode() & HARDWARE_SNK_ENCRYPTED_M1) { + neogeo_cmc50_m1_decrypt(); + } + + if (NeoCallbackActive && NeoCallbackActive->pInitialise) { + NeoCallbackActive->pInitialise(); + } #ifdef WII_VM if(!BurnUseCache) #endif { - // Decode text data - BurnUpdateProgress(0.0, _T("Preprocessing text layer graphics...")/*, BST_PROCESS_TXT*/, 0); - NeoDecodeText(0, nNeoTextROMSize[nNeoActiveSlot], NeoTextROM[nNeoActiveSlot], NeoTextROM[nNeoActiveSlot]); + // Decode text data + BurnUpdateProgress(0.0, _T("Preprocessing text layer graphics...")/*, BST_PROCESS_TXT*/, 0); + NeoDecodeText(0, nNeoTextROMSize[nNeoActiveSlot], NeoTextROM[nNeoActiveSlot], NeoTextROM[nNeoActiveSlot]); - // Decode sprite data - NeoDecodeSprites(NeoSpriteROM[nNeoActiveSlot], nSpriteSize[nNeoActiveSlot]); -} + // Decode sprite data + NeoDecodeSprites(NeoSpriteROM[nNeoActiveSlot], nSpriteSize[nNeoActiveSlot]); + } - if (pInfo->nADPCMANum) { - char* pName; - struct BurnRomInfo ri; - UINT8* pADPCMData; + if (pInfo->nADPCMANum) { + char* pName; + struct BurnRomInfo ri; + UINT8* pADPCMData; - YM2610ADPCMAROM[nNeoActiveSlot] = (UINT8*)BurnMalloc(nYM2610ADPCMASize[nNeoActiveSlot]); - if (YM2610ADPCMAROM[nNeoActiveSlot] == NULL) { + YM2610ADPCMAROM[nNeoActiveSlot] = (UINT8*)BurnMalloc(nYM2610ADPCMASize[nNeoActiveSlot]); + if (YM2610ADPCMAROM[nNeoActiveSlot] == NULL) { #ifdef WII_VM printf("Loading YM2610ADPCMAROM failed. Not enough memory! exiting...\r"); sleep(5); exit(0); #endif - return 1; - } + return 1; + } - ri.nType = 0; - ri.nLen = 0; - BurnDrvGetRomInfo(&ri, pInfo->nADPCMOffset); - BurnDrvGetRomName(&pName, pInfo->nADPCMOffset, 0); + ri.nType = 0; + ri.nLen = 0; + BurnDrvGetRomInfo(&ri, pInfo->nADPCMOffset); + BurnDrvGetRomName(&pName, pInfo->nADPCMOffset, 0); - pADPCMData = YM2610ADPCMAROM[nNeoActiveSlot]; + pADPCMData = YM2610ADPCMAROM[nNeoActiveSlot]; - if (strcmp(BurnDrvGetTextA(DRV_NAME), "sbp") != 0) { // not for sbp! - // pbobblen needs this (V ROMs are v3 & v4), note aof/wh1/wh1h/kotm2 (V ROMs are v2 & v4) - if (pInfo->nADPCMANum == 2 && pName[FindType(pName) + 1] == '3') { - pADPCMData += ri.nLen * 2; - } - } - if (!strcmp(BurnDrvGetTextA(DRV_NAME), "pbobblenb")) { - pADPCMData = YM2610ADPCMAROM[nNeoActiveSlot] + 0x200000; - } + if (strcmp(BurnDrvGetTextA(DRV_NAME), "sbp") != 0) { // not for sbp! + // pbobblen needs this (V ROMs are v3 & v4), note aof/wh1/wh1h/kotm2 (V ROMs are v2 & v4) + if (pInfo->nADPCMANum == 2 && pName[FindType(pName) + 1] == '3') { + pADPCMData += ri.nLen * 2; + } + } + if (!strcmp(BurnDrvGetTextA(DRV_NAME), "pbobblenb")) { + pADPCMData = YM2610ADPCMAROM[nNeoActiveSlot] + 0x200000; + } #ifdef WII_VM - if(!BurnUseCache) + if(!BurnUseCache) #endif - NeoLoadADPCM(pInfo->nADPCMOffset, pInfo->nADPCMANum, pADPCMData); + NeoLoadADPCM(pInfo->nADPCMOffset, pInfo->nADPCMANum, pADPCMData); - if (BurnDrvGetHardwareCode() & HARDWARE_SNK_SWAPV) { - for (INT32 i = 0; i < 0x00200000; i++) { - UINT8 n = YM2610ADPCMAROM[nNeoActiveSlot][i]; - YM2610ADPCMAROM[nNeoActiveSlot][i] = YM2610ADPCMAROM[nNeoActiveSlot][0x00200000 + i]; - YM2610ADPCMAROM[nNeoActiveSlot][0x00200000 + i] = n; - } - } - } + if (BurnDrvGetHardwareCode() & HARDWARE_SNK_SWAPV) { + for (INT32 i = 0; i < 0x00200000; i++) { + UINT8 n = YM2610ADPCMAROM[nNeoActiveSlot][i]; + YM2610ADPCMAROM[nNeoActiveSlot][i] = YM2610ADPCMAROM[nNeoActiveSlot][0x00200000 + i]; + YM2610ADPCMAROM[nNeoActiveSlot][0x00200000 + i] = n; + } + } + } - if (pInfo->nADPCMBNum) { - YM2610ADPCMBROM[nNeoActiveSlot] = (UINT8*)BurnMalloc(nYM2610ADPCMBSize[nNeoActiveSlot]); - if (YM2610ADPCMBROM[nNeoActiveSlot] == NULL) { + if (pInfo->nADPCMBNum) + { + YM2610ADPCMBROM[nNeoActiveSlot] = (UINT8*)BurnMalloc(nYM2610ADPCMBSize[nNeoActiveSlot]); + if (YM2610ADPCMBROM[nNeoActiveSlot] == NULL) + { #ifdef WII_VM printf("Loading YM2610ADPCMBROM failed. Not enough memory! exiting...\r"); sleep(5); exit(0); #endif - return 1; - } + return 1; + } #ifdef WII_VM if(BurnUseCache) - { ReadSoundCache(YM2610ADPCMBROM[nNeoActiveSlot]); - } else - { NeoLoadADPCM(pInfo->nADPCMOffset + pInfo->nADPCMANum, pInfo->nADPCMBNum, YM2610ADPCMBROM[nNeoActiveSlot]); - } #else NeoLoadADPCM(pInfo->nADPCMOffset + pInfo->nADPCMANum, pInfo->nADPCMBNum, YM2610ADPCMBROM[nNeoActiveSlot]); #endif } else { #ifdef WII_VM if(BurnUseCache) - { ReadSoundCache(YM2610ADPCMAROM[nNeoActiveSlot]); - } #endif YM2610ADPCMBROM[nNeoActiveSlot] = YM2610ADPCMAROM[nNeoActiveSlot]; nYM2610ADPCMBSize[nNeoActiveSlot] = nYM2610ADPCMASize[nNeoActiveSlot]; @@ -991,67 +913,67 @@ static INT32 LoadRoms() static void NeoZ80SetBank0(INT32 nBank) { nBank &= 0x0F; - if (nBank != nZ80Bank0) { - UINT8* nStartAddress = NeoZ80ROMActive + (nBank << 14); - ZetMapArea(0x8000, 0xBFFF, 0, nStartAddress); - ZetMapArea(0x8000, 0xBFFF, 2, nStartAddress); + if (nBank != nZ80Bank0) + { + UINT8* nStartAddress = NeoZ80ROMActive + (nBank << 14); + ZetMapArea(0x8000, 0xBFFF, 0, nStartAddress); + ZetMapArea(0x8000, 0xBFFF, 2, nStartAddress); - nZ80Bank0 = nBank; - } - - return; + nZ80Bank0 = nBank; + } } static void NeoZ80SetBank1(INT32 nBank) { nBank &= 0x1F; - if (nBank != nZ80Bank1) { + if (nBank != nZ80Bank1) + { UINT8* nStartAddress = NeoZ80ROMActive + (nBank << 13); ZetMapArea(0xC000, 0xDFFF, 0, nStartAddress); ZetMapArea(0xC000, 0xDFFF, 2, nStartAddress); nZ80Bank1 = nBank; } - - return; } static void NeoZ80SetBank2(INT32 nBank) { nBank &= 0x3F; - if (nBank != nZ80Bank2) { + if (nBank != nZ80Bank2) + { UINT8* nStartAddress = NeoZ80ROMActive + (nBank << 12); ZetMapArea(0xE000, 0xEFFF, 0, nStartAddress); ZetMapArea(0xE000, 0xEFFF, 2, nStartAddress); nZ80Bank2 = nBank; } - - return; } static void NeoZ80SetBank3(INT32 nBank) { nBank &= 0x7F; - if (nBank != nZ80Bank3) { + if (nBank != nZ80Bank3) + { UINT8* nStartAddress = NeoZ80ROMActive + (nBank << 11); ZetMapArea(0xF000, 0xF7FF, 0, nStartAddress); ZetMapArea(0xF000, 0xF7FF, 2, nStartAddress); nZ80Bank3 = nBank; } - - return; } static void NeoZ80MapROM(bool bMapBoardROM) { - if (nNeoSystemType & NEO_SYS_CART) { - if (bMapBoardROM && bZ80BIOS) { + if (nNeoSystemType & NEO_SYS_CART) + { + if (bMapBoardROM && bZ80BIOS) + { // Bank in the Z80 boardROM ZetMapArea(0x0000, 0x7FFF, 0, NeoZ80BIOS); ZetMapArea(0x0000, 0x7FFF, 2, NeoZ80BIOS); - } else { + } + else + { // Bank in the Z80 cartridge ROM ZetMapArea(0x0000, 0x7FFF, 0, NeoZ80ROMActive); ZetMapArea(0x0000, 0x7FFF, 2, NeoZ80ROMActive); @@ -1061,16 +983,16 @@ static void NeoZ80MapROM(bool bMapBoardROM) static void MapVectorTable(bool bMapBoardROM) { - if (!bMapBoardROM && Neo68KROMActive) { + if (!bMapBoardROM && Neo68KROMActive) SekMapMemory(Neo68KFix[nNeoActiveSlot], 0x000000, 0x0003FF, SM_ROM); - } else { + else SekMapMemory(NeoVectorActive, 0x000000, 0x0003FF, SM_ROM); - } } inline static void MapPalette(INT32 nBank) { - if (nNeoPaletteBank != nBank) { + if (nNeoPaletteBank != nBank) + { nNeoPaletteBank = nBank; SekMapMemory(NeoPalSrc[nBank], 0x400000, 0x401FFF, SM_ROM); @@ -1081,45 +1003,44 @@ inline static void MapPalette(INT32 nBank) static void Bankswitch(UINT32 nBank) { nBank = 0x100000 + ((nBank & 7) << 20); - if (nBank >= nCodeSize[nNeoActiveSlot]) { + if (nBank >= nCodeSize[nNeoActiveSlot]) nBank = 0x100000; - } - if (nBank != nNeo68KROMBank) { -// bprintf(PRINT_NORMAL, "Bankswitched main ROM, new address is 0x%08X.\n", nBank); + if (nBank != nNeo68KROMBank) + { nNeo68KROMBank = nBank; SekMapMemory(Neo68KROMActive + nNeo68KROMBank, 0x200000, 0x2FFFFF, SM_ROM); } } -void NeoMapBank() +void NeoMapBank(void) { SekMapMemory(Neo68KROMActive + nNeo68KROMBank, 0x200000, 0x2FFFFF, SM_ROM); } -void NeoMap68KFix() +void NeoMap68KFix(void) { - if ((nNeoSystemType & NEO_SYS_CART) && (nCodeSize[nNeoActiveSlot] > 0x100000)) { - + if ((nNeoSystemType & NEO_SYS_CART) && (nCodeSize[nNeoActiveSlot] > 0x100000)) + { SekMapMemory(Neo68KFix[nNeoActiveSlot] + 0x0400, 0x000400, 0x0FFFFF, SM_ROM); - if (Neo68KROM[nNeoActiveSlot]) { + if (Neo68KROM[nNeoActiveSlot]) memcpy(NeoVector[nNeoActiveSlot] + 0x80, Neo68KFix[nNeoActiveSlot] + 0x80, 0x0380); - } } MapVectorTable(b68KBoardROMBankedIn); } -void NeoUpdateVector() +void NeoUpdateVector(void) { // Create copy of 68K with BIOS vector table - for (INT32 i = 0; i < MAX_SLOT; i++) { - if (NeoVector[i]) { + for (INT32 i = 0; i < MAX_SLOT; i++) + { + if (NeoVector[i]) + { memcpy(NeoVector[i] + 0x00, Neo68KBIOS, 0x0080); - if (Neo68KROM[i]) { + if (Neo68KROM[i]) memcpy(NeoVector[i] + 0x80, Neo68KFix[i] + 0x80, 0x0380); - } } } } @@ -1129,24 +1050,14 @@ void NeoUpdateVector() void __fastcall neogeoWriteByteBankswitch(UINT32 sekAddress, UINT8 byteValue) { - if (sekAddress >= 0x2FFFF0) { - -// bprintf(PRINT_NORMAL, _T(" - Bankswitch: 0x%06X -> 0x%02X\n"), sekAddress, byteValue); - + if (sekAddress >= 0x2FFFF0) Bankswitch(byteValue); - return; - } } void __fastcall neogeoWriteWordBankswitch(UINT32 sekAddress, UINT16 wordValue) { - if (sekAddress >= 0x2FFFF0) { - -// bprintf(PRINT_NORMAL, _T(" - Bankswitch: 0x%06X -> 0x%04X\n"), sekAddress, wordValue); - + if (sekAddress >= 0x2FFFF0) Bankswitch(wordValue); - return; - } } // ---------------------------------------------------------------------------- @@ -1160,9 +1071,8 @@ static inline void neogeoSynchroniseZ80(INT32 nExtraCycles) INT32 nCycles = ((INT64)SekTotalCycles() * nCyclesTotal[1] / nCyclesTotal[0]) + nExtraCycles; #endif - if (nCycles <= ZetTotalCycles()) { + if (nCycles <= ZetTotalCycles()) return; - } nCycles68KSync = nCycles - nExtraCycles; @@ -1173,13 +1083,10 @@ static inline void neogeoSynchroniseZ80(INT32 nExtraCycles) static void neogeoFMIRQHandler(INT32, INT32 nStatus) { -// bprintf(PRINT_NORMAL, _T(" YM2610 IRQ status: 0x%02X (%6i cycles)\n"), nStatus, ZetTotalCycles()); - - if (nStatus & 1) { + if (nStatus & 1) ZetSetIRQLine(0xFF, ZET_IRQSTATUS_ACK); - } else { + else ZetSetIRQLine(0, ZET_IRQSTATUS_NONE); - } } static INT32 neogeoSynchroniseStream(INT32 nSoundRate) @@ -1187,7 +1094,7 @@ static INT32 neogeoSynchroniseStream(INT32 nSoundRate) return (INT64)ZetTotalCycles() * nSoundRate / nZ80Clockspeed; } -static double neogeoGetTime() +static double neogeoGetTime(void) { return (double)ZetTotalCycles() / nZ80Clockspeed; } @@ -1196,116 +1103,99 @@ static double neogeoGetTime() UINT8 __fastcall neogeoReadByteGambling(UINT32 sekAddress) { - switch (sekAddress) { - case 0x280001: { + switch (sekAddress) + { + case 0x280001: return 0xff - NeoInput[3]; - } - - case 0x2c0001: { + case 0x2c0001: return 0x03; - } } -// bprintf(PRINT_NORMAL, _T("Read Byte 0x%08X.\n"), sekAddress); - return 0xff; } UINT16 __fastcall neogeoReadWordGambling(UINT32 sekAddress) { - switch (sekAddress) { - case 0x280000: { + switch (sekAddress) + { + case 0x280000: return 0xff - NeoInput[3]; - } - - case 0x2c0000: { + case 0x2c0000: return 0x0003; - } } -// bprintf(PRINT_NORMAL, _T("Read Word 0x%08X.\n"), sekAddress); - return 0xffff; } UINT8 __fastcall vliner_timing(UINT32 sekAddress) { - switch (sekAddress) { - case 0x320000: { - INT32 nReply = nSoundReply; + switch (sekAddress) + { + case 0x320000: + { + INT32 nReply = nSoundReply; #if 1 && defined USE_SPEEDHACKS - // nSoundStatus: &1 = sound latch read, &2 = response written - if (nSoundStatus != 3) { - neogeoSynchroniseZ80(0x0100); - } + // nSoundStatus: &1 = sound latch read, &2 = response written + if (nSoundStatus != 3) + neogeoSynchroniseZ80(0x0100); #endif - if (nSoundStatus & 1) { -// bprintf(PRINT_NORMAL, _T(" - Sound reply read (0x%02X).\n"), nSoundReply); - - return nReply; - } else { -// bprintf(PRINT_NORMAL, _T(" - Sound reply read while sound pending (0x%02X).\n"), nSoundReply); - - return nReply & 0x7F; - } - } - - case 0x320001: { -// if (!bAESBIOS) { - if (nBIOS != 10 && nBIOS != 11 && nBIOS != 12) { - UINT8 nuPD4990AOutput = uPD4990ARead(SekTotalCycles() - nuPD4990ATicks); - nuPD4990ATicks = SekTotalCycles(); - return 0x3F | (nuPD4990AOutput << 6); - } - - return (0x3f) & 0xE7; - } - } + if (nSoundStatus & 1) + return nReply; + return nReply & 0x7F; + } + case 0x320001: + if (nBIOS != 10 && nBIOS != 11 && nBIOS != 12) + { + UINT8 nuPD4990AOutput = uPD4990ARead(SekTotalCycles() - nuPD4990ATicks); + nuPD4990ATicks = SekTotalCycles(); + return 0x3F | (nuPD4990AOutput << 6); + } + return (0x3f) & 0xE7; + } -// bprintf(PRINT_NORMAL, _T("Read Byte 0x%08X.\n"), sekAddress); return 0xff; } // ----------------------------------------------------------------------------- -static void NeoMapActiveCartridge() +static void NeoMapActiveCartridge(void) { - if (!(nNeoSystemType & NEO_SYS_CART)) { + if (!(nNeoSystemType & NEO_SYS_CART)) + { nNeoActiveSlot = 0; return; } neogeoSynchroniseZ80(0); - if (NeoCallbackActive && NeoCallbackActive->pRemoveHandlers) { + if (NeoCallbackActive && NeoCallbackActive->pRemoveHandlers) NeoCallbackActive->pRemoveHandlers(); - } NeoVectorActive = NeoVector[nNeoActiveSlot]; - if (Neo68KROM[nNeoActiveSlot] == NULL) { + if (Neo68KROM[nNeoActiveSlot] == NULL) + { + // If an empty slot is selected, only the vector table is valid - // If an empty slot is selected, only the vector table is valid + Neo68KROMActive = NULL; - Neo68KROMActive = NULL; + SekMapHandler(0, 0x000000, 0x0FFFFF, SM_RAM); + SekMapHandler(0, 0x200000, 0x2FFFFF, SM_RAM); - SekMapHandler(0, 0x000000, 0x0FFFFF, SM_RAM); - SekMapHandler(0, 0x200000, 0x2FFFFF, SM_RAM); + b68KBoardROMBankedIn = true; + MapVectorTable(b68KBoardROMBankedIn); - b68KBoardROMBankedIn = true; - MapVectorTable(b68KBoardROMBankedIn); + NeoCallbackActive = NULL; - NeoCallbackActive = NULL; + ZetSetBUSREQLine(1); - ZetSetBUSREQLine(1); + NeoSetSpriteSlot(nNeoActiveSlot); + NeoSetTextSlot(nNeoActiveSlot); - NeoSetSpriteSlot(nNeoActiveSlot); - NeoSetTextSlot(nNeoActiveSlot); - - return; - } + return; + } Neo68KROMActive = Neo68KROM[nNeoActiveSlot]; NeoZ80ROMActive = NeoZ80ROM[nNeoActiveSlot]; @@ -1343,36 +1233,39 @@ static void NeoMapActiveCartridge() SekSetWriteByteHandler(4, neogeoWriteByteBankswitch); } - if (NeoCallbackActive->pInstallHandlers) { + if (NeoCallbackActive->pInstallHandlers) NeoCallbackActive->pInstallHandlers(); - } - if (nCodeSize[nNeoActiveSlot] > 0x100000) { + if (nCodeSize[nNeoActiveSlot] > 0x100000) + { nNeo68KROMBank = 0x100000; - if (NeoCallbackActive->pBankswitch) { + if (NeoCallbackActive->pBankswitch) NeoCallbackActive->pBankswitch(); - } else { - if ((BurnDrvGetHardwareCode() & HARDWARE_SNK_CONTROLMASK) != HARDWARE_SNK_GAMBLING) { + else + { + if ((BurnDrvGetHardwareCode() & HARDWARE_SNK_CONTROLMASK) != HARDWARE_SNK_GAMBLING) NeoMapBank(); - } } } - if ((BurnDrvGetHardwareCode() & HARDWARE_SNK_CONTROLMASK) == HARDWARE_SNK_GAMBLING) { - SekMapMemory(NeoNVRAM2, 0x200000, 0x201FFF, SM_RAM); // 68K RAM - - SekMapHandler(6, 0x202000, 0x2FFFFF, SM_READ); - SekSetReadByteHandler(6, neogeoReadByteGambling); - SekSetReadWordHandler(6, neogeoReadWordGambling); - - if (!strcmp(BurnDrvGetTextA(DRV_NAME), "vliner") || !strcmp(BurnDrvGetTextA(DRV_NAME), "vlinero")) { - SekMapHandler(7, 0x320000, 0x320001, SM_READ); - SekSetReadByteHandler(7, vliner_timing); - } - } + if ((BurnDrvGetHardwareCode() & HARDWARE_SNK_CONTROLMASK) == HARDWARE_SNK_GAMBLING) + { + SekMapMemory(NeoNVRAM2, 0x200000, 0x201FFF, SM_RAM); // 68K RAM - if (NeoZ80ROMActive) { + SekMapHandler(6, 0x202000, 0x2FFFFF, SM_READ); + SekSetReadByteHandler(6, neogeoReadByteGambling); + SekSetReadWordHandler(6, neogeoReadWordGambling); + + if (!strcmp(BurnDrvGetTextA(DRV_NAME), "vliner") || !strcmp(BurnDrvGetTextA(DRV_NAME), "vlinero")) + { + SekMapHandler(7, 0x320000, 0x320001, SM_READ); + SekSetReadByteHandler(7, vliner_timing); + } + } + + if (NeoZ80ROMActive) + { ZetSetBUSREQLine(0); nZ80Bank0 = nZ80Bank1 = nZ80Bank2 = nZ80Bank3 = -1; @@ -1380,9 +1273,9 @@ static void NeoMapActiveCartridge() NeoZ80SetBank1(0x06); NeoZ80SetBank2(0x0E); NeoZ80SetBank3(0x1E); - } else { - ZetSetBUSREQLine(1); } + else + ZetSetBUSREQLine(1); MapVectorTable(b68KBoardROMBankedIn); NeoZ80MapROM(bZ80BoardROMBankedIn); @@ -1406,56 +1299,59 @@ INT32 NeoScan(INT32 nAction, INT32* pnMin) INT32 nOldBIOS = nBIOS; struct BurnArea ba; - if (pnMin) { // Return minimum compatible version + if (pnMin) // Return minimum compatible version *pnMin = 0x029713; - } // Make sure we have the correct value for nBIOS - if (nAction & ACB_DRIVER_DATA) { + if (nAction & ACB_DRIVER_DATA) + { SCAN_VAR(nBIOS); // Update the system type immediately NeoSetSystemType(); } - if (nAction & ACB_MEMORY_ROM) { + if (nAction & ACB_MEMORY_ROM) + { + if (nNeoSystemType & NEO_SYS_CART) + { + ba.Data = Neo68KBIOS; + ba.nLen = 0x80000; + ba.nAddress = 0; + ba.szName = "68K BIOS"; + BurnAcb(&ba); - if (nNeoSystemType & NEO_SYS_CART) { - ba.Data = Neo68KBIOS; - ba.nLen = 0x80000;//(nNeoSystemType & NEO_SYS_PCB) ? 0x00080000 : 0x00020000; - ba.nAddress = 0; - ba.szName = "68K BIOS"; - BurnAcb(&ba); + ba.Data = Neo68KROMActive; + ba.nLen = nCodeSize[nNeoActiveSlot]; + ba.nAddress = 0; + ba.szName = "68K ROM"; + BurnAcb(&ba); - ba.Data = Neo68KROMActive; - ba.nLen = nCodeSize[nNeoActiveSlot]; - ba.nAddress = 0; - ba.szName = "68K ROM"; - BurnAcb(&ba); + ba.Data = NeoZ80BIOS; + ba.nLen = 0x00020000; + ba.nAddress = 0; + ba.szName = "Z80 BIOS"; + BurnAcb(&ba); - ba.Data = NeoZ80BIOS; - ba.nLen = 0x00020000; - ba.nAddress = 0; - ba.szName = "Z80 BIOS"; - BurnAcb(&ba); + ba.Data = NeoZ80ROMActive; + ba.nLen = 0x00080000; + ba.nAddress = 0; + ba.szName = "Z80 ROM"; + BurnAcb(&ba); - ba.Data = NeoZ80ROMActive; - ba.nLen = 0x00080000; - ba.nAddress = 0; - ba.szName = "Z80 ROM"; - BurnAcb(&ba); + ba.Data = YM2610ADPCMAROM[nNeoActiveSlot]; + ba.nLen = nYM2610ADPCMASize[nNeoActiveSlot]; + ba.nAddress = 0; + ba.szName = "ADPCM ROM"; + BurnAcb(&ba); - ba.Data = YM2610ADPCMAROM[nNeoActiveSlot]; - ba.nLen = nYM2610ADPCMASize[nNeoActiveSlot]; - ba.nAddress = 0; - ba.szName = "ADPCM ROM"; - BurnAcb(&ba); - - ba.Data = YM2610ADPCMBROM[nNeoActiveSlot]; - ba.nLen = nYM2610ADPCMBSize[nNeoActiveSlot]; - ba.nAddress = 0; - ba.szName = "Delta-T ROM"; - BurnAcb(&ba); - } else { + ba.Data = YM2610ADPCMBROM[nNeoActiveSlot]; + ba.nLen = nYM2610ADPCMBSize[nNeoActiveSlot]; + ba.nAddress = 0; + ba.szName = "Delta-T ROM"; + BurnAcb(&ba); + } + else + { ba.Data = Neo68KBIOS; ba.nLen = 0x00080000; ba.nAddress = 0; @@ -1464,31 +1360,31 @@ INT32 NeoScan(INT32 nAction, INT32* pnMin) } } - if (nAction & ACB_MEMCARD) { - if ((nNeoSystemType & NEO_SYS_CART) && !(nNeoSystemType & NEO_SYS_PCB)) { // Scan memory card - - if (pnMin && (nAction & ACB_TYPEMASK) == ACB_MEMCARD) { // Return minimum compatible version + if (nAction & ACB_MEMCARD) + { + if ((nNeoSystemType & NEO_SYS_CART) && !(nNeoSystemType & NEO_SYS_PCB)) // Scan memory card + { + if (pnMin && (nAction & ACB_TYPEMASK) == ACB_MEMCARD) // Return minimum compatible version *pnMin = 0x029713; - } ba.Data = NeoMemoryCard; ba.nLen = 0x020000; ba.nAddress = 0; ba.szName = "Memory card"; - if ((nAction & ACB_TYPEMASK) == ACB_MEMCARD) { - if (nAction & ACB_WRITE) { + if ((nAction & ACB_TYPEMASK) == ACB_MEMCARD) + { + if (nAction & ACB_WRITE) bMemoryCardInserted = true; - } - if (nAction & ACB_READ) { + if (nAction & ACB_READ) + { bMemoryCardInserted = false; - // If a card is inserted, determine the size - if (*((UINT16*)NeoMemoryCard) != 0x8000) { + if (*((UINT16*)NeoMemoryCard) != 0x8000) + { INT32 nSize = (NeoMemoryCard[21] << 8) | NeoMemoryCard[23]; - if (nSize >= 0x1000) { + if (nSize >= 0x1000) ba.nLen = nSize; - } } } } @@ -1497,11 +1393,10 @@ INT32 NeoScan(INT32 nAction, INT32* pnMin) } } #ifdef WANT_NEOGEOCD - if ((nNeoSystemType & NEO_SYS_CD) && (nAction & ACB_NVRAM)) { // Scan non-volatile memory (built-in memory card) - - if (pnMin && (nAction & ACB_TYPEMASK) == ACB_NVRAM) { // Return minimum compatible version + if ((nNeoSystemType & NEO_SYS_CD) && (nAction & ACB_NVRAM)) // Scan non-volatile memory (built-in memory card) + { + if (pnMin && (nAction & ACB_TYPEMASK) == ACB_NVRAM) // Return minimum compatible version *pnMin = 0x029713; - } ba.Data = NeoMemoryCard; ba.nLen = 0x004000; @@ -1510,11 +1405,10 @@ INT32 NeoScan(INT32 nAction, INT32* pnMin) BurnAcb(&ba); } #endif - if ((nNeoSystemType & NEO_SYS_MVS) && (nAction & ACB_NVRAM)) { // Scan non-volatile memory - - if (pnMin && (nAction & ACB_TYPEMASK) == ACB_NVRAM) { // Return minimum compatible version + if ((nNeoSystemType & NEO_SYS_MVS) && (nAction & ACB_NVRAM)) // Scan non-volatile memory + { + if (pnMin && (nAction & ACB_TYPEMASK) == ACB_NVRAM) // Return minimum compatible version *pnMin = 0x029713; - } ba.Data = NeoNVRAM; ba.nLen = 0x00010000; @@ -1523,7 +1417,8 @@ INT32 NeoScan(INT32 nAction, INT32* pnMin) BurnAcb(&ba); } - if (((BurnDrvGetHardwareCode() & HARDWARE_SNK_CONTROLMASK) == HARDWARE_SNK_GAMBLING) && (nAction & ACB_NVRAM)) { + if (((BurnDrvGetHardwareCode() & HARDWARE_SNK_CONTROLMASK) == HARDWARE_SNK_GAMBLING) && (nAction & ACB_NVRAM)) + { ba.Data = NeoNVRAM2; ba.nLen = 0x00002000; ba.nAddress = 0; @@ -1598,9 +1493,8 @@ INT32 NeoScan(INT32 nAction, INT32* pnMin) BurnAcb(&ba); } #endif - if (NeoCallbackActive && NeoCallbackActive->pScan) { + if (NeoCallbackActive && NeoCallbackActive->pScan) NeoCallbackActive->pScan(nAction, pnMin); - } } if (nAction & ACB_DRIVER_DATA) { // Scan driver data @@ -1610,13 +1504,11 @@ INT32 NeoScan(INT32 nAction, INT32* pnMin) BurnYM2610Scan(nAction, pnMin); - if (nNeoSystemType & NEO_SYS_MVS) { + if (nNeoSystemType & NEO_SYS_MVS) uPD4990AScan(nAction, pnMin); - } - if (NeoCallbackActive && NeoCallbackActive->pScan) { + if (NeoCallbackActive && NeoCallbackActive->pScan) NeoCallbackActive->pScan(nAction, pnMin); - } SCAN_VAR(nCyclesExtra); @@ -1712,8 +1604,6 @@ INT32 NeoScan(INT32 nAction, INT32* pnMin) SCAN_VAR(nLEDLatch); SCAN_VAR(nLED[3]); - -// BurnGameFeedback(sizeof(nLED), nLED); } } @@ -1725,52 +1615,44 @@ INT32 NeoScan(INT32 nAction, INT32* pnMin) UINT8 __fastcall neogeoZ80In(UINT16 nAddress) { - switch (nAddress & 0xFF) { - case 0x00: // Read sound command -// bprintf(PRINT_NORMAL, _T(" - Sound command received (0x%02X).\n"), nSoundLatch); - nSoundStatus = 1; + switch (nAddress & 0xFF) + { + case 0x00: // Read sound command + nSoundStatus = 1; #if 1 && defined USE_SPEEDHACKS - nSoundPrevReply = -1; + nSoundPrevReply = -1; #endif - return nSoundLatch; + return nSoundLatch; - case 0x04: - return BurnYM2610Read(0); - case 0x05: - return BurnYM2610Read(1); - case 0x06: - return BurnYM2610Read(2); + case 0x04: + return BurnYM2610Read(0); + case 0x05: + return BurnYM2610Read(1); + case 0x06: + return BurnYM2610Read(2); - case 0x08: -// bprintf(PRINT_NORMAL, " - Z80 bank 3 -> 0x%02X\n", nAddress >> 8); - NeoZ80SetBank3(nAddress >> 8); - break; - case 0x09: -// bprintf(PRINT_NORMAL, " - Z80 bank 2 -> 0x%02X\n", nAddress >> 8); - NeoZ80SetBank2(nAddress >> 8); - break; - case 0x0A: -// bprintf(PRINT_NORMAL, " - Z80 bank 1 -> 0x%02X\n", nAddress >> 8); - NeoZ80SetBank1(nAddress >> 8); - break; - case 0x0B: -// bprintf(PRINT_NORMAL, " - Z80 bank 0 -> 0x%02X\n", nAddress >> 8); - NeoZ80SetBank0(nAddress >> 8); - break; - -// default: { -// bprintf(PRINT_NORMAL, _T)" - Z80 read port 0x%04X.\n"), nAddress); -// } - } + case 0x08: + NeoZ80SetBank3(nAddress >> 8); + break; + case 0x09: + NeoZ80SetBank2(nAddress >> 8); + break; + case 0x0A: + NeoZ80SetBank1(nAddress >> 8); + break; + case 0x0B: + NeoZ80SetBank0(nAddress >> 8); + break; + } return 0; } UINT8 __fastcall neogeoZ80InCD(UINT16 nAddress) { - switch (nAddress & 0xFF) { + switch (nAddress & 0xFF) + { case 0x00: // Read sound command -// bprintf(PRINT_NORMAL, _T(" - Sound command received (0x%02X).\n"), nSoundLatch); nSoundStatus = 1; #if 1 && defined USE_SPEEDHACKS nSoundPrevReply = -1; @@ -1789,11 +1671,8 @@ UINT8 __fastcall neogeoZ80InCD(UINT16 nAddress) case 0x09: case 0x0A: case 0x0B: + default: break; - - default: { -// bprintf(PRINT_NORMAL, _T(" - Z80 read port 0x%04X.\n"), nAddress); - } } return 0; @@ -1801,54 +1680,44 @@ UINT8 __fastcall neogeoZ80InCD(UINT16 nAddress) void __fastcall neogeoZ80Out(UINT16 nAddress, UINT8 nValue) { - switch (nAddress & 0x0FF) { - case 0x00: -// bprintf(PRINT_NORMAL, _T(" - Z80 port 0x00 -> 0x%02X.\n"), nValue); - break; - case 0x04: - case 0x05: - case 0x06: - case 0x07: - BurnYM2610Write(nAddress & 3, nValue); - break; + switch (nAddress & 0x0FF) + { + case 0x04: + case 0x05: + case 0x06: + case 0x07: + BurnYM2610Write(nAddress & 3, nValue); + break; - case 0x0C: // Write reply to sound commands -// bprintf(PRINT_NORMAL, _T(" - Sound reply sent (0x%02X).\n"), nValue); - nSoundReply = nValue; + case 0x0C: // Write reply to sound commands + nSoundReply = nValue; #if 1 && defined USE_SPEEDHACKS - if (nSoundPrevReply != nValue) { - nSoundPrevReply = nValue; + if (nSoundPrevReply != nValue) + { + nSoundPrevReply = nValue; - // s1945p replies a 0x00, then an 0xFF; - // the 68K loops until it has read both - if (nSoundReply == 0) { - nSoundStatus &= ~2; - } else { - nSoundStatus |= 2; - } - } else { - nSoundStatus |= 2; - } + // s1945p replies a 0x00, then an 0xFF; + // the 68K loops until it has read both + if (nSoundReply == 0) + nSoundStatus &= ~2; + else + nSoundStatus |= 2; + } + else + nSoundStatus |= 2; - if (ZetTotalCycles() > nCycles68KSync) { - -// bprintf(PRINT_NORMAL, _T(" %i\n"), ZetTotalCycles()); - BurnTimerUpdateEnd(); -// bprintf(PRINT_NORMAL, _T(" %i - %i\n"), ZetTotalCycles(), nCycles68KSync); - } + if (ZetTotalCycles() > nCycles68KSync) + BurnTimerUpdateEnd(); #endif - break; + break; - case 0x80: - bprintf(PRINT_ERROR, _T(" - Z80 port 0x%04X -> 0x%02X.\n"), nAddress, nValue); - break; - - default: { -// bprintf(PRINT_NORMAL, _T(" - Z80 port 0x%04X -> 0x%02X.\n"), nAddress, nValue); - } - } + case 0x80: + case 0x00: + default: + break; + } } // ----------------------------------------------------------------------------- @@ -1856,8 +1725,8 @@ void __fastcall neogeoZ80Out(UINT16 nAddress, UINT8 nValue) #ifdef WANT_NEOGEOCD INT32 __fastcall NeoCDIRQCallback(INT32 /* nIRQ */) { -// bprintf(PRINT_NORMAL, _T(" - IRQ Callback %i %2X.\n"), nIRQ, nNeoCDIRQVector); - if (nNeoCDIRQVectorAck) { + if (nNeoCDIRQVectorAck) + { nNeoCDIRQVectorAck = 0; return nNeoCDIRQVector; } @@ -1876,20 +1745,16 @@ static inline void NeoIRQUpdate(UINT16 wordValue) { nIRQAcknowledge |= (wordValue & 7); -// bprintf(PRINT_NORMAL, _T(" - IRQ Ack -> %02X (at line %3i).\n"), nIRQAcknowledge, SekCurrentScanline()); - - if ((nIRQAcknowledge & 7) == 7) { + if ((nIRQAcknowledge & 7) == 7) SekSetIRQLine(7, SEK_IRQSTATUS_NONE); - } else { - if ((nIRQAcknowledge & 1) == 0) { + else + { + if ((nIRQAcknowledge & 1) == 0) SekSetIRQLine(3, SEK_IRQSTATUS_ACK); - } - if ((nIRQAcknowledge & 2) == 0) { + if ((nIRQAcknowledge & 2) == 0) SekSetIRQLine(nScanlineIRQ, SEK_IRQSTATUS_ACK); - } - if ((nIRQAcknowledge & 4) == 0) { + if ((nIRQAcknowledge & 4) == 0) SekSetIRQLine(nVBLankIRQ, SEK_IRQSTATUS_ACK); - } } } #ifdef WANT_NEOGEOCD @@ -1897,41 +1762,42 @@ static inline void NeoCDIRQUpdate(UINT8 byteValue) { nIRQAcknowledge |= (byteValue & 0x38); -// bprintf(PRINT_NORMAL, _T(" - IRQ Ack -> %02X (CD, at line %3i).\n"), nIRQAcknowledge, SekCurrentScanline()); - - if ((nIRQAcknowledge & 0x3F) == 0x3F) { + if ((nIRQAcknowledge & 0x3F) == 0x3F) SekSetIRQLine(7, SEK_IRQSTATUS_NONE); - } else { - if ((nIRQAcknowledge & 0x07) != 7) { - NeoIRQUpdate(0); - return; - } - if ((nIRQAcknowledge & 0x08) == 0) { - nNeoCDIRQVector = 0x17; - nNeoCDIRQVectorAck = 1; - SekSetIRQLine(4, SEK_IRQSTATUS_ACK /*| SEK_IRQSTATUS_CALLBACK*/); - return; - } - if ((nIRQAcknowledge & 0x10) == 0) { - nNeoCDIRQVector = 0x16; - nNeoCDIRQVectorAck = 1; - SekSetIRQLine(4, SEK_IRQSTATUS_ACK /*| SEK_IRQSTATUS_CALLBACK*/); - return; - } - if ((nIRQAcknowledge & 0x20) == 0) { - nNeoCDIRQVector = 0x15; - nNeoCDIRQVectorAck = 1; - SekSetIRQLine(4, SEK_IRQSTATUS_ACK /*| SEK_IRQSTATUS_CALLBACK*/); - return; - } - } + else + { + if ((nIRQAcknowledge & 0x07) != 7) + { + NeoIRQUpdate(0); + return; + } + if ((nIRQAcknowledge & 0x08) == 0) + { + nNeoCDIRQVector = 0x17; + nNeoCDIRQVectorAck = 1; + SekSetIRQLine(4, SEK_IRQSTATUS_ACK /*| SEK_IRQSTATUS_CALLBACK*/); + return; + } + if ((nIRQAcknowledge & 0x10) == 0) + { + nNeoCDIRQVector = 0x16; + nNeoCDIRQVectorAck = 1; + SekSetIRQLine(4, SEK_IRQSTATUS_ACK /*| SEK_IRQSTATUS_CALLBACK*/); + return; + } + if ((nIRQAcknowledge & 0x20) == 0) + { + nNeoCDIRQVector = 0x15; + nNeoCDIRQVectorAck = 1; + SekSetIRQLine(4, SEK_IRQSTATUS_ACK /*| SEK_IRQSTATUS_CALLBACK*/); + return; + } + } } #endif static inline void SendSoundCommand(const UINT8 nCommand) { -// bprintf(PRINT_NORMAL, _T(" - Sound command sent (0x%02X).\n"), nCommand); - neogeoSynchroniseZ80(0); nSoundStatus &= ~1; @@ -1946,24 +1812,18 @@ static inline void SendSoundCommand(const UINT8 nCommand) static UINT8 ReadInput1(INT32 nOffset) { - switch (nOffset) { + switch (nOffset) + { case 0x00: -// bprintf(PRINT_NORMAL, _T(" -- bank %d inputP0[0x%02X] read (%i).\n"), 0, nInputSelect, SekTotalCycles()); return ~NeoInputBank[nJoyport0[nInputSelect & 0x07]]; - case 0x01: -// bprintf(PRINT_NORMAL, _T(" - 0x%06X read (byte).\n"), sekAddress); - if (nNeoSystemType & NEO_SYS_MVS) { + if (nNeoSystemType & NEO_SYS_MVS) return ~NeoInputBank[4]; - } - return ~0; - + break; case 0x81: -// bprintf(PRINT_NORMAL, _T(" - 0x%06X read (byte).\n"), sekAddress); - if (nNeoSystemType & NEO_SYS_MVS) { + if (nNeoSystemType & NEO_SYS_MVS) return ~NeoInputBank[5]; - } - return ~0; + break; } return ~0; @@ -1971,330 +1831,252 @@ static UINT8 ReadInput1(INT32 nOffset) static UINT8 ReadInput2(INT32 nOffset) { - if ((nOffset & 1) == 0) { -// bprintf(PRINT_NORMAL, _T(" -- bank %d inputP1[0x%02X] read.\n"), 0, nInputSelect); + if ((nOffset & 1) == 0) return ~NeoInputBank[nJoyport1[(nInputSelect >> 3) & 0x07]]; - } - return ~0; } static UINT8 ReadInput3(INT32 nOffset) { - if ((nOffset & 1) == 0) { -// bprintf(PRINT_NORMAL, " -- input 2 read.\n"); + if ((nOffset & 1) == 0) return ~NeoInputBank[2]; - } - return ~0; } UINT8 __fastcall neogeoReadByte(UINT32 sekAddress) { - switch (sekAddress & 0xFE0000) { - case 0x300000: - return ReadInput1(sekAddress & 0xFF); - - case 0x320000: { - if ((sekAddress & 1) == 0) { - INT32 nReply = nSoundReply; + switch (sekAddress & 0xFE0000) + { + case 0x300000: + return ReadInput1(sekAddress & 0xFF); + case 0x320000: + if ((sekAddress & 1) == 0) + { + INT32 nReply = nSoundReply; #if 1 && defined USE_SPEEDHACKS - // nSoundStatus: &1 = sound latch read, &2 = response written - if (nSoundStatus != 3) { - neogeoSynchroniseZ80(0x0100); - } + // nSoundStatus: &1 = sound latch read, &2 = response written + if (nSoundStatus != 3) + neogeoSynchroniseZ80(0x0100); #else - neogeoSynchroniseZ80(0); + neogeoSynchroniseZ80(0); #endif - if ((nSoundStatus & 1) == 0) { -// bprintf(PRINT_NORMAL, _T(" - Sound reply read while sound pending (0x%02X).\n"), nSoundReply); + if ((nSoundStatus & 1) == 0) + return nReply & 0x7F; + return nReply; + } - return nReply & 0x7F; - } - -// bprintf(PRINT_NORMAL, _T(" - Sound reply read (0x%02X).\n"), nSoundReply); - return nReply; - } - - if (nNeoSystemType & NEO_SYS_MVS) { - UINT8 nuPD4990AOutput = uPD4990ARead(SekTotalCycles() - nuPD4990ATicks); - nuPD4990ATicks = SekTotalCycles(); - return (~NeoInputBank[3] & 0x3F) | (nuPD4990AOutput << 6); - } - - return (~NeoInputBank[3] & 0x7F) & 0xE7; - } - - case 0x340000: - return ReadInput2(sekAddress & 0xFF); - - case 0x380000: - return ReadInput3(sekAddress & 0xFF); - - default: - bprintf(PRINT_NORMAL, _T(" - 0x%08X read (byte, PC: %08X)\n"), sekAddress, SekGetPC(-1)); - } + if (nNeoSystemType & NEO_SYS_MVS) + { + UINT8 nuPD4990AOutput = uPD4990ARead(SekTotalCycles() - nuPD4990ATicks); + nuPD4990ATicks = SekTotalCycles(); + return (~NeoInputBank[3] & 0x3F) | (nuPD4990AOutput << 6); + } + return (~NeoInputBank[3] & 0x7F) & 0xE7; + case 0x340000: + return ReadInput2(sekAddress & 0xFF); + case 0x380000: + return ReadInput3(sekAddress & 0xFF); + default: + break; + } return ~0; } UINT16 __fastcall neogeoReadWord(UINT32 sekAddress) { - switch (sekAddress & 0xFE0000) { - case 0x300000: - return (ReadInput1(sekAddress & 0xFE) << 8) | ReadInput1((sekAddress & 0xFE) | 1); - - case 0x320000: - SEK_DEF_READ_WORD(0, sekAddress); - - case 0x340000: - return (ReadInput2(sekAddress & 0xFE) << 8) | ReadInput2((sekAddress & 0xFE) | 1); + switch (sekAddress & 0xFE0000) + { + case 0x300000: + return (ReadInput1(sekAddress & 0xFE) << 8) | ReadInput1((sekAddress & 0xFE) | 1); - case 0x380000: - return (ReadInput3(sekAddress & 0xFE) << 8) | ReadInput3((sekAddress & 0xFE) | 1); + case 0x320000: + SEK_DEF_READ_WORD(0, sekAddress); + /* fall-through */ - default: - bprintf(PRINT_NORMAL, _T(" - 0x%08X read (word, PC: %08X)\n"), sekAddress, SekGetPC(-1)); - } + case 0x340000: + return (ReadInput2(sekAddress & 0xFE) << 8) | ReadInput2((sekAddress & 0xFE) | 1); + + case 0x380000: + return (ReadInput3(sekAddress & 0xFE) << 8) | ReadInput3((sekAddress & 0xFE) | 1); + + default: + break; + } return ~0; } static void WriteIO1(INT32 nOffset, UINT8 byteValue) { - switch (nOffset) { - case 0x01: // Select the input returned at 0x300000 -// bprintf(PRINT_NORMAL, _T(" - InputP0/P1 0x%02X selected (%i).\n"), byteValue, SekTotalCycles()); - nInputSelect = byteValue; - break; + switch (nOffset) + { + case 0x01: // Select the input returned at 0x300000 + nInputSelect = byteValue; + break; - case 0x21: // Select the active cartridge slot -// bprintf(PRINT_NORMAL, _T(" - Cartridge slot 0x%02X activated.\n"), byteValue); - nNeoActiveSlot = byteValue; - if (nNeoActiveSlot >= nNeoNumSlots) { - nNeoActiveSlot = 0; - } + case 0x21: // Select the active cartridge slot + nNeoActiveSlot = byteValue; + if (nNeoActiveSlot >= nNeoNumSlots) + nNeoActiveSlot = 0; - NeoMapActiveCartridge(); - break; + NeoMapActiveCartridge(); + break; - case 0x31: // Send latched output to LEDs (bits 5/4 - numeric displays, bit 3 - marquee lights, one per slot) -// bprintf(PRINT_NORMAL, _T(" - 0x%06X -> 0x%02X.\n"), sekAddress, byteValue); -// if (byteValue != 255) { -// bprintf(PRINT_NORMAL, _T(" - LED %02X -> %02X\n"), ~byteValue & 255, nLEDLatch & 255); -// } + case 0x41: // Latch LED output + // for numeric displays - digits displayed = ~bytevalue + // for start buttons - highlighted marquee = ~bytevalue + nLEDLatch = ~byteValue; + break; -/* if ((byteValue & 0x20) == 0) { - nLED[0] = nLEDLatch; - } - if ((byteValue & 0x10) == 0) { - nLED[1] = nLEDLatch; - } - if ((byteValue & 0x08) == 0) { - nLED[2] = nLEDLatch; - } + case 0x51: // Send command to RTC + if (nNeoSystemType & NEO_SYS_MVS) + uPD4990AWrite(byteValue & 2, byteValue & 4, byteValue & 1); + break; - BurnGameFeedback(sizeof(nLED), nLED);*/ + case 0x61: // Coin lockout chute 1 & input bank select + NeoInputBank = NeoInput + 0; + break; + case 0xD1: // Send command to RTC + if (nNeoSystemType & NEO_SYS_MVS) + uPD4990AWrite(byteValue & 2, byteValue & 4, byteValue & 1); + break; - break; - - case 0x41: // Latch LED output - // for numeric displays - digits displayed = ~bytevalue - // for start buttons - highlighted marquee = ~bytevalue -// bprintf(PRINT_NORMAL, _T(" - LED output -> 0x%02X.\n"), byteValue); - nLEDLatch = ~byteValue; - break; - - case 0x51: // Send command to RTC -// bprintf(PRINT_NORMAL, _T(" - RTC -> 0x%02X.\n"), byteValue); - if (nNeoSystemType & NEO_SYS_MVS) { - uPD4990AWrite(byteValue & 2, byteValue & 4, byteValue & 1); - } - break; - - case 0x61: // Coin lockout chute 1 & input bank select -// bprintf(PRINT_NORMAL, _T(" - %sInput bank 0 selected (0x%02X).\n"), byteValue ? _T("Chute 1 coin lockout -> High / ") : _T(""), byteValue); - NeoInputBank = NeoInput + 0; - break; - case 0x63: // Coin lockout chute 2 -// bprintf(PRINT_NORMAL, _T(" - Chute 2 coin lockout -> High (0x%02X).\n"), byteValue); - break; - - case 0x65: // Coin counter chute 1 -> High - break; -// bprintf(PRINT_NORMAL, _T(" - Chute 1 coin counter -> High (0x%02X).\n"), byteValue); - case 0x67: // Coin counter chute 2 -> High -// bprintf(PRINT_NORMAL, _T(" - Chute 2 coin counter -> High (0x%02X).\n"), byteValue); - break; - - case 0xD1: // Send command to RTC -// bprintf(PRINT_NORMAL, _T(" - RTC -> 0x%02X.\n"), byteValue); - if (nNeoSystemType & NEO_SYS_MVS) { - uPD4990AWrite(byteValue & 2, byteValue & 4, byteValue & 1); - } - break; - - case 0xE1: -// bprintf(PRINT_NORMAL, _T(" - Chute 2 coin lockout -> Low / Input bank 1 selected (0x%02X).\n"), byteValue); - NeoInputBank = NeoInput + 8; - break; - case 0xE3: -// bprintf(PRINT_NORMAL, _T(" - Chute 2 coin lockout -> Low (0x%02X).\n"), byteValue); - break; - - case 0xE5: // Coin counter chute 1 -> Low -// bprintf(PRINT_NORMAL, _T(" - Chute 1 coin counter -> Low (0x%02X).\n"), byteValue); - break; - case 0xE7: // Coin counter chute 2 -> Low -// bprintf(PRINT_NORMAL, _T(" - Chute 2 coin counter -> Low (0x%02X).\n"), byteValue); - break; - } + case 0xE1: + NeoInputBank = NeoInput + 8; + break; + case 0xE3: + case 0xE5: // Coin counter chute 1 -> Low + case 0xE7: // Coin counter chute 2 -> Low + case 0x65: // Coin counter chute 1 -> High + case 0x67: // Coin counter chute 2 -> High + case 0x63: // Coin lockout chute 2 + case 0x31: // Send latched output to LEDs (bits 5/4 - numeric displays, bit 3 - marquee lights, one per slot) + break; + } return; } static void WriteIO2(INT32 nOffset, UINT8 /*byteValue*/) { - switch (nOffset) { - case 0x01: // Enable display - if (nNeoSystemType & NEO_SYS_CART) { - bNeoEnableGraphics = true; -// bprintf(PRINT_NORMAL, _T(" - Display enabled (0x%02X, at scanline %i).\n"), byteValue, SekCurrentScanline()); - break; - } + switch (nOffset) + { + case 0x01: // Enable display + if (nNeoSystemType & NEO_SYS_CART) + { + bNeoEnableGraphics = true; + break; + } - case 0x03: // Select BIOS vector table - if (nNeoSystemType & NEO_SYS_CART) { - if (!b68KBoardROMBankedIn) { - MapVectorTable(true); - b68KBoardROMBankedIn = true; - } -// bprintf(PRINT_NORMAL, _T(" - BIOS vector table banked in (0x%02X).\n"), byteValue); - } - break; + case 0x03: // Select BIOS vector table + if (nNeoSystemType & NEO_SYS_CART) + { + if (!b68KBoardROMBankedIn) + { + MapVectorTable(true); + b68KBoardROMBankedIn = true; + } + } + break; - case 0x0B: // Select BIOS text ROM -// bprintf(PRINT_NORMAL, _T(" - BIOS text/Z80 ROM banked in (0x%02X).\n"), byteValue); + case 0x0B: // Select BIOS text ROM + bBIOSTextROMEnabled = !(nNeoSystemType & (NEO_SYS_PCB | NEO_SYS_AES)); - bBIOSTextROMEnabled = !(nNeoSystemType & (NEO_SYS_PCB | NEO_SYS_AES)); + if (bZ80BIOS) + { + if (!bZ80BoardROMBankedIn) + { + bZ80BoardROMBankedIn = true; + NeoZ80MapROM(true); + } + } - if (bZ80BIOS) { - if (!bZ80BoardROMBankedIn) { - bZ80BoardROMBankedIn = true; - NeoZ80MapROM(true); - } + break; -#if defined Z80_RESET_ON_BANKSWITCH - nSoundStatus |= 1; - ZetReset(); -#endif - } + case 0x0D: // Write-protect SRAM + bSRAMWritable = false; + break; - break; + case 0x0F: // Select palette bank 1 + MapPalette(1); + break; - case 0x0D: // Write-protect SRAM - bSRAMWritable = false; -// bprintf(PRINT_NORMAL, _T(" - SRAM write-protected (0x%02X).\n"), byteValue); - break; + case 0x11: // Disable display + if (nNeoSystemType & NEO_SYS_CART) + { + bNeoEnableGraphics = false; + break; + } - case 0x0F: // Select palette bank 1 -// bprintf(PRINT_NORMAL, _T(" - Palette 1 banked in (0x%02X).\n"), byteValue); - MapPalette(1); - break; + case 0x13: // Select game vector table + if (nNeoSystemType & NEO_SYS_CART) + { + if (b68KBoardROMBankedIn) + { + MapVectorTable(false); + b68KBoardROMBankedIn = false; + } + } + break; - case 0x11: // Disable display - if (nNeoSystemType & NEO_SYS_CART) { - bNeoEnableGraphics = false; -// bprintf(PRINT_NORMAL, _T(" - Display disabled (0x%02X, at scanline %i).\n"), byteValue, SekCurrentScanline()); - break; - } + case 0x1B: // Select game text ROM + bBIOSTextROMEnabled = false; - case 0x13: // Select game vector table - if (nNeoSystemType & NEO_SYS_CART) { - if (b68KBoardROMBankedIn) { - MapVectorTable(false); - b68KBoardROMBankedIn = false; - } -// bprintf(PRINT_NORMAL, _T(" - ROM vector table banked in (0x%02X).\n"), byteValue); - } - break; + if (bZ80BIOS) + { + if (bZ80BoardROMBankedIn) + { + bZ80BoardROMBankedIn = false; + NeoZ80MapROM(false); + } + } - case 0x1B: // Select game text ROM -// bprintf(PRINT_NORMAL, _T(" - Cartridge text/Z80 ROM banked in (0x%02X).\n"), byteValue); + break; - bBIOSTextROMEnabled = false; + case 0x1D: // Write-enable SRAM + bSRAMWritable = true; + break; - if (bZ80BIOS) { - if (bZ80BoardROMBankedIn) { - bZ80BoardROMBankedIn = false; - NeoZ80MapROM(false); - } - -#if defined Z80_RESET_ON_BANKSWITCH - nSoundStatus |= 1; - ZetReset(); -#endif - } - - break; - - case 0x1D: // Write-enable SRAM - bSRAMWritable = true; -// bprintf(PRINT_NORMAL, _T(" - SRAM writable (0x%02X).\n"), byteValue); - break; - - case 0x1F: // Select palette bank 0 -// bprintf(PRINT_NORMAL, _T(" - Palette 0 banked in (0x%02X).\n"), byteValue); - MapPalette(0); - break; - } - - return; + case 0x1F: // Select palette bank 0 + MapPalette(0); + break; + } } void __fastcall neogeoWriteByte(UINT32 sekAddress, UINT8 byteValue) { - switch (sekAddress & 0xFF0000) { - case 0x300000: - if ((sekAddress & 1) == 1) { -// bprintf(PRINT_NORMAL, " - Watchdog timer reset (%02X, at scanline %i)\n", byteValue, SekCurrentScanline()); - + switch (sekAddress & 0xFF0000) + { + case 0x300000: + if ((sekAddress & 1) == 1) + { #if defined EMULATE_WATCHDOG - nNeoWatchdog = -SekTotalCycles(); + nNeoWatchdog = -SekTotalCycles(); #endif - } - return; + } + break; + case 0x320000: + if ((sekAddress & 1) == 0) + SendSoundCommand(byteValue); + break; - case 0x320000: - if ((sekAddress & 1) == 0) { - SendSoundCommand(byteValue); - } - return; + case 0x380000: + WriteIO1(sekAddress & 0xFF, byteValue); + break; - case 0x380000: - WriteIO1(sekAddress & 0xFF, byteValue); - return; - - case 0x3A0000: - WriteIO2(sekAddress & 0x1F, byteValue); - return; - } - -// bprintf(PRINT_NORMAL, _T(" - Attempt to write byte 0x%06X -> 0x%02X\n"), sekAddress, byteValue); - - return; + case 0x3A0000: + WriteIO2(sekAddress & 0x1F, byteValue); + break; + } } void __fastcall neogeoWriteWord(UINT32 sekAddress, UINT16 wordValue) { -// neogeoWriteByte(sekAddress | 1, wordValue); - SEK_DEF_WRITE_WORD(0, sekAddress, wordValue); - -// bprintf(PRINT_NORMAL, _T(" - Attempt to write word 0x%06X -> 0x%04X\n"), sekAddress, wordValue); } // ---------------------------------------------------------------------------- @@ -2302,23 +2084,17 @@ void __fastcall neogeoWriteWord(UINT32 sekAddress, UINT16 wordValue) UINT16 __fastcall neogeoReadWordVideo(UINT32 sekAddress) { - switch (sekAddress & 6) { + switch (sekAddress & 6) + { case 0x00: case 0x02: -// bprintf(PRINT_NORMAL, " - Graphics RAM read (Bank %i, address 0x%04X).\n", NeoGraphicsRAMPointer > 0xFFFF ? 1 : 0, NeoGraphicsRAMPointer & 0xFFFF); return *((UINT16*)(NeoGraphicsRAMBank + NeoGraphicsRAMPointer)); - case 0x04: -// bprintf(PRINT_NORMAL, " - Graphics RAM modulo read.\n"); return (UINT16)(nNeoGraphicsModulo >> 1); - case 0x06: // Display status -// bprintf(PRINT_NORMAL, " - Display status read, line: %3i, anim: %i\n", SekCurrentScanline(), nNeoSpriteFrame); - #if 1 && !defined USE_SPEEDHACKS bForcePartialRender |= bForceUpdateOnStatusRead; #endif - return ((SekCurrentScanline() + nScanlineOffset) << 7) | 0 | (nNeoSpriteFrame & 7); } @@ -2327,144 +2103,74 @@ UINT16 __fastcall neogeoReadWordVideo(UINT32 sekAddress) UINT8 __fastcall neogeoReadByteVideo(UINT32 sekAddress) { - if (sekAddress & 1) { + if (sekAddress & 1) return 0x0FF; - } else { - return neogeoReadWordVideo(sekAddress) >> 8; - } + return neogeoReadWordVideo(sekAddress) >> 8; } void __fastcall neogeoWriteWordVideo(UINT32 sekAddress, UINT16 wordValue) { -// if (sekAddress >= 0x3C0010) -// bprintf(PRINT_NORMAL, _T(" - Attempt to write word 0x%06X -> 0x%04X\n"), sekAddress, wordValue); - - switch (sekAddress & 14) { - case 0x00: { - NeoGraphicsRAMPointer = wordValue << 1; - NeoGraphicsRAMBank = NeoGraphicsRAM; - if (wordValue & 0x8000) { - NeoGraphicsRAMBank += 0x00010000; - } - break; - } - case 0x02: { - *((UINT16*)(NeoGraphicsRAMBank + NeoGraphicsRAMPointer)) = wordValue; - NeoGraphicsRAMPointer += nNeoGraphicsModulo; - -#if 0 - if ((NeoGraphicsRAMBank == NeoGraphicsRAM) && NeoGraphicsRAMPointer >= 0xC000 && NeoGraphicsRAMPointer < 0xE000) { - bprintf(PRINT_NORMAL, _T("VRAM bank 0 + 0x%04X -> %04X\n"), NeoGraphicsRAMPointer, wordValue); - } - if ((NeoGraphicsRAMBank != NeoGraphicsRAM) && NeoGraphicsRAMPointer >= 0x0C00) { - bprintf(PRINT_NORMAL, _T("VRAM bank 1 + 0x%04X -> %04X\n"), NeoGraphicsRAMPointer, wordValue); - } -#endif - + switch (sekAddress & 14) + { + case 0x00: + NeoGraphicsRAMPointer = wordValue << 1; + NeoGraphicsRAMBank = NeoGraphicsRAM; + if (wordValue & 0x8000) + NeoGraphicsRAMBank += 0x00010000; + break; + case 0x02: + *((UINT16*)(NeoGraphicsRAMBank + NeoGraphicsRAMPointer)) = wordValue; + NeoGraphicsRAMPointer += nNeoGraphicsModulo; #if 1 && defined USE_SPEEDHACKS - bForcePartialRender |= bForceUpdateOnStatusRead; + bForcePartialRender |= bForceUpdateOnStatusRead; #endif - break; - } - case 0x04: { - nNeoGraphicsModulo = ((INT16)wordValue) << 1; - break; - } + break; + case 0x04: + nNeoGraphicsModulo = ((INT16)wordValue) << 1; + break; + case 0x06: + nSpriteFrameSpeed = (wordValue >> 8); - case 0x06: { - nSpriteFrameSpeed = (wordValue >> 8); + if ((nIRQControl & 0x10) == 0 && wordValue & 0x10) + { + if (nIRQCycles < nCyclesSegment) + SekRunAdjust(nIRQCycles - nCyclesSegment); + } - if ((nIRQControl & 0x10) == 0 && wordValue & 0x10) { + nIRQControl = wordValue; + break; + case 0x08: + // Bit 15 seems to be ignored + nIRQOffset = (nIRQOffset & 0x0000FFFF) | ((wordValue & 0x7FFF) << 16); + break; + case 0x0A: + nIRQOffset = (nIRQOffset & 0xFFFF0000) | wordValue; -#if 0 || defined LOG_IRQ - bprintf(PRINT_NORMAL, _T(" - IRQ enabled (at line %3i, IRQControl: 0x%02X).\n"), SekCurrentScanline(), wordValue & 0xFF); -#endif + if (nIRQControl & 0x20) + { + // Turfmast uses this to set the timing of the raster interrupts. Using the code below, + // all raster effects in turfmast are correctly aligned and exhibit no flicker. + // (this sets the offset of the IRQ to the start of the current scanline instead of the actual beam position) - if (nIRQCycles < nCyclesSegment) { - SekRunAdjust(nIRQCycles - nCyclesSegment); - } - } - -#if 0 || defined LOG_IRQ - if (nIRQControl & 0x10 && (wordValue & 0x10) == 0) { - bprintf(PRINT_NORMAL, _T(" - IRQ disabled (at line %3i, IRQControl: 0x%02X).\n"), SekCurrentScanline(), wordValue & 0xFF); - } -#endif - - nIRQControl = wordValue; -// bprintf(PRINT_NORMAL, _T(" - Autoanim speed -> 0x%02X\n"), wordValue >> 8); -// bprintf(PRINT_NORMAL, _T(" - IRQ control register -> 0x%02X (at line %3i)\n"), wordValue & 0xFF, SekCurrentScanline()); - break; - } - - case 0x08: { -// bprintf(PRINT_NORMAL, "0x%06X -> 0x%04X\n", sekAddress, wordValue); - // Bit 15 seems to be ignored - nIRQOffset = (nIRQOffset & 0x0000FFFF) | ((wordValue & 0x7FFF) << 16); - break; - } - case 0x0A: { -// bprintf(PRINT_NORMAL, "0x%06X -> 0x%04X\n", sekAddress, wordValue); - nIRQOffset = (nIRQOffset & 0xFFFF0000) | wordValue; - -#if 0 || defined LOG_IRQ - bprintf(PRINT_NORMAL, _T(" - IRQ offs -> 0x%08X (at line %3i, IRQControl: 0x%02X).\n"), nIRQOffset, SekCurrentScanline(), nIRQControl); -#endif - - if (nIRQControl & 0x20) { - -#if 0 -// nIRQCycles = SekTotalCycles() - 64 + NeoConvertIRQPosition(nIRQOffset); - nIRQCycles = SekTotalCycles() + NeoConvertIRQPosition(nIRQOffset); -#else - // Turfmast uses this to set the timing of the raster interrupts. Using the code below, - // all raster effects in turfmast are correctly aligned and exhibit no flicker. - // (this sets the offset of the IRQ to the start of the current scanline instead of the actual beam position) - - // ssideki2 has some problems with this - nIRQCycles = SekCurrentScanline() * nSekCyclesScanline + NeoConvertIRQPosition(nIRQOffset + 8); -// bprintf(PRINT_NORMAL, _T(" %i - %i\n"), SekCurrentScanline(), SekTotalCycles() % SekCyclesScanline()); -#endif - -#if 0 || defined LOG_IRQ - bprintf(PRINT_NORMAL, _T(" IRQ Line -> %3i (at line %3i, relative).\n"), nIRQCycles / SekCyclesScanline(), SekCurrentScanline()); -#endif - - if (nIRQCycles < 0) { - nIRQCycles = NO_IRQ_PENDING; - } - if (nIRQCycles < nCyclesSegment) { - SekRunAdjust(nIRQCycles - nCyclesSegment); - } - } - - break; - } - - case 0x0C: { - NeoIRQUpdate(wordValue); - break; - } - } + // ssideki2 has some problems with this + nIRQCycles = SekCurrentScanline() * nSekCyclesScanline + NeoConvertIRQPosition(nIRQOffset + 8); + if (nIRQCycles < 0) + nIRQCycles = NO_IRQ_PENDING; + if (nIRQCycles < nCyclesSegment) + SekRunAdjust(nIRQCycles - nCyclesSegment); + } + break; + case 0x0C: + NeoIRQUpdate(wordValue); + break; + } } void __fastcall neogeoWriteByteVideo(UINT32 sekAddress, UINT8 byteValue) { -// bprintf(PRINT_NORMAL, _T(" - Attempt to write byte 0x%06X -> 0x%02X\n"), sekAddress, byteValue); - -#if 1 - if ((sekAddress & 1) == 0) { + if ((sekAddress & 1) == 0) neogeoWriteWordVideo(sekAddress, byteValue); - } -#else - if (sekAddress & 1) { - neogeoWriteWordVideo(sekAddress, byteValue); - } else { - neogeoWriteWordVideo(sekAddress, (byteValue << 8)); - } -#endif - -#if 1 && defined USE_SPEEDHACKS +#if defined USE_SPEEDHACKS bForcePartialRender |= bForceUpdateOnStatusRead; #endif } @@ -2476,31 +2182,26 @@ void __fastcall neogeoWriteByteSRAM(UINT32 sekAddress, UINT8 byteValue) { sekAddress &= 0xFFFF; - if (bSRAMWritable) { + if (bSRAMWritable) NeoNVRAM[sekAddress ^ 1] = byteValue; - } } void __fastcall neogeoWriteWordSRAM(UINT32 sekAddress, UINT16 wordValue) { sekAddress &= 0xFFFF; - if (bSRAMWritable) { + if (bSRAMWritable) *((UINT16*)(NeoNVRAM + sekAddress)) = BURN_ENDIAN_SWAP_INT16(wordValue); - } } // ---------------------------------------------------------------------------- UINT8 __fastcall neogeoReadByteMemoryCard(UINT32 sekAddress) { -// if (sekAddress < 0x800100) -// bprintf(PRINT_NORMAL, _T(" - Memcard 0x%04X read (PC: 0x%06X).\n"), sekAddress & 0x7FFF, SekGetPC(-1)); - - if (bMemoryCardInserted) { - if ((NeoSystem & 0x40) || (sekAddress & 1)) { + if (bMemoryCardInserted) + { + if ((NeoSystem & 0x40) || (sekAddress & 1)) return NeoMemoryCard[sekAddress & 0x01FFFF]; - } } return 0xFF; @@ -2508,32 +2209,27 @@ UINT8 __fastcall neogeoReadByteMemoryCard(UINT32 sekAddress) void __fastcall neogeoWriteByteMemoryCard(UINT32 sekAddress, UINT8 byteValue) { -// if (sekAddress < 0x800100) -// bprintf(PRINT_NORMAL, _T(" - Memcard 0x%04X -> 0x%02X (PC: 0x%06X).\n"), sekAddress & 0x7FFF, byteValue, SekGetPC(-1)); - - if (bMemoryCardInserted && bMemoryCardWritable) { - if ((NeoSystem & 0x40) || (sekAddress & 1)) { + if (bMemoryCardInserted && bMemoryCardWritable) + { + if ((NeoSystem & 0x40) || (sekAddress & 1)) NeoMemoryCard[sekAddress & 0x01FFFF] = byteValue; - } } } + #ifdef WANT_NEOGEOCD UINT8 __fastcall neoCDReadByteMemoryCard(UINT32 sekAddress) { sekAddress &= 0x01FFFF; - if (sekAddress < 0x4000 && sekAddress & 1) { + if (sekAddress < 0x4000 && sekAddress & 1) return NeoMemoryCard[sekAddress]; - } - return 0xFF; } void __fastcall neoCDWriteByteMemoryCard(UINT32 sekAddress, UINT8 byteValue) { sekAddress &= 0x01FFFF; - if (sekAddress < 0x4000 && sekAddress & 1) { + if (sekAddress < 0x4000 && sekAddress & 1) NeoMemoryCard[sekAddress] = byteValue; - } } // ---------------------------------------------------------------------------- @@ -2596,27 +2292,24 @@ static void NeoCDLBAToMSF(const INT32 LBA) static void NeoCDCommsWrite(UINT8 data) { - if (NeoCDCommsWordCount >= 0 && NeoCDCommsWordCount < 10) { + if (NeoCDCommsWordCount >= 0 && NeoCDCommsWordCount < 10) NeoCDCommsCommandFIFO[NeoCDCommsWordCount] = data & 0x0F; - } } -static UINT8 NeoCDCommsread() +static UINT8 NeoCDCommsread(void) { UINT8 ret = 0; - if (NeoCDCommsWordCount >= 0 && NeoCDCommsWordCount < 10) { + if (NeoCDCommsWordCount >= 0 && NeoCDCommsWordCount < 10) ret = NeoCDCommsStatusFIFO[NeoCDCommsWordCount] & 0x0F; - } - if (bNeoCDCommsClock) { + if (bNeoCDCommsClock) ret |= 0x10; - } return ret; } -static void NeoCDCommsReset() +static void NeoCDCommsReset(void) { bNeoCDCommsSend = false; bNeoCDCommsClock = true; @@ -2639,17 +2332,17 @@ static void LC8951UpdateHeader() { NeoCDLBAToMSF(NeoCDSectorLBA); - if (LC8951RegistersW[11] & 1) { - - // HEAD registers have sub-header - - LC8951RegistersR[4] = 0; // HEAD0 - LC8951RegistersR[5] = 0; // HEAD1 - LC8951RegistersR[6] = 0; // HEAD2 - LC8951RegistersR[7] = 0; // HEAD3 - - } else { + if (LC8951RegistersW[11] & 1) + { + // HEAD registers have sub-header + LC8951RegistersR[4] = 0; // HEAD0 + LC8951RegistersR[5] = 0; // HEAD1 + LC8951RegistersR[6] = 0; // HEAD2 + LC8951RegistersR[7] = 0; // HEAD3 + } + else + { // HEAD registers have header LC8951RegistersR[4] = ((NeoCDSectorMin / 10) << 4) | (NeoCDSectorMin % 10); // HEAD0 @@ -2659,41 +2352,35 @@ static void LC8951UpdateHeader() } } -static char* LC8915InitTransfer() +static char* LC8915InitTransfer(void) { - if (!LC8951RegistersW[6]) { - bprintf(PRINT_ERROR, _T(" LC8951 DTTRG status invalid\n")); + if (!LC8951RegistersW[6]) return NULL; - } - if (!(LC8951RegistersW[1] & 0x02)) { - bprintf(PRINT_ERROR, _T(" LC8951 DOUTEN status invalid\n")); + if (!(LC8951RegistersW[1] & 0x02)) return NULL; - } - if (((LC8951RegistersW[5] << 8) | LC8951RegistersW[4]) + (NeoCDDMACount << 1) > 2352) { - bprintf(PRINT_ERROR, _T(" DMA transfer exceeds current sector in LC8951 external buffer\n")); + if (((LC8951RegistersW[5] << 8) | LC8951RegistersW[4]) + (NeoCDDMACount << 1) > 2352) return NULL; - } - return NeoCDSectorData + ((LC8951RegistersW[5] << 8) | LC8951RegistersW[4]); } -static void LC8915EndTransfer() +static void LC8915EndTransfer(void) { LC8951RegistersW[6] = 0x00; // reset DTTRG LC8951RegistersR[1] |= 0x48; // set DTEI & DTBSY - if (LC8951RegistersW[1] & 0x40) { - +#if 0 + if (LC8951RegistersW[1] & 0x40) + { // trigger DTE interrupt // the Neo Geo CD doesn't use the DTE interrupt // nIRQAcknowledge &= ~0x20; // NeoCDIRQUpdate(0); - } +#endif } -static void LC8951Reset() +static void LC8951Reset(void) { memset(LC8951RegistersR, 0, sizeof(LC8951RegistersR)); memset(LC8951RegistersW, 0, sizeof(LC8951RegistersW)); @@ -2707,531 +2394,450 @@ static void NeoCDProcessCommand() { memset(NeoCDCommsStatusFIFO, 0, sizeof(NeoCDCommsStatusFIFO)); - if (NeoCDCommsCommandFIFO[0]) { + if (NeoCDCommsCommandFIFO[0]) NeoCDCommsStatusFIFO[1] = 15; - } - switch (NeoCDCommsCommandFIFO[0]) { - case 0: - break; - case 1: -// bprintf(PRINT_ERROR, _T(" CD comms received command %i\n"), NeoCDCommsCommandFIFO[0]); - CDEmuStop(); + switch (NeoCDCommsCommandFIFO[0]) + { + case 0: + break; + case 1: + CDEmuStop(); + NeoCDAssyStatus = 0x0E; + bNeoCDLoadSector = false; + break; + case 2: + NeoCDCommsStatusFIFO[1] = NeoCDCommsCommandFIFO[3]; + switch (NeoCDCommsCommandFIFO[3]) + { + case 0: { + UINT8* ChannelData = CDEmuReadQChannel(); - NeoCDAssyStatus = 0x0E; - bNeoCDLoadSector = false; - break; - case 2: -// bprintf(PRINT_ERROR, _T(" CD comms received command %i\n"), NeoCDCommsCommandFIFO[0]); - NeoCDCommsStatusFIFO[1] = NeoCDCommsCommandFIFO[3]; - switch (NeoCDCommsCommandFIFO[3]) { + NeoCDCommsStatusFIFO[2] = ChannelData[1] / 10; + NeoCDCommsStatusFIFO[3] = ChannelData[1] % 10; - case 0: { - UINT8* ChannelData = CDEmuReadQChannel(); + NeoCDCommsStatusFIFO[4] = ChannelData[2] / 10; + NeoCDCommsStatusFIFO[5] = ChannelData[2] % 10; - NeoCDCommsStatusFIFO[2] = ChannelData[1] / 10; - NeoCDCommsStatusFIFO[3] = ChannelData[1] % 10; + NeoCDCommsStatusFIFO[6] = ChannelData[3] / 10; + NeoCDCommsStatusFIFO[7] = ChannelData[3] % 10; - NeoCDCommsStatusFIFO[4] = ChannelData[2] / 10; - NeoCDCommsStatusFIFO[5] = ChannelData[2] % 10; + NeoCDCommsStatusFIFO[8] = ChannelData[7]; + } + break; + case 1: { + UINT8* ChannelData = CDEmuReadQChannel(); - NeoCDCommsStatusFIFO[6] = ChannelData[3] / 10; - NeoCDCommsStatusFIFO[7] = ChannelData[3] % 10; - - NeoCDCommsStatusFIFO[8] = ChannelData[7]; + NeoCDCommsStatusFIFO[2] = ChannelData[4] / 10; + NeoCDCommsStatusFIFO[3] = ChannelData[4] % 10; -// bprintf(PRINT_ERROR, _T(" %02i %02i:%02i:%02i %02i:%02i:%02i %02i\n"), ChannelData[0], ChannelData[1], ChannelData[2], ChannelData[3], ChannelData[4], ChannelData[5], ChannelData[6], ChannelData[7]); + NeoCDCommsStatusFIFO[4] = ChannelData[5] / 10; + NeoCDCommsStatusFIFO[5] = ChannelData[5] % 10; - break; - } - case 1: { - UINT8* ChannelData = CDEmuReadQChannel(); + NeoCDCommsStatusFIFO[6] = ChannelData[6] / 10; + NeoCDCommsStatusFIFO[7] = ChannelData[6] % 10; - NeoCDCommsStatusFIFO[2] = ChannelData[4] / 10; - NeoCDCommsStatusFIFO[3] = ChannelData[4] % 10; + NeoCDCommsStatusFIFO[8] = ChannelData[7]; + } + break; + case 2: { - NeoCDCommsStatusFIFO[4] = ChannelData[5] / 10; - NeoCDCommsStatusFIFO[5] = ChannelData[5] % 10; + UINT8* ChannelData = CDEmuReadQChannel(); - NeoCDCommsStatusFIFO[6] = ChannelData[6] / 10; - NeoCDCommsStatusFIFO[7] = ChannelData[6] % 10; - - NeoCDCommsStatusFIFO[8] = ChannelData[7]; - - break; - } - case 2: { - - UINT8* ChannelData = CDEmuReadQChannel(); - - NeoCDCommsStatusFIFO[2] = ChannelData[0] / 10; - NeoCDCommsStatusFIFO[3] = ChannelData[0] % 10; + NeoCDCommsStatusFIFO[2] = ChannelData[0] / 10; + NeoCDCommsStatusFIFO[3] = ChannelData[0] % 10; - NeoCDCommsStatusFIFO[8] = ChannelData[7]; + NeoCDCommsStatusFIFO[8] = ChannelData[7]; + } + break; + case 3: { + UINT8* TOCEntry = CDEmuReadTOC(-2); - break; - } - case 3: { - UINT8* TOCEntry = CDEmuReadTOC(-2); + NeoCDCommsStatusFIFO[2] = TOCEntry[0] / 10; + NeoCDCommsStatusFIFO[3] = TOCEntry[0] % 10; - NeoCDCommsStatusFIFO[2] = TOCEntry[0] / 10; - NeoCDCommsStatusFIFO[3] = TOCEntry[0] % 10; + NeoCDCommsStatusFIFO[4] = TOCEntry[1] / 10; + NeoCDCommsStatusFIFO[5] = TOCEntry[1] % 10; - NeoCDCommsStatusFIFO[4] = TOCEntry[1] / 10; - NeoCDCommsStatusFIFO[5] = TOCEntry[1] % 10; + NeoCDCommsStatusFIFO[6] = TOCEntry[2] / 10; + NeoCDCommsStatusFIFO[7] = TOCEntry[2] % 10; + } + break; + case 4: { + UINT8* TOCEntry = CDEmuReadTOC(-1); - NeoCDCommsStatusFIFO[6] = TOCEntry[2] / 10; - NeoCDCommsStatusFIFO[7] = TOCEntry[2] % 10; + NeoCDCommsStatusFIFO[2] = TOCEntry[0] / 10; + NeoCDCommsStatusFIFO[3] = TOCEntry[0] % 10; - break; - } - case 4: { - UINT8* TOCEntry = CDEmuReadTOC(-1); + NeoCDCommsStatusFIFO[4] = TOCEntry[1] / 10; + NeoCDCommsStatusFIFO[5] = TOCEntry[1] % 10; + } + break; + case 5: { + NeoCDTrack = NeoCDCommsCommandFIFO[4] * 10 + NeoCDCommsCommandFIFO[5]; - NeoCDCommsStatusFIFO[2] = TOCEntry[0] / 10; - NeoCDCommsStatusFIFO[3] = TOCEntry[0] % 10; + UINT8* TOCEntry = CDEmuReadTOC(NeoCDTrack); - NeoCDCommsStatusFIFO[4] = TOCEntry[1] / 10; - NeoCDCommsStatusFIFO[5] = TOCEntry[1] % 10; + NeoCDCommsStatusFIFO[2] = TOCEntry[0] / 10; + NeoCDCommsStatusFIFO[3] = TOCEntry[0] % 10; - break; - } - case 5: { - NeoCDTrack = NeoCDCommsCommandFIFO[4] * 10 + NeoCDCommsCommandFIFO[5]; + NeoCDCommsStatusFIFO[4] = TOCEntry[1] / 10; + NeoCDCommsStatusFIFO[5] = TOCEntry[1] % 10; - UINT8* TOCEntry = CDEmuReadTOC(NeoCDTrack); + NeoCDCommsStatusFIFO[6] = TOCEntry[2] / 10; + NeoCDCommsStatusFIFO[7] = TOCEntry[2] % 10; - NeoCDCommsStatusFIFO[2] = TOCEntry[0] / 10; - NeoCDCommsStatusFIFO[3] = TOCEntry[0] % 10; + // bit 3 of the 1st minutes digit indicates a data track + if (TOCEntry[3] & 4) + NeoCDCommsStatusFIFO[6] |= 8; - NeoCDCommsStatusFIFO[4] = TOCEntry[1] / 10; - NeoCDCommsStatusFIFO[5] = TOCEntry[1] % 10; + NeoCDCommsStatusFIFO[8] = NeoCDTrack % 10; + } + break; + case 6: { - NeoCDCommsStatusFIFO[6] = TOCEntry[2] / 10; - NeoCDCommsStatusFIFO[7] = TOCEntry[2] % 10; + UINT8* ChannelData = CDEmuReadQChannel(); - // bit 3 of the 1st minutes digit indicates a data track - if (TOCEntry[3] & 4) { - NeoCDCommsStatusFIFO[6] |= 8; - } + NeoCDCommsStatusFIFO[8] = ChannelData[7]; - NeoCDCommsStatusFIFO[8] = NeoCDTrack % 10; + } + break; + case 7: { - break; - } + // must be 02, 0E, 0F, or 05 + NeoCDCommsStatusFIFO[2] = 0; + NeoCDCommsStatusFIFO[3] = 5; - case 6: { + NeoCDCommsStatusFIFO[4] = 0; + NeoCDCommsStatusFIFO[5] = 0; - UINT8* ChannelData = CDEmuReadQChannel(); + NeoCDCommsStatusFIFO[6] = 0; + NeoCDCommsStatusFIFO[7] = 0; + } + break; + } + break; - NeoCDCommsStatusFIFO[8] = ChannelData[7]; + case 3: + { - break; - } + if (LC8951RegistersW[10] & 4) + { - case 7: { + NeoCDSectorLBA = NeoCDCommsCommandFIFO[2] * (10 * CD_FRAMES_MINUTE); + NeoCDSectorLBA += NeoCDCommsCommandFIFO[3] * ( 1 * CD_FRAMES_MINUTE); + NeoCDSectorLBA += NeoCDCommsCommandFIFO[4] * (10 * CD_FRAMES_SECOND); + NeoCDSectorLBA += NeoCDCommsCommandFIFO[5] * ( 1 * CD_FRAMES_SECOND); + NeoCDSectorLBA += NeoCDCommsCommandFIFO[6] * (10 ); + NeoCDSectorLBA += NeoCDCommsCommandFIFO[7] * ( 1 ); - // must be 02, 0E, 0F, or 05 - NeoCDCommsStatusFIFO[2] = 0; - NeoCDCommsStatusFIFO[3] = 5; + NeoCDSectorLBA -= CD_FRAMES_PREGAP; - NeoCDCommsStatusFIFO[4] = 0; - NeoCDCommsStatusFIFO[5] = 0; + CDEmuStartRead(); + } + else + { + CDEmuPlay((NeoCDCommsCommandFIFO[2] * 10) + NeoCDCommsCommandFIFO[3], (NeoCDCommsCommandFIFO[4] * 10) + NeoCDCommsCommandFIFO[5], (NeoCDCommsCommandFIFO[6] * 10) + NeoCDCommsCommandFIFO[7]); + } - NeoCDCommsStatusFIFO[6] = 0; - NeoCDCommsStatusFIFO[7] = 0; - break; - } - } - break; + NeoCDAssyStatus = 1; + bNeoCDLoadSector = true; - case 3: { + break; + } + case 4: + CDEmuPause(); + break; + case 5: + break; - if (LC8951RegistersW[10] & 4) { + case 6: + NeoCDAssyStatus = 4; + bNeoCDLoadSector = false; + break; + case 7: + NeoCDAssyStatus = 1; + bNeoCDLoadSector = true; + break; - if (CDEmuGetStatus() == playing) { - bprintf(PRINT_ERROR, _T("*** Switching CD mode to CD-ROM while in audio mode!(PC: 0x%06X)\n"), SekGetPC(-1)); - } - - NeoCDSectorLBA = NeoCDCommsCommandFIFO[2] * (10 * CD_FRAMES_MINUTE); - NeoCDSectorLBA += NeoCDCommsCommandFIFO[3] * ( 1 * CD_FRAMES_MINUTE); - NeoCDSectorLBA += NeoCDCommsCommandFIFO[4] * (10 * CD_FRAMES_SECOND); - NeoCDSectorLBA += NeoCDCommsCommandFIFO[5] * ( 1 * CD_FRAMES_SECOND); - NeoCDSectorLBA += NeoCDCommsCommandFIFO[6] * (10 ); - NeoCDSectorLBA += NeoCDCommsCommandFIFO[7] * ( 1 ); - - NeoCDSectorLBA -= CD_FRAMES_PREGAP; - - CDEmuStartRead(); -// LC8951RegistersR[1] |= 0x20; - } else { - - if (CDEmuGetStatus() == reading) { - bprintf(PRINT_ERROR, _T("*** Switching CD mode to audio while in CD-ROM mode!(PC: 0x%06X)\n"), SekGetPC(-1)); - } - - CDEmuPlay((NeoCDCommsCommandFIFO[2] * 10) + NeoCDCommsCommandFIFO[3], (NeoCDCommsCommandFIFO[4] * 10) + NeoCDCommsCommandFIFO[5], (NeoCDCommsCommandFIFO[6] * 10) + NeoCDCommsCommandFIFO[7]); - } - - NeoCDAssyStatus = 1; - bNeoCDLoadSector = true; - - break; - } - case 4: -// bprintf(PRINT_ERROR, _T(" CD comms received command %i\n"), NeoCDCommsCommandFIFO[0]); - CDEmuPause(); - break; - case 5: -// bprintf(PRINT_ERROR, _T(" CD comms received command %i\n"), NeoCDCommsCommandFIFO[0]); -// NeoCDAssyStatus = 9; -// bNeoCDLoadSector = false; - break; - - case 6: -// bprintf(PRINT_ERROR, _T(" CD comms received command %i\n"), NeoCDCommsCommandFIFO[0]); - NeoCDAssyStatus = 4; - bNeoCDLoadSector = false; - break; - case 7: -// bprintf(PRINT_ERROR, _T(" CD comms received command %i\n"), NeoCDCommsCommandFIFO[0]); - NeoCDAssyStatus = 1; - bNeoCDLoadSector = true; - break; - - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: -// bprintf(PRINT_ERROR, _T(" CD comms received command %i\n"), NeoCDCommsCommandFIFO[0]); - NeoCDAssyStatus = 9; - bNeoCDLoadSector = false; - break; - } + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + NeoCDAssyStatus = 9; + bNeoCDLoadSector = false; + break; + } } -static void NeoCDDoDMA() +static void NeoCDDoDMA(void) { - // The LC8953 chip has a programmable DMA controller, which is not properly emulated. - // Since the software only uses it in a limited way, we can apply a simple heuristic - // to determnine the requested operation. + // The LC8953 chip has a programmable DMA controller, which is not properly emulated. + // Since the software only uses it in a limited way, we can apply a simple heuristic + // to determnine the requested operation. - // Additionally, we don't know how many cycles DMA operations take. - // Here, only bus access is used to get a rough approximation -- - // each read/write takes a single cycle, setup and everything else is ignored. + // Additionally, we don't know how many cycles DMA operations take. + // Here, only bus access is used to get a rough approximation -- + // each read/write takes a single cycle, setup and everything else is ignored. -// bprintf(PRINT_IMPORTANT, _T(" - DMA controller transfer started (PC: 0x%06X)\n"), SekGetPC(-1)); + switch (NeoCDDMAMode) + { + case 0xCFFD: + { + // - DMA controller 0x7E -> 0xCFFD (PC: 0xC07CE2) + // - DMA controller program[00] -> 0xFCF5 (PC: 0xC07CE8) + // - DMA controller program[02] -> 0xE8DA (PC: 0xC07CEE) + // - DMA controller program[04] -> 0x92DA (PC: 0xC07CF4) + // - DMA controller program[06] -> 0x92DB (PC: 0xC07CFA) + // - DMA controller program[08] -> 0x96DB (PC: 0xC07D00) + // - DMA controller program[10] -> 0x96F6 (PC: 0xC07D06) + // - DMA controller program[12] -> 0x2E02 (PC: 0xC07D0C) + // - DMA controller program[14] -> 0xFDFF (PC: 0xC07D12) - switch (NeoCDDMAMode) { + SekIdle(NeoCDDMACount * 4); - case 0xCFFD: { -// bprintf(PRINT_NORMAL, _T(" adr : 0x%08X - 0x%08X <- address, skip odd bytes\n"), NeoCDDMAAddress1, NeoCDDMAAddress1 + NeoCDDMACount * 8); + while (NeoCDDMACount--) { + SekWriteWord(NeoCDDMAAddress1 + 0, NeoCDDMAAddress1 >> 24); + SekWriteWord(NeoCDDMAAddress1 + 2, NeoCDDMAAddress1 >> 16); + SekWriteWord(NeoCDDMAAddress1 + 4, NeoCDDMAAddress1 >> 8); + SekWriteWord(NeoCDDMAAddress1 + 6, NeoCDDMAAddress1 >> 0); + NeoCDDMAAddress1 += 8; + } - // - DMA controller 0x7E -> 0xCFFD (PC: 0xC07CE2) - // - DMA controller program[00] -> 0xFCF5 (PC: 0xC07CE8) - // - DMA controller program[02] -> 0xE8DA (PC: 0xC07CEE) - // - DMA controller program[04] -> 0x92DA (PC: 0xC07CF4) - // - DMA controller program[06] -> 0x92DB (PC: 0xC07CFA) - // - DMA controller program[08] -> 0x96DB (PC: 0xC07D00) - // - DMA controller program[10] -> 0x96F6 (PC: 0xC07D06) - // - DMA controller program[12] -> 0x2E02 (PC: 0xC07D0C) - // - DMA controller program[14] -> 0xFDFF (PC: 0xC07D12) + } + break; + case 0xE2DD: + { + // - DMA controller 0x7E -> 0xE2DD (PC: 0xC0A190) + // - DMA controller program[00] -> 0xFCF5 (PC: 0xC0A192) + // - DMA controller program[02] -> 0x82BE (PC: 0xC0A194) + // - DMA controller program[04] -> 0x93DA (PC: 0xC0A196) + // - DMA controller program[06] -> 0xBE93 (PC: 0xC0A198) + // - DMA controller program[08] -> 0xDABE (PC: 0xC0A19A) + // - DMA controller program[10] -> 0xF62D (PC: 0xC0A19C) + // - DMA controller program[12] -> 0x02FD (PC: 0xC0A19E) + // - DMA controller program[14] -> 0xFFFF (PC: 0xC0A1A0) - SekIdle(NeoCDDMACount * 4); + SekIdle(NeoCDDMACount * 1); - while (NeoCDDMACount--) { - SekWriteWord(NeoCDDMAAddress1 + 0, NeoCDDMAAddress1 >> 24); - SekWriteWord(NeoCDDMAAddress1 + 2, NeoCDDMAAddress1 >> 16); - SekWriteWord(NeoCDDMAAddress1 + 4, NeoCDDMAAddress1 >> 8); - SekWriteWord(NeoCDDMAAddress1 + 6, NeoCDDMAAddress1 >> 0); - NeoCDDMAAddress1 += 8; - } + while (NeoCDDMACount--) + { + SekWriteWord(NeoCDDMAAddress2 + 0, SekReadByte(NeoCDDMAAddress1 + 0)); + SekWriteWord(NeoCDDMAAddress2 + 2, SekReadByte(NeoCDDMAAddress1 + 1)); + NeoCDDMAAddress1 += 2; + NeoCDDMAAddress2 += 4; + } + } + break; - break; - } + case 0xFC2D: + { + // - DMA controller 0x7E -> 0xFC2D (PC: 0xC0A190) + // - DMA controller program[00] -> 0xFCF5 (PC: 0xC0A192) + // - DMA controller program[02] -> 0x8492 (PC: 0xC0A194) + // - DMA controller program[04] -> 0xDA92 (PC: 0xC0A196) + // - DMA controller program[06] -> 0xDAF6 (PC: 0xC0A198) + // - DMA controller program[08] -> 0x2A02 (PC: 0xC0A19A) + // - DMA controller program[10] -> 0xFDFF (PC: 0xC0A19C) + // - DMA controller program[12] -> 0x48E7 (PC: 0xC0A19E) + // - DMA controller program[14] -> 0xFFFE (PC: 0xC0A1A0) - case 0xE2DD: { -// bprintf(PRINT_NORMAL, _T(" copy: 0x%08X - 0x%08X <- 0x%08X - 0x%08X, skip odd bytes\n"), NeoCDDMAAddress2, NeoCDDMAAddress2 + NeoCDDMACount * 2, NeoCDDMAAddress1, NeoCDDMAAddress1 + NeoCDDMACount * 4); + char* data = LC8915InitTransfer(); + if (data == NULL) + break; - // - DMA controller 0x7E -> 0xE2DD (PC: 0xC0A190) - // - DMA controller program[00] -> 0xFCF5 (PC: 0xC0A192) - // - DMA controller program[02] -> 0x82BE (PC: 0xC0A194) - // - DMA controller program[04] -> 0x93DA (PC: 0xC0A196) - // - DMA controller program[06] -> 0xBE93 (PC: 0xC0A198) - // - DMA controller program[08] -> 0xDABE (PC: 0xC0A19A) - // - DMA controller program[10] -> 0xF62D (PC: 0xC0A19C) - // - DMA controller program[12] -> 0x02FD (PC: 0xC0A19E) - // - DMA controller program[14] -> 0xFFFF (PC: 0xC0A1A0) + SekIdle(NeoCDDMACount * 4); - SekIdle(NeoCDDMACount * 1); + while (NeoCDDMACount--) + { + SekWriteByte(NeoCDDMAAddress1 + 0, data[0]); + SekWriteByte(NeoCDDMAAddress1 + 2, data[1]); + NeoCDDMAAddress1 += 4; + data += 2; + } - while (NeoCDDMACount--) { - SekWriteWord(NeoCDDMAAddress2 + 0, SekReadByte(NeoCDDMAAddress1 + 0)); - SekWriteWord(NeoCDDMAAddress2 + 2, SekReadByte(NeoCDDMAAddress1 + 1)); - NeoCDDMAAddress1 += 2; - NeoCDDMAAddress2 += 4; - } + LC8915EndTransfer(); + } + break; - break; - } + case 0xFE3D: + // - DMA controller 0x7E -> 0xFE3D (PC: 0xC0A190) + // - DMA controller program[00] -> 0xFCF5 (PC: 0xC0A192) + // - DMA controller program[02] -> 0x82BF (PC: 0xC0A194) + // - DMA controller program[04] -> 0x93BF (PC: 0xC0A196) + // - DMA controller program[06] -> 0xF629 (PC: 0xC0A198) + // - DMA controller program[08] -> 0x02FD (PC: 0xC0A19A) + // - DMA controller program[10] -> 0xFFFF (PC: 0xC0A19C) + // - DMA controller program[12] -> 0xF17D (PC: 0xC0A19E) + // - DMA controller program[14] -> 0xFCF5 (PC: 0xC0A1A0) - case 0xFC2D: { -// bprintf(PRINT_NORMAL, _T(" copy: 0x%08X - 0x%08X <- LC8951 external buffer, skip odd bytes\n"), NeoCDDMAAddress1, NeoCDDMAAddress1 + NeoCDDMACount * 4); + case 0xFE6D: + { + // - DMA controller 0x7E -> 0xFE6D (PC: 0xC0FD7A) + // - DMA controller program[00] -> 0xFCF5 (PC: 0xC0FD7C) + // - DMA controller program[02] -> 0x82BF (PC: 0xC0FD7E) + // - DMA controller program[04] -> 0xF693 (PC: 0xC0FD80) + // - DMA controller program[06] -> 0xBF29 (PC: 0xC0FD82) + // - DMA controller program[08] -> 0x02FD (PC: 0xC0FD84) + // - DMA controller program[10] -> 0xFFFF (PC: 0xC0FD86) + // - DMA controller program[12] -> 0xC515 (PC: 0xC0FD88) + // - DMA controller program[14] -> 0xFCF5 (PC: 0xC0FD8A) - // - DMA controller 0x7E -> 0xFC2D (PC: 0xC0A190) - // - DMA controller program[00] -> 0xFCF5 (PC: 0xC0A192) - // - DMA controller program[02] -> 0x8492 (PC: 0xC0A194) - // - DMA controller program[04] -> 0xDA92 (PC: 0xC0A196) - // - DMA controller program[06] -> 0xDAF6 (PC: 0xC0A198) - // - DMA controller program[08] -> 0x2A02 (PC: 0xC0A19A) - // - DMA controller program[10] -> 0xFDFF (PC: 0xC0A19C) - // - DMA controller program[12] -> 0x48E7 (PC: 0xC0A19E) - // - DMA controller program[14] -> 0xFFFE (PC: 0xC0A1A0) + SekIdle(NeoCDDMACount * 1); - char* data = LC8915InitTransfer(); - if (data == NULL) { - break; - } + while (NeoCDDMACount--) + { + SekWriteWord(NeoCDDMAAddress2, SekReadWord(NeoCDDMAAddress1)); + NeoCDDMAAddress1 += 2; + NeoCDDMAAddress2 += 2; + } + } + break; + case 0xFEF5: + { + // - DMA controller 0x7E -> 0xFEF5 (PC: 0xC07CE2) + // - DMA controller program[00] -> 0xFCF5 (PC: 0xC07CE8) + // - DMA controller program[02] -> 0x92E8 (PC: 0xC07CEE) + // - DMA controller program[04] -> 0xBE96 (PC: 0xC07CF4) + // - DMA controller program[06] -> 0xF629 (PC: 0xC07CFA) + // - DMA controller program[08] -> 0x02FD (PC: 0xC07D00) + // - DMA controller program[10] -> 0xFFFF (PC: 0xC07D06) + // - DMA controller program[12] -> 0xFC3D (PC: 0xC07D0C) + // - DMA controller program[14] -> 0xFCF5 (PC: 0xC07D12) - SekIdle(NeoCDDMACount * 4); + SekIdle(NeoCDDMACount * 2); - while (NeoCDDMACount--) { - SekWriteByte(NeoCDDMAAddress1 + 0, data[0]); - SekWriteByte(NeoCDDMAAddress1 + 2, data[1]); - NeoCDDMAAddress1 += 4; - data += 2; - } + while (NeoCDDMACount--) + { + SekWriteWord(NeoCDDMAAddress1 + 0, NeoCDDMAAddress1 >> 16); + SekWriteWord(NeoCDDMAAddress1 + 2, NeoCDDMAAddress1 >> 0); + NeoCDDMAAddress1 += 4; + } + } + break; - LC8915EndTransfer(); + case 0xFFC5: + { + // - DMA controller 0x7E -> 0xFFC5 (PC: 0xC0A190) + // - DMA controller program[00] -> 0xFCF5 (PC: 0xC0A192) + // - DMA controller program[02] -> 0xA6F6 (PC: 0xC0A194) + // - DMA controller program[04] -> 0x2602 (PC: 0xC0A196) + // - DMA controller program[06] -> 0xFDFF (PC: 0xC0A198) + // - DMA controller program[08] -> 0xFC2D (PC: 0xC0A19A) + // - DMA controller program[10] -> 0xFCF5 (PC: 0xC0A19C) + // - DMA controller program[12] -> 0x8492 (PC: 0xC0A19E) + // - DMA controller program[14] -> 0xDA92 (PC: 0xC0A1A0) - break; - } + char* data = LC8915InitTransfer(); + if (data == NULL) + break; - case 0xFE3D: + SekIdle(NeoCDDMACount * 4); - // - DMA controller 0x7E -> 0xFE3D (PC: 0xC0A190) - // - DMA controller program[00] -> 0xFCF5 (PC: 0xC0A192) - // - DMA controller program[02] -> 0x82BF (PC: 0xC0A194) - // - DMA controller program[04] -> 0x93BF (PC: 0xC0A196) - // - DMA controller program[06] -> 0xF629 (PC: 0xC0A198) - // - DMA controller program[08] -> 0x02FD (PC: 0xC0A19A) - // - DMA controller program[10] -> 0xFFFF (PC: 0xC0A19C) - // - DMA controller program[12] -> 0xF17D (PC: 0xC0A19E) - // - DMA controller program[14] -> 0xFCF5 (PC: 0xC0A1A0) + while (NeoCDDMACount--) + { + SekWriteByte(NeoCDDMAAddress1 + 0, data[0]); + SekWriteByte(NeoCDDMAAddress1 + 1, data[1]); + NeoCDDMAAddress1 += 2; + data += 2; + } - case 0xFE6D: { -// bprintf(PRINT_NORMAL, _T(" copy: 0x%08X - 0x%08X <- 0x%08X - 0x%08X\n"), NeoCDDMAAddress2, NeoCDDMAAddress2 + NeoCDDMACount * 2, NeoCDDMAAddress1, NeoCDDMAAddress1 + NeoCDDMACount * 2); + LC8915EndTransfer(); + } + break; - // - DMA controller 0x7E -> 0xFE6D (PC: 0xC0FD7A) - // - DMA controller program[00] -> 0xFCF5 (PC: 0xC0FD7C) - // - DMA controller program[02] -> 0x82BF (PC: 0xC0FD7E) - // - DMA controller program[04] -> 0xF693 (PC: 0xC0FD80) - // - DMA controller program[06] -> 0xBF29 (PC: 0xC0FD82) - // - DMA controller program[08] -> 0x02FD (PC: 0xC0FD84) - // - DMA controller program[10] -> 0xFFFF (PC: 0xC0FD86) - // - DMA controller program[12] -> 0xC515 (PC: 0xC0FD88) - // - DMA controller program[14] -> 0xFCF5 (PC: 0xC0FD8A) + case 0xFFCD: + // - DMA controller 0x7E -> 0xFFCD (PC: 0xC0A190) + // - DMA controller program[00] -> 0xFCF5 (PC: 0xC0A192) + // - DMA controller program[02] -> 0x92F6 (PC: 0xC0A194) + // - DMA controller program[04] -> 0x2602 (PC: 0xC0A196) + // - DMA controller program[06] -> 0xFDFF (PC: 0xC0A198) + // - DMA controller program[08] -> 0x7006 (PC: 0xC0A19A) + // - DMA controller program[10] -> 0x6100 (PC: 0xC0A19C) + // - DMA controller program[12] -> 0x2412 (PC: 0xC0A19E) + // - DMA controller program[14] -> 0x13FC (PC: 0xC0A1A0) - SekIdle(NeoCDDMACount * 1); + case 0xFFDD: + { + // - DMA controller 0x7E -> 0xFFDD (PC: 0xC07CE2) + // - DMA controller program[00] -> 0xFCF5 (PC: 0xC07CE8) + // - DMA controller program[02] -> 0x92F6 (PC: 0xC07CEE) + // - DMA controller program[04] -> 0x2602 (PC: 0xC07CF4) + // - DMA controller program[06] -> 0xFDFF (PC: 0xC07CFA) + // - DMA controller program[08] -> 0xFFFF (PC: 0xC07D00) + // - DMA controller program[10] -> 0xFCF5 (PC: 0xC07D06) + // - DMA controller program[12] -> 0x8AF0 (PC: 0xC07D0C) + // - DMA controller program[14] -> 0x1609 (PC: 0xC07D12) - while (NeoCDDMACount--) { - SekWriteWord(NeoCDDMAAddress2, SekReadWord(NeoCDDMAAddress1)); - NeoCDDMAAddress1 += 2; - NeoCDDMAAddress2 += 2; - } + SekIdle(NeoCDDMACount * 1); -if (NeoCDDMAAddress2 == 0x0800) { -// MapVectorTable(false); -// bprintf(PRINT_ERROR, _T(" RAM vectors mapped (PC = 0x%08X\n"), SekGetPC(0)); -// extern INT32 bRunPause; -// bRunPause = 1; -} - break; - } - - case 0xFEF5: { -// bprintf(PRINT_NORMAL, _T(" adr : 0x%08X - 0x%08X <- address\n"), NeoCDDMAAddress1, NeoCDDMAAddress1 + NeoCDDMACount * 4); - - // - DMA controller 0x7E -> 0xFEF5 (PC: 0xC07CE2) - // - DMA controller program[00] -> 0xFCF5 (PC: 0xC07CE8) - // - DMA controller program[02] -> 0x92E8 (PC: 0xC07CEE) - // - DMA controller program[04] -> 0xBE96 (PC: 0xC07CF4) - // - DMA controller program[06] -> 0xF629 (PC: 0xC07CFA) - // - DMA controller program[08] -> 0x02FD (PC: 0xC07D00) - // - DMA controller program[10] -> 0xFFFF (PC: 0xC07D06) - // - DMA controller program[12] -> 0xFC3D (PC: 0xC07D0C) - // - DMA controller program[14] -> 0xFCF5 (PC: 0xC07D12) - - SekIdle(NeoCDDMACount * 2); - - while (NeoCDDMACount--) { - SekWriteWord(NeoCDDMAAddress1 + 0, NeoCDDMAAddress1 >> 16); - SekWriteWord(NeoCDDMAAddress1 + 2, NeoCDDMAAddress1 >> 0); - NeoCDDMAAddress1 += 4; - } - - break; - } - - case 0xFFC5: { -// bprintf(PRINT_NORMAL, _T(" copy: 0x%08X - 0x%08X <- LC8951 external buffer\n"), NeoCDDMAAddress1, NeoCDDMAAddress1 + NeoCDDMACount * 2); - - // - DMA controller 0x7E -> 0xFFC5 (PC: 0xC0A190) - // - DMA controller program[00] -> 0xFCF5 (PC: 0xC0A192) - // - DMA controller program[02] -> 0xA6F6 (PC: 0xC0A194) - // - DMA controller program[04] -> 0x2602 (PC: 0xC0A196) - // - DMA controller program[06] -> 0xFDFF (PC: 0xC0A198) - // - DMA controller program[08] -> 0xFC2D (PC: 0xC0A19A) - // - DMA controller program[10] -> 0xFCF5 (PC: 0xC0A19C) - // - DMA controller program[12] -> 0x8492 (PC: 0xC0A19E) - // - DMA controller program[14] -> 0xDA92 (PC: 0xC0A1A0) - - char* data = LC8915InitTransfer(); - if (data == NULL) { - break; - } - - SekIdle(NeoCDDMACount * 4); - - while (NeoCDDMACount--) { - SekWriteByte(NeoCDDMAAddress1 + 0, data[0]); - SekWriteByte(NeoCDDMAAddress1 + 1, data[1]); - NeoCDDMAAddress1 += 2; - data += 2; - } - - LC8915EndTransfer(); - - break; - } - - case 0xFFCD: - - // - DMA controller 0x7E -> 0xFFCD (PC: 0xC0A190) - // - DMA controller program[00] -> 0xFCF5 (PC: 0xC0A192) - // - DMA controller program[02] -> 0x92F6 (PC: 0xC0A194) - // - DMA controller program[04] -> 0x2602 (PC: 0xC0A196) - // - DMA controller program[06] -> 0xFDFF (PC: 0xC0A198) - // - DMA controller program[08] -> 0x7006 (PC: 0xC0A19A) - // - DMA controller program[10] -> 0x6100 (PC: 0xC0A19C) - // - DMA controller program[12] -> 0x2412 (PC: 0xC0A19E) - // - DMA controller program[14] -> 0x13FC (PC: 0xC0A1A0) - - case 0xFFDD: { -// bprintf(PRINT_NORMAL, _T(" Fill: 0x%08X - 0x%08X <- 0x%04X\n"), NeoCDDMAAddress1, NeoCDDMAAddress1 + NeoCDDMACount * 2, NeoCDDMAValue1); - - // - DMA controller 0x7E -> 0xFFDD (PC: 0xC07CE2) - // - DMA controller program[00] -> 0xFCF5 (PC: 0xC07CE8) - // - DMA controller program[02] -> 0x92F6 (PC: 0xC07CEE) - // - DMA controller program[04] -> 0x2602 (PC: 0xC07CF4) - // - DMA controller program[06] -> 0xFDFF (PC: 0xC07CFA) - // - DMA controller program[08] -> 0xFFFF (PC: 0xC07D00) - // - DMA controller program[10] -> 0xFCF5 (PC: 0xC07D06) - // - DMA controller program[12] -> 0x8AF0 (PC: 0xC07D0C) - // - DMA controller program[14] -> 0x1609 (PC: 0xC07D12) - - SekIdle(NeoCDDMACount * 1); - - while (NeoCDDMACount--) { - SekWriteWord(NeoCDDMAAddress1, NeoCDDMAValue1); - NeoCDDMAAddress1 += 2; - } - - break; - } - default: { - bprintf(PRINT_ERROR, _T(" Unknown transfer type 0x%04X (PC: 0x%06X)\n"), NeoCDDMAMode, SekGetPC(-1)); - bprintf(PRINT_NORMAL, _T(" ??? : 0x%08X 0x%08X 0x%04X 0x%04X 0x%08X\n"), NeoCDDMAAddress1, NeoCDDMAAddress2, NeoCDDMAValue1, NeoCDDMAValue2, NeoCDDMACount); - -extern INT32 bRunPause; -bRunPause = 1; - - } - } + while (NeoCDDMACount--) + { + SekWriteWord(NeoCDDMAAddress1, NeoCDDMAValue1); + NeoCDDMAAddress1 += 2; + } + } + break; + default: + break; + } } static void NeoCDCommsControl(UINT8 clock, UINT8 send) { - if (clock && !bNeoCDCommsClock) { + if (clock && !bNeoCDCommsClock) + { NeoCDCommsWordCount++; - if (NeoCDCommsWordCount >= 10) { - NeoCDCommsWordCount = 0; + if (NeoCDCommsWordCount >= 10) + { + NeoCDCommsWordCount = 0; - if (send) { + if (send) + { + // command receive complete - // command receive complete + if (NeoCDCommsCommandFIFO[0]) + { + INT32 sum = 0; - if (NeoCDCommsCommandFIFO[0]) { - INT32 sum = 0; + for (INT32 i = 0; i < 9; i++) + sum += NeoCDCommsCommandFIFO[i]; + sum = ~(sum + 5) & 0x0F; + if (sum == NeoCDCommsCommandFIFO[9]) + { + NeoCDProcessCommand(); -// bprintf(PRINT_NORMAL, _T(" - CD mechanism command receive completed : 0x")); - for (INT32 i = 0; i < 9; i++) { -// bprintf(PRINT_NORMAL, _T("%X"), NeoCDCommsCommandFIFO[i]); - sum += NeoCDCommsCommandFIFO[i]; - } - sum = ~(sum + 5) & 0x0F; -// bprintf(PRINT_NORMAL, _T(" (CS 0x%X, %s)\n"), NeoCDCommsCommandFIFO[9], (sum == NeoCDCommsCommandFIFO[9]) ? _T("OK") : _T("NG")); - if (sum == NeoCDCommsCommandFIFO[9]) { + if (NeoCDCommsCommandFIFO[0]) + { - NeoCDProcessCommand(); + if (NeoCDAssyStatus == 1) + { + if (CDEmuGetStatus() == idle) + { + NeoCDAssyStatus = 0x0E; + bNeoCDLoadSector = false; + } + } - if (NeoCDCommsCommandFIFO[0]) { + NeoCDCommsStatusFIFO[0] = NeoCDAssyStatus; - if (NeoCDAssyStatus == 1) { - if (CDEmuGetStatus() == idle) { - NeoCDAssyStatus = 0x0E; - bNeoCDLoadSector = false; - } - } + // compute checksum + sum = 0; - NeoCDCommsStatusFIFO[0] = NeoCDAssyStatus; - -#if 0 - extern INT32 counter; - if (counter) { - NeoCDCommsStatusFIFO[0] = counter & 0x0F; - } -#endif - - // compute checksum - - sum = 0; - - for (INT32 i = 0; i < 9; i++) { - sum += NeoCDCommsStatusFIFO[i]; - } - NeoCDCommsStatusFIFO[9] = ~(sum + 5) & 0x0F; - } - } - } - } else { - - // status send complete - -// if (NeoCDCommsStatusFIFO[0] || NeoCDCommsStatusFIFO[1]) { -// INT32 sum = 0; -// -// bprintf(PRINT_NORMAL, _T(" - CD mechanism status send completed : 0x")); -// for (INT32 i = 0; i < 9; i++) { -// bprintf(PRINT_NORMAL, _T("%X"), NeoCDCommsStatusFIFO[i]); -// sum += NeoCDCommsStatusFIFO[i]; -// } -// sum = ~(sum + 5) & 0x0F; -// bprintf(PRINT_NORMAL, _T(" (CS 0x%X, %s)\n"), NeoCDCommsStatusFIFO[9], (sum == NeoCDCommsStatusFIFO[9]) ? _T("OK") : _T("NG")); -// } - -// if (NeoCDAssyStatus == 0xE) { -// NeoCDAssyStatus = 9; -// } - } - - } + for (INT32 i = 0; i < 9; i++) + sum += NeoCDCommsStatusFIFO[i]; + NeoCDCommsStatusFIFO[9] = ~(sum + 5) & 0x0F; + } + } + } + } + } bNeoCDCommsSend = send; } bNeoCDCommsClock = clock; @@ -3239,354 +2845,286 @@ static void NeoCDCommsControl(UINT8 clock, UINT8 send) void NeoCDReadSector() { - if ((nff0002 & 0x0500)) { - if (NeoCDAssyStatus == 1 && bNeoCDLoadSector) { + if ((nff0002 & 0x0500)) + { + if (NeoCDAssyStatus == 1 && bNeoCDLoadSector) + { + NeoCDSectorLBA++; + NeoCDSectorLBA = CDEmuLoadSector(NeoCDSectorLBA, NeoCDSectorData + 4) - 1; -// if (LC8951RegistersW[10] & 0x80) { - NeoCDSectorLBA++; - NeoCDSectorLBA = CDEmuLoadSector(NeoCDSectorLBA, NeoCDSectorData + 4) - 1; -// } + if (LC8951RegistersW[10] & 0x80) { + LC8951UpdateHeader(); - if (LC8951RegistersW[10] & 0x80) { - LC8951UpdateHeader(); - - LC8951RegistersR[12] = 0x80; // STAT0 - LC8951RegistersR[13] = 0; // STAT1 - LC8951RegistersR[14] = 0x10; // STAT2 - LC8951RegistersR[15] = 0; // STAT3 - -// bprintf(PRINT_IMPORTANT, _T(" Sector %08i (%02i:%02i:%02i) read\n"), NeoCDSectorLBA, NeoCDSectorMin, NeoCDSectorSec, NeoCDSectorFrm); - -#if 1 - if (NeoCDSectorData[4 + 64] == 'g' && !strncmp(NeoCDSectorData + 4, "Copyright by SNK", 16)) { -// printf(PRINT_ERROR, _T(" simulated CDZ protection error\n")); -// bprintf(PRINT_ERROR, _T(" %.70hs\n"), NeoCDSectorData + 4); - - NeoCDSectorData[4 + 64] = 'f'; - - // LC8951RegistersR[12] = 0x00; // STAT0 - } -#endif + LC8951RegistersR[12] = 0x80; // STAT0 + LC8951RegistersR[13] = 0; // STAT1 + LC8951RegistersR[14] = 0x10; // STAT2 + LC8951RegistersR[15] = 0; // STAT3 - nIRQAcknowledge &= ~0x20; - NeoCDIRQUpdate(0); - - LC8951RegistersR[1] &= ~0x20; + if (NeoCDSectorData[4 + 64] == 'g' && !strncmp(NeoCDSectorData + 4, "Copyright by SNK", 16)) + NeoCDSectorData[4 + 64] = 'f'; -// bprintf(PRINT_IMPORTANT, _T(" DECI interrupt triggered\n")); - } - } + nIRQAcknowledge &= ~0x20; + NeoCDIRQUpdate(0); - bNeoCDLoadSector = true; -// bNeoCDLoadSector = false; - } + LC8951RegistersR[1] &= ~0x20; + } + } + + bNeoCDLoadSector = true; + } } UINT8 __fastcall neogeoReadByteCDROM(UINT32 sekAddress) { -// bprintf(PRINT_NORMAL, _T(" - CDROM: 0x%06X read (byte, PC: 0x%06X)\n"), sekAddress, SekGetPC(-1)); - - switch (sekAddress & 0xFFFF) { + switch (sekAddress & 0xFFFF) + { + case 0x0017: + return nNeoCDMode; + // LC8951 registers + case 0x0101: + return nLC8951Register; + case 0x0103: + { + INT32 reg = LC8951RegistersR[nLC8951Register]; - case 0x0017: - return nNeoCDMode; + switch (nLC8951Register) { + case 0x03: // DBCH + LC8951RegistersR[3] &= 0x0F; + LC8951RegistersR[3] |= (LC8951RegistersR[1] & 0x40) ? 0x00 : 0xF0; + break; + case 0x0D: // STAT3 + LC8951RegistersR[1] |= 0x20; // reset DECI + break; + } - // LC8951 registers - case 0x0101: -// bprintf(PRINT_NORMAL, _T(" - LC8951 register read (PC: 0x%06X)\n"), SekGetPC(-1)); - return nLC8951Register; - case 0x0103: { -// bprintf(PRINT_NORMAL, _T(" - LC8951 register 0x%X read (PC: 0x%06X)\n"), nLC8951Register, SekGetPC(-1)); - - INT32 reg = LC8951RegistersR[nLC8951Register]; - - switch (nLC8951Register) { - case 0x03: // DBCH - LC8951RegistersR[3] &= 0x0F; - LC8951RegistersR[3] |= (LC8951RegistersR[1] & 0x40) ? 0x00 : 0xF0; - break; - case 0x0D: // STAT3 - LC8951RegistersR[1] |= 0x20; // reset DECI - // bprintf(PRINT_ERROR, _T(" - DECI (PC: 0x%06X)\n"), SekGetPC(-1)); - break; - } - - nLC8951Register = (nLC8951Register + 1) & 0x0F; - return reg; - } - - // CD mechanism communication - case 0x0161: - return NeoCDCommsread(); - - default: { -// bprintf(PRINT_NORMAL, _T(" - NGCD port 0x%06X read (byte, PC: 0x%06X)\n"), sekAddress, SekGetPC(-1)); - } - } + nLC8951Register = (nLC8951Register + 1) & 0x0F; + return reg; + } + // CD mechanism communication + case 0x0161: + return NeoCDCommsread(); + default: + break; + } return ~0; } UINT16 __fastcall neogeoReadWordCDROM(UINT32 sekAddress) { -// bprintf(PRINT_NORMAL, _T(" - CDROM: 0x%06X read (word, PC: 0x%06X)\n"), sekAddress, SekGetPC(-1)); - -#if 1 - switch (sekAddress & 0xFFFF) { - case 0x011C: - return ~((0x10 | (NeoSystem & 3)) << 8); - } -#endif - -// bprintf(PRINT_NORMAL, _T(" - NGCD port 0x%06X read (word, PC: 0x%06X)\n"), sekAddress, SekGetPC(-1)); - + if ((sekAddress & 0xFFFF) == 0x011C) + return ~((0x10 | (NeoSystem & 3)) << 8); return ~0; } void __fastcall neogeoWriteByteCDROM(UINT32 sekAddress, UINT8 byteValue) { -// bprintf(PRINT_NORMAL, _T(" - Neo Geo CD: 0x%06X -> 0x%02X (PC: 0x%06X)\n"), sekAddress, byteValue, SekGetPC(-1)); + switch (sekAddress & 0xFFFF) + { + case 0x000F: + NeoCDIRQUpdate(byteValue); + break; - switch (sekAddress & 0xFFFF) { - case 0x000F: - NeoCDIRQUpdate(byteValue); - break; + case 0x0017: + nNeoCDMode = byteValue; + break; - case 0x0017: - nNeoCDMode = byteValue; - break; + case 0x0061: + if (byteValue & 0x40) + NeoCDDoDMA(); + break; - case 0x0061: - if (byteValue & 0x40) { - NeoCDDoDMA(); - } - break; + // LC8951 registers + case 0x0101: + nLC8951Register = byteValue & 0x0F; + break; + case 0x0103: + switch (nLC8951Register) { + case 3: // DBCH + LC8951RegistersW[ 3] = byteValue & 0x0F; + break; + case 6: // DTTRG + LC8951RegistersW[ 6] = ~0x00; + LC8951RegistersR[ 1] &= ~0x08; + break; + case 7: // DTACK + LC8951RegistersW[ 7] = ~0x00; + LC8951RegistersR[ 1] &= ~0x40; + break; + case 11: + LC8951RegistersW[11] = byteValue; // CTRL1 + LC8951UpdateHeader(); + break; + case 15: + LC8951Reset(); + break; + default: + LC8951RegistersW[nLC8951Register] = byteValue; + } + nLC8951Register = (nLC8951Register + 1) & 0x0F; + break; - // LC8951 registers - case 0x0101: - nLC8951Register = byteValue & 0x0F; -// bprintf(PRINT_NORMAL, _T(" - LC8951 register -> 0x%02X (PC: 0x%06X)\n"), nLC8951Register, SekGetPC(-1)); - break; - case 0x0103: -// bprintf(PRINT_NORMAL, _T(" - LC8951 register 0x%X -> 0x%02X (PC: 0x%06X)\n"), nLC8951Register, byteValue, SekGetPC(-1)); - switch (nLC8951Register) { - case 3: // DBCH - LC8951RegistersW[ 3] = byteValue & 0x0F; - break; - case 6: // DTTRG - LC8951RegistersW[ 6] = ~0x00; - LC8951RegistersR[ 1] &= ~0x08; - break; - case 7: // DTACK - LC8951RegistersW[ 7] = ~0x00; - LC8951RegistersR[ 1] &= ~0x40; - break; -// case 10: -// LC8951RegistersW[nLC8951Register] = byteValue; -// bprintf(PRINT_NORMAL, _T(" - CTRL0 -> %02X (PC: 0x%06X)\n"), LC8951RegistersW[nLC8951Register], byteValue, SekGetPC(-1)); -// break; - case 11: - LC8951RegistersW[11] = byteValue; // CTRL1 - LC8951UpdateHeader(); - break; - case 15: - LC8951Reset(); - break; - default: - LC8951RegistersW[nLC8951Register] = byteValue; - } - nLC8951Register = (nLC8951Register + 1) & 0x0F; - break; + case 0x0105: + nActiveTransferArea = byteValue; + break; - case 0x0105: -// bprintf(PRINT_NORMAL, _T(" - NGCD 0xE00000 area -> 0x%02X (PC: 0x%06X)\n"), byteValue, SekGetPC(-1)); - nActiveTransferArea = byteValue; - break; + case 0x0121: + NeoSetSpriteSlot(1); + memset(NeoCDOBJBankUpdate, 0, sizeof(NeoCDOBJBankUpdate)); + break; + case 0x0123: + break; + case 0x0127: + neogeoSynchroniseZ80(0); + ZetSetBUSREQLine(1); + break; + case 0x0129: + NeoSetTextSlot(1); + break; - case 0x0121: -// bprintf(PRINT_NORMAL, _T(" - NGCD OBJ BUSREQ -> 1 (PC: 0x%06X)\n"), SekGetPC(-1)); - NeoSetSpriteSlot(1); - memset(NeoCDOBJBankUpdate, 0, sizeof(NeoCDOBJBankUpdate)); - break; - case 0x0123: -// bprintf(PRINT_NORMAL, _T(" - NGCD PCM BUSREQ -> 1 (PC: 0x%06X) %x\n"), SekGetPC(-1), byteValue); - break; - case 0x0127: -// bprintf(PRINT_NORMAL, _T(" - NGCD Z80 BUSREQ -> 1 (PC: 0x%06X)\n"), SekGetPC(-1)); - neogeoSynchroniseZ80(0); - ZetSetBUSREQLine(1); - break; - case 0x0129: -// bprintf(PRINT_NORMAL, _T(" - NGCD FIX BUSREQ -> 1 (PC: 0x%06X)\n"), SekGetPC(-1)); - NeoSetTextSlot(1); - break; + case 0x0141: + NeoSetSpriteSlot(0); + for (INT32 i = 0; i < 4; i++) + { + if (NeoCDOBJBankUpdate[i]) + { + NeoDecodeSpritesCD(NeoSpriteRAM + (i << 20), NeoSpriteROM[0] + (i << 20), 0x100000); + NeoUpdateSprites((i << 20), 0x100000); + } + } - case 0x0141: -// bprintf(PRINT_NORMAL, _T(" - NGCD OBJ BUSREQ -> 0 (PC: 0x%06X)\n"), SekGetPC(-1)); - NeoSetSpriteSlot(0); - for (INT32 i = 0; i < 4; i++) { - if (NeoCDOBJBankUpdate[i]) { - NeoDecodeSpritesCD(NeoSpriteRAM + (i << 20), NeoSpriteROM[0] + (i << 20), 0x100000); - NeoUpdateSprites((i << 20), 0x100000); - } - } + break; + case 0x0143: + break; + case 0x0147: + neogeoSynchroniseZ80(0); + ZetSetBUSREQLine(0); + break; + case 0x0149: + NeoSetTextSlot(0); + NeoUpdateText(0, 0x020000, NeoTextRAM, NeoTextROM[0]); + break; - break; - case 0x0143: -// bprintf(PRINT_NORMAL, _T(" - NGCD PCM BUSREQ -> 0 (PC: 0x%06X)\n"), SekGetPC(-1)); - break; - case 0x0147: -// bprintf(PRINT_NORMAL, _T(" - NGCD Z80 BUSREQ -> 0 (PC: 0x%06X)\n"), SekGetPC(-1)); - neogeoSynchroniseZ80(0); - ZetSetBUSREQLine(0); - break; - case 0x0149: -// bprintf(PRINT_NORMAL, _T(" - NGCD FIX BUSREQ -> 0 (PC: 0x%06X)\n"), SekGetPC(-1)); - NeoSetTextSlot(0); - NeoUpdateText(0, 0x020000, NeoTextRAM, NeoTextROM[0]); - break; + // CD mechanism communication + case 0x0163: + NeoCDCommsWrite(byteValue); + break; + case 0x0165: + NeoCDCommsControl(byteValue & 1, byteValue & 2); + break; - // CD mechanism communication - case 0x0163: - NeoCDCommsWrite(byteValue); - break; - case 0x0165: - NeoCDCommsControl(byteValue & 1, byteValue & 2); - break; + case 0x016D: + MapVectorTable(!(byteValue == 0xFF)); + break; - case 0x016D: -// bprintf(PRINT_ERROR, _T(" - NGCD port 0x%06X -> 0x%02X (PC: 0x%06X)\n"), sekAddress, byteValue, SekGetPC(-1)); + case 0x016F: + nTransferWriteEnable = byteValue; + break; - MapVectorTable(!(byteValue == 0xFF)); + case 0x0181: { + static UINT8 clara = 0; + if (!byteValue && clara) { + // NeoCDCommsReset(); + } + clara = byteValue; + break; + } + case 0x0183: { + static UINT8 clara = 0; + if (!byteValue && clara) { + //ZetReset(); + } + clara = byteValue; + break; + } + case 0x01A1: + nSpriteTransferBank = (byteValue & 3) << 20; + break; + case 0x01A3: + nADPCMTransferBank = (byteValue & 1) << 19; + break; -//extern INT32 bRunPause; -//bRunPause = 1; - break; - - case 0x016F: -// bprintf(PRINT_IMPORTANT, _T(" - NGCD 0xE00000 area write access %s (0x%02X, PC: 0x%06X)\n"), byteValue ? _T("enabled") : _T("disabled"), byteValue, SekGetPC(-1)); - - nTransferWriteEnable = byteValue; - break; - - case 0x0181: { - static UINT8 clara = 0; - if (!byteValue && clara) { -// bprintf(PRINT_IMPORTANT, _T(" - NGCD CD communication reset (PC: 0x%06X)\n"), SekGetPC(-1)); -// NeoCDCommsReset(); - } - clara = byteValue; - break; - } - case 0x0183: { - static UINT8 clara = 0; - if (!byteValue && clara) { -// bprintf(PRINT_IMPORTANT, _T(" - NGCD Z80 reset (PC: 0x%06X)\n"), SekGetPC(-1)); - //ZetReset(); - } - clara = byteValue; - break; - } - case 0x01A1: - nSpriteTransferBank = (byteValue & 3) << 20; - break; - case 0x01A3: - nADPCMTransferBank = (byteValue & 1) << 19; - break; - - default: { -// bprintf(PRINT_NORMAL, _T(" - NGCD port 0x%06X -> 0x%02X (PC: 0x%06X)\n"), sekAddress, byteValue, SekGetPC(-1)); - } - } + default: + break; + } } void __fastcall neogeoWriteWordCDROM(UINT32 sekAddress, UINT16 wordValue) { -// bprintf(PRINT_NORMAL, _T(" - NGCD port 0x%06X -> 0x%04X (PC: 0x%06X)\n"), sekAddress, wordValue, SekGetPC(-1)); + switch (sekAddress & 0xFFFE) + { + case 0x0002: + nff0002 = wordValue; - switch (sekAddress & 0xFFFE) { - case 0x0002: -// bprintf(PRINT_IMPORTANT, _T(" - NGCD Interrupt mask -> 0x%04X (PC: 0x%06X)\n"), wordValue, SekGetPC(-1)); - nff0002 = wordValue; + // LC8951RegistersR[1] |= 0x20; -// LC8951RegistersR[1] |= 0x20; + if (nff0002 & 0x0500) + nNeoCDCyclesIRQPeriod = (INT32)(12000000.0 * nBurnCPUSpeedAdjust / (256.0 * 75.0)); + else + nNeoCDCyclesIRQPeriod = (INT32)(12000000.0 * nBurnCPUSpeedAdjust / (256.0 * 75.0)); - if (nff0002 & 0x0500) - nNeoCDCyclesIRQPeriod = (INT32)(12000000.0 * nBurnCPUSpeedAdjust / (256.0 * 75.0)); - else - nNeoCDCyclesIRQPeriod = (INT32)(12000000.0 * nBurnCPUSpeedAdjust / (256.0 * 75.0)); + break; - break; + case 0x000E: + NeoCDIRQUpdate(wordValue); + break; - case 0x000E: - NeoCDIRQUpdate(wordValue); - break; + // DMA controller - // DMA controller + case 0x0064: + NeoCDDMAAddress1 &= 0x0000FFFF; + NeoCDDMAAddress1 |= wordValue << 16; + break; + case 0x0066: + NeoCDDMAAddress1 &= 0xFFFF0000; + NeoCDDMAAddress1 |= wordValue; + break; + case 0x0068: + NeoCDDMAAddress2 &= 0x0000FFFF; + NeoCDDMAAddress2 |= wordValue << 16; + break; + case 0x006A: + NeoCDDMAAddress2 &= 0xFFFF0000; + NeoCDDMAAddress2 |= wordValue; + break; + case 0x006C: + NeoCDDMAValue1 = wordValue; + break; + case 0x006E: + NeoCDDMAValue2 = wordValue; + break; + case 0x0070: + NeoCDDMACount &= 0x0000FFFF; + NeoCDDMACount |= wordValue << 16; + break; + case 0x0072: + NeoCDDMACount &= 0xFFFF0000; + NeoCDDMACount |= wordValue; + break; - case 0x0064: - NeoCDDMAAddress1 &= 0x0000FFFF; - NeoCDDMAAddress1 |= wordValue << 16; - break; - case 0x0066: - NeoCDDMAAddress1 &= 0xFFFF0000; - NeoCDDMAAddress1 |= wordValue; - break; - case 0x0068: - NeoCDDMAAddress2 &= 0x0000FFFF; - NeoCDDMAAddress2 |= wordValue << 16; - break; - case 0x006A: - NeoCDDMAAddress2 &= 0xFFFF0000; - NeoCDDMAAddress2 |= wordValue; - break; - case 0x006C: - NeoCDDMAValue1 = wordValue; - break; - case 0x006E: - NeoCDDMAValue2 = wordValue; - break; - case 0x0070: - NeoCDDMACount &= 0x0000FFFF; - NeoCDDMACount |= wordValue << 16; - break; - case 0x0072: - NeoCDDMACount &= 0xFFFF0000; - NeoCDDMACount |= wordValue; - break; + case 0x007E: + NeoCDDMAMode = wordValue; + break; - case 0x007E: - NeoCDDMAMode = wordValue; -// bprintf(PRINT_NORMAL, _T(" - DMA controller 0x%2X -> 0x%04X (PC: 0x%06X)\n"), sekAddress & 0xFF, wordValue, SekGetPC(-1)); - break; + // upload DMA controller program - // upload DMA controller program - - case 0x0080: - case 0x0082: - case 0x0084: - case 0x0086: - case 0x0088: - case 0x008A: - case 0x008C: - case 0x008E: -// bprintf(PRINT_NORMAL, _T(" - DMA controller program[%02i] -> 0x%04X (PC: 0x%06X)\n"), sekAddress & 0x0F, wordValue, SekGetPC(-1)); - break; - - default: { -// bprintf(PRINT_NORMAL, _T(" - NGCD port 0x%06X -> 0x%04X (PC: 0x%06X)\n"), sekAddress, wordValue, SekGetPC(-1)); - } - } - + case 0x0080: + case 0x0082: + case 0x0084: + case 0x0086: + case 0x0088: + case 0x008A: + case 0x008C: + case 0x008E: + default: + break; + } } // Reads from / writes to the transfer area UINT8 __fastcall neogeoReadByteTransfer(UINT32 sekAddress) { -// if ((sekAddress & 0x0FFFFF) < 16) -// printf(PRINT_NORMAL, _T(" - NGCD port 0x%06X read (byte, PC: 0x%06X)\n"), sekAddress, SekGetPC(-1)); - sekAddress ^= 1; switch (nActiveTransferArea) { @@ -3610,9 +3148,6 @@ UINT8 __fastcall neogeoReadByteTransfer(UINT32 sekAddress) UINT16 __fastcall neogeoReadWordTransfer(UINT32 sekAddress) { -// if ((sekAddress & 0x0FFFFF) < 16) -// bprintf(PRINT_NORMAL, _T(" - Transfer: 0x%06X read (word, PC: 0x%06X)\n"), sekAddress, SekGetPC(-1)); - switch (nActiveTransferArea) { case 0: // Sprites return *((UINT16*)(NeoSpriteRAM + nSpriteTransferBank + (sekAddress & 0xFFFFF))); @@ -3634,63 +3169,47 @@ UINT16 __fastcall neogeoReadWordTransfer(UINT32 sekAddress) void __fastcall neogeoWriteByteTransfer(UINT32 sekAddress, UINT8 byteValue) { -// if ((sekAddress & 0x0FFFFF) < 16) -// bprintf(PRINT_NORMAL, _T(" - Transfer: 0x%06X -> 0x%02X (PC: 0x%06X)\n"), sekAddress, byteValue, SekGetPC(-1)); - - if (!nTransferWriteEnable) { -// return; - } - sekAddress ^= 1; - switch (nActiveTransferArea) { - case 0: // Sprites - NeoSpriteRAM[nSpriteTransferBank + (sekAddress & 0x0FFFFF)] = byteValue; - //NeoCDOBJBankUpdate[nSpriteTransferBank >> 20] = true; - break; - case 1: // ADPCM - YM2610ADPCMAROM[nNeoActiveSlot][nADPCMTransferBank + ((sekAddress & 0x0FFFFF) >> 1)] = byteValue; - break; - case 4: // Z80 - if ((sekAddress & 0xfffff) >= 0x20000) break; - NeoZ80ROMActive[(sekAddress & 0x1FFFF) >> 1] = byteValue; - break; - case 5: // Text - NeoTextRAM[(sekAddress & 0x3FFFF) >> 1] = byteValue; -// NeoUpdateTextOne((sekAddress & 0x3FFFF) >> 1, byteValue); - break; - } + switch (nActiveTransferArea) + { + case 0: // Sprites + NeoSpriteRAM[nSpriteTransferBank + (sekAddress & 0x0FFFFF)] = byteValue; + break; + case 1: // ADPCM + YM2610ADPCMAROM[nNeoActiveSlot][nADPCMTransferBank + ((sekAddress & 0x0FFFFF) >> 1)] = byteValue; + break; + case 4: // Z80 + if ((sekAddress & 0xfffff) >= 0x20000) break; + NeoZ80ROMActive[(sekAddress & 0x1FFFF) >> 1] = byteValue; + break; + case 5: // Text + NeoTextRAM[(sekAddress & 0x3FFFF) >> 1] = byteValue; + break; + } } void __fastcall neogeoWriteWordTransfer(UINT32 sekAddress, UINT16 wordValue) { -// if ((sekAddress & 0x0FFFFF) < 16) -// bprintf(PRINT_NORMAL, _T(" - Transfer: 0x%06X -> 0x%04X (PC: 0x%06X)\n"), sekAddress, wordValue, SekGetPC(-1)); - - if (!nTransferWriteEnable) { -// return; - } - - switch (nActiveTransferArea) { - case 0: // Sprites - *((UINT16*)(NeoSpriteRAM + nSpriteTransferBank + (sekAddress & 0xFFFFF))) = wordValue; - //NeoCDOBJBankUpdate[nSpriteTransferBank >> 20] = true; - break; - case 1: // ADPCM - YM2610ADPCMAROM[nNeoActiveSlot][nADPCMTransferBank + ((sekAddress & 0x0FFFFF) >> 1)] = wordValue; - break; - case 4: // Z80 - // The games that write here, seem to write crap, however the BIOS writes the Z80 code here, and not in the byte area - // So basically, we are allowing writes to here, until the BIOS has finished writing the program, then not allowing any further writes - if (((sekAddress & 0xfffff) >= 0x20000) || nNeoCDZ80ProgWriteWordCancelHack) break; - if (sekAddress == 0xe1fdf2) nNeoCDZ80ProgWriteWordCancelHack = 1; - NeoZ80ROMActive[(sekAddress & 0x1FFFF) >> 1] = wordValue; - break; - case 5: // Text - NeoTextRAM[(sekAddress & 0x3FFFF) >> 1] = wordValue; -// NeoUpdateTextOne((sekAddress & 0x3FFFF) >> 1, wordValue); - break; - } + switch (nActiveTransferArea) + { + case 0: // Sprites + *((UINT16*)(NeoSpriteRAM + nSpriteTransferBank + (sekAddress & 0xFFFFF))) = wordValue; + break; + case 1: // ADPCM + YM2610ADPCMAROM[nNeoActiveSlot][nADPCMTransferBank + ((sekAddress & 0x0FFFFF) >> 1)] = wordValue; + break; + case 4: // Z80 + // The games that write here, seem to write crap, however the BIOS writes the Z80 code here, and not in the byte area + // So basically, we are allowing writes to here, until the BIOS has finished writing the program, then not allowing any further writes + if (((sekAddress & 0xfffff) >= 0x20000) || nNeoCDZ80ProgWriteWordCancelHack) break; + if (sekAddress == 0xe1fdf2) nNeoCDZ80ProgWriteWordCancelHack = 1; + NeoZ80ROMActive[(sekAddress & 0x1FFFF) >> 1] = wordValue; + break; + case 5: // Text + NeoTextRAM[(sekAddress & 0x3FFFF) >> 1] = wordValue; + break; + } } #endif // END WANT_NEOGEOCD @@ -3698,24 +3217,16 @@ void __fastcall neogeoWriteWordTransfer(UINT32 sekAddress, UINT16 wordValue) void __fastcall neogeoWriteWord68KProgram(UINT32 sekAddress, UINT16 wordValue) { -// if (sekAddress < 16) -// bprintf(PRINT_NORMAL, _T(" - 68K: 0x%06X -> 0x%04X (PC: 0x%06X)\n"), sekAddress, wordValue, SekGetPC(-1)); - *((UINT16*)(Neo68KROMActive + sekAddress)) = BURN_ENDIAN_SWAP_INT16(wordValue); - if (sekAddress >= 0x0100) { + if (sekAddress >= 0x0100) *((UINT16*)(NeoVectorActive + sekAddress)) = BURN_ENDIAN_SWAP_INT16(wordValue); - } } void __fastcall neogeoWriteByte68KProgram(UINT32 sekAddress, UINT8 byteValue) { -// if (sekAddress < 16) -// bprintf(PRINT_NORMAL, _T(" - 68K: 0x%06X -> 0x%02X (PC: 0x%06X)\n"), sekAddress, byteValue, SekGetPC(-1)); - Neo68KROMActive[sekAddress ^ 1] = byteValue; - if (sekAddress >= 0x0100) { + if (sekAddress >= 0x0100) NeoVectorActive[sekAddress ^ 1] = byteValue; - } } // ---------------------------------------------------------------------------- @@ -3724,76 +3235,20 @@ void __fastcall neogeoWriteByte68KProgram(UINT32 sekAddress, UINT8 byteValue) void wav_exit(); #endif -static INT32 neogeoReset() +static INT32 neogeoReset(void) { - if (nNeoSystemType & NEO_SYS_CART) { + if (nNeoSystemType & NEO_SYS_CART) + { NeoLoad68KBIOS(NeoSystem & 0x1f); - if (nBIOS == -1 || nBIOS == 29) { - // Write system type & region code into BIOS ROM + // Write system type & region code into BIOS ROM + if (nBIOS == -1 || nBIOS == 29) *((UINT16*)(Neo68KBIOS + 0x000400)) = BURN_ENDIAN_SWAP_INT16(((NeoSystem & 4) << 13) | (NeoSystem & 0x03)); - } - -#if 1 && defined FBA_DEBUG - if (((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) != HARDWARE_SNK_DEDICATED_PCB) && (BurnDrvGetHardwareCode() & HARDWARE_SNK_CONTROLMASK) != HARDWARE_SNK_TRACKBALL) { - switch (NeoSystem & 0x1f) { - case 0x00: { bprintf(PRINT_IMPORTANT, _T("Emulating using MVS Asia/Europe ver. 6 (1 slot) BIOS\n")); break; } - case 0x01: { bprintf(PRINT_IMPORTANT, _T("Emulating using MVS Asia/Europe ver. 5 (1 slot) BIOS\n")); break; } - case 0x02: { bprintf(PRINT_IMPORTANT, _T("Emulating using MVS Asia/Europe ver. 3 (4 slot) BIOS\n")); break; } - case 0x03: { bprintf(PRINT_IMPORTANT, _T("Emulating using MVS USA ver. 5 (2 slot) BIOS\n")); break; } - case 0x04: { bprintf(PRINT_IMPORTANT, _T("Emulating using MVS USA ver. 5 (6 slot) BIOS\n")); break; } - case 0x05: { bprintf(PRINT_IMPORTANT, _T("Emulating using MVS Japan ver. 6 (? slot) BIOS\n")); break; } - case 0x06: { bprintf(PRINT_IMPORTANT, _T("Emulating using MVS Japan ver. 5 (? slot) BIOS\n")); break; } - case 0x07: { bprintf(PRINT_IMPORTANT, _T("Emulating using MVS Japan ver. 3 (4 slot) BIOS\n")); break; } - case 0x08: { bprintf(PRINT_IMPORTANT, _T("Emulating using NEO-MVH MV1C BIOS\n")); break; } - case 0x09: { bprintf(PRINT_IMPORTANT, _T("MVS Japan (J3)\n")); break; } - case 0x0a: { bprintf(PRINT_IMPORTANT, _T("Emulating using AES Japan BIOS\n")); break; } - case 0x0b: { bprintf(PRINT_IMPORTANT, _T("Emulating using AES Asia BIOS\n")); break; } - case 0x0c: { bprintf(PRINT_IMPORTANT, _T("Emulating using Development Kit BIOS\n")); break; } - case 0x0d: { bprintf(PRINT_IMPORTANT, _T("Emulating using Deck ver. 6 (Git Ver 1.3) BIOS\n")); break; } - case 0x0e: { bprintf(PRINT_IMPORTANT, _T("Emulating using Universe BIOS ver. 4.0 BIOS\n")); break; } - case 0x0f: { bprintf(PRINT_IMPORTANT, _T("Emulating using Universe BIOS ver. 3.3 BIOS\n")); break; } - case 0x10: { bprintf(PRINT_IMPORTANT, _T("Emulating using Universe BIOS ver. 3.2 BIOS\n")); break; } - case 0x11: { bprintf(PRINT_IMPORTANT, _T("Emulating using Universe BIOS ver. 3.1 BIOS\n")); break; } - case 0x12: { bprintf(PRINT_IMPORTANT, _T("Emulating using Universe BIOS ver. 3.0 BIOS\n")); break; } - case 0x13: { bprintf(PRINT_IMPORTANT, _T("Emulating using Universe BIOS ver. 2.3 BIOS\n")); break; } - case 0x14: { bprintf(PRINT_IMPORTANT, _T("Emulating using Universe BIOS ver. 2.3 (alt) BIOS\n")); break; } - case 0x15: { bprintf(PRINT_IMPORTANT, _T("Emulating using Universe BIOS ver. 2.2 BIOS\n")); break; } - case 0x16: { bprintf(PRINT_IMPORTANT, _T("Emulating using Universe BIOS ver. 2.1 BIOS\n")); break; } - case 0x17: { bprintf(PRINT_IMPORTANT, _T("Emulating using Universe BIOS ver. 2.0 BIOS\n")); break; } - case 0x18: { bprintf(PRINT_IMPORTANT, _T("Emulating using Universe BIOS ver. 1.3 BIOS\n")); break; } - case 0x19: { bprintf(PRINT_IMPORTANT, _T("Emulating using Universe BIOS ver. 1.2 BIOS\n")); break; } - case 0x1a: { bprintf(PRINT_IMPORTANT, _T("Emulating using Universe BIOS ver. 1.2 (alt) BIOS\n")); break; } - case 0x1b: { bprintf(PRINT_IMPORTANT, _T("Emulating using Universe BIOS ver. 1.1 BIOS\n")); break; } - case 0x1c: { bprintf(PRINT_IMPORTANT, _T("Emulating using Universe BIOS ver. 1.0 BIOS\n")); break; } - case 0x1d: { bprintf(PRINT_IMPORTANT, _T("Emulating using NeoOpen BIOS v0.1 beta BIOS\n")); break; } - } - } - - if ((BurnDrvGetHardwareCode() & HARDWARE_SNK_CONTROLMASK) == HARDWARE_SNK_TRACKBALL) { - bprintf(PRINT_IMPORTANT, _T("Emulating using custom Trackball BIOS\n")); - } - - if ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_DEDICATED_PCB) { - bprintf(PRINT_IMPORTANT, _T("Emulating using custom PCB BIOS\n")); - } -#endif OldDebugDip[0] = NeoDebugDip[0] = 0; OldDebugDip[1] = NeoDebugDip[1] = 0; } -#if 1 && defined FBA_DEBUG - if (nNeoSystemType & NEO_SYS_CD) { - bprintf(PRINT_IMPORTANT, _T(" - Emulating Neo CD system.\n")); - - // exit WAV object if needed - wav_exit(); - - nNeoCDZ80ProgWriteWordCancelHack = 0; - } -#endif - NeoSetSystemType(); bSRAMWritable = false; @@ -3913,10 +3368,8 @@ static INT32 neogeoReset() #ifdef WANT_NEOGEOCD static void SwitchToMusashi() { - if (bBurnUseASMCPUEmulation) { -#if 1 && defined FBA_DEBUG - bprintf(PRINT_NORMAL, _T("Switching to Musashi 68000 core\n")); -#endif + if (bBurnUseASMCPUEmulation) + { bUseAsm68KCoreOldValue = bBurnUseASMCPUEmulation; bBurnUseASMCPUEmulation = false; } @@ -4471,11 +3924,10 @@ INT32 NeoExit() nNeoCDZ80ProgWriteWordCancelHack = 0; // Switch back CPU core if needed - if (nNeoSystemType & NEO_SYS_CD) { - if (bUseAsm68KCoreOldValue) { -#if 1 && defined FBA_DEBUG - bprintf(PRINT_NORMAL, _T("Switching back to A68K core\n")); -#endif + if (nNeoSystemType & NEO_SYS_CD) + { + if (bUseAsm68KCoreOldValue) + { bUseAsm68KCoreOldValue = false; bBurnUseASMCPUEmulation = true; } @@ -4496,14 +3948,10 @@ INT32 NeoRender() NeoUpdatePalette(); // Update the palette NeoClearScreen(); - if (bNeoEnableGraphics) { + if (bNeoEnableGraphics) + { nSliceStart = 0x10; nSliceEnd = 0xF0; nSliceSize = nSliceEnd - nSliceStart; - -#if 0 || defined LOG_DRAW - bprintf(PRINT_NORMAL, _T(" -- Drawing slice: %3i - %3i.\n"), nSliceStart, nSliceEnd); -#endif - NeoRenderSprites(); // Render sprites NeoRenderText(); // Render text layer } @@ -4560,243 +4008,174 @@ static void NeoStandardInputs(INT32 nBank) } } -#if 1 #define NeoSekRun SekRun -#else -static INT32 NeoSekRun(const INT32 nCycles) + +INT32 NeoFrame(void) { - INT32 nCyclesExecutedTotal = 0, nOldCyclesSegment = nCyclesSegment; -#ifdef WANT_NEOGEOCD - if (!(nNeoSystemType & NEO_SYS_CD) || !(nff0002 & 0x0050)) - return SekRun(nCycles); -#endif -//bprintf(PRINT_NORMAL, _T("***\n")); - - while (nCyclesExecutedTotal < nCycles) { - - INT32 nCyclesExecuted; -#ifdef WANT_NEOGEOCD - if (nNeoCDCyclesIRQ <= 0) { - nNeoCDCyclesIRQ += nNeoCDCyclesIRQPeriod; - - // Trigger CD mechanism communication interrupt -//bprintf(PRINT_NORMAL, _T(" DECI status %i\n"), (LC8951RegistersR[1] & 0x20) >> 5); -#endif - nIRQAcknowledge &= ~0x10; -#ifdef WANT_NEOGEOCD - NeoCDIRQUpdate(0); - - if ((nff0002 & 0x0500) && (LC8951RegistersR[1] & 0x20)) - NeoCDReadSector(); - } - - nCyclesSegment = (nNeoCDCyclesIRQ < (nCycles - nCyclesExecutedTotal)) ? nNeoCDCyclesIRQ : (nCycles - nCyclesExecutedTotal); -#endif - nCyclesExecuted = SekRun(nCyclesSegment); - -//bprintf(PRINT_NORMAL, _T("%010i %010i %010i %010i\n"), nCycles, nCyclesExecutedTotal, nCyclesExecuted, nNeoCDCyclesIRQ); - - nCyclesExecutedTotal += nCyclesExecuted; -#ifdef WANT_NEOGEOCD - nNeoCDCyclesIRQ -= nCyclesExecuted; -#endif - - } - - nCyclesSegment = nOldCyclesSegment; - - return nCyclesExecutedTotal; -} -#endif - -INT32 NeoFrame() -{ - if (NeoReset) { // Reset machine - if (nNeoSystemType & NEO_SYS_CART) { + if (NeoReset) + { // Reset machine + if (nNeoSystemType & NEO_SYS_CART) memset(Neo68KRAM, 0, 0x010000); - } - neogeoReset(); } NeoInput[ 5] &= 0x1F; // Clear ports NeoInput[13] = 0x00; // - switch (nNeoControlConfig) { - case HARDWARE_SNK_PADDLE: { // Two Paddles + joysticks + switch (nNeoControlConfig) + { + case HARDWARE_SNK_PADDLE: // Two Paddles + joysticks + NeoStandardInputs(0); - NeoStandardInputs(0); + // Handle analog controls + nAnalogAxis[0] -= NeoAxis[0]; + nAnalogAxis[1] -= NeoAxis[1]; + NeoInput[6] = (nAnalogAxis[0] >> 8) & 0xFF; + NeoInput[7] = (nAnalogAxis[1] >> 8) & 0xFF; - // Handle analog controls - nAnalogAxis[0] -= NeoAxis[0]; - nAnalogAxis[1] -= NeoAxis[1]; - NeoInput[6] = (nAnalogAxis[0] >> 8) & 0xFF; - NeoInput[7] = (nAnalogAxis[1] >> 8) & 0xFF; + break; + case HARDWARE_SNK_TRACKBALL: // Trackball controller + NeoInput[1] = 0x00; // Buttons + NeoInput[2] = 0x00; // + NeoInput[3] = 0x00; // + for (INT32 i = 0; i < 8; i++) + { + NeoInput[1] |= (NeoJoy2[i] & 1) << i; + NeoInput[2] |= (NeoButton1[i] & 1) << i; + NeoInput[3] |= (NeoButton2[i] & 1) << i; + } + // Handle analog controls + nAnalogAxis[0] += NeoAxis[0]; + nAnalogAxis[1] += NeoAxis[1]; + NeoInput[6] = (nAnalogAxis[0] >> 8) & 0xFF; + NeoInput[7] = (nAnalogAxis[1] >> 8) & 0xFF; - break; - } + if (NeoDiag[0]) + NeoInput[5] |= 0x80; + break; + case HARDWARE_SNK_4_JOYSTICKS: // Four joystick controllers + NeoStandardInputs(0); + NeoStandardInputs(1); + break; + case HARDWARE_SNK_MAHJONG: // Mahjong controller + NeoStandardInputs(0); - case HARDWARE_SNK_TRACKBALL: { // Trackball controller - NeoInput[1] = 0x00; // Buttons - NeoInput[2] = 0x00; // - NeoInput[3] = 0x00; // - for (INT32 i = 0; i < 8; i++) { - NeoInput[1] |= (NeoJoy2[i] & 1) << i; - NeoInput[2] |= (NeoButton1[i] & 1) << i; - NeoInput[3] |= (NeoButton2[i] & 1) << i; - } - // Handle analog controls - nAnalogAxis[0] += NeoAxis[0]; - nAnalogAxis[1] += NeoAxis[1]; - NeoInput[6] = (nAnalogAxis[0] >> 8) & 0xFF; - NeoInput[7] = (nAnalogAxis[1] >> 8) & 0xFF; - - if (NeoDiag[0]) { - NeoInput[5] |= 0x80; - } - - break; - } - - case HARDWARE_SNK_4_JOYSTICKS: { // Four joystick controllers - - NeoStandardInputs(0); - NeoStandardInputs(1); - - break; - } - - case HARDWARE_SNK_MAHJONG: { // Mahjong controller - - NeoStandardInputs(0); - - NeoInput[16] = 0x00; - NeoInput[17] = 0x00; - NeoInput[18] = 0x00; - for (INT32 i = 0; i < 7; i++) { - NeoInput[16] |= (NeoButton1[i + 8] & 1) << i; - NeoInput[17] |= (NeoButton1[i + 16] & 1) << i; - NeoInput[18] |= (NeoButton1[i + 24] & 1) << i; - } - - break; - } - - case HARDWARE_SNK_GAMBLING: { // Gambling configuration - - NeoStandardInputs(0); - -/* NeoInput[16] = 0x00; - for (INT32 i = 0; i < 7; i++) { - NeoInput[16] |= (NeoButton1[i + 16] & 1) << i; - }*/ - - break; - } - - default: { // Two joystick controllers - NeoStandardInputs(0); - } - } - - if (nNeoSystemType & NEO_SYS_CART) { + NeoInput[16] = 0x00; + NeoInput[17] = 0x00; + NeoInput[18] = 0x00; + for (INT32 i = 0; i < 7; i++) + { + NeoInput[16] |= (NeoButton1[i + 8] & 1) << i; + NeoInput[17] |= (NeoButton1[i + 16] & 1) << i; + NeoInput[18] |= (NeoButton1[i + 24] & 1) << i; + } + break; + case HARDWARE_SNK_GAMBLING: // Gambling configuration + NeoStandardInputs(0); + break; + default: // Two joystick controllers + NeoStandardInputs(0); + break; + } + if (nNeoSystemType & NEO_SYS_CART) + { bMemoryCardWritable = (NeoSystem & 0x80); - if (bMemoryCardInserted) { + if (bMemoryCardInserted) + { NeoInput[2] |= 0x30; // JEIDA connector pen /CD1, /READY - if (bMemoryCardWritable) { + if (bMemoryCardWritable) NeoInput[2] |= 0x40; // JEIDA connector pen /WP - } } - if (nNeoSystemType & NEO_SYS_AES) { // Report the type of hardware + if (nNeoSystemType & NEO_SYS_AES) // Report the type of hardware NeoInput[2] |= 0x80; - } - if (nNeoControlConfig != HARDWARE_SNK_GAMBLING) { - if (nNeoSystemType & NEO_SYS_MVS) { // Report the appropriate number of slots on MVS hardware - switch (nNeoNumSlots) { - case 4: - NeoInput[ 5] &= ~0x40; - NeoInput[ 3] |= 0x20; - break; - case 6: - NeoInput[ 5] &= ~0x40; - NeoInput[ 3] &= ~0x20; - break; - default: + if (nNeoControlConfig != HARDWARE_SNK_GAMBLING) + { + if (nNeoSystemType & NEO_SYS_MVS) // Report the appropriate number of slots on MVS hardware + { + switch (nNeoNumSlots) + { + case 4: + NeoInput[ 5] &= ~0x40; + NeoInput[ 3] |= 0x20; + break; + case 6: + NeoInput[ 5] &= ~0x40; + NeoInput[ 3] &= ~0x20; + break; + default: - // Default to 1/2 slot hardware + // Default to 1/2 slot hardware - NeoInput[ 5] |= 0x40; - NeoInput[ 3] |= 0x20; - } + NeoInput[ 5] |= 0x40; + NeoInput[ 3] |= 0x20; + } } } - if (OldDebugDip[0] != NeoDebugDip[0]) { + if (OldDebugDip[0] != NeoDebugDip[0]) + { SekOpen(0); SekWriteByte(SekReadLong(0x010E) + 0, NeoDebugDip[0]); SekClose(); OldDebugDip[0] = NeoDebugDip[0]; } - if (OldDebugDip[1] != NeoDebugDip[1]) { + if (OldDebugDip[1] != NeoDebugDip[1]) + { SekOpen(0); SekWriteByte(SekReadLong(0x010E) + 1, NeoDebugDip[1]); SekClose(); OldDebugDip[1] = NeoDebugDip[1]; } - } else { + } + else + { NeoInput[2] |= 0x70; NeoInput[16] = 0x00; NeoInput[17] = 0x00; - if (NeoDiag[0]) { + if (NeoDiag[0]) NeoInput[16] = (UINT8)~0xDA; - } } - if (nPrevBurnCPUSpeedAdjust != nBurnCPUSpeedAdjust) { - // 68K CPU clock is 12MHz, modified by nBurnCPUSpeedAdjust - nCyclesTotal[0] = (INT32)((INT64)12000000 * nBurnCPUSpeedAdjust / (256.0 * NEO_VREFRESH)); - + if (nPrevBurnCPUSpeedAdjust != nBurnCPUSpeedAdjust) + { + // 68K CPU clock is 12MHz, modified by nBurnCPUSpeedAdjust + nCyclesTotal[0] = (INT32)((INT64)12000000 * nBurnCPUSpeedAdjust / (256.0 * NEO_VREFRESH)); + #if defined Z80_SPEED_ADJUST - // Z80 CPU clock always 68K / 3 - nCyclesTotal[1] = nCyclesTotal[0] / 3; - nZ80Clockspeed = (INT32)((INT64)4000000 * nBurnCPUSpeedAdjust / 256); - BurnTimerAttachZet(nZ80Clockspeed); + // Z80 CPU clock always 68K / 3 + nCyclesTotal[1] = nCyclesTotal[0] / 3; + nZ80Clockspeed = (INT32)((INT64)4000000 * nBurnCPUSpeedAdjust / 256); + BurnTimerAttachZet(nZ80Clockspeed); #else - // Z80 CPU clock is always 4MHz - nCyclesTotal[1] = 4000000.0 / NEO_VREFRESH; + // Z80 CPU clock is always 4MHz + nCyclesTotal[1] = 4000000.0 / NEO_VREFRESH; #endif - // 68K cycles executed each scanline - SekOpen(0); - SekSetCyclesScanline((INT32)(12000000.0 * nBurnCPUSpeedAdjust / (256.0 * NEO_HREFRESH))); - SekClose(); + // 68K cycles executed each scanline + SekOpen(0); + SekSetCyclesScanline((INT32)(12000000.0 * nBurnCPUSpeedAdjust / (256.0 * NEO_HREFRESH))); + SekClose(); - // uPD499A ticks per second (same as 68K clock) - uPD499ASetTicks((INT64)12000000 * nBurnCPUSpeedAdjust / 256); + // uPD499A ticks per second (same as 68K clock) + uPD499ASetTicks((INT64)12000000 * nBurnCPUSpeedAdjust / 256); - nPrevBurnCPUSpeedAdjust = nBurnCPUSpeedAdjust; - } + nPrevBurnCPUSpeedAdjust = nBurnCPUSpeedAdjust; + } #if defined EMULATE_WATCHDOG // If the watchdog isn't reset every 8 frames, reset the system // This can't be 100% accurate, as the 68000 instruction timings are not 100% - if ((nNeoSystemType & NEO_SYS_CART) && nNeoWatchdog > nCyclesTotal[0] * 8) { - if (bDisableNeoWatchdog == false) { -#if 1 && defined FBA_DEBUG - SekOpen(0); - bprintf(PRINT_IMPORTANT, _T(" ** Watchdog triggered system reset (PC: 0x%06X)\n"), SekGetPC(-1)); - SekClose(); -#endif + if ((nNeoSystemType & NEO_SYS_CART) && nNeoWatchdog > nCyclesTotal[0] * 8) + { + if (!bDisableNeoWatchdog) neogeoReset(); - } } #endif -//bprintf(PRINT_NORMAL, _T("***\n")); bRenderImage = false; bForceUpdateOnStatusRead = false; @@ -4836,32 +4215,21 @@ INT32 NeoFrame() } #endif nCyclesSegment = nSekCyclesScanline * 24; - while (SekTotalCycles() < nCyclesSegment) { + while (SekTotalCycles() < nCyclesSegment) + { + if ((nIRQControl & 0x10) && (nIRQCycles < NO_IRQ_PENDING) && (SekTotalCycles() >= nIRQCycles)) + { + nIRQAcknowledge &= ~2; + SekSetIRQLine(nScanlineIRQ, SEK_IRQSTATUS_ACK); - if ((nIRQControl & 0x10) && (nIRQCycles < NO_IRQ_PENDING) && (SekTotalCycles() >= nIRQCycles)) { + if (nIRQControl & 0x80) + nIRQCycles += NeoConvertIRQPosition(nIRQOffset + 1); + } - nIRQAcknowledge &= ~2; - SekSetIRQLine(nScanlineIRQ, SEK_IRQSTATUS_ACK); - -#if 0 || defined LOG_IRQ - bprintf(PRINT_NORMAL, _T(" - IRQ triggered (line %3i + %3i cycles).\n"), SekCurrentScanline(), SekTotalCycles() - SekCurrentScanline() * SekCyclesScanline()); -#endif - - if (nIRQControl & 0x80) { - nIRQCycles += NeoConvertIRQPosition(nIRQOffset + 1); - -#if 0 || defined LOG_IRQ - bprintf(PRINT_NORMAL, _T(" - IRQ Line -> %3i (at line %3i, autoload).\n"), nIRQCycles / SekCyclesScanline(), SekCurrentScanline()); -#endif - - } - } - - if (nCyclesSegment < nIRQCycles || SekTotalCycles() >= nIRQCycles) { + if (nCyclesSegment < nIRQCycles || SekTotalCycles() >= nIRQCycles) NeoSekRun(nCyclesSegment - SekTotalCycles()); - } else { + else NeoSekRun(nIRQCycles - SekTotalCycles()); - } } bRenderImage = pBurnDraw != NULL && bNeoEnableGraphics; @@ -4879,44 +4247,33 @@ INT32 NeoFrame() nLastIRQ = nIRQCycles; nIRQAcknowledge &= ~2; SekSetIRQLine(nScanlineIRQ, SEK_IRQSTATUS_ACK); -#if 0 || defined LOG_IRQ - bprintf(PRINT_NORMAL, _T(" - IRQ triggered (line %3i + %3i cycles).\n"), SekCurrentScanline(), SekTotalCycles() - SekCurrentScanline() * SekCyclesScanline()); -#endif - if (nIRQControl & 0x80) { + if (nIRQControl & 0x80) nIRQCycles += NeoConvertIRQPosition(nIRQOffset + 1); -#if 0 || defined LOG_IRQ - bprintf(PRINT_NORMAL, _T(" - IRQ Line -> %3i (at line %3i, autoload).\n"), nIRQCycles / SekCyclesScanline(), SekCurrentScanline()); -#endif - - } bForcePartialRender = bRenderImage; - if (bForcePartialRender) { + if (bForcePartialRender) + { nSliceStart = nSliceEnd; nSliceEnd = SekCurrentScanline() - 5; } - } else { - if (bForcePartialRender) { + } + else + { + if (bForcePartialRender) + { nSliceStart = nSliceEnd; nSliceEnd = SekCurrentScanline() - 6; } } - if (bForcePartialRender) { - - if (nSliceEnd > 240) { + if (bForcePartialRender) + { + if (nSliceEnd > 240) nSliceEnd = 240; - } nSliceSize = nSliceEnd - nSliceStart; - if (nSliceSize > 0) { - -#if 0 || defined LOG_DRAW - bprintf(PRINT_NORMAL, _T(" -- Drawing slice: %3i - %3i.\n"), nSliceStart, nSliceEnd); -#endif - + if (nSliceSize > 0) NeoRenderSprites(); // Render sprites - } } bForcePartialRender = false; @@ -4938,26 +4295,17 @@ INT32 NeoFrame() nIRQAcknowledge &= ~2; SekSetIRQLine(nScanlineIRQ, SEK_IRQSTATUS_ACK); -#if 0 || defined LOG_IRQ - bprintf(PRINT_NORMAL, _T(" - IRQ triggered (line %3i + %3i cycles).\n"), SekCurrentScanline(), SekTotalCycles() - SekCurrentScanline() * SekCyclesScanline()); -#endif - - if (nIRQControl & 0x80) { + if (nIRQControl & 0x80) nIRQCycles += NeoConvertIRQPosition(nIRQOffset + 1); -#if 0 || defined LOG_IRQ - bprintf(PRINT_NORMAL, _T(" - IRQ Line -> %3i (at line %3i, autoload).\n"), nIRQCycles / SekCyclesScanline(), SekCurrentScanline()); -#endif - - } - bForcePartialRender = bRenderImage; } #if defined RASTERS_OPTIONAL if (bAllowRasters) { #endif - if (bForcePartialRender) { + if (bForcePartialRender) + { nSliceStart = nSliceEnd; nSliceEnd = SekCurrentScanline() - 5; @@ -4966,14 +4314,8 @@ INT32 NeoFrame() nSliceEnd = 240; } nSliceSize = nSliceEnd - nSliceStart; - if (nSliceSize > 0) { - -#if 0 || defined LOG_DRAW - bprintf(PRINT_NORMAL, _T(" -- Drawing slice: %3i - %3i.\n"), nSliceStart, nSliceEnd); -#endif - + if (nSliceSize > 0) NeoRenderSprites(); // Render sprites - } } #if defined RASTERS_OPTIONAL @@ -4990,16 +4332,13 @@ INT32 NeoFrame() } } - if (bRenderImage) { - if (nSliceEnd < 240) { + if (bRenderImage) + { + if (nSliceEnd < 240) + { nSliceStart = nSliceEnd; nSliceEnd = 240; nSliceSize = nSliceEnd - nSliceStart; - -#if 0 || defined LOG_DRAW - bprintf(PRINT_NORMAL, _T(" -- Drawing slice: %3i - %3i.\n"), nSliceStart, nSliceEnd); -#endif - NeoRenderSprites(); // Render sprites } NeoRenderText(); // Render text layer @@ -5008,41 +4347,23 @@ INT32 NeoFrame() nIRQAcknowledge &= ~4; SekSetIRQLine(nVBLankIRQ, SEK_IRQSTATUS_ACK); -#if 0 || defined LOG_IRQ - bprintf(PRINT_NORMAL, _T(" - VBLank.\n")); -#endif - // set IRQ scanline at line 248 - if (nIRQControl & 0x40) { - if (NeoConvertIRQPosition(nIRQOffset) < NO_IRQ_PENDING) { + if (nIRQControl & 0x40) + { + if (NeoConvertIRQPosition(nIRQOffset) < NO_IRQ_PENDING) nIRQCycles = nCyclesSegment + NeoConvertIRQPosition(nIRQOffset); - } - -#if 0 || defined LOG_IRQ - bprintf(PRINT_NORMAL, _T(" - IRQ Line -> %3i (at line %3i, VBlank).\n"), nIRQCycles / SekCyclesScanline(), SekCurrentScanline()); -#endif - } nCyclesSegment = nCyclesTotal[0]; - while (SekTotalCycles() < nCyclesSegment) { - - if ((nIRQControl & 0x10) && (nIRQCycles < NO_IRQ_PENDING) && (SekTotalCycles() >= nIRQCycles)) { + while (SekTotalCycles() < nCyclesSegment) + { + if ((nIRQControl & 0x10) && (nIRQCycles < NO_IRQ_PENDING) && (SekTotalCycles() >= nIRQCycles)) + { nIRQAcknowledge &= ~2; SekSetIRQLine(nScanlineIRQ, SEK_IRQSTATUS_ACK); -#if 0 || defined LOG_IRQ - bprintf(PRINT_NORMAL, _T(" - IRQ triggered (line %3i + %3i cycles).\n"), SekCurrentScanline(), SekTotalCycles() - SekCurrentScanline() * SekCyclesScanline()); -#endif - - if (nIRQControl & 0x80) { + if (nIRQControl & 0x80) nIRQCycles += NeoConvertIRQPosition(nIRQOffset + 1); - -#if 0 || defined LOG_IRQ - bprintf(PRINT_NORMAL, _T(" - IRQ Line -> %3i (at line %3i, autoload).\n"), nIRQCycles / SekCyclesScanline(), SekCurrentScanline()); -#endif - - } } if (nCyclesSegment < nIRQCycles || SekTotalCycles() >= nIRQCycles) { @@ -5052,19 +4373,12 @@ INT32 NeoFrame() } } - if (nIRQCycles < NO_IRQ_PENDING) { + if (nIRQCycles < NO_IRQ_PENDING) + { nIRQCycles -= nCyclesTotal[0]; - if (nIRQCycles < 0) { + if (nIRQCycles < 0) nIRQCycles = NO_IRQ_PENDING; - -#if 0 || defined LOG_IRQ - } else { - bprintf(PRINT_NORMAL, _T(" - IRQ Line past screen end (IRQControl: %02X, line -> %3i).\n"), nIRQControl, nIRQCycles / SekCyclesScanline()); -#endif - - } } -// bprintf(PRINT_NORMAL, " -- IRQControl: %02X, nIRQCycles / SekCyclesScanline(): %3i.\n", nIRQControl, nIRQCycles / SekCyclesScanline()); // Update the sound until the end of the frame @@ -5084,9 +4398,6 @@ INT32 NeoFrame() nCyclesExtra[0] = SekTotalCycles() - nCyclesTotal[0]; nCyclesExtra[1] = ZetTotalCycles() - nCyclesTotal[1]; -// bprintf(PRINT_NORMAL, _T(" Z80 PC 0x%04X\n"), Doze.pc); -// bprintf(PRINT_NORMAL, _T(" - %i\n"), SekTotalCycles()); - ZetClose(); SekClose(); diff --git a/src/burn/drv/neogeo/neo_sprite.cpp b/src/burn/drv/neogeo/neo_sprite.cpp index b64fae4..ac78914 100755 --- a/src/burn/drv/neogeo/neo_sprite.cpp +++ b/src/burn/drv/neogeo/neo_sprite.cpp @@ -43,19 +43,17 @@ static UINT16 BankAttrib01, BankAttrib02, BankAttrib03; // Include the tile rendering functions #include "neo_sprite_func.h" -INT32 NeoRenderSprites() +INT32 NeoRenderSprites(void) { - if (nLastBPP != nBurnBpp ) { + if (nLastBPP != nBurnBpp ) + { nLastBPP = nBurnBpp; RenderBank = RenderBankNormal[nBurnBpp - 2]; } - if (!NeoSpriteROMActive || !(nBurnLayer & 1)) { + if (!NeoSpriteROMActive || !(nBurnLayer & 1)) return 0; - } - -// UINT16 BankAttrib01, BankAttrib02, BankAttrib03; nNeoSpriteFrame04 = nNeoSpriteFrame & 3; nNeoSpriteFrame08 = nNeoSpriteFrame & 7; @@ -93,8 +91,6 @@ INT32 NeoRenderSprites() nBankYZoom = BankAttrib01 & 0xFF; nBankSize = BankAttrib02 & 0x3F; - -// if (nBankSize > 0x10 && nSliceStart == 0x10) bprintf(PRINT_NORMAL, _T("bank: %04X, x: %04X, y: %04X, zoom: %02X, size: %02X.\n"), zBank, nBankXPos, nBankYPos, nBankYZoom, nBankSize); } if (nBankSize) { @@ -114,8 +110,6 @@ INT32 NeoRenderSprites() } } -// bprintf(PRINT_NORMAL, _T("\n")); - return 0; } diff --git a/src/burn/drv/neogeo/neo_sprite_render.h b/src/burn/drv/neogeo/neo_sprite_render.h index 43e2b43..cb9f13e 100755 --- a/src/burn/drv/neogeo/neo_sprite_render.h +++ b/src/burn/drv/neogeo/neo_sprite_render.h @@ -494,9 +494,6 @@ static void FUNCTIONNAME(BPP,XZOOM,CLIP,OPACITY)() while (nLinesDone <= nLinesTotal) { nLine = (nBankYPos + nLinesDone) & 0x01FF; nYPos = nLine; - -// bprintf(PRINT_NORMAL, _T(" - s:%i l:%i y:%i %i z:%i\n"), nLinesTotal, nLinesDone, nYPos, nBankYPos, nBankYZoom); - // Skip everything above the part of the display we need to render if (nYPos < nSliceStart) { nLinesDone += nSliceStart - nYPos; diff --git a/src/burn/drv/neogeo/neo_upd4990a.cpp b/src/burn/drv/neogeo/neo_upd4990a.cpp index 6c38d5d..e69ccae 100644 --- a/src/burn/drv/neogeo/neo_upd4990a.cpp +++ b/src/burn/drv/neogeo/neo_upd4990a.cpp @@ -146,121 +146,112 @@ void uPD4990AScan(INT32 nAction, INT32* pnMin) void uPD4990AWrite(UINT8 CLK, UINT8 STB, UINT8 DATA) { -// bprintf(PRINT_NORMAL, _T(" - uPD4990A written: CLK: %i, STB: %i DATA IN: %i (PC: %06X).\n"), CLK ? 1 : 0, STB ? 1 : 0, DATA ? 1 : 0, SekGetPC(-1)); + if (STB && uPD4990A.nPrevSTB == 0) // Process command + { + switch (uPD4990A.nCommand & 0x0F) + { + case 0x00: // Register hold + uPD4990A.nMode = 0; - if (STB && uPD4990A.nPrevSTB == 0) { // Process command + uPD4990A.nTPMode = 0; + uPD4990A.nInterval = nOneSecond / 64; + uPD4990A.nTPCount %= uPD4990A.nInterval; + break; + case 0x01: // Register shift + uPD4990A.nMode = 1; + break; + case 0x02: // Time set & counter hold + uPD4990A.nMode = 2; + // Convert BCD values to normal numbers + uPD4990A.nSeconds = ((uPD4990A.nRegister[0] >> 0) & 0x0F); + uPD4990A.nSeconds += ((uPD4990A.nRegister[0] >> 4) & 0x0F) * 10; + uPD4990A.nMinutes = ((uPD4990A.nRegister[0] >> 8) & 0x0F); + uPD4990A.nMinutes += ((uPD4990A.nRegister[0] >> 12) & 0x0F) * 10; + uPD4990A.nHours = ((uPD4990A.nRegister[0] >> 16) & 0x0F); + uPD4990A.nHours += ((uPD4990A.nRegister[0] >> 20) & 0x0F) * 10; + uPD4990A.nDay = ((uPD4990A.nRegister[0] >> 24) & 0x0F); + uPD4990A.nDay += ((uPD4990A.nRegister[0] >> 28) & 0x0F) * 10; + uPD4990A.nWeekDay = ((uPD4990A.nRegister[1] >> 0) & 0x0F); + uPD4990A.nMonth = ((uPD4990A.nRegister[1] >> 4) & 0x0F); + uPD4990A.nYear = ((uPD4990A.nRegister[1] >> 8) & 0x0F); + uPD4990A.nYear += ((uPD4990A.nRegister[1] >> 12) & 0x0F) * 10; + break; + case 0x03: // Time read + uPD4990A.nMode = 0; -// bprintf(PRINT_NORMAL, _T(" - Command sent: %02X.\n"), nCommand & 0x0F); + // Convert normal numbers to BCD values + uPD4990A.nRegister[0] = (uPD4990A.nSeconds % 10) << 0; + uPD4990A.nRegister[0] |= (uPD4990A.nSeconds / 10) << 4; + uPD4990A.nRegister[0] |= (uPD4990A.nMinutes % 10) << 8; + uPD4990A.nRegister[0] |= (uPD4990A.nMinutes / 10) << 12; + uPD4990A.nRegister[0] |= (uPD4990A.nHours % 10) << 16; + uPD4990A.nRegister[0] |= (uPD4990A.nHours / 10) << 20; + uPD4990A.nRegister[0] |= (uPD4990A.nDay % 10) << 24; + uPD4990A.nRegister[0] |= (uPD4990A.nDay / 10) << 28; + uPD4990A.nRegister[1] = (uPD4990A.nWeekDay ) << 0; + uPD4990A.nRegister[1] |= (uPD4990A.nMonth ) << 4; + uPD4990A.nRegister[1] |= (uPD4990A.nYear % 10) << 8; + uPD4990A.nRegister[1] |= (uPD4990A.nYear / 10) << 12; + break; - switch (uPD4990A.nCommand & 0x0F) { - case 0x00: // Register hold - uPD4990A.nMode = 0; + case 0x04: + case 0x05: + case 0x06: + case 0x07: { // TP = nn Hz + INT32 n[4] = { 64, 256, 2048, 4096 }; - uPD4990A.nTPMode = 0; - uPD4990A.nInterval = nOneSecond / 64; - uPD4990A.nTPCount %= uPD4990A.nInterval; - break; - case 0x01: // Register shift - uPD4990A.nMode = 1; - break; - case 0x02: // Time set & counter hold - uPD4990A.nMode = 2; + uPD4990A.nTPMode = 0; + uPD4990A.nInterval = nOneSecond / n[uPD4990A.nCommand & 3]; + uPD4990A.nTPCount %= uPD4990A.nInterval; + } + break; + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: { // TP = nn s interval set (counter reset & start) + INT32 n[4] = { 1, 10, 30, 60 }; -// bprintf(PRINT_NORMAL, _T("Time set: %08X %08X.\n"), nRegister[0], nRegister[1]); + uPD4990A.nTPMode = 0; + uPD4990A.nInterval = n[uPD4990A.nCommand & 3] * nOneSecond; + uPD4990A.nTPCount = 0; + } + break; + case 0x0C: // Interval reset + uPD4990A.nTPMode = 1; + uPD4990A.TP = 1; + break; + case 0x0D: // interval start + uPD4990A.nTPMode = 0; + break; + case 0x0E: // Interval stop + uPD4990A.nTPMode = 2; + break; - // Convert BCD values to normal numbers - uPD4990A.nSeconds = ((uPD4990A.nRegister[0] >> 0) & 0x0F); - uPD4990A.nSeconds += ((uPD4990A.nRegister[0] >> 4) & 0x0F) * 10; - uPD4990A.nMinutes = ((uPD4990A.nRegister[0] >> 8) & 0x0F); - uPD4990A.nMinutes += ((uPD4990A.nRegister[0] >> 12) & 0x0F) * 10; - uPD4990A.nHours = ((uPD4990A.nRegister[0] >> 16) & 0x0F); - uPD4990A.nHours += ((uPD4990A.nRegister[0] >> 20) & 0x0F) * 10; - uPD4990A.nDay = ((uPD4990A.nRegister[0] >> 24) & 0x0F); - uPD4990A.nDay += ((uPD4990A.nRegister[0] >> 28) & 0x0F) * 10; - uPD4990A.nWeekDay = ((uPD4990A.nRegister[1] >> 0) & 0x0F); - uPD4990A.nMonth = ((uPD4990A.nRegister[1] >> 4) & 0x0F); - uPD4990A.nYear = ((uPD4990A.nRegister[1] >> 8) & 0x0F); - uPD4990A.nYear += ((uPD4990A.nRegister[1] >> 12) & 0x0F) * 10; - break; - case 0x03: // Time read - uPD4990A.nMode = 0; - - // Convert normal numbers to BCD values - uPD4990A.nRegister[0] = (uPD4990A.nSeconds % 10) << 0; - uPD4990A.nRegister[0] |= (uPD4990A.nSeconds / 10) << 4; - uPD4990A.nRegister[0] |= (uPD4990A.nMinutes % 10) << 8; - uPD4990A.nRegister[0] |= (uPD4990A.nMinutes / 10) << 12; - uPD4990A.nRegister[0] |= (uPD4990A.nHours % 10) << 16; - uPD4990A.nRegister[0] |= (uPD4990A.nHours / 10) << 20; - uPD4990A.nRegister[0] |= (uPD4990A.nDay % 10) << 24; - uPD4990A.nRegister[0] |= (uPD4990A.nDay / 10) << 28; - uPD4990A.nRegister[1] = (uPD4990A.nWeekDay ) << 0; - uPD4990A.nRegister[1] |= (uPD4990A.nMonth ) << 4; - uPD4990A.nRegister[1] |= (uPD4990A.nYear % 10) << 8; - uPD4990A.nRegister[1] |= (uPD4990A.nYear / 10) << 12; - break; - - case 0x04: - case 0x05: - case 0x06: - case 0x07: { // TP = nn Hz - INT32 n[4] = { 64, 256, 2048, 4096 }; - - uPD4990A.nTPMode = 0; - uPD4990A.nInterval = nOneSecond / n[uPD4990A.nCommand & 3]; - uPD4990A.nTPCount %= uPD4990A.nInterval; - break; - } - - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: { // TP = nn s interval set (counter reset & start) - INT32 n[4] = { 1, 10, 30, 60 }; - - uPD4990A.nTPMode = 0; - uPD4990A.nInterval = n[uPD4990A.nCommand & 3] * nOneSecond; - uPD4990A.nTPCount = 0; - break; - } - case 0x0C: // Interval reset - uPD4990A.nTPMode = 1; - uPD4990A.TP = 1; - break; - case 0x0D: // interval start - uPD4990A.nTPMode = 0; - break; - case 0x0E: // Interval stop - uPD4990A.nTPMode = 2; - break; - - case 0x0F: // Test mode set (not implemented) - break; - } + case 0x0F: // Test mode set (not implemented) + break; + } } - if (STB == 0 && CLK && uPD4990A.nPrevCLK == 0) { + if (STB == 0 && CLK && uPD4990A.nPrevCLK == 0) + { + // Shift a new bit into the register + if (uPD4990A.nMode == 1) + { + uPD4990A.nRegister[0] >>= 1; + if (uPD4990A.nRegister[1] & 1) + uPD4990A.nRegister[0] |= (1 << 31); + uPD4990A.nRegister[1] >>= 1; + uPD4990A.nRegister[1] &= 0x7FFF; + if (uPD4990A.nCommand & 1) + uPD4990A.nRegister[1] |= (1 << 15); + } - // Shift a new bit into the register - if (uPD4990A.nMode == 1) { - uPD4990A.nRegister[0] >>= 1; - if (uPD4990A.nRegister[1] & 1) { - uPD4990A.nRegister[0] |= (1 << 31); - } - uPD4990A.nRegister[1] >>= 1; - uPD4990A.nRegister[1] &= 0x7FFF; - if (uPD4990A.nCommand & 1) { - uPD4990A.nRegister[1] |= (1 << 15); - } - } - - // Shift a new bit into the command - uPD4990A.nCommand >>= 1; - uPD4990A.nCommand &= 7; - if (DATA) { - uPD4990A.nCommand |= 8; - } - } + // Shift a new bit into the command + uPD4990A.nCommand >>= 1; + uPD4990A.nCommand &= 7; + if (DATA) + uPD4990A.nCommand |= 8; + } uPD4990A.nPrevCLK = CLK; uPD4990A.nPrevSTB = STB; @@ -272,13 +263,10 @@ UINT8 uPD4990ARead(UINT32 nTicks) uPD4990AUpdate(nTicks); - if (uPD4990A.nMode == 0) { // 1Hz pulse appears at output + if (uPD4990A.nMode == 0) // 1Hz pulse appears at output OUT = (uPD4990A.nCount >= (nOneSecond >> 1)); - } else { // LSB of the shift register appears at output + else // LSB of the shift register appears at output OUT = uPD4990A.nRegister[0] & 1; - } - -// bprintf(PRINT_NORMAL, _T(" - uPD4990A read: OUT %i, TP %i.\n"), OUT, uPD4990A.TP); return (OUT << 1) | uPD4990A.TP; } diff --git a/src/burn/drv/neogeo/neogeo.cpp b/src/burn/drv/neogeo/neogeo.cpp index 1f3031f..70bf185 100644 --- a/src/burn/drv/neogeo/neogeo.cpp +++ b/src/burn/drv/neogeo/neogeo.cpp @@ -10,60 +10,58 @@ INT32 NeoLoadCode(INT32 nOffset, INT32 nNum, UINT8* pDest) { struct BurnRomInfo ri; - for (INT32 i = 0; i < nNum; i++) { - ri.nLen = 0; - BurnDrvGetRomInfo(&ri, nOffset + i); + for (INT32 i = 0; i < nNum; i++) + { + ri.nLen = 0; + BurnDrvGetRomInfo(&ri, nOffset + i); - if ((BurnDrvGetHardwareCode() & HARDWARE_SNK_P32) && (i == 0)) - { - if (BurnLoadRom(pDest + 0, nOffset + i + 0, 2)) return 1; - if (BurnLoadRom(pDest + 1, nOffset + i + 1, 2)) return 1; - - for (UINT32 j = 0; j < ri.nLen << 1; j+=4) - BurnByteswap(pDest + j + 1, 2); + if ((BurnDrvGetHardwareCode() & HARDWARE_SNK_P32) && (i == 0)) + { + if (BurnLoadRom(pDest + 0, nOffset + i + 0, 2)) return 1; + if (BurnLoadRom(pDest + 1, nOffset + i + 1, 2)) return 1; - i++; - pDest += ri.nLen << 1; - continue; - } + for (UINT32 j = 0; j < ri.nLen << 1; j+=4) + BurnByteswap(pDest + j + 1, 2); - if (BurnLoadRom(pDest, nOffset + i, 1)) { - return 1; - } + i++; + pDest += ri.nLen << 1; + continue; + } - if ((BurnDrvGetHardwareCode() & HARDWARE_SNK_SWAPP) && (i == 0)) { - for (UINT32 j = 0; j < (ri.nLen / 2); j++) { - INT32 k = pDest[j]; - pDest[j] = pDest[j + (ri.nLen / 2)]; - pDest[j + (ri.nLen / 2)] = k; - } - } + if (BurnLoadRom(pDest, nOffset + i, 1)) { + return 1; + } - pDest += ri.nLen; - } + if ((BurnDrvGetHardwareCode() & HARDWARE_SNK_SWAPP) && (i == 0)) { + for (UINT32 j = 0; j < (ri.nLen / 2); j++) { + INT32 k = pDest[j]; + pDest[j] = pDest[j + (ri.nLen / 2)]; + pDest[j + (ri.nLen / 2)] = k; + } + } + + pDest += ri.nLen; + } return 0; } static void NeoSVCAddressDecrypt(UINT8* src, UINT8* dst, INT32 start, INT32 end) { - for (INT32 i = start / 4; i < end / 4; i++) { + for (INT32 i = start / 4; i < end / 4; i++) ((UINT32*)dst)[i] = ((UINT32*)src)[(i & 0xFFE00000) | (0x0C8923 ^ BITSWAP24((i & 0x1FFFFF), 0x17, 0x16, 0x15, 0x04, 0x0B, 0x0E, 0x08, 0x0C, 0x10, 0x00, 0x0a, 0x13, 0x03, 0x06, 0x02, 0x07, 0x0D, 0x01, 0x11, 0x09, 0x14, 0x0f, 0x12, 0x05))]; - } } static void NeoKOFAddressDecrypt(UINT8* src, UINT8* dst, INT32 start, INT32 end) { - for (INT32 i = start; i < end; i += 0x100) { + for (INT32 i = start; i < end; i += 0x100) memcpy(dst + i, src + ((i & 0xFF800000) | BURN_ENDIAN_SWAP_INT16((BITSWAP16((i >> 8) & 0x7FFF, 0x0F, 0x0A, 0x0E, 0x0C, 0x0B, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x0D, 0x01, 0x00)) << 8)), 0x100); - } } static void NeoPCBDataDecrypt(UINT8* dst, INT32 size) { - for (INT32 i = 0; i < size / 4; i++) { + for (INT32 i = 0; i < size / 4; i++) ((UINT32*)dst)[i] = BURN_ENDIAN_SWAP_INT32(BITSWAP32(0xE9C42134 ^ BURN_ENDIAN_SWAP_INT32(((UINT32*)dst)[i]), 0x09, 0x0D, 0x13, 0x00, 0x17, 0x0F, 0x03, 0x05, 0x04, 0x0C, 0x11, 0x1E, 0x12, 0x15, 0x0B, 0x06, 0x1B, 0x0A, 0x1A, 0x1C, 0x14, 0x02, 0x0e, 0x1D, 0x18, 0x08, 0x01, 0x10, 0x19, 0x1F, 0x07, 0x16)); - } } // This function loads and pre-processes the sprite data @@ -78,8 +76,6 @@ INT32 NeoLoadSprites(INT32 nOffset, INT32 nNum, UINT8* pDest, UINT32 nSpriteSize UINT8* pBuf1 = NULL; UINT8* pBuf2 = NULL; -// double dProgress = 1.0 / ((double)((nSpriteSize > 0x04000000) ? 0x05000000 : nSpriteSize) / 0x400000 * 1.5); - BurnDrvGetRomInfo(&ri, nOffset); nRomSize = ri.nLen; @@ -92,66 +88,66 @@ INT32 NeoLoadSprites(INT32 nOffset, INT32 nNum, UINT8* pDest, UINT32 nSpriteSize } pBuf1 = (UINT8*)BurnMalloc(nRomSize * 2); - if (pBuf1 == NULL) { + if (pBuf1 == NULL) return 1; - } - - if ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_DEDICATED_PCB) { -// dProgress *= 0.75; + if ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_DEDICATED_PCB) + { pBuf2 = (UINT8*)BurnMalloc(nRomSize * 2); - if (pBuf2 == NULL) { + if (pBuf2 == NULL) return 1; - } } - for (INT32 i = 0; i < (nNum >> 1); i++) { + for (INT32 i = 0; i < (nNum >> 1); i++) + { if ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_DEDICATED_PCB) { - if (nRomSize == 0x02000000) { - + if (nRomSize == 0x02000000) + { // The ROM chips are 32-bit BurnLoadRom(pBuf2 + 0 * nRomSize, nOffset + (i << 1), 1); BurnLoadRom(pBuf2 + 1 * nRomSize, nOffset + 1 + (i << 1), 1); - } else { - - // The ROM chips are 16-bit and need to be interleaved - - BurnLoadRom(pBuf1, nOffset + (i << 1), 1); - for (UINT32 j = 0; j < nRomSize / 2; j++) { - ((UINT16*)pBuf2)[(j << 1) + 0] = ((UINT16*)pBuf1)[j]; - } - BurnLoadRom(pBuf1, nOffset + 1 + (i << 1), 1); - for (UINT32 j = 0; j < nRomSize / 2; j++) { - ((UINT16*)pBuf2)[(j << 1) + 1] = ((UINT16*)pBuf1)[j]; - } } - } else { + else + { + // The ROM chips are 16-bit and need to be interleaved + + BurnLoadRom(pBuf1, nOffset + (i << 1), 1); + for (UINT32 j = 0; j < nRomSize / 2; j++) + ((UINT16*)pBuf2)[(j << 1) + 0] = ((UINT16*)pBuf1)[j]; + BurnLoadRom(pBuf1, nOffset + 1 + (i << 1), 1); + for (UINT32 j = 0; j < nRomSize / 2; j++) + ((UINT16*)pBuf2)[(j << 1) + 1] = ((UINT16*)pBuf1)[j]; + } + } + else + { BurnLoadRom(pBuf1 + 0, nOffset + (i << 1), 2); BurnLoadRom(pBuf1 + 1, nOffset + 1 + (i << 1), 2); } -// BurnUpdateProgress(0.0, _T("Decrypting graphics...")/*, BST_DECRYPT_GRA*/ , 0); BurnUpdateProgress(1.0 / ((double)(nSpriteSize/0x800000) * 8.0 / (nRomSize / 0x400000) / 3.0), _T("Decrypting graphics..."), 0); - if ((i * nRomSize * 2) < 0x04000000) { - for (UINT32 j = 0; j < nRomSize * 2; j += 0x400000) { - if ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_DEDICATED_PCB) { -// BurnUpdateProgress(dProgress / 2.0, NULL/*, 0*/, 0); + if ((i * nRomSize * 2) < 0x04000000) + { + for (UINT32 j = 0; j < nRomSize * 2; j += 0x400000) + { + if ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_DEDICATED_PCB) + { (BurnDrvGetHardwareCode() & HARDWARE_SNK_KOF2K3) ? NeoKOFAddressDecrypt(pBuf2, pBuf1, j, j + 0x400000) : NeoSVCAddressDecrypt(pBuf2, pBuf1, j, j + 0x400000); NeoPCBDataDecrypt(pBuf1 + j, 0x400000); } -// BurnUpdateProgress(dProgress, NULL/*, 0*/, 0); NeoCMCDecrypt(nNeoProtectionXor, pDest, pBuf1 + j, i * (nRomSize * 2) + j, 0x400000, nSpriteSize); } - } else { + } + else + { // The kof2k3 PCB has 96MB of graphics ROM, however the last 16MB are unused, and the protection/decryption hardware does not see them - for (UINT32 j = 0; j < nRomSize; j += 0x400000) { -// BurnUpdateProgress(dProgress / 2.0, NULL/*, 0*/, 0); + for (UINT32 j = 0; j < nRomSize; j += 0x400000) + { NeoKOFAddressDecrypt(pBuf2, pBuf1, j, j + 0x400000); NeoPCBDataDecrypt(pBuf1 + j, 0x400000); -// BurnUpdateProgress(dProgress, NULL, /*0,*/ 0); NeoCMCDecrypt(nNeoProtectionXor, pDest + 0x4000000, pBuf1 + j, j, 0x400000, 0x1000000); } } @@ -231,88 +227,53 @@ INT32 NeoLoadSprites(INT32 nOffset, INT32 nNum, UINT8* pDest, UINT32 nSpriteSize void NeoDecodeSprites(UINT8* pDest, INT32 nSize) { -// double dProgress = 0.0; - -// if (nSize > 0x04000000) { -// nSize = 0x04000000; -// } - -/* if ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_DEDICATED_PCB) { - dProgress = 1.0 / 32.0; - } else if (BurnDrvGetHardwareCode() & (HARDWARE_SNK_CMC42 | HARDWARE_SNK_CMC50)) { - dProgress = 1.0 / 24.0; - } else { - dProgress = 1.0 / 8.0; - }*/ - for (INT32 i = 0; i < 8; i++) { UINT8* pStart = pDest + i * (nSize >> 3); UINT8* pEnd = pStart + (nSize >> 3); -// BurnUpdateProgress(dProgress, i ? NULL : _T("Preprocessing graphics...")/*, BST_PROCESS_GRA*/, 0); - INT32 nStep = 8; - if (BurnDrvGetHardwareCode() & (HARDWARE_SNK_CMC42 | HARDWARE_SNK_CMC50)) { + if (BurnDrvGetHardwareCode() & (HARDWARE_SNK_CMC42 | HARDWARE_SNK_CMC50)) nStep *= 4; - } BurnUpdateProgress(1.0 / nStep, i ? NULL : _T("Preprocessing graphics..."), 0); // Pre-process the sprite graphics - for (UINT8* pTile = pStart; pTile < pEnd; pTile += 128) { - UINT32 data[32]; + for (UINT8* pTile = pStart; pTile < pEnd; pTile += 128) + { + UINT32 data[32]; - for (INT32 y = 0; y < 16; y++) { - UINT32 n = 0; - for (INT32 x = 0; x < 8; x++) { - UINT32 m = ((pTile[67 + (y << 2)] >> x) & 1) << 3; - m |= ((pTile[65 + (y << 2)] >> x) & 1) << 2; - m |= ((pTile[66 + (y << 2)] >> x) & 1) << 1; - m |= ((pTile[64 + (y << 2)] >> x) & 1) << 0; + for (INT32 y = 0; y < 16; y++) + { + UINT32 n = 0; + for (INT32 x = 0; x < 8; x++) + { + UINT32 m = ((pTile[67 + (y << 2)] >> x) & 1) << 3; + m |= ((pTile[65 + (y << 2)] >> x) & 1) << 2; + m |= ((pTile[66 + (y << 2)] >> x) & 1) << 1; + m |= ((pTile[64 + (y << 2)] >> x) & 1) << 0; - n |= m << (x << 2); - } - data[(y << 1) + 0] = n; + n |= m << (x << 2); + } + data[(y << 1) + 0] = n; - n = 0; - for (INT32 x = 0; x < 8; x++) { - UINT32 m = ((pTile[3 + (y << 2)] >> x) & 1) << 3; - m |= ((pTile[1 + (y << 2)] >> x) & 1) << 2; - m |= ((pTile[2 + (y << 2)] >> x) & 1) << 1; - m |= ((pTile[0 + (y << 2)] >> x) & 1) << 0; + n = 0; + for (INT32 x = 0; x < 8; x++) + { + UINT32 m = ((pTile[3 + (y << 2)] >> x) & 1) << 3; + m |= ((pTile[1 + (y << 2)] >> x) & 1) << 2; + m |= ((pTile[2 + (y << 2)] >> x) & 1) << 1; + m |= ((pTile[0 + (y << 2)] >> x) & 1) << 0; - n |= m << (x << 2); - } - data[(y << 1) + 1] = n; - } - for (INT32 n = 0; n < 32; n++) { - ((UINT32*)pTile)[n] = data[n]; - } - } + n |= m << (x << 2); + } + data[(y << 1) + 1] = n; + } + for (INT32 n = 0; n < 32; n++) + ((UINT32*)pTile)[n] = data[n]; + } } } -/* -void NeoDecodeText(UINT8* pDest, INT32 nSize) -{ - // Pre-process the text layer graphics - for (UINT8* pTile = pDest; pTile < (pDest + nSize); pTile += 32) { - UINT8 data[32]; - for (INT32 n = 0; n < 8; n++) { - data[0 + n * 4] = pTile[16 + n]; - data[1 + n * 4] = pTile[24 + n]; - data[2 + n * 4] = pTile[ 0 + n]; - data[3 + n * 4] = pTile[ 8 + n]; - } - - for (INT32 n = 0; n < 32; n++) { - pTile[n] = data[n] << 4; - pTile[n] |= data[n] >> 4; - } - } -} -*/ - // ---------------------------------------------------------------------------- // Graphics decoding for Neo CD #ifdef WANT_NEOGEOCD @@ -364,65 +325,65 @@ INT32 NeoLoadADPCM(INT32 nOffset, INT32 nNum, UINT8* pDest) BurnDrvGetRomInfo(&ri, nOffset); - for (INT32 i = 0; i < nNum; i++) { + for (INT32 i = 0; i < nNum; i++) BurnLoadRom(pDest + ri.nLen * i, nOffset + i, 1); - } - return 0; } // This function fills the screen with the first palette entry -void NeoClearScreen() +void NeoClearScreen(void) { - UINT32 nColour = NeoPalette[0x0FFF]; + UINT32 nColour = NeoPalette[0x0FFF]; - if (nColour) { - switch (nBurnBpp) { - case 4: { - UINT32* pClear = (UINT32*)pBurnDraw; - for (INT32 i = 0; i < nNeoScreenWidth * 224 / 8; i++) { - *pClear++ = nColour; - *pClear++ = nColour; - *pClear++ = nColour; - *pClear++ = nColour; - *pClear++ = nColour; - *pClear++ = nColour; - *pClear++ = nColour; - *pClear++ = nColour; - } - break; - } + if (nColour) + { + switch (nBurnBpp) + { + case 4: { + UINT32* pClear = (UINT32*)pBurnDraw; + for (INT32 i = 0; i < nNeoScreenWidth * 224 / 8; i++) { + *pClear++ = nColour; + *pClear++ = nColour; + *pClear++ = nColour; + *pClear++ = nColour; + *pClear++ = nColour; + *pClear++ = nColour; + *pClear++ = nColour; + *pClear++ = nColour; + } + break; + } - case 3: { - UINT8* pClear = pBurnDraw; - UINT8 r = nColour; - UINT8 g = (nColour >> 8) & 0xFF; - UINT8 b = (nColour >> 16) & 0xFF; - for (INT32 i = 0; i < nNeoScreenWidth * 224; i++) { - *pClear++ = r; - *pClear++ = g; - *pClear++ = b; - } - break; - } + case 3: { + UINT8* pClear = pBurnDraw; + UINT8 r = nColour; + UINT8 g = (nColour >> 8) & 0xFF; + UINT8 b = (nColour >> 16) & 0xFF; + for (INT32 i = 0; i < nNeoScreenWidth * 224; i++) { + *pClear++ = r; + *pClear++ = g; + *pClear++ = b; + } + break; + } - case 2: { - UINT32* pClear = (UINT32*)pBurnDraw; - nColour |= nColour << 16; - for (INT32 i = 0; i < nNeoScreenWidth * 224 / 16; i++) { - *pClear++ = nColour; - *pClear++ = nColour; - *pClear++ = nColour; - *pClear++ = nColour; - *pClear++ = nColour; - *pClear++ = nColour; - *pClear++ = nColour; - *pClear++ = nColour; - } - break; - } - } - } else { - memset(pBurnDraw, 0, nNeoScreenWidth * 224 * nBurnBpp); - } + case 2: { + UINT32* pClear = (UINT32*)pBurnDraw; + nColour |= nColour << 16; + for (INT32 i = 0; i < nNeoScreenWidth * 224 / 16; i++) { + *pClear++ = nColour; + *pClear++ = nColour; + *pClear++ = nColour; + *pClear++ = nColour; + *pClear++ = nColour; + *pClear++ = nColour; + *pClear++ = nColour; + *pClear++ = nColour; + } + break; + } + } + } + else + memset(pBurnDraw, 0, nNeoScreenWidth * 224 * nBurnBpp); } diff --git a/src/burn/load.cpp b/src/burn/load.cpp index be3b5f9..07a6a90 100644 --- a/src/burn/load.cpp +++ b/src/burn/load.cpp @@ -36,7 +36,6 @@ INT32 BurnLoadRom(UINT8 *Dest, INT32 i, INT32 nGap) // Load in the file nRet=BurnExtLoadRom(Load,&nLoadLen,i); - if (bDoIpsPatch) IpsApplyPatches(Load, RomName); if (nRet!=0) { if (Load) { free(Load); Load = NULL; } return 1; } if (nLoadLen<0) nLoadLen=0; @@ -61,7 +60,6 @@ INT32 BurnLoadRom(UINT8 *Dest, INT32 i, INT32 nGap) { // If no XOR, and gap of 1, just copy straight in nRet=BurnExtLoadRom(Dest,NULL,i); - if (bDoIpsPatch) IpsApplyPatches(Dest, RomName); if (nRet!=0) return 1; } diff --git a/src/burn/snd/ay8910.c b/src/burn/snd/ay8910.c index e6ebce7..909f966 100644 --- a/src/burn/snd/ay8910.c +++ b/src/burn/snd/ay8910.c @@ -73,11 +73,8 @@ struct AY8910 #define AY_PORTA (14) #define AY_PORTB (15) - static struct AY8910 AYPSG[MAX_8910]; /* array of PSG's */ - - static void _AYWriteReg(INT32 n, INT32 r, INT32 v) { struct AY8910 *PSG = &AYPSG[n]; @@ -228,26 +225,14 @@ static void _AYWriteReg(INT32 n, INT32 r, INT32 v) { if (PSG->PortAwrite) (*PSG->PortAwrite)(0, PSG->Regs[AY_PORTA]); -// else -// logerror("PC %04x: warning - write %02x to 8910 #%d Port A\n",activecpu_get_pc(),PSG->Regs[AY_PORTA],n); } -// else -// { -// logerror("warning: write to 8910 #%d Port A set as input - ignored\n",n); -// } break; case AY_PORTB: if (PSG->Regs[AY_ENABLE] & 0x80) { if (PSG->PortBwrite) (*PSG->PortBwrite)(0, PSG->Regs[AY_PORTB]); -// else -// logerror("PC %04x: warning - write %02x to 8910 #%d Port B\n",activecpu_get_pc(),PSG->Regs[AY_PORTB],n); } -// else -// { -// logerror("warning: write to 8910 #%d Port B set as input - ignored\n",n); -// } break; } } @@ -256,51 +241,43 @@ static void _AYWriteReg(INT32 n, INT32 r, INT32 v) /* write a register on AY8910 chip number 'n' */ static void AYWriteReg(INT32 chip, INT32 r, INT32 v) { - if (r > 15) return; - if (r < 14) - { - struct AY8910 *PSG = &AYPSG[chip]; + if (r > 15) return; + if (r < 14) + { + struct AY8910 *PSG = &AYPSG[chip]; - if (r == AY_ESHAPE || PSG->Regs[r] != v) - { -// /* update the output buffer before changing the register */ -// stream_update(PSG->Channel,0); - AYStreamUpdate(); - } - } + if (r == AY_ESHAPE || PSG->Regs[r] != v) + { + // /* update the output buffer before changing the register */ + // stream_update(PSG->Channel,0); + AYStreamUpdate(); + } + } - _AYWriteReg(chip,r,v); + _AYWriteReg(chip,r,v); } - - static UINT8 AYReadReg(INT32 n, INT32 r) { - struct AY8910 *PSG = &AYPSG[n]; + struct AY8910 *PSG = &AYPSG[n]; - if (r > 15) return 0; + if (r > 15) return 0; - switch (r) - { - case AY_PORTA: -// if ((PSG->Regs[AY_ENABLE] & 0x40) != 0) -// logerror("warning: read from 8910 #%d Port A set as output\n",n); - /* - even if the port is set as output, we still need to return the external - data. Some games, like kidniki, need this to work. - */ - if (PSG->PortAread) PSG->Regs[AY_PORTA] = (*PSG->PortAread)(0); -// else logerror("PC %04x: warning - read 8910 #%d Port A\n",activecpu_get_pc(),n); - break; - case AY_PORTB: -// if ((PSG->Regs[AY_ENABLE] & 0x80) != 0) -// logerror("warning: read from 8910 #%d Port B set as output\n",n); - if (PSG->PortBread) PSG->Regs[AY_PORTB] = (*PSG->PortBread)(0); -// else logerror("PC %04x: warning - read 8910 #%d Port B\n",activecpu_get_pc(),n); - break; - } - return PSG->Regs[r]; + switch (r) + { + case AY_PORTA: + /* + even if the port is set as output, we still need to return the external + data. Some games, like kidniki, need this to work. + */ + if (PSG->PortAread) PSG->Regs[AY_PORTA] = (*PSG->PortAread)(0); + break; + case AY_PORTB: + if (PSG->PortBread) PSG->Regs[AY_PORTB] = (*PSG->PortBread)(0); + break; + } + return PSG->Regs[r]; } void AY8910Write(INT32 chip, INT32 a, INT32 data) diff --git a/src/burn/snd/fm.c b/src/burn/snd/fm.c index 37832ac..0a81709 100644 --- a/src/burn/snd/fm.c +++ b/src/burn/snd/fm.c @@ -106,13 +106,8 @@ #include #include -#ifndef __RAINE__ #include "driver.h" /* use M.A.M.E. */ #include "state.h" -#else -#include "deftypes.h" /* use RAINE */ -#include "support.h" /* use RAINE */ -#endif #include "ay8910.h" #include "fm.h" @@ -724,16 +719,6 @@ static INT32 out_delta[4]; /* channel output NONE,LEFT,RIGHT or CENTER for YM260 static UINT32 LFO_AM; /* runtime LFO calculations helper */ static INT32 LFO_PM; /* runtime LFO calculations helper */ -/* log output level */ -#define LOG_ERR 3 /* ERROR */ -#define LOG_WAR 2 /* WARNING */ -#define LOG_INF 1 /* INFORMATION */ -#define LOG_LEVEL LOG_INF - -#ifndef __RAINE__ -#define LOG(n,x) if( (n)>=LOG_LEVEL ) logerror x -#endif - /* limitter */ #define Limit(val, max,min) { \ if ( val > max ) val = max; \ @@ -1638,20 +1623,12 @@ static void init_timetables( FM_ST *ST , const UINT8 *dttable ) int i,d; double rate; -#if 0 - logerror("FM.C: samplerate=%8i chip clock=%8i freqbase=%f \n", - ST->rate, ST->clock, ST->freqbase ); -#endif - /* DeTune table */ for (d = 0;d <= 3;d++){ for (i = 0;i <= 31;i++){ rate = ((double)dttable[d*32 + i]) * SIN_LEN * ST->freqbase * (1<dt_tab[d][i] = (INT32) rate; ST->dt_tab[d+4][i] = -ST->dt_tab[d][i]; -#if 0 - logerror("FM.C: DT [%2i %2i] = %8x \n", d, i, ST->dt_tab[d][i] ); -#endif } } @@ -1713,16 +1690,7 @@ static int init_tables(void) tl_tab[ x*2+0 + i*2*TL_RES_LEN ] = tl_tab[ x*2+0 ]>>i; tl_tab[ x*2+1 + i*2*TL_RES_LEN ] = -tl_tab[ x*2+0 + i*2*TL_RES_LEN ]; } - #if 0 - logerror("tl %04i", x); - for (i=0; i<13; i++) - logerror(", [%02i] %4x", i*2, tl_tab[ x*2 /*+1*/ + i*2*TL_RES_LEN ]); - logerror("\n"); - } - #endif } - /*logerror("FM.C: TL_TAB_LEN = %i elements (%i bytes)\n",TL_TAB_LEN, (int)sizeof(tl_tab));*/ - for (i=0; i>1; sin_tab[ i ] = n*2 + (m>=0.0? 0: 1 ); - /*logerror("FM.C: sin [%4i]= %4i (tl_tab value=%5i)\n", i, sin_tab[i],tl_tab[sin_tab[i]]);*/ } - /*logerror("FM.C: ENV_QUIET= %08x\n",ENV_QUIET );*/ - - /* build LFO PM modulation table */ for(i = 0; i < 8; i++) /* 8 PM depths */ { @@ -1779,13 +1743,6 @@ static int init_tables(void) lfo_pm_table[(fnum*32*8) + (i*32) + step +16] = -value; lfo_pm_table[(fnum*32*8) + (i*32) +(step^7)+24] = -value; } -#if 0 - logerror("LFO depth=%1x FNUM=%04x (<<4=%4x): ", i, fnum, fnum<<4); - for (step=0; step<16; step++) /* dump only positive part of waveforms */ - logerror("%02x ", lfo_pm_table[(fnum*32*8) + (i*32) + step] ); - logerror("\n"); -#endif - } } @@ -1894,11 +1851,6 @@ static void OPNSetPres(FM_OPN *OPN , int pres , int TimerPres, int SSGpres) /* frequency base */ OPN->ST.freqbase = (OPN->ST.rate) ? ((double)OPN->ST.clock / OPN->ST.rate) / pres : 0; -#if 0 - OPN->ST.rate = (double)OPN->ST.clock / pres; - OPN->ST.freqbase = 1.0; -#endif - OPN->eg_timer_add = (1<ST.freqbase; OPN->eg_timer_overflow = ( 3 ) * (1< increment counter table */ + /* freq table for octave 7 */ + /* OPN phase increment counter = 20bit */ for(i = 0; i < 4096; i++) - { - /* freq table for octave 7 */ - /* OPN phase increment counter = 20bit */ OPN->fn_table[i] = (UINT32)( (double)i * 32 * OPN->ST.freqbase * (1<<(FREQ_SH-10)) ); /* -10 because chip works with 10.10 fixed point, while we use 16.16 */ -#if 0 - logerror("FM.C: fn_table[%4i] = %08x (dec=%8i)\n", - i, OPN->fn_table[i]>>6,OPN->fn_table[i]>>6 ); -#endif - } /* maximal frequency is required for Phase overflow calculation, register size is 17 bits (Nemesis) */ OPN->fn_max = (UINT32)( (double)0x20000 * OPN->ST.freqbase * (1<<(FREQ_SH-10)) ); /* LFO freq. table */ + /* Amplitude modulation: 64 output levels (triangle waveform); 1 level lasts for one of "lfo_samples_per_step" samples */ + /* Phase modulation: one entry from lfo_pm_output lasts for one of 4 * "lfo_samples_per_step" samples */ for(i = 0; i < 8; i++) - { - /* Amplitude modulation: 64 output levels (triangle waveform); 1 level lasts for one of "lfo_samples_per_step" samples */ - /* Phase modulation: one entry from lfo_pm_output lasts for one of 4 * "lfo_samples_per_step" samples */ OPN->lfo_freq[i] = (1.0 / lfo_samples_per_step[i]) * (1<ST.freqbase; -#if 0 - logerror("FM.C: lfo_freq[%i] = %08x (dec=%8i)\n", - i, OPN->lfo_freq[i],OPN->lfo_freq[i] ); -#endif - } } @@ -2309,12 +2249,6 @@ INLINE void ADPCMA_calc_chan( YM2610 *F2610, ADPCM_CH *ch ) F2610->adpcm_arrivedEndAddress |= ch->flagMask; return; } -#if 0 - if ( ch->now_addr > (pcmsizeA<<1) ) { - LOG(LOG_WAR,("YM2610: Attempting to play past adpcm rom size!\n" )); - return; - } -#endif if ( ch->now_addr&1 ) data = ch->now_data & 0x0f; else @@ -2371,19 +2305,12 @@ static void FM_ADPCMAWrite(YM2610 *F2610,int r,int v) adpcm[c].adpcm_out = 0; adpcm[c].flag = 1; - if(F2610->pcmbuf==NULL){ /* Check ROM Mapped */ - logerror("YM2608-YM2610: ADPCM-A rom not mapped\n"); + if(F2610->pcmbuf==NULL) /* Check ROM Mapped */ adpcm[c].flag = 0; - } else{ - if(adpcm[c].end >= F2610->pcm_size){ /* Check End in Range */ - logerror("YM2610: ADPCM-A end out of range: $%08x\n",adpcm[c].end); - /*adpcm[c].end = F2610->pcm_size-1;*/ /* JB: DO NOT uncomment this, otherwise you will break the comparison in the ADPCM_CALC_CHA() */ - } + else + { if(adpcm[c].start >= F2610->pcm_size) /* Check Start in Range */ - { - logerror("YM2608-YM2610: ADPCM-A start out of range: $%08x\n",adpcm[c].start); adpcm[c].flag = 0; - } } } } @@ -2513,15 +2440,6 @@ void YM2610UpdateOne(int num, INT16 **buffer, int length) pcmsizeA = F2610->pcm_size; } -#ifdef YM2610B_WARNING -#define FM_KEY_IS(SLOT) ((SLOT)->key) -#define FM_MSG_YM2610B "YM2610-%d.CH%d is playing,Check whether the type of the chip is YM2610B\n" - /* Check YM2610B warning message */ - if( FM_KEY_IS(&F2610->CH[0].SLOT[3]) ) - LOG(LOG_WAR,(FM_MSG_YM2610B,num,0)); - if( FM_KEY_IS(&F2610->CH[3].SLOT[3]) ) - LOG(LOG_WAR,(FM_MSG_YM2610B,num,3)); -#endif /* refresh PG and EG */ refresh_fc_eg_chan( OPN, cch[0] ); @@ -3051,40 +2969,39 @@ int YM2610Write(int n, int a, UINT8 v) YM2610UpdateReq(n); switch(addr) - { - case 0x10: /* control 1 */ - case 0x11: /* control 2 */ - case 0x12: /* start address L */ - case 0x13: /* start address H */ - case 0x14: /* stop address L */ - case 0x15: /* stop address H */ + { + case 0x10: /* control 1 */ + case 0x11: /* control 2 */ + case 0x12: /* start address L */ + case 0x13: /* start address H */ + case 0x14: /* stop address L */ + case 0x15: /* stop address H */ - case 0x19: /* delta-n L */ - case 0x1a: /* delta-n H */ - case 0x1b: /* volume */ - { - YM_DELTAT_ADPCM_Write(&F2610->deltaT,addr-0x10,v); - } - break; + case 0x19: /* delta-n L */ + case 0x1a: /* delta-n H */ + case 0x1b: /* volume */ + { + YM_DELTAT_ADPCM_Write(&F2610->deltaT,addr-0x10,v); + } + break; - case 0x1c: /* FLAG CONTROL : Extend Status Clear/Mask */ - { - UINT8 statusmask = ~v; - /* set arrived flag mask */ - for(ch=0;ch<6;ch++) - F2610->adpcm[ch].flagMask = statusmask&(1<adpcm[ch].flagMask = statusmask&(1<deltaT.status_change_EOS_bit = statusmask & 0x80; /* status flag: set bit7 on End Of Sample */ + F2610->deltaT.status_change_EOS_bit = statusmask & 0x80; /* status flag: set bit7 on End Of Sample */ - /* clear arrived flag */ - F2610->adpcm_arrivedEndAddress &= statusmask; - } - break; + /* clear arrived flag */ + F2610->adpcm_arrivedEndAddress &= statusmask; + } + break; - default: - logerror("YM2610: write to unknown deltat register %02x val=%02x\n",addr,v); - break; - } + default: + break; + } break; case 0x20: /* Mode Register */ diff --git a/src/burn/snd/fm.h b/src/burn/snd/fm.h index d9677c1..49e20b2 100644 --- a/src/burn/snd/fm.h +++ b/src/burn/snd/fm.h @@ -12,8 +12,6 @@ #define BUILD_YM2610B (HAS_YM2610B) /* build YM2610B(OPNB?)emulator */ #define BUILD_YM2612 (HAS_YM2612 || HAS_YM3438) /* build YM2612(OPN2) emulator */ -//#define BUILD_YM2151 (HAS_YM2151) /* build YM2151(OPM) emulator */ - /* select bit size of output : 8 or 16 */ #define FM_SAMPLE_BITS 16 @@ -76,32 +74,12 @@ void BurnYM2610UpdateRequest(void); void BurnYM2612UpdateRequest(void); #define YM2612UpdateReq(chip) BurnYM2612UpdateRequest() #endif -#if 0 //BUILD_YM2151 - /* in 2151intf.c */ - #define YM2151UpdateReq(chip) YM2151UpdateRequest(chip); -#endif /* compiler dependence */ -#if 0 -#ifndef OSD_CPU_H -#define OSD_CPU_H -typedef unsigned char UINT8; /* unsigned 8bit */ -typedef unsigned short UINT16; /* unsigned 16bit */ -typedef unsigned int UINT32; /* unsigned 32bit */ -typedef signed char INT8; /* signed 8bit */ -typedef signed short INT16; /* signed 16bit */ -typedef signed int INT32; /* signed 32bit */ -#endif -#endif - #ifndef INLINE #define INLINE static __inline__ #endif - - - - #if (FM_SAMPLE_BITS==16) typedef INT16 FMSAMPLE; #endif @@ -217,25 +195,4 @@ unsigned char YM2612Read(int n,int a); int YM2612TimerOver(int n, int c ); #endif /* BUILD_YM2612 */ -#if 0 //BUILD_YM2151 -/* -------------------- YM2151(OPM) Interface -------------------- */ -int OPMInit(int num, int baseclock, int rate, - FM_TIMERHANDLER TimerHandler,FM_IRQHANDLER IRQHandler); -void OPMShutdown(void); -void OPMResetChip(int num); - -void OPMUpdateOne(int num, INT16 **buffer, int length ); -/* ---- set callback hander when port CT0/1 write ----- */ -/* CT.bit0 = CT0 , CT.bit1 = CT1 */ -/* -typedef void (*write8_handler)(int offset,int data); -*/ -void OPMSetPortHander(int n,write8_handler PortWrite); -/* JB 981119 - so it will match MAME's memory write functions scheme*/ - -int YM2151Write(int n,int a,unsigned char v); -unsigned char YM2151Read(int n,int a); -int YM2151TimerOver(int n,int c); -#endif /* BUILD_YM2151 */ - #endif /* _H_FM_FM_ */ diff --git a/src/burn/snd/ymdeltat.c b/src/burn/snd/ymdeltat.c index b3c8a0a..f5cebc6 100644 --- a/src/burn/snd/ymdeltat.c +++ b/src/burn/snd/ymdeltat.c @@ -88,18 +88,6 @@ const INT32 ym_deltat_decode_tableB2[16] = { 57, 57, 57, 57, 77, 102, 128, 153 }; -#if 0 -void YM_DELTAT_BRDY_callback(YM_DELTAT *DELTAT) -{ - logerror("BRDY_callback reached (flag set) !\n"); - - /* set BRDY bit in status register */ - if(DELTAT->status_set_handler) - if(DELTAT->status_change_BRDY_bit) - (DELTAT->status_set_handler)(DELTAT->status_change_which_chip, DELTAT->status_change_BRDY_bit); -} -#endif - UINT8 YM_DELTAT_ADPCM_Read(YM_DELTAT *DELTAT) { UINT8 v = 0; @@ -120,8 +108,6 @@ UINT8 YM_DELTAT_ADPCM_Read(YM_DELTAT *DELTAT) { v = DELTAT->memory[DELTAT->now_addr>>1]; - /*logerror("YM Delta-T memory read $%08x, v=$%02x\n", DELTAT->now_addr >> 1, v);*/ - DELTAT->now_addr+=2; /* two nibbles at a time */ /* reset BRDY bit in status register, which means we are reading the memory now */ @@ -227,20 +213,15 @@ value: START, REC, MEMDAT, REPEAT, SPOFF, x,x,RESET meaning: /* if yes, then let's check if ADPCM memory is mapped and big enough */ if(DELTAT->memory == 0) { - logerror("YM Delta-T ADPCM rom not mapped\n"); DELTAT->portstate = 0x00; DELTAT->PCM_BSY = 0; } else { if( DELTAT->end >= DELTAT->memory_size ) /* Check End in Range */ - { - logerror("YM Delta-T ADPCM end out of range: $%08x\n", DELTAT->end); DELTAT->end = DELTAT->memory_size - 1; - } if( DELTAT->start >= DELTAT->memory_size ) /* Check Start in Range */ { - logerror("YM Delta-T ADPCM start out of range: $%08x\n", DELTAT->start); DELTAT->portstate = 0x00; DELTAT->PCM_BSY = 0; } @@ -298,13 +279,11 @@ value: START, REC, MEMDAT, REPEAT, SPOFF, x,x,RESET meaning: case 0x02: /* Start Address L */ case 0x03: /* Start Address H */ DELTAT->start = (DELTAT->reg[0x3]*0x0100 | DELTAT->reg[0x2]) << (DELTAT->portshift - DELTAT->DRAMportshift); - /*logerror("DELTAT start: 02=%2x 03=%2x addr=%8x\n",DELTAT->reg[0x2], DELTAT->reg[0x3],DELTAT->start );*/ break; case 0x04: /* Stop Address L */ case 0x05: /* Stop Address H */ DELTAT->end = (DELTAT->reg[0x5]*0x0100 | DELTAT->reg[0x4]) << (DELTAT->portshift - DELTAT->DRAMportshift); DELTAT->end += (1 << (DELTAT->portshift-DELTAT->DRAMportshift) ) - 1; - /*logerror("DELTAT end : 04=%2x 05=%2x addr=%8x\n",DELTAT->reg[0x4], DELTAT->reg[0x5],DELTAT->end );*/ break; case 0x06: /* Prescale L (ADPCM and Record frq) */ case 0x07: /* Prescale H */ @@ -333,8 +312,6 @@ value: START, REC, MEMDAT, REPEAT, SPOFF, x,x,RESET meaning: DELTAT->memread = 0; } - /*logerror("YM Delta-T memory write $%08x, v=$%02x\n", DELTAT->now_addr >> 1, v);*/ - if ( DELTAT->now_addr != (DELTAT->end<<1) ) { DELTAT->memory[DELTAT->now_addr>>1] = v; @@ -383,7 +360,6 @@ value: START, REC, MEMDAT, REPEAT, SPOFF, x,x,RESET meaning: case 0x0a: /* DELTA-N H */ DELTAT->delta = (DELTAT->reg[0xa]*0x0100 | DELTAT->reg[0x9]); DELTAT->step = (UINT32)( (double)(DELTAT->delta /* *(1<<(YM_DELTAT_SHIFT-16)) */ ) * (DELTAT->freqbase) ); - /*logerror("DELTAT deltan:09=%2x 0a=%2x\n",DELTAT->reg[0x9], DELTAT->reg[0xa]);*/ break; case 0x0b: /* Output level control (volume, linear) */ { @@ -395,17 +371,13 @@ value: START, REC, MEMDAT, REPEAT, SPOFF, x,x,RESET meaning: * v * ((1<<23)>>8) >> 15; * v * (1<<15) >> 15; */ - /*logerror("DELTAT vol = %2x\n",v&0xff);*/ if( oldvol != 0 ) - { DELTAT->adpcml = (int)((double)DELTAT->adpcml / (double)oldvol * (double)DELTAT->volume); - } } break; case 0x0c: /* Limit Address L */ case 0x0d: /* Limit Address H */ DELTAT->limit = (DELTAT->reg[0xd]*0x0100 | DELTAT->reg[0xc]) << (DELTAT->portshift - DELTAT->DRAMportshift); - /*logerror("DELTAT limit: 0c=%2x 0d=%2x addr=%8x\n",DELTAT->reg[0xc], DELTAT->reg[0xd],DELTAT->limit );*/ break; } } diff --git a/src/burn/snd/ymdeltat.h b/src/burn/snd/ymdeltat.h index e8cfe76..38ced64 100644 --- a/src/burn/snd/ymdeltat.h +++ b/src/burn/snd/ymdeltat.h @@ -6,20 +6,14 @@ #define YM_DELTAT_EMULATION_MODE_NORMAL 0 #define YM_DELTAT_EMULATION_MODE_YM2610 1 - typedef void (*STATUS_CHANGE_HANDLER)(UINT8 which_chip, UINT8 status_bits); - /* DELTA-T (adpcm type B) struct */ typedef struct deltat_adpcm_state { /* AT: rearranged and tigntened structure */ UINT8 *memory; INT32 *output_pointer;/* pointer of output pointers */ INT32 *pan; /* pan : &output_pointer[pan] */ double freqbase; -#if 0 - double write_time; /* Y8950: 10 cycles of main clock; YM2608: 20 cycles of main clock */ - double read_time; /* Y8950: 8 cycles of main clock; YM2608: 18 cycles of main clock */ -#endif UINT32 memory_size; int output_range; UINT32 now_addr; /* current address */ diff --git a/src/burner/burner.h b/src/burner/burner.h index 5613f68..3aa4257 100644 --- a/src/burner/burner.h +++ b/src/burner/burner.h @@ -15,7 +15,6 @@ #define MAKE_STRING_2(s) #s #define MAKE_STRING(s) MAKE_STRING_2(s) -#include "title.h" #include "burn.h" #include "burner_libretro.h" @@ -35,20 +34,6 @@ extern INT32 nFireButtons; extern bool bStreetFighterLayout; extern bool bLeftAltkeyMapped; -INT32 GameInpInit(); -INT32 GameInpExit(); -TCHAR* InputCodeDesc(INT32 c); -TCHAR* InpToDesc(struct GameInp* pgi); -TCHAR* InpMacroToDesc(struct GameInp* pgi); -INT32 GameInpBlank(INT32 bDipSwitch); -INT32 GameInputAutoIni(INT32 nPlayer, TCHAR* lpszFile, bool bOverWrite); -INT32 ConfigGameLoadHardwareDefaults(); -INT32 GameInpDefault(); -INT32 GameInpWrite(FILE* h); -INT32 GameInpRead(TCHAR* szVal, bool bOverWrite); -INT32 GameInpMacroRead(TCHAR* szVal, bool bOverWrite); -INT32 GameInpCustomRead(TCHAR* szVal, bool bOverWrite); - // inp_interface.cpp extern INT32 nAutoFireRate; @@ -65,12 +50,6 @@ extern UINT8 macroSystemUNDOState; // cong.cpp extern const INT32 nConfigMinVersion; // Minimum version of application for which input files are valid -extern bool bSaveInputs; -INT32 ConfigGameLoad(bool bOverWrite); // char* lpszName = NULL -INT32 ConfigGameSave(bool bSave); - -// conc.cpp -INT32 ConfigCheatLoad(); // gamc.cpp INT32 GamcMisc(struct GameInp* pgi, char* szi, INT32 nPlayer); @@ -85,17 +64,8 @@ INT32 QuoteRead(TCHAR** ppszQuote, TCHAR** ppszEnd, TCHAR* pszSrc); // Read TCHAR* LabelCheck(TCHAR* s, TCHAR* pszLabel); TCHAR* ExtractFilename(TCHAR* fullname); -TCHAR* DriverToName(UINT32 nDrv); -UINT32 NameToDriver(TCHAR* szName); - -extern INT32 bDoGamma; -extern INT32 bHardwareGammaOnly; -extern double nGamma; INT32 SetBurnHighCol(INT32 nDepth); -char* DecorateGameName(UINT32 nBurnDrv); -TCHAR* DecorateGenreInfo(); -void ComputeGammaLUT(); // state.cpp INT32 BurnStateLoadEmbed(FILE* fp, INT32 nOffset, INT32 bAll, INT32 (*pLoadGame)()); diff --git a/src/burner/libretro/burner_libretro.h b/src/burner/libretro/burner_libretro.h index ddfc06f..6392041 100644 --- a/src/burner/libretro/burner_libretro.h +++ b/src/burner/libretro/burner_libretro.h @@ -4,13 +4,8 @@ #include "gameinp.h" #include "input/inp_keys.h" -extern int bDrvOkay; -extern int bRunPause; -extern bool bAlwaysProcessKeyboardInput; - #ifdef _MSC_VER #define snprintf _snprintf -#define ANSIToTCHAR(str, foo, bar) (str) #endif extern void InpDIPSWResetDIPs (void); diff --git a/src/burner/libretro/ctr/burn_memory.cpp b/src/burner/libretro/ctr/burn_memory.cpp index b6127ae..bb935df 100644 --- a/src/burner/libretro/ctr/burn_memory.cpp +++ b/src/burner/libretro/ctr/burn_memory.cpp @@ -125,8 +125,6 @@ UINT8 *BurnMalloc(INT32 size) } } - bprintf (0, _T("BurnMalloc called too many times!\n")); - return NULL; // Freak out! } @@ -160,10 +158,8 @@ void BurnExitMemoryManager(void) void* tmp; for (INT32 i = 0; i < MAX_MEM_PTR; i++) { - if (memptr[i] != NULL) { -#if defined FBA_DEBUG - bprintf(PRINT_ERROR, _T("BurnExitMemoryManager had to free mem pointer %i\n"), i); -#endif + if (memptr[i] != NULL) + { if(!memsize[i]) free(memptr[i]); else diff --git a/src/burner/libretro/libretro.cpp b/src/burner/libretro/libretro.cpp index b706b3b..70f1903 100755 --- a/src/burner/libretro/libretro.cpp +++ b/src/burner/libretro/libretro.cpp @@ -14,26 +14,15 @@ #define RETROPAD_CLASSIC RETRO_DEVICE_JOYPAD #define RETROPAD_MODERN RETRO_DEVICE_SUBCLASS(RETRO_DEVICE_JOYPAD, 1) -#if defined(CPS1_ONLY) -#define CORE_OPTION_NAME "fbalpha2012_cps1" -#elif defined(CPS2_ONLY) -#define CORE_OPTION_NAME "fbalpha2012_cps2" -#elif defined(CPS3_ONLY) -#define CORE_OPTION_NAME "fbalpha2012_cps3" -#elif defined(NEOGEO_ONLY) #define CORE_OPTION_NAME "fbalpha2012_neogeo" -#else -#define CORE_OPTION_NAME "fbalpha2012" -#endif #if defined(_XBOX) || defined(_WIN32) - char slash = '\\'; +char slash = '\\'; #else - char slash = '/'; +char slash = '/'; #endif static void log_dummy(enum retro_log_level level, const char *fmt, ...) { } -static const char *print_label(unsigned i); static void set_controller_infos(); static void set_environment(); @@ -50,33 +39,6 @@ static retro_input_poll_t poll_cb; static retro_input_state_t input_cb; static retro_audio_sample_batch_t audio_batch_cb; -#define BPRINTF_BUFFER_SIZE 512 -char bprintf_buf[BPRINTF_BUFFER_SIZE]; -static INT32 __cdecl libretro_bprintf(INT32 nStatus, TCHAR* szFormat, ...) -{ - va_list vp; - va_start(vp, szFormat); - int rc = vsprintf(bprintf_buf, szFormat, vp); - va_end(vp); - - if (rc >= 0) - { - retro_log_level retro_log = RETRO_LOG_DEBUG; - if (nStatus == PRINT_UI) - retro_log = RETRO_LOG_INFO; - else if (nStatus == PRINT_IMPORTANT) - retro_log = RETRO_LOG_WARN; - else if (nStatus == PRINT_ERROR) - retro_log = RETRO_LOG_ERROR; - - log_cb(retro_log, bprintf_buf); - } - - return rc; -} - -INT32 (__cdecl *bprintf) (INT32 nStatus, TCHAR* szFormat, ...) = libretro_bprintf; - // FBARL --- extern UINT8 NeoSystem; @@ -90,15 +52,12 @@ enum neo_geo_modes { /* MVS */ NEO_GEO_MODE_MVS = 0, - /* AES */ NEO_GEO_MODE_AES = 1, - /* UNIBIOS */ NEO_GEO_MODE_UNIBIOS = 2, - /* DIPSWITCH */ - NEO_GEO_MODE_DIPSWITCH = 3, + NEO_GEO_MODE_DIPSWITCH = 3 }; #define MAX_KEYBINDS 0x5000 @@ -107,17 +66,17 @@ static uint8_t axibinds[5][8][3]; bool bAnalogRightMappingDone[5][2][2]; #define RETRO_DEVICE_ID_JOYPAD_EMPTY 255 -static UINT8 diag_input_hold_frame_delay = 0; +static UINT8 diag_input_hold_frame_delay = 0; static int diag_input_combo_start_frame = 0; -static bool diag_combo_activated = false; -static bool one_diag_input_pressed = false; -static bool all_diag_input_pressed = true; +static bool diag_combo_activated = false; +static bool one_diag_input_pressed = false; +static bool all_diag_input_pressed = true; static UINT8 *diag_input; -static UINT8 diag_input_start[] = {RETRO_DEVICE_ID_JOYPAD_START, RETRO_DEVICE_ID_JOYPAD_EMPTY }; -static UINT8 diag_input_start_a_b[] = {RETRO_DEVICE_ID_JOYPAD_START, RETRO_DEVICE_ID_JOYPAD_A, RETRO_DEVICE_ID_JOYPAD_B, RETRO_DEVICE_ID_JOYPAD_EMPTY }; -static UINT8 diag_input_start_l_r[] = {RETRO_DEVICE_ID_JOYPAD_START, RETRO_DEVICE_ID_JOYPAD_L, RETRO_DEVICE_ID_JOYPAD_R, RETRO_DEVICE_ID_JOYPAD_EMPTY }; -static UINT8 diag_input_select[] = {RETRO_DEVICE_ID_JOYPAD_SELECT, RETRO_DEVICE_ID_JOYPAD_EMPTY }; +static UINT8 diag_input_start[] = {RETRO_DEVICE_ID_JOYPAD_START, RETRO_DEVICE_ID_JOYPAD_EMPTY }; +static UINT8 diag_input_start_a_b[] = {RETRO_DEVICE_ID_JOYPAD_START, RETRO_DEVICE_ID_JOYPAD_A, RETRO_DEVICE_ID_JOYPAD_B, RETRO_DEVICE_ID_JOYPAD_EMPTY }; +static UINT8 diag_input_start_l_r[] = {RETRO_DEVICE_ID_JOYPAD_START, RETRO_DEVICE_ID_JOYPAD_L, RETRO_DEVICE_ID_JOYPAD_R, RETRO_DEVICE_ID_JOYPAD_EMPTY }; +static UINT8 diag_input_select[] = {RETRO_DEVICE_ID_JOYPAD_SELECT, RETRO_DEVICE_ID_JOYPAD_EMPTY }; static UINT8 diag_input_select_a_b[] = {RETRO_DEVICE_ID_JOYPAD_SELECT, RETRO_DEVICE_ID_JOYPAD_A, RETRO_DEVICE_ID_JOYPAD_B, RETRO_DEVICE_ID_JOYPAD_EMPTY }; static UINT8 diag_input_select_l_r[] = {RETRO_DEVICE_ID_JOYPAD_SELECT, RETRO_DEVICE_ID_JOYPAD_L, RETRO_DEVICE_ID_JOYPAD_R, RETRO_DEVICE_ID_JOYPAD_EMPTY }; @@ -170,7 +129,7 @@ bool bVolumeIsFireButton = false; // libretro globals void retro_set_video_refresh(retro_video_refresh_t cb) { video_cb = cb; } -void retro_set_audio_sample(retro_audio_sample_t) {} +void retro_set_audio_sample(retro_audio_sample_t) { } void retro_set_audio_sample_batch(retro_audio_sample_batch_t cb) { audio_batch_cb = cb; } void retro_set_input_poll(retro_input_poll_t cb) { poll_cb = cb; } void retro_set_input_state(retro_input_state_t cb) { input_cb = cb; } @@ -502,8 +461,7 @@ static RomBiosInfo *available_mvs_bios = NULL; static RomBiosInfo *available_aes_bios = NULL; static RomBiosInfo *available_uni_bios = NULL; -#if !(defined(CPS1_ONLY) || defined(CPS2_ONLY) || defined(CPS3_ONLY) || defined(GEKKO)) -void set_neo_system_bios() +static void set_neo_system_bios(void) { if (g_opt_neo_geo_mode == NEO_GEO_MODE_DIPSWITCH) { @@ -568,7 +526,6 @@ void set_neo_system_bios() } } } -#endif /* #if !(defined(CPS1_ONLY) || defined(CPS2_ONLY) || defined(CPS3_ONLY)) */ char g_rom_dir[1024]; char g_save_dir[1024]; @@ -591,27 +548,6 @@ void retro_get_system_info(struct retro_system_info *info) info->valid_extensions = "iso|zip|7z"; } -///// -static INT32 InputTick(); -static void InputMake(); -static bool init_input(); -static void check_variables(bool first_run); - -//void wav_exit() { } - -// FBA stubs -unsigned ArcadeJoystick; - -int bDrvOkay; -int bRunPause; -bool bAlwaysProcessKeyboardInput; - -bool bDoIpsPatch; -void IpsApplyPatches(UINT8 *, char *) {} - -TCHAR szAppSamplesPath[MAX_PATH]; -TCHAR szAppBurnVer[16]; - #ifdef WANT_NEOGEOCD CDEmuStatusValue CDEmuStatus; @@ -1175,25 +1111,11 @@ static void ForceFrameStep(void) nBurnLayer = 0xff; pBurnSoundOut = g_audio_buf; nBurnSoundRate = AUDIO_SAMPLERATE; - //nBurnSoundLen = AUDIO_SEGMENT_LENGTH; nCurrentFrame++; BurnDrvFrame(); } -// Non-idiomatic (OutString should be to the left to match strcpy()) -// Seems broken to not check nOutSize. -char* TCHARToANSI(const TCHAR* pszInString, char* pszOutString, int /*nOutSize*/) -{ - if (pszOutString) - { - strcpy(pszOutString, pszInString); - return pszOutString; - } - - return (char*)pszInString; -} - int QuoteRead(char **, char **, char*) { return 1; @@ -1216,10 +1138,6 @@ static int find_rom_by_name(char *name, const ZipEntry *list, unsigned elems) return i; } -#if 0 - log_cb(RETRO_LOG_ERROR, "Not found: %s (name = %s)\n", list[i].szName, name); -#endif - return -1; } @@ -1229,14 +1147,8 @@ static int find_rom_by_crc(uint32_t crc, const ZipEntry *list, unsigned elems) for (i = 0; i < elems; i++) { if (list[i].nCrc == crc) - { return i; - } } - -#if 0 - log_cb(RETRO_LOG_ERROR, "Not found: 0x%X (crc: 0x%X)\n", list[i].nCrc, crc); -#endif return -1; } @@ -1246,15 +1158,9 @@ static RomBiosInfo* find_bios_info(char *szName, uint32_t crc, struct RomBiosInf for (int i = 0; bioses[i].filename != NULL; i++) { if (strcmp(bioses[i].filename, szName) == 0 || bioses[i].crc == crc) - { return &bioses[i]; - } } -#if 0 - log_cb(RETRO_LOG_ERROR, "Bios not found: %s (crc: 0x%08x)\n", szName, crc); -#endif - return NULL; } @@ -1403,9 +1309,6 @@ static bool open_archive() if (bad_crc) log_cb(RETRO_LOG_WARN, "[FBA] Using ROM at index %d with wrong CRC and name %s\n", i, rom_name); -#if 0 - log_cb(RETRO_LOG_INFO, "[FBA] Searching ROM at index %d with CRC 0x%08x and name %s => Found\n", i, g_find_list[i].ri.nCrc, rom_name); -#endif // Search for the best bios available by category if (is_neogeo_game) { @@ -1712,7 +1615,330 @@ static void check_variables(bool first_run) init_frameskip(); } -void retro_run() +// Set the input descriptors by combininng the two lists of 'Normal' and 'Macros' inputs +static void set_input_descriptors(void) +{ + struct retro_input_descriptor *input_descriptors = (struct retro_input_descriptor*)calloc(normal_input_descriptors.size() + 1, + sizeof(struct retro_input_descriptor)); + + unsigned input_descriptor_idx = 0; + + for (unsigned i = 0; i < normal_input_descriptors.size(); i++, input_descriptor_idx++) + input_descriptors[input_descriptor_idx] = normal_input_descriptors[i]; + + input_descriptors[input_descriptor_idx].description = NULL; + + environ_cb(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, input_descriptors); + free(input_descriptors); +} + +static inline INT32 CinpState(INT32 nCode) +{ + INT32 s, position; + INT32 id = keybinds[nCode][0]; + UINT32 port = keybinds[nCode][1]; + INT32 idx = keybinds[nCode][2]; + if(idx == 0) + return input_cb(port, RETRO_DEVICE_JOYPAD, 0, id); + + s = input_cb(port, RETRO_DEVICE_ANALOG, idx, id); + position = keybinds[nCode][3]; + if(s < -1000 && position == JOY_NEG) + return 1; + if(s > 1000 && position == JOY_POS) + return 1; + return 0; +} + +static inline int CinpJoyAxis(int i, int axis) +{ + INT32 idx = axibinds[i][axis][0]; + if(idx != 0xff) + { + INT32 id = axibinds[i][axis][1]; + return input_cb(i, RETRO_DEVICE_ANALOG, idx, id); + } + INT32 idpos = axibinds[i][axis][1]; + INT32 idneg = axibinds[i][axis][2]; + INT32 spos = input_cb(i, RETRO_DEVICE_JOYPAD, 0, idpos); + INT32 sneg = input_cb(i, RETRO_DEVICE_JOYPAD, 0, idneg); + return (spos - sneg) * 32768; +} + +static inline int CinpMouseAxis(int i, int axis) { return 0; } + +static INT32 InputTick(void) +{ + struct GameInp *pgi; + UINT32 i; + + for (i = 0, pgi = GameInp; i < nGameInpCount; i++, pgi++) + { + INT32 nAdd = 0; + if ((pgi->nInput & GIT_GROUP_SLIDER) == 0) // not a slider + continue; + + if (pgi->nInput == GIT_KEYSLIDER) + { + // Get states of the two keys + if (CinpState(pgi->Input.Slider.SliderAxis.nSlider[0])) + nAdd -= 0x100; + if (CinpState(pgi->Input.Slider.SliderAxis.nSlider[1])) + nAdd += 0x100; + } + + if (pgi->nInput == GIT_JOYSLIDER) + { + // Get state of the axis + nAdd = CinpJoyAxis(pgi->Input.Slider.JoyAxis.nJoy, pgi->Input.Slider.JoyAxis.nAxis); + nAdd /= 0x100; + } + + // nAdd is now -0x100 to +0x100 + + // Change to slider speed + nAdd *= pgi->Input.Slider.nSliderSpeed; + nAdd /= 0x100; + + if (pgi->Input.Slider.nSliderCenter) // Attact to center + { + INT32 v = pgi->Input.Slider.nSliderValue - 0x8000; + v *= (pgi->Input.Slider.nSliderCenter - 1); + v /= pgi->Input.Slider.nSliderCenter; + v += 0x8000; + pgi->Input.Slider.nSliderValue = v; + } + + pgi->Input.Slider.nSliderValue += nAdd; + // Limit slider + if (pgi->Input.Slider.nSliderValue < 0x0100) + pgi->Input.Slider.nSliderValue = 0x0100; + if (pgi->Input.Slider.nSliderValue > 0xFF00) + pgi->Input.Slider.nSliderValue = 0xFF00; + } + return 0; +} + +static bool poll_diag_input(void) +{ + if (pgi_diag && diag_input) + { + one_diag_input_pressed = false; + all_diag_input_pressed = true; + + for (int combo_idx = 0; diag_input[combo_idx] != RETRO_DEVICE_ID_JOYPAD_EMPTY; combo_idx++) + { + if (input_cb(0, RETRO_DEVICE_JOYPAD, 0, diag_input[combo_idx]) == false) + all_diag_input_pressed = false; + else + one_diag_input_pressed = true; + } + + if (diag_combo_activated == false && all_diag_input_pressed) + { + if (diag_input_combo_start_frame == 0) // => User starts holding all the combo inputs + diag_input_combo_start_frame = nCurrentFrame; + else if ((nCurrentFrame - diag_input_combo_start_frame) > diag_input_hold_frame_delay) // Delays of the hold reached + diag_combo_activated = true; + } + else if (one_diag_input_pressed == false) + { + diag_combo_activated = false; + diag_input_combo_start_frame = 0; + } + + if (diag_combo_activated) + { + // Cancel each input of the combo at the emulator side to not interfere when the diagnostic menu will be opened and the combo not yet released + struct GameInp* pgi = GameInp; + for (int combo_idx = 0; diag_input[combo_idx] != RETRO_DEVICE_ID_JOYPAD_EMPTY; combo_idx++) + { + for (int i = 0; i < nGameInpCount; i++, pgi++) + { + if (pgi->nInput == GIT_SWITCH) + { + pgi->Input.nVal = 0; + *(pgi->Input.pVal) = pgi->Input.nVal; + } + } + } + + // Activate the diagnostic key + pgi_diag->Input.nVal = 1; + *(pgi_diag->Input.pVal) = pgi_diag->Input.nVal; + + // Return true to stop polling game inputs while diagnostic combo inputs is pressed + return true; + } + } + + // Return false to poll game inputs + return false; +} + +static void InputMake(void) +{ + UINT32 i; + struct GameInp* pgi; + + poll_cb(); + + if (poll_diag_input()) + return; + + InputTick(); + + for (i = 0, pgi = GameInp; i < nGameInpCount; i++, pgi++) + { + if (pgi->Input.pVal == NULL) + continue; + + switch (pgi->nInput) + { + case 0: // Undefined + pgi->Input.nVal = 0; + break; + case GIT_CONSTANT: // Constant value + pgi->Input.nVal = pgi->Input.Constant.nConst; + *(pgi->Input.pVal) = pgi->Input.nVal; + break; + case GIT_SWITCH: // Digital input + { + INT32 s = CinpState(pgi->Input.Switch.nCode); + + if (pgi->nType & BIT_GROUP_ANALOG) + { + // Set analog controls to full + if (s) + pgi->Input.nVal = 0xFFFF; + else + pgi->Input.nVal = 0x0001; +#ifdef MSB_FIRST + *((int *)pgi->Input.pShortVal) = pgi->Input.nVal; +#else + *(pgi->Input.pShortVal) = pgi->Input.nVal; +#endif + } + else + { + // Binary controls + if (s) + pgi->Input.nVal = 1; + else + pgi->Input.nVal = 0; + *(pgi->Input.pVal) = pgi->Input.nVal; + } + + break; + } + case GIT_KEYSLIDER: // Keyboard slider + case GIT_JOYSLIDER: // Joystick slider + { + INT32 nSlider = pgi->Input.Slider.nSliderValue; + if (pgi->nType == BIT_ANALOG_REL) + { + nSlider -= 0x8000; + nSlider >>= 4; + } + + pgi->Input.nVal = (UINT16)nSlider; +#ifdef MSB_FIRST + *((int *)pgi->Input.pShortVal) = pgi->Input.nVal; +#else + *(pgi->Input.pShortVal) = pgi->Input.nVal; +#endif + break; + } + case GIT_MOUSEAXIS: // Mouse axis + pgi->Input.nVal = (UINT16)(CinpMouseAxis(pgi->Input.MouseAxis.nMouse, pgi->Input.MouseAxis.nAxis) * nAnalogSpeed); +#ifdef MSB_FIRST + *((int *)pgi->Input.pShortVal) = pgi->Input.nVal; +#else + *(pgi->Input.pShortVal) = pgi->Input.nVal; +#endif + break; + case GIT_JOYAXIS_FULL: // Joystick axis + { + INT32 nJoy = CinpJoyAxis(pgi->Input.JoyAxis.nJoy, pgi->Input.JoyAxis.nAxis); + + if (pgi->nType == BIT_ANALOG_REL) { + nJoy *= nAnalogSpeed; + nJoy >>= 13; + + // Clip axis to 8 bits + if (nJoy < -32768) + nJoy = -32768; + if (nJoy > 32767) + nJoy = 32767; + } + else + { + nJoy >>= 1; + nJoy += 0x8000; + + // Clip axis to 16 bits + if (nJoy < 0x0001) + nJoy = 0x0001; + if (nJoy > 0xFFFF) + nJoy = 0xFFFF; + } + + pgi->Input.nVal = (UINT16)nJoy; +#ifdef MSB_FIRST + *((int *)pgi->Input.pShortVal) = pgi->Input.nVal; +#else + *(pgi->Input.pShortVal) = pgi->Input.nVal; +#endif + break; + } + case GIT_JOYAXIS_NEG: // Joystick axis Lo + { + INT32 nJoy = CinpJoyAxis(pgi->Input.JoyAxis.nJoy, pgi->Input.JoyAxis.nAxis); + if (nJoy < 32767) + { + nJoy = -nJoy; + + if (nJoy < 0x0000) + nJoy = 0x0000; + if (nJoy > 0xFFFF) + nJoy = 0xFFFF; + pgi->Input.nVal = (UINT16)nJoy; + } + else + pgi->Input.nVal = 0; +#ifdef MSB_FIRST + *((int *)pgi->Input.pShortVal) = pgi->Input.nVal; +#else + *(pgi->Input.pShortVal) = pgi->Input.nVal; +#endif + } + break; + case GIT_JOYAXIS_POS: // Joystick axis Hi + { + INT32 nJoy = CinpJoyAxis(pgi->Input.JoyAxis.nJoy, pgi->Input.JoyAxis.nAxis); + if (nJoy > 32767) + { + if (nJoy < 0x0000) + nJoy = 0x0000; + if (nJoy > 0xFFFF) + nJoy = 0xFFFF; + pgi->Input.nVal = (UINT16)nJoy; + } + else + pgi->Input.nVal = 0; +#ifdef MSB_FIRST + *((int *)pgi->Input.pShortVal) = pgi->Input.nVal; +#else + *(pgi->Input.pShortVal) = pgi->Input.nVal; +#endif + } + break; + } + } +} + + +void retro_run(void) { int width, height; BurnDrvGetVisibleSize(&width, &height); @@ -1874,12 +2100,7 @@ void retro_get_system_av_info(struct retro_system_av_info *info) BurnDrvGetAspect(&game_aspect_x, &game_aspect_y); if (game_aspect_x != 0 && game_aspect_y != 0 && !core_aspect_par) - { geom.aspect_ratio = (float)game_aspect_x / (float)game_aspect_y; - log_cb(RETRO_LOG_INFO, "retro_get_system_av_info: base_width: %d, base_height: %d, max_width: %d, max_height: %d, aspect_ratio: (%d/%d) = %f (core_aspect_par: %d)\n", geom.base_width, geom.base_height, geom.max_width, geom.max_height, game_aspect_x, game_aspect_y, geom.aspect_ratio, core_aspect_par); - } - else - log_cb(RETRO_LOG_INFO, "retro_get_system_av_info: base_width: %d, base_height: %d, max_width: %d, max_height: %d, aspect_ratio: %f\n", geom.base_width, geom.base_height, geom.max_width, geom.max_height, geom.aspect_ratio); #ifdef FBACORES_CPS struct retro_system_timing timing = { 59.629403, 59.629403 * AUDIO_SEGMENT_LENGTH }; @@ -1891,1085 +2112,42 @@ void retro_get_system_av_info(struct retro_system_av_info *info) info->timing = timing; } -int VidRecalcPal() +// 1 analog to 2 digital mapping +// Needs pgi, player, axis, 2 buttons retropad id and 2 descriptions +static INT32 GameInpAnalog2RetroInpDualKeys(struct GameInp* pgi, UINT32 nJoy, UINT8 nAxis, UINT32 nKeyPos, UINT32 nKeyNeg, char *sznpos, char *sznneg) { - return BurnRecalcPal(); -} + struct retro_input_descriptor input_descriptor; -static bool fba_init(unsigned driver, const char *game_zip_name) -{ - nBurnDrvActive = driver; + if(bButtonMapped) return 0; - if (!open_archive()) - { - log_cb(RETRO_LOG_ERROR, "[FBA] Cannot find driver.\n"); - return false; - } + pgi->nInput = GIT_JOYAXIS_FULL; + pgi->Input.JoyAxis.nAxis = nAxis; + pgi->Input.JoyAxis.nJoy = (UINT8)nJoy; + axibinds[nJoy][nAxis][0] = 0xff; + axibinds[nJoy][nAxis][1] = nKeyPos; + axibinds[nJoy][nAxis][2] = nKeyNeg; - nBurnBpp = 2; - nFMInterpolation = 3; - nInterpolation = 1; + input_descriptor.port = nJoy; + input_descriptor.device = RETRO_DEVICE_JOYPAD; + input_descriptor.index = 0; + input_descriptor.id = nKeyPos; + input_descriptor.description = sznpos; - init_input(); + normal_input_descriptors.push_back(input_descriptor); - InpDIPSWInit(); + input_descriptor.port = nJoy; + input_descriptor.device = RETRO_DEVICE_JOYPAD; + input_descriptor.index = 0; + input_descriptor.id = nKeyNeg; + input_descriptor.description = sznneg; - BurnDrvInit(); - - char input_fs[1024]; - snprintf(input_fs, sizeof(input_fs), "%s%c%s.fs", g_save_dir, slash, BurnDrvGetTextA(DRV_NAME)); - BurnStateLoad(input_fs, 0, NULL); - - int width, height; - BurnDrvGetVisibleSize(&width, &height); - nBurnPitch = width * sizeof(uint16_t); - - if (!(BurnDrvIsWorking())) - { - log_cb(RETRO_LOG_ERROR, "[FBA] Game %s is not marked as working\n", game_zip_name); - return false; - } - - log_cb(RETRO_LOG_INFO, "Game: %s\n", game_zip_name); - - VidRecalcPal(); - -#ifdef FRONTEND_SUPPORTS_RGB565 - enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_RGB565; - - if(environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt)) - log_cb(RETRO_LOG_INFO, "Frontend supports RGB565 - will use that instead of XRGB1555.\n"); -#endif - - return true; -} - -#if defined(FRONTEND_SUPPORTS_RGB565) -static unsigned int HighCol16(int r, int g, int b, int /* i */) -{ - return (((r << 8) & 0xf800) | ((g << 3) & 0x07e0) | ((b >> 3) & 0x001f)); -} -#else -static unsigned int HighCol15(int r, int g, int b, int /* i */) -{ - return (((r << 7) & 0x7c00) | ((g << 2) & 0x03e0) | ((b >> 3) & 0x001f)); -} -#endif - -static void extract_basename(char *buf, const char *path, size_t size) -{ - const char *base = strrchr(path, '/'); - if (!base) - base = strrchr(path, '\\'); - if (!base) - base = path; - - if (*base == '\\' || *base == '/') - base++; - - strncpy(buf, base, size - 1); - buf[size - 1] = '\0'; - - char *ext = strrchr(buf, '.'); - if (ext) - *ext = '\0'; -} - -static void extract_directory(char *buf, const char *path, size_t size) -{ - strncpy(buf, path, size - 1); - buf[size - 1] = '\0'; - - char *base = strrchr(buf, '/'); - if (!base) - base = strrchr(buf, '\\'); - - if (base) - *base = '\0'; - else - { - buf[0] = '.'; - buf[1] = '\0'; - } -} - -bool retro_load_game(const struct retro_game_info *info) -{ - char basename[128]; - - if (!info) - return false; - - extract_basename(basename, info->path, sizeof(basename)); - extract_directory(g_rom_dir, info->path, sizeof(g_rom_dir)); - - const char *dir = NULL; - // If save directory is defined use it, ... - if (environ_cb(RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY, &dir) && dir) - { - strncpy(g_save_dir, dir, sizeof(g_save_dir)); - log_cb(RETRO_LOG_INFO, "Setting save dir to %s\n", g_save_dir); - } - else - { - // ... otherwise use rom directory - strncpy(g_save_dir, g_rom_dir, sizeof(g_save_dir)); - log_cb(RETRO_LOG_ERROR, "Save dir not defined => use roms dir %s\n", g_save_dir); - } - - // If system directory is defined use it, ... - if (environ_cb(RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY, &dir) && dir) - { - strncpy(g_system_dir, dir, sizeof(g_system_dir)); - log_cb(RETRO_LOG_INFO, "Setting system dir to %s\n", g_system_dir); - } - else - { - // ... otherwise use rom directory - strncpy(g_system_dir, g_rom_dir, sizeof(g_system_dir)); - log_cb(RETRO_LOG_ERROR, "System dir not defined => use roms dir %s\n", g_system_dir); - } - - unsigned i = BurnDrvGetIndexByName(basename); - if (i < nBurnDrvCount) - { - INT32 width, height; - - const char * boardrom = BurnDrvGetTextA(DRV_BOARDROM); - is_neogeo_game = (boardrom && strcmp(boardrom, "neogeo") == 0); - - // Define nMaxPlayers early; - nMaxPlayers = BurnDrvGetMaxPlayers(); - set_controller_infos(); - - set_environment(); - check_variables(true); - - pBurnSoundOut = g_audio_buf; - nBurnSoundRate = AUDIO_SAMPLERATE; - nBurnSoundLen = AUDIO_SEGMENT_LENGTH; - - if (!fba_init(i, basename)) - goto error; - - driver_inited = true; - - BurnDrvGetFullSize(&width, &height); - - g_fba_frame = (uint16_t*)malloc(width * height * sizeof(uint16_t)); - - return true; - } - -error: - log_cb(RETRO_LOG_ERROR, "[FBA] Cannot load this game.\n"); - return false; -} - -bool retro_load_game_special(unsigned, const struct retro_game_info*, size_t) -{ - return false; -} - -void retro_unload_game(void) -{ -} - -unsigned retro_get_region(void) -{ - return RETRO_REGION_NTSC; -} - -void *retro_get_memory_data(unsigned) -{ + normal_input_descriptors.push_back(input_descriptor); + bButtonMapped = true; return 0; } -size_t retro_get_memory_size(unsigned) -{ - return 0; -} - -unsigned retro_api_version(void) -{ - return RETRO_API_VERSION; -} - -void retro_set_controller_port_device(unsigned port, unsigned device) -{ - if (port < nMaxPlayers && fba_devices[port] != device) - { - fba_devices[port] = device; - init_input(); - } -} - -static const char *print_label(unsigned i) -{ - switch(i) - { - case RETRO_DEVICE_ID_JOYPAD_B: - return "RetroPad B Button"; - case RETRO_DEVICE_ID_JOYPAD_Y: - return "RetroPad Y Button"; - case RETRO_DEVICE_ID_JOYPAD_SELECT: - return "RetroPad Select Button"; - case RETRO_DEVICE_ID_JOYPAD_START: - return "RetroPad Start Button"; - case RETRO_DEVICE_ID_JOYPAD_UP: - return "RetroPad D-Pad Up"; - case RETRO_DEVICE_ID_JOYPAD_DOWN: - return "RetroPad D-Pad Down"; - case RETRO_DEVICE_ID_JOYPAD_LEFT: - return "RetroPad D-Pad Left"; - case RETRO_DEVICE_ID_JOYPAD_RIGHT: - return "RetroPad D-Pad Right"; - case RETRO_DEVICE_ID_JOYPAD_A: - return "RetroPad A Button"; - case RETRO_DEVICE_ID_JOYPAD_X: - return "RetroPad X Button"; - case RETRO_DEVICE_ID_JOYPAD_L: - return "RetroPad L Button"; - case RETRO_DEVICE_ID_JOYPAD_R: - return "RetroPad R Button"; - case RETRO_DEVICE_ID_JOYPAD_L2: - return "RetroPad L2 Button"; - case RETRO_DEVICE_ID_JOYPAD_R2: - return "RetroPad R2 Button"; - case RETRO_DEVICE_ID_JOYPAD_L3: - return "RetroPad L3 Button"; - case RETRO_DEVICE_ID_JOYPAD_R3: - return "RetroPad R3 Button"; - case RETRO_DEVICE_ID_JOYPAD_EMPTY: - return "None"; - default: - return "No known label"; - } -} - -static bool init_input(void) -{ - switch_ncode = 0; - - normal_input_descriptors.clear(); - for (unsigned i = 0; i < MAX_KEYBINDS; i++) { - keybinds[i][0] = 0xff; - keybinds[i][2] = 0; - } - for (unsigned i = 0; i < 5; i++) { - for (unsigned j = 0; j < 8; j++) { - axibinds[i][j][0] = 0; - axibinds[i][j][1] = 0; - axibinds[i][j][2] = 0; - } - } - - GameInpInit(); - GameInpDefault(); - - // Update core option for diagnostic input - set_environment(); - // Read the user core option values - check_variables(false); - - // The list of normal and macro input_descriptors are filled, we can assign all the input_descriptors to retroarch - set_input_descriptors(); - - return 0; -} - -//#define DEBUG_INPUT -// - -static inline INT32 CinpState(INT32 nCode) -{ - INT32 id = keybinds[nCode][0]; - UINT32 port = keybinds[nCode][1]; - INT32 idx = keybinds[nCode][2]; - if(idx == 0) - { - return input_cb(port, RETRO_DEVICE_JOYPAD, 0, id); - } - else - { - INT32 s = input_cb(port, RETRO_DEVICE_ANALOG, idx, id); - INT32 position = keybinds[nCode][3]; - if(s < -1000 && position == JOY_NEG) - return 1; - if(s > 1000 && position == JOY_POS) - return 1; - } - return 0; -} - -static inline int CinpJoyAxis(int i, int axis) -{ - INT32 idx = axibinds[i][axis][0]; - if(idx != 0xff) - { - INT32 id = axibinds[i][axis][1]; - return input_cb(i, RETRO_DEVICE_ANALOG, idx, id); - } - else - { - INT32 idpos = axibinds[i][axis][1]; - INT32 idneg = axibinds[i][axis][2]; - INT32 spos = input_cb(i, RETRO_DEVICE_JOYPAD, 0, idpos); - INT32 sneg = input_cb(i, RETRO_DEVICE_JOYPAD, 0, idneg); - return (spos - sneg) * 32768; - } - return 0; -} - -static inline int CinpMouseAxis(int i, int axis) -{ - return 0; -} - -static bool poll_diag_input() -{ - if (pgi_diag && diag_input) - { - one_diag_input_pressed = false; - all_diag_input_pressed = true; - - for (int combo_idx = 0; diag_input[combo_idx] != RETRO_DEVICE_ID_JOYPAD_EMPTY; combo_idx++) - { - if (input_cb(0, RETRO_DEVICE_JOYPAD, 0, diag_input[combo_idx]) == false) - all_diag_input_pressed = false; - else - one_diag_input_pressed = true; - } - - if (diag_combo_activated == false && all_diag_input_pressed) - { - if (diag_input_combo_start_frame == 0) // => User starts holding all the combo inputs - diag_input_combo_start_frame = nCurrentFrame; - else if ((nCurrentFrame - diag_input_combo_start_frame) > diag_input_hold_frame_delay) // Delays of the hold reached - diag_combo_activated = true; - } - else if (one_diag_input_pressed == false) - { - diag_combo_activated = false; - diag_input_combo_start_frame = 0; - } - - if (diag_combo_activated) - { - // Cancel each input of the combo at the emulator side to not interfere when the diagnostic menu will be opened and the combo not yet released - struct GameInp* pgi = GameInp; - for (int combo_idx = 0; diag_input[combo_idx] != RETRO_DEVICE_ID_JOYPAD_EMPTY; combo_idx++) - { - for (int i = 0; i < nGameInpCount; i++, pgi++) - { - if (pgi->nInput == GIT_SWITCH) - { - pgi->Input.nVal = 0; - *(pgi->Input.pVal) = pgi->Input.nVal; - } - } - } - - // Activate the diagnostic key - pgi_diag->Input.nVal = 1; - *(pgi_diag->Input.pVal) = pgi_diag->Input.nVal; - - // Return true to stop polling game inputs while diagnostic combo inputs is pressed - return true; - } - } - - // Return false to poll game inputs - return false; -} - -static INT32 InputTick() -{ - struct GameInp *pgi; - UINT32 i; - - for (i = 0, pgi = GameInp; i < nGameInpCount; i++, pgi++) { - INT32 nAdd = 0; - if ((pgi->nInput & GIT_GROUP_SLIDER) == 0) { // not a slider - continue; - } - - if (pgi->nInput == GIT_KEYSLIDER) { - // Get states of the two keys - if (CinpState(pgi->Input.Slider.SliderAxis.nSlider[0])) { - nAdd -= 0x100; - } - if (CinpState(pgi->Input.Slider.SliderAxis.nSlider[1])) { - nAdd += 0x100; - } - } - - if (pgi->nInput == GIT_JOYSLIDER) { - // Get state of the axis - nAdd = CinpJoyAxis(pgi->Input.Slider.JoyAxis.nJoy, pgi->Input.Slider.JoyAxis.nAxis); - nAdd /= 0x100; - } - - // nAdd is now -0x100 to +0x100 - - // Change to slider speed - nAdd *= pgi->Input.Slider.nSliderSpeed; - nAdd /= 0x100; - - if (pgi->Input.Slider.nSliderCenter) { // Attact to center - INT32 v = pgi->Input.Slider.nSliderValue - 0x8000; - v *= (pgi->Input.Slider.nSliderCenter - 1); - v /= pgi->Input.Slider.nSliderCenter; - v += 0x8000; - pgi->Input.Slider.nSliderValue = v; - } - - pgi->Input.Slider.nSliderValue += nAdd; - // Limit slider - if (pgi->Input.Slider.nSliderValue < 0x0100) { - pgi->Input.Slider.nSliderValue = 0x0100; - } - if (pgi->Input.Slider.nSliderValue > 0xFF00) { - pgi->Input.Slider.nSliderValue = 0xFF00; - } - } - return 0; -} - -static void InputMake(void) -{ - poll_cb(); - - if (poll_diag_input()) - return; - - struct GameInp* pgi; - UINT32 i; - - InputTick(); - - for (i = 0, pgi = GameInp; i < nGameInpCount; i++, pgi++) { - if (pgi->Input.pVal == NULL) { - continue; - } - - switch (pgi->nInput) { - case 0: // Undefined - pgi->Input.nVal = 0; - break; - case GIT_CONSTANT: // Constant value - pgi->Input.nVal = pgi->Input.Constant.nConst; - *(pgi->Input.pVal) = pgi->Input.nVal; - break; - case GIT_SWITCH: { // Digital input - INT32 s = CinpState(pgi->Input.Switch.nCode); - - if (pgi->nType & BIT_GROUP_ANALOG) { - // Set analog controls to full - if (s) { - pgi->Input.nVal = 0xFFFF; - } else { - pgi->Input.nVal = 0x0001; - } -#ifdef MSB_FIRST - *((int *)pgi->Input.pShortVal) = pgi->Input.nVal; -#else - *(pgi->Input.pShortVal) = pgi->Input.nVal; -#endif - } else { - // Binary controls - if (s) { - pgi->Input.nVal = 1; - } else { - pgi->Input.nVal = 0; - } - *(pgi->Input.pVal) = pgi->Input.nVal; - } - - break; - } - case GIT_KEYSLIDER: // Keyboard slider - case GIT_JOYSLIDER: { // Joystick slider - INT32 nSlider = pgi->Input.Slider.nSliderValue; - if (pgi->nType == BIT_ANALOG_REL) { - nSlider -= 0x8000; - nSlider >>= 4; - } - - pgi->Input.nVal = (UINT16)nSlider; -#ifdef MSB_FIRST - *((int *)pgi->Input.pShortVal) = pgi->Input.nVal; -#else - *(pgi->Input.pShortVal) = pgi->Input.nVal; -#endif - break; - } - case GIT_MOUSEAXIS: // Mouse axis - pgi->Input.nVal = (UINT16)(CinpMouseAxis(pgi->Input.MouseAxis.nMouse, pgi->Input.MouseAxis.nAxis) * nAnalogSpeed); -#ifdef MSB_FIRST - *((int *)pgi->Input.pShortVal) = pgi->Input.nVal; -#else - *(pgi->Input.pShortVal) = pgi->Input.nVal; -#endif - break; - case GIT_JOYAXIS_FULL: { // Joystick axis - INT32 nJoy = CinpJoyAxis(pgi->Input.JoyAxis.nJoy, pgi->Input.JoyAxis.nAxis); - - if (pgi->nType == BIT_ANALOG_REL) { - nJoy *= nAnalogSpeed; - nJoy >>= 13; - - // Clip axis to 8 bits - if (nJoy < -32768) { - nJoy = -32768; - } - if (nJoy > 32767) { - nJoy = 32767; - } - } else { - nJoy >>= 1; - nJoy += 0x8000; - - // Clip axis to 16 bits - if (nJoy < 0x0001) { - nJoy = 0x0001; - } - if (nJoy > 0xFFFF) { - nJoy = 0xFFFF; - } - } - - pgi->Input.nVal = (UINT16)nJoy; -#ifdef MSB_FIRST - *((int *)pgi->Input.pShortVal) = pgi->Input.nVal; -#else - *(pgi->Input.pShortVal) = pgi->Input.nVal; -#endif - break; - } - case GIT_JOYAXIS_NEG: { // Joystick axis Lo - INT32 nJoy = CinpJoyAxis(pgi->Input.JoyAxis.nJoy, pgi->Input.JoyAxis.nAxis); - if (nJoy < 32767) { - nJoy = -nJoy; - - if (nJoy < 0x0000) { - nJoy = 0x0000; - } - if (nJoy > 0xFFFF) { - nJoy = 0xFFFF; - } - - pgi->Input.nVal = (UINT16)nJoy; - } else { - pgi->Input.nVal = 0; - } - -#ifdef MSB_FIRST - *((int *)pgi->Input.pShortVal) = pgi->Input.nVal; -#else - *(pgi->Input.pShortVal) = pgi->Input.nVal; -#endif - break; - } - case GIT_JOYAXIS_POS: { // Joystick axis Hi - INT32 nJoy = CinpJoyAxis(pgi->Input.JoyAxis.nJoy, pgi->Input.JoyAxis.nAxis); - if (nJoy > 32767) { - - if (nJoy < 0x0000) { - nJoy = 0x0000; - } - if (nJoy > 0xFFFF) { - nJoy = 0xFFFF; - } - - pgi->Input.nVal = (UINT16)nJoy; - } else { - pgi->Input.nVal = 0; - } - -#ifdef MSB_FIRST - *((int *)pgi->Input.pShortVal) = pgi->Input.nVal; -#else - *(pgi->Input.pShortVal) = pgi->Input.nVal; -#endif - break; - } - } - } -} - -static unsigned int BurnDrvGetIndexByName(const char* name) -{ - unsigned int i; - unsigned int ret = ~0U; - - for (i = 0; i < nBurnDrvCount; i++) - { - nBurnDrvActive = i; - if (!strcmp(BurnDrvGetText(DRV_NAME), name)) - { - ret = i; - break; - } - } - return ret; -} - -#ifdef ANDROID -#include - -size_t mbstowcs(wchar_t *pwcs, const char *s, size_t n) -{ - if (pwcs == NULL) - return strlen(s); - return mbsrtowcs(pwcs, &s, n, NULL); -} - -size_t wcstombs(char *s, const wchar_t *pwcs, size_t n) -{ - return wcsrtombs(s, &pwcs, n, NULL); -} - -#endif - -// Set the input descriptors by combininng the two lists of 'Normal' and 'Macros' inputs -static void set_input_descriptors(void) -{ - struct retro_input_descriptor *input_descriptors = (struct retro_input_descriptor*)calloc(normal_input_descriptors.size() + 1, - sizeof(struct retro_input_descriptor)); - - unsigned input_descriptor_idx = 0; - - for (unsigned i = 0; i < normal_input_descriptors.size(); i++, input_descriptor_idx++) - { - input_descriptors[input_descriptor_idx] = normal_input_descriptors[i]; - } - - input_descriptors[input_descriptor_idx].description = NULL; - - environ_cb(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, input_descriptors); - free(input_descriptors); -} - -INT32 GameInpBlank(INT32 bDipSwitch) -{ - UINT32 i = 0; - struct GameInp* pgi = NULL; - - // Reset all inputs to undefined (even dip switches, if bDipSwitch==1) - if (GameInp == NULL) - return 1; - - // Get the targets in the library for the Input Values - for (i = 0, pgi = GameInp; i < nGameInpCount; i++, pgi++) { - struct BurnInputInfo bii; - memset(&bii, 0, sizeof(bii)); - BurnDrvGetInputInfo(&bii, i); - if (bDipSwitch == 0 && (bii.nType & BIT_GROUP_CONSTANT)) { // Don't blank the dip switches - continue; - } - - memset(pgi, 0, sizeof(*pgi)); // Clear input - - pgi->nType = bii.nType; // store input type - pgi->Input.pVal = bii.pVal; // store input pointer to value - - if (bii.nType & BIT_GROUP_CONSTANT) { // Further initialisation for constants/DIPs - pgi->nInput = GIT_CONSTANT; - pgi->Input.Constant.nConst = *bii.pVal; - } - } - - for (i = 0; i < nMacroCount; i++, pgi++) { - pgi->Macro.nMode = 0; - if (pgi->nInput == GIT_MACRO_CUSTOM) { - pgi->nInput = 0; - } - } - - return 0; -} - -static void GameInpInitMacros() -{ - struct GameInp* pgi; - struct BurnInputInfo bii; - - INT32 nPunchx3[4] = {0, 0, 0, 0}; - INT32 nPunchInputs[4][3]; - INT32 nKickx3[4] = {0, 0, 0, 0}; - INT32 nKickInputs[4][3]; - - INT32 nNeogeoButtons[4][4]; - INT32 nPgmButtons[10][16]; - - bStreetFighterLayout = false; - bVolumeIsFireButton = false; - nMacroCount = 0; - - nFireButtons = 0; - - memset(&nNeogeoButtons, 0, sizeof(nNeogeoButtons)); - memset(&nPgmButtons, 0, sizeof(nPgmButtons)); - - for (UINT32 i = 0; i < nGameInpCount; i++) { - bii.szName = NULL; - BurnDrvGetInputInfo(&bii, i); - if (bii.szName == NULL) { - bii.szName = ""; - } - - bool bPlayerInInfo = (toupper(bii.szInfo[0]) == 'P' && bii.szInfo[1] >= '1' && bii.szInfo[1] <= '4'); // Because some of the older drivers don't use the standard input naming. - bool bPlayerInName = (bii.szName[0] == 'P' && bii.szName[1] >= '1' && bii.szName[1] <= '4'); - - if (bPlayerInInfo || bPlayerInName) { - INT32 nPlayer = 0; - - if (bPlayerInName) - nPlayer = bii.szName[1] - '1'; - if (bPlayerInInfo && nPlayer == 0) - nPlayer = bii.szInfo[1] - '1'; - - if (nPlayer == 0) { - if (strncmp(" fire", bii.szInfo + 2, 5) == 0) { - nFireButtons++; - } - } - - if ((strncmp("Volume", bii.szName, 6) == 0) && (strncmp(" fire", bii.szInfo + 2, 5) == 0)) { - bVolumeIsFireButton = true; - } - if (_stricmp(" Weak Punch", bii.szName + 2) == 0) { - nPunchx3[nPlayer] |= 1; - nPunchInputs[nPlayer][0] = i; - } - if (_stricmp(" Medium Punch", bii.szName + 2) == 0) { - nPunchx3[nPlayer] |= 2; - nPunchInputs[nPlayer][1] = i; - } - if (_stricmp(" Strong Punch", bii.szName + 2) == 0) { - nPunchx3[nPlayer] |= 4; - nPunchInputs[nPlayer][2] = i; - } - if (_stricmp(" Weak Kick", bii.szName + 2) == 0) { - nKickx3[nPlayer] |= 1; - nKickInputs[nPlayer][0] = i; - } - if (_stricmp(" Medium Kick", bii.szName + 2) == 0) { - nKickx3[nPlayer] |= 2; - nKickInputs[nPlayer][1] = i; - } - if (_stricmp(" Strong Kick", bii.szName + 2) == 0) { - nKickx3[nPlayer] |= 4; - nKickInputs[nPlayer][2] = i; - } - - if ((BurnDrvGetHardwareCode() & (HARDWARE_PUBLIC_MASK - HARDWARE_PREFIX_CARTRIDGE)) == HARDWARE_SNK_NEOGEO) { - if (_stricmp(" Button A", bii.szName + 2) == 0) { - nNeogeoButtons[nPlayer][0] = i; - } - if (_stricmp(" Button B", bii.szName + 2) == 0) { - nNeogeoButtons[nPlayer][1] = i; - } - if (_stricmp(" Button C", bii.szName + 2) == 0) { - nNeogeoButtons[nPlayer][2] = i; - } - if (_stricmp(" Button D", bii.szName + 2) == 0) { - nNeogeoButtons[nPlayer][3] = i; - } - } - - //if ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_IGS_PGM) { - { // Use nPgmButtons for Autofire too -dink - if ((_stricmp(" Button 1", bii.szName + 2) == 0) || (_stricmp(" fire 1", bii.szInfo + 2) == 0)) { - nPgmButtons[nPlayer][0] = i; - } - if ((_stricmp(" Button 2", bii.szName + 2) == 0) || (_stricmp(" fire 2", bii.szInfo + 2) == 0)) { - nPgmButtons[nPlayer][1] = i; - } - if ((_stricmp(" Button 3", bii.szName + 2) == 0) || (_stricmp(" fire 3", bii.szInfo + 2) == 0)) { - nPgmButtons[nPlayer][2] = i; - } - if ((_stricmp(" Button 4", bii.szName + 2) == 0) || (_stricmp(" fire 4", bii.szInfo + 2) == 0)) { - nPgmButtons[nPlayer][3] = i; - } - if ((_stricmp(" Button 5", bii.szName + 2) == 0) || (_stricmp(" fire 5", bii.szInfo + 2) == 0)) { - nPgmButtons[nPlayer][4] = i; - } - if ((_stricmp(" Button 6", bii.szName + 2) == 0) || (_stricmp(" fire 6", bii.szInfo + 2) == 0)) { - nPgmButtons[nPlayer][5] = i; - } - } - } - } - - pgi = GameInp + nGameInpCount; - - { // Autofire!!! - for (INT32 nPlayer = 0; nPlayer < nMaxPlayers; nPlayer++) { - for (INT32 i = 0; i < nFireButtons; i++) { - pgi->nInput = GIT_MACRO_AUTO; - pgi->nType = BIT_DIGITAL; - pgi->Macro.nMode = 0; - pgi->Macro.nSysMacro = 15; // 15 = Auto-Fire mode - sprintf(pgi->Macro.szName, "P%d Auto-Fire Button %d", nPlayer+1, i+1); - - if ((BurnDrvGetHardwareCode() & (HARDWARE_PUBLIC_MASK - HARDWARE_PREFIX_CARTRIDGE)) == HARDWARE_SNK_NEOGEO) { - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][i]); - } else { - BurnDrvGetInputInfo(&bii, nPgmButtons[nPlayer][i]); - } - pgi->Macro.pVal[0] = bii.pVal; - pgi->Macro.nVal[0] = 1; - nMacroCount++; - pgi++; - } - } - } - - for (INT32 nPlayer = 0; nPlayer < nMaxPlayers; nPlayer++) { - if (nPunchx3[nPlayer] == 7) { // Create a 3x punch macro - pgi->nInput = GIT_MACRO_AUTO; - pgi->nType = BIT_DIGITAL; - pgi->Macro.nMode = 0; - - sprintf(pgi->Macro.szName, "P%i 3Ă— Punch", nPlayer + 1); - for (INT32 j = 0; j < 3; j++) { - BurnDrvGetInputInfo(&bii, nPunchInputs[nPlayer][j]); - pgi->Macro.pVal[j] = bii.pVal; - pgi->Macro.nVal[j] = 1; - } - - nMacroCount++; - pgi++; - } - - if (nKickx3[nPlayer] == 7) { // Create a 3x kick macro - pgi->nInput = GIT_MACRO_AUTO; - pgi->nType = BIT_DIGITAL; - pgi->Macro.nMode = 0; - - sprintf(pgi->Macro.szName, "P%i 3Ă— Kick", nPlayer + 1); - for (INT32 j = 0; j < 3; j++) { - BurnDrvGetInputInfo(&bii, nKickInputs[nPlayer][j]); - pgi->Macro.pVal[j] = bii.pVal; - pgi->Macro.nVal[j] = 1; - } - - nMacroCount++; - pgi++; - } - - if (nFireButtons == 4 && (BurnDrvGetHardwareCode() & (HARDWARE_PUBLIC_MASK - HARDWARE_PREFIX_CARTRIDGE)) == HARDWARE_SNK_NEOGEO) { - pgi->nInput = GIT_MACRO_AUTO; - pgi->nType = BIT_DIGITAL; - pgi->Macro.nMode = 0; - sprintf(pgi->Macro.szName, "P%i Buttons AB", nPlayer + 1); - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][0]); - pgi->Macro.pVal[0] = bii.pVal; - pgi->Macro.nVal[0] = 1; - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][1]); - pgi->Macro.pVal[1] = bii.pVal; - pgi->Macro.nVal[1] = 1; - nMacroCount++; - pgi++; - - pgi->nInput = GIT_MACRO_AUTO; - pgi->nType = BIT_DIGITAL; - pgi->Macro.nMode = 0; - sprintf(pgi->Macro.szName, "P%i Buttons AC", nPlayer + 1); - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][0]); - pgi->Macro.pVal[0] = bii.pVal; - pgi->Macro.nVal[0] = 1; - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][2]); - pgi->Macro.pVal[1] = bii.pVal; - pgi->Macro.nVal[1] = 1; - nMacroCount++; - pgi++; - - pgi->nInput = GIT_MACRO_AUTO; - pgi->nType = BIT_DIGITAL; - pgi->Macro.nMode = 0; - sprintf(pgi->Macro.szName, "P%i Buttons AD", nPlayer + 1); - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][0]); - pgi->Macro.pVal[0] = bii.pVal; - pgi->Macro.nVal[0] = 1; - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][3]); - pgi->Macro.pVal[1] = bii.pVal; - pgi->Macro.nVal[1] = 1; - nMacroCount++; - pgi++; - - pgi->nInput = GIT_MACRO_AUTO; - pgi->nType = BIT_DIGITAL; - pgi->Macro.nMode = 0; - sprintf(pgi->Macro.szName, "P%i Buttons BC", nPlayer + 1); - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][1]); - pgi->Macro.pVal[0] = bii.pVal; - pgi->Macro.nVal[0] = 1; - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][2]); - pgi->Macro.pVal[1] = bii.pVal; - pgi->Macro.nVal[1] = 1; - nMacroCount++; - pgi++; - - pgi->nInput = GIT_MACRO_AUTO; - pgi->nType = BIT_DIGITAL; - pgi->Macro.nMode = 0; - sprintf(pgi->Macro.szName, "P%i Buttons BD", nPlayer + 1); - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][1]); - pgi->Macro.pVal[0] = bii.pVal; - pgi->Macro.nVal[0] = 1; - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][3]); - pgi->Macro.pVal[1] = bii.pVal; - pgi->Macro.nVal[1] = 1; - nMacroCount++; - pgi++; - - pgi->nInput = GIT_MACRO_AUTO; - pgi->nType = BIT_DIGITAL; - pgi->Macro.nMode = 0; - sprintf(pgi->Macro.szName, "P%i Buttons CD", nPlayer + 1); - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][2]); - pgi->Macro.pVal[0] = bii.pVal; - pgi->Macro.nVal[0] = 1; - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][3]); - pgi->Macro.pVal[1] = bii.pVal; - pgi->Macro.nVal[1] = 1; - nMacroCount++; - pgi++; - - pgi->nInput = GIT_MACRO_AUTO; - pgi->nType = BIT_DIGITAL; - pgi->Macro.nMode = 0; - sprintf(pgi->Macro.szName, "P%i Buttons ABC", nPlayer + 1); - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][0]); - pgi->Macro.pVal[0] = bii.pVal; - pgi->Macro.nVal[0] = 1; - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][1]); - pgi->Macro.pVal[1] = bii.pVal; - pgi->Macro.nVal[1] = 1; - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][2]); - pgi->Macro.pVal[2] = bii.pVal; - pgi->Macro.nVal[2] = 1; - nMacroCount++; - pgi++; - - pgi->nInput = GIT_MACRO_AUTO; - pgi->nType = BIT_DIGITAL; - pgi->Macro.nMode = 0; - sprintf(pgi->Macro.szName, "P%i Buttons ABD", nPlayer + 1); - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][0]); - pgi->Macro.pVal[0] = bii.pVal; - pgi->Macro.nVal[0] = 1; - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][1]); - pgi->Macro.pVal[1] = bii.pVal; - pgi->Macro.nVal[1] = 1; - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][3]); - pgi->Macro.pVal[2] = bii.pVal; - pgi->Macro.nVal[2] = 1; - nMacroCount++; - pgi++; - - pgi->nInput = GIT_MACRO_AUTO; - pgi->nType = BIT_DIGITAL; - pgi->Macro.nMode = 0; - sprintf(pgi->Macro.szName, "P%i Buttons ACD", nPlayer + 1); - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][0]); - pgi->Macro.pVal[0] = bii.pVal; - pgi->Macro.nVal[0] = 1; - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][2]); - pgi->Macro.pVal[1] = bii.pVal; - pgi->Macro.nVal[1] = 1; - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][3]); - pgi->Macro.pVal[2] = bii.pVal; - pgi->Macro.nVal[2] = 1; - nMacroCount++; - pgi++; - - pgi->nInput = GIT_MACRO_AUTO; - pgi->nType = BIT_DIGITAL; - pgi->Macro.nMode = 0; - sprintf(pgi->Macro.szName, "P%i Buttons BCD", nPlayer + 1); - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][1]); - pgi->Macro.pVal[0] = bii.pVal; - pgi->Macro.nVal[0] = 1; - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][2]); - pgi->Macro.pVal[1] = bii.pVal; - pgi->Macro.nVal[1] = 1; - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][3]); - pgi->Macro.pVal[2] = bii.pVal; - pgi->Macro.nVal[2] = 1; - nMacroCount++; - pgi++; - - pgi->nInput = GIT_MACRO_AUTO; - pgi->nType = BIT_DIGITAL; - pgi->Macro.nMode = 0; - sprintf(pgi->Macro.szName, "P%i Buttons ABCD", nPlayer + 1); - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][0]); - pgi->Macro.pVal[0] = bii.pVal; - pgi->Macro.nVal[0] = 1; - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][1]); - pgi->Macro.pVal[1] = bii.pVal; - pgi->Macro.nVal[1] = 1; - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][2]); - pgi->Macro.pVal[2] = bii.pVal; - pgi->Macro.nVal[2] = 1; - BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][3]); - pgi->Macro.pVal[3] = bii.pVal; - pgi->Macro.nVal[3] = 1; - nMacroCount++; - pgi++; - } - } - - if ((nPunchx3[0] == 7) && (nKickx3[0] == 7)) { - bStreetFighterLayout = true; - } - if (nFireButtons >= 5 && (BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_CAPCOM_CPS2 && !bVolumeIsFireButton) { - bStreetFighterLayout = true; - } -} - -INT32 GameInpInit() -{ - INT32 nRet = 0; - // Count the number of inputs - nGameInpCount = 0; - nMacroCount = 0; - nMaxMacro = nMaxPlayers * 52; - - for (UINT32 i = 0; i < 0x1000; i++) { - nRet = BurnDrvGetInputInfo(NULL,i); - if (nRet) { // end of input list - nGameInpCount = i; - break; - } - } - - // Allocate space for all the inputs - INT32 nSize = (nGameInpCount + nMaxMacro) * sizeof(struct GameInp); - GameInp = (struct GameInp*)malloc(nSize); - if (GameInp == NULL) { - return 1; - } - memset(GameInp, 0, nSize); - - GameInpBlank(1); - - InpDIPSWResetDIPs(); - - GameInpInitMacros(); - - nAnalogSpeed = 0x0100; - - return 0; -} - - // Analog to analog mapping -INT32 GameInpAnalog2RetroInpAnalog(struct GameInp* pgi, UINT32 nJoy, UINT8 nAxis, UINT32 nKey, UINT32 nIndex, char *szn, UINT8 nInput = GIT_JOYAXIS_FULL, INT32 nSliderValue = 0x8000, INT16 nSliderSpeed = 0x0E00, INT16 nSliderCenter = 10) +static INT32 GameInpAnalog2RetroInpAnalog(struct GameInp* pgi, UINT32 nJoy, UINT8 nAxis, UINT32 nKey, UINT32 nIndex, char *szn, UINT8 nInput = GIT_JOYAXIS_FULL, INT32 nSliderValue = 0x8000, INT16 nSliderSpeed = 0x0E00, INT16 nSliderCenter = 10) { struct retro_input_descriptor input_descriptor; @@ -3025,24 +2203,25 @@ INT32 GameInpAnalog2RetroInpAnalog(struct GameInp* pgi, UINT32 nJoy, UINT8 nAxis } // Digital to digital mapping -INT32 GameInpDigital2RetroInpKey(struct GameInp* pgi, UINT32 nJoy, UINT32 nKey, char *szn) +static INT32 GameInpDigital2RetroInpKey(struct GameInp* pgi, UINT32 nJoy, UINT32 nKey, char *szn) { - struct retro_input_descriptor input_descriptor; - if(bButtonMapped) return 0; + if (!bButtonMapped) + { + struct retro_input_descriptor input_descriptor; + input_descriptor.port = nJoy; + input_descriptor.device = RETRO_DEVICE_JOYPAD; + input_descriptor.index = 0; + input_descriptor.id = nKey; + input_descriptor.description = szn; - input_descriptor.port = nJoy; - input_descriptor.device = RETRO_DEVICE_JOYPAD; - input_descriptor.index = 0; - input_descriptor.id = nKey; - input_descriptor.description = szn; - - pgi->nInput = GIT_SWITCH; - pgi->Input.Switch.nCode = (UINT16)(switch_ncode++); - keybinds[pgi->Input.Switch.nCode][0] = nKey; - keybinds[pgi->Input.Switch.nCode][1] = nJoy; - normal_input_descriptors.push_back(input_descriptor); - bButtonMapped = true; + pgi->nInput = GIT_SWITCH; + pgi->Input.Switch.nCode = (UINT16)(switch_ncode++); + keybinds[pgi->Input.Switch.nCode][0] = nKey; + keybinds[pgi->Input.Switch.nCode][1] = nJoy; + normal_input_descriptors.push_back(input_descriptor); + bButtonMapped = true; + } return 0; } @@ -3051,7 +2230,7 @@ INT32 GameInpDigital2RetroInpKey(struct GameInp* pgi, UINT32 nJoy, UINT32 nKey, // nJoy (player) and nKey (axis) needs to be the same for each of the 2 buttons // position is either JOY_POS or JOY_NEG (the position expected on axis to trigger the button) // szn is the descriptor text -INT32 GameInpDigital2RetroInpAnalogRight(struct GameInp* pgi, UINT32 nJoy, UINT32 nKey, UINT32 position, char *szn) +static INT32 GameInpDigital2RetroInpAnalogRight(struct GameInp* pgi, UINT32 nJoy, UINT32 nKey, UINT32 position, char *szn) { struct retro_input_descriptor input_descriptor; @@ -3063,369 +2242,19 @@ INT32 GameInpDigital2RetroInpAnalogRight(struct GameInp* pgi, UINT32 nJoy, UINT3 input_descriptor.id = nKey; input_descriptor.description = szn; - pgi->nInput = GIT_SWITCH; - pgi->Input.Switch.nCode = (UINT16)(switch_ncode++); - keybinds[pgi->Input.Switch.nCode][0] = nKey; - keybinds[pgi->Input.Switch.nCode][1] = nJoy; - keybinds[pgi->Input.Switch.nCode][2] = RETRO_DEVICE_INDEX_ANALOG_RIGHT; - keybinds[pgi->Input.Switch.nCode][3] = position; + pgi->nInput = GIT_SWITCH; + pgi->Input.Switch.nCode = (UINT16)(switch_ncode++); + keybinds[pgi->Input.Switch.nCode][0] = nKey; + keybinds[pgi->Input.Switch.nCode][1] = nJoy; + keybinds[pgi->Input.Switch.nCode][2] = RETRO_DEVICE_INDEX_ANALOG_RIGHT; + keybinds[pgi->Input.Switch.nCode][3] = position; bAnalogRightMappingDone[nJoy][nKey][position] = true; - if(bAnalogRightMappingDone[nJoy][nKey][JOY_POS] && bAnalogRightMappingDone[nJoy][nKey][JOY_NEG]) { + if(bAnalogRightMappingDone[nJoy][nKey][JOY_POS] && bAnalogRightMappingDone[nJoy][nKey][JOY_NEG]) normal_input_descriptors.push_back(input_descriptor); - } bButtonMapped = true; return 0; } -// 1 analog to 2 digital mapping -// Needs pgi, player, axis, 2 buttons retropad id and 2 descriptions -INT32 GameInpAnalog2RetroInpDualKeys(struct GameInp* pgi, UINT32 nJoy, UINT8 nAxis, UINT32 nKeyPos, UINT32 nKeyNeg, char *sznpos, char *sznneg) -{ - struct retro_input_descriptor input_descriptor; - - if(bButtonMapped) return 0; - - pgi->nInput = GIT_JOYAXIS_FULL; - pgi->Input.JoyAxis.nAxis = nAxis; - pgi->Input.JoyAxis.nJoy = (UINT8)nJoy; - axibinds[nJoy][nAxis][0] = 0xff; - axibinds[nJoy][nAxis][1] = nKeyPos; - axibinds[nJoy][nAxis][2] = nKeyNeg; - - input_descriptor.port = nJoy; - input_descriptor.device = RETRO_DEVICE_JOYPAD; - input_descriptor.index = 0; - input_descriptor.id = nKeyPos; - input_descriptor.description = sznpos; - - normal_input_descriptors.push_back(input_descriptor); - - input_descriptor.port = nJoy; - input_descriptor.device = RETRO_DEVICE_JOYPAD; - input_descriptor.index = 0; - input_descriptor.id = nKeyNeg; - input_descriptor.description = sznneg; - - normal_input_descriptors.push_back(input_descriptor); - bButtonMapped = true; - return 0; -} - -// [WIP] -// All inputs which needs special handling need to go in the next function -#if 0 -INT32 GameInpSpecialOne(struct GameInp* pgi, INT32 nPlayer, char* szi, char *szn, char *description) -{ - const char * parentrom = BurnDrvGetTextA(DRV_PARENT); - const char * drvname = BurnDrvGetTextA(DRV_NAME); - //const char * boardrom = BurnDrvGetTextA(DRV_BOARDROM); - const char * systemname = BurnDrvGetTextA(DRV_SYSTEM); - //INT32 genre = BurnDrvGetGenreFlags(); - //INT32 family = BurnDrvGetFamilyFlags(); - //INT32 hardware = BurnDrvGetHardwareCode(); - - // Fix part of issue #102 (Crazy Fight) - // Can't really manage to have a decent mapping on this one if you don't have a stick/pad with the following 2 rows of 3 buttons : - // Y X R1 - // B A R2 - if ((parentrom && strcmp(parentrom, "crazyfgt") == 0) || - (drvname && strcmp(drvname, "crazyfgt") == 0) - ) { - if (strcmp("top-left", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_Y, description); - } - if (strcmp("top-center", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_X, description); - } - if (strcmp("top-right", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_R, description); - } - if (strcmp("bottom-left", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_B, description); - } - if (strcmp("bottom-center", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_A, description); - } - if (strcmp("bottom-right", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_R2, description); - } - } - - // Fix part of issue #102 (Last Survivor) - if ((parentrom && strcmp(parentrom, "lastsurv") == 0) || - (drvname && strcmp(drvname, "lastsurv") == 0) - ) { - if (strcmp("Turn Left", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_L, description); - } - if (strcmp("Turn Right", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_R, description); - } - } - - // Recommandation from http://neosource.1emulation.com/forums/index.php?topic=2991.0 (Power Drift) - if ((parentrom && strcmp(parentrom, "pdrift") == 0) || - (drvname && strcmp(drvname, "pdrift") == 0) - ) { - if (strcmp("Steering", description) == 0) { - GameInpAnalog2RetroInpAnalog(pgi, nPlayer, 0, RETRO_DEVICE_ID_ANALOG_X, RETRO_DEVICE_INDEX_ANALOG_LEFT, description, GIT_JOYSLIDER, 0x8000, 0x0800, 10); - } - } - - // Car steer a little too much with default setting + use L/R for Shift Down/Up (Super Monaco GP) - if ((parentrom && strcmp(parentrom, "smgp") == 0) || - (drvname && strcmp(drvname, "smgp") == 0) - ) { - if (strcmp("Left/Right", description) == 0) { - GameInpAnalog2RetroInpAnalog(pgi, nPlayer, 0, RETRO_DEVICE_ID_ANALOG_X, RETRO_DEVICE_INDEX_ANALOG_LEFT, description, GIT_JOYSLIDER, 0x8000, 0x0C00, 10); - } - if (strcmp("Shift Down", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_L, description); - } - if (strcmp("Shift Up", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_R, description); - } - } - - // Fix issue #133 (Night striker) - if ((parentrom && strcmp(parentrom, "nightstr") == 0) || - (drvname && strcmp(drvname, "nightstr") == 0) - ) { - if (strcmp("Stick Y", description) == 0) { - GameInpAnalog2RetroInpAnalog(pgi, nPlayer, 1, RETRO_DEVICE_ID_ANALOG_Y, RETRO_DEVICE_INDEX_ANALOG_LEFT, description, GIT_JOYSLIDER, 0x8000, 0x0700, 0); - } - } - - // Fix part of issue #102 (Hang On Junior) - if ((parentrom && strcmp(parentrom, "hangonjr") == 0) || - (drvname && strcmp(drvname, "hangonjr") == 0) - ) { - if (strcmp("Accelerate", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_B, description); - } - } - - // Fix part of issue #102 (Out Run) - if ((parentrom && strcmp(parentrom, "outrun") == 0) || - (drvname && strcmp(drvname, "outrun") == 0) - ) { - if (strcmp("Gear", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_R, description); - } - } - - // Fix part of issue #102 (Golden Axe) - // Use same layout as megadrive cores - if ((parentrom && strcmp(parentrom, "goldnaxe") == 0) || - (drvname && strcmp(drvname, "goldnaxe") == 0) - ) { - if (strcmp("Fire 1", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_Y, "Magic"); - } - if (strcmp("Fire 2", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_B, "Attack"); - } - if (strcmp("Fire 3", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_A, "Jump"); - } - } - - // Fix part of issue #102 (Major League) - if ((parentrom && strcmp(parentrom, "mjleague") == 0) || - (drvname && strcmp(drvname, "mjleague") == 0) - ) { - if (strcmp("Bat Swing", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_B, description); - } - if (strcmp("Fire 1", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_A, description); - } - if (strcmp("Fire 2", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_Y, description); - } - if (strcmp("Fire 3", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_X, description); - } - if (strcmp("Fire 4", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_R, description); - } - if (strcmp("Fire 5", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_L, description); - } - } - - // Fix part of issue #102 (Chase HQ) - if ((parentrom && strcmp(parentrom, "chasehq") == 0) || - (drvname && strcmp(drvname, "chasehq") == 0) - ) { - if (strcmp("Brake", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_A, description); - } - if (strcmp("Accelerate", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_B, description); - } - if (strcmp("Turbo", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_Y, description); - } - if (strcmp("Gear", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_R, description); - } - } - - // Fix part of issue #102 (D&D:Shadow over Mystara & Tower of Doom) - if ((parentrom && strcmp(parentrom, "ddsom") == 0) || - (drvname && strcmp(drvname, "ddsom") == 0) || - (parentrom && strcmp(parentrom, "ddtod") == 0) || - (drvname && strcmp(drvname, "ddtod") == 0) - ) { - if (strcmp("Attack", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_Y, description); - } - if (strcmp("Jump", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_B, description); - } - if (strcmp("Select", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_X, description); - } - if (strcmp("Use", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_A, description); - } - if (strcmp("Volume Up", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_R, description); - } - if (strcmp("Volume Down", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_L, description); - } - } - - // Fix part of issue #102 (SDI - Strategic Defense Initiative) - if ((parentrom && strcmp(parentrom, "sdi") == 0) || - (drvname && strcmp(drvname, "sdi") == 0) - ) { - if (strcmp("Target L/R", description) == 0) { - GameInpAnalog2RetroInpAnalog(pgi, nPlayer, 0, RETRO_DEVICE_ID_ANALOG_X, RETRO_DEVICE_INDEX_ANALOG_RIGHT, description); - } - if (strcmp("Target U/D", description) == 0) { - GameInpAnalog2RetroInpAnalog(pgi, nPlayer, 1, RETRO_DEVICE_ID_ANALOG_Y, RETRO_DEVICE_INDEX_ANALOG_RIGHT, description); - } - if (strcmp("Fire 1", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_R, description); - } - } - - // Fix part of issue #102 (Forgotten Worlds) - if ((parentrom && strcmp(parentrom, "forgottn") == 0) || - (drvname && strcmp(drvname, "forgottn") == 0) - ) { - if (strcmp("Turn (analog)", description) == 0) { - GameInpAnalog2RetroInpAnalog(pgi, nPlayer, 0, RETRO_DEVICE_ID_ANALOG_X, RETRO_DEVICE_INDEX_ANALOG_RIGHT, description); - } - if (strcmp("Attack", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_R, description); - } - if (strcmp("Turn - (digital)", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_B, description); - } - if (strcmp("Turn + (digital)", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_A, description); - } - } - - // Fix part of issue #102 (Puzz Loop 2) - if ((parentrom && strcmp(parentrom, "pzloop2") == 0) || - (drvname && strcmp(drvname, "pzloop2") == 0) - ) { - if (strcmp("Paddle", description) == 0) { - GameInpAnalog2RetroInpDualKeys(pgi, nPlayer, 0, RETRO_DEVICE_ID_JOYPAD_R, RETRO_DEVICE_ID_JOYPAD_L, "Paddle Up", "Paddle Down"); - } - } - - // Fix part of issue #102 (After burner 1 & 2) - if ((parentrom && strcmp(parentrom, "aburner2") == 0) || - (drvname && strcmp(drvname, "aburner2") == 0) - ) { - if (strcmp("Throttle", description) == 0) { - GameInpAnalog2RetroInpDualKeys(pgi, nPlayer, 2, RETRO_DEVICE_ID_JOYPAD_R, RETRO_DEVICE_ID_JOYPAD_L, "Speed Up", "Speed Down"); - } - } - - // Handle megadrive - if ((systemname && strcmp(systemname, "Sega Megadrive") == 0)) { - // Street Fighter 2 mapping (which is the only 6 button megadrive game ?) - // Use same layout as arcade - if ((parentrom && strcmp(parentrom, "md_sf2") == 0) || - (drvname && strcmp(drvname, "md_sf2") == 0) - ) { - if (strcmp("Button A", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_B, "Weak Kick"); - } - if (strcmp("Button B", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_A, "Medium Kick"); - } - if (strcmp("Button C", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, (fba_devices[nPlayer] == RETROPAD_MODERN ? RETRO_DEVICE_ID_JOYPAD_R2 : RETRO_DEVICE_ID_JOYPAD_R), "Strong Kick"); - } - if (strcmp("Button X", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_Y, "Weak Punch"); - } - if (strcmp("Button Y", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_X, "Medium Punch"); - } - if (strcmp("Button Z", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, (fba_devices[nPlayer] == RETROPAD_MODERN ? RETRO_DEVICE_ID_JOYPAD_R : RETRO_DEVICE_ID_JOYPAD_L), "Strong Punch"); - } - } - // Generic megadrive mapping - // Use same layout as megadrive cores - if (strcmp("Button A", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_Y, description); - } - if (strcmp("Button B", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_B, description); - } - if (strcmp("Button C", description) == 0) { - GameInpDigital2RetroInpKey(pgi, nPlayer, RETRO_DEVICE_ID_JOYPAD_A, description); - } - } - - // Fix part of issue #102 (Twin stick games) - if ((strcmp("Up 2", description) == 0) || - (strcmp("Up (right)", description) == 0) || - (strcmp("Right Up", description) == 0) - ) { - GameInpDigital2RetroInpAnalogRight(pgi, nPlayer, RETRO_DEVICE_ID_ANALOG_Y, JOY_NEG, "Up / Down (Right Stick)"); - } - if ((strcmp("Down 2", description) == 0) || - (strcmp("Down (right)", description) == 0) || - (strcmp("Right Down", description) == 0) - ) { - GameInpDigital2RetroInpAnalogRight(pgi, nPlayer, RETRO_DEVICE_ID_ANALOG_Y, JOY_POS, "Up / Down (Right Stick)"); - } - if ((strcmp("Left 2", description) == 0) || - (strcmp("Left (right)", description) == 0) || - (strcmp("Right Left", description) == 0) - ) { - GameInpDigital2RetroInpAnalogRight(pgi, nPlayer, RETRO_DEVICE_ID_ANALOG_X, JOY_NEG, "Left / Right (Right Stick)"); - } - if ((strcmp("Right 2", description) == 0) || - (strcmp("Right (right)", description) == 0) || - (strcmp("Right Right", description) == 0) - ) { - GameInpDigital2RetroInpAnalogRight(pgi, nPlayer, RETRO_DEVICE_ID_ANALOG_X, JOY_POS, "Left / Right (Right Stick)"); - } - - // Default racing games's Steering control to the joyslider type of analog control - // Joyslider is some sort of "wheel" emulation - if ((BurnDrvGetGenreFlags() & GBF_RACING)) { - if (strcmp("x-axis", szi + 3) == 0) { - GameInpAnalog2RetroInpAnalog(pgi, nPlayer, 0, RETRO_DEVICE_ID_ANALOG_X, RETRO_DEVICE_INDEX_ANALOG_LEFT, description, GIT_JOYSLIDER); - } - } - - return 0; -} -#endif - // Handle mapping of an input // Will delegate to GameInpSpecialOne for cases which needs "fine tuning" // Use GameInp2RetroInp for the actual mapping @@ -3434,7 +2263,8 @@ static INT32 GameInpAutoOne(struct GameInp* pgi, char* szi, char *szn) bool bPlayerInInfo = (toupper(szi[0]) == 'P' && szi[1] >= '1' && szi[1] <= '4'); // Because some of the older drivers don't use the standard input naming. bool bPlayerInName = (szn[0] == 'P' && szn[1] >= '1' && szn[1] <= '4'); - if (bPlayerInInfo || bPlayerInName) { + if (bPlayerInInfo || bPlayerInName) + { INT32 nPlayer = -1; if (bPlayerInName) @@ -3517,7 +2347,7 @@ static INT32 GameInpAutoOne(struct GameInp* pgi, char* szi, char *szn) GameInpDigital2RetroInpKey(pgi, nPlayer, (fba_devices[nPlayer] == RETROPAD_MODERN ? RETRO_DEVICE_ID_JOYPAD_R2 : RETRO_DEVICE_ID_JOYPAD_R), description); break; } - // Handle generic mapping of everything else + // Handle generic mapping of everything else } else { switch (nButton) { case 1: @@ -3551,14 +2381,16 @@ static INT32 GameInpAutoOne(struct GameInp* pgi, char* szi, char *szn) } // Store the pgi that controls the reset input - if (strcmp(szi, "reset") == 0) { + if (strcmp(szi, "reset") == 0) + { pgi->nInput = GIT_SWITCH; pgi->Input.Switch.nCode = (UINT16)(switch_ncode++); pgi_reset = pgi; } // Store the pgi that controls the diagnostic input - if (strcmp(szi, "diag") == 0) { + if (strcmp(szi, "diag") == 0) + { pgi->nInput = GIT_SWITCH; pgi->Input.Switch.nCode = (UINT16)(switch_ncode++); pgi_diag = pgi; @@ -3567,51 +2399,697 @@ static INT32 GameInpAutoOne(struct GameInp* pgi, char* szi, char *szn) } // Auto-configure any undefined inputs to defaults -INT32 GameInpDefault() +static INT32 GameInpDefault(void) +{ + struct GameInp* pgi; + struct BurnInputInfo bii; + UINT32 i; + + pgi_reset = NULL; + pgi_diag = NULL; + + // Fill all inputs still undefined + for (i = 0, pgi = GameInp; i < nGameInpCount; i++, pgi++) + { + if (pgi->nInput) // Already defined - leave it alone + continue; + + // Get the extra info about the input + bii.szInfo = NULL; + BurnDrvGetInputInfo(&bii, i); + if (bii.pVal == NULL) + continue; + if (bii.szInfo == NULL) + bii.szInfo = ""; + + // Dip switches - set to constant + if (bii.nType & BIT_GROUP_CONSTANT) + { + pgi->nInput = GIT_CONSTANT; + continue; + } + + GameInpAutoOne(pgi, bii.szInfo, bii.szName); + } + + return 0; +} + +static void GameInpInitMacros(void) { struct GameInp* pgi; struct BurnInputInfo bii; - UINT32 i; + INT32 nPunchInputs[4][3]; + INT32 nKickInputs[4][3]; + INT32 nNeogeoButtons[4][4]; + INT32 nPgmButtons[10][16]; + INT32 nPunchx3[4] = {0, 0, 0, 0}; + INT32 nKickx3[4] = {0, 0, 0, 0}; - pgi_reset = NULL; - pgi_diag = NULL; + bStreetFighterLayout = false; + bVolumeIsFireButton = false; + nMacroCount = 0; + nFireButtons = 0; - // Fill all inputs still undefined - for (i = 0, pgi = GameInp; i < nGameInpCount; i++, pgi++) { - if (pgi->nInput) { // Already defined - leave it alone - continue; - } + memset(&nNeogeoButtons, 0, sizeof(nNeogeoButtons)); + memset(&nPgmButtons, 0, sizeof(nPgmButtons)); - // Get the extra info about the input - bii.szInfo = NULL; + for (UINT32 i = 0; i < nGameInpCount; i++) + { + bii.szName = NULL; BurnDrvGetInputInfo(&bii, i); - if (bii.pVal == NULL) { - continue; - } - if (bii.szInfo == NULL) { - bii.szInfo = ""; - } + if (bii.szName == NULL) + bii.szName = ""; + bool bPlayerInInfo = (toupper(bii.szInfo[0]) == 'P' && bii.szInfo[1] >= '1' && bii.szInfo[1] <= '4'); // Because some of the older drivers don't use the standard input naming. + bool bPlayerInName = (bii.szName[0] == 'P' && bii.szName[1] >= '1' && bii.szName[1] <= '4'); - // Dip switches - set to constant - if (bii.nType & BIT_GROUP_CONSTANT) { - pgi->nInput = GIT_CONSTANT; - continue; - } + if (bPlayerInInfo || bPlayerInName) + { + INT32 nPlayer = 0; - GameInpAutoOne(pgi, bii.szInfo, bii.szName); + if (bPlayerInName) + nPlayer = bii.szName[1] - '1'; + if (bPlayerInInfo && nPlayer == 0) + nPlayer = bii.szInfo[1] - '1'; + + if (nPlayer == 0) + { + if (strncmp(" fire", bii.szInfo + 2, 5) == 0) + nFireButtons++; + } + + if ((strncmp("Volume", bii.szName, 6) == 0) && (strncmp(" fire", bii.szInfo + 2, 5) == 0)) + bVolumeIsFireButton = true; + if (_stricmp(" Weak Punch", bii.szName + 2) == 0) + { + nPunchx3[nPlayer] |= 1; + nPunchInputs[nPlayer][0] = i; + } + if (_stricmp(" Medium Punch", bii.szName + 2) == 0) + { + nPunchx3[nPlayer] |= 2; + nPunchInputs[nPlayer][1] = i; + } + if (_stricmp(" Strong Punch", bii.szName + 2) == 0) { + nPunchx3[nPlayer] |= 4; + nPunchInputs[nPlayer][2] = i; + } + if (_stricmp(" Weak Kick", bii.szName + 2) == 0) { + nKickx3[nPlayer] |= 1; + nKickInputs[nPlayer][0] = i; + } + if (_stricmp(" Medium Kick", bii.szName + 2) == 0) { + nKickx3[nPlayer] |= 2; + nKickInputs[nPlayer][1] = i; + } + if (_stricmp(" Strong Kick", bii.szName + 2) == 0) { + nKickx3[nPlayer] |= 4; + nKickInputs[nPlayer][2] = i; + } + + if ((BurnDrvGetHardwareCode() & (HARDWARE_PUBLIC_MASK - HARDWARE_PREFIX_CARTRIDGE)) == HARDWARE_SNK_NEOGEO) { + if (_stricmp(" Button A", bii.szName + 2) == 0) + nNeogeoButtons[nPlayer][0] = i; + if (_stricmp(" Button B", bii.szName + 2) == 0) + nNeogeoButtons[nPlayer][1] = i; + if (_stricmp(" Button C", bii.szName + 2) == 0) + nNeogeoButtons[nPlayer][2] = i; + if (_stricmp(" Button D", bii.szName + 2) == 0) + nNeogeoButtons[nPlayer][3] = i; + } + + //if ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_IGS_PGM) { + { // Use nPgmButtons for Autofire too -dink + if ((_stricmp(" Button 1", bii.szName + 2) == 0) || (_stricmp(" fire 1", bii.szInfo + 2) == 0)) + nPgmButtons[nPlayer][0] = i; + if ((_stricmp(" Button 2", bii.szName + 2) == 0) || (_stricmp(" fire 2", bii.szInfo + 2) == 0)) + nPgmButtons[nPlayer][1] = i; + if ((_stricmp(" Button 3", bii.szName + 2) == 0) || (_stricmp(" fire 3", bii.szInfo + 2) == 0)) + nPgmButtons[nPlayer][2] = i; + if ((_stricmp(" Button 4", bii.szName + 2) == 0) || (_stricmp(" fire 4", bii.szInfo + 2) == 0)) + nPgmButtons[nPlayer][3] = i; + if ((_stricmp(" Button 5", bii.szName + 2) == 0) || (_stricmp(" fire 5", bii.szInfo + 2) == 0)) + nPgmButtons[nPlayer][4] = i; + if ((_stricmp(" Button 6", bii.szName + 2) == 0) || (_stricmp(" fire 6", bii.szInfo + 2) == 0)) + nPgmButtons[nPlayer][5] = i; + } + } } - // Fill in macros still undefined - /* - for (i = 0; i < nMacroCount; i++, pgi++) { - if (pgi->nInput != GIT_MACRO_AUTO || pgi->Macro.nMode) { // Already defined - leave it alone - continue; - } + pgi = GameInp + nGameInpCount; - GameInpAutoOne(pgi, pgi->Macro.szName, pgi->Macro.szName); + { // Autofire!!! + for (INT32 nPlayer = 0; nPlayer < nMaxPlayers; nPlayer++) + { + for (INT32 i = 0; i < nFireButtons; i++) + { + pgi->nInput = GIT_MACRO_AUTO; + pgi->nType = BIT_DIGITAL; + pgi->Macro.nMode = 0; + pgi->Macro.nSysMacro = 15; // 15 = Auto-Fire mode + sprintf(pgi->Macro.szName, "P%d Auto-Fire Button %d", nPlayer+1, i+1); + + if ((BurnDrvGetHardwareCode() & (HARDWARE_PUBLIC_MASK - HARDWARE_PREFIX_CARTRIDGE)) == HARDWARE_SNK_NEOGEO) + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][i]); + else + BurnDrvGetInputInfo(&bii, nPgmButtons[nPlayer][i]); + pgi->Macro.pVal[0] = bii.pVal; + pgi->Macro.nVal[0] = 1; + nMacroCount++; + pgi++; + } + } + } + + for (INT32 nPlayer = 0; nPlayer < nMaxPlayers; nPlayer++) + { + if (nPunchx3[nPlayer] == 7) // Create a 3x punch macro + { + pgi->nInput = GIT_MACRO_AUTO; + pgi->nType = BIT_DIGITAL; + pgi->Macro.nMode = 0; + + sprintf(pgi->Macro.szName, "P%i 3Ă— Punch", nPlayer + 1); + for (INT32 j = 0; j < 3; j++) + { + BurnDrvGetInputInfo(&bii, nPunchInputs[nPlayer][j]); + pgi->Macro.pVal[j] = bii.pVal; + pgi->Macro.nVal[j] = 1; + } + + nMacroCount++; + pgi++; + } + + if (nKickx3[nPlayer] == 7) { // Create a 3x kick macro + pgi->nInput = GIT_MACRO_AUTO; + pgi->nType = BIT_DIGITAL; + pgi->Macro.nMode = 0; + + sprintf(pgi->Macro.szName, "P%i 3Ă— Kick", nPlayer + 1); + for (INT32 j = 0; j < 3; j++) { + BurnDrvGetInputInfo(&bii, nKickInputs[nPlayer][j]); + pgi->Macro.pVal[j] = bii.pVal; + pgi->Macro.nVal[j] = 1; + } + + nMacroCount++; + pgi++; + } + + if (nFireButtons == 4 && (BurnDrvGetHardwareCode() & (HARDWARE_PUBLIC_MASK - HARDWARE_PREFIX_CARTRIDGE)) == HARDWARE_SNK_NEOGEO) + { + pgi->nInput = GIT_MACRO_AUTO; + pgi->nType = BIT_DIGITAL; + pgi->Macro.nMode = 0; + sprintf(pgi->Macro.szName, "P%i Buttons AB", nPlayer + 1); + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][0]); + pgi->Macro.pVal[0] = bii.pVal; + pgi->Macro.nVal[0] = 1; + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][1]); + pgi->Macro.pVal[1] = bii.pVal; + pgi->Macro.nVal[1] = 1; + nMacroCount++; + pgi++; + + pgi->nInput = GIT_MACRO_AUTO; + pgi->nType = BIT_DIGITAL; + pgi->Macro.nMode = 0; + sprintf(pgi->Macro.szName, "P%i Buttons AC", nPlayer + 1); + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][0]); + pgi->Macro.pVal[0] = bii.pVal; + pgi->Macro.nVal[0] = 1; + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][2]); + pgi->Macro.pVal[1] = bii.pVal; + pgi->Macro.nVal[1] = 1; + nMacroCount++; + pgi++; + + pgi->nInput = GIT_MACRO_AUTO; + pgi->nType = BIT_DIGITAL; + pgi->Macro.nMode = 0; + sprintf(pgi->Macro.szName, "P%i Buttons AD", nPlayer + 1); + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][0]); + pgi->Macro.pVal[0] = bii.pVal; + pgi->Macro.nVal[0] = 1; + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][3]); + pgi->Macro.pVal[1] = bii.pVal; + pgi->Macro.nVal[1] = 1; + nMacroCount++; + pgi++; + + pgi->nInput = GIT_MACRO_AUTO; + pgi->nType = BIT_DIGITAL; + pgi->Macro.nMode = 0; + sprintf(pgi->Macro.szName, "P%i Buttons BC", nPlayer + 1); + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][1]); + pgi->Macro.pVal[0] = bii.pVal; + pgi->Macro.nVal[0] = 1; + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][2]); + pgi->Macro.pVal[1] = bii.pVal; + pgi->Macro.nVal[1] = 1; + nMacroCount++; + pgi++; + + pgi->nInput = GIT_MACRO_AUTO; + pgi->nType = BIT_DIGITAL; + pgi->Macro.nMode = 0; + sprintf(pgi->Macro.szName, "P%i Buttons BD", nPlayer + 1); + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][1]); + pgi->Macro.pVal[0] = bii.pVal; + pgi->Macro.nVal[0] = 1; + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][3]); + pgi->Macro.pVal[1] = bii.pVal; + pgi->Macro.nVal[1] = 1; + nMacroCount++; + pgi++; + + pgi->nInput = GIT_MACRO_AUTO; + pgi->nType = BIT_DIGITAL; + pgi->Macro.nMode = 0; + sprintf(pgi->Macro.szName, "P%i Buttons CD", nPlayer + 1); + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][2]); + pgi->Macro.pVal[0] = bii.pVal; + pgi->Macro.nVal[0] = 1; + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][3]); + pgi->Macro.pVal[1] = bii.pVal; + pgi->Macro.nVal[1] = 1; + nMacroCount++; + pgi++; + + pgi->nInput = GIT_MACRO_AUTO; + pgi->nType = BIT_DIGITAL; + pgi->Macro.nMode = 0; + sprintf(pgi->Macro.szName, "P%i Buttons ABC", nPlayer + 1); + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][0]); + pgi->Macro.pVal[0] = bii.pVal; + pgi->Macro.nVal[0] = 1; + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][1]); + pgi->Macro.pVal[1] = bii.pVal; + pgi->Macro.nVal[1] = 1; + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][2]); + pgi->Macro.pVal[2] = bii.pVal; + pgi->Macro.nVal[2] = 1; + nMacroCount++; + pgi++; + + pgi->nInput = GIT_MACRO_AUTO; + pgi->nType = BIT_DIGITAL; + pgi->Macro.nMode = 0; + sprintf(pgi->Macro.szName, "P%i Buttons ABD", nPlayer + 1); + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][0]); + pgi->Macro.pVal[0] = bii.pVal; + pgi->Macro.nVal[0] = 1; + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][1]); + pgi->Macro.pVal[1] = bii.pVal; + pgi->Macro.nVal[1] = 1; + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][3]); + pgi->Macro.pVal[2] = bii.pVal; + pgi->Macro.nVal[2] = 1; + nMacroCount++; + pgi++; + + pgi->nInput = GIT_MACRO_AUTO; + pgi->nType = BIT_DIGITAL; + pgi->Macro.nMode = 0; + sprintf(pgi->Macro.szName, "P%i Buttons ACD", nPlayer + 1); + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][0]); + pgi->Macro.pVal[0] = bii.pVal; + pgi->Macro.nVal[0] = 1; + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][2]); + pgi->Macro.pVal[1] = bii.pVal; + pgi->Macro.nVal[1] = 1; + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][3]); + pgi->Macro.pVal[2] = bii.pVal; + pgi->Macro.nVal[2] = 1; + nMacroCount++; + pgi++; + + pgi->nInput = GIT_MACRO_AUTO; + pgi->nType = BIT_DIGITAL; + pgi->Macro.nMode = 0; + sprintf(pgi->Macro.szName, "P%i Buttons BCD", nPlayer + 1); + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][1]); + pgi->Macro.pVal[0] = bii.pVal; + pgi->Macro.nVal[0] = 1; + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][2]); + pgi->Macro.pVal[1] = bii.pVal; + pgi->Macro.nVal[1] = 1; + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][3]); + pgi->Macro.pVal[2] = bii.pVal; + pgi->Macro.nVal[2] = 1; + nMacroCount++; + pgi++; + + pgi->nInput = GIT_MACRO_AUTO; + pgi->nType = BIT_DIGITAL; + pgi->Macro.nMode = 0; + sprintf(pgi->Macro.szName, "P%i Buttons ABCD", nPlayer + 1); + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][0]); + pgi->Macro.pVal[0] = bii.pVal; + pgi->Macro.nVal[0] = 1; + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][1]); + pgi->Macro.pVal[1] = bii.pVal; + pgi->Macro.nVal[1] = 1; + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][2]); + pgi->Macro.pVal[2] = bii.pVal; + pgi->Macro.nVal[2] = 1; + BurnDrvGetInputInfo(&bii, nNeogeoButtons[nPlayer][3]); + pgi->Macro.pVal[3] = bii.pVal; + pgi->Macro.nVal[3] = 1; + nMacroCount++; + pgi++; + } + } + + if ((nPunchx3[0] == 7) && (nKickx3[0] == 7)) + bStreetFighterLayout = true; +} + +static INT32 GameInpBlank(INT32 bDipSwitch) +{ + UINT32 i = 0; + struct GameInp* pgi = NULL; + + // Reset all inputs to undefined (even dip switches, if bDipSwitch==1) + if (GameInp == NULL) + return 1; + + // Get the targets in the library for the Input Values + for (i = 0, pgi = GameInp; i < nGameInpCount; i++, pgi++) + { + struct BurnInputInfo bii; + memset(&bii, 0, sizeof(bii)); + BurnDrvGetInputInfo(&bii, i); + if (bDipSwitch == 0 && (bii.nType & BIT_GROUP_CONSTANT)) // Don't blank the dip switches + continue; + + memset(pgi, 0, sizeof(*pgi)); // Clear input + + pgi->nType = bii.nType; // store input type + pgi->Input.pVal = bii.pVal; // store input pointer to value + + if (bii.nType & BIT_GROUP_CONSTANT) // Further initialisation for constants/DIPs + { + pgi->nInput = GIT_CONSTANT; + pgi->Input.Constant.nConst = *bii.pVal; + } + } + + for (i = 0; i < nMacroCount; i++, pgi++) + { + pgi->Macro.nMode = 0; + if (pgi->nInput == GIT_MACRO_CUSTOM) + pgi->nInput = 0; } - */ return 0; } +static INT32 GameInpInit(void) +{ + INT32 nRet = 0; + // Count the number of inputs + nGameInpCount = 0; + nMacroCount = 0; + nMaxMacro = nMaxPlayers * 52; + + for (UINT32 i = 0; i < 0x1000; i++) + { + if ((nRet = BurnDrvGetInputInfo(NULL,i))) + { + nGameInpCount = i; + break; + } + } + + // Allocate space for all the inputs + INT32 nSize = (nGameInpCount + nMaxMacro) * sizeof(struct GameInp); + GameInp = (struct GameInp*)malloc(nSize); + if (GameInp == NULL) + return 1; + memset(GameInp, 0, nSize); + + GameInpBlank(1); + + InpDIPSWResetDIPs(); + + GameInpInitMacros(); + + nAnalogSpeed = 0x0100; + + return 0; +} + + +static bool init_input(void) +{ + unsigned i; + switch_ncode = 0; + + normal_input_descriptors.clear(); + for (i = 0; i < MAX_KEYBINDS; i++) + { + keybinds[i][0] = 0xff; + keybinds[i][2] = 0; + } + for (i = 0; i < 5; i++) + { + unsigned j; + for (j = 0; j < 8; j++) + { + axibinds[i][j][0] = 0; + axibinds[i][j][1] = 0; + axibinds[i][j][2] = 0; + } + } + + GameInpInit(); + GameInpDefault(); + + // Update core option for diagnostic input + set_environment(); + // Read the user core option values + check_variables(false); + // The list of normal and macro input_descriptors are filled, we can assign all the input_descriptors to retroarch + set_input_descriptors(); + + return 0; +} + + +static bool fba_init(unsigned driver, const char *game_zip_name) +{ + nBurnDrvActive = driver; + + if (!open_archive()) + return false; + + nBurnBpp = 2; + nFMInterpolation = 3; + nInterpolation = 1; + + init_input(); + + InpDIPSWInit(); + + BurnDrvInit(); + + char input_fs[1024]; + snprintf(input_fs, sizeof(input_fs), "%s%c%s.fs", g_save_dir, slash, BurnDrvGetTextA(DRV_NAME)); + BurnStateLoad(input_fs, 0, NULL); + + int width, height; + BurnDrvGetVisibleSize(&width, &height); + nBurnPitch = width * sizeof(uint16_t); + + if (!(BurnDrvIsWorking())) + return false; + + BurnRecalcPal(); + +#ifdef FRONTEND_SUPPORTS_RGB565 + enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_RGB565; + + if(environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt)) + log_cb(RETRO_LOG_INFO, "Frontend supports RGB565 - will use that instead of XRGB1555.\n"); +#endif + + return true; +} + +#if defined(FRONTEND_SUPPORTS_RGB565) +static unsigned int HighCol16(int r, int g, int b, int /* i */) +{ + return (((r << 8) & 0xf800) | ((g << 3) & 0x07e0) | ((b >> 3) & 0x001f)); +} +#else +static unsigned int HighCol15(int r, int g, int b, int /* i */) +{ + return (((r << 7) & 0x7c00) | ((g << 2) & 0x03e0) | ((b >> 3) & 0x001f)); +} +#endif + +static void extract_basename(char *buf, const char *path, size_t size) +{ + const char *base = strrchr(path, '/'); + if (!base) + base = strrchr(path, '\\'); + if (!base) + base = path; + + if (*base == '\\' || *base == '/') + base++; + + strncpy(buf, base, size - 1); + buf[size - 1] = '\0'; + + char *ext = strrchr(buf, '.'); + if (ext) + *ext = '\0'; +} + +static void extract_directory(char *buf, const char *path, size_t size) +{ + strncpy(buf, path, size - 1); + buf[size - 1] = '\0'; + + char *base = strrchr(buf, '/'); + if (!base) + base = strrchr(buf, '\\'); + + if (base) + *base = '\0'; + else + { + buf[0] = '.'; + buf[1] = '\0'; + } +} + +static unsigned int BurnDrvGetIndexByName(const char* name) +{ + unsigned int i; + unsigned int ret = ~0U; + + for (i = 0; i < nBurnDrvCount; i++) + { + nBurnDrvActive = i; + if (!strcmp(BurnDrvGetText(DRV_NAME), name)) + { + ret = i; + break; + } + } + return ret; +} + + +bool retro_load_game(const struct retro_game_info *info) +{ + unsigned i; + char basename[128]; + const char *dir = NULL; + + if (!info) + return false; + + extract_basename(basename, info->path, sizeof(basename)); + extract_directory(g_rom_dir, info->path, sizeof(g_rom_dir)); + + // If save directory is defined use it, ... + if (environ_cb(RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY, &dir) && dir) + { + strncpy(g_save_dir, dir, sizeof(g_save_dir)); + log_cb(RETRO_LOG_INFO, "Setting save dir to %s\n", g_save_dir); + } + else + { + // ... otherwise use rom directory + strncpy(g_save_dir, g_rom_dir, sizeof(g_save_dir)); + log_cb(RETRO_LOG_ERROR, "Save dir not defined => use roms dir %s\n", g_save_dir); + } + + // If system directory is defined use it, ... + if (environ_cb(RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY, &dir) && dir) + { + strncpy(g_system_dir, dir, sizeof(g_system_dir)); + log_cb(RETRO_LOG_INFO, "Setting system dir to %s\n", g_system_dir); + } + else + { + // ... otherwise use rom directory + strncpy(g_system_dir, g_rom_dir, sizeof(g_system_dir)); + log_cb(RETRO_LOG_ERROR, "System dir not defined => use roms dir %s\n", g_system_dir); + } + + i = BurnDrvGetIndexByName(basename); + if (i < nBurnDrvCount) + { + INT32 width, height; + const char * boardrom = BurnDrvGetTextA(DRV_BOARDROM); + is_neogeo_game = (boardrom && strcmp(boardrom, "neogeo") == 0); + + // Define nMaxPlayers early; + nMaxPlayers = BurnDrvGetMaxPlayers(); + set_controller_infos(); + + set_environment(); + check_variables(true); + + pBurnSoundOut = g_audio_buf; + nBurnSoundRate = AUDIO_SAMPLERATE; + nBurnSoundLen = AUDIO_SEGMENT_LENGTH; + + if (!fba_init(i, basename)) + goto error; + + driver_inited = true; + + BurnDrvGetFullSize(&width, &height); + + g_fba_frame = (uint16_t*)malloc(width * height * sizeof(uint16_t)); + + return true; + } + +error: + log_cb(RETRO_LOG_ERROR, "[FBA] Cannot load this game.\n"); + return false; +} + +bool retro_load_game_special(unsigned, const struct retro_game_info*, size_t) +{ + return false; +} + +void retro_unload_game(void) { } +unsigned retro_get_region(void) { return RETRO_REGION_NTSC; } +void *retro_get_memory_data(unsigned) { return 0; } +size_t retro_get_memory_size(unsigned) { return 0; } +unsigned retro_api_version(void) { return RETRO_API_VERSION; } + +void retro_set_controller_port_device(unsigned port, unsigned device) +{ + if (port < nMaxPlayers && fba_devices[port] != device) + { + fba_devices[port] = device; + init_input(); + } +} + +#ifdef ANDROID +#include + +size_t mbstowcs(wchar_t *pwcs, const char *s, size_t n) +{ + if (pwcs) + return mbsrtowcs(pwcs, &s, n, NULL); + return strlen(s); +} + +size_t wcstombs(char *s, const wchar_t *pwcs, size_t n) +{ + return wcsrtombs(s, &pwcs, n, NULL); +} +#endif diff --git a/src/burner/libretro/neocdlist.cpp b/src/burner/libretro/neocdlist.cpp index e445653..764810a 100644 --- a/src/burner/libretro/neocdlist.cpp +++ b/src/burner/libretro/neocdlist.cpp @@ -322,10 +322,8 @@ static void NeoCDList_iso9660_CheckDirRecord(FILE* fp, int nSector) // Check the specified ISO, and proceed accordingly static int NeoCDList_CheckISO(TCHAR* pszFile) { - if(!pszFile) { - // error + if(!pszFile) return 0; - } // Make sure we have a valid ISO file extension... if(_tcsstr(pszFile, _T(".iso")) || _tcsstr(pszFile, _T(".ISO")) ) @@ -357,7 +355,6 @@ static int NeoCDList_CheckISO(TCHAR* pszFile) // Verify that we have indeed a valid ISO9660 MODE1/2048 if(!memcmp(IsoCheck, "CD001", 5)) { - //bprintf(PRINT_NORMAL, _T(" Standard ISO9660 Identifier Found. \n")); iso9660_VDH vdh; // Get Volume Descriptor Header @@ -368,29 +365,6 @@ static int NeoCDList_CheckISO(TCHAR* pszFile) // Check for a valid Volume Descriptor Type if(vdh.vdtype == 0x01) { -#if 0 -// This will fail on 64-bit due to differing variable sizes in the pvd struct - // Get Primary Volume Descriptor - iso9660_PVD pvd; - memset(&pvd, 0, sizeof(pvd)); - //memcpy(&pvd, iso9660_ReadOffset(fp, (2048 * 16), sizeof(pvd)), sizeof(pvd)); - iso9660_ReadOffset((unsigned char*)&pvd, fp, 2048 * 16, 1, sizeof(pvd)); - - // ROOT DIRECTORY RECORD - - // Handle Path Table Location - char szRootSector[32]; - unsigned int nRootSector = 0; - - sprintf(szRootSector, "%02X%02X%02X%02X", - pvd.root_directory_record.location_of_extent[4], - pvd.root_directory_record.location_of_extent[5], - pvd.root_directory_record.location_of_extent[6], - pvd.root_directory_record.location_of_extent[7]); - - // Convert HEX string to Decimal - sscanf(szRootSector, "%X", &nRootSector); -#else // Just read from the file directly at the correct offset (0x8000 + 0x9e for the start of the root directory record) unsigned char buffer[8]; char szRootSector[4]; @@ -400,9 +374,7 @@ static int NeoCDList_CheckISO(TCHAR* pszFile) fread(buffer, 1, 8, fp); sprintf(szRootSector, "%02x%02x%02x%02x", buffer[4], buffer[5], buffer[6], buffer[7]); - sscanf(szRootSector, "%x", &nRootSector); -#endif // Process the Root Directory Records NeoCDList_iso9660_CheckDirRecord(fp, nRootSector); @@ -410,62 +382,46 @@ static int NeoCDList_CheckISO(TCHAR* pszFile) // Path Table Records are not processed, since NeoGeo CD should not have subdirectories // ... } - } else { - - //bprintf(PRINT_NORMAL, _T(" Standard ISO9660 Identifier Not Found, cannot continue. \n")); - return 0; } + else + return 0; } - } else { - - //bprintf(PRINT_NORMAL, _T(" Couldn't open %s \n"), GetIsoPath()); - return 0; } + else + return 0; - if(fp) fclose(fp); - - } else { - - //bprintf(PRINT_NORMAL, _T(" File doesn't have a valid ISO extension [ .iso / .ISO ] \n")); - return 0; + if(fp) + fclose(fp); } + else + return 0; return 1; } // This will do everything -int GetNeoGeoCD_Identifier() +int GetNeoGeoCD_Identifier(void) { - if(!GetIsoPath() || !IsNeoGeoCD()) { + if(!GetIsoPath() || !IsNeoGeoCD()) return 0; - } // Make sure we have a valid ISO file extension... if(_tcsstr(GetIsoPath(), _T(".iso")) || _tcsstr(GetIsoPath(), _T(".ISO")) ) - { - if(_tfopen(GetIsoPath(), _T("rb"))) - { - // Read ISO and look for 68K ROM standard program header, ID is always there - // Note: This function works very quick, doesn't compromise performance :) - // it just read each sector first 264 bytes aproximately only. - NeoCDList_CheckISO(GetIsoPath()); - - } else { - - bprintf(PRINT_NORMAL, _T(" Couldn't open %s \n"), GetIsoPath()); - return 0; - } - - } else { - - bprintf(PRINT_NORMAL, _T(" File doesn't have a valid ISO extension [ .iso / .ISO ] \n")); + { + if(!fopen(GetIsoPath(), "rb")) + return 0; + // Read ISO and look for 68K ROM standard program header, ID is always there + // Note: This function works very quick, doesn't compromise performance :) + // it just read each sector first 264 bytes aproximately only. + NeoCDList_CheckISO(GetIsoPath()); + } + else return 0; - } return 1; } -int NeoCDInfo_Init() +int NeoCDInfo_Init(void) { NeoCDInfo_Exit(); return GetNeoGeoCD_Identifier(); @@ -473,30 +429,29 @@ int NeoCDInfo_Init() TCHAR* NeoCDInfo_Text(int nText) { - if(!game || !IsNeoGeoCD() || !bDrvOkay) return NULL; + if(!game || !IsNeoGeoCD()) return NULL; switch(nText) { - case DRV_NAME: return game->pszName; + case DRV_NAME: return game->pszName; case DRV_FULLNAME: return game->pszTitle; case DRV_MANUFACTURER: return game->pszCompany; - case DRV_DATE: return game->pszYear; + case DRV_DATE: return game->pszYear; } return NULL; } -int NeoCDInfo_ID() +int NeoCDInfo_ID(void) { - if(!game || !IsNeoGeoCD() || !bDrvOkay) return 0; + if(!game || !IsNeoGeoCD()) return 0; return game->id; } -void NeoCDInfo_Exit() +void NeoCDInfo_Exit(void) { - if(game) { + if(game) free(game); - game = NULL; - } + game = NULL; } #endif diff --git a/src/burner/libretro/tchar.h b/src/burner/libretro/tchar.h index ac37eb4..2e27036 100644 --- a/src/burner/libretro/tchar.h +++ b/src/burner/libretro/tchar.h @@ -39,7 +39,6 @@ typedef struct { int x, y, width, height; } RECT; #undef _fastcall #define __fastcall /*what does this correspond to?*/ #define _fastcall /*same as above - what does this correspond to?*/ -#define ANSIToTCHAR(str, foo, bar) (str) /* for Windows / Xbox 360 (below VS2010) - typedefs for missing stdint.h types such as uintptr_t?*/ @@ -47,13 +46,8 @@ typedef struct { int x, y, width, height; } RECT; #define PUF_TEXT_NO_TRANSLATE (0) #define PUF_TYPE_ERROR (1) -extern TCHAR szAppBurnVer[16]; - typedef int HWND; -extern int bDrvOkay; -extern int bRunPause; -extern bool bAlwaysProcessKeyboardInput; extern HWND hScrnWnd; // Handle to the screen window extern void InpDIPSWResetDIPs (void); diff --git a/src/burner/libretro/wii_vm.c b/src/burner/libretro/wii_vm.c index e98019f..d87af57 100755 --- a/src/burner/libretro/wii_vm.c +++ b/src/burner/libretro/wii_vm.c @@ -153,19 +153,13 @@ static PTE* StorePTE(PTEG pteg, u32 virtual, u32 physical, u8 WIMG, u8 PP, int s for (i=0; i < 8; i++) { - if (pteg[i].data[0] == p.data[0]) - { -// printf("Error: address %08x already had a PTE entry\n", virtual); -// abort(); - } + if (pteg[i].data[0] == p.data[0]) { } else if (pteg[i].valid) continue; asm volatile("tlbie %0" : : "r"(virtual)); pteg[i].data[1] = p.data[1]; pteg[i].data[0] = p.data[0]; -// if (i || secondary) -// printf("PTE for address %08x/%08x in PTEG %p index %d (%s)\n", virtual, physical, pteg, i, secondary ? "secondary" : "primary"); return pteg+i; } @@ -200,9 +194,6 @@ static PTE* insert_pte(u16 index, u32 physical, u8 WIMG, u8 PP) return pte; } -// printf("Failed to insert PTE for %p\n", VM_Base+index); -// abort(); - return NULL; } @@ -247,8 +238,6 @@ void* VM_Init(size_t VMSize, size_t MEMSize) VM_Base = (vm_page*)(0x80000000 - VMSize); pmap_max = MEMSize / PAGE_SIZE + 16; -// printf("VMSize %08x MEMSize %08x VM_Base %p pmap_max %u\n", VMSize, MEMSize, VM_Base, pmap_max); - if (VMSize <= MEMSize) { errno = EINVAL; @@ -275,8 +264,6 @@ void* VM_Init(size_t VMSize, size_t MEMSize) MEMSize += PTE_SIZE; MEM_Base = (vm_page*)memalign(PAGE_SIZE, MEMSize); -// printf("MEM_Base: %p\n", MEM_Base); - if (MEM_Base==NULL) { ISFS_Close(pagefile_fd); @@ -287,7 +274,6 @@ void* VM_Init(size_t VMSize, size_t MEMSize) tlbia(); DCZeroRange(MEM_Base, MEMSize); HTABORG = (PTE*)(((u32)MEM_Base+0xFFFF)&~0xFFFF); -// printf("HTABORG: %p\n", HTABORG); /* Attempt to make the pagefile the correct size. * it's not enough to just check for free space; @@ -295,39 +281,11 @@ void* VM_Init(size_t VMSize, size_t MEMSize) * plus we need to be able to quickly seek to any page * within the file. */ -// We'll write the pagefile later. Improves loading time. -// No difference in speed. -#if 0 - printf("Creating Nand page\n"); - ISFS_Seek(pagefile_fd, 0, SEEK_SET); - for (i=0; i MEMSize) - to_write = MEMSize; - - float percent = (float)i / VMSize * 100.0; - printf("%d%% done\r", (int)percent); - - if (ISFS_Write(pagefile_fd, MEM_Base, to_write) != to_write) - { - free(MEM_Base); - ISFS_Close(pagefile_fd); - errno = ENOSPC; - return NULL; - } -// printf("Wrote %u bytes to offset %u\n", to_write, i); - i += to_write; - - } - printf("100%% done\r"); -#endif // initial commit: map pmap_max pages to fill PTEs with valid RPNs for (index=0,v_index=0; index %u\n", index, index+(PTE_SIZE/PAGE_SIZE)); for (i=0; i<(PTE_SIZE/PAGE_SIZE); ++i,++index) phys_map[index].valid = 0; @@ -355,7 +313,6 @@ void* VM_Init(size_t VMSize, size_t MEMSize) // set SDR1 mtspr(25, MEM_VIRTUAL_TO_PHYSICAL(HTABORG)|HTABMASK); -// printf("SDR1: %08x\n", MEM_VIRTUAL_TO_PHYSICAL(HTABORG)); // enable SR asm volatile("mtsrin %0,%1" :: "r"(VM_VSID), "r"(VM_Base)); // hook DSI @@ -436,8 +393,6 @@ void VM_InvalidateAll(void) _CPU_ISR_Restore(irq); -// printf("VM was invalidated\n"); - LWP_MutexUnlock(vm_mutex); } @@ -507,7 +462,6 @@ int vm_dsi_handler(frame_context* state, u32 DSISR) ISFS_Seek(pagefile_fd, flush_v_index*PAGE_SIZE, SEEK_SET); ISFS_Write(pagefile_fd, MEM_Base+phys_index, PAGE_SIZE*pages_to_flush); -// printf("VM page %d was purged (%d)\n", phys_map[phys_index].page_index, pages_to_flush); } // fetch virtual_index if it has been previously committed @@ -515,13 +469,10 @@ int vm_dsi_handler(frame_context* state, u32 DSISR) { ISFS_Seek(pagefile_fd, virt_index*PAGE_SIZE, SEEK_SET); ISFS_Read(pagefile_fd, MEM_Base+phys_index, PAGE_SIZE); -// printf("VM page %d was fetched\n", virt_index); } else DCZeroRange(MEM_Base+phys_index, PAGE_SIZE); -// printf("VM page %u (0x%08x) replaced page %u (%p) @ %p\n", virt_index, state->DAR, phys_map[phys_index].page_index, VM_Base+phys_map[phys_index].page_index, MEM_Base+phys_index); - virt_map[virt_index].p_map_index = phys_index; phys_map[phys_index].page_index = virt_index; phys_map[phys_index].pte_index = insert_pte(virt_index, MEM_VIRTUAL_TO_PHYSICAL(MEM_Base+phys_index), 0, 0b10) - HTABORG; diff --git a/src/burner/title.h b/src/burner/title.h deleted file mode 100644 index 541263d..0000000 --- a/src/burner/title.h +++ /dev/null @@ -1,9 +0,0 @@ -// Define macros for appliction title and description -#ifdef FBA_DEBUG - #define APP_TITLE "FB Alpha [DEBUG]" -#else - #define APP_TITLE "FB Alpha" -#endif - -#define APP_DESCRIPTION "Emulator for arcade games" - diff --git a/src/cpu/a68k/fba_make68k.c b/src/cpu/a68k/fba_make68k.c index a2dcc42..b801f60 100644 --- a/src/cpu/a68k/fba_make68k.c +++ b/src/cpu/a68k/fba_make68k.c @@ -433,15 +433,6 @@ void Immediate8(void) fprintf(fp, "\t\t dec ecx ; Move range down\n"); fprintf(fp, "\t\t and ecx,byte 7 ; Mask out lower bits\n"); fprintf(fp, "\t\t inc ecx ; correct range\n"); - - - /* This takes 2 cycles, 10 bytes but has a memory read */ - /* I don't know timing for the mov command - assumed 1 */ - -#if 0 - fprintf(fp, "\t\t and ecx,byte 7\n"); - fprintf(fp, "\t\t mov ecx,[ImmTable+ECX*4]\n"); -#endif } /* @@ -477,36 +468,6 @@ void MemoryBanking(int BaseCode) /* Mask to n bits */ fprintf(fp, "\t\t and esi,[%smem_amask]\n", PREF); -#if 0 -#ifdef KEEPHIGHPC - fprintf(fp, "\t\t mov [FullPC],ESI\n"); -#endif - - /* Mask to 24 bits */ -// fprintf(fp, "\t\t and esi,0ffffffh\n"); - -#ifdef ASMBANK - /* Assembler bank switch */ - - fprintf(fp, "\t\t mov eax,esi\n"); - /* LVR - use a variable bank size */ - fprintf(fp, "\t\t shr eax," ASMBANK "\n"); - fprintf(fp, "\t\t cmp [asmbank],eax\n"); - fprintf(fp, "\t\t je OP%d_%5.5x_Bank\n",CPU,BaseCode); - - fprintf(fp, "\t\t mov [asmbank],eax\n"); -#else - /* This code is same as macro used by C core */ - - fprintf(fp, "\t\t mov ecx,esi\n"); - fprintf(fp, "\t\t mov ebx,[_cur_mrhard]\n"); - fprintf(fp, "\t\t shr ecx,9\n"); - fprintf(fp, "\t\t mov al,byte [_opcode_entry]\n"); - fprintf(fp, "\t\t cmp al,[ecx+ebx]\n"); - fprintf(fp, "\t\t je OP%d_%5.5x_Bank\n",CPU,BaseCode); -#endif -#endif - /* Call Banking Routine */ if (SavedRegs[ESI] == '-') @@ -605,25 +566,6 @@ void Completed(void) fprintf(fp, "\t\t jle near MainExit\n\n"); } FlagProcess = 0; - -#ifdef MAME_DEBUG - - /* Check for Debug Active */ - - fprintf(fp, "\n\t\t test byte [%smame_debug],byte 0xff\n", PREF); - fprintf(fp, "\t\t jnz near MainExit\n\n"); - -#endif - -#ifdef FBA_DEBUG - - fprintf(fp, "\n\t\t test byte [%smame_debug],byte 0xff\n", PREF); - fprintf(fp, "\t\t jns near .NoDebug\n"); - fprintf(fp, "\t\t call near FBADebugActive\n\n"); - fprintf(fp, ".NoDebug\n"); - -#endif - if (CheckInterrupt) { fprintf(fp,"; Check for Interrupt waiting\n\n"); @@ -4806,90 +4748,7 @@ void chk(void) } } -void chk2(void) -{ -#if 0 - int mode,sreg,size ; - int Opcode, BaseCode ; - int Dest ; - char * Label ; - - char *allow = "--2--56789a-----" ; - - for (size = 0 ; size < 2; size++) - for (mode = 0 ; mode < 8; mode++) - for (sreg = 0 ; sreg < 8; sreg++) - { - Opcode = 0x00c0 | (size<<9) | (mode<<3) | sreg; - BaseCode = Opcode & 0xfff8 ; - - if (mode == 7) - { - BaseCode |= sreg ; - } - - Dest = EAtoAMN(Opcode, FALSE); - - if (allow[Dest&0xf] != '-') - { - if (OpcodeArray[BaseCode] == -2) - { - Align(); - Label = GenerateLabel(BaseCode,0); - fprintf(fp, "%s:\n", Label ); - fprintf(fp, "\t\t add esi,byte 2\n\n"); - - TimingCycles += 10; - - fprintf(fp, "\t\t mov ebx,ecx\n"); - fprintf(fp, "\t\t shr ebx,byte 9\n"); - fprintf(fp, "\t\t and ebx,byte 7\n"); - - if (Dest < 7) - fprintf(fp, "\t\t and ecx,byte 7\n"); - - EffectiveAddressRead(Dest,'W',ECX,EAX,"----S-B",FALSE); - - if (size == 0) /* word */ - { - fprintf(fp, "\t\t movsx ebx,word [%s+EBX*4]\n",REG_DAT); - fprintf(fp, "\t\t movsx eax,ax\n"); - } - else /* long */ - fprintf(fp, "\t\t mov ebx,[%s+EBX*4]\n",REG_DAT); - - fprintf(fp, "\t\t test ebx,ebx\n"); /* is word bx < 0 */ - fprintf(fp, "\t\t jl near OP%d_%4.4x_Trap_minus\n",CPU,BaseCode); - - fprintf(fp, "\t\t cmp ebx,eax\n"); - fprintf(fp, "\t\t jg near OP%d_%4.4x_Trap_over\n",CPU,BaseCode); - Completed(); - - /* N is set if data less than zero */ - - Align(); - fprintf(fp, "OP%d_%4.4x_Trap_minus:\n",CPU,BaseCode); - fprintf(fp, "\t\t or edx,0x0080\n"); /* N flag = 80H */ - fprintf(fp, "\t\t jmp short OP%d_%4.4x_Trap_Exception\n",CPU,BaseCode); - - /* N is cleared if greated than compared number */ - - Align(); - fprintf(fp, "OP%d_%4.4x_Trap_over:\n",CPU,BaseCode); - fprintf(fp, "\t\t and edx,0x007f\n"); /* N flag = 80H */ - - fprintf(fp, "OP%d_%4.4x_Trap_Exception:\n",CPU,BaseCode); - fprintf(fp, "\t\t mov al,6\n"); - Exception(-1,0x10000+BaseCode); - Completed(); - - } - - OpcodeArray[Opcode] = BaseCode ; - } - } -#endif -} +void chk2(void) { } /* * Load Effective Address @@ -5826,15 +5685,6 @@ void illegal_opcode(void) fprintf(fp, "\t\t mov [%sillegal_op],ecx\n", PREF); fprintf(fp, "\t\t mov [%sillegal_pc],esi\n", PREF); -#if 0 -#ifdef MAME_DEBUG - fprintf(fp, "\t\t jmp ecx\n"); - fprintf(fp, "\t\t pushad\n"); - fprintf(fp, "\t\t call %sm68k_illegal_opcode\n", PREF); - fprintf(fp, "\t\t popad\n"); -#endif -#endif - Exception(4,0xFFFE); } @@ -7655,9 +7505,6 @@ void CodeSegmentBegin(void) fprintf(fp, "\t\t EXTERN %sopcode_entry\n", PREF); // fprintf(fp, "\t\t EXTERN %scur_mrhard\n", PREF); -#ifdef MAME_DEBUG - fprintf(fp, "\t\t EXTERN %sm68k_illegal_opcode\n", PREF); -#endif #ifdef OS2 fprintf(fp, "\t\t SECTION maincode USE32 FLAT CLASS=CODE\n\n"); @@ -7738,15 +7585,6 @@ void CodeSegmentBegin(void) fprintf(fp, "\t\t test dword [%s],-1\n",ICOUNT); fprintf(fp, "\t\t js short MainExit\n\n"); -#ifdef FBA_DEBUG - - fprintf(fp, "\n\t\t test byte [%smame_debug],byte 0xff\n", PREF); - fprintf(fp, "\t\t jns near .NoDebug\n"); - fprintf(fp, "\t\t call near FBADebugActive\n\n"); - fprintf(fp, ".NoDebug\n"); - -#endif - if(CPU==2) { /* 32 Bit */ @@ -7787,13 +7625,6 @@ void CodeSegmentBegin(void) /* If in Debug mode make normal SR register */ -#ifdef MAME_DEBUG - - ReadCCR('W', ECX); - fprintf(fp, "\t\t mov [%s],eax\n\n",REG_S); - -#endif - fprintf(fp, "\t\t popad\n"); fprintf(fp, "\t\t ret\n"); @@ -7954,31 +7785,6 @@ void CodeSegmentBegin(void) MemoryBanking(1); fprintf(fp, "\t\t ret\n"); - -#ifdef FBA_DEBUG - - fprintf(fp,"\n; Call FBA debugging callback\n\n"); - fprintf(fp, "FBADebugActive:"); - fprintf(fp, "\t\t mov [%s],ESI\n",REG_PC); - fprintf(fp, "\t\t mov [%s],EDX\n",REG_CCR); - fprintf(fp, "\t\t call [%sa68k_memory_intf+0]\n", PREF); - if (SavedRegs[EDX] == '-') - { - fprintf(fp, "\t\t mov EDX,[%s]\n",REG_CCR); - } - if (SavedRegs[ESI] == '-') - { - fprintf(fp, "\t\t mov ESI,[%s]\n",REG_PC); - } - if (SavedRegs[EBP] == '-') - { - fprintf(fp, "\t\t mov ebp,dword [%sOP_ROM]\n", PREF); - } - fprintf(fp,"\n; Now continue as usual\n\n"); - fprintf(fp, "\t\t ret\n"); - -#endif - } void CodeSegmentEnd(void) @@ -8062,13 +7868,6 @@ void CodeSegmentEnd(void) fprintf(fp, "\t\t DD 0100h,0101h,0900h,0901h,0140h,0141h,0940h,0941h\n"); fprintf(fp, "\t\t DD 0180h,0181h,0980h,0981h,01C0h,01C1h,09C0h,09C1h\n"); -#if 0 - fprintf(fp, "\n\nImmTable\n"); - fprintf(fp, "\t\t DD 8,1,2,3,4,5,6,7\n\n"); -#endif - - - /* Exception Timing Table */ fprintf(fp, "exception_cycles\n"); diff --git a/src/cpu/a68k/mips/fba_make68k.c b/src/cpu/a68k/mips/fba_make68k.c index 2107a99..184080d 100644 --- a/src/cpu/a68k/mips/fba_make68k.c +++ b/src/cpu/a68k/mips/fba_make68k.c @@ -3066,11 +3066,7 @@ void branchinstructions(void) void moveq(void) { -#if 0 - int Count; -#else int i, j; -#endif /* The Code */ @@ -3089,18 +3085,10 @@ void moveq(void) EffectiveAddressWrite(0, 'L', OPCODE, TRUE, "----------------SSSSSSSS----G-F-", FALSE, TRUE); Completed(); -#if 0 - /* Set OpcodeArray (Not strictly correct, since some are illegal!) */ - - for (Count = 0x7000; Count < 0x8000; Count++) { - OpcodeArray[Count] = 0x7000; - } -#else for(i = 0x0000; i <= 0x0E00; i += 0x0200) for(j = 0x0000; j <= 0x00FF; j += 0x0001) OpcodeArray[0x7000 + i + j] = 0x7000; -#endif } /* @@ -6833,10 +6821,6 @@ void CodeSegmentBegin(void) fprintf(fp, "\t\t .extern %sopcode_entry,4\n", PREF); fprintf(fp, "\t\t .extern %scur_mrhard,4\n", PREF); -#ifdef MAME_DEBUG - fprintf(fp, "\t\t .extern %sm68k_illegal_opcode,4\n", PREF); -#endif - fprintf(fp, "\n\n\n\t\t .text\n\n"); @@ -6958,18 +6942,8 @@ void CodeSegmentBegin(void) fprintf(fp, "\t\t subu %s,%s,%s\n", regnameslong[PC], regnameslong[PC], regnameslong[BASEPC]); fprintf(fp, "\t\t sw %s,%s\t\t # Save PC\n", regnameslong[PC], REG_PC); - /* If in Debug mode make normal SR register */ - -#ifdef MAME_DEBUG - - ReadCCR('W', V0); - -#else - ReadCCR('B', V0); -#endif - fprintf(fp, "\t\t lw %s,%s\n", regnameslong[T0], REG_SRH); fprintf(fp, "\t\t sw %s,%s\n", regnameslong[V0], REG_CCR); fprintf(fp, "\t\t andi %s,%s,0x20\n", regnameslong[T0], regnameslong[T0]); diff --git a/src/cpu/m68000_intf.cpp b/src/cpu/m68000_intf.cpp index eafaf26..26cc977 100644 --- a/src/cpu/m68000_intf.cpp +++ b/src/cpu/m68000_intf.cpp @@ -16,22 +16,6 @@ INT32 nSekCyclesTotal, nSekCyclesScanline, nSekCyclesSegment, nSekCyclesDone, nS INT32 nSekCPUType[SEK_MAX], nSekCycles[SEK_MAX], nSekIRQPending[SEK_MAX]; -#if defined (FBA_DEBUG) - -void (*SekDbgBreakpointHandlerRead)(UINT32, INT32); -void (*SekDbgBreakpointHandlerFetch)(UINT32, INT32); -void (*SekDbgBreakpointHandlerWrite)(UINT32, INT32); - -UINT32 (*SekDbgFetchByteDisassembler)(UINT32); -UINT32 (*SekDbgFetchWordDisassembler)(UINT32); -UINT32 (*SekDbgFetchLongDisassembler)(UINT32); - -static struct { UINT32 address; INT32 id; } BreakpointDataRead[9] = { { 0, 0 }, }; -static struct { UINT32 address; INT32 id; } BreakpointDataWrite[9] = { { 0, 0 }, }; -static struct { UINT32 address; INT32 id; } BreakpointFetch[9] = { { 0, 0 }, }; - -#endif - #if defined (EMU_A68K) static void UpdateA68KContext() { @@ -71,68 +55,6 @@ static UINT32 GetA68KUSP() } #endif -#if defined (FBA_DEBUG) - -inline static void CheckBreakpoint_R(UINT32 a, const UINT32 m) -{ - a &= m; - - for (INT32 i = 0; BreakpointDataRead[i].address; i++) { - if ((BreakpointDataRead[i].address & m) == a) { - -#ifdef EMU_A68K - UpdateA68KContext(); -#endif - - SekDbgBreakpointHandlerRead(a, BreakpointDataRead[i].id); - return; - } - } -} - -inline static void CheckBreakpoint_W(UINT32 a, const UINT32 m) -{ - a &= m; - - for (INT32 i = 0; BreakpointDataWrite[i].address; i++) { - if ((BreakpointDataWrite[i].address & m) == a) { - -#ifdef EMU_A68K - UpdateA68KContext(); -#endif - - SekDbgBreakpointHandlerWrite(a, BreakpointDataWrite[i].id); - return; - } - } -} - -inline static void CheckBreakpoint_PC() -{ - for (INT32 i = 0; BreakpointFetch[i].address; i++) { - if (BreakpointFetch[i].address == (UINT32)SekGetPC(-1)) { - -#ifdef EMU_A68K - UpdateA68KContext(); -#endif - - SekDbgBreakpointHandlerFetch(SekGetPC(-1), BreakpointFetch[i].id); - return; - } - } -} - -inline static void SingleStep_PC() -{ -#ifdef EMU_A68K - UpdateA68KContext(); -#endif - - SekDbgBreakpointHandlerFetch(SekGetPC(-1), 0); -} - -#endif - // ---------------------------------------------------------------------------- // Default memory access handlers @@ -370,115 +292,6 @@ inline static void WriteLongROM(UINT32 a, UINT32 d) pSekExt->WriteLong[(uintptr_t)pr](a, d); } -#if defined (FBA_DEBUG) - -// Breakpoint checking memory access functions -UINT8 __fastcall ReadByteBP(UINT32 a) -{ - UINT8* pr; - - a &= 0xFFFFFF; - - pr = FIND_R(a); - - CheckBreakpoint_R(a, ~0); - - if ((uintptr_t)pr >= SEK_MAXHANDLER) { - a ^= 1; - return pr[a & SEK_PAGEM]; - } - return pSekExt->ReadByte[(uintptr_t)pr](a); -} - -void __fastcall WriteByteBP(UINT32 a, UINT8 d) -{ - UINT8* pr; - - a &= 0xFFFFFF; - - pr = FIND_W(a); - - CheckBreakpoint_W(a, ~0); - - if ((uintptr_t)pr >= SEK_MAXHANDLER) { - a ^= 1; - pr[a & SEK_PAGEM] = (UINT8)d; - return; - } - pSekExt->WriteByte[(uintptr_t)pr](a, d); -} - -UINT16 __fastcall ReadWordBP(UINT32 a) -{ - UINT8* pr; - - a &= 0xFFFFFF; - - pr = FIND_R(a); - - CheckBreakpoint_R(a, ~1); - - if ((uintptr_t)pr >= SEK_MAXHANDLER) { - return BURN_UNALIGNED_READ16(pr + (a & SEK_PAGEM)); - } - return pSekExt->ReadWord[(uintptr_t)pr](a); -} - -void __fastcall WriteWordBP(UINT32 a, UINT16 d) -{ - UINT8* pr; - - a &= 0xFFFFFF; - - pr = FIND_W(a); - - CheckBreakpoint_W(a, ~1); - - if ((uintptr_t)pr >= SEK_MAXHANDLER) { - BURN_UNALIGNED_WRITE16(pr + (a & SEK_PAGEM), d); - return; - } - pSekExt->WriteWord[(uintptr_t)pr](a, d); -} - -UINT32 __fastcall ReadLongBP(UINT32 a) -{ - UINT8* pr; - - a &= 0xFFFFFF; - - pr = FIND_R(a); - - CheckBreakpoint_R(a, ~1); - - if ((uintptr_t)pr >= SEK_MAXHANDLER) { - UINT32 r = BURN_UNALIGNED_READ32(pr + (a & SEK_PAGEM)); - r = (r >> 16) | (r << 16); - return r; - } - return pSekExt->ReadLong[(uintptr_t)pr](a); -} - -void __fastcall WriteLongBP(UINT32 a, UINT32 d) -{ - UINT8* pr; - - a &= 0xFFFFFF; - - pr = FIND_W(a); - - CheckBreakpoint_W(a, ~1); - - if ((uintptr_t)pr >= SEK_MAXHANDLER) { - d = (d >> 16) | (d << 16); - BURN_UNALIGNED_WRITE32(pr + (a & SEK_PAGEM), d); - return; - } - pSekExt->WriteLong[(uintptr_t)pr](a, d); -} - -#endif - // ---------------------------------------------------------------------------- // A68K variables @@ -530,11 +343,6 @@ void __fastcall A68KWrite8 (UINT32 a,UINT8 d) { WriteByte(a,d);} void __fastcall A68KWrite16(UINT32 a,UINT16 d) { WriteWord(a,d);} void __fastcall A68KWrite32(UINT32 a,UINT32 d) { WriteLong(a,d);} -#if defined (FBA_DEBUG) -void __fastcall A68KCheckBreakpoint() { CheckBreakpoint_PC(); } -void __fastcall A68KSingleStep() { SingleStep_PC(); } -#endif - #ifdef EMU_A68K void __fastcall A68KChangePC(UINT32 pc) { @@ -558,27 +366,6 @@ UINT32 __fastcall M68KFetchByte(UINT32 a) { return (UINT32)FetchByte(a); } UINT32 __fastcall M68KFetchWord(UINT32 a) { return (UINT32)FetchWord(a); } UINT32 __fastcall M68KFetchLong(UINT32 a) { return FetchLong(a); } -#ifdef FBA_DEBUG -UINT32 __fastcall M68KReadByteBP(UINT32 a) { return (UINT32)ReadByteBP(a); } -UINT32 __fastcall M68KReadWordBP(UINT32 a) { return (UINT32)ReadWordBP(a); } -UINT32 __fastcall M68KReadLongBP(UINT32 a) { return ReadLongBP(a); } - -void __fastcall M68KWriteByteBP(UINT32 a, UINT32 d) { WriteByteBP(a, d); } -void __fastcall M68KWriteWordBP(UINT32 a, UINT32 d) { WriteWordBP(a, d); } -void __fastcall M68KWriteLongBP(UINT32 a, UINT32 d) { WriteLongBP(a, d); } - -void M68KCheckBreakpoint() { CheckBreakpoint_PC(); } -void M68KSingleStep() { SingleStep_PC(); } - -UINT32 (__fastcall *M68KReadByteDebug)(UINT32); -UINT32 (__fastcall *M68KReadWordDebug)(UINT32); -UINT32 (__fastcall *M68KReadLongDebug)(UINT32); - -void (__fastcall *M68KWriteByteDebug)(UINT32, UINT32); -void (__fastcall *M68KWriteWordDebug)(UINT32, UINT32); -void (__fastcall *M68KWriteLongDebug)(UINT32, UINT32); -#endif - void __fastcall M68KWriteByte(UINT32 a, UINT32 d) { WriteByte(a, d); } void __fastcall M68KWriteWord(UINT32 a, UINT32 d) { WriteWord(a, d); } void __fastcall M68KWriteLong(UINT32 a, UINT32 d) { WriteLong(a, d); } @@ -602,26 +389,6 @@ struct A68KInter a68k_inter_normal = { A68KRead32, // unused }; -#if defined (FBA_DEBUG) - -struct A68KInter a68k_inter_breakpoint = { - NULL, - ReadByteBP, - ReadWordBP, - ReadLongBP, - WriteByteBP, - WriteWordBP, - WriteLongBP, - A68KChangePC, - A68KFetch8, - A68KFetch16, - A68KFetch32, - A68KRead16, // unused - A68KRead32, // unused -}; - -#endif - #endif // ---------------------------------------------------------------------------- @@ -1253,18 +1020,6 @@ INT32 SekRun(const INT32 nCycles) void SekDbgDisableBreakpoints() { -#if defined FBA_DEBUG && defined EMU_M68K - m68k_set_instr_hook_callback(NULL); - - M68KReadByteDebug = M68KReadByte; - M68KReadWordDebug = M68KReadWord; - M68KReadLongDebug = M68KReadLong; - - M68KWriteByteDebug = M68KWriteByte; - M68KWriteWordDebug = M68KWriteWord; - M68KWriteLongDebug = M68KWriteLong; -#endif - #ifdef EMU_A68K a68k_memory_intf = a68k_inter_normal; #endif @@ -1272,138 +1027,6 @@ void SekDbgDisableBreakpoints() mame_debug = 0; } -#if defined (FBA_DEBUG) - -void SekDbgEnableBreakpoints() -{ - if (BreakpointDataRead[0].address || BreakpointDataWrite[0].address || BreakpointFetch[0].address) { -#if defined FBA_DEBUG && defined EMU_M68K - SekDbgDisableBreakpoints(); - - if (BreakpointFetch[0].address) { - m68k_set_instr_hook_callback(M68KCheckBreakpoint); - } - - if (BreakpointDataRead[0].address) { - M68KReadByteDebug = M68KReadByteBP; - M68KReadWordDebug = M68KReadWordBP; - M68KReadLongDebug = M68KReadLongBP; - } - - if (BreakpointDataWrite[0].address) { - M68KWriteByteDebug = M68KWriteByteBP; - M68KWriteWordDebug = M68KWriteWordBP; - M68KWriteLongDebug = M68KWriteLongBP; - } -#endif - -#ifdef EMU_A68K - a68k_memory_intf = a68k_inter_breakpoint; - if (BreakpointFetch[0].address) { - a68k_memory_intf.DebugCallback = A68KCheckBreakpoint; - mame_debug = 255; - } else { - a68k_memory_intf.DebugCallback = NULL; - mame_debug = 0; - } -#endif - } else { - SekDbgDisableBreakpoints(); - } -} - -void SekDbgEnableSingleStep() -{ -#if defined FBA_DEBUG && defined EMU_M68K - m68k_set_instr_hook_callback(M68KSingleStep); -#endif - -#ifdef EMU_A68K - a68k_memory_intf.DebugCallback = A68KSingleStep; - mame_debug = 254; -#endif -} - -INT32 SekDbgSetBreakpointDataRead(UINT32 nAddress, INT32 nIdentifier) -{ - for (INT32 i = 0; i < 8; i++) { - if (BreakpointDataRead[i].id == nIdentifier) { - - if (nAddress) { // Change breakpoint - BreakpointDataRead[i].address = nAddress; - } else { // Delete breakpoint - for ( ; i < 8; i++) { - BreakpointDataRead[i] = BreakpointDataRead[i + 1]; - } - } - - SekDbgEnableBreakpoints(); - return 0; - } - } - - // No breakpoints present, add it to the 1st slot - BreakpointDataRead[0].address = nAddress; - BreakpointDataRead[0].id = nIdentifier; - - SekDbgEnableBreakpoints(); - return 0; -} - -INT32 SekDbgSetBreakpointDataWrite(UINT32 nAddress, INT32 nIdentifier) -{ - for (INT32 i = 0; i < 8; i++) { - if (BreakpointDataWrite[i].id == nIdentifier) { - - if (nAddress) { // Change breakpoint - BreakpointDataWrite[i].address = nAddress; - } else { // Delete breakpoint - for ( ; i < 8; i++) { - BreakpointDataWrite[i] = BreakpointDataWrite[i + 1]; - } - } - - SekDbgEnableBreakpoints(); - return 0; - } - } - - // No breakpoints present, add it to the 1st slot - BreakpointDataWrite[0].address = nAddress; - BreakpointDataWrite[0].id = nIdentifier; - - SekDbgEnableBreakpoints(); - return 0; -} - -INT32 SekDbgSetBreakpointFetch(UINT32 nAddress, INT32 nIdentifier) -{ - for (INT32 i = 0; i < 8; i++) { - if (BreakpointFetch[i].id == nIdentifier) { - - if (nAddress) { // Change breakpoint - BreakpointFetch[i].address = nAddress; - } else { // Delete breakpoint - for ( ; i < 8; i++) { - BreakpointFetch[i] = BreakpointFetch[i + 1]; - } - } - - SekDbgEnableBreakpoints(); - return 0; - } - } - - // No breakpoints present, add it to the 1st slot - BreakpointFetch[0].address = nAddress; - BreakpointFetch[0].id = nIdentifier; - - SekDbgEnableBreakpoints(); - return 0; -} - -#endif - // ---------------------------------------------------------------------------- // Memory map setup diff --git a/src/cpu/m68000_intf.h b/src/cpu/m68000_intf.h index 50275e9..1765ea2 100644 --- a/src/cpu/m68000_intf.h +++ b/src/cpu/m68000_intf.h @@ -160,11 +160,7 @@ inline static INT32 SekSegmentCycles(void) #endif } -#if defined FBA_DEBUG -static INT32 SekTotalCycles(void) -#else inline static INT32 SekTotalCycles(void) -#endif { #ifdef EMU_M68K return nSekCyclesTotal + nSekCyclesToDo - m68k_ICount; diff --git a/src/cpu/m68k/m68kconf.h b/src/cpu/m68k/m68kconf.h index 10335c4..eeba7c5 100644 --- a/src/cpu/m68k/m68kconf.h +++ b/src/cpu/m68k/m68kconf.h @@ -125,11 +125,7 @@ /* If ON, CPU will call the instruction hook callback before every * instruction. */ -#ifdef FBA_DEBUG - #define M68K_INSTRUCTION_HOOK OPT_ON -#else - #define M68K_INSTRUCTION_HOOK OPT_OFF -#endif +#define M68K_INSTRUCTION_HOOK OPT_OFF #define M68K_INSTRUCTION_CALLBACK() your_instruction_hook_function() @@ -200,15 +196,6 @@ extern unsigned int (*SekDbgFetchByteDisassembler)(unsigned int); extern unsigned int (*SekDbgFetchWordDisassembler)(unsigned int); extern unsigned int (*SekDbgFetchLongDisassembler)(unsigned int); -#if defined FBA_DEBUG -extern unsigned int (__fastcall *M68KReadByteDebug)(unsigned int); -extern unsigned int (__fastcall *M68KReadWordDebug)(unsigned int); -extern unsigned int (__fastcall *M68KReadLongDebug)(unsigned int); - -extern void (__fastcall *M68KWriteByteDebug)(unsigned int, unsigned int); -extern void (__fastcall *M68KWriteWordDebug)(unsigned int, unsigned int); -extern void (__fastcall *M68KWriteLongDebug)(unsigned int, unsigned int); -#else unsigned int __fastcall M68KReadByte(unsigned int a); unsigned int __fastcall M68KReadWord(unsigned int a); unsigned int __fastcall M68KReadLong(unsigned int a); @@ -216,7 +203,6 @@ unsigned int __fastcall M68KReadLong(unsigned int a); void __fastcall M68KWriteByte(unsigned int a, unsigned int d); void __fastcall M68KWriteWord(unsigned int a, unsigned int d); void __fastcall M68KWriteLong(unsigned int a, unsigned int d); -#endif #ifdef __cplusplus } @@ -238,17 +224,6 @@ void __fastcall M68KWriteLong(unsigned int a, unsigned int d); #define m68k_read_disassembler_16(address) SekDbgFetchWordDisassembler(address) #define m68k_read_disassembler_32(address) SekDbgFetchLongDisassembler(address) -#if defined FBA_DEBUG -/* Read from anywhere */ -#define m68k_read_memory_8(address) M68KReadByteDebug(address) -#define m68k_read_memory_16(address) M68KReadWordDebug(address) -#define m68k_read_memory_32(address) M68KReadLongDebug(address) - -/* Write to anywhere */ -#define m68k_write_memory_8(address, value) M68KWriteByteDebug(address, value) -#define m68k_write_memory_16(address, value) M68KWriteWordDebug(address, value) -#define m68k_write_memory_32(address, value) M68KWriteLongDebug(address, value) -#else /* Read from anywhere */ #define m68k_read_memory_8(address) M68KReadByte(address) #define m68k_read_memory_16(address) M68KReadWord(address) @@ -258,8 +233,6 @@ void __fastcall M68KWriteLong(unsigned int a, unsigned int d); #define m68k_write_memory_8(address, value) M68KWriteByte(address, value) #define m68k_write_memory_16(address, value) M68KWriteWord(address, value) #define m68k_write_memory_32(address, value) M68KWriteLong(address, value) -#endif /* FBA_DEBUG */ - /* ======================================================================== */ /* ============================== END OF FILE ============================= */ diff --git a/src/cpu/z80/z80.cpp b/src/cpu/z80/z80.cpp index d12440e..10e4e59 100644 --- a/src/cpu/z80/z80.cpp +++ b/src/cpu/z80/z80.cpp @@ -111,10 +111,6 @@ static Z80ReadOpArgHandler Z80CPUReadOpArg; unsigned char Z80Vector = 0; -#define VERBOSE 0 - -#define LOG(x) //do { if (VERBOSE) logerror x; } while (0) - /* execute main opcodes inside a big switch statement */ #ifndef BIG_SWITCH #define BIG_SWITCH 1 @@ -804,7 +800,6 @@ Z80_INLINE UINT32 ARG16(void) * RETN ***************************************************************/ #define RETN { \ - LOG(("Z80 #%d RETN IFF1:%d IFF2:%d\n", cpu_getactivecpu(), IFF1, IFF2)); \ POP( pc ); \ change_pc(PCD); \ IFF1 = IFF2; \ @@ -2126,10 +2121,7 @@ OP(xycb,fd) { L = SET(7, RM(EA) ); WM( EA,L ); } /* SET 7,L=(XY+o) */ OP(xycb,fe) { WM( EA, SET(7,RM(EA)) ); } /* SET 7,(XY+o) */ OP(xycb,ff) { A = SET(7, RM(EA) ); WM( EA,A ); } /* SET 7,A=(XY+o) */ -OP(illegal,1) { -// logerror("Z80 #%d ill. opcode $%02x $%02x\n", -// cpu_getactivecpu(), cpu_readop((PCD-1)&0xffff), cpu_readop(PCD)); -} +OP(illegal,1) { } /********************************************************** * IX register related opcodes (DD prefix) @@ -2713,11 +2705,7 @@ OP(fd,fd) { illegal_1(); op_fd(); } /* DB FD */ OP(fd,fe) { illegal_1(); op_fe(); } /* DB FD */ OP(fd,ff) { illegal_1(); op_ff(); } /* DB FD */ -OP(illegal,2) -{ -// logerror("Z80 #%d ill. opcode $ed $%02x\n", -// cpu_getactivecpu(), cpu_readop((PCD-1)&0xffff)); -} +OP(illegal,2) { } /********************************************************** * special opcodes (ED prefix) @@ -3317,23 +3305,12 @@ static void take_interrupt(void) /* Clear both interrupt flip flops */ IFF1 = IFF2 = 0; - /* Daisy chain mode? If so, call the requesting device */ -// if (Z80.daisy) -// irq_vector = z80daisy_call_ack_device(Z80.daisy); - - /* else call back the cpu interface to retrieve the vector */ -// else -// irq_vector = (*Z80.irq_callback)(0); - -// LOG(("Z80 #%d single int. irq_vector $%02x\n", cpu_getactivecpu(), irq_vector)); - /* Interrupt mode 2. Call [Z80.i:databyte] */ if( IM == 2 ) { irq_vector = (irq_vector & 0xff) | (I << 8); PUSH( pc ); RM16( irq_vector, &Z80.pc ); -// LOG(("Z80 #%d IM2 [$%04x] = $%04x\n",cpu_getactivecpu() , irq_vector, PCD)); /* CALL opcode timing */ z80_ICount -= cc[Z80_TABLE_op][0xcd]; } @@ -3341,7 +3318,6 @@ static void take_interrupt(void) /* Interrupt mode 1. RST 38h */ if( IM == 1 ) { -// LOG(("Z80 #%d IM1 $0038\n",cpu_getactivecpu() )); PUSH( pc ); PCD = 0x0038; /* RST $38 + 'interrupt latency' cycles */ @@ -3352,7 +3328,6 @@ static void take_interrupt(void) /* Interrupt mode 0. We check for CALL and JP instructions, */ /* if neither of these were found we assume a 1 byte opcode */ /* was placed on the databus */ -// LOG(("Z80 #%d IM0 $%04x\n",cpu_getactivecpu() , irq_vector)); switch (irq_vector & 0xff0000) { case 0xcd0000: /* call */ @@ -3521,7 +3496,6 @@ int Z80Execute(int cycles) /* to just check here */ if (Z80.nmi_pending) { -// LOG(("Z80 #%d take NMI\n", cpu_getactivecpu())); PRVPC = (UINT32)-1; /* there isn't a valid previous program counter */ LEAVE_HALT; /* Check if processor was halted */ @@ -3656,452 +3630,7 @@ int ActiveZ80GetDE() return Z80.de.w.l; } -int ActiveZ80GetHL() +int ActiveZ80GetHL(void) { return Z80.hl.w.l; } - -#if 0 -/**************************************************************************** - * Processor initialization - ****************************************************************************/ -static void z80_init(int index, int clock, const void *config, int (*irqcallback)(int)) -{ - int i, p; - - /* setup cycle tables */ - cc[Z80_TABLE_op] = cc_op; - cc[Z80_TABLE_cb] = cc_cb; - cc[Z80_TABLE_ed] = cc_ed; - cc[Z80_TABLE_xy] = cc_xy; - cc[Z80_TABLE_xycb] = cc_xycb; - cc[Z80_TABLE_ex] = cc_ex; - -#if BIG_FLAGS_ARRAY - if( !SZHVC_add || !SZHVC_sub ) - { - int oldval, newval, val; - UINT8 *padd, *padc, *psub, *psbc; - /* allocate big flag arrays once */ - SZHVC_add = (UINT8 *)malloc(2*256*256); - SZHVC_sub = (UINT8 *)malloc(2*256*256); - if( !SZHVC_add || !SZHVC_sub ) - { - fatalerror("Z80: failed to allocate 2 * 128K flags arrays!!!"); - } - padd = &SZHVC_add[ 0*256]; - padc = &SZHVC_add[256*256]; - psub = &SZHVC_sub[ 0*256]; - psbc = &SZHVC_sub[256*256]; - for (oldval = 0; oldval < 256; oldval++) - { - for (newval = 0; newval < 256; newval++) - { - /* add or adc w/o carry set */ - val = newval - oldval; - *padd = (newval) ? ((newval & 0x80) ? SF : 0) : ZF; - *padd |= (newval & (YF | XF)); /* undocumented flag bits 5+3 */ - if( (newval & 0x0f) < (oldval & 0x0f) ) *padd |= HF; - if( newval < oldval ) *padd |= CF; - if( (val^oldval^0x80) & (val^newval) & 0x80 ) *padd |= VF; - padd++; - - /* adc with carry set */ - val = newval - oldval - 1; - *padc = (newval) ? ((newval & 0x80) ? SF : 0) : ZF; - *padc |= (newval & (YF | XF)); /* undocumented flag bits 5+3 */ - if( (newval & 0x0f) <= (oldval & 0x0f) ) *padc |= HF; - if( newval <= oldval ) *padc |= CF; - if( (val^oldval^0x80) & (val^newval) & 0x80 ) *padc |= VF; - padc++; - - /* cp, sub or sbc w/o carry set */ - val = oldval - newval; - *psub = NF | ((newval) ? ((newval & 0x80) ? SF : 0) : ZF); - *psub |= (newval & (YF | XF)); /* undocumented flag bits 5+3 */ - if( (newval & 0x0f) > (oldval & 0x0f) ) *psub |= HF; - if( newval > oldval ) *psub |= CF; - if( (val^oldval) & (oldval^newval) & 0x80 ) *psub |= VF; - psub++; - - /* sbc with carry set */ - val = oldval - newval - 1; - *psbc = NF | ((newval) ? ((newval & 0x80) ? SF : 0) : ZF); - *psbc |= (newval & (YF | XF)); /* undocumented flag bits 5+3 */ - if( (newval & 0x0f) >= (oldval & 0x0f) ) *psbc |= HF; - if( newval >= oldval ) *psbc |= CF; - if( (val^oldval) & (oldval^newval) & 0x80 ) *psbc |= VF; - psbc++; - } - } - } -#endif - for (i = 0; i < 256; i++) - { - p = 0; - if( i&0x01 ) ++p; - if( i&0x02 ) ++p; - if( i&0x04 ) ++p; - if( i&0x08 ) ++p; - if( i&0x10 ) ++p; - if( i&0x20 ) ++p; - if( i&0x40 ) ++p; - if( i&0x80 ) ++p; - SZ[i] = i ? i & SF : ZF; - SZ[i] |= (i & (YF | XF)); /* undocumented flag bits 5+3 */ - SZ_BIT[i] = i ? i & SF : ZF | PF; - SZ_BIT[i] |= (i & (YF | XF)); /* undocumented flag bits 5+3 */ - SZP[i] = SZ[i] | ((p & 1) ? 0 : PF); - SZHV_inc[i] = SZ[i]; - if( i == 0x80 ) SZHV_inc[i] |= VF; - if( (i & 0x0f) == 0x00 ) SZHV_inc[i] |= HF; - SZHV_dec[i] = SZ[i] | NF; - if( i == 0x7f ) SZHV_dec[i] |= VF; - if( (i & 0x0f) == 0x0f ) SZHV_dec[i] |= HF; - } - - state_save_register_item("z80", index, Z80.prvpc.w.l); - state_save_register_item("z80", index, Z80.pc.w.l); - state_save_register_item("z80", index, Z80.sp.w.l); - state_save_register_item("z80", index, Z80.af.w.l); - state_save_register_item("z80", index, Z80.bc.w.l); - state_save_register_item("z80", index, Z80.de.w.l); - state_save_register_item("z80", index, Z80.hl.w.l); - state_save_register_item("z80", index, Z80.ix.w.l); - state_save_register_item("z80", index, Z80.iy.w.l); - state_save_register_item("z80", index, Z80.af2.w.l); - state_save_register_item("z80", index, Z80.bc2.w.l); - state_save_register_item("z80", index, Z80.de2.w.l); - state_save_register_item("z80", index, Z80.hl2.w.l); - state_save_register_item("z80", index, Z80.r); - state_save_register_item("z80", index, Z80.r2); - state_save_register_item("z80", index, Z80.iff1); - state_save_register_item("z80", index, Z80.iff2); - state_save_register_item("z80", index, Z80.halt); - state_save_register_item("z80", index, Z80.im); - state_save_register_item("z80", index, Z80.i); - state_save_register_item("z80", index, Z80.nmi_state); - state_save_register_item("z80", index, Z80.nmi_pending); - state_save_register_item("z80", index, Z80.irq_state); - state_save_register_item("z80", index, Z80.after_ei); - - /* Reset registers to their initial values */ - memset(&Z80, 0, sizeof(Z80)); - Z80.daisy = config; - Z80.irq_callback = irqcallback; - IX = IY = 0xffff; /* IX and IY are FFFF after a reset! */ - F = ZF; /* Zero flag is set */ - - Z80Vector = 0; -} - -/**************************************************************************** - * Do a reset - ****************************************************************************/ -static void z80_reset(void) -{ - PC = 0x0000; - I = 0; - R = 0; - R2 = 0; - Z80.nmi_state = Z80_CLEAR_LINE; - Z80.nmi_pending = FALSE; - Z80.irq_state = Z80_CLEAR_LINE; - Z80.after_ei = FALSE; - - if (Z80.daisy) - z80daisy_reset(Z80.daisy); - - change_pc(PCD); -} - -static void z80_exit(void) -{ -#if BIG_FLAGS_ARRAY - if (SZHVC_add) free(SZHVC_add); - SZHVC_add = NULL; - if (SZHVC_sub) free(SZHVC_sub); - SZHVC_sub = NULL; -#endif -} - -/**************************************************************************** - * Execute 'cycles' T-states. Return number of T-states really executed - ****************************************************************************/ -static int z80_execute(int cycles) -{ - z80_ICount = cycles; - - /* check for NMIs on the way in; they can only be set externally */ - /* via timers, and can't be dynamically enabled, so it is safe */ - /* to just check here */ - if (Z80.nmi_pending) - { - LOG(("Z80 #%d take NMI\n", cpu_getactivecpu())); - PRVPC = -1; /* there isn't a valid previous program counter */ - LEAVE_HALT; /* Check if processor was halted */ - - IFF1 = 0; - PUSH( pc ); - PCD = 0x0066; - change_pc(PCD); - z80_ICount -= 11; - Z80.nmi_pending = FALSE; - } - - do - { - /* check for IRQs before each instruction */ - if (Z80.irq_state != Z80_CLEAR_LINE && IFF1 && !Z80.after_ei) - take_interrupt(); - Z80.after_ei = FALSE; - - PRVPC = PCD; - CALL_DEBUGGER(PCD); - R++; - EXEC_INLINE(op,ROP()); - } while( z80_ICount > 0 ); - - return cycles - z80_ICount; -} - -/**************************************************************************** - * Burn 'cycles' T-states. Adjust R register for the lost time - ****************************************************************************/ -static void z80_burn(int cycles) -{ - if( cycles > 0 ) - { - /* NOP takes 4 cycles per instruction */ - int n = (cycles + 3) / 4; - R += n; - z80_ICount -= 4 * n; - } -} - -/**************************************************************************** - * Get all registers in given buffer - ****************************************************************************/ -static void z80_get_context (void *dst) -{ - if( dst ) - *(Z80_Regs*)dst = Z80; -} - -/**************************************************************************** - * Set all registers to given values - ****************************************************************************/ -static void z80_set_context (void *src) -{ - if( src ) - Z80 = *(Z80_Regs*)src; - change_pc(PCD); -} - -/**************************************************************************** - * Set IRQ line state - ****************************************************************************/ -static void set_irq_line(int irqline, int state) -{ - if (irqline == INPUT_LINE_NMI) - { - /* mark an NMI pending on the rising edge */ - if (Z80.nmi_state == Z80_CLEAR_LINE && state != Z80_CLEAR_LINE) - Z80.nmi_pending = TRUE; - Z80.nmi_state = state; - } - else - { - /* update the IRQ state via the daisy chain */ - Z80.irq_state = state; - if (Z80.daisy) - Z80.irq_state = z80daisy_update_irq_state(Z80.daisy); - - /* the main execute loop will take the interrupt */ - } -} - -/************************************************************************** - * Generic set_info - **************************************************************************/ - -static void z80_set_info(UINT32 state, cpuinfo *info) -{ - switch (state) - { - /* --- the following bits of info are set as 64-bit signed integers --- */ - case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: set_irq_line(INPUT_LINE_NMI, info->i); break; - case CPUINFO_INT_INPUT_STATE + 0: set_irq_line(0, info->i); break; - - case CPUINFO_INT_PC: PC = info->i; change_pc(PCD); break; - case CPUINFO_INT_REGISTER + Z80_PC: Z80.pc.w.l = info->i; break; - case CPUINFO_INT_SP: SP = info->i; break; - case CPUINFO_INT_REGISTER + Z80_SP: Z80.sp.w.l = info->i; break; - case CPUINFO_INT_REGISTER + Z80_A: Z80.af.b.h = info->i; break; - case CPUINFO_INT_REGISTER + Z80_B: Z80.bc.b.h = info->i; break; - case CPUINFO_INT_REGISTER + Z80_C: Z80.bc.b.l = info->i; break; - case CPUINFO_INT_REGISTER + Z80_D: Z80.de.b.h = info->i; break; - case CPUINFO_INT_REGISTER + Z80_E: Z80.de.b.l = info->i; break; - case CPUINFO_INT_REGISTER + Z80_H: Z80.hl.b.h = info->i; break; - case CPUINFO_INT_REGISTER + Z80_L: Z80.hl.b.l = info->i; break; - case CPUINFO_INT_REGISTER + Z80_AF: Z80.af.w.l = info->i; break; - case CPUINFO_INT_REGISTER + Z80_BC: Z80.bc.w.l = info->i; break; - case CPUINFO_INT_REGISTER + Z80_DE: Z80.de.w.l = info->i; break; - case CPUINFO_INT_REGISTER + Z80_HL: Z80.hl.w.l = info->i; break; - case CPUINFO_INT_REGISTER + Z80_IX: Z80.ix.w.l = info->i; break; - case CPUINFO_INT_REGISTER + Z80_IY: Z80.iy.w.l = info->i; break; - case CPUINFO_INT_REGISTER + Z80_R: Z80.r = info->i; Z80.r2 = info->i & 0x80; break; - case CPUINFO_INT_REGISTER + Z80_I: Z80.i = info->i; break; - case CPUINFO_INT_REGISTER + Z80_AF2: Z80.af2.w.l = info->i; break; - case CPUINFO_INT_REGISTER + Z80_BC2: Z80.bc2.w.l = info->i; break; - case CPUINFO_INT_REGISTER + Z80_DE2: Z80.de2.w.l = info->i; break; - case CPUINFO_INT_REGISTER + Z80_HL2: Z80.hl2.w.l = info->i; break; - case CPUINFO_INT_REGISTER + Z80_IM: Z80.im = info->i; break; - case CPUINFO_INT_REGISTER + Z80_IFF1: Z80.iff1 = info->i; break; - case CPUINFO_INT_REGISTER + Z80_IFF2: Z80.iff2 = info->i; break; - case CPUINFO_INT_REGISTER + Z80_HALT: Z80.halt = info->i; break; - - /* --- the following bits of info are set as pointers to data or functions --- */ - case CPUINFO_PTR_Z80_CYCLE_TABLE + Z80_TABLE_op: cc[Z80_TABLE_op] = info->p; break; - case CPUINFO_PTR_Z80_CYCLE_TABLE + Z80_TABLE_cb: cc[Z80_TABLE_cb] = info->p; break; - case CPUINFO_PTR_Z80_CYCLE_TABLE + Z80_TABLE_ed: cc[Z80_TABLE_ed] = info->p; break; - case CPUINFO_PTR_Z80_CYCLE_TABLE + Z80_TABLE_xy: cc[Z80_TABLE_xy] = info->p; break; - case CPUINFO_PTR_Z80_CYCLE_TABLE + Z80_TABLE_xycb: cc[Z80_TABLE_xycb] = info->p; break; - case CPUINFO_PTR_Z80_CYCLE_TABLE + Z80_TABLE_ex: cc[Z80_TABLE_ex] = info->p; break; - } -} - - - -/************************************************************************** - * Generic get_info - **************************************************************************/ - -void z80_get_info(UINT32 state, cpuinfo *info) -{ - switch (state) - { - /* --- the following bits of info are returned as 64-bit signed integers --- */ - case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(Z80); break; - case CPUINFO_INT_INPUT_LINES: info->i = 1; break; - case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0xff; break; - case CPUINFO_INT_ENDIANNESS: info->i = CPU_IS_LE; break; - case CPUINFO_INT_CLOCK_MULTIPLIER: info->i = 1; break; - case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break; - case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 1; break; - case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 4; break; - case CPUINFO_INT_MIN_CYCLES: info->i = 1; break; - case CPUINFO_INT_MAX_CYCLES: info->i = 16; break; - - case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 8; break; - case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 16; break; - case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_PROGRAM: info->i = 0; break; - case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; - case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; - case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_DATA: info->i = 0; break; - case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 8; break; - case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_IO: info->i = 16; break; - case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break; - - case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: info->i = Z80.nmi_state; break; - case CPUINFO_INT_INPUT_STATE + 0: info->i = Z80.irq_state; break; - - case CPUINFO_INT_PREVIOUSPC: info->i = Z80.prvpc.w.l; break; - - case CPUINFO_INT_PC: info->i = PCD; break; - case CPUINFO_INT_REGISTER + Z80_PC: info->i = Z80.pc.w.l; break; - case CPUINFO_INT_SP: info->i = SPD; break; - case CPUINFO_INT_REGISTER + Z80_SP: info->i = Z80.sp.w.l; break; - case CPUINFO_INT_REGISTER + Z80_A: info->i = Z80.af.b.h; break; - case CPUINFO_INT_REGISTER + Z80_B: info->i = Z80.bc.b.h; break; - case CPUINFO_INT_REGISTER + Z80_C: info->i = Z80.bc.b.l; break; - case CPUINFO_INT_REGISTER + Z80_D: info->i = Z80.de.b.h; break; - case CPUINFO_INT_REGISTER + Z80_E: info->i = Z80.de.b.l; break; - case CPUINFO_INT_REGISTER + Z80_H: info->i = Z80.hl.b.h; break; - case CPUINFO_INT_REGISTER + Z80_L: info->i = Z80.hl.b.l; break; - case CPUINFO_INT_REGISTER + Z80_AF: info->i = Z80.af.w.l; break; - case CPUINFO_INT_REGISTER + Z80_BC: info->i = Z80.bc.w.l; break; - case CPUINFO_INT_REGISTER + Z80_DE: info->i = Z80.de.w.l; break; - case CPUINFO_INT_REGISTER + Z80_HL: info->i = Z80.hl.w.l; break; - case CPUINFO_INT_REGISTER + Z80_IX: info->i = Z80.ix.w.l; break; - case CPUINFO_INT_REGISTER + Z80_IY: info->i = Z80.iy.w.l; break; - case CPUINFO_INT_REGISTER + Z80_R: info->i = (Z80.r & 0x7f) | (Z80.r2 & 0x80); break; - case CPUINFO_INT_REGISTER + Z80_I: info->i = Z80.i; break; - case CPUINFO_INT_REGISTER + Z80_AF2: info->i = Z80.af2.w.l; break; - case CPUINFO_INT_REGISTER + Z80_BC2: info->i = Z80.bc2.w.l; break; - case CPUINFO_INT_REGISTER + Z80_DE2: info->i = Z80.de2.w.l; break; - case CPUINFO_INT_REGISTER + Z80_HL2: info->i = Z80.hl2.w.l; break; - case CPUINFO_INT_REGISTER + Z80_IM: info->i = Z80.im; break; - case CPUINFO_INT_REGISTER + Z80_IFF1: info->i = Z80.iff1; break; - case CPUINFO_INT_REGISTER + Z80_IFF2: info->i = Z80.iff2; break; - case CPUINFO_INT_REGISTER + Z80_HALT: info->i = Z80.halt; break; - - /* --- the following bits of info are returned as pointers to data or functions --- */ - case CPUINFO_PTR_SET_INFO: info->setinfo = z80_set_info; break; - case CPUINFO_PTR_GET_CONTEXT: info->getcontext = z80_get_context; break; - case CPUINFO_PTR_SET_CONTEXT: info->setcontext = z80_set_context; break; - case CPUINFO_PTR_INIT: info->init = z80_init; break; - case CPUINFO_PTR_RESET: info->reset = z80_reset; break; - case CPUINFO_PTR_EXIT: info->exit = z80_exit; break; - case CPUINFO_PTR_EXECUTE: info->execute = z80_execute; break; - case CPUINFO_PTR_BURN: info->burn = NULL; break; -#ifdef ENABLE_DEBUGGER - case CPUINFO_PTR_DISASSEMBLE: info->disassemble = z80_dasm; break; -#endif - case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &z80_ICount; break; - case CPUINFO_PTR_Z80_CYCLE_TABLE + Z80_TABLE_op: info->p = (void *)cc[Z80_TABLE_op]; break; - case CPUINFO_PTR_Z80_CYCLE_TABLE + Z80_TABLE_cb: info->p = (void *)cc[Z80_TABLE_cb]; break; - case CPUINFO_PTR_Z80_CYCLE_TABLE + Z80_TABLE_ed: info->p = (void *)cc[Z80_TABLE_ed]; break; - case CPUINFO_PTR_Z80_CYCLE_TABLE + Z80_TABLE_xy: info->p = (void *)cc[Z80_TABLE_xy]; break; - case CPUINFO_PTR_Z80_CYCLE_TABLE + Z80_TABLE_xycb: info->p = (void *)cc[Z80_TABLE_xycb]; break; - case CPUINFO_PTR_Z80_CYCLE_TABLE + Z80_TABLE_ex: info->p = (void *)cc[Z80_TABLE_ex]; break; - - /* --- the following bits of info are returned as NULL-terminated strings --- */ - case CPUINFO_STR_NAME: strcpy(info->s, "Z80"); break; - case CPUINFO_STR_CORE_FAMILY: strcpy(info->s, "Zilog Z80"); break; - case CPUINFO_STR_CORE_VERSION: strcpy(info->s, "3.7"); break; - case CPUINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break; - case CPUINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Juergen Buchmueller, all rights reserved."); break; - - case CPUINFO_STR_FLAGS: - sprintf(info->s, "%c%c%c%c%c%c%c%c", - Z80.af.b.l & 0x80 ? 'S':'.', - Z80.af.b.l & 0x40 ? 'Z':'.', - Z80.af.b.l & 0x20 ? '5':'.', - Z80.af.b.l & 0x10 ? 'H':'.', - Z80.af.b.l & 0x08 ? '3':'.', - Z80.af.b.l & 0x04 ? 'P':'.', - Z80.af.b.l & 0x02 ? 'N':'.', - Z80.af.b.l & 0x01 ? 'C':'.'); - break; - - case CPUINFO_STR_REGISTER + Z80_PC: sprintf(info->s, "PC:%04X", Z80.pc.w.l); break; - case CPUINFO_STR_REGISTER + Z80_SP: sprintf(info->s, "SP:%04X", Z80.sp.w.l); break; - case CPUINFO_STR_REGISTER + Z80_A: sprintf(info->s, "~A:%02X", Z80.af.b.h); break; - case CPUINFO_STR_REGISTER + Z80_B: sprintf(info->s, "~B:%02X", Z80.bc.b.h); break; - case CPUINFO_STR_REGISTER + Z80_C: sprintf(info->s, "~C:%02X", Z80.bc.b.l); break; - case CPUINFO_STR_REGISTER + Z80_D: sprintf(info->s, "~D:%02X", Z80.de.b.h); break; - case CPUINFO_STR_REGISTER + Z80_E: sprintf(info->s, "~E:%02X", Z80.de.b.l); break; - case CPUINFO_STR_REGISTER + Z80_H: sprintf(info->s, "~H:%02X", Z80.hl.b.h); break; - case CPUINFO_STR_REGISTER + Z80_L: sprintf(info->s, "~L:%02X", Z80.hl.b.l); break; - case CPUINFO_STR_REGISTER + Z80_AF: sprintf(info->s, "AF:%04X", Z80.af.w.l); break; - case CPUINFO_STR_REGISTER + Z80_BC: sprintf(info->s, "BC:%04X", Z80.bc.w.l); break; - case CPUINFO_STR_REGISTER + Z80_DE: sprintf(info->s, "DE:%04X", Z80.de.w.l); break; - case CPUINFO_STR_REGISTER + Z80_HL: sprintf(info->s, "HL:%04X", Z80.hl.w.l); break; - case CPUINFO_STR_REGISTER + Z80_IX: sprintf(info->s, "IX:%04X", Z80.ix.w.l); break; - case CPUINFO_STR_REGISTER + Z80_IY: sprintf(info->s, "IY:%04X", Z80.iy.w.l); - break; - case CPUINFO_STR_REGISTER + Z80_R: sprintf(info->s, "R:%02X", (Z80.r & 0x7f) | (Z80.r2 & 0x80)); break; - case CPUINFO_STR_REGISTER + Z80_I: sprintf(info->s, "I:%02X", Z80.i); break; - case CPUINFO_STR_REGISTER + Z80_AF2: sprintf(info->s, "AF2:%04X", Z80.af2.w.l); break; - case CPUINFO_STR_REGISTER + Z80_BC2: sprintf(info->s, "BC2:%04X", Z80.bc2.w.l); break; - case CPUINFO_STR_REGISTER + Z80_DE2: sprintf(info->s, "DE2:%04X", Z80.de2.w.l); break; - case CPUINFO_STR_REGISTER + Z80_HL2: sprintf(info->s, "HL2:%04X", Z80.hl2.w.l); break; - case CPUINFO_STR_REGISTER + Z80_IM: sprintf(info->s, "IM:%X", Z80.im); break; - case CPUINFO_STR_REGISTER + Z80_IFF1: sprintf(info->s, "IFF1:%X", Z80.iff1); break; - case CPUINFO_STR_REGISTER + Z80_IFF2: sprintf(info->s, "IFF2:%X", Z80.iff2); break; - case CPUINFO_STR_REGISTER + Z80_HALT: sprintf(info->s, "HALT:%X", Z80.halt); break; - } -} - -#endif diff --git a/src/cpu/z80/z80daisy.cpp b/src/cpu/z80/z80daisy.cpp index 2a0cd4c..e781996 100644 --- a/src/cpu/z80/z80daisy.cpp +++ b/src/cpu/z80/z80daisy.cpp @@ -11,7 +11,6 @@ #define CLEAR_LINE 0 #define ASSERT_LINE 1 - void z80daisy_reset(const struct z80_irq_daisy_chain *daisy) { /* loop over all devices and call their reset function */ @@ -52,8 +51,6 @@ int z80daisy_call_ack_device(const struct z80_irq_daisy_chain *daisy) if (state & Z80_DAISY_INT) return (*daisy->irq_ack)(daisy->param); } - -// logerror("z80daisy_call_ack_device: failed to find an device to ack!\n"); return 0; } @@ -72,6 +69,4 @@ void z80daisy_call_reti_device(const struct z80_irq_daisy_chain *daisy) return; } } - -// logerror("z80daisy_call_reti_device: failed to find an device to reti!\n"); } diff --git a/src/cpu/z80_intf.cpp b/src/cpu/z80_intf.cpp index fe17daa..68a857b 100644 --- a/src/cpu/z80_intf.cpp +++ b/src/cpu/z80_intf.cpp @@ -83,14 +83,12 @@ UINT8 __fastcall ZetReadOp(UINT32 a) { // check mem map UINT8 * pr = ZetCPUContext[nOpenedCPU]->pZetMemMap[0x200 | (a >> 8)]; - if (pr != NULL) { + if (pr != NULL) return pr[a & 0xff]; - } // check read handler - if (ZetCPUContext[nOpenedCPU]->ZetRead != NULL) { + if (ZetCPUContext[nOpenedCPU]->ZetRead != NULL) return ZetCPUContext[nOpenedCPU]->ZetRead(a); - } return 0; } @@ -99,14 +97,12 @@ UINT8 __fastcall ZetReadOpArg(UINT32 a) { // check mem map UINT8 * pr = ZetCPUContext[nOpenedCPU]->pZetMemMap[0x300 | (a >> 8)]; - if (pr != NULL) { + if (pr != NULL) return pr[a & 0xff]; - } // check read handler - if (ZetCPUContext[nOpenedCPU]->ZetRead != NULL) { + if (ZetCPUContext[nOpenedCPU]->ZetRead != NULL) return ZetCPUContext[nOpenedCPU]->ZetRead(a); - } return 0; } @@ -188,9 +184,8 @@ INT32 ZetInit(INT32 nCPU) nZetCyclesDone[nCPU] = 0; nZ80ICount[nCPU] = 0; - for (INT32 j = 0; j < (0x0100 * 4); j++) { + for (INT32 j = 0; j < (0x0100 * 4); j++) ZetCPUContext[nCPU]->pZetMemMap[j] = NULL; - } } nZetCyclesTotal = 0; @@ -211,54 +206,6 @@ INT32 ZetInit(INT32 nCPU) return 0; } -#if 0 -INT32 ZetInit(INT32 nCount) -{ - nOpenedCPU = -1; - - ZetCPUContext = (struct ZetExt *) malloc(nCount * sizeof(ZetExt)); - if (ZetCPUContext == NULL) return 1; - memset(ZetCPUContext, 0, nCount * sizeof(ZetExt)); - - Z80Init(); - - for (INT32 i = 0; i < nCount; i++) { - ZetCPUContext[i].ZetIn = ZetDummyInHandler; - ZetCPUContext[i].ZetOut = ZetDummyOutHandler; - ZetCPUContext[i].ZetRead = ZetDummyReadHandler; - ZetCPUContext[i].ZetWrite = ZetDummyWriteHandler; - ZetCPUContext[i].BusReq = 0; - // TODO: Z80Init() will set IX IY F regs with default value, so get them ... - Z80GetContext(&ZetCPUContext[i].reg); - - nZetCyclesDone[i] = 0; - nZ80ICount[i] = 0; - - for (INT32 j = 0; j < (0x0100 * 4); j++) { - ZetCPUContext[i].pZetMemMap[j] = NULL; - } - } - - nZetCyclesTotal = 0; - - Z80SetIOReadHandler(ZetReadIO); - Z80SetIOWriteHandler(ZetWriteIO); - Z80SetProgramReadHandler(ZetReadProg); - Z80SetProgramWriteHandler(ZetWriteProg); - Z80SetCPUOpReadHandler(ZetReadOp); - Z80SetCPUOpArgReadHandler(ZetReadOpArg); - - nCPUCount = nCount % MAX_Z80; - - nHasZet = nCount; - - for (INT32 i = 0; i < nCount; i++) - CpuCheatRegister(0x0004, i); - - return 0; -} -#endif - UINT8 ZetReadByte(UINT16 address) { if (nOpenedCPU < 0) return 0; @@ -333,9 +280,7 @@ void ZetRunAdjust(INT32 /*nCycles*/) { } -void ZetRunEnd(void) -{ -} +void ZetRunEnd(void) { } // This function will make an area callback ZetRead/ZetWrite INT32 ZetMemCallback(INT32 nStart, INT32 nEnd, INT32 nMode) @@ -343,20 +288,22 @@ INT32 ZetMemCallback(INT32 nStart, INT32 nEnd, INT32 nMode) UINT8 cStart = (nStart >> 8); UINT8 **pMemMap = ZetCPUContext[nOpenedCPU]->pZetMemMap; - for (UINT16 i = cStart; i <= (nEnd >> 8); i++) { - switch (nMode) { - case 0: - pMemMap[0 + i] = NULL; - break; - case 1: - pMemMap[0x100 + i] = NULL; - break; - case 2: - pMemMap[0x200 + i] = NULL; - pMemMap[0x300 + i] = NULL; - break; - } - } + for (UINT16 i = cStart; i <= (nEnd >> 8); i++) + { + switch (nMode) + { + case 0: + pMemMap[0 + i] = NULL; + break; + case 1: + pMemMap[0x100 + i] = NULL; + break; + case 2: + pMemMap[0x200 + i] = NULL; + pMemMap[0x300 + i] = NULL; + break; + } + } return 0; } @@ -365,10 +312,10 @@ void ZetExit(void) { Z80Exit(); - for (INT32 i = 0; i < MAX_Z80; i++) { - if (ZetCPUContext[i]) { + for (INT32 i = 0; i < MAX_Z80; i++) + { + if (ZetCPUContext[i]) BurnFree (ZetCPUContext[i]); - } } nCPUCount = 0; @@ -410,25 +357,22 @@ INT32 ZetMapArea(INT32 nStart, INT32 nEnd, INT32 nMode, UINT8 *Mem) UINT8 cStart = (nStart >> 8); UINT8 **pMemMap = ZetCPUContext[nOpenedCPU]->pZetMemMap; - for (UINT16 i = cStart; i <= (nEnd >> 8); i++) { - switch (nMode) { - case 0: { - pMemMap[0 + i] = Mem + ((i - cStart) << 8); - break; - } - - case 1: { - pMemMap[0x100 + i] = Mem + ((i - cStart) << 8); - break; - } - - case 2: { - pMemMap[0x200 + i] = Mem + ((i - cStart) << 8); - pMemMap[0x300 + i] = Mem + ((i - cStart) << 8); - break; - } - } - } + for (UINT16 i = cStart; i <= (nEnd >> 8); i++) + { + switch (nMode) + { + case 0: + pMemMap[0 + i] = Mem + ((i - cStart) << 8); + break; + case 1: + pMemMap[0x100 + i] = Mem + ((i - cStart) << 8); + break; + case 2: + pMemMap[0x200 + i] = Mem + ((i - cStart) << 8); + pMemMap[0x300 + i] = Mem + ((i - cStart) << 8); + break; + } + } return 0; } @@ -441,7 +385,8 @@ INT32 ZetMapArea(INT32 nStart, INT32 nEnd, INT32 nMode, UINT8 *Mem01, UINT8 *Mem if (nMode != 2) return 1; - for (UINT16 i = cStart; i <= (nEnd >> 8); i++) { + for (UINT16 i = cStart; i <= (nEnd >> 8); i++) + { pMemMap[0x200 + i] = Mem01 + ((i - cStart) << 8); pMemMap[0x300 + i] = Mem02 + ((i - cStart) << 8); } @@ -506,20 +451,21 @@ INT32 ZetScan(INT32 nAction) void ZetSetIRQLine(const INT32 line, const INT32 status) { - switch ( status ) { - case ZET_IRQSTATUS_NONE: - Z80SetIrqLine(0, 0); - break; - case ZET_IRQSTATUS_ACK: - Z80SetIrqLine(line, 1); - break; - case ZET_IRQSTATUS_AUTO: - Z80SetIrqLine(line, 1); - Z80Execute(0); - Z80SetIrqLine(0, 0); - Z80Execute(0); - break; - } + switch ( status ) + { + case ZET_IRQSTATUS_NONE: + Z80SetIrqLine(0, 0); + break; + case ZET_IRQSTATUS_ACK: + Z80SetIrqLine(line, 1); + break; + case ZET_IRQSTATUS_AUTO: + Z80SetIrqLine(line, 1); + Z80Execute(0); + Z80SetIrqLine(0, 0); + Z80Execute(0); + break; + } } void ZetSetVector(INT32 vector) @@ -527,12 +473,9 @@ void ZetSetVector(INT32 vector) Z80Vector = vector; } -UINT8 ZetGetVector() -{ - return Z80Vector; -} +UINT8 ZetGetVector(void) { return Z80Vector; } -INT32 ZetNmi() +INT32 ZetNmi(void) { Z80SetIrqLine(Z80_INPUT_LINE_NMI, 1); Z80Execute(0); diff --git a/src/dep/generated/driverlist.h b/src/dep/generated/driverlist.h deleted file mode 100644 index b6e86ae..0000000 --- a/src/dep/generated/driverlist.h +++ /dev/null @@ -1,12192 +0,0 @@ -// This file was generated by src/dep/scripts/gamelist.pl (perl 5.024001) - -// Declaration of all drivers -#define DRV extern struct BurnDriver -#if defined FBA_DEBUG -DRV BurnDrvDdungeon; // Game Room [NOT WORKING] -DRV BurnDrvDrgw3; // IGS [NOT WORKING] -#endif -DRV BurnDrvDsoccr94; -#if defined FBA_DEBUG -DRV BurnDrvDwex; // IGS [NOT WORKING] -DRV BurnDrvFuncube2; // Namco [NOT WORKING] -DRV BurnDrvFuncube4; // Namco [NOT WORKING] -DRV BurnDrvhappy6; // IGS [NOT WORKING] -DRV BurnDrvJockeyc; // [Seta] (Visco license) [NOT WORKING] -DRV BurnDrvKengo; // Irem [NOT WORKING] -DRV BurnDrvKiwame; // Athena [NOT WORKING] -DRV BurnDrvMonsterz; // Nihon [NOT WORKING] -#endif -DRV BurnDrvMWalk; -#if defined FBA_DEBUG -DRV BurnDrvNbbatman; // Irem [NOT WORKING] -DRV BurnDrvpce_benkei; // Sunsoft [NOT WORKING] -DRV BurnDrvpce_cdsys; // Hudson [NOT WORKING] -DRV BurnDrvpce_gecd; // Games Express [NOT WORKING] -DRV BurnDrvpce_nikopun; // NHK Enterprise [NOT WORKING] -DRV BurnDrvpce_pcdenj; // Hudson [NOT WORKING] -DRV BurnDrvpce_ptennis; // Hudson [NOT WORKING] -DRV BurnDrvpce_scdsys; // Hudson [NOT WORKING] -DRV BurnDrvpce_tennokoe; // Hudson [NOT WORKING] -DRV BurnDrvpce_xserd; // Masiya [NOT WORKING] -DRV BurnDrvtg_airzonk; // Hudson Soft [NOT WORKING] -DRV BurnDrvtg_cdsys; // NEC [NOT WORKING] -DRV BurnDrvtg_scdsys; // NEC [NOT WORKING] -DRV BurnDrvVictnine; // Taito [NOT WORKING] -#endif -DRV BurnDrvgames88; -DRV BurnDrv99lstwar; -DRV BurnDrv99lstwara; -DRV BurnDrv99lstwark; -DRV BurnDrvGtmra; -DRV BurnDrvGtmr; -DRV BurnDrvmd_12in1; -DRV BurnDrvmd_13mahjan; -DRV BurnDrvmd_16tongnk; -DRV BurnDrvmd_16ton; -DRV BurnDrvmd_16zhan; -DRV BurnDrvsgx_1941; -DRV BurnDrvCps1941u; -DRV BurnDrvCps1941; -DRV BurnDrvCps1941j; -DRV BurnDrvCps1941r1; -DRV BurnDrvNineteen42b; -DRV BurnDrvNineteen42a; -DRV BurnDrvNineteen42abl; -DRV BurnDrvNineteen42; -DRV BurnDrvNineteen42w; -DRV BurnDrvpce_1943kai; -DRV BurnDrvNineteen43kai; -DRV BurnDrvNineteen43ja; -DRV BurnDrvNineteen43j; -DRV BurnDrvNineteen43b; -DRV BurnDrvNineteen43b2; -DRV BurnDrvNineteen43; -DRV BurnDrvNineteen43u; -DRV BurnDrvCps1944j; -DRV BurnDrvCps1944d; -DRV BurnDrvCps1944ad; -DRV BurnDrvCps1944; -DRV BurnDrvBgareggabl; -DRV BurnDrv1945kiii; -DRV BurnDrvCps19xxa; -DRV BurnDrvCps19xxjr1; -DRV BurnDrvCps19xxd; -DRV BurnDrvCps19xx; -DRV BurnDrvCps19xxb; -DRV BurnDrvCps19xxh; -DRV BurnDrvCps19xxj; -DRV BurnDrvmd_2psymmac; -DRV BurnDrvbb2020; -DRV BurnDrvbba2020; -DRV BurnDrvbbh2020; -DRV BurnDrvmd_2020bbj; -DRV BurnDrvpce_21emon; -DRV BurnDrv3Countb; -DRV BurnDrvmd_3in1fwt; -DRV BurnDrvmd_3in1rmb; -DRV BurnDrvmd_3ninja; -DRV BurnDrvEnraya4; -DRV BurnDrvFourin1; -DRV BurnDrvmd_4in1pb; -DRV BurnDrv4play; -DRV BurnDrvFourdwarrio; -DRV BurnDrvmd_6pak; -DRV BurnDrvSixhundred; -DRV BurnDrvmd_688atsub; -DRV BurnDrvOrdi7; -DRV BurnDrvEighthundredfath; -DRV BurnDrvmd_bugslife; -DRV BurnDrvmd_bugslifea; -DRV BurnDrvmd_dinotale; -DRV BurnDrvmd_aresshmd; -DRV BurnDrvAbcopj; -DRV BurnDrvAbcop; -DRV BurnDrvAd2083; -DRV BurnDrvmd_aaharima; -DRV BurnDrvmd_aaahhrm; -DRV BurnDrvmd_aaahhrmu; -DRV BurnDrvabscam; -DRV BurnDrvAceattac; -DRV BurnDrvAceattaca; -DRV BurnDrvAcrobatm; -DRV BurnDrvActfancrj; -DRV BurnDrvActfancr1; -DRV BurnDrvActfancr; -DRV BurnDrvmd_action52; -DRV BurnDrvmd_action52a; -DRV BurnDrvAFighter; -DRV BurnDrvmd_ar; -DRV BurnDrvmd_addfamv; -DRV BurnDrvmd_advdaisn; -DRV BurnDrvpce_advislnd; -DRV BurnDrvHatena; -DRV BurnDrvmd_adveboy; -DRV BurnDrvtg_aeroblst; -DRV BurnDrvpce_aeroblst; -DRV BurnDrvmd_aeroblst; -DRV BurnDrvAerofgt; -DRV BurnDrvAerofgtb; -DRV BurnDrvAerofgtc; -DRV BurnDrvsonicwi2; -DRV BurnDrvsonicwi3; -DRV BurnDrvmd_aero; -DRV BurnDrvmd_aerop; -DRV BurnDrvmd_aerou; -DRV BurnDrvmd_aero2; -DRV BurnDrvmd_aero2u; -DRV BurnDrvmd_aerobiz; -DRV BurnDrvmd_aerobizs; -DRV BurnDrvAburner; -DRV BurnDrvAburner2; -DRV BurnDrvpce_aburner2; -DRV BurnDrvmd_aburner2; -DRV BurnDrvmd_aburner2j; -DRV BurnDrvSuperbon; -DRV BurnDrvaodk; -DRV BurnDrvAgress; -DRV BurnDrvAgressb; -DRV BurnDrvKoshien; -DRV BurnDrvAirattck; -DRV BurnDrvAirattcka; -DRV BurnDrvAirbustrb; -DRV BurnDrvAirbustrj; -DRV BurnDrvmd_airbustr; -DRV BurnDrvAirbustr; -DRV BurnDrvmd_airdiverj; -DRV BurnDrvmd_airdiver; -DRV BurnDrvAirduel; -DRV BurnDrvAirGallet; -DRV BurnDrvAirGalleth; -DRV BurnDrvAirGalletj; -DRV BurnDrvAirGalletk; -DRV BurnDrvAirGallett; -DRV BurnDrvAirGalletu; -DRV BurnDrvmd_airmanag; -DRV BurnDrvmd_airmang2; -DRV BurnDrvAirwolf; -DRV BurnDrvAirwolfa; -DRV BurnDrvAjax; -DRV BurnDrvAjaxj; -DRV BurnDrvAkumajoun; -DRV BurnDrvAkumajou; -DRV BurnDrvmd_akumajo; -DRV BurnDrvmd_aladdin2; -DRV BurnDrvAlcon; -DRV BurnDrvsgx_aldynes; -DRV BurnDrvmd_alexkiddk; -DRV BurnDrvmd_alexkidd1; -DRV BurnDrvmd_alexkidd; -DRV BurnDrvmd_alexkiddj; -DRV BurnDrvmd_alexkiddu; -DRV BurnDrvAlexkidd1; -DRV BurnDrvAlexkidd; -DRV BurnDrvalibaba; -DRV BurnDrvAlienchac; -DRV BurnDrvAliencha; -DRV BurnDrvtg_acrush; -DRV BurnDrvpce_acrush; -DRV BurnDrvAliensec; -DRV BurnDrvmd_aliensol; -DRV BurnDrvmd_aliensolj; -DRV BurnDrvAstormj; -DRV BurnDrvAstormu; -DRV BurnDrvAstorm3; -DRV BurnDrvAstorm; -DRV BurnDrvmd_astorm; -DRV BurnDrvAliensynjo; -DRV BurnDrvAliensyn2; -DRV BurnDrvAliensyn3; -DRV BurnDrvAliensyn; -DRV BurnDrvAliensyn5; -DRV BurnDrvAliensynj; -DRV BurnDrvAliensyn7; -DRV BurnDrvCpsAvspa; -DRV BurnDrvCpsAvspd; -DRV BurnDrvCpsAvsp; -DRV BurnDrvCpsAvsph; -DRV BurnDrvCpsAvspj; -DRV BurnDrvCpsAvspu; -DRV BurnDrvmd_alien3a; -DRV BurnDrvmd_alien3; -DRV BurnDrvAliensa; -DRV BurnDrvAliensj; -DRV BurnDrvAliensj2; -DRV BurnDrvAliensu; -DRV BurnDrvAliens; -DRV BurnDrvAliens2; -DRV BurnDrvAliens3; -DRV BurnDrvmd_alisiad; -DRV BurnDrvmd_alisiadj; -DRV BurnDrvmd_alisiadu; -DRV BurnDrvAlpham2; -DRV BurnDrvAlpham2p; -DRV BurnDrvAltbeastbl; -DRV BurnDrvmd_altbeast; -DRV BurnDrvAltbeast2; -DRV BurnDrvAltbeast4; -DRV BurnDrvAltbeast5; -DRV BurnDrvAltbeast6; -DRV BurnDrvAltbeast; -DRV BurnDrvAmbush; -DRV BurnDrvAmbushh; -DRV BurnDrvAmbushj; -DRV BurnDrvAmbushv; -DRV BurnDrvAnteaterg; -DRV BurnDrvmd_amerglad; -DRV BurnDrvAmidar; -DRV BurnDrvAmidarb; -DRV BurnDrvAmidar1; -DRV BurnDrvAmidaro; -DRV BurnDrvAmidars; -DRV BurnDrvAmidaru; -DRV BurnDrvAmigo; -DRV BurnDrvmd_agassi; -DRV BurnDrvmd_agassiu; -DRV BurnDrvmd_agassiup; -DRV BurnDrvandrodun; -DRV BurnDrvAngelkds; -DRV BurnDrvmd_animania; -DRV BurnDrvmd_animaniau; -DRV BurnDrvpce_ankoku; -DRV BurnDrvmd_anotherw; -DRV BurnDrvAnteater; -DRV BurnDrvpce_aoiblink; -DRV BurnDrvmd_genchohi; -DRV BurnDrvAponow; -DRV BurnDrvpce_appgateb; -DRV BurnDrvmd_aqrenk; -DRV BurnDrvAquajackj; -DRV BurnDrvAquajacku; -DRV BurnDrvAquajack; -DRV BurnDrvAquarium; -DRV BurnDrvarabian; -DRV BurnDrvarabiana; -DRV BurnDrvAracnis; -DRV BurnDrvArbalest; -DRV BurnDrvmd_arcadecl; -DRV BurnDrvmd_arcadegh; -DRV BurnDrvArcadia; -DRV BurnDrvmd_archrivl; -DRV BurnDrvmd_arcusj; -DRV BurnDrvmd_arcus; -DRV BurnDrvCpsArea88r; -DRV BurnDrvCpsArea88; -DRV BurnDrvLwingsjp; -DRV BurnDrvRygarj; -DRV BurnDrvarkgcbl; -DRV BurnDrvarkmcubl; -DRV BurnDrvarkanoidjb2; -DRV BurnDrvarkmcubla; -DRV BurnDrvark1ball; -DRV BurnDrvark1balla; -DRV BurnDrvarkangc; -DRV BurnDrvarkangc2; -DRV BurnDrvarknoidj; -DRV BurnDrvarkatayt; -DRV BurnDrvarktayt2; -DRV BurnDrvarknoidu; -DRV BurnDrvarknoiuo; -DRV BurnDrvarkanoid; -DRV BurnDrvArknid2b; -DRV BurnDrvArknid2j; -DRV BurnDrvArknid2u; -DRV BurnDrvArknoid2; -DRV BurnDrvArmedf; -DRV BurnDrvArmedff; -DRV BurnDrvpce_armedf; -DRV BurnDrvBatridc; -DRV BurnDrvBatrid; -DRV BurnDrvBatridk; -DRV BurnDrvBatridu; -DRV BurnDrvBatridja; -DRV BurnDrvBatridta; -DRV BurnDrvBatridj; -DRV BurnDrvArmorcar; -DRV BurnDrvArmorcar2; -DRV BurnDrvCpsArmwara; -DRV BurnDrvCpsArmwaru1; -DRV BurnDrvCpsArmwar1d; -DRV BurnDrvCpsArmwarr1; -DRV BurnDrvCpsArmwar; -DRV BurnDrvCpsArmwaru; -DRV BurnDrvmd_arnoldp; -DRV BurnDrvmd_arrow; -DRV BurnDrvmd_arrow1; -DRV BurnDrvmd_artalive; -DRV BurnDrvmd_aof; -DRV BurnDrvmd_aofp; -DRV BurnDrvmd_aofu; -DRV BurnDrvAof; -DRV BurnDrvAof2a; -DRV BurnDrvAof2; -DRV BurnDrvAof3k; -DRV BurnDrvAof3; -DRV BurnDrvmd_arttool; -DRV BurnDrvpce_arttool; -DRV BurnDrvAshnojoe; -DRV BurnDrvAshuraj; -DRV BurnDrvAshurau; -DRV BurnDrvAshura; -DRV BurnDrvmd_asscreed; -DRV BurnDrvmd_leynos; -DRV BurnDrvmd_astergre; -DRV BurnDrvmd_astergreu; -DRV BurnDrvmd_asterpg; -DRV BurnDrvmd_asterpgp; -DRV BurnDrvAstrians; -DRV BurnDrvAsukaj; -DRV BurnDrvAsuka; -DRV BurnDrvAsurabld; -DRV BurnDrvAsurabus; -DRV BurnDrvAsideral; -DRV BurnDrvAtehate; -DRV BurnDrvacitya; -DRV BurnDrvAtomboya; -DRV BurnDrvAtomboy; -DRV BurnDrvAtomicp; -DRV BurnDrvAtompunk; -DRV BurnDrvmd_atomroboj; -DRV BurnDrvmd_atomrobo; -DRV BurnDrvpce_atomrobo; -DRV BurnDrvmd_atomrun; -DRV BurnDrvmd_atomrunu; -DRV BurnDrvmd_atptour; -DRV BurnDrvmd_atptourp7; -DRV BurnDrvmd_atptourp6; -DRV BurnDrvmd_atptourp5; -DRV BurnDrvmd_atptourp4; -DRV BurnDrvmd_atptourp3; -DRV BurnDrvmd_atptourp2; -DRV BurnDrvmd_atptourp1; -DRV BurnDrvmd_atptouru; -DRV BurnDrvAurailj; -DRV BurnDrvAurail1; -DRV BurnDrvAurail; -DRV BurnDrvmd_austrarl; -DRV BurnDrvpce_avpoker; -DRV BurnDrvmd_avatar; -DRV BurnDrvAvengers; -DRV BurnDrvAvenger2; -DRV BurnDrvmd_awepossm; -DRV BurnDrvmd_awepossmp; -DRV BurnDrvmd_aworg; -DRV BurnDrvmd_awspro; -DRV BurnDrvmd_smgp2; -DRV BurnDrvmd_smgp2u; -DRV BurnDrvAztarac; -DRV BurnDrvAzurian; -DRV BurnDrvBonkadv; -DRV BurnDrvBcstry; -DRV BurnDrvBcstrya; -DRV BurnDrvmd_bob; -DRV BurnDrvmd_bobp; -DRV BurnDrvmd_babyboom1; -DRV BurnDrvmd_babyboom2; -DRV BurnDrvmd_babyboom; -DRV BurnDrvmd_babyd; -DRV BurnDrvmd_babydo; -DRV BurnDrvbackfirt; -DRV BurnDrvBssoccer; -DRV BurnDrvmd_backtof3; -DRV BurnDrvmd_backtof3u; -DRV BurnDrvBackfire; -#if defined FBA_DEBUG -DRV BurnDrvBackfirea; // Set inputs to \"Joystick\" in test mode [NOT WORKING] -#endif -DRV BurnDrvBaddudes; -DRV BurnDrvmd_badomen; -#if defined FBA_DEBUG -DRV BurnDrvBagmanmc; // Bad Colours [NOT WORKING] -#endif -DRV BurnDrvBagmanm2; -DRV BurnDrvmd_bahamuts; -DRV BurnDrvbakatono; -DRV BurnDrvBakubrkr; -DRV BurnDrvBallboy; -DRV BurnDrvmd_balljack; -DRV BurnDrvtg_ballistx; -DRV BurnDrvpce_ballistx; -DRV BurnDrvBallbros; -DRV BurnDrvmd_ballz3d; -DRV BurnDrvb2buster; -DRV BurnDrvbangbead; -DRV BurnDrvbangbedp; -DRV BurnDrvbankp; -DRV BurnDrvBaraduke; -DRV BurnDrvmd_barbiesm; -DRV BurnDrvmd_barbvac; -DRV BurnDrvmd_bk2p; -DRV BurnDrvmd_bk3; -DRV BurnDrvmd_bk3p; -DRV BurnDrvpce_baribari; -DRV BurnDrvmd_barkley; -DRV BurnDrvmd_barkley2; -DRV BurnDrvmd_barkley2p; -DRV BurnDrvmd_barney; -DRV BurnDrvpce_barunba; -DRV BurnDrvmd_barver; -DRV BurnDrvBstars2; -DRV BurnDrvBstarsh; -DRV BurnDrvBstars; -DRV BurnDrvmd_bassmc; -DRV BurnDrvmd_bassmpro; -DRV BurnDrvpce_batman; -DRV BurnDrvmd_batman; -DRV BurnDrvmd_batmanj; -DRV BurnDrvmd_batmanu; -DRV BurnDrvmd_batmanrj; -DRV BurnDrvmd_batmanf; -DRV BurnDrvBatman2; -DRV BurnDrvmd_batmanrn; -DRV BurnDrvBatsugun; -DRV BurnDrvBatsugna; -DRV BurnDrvBatsugunSP; -DRV BurnDrvsgx_battlace; -DRV BurnDrvBattleBkraidj; -DRV BurnDrvBattleBkraiduj; -DRV BurnDrvBattleBkraidu; -DRV BurnDrvBchopper; -DRV BurnDrvCpsBatcira; -DRV BurnDrvCpsBatcird; -DRV BurnDrvCpsBatcir; -DRV BurnDrvCpsBatcirj; -DRV BurnDrvflipshot; -DRV BurnDrvBgareghk; -DRV BurnDrvBgaregtw; -DRV BurnDrvBgaregga; -DRV BurnDrvBgaregnv; -DRV BurnDrvBgaregcn; -DRV BurnDrvBgaregt2; -DRV BurnDrvmd_battlyui; -DRV BurnDrvBtlKRoad; -DRV BurnDrvpce_batloder; -DRV BurnDrvmd_btlmania; -DRV BurnDrvmd_btlmanid; -DRV BurnDrvAtlantisb; -DRV BurnDrvAtlantis; -DRV BurnDrvAtlantis2; -DRV BurnDrvtg_batlroyl; -DRV BurnDrvBsharkj; -DRV BurnDrvBsharkjjs; -DRV BurnDrvBsharku; -DRV BurnDrvBshark; -DRV BurnDrvmd_battlesq; -DRV BurnDrvmd_battlems; -DRV BurnDrvmd_btech; -DRV BurnDrvmd_btoadsdd; -DRV BurnDrvmd_btoads; -DRV BurnDrvBayroute1; -DRV BurnDrvBayroutej; -DRV BurnDrvBayroute; -DRV BurnDrvpce_beball; -DRV BurnDrvmd_beastwj; -DRV BurnDrvmd_beastw; -DRV BurnDrvmd_beastbal; -DRV BurnDrvbeastf; -DRV BurnDrvmd_beavis; -DRV BurnDrvmd_beavisu; -DRV BurnDrvmd_beavisup; -DRV BurnDrvDdp2100c; -DRV BurnDrvDdp2100hk; -DRV BurnDrvDdp2100j; -DRV BurnDrvDdp2100k; -DRV BurnDrvDdp2100t; -DRV BurnDrvDdp2100; -DRV BurnDrvDdp2101c; -DRV BurnDrvDdp2101hk; -DRV BurnDrvDdp2101j; -DRV BurnDrvDdp2101k; -DRV BurnDrvDdp2101t; -DRV BurnDrvDdp2101; -DRV BurnDrvDdp2c; -DRV BurnDrvDdp2hk; -DRV BurnDrvDdp2j; -DRV BurnDrvDdp2k; -DRV BurnDrvDdp2t; -DRV BurnDrvDdp2; -DRV BurnDrvBlswhstl; -DRV BurnDrvmd_ben10; -#if defined FBA_DEBUG -DRV BurnDrvpce_benkei1; // no comment [NOT WORKING] -#endif -DRV BurnDrvBestbest; -DRV BurnDrvmd_bestofp; -DRV BurnDrvmd_bestof; -DRV BurnDrvBestri; -DRV BurnDrvmd_beyoasis; -DRV BurnDrvmd_beyoasisp; -DRV BurnDrvmd_beyondzt; -DRV BurnDrvCpsPunisherbz; -DRV BurnDrvmd_bibleadv; -DRV BurnDrvBigbang; -DRV BurnDrvbigbucks; -DRV BurnDrvBigkarnk; -DRV BurnDrvBigtwin; -DRV BurnDrvpce_bikkuri; -DRV BurnDrvpce_bikkuri1; -DRV BurnDrvmd_billwlsh; -DRV BurnDrvmd_billwl95; -DRV BurnDrvmd_bimini; -DRV BurnDrvmd_biohazrb; -DRV BurnDrvmd_biohazrbp; -DRV BurnDrvBioship; -DRV BurnDrvBiomtoya; -DRV BurnDrvBiomtoy; -DRV BurnDrvbionicc; -DRV BurnDrvbionicc1; -DRV BurnDrvbionicc2; -DRV BurnDrvbirdiy; -DRV BurnDrvmd_sailormn; -DRV BurnDrvBlkdrgonb; -DRV BurnDrvBlkdrgon; -DRV BurnDrvBlkheart; -DRV BurnDrvBlkheartj; -DRV BurnDrvBlkhole; -DRV BurnDrvBlktiger; -DRV BurnDrvBlktigerb1; -DRV BurnDrvblktigerb2; -DRV BurnDrvBlktigera; -DRV BurnDrvBmaster; -DRV BurnDrvmd_bladeven; -DRV BurnDrvBlandia; -DRV BurnDrvBlandiap; -DRV BurnDrvmd_bmaster2; -DRV BurnDrvmd_bmaster2p; -DRV BurnDrvBlazeon; -DRV BurnDrvtg_blazlazr; -DRV BurnDrvblazstar; -DRV BurnDrvarkblock; -DRV BurnDrvarkbloc2; -DRV BurnDrvBlockbl; -DRV BurnDrvBlockj; -DRV BurnDrvBlock; -DRV BurnDrvBlockjoy; -DRV BurnDrvBlockcar; -DRV BurnDrvBlockgal; -DRV BurnDrvBlockhl; -DRV BurnDrvBlckoutj; -DRV BurnDrvBlockout; -DRV BurnDrvBlckout2; -DRV BurnDrvmd_blockb; -DRV BurnDrvmd_blockout; -DRV BurnDrvpce_blodia; -DRV BurnDrvBlmbycar; -DRV BurnDrvBlmbycaru; -DRV BurnDrvBloodbro; -DRV BurnDrvBloodbroa; -DRV BurnDrvBloodbrob; -DRV BurnDrvBloodwar; -DRV BurnDrvmd_bloodsht; -DRV BurnDrvtg_blodwolf; -DRV BurnDrvBloxeed; -DRV BurnDrvBlox16b; -DRV BurnDrvmd_bluealma; -DRV BurnDrvBlueprnj; -DRV BurnDrvBlueprnt; -DRV BurnDrvbjourney; -DRV BurnDrvbwcasino; -DRV BurnDrvBoblbobl; -#if defined FBA_DEBUG -DRV BurnDrvBoblbobl2; // no comment [NOT WORKING] -#endif -DRV BurnDrvpce_bodycon2; -DRV BurnDrvmd_bodycob; -DRV BurnDrvmd_bodyco; -DRV BurnDrvmd_bodycop; -DRV BurnDrvmd_bodycop5; -DRV BurnDrvmd_bodycop4; -DRV BurnDrvmd_bodycop3; -DRV BurnDrvmd_bodycop2; -DRV BurnDrvBodyslam; -DRV BurnDrvBombjack; -DRV BurnDrvBombjac2; -DRV BurnDrvBombjackt; -DRV BurnDrvBombkick; -DRV BurnDrvBombkicka; -DRV BurnDrvmd_bomber; -DRV BurnDrvBomber; -DRV BurnDrvBombrman; -DRV BurnDrvBbmanwj; -DRV BurnDrvBbmanw; -DRV BurnDrvtg_bombman; -DRV BurnDrvpce_bombman; -DRV BurnDrvpce_bombmn93; -DRV BurnDrvtg_bombmn93; -DRV BurnDrvpce_bombmn93s; -DRV BurnDrvpce_bombmn94; -DRV BurnDrvpce_bombmnub; -DRV BurnDrvBjtwin; -DRV BurnDrvBjtwina; -DRV BurnDrvmd_bomboy; -DRV BurnDrvmd_bnzabros1; -DRV BurnDrvmd_bnzabros; -DRV BurnDrvmd_bnzabrosu; -DRV BurnDrvBongo; -DRV BurnDrvtg_bonk3; -DRV BurnDrvtg_bonk; -DRV BurnDrvtg_bonk2; -DRV BurnDrvmd_bonkers; -DRV BurnDrvmd_bonkersp5; -DRV BurnDrvmd_bonkersp4; -DRV BurnDrvmd_bonkersp3; -DRV BurnDrvmd_bonkersp2; -DRV BurnDrvmd_bonkersp1; -DRV BurnDrvBonzeadvu; -DRV BurnDrvBonzeadv; -DRV BurnDrvBonzeadvo; -DRV BurnDrvBoobhack; -DRV BurnDrvmd_booger; -DRV BurnDrvmd_boogeru; -DRV BurnDrvBoogwinga; -DRV BurnDrvBoogwing; -DRV BurnDrvmd_boogie; -DRV BurnDrvBottom9n; -DRV BurnDrvBottom9; -DRV BurnDrvpce_lostsunh; -DRV BurnDrvBouldashj; -DRV BurnDrvBouldash; -DRV BurnDrvBballs; -DRV BurnDrvmd_boxinglg; -DRV BurnDrvtg_boxyboy; -DRV BurnDrvmd_bsteam3; -DRV BurnDrvBrain; -DRV BurnDrvmd_dracula; -DRV BurnDrvmd_draculau; -DRV BurnDrvtg_bravoman; -DRV BurnDrvpce_breakin; -DRV BurnDrvbreakers; -DRV BurnDrvbreakrev; -DRV BurnDrvmd_bretth; -DRV BurnDrvBreywood; -DRV BurnDrvmd_brianlar1; -DRV BurnDrvmd_brianlar; -DRV BurnDrvmd_brianl96a; -DRV BurnDrvmd_brianl96; -DRV BurnDrvbrix; -DRV BurnDrvmd_brutal; -DRV BurnDrvmd_brutalu; -DRV BurnDrvmd_bubba; -DRV BurnDrvmd_bubbap; -DRV BurnDrvmd_bubbau; -DRV BurnDrvBubl2000; -DRV BurnDrvmd_bubblesq; -DRV BurnDrvmd_bubblesqu; -DRV BurnDrvBublbobl; -DRV BurnDrvBub68705; -DRV BurnDrvBublbob1; -DRV BurnDrvBublbobr; -DRV BurnDrvBubbobr1; -DRV BurnDrvBublcave10; -DRV BurnDrvBublcave; -DRV BurnDrvpce_bubblegm; -DRV BurnDrvmd_bubsy2; -DRV BurnDrvmd_bubsy; -DRV BurnDrvbucaner; -DRV BurnDrvBuccanrs; -DRV BurnDrvBuccanrsa; -DRV BurnDrvmd_buckrog; -DRV BurnDrvmd_budokan; -DRV BurnDrvmd_budokanu; -DRV BurnDrvmd_bugsbun; -DRV BurnDrvmd_bugsbunu; -DRV BurnDrvpce_bullfght; -DRV BurnDrvBullet; -DRV BurnDrvBullfgt; -DRV BurnDrvmd_bullvsbl; -DRV BurnDrvmd_bullvsla; -DRV BurnDrvBurglarx; -DRV BurnDrvpce_burnangl; -DRV BurnDrvBurningfh; -DRV BurnDrvBurningf; -DRV BurnDrvBurningfp; -DRV BurnDrvmd_burnforc; -DRV BurnDrvmd_burnforcj; -DRV BurnDrvmd_burnforcu; -DRV BurnDrvpce_cyberx; -DRV BurnDrvBbros; -DRV BurnDrvBuzzard; -DRV BurnDrvBygone; -DRV BurnDrvCactus; -DRV BurnDrvCadashf; -DRV BurnDrvCadashg; -DRV BurnDrvCadashi; -DRV BurnDrvCadashj; -DRV BurnDrvCadashu; -DRV BurnDrvmd_cadash; -DRV BurnDrvCadash; -DRV BurnDrvtg_cadash; -DRV BurnDrvpce_cadash; -DRV BurnDrvCpsDino; -DRV BurnDrvCpsDinou; -DRV BurnDrvCpsDinopic; -DRV BurnDrvCpsDinopic2; -DRV BurnDrvCpsDinopic3; -DRV BurnDrvCpsDinoh; -DRV BurnDrvCpsDinohc; -DRV BurnDrvCpsDinoeh; -DRV BurnDrvCpsDinot; -DRV BurnDrvCpsDinotpic; -DRV BurnDrvCpsDinoj; -DRV BurnDrvmd_caesar; -DRV BurnDrvmd_caesar2; -DRV BurnDrvmd_caesars; -DRV BurnDrvmd_calripkn; -DRV BurnDrvmd_cal50; -DRV BurnDrvCalibr50; -DRV BurnDrvmd_calgames; -DRV BurnDrvCalipso; -DRV BurnDrvCameltryj; -DRV BurnDrvCameltrya; -DRV BurnDrvCameltry; -DRV BurnDrvCameltryau; -DRV BurnDrvcannonbp; -DRV BurnDrvCandance; -DRV BurnDrvmd_cfodder; -DRV BurnDrvCpsCscluba; -DRV BurnDrvCpsCsclub1d; -DRV BurnDrvCpsCsclub1; -DRV BurnDrvCpsCsclubh; -DRV BurnDrvCpsCsclubj; -DRV BurnDrvCpsCsclubjr; -DRV BurnDrvCpsCsclub; -DRV BurnDrvCworld; -DRV BurnDrvCpsCworld2j; -DRV BurnDrvmd_havoc; -DRV BurnDrvmd_captaven; -DRV BurnDrvmd_captavenu; -DRV BurnDrvmd_captavenup; -DRV BurnDrvCpsCaptcommjr1; -DRV BurnDrvCpsCaptcommu; -DRV BurnDrvCpsCaptcommr1; -DRV BurnDrvCpsCaptcommj; -DRV BurnDrvCpsCaptcomm; -DRV BurnDrvCpsCaptcommb; -DRV BurnDrvCpsCaptcommb2; -DRV BurnDrvmd_captlang; -DRV BurnDrvmd_captplan; -DRV BurnDrvmd_captplanu; -DRV BurnDrvCsilverj; -DRV BurnDrvCsilver; -DRV BurnDrvctomaday; -DRV BurnDrvCpsCawingbl; -DRV BurnDrvCpsCawingb2; -DRV BurnDrvCpsCawingr1; -DRV BurnDrvCpsCawing; -DRV BurnDrvCpsCawingu; -DRV BurnDrvmd_castlillj; -DRV BurnDrvmd_castlill; -DRV BurnDrvmd_cvaniau; -DRV BurnDrvmd_cvania; -DRV BurnDrvmd_cvaniap; -DRV BurnDrvCatacomb; -#if defined FBA_DEBUG -DRV BurnDrvCatapult; // Bad dump [NOT WORKING] -#endif -DRV BurnDrvctrpllrp; -DRV BurnDrvCatt; -DRV BurnDrvCavelon; -DRV BurnDrvCninjabl; -DRV BurnDrvCninjau; -DRV BurnDrvCninja1; -DRV BurnDrvCninja; -#if defined FBA_DEBUG -DRV BurnDrvpce_cdsysb; // no comment [NOT WORKING] -DRV BurnDrvpce_cdsysa; // no comment [NOT WORKING] -#endif -DRV BurnDrvmd_centur; -DRV BurnDrvChaknpop; -DRV BurnDrvChainrec; -DRV BurnDrvmd_chakan; -DRV BurnDrvmd_kidchamj; -DRV BurnDrvpce_champwrs; -DRV BurnDrvtg_forevbox; -DRV BurnDrvmd_champwcs; -DRV BurnDrvmd_champbwl; -DRV BurnDrvmd_champool; -DRV BurnDrvmd_cproam; -DRV BurnDrvmd_cjfuweng; -DRV BurnDrvPgmdemo; -DRV BurnDrvCpsCps1demo; -DRV BurnDrvneodemo; -DRV BurnDrvCharlien; -DRV BurnDrvChasehqj; -DRV BurnDrvChasehqu; -DRV BurnDrvChasehq; -DRV BurnDrvmd_chasehq2; -DRV BurnDrvmd_chavez2; -DRV BurnDrvCheckman; -DRV BurnDrvCheckmanj; -DRV BurnDrvmd_cheese; -DRV BurnDrvmd_chelnov; -DRV BurnDrvChelnovj; -DRV BurnDrvChelnovu; -DRV BurnDrvChelnov; -DRV BurnDrvmd_chess; -DRV BurnDrvmd_chessa; -DRV BurnDrvmd_chessb; -DRV BurnDrvmd_chester; -DRV BurnDrvmd_chesterw; -DRV BurnDrvtg_chewman; -DRV BurnDrvChewing; -DRV BurnDrvmd_chichi; -DRV BurnDrvSeventoitsu; -DRV BurnDrvpce_chibim; -DRV BurnDrvmd_chibim; -DRV BurnDrvmarukodq; -DRV BurnDrvCpsChikij; -DRV BurnDrvmd_chiki; -DRV BurnDrvmd_chikij; -DRV BurnDrvpce_chikuden; -DRV BurnDrvpce_chikuden1; -DRV BurnDrvChinatwn; -DRV BurnDrvtg_chinawar; -DRV BurnDrvmd_chinesec; -DRV BurnDrvmd_chinf3; -DRV BurnDrvmd_chinf3a; -DRV BurnDrvcndi; -DRV BurnDrvCpsChoko; -DRV BurnDrvChokChok; -DRV BurnDrvmd_miracle9; -DRV BurnDrvmd_dinolandj; -DRV BurnDrvLegiono; -DRV BurnDrvLegion; -DRV BurnDrvironclad; -DRV BurnDrvironclado; -DRV BurnDrvpce_bravoman; -DRV BurnDrvmd_chuckrck; -DRV BurnDrvmd_chuckrcku; -DRV BurnDrvmd_chukrck2j; -DRV BurnDrvmd_chukrck2; -DRV BurnDrvmd_chukrck2u; -DRV BurnDrvmd_chukrck2up; -DRV BurnDrvmd_excelart; -DRV BurnDrvChukataj; -DRV BurnDrvChukatau; -DRV BurnDrvChukatai; -DRV BurnDrvDrgw2j; -DRV BurnDrvpce_circusld; -DRV BurnDrvpce_cityhunt; -DRV BurnDrvmd_classicc; -DRV BurnDrvmd_clayfght; -DRV BurnDrvmd_clayfghtu; -DRV BurnDrvmd_cliffh; -DRV BurnDrvmd_cliffhp; -DRV BurnDrvmd_cliffhu; -DRV BurnDrvmd_clue; -DRV BurnDrvCltchitrj; -DRV BurnDrvCltchitr; -DRV BurnDrvmd_coachk; -DRV BurnDrvCobracomb; -DRV BurnDrvCobracmj; -DRV BurnDrvCobracmja; -DRV BurnDrvCobracom; -DRV BurnDrvcnbe; -DRV BurnDrvmd_colleg96; -DRV BurnDrvmd_colleg97; -DRV BurnDrvmd_collncp19; -DRV BurnDrvmd_collncp18; -DRV BurnDrvmd_collncp17; -DRV BurnDrvmd_collncp16; -DRV BurnDrvmd_collncp15; -DRV BurnDrvmd_collncp14; -DRV BurnDrvmd_collncp13; -DRV BurnDrvmd_collncp12; -DRV BurnDrvmd_collncp11; -DRV BurnDrvmd_collncp10; -DRV BurnDrvmd_collncp09; -DRV BurnDrvmd_collncp08; -DRV BurnDrvmd_collncp07; -DRV BurnDrvmd_collncp06; -DRV BurnDrvmd_collncp05; -DRV BurnDrvmd_collncp04; -DRV BurnDrvmd_collncp03; -DRV BurnDrvmd_collncp02; -DRV BurnDrvmd_collncp01; -DRV BurnDrvmd_collnc; -DRV BurnDrvmd_collnc2; -DRV BurnDrvmd_collslam; -DRV BurnDrvpce_columns; -DRV BurnDrvcolumnsn; -DRV BurnDrvmd_columns1; -DRV BurnDrvmd_columns; -DRV BurnDrvmd_columns3; -DRV BurnDrvmd_columns3j; -DRV BurnDrvmd_combat; -DRV BurnDrvmd_combatca; -DRV BurnDrvcombh; -DRV BurnDrvmd_comix; -DRV BurnDrvmd_comixp; -DRV BurnDrvmd_comixup01; -DRV BurnDrvmd_comixj; -DRV BurnDrvmd_comixkp; -DRV BurnDrvmd_comixup10; -DRV BurnDrvmd_comixup09; -DRV BurnDrvmd_comixsc; -DRV BurnDrvmd_comixu; -DRV BurnDrvmd_comixup; -DRV BurnDrvmd_comixup05; -DRV BurnDrvmd_comixup08; -DRV BurnDrvmd_comixup07; -DRV BurnDrvmd_comixup06; -DRV BurnDrvmd_comixup03; -DRV BurnDrvmd_comixup04; -DRV BurnDrvmd_comixup02; -DRV BurnDrvmd_commconq; -DRV BurnDrvCommandb2; -DRV BurnDrvCommandb; -DRV BurnDrvCommandu; -DRV BurnDrvCommando; -DRV BurnDrvmd_commands; -DRV BurnDrvmd_congo; -#if defined FBA_DEBUG -DRV BurnDrvConquer; // Bad dump [NOT WORKING] -#endif -DRV BurnDrvContcircj; -DRV BurnDrvContcircu; -DRV BurnDrvContcircua; -DRV BurnDrvContcirc; -DRV BurnDrvContrab; -DRV BurnDrvContrabj1; -DRV BurnDrvContraj; -DRV BurnDrvContra; -DRV BurnDrvContra1; -DRV BurnDrvmd_contra; -DRV BurnDrvmd_contraj; -DRV BurnDrvCookbib; -DRV BurnDrvCookbib2; -DRV BurnDrvCookbib3; -DRV BurnDrvmd_coolspot; -DRV BurnDrvmd_coolspotj; -DRV BurnDrvmd_coolspotu; -DRV BurnDrvmd_coolspotup; -DRV BurnDrvmd_corporat; -DRV BurnDrvpce_coryoon; -DRV BurnDrvpce_coryoon1; -DRV BurnDrvCavenger; -DRV BurnDrvCosmccop; -DRV BurnDrvmd_cosmic; -DRV BurnDrvCottonja; -DRV BurnDrvCottonj; -DRV BurnDrvCottonu; -DRV BurnDrvCotton; -DRV BurnDrvmd_cstrike; -DRV BurnDrvmd_crkdown1; -DRV BurnDrvmd_crkdown; -DRV BurnDrvmd_crkdownu; -DRV BurnDrvmd_crash; -DRV BurnDrvtg_cratermz; -DRV BurnDrvmd_crayon; -DRV BurnDrvQcrayon2; -DRV BurnDrvCclimbr2; -DRV BurnDrvCclmbr2a; -DRV BurnDrvCrazycop; -DRV BurnDrvCrazyfgt; -DRV BurnDrvCkongg; -DRV BurnDrvCkongmc; -DRV BurnDrvCkongs; -DRV BurnDrvMooncrsl; -DRV BurnDrvCrimecj; -DRV BurnDrvCrimecu; -DRV BurnDrvCrimec; -DRV BurnDrvCrimfgtj; -DRV BurnDrvCrimfght; -DRV BurnDrvCrimfgt2; -DRV BurnDrvVendettaj; -DRV BurnDrvcrockman; -DRV BurnDrvCroquis; -DRV BurnDrvCrossbld; -DRV BurnDrvmd_xfire; -DRV BurnDrvCrospang; -DRV BurnDrvpce_xwiber; -DRV BurnDrvcrsword; -DRV BurnDrvcthd2003; -DRV BurnDrvcthd2k3a; -DRV BurnDrvct2k3sp; -DRV BurnDrvct2k3sa; -DRV BurnDrvCbusterj; -DRV BurnDrvmd_crudeb; -DRV BurnDrvCbusterw; -DRV BurnDrvCbuster; -DRV BurnDrvmd_crueball; -DRV BurnDrvmd_crueballj; -DRV BurnDrvmd_crusader; -DRV BurnDrvcrushbl; -DRV BurnDrvcrushbl2; -DRV BurnDrvcrushbl3; -DRV BurnDrvcrush3; -DRV BurnDrvcrush2; -DRV BurnDrvcrush; -DRV BurnDrvcrush4; -DRV BurnDrvcrushs; -DRV BurnDrvCrusherm; -DRV BurnDrvmd_crying; -DRV BurnDrvmd_crystlpt; -DRV BurnDrvmd_crystlptp15; -DRV BurnDrvmd_crystlptp14; -DRV BurnDrvmd_crystlptp13; -DRV BurnDrvmd_crystlptp12; -DRV BurnDrvmd_crystlptp11; -DRV BurnDrvmd_crystlptp10; -DRV BurnDrvmd_crystlptp09; -DRV BurnDrvmd_crystlptp08; -DRV BurnDrvmd_crystlptp07; -DRV BurnDrvmd_crystlptp06; -DRV BurnDrvmd_crystlptp05; -DRV BurnDrvmd_crystlptp04; -DRV BurnDrvmd_crystlptp02; -DRV BurnDrvmd_crystlptp03; -DRV BurnDrvmd_crystlptp01; -DRV BurnDrvCuebrckj; -DRV BurnDrvCuebrick; -DRV BurnDrvmd_curse; -DRV BurnDrvmd_cutiesuz; -DRV BurnDrvmd_cutthr; -DRV BurnDrvmd_cutthrp; -DRV BurnDrvpce_cybrcore; -DRV BurnDrvtg_cybrcore; -DRV BurnDrvpce_cyberdod; -DRV BurnDrvpce_cyknight; -DRV BurnDrvmd_eswatj; -DRV BurnDrvCybertnk; -DRV BurnDrvmd_cybercop; -DRV BurnDrvCyberlip; -DRV BurnDrvmd_cyberbal; -DRV BurnDrvCpsCybotsj; -DRV BurnDrvCpsCybots; -DRV BurnDrvCpsCybotsud; -DRV BurnDrvCpsCybotsu; -DRV BurnDrvCpsCybotsjd; -DRV BurnDrvmd_cyborgj; -DRV BurnDrvmd_cyborgjp; -DRV BurnDrvCyvern; -DRV BurnDrvDcon; -DRV BurnDrvDdcrew1; -DRV BurnDrvDdcrew2; -DRV BurnDrvDdcrewu; -DRV BurnDrvDdcrew; -DRV BurnDrvDdcrewj; -DRV BurnDrvDdcrewj2; -DRV BurnDrvmd_daffy; -DRV BurnDrvmd_daffyp; -DRV BurnDrvmd_dahnamk; -DRV BurnDrvmd_dahnam; -DRV BurnDrvCpsDaimakaib; -DRV BurnDrvCpsDaimakair; -DRV BurnDrvCpsDaimakai; -DRV BurnDrvsgx_daimakai; -DRV BurnDrvmd_daimakai; -DRV BurnDrvpce_daisenpu; -DRV BurnDrvpce_donaturl; -DRV BurnDrvmd_daikokai; -DRV BurnDrvmd_daikok2; -DRV BurnDrvDkgensanm72; -DRV BurnDrvDkgensan; -DRV BurnDrvDaioh; -DRV BurnDrvDaioha; -DRV BurnDrvDaisenpu; -DRV BurnDrvDambustruk; -DRV BurnDrvDambustr; -DRV BurnDrvDambustra; -DRV BurnDrvmd_dangseed; -DRV BurnDrvDFeveron; -DRV BurnDrvDaraku; -DRV BurnDrvDariuse; -DRV BurnDrvDariuso; -DRV BurnDrvDariusj; -DRV BurnDrvDarius; -DRV BurnDrvpce_dariusa; -DRV BurnDrvDarius2do; -DRV BurnDrvDarius2d; -DRV BurnDrvDarius2; -DRV BurnDrvmd_darius2; -DRV BurnDrvpce_dariusp; -DRV BurnDrvDarkadv; -DRV BurnDrvmd_darkcast; -DRV BurnDrvDarkplnt; -DRV BurnDrvDarkseaj; -DRV BurnDrvDarksea1; -DRV BurnDrvDarkseal; -DRV BurnDrvDarkseal2; -DRV BurnDrvDarktowr; -DRV BurnDrvCpsDstlka; -DRV BurnDrvCpsDstlk; -DRV BurnDrvCpsDstlku1d; -DRV BurnDrvCpsDstlkur1; -DRV BurnDrvCpsDstlkh; -DRV BurnDrvCpsDstlku; -DRV BurnDrvtg_darkwing; -DRV BurnDrvdwi; -DRV BurnDrvdwia; -DRV BurnDrvmd_darwin; -DRV BurnDrvmd_dashdesp1; -DRV BurnDrvmd_dashdes; -DRV BurnDrvmd_dashdesp2; -DRV BurnDrvDquizgo; -DRV BurnDrvpowj; -DRV BurnDrvmd_amaznten; -DRV BurnDrvmd_drscj; -DRV BurnDrvmd_drsc; -DRV BurnDrvmd_daviscp2a; -DRV BurnDrvtg_daviscup; -DRV BurnDrvmd_daviscupa; -DRV BurnDrvmd_daviscup; -DRV BurnDrvmd_daviscp2; -DRV BurnDrvmd_dazexmas; -DRV BurnDrvmd_dazexmasp; -DRV BurnDrvDeadconxj; -DRV BurnDrvDeadconx; -DRV BurnDrvtg_deadmoon; -DRV BurnDrvpce_deadmoon; -DRV BurnDrvmd_deadlymv; -DRV BurnDrvDeathbrd; -DRV BurnDrvmd_deathcal; -DRV BurnDrvmd_deathdl; -DRV BurnDrvmd_decapatt; -DRV BurnDrvtg_deepblue; -DRV BurnDrvpce_deepblue; -DRV BurnDrvmd_deerhunt; -DRV BurnDrvDeerhune; -DRV BurnDrvDeerhund; -DRV BurnDrvDeerhunc; -DRV BurnDrvDeerhunb; -DRV BurnDrvDeerhuna; -DRV BurnDrvDeerhunt; -DRV BurnDrvRedufo; -DRV BurnDrvRedufob; -DRV BurnDrvDefense; -DRV BurnDrvmd_demoman; -DRV BurnDrvmd_demomanp; -DRV BurnDrvdmnfrnta; -DRV BurnDrvdmnfrntb; -DRV BurnDrvDmnfrnt; -#if defined FBA_DEBUG -DRV BurnDrvDmnfrntpcb; // Insert coin to get past ERROR [NOT WORKING] -#endif -DRV BurnDrvDemonwld; -DRV BurnDrvDemonwld2; -DRV BurnDrvDemonwld3; -DRV BurnDrvDemonwld1; -DRV BurnDrvDeroon; -DRV BurnDrvDassault4; -DRV BurnDrvDassault; -DRV BurnDrvDesertbrj; -DRV BurnDrvDesertbr; -DRV BurnDrvmd_desrtdem; -DRV BurnDrvmd_desrtdemp9; -DRV BurnDrvmd_desrtdemp8; -DRV BurnDrvmd_desrtdemp6; -DRV BurnDrvmd_desrtdemp7; -DRV BurnDrvmd_desrtdemp5; -DRV BurnDrvmd_desrtdemp4; -DRV BurnDrvmd_desrtdemp3; -DRV BurnDrvmd_desrtdemp2; -DRV BurnDrvmd_desrtdemp1; -DRV BurnDrvmd_dstrike; -DRV BurnDrvmd_dstrikej; -DRV BurnDrvDetatwin; -DRV BurnDrvpce_twinbee; -DRV BurnDrvDevstors3; -DRV BurnDrvDevstors2; -DRV BurnDrvDevstors; -DRV BurnDrvpce_devlcrsh; -DRV BurnDrvmd_devlcrsh; -DRV BurnDrvDevilfsh; -DRV BurnDrvDevilfsg; -DRV BurnDrvDevilw; -DRV BurnDrvtg_devlcrsh; -DRV BurnDrvmd_devilish; -DRV BurnDrvmd_diablo; -DRV BurnDrvmd_dialqo; -DRV BurnDrvDiamond; -DRV BurnDrvmd_dicktr; -DRV BurnDrvmd_dickvitl; -DRV BurnDrvpce_diehard; -DRV BurnDrvDietgoe; -DRV BurnDrvDietgo; -DRV BurnDrvDietgoj; -DRV BurnDrvDietgou; -DRV BurnDrvdiggerma; -DRV BurnDrvpce_digichmp; -DRV BurnDrvCpsDimahoo; -DRV BurnDrvCpsDimahoud; -DRV BurnDrvCpsDimahoou; -DRV BurnDrvDingo; -#if defined FBA_DEBUG -DRV BurnDrvDingoe; // Encrypted [NOT WORKING] -#endif -DRV BurnDrvmd_dinodini; -DRV BurnDrvmd_dinoland; -DRV BurnDrvDinorexj; -DRV BurnDrvDinorexu; -DRV BurnDrvDinorex; -DRV BurnDrvCpsDinohunt; -DRV BurnDrvmd_aladdin; -DRV BurnDrvmd_aladdinj; -DRV BurnDrvmd_aladdinu; -DRV BurnDrvmd_aladdinup; -DRV BurnDrvmd_ariel; -DRV BurnDrvmd_beauty; -DRV BurnDrvmd_beautyrb; -DRV BurnDrvmd_jungle; -DRV BurnDrvmd_jungleu; -DRV BurnDrvDiverboy; -DRV BurnDrvmd_divine; -DRV BurnDrvmd_djboy; -DRV BurnDrvmd_djboyj; -DRV BurnDrvmd_djboyu; -DRV BurnDrvDoDonpachijH; -DRV BurnDrvDoDonpachi; -DRV BurnDrvDoDonpachiJ; -DRV BurnDrvDdp3b; -DRV BurnDrvDdp3a; -DRV BurnDrvDdp3; -DRV BurnDrvDdp3blka; -DRV BurnDrvDdp3blk; -DRV BurnDrvDogyuun; -DRV BurnDrvDogyuunk; -DRV BurnDrvDogyuunt; -DRV BurnDrvDokaben; -DRV BurnDrvmd_domino; -DRV BurnDrvmd_dominus; -DRV BurnDrvdommy; -DRV BurnDrvDondokodj; -DRV BurnDrvDondokodu; -DRV BurnDrvDondokod; -DRV BurnDrvpce_dondoko; -DRV BurnDrvmd_mauimallb; -DRV BurnDrvmd_mauimall; -DRV BurnDrvmd_dongguri; -DRV BurnDrvDkingjr; -DRV BurnDrvDkongj; -DRV BurnDrvDkongjo; -DRV BurnDrvDkongjo1; -DRV BurnDrvDkong; -DRV BurnDrvDkongo; -DRV BurnDrvDkong3b; -DRV BurnDrvDkong3j; -DRV BurnDrvDkong3; -DRV BurnDrvDkongf; -DRV BurnDrvDkongx11; -DRV BurnDrvDkongx; -DRV BurnDrvDkongjrb; -DRV BurnDrvDkongjrj; -DRV BurnDrvDkongjrm; -#if defined FBA_DEBUG -DRV BurnDrvDkongjre; // no comment [NOT WORKING] -#endif -DRV BurnDrvDkongjnrj; -DRV BurnDrvDkongjr; -DRV BurnDrvDonpachihk; -DRV BurnDrvDonpachij; -DRV BurnDrvDonpachikr; -DRV BurnDrvDonpachi; -DRV BurnDrvmd_doomtrop; -DRV BurnDrvpce_dorams; -DRV BurnDrvpce_dorandn; -DRV BurnDrvmd_doraemon; -DRV BurnDrvDorodon; -DRV BurnDrvDorodon2; -DRV BurnDrvdotrikun; -DRV BurnDrvdotriku2; -DRV BurnDrvDblaxleu; -DRV BurnDrvDblaxle; -DRV BurnDrvmd_doublecl; -DRV BurnDrvDdragonb; -DRV BurnDrvDdragnba; -DRV BurnDrvDdragob2; -DRV BurnDrvmd_ddragon; -DRV BurnDrvDdragon; -DRV BurnDrvdoubledr; -DRV BurnDrvDdragonu; -DRV BurnDrvDdragoua; -DRV BurnDrvDdragoub; -DRV BurnDrvDdragonw; -DRV BurnDrvDdragnw1; -DRV BurnDrvmd_ddragon3; -DRV BurnDrvDdrago3b; -DRV BurnDrvDdrago3j; -DRV BurnDrvDdrago3p; -DRV BurnDrvDdragon3; -DRV BurnDrvmd_ddragon2; -DRV BurnDrvDdragon2u; -DRV BurnDrvDdragon2; -DRV BurnDrvmd_ddragon5; -DRV BurnDrvmd_ddribble; -DRV BurnDrvpce_ddungw; -DRV BurnDrvtg_ddungw; -DRV BurnDrvDblpoint; -DRV BurnDrvDblpoind; -DRV BurnDrvpce_download; -DRV BurnDrvpce_download1; -DRV BurnDrvDowntownj; -#if defined FBA_DEBUG -DRV BurnDrvDowntownp; // No sound, imperfect inputs [NOT WORKING] -#endif -DRV BurnDrvDowntown; -#if defined FBA_DEBUG -DRV BurnDrvDowntown2; // No sound, imperfect inputs [NOT WORKING] -#endif -DRV BurnDrvmd_drrobotn; -DRV BurnDrvmd_drrobotnu; -DRV BurnDrvmd_drrobotnup; -DRV BurnDrvDrtomy; -DRV BurnDrvDrtopplu; -DRV BurnDrvDrtoppel; -DRV BurnDrvDrtopplj; -DRV BurnDrvmd_dragon; -DRV BurnDrvmd_dragonu; -DRV BurnDrvmd_dbz; -DRV BurnDrvmd_dbzf; -DRV BurnDrvDragnblz; -DRV BurnDrvDrgnbowl; -DRV BurnDrvDbreedm72; -DRV BurnDrvDbreed; -DRV BurnDrvDrgnbstr; -DRV BurnDrvpce_dragnegg; -DRV BurnDrvDrgnmst; -DRV BurnDrvpce_dsaber; -DRV BurnDrvpce_dsaber1; -DRV BurnDrvmd_dslayed; -DRV BurnDrvmd_dslayed2; -DRV BurnDrvtg_dspirit; -DRV BurnDrvpce_dspirit; -DRV BurnDrvDrgnunit; -DRV BurnDrvDw2001; -#if defined FBA_DEBUG -DRV BurnDrvDrgw3100; // no comment [NOT WORKING] -DRV BurnDrvDrgw3105; // no comment [NOT WORKING] -#endif -DRV BurnDrvDrgw2x; -DRV BurnDrvDrgw2; -DRV BurnDrvdwpc; -DRV BurnDrvtg_dragcrse; -DRV BurnDrvmd_shangh3; -DRV BurnDrvmd_dfury; -DRV BurnDrvmd_dlair; -DRV BurnDrvmd_dragnrev; -DRV BurnDrvmd_dragnrevj; -DRV BurnDrvDrgninjab; -DRV BurnDrvDrgninjab2; -DRV BurnDrvDrgninja; -DRV BurnDrvDrakton; -DRV BurnDrvDrktnjr; -DRV BurnDrvDland; -DRV BurnDrvdremshpr; -DRV BurnDrvDsoccr94j; -DRV BurnDrvDriftout; -DRV BurnDrvDriftoutj; -DRV BurnDrvDriveout; -DRV BurnDrvDrivfrcb; -DRV BurnDrvDrivfrcg; -DRV BurnDrvDrivfrcp; -DRV BurnDrvpce_droprock; -DRV BurnDrvpce_droprock1; -DRV BurnDrvtg_dropoff; -DRV BurnDrvducki; -DRV BurnDrvmd_dukenk3d; -DRV BurnDrvmd_dukenk3da; -DRV BurnDrvDumpmtmt; -DRV BurnDrvmd_duneu; -DRV BurnDrvmd_dune2; -DRV BurnDrvmd_dune2g; -DRV BurnDrvtg_dungexpl; -DRV BurnDrvpce_dungexpl; -DRV BurnDrvCpsDdsomjr1; -DRV BurnDrvCpsDdsomr3; -DRV BurnDrvCpsDdsomr2; -DRV BurnDrvCpsDdsomur1; -DRV BurnDrvCpsDdsomb; -DRV BurnDrvCpsDdsomr1; -DRV BurnDrvCpsDdsomh; -DRV BurnDrvCpsDdsoma; -DRV BurnDrvCpsDdsom; -DRV BurnDrvCpsDdsomj; -DRV BurnDrvCpsDdsomud; -DRV BurnDrvCpsDdsomu; -DRV BurnDrvCpsDdtodar1; -DRV BurnDrvCpsDdtodr1; -DRV BurnDrvCpsDdtodhr2; -DRV BurnDrvCpsDdtodjr2; -DRV BurnDrvCpsDdtodur1; -DRV BurnDrvCpsDdtodhr1; -DRV BurnDrvCpsDdtodjr1; -DRV BurnDrvCpsDdtodu; -DRV BurnDrvCpsDdtoda; -DRV BurnDrvCpsDdtodd; -DRV BurnDrvCpsDdtod; -DRV BurnDrvCpsDdtodh; -DRV BurnDrvCpsDdtodj; -DRV BurnDrvmd_ddwares; -DRV BurnDrvDunkshot; -DRV BurnDrvmd_dynabr; -DRV BurnDrvmd_dynabr2; -DRV BurnDrvmd_dynabr2sp; -DRV BurnDrvDynablst; -DRV BurnDrvDynduke; -DRV BurnDrvDyndukea; -DRV BurnDrvDyndukej; -DRV BurnDrvDyndukeu; -DRV BurnDrvmd_dynduke1; -DRV BurnDrvmd_dynduke; -DRV BurnDrvDduxbl; -DRV BurnDrvDdux1; -DRV BurnDrvDdux; -DRV BurnDrvmd_dhead; -DRV BurnDrvmd_dheadj; -DRV BurnDrvmd_dheadjp; -DRV BurnDrvmd_dheadp3; -DRV BurnDrvmd_dheadp2; -DRV BurnDrvmd_dheadp1; -DRV BurnDrvCpsDynwar; -DRV BurnDrvCpsDynwara; -DRV BurnDrvmd_dynoblaz; -DRV BurnDrvEswatbl; -DRV BurnDrvEswatj; -DRV BurnDrvEswatu; -DRV BurnDrvEswat; -DRV BurnDrvmd_eahockey; -DRV BurnDrvmd_eahockeyj; -DRV BurnDrvmd_easports; -DRV BurnDrvEagle; -DRV BurnDrvEagle2; -DRV BurnDrvEagle3; -DRV BurnDrvmd_earnest; -DRV BurnDrvmd_ejim; -DRV BurnDrvmd_ejimu; -DRV BurnDrvmd_ejim2; -DRV BurnDrvmd_ejim2u; -DRV BurnDrvmd_ecco2; -DRV BurnDrvmd_ecco2u; -DRV BurnDrvmd_ecco2px11; -DRV BurnDrvmd_ecco2p; -DRV BurnDrvmd_ecco2p2; -DRV BurnDrvmd_ecco2p1; -DRV BurnDrvmd_eccojr; -DRV BurnDrvmd_eccojr1; -DRV BurnDrvmd_ecco; -DRV BurnDrvmd_eccoj; -DRV BurnDrvmd_ecco2j; -DRV BurnDrvCpsEcofghtra; -DRV BurnDrvCpsEcofghtr; -DRV BurnDrvCpsEcofghtrh; -DRV BurnDrvCpsEcofghtru1; -DRV BurnDrvCpsEcofghtrd; -DRV BurnDrvCpsEcofghtru; -DRV BurnDrvEgghunt; -DRV BurnDrveggor; -DRV BurnDrveggs; -DRV BurnDrv_8bpm; -DRV BurnDrvEightfrc; -DRV BurnDrvEightman; -DRV BurnDrvmd_elvientoj; -DRV BurnDrvmd_elviento; -DRV BurnDrvmd_elemastj; -DRV BurnDrvmd_elemast; -DRV BurnDrvmd_elimdown; -DRV BurnDrvmd_elit95; -DRV BurnDrvmd_elit96; -DRV BurnDrvmd_empsteel; -DRV BurnDrvEndurobl; -DRV BurnDrvEnduror; -DRV BurnDrvEnduror1; -DRV BurnDrvpce_energy; -DRV BurnDrvEnforcej; -DRV BurnDrvEnforceja; -DRV BurnDrvEnforce; -DRV BurnDrvmd_tazmars; -DRV BurnDrvmd_tazmarsp11; -DRV BurnDrvmd_tazmarsp10; -DRV BurnDrvmd_tazmarsp09; -DRV BurnDrvmd_tazmarsp08; -DRV BurnDrvmd_tazmarsp07; -DRV BurnDrvmd_tazmarsp06; -DRV BurnDrvmd_tazmarsp05; -DRV BurnDrvmd_tazmarsp04; -DRV BurnDrvmd_tazmarsp03; -DRV BurnDrvmd_tazmarsp02; -DRV BurnDrvmd_tazmarsp01; -DRV BurnDrvmd_tazmarsu; -DRV BurnDrvEsckids; -DRV BurnDrvEsckidsj; -DRV BurnDrvEspradejo; -DRV BurnDrvEspradej; -DRV BurnDrvEsprade; -DRV BurnDrvEspgal; -DRV BurnDrvmd_espnbb; -DRV BurnDrvmd_espnhn; -DRV BurnDrvmd_espnhnp; -DRV BurnDrvmd_espnsped; -DRV BurnDrvmd_espnspedp; -DRV BurnDrvmd_espnnfl; -DRV BurnDrvmd_espnnflp; -DRV BurnDrvmd_eswat; -DRV BurnDrvmd_eternalc; -DRV BurnDrvmd_eternalcp; -DRV BurnDrvmd_eternalcj; -DRV BurnDrvmd_eternalcjp; -DRV BurnDrvmd_eternalcu; -DRV BurnDrvEuroch92; -DRV BurnDrvWc90b1; -DRV BurnDrvmd_eurosens; -DRV BurnDrvmd_euroclub; -DRV BurnDrvmd_evander; -DRV BurnDrvmd_exmutant; -DRV BurnDrvmd_exranza; -DRV BurnDrvmd_exranzap; -DRV BurnDrvExcelsr; -DRV BurnDrvExcelsra; -DRV BurnDrvExctleag; -DRV BurnDrvExedexes; -DRV BurnDrvExerizrb; -DRV BurnDrvmd_exile; -DRV BurnDrvmd_exilej; -DRV BurnDrvmd_exosquad; -DRV BurnDrvmd_exosquadu; -DRV BurnDrvmd_exosquadup; -DRV BurnDrvExodus; -DRV BurnDrvmd_exodus; -DRV BurnDrvExplorer; -DRV BurnDrvExplbrkr; -DRV BurnDrvExtrmatj; -DRV BurnDrvExtrmatu; -DRV BurnDrvExtrmatn; -DRV BurnDrvExtdwnhl; -DRV BurnDrveyesb; -DRV BurnDrveyeszac; -DRV BurnDrveyes; -DRV BurnDrveyes2; -DRV BurnDrvF1dream; -DRV BurnDrvpce_f1dream; -DRV BurnDrvF1dreamb; -DRV BurnDrvF1gp; -#if defined FBA_DEBUG -DRV BurnDrvF1gpb; // no comment [NOT WORKING] -#endif -DRV BurnDrvF1gp2; -DRV BurnDrvpce_f1pilot; -DRV BurnDrvmd_f117; -DRV BurnDrvmd_f117j; -DRV BurnDrvmd_f15se2; -DRV BurnDrvmd_f15se2u; -DRV BurnDrvmd_f15se2up; -DRV BurnDrvmd_f22a; -DRV BurnDrvmd_f22; -DRV BurnDrvmd_f22p; -DRV BurnDrvmd_f22j; -DRV BurnDrvFxa; -DRV BurnDrvFx; -DRV BurnDrvmd_f1; -DRV BurnDrvmd_f1wc; -DRV BurnDrvmd_f1wcp; -DRV BurnDrvpce_f1circus; -DRV BurnDrvpce_f1circ91; -DRV BurnDrvpce_f1circ92; -DRV BurnDrvpce_f1circus1; -DRV BurnDrvmd_f1circus; -DRV BurnDrvpce_f1tb; -DRV BurnDrvtg_falcon; -DRV BurnDrvmd_famfeud; -DRV BurnDrvFancywld; -DRV BurnDrvFantasiaa; -DRV BurnDrvFantasia; -DRV BurnDrvmd_fantasia1; -DRV BurnDrvmd_fantasia; -DRV BurnDrvFantsia2; -DRV BurnDrvFantsia2a; -DRV BurnDrvFantastc; -DRV BurnDrvmd_fantdizz; -DRV BurnDrvmd_fantdizz1; -DRV BurnDrvFantsy95; -DRV BurnDrvtg_fantzone; -DRV BurnDrvpce_fantzone; -DRV BurnDrvFantzonep; -DRV BurnDrvFantzone; -DRV BurnDrvFantzone1; -DRV BurnDrvFantzn2x; -DRV BurnDrvFantzn2xp; -DRV BurnDrvFantzn2xps2; -DRV BurnDrvFantznta; -DRV BurnDrvFantazia; -DRV BurnDrvkabukikl; -DRV BurnDrvFarmer; -DRV BurnDrvmd_fastest1; -DRV BurnDrvmd_fatfury; -DRV BurnDrvmd_fatfuryu; -DRV BurnDrvFatFury1; -DRV BurnDrvmd_fatfury2; -DRV BurnDrvFatfury2; -DRV BurnDrvFatfury3; -DRV BurnDrvFatfursp; -DRV BurnDrvFatfurspa; -DRV BurnDrvmd_fatallab; -DRV BurnDrvmd_fatalrew; -DRV BurnDrvmd_fatman; -DRV BurnDrvmd_fengkuan; -DRV BurnDrvmd_fengshen; -DRV BurnDrvmd_fengshena; -DRV BurnDrvmd_ferias; -DRV BurnDrvmd_ferrari; -DRV BurnDrvmd_ferrarip; -DRV BurnDrvmd_ferrariu; -DRV BurnDrvmd_feverpit; -DRV BurnDrvFeverSOS; -DRV BurnDrvmd_fidodido; -DRV BurnDrvmd_fifa2k3; -DRV BurnDrvmd_fifa97; -DRV BurnDrvmd_fifa98; -DRV BurnDrvmd_fifa; -DRV BurnDrvmd_fifa2k; -DRV BurnDrvmd_fifa95; -DRV BurnDrvmd_fifa95k; -DRV BurnDrvmd_fifa96; -DRV BurnDrvmd_fifa99; -DRV BurnDrvmd_fifa2k10; -DRV BurnDrvmd_fifa2k2; -DRV BurnDrvfightfev; -DRV BurnDrvfightfeva; -DRV BurnDrvfswords; -DRV BurnDrvFghtbskt; -DRV BurnDrvFfantasy; -DRV BurnDrvFfantasya; -DRV BurnDrvmd_fightmasj; -DRV BurnDrvmd_fightmas; -DRV BurnDrvpce_fightrun; -DRV BurnDrvpce_finlblst; -DRV BurnDrvFinalbj; -DRV BurnDrvmd_finalb; -DRV BurnDrvFinalbu; -DRV BurnDrvFinalb; -DRV BurnDrvCpsFcrash; -DRV BurnDrvCpsFfightj1; -DRV BurnDrvCpsFfightua; -DRV BurnDrvCpsFfightj2; -DRV BurnDrvCpsFfightub; -DRV BurnDrvCpsFfightbl; -DRV BurnDrvCpsFfightj; -DRV BurnDrvCpsFfightu; -DRV BurnDrvCpsFfightu1; -DRV BurnDrvCpsFfight; -DRV BurnDrvCpsFfighta; -DRV BurnDrvtg_finallap; -DRV BurnDrvpce_finallap; -DRV BurnDrvpce_finalmt; -DRV BurnDrvpce_finalsol; -DRV BurnDrvpce_finalsols; -DRV BurnDrvFstarfrcj; -DRV BurnDrvFstarfrc; -DRV BurnDrvFinalttr; -DRV BurnDrvmd_fzone; -DRV BurnDrvmd_nemo; -DRV BurnDrvFirehawk; -DRV BurnDrvmd_firemust; -DRV BurnDrvpce_fireprow; -DRV BurnDrvpce_fireprw2; -DRV BurnDrvpce_fireprw3; -DRV BurnDrvmd_fireshrk; -DRV BurnDrvFireshrkd; -DRV BurnDrvFireshrkdh; -DRV BurnDrvmd_fireshrku; -DRV BurnDrvmd_fireshrku1; -DRV BurnDrvFireshrk; -DRV BurnDrvFixeight; -DRV BurnDrvFixeightt; -DRV BurnDrvFixeighth; -DRV BurnDrvFixeightht; -DRV BurnDrvFixeightj; -DRV BurnDrvFixeightjt; -DRV BurnDrvFixeightk; -DRV BurnDrvFixeightkt; -DRV BurnDrvFixeighta; -DRV BurnDrvFixeightat; -DRV BurnDrvFixeighttw; -DRV BurnDrvFixeighttwt; -DRV BurnDrvFixeightu; -DRV BurnDrvFixeightut; -DRV BurnDrvFpointbj; -DRV BurnDrvmd_flashp; -DRV BurnDrvFpoint1; -DRV BurnDrvFpoint; -DRV BurnDrvFpointbl; -DRV BurnDrvmd_flashb; -DRV BurnDrvmd_flashbj; -DRV BurnDrvmd_flashbu; -DRV BurnDrvmd_flashbu1; -DRV BurnDrvFlashgal; -DRV BurnDrvFlashgala; -DRV BurnDrvFlicky; -DRV BurnDrvFlickyg; -DRV BurnDrvFlickys2; -DRV BurnDrvFlickys2g; -DRV BurnDrvFlickyo; -DRV BurnDrvFlickys1; -DRV BurnDrvmd_flicky; -DRV BurnDrvmd_flink; -DRV BurnDrvmd_flux; -DRV BurnDrvFootchmp; -DRV BurnDrvFbfrenzy; -DRV BurnDrvmd_foreman; -DRV BurnDrvCpsForgottnua; -DRV BurnDrvCpsForgottnuaa; -DRV BurnDrvCpsForgottnu1; -DRV BurnDrvCpsForgottnu; -DRV BurnDrvCpsForgottn; -DRV BurnDrvmd_forgottn1; -DRV BurnDrvmd_forgottn; -DRV BurnDrvpce_fsoccr90; -DRV BurnDrvpce_fsoccer; -DRV BurnDrvmd_formula1; -DRV BurnDrvmd_fastfur5; -DRV BurnDrvmd_bighurt; -DRV BurnDrvfreeze; -DRV BurnDrvFrogf; -DRV BurnDrvFrogg; -DRV BurnDrvFroggers; -DRV BurnDrvCpsCps1frog; -DRV BurnDrvngfrog; -DRV BurnDrvPgmfrog; -DRV BurnDrvFrogger; -DRV BurnDrvFroggermc; -DRV BurnDrvFroggrs; -DRV BurnDrvFroggers1; -DRV BurnDrvFroggers2; -DRV BurnDrvmd_frogger; -DRV BurnDrvmd_slamdunk; -DRV BurnDrvFullthrl; -DRV BurnDrvmd_funngame; -DRV BurnDrvmd_funngameu; -DRV BurnDrvmd_funcar; -DRV BurnDrvfunkybee; -DRV BurnDrvfunkbeeb; -DRV BurnDrvfnkyfish; -DRV BurnDrvFunkyjetj; -DRV BurnDrvFunkyjet; -DRV BurnDrvFunybubl; -DRV BurnDrvFunybubc; -DRV BurnDrvmd_funnywld; -DRV BurnDrvmd_nadia; -DRV BurnDrvpce_alice; -DRV BurnDrvmd_futbol; -DRV BurnDrvGloc; -DRV BurnDrvmd_gloc; -DRV BurnDrvmd_glocp; -DRV BurnDrvGlocr360; -DRV BurnDrvmd_gadget; -DRV BurnDrvpce_gaiflame; -DRV BurnDrvGaia; -DRV BurnDrvpce_gaiamons; -DRV BurnDrvmd_gaiares; -DRV BurnDrvmd_gground; -DRV BurnDrvmd_gground1; -DRV BurnDrvpce_galaga88; -DRV BurnDrvtg_galaga90; -DRV BurnDrvGalagamf; -DRV BurnDrvGalagamw; -DRV BurnDrvGalagamk; -DRV BurnDrvGalaga; -DRV BurnDrvGalagao; -DRV BurnDrvneogalag; -DRV BurnDrvneogalaga; -DRV BurnDrvmd_galahad; -DRV BurnDrvGalaxbsf; -DRV BurnDrvGalaxianbl; -DRV BurnDrvGalaxianm; -DRV BurnDrvGalaxianmo; -DRV BurnDrvGalaxian; -DRV BurnDrvGalaxiana; -DRV BurnDrvGalaxrf; -DRV BurnDrvGalaxiant; -DRV BurnDrvGalap4; -DRV BurnDrvGalapx; -DRV BurnDrvTstgalx; -DRV BurnDrvGalturbo; -DRV BurnDrvGalemp; -DRV BurnDrvgalaxyfg; -DRV BurnDrvGforce2; -DRV BurnDrvGforce2j; -DRV BurnDrvGforce2ja; -DRV BurnDrvmd_gforce2a; -DRV BurnDrvmd_gforce2; -DRV BurnDrvGallag; -DRV BurnDrvGallop; -DRV BurnDrvGalmedes; -DRV BurnDrvGalhustl; -DRV BurnDrvGalpanic; -DRV BurnDrvGalspnbl; -DRV BurnDrvmd_gambler; -DRV BurnDrvmd_ggenie1; -DRV BurnDrvmd_ggenie; -DRV BurnDrvmd_gamenko; -DRV BurnDrvmd_gameto; -DRV BurnDrvGinkun; -DRV BurnDrvpce_ganbgolf; -DRV BurnDrvGangonta; -DRV BurnDrvCpsGanbare; -DRV BurnDrvGbusters; -DRV BurnDrvGbustera; -DRV BurnDrvganryu; -DRV BurnDrvGardia; -#if defined FBA_DEBUG -DRV BurnDrvGardiab; // no comment [NOT WORKING] -#endif -DRV BurnDrvmd_garfield; -DRV BurnDrvmd_gargoyle; -DRV BurnDrvGarogun; -DRV BurnDrvgaroubl; -DRV BurnDrvGarou; -DRV BurnDrvgarouh; -DRV BurnDrvGaroup; -DRV BurnDrvmd_garou; -DRV BurnDrvmd_garou2; -DRV BurnDrvmd_sbtank; -DRV BurnDrvGaruka; -DRV BurnDrvGaryoret; -DRV BurnDrvGatedom1; -DRV BurnDrvGatedoom; -DRV BurnDrvGauntlet2pg1; -DRV BurnDrvGauntlet2pg; -DRV BurnDrvGauntlet2pj2; -DRV BurnDrvGauntlet2pj; -DRV BurnDrvGauntlet2pr3; -DRV BurnDrvGauntlet2p; -DRV BurnDrvGauntletg; -DRV BurnDrvGauntletgr3; -DRV BurnDrvGauntletgr6; -DRV BurnDrvGauntletgr8; -DRV BurnDrvGauntletj12; -DRV BurnDrvGauntletj; -DRV BurnDrvmd_gauntlt4j; -DRV BurnDrvGauntletr1; -DRV BurnDrvGauntlet; -DRV BurnDrvGauntletr2; -DRV BurnDrvGauntletr4; -DRV BurnDrvGauntletr5; -DRV BurnDrvGauntletr7; -DRV BurnDrvGauntletr9; -DRV BurnDrvGauntlets; -DRV BurnDrvGaunt2; -DRV BurnDrvGaunt22pg; -DRV BurnDrvGaunt22p1; -DRV BurnDrvGaunt22p; -DRV BurnDrvGaunt2g; -DRV BurnDrvmd_gauntlt4a; -DRV BurnDrvmd_gauntlt4; -DRV BurnDrvpce_gekisboy; -DRV BurnDrvmd_gemfire; -DRV BurnDrvGemini; -DRV BurnDrvmd_gems; -DRV BurnDrvmd_genchaos; -DRV BurnDrvmd_genchaosj; -DRV BurnDrvmd_genelost; -DRV BurnDrvmd_genghis2; -DRV BurnDrvGenix; -DRV BurnDrvpce_genjitsu; -DRV BurnDrvpce_genpei; -DRV BurnDrvpce_genpemak; -DRV BurnDrvGensitou; -DRV BurnDrvmd_georgeko; -DRV BurnDrvmd_georgekou; -DRV BurnDrvGeostorm; -DRV BurnDrvGetStarb1; -DRV BurnDrvGetStarb2; -DRV BurnDrvGetStarj; -DRV BurnDrvghostbi; -DRV BurnDrvtg_ghostman; -DRV BurnDrvGhostmun; -DRV BurnDrvGpilotsh; -DRV BurnDrvGpilots; -DRV BurnDrvmd_ghostbst1; -DRV BurnDrvmd_ghostbst; -DRV BurnDrvghostlop; -DRV BurnDrvGmgalax; -DRV BurnDrvGngbl; -DRV BurnDrvGngbla; -DRV BurnDrvGngblita; -DRV BurnDrvGngprot; -DRV BurnDrvGngt; -DRV BurnDrvGngc; -DRV BurnDrvGng; -DRV BurnDrvGnga; -DRV BurnDrvmd_ghouls1; -DRV BurnDrvmd_ghouls; -DRV BurnDrvCpsGhoulsu; -DRV BurnDrvCpsGhouls; -DRV BurnDrvGhoxj; -DRV BurnDrvGhox; -DRV BurnDrvCpsGigawinga; -DRV BurnDrvCpsGigawingb; -DRV BurnDrvCpsGigawingh; -DRV BurnDrvCpsGigawingd; -DRV BurnDrvCpsGigawing; -DRV BurnDrvCpsGigawingjd; -DRV BurnDrvCpsGigawingj; -DRV BurnDrvCpsGigaman2; -DRV BurnDrvGigandes; -DRV BurnDrvGigandesa; -DRV BurnDrvGinganin; -DRV BurnDrvGinganina; -DRV BurnDrvGteikoku; -DRV BurnDrvGteikokb; -DRV BurnDrvGteikob2; -DRV BurnDrvmd_gleylanc; -DRV BurnDrvgoalx3; -DRV BurnDrvmd_gods; -DRV BurnDrvmd_godsj; -DRV BurnDrvmd_godsu; -DRV BurnDrvmd_godsup; -DRV BurnDrvpce_chukatai; -DRV BurnDrvmd_golden10; -DRV BurnDrvGoldnaxe1; -DRV BurnDrvGoldnaxe2; -DRV BurnDrvGoldnaxe3; -DRV BurnDrvGoldnaxej; -DRV BurnDrvGoldnaxeu; -DRV BurnDrvGoldnaxe; -DRV BurnDrvmd_goldnaxe1; -DRV BurnDrvmd_goldnaxe; -DRV BurnDrvmd_goldnax2; -DRV BurnDrvmd_goldnax2p; -DRV BurnDrvmd_goldnax3; -DRV BurnDrvpce_gomola; -DRV BurnDrvImsorryj; -#if defined FBA_DEBUG -DRV BurnDrvGondo; // Broken inputs [NOT WORKING] -#endif -DRV BurnDrvmd_goofy; -DRV BurnDrvgorkans; -DRV BurnDrvGotcha; -DRV BurnDrvPlegends; -DRV BurnDrvPlegendsj; -DRV BurnDrvPowerinj; -DRV BurnDrvmd_gouketsu; -DRV BurnDrvPwrinst2j; -DRV BurnDrvGpriderj; -DRV BurnDrvGprideru; -DRV BurnDrvGprider; -DRV BurnDrvpce_gradius; -DRV BurnDrvGradius2; -DRV BurnDrvGradius2a; -DRV BurnDrvGradius2b; -DRV BurnDrvGrdius3a; -DRV BurnDrvGradius3j; -DRV BurnDrvGrdius3; -DRV BurnDrvmd_gt5; -DRV BurnDrvmd_granada1; -DRV BurnDrvmd_granada; -DRV BurnDrvmd_grandslj; -DRV BurnDrvmd_grandsl; -DRV BurnDrvGtmr2u; -DRV BurnDrvGtmre; -DRV BurnDrvGtmrusa; -DRV BurnDrvmd_greatcirj; -DRV BurnDrvCpsGreatMahouDaiJ; -DRV BurnDrvmd_ghw; -DRV BurnDrvmd_ghwj; -DRV BurnDrvmd_ghwu; -DRV BurnDrvGberet; -DRV BurnDrvGberetb; -DRV BurnDrvmd_greendog; -DRV BurnDrvGrindStormer; -DRV BurnDrvGrindStormerA; -DRV BurnDrvmd_grindst; -DRV BurnDrvGrowlu; -DRV BurnDrvmd_growl; -DRV BurnDrvGrowl; -DRV BurnDrvGryzor; -DRV BurnDrvGryzor1; -DRV BurnDrvGetStar; -DRV BurnDrvGrdnstrmg; -DRV BurnDrvGrdnstrm; -DRV BurnDrvGrdnstrmv; -DRV BurnDrvGrdians; -DRV BurnDrvGumbo; -DRV BurnDrvGunfront; -DRV BurnDrvGunball; -DRV BurnDrvGunfrontj; -DRV BurnDrvGunhohki; -DRV BurnDrvGunsmokj; -DRV BurnDrvGunsmoku; -DRV BurnDrvGunsmoka; -DRV BurnDrvGunsmoke; -DRV BurnDrvGnbarich; -DRV BurnDrvGunbirdj; -DRV BurnDrvGunbirdk; -DRV BurnDrvGunbird; -DRV BurnDrvGunbird2; -DRV BurnDrvtg_gunboat; -DRV BurnDrvGundhara; -DRV BurnDrvGunforcej; -DRV BurnDrvGunforceu; -DRV BurnDrvGunforce; -DRV BurnDrvGunforc2; -DRV BurnDrvpce_gunhed; -DRV BurnDrvpce_gunhedht; -DRV BurnDrvGunnail; -DRV BurnDrvmd_gunship; -DRV BurnDrvmd_gunstar; -DRV BurnDrvmd_gunstarj; -DRV BurnDrvmd_gunstarjs; -DRV BurnDrvmd_gunstaru; -DRV BurnDrvgururin; -DRV BurnDrvGussun; -DRV BurnDrvGuwange; -DRV BurnDrvGuwanges; -DRV BurnDrvmd_gynoug; -DRV BurnDrvmd_gynougj; -DRV BurnDrvGyrodine; -DRV BurnDrvGyrodinet; -DRV BurnDrvGyrussb; -DRV BurnDrvGyrussce; -DRV BurnDrvGyruss; -DRV BurnDrvHachamf; -DRV BurnDrvHharryu; -DRV BurnDrvHharry; -DRV BurnDrvpce_hanataka; -DRV BurnDrvHangon1; -DRV BurnDrvHangon; -DRV BurnDrvHangon2; -DRV BurnDrvhangly; -DRV BurnDrvhangly2; -DRV BurnDrvhangly3; -DRV BurnDrvpce_haniisky; -DRV BurnDrvpce_haniirod; -DRV BurnDrvmd_harddriv; -DRV BurnDrvHpuncher; -DRV BurnDrvmd_hardbl94; -DRV BurnDrvmd_hardbl95; -DRV BurnDrvmd_hardbal3; -DRV BurnDrvmd_hardball; -DRV BurnDrvmd_hpotter; -DRV BurnDrvmd_hpotter2; -DRV BurnDrvHasamu; -DRV BurnDrvHthero; -DRV BurnDrvHtchctch; -DRV BurnDrvpce_hatris; -DRV BurnDrvHcastlee; -DRV BurnDrvHcastlek; -DRV BurnDrvHcastle; -DRV BurnDrvmd_haunting; -DRV BurnDrvHedpanic; -DRV BurnDrvHedpanif; -DRV BurnDrvmd_headon; -DRV BurnDrvHbarrel; -DRV BurnDrvHbarrelw; -DRV BurnDrvHvymetal; -DRV BurnDrvmd_heavynov; -DRV BurnDrvpce_hvyunit; -DRV BurnDrvmd_hvyunit; -DRV BurnDrvHwchamp; -DRV BurnDrvHwchampj; -DRV BurnDrvmd_heitao; -DRV BurnDrvHellfir1; -DRV BurnDrvHellfir3; -DRV BurnDrvHellfire; -DRV BurnDrvHellfir2; -DRV BurnDrvmd_hellfire; -DRV BurnDrvmd_hellfirej; -DRV BurnDrvmd_hellfireu; -DRV BurnDrvHerbiedk; -DRV BurnDrvmd_hercules; -DRV BurnDrvmd_herculs2; -DRV BurnDrvHerodku; -DRV BurnDrvHerodk; -DRV BurnDrvmd_herzog; -DRV BurnDrvmd_herzogj; -DRV BurnDrvHeuksun; -DRV BurnDrvHexpoola; -DRV BurnDrvHexpool; -DRV BurnDrvHexa; -DRV BurnDrvHexion; -DRV BurnDrvmd_havocu; -DRV BurnDrvHippodrm; -DRV BurnDrvBuraiken; -DRV BurnDrvHiticej; -DRV BurnDrvHitice; -DRV BurnDrvmd_hitice; -DRV BurnDrvpce_hitice; -DRV BurnDrvtg_hitice; -DRV BurnDrvmd_hokuto; -DRV BurnDrvmd_homea; -DRV BurnDrvmd_homeap; -DRV BurnDrvmd_homea2; -DRV BurnDrvHoneydol; -DRV BurnDrvpce_ddanpei; -DRV BurnDrvmd_ddanpei; -DRV BurnDrvmd_hook; -DRV BurnDrvHookj; -DRV BurnDrvHooku; -DRV BurnDrvmd_hooku; -DRV BurnDrvHook; -DRV BurnDrvHorizon; -DRV BurnDrvHotbubl; -DRV BurnDrvHotmind; -DRV BurnDrvHotpinbl; -DRV BurnDrvHotshock; -DRV BurnDrvHotshockb; -DRV BurnDrvhotdogst; -DRV BurnDrvmd_huamul; -DRV BurnDrvmd_huanle; -#if defined FBA_DEBUG -DRV BurnDrvHunchbkd; // No sound [NOT WORKING] -#endif -DRV BurnDrvHunchbkg; -DRV BurnDrvHunchbks; -DRV BurnDrvHncholms; -DRV BurnDrvmd_hurrican; -DRV BurnDrvmd_hyokkohj; -DRV BurnDrvmd_hyperdnk; -DRV BurnDrvmd_hyperdnkj; -DRV BurnDrvmd_hyperdnkjp; -DRV BurnDrvmd_hypermgnk; -DRV BurnDrvmd_hyperm; -DRV BurnDrvHyperpac; -DRV BurnDrvHyperpacb; -DRV BurnDrvHypsptsp; -DRV BurnDrvCpsHsf2j; -DRV BurnDrvCpsHsf2d; -DRV BurnDrvCpsHsf2da; -DRV BurnDrvCpsHsf2a; -DRV BurnDrvCpsHsf2; -DRV BurnDrvImsorry; -DRV BurnDrvmd_iceage; -DRV BurnDrvmd_iceage3; -DRV BurnDrvmd_iceage4; -DRV BurnDrvpce_idolhana; -DRV BurnDrvfr2ch; -DRV BurnDrvIgmo; -DRV BurnDrvikari3; -DRV BurnDrvikari3k; -DRV BurnDrvikari3u; -DRV BurnDrvikari3j; -DRV BurnDrvmd_dokidokignk; -DRV BurnDrvmd_dokidoki; -DRV BurnDrvIkki; -DRV BurnDrvpce_imagefgt; -DRV BurnDrvImgfightj; -DRV BurnDrvImgfight; -DRV BurnDrvmd_imgitt; -DRV BurnDrvScrambp; -DRV BurnDrvtg_impossam; -DRV BurnDrvInthuntu; -DRV BurnDrvInthunt; -DRV BurnDrvmd_indyrus; -DRV BurnDrvmd_indycrus; -DRV BurnDrvmd_indycrusu; -DRV BurnDrvmd_insectxj; -DRV BurnDrvmd_insectx; -DRV BurnDrvInsectx; -DRV BurnDrvmd_instchp1; -DRV BurnDrvmd_instchp9; -DRV BurnDrvmd_instchp8; -DRV BurnDrvmd_instchp7; -DRV BurnDrvmd_instchp6; -DRV BurnDrvmd_instchp5; -DRV BurnDrvmd_instchp4; -DRV BurnDrvmd_instchp3; -DRV BurnDrvmd_instchp2; -DRV BurnDrvmd_instch; -DRV BurnDrvmd_intrugby; -DRV BurnDrvmd_issdx; -#if defined FBA_DEBUG -DRV BurnDrvInttoote; // no comment [NOT WORKING] -DRV BurnDrvInttootea; // no comment [NOT WORKING] -#endif -DRV BurnDrvmd_iraqwar; -DRV BurnDrvmd_iraqwara; -DRV BurnDrvIsgsm; -DRV BurnDrvmd_ishido; -DRV BurnDrvmd_itcame; -DRV BurnDrvmd_izzyqst; -DRV BurnDrvJjsquawk; -DRV BurnDrvJjsquawkb; -DRV BurnDrvJjsquawkb2; -DRV BurnDrvmd_jlcs; -DRV BurnDrvpce_jleag11; -DRV BurnDrvmd_jlpsa; -DRV BurnDrvmd_jlps; -DRV BurnDrvmd_jlps2; -DRV BurnDrvmd_jlpsp; -DRV BurnDrvtg_jjnjeff; -DRV BurnDrvpce_nicklaus; -DRV BurnDrvmd_nicklaus; -DRV BurnDrvtg_nicklaus; -DRV BurnDrvjack; -DRV BurnDrvjack2; -DRV BurnDrvjack3; -DRV BurnDrvpce_jchan; -DRV BurnDrvJchan; -DRV BurnDrvJchan2; -DRV BurnDrvtg_jchan; -DRV BurnDrvmd_jbdougko; -DRV BurnDrvmd_jb007; -DRV BurnDrvmd_jb007j; -DRV BurnDrvmd_jb007u; -DRV BurnDrvmd_jpond; -DRV BurnDrvmd_jpond3; -DRV BurnDrvmd_robocod; -DRV BurnDrvmd_robocodj; -DRV BurnDrvmd_jammit; -DRV BurnDrvmd_janout; -DRV BurnDrvmd_jantei; -DRV BurnDrvmd_draxos; -DRV BurnDrvmd_jellyboy; -DRV BurnDrvmd_jennifct; -DRV BurnDrvmd_jeopardy; -DRV BurnDrvmd_jeopardd; -DRV BurnDrvmd_jeopards; -DRV BurnDrvmd_pigskinf; -DRV BurnDrvmd_jewelms; -DRV BurnDrvmd_jewelmsj; -DRV BurnDrvpce_jigomegu; -DRV BurnDrvJigkmgri; -DRV BurnDrvmd_jimpower; -DRV BurnDrvmd_jimmywws; -DRV BurnDrvpce_jinmu; -DRV BurnDrvpce_jinmu1; -DRV BurnDrvmd_jiujim; -DRV BurnDrvjockeygp; -DRV BurnDrvjockeygpa; -DRV BurnDrvmd_joemac; -DRV BurnDrvJoemacra; -DRV BurnDrvJoemacr; -DRV BurnDrvmd_joemont; -DRV BurnDrvmd_joemont2a; -DRV BurnDrvmd_joemont2; -DRV BurnDrvmd_madden92; -DRV BurnDrvmd_madden93; -DRV BurnDrvmd_madd93ce; -DRV BurnDrvmd_madden; -DRV BurnDrvmd_maddenj; -DRV BurnDrvjoinem; -DRV BurnDrvJojobaner1; -DRV BurnDrvJojobane; -DRV BurnDrvJojobar1; -DRV BurnDrvJojobanr1; -DRV BurnDrvJojoba; -DRV BurnDrvJojoban; -DRV BurnDrvJojonr2; -DRV BurnDrvJojonr1; -DRV BurnDrvJojon; -DRV BurnDrvJojojr2; -DRV BurnDrvJojojr1; -DRV BurnDrvJojoj; -DRV BurnDrvJojor2; -DRV BurnDrvJojor1; -DRV BurnDrvJojo; -DRV BurnDrvltorb1; -DRV BurnDrvmd_joshua; -DRV BurnDrvjoyman; -DRV BurnDrvmd_jdreddp1; -DRV BurnDrvmd_jdreddp2; -DRV BurnDrvmd_jdredd; -DRV BurnDrvJuju; -DRV BurnDrvJujuba; -DRV BurnDrvJujub; -DRV BurnDrvJumpbug; -DRV BurnDrvJumpbugb; -DRV BurnDrvJumpkids; -DRV BurnDrvjumpshot; -DRV BurnDrvjumpshotp; -DRV BurnDrvJumping; -DRV BurnDrvJpopnics; -DRV BurnDrvJumppop; -DRV BurnDrvJumppope; -DRV BurnDrvmd_junction; -DRV BurnDrvmd_jstrike; -DRV BurnDrvmd_jstrikep; -DRV BurnDrvmd_jstrikej; -#if defined FBA_DEBUG -DRV BurnDrvJungler; // no comment [NOT WORKING] -#endif -DRV BurnDrvJrking; -DRV BurnDrvmd_junker; -DRV BurnDrvmd_jpark; -DRV BurnDrvmd_jparkj; -DRV BurnDrvmd_jparku; -DRV BurnDrvmd_jparkup; -DRV BurnDrvmd_jparkre; -DRV BurnDrvmd_jparkrep9; -DRV BurnDrvmd_jparkrep8; -DRV BurnDrvmd_jparkrep7; -DRV BurnDrvmd_jparkrep6; -DRV BurnDrvmd_jparkrep5; -DRV BurnDrvmd_jparkrep4; -DRV BurnDrvmd_jparkrep3; -DRV BurnDrvmd_jparkrep2; -DRV BurnDrvmd_jparkrep1; -DRV BurnDrvmd_jleague; -DRV BurnDrvpce_juuouki; -DRV BurnDrvpce_juuouki1; -DRV BurnDrvmd_juuouki1; -DRV BurnDrvmd_juuouki; -DRV BurnDrvAltbeastj3; -DRV BurnDrvAltbeastj; -DRV BurnDrvCpsJyangoku; -DRV BurnDrvjanshin; -DRV BurnDrvmd_kof2k; -DRV BurnDrvmd_kof98; -DRV BurnDrvmd_kof98a; -DRV BurnDrvmd_kagekij; -DRV BurnDrvmd_kageki; -#if defined FBA_DEBUG -DRV BurnDrvKabukizj; // Imperfect graphics -DRV BurnDrvKabukiz; // Imperfect graphics -#endif -DRV BurnDrvKagekih; -DRV BurnDrvKagekij; -DRV BurnDrvKageki; -DRV BurnDrvYanchamr; -DRV BurnDrvKaiteids; -DRV BurnDrvpce_shubibi; -DRV BurnDrvpce_shubibi2; -DRV BurnDrvKamakazi3; -DRV BurnDrvkangaroo; -DRV BurnDrvkangaroa; -DRV BurnDrvkangarob; -DRV BurnDrvKaratblj; -DRV BurnDrvKaratblu; -DRV BurnDrvKaratblz; -DRV BurnDrvKarianx; -DRV BurnDrvKarnovj; -DRV BurnDrvKarnova; -DRV BurnDrvKarnov; -DRV BurnDrvkarnovr; -DRV BurnDrvpce_katochan; -DRV BurnDrvpce_kattobi; -DRV BurnDrvmd_kawasaki; -DRV BurnDrvmd_kawasakip; -DRV BurnDrvtg_keithcor; -DRV BurnDrvKeroppi; -DRV BurnDrvketarr; -DRV BurnDrvketarr15; -DRV BurnDrvketarr151; -DRV BurnDrvketstoicu; -DRV BurnDrvKetb; -DRV BurnDrvKeta; -DRV BurnDrvKet; -DRV BurnDrvmd_kickoff3; -DRV BurnDrvpce_kickball; -DRV BurnDrvKikcubicb; -DRV BurnDrvmd_kidcham; -DRV BurnDrvKidnikiu; -DRV BurnDrvKidniki; -DRV BurnDrvHorekid; -DRV BurnDrvHorekidb; -DRV BurnDrvmd_patlabor; -DRV BurnDrvpce_kikikai; -DRV BurnDrvKingballj; -DRV BurnDrvKingball; -DRV BurnDrvtg_kingcasn; -DRV BurnDrvpce_kingcasn; -DRV BurnDrvKog; -DRV BurnDrvKogplus; -DRV BurnDrvmd_kotm; -DRV BurnDrvmd_kotmj; -DRV BurnDrvKotm; -DRV BurnDrvKotmh; -DRV BurnDrvmd_kotmu; -DRV BurnDrvmd_kotm2; -DRV BurnDrvKotm2; -DRV BurnDrvKotm2p; -DRV BurnDrvmd_kingsalj; -DRV BurnDrvmd_kingsal; -DRV BurnDrvmd_kingsbty; -DRV BurnDrvKingdmGP; -DRV BurnDrvmd_kishiden; -DRV BurnDrvmd_kissshot; -DRV BurnDrvKizuna; -DRV BurnDrvpce_klax; -DRV BurnDrvtg_klax; -DRV BurnDrvmd_klax; -DRV BurnDrvmd_klaxj; -DRV BurnDrvpce_knightrs; -DRV BurnDrvCpsKnights; -DRV BurnDrvCpsKnightsja; -DRV BurnDrvCpsKnightsj; -DRV BurnDrvCpsKnightsu; -DRV BurnDrvCpsKnightsb; -DRV BurnDrvCpsKnightsb2; -DRV BurnDrvCpsKnightsb3; -DRV BurnDrvCpsKnightsb4; -DRV BurnDrvCpsKnightsh; -DRV BurnDrvCpsKnightsh2; -DRV BurnDrvKov100; -DRV BurnDrvKov115; -DRV BurnDrvKov; -DRV BurnDrvKov2100; -DRV BurnDrvKov2101; -DRV BurnDrvKov2102; -DRV BurnDrvKov2103; -DRV BurnDrvKov2106; -DRV BurnDrvKov2; -DRV BurnDrvKov2p202; -DRV BurnDrvKov2p204; -DRV BurnDrvKov2p; -DRV BurnDrvKovplusa; -DRV BurnDrvKovplus; -DRV BurnDrvkovshpa; -DRV BurnDrvkovshp; -DRV BurnDrvKovshb; -DRV BurnDrvKovsh101; -DRV BurnDrvKovsh102; -DRV BurnDrvKovsh103; -DRV BurnDrvKovsh; -DRV BurnDrvkovshxas; -#if defined FBA_DEBUG -DRV BurnDrvkovassg; // Incomplete dump [NOT WORKING] -DRV BurnDrvkovlsjba; // Incomplete dump [NOT WORKING] -DRV BurnDrvkovlsjb; // no comment [NOT WORKING] -DRV BurnDrvkovlsqh; // Incomplete dump [NOT WORKING] -DRV BurnDrvkovlsqhd; // Imperfect Protection Emulation [NOT WORKING] -DRV BurnDrvkovlsqh2; // Incomplete dump [NOT WORKING] -#endif -DRV BurnDrvkovqhsgsa; -DRV BurnDrvkovqhsgs; -DRV BurnDrvKovsgqyz; -DRV BurnDrvKovsgqyza; -DRV BurnDrvKovsgqyzb; -DRV BurnDrvKovsgqyzc; -DRV BurnDrvkovytzy; -DRV BurnDrvKnockout; -DRV BurnDrvKBash; -DRV BurnDrvKbash2; -DRV BurnDrvmd_knucklp; -DRV BurnDrvEto; -DRV BurnDrvmd_kolobok; -DRV BurnDrvKonami88; -DRV BurnDrvKontest; -DRV BurnDrvKong; -DRV BurnDrvpce_proyak89; -DRV BurnDrvpce_proyak90; -DRV BurnDrvKorokoro; -DRV BurnDrvkorosuke; -DRV BurnDrvMyangel; -DRV BurnDrvMyangel2; -DRV BurnDrvmd_koteteik; -DRV BurnDrvStrahl; -DRV BurnDrvStrahla; -DRV BurnDrvKozure; -#if defined FBA_DEBUG -DRV BurnDrvKrzybowl; // no comment [NOT WORKING] -#endif -DRV BurnDrvmd_krusty1; -DRV BurnDrvmd_krusty; -DRV BurnDrvKuhga; -DRV BurnDrvmd_kujaku2; -DRV BurnDrvmd_kfpanda2; -DRV BurnDrvKungfum; -DRV BurnDrvKungfub; -DRV BurnDrvKungfub2; -DRV BurnDrvKungfub3; -DRV BurnDrvKungfumd; -DRV BurnDrvmd_kuuga; -DRV BurnDrvmd_kuzyaeo; -DRV BurnDrvmd_kuzyamd; -DRV BurnDrvmd_kyukaidk; -DRV BurnDrvpce_kyukyomj; -DRV BurnDrvpce_kyukyom2; -DRV BurnDrvpce_ktiger; -DRV BurnDrvmd_ktiger; -DRV BurnDrvmd_laruss95; -DRV BurnDrvLadybug; -DRV BurnDrvLadybugg; -DRV BurnDrvLadybugb; -DRV BurnDrvLadybgb2; -DRV BurnDrvpce_ladyswrd; -DRV BurnDrvpce_ladyswrd1; -DRV BurnDrvmd_lakers; -DRV BurnDrvmd_landstlkg; -DRV BurnDrvmd_landstlkj; -DRV BurnDrvmd_landstlkf; -DRV BurnDrvmd_landstlk; -DRV BurnDrvmd_landstlku; -DRV BurnDrvmd_landstlkup; -DRV BurnDrvmd_langriss; -DRV BurnDrvmd_langris2b; -DRV BurnDrvmd_langris2a; -DRV BurnDrvmd_langris2; -DRV BurnDrvlans2004; -DRV BurnDrvLvgirl94; -DRV BurnDrvLghostu; -DRV BurnDrvLghost; -DRV BurnDrvmd_lastact; -DRV BurnDrvmd_lastbtle; -DRV BurnDrvLsstduelb; -DRV BurnDrvLastduelj; -DRV BurnDrvLastduel; -DRV BurnDrvLastduelo; -DRV BurnDrvlhcdb; -DRV BurnDrvLastmsnj; -DRV BurnDrvLastmsno; -DRV BurnDrvLastmisn; -DRV BurnDrvLresort; -DRV BurnDrvKyustrkr; -DRV BurnDrvLastsurv; -DRV BurnDrvLbowling; -DRV BurnDrvMadgearu; -DRV BurnDrvLedstrm2; -DRV BurnDrvLegend; -DRV BurnDrvLoht; -DRV BurnDrvtg_loht; -DRV BurnDrvpce_loht; -DRV BurnDrvLohtb; -DRV BurnDrvLohtb2; -DRV BurnDrvLohtj; -DRV BurnDrvLegendos; -DRV BurnDrvLwingsb; -DRV BurnDrvLwings; -DRV BurnDrvLwings2; -DRV BurnDrvmd_lemmings; -DRV BurnDrvmd_lemmingsju1; -DRV BurnDrvmd_lemmingsju; -DRV BurnDrvLemmings; -DRV BurnDrvmd_lemming2; -DRV BurnDrvmd_lemming2u; -DRV BurnDrvCrshrace; -DRV BurnDrvCrshrace2; -DRV BurnDrvmd_lethalen; -DRV BurnDrvmd_lethalenj; -DRV BurnDrvmd_lethalenu; -DRV BurnDrvmd_le2; -DRV BurnDrvmd_le2u; -DRV BurnDrvLethalth; -DRV BurnDrvLevers; -DRV BurnDrvmd_lhx; -DRV BurnDrvmd_lhxj; -DRV BurnDrvmd_liberty; -DRV BurnDrvmd_lightc; -DRV BurnDrvmd_lightcj; -DRV BurnDrvmd_lightck; -DRV BurnDrvmd_lightcp; -DRV BurnDrvmd_lightcu; -DRV BurnDrvmd_lightfor; -DRV BurnDrvLgtnfghta; -DRV BurnDrvLgtnfghtu; -DRV BurnDrvLgtnfght; -DRV BurnDrvShangonle; -DRV BurnDrvLoffirej; -DRV BurnDrvLoffireu; -DRV BurnDrvLoffire; -DRV BurnDrvmd_supmagic; -DRV BurnDrvmd_lionkin3; -DRV BurnDrvmd_lionkin3b; -DRV BurnDrvmd_lionkin3a; -DRV BurnDrvLiquidku; -DRV BurnDrvLiquidk; -DRV BurnDrvLithero; -DRV BurnDrvLivequiz; -DRV BurnDrvlizwiz; -DRV BurnDrvmd_lobo; -DRV BurnDrvLdrun; -DRV BurnDrvLdruna; -DRV BurnDrvpce_ldrun; -DRV BurnDrvLoderndfa; -DRV BurnDrvLoderndf; -DRV BurnDrvLdrun2; -DRV BurnDrvLdrun3j; -DRV BurnDrvLdrun3; -DRV BurnDrvLdrun4; -DRV BurnDrvLogicpro; -DRV BurnDrvLogicpr2; -DRV BurnDrvmd_long; -DRV BurnDrvmd_lordmon; -DRV BurnDrvLordgun; -DRV BurnDrvmd_lotr; -DRV BurnDrvmd_lotrgs; -DRV BurnDrvLosttomb; -DRV BurnDrvLosttombh; -DRV BurnDrvCpsLostwrldo; -DRV BurnDrvCpsLostwrld; -DRV BurnDrvLotlot; -DRV BurnDrvmd_lotus2; -DRV BurnDrvmd_lotus2p; -DRV BurnDrvmd_lotust; -DRV BurnDrvloverboy; -DRV BurnDrvLuctoday; -DRV BurnDrvmd_m1abrams; -DRV BurnDrvMiaj; -DRV BurnDrvMia2; -DRV BurnDrvMia; -DRV BurnDrvmd_majian; -DRV BurnDrvmd_majiana; -DRV BurnDrvmd_maqiao; -DRV BurnDrvMadgearj; -DRV BurnDrvMadgear; -DRV BurnDrvMadshark; -DRV BurnDrvmd_madagopp; -DRV BurnDrvmd_madagsc3; -DRV BurnDrvmd_madden94; -DRV BurnDrvmd_madden95; -DRV BurnDrvmd_madden96; -DRV BurnDrvmd_madden97; -DRV BurnDrvmd_madden98; -DRV BurnDrvmd_madoumon; -DRV BurnDrvsgx_granzort; -DRV BurnDrvmd_mafia; -DRV BurnDrvmbrush; -DRV BurnDrvMagicbub; -DRV BurnDrvMagicbuba; -DRV BurnDrvmd_mbubble; -DRV BurnDrvCpsMswordj; -DRV BurnDrvCpsMswordr1; -DRV BurnDrvCpsMsword; -DRV BurnDrvCpsMswordu; -DRV BurnDrvMcatadv; -DRV BurnDrvMcatadvj; -DRV BurnDrvpce_magchase; -DRV BurnDrvtg_magchase; -DRV BurnDrvMgcrsytlj; -DRV BurnDrvMgcrsytlo; -DRV BurnDrvMgcrsytl; -DRV BurnDrvMagdrop; -DRV BurnDrvmagdrop2; -DRV BurnDrvmagdrop3; -DRV BurnDrvMagdropp; -DRV BurnDrvmd_magichat; -DRV BurnDrvmd_mtaruru; -DRV BurnDrvmaglordh; -DRV BurnDrvmaglord; -DRV BurnDrvmd_magist16; -DRV BurnDrvttmahjng; -DRV BurnDrvmd_mahjongc; -DRV BurnDrvMjgtaste; -DRV BurnDrvMgakuen; -DRV BurnDrvpce_mjgakuen; -DRV BurnDrvMgakuen2; -DRV BurnDrvpce_mjgakmld; -DRV BurnDrvpce_mjgakmld1; -DRV BurnDrvpce_mjgokusp; -DRV BurnDrvpce_mjkaiser; -DRV BurnDrvHotgmcki; -DRV BurnDrvMahretsu; -DRV BurnDrvMjnquest; -DRV BurnDrvMjnquestb; -DRV BurnDrvpce_mjwars; -DRV BurnDrvMahouDai; -DRV BurnDrvMstadium; -DRV BurnDrvpce_mikkoku; -DRV BurnDrvMajest12; -DRV BurnDrvpce_wataru; -DRV BurnDrvMjleague; -DRV BurnDrvMajtitlej; -DRV BurnDrvMajtitle; -DRV BurnDrvMajtitl2j; -DRV BurnDrvMajtitl2; -DRV BurnDrvMajuu; -DRV BurnDrvpce_makaihak; -DRV BurnDrvpce_makaipri; -DRV BurnDrvMakaimuc; -DRV BurnDrvMakaimug; -DRV BurnDrvMakaimur; -DRV BurnDrvmaketrax; -DRV BurnDrvmaketrxb; -DRV BurnDrvpce_makyoden; -#if defined FBA_DEBUG -DRV BurnDrvMakyosen; // Broken inputs [NOT WORKING] -#endif -DRV BurnDrvmd_mamono; -DRV BurnDrvMangchi; -DRV BurnDrvpce_maniacpw; -DRV BurnDrvManiacsp; -DRV BurnDrvManybloc; -DRV BurnDrvmd_maouren; -DRV BurnDrvmd_marble; -DRV BurnDrvMarineb; -DRV BurnDrvMariner; -DRV BurnDrvmd_mario3; -DRV BurnDrvmd_mario4; -DRV BurnDrvmd_andretti; -DRV BurnDrvmd_mariolh; -DRV BurnDrvMarkham; -DRV BurnDrvmd_markou; -DRV BurnDrvmd_marko; -DRV BurnDrvmd_markop; -DRV BurnDrvMars; -DRV BurnDrvCpsMarsMatrixJ; -DRV BurnDrvCpsMarsMatrixd; -DRV BurnDrvCpsMarsMatrix; -DRV BurnDrvmd_marsup; -DRV BurnDrvmd_marsupu; -DRV BurnDrvmartmastc102; -DRV BurnDrvmartmastc; -DRV BurnDrvMartmast; -DRV BurnDrvmd_marvlandj; -DRV BurnDrvmd_marvland; -DRV BurnDrvCpsMsha; -DRV BurnDrvCpsMsh; -DRV BurnDrvCpsMshjr1; -DRV BurnDrvCpsMshud; -DRV BurnDrvCpsMshu; -DRV BurnDrvCpsMshb; -DRV BurnDrvCpsMshh; -DRV BurnDrvCpsMshj; -DRV BurnDrvCpsMshvsfa1; -DRV BurnDrvCpsMshvsfa; -DRV BurnDrvCpsMshvsfb1; -DRV BurnDrvCpsMshvsf; -DRV BurnDrvCpsMshvsfh; -DRV BurnDrvCpsMshvsfj2; -DRV BurnDrvCpsMshvsfu1d; -DRV BurnDrvCpsMshvsfu1; -DRV BurnDrvCpsMshvsfj1; -DRV BurnDrvCpsMshvsfj; -DRV BurnDrvCpsMshvsfb; -DRV BurnDrvCpsMshvsfu; -DRV BurnDrvCpsMvscur1; -DRV BurnDrvCpsMvscar1; -DRV BurnDrvCpsMvscr1; -DRV BurnDrvCpsMvscjr1; -DRV BurnDrvCpsMvsca; -DRV BurnDrvCpsMvscb; -DRV BurnDrvCpsMvsc; -DRV BurnDrvCpsMvsch; -DRV BurnDrvCpsMvscj; -DRV BurnDrvCpsMvscjsing; -DRV BurnDrvCpsMvscud; -DRV BurnDrvCpsMvscu; -DRV BurnDrvmd_franken; -DRV BurnDrvKamenrid; -DRV BurnDrvmd_mastermj; -DRV BurnDrvmd_masterm; -DRV BurnDrvMasterwj; -DRV BurnDrvmd_mweapon; -DRV BurnDrvMasterwu; -DRV BurnDrvMasterw; -DRV BurnDrvMatchit2; -DRV BurnDrvmd_maten; -DRV BurnDrvmd_mathblst; -DRV BurnDrvmatrimbl; -DRV BurnDrvmatrim; -DRV BurnDrvMofflott; -DRV BurnDrvmd_mazinsaga; -DRV BurnDrvmd_mazinsagj; -DRV BurnDrvmd_mazinsagu; -DRV BurnDrvmd_mazinwar; -DRV BurnDrvmazingerj; -DRV BurnDrvmazinger; -DRV BurnDrvmd_mcdonald; -DRV BurnDrvmd_mcdonaldj; -DRV BurnDrvmd_mcdonaldjp; -DRV BurnDrvmd_mcdonaldu; -DRV BurnDrvmd_medalc; -DRV BurnDrvmd_meganser; -DRV BurnDrvMegablstj; -DRV BurnDrvMegablstu; -DRV BurnDrvMegablst; -DRV BurnDrvmd_megabomb; -DRV BurnDrvmd_megabombu; -DRV BurnDrvmd_megabm8; -DRV BurnDrvmd_megaga10; -DRV BurnDrvmd_megaga2; -DRV BurnDrvmd_megaga3; -DRV BurnDrvmd_megaga61; -DRV BurnDrvmd_megaga62; -DRV BurnDrvmd_megaga63; -DRV BurnDrvmd_megaga1; -DRV BurnDrvCpsMegamana; -DRV BurnDrvCpsMegaman; -DRV BurnDrvCpsMmancp2u; -DRV BurnDrvmd_megaman; -DRV BurnDrvCpsMegaman2a; -DRV BurnDrvCpsMegamn2d; -DRV BurnDrvCpsMegaman2; -DRV BurnDrvCpsMegaman2h; -DRV BurnDrvmd_megaswiv; -DRV BurnDrvmd_megaswivb; -DRV BurnDrvmd_megaturr; -DRV BurnDrvmd_megaturru; -DRV BurnDrvCpsMtwins; -DRV BurnDrvmd_megalo1; -DRV BurnDrvmd_megalo; -DRV BurnDrvmd_megalof; -DRV BurnDrvmd_megaloj; -DRV BurnDrvMegadon; -DRV BurnDrvmd_megamind; -DRV BurnDrvmd_meganet; -DRV BurnDrvmd_megapanl; -DRV BurnDrvmd_megatrax; -DRV BurnDrvMeijinsn; -DRV BurnDrvKikcubic; -DRV BurnDrvMeikyuh; -DRV BurnDrvMeikyuha; -DRV BurnDrvmd_menacer; -DRV BurnDrvmd_menghu; -DRV BurnDrvCpsMercs; -DRV BurnDrvCpsMercsur1; -DRV BurnDrvCpsMercsu; -DRV BurnDrvmd_mercs; -DRV BurnDrvpce_mesopot; -DRV BurnDrvMetafox; -DRV BurnDrvMetalbj; -DRV BurnDrvMetalb; -DRV BurnDrvmd_metalfng; -DRV BurnDrvmd_mgs; -DRV BurnDrvMetlsavr; -DRV BurnDrvmslug; -DRV BurnDrvMSlug2; -DRV BurnDrvMSlug2t; -DRV BurnDrvmslug3h; -DRV BurnDrvmslug3; -DRV BurnDrvmslug4h; -DRV BurnDrvmslug4; -DRV BurnDrvms4plus; -DRV BurnDrvmslug5b; -DRV BurnDrvms5pcb; -DRV BurnDrvmslug5h; -DRV BurnDrvmslug5; -DRV BurnDrvms5plus; -DRV BurnDrvmslug3b6; -DRV BurnDrvMSlugX; -DRV BurnDrvpce_metlstok; -DRV BurnDrvmetmqstr; -DRV BurnDrvMetrocrs; -DRV BurnDrvMetrocrsa; -DRV BurnDrvMWalkbl; -DRV BurnDrvmd_mwalk1; -DRV BurnDrvmd_mwalk; -DRV BurnDrvmd_mickmack; -DRV BurnDrvmd_mickmacku; -DRV BurnDrvmd_mickmackup; -DRV BurnDrvmd_mmania; -DRV BurnDrvmd_mmaniaj; -DRV BurnDrvmd_mmaniau; -DRV BurnDrvmd_mmaniaup; -DRV BurnDrvmd_mickeyuc; -DRV BurnDrvmd_micromacc; -DRV BurnDrvmd_micromac; -DRV BurnDrvmd_micromacb; -DRV BurnDrvmd_micromaca; -DRV BurnDrvmd_micromc2; -DRV BurnDrvmd_micromc2a; -DRV BurnDrvmd_micromm; -DRV BurnDrvmd_microm96a; -DRV BurnDrvmd_microm96; -DRV BurnDrvMidresj; -DRV BurnDrvmd_midresj; -DRV BurnDrvMidresu; -DRV BurnDrvmd_midres; -DRV BurnDrvMidres; -DRV BurnDrvmd_mig29; -DRV BurnDrvmd_mig29j; -DRV BurnDrvmd_mig29u; -DRV BurnDrvmd_mightmag; -DRV BurnDrvmd_mightmg3; -DRV BurnDrvMimonkey; -DRV BurnDrvMimonscr; -DRV BurnDrvMimonsco; -DRV BurnDrvmd_mmpr; -DRV BurnDrvmd_mmprp6; -DRV BurnDrvmd_mmprp5; -DRV BurnDrvmd_mmprp2; -DRV BurnDrvmd_mmprp1; -DRV BurnDrvmd_mmpru; -DRV BurnDrvmd_mmprp4; -DRV BurnDrvmd_mmprp3; -DRV BurnDrvmd_mmprfe; -DRV BurnDrvmd_mmprtm; -DRV BurnDrvmd_mmprtmu; -DRV BurnDrvmd_mmprtmp4; -DRV BurnDrvmd_mmprtmp3; -DRV BurnDrvmd_mmprtmp2; -DRV BurnDrvmd_mmprtmp1; -DRV BurnDrvCpsMPangr1; -DRV BurnDrvCpsMPang; -DRV BurnDrvCpsMPangu; -DRV BurnDrvCpsMPangj; -DRV BurnDrvmd_ditkapf; -DRV BurnDrvmd_ditkapf1; -DRV BurnDrvtg_miltrymd; -DRV BurnDrvGtmr2a; -DRV BurnDrvGtmr2; -DRV BurnDrvminasan; -DRV BurnDrvmd_traysiaj; -DRV BurnDrvMinefld; -DRV BurnDrvminivadr; -DRV BurnDrvmd_mfpool; -DRV BurnDrvMsbingo; -DRV BurnDrvMissmw96; -DRV BurnDrvMspuzzle; -DRV BurnDrvMspuzzlg; -#if defined FBA_DEBUG -DRV BurnDrvMspuzzlen; // no comment [NOT WORKING] -#endif -DRV BurnDrvMissw96; -DRV BurnDrvMrviking; -DRV BurnDrvMrvikingj; -DRV BurnDrvQuiz18k; -DRV BurnDrvpce_mizubaku; -DRV BurnDrvMizubaku; -DRV BurnDrvmd_mk5; -DRV BurnDrvmd_mk5a; -DRV BurnDrvmd_mlbpa; -DRV BurnDrvMsgundam; -DRV BurnDrvMsgundam1; -DRV BurnDrvGundamex; -DRV BurnDrvMogura; -DRV BurnDrvMole; -DRV BurnDrvMomoko; -DRV BurnDrvpce_momogdn; -DRV BurnDrvpce_momo2; -DRV BurnDrvpce_momotrbo; -DRV BurnDrvpce_momoktsg; -DRV BurnDrvmiexchng; -DRV BurnDrvmd_monopoly; -DRV BurnDrvmd_monopolyp; -DRV BurnDrvpce_mnstprow; -DRV BurnDrvmd_mworld4; -DRV BurnDrvMstworld; -DRV BurnDrvmd_monstinc; -DRV BurnDrvMoonaln; -DRV BurnDrvMoonal2; -DRV BurnDrvMoonal2b; -DRV BurnDrvMooncrs4; -DRV BurnDrvMooncrsb; -DRV BurnDrvMooncrs2; -DRV BurnDrvMooncrs3; -DRV BurnDrvMooncreg; -DRV BurnDrvMooncrgx; -DRV BurnDrvMooncrstg; -DRV BurnDrvMooncrstuk; -DRV BurnDrvMooncrstuku; -DRV BurnDrvMooncrstu; -DRV BurnDrvMooncrst; -DRV BurnDrvMooncrsto; -DRV BurnDrvMooncptc; -DRV BurnDrvMoonqsr; -DRV BurnDrvMshuttlej2; -DRV BurnDrvMshuttlej; -DRV BurnDrvMshuttle2; -DRV BurnDrvMshuttle; -DRV BurnDrvMooncmw; -DRV BurnDrvMoonwar; -DRV BurnDrvMoonwara; -DRV BurnDrvMoremore; -DRV BurnDrvMoremorp; -DRV BurnDrvpce_moritash; -DRV BurnDrvmd_mka; -DRV BurnDrvmd_mk; -DRV BurnDrvmd_mk3; -DRV BurnDrvmd_mk3u; -DRV BurnDrvmd_mk2; -DRV BurnDrvpce_motoroad; -DRV BurnDrvtg_motoroad; -DRV BurnDrvpce_motorod2; -DRV BurnDrvpce_motorod2a; -DRV BurnDrvmrdo; -DRV BurnDrvmrdofix; -DRV BurnDrvmrdoy; -DRV BurnDrvmrdot; -DRV BurnDrvmrdu; -DRV BurnDrvMrgoemon; -DRV BurnDrvMrheli; -DRV BurnDrvpce_mrheli; -DRV BurnDrvpce_mrheli1; -DRV BurnDrvMrkougar; -DRV BurnDrvMrkougb; -DRV BurnDrvMrkougb2; -DRV BurnDrvMrkougar2; -DRV BurnDrvmrlo; -DRV BurnDrvmd_mrnutz; -DRV BurnDrvmd_mrnutz2; -DRV BurnDrvmrtnt; -DRV BurnDrvmspacman; -DRV BurnDrvmspacmab; -DRV BurnDrvmspacmat; -DRV BurnDrvmspacmanbg; -DRV BurnDrvmspacmbe; -DRV BurnDrvmd_mspacman; -DRV BurnDrvmd_mspacmanpir; -DRV BurnDrvmspacmnf; -DRV BurnDrvmsheartb; -DRV BurnDrvmspacpls; -DRV BurnDrvmschamps; -DRV BurnDrvmschamp; -DRV BurnDrvrocktrv2; -DRV BurnDrvMugsmash; -DRV BurnDrvmd_valisj; -DRV BurnDrvmd_muhammad; -DRV BurnDrvmd_muhammadu; -DRV BurnDrvmd_muhammadup; -DRV BurnDrvSemibase; -DRV BurnDrvNmg5; -DRV BurnDrvNmg5e; -DRV BurnDrvMultchmk; -DRV BurnDrvMultchmp; -DRV BurnDrvMchampdx; -DRV BurnDrvMchampda; -DRV BurnDrvCpsMbomberj; -// BurnDrvCpsMbombdje; // no comment -DRV BurnDrvCpsMbombrdj; -// BurnDrvCpsMbombrda; // no comment -DRV BurnDrvCpsMbombrd; -// BurnDrvCpsMbombrdh; // no comment -// BurnDrvCpsMbombrdu; // no comment -DRV BurnDrvmd_musha; -DRV BurnDrvmd_mushaj; -DRV BurnDrvalibabab; -DRV BurnDrvMutantf3; -DRV BurnDrvMutantf4; -DRV BurnDrvMutantf; -DRV BurnDrvmd_mlfootb; -DRV BurnDrvmd_mlfootbj; -DRV BurnDrvmd_mlhockey; -DRV BurnDrvMutnat; -DRV BurnDrvMvpj; -DRV BurnDrvMvp; -DRV BurnDrvMyherok; -DRV BurnDrvMyhero; -DRV BurnDrvmystston; -DRV BurnDrvmyststno; -DRV BurnDrvmyststni; -DRV BurnDrvmd_mystdefa; -DRV BurnDrvmd_mystdef; -DRV BurnDrvMysticrib; -DRV BurnDrvMysticri; -DRV BurnDrvmd_mysticf; -DRV BurnDrvpce_marchen; -DRV BurnDrvmd_nakaf1gp; -DRV BurnDrvmd_f1heromd; -DRV BurnDrvmd_nakaf1sl; -DRV BurnDrvNam1975; -DRV BurnDrvNaname; -DRV BurnDrvmd_smasters; -DRV BurnDrvpce_blodwolf; -DRV BurnDrvmd_narnia3; -DRV BurnDrvmd_naruto; -DRV BurnDrvNastar; -DRV BurnDrvNastarw; -DRV BurnDrvnmouse; -DRV BurnDrvnmouseb; -DRV BurnDrvpce_naxopen; -DRV BurnDrvpce_naxstad; -DRV BurnDrvpce_nazomasq; -DRV BurnDrvmd_nba2k; -DRV BurnDrvmd_nba2k5; -DRV BurnDrvmd_nbaact95; -DRV BurnDrvmd_nbaact95p25; -DRV BurnDrvmd_nbaact95p24; -DRV BurnDrvmd_nbaact95p23; -DRV BurnDrvmd_nbaact95p22; -DRV BurnDrvmd_nbaact95p21; -DRV BurnDrvmd_nbaact95p20; -DRV BurnDrvmd_nbaact95p19; -DRV BurnDrvmd_nbaact95p18; -DRV BurnDrvmd_nbaact95p17; -DRV BurnDrvmd_nbaact95p16; -DRV BurnDrvmd_nbaact95p15; -DRV BurnDrvmd_nbaact95p14; -DRV BurnDrvmd_nbaact95p13; -DRV BurnDrvmd_nbaact95p12; -DRV BurnDrvmd_nbaact95p11; -DRV BurnDrvmd_nbaact95p10; -DRV BurnDrvmd_nbaact95p09; -DRV BurnDrvmd_nbaact95p08; -DRV BurnDrvmd_nbaact95p07; -DRV BurnDrvmd_nbaact95p05; -DRV BurnDrvmd_nbaact95p06; -DRV BurnDrvmd_nbaact95p04; -DRV BurnDrvmd_nbaact95p02; -DRV BurnDrvmd_nbaact95p03; -DRV BurnDrvmd_nbaact95p01; -DRV BurnDrvmd_nbaactp3; -DRV BurnDrvmd_nbaactp2; -DRV BurnDrvmd_nbaactp1; -DRV BurnDrvmd_nbaact; -DRV BurnDrvmd_nbaallst; -DRV BurnDrvmd_nbahang; -DRV BurnDrvmd_nbahangu; -DRV BurnDrvmd_nbajam1; -DRV BurnDrvmd_nbajam; -DRV BurnDrvmd_nbajamj; -DRV BurnDrvmd_nbajamjp; -DRV BurnDrvmd_nbajamte; -DRV BurnDrvmd_nbajamtef; -DRV BurnDrvmd_nbaliv95; -DRV BurnDrvmd_nbaliv95k; -DRV BurnDrvmd_nbaliv96; -DRV BurnDrvmd_nbaliv97; -DRV BurnDrvmd_nbaliv98; -DRV BurnDrvmd_bullvsblj; -DRV BurnDrvmd_bullvsblj1; -DRV BurnDrvmd_nbapro94; -DRV BurnDrvmd_bullvslaj; -DRV BurnDrvmd_nbashow; -DRV BurnDrvmd_nbashowp; -DRV BurnDrvmd_ncaabask; -DRV BurnDrvmd_ncaafoot; -DRV BurnDrvpce_necromcr; -DRV BurnDrvpce_necros; -DRV BurnDrvpce_nectaris; -DRV BurnDrvmd_nfsu; -DRV BurnDrvKuniokunb; -DRV BurnDrvKuniokun; -DRV BurnDrvpce_nekdodge; -DRV BurnDrvmd_neksoccr; -DRV BurnDrvpce_neksoccr; -DRV BurnDrvCpsNemoj; -DRV BurnDrvCpsNemo; -DRV BurnDrvneo2500; -DRV BurnDrvneobombe; -DRV BurnDrvneocstlv; -DRV BurnDrvneodrift; -DRV BurnDrvNeoGeo; -DRV BurnDrvneocdz; -DRV BurnDrvNeoGeoMVS; -DRV BurnDrvneomrdo; -DRV BurnDrvneonopon; -DRV BurnDrvneoponga; -DRV BurnDrvneopong; -DRV BurnDrvsyscheck; -DRV BurnDrvneothndr; -DRV BurnDrvturfmast; -DRV BurnDrvNeocup98; -DRV BurnDrvneotet; -DRV BurnDrvneo3ddmo; -DRV BurnDrvpce_neutopia; -DRV BurnDrvtg_neutopia; -DRV BurnDrvpce_neutopi2; -DRV BurnDrvtg_neutopi2; -DRV BurnDrvmd_n3dgdevi; -DRV BurnDrvmd_n3dgaugu; -DRV BurnDrvmd_n3dgpebb; -DRV BurnDrvmd_n3dgwaia; -DRV BurnDrvtg_advislnd; -DRV BurnDrvNewapunk; -DRV BurnDrvNewfant; -DRV BurnDrvNewfanta; -DRV BurnDrvmd_newhoriz; -DRV BurnDrvnewpuckx; -DRV BurnDrvNrallyx; -DRV BurnDrvNewsin7; -DRV BurnDrvmd_newmanh; -DRV BurnDrvnewpuc2; -DRV BurnDrvnewpuc2b; -DRV BurnDrvNews; -DRV BurnDrvNewsa; -DRV BurnDrvmd_nfl95; -DRV BurnDrvmd_nfl95p21; -DRV BurnDrvmd_nfl95p20; -DRV BurnDrvmd_nfl95p19; -DRV BurnDrvmd_nfl95p18; -DRV BurnDrvmd_nfl95p17; -DRV BurnDrvmd_nfl95p15; -DRV BurnDrvmd_nfl95p16; -DRV BurnDrvmd_nfl95p14; -DRV BurnDrvmd_nfl95p13; -DRV BurnDrvmd_nfl95p12; -DRV BurnDrvmd_nfl95p11; -DRV BurnDrvmd_nfl95p10; -DRV BurnDrvmd_nfl95p09; -DRV BurnDrvmd_nfl95p07; -DRV BurnDrvmd_nfl95p08; -DRV BurnDrvmd_nfl95p06; -DRV BurnDrvmd_nfl95p05; -DRV BurnDrvmd_nfl95p04; -DRV BurnDrvmd_nfl95p03; -DRV BurnDrvmd_nfl95p01; -DRV BurnDrvmd_nfl95p02; -DRV BurnDrvmd_nfl98; -DRV BurnDrvmd_nfl94j; -DRV BurnDrvmd_nfl94; -DRV BurnDrvmd_nflqb; -DRV BurnDrvmd_nflqb96; -DRV BurnDrvmd_nflsport; -DRV BurnDrvngem2k; -DRV BurnDrvngftdemo; -DRV BurnDrvpce_nhktaidr; -DRV BurnDrvmd_nhktaidr; -DRV BurnDrvmd_nhl94; -DRV BurnDrvmd_nhl95; -DRV BurnDrvmd_nhl96; -DRV BurnDrvmd_nhl97; -DRV BurnDrvmd_nhl98; -DRV BurnDrvmd_nhlasp16; -DRV BurnDrvmd_nhlasp15; -DRV BurnDrvmd_nhlasp14; -DRV BurnDrvmd_nhlasp13; -DRV BurnDrvmd_nhlasp12; -DRV BurnDrvmd_nhlasp11; -DRV BurnDrvmd_nhlasp10; -DRV BurnDrvmd_nhlasp09; -DRV BurnDrvmd_nhlasp08; -DRV BurnDrvmd_nhlasp07; -DRV BurnDrvmd_nhlasp06; -DRV BurnDrvmd_nhlasp05; -DRV BurnDrvmd_nhlasp04; -DRV BurnDrvmd_nhlasp02; -DRV BurnDrvmd_nhlasp03; -DRV BurnDrvmd_nhlasp01; -DRV BurnDrvmd_nhlas; -DRV BurnDrvmd_nhl; -DRV BurnDrvmd_nhlpa2k3; -DRV BurnDrvmd_nhlpa93a; -DRV BurnDrvmd_nhlpa93; -DRV BurnDrvmd_mansell; -DRV BurnDrvmd_mansellu; -DRV BurnDrvtg_nightcr; -DRV BurnDrvNightstrj; -DRV BurnDrvNightstru; -DRV BurnDrvNightstr; -DRV BurnDrvCpsNwarra; -DRV BurnDrvCpsNwarr; -DRV BurnDrvCpsNwarrb; -DRV BurnDrvCpsNwarrh; -DRV BurnDrvCpsNwarrud; -DRV BurnDrvCpsNwarru; -DRV BurnDrvmd_ncirc; -DRV BurnDrvmd_ncirc1; -DRV BurnDrvmd_ncircp; -DRV BurnDrvnitd; -DRV BurnDrvnitdbl; -DRV BurnDrvmd_nikkan; -DRV BurnDrvNinja; -#if defined FBA_DEBUG -DRV BurnDrvNbbatmanu; // Imperfect sound and graphics [NOT WORKING] -#endif -DRV BurnDrvmd_ninjab; -DRV BurnDrvncombath; -DRV BurnDrvncombat; -DRV BurnDrvncommand; -DRV BurnDrvmd_ngaiden; -DRV BurnDrvGaiden; -DRV BurnDrvninjamas; -DRV BurnDrvNprinces; -DRV BurnDrvNprincesb; -DRV BurnDrvNprinceso; -DRV BurnDrvNprincesu; -DRV BurnDrvpce_nryukend; -DRV BurnDrvRyukendn; -DRV BurnDrvRyukenda; -DRV BurnDrvNspirit; -DRV BurnDrvtg_nspirit; -DRV BurnDrvNitrobal; -DRV BurnDrvmd_noescape; -DRV BurnDrvNob; -DRV BurnDrvNobb; -DRV BurnDrvmd_nobubufu; -DRV BurnDrvmd_nobuhao; -DRV BurnDrvmd_nobuzenk; -DRV BurnDrvmd_nobuamb; -DRV BurnDrvmd_normy; -DRV BurnDrvNost; -DRV BurnDrvNostj; -DRV BurnDrvNostk; -DRV BurnDrvNouryoku; -DRV BurnDrvpce_oboccha; -DRV BurnDrvOhmygod; -DRV BurnDrvOisipuzl; -DRV BurnDrvmd_olympgld; -DRV BurnDrvmd_olympgldj; -DRV BurnDrvmd_olympgldu; -DRV BurnDrvmd_olympgldu1; -DRV BurnDrvmd_olympsum; -DRV BurnDrvOmega; -DRV BurnDrvOmni; -DRV BurnDrvmd_ondal; -DRV BurnDrvnmaster; -DRV BurnDrvOnna34ro; -DRV BurnDrvOnna34ra; -DRV BurnDrvmd_onslau; -DRV BurnDrvOpwolfb; -DRV BurnDrvmd_opeurope; -DRV BurnDrvOthunderj; -DRV BurnDrvOthunderu; -DRV BurnDrvOthunderuo; -DRV BurnDrvOthunder; -DRV BurnDrvpce_opwolf; -DRV BurnDrvOpwolfj; -DRV BurnDrvOpwolfu; -DRV BurnDrvOpwolf; -DRV BurnDrvOpwolfa; -DRV BurnDrvOpwolf3u; -DRV BurnDrvOpwolf3; -DRV BurnDrvOrbitron; -DRV BurnDrvOrbs; -DRV BurnDrvtg_griffon; -DRV BurnDrvtg_ordyne; -DRV BurnDrvpce_ordyne; -DRV BurnDrvOrlegend105k; -DRV BurnDrvOrlegend111c; -DRV BurnDrvOrlegend112ca; -DRV BurnDrvOrlegend112e; -DRV BurnDrvOrlegend112c; -DRV BurnDrvOrlegend; -DRV BurnDrvOlds100a; -DRV BurnDrvOlds100; -DRV BurnDrvOlds103t; -DRV BurnDrvoldsplus; -DRV BurnDrvOlds; -DRV BurnDrvOsman; -DRV BurnDrvmd_osomatsu; -DRV BurnDrvpce_outlive; -DRV BurnDrvmd_ootwp; -DRV BurnDrvmd_ootw; -DRV BurnDrvpce_outrun; -DRV BurnDrvOutrunb; -DRV BurnDrvOutrundx; -DRV BurnDrvOutruno; -DRV BurnDrvOutrunra; -DRV BurnDrvOutrun; -DRV BurnDrvOutZone; -DRV BurnDrvOutZonea; -DRV BurnDrvOutZoneb; -DRV BurnDrvOutZonec; -DRV BurnDrvOutZoned; -DRV BurnDrvmd_outlandr; -DRV BurnDrvmd_outlandru; -DRV BurnDrvmd_outrun; -DRV BurnDrvmd_outrunj; -DRV BurnDrvmd_outr2019; -DRV BurnDrvmd_outr2019j; -DRV BurnDrvmd_outr2019u; -DRV BurnDrvmd_outr2019up; -DRV BurnDrvmd_orunnersj; -DRV BurnDrvmd_orunners; -DRV BurnDrvovertop; -DRV BurnDrvpce_override; -DRV BurnDrvOzon1; -DRV BurnDrvpce_p47; -DRV BurnDrvPgemeni; -DRV BurnDrvpow; -DRV BurnDrvmd_pto; -DRV BurnDrvmd_pacattak; -DRV BurnDrvpacgal; -DRV BurnDrvtg_pacland; -DRV BurnDrvpce_pacland; -DRV BurnDrvPaclandj; -DRV BurnDrvPaclandjo; -DRV BurnDrvPaclandjo2; -DRV BurnDrvPaclandm; -DRV BurnDrvPacland; -DRV BurnDrvPacmanbl; -DRV BurnDrvPacmanbla; -DRV BurnDrvpacheart; -DRV BurnDrvpacman; -DRV BurnDrvpacmod; -DRV BurnDrvpacmanf; -DRV BurnDrvmd_pacman2; -DRV BurnDrvpacplus; -DRV BurnDrvmd_pacmania; -DRV BurnDrvmd_pacpanic; -DRV BurnDrvmd_pachinko; -DRV BurnDrvpce_pachikun; -DRV BurnDrvpacuman; -DRV BurnDrvpaddle2; -DRV BurnDrvmd_paddlegnk; -DRV BurnDrvmd_paddle; -DRV BurnDrvSamSho4k; -DRV BurnDrvpaintrlr; -DRV BurnDrvPairlove; -DRV BurnDrvPajaroes; -DRV BurnDrvPangb; -DRV BurnDrvPangbold; -DRV BurnDrvPangb2; -DRV BurnDrvPang; -DRV BurnDrvPangpang; -DRV BurnDrvCpsPang3r1; -DRV BurnDrvCpsPang3r1a; -DRV BurnDrvCpsPang3; -DRV BurnDrvCpsPang3b; -DRV BurnDrvCpsPang3b2; -DRV BurnDrvCpsPang3b3; -DRV BurnDrvCpsPang3j; -DRV BurnDrvpanicbom; -DRV BurnDrvmd_pcotton; -DRV BurnDrvtg_panzakb; -DRV BurnDrvPaprazzi; -DRV BurnDrvmd_paperboy; -DRV BurnDrvmd_paperboyj; -DRV BurnDrvmd_paperbo2; -DRV BurnDrvpce_paranoia; -DRV BurnDrvpce_parasol; -DRV BurnDrvtg_parasol; -DRV BurnDrvParodiusa; -DRV BurnDrvParodiusj; -DRV BurnDrvParodius; -DRV BurnDrvParodiuse; -DRV BurnDrvpce_parodius; -DRV BurnDrvmd_partyq; -DRV BurnDrvPrtytime; -DRV BurnDrvPpchamp; -DRV BurnDrvPass; -#if defined FBA_DEBUG -DRV BurnDrvPassshtb; // no comment -#endif -DRV BurnDrvPassshtj; -DRV BurnDrvPasssht16a; -DRV BurnDrvPasssht; -DRV BurnDrvPassshta; -DRV BurnDrvmd_patriley; -#if defined FBA_DEBUG -DRV BurnDrvpce_pcdenja; // no comment [NOT WORKING] -#endif -DRV BurnDrvpce_pcgenj; -DRV BurnDrvpce_pcgenja; -DRV BurnDrvpce_pcgenj2; -DRV BurnDrvpce_pcgenj3; -DRV BurnDrvpce_pcgenj3t; -DRV BurnDrvpce_pcpachi; -DRV BurnDrvmd_pebble; -DRV BurnDrvmd_pebbleu; -DRV BurnDrvmd_pele; -DRV BurnDrvmd_pele2; -DRV BurnDrvpengob; -DRV BurnDrvpengo; -DRV BurnDrvpengo2u; -DRV BurnDrvpengo2; -DRV BurnDrvpengo3u; -DRV BurnDrvpengo4; -DRV BurnDrvPenbros; -DRV BurnDrvpkunwarj; -DRV BurnDrvpkunwar; -DRV BurnDrvpenta; -DRV BurnDrvmd_ppengo; -DRV BurnDrvPsoldier; -DRV BurnDrvPestplce; -DRV BurnDrvmd_sampra96; -DRV BurnDrvmd_sampras; -DRV BurnDrvmd_sampras2; -DRV BurnDrvmd_sampras1; -DRV BurnDrvPpan; -DRV BurnDrvmd_pgaeuro; -DRV BurnDrvmd_pga96; -DRV BurnDrvmd_pgaa; -DRV BurnDrvmd_pga; -DRV BurnDrvmd_pga2a; -DRV BurnDrvmd_pga2; -DRV BurnDrvmd_pga2j; -DRV BurnDrvmd_pga3; -DRV BurnDrvPgm; -DRV BurnDrvmd_pstar4j; -DRV BurnDrvmd_pstar4; -DRV BurnDrvmd_pstar4p5; -DRV BurnDrvmd_pstar4p4; -DRV BurnDrvmd_pstar4p3; -DRV BurnDrvmd_pstar4p2; -DRV BurnDrvmd_pstar4p1; -DRV BurnDrvmd_pstar4u; -DRV BurnDrvmd_pstar2br; -DRV BurnDrvmd_pstar2a; -DRV BurnDrvmd_pstar2; -DRV BurnDrvmd_ps2aa; -DRV BurnDrvmd_ps2ab; -DRV BurnDrvmd_ps2ac; -DRV BurnDrvmd_pstar2j; -DRV BurnDrvmd_ps2ad; -DRV BurnDrvmd_ps2ae; -DRV BurnDrvmd_ps2af; -DRV BurnDrvmd_ps2ag; -DRV BurnDrvmd_ps2ah; -DRV BurnDrvmd_pstar3br; -DRV BurnDrvmd_pstar3; -DRV BurnDrvmd_pstar3j; -DRV BurnDrvmd_phantom; -DRV BurnDrvmd_phantomu; -DRV BurnDrvmd_phelios; -DRV BurnDrvmd_pheliosj; -DRV BurnDrvmd_pheliosu; -DRV BurnDrvPhoenxp2; -DRV BurnDrvPhotoy2k104; -DRV BurnDrvPhotoy2k; -#if defined FBA_DEBUG -DRV BurnDrvPgm3in1; // Incomplete dump [NOT WORKING] -DRV BurnDrvPy2k2; // Incomplete dump [NOT WORKING] -#endif -DRV BurnDrvmd_pink; -DRV BurnDrvmd_pinkp; -DRV BurnDrvmd_pinoc; -DRV BurnDrvmd_pinocu; -DRV BurnDrvPipibibsp; -DRV BurnDrvWhoopee; -DRV BurnDrvPipibibs; -DRV BurnDrvPipibibsa; -DRV BurnDrvpiranha; -DRV BurnDrvpiranhah; -DRV BurnDrvpiranhao; -DRV BurnDrvhigemaru; -DRV BurnDrvPirates; -DRV BurnDrvmd_pcarib; -DRV BurnDrvmd_pirates; -DRV BurnDrvmd_piratesp; -DRV BurnDrvmd_pcarib2; -DRV BurnDrvPisces; -DRV BurnDrvPiscesb; -DRV BurnDrvmd_pitfight1; -DRV BurnDrvmd_pitfight; -DRV BurnDrvmd_pitfall; -DRV BurnDrvmd_pitfallu; -DRV BurnDrvPitfall2; -DRV BurnDrvPitfall2a; -DRV BurnDrvPitfall2u; -DRV BurnDrvpgoal; -DRV BurnDrvPlumppop; -DRV BurnDrvCpsPnickj; -// BurnDrvCpsPnicku; // no comment -DRV BurnDrvmd_pocahont; -DRV BurnDrvmd_pocahontu; -DRV BurnDrvpnyaa; -DRV BurnDrvCpsPfghtj; -DRV BurnDrvPktgaldx; -#if defined FBA_DEBUG -DRV BurnDrvPktgaldxb; // no comment [NOT WORKING] -#endif -DRV BurnDrvPktgaldxj; -DRV BurnDrvmd_pokemon; -DRV BurnDrvmd_pokemona; -DRV BurnDrvmd_pokemon2; -DRV BurnDrvmd_pokecd; -DRV BurnDrvmd_pokecda; -DRV BurnDrvmd_pokestad; -DRV BurnDrvPkladies; -DRV BurnDrvPkladiesla; -DRV BurnDrvPkladiesl; -DRV BurnDrvpoknight; -DRV BurnDrvPompingw; -DRV BurnDrvponpoko; -DRV BurnDrvponpokov; -DRV BurnDrvPootan; -DRV BurnDrvPooyan; -DRV BurnDrvPooyans; -DRV BurnDrvpopbounc; -DRV BurnDrvPopspops; -DRV BurnDrvpopeyeman; -DRV BurnDrvpce_populous; -DRV BurnDrvpce_populous1; -DRV BurnDrvmd_populous; -DRV BurnDrvmd_populousj; -DRV BurnDrvmd_populousu; -DRV BurnDrvPorky; -DRV BurnDrvPorter; -#if defined FBA_DEBUG -DRV BurnDrvPoundforj; // no comment [NOT WORKING] -DRV BurnDrvPoundforu; // no comment [NOT WORKING] -DRV BurnDrvPoundfor; // no comment [NOT WORKING] -#endif -DRV BurnDrvmd_powerath; -DRV BurnDrvpce_pdrift; -DRV BurnDrvpce_pdrift1; -DRV BurnDrvPdriftj; -DRV BurnDrvPdrifta; -DRV BurnDrvPdrifte; -DRV BurnDrvPdrift; -DRV BurnDrvmd_pdrive; -DRV BurnDrvpce_power11; -DRV BurnDrvpce_powergat; -DRV BurnDrvtg_pgolf; -DRV BurnDrvpce_pgolf; -DRV BurnDrvPowerins; -DRV BurnDrvPowerina; -DRV BurnDrvPowerinb; -DRV BurnDrvPwrinst2; -DRV BurnDrvpce_pleague; -DRV BurnDrvpce_pleag93; -DRV BurnDrvpce_pleagas; -DRV BurnDrvpce_pleag2; -DRV BurnDrvpce_pleag3; -DRV BurnDrvpce_pleag4; -DRV BurnDrvpce_pleag5; -DRV BurnDrvmd_pmonger; -DRV BurnDrvmd_pmongerj; -DRV BurnDrvpspikes2; -DRV BurnDrvpce_psports; -DRV BurnDrvPwheelsj; -DRV BurnDrvmd_powerbal; -DRV BurnDrvCpsPgearr1; -DRV BurnDrvCpsPgear; -DRV BurnDrvmd_predatr2; -DRV BurnDrvpreisle2; -DRV BurnDrvPrehislk; -DRV BurnDrvPrehislu; -DRV BurnDrvPrehisle; -DRV BurnDrvmd_premierm; -DRV BurnDrvmd_premrm97; -DRV BurnDrvSailorMoonO; -DRV BurnDrvSailorMoonOh; -DRV BurnDrvSailorMoonOj; -DRV BurnDrvSailorMoonOk; -DRV BurnDrvSailorMoonOt; -DRV BurnDrvSailorMoonOu; -DRV BurnDrvSailorMoon; -DRV BurnDrvSailorMoonh; -DRV BurnDrvSailorMoonj; -DRV BurnDrvSailorMoonk; -DRV BurnDrvSailorMoont; -DRV BurnDrvSailorMoonu; -DRV BurnDrvmd_primal; -DRV BurnDrvmd_primetim; -DRV BurnDrvneoprimo; -DRV BurnDrvmd_ppersia; -DRV BurnDrvmd_ppersiap; -DRV BurnDrvmd_ppersiap1; -DRV BurnDrvmd_ppersiau; -DRV BurnDrvmd_ppersia2; -DRV BurnDrvmd_par; -DRV BurnDrvmd_par2; -DRV BurnDrvmd_par2a; -DRV BurnDrvmd_proqb; -DRV BurnDrvmd_prostrfs; -DRV BurnDrvpce_ptennwc; -DRV BurnDrvmd_proyakyu; -DRV BurnDrvpce_proyak; -DRV BurnDrvpce_proyak91; -DRV BurnDrvmd_probot; -DRV BurnDrvCpsProgeara; -DRV BurnDrvCpsProgear; -DRV BurnDrvCpsProgearjd; -DRV BurnDrvCpsProgearj; -DRV BurnDrvCpsProgearjbl; -DRV BurnDrvCpsProgearud; -DRV BurnDrvmd_psyoblad; -DRV BurnDrvpce_psychas; -DRV BurnDrvmd_psycho1; -DRV BurnDrvmd_psycho; -DRV BurnDrvOscarj1; -DRV BurnDrvOscarj2; -DRV BurnDrvOscaru; -DRV BurnDrvOscar; -DRV BurnDrvtg_psychos; -DRV BurnDrvpuckmanb; -DRV BurnDrvpuckmanh; -DRV BurnDrvpuckman; -DRV BurnDrvpuckmod; -DRV BurnDrvpacmansp; -DRV BurnDrvpuckmanf; -DRV BurnDrvmd_puggsy; -DRV BurnDrvmd_puggsyp; -DRV BurnDrvmd_puggsyu; -DRV BurnDrvPulirulaj; -DRV BurnDrvPulirula; -DRV BurnDrvmd_pulseman; -DRV BurnDrvpulstar; -DRV BurnDrvPunkshotj; -DRV BurnDrvPunkshot2; -DRV BurnDrvPunkshot; -DRV BurnDrvPushmans; -DRV BurnDrvPushman; -DRV BurnDrvPushmana; -DRV BurnDrvmd_puttergnk; -DRV BurnDrvmd_putter; -DRV BurnDrvmd_puyopuyo; -DRV BurnDrvmd_puyopuy2a; -DRV BurnDrvmd_puyopuy2; -DRV BurnDrvCpsPzloop2jr1; -DRV BurnDrvCpsPzloop2j; -DRV BurnDrvCpsPzloop2; -DRV BurnDrvmd_ichir; -DRV BurnDrvmd_tantr; -DRV BurnDrvPbobble; -DRV BurnDrvpbobblenb; -DRV BurnDrvpbobblen; -DRV BurnDrvpbobbl2n; -DRV BurnDrvpce_puzzlboy; -DRV BurnDrvPzlbreak; -DRV BurnDrvPclubys; -DRV BurnDrvPclubysa; -DRV BurnDrvPzlbowl; -DRV BurnDrvpuzzledp; -DRV BurnDrvpuzzldpr; -DRV BurnDrvFourin1boot; -DRV BurnDrvPuzlstar; -DRV BurnDrvUoPoko; -DRV BurnDrvUoPokoj; -DRV BurnDrvJoyjoy; -DRV BurnDrvPuzzli2; -DRV BurnDrvPuzzli2s; -DRV BurnDrvpce_puzznic; -DRV BurnDrvmd_pyramidgnk; -DRV BurnDrvmd_pyramid; -DRV BurnDrvmd_pyramid2; -DRV BurnDrvmd_pyramid3; -DRV BurnDrvmd_pyramids; -DRV BurnDrvmd_quacksht; -DRV BurnDrvmd_quacksht1; -DRV BurnDrvmd_quadchal; -DRV BurnDrvQuarteta; -DRV BurnDrvQuartet; -DRV BurnDrvQuartet2; -DRV BurnDrvQuartet2a; -DRV BurnDrvQuarth; -DRV BurnDrvmd_qpoker; -DRV BurnDrvCpsQadjr; -DRV BurnDrvCpsQad; -DRV BurnDrvQzchikyu; -DRV BurnDrvQcrayon; -DRV BurnDrvQuizdaisk; -DRV BurnDrvQuizdais; -DRV BurnDrvHotdebut; -DRV BurnDrvQuizf1; -DRV BurnDrvQgakumon; -DRV BurnDrvQuizhq; -DRV BurnDrvQjinsei; -DRV BurnDrvquizkofk; -DRV BurnDrvquizkof; -DRV BurnDrvQzkklogy; -DRV BurnDrvQzkklgy2; -DRV BurnDrvQuizdai2; -DRV BurnDrvCpsQndream; -DRV BurnDrvQuizo; -DRV BurnDrvQzquest; -DRV BurnDrvQsangoku; -DRV BurnDrvQzshowby; -DRV BurnDrvQtono1; -DRV BurnDrvCpsQtono2j; -DRV BurnDrvQtorimon; -DRV BurnDrvpce_quizts; -DRV BurnDrvtg_rtype; -DRV BurnDrvRtypejp; -DRV BurnDrvRtypej; -DRV BurnDrvRtypeu; -DRV BurnDrvRtypeb; -DRV BurnDrvRtype; -DRV BurnDrvRtype2; -DRV BurnDrvRtype2j; -DRV BurnDrvRtype2jc; -DRV BurnDrvRtypelej; -DRV BurnDrvRtypeleo; -DRV BurnDrvpce_rtypep1; -DRV BurnDrvpce_rtypep2; -DRV BurnDrvmd_rbibb93; -DRV BurnDrvmd_rbibb94; -DRV BurnDrvmd_rbibb3; -DRV BurnDrvmd_rbibb4j; -DRV BurnDrvmd_rbibb4p; -DRV BurnDrvmd_rbibb4; -DRV BurnDrvRpunch; -DRV BurnDrvRabiolep; -DRV BurnDrvpce_rabiolep; -DRV BurnDrvmd_racedriv; -DRV BurnDrvRacingb; -DRV BurnDrvpce_racindam; -DRV BurnDrvRachero; -DRV BurnDrvRacknrol; -DRV BurnDrvRadarscp; -DRV BurnDrvRadarscp1; -DRV BurnDrvmd_radicasf; -DRV BurnDrvmd_radicav1; -DRV BurnDrvmd_radrex; -DRV BurnDrvmd_radrexu; -DRV BurnDrvRaflesia; -DRV BurnDrvrotd; -DRV BurnDrvmd_ragnacenk; -DRV BurnDrvragnagrd; -DRV BurnDrvtg_raiden; -DRV BurnDrvpce_raiden; -DRV BurnDrvRaidenk; -DRV BurnDrvRaiden; -DRV BurnDrvRaidena; -DRV BurnDrvRaidenb; -DRV BurnDrvRaident; -DRV BurnDrvRaidenu; -DRV BurnDrvRaidenua; -DRV BurnDrvmd_raiden; -DRV BurnDrvRaiga; -DRV BurnDrvStratof; -DRV BurnDrvRchasej; -DRV BurnDrvRchase; -DRV BurnDrvRbislande; -DRV BurnDrvRbisland; -DRV BurnDrvRbislando; -DRV BurnDrvmd_rbisland; -DRV BurnDrvRallybik; -DRV BurnDrvRallyxa; -DRV BurnDrvRallyx; -DRV BurnDrvRallyxm; -DRV BurnDrvRallyxmr; -DRV BurnDrvRambo3; -DRV BurnDrvRambo3p; -DRV BurnDrvRambo3u; -DRV BurnDrvmd_rambo3a; -DRV BurnDrvmd_rambo3; -DRV BurnDrvmd_rampartj; -DRV BurnDrvmd_rampart; -DRV BurnDrvmd_rangerx; -DRV BurnDrvmd_rangerxu; -DRV BurnDrvmd_ransei; -DRV BurnDrvRaphero; -DRV BurnDrvRastanu; -DRV BurnDrvRastanua; -DRV BurnDrvRastanub; -DRV BurnDrvRastan; -DRV BurnDrvRastana; -DRV BurnDrvRastsaga; -DRV BurnDrvRastsagaa; -DRV BurnDrvRastsag2; -DRV BurnDrvpce_rastan2; -DRV BurnDrvmd_rastan2j; -DRV BurnDrvmd_rastan2; -DRV BurnDrvphotoy2k102; -DRV BurnDrvrbff1a; -DRV BurnDrvrbff1; -DRV BurnDrvrbff2k; -DRV BurnDrvrbff2h; -DRV BurnDrvrbff2; -DRV BurnDrvrbffspec; -DRV BurnDrvrbffspeck; -DRV BurnDrvRedearthr1; -DRV BurnDrvRedearth; -DRV BurnDrvRedfoxwp2; -DRV BurnDrvRedfoxwp2a; -DRV BurnDrvRedhawke; -DRV BurnDrvRedhawki; -DRV BurnDrvRedhawk; -DRV BurnDrvmd_redzone; -DRV BurnDrvReguluso; -DRV BurnDrvRegulus; -DRV BurnDrvRegulusu; -DRV BurnDrvRenegade; -DRV BurnDrvmd_renthero; -DRV BurnDrvRepulse; -DRV BurnDrvRescue; -DRV BurnDrvmd_resq; -DRV BurnDrvRetofinv; -DRV BurnDrvRetofin1; -DRV BurnDrvRetofin2; -#if defined FBA_DEBUG -DRV BurnDrvRevenger; // Bad dump [NOT WORKING] -#endif -DRV BurnDrvmd_revx; -DRV BurnDrvRezon; -DRV BurnDrvRezont; -DRV BurnDrvmd_rhl2k7; -DRV BurnDrvmd_rsbtp7; -DRV BurnDrvmd_rsbtp6; -DRV BurnDrvmd_rsbtp5; -DRV BurnDrvmd_rsbtp4; -DRV BurnDrvmd_rsbtp3; -DRV BurnDrvmd_rsbtp2; -DRV BurnDrvmd_rsbtp1; -DRV BurnDrvmd_rsbt; -DRV BurnDrvmd_rickdang; -DRV BurnDrvmd_riddle; -DRV BurnDrvRidhero; -DRV BurnDrvRidheroh; -DRV BurnDrvRingohja; -DRV BurnDrvCpsRingdesta; -DRV BurnDrvCpsRingdstd; -DRV BurnDrvCpsRingdest; -DRV BurnDrvmd_ringspow; -DRV BurnDrvRiot; -DRV BurnDrvRiotcity; -DRV BurnDrvmd_riserobo; -DRV BurnDrvmd_risk; -DRV BurnDrvRiskchal; -DRV BurnDrvmd_riskyw; -DRV BurnDrvmd_ristar1; -DRV BurnDrvmd_ristar; -DRV BurnDrvmd_ristarp4; -DRV BurnDrvmd_ristarp3; -DRV BurnDrvmd_ristarp2; -DRV BurnDrvmd_ristarp1; -DRV BurnDrvmd_ristarj; -DRV BurnDrvmd_rrash3; -DRV BurnDrvmd_rrash3p; -DRV BurnDrvmd_roadrash; -DRV BurnDrvmd_rrash2a; -DRV BurnDrvmd_rrash2; -DRV BurnDrvmd_rrash2j; -DRV BurnDrvmd_roadblstj; -DRV BurnDrvmd_roadblst; -DRV BurnDrvRoboarmy; -DRV BurnDrvrobocopi; -DRV BurnDrvRobocopj; -DRV BurnDrvRobocopu0; -DRV BurnDrvRobocopu; -DRV BurnDrvRobocopb; -DRV BurnDrvRobocopw; -DRV BurnDrvRobocop; -DRV BurnDrvRobocop2; -DRV BurnDrvRobocop2j; -DRV BurnDrvRobocop2u; -DRV BurnDrvmd_robocop3; -DRV BurnDrvmd_roboterm; -DRV BurnDrvmd_robotermj; -DRV BurnDrvmd_robotermp; -DRV BurnDrvmd_robotermp1; -DRV BurnDrvmd_robotermu; -DRV BurnDrvmd_robotbat; -DRV BurnDrvmd_robowrek; -DRV BurnDrvRockclim; -DRV BurnDrvrockduck; -DRV BurnDrvmd_rnrracin; -DRV BurnDrvmd_rnrracinu; -DRV BurnDrvpce_rockon; -DRV BurnDrvmd_rocket; -DRV BurnDrvmd_rocketj; -DRV BurnDrvmd_rocketu; -DRV BurnDrvCpsRockmanj; -DRV BurnDrvCpsRockman2j; -DRV BurnDrvmd_rockman; -DRV BurnDrvmd_rockman1; -DRV BurnDrvmd_rockmnx3; -DRV BurnDrvCpsRmancp2j; -DRV BurnDrvmd_mvpbb; -DRV BurnDrvRohga1; -DRV BurnDrvRohga2; -DRV BurnDrvRohga; -DRV BurnDrvRohgah; -DRV BurnDrvRohgau; -DRV BurnDrvRollergj; -DRV BurnDrvRollerg; -DRV BurnDrvmd_rthun2; -DRV BurnDrvmd_rthun2j; -DRV BurnDrvmd_rthun2u; -DRV BurnDrvmd_rthun3; -DRV BurnDrvmd_rolo; -DRV BurnDrvmd_roman3k2; -DRV BurnDrvmd_roman3k3; -DRV BurnDrvmd_dinho98; -DRV BurnDrvroute16; -DRV BurnDrvroute16b; -DRV BurnDrvroute16a; -DRV BurnDrvroutex; -#if defined FBA_DEBUG -DRV BurnDrvRascot; // no comment -#endif -DRV BurnDrvmd_royalbld; -DRV BurnDrvmd_rugbywc; -DRV BurnDrvRunark; -DRV BurnDrvmd_runark; -DRV BurnDrvRushcrsh; -DRV BurnDrvRushatck; -DRV BurnDrvRygar; -DRV BurnDrvRygar2; -DRV BurnDrvRygar3; -DRV BurnDrvRygarb; -DRV BurnDrvRyujin; -DRV BurnDrvRyukyu; -DRV BurnDrvmd_ryukoken; -DRV BurnDrvpce_ryukyu; -DRV BurnDrvSpyu; -DRV BurnDrvSpy; -DRV BurnDrvSrdmissn; -DRV BurnDrvmd_manover; -DRV BurnDrvSsmissin; -#if defined FBA_DEBUG -DRV BurnDrvSvgpcb; // Incomplete Dump [NOT WORKING] -DRV BurnDrvSvg; // Incomplete Dump [NOT WORKING] -#endif -DRV BurnDrvSabotenb; -DRV BurnDrvSabotenba; -DRV BurnDrvpce_sadaki7; -DRV BurnDrvmd_sagaia; -DRV BurnDrvNspiritj; -DRV BurnDrvpce_saigonin; -DRV BurnDrvmd_sswordj; -DRV BurnDrvmd_ssword; -DRV BurnDrvpce_salamand; -DRV BurnDrvSamesame; -DRV BurnDrvmd_samesame; -DRV BurnDrvSamesame2; -DRV BurnDrvSamuraiA; -DRV BurnDrvmd_samsho; -DRV BurnDrvmd_samshou; -DRV BurnDrvSamShoh; -DRV BurnDrvSamSho; -DRV BurnDrvSamSho2; -DRV BurnDrvSamSho3h; -DRV BurnDrvSamSho3; -DRV BurnDrvSamSho4; -DRV BurnDrvsamsho5b; -DRV BurnDrvsamsho5h; -DRV BurnDrvsamsho5; -DRV BurnDrvsamsh5spho; -DRV BurnDrvsamsh5sph; -DRV BurnDrvsamsh5sp; -DRV BurnDrvmd_samspir; -DRV BurnDrvtg_samuraig; -DRV BurnDrvmd_sanguo; -DRV BurnDrvmd_sanguo5; -DRV BurnDrvmd_sansan; -DRV BurnDrvCpsWofa; -DRV BurnDrvCpsWofah; -DRV BurnDrvCpsWofaha; -DRV BurnDrvCpsWofahb; -DRV BurnDrvmd_sangoku2; -DRV BurnDrvCpsWofhfh; -DRV BurnDrvCpsWof3js; -DRV BurnDrvCpsWof3jsa; -DRV BurnDrvCpsWof3sj; -DRV BurnDrvCpsWof3sja; -DRV BurnDrvCpsWofh; -DRV BurnDrvCpsWofha; -DRV BurnDrvCpsSgyxz; -DRV BurnDrvCpsWofsj; -DRV BurnDrvCpsWofsja; -DRV BurnDrvCpsWofsjb; -DRV BurnDrvmd_sangoku3; -DRV BurnDrvmd_sangoret; -DRV BurnDrvSsanchan; -DRV BurnDrvsercharj; -DRV BurnDrvsercharu; -DRV BurnDrvsearchar; -DRV BurnDrvCpsSlampic; -// BurnDrvCpsSlammasa; // no comment -DRV BurnDrvCpsSlammast; -// BurnDrvCpsSlammash; // no comment -DRV BurnDrvCpsSlammastu; -DRV BurnDrvmd_slammast; -DRV BurnDrvmd_slammastu; -DRV BurnDrvSaturnzi; -DRV BurnDrvsamsho2k; -DRV BurnDrvSavgbees; -DRV BurnDrvSavagere; -DRV BurnDrvSchmeisr; -DRV BurnDrvmd_msbp06; -DRV BurnDrvmd_msbp05; -DRV BurnDrvmd_msbp04; -DRV BurnDrvmd_msbp03; -DRV BurnDrvmd_msbp02; -DRV BurnDrvmd_msbp01; -DRV BurnDrvmd_msb; -DRV BurnDrvmd_scooby; -DRV BurnDrvScotrsht; -DRV BurnDrvScorpionmc; -DRV BurnDrvScorpion; -DRV BurnDrvScorpiona; -DRV BurnDrvScorpionb; -DRV BurnDrvmd_scrabble; -DRV BurnDrvScramble; -DRV BurnDrvScramblb; -DRV BurnDrvScramb2; -DRV BurnDrvScramblebb; -DRV BurnDrvScramblebf; -DRV BurnDrvScrampt; -DRV BurnDrvScrambler; -DRV BurnDrvScrambles; -DRV BurnDrvscregg; -DRV BurnDrvSdfight; -DRV BurnDrvNeobattl; -DRV BurnDrvSdgndmps; -DRV BurnDrvmd_sdvalis; -DRV BurnDrvSdibl; -DRV BurnDrvSdi; -DRV BurnDrvSdib; -DRV BurnDrvmd_seaquest; -DRV BurnDrvmd_seaquestu; -DRV BurnDrvSearchey; -DRV BurnDrvSearchp2; -DRV BurnDrvSecretag; -DRV BurnDrvSectionz; -DRV BurnDrvSctionza; -DRV BurnDrvmd_segachnla; -DRV BurnDrvmd_segachnl; -DRV BurnDrvmd_segachd; -DRV BurnDrvSeganinj; -DRV BurnDrvSeganinju; -DRV BurnDrvmd_segasprt; -DRV BurnDrvmd_segatop; -DRV BurnDrvAmatelas; -DRV BurnDrvSscandal; -DRV BurnDrvpce_sekigaha; -DRV BurnDrvSelfeena; -DRV BurnDrvGrdnstrmk; -DRV BurnDrvSengokuh; -DRV BurnDrvSengoku; -DRV BurnDrvSengoku2; -DRV BurnDrvSengoku3; -DRV BurnDrvSngkAce; -DRV BurnDrvpce_sengokmj; -DRV BurnDrvCpsMercsj; -DRV BurnDrvCommandj; -DRV BurnDrvmd_sensible; -DRV BurnDrvmd_sensiblep; -DRV BurnDrvmd_sensibie; -DRV BurnDrvmd_sesame; -#if defined FBA_DEBUG -DRV BurnDrvSetaroul; // no comment [NOT WORKING] -#endif -DRV BurnDrvmd_opensea; -DRV BurnDrvmd_opensea3; -DRV BurnDrvSfx; -DRV BurnDrvShackled; -DRV BurnDrvmd_shadow; -#if defined FBA_DEBUG -DRV BurnDrvShdancbl; // no comment [NOT WORKING] -#endif -DRV BurnDrvShdancer1; -DRV BurnDrvShdancerj; -DRV BurnDrvShdancer; -DRV BurnDrvmd_shdancer; -DRV BurnDrvShadfrcjv2; -DRV BurnDrvShadfrcj; -DRV BurnDrvShadfrce; -DRV BurnDrvmd_beast; -DRV BurnDrvbeast; -DRV BurnDrvmd_beastj; -DRV BurnDrvmd_beast2; -DRV BurnDrvShadoww; -DRV BurnDrvShadowwa; -DRV BurnDrvmd_shadowrnj; -DRV BurnDrvmd_shadowrn; -DRV BurnDrvmd_shadowrnp4; -DRV BurnDrvmd_shadowrnp3; -DRV BurnDrvmd_shadowrnp1; -DRV BurnDrvmd_shadowrnp2; -DRV BurnDrvmd_shanewar; -DRV BurnDrvpce_shanghai; -DRV BurnDrvmd_shangh2; -DRV BurnDrvmd_shangh2p; -DRV BurnDrvmd_shangh2p1; -DRV BurnDrvmd_shaqfu; -DRV BurnDrvmd_shijie; -DRV BurnDrvmd_labdeathgnk; -DRV BurnDrvmd_labdeath; -DRV BurnDrvmd_lionkin2; -DRV BurnDrvmd_lionkin2a; -DRV BurnDrvmd_sokoban; -DRV BurnDrvmd_shikinjo; -DRV BurnDrvmd_ragnacen; -DRV BurnDrvmd_ragnacenp; -DRV BurnDrvmd_shindarkj; -DRV BurnDrvmd_shinfrce; -DRV BurnDrvmd_shinfrcep; -DRV BurnDrvmd_shinfrcej; -DRV BurnDrvmd_shinfrc2; -DRV BurnDrvmd_shinfrc2u; -DRV BurnDrvmd_shinfrc2p2; -DRV BurnDrvmd_shinfrc2p1; -DRV BurnDrvmd_shinfrc2j; -DRV BurnDrvmd_shindarkbr; -DRV BurnDrvmd_shindark; -DRV BurnDrvpce_shinobi; -DRV BurnDrvShinoblb; -DRV BurnDrvShinobi1; -DRV BurnDrvShinobi2; -DRV BurnDrvShinobi3; -DRV BurnDrvShinobi4; -DRV BurnDrvShinobi5; -DRV BurnDrvShinobi; -DRV BurnDrvShinobls; -DRV BurnDrvShinfz; -DRV BurnDrvmd_shinobi3; -DRV BurnDrvmd_shinobi3u; -DRV BurnDrvmd_ship; -DRV BurnDrvShippuMD; -DRV BurnDrvpce_shiryo; -DRV BurnDrvShisen2; -DRV BurnDrvmd_shiten; -DRV BurnDrvshocktro; -DRV BurnDrvshocktroa; -DRV BurnDrvshocktr2; -DRV BurnDrvShocking; -DRV BurnDrvtg_shockman; -#if defined FBA_DEBUG -DRV BurnDrvshootbul; // Analog inputs not hooked up [NOT WORKING] -#endif -DRV BurnDrvmd_shougi; -DRV BurnDrvpce_shogisi; -DRV BurnDrvpce_shogism; -DRV BurnDrvmd_shoveit; -DRV BurnDrvmd_sdmilhao; -DRV BurnDrvmd_sdmilha2; -DRV BurnDrvmd_sdmilha2a; -DRV BurnDrvmd_shrek; -DRV BurnDrvmd_shrek2; -DRV BurnDrvmd_shuihu; -DRV BurnDrvmd_shuihuzh; -DRV BurnDrvmd_shuramon; -DRV BurnDrvSidepcktb; -DRV BurnDrvSidepcktb2; -DRV BurnDrvmd_sidepock; -DRV BurnDrvSidepcktj; -DRV BurnDrvmd_sidepockj; -DRV BurnDrvmd_sidepocku; -DRV BurnDrvSidepckt; -DRV BurnDrvpce_sidearms; -DRV BurnDrvtg_sidearms; -DRV BurnDrvpce_silentd; -DRV BurnDrvtg_silentd; -DRV BurnDrvSilentdj; -DRV BurnDrvSilentdu; -DRV BurnDrvSilentd; -DRV BurnDrvSilkworm; -DRV BurnDrvSilkwormb; -DRV BurnDrvSilkwrmj; -DRV BurnDrvSilvmil; -DRV BurnDrvpce_sindibad; -DRV BurnDrvtg_sinistrn; -#if defined FBA_DEBUG -DRV BurnDrvSkelagon; // Bad Dump [NOT WORKING] -#endif -DRV BurnDrvmd_skelkrew; -DRV BurnDrvmd_skelkrewu; -DRV BurnDrvmd_skitchin; -DRV BurnDrvpce_skweek; -DRV BurnDrvSkybase; -DRV BurnDrvSkyfox; -DRV BurnDrvSkykidd; -DRV BurnDrvSkykid; -DRV BurnDrvSkykido; -DRV BurnDrvSkykids; -DRV BurnDrvskylancr; -DRV BurnDrvskylance; -DRV BurnDrvSkyraidr; -DRV BurnDrvSkysmash; -DRV BurnDrvSkywolf; -DRV BurnDrvSkywolf2; -DRV BurnDrvSkywolf3; -DRV BurnDrvmd_slamshaq; -DRV BurnDrvSlapBtJP; -DRV BurnDrvSlapBtUK; -DRV BurnDrvSlapFghtr; -DRV BurnDrvSlapFigh; -DRV BurnDrvmd_slapfigh; -DRV BurnDrvSlapshot; -DRV BurnDrvmd_slaughtr; -DRV BurnDrvmd_slimewj; -DRV BurnDrvSlyspy2; -DRV BurnDrvSlyspy; -DRV BurnDrvmd_snakernr; -DRV BurnDrvSnapjack; -DRV BurnDrvSnapper; -DRV BurnDrvmd_snezkoro; -DRV BurnDrvsvcboot; -DRV BurnDrvsvcpcb; -DRV BurnDrvsvcpcba; -DRV BurnDrvsvc; -DRV BurnDrvsvcplus; -DRV BurnDrvsvcplusa; -DRV BurnDrvsvcsplus; -DRV BurnDrvSnowbrod; -DRV BurnDrvSnowbroj; -DRV BurnDrvmd_snowbros; -DRV BurnDrvSnowbros; -DRV BurnDrvSnowbroa; -DRV BurnDrvSnowbrob; -DRV BurnDrvSnowbroc; -DRV BurnDrvSnowbroswb; -DRV BurnDrvSnowbro2; -DRV BurnDrvSnowbro3; -DRV BurnDrvSocbrawlh; -DRV BurnDrvSocbrawl; -DRV BurnDrvmd_socket; -DRV BurnDrvpce_sokoban; -DRV BurnDrvSokonuke; -DRV BurnDrvSoldivid; -DRV BurnDrvmd_soldeace; -DRV BurnDrvpce_soldblad; -DRV BurnDrvtg_soldblad; -DRV BurnDrvpce_soldblas; -DRV BurnDrvAmazon; -DRV BurnDrvmd_soldfort; -DRV BurnDrvmd_soleil; -DRV BurnDrvmd_soleilf; -DRV BurnDrvmd_soleilg; -DRV BurnDrvmd_soleils; -DRV BurnDrvSolfigtr; -DRV BurnDrvSolomonj; -DRV BurnDrvSolomon; -DRV BurnDrvtg_somerass; -DRV BurnDrvSonofphx; -DRV BurnDrvSonson; -DRV BurnDrvSonsonj; -DRV BurnDrvpce_sonson2; -DRV BurnDrvmd_skp12; -DRV BurnDrvmd_skp11; -DRV BurnDrvmd_skp10; -DRV BurnDrvmd_skp09; -DRV BurnDrvmd_skp08; -DRV BurnDrvmd_skp07; -DRV BurnDrvmd_skp06; -DRV BurnDrvmd_skp05; -DRV BurnDrvmd_skp04; -DRV BurnDrvmd_skp02; -DRV BurnDrvmd_skp03; -DRV BurnDrvmd_skp01; -DRV BurnDrvmd_sk; -DRV BurnDrvmd_sks1; -DRV BurnDrvmd_sks2; -DRV BurnDrvmd_sks3; -DRV BurnDrvmd_sonic3c; -DRV BurnDrvmd_sonic3ca; -DRV BurnDrvmd_sonic3d; -DRV BurnDrvmd_sonic3dp8; -DRV BurnDrvmd_sonic3dp7; -DRV BurnDrvmd_sonic3dp6; -DRV BurnDrvmd_sonic3dp5; -DRV BurnDrvmd_sonic3dp4; -DRV BurnDrvmd_sonic3dp3; -DRV BurnDrvmd_sonic3dp2; -DRV BurnDrvmd_sonic3dp1; -DRV BurnDrvSbm; -DRV BurnDrvSonicbom; -DRV BurnDrvmd_soniccmp; -DRV BurnDrvmd_soniccmp1; -DRV BurnDrvmd_scrack; -DRV BurnDrvmd_sonicer; -DRV BurnDrvmd_sonicjam; -DRV BurnDrvmd_sonicjam1; -DRV BurnDrvmd_sonicjam2; -DRV BurnDrvtg_wbeach; -DRV BurnDrvmd_sspin; -DRV BurnDrvmd_sspinj; -DRV BurnDrvmd_sspinp; -DRV BurnDrvmd_sspinu; -DRV BurnDrvmd_sspinua; -DRV BurnDrvmd_sonic; -DRV BurnDrvmd_sonicj; -DRV BurnDrvmd_sonicpir; -DRV BurnDrvmd_sonic2p8; -DRV BurnDrvmd_sonic2p7; -DRV BurnDrvmd_sonic2p6; -DRV BurnDrvmd_sonic2p5; -DRV BurnDrvmd_sonic2p4; -DRV BurnDrvmd_sonic2p3; -DRV BurnDrvmd_sonic2p2; -DRV BurnDrvmd_sonic2a; -DRV BurnDrvmd_sonic2p1; -DRV BurnDrvmd_sonic2b; -DRV BurnDrvmd_sonic2; -DRV BurnDrvmd_sonic2c; -DRV BurnDrvmd_sonic3; -DRV BurnDrvmd_sonic3j; -DRV BurnDrvmd_sonic3pir; -DRV BurnDrvmd_sonic3u; -DRV BurnDrvSonicwi; -DRV BurnDrvmd_sorcerkj; -DRV BurnDrvSStriker; -DRV BurnDrvSStrikrA; -DRV BurnDrvmd_sorcerk1; -DRV BurnDrvmd_sorcerk; -DRV BurnDrvmd_sorcer; -DRV BurnDrvSotsugyo; -DRV BurnDrvmd_soulblad; -DRV BurnDrvmd_soulblada; -DRV BurnDrvmd_souledge; -DRV BurnDrvmd_souledgea; -DRV BurnDrvmd_sndtool; -DRV BurnDrvSpacbatt; -DRV BurnDrvSpacbat2; -DRV BurnDrvSbsgomo; -DRV BurnDrvSbombera; -DRV BurnDrvSbomber; -DRV BurnDrvSpcdrag; -DRV BurnDrvSpcdraga; -DRV BurnDrvspacecho; -DRV BurnDrvSpacempr; -DRV BurnDrvmd_spacebob; -DRV BurnDrvSpacegun; -DRV BurnDrvtg_sharrier; -DRV BurnDrvpce_sharrier; -DRV BurnDrvSharrier1; -DRV BurnDrvSharrier; -DRV BurnDrvmd_sharrierj; -DRV BurnDrvmd_sharrier; -DRV BurnDrvpce_spaceinv; -DRV BurnDrvmd_sinv90; -DRV BurnDrvmd_sinv91; -DRV BurnDrvSpacedxo; -DRV BurnDrvSpacedxj; -DRV BurnDrvSpacedx; -DRV BurnDrvGalap1; -DRV BurnDrvSinvasnb; -DRV BurnDrvSinvasn; -DRV BurnDrvSpcpostn; -DRV BurnDrvSraider; -DRV BurnDrvSpctbird; -DRV BurnDrvmd_sparkstr; -DRV BurnDrvmd_sparkstrj; -DRV BurnDrvmd_sparkstru; -DRV BurnDrvSpartanx; -DRV BurnDrvSpatter; -DRV BurnDrvspeakres; -DRV BurnDrvpce_sci; -DRV BurnDrvScij; -DRV BurnDrvScinegro; -DRV BurnDrvSciu; -DRV BurnDrvSci; -DRV BurnDrvScia; -DRV BurnDrvSpec2k; -DRV BurnDrvSpdcoin; -DRV BurnDrvSpeedspn; -DRV BurnDrvmd_speedbl2; -DRV BurnDrvmd_speedbl2j; -DRV BurnDrvmd_speedbl2u; -DRV BurnDrvSpelunkr; -DRV BurnDrvSpelunkrj; -DRV BurnDrvSpelunk2; -DRV BurnDrvmd_spidmaxc; -DRV BurnDrvmd_spidermn; -DRV BurnDrvmd_spidermnp1; -DRV BurnDrvmd_spidermnp2; -DRV BurnDrvmd_spidxmen; -DRV BurnDrvmd_spidking; -DRV BurnDrvspidermi; -DRV BurnDrvspinmast; -DRV BurnDrvpce_spinpair; -DRV BurnDrvSpinlbrj; -DRV BurnDrvSpinlbru; -DRV BurnDrvSpinlbrk; -DRV BurnDrvpce_spirwave; -DRV BurnDrvmd_spiritwf; -DRV BurnDrvmd_spirou; -DRV BurnDrvpce_splatth; -DRV BurnDrvtg_splatth; -DRV BurnDrvmd_splatth2; -DRV BurnDrvmd_splatth2u; -DRV BurnDrvmd_splatth3; -DRV BurnDrvmd_splatth2j; -DRV BurnDrvmd_splatth3j; -DRV BurnDrvmd_spongbob; -DRV BurnDrvmd_sportg; -DRV BurnDrvmd_sporttbb; -DRV BurnDrvmd_spotgo; -DRV BurnDrvmd_spotgou; -DRV BurnDrvSpringer; -DRV BurnDrvmd_spykids4; -DRV BurnDrvSquash; -DRV BurnDrvmd_squirrel; -DRV BurnDrvStagger1; -DRV BurnDrvstakwin; -DRV BurnDrvstakwin2; -DRV BurnDrvmd_starctrl; -DRV BurnDrvmd_starcrus; -DRV BurnDrvStarfght; -DRV BurnDrvStarfgmc; -DRV BurnDrvStarjack; -DRV BurnDrvStarjacks; -DRV BurnDrvmd_stds9; -DRV BurnDrvmd_stds9u; -DRV BurnDrvmd_sttngp04; -DRV BurnDrvmd_sttngp03; -DRV BurnDrvmd_sttngp02; -DRV BurnDrvmd_sttngp01; -DRV BurnDrvmd_sttngp06; -DRV BurnDrvmd_sttngp05; -DRV BurnDrvmd_sttnga; -DRV BurnDrvmd_sttng; -DRV BurnDrvmd_starwars; -DRV BurnDrvmd_starjedi; -DRV BurnDrvmd_starfl1; -DRV BurnDrvmd_starfl; -DRV BurnDrvmd_stargatep; -DRV BurnDrvmd_stargate; -DRV BurnDrvmd_steelemp; -DRV BurnDrvmd_steeltal; -DRV BurnDrvmd_steeltalj; -DRV BurnDrvmd_steeltalp; -DRV BurnDrvStera; -DRV BurnDrvmd_renstim; -DRV BurnDrvmd_renstimu; -DRV BurnDrvmd_renstimup; -DRV BurnDrvmd_stonprot; -DRV BurnDrvStoneage; -DRV BurnDrvmd_strmlordj; -DRV BurnDrvmd_strmlord; -DRV BurnDrvStrfbomb; -DRV BurnDrvpce_stratego; -DRV BurnDrvStratgyx; -DRV BurnDrvStratgys; -DRV BurnDrvstratvox; -DRV BurnDrvstratvob; -DRV BurnDrvStreakng; -DRV BurnDrvStreaknga; -DRV BurnDrvsfjp; -DRV BurnDrvsfp; -DRV BurnDrvsfu; -DRV BurnDrvsfua; -DRV BurnDrvsf; -// BurnDrvCpsSfach; // no comment -DRV BurnDrvCpsSfar3; -DRV BurnDrvCpsSfar2; -DRV BurnDrvCpsSfau; -DRV BurnDrvCpsSfar1; -DRV BurnDrvCpsSfad; -DRV BurnDrvCpsSfa; -DRV BurnDrvCpsSfaud; -DRV BurnDrvCpsSfa2; -DRV BurnDrvCpsSfa2ur1; -DRV BurnDrvCpsSfa2u; -DRV BurnDrvCpsSfa3b; -DRV BurnDrvCpsSfa3hr1; -DRV BurnDrvCpsSfa3ur1; -DRV BurnDrvCpsSfa3; -DRV BurnDrvCpsSfa3h; -DRV BurnDrvCpsSfa3ud; -DRV BurnDrvCpsSfa3u; -DRV BurnDrvCpsSf2amf; -DRV BurnDrvCpsSf2amf2; -DRV BurnDrvCpsSf2amf3; -DRV BurnDrvCpsSf2amf4; -DRV BurnDrvCpsSf2amf5; -DRV BurnDrvCpsSf2amf6; -DRV BurnDrvCpsSf2amf7; -DRV BurnDrvCpsSf2ua; -DRV BurnDrvCpsSf2eb; -DRV BurnDrvCpsSf2ja; -DRV BurnDrvCpsSf2ub; -DRV BurnDrvCpsSf2ee; -DRV BurnDrvCpsSf2ue; -DRV BurnDrvCpsSf2jc; -DRV BurnDrvCpsSf2uc; -DRV BurnDrvCpsSf2ud; -DRV BurnDrvCpsSf2jf; -DRV BurnDrvCpsSf2uf; -DRV BurnDrvCpsSf2; -DRV BurnDrvCpsSf2jh; -DRV BurnDrvCpsSf2ug; -DRV BurnDrvCpsSf2ui; -DRV BurnDrvCpsSf2uk; -DRV BurnDrvCpsSf2j; -DRV BurnDrvCpsSf2jl; -DRV BurnDrvCpsSf2b; -DRV BurnDrvCpsSf2b2; -DRV BurnDrvCpsSf2qp1; -DRV BurnDrvCpsSf2stt; -DRV BurnDrvCpsSf2ebbl; -DRV BurnDrvCpsSf2thndr; -DRV BurnDrvpce_sf2ce; -DRV BurnDrvCpsSf2ceeabl; -DRV BurnDrvCpsSf2ceeab2; -DRV BurnDrvCpsSf2ceuabl; -DRV BurnDrvCpsSf2ceuab2; -DRV BurnDrvCpsSf2ceuab3; -DRV BurnDrvCpsSf2ceuab4; -DRV BurnDrvCpsSf2ceuab5; -DRV BurnDrvCpsSf2ceuab6; -DRV BurnDrvCpsSf2cejabl; -DRV BurnDrvCpsSf2cejab2; -DRV BurnDrvCpsSf2ceucbl; -DRV BurnDrvCpsSf2accp2; -DRV BurnDrvCpsSf2acc; -DRV BurnDrvCpsSf2acca; -#if defined FBA_DEBUG -DRV BurnDrvCpsSf2any; // no comment [NOT WORKING] -// BurnDrvCpsSf2cebr; // no comment -// BurnDrvCpsSf2ceh; // no comment -#endif -DRV BurnDrvCpsSf2dkot2; -DRV BurnDrvCpsSf2bhh; -DRV BurnDrvCpsSf2mega; -DRV BurnDrvCpsSf2mega2; -DRV BurnDrvCpsSf2rb; -DRV BurnDrvCpsSf2rb2; -DRV BurnDrvCpsSf2rb3; -DRV BurnDrvCpsSf2rb4; -DRV BurnDrvCpsSf2rb5; -DRV BurnDrvCpsSf2rb6; -DRV BurnDrvCpsSf2red; -DRV BurnDrvCpsSf2red2; -DRV BurnDrvCpsSf2ceea; -DRV BurnDrvCpsSf2ceua; -DRV BurnDrvCpsSf2ceja; -DRV BurnDrvCpsSf2ce; -DRV BurnDrvCpsSf2cejb; -DRV BurnDrvCpsSf2ceub; -DRV BurnDrvCpsSf2cejc; -DRV BurnDrvCpsSf2ceuc; -DRV BurnDrvCpsSf2tlona; -DRV BurnDrvCpsSf2tlonb; -DRV BurnDrvCpsSf2tlonc; -DRV BurnDrvCpsSf2v004; -DRV BurnDrvCpsSf2v0042; -DRV BurnDrvCpsSf2v0043; -DRV BurnDrvCpsSf2yyc; -DRV BurnDrvCpsSf2yyc2; -#if defined FBA_DEBUG -DRV BurnDrvCpsSf2hfub; // no comment [NOT WORKING] -#endif -DRV BurnDrvCpsSf2hf; -DRV BurnDrvCpsSf2hfu; -DRV BurnDrvCpsSf2mdt; -DRV BurnDrvCpsSf2mdta; -DRV BurnDrvmd_sf2; -DRV BurnDrvmd_sf2u; -DRV BurnDrvCpsSf2koryu; -DRV BurnDrvCpsSf2koryu2; -DRV BurnDrvCpsSf2koryu3; -DRV BurnDrvmd_sf2j; -DRV BurnDrvmd_sf2pir; -DRV BurnDrvCpsSf2hfjb; -DRV BurnDrvCpsSf2hfjb2; -DRV BurnDrvCpsSf2hfj; -DRV BurnDrvCpsSf2dongb; -DRV BurnDrvSfiii2n; -DRV BurnDrvSfiii2j; -DRV BurnDrvSfiii2; -DRV BurnDrvSfiii3r1; -DRV BurnDrvSfiii3; -DRV BurnDrvSfiii3nr1; -DRV BurnDrvSfiii3n; -DRV BurnDrvSfiii3ur1; -DRV BurnDrvSfiii3u; -DRV BurnDrvSfiiin; -DRV BurnDrvSfiiih; -DRV BurnDrvSfiiij; -DRV BurnDrvSfiii; -DRV BurnDrvCpsSfzar1; -DRV BurnDrvCpsSfzjr2; -DRV BurnDrvCpsSfza; -DRV BurnDrvCpsSfzhr1; -DRV BurnDrvCpsSfzjr1; -DRV BurnDrvCpsSfzh; -DRV BurnDrvCpsSfzbr1; -DRV BurnDrvCpsSfzj; -DRV BurnDrvCpsSfzb; -// BurnDrvCpsSfzbch; // no comment -// BurnDrvCpsSfzech; // no comment -// BurnDrvCpsSfzhch; // no comment -// BurnDrvCpsSfzach; // no comment -DRV BurnDrvCpsSfzch; -DRV BurnDrvCpsSfz2ad; -DRV BurnDrvCpsSfz2a; -DRV BurnDrvCpsSfz2jd; -DRV BurnDrvCpsSfz2jr1; -DRV BurnDrvCpsSfz2n; -DRV BurnDrvCpsSfz2br1; -DRV BurnDrvCpsSfz2h; -DRV BurnDrvCpsSfz2j; -DRV BurnDrvCpsSfz2b; -DRV BurnDrvCpsSfz2alj; -DRV BurnDrvCpsSfz2alb; -DRV BurnDrvCpsSfz2alh; -DRV BurnDrvCpsSfz2ald; -DRV BurnDrvCpsSfz2al; -DRV BurnDrvCpsSfz3jr2d; -DRV BurnDrvCpsSfz3jr2; -DRV BurnDrvCpsSfz3ar1; -DRV BurnDrvCpsSfz3jr1; -DRV BurnDrvCpsSfz3a; -DRV BurnDrvCpsSfz3j; -DRV BurnDrvstrhoop; -DRV BurnDrvmd_sracer; -DRV BurnDrvstreetsj; -DRV BurnDrvmd_ssmart; -DRV BurnDrvstreets1; -DRV BurnDrvstreetsm; -DRV BurnDrvstreetsw; -DRV BurnDrvCpsFfightjh; -DRV BurnDrvmd_sora; -DRV BurnDrvmd_sor; -DRV BurnDrvmd_sor2u; -DRV BurnDrvmd_sor3; -DRV BurnDrvmd_sor3p5; -DRV BurnDrvmd_sor3p4; -DRV BurnDrvmd_sor3p3; -DRV BurnDrvmd_sor3p2; -DRV BurnDrvmd_sor3p1; -DRV BurnDrvmd_sor3k; -DRV BurnDrvmd_sor3up10; -DRV BurnDrvmd_sor3up09; -DRV BurnDrvmd_sor3up08; -DRV BurnDrvmd_sor3up07; -DRV BurnDrvmd_sor3up06; -DRV BurnDrvmd_sor3up05; -DRV BurnDrvmd_sor3up04; -DRV BurnDrvmd_sor3up03; -DRV BurnDrvmd_sor3up02; -DRV BurnDrvmd_sor3up01; -DRV BurnDrvmd_sor3u; -DRV BurnDrvmd_sor2; -DRV BurnDrvmd_strider; -DRV BurnDrvCpsStrider; -DRV BurnDrvCpsStriderua; -DRV BurnDrvCpsStriderjr; -DRV BurnDrvCpsStriderj; -DRV BurnDrvmd_striderj; -DRV BurnDrvmd_strider2; -DRV BurnDrvmd_strider2u; -DRV BurnDrvStrkfgtr; -DRV BurnDrvStg; -DRV BurnDrvmd_striker; -DRV BurnDrvmd_strikerp; -DRV BurnDrvS1945; -DRV BurnDrvS1945a; -DRV BurnDrvS1945j; -DRV BurnDrvS1945jn; -DRV BurnDrvS1945k; -DRV BurnDrvS1945ii; -DRV BurnDrvS1945iii; -DRV BurnDrvs1945p; -DRV BurnDrvpce_stripf2; -DRV BurnDrvStrongx; -DRV BurnDrvmd_subterr; -DRV BurnDrvmd_subterrj; -DRV BurnDrvmd_subterrp3; -DRV BurnDrvmd_subterrp1; -DRV BurnDrvmd_subterrp2; -DRV BurnDrvmd_subterru; -DRV BurnDrvScessjoe; -DRV BurnDrvSjryuko1; -DRV BurnDrvSjryuko; -DRV BurnDrvmd_summer; -DRV BurnDrvSunaq; -DRV BurnDrvSsridersabd; -DRV BurnDrvSsridersebc; -DRV BurnDrvSsridersebd; -DRV BurnDrvSsridersjbd; -DRV BurnDrvSsridersubc; -DRV BurnDrvSsridersadd; -DRV BurnDrvSsriderseaa; -DRV BurnDrvSsriders; -DRV BurnDrvSsridersjac; -DRV BurnDrvSsridersuab; -DRV BurnDrvSsridersuac; -DRV BurnDrvSsridersuda; -#if defined FBA_DEBUG -DRV BurnDrvSsridersb; // no comment [NOT WORKING] -#endif -DRV BurnDrvmd_ssriders; -DRV BurnDrvmd_ssridersu; -DRV BurnDrvmd_s15in1; -DRV BurnDrvmd_s19in1; -DRV BurnDrvmd_superair; -DRV BurnDrvSuperbar; -DRV BurnDrvmd_2020bb; -DRV BurnDrvmd_sbship; -DRV BurnDrvSboblboa; -DRV BurnDrvSboblbob; -DRV BurnDrvmd_suprbubl; -#if defined FBA_DEBUG -DRV BurnDrvsbp; // no comment [NOT WORKING] -#endif -DRV BurnDrvSupbtimej; -DRV BurnDrvSupbtime; -DRV BurnDrvSupbtimea; -DRV BurnDrvSbbros; -DRV BurnDrvsucasino; -DRV BurnDrvSuperchsj; -DRV BurnDrvSuperchsu; -DRV BurnDrvSuperchs; -DRV BurnDrvScobra; -DRV BurnDrvScobrab; -DRV BurnDrvScobrase; -DRV BurnDrvScobras; -DRV BurnDrvScontra; -DRV BurnDrvScontraj; -DRV BurnDrvmd_supdaisna; -DRV BurnDrvmd_supdaisn; -DRV BurnDrvsdodgeb; -DRV BurnDrvmd_sdkong99; -DRV BurnDrvmd_sdkong99a; -DRV BurnDrvmd_sfzone; -DRV BurnDrvmd_sfzonej; -DRV BurnDrvSuperg; -DRV BurnDrvCpsSgemfa; -DRV BurnDrvCpsSgemfh; -DRV BurnDrvCpsSgemfd; -DRV BurnDrvCpsSgemf; -DRV BurnDrvSuprglob; -DRV BurnDrvsprglobp; -DRV BurnDrvsprglbpg; -#if defined FBA_DEBUG -DRV BurnDrvSupergx; // Bad Dump [NOT WORKING] -#endif -DRV BurnDrvmd_superhq; -#if defined FBA_DEBUG -DRV BurnDrvShangonrb; // no comment [NOT WORKING] -DRV BurnDrvShangonro; // no comment [NOT WORKING] -#endif -DRV BurnDrvShangon2; -DRV BurnDrvShangon3; -DRV BurnDrvShangon; -DRV BurnDrvmd_shangon1; -DRV BurnDrvmd_shangon; -DRV BurnDrvSuprheli; -DRV BurnDrvmd_shimpact; -DRV BurnDrvmd_suphydl; -DRV BurnDrvmd_suphydlj; -DRV BurnDrvmd_suphydlu; -DRV BurnDrvmd_skickoff; -DRV BurnDrvmd_skkong99; -DRV BurnDrvmd_suprleag; -DRV BurnDrvSuprleag; -DRV BurnDrvmd_suprleagj; -DRV BurnDrvSuprlocoo; -DRV BurnDrvSuprloco; -DRV BurnDrvmd_smario2a; -DRV BurnDrvmd_smario2; -DRV BurnDrvmd_smbbc; -#if defined FBA_DEBUG -DRV BurnDrvrSuperMarioWorldEurope;// no comment -DRV BurnDrvrSMW; // no comment -DRV BurnDrvrSuperMarioWorldJapan;// no comment -DRV BurnDrvrSuperMarioWorldUSA;// no comment -#endif -DRV BurnDrvmd_smario64; -DRV BurnDrvmd_smario64h; -DRV BurnDrvmd_smb; -DRV BurnDrvmd_smbb; -DRV BurnDrvmd_smba; -DRV BurnDrvMarukin; -DRV BurnDrvpce_smcrush; -DRV BurnDrvSupmodel; -DRV BurnDrvpce_smomo; -DRV BurnDrvpce_smomo2; -DRV BurnDrvmd_smgpa; -DRV BurnDrvmd_smgp; -DRV BurnDrvSmgpja; -DRV BurnDrvSmgpj; -DRV BurnDrvmd_smgpj; -DRV BurnDrvSmgpu2; -DRV BurnDrvSmgpu1; -DRV BurnDrvSmgpu; -DRV BurnDrvmd_smgpu; -DRV BurnDrvSmgp5; -DRV BurnDrvSmgp6; -DRV BurnDrvSmgp; -DRV BurnDrvSmooncrs; -DRV BurnDrvCpsSmbombr1; -DRV BurnDrvCpsSmbomb; -DRV BurnDrvmd_superoff; -DRV BurnDrvmd_jordanb1; -DRV BurnDrvmd_jordanb; -DRV BurnDrvmd_jordanbj; -DRV BurnDrvSpangj; -DRV BurnDrvSpang; -DRV BurnDrvCpsSpf2ta; -DRV BurnDrvCpsSpf2th; -DRV BurnDrvCpsSpf2td; -DRV BurnDrvCpsSpf2t; -DRV BurnDrvCpsSpf2xjd; -DRV BurnDrvCpsSpf2xj; -DRV BurnDrvmd_srealbas; -DRV BurnDrvmd_srealbasj; -DRV BurnDrvSrdarwnj; -DRV BurnDrvSrdarwin; -DRV BurnDrvmd_srobowrs; -DRV BurnDrvSsideki; -DRV BurnDrvSsideki2; -DRV BurnDrvSsideki3; -DRV BurnDrvmd_sskid; -DRV BurnDrvmd_sskidp; -DRV BurnDrvmd_ssmashtv; -DRV BurnDrvSsi; -DRV BurnDrvMacross; -DRV BurnDrvMacross2; -DRV BurnDrvSstarcrs; -DRV BurnDrvpce_sssoldr; -DRV BurnDrvtg_sssoldr; -DRV BurnDrvmd_ssf2; -DRV BurnDrvmd_ssf2j; -DRV BurnDrvCpsSsf2jr2; -DRV BurnDrvCpsSsf2d; -DRV BurnDrvCpsSsf2; -DRV BurnDrvCpsSsf2h; -DRV BurnDrvCpsSsf2jr1; -DRV BurnDrvCpsSsf2ud; -DRV BurnDrvCpsSsf2u; -DRV BurnDrvCpsSsf2ar1; -DRV BurnDrvCpsSsf2a; -DRV BurnDrvCpsSsf2j; -DRV BurnDrvmd_ssf2u; -DRV BurnDrvCpsSsf2tbr1; -DRV BurnDrvCpsSsf2tbj; -DRV BurnDrvCpsSsf2tbh; -DRV BurnDrvCpsSsf2tbd; -DRV BurnDrvCpsSsf2tb; -DRV BurnDrvCpsSsf2tad; -DRV BurnDrvCpsSsf2ta; -DRV BurnDrvCpsSsf2td; -DRV BurnDrvCpsSsf2t; -DRV BurnDrvCpsSsf2tur1; -DRV BurnDrvCpsSsf2tu; -DRV BurnDrvCpsSsf2xjd; -DRV BurnDrvCpsSsf2xjr; -DRV BurnDrvCpsSsf2xj; -DRV BurnDrvmd_stbladj; -DRV BurnDrvmd_stblad; -DRV BurnDrvSuprtrio; -DRV BurnDrvstriv2; -DRV BurnDrvstriv; -DRV BurnDrvmd_svolleyj; -DRV BurnDrvmd_svolley; -DRV BurnDrvmd_svolley1; -DRV BurnDrvpce_svolley; -DRV BurnDrvtg_svolley; -DRV BurnDrvSvolley; -DRV BurnDrvSvolleyk; -DRV BurnDrvSvolleyu; -DRV BurnDrvSsoldier; -DRV BurnDrvSupermanj; -DRV BurnDrvSupermanu; -DRV BurnDrvmd_supermanu; -DRV BurnDrvmd_supermanp; -DRV BurnDrvSuperman; -DRV BurnDrvmd_superman; -DRV BurnDrvmd_surging; -DRV BurnDrvSuratka; -DRV BurnDrvSuratkj; -DRV BurnDrvSuratk; -DRV BurnDrvpce_susano; -DRV BurnDrvmd_swamp; -DRV BurnDrvSwarm; -DRV BurnDrvSwat; -DRV BurnDrvSwatpolc; -DRV BurnDrvmd_swordsod; -DRV BurnDrvmd_swordsodj; -DRV BurnDrvmd_vermil; -DRV BurnDrvmd_sydvalis; -DRV BurnDrvmd_sylvestr; -DRV BurnDrvmd_sylvestru; -DRV BurnDrvmd_syndicat; -DRV BurnDrvmosyougi; -DRV BurnDrvmd_term2; -DRV BurnDrvmd_t2ag; -DRV BurnDrvmd_t2agj; -DRV BurnDrvmd_t2agp; -DRV BurnDrvmd_t3ag; -DRV BurnDrvmd_cars; -DRV BurnDrvmd_cars2; -DRV BurnDrvmd_taikoris; -DRV BurnDrvHotgmck; -DRV BurnDrvHotgmck3; -DRV BurnDrvHotgm4ev; -DRV BurnDrvHgkairak; -DRV BurnDrvtg_chasehq; -DRV BurnDrvpce_chasehq; -DRV BurnDrvmd_taiwan; -DRV BurnDrvpce_takameib; -DRV BurnDrvpce_shingen; -DRV BurnDrvpce_shingen1; -DRV BurnDrvtg_taknhoop; -DRV BurnDrvtg_talespin; -DRV BurnDrvmd_talespin; -DRV BurnDrvmd_talmit; -DRV BurnDrvTangtang; -DRV BurnDrvmd_tank2011; -DRV BurnDrvTaotaido; -DRV BurnDrvTaotaidoa; -DRV BurnDrvmd_trgearth; -DRV BurnDrvTharrier; -DRV BurnDrvTharrieru; -DRV BurnDrvmd_taskfhexj; -DRV BurnDrvmd_taskfhex; -DRV BurnDrvJoemac; -DRV BurnDrvTrojanj; -DRV BurnDrvpce_tatsunok; -DRV BurnDrvpce_tatsujin; -DRV BurnDrvpce_tatsujinp; -DRV BurnDrvmd_tazmania; -DRV BurnDrvTazzmang; -DRV BurnDrvTazmania; -DRV BurnDrvTazmani2; -DRV BurnDrvmd_tc2000; -DRV BurnDrvmd_technocl; -DRV BurnDrvmd_tecnocop; -DRV BurnDrvmd_tecmocup; -DRV BurnDrvTknight; -DRV BurnDrvmd_tecmobb; -DRV BurnDrvmd_tecmosbwj; -DRV BurnDrvmd_tecmosbwa; -DRV BurnDrvmd_tecmosbw; -DRV BurnDrvmd_tecmosb2; -DRV BurnDrvmd_tecmosb2j; -DRV BurnDrvmd_tecmosb3; -DRV BurnDrvmd_tecmohck; -DRV BurnDrvmd_tecmonbaj; -DRV BurnDrvmd_tecmonba; -DRV BurnDrvmd_tecmow92; -DRV BurnDrvmd_tecmowc; -DRV BurnDrvtws96; -DRV BurnDrvmd_teddyboy; -DRV BurnDrvTeddybb; -DRV BurnDrvTeddybbo; -DRV BurnDrvTeddybbobl; -DRV BurnDrvTmht2p; -DRV BurnDrvTmht2pa; -DRV BurnDrvTmht; -DRV BurnDrvTmhta; -DRV BurnDrvmd_tmhthh; -DRV BurnDrvmd_tmhttf; -DRV BurnDrvTmht22pe; -DRV BurnDrvtmnti; -DRV BurnDrvtmntia; -DRV BurnDrvTmht2pj; -DRV BurnDrvTmntj; -DRV BurnDrvTmht2po; -DRV BurnDrvTmntu; -DRV BurnDrvTmntua; -DRV BurnDrvTmnt; -DRV BurnDrvmd_tmntshj; -DRV BurnDrvmd_tmnthh; -DRV BurnDrvmd_tmnttfj; -DRV BurnDrvmd_tmnttfu; -DRV BurnDrvTmnt22pu; -DRV BurnDrvTmnt2a; -DRV BurnDrvTmnt2; -DRV BurnDrvmd_tmntru; -DRV BurnDrvmd_teiketsu; -DRV BurnDrvTekiPaki; -DRV BurnDrvmd_tekkn3sp; -DRV BurnDrvmd_telmah; -DRV BurnDrvmd_telstad; -DRV BurnDrvmd_telebrad; -DRV BurnDrvCpsDynwarjr; -DRV BurnDrvCpsDynwarj; -DRV BurnDrvCpsWofj; -DRV BurnDrvCpsWofch; -DRV BurnDrvCpsWofjh; -DRV BurnDrvTengai; -DRV BurnDrvTengaij; -DRV BurnDrvpce_sdragon; -DRV BurnDrvTerracren; -DRV BurnDrvTerracre; -DRV BurnDrvTerracreo; -DRV BurnDrvTerracrea; -DRV BurnDrvpce_terracr2; -DRV BurnDrvTerrafb; -DRV BurnDrvTerrafjb; -DRV BurnDrvTerrafu; -DRV BurnDrvTerraf; -DRV BurnDrvmd_td2; -DRV BurnDrvAtetrisb; -DRV BurnDrvAtetrisb2; -DRV BurnDrvTetrisbl; -DRV BurnDrvAtetrisc; -DRV BurnDrvAtetrisc2; -DRV BurnDrvtetrsark; -DRV BurnDrvTetrista; -DRV BurnDrvTetrist; -DRV BurnDrvmd_tetris; -DRV BurnDrvmd_tetris1; -DRV BurnDrvAtetris; -DRV BurnDrvTetris1; -DRV BurnDrvAtetrisa; -DRV BurnDrvTetris2; -DRV BurnDrvTetris3; -DRV BurnDrvTetris; -DRV BurnDrvTetrbx; -DRV BurnDrvTgm2; -DRV BurnDrvTgm2p; -DRV BurnDrvmd_addfam; -DRV BurnDrvmd_addfamp1; -DRV BurnDrvmd_addfamp2; -DRV BurnDrvmd_advbatr; -DRV BurnDrvmd_advbatrp12; -DRV BurnDrvmd_advbatrp11; -DRV BurnDrvmd_advbatrp10; -DRV BurnDrvmd_advbatrp09; -DRV BurnDrvmd_advbatrp08; -DRV BurnDrvmd_advbatrp07; -DRV BurnDrvmd_advbatrp06; -DRV BurnDrvmd_advbatrp05; -DRV BurnDrvmd_advbatrp04; -DRV BurnDrvmd_advbatrp03; -DRV BurnDrvmd_advbatrp02; -DRV BurnDrvmd_advbatrp01; -DRV BurnDrvmd_advbatru; -DRV BurnDrvmd_mightmax; -DRV BurnDrvmd_mightmaxu; -DRV BurnDrvmd_rockybw; -DRV BurnDrvmrflea; -DRV BurnDrvAnteateruk; -DRV BurnDrvmd_aquagame; -DRV BurnDrvmd_redcliff; -DRV BurnDrvmd_redcliffa; -DRV BurnDrvBattroad; -DRV BurnDrvmd_berensp20; -DRV BurnDrvmd_berensp19; -DRV BurnDrvmd_berensp18; -DRV BurnDrvmd_berensp17; -DRV BurnDrvmd_berensp16; -DRV BurnDrvmd_berensp15; -DRV BurnDrvmd_berensp14; -DRV BurnDrvmd_berensp13; -DRV BurnDrvmd_berensp12; -DRV BurnDrvmd_berensp11; -DRV BurnDrvmd_berensp10; -DRV BurnDrvmd_berensp09; -DRV BurnDrvmd_berensp08; -DRV BurnDrvmd_berensp07; -DRV BurnDrvmd_berensp06; -DRV BurnDrvmd_berensp05; -DRV BurnDrvmd_berensp04; -DRV BurnDrvmd_berensp03; -DRV BurnDrvmd_berensp02; -DRV BurnDrvmd_berensp01; -DRV BurnDrvmd_berens; -DRV BurnDrvBerlwall; -DRV BurnDrvBerlwallt; -DRV BurnDrvBilliard; -DRV BurnDrvmd_chaoseng; -DRV BurnDrvmd_chaosen2; -DRV BurnDrvEdrandyj; -DRV BurnDrvEdrandy1; -DRV BurnDrvEdrandy2; -DRV BurnDrvEdrandy; -DRV BurnDrvCtribeb; -DRV BurnDrvCtribeb2; -DRV BurnDrvCtribej; -DRV BurnDrvCtribe; -DRV BurnDrvCtribe1; -DRV BurnDrvDealer; -DRV BurnDrvmd_deathret; -DRV BurnDrvmd_disneycl; -DRV BurnDrvDbldynj; -DRV BurnDrvDbldynu; -DRV BurnDrvmd_earthdef; -DRV BurnDrvTheend; -DRV BurnDrvTheends; -DRV BurnDrvmd_faerytal; -DRV BurnDrvFlstory; -DRV BurnDrvFlstoryj; -DRV BurnDrvFroundl; -DRV BurnDrvFround; -DRV BurnDrvmd_flint; -DRV BurnDrvmd_flintj; -DRV BurnDrvmd_flintu; -DRV BurnDrvmd_wintchal1; -#if defined FBA_DEBUG -DRV BurnDrvThegladpcb; // Incomplete Dump [NOT WORKING] -DRV BurnDrvTheglad; // Incomplete Dump [NOT WORKING] -DRV BurnDrvtheglada; // Incomplete Dump [NOT WORKING] -#endif -DRV BurnDrvTheglob; -DRV BurnDrvTheglob2; -DRV BurnDrvtheglobp; -DRV BurnDrvTheglob3; -DRV BurnDrvmd_mickeycm; -DRV BurnDrvRagtimea; -DRV BurnDrvRagtime; -DRV BurnDrvmd_waldo; -DRV BurnDrvmd_humans; -DRV BurnDrvmd_hybridf; -DRV BurnDrvmd_hybridfp; -DRV BurnDrvmd_immortal; -DRV BurnDrvmd_crashdum; -DRV BurnDrvmd_crashdump; -DRV BurnDrvmd_hulk; -DRV BurnDrvmd_incredib; -DRV BurnDrvSkingame; -DRV BurnDrvSkingame2; -DRV BurnDrvIrrmaze; -DRV BurnDrvmd_itchy; -DRV BurnDrvmd_kickbox; -DRV BurnDrvKillbld104; -DRV BurnDrvKillbld; -#if defined FBA_DEBUG -DRV BurnDrvKillbldp; // Incomplete Dump [NOT WORKING] -#endif -DRV BurnDrvmd_killshow; -DRV BurnDrvCpsKodr1; -DRV BurnDrvCpsKod; -DRV BurnDrvCpsKodb; -DRV BurnDrvCpsKodh; -DRV BurnDrvCpsKodja; -DRV BurnDrvCpsKodj; -DRV BurnDrvCpsKodda; -DRV BurnDrvCpsKodu; -DRV BurnDrvKof94; -DRV BurnDrvKof95h; -DRV BurnDrvKof95; -DRV BurnDrvkof96ae; -DRV BurnDrvkof96ep; -DRV BurnDrvkof96cn; -DRV BurnDrvKof96h; -DRV BurnDrvKof96; -DRV BurnDrvkof97cn; -DRV BurnDrvKof97k; -DRV BurnDrvKof97h; -DRV BurnDrvKof97; -DRV BurnDrvkof97xt; -DRV BurnDrvKof97oro; -DRV BurnDrvKof97pls; -DRV BurnDrvkof97pla; -DRV BurnDrvkof98ae; -DRV BurnDrvKof98ka; -DRV BurnDrvKof98k; -DRV BurnDrvKof98h; -DRV BurnDrvKof98; -DRV BurnDrvmd_kof99; -DRV BurnDrvmd_kof99a; -DRV BurnDrvkof99e; -DRV BurnDrvkof99k; -DRV BurnDrvkof99h; -DRV BurnDrvkof99; -DRV BurnDrvkof99p; -DRV BurnDrvkof10th; -DRV BurnDrvkf2k5uni; -DRV BurnDrvkf10thep; -DRV BurnDrvkof2000; -DRV BurnDrvkof2000n; -DRV BurnDrvkof2001h; -DRV BurnDrvkof2001; -DRV BurnDrvkf2k1pls; -DRV BurnDrvkf2k1pa; -DRV BurnDrvkof2002b; -DRV BurnDrvkof2002; -DRV BurnDrvkf2k2ps2; -DRV BurnDrvkf2k2mp; -DRV BurnDrvkf2k2mp2; -DRV BurnDrvkf2k2pls; -DRV BurnDrvkf2k2pla; -DRV BurnDrvkf2k2plb; -DRV BurnDrvkf2k2plc; -DRV BurnDrvkf2k3bl; -DRV BurnDrvkf2k3bla; -DRV BurnDrvkof2003h; -DRV BurnDrvkof2003; -DRV BurnDrvkf2k3pcb; -DRV BurnDrvkf2k3pl; -DRV BurnDrvkf2k3upl; -DRV BurnDrvkof2k4se; -DRV BurnDrvkf2k4pls; -DRV BurnDrvpce_kungfu; -DRV BurnDrvlastbladh; -DRV BurnDrvlastblad; -DRV BurnDrvlastbld2; -DRV BurnDrvlastsold; -DRV BurnDrvmd_lawnmowr; -DRV BurnDrvLkage; -DRV BurnDrvLkageb; -DRV BurnDrvLkageb2; -DRV BurnDrvLkageb3; -DRV BurnDrvLkageo; -DRV BurnDrvLkageoo; -DRV BurnDrvSilkroad; -DRV BurnDrvSilkroada; -DRV BurnDrvtg_legaxe; -DRV BurnDrvtg_legaxe2; -DRV BurnDrvmd_lionking; -DRV BurnDrvmd_lostvik; -DRV BurnDrvmd_lostvikp; -DRV BurnDrvmd_lostviku; -DRV BurnDrvmd_lostwrld; -DRV BurnDrvmd_msbp12; -DRV BurnDrvmd_msbp11; -DRV BurnDrvmd_msbp10; -DRV BurnDrvmd_msbp09; -DRV BurnDrvmd_msbp08; -DRV BurnDrvmd_msbp07; -DRV BurnDrvMainevt2p; -DRV BurnDrvMainevto; -DRV BurnDrvMainevt; -DRV BurnDrvmd_miraclep; -DRV BurnDrvpce_tnzs; -DRV BurnDrvmd_tnzs; -DRV BurnDrvtnzsj; -DRV BurnDrvTnzsjo; -DRV BurnDrvtnzs; -DRV BurnDrvTnzso; -DRV BurnDrvTnzsop; -DRV BurnDrvNinjakj; -DRV BurnDrvNinjaku; -DRV BurnDrvNinjak; -DRV BurnDrvpce_ninjawar; -DRV BurnDrvNinjawj; -DRV BurnDrvNinjawu; -DRV BurnDrvNinjaw; -DRV BurnDrvmd_ooze; -DRV BurnDrvmd_oozep01; -DRV BurnDrvmd_oozeju; -DRV BurnDrvmd_oozep05; -DRV BurnDrvmd_oozep04; -DRV BurnDrvmd_oozep07; -DRV BurnDrvmd_oozep06; -DRV BurnDrvmd_oozep02; -DRV BurnDrvmd_oozep03; -DRV BurnDrvmd_ottifant; -DRV BurnDrvmd_ottifantg; -DRV BurnDrvmd_pagemstr; -DRV BurnDrvmd_pagemstru; -DRV BurnDrvmd_pagemstrup; -DRV BurnDrvmd_piratedw1; -DRV BurnDrvmd_piratedw; -DRV BurnDrvThepitm; -DRV BurnDrvCpsPunisher; -DRV BurnDrvCpsPunisherh; -DRV BurnDrvCpsPunisherj; -DRV BurnDrvCpsPunisheru; -DRV BurnDrvCpsPunipic; -DRV BurnDrvCpsPunipic2; -DRV BurnDrvCpsPunipic3; -DRV BurnDrvmd_punisher; -DRV BurnDrvmd_punisheru; -DRV BurnDrvGhostb; -DRV BurnDrvGhostb3; -DRV BurnDrvmd_revshin2; -DRV BurnDrvmd_revshin1; -DRV BurnDrvmd_revshin; -DRV BurnDrvmd_seconds; -DRV BurnDrvSimpsons2pa; -DRV BurnDrvSimpsons2pj; -DRV BurnDrvSimpsons2p; -DRV BurnDrvSimpsons2p2; -DRV BurnDrvSimpsons; -DRV BurnDrvSimpsons4pa; -DRV BurnDrvmd_bartvssm1; -DRV BurnDrvmd_bartvssm; -DRV BurnDrvmd_bartnigh; -DRV BurnDrvmd_smurfs; -DRV BurnDrvmd_smurfstw; -DRV BurnDrvSrumbler; -DRV BurnDrvSrumblr2; -DRV BurnDrvSrumblr3; -DRV BurnDrvmd_thor; -DRV BurnDrvmd_thorg; -DRV BurnDrvmd_thorjp; -DRV BurnDrvmd_thork; -DRV BurnDrvmd_thors; -DRV BurnDrvmd_thorp2; -DRV BurnDrvmd_thorp1; -DRV BurnDrvmd_thorf; -DRV BurnDrvmd_thorj; -DRV BurnDrvmd_supshin; -DRV BurnDrvmd_supshin2; -DRV BurnDrvmd_supshin2p1; -DRV BurnDrvmd_supshin2p2; -DRV BurnDrvSuperspy; -DRV BurnDrvmd_termintr; -DRV BurnDrvmd_termintru; -DRV BurnDrvmd_tick; -DRV BurnDrvThetogyu; -DRV BurnDrvpce_druaga; -DRV BurnDrvSsideki4; -DRV BurnDrvWintbob; -DRV BurnDrvmd_youngind; -DRV BurnDrvmd_themeprk; -DRV BurnDrvmd_thomas; -DRV BurnDrvtrally; -DRV BurnDrvCps3wondersh; -DRV BurnDrvCps3wondersb; -DRV BurnDrvCps3wondersr1; -DRV BurnDrvCps3wonders; -DRV BurnDrvCps3wondersu; -DRV BurnDrvThunderl; -DRV BurnDrvpce_tblade; -DRV BurnDrvThndrbld1; -DRV BurnDrvThndrbld; -DRV BurnDrvThndblst; -DRV BurnDrvThunderxj; -DRV BurnDrvThunderx; -DRV BurnDrvThunderxa; -DRV BurnDrvThunderxb; -DRV BurnDrvThndrx2a; -DRV BurnDrvThndrx2j; -DRV BurnDrvThndrx2; -DRV BurnDrvTdragon1; -DRV BurnDrvTdragon; -DRV BurnDrvTdragonb; -DRV BurnDrvTdragon2a; -DRV BurnDrvTdragon2; -DRV BurnDrvmd_tf2; -DRV BurnDrvmd_tf2j; -DRV BurnDrvmd_tf3; -DRV BurnDrvmd_tf4; -DRV BurnDrvmd_tf4j; -DRV BurnDrvThundfoxj; -DRV BurnDrvmd_tfoxj; -DRV BurnDrvThundfoxu; -DRV BurnDrvmd_tfox; -DRV BurnDrvThundfox; -DRV BurnDrvTheroes; -DRV BurnDrvThoop; -DRV BurnDrvmd_tpwres; -DRV BurnDrvThndzonej; -DRV BurnDrvThndzone4; -DRV BurnDrvThndzonea; -DRV BurnDrvThndzone; -#if defined FBA_DEBUG -DRV BurnDrvTndrcade; // No sound, imperfect inputs [NOT WORKING] -#endif -DRV BurnDrvTigerHB1; -DRV BurnDrvTigerHB2; -DRV BurnDrvTigerHB3; -DRV BurnDrvTigerhJ; -DRV BurnDrvTigerH; -DRV BurnDrvtg_tigerrod; -DRV BurnDrvTigerodb; -DRV BurnDrvTigeroad; -DRV BurnDrvtg_timcrus; -DRV BurnDrvpce_timcrus2; -DRV BurnDrvmd_timedom; -DRV BurnDrvTimefgtr; -DRV BurnDrvmd_timekill; -DRV BurnDrvmd_timekillu; -DRV BurnDrvTimescan1; -DRV BurnDrvTimescan; -DRV BurnDrvtimesup; -DRV BurnDrvtg_timeball; -DRV BurnDrvmd_tinhead; -DRV BurnDrvmd_tintin; -DRV BurnDrvmd_ttoonbhtk; -DRV BurnDrvmd_ttacme; -DRV BurnDrvmd_ttacmeu; -DRV BurnDrvmd_ttoonbht; -DRV BurnDrvmd_ttoonbhtu; -DRV BurnDrvmd_ttoon3; -DRV BurnDrvpce_titan; -DRV BurnDrvmd_tnnbass; -DRV BurnDrvmd_tnnout; -#if defined FBA_DEBUG -DRV BurnDrvTjumpman; // Coin input not working? [NOT WORKING] -#endif -DRV BurnDrvmd_slimew; -DRV BurnDrvmd_toejama; -DRV BurnDrvmd_toejam; -DRV BurnDrvmd_toejam2g; -DRV BurnDrvmd_toejam2; -DRV BurnDrvmd_toejam2j; -DRV BurnDrvmd_toejam2u; -DRV BurnDrvpce_toiletk; -DRV BurnDrvTokib; -DRV BurnDrvTokiu; -DRV BurnDrvToki; -DRV BurnDrvTokia; -DRV BurnDrvmd_toki1; -DRV BurnDrvmd_toki; -DRV BurnDrvTokiob; -DRV BurnDrvTokio; -#if defined FBA_DEBUG -DRV BurnDrvTokioo; // no comment [NOT WORKING] -DRV BurnDrvTokiou; // no comment [NOT WORKING] -DRV BurnDrvTndrcadej; // No sound, imperfect inputs [NOT WORKING] -#endif -DRV BurnDrvmd_tomjerry; -DRV BurnDrvmd_tomjerry1; -DRV BurnDrvmd_dinohirep3; -DRV BurnDrvmd_dinohirep2; -DRV BurnDrvmd_dinohirep1; -DRV BurnDrvmd_dinohire; -DRV BurnDrvmd_lasorda; -DRV BurnDrvmd_larussa; -DRV BurnDrvmd_topfight; -DRV BurnDrvmd_topf2k5; -DRV BurnDrvmd_topgear2; -DRV BurnDrvtophntrh; -DRV BurnDrvtophntr; -DRV BurnDrvTpgolf; -DRV BurnDrvmd_topgolf; -DRV BurnDrvmd_topgolf2; -DRV BurnDrvDrivfrct; -DRV BurnDrvtopsecrt; -DRV BurnDrvTopspeedu; -DRV BurnDrvTopspeed; -DRV BurnDrvToppyrap; -DRV BurnDrvpce_toramich; -DRV BurnDrvToramich; -DRV BurnDrvToryumon; -DRV BurnDrvpce_etercity; -DRV BurnDrvmd_totlfoot; -DRV BurnDrvTturfu; -DRV BurnDrvTturf; -DRV BurnDrvmd_toughman; -DRV BurnDrvmd_kingcol; -DRV BurnDrvTkdenshoa; -DRV BurnDrvTkdensho; -DRV BurnDrvarkatour; -DRV BurnDrvmd_toxicc; -DRV BurnDrvpce_toyshopb; -DRV BurnDrvmd_toystory; -DRV BurnDrvmd_toystoryu; -DRV BurnDrvmd_toys; -DRV BurnDrvmd_trampter; -DRV BurnDrvmd_transf3; -DRV BurnDrvmd_traysia; -DRV BurnDrvtreahunt; -DRV BurnDrvtotcarib; -DRV BurnDrvtripool; -DRV BurnDrvtripoola; -DRV BurnDrvpce_tricky; -DRV BurnDrvtg_tricky; -DRV BurnDrvTrigon; -DRV BurnDrvTriothepj; -DRV BurnDrvTriothep; -DRV BurnDrvTdpgal; -DRV BurnDrvTriplfun; -DRV BurnDrvmd_tplay96; -DRV BurnDrvmd_tplaygld; -DRV BurnDrvmd_tplayglda; -DRV BurnDrvTriplep; -DRV BurnDrvTriplepa; -DRV BurnDrvTrojanr; -DRV BurnDrvTrojan; -DRV BurnDrvTrojana; -DRV BurnDrvTrophyh; -DRV BurnDrvmd_troubsht; -DRV BurnDrvmd_troyaik; -DRV BurnDrvmd_truco96; -DRV BurnDrvmd_truelies; -DRV BurnDrvmd_truxton; -DRV BurnDrvTruxton2; -DRV BurnDrvTruxton; -DRV BurnDrvpce_tsuppari; -DRV BurnDrvpce_baibai; -DRV BurnDrvTumbleb; -DRV BurnDrvTumbleb2; -DRV BurnDrvTumblepj; -DRV BurnDrvTumblep; -DRV BurnDrvmd_tunshi1; -DRV BurnDrvmd_tunshi; -DRV BurnDrvTurbofrc; -#if defined FBA_DEBUG -DRV BurnDrvToutrun2; // no comment -#endif -DRV BurnDrvToutrun3; -DRV BurnDrvToutrun1; -DRV BurnDrvToutrunj; -DRV BurnDrvToutrun; -DRV BurnDrvmd_toutrun; -DRV BurnDrvTurkhunt; -DRV BurnDrvmd_turmamon; -DRV BurnDrvTurpin; -DRV BurnDrvTurpins; -DRV BurnDrvtg_turrican; -DRV BurnDrvmd_turrican; -DRV BurnDrvTurtles; -DRV BurnDrvtg_tvbasket; -DRV BurnDrvpce_tvbasket; -DRV BurnDrvpce_tvfootbl; -DRV BurnDrvtg_tvfootbl; -DRV BurnDrvtg_tvhockey; -DRV BurnDrvpce_tvhockey; -DRV BurnDrvTwinactn; -DRV BurnDrvTwinadvk; -DRV BurnDrvTwinadv; -DRV BurnDrvmd_twincobr; -DRV BurnDrvTwineagl; -DRV BurnDrvmd_twinhawk; -DRV BurnDrvTwinhawku; -DRV BurnDrvTwinhawk; -DRV BurnDrvTwinkle; -DRV BurnDrvtwinspri; -DRV BurnDrvmd_twinklet; -DRV BurnDrvmd_twistedf; -DRV BurnDrvTwocrude; -DRV BurnDrvmd_twocrude; -DRV BurnDrvmd_twocrudeu; -DRV BurnDrvmd_twotribe; -DRV BurnDrvTyphoon; -DRV BurnDrvmd_tyrant; -DRV BurnDrvEarthjkr; -DRV BurnDrvCpsUnsquad; -#if defined FBA_DEBUG -DRV BurnDrvUsclssic; // No sound, imperfect inputs [NOT WORKING] -#endif -DRV BurnDrvCpsCawingj; -DRV BurnDrvmd_gomora; -DRV BurnDrvCpsUecology; -DRV BurnDrvmd_umk3; -DRV BurnDrvmd_umk3u; -DRV BurnDrvmd_ultqix; -DRV BurnDrvmd_ultsoccr; -DRV BurnDrvmd_ultsoccrp; -DRV BurnDrvUballoon; -DRV BurnDrvUtoukond; -DRV BurnDrvUltraman; -DRV BurnDrvmd_ultraman; -DRV BurnDrvUmanclub; -DRV BurnDrvmd_unchartd; -DRV BurnDrvmd_undead; -DRV BurnDrvUccopsar; -DRV BurnDrvUccopsj; -DRV BurnDrvUccopsu; -DRV BurnDrvUccops; -DRV BurnDrvmd_univsold; -DRV BurnDrvUniwars; -DRV BurnDrvmd_unknown2; -DRV BurnDrvUnkpacg; -DRV BurnDrvmd_unnecess; -DRV BurnDrvUpndown; -DRV BurnDrvUpndownu; -DRV BurnDrvmd_ustrike; -DRV BurnDrvMustangs; -DRV BurnDrvMustang; -DRV BurnDrvMustangb; -DRV BurnDrvMustangb2; -DRV BurnDrvmd_teamusa; -DRV BurnDrvmd_dreamteam; -DRV BurnDrvpce_usaprobs; -DRV BurnDrvmd_uzukeo; -DRV BurnDrvVFive; -DRV BurnDrvmd_vfive; -DRV BurnDrvvliner; -DRV BurnDrvvlinero; -DRV BurnDrvmd_valis; -DRV BurnDrvmd_valis3j; -DRV BurnDrvmd_valis3; -DRV BurnDrvCpsVampjr1; -DRV BurnDrvCpsVampj; -DRV BurnDrvCpsVampja; -DRV BurnDrvCpsVhuntjr2; -DRV BurnDrvCpsVhuntjr1s; -DRV BurnDrvCpsVhuntjr1; -DRV BurnDrvCpsVhuntj; -DRV BurnDrvCpsVhunt2d; -DRV BurnDrvCpsVhunt2r1; -DRV BurnDrvCpsVhunt2; -DRV BurnDrvCpsVsava; -DRV BurnDrvCpsVsavd; -DRV BurnDrvCpsVsav; -DRV BurnDrvCpsVsavh; -DRV BurnDrvCpsVsavj; -DRV BurnDrvCpsVsavu; -DRV BurnDrvCpsVsav2d; -DRV BurnDrvCpsVsav2; -DRV BurnDrvvanvan; -DRV BurnDrvvanvank; -DRV BurnDrvvanvanb; -DRV BurnDrvVandykeb; -DRV BurnDrvVandykejal; -DRV BurnDrvVandykejal2; -DRV BurnDrvVandyke; -DRV BurnDrvmd_vaportr; -DRV BurnDrvVaportrau; -DRV BurnDrvVaportra; -DRV BurnDrvVaportraw3; -DRV BurnDrvVmetaln; -DRV BurnDrvVmetal; -DRV BurnDrvCpsVarthr1; -DRV BurnDrvCpsVarthu; -DRV BurnDrvCpsVarth; -DRV BurnDrvCpsVarthj; -DRV BurnDrvmd_vecman; -DRV BurnDrvmd_vecmanp1; -DRV BurnDrvmd_vecmanp3; -DRV BurnDrvmd_vecmanp2; -DRV BurnDrvmd_vecman2p1; -DRV BurnDrvmd_vecman2p6; -DRV BurnDrvmd_vecman2p5; -DRV BurnDrvmd_vecman2p4; -DRV BurnDrvmd_vecman2p3; -DRV BurnDrvmd_vecman2p2; -DRV BurnDrvmd_vecman2; -DRV BurnDrvpce_veigues; -DRV BurnDrvtg_veigues; -DRV BurnDrvVendetta2pd; -DRV BurnDrvVendetta2pu; -DRV BurnDrvVendetta2p; -DRV BurnDrvVendettar; -DRV BurnDrvVendetta; -DRV BurnDrvmd_venom; -DRV BurnDrvVenus; -DRV BurnDrvmd_vermilj; -DRV BurnDrvmd_verytex; -DRV BurnDrvpce_victoryr; -DRV BurnDrvtg_victoryr; -DRV BurnDrvHustler; -DRV BurnDrvHustlerb; -DRV BurnDrvVpool; -DRV BurnDrvviewpoin; -DRV BurnDrvmd_viewpoin; -DRV BurnDrvmd_viewpoinp; -DRV BurnDrvtg_vigilant; -DRV BurnDrvpce_vigilant; -DRV BurnDrvVigilantj; -DRV BurnDrvVigilantu; -DRV BurnDrvVigilantu2; -DRV BurnDrvVigilant; -DRV BurnDrvVigilant1; -DRV BurnDrvVimanaj; -DRV BurnDrvVimana; -DRV BurnDrvVimanan; -DRV BurnDrvRedhawkb; -DRV BurnDrvViofightj; -DRV BurnDrvViofightu; -DRV BurnDrvViofight; -DRV BurnDrvpce_violents; -DRV BurnDrvmd_vf2; -DRV BurnDrvmd_vf2k; -DRV BurnDrvmd_vf2p5; -DRV BurnDrvmd_vf2p4; -DRV BurnDrvmd_vf2p3; -DRV BurnDrvmd_vf2p2; -DRV BurnDrvmd_vf2p1; -DRV BurnDrvmd_vf2tek; -#if defined FBA_DEBUG -DRV BurnDrvmd_vr; // no comment [NOT WORKING] -DRV BurnDrvmd_vrj; // no comment [NOT WORKING] -DRV BurnDrvmd_vru; // no comment [NOT WORKING] -#endif -DRV BurnDrvmd_vbart; -DRV BurnDrvmd_vpinball; -DRV BurnDrvmd_vixen357; -DRV BurnDrvmd_virak; -DRV BurnDrvpce_volfied; -DRV BurnDrvVolfiedjo; -DRV BurnDrvVolfiedj; -DRV BurnDrvmd_volfied; -DRV BurnDrvVolfiedu; -DRV BurnDrvVolfied; -DRV BurnDrvgowcaizr; -DRV BurnDrvmd_vrtroop; -DRV BurnDrvVulcan; -DRV BurnDrvVulcana; -DRV BurnDrvVulcanb; -DRV BurnDrvvulgusj; -DRV BurnDrvvulgus; -DRV BurnDrvvulgusa; -DRV BurnDrvpce_wring; -DRV BurnDrvmd_wackyrac; -DRV BurnDrvmd_wworldsp3; -DRV BurnDrvmd_wworldsp2; -DRV BurnDrvmd_wworldsp1; -DRV BurnDrvmd_wworlds; -DRV BurnDrvpce_waiwaimj; -DRV BurnDrvMj4simai; -DRV BurnDrvwakuwak7; -DRV BurnDrvpce_valkyrie; -DRV BurnDrvWallc; -DRV BurnDrvWallca; -DRV BurnDrvpce_wallaby; -DRV BurnDrvWwallyja; -DRV BurnDrvWwallyj; -DRV BurnDrvmd_waniwani; -DRV BurnDrvWrofaero; -DRV BurnDrvWarofbug; -#if defined FBA_DEBUG -DRV BurnDrvWarofbugg; // no comment [NOT WORKING] -#endif -DRV BurnDrvWarofbugu; -DRV BurnDrvWarzardr1; -DRV BurnDrvWarzard; -DRV BurnDrvmd_wardner; -DRV BurnDrvmd_wardnerj; -DRV BurnDrvmd_wario3; -DRV BurnDrvmd_warlock; -DRV BurnDrvmd_warlockp; -DRV BurnDrvmd_warpsped; -DRV BurnDrvWarriorb; -DRV BurnDrvmd_warrior; -DRV BurnDrvmd_warrior2; -DRV BurnDrvCpsWofr1; -DRV BurnDrvCpsWof; -DRV BurnDrvCpsWofu; -DRV BurnDrvCpsWofb; -// BurnDrvCpsWoffr; // no comment -DRV BurnDrvmd_warsong; -DRV BurnDrvWatrball; -DRV BurnDrvWmatch; -DRV BurnDrvmd_waterwld; -DRV BurnDrvmd_wayneg; -DRV BurnDrvmd_waynewld; -DRV BurnDrvmd_weaponld; -DRV BurnDrvWelltrisj; -DRV BurnDrvWelltris; -#if defined FBA_DEBUG -DRV BurnDrvWeststry; // no comment [NOT WORKING] -#endif -DRV BurnDrvmd_whacacri; -DRV BurnDrvmd_wheelfor; -DRV BurnDrvmd_carmnwldb; -DRV BurnDrvmd_carmnwld; -DRV BurnDrvmd_carmntimb; -DRV BurnDrvmd_carmntim; -DRV BurnDrvmd_whiprush; -DRV BurnDrvmd_whiprushj; -DRV BurnDrvWiggie; -DRV BurnDrvWildfang; -DRV BurnDrvmd_wildsnak; -DRV BurnDrvmd_arcadeghu; -DRV BurnDrvCpsWillowj; -DRV BurnDrvCpsWillowo; -DRV BurnDrvCpsWillow; -DRV BurnDrvWilytowr; -DRV BurnDrvmd_wimbled; -DRV BurnDrvmd_wimbledj; -DRV BurnDrvmd_wimbledu; -DRV BurnDrvmd_wimbledup; -DRV BurnDrvwjammers; -DRV BurnDrvWschampb; -DRV BurnDrvWschampa; -DRV BurnDrvWschamp; -DRV BurnDrvmd_wingswor; -DRV BurnDrvpce_winshot; -DRV BurnDrvmd_wintchal; -DRV BurnDrvmd_wintchalp; -DRV BurnDrvmd_wintolu; -DRV BurnDrvmd_wintol; -DRV BurnDrvmd_wintolj; -DRV BurnDrvmd_winx; -DRV BurnDrvmd_winx3d; -DRV BurnDrvWits; -DRV BurnDrvmd_wiznlizu; -DRV BurnDrvmd_wiznliz; -DRV BurnDrvWizdfire; -DRV BurnDrvWizdfireu; -DRV BurnDrvmd_immortalj; -DRV BurnDrvWolffang; -DRV BurnDrvmd_wolfchld; -DRV BurnDrvmd_wolverin; -DRV BurnDrvCpsWonder3; -DRV BurnDrvWboyu; -DRV BurnDrvWboyo; -DRV BurnDrvWboy; -DRV BurnDrvWboy2; -DRV BurnDrvWboy2u; -DRV BurnDrvWboy3; -DRV BurnDrvWboy4; -DRV BurnDrvWboy5; -DRV BurnDrvWbdeluxe; -#if defined FBA_DEBUG -DRV BurnDrvWb3bbl; // no comment -#endif -DRV BurnDrvmd_wboy3; -DRV BurnDrvWb31; -DRV BurnDrvWb32; -DRV BurnDrvWb33; -DRV BurnDrvWb34; -DRV BurnDrvWb35; -DRV BurnDrvWb3; -DRV BurnDrvmd_wboymw; -DRV BurnDrvmd_wboy5; -DRV BurnDrvWondl96; -DRV BurnDrvWlstar; -DRV BurnDrvmd_wondlib; -DRV BurnDrvpce_wonderm; -DRV BurnDrvWndrplnt; -DRV BurnDrvWondstck; -DRV BurnDrvwoodpeck; -DRV BurnDrvwoodpeka; -DRV BurnDrvpce_wbeach; -DRV BurnDrvmd_wcsb; -DRV BurnDrvmd_wcs; -DRV BurnDrvmd_wcsa; -DRV BurnDrvmd_wcs2; -DRV BurnDrvmd_wcs2p18; -DRV BurnDrvmd_wcs2p16; -DRV BurnDrvmd_wcs2p15; -DRV BurnDrvmd_wcs2p14; -DRV BurnDrvmd_wcs2p13; -DRV BurnDrvmd_wcs2p11; -DRV BurnDrvmd_wcs2p10; -DRV BurnDrvmd_wcs2p09; -DRV BurnDrvmd_wcs2p17; -DRV BurnDrvmd_wcs2p12; -DRV BurnDrvmd_wcs2p08; -DRV BurnDrvmd_wcs2p07; -DRV BurnDrvmd_wcs2p06; -DRV BurnDrvmd_wcs2p05; -DRV BurnDrvmd_wcs2p04; -DRV BurnDrvmd_wcs2p02; -DRV BurnDrvmd_wcs2p03; -DRV BurnDrvmd_wcs2p01; -DRV BurnDrvmd_wcs2u; -DRV BurnDrvmd_wcs2up; -DRV BurnDrvpce_wcircuit; -DRV BurnDrvtg_wcbasebl; -DRV BurnDrvmd_wclead; -DRV BurnDrvmd_wcleadu; -DRV BurnDrvtg_wctennis; -DRV BurnDrvWc90b2; -DRV BurnDrvWc90a; -DRV BurnDrvWc90b; -DRV BurnDrvWc90t; -DRV BurnDrvWc90; -DRV BurnDrvmd_wcup90; -DRV BurnDrvmd_wcup94; -DRV BurnDrvwh1h; -DRV BurnDrvwh1; -DRV BurnDrvmd_whj; -DRV BurnDrvmd_whjp5; -DRV BurnDrvmd_whjp4; -DRV BurnDrvmd_whjp3; -DRV BurnDrvmd_whjp1; -DRV BurnDrvmd_whjp2; -DRV BurnDrvwh1ha; -DRV BurnDrvmd_wh; -DRV BurnDrvmd_whp13; -DRV BurnDrvmd_whp12; -DRV BurnDrvmd_whp11; -DRV BurnDrvmd_whp10; -DRV BurnDrvmd_whp09; -DRV BurnDrvmd_whp08; -DRV BurnDrvmd_whp07; -DRV BurnDrvmd_whp06; -DRV BurnDrvmd_whp05; -DRV BurnDrvmd_whp04; -DRV BurnDrvmd_whp03; -DRV BurnDrvmd_whp01; -DRV BurnDrvmd_whp02; -DRV BurnDrvwh2; -DRV BurnDrvwh2j; -DRV BurnDrvwhp; -DRV BurnDrvpce_wjockey; -DRV BurnDrvmd_worldillj; -DRV BurnDrvmd_worldilljp; -DRV BurnDrvmd_worldill; -DRV BurnDrvmd_worldillu; -DRV BurnDrvmd_wsb95; -DRV BurnDrvmd_wsb95p23; -DRV BurnDrvmd_wsb95p22; -DRV BurnDrvmd_wsb95p21; -DRV BurnDrvmd_wsb95p20; -DRV BurnDrvmd_wsb95p19; -DRV BurnDrvmd_wsb95p18; -DRV BurnDrvmd_wsb95p17; -DRV BurnDrvmd_wsb95p16; -DRV BurnDrvmd_wsb95p15; -DRV BurnDrvmd_wsb95p14; -DRV BurnDrvmd_wsb95p13; -DRV BurnDrvmd_wsb95p12; -DRV BurnDrvmd_wsb95p11; -DRV BurnDrvmd_wsb95p10; -DRV BurnDrvmd_wsb95p09; -DRV BurnDrvmd_wsb95p08; -DRV BurnDrvmd_wsb95p07; -DRV BurnDrvmd_wsb95p05; -DRV BurnDrvmd_wsb95p06; -DRV BurnDrvmd_wsb95p04; -DRV BurnDrvmd_wsb95p03; -DRV BurnDrvmd_wsb95p02; -DRV BurnDrvmd_wsb95p01; -DRV BurnDrvmd_wsb96; -DRV BurnDrvmd_wsb98; -DRV BurnDrvmd_wsb; -DRV BurnDrvmd_wsbp10; -DRV BurnDrvmd_wsbp09; -DRV BurnDrvmd_wsbp08; -DRV BurnDrvmd_wsbp07; -DRV BurnDrvmd_wsbp06; -DRV BurnDrvmd_wsbp05; -DRV BurnDrvmd_wsbp04; -DRV BurnDrvmd_wsbp03; -DRV BurnDrvmd_wsbp02; -DRV BurnDrvmd_wsbp01; -DRV BurnDrvtg_wscomp; -DRV BurnDrvmd_worldts; -DRV BurnDrvmd_worms; -DRV BurnDrvmd_wormsp; -DRV BurnDrvWownfant; -DRV BurnDrvmd_wrestwar; -DRV BurnDrvmd_wrestwarp; -DRV BurnDrvWrestwar1; -DRV BurnDrvWrestwar2; -DRV BurnDrvWrestwar; -DRV BurnDrvmd_wrstball; -DRV BurnDrvmd_wukong; -DRV BurnDrvneoww2; -DRV BurnDrvmd_wwfraw; -DRV BurnDrvmd_wwfroyal; -DRV BurnDrvmd_wwfsup; -DRV BurnDrvWwfsstarb; -DRV BurnDrvWwfsstar; -DRV BurnDrvWwfsstarj; -DRV BurnDrvWwfsstarua; -DRV BurnDrvWwfsstaru; -DRV BurnDrvWwfwfestj; -DRV BurnDrvWwfwfestk; -DRV BurnDrvWwfwfestb; -DRV BurnDrvWwfwfest; -DRV BurnDrvWwfwfesta; -DRV BurnDrvmd_wwfag; -DRV BurnDrvmd_wwfagp; -DRV BurnDrvXmultiplm72; -DRV BurnDrvXmultipl; -DRV BurnDrvXmen2pa; -DRV BurnDrvXmen2pe; -DRV BurnDrvXmen2pj; -DRV BurnDrvXmenaa; -DRV BurnDrvXmena; -DRV BurnDrvXmene; -DRV BurnDrvXmenj; -DRV BurnDrvXmen; -#if defined FBA_DEBUG -DRV BurnDrvXmen6p; // no comment [NOT WORKING] -DRV BurnDrvXmen6pu; // no comment [NOT WORKING] -#endif -DRV BurnDrvmd_xmen; -DRV BurnDrvmd_xmenu; -DRV BurnDrvCpsXmcotajr; -DRV BurnDrvCpsXmcotaar1; -DRV BurnDrvCpsXmcotaj3; -DRV BurnDrvCpsXmcotaj2; -DRV BurnDrvCpsXmcotaj1; -DRV BurnDrvCpsXmcotaa; -DRV BurnDrvCpsXmcotar1d; -DRV BurnDrvCpsXmcotar1; -DRV BurnDrvCpsXmcotahr1; -DRV BurnDrvCpsXmcotaj; -DRV BurnDrvCpsXmcotau; -DRV BurnDrvCpsXmcota; -DRV BurnDrvCpsXmcotah; -DRV BurnDrvmd_xmen2; -DRV BurnDrvmd_xmen2p19; -DRV BurnDrvmd_xmen2p18; -DRV BurnDrvmd_xmen2p17; -DRV BurnDrvmd_xmen2p16; -DRV BurnDrvmd_xmen2p15; -DRV BurnDrvmd_xmen2p14; -DRV BurnDrvmd_xmen2p13; -DRV BurnDrvmd_xmen2p12; -DRV BurnDrvmd_xmen2p11; -DRV BurnDrvmd_xmen2p10; -DRV BurnDrvmd_xmen2p09; -DRV BurnDrvmd_xmen2p08; -DRV BurnDrvmd_xmen2p07; -DRV BurnDrvmd_xmen2p06; -DRV BurnDrvmd_xmen2p04; -DRV BurnDrvmd_xmen2p05; -DRV BurnDrvmd_xmen2p03; -DRV BurnDrvmd_xmen2p02; -DRV BurnDrvmd_xmen2p01; -DRV BurnDrvCpsXmvsfjr2; -DRV BurnDrvCpsXmvsfar2; -DRV BurnDrvCpsXmvsfr1; -DRV BurnDrvCpsXmvsfjr1; -DRV BurnDrvCpsXmvsfar1; -DRV BurnDrvCpsXmvsf; -DRV BurnDrvCpsXmvsfh; -DRV BurnDrvCpsXmvsfj; -DRV BurnDrvCpsXmvsfu1d; -DRV BurnDrvCpsXmvsfur1; -DRV BurnDrvCpsXmvsfa; -DRV BurnDrvCpsXmvsfb; -DRV BurnDrvCpsXmvsfu; -DRV BurnDrvmd_xpertsp; -DRV BurnDrvmd_xperts; -DRV BurnDrvmd_xdr; -DRV BurnDrvmd_xenon2; -DRV BurnDrvThreein1semi; -DRV BurnDrvpce_xevious; -DRV BurnDrvmd_xiaomo; -DRV BurnDrvmd_xinqig; -DRV BurnDrvmd_xinqig1; -DRV BurnDrvXorworld; -DRV BurnDrvmd_yasech; -#if defined FBA_DEBUG -DRV BurnDrvLeaguemn; // Imperfect sound and graphics [NOT WORKING] -#endif -DRV BurnDrvmd_yangji; -DRV BurnDrvyankeedo; -DRV BurnDrvYesnoj; -DRV BurnDrvtg_yobro; -DRV BurnDrvmd_yogibear; -DRV BurnDrvYoujyudn; -DRV BurnDrvpce_youkaid; -DRV BurnDrvmd_ys3j; -DRV BurnDrvmd_ys3; -DRV BurnDrvmd_yuyumt; -DRV BurnDrvmd_yuyusf; -DRV BurnDrvmd_yuyug; -DRV BurnDrvpce_yuyu; -DRV BurnDrvYuyugogo; -DRV BurnDrvmd_zanyasha; -DRV BurnDrvmd_zanygolf1; -DRV BurnDrvmd_zanygolf; -DRV BurnDrvzedblade; -DRV BurnDrvpce_zero4ca; -DRV BurnDrvpce_zero4c; -DRV BurnDrvZeropntj; -DRV BurnDrvZeropnt; -DRV BurnDrvZeropnta; -DRV BurnDrvZeropnt2; -DRV BurnDrvmd_zero; -DRV BurnDrvmd_zerou; -DRV BurnDrvZerotime; -DRV BurnDrvmd_zerotol; -DRV BurnDrvZerowing; -DRV BurnDrvZerowng2; -DRV BurnDrvmd_zerowing; -DRV BurnDrvmd_zerowingj; -DRV BurnDrvZerozone; -DRV BurnDrvDrgw2c; -DRV BurnDrvmd_zhuogu; -DRV BurnDrvZigzag; -DRV BurnDrvZigzag2; -DRV BurnDrvZingzip; -DRV BurnDrvzintrckb; -DRV BurnDrvzintrkcd; -DRV BurnDrvZipzap; -DRV BurnDrvpce_zipang; -DRV BurnDrvmd_zombhigh; -DRV BurnDrvZombraid; -DRV BurnDrvmd_zombies; -DRV BurnDrvmd_zombiesu; -DRV BurnDrvmd_zool; -DRV BurnDrvmd_zoolu; -DRV BurnDrvmd_zoom; -DRV BurnDrvmd_zoop; -DRV BurnDrvmd_zoopu; -DRV BurnDrvmd_zouzou; -DRV BurnDrvZupapa; -DRV BurnDrvzzyzzyxx; -DRV BurnDrvzzyzzyx2; -#undef DRV - -// Structure containing addresses of all drivers -// Needs to be kept sorted (using the full game name as the key) to prevent problems with the gamelist in Kaillera -static struct BurnDriver* pDriver[] = { -#if defined FBA_DEBUG - &BurnDrvDdungeon, // "ddungeon" [Game Room, NOT WORKING] - &BurnDrvDrgw3, // "drgw3" [IGS, NOT WORKING] -#endif - &BurnDrvDsoccr94, // "dsoccr94" [Irem (Data East Corporation license), NOT WORKING] -#if defined FBA_DEBUG - &BurnDrvDwex, // "dwex" [IGS, NOT WORKING] - &BurnDrvFuncube2, // "funcube2" [Namco, NOT WORKING] - &BurnDrvFuncube4, // "funcube4" [Namco, NOT WORKING] - &BurnDrvhappy6, // "happy6" [IGS, NOT WORKING] - &BurnDrvJockeyc, // "jockeyc" [[Seta] (Visco license), NOT WORKING] - &BurnDrvKengo, // "kengo" [Irem, NOT WORKING] - &BurnDrvKiwame, // "kiwame" [Athena, NOT WORKING] - &BurnDrvMonsterz, // "monsterz" [Nihon, NOT WORKING] -#endif - &BurnDrvMWalk, // "mwalk" [Sega, NOT WORKING] -#if defined FBA_DEBUG - &BurnDrvNbbatman, // "nbbatman" [Irem, NOT WORKING] - &BurnDrvpce_benkei, // "pce_benkei" [Sunsoft, NOT WORKING] - &BurnDrvpce_cdsys, // "pce_cdsys" [Hudson, NOT WORKING] - &BurnDrvpce_gecd, // "pce_gecd" [Games Express, NOT WORKING] - &BurnDrvpce_nikopun, // "pce_nikopun" [NHK Enterprise, NOT WORKING] - &BurnDrvpce_pcdenj, // "pce_pcdenj" [Hudson, NOT WORKING] - &BurnDrvpce_ptennis, // "pce_ptennis" [Hudson, NOT WORKING] - &BurnDrvpce_scdsys, // "pce_scdsys" [Hudson, NOT WORKING] - &BurnDrvpce_tennokoe, // "pce_tennokoe" [Hudson, NOT WORKING] - &BurnDrvpce_xserd, // "pce_xserd" [Masiya, NOT WORKING] - &BurnDrvtg_airzonk, // "tg_airzonk" [Hudson Soft, NOT WORKING] - &BurnDrvtg_cdsys, // "tg_cdsys" [NEC, NOT WORKING] - &BurnDrvtg_scdsys, // "tg_scdsys" [NEC, NOT WORKING] - &BurnDrvVictnine, // "victnine" [Taito, NOT WORKING] -#endif - &BurnDrvgames88, // '88 Games - &BurnDrv99lstwar, // '99: The Last War - &BurnDrv99lstwara, // '99: The Last War (alternate) - &BurnDrv99lstwark, // '99: The Last War (Kyugo) - &BurnDrvGtmra, // 1000 Miglia: Great 1000 Miles Rally (94/06/13) - &BurnDrvGtmr, // 1000 Miglia: Great 1000 Miles Rally (94/07/18) - &BurnDrvmd_12in1, // 12 in 1 - &BurnDrvmd_13mahjan, // 13 Ma Jiang - 98 Mei Shao Nu Pian (Chi) - &BurnDrvmd_16tongnk, // 16 Ton (Jpn, Game no Kandume MegaCD Rip) - &BurnDrvmd_16ton, // 16 Ton (Jpn, SegaNet) - &BurnDrvmd_16zhan, // 16 Zhang Ma Jiang (Chi) - &BurnDrvsgx_1941, // 1941 - Counter Attack - &BurnDrvCps1941u, // 1941 - Counter Attack (900227 USA) - &BurnDrvCps1941, // 1941 - Counter Attack (900227 World) - &BurnDrvCps1941j, // 1941 - Counter Attack (Japan) - &BurnDrvCps1941r1, // 1941 - Counter Attack (World) - &BurnDrvNineteen42b, // 1942 (First Version) - &BurnDrvNineteen42a, // 1942 (Revision A) - &BurnDrvNineteen42abl, // 1942 (Revision A, bootleg) - &BurnDrvNineteen42, // 1942 (Revision B) - &BurnDrvNineteen42w, // 1942 (Williams Electronics license) - &BurnDrvpce_1943kai, // 1943 Kai - &BurnDrvNineteen43kai, // 1943 Kai: Midway Kaisen (Japan) - &BurnDrvNineteen43ja, // 1943: Midway Kaisen (Japan) - &BurnDrvNineteen43j, // 1943: Midway Kaisen (Japan, Rev B) - &BurnDrvNineteen43b, // 1943: The Battle of Midway (bootleg set 1, hack of Japan set) - &BurnDrvNineteen43b2, // 1943: The Battle of Midway (bootleg set 2, hack of Japan set) - &BurnDrvNineteen43, // 1943: The Battle of Midway (Euro) - &BurnDrvNineteen43u, // 1943: The Battle of Midway (US) - &BurnDrvCps1944j, // 1944 - the loop master (000620 Japan) - &BurnDrvCps1944d, // 1944 - the loop master (000620 USA Phoenix Edition) - &BurnDrvCps1944ad, // 1944 - the loop master (000620 USA Phoenix Edition, alt) - &BurnDrvCps1944, // 1944 - the loop master (000620 USA) - &BurnDrvBgareggabl, // 1945 Part 2 (Battle Garaga hack) - &BurnDrv1945kiii, // 1945k III - &BurnDrvCps19xxa, // 19XX - the war against destiny (951207 Asia) - &BurnDrvCps19xxjr1, // 19XX - the war against destiny (951207 Japan) - &BurnDrvCps19xxd, // 19XX - the war against destiny (951207 USA Phoenix Edition) - &BurnDrvCps19xx, // 19XX - the war against destiny (951207 USA) - &BurnDrvCps19xxb, // 19XX - the war against destiny (951218 Brazil) - &BurnDrvCps19xxh, // 19XX - the war against destiny (951218 Hispanic) - &BurnDrvCps19xxj, // 19XX - the war against destiny (951225 Japan) - &BurnDrvmd_2psymmac, // 2 in 1 - Psycho Pinball & Micro Machines (Euro) - &BurnDrvbb2020, // 2020 Super Baseball (set 1) - &BurnDrvbba2020, // 2020 Super Baseball (set 2) - &BurnDrvbbh2020, // 2020 Super Baseball (set 3) - &BurnDrvmd_2020bbj, // 2020 Toshi Super Baseball (Jpn) - &BurnDrvpce_21emon, // 21 Emon - Mezase Hotel ou!! - &BurnDrv3Countb, // 3 Count Bout / Fire Suplex (NGM-043)(NGH-043) - &BurnDrvmd_3in1fwt, // 3 in 1 Flashback - World Championship Soccer - Tecmo World Cup 92 (Pirate) - &BurnDrvmd_3in1rmb, // 3 in 1 Road Rash - Ms. Pac-Man - Block Out (Pirate) - &BurnDrvmd_3ninja, // 3 Ninjas Kick Back (USA) - &BurnDrvEnraya4, // 4 En Raya - &BurnDrvFourin1, // 4 Fun in 1 - &BurnDrvmd_4in1pb, // 4 in 1 (Pirate) - &BurnDrv4play, // 4 player input test - &BurnDrvFourdwarrio, // 4-D Warriors (315-5162) - &BurnDrvmd_6pak, // 6-Pak (USA) - &BurnDrvSixhundred, // 600 - &BurnDrvmd_688atsub, // 688 Attack Sub (Euro, USA) - &BurnDrvOrdi7, // 7 Ordi (Korea) - &BurnDrvEighthundredfath, // 800 Fathoms - &BurnDrvmd_bugslife, // A Bug's Life - &BurnDrvmd_bugslifea, // A Bug's Life (Alt?) - &BurnDrvmd_dinotale, // A Dinosaur's Tale (USA) - &BurnDrvmd_aresshmd, // A Ressha de Ikou MD - Take the 'A' Train (Jpn) - &BurnDrvAbcopj, // A.B. Cop (Japan, FD1094 317-0169b) - &BurnDrvAbcop, // A.B. Cop (World, FD1094 317-0169b) - &BurnDrvAd2083, // A.D. 2083 - &BurnDrvmd_aaharima, // Aa Harimanada (Jpn) - &BurnDrvmd_aaahhrm, // AAAHH!!! Real Monsters (Euro) - &BurnDrvmd_aaahhrmu, // AAAHH!!! Real Monsters (USA) - &BurnDrvabscam, // Abscam - &BurnDrvAceattac, // Ace Attacker (FD1094 317-0059) [no comment, NOT WORKING] - &BurnDrvAceattaca, // Ace Attacker (Japan, System 16A, FD1094 317-0060) - &BurnDrvAcrobatm, // Acrobat Mission - &BurnDrvActfancrj, // Act-Fancer Cybernetick Hyper Weapon (Japan revision 1) - &BurnDrvActfancr1, // Act-Fancer Cybernetick Hyper Weapon (World revision 1) - &BurnDrvActfancr, // Act-Fancer Cybernetick Hyper Weapon (World revision 2) - &BurnDrvmd_action52, // Action 52 (USA) - &BurnDrvmd_action52a, // Action 52 (USA, Alt) - &BurnDrvAFighter, // Action Fighter, FD1089A 317-0018 - &BurnDrvmd_ar, // Action Replay (Euro) - &BurnDrvmd_addfamv, // Addams Family Values (Euro) - &BurnDrvmd_advdaisn, // Advanced Daisenryaku - Deutsch Dengeki Sakusen (Jpn, Rev. A) - &BurnDrvpce_advislnd, // Adventure Island - &BurnDrvHatena, // Adventure Quiz 2 Hatena Hatena no Dai-Bouken (Japan 900228) - &BurnDrvmd_adveboy, // Adventurous Boy - Mao Xian Xiao Zi (Chi) - &BurnDrvtg_aeroblst, // Aero Blasters - &BurnDrvpce_aeroblst, // Aero Blasters - &BurnDrvmd_aeroblst, // Aero Blasters: Trouble Specialty Raid Unit (Jpn) - &BurnDrvAerofgt, // Aero Fighters - &BurnDrvAerofgtb, // Aero Fighters (Turbo Force hardware set 1) - &BurnDrvAerofgtc, // Aero Fighters (Turbo Force hardware set 2) - &BurnDrvsonicwi2, // Aero Fighters 2 / Sonic Wings 2 - &BurnDrvsonicwi3, // Aero Fighters 3 / Sonic Wings 3 - &BurnDrvmd_aero, // Aero the Acro-Bat (Euro) - &BurnDrvmd_aerop, // Aero the Acro-Bat (Prototype) - &BurnDrvmd_aerou, // Aero the Acro-Bat (USA) - &BurnDrvmd_aero2, // Aero the Acro-Bat 2 (Euro) - &BurnDrvmd_aero2u, // Aero the Acro-Bat 2 (USA) - &BurnDrvmd_aerobiz, // Aerobiz (USA) - &BurnDrvmd_aerobizs, // Aerobiz Supersonic (USA) - &BurnDrvAburner, // After Burner (Japan) - &BurnDrvAburner2, // After Burner II - &BurnDrvpce_aburner2, // After Burner II - &BurnDrvmd_aburner2, // After Burner II (Euro, USA) - &BurnDrvmd_aburner2j, // After Burner II (Jpn) - &BurnDrvSuperbon, // Agent Super Bond (scobra hardware) - &BurnDrvaodk, // Aggressors of Dark Kombat / Tsuukai GANGAN Koushinkyoku (ADM-008)(ADH-008) - &BurnDrvAgress, // Agress - &BurnDrvAgressb, // Agress (English bootleg) - &BurnDrvKoshien, // Ah Eikou no Koshien (Japan) - &BurnDrvAirattck, // Air Attack (set 1) - &BurnDrvAirattcka, // Air Attack (set 2) - &BurnDrvAirbustrb, // Air Buster: Trouble Specialty Raid Unit (bootleg) - &BurnDrvAirbustrj, // Air Buster: Trouble Specialty Raid Unit (Japan) - &BurnDrvmd_airbustr, // Air Buster: Trouble Specialty Raid Unit (USA) - &BurnDrvAirbustr, // Air Buster: Trouble Specialty Raid Unit (World) - &BurnDrvmd_airdiverj, // Air Diver (Jpn) - &BurnDrvmd_airdiver, // Air Diver (USA) - &BurnDrvAirduel, // Air Duel (Japan) - &BurnDrvAirGallet, // Air Gallet (Europe) - &BurnDrvAirGalleth, // Air Gallet (Hong Kong) - &BurnDrvAirGalletj, // Air Gallet (Japan) - &BurnDrvAirGalletk, // Air Gallet (Korea) - &BurnDrvAirGallett, // Air Gallet (Taiwan) - &BurnDrvAirGalletu, // Air Gallet (USA) - &BurnDrvmd_airmanag, // Air Management - Oozora ni Kakeru (Jpn) - &BurnDrvmd_airmang2, // Air Management II - Koukuuou o Mezase (Jpn) - &BurnDrvAirwolf, // Airwolf - &BurnDrvAirwolfa, // Airwolf (US) - &BurnDrvAjax, // Ajax - &BurnDrvAjaxj, // Ajax (Japan) - &BurnDrvAkumajoun, // Akuma-Jou Dracula (Japan ver. N) - &BurnDrvAkumajou, // Akuma-Jou Dracula (Japan ver. P) - &BurnDrvmd_akumajo, // Akumajou Dracula - Vampire Killer (Jpn) - &BurnDrvmd_aladdin2, // Aladdin II - &BurnDrvAlcon, // Alcon (US) - &BurnDrvsgx_aldynes, // Aldynes - &BurnDrvmd_alexkiddk, // Alex Kidd - Cheongong Maseong (Kor) - &BurnDrvmd_alexkidd1, // Alex Kidd in the Enchanted Castle (Euro) - &BurnDrvmd_alexkidd, // Alex Kidd in the Enchanted Castle (Euro, Rev. A) - &BurnDrvmd_alexkiddj, // Alex Kidd in the Enchanted Castle (Jpn) - &BurnDrvmd_alexkiddu, // Alex Kidd in the Enchanted Castle (USA) - &BurnDrvAlexkidd1, // Alex Kidd: The Lost Stars (set 1, FD1089A 317-unknown) - &BurnDrvAlexkidd, // Alex Kidd: The Lost Stars (set 2, unprotected) - &BurnDrvalibaba, // Ali Baba and 40 Thieves - &BurnDrvAlienchac, // Alien Challenge (China) - &BurnDrvAliencha, // Alien Challenge (World) - &BurnDrvtg_acrush, // Alien Crush - &BurnDrvpce_acrush, // Alien Crush - &BurnDrvAliensec, // Alien Sector - &BurnDrvmd_aliensol, // Alien Soldier (Euro) - &BurnDrvmd_aliensolj, // Alien Soldier (Jpn) - &BurnDrvAstormj, // Alien Storm (set 1, Japan Rev B, 2 Players, FD1094 317-0146) - &BurnDrvAstormu, // Alien Storm (set 2, US, 3 Players, FD1094 317-0147) - &BurnDrvAstorm3, // Alien Storm (set 3, World, 3 Players, FD1094 317-0148) - &BurnDrvAstorm, // Alien Storm (set 4, World, 2 Players, FD1094 317-0154) - &BurnDrvmd_astorm, // Alien Storm (World) - &BurnDrvAliensynjo, // Alien Syndrome (set 1, Japan, old, System 16A, FD1089A 317-0033) - &BurnDrvAliensyn2, // Alien Syndrome (set 2, System 16A, FD1089A 317-0033) - &BurnDrvAliensyn3, // Alien Syndrome (set 3, System 16B, FD1089A 317-0033) - &BurnDrvAliensyn, // Alien Syndrome (set 4, System 16B, unprotected) - &BurnDrvAliensyn5, // Alien Syndrome (set 5, System 16A, FD1089B 317-0037) - &BurnDrvAliensynj, // Alien Syndrome (set 6, Japan, new, System 16B, FD1089A 317-0033) - &BurnDrvAliensyn7, // Alien Syndrome (set 7, System 16B, MC-8123B 317-00xx) - &BurnDrvCpsAvspa, // Alien vs Predator (940520 Asia) - &BurnDrvCpsAvspd, // Alien vs Predator (940520 Euro Phoenix Edition) - &BurnDrvCpsAvsp, // Alien vs Predator (940520 Euro) - &BurnDrvCpsAvsph, // Alien vs Predator (940520 Hispanic) - &BurnDrvCpsAvspj, // Alien vs Predator (940520 Japan) - &BurnDrvCpsAvspu, // Alien vs Predator (940520 USA) - &BurnDrvmd_alien3a, // Alien3 (Euro, USA) - &BurnDrvmd_alien3, // Alien3 (Euro, USA, Rev. A) - &BurnDrvAliensa, // Aliens (Asia) - &BurnDrvAliensj, // Aliens (Japan set 1) - &BurnDrvAliensj2, // Aliens (Japan set 2) - &BurnDrvAliensu, // Aliens (US) - &BurnDrvAliens, // Aliens (World set 1) - &BurnDrvAliens2, // Aliens (World set 2) - &BurnDrvAliens3, // Aliens (World set 3) - &BurnDrvmd_alisiad, // Alisia Dragoon (Euro) - &BurnDrvmd_alisiadj, // Alisia Dragoon (Jpn) - &BurnDrvmd_alisiadu, // Alisia Dragoon (USA) - &BurnDrvAlpham2, // Alpha Mission II / ASO II - Last Guardian (NGM-007)(NGH-007) - &BurnDrvAlpham2p, // Alpha Mission II / ASO II - Last Guardian (prototype) - &BurnDrvAltbeastbl, // Altered Beast (Datsu bootleg) - &BurnDrvmd_altbeast, // Altered Beast (Euro, USA) - &BurnDrvAltbeast2, // Altered Beast (set 2, MC-8123B 317-0066) - &BurnDrvAltbeast4, // Altered Beast (set 4, MC-8123B 317-0066) - &BurnDrvAltbeast5, // Altered Beast (set 5, FD1094 317-0069) - &BurnDrvAltbeast6, // Altered Beast (set 6, 8751 317-0076) - &BurnDrvAltbeast, // Altered Beast (set 8, 8751 317-0078) - &BurnDrvAmbush, // Ambush - &BurnDrvAmbushh, // Ambush (hack?) - &BurnDrvAmbushj, // Ambush (Japan) - &BurnDrvAmbushv, // Ambush (Volt Elec co-ltd) - &BurnDrvAnteaterg, // Ameisenbaer (German) - &BurnDrvmd_amerglad, // American Gladiators (USA) - &BurnDrvAmidar, // Amidar - &BurnDrvAmidarb, // Amidar (bootleg) - &BurnDrvAmidar1, // Amidar (older) - &BurnDrvAmidaro, // Amidar (Olympia) - &BurnDrvAmidars, // Amidar (Scramble hardware) - &BurnDrvAmidaru, // Amidar (Stern) - &BurnDrvAmigo, // Amigo - &BurnDrvmd_agassi, // Andre Agassi Tennis (Euro) - &BurnDrvmd_agassiu, // Andre Agassi Tennis (USA) - &BurnDrvmd_agassiup, // Andre Agassi Tennis (USA, Prototype) - &BurnDrvandrodun, // Andro Dunos (NGM-049)(NGH-049) - &BurnDrvAngelkds, // Angel Kids (Japan) - &BurnDrvmd_animania, // Animaniacs (Euro) - &BurnDrvmd_animaniau, // Animaniacs (USA) - &BurnDrvpce_ankoku, // Ankoku Densetsu - &BurnDrvmd_anotherw, // Another World (Euro) - &BurnDrvAnteater, // Anteater - &BurnDrvpce_aoiblink, // Aoi Blink - &BurnDrvmd_genchohi, // Aoki Ookami to Shiroki Mejika - Genchou Hishi (Jpn) - &BurnDrvAponow, // Apocaljpse Now - &BurnDrvpce_appgateb, // Appare! Gateball - &BurnDrvmd_aqrenk, // Aq Renkan Awa (Chi) - &BurnDrvAquajackj, // Aquajack (Japan) - &BurnDrvAquajacku, // Aquajack (US) - &BurnDrvAquajack, // Aquajack (World) - &BurnDrvAquarium, // Aquarium (Japan) - &BurnDrvarabian, // Arabian - &BurnDrvarabiana, // Arabian (Atari) - &BurnDrvAracnis, // Aracnis (bootleg of Scorpion on Moon Cresta hardware) - &BurnDrvArbalest, // Arbalester - &BurnDrvmd_arcadecl, // Arcade Classics (Euro, USA) - &BurnDrvmd_arcadegh, // Arcade's Greatest Hits (Euro) - &BurnDrvArcadia, // Arcadia - &BurnDrvmd_archrivl, // Arch Rivals (Euro, USA) - &BurnDrvmd_arcusj, // Arcus Odyssey (Jpn) - &BurnDrvmd_arcus, // Arcus Odyssey (USA) - &BurnDrvCpsArea88r, // Area 88 (Japan Resale ver.) - &BurnDrvCpsArea88, // Area 88 (Japan) - &BurnDrvLwingsjp, // Ares no Tsubasa (Japan) - &BurnDrvRygarj, // Argus no Senshi (Japan) - &BurnDrvarkgcbl, // Arkanoid (bootleg on Block hardware) - &BurnDrvarkmcubl, // Arkanoid (bootleg with MCU set 1) - &BurnDrvarkanoidjb2, // Arkanoid (bootleg with MCU set 2) - &BurnDrvarkmcubla, // Arkanoid (bootleg with MCU, alt) - &BurnDrvark1ball, // Arkanoid (bootleg with MCU, harder) - &BurnDrvark1balla, // Arkanoid (bootleg with MCU, harder, alt) - &BurnDrvarkangc, // Arkanoid (Game Corporation bootleg, set 1) - &BurnDrvarkangc2, // Arkanoid (Game Corporation bootleg, set 2) - &BurnDrvarknoidj, // Arkanoid (Japan) - &BurnDrvarkatayt, // Arkanoid (Tayto bootleg) - &BurnDrvarktayt2, // Arkanoid (Tayto bootleg, harder) - &BurnDrvarknoidu, // Arkanoid (US) - &BurnDrvarknoiuo, // Arkanoid (US, older) - &BurnDrvarkanoid, // Arkanoid (World) - &BurnDrvArknid2b, // Arkanoid - Revenge of DOH (Japan bootleg) - &BurnDrvArknid2j, // Arkanoid - Revenge of DOH (Japan) - &BurnDrvArknid2u, // Arkanoid - Revenge of DOH (US) - &BurnDrvArknoid2, // Arkanoid - Revenge of DOH (World) - &BurnDrvArmedf, // Armed Formation - &BurnDrvArmedff, // Armed Formation (Fillmore license) - &BurnDrvpce_armedf, // Armed Formation F - &BurnDrvBatridc, // Armed Police Batrider (China) (Fri Feb 13 1998) - &BurnDrvBatrid, // Armed Police Batrider (Europe) (Fri Feb 13 1998) - &BurnDrvBatridk, // Armed Police Batrider (Korea) (Fri Feb 13 1998) - &BurnDrvBatridu, // Armed Police Batrider (U.S.A.) (Fri Feb 13 1998) - &BurnDrvBatridja, // Armed Police Batrider - A Version (Japan) (Mon Dec 22 1997) - &BurnDrvBatridta, // Armed Police Batrider - A Version (Taiwan) (Mon Dec 22 1997) - &BurnDrvBatridj, // Armed Police Batrider - B Version (Japan) (Fri Feb 13 1998) - &BurnDrvArmorcar, // Armored Car (set 1) - &BurnDrvArmorcar2, // Armored Car (set 2) - &BurnDrvCpsArmwara, // Armored Warriors (940920 Asia) - &BurnDrvCpsArmwaru1, // Armored Warriors (940920 USA) - &BurnDrvCpsArmwar1d, // Armored Warriors (941011 Europe Phoenix Edition) - &BurnDrvCpsArmwarr1, // Armored Warriors (941011 Europe) - &BurnDrvCpsArmwar, // Armored Warriors (941024 Europe) - &BurnDrvCpsArmwaru, // Armored Warriors (941024 USA) - &BurnDrvmd_arnoldp, // Arnold Palmer Tournament Golf (Euro, USA) - &BurnDrvmd_arrow, // Arrow Flash (World) - &BurnDrvmd_arrow1, // Arrow Flash (World, Alt) - &BurnDrvmd_artalive, // Art Alive (World) - &BurnDrvmd_aof, // Art of Fighting (Euro) - &BurnDrvmd_aofp, // Art of Fighting (Prototype, 19940711) - &BurnDrvmd_aofu, // Art of Fighting (USA) - &BurnDrvAof, // Art of Fighting / Ryuuko no Ken (NGM-044)(NGH-044) - &BurnDrvAof2a, // Art of Fighting 2 / Ryuuko no Ken 2 (NGH-056) - &BurnDrvAof2, // Art of Fighting 2 / Ryuuko no Ken 2 (NGM-056) - &BurnDrvAof3k, // Art of Fighting 3 - The Path of the Warrior (Korean release) - &BurnDrvAof3, // Art of Fighting 3 - The Path of the Warrior / Art of Fighting - Ryuuko no Ken Gaiden - &BurnDrvmd_arttool, // Art Tool - &BurnDrvpce_arttool, // Artist Tool - &BurnDrvAshnojoe, // Ashita no Joe (Japan) - &BurnDrvAshuraj, // Ashura Blaster (Japan) - &BurnDrvAshurau, // Ashura Blaster (US) - &BurnDrvAshura, // Ashura Blaster (World) - &BurnDrvmd_asscreed, // Assassins Creed (Rus) - &BurnDrvmd_leynos, // Assault Suit Leynos (Jpn) - &BurnDrvmd_astergre, // Asterix and the Great Rescue (Euro) - &BurnDrvmd_astergreu, // Asterix and the Great Rescue (USA) - &BurnDrvmd_asterpg, // Asterix and the Power of the Gods (Euro) - &BurnDrvmd_asterpgp, // Asterix and the Power of the Gods (Euro, Prototype) - &BurnDrvAstrians, // Astrians (clone of Swarm) - &BurnDrvAsukaj, // Asuka & Asuka (Japan) - &BurnDrvAsuka, // Asuka & Asuka (World) - &BurnDrvAsurabld, // Asura Blade - Sword of Dynasty (Japan) - &BurnDrvAsurabus, // Asura Buster - Eternal Warriors (Japan) - &BurnDrvAsideral, // Ataque Sideral (Spanish bootleg of UniWar S) - &BurnDrvAtehate, // Athena no Hatena ? - &BurnDrvacitya, // Atlantic City Action - &BurnDrvAtomboya, // Atomic Boy (revision A) - &BurnDrvAtomboy, // Atomic Boy (revision B) - &BurnDrvAtomicp, // Atomic Point (Korea) - &BurnDrvAtompunk, // Atomic Punk (US) - &BurnDrvmd_atomroboj, // Atomic Robo-Kid (Jpn) - &BurnDrvmd_atomrobo, // Atomic Robo-Kid (USA) - &BurnDrvpce_atomrobo, // Atomic Robo-kid Special - &BurnDrvmd_atomrun, // Atomic Runner (Euro) - &BurnDrvmd_atomrunu, // Atomic Runner (USA) - &BurnDrvmd_atptour, // ATP Tour Championship Tennis (Euro) - &BurnDrvmd_atptourp7, // ATP Tour Championship Tennis (Prototype, 19940509) - &BurnDrvmd_atptourp6, // ATP Tour Championship Tennis (Prototype, 19940719) - &BurnDrvmd_atptourp5, // ATP Tour Championship Tennis (Prototype, 19940723) - &BurnDrvmd_atptourp4, // ATP Tour Championship Tennis (Prototype, 19940802) - &BurnDrvmd_atptourp3, // ATP Tour Championship Tennis (Prototype, 19940805) - &BurnDrvmd_atptourp2, // ATP Tour Championship Tennis (Prototype, 19940808) - &BurnDrvmd_atptourp1, // ATP Tour Championship Tennis (Prototype, 19940908) - &BurnDrvmd_atptouru, // ATP Tour Championship Tennis (USA) - &BurnDrvAurailj, // Aurail (set 1, Japan, FD1089A 317-0167) - &BurnDrvAurail1, // Aurail (set 2, World, FD1089B 317-0168) - &BurnDrvAurail, // Aurail (set 3, US, unprotected) - &BurnDrvmd_austrarl, // Australian Rugby League (Euro) - &BurnDrvpce_avpoker, // AV Poker - &BurnDrvmd_avatar, // Avatar (Rus) - &BurnDrvAvengers, // Avengers (US set 1) - &BurnDrvAvenger2, // Avengers (US set 2) - &BurnDrvmd_awepossm, // Awesome Possum (USA) - &BurnDrvmd_awepossmp, // Awesome Possum (USA, Prototype) - &BurnDrvmd_aworg, // Aworg (Jpn, SegaNet) - &BurnDrvmd_awspro, // AWS Pro Moves Soccer (USA) - &BurnDrvmd_smgp2, // Ayrton Senna's Super Monaco GP II (Euro, Jpn) - &BurnDrvmd_smgp2u, // Ayrton Senna's Super Monaco GP II (USA) - &BurnDrvAztarac, // Aztarac - &BurnDrvAzurian, // Azurian Attack - &BurnDrvBonkadv, // B.C. Kid / Bonk's Adventure / Kyukyoku!! PC Genjin - &BurnDrvBcstry, // B.C. Story (set 1) - &BurnDrvBcstrya, // B.C. Story (set 2) - &BurnDrvmd_bob, // B.O.B. (Euro, USA) - &BurnDrvmd_bobp, // B.O.B. (USA, Prototype) - &BurnDrvmd_babyboom1, // Baby Boom (Prototype, 19940603) - &BurnDrvmd_babyboom2, // Baby Boom (Prototype, 19940606) - &BurnDrvmd_babyboom, // Baby Boom (Prototype, 19940811) - &BurnDrvmd_babyd, // Baby's Day Out (USA, Prototype) - &BurnDrvmd_babydo, // Baby's Day Out (USA, Prototype, Earlier) - &BurnDrvbackfirt, // Back Fire (Tecmo) (Japan, Bootleg, Prototype?) - &BurnDrvBssoccer, // Back Street Soccer - &BurnDrvmd_backtof3, // Back to the Future Part III (Euro) - &BurnDrvmd_backtof3u, // Back to the Future Part III (USA) - &BurnDrvBackfire, // Backfire! (set 1) -#if defined FBA_DEBUG - &BurnDrvBackfirea, // Backfire! (set 2) [Set inputs to \"Joystick\" in test mode, NOT WORKING] -#endif - &BurnDrvBaddudes, // Bad Dudes vs. Dragonninja (US) - &BurnDrvmd_badomen, // Bad Omen (Jpn, Kor) -#if defined FBA_DEBUG - &BurnDrvBagmanmc, // Bagman (bootleg on Moon Cresta hardware set 1) [Bad Colours, NOT WORKING] -#endif - &BurnDrvBagmanm2, // Bagman (bootleg on Moon Cresta hardware set 2) - &BurnDrvmd_bahamuts, // Bahamut Senki (Jpn) - &BurnDrvbakatono, // Bakatonosama Mahjong Manyuuki (MOM-002)(MOH-002) - &BurnDrvBakubrkr, // Bakuretsu Breaker - &BurnDrvBallboy, // Ball Boy - &BurnDrvmd_balljack, // Ball Jacks (Euro, Jpn) - &BurnDrvtg_ballistx, // Ballistix - &BurnDrvpce_ballistx, // Ballistix - &BurnDrvBallbros, // Balloon Brothers - &BurnDrvmd_ballz3d, // Ballz 3D (Euro, USA) - &BurnDrvb2buster, // Bang 2 Busters (Prototype) - &BurnDrvbangbead, // Bang Bead - &BurnDrvbangbedp, // Bang Bead (Prototype?) - &BurnDrvbankp, // Bank Panic - &BurnDrvBaraduke, // Baraduke - &BurnDrvmd_barbiesm, // Barbie Super Model (USA) - &BurnDrvmd_barbvac, // Barbie Vacation Adventure (USA, Prototype) - &BurnDrvmd_bk2p, // Bare Knuckle II (Jpn, Prototype) - &BurnDrvmd_bk3, // Bare Knuckle III (Jpn) - &BurnDrvmd_bk3p, // Bare Knuckle III (Jpn, Prototype) - &BurnDrvpce_baribari, // Bari Bari Densetsu - &BurnDrvmd_barkley, // Barkley Shut Up and Jam! (Euro, USA) - &BurnDrvmd_barkley2, // Barkley Shut Up and Jam! 2 (USA) - &BurnDrvmd_barkley2p, // Barkley Shut Up and Jam! 2 (USA, Prototype) - &BurnDrvmd_barney, // Barney's Hide & Seek Game (USA) - &BurnDrvpce_barunba, // Barunba - &BurnDrvmd_barver, // Barver Battle Saga - Tai Kong Zhan Shi (Chi) - &BurnDrvBstars2, // Baseball Stars 2 - &BurnDrvBstarsh, // Baseball Stars Professional (NGH-002) - &BurnDrvBstars, // Baseball Stars Professional (NGM-002) - &BurnDrvmd_bassmc, // BASS Masters Classic (USA) - &BurnDrvmd_bassmpro, // BASS Masters Classic - Pro Edition (USA) - &BurnDrvpce_batman, // Batman - &BurnDrvmd_batman, // Batman (Euro) - &BurnDrvmd_batmanj, // Batman (Jpn) - &BurnDrvmd_batmanu, // Batman (USA) - &BurnDrvmd_batmanrj, // Batman - Revenge of the Joker (USA) - &BurnDrvmd_batmanf, // Batman Forever (World) - &BurnDrvBatman2, // Batman Part 2 - &BurnDrvmd_batmanrn, // Batman Returns (World) - &BurnDrvBatsugun, // Batsugun (set 1) - &BurnDrvBatsugna, // Batsugun (set 2) - &BurnDrvBatsugunSP, // Batsugun (Special Ver.) - &BurnDrvsgx_battlace, // Battle Ace - &BurnDrvBattleBkraidj, // Battle Bakraid (Japan) (Wed Apr 7 1999) - &BurnDrvBattleBkraiduj, // Battle Bakraid - Unlimited Version (Japan) (Tue Jun 8 1999) - &BurnDrvBattleBkraidu, // Battle Bakraid - Unlimited Version (U.S.A.) (Tue Jun 8 1999) - &BurnDrvBchopper, // Battle Chopper - &BurnDrvCpsBatcira, // Battle Circuit (970319 Asia) - &BurnDrvCpsBatcird, // Battle Circuit (970319 Euro Phoenix Edition) - &BurnDrvCpsBatcir, // Battle Circuit (970319 Euro) - &BurnDrvCpsBatcirj, // Battle Circuit (970319 Japan) - &BurnDrvflipshot, // Battle Flip Shot - &BurnDrvBgareghk, // Battle Garegga (Hong Kong / Austria?) (Sat Feb 3 1996) - &BurnDrvBgaregtw, // Battle Garegga (Taiwan / Germany) (Thu Feb 1 1996) - &BurnDrvBgaregga, // Battle Garegga (World) (Sat Feb 3 1996) - &BurnDrvBgaregnv, // Battle Garegga - New Version (Hong Kong / Austria?) (Sat Mar 2 1996) - &BurnDrvBgaregcn, // Battle Garegga - Type 2 (China / Denmark?) (Tue Apr 2 1996) - &BurnDrvBgaregt2, // Battle Garegga - Type 2 (World) (Sat Mar 2 1996) - &BurnDrvmd_battlyui, // Battle Golfer Yui (Jpn) - &BurnDrvBtlKRoad, // Battle K-Road - &BurnDrvpce_batloder, // Battle Lode Runner - &BurnDrvmd_btlmania, // Battle Mania (Jpn) - &BurnDrvmd_btlmanid, // Battle Mania Daiginjou (Jpn, Kor) - &BurnDrvAtlantisb, // Battle of Atlantis (bootleg) - &BurnDrvAtlantis, // Battle of Atlantis (set 1) - &BurnDrvAtlantis2, // Battle of Atlantis (set 2) - &BurnDrvtg_batlroyl, // Battle Royale - &BurnDrvBsharkj, // Battle Shark (Japan) - &BurnDrvBsharkjjs, // Battle Shark (Japan, Joystick) - &BurnDrvBsharku, // Battle Shark (US) - &BurnDrvBshark, // Battle Shark (World) - &BurnDrvmd_battlesq, // Battle Squadron (Euro, USA) - &BurnDrvmd_battlems, // Battlemaster (USA) - &BurnDrvmd_btech, // BattleTech (USA) - &BurnDrvmd_btoadsdd, // Battletoads & Double Dragon - The Ultimate Team (USA) - &BurnDrvmd_btoads, // Battletoads (World) - &BurnDrvBayroute1, // Bay Route (set 1, US, unprotected) - &BurnDrvBayroutej, // Bay Route (set 2, Japan, FD1094 317-0115) - &BurnDrvBayroute, // Bay Route (set 3, World, FD1094 317-0116) - &BurnDrvpce_beball, // Be Ball - &BurnDrvmd_beastwj, // Beast Warriors (Jpn) - &BurnDrvmd_beastw, // Beast Wrestler (USA) - &BurnDrvmd_beastbal, // Beastball (Prototype) - &BurnDrvbeastf, // Beastie Feastie - &BurnDrvmd_beavis, // Beavis and Butt-Head (Euro) - &BurnDrvmd_beavisu, // Beavis and Butt-Head (USA) - &BurnDrvmd_beavisup, // Beavis and Butt-Head (USA, Prototype) - &BurnDrvDdp2100c, // Bee Storm - DoDonPachi II (V100, China) - &BurnDrvDdp2100hk, // Bee Storm - DoDonPachi II (V100, Hong Kong) - &BurnDrvDdp2100j, // Bee Storm - DoDonPachi II (V100, Japan) - &BurnDrvDdp2100k, // Bee Storm - DoDonPachi II (V100, Korea) - &BurnDrvDdp2100t, // Bee Storm - DoDonPachi II (V100, Taiwan) - &BurnDrvDdp2100, // Bee Storm - DoDonPachi II (V100, World) - &BurnDrvDdp2101c, // Bee Storm - DoDonPachi II (V101, China) - &BurnDrvDdp2101hk, // Bee Storm - DoDonPachi II (V101, Hong Kong) - &BurnDrvDdp2101j, // Bee Storm - DoDonPachi II (V101, Japan) - &BurnDrvDdp2101k, // Bee Storm - DoDonPachi II (V101, Korea) - &BurnDrvDdp2101t, // Bee Storm - DoDonPachi II (V101, Taiwan) - &BurnDrvDdp2101, // Bee Storm - DoDonPachi II (V101, World) - &BurnDrvDdp2c, // Bee Storm - DoDonPachi II (V102, China) - &BurnDrvDdp2hk, // Bee Storm - DoDonPachi II (V102, Hong Kong) - &BurnDrvDdp2j, // Bee Storm - DoDonPachi II (V102, Japan) - &BurnDrvDdp2k, // Bee Storm - DoDonPachi II (V102, Korea) - &BurnDrvDdp2t, // Bee Storm - DoDonPachi II (V102, Taiwan) - &BurnDrvDdp2, // Bee Storm - DoDonPachi II (V102, World) - &BurnDrvBlswhstl, // Bells & Whistles (ver. L) - &BurnDrvmd_ben10, // Ben 10 (Rus) -#if defined FBA_DEBUG - &BurnDrvpce_benkei1, // Benkei Gaiden (Alt) [no comment, NOT WORKING] -#endif - &BurnDrvBestbest, // Best Of Best - &BurnDrvmd_bestofp, // Best of the Best - Championship Karate (Euro, Prototype) - &BurnDrvmd_bestof, // Best of the Best - Championship Karate (USA) - &BurnDrvBestri, // Bestri (Korea) - &BurnDrvmd_beyoasis, // Beyond Oasis (USA) - &BurnDrvmd_beyoasisp, // Beyond Oasis (USA, Prototype, 19941101) - &BurnDrvmd_beyondzt, // Beyond Zero Tolerance (USA, Prototype) - &BurnDrvCpsPunisherbz, // Biaofeng Zhanjing (Chinese bootleg) - &BurnDrvmd_bibleadv, // Bible Adventures (USA) - &BurnDrvBigbang, // Big Bang (9th Nov. 1993) - &BurnDrvbigbucks, // Big Bucks - &BurnDrvBigkarnk, // Big Karnak - &BurnDrvBigtwin, // Big Twin - &BurnDrvpce_bikkuri, // Bikkuriman World - &BurnDrvpce_bikkuri1, // Bikkuriman World (Alt) - &BurnDrvmd_billwlsh, // Bill Walsh College Football (Euro, USA) - &BurnDrvmd_billwl95, // Bill Walsh College Football 95 (USA) - &BurnDrvmd_bimini, // Bimini Run (USA) - &BurnDrvmd_biohazrb, // Bio Hazard Battle (Euro, USA) - &BurnDrvmd_biohazrbp, // Bio Hazard Battle (USA, Prototype) - &BurnDrvBioship, // Bio-ship Paladin - &BurnDrvBiomtoya, // Biomechanical Toy (Ver. 1.0.1884) - &BurnDrvBiomtoy, // Biomechanical Toy (Ver. 1.0.1885) - &BurnDrvbionicc, // Bionic Commando (Euro) - &BurnDrvbionicc1, // Bionic Commando (US set 1) - &BurnDrvbionicc2, // Bionic Commando (US set 2) - &BurnDrvbirdiy, // Birdiy - &BurnDrvmd_sailormn, // Bishoujo Senshi Sailor Moon (Jpn) - &BurnDrvBlkdrgonb, // Black Dragon (bootleg) - &BurnDrvBlkdrgon, // Black Dragon (Japan) - &BurnDrvBlkheart, // Black Heart - &BurnDrvBlkheartj, // Black Heart (Japan) - &BurnDrvBlkhole, // Black Hole - &BurnDrvBlktiger, // Black Tiger - &BurnDrvBlktigerb1, // Black Tiger (bootleg set 1) - &BurnDrvblktigerb2, // Black Tiger (bootleg set 2) - &BurnDrvBlktigera, // Black Tiger (older) - &BurnDrvBmaster, // Blade Master (World) - &BurnDrvmd_bladeven, // Blades of Vengeance (Euro, USA) - &BurnDrvBlandia, // Blandia - &BurnDrvBlandiap, // Blandia (prototype) - &BurnDrvmd_bmaster2, // Blaster Master 2 (USA) - &BurnDrvmd_bmaster2p, // Blaster Master 2 (USA, Prototype) - &BurnDrvBlazeon, // Blaze On (Japan) - &BurnDrvtg_blazlazr, // Blazing Lazers - &BurnDrvblazstar, // Blazing Star - &BurnDrvarkblock, // Block (Game Corporation bootleg, set 1) - &BurnDrvarkbloc2, // Block (Game Corporation bootleg, set 2) - &BurnDrvBlockbl, // Block Block (bootleg) - &BurnDrvBlockj, // Block Block (Japan 910910) - &BurnDrvBlock, // Block Block (World 910910) - &BurnDrvBlockjoy, // Block Block (World 911116 Joystick) - &BurnDrvBlockcar, // Block Carnival / Thunder & Lightning 2 - &BurnDrvBlockgal, // Block Gal (MC-8123B, 317-0029) - &BurnDrvBlockhl, // Block Hole - &BurnDrvBlckoutj, // Block Out (Japan) - &BurnDrvBlockout, // Block Out (set 1) - &BurnDrvBlckout2, // Block Out (set 2) - &BurnDrvmd_blockb, // Blockbuster World Video Game Championship II (USA) - &BurnDrvmd_blockout, // Blockout (World) - &BurnDrvpce_blodia, // Blodia - &BurnDrvBlmbycar, // Blomby Car - &BurnDrvBlmbycaru, // Blomby Car (not encrypted) - &BurnDrvBloodbro, // Blood Bros. (set 1) - &BurnDrvBloodbroa, // Blood Bros. (set 2) - &BurnDrvBloodbrob, // Blood Bros. (set 3) - &BurnDrvBloodwar, // Blood Warrior - &BurnDrvmd_bloodsht, // Bloodshot ~ Battle Frenzy (Euro) - &BurnDrvtg_blodwolf, // Bloody Wolf - &BurnDrvBloxeed, // Bloxeed (Japan, FD1094 317-0139) - &BurnDrvBlox16b, // Bloxeed (System 16B, PS2 data file) - &BurnDrvmd_bluealma, // Blue Almanac (Jpn) - &BurnDrvBlueprnj, // Blue Print (Jaleco) - &BurnDrvBlueprnt, // Blue Print (Midway) - &BurnDrvbjourney, // Blue's Journey / Raguy (ALM-001)(ALH-001) - &BurnDrvbwcasino, // Boardwalk Casino - &BurnDrvBoblbobl, // Bobble Bobble (set 1) -#if defined FBA_DEBUG - &BurnDrvBoblbobl2, // Bobble Bobble (set 2) [no comment, NOT WORKING] -#endif - &BurnDrvpce_bodycon2, // Body Conquest II - &BurnDrvmd_bodycob, // Body Count (Bra) - &BurnDrvmd_bodyco, // Body Count (Euro) - &BurnDrvmd_bodycop, // Body Count (Euro, Prototype) - &BurnDrvmd_bodycop5, // Body Count (USA, Prototype, 19940127) - &BurnDrvmd_bodycop4, // Body Count (USA, Prototype, 19940208) - &BurnDrvmd_bodycop3, // Body Count (USA, Prototype, 19940303) - &BurnDrvmd_bodycop2, // Body Count (USA, Prototype, 19940308) - &BurnDrvBodyslam, // Body Slam (8751 317-0015) - &BurnDrvBombjack, // Bomb Jack (set 1) - &BurnDrvBombjac2, // Bomb Jack (set 2) - &BurnDrvBombjackt, // Bomb Jack (Tecfri, Spain) - &BurnDrvBombkick, // Bomb Kick (set 1) - &BurnDrvBombkicka, // Bomb Kick (set 2) - &BurnDrvmd_bomber, // Bomber - &BurnDrvBomber, // Bomber (bootleg of Scramble) - &BurnDrvBombrman, // Bomber Man (Japan) - &BurnDrvBbmanwj, // Bomber Man World (Japan) - &BurnDrvBbmanw, // Bomber Man World / New Dyna Blaster - Global Quest - &BurnDrvtg_bombman, // Bomberman - &BurnDrvpce_bombman, // Bomberman - &BurnDrvpce_bombmn93, // Bomberman '93 - &BurnDrvtg_bombmn93, // Bomberman '93 - &BurnDrvpce_bombmn93s, // Bomberman '93 (Special Version) - &BurnDrvpce_bombmn94, // Bomberman '94 - &BurnDrvpce_bombmnub, // Bomberman - Users Battle - &BurnDrvBjtwin, // Bombjack Twin (set 1) - &BurnDrvBjtwina, // Bombjack Twin (set 2) - &BurnDrvmd_bomboy, // Bomboy (Tw) - &BurnDrvmd_bnzabros1, // Bonanza Bros. (Euro, Jpn) - &BurnDrvmd_bnzabros, // Bonanza Bros. (Euro, Jpn, Rev. A) - &BurnDrvmd_bnzabrosu, // Bonanza Bros. (USA, Kor) - &BurnDrvBongo, // Bongo - &BurnDrvtg_bonk3, // Bonk III - Bonk's Big Adventure - &BurnDrvtg_bonk, // Bonk's Adventure - &BurnDrvtg_bonk2, // Bonk's Revenge - &BurnDrvmd_bonkers, // Bonkers (Euro, USA) - &BurnDrvmd_bonkersp5, // Bonkers (USA, Prototype, 19940328) - &BurnDrvmd_bonkersp4, // Bonkers (USA, Prototype, 19940503) - &BurnDrvmd_bonkersp3, // Bonkers (USA, Prototype, 19941004) - &BurnDrvmd_bonkersp2, // Bonkers (USA, Prototype, 19941025) - &BurnDrvmd_bonkersp1, // Bonkers (USA, Prototype, 19941029) - &BurnDrvBonzeadvu, // Bonze Adventure (US) - &BurnDrvBonzeadv, // Bonze Adventure (World, Newer) - &BurnDrvBonzeadvo, // Bonze Adventure (World, Older) - &BurnDrvBoobhack, // Booby Kids (Italian manufactured graphic hack / bootleg of Kid no Hore Hore Daisakusen (bootleg)) - &BurnDrvmd_booger, // Boogerman - A Pick and Flick Adventure (Euro) - &BurnDrvmd_boogeru, // Boogerman - A Pick and Flick Adventure (USA) - &BurnDrvBoogwinga, // Boogie Wings (Asia v1.5, 92.12.07) - &BurnDrvBoogwing, // Boogie Wings (Euro v1.5, 92.12.07) - &BurnDrvmd_boogie, // Boogie Woogie Bowling (Jpn) - &BurnDrvBottom9n, // Bottom of the Ninth (ver. N) - &BurnDrvBottom9, // Bottom of the Ninth (ver. T) - &BurnDrvpce_lostsunh, // Bouken Danshaku Don - The Lost Sunheart - &BurnDrvBouldashj, // Boulder Dash / Boulder Dash Part 2 (Japan) - &BurnDrvBouldash, // Boulder Dash / Boulder Dash Part 2 (World) - &BurnDrvBballs, // Bouncing Balls - &BurnDrvmd_boxinglg, // Boxing Legends of the Ring (USA) - &BurnDrvtg_boxyboy, // Boxyboy - &BurnDrvmd_bsteam3, // Boy Soccer Team III (Jpn, Pirate) - &BurnDrvBrain, // Brain - &BurnDrvmd_dracula, // Bram Stoker's Dracula (Euro) - &BurnDrvmd_draculau, // Bram Stoker's Dracula (USA) - &BurnDrvtg_bravoman, // Bravoman - &BurnDrvpce_breakin, // Break In - &BurnDrvbreakers, // Breakers - &BurnDrvbreakrev, // Breakers Revenge - &BurnDrvmd_bretth, // Brett Hull Hockey '95 (USA) - &BurnDrvBreywood, // Breywood (Japan revision 2) - &BurnDrvmd_brianlar1, // Brian Lara Cricket (Euro, 199503) - &BurnDrvmd_brianlar, // Brian Lara Cricket (Euro, 199506) - &BurnDrvmd_brianl96a, // Brian Lara Cricket 96 (Euro, 199603) - &BurnDrvmd_brianl96, // Brian Lara Cricket 96 (Euro, 199604) - &BurnDrvbrix, // Brix - &BurnDrvmd_brutal, // Brutal - Paws of Fury (Euro) - &BurnDrvmd_brutalu, // Brutal - Paws of Fury (USA) - &BurnDrvmd_bubba, // Bubba'n'Stix (Euro) - &BurnDrvmd_bubbap, // Bubba'n'Stix (Euro, Prototype) - &BurnDrvmd_bubbau, // Bubba'n'Stix (USA) - &BurnDrvBubl2000, // Bubble 2000 - &BurnDrvmd_bubblesq, // Bubble and Squeak (Euro) - &BurnDrvmd_bubblesqu, // Bubble and Squeak (USA) - &BurnDrvBublbobl, // Bubble Bobble - &BurnDrvBub68705, // Bubble Bobble (boolteg with 68705) - &BurnDrvBublbob1, // Bubble Bobble (older) - &BurnDrvBublbobr, // Bubble Bobble (US with mode select) - &BurnDrvBubbobr1, // Bubble Bobble (US) - &BurnDrvBublcave10, // Bubble Bobble Lost Cave (v1.0) - &BurnDrvBublcave, // Bubble Bobble Lost Cave (v1.1) - &BurnDrvpce_bubblegm, // Bubblegum Crash! - Knight Sabers 2034 - &BurnDrvmd_bubsy2, // Bubsy II (Euro, USA) - &BurnDrvmd_bubsy, // Bubsy in Claws Encounters of the Furred Kind (Euro, USA) - &BurnDrvbucaner, // Buccaneer - &BurnDrvBuccanrs, // Buccaneers (set 1) - &BurnDrvBuccanrsa, // Buccaneers (set 2) - &BurnDrvmd_buckrog, // Buck Rogers - Countdown to Doomsday (Euro, USA) - &BurnDrvmd_budokan, // Budokan - The Martial Spirit (Euro) - &BurnDrvmd_budokanu, // Budokan - The Martial Spirit (USA) - &BurnDrvmd_bugsbun, // Bugs Bunny in Double Trouble (Euro) - &BurnDrvmd_bugsbunu, // Bugs Bunny in Double Trouble (USA) - &BurnDrvpce_bullfght, // Bull Fight - Ring no Haja - &BurnDrvBullet, // Bullet (FD1094 317-0041) - &BurnDrvBullfgt, // Bullfight (315-5065) - &BurnDrvmd_bullvsbl, // Bulls versus Blazers and the NBA Playoffs (Euro, USA) - &BurnDrvmd_bullvsla, // Bulls Vs Lakers and the NBA Playoffs (Euro, USA) - &BurnDrvBurglarx, // Burglar X - &BurnDrvpce_burnangl, // Burning Angels - &BurnDrvBurningfh, // Burning Fight (NGH-018)(US) - &BurnDrvBurningf, // Burning Fight (NGM-018)(NGH-018) - &BurnDrvBurningfp, // Burning Fight (prototype) - &BurnDrvmd_burnforc, // Burning Force (Euro) - &BurnDrvmd_burnforcj, // Burning Force (Jpn) - &BurnDrvmd_burnforcu, // Burning Force (USA) - &BurnDrvpce_cyberx, // Busou Keiji - Cyber Cross - &BurnDrvBbros, // Buster Bros. (US) - &BurnDrvBuzzard, // Buzzard - &BurnDrvBygone, // Bygone - &BurnDrvCactus, // Cactus (bootleg of Saboten Bombers) - &BurnDrvCadashf, // Cadash (France) - &BurnDrvCadashg, // Cadash (Germany) - &BurnDrvCadashi, // Cadash (Italy) - &BurnDrvCadashj, // Cadash (Japan) - &BurnDrvCadashu, // Cadash (US) - &BurnDrvmd_cadash, // Cadash (USA, Asia, Kor) - &BurnDrvCadash, // Cadash (World) - &BurnDrvtg_cadash, // Cadash - &BurnDrvpce_cadash, // Cadash - &BurnDrvCpsDino, // Cadillacs & Dinosaurs (930201 etc) - &BurnDrvCpsDinou, // Cadillacs & Dinosaurs (930201 USA) - &BurnDrvCpsDinopic, // Cadillacs and Dinosaurs (bootleg set 1 (with PIC16c57), 930201 etc) - &BurnDrvCpsDinopic2, // Cadillacs and Dinosaurs (bootleg set 2 (with PIC16c57), 930201 etc) - &BurnDrvCpsDinopic3, // Cadillacs and Dinosaurs (bootleg set 3 (with PIC16c57), 930201 etc) - &BurnDrvCpsDinoh, // Cadillacs and Dinosaurs (bootleg set 3, 930223 Asia TW) - &BurnDrvCpsDinohc, // Cadillacs and Dinosaurs (Chinese bootleg, 930223 Asia TW) - &BurnDrvCpsDinoeh, // Cadillacs and Dinosaurs (hack, 930201 etc) - &BurnDrvCpsDinot, // Cadillacs and Dinosaurs Turbo (bootleg set 1, 930223 Asia TW) - &BurnDrvCpsDinotpic, // Cadillacs and Dinosaurs Turbo (bootleg set 2 (with PIC16c57), 930201 etc) - &BurnDrvCpsDinoj, // Cadillacs Kyouryuu-Shinseiki (Cadillacs 930201 Japan) - &BurnDrvmd_caesar, // Caesar no Yabou (Jpn) - &BurnDrvmd_caesar2, // Caesar no Yabou II (Jpn) - &BurnDrvmd_caesars, // Caesars Palace (USA) - &BurnDrvmd_calripkn, // Cal Ripken Jr. Baseball (USA) - &BurnDrvmd_cal50, // Cal.50 - Caliber Fifty (USA) - &BurnDrvCalibr50, // Caliber 50 - &BurnDrvmd_calgames, // California Games (Euro, USA) - &BurnDrvCalipso, // Calipso - &BurnDrvCameltryj, // Cameltry (Japan, YM2610) - &BurnDrvCameltrya, // Cameltry (US, YM2203 + M6295) - &BurnDrvCameltry, // Cameltry (US, YM2610) - &BurnDrvCameltryau, // Cameltry (World, YM2203 + M6295) - &BurnDrvcannonbp, // Cannon Ball (Pacman Hardware) - &BurnDrvCandance, // Cannon Dancer (Japan) - &BurnDrvmd_cfodder, // Cannon Fodder (Euro) - &BurnDrvCpsCscluba, // Capcom Sports Club (970722 Asia) - &BurnDrvCpsCsclub1d, // Capcom Sports Club (970722 Euro Phoenix Edition) - &BurnDrvCpsCsclub1, // Capcom Sports Club (970722 Euro) - &BurnDrvCpsCsclubh, // Capcom Sports Club (970722 Hispanic) - &BurnDrvCpsCsclubj, // Capcom Sports Club (970722 Japan) - &BurnDrvCpsCsclubjr, // Capcom Sports Club (970722 Japan, Rent version) - &BurnDrvCpsCsclub, // Capcom Sports Club (971017 Euro) - &BurnDrvCworld, // Capcom World (Japan) - &BurnDrvCpsCworld2j, // Capcom World 2 (920611 Japan) - &BurnDrvmd_havoc, // Capt'n Havoc (Euro) - &BurnDrvmd_captaven, // Captain America and the Avengers (Euro) - &BurnDrvmd_captavenu, // Captain America and the Avengers (USA) - &BurnDrvmd_captavenup, // Captain America and the Avengers (USA, Prototype) - &BurnDrvCpsCaptcommjr1, // Captain Commando (910928 Japan) - &BurnDrvCpsCaptcommu, // Captain Commando (910928 USA) - &BurnDrvCpsCaptcommr1, // Captain Commando (911014 other country) - &BurnDrvCpsCaptcommj, // Captain Commando (911202 Japan) - &BurnDrvCpsCaptcomm, // Captain Commando (911202 other country) - &BurnDrvCpsCaptcommb, // Captain Commando (bootleg set 1, 911014 other country) - &BurnDrvCpsCaptcommb2, // Captain Commando (bootleg set 2 (with YM2151 + 2xMSM5205), 911014 other country) - &BurnDrvmd_captlang, // Captain Lang (Jpn) - &BurnDrvmd_captplan, // Captain Planet and the Planeteers (Euro) - &BurnDrvmd_captplanu, // Captain Planet and the Planeteers (USA) - &BurnDrvCsilverj, // Captain Silver (Japan) - &BurnDrvCsilver, // Captain Silver (World) - &BurnDrvctomaday, // Captain Tomaday - &BurnDrvCpsCawingbl, // Carrier Air Wing (bootleg set 1 (with 2xYM2203 + 2xMSM5205), U.S. navy 901012 etc) - &BurnDrvCpsCawingb2, // Carrier Air Wing (bootleg set 2 (with 2xYM2203 + 2xMSM5205), U.S. navy 901012 etc) - &BurnDrvCpsCawingr1, // Carrier Air Wing (U.S. navy 901009 etc) - &BurnDrvCpsCawing, // Carrier Air Wing (U.S. navy 901012 etc) - &BurnDrvCpsCawingu, // Carrier Air Wing (U.S. navy 901012 USA) - &BurnDrvmd_castlillj, // Castle of Illusion - Fushigi no Oshiro Daibouken (Jpn) - &BurnDrvmd_castlill, // Castle of Illusion Starring Mickey Mouse (Euro, USA) - &BurnDrvmd_cvaniau, // Castlevania - Bloodlines (USA) - &BurnDrvmd_cvania, // Castlevania - The New Generation (Euro) - &BurnDrvmd_cvaniap, // Castlevania - The New Generation (Euro, Prototype) - &BurnDrvCatacomb, // Catacomb -#if defined FBA_DEBUG - &BurnDrvCatapult, // Catapult [Bad dump, NOT WORKING] -#endif - &BurnDrvctrpllrp, // Caterpillar Pacman Hack - &BurnDrvCatt, // Catt (Japan) - &BurnDrvCavelon, // Cavelon - &BurnDrvCninjabl, // Caveman Ninja (bootleg) - &BurnDrvCninjau, // Caveman Ninja (US ver 4) - &BurnDrvCninja1, // Caveman Ninja (World ver 1) - &BurnDrvCninja, // Caveman Ninja (World ver 4) -#if defined FBA_DEBUG - &BurnDrvpce_cdsysb, // CD-Rom System Card (v1.0) [no comment, NOT WORKING] - &BurnDrvpce_cdsysa, // CD-Rom System Card (v2.0) [no comment, NOT WORKING] -#endif - &BurnDrvmd_centur, // Centurion - Defender of Rome (Euro, USA) - &BurnDrvChaknpop, // Chack'n Pop - &BurnDrvChainrec, // Chain Reaction (World, Version 2.2, 1995.09.25) - &BurnDrvmd_chakan, // Chakan (Euro, USA) - &BurnDrvmd_kidchamj, // Chameleon Kid (Jpn) - &BurnDrvpce_champwrs, // Champion Wrestler - &BurnDrvtg_forevbox, // Champions Forever Boxing - &BurnDrvmd_champwcs, // Champions World Class Soccer (World) - &BurnDrvmd_champbwl, // Championship Bowling (USA) - &BurnDrvmd_champool, // Championship Pool (USA) - &BurnDrvmd_cproam, // Championship Pro-Am (USA) - &BurnDrvmd_cjfuweng, // Chao Ji Da Fu Weng (Chi) - &BurnDrvPgmdemo, // Chaos (PGM Demo) - &BurnDrvCpsCps1demo, // Chaos Demo (CPS-1) - &BurnDrvneodemo, // Chaos Demo (Neo Geo) - &BurnDrvCharlien, // Charlie Ninja - &BurnDrvChasehqj, // Chase H.Q. (Japan) - &BurnDrvChasehqu, // Chase H.Q. (US) - &BurnDrvChasehq, // Chase H.Q. (World) - &BurnDrvmd_chasehq2, // Chase H.Q. II (USA) - &BurnDrvmd_chavez2, // Chavez II (USA) - &BurnDrvCheckman, // Check Man - &BurnDrvCheckmanj, // Check Man (Japan) - &BurnDrvmd_cheese, // Cheese Cat-Astrophe Starring Speedy Gonzales (Euro) - &BurnDrvmd_chelnov, // Chelnov (Jpn) - &BurnDrvChelnovj, // Chelnov - Atomic Runner (Japan) - &BurnDrvChelnovu, // Chelnov - Atomic Runner (US) - &BurnDrvChelnov, // Chelnov - Atomic Runner (World) - &BurnDrvmd_chess, // Chess (Rus) - &BurnDrvmd_chessa, // Chess (Rus, Alt) - &BurnDrvmd_chessb, // Chess (Rus, v1.05) - &BurnDrvmd_chester, // Chester Cheetah - Too Cool to Fool (USA) - &BurnDrvmd_chesterw, // Chester Cheetah - Wild Wild Quest (USA) - &BurnDrvtg_chewman, // Chew Man Fu - &BurnDrvChewing, // Chewing Gum - &BurnDrvmd_chichi, // Chi Chi's Pro Challenge Golf (USA) - &BurnDrvSeventoitsu, // Chi-Toitsu - &BurnDrvpce_chibim, // Chibi Maruko Chan - Quiz de Piihyara - &BurnDrvmd_chibim, // Chibi Maruko-chan - Wakuwaku Shopping (Jpn) - &BurnDrvmarukodq, // Chibi Marukochan Deluxe Quiz - &BurnDrvCpsChikij, // Chiki Chiki Boys (900619 Japan) - &BurnDrvmd_chiki, // Chiki Chiki Boys (Euro, USA) - &BurnDrvmd_chikij, // Chiki Chiki Boys (Jpn, Kor) - &BurnDrvpce_chikuden, // Chikudenya Toubei - Kubikiri Yakata Yori - &BurnDrvpce_chikuden1, // Chikudenya Toubei - Kubikiri Yakata Yori (Alt) - &BurnDrvChinatwn, // China Town (Japan) - &BurnDrvtg_chinawar, // China Warrior - &BurnDrvmd_chinesec, // Chinese Chess - &BurnDrvmd_chinf3, // Chinese Fighter III (Chi) - &BurnDrvmd_chinf3a, // Chinese Fighter III (Chi, Unprotected?) - &BurnDrvcndi, // Chip n Dale (Intro demo) - &BurnDrvCpsChoko, // Choko (010820 Japan) - &BurnDrvChokChok, // Choky! Choky! - &BurnDrvmd_miracle9, // Chou Kyuukai Miracle Nine (Jpn) - &BurnDrvmd_dinolandj, // Chou Touryuu Retsuden - Dino Land (Jpn) - &BurnDrvLegiono, // Chouji Meikyuu Legion (ver 1.05) - &BurnDrvLegion, // Chouji Meikyuu Legion (ver 2.03) - &BurnDrvironclad, // Choutetsu Brikin'ger - Iron clad (Prototype) - &BurnDrvironclado, // Choutetsu Brikin'ger - Iron clad (Prototype, older) - &BurnDrvpce_bravoman, // Chouzetsu Rinjin - Bravoman - &BurnDrvmd_chuckrck, // Chuck Rock (Euro) - &BurnDrvmd_chuckrcku, // Chuck Rock (USA) - &BurnDrvmd_chukrck2j, // Chuck Rock II (Jpn) - &BurnDrvmd_chukrck2, // Chuck Rock II - Son of Chuck (Euro) - &BurnDrvmd_chukrck2u, // Chuck Rock II - Son of Chuck (USA) - &BurnDrvmd_chukrck2up, // Chuck Rock II - Son of Chuck (USA, Prototype) - &BurnDrvmd_excelart, // Chuck's Excellent Art Tool Animator (USA) - &BurnDrvChukataj, // Chuka Taisen (Japan) - &BurnDrvChukatau, // Chuka Taisen (US) - &BurnDrvChukatai, // Chuka Taisen (World) - &BurnDrvDrgw2j, // Chuugokuryuu II (V100J, Japan) - &BurnDrvpce_circusld, // Circus Lido - &BurnDrvpce_cityhunt, // City Hunter - &BurnDrvmd_classicc, // Classic Collection (Euro) - &BurnDrvmd_clayfght, // Clay Fighter (Euro) - &BurnDrvmd_clayfghtu, // Clay Fighter (USA) - &BurnDrvmd_cliffh, // Cliffhanger (Euro) - &BurnDrvmd_cliffhp, // Cliffhanger (Prototype) - &BurnDrvmd_cliffhu, // Cliffhanger (USA) - &BurnDrvmd_clue, // Clue (USA) - &BurnDrvCltchitrj, // Clutch Hitter (set 1, Japan, FD1094 317-0175) - &BurnDrvCltchitr, // Clutch Hitter (set 2, US, FD1094 317-0176) - &BurnDrvmd_coachk, // Coach K College Basketball (USA) - &BurnDrvCobracomb, // Cobra-Command (Italian bootleg) - &BurnDrvCobracmj, // Cobra-Command (Japan) - &BurnDrvCobracmja, // Cobra-Command (Japan?, set 2) - &BurnDrvCobracom, // Cobra-Command (World revision 5) - &BurnDrvcnbe, // Codename - Blut Engel (2006-01-19) - &BurnDrvmd_colleg96, // College Football USA 96 (USA) - &BurnDrvmd_colleg97, // College Football USA 97 (USA) - &BurnDrvmd_collncp19, // College Football's National Championship (Prototype, 19940413) - &BurnDrvmd_collncp18, // College Football's National Championship (Prototype, 19940418) - &BurnDrvmd_collncp17, // College Football's National Championship (Prototype, 19940419) - &BurnDrvmd_collncp16, // College Football's National Championship (Prototype, 19940429) - &BurnDrvmd_collncp15, // College Football's National Championship (Prototype, 19940503) - &BurnDrvmd_collncp14, // College Football's National Championship (Prototype, 19940506) - &BurnDrvmd_collncp13, // College Football's National Championship (Prototype, 19940511-A) - &BurnDrvmd_collncp12, // College Football's National Championship (Prototype, 19940517-A) - &BurnDrvmd_collncp11, // College Football's National Championship (Prototype, 19940520) - &BurnDrvmd_collncp10, // College Football's National Championship (Prototype, 19940525) - &BurnDrvmd_collncp09, // College Football's National Championship (Prototype, 19940531) - &BurnDrvmd_collncp08, // College Football's National Championship (Prototype, 19940601) - &BurnDrvmd_collncp07, // College Football's National Championship (Prototype, 19940603) - &BurnDrvmd_collncp06, // College Football's National Championship (Prototype, 19940607) - &BurnDrvmd_collncp05, // College Football's National Championship (Prototype, 19940608) - &BurnDrvmd_collncp04, // College Football's National Championship (Prototype, 19940614) - &BurnDrvmd_collncp03, // College Football's National Championship (Prototype, 19940615) - &BurnDrvmd_collncp02, // College Football's National Championship (Prototype, 19940618) - &BurnDrvmd_collncp01, // College Football's National Championship (Prototype, 19940620) - &BurnDrvmd_collnc, // College Football's National Championship (USA) - &BurnDrvmd_collnc2, // College Football's National Championship II (USA) - &BurnDrvmd_collslam, // College Slam (USA) - &BurnDrvpce_columns, // Columns - &BurnDrvcolumnsn, // Columns (Neo Geo) - &BurnDrvmd_columns1, // Columns (World) - &BurnDrvmd_columns, // Columns (World, v1.1) - &BurnDrvmd_columns3, // Columns III - Revenge of Columns (USA) - &BurnDrvmd_columns3j, // Columns III - Taiketsu! Columns World (Jpn, Kor) - &BurnDrvmd_combat, // Combat Aces (Prototype) - &BurnDrvmd_combatca, // Combat Cars (Euro, USA) - &BurnDrvcombh, // Combat Hawk - &BurnDrvmd_comix, // Comix Zone (Euro) - &BurnDrvmd_comixp, // Comix Zone (Euro, Prototype, 19950628) - &BurnDrvmd_comixup01, // Comix Zone (Euro, Prototype, 19950712) - &BurnDrvmd_comixj, // Comix Zone (Jpn) - &BurnDrvmd_comixkp, // Comix Zone (Kor, Prototype, 19950609) - &BurnDrvmd_comixup10, // Comix Zone (Prototype, 19950526) - &BurnDrvmd_comixup09, // Comix Zone (Prototype, 19950530) - &BurnDrvmd_comixsc, // Comix Zone (Sega Channel, Prototype, 19950612) - &BurnDrvmd_comixu, // Comix Zone (USA) - &BurnDrvmd_comixup, // Comix Zone (USA, Prototype) - &BurnDrvmd_comixup05, // Comix Zone (USA, Prototype, 19950601) - &BurnDrvmd_comixup08, // Comix Zone (USA, Prototype, 19950601-B) - &BurnDrvmd_comixup07, // Comix Zone (USA, Prototype, 19950601-C) - &BurnDrvmd_comixup06, // Comix Zone (USA, Prototype, 19950601-D) - &BurnDrvmd_comixup03, // Comix Zone (USA, Prototype, 19950602) - &BurnDrvmd_comixup04, // Comix Zone (USA, Prototype, 19950602-B) - &BurnDrvmd_comixup02, // Comix Zone (USA, Prototype, 19950603) - &BurnDrvmd_commconq, // Command & Conquer (Prototype) - &BurnDrvCommandb2, // Commando (bootleg 2) - &BurnDrvCommandb, // Commando (bootleg) - &BurnDrvCommandu, // Commando (US) - &BurnDrvCommando, // Commando (World) - &BurnDrvmd_commands, // Commandos (Rus) - &BurnDrvmd_congo, // Congo (Prototype) -#if defined FBA_DEBUG - &BurnDrvConquer, // Conquer [Bad dump, NOT WORKING] -#endif - &BurnDrvContcircj, // Continental Circus (Japan) - &BurnDrvContcircu, // Continental Circus (US set 1) - &BurnDrvContcircua, // Continental Circus (US set 2) - &BurnDrvContcirc, // Continental Circus (World) - &BurnDrvContrab, // Contra (bootleg) - &BurnDrvContrabj1, // Contra (Japan bootleg, set 2) - &BurnDrvContraj, // Contra (Japan) - &BurnDrvContra, // Contra (US, Set 1) - &BurnDrvContra1, // Contra (US, Set 2) - &BurnDrvmd_contra, // Contra - Hard Corps (USA, Kor) - &BurnDrvmd_contraj, // Contra - The Hard Corps (Jpn) - &BurnDrvCookbib, // Cookie & Bibi - &BurnDrvCookbib2, // Cookie & Bibi 2 - &BurnDrvCookbib3, // Cookie & Bibi 3 - &BurnDrvmd_coolspot, // Cool Spot (Euro) - &BurnDrvmd_coolspotj, // Cool Spot (Jpn, Kor) - &BurnDrvmd_coolspotu, // Cool Spot (USA) - &BurnDrvmd_coolspotup, // Cool Spot (USA, Prototype) - &BurnDrvmd_corporat, // Corporation (Euro) - &BurnDrvpce_coryoon, // Coryoon - Child of Dragon - &BurnDrvpce_coryoon1, // Coryoon - Child of Dragon (Alt) - &BurnDrvCavenger, // Cosmic Avenger - &BurnDrvCosmccop, // Cosmic Cop (World) - &BurnDrvmd_cosmic, // Cosmic Spacehead (Euro, USA) - &BurnDrvCottonja, // Cotton (set 1, Japan, Rev A, FD1094 317-0179a)) - &BurnDrvCottonj, // Cotton (set 2, Japan, Rev B, FD1094 317-0179b)) - &BurnDrvCottonu, // Cotton (set 2, US, FD1094 317-0180) - &BurnDrvCotton, // Cotton (set 3, World, FD1094 317-0181a) - &BurnDrvmd_cstrike, // Counter Strike (Rus) - &BurnDrvmd_crkdown1, // Crack Down (Euro, Jpn) - &BurnDrvmd_crkdown, // Crack Down (Euro, Jpn, Rev. A) - &BurnDrvmd_crkdownu, // Crack Down (USA) - &BurnDrvmd_crash, // Crash Bandicoot (Rus) - &BurnDrvtg_cratermz, // Cratermaze - &BurnDrvmd_crayon, // Crayon Shin-chan - Arashi o Yobu Enji (Jpn) - &BurnDrvQcrayon2, // Crayon Shinchan Orato Asobo (Japan) - &BurnDrvCclimbr2, // Crazy Climber 2 (Japan) - &BurnDrvCclmbr2a, // Crazy Climber 2 (Japan, Harder) - &BurnDrvCrazycop, // Crazy Cop (Japan) - &BurnDrvCrazyfgt, // Crazy Fight - &BurnDrvCkongg, // Crazy Kong (bootleg on Galaxian hardware) - &BurnDrvCkongmc, // Crazy Kong (bootleg on Moon Cresta hardware) - &BurnDrvCkongs, // Crazy Kong (Scramble hardware) - &BurnDrvMooncrsl, // Cresta Mundo (Laguna S.A. Spanish Moon Cresta bootleg) - &BurnDrvCrimecj, // Crime City (Japan) - &BurnDrvCrimecu, // Crime City (US) - &BurnDrvCrimec, // Crime City (World) - &BurnDrvCrimfgtj, // Crime Fighters (Japan 2 Players) - &BurnDrvCrimfght, // Crime Fighters (US 4 players) - &BurnDrvCrimfgt2, // Crime Fighters (World 2 Players) - &BurnDrvVendettaj, // Crime Fighters 2 (Japan 2 Players ver. P) - &BurnDrvcrockman, // Crock-Man (bootleg, Rene-Pierre) - &BurnDrvCroquis, // Croquis (Germany) - &BurnDrvCrossbld, // Cross Blades! (Japan) - &BurnDrvmd_xfire, // Cross Fire (USA) - &BurnDrvCrospang, // Cross Pang - &BurnDrvpce_xwiber, // Cross Wiber - Cyber Combat Police - &BurnDrvcrsword, // Crossed Swords (ALM-002)(ALH-002) - &BurnDrvcthd2003, // Crouching Tiger Hidden Dragon 2003 (set 1) - &BurnDrvcthd2k3a, // Crouching Tiger Hidden Dragon 2003 (set 2) - &BurnDrvct2k3sp, // Crouching Tiger Hidden Dragon 2003 Super Plus - &BurnDrvct2k3sa, // Crouching Tiger Hidden Dragon 2003 Super Plus alternate - &BurnDrvCbusterj, // Crude Buster (Japan) - &BurnDrvmd_crudeb, // Crude Buster (Jpn) - &BurnDrvCbusterw, // Crude Buster (World FU version) - &BurnDrvCbuster, // Crude Buster (World FX version) - &BurnDrvmd_crueball, // Crue Ball (Euro, USA) - &BurnDrvmd_crueballj, // Crue Ball (Jpn) - &BurnDrvmd_crusader, // Crusader of Centy (USA) - &BurnDrvcrushbl, // Crush Roller (bootleg set 1) - &BurnDrvcrushbl2, // Crush Roller (bootleg set 2) - &BurnDrvcrushbl3, // Crush Roller (bootleg set 3) - &BurnDrvcrush3, // Crush Roller (Kural - bootleg?) - &BurnDrvcrush2, // Crush Roller (Kural Esco - bootleg?) - &BurnDrvcrush, // Crush Roller (Kural Samno) - &BurnDrvcrush4, // Crush Roller (Kural TWT) - &BurnDrvcrushs, // Crush Roller (Sidam bootleg) - &BurnDrvCrusherm, // Crusher Makochan (Japan) - &BurnDrvmd_crying, // Crying - Aseimei Sensou (Jpn) - &BurnDrvmd_crystlpt, // Crystal's Pony Tale (USA) - &BurnDrvmd_crystlptp15, // Crystal's Pony Tale (USA, Prototype, 19940511) - &BurnDrvmd_crystlptp14, // Crystal's Pony Tale (USA, Prototype, 19940519) - &BurnDrvmd_crystlptp13, // Crystal's Pony Tale (USA, Prototype, 19940526) - &BurnDrvmd_crystlptp12, // Crystal's Pony Tale (USA, Prototype, 19940601) - &BurnDrvmd_crystlptp11, // Crystal's Pony Tale (USA, Prototype, 19940606) - &BurnDrvmd_crystlptp10, // Crystal's Pony Tale (USA, Prototype, 19940610) - &BurnDrvmd_crystlptp09, // Crystal's Pony Tale (USA, Prototype, 19940623) - &BurnDrvmd_crystlptp08, // Crystal's Pony Tale (USA, Prototype, 19940628) - &BurnDrvmd_crystlptp07, // Crystal's Pony Tale (USA, Prototype, 19940630) - &BurnDrvmd_crystlptp06, // Crystal's Pony Tale (USA, Prototype, 19940701) - &BurnDrvmd_crystlptp05, // Crystal's Pony Tale (USA, Prototype, 19940702) - &BurnDrvmd_crystlptp04, // Crystal's Pony Tale (USA, Prototype, 19940703) - &BurnDrvmd_crystlptp02, // Crystal's Pony Tale (USA, Prototype, 19940712) - &BurnDrvmd_crystlptp03, // Crystal's Pony Tale (USA, Prototype, 19940712-B) - &BurnDrvmd_crystlptp01, // Crystal's Pony Tale (USA, Prototype, 19940713) - &BurnDrvCuebrckj, // Cue Brick (Japan) - &BurnDrvCuebrick, // Cue Brick (World ver. D) - &BurnDrvmd_curse, // Curse (Jpn) - &BurnDrvmd_cutiesuz, // Cutie Suzuki no Ringside Angel (Jpn) - &BurnDrvmd_cutthr, // CutThroat Island (Euro, USA) - &BurnDrvmd_cutthrp, // CutThroat Island (Prototye) - &BurnDrvpce_cybrcore, // Cyber Core - &BurnDrvtg_cybrcore, // Cyber Core - &BurnDrvpce_cyberdod, // Cyber Dodge - &BurnDrvpce_cyknight, // Cyber Knight - &BurnDrvmd_eswatj, // Cyber Police ESWAT (Jpn, Rev. 0) - &BurnDrvCybertnk, // Cyber Tank (v1.4) - &BurnDrvmd_cybercop, // Cyber-Cop (USA) - &BurnDrvCyberlip, // Cyber-Lip (NGM-010) - &BurnDrvmd_cyberbal, // CyberBall (World) - &BurnDrvCpsCybotsj, // Cyberbots - fullmetal madness (950420 Japan) - &BurnDrvCpsCybots, // Cyberbots - fullmetal madness (950424 Euro) - &BurnDrvCpsCybotsud, // Cyberbots - fullmetal madness (950424 USA Phoenix Edition) - &BurnDrvCpsCybotsu, // Cyberbots - fullmetal madness (950424 USA) - &BurnDrvCpsCybotsjd, // Cyberbots - fullmetal madness (Japan 950424) (decrypted bootleg) - &BurnDrvmd_cyborgj, // Cyborg Justice (Euro, USA) - &BurnDrvmd_cyborgjp, // Cyborg Justice (Prototype) - &BurnDrvCyvern, // Cyvern (Japan) - &BurnDrvDcon, // D-Con - &BurnDrvDdcrew1, // D. D. Crew (set 1, World, 4 Players, FD1094 317-?) - &BurnDrvDdcrew2, // D. D. Crew (set 2, World, 2 Players, FD1094 317-0184) - &BurnDrvDdcrewu, // D. D. Crew (set 3, US, 4 Players, FD1094 317-0186) - &BurnDrvDdcrew, // D. D. Crew (set 4, World, 3 Players, FD1094 317-0190) - &BurnDrvDdcrewj, // D. D. Crew (set 5, Japan, 4 Players, FD1094 317-0185) - &BurnDrvDdcrewj2, // D. D. Crew (set 6, Japan, 2 Players, FD1094 317-0182) - &BurnDrvmd_daffy, // Daffy Duck in Hollywood (Euro) - &BurnDrvmd_daffyp, // Daffy Duck in Hollywood (Euro, Prototype) - &BurnDrvmd_dahnamk, // Dahna (Kor) - &BurnDrvmd_dahnam, // Dahna Megami Tanjou (Jpn) - &BurnDrvCpsDaimakaib, // Dai Makai-Mura (bootleg, Japan) - &BurnDrvCpsDaimakair, // Dai Makai-Mura (Japan Resale Ver.) - &BurnDrvCpsDaimakai, // Dai Makai-Mura (Japan) - &BurnDrvsgx_daimakai, // Dai Makaimura - &BurnDrvmd_daimakai, // Dai Makaimura (Jpn) - &BurnDrvpce_daisenpu, // Dai Senpu - &BurnDrvpce_donaturl, // Daichi Kun Crisis - Do Natural - &BurnDrvmd_daikokai, // Daikoukai Jidai (Jpn) - &BurnDrvmd_daikok2, // Daikoukai Jidai II (Jpn) - &BurnDrvDkgensanm72, // Daiku no Gensan (Japan, M72) - &BurnDrvDkgensan, // Daiku no Gensan (Japan, M82) - &BurnDrvDaioh, // Daioh (set 1) - &BurnDrvDaioha, // Daioh (set 2) - &BurnDrvDaisenpu, // Daisenpu (Japan) - &BurnDrvDambustruk, // Dambusters (UK) - &BurnDrvDambustr, // Dambusters (US, set 1) - &BurnDrvDambustra, // Dambusters (US, set 2) - &BurnDrvmd_dangseed, // Dangerous Seed (Jpn) - &BurnDrvDFeveron, // Dangun Feveron (Japan, ver. 98/09/17) - &BurnDrvDaraku, // Daraku Tenshi - The Fallen Angels - &BurnDrvDariuse, // Darius (Extra) (Japan) - &BurnDrvDariuso, // Darius (Japan old version) - &BurnDrvDariusj, // Darius (Japan) - &BurnDrvDarius, // Darius (World) - &BurnDrvpce_dariusa, // Darius Alpha - &BurnDrvDarius2do, // Darius II (dual screen) (Japan old version) - &BurnDrvDarius2d, // Darius II (dual screen) (Japan) - &BurnDrvDarius2, // Darius II (Japan) - &BurnDrvmd_darius2, // Darius II (Jpn) - &BurnDrvpce_dariusp, // Darius Plus - &BurnDrvDarkadv, // Dark Adventure - &BurnDrvmd_darkcast, // Dark Castle (Euro, USA) - &BurnDrvDarkplnt, // Dark Planet - &BurnDrvDarkseaj, // Dark Seal (Japan) - &BurnDrvDarksea1, // Dark Seal (World revision 1) - &BurnDrvDarkseal, // Dark Seal (World revision 3) - &BurnDrvDarkseal2, // Dark Seal 2 (Japan v2.1) - &BurnDrvDarktowr, // Dark Tower - &BurnDrvCpsDstlka, // Darkstalkers - the night warriors (940705 Asia) - &BurnDrvCpsDstlk, // Darkstalkers - the night warriors (940705 Euro) - &BurnDrvCpsDstlku1d, // Darkstalkers - the night warriors (940705 USA Phoenix Edition) - &BurnDrvCpsDstlkur1, // Darkstalkers - the night warriors (940705 USA) - &BurnDrvCpsDstlkh, // Darkstalkers - the night warriors (940818 Hispanic) - &BurnDrvCpsDstlku, // Darkstalkers - the night warriors (940818 USA) - &BurnDrvtg_darkwing, // Darkwing Duck - &BurnDrvdwi, // DarkWing Duck (Intro demo) - &BurnDrvdwia, // DarkWing Duck (Intro demo, alt) - &BurnDrvmd_darwin, // Darwin 4081 (Jpn, Kor) - &BurnDrvmd_dashdesp1, // Dashin' Desperadoes (Euro, Prototype) - &BurnDrvmd_dashdes, // Dashin' Desperadoes (USA) - &BurnDrvmd_dashdesp2, // Dashin' Desperadoes (USA, Prototype) - &BurnDrvDquizgo, // Date Quiz Go Go (Korea) - &BurnDrvpowj, // Datsugoku - Prisoners of War (Japan) - &BurnDrvmd_amaznten, // David Crane's Amazing Tennis (USA) - &BurnDrvmd_drscj, // David Robinson Basketball (Jpn) - &BurnDrvmd_drsc, // David Robinson's Supreme Court (Euro, USA) - &BurnDrvmd_daviscp2a, // Davis Cup II (USA, Prototype) - &BurnDrvtg_daviscup, // Davis Cup Tennis - &BurnDrvmd_daviscupa, // Davis Cup World Tour (Euro, USA, 199306) - &BurnDrvmd_daviscup, // Davis Cup World Tour (Euro, USA, 199307) - &BurnDrvmd_daviscp2, // Davis Cup World Tour Tennis 2 (Prototype 1) - &BurnDrvmd_dazexmas, // Daze Before Christmas (Oceania) - &BurnDrvmd_dazexmasp, // Daze Before Christmas (Oceania, Prototype) - &BurnDrvDeadconxj, // Dead Connection (Japan) - &BurnDrvDeadconx, // Dead Connection (World) - &BurnDrvtg_deadmoon, // Dead Moon - &BurnDrvpce_deadmoon, // Dead Moon - Tsuki Sekai no Akumu - &BurnDrvmd_deadlymv, // Deadly Moves (USA) - &BurnDrvDeathbrd, // Death Brade (Japan ver JM-3) - &BurnDrvmd_deathcal, // Death Caliber (Rus) - &BurnDrvmd_deathdl, // Death Duel (USA) - &BurnDrvmd_decapatt, // DecapAttack (Euro, USA, Kor) - &BurnDrvtg_deepblue, // Deep Blue - &BurnDrvpce_deepblue, // Deep Blue - Kaitei Shinwa - &BurnDrvmd_deerhunt, // Deer Hunter (Rus) - &BurnDrvDeerhune, // Deer Hunting USA V1 - &BurnDrvDeerhund, // Deer Hunting USA V2 - &BurnDrvDeerhunc, // Deer Hunting USA V3.0 - &BurnDrvDeerhunb, // Deer Hunting USA V4.0 - &BurnDrvDeerhuna, // Deer Hunting USA V4.2 - &BurnDrvDeerhunt, // Deer Hunting USA V4.3 - &BurnDrvRedufo, // Defend the Terra Attack on the Red UFO - &BurnDrvRedufob, // Defend the Terra Attack on the Red UFO (bootleg) - &BurnDrvDefense, // Defense (System 16B, FD1089A 317-0028) - &BurnDrvmd_demoman, // Demolition Man (Euro, USA) - &BurnDrvmd_demomanp, // Demolition Man (USA, Prototype) - &BurnDrvdmnfrnta, // Demon Front (V102, China) - &BurnDrvdmnfrntb, // Demon Front (V103) - &BurnDrvDmnfrnt, // Demon Front (V105) -#if defined FBA_DEBUG - &BurnDrvDmnfrntpcb, // Demon Front (V107, Korea, Single PCB Version) [Insert coin to get past ERROR, NOT WORKING] -#endif - &BurnDrvDemonwld, // Demon's World / Horror Story (set 1) - &BurnDrvDemonwld2, // Demon's World / Horror Story (set 3) - &BurnDrvDemonwld3, // Demon's World / Horror Story (set 4) - &BurnDrvDemonwld1, // Demon's World / Horror Story (Taito license, set 2) - &BurnDrvDeroon, // Deroon DeroDero - &BurnDrvDassault4, // Desert Assault (US 4 Players) - &BurnDrvDassault, // Desert Assault (US) - &BurnDrvDesertbrj, // Desert Breaker (Japan, FD1094 317-0194) - &BurnDrvDesertbr, // Desert Breaker (World, FD1094 317-0196) - &BurnDrvmd_desrtdem, // Desert Demolition (Euro, USA) - &BurnDrvmd_desrtdemp9, // Desert Demolition (Prototype, 19941206) - &BurnDrvmd_desrtdemp8, // Desert Demolition (Prototype, 19941208) - &BurnDrvmd_desrtdemp6, // Desert Demolition (Prototype, 19941212) - &BurnDrvmd_desrtdemp7, // Desert Demolition (Prototype, 19941212-B) - &BurnDrvmd_desrtdemp5, // Desert Demolition (Prototype, 19941213) - &BurnDrvmd_desrtdemp4, // Desert Demolition (Prototype, 19941214) - &BurnDrvmd_desrtdemp3, // Desert Demolition (Prototype, 19941215) - &BurnDrvmd_desrtdemp2, // Desert Demolition (Prototype, 19941216) - &BurnDrvmd_desrtdemp1, // Desert Demolition (Prototype, 19941219) - &BurnDrvmd_dstrike, // Desert Strike (Euro, USA) - &BurnDrvmd_dstrikej, // Desert Strike (Jpn, Kor) - &BurnDrvDetatwin, // Detana!! Twin Bee (Japan ver. J) - &BurnDrvpce_twinbee, // Detana!! Twinbee - &BurnDrvDevstors3, // Devastators (ver. V) - &BurnDrvDevstors2, // Devastators (ver. X) - &BurnDrvDevstors, // Devastators (ver. Z) - &BurnDrvpce_devlcrsh, // Devil Crash - Naxat Pinball - &BurnDrvmd_devlcrsh, // Devil Crash MD (Jpn) - &BurnDrvDevilfsh, // Devil Fish - &BurnDrvDevilfsg, // Devil Fish (Galaxian hardware, bootleg?) - &BurnDrvDevilw, // Devil World - &BurnDrvtg_devlcrsh, // Devil's Crush - Naxat Pinball - &BurnDrvmd_devilish, // Devilish - The Next Possession (USA) - &BurnDrvmd_diablo, // Diablo (Rus) - &BurnDrvmd_dialqo, // Dial Q o Mawase! (Jpn) - &BurnDrvDiamond, // Diamond Run - &BurnDrvmd_dicktr, // Dick Tracy (World) - &BurnDrvmd_dickvitl, // Dick Vitale's 'Awesome, Baby!' College Hoops (USA) - &BurnDrvpce_diehard, // Die Hard - &BurnDrvDietgoe, // Diet Go Go (Euro v1.1 1992.08.04) - &BurnDrvDietgo, // Diet Go Go (Euro v1.1 1992.09.26) - &BurnDrvDietgoj, // Diet Go Go (Japan v1.1 1992.09.26) - &BurnDrvDietgou, // Diet Go Go (USA v1.1 1992.09.26) - &BurnDrvdiggerma, // Digger Man - &BurnDrvpce_digichmp, // Digital Champ - &BurnDrvCpsDimahoo, // Dimahoo (000121 Euro) - &BurnDrvCpsDimahoud, // Dimahoo (000121 USA Phoenix Edition) - &BurnDrvCpsDimahoou, // Dimahoo (000121 USA) - &BurnDrvDingo, // Dingo -#if defined FBA_DEBUG - &BurnDrvDingoe, // Dingo (encrypted) [Encrypted, NOT WORKING] -#endif - &BurnDrvmd_dinodini, // Dino Dini's Soccer (Euro) - &BurnDrvmd_dinoland, // Dino Land (USA) - &BurnDrvDinorexj, // Dino Rex (Japan) - &BurnDrvDinorexu, // Dino Rex (US) - &BurnDrvDinorex, // Dino Rex (World) - &BurnDrvCpsDinohunt, // Dinosaur Hunter (Chinese bootleg, 930223 Asia TW) - &BurnDrvmd_aladdin, // Disney's Aladdin (Euro) - &BurnDrvmd_aladdinj, // Disney's Aladdin (Jpn) - &BurnDrvmd_aladdinu, // Disney's Aladdin (USA) - &BurnDrvmd_aladdinup, // Disney's Aladdin (USA, Prototype) - &BurnDrvmd_ariel, // Disney's Ariel the Little Mermaid (Euro, USA) - &BurnDrvmd_beauty, // Disney's Beauty and the Beast - Belle's Quest (USA) - &BurnDrvmd_beautyrb, // Disney's Beauty and the Beast - Roar of the Beast (USA) - &BurnDrvmd_jungle, // Disney's The Jungle Book (Euro) - &BurnDrvmd_jungleu, // Disney's The Jungle Book (USA) - &BurnDrvDiverboy, // Diver Boy - &BurnDrvmd_divine, // Divine Sealing (Jpn) - &BurnDrvmd_djboy, // DJ Boy (Euro) - &BurnDrvmd_djboyj, // DJ Boy (Jpn) - &BurnDrvmd_djboyu, // DJ Boy (USA) - &BurnDrvDoDonpachijH, // DoDonPachi (Arrange Mode version 1.1, hack by Trap15) - &BurnDrvDoDonpachi, // DoDonPachi (International, master ver. 97/02/05) - &BurnDrvDoDonpachiJ, // DoDonPachi (Japan, master ver. 97/02/05) - &BurnDrvDdp3b, // DoDonPachi Dai-Ou-Jou (V100 (first version), Japan) - &BurnDrvDdp3a, // DoDonPachi Dai-Ou-Jou (V100 (second version), Japan) - &BurnDrvDdp3, // DoDonPachi Dai-Ou-Jou (V101, Japan) - &BurnDrvDdp3blka, // DoDonPachi Dai-Ou-Jou Black Label (V100 (2002.10.07 Black Ver), Japan) - &BurnDrvDdp3blk, // DoDonPachi Dai-Ou-Jou Black Label (V100, (2002.10.07.Black Ver), Japan) - &BurnDrvDogyuun, // Dogyuun - &BurnDrvDogyuunk, // Dogyuun (Licensed to Unite Trading For Korea) - &BurnDrvDogyuunt, // Dogyuun (test location version) - &BurnDrvDokaben, // Dokaben (Japan) - &BurnDrvmd_domino, // Domino (Rus) - &BurnDrvmd_dominus, // Dominus (USA, Prototype) - &BurnDrvdommy, // Dommy - &BurnDrvDondokodj, // Don Doko Don (Japan) - &BurnDrvDondokodu, // Don Doko Don (US) - &BurnDrvDondokod, // Don Doko Don (World) - &BurnDrvpce_dondoko, // Don Doko Don! - &BurnDrvmd_mauimallb, // Donald in Maui Mallard (Bra) - &BurnDrvmd_mauimall, // Donald in Maui Mallard (Euro) - &BurnDrvmd_dongguri, // Dong Gu Ri Te Chi Jak Jeon (Kor) - &BurnDrvDkingjr, // Donkey King Jr. (bootleg of Donkey Kong Jr.) - &BurnDrvDkongj, // Donkey Kong (Japan set 1) - &BurnDrvDkongjo, // Donkey Kong (Japan set 2) - &BurnDrvDkongjo1, // Donkey Kong (Japan set 3) - &BurnDrvDkong, // Donkey Kong (US set 1) - &BurnDrvDkongo, // Donkey Kong (US set 2) - &BurnDrvDkong3b, // Donkey Kong 3 (bootleg on Donkey Kong Jr. hardware) - &BurnDrvDkong3j, // Donkey Kong 3 (Japan) - &BurnDrvDkong3, // Donkey Kong 3 (US) - &BurnDrvDkongf, // Donkey Kong Foundry (hack) - &BurnDrvDkongx11, // Donkey Kong II - Jumpman Returns (V1.1) (hack) - &BurnDrvDkongx, // Donkey Kong II - Jumpman Returns (V1.2) (hack) - &BurnDrvDkongjrb, // Donkey Kong Jr. (bootleg) - &BurnDrvDkongjrj, // Donkey Kong Jr. (Japan) - &BurnDrvDkongjrm, // Donkey Kong Jr. (Moon Cresta hardware) -#if defined FBA_DEBUG - &BurnDrvDkongjre, // Donkey Kong Junior (Easy) [no comment, NOT WORKING] -#endif - &BurnDrvDkongjnrj, // Donkey Kong Junior (Japan?) - &BurnDrvDkongjr, // Donkey Kong Junior (US) - &BurnDrvDonpachihk, // DonPachi (Hong Kong, ver. 1.10, 95/05/17) - &BurnDrvDonpachij, // DonPachi (Japan, ver. 1.01, 95/05/11) - &BurnDrvDonpachikr, // DonPachi (Korea, ver. 1.12, 95/05/2x) - &BurnDrvDonpachi, // DonPachi (USA, ver. 1.12, 95/05/2x) - &BurnDrvmd_doomtrop, // Doom Troopers - The Mutant Chronicles (USA) - &BurnDrvpce_dorams, // Doraemon - Meikyuu Dai Sakusen - &BurnDrvpce_dorandn, // Doraemon - Nobita no Dorabian Night - &BurnDrvmd_doraemon, // Doraemon - Yume Dorobou to 7-nin no Gozans (Jpn) - &BurnDrvDorodon, // Dorodon (set 1) - &BurnDrvDorodon2, // Dorodon (set 2) - &BurnDrvdotrikun, // Dottori Kun (new version) - &BurnDrvdotriku2, // Dottori Kun (old version) - &BurnDrvDblaxleu, // Double Axle (US earlier) - &BurnDrvDblaxle, // Double Axle (US) - &BurnDrvmd_doublecl, // Double Clutch (Euro) - &BurnDrvDdragonb, // Double Dragon (bootleg with HD6309) - &BurnDrvDdragnba, // Double Dragon (bootleg with M6803) - &BurnDrvDdragob2, // Double Dragon (bootleg) - &BurnDrvmd_ddragon, // Double Dragon (Euro, USA) - &BurnDrvDdragon, // Double Dragon (Japan) - &BurnDrvdoubledr, // Double Dragon (Neo-Geo) - &BurnDrvDdragonu, // Double Dragon (US set 1) - &BurnDrvDdragoua, // Double Dragon (US set 2) - &BurnDrvDdragoub, // Double Dragon (US set 3) - &BurnDrvDdragonw, // Double Dragon (World set 1) - &BurnDrvDdragnw1, // Double Dragon (World set 2) - &BurnDrvmd_ddragon3, // Double Dragon 3 - The Arcade Game (Euro, USA) - &BurnDrvDdrago3b, // Double Dragon 3 - The Rosetta Stone (bootleg) - &BurnDrvDdrago3j, // Double Dragon 3 - The Rosetta Stone (Japan) - &BurnDrvDdrago3p, // Double Dragon 3 - The Rosetta Stone (prototype) - &BurnDrvDdragon3, // Double Dragon 3 - The Rosetta Stone (US) - &BurnDrvmd_ddragon2, // Double Dragon II - The Revenge (Jpn) - &BurnDrvDdragon2u, // Double Dragon II - The Revenge (US) - &BurnDrvDdragon2, // Double Dragon II - The Revenge (World) - &BurnDrvmd_ddragon5, // Double Dragon V - The Shadow Falls (USA) - &BurnDrvmd_ddribble, // Double Dribble - The Playoff Edition (USA) - &BurnDrvpce_ddungw, // Double Dungeons - W - &BurnDrvtg_ddungw, // Double Dungeons - W - &BurnDrvDblpoint, // Double Point - &BurnDrvDblpoind, // Double Point (Dong Bang Electron, bootleg?) - &BurnDrvpce_download, // Download - &BurnDrvpce_download1, // Download (Alt) - &BurnDrvDowntownj, // DownTown / Mokugeki (Joystick Hack) -#if defined FBA_DEBUG - &BurnDrvDowntownp, // DownTown / Mokugeki (prototype) [No sound, imperfect inputs, NOT WORKING] -#endif - &BurnDrvDowntown, // DownTown / Mokugeki (Set 1) [No sound, imperfect inputs, NOT WORKING] -#if defined FBA_DEBUG - &BurnDrvDowntown2, // DownTown / Mokugeki (Set 2) [No sound, imperfect inputs, NOT WORKING] -#endif - &BurnDrvmd_drrobotn, // Dr. Robotnik's Mean Bean Machine (Euro) - &BurnDrvmd_drrobotnu, // Dr. Robotnik's Mean Bean Machine (USA) - &BurnDrvmd_drrobotnup, // Dr. Robotnik's Mean Bean Machine (USA, Prototype) - &BurnDrvDrtomy, // Dr. Tomy - &BurnDrvDrtopplu, // Dr. Toppel's Adventure (US) - &BurnDrvDrtoppel, // Dr. Toppel's Adventure (World) - &BurnDrvDrtopplj, // Dr. Toppel's Tankentai (Japan) - &BurnDrvmd_dragon, // Dragon - The Bruce Lee Story (Euro) - &BurnDrvmd_dragonu, // Dragon - The Bruce Lee Story (USA) - &BurnDrvmd_dbz, // Dragon Ball Z - Buyuu Retsuden (Jpn) - &BurnDrvmd_dbzf, // Dragon Ball Z - L'Appel du Destin (Fra) - &BurnDrvDragnblz, // Dragon Blaze - &BurnDrvDrgnbowl, // Dragon Bowl - &BurnDrvDbreedm72, // Dragon Breed (M72 PCB version) - &BurnDrvDbreed, // Dragon Breed (M81 PCB version) - &BurnDrvDrgnbstr, // Dragon Buster - &BurnDrvpce_dragnegg, // Dragon Egg! - &BurnDrvDrgnmst, // Dragon Master - &BurnDrvpce_dsaber, // Dragon Saber - After Story of Dragon Spirit - &BurnDrvpce_dsaber1, // Dragon Saber - After Story of Dragon Spirit (Alt) - &BurnDrvmd_dslayed, // Dragon Slayer - Eiyuu Densetsu (Jpn) - &BurnDrvmd_dslayed2, // Dragon Slayer - Eiyuu Densetsu II (Jpn) - &BurnDrvtg_dspirit, // Dragon Spirit - &BurnDrvpce_dspirit, // Dragon Spirit - &BurnDrvDrgnunit, // Dragon Unit / Castle of Dragon - &BurnDrvDw2001, // Dragon World 2001 (V100, Japan) -#if defined FBA_DEBUG - &BurnDrvDrgw3100, // Dragon World 3 (ver. 100) [no comment, NOT WORKING] - &BurnDrvDrgw3105, // Dragon World 3 (ver. 105) [no comment, NOT WORKING] -#endif - &BurnDrvDrgw2x, // Dragon World II (V100X, World) - &BurnDrvDrgw2, // Dragon World II (V110X, World) - &BurnDrvdwpc, // Dragon World Pretty Chance (V101, Japan) - &BurnDrvtg_dragcrse, // Dragon's Curse - &BurnDrvmd_shangh3, // Dragon's Eye Plus - Shanghai III (Jpn) - &BurnDrvmd_dfury, // Dragon's Fury (Euro, USA) - &BurnDrvmd_dlair, // Dragon's Lair (USA, Prototype) - &BurnDrvmd_dragnrev, // Dragon's Revenge (Euro, USA) - &BurnDrvmd_dragnrevj, // Dragon's Revenge (Jpn) - &BurnDrvDrgninjab, // Dragonninja (bootleg set 1) - &BurnDrvDrgninjab2, // Dragonninja (bootleg set 2) - &BurnDrvDrgninja, // Dragonninja (Japan) - &BurnDrvDrakton, // Drakton (DK conversion) - &BurnDrvDrktnjr, // Drakton (DKJr conversion) - &BurnDrvDland, // Dream Land / Super Dream Land (bootleg of Bubble Bobble) - &BurnDrvdremshpr, // Dream Shopper - &BurnDrvDsoccr94j, // Dream Soccer '94 (Japan) - &BurnDrvDriftout, // Drift Out (Europe) - &BurnDrvDriftoutj, // Drift Out (Japan) - &BurnDrvDriveout, // Drive Out - &BurnDrvDrivfrcb, // Driving Force (Galaxian conversion bootleg) - &BurnDrvDrivfrcg, // Driving Force (Galaxian conversion) - &BurnDrvDrivfrcp, // Driving Force (Pac-Man conversion) - &BurnDrvpce_droprock, // Drop Rock Hora Hora - &BurnDrvpce_droprock1, // Drop Rock Hora Hora (Alt) - &BurnDrvtg_dropoff, // Drop.Off - &BurnDrvducki, // Duck Tales (Intro demo) - &BurnDrvmd_dukenk3d, // Duke Nukem 3D (Bra) - &BurnDrvmd_dukenk3da, // Duke Nukem 3D (Pirate) - &BurnDrvDumpmtmt, // Dump Matsumoto (Japan, 8751 317-unknown) - &BurnDrvmd_duneu, // Dune - The Battle for Arrakis (USA) - &BurnDrvmd_dune2, // Dune II - Battle for Arrakis (Euro) - &BurnDrvmd_dune2g, // Dune II - Kampf um den Wustenplaneten (Ger) - &BurnDrvtg_dungexpl, // Dungeon Explorer - &BurnDrvpce_dungexpl, // Dungeon Explorer - &BurnDrvCpsDdsomjr1, // Dungeons & Dragons - shadow over mystara (960206 Japan) - &BurnDrvCpsDdsomr3, // Dungeons & Dragons - shadow over mystara (960208 Euro) - &BurnDrvCpsDdsomr2, // Dungeons & Dragons - shadow over mystara (960209 Euro) - &BurnDrvCpsDdsomur1, // Dungeons & Dragons - shadow over mystara (960209 USA) - &BurnDrvCpsDdsomb, // Dungeons & Dragons - shadow over mystara (960223 Brazil) - &BurnDrvCpsDdsomr1, // Dungeons & Dragons - shadow over mystara (960223 Euro) - &BurnDrvCpsDdsomh, // Dungeons & Dragons - shadow over mystara (960223 Hispanic) - &BurnDrvCpsDdsoma, // Dungeons & Dragons - shadow over mystara (960619 Asia) - &BurnDrvCpsDdsom, // Dungeons & Dragons - shadow over mystara (960619 Euro) - &BurnDrvCpsDdsomj, // Dungeons & Dragons - shadow over mystara (960619 Japan) - &BurnDrvCpsDdsomud, // Dungeons & Dragons - shadow over mystara (960619 USA Phoenix Edition) - &BurnDrvCpsDdsomu, // Dungeons & Dragons - shadow over mystara (960619 USA) - &BurnDrvCpsDdtodar1, // Dungeons & Dragons - tower of doom (940113 Asia) - &BurnDrvCpsDdtodr1, // Dungeons & Dragons - tower of doom (940113 Euro) - &BurnDrvCpsDdtodhr2, // Dungeons & Dragons - tower of doom (940113 Hispanic) - &BurnDrvCpsDdtodjr2, // Dungeons & Dragons - tower of doom (940113 Japan) - &BurnDrvCpsDdtodur1, // Dungeons & Dragons - tower of doom (940113 USA) - &BurnDrvCpsDdtodhr1, // Dungeons & Dragons - tower of doom (940125 Hispanic) - &BurnDrvCpsDdtodjr1, // Dungeons & Dragons - tower of doom (940125 Japan) - &BurnDrvCpsDdtodu, // Dungeons & Dragons - tower of doom (940125 USA) - &BurnDrvCpsDdtoda, // Dungeons & Dragons - tower of doom (940412 Asia) - &BurnDrvCpsDdtodd, // Dungeons & Dragons - tower of doom (940412 Euro Phoenix Edition) - &BurnDrvCpsDdtod, // Dungeons & Dragons - tower of doom (940412 Euro) - &BurnDrvCpsDdtodh, // Dungeons & Dragons - tower of doom (940412 Hispanic) - &BurnDrvCpsDdtodj, // Dungeons & Dragons - tower of doom (940412 Japan) - &BurnDrvmd_ddwares, // Dungeons & Dragons - Warriors of the Eternal Sun (Euro, USA) - &BurnDrvDunkshot, // Dunk Shot (FD1089 317-0022) - &BurnDrvmd_dynabr, // Dyna Brothers (Jpn) - &BurnDrvmd_dynabr2, // Dyna Brothers 2 (Jpn) - &BurnDrvmd_dynabr2sp, // Dyna Brothers 2 - Sega Channel Special (Jpn, Sega Channel) - &BurnDrvDynablst, // Dynablaster / Bomber Man - &BurnDrvDynduke, // Dynamite Duke (Europe set 1) - &BurnDrvDyndukea, // Dynamite Duke (Europe set 2) - &BurnDrvDyndukej, // Dynamite Duke (Japan) - &BurnDrvDyndukeu, // Dynamite Duke (US) - &BurnDrvmd_dynduke1, // Dynamite Duke (World) - &BurnDrvmd_dynduke, // Dynamite Duke (World, Rev. A) - &BurnDrvDduxbl, // Dynamite Dux (bootleg) - &BurnDrvDdux1, // Dynamite Dux (set 1, 8751 317-0095) - &BurnDrvDdux, // Dynamite Dux (set 2, FD1094 317-0096) - &BurnDrvmd_dhead, // Dynamite Headdy (Euro, USA) - &BurnDrvmd_dheadj, // Dynamite Headdy (Jpn) - &BurnDrvmd_dheadjp, // Dynamite Headdy (Jpn, Prototype) - &BurnDrvmd_dheadp3, // Dynamite Headdy (Prototype, 19940614-CABEZA) - &BurnDrvmd_dheadp2, // Dynamite Headdy (Prototype, 19940616) - &BurnDrvmd_dheadp1, // Dynamite Headdy (Prototype, 19940622) - &BurnDrvCpsDynwar, // Dynasty Wars (US set 1) - &BurnDrvCpsDynwara, // Dynasty Wars (US set 2) - &BurnDrvmd_dynoblaz, // Dyno Blaze (Early Prototype) - &BurnDrvEswatbl, // E-Swat - Cyber Police (bootleg) - &BurnDrvEswatj, // E-Swat - Cyber Police (set 1, Japan, FD1094 317-0128) - &BurnDrvEswatu, // E-Swat - Cyber Police (set 2, US, FD1094 317-0129) - &BurnDrvEswat, // E-Swat - Cyber Police (set 3, World, FD1094 317-0130) - &BurnDrvmd_eahockey, // EA Hockey (Euro) - &BurnDrvmd_eahockeyj, // EA Hockey (Jpn) - &BurnDrvmd_easports, // EA Sports Double Header (Euro) - &BurnDrvEagle, // Eagle (set 1) - &BurnDrvEagle2, // Eagle (set 2) - &BurnDrvEagle3, // Eagle (set 3) - &BurnDrvmd_earnest, // Earnest Evans (USA) - &BurnDrvmd_ejim, // Earthworm Jim (Euro) - &BurnDrvmd_ejimu, // Earthworm Jim (USA) - &BurnDrvmd_ejim2, // Earthworm Jim 2 (Euro) - &BurnDrvmd_ejim2u, // Earthworm Jim 2 (USA) - &BurnDrvmd_ecco2, // Ecco - The Tides of Time (Euro) - &BurnDrvmd_ecco2u, // Ecco - The Tides of Time (USA) - &BurnDrvmd_ecco2px11, // Ecco - The Tides of Time (USA, Prototype X11, 19940413) - &BurnDrvmd_ecco2p, // Ecco - The Tides of Time (USA, Prototype) - &BurnDrvmd_ecco2p2, // Ecco - The Tides of Time (USA, Prototype, 19940429) - &BurnDrvmd_ecco2p1, // Ecco - The Tides of Time (USA, Prototype, Alt) - &BurnDrvmd_eccojr, // Ecco Jr. (USA, Oceania, 199502) - &BurnDrvmd_eccojr1, // Ecco Jr. (USA, Oceania, 199503) - &BurnDrvmd_ecco, // Ecco the Dolphin (Euro, USA, Kor) - &BurnDrvmd_eccoj, // Ecco the Dolphin (Jpn) - &BurnDrvmd_ecco2j, // Ecco the Dolphin II (Jpn) - &BurnDrvCpsEcofghtra, // Eco Fighters (931203 Asia) - &BurnDrvCpsEcofghtr, // Eco Fighters (931203 etc) - &BurnDrvCpsEcofghtrh, // Eco Fighters (931203 Hispanic) - &BurnDrvCpsEcofghtru1, // Eco Fighters (931203 USA) - &BurnDrvCpsEcofghtrd, // Eco Fighters (931203 World Phoenix Edition) - &BurnDrvCpsEcofghtru, // Eco Fighters (940215 USA) - &BurnDrvEgghunt, // Egg Hunt - &BurnDrveggor, // Eggor - &BurnDrveggs, // Eggs - &BurnDrv_8bpm, // Eight Ball Action (Pac-Man conversion) - &BurnDrvEightfrc, // Eight Forces - &BurnDrvEightman, // Eight Man (NGM-025)(NGH-025) - &BurnDrvmd_elvientoj, // El Viento (Jpn) - &BurnDrvmd_elviento, // El Viento (USA) - &BurnDrvmd_elemastj, // Elemental Master (Jpn) - &BurnDrvmd_elemast, // Elemental Master (USA) - &BurnDrvmd_elimdown, // Eliminate Down (Jpn) - &BurnDrvmd_elit95, // Elitserien 95 (Swe) - &BurnDrvmd_elit96, // Elitserien 96 (Swe) - &BurnDrvmd_empsteel, // Empire of Steel (Euro) - &BurnDrvEndurobl, // Enduro Racer (bootleg set 1) - &BurnDrvEnduror, // Enduro Racer (YM2151, FD1089B 317-0013A) - &BurnDrvEnduror1, // Enduro Racer (YM2203, FD1089B 317-0013A) - &BurnDrvpce_energy, // Energy - &BurnDrvEnforcej, // Enforce (Japan) - &BurnDrvEnforceja, // Enforce (Japan, Analog Controls) - &BurnDrvEnforce, // Enforce (World) - &BurnDrvmd_tazmars, // Escape from Mars Starring Taz (Euro) - &BurnDrvmd_tazmarsp11, // Escape from Mars Starring Taz (Prototype, 19940309) - &BurnDrvmd_tazmarsp10, // Escape from Mars Starring Taz (Prototype, 19940418) - &BurnDrvmd_tazmarsp09, // Escape from Mars Starring Taz (Prototype, 19940509) - &BurnDrvmd_tazmarsp08, // Escape from Mars Starring Taz (Prototype, 19940518) - &BurnDrvmd_tazmarsp07, // Escape from Mars Starring Taz (Prototype, 19940523) - &BurnDrvmd_tazmarsp06, // Escape from Mars Starring Taz (Prototype, 19940602) - &BurnDrvmd_tazmarsp05, // Escape from Mars Starring Taz (Prototype, 19940607) - &BurnDrvmd_tazmarsp04, // Escape from Mars Starring Taz (Prototype, 19940610) - &BurnDrvmd_tazmarsp03, // Escape from Mars Starring Taz (Prototype, 19940614) - &BurnDrvmd_tazmarsp02, // Escape from Mars Starring Taz (Prototype, 19940618-A) - &BurnDrvmd_tazmarsp01, // Escape from Mars Starring Taz (Prototype, 19940620) - &BurnDrvmd_tazmarsu, // Escape from Mars Starring Taz (USA) - &BurnDrvEsckids, // Escape Kids (Asia, 4 Players) - &BurnDrvEsckidsj, // Escape Kids (Japan, 2 Players) - &BurnDrvEspradejo, // ESP Ra.De. (Japan, ver. 98/04/14) - &BurnDrvEspradej, // ESP Ra.De. (Japan, ver. 98/04/21) - &BurnDrvEsprade, // ESP Ra.De. - A.D.2018 Tokyo (International, ver. 98/04/22) - &BurnDrvEspgal, // Espgaluda (V100, Japan) - &BurnDrvmd_espnbb, // ESPN Baseball Tonight (USA) - &BurnDrvmd_espnhn, // ESPN National Hockey Night (USA) - &BurnDrvmd_espnhnp, // ESPN National Hockey Night (USA, Prototype) - &BurnDrvmd_espnsped, // ESPN Speedworld (USA) - &BurnDrvmd_espnspedp, // ESPN Speedworld (USA, Prototype) - &BurnDrvmd_espnnfl, // ESPN Sunday Night NFL (USA) - &BurnDrvmd_espnnflp, // ESPN Sunday Night NFL (USA, Prototype) - &BurnDrvmd_eswat, // ESWAT - City Under Siege (Euro, USA, Rev. A) - &BurnDrvmd_eternalc, // Eternal Champions (Euro) - &BurnDrvmd_eternalcp, // Eternal Champions (Euro, Prototype) - &BurnDrvmd_eternalcj, // Eternal Champions (Jpn, Kor) - &BurnDrvmd_eternalcjp, // Eternal Champions (Jpn, Prototype, 19931117) - &BurnDrvmd_eternalcu, // Eternal Champions (USA) - &BurnDrvEuroch92, // Euro Champ '92 (World) - &BurnDrvWc90b1, // Euro League (Italian hack of Tecmo World Cup '90) - &BurnDrvmd_eurosens, // Europa Sensen (Jpn) - &BurnDrvmd_euroclub, // European Club Soccer (Euro) - &BurnDrvmd_evander, // Evander Holyfield's 'Real Deal' Boxing (World) - &BurnDrvmd_exmutant, // Ex-Mutants (Euro, USA) - &BurnDrvmd_exranza, // Ex-Ranza (Jpn) - &BurnDrvmd_exranzap, // Ex-Ranza (Jpn, Prototype) - &BurnDrvExcelsr, // Excelsior (set 1) - &BurnDrvExcelsra, // Excelsior (set 2) - &BurnDrvExctleag, // Excite League (FD1094 317-0079) - &BurnDrvExedexes, // Exed Exes - &BurnDrvExerizrb, // Exerizer (Japan) (bootleg) - &BurnDrvmd_exile, // Exile (USA) - &BurnDrvmd_exilej, // Exile - Toki no Hazama e (Jpn) - &BurnDrvmd_exosquad, // Exo Squad (Euro) - &BurnDrvmd_exosquadu, // Exo Squad (USA) - &BurnDrvmd_exosquadup, // Exo Squad (USA, Prototype) - &BurnDrvExodus, // Exodus (bootleg?) - &BurnDrvmd_exodus, // Exodus - Journey to the Promised Land (USA) - &BurnDrvExplorer, // Explorer - &BurnDrvExplbrkr, // Explosive Breaker - &BurnDrvExtrmatj, // Extermination (Japan) - &BurnDrvExtrmatu, // Extermination (US) - &BurnDrvExtrmatn, // Extermination (World) - &BurnDrvExtdwnhl, // Extreme Downhill (v1.5) - &BurnDrveyesb, // Eyes (bootleg set 1) - &BurnDrveyeszac, // Eyes (bootleg set 2, decrypted) - &BurnDrveyes, // Eyes (Digitrex Techstar) - &BurnDrveyes2, // Eyes (Techstar) - &BurnDrvF1dream, // F-1 Dream - &BurnDrvpce_f1dream, // F-1 Dream - &BurnDrvF1dreamb, // F-1 Dream (bootleg) - &BurnDrvF1gp, // F-1 Grand Prix -#if defined FBA_DEBUG - &BurnDrvF1gpb, // F-1 Grand Prix (Playmark bootleg) [no comment, NOT WORKING] -#endif - &BurnDrvF1gp2, // F-1 Grand Prix Part II - &BurnDrvpce_f1pilot, // F-1 Pilot - You're King of Kings - &BurnDrvmd_f117, // F-117 Night Storm (Euro, USA) - &BurnDrvmd_f117j, // F-117 Stealth - Operation Night Storm (Jpn) - &BurnDrvmd_f15se2, // F-15 Strike Eagle II (Euro) - &BurnDrvmd_f15se2u, // F-15 Strike Eagle II (USA) - &BurnDrvmd_f15se2up, // F-15 Strike Eagle II (USA, Prototype) - &BurnDrvmd_f22a, // F-22 Interceptor (Euro, USA, 199109) - &BurnDrvmd_f22, // F-22 Interceptor (Euro, USA, 199206) - &BurnDrvmd_f22p, // F-22 Interceptor (Euro, USA, Prototype) - &BurnDrvmd_f22j, // F-22 Interceptor (Jpn) - &BurnDrvFxa, // F-X (alternate set) - &BurnDrvFx, // F-X - &BurnDrvmd_f1, // F1 (Euro) - &BurnDrvmd_f1wc, // F1 - World Championship Edition (Euro) - &BurnDrvmd_f1wcp, // F1 - World Championship Edition (Euro, Prototype) - &BurnDrvpce_f1circus, // F1 Circus - &BurnDrvpce_f1circ91, // F1 Circus '91 - World Championship - &BurnDrvpce_f1circ92, // F1 Circus '92 - The Speed of Sound - &BurnDrvpce_f1circus1, // F1 Circus (Alt) - &BurnDrvmd_f1circus, // F1 Circus MD (Jpn) - &BurnDrvpce_f1tb, // F1 Triple Battle - &BurnDrvtg_falcon, // Falcon - &BurnDrvmd_famfeud, // Family Feud (USA) - &BurnDrvFancywld, // Fancy World - Earth of Crisis - &BurnDrvFantasiaa, // Fantasia (940307 PCB) - &BurnDrvFantasia, // Fantasia (940429 PCB) - &BurnDrvmd_fantasia1, // Fantasia (World) - &BurnDrvmd_fantasia, // Fantasia (World, Rev. A) - &BurnDrvFantsia2, // Fantasia II (Explicit) - &BurnDrvFantsia2a, // Fantasia II (Less Explicit) - &BurnDrvFantastc, // Fantastic (Galaga conversion on Galaxian hardware) - &BurnDrvmd_fantdizz, // Fantastic Dizzy (Euro, USA) - &BurnDrvmd_fantdizz1, // Fantastic Dizzy (Euro, USA, Alt) - &BurnDrvFantsy95, // Fantasy '95 - &BurnDrvtg_fantzone, // Fantasy Zone - &BurnDrvpce_fantzone, // Fantasy Zone - &BurnDrvFantzonep, // Fantasy Zone (317-5000) - &BurnDrvFantzone, // Fantasy Zone (Rev A, unprotected) - &BurnDrvFantzone1, // Fantasy Zone (unprotected) - &BurnDrvFantzn2x, // Fantasy Zone II - The Tears of Opa-Opa (System 16C) - &BurnDrvFantzn2xp, // Fantasy Zone II - The Tears of Opa-Opa (System 16C, prototype) - &BurnDrvFantzn2xps2, // Fantasy Zone II - The Tears of Opa-Opa (System 16C, PS2 data file) - &BurnDrvFantznta, // Fantasy Zone Time Attack (System 16B, PS2 data file) - &BurnDrvFantazia, // Fantazia (bootleg?) - &BurnDrvkabukikl, // Far East of Eden - Kabuki Klash / Tengai Makyou - Shin Den - &BurnDrvFarmer, // Farmers Rebellion - &BurnDrvmd_fastest1, // Fastest 1 (Jpn) - &BurnDrvmd_fatfury, // Fatal Fury (Euro, Kor) - &BurnDrvmd_fatfuryu, // Fatal Fury (USA) - &BurnDrvFatFury1, // Fatal Fury - King of Fighters / Garou Densetsu - shukumei no tatakai (NGM-033)(NGH-033) - &BurnDrvmd_fatfury2, // Fatal Fury 2 (USA, Kor) - &BurnDrvFatfury2, // Fatal Fury 2 / Garou Densetsu 2 - arata-naru tatakai (NGM-047)(NGH-047) - &BurnDrvFatfury3, // Fatal Fury 3 - Road to the Final Victory / Garou Densetsu 3 - haruka-naru tatakai (NGM-069)(NGH-069) - &BurnDrvFatfursp, // Fatal Fury Special / Garou Densetsu Special (set 1)(NGM-058)(NGH-058) - &BurnDrvFatfurspa, // Fatal Fury Special / Garou Densetsu Special (set 2)(NGM-058)(NGH-058) - &BurnDrvmd_fatallab, // Fatal Labyrinth (Euro, USA) - &BurnDrvmd_fatalrew, // Fatal Rewind (Euro, USA) - &BurnDrvmd_fatman, // Fatman (Jpn) - &BurnDrvmd_fengkuan, // Feng Kuang Tao Hua Yuan (Chi) - &BurnDrvmd_fengshen, // Feng Shen Ying Jie Chuan (Chi) - &BurnDrvmd_fengshena, // Feng Shen Ying Jie Zhuan (Chi, Alt?) - &BurnDrvmd_ferias, // Ferias Frustradas do Pica-Pau (Bra) - &BurnDrvmd_ferrari, // Ferrari Grand Prix Challenge (Euro, Rev. A) - &BurnDrvmd_ferrarip, // Ferrari Grand Prix Challenge (Prototype) - &BurnDrvmd_ferrariu, // Ferrari Grand Prix Challenge (USA) - &BurnDrvmd_feverpit, // Fever Pitch Soccer (Euro) - &BurnDrvFeverSOS, // Fever SOS (International, ver. 98/09/25) - &BurnDrvmd_fidodido, // Fido Dido (USA, Prototype) - &BurnDrvmd_fifa2k3, // FIFA 2003 (Rus) - &BurnDrvmd_fifa97, // FIFA 97 Gold Edition (Euro, USA) - &BurnDrvmd_fifa98, // FIFA 98 - Road to World Cup (Euro) - &BurnDrvmd_fifa, // FIFA International Soccer (Euro, USA) - &BurnDrvmd_fifa2k, // FIFA Soccer 2000 Gold Edition (Pirate) - &BurnDrvmd_fifa95, // FIFA Soccer 95 (Euro, USA) - &BurnDrvmd_fifa95k, // FIFA Soccer 95 (Kor) - &BurnDrvmd_fifa96, // FIFA Soccer 96 (Euro, USA) - &BurnDrvmd_fifa99, // FIFA Soccer 99 (Pirate) - &BurnDrvmd_fifa2k10, // FIFA World Cup - South Africa 2010 (Rus) - &BurnDrvmd_fifa2k2, // FIFA World Cup 2002 (Rus) - &BurnDrvfightfev, // Fight Fever (set 1) - &BurnDrvfightfeva, // Fight Fever (set 2) - &BurnDrvfswords, // Fighters Swords (Korean release of Samurai Shodown III) - &BurnDrvFghtbskt, // Fighting Basketball - &BurnDrvFfantasy, // Fighting Fantasy (Japan revision 2) - &BurnDrvFfantasya, // Fighting Fantasy (Japan) - &BurnDrvmd_fightmasj, // Fighting Masters (Jpn, Kor) - &BurnDrvmd_fightmas, // Fighting Masters (USA) - &BurnDrvpce_fightrun, // Fighting Run - &BurnDrvpce_finlblst, // Final Blaster - &BurnDrvFinalbj, // Final Blow (Japan) - &BurnDrvmd_finalb, // Final Blow (Jpn) - &BurnDrvFinalbu, // Final Blow (US) - &BurnDrvFinalb, // Final Blow (World) - &BurnDrvCpsFcrash, // Final Crash (bootleg (with 2xYM2203 + 2xMSM5205)) - &BurnDrvCpsFfightj1, // Final Fight (900112 Japan) - &BurnDrvCpsFfightua, // Final Fight (900112 USA) - &BurnDrvCpsFfightj2, // Final Fight (900305 Japan) - &BurnDrvCpsFfightub, // Final Fight (900613 USA) - &BurnDrvCpsFfightbl, // Final Fight (bootleg, World) - &BurnDrvCpsFfightj, // Final Fight (Japan) - &BurnDrvCpsFfightu, // Final Fight (USA, set 1) - &BurnDrvCpsFfightu1, // Final Fight (USA, set 2) - &BurnDrvCpsFfight, // Final Fight (World, set 1) - &BurnDrvCpsFfighta, // Final Fight (World, set 2) - &BurnDrvtg_finallap, // Final Lap Twin - &BurnDrvpce_finallap, // Final Lap Twin - &BurnDrvpce_finalmt, // Final Match Tennis - &BurnDrvpce_finalsol, // Final Soldier - &BurnDrvpce_finalsols, // Final Soldier (Special Version) - &BurnDrvFstarfrcj, // Final Star Force (Japan) - &BurnDrvFstarfrc, // Final Star Force (US) - &BurnDrvFinalttr, // Final Tetris - &BurnDrvmd_fzone, // Final Zone (USA) ~ FZ Senki Axis (Jpn) - &BurnDrvmd_nemo, // Finding Nemo (Rus) - &BurnDrvFirehawk, // Fire Hawk - &BurnDrvmd_firemust, // Fire Mustang (Jpn) - &BurnDrvpce_fireprow, // Fire Pro Wrestling - Combination Tag - &BurnDrvpce_fireprw2, // Fire Pro Wrestling 2 - 2nd Bout - &BurnDrvpce_fireprw3, // Fire Pro Wrestling 3 - Legend Bout - &BurnDrvmd_fireshrk, // Fire Shark (Euro) - &BurnDrvFireshrkd, // Fire Shark (Korea, set 1, easier) - &BurnDrvFireshrkdh, // Fire Shark (Korea, set 2, harder) - &BurnDrvmd_fireshrku, // Fire Shark (USA) - &BurnDrvmd_fireshrku1, // Fire Shark (USA, Alt) - &BurnDrvFireshrk, // Fire Shark - &BurnDrvFixeight, // FixEight (Europe) - &BurnDrvFixeightt, // FixEight (Europe, Taito license) - &BurnDrvFixeighth, // FixEight (Hong Kong) - &BurnDrvFixeightht, // FixEight (Hong Kong, Taito license) - &BurnDrvFixeightj, // FixEight (Japan) - &BurnDrvFixeightjt, // FixEight (Japan, Taito license) - &BurnDrvFixeightk, // FixEight (Korea) - &BurnDrvFixeightkt, // FixEight (Korea, Taito license) - &BurnDrvFixeighta, // FixEight (Southeast Asia) - &BurnDrvFixeightat, // FixEight (Southeast Asia, Taito license) - &BurnDrvFixeighttw, // FixEight (Taiwan) - &BurnDrvFixeighttwt, // FixEight (Taiwan, Taito license) - &BurnDrvFixeightu, // FixEight (USA) - &BurnDrvFixeightut, // FixEight (USA, Taito license) - &BurnDrvFpointbj, // Flash Point (Japan, bootleg) - &BurnDrvmd_flashp, // Flash Point (Jpn, Prototype) - &BurnDrvFpoint1, // Flash Point (set 1, Japan, FD1094 317-0127A) - &BurnDrvFpoint, // Flash Point (set 2, Japan, FD1094 317-0127A) - &BurnDrvFpointbl, // Flash Point (World, bootleg) - &BurnDrvmd_flashb, // Flashback (Euro, Rev. A) - &BurnDrvmd_flashbj, // Flashback (Jpn) - &BurnDrvmd_flashbu, // Flashback - The Quest for Identity (USA) - &BurnDrvmd_flashbu1, // Flashback - The Quest for Identity (USA, Alt) - &BurnDrvFlashgal, // Flashgal (set 1) - &BurnDrvFlashgala, // Flashgal (set 2) - &BurnDrvFlicky, // Flicky (128k Version, System 2, 315-5051) - &BurnDrvFlickyg, // Flicky (128k Version, System 2, 315-5051, alt graphics) - &BurnDrvFlickys2, // Flicky (128k Version, System 2, not encrypted) - &BurnDrvFlickys2g, // Flicky (128k Version, System 2, not encrypted, alt graphics) - &BurnDrvFlickyo, // Flicky (64k Version, System 1, 315-5051, set 1) - &BurnDrvFlickys1, // Flicky (64k Version, System 1, 315-5051, set 2) - &BurnDrvmd_flicky, // Flicky (Euro, USA) - &BurnDrvmd_flink, // Flink (Euro) - &BurnDrvmd_flux, // Flux (Euro) - &BurnDrvFootchmp, // Football Champ (World) - &BurnDrvFbfrenzy, // Football Frenzy (NGM-034)(NGH-034) - &BurnDrvmd_foreman, // Foreman for Real (World) - &BurnDrvCpsForgottnua, // Forgotten Worlds (US, B-Board 88618B-2, rev A) - &BurnDrvCpsForgottnuaa, // Forgotten Worlds (US, B-Board 88618B-2, rev AA) - &BurnDrvCpsForgottnu1, // Forgotten Worlds (US, B-Board 88618B-2, Rev C) - &BurnDrvCpsForgottnu, // Forgotten Worlds (US, B-Board 88621B-2, rev C) - &BurnDrvCpsForgottn, // Forgotten Worlds (World) - &BurnDrvmd_forgottn1, // Forgotten Worlds (World) - &BurnDrvmd_forgottn, // Forgotten Worlds (World, v1.1) - &BurnDrvpce_fsoccr90, // Formation Soccer - Human Cup '90 - &BurnDrvpce_fsoccer, // Formation Soccer - On J. League - &BurnDrvmd_formula1, // Formula One (USA) - &BurnDrvmd_fastfur5, // Forsazh 5 Bystraya ~ Fast and the Furious 5 Quick (Rus) - &BurnDrvmd_bighurt, // Frank Thomas Big Hurt Baseball (Euro, USA) - &BurnDrvfreeze, // Freeze - &BurnDrvFrogf, // Frog (Falcon bootleg) - &BurnDrvFrogg, // Frog (Galaxian hardware) - &BurnDrvFroggers, // Frog - &BurnDrvCpsCps1frog, // Frog Feast (CPS-1) - &BurnDrvngfrog, // Frog Feast (Neo Geo) - &BurnDrvPgmfrog, // Frog Feast (PGM) - &BurnDrvFrogger, // Frogger - &BurnDrvFroggermc, // Frogger (Moon Cresta hardware) - &BurnDrvFroggrs, // Frogger (Scramble hardware) - &BurnDrvFroggers1, // Frogger (Sega set 1) - &BurnDrvFroggers2, // Frogger (Sega set 2) - &BurnDrvmd_frogger, // Frogger (USA) - &BurnDrvmd_slamdunk, // From TV Animation Slam Dunk - Kyougou Makkou Taiketsu! (Jpn) - &BurnDrvFullthrl, // Full Throttle (Japan) - &BurnDrvmd_funngame, // Fun 'N Games (Euro) - &BurnDrvmd_funngameu, // Fun 'N' Games (USA) - &BurnDrvmd_funcar, // Fun Car Rally (USA, Prototype) - &BurnDrvfunkybee, // Funky Bee - &BurnDrvfunkbeeb, // Funky Bee (bootleg, harder) - &BurnDrvfnkyfish, // Funky Fish - &BurnDrvFunkyjetj, // Funky Jet (Japan) - &BurnDrvFunkyjet, // Funky Jet (World) - &BurnDrvFunybubl, // Funny Bubble - &BurnDrvFunybubc, // Funny Bubble (Comad version) - &BurnDrvmd_funnywld, // Funny World & Balloon Boy (USA) - &BurnDrvmd_nadia, // Fushigi no Umi no Nadia (Jpn) - &BurnDrvpce_alice, // Fushigi no Yume no Alice - &BurnDrvmd_futbol, // Futbol Argentino 98 - Pasion de Multitudes (Pirate) - &BurnDrvGloc, // G-LOC Air Battle (US) - &BurnDrvmd_gloc, // G-LOC Air Battle (World) - &BurnDrvmd_glocp, // G-LOC Air Battle (World, Prototype) - &BurnDrvGlocr360, // G-LOC R360 - &BurnDrvmd_gadget, // Gadget Twins (USA) - &BurnDrvpce_gaiflame, // Gai Flame - &BurnDrvGaia, // Gaia Crusaders - &BurnDrvpce_gaiamons, // Gaia no Monshou - &BurnDrvmd_gaiares, // Gaiares (Jpn, USA) - &BurnDrvmd_gground, // Gain Ground (World) - &BurnDrvmd_gground1, // Gain Ground (World, Alt) - &BurnDrvpce_galaga88, // Galaga '88 - &BurnDrvtg_galaga90, // Galaga '90 - &BurnDrvGalagamf, // Galaga (Midway set 1 with fast shoot hack) - &BurnDrvGalagamw, // Galaga (Midway set 1) - &BurnDrvGalagamk, // Galaga (Midway set 2) - &BurnDrvGalaga, // Galaga (Namco rev. B) - &BurnDrvGalagao, // Galaga (Namco) - &BurnDrvneogalag, // Galaga Demo (set 1) - &BurnDrvneogalaga, // Galaga Demo (set 2) - &BurnDrvmd_galahad, // Galahad (Euro, USA) - &BurnDrvGalaxbsf, // Galaxian (bootleg, set 1) - &BurnDrvGalaxianbl, // Galaxian (bootleg, set 2) - &BurnDrvGalaxianm, // Galaxian (Midway set 1) - &BurnDrvGalaxianmo, // Galaxian (Midway set 2) - &BurnDrvGalaxian, // Galaxian (Namco set 1) - &BurnDrvGalaxiana, // Galaxian (Namco set 2) - &BurnDrvGalaxrf, // Galaxian (Recreativos Franco S.A. Spanish bootleg) - &BurnDrvGalaxiant, // Galaxian (Taito) - &BurnDrvGalap4, // Galaxian Part 4 (hack) - &BurnDrvGalapx, // Galaxian Part X (moonaln hack) - &BurnDrvTstgalx, // Galaxian Test ROM - &BurnDrvGalturbo, // Galaxian Turbo (superg hack) - &BurnDrvGalemp, // Galaxy Empire (bootleg?) - &BurnDrvgalaxyfg, // Galaxy Fight - Universal Warriors - &BurnDrvGforce2, // Galaxy Force 2 - &BurnDrvGforce2j, // Galaxy Force 2 (Japan) - &BurnDrvGforce2ja, // Galaxy Force 2 (Japan, Rev A) - &BurnDrvmd_gforce2a, // Galaxy Force II (World) - &BurnDrvmd_gforce2, // Galaxy Force II (World, Rev. B) - &BurnDrvGallag, // Gallag - &BurnDrvGallop, // Gallop - Armed police Unit (Japan) - &BurnDrvGalmedes, // Galmedes (Japan) - &BurnDrvGalhustl, // Gals Hustler - &BurnDrvGalpanic, // Gals Panic (Unprotected) - &BurnDrvGalspnbl, // Gals Pinball - &BurnDrvmd_gambler, // Gambler Jikochuushinha - Katayama Masayuki no Mahjong Doujou (Jpn) - &BurnDrvmd_ggenie1, // Game Genie (Euro, USA) - &BurnDrvmd_ggenie, // Game Genie (Euro, USA, Rev. A) - &BurnDrvmd_gamenko, // Game no Kandume Otokuyou (Jpn) - &BurnDrvmd_gameto, // Game Toshokan (Jpn, Rev. A) - &BurnDrvGinkun, // Ganbare Ginkun - &BurnDrvpce_ganbgolf, // Ganbare! Golf Boys - &BurnDrvGangonta, // Ganbare! Gonta!! 2 / Party Time: Gonta the Diver II (Japan Release) - &BurnDrvCpsGanbare, // Ganbare! Marine Kun (Marine 2K0411 JPN) - &BurnDrvGbusters, // Gang Busters (set 1) - &BurnDrvGbustera, // Gang Busters (set 2) - &BurnDrvganryu, // Ganryu / Musashi Ganryuki - &BurnDrvGardia, // Gardia (317-0006) -#if defined FBA_DEBUG - &BurnDrvGardiab, // Gardia (317-0007?, bootleg) [no comment, NOT WORKING] -#endif - &BurnDrvmd_garfield, // Garfield - Caught in the Act (Euro, USA) - &BurnDrvmd_gargoyle, // Gargoyles (USA) - &BurnDrvGarogun, // Garogun Seroyang (Korea) - &BurnDrvgaroubl, // Garou - Mark of the Wolves (bootleg) - &BurnDrvGarou, // Garou - Mark of the Wolves (NGM-2530) - &BurnDrvgarouh, // Garou - Mark of the Wolves (NGM-2530) (NGH-2530) - &BurnDrvGaroup, // Garou - Mark of the Wolves (prototype) - &BurnDrvmd_garou, // Garou Densetsu - Shukumei no Tatakai (Jpn) - &BurnDrvmd_garou2, // Garou Densetsu 2 - Aratanaru Tatakai (Jpn) - &BurnDrvmd_sbtank, // Garry Kitchen's Super Battletank - War in the Gulf (USA) - &BurnDrvGaruka, // Garuka (Japan ver. W) - &BurnDrvGaryoret, // Garyo Retsuden (Japan) - &BurnDrvGatedom1, // Gate of Doom (US revision 1) - &BurnDrvGatedoom, // Gate of Doom (US revision 4) - &BurnDrvGauntlet2pg1, // Gauntlet (2 Players, German, rev 1) - &BurnDrvGauntlet2pg, // Gauntlet (2 Players, German, rev 4) - &BurnDrvGauntlet2pj2, // Gauntlet (2 Players, Japanese rev 2) - &BurnDrvGauntlet2pj, // Gauntlet (2 Players, Japanese, rev 5) - &BurnDrvGauntlet2pr3, // Gauntlet (2 Players, rev 3) - &BurnDrvGauntlet2p, // Gauntlet (2 Players, rev 6) - &BurnDrvGauntletg, // Gauntlet (German, rev 10) - &BurnDrvGauntletgr3, // Gauntlet (German, rev 3) - &BurnDrvGauntletgr6, // Gauntlet (German, rev 6) - &BurnDrvGauntletgr8, // Gauntlet (German, rev 8) - &BurnDrvGauntletj12, // Gauntlet (Japanese, rev 12) - &BurnDrvGauntletj, // Gauntlet (Japanese, rev 13) - &BurnDrvmd_gauntlt4j, // Gauntlet (Jpn) - &BurnDrvGauntletr1, // Gauntlet (rev 1) - &BurnDrvGauntlet, // Gauntlet (rev 14) - &BurnDrvGauntletr2, // Gauntlet (rev 2) - &BurnDrvGauntletr4, // Gauntlet (rev 4) - &BurnDrvGauntletr5, // Gauntlet (rev 5) - &BurnDrvGauntletr7, // Gauntlet (rev 7) - &BurnDrvGauntletr9, // Gauntlet (rev 9) - &BurnDrvGauntlets, // Gauntlet (Spanish, rev 15) - &BurnDrvGaunt2, // Gauntlet II - &BurnDrvGaunt22pg, // Gauntlet II (2 Players, German) - &BurnDrvGaunt22p1, // Gauntlet II (2 Players, rev 1) - &BurnDrvGaunt22p, // Gauntlet II (2 Players, rev 2) - &BurnDrvGaunt2g, // Gauntlet II (German) - &BurnDrvmd_gauntlt4a, // Gauntlet IV (Euro, USA, 199308) - &BurnDrvmd_gauntlt4, // Gauntlet IV (Euro, USA, 199309) - &BurnDrvpce_gekisboy, // Gekisha Boy - &BurnDrvmd_gemfire, // Gemfire (USA) - &BurnDrvGemini, // Gemini Wing - &BurnDrvmd_gems, // GEMS v2.8 - &BurnDrvmd_genchaos, // General Chaos (Euro, USA) - &BurnDrvmd_genchaosj, // General Chaos Daikonsen (Jpn) - &BurnDrvmd_genelost, // Generations Lost (Euro, USA) - &BurnDrvmd_genghis2, // Genghis Khan II - Clan of the Gray Wolf (USA) - &BurnDrvGenix, // Genix Family - &BurnDrvpce_genjitsu, // Genji Tsuushin Agedama - &BurnDrvpce_genpei, // Genpei Toumaden - &BurnDrvpce_genpemak, // Genpei Toumaden ni no Maki - &BurnDrvGensitou, // Genshi-Tou 1930's (Japan) - &BurnDrvmd_georgeko, // George Foreman's KO Boxing (Euro) - &BurnDrvmd_georgekou, // George Foreman's KO Boxing (USA) - &BurnDrvGeostorm, // Geostorm (Japan) - &BurnDrvGetStarb1, // Get Star (bootleg, set 1) - &BurnDrvGetStarb2, // Get Star (bootleg, set 2) - &BurnDrvGetStarj, // Get Star (Japan) - &BurnDrvghostbi, // Ghost Busters (Intro demo) - &BurnDrvtg_ghostman, // Ghost Manor - &BurnDrvGhostmun, // Ghost Muncher - &BurnDrvGpilotsh, // Ghost Pilots (NGH-020)(US) - &BurnDrvGpilots, // Ghost Pilots (NGM-020)(NGH-020) - &BurnDrvmd_ghostbst1, // Ghostbusters (World) - &BurnDrvmd_ghostbst, // Ghostbusters (World, v1.1) - &BurnDrvghostlop, // Ghostlop (prototype) - &BurnDrvGmgalax, // Ghostmuncher Galaxian (bootleg) - &BurnDrvGngbl, // Ghosts'n Goblins (bootleg with Cross) - &BurnDrvGngbla, // Ghosts'n Goblins (bootleg, harder) - &BurnDrvGngblita, // Ghosts'n Goblins (Italian bootleg, harder) - &BurnDrvGngprot, // Ghosts'n Goblins (prototype) - &BurnDrvGngt, // Ghosts'n Goblins (US) - &BurnDrvGngc, // Ghosts'n Goblins (World Revision C) - &BurnDrvGng, // Ghosts'n Goblins (World? set 1) - &BurnDrvGnga, // Ghosts'n Goblins (World? set 2) - &BurnDrvmd_ghouls1, // Ghouls'n Ghosts (Euro, USA) - &BurnDrvmd_ghouls, // Ghouls'n Ghosts (Euro, USA, Kor, Rev. A) - &BurnDrvCpsGhoulsu, // Ghouls'n Ghosts (US) - &BurnDrvCpsGhouls, // Ghouls'n Ghosts (World) - &BurnDrvGhoxj, // Ghox (joystick) - &BurnDrvGhox, // Ghox (spinner) - &BurnDrvCpsGigawinga, // Giga Wing (990222 Asia) - &BurnDrvCpsGigawingb, // Giga Wing (990222 Brazil) - &BurnDrvCpsGigawingh, // Giga Wing (990222 Hispanic) - &BurnDrvCpsGigawingd, // Giga Wing (990222 USA Phoenix Edition) - &BurnDrvCpsGigawing, // Giga Wing (990222 USA) - &BurnDrvCpsGigawingjd, // Giga Wing (990223 Japan Phoenix Edition) - &BurnDrvCpsGigawingj, // Giga Wing (990223 Japan) - &BurnDrvCpsGigaman2, // Gigaman 2: The Power Fighters (bootleg) - &BurnDrvGigandes, // Gigandes - &BurnDrvGigandesa, // Gigandes (earlier) - &BurnDrvGinganin, // Ginga NinkyouDen (set 1) - &BurnDrvGinganina, // Ginga NinkyouDen (set 2) - &BurnDrvGteikoku, // Gingateikoku No Gyakushu - &BurnDrvGteikokb, // Gingateikoku No Gyakushu (bootleg set 1) - &BurnDrvGteikob2, // Gingateikoku No Gyakushu (bootleg set 2) - &BurnDrvmd_gleylanc, // GleyLancer (Jpn) - &BurnDrvgoalx3, // Goal! Goal! Goal! - &BurnDrvmd_gods, // Gods (Euro) - &BurnDrvmd_godsj, // Gods (Jpn) - &BurnDrvmd_godsu, // Gods (USA) - &BurnDrvmd_godsup, // Gods (USA, Prototype) - &BurnDrvpce_chukatai, // Gokuraku! Chuka Taisen - &BurnDrvmd_golden10, // Golden 10 in 1 (Incomplete Dump) - &BurnDrvGoldnaxe1, // Golden Axe (set 1, World, FD1094 317-0110) - &BurnDrvGoldnaxe2, // Golden Axe (set 2, US, 8751 317-0112) - &BurnDrvGoldnaxe3, // Golden Axe (set 3, World, FD1094 317-0120) - &BurnDrvGoldnaxej, // Golden Axe (set 4, Japan, FD1094 317-0121) - &BurnDrvGoldnaxeu, // Golden Axe (set 5, US, FD1094 317-0122) - &BurnDrvGoldnaxe, // Golden Axe (set 6, US, 8751 317-123A) - &BurnDrvmd_goldnaxe1, // Golden Axe (World) - &BurnDrvmd_goldnaxe, // Golden Axe (World, v1.1) - &BurnDrvmd_goldnax2, // Golden Axe II (World) - &BurnDrvmd_goldnax2p, // Golden Axe II (World, Prototype) - &BurnDrvmd_goldnax3, // Golden Axe III (Jpn) - &BurnDrvpce_gomola, // Gomola Speed - &BurnDrvImsorryj, // Gonbee no I'm Sorry (315-5110, Japan) -#if defined FBA_DEBUG - &BurnDrvGondo, // Gondomania (US) [Broken inputs, NOT WORKING] -#endif - &BurnDrvmd_goofy, // Goofy's Hysterical History Tour (USA) - &BurnDrvgorkans, // Gorkans - &BurnDrvGotcha, // Got-cha Mini Game Festival - &BurnDrvPlegends, // Gouketsuji Gaiden Legends (USA, ver. 95/06/20) - &BurnDrvPlegendsj, // Gouketsuji Gaiden Saikyou Densetsu (Japan, ver. 95/06/20) - &BurnDrvPowerinj, // Gouketsuji Ichizoku (Japan) - &BurnDrvmd_gouketsu, // Gouketsuji Ichizoku (Jpn) - &BurnDrvPwrinst2j, // Gouketsuji Ichizoku 2 (Japan, ver. 94/04/08) - &BurnDrvGpriderj, // GP Rider (Japan, FD1094 317-0161) - &BurnDrvGprideru, // GP Rider (US, FD1094 317-0162) - &BurnDrvGprider, // GP Rider (World, FD1094 317-0163) - &BurnDrvpce_gradius, // Gradius - &BurnDrvGradius2, // Gradius II - GOFER no Yabou (Japan New ver.) - &BurnDrvGradius2a, // Gradius II - GOFER no Yabou (Japan Old ver.) - &BurnDrvGradius2b, // Gradius II - GOFER no Yabou (Japan Older ver.) - &BurnDrvGrdius3a, // Gradius III (Asia) - &BurnDrvGradius3j, // Gradius III (Japan) - &BurnDrvGrdius3, // Gradius III (World) - &BurnDrvmd_gt5, // Gran Turismo 5 (Rus) - &BurnDrvmd_granada1, // Granada (Jpn, USA) - &BurnDrvmd_granada, // Granada (Jpn, USA, v1.1) - &BurnDrvmd_grandslj, // GrandSlam - The Tennis Tournament '92 (Jpn) - &BurnDrvmd_grandsl, // GrandSlam - The Tennis Tournament (Euro) - &BurnDrvGtmr2u, // Great 1000 Miles Rally 2 USA (95/05/18) - &BurnDrvGtmre, // Great 1000 Miles Rally: Evolution Model!!! (94/09/06) - &BurnDrvGtmrusa, // Great 1000 Miles Rally: U.S.A Version! (94/09/06) - &BurnDrvmd_greatcirj, // Great Circus Mystery - Mickey to Minnie Magical Adventure 2 (Jpn) - &BurnDrvCpsGreatMahouDaiJ, // Great Mahou Daisakusen (000121 Japan) - &BurnDrvmd_ghw, // Greatest Heavyweights (Euro) - &BurnDrvmd_ghwj, // Greatest Heavyweights (Jpn) - &BurnDrvmd_ghwu, // Greatest Heavyweights (USA) - &BurnDrvGberet, // Green Beret - &BurnDrvGberetb, // Green Beret (bootleg) - &BurnDrvmd_greendog, // Greendog - The Beached Surfer Dude! (Euro, USA) - &BurnDrvGrindStormer, // Grind Stormer - &BurnDrvGrindStormerA, // Grind Stormer (older set) - &BurnDrvmd_grindst, // Grind Stormer (USA) - &BurnDrvGrowlu, // Growl (US) - &BurnDrvmd_growl, // Growl (USA) - &BurnDrvGrowl, // Growl (World) - &BurnDrvGryzor, // Gryzor (Set 1) - &BurnDrvGryzor1, // Gryzor (Set 2) - &BurnDrvGetStar, // Guardian - &BurnDrvGrdnstrmg, // Guardian Storm (Germany) - &BurnDrvGrdnstrm, // Guardian Storm (horizontal, not encrypted) - &BurnDrvGrdnstrmv, // Guardian Storm (vertical) - &BurnDrvGrdians, // Guardians\0Denjin Makai II - &BurnDrvGumbo, // Gumbo - &BurnDrvGunfront, // Gun & Frontier (World) - &BurnDrvGunball, // Gun Ball (Japan) - &BurnDrvGunfrontj, // Gun Frontier (Japan) - &BurnDrvGunhohki, // Gun Hohki (Japan) - &BurnDrvGunsmokj, // Gun. Smoke (Japan) - &BurnDrvGunsmoku, // Gun. Smoke (US set 1) - &BurnDrvGunsmoka, // Gun. Smoke (US set 2) - &BurnDrvGunsmoke, // Gun. Smoke (World) - &BurnDrvGnbarich, // Gunbarich - &BurnDrvGunbirdj, // Gunbird (Japan) - &BurnDrvGunbirdk, // Gunbird (Korea) - &BurnDrvGunbird, // Gunbird (World) - &BurnDrvGunbird2, // Gunbird 2 - &BurnDrvtg_gunboat, // Gunboat - &BurnDrvGundhara, // Gundhara - &BurnDrvGunforcej, // Gunforce - Battle Fire Engulfed Terror Island (Japan) - &BurnDrvGunforceu, // Gunforce - Battle Fire Engulfed Terror Island (US) - &BurnDrvGunforce, // Gunforce - Battle Fire Engulfed Terror Island (World) - &BurnDrvGunforc2, // Gunforce 2 (US) - &BurnDrvpce_gunhed, // GunHed - &BurnDrvpce_gunhedht, // GunHed - Hudson GunHed Taikai - &BurnDrvGunnail, // GunNail (28th May. 1992) - &BurnDrvmd_gunship, // Gunship (Euro) - &BurnDrvmd_gunstar, // Gunstar Heroes (Euro) - &BurnDrvmd_gunstarj, // Gunstar Heroes (Jpn) - &BurnDrvmd_gunstarjs, // Gunstar Heroes (Jpn, Sample) - &BurnDrvmd_gunstaru, // Gunstar Heroes (USA) - &BurnDrvgururin, // Gururin - &BurnDrvGussun, // Gussun Oyoyo (Japan) - &BurnDrvGuwange, // Guwange (Japan, Master Ver. 99/06/24) - &BurnDrvGuwanges, // Guwange (Japan, Special Ver. 00/01/01) - &BurnDrvmd_gynoug, // Gynoug (Euro) - &BurnDrvmd_gynougj, // Gynoug (Jpn) - &BurnDrvGyrodine, // Gyrodine - &BurnDrvGyrodinet, // Gyrodine (Taito Corporation license) - &BurnDrvGyrussb, // Gyruss (bootleg) - &BurnDrvGyrussce, // Gyruss (Centuri) - &BurnDrvGyruss, // Gyruss (Konami) - &BurnDrvHachamf, // Hacha Mecha Fighter (19th Sep. 1991) - &BurnDrvHharryu, // Hammerin' Harry (US) - &BurnDrvHharry, // Hammerin' Harry (World) - &BurnDrvpce_hanataka, // Hana Taaka Daka!? - &BurnDrvHangon1, // Hang-On - &BurnDrvHangon, // Hang-On (rev A) - &BurnDrvHangon2, // Hang-On (ride-on) - &BurnDrvhangly, // Hangly-Man (set 1) - &BurnDrvhangly2, // Hangly-Man (set 2) - &BurnDrvhangly3, // Hangly-Man (set 3) - &BurnDrvpce_haniisky, // Hanii in the Sky - &BurnDrvpce_haniirod, // Hanii on the Road - &BurnDrvmd_harddriv, // Hard Drivin' (World) - &BurnDrvHpuncher, // Hard Puncher (Japan) - &BurnDrvmd_hardbl94, // HardBall '94 (Euro, USA) - &BurnDrvmd_hardbl95, // HardBall '95 (USA) - &BurnDrvmd_hardbal3, // HardBall III (USA) - &BurnDrvmd_hardball, // HardBall! (USA) - &BurnDrvmd_hpotter, // Harry Potter (Rus) - &BurnDrvmd_hpotter2, // Harry Potter and the Chamber of Secrets (Rus) - &BurnDrvHasamu, // Hasamu (Japan) - &BurnDrvHthero, // Hat Trick Hero (Japan) - &BurnDrvHtchctch, // Hatch Catch - &BurnDrvpce_hatris, // Hatris - &BurnDrvHcastlee, // Haunted Castle (ver. E) - &BurnDrvHcastlek, // Haunted Castle (ver. K) - &BurnDrvHcastle, // Haunted Castle (ver. M) - &BurnDrvmd_haunting, // Haunting Starring Polterguy (Euro, USA) - &BurnDrvHedpanic, // Head Panic (ver. 0117, 17/01/2000) - &BurnDrvHedpanif, // Head Panic (ver. 0315, 15/03/2000) - &BurnDrvmd_headon, // Head-On Soccer (USA) - &BurnDrvHbarrel, // Heavy Barrel (US) - &BurnDrvHbarrelw, // Heavy Barrel (World) - &BurnDrvHvymetal, // Heavy Metal (315-5135) - &BurnDrvmd_heavynov, // Heavy Nova (USA) - &BurnDrvpce_hvyunit, // Heavy Unit - &BurnDrvmd_hvyunit, // Heavy Unit - Mega Drive Special (Jpn) - &BurnDrvHwchamp, // Heavyweight Champ - &BurnDrvHwchampj, // Heavyweight Champ (Japan, FD1094 317-0046) - &BurnDrvmd_heitao, // Hei Tao 2 - Super Big 2 (Chi) - &BurnDrvHellfir1, // Hellfire (1P Ver.) - &BurnDrvHellfir3, // Hellfire (1P Ver., alt) - &BurnDrvHellfire, // Hellfire (2P Ver.) - &BurnDrvHellfir2, // Hellfire (2P Ver., first edition) - &BurnDrvmd_hellfire, // Hellfire (Euro) - &BurnDrvmd_hellfirej, // Hellfire (Jpn) - &BurnDrvmd_hellfireu, // Hellfire (USA) - &BurnDrvHerbiedk, // Herbie at the Olympics (DK conversion) - &BurnDrvmd_hercules, // Hercules - &BurnDrvmd_herculs2, // Hercules 2 - &BurnDrvHerodku, // Hero in the Castle of Doom (DK conversion not encrypted) - &BurnDrvHerodk, // Hero in the Castle of Doom (DK conversion) - &BurnDrvmd_herzog, // Herzog Zwei (Euro, USA) - &BurnDrvmd_herzogj, // Herzog Zwei (Jpn) - &BurnDrvHeuksun, // Heuk Sun Baek Sa (Korea) - &BurnDrvHexpoola, // Hex Pool (Senko) - &BurnDrvHexpool, // Hex Pool (Shinkai) - &BurnDrvHexa, // Hexa - &BurnDrvHexion, // Hexion (Japan ver. JAB) - &BurnDrvmd_havocu, // High Seas Havoc (USA) - &BurnDrvHippodrm, // Hippodrome (US) - &BurnDrvBuraiken, // Hissatsu Buraiken (Japan) - &BurnDrvHiticej, // Hit the Ice (Japan) - &BurnDrvHitice, // Hit the Ice (US) - &BurnDrvmd_hitice, // Hit the Ice (USA) - &BurnDrvpce_hitice, // Hit the Ice - VHL - The Official Video Hockey League - &BurnDrvtg_hitice, // Hit the Ice - VHL - The Official Video Hockey League - &BurnDrvmd_hokuto, // Hokuto no Ken - Shin Seikimatsu Kyuuseishu Densetsu (Jpn) - &BurnDrvmd_homea, // Home Alone (Euro, USA) - &BurnDrvmd_homeap, // Home Alone (USA, Prototype) - &BurnDrvmd_homea2, // Home Alone 2 - Lost in New York (USA) - &BurnDrvHoneydol, // Honey Dolls - &BurnDrvpce_ddanpei, // Honoo no Toukyuuji - Dodge Danpei - &BurnDrvmd_ddanpei, // Honoo no Toukyuuji - Dodge Danpei (Jpn) - &BurnDrvmd_hook, // Hook (Euro) - &BurnDrvHookj, // Hook (Japan) - &BurnDrvHooku, // Hook (US) - &BurnDrvmd_hooku, // Hook (USA) - &BurnDrvHook, // Hook (World) - &BurnDrvHorizon, // Horizon - &BurnDrvHotbubl, // Hot Bubble - &BurnDrvHotmind, // Hot Mind (Hard Times hardware) - &BurnDrvHotpinbl, // Hot Pinball - &BurnDrvHotshock, // Hot Shocker - &BurnDrvHotshockb, // Hot Shocker (bootleg) - &BurnDrvhotdogst, // Hotdog Storm - The First Supersonics (International) - &BurnDrvmd_huamul, // Hua Mu Lan - Mulan (Chi) - &BurnDrvmd_huanle, // Huan Le Tao Qi Shu - Smart Mouse (Chi) -#if defined FBA_DEBUG - &BurnDrvHunchbkd, // Hunchback (DK conversion) [No sound, NOT WORKING] -#endif - &BurnDrvHunchbkg, // Hunchback (Galaxian hardware) - &BurnDrvHunchbks, // Hunchback (Scramble hardware) - &BurnDrvHncholms, // Hunchback Olympic (Scramble hardware) - &BurnDrvmd_hurrican, // Hurricanes (Euro) - &BurnDrvmd_hyokkohj, // Hyokkori Hyoutan Jima - Daitouryou o Mezase! (Jpn) - &BurnDrvmd_hyperdnk, // Hyper Dunk (Euro) - &BurnDrvmd_hyperdnkj, // Hyper Dunk - The Playoff Edition (Jpn) - &BurnDrvmd_hyperdnkjp, // Hyper Dunk - The Playoff Edition (Jpn, Prototype) - &BurnDrvmd_hypermgnk, // Hyper Marbles (Jpn, Game no Kandume MegaCD Rip) - &BurnDrvmd_hyperm, // Hyper Marbles (Jpn, SegaNet) - &BurnDrvHyperpac, // Hyper Pacman - &BurnDrvHyperpacb, // Hyper Pacman (bootleg) - &BurnDrvHypsptsp, // Hyper Sports Special (Japan) - &BurnDrvCpsHsf2j, // Hyper Street Fighter 2: The Anniversary Edition (031222 Japan) - &BurnDrvCpsHsf2d, // Hyper Street Fighter 2: The Anniversary Edition (040202 Asia Phoenix Edition) - &BurnDrvCpsHsf2da, // Hyper Street Fighter 2: The Anniversary Edition (040202 Asia Phoenix Edition, alt) - &BurnDrvCpsHsf2a, // Hyper Street Fighter 2: The Anniversary Edition (040202 Asia) - &BurnDrvCpsHsf2, // Hyper Street Fighter 2: The Anniversary Edition (040202 USA) - &BurnDrvImsorry, // I'm Sorry (315-5110, US) - &BurnDrvmd_iceage, // Ice Age (Rus) - &BurnDrvmd_iceage3, // Ice Age 3 (Rus) - &BurnDrvmd_iceage4, // Ice Age 4 (Rus) - &BurnDrvpce_idolhana, // Idol Hanafuda Fan Club - &BurnDrvfr2ch, // Idol Mahjong - final romance 2 (CD to MVS Conversion) - &BurnDrvIgmo, // IGMO - &BurnDrvikari3, // Ikari III - The Rescue (8-Way Joystick) - &BurnDrvikari3k, // Ikari III - The Rescue (Korea, 8-Way Joystick) - &BurnDrvikari3u, // Ikari III - The Rescue (US, Rotary Joystick) - &BurnDrvikari3j, // Ikari Three - The Rescue (Japan, Rotary Joystick) - &BurnDrvmd_dokidokignk, // Ikazuse! Koi no Doki Doki Penguin Land MD (Jpn, Game no Kandume MegaCD Rip) - &BurnDrvmd_dokidoki, // Ikazuse! Koi no Doki Doki Penguin Land MD (Jpn, SegaNet) - &BurnDrvIkki, // Ikki (Japan) - &BurnDrvpce_imagefgt, // Image Fight - &BurnDrvImgfightj, // Image Fight (Japan) - &BurnDrvImgfight, // Image Fight (Japan, revision A) - &BurnDrvmd_imgitt, // IMG International Tour Tennis (Euro, USA) - &BurnDrvScrambp, // Impacto (Billport S.A., Spanish bootleg of Scramble) - &BurnDrvtg_impossam, // Impossamole - &BurnDrvInthuntu, // In The Hunt (US) - &BurnDrvInthunt, // In The Hunt (World) - &BurnDrvmd_indyrus, // Indiana Jones - Koridory Vremeni (Rus) - &BurnDrvmd_indycrus, // Indiana Jones and the Last Crusade (Euro) - &BurnDrvmd_indycrusu, // Indiana Jones and the Last Crusade (USA) - &BurnDrvmd_insectxj, // Insector X (Jpn, Kor) - &BurnDrvmd_insectx, // Insector X (USA) - &BurnDrvInsectx, // Insector X (World) - &BurnDrvmd_instchp1, // Instruments of Chaos Starring Young Indiana Jones (Prototype) - &BurnDrvmd_instchp9, // Instruments of Chaos Starring Young Indiana Jones (Prototype, 19931228) - &BurnDrvmd_instchp8, // Instruments of Chaos Starring Young Indiana Jones (Prototype, 19940101) - &BurnDrvmd_instchp7, // Instruments of Chaos Starring Young Indiana Jones (Prototype, 19940103) - &BurnDrvmd_instchp6, // Instruments of Chaos Starring Young Indiana Jones (Prototype, 19940126) - &BurnDrvmd_instchp5, // Instruments of Chaos Starring Young Indiana Jones (Prototype, 19940127) - &BurnDrvmd_instchp4, // Instruments of Chaos Starring Young Indiana Jones (Prototype, 19940923-A) - &BurnDrvmd_instchp3, // Instruments of Chaos Starring Young Indiana Jones (Prototype, 19941228-A) - &BurnDrvmd_instchp2, // Instruments of Chaos Starring Young Indiana Jones (Prototype, 19941229) - &BurnDrvmd_instch, // Instruments of Chaos Starring Young Indiana Jones (USA) - &BurnDrvmd_intrugby, // International Rugby (Euro) - &BurnDrvmd_issdx, // International Superstar Soccer Deluxe (Euro) -#if defined FBA_DEBUG - &BurnDrvInttoote, // International Toote (Germany) [no comment, NOT WORKING] - &BurnDrvInttootea, // International Toote II (World?) [no comment, NOT WORKING] -#endif - &BurnDrvmd_iraqwar, // Iraq War 2003 - &BurnDrvmd_iraqwara, // Iraq War 2003 (Alt) - &BurnDrvIsgsm, // ISG Selection Master Type 2006 System BIOS - &BurnDrvmd_ishido, // Ishido - The Way of Stones (USA) - &BurnDrvmd_itcame, // It Came from the Desert (USA) - &BurnDrvmd_izzyqst, // Izzy's Quest for the Olympic Rings (Euro, USA) - &BurnDrvJjsquawk, // J. J. Squawkers - &BurnDrvJjsquawkb, // J. J. Squawkers (bootleg) - &BurnDrvJjsquawkb2, // J. J. Squawkers (bootleg, Blandia conversion) - &BurnDrvmd_jlcs, // J. League Champion Soccer (Jpn) - &BurnDrvpce_jleag11, // J. League Greatest Eleven - &BurnDrvmd_jlpsa, // J. League Pro Striker '93 (Jpn, v1.0) - &BurnDrvmd_jlps, // J. League Pro Striker '93 (Jpn, v1.3) - &BurnDrvmd_jlps2, // J. League Pro Striker 2 (Jpn) - &BurnDrvmd_jlpsp, // J. League Pro Striker Perfect (Jpn) - &BurnDrvtg_jjnjeff, // J.J. & Jeff - &BurnDrvpce_nicklaus, // Jack Nicklaus' Greatest 18 Holes of Major Championship Golf - &BurnDrvmd_nicklaus, // Jack Nicklaus' Power Challenge Golf (Euro, USA) - &BurnDrvtg_nicklaus, // Jack Nicklaus' Turbo Golf - &BurnDrvjack, // Jack the Giantkiller (set 1) - &BurnDrvjack2, // Jack the Giantkiller (set 2) - &BurnDrvjack3, // Jack the Giantkiller (set 3) - &BurnDrvpce_jchan, // Jackie Chan - &BurnDrvJchan, // Jackie Chan - The Kung-Fu Master - &BurnDrvJchan2, // Jackie Chan in Fists of Fire - &BurnDrvtg_jchan, // Jackie Chan's Action Kung Fu - &BurnDrvmd_jbdougko, // James 'Buster' Douglas Knockout Boxing (Euro, USA) - &BurnDrvmd_jb007, // James Bond 007 - The Duel (Euro, Rev. A) - &BurnDrvmd_jb007j, // James Bond 007 - The Duel (Jpn) - &BurnDrvmd_jb007u, // James Bond 007 - The Duel (USA) - &BurnDrvmd_jpond, // James Pond - Underwater Agent (Euro, USA) - &BurnDrvmd_jpond3, // James Pond 3 - Operation Starfish (Euro, USA) - &BurnDrvmd_robocod, // James Pond II - Codename RoboCod (Euro, USA) - &BurnDrvmd_robocodj, // James Pond II - Codename RoboCod (Jpn, Kor) - &BurnDrvmd_jammit, // Jammit (USA) - &BurnDrvmd_janout, // Janou Touryuumon (Jpn) - &BurnDrvmd_jantei, // Jantei Monogatari (Jpn) - &BurnDrvmd_draxos, // Jashin Draxos (Jpn, Kor) - &BurnDrvmd_jellyboy, // Jelly Boy (Euro, Prototype) - &BurnDrvmd_jennifct, // Jennifer Capriati Tennis (USA) - &BurnDrvmd_jeopardy, // Jeopardy! (USA) - &BurnDrvmd_jeopardd, // Jeopardy! Deluxe (USA) - &BurnDrvmd_jeopards, // Jeopardy! Sports Edition (USA) - &BurnDrvmd_pigskinf, // Jerry Glanville's Pigskin Footbrawl (USA) - &BurnDrvmd_jewelms, // Jewel Master (Euro, USA, Rev. A) - &BurnDrvmd_jewelmsj, // Jewel Master (Jpn) - &BurnDrvpce_jigomegu, // Jigoku Meguri - &BurnDrvJigkmgri, // Jigoku Meguri (Japan) - &BurnDrvmd_jimpower, // Jim Power - The Arcade Game (USA, Prototype) - &BurnDrvmd_jimmywws, // Jimmy White's Whirlwind Snooker (Euro) - &BurnDrvpce_jinmu, // Jinmu Denshou - &BurnDrvpce_jinmu1, // Jinmu Denshou (Alt) - &BurnDrvmd_jiujim, // Jiu Ji Ma Jiang II - Ye Yan Bian (Chi) - &BurnDrvjockeygp, // Jockey Grand Prix (set 1) - &BurnDrvjockeygpa, // Jockey Grand Prix (set 2) - &BurnDrvmd_joemac, // Joe & Mac (USA) - &BurnDrvJoemacra, // Joe & Mac Returns (World, Version 1.0, 1994.05.19) - &BurnDrvJoemacr, // Joe & Mac Returns (World, Version 1.1, 1994.05.27) - &BurnDrvmd_joemont, // Joe Montana Football (World) - &BurnDrvmd_joemont2a, // Joe Montana II Sports Talk Football (World) - &BurnDrvmd_joemont2, // Joe Montana II Sports Talk Football (World, Rev. A) - &BurnDrvmd_madden92, // John Madden Football '92 (Euro, USA) - &BurnDrvmd_madden93, // John Madden Football '93 (Euro, USA) - &BurnDrvmd_madd93ce, // John Madden Football '93 - Championship Edition (USA) - &BurnDrvmd_madden, // John Madden Football (Euro, USA) - &BurnDrvmd_maddenj, // John Madden Football - Pro Football (Jpn) - &BurnDrvjoinem, // Joinem - &BurnDrvJojobaner1, // JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyou na Bouken: Mirai e no Isan (Euro 990913, NO CD) - &BurnDrvJojobane, // JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyou na Bouken: Mirai e no Isan (Euro 990927, NO CD) - &BurnDrvJojobar1, // JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913) - &BurnDrvJojobanr1, // JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913, NO CD) - &BurnDrvJojoba, // JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990927) - &BurnDrvJojoban, // JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990927, NO CD) - &BurnDrvJojonr2, // JoJo's Venture / JoJo no Kimyou na Bouken (Asia 981202, NO CD) - &BurnDrvJojonr1, // JoJo's Venture / JoJo no Kimyou na Bouken (Asia 990108, NO CD) - &BurnDrvJojon, // JoJo's Venture / JoJo no Kimyou na Bouken (Asia 990128, NO CD) - &BurnDrvJojojr2, // JoJo's Venture / JoJo no Kimyou na Bouken (Japan 981202) - &BurnDrvJojojr1, // JoJo's Venture / JoJo no Kimyou na Bouken (Japan 990108) - &BurnDrvJojoj, // JoJo's Venture / JoJo no Kimyou na Bouken (Japan 990128) - &BurnDrvJojor2, // JoJo's Venture / JoJo no Kimyou na Bouken (USA 981202) - &BurnDrvJojor1, // JoJo's Venture / JoJo no Kimyou na Bouken (USA 990108) - &BurnDrvJojo, // JoJo's Venture / JoJo no Kimyou na Bouken (USA 990128) - &BurnDrvltorb1, // Jonas Indiana and the Lost Temple of RA (20050717) - &BurnDrvmd_joshua, // Joshua & The Battle of Jericho (USA) - &BurnDrvjoyman, // Joyman - &BurnDrvmd_jdreddp1, // Judge Dredd (USA, Prototype) - &BurnDrvmd_jdreddp2, // Judge Dredd (USA, Prototype, Alt) - &BurnDrvmd_jdredd, // Judge Dredd (World) - &BurnDrvJuju, // JuJu Densetsu (Japan) - &BurnDrvJujuba, // JuJu Densetsu (Japan, bootleg) - &BurnDrvJujub, // JuJu Densetsu (Playmark bootleg) - &BurnDrvJumpbug, // Jump Bug - &BurnDrvJumpbugb, // Jump Bug (bootleg) - &BurnDrvJumpkids, // Jump Kids - &BurnDrvjumpshot, // Jump Shot - &BurnDrvjumpshotp, // Jump Shot Engineering Sample - &BurnDrvJumping, // Jumping - &BurnDrvJpopnics, // Jumping Pop (Nics, Korean bootleg of Plump Pop) - &BurnDrvJumppop, // Jumping Pop (set 1) - &BurnDrvJumppope, // Jumping Pop (set 2) - &BurnDrvmd_junction, // Junction (Jpn, USA) - &BurnDrvmd_jstrike, // Jungle Strike (Euro, USA) - &BurnDrvmd_jstrikep, // Jungle Strike (USA, Prototype) - &BurnDrvmd_jstrikej, // Jungle Strike - Uketsugareta Kyouki (Jpn) -#if defined FBA_DEBUG - &BurnDrvJungler, // Jungler [no comment, NOT WORKING] -#endif - &BurnDrvJrking, // Junior King (bootleg of Donkey Kong Jr.) - &BurnDrvmd_junker, // Junker's High (Jpn, Prototype) - &BurnDrvmd_jpark, // Jurassic Park (Euro) - &BurnDrvmd_jparkj, // Jurassic Park (Jpn) - &BurnDrvmd_jparku, // Jurassic Park (USA) - &BurnDrvmd_jparkup, // Jurassic Park (USA, Prototype) - &BurnDrvmd_jparkre, // Jurassic Park - Rampage Edition (Euro, USA) - &BurnDrvmd_jparkrep9, // Jurassic Park - Rampage Edition (Prototype, 19940620) - &BurnDrvmd_jparkrep8, // Jurassic Park - Rampage Edition (Prototype, 19940622) - &BurnDrvmd_jparkrep7, // Jurassic Park - Rampage Edition (Prototype, 19940630) - &BurnDrvmd_jparkrep6, // Jurassic Park - Rampage Edition (Prototype, 19940708) - &BurnDrvmd_jparkrep5, // Jurassic Park - Rampage Edition (Prototype, 19940713) - &BurnDrvmd_jparkrep4, // Jurassic Park - Rampage Edition (Prototype, 19940714) - &BurnDrvmd_jparkrep3, // Jurassic Park - Rampage Edition (Prototype, 19940715) - &BurnDrvmd_jparkrep2, // Jurassic Park - Rampage Edition (Prototype, 19940717) - &BurnDrvmd_jparkrep1, // Jurassic Park - Rampage Edition (Prototype, 19940718) - &BurnDrvmd_jleague, // Justice League Task Force (World) - &BurnDrvpce_juuouki, // Juuouki - &BurnDrvpce_juuouki1, // Juuouki (Alt) - &BurnDrvmd_juuouki1, // Juuouki (Jpn) - &BurnDrvmd_juuouki, // Juuouki (Jpn, v1.1) - &BurnDrvAltbeastj3, // Juuouki (set 3, Japan, FD1094 317-0068) - &BurnDrvAltbeastj, // Juuouki (set 7, Japan, 8751 317-0077) - &BurnDrvCpsJyangoku, // Jyangokushi -Haoh no Saihai- (990527 Japan) - &BurnDrvjanshin, // Jyanshin Densetsu - Quest of Jongmaster - &BurnDrvmd_kof2k, // K.O.F 2000 - &BurnDrvmd_kof98, // K.O.F 98' - &BurnDrvmd_kof98a, // K.O.F 98' (Unprotected?) - &BurnDrvmd_kagekij, // Ka-Ge-Ki (Jpn) - &BurnDrvmd_kageki, // Ka-Ge-Ki - Fists of Steel (USA) -#if defined FBA_DEBUG - &BurnDrvKabukizj, // Kabuki-Z (Japan) [Imperfect graphics] - &BurnDrvKabukiz, // Kabuki-Z (World) [Imperfect graphics] -#endif - &BurnDrvKagekih, // Kageki (hack) - &BurnDrvKagekij, // Kageki (Japan) - &BurnDrvKageki, // Kageki (US) - &BurnDrvYanchamr, // Kaiketsu Yanchamaru (Japan) - &BurnDrvKaiteids, // Kaitei Daisensou (Japan) - &BurnDrvpce_shubibi, // Kaizou Choujin Shubibinman - &BurnDrvpce_shubibi2, // Kaizou Choujin Shubibinman 2 - Aratanaru Teki - &BurnDrvKamakazi3, // Kamakazi III (superg hack) - &BurnDrvkangaroo, // Kangaroo - &BurnDrvkangaroa, // Kangaroo (Atari) - &BurnDrvkangarob, // Kangaroo (bootleg) - &BurnDrvKaratblj, // Karate Blazers (Japan) - &BurnDrvKaratblu, // Karate Blazers (US) - &BurnDrvKaratblz, // Karate Blazers (World?) - &BurnDrvKarianx, // Karian Cross (Rev. 1.0) - &BurnDrvKarnovj, // Karnov (Japan) - &BurnDrvKarnova, // Karnov (US, rev 5) - &BurnDrvKarnov, // Karnov (US, rev 6) - &BurnDrvkarnovr, // Karnov's Revenge / Fighter's History Dynamite - &BurnDrvpce_katochan, // Kato Chan & Ken Chan - &BurnDrvpce_kattobi, // Kattobi! Takuhai Kun - &BurnDrvmd_kawasaki, // Kawasaki Superbike Challenge (Euro, USA) - &BurnDrvmd_kawasakip, // Kawasaki Superbike Challenge (USA, Prototype) - &BurnDrvtg_keithcor, // Keith Courage in Alpha Zones - &BurnDrvKeroppi, // Kero Kero Keroppi no Issyoni Asobou (Japan) - &BurnDrvketarr, // Ketsui Kizuna Jigoku Tachi (Arrange Mode version 1.0, hack by Trap15) - &BurnDrvketarr15, // Ketsui Kizuna Jigoku Tachi (Arrange Mode version 1.5, hack by Trap15) - &BurnDrvketarr151, // Ketsui Kizuna Jigoku Tachi (Arrange Mode version 1.51, hack by Trap15) - &BurnDrvketstoicu, // Ketsui Kizuna Jigoku Tachi (MR. Stoic version, hack by Trap15) - &BurnDrvKetb, // Ketsui Kizuna Jigoku Tachi (Original?, Japan) - &BurnDrvKeta, // Ketsui Kizuna Jigoku Tachi (Revision 1?, Japan) - &BurnDrvKet, // Ketsui Kizuna Jigoku Tachi (Revision 2?, Japan) - &BurnDrvmd_kickoff3, // Kick Off 3 - European Challenge (Euro) - &BurnDrvpce_kickball, // Kickball - &BurnDrvKikcubicb, // Kickle Cubele - &BurnDrvmd_kidcham, // Kid Chameleon (Euro, Korea, USA) - &BurnDrvKidnikiu, // Kid Niki - Radical Ninja (US) - &BurnDrvKidniki, // Kid Niki - Radical Ninja (World) - &BurnDrvHorekid, // Kid no Hore Hore Daisakusen - &BurnDrvHorekidb, // Kid no Hore Hore Daisakusen (bootleg) - &BurnDrvmd_patlabor, // Kidou Keisatsu Patlabor - 98-shiki Kidou Seyo! (Jpn) - &BurnDrvpce_kikikai, // Kiki KaiKai - &BurnDrvKingballj, // King & Balloon (Japan) - &BurnDrvKingball, // King & Balloon (US) - &BurnDrvtg_kingcasn, // King of Casino - &BurnDrvpce_kingcasn, // King of Casino - &BurnDrvKog, // King of Gladiator (The King of Fighters '97 bootleg) - &BurnDrvKogplus, // King of Gladiator Plus (The King of Fighters '97 bootleg) - &BurnDrvmd_kotm, // King of the Monsters (Euro) - &BurnDrvmd_kotmj, // King of the Monsters (Jpn) - &BurnDrvKotm, // King of the Monsters (set 1) - &BurnDrvKotmh, // King of the Monsters (set 2) - &BurnDrvmd_kotmu, // King of the Monsters (USA) - &BurnDrvmd_kotm2, // King of the Monsters 2 (USA) - &BurnDrvKotm2, // King of the Monsters 2 - The Next Thing (NGM-039)(NGH-039) - &BurnDrvKotm2p, // King of the Monsters 2 - The Next Thing (prototype) - &BurnDrvmd_kingsalj, // King Salmon (Jpn) - &BurnDrvmd_kingsal, // King Salmon - The Big Catch (USA) - &BurnDrvmd_kingsbty, // King's Bounty - The Conqueror's Quest (Euro, USA) - &BurnDrvKingdmGP, // Kingdom Grandprix (World) - &BurnDrvmd_kishiden, // Kishi Densetsu (Jpn) - &BurnDrvmd_kissshot, // Kiss Shot (Jpn, SegaNet) - &BurnDrvKizuna, // Kizuna Encounter - Super Tag Battle / Fu'un Super Tag Battle - &BurnDrvpce_klax, // Klax - &BurnDrvtg_klax, // Klax - &BurnDrvmd_klax, // Klax (Euro, USA) - &BurnDrvmd_klaxj, // Klax (Jpn) - &BurnDrvpce_knightrs, // Knight Rider Special - &BurnDrvCpsKnights, // Knights of the Round (911127 etc) - &BurnDrvCpsKnightsja, // Knights of the Round (911127 Japan, B-Board 89625B-1) - &BurnDrvCpsKnightsj, // Knights of the Round (911127 Japan, B-Board 91634B-2) - &BurnDrvCpsKnightsu, // Knights of the Round (911127 USA) - &BurnDrvCpsKnightsb, // Knights of the Round (bootleg set 1 (with YM2151 + 2xMSM5205), 911127 etc) - &BurnDrvCpsKnightsb2, // Knights of the Round (bootleg set 2, 911127 etc) - &BurnDrvCpsKnightsb3, // Knights of the Round (bootleg set 3, 911127 Japan) - &BurnDrvCpsKnightsb4, // Knights of the Round (bootleg set 4 (with YM2151 + 2xMSM5205), 911127 etc) - &BurnDrvCpsKnightsh, // Knights of the Round (hack set 1) - &BurnDrvCpsKnightsh2, // Knights of the Round (hack set 2, 911127 etc) - &BurnDrvKov100, // Knights of Valour - Sangoku Senki (V100, Japan) - &BurnDrvKov115, // Knights of Valour - Sangoku Senki (V115) - &BurnDrvKov, // Knights of Valour - Sangoku Senki (V117) - &BurnDrvKov2100, // Knights of Valour 2 (V100, 100, 100, Hong Kong) - &BurnDrvKov2101, // Knights of Valour 2 (V101, 101, 100, Hong Kong) - &BurnDrvKov2102, // Knights of Valour 2 (V102, 101, 100, Hong Kong) - &BurnDrvKov2103, // Knights of Valour 2 (V103, 101, 100, Hong Kong) - &BurnDrvKov2106, // Knights of Valour 2 (V106, 102, 100 Hong Kong) - &BurnDrvKov2, // Knights of Valour 2 (V107, 102, 100, Hong Kong) - &BurnDrvKov2p202, // Knights of Valour 2 Plus - Nine Dragons (VM202XX) - &BurnDrvKov2p204, // Knights of Valour 2 Plus - Nine Dragons (VM204XX) - &BurnDrvKov2p, // Knights of Valour 2 Plus - Nine Dragons (VM205XX, China) - &BurnDrvKovplusa, // Knights of Valour Plus - Sangoku Senki Plus (V119 alt) - &BurnDrvKovplus, // Knights of Valour Plus - Sangoku Senki Plus (V119) - &BurnDrvkovshpa, // Knights of Valour Super Heroes Plus / Sangoku Senki Super Heroes Plus (ver. 100) - &BurnDrvkovshp, // Knights of Valour Super Heroes Plus / Sangoku Senki Super Heroes Plus (ver. 101) - &BurnDrvKovshb, // Knights of Valour Superheroes / Sangoku Senki Superheroes (bootleg, V104, China) - &BurnDrvKovsh101, // Knights of Valour Superheroes / Sangoku Senki Superheroes (V101) - &BurnDrvKovsh102, // Knights of Valour Superheroes / Sangoku Senki Superheroes (V102) - &BurnDrvKovsh103, // Knights of Valour Superheroes / Sangoku Senki Superheroes (V103) - &BurnDrvKovsh, // Knights of Valour Superheroes / Sangoku Senki Superheroes (V104, China) - &BurnDrvkovshxas, // Knights of Valour: Ao Shi San Guo / Sangoku Senki: Ao shi San Guo (ver. 202CN) -#if defined FBA_DEBUG - &BurnDrvkovassg, // Knights of Valour: Ao Shi San Guo / Sangoku Senki: Ao Shi San Guo (ver. 315CN) [Incomplete dump, NOT WORKING] - &BurnDrvkovlsjba, // Knights of Valour: Luan Shi Jie Ba / Sangoku Senki: Luan Shi Jie Ba (alt ver. 200CN) [Incomplete dump, NOT WORKING] - &BurnDrvkovlsjb, // Knights of Valour: Luan Shi Jie Ba / Sangoku Senki: Luan Shi Jie Ba (ver. 200CN) [no comment, NOT WORKING] - &BurnDrvkovlsqh, // Knights of Valour: Luan Shi Quan Huang / Sangoku Senki: Luan Shi Quan Huang (ver. 200CN) [Incomplete dump, NOT WORKING] - &BurnDrvkovlsqhd, // Knights of Valour: Luan Shi Quan Huang / Sangoku Senki: Luan Shi Quan Huang (ver. 203CN) [Imperfect Protection Emulation, NOT WORKING] - &BurnDrvkovlsqh2, // Knights of Valour: Luan Shi Quan Huang II / Sangoku Senki: Luan Shi Quan Huang II (ver. 200CN) [Incomplete dump, NOT WORKING] -#endif - &BurnDrvkovqhsgsa, // Knights of Valour: Quan Huang San Guo Special / Sangoku Senki: Quan Huang San Guo Special (alt ver. 303CN) - &BurnDrvkovqhsgs, // Knights of Valour: Quan Huang San Guo Special / Sangoku Senki: Quan Huang San Guo Special (ver. 303CN) - &BurnDrvKovsgqyz, // Knights of Valour: SanGuo QunYingZhuan / Sangoku Senki: SanGuo QunYingZhuan (set 1) - &BurnDrvKovsgqyza, // Knights of Valour: SanGuo QunYingZhuan / Sangoku Senki: SanGuo QunYingZhuan (set 2) - &BurnDrvKovsgqyzb, // Knights of Valour: SanGuo QunYingZhuan / Sangoku Senki: SanGuo QunYingZhuan (set 3) - &BurnDrvKovsgqyzc, // Knights of Valour: SanGuo QunYingZhuan / Sangoku Senki: SanGuo QunYingZhuan (set 4) - &BurnDrvkovytzy, // Knights of Valour: Yi Tong Zhong Yuan / Sangoku Senki: Yi Tong Zhong Yuan (ver. 201, China) - &BurnDrvKnockout, // Knock Out!! - &BurnDrvKBash, // Knuckle Bash - &BurnDrvKbash2, // Knuckle Bash 2 (bootleg) - &BurnDrvmd_knucklp, // Knuckles in Sonic 2 (Prototype 0524, 19940527, 10.46) - &BurnDrvEto, // Kokontouzai Eto Monogatari (Japan) - &BurnDrvmd_kolobok, // Kolobok ~ Pyramid (Rus) - &BurnDrvKonami88, // Konami '88 - &BurnDrvKontest, // Konami Test Board (GX800, Japan) - &BurnDrvKong, // Kong (Donkey Kong conversion on Galaxian hardware) - &BurnDrvpce_proyak89, // Kore Ga Pro Yakyuu '89 - &BurnDrvpce_proyak90, // Kore Ga Pro Yakyuu '90 - &BurnDrvKorokoro, // Koro Koro Quest (Japan) - &BurnDrvkorosuke, // Korosuke Roller - &BurnDrvMyangel, // Kosodate Quiz My Angel (Japan) - &BurnDrvMyangel2, // Kosodate Quiz My Angel 2 (Japan) - &BurnDrvmd_koteteik, // Koutetsu Teikoku (Jpn) - &BurnDrvStrahl, // Koutetsu Yousai Strahl (Japan set 1) - &BurnDrvStrahla, // Koutetsu Yousai Strahl (Japan set 2) - &BurnDrvKozure, // Kozure Ookami (Japan) -#if defined FBA_DEBUG - &BurnDrvKrzybowl, // Krazy Bowl [no comment, NOT WORKING] -#endif - &BurnDrvmd_krusty1, // Krusty's Super Fun House (Euro, USA) - &BurnDrvmd_krusty, // Krusty's Super Fun House (Euro, USA, v1.1) - &BurnDrvKuhga, // Kuhga - Operation Code 'Vapor Trail' (Japan revision 3) - &BurnDrvmd_kujaku2, // Kujaku Ou 2 - Geneijou (Jpn) - &BurnDrvmd_kfpanda2, // Kung Fu Panda 2 (Rus) - &BurnDrvKungfum, // Kung-Fu Master - &BurnDrvKungfub, // Kung-Fu Master (bootleg set 1) - &BurnDrvKungfub2, // Kung-Fu Master (bootleg set 2) - &BurnDrvKungfub3, // Kung-Fu Master (bootleg set 3) - &BurnDrvKungfumd, // Kung-Fu Master (Data East) - &BurnDrvmd_kuuga, // Kuuga - Operation Code 'Vapor Trail' (Jpn) - &BurnDrvmd_kuzyaeo, // Kuzya - Ekologiya V Opasnosti (Rus) - &BurnDrvmd_kuzyamd, // Kuzya - V Mire Dinozavrov (Rus) - &BurnDrvmd_kyukaidk, // Kyuukai Douchuuki (Jpn) - &BurnDrvpce_kyukyomj, // Kyuukyoku Mahjong - Idol Graphics - &BurnDrvpce_kyukyom2, // Kyuukyoku Mahjong II - &BurnDrvpce_ktiger, // Kyuukyoku Tiger - &BurnDrvmd_ktiger, // Kyuukyoku Tiger (Jpn) - &BurnDrvmd_laruss95, // La Russa Baseball 95 (USA, Oceania) - &BurnDrvLadybug, // Lady Bug - &BurnDrvLadybugg, // Lady Bug (bootleg on Galaxian hardware) - &BurnDrvLadybugb, // Lady Bug (bootleg set 1) - &BurnDrvLadybgb2, // Lady Bug (bootleg set 2) - &BurnDrvpce_ladyswrd, // Lady Sword - &BurnDrvpce_ladyswrd1, // Lady Sword (Alt) - &BurnDrvmd_lakers, // Lakers versus Celtics and the NBA Playoffs (USA) - &BurnDrvmd_landstlkg, // Landstalker - Die Schätze von König Nolo (Ger) - &BurnDrvmd_landstlkj, // Landstalker - Koutei no Zaihou (Jpn) - &BurnDrvmd_landstlkf, // Landstalker - Le Tresor du Roi Nole (Fra) - &BurnDrvmd_landstlk, // Landstalker - The Treasures of King Nole (Euro) - &BurnDrvmd_landstlku, // Landstalker - The Treasures of King Nole (USA) - &BurnDrvmd_landstlkup, // Landstalker - Treasure of King Nole (USA, Prototype) - &BurnDrvmd_langriss, // Langrisser (Jpn) - &BurnDrvmd_langris2b, // Langrisser II (Jpn) - &BurnDrvmd_langris2a, // Langrisser II (Jpn, v1.1) - &BurnDrvmd_langris2, // Langrisser II (Jpn, v1.2) - &BurnDrvlans2004, // Lansquenet 2004 (Shock Troopers - 2nd Squad bootleg) - &BurnDrvLvgirl94, // Las Vegas Girl (Girl '94) - &BurnDrvLghostu, // Laser Ghost (set 1, US, 317-0165) - &BurnDrvLghost, // Laser Ghost (set 2, World, 317-0166) - &BurnDrvmd_lastact, // Last Action Hero (Euro, USA) - &BurnDrvmd_lastbtle, // Last Battle (Euro, USA, Kor) - &BurnDrvLsstduelb, // Last Duel (bootleg) - &BurnDrvLastduelj, // Last Duel (Japan) - &BurnDrvLastduel, // Last Duel (US New Ver.) - &BurnDrvLastduelo, // Last Duel (US Old Ver.) - &BurnDrvlhcdb, // Last Hope CD Beta (Neo CD conversion) - &BurnDrvLastmsnj, // Last Mission (Japan) - &BurnDrvLastmsno, // Last Mission (US revision 5) - &BurnDrvLastmisn, // Last Mission (US revision 6) - &BurnDrvLresort, // Last Resort - &BurnDrvKyustrkr, // Last Striker / Kyuukyoku no Striker - &BurnDrvLastsurv, // Last Survivor (FD1094 317-0083) - &BurnDrvLbowling, // League Bowling (NGM-019)(NGH-019) - &BurnDrvMadgearu, // Led Storm (US) - &BurnDrvLedstrm2, // Led Storm Rally 2011 (US) - &BurnDrvLegend, // Legend - &BurnDrvLoht, // Legend of Hero Tonma - &BurnDrvtg_loht, // Legend of Hero Tonma - &BurnDrvpce_loht, // Legend of Hero Tonma - &BurnDrvLohtb, // Legend of Hero Tonma (bootleg, set 1) - &BurnDrvLohtb2, // Legend of Hero Tonma (bootleg, set 2) - &BurnDrvLohtj, // Legend of Hero Tonma (Japan) - &BurnDrvLegendos, // Legend of Success Joe / Ashitano Joe Densetsu - &BurnDrvLwingsb, // Legendary Wings (bootleg) - &BurnDrvLwings, // Legendary Wings (US set 1) - &BurnDrvLwings2, // Legendary Wings (US set 2) - &BurnDrvmd_lemmings, // Lemmings (Euro) - &BurnDrvmd_lemmingsju1, // Lemmings (Jpn, USA) - &BurnDrvmd_lemmingsju, // Lemmings (Jpn, USA, Kor, v1.1) - &BurnDrvLemmings, // Lemmings (US prototype) - &BurnDrvmd_lemming2, // Lemmings 2 - The Tribes (Euro) - &BurnDrvmd_lemming2u, // Lemmings 2 - The Tribes (USA) - &BurnDrvCrshrace, // Lethal Crash Race (set 1) - &BurnDrvCrshrace2, // Lethal Crash Race (set 2) - &BurnDrvmd_lethalen, // Lethal Enforcers (Euro) - &BurnDrvmd_lethalenj, // Lethal Enforcers (Jpn) - &BurnDrvmd_lethalenu, // Lethal Enforcers (USA) - &BurnDrvmd_le2, // Lethal Enforcers II - Gun Fighters (Euro) - &BurnDrvmd_le2u, // Lethal Enforcers II - Gun Fighters (USA) - &BurnDrvLethalth, // Lethal Thunder (World) - &BurnDrvLevers, // Levers - &BurnDrvmd_lhx, // LHX Attack Chopper (Euro, USA) - &BurnDrvmd_lhxj, // LHX Attack Chopper (Jpn) - &BurnDrvmd_liberty, // Liberty or Death (USA) - &BurnDrvmd_lightc, // Light Crusader (Euro) - &BurnDrvmd_lightcj, // Light Crusader (Jpn) - &BurnDrvmd_lightck, // Light Crusader (Kor) - &BurnDrvmd_lightcp, // Light Crusader (Prototype, 19950608) - &BurnDrvmd_lightcu, // Light Crusader (USA) - &BurnDrvmd_lightfor, // Lightening Force - Quest for the Darkstar (USA) - &BurnDrvLgtnfghta, // Lightning Fighters (Asia) - &BurnDrvLgtnfghtu, // Lightning Fighters (US) - &BurnDrvLgtnfght, // Lightning Fighters (World) - &BurnDrvShangonle, // Limited Edition Hang-On - &BurnDrvLoffirej, // Line of Fire / Bakudan Yarou (Japan, FD1094 317-0134) - &BurnDrvLoffireu, // Line of Fire / Bakudan Yarou (US, FD1094 317-0135) - &BurnDrvLoffire, // Line of Fire / Bakudan Yarou (World, FD1094 317-0136) - &BurnDrvmd_supmagic, // Linghuan Daoshi Super Magician (Chi) - &BurnDrvmd_lionkin3, // Lion King 3 - &BurnDrvmd_lionkin3b, // Lion King 3 (Alt 2?) - &BurnDrvmd_lionkin3a, // Lion King 3 (Alt?) - &BurnDrvLiquidku, // Liquid Kids (US) - &BurnDrvLiquidk, // Liquid Kids (World) - &BurnDrvLithero, // Little Hero - &BurnDrvLivequiz, // Live Quiz Show - &BurnDrvlizwiz, // Lizard Wizard - &BurnDrvmd_lobo, // Lobo (USA, Prototype) - &BurnDrvLdrun, // Lode Runner (set 1) - &BurnDrvLdruna, // Lode Runner (set 2) - &BurnDrvpce_ldrun, // Lode Runner - Lost Labyrinth - &BurnDrvLoderndfa, // Lode Runner - The Dig Fight (ver. A) - &BurnDrvLoderndf, // Lode Runner - The Dig Fight (ver. B) - &BurnDrvLdrun2, // Lode Runner II - The Bungeling Strikes Back - &BurnDrvLdrun3j, // Lode Runner III - Majin No Fukkatsu - &BurnDrvLdrun3, // Lode Runner III - The Golden Labyrinth - &BurnDrvLdrun4, // Lode Runner IV - Teikoku Karano Dasshutsu - &BurnDrvLogicpro, // Logic Pro (Japan) - &BurnDrvLogicpr2, // Logic Pro 2 (Japan) - &BurnDrvmd_long, // Long (Chi) - &BurnDrvmd_lordmon, // Lord Monarch - Tokoton Sentou Densetsu (Jpn) - &BurnDrvLordgun, // Lord of Gun (USA) - &BurnDrvmd_lotr, // Lord of the Rings (Rus, Hack of Stormlord) - &BurnDrvmd_lotrgs, // Lord of the Rings - The Return of the King (Rus) - &BurnDrvLosttomb, // Lost Tomb (Easy) - &BurnDrvLosttombh, // Lost Tomb (Hard) - &BurnDrvCpsLostwrldo, // Lost Worlds (Japan Old ver.) - &BurnDrvCpsLostwrld, // Lost Worlds (Japan) - &BurnDrvLotlot, // Lot Lot - &BurnDrvmd_lotus2, // Lotus II (Euro, USA) - &BurnDrvmd_lotus2p, // Lotus II (USA, Prototype) - &BurnDrvmd_lotust, // Lotus Turbo Challenge (Euro, USA) - &BurnDrvloverboy, // Lover Boy - &BurnDrvLuctoday, // Lucky Today - &BurnDrvmd_m1abrams, // M-1 Abrams Battle Tank (Euro, USA) - &BurnDrvMiaj, // M.I.A. - Missing in Action (Japan) - &BurnDrvMia2, // M.I.A. - Missing in Action (ver. S) - &BurnDrvMia, // M.I.A. - Missing in Action (ver. T) - &BurnDrvmd_majian, // Ma Jiang Qing Ren - Ji Ma Jiang Zhi (Chi) - &BurnDrvmd_majiana, // Ma Jiang Qing Ren - Ji Ma Jiang Zhi (Chi, Alt) - &BurnDrvmd_maqiao, // Ma Qiao E Mo Ta - Devilish Mahjong Tower (Chi) - &BurnDrvMadgearj, // Mad Gear (Japan) - &BurnDrvMadgear, // Mad Gear (US) - &BurnDrvMadshark, // Mad Shark - &BurnDrvmd_madagopp, // Madagascar - Operatsiya Pingvin (Rus) - &BurnDrvmd_madagsc3, // Madagascar 3 (Rus) - &BurnDrvmd_madden94, // Madden NFL '94 (Euro, USA) - &BurnDrvmd_madden95, // Madden NFL 95 (Euro, USA) - &BurnDrvmd_madden96, // Madden NFL 96 (Euro, USA) - &BurnDrvmd_madden97, // Madden NFL 97 (Euro, USA) - &BurnDrvmd_madden98, // Madden NFL 98 (USA) - &BurnDrvmd_madoumon, // Madou Monogatari I (Jpn) - &BurnDrvsgx_granzort, // Madou Ou Granzort - &BurnDrvmd_mafia, // Mafia (Rus) - &BurnDrvmbrush, // Magic Brush - &BurnDrvMagicbub, // Magic Bubble - &BurnDrvMagicbuba, // Magic Bubble (Adult version) - &BurnDrvmd_mbubble, // Magic Bubble (Pirate) - &BurnDrvCpsMswordj, // Magic Sword (23.06.1990 Japan) - &BurnDrvCpsMswordr1, // Magic Sword - heroic fantasy (23.06.1990 other country) - &BurnDrvCpsMsword, // Magic Sword - heroic fantasy (25.07.1990 other country) - &BurnDrvCpsMswordu, // Magic Sword - heroic fantasy (25.07.1990 USA) - &BurnDrvMcatadv, // Magical Cat Adventure - &BurnDrvMcatadvj, // Magical Cat Adventure (Japan) - &BurnDrvpce_magchase, // Magical Chase - &BurnDrvtg_magchase, // Magical Chase - &BurnDrvMgcrsytlj, // Magical Crystals (Japan, 92/01/13) - &BurnDrvMgcrsytlo, // Magical Crystals (World, 91/12/10) - &BurnDrvMgcrsytl, // Magical Crystals (World, 92/01/10) - &BurnDrvMagdrop, // Magical Drop (Japan, Version 1.1, 1995.06.21) - &BurnDrvmagdrop2, // Magical Drop II - &BurnDrvmagdrop3, // Magical Drop III - &BurnDrvMagdropp, // Magical Drop Plus 1 (Japan, Version 2.1, 1995.09.12) - &BurnDrvmd_magichat, // Magical Hat no Buttobi Turbo! Daibouken (Jpn) - &BurnDrvmd_mtaruru, // Magical Taruruuto-kun (Jpn) - &BurnDrvmaglordh, // Magician Lord (NGH-005) - &BurnDrvmaglord, // Magician Lord (NGM-005) - &BurnDrvmd_magist16, // Magistr 16 (Rus) - &BurnDrvttmahjng, // Mahjong - &BurnDrvmd_mahjongc, // Mahjong Cop Ryuu - Shiro Ookami no Yabou (Jpn) - &BurnDrvMjgtaste, // Mahjong G-Taste - &BurnDrvMgakuen, // Mahjong Gakuen - &BurnDrvpce_mjgakuen, // Mahjong Gakuen - Touma Soushirou Toujou - &BurnDrvMgakuen2, // Mahjong Gakuen 2 Gakuen-chou no Fukushuu - &BurnDrvpce_mjgakmld, // Mahjong Gakuen Mild - Touma Soushirou Toujou - &BurnDrvpce_mjgakmld1, // Mahjong Gakuen Mild - Touma Soushirou Toujou (Alt) - &BurnDrvpce_mjgokusp, // Mahjong Gokuu Special - &BurnDrvpce_mjkaiser, // Mahjong Haou Den - Kaiser's Quest - &BurnDrvHotgmcki, // Mahjong Hot Gimmick Integral (Japan) - &BurnDrvMahretsu, // Mahjong Kyo Retsuden (NGM-004)(NGH-004) - &BurnDrvMjnquest, // Mahjong Quest (Japan) - &BurnDrvMjnquestb, // Mahjong Quest (No Nudity) - &BurnDrvpce_mjwars, // Mahjong Shikyaku Retsuden - Mahjong Wars - &BurnDrvMahouDai, // Mahou Daisakusen (Japan) - &BurnDrvMstadium, // Main Stadium (Japan ver. 4) - &BurnDrvpce_mikkoku, // Maison Ikkoku - &BurnDrvMajest12, // Majestic Twelve - The Space Invaders Part IV (Japan) - &BurnDrvpce_wataru, // Majin Eiyuu Den Wataru - &BurnDrvMjleague, // Major League - &BurnDrvMajtitlej, // Major Title (Japan) - &BurnDrvMajtitle, // Major Title (World) - &BurnDrvMajtitl2j, // Major Title 2 (Japan) - &BurnDrvMajtitl2, // Major Title 2 (World) - &BurnDrvMajuu, // Majuu no Ohkoku - &BurnDrvpce_makaihak, // Makai Hakken Den Shada - &BurnDrvpce_makaipri, // Makai Prince Dorabocchan - &BurnDrvMakaimuc, // Makai-Mura (Japan revision C) - &BurnDrvMakaimug, // Makai-Mura (Japan revision G) - &BurnDrvMakaimur, // Makai-Mura (Japan) - &BurnDrvmaketrax, // Make Trax (set 1) - &BurnDrvmaketrxb, // Make Trax (set 2) - &BurnDrvpce_makyoden, // Makyou Densetsu -#if defined FBA_DEBUG - &BurnDrvMakyosen, // Makyou Senshi (Japan) [Broken inputs, NOT WORKING] -#endif - &BurnDrvmd_mamono, // Mamono Hunter Youko - Dai 7 no Keishou (Jpn) - &BurnDrvMangchi, // Mang-Chi - &BurnDrvpce_maniacpw, // Maniac Pro Wres - Asu e no Tatakai - &BurnDrvManiacsp, // Maniac Square (prototype) - &BurnDrvManybloc, // Many Block - &BurnDrvmd_maouren, // Maou Renjishi (Jpn) - &BurnDrvmd_marble, // Marble Madness (Euro, USA) - &BurnDrvMarineb, // Marine Boy - &BurnDrvMariner, // Mariner - &BurnDrvmd_mario3, // Mario 3 - Vokrug Sveta (Rus) - &BurnDrvmd_mario4, // Mario 4 - Kosmicheskaya Odissyeya (Rus) - &BurnDrvmd_andretti, // Mario Andretti Racing (Euro, USA) - &BurnDrvmd_mariolh, // Mario Lemieux Hockey (Euro, USA) - &BurnDrvMarkham, // Markham - &BurnDrvmd_markou, // Marko (USA) - &BurnDrvmd_marko, // Marko's Magic Football (Euro) - &BurnDrvmd_markop, // Marko's Magic Football (Euro, Prototype) - &BurnDrvMars, // Mars - &BurnDrvCpsMarsMatrixJ, // Mars Matrix (000412 Japan) - &BurnDrvCpsMarsMatrixd, // Mars Matrix (000412 USA Phoenix Edition) - &BurnDrvCpsMarsMatrix, // Mars Matrix (000412 USA) - &BurnDrvmd_marsup, // Marsupilami (Euro) - &BurnDrvmd_marsupu, // Marsupilami (USA) - &BurnDrvmartmastc102, // Martial Masters (V102, 101, 101, China) - &BurnDrvmartmastc, // Martial Masters (V104, 102, 101, China) - &BurnDrvMartmast, // Martial Masters (V104, 102, 102, USA) - &BurnDrvmd_marvlandj, // Marvel Land (Jpn) - &BurnDrvmd_marvland, // Marvel Land (USA) - &BurnDrvCpsMsha, // Marvel Super Heroes (951024 Asia) - &BurnDrvCpsMsh, // Marvel Super Heroes (951024 Euro) - &BurnDrvCpsMshjr1, // Marvel Super Heroes (951024 Japan) - &BurnDrvCpsMshud, // Marvel Super Heroes (951024 USA Phoenix Edition) - &BurnDrvCpsMshu, // Marvel Super Heroes (951024 USA) - &BurnDrvCpsMshb, // Marvel Super Heroes (951117 Brazil) - &BurnDrvCpsMshh, // Marvel Super Heroes (951117 Hispanic) - &BurnDrvCpsMshj, // Marvel Super Heroes (951117 Japan) - &BurnDrvCpsMshvsfa1, // Marvel Super Heroes vs Street Fighter (970620 Asia) - &BurnDrvCpsMshvsfa, // Marvel Super Heroes vs Street Fighter (970625 Asia) - &BurnDrvCpsMshvsfb1, // Marvel Super Heroes vs Street Fighter (970625 Brazil) - &BurnDrvCpsMshvsf, // Marvel Super Heroes vs Street Fighter (970625 Euro) - &BurnDrvCpsMshvsfh, // Marvel Super Heroes vs Street Fighter (970625 Hispanic) - &BurnDrvCpsMshvsfj2, // Marvel Super Heroes vs Street Fighter (970625 Japan) - &BurnDrvCpsMshvsfu1d, // Marvel Super Heroes vs Street Fighter (970625 USA Phoenix Edition) - &BurnDrvCpsMshvsfu1, // Marvel Super Heroes vs Street Fighter (970625 USA) - &BurnDrvCpsMshvsfj1, // Marvel Super Heroes vs Street Fighter (970702 Japan) - &BurnDrvCpsMshvsfj, // Marvel Super Heroes vs Street Fighter (970707 Japan) - &BurnDrvCpsMshvsfb, // Marvel Super Heroes vs Street Fighter (970827 Brazil) - &BurnDrvCpsMshvsfu, // Marvel Super Heroes vs Street Fighter (970827 USA) - &BurnDrvCpsMvscur1, // Marvel vs Capcom - clash of super heroes (971222 USA) - &BurnDrvCpsMvscar1, // Marvel vs Capcom - clash of super heroes (980112 Asia) - &BurnDrvCpsMvscr1, // Marvel vs Capcom - clash of super heroes (980112 Euro) - &BurnDrvCpsMvscjr1, // Marvel vs Capcom - clash of super heroes (980112 Japan) - &BurnDrvCpsMvsca, // Marvel vs Capcom - clash of super heroes (980123 Asia) - &BurnDrvCpsMvscb, // Marvel vs Capcom - clash of super heroes (980123 Brazil) - &BurnDrvCpsMvsc, // Marvel vs Capcom - clash of super heroes (980123 Euro) - &BurnDrvCpsMvsch, // Marvel vs Capcom - clash of super heroes (980123 Hispanic) - &BurnDrvCpsMvscj, // Marvel vs Capcom - clash of super heroes (980123 Japan) - &BurnDrvCpsMvscjsing, // Marvel vs Capcom - clash of super heroes (980123 Japan, single PCB) - &BurnDrvCpsMvscud, // Marvel vs Capcom - clash of super heroes (980123 USA Phoenix Edition) - &BurnDrvCpsMvscu, // Marvel vs Capcom - clash of super heroes (980123 USA) - &BurnDrvmd_franken, // Mary Shelley's Frankenstein (USA) - &BurnDrvKamenrid, // Masked Riders Club Battle Race - &BurnDrvmd_mastermj, // Master of Monsters (Jpn) - &BurnDrvmd_masterm, // Master of Monsters (USA) - &BurnDrvMasterwj, // Master of Weapon (Japan) - &BurnDrvmd_mweapon, // Master of Weapon (Jpn) - &BurnDrvMasterwu, // Master of Weapon (US) - &BurnDrvMasterw, // Master of Weapon (World) - &BurnDrvMatchit2, // Match It II - &BurnDrvmd_maten, // Maten no Soumetsu (Jpn) - &BurnDrvmd_mathblst, // Math Blaster - Episode 1 (USA) - &BurnDrvmatrimbl, // Matrimelee / Shin Gouketsuji Ichizoku Toukon (bootleg) - &BurnDrvmatrim, // Matrimelee / Shin Gouketsuji Ichizoku Toukon (NGM-2660) (NGH-2660) - &BurnDrvMofflott, // Maze of Flott (Japan) - &BurnDrvmd_mazinsaga, // Mazin Saga (Asia) - &BurnDrvmd_mazinsagj, // Mazin Saga (Jpn, Kor) - &BurnDrvmd_mazinsagu, // Mazin Saga (USA) - &BurnDrvmd_mazinwar, // Mazin Wars (Euro) - &BurnDrvmazingerj, // Mazinger Z (Japan, ver. 94/06/27) - &BurnDrvmazinger, // Mazinger Z (World, ver. 94/06/27) - &BurnDrvmd_mcdonald, // McDonald's Treasure Land Adventure (Euro) - &BurnDrvmd_mcdonaldj, // McDonald's Treasure Land Adventure (Jpn) - &BurnDrvmd_mcdonaldjp, // McDonald's Treasure Land Adventure (Jpn, Prototype) - &BurnDrvmd_mcdonaldu, // McDonald's Treasure Land Adventure (USA) - &BurnDrvmd_medalc, // Medal City (Jpn, SegaNet) - &BurnDrvmd_meganser, // Mega Anser (Jpn) - &BurnDrvMegablstj, // Mega Blast (Japan) - &BurnDrvMegablstu, // Mega Blast (US) - &BurnDrvMegablst, // Mega Blast (World) - &BurnDrvmd_megabomb, // Mega Bomberman (Euro, Kor) - &BurnDrvmd_megabombu, // Mega Bomberman (USA) - &BurnDrvmd_megabm8, // Mega Bomberman - 8 Player Demo - &BurnDrvmd_megaga10, // Mega Games 10 (Bra) - &BurnDrvmd_megaga2, // Mega Games 2 (Euro) - &BurnDrvmd_megaga3, // Mega Games 3 (Euro, Asia) - &BurnDrvmd_megaga61, // Mega Games 6 Vol. 1 (Euro) - &BurnDrvmd_megaga62, // Mega Games 6 Vol. 2 (Euro) - &BurnDrvmd_megaga63, // Mega Games 6 Vol. 3 (Euro) - &BurnDrvmd_megaga1, // Mega Games I (Euro) - &BurnDrvCpsMegamana, // Mega Man - the power battle (951006 Asia) - &BurnDrvCpsMegaman, // Mega Man - the power battle (951006 USA) - &BurnDrvCpsMmancp2u, // Mega Man - The Power Battle (951006 USA, SAMPLE Version) - &BurnDrvmd_megaman, // Mega Man - The Wily Wars (Euro) - &BurnDrvCpsMegaman2a, // Mega Man 2 - the power fighters (960708 Asia) - &BurnDrvCpsMegamn2d, // Mega Man 2 - the power fighters (960708 USA Phoenix Edition) - &BurnDrvCpsMegaman2, // Mega Man 2 - the power fighters (960708 USA) - &BurnDrvCpsMegaman2h, // Mega Man 2 - the power fighters (960712 Hispanic) - &BurnDrvmd_megaswiv, // Mega SWIV (Euro) - &BurnDrvmd_megaswivb, // Mega SWIV (Euro, Pirate) - &BurnDrvmd_megaturr, // Mega Turrican (Euro) - &BurnDrvmd_megaturru, // Mega Turrican (USA) - &BurnDrvCpsMtwins, // Mega Twins (chiki chiki boys 900619 etc) - &BurnDrvmd_megalo1, // Mega-Lo-Mania (Euro) - &BurnDrvmd_megalo, // Mega-Lo-Mania (Euro, v1.1) - &BurnDrvmd_megalof, // Mega-Lo-Mania (Fra) - &BurnDrvmd_megaloj, // Mega-Lo-Mania (Jpn) - &BurnDrvMegadon, // Megadon - &BurnDrvmd_megamind, // MegaMind (Jpn, SegaNet) - &BurnDrvmd_meganet, // MegaNet (Bra) - &BurnDrvmd_megapanl, // MegaPanel (Jpn) - &BurnDrvmd_megatrax, // MegaTrax (Jpn) - &BurnDrvMeijinsn, // Meijinsen - &BurnDrvKikcubic, // Meikyu Jima (Japan) - &BurnDrvMeikyuh, // Meikyuu Hunter G (Japan, set 1) - &BurnDrvMeikyuha, // Meikyuu Hunter G (Japan, set 2) - &BurnDrvmd_menacer, // Menacer 6-Game Cartridge (Euro, USA) - &BurnDrvmd_menghu, // Meng Huan Shui Guo Pan - 777 Casino (Chi) - &BurnDrvCpsMercs, // Mercs (900302 etc) - &BurnDrvCpsMercsur1, // Mercs (900302 USA) - &BurnDrvCpsMercsu, // Mercs (900608 USA) - &BurnDrvmd_mercs, // Mercs (Euro, USA) ~ Senjou no Ookami II (Jpn) - &BurnDrvpce_mesopot, // Mesopotamia - &BurnDrvMetafox, // Meta Fox - &BurnDrvMetalbj, // Metal Black (Japan) - &BurnDrvMetalb, // Metal Black (World) - &BurnDrvmd_metalfng, // Metal Fangs (Jpn) - &BurnDrvmd_mgs, // Metal Gear Solid (Rus) - &BurnDrvMetlsavr, // Metal Saver - &BurnDrvmslug, // Metal Slug - Super Vehicle-001 - &BurnDrvMSlug2, // Metal Slug 2 - Super Vehicle-001/II (NGM-2410) (NGH-2410) - &BurnDrvMSlug2t, // Metal Slug 2 Turbo (NGM-9410) - &BurnDrvmslug3h, // Metal Slug 3 (NGH-2560) - &BurnDrvmslug3, // Metal Slug 3 (NGM-2560) - &BurnDrvmslug4h, // Metal Slug 4 (NGH-2630) - &BurnDrvmslug4, // Metal Slug 4 (NGM-2630) - &BurnDrvms4plus, // Metal Slug 4 Plus (bootleg) - &BurnDrvmslug5b, // Metal Slug 5 (bootleg) - &BurnDrvms5pcb, // Metal Slug 5 (JAMMA PCB) - &BurnDrvmslug5h, // Metal Slug 5 (NGH-2680) - &BurnDrvmslug5, // Metal Slug 5 (NGM-2680) - &BurnDrvms5plus, // Metal Slug 5 Plus (bootleg) - &BurnDrvmslug3b6, // Metal Slug 6 (Metal Slug 3 bootleg) - &BurnDrvMSlugX, // Metal Slug X - Super Vehicle-001 (NGM-2500)(NGH-2500) - &BurnDrvpce_metlstok, // Metal Stoker - &BurnDrvmetmqstr, // Metamoqester (International) - &BurnDrvMetrocrs, // Metro-Cross (set 1) - &BurnDrvMetrocrsa, // Metro-Cross (set 2) - &BurnDrvMWalkbl, // Michael Jackson's Moonwalker (bootleg) - &BurnDrvmd_mwalk1, // Michael Jackson's Moonwalker (World) - &BurnDrvmd_mwalk, // Michael Jackson's Moonwalker (World, Rev. A) - &BurnDrvmd_mickmack, // Mick & Mack as the Global Gladiators (Euro) - &BurnDrvmd_mickmacku, // Mick & Mack as the Global Gladiators (USA) - &BurnDrvmd_mickmackup, // Mick & Mack as the Global Gladiators (USA, Prototype) - &BurnDrvmd_mmania, // Mickey Mania - The Timeless Adventures of Mickey Mouse (Euro) - &BurnDrvmd_mmaniaj, // Mickey Mania - The Timeless Adventures of Mickey Mouse (Jpn) - &BurnDrvmd_mmaniau, // Mickey Mania - The Timeless Adventures of Mickey Mouse (USA) - &BurnDrvmd_mmaniaup, // Mickey Mania - The Timeless Adventures of Mickey Mouse (USA, Prototype) - &BurnDrvmd_mickeyuc, // Mickey's Ultimate Challenge (USA) - &BurnDrvmd_micromacc, // Micro Machines (Can) - &BurnDrvmd_micromac, // Micro Machines (Euro, USA) - &BurnDrvmd_micromacb, // Micro Machines (Euro, USA, Alt 2) - &BurnDrvmd_micromaca, // Micro Machines (Euro, USA, Alt) - &BurnDrvmd_micromc2, // Micro Machines 2 - Turbo Tournament (Euro, J-Cart) - &BurnDrvmd_micromc2a, // Micro Machines 2 - Turbo Tournament (Euro, J-Cart, Alt) - &BurnDrvmd_micromm, // Micro Machines Military (Euro, J-Cart) - &BurnDrvmd_microm96a, // Micro Machines Turbo Tournament 96 (Euro, J-Cart) - &BurnDrvmd_microm96, // Micro Machines Turbo Tournament 96 (Euro, v1.1, J-Cart) - &BurnDrvMidresj, // Midnight Resistance (Japan) - &BurnDrvmd_midresj, // Midnight Resistance (Jpn) - &BurnDrvMidresu, // Midnight Resistance (US) - &BurnDrvmd_midres, // Midnight Resistance (USA) - &BurnDrvMidres, // Midnight Resistance (World) - &BurnDrvmd_mig29, // Mig-29 Fighter Pilot (Euro) - &BurnDrvmd_mig29j, // Mig-29 Fighter Pilot (Jpn) - &BurnDrvmd_mig29u, // Mig-29 Fighter Pilot (USA) - &BurnDrvmd_mightmag, // Might and Magic - Gates to Another World (Euro, USA) - &BurnDrvmd_mightmg3, // Might and Magic III - Isles of Terra (USA, Prototype) - &BurnDrvMimonkey, // Mighty Monkey - &BurnDrvMimonscr, // Mighty Monkey (bootleg on Scramble hardware) - &BurnDrvMimonsco, // Mighty Monkey (bootleg on Super Cobra hardware) - &BurnDrvmd_mmpr, // Mighty Morphin Power Rangers (Euro) - &BurnDrvmd_mmprp6, // Mighty Morphin Power Rangers (Prototype, 19940708) - &BurnDrvmd_mmprp5, // Mighty Morphin Power Rangers (Prototype, 19940718) - &BurnDrvmd_mmprp2, // Mighty Morphin Power Rangers (Prototype, 19940809) - &BurnDrvmd_mmprp1, // Mighty Morphin Power Rangers (Prototype, 19940810) - &BurnDrvmd_mmpru, // Mighty Morphin Power Rangers (USA) - &BurnDrvmd_mmprp4, // Mighty Morphin Power Rangers (USA, Prototype, 19940804) - &BurnDrvmd_mmprp3, // Mighty Morphin Power Rangers (USA, Prototype, 19940808) - &BurnDrvmd_mmprfe, // Mighty Morphin Power Rangers - The Fighting Edition (Rus) - &BurnDrvmd_mmprtm, // Mighty Morphin Power Rangers - The Movie (Euro) - &BurnDrvmd_mmprtmu, // Mighty Morphin Power Rangers - The Movie (USA) - &BurnDrvmd_mmprtmp4, // Mighty Morphin Power Rangers - The Movie (USA, Prototype, 19950713) - &BurnDrvmd_mmprtmp3, // Mighty Morphin Power Rangers - The Movie (USA, Prototype, 19950717) - &BurnDrvmd_mmprtmp2, // Mighty Morphin Power Rangers - The Movie (USA, Prototype, 19950722) - &BurnDrvmd_mmprtmp1, // Mighty Morphin Power Rangers - The Movie (USA, Prototype, 19950724) - &BurnDrvCpsMPangr1, // Mighty! Pang (000925 Euro) - &BurnDrvCpsMPang, // Mighty! Pang (001010 Euro) - &BurnDrvCpsMPangu, // Mighty! Pang (001010 USA) - &BurnDrvCpsMPangj, // Mighty! Pang (001011 Japan) - &BurnDrvmd_ditkapf, // Mike Ditka Power Football (Euro, USA) - &BurnDrvmd_ditkapf1, // Mike Ditka Power Football (Euro, USA, Alt) - &BurnDrvtg_miltrymd, // Military Madness - &BurnDrvGtmr2a, // Mille Miglia 2: Great 1000 Miles Rally (95/04/04) - &BurnDrvGtmr2, // Mille Miglia 2: Great 1000 Miles Rally (95/05/24) - &BurnDrvminasan, // Minasanno Okagesamadesu! Daisugorokutaikai (MOM-001)(MOH-001) - &BurnDrvmd_traysiaj, // Minato no Traysia (Jpn) - &BurnDrvMinefld, // Minefield - &BurnDrvminivadr, // Minivader - &BurnDrvmd_mfpool, // Minnesota Fats - Pool Legend (USA) - &BurnDrvMsbingo, // Miss Bingo - &BurnDrvMissmw96, // Miss Mister World '96 (Nude) - &BurnDrvMspuzzle, // Miss Puzzle - &BurnDrvMspuzzlg, // Miss Puzzle (Clone of Gumbo) -#if defined FBA_DEBUG - &BurnDrvMspuzzlen, // Miss Puzzle (Nudes) [no comment, NOT WORKING] -#endif - &BurnDrvMissw96, // Miss World '96 (Nude) - &BurnDrvMrviking, // Mister Viking (315-5041) - &BurnDrvMrvikingj, // Mister Viking (315-5041, Japan) - &BurnDrvQuiz18k, // Miyasu Nonki no Quiz 18-Kin - &BurnDrvpce_mizubaku, // Mizubaku Dai Bouken - &BurnDrvMizubaku, // Mizubaku Daibouken (Japan) - &BurnDrvmd_mk5, // MK 5 - Mortal Combat - SubZero - &BurnDrvmd_mk5a, // MK 5 - Mortal Combat - SubZero (Pirate) - &BurnDrvmd_mlbpa, // MLBPA Baseball (USA) - &BurnDrvMsgundam, // Mobile Suit Gundam - &BurnDrvMsgundam1, // Mobile Suit Gundam (Japan) - &BurnDrvGundamex, // Mobile Suit Gundam EX Revue - &BurnDrvMogura, // Mogura Desse - &BurnDrvMole, // Mole Attack - &BurnDrvMomoko, // Momoko 120% - &BurnDrvpce_momogdn, // Momotarou Densetsu Gaiden Dai 1 Shuu - &BurnDrvpce_momo2, // Momotarou Densetsu II - &BurnDrvpce_momotrbo, // Momotarou Densetsu Turbo - &BurnDrvpce_momoktsg, // Momotarou Katsugeki - &BurnDrvmiexchng, // Money Puzzle Exchanger / Money Idol Exchanger - &BurnDrvmd_monopoly, // Monopoly (USA) - &BurnDrvmd_monopolyp, // Monopoly (USA, Prototype) - &BurnDrvpce_mnstprow, // Monster Pro Wres - &BurnDrvmd_mworld4, // Monster World IV (Jpn) - &BurnDrvMstworld, // Monsters World - &BurnDrvmd_monstinc, // Monsters, Inc. (Rus) - &BurnDrvMoonaln, // Moon Alien - &BurnDrvMoonal2, // Moon Alien Part 2 - &BurnDrvMoonal2b, // Moon Alien Part 2 (older version) - &BurnDrvMooncrs4, // Moon Crest - &BurnDrvMooncrsb, // Moon Cresta (bootleg set 1) - &BurnDrvMooncrs2, // Moon Cresta (bootleg set 2) - &BurnDrvMooncrs3, // Moon Cresta (bootleg set 3) - &BurnDrvMooncreg, // Moon Cresta (Electrogame S.A. Spanish bootleg) - &BurnDrvMooncrgx, // Moon Cresta (Galaxian hardware) - &BurnDrvMooncrstg, // Moon Cresta (Gremlin) - &BurnDrvMooncrstuk, // Moon Cresta (Nichibutsu UK) - &BurnDrvMooncrstuku, // Moon Cresta (Nichibutsu UK, unencrypted) - &BurnDrvMooncrstu, // Moon Cresta (Nichibutsu USA, unencrypted) - &BurnDrvMooncrst, // Moon Cresta (Nichibutsu) - &BurnDrvMooncrsto, // Moon Cresta (Nichibutsu, old rev) - &BurnDrvMooncptc, // Moon Cresta (Petaco S.A. Spanish bootleg) - &BurnDrvMoonqsr, // Moon Quasar - &BurnDrvMshuttlej2, // Moon Shuttle (Japan set 2) - &BurnDrvMshuttlej, // Moon Shuttle (Japan) - &BurnDrvMshuttle2, // Moon Shuttle (US? set 2) - &BurnDrvMshuttle, // Moon Shuttle (US?) - &BurnDrvMooncmw, // Moon War (Moon Cresta bootleg) - &BurnDrvMoonwar, // Moonwar - &BurnDrvMoonwara, // Moonwar (older) - &BurnDrvMoremore, // More More - &BurnDrvMoremorp, // More More Plus - &BurnDrvpce_moritash, // Morita Shougi PC - &BurnDrvmd_mka, // Mortal Kombat (World) - &BurnDrvmd_mk, // Mortal Kombat (World, v1.1) - &BurnDrvmd_mk3, // Mortal Kombat 3 (Euro) - &BurnDrvmd_mk3u, // Mortal Kombat 3 (USA) - &BurnDrvmd_mk2, // Mortal Kombat II (World) - &BurnDrvpce_motoroad, // Moto Roader - &BurnDrvtg_motoroad, // Moto Roader - &BurnDrvpce_motorod2, // Moto Roader II - &BurnDrvpce_motorod2a, // Moto Roader II (Alt) - &BurnDrvmrdo, // Mr. Do! - &BurnDrvmrdofix, // Mr. Do! (bugfixed) - &BurnDrvmrdoy, // Mr. Do! (prototype) - &BurnDrvmrdot, // Mr. Do! (Taito license) - &BurnDrvmrdu, // Mr. Du! - &BurnDrvMrgoemon, // Mr. Goemon (Japan) - &BurnDrvMrheli, // Mr. HELI no Dai-Bouken - &BurnDrvpce_mrheli, // Mr. Heli no Daibouken - &BurnDrvpce_mrheli1, // Mr. Heli no Daibouken (Alt) - &BurnDrvMrkougar, // Mr. Kougar - &BurnDrvMrkougb, // Mr. Kougar (bootleg set 1) - &BurnDrvMrkougb2, // Mr. Kougar (bootleg set 2) - &BurnDrvMrkougar2, // Mr. Kougar (earlier) - &BurnDrvmrlo, // Mr. Lo! - &BurnDrvmd_mrnutz, // Mr. Nutz (Euro) - &BurnDrvmd_mrnutz2, // Mr. Nutz - Hoppin' Mad (Prototype) - &BurnDrvmrtnt, // Mr. TNT - &BurnDrvmspacman, // MS Pacman - &BurnDrvmspacmab, // MS Pacman (bootleg) - &BurnDrvmspacmat, // Ms. Pac Attack - &BurnDrvmspacmanbg, // Ms. Pac-Man ('Made in Greece' bootleg) - &BurnDrvmspacmbe, // Ms. Pac-Man (bootleg, encrypted) - &BurnDrvmd_mspacman, // Ms. Pac-Man (Euro, USA) - &BurnDrvmd_mspacmanpir, // Ms. Pac-Man (Pirate, Ripped from Golden 10 in 1) - &BurnDrvmspacmnf, // Ms. Pac-Man (with speedup hack) - &BurnDrvmsheartb, // Ms. Pac-Man Heart Burn - &BurnDrvmspacpls, // Ms. Pac-Man Plus - &BurnDrvmschamps, // Ms. Pacman Champion Edition / Super Zola Pac Gal - &BurnDrvmschamp, // Ms. Pacman Champion Edition / Zola-Puc Gal - &BurnDrvrocktrv2, // MTV Rock-N-Roll Trivia (Part 2) - &BurnDrvMugsmash, // Mug Smashers - &BurnDrvmd_valisj, // Mugen Senshi Valis (Jpn) - &BurnDrvmd_muhammad, // Muhammad Ali Heavyweight Boxing (Euro) - &BurnDrvmd_muhammadu, // Muhammad Ali Heavyweight Boxing (USA) - &BurnDrvmd_muhammadup, // Muhammad Ali Heavyweight Boxing (USA, Prototype) - &BurnDrvSemibase, // MuHanSeungBu (SemiCom Baseball) (Korea) - &BurnDrvNmg5, // Multi 5 / New Multi Game 5 - &BurnDrvNmg5e, // Multi 5 / New Multi Game 5 (earlier) - &BurnDrvMultchmk, // Multi Champ (Korea) - &BurnDrvMultchmp, // Multi Champ (World) - &BurnDrvMchampdx, // Multi Champ Deluxe (ver. 0106, 06/01/2000) - &BurnDrvMchampda, // Multi Champ Deluxe (ver. 1126, 26/11/1999) - &BurnDrvCpsMbomberj, // Muscle Bomber - the body explosion (930713 Japan) -// &BurnDrvCpsMbombdje, // Muscle Bomber Duo - heat up warriors (931206 Japan E) [no comment] - &BurnDrvCpsMbombrdj, // Muscle Bomber Duo - heat up warriors (931206 Japan) -// &BurnDrvCpsMbombrda, // Muscle Bomber Duo - ultimate team battle (931206 Asia) [no comment] - &BurnDrvCpsMbombrd, // Muscle Bomber Duo - ultimate team battle (931206 etc) -// &BurnDrvCpsMbombrdh, // Muscle Bomber Duo - ultimate team battle (931206 Hispanic) [no comment] -// &BurnDrvCpsMbombrdu, // Muscle Bomber Duo - ultimate team battle (931206 USA) [no comment] - &BurnDrvmd_musha, // MUSHA - Metallic Uniframe Super Hybrid Armor (USA) - &BurnDrvmd_mushaj, // Musha Aleste - Full Metal Fighter Ellinor (Jpn) - &BurnDrvalibabab, // Mustafa and 40 Thieves (bootleg) - &BurnDrvMutantf3, // Mutant Fighter (World ver EM-3) - &BurnDrvMutantf4, // Mutant Fighter (World ver EM-4) - &BurnDrvMutantf, // Mutant Fighter (World ver EM-5) - &BurnDrvmd_mlfootb, // Mutant League Football (Euro, USA) - &BurnDrvmd_mlfootbj, // Mutant League Football (Jpn) - &BurnDrvmd_mlhockey, // Mutant League Hockey (Euro, USA) - &BurnDrvMutnat, // Mutation Nation (NGM-014)(NGH-014) - &BurnDrvMvpj, // MVP (set 1, Japan, FD1094 317-0142) - &BurnDrvMvp, // MVP (set 2, US, FD1094 317-0143) - &BurnDrvMyherok, // My Hero (Korea) - &BurnDrvMyhero, // My Hero (US, not encrypted) - &BurnDrvmystston, // Mysterious Stones - Dr. John's Adventure - &BurnDrvmyststno, // Mysterious Stones - Dr. Kick in Adventure - &BurnDrvmyststni, // Mysterious Stones - Dr. Kick in Adventure (Itisa PCB) - &BurnDrvmd_mystdefa, // Mystic Defender (Euro, USA) - &BurnDrvmd_mystdef, // Mystic Defender (Euro, USA, Rev. A) - &BurnDrvMysticrib, // Mystic Riders (bootleg?) - &BurnDrvMysticri, // Mystic Riders (World) - &BurnDrvmd_mysticf, // Mystical Fighter (USA) - &BurnDrvpce_marchen, // Märchen Maze - &BurnDrvmd_nakaf1gp, // Nakajima Satoru Kanshuu F1 Grand Prix (Jpn) - &BurnDrvmd_f1heromd, // Nakajima Satoru Kanshuu F1 Hero MD (Jpn) - &BurnDrvmd_nakaf1sl, // Nakajima Satoru Kanshuu F1 Super License (Jpn) - &BurnDrvNam1975, // NAM-1975 (NGM-001)(NGH-001) - &BurnDrvNaname, // Naname de Magic! - &BurnDrvmd_smasters, // Naomichi Ozaki no Super Masters (Jpn) - &BurnDrvpce_blodwolf, // Narazumono Sentai Butai - Bloody Wolf - &BurnDrvmd_narnia3, // Narnia 3 (Rus) - &BurnDrvmd_naruto, // Naruto (Rus) - &BurnDrvNastar, // Nastar (World) - &BurnDrvNastarw, // Nastar Warrior (US) - &BurnDrvnmouse, // Naughty Mouse (set 1) - &BurnDrvnmouseb, // Naughty Mouse (set 2) - &BurnDrvpce_naxopen, // Naxat Open - &BurnDrvpce_naxstad, // Naxat Stadium - &BurnDrvpce_nazomasq, // Nazo no Masquerade - &BurnDrvmd_nba2k, // NBA 2000 (Rus) - &BurnDrvmd_nba2k5, // NBA 2005 (Rus) - &BurnDrvmd_nbaact95, // NBA Action '95 (Euro, USA) - &BurnDrvmd_nbaact95p25, // NBA Action '95 (Prototype, 19941118) - &BurnDrvmd_nbaact95p24, // NBA Action '95 (Prototype, 19941123-A) - &BurnDrvmd_nbaact95p23, // NBA Action '95 (Prototype, 19941202-B) - &BurnDrvmd_nbaact95p22, // NBA Action '95 (Prototype, 19941209) - &BurnDrvmd_nbaact95p21, // NBA Action '95 (Prototype, 19941215) - &BurnDrvmd_nbaact95p20, // NBA Action '95 (Prototype, 19941222-A) - &BurnDrvmd_nbaact95p19, // NBA Action '95 (Prototype, 19941224-A) - &BurnDrvmd_nbaact95p18, // NBA Action '95 (Prototype, 19941229) - &BurnDrvmd_nbaact95p17, // NBA Action '95 (Prototype, 19941230) - &BurnDrvmd_nbaact95p16, // NBA Action '95 (Prototype, 19941231) - &BurnDrvmd_nbaact95p15, // NBA Action '95 (Prototype, 19950103) - &BurnDrvmd_nbaact95p14, // NBA Action '95 (Prototype, 19950108) - &BurnDrvmd_nbaact95p13, // NBA Action '95 (Prototype, 19950112) - &BurnDrvmd_nbaact95p12, // NBA Action '95 (Prototype, 19950115-A) - &BurnDrvmd_nbaact95p11, // NBA Action '95 (Prototype, 19950121) - &BurnDrvmd_nbaact95p10, // NBA Action '95 (Prototype, 19950122-B) - &BurnDrvmd_nbaact95p09, // NBA Action '95 (Prototype, 19950124-B) - &BurnDrvmd_nbaact95p08, // NBA Action '95 (Prototype, 19950127-A) - &BurnDrvmd_nbaact95p07, // NBA Action '95 (Prototype, 19950127-B) - &BurnDrvmd_nbaact95p05, // NBA Action '95 (Prototype, 19950128) - &BurnDrvmd_nbaact95p06, // NBA Action '95 (Prototype, 19950128-A) - &BurnDrvmd_nbaact95p04, // NBA Action '95 (Prototype, 19950130) - &BurnDrvmd_nbaact95p02, // NBA Action '95 (Prototype, 19950201) - &BurnDrvmd_nbaact95p03, // NBA Action '95 (Prototype, 19950201, Alt) - &BurnDrvmd_nbaact95p01, // NBA Action '95 (Prototype, 19950202) - &BurnDrvmd_nbaactp3, // NBA Action (Prototype, 19940104) - &BurnDrvmd_nbaactp2, // NBA Action (Prototype, 19940116) - &BurnDrvmd_nbaactp1, // NBA Action (Prototype, 19940127, Broken - C08 missing) - &BurnDrvmd_nbaact, // NBA Action (USA) - &BurnDrvmd_nbaallst, // NBA All-Star Challenge (Euro, USA) - &BurnDrvmd_nbahang, // NBA Hang Time (Euro) - &BurnDrvmd_nbahangu, // NBA Hang Time (USA) - &BurnDrvmd_nbajam1, // NBA Jam (Euro, USA) - &BurnDrvmd_nbajam, // NBA Jam (Euro, USA, v1.1) - &BurnDrvmd_nbajamj, // NBA Jam (Jpn) - &BurnDrvmd_nbajamjp, // NBA Jam (Jpn, Prototype) - &BurnDrvmd_nbajamte, // NBA Jam Tournament Edition (World) - &BurnDrvmd_nbajamtef, // NBA Jam Tournament Edition (World, 2002 Fix Release) - &BurnDrvmd_nbaliv95, // NBA Live 95 (Euro, USA) - &BurnDrvmd_nbaliv95k, // NBA Live 95 (Kor) - &BurnDrvmd_nbaliv96, // NBA Live 96 (Euro, USA) - &BurnDrvmd_nbaliv97, // NBA Live 97 (Euro, USA) - &BurnDrvmd_nbaliv98, // NBA Live 98 (USA) - &BurnDrvmd_bullvsblj, // NBA Playoffs - Bulls Vs Blazers (Jpn) - &BurnDrvmd_bullvsblj1, // NBA Playoffs - Bulls Vs Blazers (Jpn, Alt) - &BurnDrvmd_nbapro94, // NBA Pro Basketball '94 (Jpn) - &BurnDrvmd_bullvslaj, // NBA Pro Basketball - Bulls Vs Lakers (Jpn) - &BurnDrvmd_nbashow, // NBA Showdown '94 (Euro, USA) - &BurnDrvmd_nbashowp, // NBA Showdown '94 (USA, Prototype, Hacked) - &BurnDrvmd_ncaabask, // NCAA Final Four Basketball (USA) - &BurnDrvmd_ncaafoot, // NCAA Football (USA) - &BurnDrvpce_necromcr, // Necromancer - &BurnDrvpce_necros, // Necros no Yousai - &BurnDrvpce_nectaris, // Nectaris - &BurnDrvmd_nfsu, // Need for Speed Undercover (Rus) - &BurnDrvKuniokunb, // Nekketsu Kouha Kunio-kun (Japan bootleg) - &BurnDrvKuniokun, // Nekketsu Kouha Kunio-kun (Japan) - &BurnDrvpce_nekdodge, // Nekketsu Koukou Dodgeball Bu - PC Bangai Hen - &BurnDrvmd_neksoccr, // Nekketsu Koukou Dodgeball Bu - Soccer Hen MD (Jpn) - &BurnDrvpce_neksoccr, // Nekketsu Koukou Dodgeball Bu - Soccer PC Hen - &BurnDrvCpsNemoj, // Nemo (90 11 20 Japan) - &BurnDrvCpsNemo, // Nemo (90 11 30 etc) - &BurnDrvneo2500, // Neo 2500 Demo - &BurnDrvneobombe, // Neo Bomberman - &BurnDrvneocstlv, // Neo CastleVania Demo - &BurnDrvneodrift, // Neo Drift Out - New Technology - &BurnDrvNeoGeo, // Neo Geo [BIOS only, NOT WORKING] - &BurnDrvneocdz, // Neo Geo CDZ system - &BurnDrvNeoGeoMVS, // Neo Geo MVS system - &BurnDrvneomrdo, // Neo Mr. Do! - &BurnDrvneonopon, // Neo No Panepon (beta) - &BurnDrvneoponga, // Neo Pong (ver 1.0) - &BurnDrvneopong, // Neo Pong (ver 1.1) - &BurnDrvsyscheck, // Neo System Check (ver 1.0b) - &BurnDrvneothndr, // Neo Thunder - &BurnDrvturfmast, // Neo Turf Masters / Big Tournament Golf - &BurnDrvNeocup98, // Neo-Geo Cup '98 - The Road to the Victory - &BurnDrvneotet, // NeoGeo 2-Player Tetris - &BurnDrvneo3ddmo, // NeoGeo 3D! Demo - &BurnDrvpce_neutopia, // Neutopia - &BurnDrvtg_neutopia, // Neutopia - &BurnDrvpce_neutopi2, // Neutopia II - &BurnDrvtg_neutopi2, // Neutopia II - &BurnDrvmd_n3dgdevi, // New 3D Golf Simulation - Devil's Course (Jpn) - &BurnDrvmd_n3dgaugu, // New 3D Golf Simulation - Harukanaru Augusta (Jpn) - &BurnDrvmd_n3dgpebb, // New 3D Golf Simulation - Pebble Beach no Hatou (Jpn) - &BurnDrvmd_n3dgwaia, // New 3D Golf Simulation - Waialae no Kiseki (Jpn) - &BurnDrvtg_advislnd, // New Adventure Island - &BurnDrvNewapunk, // New Atomic Punk - Global Quest (US) - &BurnDrvNewfant, // New Fantasia - &BurnDrvNewfanta, // New Fantasia (set 2) - &BurnDrvmd_newhoriz, // New Horizons (USA) - &BurnDrvnewpuckx, // New Puck-X - &BurnDrvNrallyx, // New Rally X - &BurnDrvNewsin7, // New Sinbad 7 - &BurnDrvmd_newmanh, // Newman Haas IndyCar Featuring Nigel Mansell ~ Nigel Mansell Indy Car (World) - &BurnDrvnewpuc2, // Newpuc2 - &BurnDrvnewpuc2b, // Newpuc2b - &BurnDrvNews, // News (set 1) - &BurnDrvNewsa, // News (set 2) - &BurnDrvmd_nfl95, // NFL '95 (Euro, USA) - &BurnDrvmd_nfl95p21, // NFL '95 (Prototype, 19940801) - &BurnDrvmd_nfl95p20, // NFL '95 (Prototype, 19940805) - &BurnDrvmd_nfl95p19, // NFL '95 (Prototype, 19940810) - &BurnDrvmd_nfl95p18, // NFL '95 (Prototype, 19940812) - &BurnDrvmd_nfl95p17, // NFL '95 (Prototype, 19940812, Alt) - &BurnDrvmd_nfl95p15, // NFL '95 (Prototype, 19940817) - &BurnDrvmd_nfl95p16, // NFL '95 (Prototype, 19940817-B) - &BurnDrvmd_nfl95p14, // NFL '95 (Prototype, 19940822) - &BurnDrvmd_nfl95p13, // NFL '95 (Prototype, 19940830) - &BurnDrvmd_nfl95p12, // NFL '95 (Prototype, 19940831) - &BurnDrvmd_nfl95p11, // NFL '95 (Prototype, 19940901) - &BurnDrvmd_nfl95p10, // NFL '95 (Prototype, 19940902) - &BurnDrvmd_nfl95p09, // NFL '95 (Prototype, 19940904) - &BurnDrvmd_nfl95p07, // NFL '95 (Prototype, 19940905) - &BurnDrvmd_nfl95p08, // NFL '95 (Prototype, 19940905-B) - &BurnDrvmd_nfl95p06, // NFL '95 (Prototype, 19940906) - &BurnDrvmd_nfl95p05, // NFL '95 (Prototype, 19940907) - &BurnDrvmd_nfl95p04, // NFL '95 (Prototype, 19940908) - &BurnDrvmd_nfl95p03, // NFL '95 (Prototype, 19940909) - &BurnDrvmd_nfl95p01, // NFL '95 (Prototype, 19940911) - &BurnDrvmd_nfl95p02, // NFL '95 (Prototype, 19940911-B) - &BurnDrvmd_nfl98, // NFL 98 (USA) - &BurnDrvmd_nfl94j, // NFL Football '94 Starring Joe Montana (Jpn) - &BurnDrvmd_nfl94, // NFL Football '94 Starring Joe Montana (USA) - &BurnDrvmd_nflqb, // NFL Quarterback Club (World) - &BurnDrvmd_nflqb96, // NFL Quarterback Club 96 (Euro, USA) - &BurnDrvmd_nflsport, // NFL Sports Talk Football '93 Starring Joe Montana (Euro, USA) - &BurnDrvngem2k, // NGEM2K (beta 2006-01-18) - &BurnDrvngftdemo, // NGF Transparency Demo - &BurnDrvpce_nhktaidr, // NHK Taiga Drama - Taiheiki - &BurnDrvmd_nhktaidr, // NHK Taiga Drama - Taiheiki (Jpn) - &BurnDrvmd_nhl94, // NHL '94 (Euro, USA) - &BurnDrvmd_nhl95, // NHL 95 (Euro, USA) - &BurnDrvmd_nhl96, // NHL 96 (Euro, USA) - &BurnDrvmd_nhl97, // NHL 97 (Euro, USA) - &BurnDrvmd_nhl98, // NHL 98 (USA) - &BurnDrvmd_nhlasp16, // NHL All-Star Hockey '95 (Prototype, 19940914) - &BurnDrvmd_nhlasp15, // NHL All-Star Hockey '95 (Prototype, 19940929) - &BurnDrvmd_nhlasp14, // NHL All-Star Hockey '95 (Prototype, 19941001) - &BurnDrvmd_nhlasp13, // NHL All-Star Hockey '95 (Prototype, 19941021) - &BurnDrvmd_nhlasp12, // NHL All-Star Hockey '95 (Prototype, 19941107) - &BurnDrvmd_nhlasp11, // NHL All-Star Hockey '95 (Prototype, 19941109) - &BurnDrvmd_nhlasp10, // NHL All-Star Hockey '95 (Prototype, 19941119) - &BurnDrvmd_nhlasp09, // NHL All-Star Hockey '95 (Prototype, 19941121) - &BurnDrvmd_nhlasp08, // NHL All-Star Hockey '95 (Prototype, 19941122) - &BurnDrvmd_nhlasp07, // NHL All-Star Hockey '95 (Prototype, 19941123) - &BurnDrvmd_nhlasp06, // NHL All-Star Hockey '95 (Prototype, 19941127) - &BurnDrvmd_nhlasp05, // NHL All-Star Hockey '95 (Prototype, 19941128) - &BurnDrvmd_nhlasp04, // NHL All-Star Hockey '95 (Prototype, 19941129) - &BurnDrvmd_nhlasp02, // NHL All-Star Hockey '95 (Prototype, 19941201) - &BurnDrvmd_nhlasp03, // NHL All-Star Hockey '95 (Prototype, 19941201-B) - &BurnDrvmd_nhlasp01, // NHL All-Star Hockey '95 (Prototype, 19941202) - &BurnDrvmd_nhlas, // NHL All-Star Hockey '95 (USA) - &BurnDrvmd_nhl, // NHL Hockey (USA) - &BurnDrvmd_nhlpa2k3, // NHLPA 2003 (Rus) - &BurnDrvmd_nhlpa93a, // NHLPA Hockey 93 (Euro, USA) - &BurnDrvmd_nhlpa93, // NHLPA Hockey 93 (Euro, USA, v1.1) - &BurnDrvmd_mansell, // Nigel Mansell's World Championship Racing (Euro) - &BurnDrvmd_mansellu, // Nigel Mansell's World Championship Racing (USA) - &BurnDrvtg_nightcr, // Night Creatures - &BurnDrvNightstrj, // Night Striker (Japan) - &BurnDrvNightstru, // Night Striker (US) - &BurnDrvNightstr, // Night Striker (World) - &BurnDrvCpsNwarra, // Night Warriors - darkstalkers' revenge (950302 Asia) - &BurnDrvCpsNwarr, // Night Warriors - darkstalkers' revenge (950316 Euro) - &BurnDrvCpsNwarrb, // Night Warriors - darkstalkers' revenge (950403 Brazil) - &BurnDrvCpsNwarrh, // Night Warriors - darkstalkers' revenge (950403 Hispanic) - &BurnDrvCpsNwarrud, // Night Warriors - darkstalkers' revenge (950406 USA Phoenix Edition) - &BurnDrvCpsNwarru, // Night Warriors - darkstalkers' revenge (950406 USA) - &BurnDrvmd_ncirc, // Nightmare Circus (Bra) - &BurnDrvmd_ncirc1, // Nightmare Circus (Bra, Alt) - &BurnDrvmd_ncircp, // Nightmare Circus (Prototype) - &BurnDrvnitd, // Nightmare in the Dark - &BurnDrvnitdbl, // Nightmare in the Dark (bootleg) - &BurnDrvmd_nikkan, // Nikkan Sports Pro Yakyuu Van (Jpn) - &BurnDrvNinja, // Ninja (315-5102) -#if defined FBA_DEBUG - &BurnDrvNbbatmanu, // Ninja Baseball Batman (US) [Imperfect sound and graphics, NOT WORKING] -#endif - &BurnDrvmd_ninjab, // Ninja Burai Densetsu (Jpn) - &BurnDrvncombath, // Ninja Combat (NGH-009) - &BurnDrvncombat, // Ninja Combat (NGM-009) - &BurnDrvncommand, // Ninja Commando - &BurnDrvmd_ngaiden, // Ninja Gaiden (Jpn, Prototype) - &BurnDrvGaiden, // Ninja Gaiden (US) - &BurnDrvninjamas, // Ninja Master's - haoh-ninpo-cho - &BurnDrvNprinces, // Ninja Princess (315-5051, 64k Ver. bootleg?) - &BurnDrvNprincesb, // Ninja Princess (315-5051?, 128k Ver. bootleg?) - &BurnDrvNprinceso, // Ninja Princess (315-5098, 128k Ver.) - &BurnDrvNprincesu, // Ninja Princess (64k Ver. not encrypted) - &BurnDrvpce_nryukend, // Ninja Ryukenden - &BurnDrvRyukendn, // Ninja Ryukenden (Japan, set 1) - &BurnDrvRyukenda, // Ninja Ryukenden (Japan, set 2) - &BurnDrvNspirit, // Ninja Spirit - &BurnDrvtg_nspirit, // Ninja Spirit - &BurnDrvNitrobal, // Nitro Ball (US) - &BurnDrvmd_noescape, // No Escape (USA) - &BurnDrvNob, // Noboranka (Japan) [no comment, NOT WORKING] - &BurnDrvNobb, // Noboranka (Japan, bootleg) - &BurnDrvmd_nobubufu, // Nobunaga no Yabou - Bushou Fuuunroku (Jpn) - &BurnDrvmd_nobuhao, // Nobunaga no Yabou - Haouden (Jpn) - &BurnDrvmd_nobuzenk, // Nobunaga no Yabou - Zenkokuban (Jpn) - &BurnDrvmd_nobuamb, // Nobunaga's Ambition (USA) - &BurnDrvmd_normy, // Normy's Beach Babe-O-Rama (Euro, USA) - &BurnDrvNost, // Nostradamus - &BurnDrvNostj, // Nostradamus (Japan) - &BurnDrvNostk, // Nostradamus (Korea) - &BurnDrvNouryoku, // Nouryoku Koujou Iinkai - &BurnDrvpce_oboccha, // Obocchama-kun - &BurnDrvOhmygod, // Oh My God! - &BurnDrvOisipuzl, // Oishii Puzzle Ha Irimasenka - &BurnDrvmd_olympgld, // Olympic Gold (Euro) - &BurnDrvmd_olympgldj, // Olympic Gold (Jpn, Kor) - &BurnDrvmd_olympgldu, // Olympic Gold (USA) - &BurnDrvmd_olympgldu1, // Olympic Gold (USA, Alt) - &BurnDrvmd_olympsum, // Olympic Summer Games (Euro, USA) - &BurnDrvOmega, // Omega - &BurnDrvOmni, // Omni - &BurnDrvmd_ondal, // On Dal Jang Goon (Kor) - &BurnDrvnmaster, // Oni - The Ninja Master (Japan) - &BurnDrvOnna34ro, // Onna Sansirou - Typhoon Gal (set 1) - &BurnDrvOnna34ra, // Onna Sansirou - Typhoon Gal (set 2) - &BurnDrvmd_onslau, // Onslaught (Euro, USA) - &BurnDrvOpwolfb, // Operation Bear - &BurnDrvmd_opeurope, // Operation Europe - Path to Victory 1939-45 (USA) - &BurnDrvOthunderj, // Operation Thunderbolt (Japan) - &BurnDrvOthunderu, // Operation Thunderbolt (US) - &BurnDrvOthunderuo, // Operation Thunderbolt (US, older) - &BurnDrvOthunder, // Operation Thunderbolt (World) - &BurnDrvpce_opwolf, // Operation Wolf - &BurnDrvOpwolfj, // Operation Wolf (Japan) - &BurnDrvOpwolfu, // Operation Wolf (US) - &BurnDrvOpwolf, // Operation Wolf (World, set 1) - &BurnDrvOpwolfa, // Operation Wolf (World, set 2) - &BurnDrvOpwolf3u, // Operation Wolf 3 (US) - &BurnDrvOpwolf3, // Operation Wolf 3 (World) - &BurnDrvOrbitron, // Orbitron - &BurnDrvOrbs, // Orbs (10/7/94 prototype?) - &BurnDrvtg_griffon, // Order of the Griffon - &BurnDrvtg_ordyne, // Ordyne - &BurnDrvpce_ordyne, // Ordyne - &BurnDrvOrlegend105k, // Oriental Legend (V105, Korea) - &BurnDrvOrlegend111c, // Oriental Legend - Xi Yo Gi Shi Re Zuang (V111, China) - &BurnDrvOrlegend112ca, // Oriental Legend - Xi Yo Gi Shi Re Zuang (V112 alt, China) - &BurnDrvOrlegend112e, // Oriental Legend - Xi Yo Gi Shi Re Zuang (V112) - &BurnDrvOrlegend112c, // Oriental Legend - Xi Yo Gi Shi Re Zuang (V112, China) - &BurnDrvOrlegend, // Oriental Legend - Xi Yo Gi Shi Re Zuang (V126) - &BurnDrvOlds100a, // Oriental Legend Special - Xi Yo Gi Shi Re Zuang Super (V100 alt) - &BurnDrvOlds100, // Oriental Legend Special - Xi Yo Gi Shi Re Zuang Super (V100) - &BurnDrvOlds103t, // Oriental Legend Special - Xi Yo Gi Shi Re Zuang Super (V103, China, Tencent) (unprotected) - &BurnDrvoldsplus, // Oriental Legend Special Plus / Xi You Shi E Zhuan Super Plus (ver. 205) - &BurnDrvOlds, // Oriental Legend Super (V101, Korea) - &BurnDrvOsman, // Osman (World) - &BurnDrvmd_osomatsu, // Osomatsu-kun Hachamecha Gekijou (Jpn) - &BurnDrvpce_outlive, // Out Live - &BurnDrvmd_ootwp, // Out of this World (Prototype) - &BurnDrvmd_ootw, // Out of This World (USA) - &BurnDrvpce_outrun, // Out Run - &BurnDrvOutrunb, // Out Run (bootleg) - &BurnDrvOutrundx, // Out Run (deluxe sitdown) - &BurnDrvOutruno, // Out Run (sitdown/upright) - &BurnDrvOutrunra, // Out Run (sitdown/upright, Rev A) - &BurnDrvOutrun, // Out Run (sitdown/upright, Rev B) - &BurnDrvOutZone, // Out Zone (set 1) - &BurnDrvOutZonea, // Out Zone (set 2) - &BurnDrvOutZoneb, // Out Zone (set 3, prototype?) - &BurnDrvOutZonec, // Out Zone (set 4) - &BurnDrvOutZoned, // Out Zone (set 5) - &BurnDrvmd_outlandr, // Outlander (Euro) - &BurnDrvmd_outlandru, // Outlander (USA) - &BurnDrvmd_outrun, // OutRun (Euro, USA) - &BurnDrvmd_outrunj, // OutRun (Jpn) - &BurnDrvmd_outr2019, // OutRun 2019 (Euro) - &BurnDrvmd_outr2019j, // OutRun 2019 (Jpn) - &BurnDrvmd_outr2019u, // OutRun 2019 (USA) - &BurnDrvmd_outr2019up, // OutRun 2019 (USA, Prototype) - &BurnDrvmd_orunnersj, // OutRunners (Jpn) - &BurnDrvmd_orunners, // OutRunners (USA) - &BurnDrvovertop, // Over Top - &BurnDrvpce_override, // Override - &BurnDrvOzon1, // Ozon I - &BurnDrvpce_p47, // P-47 - The Freedom Fighter - &BurnDrvPgemeni, // P-GeMeni (060123) - &BurnDrvpow, // P.O.W. - Prisoners of War (US version 1) - &BurnDrvmd_pto, // P.T.O. - Pacific Theater of Operations (USA) - &BurnDrvmd_pacattak, // Pac-Attack (USA) - &BurnDrvpacgal, // Pac-Gal - &BurnDrvtg_pacland, // Pac-Land - &BurnDrvpce_pacland, // Pac-land - &BurnDrvPaclandj, // Pac-Land (Japan new) - &BurnDrvPaclandjo, // Pac-Land (Japan old) - &BurnDrvPaclandjo2, // Pac-Land (Japan older) - &BurnDrvPaclandm, // Pac-Land (Midway) - &BurnDrvPacland, // Pac-Land (World) - &BurnDrvPacmanbl, // Pac-Man (Galaxian hardware, set 1) - &BurnDrvPacmanbla, // Pac-Man (Galaxian hardware, set 2) - &BurnDrvpacheart, // Pac-Man (Hearts) - &BurnDrvpacman, // Pac-Man (Midway) - &BurnDrvpacmod, // Pac-Man (Midway, harder) - &BurnDrvpacmanf, // Pac-Man (Midway, with speedup hack) - &BurnDrvmd_pacman2, // Pac-Man 2 - The New Adventures (USA) - &BurnDrvpacplus, // Pac-Man Plus - &BurnDrvmd_pacmania, // Pac-Mania (Euro, USA) - &BurnDrvmd_pacpanic, // Pac-Panic (Euro) - &BurnDrvmd_pachinko, // Pachinko Kuunyan (Jpn) - &BurnDrvpce_pachikun, // Pachio Kun - Juuban Shoubu - &BurnDrvpacuman, // Pacu-Man (Spanish bootleg of Puck Man) - &BurnDrvpaddle2, // Paddle 2 (bootleg on Block hardware) - &BurnDrvmd_paddlegnk, // Paddle Fighter (Jpn, Game no Kandume MegaCD Rip) - &BurnDrvmd_paddle, // Paddle Fighter (Jpn, SegaNet) - &BurnDrvSamSho4k, // Pae Wang Jeon Seol / Legend of a Warrior (Korean censored Samurai Shodown IV) - &BurnDrvpaintrlr, // Paint Roller - &BurnDrvPairlove, // Pairs Love - &BurnDrvPajaroes, // Pajaro del Espacio (Spanish bootleg of UniWar S) - &BurnDrvPangb, // Pang (bootleg, set 1) - &BurnDrvPangbold, // Pang (bootleg, set 2) - &BurnDrvPangb2, // Pang (bootleg, set 4) - &BurnDrvPang, // Pang (World) - &BurnDrvPangpang, // Pang Pang - &BurnDrvCpsPang3r1, // Pang! 3 (950511 Euro) - &BurnDrvCpsPang3r1a, // Pang! 3 (950511 Euro, alt) - &BurnDrvCpsPang3, // Pang! 3 (950601 Euro) - &BurnDrvCpsPang3b, // Pang! 3 (bootleg set 1, 950511 Euro) - &BurnDrvCpsPang3b2, // Pang! 3 (bootleg set 2, 950511 Euro) - &BurnDrvCpsPang3b3, // Pang! 3 (bootleg set 3, 950601 Euro) - &BurnDrvCpsPang3j, // Pang! 3: Kaitou Tachi no Karei na Gogo (950511 Japan) - &BurnDrvpanicbom, // Panic Bomber - &BurnDrvmd_pcotton, // Panorama Cotton (Jpn) - &BurnDrvtg_panzakb, // Panza Kick Boxing - &BurnDrvPaprazzi, // Paparazzi - &BurnDrvmd_paperboy, // Paperboy (Euro, USA) - &BurnDrvmd_paperboyj, // Paperboy (Jpn) - &BurnDrvmd_paperbo2, // Paperboy 2 (Euro, USA) - &BurnDrvpce_paranoia, // Paranoia - &BurnDrvpce_parasol, // Parasol Stars - The Story of Bubble Bobble III - &BurnDrvtg_parasol, // Parasol Stars - The Story of Bubble Bobble III - &BurnDrvParodiusa, // Parodius DA! (Asia) - &BurnDrvParodiusj, // Parodius DA! (Japan) - &BurnDrvParodius, // Parodius DA! (World, set 1) - &BurnDrvParodiuse, // Parodius DA! (World, set 2) - &BurnDrvpce_parodius, // Parodius da! - Shinwa Kara Owarai He - &BurnDrvmd_partyq, // Party Quiz Mega Q (Jpn) - &BurnDrvPrtytime, // Party Time: Gonta the Diver II / Ganbare! Gonta!! 2 (World Release) - &BurnDrvPpchamp, // Pasha Pasha Champ Mini Game Festival - &BurnDrvPass, // Pass -#if defined FBA_DEBUG - &BurnDrvPassshtb, // Passing Shot (bootleg, 2 Players) [no comment] -#endif - &BurnDrvPassshtj, // Passing Shot (Japan, 4 Players, FD1094 317-0070) - &BurnDrvPasssht16a, // Passing Shot (Japan, 4 Players, System 16A, FD1094 317-0071) - &BurnDrvPasssht, // Passing Shot (World, 2 Players, FD1094 317-0080) - &BurnDrvPassshta, // Passing Shot (World, 4 Players, FD1094 317-0074) - &BurnDrvmd_patriley, // Pat Riley Basketball (USA) -#if defined FBA_DEBUG - &BurnDrvpce_pcdenja, // PC Denjin - Punkic Cyborgs (Alt) [no comment, NOT WORKING] -#endif - &BurnDrvpce_pcgenj, // PC Genjin - Pithecanthropus Computerurus - &BurnDrvpce_pcgenja, // PC Genjin - Pithecanthropus Computerurus (Alt) - &BurnDrvpce_pcgenj2, // PC Genjin 2 - Pithecanthropus Computerurus - &BurnDrvpce_pcgenj3, // PC Genjin 3 - Pithecanthropus Computerurus - &BurnDrvpce_pcgenj3t, // PC Genjin 3 - Pithecanthropus Computerurus (Taikenban) - &BurnDrvpce_pcpachi, // PC Pachi-slot - &BurnDrvmd_pebble, // Pebble Beach Golf Links (Euro) - &BurnDrvmd_pebbleu, // Pebble Beach Golf Links (USA) - &BurnDrvmd_pele, // Pele! (Euro, USA) - &BurnDrvmd_pele2, // Pele's World Tournament Soccer (Euro, USA) - &BurnDrvpengob, // Pengo (bootleg) - &BurnDrvpengo, // Pengo (set 1 rev c) - &BurnDrvpengo2u, // Pengo (set 2 not encrypted) - &BurnDrvpengo2, // Pengo (set 2) - &BurnDrvpengo3u, // Pengo (set 3 not encrypted) - &BurnDrvpengo4, // Pengo (set 4) - &BurnDrvPenbros, // Penguin Brothers (Japan) - &BurnDrvpkunwarj, // Penguin-Kun Wars (Japan) - &BurnDrvpkunwar, // Penguin-Kun Wars (US) - &BurnDrvpenta, // Penta - &BurnDrvmd_ppengo, // Pepenga Pengo (Jpn) - &BurnDrvPsoldier, // Perfect Soldiers (Japan) - &BurnDrvPestplce, // Pest Place - &BurnDrvmd_sampra96, // Pete Sampras Tennis '96 (Euro, J-Cart) - &BurnDrvmd_sampras, // Pete Sampras Tennis (Euro, USA, J-Cart) - &BurnDrvmd_sampras2, // Pete Sampras Tennis (Euro, USA, J-Cart, Alt 2) - &BurnDrvmd_sampras1, // Pete Sampras Tennis (Euro, USA, J-Cart, Alt) - &BurnDrvPpan, // Peter Pan (bootleg of Hook) - &BurnDrvmd_pgaeuro, // PGA European Tour (Euro, USA) - &BurnDrvmd_pga96, // PGA Tour 96 (Euro, USA) - &BurnDrvmd_pgaa, // PGA Tour Golf (Euro, USA, v1.1) - &BurnDrvmd_pga, // PGA Tour Golf (Euro, USA, v1.2) - &BurnDrvmd_pga2a, // PGA Tour Golf II (Euro, USA) - &BurnDrvmd_pga2, // PGA Tour Golf II (Euro, USA, v1.1) - &BurnDrvmd_pga2j, // PGA Tour Golf II (Jpn) - &BurnDrvmd_pga3, // PGA Tour Golf III (Euro, USA) - &BurnDrvPgm, // PGM (Polygame Master) System BIOS [BIOS only, NOT WORKING] - &BurnDrvmd_pstar4j, // Phantasy Star - Sennenki no Owari ni (Jpn) - &BurnDrvmd_pstar4, // Phantasy Star - The End of the Millennium (Euro) - &BurnDrvmd_pstar4p5, // Phantasy Star - The End of the Millennium (Prototype, 19940530) - &BurnDrvmd_pstar4p4, // Phantasy Star - The End of the Millennium (Prototype, 19940608) - &BurnDrvmd_pstar4p3, // Phantasy Star - The End of the Millennium (Prototype, 19940815) - &BurnDrvmd_pstar4p2, // Phantasy Star - The End of the Millennium (Prototype, 19941027) - &BurnDrvmd_pstar4p1, // Phantasy Star - The End of the Millennium (Prototype, 19941107) - &BurnDrvmd_pstar4u, // Phantasy Star - The End of the Millennium (USA) - &BurnDrvmd_pstar2br, // Phantasy Star II (Bra) - &BurnDrvmd_pstar2a, // Phantasy Star II (Euro, USA) - &BurnDrvmd_pstar2, // Phantasy Star II (Euro, USA, Rev. A) - &BurnDrvmd_ps2aa, // Phantasy Star II - Amia's Adventure (Jpn, SegaNet) - &BurnDrvmd_ps2ab, // Phantasy Star II - Anne's Adventure (Jpn, SegaNet) - &BurnDrvmd_ps2ac, // Phantasy Star II - Huey's Adventure (Jpn, SegaNet) - &BurnDrvmd_pstar2j, // Phantasy Star II - Kaerazaru Toki no Owari ni (Jpn) - &BurnDrvmd_ps2ad, // Phantasy Star II - Kinds's Adventure (Jpn, SegaNet) - &BurnDrvmd_ps2ae, // Phantasy Star II - Nei's Adventure (Jpn, SegaNet) - &BurnDrvmd_ps2af, // Phantasy Star II - Rudger's Adventure (Jpn, SegaNet) - &BurnDrvmd_ps2ag, // Phantasy Star II - Shilka's Adventure (Jpn, SegaNet) - &BurnDrvmd_ps2ah, // Phantasy Star II - Yushis's Adventure (Jpn, SegaNet) - &BurnDrvmd_pstar3br, // Phantasy Star III - Generations of Doom (Bra) - &BurnDrvmd_pstar3, // Phantasy Star III - Generations of Doom (Euro, USA, Kor) - &BurnDrvmd_pstar3j, // Phantasy Star III - Toki no Keishousha (Jpn) - &BurnDrvmd_phantom, // Phantom 2040 (Euro) - &BurnDrvmd_phantomu, // Phantom 2040 (USA) - &BurnDrvmd_phelios, // Phelios (Euro) - &BurnDrvmd_pheliosj, // Phelios (Jpn) - &BurnDrvmd_pheliosu, // Phelios (USA) - &BurnDrvPhoenxp2, // Phoenix Part 2 - &BurnDrvPhotoy2k104, // Photo Y2K / Real and Fake (V104) - &BurnDrvPhotoy2k, // Photo Y2K / Real and Fake (V105) -#if defined FBA_DEBUG - &BurnDrvPgm3in1, // Photo Y2K 2 (3-in-1) [Incomplete dump, NOT WORKING] - &BurnDrvPy2k2, // Photo Y2K 2 [Incomplete dump, NOT WORKING] -#endif - &BurnDrvmd_pink, // Pink Goes to Hollywood (Euro, USA) - &BurnDrvmd_pinkp, // Pink Goes to Hollywood (USA, Prototype) - &BurnDrvmd_pinoc, // Pinocchio (Euro) - &BurnDrvmd_pinocu, // Pinocchio (USA) - &BurnDrvPipibibsp, // Pipi & Bibis / Whoopee!! (prototype) - &BurnDrvWhoopee, // Pipi & Bibis / Whoopee!! (Teki Paki hardware) - &BurnDrvPipibibs, // Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 1) - &BurnDrvPipibibsa, // Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 2) - &BurnDrvpiranha, // Piranha - &BurnDrvpiranhah, // Piranha (hack) - &BurnDrvpiranhao, // Piranha (older) - &BurnDrvhigemaru, // Pirate Ship Higemaru - &BurnDrvPirates, // Pirates - &BurnDrvmd_pcarib, // Pirates of the Caribbean (Rus) - &BurnDrvmd_pirates, // Pirates! Gold (USA) - &BurnDrvmd_piratesp, // Pirates! Gold (USA, Prototype) - &BurnDrvmd_pcarib2, // Piraty Karibskogo Morya - Na Strannyh Beregah ~ Pirates of the Caribbean - On Stranger Tides (Rus) - &BurnDrvPisces, // Pisces - &BurnDrvPiscesb, // Pisces (bootleg) - &BurnDrvmd_pitfight1, // Pit-Fighter (World) - &BurnDrvmd_pitfight, // Pit-Fighter (World, Rev. A) - &BurnDrvmd_pitfall, // Pitfall - The Mayan Adventure (Euro) - &BurnDrvmd_pitfallu, // Pitfall - The Mayan Adventure (USA) - &BurnDrvPitfall2, // Pitfall II (315-5093) - &BurnDrvPitfall2a, // Pitfall II (315-5093, Flicky Conversion) - &BurnDrvPitfall2u, // Pitfall II (not encrypted) - &BurnDrvpgoal, // Pleasure Goal / Futsal - 5 on 5 Mini Soccer (NGM-219) - &BurnDrvPlumppop, // Plump Pop (Japan) - &BurnDrvCpsPnickj, // Pnickies (940608 Japan) -// &BurnDrvCpsPnicku, // Pnickies (940608 USA) [no comment] - &BurnDrvmd_pocahont, // Pocahontas (Euro) - &BurnDrvmd_pocahontu, // Pocahontas (USA) - &BurnDrvpnyaa, // Pochi and Nyaa - &BurnDrvCpsPfghtj, // Pocket Fighter (970904 Japan) - &BurnDrvPktgaldx, // Pocket Gal Deluxe (Euro v3.00) -#if defined FBA_DEBUG - &BurnDrvPktgaldxb, // Pocket Gal Deluxe (Euro v3.00, bootleg) [no comment, NOT WORKING] -#endif - &BurnDrvPktgaldxj, // Pocket Gal Deluxe (Japan v3.00) - &BurnDrvmd_pokemon, // Pocket Monsters - &BurnDrvmd_pokemona, // Pocket Monsters (Alt) - &BurnDrvmd_pokemon2, // Pocket Monsters 2 - &BurnDrvmd_pokecd, // Pokemon Crazy Drummer - &BurnDrvmd_pokecda, // Pokemon Crazy Drummer (Alt) - &BurnDrvmd_pokestad, // Pokemon Stadium - &BurnDrvPkladies, // Poker Ladies - &BurnDrvPkladiesla, // Poker Ladies (Leprechaun ver. 401) - &BurnDrvPkladiesl, // Poker Ladies (Leprechaun ver. 510) - &BurnDrvpoknight, // Poker Night - &BurnDrvPompingw, // Pomping World (Japan) - &BurnDrvponpoko, // Ponpoko - &BurnDrvponpokov, // Ponpoko (Venture Line) - &BurnDrvPootan, // Pootan - &BurnDrvPooyan, // Pooyan - &BurnDrvPooyans, // Pooyan (Stern) - &BurnDrvpopbounc, // Pop 'n Bounce / Gapporin - &BurnDrvPopspops, // Pop's Pop's - &BurnDrvpopeyeman, // Popeye-Man - &BurnDrvpce_populous, // Populous - &BurnDrvpce_populous1, // Populous (Alt) - &BurnDrvmd_populous, // Populous (Euro) - &BurnDrvmd_populousj, // Populous (Jpn) - &BurnDrvmd_populousu, // Populous (USA) - &BurnDrvPorky, // Porky - &BurnDrvPorter, // Port Man (bootleg on Moon Cresta hardware) -#if defined FBA_DEBUG - &BurnDrvPoundforj, // Pound for Pound (Japan) [no comment, NOT WORKING] - &BurnDrvPoundforu, // Pound for Pound (US) [no comment, NOT WORKING] - &BurnDrvPoundfor, // Pound for Pound (World) [no comment, NOT WORKING] -#endif - &BurnDrvmd_powerath, // Power Athlete (Jpn, Kor) - &BurnDrvpce_pdrift, // Power Drift - &BurnDrvpce_pdrift1, // Power Drift (Alt) - &BurnDrvPdriftj, // Power Drift (Japan) - &BurnDrvPdrifta, // Power Drift (World) - &BurnDrvPdrifte, // Power Drift (World, Earlier) - &BurnDrvPdrift, // Power Drift (World, Rev A) - &BurnDrvmd_pdrive, // Power Drive (Euro) - &BurnDrvpce_power11, // Power Eleven - &BurnDrvpce_powergat, // Power Gate - &BurnDrvtg_pgolf, // Power Golf - &BurnDrvpce_pgolf, // Power Golf - &BurnDrvPowerins, // Power Instinct (USA) - &BurnDrvPowerina, // Power Instinct (USA, bootleg set 1) - &BurnDrvPowerinb, // Power Instinct (USA, bootleg set 2) - &BurnDrvPwrinst2, // Power Instinct 2 (USA, ver. 94/04/08) - &BurnDrvpce_pleague, // Power League - &BurnDrvpce_pleag93, // Power League '93 - &BurnDrvpce_pleagas, // Power League (All Star Version) - &BurnDrvpce_pleag2, // Power League II - &BurnDrvpce_pleag3, // Power League III - &BurnDrvpce_pleag4, // Power League IV - &BurnDrvpce_pleag5, // Power League V - &BurnDrvmd_pmonger, // Power Monger (Euro, USA) - &BurnDrvmd_pmongerj, // Power Monger (Jpn, Kor) - &BurnDrvpspikes2, // Power Spikes II (NGM-068) - &BurnDrvpce_psports, // Power Sports - &BurnDrvPwheelsj, // Power Wheels (Japan) - &BurnDrvmd_powerbal, // Powerball (USA) - &BurnDrvCpsPgearr1, // Powered Gear - strategic variant armor equipment (940916 Japan) - &BurnDrvCpsPgear, // Powered Gear - strategic variant armor equipment (941024 Japan) - &BurnDrvmd_predatr2, // Predator 2 (Euro, USA) - &BurnDrvpreisle2, // Prehistoric Isle 2 - &BurnDrvPrehislk, // Prehistoric Isle in 1930 (Korea) - &BurnDrvPrehislu, // Prehistoric Isle in 1930 (US) - &BurnDrvPrehisle, // Prehistoric Isle in 1930 (World) - &BurnDrvmd_premierm, // Premier Manager (Euro) - &BurnDrvmd_premrm97, // Premier Manager 97 (Euro) - &BurnDrvSailorMoonO, // Pretty Soldier Sailor Moon (ver. 95/03/22, Europe) - &BurnDrvSailorMoonOh, // Pretty Soldier Sailor Moon (ver. 95/03/22, Hong Kong) - &BurnDrvSailorMoonOj, // Pretty Soldier Sailor Moon (ver. 95/03/22, Japan) - &BurnDrvSailorMoonOk, // Pretty Soldier Sailor Moon (ver. 95/03/22, Korea) - &BurnDrvSailorMoonOt, // Pretty Soldier Sailor Moon (ver. 95/03/22, Taiwan) - &BurnDrvSailorMoonOu, // Pretty Soldier Sailor Moon (ver. 95/03/22, USA) - &BurnDrvSailorMoon, // Pretty Soldier Sailor Moon (ver. 95/03/22B, Europe) - &BurnDrvSailorMoonh, // Pretty Soldier Sailor Moon (ver. 95/03/22B, Hong Kong) - &BurnDrvSailorMoonj, // Pretty Soldier Sailor Moon (ver. 95/03/22B, Japan) - &BurnDrvSailorMoonk, // Pretty Soldier Sailor Moon (ver. 95/03/22B, Korea) - &BurnDrvSailorMoont, // Pretty Soldier Sailor Moon (ver. 95/03/22B, Taiwan) - &BurnDrvSailorMoonu, // Pretty Soldier Sailor Moon (ver. 95/03/22B, USA) - &BurnDrvmd_primal, // Primal Rage (Euro, USA) - &BurnDrvmd_primetim, // Prime Time NFL Starring Deion Sanders (USA) - &BurnDrvneoprimo, // Primo Demo - &BurnDrvmd_ppersia, // Prince of Persia (Euro) - &BurnDrvmd_ppersiap, // Prince of Persia (Prototype) - &BurnDrvmd_ppersiap1, // Prince of Persia (Prototype, Earlier) - &BurnDrvmd_ppersiau, // Prince of Persia (USA) - &BurnDrvmd_ppersia2, // Prince of Persia 2 - The Shadow and the Flame (Euro, Prototype) - &BurnDrvmd_par, // Pro Action Replay (Euro) - &BurnDrvmd_par2, // Pro Action Replay 2 (Euro) - &BurnDrvmd_par2a, // Pro Action Replay 2 (Euro, Alt) - &BurnDrvmd_proqb, // Pro Quarterback (USA) - &BurnDrvmd_prostrfs, // Pro Striker Final Stage (Jpn) - &BurnDrvpce_ptennwc, // Pro Tennis World Court - &BurnDrvmd_proyakyu, // Pro Yakyuu Super League '91 (Jpn) - &BurnDrvpce_proyak, // Pro Yakyuu World Stadium - &BurnDrvpce_proyak91, // Pro Yakyuu World Stadium '91 - &BurnDrvmd_probot, // Probotector (Euro) - &BurnDrvCpsProgeara, // Progear (010117 Asia) - &BurnDrvCpsProgear, // Progear (010117 USA) - &BurnDrvCpsProgearjd, // Progear No Arashi (010117 Japan Phoenix Edition) - &BurnDrvCpsProgearj, // Progear No Arashi (010117 Japan) - &BurnDrvCpsProgearjbl, // Progear No Arashi (010117 Japan, decrypted set) - &BurnDrvCpsProgearud, // Progear(010117 USA Phoenix Edition) - &BurnDrvmd_psyoblad, // Psy-O-Blade (Jpn) - &BurnDrvpce_psychas, // Psycho Chaser - &BurnDrvmd_psycho1, // Psycho Pinball (Euro, 199409) - &BurnDrvmd_psycho, // Psycho Pinball (Euro, 199410) - &BurnDrvOscarj1, // Psycho-Nics Oscar (Japan revision 1) - &BurnDrvOscarj2, // Psycho-Nics Oscar (Japan revision 2) - &BurnDrvOscaru, // Psycho-Nics Oscar (US) - &BurnDrvOscar, // Psycho-Nics Oscar (World revision 0) - &BurnDrvtg_psychos, // Psychosis - &BurnDrvpuckmanb, // Puck Man (Bootleg set 1) - &BurnDrvpuckmanh, // Puck Man (bootleg set 2) - &BurnDrvpuckman, // Puck Man (Japan set 1) - &BurnDrvpuckmod, // Puck Man (Japan set 2) - &BurnDrvpacmansp, // Puck Man (Spanish, 'Made in Greece' bootleg) - &BurnDrvpuckmanf, // PuckMan (speedup hack) - &BurnDrvmd_puggsy, // Puggsy (Euro) - &BurnDrvmd_puggsyp, // Puggsy (Prototype) - &BurnDrvmd_puggsyu, // Puggsy (USA) - &BurnDrvPulirulaj, // PuLiRuLa (Japan) - &BurnDrvPulirula, // PuLiRuLa (World) - &BurnDrvmd_pulseman, // Pulseman (Jpn) - &BurnDrvpulstar, // Pulstar - &BurnDrvPunkshotj, // Punk Shot (Japan 2 Players) - &BurnDrvPunkshot2, // Punk Shot (US 2 Players) - &BurnDrvPunkshot, // Punk Shot (US 4 Players) - &BurnDrvPushmans, // Pushman (American Sammy license) - &BurnDrvPushman, // Pushman (Korea, set 1) - &BurnDrvPushmana, // Pushman (Korea, set 2) - &BurnDrvmd_puttergnk, // Putter Golf (Jpn, Game no Kandume MegaCD Rip) - &BurnDrvmd_putter, // Putter Golf (Jpn, SegaNet) - &BurnDrvmd_puyopuyo, // Puyo Puyo (Jpn) - &BurnDrvmd_puyopuy2a, // Puyo Puyo 2 (Jpn) - &BurnDrvmd_puyopuy2, // Puyo Puyo 2 (Jpn, v1.1) - &BurnDrvCpsPzloop2jr1, // Puzz Loop 2 (010205 Japan) - &BurnDrvCpsPzloop2j, // Puzz Loop 2 (010226 Japan) - &BurnDrvCpsPzloop2, // Puzz Loop 2 (010302 Euro) - &BurnDrvmd_ichir, // Puzzle & Action - Ichidant-R (Jpn) - &BurnDrvmd_tantr, // Puzzle & Action - Tant-R (Jpn) - &BurnDrvPbobble, // Puzzle Bobble (Japan, B-System) - &BurnDrvpbobblenb, // Puzzle Bobble / Bust-A-Move (Neo-Geo) (bootleg) - &BurnDrvpbobblen, // Puzzle Bobble / Bust-A-Move (Neo-Geo) (NGM-083) - &BurnDrvpbobbl2n, // Puzzle Bobble 2 / Bust-A-Move Again (Neo-Geo) - &BurnDrvpce_puzzlboy, // Puzzle Boy - &BurnDrvPzlbreak, // Puzzle Break - &BurnDrvPclubys, // Puzzle Club (Yun Sung, set 1) - &BurnDrvPclubysa, // Puzzle Club (Yun Sung, set 2) - &BurnDrvPzlbowl, // Puzzle De Bowling (Japan) - &BurnDrvpuzzledp, // Puzzle De Pon! - &BurnDrvpuzzldpr, // Puzzle De Pon! R! - &BurnDrvFourin1boot, // Puzzle King - &BurnDrvPuzlstar, // Puzzle Star (V100MG) - &BurnDrvUoPoko, // Puzzle Uo Poko (International, ver. 98/02/06) - &BurnDrvUoPokoj, // Puzzle Uo Poko (Japan, ver. 98/02/06) - &BurnDrvJoyjoy, // Puzzled / Joy Joy Kid (NGM-021)(NGH-021) - &BurnDrvPuzzli2, // Puzzli 2 (V100) - &BurnDrvPuzzli2s, // Puzzli 2 Super (V200) - &BurnDrvpce_puzznic, // Puzznic - &BurnDrvmd_pyramidgnk, // Pyramid Magic (Jpn, Game no Kandume MegaCD Rip) - &BurnDrvmd_pyramid, // Pyramid Magic (Jpn, SegaNet) - &BurnDrvmd_pyramid2, // Pyramid Magic II (Jpn, SegaNet) - &BurnDrvmd_pyramid3, // Pyramid Magic III (Jpn, SegaNet) - &BurnDrvmd_pyramids, // Pyramid Magic Special (Jpn, SegaNet) - &BurnDrvmd_quacksht, // QuackShot Starring Donald Duck ~ QuackShot - Guruzia Ou no Hihou (World) - &BurnDrvmd_quacksht1, // QuackShot Starring Donald Duck ~ QuackShot - Guruzia Ou no Hihou (World, Alt) - &BurnDrvmd_quadchal, // Quad Challenge (USA) - &BurnDrvQuarteta, // Quartet (8751 315-5194) - &BurnDrvQuartet, // Quartet (Rev A, 8751 317-unknown) - &BurnDrvQuartet2, // Quartet 2 (8751 317-0010) - &BurnDrvQuartet2a, // Quartet 2 (unprotected) - &BurnDrvQuarth, // Quarth (Japan) - &BurnDrvmd_qpoker, // Queen of Poker Club (Tw) - &BurnDrvCpsQadjr, // Quiz & Dragons (940921 Japan Resale Ver.) - &BurnDrvCpsQad, // Quiz & Dragons (capcom quiz game 920701 USA) - &BurnDrvQzchikyu, // Quiz Chikyu Bouei Gun (Japan) - &BurnDrvQcrayon, // Quiz Crayon Shinchan (Japan) - &BurnDrvQuizdaisk, // Quiz Daisousa Sen - The Last Count Down (Korean release) - &BurnDrvQuizdais, // Quiz Daisousa Sen - The Last Count Down (NGM-023)(NGH-023) - &BurnDrvHotdebut, // Quiz de Idol! Hot Debut (Japan) - &BurnDrvQuizf1, // Quiz F1 1-2 Finish (Japan) - &BurnDrvQgakumon, // Quiz Gakumon no Susume (Japan ver. JA1 Type H) - &BurnDrvQuizhq, // Quiz H.Q. (Japan) - &BurnDrvQjinsei, // Quiz Jinsei Gekijoh (Japan) - &BurnDrvquizkofk, // Quiz King of Fighters (Korean release) - &BurnDrvquizkof, // Quiz King of Fighters (SAM-080)(SAH-080) - &BurnDrvQzkklogy, // Quiz Kokology - &BurnDrvQzkklgy2, // Quiz Kokology 2 - &BurnDrvQuizdai2, // Quiz Meitantei Neo & Geo - Quiz Daisousa Sen part 2 (NGM-042)(NGH-042) - &BurnDrvCpsQndream, // Quiz Nanairo Dreams - nijiirochou no kiseki (nanairo dreams 960826 Japan) - &BurnDrvQuizo, // Quiz Olympic - &BurnDrvQzquest, // Quiz Quest - Hime to Yuusha no Monogatari (Japan) - &BurnDrvQsangoku, // Quiz Sangokushi (Japan) - &BurnDrvQzshowby, // Quiz Sekai wa SHOW by shobai (Japan) - &BurnDrvQtono1, // Quiz Tonosama no Yabou (Japan) - &BurnDrvCpsQtono2j, // Quiz Tonosama no Yabou 2 Zenkoku-ban (tonosama 2 950123 Japan) - &BurnDrvQtorimon, // Quiz Torimonochou (Japan) - &BurnDrvpce_quizts, // Quiz Toukou Shashin - &BurnDrvtg_rtype, // R-Type - &BurnDrvRtypejp, // R-Type (Japan prototype) - &BurnDrvRtypej, // R-Type (Japan) - &BurnDrvRtypeu, // R-Type (US) - &BurnDrvRtypeb, // R-Type (World bootleg) - &BurnDrvRtype, // R-Type (World) - &BurnDrvRtype2, // R-Type II - &BurnDrvRtype2j, // R-Type II (Japan) - &BurnDrvRtype2jc, // R-Type II (Japan, revision C) - &BurnDrvRtypelej, // R-Type Leo (Japan) - &BurnDrvRtypeleo, // R-Type Leo (World) - &BurnDrvpce_rtypep1, // R-Type Part-1 - &BurnDrvpce_rtypep2, // R-Type Part-2 - &BurnDrvmd_rbibb93, // R.B.I. Baseball '93 (USA) - &BurnDrvmd_rbibb94, // R.B.I. Baseball '94 (Euro, USA) - &BurnDrvmd_rbibb3, // R.B.I. Baseball 3 (USA) - &BurnDrvmd_rbibb4j, // R.B.I. Baseball 4 (Jpn) - &BurnDrvmd_rbibb4p, // R.B.I. Baseball 4 (Prototype) - &BurnDrvmd_rbibb4, // R.B.I. Baseball 4 (USA) - &BurnDrvRpunch, // Rabbit Punch (US) - &BurnDrvRabiolep, // Rabio Lepus (Japan) - &BurnDrvpce_rabiolep, // Rabio Lepus Special - &BurnDrvmd_racedriv, // Race Drivin' (USA) - &BurnDrvRacingb, // Racing Beat (World) - &BurnDrvpce_racindam, // Racing Damashii - &BurnDrvRachero, // Racing Hero (FD1094 317-0144) - &BurnDrvRacknrol, // Rack + Roll - &BurnDrvRadarscp, // Radar Scope - &BurnDrvRadarscp1, // Radar Scope (TRS01) - &BurnDrvmd_radicasf, // Radica: Street Fighter Pack (Euro) - &BurnDrvmd_radicav1, // Radica: Volume 1 (USA) - &BurnDrvmd_radrex, // Radical Rex (Euro) - &BurnDrvmd_radrexu, // Radical Rex (USA) - &BurnDrvRaflesia, // Rafflesia (315-5162) - &BurnDrvrotd, // Rage of the Dragons (NGM-264?) - &BurnDrvmd_ragnacenk, // Ragnacenty (Kor) - &BurnDrvragnagrd, // Ragnagard / Shin-Oh-Ken - &BurnDrvtg_raiden, // Raiden - &BurnDrvpce_raiden, // Raiden - &BurnDrvRaidenk, // Raiden (Korea) - &BurnDrvRaiden, // Raiden (set 1) - &BurnDrvRaidena, // Raiden (set 2) - &BurnDrvRaidenb, // Raiden (set 3, Alternate hardware) - &BurnDrvRaident, // Raiden (Taiwan) - &BurnDrvRaidenu, // Raiden (US, set 1) - &BurnDrvRaidenua, // Raiden (US, set 2, SEI8904 + SEI9008 PCBs) - &BurnDrvmd_raiden, // Raiden Trad (USA) ~ Raiden Densetsu (Jpn) - &BurnDrvRaiga, // Raiga - Strato Fighter (Japan) - &BurnDrvStratof, // Raiga - Strato Fighter (US) - &BurnDrvRchasej, // Rail Chase (Japan) - &BurnDrvRchase, // Rail Chase (World) - &BurnDrvRbislande, // Rainbow Islands (Extra) - &BurnDrvRbisland, // Rainbow Islands (new version) - &BurnDrvRbislando, // Rainbow Islands (old version) - &BurnDrvmd_rbisland, // Rainbow Islands Extra (Jpn) - &BurnDrvRallybik, // Rally Bike / Dash Yarou - &BurnDrvRallyxa, // Rally X - &BurnDrvRallyx, // Rally X (32k Ver.?)) - &BurnDrvRallyxm, // Rally X (Midway) - &BurnDrvRallyxmr, // Rally X (Model Racing) - &BurnDrvRambo3, // Rambo III (Europe) - &BurnDrvRambo3p, // Rambo III (Europe, Proti?) - &BurnDrvRambo3u, // Rambo III (US) - &BurnDrvmd_rambo3a, // Rambo III (World) - &BurnDrvmd_rambo3, // Rambo III (World, v1.1) - &BurnDrvmd_rampartj, // Rampart (Jpn, Kor) - &BurnDrvmd_rampart, // Rampart (USA) - &BurnDrvmd_rangerx, // Ranger-X (Euro) - &BurnDrvmd_rangerxu, // Ranger-X (USA) - &BurnDrvmd_ransei, // Ransei no Hasha (Jpn) - &BurnDrvRaphero, // Rapid Hero - &BurnDrvRastanu, // Rastan (US Rev 1) - &BurnDrvRastanua, // Rastan (US) - &BurnDrvRastanub, // Rastan (US, Earlier code base) - &BurnDrvRastan, // Rastan (World Rev 1) - &BurnDrvRastana, // Rastan (World) - &BurnDrvRastsaga, // Rastan Saga (Japan Rev 1) - &BurnDrvRastsagaa, // Rastan Saga (Japan) - &BurnDrvRastsag2, // Rastan Saga 2 (Japan) - &BurnDrvpce_rastan2, // Rastan Saga II - &BurnDrvmd_rastan2j, // Rastan Saga II (Jpn) - &BurnDrvmd_rastan2, // Rastan Saga II (USA) - &BurnDrvphotoy2k102, // Real and Fake\0Photo Y2K (V102, Japan) - &BurnDrvrbff1a, // Real Bout Fatal Fury / Real Bout Garou Densetsu (bug fix revision) - &BurnDrvrbff1, // Real Bout Fatal Fury / Real Bout Garou Densetsu (NGM-095)(NGH-095) - &BurnDrvrbff2k, // Real Bout Fatal Fury 2 - The Newcomers (Korean release) - &BurnDrvrbff2h, // Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - the newcomers (NGH-2400) - &BurnDrvrbff2, // Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - the newcomers (NGM-2400) - &BurnDrvrbffspec, // Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special - &BurnDrvrbffspeck, // Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special (Korean release) - &BurnDrvRedearthr1, // Red Earth / War-Zard (Euro 961023) - &BurnDrvRedearth, // Red Earth / War-Zard (Euro 961121) - &BurnDrvRedfoxwp2, // Red Fox War Planes II (China, set 1) - &BurnDrvRedfoxwp2a, // Red Fox War Planes II (China, set 2) - &BurnDrvRedhawke, // Red Hawk (Excellent Co., Ltd) - &BurnDrvRedhawki, // Red Hawk (Italy) - &BurnDrvRedhawk, // Red Hawk (US) - &BurnDrvmd_redzone, // Red Zone (Euro, USA) - &BurnDrvReguluso, // Regulus (315-5033) - &BurnDrvRegulus, // Regulus (315-5033, rev. A) - &BurnDrvRegulusu, // Regulus (not encrypted) - &BurnDrvRenegade, // Renegade (US) - &BurnDrvmd_renthero, // Rent a Hero (Jpn) - &BurnDrvRepulse, // Repulse - &BurnDrvRescue, // Rescue - &BurnDrvmd_resq, // Resq (Euro, Prototype) - &BurnDrvRetofinv, // Return of the Invaders - &BurnDrvRetofin1, // Return of the Invaders (bootleg set 1) - &BurnDrvRetofin2, // Return of the Invaders (bootleg set 2) -#if defined FBA_DEBUG - &BurnDrvRevenger, // Revenger [Bad dump, NOT WORKING] -#endif - &BurnDrvmd_revx, // Revolution X (Euro, USA) - &BurnDrvRezon, // Rezon - &BurnDrvRezont, // Rezon (Taito) - &BurnDrvmd_rhl2k7, // RHL 2007 (Rus) - &BurnDrvmd_rsbtp7, // Richard Scarry's Busytown (Prototype, 19940721) - &BurnDrvmd_rsbtp6, // Richard Scarry's Busytown (Prototype, 19940809) - &BurnDrvmd_rsbtp5, // Richard Scarry's Busytown (Prototype, 19940815) - &BurnDrvmd_rsbtp4, // Richard Scarry's Busytown (Prototype, 19940816-B) - &BurnDrvmd_rsbtp3, // Richard Scarry's Busytown (Prototype, 19940817) - &BurnDrvmd_rsbtp2, // Richard Scarry's Busytown (Prototype, 19940825) - &BurnDrvmd_rsbtp1, // Richard Scarry's Busytown (Prototype, 19940826) - &BurnDrvmd_rsbt, // Richard Scarry's BusyTown (USA) - &BurnDrvmd_rickdang, // Rick Dangerous (Rus) - &BurnDrvmd_riddle, // Riddle Wired (Jpn, SegaNet) - &BurnDrvRidhero, // Riding Hero (NGM-006)(NGH-006) - &BurnDrvRidheroh, // Riding Hero (set 2) - &BurnDrvRingohja, // Ring no Ohja (Japan 2 Players ver. N) - &BurnDrvCpsRingdesta, // Ring of Destruction - slammasters II (940831 Asia) - &BurnDrvCpsRingdstd, // Ring of Destruction - slammasters II (940902 Euro Phoenix Edition) - &BurnDrvCpsRingdest, // Ring of Destruction - slammasters II (940902 Euro) - &BurnDrvmd_ringspow, // Rings of Power (Euro, USA) - &BurnDrvRiot, // Riot - &BurnDrvRiotcity, // Riot City (Japan) - &BurnDrvmd_riserobo, // Rise of the Robots (Euro) - &BurnDrvmd_risk, // Risk (USA) - &BurnDrvRiskchal, // Risky Challenge - &BurnDrvmd_riskyw, // Risky Woods (Euro, USA) - &BurnDrvmd_ristar1, // Ristar (Euro, USA, 199408) - &BurnDrvmd_ristar, // Ristar (Euro, USA, 199409) - &BurnDrvmd_ristarp4, // Ristar (Prototype, 19940701) - &BurnDrvmd_ristarp3, // Ristar (Prototype, 19940718) - &BurnDrvmd_ristarp2, // Ristar (Prototype, 19940812) - &BurnDrvmd_ristarp1, // Ristar (Prototype, 19940826) - &BurnDrvmd_ristarj, // Ristar - The Shooting Star (Jpn, Kor) - &BurnDrvmd_rrash3, // Road 3 Rash - Tour de Force (Euro, USA) - &BurnDrvmd_rrash3p, // Road 3 Rash - World Warriors (USA, Prototype) - &BurnDrvmd_roadrash, // Road Rash (Euro, USA) - &BurnDrvmd_rrash2a, // Road Rash II (Euro, USA) - &BurnDrvmd_rrash2, // Road Rash II (Euro, USA, v1.2) - &BurnDrvmd_rrash2j, // Road Rash II (Jpn) - &BurnDrvmd_roadblstj, // RoadBlasters (Jpn) - &BurnDrvmd_roadblst, // RoadBlasters (USA) - &BurnDrvRoboarmy, // Robo Army - &BurnDrvrobocopi, // Robocop (Intro demo) - &BurnDrvRobocopj, // Robocop (Japan) - &BurnDrvRobocopu0, // Robocop (US revision 0) - &BurnDrvRobocopu, // Robocop (US revision 1) - &BurnDrvRobocopb, // Robocop (World bootleg) - &BurnDrvRobocopw, // Robocop (World revision 3) - &BurnDrvRobocop, // Robocop (World revision 4) - &BurnDrvRobocop2, // Robocop 2 (Euro/Asia v0.10) - &BurnDrvRobocop2j, // Robocop 2 (Japan v0.11) - &BurnDrvRobocop2u, // Robocop 2 (US v0.05) - &BurnDrvmd_robocop3, // RoboCop 3 (Euro, USA) - &BurnDrvmd_roboterm, // RoboCop versus The Terminator (Euro) - &BurnDrvmd_robotermj, // RoboCop versus The Terminator (Jpn, Kor) - &BurnDrvmd_robotermp, // RoboCop versus The Terminator (Prototype) - &BurnDrvmd_robotermp1, // Robocop Versus The Terminator (Prototype, Alt) - &BurnDrvmd_robotermu, // RoboCop versus The Terminator (USA) - &BurnDrvmd_robotbat, // Robot Battler (Jpn, SegaNet) - &BurnDrvmd_robowrek, // Robot Wreckage (USA, Prototype) - &BurnDrvRockclim, // Rock Climber - &BurnDrvrockduck, // Rock Duck (prototype?) - &BurnDrvmd_rnrracin, // Rock n' Roll Racing (Euro) - &BurnDrvmd_rnrracinu, // Rock n' Roll Racing (USA) - &BurnDrvpce_rockon, // Rock-on - &BurnDrvmd_rocket, // Rocket Knight Adventures (Euro) - &BurnDrvmd_rocketj, // Rocket Knight Adventures (Jpn) - &BurnDrvmd_rocketu, // Rocket Knight Adventures (USA) - &BurnDrvCpsRockmanj, // Rockman - the power battle (950922 Japan) - &BurnDrvCpsRockman2j, // Rockman 2 - the power fighters (960708 Japan) - &BurnDrvmd_rockman, // Rockman Mega World (Jpn) - &BurnDrvmd_rockman1, // Rockman Mega World (Jpn, Alt) - &BurnDrvmd_rockmnx3, // Rockman X3 - &BurnDrvCpsRmancp2j, // Rockman: The Power Battle (950922 Japan) - &BurnDrvmd_mvpbb, // Roger Clements MVP Baseball (USA) - &BurnDrvRohga1, // Rohga Armor Force (Asia/Europe v3.0 Set 1) - &BurnDrvRohga2, // Rohga Armor Force (Asia/Europe v3.0 Set 2) - &BurnDrvRohga, // Rohga Armor Force (Asia/Europe v5.0) - &BurnDrvRohgah, // Rohga Armor Force (Hong Kong v3.0) - &BurnDrvRohgau, // Rohga Armor Force (US v1.0) - &BurnDrvRollergj, // Rollergames (Japan) - &BurnDrvRollerg, // Rollergames (US) - &BurnDrvmd_rthun2, // Rolling Thunder 2 (Euro) - &BurnDrvmd_rthun2j, // Rolling Thunder 2 (Jpn) - &BurnDrvmd_rthun2u, // Rolling Thunder 2 (USA) - &BurnDrvmd_rthun3, // Rolling Thunder 3 (USA) - &BurnDrvmd_rolo, // Rolo to the Rescue (Euro, USA) - &BurnDrvmd_roman3k2, // Romance of the Three Kingdoms II (USA) - &BurnDrvmd_roman3k3, // Romance of the Three Kingdoms III - Dragon of Destiny (USA) - &BurnDrvmd_dinho98, // Ronaldinho 98 (Pirate) - &BurnDrvroute16, // Route 16 - &BurnDrvroute16b, // Route 16 (bootleg) - &BurnDrvroute16a, // Route 16 (set 2) - &BurnDrvroutex, // Route X (bootleg) -#if defined FBA_DEBUG - &BurnDrvRascot, // Royal Ascot [no comment] -#endif - &BurnDrvmd_royalbld, // Royal Blood (Jpn) - &BurnDrvmd_rugbywc, // Rugby World Cup 1995 (Euro, USA) - &BurnDrvRunark, // Runark (Japan) - &BurnDrvmd_runark, // Runark (Jpn, Kor) - &BurnDrvRushcrsh, // Rush & Crash (Japan) - &BurnDrvRushatck, // Rush'n Attack (US) - &BurnDrvRygar, // Rygar (US set 1) - &BurnDrvRygar2, // Rygar (US set 2) - &BurnDrvRygar3, // Rygar (US set 3, old version) - &BurnDrvRygarb, // Rygar (US, bootleg) - &BurnDrvRyujin, // Ryu Jin (Japan) - &BurnDrvRyukyu, // RyuKyu (Japan, FD1094 317-5023) - &BurnDrvmd_ryukoken, // Ryuuko no Ken (Jpn) - &BurnDrvpce_ryukyu, // Ryuukyuu - &BurnDrvSpyu, // S.P.Y. - Special Project Y (US ver. M) - &BurnDrvSpy, // S.P.Y. - Special Project Y (World ver. N) - &BurnDrvSrdmissn, // S.R.D. Mission - &BurnDrvmd_manover, // S.S. Lucifer - Man Overboard! (Euro) - &BurnDrvSsmissin, // S.S. Mission -#if defined FBA_DEBUG - &BurnDrvSvgpcb, // S.V.G. - Spectral vs Generation (V100, Japan, Single PCB Version) [Incomplete Dump, NOT WORKING] - &BurnDrvSvg, // S.V.G. - Spectral vs Generation (V200, China) [Incomplete Dump, NOT WORKING] -#endif - &BurnDrvSabotenb, // Saboten Bombers (set 1) - &BurnDrvSabotenba, // Saboten Bombers (set 2) - &BurnDrvpce_sadaki7, // Sadakichi 7 Series - Hideyoshi no Ougon - &BurnDrvmd_sagaia, // Sagaia (USA) - &BurnDrvNspiritj, // Saigo no Nindou (Japan) - &BurnDrvpce_saigonin, // Saigo no Nindou - Ninja Spirit - &BurnDrvmd_sswordj, // Saint Sword (Jpn) - &BurnDrvmd_ssword, // Saint Sword (USA) - &BurnDrvpce_salamand, // Salamander - &BurnDrvSamesame, // Same! Same! Same! (2 player alternating ver.) - &BurnDrvmd_samesame, // Same! Same! Same! (Jpn) - &BurnDrvSamesame2, // Same! Same! Same! - &BurnDrvSamuraiA, // Samurai Aces (World) - &BurnDrvmd_samsho, // Samurai Shodown (Euro) - &BurnDrvmd_samshou, // Samurai Shodown (USA) - &BurnDrvSamShoh, // Samurai Shodown / Samurai Spirits (NGH-045) - &BurnDrvSamSho, // Samurai Shodown / Samurai Spirits (NGM-045) - &BurnDrvSamSho2, // Samurai Shodown II / Shin Samurai Spirits - Haohmaru jigokuhen (NGM-063)(NGH-063) - &BurnDrvSamSho3h, // Samurai Shodown III / Samurai Spirits - Zankurou Musouken (NGH-087) - &BurnDrvSamSho3, // Samurai Shodown III / Samurai Spirits - Zankurou Musouken (NGM-087) - &BurnDrvSamSho4, // Samurai Shodown IV - Amakusa's Revenge / Samurai Spirits - Amakusa Kourin (NGM-222)(NGH-222) - &BurnDrvsamsho5b, // Samurai Shodown V / Samurai Spirits Zero (bootleg) - &BurnDrvsamsho5h, // Samurai Shodown V / Samurai Spirits Zero (NGH-2700) - &BurnDrvsamsho5, // Samurai Shodown V / Samurai Spirits Zero (NGM-2700) - &BurnDrvsamsh5spho, // Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720) (1st release, censored) - &BurnDrvsamsh5sph, // Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720) (2nd release, less censored) - &BurnDrvsamsh5sp, // Samurai Shodown V Special / Samurai Spirits Zero Special (NGM-2720) - &BurnDrvmd_samspir, // Samurai Spirits (Jpn) - &BurnDrvtg_samuraig, // Samurai-Ghost - &BurnDrvmd_sanguo, // San Guo Zhi Lie Zhuan - Luan Shi Qun Ying (Chi) - &BurnDrvmd_sanguo5, // San Guo Zhi V (Chi) - &BurnDrvmd_sansan, // San San (Jpn) - &BurnDrvCpsWofa, // Sangokushi II (921005 Asia) - &BurnDrvCpsWofah, // Sangokushi II (hack set 1, 921005 Asia) - &BurnDrvCpsWofaha, // Sangokushi II (hack set 2, 921005 Asia) - &BurnDrvCpsWofahb, // Sangokushi II (hack set 3, 921005 Asia) - &BurnDrvmd_sangoku2, // Sangokushi II (Jpn) - &BurnDrvCpsWofhfh, // Sangokushi II: Huo Fenghuang (Chinese bootleg, 921005 Asia) - &BurnDrvCpsWof3js, // Sangokushi II: San Jian Sheng (Chinese bootleg set 1, 921005 Asia) - &BurnDrvCpsWof3jsa, // Sangokushi II: San Jian Sheng (Chinese bootleg set 2, 921005 Asia) - &BurnDrvCpsWof3sj, // Sangokushi II: San Sheng Jian (Chinese bootleg set 1, 921005 Asia) - &BurnDrvCpsWof3sja, // Sangokushi II: San Sheng Jian (Chinese bootleg set 2, 921005 Asia) - &BurnDrvCpsWofh, // Sangokushi II: Sanguo Yingxiong Zhuan (Chinese bootleg set 1, 921005 Asia) - &BurnDrvCpsWofha, // Sangokushi II: Sanguo Yingxiong Zhuan (Chinese bootleg set 2, 921005 Asia) - &BurnDrvCpsSgyxz, // Sangokushi II: Sanguo Yingxiong Zhuan (Chinese bootleg set 3, 921005 Asia) - &BurnDrvCpsWofsj, // Sangokushi II: Sheng Jian Sanguo (Chinese bootleg set 1, 921005 Asia) - &BurnDrvCpsWofsja, // Sangokushi II: Sheng Jian Sanguo (Chinese bootleg set 2, 921005 Asia) - &BurnDrvCpsWofsjb, // Sangokushi II: Sheng Jian Sanguo (Chinese bootleg set 3, 921005 Asia) - &BurnDrvmd_sangoku3, // Sangokushi III (Jpn) - &BurnDrvmd_sangoret, // Sangokushi Retsuden - Ransei no Eiyuutachi (Jpn) - &BurnDrvSsanchan, // Sanrin San Chan (Japan) - &BurnDrvsercharj, // SAR - Search And Rescue (Japan) - &BurnDrvsercharu, // SAR - Search And Rescue (US) - &BurnDrvsearchar, // SAR - Search And Rescue (World) - &BurnDrvCpsSlampic, // Saturday Night Slam Masters (bootleg (with PIC16c57), 930713 etc) -// &BurnDrvCpsSlammasa, // Saturday Night Slam Masters (Slam Masters 930301 Asia) [no comment] - &BurnDrvCpsSlammast, // Saturday Night Slam Masters (Slam Masters 930713 etc) -// &BurnDrvCpsSlammash, // Saturday Night Slam Masters (Slam Masters 930713 Hispanic) [no comment] - &BurnDrvCpsSlammastu, // Saturday Night Slam Masters (slam masters 930713 USA) - &BurnDrvmd_slammast, // Saturday Night Slammasters (Euro) - &BurnDrvmd_slammastu, // Saturday Night Slammasters (USA) - &BurnDrvSaturnzi, // Saturn - &BurnDrvsamsho2k, // Saulabi Spirits / Jin Saulabi Tu Hon (Korean release of Samurai Shodown II) - &BurnDrvSavgbees, // Savage Bees - &BurnDrvSavagere, // Savage Reign / Fu'un Mokushiroku - kakutou sousei - &BurnDrvSchmeisr, // Schmeiser Robo (Japan) - &BurnDrvmd_msbp06, // Scholastic's The Magic School Bus (Prototype, 19950331) - &BurnDrvmd_msbp05, // Scholastic's The Magic School Bus (Prototype, 19950411) - &BurnDrvmd_msbp04, // Scholastic's The Magic School Bus (Prototype, 19950421) - &BurnDrvmd_msbp03, // Scholastic's The Magic School Bus (Prototype, 19950425) - &BurnDrvmd_msbp02, // Scholastic's The Magic School Bus (Prototype, 19950428) - &BurnDrvmd_msbp01, // Scholastic's The Magic School Bus (Prototype, 19950505) - &BurnDrvmd_msb, // Scholastic's The Magic School Bus (USA) - &BurnDrvmd_scooby, // Scooby-Doo Mystery (USA) - &BurnDrvScotrsht, // Scooter Shooter - &BurnDrvScorpionmc, // Scorpion (Moon Cresta hardware) - &BurnDrvScorpion, // Scorpion (set 1) - &BurnDrvScorpiona, // Scorpion (set 2) - &BurnDrvScorpionb, // Scorpion (set 3) - &BurnDrvmd_scrabble, // Scrabble (Euro, Prototype) - &BurnDrvScramble, // Scramble - &BurnDrvScramblb, // Scramble (bootleg on Galaxian hardware) - &BurnDrvScramb2, // Scramble (bootleg) - &BurnDrvScramblebb, // Scramble (bootleg?) - &BurnDrvScramblebf, // Scramble (Karateko, French bootleg) - &BurnDrvScrampt, // Scramble (Petaco S.A., Spanish bootleg) - &BurnDrvScrambler, // Scramble (Reben S.A. Spanish bootleg) - &BurnDrvScrambles, // Scramble (Stern) - &BurnDrvscregg, // Scrambled Egg - &BurnDrvSdfight, // SD Fighters (Korea) - &BurnDrvNeobattl, // SD Gundam Neo Battling (Japan) - &BurnDrvSdgndmps, // SD Gundam Psycho Salamander no Kyoui - &BurnDrvmd_sdvalis, // SD Valis (Jpn) - &BurnDrvSdibl, // SDI - Strategic Defense Initiative (bootleg) - &BurnDrvSdi, // SDI - Strategic Defense Initiative (Japan, old, System 16A, FD1089B 317-0027) - &BurnDrvSdib, // SDI - Strategic Defense Initiative (System 16B, FD1089A 317-0028) - &BurnDrvmd_seaquest, // SeaQuest DSV (Euro) - &BurnDrvmd_seaquestu, // SeaQuest DSV (USA) - &BurnDrvSearchey, // Search Eye - &BurnDrvSearchp2, // Search Eye Plus V2.0 - &BurnDrvSecretag, // Secret Agent (World) - &BurnDrvSectionz, // Section Z (set 1) - &BurnDrvSctionza, // Section Z (set 2) - &BurnDrvmd_segachnla, // Sega Channel (General Instrument) (USA) - &BurnDrvmd_segachnl, // Sega Channel (Scientific Atlanta) (USA) - &BurnDrvmd_segachd, // Sega Channel Demo (USA) - &BurnDrvSeganinj, // Sega Ninja (315-5102) - &BurnDrvSeganinju, // Sega Ninja (not encrypted) - &BurnDrvmd_segasprt, // Sega Sports 1 (Euro) - &BurnDrvmd_segatop, // Sega Top Five (Bra) - &BurnDrvAmatelas, // Sei Senshi Amatelass - &BurnDrvSscandal, // Seishun Scandal (315-5132, Japan) - &BurnDrvpce_sekigaha, // Sekigahara - &BurnDrvSelfeena, // Sel Feena - &BurnDrvGrdnstrmk, // Sen Jin - Guardian Storm (Korea) - &BurnDrvSengokuh, // Sengoku / Sengoku Denshou (NGH-017)(US) - &BurnDrvSengoku, // Sengoku / Sengoku Denshou (NGM-017)(NGH-017) - &BurnDrvSengoku2, // Sengoku 2 / Sengoku Denshou 2 - &BurnDrvSengoku3, // Sengoku 3 / Sengoku Densho 2001 - &BurnDrvSngkAce, // Sengoku Ace (Japan) - &BurnDrvpce_sengokmj, // Sengoku Mahjong - &BurnDrvCpsMercsj, // Senjo no Ookami II (Ookami 2 900302 Japan) - &BurnDrvCommandj, // Senjou no Ookami - &BurnDrvmd_sensible, // Sensible Soccer (Euro) - &BurnDrvmd_sensiblep, // Sensible Soccer (Prototype) - &BurnDrvmd_sensibie, // Sensible Soccer - International Edition (Euro) - &BurnDrvmd_sesame, // Sesame Street Counting Cafe (USA) -#if defined FBA_DEBUG - &BurnDrvSetaroul, // Seta / Visco Roulette? [no comment, NOT WORKING] -#endif - &BurnDrvmd_opensea, // Sezon Ohoty (Rus) - &BurnDrvmd_opensea3, // Sezon Ohoty 3 (Rus) - &BurnDrvSfx, // SF-X - &BurnDrvShackled, // Shackled (US) - &BurnDrvmd_shadow, // Shadow Blasters (USA) -#if defined FBA_DEBUG - &BurnDrvShdancbl, // Shadow Dancer (bootleg) [no comment, NOT WORKING] -#endif - &BurnDrvShdancer1, // Shadow Dancer (set 1) - &BurnDrvShdancerj, // Shadow Dancer (set 2, Japan) - &BurnDrvShdancer, // Shadow Dancer (set 3, US) - &BurnDrvmd_shdancer, // Shadow Dancer - The Secret of Shinobi (World) - &BurnDrvShadfrcjv2, // Shadow Force (Japan Version 2) - &BurnDrvShadfrcj, // Shadow Force (Japan Version 3) - &BurnDrvShadfrce, // Shadow Force (US Version 2) - &BurnDrvmd_beast, // Shadow of the Beast (Euro, USA) - &BurnDrvbeast, // Shadow of the Beast (Neo Geo demo) - &BurnDrvmd_beastj, // Shadow of the Beast - Mashou no Okite (Jpn) - &BurnDrvmd_beast2, // Shadow of the Beast II (Euro, USA) - &BurnDrvShadoww, // Shadow Warriors (World, set 1) - &BurnDrvShadowwa, // Shadow Warriors (World, set 2) - &BurnDrvmd_shadowrnj, // Shadowrun (Jpn) - &BurnDrvmd_shadowrn, // Shadowrun (USA) - &BurnDrvmd_shadowrnp4, // Shadowrun (USA, Prototype, 19931228) - &BurnDrvmd_shadowrnp3, // Shadowrun (USA, Prototype, 19931231) - &BurnDrvmd_shadowrnp1, // Shadowrun (USA, Prototype, 19940125) - &BurnDrvmd_shadowrnp2, // Shadowrun (USA, Prototype, 19940125-C) - &BurnDrvmd_shanewar, // Shane Warne Cricket (Aus) - &BurnDrvpce_shanghai, // Shanghai - &BurnDrvmd_shangh2, // Shanghai II - Dragon's Eye (USA) - &BurnDrvmd_shangh2p, // Shanghai II - Dragon's Eye (USA, Prototype) - &BurnDrvmd_shangh2p1, // Shanghai II - Dragon's Eye (USA, Prototype, Alt) - &BurnDrvmd_shaqfu, // Shaq Fu (Euro, USA) - &BurnDrvmd_shijie, // Shi Jie Zhi Bang Zheng Ba Zhan - World Pro Baseball 94 (Chi) - &BurnDrvmd_labdeathgnk, // Shi no Meikyuu - Labyrinth of Death (Jpn, Game no Kandume MegaCD Rip) - &BurnDrvmd_labdeath, // Shi no Meikyuu - Labyrinth of Death (Jpn, SegaNet) - &BurnDrvmd_lionkin2, // Shi Zi Wang II - Lion King II - &BurnDrvmd_lionkin2a, // Shi Zi Wang II - Lion King II (Pirate, Hacked?) - &BurnDrvmd_sokoban, // Shijou Saidai no Soukoban (Jpn) - &BurnDrvmd_shikinjo, // Shikinjoh (Jpn) - &BurnDrvmd_ragnacen, // Shin Souseiki Ragnacenty (Jpn) - &BurnDrvmd_ragnacenp, // Shin Souseiki Ragnacenty (Jpn, Prototype) - &BurnDrvmd_shindarkj, // Shining and the Darkness (Jpn) - &BurnDrvmd_shinfrce, // Shining Force (USA) - &BurnDrvmd_shinfrcep, // Shining Force (USA, Prototype) - &BurnDrvmd_shinfrcej, // Shining Force - Kamigami no Isan (Jpn) - &BurnDrvmd_shinfrc2, // Shining Force II (Euro) - &BurnDrvmd_shinfrc2u, // Shining Force II (USA) - &BurnDrvmd_shinfrc2p2, // Shining Force II (USA, Prototype, 19940404) - &BurnDrvmd_shinfrc2p1, // Shining Force II (USA, Prototype, 19940607) - &BurnDrvmd_shinfrc2j, // Shining Force II - Koe no Fuuin (Jpn) - &BurnDrvmd_shindarkbr, // Shining in the Darkness (Bra) - &BurnDrvmd_shindark, // Shining in the Darkness (Euro, USA) - &BurnDrvpce_shinobi, // Shinobi - &BurnDrvShinoblb, // Shinobi (beta bootleg, System 16A) - &BurnDrvShinobi1, // Shinobi (set 1, System 16A, FD1094 317-0050) - &BurnDrvShinobi2, // Shinobi (set 2, System 16B, FD1094 317-0049) - &BurnDrvShinobi3, // Shinobi (set 3, System 16B, MC-8123B 317-0054) - &BurnDrvShinobi4, // Shinobi (set 4, System 16B, MC-8123B 317-0054) - &BurnDrvShinobi5, // Shinobi (set 5, System 16B, unprotected) - &BurnDrvShinobi, // Shinobi (set 6, System 16A, unprotected) - &BurnDrvShinobls, // Shinobi (Star bootleg, System 16A) - &BurnDrvShinfz, // Shinobi / FZ-2006 (Korean System 16 bootleg) (ISG Selection Master Type 2006) - &BurnDrvmd_shinobi3, // Shinobi III - Return of the Ninja Master (Euro) - &BurnDrvmd_shinobi3u, // Shinobi III - Return of the Ninja Master (USA) - &BurnDrvmd_ship, // Ship (Prototype) - &BurnDrvShippuMD, // Shippu Mahou Daisakusen - kingdom grandprix - &BurnDrvpce_shiryo, // Shiryou Sensen - &BurnDrvShisen2, // Shisensho II - &BurnDrvmd_shiten, // Shiten Myouou (Jpn) - &BurnDrvshocktro, // Shock Troopers (set 1) - &BurnDrvshocktroa, // Shock Troopers (set 2) - &BurnDrvshocktr2, // Shock Troopers - 2nd Squad - &BurnDrvShocking, // Shocking - &BurnDrvtg_shockman, // Shockman -#if defined FBA_DEBUG - &BurnDrvshootbul, // Shoot the Bull [Analog inputs not hooked up, NOT WORKING] -#endif - &BurnDrvmd_shougi, // Shougi no Hoshi (Jpn) - &BurnDrvpce_shogisi, // Shougi Shodan Icchokusen - &BurnDrvpce_shogism, // Shougi Shoshinsha Muyou - &BurnDrvmd_shoveit, // Shove It! ...The Warehouse Game (USA) - &BurnDrvmd_sdmilhao, // Show do Milhao (Bra) - &BurnDrvmd_sdmilha2, // Show do Milhao Volume 2 (Bra) - &BurnDrvmd_sdmilha2a, // Show do Milhao Volume 2 (Bra, Alt) - &BurnDrvmd_shrek, // Shrek (Rus) - &BurnDrvmd_shrek2, // Shrek 2 (Rus) - &BurnDrvmd_shuihu, // Shui Hu - Feng Yun Zhuan (Chi) - &BurnDrvmd_shuihuzh, // Shui Hu Zhuan (Chi) - &BurnDrvmd_shuramon, // Shura no Mon (Jpn) - &BurnDrvSidepcktb, // Side Pocket (bootleg set 1) - &BurnDrvSidepcktb2, // Side Pocket (bootleg set 2) - &BurnDrvmd_sidepock, // Side Pocket (Euro) - &BurnDrvSidepcktj, // Side Pocket (Japan) - &BurnDrvmd_sidepockj, // Side Pocket (Jpn) - &BurnDrvmd_sidepocku, // Side Pocket (USA) - &BurnDrvSidepckt, // Side Pocket (World) - &BurnDrvpce_sidearms, // Sidearms - Hyper Dyne - &BurnDrvtg_sidearms, // Sidearms - Hyper Dyne - &BurnDrvpce_silentd, // Silent Debuggers - &BurnDrvtg_silentd, // Silent Debuggers - &BurnDrvSilentdj, // Silent Dragon (Japan) - &BurnDrvSilentdu, // Silent Dragon (US) - &BurnDrvSilentd, // Silent Dragon (World) - &BurnDrvSilkworm, // Silk Worm - &BurnDrvSilkwormb, // Silk Worm (bootleg) - &BurnDrvSilkwrmj, // Silk Worm (Japan) - &BurnDrvSilvmil, // Silver Millennium - &BurnDrvpce_sindibad, // Sindibad Chitei no Dai Makyuu - &BurnDrvtg_sinistrn, // Sinistron -#if defined FBA_DEBUG - &BurnDrvSkelagon, // Skelagon [Bad Dump, NOT WORKING] -#endif - &BurnDrvmd_skelkrew, // Skeleton Krew (Euro) - &BurnDrvmd_skelkrewu, // Skeleton Krew (USA) - &BurnDrvmd_skitchin, // Skitchin (Euro, USA) - &BurnDrvpce_skweek, // Skweek - &BurnDrvSkybase, // Sky Base - &BurnDrvSkyfox, // Sky Fox - &BurnDrvSkykidd, // Sky Kid (CUS60 version) - &BurnDrvSkykid, // Sky Kid (new version) - &BurnDrvSkykido, // Sky Kid (old version) - &BurnDrvSkykids, // Sky Kid (Sipem) - &BurnDrvskylancr, // Sky Lancer - &BurnDrvskylance, // Sky Lancer (Esco Trading Co license) - &BurnDrvSkyraidr, // Sky Raiders - &BurnDrvSkysmash, // Sky Smasher - &BurnDrvSkywolf, // Sky Wolf (set 1) - &BurnDrvSkywolf2, // Sky Wolf (set 2) - &BurnDrvSkywolf3, // Sky Wolf (set 3) - &BurnDrvmd_slamshaq, // Slam - Shaq vs. the Legends (Prototype) - &BurnDrvSlapBtJP, // Slap Fight (bootleg set 1) - &BurnDrvSlapBtUK, // Slap Fight (bootleg set 2) - &BurnDrvSlapFghtr, // Slap Fight (bootleg set 3) - &BurnDrvSlapFigh, // Slap Fight (Japan set 1) - &BurnDrvmd_slapfigh, // Slap Fight MD (Jpn) - &BurnDrvSlapshot, // Slap Shot (Japan) - &BurnDrvmd_slaughtr, // Slaughter Sport (USA) - &BurnDrvmd_slimewj, // Slime World (Jpn) - &BurnDrvSlyspy2, // Sly Spy (US revision 2) - &BurnDrvSlyspy, // Sly Spy (US revision 3) - &BurnDrvmd_snakernr, // Snake Rattle n' Roll (Euro) - &BurnDrvSnapjack, // Snap Jack - &BurnDrvSnapper, // Snapper (Korea) - &BurnDrvmd_snezkoro, // Snezhnaya Koroleva (Rus) - &BurnDrvsvcboot, // SNK vs. Capcom - SVC Chaos (bootleg) - &BurnDrvsvcpcb, // SNK vs. Capcom - SVC Chaos (JAMMA PCB, set 1) - &BurnDrvsvcpcba, // SNK vs. Capcom - SVC Chaos (JAMMA PCB, set 2) - &BurnDrvsvc, // SNK vs. Capcom - SVC Chaos (NGM-2690)(NGH-2690) - &BurnDrvsvcplus, // SNK vs. Capcom - SVC Chaos Plus (bootleg set 1) - &BurnDrvsvcplusa, // SNK vs. Capcom - SVC Chaos Plus (bootleg set 2) - &BurnDrvsvcsplus, // SNK vs. Capcom - SVC Chaos Super Plus (bootleg) - &BurnDrvSnowbrod, // Snow Bros. - Nick & Tom (Dooyong license) - &BurnDrvSnowbroj, // Snow Bros. - Nick & Tom (Japan) - &BurnDrvmd_snowbros, // Snow Bros. - Nick & Tom (Jpn) - &BurnDrvSnowbros, // Snow Bros. - Nick & Tom (set 1) - &BurnDrvSnowbroa, // Snow Bros. - Nick & Tom (set 2) - &BurnDrvSnowbrob, // Snow Bros. - Nick & Tom (set 3) - &BurnDrvSnowbroc, // Snow Bros. - Nick & Tom (set 4) - &BurnDrvSnowbroswb, // Snow Bros. - Nick & Tom (The Winter Bobble hardware bootleg) - &BurnDrvSnowbro2, // Snow Bros. 2 - with new elves - &BurnDrvSnowbro3, // Snow Brothers 3 - Magical Adventure - &BurnDrvSocbrawlh, // Soccer Brawl (NGH-031) - &BurnDrvSocbrawl, // Soccer Brawl (NGM-031) - &BurnDrvmd_socket, // Socket (USA) - &BurnDrvpce_sokoban, // Sokoban World - &BurnDrvSokonuke, // Sokonuke Taisen Game (Japan) - &BurnDrvSoldivid, // Sol Divide - The Sword Of Darkness - &BurnDrvmd_soldeace, // Sol-Deace (USA) - &BurnDrvpce_soldblad, // Soldier Blade - &BurnDrvtg_soldblad, // Soldier Blade - &BurnDrvpce_soldblas, // Soldier Blade Special - Caravan Stage - &BurnDrvAmazon, // Soldier Girl Amazon - &BurnDrvmd_soldfort, // Soldiers of Fortune (USA) - &BurnDrvmd_soleil, // Soleil (Euro) - &BurnDrvmd_soleilf, // Soleil (Fra) - &BurnDrvmd_soleilg, // Soleil (Ger) - &BurnDrvmd_soleils, // Soleil (Spa) - &BurnDrvSolfigtr, // Solitary Fighter (World) - &BurnDrvSolomonj, // Solomon's Key (Japan) - &BurnDrvSolomon, // Solomon's Key (US) - &BurnDrvtg_somerass, // Somer Assault - &BurnDrvSonofphx, // Son of Phoenix - &BurnDrvSonson, // Son Son - &BurnDrvSonsonj, // Son Son (Japan) - &BurnDrvpce_sonson2, // Son Son II - &BurnDrvmd_skp12, // Sonic & Knuckles (Prototype 0525, 19940525, 15.28) - &BurnDrvmd_skp11, // Sonic & Knuckles (Prototype 0606, 19940605, 22.25, S2K chip) - &BurnDrvmd_skp10, // Sonic & Knuckles (Prototype 0606, 19940606, 10.02) - &BurnDrvmd_skp09, // Sonic & Knuckles (Prototype 0608, 19940608, 03.35, S2K chip) - &BurnDrvmd_skp08, // Sonic & Knuckles (Prototype 0608, 19940608, 05.03) - &BurnDrvmd_skp07, // Sonic & Knuckles (Prototype 0610, 19940610, 03.11, S2K chip) - &BurnDrvmd_skp06, // Sonic & Knuckles (Prototype 0610, 19940610, 07.49) - &BurnDrvmd_skp05, // Sonic & Knuckles (Prototype 0612, 19940612, 18.18, S2K chip) - &BurnDrvmd_skp04, // Sonic & Knuckles (Prototype 0612, 19940612, 18.27) - &BurnDrvmd_skp02, // Sonic & Knuckles (Prototype 0618, 19940618, 09.15) - &BurnDrvmd_skp03, // Sonic & Knuckles (Prototype 0618, 19940618, 9.07, S2K chip) - &BurnDrvmd_skp01, // Sonic & Knuckles (Prototype 0619, 19940619, 08.18) - &BurnDrvmd_sk, // Sonic & Knuckles (World) - &BurnDrvmd_sks1, // Sonic & Knuckles + Sonic the Hedgehog (World) - &BurnDrvmd_sks2, // Sonic & Knuckles + Sonic the Hedgehog 2 (World) - &BurnDrvmd_sks3, // Sonic & Knuckles + Sonic the Hedgehog 3 (World) - &BurnDrvmd_sonic3c, // Sonic 3C (Prototype 0408, 19940408, 17.29) - &BurnDrvmd_sonic3ca, // Sonic 3C (Prototype 0517, 19940517, 17.08) - &BurnDrvmd_sonic3d, // Sonic 3D - Flickies' Island (Euro) ~ Sonic 3D Blast (USA, Kor) - &BurnDrvmd_sonic3dp8, // Sonic 3D Blast (Prototype 73, 19960703, 13.58) - &BurnDrvmd_sonic3dp7, // Sonic 3D Blast (Prototype 814, 19960815, 07.55) - &BurnDrvmd_sonic3dp6, // Sonic 3D Blast (Prototype 819, 19960819, 19.49) - &BurnDrvmd_sonic3dp5, // Sonic 3D Blast (Prototype 825, 19960826, 15.46) - &BurnDrvmd_sonic3dp4, // Sonic 3D Blast (Prototype 830, 19960831, 08.19) - &BurnDrvmd_sonic3dp3, // Sonic 3D Blast (Prototype 831, 19960903, 10.07) - &BurnDrvmd_sonic3dp2, // Sonic 3D Blast (Prototype 94, 19960904, 12.01) - &BurnDrvmd_sonic3dp1, // Sonic 3D Blast (USA, Prototype) - &BurnDrvSbm, // Sonic Blast Man (Japan) - &BurnDrvSonicbom, // Sonic Boom (FD1094 317-0053) - &BurnDrvmd_soniccmp, // Sonic Compilation (Euro) ~ Sonic Classics (USA, Kor) - &BurnDrvmd_soniccmp1, // Sonic Compilation (Euro, Earlier) - &BurnDrvmd_scrack, // Sonic Crackers (Jpn, Prototype) - &BurnDrvmd_sonicer, // Sonic Eraser (Jpn, SegaNet) - &BurnDrvmd_sonicjam, // Sonic Jam 6 - &BurnDrvmd_sonicjam1, // Sonic Jam 6 (Alt) - &BurnDrvmd_sonicjam2, // Sonic Jam 6 (Hacked?) - &BurnDrvtg_wbeach, // Sonic Spike - World Championship Beach Volleyball - &BurnDrvmd_sspin, // Sonic Spinball (Euro) - &BurnDrvmd_sspinj, // Sonic Spinball (Jpn) - &BurnDrvmd_sspinp, // Sonic Spinball (Prototype) - &BurnDrvmd_sspinu, // Sonic Spinball (USA) - &BurnDrvmd_sspinua, // Sonic Spinball (USA, Alt) - &BurnDrvmd_sonic, // Sonic the Hedgehog (Euro, USA) - &BurnDrvmd_sonicj, // Sonic the Hedgehog (Jpn, Kor) - &BurnDrvmd_sonicpir, // Sonic the Hedgehog (Pirate, Ripped from Golden 10 in 1) - &BurnDrvmd_sonic2p8, // Sonic the Hedgehog 2 (Beta 4, 19920918, 16.26) - &BurnDrvmd_sonic2p7, // Sonic the Hedgehog 2 (Beta 5, 19920921, 12.06) - &BurnDrvmd_sonic2p6, // Sonic the Hedgehog 2 (Beta 6, 19920922, 18.47) - &BurnDrvmd_sonic2p5, // Sonic the Hedgehog 2 (Beta 6, 19920922, 19.42) - &BurnDrvmd_sonic2p4, // Sonic the Hedgehog 2 (Beta 7, 19920924, 09.26) - &BurnDrvmd_sonic2p3, // Sonic the Hedgehog 2 (Beta 8, 19920924, 19.27) - &BurnDrvmd_sonic2p2, // Sonic the Hedgehog 2 (Prototype) - &BurnDrvmd_sonic2a, // Sonic the Hedgehog 2 (World) - &BurnDrvmd_sonic2p1, // Sonic the Hedgehog 2 (World, Prototype) - &BurnDrvmd_sonic2b, // Sonic the Hedgehog 2 (World, Rev. 01a) - &BurnDrvmd_sonic2, // Sonic the Hedgehog 2 (World, Rev. A) - &BurnDrvmd_sonic2c, // Sonic the Hedgehog 2 (World, Rev. SC02) - &BurnDrvmd_sonic3, // Sonic the Hedgehog 3 (Euro) - &BurnDrvmd_sonic3j, // Sonic the Hedgehog 3 (Jpn, Kor) - &BurnDrvmd_sonic3pir, // Sonic the Hedgehog 3 (Pirate) - &BurnDrvmd_sonic3u, // Sonic the Hedgehog 3 (USA) - &BurnDrvSonicwi, // Sonic Wings (Japan) - &BurnDrvmd_sorcerkj, // Sorcer Kingdom (Jpn) - &BurnDrvSStriker, // Sorcer Striker (World) - &BurnDrvSStrikrA, // Sorcer Striker (World, alt) - &BurnDrvmd_sorcerk1, // Sorcerer's Kingdom (USA) - &BurnDrvmd_sorcerk, // Sorcerer's Kingdom (USA, v1.1) - &BurnDrvmd_sorcer, // Sorcerian (Jpn) - &BurnDrvSotsugyo, // Sotsugyo Shousho - &BurnDrvmd_soulblad, // Soul Blade - &BurnDrvmd_soulblada, // Soul Blade (Alt) - &BurnDrvmd_souledge, // Soul Edge vs Samurai Spirits (Pirate) - &BurnDrvmd_souledgea, // Soul Edge vs Samurai Spirits (Pirate, Cracked) - &BurnDrvmd_sndtool, // Sound Tool v2.2? - &BurnDrvSpacbatt, // Space Battle (bootleg set 1) - &BurnDrvSpacbat2, // Space Battle (bootleg set 2) - &BurnDrvSbsgomo, // Space Battle Ship Gomorrah - &BurnDrvSbombera, // Space Bomber - &BurnDrvSbomber, // Space Bomber (ver. B) - &BurnDrvSpcdrag, // Space Dragon (Moon Cresta bootleg, set 1) - &BurnDrvSpcdraga, // Space Dragon (Moon Cresta bootleg, set 2) - &BurnDrvspacecho, // Space Echo (bootleg) - &BurnDrvSpacempr, // Space Empire (bootleg) - &BurnDrvmd_spacebob, // Space Funky B.O.B. (Jpn) - &BurnDrvSpacegun, // Space Gun (World) - &BurnDrvtg_sharrier, // Space Harrier - &BurnDrvpce_sharrier, // Space Harrier - &BurnDrvSharrier1, // Space Harrier (8751 315-5163) - &BurnDrvSharrier, // Space Harrier (Rev A, 8751 315-5163A) - &BurnDrvmd_sharrierj, // Space Harrier II (Jpn, Launch Cart) - &BurnDrvmd_sharrier, // Space Harrier II (World) - &BurnDrvpce_spaceinv, // Space Invaders - Fukkatsu no Hi - &BurnDrvmd_sinv90, // Space Invaders 90 (Jpn) - &BurnDrvmd_sinv91, // Space Invaders 91 (USA) - &BurnDrvSpacedxo, // Space Invaders DX (Japan, v2.0) - &BurnDrvSpacedxj, // Space Invaders DX (Japan, v2.1) - &BurnDrvSpacedx, // Space Invaders DX (US, v2.1) - &BurnDrvGalap1, // Space Invaders Galactica (galaxiaj hack) - &BurnDrvSinvasnb, // Space Invasion (bootleg) - &BurnDrvSinvasn, // Space Invasion (Europe) - &BurnDrvSpcpostn, // Space Position (Japan) - &BurnDrvSraider, // Space Raider - &BurnDrvSpctbird, // Space Thunderbird - &BurnDrvmd_sparkstr, // Sparkster (Euro) - &BurnDrvmd_sparkstrj, // Sparkster (Jpn) - &BurnDrvmd_sparkstru, // Sparkster (USA) - &BurnDrvSpartanx, // Spartan X (Japan) - &BurnDrvSpatter, // Spatter - &BurnDrvspeakres, // Speak & Rescue - &BurnDrvpce_sci, // Special Criminal Investigation - &BurnDrvScij, // Special Criminal Investigation (Japan) - &BurnDrvScinegro, // Special Criminal Investigation (Negro bootleg) - &BurnDrvSciu, // Special Criminal Investigation (US) - &BurnDrvSci, // Special Criminal Investigation (World set 1) - &BurnDrvScia, // Special Criminal Investigation (World set 2) - &BurnDrvSpec2k, // Spectrum 2000 (Euro) - &BurnDrvSpdcoin, // Speed Coin (prototype) - &BurnDrvSpeedspn, // Speed Spin - &BurnDrvmd_speedbl2, // Speedball 2 (Euro) - &BurnDrvmd_speedbl2j, // Speedball 2 (Jpn) - &BurnDrvmd_speedbl2u, // Speedball 2 - Brutal Deluxe (USA) - &BurnDrvSpelunkr, // Spelunker - &BurnDrvSpelunkrj, // Spelunker (Japan) - &BurnDrvSpelunk2, // Spelunker II - &BurnDrvmd_spidmaxc, // Spider-Man & Venom - Maximum Carnage (World) - &BurnDrvmd_spidermn, // Spider-Man (Euro, USA) - &BurnDrvmd_spidermnp1, // Spider-Man (USA, Prototype) - &BurnDrvmd_spidermnp2, // Spider-Man (USA, Prototype, Earlier) - &BurnDrvmd_spidxmen, // Spider-Man and X-Men - Arcade's Revenge (Euro, USA) - &BurnDrvmd_spidking, // Spider-Man vs. the Kingpin (World) - &BurnDrvspidermi, // Spiderman (Intro demo) - &BurnDrvspinmast, // Spin Master / Miracle Adventure - &BurnDrvpce_spinpair, // Spin Pair - &BurnDrvSpinlbrj, // Spinal Breakers (Japan) - &BurnDrvSpinlbru, // Spinal Breakers (US) - &BurnDrvSpinlbrk, // Spinal Breakers (World) - &BurnDrvpce_spirwave, // Spiral Wave - &BurnDrvmd_spiritwf, // Spiritual Warfare (USA) - &BurnDrvmd_spirou, // Spirou (Euro) - &BurnDrvpce_splatth, // Splatterhouse - &BurnDrvtg_splatth, // Splatterhouse - &BurnDrvmd_splatth2, // Splatterhouse 2 (Euro) - &BurnDrvmd_splatth2u, // Splatterhouse 2 (USA) - &BurnDrvmd_splatth3, // Splatterhouse 3 (USA) - &BurnDrvmd_splatth2j, // Splatterhouse Part 2 (Jpn) - &BurnDrvmd_splatth3j, // Splatterhouse Part 3 (Jpn, Kor) - &BurnDrvmd_spongbob, // Sponge Bob (Rus) - &BurnDrvmd_sportg, // Sport Games (Bra) - &BurnDrvmd_sporttbb, // Sports Talk Baseball (USA) - &BurnDrvmd_spotgo, // Spot Goes to Hollywood (Euro) - &BurnDrvmd_spotgou, // Spot Goes to Hollywood (USA) - &BurnDrvSpringer, // Springer - &BurnDrvmd_spykids4, // Spy Kids 4 - All The Time In The World (Rus) - &BurnDrvSquash, // Squash (Ver. 1.0) - &BurnDrvmd_squirrel, // Squirrel King (Chi) - &BurnDrvStagger1, // Stagger I (Japan) - &BurnDrvstakwin, // Stakes Winner / Stakes Winner - GI kinzen seiha e no michi - &BurnDrvstakwin2, // Stakes Winner 2 - &BurnDrvmd_starctrl, // Star Control (USA) - &BurnDrvmd_starcrus, // Star Cruiser (Jpn) - &BurnDrvStarfght, // Star Fighter - &BurnDrvStarfgmc, // Star Fighter (Moon Cresta bootleg) - &BurnDrvStarjack, // Star Jacker (Sega) - &BurnDrvStarjacks, // Star Jacker (Stern) - &BurnDrvmd_stds9, // Star Trek - Deep Space Nine - Crossroads of Time (Euro) - &BurnDrvmd_stds9u, // Star Trek - Deep Space Nine - Crossroads of Time (USA) - &BurnDrvmd_sttngp04, // Star Trek - The Next Generation - Echoes from the Past (Prototype, 19940103) - &BurnDrvmd_sttngp03, // Star Trek - The Next Generation - Echoes from the Past (Prototype, 19940110) - &BurnDrvmd_sttngp02, // Star Trek - The Next Generation - Echoes from the Past (Prototype, 19940118) - &BurnDrvmd_sttngp01, // Star Trek - The Next Generation - Echoes from the Past (Prototype, 19940125) - &BurnDrvmd_sttngp06, // Star Trek - The Next Generation - Echoes from the Past (Prototype, 19941228) - &BurnDrvmd_sttngp05, // Star Trek - The Next Generation - Echoes from the Past (Prototype, 19941229) - &BurnDrvmd_sttnga, // Star Trek - The Next Generation - Echoes from the Past (USA) - &BurnDrvmd_sttng, // Star Trek - The Next Generation - Echoes from the Past (USA, v1.1) - &BurnDrvmd_starwars, // Star Wars (Rus) - &BurnDrvmd_starjedi, // Star Wars Jedi (Rus) - &BurnDrvmd_starfl1, // Starflight (Euro, USA) - &BurnDrvmd_starfl, // Starflight (Euro, USA, v1.1) - &BurnDrvmd_stargatep, // Stargate (Euro, Prototype) - &BurnDrvmd_stargate, // Stargate (Euro, USA) - &BurnDrvmd_steelemp, // Steel Empire (USA) - &BurnDrvmd_steeltal, // Steel Talons (Euro, USA) - &BurnDrvmd_steeltalj, // Steel Talons (Jpn, Kor) - &BurnDrvmd_steeltalp, // Steel Talons (USA, Prototype) - &BurnDrvStera, // Steraranger (Moon Cresta bootleg) - &BurnDrvmd_renstim, // Stimpy's Invention Starring Starring Ren Hoëk & Stimpy (Euro) - &BurnDrvmd_renstimu, // Stimpy's Invention Starring Starring Ren Hoëk & Stimpy (USA) - &BurnDrvmd_renstimup, // Stimpy's Invention Starring Starring Ren Hoëk & Stimpy (USA, Prototype) - &BurnDrvmd_stonprot, // Stone Protectors (USA, Prototype) - &BurnDrvStoneage, // Stoneage (bootleg of Caveman Ninja) - &BurnDrvmd_strmlordj, // Stormlord (Jpn) - &BurnDrvmd_strmlord, // Stormlord (USA) - &BurnDrvStrfbomb, // Strafe Bomb - &BurnDrvpce_stratego, // Stratego - &BurnDrvStratgyx, // Strategy X - &BurnDrvStratgys, // Strategy X (Stern) - &BurnDrvstratvox, // Stratovox - &BurnDrvstratvob, // Stratovox (bootleg) - &BurnDrvStreakng, // Streaking (set 1) - &BurnDrvStreaknga, // Streaking (set 2) - &BurnDrvsfjp, // Street Fighter (Japan) - &BurnDrvsfp, // Street Fighter (Prototype) - &BurnDrvsfu, // Street Fighter (US set 1) - &BurnDrvsfua, // Street Fighter (US set 2) - &BurnDrvsf, // Street Fighter (World) -// &BurnDrvCpsSfach, // Street Fighter Alpha (CPS Changer, 950727 Publicity US) [no comment] - &BurnDrvCpsSfar3, // Street Fighter Alpha - warriors' dreams (950605 Euro) - &BurnDrvCpsSfar2, // Street Fighter Alpha - warriors' dreams (950627 Euro) - &BurnDrvCpsSfau, // Street Fighter Alpha - warriors' dreams (950627 USA) - &BurnDrvCpsSfar1, // Street Fighter Alpha - warriors' dreams (950718 Euro) - &BurnDrvCpsSfad, // Street Fighter Alpha - warriors' dreams (950727 Euro Phoenix Edition) - &BurnDrvCpsSfa, // Street Fighter Alpha - warriors' dreams (950727 Euro) - &BurnDrvCpsSfaud, // Street Fighter Alpha - warriors' dreams (950727 USA Phoenix Edition) - &BurnDrvCpsSfa2, // Street Fighter Alpha 2 (960229 Euro) - &BurnDrvCpsSfa2ur1, // Street Fighter Alpha 2 (960306 USA) - &BurnDrvCpsSfa2u, // Street Fighter Alpha 2 (960430 USA) - &BurnDrvCpsSfa3b, // Street Fighter Alpha 3 (980629 Brazil) - &BurnDrvCpsSfa3hr1, // Street Fighter Alpha 3 (980629 Hispanic) - &BurnDrvCpsSfa3ur1, // Street Fighter Alpha 3 (980629 USA) - &BurnDrvCpsSfa3, // Street Fighter Alpha 3 (980904 Euro) - &BurnDrvCpsSfa3h, // Street Fighter Alpha 3 (980904 Hispanic) - &BurnDrvCpsSfa3ud, // Street Fighter Alpha 3 (980904 USA Phoenix Edition) - &BurnDrvCpsSfa3u, // Street Fighter Alpha 3 (980904 USA) - &BurnDrvCpsSf2amf, // Street Fighter II - Champion Edition (Alpha Magic-F bootleg set 1, 920313 etc) - &BurnDrvCpsSf2amf2, // Street Fighter II - Champion Edition (Alpha Magic-F bootleg set 2, 920313 etc) - &BurnDrvCpsSf2amf3, // Street Fighter II - Champion Edition (Alpha Magic-F bootleg set 3, 920313 etc) - &BurnDrvCpsSf2amf4, // Street Fighter II - Champion Edition (Alpha Magic-F bootleg set 4, 920313 etc) - &BurnDrvCpsSf2amf5, // Street Fighter II - Champion Edition (Alpha Magic-F bootleg set 5, 920313 etc) - &BurnDrvCpsSf2amf6, // Street Fighter II - Champion Edition (Alpha Magic-F bootleg set 6, 920313 etc) - &BurnDrvCpsSf2amf7, // Street Fighter II - Champion Edition (Alpha Magic-F bootleg set 7, 920313 etc) - &BurnDrvCpsSf2ua, // Street Fighter II - The World Warrior (910206 USA) - &BurnDrvCpsSf2eb, // Street Fighter II - The World Warrior (910214 etc) - &BurnDrvCpsSf2ja, // Street Fighter II - The World Warrior (910214 Japan) - &BurnDrvCpsSf2ub, // Street Fighter II - The World Warrior (910214 USA) - &BurnDrvCpsSf2ee, // Street Fighter II - The World Warrior (910228 etc) - &BurnDrvCpsSf2ue, // Street Fighter II - The World Warrior (910228 USA) - &BurnDrvCpsSf2jc, // Street Fighter II - The World Warrior (910306 Japan) - &BurnDrvCpsSf2uc, // Street Fighter II - The World Warrior (910306 USA) - &BurnDrvCpsSf2ud, // Street Fighter II - The World Warrior (910318 USA) - &BurnDrvCpsSf2jf, // Street Fighter II - The World Warrior (910411 Japan) - &BurnDrvCpsSf2uf, // Street Fighter II - The World Warrior (910411 USA) - &BurnDrvCpsSf2, // Street Fighter II - The World Warrior (910522 etc) - &BurnDrvCpsSf2jh, // Street Fighter II - The World Warrior (910522 Japan) - &BurnDrvCpsSf2ug, // Street Fighter II - The World Warrior (910522 USA, rev G) - &BurnDrvCpsSf2ui, // Street Fighter II - The World Warrior (910522 USA, rev I) - &BurnDrvCpsSf2uk, // Street Fighter II - The World Warrior (911101 USA) - &BurnDrvCpsSf2j, // Street Fighter II - The World Warrior (911210 Japan) - &BurnDrvCpsSf2jl, // Street Fighter II - The World Warrior (920312 Japan) - &BurnDrvCpsSf2b, // Street Fighter II - The World Warrior (bootleg, 910214 etc, set 1) - &BurnDrvCpsSf2b2, // Street Fighter II - The World Warrior (bootleg, 910214 etc, set 2) - &BurnDrvCpsSf2qp1, // Street Fighter II - The World Warrior (Quicken Pt-I bootleg, 910214 USA) - &BurnDrvCpsSf2stt, // Street Fighter II - The World Warrior (STT, TAB Austria bootleg, 910214 etc) - &BurnDrvCpsSf2ebbl, // Street Fighter II - The World Warrior (TAB Austria bootleg, 910214 etc) - &BurnDrvCpsSf2thndr, // Street Fighter II - The World Warrior (Thunder Edition bootleg, 910214 etc) - &BurnDrvpce_sf2ce, // Street Fighter II' - Champion Edition - &BurnDrvCpsSf2ceeabl, // Street Fighter II' - Champion Edition (920313 etc bootleg set 1) - &BurnDrvCpsSf2ceeab2, // Street Fighter II' - Champion Edition (920313 etc bootleg set 2) - &BurnDrvCpsSf2ceuabl, // Street Fighter II' - Champion Edition (920313 USA bootleg set 1) - &BurnDrvCpsSf2ceuab2, // Street Fighter II' - Champion Edition (920313 USA bootleg set 2) - &BurnDrvCpsSf2ceuab3, // Street Fighter II' - Champion Edition (920313 USA bootleg set 3) - &BurnDrvCpsSf2ceuab4, // Street Fighter II' - Champion Edition (920313 USA bootleg set 4) - &BurnDrvCpsSf2ceuab5, // Street Fighter II' - Champion Edition (920313 USA bootleg set 5) - &BurnDrvCpsSf2ceuab6, // Street Fighter II' - Champion Edition (920313 USA bootleg set 6) - &BurnDrvCpsSf2cejabl, // Street Fighter II' - Champion Edition (920322 Japan bootleg set 1) - &BurnDrvCpsSf2cejab2, // Street Fighter II' - Champion Edition (920322 Japan bootleg set 2) - &BurnDrvCpsSf2ceucbl, // Street Fighter II' - Champion Edition (920803 USA bootleg) - &BurnDrvCpsSf2accp2, // Street Fighter II' - Champion Edition (Accelerator Pt.II bootleg, 920313 Testron) - &BurnDrvCpsSf2acc, // Street Fighter II' - Champion Edition (Accelerator! bootleg set 1, 920313 USA) - &BurnDrvCpsSf2acca, // Street Fighter II' - Champion Edition (Accelerator! bootleg set 2, 920310 Accelerator!) -#if defined FBA_DEBUG - &BurnDrvCpsSf2any, // Street Fighter II' - Champion Edition (bootleg) [no comment, NOT WORKING] -// &BurnDrvCpsSf2cebr, // Street Fighter II' - Champion Edition (bootleg, Brazil) [no comment] -// &BurnDrvCpsSf2ceh, // Street Fighter II' - Champion Edition (bootleg, Hispanic) [no comment] -#endif - &BurnDrvCpsSf2dkot2, // Street Fighter II' - Champion Edition (Double K.O. Turbo II bootleg, 902140 USA) - &BurnDrvCpsSf2bhh, // Street Fighter II' - Champion Edition (Hungh-Hsi bootleg, 920313 Taiwan) - &BurnDrvCpsSf2mega, // Street Fighter II' - Champion Edition (Mega Co bootleg set 1, 920313 etc) - &BurnDrvCpsSf2mega2, // Street Fighter II' - Champion Edition (Mega Co bootleg set 2, 920313 etc) - &BurnDrvCpsSf2rb, // Street Fighter II' - Champion Edition (Rainbow bootleg set 1, 920322 etc) - &BurnDrvCpsSf2rb2, // Street Fighter II' - Champion Edition (Rainbow bootleg set 2, 920322 etc) - &BurnDrvCpsSf2rb3, // Street Fighter II' - Champion Edition (Rainbow bootleg set 3, 920322 etc) - &BurnDrvCpsSf2rb4, // Street Fighter II' - Champion Edition (Rainbow bootleg set 4, 920322 Japan) - &BurnDrvCpsSf2rb5, // Street Fighter II' - Champion Edition (Rainbow bootleg set 5, 920322 Japan) - &BurnDrvCpsSf2rb6, // Street Fighter II' - Champion Edition (Rainbow bootleg set 6, 920313 etc) - &BurnDrvCpsSf2red, // Street Fighter II' - Champion Edition (Red Wave bootleg set 1, 920313 etc) - &BurnDrvCpsSf2red2, // Street Fighter II' - Champion Edition (Red Wave bootleg set 2, 920313 etc) - &BurnDrvCpsSf2ceea, // Street Fighter II' - Champion Edition (street fighter 2' 920313 etc) - &BurnDrvCpsSf2ceua, // Street Fighter II' - Champion Edition (street fighter 2' 920313 USA) - &BurnDrvCpsSf2ceja, // Street Fighter II' - Champion Edition (street fighter 2' 920322 Japan) - &BurnDrvCpsSf2ce, // Street Fighter II' - Champion Edition (street fighter 2' 920513 etc) - &BurnDrvCpsSf2cejb, // Street Fighter II' - Champion Edition (street fighter 2' 920513 Japan) - &BurnDrvCpsSf2ceub, // Street Fighter II' - Champion Edition (street fighter 2' 920513 USA) - &BurnDrvCpsSf2cejc, // Street Fighter II' - Champion Edition (street fighter 2' 920803 Japan) - &BurnDrvCpsSf2ceuc, // Street Fighter II' - Champion Edition (street fighter 2' 920803 USA) - &BurnDrvCpsSf2tlona, // Street Fighter II' - Champion Edition (Tu Long bootleg set 1, 811102 001) - &BurnDrvCpsSf2tlonb, // Street Fighter II' - Champion Edition (Tu Long bootleg set 2, 811102 001) - &BurnDrvCpsSf2tlonc, // Street Fighter II' - Champion Edition (Tu Long bootleg set 3, 811102 001) - &BurnDrvCpsSf2v004, // Street Fighter II' - Champion Edition (V004 bootleg set 1, 102092 USA) - &BurnDrvCpsSf2v0042, // Street Fighter II' - Champion Edition (V004 bootleg set 2, 920313 etc) - &BurnDrvCpsSf2v0043, // Street Fighter II' - Champion Edition (V004 bootleg set 3, 920313 etc) - &BurnDrvCpsSf2yyc, // Street Fighter II' - Champion Edition (YYC bootleg set 1, 920313 etc) - &BurnDrvCpsSf2yyc2, // Street Fighter II' - Champion Edition (YYC bootleg set 2, 920313 etc) -#if defined FBA_DEBUG - &BurnDrvCpsSf2hfub, // Street Fighter II' - Hyper Fighting (bootleg set 3, street fighter 2' T 921209 USA) [no comment, NOT WORKING] -#endif - &BurnDrvCpsSf2hf, // Street Fighter II' - Hyper Fighting (street fighter 2' T 921209 ETC) - &BurnDrvCpsSf2hfu, // Street Fighter II' - Hyper Fighting (street fighter 2' T 921209 USA) - &BurnDrvCpsSf2mdt, // Street Fighter II' - Magic Delta Turbo (bootleg set 1 (with YM2151 + 2xMSM5205), 920313 etc) - &BurnDrvCpsSf2mdta, // Street Fighter II' - Magic Delta Turbo (bootleg set 2 (with YM2151 + 2xMSM5205), 920313 etc) - &BurnDrvmd_sf2, // Street Fighter II' - Special Champion Edition (Euro) - &BurnDrvmd_sf2u, // Street Fighter II' - Special Champion Edition (USA) - &BurnDrvCpsSf2koryu, // Street Fighter II' - Xiang Long (bootleg set 1, 811102 001) - &BurnDrvCpsSf2koryu2, // Street Fighter II' - Xiang Long (bootleg set 2, 811102 001) - &BurnDrvCpsSf2koryu3, // Street Fighter II' - Xiang Long (bootleg set 3, 811102 001) - &BurnDrvmd_sf2j, // Street Fighter II' Plus (Jpn, Asia, Kor) - &BurnDrvmd_sf2pir, // Street Fighter II' Turbo (Pirate) - &BurnDrvCpsSf2hfjb, // Street Fighter II' Turbo - Hyper Fighting (bootleg set 1, 921209 Japan) - &BurnDrvCpsSf2hfjb2, // Street Fighter II' Turbo - Hyper Fighting (bootleg set 2, 921209 Japan) - &BurnDrvCpsSf2hfj, // Street Fighter II' Turbo - Hyper Fighting (street fighter 2' T 921209 Japan) - &BurnDrvCpsSf2dongb, // Street Fighter II': Champion Edition (Dongfang Bubai protection bootleg, etc 920313) - &BurnDrvSfiii2n, // Street Fighter III 2nd Impact: Giant Attack (Asia 970930, NO CD) - &BurnDrvSfiii2j, // Street Fighter III 2nd Impact: Giant Attack (Japan 970930) - &BurnDrvSfiii2, // Street Fighter III 2nd Impact: Giant Attack (USA 970930) - &BurnDrvSfiii3r1, // Street Fighter III 3rd Strike: Fight for the Future (Euro 990512) - &BurnDrvSfiii3, // Street Fighter III 3rd Strike: Fight for the Future (Euro 990608) - &BurnDrvSfiii3nr1, // Street Fighter III 3rd Strike: Fight for the Future (Japan 990512, NO CD) - &BurnDrvSfiii3n, // Street Fighter III 3rd Strike: Fight for the Future (Japan 990608, NO CD) - &BurnDrvSfiii3ur1, // Street Fighter III 3rd Strike: Fight for the Future (USA 990512) - &BurnDrvSfiii3u, // Street Fighter III 3rd Strike: Fight for the Future (USA 990608) - &BurnDrvSfiiin, // Street Fighter III: New Generation (Asia 970204, NO CD) - &BurnDrvSfiiih, // Street Fighter III: New Generation (Hispanic 970204) - &BurnDrvSfiiij, // Street Fighter III: New Generation (Japan 970204) - &BurnDrvSfiii, // Street Fighter III: New Generation (USA 970204) - &BurnDrvCpsSfzar1, // Street Fighter Zero (950605 Asia) - &BurnDrvCpsSfzjr2, // Street Fighter Zero (950605 Japan) - &BurnDrvCpsSfza, // Street Fighter Zero (950627 Asia) - &BurnDrvCpsSfzhr1, // Street Fighter Zero (950627 Hispanic) - &BurnDrvCpsSfzjr1, // Street Fighter Zero (950627 Japan) - &BurnDrvCpsSfzh, // Street Fighter Zero (950718 Hispanic) - &BurnDrvCpsSfzbr1, // Street Fighter Zero (950727 Brazil) - &BurnDrvCpsSfzj, // Street Fighter Zero (950727 Japan) - &BurnDrvCpsSfzb, // Street Fighter Zero (951109 Brazil) -// &BurnDrvCpsSfzbch, // Street Fighter Zero (CPS Changer, 950727 Brazil) [no comment] -// &BurnDrvCpsSfzech, // Street Fighter Zero (CPS Changer, 950727 Euro) [no comment] -// &BurnDrvCpsSfzhch, // Street Fighter Zero (CPS Changer, 950727 Hispanic) [no comment] -// &BurnDrvCpsSfzach, // Street Fighter Zero (CPS Changer, 950925 Asia) [no comment] - &BurnDrvCpsSfzch, // Street Fighter Zero (CPS Changer, 951020 Japan) - &BurnDrvCpsSfz2ad, // Street Fighter Zero 2 (960227 Asia Phoenix Edition) - &BurnDrvCpsSfz2a, // Street Fighter Zero 2 (960227 Asia) - &BurnDrvCpsSfz2jd, // Street Fighter Zero 2 (960227 Japan Phoenix Edition) - &BurnDrvCpsSfz2jr1, // Street Fighter Zero 2 (960227 Japan) - &BurnDrvCpsSfz2n, // Street Fighter Zero 2 (960229 Oceania) - &BurnDrvCpsSfz2br1, // Street Fighter Zero 2 (960304 Brazil) - &BurnDrvCpsSfz2h, // Street Fighter Zero 2 (960304 Hispanic) - &BurnDrvCpsSfz2j, // Street Fighter Zero 2 (960430 Japan) - &BurnDrvCpsSfz2b, // Street Fighter Zero 2 (960531 Brazil) - &BurnDrvCpsSfz2alj, // Street Fighter Zero 2 Alpha (960805 Japan) - &BurnDrvCpsSfz2alb, // Street Fighter Zero 2 Alpha (960813 Brazil) - &BurnDrvCpsSfz2alh, // Street Fighter Zero 2 Alpha (960813 Hispanic) - &BurnDrvCpsSfz2ald, // Street Fighter Zero 2 Alpha (960826 Asia Phoenix Edition) - &BurnDrvCpsSfz2al, // Street Fighter Zero 2 Alpha (960826 Asia) - &BurnDrvCpsSfz3jr2d, // Street Fighter Zero 3 (980629 Japan Phoenix Edition) - &BurnDrvCpsSfz3jr2, // Street Fighter Zero 3 (980629 Japan) - &BurnDrvCpsSfz3ar1, // Street Fighter Zero 3 (980701 Asia) - &BurnDrvCpsSfz3jr1, // Street Fighter Zero 3 (980727 Japan) - &BurnDrvCpsSfz3a, // Street Fighter Zero 3 (980904 Asia) - &BurnDrvCpsSfz3j, // Street Fighter Zero 3 (980904 Japan) - &BurnDrvstrhoop, // Street Hoop / Street Slam / Dunk Dream (DEM-004) (DEH-004) - &BurnDrvmd_sracer, // Street Racer (Euro) - &BurnDrvstreetsj, // Street Smart (Japan version 1) - &BurnDrvmd_ssmart, // Street Smart (Jpn, USA) - &BurnDrvstreets1, // Street Smart (US version 1) - &BurnDrvstreetsm, // Street Smart (US version 2) - &BurnDrvstreetsw, // Street Smart (World version 1) - &BurnDrvCpsFfightjh, // Street Smart / Final Fight (Japan, hack) - &BurnDrvmd_sora, // Streets of Rage (Euro, USA) ~ Bare Knuckle - Ikari no Tetsuken (Jpn) - &BurnDrvmd_sor, // Streets of Rage (Euro, USA, Rev. A) ~ Bare Knuckle - Ikari no Tetsuken (Jpn, Rev. A) - &BurnDrvmd_sor2u, // Streets of Rage 2 (USA) - &BurnDrvmd_sor3, // Streets of Rage 3 (Euro) - &BurnDrvmd_sor3p5, // Streets of Rage 3 (Euro, Prototype, 19940412) - &BurnDrvmd_sor3p4, // Streets of Rage 3 (Euro, Prototype, 19940413) - &BurnDrvmd_sor3p3, // Streets of Rage 3 (Euro, Prototype, 19940415) - &BurnDrvmd_sor3p2, // Streets of Rage 3 (Euro, Prototype, 19940420) - &BurnDrvmd_sor3p1, // Streets of Rage 3 (Euro, Prototype, 19940425) - &BurnDrvmd_sor3k, // Streets of Rage 3 (Kor) - &BurnDrvmd_sor3up10, // Streets of Rage 3 (Prototype, 19940308) - &BurnDrvmd_sor3up09, // Streets of Rage 3 (Prototype, 19940317) - &BurnDrvmd_sor3up08, // Streets of Rage 3 (Prototype, 19940318) - &BurnDrvmd_sor3up07, // Streets of Rage 3 (Prototype, 19940328) - &BurnDrvmd_sor3up06, // Streets of Rage 3 (Prototype, 19940401) - &BurnDrvmd_sor3up05, // Streets of Rage 3 (Prototype, 19940404) - &BurnDrvmd_sor3up04, // Streets of Rage 3 (Prototype, 19940408) - &BurnDrvmd_sor3up03, // Streets of Rage 3 (Prototype, 19940411) - &BurnDrvmd_sor3up02, // Streets of Rage 3 (Prototype, 19940412) - &BurnDrvmd_sor3up01, // Streets of Rage 3 (Prototype, 19940413) - &BurnDrvmd_sor3u, // Streets of Rage 3 (USA) - &BurnDrvmd_sor2, // Streets of Rage II (Euro) ~ Bare Knuckle II - Shitou e no Chingonka (Jpn) - &BurnDrvmd_strider, // Strider (Euro, USA) - &BurnDrvCpsStrider, // Strider (US set 1) - &BurnDrvCpsStriderua, // Strider (US set 2) - &BurnDrvCpsStriderjr, // Strider Hiryu (Japan Resale Ver.) - &BurnDrvCpsStriderj, // Strider Hiryu (Japan) - &BurnDrvmd_striderj, // Strider Hiryuu (Jpn, Kor) - &BurnDrvmd_strider2, // Strider II (Euro) - &BurnDrvmd_strider2u, // Strider Returns - Journey from Darkness (USA) - &BurnDrvStrkfgtr, // Strike Fighter (Japan) - &BurnDrvStg, // Strike Gunner S.T.G - &BurnDrvmd_striker, // Striker (Euro) - &BurnDrvmd_strikerp, // Striker (Euro, Prototype) - &BurnDrvS1945, // Strikers 1945 - &BurnDrvS1945a, // Strikers 1945 (Alt) - &BurnDrvS1945j, // Strikers 1945 (Japan) - &BurnDrvS1945jn, // Strikers 1945 (Japan, unprotected) - &BurnDrvS1945k, // Strikers 1945 (Korea) - &BurnDrvS1945ii, // Strikers 1945 II - &BurnDrvS1945iii, // Strikers 1945 III (World) / Strikers 1999 (Japan) - &BurnDrvs1945p, // Strikers 1945 Plus - &BurnDrvpce_stripf2, // Strip Fighter II - &BurnDrvStrongx, // Strong X - &BurnDrvmd_subterr, // SubTerrania (Euro) - &BurnDrvmd_subterrj, // SubTerrania (Jpn) - &BurnDrvmd_subterrp3, // SubTerrania (Jpn, Prototype, 19940202) - &BurnDrvmd_subterrp1, // SubTerrania (Prototype) - &BurnDrvmd_subterrp2, // SubTerrania (Prototype, Earlier) - &BurnDrvmd_subterru, // SubTerrania (USA) - &BurnDrvScessjoe, // Success Joe (World) - &BurnDrvSjryuko1, // Sukeban Jansi Ryuko (set 1, System 16A, FD1089B 317-5021) - &BurnDrvSjryuko, // Sukeban Jansi Ryuko (set 2, System 16B, FD1089B 317-5021) - &BurnDrvmd_summer, // Summer Challenge (Euro, USA) - &BurnDrvSunaq, // SunA Quiz 6000 Academy (940620-6) - &BurnDrvSsridersabd, // Sunset Riders (2 Players ver. ABD) - &BurnDrvSsridersebc, // Sunset Riders (2 Players ver. EBC) - &BurnDrvSsridersebd, // Sunset Riders (2 Players ver. EBD) - &BurnDrvSsridersjbd, // Sunset Riders (2 Players ver. JBD) - &BurnDrvSsridersubc, // Sunset Riders (2 Players ver. UBC) - &BurnDrvSsridersadd, // Sunset Riders (4 Players ver. ADD) - &BurnDrvSsriderseaa, // Sunset Riders (4 Players ver. EAA) - &BurnDrvSsriders, // Sunset Riders (4 Players ver. EAC) - &BurnDrvSsridersjac, // Sunset Riders (4 Players ver. JAC) - &BurnDrvSsridersuab, // Sunset Riders (4 Players ver. UAB) - &BurnDrvSsridersuac, // Sunset Riders (4 Players ver. UAC) - &BurnDrvSsridersuda, // Sunset Riders (4 Players ver. UDA) -#if defined FBA_DEBUG - &BurnDrvSsridersb, // Sunset Riders (bootleg 4 Players ver. ADD) [no comment, NOT WORKING] -#endif - &BurnDrvmd_ssriders, // Sunset Riders (Euro) - &BurnDrvmd_ssridersu, // Sunset Riders (USA) - &BurnDrvmd_s15in1, // Super 15 in 1 (Pirate) - &BurnDrvmd_s19in1, // Super 19 in 1 (Pirate) - &BurnDrvmd_superair, // Super Airwolf (Jpn) - &BurnDrvSuperbar, // Super Bar - &BurnDrvmd_2020bb, // Super Baseball 2020 (Euro, USA) - &BurnDrvmd_sbship, // Super Battleship (USA) - &BurnDrvSboblboa, // Super Bobble Bobble (set 1) - &BurnDrvSboblbob, // Super Bobble Bobble (set 2) - &BurnDrvmd_suprbubl, // Super Bubble Bobble MD (Chi) -#if defined FBA_DEBUG - &BurnDrvsbp, // Super Bubble Pop [no comment, NOT WORKING] -#endif - &BurnDrvSupbtimej, // Super Burger Time (Japan) - &BurnDrvSupbtime, // Super Burger Time (World, set 1) - &BurnDrvSupbtimea, // Super Burger Time (World, set 2) - &BurnDrvSbbros, // Super Buster Bros. (US 901001) - &BurnDrvsucasino, // Super Casino - &BurnDrvSuperchsj, // Super Chase - Criminal Termination (Japan) - &BurnDrvSuperchsu, // Super Chase - Criminal Termination (US) - &BurnDrvSuperchs, // Super Chase - Criminal Termination (World) - &BurnDrvScobra, // Super Cobra - &BurnDrvScobrab, // Super Cobra (bootleg) - &BurnDrvScobrase, // Super Cobra (Sega) - &BurnDrvScobras, // Super Cobra (Stern) - &BurnDrvScontra, // Super Contra - &BurnDrvScontraj, // Super Contra (Japan) - &BurnDrvmd_supdaisna, // Super Daisenryaku (Jpn) - &BurnDrvmd_supdaisn, // Super Daisenryaku (Jpn, Rev. 02) - &BurnDrvsdodgeb, // Super Dodge Ball / Kunio no Nekketsu Toukyuu Densetsu - &BurnDrvmd_sdkong99, // Super Donkey Kong 99 (Protected) - &BurnDrvmd_sdkong99a, // Super Donkey Kong 99 (Unprotected) - &BurnDrvmd_sfzone, // Super Fantasy Zone (Euro) - &BurnDrvmd_sfzonej, // Super Fantasy Zone (Jpn) - &BurnDrvSuperg, // Super Galaxians (galaxiaj hack) - &BurnDrvCpsSgemfa, // Super Gem Fighter Mini Mix (970904 Asia) - &BurnDrvCpsSgemfh, // Super Gem Fighter Mini Mix (970904 Hispanic) - &BurnDrvCpsSgemfd, // Super Gem Fighter Mini Mix (970904 USA Phoenix Edition) - &BurnDrvCpsSgemf, // Super Gem Fighter Mini Mix (970904 USA) - &BurnDrvSuprglob, // Super Glob - &BurnDrvsprglobp, // Super Glob (Pac-Man hardware) - &BurnDrvsprglbpg, // Super Glob (Pac-Man hardware) German -#if defined FBA_DEBUG - &BurnDrvSupergx, // Super GX [Bad Dump, NOT WORKING] -#endif - &BurnDrvmd_superhq, // Super H.Q. (Jpn) -#if defined FBA_DEBUG - &BurnDrvShangonrb, // Super Hang-On (bootleg) [no comment, NOT WORKING] - &BurnDrvShangonro, // Super Hang-On (Japan, FD1094 317-0038) [no comment, NOT WORKING] -#endif - &BurnDrvShangon2, // Super Hang-On (mini ride-on, Rev A, FD1089B 317-0034) - &BurnDrvShangon3, // Super Hang-On (sitdown/upright, FD1089B 317-0034) - &BurnDrvShangon, // Super Hang-On (sitdown/upright, unprotected) - &BurnDrvmd_shangon1, // Super Hang-On (World) - &BurnDrvmd_shangon, // Super Hang-On (World, Rev. A) - &BurnDrvSuprheli, // Super Heli (Super Cobra bootleg) - &BurnDrvmd_shimpact, // Super High Impact (USA) - &BurnDrvmd_suphydl, // Super Hydlide (Euro) - &BurnDrvmd_suphydlj, // Super Hydlide (Jpn) - &BurnDrvmd_suphydlu, // Super Hydlide (USA) - &BurnDrvmd_skickoff, // Super Kick Off (Euro) - &BurnDrvmd_skkong99, // Super King Kong 99 - &BurnDrvmd_suprleag, // Super League (Euro) - &BurnDrvSuprleag, // Super League (FD1094 317-0045) - &BurnDrvmd_suprleagj, // Super League (Jpn) - &BurnDrvSuprlocoo, // Super Locomotive - &BurnDrvSuprloco, // Super Locomotive (Rev.A) - &BurnDrvmd_smario2a, // Super Mario 2 (Alt?) - &BurnDrvmd_smario2, // Super Mario 2 1998 - &BurnDrvmd_smbbc, // Super Mario Bros. + Battle City (Rus) -#if defined FBA_DEBUG - &BurnDrvrSuperMarioWorldEurope,// Super Mario World (Europe) [no comment] - &BurnDrvrSMW, // Super Mario World (Europe) (Rev 1) [no comment] - &BurnDrvrSuperMarioWorldJapan,// Super Mario World (Japan) [no comment] - &BurnDrvrSuperMarioWorldUSA,// Super Mario World (USA) [no comment] -#endif - &BurnDrvmd_smario64, // Super Mario World 64 - &BurnDrvmd_smario64h, // Super Mario World 64 (Hacked Protection) - &BurnDrvmd_smb, // Super Mario World ~ Super Mario Bros. (Pirate) - &BurnDrvmd_smbb, // Super Mario World ~ Super Mario Bros. (Pirate, Alt 2) - &BurnDrvmd_smba, // Super Mario World ~ Super Mario Bros. (Pirate, Alt) - &BurnDrvMarukin, // Super Marukin-Ban (Japan 901017) - &BurnDrvpce_smcrush, // Super Metal Crusher - &BurnDrvSupmodel, // Super Model - &BurnDrvpce_smomo, // Super Momotarou Dentetsu - &BurnDrvpce_smomo2, // Super Momotarou Dentetsu II - &BurnDrvmd_smgpa, // Super Monaco GP (Euro, Jpn) - &BurnDrvmd_smgp, // Super Monaco GP (Euro, Jpn, Rev. A) - &BurnDrvSmgpja, // Super Monaco GP (Japan, Rev A, FD1094 317-0124a) - &BurnDrvSmgpj, // Super Monaco GP (Japan, Rev B, FD1094 317-0124a) - &BurnDrvmd_smgpj, // Super Monaco GP (Jpn) - &BurnDrvSmgpu2, // Super Monaco GP (US, Rev A, FD1094 317-0125a) - &BurnDrvSmgpu1, // Super Monaco GP (US, Rev B, FD1094 317-0125a) - &BurnDrvSmgpu, // Super Monaco GP (US, Rev C, FD1094 317-0125a) - &BurnDrvmd_smgpu, // Super Monaco GP (USA) - &BurnDrvSmgp5, // Super Monaco GP (World, FD1094 317-0126) - &BurnDrvSmgp6, // Super Monaco GP (World, Rev A, FD1094 317-0126a) - &BurnDrvSmgp, // Super Monaco GP (World, Rev B, FD1094 317-0126a) - &BurnDrvSmooncrs, // Super Moon Cresta - &BurnDrvCpsSmbombr1, // Super Muscle Bomber - the international blowout (940808 Japan) - &BurnDrvCpsSmbomb, // Super Muscle Bomber - the international blowout (940831 Japan) - &BurnDrvmd_superoff, // Super Off Road (Euro, USA) - &BurnDrvmd_jordanb1, // Super One on One - Jordan Vs Bird (Euro, USA) - &BurnDrvmd_jordanb, // Super One on One - Jordan Vs Bird (Euro, USA, v1.1) - &BurnDrvmd_jordanbj, // Super One on One - Jordan Vs Bird (Jpn) - &BurnDrvSpangj, // Super Pang (Japan 901023) - &BurnDrvSpang, // Super Pang (World 900914) - &BurnDrvCpsSpf2ta, // Super Puzzle Fighter II Turbo (Super Puzzle Fighter 2 Turbo 960529 Asia) - &BurnDrvCpsSpf2th, // Super Puzzle Fighter II Turbo (Super Puzzle Fighter 2 Turbo 960531 Hispanic) - &BurnDrvCpsSpf2td, // Super Puzzle Fighter II Turbo (Super Puzzle Fighter 2 Turbo 960620 USA Phoenix Edition) - &BurnDrvCpsSpf2t, // Super Puzzle Fighter II Turbo (Super Puzzle Fighter 2 Turbo 960620 USA) - &BurnDrvCpsSpf2xjd, // Super Puzzle Fighter II X (Super Puzzle Fighter 2 X 960531 Japan Phoenix Edition) - &BurnDrvCpsSpf2xj, // Super Puzzle Fighter II X (Super Puzzle Fighter 2 X 960531 Japan) - &BurnDrvmd_srealbas, // Super Real Basketball (Euro) - &BurnDrvmd_srealbasj, // Super Real Basketball (Jpn, Kor) - &BurnDrvSrdarwnj, // Super Real Darwin (Japan) - &BurnDrvSrdarwin, // Super Real Darwin (World) - &BurnDrvmd_srobowrs, // Super Robot Wars (Rus) - &BurnDrvSsideki, // Super Sidekicks / Tokuten Ou - &BurnDrvSsideki2, // Super Sidekicks 2 - The World Championship / Tokuten Ou 2 - real fight football (NGM-061)(NGH-061) - &BurnDrvSsideki3, // Super Sidekicks 3 - The Next Glory / Tokuten Ou 3 - eikou e no michi - &BurnDrvmd_sskid, // Super Skidmarks (Euro, J-Cart) - &BurnDrvmd_sskidp, // Super Skidmarks (USA, Prototype) - &BurnDrvmd_ssmashtv, // Super Smash TV (Euro, USA) - &BurnDrvSsi, // Super Space Invaders '91 (World) - &BurnDrvMacross, // Super Spacefortress Macross / Chou-Jikuu Yousai Macross - &BurnDrvMacross2, // Super Spacefortress Macross II / Chou-Jikuu Yousai Macross II - &BurnDrvSstarcrs, // Super Star Crest - &BurnDrvpce_sssoldr, // Super Star Soldier - &BurnDrvtg_sssoldr, // Super Star Soldier - &BurnDrvmd_ssf2, // Super Street Fighter II - The New Challengers (Euro) - &BurnDrvmd_ssf2j, // Super Street Fighter II - The New Challengers (Jpn) - &BurnDrvCpsSsf2jr2, // Super Street Fighter II - the new challengers (super street fighter 2 930910 Japan) - &BurnDrvCpsSsf2d, // Super Street Fighter II - the new challengers (super street fighter 2 930911 etc Phoenix Edition) - &BurnDrvCpsSsf2, // Super Street Fighter II - the new challengers (super street fighter 2 930911 etc) - &BurnDrvCpsSsf2h, // Super Street Fighter II - the new challengers (super street fighter 2 930911 Hispanic) - &BurnDrvCpsSsf2jr1, // Super Street Fighter II - the new challengers (super street fighter 2 930911 Japan) - &BurnDrvCpsSsf2ud, // Super Street Fighter II - the new challengers (super street fighter 2 930911 USA Phoenix Edition) - &BurnDrvCpsSsf2u, // Super Street Fighter II - the new challengers (super street fighter 2 930911 USA) - &BurnDrvCpsSsf2ar1, // Super Street Fighter II - the new challengers (super street fighter 2 930914 Asia) - &BurnDrvCpsSsf2a, // Super Street Fighter II - the new challengers (super street fighter 2 931005 Asia) - &BurnDrvCpsSsf2j, // Super Street Fighter II - the new challengers (super street fighter 2 931005 Japan) - &BurnDrvmd_ssf2u, // Super Street Fighter II - The New Challengers (USA) - &BurnDrvCpsSsf2tbr1, // Super Street Fighter II - the tournament battle (930911 etc) - &BurnDrvCpsSsf2tbj, // Super Street Fighter II - the tournament battle (930911 Japan) - &BurnDrvCpsSsf2tbh, // Super Street Fighter II - the tournament battle (931005 Hispanic) - &BurnDrvCpsSsf2tbd, // Super Street Fighter II - the tournament battle (931119 etc Phoenix Edition) - &BurnDrvCpsSsf2tb, // Super Street Fighter II - the tournament battle (931119 etc) - &BurnDrvCpsSsf2tad, // Super Street Fighter II Turbo (super street fighter 2 X 940223 Asia Phoenix Edition) - &BurnDrvCpsSsf2ta, // Super Street Fighter II Turbo (super street fighter 2 X 940223 Asia) - &BurnDrvCpsSsf2td, // Super Street Fighter II Turbo (super street fighter 2 X 940223 etc Phoenix Edition) - &BurnDrvCpsSsf2t, // Super Street Fighter II Turbo (super street fighter 2 X 940223 etc) - &BurnDrvCpsSsf2tur1, // Super Street Fighter II Turbo (super street fighter 2 X 940223 USA) - &BurnDrvCpsSsf2tu, // Super Street Fighter II Turbo (super street fighter 2 X 940323 USA) - &BurnDrvCpsSsf2xjd, // Super Street Fighter II X - grand master challenge (super street fighter 2 X 940223 Japan Phoenix Edition) - &BurnDrvCpsSsf2xjr, // Super Street Fighter II X - grand master challenge (super street fighter 2 X 940223 Japan rent version) - &BurnDrvCpsSsf2xj, // Super Street Fighter II X - grand master challenge (super street fighter 2 X 940223 Japan) - &BurnDrvmd_stbladj, // Super Thunder Blade (Jpn, Launch Cart) - &BurnDrvmd_stblad, // Super Thunder Blade (World) - &BurnDrvSuprtrio, // Super Trio - &BurnDrvstriv2, // Super Triv (set 2) - &BurnDrvstriv, // Super Triv - &BurnDrvmd_svolleyj, // Super Volley Ball (Jpn) - &BurnDrvmd_svolley, // Super Volley Ball (USA) - &BurnDrvmd_svolley1, // Super Volley Ball (USA, Alt) - &BurnDrvpce_svolley, // Super Volleyball - &BurnDrvtg_svolley, // Super Volleyball - &BurnDrvSvolley, // Super Volleyball (Japan) - &BurnDrvSvolleyk, // Super Volleyball (Korea) - &BurnDrvSvolleyu, // Super Volleyball (US) - &BurnDrvSsoldier, // Superior Soldiers (US) - &BurnDrvSupermanj, // Superman (Japan) - &BurnDrvSupermanu, // Superman (US) - &BurnDrvmd_supermanu, // Superman (USA) - &BurnDrvmd_supermanp, // Superman (USA, Prototype) - &BurnDrvSuperman, // Superman (World) - &BurnDrvmd_superman, // Superman - The Man of Steel (Euro) - &BurnDrvmd_surging, // Surging Aura (Jpn) - &BurnDrvSuratka, // Surprise Attack (Asia ver. L) - &BurnDrvSuratkj, // Surprise Attack (Japan ver. M) - &BurnDrvSuratk, // Surprise Attack (World ver. K) - &BurnDrvpce_susano, // Susanoo Densetsu - &BurnDrvmd_swamp, // Swamp Thing (USA, Prototype) - &BurnDrvSwarm, // Swarm (bootleg?) - &BurnDrvSwat, // SWAT (315-5048) - &BurnDrvSwatpolc, // SWAT Police - &BurnDrvmd_swordsod, // Sword of Sodan (Euro, USA) - &BurnDrvmd_swordsodj, // Sword of Sodan (Jpn) - &BurnDrvmd_vermil, // Sword of Vermilion (Euro, USA) - &BurnDrvmd_sydvalis, // Syd of Valis (USA) - &BurnDrvmd_sylvestr, // Sylvester & Tweety in Cagey Capers (Euro) - &BurnDrvmd_sylvestru, // Sylvester and Tweety in Cagey Capers (USA) - &BurnDrvmd_syndicat, // Syndicate (Euro, USA) - &BurnDrvmosyougi, // Syougi No Tatsujin - Master of Syougi - &BurnDrvmd_term2, // T2 - Terminator 2 - Judgment Day (Euro, USA) - &BurnDrvmd_t2ag, // T2 - The Arcade Game (Euro, USA) - &BurnDrvmd_t2agj, // T2 - The Arcade Game (Jpn) - &BurnDrvmd_t2agp, // T2 - The Arcade Game (USA, Prototype) - &BurnDrvmd_t3ag, // T3 - The Arcade Game (Rus) - &BurnDrvmd_cars, // Tachki (Rus) - &BurnDrvmd_cars2, // Tachki 2 (Rus) - &BurnDrvmd_taikoris, // Taikou Risshiden (Jpn) - &BurnDrvHotgmck, // Taisen Hot Gimmick (Japan) - &BurnDrvHotgmck3, // Taisen Hot Gimmick 3 Digital Surfing (Japan) - &BurnDrvHotgm4ev, // Taisen Hot Gimmick 4 Ever (Japan) - &BurnDrvHgkairak, // Taisen Hot Gimmick Kairakuten (Japan) - &BurnDrvtg_chasehq, // Taito Chase H.Q. - &BurnDrvpce_chasehq, // Taito Chase H.Q. - &BurnDrvmd_taiwan, // Taiwan Daheng (Chi) - &BurnDrvpce_takameib, // Takahashi Meijin no Shin Boukenjima - &BurnDrvpce_shingen, // Takeda Shingen - &BurnDrvpce_shingen1, // Takeda Shingen (Alt) - &BurnDrvtg_taknhoop, // Takin' It to the Hoop - &BurnDrvtg_talespin, // TaleSpin - &BurnDrvmd_talespin, // TaleSpin (Euro, USA) - &BurnDrvmd_talmit, // Talmit's Adventure (Euro) - &BurnDrvTangtang, // Tang Tang (ver. 0526, 26/05/2000) - &BurnDrvmd_tank2011, // Tanki 2011 (Rus) - &BurnDrvTaotaido, // Tao Taido (set 1) - &BurnDrvTaotaidoa, // Tao Taido (set 2) - &BurnDrvmd_trgearth, // Target Earth (USA) - &BurnDrvTharrier, // Task Force Harrier - &BurnDrvTharrieru, // Task Force Harrier (US?) - &BurnDrvmd_taskfhexj, // Task Force Harrier EX (Jpn) - &BurnDrvmd_taskfhex, // Task Force Harrier EX (USA) - &BurnDrvJoemac, // Tatakae Genshizin Joe & Mac (Japan ver 1) - &BurnDrvTrojanj, // Tatakai no Banka (Japan) - &BurnDrvpce_tatsunok, // Tatsu No Ko Fighter - &BurnDrvpce_tatsujin, // Tatsujin - &BurnDrvpce_tatsujinp, // Tatsujin (Prototype) - &BurnDrvmd_tazmania, // Taz-Mania (World) - &BurnDrvTazzmang, // Tazz-Mania (Galaxian hardware) - &BurnDrvTazmania, // Tazz-Mania (set 1) - &BurnDrvTazmani2, // Tazz-Mania (set 2) - &BurnDrvmd_tc2000, // TC 2000 (Arg) - &BurnDrvmd_technocl, // Techno Clash (Euro, USA) - &BurnDrvmd_tecnocop, // Technocop (USA) - &BurnDrvmd_tecmocup, // Tecmo Cup (Jpn, Prototype?) - &BurnDrvTknight, // Tecmo Knight - &BurnDrvmd_tecmobb, // Tecmo Super Baseball (USA) - &BurnDrvmd_tecmosbwj, // Tecmo Super Bowl (Jpn) - &BurnDrvmd_tecmosbwa, // Tecmo Super Bowl (USA, 199309) - &BurnDrvmd_tecmosbw, // Tecmo Super Bowl (USA, 199310) - &BurnDrvmd_tecmosb2, // Tecmo Super Bowl II (USA) - &BurnDrvmd_tecmosb2j, // Tecmo Super Bowl II - Special Edition (Jpn) - &BurnDrvmd_tecmosb3, // Tecmo Super Bowl III - Final Edition (USA) - &BurnDrvmd_tecmohck, // Tecmo Super Hockey (USA) - &BurnDrvmd_tecmonbaj, // Tecmo Super NBA Basketball (Jpn) - &BurnDrvmd_tecmonba, // Tecmo Super NBA Basketball (USA) - &BurnDrvmd_tecmow92, // Tecmo World Cup '92 (Jpn) - &BurnDrvmd_tecmowc, // Tecmo World Cup (USA) - &BurnDrvtws96, // Tecmo World Soccer '96 - &BurnDrvmd_teddyboy, // Teddy Boy Blues (Jpn, SegaNet) - &BurnDrvTeddybb, // TeddyBoy Blues (315-5115, New Ver.) - &BurnDrvTeddybbo, // TeddyBoy Blues (315-5115, Old Ver.) - &BurnDrvTeddybbobl, // TeddyBoy Blues (bootleg) - &BurnDrvTmht2p, // Teenage Mutant Hero Turtles (UK 2 Players, set 1) - &BurnDrvTmht2pa, // Teenage Mutant Hero Turtles (UK 2 Players, set 2) - &BurnDrvTmht, // Teenage Mutant Hero Turtles (UK 4 Players, set 1) - &BurnDrvTmhta, // Teenage Mutant Hero Turtles (UK 4 Players, set 2) - &BurnDrvmd_tmhthh, // Teenage Mutant Hero Turtles - The Hyperstone Heist (Euro) - &BurnDrvmd_tmhttf, // Teenage Mutant Hero Turtles - Tournament Fighters (Euro) - &BurnDrvTmht22pe, // Teenage Mutant Hero Turtles - Turtles in Time (2 Players ver. EBA) - &BurnDrvtmnti, // Teenage Mutant Ninja Turtles (Intro demo) - &BurnDrvtmntia, // Teenage Mutant Ninja Turtles (Intro demo, alt) - &BurnDrvTmht2pj, // Teenage Mutant Ninja Turtles (Japan 2 Players) - &BurnDrvTmntj, // Teenage Mutant Ninja Turtles (Japan 4 Players) - &BurnDrvTmht2po, // Teenage Mutant Ninja Turtles (Oceania 2 Players) - &BurnDrvTmntu, // Teenage Mutant Ninja Turtles (US 4 Players, set 1) - &BurnDrvTmntua, // Teenage Mutant Ninja Turtles (US 4 Players, set 2) - &BurnDrvTmnt, // Teenage Mutant Ninja Turtles (World 4 Players) - &BurnDrvmd_tmntshj, // Teenage Mutant Ninja Turtles - Return of the Shredder (Jpn) - &BurnDrvmd_tmnthh, // Teenage Mutant Ninja Turtles - The Hyperstone Heist (USA) - &BurnDrvmd_tmnttfj, // Teenage Mutant Ninja Turtles - Tournament Fighters (Jpn) - &BurnDrvmd_tmnttfu, // Teenage Mutant Ninja Turtles - Tournament Fighters (USA) - &BurnDrvTmnt22pu, // Teenage Mutant Ninja Turtles - Turtles in Time (2 Players ver. UDA) - &BurnDrvTmnt2a, // Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver. ADA) - &BurnDrvTmnt2, // Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver. UAA) - &BurnDrvmd_tmntru, // Teenage Mutant Ninja Turtles - Vozvrashchenie Legendy (Rus) - &BurnDrvmd_teiketsu, // Teitoku no Ketsudan (Jpn) - &BurnDrvTekiPaki, // Teki Paki - &BurnDrvmd_tekkn3sp, // Tekken 3 Special - &BurnDrvmd_telmah, // Tel-Tel Mahjong (Jpn) - &BurnDrvmd_telstad, // Tel-Tel Stadium (Jpn) - &BurnDrvmd_telebrad, // Telebradesco Residencia (Bra) - &BurnDrvCpsDynwarjr, // Tenchi wo Kurau (Japan Resale Ver.) - &BurnDrvCpsDynwarj, // Tenchi wo Kurau (Japan) - &BurnDrvCpsWofj, // Tenchi wo Kurau II - Sekiheki no Tatakai (921031 Japan) - &BurnDrvCpsWofch, // Tenchi wo Kurau II - Sekiheki no Tatakai (CPS Changer, 921031 Japan) - &BurnDrvCpsWofjh, // Tenchi wo Kurau II - Sekiheki no Tatakai (hack, 921031 Japan) - &BurnDrvTengai, // Tengai (world) - &BurnDrvTengaij, // Tengai\0Sengoku Blade - sengoku ace episode II - &BurnDrvpce_sdragon, // Tenseiryuu - Saint Dragon - &BurnDrvTerracren, // Terra Cresta (YM2203) - &BurnDrvTerracre, // Terra Cresta (YM3526 set 1) - &BurnDrvTerracreo, // Terra Cresta (YM3526 set 2) - &BurnDrvTerracrea, // Terra Cresta (YM3526 set 3) - &BurnDrvpce_terracr2, // Terra Cresta II - Mandoraa no Gyakushuu - &BurnDrvTerrafb, // Terra Force (bootleg set 2) - &BurnDrvTerrafjb, // Terra Force (Japan bootleg set 1, with additional Z80) - &BurnDrvTerrafu, // Terra Force (US) - &BurnDrvTerraf, // Terra Force - &BurnDrvmd_td2, // Test Drive II - The Duel (Euro, USA) - &BurnDrvAtetrisb, // Tetris (bootleg set 1) - &BurnDrvAtetrisb2, // Tetris (bootleg set 2) - &BurnDrvTetrisbl, // Tetris (bootleg) - &BurnDrvAtetrisc, // Tetris (cocktail set 1) - &BurnDrvAtetrisc2, // Tetris (cocktail set 2) - &BurnDrvtetrsark, // Tetris (D.R. Korea) - &BurnDrvTetrista, // Tetris (Japan, B-System, YM2203) - &BurnDrvTetrist, // Tetris (Japan, B-System, YM2610) - &BurnDrvmd_tetris, // Tetris (Jpn) - &BurnDrvmd_tetris1, // Tetris (Pirate?) - &BurnDrvAtetris, // Tetris (set 1) - &BurnDrvTetris1, // Tetris (set 1, Japan, System 16B, FD1094 317-0091) - &BurnDrvAtetrisa, // Tetris (set 2) - &BurnDrvTetris2, // Tetris (set 2, Japan, System 16B, FD1094 317-0092) - &BurnDrvTetris3, // Tetris (set 3, Japan, System 16A, FD1094 317-0093a) - &BurnDrvTetris, // Tetris (set 4, Japan, System 16A, FD1094 317-0093) - &BurnDrvTetrbx, // Tetris / Bloxeed (Korean System 16 bootleg) (ISG Selection Master Type 2006) - &BurnDrvTgm2, // Tetris the Absolute The Grand Master 2 - &BurnDrvTgm2p, // Tetris the Absolute The Grand Master 2 Plus - &BurnDrvmd_addfam, // The Addams Family (Euro, USA) - &BurnDrvmd_addfamp1, // The Addams Family (USA, Prototype) - &BurnDrvmd_addfamp2, // The Addams Family (USA, Prototype, Alt) - &BurnDrvmd_advbatr, // The Adventures of Batman & Robin (Euro) - &BurnDrvmd_advbatrp12, // The Adventures of Batman & Robin (Prototype, 19950406) - &BurnDrvmd_advbatrp11, // The Adventures of Batman & Robin (Prototype, 19950410) - &BurnDrvmd_advbatrp10, // The Adventures of Batman & Robin (Prototype, 19950411) - &BurnDrvmd_advbatrp09, // The Adventures of Batman & Robin (Prototype, 19950418) - &BurnDrvmd_advbatrp08, // The Adventures of Batman & Robin (Prototype, 19950419) - &BurnDrvmd_advbatrp07, // The Adventures of Batman & Robin (Prototype, 19950421) - &BurnDrvmd_advbatrp06, // The Adventures of Batman & Robin (Prototype, 19950422) - &BurnDrvmd_advbatrp05, // The Adventures of Batman & Robin (Prototype, 19950424) - &BurnDrvmd_advbatrp04, // The Adventures of Batman & Robin (Prototype, 19950426) - &BurnDrvmd_advbatrp03, // The Adventures of Batman & Robin (Prototype, 19950427) - &BurnDrvmd_advbatrp02, // The Adventures of Batman & Robin (Prototype, 19950428) - &BurnDrvmd_advbatrp01, // The Adventures of Batman & Robin (Prototype, 19950501) - &BurnDrvmd_advbatru, // The Adventures of Batman & Robin (USA) - &BurnDrvmd_mightmax, // The Adventures of Mighty Max (Euro) - &BurnDrvmd_mightmaxu, // The Adventures of Mighty Max (USA) - &BurnDrvmd_rockybw, // The Adventures of Rocky and Bullwinkle and Friends (USA) - &BurnDrvmrflea, // The Amazing Adventures of Mr. F. Lea - &BurnDrvAnteateruk, // The Anteater (UK) - &BurnDrvmd_aquagame, // The Aquatic Games Starring James Pond and the Aquabats (Euro, USA) - &BurnDrvmd_redcliff, // The Battle of Red Cliffs - Romance of the Three Kingdoms - &BurnDrvmd_redcliffa, // The Battle of Red Cliffs - Romance of the Three Kingdoms (Hacked out Protection?) - &BurnDrvBattroad, // The Battle-Road - &BurnDrvmd_berensp20, // The Berenstain Bears' Camping Adventure (Prototype, 19940323) - &BurnDrvmd_berensp19, // The Berenstain Bears' Camping Adventure (Prototype, 19940428) - &BurnDrvmd_berensp18, // The Berenstain Bears' Camping Adventure (Prototype, 19940429) - &BurnDrvmd_berensp17, // The Berenstain Bears' Camping Adventure (Prototype, 19940506) - &BurnDrvmd_berensp16, // The Berenstain Bears' Camping Adventure (Prototype, 19940511) - &BurnDrvmd_berensp15, // The Berenstain Bears' Camping Adventure (Prototype, 19940517) - &BurnDrvmd_berensp14, // The Berenstain Bears' Camping Adventure (Prototype, 19940519) - &BurnDrvmd_berensp13, // The Berenstain Bears' Camping Adventure (Prototype, 19940523) - &BurnDrvmd_berensp12, // The Berenstain Bears' Camping Adventure (Prototype, 19940526) - &BurnDrvmd_berensp11, // The Berenstain Bears' Camping Adventure (Prototype, 19940530) - &BurnDrvmd_berensp10, // The Berenstain Bears' Camping Adventure (Prototype, 19940602) - &BurnDrvmd_berensp09, // The Berenstain Bears' Camping Adventure (Prototype, 19940610) - &BurnDrvmd_berensp08, // The Berenstain Bears' Camping Adventure (Prototype, 19940709) - &BurnDrvmd_berensp07, // The Berenstain Bears' Camping Adventure (Prototype, 19940716) - &BurnDrvmd_berensp06, // The Berenstain Bears' Camping Adventure (Prototype, 19940720) - &BurnDrvmd_berensp05, // The Berenstain Bears' Camping Adventure (Prototype, 19940801) - &BurnDrvmd_berensp04, // The Berenstain Bears' Camping Adventure (Prototype, 19940802) - &BurnDrvmd_berensp03, // The Berenstain Bears' Camping Adventure (Prototype, 19940803) - &BurnDrvmd_berensp02, // The Berenstain Bears' Camping Adventure (Prototype, 19940805) - &BurnDrvmd_berensp01, // The Berenstain Bears' Camping Adventure (Prototype, 19940808) - &BurnDrvmd_berens, // The Berenstain Bears' Camping Adventure (USA) - &BurnDrvBerlwall, // The Berlin Wall - &BurnDrvBerlwallt, // The Berlin Wall (bootleg ?) - &BurnDrvBilliard, // The Billiards - &BurnDrvmd_chaoseng, // The Chaos Engine (Euro) - &BurnDrvmd_chaosen2, // The Chaos Engine 2 (Euro, Prototype) - &BurnDrvEdrandyj, // The Cliffhanger - Edward Randy (Japan ver 3) - &BurnDrvEdrandy1, // The Cliffhanger - Edward Randy (World ver 1) - &BurnDrvEdrandy2, // The Cliffhanger - Edward Randy (World ver 2) - &BurnDrvEdrandy, // The Cliffhanger - Edward Randy (World ver 3) - &BurnDrvCtribeb, // The Combatribes (bootleg set 1) - &BurnDrvCtribeb2, // The Combatribes (bootleg set 2) - &BurnDrvCtribej, // The Combatribes (Japan) - &BurnDrvCtribe, // The Combatribes (US) - &BurnDrvCtribe1, // The Combatribes (US) - Set 1? - &BurnDrvDealer, // The Dealer - &BurnDrvmd_deathret, // The Death and Return of Superman (USA) - &BurnDrvmd_disneycl, // The Disney Collection - Mickey and Donald (Euro) - &BurnDrvDbldynj, // The Double Dynamites (Japan) - &BurnDrvDbldynu, // The Double Dynamites (US) - &BurnDrvmd_earthdef, // The Earth Defense (USA) - &BurnDrvTheend, // The End - &BurnDrvTheends, // The End (Stern) - &BurnDrvmd_faerytal, // The Faery Tale Adventure (Euro, USA) - &BurnDrvFlstory, // The FairyLand Story - &BurnDrvFlstoryj, // The FairyLand Story (Japan) - &BurnDrvFroundl, // The Final Round (ver. L) - &BurnDrvFround, // The Final Round (ver. M) - &BurnDrvmd_flint, // The Flintstones (Euro) - &BurnDrvmd_flintj, // The Flintstones (Jpn) - &BurnDrvmd_flintu, // The Flintstones (USA) - &BurnDrvmd_wintchal1, // The Games: Winter Challenge (Euro, USA) -#if defined FBA_DEBUG - &BurnDrvThegladpcb, // The Gladiator / Shen Jian (V100, Japan, Single PCB Version) [Incomplete Dump, NOT WORKING] - &BurnDrvTheglad, // The Gladiator / Shen Jian (V101) [Incomplete Dump, NOT WORKING] - &BurnDrvtheglada, // The Gladiator / Shen Jian (V101, Taiwan) [Incomplete Dump, NOT WORKING] -#endif - &BurnDrvTheglob, // The Glob - &BurnDrvTheglob2, // The Glob (earlier) - &BurnDrvtheglobp, // The Glob (Pac-Man hardware) - &BurnDrvTheglob3, // The Glob (set 3) - &BurnDrvmd_mickeycm, // The Great Circus Mystery Starring Mickey & Minnie (USA) - &BurnDrvRagtimea, // The Great Ragtime Show (Japan v1.3, 92.11.26) - &BurnDrvRagtime, // The Great Ragtime Show (Japan v1.5, 92.12.07) - &BurnDrvmd_waldo, // The Great Waldo Search (USA) - &BurnDrvmd_humans, // The Humans (USA) - &BurnDrvmd_hybridf, // The Hybrid Front (Jpn) - &BurnDrvmd_hybridfp, // The Hybrid Front (Jpn, Prototype) - &BurnDrvmd_immortal, // The Immortal (Euro, USA) - &BurnDrvmd_crashdum, // The Incredible Crash Dummies (Euro, USA) - &BurnDrvmd_crashdump, // The Incredible Crash Dummies (USA, Prototype) - &BurnDrvmd_hulk, // The Incredible Hulk (Euro, USA) - &BurnDrvmd_incredib, // The Incredibles (Rus) - &BurnDrvSkingame, // The Irem Skins Game (US set 1) - &BurnDrvSkingame2, // The Irem Skins Game (US set 2) - &BurnDrvIrrmaze, // The Irritating Maze / Ultra Denryu Iraira Bou - &BurnDrvmd_itchy, // The Itchy and Scratchy Game (USA, Prototype) - &BurnDrvmd_kickbox, // The Kick Boxing (Jpn, Kor) - &BurnDrvKillbld104, // The Killing Blade (V104) - &BurnDrvKillbld, // The Killing Blade (V109, China) -#if defined FBA_DEBUG - &BurnDrvKillbldp, // The Killing Blade Plus (V300) [Incomplete Dump, NOT WORKING] -#endif - &BurnDrvmd_killshow, // The Killing Game Show (Jpn) - &BurnDrvCpsKodr1, // The King of Dragons (910711 etc) - &BurnDrvCpsKod, // The King of Dragons (910805 etc) - &BurnDrvCpsKodb, // The King of Dragons (bootleg, 910731 etc) - &BurnDrvCpsKodh, // The King of Dragons (hack) - &BurnDrvCpsKodja, // The King of Dragons (Japan 910805, B-Board 89625B-1) - &BurnDrvCpsKodj, // The King of Dragons (Japan 910805, B-Board 90629B-3) - &BurnDrvCpsKodda, // The King of Dragons (Phoenix bootleg, 910731 etc) - &BurnDrvCpsKodu, // The King of Dragons (US 910910) - &BurnDrvKof94, // The King of Fighters '94 (NGM-055)(NGH-055) - &BurnDrvKof95h, // The King of Fighters '95 (NGH-084) - &BurnDrvKof95, // The King of Fighters '95 (NGM-084) - &BurnDrvkof96ae, // The King of Fighters '96 (Anniversary Edition, EGHT hack) - &BurnDrvkof96ep, // The King of Fighters '96 (bootleg / hack) - &BurnDrvkof96cn, // The King of Fighters '96 (Chinese Edition ver 1.0, hack) - &BurnDrvKof96h, // The King of Fighters '96 (NGH-214) - &BurnDrvKof96, // The King of Fighters '96 (NGM-214) - &BurnDrvkof97cn, // The King of Fighters '97 (10th Anniversary Chinese Edition, EGHT hack) - &BurnDrvKof97k, // The King of Fighters '97 (Korean release) - &BurnDrvKof97h, // The King of Fighters '97 (NGH-2320) - &BurnDrvKof97, // The King of Fighters '97 (NGM-2320) - &BurnDrvkof97xt, // The King of Fighters '97 - Final Battle (hack) - &BurnDrvKof97oro, // The King of Fighters '97 oroshi plus 2003 - &BurnDrvKof97pls, // The King of Fighters '97 Plus (bootleg) - &BurnDrvkof97pla, // The King of Fighters '97 Plus 2003 (bootleg / hack) - &BurnDrvkof98ae, // The King of Fighters '98 (Anniversary Edition, EGHT hack) - &BurnDrvKof98ka, // The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (Korean board 2) - &BurnDrvKof98k, // The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (Korean board) - &BurnDrvKof98h, // The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (NGH-2420) - &BurnDrvKof98, // The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (NGM-2420) - &BurnDrvmd_kof99, // The King of Fighters '99 - &BurnDrvmd_kof99a, // The King of Fighters '99 (Alt) - &BurnDrvkof99e, // The King of Fighters '99 - Millennium Battle (earlier) - &BurnDrvkof99k, // The King of Fighters '99 - Millennium Battle (Korean release) - &BurnDrvkof99h, // The King of Fighters '99 - Millennium Battle (NGH-2510) - &BurnDrvkof99, // The King of Fighters '99 - Millennium Battle (NGM-2510) - &BurnDrvkof99p, // The King of Fighters '99 - Millennium Battle (prototype) - &BurnDrvkof10th, // The King of Fighters 10th Anniversary (bootleg) - &BurnDrvkf2k5uni, // The King of Fighters 10th Anniversary 2005 Unique (bootleg) - &BurnDrvkf10thep, // The King of Fighters 10th Anniversary Extra Plus (bootleg) - &BurnDrvkof2000, // The King of Fighters 2000 (NGM-2570) (NGH-2570) - &BurnDrvkof2000n, // The King of Fighters 2000 (not encrypted) - &BurnDrvkof2001h, // The King of Fighters 2001 (NGH-2621) - &BurnDrvkof2001, // The King of Fighters 2001 (NGM-262?) - &BurnDrvkf2k1pls, // The King of Fighters 2001 Plus (set 1, bootleg / hack) - &BurnDrvkf2k1pa, // The King of Fighters 2001 Plus (set 2, bootleg / hack) - &BurnDrvkof2002b, // The King of Fighters 2002 (bootleg) - &BurnDrvkof2002, // The King of Fighters 2002 (NGM-2650)(NGH-2650) - &BurnDrvkf2k2ps2, // The King of Fighters 2002 (PlayStation 2 ver 0.4, EGHT hack) - &BurnDrvkf2k2mp, // The King of Fighters 2002 Magic Plus (bootleg) - &BurnDrvkf2k2mp2, // The King of Fighters 2002 Magic Plus II (bootleg) - &BurnDrvkf2k2pls, // The King of Fighters 2002 Plus (bootleg set 1) - &BurnDrvkf2k2pla, // The King of Fighters 2002 Plus (bootleg set 2) - &BurnDrvkf2k2plb, // The King of Fighters 2002 Plus (bootleg set 3) - &BurnDrvkf2k2plc, // The King of Fighters 2002 Super (bootleg) - &BurnDrvkf2k3bl, // The King of Fighters 2003 (bootleg set 1) - &BurnDrvkf2k3bla, // The King of Fighters 2003 (bootleg set 2) - &BurnDrvkof2003h, // The King of Fighters 2003 (NGH-2710) - &BurnDrvkof2003, // The King of Fighters 2003 (NGM-2710) - &BurnDrvkf2k3pcb, // The King of Fighters 2003 - &BurnDrvkf2k3pl, // The King of Fighters 2004 Plus / Hero (bootleg) - &BurnDrvkf2k3upl, // The King of Fighters 2004 Ultra Plus (bootleg) - &BurnDrvkof2k4se, // The King of Fighters Special Edition 2004 (bootleg) - &BurnDrvkf2k4pls, // The King of Fighters Special Edition 2004 Plus (bootleg) - &BurnDrvpce_kungfu, // The Kung Fu - &BurnDrvlastbladh, // The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGH-2340) - &BurnDrvlastblad, // The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGM-2340) - &BurnDrvlastbld2, // The Last Blade 2 / Bakumatsu Roman - Dai Ni Maku Gekka no Kenshi (NGM-2430)(NGH-2430) - &BurnDrvlastsold, // The Last Soldier (Korean release of The Last Blade) - &BurnDrvmd_lawnmowr, // The Lawnmower Man (Euro, USA) - &BurnDrvLkage, // The Legend of Kage - &BurnDrvLkageb, // The Legend of Kage (bootleg set 1) - &BurnDrvLkageb2, // The Legend of Kage (bootleg set 2) - &BurnDrvLkageb3, // The Legend of Kage (bootleg set 3) - &BurnDrvLkageo, // The Legend of Kage (older) - &BurnDrvLkageoo, // The Legend of Kage (oldest) - &BurnDrvSilkroad, // The Legend of Silkroad - &BurnDrvSilkroada, // The Legend of Silkroad (larger roms) - &BurnDrvtg_legaxe, // The Legendary Axe - &BurnDrvtg_legaxe2, // The Legendary Axe II - &BurnDrvmd_lionking, // The Lion King (World) - &BurnDrvmd_lostvik, // The Lost Vikings (Euro) - &BurnDrvmd_lostvikp, // The Lost Vikings (Euro, Prototype) - &BurnDrvmd_lostviku, // The Lost Vikings (USA) - &BurnDrvmd_lostwrld, // The Lost World - Jurassic Park (Euro, USA) - &BurnDrvmd_msbp12, // The Magic School Bus (Prototype, 19950112) - &BurnDrvmd_msbp11, // The Magic School Bus (Prototype, 19950202) - &BurnDrvmd_msbp10, // The Magic School Bus (Prototype, 19950217) - &BurnDrvmd_msbp09, // The Magic School Bus (Prototype, 19950307) - &BurnDrvmd_msbp08, // The Magic School Bus (Prototype, 19950314) - &BurnDrvmd_msbp07, // The Magic School Bus (Prototype, 19950327) - &BurnDrvMainevt2p, // The Main Event (2 Players ver. X) - &BurnDrvMainevto, // The Main Event (4 Players ver. F) - &BurnDrvMainevt, // The Main Event (4 Players ver. Y) - &BurnDrvmd_miraclep, // The Miracle Piano Teaching System (USA) - &BurnDrvpce_tnzs, // The New Zealand Story - &BurnDrvmd_tnzs, // The New Zealand Story (Jpn) - &BurnDrvtnzsj, // The NewZealand Story (Japan, new version, newer PCB) - &BurnDrvTnzsjo, // The NewZealand Story (Japan, old version) (older PCB) - &BurnDrvtnzs, // The NewZealand Story (World, newer) - &BurnDrvTnzso, // The NewZealand Story (World, old version) (older PCB) - &BurnDrvTnzsop, // The NewZealand Story (World, prototype?) (older PCB) - &BurnDrvNinjakj, // The Ninja Kids (Japan) - &BurnDrvNinjaku, // The Ninja Kids (US) - &BurnDrvNinjak, // The Ninja Kids (World) - &BurnDrvpce_ninjawar, // The Ninja Warriors - &BurnDrvNinjawj, // The Ninja Warriors (Japan) - &BurnDrvNinjawu, // The Ninja Warriors (US) - &BurnDrvNinjaw, // The Ninja Warriors (World) - &BurnDrvmd_ooze, // The Ooze (Euro) - &BurnDrvmd_oozep01, // The Ooze (Euro, Prototype, 19950728) - &BurnDrvmd_oozeju, // The Ooze (Jpn, USA) - &BurnDrvmd_oozep05, // The Ooze (Prototype 104, 19950622) - &BurnDrvmd_oozep04, // The Ooze (Prototype 112, 19950626) - &BurnDrvmd_oozep07, // The Ooze (Prototype, 19950615) - &BurnDrvmd_oozep06, // The Ooze (Prototype, 19950619) - &BurnDrvmd_oozep02, // The Ooze (Prototype, 19950629) - &BurnDrvmd_oozep03, // The Ooze (Prototype, 19950629-B) - &BurnDrvmd_ottifant, // The Ottifants (Euro) - &BurnDrvmd_ottifantg, // The Ottifants (Ger, Prototype) - &BurnDrvmd_pagemstr, // The Pagemaster (Euro) - &BurnDrvmd_pagemstru, // The Pagemaster (USA) - &BurnDrvmd_pagemstrup, // The Pagemaster (USA, Prototype) - &BurnDrvmd_piratedw1, // The Pirates of Dark Water (Euro, USA, May 1994) - &BurnDrvmd_piratedw, // The Pirates of Dark Water (USA, January 1994) - &BurnDrvThepitm, // The Pit (bootleg on Moon Quasar hardware) - &BurnDrvCpsPunisher, // The Punisher (930422 etc) - &BurnDrvCpsPunisherh, // The Punisher (930422 Hispanic) - &BurnDrvCpsPunisherj, // The Punisher (930422 Japan) - &BurnDrvCpsPunisheru, // The Punisher (930422 USA) - &BurnDrvCpsPunipic, // The Punisher (bootleg set 1 (with PIC16c57), 930422 etc) - &BurnDrvCpsPunipic2, // The Punisher (bootleg set 2 (with PIC16c57), 930422 etc) - &BurnDrvCpsPunipic3, // The Punisher (bootleg set 3 (with PIC16c57), 930422 etc) - &BurnDrvmd_punisher, // The Punisher (Euro) - &BurnDrvmd_punisheru, // The Punisher (USA) - &BurnDrvGhostb, // The Real Ghostbusters (US 2 Players, revision 2) - &BurnDrvGhostb3, // The Real Ghostbusters (US 3 Players) - &BurnDrvmd_revshin2, // The Revenge of Shinobi (Euro, USA) - &BurnDrvmd_revshin1, // The Revenge of Shinobi (Euro, USA, Rev. A) - &BurnDrvmd_revshin, // The Revenge of Shinobi (Euro, USA, Rev. B) - &BurnDrvmd_seconds, // The Second Samurai (Euro) - &BurnDrvSimpsons2pa, // The Simpsons (2 Players Asia) - &BurnDrvSimpsons2pj, // The Simpsons (2 Players Japan) - &BurnDrvSimpsons2p, // The Simpsons (2 Players World, set 1) - &BurnDrvSimpsons2p2, // The Simpsons (2 Players World, set 2) - &BurnDrvSimpsons, // The Simpsons (4 Players World, set 1) - &BurnDrvSimpsons4pa, // The Simpsons (4 Players World, set 2) - &BurnDrvmd_bartvssm1, // The Simpsons - Bart Vs The Space Mutants (Euro, USA) - &BurnDrvmd_bartvssm, // The Simpsons - Bart Vs The Space Mutants (Euro, USA, Rev. A) - &BurnDrvmd_bartnigh, // The Simpsons - Bart's Nightmare (Euro, USA) - &BurnDrvmd_smurfs, // The Smurfs (Euro, Rev. A) - &BurnDrvmd_smurfstw, // The Smurfs Travel the World (Euro) - &BurnDrvSrumbler, // The Speed Rumbler (set 1) - &BurnDrvSrumblr2, // The Speed Rumbler (set 2) - &BurnDrvSrumblr3, // The Speed Rumbler (set 3) - &BurnDrvmd_thor, // The Story of Thor (Euro) - &BurnDrvmd_thorg, // The Story of Thor (Ger) - &BurnDrvmd_thorjp, // The Story of Thor (Jpn, Prototype) - &BurnDrvmd_thork, // The Story of Thor (Kor) - &BurnDrvmd_thors, // The Story of Thor (Spa) - &BurnDrvmd_thorp2, // The Story of Thor (USA, Prototype, 19941004) - &BurnDrvmd_thorp1, // The Story of Thor (USA, Prototype, 19941017) - &BurnDrvmd_thorf, // The Story of Thor - A Successor of The Light (Fra) - &BurnDrvmd_thorj, // The Story of Thor - Hikari o Tsugumono (Jpn) - &BurnDrvmd_supshin, // The Super Shinobi (Jpn) - &BurnDrvmd_supshin2, // The Super Shinobi II (Jpn, Kor) - &BurnDrvmd_supshin2p1, // The Super Shinobi II (Jpn, Prototype) - &BurnDrvmd_supshin2p2, // The Super Shinobi II (Jpn, Prototype, Earlier) - &BurnDrvSuperspy, // The Super Spy (NGM-011)(NGH-011) - &BurnDrvmd_termintr, // The Terminator (Euro) - &BurnDrvmd_termintru, // The Terminator (USA) - &BurnDrvmd_tick, // The Tick (USA) - &BurnDrvThetogyu, // The Togyu (315-5065, Japan) - &BurnDrvpce_druaga, // The Tower of Druaga - &BurnDrvSsideki4, // The Ultimate 11 - The SNK Football Championship / Tokuten Ou - Honoo no Libero - &BurnDrvWintbob, // The Winter Bobble (bootleg) - &BurnDrvmd_youngind, // The Young Indiana Jones Chronicles (USA, Prototype) - &BurnDrvmd_themeprk, // Theme Park (Euro, USA) - &BurnDrvmd_thomas, // Thomas the Tank Engine & Friends (USA) - &BurnDrvtrally, // Thrash Rally (ALM-003)(ALH-003) - &BurnDrvCps3wondersh, // Three Wonders (bootleg set 1, wonder 3 910520 etc) - &BurnDrvCps3wondersb, // Three Wonders (bootleg set 2, wonder 3 910520 etc) - &BurnDrvCps3wondersr1, // Three Wonders (wonder 3 910513 etc) - &BurnDrvCps3wonders, // Three Wonders (wonder 3 910520 etc) - &BurnDrvCps3wondersu, // Three Wonders (wonder 3 910520 USA) - &BurnDrvThunderl, // Thunder & Lightning - &BurnDrvpce_tblade, // Thunder Blade - &BurnDrvThndrbld1, // Thunder Blade (deluxe/standing, unprotected) - &BurnDrvThndrbld, // Thunder Blade (upright, FD1094 317-0056) - &BurnDrvThndblst, // Thunder Blaster (Japan) - &BurnDrvThunderxj, // Thunder Cross (Japan) - &BurnDrvThunderx, // Thunder Cross (set 1) - &BurnDrvThunderxa, // Thunder Cross (set 2) - &BurnDrvThunderxb, // Thunder Cross (set 3) - &BurnDrvThndrx2a, // Thunder Cross II (Asia) - &BurnDrvThndrx2j, // Thunder Cross II (Japan) - &BurnDrvThndrx2, // Thunder Cross II (World) - &BurnDrvTdragon1, // Thunder Dragon (4th Jun. 1991) - &BurnDrvTdragon, // Thunder Dragon (9th Jan. 1992) - &BurnDrvTdragonb, // Thunder Dragon (bootleg) - &BurnDrvTdragon2a, // Thunder Dragon 2 (1st Oct. 1993) - &BurnDrvTdragon2, // Thunder Dragon 2 (9th Nov. 1993) - &BurnDrvmd_tf2, // Thunder Force II (Euro, USA) - &BurnDrvmd_tf2j, // Thunder Force II MD (Jpn) - &BurnDrvmd_tf3, // Thunder Force III (Jpn, USA) - &BurnDrvmd_tf4, // Thunder Force IV (Euro) - &BurnDrvmd_tf4j, // Thunder Force IV (Jpn) - &BurnDrvThundfoxj, // Thunder Fox (Japan) - &BurnDrvmd_tfoxj, // Thunder Fox (Jpn) - &BurnDrvThundfoxu, // Thunder Fox (US) - &BurnDrvmd_tfox, // Thunder Fox (USA) - &BurnDrvThundfox, // Thunder Fox (World) - &BurnDrvTheroes, // Thunder Heroes - &BurnDrvThoop, // Thunder Hoop (Ver. 1) - &BurnDrvmd_tpwres, // Thunder Pro Wrestling Retsuden (Jpn) - &BurnDrvThndzonej, // Thunder Zone (Japan) - &BurnDrvThndzone4, // Thunder Zone (World 4 Players) - &BurnDrvThndzonea, // Thunder Zone (World) - &BurnDrvThndzone, // Thunder Zone (World, Rev 1) -#if defined FBA_DEBUG - &BurnDrvTndrcade, // Thundercade / Twin Formation [No sound, imperfect inputs, NOT WORKING] -#endif - &BurnDrvTigerHB1, // Tiger Heli (bootleg, set 1) - &BurnDrvTigerHB2, // Tiger Heli (bootleg, set 2) - &BurnDrvTigerHB3, // Tiger Heli (bootleg, set 3) - &BurnDrvTigerhJ, // Tiger Heli (Japan) - &BurnDrvTigerH, // Tiger Heli (US) - &BurnDrvtg_tigerrod, // Tiger Road - &BurnDrvTigerodb, // Tiger Road (US bootleg) - &BurnDrvTigeroad, // Tiger Road (US) - &BurnDrvtg_timcrus, // Time Cruise - &BurnDrvpce_timcrus2, // Time Cruise II - &BurnDrvmd_timedom, // Time Dominator 1st (Jpn, Kor) - &BurnDrvTimefgtr, // Time Fighter (Time Pilot conversion on Galaxian hardware) - &BurnDrvmd_timekill, // Time Killers (Euro) - &BurnDrvmd_timekillu, // Time Killers (USA) - &BurnDrvTimescan1, // Time Scanner (set 1, System 16A, FD1089B 317-0024) - &BurnDrvTimescan, // Time Scanner (set 2, System 16B) - &BurnDrvtimesup, // Time's Up Demo - &BurnDrvtg_timeball, // Timeball - &BurnDrvmd_tinhead, // TinHead (USA) - &BurnDrvmd_tintin, // Tintin au Tibet (Euro) - &BurnDrvmd_ttoonbhtk, // Tiny Toon Adventures (Kor) - &BurnDrvmd_ttacme, // Tiny Toon Adventures - Acme All-Stars (Euro) - &BurnDrvmd_ttacmeu, // Tiny Toon Adventures - Acme All-Stars (USA, Kor) - &BurnDrvmd_ttoonbht, // Tiny Toon Adventures - Buster's Hidden Treasure (Euro) - &BurnDrvmd_ttoonbhtu, // Tiny Toon Adventures - Buster's Hidden Treasure (USA) - &BurnDrvmd_ttoon3, // Tiny Toon Adventures 3 (Tw, Cracked) - &BurnDrvpce_titan, // Titan - &BurnDrvmd_tnnbass, // TNN Bass Tournament of Champions (USA) - &BurnDrvmd_tnnout, // TNN Outdoors Bass Tournament '96 (USA) -#if defined FBA_DEBUG - &BurnDrvTjumpman, // Tobikose! Jumpman [Coin input not working?, NOT WORKING] -#endif - &BurnDrvmd_slimew, // Todd's Adventures in Slime World (USA) - &BurnDrvmd_toejama, // Toe Jam & Earl (World) - &BurnDrvmd_toejam, // Toe Jam & Earl (World, Rev. A) - &BurnDrvmd_toejam2g, // Toe Jam & Earl in Panic auf Funkotron (Ger) - &BurnDrvmd_toejam2, // Toe Jam & Earl in Panic on Funkotron (Euro) - &BurnDrvmd_toejam2j, // Toe Jam & Earl in Panic on Funkotron (Jpn) - &BurnDrvmd_toejam2u, // Toe Jam & Earl in Panic on Funkotron (USA) - &BurnDrvpce_toiletk, // Toilet Kids - &BurnDrvTokib, // Toki (bootleg) - &BurnDrvTokiu, // Toki (US) - &BurnDrvToki, // Toki (World set 1) - &BurnDrvTokia, // Toki (World set 2) - &BurnDrvmd_toki1, // Toki - Going Ape Spit ~ JuJu Densetsu (World) - &BurnDrvmd_toki, // Toki - Going Ape Spit ~ JuJu Densetsu (World, Rev. A) - &BurnDrvTokiob, // Tokio / Scramble Formation (bootleg) - &BurnDrvTokio, // Tokio / Scramble Formation (newer) [no comment, NOT WORKING] -#if defined FBA_DEBUG - &BurnDrvTokioo, // Tokio / Scramble Formation (older) [no comment, NOT WORKING] - &BurnDrvTokiou, // Tokio / Scramble Formation (US) [no comment, NOT WORKING] - &BurnDrvTndrcadej, // Tokusyu Butai U.A.G. (Japan) [No sound, imperfect inputs, NOT WORKING] -#endif - &BurnDrvmd_tomjerry, // Tom and Jerry - Frantic Antics (USA, 1993) - &BurnDrvmd_tomjerry1, // Tom and Jerry - Frantic Antics (USA, 1994) - &BurnDrvmd_dinohirep3, // Tom Mason's Dinosaurs for Hire (Prototype, 19930426) - &BurnDrvmd_dinohirep2, // Tom Mason's Dinosaurs for Hire (Prototype, 19930427) - &BurnDrvmd_dinohirep1, // Tom Mason's Dinosaurs for Hire (Prototype, 19930502) - &BurnDrvmd_dinohire, // Tom Mason's Dinosaurs for Hire (USA) - &BurnDrvmd_lasorda, // Tommy Lasorda Baseball (USA) - &BurnDrvmd_larussa, // Tony La Russa Baseball (USA, Oceania) - &BurnDrvmd_topfight, // Top Fighter 2000 MK VIII - &BurnDrvmd_topf2k5, // Top Fighter 2005 - &BurnDrvmd_topgear2, // Top Gear 2 (USA) - &BurnDrvtophntrh, // Top Hunter - Roddy & Cathy (NGH-046) - &BurnDrvtophntr, // Top Hunter - Roddy & Cathy (NGM-046) - &BurnDrvTpgolf, // Top Player's Golf (NGM-003)(NGH-003) - &BurnDrvmd_topgolf, // Top Pro Golf (Jpn) - &BurnDrvmd_topgolf2, // Top Pro Golf 2 (Jpn) - &BurnDrvDrivfrct, // Top Racer (bootleg of Driving Force) - &BurnDrvtopsecrt, // Top Secret (Japan) - &BurnDrvTopspeedu, // Top Speed (US) - &BurnDrvTopspeed, // Top Speed (World) - &BurnDrvToppyrap, // Toppy & Rappy - &BurnDrvpce_toramich, // Tora e no Michi - &BurnDrvToramich, // Tora e no Michi (Japan) - &BurnDrvToryumon, // Toryumon - &BurnDrvpce_etercity, // Toshi Tensou Keikaku - Eternal City - &BurnDrvmd_totlfoot, // Total Football (Euro) - &BurnDrvTturfu, // Tough Turf (set 1, US, 8751 317-0099) - &BurnDrvTturf, // Tough Turf (set 2, Japan, 8751 317-0104) - &BurnDrvmd_toughman, // Toughman Contest (Euro, USA) - &BurnDrvmd_kingcol, // Tougiou King Colossus (Jpn) - &BurnDrvTkdenshoa, // Toukidenshou - Angel Eyes (VER. 960427) - &BurnDrvTkdensho, // Toukidenshou - Angel Eyes (VER. 960614) - &BurnDrvarkatour, // Tournament Arkanoid (US) - &BurnDrvmd_toxicc, // Toxic Crusaders (USA) - &BurnDrvpce_toyshopb, // Toy Shop Boys - &BurnDrvmd_toystory, // Toy Story (Euro) - &BurnDrvmd_toystoryu, // Toy Story (USA) - &BurnDrvmd_toys, // Toys (USA) - &BurnDrvmd_trampter, // Trampoline Terror! (USA) - &BurnDrvmd_transf3, // Transformers 3 (Rus) - &BurnDrvmd_traysia, // Traysia (USA) - &BurnDrvtreahunt, // Treasure Hunt (bootleg?) - &BurnDrvtotcarib, // Treasure of the Carribean (Prototype) - &BurnDrvtripool, // Tri-Pool (Casino Tech) - &BurnDrvtripoola, // Tri-Pool (Costal Games) - &BurnDrvpce_tricky, // Tricky - &BurnDrvtg_tricky, // Tricky Kick - &BurnDrvTrigon, // Trigon (Japan) - &BurnDrvTriothepj, // Trio The Punch - Never Forget Me... (Japan) - &BurnDrvTriothep, // Trio The Punch - Never Forget Me... (World) - &BurnDrvTdpgal, // Triple Draw Poker - &BurnDrvTriplfun, // Triple Fun - &BurnDrvmd_tplay96, // Triple Play '96 (USA) - &BurnDrvmd_tplaygld, // Triple Play Gold (USA) - &BurnDrvmd_tplayglda, // Triple Play Gold (USA, Alt) - &BurnDrvTriplep, // Triple Punch (set 1) - &BurnDrvTriplepa, // Triple Punch (set 2) - &BurnDrvTrojanr, // Trojan (Romstar) - &BurnDrvTrojan, // Trojan (US set 1) - &BurnDrvTrojana, // Trojan (US set 2) - &BurnDrvTrophyh, // Trophy Hunting - Bear & Moose V1.0 - &BurnDrvmd_troubsht, // Trouble Shooter (USA) - &BurnDrvmd_troyaik, // Troy Aikman NFL Football (USA) - &BurnDrvmd_truco96, // Truco '96 (Arg) - &BurnDrvmd_truelies, // True Lies (World) - &BurnDrvmd_truxton, // Truxton (Euro, USA) ~ Tatsujin (Jpn) - &BurnDrvTruxton2, // Truxton II\0Tatsujin Oh - &BurnDrvTruxton, // Truxton\0Tatsujin - &BurnDrvpce_tsuppari, // Tsuppari Oozumou - Heisei Ban - &BurnDrvpce_baibai, // Tsuru Teruhito no Jissen Kabushiki Bai Bai Game - &BurnDrvTumbleb, // Tumble Pop (bootleg set 1) - &BurnDrvTumbleb2, // Tumble Pop (bootleg set 2) - &BurnDrvTumblepj, // Tumble Pop (Japan) - &BurnDrvTumblep, // Tumble Pop (World) - &BurnDrvmd_tunshi1, // Tun Shi Tian Di III (Chi) - &BurnDrvmd_tunshi, // Tun Shi Tian Di III (China, Simple Chinese) - &BurnDrvTurbofrc, // Turbo Force -#if defined FBA_DEBUG - &BurnDrvToutrun2, // Turbo Out Run (cockpit, FD1094 317-0106) [no comment] -#endif - &BurnDrvToutrun3, // Turbo Out Run (cockpit, FD1094 317-0107) - &BurnDrvToutrun1, // Turbo Out Run (deluxe cockpit, FD1094 317-0109) - &BurnDrvToutrunj, // Turbo Out Run (Japan, Out Run upgrade, FD1094 317-0117) - &BurnDrvToutrun, // Turbo Out Run (Out Run upgrade, FD1094 317-0118) - &BurnDrvmd_toutrun, // Turbo OutRun (Euro, Jpn) - &BurnDrvTurkhunt, // Turkey Hunting USA V1.0 - &BurnDrvmd_turmamon, // Turma da Mônica na Terra dos Monstros (Bra) - &BurnDrvTurpin, // Turpin - &BurnDrvTurpins, // Turpin (bootleg on Scramble hardware) - &BurnDrvtg_turrican, // Turrican - &BurnDrvmd_turrican, // Turrican (Euro, USA) - &BurnDrvTurtles, // Turtles - &BurnDrvtg_tvbasket, // TV Sports Basketball - &BurnDrvpce_tvbasket, // TV Sports Basketball - &BurnDrvpce_tvfootbl, // TV Sports Football - &BurnDrvtg_tvfootbl, // TV Sports Football - &BurnDrvtg_tvhockey, // TV Sports Hockey - &BurnDrvpce_tvhockey, // TV Sports Hockey - &BurnDrvTwinactn, // Twin Action - &BurnDrvTwinadvk, // Twin Adventure (Korea) - &BurnDrvTwinadv, // Twin Adventure (World) - &BurnDrvmd_twincobr, // Twin Cobra (USA) - &BurnDrvTwineagl, // Twin Eagle - Revenge Joe's Brother - &BurnDrvmd_twinhawk, // Twin Hawk (Euro) ~ Daisenpuu (Jpn) - &BurnDrvTwinhawku, // Twin Hawk (US) - &BurnDrvTwinhawk, // Twin Hawk (World) - &BurnDrvTwinkle, // Twinkle - &BurnDrvtwinspri, // Twinkle Star Sprites - &BurnDrvmd_twinklet, // Twinkle Tale (Jpn) - &BurnDrvmd_twistedf, // Twisted Flipper (USA, Prototype) - &BurnDrvTwocrude, // Two Crude (US) - &BurnDrvmd_twocrude, // Two Crude Dudes (Euro) - &BurnDrvmd_twocrudeu, // Two Crude Dudes (USA) - &BurnDrvmd_twotribe, // Two Tribes - Populous II (Euro) - &BurnDrvTyphoon, // Typhoon - &BurnDrvmd_tyrant, // Tyrants - Fight through Time (USA) - &BurnDrvEarthjkr, // U.N. Defense Force: Earth Joker - &BurnDrvCpsUnsquad, // U.N. Squadron (US) -#if defined FBA_DEBUG - &BurnDrvUsclssic, // U.S. Classic [No sound, imperfect inputs, NOT WORKING] -#endif - &BurnDrvCpsCawingj, // U.S. Navy (901012 Japan) - &BurnDrvmd_gomora, // Uchuu Senkan Gomora (Jpn) - &BurnDrvCpsUecology, // Ultimate Ecology (931203 Japan) - &BurnDrvmd_umk3, // Ultimate Mortal Kombat 3 (Euro) - &BurnDrvmd_umk3u, // Ultimate Mortal Kombat 3 (USA) - &BurnDrvmd_ultqix, // Ultimate Qix (USA) - &BurnDrvmd_ultsoccr, // Ultimate Soccer (Euro) - &BurnDrvmd_ultsoccrp, // Ultimate Soccer (Euro, Prototype) - &BurnDrvUballoon, // Ultra Balloon - &BurnDrvUtoukond, // Ultra Toukon Densetsu (Japan) - &BurnDrvUltraman, // Ultraman (Japan) - &BurnDrvmd_ultraman, // Ultraman (Jpn) - &BurnDrvUmanclub, // Ultraman Club - Tatakae! Ultraman Kyoudai!! - &BurnDrvmd_unchartd, // Uncharted Waters (USA) - &BurnDrvmd_undead, // Undead Line (Jpn) - &BurnDrvUccopsar, // Undercover Cops (Alpha Renewal Version) - &BurnDrvUccopsj, // Undercover Cops (Japan) - &BurnDrvUccopsu, // Undercover Cops (US) - &BurnDrvUccops, // Undercover Cops (World) - &BurnDrvmd_univsold, // Universal Soldier (Euro, USA) - &BurnDrvUniwars, // UniWar S - &BurnDrvmd_unknown2, // Unknown Game 2 (Rockman-related?) - &BurnDrvUnkpacg, // unknown Pac-Man gambling game - &BurnDrvmd_unnecess, // Unnecessary Roughness 95 (USA) - &BurnDrvUpndown, // Up'n Down (315-5030) - &BurnDrvUpndownu, // Up'n Down (not encrypted) - &BurnDrvmd_ustrike, // Urban Strike (Euro, USA) - &BurnDrvMustangs, // US AAF Mustang (25th May. 1990 / Seoul Trading) - &BurnDrvMustang, // US AAF Mustang (25th May. 1990) - &BurnDrvMustangb, // US AAF Mustang (bootleg) - &BurnDrvMustangb2, // US AAF Mustang (TAB Austria bootleg) - &BurnDrvmd_teamusa, // USA Basketball World Challenge (Euro, USA) - &BurnDrvmd_dreamteam, // USA Basketball World Challenge (Jpn) - &BurnDrvpce_usaprobs, // USA Pro Basketball - &BurnDrvmd_uzukeo, // Uzu Keobukseon (Kor) - &BurnDrvVFive, // V-Five (Japan) - &BurnDrvmd_vfive, // V-Five (Jpn) - &BurnDrvvliner, // V-Liner (set 1) - &BurnDrvvlinero, // V-Liner (set 2) - &BurnDrvmd_valis, // Valis (USA) - &BurnDrvmd_valis3j, // Valis III (Jpn, Rev. A) - &BurnDrvmd_valis3, // Valis III (USA) - &BurnDrvCpsVampjr1, // Vampire - the night warriors (940630 Japan) - &BurnDrvCpsVampj, // Vampire - the night warriors (940705 Japan) - &BurnDrvCpsVampja, // Vampire - the night warriors (940705 Japan, alt) - &BurnDrvCpsVhuntjr2, // Vampire Hunter - darkstalkers' revenge (950302 Japan) - &BurnDrvCpsVhuntjr1s, // Vampire Hunter - darkstalkers' revenge (950307 Japan stop version) - &BurnDrvCpsVhuntjr1, // Vampire Hunter - darkstalkers' revenge (950307 Japan) - &BurnDrvCpsVhuntj, // Vampire Hunter - darkstalkers' revenge (950316 Japan) - &BurnDrvCpsVhunt2d, // Vampire Hunter 2 - darkstalkers revenge (970913 Japan Phoenix Edition) - &BurnDrvCpsVhunt2r1, // Vampire Hunter 2 - darkstalkers revenge (970913 Japan) - &BurnDrvCpsVhunt2, // Vampire Hunter 2 - darkstalkers revenge (970929 Japan) - &BurnDrvCpsVsava, // Vampire Savior - the lord of vampire (970519 Asia) - &BurnDrvCpsVsavd, // Vampire Savior - the lord of vampire (970519 Euro Phoenix Edition) - &BurnDrvCpsVsav, // Vampire Savior - the lord of vampire (970519 Euro) - &BurnDrvCpsVsavh, // Vampire Savior - the lord of vampire (970519 Hispanic) - &BurnDrvCpsVsavj, // Vampire Savior - the lord of vampire (970519 Japan) - &BurnDrvCpsVsavu, // Vampire Savior - the lord of vampire (970519 USA) - &BurnDrvCpsVsav2d, // Vampire Savior 2 - the lord of vampire (970913 Japan Phoenix Edition) - &BurnDrvCpsVsav2, // Vampire Savior 2 - the lord of vampire (970913 Japan) - &BurnDrvvanvan, // Van-Van Car - &BurnDrvvanvank, // Van-Van Car (Karateco) - &BurnDrvvanvanb, // Van-Van Car (set 3) - &BurnDrvVandykeb, // Vandyke (bootleg with PIC16c57) - &BurnDrvVandykejal, // Vandyke (Jaleco, Set 1) - &BurnDrvVandykejal2, // Vandyke (Jaleco, Set 2) - &BurnDrvVandyke, // Vandyke (Japan) - &BurnDrvmd_vaportr, // Vapor Trail (USA) - &BurnDrvVaportrau, // Vapor Trail - Hyper Offence Formation (US) - &BurnDrvVaportra, // Vapor Trail - Hyper Offence Formation (World revision 1) - &BurnDrvVaportraw3, // Vapor Trail - Hyper Offence Formation (World revision 3) - &BurnDrvVmetaln, // Varia Metal (New Ways Trading Co.) - &BurnDrvVmetal, // Varia Metal - &BurnDrvCpsVarthr1, // Varth - operation thunderstorm (920612 etc) - &BurnDrvCpsVarthu, // Varth - operation thunderstorm (920612 USA) - &BurnDrvCpsVarth, // Varth - operation thunderstorm (920714 etc) - &BurnDrvCpsVarthj, // Varth - operation thunderstorm (920714 Japan) - &BurnDrvmd_vecman, // Vectorman (Euro, USA) - &BurnDrvmd_vecmanp1, // Vectorman (Prototype) - &BurnDrvmd_vecmanp3, // Vectorman (Prototype, 19950724) - &BurnDrvmd_vecmanp2, // Vectorman (Prototype, Alt) - &BurnDrvmd_vecman2p1, // Vectorman 2 (Prototype) - &BurnDrvmd_vecman2p6, // Vectorman 2 (Prototype, 19960815) - &BurnDrvmd_vecman2p5, // Vectorman 2 (Prototype, 19960816) - &BurnDrvmd_vecman2p4, // Vectorman 2 (Prototype, 19960819) - &BurnDrvmd_vecman2p3, // Vectorman 2 (Prototype, 19960826) - &BurnDrvmd_vecman2p2, // Vectorman 2 (Prototype, 19960827) - &BurnDrvmd_vecman2, // Vectorman 2 (USA) - &BurnDrvpce_veigues, // Veigues - Tactical Gladiator - &BurnDrvtg_veigues, // Veigues - Tactical Gladiator - &BurnDrvVendetta2pd, // Vendetta (Asia 2 Players ver. D) - &BurnDrvVendetta2pu, // Vendetta (Asia 2 Players ver. U) - &BurnDrvVendetta2p, // Vendetta (World 2 Players ver. W) - &BurnDrvVendettar, // Vendetta (World 4 Players ver. R) - &BurnDrvVendetta, // Vendetta (World 4 Players ver. T) - &BurnDrvmd_venom, // Venom & Spider-Man - Separation Anxiety (Euro, USA) - &BurnDrvVenus, // Venus - &BurnDrvmd_vermilj, // Vermilion (Jpn) - &BurnDrvmd_verytex, // Verytex (Jpn) - &BurnDrvpce_victoryr, // Victory Run - &BurnDrvtg_victoryr, // Victory Run - &BurnDrvHustler, // Video Hustler - &BurnDrvHustlerb, // Video Hustler (bootleg) - &BurnDrvVpool, // Video Pool (bootleg on Moon Cresta hardware) - &BurnDrvviewpoin, // Viewpoint - &BurnDrvmd_viewpoin, // Viewpoint (USA) - &BurnDrvmd_viewpoinp, // Viewpoint (USA, Prototype) - &BurnDrvtg_vigilant, // Vigilante - &BurnDrvpce_vigilant, // Vigilante - &BurnDrvVigilantj, // Vigilante (Japan) - &BurnDrvVigilantu, // Vigilante (US) - &BurnDrvVigilantu2, // Vigilante (US, rev G) - &BurnDrvVigilant, // Vigilante (World, set 1) - &BurnDrvVigilant1, // Vigilante (World, set 2) - &BurnDrvVimanaj, // Vimana (Japan) - &BurnDrvVimana, // Vimana (World, set 1) - &BurnDrvVimanan, // Vimana (World, set 2) - &BurnDrvRedhawkb, // Vince (Redhawk bootleg) - &BurnDrvViofightj, // Violence Fight (Japan) - &BurnDrvViofightu, // Violence Fight (US) - &BurnDrvViofight, // Violence Fight (World) - &BurnDrvpce_violents, // Violent Soldier - &BurnDrvmd_vf2, // Virtua Fighter 2 - Genesis (Euro, USA) - &BurnDrvmd_vf2k, // Virtua Fighter 2 - Genesis (Kor) - &BurnDrvmd_vf2p5, // Virtua Fighter 2 - Genesis (Prototype, 19960819) - &BurnDrvmd_vf2p4, // Virtua Fighter 2 - Genesis (Prototype, 19960830) - &BurnDrvmd_vf2p3, // Virtua Fighter 2 - Genesis (Prototype, 19960913) - &BurnDrvmd_vf2p2, // Virtua Fighter 2 - Genesis (Prototype, 19960920) - &BurnDrvmd_vf2p1, // Virtua Fighter 2 - Genesis (Prototype, 19960927) - &BurnDrvmd_vf2tek, // Virtua Fighter 2 vs Tekken 2 -#if defined FBA_DEBUG - &BurnDrvmd_vr, // Virtua Racing (Euro) [no comment, NOT WORKING] - &BurnDrvmd_vrj, // Virtua Racing (Jpn) [no comment, NOT WORKING] - &BurnDrvmd_vru, // Virtua Racing (USA) [no comment, NOT WORKING] -#endif - &BurnDrvmd_vbart, // Virtual Bart (World) - &BurnDrvmd_vpinball, // Virtual Pinball (Euro, USA) - &BurnDrvmd_vixen357, // Vixen 357 (Jpn) - &BurnDrvmd_virak, // Voina Irak (Pirate) - &BurnDrvpce_volfied, // Volfied - &BurnDrvVolfiedjo, // Volfied (Japan) - &BurnDrvVolfiedj, // Volfied (Japan, revision 1) - &BurnDrvmd_volfied, // Volfied (Jpn) - &BurnDrvVolfiedu, // Volfied (US, revision 1) - &BurnDrvVolfied, // Volfied (World, revision 1) - &BurnDrvgowcaizr, // Voltage Fighter - Gowcaizer / Choujin Gakuen Gowcaizer - &BurnDrvmd_vrtroop, // VR Troopers (Euro, USA) - &BurnDrvVulcan, // Vulcan Venture (New) - &BurnDrvVulcana, // Vulcan Venture (Old) - &BurnDrvVulcanb, // Vulcan Venture (Oldest) - &BurnDrvvulgusj, // Vulgus (Japan?) - &BurnDrvvulgus, // Vulgus (set 1) - &BurnDrvvulgusa, // Vulgus (set 2) - &BurnDrvpce_wring, // W-ring - The Double Rings - &BurnDrvmd_wackyrac, // Wacky Races (USA, Prototype) - &BurnDrvmd_wworldsp3, // Wacky Worlds (Prototype, 19940808) - &BurnDrvmd_wworldsp2, // Wacky Worlds (Prototype, 19940817) - &BurnDrvmd_wworldsp1, // Wacky Worlds (Prototype, 19940819) - &BurnDrvmd_wworlds, // Wacky Worlds (USA) - &BurnDrvpce_waiwaimj, // Wai Wai Mahjong - Yukaina Janyuu Tachi - &BurnDrvMj4simai, // Wakakusamonogatari Mahjong Yonshimai (Japan) - &BurnDrvwakuwak7, // Waku Waku 7 - &BurnDrvpce_valkyrie, // Walkuere no Densetsu - &BurnDrvWallc, // Wall Crash (set 1) - &BurnDrvWallca, // Wall Crash (set 2) - &BurnDrvpce_wallaby, // Wallaby!! - Usagi no Kuni no Kangaroo Race - &BurnDrvWwallyja, // Wally wo Sagase! (rev A, Japan, FD1094 317-0197A) - &BurnDrvWwallyj, // Wally wo Sagase! (rev B, Japan, FD1094 317-0197B) - &BurnDrvmd_waniwani, // Wani Wani World (Jpn) - &BurnDrvWrofaero, // War of Aero - Project MEIOU - &BurnDrvWarofbug, // War of the Bugs or Monsterous Manouvers in a Mushroom Maze -#if defined FBA_DEBUG - &BurnDrvWarofbugg, // War of the Bugs or Monsterous Manouvers in a Mushroom Maze (German) [no comment, NOT WORKING] -#endif - &BurnDrvWarofbugu, // War of the Bugs or Monsterous Manouvers in a Mushroom Maze (US) - &BurnDrvWarzardr1, // War-Zard / Red Earth (Japan 961023) - &BurnDrvWarzard, // War-Zard / Red Earth (Japan 961121) - &BurnDrvmd_wardner, // Wardner (USA) - &BurnDrvmd_wardnerj, // Wardner no Mori Special (Jpn) - &BurnDrvmd_wario3, // Wario Land 3 (Rus) - &BurnDrvmd_warlock, // Warlock (Euro, USA) - &BurnDrvmd_warlockp, // Warlock (USA, Prototype) - &BurnDrvmd_warpsped, // Warpspeed (USA) - &BurnDrvWarriorb, // Warrior Blade - Rastan Saga Episode III (Japan) - &BurnDrvmd_warrior, // Warrior of Rome (USA) - &BurnDrvmd_warrior2, // Warrior of Rome II (USA) - &BurnDrvCpsWofr1, // Warriors of Fate (921002 etc) - &BurnDrvCpsWof, // Warriors of Fate (921031 etc) - &BurnDrvCpsWofu, // Warriors of Fate (921031 USA) - &BurnDrvCpsWofb, // Warriors of Fate (bootleg, 921002 etc) -// &BurnDrvCpsWoffr, // Warriors of Fate (French Translation) [no comment] - &BurnDrvmd_warsong, // Warsong (USA) - &BurnDrvWatrball, // Water Balls - &BurnDrvWmatch, // Water Match (315-5064) - &BurnDrvmd_waterwld, // WaterWorld (Euro, Prototype) - &BurnDrvmd_wayneg, // Wayne Gretzky and the NHLPA All-Stars (Euro, USA) - &BurnDrvmd_waynewld, // Wayne's World (USA) - &BurnDrvmd_weaponld, // Weaponlord (USA) - &BurnDrvWelltrisj, // Welltris - Alexey Pajitnov's (Japan, 2 players) - &BurnDrvWelltris, // Welltris - Alexey Pajitnov's (World?, 2 players) -#if defined FBA_DEBUG - &BurnDrvWeststry, // West Story (bootleg of Blood Bros.) [no comment, NOT WORKING] -#endif - &BurnDrvmd_whacacri, // Whac-a-Critter (USA) - &BurnDrvmd_wheelfor, // Wheel of Fortune (USA) - &BurnDrvmd_carmnwldb, // Where in the World Is Carmen Sandiego? (Bra) - &BurnDrvmd_carmnwld, // Where in the World Is Carmen Sandiego? (Euro, USA) - &BurnDrvmd_carmntimb, // Where in Time Is Carmen Sandiego? (Bra) - &BurnDrvmd_carmntim, // Where in Time Is Carmen Sandiego? (Euro, USA) - &BurnDrvmd_whiprush, // Whip Rush (USA) - &BurnDrvmd_whiprushj, // Whip Rush - Wakusei Voltegas no Nazo (Jpn) - &BurnDrvWiggie, // Wiggie Waggie - &BurnDrvWildfang, // Wild Fang / Tecmo Knight - &BurnDrvmd_wildsnak, // Wild Snake (USA, Prototype) - &BurnDrvmd_arcadeghu, // Williams Arcade's Greatest Hits (USA) - &BurnDrvCpsWillowj, // Willow (Japan, Japanese) - &BurnDrvCpsWillowo, // Willow (US old ver.) - &BurnDrvCpsWillow, // Willow (US) - &BurnDrvWilytowr, // Wily Tower - &BurnDrvmd_wimbled, // Wimbledon Championship Tennis (Euro) - &BurnDrvmd_wimbledj, // Wimbledon Championship Tennis (Jpn) - &BurnDrvmd_wimbledu, // Wimbledon Championship Tennis (USA) - &BurnDrvmd_wimbledup, // Wimbledon Championship Tennis (USA, Prototype) - &BurnDrvwjammers, // Windjammers / Flying Power Disc - &BurnDrvWschampb, // Wing Shooting Championship V1.00 - &BurnDrvWschampa, // Wing Shooting Championship V1.01 - &BurnDrvWschamp, // Wing Shooting Championship V2.00 - &BurnDrvmd_wingswor, // Wings of Wor (USA) - &BurnDrvpce_winshot, // Winning Shot - &BurnDrvmd_wintchal, // Winter Challenge (Euro, USA, Rev. 1) - &BurnDrvmd_wintchalp, // Winter Challenge (Prototype) - &BurnDrvmd_wintolu, // Winter Olympic Games (USA) - &BurnDrvmd_wintol, // Winter Olympics (Euro) - &BurnDrvmd_wintolj, // Winter Olympics (Jpn) - &BurnDrvmd_winx, // Winx - Shkola Volshyebnits (Rus) - &BurnDrvmd_winx3d, // Winx 3D Volshebnoe Priklyuchenie (Rus) - &BurnDrvWits, // Wit's (Japan) - &BurnDrvmd_wiznlizu, // Wiz'n'Liz (USA) - &BurnDrvmd_wiznliz, // Wiz'n'Liz - The Frantic Wabbit Wescue (Euro) - &BurnDrvWizdfire, // Wizard Fire (Over Sea v2.1) - &BurnDrvWizdfireu, // Wizard Fire (US v1.1) - &BurnDrvmd_immortalj, // Wizard of the Immortal (Jpn) - &BurnDrvWolffang, // Wolf Fang -Kuhga 2001- (Japan) - &BurnDrvmd_wolfchld, // Wolfchild (USA) - &BurnDrvmd_wolverin, // Wolverine - Adamantium Rage (Euro, USA) - &BurnDrvCpsWonder3, // Wonder 3 (910520 Japan) - &BurnDrvWboyu, // Wonder Boy (not encrypted) - &BurnDrvWboyo, // Wonder Boy (set 1, 315-5135) - &BurnDrvWboy, // Wonder Boy (set 1, 315-5177) - &BurnDrvWboy2, // Wonder Boy (set 2, 315-5178) - &BurnDrvWboy2u, // Wonder Boy (set 2, not encrypted) - &BurnDrvWboy3, // Wonder Boy (set 3, 315-5135) - &BurnDrvWboy4, // Wonder Boy (set 4, 315-5162) - &BurnDrvWboy5, // Wonder Boy (set 5, bootleg) - &BurnDrvWbdeluxe, // Wonder Boy Deluxe -#if defined FBA_DEBUG - &BurnDrvWb3bbl, // Wonder Boy III - Monster Lair (bootleg) [no comment] -#endif - &BurnDrvmd_wboy3, // Wonder Boy III - Monster Lair (Euro) ~ Monster Lair (Jpn) - &BurnDrvWb31, // Wonder Boy III - Monster Lair (set 1, Japan, System 16A, FD1094 317-0084) - &BurnDrvWb32, // Wonder Boy III - Monster Lair (set 2, Japan, System 16B, FD1094 317-0085) - &BurnDrvWb33, // Wonder Boy III - Monster Lair (set 3, World, System 16B, FD1094 317-0089) - &BurnDrvWb34, // Wonder Boy III - Monster Lair (set 4, Japan, System 16B, FD1094 317-0087) - &BurnDrvWb35, // Wonder Boy III - Monster Lair (set 5, Japan, System 16A, FD1089A 317-0086) - &BurnDrvWb3, // Wonder Boy III - Monster Lair (set 6, World, System 16B, 8751 317-0098) - &BurnDrvmd_wboymw, // Wonder Boy in Monster World (Euro, USA) - &BurnDrvmd_wboy5, // Wonder Boy V - Monster World III (Jpn, Kor) - &BurnDrvWondl96, // Wonder League '96 (Korea) - &BurnDrvWlstar, // Wonder League Star - Sok-Magicball Fighting (Korea) - &BurnDrvmd_wondlib, // Wonder Library (Jpn) - &BurnDrvpce_wonderm, // Wonder Momo - &BurnDrvWndrplnt, // Wonder Planet (Japan) - &BurnDrvWondstck, // Wonder Stick - &BurnDrvwoodpeck, // Woodpecker (set 1) - &BurnDrvwoodpeka, // Woodpecker (set 2) - &BurnDrvpce_wbeach, // World Beach Volley - &BurnDrvmd_wcsb, // World Championship Soccer (USA) ~ World Cup Soccer (Jpn) - &BurnDrvmd_wcs, // World Championship Soccer (USA, Rev. B) ~ World Cup Soccer (Jpn, Rev. B) - &BurnDrvmd_wcsa, // World Championship Soccer (USA, v1.2) ~ World Cup Soccer (Jpn, v1.2) - &BurnDrvmd_wcs2, // World Championship Soccer II (Euro) - &BurnDrvmd_wcs2p18, // World Championship Soccer II (Prototype G, 19940222) - &BurnDrvmd_wcs2p16, // World Championship Soccer II (Prototype J, 19940228) - &BurnDrvmd_wcs2p15, // World Championship Soccer II (Prototype N, 19940303) - &BurnDrvmd_wcs2p14, // World Championship Soccer II (Prototype O, 19940303) - &BurnDrvmd_wcs2p13, // World Championship Soccer II (Prototype P, 19940304) - &BurnDrvmd_wcs2p11, // World Championship Soccer II (Prototype R, 19940309) - &BurnDrvmd_wcs2p10, // World Championship Soccer II (Prototype U, 19940314) - &BurnDrvmd_wcs2p09, // World Championship Soccer II (Prototype Y, 19940318) - &BurnDrvmd_wcs2p17, // World Championship Soccer II (Prototype, 19940223) - &BurnDrvmd_wcs2p12, // World Championship Soccer II (Prototype, 19940309) - &BurnDrvmd_wcs2p08, // World Championship Soccer II (Prototype, 19940323) - &BurnDrvmd_wcs2p07, // World Championship Soccer II (Prototype, 19940324) - &BurnDrvmd_wcs2p06, // World Championship Soccer II (Prototype, 19940325) - &BurnDrvmd_wcs2p05, // World Championship Soccer II (Prototype, 19940326) - &BurnDrvmd_wcs2p04, // World Championship Soccer II (Prototype, 19940327) - &BurnDrvmd_wcs2p02, // World Championship Soccer II (Prototype, 19940329) - &BurnDrvmd_wcs2p03, // World Championship Soccer II (Prototype, 19940329-B) - &BurnDrvmd_wcs2p01, // World Championship Soccer II (Prototype, 19940330) - &BurnDrvmd_wcs2u, // World Championship Soccer II (USA) - &BurnDrvmd_wcs2up, // World Championship Soccer II (USA, Prototype) - &BurnDrvpce_wcircuit, // World Circuit - &BurnDrvtg_wcbasebl, // World Class Baseball - &BurnDrvmd_wclead, // World Class Leaderboard Golf (Euro) - &BurnDrvmd_wcleadu, // World Class Leaderboard Golf (USA) - &BurnDrvtg_wctennis, // World Court Tennis - &BurnDrvWc90b2, // World Cup '90 (bootleg) - &BurnDrvWc90a, // World Cup '90 (Euro set 1) - &BurnDrvWc90b, // World Cup '90 (Euro set 2) - &BurnDrvWc90t, // World Cup '90 (trackball) - &BurnDrvWc90, // World Cup '90 (World) - &BurnDrvmd_wcup90, // World Cup Italia '90 (Euro) - &BurnDrvmd_wcup94, // World Cup USA 94 (Euro, USA, Kor) - &BurnDrvwh1h, // World Heroes (ALH-005 - &BurnDrvwh1, // World Heroes (ALM-005) - &BurnDrvmd_whj, // World Heroes (Jpn) - &BurnDrvmd_whjp5, // World Heroes (Jpn, Prototype, 19940330) - &BurnDrvmd_whjp4, // World Heroes (Jpn, Prototype, 19940408) - &BurnDrvmd_whjp3, // World Heroes (Jpn, Prototype, 19940415) - &BurnDrvmd_whjp1, // World Heroes (Jpn, Prototype, 19940420, broken - C05 missing) - &BurnDrvmd_whjp2, // World Heroes (Jpn, Prototype, 19940420-B) - &BurnDrvwh1ha, // World Heroes (set 3) - &BurnDrvmd_wh, // World Heroes (USA) - &BurnDrvmd_whp13, // World Heroes (USA, Prototype, 19940223) - &BurnDrvmd_whp12, // World Heroes (USA, Prototype, 19940303) - &BurnDrvmd_whp11, // World Heroes (USA, Prototype, 19940307) - &BurnDrvmd_whp10, // World Heroes (USA, Prototype, 19940309) - &BurnDrvmd_whp09, // World Heroes (USA, Prototype, 19940315) - &BurnDrvmd_whp08, // World Heroes (USA, Prototype, 19940316) - &BurnDrvmd_whp07, // World Heroes (USA, Prototype, 19940318) - &BurnDrvmd_whp06, // World Heroes (USA, Prototype, 19940322, broken - C07 missing) - &BurnDrvmd_whp05, // World Heroes (USA, Prototype, 19940323) - &BurnDrvmd_whp04, // World Heroes (USA, Prototype, 19940324) - &BurnDrvmd_whp03, // World Heroes (USA, Prototype, 19940330) - &BurnDrvmd_whp01, // World Heroes (USA, Prototype, 19940331) - &BurnDrvmd_whp02, // World Heroes (USA, Prototype, 19940331-B) - &BurnDrvwh2, // World Heroes 2 (ALM-006)(ALH-006) - &BurnDrvwh2j, // World Heroes 2 Jet (ADM-007)(ADH-007) - &BurnDrvwhp, // World Heroes Perfect - &BurnDrvpce_wjockey, // World Jockey - &BurnDrvmd_worldillj, // World of Illusion - Fushigi na Magic Box (Jpn) - &BurnDrvmd_worldilljp, // World of Illusion - Fushigi na Magic Box (Jpn, Prototype) - &BurnDrvmd_worldill, // World of Illusion Starring Mickey Mouse and Donald Duck (Euro) - &BurnDrvmd_worldillu, // World of Illusion Starring Mickey Mouse and Donald Duck (USA, Kor) - &BurnDrvmd_wsb95, // World Series Baseball '95 (USA) - &BurnDrvmd_wsb95p23, // World Series Baseball '95 (USA, Prototype, 19941208) - &BurnDrvmd_wsb95p22, // World Series Baseball '95 (USA, Prototype, 19941214) - &BurnDrvmd_wsb95p21, // World Series Baseball '95 (USA, Prototype, 19941228-SB) - &BurnDrvmd_wsb95p20, // World Series Baseball '95 (USA, Prototype, 19950101-TST) - &BurnDrvmd_wsb95p19, // World Series Baseball '95 (USA, Prototype, 19950103-TST) - &BurnDrvmd_wsb95p18, // World Series Baseball '95 (USA, Prototype, 19950105) - &BurnDrvmd_wsb95p17, // World Series Baseball '95 (USA, Prototype, 19950109-TST) - &BurnDrvmd_wsb95p16, // World Series Baseball '95 (USA, Prototype, 19950110) - &BurnDrvmd_wsb95p15, // World Series Baseball '95 (USA, Prototype, 19950114-RM) - &BurnDrvmd_wsb95p14, // World Series Baseball '95 (USA, Prototype, 19950116) - &BurnDrvmd_wsb95p13, // World Series Baseball '95 (USA, Prototype, 19950118-RM) - &BurnDrvmd_wsb95p12, // World Series Baseball '95 (USA, Prototype, 19950120) - &BurnDrvmd_wsb95p11, // World Series Baseball '95 (USA, Prototype, 19950125) - &BurnDrvmd_wsb95p10, // World Series Baseball '95 (USA, Prototype, 19950130) - &BurnDrvmd_wsb95p09, // World Series Baseball '95 (USA, Prototype, 19950202) - &BurnDrvmd_wsb95p08, // World Series Baseball '95 (USA, Prototype, 19950203) - &BurnDrvmd_wsb95p07, // World Series Baseball '95 (USA, Prototype, 19950207) - &BurnDrvmd_wsb95p05, // World Series Baseball '95 (USA, Prototype, 19950209) - &BurnDrvmd_wsb95p06, // World Series Baseball '95 (USA, Prototype, 19950209-B) - &BurnDrvmd_wsb95p04, // World Series Baseball '95 (USA, Prototype, 19950211) - &BurnDrvmd_wsb95p03, // World Series Baseball '95 (USA, Prototype, 19950212) - &BurnDrvmd_wsb95p02, // World Series Baseball '95 (USA, Prototype, 19950213) - &BurnDrvmd_wsb95p01, // World Series Baseball '95 (USA, Prototype, 19950214) - &BurnDrvmd_wsb96, // World Series Baseball '96 (USA) - &BurnDrvmd_wsb98, // World Series Baseball '98 (USA) - &BurnDrvmd_wsb, // World Series Baseball (USA) - &BurnDrvmd_wsbp10, // World Series Baseball (USA, Prototype, 19931001) - &BurnDrvmd_wsbp09, // World Series Baseball (USA, Prototype, 19931222) - &BurnDrvmd_wsbp08, // World Series Baseball (USA, Prototype, 19931226) - &BurnDrvmd_wsbp07, // World Series Baseball (USA, Prototype, 19931229) - &BurnDrvmd_wsbp06, // World Series Baseball (USA, Prototype, 19940103) - &BurnDrvmd_wsbp05, // World Series Baseball (USA, Prototype, 19940106) - &BurnDrvmd_wsbp04, // World Series Baseball (USA, Prototype, 19940116) - &BurnDrvmd_wsbp03, // World Series Baseball (USA, Prototype, 19940218) - &BurnDrvmd_wsbp02, // World Series Baseball (USA, Prototype, 19940304) - &BurnDrvmd_wsbp01, // World Series Baseball (USA, Prototype, 19940527) - &BurnDrvtg_wscomp, // World Sports Competition - &BurnDrvmd_worldts, // World Trophy Soccer (USA) - &BurnDrvmd_worms, // Worms (Euro) - &BurnDrvmd_wormsp, // Worms (Euro, Prototype) - &BurnDrvWownfant, // WOW New Fantasia - &BurnDrvmd_wrestwar, // Wrestle War (Euro, Jpn) - &BurnDrvmd_wrestwarp, // Wrestle War (Jpn, Prototype) - &BurnDrvWrestwar1, // Wrestle War (set 1, Japan, FD1094 317-0090) - &BurnDrvWrestwar2, // Wrestle War (set 2, World, FD1094 317-0102) - &BurnDrvWrestwar, // Wrestle War (set 3, World, 8751 317-0103) - &BurnDrvmd_wrstball, // Wrestleball (Jpn) - &BurnDrvmd_wukong, // Wu Kong Wai Zhuan (Chi) - &BurnDrvneoww2, // WW2 Demo - Arcade Development Project - &BurnDrvmd_wwfraw, // WWF Raw (World) - &BurnDrvmd_wwfroyal, // WWF Royal Rumble (World) - &BurnDrvmd_wwfsup, // WWF Super WrestleMania (Euro, USA) - &BurnDrvWwfsstarb, // WWF Superstars (bootleg) - &BurnDrvWwfsstar, // WWF Superstars (Europe) - &BurnDrvWwfsstarj, // WWF Superstars (Japan) - &BurnDrvWwfsstarua, // WWF Superstars (US) - &BurnDrvWwfsstaru, // WWF Superstars (US, newer) - &BurnDrvWwfwfestj, // WWF WrestleFest (Japan) - &BurnDrvWwfwfestk, // WWF WrestleFest (Korea) - &BurnDrvWwfwfestb, // WWF WrestleFest (US bootleg) - &BurnDrvWwfwfest, // WWF WrestleFest (US set 1) - &BurnDrvWwfwfesta, // WWF WrestleFest (US Tecmo) - &BurnDrvmd_wwfag, // WWF WrestleMania - The Arcade Game (Euro, USA) - &BurnDrvmd_wwfagp, // WWF WrestleMania - The Arcade Game (USA, Prototype) - &BurnDrvXmultiplm72, // X Multiply (Japan, M72) - &BurnDrvXmultipl, // X Multiply (World, M81) - &BurnDrvXmen2pa, // X-Men (2 Players ver AAA) - &BurnDrvXmen2pe, // X-Men (2 Players ver EAA) - &BurnDrvXmen2pj, // X-Men (2 Players ver JAA) - &BurnDrvXmenaa, // X-Men (4 Players ver ADA) - &BurnDrvXmena, // X-Men (4 Players ver AEA) - &BurnDrvXmene, // X-Men (4 Players ver EBA) - &BurnDrvXmenj, // X-Men (4 Players ver JBA) - &BurnDrvXmen, // X-Men (4 Players ver UBB) -#if defined FBA_DEBUG - &BurnDrvXmen6p, // X-Men (6 Players ver ECB) [no comment, NOT WORKING] - &BurnDrvXmen6pu, // X-Men (6 Players ver UCB) [no comment, NOT WORKING] -#endif - &BurnDrvmd_xmen, // X-Men (Euro) - &BurnDrvmd_xmenu, // X-Men (USA) - &BurnDrvCpsXmcotajr, // X-Men - children of the atom (941208 Japan, rent version) - &BurnDrvCpsXmcotaar1, // X-Men - children of the atom (941217 Asia) - &BurnDrvCpsXmcotaj3, // X-Men - children of the atom (941217 Japan) - &BurnDrvCpsXmcotaj2, // X-Men - children of the atom (941219 Japan) - &BurnDrvCpsXmcotaj1, // X-Men - children of the atom (941222 Japan) - &BurnDrvCpsXmcotaa, // X-Men - children of the atom (950105 Asia) - &BurnDrvCpsXmcotar1d, // X-Men - children of the atom (950105 Euro Phoenix Edition) - &BurnDrvCpsXmcotar1, // X-Men - children of the atom (950105 Euro) - &BurnDrvCpsXmcotahr1, // X-Men - children of the atom (950105 Hispanic) - &BurnDrvCpsXmcotaj, // X-Men - children of the atom (950105 Japan) - &BurnDrvCpsXmcotau, // X-Men - children of the atom (950105 USA) - &BurnDrvCpsXmcota, // X-Men - children of the atom (950331 Euro) - &BurnDrvCpsXmcotah, // X-Men - children of the atom (950331 Hispanic) - &BurnDrvmd_xmen2, // X-Men 2 - Clone Wars (Euro, USA) - &BurnDrvmd_xmen2p19, // X-Men 2 - Clone Wars (Prototype, 19940506) - &BurnDrvmd_xmen2p18, // X-Men 2 - Clone Wars (Prototype, 19940510) - &BurnDrvmd_xmen2p17, // X-Men 2 - Clone Wars (Prototype, 19941018) - &BurnDrvmd_xmen2p16, // X-Men 2 - Clone Wars (Prototype, 19941117) - &BurnDrvmd_xmen2p15, // X-Men 2 - Clone Wars (Prototype, 19941123) - &BurnDrvmd_xmen2p14, // X-Men 2 - Clone Wars (Prototype, 19941128) - &BurnDrvmd_xmen2p13, // X-Men 2 - Clone Wars (Prototype, 19941130) - &BurnDrvmd_xmen2p12, // X-Men 2 - Clone Wars (Prototype, 19941202) - &BurnDrvmd_xmen2p11, // X-Men 2 - Clone Wars (Prototype, 19941203) - &BurnDrvmd_xmen2p10, // X-Men 2 - Clone Wars (Prototype, 19941206) - &BurnDrvmd_xmen2p09, // X-Men 2 - Clone Wars (Prototype, 19941207) - &BurnDrvmd_xmen2p08, // X-Men 2 - Clone Wars (Prototype, 19941208) - &BurnDrvmd_xmen2p07, // X-Men 2 - Clone Wars (Prototype, 19941209) - &BurnDrvmd_xmen2p06, // X-Men 2 - Clone Wars (Prototype, 19941210) - &BurnDrvmd_xmen2p04, // X-Men 2 - Clone Wars (Prototype, 19941211) - &BurnDrvmd_xmen2p05, // X-Men 2 - Clone Wars (Prototype, 19941211-A) - &BurnDrvmd_xmen2p03, // X-Men 2 - Clone Wars (Prototype, 19941214) - &BurnDrvmd_xmen2p02, // X-Men 2 - Clone Wars (Prototype, 19941215) - &BurnDrvmd_xmen2p01, // X-Men 2 - Clone Wars (Prototype, 19941216) - &BurnDrvCpsXmvsfjr2, // X-Men vs Street Fighter (960909 Japan) - &BurnDrvCpsXmvsfar2, // X-Men vs Street Fighter (960910 Asia) - &BurnDrvCpsXmvsfr1, // X-Men vs Street Fighter (960910 Euro) - &BurnDrvCpsXmvsfjr1, // X-Men vs Street Fighter (960910 Japan) - &BurnDrvCpsXmvsfar1, // X-Men vs Street Fighter (960919 Asia) - &BurnDrvCpsXmvsf, // X-Men vs Street Fighter (961004 Euro) - &BurnDrvCpsXmvsfh, // X-Men vs Street Fighter (961004 Hispanic) - &BurnDrvCpsXmvsfj, // X-Men vs Street Fighter (961004 Japan) - &BurnDrvCpsXmvsfu1d, // X-Men vs Street Fighter (961004 USA Phoenix Edition) - &BurnDrvCpsXmvsfur1, // X-Men vs Street Fighter (961004 USA) - &BurnDrvCpsXmvsfa, // X-Men vs Street Fighter (961023 Asia) - &BurnDrvCpsXmvsfb, // X-Men vs Street Fighter (961023 Brazil) - &BurnDrvCpsXmvsfu, // X-Men vs Street Fighter (961023 USA) - &BurnDrvmd_xpertsp, // X-perts (Prototype) - &BurnDrvmd_xperts, // X-perts (USA) - &BurnDrvmd_xdr, // XDR - X Dazedly Ray (Jpn) - &BurnDrvmd_xenon2, // Xenon 2 - Megablast (Euro) - &BurnDrvThreein1semi, // XESS - The New Revolution (SemiCom 3-in-1) - &BurnDrvpce_xevious, // Xevious - Fardraut Densetsu - &BurnDrvmd_xiaomo, // Xiao Monv - Magic Girl (Chi) - &BurnDrvmd_xinqig, // Xin Qi Gai Wang Zi (Chi) - &BurnDrvmd_xinqig1, // Xin Qi Gai Wang Zi (Chi, Alt) - &BurnDrvXorworld, // Xor World (prototype) - &BurnDrvmd_yasech, // Ya Se Chuan Shuo (Chi) -#if defined FBA_DEBUG - &BurnDrvLeaguemn, // Yakyuu Kakutou League-Man (Japan) [Imperfect sound and graphics, NOT WORKING] -#endif - &BurnDrvmd_yangji, // Yang Jia Jiang - Yang Warrior Family (Chi) - &BurnDrvyankeedo, // Yankee DO! - &BurnDrvYesnoj, // Yes/No Sinri Tokimeki Chart - &BurnDrvtg_yobro, // Yo, Bro - &BurnDrvmd_yogibear, // Yogi Bear's Cartoon Capers (Euro) - &BurnDrvYoujyudn, // Youjyuden (Japan) - &BurnDrvpce_youkaid, // Youkai Douchuuki - &BurnDrvmd_ys3j, // Ys - Wanderers from Ys (Jpn) - &BurnDrvmd_ys3, // Ys III (USA) - &BurnDrvmd_yuyumt, // Yu Yu Hakusho - Makyou Toitsusen (Jpn) - &BurnDrvmd_yuyusf, // Yu Yu Hakusho - Sunset Fighters (Bra) - &BurnDrvmd_yuyug, // Yu Yu Hakusho Gaiden (Jpn) - &BurnDrvpce_yuyu, // Yuu Yuu Jinsei - Victory Life - &BurnDrvYuyugogo, // Yuuyu no Quiz de GO!GO! (Japan) - &BurnDrvmd_zanyasha, // Zan Yasha Enbukyoku (Jpn) - &BurnDrvmd_zanygolf1, // Zany Golf (Euro, USA) - &BurnDrvmd_zanygolf, // Zany Golf (Euro, USA, v1.1) - &BurnDrvzedblade, // Zed Blade / Operation Ragnarok - &BurnDrvpce_zero4ca, // Zero 4 Champ - &BurnDrvpce_zero4c, // Zero 4 Champ (v1.5) - &BurnDrvZeropntj, // Zero Point (Japan) - &BurnDrvZeropnt, // Zero Point (set 1) - &BurnDrvZeropnta, // Zero Point (set 2) - &BurnDrvZeropnt2, // Zero Point 2 - &BurnDrvmd_zero, // Zero the Kamikaze Squirrel (Euro) - &BurnDrvmd_zerou, // Zero the Kamikaze Squirrel (USA) - &BurnDrvZerotime, // Zero Time - &BurnDrvmd_zerotol, // Zero Tolerance (Euro, USA) - &BurnDrvZerowing, // Zero Wing - &BurnDrvZerowng2, // Zero Wing (2 player simultaneous ver.) - &BurnDrvmd_zerowing, // Zero Wing (Euro) - &BurnDrvmd_zerowingj, // Zero Wing (Jpn) - &BurnDrvZerozone, // Zero Zone - &BurnDrvDrgw2c, // Zhong Guo Long II (V100C, China) - &BurnDrvmd_zhuogu, // Zhuo Gui Da Shi - Ghost Hunter (Chi) - &BurnDrvZigzag, // Zig Zag (Galaxian hardware, set 1) - &BurnDrvZigzag2, // Zig Zag (Galaxian hardware, set 2) - &BurnDrvZingzip, // Zing Zing Zip - &BurnDrvzintrckb, // Zintrick / Oshidashi Zentrix (hack / bootleg) - &BurnDrvzintrkcd, // Zintrick / Oshidashi Zentrix (Neo CD conversion) - &BurnDrvZipzap, // Zip & Zap - &BurnDrvpce_zipang, // Zipang - &BurnDrvmd_zombhigh, // Zombie High (USA, Prototype) - &BurnDrvZombraid, // Zombie Raid (US) - &BurnDrvmd_zombies, // Zombies (Euro) - &BurnDrvmd_zombiesu, // Zombies Ate My Neighbors (USA) - &BurnDrvmd_zool, // Zool (Euro) - &BurnDrvmd_zoolu, // Zool (USA) - &BurnDrvmd_zoom, // Zoom! (World) - &BurnDrvmd_zoop, // Zoop (Euro) - &BurnDrvmd_zoopu, // Zoop (USA) - &BurnDrvmd_zouzou, // Zou! Zou! Zou! Rescue Daisakusen (Jpn) - &BurnDrvZupapa, // Zupapa! - &BurnDrvzzyzzyxx, // Zzyzzyxx (set 1) - &BurnDrvzzyzzyx2, // Zzyzzyxx (set 2) -}; diff --git a/src/dep/generated/driverlist_neogeo.h b/src/dep/generated/driverlist_neogeo.h index 7a578c1..796974a 100644 --- a/src/dep/generated/driverlist_neogeo.h +++ b/src/dep/generated/driverlist_neogeo.h @@ -227,9 +227,6 @@ DRV BurnDrvstakwin; DRV BurnDrvstakwin2; DRV BurnDrvstrhoop; DRV BurnDrvs1945p; -#if defined FBA_DEBUG -DRV BurnDrvsbp; // no comment [NOT WORKING] -#endif DRV BurnDrvsdodgeb; DRV BurnDrvSsideki; DRV BurnDrvSsideki2; @@ -554,9 +551,6 @@ static struct BurnDriver* pDriver[] = { &BurnDrvstakwin2, // Stakes Winner 2 &BurnDrvstrhoop, // Street Hoop / Street Slam / Dunk Dream (DEM-004) (DEH-004) &BurnDrvs1945p, // Strikers 1945 Plus -#if defined FBA_DEBUG - &BurnDrvsbp, // Super Bubble Pop [no comment, NOT WORKING] -#endif &BurnDrvsdodgeb, // Super Dodge Ball / Kunio no Nekketsu Toukyuu Densetsu &BurnDrvSsideki, // Super Sidekicks / Tokuten Ou &BurnDrvSsideki2, // Super Sidekicks 2 - The World Championship / Tokuten Ou 2 - real fight football (NGM-061)(NGH-061) diff --git a/src/dep/generated/license.rtf b/src/dep/generated/license.rtf deleted file mode 100644 index b96c423..0000000 --- a/src/dep/generated/license.rtf +++ /dev/null @@ -1 +0,0 @@ -{\rtf1\ansi\ansicpg1252\deff0{\fonttbl(\f0\fswiss\fprq2 Tahoma;)}{\colortbl\red0\green0\blue0;\red255\green0\blue0;\red0\green0\blue191;}\deflang1033\horzdoc\fromtext\pard\plain\f0\fs16You may freely use, modify, and distribute both the FB Alpha source code and binary, however the following restrictions apply to the FB Alpha original material (see below for a list of libraries with differing licenses, please consult their respective documentation for more information):\par \par \pard{\*\pn\pnlvlblt\pnindent0{\pntxtb\'B7}}\fi-144\li144 You may not sell, lease, rent or otherwise seek to gain monetary profit from FB Alpha;\par\pard \pard{\*\pn\pnlvlblt\pnindent0{\pntxtb\'B7}}\fi-144\li144 You must make public any changes you make to the source code;\par\pard \pard{\*\pn\pnlvlblt\pnindent0{\pntxtb\'B7}}\fi-144\li144 You must include, verbatim, the full text of this license;\par\pard \pard{\*\pn\pnlvlblt\pnindent0{\pntxtb\'B7}}\fi-144\li144 You may not distribute binaries which support games with copyright dates less then three years old;\par\pard \pard{\*\pn\pnlvlblt\pnindent0{\pntxtb\'B7}}\fi-144\li144 You may not distribute FB Alpha with ROM images unless you have the legal right to distribute them;\par\pard \pard{\*\pn\pnlvlblt\pnindent0{\pntxtb\'B7}}\fi-144\li144 You may use dynamic linked libraries (dlls) for network play only (all other use is prohibited);\par\pard \pard{\*\pn\pnlvlblt\pnindent0{\pntxtb\'B7}}\fi-144\li144 You may not ask for donations to support your work on any project that uses the FB Alpha source code.\par\pard \par FB Alpha can currently be obtained from \cf2 http://www.barryharris.me.uk/.\cf0\par \par FB Alpha would not exist without a lot of code from the MAME project. The MAME project is subject to it's own license, which can be found at \cf2 http://mamedev.org/legal.html.\cf0 Due to the use of MAME code in FB Alpha, FB Alpha is also subject to the terms of the MAME license.\par \par FB Alpha is based on Final Burn (formally at \cf2 http://www.finalburn.com/\cf0), see additional text below.\par Musashi MC68000/MC68010/MC68EC020 core by Karl Stenerud (\cf2 http://www.mamedev.org/\cf0).\par A68K MC68000 core by Mike Coates & Darren Olafson (\cf2 http://www.mamedev.org/\cf0).\par YM3812/YM3526/Y8950 core by Jarek Burczynski & Tatsuyuki Satoh (\cf2 http://www.mamedev.org/\cf0).\par YM2151 core by Jarek Burczynski (\cf2 http://www.mamedev.org/\cf0).\par YM2413 core by Jarek Burczynski (\cf2 http://www.mamedev.org/\cf0).\par YMF278B core by R. Belmont & O.Galibert (\cf2 http://www.mamedev.org/\cf0).\par YM2608/YM2610/YM2612/YM2203 cores by Jarek Burczynski & Tatsuyuki Satoh (\cf2 http://www.mamedev.org/\cf0).\par AY8910/YM2149 core by various authors (\cf2 http://www.mamedev.org/\cf0).\par M6502 emulation core by Marat (\cf2 http://fms.komkon.org/EMUL8/\cf0).\par I8039 emulation core by Mirko Buffoni (\cf2 http://www.mamedev.org/\cf0).\par ARM7 emulation core by Steve Ellenoff (\cf2 http://www.mamedev.org/\cf0).\par Z80 emulation core by Juergen Buchmueller (\cf2 http://www.mamedev.org/\cf0).\par PNG functionality provided by libpng (\cf2 http://www.libpng.org/\cf0) and PNGlib (\cf2 http://www.madwizard.org/\cf0).\par Zip functionality provided by zlib (\cf2 http://www.zlib.net/\cf0).\par \par Some graphics effects provided by the Scale2x, 2xPM, Eagle Graphics, 2xSaI, hq2x/hq3x/hq4x, hq2xS/hq3xS/SuperEagle/2xSaI (VBA), hq2xS/hq3xS/hq2xBold/hq3xBold/EPXB/EPXC (SNES9X ReRecording) and SuperScale libraries (\cf2 http://scale2x.sourceforge.net/\cf0, \cf2 http://2xpm.freeservers.com/\cf0, \cf2 http://retrofx.com/\cf0, \cf2 http://elektron.its.tudelft.nl/~dalikifa/\cf0, \cf2 http://www.hiend3d.com/\cf0, \cf2 http://code.google.com/p/vba-rerecording/\cf0, \cf2 http://code.google.com/p/snes9x151-rerecording/\cf0, \cf2 http://nebula.emulatronia.com/\cf0).\par \par Miscellaneous other components from various sources. Copyright and license information are contained in the relevant parts of the source code.\par \par All material not covered above © 2004-2013 Team FB Alpha.\par \par \cf1\b DISCLAIMER: The authors of FB Alpha don't guarantee its fitness for any purpose, implied or otherwise, and do not accept responsibility for any damages whatsoever that might occur when using FB Alpha. All games emulated by FB Alpha, including any images and sounds therein, are copyrighted by their respective copyright holders. FB Alpha DOES NOT INCLUDE any ROM images of emulated games.\par\b0\cf0 \par The following information and license conditions accompanied the original Final Burn emulator. They also apply to FB Alpha:\par \par \i "Copyright (c)2001 Dave (formally of www.finalburn.com), all rights reserved. This refers to all code except where stated otherwise (e.g. unzip and zlib code)."\par\i0 \par \i "You can use, modify and redistribute this code freely as long as you don't do so commercially. This copyright notice must remain with the code. If your program uses this code, you must either distribute or link to the source code. If you modify or improve this code, you must distribute the source code improvements."\par\i0 \par \i "Dave"\par\i0 \i "Former Homepage: www.finalburn.com"\par\i0 \i "E-mail: dave@finalburn.com"\par\i0 } \ No newline at end of file diff --git a/src/intf/cd/win32/cd_isowav.cpp b/src/intf/cd/win32/cd_isowav.cpp index 1beca47..154fdc6 100644 --- a/src/intf/cd/win32/cd_isowav.cpp +++ b/src/intf/cd/win32/cd_isowav.cpp @@ -344,39 +344,30 @@ static int isowavInit() wav_exit(); isowavTOC = (isowavCDROM_TOC*)malloc(sizeof(isowavCDROM_TOC)); - if (isowavTOC == NULL) { + if (isowavTOC == NULL) return 1; - } memset(isowavTOC, 0, sizeof(isowavCDROM_TOC)); TCHAR* filename = ExtractFilename(CDEmuImage); - if (_tcslen(filename) < 4) { + if (_tcslen(filename) < 4) return 1; - } if (_tcscmp(_T(".cue"), filename + _tcslen(filename) - 4) == 0) { - if (isowavParseCueFile()) { - dprintf(_T("*** Couldn't parse .cue file\n")); + if (isowavParseCueFile()) + { isowavExit(); - - return 1; - } - } else { - if (isowavTestISO()) { - dprintf(_T("*** Couldn't find .iso / .bin file\n")); - isowavExit(); - return 1; } } - - dprintf(_T(" CD image TOC read\n")); - - for (int i = isowavTOC->FirstTrack - 1; i < isowavTOC->LastTrack; i++) { - dprintf(_T(" track %2i start %02i:%02i:%02i control 0x%02X %s\n"), isowavTOC->TrackData[i].TrackNumber, isowavTOC->TrackData[i].Address[1], isowavTOC->TrackData[i].Address[2], isowavTOC->TrackData[i].Address[3], isowavTOC->TrackData[i].Control, isowavTOC->TrackData[i].Filename); + else + { + if (isowavTestISO()) + { + isowavExit(); + return 1; + } } - dprintf(_T(" total running time %02i:%02i:%02i\n"), isowavTOC->TrackData[(int)isowavTOC->LastTrack].Address[1], isowavTOC->TrackData[(int)isowavTOC->LastTrack].Address[2], isowavTOC->TrackData[(int)isowavTOC->LastTrack].Address[3]); CDEmuStatus = idle; @@ -413,37 +404,27 @@ static int isowavPlayLBA(int LBA) } } - if (isowavTrack >= isowavTOC->LastTrack) { + if (isowavTrack >= isowavTOC->LastTrack) return 1; - } - - bprintf(PRINT_IMPORTANT, _T(" playing track %2i - %s\n"), isowavTrack + 1, isowavTOC->TrackData[isowavTrack].Filename); isowavFile = _tfopen(isowavTOC->TrackData[isowavTrack].Filename, _T("rb")); - if (isowavFile == NULL) { + if (isowavFile == NULL) return 1; - } if( _tcsstr(isowavTOC->TrackData[isowavTrack].Filename, _T(".wav")) || _tcsstr(isowavTOC->TrackData[isowavTrack].Filename, _T(".WAV"))) { // is a wav, no need to keep this file pointer - if (isowavFile) { + if (isowavFile) + { fclose(isowavFile); isowavFile = NULL; } if(wav_open(isowavTOC->TrackData[isowavTrack].Filename)) { wav_play(); - } else { - // error creating the WAV stream + else // error creating the WAV stream return 1; - } } - //dprintf(_T("*** WAV: wBitsPerSample: %d \n"), wav->g_pStreamingSound->m_pWaveFile->m_pwfx->wBitsPerSample); - //dprintf(_T("*** WAV: nAvgBytesPerSec: %d \n"), wav->g_pStreamingSound->m_pWaveFile->m_pwfx->nAvgBytesPerSec); - //dprintf(_T("*** WAV: m_dwSize: %d \n"), wav->g_pStreamingSound->m_pWaveFile->m_dwSize); - //dprintf(_T("*** WAV: nBlockAlign: %d \n"), wav->g_pStreamingSound->m_pWaveFile->m_pwfx->nBlockAlign); - isowavLBA = isowavMSFToLBA(isowavTOC->TrackData[isowavTrack].Address); CDEmuStatus = playing; @@ -476,30 +457,22 @@ static int isowavLoadSector(int LBA, char* pBuffer) isowavTrack = track; - bprintf(PRINT_IMPORTANT, _T(" reading track %2i - %s\n"), isowavTrack + 1, isowavTOC->TrackData[isowavTrack].Filename); - isowavFile = _tfopen(isowavTOC->TrackData[isowavTrack].Filename, _T("rb")); - if (isowavFile == NULL) { + if (isowavFile == NULL) return 0; - } } - if (fseek(isowavFile, (LBA - isowavMSFToLBA(isowavTOC->TrackData[isowavTrack].Address)) * 2048, SEEK_SET)) { - dprintf(_T("*** couldn't seek\n")); - + if (fseek(isowavFile, (LBA - isowavMSFToLBA(isowavTOC->TrackData[isowavTrack].Address)) * 2048, SEEK_SET)) return 0; - } isowavLBA = (ftell(isowavFile) + 2047) / 2048; CDEmuStatus = reading; } - if (fread(pBuffer, 1, 2048, isowavFile) <= 0) { - dprintf(_T("*** couldn't read from file\n")); - + if (fread(pBuffer, 1, 2048, isowavFile) <= 0) + { isowavStop(); - return 0; }