www.pudn.com > ngcd080s.zip > config.c
/************************************** **** CONFIG.C - Config Handling **** **************************************/ //-- Include Files ----------------------------------------------------------- #include#include #include "../cdrom/cdrom.h" #include "../cdaudio/cdaudio.h" #include "../memory/memory.h" #include "../input/input.h" #define KEY_NONE 0 typedef struct { int up; int down; int left; int right; int a; int b; int c; int d; int start; int select; int macro_01; int macro_02; int macro_03; int macro_04; int macro_05; int macro_06; int macro_07; int macro_08; int macro_09; int macro_10; int macro_11; int macro_12; int macro_13; int macro_14; int macro_15; int macro_16; } CONFIG; //-- Global Variables -------------------------------------------------------- int config_vsync; int config_scanlines; unsigned char config_game_name[80]; CONFIG kbd_p1; CONFIG kbd_p2; CONFIG joy_p1; CONFIG joy_p2; //-- Imported Variables ------------------------------------------------------ extern char *neogeo_prg_memory; //-- Exported Functions ------------------------------------------------------ void config_read(void); void config_read_name(void); void config_read_kbd_conf(CONFIG *, char *); void config_save_kbd_conf(CONFIG *, char *); void config_read_joy_conf(CONFIG *, char *); void config_save_joy_conf(CONFIG *, char *); //---------------------------------------------------------------------------- void config_read(void) { int temp; unsigned char tmp[80]; config_vsync = get_config_int(NULL, "vsync", 0); config_scanlines = get_config_int(NULL, "scanlines", 0); temp = get_config_int(NULL, "nationality", 0); if (temp>2) temp = 2; cpu_writemem24(0x10FD83, temp); cdrom_current_drive = get_config_int(NULL, "cdrom", -1); cdda_current_drive = get_config_int(NULL, "cdaudio", -1); config_read_kbd_conf(&kbd_p1, "keyboard1"); config_read_kbd_conf(&kbd_p2, "keyboard2"); config_read_joy_conf(&joy_p1, "joystick1"); config_read_joy_conf(&joy_p2, "joystick2"); } //---------------------------------------------------------------------------- void config_read_name(void) { unsigned char *Ptr; int temp; Ptr = neogeo_prg_memory + cpu_readmem24_dword(0x11A); swab(Ptr, config_game_name, 80); for(temp=0;temp<80;temp++) if (!isprint(config_game_name[temp])) config_game_name[temp]=0; } void config_read_kbd_conf(CONFIG *conf, char *section) { conf->up = input_identify(get_config_string(section, "up", KEY_NONE)); conf->down = input_identify(get_config_string(section, "down", KEY_NONE)); conf->left = input_identify(get_config_string(section, "left", KEY_NONE)); conf->right = input_identify(get_config_string(section, "right", "KEY_NONE")); conf->a = input_identify(get_config_string(section, "a", "KEY_NONE")); conf->b = input_identify(get_config_string(section, "b", "KEY_NONE")); conf->c = input_identify(get_config_string(section, "c", "KEY_NONE")); conf->d = input_identify(get_config_string(section, "d", "KEY_NONE")); conf->start = input_identify(get_config_string(section, "start", "KEY_NONE")); conf->select = input_identify(get_config_string(section, "select", "KEY_NONE")); conf->macro_01 = input_identify(get_config_string(section, "macro01", "KEY_NONE")); conf->macro_02 = input_identify(get_config_string(section, "macro02", "KEY_NONE")); conf->macro_03 = input_identify(get_config_string(section, "macro03", "KEY_NONE")); conf->macro_04 = input_identify(get_config_string(section, "macro04", "KEY_NONE")); conf->macro_05 = input_identify(get_config_string(section, "macro05", "KEY_NONE")); conf->macro_06 = input_identify(get_config_string(section, "macro06", "KEY_NONE")); conf->macro_07 = input_identify(get_config_string(section, "macro07", "KEY_NONE")); conf->macro_08 = input_identify(get_config_string(section, "macro08", "KEY_NONE")); conf->macro_09 = input_identify(get_config_string(section, "macro09", "KEY_NONE")); conf->macro_10 = input_identify(get_config_string(section, "macro10", "KEY_NONE")); conf->macro_11 = input_identify(get_config_string(section, "macro11", "KEY_NONE")); conf->macro_12 = input_identify(get_config_string(section, "macro12", "KEY_NONE")); conf->macro_13 = input_identify(get_config_string(section, "macro13", "KEY_NONE")); conf->macro_14 = input_identify(get_config_string(section, "macro14", "KEY_NONE")); conf->macro_15 = input_identify(get_config_string(section, "macro15", "KEY_NONE")); conf->macro_16 = input_identify(get_config_string(section, "macro16", "KEY_NONE")); } void config_save_kbd_conf(CONFIG *conf, char *section) { set_config_string(section, "up", input_whois(conf->up)); set_config_string(section, "down", input_whois(conf->down)); set_config_string(section, "left", input_whois(conf->left)); set_config_string(section, "right", input_whois(conf->right)); set_config_string(section, "a", input_whois(conf->a)); set_config_string(section, "b", input_whois(conf->b)); set_config_string(section, "c", input_whois(conf->c)); set_config_string(section, "d", input_whois(conf->d)); set_config_string(section, "start", input_whois(conf->start)); set_config_string(section, "select", input_whois(conf->select)); set_config_string(section, "macro01", input_whois(conf->macro_01)); set_config_string(section, "macro02", input_whois(conf->macro_02)); set_config_string(section, "macro03", input_whois(conf->macro_03)); set_config_string(section, "macro04", input_whois(conf->macro_04)); set_config_string(section, "macro05", input_whois(conf->macro_05)); set_config_string(section, "macro06", input_whois(conf->macro_06)); set_config_string(section, "macro07", input_whois(conf->macro_07)); set_config_string(section, "macro08", input_whois(conf->macro_08)); set_config_string(section, "macro09", input_whois(conf->macro_09)); set_config_string(section, "macro10", input_whois(conf->macro_10)); set_config_string(section, "macro11", input_whois(conf->macro_11)); set_config_string(section, "macro12", input_whois(conf->macro_12)); set_config_string(section, "macro13", input_whois(conf->macro_13)); set_config_string(section, "macro14", input_whois(conf->macro_14)); set_config_string(section, "macro15", input_whois(conf->macro_15)); set_config_string(section, "macro16", input_whois(conf->macro_16)); } void config_read_joy_conf(CONFIG *conf, char *section) { conf->a = get_config_int(section, "a", 0); conf->b = get_config_int(section, "b", 1); conf->c = get_config_int(section, "c", 2); conf->d = get_config_int(section, "d", 3); conf->start = get_config_int(section, "start", 4); conf->select = get_config_int(section, "select", 5); conf->macro_01 = get_config_int(section, "macro01", 6); conf->macro_02 = get_config_int(section, "macro02", 7); conf->macro_03 = get_config_int(section, "macro03", 8); conf->macro_04 = get_config_int(section, "macro04", 9); conf->macro_05 = get_config_int(section, "macro05", 10); conf->macro_06 = get_config_int(section, "macro06", 11); conf->macro_07 = get_config_int(section, "macro07", 12); conf->macro_08 = get_config_int(section, "macro08", 13); conf->macro_09 = get_config_int(section, "macro09", 14); conf->macro_10 = get_config_int(section, "macro10", 15); conf->macro_11 = get_config_int(section, "macro11", 16); conf->macro_12 = get_config_int(section, "macro12", 17); conf->macro_13 = get_config_int(section, "macro13", 18); conf->macro_14 = get_config_int(section, "macro14", 19); conf->macro_15 = get_config_int(section, "macro15", 20); conf->macro_16 = get_config_int(section, "macro16", 21); } void config_save_joy_conf(CONFIG *conf, char *section) { set_config_int(section, "a", conf->a); set_config_int(section, "b", conf->b); set_config_int(section, "c", conf->c); set_config_int(section, "d", conf->d); set_config_int(section, "start", conf->start); set_config_int(section, "select", conf->select); set_config_int(section, "macro01", conf->macro_01); set_config_int(section, "macro02", conf->macro_02); set_config_int(section, "macro03", conf->macro_03); set_config_int(section, "macro04", conf->macro_04); set_config_int(section, "macro05", conf->macro_05); set_config_int(section, "macro06", conf->macro_06); set_config_int(section, "macro07", conf->macro_07); set_config_int(section, "macro08", conf->macro_08); set_config_int(section, "macro09", conf->macro_09); set_config_int(section, "macro10", conf->macro_10); set_config_int(section, "macro11", conf->macro_11); set_config_int(section, "macro12", conf->macro_12); set_config_int(section, "macro13", conf->macro_13); set_config_int(section, "macro14", conf->macro_14); set_config_int(section, "macro15", conf->macro_15); set_config_int(section, "macro16", conf->macro_16); } void config_set_var_kbd(CONFIG *conf, int var, int val) { *( ((int *)conf) + var ) = val; } int config_get_var_kbd(CONFIG *conf, int var) { return *( ((int *)conf) + var ); } void config_set_var_joy(CONFIG *conf, int var, int val) { *( ((int *)conf) + var + 4 ) = val; } int config_get_var_joy(CONFIG *conf, int var) { return *( ((int *)conf) + var + 4 ); } int val_to_index(int val) { int i; for(i=0;i<96;i++) { if (keydefs[i].key_scancode == val) return i; } return 0; }