static TUI_MENU_CALLBACK(toggle_external_palette_callback) { char *resource = (char *)param; char *s; int val; if (been_activated) { resources_toggle(resource, NULL); } resources_get_int(resource, &val); return (val) ? "On" : "Off"; }
static int toggle_drive_res(char *format, int drive) { int res; char *tmp; tmp = lib_msprintf(format, drive + 8); resources_toggle(tmp, &res); lib_free(tmp); return res; }
static void handle_default_command(WPARAM wparam, LPARAM lparam, HWND hwnd) { int i, j, command_found = 0; for (i = 0; toggle_list[i].name != NULL && !command_found; i++) { if (toggle_list[i].item_id == wparam) { resources_toggle(toggle_list[i].name, NULL); command_found = 1; } } for (i = 0; value_list[i].name != NULL && !command_found; i++) { for (j = 0; value_list[i].vals[j].item_id != 0 && !command_found; j++) { if (value_list[i].vals[j].item_id == wparam) { resources_set_int(value_list[i].name, value_list[i].vals[j].value); command_found = 1; } } } }
static INT_PTR CALLBACK memory_dialog_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { int type; switch (msg) { case WM_INITDIALOG: init_memory_dialog(hwnd); return TRUE; case WM_COMMAND: type = LOWORD(wparam); switch (type) { case IDC_SELECT_CBMII_MEM_128: resources_set_int("RamSize", 128); break; case IDC_SELECT_CBMII_MEM_256: resources_set_int("RamSize", 256); break; case IDC_SELECT_CBMII_MEM_512: resources_set_int("RamSize", 512); break; case IDC_SELECT_CBMII_MEM_1024: resources_set_int("RamSize", 1024); break; case IDC_TOGGLE_CBMII_RAM08: resources_toggle("Ram08", NULL); break; case IDC_TOGGLE_CBMII_RAM1: resources_toggle("Ram1", NULL); break; case IDC_TOGGLE_CBMII_RAM2: resources_toggle("Ram2", NULL); break; case IDC_TOGGLE_CBMII_RAM4: resources_toggle("Ram4", NULL); break; case IDC_TOGGLE_CBMII_RAM6: resources_toggle("Ram6", NULL); break; case IDC_TOGGLE_CBMII_RAMC: resources_toggle("RamC", NULL); break; } return TRUE; } return FALSE; }
static BOOL CALLBACK dialog_proc(int num, HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { char tmp[256]; switch (msg) { case WM_INITDIALOG: init_dialog(hwnd, num); return TRUE; case WM_COMMAND: switch (LOWORD(wparam)) { case IDC_SELECT_DRIVE_TYPE_NONE: resources_set_int_sprintf("Drive%dType", DRIVE_TYPE_NONE, num); enable_controls_for_drive_settings(hwnd, LOWORD(wparam)); break; case IDC_SELECT_DRIVE_TYPE_1541: resources_set_int_sprintf("Drive%dType", DRIVE_TYPE_1541, num); enable_controls_for_drive_settings(hwnd, LOWORD(wparam)); break; case IDC_SELECT_DRIVE_TYPE_1541II: resources_set_int_sprintf("Drive%dType", DRIVE_TYPE_1541II, num); enable_controls_for_drive_settings(hwnd, LOWORD(wparam)); break; case IDC_SELECT_DRIVE_TYPE_1551: resources_set_int_sprintf("Drive%dType", DRIVE_TYPE_1551, num); enable_controls_for_drive_settings(hwnd, LOWORD(wparam)); break; case IDC_SELECT_DRIVE_TYPE_1570: resources_set_int_sprintf("Drive%dType", DRIVE_TYPE_1570, num); enable_controls_for_drive_settings(hwnd, LOWORD(wparam)); break; case IDC_SELECT_DRIVE_TYPE_1571: resources_set_int_sprintf("Drive%dType", DRIVE_TYPE_1571, num); enable_controls_for_drive_settings(hwnd, LOWORD(wparam)); break; case IDC_SELECT_DRIVE_TYPE_1581: resources_set_int_sprintf("Drive%dType", DRIVE_TYPE_1581, num); enable_controls_for_drive_settings(hwnd, LOWORD(wparam)); break; case IDC_SELECT_DRIVE_EXTEND_NEVER: resources_set_int_sprintf("Drive%dExtendImagePolicy", DRIVE_EXTEND_NEVER, num); break; case IDC_SELECT_DRIVE_EXTEND_ASK: resources_set_int_sprintf("Drive%dExtendImagePolicy", DRIVE_EXTEND_ASK, num); break; case IDC_SELECT_DRIVE_EXTEND_ACCESS: resources_set_int_sprintf("Drive%dExtendImagePolicy", DRIVE_EXTEND_ACCESS, num); break; case IDC_SELECT_DRIVE_IDLE_NO_IDLE: resources_set_int_sprintf("Drive%dIdleMethod", DRIVE_IDLE_NO_IDLE, num); break; case IDC_SELECT_DRIVE_IDLE_TRAP_IDLE: resources_set_int_sprintf("Drive%dIdleMethod", DRIVE_IDLE_TRAP_IDLE, num); break; case IDC_SELECT_DRIVE_IDLE_SKIP_CYCLES: resources_set_int_sprintf("Drive%dIdleMethod", DRIVE_IDLE_SKIP_CYCLES, num); break; case IDC_TOGGLE_DRIVE_PARALLEL_CABLE: sprintf(tmp, "Drive%dParallelCable", num); resources_toggle(tmp, NULL); break; case IDC_TOGGLE_DRIVE_EXPANSION_2000: sprintf(tmp, "Drive%dRAM2000", num); resources_toggle(tmp, NULL); break; case IDC_TOGGLE_DRIVE_EXPANSION_4000: sprintf(tmp, "Drive%dRAM4000", num); resources_toggle(tmp, NULL); break; case IDC_TOGGLE_DRIVE_EXPANSION_6000: sprintf(tmp, "Drive%dRAM6000", num); resources_toggle(tmp, NULL); break; case IDC_TOGGLE_DRIVE_EXPANSION_8000: sprintf(tmp, "Drive%dRAM8000", num); resources_toggle(tmp, NULL); break; case IDC_TOGGLE_DRIVE_EXPANSION_A000: sprintf(tmp, "Drive%dRAMA000", num); resources_toggle(tmp, NULL); break; default: return FALSE; } return TRUE; } return FALSE; }
static int vsid_menu_handle(int idm) { char *fname = NULL; char *curlang; int i; switch (idm) { case IDM_NEXT_TUNE: if (current_song < songs) { current_song++; psid_ui_set_tune(uint_to_void_ptr(current_song), NULL); vsid_ui_display_tune_nr(current_song); vsid_ui_set_default_tune(default_song); vsid_ui_display_nr_of_tunes(songs); } break; case IDM_PREVIOUS_TUNE: if (current_song > 1) { current_song--; psid_ui_set_tune(uint_to_void_ptr(current_song), NULL); vsid_ui_display_tune_nr(current_song); vsid_ui_set_default_tune(default_song); vsid_ui_display_nr_of_tunes(songs); } break; case IDM_LOAD_PSID_FILE: fname = VSID_BrowseFile(translate_text(IDS_PSID_SELECT), "#?"); if (fname != NULL) { if (machine_autodetect_psid(fname) >= 0) { psid_init_driver(); machine_play_psid(0); for (i = 0; i < VSID_S_LASTLINE; i++) { *vsidstrings[i] = 0; } machine_trigger_reset(MACHINE_RESET_MODE_SOFT); songs = psid_tunes(&default_song); current_song = default_song; psid_ui_set_tune(uint_to_void_ptr(current_song), NULL); vsid_ui_display_tune_nr(current_song); vsid_ui_set_default_tune(default_song); vsid_ui_display_nr_of_tunes(songs); } } break; case IDM_RESET_HARD: machine_trigger_reset(MACHINE_RESET_MODE_HARD); break; case IDM_RESET_SOFT: machine_trigger_reset(MACHINE_RESET_MODE_SOFT); break; case IDM_EXIT: do_quit_vice = 1; break; case IDM_SETTINGS_SAVE_FILE: fname = VSID_BrowseFile(translate_text(IDS_CONFIG_FILENAME_SELECT), "#?"); if (fname != NULL) { if (resources_save(fname) < 0) { ui_error(translate_text(IDMES_CANNOT_SAVE_SETTINGS)); } else { ui_message(translate_text(IDMES_SETTINGS_SAVED_SUCCESS)); } } break; case IDM_SETTINGS_LOAD_FILE: fname = VSID_BrowseFile(translate_text(IDS_CONFIG_FILENAME_SELECT), "#?"); if (fname != NULL) { if (resources_load(fname) < 0) { ui_error(translate_text(IDMES_CANNOT_LOAD_SETTINGS)); } else { ui_message(translate_text(IDMES_SETTINGS_LOAD_SUCCESS)); } } break; case IDM_SETTINGS_SAVE: if (resources_save(NULL) < 0) { ui_error(translate_text(IDMES_CANNOT_SAVE_SETTINGS)); } else { ui_message(translate_text(IDMES_SETTINGS_SAVED_SUCCESS)); } break; case IDM_SETTINGS_LOAD: if (resources_load(NULL) < 0) { ui_error(translate_text(IDMES_CANNOT_LOAD_SETTINGS)); } else { ui_message(translate_text(IDMES_SETTINGS_LOAD_SUCCESS)); } break; case IDM_SETTINGS_DEFAULT: resources_set_defaults(); ui_message(translate_text(IDMES_DFLT_SETTINGS_RESTORED)); break; case IDM_SAMPLE_RATE: i = vsid_requester(translate_text(IDS_SAMPLE_RATE), translate_text(IDS_SAMPLE_RATE), "11025 Hz | 22050 Hz | 44100 Hz | 8000 Hz", 0); resources_set_int("SoundSampleRate", vsid_sample_rates[i]); break; case IDM_BUFFER_SIZE: i = vsid_requester(translate_text(IDS_BUFFER_SIZE), translate_text(IDS_BUFFER_SIZE), "150 msec | 200 msec | 250 msec | 300 msec | 350 msec | 100 msec", 0); resources_set_int("SoundBufferSize", vsid_buffer_sizes[i]); break; case IDM_FRAGMENT_SIZE: fname = util_concat(translate_text(IDS_MEDIUM), " | ", translate_text(IDS_LARGE), " | ", translate_text(IDS_SMALL), NULL); i = vsid_requester(translate_text(IDS_FRAGMENT_SIZE), translate_text(IDS_FRAGMENT_SIZE), fname, 0); resources_set_int("SoundFragmentSize", vsid_fragment_sizes[i]); lib_free(fname); break; case IDM_SPEED_ADJUSTMENT: fname = util_concat(translate_text(IDS_ADJUSTING), " | ", translate_text(IDS_EXACT), " | ", translate_text(IDS_FLEXIBLE), NULL); i = vsid_requester(translate_text(IDS_SPEED_ADJUSTMENT), translate_text(IDS_SPEED_ADJUSTMENT), fname, 0); resources_set_int("SoundSpeedAdjustment", vsid_speed_adjustments[i]); lib_free(fname); break; case IDM_VOLUME: i = vsid_requester(translate_text(IDS_VOLUME), translate_text(IDS_VOLUME), "50% | 25% | 10% | 5% | 0% | 100%", 0); resources_set_int("SoundVolume", vsid_volumes[i]); break; case IDM_SOUND_OUTPUT_MODE: fname = util_concat(translate_text(IDS_MONO), " | ", translate_text(IDS_STEREO), " | ", translate_text(IDS_SYSTEM), NULL); i = vsid_requester(translate_text(IDS_SOUND_OUTPUT_MODE), translate_text(IDS_SOUND_OUTPUT_MODE), fname, 0); resources_set_int("SoundOutput", vsid_output_modes[i]); lib_free(fname); break; case IDM_SID_ENGINE_MODEL: fname = util_concat( #ifdef HAVE_RESID "ReSID | ", #endif #ifdef HAVE_CATWEASELMKIII "Catweasel MK3 | ", #endif #ifdef HAVE_HARDSID "HardSID | ", #endif #ifdef HAVE_RESID_FP "ReSID-fp | ", #endif "Fast SID", NULL); i = vsid_requester(translate_text(IDS_SID_ENGINE), translate_text(IDS_SID_ENGINE), fname, 0); resources_set_int("SidEngine", vsid_sid_engines[i]); lib_free(fname); switch (vsid_sid_engines[i]) { case SID_ENGINE_FASTSID: i = vsid_requester(translate_text(IDS_SID_MODEL), translate_text(IDS_SID_MODEL), "8580 | 6581", 0); resources_set_int("SidModel", vsid_fastsid_models[i]); break; #ifdef HAVE_RESID case SID_ENGINE_RESID: i = vsid_requester(translate_text(IDS_SID_MODEL), translate_text(IDS_SID_MODEL), "8580 | 8580D | 6581", 0); resources_set_int("SidModel", vsid_resid_models[i]); break; #endif #ifdef HAVE_RESID_FP case SID_ENGINE_RESID_FP: i = vsid_requester(translate_text(IDS_SID_MODEL), translate_text(IDS_SID_MODEL), "6581R3 0486S | 6581R3 3984 | 6581R4AR 3789 | 6581R3 4485 | 6581R4 1986S | 8580R5 3691 | 8580R5 3691D | 8580R5 1489 | 8580R5 1489D | 6581R3 4885", 0); resources_set_int("SidModel", vsid_residfp_models[i]); break; #endif } break; case IDM_AMOUNT_OF_EXTRA_SIDS: i = vsid_requester(translate_text(IDS_AMOUNT_OF_EXTRA_SIDS), translate_text(IDS_AMOUNT_OF_EXTRA_SIDS), "1 | 2 | 0", 0); resources_get_int("SidStereo", i); break; #ifdef HAVE_RESID case IDM_SAMPLE_METHOD: fname = util_concat(translate_text(IDS_INTERPOLATING), " | ", translate_text(IDS_RESAMPLING), " | ", translate_text(IDS_FAST_RESAMPLING), " | ", translate_text(IDS_FAST), NULL); i = vsid_requester(translate_text(IDS_SAMPLE_METHOD), translate_text(IDS_SAMPLE_METHOD), fname, 0); resources_set_int("SidResidSampling", i); lib_free(fname); break; #endif case IDM_SOUND_RECORD_START: #ifndef USE_LAMEMP3 i = vsid_requester(translate_text(IDS_SOUND_RECORD_FORMAT), translate_text(IDS_SOUND_RECORD_FORMAT), "AIFF | VOC | WAV | IFF", 0); #else i = vsid_requester(translate_text(IDS_SOUND_RECORD_FORMAT), translate_text(IDS_SOUND_RECORD_FORMAT), "AIFF | VOC | WAV | MP3 | IFF", 0); #endif resources_set_string("SoundRecordDeviceName", ""); resources_set_string("SoundRecordDeviceName", vsid_sound_formats[i]); break; case IDM_SOUND_RECORD_STOP: resources_set_string("SoundRecordDeviceName", ""); break; case IDM_LANGUAGE_ENGLISH: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "en")) { resources_set_value("Language", (resource_value_t *)"en"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_DANISH: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "da")) { resources_set_value("Language", (resource_value_t *)"da"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_GERMAN: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "de")) { resources_set_value("Language", (resource_value_t *)"de"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_SPANISH: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "es")) { resources_set_value("Language", (resource_value_t *)"es"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_FRENCH: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "fr")) { resources_set_value("Language", (resource_value_t *)"fr"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_ITALIAN: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "it")) { resources_set_value("Language", (resource_value_t *)"it"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_KOREAN: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "ko")) { resources_set_value("Language", (resource_value_t *)"ko"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_DUTCH: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "nl")) { resources_set_value("Language", (resource_value_t *)"nl"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_POLISH: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "pl")) { resources_set_value("Language", (resource_value_t *)"pl"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_HUNGARIAN: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "hu")) { resources_set_value("Language", (resource_value_t *)"hu"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_RUSSIAN: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "ru")) { resources_set_value("Language", (resource_value_t *)"ru"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_SWEDISH: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "sv")) { resources_set_value("Language", (resource_value_t *)"sv"); vsid_menu_rebuild(); } break; case IDM_LANGUAGE_TURKISH: resources_get_value("Language", (void *)&curlang); if (strcasecmp(curlang, "tr")) { resources_set_value("Language", (resource_value_t *)"tr"); vsid_menu_rebuild(); } break; default: { int i, j, command_found = 0; for (i = 0; toggle_list[i].name != NULL && !command_found; i++) { if (toggle_list[i].idm == idm) { resources_toggle(toggle_list[i].name, NULL); command_found = 1; } } for (i = 0; value_list[i].name != NULL && !command_found; i++) { for (j = 0; value_list[i].vals[j].idm != 0 && !command_found; j++) { if (value_list[i].vals[j].idm == idm) { resources_set_value(value_list[i].name, (resource_value_t) value_list[i].vals[j].value); command_found = 1; } } } } break; } return 0; }
/* Dispatch all the pending keyboard commands. */ void kbd_flush_commands(void) { int i; if (num_queued_commands == 0) { return; } for (i = 0; i < num_queued_commands; i++) { switch (command_queue[i].type) { case KCMD_HARD_RESET: vsync_suspend_speed_eval(); machine_trigger_reset(MACHINE_RESET_MODE_HARD); break; case KCMD_RESET: vsync_suspend_speed_eval(); machine_trigger_reset(MACHINE_RESET_MODE_SOFT); break; case KCMD_RESTORE_PRESSED: machine_set_restore_key(1); break; case KCMD_RESTORE_RELEASED: machine_set_restore_key(0); break; case KCMD_FREEZE: if (freeze_function != NULL) { freeze_function(); } break; case KCMD_FLIP_NEXT: fliplist_attach_head(8, 1); break; case KCMD_FLIP_PREVIOUS: fliplist_attach_head(8, 0); break; case KCMD_FLIP_ADD: fliplist_add_image(8); break; case KCMD_FLIP_REMOVE: fliplist_remove(-1, NULL); break; case KCMD_TOGGLE_WARP: resources_toggle("WarpMode", NULL); break; case KCMD_MENU: interrupt_maincpu_trigger_trap(menu_trap, (void *)command_queue[i].data); break; case KCMD_TOGGLE_STATUSBAR: if (statusbar_enabled()) { resources_set_int("ShowStatusbar", STATUSBAR_MODE_OFF); } else { resources_set_int("ShowStatusbar", STATUSBAR_MODE_ON); } break; case KCMD_DATASETTE_START: datasette_control(DATASETTE_CONTROL_START); break; case KCMD_DATASETTE_STOP: datasette_control(DATASETTE_CONTROL_STOP); break; case KCMD_DATASETTE_FORWARD: datasette_control(DATASETTE_CONTROL_FORWARD); break; case KCMD_DATASETTE_REWIND: datasette_control(DATASETTE_CONTROL_REWIND); break; case KCMD_DATASETTE_RECORD: datasette_control(DATASETTE_CONTROL_RECORD); break; default: log_error(LOG_DEFAULT, "Unknown keyboard command %d.", (int)command_queue[i].type); } } num_queued_commands = 0; }