comparison system.c @ 1946:c3c62dbf1ceb

WIP netplay support
author Michael Pavone <pavone@retrodev.com>
date Wed, 29 Apr 2020 01:00:57 -0700
parents 7b62e6805e6a
children 81df9aa2de9b
comparison
equal deleted inserted replaced
1945:ba7231d2411c 1946:c3c62dbf1ceb
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 }