Mercurial > repos > blastem
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 } |