summaryrefslogtreecommitdiff
path: root/system.c
diff options
context:
space:
mode:
Diffstat (limited to 'system.c')
-rw-r--r--system.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/system.c b/system.c
index ebfd346..4e92b21 100644
--- a/system.c
+++ b/system.c
@@ -1,6 +1,7 @@
#include <string.h>
#include "system.h"
#include "genesis.h"
+#include "gen_player.h"
#include "sms.h"
uint8_t safe_cmp(char *str, long offset, uint8_t *buffer, long filesize)
@@ -21,6 +22,14 @@ system_type detect_system_type(system_media *media)
) {
return SYSTEM_SMS;
}
+ if (safe_cmp("BLSTEL\x02", 0, media->buffer, media->size)) {
+ uint8_t *buffer = media->buffer;
+ if (media->size > 9 && buffer[7] == 0) {
+ return buffer[8] + 1;
+ }
+ }
+
+
//TODO: Detect Jaguar ROMs here
//Header based detection failed, examine filename for clues
@@ -60,6 +69,8 @@ system_header *alloc_config_system(system_type stype, system_media *media, uint3
{
case SYSTEM_GENESIS:
return &(alloc_config_genesis(media->buffer, media->size, lock_on, lock_on_size, opts, force_region))->header;
+ case SYSTEM_GENESIS_PLAYER:
+ return &(alloc_config_gen_player(media->buffer, media->size))->header;
#ifndef NO_Z80
case SYSTEM_SMS:
return &(alloc_configure_sms(media, opts, force_region))->header;
@@ -68,3 +79,13 @@ system_header *alloc_config_system(system_type stype, system_media *media, uint3
return NULL;
}
}
+
+system_header *alloc_config_player(system_type stype, event_reader *reader)
+{
+ switch(stype)
+ {
+ case SYSTEM_GENESIS:
+ return &(alloc_config_gen_player_reader(reader))->header;
+ }
+ return NULL;
+}