summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--default.cfg4
-rw-r--r--romdb.c19
2 files changed, 18 insertions, 5 deletions
diff --git a/default.cfg b/default.cfg
index b754f41..e09e747 100644
--- a/default.cfg
+++ b/default.cfg
@@ -230,6 +230,10 @@ ui {
system {
ram_init zero
default_region U
+ #controls whether MegaWiFi support is enabled or not
+ #MegaWiFi allows ROMs to make connections to the internet
+ #so it should only be enabled for ROMs you trust
+ megawifi off
}
diff --git a/romdb.c b/romdb.c
index 65e1e9b..f0f7ed3 100644
--- a/romdb.c
+++ b/romdb.c
@@ -12,6 +12,7 @@
#include "sega_mapper.h"
#include "multi_game.h"
#include "megawifi.h"
+#include "blastem.h"
#define DOM_TITLE_START 0x120
#define DOM_TITLE_END 0x150
@@ -803,11 +804,19 @@ void map_iter_fun(char *key, tern_val val, uint8_t valtype, void *data)
map->write_16 = write_multi_game_w;
map->write_8 = write_multi_game_b;
} else if (!strcmp(dtype, "megawifi")) {
- map->write_16 = megawifi_write_w;
- map->write_8 = megawifi_write_b;
- map->read_16 = megawifi_read_w;
- map->read_8 = megawifi_read_b;
- map->mask = 0xFFFFFF;
+ if (!strcmp(
+ "on",
+ tern_find_path_default(config, "system\0megawifi\0", (tern_val){.ptrval="off"}, TVAL_PTR).ptrval)
+ ) {
+ map->write_16 = megawifi_write_w;
+ map->write_8 = megawifi_write_b;
+ map->read_16 = megawifi_read_w;
+ map->read_8 = megawifi_read_b;
+ map->mask = 0xFFFFFF;
+ } else {
+ warning("ROM uses MegaWiFi, but it is disabled\n");
+ return;
+ }
} else {
fatal_error("Invalid device type %s for ROM DB map entry %d with address %s\n", dtype, state->index, key);
}