comparison system.c @ 1983:a7b753e260a2 mame_interp

Merge from default
author Michael Pavone <pavone@retrodev.com>
date Sat, 09 May 2020 23:39:44 -0700
parents 81df9aa2de9b
children 3414a4423de1
comparison
equal deleted inserted replaced
1937:cafde1255ad3 1983:a7b753e260a2
1 #include <string.h> 1 #include <string.h>
2 #include "system.h" 2 #include "system.h"
3 #include "genesis.h" 3 #include "genesis.h"
4 #include "gen_player.h"
4 #include "sms.h" 5 #include "sms.h"
5 6
6 uint8_t safe_cmp(char *str, long offset, uint8_t *buffer, long filesize) 7 uint8_t safe_cmp(char *str, long offset, uint8_t *buffer, long filesize)
7 { 8 {
8 long len = strlen(str); 9 long len = strlen(str);
19 || safe_cmp("TMR SEGA", 0x3FF0, media->buffer, media->size) 20 || safe_cmp("TMR SEGA", 0x3FF0, media->buffer, media->size)
20 || safe_cmp("TMR SEGA", 0x7FF0, media->buffer, media->size) 21 || safe_cmp("TMR SEGA", 0x7FF0, media->buffer, media->size)
21 ) { 22 ) {
22 return SYSTEM_SMS; 23 return SYSTEM_SMS;
23 } 24 }
25 if (safe_cmp("BLSTEL\x02", 0, media->buffer, media->size)) {
26 uint8_t *buffer = media->buffer;
27 if (media->size > 9 && buffer[7] == 0) {
28 return buffer[8] + 1;
29 }
30 }
31
32
24 //TODO: Detect Jaguar ROMs here 33 //TODO: Detect Jaguar ROMs here
25 34
26 //Header based detection failed, examine filename for clues 35 //Header based detection failed, examine filename for clues
27 if (media->extension) { 36 if (media->extension) {
28 if (!strcmp("md", media->extension) || !strcmp("gen", media->extension)) { 37 if (!strcmp("md", media->extension) || !strcmp("gen", media->extension)) {
58 } 67 }
59 switch (stype) 68 switch (stype)
60 { 69 {
61 case SYSTEM_GENESIS: 70 case SYSTEM_GENESIS:
62 return &(alloc_config_genesis(media->buffer, media->size, lock_on, lock_on_size, opts, force_region))->header; 71 return &(alloc_config_genesis(media->buffer, media->size, lock_on, lock_on_size, opts, force_region))->header;
72 case SYSTEM_GENESIS_PLAYER:
73 return &(alloc_config_gen_player(media->buffer, media->size))->header;
63 #ifndef NO_Z80 74 #ifndef NO_Z80
64 case SYSTEM_SMS: 75 case SYSTEM_SMS:
65 return &(alloc_configure_sms(media, opts, force_region))->header; 76 return &(alloc_configure_sms(media, opts, force_region))->header;
66 #endif 77 #endif
67 default: 78 default:
68 return NULL; 79 return NULL;
69 } 80 }
70 } 81 }
82
83 system_header *alloc_config_player(system_type stype, event_reader *reader)
84 {
85 switch(stype)
86 {
87 case SYSTEM_GENESIS:
88 return &(alloc_config_gen_player_reader(reader))->header;
89 }
90 return NULL;
91 }
92
93 void system_request_exit(system_header *system, uint8_t force_release)
94 {
95 system->force_release = force_release;
96 system->request_exit(system);
97 }