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.