+// SPDX-License-Identifier: MIT
+
#include "platforms/platforms.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include "rominfo.h"
+
#define M68K_CPU_TYPES M68K_CPU_TYPE_SCC68070
const char *cpu_types[M68K_CPU_TYPES] = {
case MAPTYPE_ROM:
in = fopen(filename, "rb");
if (!in) {
- printf("[CFG] Failed to open file %s for ROM mapping.\n", filename);
+ printf("[CFG] Failed to open file %s for ROM mapping. Using onboard ROM instead, if available.\n", filename);
goto mapping_failed;
}
fseek(in, 0, SEEK_END);
memset(cfg->map_data[index], 0x00, cfg->map_size[index]);
fread(cfg->map_data[index], cfg->rom_size[index], 1, in);
fclose(in);
+ displayRomInfo(cfg->map_data[index]);
break;
case MAPTYPE_REGISTER:
default:
fclose(in);
}
+void free_config_file(struct emulator_config *cfg) {
+ if (!cfg) {
+ printf("[CFG] Tried to free NULL config, aborting.\n");
+ }
+
+ if (cfg->platform) {
+ cfg->platform->shutdown(cfg);
+ free(cfg->platform);
+ cfg->platform = NULL;
+ }
+
+ for (int i = 0; i < MAX_NUM_MAPPED_ITEMS; i++) {
+ if (cfg->map_data[i]) {
+ free(cfg->map_data[i]);
+ cfg->map_data[i] = NULL;
+ }
+ if (cfg->map_id[i]) {
+ free(cfg->map_id[i]);
+ cfg->map_id[i] = NULL;
+ }
+ }
+ if (cfg->mouse_file) {
+ free(cfg->mouse_file);
+ cfg->mouse_file = NULL;
+ }
+ if (cfg->keyboard_file) {
+ free(cfg->keyboard_file);
+ cfg->keyboard_file = NULL;
+ }
+
+ m68k_clear_ranges();
+
+ printf("[CFG] Config file freed. Maybe.\n");
+}
+
struct emulator_config *load_config_file(char *filename) {
FILE *in = fopen(filename, "rb");
if (in == NULL) {
strcpy(cfg->mouse_file, cur_cmd);
get_next_string(parse_line, cur_cmd, &str_pos, ' ');
cfg->mouse_toggle_key = cur_cmd[0];
+ get_next_string(parse_line, cur_cmd, &str_pos, ' ');
+ cfg->mouse_autoconnect = (strcmp(cur_cmd, "autoconnect") == 0) ? 1 : 0;
cfg->mouse_enabled = 1;
printf("[CFG] Enabled mouse event forwarding from file %s, toggle key %c.\n", cfg->mouse_file, cfg->mouse_toggle_key);
break;
cfg->keyboard_toggle_key = cur_cmd[0];
get_next_string(parse_line, cur_cmd, &str_pos, ' ');
cfg->keyboard_grab = (strcmp(cur_cmd, "grab") == 0) ? 1 : 0;
- printf("[CFG] Enabled keyboard event forwarding, toggle key %c, %slocking from host.\n",
- cfg->keyboard_toggle_key, cfg->keyboard_grab ? "" : "not ");
+ get_next_string(parse_line, cur_cmd, &str_pos, ' ');
+ cfg->keyboard_autoconnect = (strcmp(cur_cmd, "autoconnect") == 0) ? 1 : 0;
+ printf("[CFG] Enabled keyboard event forwarding, toggle key %c", cfg->keyboard_toggle_key);
+ if (cfg->keyboard_grab)
+ printf(", locking from host when connected");
+ if (cfg->keyboard_autoconnect)
+ printf(", connected to guest at startup");
+ printf(".\n");
break;
case CONFITEM_KBFILE:
get_next_string(parse_line, cur_cmd, &str_pos, ' ');