5
5
* Ettore Perazzoli <ettore@comm2000.it>
6
* Andreas Boose <viceteam@t-online.de>
7
8
* This file is part of VICE, the Versatile Commodore Emulator.
8
9
* See README for copyright notice.
30
31
#include <stdlib.h>
33
34
#include "cartridge.h"
39
#include "machine-video.h"
37
40
#include "resources.h"
38
42
#include "uicommands.h"
39
43
#include "uidatasette.h"
40
44
#include "uidrive.h"
41
#include "uipalette.h"
42
#include "uiperipheral.h"
45
#include "uidrivec64vic20.h"
46
#include "uikeyboard.h"
43
47
#include "uimenu.h"
48
#include "uiperipheraliec.h"
44
50
#include "uirs232.h"
51
#include "uirs232user.h"
45
52
#include "uiscreenshot.h"
46
53
#include "uisettings.h"
47
54
#include "uisound.h"
52
/* ------------------------------------------------------------------------- */
110
116
vsync_suspend_speed_eval();
113
static ui_menu_entry_t vic20_romset_submenu[] = {
114
{ N_("Load default ROMs"),
115
(ui_callback_t)ui_set_romset, (ui_callback_data_t)"default.vrs", NULL },
119
static ui_menu_entry_t vic20ui_main_romset_submenu[] = {
117
120
{ N_("Load new Kernal ROM"),
118
121
(ui_callback_t)ui_load_rom_file,
119
122
(ui_callback_data_t)"KernalName", NULL },
123
126
{ N_("Load new Character ROM"),
124
127
(ui_callback_t)ui_load_rom_file,
125
128
(ui_callback_data_t)"ChargenName", NULL },
127
{ N_("Load custom ROM set from file"),
128
(ui_callback_t)ui_load_romset, NULL, NULL },
129
{ N_("Dump ROM set definition to file"),
130
(ui_callback_t)ui_dump_romset, NULL, NULL },
132
static ui_menu_entry_t vic20_romset_submenu[] = {
133
{ N_("Load default ROMs"),
134
(ui_callback_t)ui_set_romset, (ui_callback_data_t)"default.vrs", NULL },
136
{ N_("Load new computer ROM"),
137
NULL, NULL, vic20ui_main_romset_submenu },
138
{ N_("Load new drive ROM"),
139
NULL, NULL, ui_drivec64vic20_romset_submenu },
141
{ N_("ROM set type"),
142
NULL, NULL, uiromset_type_submenu },
144
{ N_("ROM set archive"),
145
NULL, NULL, uiromset_archive_submenu },
146
{ N_("ROM set file"),
147
NULL, NULL, uiromset_file_submenu },
183
201
static ui_menu_entry_t memory_settings_menu[] = {
184
202
{ N_("Memory expansions"),
185
203
NULL, NULL, memory_settings_submenu },
190
208
/* ------------------------------------------------------------------------- */
199
217
vsync_suspend_speed_eval();
200
218
filename = ui_select_file(_("Attach cartridge image"),
201
NULL, False, last_dir, "*.prg", &button, False,
219
NULL, 0, False, last_dir, "*.prg", &button,
203
221
switch (button) {
204
222
case UI_BUTTON_OK:
205
223
if (cartridge_attach_image(type, filename) < 0)
206
224
ui_error(_("Invalid cartridge image"));
209
227
util_fname_split(filename, &last_dir, NULL);
210
228
ui_update_menus();
277
resources_get_value("JoyDevice1", (resource_value_t *)&tmp);
295
resources_get_value("JoyDevice1", (void *)&tmp);
278
296
ui_menu_set_tick(w, tmp == (int)UI_MENU_CB_PARAM);
304
322
(ui_callback_t)set_joystick_device,
305
323
(ui_callback_data_t)JOYDEV_DIGITAL_1, NULL },
325
#ifdef HAS_USB_JOYSTICK
326
{ N_("*USB Joystick 0"),
327
(ui_callback_t)set_joystick_device,
328
(ui_callback_data_t)JOYDEV_USB_0, NULL },
329
{ N_("*USB Joystick 1"),
330
(ui_callback_t)set_joystick_device,
331
(ui_callback_data_t)JOYDEV_USB_1, NULL },
317
343
/*------------------------------------------------------------*/
319
UI_MENU_DEFINE_RADIO(RsUser)
345
UI_MENU_DEFINE_TOGGLE(RsUserEnable)
321
347
static ui_menu_entry_t vic20_rs232_submenu[] = {
322
{ N_("*No Userport RS232 emulation"),
323
(ui_callback_t)radio_RsUser, (ui_callback_data_t)0, NULL },
324
{ N_("*Userport 300 baud RS232 emulation"),
325
(ui_callback_t)radio_RsUser, (ui_callback_data_t)300, NULL },
326
{ N_("*Userport 1200 baud RS232 emulation"),
327
(ui_callback_t)radio_RsUser, (ui_callback_data_t)1200, NULL },
348
{ N_("*Userport RS232 emulation"),
349
(ui_callback_t)toggle_RsUserEnable, NULL, NULL },
350
{ N_("Userport RS232 baud rate"),
351
NULL, NULL, rs232user_baudrate_submenu },
328
352
{ N_("Userport RS232 device"),
329
NULL, NULL, rsuser_device_submenu },
353
NULL, NULL, rs232user_device_submenu },
331
355
{ N_("Serial 1 device..."), (ui_callback_t)set_rs232_device_file,
332
356
(ui_callback_data_t)"RsDevice1", NULL },
355
379
/*------------------------------------------------------------*/
357
382
UI_MENU_DEFINE_TOGGLE(IEEE488)
360
384
static ui_menu_entry_t vic20_io_submenu[] = {
361
385
{ "*VIC-1112 IEEE 488 module",
362
386
(ui_callback_t)toggle_IEEE488, NULL, NULL },
377
401
/* Where does the 1024 come from? */
378
402
char filename[1024];
379
int wid = (int)UI_MENU_CB_PARAM;
403
unsigned int wid = (unsigned int)UI_MENU_CB_PARAM;
381
405
vsync_suspend_speed_eval();
383
407
/* The following code depends on a zeroed filename. */
384
408
memset(filename, 0, 1024);
386
if (ui_screenshot_dialog(filename, wid) < 0)
410
if (ui_screenshot_dialog(filename, machine_video_canvas_get(wid)) < 0)
396
/* ------------------------------------------------------------------------- */
398
UI_MENU_DEFINE_RADIO(VideoStandard)
400
static ui_menu_entry_t set_video_standard_submenu[] = {
401
{ N_("*PAL-G"), (ui_callback_t)radio_VideoStandard,
402
(ui_callback_data_t)DRIVE_SYNC_PAL, NULL },
403
{ N_("*NTSC-M"), (ui_callback_t)radio_VideoStandard,
404
(ui_callback_data_t)DRIVE_SYNC_NTSC, NULL },
408
UI_MENU_DEFINE_STRING_RADIO(PaletteFile)
410
static ui_menu_entry_t palette_submenu[] = {
412
(ui_callback_t)radio_PaletteFile, (ui_callback_data_t)"default", NULL },
414
(ui_callback_t)ui_load_palette,
415
(ui_callback_data_t)"PaletteFile", NULL },
419
static ui_menu_entry_t vic_submenu[] = {
420
{ N_("Video standard"),
421
NULL, NULL, set_video_standard_submenu },
424
NULL, NULL, palette_submenu },
428
420
static ui_menu_entry_t vic20_menu[] = {
429
421
{ N_("VIC settings"),
430
422
NULL, NULL, vic_submenu },
436
/* ------------------------------------------------------------------------- */
438
int vic20_ui_init(void)
428
static void vic20ui_dynamic_menu_create(void)
433
static void vic20ui_dynamic_menu_shutdown(void)
435
uivic_menu_shutdown();
438
int vic20ui_init(void)
440
440
ui_set_application_icon(vic20_icon_data);
441
vic20ui_dynamic_menu_create();
441
442
ui_set_left_menu(ui_menu_create("LeftMenu",
442
ui_disk_commands_menu,
443
444
ui_menu_separator,
444
ui_tape_commands_menu,
445
446
ui_datasette_commands_menu,
446
447
ui_menu_separator,
447
ui_smart_attach_commands_menu,
448
uiattach_smart_attach_menu,
448
449
ui_menu_separator,
449
450
vic20_cartridge_commands_menu,
450
451
ui_menu_separator,
465
467
ui_set_right_menu(ui_menu_create("RightMenu",
466
468
ui_performance_settings_menu,
467
469
ui_menu_separator,
468
ui_vic_video_settings_menu,
469
#ifdef USE_XF86_EXTENSIONS
470
ui_fullscreen_settings_menu,
472
ui_keyboard_settings_menu,
470
uikeyboard_settings_menu,
473
471
ui_sound_settings_menu,
474
ui_drive_settings_menu,
475
ui_peripheral_settings_menu,
472
ui_drivec64vic20_settings_menu,
473
ui_peripheraliec_settings_menu,
477
475
vic20_io_settings_menu,
483
481
ui_menu_separator,
484
482
ui_settings_settings_menu,
485
ui_debug_settings_menu,
487
489
ui_set_tape_menu(ui_menu_create("TapeMenu",
488
ui_tape_commands_menu,
489
491
ui_menu_separator,
490
492
datasette_control_submenu,
492
494
ui_set_topmenu("TopLevelMenu",
494
496
ui_menu_create("File",
495
ui_smart_attach_commands_menu,
497
ui_disk_commands_menu,
499
ui_tape_commands_menu,
497
uiattach_smart_attach_menu,
500
502
ui_datasette_commands_menu,
501
503
ui_menu_separator,
502
504
vic20_cartridge_commands_menu,
514
516
ui_snapshot_commands_submenu,
515
517
ui_menu_separator,
516
518
ui_screenshot_commands_menu,
519
ui_sound_record_commands_menu,
519
522
ui_menu_create("Options",
520
523
ui_performance_settings_menu,
521
524
ui_menu_separator,
522
#ifdef USE_XF86_EXTENSIONS
523
ui_fullscreen_settings_menu,
526
525
ui_drive_options_submenu,
529
528
ui_menu_create("Settings",
530
ui_vic_video_settings_menu,
531
ui_peripheral_settings_menu,
532
ui_drive_settings_menu,
533
ui_keyboard_settings_menu,
529
uikeyboard_settings_menu,
530
ui_sound_settings_menu,
531
ui_drivec64vic20_settings_menu,
532
ui_peripheraliec_settings_menu,
534
533
joystick_settings_menu,
535
ui_sound_settings_menu,
537
534
rs232_settings_menu,
538
535
ui_menu_separator,
539
memory_settings_menu,
540
537
ui_menu_separator,
541
538
ui_settings_settings_menu,