1 /***************************************************************************** 2 ** $Source: /cygdrive/d/Private/_SVNROOT/bluemsx/blueMSX/Src/Media/MediaDb.h,v $ 3 ** 4 ** $Revision: 1.51 $ 5 ** 6 ** $Date: 2009-04-30 03:53:28 $ 7 ** 8 ** More info: http://www.bluemsx.com 9 ** 10 ** Copyright (C) 2003-2006 Daniel Vik 11 ** 12 ** This program is free software; you can redistribute it and/or modify 13 ** it under the terms of the GNU General Public License as published by 14 ** the Free Software Foundation; either version 2 of the License, or 15 ** (at your option) any later version. 16 ** 17 ** This program is distributed in the hope that it will be useful, 18 ** but WITHOUT ANY WARRANTY; without even the implied warranty of 19 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 ** GNU General Public License for more details. 21 ** 22 ** You should have received a copy of the GNU General Public License 23 ** along with this program; if not, write to the Free Software 24 ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 25 ** 26 ****************************************************************************** 27 */ 28 #ifndef MEDIA_DB_H 29 #define MEDIA_DB_H 30 31 typedef int RomType; 32 enum { 33 ROM_UNKNOWN = 0, 34 ROM_STANDARD = 1, 35 ROM_MSXDOS2 = 2, 36 ROM_KONAMI5 = 3, 37 ROM_KONAMI4 = 4, 38 ROM_ASCII8 = 5, 39 ROM_ASCII16 = 6, 40 ROM_GAMEMASTER2 = 7, 41 ROM_ASCII8SRAM = 8, 42 ROM_ASCII16SRAM = 9, 43 ROM_RTYPE = 10, 44 ROM_CROSSBLAIM = 11, 45 ROM_HARRYFOX = 12, 46 ROM_KOREAN80 = 13, 47 ROM_KOREAN126 = 14, 48 ROM_SCCEXTENDED = 15, 49 ROM_FMPAC = 16, 50 ROM_KONAMI4NF = 17, 51 ROM_ASCII16NF = 18, 52 ROM_PLAIN = 19, 53 ROM_NORMAL = 20, 54 ROM_DISKPATCH = 21, 55 RAM_MAPPER = 22, 56 RAM_NORMAL = 23, 57 ROM_KANJI = 24, 58 ROM_HOLYQURAN = 25, 59 SRAM_MATSUCHITA = 26, 60 ROM_PANASONIC16 = 27, 61 ROM_BUNSETU = 28, 62 ROM_JISYO = 29, 63 ROM_KANJI12 = 30, 64 ROM_NATIONAL = 31, 65 SRAM_S1985 = 32, 66 ROM_F4DEVICE = 33, 67 ROM_F4INVERTED = 34, 68 ROM_KOEI = 38, 69 ROM_BASIC = 39, 70 ROM_HALNOTE = 40, 71 ROM_LODERUNNER = 41, 72 ROM_0x4000 = 42, 73 ROM_PAC = 43, 74 ROM_MEGARAM = 44, 75 ROM_MEGARAM128 = 45, 76 ROM_MEGARAM256 = 46, 77 ROM_MEGARAM512 = 47, 78 ROM_MEGARAM768 = 48, 79 ROM_MEGARAM2M = 49, 80 ROM_MSXAUDIO = 50, 81 ROM_KOREAN90 = 51, 82 ROM_SNATCHER = 52, 83 ROM_SDSNATCHER = 53, 84 ROM_SCCMIRRORED = 54, 85 ROM_SCC = 55, 86 ROM_SCCPLUS = 56, 87 ROM_TC8566AF = 57, 88 ROM_S1990 = 58, 89 ROM_TURBORTIMER = 59, 90 ROM_TURBORPCM = 60, 91 ROM_KONAMISYNTH = 61, 92 ROM_MAJUTSUSHI = 62, 93 ROM_MICROSOL = 63, 94 ROM_NATIONALFDC = 64, 95 ROM_PHILIPSFDC = 65, 96 ROM_CASPATCH = 66, 97 ROM_SVI738FDC = 67, 98 ROM_PANASONIC32 = 68, 99 ROM_EXTRAM = 69, 100 ROM_EXTRAM512KB = 70, 101 ROM_EXTRAM1MB = 71, 102 ROM_EXTRAM2MB = 72, 103 ROM_EXTRAM4MB = 73, 104 ROM_SVI328CART = 74, 105 ROM_SVI328FDC = 75, 106 ROM_COLECO = 76, 107 ROM_SONYHBI55 = 77, 108 ROM_MSXMUSIC = 78, 109 ROM_MOONSOUND = 79, 110 ROM_MSXAUDIODEV = 80, 111 ROM_V9958 = 81, 112 ROM_SVI328COL80 = 82, 113 ROM_SVI328PRN = 83, 114 ROM_MSXPRN = 84, 115 ROM_SVI328RS232 = 85, 116 ROM_0xC000 = 86, 117 ROM_FMPAK = 87, 118 ROM_MSXMIDI = 88, 119 ROM_MSXRS232 = 89, 120 ROM_TURBORIO = 90, 121 ROM_KONAMKBDMAS = 91, 122 ROM_GAMEREADER = 92, 123 RAM_1KB_MIRRORED= 93, 124 ROM_SG1000 = 94, 125 ROM_SG1000CASTLE= 95, 126 ROM_SUNRISEIDE = 96, 127 ROM_GIDE = 97, 128 ROM_BEERIDE = 98, 129 ROM_KONWORDPRO = 99, 130 ROM_MICROSOL80 = 100, 131 ROM_NMS8280DIGI = 101, 132 ROM_SONYHBIV1 = 102, 133 ROM_SVI727COL80 = 103, 134 ROM_FMDAS = 104, 135 ROM_YAMAHASFG05 = 105, 136 ROM_YAMAHASFG01 = 106, 137 ROM_SF7000IPL = 107, 138 ROM_SC3000 = 108, 139 ROM_PLAYBALL = 109, 140 ROM_OBSONET = 110, 141 RAM_2KB_MIRRORED= 111, 142 ROM_SEGABASIC = 112, 143 ROM_CVMEGACART = 113, 144 ROM_DUMAS = 114, 145 SRAM_MEGASCSI = 115, 146 SRAM_MEGASCSI128= 116, 147 SRAM_MEGASCSI256= 117, 148 SRAM_MEGASCSI512= 118, 149 SRAM_MEGASCSI1MB= 119, 150 SRAM_ESERAM = 120, 151 SRAM_ESERAM128 = 121, 152 SRAM_ESERAM256 = 122, 153 SRAM_ESERAM512 = 123, 154 SRAM_ESERAM1MB = 124, 155 SRAM_ESESCC = 125, 156 SRAM_ESESCC128 = 126, 157 SRAM_ESESCC256 = 127, 158 SRAM_ESESCC512 = 128, 159 SRAM_WAVESCSI = 129, 160 SRAM_WAVESCSI128= 130, 161 SRAM_WAVESCSI256= 131, 162 SRAM_WAVESCSI512= 132, 163 SRAM_WAVESCSI1MB= 133, 164 ROM_NOWIND = 134, 165 ROM_GOUDASCSI = 135, 166 ROM_MANBOW2 = 136, 167 ROM_MEGAFLSHSCC = 137, 168 ROM_FORTEII = 138, 169 ROM_PANASONIC8 = 139, 170 ROM_FSA1FMMODEM = 140, 171 ROM_DRAM = 141, 172 ROM_PANASONICWX16=142, 173 ROM_TC8566AF_TR = 143, 174 ROM_MATRAINK = 144, 175 ROM_NETTOUYAKYUU= 145, 176 ROM_YAMAHANET = 146, 177 ROM_JOYREXPSG = 147, 178 ROM_OPCODEPSG = 148, 179 ROM_EXTRAM16KB = 149, 180 ROM_EXTRAM32KB = 150, 181 ROM_EXTRAM48KB = 151, 182 ROM_EXTRAM64KB = 152, 183 ROM_NMS1210 = 153, 184 ROM_ARC = 154, 185 ROM_OPCODEBIOS = 155, 186 ROM_OPCODESLOT = 156, 187 ROM_OPCODESAVE = 157, 188 ROM_OPCODEMEGA = 158, 189 SRAM_MATSUCHITA_INV = 159, 190 ROM_SVI328RSIDE = 160, 191 ROM_ACTIVISIONPCB_2K = 161, 192 ROM_SVI707FDC = 162, 193 ROM_MANBOW2_V2 = 163, 194 ROM_HAMARAJANIGHT = 164, 195 ROM_MEGAFLSHSCCPLUS = 165, 196 ROM_DOOLY = 166, 197 ROM_SG1000_RAMEXPANDER_A = 167, 198 ROM_SG1000_RAMEXPANDER_B = 168, 199 ROM_MSXMIDI_EXTERNAL = 169, 200 ROM_MUPACK = 170, 201 ROM_ACTIVISIONPCB_256K = 171, 202 ROM_ACTIVISIONPCB = 172, 203 ROM_ACTIVISIONPCB_16K = 173, 204 ROM_MAXROMID = 173 205 }; 206 207 typedef struct MediaType MediaType; 208 typedef struct MediaDb MediaDb; 209 210 void mediaDbAddFromXmlFile(MediaDb* mediaDb, const char* fileName, 211 const char* rootTag, const char* elemTag); 212 213 MediaType* mediaDbLookup(MediaDb* mediaDb, const void *buffer, int size); 214 215 216 void mediaDbLoad(const char* directory); 217 218 void mediaDbCreateRomdb(); 219 void mediaDbCreateDiskdb(); 220 void mediaDbCreateCasdb(); 221 222 223 MediaType* mediaDbLookupRom(const void *buffer, int size); 224 MediaType* mediaDbGuessRom(const void *buffer, int size); 225 MediaType* mediaDbLookupDisk(const void *buffer, int size); 226 MediaType* mediaDbLookupCas(const void *buffer, int size); 227 228 RomType mediaDbGetRomType(MediaType* mediaType); 229 const char* mediaDbGetTitle(MediaType* mediaType); 230 const char* mediaDbGetYear(MediaType* mediaType); 231 const char* mediaDbGetCompany(MediaType* mediaType); 232 const char* mediaDbGetRemark(MediaType* mediaType); 233 const char* mediaDbGetPrettyString(MediaType* mediaType); 234 235 void mediaDbSetDefaultRomType(RomType romType); 236 RomType mediaDbStringToType(const char* romName); 237 const char* romTypeToString(RomType romType); 238 const char* romTypeToShortString(RomType romType); 239 240 int romTypeIsRom(RomType romType); 241 int romTypeIsMegaRom(RomType romType); 242 int romTypeIsMegaRam(RomType romType); 243 int romTypeIsFmPac(RomType romType); 244 245 #endif /*MEDIA_DB_H*/ 246