1 #define ROMTYPE_KICK 1 2 #define ROMTYPE_KICKCD32 2 3 #define ROMTYPE_EXTCD32 4 4 #define ROMTYPE_EXTCDTV 8 5 #define ROMTYPE_A2091BOOT 16 6 #define ROMTYPE_A4091BOOT 32 7 #define ROMTYPE_AR 64 8 #define ROMTYPE_SUPERIV 128 9 #define ROMTYPE_KEY 256 10 #define ROMTYPE_ARCADIABIOS 512 11 #define ROMTYPE_ARCADIAGAME 1024 12 #define ROMTYPE_HRTMON 2048 13 14 struct romheader { 15 char *name; 16 int id; 17 }; 18 19 /* Mask to determine CPU type required by the ROM. */ 20 #define ROMREQ_CPUMASK 3 21 22 #define ROMREQ_68EC020 1 23 #define ROMREQ_68020 2 24 #define ROMREQ_68030 3 25 #define ROMREQ_A4000MB 4 26 #define ROMREQ_A4000 (ROMREQ_A4000MB | ROMREQ_68020) 27 #define ROMREQ_A1000 8 28 29 struct romdata { 30 char *name; 31 int ver, rev; 32 int subver, subrev; 33 char *model; 34 uae_u32 size; 35 int id; 36 int cpu; 37 int cloanto; 38 int type; 39 int title; 40 uae_u32 crc32; 41 uae_u32 sha1[5]; 42 char *configname; 43 }; 44 45 /* Used to tag a romlist elt with the location where it was found. 46 That way, we can quickly remove everything from a user path when 47 that changes, leaving the system ROMs intact. */ 48 #define ROMLOC_SYSTEM 1 49 #define ROMLOC_USER 2 50 51 struct romlist { 52 char *path; 53 struct romdata *rd; 54 int loc; 55 }; 56 57 extern struct romdata *getromdatabycrc (uae_u32 crc32); 58 extern struct romdata *getromdatabydata (uae_u8 *rom, int size); 59 extern struct romdata *getromdatabyid (int id); 60 extern struct romdata *getarcadiarombyname (char *name); 61 extern void getromname (struct romdata*, char*); 62 extern struct romdata *getromdatabyname (char*); 63 extern void romlist_add (char *path, struct romdata *rd, int loc); 64 extern char *romlist_get (struct romdata *rd); 65 extern void romlist_clear (int mask); 66 extern int decode_cloanto_rom (uae_u8 *, int, int, int); 67 extern struct romlist *romlist_from_idx (int idx, int type, int need_crc32); 68 69 extern void scan_roms (const char *path, int loc); 70