This is c64ui.c in view mode; [Download] [Up]
/* * c64ui.c - Implementation of the C64-specific part of the UI. * * Written by * Ettore Perazzoli (ettore@comm2000.it) * André Fachat (fachat@physik.tu-chemnitz.de) * * This file is part of VICE, the Versatile Commodore Emulator. * See README for copyright notice. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307 USA. * */ #include "vice.h" #include <stdio.h> #include "cartridge.h" #include "joystick.h" #include "resources.h" #include "uicommands.h" #include "uimenu.h" #include "uisettings.h" #include "vsync.h" #ifdef XPM #include <X11/xpm.h> #include "c64icon.xpm" #endif /* ------------------------------------------------------------------------- */ static UI_CALLBACK(attach_cartridge) { int type = (int)client_data; char *filename; ui_button_t button; suspend_speed_eval(); filename = ui_select_file("Attach cartridge image", NULL, False, NULL, NULL, &button); switch (button) { case UI_BUTTON_OK: if (cartridge_attach_image(type, filename) < 0) ui_error("Invalid cartridge image"); break; default: /* Do nothing special. */ break; } } static UI_CALLBACK(detach_cartridge) { cartridge_detach_image(); } static UI_CALLBACK(default_cartridge) { cartridge_set_default(); } static UI_CALLBACK(freeze_cartridge) { cartridge_trigger_freeze(); } static ui_menu_entry_t attach_cartridge_image_submenu[] = { { "Smart attach CRT image...", (ui_callback_t) attach_cartridge, (ui_callback_data_t) CARTRIDGE_CRT, NULL }, { "--" }, { "Attach generic 8KB image...", (ui_callback_t) attach_cartridge, (ui_callback_data_t) CARTRIDGE_GENERIC_8KB, NULL }, { "Attach generic 16KB image...", (ui_callback_t) attach_cartridge, (ui_callback_data_t) CARTRIDGE_GENERIC_16KB, NULL }, { "Attach Action Replay image...", (ui_callback_t) attach_cartridge, (ui_callback_data_t) CARTRIDGE_ACTION_REPLAY, NULL }, { "--" }, { "Set cartridge as default", (ui_callback_t) default_cartridge, NULL, NULL }, { NULL } }; static ui_menu_entry_t ui_cartridge_commands_menu[] = { { "Attach a cartridge image", NULL, NULL, attach_cartridge_image_submenu }, { "Detach cartridge image", (ui_callback_t) detach_cartridge, NULL, NULL }, { "Freeze", (ui_callback_t) freeze_cartridge, NULL, NULL, XK_f, UI_HOTMOD_META }, { NULL } }; /* ------------------------------------------------------------------------- */ UI_MENU_DEFINE_STRING_RADIO(PaletteFile) static ui_menu_entry_t palette_submenu[] = { { "*Default", (ui_callback_t) radio_PaletteFile, (ui_callback_data_t) "default", NULL }, { "*CCS64", (ui_callback_t) radio_PaletteFile, (ui_callback_data_t) "ccs64", NULL }, { "*Frodo", (ui_callback_t) radio_PaletteFile, (ui_callback_data_t) "frodo", NULL }, { "*GoDot", (ui_callback_t) radio_PaletteFile, (ui_callback_data_t) "godot", NULL }, { NULL } }; UI_MENU_DEFINE_TOGGLE(CheckSsColl) UI_MENU_DEFINE_TOGGLE(CheckSbColl) static ui_menu_entry_t vic_submenu[] = { { "*Sprite-sprite collisions", (ui_callback_t) toggle_CheckSsColl, NULL, NULL }, { "*Sprite-background collisions", (ui_callback_t) toggle_CheckSsColl, NULL, NULL }, { "--", NULL, NULL, NULL }, { "Color set", NULL, NULL, palette_submenu }, { NULL } }; /* ------------------------------------------------------------------------- */ UI_MENU_DEFINE_RADIO(SidModel) static ui_menu_entry_t sid_model_submenu[] = { { "*6581 (old)", (ui_callback_t) radio_SidModel, (ui_callback_data_t) 0, NULL }, { "*8580 (new)", (ui_callback_t) radio_SidModel, (ui_callback_data_t) 1, NULL }, { NULL } }; UI_MENU_DEFINE_TOGGLE(SidFilters) #ifdef HAVE_RESID UI_MENU_DEFINE_TOGGLE(SidUseResid) #endif static ui_menu_entry_t sid_submenu[] = { { "*Emulate filters", (ui_callback_t) toggle_SidFilters, NULL, NULL }, { "Chip model", NULL, NULL, sid_model_submenu }, #ifdef HAVE_RESID { "*Use reSID emulation", (ui_callback_t) toggle_SidUseResid, NULL, NULL }, #endif { NULL }, }; /* ------------------------------------------------------------------------- */ UI_MENU_DEFINE_TOGGLE(EmuID) UI_MENU_DEFINE_TOGGLE(IEEE488) UI_MENU_DEFINE_TOGGLE(REU) static ui_menu_entry_t io_extensions_submenu[] = { { "*Emulator identification", (ui_callback_t) toggle_EmuID, NULL, NULL }, { "*IEEE488 interface emulation", (ui_callback_t) toggle_IEEE488, NULL, NULL }, { "*512K RAM Expansion Unit", (ui_callback_t) toggle_REU, NULL, NULL }, { NULL } }; /* ------------------------------------------------------------------------- */ static UI_CALLBACK(set_joystick_device_1) { int tmp; suspend_speed_eval(); if (!call_data) { resources_set_value("JoyDevice1", (resource_value_t) client_data); ui_update_menus(); } else { resources_get_value("JoyDevice1", (resource_value_t *) &tmp); ui_menu_set_tick(w, tmp == (int) client_data); } } static UI_CALLBACK(set_joystick_device_2) { int tmp; suspend_speed_eval(); if (!call_data) { resources_set_value("JoyDevice2", (resource_value_t) client_data); ui_update_menus(); } else { resources_get_value("JoyDevice2", (resource_value_t *) &tmp); ui_menu_set_tick(w, tmp == (int) client_data); } } static UI_CALLBACK(swap_joystick_ports) { int tmp1, tmp2; if (w != NULL) suspend_speed_eval(); resources_get_value("JoyDevice1", (resource_value_t *) &tmp1); resources_get_value("JoyDevice2", (resource_value_t *) &tmp2); resources_set_value("JoyDevice1", (resource_value_t) tmp2); resources_set_value("JoyDevice2", (resource_value_t) tmp1); ui_update_menus(); } static ui_menu_entry_t set_joystick_device_1_submenu[] = { { "*None", (ui_callback_t) set_joystick_device_1, (ui_callback_data_t) JOYDEV_NONE, NULL }, { "*Numpad", (ui_callback_t) set_joystick_device_1, (ui_callback_data_t) JOYDEV_NUMPAD, NULL }, { "*Custom Keys", (ui_callback_t) set_joystick_device_1, (ui_callback_data_t) JOYDEV_CUSTOM_KEYS, NULL }, #ifdef HAS_JOYSTICK { "*Analog Joystick 0", (ui_callback_t) set_joystick_device_1, (ui_callback_data_t) JOYDEV_ANALOG_0, NULL }, { "*Analog Joystick 1", (ui_callback_t) set_joystick_device_1, (ui_callback_data_t) JOYDEV_ANALOG_1, NULL }, #ifdef HAS_DIGITAL_JOYSTICK { "*Digital Joystick 0", (ui_callback_t) set_joystick_device_1, (ui_callback_data_t) JOYDEV_DIGITAL_0, NULL }, { "*Digital Joystick 1", (ui_callback_t) set_joystick_device_1, (ui_callback_data_t) JOYDEV_DIGITAL_1, NULL }, #endif #endif { NULL } }; static ui_menu_entry_t set_joystick_device_2_submenu[] = { { "*None", (ui_callback_t) set_joystick_device_2, (ui_callback_data_t) JOYDEV_NONE, NULL }, { "*Numpad", (ui_callback_t) set_joystick_device_2, (ui_callback_data_t) JOYDEV_NUMPAD, NULL }, { "*Custom Keys", (ui_callback_t) set_joystick_device_2, (ui_callback_data_t) JOYDEV_CUSTOM_KEYS, NULL }, #ifdef HAS_JOYSTICK { "*Analog Joystick 0", (ui_callback_t) set_joystick_device_2, (ui_callback_data_t) JOYDEV_ANALOG_0, NULL }, { "*Analog Joystick 1", (ui_callback_t) set_joystick_device_2, (ui_callback_data_t) JOYDEV_ANALOG_1, NULL }, #ifdef HAS_DIGITAL_JOYSTICK { "*Digital Joystick 0", (ui_callback_t) set_joystick_device_2, (ui_callback_data_t) JOYDEV_DIGITAL_0, NULL }, { "*Digital Joystick 1", (ui_callback_t) set_joystick_device_2, (ui_callback_data_t) JOYDEV_DIGITAL_1, NULL }, #endif #endif /* HAS_JOYSTICK */ { NULL } }; static ui_menu_entry_t joystick_settings_submenu[] = { { "Joystick device in port 1", NULL, NULL, set_joystick_device_1_submenu }, { "Joystick device in port 2", NULL, NULL, set_joystick_device_2_submenu }, { "--" }, { "Swap joystick ports", (ui_callback_t) swap_joystick_ports, NULL, NULL }, { NULL } }; static ui_menu_entry_t joystick_settings_menu[] = { { "Joystick settings", NULL, NULL, joystick_settings_submenu }, { NULL } }; /* ------------------------------------------------------------------------- */ static ui_menu_entry_t c64_menu[] = { { "VIC-II settings", NULL, NULL, vic_submenu }, { "SID settings", NULL, NULL, sid_submenu }, { "I/O extensions at $DFxx", NULL, NULL, io_extensions_submenu }, { "RS232 settings", NULL, NULL, rs232_submenu }, { NULL } }; int c64_ui_init(void) { #ifdef XPM { Pixmap icon_pixmap; /* Create the icon pixmap. */ XpmCreatePixmapFromData(display, DefaultRootWindow(display), icon_data, &icon_pixmap, NULL, NULL); ui_set_application_icon(icon_pixmap); } #endif ui_set_left_menu(ui_menu_create("LeftMenu", ui_disk_commands_menu, ui_menu_separator, ui_tape_commands_menu, ui_menu_separator, ui_smart_attach_commands_menu, ui_menu_separator, ui_cartridge_commands_menu, ui_menu_separator, ui_directory_commands_menu, ui_menu_separator, ui_tool_commands_menu, ui_menu_separator, ui_help_commands_menu, ui_menu_separator, ui_run_commands_menu, ui_menu_separator, ui_exit_commands_menu, NULL)); ui_set_right_menu(ui_menu_create("RightMenu", ui_performance_settings_menu, ui_menu_separator, ui_video_settings_menu, ui_keyboard_settings_menu, ui_sound_settings_menu, ui_true1541_settings_menu, ui_peripheral_settings_menu, joystick_settings_menu, ui_menu_separator, c64_menu, ui_menu_separator, ui_settings_settings_menu, NULL)); ui_update_menus(); return 0; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.