diff options
author | 2008-02-19 18:02:59 +0000 | |
---|---|---|
committer | 2008-02-19 18:02:59 +0000 | |
commit | 671afc266185dd54f6046148a282dce4c22b3631 (patch) | |
tree | ee04796b778f2091e9454a203dcc311554afccc2 /src/emu/validity.c | |
parent | 949599e0ff0f9d9c92dc438d7d27804da83bef56 (diff) |
Updated validity.c to current core style.
Diffstat (limited to 'src/emu/validity.c')
-rw-r--r-- | src/emu/validity.c | 290 |
1 files changed, 130 insertions, 160 deletions
diff --git a/src/emu/validity.c b/src/emu/validity.c index 46d9a61ad47..ad0d750a14e 100644 --- a/src/emu/validity.c +++ b/src/emu/validity.c @@ -19,31 +19,25 @@ #include <zlib.h> -/************************************* - * - * Debugging - * - *************************************/ +/*************************************************************************** + DEBUGGING +***************************************************************************/ #define REPORT_TIMES (0) -/************************************* - * - * Constants - * - *************************************/ +/*************************************************************************** + CONSTANTS +***************************************************************************/ #define QUARK_HASH_SIZE 389 -/************************************* - * - * Type definitions - * - *************************************/ +/*************************************************************************** + TYPE DEFINITIONS +***************************************************************************/ typedef struct _quark_entry quark_entry; struct _quark_entry @@ -64,11 +58,9 @@ struct _quark_table -/************************************* - * - * Local variables - * - *************************************/ +/*************************************************************************** + GLOBAL VARIABLES +***************************************************************************/ static quark_table *source_table; static quark_table *name_table; @@ -79,6 +71,15 @@ static quark_table *defstr_table; +/*************************************************************************** + INLINE FUNCTIONS +***************************************************************************/ + +/*------------------------------------------------- + input_port_string_from_index - return an + indexed string from the input port system +-------------------------------------------------*/ + INLINE const char *input_port_string_from_index(UINT32 index) { input_port_token token; @@ -87,43 +88,9 @@ INLINE const char *input_port_string_from_index(UINT32 index) } - -/************************************* - * - * Allocate an array of quark - * entries and a hash table - * - *************************************/ - -static quark_table *allocate_quark_table(UINT32 entries, UINT32 hashsize) -{ - quark_table *table; - UINT32 total_bytes; - - /* determine how many total bytes we need */ - total_bytes = sizeof(*table) + entries * sizeof(table->entry[0]) + hashsize * sizeof(table->hash[0]); - table = auto_malloc(total_bytes); - - /* fill in the details */ - table->entries = entries; - table->hashsize = hashsize; - - /* compute the pointers */ - table->entry = (quark_entry *)((UINT8 *)table + sizeof(*table)); - table->hash = (quark_entry **)((UINT8 *)table->entry + entries * sizeof(table->entry[0])); - - /* reset the hash table */ - memset(table->hash, 0, hashsize * sizeof(table->hash[0])); - return table; -} - - - -/************************************* - * - * Compute the CRC of a string - * - *************************************/ +/*------------------------------------------------- + quark_string_crc - compute the CRC of a string +-------------------------------------------------*/ INLINE UINT32 quark_string_crc(const char *string) { @@ -131,15 +98,12 @@ INLINE UINT32 quark_string_crc(const char *string) } +/*------------------------------------------------- + quark_add - add a quark to the table and + connect it to the hash tables +-------------------------------------------------*/ -/************************************* - * - * Add a quark to the table and - * connect it to the hash tables - * - *************************************/ - -INLINE void add_quark(quark_table *table, int index, UINT32 crc) +INLINE void quark_add(quark_table *table, int index, UINT32 crc) { quark_entry *entry = &table->entry[index]; int hash = crc % table->hashsize; @@ -149,42 +113,65 @@ INLINE void add_quark(quark_table *table, int index, UINT32 crc) } +/*------------------------------------------------- + quark_table_get_first - return a pointer to the + first hash entry connected to a CRC +-------------------------------------------------*/ -/************************************* - * - * Return a pointer to the first - * hash entry connected to a CRC - * - *************************************/ - -INLINE quark_entry *first_hash_entry(quark_table *table, UINT32 crc) +INLINE quark_entry *quark_table_get_first(quark_table *table, UINT32 crc) { return table->hash[crc % table->hashsize]; } -/************************************* - * - * Build "quarks" for fast string - * operations - * - *************************************/ +/*************************************************************************** + QUARK TABLES +***************************************************************************/ -static void build_quarks(void) +/*------------------------------------------------- + quark_table_alloc - allocate an array of + quark entries and a hash table +-------------------------------------------------*/ + +static quark_table *quark_table_alloc(UINT32 entries, UINT32 hashsize) { - int drivnum, strnum; + quark_table *table; + UINT32 total_bytes; - /* first count drivers */ - for (drivnum = 0; drivers[drivnum]; drivnum++) - ; + /* determine how many total bytes we need */ + total_bytes = sizeof(*table) + entries * sizeof(table->entry[0]) + hashsize * sizeof(table->hash[0]); + table = auto_malloc(total_bytes); + + /* fill in the details */ + table->entries = entries; + table->hashsize = hashsize; + + /* compute the pointers */ + table->entry = (quark_entry *)((UINT8 *)table + sizeof(*table)); + table->hash = (quark_entry **)((UINT8 *)table->entry + entries * sizeof(table->entry[0])); + + /* reset the hash table */ + memset(table->hash, 0, hashsize * sizeof(table->hash[0])); + return table; +} + + +/*------------------------------------------------- + quark_tables_create - build "quarks" for fast + string operations +-------------------------------------------------*/ + +static void quark_tables_create(void) +{ + int drivnum = driver_list_get_count(drivers), strnum; /* allocate memory for the quark tables */ - source_table = allocate_quark_table(drivnum, QUARK_HASH_SIZE); - name_table = allocate_quark_table(drivnum, QUARK_HASH_SIZE); - description_table = allocate_quark_table(drivnum, QUARK_HASH_SIZE); - roms_table = allocate_quark_table(drivnum, QUARK_HASH_SIZE); - inputs_table = allocate_quark_table(drivnum, QUARK_HASH_SIZE); + source_table = quark_table_alloc(drivnum, QUARK_HASH_SIZE); + name_table = quark_table_alloc(drivnum, QUARK_HASH_SIZE); + description_table = quark_table_alloc(drivnum, QUARK_HASH_SIZE); + roms_table = quark_table_alloc(drivnum, QUARK_HASH_SIZE); + inputs_table = quark_table_alloc(drivnum, QUARK_HASH_SIZE); /* build the quarks and the hash tables */ for (drivnum = 0; drivers[drivnum]; drivnum++) @@ -192,34 +179,37 @@ static void build_quarks(void) const game_driver *driver = drivers[drivnum]; /* fill in the quark with hashes of the strings */ - add_quark(source_table, drivnum, quark_string_crc(driver->source_file)); - add_quark(name_table, drivnum, quark_string_crc(driver->name)); - add_quark(description_table, drivnum, quark_string_crc(driver->description)); + quark_add(source_table, drivnum, quark_string_crc(driver->source_file)); + quark_add(name_table, drivnum, quark_string_crc(driver->name)); + quark_add(description_table, drivnum, quark_string_crc(driver->description)); /* only track actual driver ROM entries */ if (driver->rom && (driver->flags & GAME_NO_STANDALONE) == 0) - add_quark(roms_table, drivnum, (FPTR)driver->rom); + quark_add(roms_table, drivnum, (FPTR)driver->rom); } /* allocate memory for a quark table of strings */ - defstr_table = allocate_quark_table(INPUT_STRING_COUNT, 97); + defstr_table = quark_table_alloc(INPUT_STRING_COUNT, 97); /* add all the default strings */ for (strnum = 1; strnum < INPUT_STRING_COUNT; strnum++) { const char *string = input_port_string_from_index(strnum); if (string != NULL) - add_quark(defstr_table, strnum, quark_string_crc(string)); + quark_add(defstr_table, strnum, quark_string_crc(string)); } } -/************************************* - * - * Validate inline functions - * - *************************************/ +/*************************************************************************** + VALIDATION FUNCTIONS +***************************************************************************/ + +/*------------------------------------------------- + validate_inlines - validate inline function + behaviors +-------------------------------------------------*/ static int validate_inlines(void) { @@ -369,12 +359,10 @@ static int validate_inlines(void) } - -/************************************* - * - * Validate basic driver info - * - *************************************/ +/*------------------------------------------------- + validate_driver - validate basic driver + information +-------------------------------------------------*/ static int validate_driver(int drivnum, const machine_config *drv) { @@ -437,7 +425,7 @@ static int validate_driver(int drivnum, const machine_config *drv) /* find duplicate driver names */ crc = quark_string_crc(driver->name); - for (entry = first_hash_entry(name_table, crc); entry; entry = entry->next) + for (entry = quark_table_get_first(name_table, crc); entry; entry = entry->next) if (entry->crc == crc && entry != &name_table->entry[drivnum]) { const game_driver *match = drivers[entry - name_table->entry]; @@ -450,7 +438,7 @@ static int validate_driver(int drivnum, const machine_config *drv) /* find duplicate descriptions */ crc = quark_string_crc(driver->description); - for (entry = first_hash_entry(description_table, crc); entry; entry = entry->next) + for (entry = quark_table_get_first(description_table, crc); entry; entry = entry->next) if (entry->crc == crc && entry != &description_table->entry[drivnum]) { const game_driver *match = drivers[entry - description_table->entry]; @@ -466,7 +454,7 @@ static int validate_driver(int drivnum, const machine_config *drv) if (driver->rom && (driver->flags & GAME_IS_BIOS_ROOT) == 0) { crc = (FPTR)driver->rom; - for (entry = first_hash_entry(roms_table, crc); entry; entry = entry->next) + for (entry = quark_table_get_first(roms_table, crc); entry; entry = entry->next) if (entry->crc == crc && entry != &roms_table->entry[drivnum]) { const game_driver *match = drivers[entry - roms_table->entry]; @@ -483,12 +471,9 @@ static int validate_driver(int drivnum, const machine_config *drv) } - -/************************************* - * - * Validate ROM definitions - * - *************************************/ +/*------------------------------------------------- + validate_roms - validate ROM definitions +-------------------------------------------------*/ static int validate_roms(int drivnum, const machine_config *drv, UINT32 *region_length) { @@ -614,12 +599,9 @@ static int validate_roms(int drivnum, const machine_config *drv, UINT32 *region_ } - -/************************************* - * - * Validate CPUs and memory maps - * - *************************************/ +/*------------------------------------------------- + validate_cpu - validate CPUs and memory maps +-------------------------------------------------*/ static int validate_cpu(int drivnum, const machine_config *drv, const UINT32 *region_length) { @@ -784,12 +766,10 @@ static int validate_cpu(int drivnum, const machine_config *drv, const UINT32 *re } - -/************************************* - * - * Validate display - * - *************************************/ +/*------------------------------------------------- + validate_display - validate display + configurations +-------------------------------------------------*/ static int validate_display(int drivnum, const machine_config *drv) { @@ -852,12 +832,10 @@ static int validate_display(int drivnum, const machine_config *drv) } - -/************************************* - * - * Validate graphics - * - *************************************/ +/*------------------------------------------------- + validate_gfx - validate graphics decoding + configuration +-------------------------------------------------*/ static int validate_gfx(int drivnum, const machine_config *drv, const UINT32 *region_length) { @@ -944,11 +922,10 @@ static int validate_gfx(int drivnum, const machine_config *drv, const UINT32 *re } -/************************************* - * - * Display valid coin order - * - *************************************/ +/*------------------------------------------------- + display_valid_coin_order - display the + correct coin order +-------------------------------------------------*/ static void display_valid_coin_order(int drivnum, const input_port_entry *memory) { @@ -969,7 +946,7 @@ static void display_valid_coin_order(int drivnum, const input_port_entry *memory /* hash the string and look it up in the string table */ crc = quark_string_crc(inp->name); - for (entry = first_hash_entry(defstr_table, crc); entry; entry = entry->next) + for (entry = quark_table_get_first(defstr_table, crc); entry; entry = entry->next) if (entry->crc == crc && !strcmp(inp->name, input_port_string_from_index(entry - defstr_table->entry))) { strindex = entry - defstr_table->entry; @@ -1005,11 +982,9 @@ static void display_valid_coin_order(int drivnum, const input_port_entry *memory } -/************************************* - * - * Validate input ports - * - *************************************/ +/*------------------------------------------------- + validate_inputs - validate input configuration +-------------------------------------------------*/ static int validate_inputs(int drivnum, const machine_config *drv, input_port_entry **memory) { @@ -1030,12 +1005,12 @@ static int validate_inputs(int drivnum, const machine_config *drv, input_port_en /* skip if we already validated these ports */ crc = (FPTR)driver->ipt; - for (entry = first_hash_entry(inputs_table, crc); entry; entry = entry->next) + for (entry = quark_table_get_first(inputs_table, crc); entry; entry = entry->next) if (entry->crc == crc && driver->ipt == drivers[entry - inputs_table->entry]->ipt) return FALSE; /* otherwise, add ourself to the list */ - add_quark(inputs_table, drivnum, crc); + quark_add(inputs_table, drivnum, crc); /* allocate the input ports */ *memory = input_port_allocate(driver->ipt, *memory); @@ -1196,7 +1171,7 @@ static int validate_inputs(int drivnum, const machine_config *drv, input_port_en /* hash the string and look it up in the string table */ crc = quark_string_crc(inp->name); - for (entry = first_hash_entry(defstr_table, crc); entry; entry = entry->next) + for (entry = quark_table_get_first(defstr_table, crc); entry; entry = entry->next) if (entry->crc == crc && !strcmp(inp->name, input_port_string_from_index(entry - defstr_table->entry))) { strindex = entry - defstr_table->entry; @@ -1285,12 +1260,10 @@ static int validate_inputs(int drivnum, const machine_config *drv, input_port_en } - -/************************************* - * - * Validate sound and speakers - * - *************************************/ +/*------------------------------------------------- + validate_sound - validate sound and + speaker configuration +-------------------------------------------------*/ static int validate_sound(int drivnum, const machine_config *drv) { @@ -1356,12 +1329,9 @@ static int validate_sound(int drivnum, const machine_config *drv) } - -/************************************* - * - * Master validity checker - * - *************************************/ +/*------------------------------------------------- + mame_validitychecks - master validity checker +-------------------------------------------------*/ int mame_validitychecks(const game_driver *curdriver) { @@ -1423,7 +1393,7 @@ int mame_validitychecks(const game_driver *curdriver) /* prepare by pre-scanning all the drivers and adding their info to hash tables */ prep -= osd_profiling_ticks(); - build_quarks(); + quark_tables_create(); prep += osd_profiling_ticks(); /* iterate over all drivers */ |