--- uae/src/tui.c 2018/04/24 16:42:12 1.1.1.4 +++ uae/src/tui.c 2018/04/24 17:14:27 1.1.1.12 @@ -15,7 +15,7 @@ #include "config.h" #include "options.h" -#include "threaddep/penguin.h" +#include "threaddep/thread.h" #include "uae.h" #include "gensound.h" #include "joystick.h" @@ -44,17 +44,19 @@ static void getline (char *p) void gui_handle_events (void) { } - +void gui_fps (int x) +{ +} static void save_settings (void) { FILE *f; tui_backup_optionsfile (); f = fopen (optionsfile, "w"); if (f == NULL) { - fprintf (stderr, "Error saving options file!\n"); + write_log ("Error saving options file!\n"); return; } - save_options (f); + save_options (f, &currprefs); fclose (f); } @@ -67,6 +69,7 @@ static struct bstring mainmenu[] = { { "_Disk settings", 'D' }, { "_Video settings", 'V' }, { "_Memory settings", 'M' }, + { "_CPU settings", 'C' }, { "_Hard disk settings", 'H' }, { "_Sound settings", 'S' }, { "_Other settings", 'O' }, @@ -111,6 +114,7 @@ static struct bstring videomenu[] = { { "Toggle line _doubling", 'D' }, { "Toggle _aspect _correction", 'A' }, { "Change _framerate", 'F' }, + { "_Graphics card memory", 'P'}, { NULL, -3 } }; @@ -123,6 +127,11 @@ static struct bstring memorymenu[] = { { NULL, -3 } }; +static struct bstring cpumenu[] = { + { "Change _CPU", 'C' }, + { NULL, -3 } +}; + static struct bstring soundmenu[] = { { "Sound settings", 0 }, { "Change _sound emulation accuracy", 'S' }, @@ -130,6 +139,7 @@ static struct bstring soundmenu[] = { { "Change m_aximum sound buffer size", 'A' }, { "Change number of _bits", 'B' }, { "Change output _frequency", 'F' }, + { "Change s_tereo", 'T' }, { NULL , -3 } }; @@ -143,7 +153,6 @@ static struct bstring miscmenu[] = { static struct bstring hdmenu[] = { /* { "Harddisk/CDROM emulation settings", 0 },*/ - { "Enable/Disable _harddisks/fastmem", 'H' }, { "_Add a mounted volume", 'A' }, { "Add a mounted _volume r/o", 'V' }, { "Add a hard_file", 'F' }, @@ -241,20 +250,43 @@ static void print_configuration (void) tui_puts (" (clever)"); tui_gotoxy (OPTION_COLUMN+7, y++); tui_puts ("drawing every "); - switch (currprefs.framerate) { + switch (currprefs.gfx_framerate) { case 1: break; case 2: tui_puts ("2nd "); break; case 3: tui_puts ("3rd "); break; - default: sprintf (tmp, "%dth ",currprefs.framerate); tui_puts (tmp); break; + default: sprintf (tmp, "%dth ",currprefs.gfx_framerate); tui_puts (tmp); break; } tui_puts ("frame. "); + + tui_gotoxy (OPTION_COLUMN+7, y++); + if (currprefs.gfxmem_size) { + sprintf (tmp, "Picasso 96 %d MB", currprefs.gfxmem_size / 0x100000); + tui_puts(tmp); + } else + tui_puts ("Picasso 96 Off"); y++; + tui_gotoxy (OPTION_COLUMN, y++); - sprintf (tmp, "MEMORY: %4dK chip; %4dK fast; %4dK slow",chipmem_size/1024,fastmem_size/1024,bogomem_size/1024); + tui_puts ("CPU: "); + switch (currprefs.cpu_level) { + case 0: tui_puts ("68000"); break; + case 1: tui_puts ("68010"); break; + case 2: tui_puts ("68020"); break; + case 3: tui_puts ("68020/68881"); break; + } + if (currprefs.address_space_24 && currprefs.cpu_level > 1) + tui_puts (" (24 bit addressing)"); + if (currprefs.cpu_compatible) + tui_puts (" (slow but compatible)"); + tui_gotoxy (OPTION_COLUMN, y++); + sprintf (tmp, "MEMORY: %4dK chip; %4dK fast; %4dK slow", + currprefs.chipmem_size/1024, + currprefs.fastmem_size/1024, + currprefs.bogomem_size/1024); tui_puts (tmp); tui_gotoxy (OPTION_COLUMN, y++); - sprintf (tmp, "ROM IMAGE: %s", trimfilename(romfile, tui_cols () - 50)); + sprintf (tmp, "ROM IMAGE: %s", trimfilename (currprefs.romfile, tui_cols () - 50)); tui_puts (tmp); tui_gotoxy (OPTION_COLUMN, y++); if (!sound_available) @@ -279,15 +311,11 @@ static void print_configuration (void) tui_gotoxy (OPTION_COLUMN,y++); tui_puts ("GAME PORT 2: "); tui_puts (gameport_state (1)); - tui_gotoxy (OPTION_COLUMN,y++); - sprintf (tmp, "HARDDISK: (%s)", currprefs.automount_uaedev ? "enabled" : "disabled"); - tui_puts (tmp); - for (i = 0;; i++) { char buf[256]; tui_gotoxy (OPTION_COLUMN+1,y++); - if (sprintf_filesys_unit(buf, i) == -1) + if (sprintf_filesys_unit (currprefs.mountinfo, buf, i) == -1) break; tui_puts (buf); } @@ -311,27 +339,24 @@ static void HDOptions (void) break; else switch (c) { case 0: - currprefs.automount_uaedev = !currprefs.automount_uaedev; - break; - case 1: tui_wgets (mountvol, "Enter mounted volume name", 10); if (strlen (mountvol) == 0) break; if (mountvol[strlen(mountvol)-1]==':') mountvol[strlen(mountvol)-1] = 0; tui_wgets (mountdir, "Enter mounted volume path", 78); - add_filesys_unit (mountvol, mountdir, 0, 0, 0, 0); + add_filesys_unit (currprefs.mountinfo, mountvol, mountdir, 0, 0, 0, 0, 0); break; - case 2: + case 1: tui_wgets (mountvol, "Enter mounted volume name", 10); if (strlen (mountvol) == 0) break; if (mountvol[strlen (mountvol)-1]==':') mountvol[strlen (mountvol)-1] = 0; tui_wgets (mountdir, "Enter mounted volume path", 78); - add_filesys_unit (mountvol, mountdir, 1, 0, 0, 0); + add_filesys_unit (currprefs.mountinfo, mountvol, mountdir, 1, 0, 0, 0, 0); break; - case 3: + case 2: buff = tui_filereq("*", "", "Select the hardfile to be mounted"); if (buff == NULL) break; @@ -339,15 +364,16 @@ static void HDOptions (void) tui_wgets (mountdir, "Enter number of sectors per track", 4); tui_wgets (mountdir + 10, "Enter number of heads", 4); tui_wgets (mountdir + 20, "Enter number of reserved blocks", 3); - buff = add_filesys_unit (0, mountvol, 1, + tui_wgets (mountdir + 30, "Enter block size", 4); + buff = add_filesys_unit (currprefs.mountinfo, 0, mountvol, 1, atoi (mountdir), atoi (mountdir + 10), - atoi (mountdir + 20)); + atoi (mountdir + 20), atoi (mountdir + 30)); if (buff) tui_errorbox (buff); break; - case 4: + case 3: tui_wgets (mountvol, "Enter number of volume to be removed (0 for UAE0:, etc.)", 2); - if (kill_filesys_unit (atoi (mountvol)) == -1) + if (kill_filesys_unit (currprefs.mountinfo, atoi (mountvol)) == -1) tui_errorbox ("Volume does not exist"); break; } @@ -377,7 +403,7 @@ static void DiskOptions (void) sel = tui_filereq("*.adf", currprefs.df[c], tmp); if (sel == NULL) break; - strcpy(currprefs.df[c], sel); + strcpy (currprefs.df[c], sel); break; } } @@ -446,9 +472,14 @@ static void VideoOptions (void) currprefs.gfx_correct_aspect = !currprefs.gfx_correct_aspect; break; case 9: - currprefs.framerate++; - if (currprefs.framerate > 9) - currprefs.framerate=1; + currprefs.gfx_framerate++; + if (currprefs.gfx_framerate > 9) + currprefs.gfx_framerate=1; + break; + case 10: + currprefs.gfxmem_size += 0x100000; + if (currprefs.gfxmem_size > 0x800000) + currprefs.gfxmem_size = 0; break; } } @@ -468,33 +499,59 @@ static void MemoryOptions (void) break; else switch (c) { case 0: - if (fastmem_size == 0) - fastmem_size = 0x200000; - else if (fastmem_size == 0x800000) - fastmem_size = 0; + if (currprefs.fastmem_size == 0) + currprefs.fastmem_size = 0x200000; + else if (currprefs.fastmem_size == 0x800000) + currprefs.fastmem_size = 0; else - fastmem_size <<= 1; + currprefs.fastmem_size <<= 1; break; case 1: - if (chipmem_size == 0x800000) - chipmem_size = 0x80000; + if (currprefs.chipmem_size == 0x800000) + currprefs.chipmem_size = 0x80000; else - chipmem_size <<= 1; - if (chipmem_size > 0x200000) - fastmem_size = 0; + currprefs.chipmem_size <<= 1; + if (currprefs.chipmem_size > 0x200000) + currprefs.fastmem_size = 0; break; case 2: - if (bogomem_size == 0) - bogomem_size = 0x40000; - else if (bogomem_size == 0x100000) - bogomem_size = 0; + if (currprefs.bogomem_size == 0) + currprefs.bogomem_size = 0x40000; + else if (currprefs.bogomem_size == 0x100000) + currprefs.bogomem_size = 0; else - bogomem_size <<= 1; + currprefs.bogomem_size <<= 1; break; case 3: - tmp = tui_filereq("*.rom", romfile, "Select a ROM image"); + tmp = tui_filereq ("*.rom", currprefs.romfile, "Select a ROM image"); if (tmp != NULL) - strcpy(romfile, tmp); + strcpy (currprefs.romfile, tmp); + break; + } + } +} + +static void CPUOptions (void) +{ + char *tmp; + int c = 0; + for (;;) { + tui_selwin(0); + print_configuration (); + + c = tui_menubrowse (cpumenu, MENU_COL_OFFSET, 5, c, MAX_MENU_HEIGHT); + if (c == -1) + break; + else switch (c) { + case 0: + currprefs.cpu_level++; + if (currprefs.cpu_level > 3) + currprefs.cpu_level = 0; + /* Default to 32 bit addressing when switching from a 68000/68010 to a 32 bit CPU */ + if (currprefs.cpu_level == 2) + currprefs.address_space_24 = 0; + if (currprefs.cpu_level != 0) + currprefs.cpu_compatible = 0; break; } } @@ -548,6 +605,9 @@ static void SoundOptions (void) else currprefs.sound_freq = atoi (tmp); break; + case 5: + currprefs.stereo = (currprefs.stereo + 1) % 3; + break; } } } @@ -565,14 +625,14 @@ static void OtherOptions (void) break; } else switch (c) { case 0: - currprefs.fake_joystick = (currprefs.fake_joystick & 0xFF00) + ((currprefs.fake_joystick & 255) + 1) % 6; - if ((currprefs.fake_joystick & 255) == (currprefs.fake_joystick >> 8)) - currprefs.fake_joystick = (currprefs.fake_joystick & 0x00FF) + ((((currprefs.fake_joystick >> 8) - 1) % 6) << 8); + currprefs.jport0 = (currprefs.jport0 + 1) % 6; + if (currprefs.jport0 == currprefs.jport1) + currprefs.jport1 = (currprefs.jport1 + 5) % 6; break; case 1: - currprefs.fake_joystick = (currprefs.fake_joystick & 0x00FF) + ((((currprefs.fake_joystick >> 8) + 1) % 6) << 8); - if ((currprefs.fake_joystick & 255) == (currprefs.fake_joystick >> 8)) - currprefs.fake_joystick = (currprefs.fake_joystick & 0xFF00) + ((currprefs.fake_joystick & 255) - 1) % 6; + currprefs.jport1 = (currprefs.jport1 + 1) % 6; + if (currprefs.jport0 == currprefs.jport1) + currprefs.jport0 = (currprefs.jport0 + 5) % 6; break; case 2: tui_wgets (tmp, "Enter new CPU emulation speed", 6); @@ -605,16 +665,17 @@ static int do_gui (int mode) return -2; } if (mode == 1) { - if (c == 7) + if (c == 8) break; switch (c) { case 0: DiskOptions (); break; case 1: VideoOptions (); break; case 2: MemoryOptions (); break; - case 3: HDOptions (); break; - case 4: SoundOptions (); break; - case 5: OtherOptions (); break; - case 6: save_settings (); break; + case 3: CPUOptions (); break; + case 4: HDOptions (); break; + case 5: SoundOptions (); break; + case 6: OtherOptions (); break; + case 7: save_settings (); break; } } else { if (c == 5) @@ -649,7 +710,8 @@ void gui_changesettings (void) else { changed_prefs = currprefs; currprefs = oldprefs; - currprefs.fake_joystick = changed_prefs.fake_joystick; + currprefs.jport0 = changed_prefs.jport0; + currprefs.jport1 = changed_prefs.jport1; joystick_setting_changed (); } } @@ -658,3 +720,11 @@ int gui_update (void) { return 0; } + +void gui_lock (void) +{ +} + +void gui_unlock (void) +{ +}