void set_config_var_int (char *section, char *name, int value) { char temp_string[10]; snprintf (temp_string, 10, "%d", value); set_config_var_str (section, name, temp_string); }
//! makes the configuration changes permanent void save_config (void) { char config_name[PATH_MAX]; unsigned char input_config_number, input_config_button, input_config_player; // Reads all variables in the ini file init_config (); set_config_var_str ("main", "rom_dir", initial_path); set_config_var_int ("main", "config", current_config); set_config_var_int ("main", "language", language); set_config_var_int ("main", "smode", smode); set_config_var_int ("main", "eagle", use_eagle); set_config_var_int ("main", "scanline", use_scanline); set_config_var_int ("main", "snd_freq", option.want_snd_freq); set_config_var_int ("main", "buffer_size", sbuf_size); set_config_var_int ("main", "joy_type", gamepad_driver); set_config_var_int ("main", "sound_driver", sound_driver); set_config_var_int ("main", "start_fullscreen", option.want_fullscreen); set_config_var_int ("main", "use_fullscreen_aspect", option.want_fullscreen_aspect); set_config_var_int ("main", "use_overlay", option.want_hardware_scaling); set_config_var_int ("main", "minimum_bios_hooking", minimum_bios_hooking); set_config_var_str ("main", "cdsystem_path", cdsystem_path); set_config_var_str ("main", "cd_path", ISO_filename); set_config_var_int ("main", "stereo_sound", option.want_stereo); set_config_var_int ("main", "fullscreen_width", option.fullscreen_width); set_config_var_int ("main", "fullscreen_height", option.fullscreen_height); set_config_var_int ("main", "window_size", option.window_size); set_config_var_int ("main", "arcade_card", option.want_arcade_card_emulation); set_config_var_int ("main", "supergraphx", option.want_supergraphx_emulation); set_config_var_int ("main", "tv_size", option.want_television_size_emulation); set_config_var_int ("main", "hardware_format", option.wanted_hardware_format); // For each input configuration ... for (input_config_number = 0; input_config_number < 16; input_config_number++) { char section_name[] = "CONFIG0"; if (input_config_number < 10) section_name[6] = '0' + input_config_number; else section_name[6] = 'a' + input_config_number - 10; // For each player configuration ... for (input_config_player = 0; input_config_player < 5; input_config_player++) { char input_name[8]; char input_type_name[10]; // If there's a joypad, dump it if (config[input_config_number].individual_config[input_config_player].joydev) { snprintf (input_name, 8, "joydev%1d", input_config_player); snprintf (input_type_name, 10, "%d", config[input_config_number].individual_config[input_config_player].joydev); set_config_var_str (section_name, input_name, input_type_name); } // For each button configuration ... for (input_config_button = 0; input_config_button < J_MAX; input_config_button++) { char temp_joy_str[15]; // Skip empty entries in joypad mapping if (config[input_config_number].individual_config[input_config_player]. joy_mapping[input_config_button] == default_joy_mapping[input_config_button]) continue; if ((0 == config[input_config_number].individual_config[input_config_player].joydev) && (input_config_button >= J_PAD_START)) { // If it is a joystick button/axis and it is disabled, we skip it continue; } snprintf (temp_joy_str, 15, "%s%1d", joymap_reverse[input_config_button], input_config_player); set_config_var_int (section_name, temp_joy_str, config[input_config_number].individual_config[input_config_player]. joy_mapping[input_config_button]); } } } // Sorts the configuration array qsort (config_ar, config_ar_index, sizeof (config_var), config_var_cmp); // Dump the configuration into a file sprintf (config_name, "%shugo.ini", short_exe_name); dump_config (config_name); dispose_config (); }