adv_error soundb_alsa_load(adv_conf* context) { sncpy(alsa_option.device_buffer, sizeof(alsa_option.device_buffer), conf_string_get_default(context, "device_alsa_device")); sncpy(alsa_option.mixer_buffer, sizeof(alsa_option.mixer_buffer), conf_string_get_default(context, "device_alsa_mixer")); alsa_option.initialized = 1; return 0; }
adv_error mouseb_load(adv_conf* context) { unsigned i; int at_least_one; if (mouseb_state.driver_mac == 0) { error_set("No mouse driver was compiled in."); return -1; } mouseb_state.is_initialized_flag = 1; sncpy(mouseb_state.name, DEVICE_NAME_MAX, conf_string_get_default(context, "device_mouse")); /* load specific driver options */ at_least_one = 0; for (i = 0; i < mouseb_state.driver_mac; ++i) { const adv_device* dev; dev = device_match(mouseb_state.name, (adv_driver*)mouseb_state.driver_map[i], 0); if (dev) at_least_one = 1; if (mouseb_state.driver_map[i]->load(context) != 0) return -1; } if (!at_least_one) { device_error("device_mouse", mouseb_state.name, (const adv_driver**)mouseb_state.driver_map, mouseb_state.driver_mac); return -1; } return 0; }
adv_error advance_fileio_config_load(struct advance_fileio_context* context, adv_conf* cfg_context, struct mame_option* option) { struct fileio_item* i; for(i=FILEIO_CONFIG;i->type != FILETYPE_end;++i) { /* free a previously loaded value */ path_free(i->dir_map, i->dir_mac); i->dir_map = 0; i->dir_mac = 0; if (i->config) { unsigned j; const char* s = conf_string_get_default(cfg_context, i->config); const char* a; switch (i->mode) { case FILEIO_MODE_MULTI : a = file_config_list(s, file_config_dir_multidir, 0); break; case FILEIO_MODE_SINGLE : a = file_config_list(s, file_config_dir_singledir, 0); break; default: a = s; break; } log_std(("advance:fileio: %s %s\n", i->config, a)); path_allocate(&i->dir_map, &i->dir_mac, a); for(j=0;j<i->dir_mac;++j) dir_create(i->dir_map[j]); } else { /* add the standard directories search as default */ path_allocate(&i->dir_map, &i->dir_mac, file_config_dir_singlefile()); } } #ifdef MESS { const char* s = conf_string_get_default(cfg_context, "dir_crc"); const char* a = file_config_list(s, file_config_dir_singledir, 0); log_std(("advance:fileio: %s %s\n", "dir_crc", a)); sncpy(option->crc_dir_buffer, sizeof(option->crc_dir_buffer), a); } #endif return 0; }
adv_error advance_ui_config_load(struct advance_ui_context* context, adv_conf* cfg_context, struct mame_option* option) { const char* s; char* e; context->config.ui_speedmark_flag = conf_bool_get_default(cfg_context, "debug_speedmark"); sncpy(context->config.help_image_buffer, sizeof(context->config.help_image_buffer), conf_string_get_default(cfg_context, "ui_helpimage")); sncpy(context->config.ui_font_buffer, sizeof(context->config.ui_font_buffer), conf_string_get_default(cfg_context, "ui_font")); context->config.ui_translucency = conf_float_get_default(cfg_context, "ui_translucency") * 255; if (context->config.ui_translucency > 255) context->config.ui_translucency = 255; s = conf_string_get_default(cfg_context, "ui_fontsize"); context->config.ui_font_sizey = strtol(s, &e, 10); while (*e && isspace(*e)) ++e; if (*e) { context->config.ui_font_sizex = strtol(e, &e, 10); } else { context->config.ui_font_sizex = 0; } context->config.ui_font_orientation = option->direct_orientation; if (ui_color_load(context, cfg_context, UI_COLOR_INTERFACE_F, UI_COLOR_INTERFACE_B, "ui_color[interface]") != 0 || ui_color_load(context, cfg_context, UI_COLOR_TAG_F, UI_COLOR_TAG_B, "ui_color[tag]") != 0 || ui_color_load(context, cfg_context, UI_COLOR_SELECT_F, UI_COLOR_SELECT_B, "ui_color[select]") != 0 || ui_color_load(context, cfg_context, -1, UI_COLOR_HELP_P1, "ui_color[help_p1]") != 0 || ui_color_load(context, cfg_context, -1, UI_COLOR_HELP_P2, "ui_color[help_p2]") != 0 || ui_color_load(context, cfg_context, -1, UI_COLOR_HELP_P3, "ui_color[help_p3]") != 0 || ui_color_load(context, cfg_context, -1, UI_COLOR_HELP_P4, "ui_color[help_p4]") != 0 || ui_color_load(context, cfg_context, -1, UI_COLOR_HELP_OTHER, "ui_color[help_other]") != 0) return -1; return 0; }
static int ui_color_load(struct advance_ui_context* context, adv_conf* cfg_context, int f, int b, const char* tag) { const char* fs; const char* bs; const char* s; int p; char c; char* d; s = conf_string_get_default(cfg_context, tag); d = strdup(s); p = 0; fs = stoken(&c, &p, d, " ", ""); if (c != ' ') { target_err("Error in option %s\n", tag); return -1; } sskip(&p, d, " "); bs = stoken(&c, &p, d, " ", ""); if (c != 0) { target_err("Error in option %s\n", tag); return -1; } if (f >= 0) { if (ui_color_hex(&context->config.ui_color[f], fs) != 0) { target_err("Error in option %s\n", tag); return -1; } } if (b >= 0) { if (ui_color_hex(&context->config.ui_color[b], bs) != 0) { target_err("Error in option %s\n", tag); return -1; } } free(d); return 0; }
adv_error mouseb_raw_load(adv_conf* context) { unsigned i; for (i = 0; i < RAW_MOUSE_MAX; ++i) { char buf[64]; const char* s; snprintf(buf, sizeof(buf), "device_raw_mousetype[%d]", i); raw_state.map[i].context.type = conf_int_get_default(context, buf); snprintf(buf, sizeof(buf), "device_raw_mousedev[%d]", i); s = conf_string_get_default(context, buf); if (strcmp(s, "auto") == 0) { if (i == 0 && access("/dev/mouse", F_OK) == 0) { sncpy(raw_state.map[i].context.dev, sizeof(raw_state.map[i].context.dev), "/dev/mouse"); if (raw_state.map[i].context.type < 0) raw_state.map[i].context.type = MOUSE_PNP; } else { snprintf(raw_state.map[i].context.dev, sizeof(raw_state.map[i].context.dev), "/dev/input/mouse%d", i); switch (raw_state.map[i].context.type) { case MOUSE_PS2: case MOUSE_IMPS2: case MOUSE_EXPPS2: /* the /dev/input/mouse interfaces is compatible only with these three protocols */ break; default: raw_state.map[i].context.type = MOUSE_IMPS2; break; } } } else { sncpy(raw_state.map[i].context.dev, sizeof(raw_state.map[i].context.dev), s); if (raw_state.map[i].context.type < 0) raw_state.map[i].context.type = MOUSE_PNP; } } return 0; }